diff --git a/AY2324S2-CS2103-F15-1_tp_master/authorship.json b/AY2324S2-CS2103-F15-1_tp_master/authorship.json index f007fa4b..2cdf78da 100644 --- a/AY2324S2-CS2103-F15-1_tp_master/authorship.json +++ b/AY2324S2-CS2103-F15-1_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"# FINDvisor","lastModifiedDate":"2024-02-27"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"[![CI Status](https://github.com/AY2324S2-CS2103-F15-1/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S2-CS2103-F15-1/tp/actions)","lastModifiedDate":"2024-02-27"},{"lineNumber":3,"author":{"gitId":"-"},"content":"[![codecov](https://codecov.io/gh/AY2324S2-CS2103-F15-1/tp/graph/badge.svg?token\u003dvAQ9m3CKxP)](https://codecov.io/gh/AY2324S2-CS2103-F15-1/tp)","lastModifiedDate":"2024-02-18"},{"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":"Dethada"},"content":"*FINDvisor aims to streamline client management for financial advisors with a tool that organizes contact information. Furthermore, it aims to simplify organising meetings, and tracks client goals for better timeline planning—all in one clutter-free interface.* While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface).","lastModifiedDate":"2024-02-27"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"For the detailed documentation of this project, see the **[FINDvisor Product Website](https://ay2324s2-cs2103-f15-1.github.io/tp/)**.","lastModifiedDate":"2024-02-27"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"## Acknowledgements","lastModifiedDate":"2024-02-27"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-02-27"}],"authorContributionMap":{"Dethada":8,"-":4}},{"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":"KohGuanZeh"},"content":"mainClassName \u003d \u0027seedu.findvisor.Main\u0027","lastModifiedDate":"2024-03-10"},{"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":"Javiery3889"},"content":" archiveFileName \u003d \u0027findvisor.jar\u0027","lastModifiedDate":"2024-03-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":{"KohGuanZeh":1,"Javiery3889":1,"-":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":"## Project team","lastModifiedDate":"2020-06-07"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"YuZizhen"},"content":"### Yu Zizhen","lastModifiedDate":"2024-02-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"YuZizhen"},"content":"\u003cimg src\u003d\"images/yuzizhen.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-02-29"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"YuZizhen"},"content":"[[github](https://github.com/YuZizhen)]","lastModifiedDate":"2024-02-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"YuZizhen"},"content":"* Role: Developer","lastModifiedDate":"2024-02-29"},{"lineNumber":17,"author":{"gitId":"YuZizhen"},"content":"* Responsibilities: Deliverables and deadlines","lastModifiedDate":"2024-02-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"YuZizhen"},"content":"### Koh Guan Zeh","lastModifiedDate":"2024-03-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":21,"author":{"gitId":"KohGuanZeh"},"content":"\u003cimg src\u003d\"images/kohguanzeh.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"KohGuanZeh"},"content":"[[github](https://github.com/KohGuanZeh)]","lastModifiedDate":"2024-02-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"YuZizhen"},"content":"* Role: Developer","lastModifiedDate":"2024-02-29"},{"lineNumber":26,"author":{"gitId":"YuZizhen"},"content":"* Responsibilities: Testing","lastModifiedDate":"2024-02-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"Javiery3889"},"content":"### Javier Yong","lastModifiedDate":"2024-02-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"Javiery3889"},"content":"\u003cimg src\u003d\"images/javiery3889.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-02-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"Javiery3889"},"content":"[[github](https://github.com/Javiery3889)]","lastModifiedDate":"2024-02-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2024-02-29"},{"lineNumber":35,"author":{"gitId":"YuZizhen"},"content":"* Responsibilities: Scheduling and Tracking","lastModifiedDate":"2024-02-29"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"Arixeyeion"},"content":"### Lim Yong En, Dominic","lastModifiedDate":"2024-02-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"Arixeyeion"},"content":"\u003cimg src\u003d\"images/arixeyeion.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-02-26"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"Arixeyeion"},"content":"[[github](http://github.com/Arixeyeion)]","lastModifiedDate":"2024-02-26"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2024-02-29"},{"lineNumber":44,"author":{"gitId":"YuZizhen"},"content":"* Responsibilities: Documentation","lastModifiedDate":"2024-02-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"Arixeyeion"},"content":"### David Zhu","lastModifiedDate":"2024-02-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"Arixeyeion"},"content":"\u003cimg src\u003d\"images/dethada.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-02-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"Arixeyeion"},"content":"[[github](http://github.com/Dethada)]","lastModifiedDate":"2024-02-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2024-02-29"},{"lineNumber":53,"author":{"gitId":"YuZizhen"},"content":"* Responsibilities: Code quality","lastModifiedDate":"2024-02-29"}],"authorContributionMap":{"Arixeyeion":6,"KohGuanZeh":2,"Javiery3889":3,"YuZizhen":11,"-":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":"-"},"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 continues till the end of diagram.","lastModifiedDate":"2024-02-09"},{"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).\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-02-09"},{"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":"KohGuanZeh"},"content":"Classes used by multiple components are in the `seedu.findvisor.commons` package.","lastModifiedDate":"2024-03-20"},{"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 an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Logic.png)","lastModifiedDate":"2024-02-09"},{"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":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":207,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Model.png)","lastModifiedDate":"2024-02-09"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"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":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"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":"Javiery3889"},"content":"* financial advisors","lastModifiedDate":"2024-02-27"},{"lineNumber":266,"author":{"gitId":"Javiery3889"},"content":"* has a need of scheduling meetings with a significant number of clients","lastModifiedDate":"2024-02-27"},{"lineNumber":267,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23"},{"lineNumber":268,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26"},{"lineNumber":269,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23"},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"Javiery3889"},"content":"**Value proposition**: FINDvisor aims to streamline client management for financial advisors with a tool that organizes contact information. Furthermore, it aims to simplify organising meetings, and tracks client goals for better timeline planning—all in one clutter-free interface.","lastModifiedDate":"2024-02-27"},{"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":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"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":"Javiery3889"},"content":"|----------|-------------------|------------------------------------------------------------------------------------|---------------------------------------------------------------------------------|","lastModifiedDate":"2024-02-27"},{"lineNumber":280,"author":{"gitId":"Javiery3889"},"content":"| `* * *` | New user | easily download and launch FINDvisor | quickly start managing my client information |","lastModifiedDate":"2024-02-27"},{"lineNumber":281,"author":{"gitId":"Javiery3889"},"content":"| `* * *` | New user | know what are the available functionalities of FINDvisor | |","lastModifiedDate":"2024-02-27"},{"lineNumber":282,"author":{"gitId":"Javiery3889"},"content":"| `* * *` | New user | know how to operate the basic functionalities of FINDvisor within the app | |","lastModifiedDate":"2024-02-27"},{"lineNumber":283,"author":{"gitId":"Javiery3889"},"content":"| `* * *` | Financial Advisor | add contacts of my clients | keep a record of my clients\u0027 contact information |","lastModifiedDate":"2024-02-27"},{"lineNumber":284,"author":{"gitId":"Javiery3889"},"content":"| `* * *` | Financial Advisor | find contacts of my clients | find information on a specific client |","lastModifiedDate":"2024-02-27"},{"lineNumber":285,"author":{"gitId":"Javiery3889"},"content":"| `* * *` | Financial Advisor | update client\u0027s contact information | not need to delete and create new contact information |","lastModifiedDate":"2024-02-27"},{"lineNumber":286,"author":{"gitId":"Javiery3889"},"content":"| `* * *` | Financial Advisor | remove contact information | reduce clutter in contact list with clients I have severed ties with |","lastModifiedDate":"2024-02-27"},{"lineNumber":287,"author":{"gitId":"Javiery3889"},"content":"| `* * *` | Financial Advisor | attach a meeting date and time to my client contact | know the next meeting plan with a specific client |","lastModifiedDate":"2024-02-27"},{"lineNumber":288,"author":{"gitId":"Javiery3889"},"content":"| `* * *` | Financial Advisor | filter contact list by tags | update the other parties under the same plan if they were not present in the meeting |","lastModifiedDate":"2024-02-27"},{"lineNumber":289,"author":{"gitId":"Javiery3889"},"content":"| `* * *` | Financial Advisor | delete a scheduled meeting | keep my schedule up-to-date |","lastModifiedDate":"2024-02-27"},{"lineNumber":290,"author":{"gitId":"Javiery3889"},"content":"| `* * *` | Financial Advisor | group my clients into different groupings according to financial plans | easily find target clients |","lastModifiedDate":"2024-02-27"},{"lineNumber":291,"author":{"gitId":"Javiery3889"},"content":"| `* *` | Financial Advisor | be able to view all my meetings for the day | be prepared for my meetings of the day |","lastModifiedDate":"2024-02-27"},{"lineNumber":292,"author":{"gitId":"Javiery3889"},"content":"| `* *` | Financial Advisor | filter contact list by meeting details | find out who I\u0027m meeting |","lastModifiedDate":"2024-02-27"},{"lineNumber":293,"author":{"gitId":"Javiery3889"},"content":"| `* *` | Financial Advisor | modify a scheduled meeting\u0027s details | keep up-to-date with the meeting\u0027s details |","lastModifiedDate":"2024-02-27"},{"lineNumber":294,"author":{"gitId":"Javiery3889"},"content":"| `* *` | Financial Advisor | shift clients into different groups | reorganize in the event of changes |","lastModifiedDate":"2024-02-27"},{"lineNumber":295,"author":{"gitId":"Javiery3889"},"content":"| `* *` | Financial Advisor | be able to add simple notes to my client contact information | know their financial goals to prepare me for my next meeting with them |","lastModifiedDate":"2024-02-27"},{"lineNumber":296,"author":{"gitId":"Javiery3889"},"content":"| `*` | New user | import contact information in bulk to FINDvisor | save time and ensure no client is overlooked |","lastModifiedDate":"2024-02-27"},{"lineNumber":297,"author":{"gitId":"Javiery3889"},"content":"| `*` | Financial Advisor | filter for upcoming meet plans at given time | know the meeting plans at the given time |","lastModifiedDate":"2024-02-27"},{"lineNumber":298,"author":{"gitId":"Javiery3889"},"content":"| `*` | Financial Advisor | schedule recurring meeting plans | not have to manually add the meeting one by one |","lastModifiedDate":"2024-02-27"},{"lineNumber":299,"author":{"gitId":"Javiery3889"},"content":"| `*` | Financial Advisor | group my clients into different groupings according to clients\u0027 relationships | easily manage clients\u0027 that have relationships |","lastModifiedDate":"2024-02-27"},{"lineNumber":300,"author":{"gitId":"Javiery3889"},"content":"| `*` | Financial Advisor | able to attach a note about each meeting | know what the meeting is about |","lastModifiedDate":"2024-02-27"},{"lineNumber":301,"author":{"gitId":"Javiery3889"},"content":"| `*` | Experienced User | bulk remove old contact data that is no longer needed | reduce clutter |","lastModifiedDate":"2024-02-27"},{"lineNumber":302,"author":{"gitId":"Javiery3889"},"content":"| `*` | Experienced User | bulk remove past meeting data that is no longer needed | reduce clutter |","lastModifiedDate":"2024-02-27"},{"lineNumber":303,"author":{"gitId":"Javiery3889"},"content":"| `*` | Experienced User | be able to use shorthand commands | speed up my workflow |","lastModifiedDate":"2024-02-27"},{"lineNumber":304,"author":{"gitId":"Javiery3889"},"content":"| `*` | Experienced User | set up shortcuts that I can run | speed up my workflow |","lastModifiedDate":"2024-02-27"},{"lineNumber":305,"author":{"gitId":"Javiery3889"},"content":"| `*` | Experienced User | export my data | backup my data |","lastModifiedDate":"2024-02-27"},{"lineNumber":306,"author":{"gitId":"Javiery3889"},"content":"| `*` | Experienced User | import my data | restore my data from backup |","lastModifiedDate":"2024-02-27"},{"lineNumber":307,"author":{"gitId":"Javiery3889"},"content":"| `*` | Experienced User | archive contact data that are not in use, but I still want to keep | reduce clutter |","lastModifiedDate":"2024-02-27"},{"lineNumber":308,"author":{"gitId":"Javiery3889"},"content":"| `*` | Experienced User | archive past meeting data that are not in use, but I still want to keep | reduce clutter |","lastModifiedDate":"2024-02-27"},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":310,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":311,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":312,"author":{"gitId":"KohGuanZeh"},"content":"(For all use cases below, the **System** is the `FINDvisor` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2024-02-26"},{"lineNumber":313,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":314,"author":{"gitId":"KohGuanZeh"},"content":"**Use case: Edit a person**","lastModifiedDate":"2024-02-26"},{"lineNumber":315,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":316,"author":{"gitId":"KohGuanZeh"},"content":"**MSS**","lastModifiedDate":"2024-02-26"},{"lineNumber":317,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":318,"author":{"gitId":"KohGuanZeh"},"content":"1. User requests to list persons.","lastModifiedDate":"2024-02-26"},{"lineNumber":319,"author":{"gitId":"KohGuanZeh"},"content":"2. FINDvisor shows a list of persons.","lastModifiedDate":"2024-02-26"},{"lineNumber":320,"author":{"gitId":"KohGuanZeh"},"content":"3. User requests to edit a specific person in the list and the fields to edit.","lastModifiedDate":"2024-02-26"},{"lineNumber":321,"author":{"gitId":"KohGuanZeh"},"content":"4. FINDvisor edits the person.","lastModifiedDate":"2024-02-26"},{"lineNumber":322,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":323,"author":{"gitId":"KohGuanZeh"},"content":" Use case ends.","lastModifiedDate":"2024-02-26"},{"lineNumber":324,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":325,"author":{"gitId":"KohGuanZeh"},"content":"**Extensions**","lastModifiedDate":"2024-02-26"},{"lineNumber":326,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":327,"author":{"gitId":"KohGuanZeh"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-02-26"},{"lineNumber":328,"author":{"gitId":"KohGuanZeh"},"content":" ","lastModifiedDate":"2024-02-26"},{"lineNumber":329,"author":{"gitId":"KohGuanZeh"},"content":" Use case ends.","lastModifiedDate":"2024-02-26"},{"lineNumber":330,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":331,"author":{"gitId":"KohGuanZeh"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2024-02-26"},{"lineNumber":332,"author":{"gitId":"KohGuanZeh"},"content":" * 3a1. FINDvisor shows an error message.","lastModifiedDate":"2024-02-26"},{"lineNumber":333,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":334,"author":{"gitId":"KohGuanZeh"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-02-26"},{"lineNumber":335,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":336,"author":{"gitId":"KohGuanZeh"},"content":"* 3b. No fields are given.","lastModifiedDate":"2024-02-26"},{"lineNumber":337,"author":{"gitId":"KohGuanZeh"},"content":" * 3b1. FINDvisor shows an error message.","lastModifiedDate":"2024-02-26"},{"lineNumber":338,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":339,"author":{"gitId":"KohGuanZeh"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-02-26"},{"lineNumber":340,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":341,"author":{"gitId":"KohGuanZeh"},"content":"* 3c. Fields do not comply with stated formats and constraints.","lastModifiedDate":"2024-02-26"},{"lineNumber":342,"author":{"gitId":"KohGuanZeh"},"content":" * 3c1. FINDvisor shows an error message.","lastModifiedDate":"2024-02-26"},{"lineNumber":343,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":344,"author":{"gitId":"KohGuanZeh"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-02-26"},{"lineNumber":345,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":346,"author":{"gitId":"-"},"content":"**Use case: Delete a person**","lastModifiedDate":"2020-05-23"},{"lineNumber":347,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":348,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":349,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":350,"author":{"gitId":"KohGuanZeh"},"content":"1. User requests to list persons.","lastModifiedDate":"2024-02-26"},{"lineNumber":351,"author":{"gitId":"KohGuanZeh"},"content":"2. FINDvisor shows a list of persons.","lastModifiedDate":"2024-02-26"},{"lineNumber":352,"author":{"gitId":"KohGuanZeh"},"content":"3. User requests to delete a specific person in the list.","lastModifiedDate":"2024-02-26"},{"lineNumber":353,"author":{"gitId":"KohGuanZeh"},"content":"4. FINDvisor deletes the person.","lastModifiedDate":"2024-02-26"},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":355,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":356,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":357,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":358,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":359,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2020-05-23"},{"lineNumber":360,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":361,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":362,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":363,"author":{"gitId":"-"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2020-05-23"},{"lineNumber":364,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":365,"author":{"gitId":"KohGuanZeh"},"content":" * 3a1. FINDvisor shows an error message.","lastModifiedDate":"2024-02-26"},{"lineNumber":366,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":367,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23"},{"lineNumber":368,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":369,"author":{"gitId":"Dethada"},"content":"**Use Case: Scheduling a meeting with a new person**","lastModifiedDate":"2024-02-26"},{"lineNumber":370,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":371,"author":{"gitId":"Dethada"},"content":"**MSS**","lastModifiedDate":"2024-02-26"},{"lineNumber":372,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":373,"author":{"gitId":"Dethada"},"content":"1. User adds new person to FINDvisor.","lastModifiedDate":"2024-02-27"},{"lineNumber":374,"author":{"gitId":"Dethada"},"content":"2. User requests to list persons.","lastModifiedDate":"2024-02-27"},{"lineNumber":375,"author":{"gitId":"Dethada"},"content":"3. FINDvisor shows a list of persons.","lastModifiedDate":"2024-02-27"},{"lineNumber":376,"author":{"gitId":"Dethada"},"content":"4. User requests to schedule a meeting with a specific person in the list.","lastModifiedDate":"2024-02-27"},{"lineNumber":377,"author":{"gitId":"Dethada"},"content":"5. Meeting is scheduled.","lastModifiedDate":"2024-02-27"},{"lineNumber":378,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":379,"author":{"gitId":"Dethada"},"content":" Use case ends.","lastModifiedDate":"2024-02-27"},{"lineNumber":380,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":381,"author":{"gitId":"Dethada"},"content":"**Extensions**","lastModifiedDate":"2024-02-26"},{"lineNumber":382,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":383,"author":{"gitId":"Dethada"},"content":"* 1a. The given details for adding a new person is invalid.","lastModifiedDate":"2024-02-26"},{"lineNumber":384,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":385,"author":{"gitId":"Dethada"},"content":" * 1a1. FINDvisor shows an error message.","lastModifiedDate":"2024-02-26"},{"lineNumber":386,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":387,"author":{"gitId":"Dethada"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-02-26"},{"lineNumber":388,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":389,"author":{"gitId":"Dethada"},"content":"* 4a. The given index is invalid.","lastModifiedDate":"2024-02-26"},{"lineNumber":390,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":391,"author":{"gitId":"Dethada"},"content":" * 4a1. FINDvisor shows an error message.","lastModifiedDate":"2024-02-26"},{"lineNumber":392,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":393,"author":{"gitId":"Dethada"},"content":" Use case resumes at step 3.","lastModifiedDate":"2024-02-26"},{"lineNumber":394,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":395,"author":{"gitId":"Dethada"},"content":"* 4b. The given meeting datetime is invalid.","lastModifiedDate":"2024-02-26"},{"lineNumber":396,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":397,"author":{"gitId":"Dethada"},"content":" * 4b1. FINDvisor shows an error message.","lastModifiedDate":"2024-02-26"},{"lineNumber":398,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":399,"author":{"gitId":"Dethada"},"content":" Use case resumes at step 3.","lastModifiedDate":"2024-02-26"},{"lineNumber":400,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":401,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":402,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":403,"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":404,"author":{"gitId":"Arixeyeion"},"content":"2. Should work without requiring an installer.","lastModifiedDate":"2024-02-26"},{"lineNumber":405,"author":{"gitId":"Arixeyeion"},"content":"3. Should be packaged into a single jar file.","lastModifiedDate":"2024-02-26"},{"lineNumber":406,"author":{"gitId":"Arixeyeion"},"content":"4. Should be below the size limit of 100MB for FINDvisor and 15MB for Docs.","lastModifiedDate":"2024-02-26"},{"lineNumber":407,"author":{"gitId":"Arixeyeion"},"content":"5. Should be able to hold up to 1000 persons without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2024-02-26"},{"lineNumber":408,"author":{"gitId":"Arixeyeion"},"content":"6. Should not depend on a remote server.","lastModifiedDate":"2024-02-26"},{"lineNumber":409,"author":{"gitId":"Arixeyeion"},"content":"7. 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":"2024-02-26"},{"lineNumber":410,"author":{"gitId":"Arixeyeion"},"content":"8. Should not cause any resolution-related inconveniences to user.","lastModifiedDate":"2024-02-26"},{"lineNumber":411,"author":{"gitId":"Arixeyeion"},"content":"9. Should store data locally in a human editable text file without the use of DBMS.","lastModifiedDate":"2024-02-26"},{"lineNumber":412,"author":{"gitId":"Arixeyeion"},"content":"10. Should be used by a single user.","lastModifiedDate":"2024-02-26"},{"lineNumber":413,"author":{"gitId":"Arixeyeion"},"content":"11. Command names should be representative of their actions.","lastModifiedDate":"2024-02-27"},{"lineNumber":414,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":415,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":416,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":417,"author":{"gitId":"KohGuanZeh"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS.","lastModifiedDate":"2024-02-26"},{"lineNumber":418,"author":{"gitId":"KohGuanZeh"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others.","lastModifiedDate":"2024-02-26"},{"lineNumber":419,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":420,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":421,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":422,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":423,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":424,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":425,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":426,"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":427,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":428,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":429,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":430,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":431,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":432,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":433,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":434,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":435,"author":{"gitId":"KohGuanZeh"},"content":" 1. Download the jar file and copy into an empty folder.","lastModifiedDate":"2024-02-26"},{"lineNumber":436,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":437,"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":438,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":439,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":440,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":441,"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":442,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":443,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":444,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","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":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":449,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":450,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":451,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":452,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":453,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":454,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":455,"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":456,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":457,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":458,"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":459,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":460,"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":461,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":462,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":463,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":464,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":465,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":466,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":467,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":468,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":469,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","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"}],"authorContributionMap":{"Arixeyeion":10,"KohGuanZeh":42,"Javiery3889":33,"Dethada":31,"-":355}},{"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":"KohGuanZeh"},"content":" 1. Run the `seedu.findvisor.Main` and try a few commands.","lastModifiedDate":"2024-03-10"},{"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":{"KohGuanZeh":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":"KohGuanZeh"},"content":" e.g. `seedu.findvisor.commons.StringUtilTest`","lastModifiedDate":"2024-03-10"},{"lineNumber":33,"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":34,"author":{"gitId":"KohGuanZeh"},"content":" e.g. `seedu.findvisor.storage.StorageManagerTest`","lastModifiedDate":"2024-03-10"},{"lineNumber":35,"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":36,"author":{"gitId":"KohGuanZeh"},"content":" e.g. `seedu.findvisor.logic.LogicManagerTest`","lastModifiedDate":"2024-03-10"}],"authorContributionMap":{"KohGuanZeh":3,"-":33}},{"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":"Arixeyeion"},"content":"FINDvisor is a **desktop app for financial advisors to manage contacts, 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, FINDvisor can get your contact management and meeting scheduling tasks done faster than traditional GUI apps.","lastModifiedDate":"2024-02-26"},{"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":"Arixeyeion"},"content":"1. Download the latest `findvisor.jar` from [here](https://github.com/AY2324S2-CS2103-F15-1/tp/releases).","lastModifiedDate":"2024-02-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"Arixeyeion"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your FINDvisor.","lastModifiedDate":"2024-02-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"Arixeyeion"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar findvisor.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2024-02-26"},{"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":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"Arixeyeion"},"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 FINDvisor.","lastModifiedDate":"2024-02-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2023-01-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01"},{"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":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"KohGuanZeh"},"content":" * e.g. in `add n/NAME`, `NAME` is a parameter which can be used as `add n/John Doe`.","lastModifiedDate":"2024-02-25"},{"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":"KohGuanZeh"},"content":" * e.g `n/NAME [t/TAG]` can be used as `n/John Doe t/friend` or as `n/John Doe`.","lastModifiedDate":"2024-02-25"},{"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":"KohGuanZeh"},"content":" * e.g. `[t/TAG]…​` can be used as ` ` (i.e. 0 times), `t/friend`, `t/friend t/family` etc.","lastModifiedDate":"2024-02-25"},{"lineNumber":56,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":57,"author":{"gitId":"KohGuanZeh"},"content":"* Items with separated with `|` requires exactly one item to be matched.","lastModifiedDate":"2024-02-25"},{"lineNumber":58,"author":{"gitId":"KohGuanZeh"},"content":" * e.g. `n/NAME|p/PHONE_NUMBER` can only accept `n/John Doe` or `p/91234567` but not both.","lastModifiedDate":"2024-02-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"KohGuanZeh"},"content":" * e.g. if the command specifies `n/NAME p/PHONE_NUMBER`, `p/PHONE_NUMBER n/NAME` is also acceptable.","lastModifiedDate":"2024-02-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"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":64,"author":{"gitId":"KohGuanZeh"},"content":" * e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2024-02-25"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":66,"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":67,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"KohGuanZeh"},"content":"\u003cdiv markdown\u003d\"block\" class\u003d\"alert alert-info\"\u003e","lastModifiedDate":"2024-02-26"},{"lineNumber":70,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":71,"author":{"gitId":"KohGuanZeh"},"content":"**:information_source: Notes about input values format:**\u003cbr\u003e","lastModifiedDate":"2024-02-26"},{"lineNumber":72,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":73,"author":{"gitId":"KohGuanZeh"},"content":"* Spacing of values:","lastModifiedDate":"2024-02-26"},{"lineNumber":74,"author":{"gitId":"KohGuanZeh"},"content":" * Leading and trailing spaces of input values will be removed.","lastModifiedDate":"2024-02-26"},{"lineNumber":75,"author":{"gitId":"KohGuanZeh"},"content":" * Extra spaces between values will remain unless otherwise specified.","lastModifiedDate":"2024-02-26"},{"lineNumber":76,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":77,"author":{"gitId":"KohGuanZeh"},"content":"* Case sensitivity:","lastModifiedDate":"2024-02-26"},{"lineNumber":78,"author":{"gitId":"KohGuanZeh"},"content":" * All input values are case-sensitive unless otherwise specified.","lastModifiedDate":"2024-02-26"},{"lineNumber":79,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":80,"author":{"gitId":"KohGuanZeh"},"content":"* Duplicate contacts:","lastModifiedDate":"2024-02-26"},{"lineNumber":81,"author":{"gitId":"KohGuanZeh"},"content":" * Contacts are considered duplicates if they share the same phone number.","lastModifiedDate":"2024-02-26"},{"lineNumber":82,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":83,"author":{"gitId":"KohGuanZeh"},"content":"* `NAME` format:","lastModifiedDate":"2024-02-26"},{"lineNumber":84,"author":{"gitId":"KohGuanZeh"},"content":" * Can only contain alphabetical characters and spaces.","lastModifiedDate":"2024-02-26"},{"lineNumber":85,"author":{"gitId":"KohGuanZeh"},"content":" * Cannot be blank.","lastModifiedDate":"2024-02-26"},{"lineNumber":86,"author":{"gitId":"KohGuanZeh"},"content":" * Extra spaces between values will be processed as a single space.","lastModifiedDate":"2024-02-26"},{"lineNumber":87,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":88,"author":{"gitId":"KohGuanZeh"},"content":"* `PHONE_NUMBER` format:","lastModifiedDate":"2024-02-26"},{"lineNumber":89,"author":{"gitId":"KohGuanZeh"},"content":" * Must follow the standard Singapore telephone numbers (i.e. 9XXXXXXX or 8XXXXXXX).","lastModifiedDate":"2024-02-26"},{"lineNumber":90,"author":{"gitId":"KohGuanZeh"},"content":" * Spaces between numbers will be ignored.","lastModifiedDate":"2024-02-26"},{"lineNumber":91,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":92,"author":{"gitId":"KohGuanZeh"},"content":"* `EMAIL` format:","lastModifiedDate":"2024-02-26"},{"lineNumber":93,"author":{"gitId":"KohGuanZeh"},"content":" * Must follow the standard email address format (i.e. example@example.com).","lastModifiedDate":"2024-02-26"},{"lineNumber":94,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":95,"author":{"gitId":"KohGuanZeh"},"content":"* `ADDRESS` format:","lastModifiedDate":"2024-02-26"},{"lineNumber":96,"author":{"gitId":"KohGuanZeh"},"content":" * Can take any values.","lastModifiedDate":"2024-02-26"},{"lineNumber":97,"author":{"gitId":"KohGuanZeh"},"content":" * Cannot be blank.","lastModifiedDate":"2024-02-26"},{"lineNumber":98,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":99,"author":{"gitId":"KohGuanZeh"},"content":"* `TAG` format:","lastModifiedDate":"2024-02-26"},{"lineNumber":100,"author":{"gitId":"KohGuanZeh"},"content":" * Can only consist of alphanumeric characters.","lastModifiedDate":"2024-02-26"},{"lineNumber":101,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":102,"author":{"gitId":"KohGuanZeh"},"content":"* `DATETIME` format:","lastModifiedDate":"2024-02-26"},{"lineNumber":103,"author":{"gitId":"KohGuanZeh"},"content":" * Applies to all parameters with `DATETIME` postfix (i.e. `START_DATETIME` and `END_DATETIME`).","lastModifiedDate":"2024-02-26"},{"lineNumber":104,"author":{"gitId":"KohGuanZeh"},"content":" * Must follow the format `dd-MM-yyyy`T`HH:mm` (i.e. `23-02-2024T14:00`).","lastModifiedDate":"2024-02-26"},{"lineNumber":105,"author":{"gitId":"Javiery3889"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-02-27"},{"lineNumber":106,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":107,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"Javiery3889"},"content":"Shows a message explaining how to access the help page.","lastModifiedDate":"2024-02-26"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":"### Adding a person: `add`","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"Arixeyeion"},"content":"Adds a person to the contact list in FINDvisor.","lastModifiedDate":"2024-02-26"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​`","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Tip:**","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"Arixeyeion"},"content":"A person can have any number of tags (including 0).","lastModifiedDate":"2024-02-27"},{"lineNumber":124,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"Arixeyeion"},"content":"* `add n/Bobby Tay p/9678 5432 e/BobbyTay@gmail.com a/Blk 123 Foo Street 45, #07-89 t/PRUactiveCash`","lastModifiedDate":"2024-02-26"},{"lineNumber":128,"author":{"gitId":"Arixeyeion"},"content":"* `add n/Betsy Crowe t/PRUactiveCash e/betsycrowe@example.com a/Block 82 Marine Parade Central #01-600 p/9876 5432 t/PRUTravellerProtect`","lastModifiedDate":"2024-02-26"},{"lineNumber":129,"author":{"gitId":"Arixeyeion"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":130,"author":{"gitId":"Arixeyeion"},"content":"Specifications:","lastModifiedDate":"2024-02-26"},{"lineNumber":131,"author":{"gitId":"Arixeyeion"},"content":"* `p/PHONE_NUMBER` has to be unique from the other contacts in FINDvisor.","lastModifiedDate":"2024-02-27"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":"### Listing all persons : `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"Arixeyeion"},"content":"Shows a list of all persons in the contact list of FINDvisor.","lastModifiedDate":"2024-02-26"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"### Editing a person : `edit`","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"Arixeyeion"},"content":"Edits an existing person in the contact list of FINDvisor.","lastModifiedDate":"2024-02-26"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"YuZizhen"},"content":"* Edits the person at the specified `INDEX`. The index refers to the index number shown in the current displayed person list. The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-03-02"},{"lineNumber":146,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"YuZizhen"},"content":"* Input values will overwrite **all** existing values that were assigned to the specified field.","lastModifiedDate":"2024-03-03"},{"lineNumber":148,"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":149,"author":{"gitId":"YuZizhen"},"content":"* You can remove all the person’s tags by typing `t/` without specifying any tags after it.","lastModifiedDate":"2024-03-02"},{"lineNumber":150,"author":{"gitId":"YuZizhen"},"content":"* This command will check for duplicate phone number before edit is executed. If the new phone number is used by another person, the command will not be executed.","lastModifiedDate":"2024-03-03"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"YuZizhen"},"content":"* `edit 3 n/Bobby Tay e/bobbytay@u.nus.edu` Edits contact displayed at index 3 and changes the name of the contact to `Bobby Tay` and email to `bobbytay@u.nus.edu` respectively.","lastModifiedDate":"2024-03-02"},{"lineNumber":154,"author":{"gitId":"YuZizhen"},"content":"* `edit 1 t/PRUActive Saver III t/PRUActive Cash` Edits contact displayed at index 1 to change its tags to only `PRUActive Saver III` and `PRUActive Cash`. It will remove all other previous tags that are previously associated with the contact.","lastModifiedDate":"2024-03-02"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"Javiery3889"},"content":"### Locating persons by person\u0027s information: `find`","lastModifiedDate":"2024-02-27"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"Javiery3889"},"content":"Finds persons using specified keywords for a specified category of a person\u0027s information, e.g. either name, email, phone number, or tags.","lastModifiedDate":"2024-03-15"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"Javiery3889"},"content":"Format: `find n/NAME|e/EMAIL|p/PHONE|t/TAG...`","lastModifiedDate":"2024-03-15"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"Javiery3889"},"content":"* The search checks if a person\u0027s information **contains** the keyword specified, e.g. `find n/Ali` will match `Alice`.","lastModifiedDate":"2024-03-16"},{"lineNumber":163,"author":{"gitId":"Javiery3889"},"content":"* Only the category specified in the command is searched. e.g. `find n/John` will only search for person\u0027s name.","lastModifiedDate":"2024-03-15"},{"lineNumber":164,"author":{"gitId":"Javiery3889"},"content":"* The search is case-insensitive. e.g `find n/hans` will match `Hans`.","lastModifiedDate":"2024-02-27"},{"lineNumber":165,"author":{"gitId":"Javiery3889"},"content":"* Order of keywords matter. e.g. `find n/Doe John` will **not match** `John Doe`.","lastModifiedDate":"2024-02-27"},{"lineNumber":166,"author":{"gitId":"Javiery3889"},"content":"* Multiple keywords can be specified for tags **only**.","lastModifiedDate":"2024-03-15"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"Javiery3889"},"content":"* `find t/PRUActiveCash t/friends` returns all persons with tags containing `PRUActiveCash` and `friends`.","lastModifiedDate":"2024-03-15"},{"lineNumber":170,"author":{"gitId":"Javiery3889"},"content":"* `find e/example` returns all persons with email containing the string \"example\".","lastModifiedDate":"2024-03-15"},{"lineNumber":171,"author":{"gitId":"Javiery3889"},"content":"* `find p/91234567` returns person with phone number `91234567`.","lastModifiedDate":"2024-02-27"},{"lineNumber":172,"author":{"gitId":"-"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"Arixeyeion"},"content":"Deletes the specified person from the contact list of FINDvisor.","lastModifiedDate":"2024-02-26"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":"* Deletes the person at the specified `INDEX`.","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"Arixeyeion"},"content":"* Keying in multiple indexes deletes contacts at all the specified indexes of the displayed list.","lastModifiedDate":"2024-02-26"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"Arixeyeion"},"content":"* `list` followed by `delete 2` deletes the 2nd person in the contact list of FINDvisor.","lastModifiedDate":"2024-02-26"},{"lineNumber":185,"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":186,"author":{"gitId":"Arixeyeion"},"content":"* `list` followed by `delete 2 3 4` deletes the 2nd, 3rd and 4th person in the contact list of FINDvisor","lastModifiedDate":"2024-02-27"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"Dethada"},"content":"### Scheduling a meeting : `schedule`","lastModifiedDate":"2024-02-26"},{"lineNumber":189,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":190,"author":{"gitId":"Dethada"},"content":"Schedules a meeting with the specified person.","lastModifiedDate":"2024-02-26"},{"lineNumber":191,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":192,"author":{"gitId":"Dethada"},"content":"Format: `schedule INDEX s/START_DATETIME e/END_DATETIME`","lastModifiedDate":"2024-02-26"},{"lineNumber":193,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":194,"author":{"gitId":"Dethada"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2024-02-26"},{"lineNumber":195,"author":{"gitId":"Dethada"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-02-26"},{"lineNumber":196,"author":{"gitId":"Dethada"},"content":"* START_DATETIME must be after the system\u0027s current datetime.","lastModifiedDate":"2024-02-27"},{"lineNumber":197,"author":{"gitId":"Dethada"},"content":"* END_DATETIME must be after START_DATETIME","lastModifiedDate":"2024-02-26"},{"lineNumber":198,"author":{"gitId":"Javiery3889"},"content":"* There can be **at most** one scheduled meeting with a person.","lastModifiedDate":"2024-03-15"},{"lineNumber":199,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":200,"author":{"gitId":"Dethada"},"content":"Examples:","lastModifiedDate":"2024-02-26"},{"lineNumber":201,"author":{"gitId":"Dethada"},"content":"```","lastModifiedDate":"2024-02-26"},{"lineNumber":202,"author":{"gitId":"Dethada"},"content":"\u003e schedule 1 s/23-02-2024T16:00 e/23-02-2024T17:00","lastModifiedDate":"2024-02-26"},{"lineNumber":203,"author":{"gitId":"Dethada"},"content":"Scheduled meeting with John Doe from 23-02-2024 16:00 to 23-02-2024 17:00","lastModifiedDate":"2024-02-26"},{"lineNumber":204,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":205,"author":{"gitId":"Dethada"},"content":"\u003e schedule 1 s/23-02-2024T16:00 e/23-02-2024T17:00","lastModifiedDate":"2024-02-26"},{"lineNumber":206,"author":{"gitId":"Dethada"},"content":"Error: cannot schedule more than 1 meeting with a contact!","lastModifiedDate":"2024-02-26"},{"lineNumber":207,"author":{"gitId":"Dethada"},"content":"```","lastModifiedDate":"2024-02-26"},{"lineNumber":208,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":209,"author":{"gitId":"Dethada"},"content":"### Unscheduling a meeting : `unschedule`","lastModifiedDate":"2024-02-26"},{"lineNumber":210,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":211,"author":{"gitId":"Dethada"},"content":"Unschedules a meeting with the specified person.","lastModifiedDate":"2024-02-26"},{"lineNumber":212,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":213,"author":{"gitId":"Dethada"},"content":"Format: `unschedule INDEX`","lastModifiedDate":"2024-02-26"},{"lineNumber":214,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":215,"author":{"gitId":"Dethada"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2024-02-26"},{"lineNumber":216,"author":{"gitId":"Dethada"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-02-26"},{"lineNumber":217,"author":{"gitId":"Javiery3889"},"content":"* Specified person must have a meeting scheduled.","lastModifiedDate":"2024-03-15"},{"lineNumber":218,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":219,"author":{"gitId":"Dethada"},"content":"Examples:","lastModifiedDate":"2024-02-26"},{"lineNumber":220,"author":{"gitId":"Dethada"},"content":"```","lastModifiedDate":"2024-02-26"},{"lineNumber":221,"author":{"gitId":"Dethada"},"content":"\u003e unschedule 1","lastModifiedDate":"2024-02-26"},{"lineNumber":222,"author":{"gitId":"Dethada"},"content":"Unscheduled meeting with John Doe","lastModifiedDate":"2024-02-26"},{"lineNumber":223,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":224,"author":{"gitId":"Dethada"},"content":"\u003e unschedule 1","lastModifiedDate":"2024-02-26"},{"lineNumber":225,"author":{"gitId":"Dethada"},"content":"No scheduled meeting with John Doe!","lastModifiedDate":"2024-02-26"},{"lineNumber":226,"author":{"gitId":"Dethada"},"content":"```","lastModifiedDate":"2024-02-26"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":228,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"Arixeyeion"},"content":"Clears all entries from the contact list of FINDvisor.","lastModifiedDate":"2024-02-26"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"Arixeyeion"},"content":"FINDvisor data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.","lastModifiedDate":"2024-02-27"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":246,"author":{"gitId":"Arixeyeion"},"content":"FINDvisor data are saved automatically as a JSON file `[JAR file location]/data/FINDvisor.json`. Advanced users are welcome to update data directly by editing that data file.","lastModifiedDate":"2024-02-27"},{"lineNumber":247,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":248,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e:exclamation: **Caution:**","lastModifiedDate":"2021-02-04"},{"lineNumber":249,"author":{"gitId":"Arixeyeion"},"content":"If your changes to the data file makes its format invalid, FINDvisor 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.\u003cbr\u003e","lastModifiedDate":"2024-02-27"},{"lineNumber":250,"author":{"gitId":"Arixeyeion"},"content":"Furthermore, certain edits can cause the FINDvisor to behave in unexpected ways (e.g., if a value entered is outside of the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.","lastModifiedDate":"2024-02-26"},{"lineNumber":251,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-02-04"},{"lineNumber":252,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":253,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04"},{"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":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":262,"author":{"gitId":"Arixeyeion"},"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 FINDvisor home folder.","lastModifiedDate":"2024-02-26"},{"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":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":268,"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":269,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":270,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":272,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"--------|------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"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":277,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":278,"author":{"gitId":"-"},"content":"**Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3`","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"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":280,"author":{"gitId":"Javiery3889"},"content":"**Find** | `find n/NAME|e/EMAIL|p/PHONE|t/TAG...`\u003cbr\u003e e.g., `find n/Alice Tan`","lastModifiedDate":"2024-03-16"},{"lineNumber":281,"author":{"gitId":"-"},"content":"**List** | `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":282,"author":{"gitId":"Dethada"},"content":"**Schedule** | `schedule INDEX s/START_DATETIME e/END_DATETIME`\u003cbr\u003e e.g., `schedule 1 s/23-02-2024T16:00 e/23-02-2024T17:00`","lastModifiedDate":"2024-02-26"},{"lineNumber":283,"author":{"gitId":"Dethada"},"content":"**Unschedule** | `unschedule INDEX`\u003cbr\u003e e.g., `unschedule 1`","lastModifiedDate":"2024-02-26"},{"lineNumber":284,"author":{"gitId":"Dethada"},"content":"**Exit** | `exit`","lastModifiedDate":"2024-02-27"},{"lineNumber":285,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"Arixeyeion":24,"KohGuanZeh":45,"Javiery3889":16,"YuZizhen":6,"Dethada":40,"-":154}},{"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":"Javiery3889"},"content":" content: \"FINDvisor\";","lastModifiedDate":"2024-02-25"},{"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":{"Javiery3889":1,"-":294}},{"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":"-"},"content":"Class UniquePersonList","lastModifiedDate":"2021-07-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Class Person","lastModifiedDate":"2019-07-03"},{"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":"-"},"content":"Class Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"Class Tag","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"Javiery3889"},"content":"Class Meeting","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":24,"author":{"gitId":"-"},"content":"Class I #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"AddressBook .up.|\u003e ReadOnlyAddressBook","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"ModelManager .up.|\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"Model .right.\u003e ReadOnlyUserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"Model .left.\u003e ReadOnlyAddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"Javiery3889"},"content":"ModelManager -\u003e \"1\" AddressBook","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"Javiery3889"},"content":"ModelManager -\u003e \"1\" UserPrefs","lastModifiedDate":"2024-03-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"UserPrefs .up.|\u003e ReadOnlyUserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"AddressBook *--\u003e \"1\" UniquePersonList","lastModifiedDate":"2019-07-30"},{"lineNumber":40,"author":{"gitId":"-"},"content":"UniquePersonList --\u003e \"~* all\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":41,"author":{"gitId":"-"},"content":"Person *--\u003e Name","lastModifiedDate":"2019-07-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"Person *--\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"Person *--\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"Person *--\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"Person *--\u003e \"*\" Tag","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"Javiery3889"},"content":"Person *--\u003e \"0..1\" Meeting","lastModifiedDate":"2024-03-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":48,"author":{"gitId":"Javiery3889"},"content":"Person -[hidden]right--\u003e I","lastModifiedDate":"2024-03-23"},{"lineNumber":49,"author":{"gitId":"Javiery3889"},"content":"UniquePersonList -[hidden]left-\u003e I","lastModifiedDate":"2024-03-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"Name -[hidden]right-\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":52,"author":{"gitId":"-"},"content":"Phone -[hidden]right-\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":53,"author":{"gitId":"-"},"content":"Address -[hidden]right-\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":54,"author":{"gitId":"Javiery3889"},"content":"Email -[hidden]right-\u003e Tag","lastModifiedDate":"2024-03-23"},{"lineNumber":55,"author":{"gitId":"Javiery3889"},"content":"Tag -[hidden]right-\u003e Meeting","lastModifiedDate":"2024-03-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":57,"author":{"gitId":"Javiery3889"},"content":"ModelManager -\u003e \"~* filtered\" Person","lastModifiedDate":"2024-03-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"Javiery3889":9,"-":49}},{"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":"-"},"content":"Class JsonAdaptedPerson","lastModifiedDate":"2021-07-31"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Class JsonAdaptedTag","lastModifiedDate":"2021-07-31"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":"Class JsonAdaptedMeeting","lastModifiedDate":"2024-03-22"},{"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":"","lastModifiedDate":"2021-07-31"},{"lineNumber":28,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2021-07-31"},{"lineNumber":29,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Storage","lastModifiedDate":"2021-07-31"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":31,"author":{"gitId":"-"},"content":"StorageManager .up.|\u003e Storage","lastModifiedDate":"2021-07-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"StorageManager -up-\u003e \"1\" UserPrefsStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":33,"author":{"gitId":"-"},"content":"StorageManager -up-\u003e \"1\" AddressBookStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"Storage -left-|\u003e UserPrefsStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"Storage -right-|\u003e AddressBookStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"JsonUserPrefsStorage .up.|\u003e UserPrefsStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":39,"author":{"gitId":"-"},"content":"JsonAddressBookStorage .up.|\u003e AddressBookStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":40,"author":{"gitId":"-"},"content":"JsonAddressBookStorage ..\u003e JsonSerializableAddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":41,"author":{"gitId":"-"},"content":"JsonSerializableAddressBook --\u003e \"*\" JsonAdaptedPerson","lastModifiedDate":"2021-07-31"},{"lineNumber":42,"author":{"gitId":"-"},"content":"JsonAdaptedPerson --\u003e \"*\" JsonAdaptedTag","lastModifiedDate":"2021-07-31"},{"lineNumber":43,"author":{"gitId":"Dethada"},"content":"JsonAdaptedPerson ---\u003e \"1\" JsonAdaptedMeeting","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-03-31"},{"lineNumber":45,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"Dethada":2,"-":43}},{"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":"Javiery3889"},"content":"title: FINDvisor","lastModifiedDate":"2024-02-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"[![CI Status](https://github.com/AY2324S2-CS2103-F15-1/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S2-CS2103-F15-1/tp/actions)","lastModifiedDate":"2024-02-27"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"[![codecov](https://codecov.io/gh/AY2324S2-CS2103-F15-1/tp/graph/badge.svg?token\u003dvAQ9m3CKxP)](https://codecov.io/gh/AY2324S2-CS2103-F15-1/tp)","lastModifiedDate":"2024-02-27"},{"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":"Dethada"},"content":"**FINDvisor aims to streamline client management for financial advisors with a tool that organizes contact information. Furthermore, it aims to simplify organising meetings, and tracks client goals for better timeline planning—all in one clutter-free interface.** While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface).","lastModifiedDate":"2024-02-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":"* If you are interested in using FINDvisor, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).","lastModifiedDate":"2024-02-27"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":"* If you are interested about developing FINDvisor, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.","lastModifiedDate":"2024-02-27"},{"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":"Dethada"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-02-27"},{"lineNumber":19,"author":{"gitId":"Javiery3889"},"content":"* App icon and favicon: \u003ca href\u003d\"https://www.flaticon.com/free-icons/search\" title\u003d\"search icons\"\u003eSearch icons created by Maxim Basinski Premium - Flaticon\u003c/a\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"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":{"Javiery3889":2,"Dethada":6,"-":12}},{"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":"KohGuanZeh"},"content":"package seedu.findvisor.logic.commands;","lastModifiedDate":"2024-03-10"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":28,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.Model;","lastModifiedDate":"2024-03-10"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":30,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Changes the remark of an existing person in the address book.","lastModifiedDate":"2020-07-29"},{"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":"-"},"content":" + \": Edits the remark of the person identified \"","lastModifiedDate":"2021-08-01"},{"lineNumber":69,"author":{"gitId":"-"},"content":" + \"by the index number used in the last person listing. \"","lastModifiedDate":"2020-07-29"},{"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":"KohGuanZeh"},"content":"import static seedu.findvisor.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" * @param index of the person in the filtered person list to edit the remark","lastModifiedDate":"2020-07-29"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * @param remark of the person to be updated to","lastModifiedDate":"2020-07-29"},{"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":"KohGuanZeh"},"content":"Create a `RemarkCommandParser` class in the `seedu.findvisor.logic.parser` package. The class must extend the `Parser` interface.","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" * object that maps prefixes to their respective argument values. Only the","lastModifiedDate":"2020-07-29"},{"lineNumber":155,"author":{"gitId":"-"},"content":" * given prefixes will be recognized in the arguments string.","lastModifiedDate":"2020-07-29"},{"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":"-"},"content":" * {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2020-07-29"},{"lineNumber":159,"author":{"gitId":"-"},"content":" * @param prefixes Prefixes to tokenize the arguments string with","lastModifiedDate":"2020-07-29"},{"lineNumber":160,"author":{"gitId":"-"},"content":" * @return ArgumentMultimap object that maps prefixes to their","lastModifiedDate":"2020-07-29"},{"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":"-"},"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":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":"-"},"content":" * Returns the last value of {@code prefix}.","lastModifiedDate":"2020-07-29"},{"lineNumber":172,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":173,"author":{"gitId":"-"},"content":"public Optional\u003cString\u003e getValue(Prefix prefix) {","lastModifiedDate":"2020-07-29"},{"lineNumber":174,"author":{"gitId":"-"},"content":" List\u003cString\u003e values \u003d getAllValues(prefix);","lastModifiedDate":"2020-07-29"},{"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":"-"},"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":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":"KohGuanZeh"},"content":"Create a new `Remark` in `seedu.findvisor.model.person`. Since a `Remark` is a field that is similar to `Address`, we can reuse a significant bit of code.","lastModifiedDate":"2024-03-10"},{"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":"-"},"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":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":243,"author":{"gitId":"KohGuanZeh"},"content":"Simply add the following to [`seedu.findvisor.ui.PersonCard`](https://github.com/se-edu/addressbook-level3/commit/850b78879582f38accb05dd20c245963c65ea599#diff-639834f1e05afe2276a86372adf0fe5f69314642c2d93cfa543d614ce5a76688).","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":":exclamation: You must delete AddressBook’s storage file located at `/data/addressbook.json` before running it! Not doing so will cause AddressBook to default to an empty address book!","lastModifiedDate":"2020-07-29"},{"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":"-"},"content":"public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2020-07-29"},{"lineNumber":313,"author":{"gitId":"-"},"content":" //...","lastModifiedDate":"2020-07-29"},{"lineNumber":314,"author":{"gitId":"-"},"content":" remark.setText(person.getRemark().value);","lastModifiedDate":"2020-07-29"},{"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":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2020-07-29"},{"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":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2020-07-29"},{"lineNumber":345,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new Person(","lastModifiedDate":"2021-08-01"},{"lineNumber":346,"author":{"gitId":"-"},"content":" personToEdit.getName(), personToEdit.getPhone(), personToEdit.getEmail(),","lastModifiedDate":"2021-08-01"},{"lineNumber":347,"author":{"gitId":"-"},"content":" personToEdit.getAddress(), remark, personToEdit.getTags());","lastModifiedDate":"2020-07-29"},{"lineNumber":348,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":349,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2020-07-29"},{"lineNumber":350,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2020-07-29"},{"lineNumber":351,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":352,"author":{"gitId":"-"},"content":" return new CommandResult(generateSuccessMessage(editedPerson));","lastModifiedDate":"2020-07-29"},{"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":"-"},"content":" * {@code personToEdit}.","lastModifiedDate":"2020-07-29"},{"lineNumber":359,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":360,"author":{"gitId":"-"},"content":" private String generateSuccessMessage(Person personToEdit) {","lastModifiedDate":"2020-07-29"},{"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":"-"},"content":" return String.format(message, personToEdit);","lastModifiedDate":"2020-07-29"},{"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":{"KohGuanZeh":6,"-":393}},{"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":"KohGuanZeh"},"content":"The `address` field in `Person` is actually an instance of the `seedu.findvisor.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":"2024-03-10"},{"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":"-"},"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":"-"},"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":{"KohGuanZeh":1,"-":111}},{"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":"KohGuanZeh"},"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.findvisor.logic.Logic`.","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"A quick look at the `seedu.findvisor.logic.Logic` (an extract given below) confirms that this indeed might be what we’re looking for.","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2020-05-23"},{"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":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, editedPerson));","lastModifiedDate":"2020-05-23"},{"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":"-"},"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":205,"author":{"gitId":"-"},"content":" * it uses the `updateFilteredPersonList` method to ask the `Model` to populate the \u0027filtered list\u0027 with _all_ persons.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":206,"author":{"gitId":"-"},"content":" FYI, The \u0027filtered list\u0027 is the list of persons 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 persons so that the user can see the edited person along with all other persons. If this was a `find` command, we would be setting that list to contain the search results instead.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":207,"author":{"gitId":"-"},"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 persons is being tracked.","lastModifiedDate":"2021-07-31"},{"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":"-"},"content":" persons.addAll(","lastModifiedDate":"2020-05-23"},{"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":{"KohGuanZeh":2,"-":299}},{"path":"src/main/java/seedu/findvisor/AppParameters.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.LogsCenter;","lastModifiedDate":"2024-03-10"},{"lineNumber":11,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.commons.util.FileUtil;","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-10"},{"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":{"KohGuanZeh":4,"-":69}},{"path":"src/main/java/seedu/findvisor/Main.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.LogsCenter;","lastModifiedDate":"2024-03-10"},{"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":{"KohGuanZeh":2,"-":39}},{"path":"src/main/java/seedu/findvisor/MainApp.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.Config;","lastModifiedDate":"2024-03-10"},{"lineNumber":11,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.LogsCenter;","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.Version;","lastModifiedDate":"2024-03-10"},{"lineNumber":13,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-10"},{"lineNumber":14,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.commons.util.ConfigUtil;","lastModifiedDate":"2024-03-10"},{"lineNumber":15,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.commons.util.StringUtil;","lastModifiedDate":"2024-03-10"},{"lineNumber":16,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.Logic;","lastModifiedDate":"2024-03-10"},{"lineNumber":17,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.LogicManager;","lastModifiedDate":"2024-03-10"},{"lineNumber":18,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.AddressBook;","lastModifiedDate":"2024-03-10"},{"lineNumber":19,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.Model;","lastModifiedDate":"2024-03-10"},{"lineNumber":20,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.ModelManager;","lastModifiedDate":"2024-03-10"},{"lineNumber":21,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-10"},{"lineNumber":22,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-10"},{"lineNumber":23,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.UserPrefs;","lastModifiedDate":"2024-03-10"},{"lineNumber":24,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.util.SampleDataUtil;","lastModifiedDate":"2024-03-10"},{"lineNumber":25,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.storage.AddressBookStorage;","lastModifiedDate":"2024-03-10"},{"lineNumber":26,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.storage.JsonAddressBookStorage;","lastModifiedDate":"2024-03-10"},{"lineNumber":27,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.storage.JsonUserPrefsStorage;","lastModifiedDate":"2024-03-10"},{"lineNumber":28,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.storage.Storage;","lastModifiedDate":"2024-03-10"},{"lineNumber":29,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.storage.StorageManager;","lastModifiedDate":"2024-03-10"},{"lineNumber":30,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.storage.UserPrefsStorage;","lastModifiedDate":"2024-03-10"},{"lineNumber":31,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.ui.Ui;","lastModifiedDate":"2024-03-10"},{"lineNumber":32,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.ui.UiManager;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" public static final Version VERSION \u003d new Version(0, 2, 2, true);","lastModifiedDate":"2023-08-21"},{"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":"Arixeyeion"},"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 FINDvisor ]\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2024-03-19"},{"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":"Arixeyeion"},"content":" logger.info(\"Starting FINDvisor \" + MainApp.VERSION);","lastModifiedDate":"2024-03-19"},{"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":"Arixeyeion"},"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 FINDvisor ] \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2024-03-19"},{"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":{"Arixeyeion":3,"KohGuanZeh":24,"-":159}},{"path":"src/main/java/seedu/findvisor/commons/core/Config.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.commons.core;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-10"},{"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":{"KohGuanZeh":2,"-":64}},{"path":"src/main/java/seedu/findvisor/commons/core/GuiSettings.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.commons.core;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-10"},{"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":{"KohGuanZeh":2,"-":80}},{"path":"src/main/java/seedu/findvisor/commons/core/LogsCenter.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.commons.core;","lastModifiedDate":"2024-03-10"},{"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":{"KohGuanZeh":1,"-":105}},{"path":"src/main/java/seedu/findvisor/commons/core/Version.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.commons.core;","lastModifiedDate":"2024-03-10"},{"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":{"KohGuanZeh":1,"-":120}},{"path":"src/main/java/seedu/findvisor/commons/core/index/Index.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.commons.core.index;","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":3,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-10"},{"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":{"KohGuanZeh":2,"-":67}},{"path":"src/main/java/seedu/findvisor/commons/exceptions/DataLoadingException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.commons.exceptions;","lastModifiedDate":"2024-03-10"},{"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":{"KohGuanZeh":1,"-":10}},{"path":"src/main/java/seedu/findvisor/commons/exceptions/IllegalValueException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.commons.exceptions;","lastModifiedDate":"2024-03-10"},{"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":{"KohGuanZeh":1,"-":20}},{"path":"src/main/java/seedu/findvisor/commons/util/AppUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.commons.util;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.MainApp;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Gets an {@code Image} from the specified path.","lastModifiedDate":"2020-05-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static Image getImage(String imagePath) {","lastModifiedDate":"2016-08-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":" requireNonNull(imagePath);","lastModifiedDate":"2017-05-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":" return new Image(MainApp.class.getResourceAsStream(imagePath));","lastModifiedDate":"2016-08-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Checks that {@code condition} is true. Used for validating arguments to methods.","lastModifiedDate":"2017-05-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @throws IllegalArgumentException if {@code condition} is false.","lastModifiedDate":"2017-05-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static void checkArgument(Boolean condition) {","lastModifiedDate":"2017-05-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":" if (!condition) {","lastModifiedDate":"2017-05-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" throw new IllegalArgumentException();","lastModifiedDate":"2017-05-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Checks that {@code condition} is true. Used for validating arguments to methods.","lastModifiedDate":"2017-05-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * @throws IllegalArgumentException with {@code errorMessage} if {@code condition} is false.","lastModifiedDate":"2017-05-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static void checkArgument(Boolean condition, String errorMessage) {","lastModifiedDate":"2017-05-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":" if (!condition) {","lastModifiedDate":"2017-05-15"},{"lineNumber":39,"author":{"gitId":"-"},"content":" throw new IllegalArgumentException(errorMessage);","lastModifiedDate":"2017-05-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"KohGuanZeh":2,"-":40}},{"path":"src/main/java/seedu/findvisor/commons/util/CollectionUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.commons.util;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" /** @see #requireAllNonNull(Collection) */","lastModifiedDate":"2017-05-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static void requireAllNonNull(Object... items) {","lastModifiedDate":"2017-05-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":" requireNonNull(items);","lastModifiedDate":"2017-06-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Stream.of(items).forEach(Objects::requireNonNull);","lastModifiedDate":"2017-05-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Throws NullPointerException if {@code items} or any element of {@code items} is null.","lastModifiedDate":"2017-05-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static void requireAllNonNull(Collection\u003c?\u003e items) {","lastModifiedDate":"2017-05-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" requireNonNull(items);","lastModifiedDate":"2017-06-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":" items.forEach(Objects::requireNonNull);","lastModifiedDate":"2017-05-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"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 {@code items} contain any elements that are non-null.","lastModifiedDate":"2017-06-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static boolean isAnyNonNull(Object... items) {","lastModifiedDate":"2017-06-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return items !\u003d null \u0026\u0026 Arrays.stream(items).anyMatch(Objects::nonNull);","lastModifiedDate":"2017-06-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"KohGuanZeh":1,"-":34}},{"path":"src/main/java/seedu/findvisor/commons/util/ConfigUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.commons.util;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.Config;","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" public static Optional\u003cConfig\u003e readConfig(Path configFilePath) throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":16,"author":{"gitId":"-"},"content":" return JsonUtil.readJsonFile(configFilePath, Config.class);","lastModifiedDate":"2016-10-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static void saveConfig(Config config, Path configFilePath) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" JsonUtil.saveJsonFile(config, configFilePath);","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":"}","lastModifiedDate":"2016-09-24"}],"authorContributionMap":{"KohGuanZeh":3,"-":20}},{"path":"src/main/java/seedu/findvisor/commons/util/DateTimeUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package seedu.findvisor.commons.util;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-22"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-02-22"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2024-02-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Handles DateTime parsing and formatting.","lastModifiedDate":"2024-02-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class DateTimeUtil {","lastModifiedDate":"2024-02-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final DateTimeFormatter DATE_TIME_INPUT_FORMAT \u003d","lastModifiedDate":"2024-02-22"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":" DateTimeFormatter.ofPattern(\"dd-MM-yyyy\u0027T\u0027HH:mm\");","lastModifiedDate":"2024-02-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public static final DateTimeFormatter DATE_TIME_OUTPUT_FORMAT \u003d","lastModifiedDate":"2024-02-22"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" DateTimeFormatter.ofPattern(\"dd-MM-yyyy HH:mm\");","lastModifiedDate":"2024-02-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-02-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Converts a String into a LocalDateTime object. The expected format is yyyy-MM-dd\u0027T\u0027HH:mm. For","lastModifiedDate":"2024-02-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * example, 2023-01-29T14:00.","lastModifiedDate":"2024-02-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2024-02-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @param input The string to be converted to a LocalDateTime object.","lastModifiedDate":"2024-02-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @return The resulting LocalDateTime object after the conversion.","lastModifiedDate":"2024-02-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @throws DateTimeParseException If the String is not in the expected format.","lastModifiedDate":"2024-02-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static LocalDateTime parseDateTimeString(String input) throws DateTimeParseException {","lastModifiedDate":"2024-02-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" return LocalDateTime.parse(input, DATE_TIME_INPUT_FORMAT);","lastModifiedDate":"2024-02-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-22"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-02-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Converts a LocalDateTime object into a String in input format. The format is yyyy-MM-dd\u0027T\u0027HH:mm. For","lastModifiedDate":"2024-02-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * example, 2023-01-29T14:00.","lastModifiedDate":"2024-02-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2024-02-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * @param dateTime The LocalDateTime object to be converted.","lastModifiedDate":"2024-02-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * @return The resulting string after the conversion.","lastModifiedDate":"2024-02-22"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-22"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static String dateTimeToInputString(LocalDateTime dateTime) {","lastModifiedDate":"2024-02-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return dateTime.format(DATE_TIME_INPUT_FORMAT);","lastModifiedDate":"2024-02-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-22"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-02-22"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Converts a LocalDateTime object into a String in output format. The format is yyyy-MM-dd HH:mm. For","lastModifiedDate":"2024-02-22"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * example, 2023-01-29 14:00.","lastModifiedDate":"2024-02-22"},{"lineNumber":43,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2024-02-22"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * @param dateTime The LocalDateTime object to be converted.","lastModifiedDate":"2024-02-22"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * @return The resulting string after the conversion.","lastModifiedDate":"2024-02-22"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-22"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static String dateTimeToString(LocalDateTime dateTime) {","lastModifiedDate":"2024-02-22"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return dateTime.format(DATE_TIME_OUTPUT_FORMAT);","lastModifiedDate":"2024-02-22"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-22"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":51,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-02-27"},{"lineNumber":52,"author":{"gitId":"Dethada"},"content":" * Checks if the given LocalDateTime object is after the current date and time.","lastModifiedDate":"2024-02-27"},{"lineNumber":53,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-02-27"},{"lineNumber":54,"author":{"gitId":"Dethada"},"content":" * @param dateTime The LocalDateTime object to be checked.","lastModifiedDate":"2024-02-27"},{"lineNumber":55,"author":{"gitId":"Dethada"},"content":" * @return True if the given LocalDateTime object is after the current date and time, false otherwise.","lastModifiedDate":"2024-02-27"},{"lineNumber":56,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-02-27"},{"lineNumber":57,"author":{"gitId":"Dethada"},"content":" public static boolean isAfterCurrentDateTime(LocalDateTime dateTime) {","lastModifiedDate":"2024-02-27"},{"lineNumber":58,"author":{"gitId":"Dethada"},"content":" return dateTime.isAfter(LocalDateTime.now());","lastModifiedDate":"2024-02-27"},{"lineNumber":59,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-02-27"},{"lineNumber":60,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-02-22"}],"authorContributionMap":{"Dethada":13,"-":48}},{"path":"src/main/java/seedu/findvisor/commons/util/FileUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.commons.util;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" public static boolean isFileExists(Path file) {","lastModifiedDate":"2018-04-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":" return Files.exists(file) \u0026\u0026 Files.isRegularFile(file);","lastModifiedDate":"2018-04-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-21"},{"lineNumber":21,"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":22,"author":{"gitId":"-"},"content":" * otherwise returns false.","lastModifiedDate":"2018-04-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @param path A string representing the file path. Cannot be null.","lastModifiedDate":"2018-04-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static boolean isValidPath(String path) {","lastModifiedDate":"2018-04-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-04-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" Paths.get(path);","lastModifiedDate":"2018-04-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":" } catch (InvalidPathException ipe) {","lastModifiedDate":"2018-04-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-04-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Creates a file if it does not exist along with its missing parent directories.","lastModifiedDate":"2017-08-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * @throws IOException if the file or directory cannot be created.","lastModifiedDate":"2017-08-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static void createIfMissing(Path file) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" if (!isFileExists(file)) {","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" createFile(file);","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":"","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Creates a file if it does not exist along with its missing parent directories.","lastModifiedDate":"2018-04-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static void createFile(Path file) throws IOException {","lastModifiedDate":"2018-04-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (Files.exists(file)) {","lastModifiedDate":"2018-04-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return;","lastModifiedDate":"2018-04-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" createParentDirsOfFile(file);","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" Files.createFile(file);","lastModifiedDate":"2018-04-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Creates parent directories of file if it has a parent directory","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static void createParentDirsOfFile(Path file) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":" Path parentDir \u003d file.getParent();","lastModifiedDate":"2018-04-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (parentDir !\u003d null) {","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" Files.createDirectories(parentDir);","lastModifiedDate":"2018-04-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-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":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * Assumes file exists","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public static String readFromFile(Path file) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return new String(Files.readAllBytes(file), CHARSET);","lastModifiedDate":"2018-04-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * Writes given string to a file.","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Will create the file if it does not exist yet.","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static void writeToFile(Path file, String content) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":" Files.write(file, content.getBytes(CHARSET));","lastModifiedDate":"2018-04-21"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"KohGuanZeh":1,"-":82}},{"path":"src/main/java/seedu/findvisor/commons/util/JsonUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.commons.util;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.LogsCenter;","lastModifiedDate":"2024-03-10"},{"lineNumber":24,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" static \u003cT\u003e void serializeObjectToJsonFile(Path jsonFile, T objectToSerialize) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" FileUtil.writeToFile(jsonFile, toJsonString(objectToSerialize));","lastModifiedDate":"2016-10-07"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":46,"author":{"gitId":"-"},"content":" static \u003cT\u003e T deserializeObjectFromJsonFile(Path jsonFile, Class\u003cT\u003e classOfObjectToDeserialize)","lastModifiedDate":"2018-04-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2016-10-07"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return fromJsonString(FileUtil.readFromFile(jsonFile), classOfObjectToDeserialize);","lastModifiedDate":"2016-10-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-07"},{"lineNumber":52,"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":53,"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":54,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * @param filePath cannot be null.","lastModifiedDate":"2016-10-07"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * @param classOfObjectToDeserialize JSON file has to correspond to the structure in the class given here.","lastModifiedDate":"2023-06-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * @throws DataLoadingException if loading of the JSON file failed.","lastModifiedDate":"2023-06-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-07"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static \u003cT\u003e Optional\u003cT\u003e readJsonFile(","lastModifiedDate":"2016-10-07"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Path filePath, Class\u003cT\u003e classOfObjectToDeserialize) throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":61,"author":{"gitId":"-"},"content":" requireNonNull(filePath);","lastModifiedDate":"2017-05-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (!Files.exists(filePath)) {","lastModifiedDate":"2018-04-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2016-10-07"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":66,"author":{"gitId":"-"},"content":" logger.info(\"JSON file \" + filePath + \" found.\");","lastModifiedDate":"2023-01-03"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":" T jsonFile;","lastModifiedDate":"2016-10-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-10-07"},{"lineNumber":71,"author":{"gitId":"-"},"content":" jsonFile \u003d deserializeObjectFromJsonFile(filePath, classOfObjectToDeserialize);","lastModifiedDate":"2018-04-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-10-07"},{"lineNumber":73,"author":{"gitId":"-"},"content":" logger.warning(\"Error reading from jsonFile file \" + filePath + \": \" + e);","lastModifiedDate":"2018-04-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" throw new DataLoadingException(e);","lastModifiedDate":"2023-06-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return Optional.of(jsonFile);","lastModifiedDate":"2016-10-07"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":80,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-07"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * Saves the Json object to the specified file.","lastModifiedDate":"2016-10-07"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * Overwrites existing file if it exists, creates a new file if it doesn\u0027t.","lastModifiedDate":"2016-10-07"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * @param jsonFile cannot be null","lastModifiedDate":"2016-10-07"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * @param filePath cannot be null","lastModifiedDate":"2016-10-07"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * @throws IOException if there was an error during writing to the file","lastModifiedDate":"2016-10-07"},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-07"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public static \u003cT\u003e void saveJsonFile(T jsonFile, Path filePath) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":88,"author":{"gitId":"-"},"content":" requireNonNull(filePath);","lastModifiedDate":"2017-05-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" requireNonNull(jsonFile);","lastModifiedDate":"2017-05-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":91,"author":{"gitId":"-"},"content":" serializeObjectToJsonFile(filePath, jsonFile);","lastModifiedDate":"2018-04-21"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * Converts a given string representation of a JSON data to instance of a class","lastModifiedDate":"2016-10-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * @param \u003cT\u003e The generic type to create an instance of","lastModifiedDate":"2016-10-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * @return The instance of T with the specified values in the JSON string","lastModifiedDate":"2016-10-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public static \u003cT\u003e T fromJsonString(String json, Class\u003cT\u003e instanceClass) throws IOException {","lastModifiedDate":"2016-10-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" return objectMapper.readValue(json, instanceClass);","lastModifiedDate":"2016-10-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":104,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-19"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * Converts a given instance of a class into its JSON data string representation","lastModifiedDate":"2016-10-19"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * @param instance The T object to be converted into the JSON string","lastModifiedDate":"2016-10-19"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * @param \u003cT\u003e The generic type to create an instance of","lastModifiedDate":"2016-10-19"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * @return JSON data representation of the given class instance, in string","lastModifiedDate":"2016-10-19"},{"lineNumber":109,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public static \u003cT\u003e String toJsonString(T instance) throws JsonProcessingException {","lastModifiedDate":"2016-10-19"},{"lineNumber":111,"author":{"gitId":"-"},"content":" return objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(instance);","lastModifiedDate":"2016-10-19"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Contains methods that retrieve logging level from serialized string.","lastModifiedDate":"2017-08-16"},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":117,"author":{"gitId":"-"},"content":" private static class LevelDeserializer extends FromStringDeserializer\u003cLevel\u003e {","lastModifiedDate":"2016-08-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" protected LevelDeserializer(Class\u003c?\u003e vc) {","lastModifiedDate":"2016-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" super(vc);","lastModifiedDate":"2016-08-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" protected Level _deserialize(String value, DeserializationContext ctxt) {","lastModifiedDate":"2018-08-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" return getLoggingLevel(value);","lastModifiedDate":"2016-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","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":" * Gets the logging level that matches loggingLevelString","lastModifiedDate":"2016-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" * \u003cp\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":" * Returns null if there are no matches","lastModifiedDate":"2016-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":" private Level getLoggingLevel(String loggingLevelString) {","lastModifiedDate":"2016-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":" return Level.parse(loggingLevelString);","lastModifiedDate":"2016-09-09"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public Class\u003cLevel\u003e handledType() {","lastModifiedDate":"2016-08-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":" return Level.class;","lastModifiedDate":"2016-08-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"KohGuanZeh":3,"-":141}},{"path":"src/main/java/seedu/findvisor/commons/util/StringUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.commons.util;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import static seedu.findvisor.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-10"},{"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":"Javiery3889"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"Javiery3889"},"content":" * Returns true if the {@code sentence} contains the {@code subString}","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"Javiery3889"},"content":" * Ignores case, but order of the words in {@code subString} matter.","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"Javiery3889"},"content":" * @param sentence The string in which to search for the substring. This parameter cannot be null.","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"Javiery3889"},"content":" * @param subString The substring to search within a {@code sentence}. This parameter is trimmed for leading and","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"Javiery3889"},"content":" * trailing whitespace and cannot be empty after trimming. This parameter cannot be null.","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"Javiery3889"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"Javiery3889"},"content":" public static boolean containsIgnoreCase(String sentence, String subString) {","lastModifiedDate":"2024-03-15"},{"lineNumber":49,"author":{"gitId":"Javiery3889"},"content":" requireNonNull(sentence);","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"Javiery3889"},"content":" requireNonNull(subString);","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"Javiery3889"},"content":" String preppedSubString \u003d subString.trim().toLowerCase();","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"Javiery3889"},"content":" checkArgument(!preppedSubString.isEmpty(), \"subString parameter cannot be empty\");","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"Javiery3889"},"content":" return sentence.toLowerCase().contains(preppedSubString);","lastModifiedDate":"2024-03-15"},{"lineNumber":55,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Returns a detailed message of the t, including the stack trace.","lastModifiedDate":"2016-09-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static String getDetails(Throwable t) {","lastModifiedDate":"2016-09-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":" requireNonNull(t);","lastModifiedDate":"2017-05-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":" StringWriter sw \u003d new StringWriter();","lastModifiedDate":"2016-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" t.printStackTrace(new PrintWriter(sw));","lastModifiedDate":"2016-09-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return t.getMessage() + \"\\n\" + sw.toString();","lastModifiedDate":"2016-09-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * Returns true if {@code s} represents a non-zero unsigned integer","lastModifiedDate":"2017-06-02"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * e.g. 1, 2, 3, ..., {@code Integer.MAX_VALUE} \u003cbr\u003e","lastModifiedDate":"2017-06-02"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Will return false for any other non-null string input","lastModifiedDate":"2017-06-02"},{"lineNumber":71,"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":72,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code s} is null.","lastModifiedDate":"2017-06-02"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public static boolean isNonZeroUnsignedInteger(String s) {","lastModifiedDate":"2017-06-02"},{"lineNumber":75,"author":{"gitId":"-"},"content":" requireNonNull(s);","lastModifiedDate":"2017-06-02"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":77,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-06-02"},{"lineNumber":78,"author":{"gitId":"-"},"content":" int value \u003d Integer.parseInt(s);","lastModifiedDate":"2017-06-02"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return value \u003e 0 \u0026\u0026 !s.startsWith(\"+\"); // \"+1\" is successfully parsed by Integer#parseInt(String)","lastModifiedDate":"2017-06-02"},{"lineNumber":80,"author":{"gitId":"-"},"content":" } catch (NumberFormatException nfe) {","lastModifiedDate":"2017-06-02"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-06-02"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-02"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":84,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"KohGuanZeh":2,"Javiery3889":16,"-":66}},{"path":"src/main/java/seedu/findvisor/commons/util/ToStringBuilder.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.commons.util;","lastModifiedDate":"2024-03-10"},{"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":{"KohGuanZeh":1,"-":52}},{"path":"src/main/java/seedu/findvisor/logic/Logic.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.GuiSettings;","lastModifiedDate":"2024-03-10"},{"lineNumber":7,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.CommandResult;","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-10"},{"lineNumber":10,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-10"},{"lineNumber":11,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Person;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":" * @see seedu.findvisor.model.Model#getAddressBook()","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" /** Returns an unmodifiable view of the filtered list of persons */","lastModifiedDate":"2017-09-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10"},{"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":{"KohGuanZeh":8,"-":42}},{"path":"src/main/java/seedu/findvisor/logic/LogicManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.GuiSettings;","lastModifiedDate":"2024-03-10"},{"lineNumber":10,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.LogsCenter;","lastModifiedDate":"2024-03-10"},{"lineNumber":11,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.Command;","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.CommandResult;","lastModifiedDate":"2024-03-10"},{"lineNumber":13,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-10"},{"lineNumber":14,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.parser.AddressBookParser;","lastModifiedDate":"2024-03-10"},{"lineNumber":15,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-10"},{"lineNumber":16,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.Model;","lastModifiedDate":"2024-03-10"},{"lineNumber":17,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-10"},{"lineNumber":18,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Person;","lastModifiedDate":"2024-03-10"},{"lineNumber":19,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.storage.Storage;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList();","lastModifiedDate":"2016-09-25"},{"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":{"KohGuanZeh":12,"-":76}},{"path":"src/main/java/seedu/findvisor/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.logic.parser.Prefix;","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.model.person.Meeting;","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Person;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX \u003d \"The person index provided is invalid\";","lastModifiedDate":"2016-08-24"},{"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":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" person.getTags().forEach(builder::append);","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-02-22"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Formats the {@code meeting} for display to the user.","lastModifiedDate":"2024-02-22"},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-22"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static String format(Meeting meeting) {","lastModifiedDate":"2024-02-22"},{"lineNumber":56,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2024-02-22"},{"lineNumber":57,"author":{"gitId":"-"},"content":" builder.append(\"Meeting Start: \")","lastModifiedDate":"2024-02-22"},{"lineNumber":58,"author":{"gitId":"-"},"content":" .append(meeting.getStartString())","lastModifiedDate":"2024-02-22"},{"lineNumber":59,"author":{"gitId":"-"},"content":" .append(\"; End: \")","lastModifiedDate":"2024-02-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":" .append(meeting.getEndString());","lastModifiedDate":"2024-02-22"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2024-02-22"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"KohGuanZeh":3,"Dethada":1,"-":60}},{"path":"src/main/java/seedu/findvisor/logic/commands/AddCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.commands;","lastModifiedDate":"2024-03-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":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-10"},{"lineNumber":5,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-10"},{"lineNumber":6,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-10"},{"lineNumber":7,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":10,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-10"},{"lineNumber":11,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.Messages;","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-10"},{"lineNumber":13,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.Model;","lastModifiedDate":"2024-03-10"},{"lineNumber":14,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Person;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2017-05-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2017-05-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"owesMoney\";","lastModifiedDate":"2017-05-09"},{"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":{"KohGuanZeh":11,"-":73}},{"path":"src/main/java/seedu/findvisor/logic/commands/ClearCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.commands;","lastModifiedDate":"2024-03-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":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.AddressBook;","lastModifiedDate":"2024-03-10"},{"lineNumber":6,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.Model;","lastModifiedDate":"2024-03-10"},{"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":"-"},"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":{"KohGuanZeh":3,"-":20}},{"path":"src/main/java/seedu/findvisor/logic/commands/Command.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.commands;","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-10"},{"lineNumber":4,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.Model;","lastModifiedDate":"2024-03-10"},{"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":{"KohGuanZeh":3,"-":17}},{"path":"src/main/java/seedu/findvisor/logic/commands/CommandResult.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.commands;","lastModifiedDate":"2024-03-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":"","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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-10"},{"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":{"KohGuanZeh":2,"-":80}},{"path":"src/main/java/seedu/findvisor/logic/commands/DeleteCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.commands;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.index.Index;","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.Messages;","lastModifiedDate":"2024-03-10"},{"lineNumber":10,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-10"},{"lineNumber":11,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.Model;","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Person;","lastModifiedDate":"2024-03-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":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Person: %1$s\";","lastModifiedDate":"2016-08-24"},{"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":{"KohGuanZeh":7,"-":62}},{"path":"src/main/java/seedu/findvisor/logic/commands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.commands;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-10"},{"lineNumber":5,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-10"},{"lineNumber":6,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-10"},{"lineNumber":7,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.index.Index;","lastModifiedDate":"2024-03-10"},{"lineNumber":19,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.commons.util.CollectionUtil;","lastModifiedDate":"2024-03-10"},{"lineNumber":20,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-10"},{"lineNumber":21,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.Messages;","lastModifiedDate":"2024-03-10"},{"lineNumber":22,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-10"},{"lineNumber":23,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.Model;","lastModifiedDate":"2024-03-10"},{"lineNumber":24,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Address;","lastModifiedDate":"2024-03-10"},{"lineNumber":25,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Email;","lastModifiedDate":"2024-03-10"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.model.person.Meeting;","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Name;","lastModifiedDate":"2024-03-10"},{"lineNumber":28,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Person;","lastModifiedDate":"2024-03-10"},{"lineNumber":29,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Phone;","lastModifiedDate":"2024-03-10"},{"lineNumber":30,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.tag.Tag;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2017-06-21"},{"lineNumber":104,"author":{"gitId":"Dethada"},"content":" // EditCommand does not edit meeting so we keep the original meeting","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"Dethada"},"content":" Optional\u003cMeeting\u003e meeting \u003d personToEdit.getMeeting();","lastModifiedDate":"2024-03-19"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":107,"author":{"gitId":"Dethada"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTags, meeting);","lastModifiedDate":"2024-03-19"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" return false;","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":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"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":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":135,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26"},{"lineNumber":136,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26"},{"lineNumber":137,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":138,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26"},{"lineNumber":139,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21"},{"lineNumber":140,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":141,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":142,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21"},{"lineNumber":143,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":145,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":147,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":148,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11"},{"lineNumber":149,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":150,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":151,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26"},{"lineNumber":152,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15"},{"lineNumber":153,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15"},{"lineNumber":154,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15"},{"lineNumber":155,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15"},{"lineNumber":156,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":159,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":160,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26"},{"lineNumber":161,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":162,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26"},{"lineNumber":163,"author":{"gitId":"-"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, tags);","lastModifiedDate":"2018-08-14"},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":166,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21"},{"lineNumber":167,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":170,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":171,"author":{"gitId":"-"},"content":" return Optional.ofNullable(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 void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21"},{"lineNumber":175,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","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 Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26"},{"lineNumber":179,"author":{"gitId":"-"},"content":" return Optional.ofNullable(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 void setEmail(Email email) {","lastModifiedDate":"2017-06-21"},{"lineNumber":183,"author":{"gitId":"-"},"content":" this.email \u003d email;","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 Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":187,"author":{"gitId":"-"},"content":" return Optional.ofNullable(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 void setAddress(Address address) {","lastModifiedDate":"2017-06-21"},{"lineNumber":191,"author":{"gitId":"-"},"content":" this.address \u003d address;","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 Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26"},{"lineNumber":195,"author":{"gitId":"-"},"content":" return Optional.ofNullable(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":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":199,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11"},{"lineNumber":200,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":201,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":202,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21"},{"lineNumber":203,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11"},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":206,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":207,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11"},{"lineNumber":208,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11"},{"lineNumber":209,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11"},{"lineNumber":210,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":211,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":212,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11"},{"lineNumber":213,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":215,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":216,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":217,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":218,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":219,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":221,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":222,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05"},{"lineNumber":223,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":224,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":226,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":227,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":228,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":229,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":230,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":231,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags);","lastModifiedDate":"2023-07-13"},{"lineNumber":232,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":245,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"KohGuanZeh":19,"Dethada":4,"-":222}},{"path":"src/main/java/seedu/findvisor/logic/commands/ExitCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.commands;","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":3,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.Model;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" public static final String MESSAGE_EXIT_ACKNOWLEDGEMENT \u003d \"Exiting Address Book as requested ...\";","lastModifiedDate":"2016-09-22"},{"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":{"KohGuanZeh":2,"-":17}},{"path":"src/main/java/seedu/findvisor/logic/commands/FindCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.commands;","lastModifiedDate":"2024-03-10"},{"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":"Javiery3889"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"Javiery3889"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":11,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.Messages;","lastModifiedDate":"2024-03-10"},{"lineNumber":13,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.Model;","lastModifiedDate":"2024-03-10"},{"lineNumber":14,"author":{"gitId":"Javiery3889"},"content":"import seedu.findvisor.model.person.Person;","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22"},{"lineNumber":17,"author":{"gitId":"Javiery3889"},"content":" * Finds persons based on search criteria of the specified category.","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"Javiery3889"},"content":" * Only exactly one category of the following can be specified, either name, email, phone or tags.","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Keyword matching is case insensitive.","lastModifiedDate":"2018-04-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2016-09-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"find\";","lastModifiedDate":"2016-09-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":25,"author":{"gitId":"Javiery3889"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all persons whose information matches \"","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"Javiery3889"},"content":" + \"the specified keywords (case-insensitive) of the specified category\"","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"Javiery3889"},"content":" + \"and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"Javiery3889"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"Javiery3889"},"content":" + PREFIX_NAME + \"NAME | \"","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"Javiery3889"},"content":" + PREFIX_EMAIL + \"EMAIL | \"","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"Javiery3889"},"content":" + PREFIX_PHONE + \"PHONE | \"","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"Javiery3889"},"content":" + PREFIX_TAG + \"TAG...\\n\"","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"Javiery3889"},"content":" + \"Example: \" + COMMAND_WORD + \" t/PRUActiveCash t/friends\";","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":35,"author":{"gitId":"Javiery3889"},"content":" private final Predicate\u003cPerson\u003e predicate;","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":37,"author":{"gitId":"Javiery3889"},"content":" public FindCommand(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(predicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" return new CommandResult(","lastModifiedDate":"2018-04-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":" String.format(Messages.MESSAGE_PERSONS_LISTED_OVERVIEW, model.getFilteredPersonList().size()));","lastModifiedDate":"2018-04-01"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (!(other instanceof FindCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" FindCommand otherFindCommand \u003d (FindCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return predicate.equals(otherFindCommand.predicate);","lastModifiedDate":"2023-07-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"KohGuanZeh":4,"Javiery3889":20,"-":46}},{"path":"src/main/java/seedu/findvisor/logic/commands/HelpCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.commands;","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.Model;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"KohGuanZeh":2,"-":19}},{"path":"src/main/java/seedu/findvisor/logic/commands/ListCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.commands;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import static seedu.findvisor.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-10"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.Model;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all persons\";","lastModifiedDate":"2016-09-21"},{"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":{"KohGuanZeh":3,"-":21}},{"path":"src/main/java/seedu/findvisor/logic/commands/ScheduleCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package seedu.findvisor.logic.commands;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-02-22"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_END_DATETIME;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_START_DATETIME;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2024-02-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2024-02-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2024-02-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.commons.core.index.Index;","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.commons.util.DateTimeUtil;","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.logic.Messages;","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.model.Model;","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.model.person.Address;","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.model.person.Email;","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.model.person.Meeting;","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.model.person.Name;","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.model.person.Person;","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.model.person.Phone;","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.model.tag.Tag;","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2024-02-22"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" * Schedules a meeting with a person.","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class ScheduleCommand extends Command {","lastModifiedDate":"2024-02-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"schedule\";","lastModifiedDate":"2024-02-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Schedules a meeting with the person identified \"","lastModifiedDate":"2024-02-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list.\\n\"","lastModifiedDate":"2024-02-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2024-02-22"},{"lineNumber":35,"author":{"gitId":"-"},"content":" + PREFIX_START_DATETIME + \"START DATETIME \"","lastModifiedDate":"2024-02-22"},{"lineNumber":36,"author":{"gitId":"-"},"content":" + PREFIX_END_DATETIME + \"END DATETIME \"","lastModifiedDate":"2024-02-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2024-02-22"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":" + PREFIX_START_DATETIME + \"22-02-2024T14:00 \"","lastModifiedDate":"2024-02-27"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":" + PREFIX_END_DATETIME + \"22-02-2024T15:00 \";","lastModifiedDate":"2024-02-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":41,"author":{"gitId":"Dethada"},"content":" public static final String MESSAGE_SCHEDULE_SUCCESS \u003d \"Scheduled meeting with %1$s from %2$s to %3$s\";","lastModifiedDate":"2024-02-27"},{"lineNumber":42,"author":{"gitId":"Dethada"},"content":" public static final String MESSAGE_CANNOT_SCHEDULE_MULTIPLE_MEETINGS \u003d \"Cannot schedule more than 1\"","lastModifiedDate":"2024-02-27"},{"lineNumber":43,"author":{"gitId":"Dethada"},"content":" + \" meeting with a contact!\";","lastModifiedDate":"2024-02-27"},{"lineNumber":44,"author":{"gitId":"Dethada"},"content":" public static final String MESSAGE_CANNOT_SCHEDULE_MEETING_IN_THE_PAST \u003d \"Cannot schedule meeting that\"","lastModifiedDate":"2024-02-27"},{"lineNumber":45,"author":{"gitId":"Dethada"},"content":" + \" starts before the current time!\";","lastModifiedDate":"2024-02-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":47,"author":{"gitId":"-"},"content":" private final Index targetIndex;","lastModifiedDate":"2024-02-22"},{"lineNumber":48,"author":{"gitId":"-"},"content":" private final Meeting meeting;","lastModifiedDate":"2024-02-22"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-02-22"},{"lineNumber":51,"author":{"gitId":"Dethada"},"content":" * Creates an ScheduleCommand to schedule a meeting with the specified {@code Person}","lastModifiedDate":"2024-03-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-22"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public ScheduleCommand(Index targetIndex, Meeting meeting) {","lastModifiedDate":"2024-02-22"},{"lineNumber":54,"author":{"gitId":"-"},"content":" requireNonNull(meeting);","lastModifiedDate":"2024-02-22"},{"lineNumber":55,"author":{"gitId":"-"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2024-02-22"},{"lineNumber":56,"author":{"gitId":"-"},"content":" this.meeting \u003d meeting;","lastModifiedDate":"2024-02-22"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-22"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-02-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-02-22"},{"lineNumber":61,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2024-02-22"},{"lineNumber":62,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-02-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-02-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-02-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-02-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" if (personToEdit.getMeeting().isPresent()) {","lastModifiedDate":"2024-02-22"},{"lineNumber":70,"author":{"gitId":"Dethada"},"content":" throw new CommandException(MESSAGE_CANNOT_SCHEDULE_MULTIPLE_MEETINGS);","lastModifiedDate":"2024-02-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, meeting);","lastModifiedDate":"2024-02-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":74,"author":{"gitId":"Dethada"},"content":" if (!DateTimeUtil.isAfterCurrentDateTime(meeting.start)) {","lastModifiedDate":"2024-02-27"},{"lineNumber":75,"author":{"gitId":"Dethada"},"content":" throw new CommandException(MESSAGE_CANNOT_SCHEDULE_MEETING_IN_THE_PAST);","lastModifiedDate":"2024-02-27"},{"lineNumber":76,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-02-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2024-02-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-02-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SCHEDULE_SUCCESS,","lastModifiedDate":"2024-02-22"},{"lineNumber":82,"author":{"gitId":"Dethada"},"content":" editedPerson.getName(),","lastModifiedDate":"2024-02-27"},{"lineNumber":83,"author":{"gitId":"Dethada"},"content":" meeting.getStartString(),","lastModifiedDate":"2024-03-11"},{"lineNumber":84,"author":{"gitId":"Dethada"},"content":" meeting.getEndString()));","lastModifiedDate":"2024-03-11"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-22"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-02-22"},{"lineNumber":88,"author":{"gitId":"Dethada"},"content":" * Creates and returns a {@code Person} with the same details of {@code personToEdit}","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"Dethada"},"content":" * with the meeting scheduled.","lastModifiedDate":"2024-03-12"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-22"},{"lineNumber":91,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, Meeting meeting) {","lastModifiedDate":"2024-02-22"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2024-02-22"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":94,"author":{"gitId":"Dethada"},"content":" Name name \u003d personToEdit.getName();","lastModifiedDate":"2024-03-12"},{"lineNumber":95,"author":{"gitId":"Dethada"},"content":" Phone phone \u003d personToEdit.getPhone();","lastModifiedDate":"2024-03-12"},{"lineNumber":96,"author":{"gitId":"Dethada"},"content":" Email email \u003d personToEdit.getEmail();","lastModifiedDate":"2024-03-12"},{"lineNumber":97,"author":{"gitId":"Dethada"},"content":" Address address \u003d personToEdit.getAddress();","lastModifiedDate":"2024-03-12"},{"lineNumber":98,"author":{"gitId":"Dethada"},"content":" Set\u003cTag\u003e tags \u003d personToEdit.getTags();","lastModifiedDate":"2024-03-12"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":100,"author":{"gitId":"Dethada"},"content":" return new Person(name, phone, email, address, tags, Optional.of(meeting));","lastModifiedDate":"2024-03-12"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-22"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-02-22"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-02-22"},{"lineNumber":105,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-02-22"},{"lineNumber":106,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2024-02-22"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-22"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":109,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-02-22"},{"lineNumber":110,"author":{"gitId":"-"},"content":" if (!(other instanceof ScheduleCommand)) {","lastModifiedDate":"2024-02-22"},{"lineNumber":111,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2024-02-22"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-22"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":114,"author":{"gitId":"-"},"content":" ScheduleCommand otherScheduleCommand \u003d (ScheduleCommand) other;","lastModifiedDate":"2024-02-22"},{"lineNumber":115,"author":{"gitId":"-"},"content":" return targetIndex.equals(otherScheduleCommand.targetIndex)","lastModifiedDate":"2024-02-22"},{"lineNumber":116,"author":{"gitId":"-"},"content":" \u0026\u0026 meeting.equals(otherScheduleCommand.meeting);","lastModifiedDate":"2024-02-22"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-22"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-02-22"},{"lineNumber":120,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2024-02-22"},{"lineNumber":121,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-02-22"},{"lineNumber":122,"author":{"gitId":"-"},"content":" .add(\"toSchedule\", targetIndex)","lastModifiedDate":"2024-02-22"},{"lineNumber":123,"author":{"gitId":"-"},"content":" .add(\"meeting\", meeting)","lastModifiedDate":"2024-02-22"},{"lineNumber":124,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2024-02-22"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-22"},{"lineNumber":126,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-02-22"}],"authorContributionMap":{"Dethada":41,"-":85}},{"path":"src/main/java/seedu/findvisor/logic/commands/UnscheduleCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package seedu.findvisor.logic.commands;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import java.util.List;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.commons.core.index.Index;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.logic.Messages;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.model.Model;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.model.person.Address;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.model.person.Email;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.model.person.Name;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.model.person.Phone;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.model.tag.Tag;","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" * Unschedules a meeting with a person.","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":"public class UnscheduleCommand extends Command {","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" public static final String COMMAND_WORD \u003d \"unschedule\";","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Unschedules a meeting with the person identified \"","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" + \"by the index number used in the displayed person list.\\n\"","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":" public static final String MESSAGE_UNSCHEDULE_SUCCESS \u003d \"Unscheduled meeting with %1$s\";","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" public static final String MESSAGE_NO_MEETING_TO_UNSCHEDULE \u003d \"No scheduled meeting with %1$s!\";","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":" private final Index targetIndex;","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":" * Creates an UnscheduleCommand to unschedule a meeting with the person at the specified {@code Index}","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"Dethada"},"content":" public UnscheduleCommand(Index targetIndex) {","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"Dethada"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"Dethada"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"Dethada"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"Dethada"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"Dethada"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"Dethada"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"Dethada"},"content":" Person personToEdit \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"Dethada"},"content":" if (personToEdit.getMeeting().isEmpty()) {","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"Dethada"},"content":" throw new CommandException(String.format(MESSAGE_NO_MEETING_TO_UNSCHEDULE, personToEdit.getName()));","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"Dethada"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit);","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"Dethada"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"Dethada"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"Dethada"},"content":" return new CommandResult(String.format(MESSAGE_UNSCHEDULE_SUCCESS, editedPerson.getName()));","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"Dethada"},"content":" * Creates and returns a copy of {@code personToEdit} with meeting unscheduled.","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"Dethada"},"content":" private static Person createEditedPerson(Person personToEdit) {","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"Dethada"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"Dethada"},"content":" Name name \u003d personToEdit.getName();","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"Dethada"},"content":" Phone phone \u003d personToEdit.getPhone();","lastModifiedDate":"2024-03-12"},{"lineNumber":74,"author":{"gitId":"Dethada"},"content":" Email email \u003d personToEdit.getEmail();","lastModifiedDate":"2024-03-12"},{"lineNumber":75,"author":{"gitId":"Dethada"},"content":" Address address \u003d personToEdit.getAddress();","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"Dethada"},"content":" Set\u003cTag\u003e tags \u003d personToEdit.getTags();","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"Dethada"},"content":" return new Person(name, phone, email, address, tags, Optional.empty());","lastModifiedDate":"2024-03-12"},{"lineNumber":79,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":81,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"Dethada"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"Dethada"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"Dethada"},"content":" return true;","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":86,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"Dethada"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"Dethada"},"content":" if (!(other instanceof UnscheduleCommand)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"Dethada"},"content":" return false;","lastModifiedDate":"2024-03-12"},{"lineNumber":90,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":92,"author":{"gitId":"Dethada"},"content":" UnscheduleCommand otherScheduleCommand \u003d (UnscheduleCommand) other;","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"Dethada"},"content":" return targetIndex.equals(otherScheduleCommand.targetIndex);","lastModifiedDate":"2024-03-12"},{"lineNumber":94,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":95,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":96,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":97,"author":{"gitId":"Dethada"},"content":" public String toString() {","lastModifiedDate":"2024-03-12"},{"lineNumber":98,"author":{"gitId":"Dethada"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-12"},{"lineNumber":99,"author":{"gitId":"Dethada"},"content":" .add(\"toUnschedule\", targetIndex)","lastModifiedDate":"2024-03-12"},{"lineNumber":100,"author":{"gitId":"Dethada"},"content":" .toString();","lastModifiedDate":"2024-03-12"},{"lineNumber":101,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":102,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"Dethada":102}},{"path":"src/main/java/seedu/findvisor/logic/commands/exceptions/CommandException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.commands.exceptions;","lastModifiedDate":"2024-03-10"},{"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":{"KohGuanZeh":1,"-":16}},{"path":"src/main/java/seedu/findvisor/logic/parser/AddCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.parser;","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":3,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-10"},{"lineNumber":4,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-10"},{"lineNumber":5,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-10"},{"lineNumber":6,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-10"},{"lineNumber":7,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-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":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.AddCommand;","lastModifiedDate":"2024-03-10"},{"lineNumber":14,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-10"},{"lineNumber":15,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Address;","lastModifiedDate":"2024-03-10"},{"lineNumber":16,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Email;","lastModifiedDate":"2024-03-10"},{"lineNumber":17,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Name;","lastModifiedDate":"2024-03-10"},{"lineNumber":18,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Person;","lastModifiedDate":"2024-03-10"},{"lineNumber":19,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Phone;","lastModifiedDate":"2024-03-10"},{"lineNumber":20,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.tag.Tag;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG);","lastModifiedDate":"2017-06-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":36,"author":{"gitId":"-"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL)","lastModifiedDate":"2017-12-23"},{"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":"-"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-07-14"},{"lineNumber":42,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":43,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":44,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":46,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17"},{"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":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":57,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17"},{"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":{"KohGuanZeh":15,"-":46}},{"path":"src/main/java/seedu/findvisor/logic/parser/AddressBookParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.parser;","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-10"},{"lineNumber":4,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.LogsCenter;","lastModifiedDate":"2024-03-10"},{"lineNumber":11,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.AddCommand;","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.ClearCommand;","lastModifiedDate":"2024-03-10"},{"lineNumber":13,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.Command;","lastModifiedDate":"2024-03-10"},{"lineNumber":14,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-10"},{"lineNumber":15,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.EditCommand;","lastModifiedDate":"2024-03-10"},{"lineNumber":16,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.ExitCommand;","lastModifiedDate":"2024-03-10"},{"lineNumber":17,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.FindCommand;","lastModifiedDate":"2024-03-10"},{"lineNumber":18,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.HelpCommand;","lastModifiedDate":"2024-03-10"},{"lineNumber":19,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.ListCommand;","lastModifiedDate":"2024-03-10"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.logic.commands.ScheduleCommand;","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.logic.commands.UnscheduleCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" case ScheduleCommand.COMMAND_WORD:","lastModifiedDate":"2024-02-22"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return new ScheduleCommandParser().parse(arguments);","lastModifiedDate":"2024-02-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":64,"author":{"gitId":"Dethada"},"content":" case UnscheduleCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"Dethada"},"content":" return new UnscheduleCommandParser().parse(arguments);","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"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":{"KohGuanZeh":14,"Dethada":5,"-":75}},{"path":"src/main/java/seedu/findvisor/logic/parser/ArgumentMultimap.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.parser;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.logic.Messages;","lastModifiedDate":"2024-03-10"},{"lineNumber":11,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":"}","lastModifiedDate":"2017-03-08"}],"authorContributionMap":{"KohGuanZeh":3,"-":75}},{"path":"src/main/java/seedu/findvisor/logic/parser/ArgumentTokenizer.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.parser;","lastModifiedDate":"2024-03-10"},{"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":{"KohGuanZeh":1,"-":147}},{"path":"src/main/java/seedu/findvisor/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.parser;","lastModifiedDate":"2024-03-10"},{"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":"Dethada"},"content":" public static final Prefix PREFIX_START_DATETIME \u003d new Prefix(\"s/\");","lastModifiedDate":"2024-02-27"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" public static final Prefix PREFIX_END_DATETIME \u003d new Prefix(\"e/\");","lastModifiedDate":"2024-02-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"KohGuanZeh":1,"Dethada":2,"-":14}},{"path":"src/main/java/seedu/findvisor/logic/parser/DeleteCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.parser;","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-10"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":5,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.index.Index;","lastModifiedDate":"2024-03-10"},{"lineNumber":6,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-10"},{"lineNumber":7,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-10"},{"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":"-"},"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":"2017-03-11"},{"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":"2017-05-15"},{"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":{"KohGuanZeh":5,"-":24}},{"path":"src/main/java/seedu/findvisor/logic/parser/EditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.parser;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-10"},{"lineNumber":5,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-10"},{"lineNumber":6,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-10"},{"lineNumber":7,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.index.Index;","lastModifiedDate":"2024-03-10"},{"lineNumber":17,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.EditCommand;","lastModifiedDate":"2024-03-10"},{"lineNumber":18,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-10"},{"lineNumber":19,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-10"},{"lineNumber":20,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.tag.Tag;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG);","lastModifiedDate":"2017-06-06"},{"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":"-"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-07-14"},{"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":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":50,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":" editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":56,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":59,"author":{"gitId":"-"},"content":" editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":61,"author":{"gitId":"-"},"content":" parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPersonDescriptor::setTags);","lastModifiedDate":"2017-06-21"},{"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":{"KohGuanZeh":12,"-":73}},{"path":"src/main/java/seedu/findvisor/logic/parser/FindCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.parser;","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-10"},{"lineNumber":4,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":9,"author":{"gitId":"Javiery3889"},"content":"import java.util.List;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"Javiery3889"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.FindCommand;","lastModifiedDate":"2024-03-10"},{"lineNumber":13,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-10"},{"lineNumber":14,"author":{"gitId":"Javiery3889"},"content":"import seedu.findvisor.model.person.EmailContainsKeywordPredicate;","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"Javiery3889"},"content":"import seedu.findvisor.model.person.NameContainsKeywordPredicate;","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"Javiery3889"},"content":"import seedu.findvisor.model.person.PhoneContainsKeywordPredicate;","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"Javiery3889"},"content":"import seedu.findvisor.model.tag.TagsContainsKeywordsPredicate;","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new FindCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class FindCommandParser implements Parser\u003cFindCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the FindCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * and returns a FindCommand object for execution.","lastModifiedDate":"2019-05-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public FindCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":30,"author":{"gitId":"Javiery3889"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"Javiery3889"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_TAG);","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"Javiery3889"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL);","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"Javiery3889"},"content":" if (!isSinglePrefixPresent(argMultimap, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_TAG)) {","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"Javiery3889"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":39,"author":{"gitId":"Javiery3889"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"Javiery3889"},"content":" String nameKeyword \u003d argMultimap.getValue(PREFIX_NAME).get();","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"Javiery3889"},"content":" return new FindCommand(new NameContainsKeywordPredicate(nameKeyword));","lastModifiedDate":"2024-03-15"},{"lineNumber":42,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"Javiery3889"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"Javiery3889"},"content":" String emailKeyword \u003d argMultimap.getValue(PREFIX_EMAIL).get();","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"Javiery3889"},"content":" return new FindCommand(new EmailContainsKeywordPredicate(emailKeyword));","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"Javiery3889"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"Javiery3889"},"content":" String phoneKeyword \u003d argMultimap.getValue(PREFIX_PHONE).get();","lastModifiedDate":"2024-03-15"},{"lineNumber":49,"author":{"gitId":"Javiery3889"},"content":" return new FindCommand(new PhoneContainsKeywordPredicate(phoneKeyword));","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":52,"author":{"gitId":"Javiery3889"},"content":" List\u003cString\u003e tagsKeywords \u003d argMultimap.getAllValues(PREFIX_TAG);","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"Javiery3889"},"content":" return new FindCommand(new TagsContainsKeywordsPredicate(tagsKeywords));","lastModifiedDate":"2024-03-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":56,"author":{"gitId":"Javiery3889"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"Javiery3889"},"content":" * Returns true if exactly one prefix is present in the given {@code ArgumentMultimap}.","lastModifiedDate":"2024-03-14"},{"lineNumber":58,"author":{"gitId":"Javiery3889"},"content":" * @param argMultimap The {@link ArgumentMultimap} to check for the presence of prefixes.","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"Javiery3889"},"content":" * @param prefixes A varargs array of {@link Prefix} objects to be checked in the {@code argMultimap}.","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"Javiery3889"},"content":" * @return {@code true} if exactly one of the specified prefixes is present in the {@code ArgumentMultimap}.","lastModifiedDate":"2024-03-14"},{"lineNumber":61,"author":{"gitId":"Javiery3889"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":62,"author":{"gitId":"Javiery3889"},"content":" private boolean isSinglePrefixPresent(ArgumentMultimap argMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-03-14"},{"lineNumber":63,"author":{"gitId":"Javiery3889"},"content":" long prefixCount \u003d Stream.of(prefixes)","lastModifiedDate":"2024-03-14"},{"lineNumber":64,"author":{"gitId":"Javiery3889"},"content":" .filter(prefix -\u003e argMultimap.getValue(prefix).isPresent())","lastModifiedDate":"2024-03-14"},{"lineNumber":65,"author":{"gitId":"Javiery3889"},"content":" .count();","lastModifiedDate":"2024-03-14"},{"lineNumber":66,"author":{"gitId":"Javiery3889"},"content":" return prefixCount \u003d\u003d 1;","lastModifiedDate":"2024-03-14"},{"lineNumber":67,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"KohGuanZeh":4,"Javiery3889":43,"-":21}},{"path":"src/main/java/seedu/findvisor/logic/parser/Parser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.parser;","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":3,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.Command;","lastModifiedDate":"2024-03-10"},{"lineNumber":4,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-10"},{"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":{"KohGuanZeh":3,"-":13}},{"path":"src/main/java/seedu/findvisor/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.parser;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.index.Index;","lastModifiedDate":"2024-03-10"},{"lineNumber":10,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.commons.util.StringUtil;","lastModifiedDate":"2024-03-10"},{"lineNumber":11,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Address;","lastModifiedDate":"2024-03-10"},{"lineNumber":13,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Email;","lastModifiedDate":"2024-03-10"},{"lineNumber":14,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Name;","lastModifiedDate":"2024-03-10"},{"lineNumber":15,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Phone;","lastModifiedDate":"2024-03-10"},{"lineNumber":16,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.tag.Tag;","lastModifiedDate":"2024-03-10"},{"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":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":31,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02"},{"lineNumber":33,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":35,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29"},{"lineNumber":41,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29"},{"lineNumber":46,"author":{"gitId":"Arixeyeion"},"content":" String trimmedName \u003d name.trim().replaceAll(\"\\\\s+\", \" \");","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":48,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"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":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":60,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30"},{"lineNumber":61,"author":{"gitId":"Arixeyeion"},"content":" String trimmedPhone \u003d phone.trim().replaceAll(\"\\\\s\", \"\");","lastModifiedDate":"2024-03-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":63,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30"},{"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":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30"},{"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":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":75,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30"},{"lineNumber":76,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":78,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30"},{"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":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30"},{"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":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":90,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":91,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":92,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":93,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":95,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","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":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":101,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":105,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30"},{"lineNumber":106,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":107,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":108,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":110,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","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":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07"},{"lineNumber":115,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":117,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15"},{"lineNumber":118,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11"},{"lineNumber":119,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11"},{"lineNumber":120,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":122,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":124,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"Arixeyeion":2,"KohGuanZeh":9,"-":113}},{"path":"src/main/java/seedu/findvisor/logic/parser/Prefix.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.parser;","lastModifiedDate":"2024-03-10"},{"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":{"KohGuanZeh":1,"-":41}},{"path":"src/main/java/seedu/findvisor/logic/parser/ScheduleCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package seedu.findvisor.logic.parser;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-02-22"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_END_DATETIME;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_START_DATETIME;","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-02-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.commons.core.index.Index;","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.commons.util.DateTimeUtil;","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.logic.commands.ScheduleCommand;","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.model.person.Meeting;","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2024-02-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new ScheduleCommand object","lastModifiedDate":"2024-02-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class ScheduleCommandParser implements Parser\u003cScheduleCommand\u003e {","lastModifiedDate":"2024-02-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-02-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the ScheduleCommand","lastModifiedDate":"2024-02-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * and returns an ScheduleCommand object for execution.","lastModifiedDate":"2024-02-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-02-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public ScheduleCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-02-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2024-02-22"},{"lineNumber":28,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-02-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_START_DATETIME, PREFIX_END_DATETIME);","lastModifiedDate":"2024-02-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2024-02-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2024-02-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-02-22"},{"lineNumber":35,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-02-22"},{"lineNumber":36,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, ScheduleCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-02-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":39,"author":{"gitId":"-"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_START_DATETIME, PREFIX_END_DATETIME);","lastModifiedDate":"2024-02-22"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":41,"author":{"gitId":"-"},"content":" if (!(argMultimap.getValue(PREFIX_START_DATETIME).isPresent()","lastModifiedDate":"2024-02-22"},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u0026\u0026 argMultimap.getValue(PREFIX_END_DATETIME).isPresent())) {","lastModifiedDate":"2024-02-22"},{"lineNumber":43,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, ScheduleCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-02-22"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-22"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":46,"author":{"gitId":"-"},"content":" LocalDateTime startDateTime;","lastModifiedDate":"2024-02-22"},{"lineNumber":47,"author":{"gitId":"-"},"content":" LocalDateTime endDateTime;","lastModifiedDate":"2024-02-22"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":49,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2024-02-22"},{"lineNumber":50,"author":{"gitId":"-"},"content":" startDateTime \u003d DateTimeUtil.parseDateTimeString(argMultimap.getValue(PREFIX_START_DATETIME).get());","lastModifiedDate":"2024-02-22"},{"lineNumber":51,"author":{"gitId":"-"},"content":" endDateTime \u003d DateTimeUtil.parseDateTimeString(argMultimap.getValue(PREFIX_END_DATETIME).get());","lastModifiedDate":"2024-02-22"},{"lineNumber":52,"author":{"gitId":"-"},"content":" } catch (DateTimeParseException pe) {","lastModifiedDate":"2024-02-22"},{"lineNumber":53,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, ScheduleCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-02-22"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-22"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":56,"author":{"gitId":"-"},"content":" Meeting meeting \u003d new Meeting(startDateTime, endDateTime);","lastModifiedDate":"2024-02-22"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return new ScheduleCommand(index, meeting);","lastModifiedDate":"2024-02-22"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-02-22"}],"authorContributionMap":{"Dethada":9,"-":51}},{"path":"src/main/java/seedu/findvisor/logic/parser/UnscheduleCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package seedu.findvisor.logic.parser;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.commons.core.index.Index;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.logic.commands.UnscheduleCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":" * Parses input arguments and creates a new UnscheduleCommand object","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"public class UnscheduleCommandParser implements Parser\u003cUnscheduleCommand\u003e {","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" * Parses the given {@code String} of arguments in the context of the UnscheduleCommand","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" * and returns a UnscheduleCommand object for execution.","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" public UnscheduleCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" try {","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" return new UnscheduleCommand(index);","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, UnscheduleCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"Dethada":29}},{"path":"src/main/java/seedu/findvisor/logic/parser/exceptions/ParseException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.parser.exceptions;","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":3,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-10"},{"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":{"KohGuanZeh":2,"-":15}},{"path":"src/main/java/seedu/findvisor/model/AddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.model;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Person;","lastModifiedDate":"2024-03-10"},{"lineNumber":10,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.UniquePersonList;","lastModifiedDate":"2024-03-10"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Wraps all data at the address-book level","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Duplicates are not allowed (by .isSamePerson comparison)","lastModifiedDate":"2018-04-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class AddressBook implements ReadOnlyAddressBook {","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private final UniquePersonList persons;","lastModifiedDate":"2016-08-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-19"},{"lineNumber":21,"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":22,"author":{"gitId":"-"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2016-10-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-19"},{"lineNumber":24,"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":25,"author":{"gitId":"-"},"content":" * among constructors.","lastModifiedDate":"2016-10-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" {","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" persons \u003d new UniquePersonList();","lastModifiedDate":"2016-08-26"},{"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() {}","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":" * Creates an AddressBook using the Persons in the {@code toBeCopied}","lastModifiedDate":"2018-03-29"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public AddressBook(ReadOnlyAddressBook toBeCopied) {","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2016-12-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" resetData(toBeCopied);","lastModifiedDate":"2016-12-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":41,"author":{"gitId":"-"},"content":" //// list overwrite operations","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Replaces the contents of the person list with {@code persons}.","lastModifiedDate":"2018-08-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2018-08-07"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void setPersons(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-08-07"},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.persons.setPersons(persons);","lastModifiedDate":"2016-10-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code AddressBook} with {@code newData}.","lastModifiedDate":"2017-08-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyAddressBook newData) {","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" requireNonNull(newData);","lastModifiedDate":"2017-05-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" setPersons(newData.getPersonList());","lastModifiedDate":"2018-03-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" //// person-level operations","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":63,"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":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return persons.contains(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-09-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * The person must not already exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void addPerson(Person p) {","lastModifiedDate":"2018-08-07"},{"lineNumber":75,"author":{"gitId":"-"},"content":" persons.add(p);","lastModifiedDate":"2018-03-29"},{"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-12-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2018-01-10"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":81,"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":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":84,"author":{"gitId":"-"},"content":" requireNonNull(editedPerson);","lastModifiedDate":"2018-01-10"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" persons.setPerson(target, editedPerson);","lastModifiedDate":"2018-03-29"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * Removes {@code key} from this {@code AddressBook}.","lastModifiedDate":"2017-08-16"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * {@code key} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void removePerson(Person key) {","lastModifiedDate":"2018-08-07"},{"lineNumber":94,"author":{"gitId":"-"},"content":" persons.remove(key);","lastModifiedDate":"2018-02-28"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" //// util methods","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":" .add(\"persons\", persons)","lastModifiedDate":"2019-02-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"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-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":108,"author":{"gitId":"-"},"content":" return persons.asUnmodifiableObservableList();","lastModifiedDate":"2018-04-05"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-01"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-01"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"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 AddressBook)) {","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":" AddressBook otherAddressBook \u003d (AddressBook) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":" return persons.equals(otherAddressBook.persons);","lastModifiedDate":"2023-07-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":127,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":128,"author":{"gitId":"-"},"content":" return persons.hashCode();","lastModifiedDate":"2018-03-29"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":130,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"KohGuanZeh":4,"-":126}},{"path":"src/main/java/seedu/findvisor/model/Model.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.model;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.GuiSettings;","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Person;","lastModifiedDate":"2024-03-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":"-"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2017-08-05"},{"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":{"KohGuanZeh":3,"-":84}},{"path":"src/main/java/seedu/findvisor/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.model;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import static seedu.findvisor.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.GuiSettings;","lastModifiedDate":"2024-03-10"},{"lineNumber":13,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.LogsCenter;","lastModifiedDate":"2024-03-10"},{"lineNumber":14,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Person;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2018-01-10"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(this.addressBook.getPersonList());","lastModifiedDate":"2019-01-25"},{"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":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25"},{"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":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","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 setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"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":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":92,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":93,"author":{"gitId":"-"},"content":" return addressBook.hasPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":" addressBook.removePerson(target);","lastModifiedDate":"2019-01-25"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":102,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":103,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":104,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":109,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" addressBook.setPerson(target, editedPerson);","lastModifiedDate":"2019-01-25"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":114,"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":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":117,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10"},{"lineNumber":118,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11"},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":121,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":122,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":126,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":127,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05"},{"lineNumber":128,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12"},{"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":"2017-05-31"},{"lineNumber":132,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":137,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31"},{"lineNumber":138,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":139,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":143,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13"},{"lineNumber":144,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13"},{"lineNumber":145,"author":{"gitId":"-"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons);","lastModifiedDate":"2023-07-13"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":148,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"KohGuanZeh":5,"-":143}},{"path":"src/main/java/seedu/findvisor/model/ReadOnlyAddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.model;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Person;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" * Returns an unmodifiable view of the persons list.","lastModifiedDate":"2016-12-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * This list will not contain any duplicate persons.","lastModifiedDate":"2016-12-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"KohGuanZeh":2,"-":15}},{"path":"src/main/java/seedu/findvisor/model/ReadOnlyUserPrefs.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.model;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.GuiSettings;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-11-27"}],"authorContributionMap":{"KohGuanZeh":2,"-":14}},{"path":"src/main/java/seedu/findvisor/model/UserPrefs.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.model;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.GuiSettings;","lastModifiedDate":"2024-03-10"},{"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":"-"},"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":{"KohGuanZeh":2,"-":86}},{"path":"src/main/java/seedu/findvisor/model/person/Address.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.model.person;","lastModifiedDate":"2024-03-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":"KohGuanZeh"},"content":"import static seedu.findvisor.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-10"},{"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":"-"},"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":{"KohGuanZeh":2,"-":63}},{"path":"src/main/java/seedu/findvisor/model/person/Email.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.model.person;","lastModifiedDate":"2024-03-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":"KohGuanZeh"},"content":"import static seedu.findvisor.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-10"},{"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":"-"},"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":{"KohGuanZeh":2,"-":77}},{"path":"src/main/java/seedu/findvisor/model/person/EmailContainsKeywordPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Javiery3889"},"content":"package seedu.findvisor.model.person;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"Javiery3889"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"Javiery3889"},"content":"import seedu.findvisor.commons.util.StringUtil;","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"Javiery3889"},"content":"import seedu.findvisor.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"Javiery3889"},"content":"/**","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"Javiery3889"},"content":" * A predicate for evaluating if a {@link Person}\u0027s email contains (case-insensitive) a given keyword.","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"Javiery3889"},"content":" * This is used to filter for persons based on their email attribute.","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"Javiery3889"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"Javiery3889"},"content":"public class EmailContainsKeywordPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"Javiery3889"},"content":" private final String keyword;","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"Javiery3889"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"Javiery3889"},"content":" * Constructs an {@code EmailContainsKeywordPredicate} with the specified keyword.","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"Javiery3889"},"content":" *","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"Javiery3889"},"content":" * @param keyword The keyword to be matched against the person\u0027s email. The match is case-insensitive.","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"Javiery3889"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"Javiery3889"},"content":" public EmailContainsKeywordPredicate(String keyword) {","lastModifiedDate":"2024-03-15"},{"lineNumber":21,"author":{"gitId":"Javiery3889"},"content":" this.keyword \u003d keyword;","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"Javiery3889"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"Javiery3889"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"Javiery3889"},"content":" return StringUtil.containsIgnoreCase(person.getEmail().value, keyword);","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"Javiery3889"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"Javiery3889"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"Javiery3889"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"Javiery3889"},"content":" return true;","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"Javiery3889"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"Javiery3889"},"content":" if (!(other instanceof EmailContainsKeywordPredicate)) {","lastModifiedDate":"2024-03-15"},{"lineNumber":37,"author":{"gitId":"Javiery3889"},"content":" return false;","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"Javiery3889"},"content":" EmailContainsKeywordPredicate otherEmailContainsKeywordsPredicate \u003d (EmailContainsKeywordPredicate) other;","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"Javiery3889"},"content":" return keyword.equals(otherEmailContainsKeywordsPredicate.keyword);","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"Javiery3889"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"Javiery3889"},"content":" public String toString() {","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"Javiery3889"},"content":" return new ToStringBuilder(this).add(\"email\", keyword).toString();","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"Javiery3889"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"Javiery3889":48}},{"path":"src/main/java/seedu/findvisor/model/person/Meeting.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package seedu.findvisor.model.person;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-22"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import java.time.temporal.ChronoUnit;","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2024-02-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.commons.util.DateTimeUtil;","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2024-02-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Represents a meeting with a Person in the address book.","lastModifiedDate":"2024-02-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidDateTime(LocalDateTime, LocalDateTime)}","lastModifiedDate":"2024-02-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class Meeting {","lastModifiedDate":"2024-02-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Meetings consist of 2 datetimes, the start datetime and \"","lastModifiedDate":"2024-02-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":" + \"end date time.\\n\"","lastModifiedDate":"2024-02-22"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" + \"Each input string for datetime must be in the format dd-MM-yyyy\u0027T\u0027HH:mm, for example 23-02-2024T16:00.\\n\"","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \"The start datetime must be before the end date time.\";","lastModifiedDate":"2024-02-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public final LocalDateTime start;","lastModifiedDate":"2024-02-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public final LocalDateTime end;","lastModifiedDate":"2024-02-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-02-22"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" * Constructs an {@code Meeting}.","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2024-02-22"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" * @param start The start datetime of the meeting.","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" * @param end The end datetime of the meeting.","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public Meeting(LocalDateTime start, LocalDateTime end) {","lastModifiedDate":"2024-02-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" requireAllNonNull(start, end);","lastModifiedDate":"2024-02-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" checkArgument(isValidDateTime(start, end), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-22"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.start \u003d start;","lastModifiedDate":"2024-02-22"},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.end \u003d end;","lastModifiedDate":"2024-02-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-02-22"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":" * Returns true if the given start and end datetimes are valid.","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"Dethada"},"content":" * The start and end datetime are valid if the start is before the end datetime.","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-22"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static boolean isValidDateTime(LocalDateTime start, LocalDateTime end) {","lastModifiedDate":"2024-02-22"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return start.isBefore(end);","lastModifiedDate":"2024-02-22"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-22"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public String getStartString() {","lastModifiedDate":"2024-02-22"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return DateTimeUtil.dateTimeToString(start);","lastModifiedDate":"2024-02-22"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-22"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public String getEndString() {","lastModifiedDate":"2024-02-22"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return DateTimeUtil.dateTimeToString(end);","lastModifiedDate":"2024-02-22"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-22"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-02-22"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2024-02-22"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-02-22"},{"lineNumber":58,"author":{"gitId":"Dethada"},"content":" .add(\"Start Datetime\", getStartString())","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"Dethada"},"content":" .add(\"End Datetime\", getEndString())","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2024-02-22"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-22"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-02-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-02-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-02-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2024-02-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-02-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":" if (!(other instanceof Meeting)) {","lastModifiedDate":"2024-02-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2024-02-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":" Meeting otherMeeting \u003d (Meeting) other;","lastModifiedDate":"2024-02-22"},{"lineNumber":75,"author":{"gitId":"Dethada"},"content":" // We only need to compare up to minutes, comparing seconds and nanos is unnecessary and can cause issues.","lastModifiedDate":"2024-03-11"},{"lineNumber":76,"author":{"gitId":"Dethada"},"content":" return start.truncatedTo(ChronoUnit.MINUTES).equals(otherMeeting.start.truncatedTo(ChronoUnit.MINUTES))","lastModifiedDate":"2024-03-11"},{"lineNumber":77,"author":{"gitId":"Dethada"},"content":" \u0026\u0026 end.truncatedTo(ChronoUnit.MINUTES).equals(otherMeeting.end.truncatedTo(ChronoUnit.MINUTES));","lastModifiedDate":"2024-03-11"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-02-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2024-02-22"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return Objects.hash(start, end);","lastModifiedDate":"2024-02-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-22"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":85,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-02-22"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"}],"authorContributionMap":{"Dethada":17,"-":69}},{"path":"src/main/java/seedu/findvisor/model/person/Name.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.model.person;","lastModifiedDate":"2024-03-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":"KohGuanZeh"},"content":"import static seedu.findvisor.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-10"},{"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":"-"},"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":"-"},"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":"-"},"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":{"KohGuanZeh":2,"-":65}},{"path":"src/main/java/seedu/findvisor/model/person/NameContainsKeywordPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Javiery3889"},"content":"package seedu.findvisor.model.person;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"Javiery3889"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"Javiery3889"},"content":"import seedu.findvisor.commons.util.StringUtil;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"Javiery3889"},"content":"import seedu.findvisor.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"Javiery3889"},"content":"/**","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"Javiery3889"},"content":" * A predicate for evaluating if a {@link Person}\u0027s name contains (case-insensitive) a given keyword.","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"Javiery3889"},"content":" * This is used to filter for persons based on their name attribute.","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"Javiery3889"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"Javiery3889"},"content":"public class NameContainsKeywordPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"Javiery3889"},"content":" private final String keyword;","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"Javiery3889"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"Javiery3889"},"content":" * Constructs an {@code NameContainsKeywordPredicate} with the specified keyword.","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"Javiery3889"},"content":" *","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"Javiery3889"},"content":" * @param keyword The keyword to be used to lookup against the person\u0027s name. The match is case-insensitive.","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"Javiery3889"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"Javiery3889"},"content":" public NameContainsKeywordPredicate(String keyword) {","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"Javiery3889"},"content":" this.keyword \u003d keyword;","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"Javiery3889"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"Javiery3889"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"Javiery3889"},"content":" return StringUtil.containsIgnoreCase(person.getName().fullName, keyword);","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"Javiery3889"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"Javiery3889"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"Javiery3889"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"Javiery3889"},"content":" return true;","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"Javiery3889"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"Javiery3889"},"content":" if (!(other instanceof NameContainsKeywordPredicate)) {","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"Javiery3889"},"content":" return false;","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"Javiery3889"},"content":" NameContainsKeywordPredicate otherNameContainsKeywordsPredicate \u003d (NameContainsKeywordPredicate) other;","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"Javiery3889"},"content":" return keyword.equals(otherNameContainsKeywordsPredicate.keyword);","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"Javiery3889"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"Javiery3889"},"content":" public String toString() {","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"Javiery3889"},"content":" return new ToStringBuilder(this).add(\"name\", keyword).toString();","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"Javiery3889"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"Javiery3889":48}},{"path":"src/main/java/seedu/findvisor/model/person/Person.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.model.person;","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-10"},{"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.Optional;","lastModifiedDate":"2024-02-22"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.tag.Tag;","lastModifiedDate":"2024-03-10"},{"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":" private final Optional\u003cMeeting\u003e meeting;","lastModifiedDate":"2024-02-22"},{"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":"-"},"content":" public Person(Name name, Phone phone, Email email, Address address, Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-03-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":" requireAllNonNull(name, phone, email, address, tags);","lastModifiedDate":"2017-05-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20"},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.meeting \u003d Optional.empty();","lastModifiedDate":"2024-02-22"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-22"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-02-22"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-02-22"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-22"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public Person(Name name, Phone phone, Email email, Address address, Set\u003cTag\u003e tags, Optional\u003cMeeting\u003e meeting) {","lastModifiedDate":"2024-02-22"},{"lineNumber":47,"author":{"gitId":"-"},"content":" requireAllNonNull(name, phone, email, address, tags, meeting);","lastModifiedDate":"2024-02-22"},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2024-02-22"},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2024-02-22"},{"lineNumber":50,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2024-02-22"},{"lineNumber":51,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2024-02-22"},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2024-02-22"},{"lineNumber":53,"author":{"gitId":"-"},"content":" this.meeting \u003d meeting;","lastModifiedDate":"2024-02-22"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return name;","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":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return phone;","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":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public Optional\u003cMeeting\u003e getMeeting() {","lastModifiedDate":"2024-02-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return meeting;","lastModifiedDate":"2024-02-22"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19"},{"lineNumber":90,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19"},{"lineNumber":94,"author":{"gitId":"KohGuanZeh"},"content":" \u0026\u0026 otherPerson.getPhone().equals(getPhone());","lastModifiedDate":"2024-03-11"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":103,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":104,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":107,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10"},{"lineNumber":109,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":112,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10"},{"lineNumber":113,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" \u0026\u0026 meeting.equals(otherPerson.meeting)","lastModifiedDate":"2024-02-22"},{"lineNumber":118,"author":{"gitId":"-"},"content":" \u0026\u0026 tags.equals(otherPerson.tags);","lastModifiedDate":"2023-07-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 int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":123,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":124,"author":{"gitId":"-"},"content":" return Objects.hash(name, phone, email, address, tags, meeting);","lastModifiedDate":"2024-02-22"},{"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 String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":129,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":" .add(\"meeting\", meeting)","lastModifiedDate":"2024-02-22"},{"lineNumber":135,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":139,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"KohGuanZeh":5,"-":134}},{"path":"src/main/java/seedu/findvisor/model/person/Phone.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.model.person;","lastModifiedDate":"2024-03-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":"KohGuanZeh"},"content":"import static seedu.findvisor.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-10"},{"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":"-"},"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":"Arixeyeion"},"content":" \"Phone numbers should only contain numbers or spaces, and it should be a valid Singaporean mobile number.\\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"Arixeyeion"},"content":" + \"Valid examples: 91234567 or 8123 4567. Do note that the spaces will be trimmed.\";","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"Arixeyeion"},"content":" public static final String VALIDATION_REGEX \u003d \"[89]\\\\d{7}\";","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public final String value;","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"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":{"Arixeyeion":3,"KohGuanZeh":2,"-":57}},{"path":"src/main/java/seedu/findvisor/model/person/PhoneContainsKeywordPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Javiery3889"},"content":"package seedu.findvisor.model.person;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"Javiery3889"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"Javiery3889"},"content":"import seedu.findvisor.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"Javiery3889"},"content":"/**","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"Javiery3889"},"content":" * A predicate for evaluating if a {@link Person}\u0027s phone contains a given keyword.","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"Javiery3889"},"content":" * This is used to filter for persons based on their phone attribute.","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"Javiery3889"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"Javiery3889"},"content":"public class PhoneContainsKeywordPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"Javiery3889"},"content":" private final String keyword;","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"Javiery3889"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"Javiery3889"},"content":" * Constructs an {@code PhoneEqualsKeywordPredicate} with the specified keyword.","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"Javiery3889"},"content":" *","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"Javiery3889"},"content":" * @param keyword The keyword to be used to lookup against the person\u0027s phone.","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"Javiery3889"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"Javiery3889"},"content":" public PhoneContainsKeywordPredicate(String keyword) {","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"Javiery3889"},"content":" this.keyword \u003d keyword;","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"Javiery3889"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"Javiery3889"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"Javiery3889"},"content":" String personPhoneString \u003d person.getPhone().value;","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"Javiery3889"},"content":" return personPhoneString.contains(keyword);","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"Javiery3889"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"Javiery3889"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"Javiery3889"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"Javiery3889"},"content":" return true;","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"Javiery3889"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"Javiery3889"},"content":" if (!(other instanceof PhoneContainsKeywordPredicate)) {","lastModifiedDate":"2024-03-15"},{"lineNumber":37,"author":{"gitId":"Javiery3889"},"content":" return false;","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"Javiery3889"},"content":" PhoneContainsKeywordPredicate otherPhoneEqualsKeywordsPredicate \u003d (PhoneContainsKeywordPredicate) other;","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"Javiery3889"},"content":" return keyword.equals(otherPhoneEqualsKeywordsPredicate.keyword);","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"Javiery3889"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"Javiery3889"},"content":" public String toString() {","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"Javiery3889"},"content":" return new ToStringBuilder(this).add(\"phone\", keyword).toString();","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"Javiery3889"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"Javiery3889":48}},{"path":"src/main/java/seedu/findvisor/model/person/UniquePersonList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.model.person;","lastModifiedDate":"2024-03-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":"KohGuanZeh"},"content":"import static seedu.findvisor.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-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":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.exceptions.PersonNotFoundException;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Adds a person to the list.","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * The person must not already exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void add(Person toAdd) {","lastModifiedDate":"2018-08-07"},{"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":"-"},"content":" * Replaces the person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2017-06-07"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":54,"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":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-07"},{"lineNumber":57,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2018-08-08"},{"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":"-"},"content":" if (!target.isSamePerson(editedPerson) \u0026\u0026 contains(editedPerson)) {","lastModifiedDate":"2018-04-19"},{"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":"-"},"content":" internalList.set(index, editedPerson);","lastModifiedDate":"2018-01-10"},{"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":"-"},"content":" * Removes the equivalent person from the list.","lastModifiedDate":"2016-08-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * The person must exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void remove(Person toRemove) {","lastModifiedDate":"2018-08-07"},{"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":"-"},"content":" public void setPersons(UniquePersonList replacement) {","lastModifiedDate":"2016-10-19"},{"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":"-"},"content":" * Replaces the contents of this list with {@code persons}.","lastModifiedDate":"2018-08-07"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2018-08-07"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void setPersons(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-08-07"},{"lineNumber":92,"author":{"gitId":"-"},"content":" requireAllNonNull(persons);","lastModifiedDate":"2018-01-10"},{"lineNumber":93,"author":{"gitId":"-"},"content":" if (!personsAreUnique(persons)) {","lastModifiedDate":"2018-04-19"},{"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":"-"},"content":" internalList.setAll(persons);","lastModifiedDate":"2018-08-14"},{"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":"-"},"content":" public ObservableList\u003cPerson\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2018-04-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":"-"},"content":" public Iterator\u003cPerson\u003e iterator() {","lastModifiedDate":"2016-08-24"},{"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":"-"},"content":" if (!(other instanceof UniquePersonList)) {","lastModifiedDate":"2023-07-13"},{"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":"-"},"content":" UniquePersonList otherUniquePersonList \u003d (UniquePersonList) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" return internalList.equals(otherUniquePersonList.internalList);","lastModifiedDate":"2023-07-13"},{"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":"-"},"content":" * Returns true if {@code persons} contains only unique persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":140,"author":{"gitId":"-"},"content":" private boolean personsAreUnique(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-04-19"},{"lineNumber":141,"author":{"gitId":"-"},"content":" for (int i \u003d 0; i \u003c persons.size() - 1; i++) {","lastModifiedDate":"2018-04-19"},{"lineNumber":142,"author":{"gitId":"-"},"content":" for (int j \u003d i + 1; j \u003c persons.size(); j++) {","lastModifiedDate":"2018-04-19"},{"lineNumber":143,"author":{"gitId":"-"},"content":" if (persons.get(i).isSamePerson(persons.get(j))) {","lastModifiedDate":"2018-04-19"},{"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":{"KohGuanZeh":4,"-":146}},{"path":"src/main/java/seedu/findvisor/model/person/exceptions/DuplicatePersonException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.model.person.exceptions;","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Signals that the operation will result in duplicate Persons (Persons are considered duplicates if they have the same","lastModifiedDate":"2018-04-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":" * identity).","lastModifiedDate":"2018-04-19"},{"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":"-"},"content":" super(\"Operation would result in duplicate persons\");","lastModifiedDate":"2017-06-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09"}],"authorContributionMap":{"KohGuanZeh":1,"-":10}},{"path":"src/main/java/seedu/findvisor/model/person/exceptions/PersonNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.model.person.exceptions;","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Signals that the operation is unable to find the specified person.","lastModifiedDate":"2017-06-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class PersonNotFoundException extends RuntimeException {}","lastModifiedDate":"2018-08-07"}],"authorContributionMap":{"KohGuanZeh":1,"-":5}},{"path":"src/main/java/seedu/findvisor/model/tag/Tag.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.model.tag;","lastModifiedDate":"2024-03-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":"KohGuanZeh"},"content":"import static seedu.findvisor.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-10"},{"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":{"KohGuanZeh":2,"-":60}},{"path":"src/main/java/seedu/findvisor/model/tag/TagsContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Javiery3889"},"content":"package seedu.findvisor.model.tag;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"Javiery3889"},"content":"import java.util.List;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"Javiery3889"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"Javiery3889"},"content":"import seedu.findvisor.commons.util.StringUtil;","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"Javiery3889"},"content":"import seedu.findvisor.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"Javiery3889"},"content":"import seedu.findvisor.model.person.Person;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"Javiery3889"},"content":"/**","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"Javiery3889"},"content":" * A predicate for evaluating if a {@link Person}\u0027s name contains (case-insensitive) any of the given keywords.","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"Javiery3889"},"content":" * This is used to filter for persons based on their tags attribute.","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"Javiery3889"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"Javiery3889"},"content":"public class TagsContainsKeywordsPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"Javiery3889"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"Javiery3889"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"Javiery3889"},"content":" * Constructs an {@code TagsContainsKeywordsPredicate} with the specified keyword.","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"Javiery3889"},"content":" *","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"Javiery3889"},"content":" * @param keywords The keywords to be used to lookup against the person\u0027s tags.","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"Javiery3889"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"Javiery3889"},"content":" public TagsContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"Javiery3889"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"Javiery3889"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"Javiery3889"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"Javiery3889"},"content":" return keywords.stream().anyMatch(keyword -\u003e person.getTags().stream()","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"Javiery3889"},"content":" .anyMatch(tag -\u003e StringUtil.containsIgnoreCase(tag.tagName, keyword)));","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"Javiery3889"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"Javiery3889"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"Javiery3889"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"Javiery3889"},"content":" return true;","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"Javiery3889"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"Javiery3889"},"content":" if (!(other instanceof TagsContainsKeywordsPredicate)) {","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"Javiery3889"},"content":" return false;","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"Javiery3889"},"content":" TagsContainsKeywordsPredicate otherNameContainsKeywordsPredicate \u003d (TagsContainsKeywordsPredicate) other;","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"Javiery3889"},"content":" return keywords.equals(otherNameContainsKeywordsPredicate.keywords);","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"Javiery3889"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"Javiery3889"},"content":" public String toString() {","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"Javiery3889"},"content":" return new ToStringBuilder(this).add(\"tags\", keywords).toString();","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"Javiery3889"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"Javiery3889":51}},{"path":"src/main/java/seedu/findvisor/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.model.util;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.model.AddressBook;","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Address;","lastModifiedDate":"2024-03-10"},{"lineNumber":10,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Email;","lastModifiedDate":"2024-03-10"},{"lineNumber":11,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Name;","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Person;","lastModifiedDate":"2024-03-10"},{"lineNumber":13,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Phone;","lastModifiedDate":"2024-03-10"},{"lineNumber":14,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.tag.Tag;","lastModifiedDate":"2024-03-10"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":" new Person(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" getTagSet(\"friends\")),","lastModifiedDate":"2017-03-14"},{"lineNumber":25,"author":{"gitId":"-"},"content":" new Person(new Name(\"Bernice Yu\"), new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" getTagSet(\"colleagues\", \"friends\")),","lastModifiedDate":"2017-03-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":" getTagSet(\"neighbours\")),","lastModifiedDate":"2017-03-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":" new Person(new Name(\"David Li\"), new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":33,"author":{"gitId":"-"},"content":" getTagSet(\"family\")),","lastModifiedDate":"2017-03-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" getTagSet(\"classmates\")),","lastModifiedDate":"2017-03-14"},{"lineNumber":37,"author":{"gitId":"-"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":" getTagSet(\"colleagues\"))","lastModifiedDate":"2017-03-14"},{"lineNumber":40,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14"},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"KohGuanZeh":9,"-":51}},{"path":"src/main/java/seedu/findvisor/storage/AddressBookStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.storage;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-24"},{"lineNumber":11,"author":{"gitId":"KohGuanZeh"},"content":" * Represents a storage for {@link seedu.findvisor.model.AddressBook}.","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public interface AddressBookStorage {","lastModifiedDate":"2016-09-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Returns the file path of the data file.","lastModifiedDate":"2016-09-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-04-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Returns AddressBook data as a {@link ReadOnlyAddressBook}.","lastModifiedDate":"2016-09-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Returns {@code Optional.empty()} if storage file is not found.","lastModifiedDate":"2016-09-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2023-06-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" Optional\u003cReadOnlyAddressBook\u003e readAddressBook() throws DataLoadingException;","lastModifiedDate":"2023-06-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-01"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @see #getAddressBookFilePath()","lastModifiedDate":"2016-10-01"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-01"},{"lineNumber":31,"author":{"gitId":"-"},"content":" Optional\u003cReadOnlyAddressBook\u003e readAddressBook(Path filePath) throws DataLoadingException;","lastModifiedDate":"2023-06-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Saves the given {@link ReadOnlyAddressBook} to the storage.","lastModifiedDate":"2016-09-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * @param addressBook cannot be null.","lastModifiedDate":"2016-09-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * @throws IOException if there was any problem writing to the file.","lastModifiedDate":"2016-09-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" void saveAddressBook(ReadOnlyAddressBook addressBook) throws IOException;","lastModifiedDate":"2016-09-28"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * @see #saveAddressBook(ReadOnlyAddressBook)","lastModifiedDate":"2016-10-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath) throws IOException;","lastModifiedDate":"2018-04-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-24"}],"authorContributionMap":{"KohGuanZeh":4,"-":41}},{"path":"src/main/java/seedu/findvisor/storage/JsonAdaptedMeeting.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package seedu.findvisor.storage;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-22"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2024-02-22"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-02-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2024-02-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.commons.util.DateTimeUtil;","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.model.person.Meeting;","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2024-02-22"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" * Jackson-friendly version of {@link Meeting}.","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":"class JsonAdaptedMeeting {","lastModifiedDate":"2024-02-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private final String start;","lastModifiedDate":"2024-02-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private final String end;","lastModifiedDate":"2024-02-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-02-22"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" * Constructs a {@code JsonAdaptedMeeting} with the given {@code start} and {@code end}.","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2024-02-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public JsonAdaptedMeeting(@JsonProperty(\"start\") String start, @JsonProperty(\"end\") String end) {","lastModifiedDate":"2024-02-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" this.start \u003d start;","lastModifiedDate":"2024-02-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.end \u003d end;","lastModifiedDate":"2024-02-22"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-02-22"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" * Converts a given {@code Optional\u003cMeeting\u003e} into this class for Jackson use.","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public JsonAdaptedMeeting(Optional\u003cMeeting\u003e source) {","lastModifiedDate":"2024-02-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" start \u003d source.map(meeting -\u003e DateTimeUtil.dateTimeToInputString(meeting.start)).orElse(\"\");","lastModifiedDate":"2024-02-22"},{"lineNumber":35,"author":{"gitId":"-"},"content":" end \u003d source.map(meeting -\u003e DateTimeUtil.dateTimeToInputString(meeting.end)).orElse(\"\");","lastModifiedDate":"2024-02-22"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // end \u003d DateTimeUtil.dateTimeToString(source.end);","lastModifiedDate":"2024-02-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-02-22"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted meeting object into the model\u0027s {@code Meeting} object.","lastModifiedDate":"2024-02-22"},{"lineNumber":41,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2024-02-22"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted","lastModifiedDate":"2024-02-22"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * meeting.","lastModifiedDate":"2024-02-22"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-22"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public Optional\u003cMeeting\u003e toModelType() throws IllegalValueException {","lastModifiedDate":"2024-02-22"},{"lineNumber":46,"author":{"gitId":"-"},"content":" if (start \u003d\u003d \"\" || end \u003d\u003d \"\") {","lastModifiedDate":"2024-02-22"},{"lineNumber":47,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2024-02-22"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-22"},{"lineNumber":49,"author":{"gitId":"Dethada"},"content":" try {","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"-"},"content":" LocalDateTime start \u003d DateTimeUtil.parseDateTimeString(this.start);","lastModifiedDate":"2024-02-22"},{"lineNumber":51,"author":{"gitId":"-"},"content":" LocalDateTime end \u003d DateTimeUtil.parseDateTimeString(this.end);","lastModifiedDate":"2024-02-22"},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (!Meeting.isValidDateTime(start, end)) {","lastModifiedDate":"2024-02-22"},{"lineNumber":53,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Meeting.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-22"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-22"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return Optional.of(new Meeting(start, end));","lastModifiedDate":"2024-02-22"},{"lineNumber":56,"author":{"gitId":"Dethada"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Meeting.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":61,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-02-22"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"}],"authorContributionMap":{"Dethada":10,"-":52}},{"path":"src/main/java/seedu/findvisor/storage/JsonAdaptedPerson.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.storage;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-10"},{"lineNumber":13,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Address;","lastModifiedDate":"2024-03-10"},{"lineNumber":14,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Email;","lastModifiedDate":"2024-03-10"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.model.person.Meeting;","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Name;","lastModifiedDate":"2024-03-10"},{"lineNumber":17,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Person;","lastModifiedDate":"2024-03-10"},{"lineNumber":18,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Phone;","lastModifiedDate":"2024-03-10"},{"lineNumber":19,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.tag.Tag;","lastModifiedDate":"2024-03-10"},{"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 JsonAdaptedMeeting meeting;","lastModifiedDate":"2024-02-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09"},{"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":"-"},"content":" @JsonProperty(\"meeting\") JsonAdaptedMeeting meeting, @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags) {","lastModifiedDate":"2024-02-22"},{"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":" this.meeting \u003d meeting;","lastModifiedDate":"2024-02-22"},{"lineNumber":47,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"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":" meeting \u003d new JsonAdaptedMeeting(source.getMeeting());","lastModifiedDate":"2024-02-22"},{"lineNumber":61,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09"},{"lineNumber":74,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":111,"author":{"gitId":"-"},"content":" if (meeting \u003d\u003d null) {","lastModifiedDate":"2024-02-22"},{"lineNumber":112,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Meeting.class.getSimpleName()));","lastModifiedDate":"2024-02-22"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-22"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":115,"author":{"gitId":"-"},"content":" return new Person(modelName, modelPhone, modelEmail, modelAddress, modelTags, meeting.toModelType());","lastModifiedDate":"2024-02-22"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"KohGuanZeh":8,"Dethada":1,"-":109}},{"path":"src/main/java/seedu/findvisor/storage/JsonAdaptedTag.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.storage;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-10"},{"lineNumber":7,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.tag.Tag;","lastModifiedDate":"2024-03-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":{"KohGuanZeh":3,"-":45}},{"path":"src/main/java/seedu/findvisor/storage/JsonAddressBookStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.storage;","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.io.IOException;","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.util.Optional;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.LogsCenter;","lastModifiedDate":"2024-03-10"},{"lineNumber":11,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-10"},{"lineNumber":13,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.commons.util.FileUtil;","lastModifiedDate":"2024-03-10"},{"lineNumber":14,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.commons.util.JsonUtil;","lastModifiedDate":"2024-03-10"},{"lineNumber":15,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-10"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * A class to access AddressBook data stored as a json file on the hard disk.","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class JsonAddressBookStorage implements AddressBookStorage {","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(JsonAddressBookStorage.class);","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private Path filePath;","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public JsonAddressBookStorage(Path filePath) {","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" return filePath;","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":" @Override","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public Optional\u003cReadOnlyAddressBook\u003e readAddressBook() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":36,"author":{"gitId":"-"},"content":" return readAddressBook(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":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Similar to {@link #readAddressBook()}.","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2023-06-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public Optional\u003cReadOnlyAddressBook\u003e readAddressBook(Path filePath) throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":46,"author":{"gitId":"-"},"content":" requireNonNull(filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" Optional\u003cJsonSerializableAddressBook\u003e jsonAddressBook \u003d JsonUtil.readJsonFile(","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" filePath, JsonSerializableAddressBook.class);","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" if (!jsonAddressBook.isPresent()) {","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return Optional.of(jsonAddressBook.get().toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" logger.info(\"Illegal values found in \" + filePath + \": \" + ive.getMessage());","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" throw new DataLoadingException(ive);","lastModifiedDate":"2023-06-14"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook) throws IOException {","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" saveAddressBook(addressBook, filePath);","lastModifiedDate":"2018-08-13"},{"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":" * Similar to {@link #saveAddressBook(ReadOnlyAddressBook)}.","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath) throws IOException {","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" requireNonNull(addressBook);","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" requireNonNull(filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" FileUtil.createIfMissing(filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" JsonUtil.saveJsonFile(new JsonSerializableAddressBook(addressBook), filePath);","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":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"KohGuanZeh":7,"-":73}},{"path":"src/main/java/seedu/findvisor/storage/JsonSerializableAddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.storage;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.AddressBook;","lastModifiedDate":"2024-03-10"},{"lineNumber":13,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-10"},{"lineNumber":14,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Person;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"Persons list contains duplicate person(s).\";","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedPerson\u003e persons \u003d new ArrayList\u003c\u003e();","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":" * 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":"-"},"content":" public JsonSerializableAddressBook(@JsonProperty(\"persons\") List\u003cJsonAdaptedPerson\u003e persons) {","lastModifiedDate":"2018-08-13"},{"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":"-"},"content":" persons.addAll(source.getPersonList().stream().map(JsonAdaptedPerson::new).collect(Collectors.toList()));","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 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":"-"},"content":" for (JsonAdaptedPerson jsonAdaptedPerson : persons) {","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" Person person \u003d jsonAdaptedPerson.toModelType();","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (addressBook.hasPerson(person)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2018-08-13"},{"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":{"KohGuanZeh":5,"-":55}},{"path":"src/main/java/seedu/findvisor/storage/JsonUserPrefsStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.storage;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.commons.util.JsonUtil;","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-10"},{"lineNumber":10,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.UserPrefs;","lastModifiedDate":"2024-03-10"},{"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":{"KohGuanZeh":5,"-":42}},{"path":"src/main/java/seedu/findvisor/storage/Storage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.storage;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-10"},{"lineNumber":10,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.UserPrefs;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":"public interface Storage extends AddressBookStorage, UserPrefsStorage {","lastModifiedDate":"2016-09-25"},{"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":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-04-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" Optional\u003cReadOnlyAddressBook\u003e readAddressBook() throws DataLoadingException;","lastModifiedDate":"2023-06-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" void saveAddressBook(ReadOnlyAddressBook addressBook) throws IOException;","lastModifiedDate":"2016-09-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"KohGuanZeh":5,"-":27}},{"path":"src/main/java/seedu/findvisor/storage/StorageManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.storage;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.LogsCenter;","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-10"},{"lineNumber":10,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-10"},{"lineNumber":11,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.UserPrefs;","lastModifiedDate":"2024-03-10"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Manages storage of AddressBook data in local storage.","lastModifiedDate":"2016-09-24"},{"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":"-"},"content":" private AddressBookStorage addressBookStorage;","lastModifiedDate":"2016-10-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private UserPrefsStorage userPrefsStorage;","lastModifiedDate":"2016-10-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Creates a {@code StorageManager} with the given {@code AddressBookStorage} and {@code UserPrefStorage}.","lastModifiedDate":"2020-05-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public StorageManager(AddressBookStorage addressBookStorage, UserPrefsStorage userPrefsStorage) {","lastModifiedDate":"2016-10-01"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.addressBookStorage \u003d addressBookStorage;","lastModifiedDate":"2016-10-01"},{"lineNumber":28,"author":{"gitId":"-"},"content":" this.userPrefsStorage \u003d userPrefsStorage;","lastModifiedDate":"2016-10-01"},{"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":"-"},"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":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return addressBookStorage.getAddressBookFilePath();","lastModifiedDate":"2016-09-24"},{"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":"-"},"content":" public Optional\u003cReadOnlyAddressBook\u003e readAddressBook() throws DataLoadingException {","lastModifiedDate":"2023-06-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return readAddressBook(addressBookStorage.getAddressBookFilePath());","lastModifiedDate":"2016-10-01"},{"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":"-"},"content":" public Optional\u003cReadOnlyAddressBook\u003e readAddressBook(Path filePath) throws DataLoadingException {","lastModifiedDate":"2023-06-15"},{"lineNumber":63,"author":{"gitId":"-"},"content":" logger.fine(\"Attempting to read data from file: \" + filePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return addressBookStorage.readAddressBook(filePath);","lastModifiedDate":"2016-10-01"},{"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":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook) throws IOException {","lastModifiedDate":"2016-09-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":" saveAddressBook(addressBook, addressBookStorage.getAddressBookFilePath());","lastModifiedDate":"2016-10-01"},{"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":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" logger.fine(\"Attempting to write to data file: \" + filePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":75,"author":{"gitId":"-"},"content":" addressBookStorage.saveAddressBook(addressBook, filePath);","lastModifiedDate":"2016-10-01"},{"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":{"KohGuanZeh":6,"-":72}},{"path":"src/main/java/seedu/findvisor/storage/UserPrefsStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.storage;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.UserPrefs;","lastModifiedDate":"2024-03-10"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-24"},{"lineNumber":12,"author":{"gitId":"KohGuanZeh"},"content":" * Represents a storage for {@link seedu.findvisor.model.UserPrefs}.","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":" * Saves the given {@link seedu.findvisor.model.ReadOnlyUserPrefs} to the storage.","lastModifiedDate":"2024-03-10"},{"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":{"KohGuanZeh":6,"-":30}},{"path":"src/main/java/seedu/findvisor/ui/CommandBox.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.ui;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.CommandResult;","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-10"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * The UI component that is responsible for receiving user command inputs.","lastModifiedDate":"2017-08-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class CommandBox extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String ERROR_STYLE_CLASS \u003d \"error\";","lastModifiedDate":"2017-02-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"CommandBox.fxml\";","lastModifiedDate":"2017-04-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private final CommandExecutor commandExecutor;","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-14"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private TextField commandTextField;","lastModifiedDate":"2016-09-14"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Creates a {@code CommandBox} with the given {@code CommandExecutor}.","lastModifiedDate":"2020-05-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public CommandBox(CommandExecutor commandExecutor) {","lastModifiedDate":"2019-01-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" this.commandExecutor \u003d commandExecutor;","lastModifiedDate":"2018-12-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // calls #setStyleToDefault() whenever there is a change to the text of the command box.","lastModifiedDate":"2017-06-28"},{"lineNumber":31,"author":{"gitId":"-"},"content":" commandTextField.textProperty().addListener((unused1, unused2, unused3) -\u003e setStyleToDefault());","lastModifiedDate":"2017-06-28"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Handles the Enter button pressed event.","lastModifiedDate":"2017-08-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private void handleCommandEntered() {","lastModifiedDate":"2018-04-01"},{"lineNumber":39,"author":{"gitId":"-"},"content":" String commandText \u003d commandTextField.getText();","lastModifiedDate":"2020-12-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":" if (commandText.equals(\"\")) {","lastModifiedDate":"2020-12-04"},{"lineNumber":41,"author":{"gitId":"-"},"content":" return;","lastModifiedDate":"2020-12-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-12-04"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-12-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-02-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" commandExecutor.execute(commandText);","lastModifiedDate":"2020-12-04"},{"lineNumber":46,"author":{"gitId":"-"},"content":" commandTextField.setText(\"\");","lastModifiedDate":"2016-09-14"},{"lineNumber":47,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2017-03-11"},{"lineNumber":48,"author":{"gitId":"-"},"content":" setStyleToIndicateCommandFailure();","lastModifiedDate":"2017-02-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-14"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-28"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Sets the command box style to use the default style.","lastModifiedDate":"2017-06-28"},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28"},{"lineNumber":55,"author":{"gitId":"-"},"content":" private void setStyleToDefault() {","lastModifiedDate":"2017-06-28"},{"lineNumber":56,"author":{"gitId":"-"},"content":" commandTextField.getStyleClass().remove(ERROR_STYLE_CLASS);","lastModifiedDate":"2017-02-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-28"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Sets the command box style to indicate a failed command.","lastModifiedDate":"2017-02-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28"},{"lineNumber":62,"author":{"gitId":"-"},"content":" private void setStyleToIndicateCommandFailure() {","lastModifiedDate":"2017-02-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" ObservableList\u003cString\u003e styleClass \u003d commandTextField.getStyleClass();","lastModifiedDate":"2017-03-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" if (styleClass.contains(ERROR_STYLE_CLASS)) {","lastModifiedDate":"2017-03-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return;","lastModifiedDate":"2017-03-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" styleClass.add(ERROR_STYLE_CLASS);","lastModifiedDate":"2017-03-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Represents a function that can execute commands.","lastModifiedDate":"2018-12-09"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @FunctionalInterface","lastModifiedDate":"2018-12-09"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public interface CommandExecutor {","lastModifiedDate":"2018-12-09"},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":79,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":80,"author":{"gitId":"KohGuanZeh"},"content":" * @see seedu.findvisor.logic.Logic#execute(String)","lastModifiedDate":"2024-03-10"},{"lineNumber":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":82,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2018-12-09"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":85,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"}],"authorContributionMap":{"KohGuanZeh":5,"-":80}},{"path":"src/main/java/seedu/findvisor/ui/HelpWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.ui;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.LogsCenter;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":" public static final String USERGUIDE_URL \u003d \"https://ay2324s2-cs2103-f15-1.github.io/tp/UserGuide.html\";","lastModifiedDate":"2024-03-10"},{"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":{"KohGuanZeh":3,"-":99}},{"path":"src/main/java/seedu/findvisor/ui/MainWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.ui;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.GuiSettings;","lastModifiedDate":"2024-03-10"},{"lineNumber":14,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.LogsCenter;","lastModifiedDate":"2024-03-10"},{"lineNumber":15,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.Logic;","lastModifiedDate":"2024-03-10"},{"lineNumber":16,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.CommandResult;","lastModifiedDate":"2024-03-10"},{"lineNumber":17,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-10"},{"lineNumber":18,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-10"},{"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":"-"},"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":"-"},"content":" private StackPane personListPanelPlaceholder;","lastModifiedDate":"2017-05-09"},{"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":"-"},"content":" personListPanel \u003d new PersonListPanel(logic.getFilteredPersonList());","lastModifiedDate":"2019-01-25"},{"lineNumber":114,"author":{"gitId":"-"},"content":" personListPanelPlaceholder.getChildren().add(personListPanel.getRoot());","lastModifiedDate":"2017-06-14"},{"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":" public PersonListPanel getPersonListPanel() {","lastModifiedDate":"2016-08-25"},{"lineNumber":167,"author":{"gitId":"-"},"content":" return personListPanel;","lastModifiedDate":"2018-08-14"},{"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":"KohGuanZeh"},"content":" * @see seedu.findvisor.logic.Logic#execute(String)","lastModifiedDate":"2024-03-10"},{"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":{"KohGuanZeh":8,"-":188}},{"path":"src/main/java/seedu/findvisor/ui/PersonCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.ui;","lastModifiedDate":"2024-03-10"},{"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":"Dethada"},"content":"import seedu.findvisor.logic.Messages;","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Person;","lastModifiedDate":"2024-03-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":" /**","lastModifiedDate":"2017-03-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25"},{"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":"-"},"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":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public final Person person;","lastModifiedDate":"2018-01-10"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private Label address;","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private Label meeting;","lastModifiedDate":"2024-02-22"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2024-02-22"},{"lineNumber":45,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10"},{"lineNumber":51,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":" address.setText(person.getAddress().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" meeting.setText(person.getMeeting().map(Messages::format).orElse(\"No Scheduled Meeting\"));","lastModifiedDate":"2024-02-22"},{"lineNumber":59,"author":{"gitId":"-"},"content":" person.getTags().stream()","lastModifiedDate":"2019-01-02"},{"lineNumber":60,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02"},{"lineNumber":61,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":63,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"KohGuanZeh":2,"Dethada":1,"-":60}},{"path":"src/main/java/seedu/findvisor/ui/PersonListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.ui;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.LogsCenter;","lastModifiedDate":"2024-03-10"},{"lineNumber":11,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Person;","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Panel containing the list of persons.","lastModifiedDate":"2016-09-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class PersonListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListPanel.fxml\";","lastModifiedDate":"2016-09-14"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(PersonListPanel.class);","lastModifiedDate":"2017-04-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private ListView\u003cPerson\u003e personListView;","lastModifiedDate":"2018-02-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Creates a {@code PersonListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2020-05-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public PersonListPanel(ObservableList\u003cPerson\u003e personList) {","lastModifiedDate":"2019-01-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" personListView.setItems(personList);","lastModifiedDate":"2018-02-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" personListView.setCellFactory(listView -\u003e new PersonListViewCell());","lastModifiedDate":"2016-08-18"},{"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":"-"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Person} using a {@code PersonCard}.","lastModifiedDate":"2018-02-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" class PersonListViewCell extends ListCell\u003cPerson\u003e {","lastModifiedDate":"2018-02-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" protected void updateItem(Person person, boolean empty) {","lastModifiedDate":"2018-02-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" super.updateItem(person, empty);","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" if (empty || person \u003d\u003d null) {","lastModifiedDate":"2016-09-21"},{"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":"-"},"content":" setGraphic(new PersonCard(person, getIndex() + 1).getRoot());","lastModifiedDate":"2018-02-08"},{"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":{"KohGuanZeh":3,"-":46}},{"path":"src/main/java/seedu/findvisor/ui/ResultDisplay.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.ui;","lastModifiedDate":"2024-03-10"},{"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":{"KohGuanZeh":1,"-":27}},{"path":"src/main/java/seedu/findvisor/ui/StatusBarFooter.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.ui;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" * Creates a {@code StatusBarFooter} with the given {@code Path}.","lastModifiedDate":"2020-05-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public StatusBarFooter(Path saveLocation) {","lastModifiedDate":"2019-01-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2017-04-01"},{"lineNumber":25,"author":{"gitId":"-"},"content":" saveLocationStatus.setText(Paths.get(\".\").resolve(saveLocation).toString());","lastModifiedDate":"2018-12-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-01"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"KohGuanZeh":1,"-":27}},{"path":"src/main/java/seedu/findvisor/ui/Ui.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.ui;","lastModifiedDate":"2024-03-10"},{"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":{"KohGuanZeh":1,"-":12}},{"path":"src/main/java/seedu/findvisor/ui/UiManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.ui;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.MainApp;","lastModifiedDate":"2024-03-10"},{"lineNumber":11,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.LogsCenter;","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.commons.util.StringUtil;","lastModifiedDate":"2024-03-10"},{"lineNumber":13,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.Logic;","lastModifiedDate":"2024-03-10"},{"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":"Javiery3889"},"content":" private static final String ICON_APPLICATION \u003d \"/images/findvisor.png\";","lastModifiedDate":"2024-03-19"},{"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":{"KohGuanZeh":5,"Javiery3889":1,"-":82}},{"path":"src/main/java/seedu/findvisor/ui/UiPart.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.ui;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.MainApp;","lastModifiedDate":"2024-03-10"},{"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":{"KohGuanZeh":2,"-":86}},{"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":"Arixeyeion"},"content":" title\u003d\"FINDvisor\" minWidth\u003d\"450\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":17,"author":{"gitId":"Javiery3889"},"content":" \u003cImage url\u003d\"@/images/findvisor.png\" /\u003e","lastModifiedDate":"2024-03-19"},{"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":{"Arixeyeion":1,"Javiery3889":1,"-":58}},{"path":"src/test/java/seedu/findvisor/AppParametersTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor;","lastModifiedDate":"2024-03-10"},{"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":"2019-02-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-02-23"},{"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":"-"},"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":"-"},"content":"}","lastModifiedDate":"2018-04-21"}],"authorContributionMap":{"KohGuanZeh":1,"-":88}},{"path":"src/test/java/seedu/findvisor/commons/core/ConfigTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.commons.core;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","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":"2016-09-30"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class ConfigTest {","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 toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":" Config config \u003d new Config();","lastModifiedDate":"2019-02-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":" String expected \u003d Config.class.getCanonicalName() + \"{logLevel\u003d\" + config.getLogLevel()","lastModifiedDate":"2019-02-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":" + \", userPrefsFilePath\u003d\" + config.getUserPrefsFilePath() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":" assertEquals(expected, config.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-30"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public void equalsMethod() {","lastModifiedDate":"2016-09-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":" Config defaultConfig \u003d new Config();","lastModifiedDate":"2016-09-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" assertNotNull(defaultConfig);","lastModifiedDate":"2016-10-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertTrue(defaultConfig.equals(defaultConfig));","lastModifiedDate":"2016-09-30"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":27,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-30"}],"authorContributionMap":{"KohGuanZeh":1,"-":26}},{"path":"src/test/java/seedu/findvisor/commons/core/GuiSettingsTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.commons.core;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-02-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"public class GuiSettingsTest {","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings();","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":" String expected \u003d GuiSettings.class.getCanonicalName() + \"{windowWidth\u003d\" + guiSettings.getWindowWidth()","lastModifiedDate":"2019-02-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":" + \", windowHeight\u003d\" + guiSettings.getWindowHeight() + \", windowCoordinates\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":" + guiSettings.getWindowCoordinates() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":" assertEquals(expected, guiSettings.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-02-23"}],"authorContributionMap":{"KohGuanZeh":1,"-":15}},{"path":"src/test/java/seedu/findvisor/commons/core/VersionTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.commons.core;","lastModifiedDate":"2024-03-10"},{"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.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-10"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class VersionTest {","lastModifiedDate":"2016-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void versionParsing_acceptableVersionString_parsedVersionCorrectly() {","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" verifyVersionParsedCorrectly(\"V0.0.0ea\", 0, 0, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" verifyVersionParsedCorrectly(\"V3.10.2\", 3, 10, 2, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" verifyVersionParsedCorrectly(\"V100.100.100ea\", 100, 100, 100, true);","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":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public void versionParsing_wrongVersionString_throwIllegalArgumentException() {","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e Version.fromString(\"This is not a version string\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void versionConstructor_correctParameter_valueAsExpected() {","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" Version version \u003d new Version(19, 10, 20, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertEquals(19, version.getMajor());","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertEquals(10, version.getMinor());","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertEquals(20, version.getPatch());","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertEquals(true, version.isEarlyAccess());","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void versionToString_validVersion_correctStringRepresentation() {","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // boundary at 0","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" Version version \u003d new Version(0, 0, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertEquals(\"V0.0.0ea\", version.toString());","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" // normal values","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" version \u003d new Version(4, 10, 5, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertEquals(\"V4.10.5\", version.toString());","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // big numbers","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" version \u003d new Version(100, 100, 100, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertEquals(\"V100.100.100ea\", version.toString());","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":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void versionComparable_validVersion_compareToIsCorrect() {","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" Version one;","lastModifiedDate":"2017-09-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" Version another;","lastModifiedDate":"2017-09-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // Tests equality","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" one \u003d new Version(0, 0, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" another \u003d new Version(0, 0, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003d\u003d 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" one \u003d new Version(11, 12, 13, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" another \u003d new Version(11, 12, 13, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003d\u003d 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // Tests different patch","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" one \u003d new Version(0, 0, 5, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" another \u003d new Version(0, 0, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003e 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // Tests different minor","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" one \u003d new Version(0, 0, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" another \u003d new Version(0, 5, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003c 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // Tests different major","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" one \u003d new Version(10, 0, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":" another \u003d new Version(0, 0, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003e 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // Tests high major vs low minor","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":" one \u003d new Version(10, 0, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" another \u003d new Version(0, 1, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003e 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" // Tests high patch vs low minor","lastModifiedDate":"2016-08-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" one \u003d new Version(0, 0, 10, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":" another \u003d new Version(0, 1, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003c 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // Tests same major minor different patch","lastModifiedDate":"2016-08-08"},{"lineNumber":88,"author":{"gitId":"-"},"content":" one \u003d new Version(2, 15, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":" another \u003d new Version(2, 15, 5, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003c 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":92,"author":{"gitId":"-"},"content":" // Tests early access vs not early access on same version number","lastModifiedDate":"2016-08-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":" one \u003d new Version(2, 15, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":94,"author":{"gitId":"-"},"content":" another \u003d new Version(2, 15, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003c 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" // Tests early access lower version vs not early access higher version compare by version number first","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" one \u003d new Version(2, 15, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" another \u003d new Version(2, 15, 5, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003c 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" // Tests early access higher version vs not early access lower version compare by version number first","lastModifiedDate":"2016-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" one \u003d new Version(2, 15, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" another \u003d new Version(2, 15, 5, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003c 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void versionComparable_validVersion_hashCodeIsCorrect() {","lastModifiedDate":"2016-08-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" Version version \u003d new Version(100, 100, 100, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertEquals(100100100, version.hashCode());","lastModifiedDate":"2016-08-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":" version \u003d new Version(10, 10, 10, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertEquals(1010010010, version.hashCode());","lastModifiedDate":"2016-08-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public void versionComparable_validVersion_equalIsCorrect() {","lastModifiedDate":"2016-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" Version one;","lastModifiedDate":"2016-10-16"},{"lineNumber":120,"author":{"gitId":"-"},"content":" Version another;","lastModifiedDate":"2016-10-16"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" one \u003d new Version(0, 0, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" another \u003d new Version(0, 0, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertTrue(one.equals(another));","lastModifiedDate":"2016-08-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" one \u003d new Version(100, 191, 275, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" another \u003d new Version(100, 191, 275, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertTrue(one.equals(another));","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":" private void verifyVersionParsedCorrectly(String versionString,","lastModifiedDate":"2016-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":" int major, int minor, int patch, boolean isEarlyAccess) {","lastModifiedDate":"2016-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":" assertEquals(new Version(major, minor, patch, isEarlyAccess), Version.fromString(versionString));","lastModifiedDate":"2016-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"KohGuanZeh":2,"-":133}},{"path":"src/test/java/seedu/findvisor/commons/core/index/IndexTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.commons.core.index;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-10"},{"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":"-"},"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":"-"},"content":" assertTrue(fifthPersonIndex.equals(Index.fromOneBased(5)));","lastModifiedDate":"2017-05-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(fifthPersonIndex.equals(Index.fromZeroBased(4)));","lastModifiedDate":"2017-05-24"},{"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":"-"},"content":" assertTrue(fifthPersonIndex.equals(fifthPersonIndex));","lastModifiedDate":"2017-05-24"},{"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":"-"},"content":" assertFalse(fifthPersonIndex.equals(null));","lastModifiedDate":"2017-05-24"},{"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":"-"},"content":" assertFalse(fifthPersonIndex.equals(5.0f));","lastModifiedDate":"2017-05-24"},{"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":"-"},"content":" assertFalse(fifthPersonIndex.equals(Index.fromOneBased(1)));","lastModifiedDate":"2017-05-24"},{"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":{"KohGuanZeh":2,"-":65}},{"path":"src/test/java/seedu/findvisor/commons/util/AppUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.commons.util;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-10"},{"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":"Javiery3889"},"content":" assertNotNull(AppUtil.getImage(\"/images/findvisor.png\"));","lastModifiedDate":"2024-03-19"},{"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":{"KohGuanZeh":2,"Javiery3889":1,"-":33}},{"path":"src/test/java/seedu/findvisor/commons/util/CollectionUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.commons.util;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import static seedu.findvisor.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-10"},{"lineNumber":6,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" List\u003cObject\u003e containingNull \u003d Arrays.asList((Object) null);","lastModifiedDate":"2017-01-14"},{"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":"-"},"content":" assertNullPointerExceptionThrown(Arrays.asList((Object) null));","lastModifiedDate":"2017-05-19"},{"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":"-"},"content":" assertNullPointerExceptionNotThrown(Arrays.asList(new Object()));","lastModifiedDate":"2017-05-19"},{"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":"-"},"content":" List\u003cObject\u003e containingNull \u003d Arrays.asList((Object) null);","lastModifiedDate":"2017-01-14"},{"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":"2019-03-23"},{"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":"2019-03-23"},{"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":"2017-05-19"},{"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":"2017-05-19"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-19"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-22"}],"authorContributionMap":{"KohGuanZeh":3,"-":105}},{"path":"src/test/java/seedu/findvisor/commons/util/ConfigUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.commons.util;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.Config;","lastModifiedDate":"2024-03-10"},{"lineNumber":17,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-10"},{"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":"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":" @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-06-14"},{"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":"2019-03-23"},{"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":"2019-03-23"},{"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":{"KohGuanZeh":4,"-":112}},{"path":"src/test/java/seedu/findvisor/commons/util/DateTimeUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package seedu.findvisor.commons.util;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"public class DateTimeUtilTest {","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" public void parseDateTimeString_validString() {","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" assertEquals(LocalDateTime.of(2024, 1, 29, 14, 0), DateTimeUtil.parseDateTimeString(\"29-01-2024T14:00\"));","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" public void parseDateTimeString_invalidString_throwsDateTimeParseException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" assertThrows(DateTimeParseException.class, () -\u003e DateTimeUtil.parseDateTimeString(\"INVALID STRING\"));","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" public void dateTimeToInputString() {","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" assertEquals(\"29-01-2024T14:00\", DateTimeUtil.dateTimeToInputString(LocalDateTime.of(2024, 1, 29, 14, 0)));","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" public void dateTimeToString() {","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" assertEquals(\"29-01-2024 14:00\", DateTimeUtil.dateTimeToString(LocalDateTime.of(2024, 1, 29, 14, 0)));","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" public void isAfterCurrentDateTime() {","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":" assertTrue(DateTimeUtil.isAfterCurrentDateTime(LocalDateTime.now().plusMinutes(5)));","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"Dethada":39}},{"path":"src/test/java/seedu/findvisor/commons/util/FileUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.commons.util;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-10"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class FileUtilTest {","lastModifiedDate":"2016-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void isValidPath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":" // valid path","lastModifiedDate":"2018-04-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":" assertTrue(FileUtil.isValidPath(\"valid/file/path\"));","lastModifiedDate":"2018-04-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":" // invalid path","lastModifiedDate":"2018-04-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":" assertFalse(FileUtil.isValidPath(\"a\\0\"));","lastModifiedDate":"2018-04-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":" // null path -\u003e throws NullPointerException","lastModifiedDate":"2018-04-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e FileUtil.isValidPath(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"KohGuanZeh":2,"-":21}},{"path":"src/test/java/seedu/findvisor/commons/util/JsonUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.commons.util;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.testutil.SerializableTestClass;","lastModifiedDate":"2024-03-10"},{"lineNumber":11,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.testutil.TestUtil;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"KohGuanZeh":3,"-":42}},{"path":"src/test/java/seedu/findvisor/commons/util/StringUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.commons.util;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e StringUtil.containsWordIgnoreCase(\"typical sentence\", null));","lastModifiedDate":"2019-03-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void containsWordIgnoreCase_emptyWord_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, \"Word parameter cannot be empty\", ()","lastModifiedDate":"2019-03-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" -\u003e StringUtil.containsWordIgnoreCase(\"typical sentence\", \" \"));","lastModifiedDate":"2019-03-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void containsWordIgnoreCase_multipleWords_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, \"Word parameter should be a single word\", ()","lastModifiedDate":"2019-03-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" -\u003e StringUtil.containsWordIgnoreCase(\"typical sentence\", \"aaa BBB\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void containsWordIgnoreCase_nullSentence_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e StringUtil.containsWordIgnoreCase(null, \"abc\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Valid equivalence partitions for word:","lastModifiedDate":"2016-10-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * - any word","lastModifiedDate":"2016-10-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * - word containing symbols/numbers","lastModifiedDate":"2016-10-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * - word with leading/trailing spaces","lastModifiedDate":"2016-10-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Valid equivalence partitions for sentence:","lastModifiedDate":"2016-10-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * - empty string","lastModifiedDate":"2016-10-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * - one word","lastModifiedDate":"2016-10-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * - multiple words","lastModifiedDate":"2016-10-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * - sentence with extra spaces","lastModifiedDate":"2016-10-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Possible scenarios returning true:","lastModifiedDate":"2016-10-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * - matches first word in sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * - last word in sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - middle word in sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * - matches multiple words","lastModifiedDate":"2016-10-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * Possible scenarios returning false:","lastModifiedDate":"2016-10-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * - query word matches part of a sentence word","lastModifiedDate":"2016-10-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * - sentence word matches part of the query word","lastModifiedDate":"2016-10-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-13"},{"lineNumber":101,"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":102,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void containsWordIgnoreCase_validInputs_correctResult() {","lastModifiedDate":"2016-10-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" // Empty sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.containsWordIgnoreCase(\"\", \"abc\")); // Boundary case","lastModifiedDate":"2016-10-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.containsWordIgnoreCase(\" \", \"123\"));","lastModifiedDate":"2016-10-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" // Matches a partial word only","lastModifiedDate":"2016-10-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.containsWordIgnoreCase(\"aaa bbb ccc\", \"bb\")); // Sentence word bigger than query word","lastModifiedDate":"2016-10-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.containsWordIgnoreCase(\"aaa bbb ccc\", \"bbbb\")); // Query word bigger than sentence word","lastModifiedDate":"2016-10-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" // Matches word in the sentence, different upper/lower case letters","lastModifiedDate":"2016-10-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\"aaa bBb ccc\", \"Bbb\")); // First word (boundary case)","lastModifiedDate":"2016-10-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\"aaa bBb ccc@1\", \"CCc@1\")); // Last word (boundary case)","lastModifiedDate":"2016-10-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\" AAA bBb ccc \", \"aaa\")); // Sentence has extra spaces","lastModifiedDate":"2016-10-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\"Aaa\", \"aaa\")); // Only one word in sentence (boundary case)","lastModifiedDate":"2016-10-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\"aaa bbb ccc\", \" ccc \")); // Leading/trailing spaces","lastModifiedDate":"2016-10-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":" // Matches multiple words in sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\"AAA bBb ccc bbb\", \"bbB\"));","lastModifiedDate":"2016-10-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":126,"author":{"gitId":"Javiery3889"},"content":" //---------------- Tests for containsIgnoreCase --------------------------------------","lastModifiedDate":"2024-03-15"},{"lineNumber":127,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":128,"author":{"gitId":"Javiery3889"},"content":" /*","lastModifiedDate":"2024-03-14"},{"lineNumber":129,"author":{"gitId":"Javiery3889"},"content":" * Invalid equivalence partitions for substring: null, empty","lastModifiedDate":"2024-03-14"},{"lineNumber":130,"author":{"gitId":"Javiery3889"},"content":" * Invalid equivalence partitions for sentence: null","lastModifiedDate":"2024-03-14"},{"lineNumber":131,"author":{"gitId":"Javiery3889"},"content":" * The three test cases below test one invalid input at a time.","lastModifiedDate":"2024-03-14"},{"lineNumber":132,"author":{"gitId":"Javiery3889"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":133,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":134,"author":{"gitId":"Javiery3889"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":135,"author":{"gitId":"Javiery3889"},"content":" public void containsIgnoreCase_nullSubString_throwsNullPointerException() {","lastModifiedDate":"2024-03-15"},{"lineNumber":136,"author":{"gitId":"Javiery3889"},"content":" assertThrows(NullPointerException.class, () -\u003e StringUtil.containsIgnoreCase(","lastModifiedDate":"2024-03-15"},{"lineNumber":137,"author":{"gitId":"Javiery3889"},"content":" \"typical sentence\", null));","lastModifiedDate":"2024-03-14"},{"lineNumber":138,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":139,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":140,"author":{"gitId":"Javiery3889"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":141,"author":{"gitId":"Javiery3889"},"content":" public void containsIgnoreCase_emptySubString_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-15"},{"lineNumber":142,"author":{"gitId":"Javiery3889"},"content":" assertThrows(IllegalArgumentException.class, \"subString parameter cannot be empty\", ()","lastModifiedDate":"2024-03-14"},{"lineNumber":143,"author":{"gitId":"Javiery3889"},"content":" -\u003e StringUtil.containsIgnoreCase(\"typical sentence\", \" \"));","lastModifiedDate":"2024-03-15"},{"lineNumber":144,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":145,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":146,"author":{"gitId":"Javiery3889"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":147,"author":{"gitId":"Javiery3889"},"content":" public void containsIgnoreCase_nullSentence_throwsNullPointerException() {","lastModifiedDate":"2024-03-15"},{"lineNumber":148,"author":{"gitId":"Javiery3889"},"content":" assertThrows(NullPointerException.class, () -\u003e StringUtil.containsIgnoreCase(null, \"abc\"));","lastModifiedDate":"2024-03-15"},{"lineNumber":149,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":150,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":151,"author":{"gitId":"Javiery3889"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":152,"author":{"gitId":"Javiery3889"},"content":" public void containsIgnoreCase_validInputs_correctResult() {","lastModifiedDate":"2024-03-15"},{"lineNumber":153,"author":{"gitId":"Javiery3889"},"content":" // Empty sentence","lastModifiedDate":"2024-03-14"},{"lineNumber":154,"author":{"gitId":"Javiery3889"},"content":" assertFalse(StringUtil.containsIgnoreCase(\"\", \"abc\")); // Boundary case","lastModifiedDate":"2024-03-15"},{"lineNumber":155,"author":{"gitId":"Javiery3889"},"content":" assertFalse(StringUtil.containsIgnoreCase(\" \", \"123\"));","lastModifiedDate":"2024-03-15"},{"lineNumber":156,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":157,"author":{"gitId":"Javiery3889"},"content":" // Sentence does not fully contain substring","lastModifiedDate":"2024-03-15"},{"lineNumber":158,"author":{"gitId":"Javiery3889"},"content":" assertFalse(StringUtil.containsIgnoreCase(\"aaa bbb ccc\", \"bbbb\"));","lastModifiedDate":"2024-03-15"},{"lineNumber":159,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":160,"author":{"gitId":"Javiery3889"},"content":" // Sentence contains substring, but does not start with substring","lastModifiedDate":"2024-03-14"},{"lineNumber":161,"author":{"gitId":"Javiery3889"},"content":" assertTrue(StringUtil.containsIgnoreCase(\"aaa bbb ccc\", \"bb\"));","lastModifiedDate":"2024-03-15"},{"lineNumber":162,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":163,"author":{"gitId":"Javiery3889"},"content":" // Matches substring starting in the sentence, different upper/lower case letters","lastModifiedDate":"2024-03-14"},{"lineNumber":164,"author":{"gitId":"Javiery3889"},"content":" assertTrue(StringUtil.containsIgnoreCase(\"aaa bBb ccc\", \"aaa\")); // First word (boundary case)","lastModifiedDate":"2024-03-15"},{"lineNumber":165,"author":{"gitId":"Javiery3889"},"content":" assertTrue(StringUtil.containsIgnoreCase(\"Aaa\", \"aaa\")); // Only one word in sentence (boundary case)","lastModifiedDate":"2024-03-15"},{"lineNumber":166,"author":{"gitId":"Javiery3889"},"content":" assertTrue(StringUtil.containsIgnoreCase(\"aaa bbb ccc\", \" aaa \")); // Leading/trailing spaces","lastModifiedDate":"2024-03-15"},{"lineNumber":167,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":168,"author":{"gitId":"Javiery3889"},"content":" // Sentence matches multiple words in substring","lastModifiedDate":"2024-03-14"},{"lineNumber":169,"author":{"gitId":"Javiery3889"},"content":" assertTrue(StringUtil.containsIgnoreCase(\"AAA bBb ccc bbb\", \"AAA bBb\"));","lastModifiedDate":"2024-03-15"},{"lineNumber":170,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":171,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":172,"author":{"gitId":"-"},"content":" //---------------- Tests for getDetails --------------------------------------","lastModifiedDate":"2016-10-13"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":174,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-13"},{"lineNumber":175,"author":{"gitId":"-"},"content":" * Equivalence Partitions: null, valid throwable object","lastModifiedDate":"2016-10-13"},{"lineNumber":176,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-13"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":178,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-30"},{"lineNumber":179,"author":{"gitId":"-"},"content":" public void getDetails_exceptionGiven() {","lastModifiedDate":"2016-09-30"},{"lineNumber":180,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.getDetails(new FileNotFoundException(\"file not found\"))","lastModifiedDate":"2019-03-14"},{"lineNumber":181,"author":{"gitId":"-"},"content":" .contains(\"java.io.FileNotFoundException: file not found\"));","lastModifiedDate":"2019-03-14"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":184,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-30"},{"lineNumber":185,"author":{"gitId":"-"},"content":" public void getDetails_nullGiven_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":186,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e StringUtil.getDetails(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":189,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"KohGuanZeh":2,"Javiery3889":46,"-":141}},{"path":"src/test/java/seedu/findvisor/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2024-03-10"},{"lineNumber":5,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2024-03-10"},{"lineNumber":6,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-03-10"},{"lineNumber":7,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-03-10"},{"lineNumber":10,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-10"},{"lineNumber":11,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.TypicalPersons.AMY;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.AddCommand;","lastModifiedDate":"2024-03-10"},{"lineNumber":22,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.CommandResult;","lastModifiedDate":"2024-03-10"},{"lineNumber":23,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.ListCommand;","lastModifiedDate":"2024-03-10"},{"lineNumber":24,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-10"},{"lineNumber":25,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-10"},{"lineNumber":26,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.Model;","lastModifiedDate":"2024-03-10"},{"lineNumber":27,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.ModelManager;","lastModifiedDate":"2024-03-10"},{"lineNumber":28,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-10"},{"lineNumber":29,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.UserPrefs;","lastModifiedDate":"2024-03-10"},{"lineNumber":30,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Person;","lastModifiedDate":"2024-03-10"},{"lineNumber":31,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.storage.JsonAddressBookStorage;","lastModifiedDate":"2024-03-10"},{"lineNumber":32,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.storage.JsonUserPrefsStorage;","lastModifiedDate":"2024-03-10"},{"lineNumber":33,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.storage.StorageManager;","lastModifiedDate":"2024-03-10"},{"lineNumber":34,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.testutil.PersonBuilder;","lastModifiedDate":"2024-03-10"},{"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":"-"},"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":"-"},"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":{"KohGuanZeh":23,"-":152}},{"path":"src/test/java/seedu/findvisor/logic/commands/AddCommandIntegrationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.commands;","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-10"},{"lineNumber":4,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-10"},{"lineNumber":5,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.logic.Messages;","lastModifiedDate":"2024-03-10"},{"lineNumber":11,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.Model;","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.ModelManager;","lastModifiedDate":"2024-03-10"},{"lineNumber":13,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.UserPrefs;","lastModifiedDate":"2024-03-10"},{"lineNumber":14,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Person;","lastModifiedDate":"2024-03-10"},{"lineNumber":15,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.testutil.PersonBuilder;","lastModifiedDate":"2024-03-10"},{"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":{"KohGuanZeh":10,"-":38}},{"path":"src/test/java/seedu/findvisor/logic/commands/AddCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.commands;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.GuiSettings;","lastModifiedDate":"2024-03-10"},{"lineNumber":19,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.Messages;","lastModifiedDate":"2024-03-10"},{"lineNumber":20,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-10"},{"lineNumber":21,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.AddressBook;","lastModifiedDate":"2024-03-10"},{"lineNumber":22,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.Model;","lastModifiedDate":"2024-03-10"},{"lineNumber":23,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-10"},{"lineNumber":24,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-10"},{"lineNumber":25,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Person;","lastModifiedDate":"2024-03-10"},{"lineNumber":26,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.testutil.PersonBuilder;","lastModifiedDate":"2024-03-10"},{"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":"-"},"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":"-"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2017-06-22"},{"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":"2018-08-06"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"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":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07"},{"lineNumber":164,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":165,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07"},{"lineNumber":166,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":168,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":169,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":170,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":173,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":174,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":175,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":176,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":180,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":181,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12"},{"lineNumber":182,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":183,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12"},{"lineNumber":184,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":186,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07"},{"lineNumber":187,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":188,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":189,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":192,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":193,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08"},{"lineNumber":194,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":195,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":198,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":199,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04"},{"lineNumber":200,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04"},{"lineNumber":201,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":202,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":204,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12"}],"authorContributionMap":{"KohGuanZeh":12,"-":192}},{"path":"src/test/java/seedu/findvisor/logic/commands/ClearCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.commands;","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":3,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-10"},{"lineNumber":4,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.model.AddressBook;","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.Model;","lastModifiedDate":"2024-03-10"},{"lineNumber":10,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.ModelManager;","lastModifiedDate":"2024-03-10"},{"lineNumber":11,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.UserPrefs;","lastModifiedDate":"2024-03-10"},{"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":{"KohGuanZeh":7,"-":25}},{"path":"src/test/java/seedu/findvisor/logic/commands/CommandResultTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.commands;","lastModifiedDate":"2024-03-10"},{"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":"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":"2018-12-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class CommandResultTest {","lastModifiedDate":"2018-12-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-12-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new CommandResult(\"feedback\");","lastModifiedDate":"2018-12-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-12-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":" assertTrue(commandResult.equals(new CommandResult(\"feedback\")));","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":" assertTrue(commandResult.equals(new CommandResult(\"feedback\", false, false)));","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertTrue(commandResult.equals(commandResult));","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(null));","lastModifiedDate":"2018-12-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(0.5f));","lastModifiedDate":"2018-12-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // different feedbackToUser value -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(new CommandResult(\"different\")));","lastModifiedDate":"2018-12-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // different showHelp value -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(new CommandResult(\"feedback\", true, false)));","lastModifiedDate":"2018-12-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":" // different exit value -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(new CommandResult(\"feedback\", false, true)));","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void hashcode() {","lastModifiedDate":"2018-12-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new CommandResult(\"feedback\");","lastModifiedDate":"2018-12-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" // same values -\u003e returns same hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(commandResult.hashCode(), new CommandResult(\"feedback\").hashCode());","lastModifiedDate":"2018-12-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // different feedbackToUser value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(\"different\").hashCode());","lastModifiedDate":"2018-12-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // different showHelp value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(\"feedback\", true, false).hashCode());","lastModifiedDate":"2018-12-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different exit value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(\"feedback\", false, true).hashCode());","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new CommandResult(\"feedback\");","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" String expected \u003d CommandResult.class.getCanonicalName() + \"{feedbackToUser\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" + commandResult.getFeedbackToUser() + \", showHelp\u003d\" + commandResult.isShowHelp()","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" + \", exit\u003d\" + commandResult.isExit() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertEquals(expected, commandResult.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-12-09"}],"authorContributionMap":{"KohGuanZeh":1,"-":62}},{"path":"src/test/java/seedu/findvisor/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.commands;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-10"},{"lineNumber":6,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-10"},{"lineNumber":7,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-10"},{"lineNumber":10,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-10"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.index.Index;","lastModifiedDate":"2024-03-10"},{"lineNumber":17,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-10"},{"lineNumber":18,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.AddressBook;","lastModifiedDate":"2024-03-10"},{"lineNumber":19,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.Model;","lastModifiedDate":"2024-03-10"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.model.person.Meeting;","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Person;","lastModifiedDate":"2024-03-10"},{"lineNumber":22,"author":{"gitId":"Javiery3889"},"content":"import seedu.findvisor.model.person.PhoneContainsKeywordPredicate;","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2024-03-10"},{"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":"Arixeyeion"},"content":" public static final String VALID_PHONE_AMY \u003d \"91234567\";","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"Arixeyeion"},"content":" public static final String VALID_PHONE_BOB \u003d \"81234567\";","lastModifiedDate":"2024-03-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":52,"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":53,"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":54,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05"},{"lineNumber":56,"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":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":73,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"Dethada"},"content":" * Creates a valid meeting that is in the future","lastModifiedDate":"2024-03-11"},{"lineNumber":75,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":76,"author":{"gitId":"Dethada"},"content":" public static Meeting createValidMeeting() {","lastModifiedDate":"2024-03-11"},{"lineNumber":77,"author":{"gitId":"Dethada"},"content":" return new Meeting(LocalDateTime.now().plusDays(1), LocalDateTime.now().plusDays(1).plusHours(1));","lastModifiedDate":"2024-03-11"},{"lineNumber":78,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":79,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":80,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":81,"author":{"gitId":"Dethada"},"content":" * Creates a meeting that is in the past","lastModifiedDate":"2024-03-11"},{"lineNumber":82,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":83,"author":{"gitId":"Dethada"},"content":" public static Meeting createOldMeeting() {","lastModifiedDate":"2024-03-11"},{"lineNumber":84,"author":{"gitId":"Dethada"},"content":" return new Meeting(LocalDateTime.now().minusDays(1), LocalDateTime.now().minusDays(1).plusHours(1));","lastModifiedDate":"2024-03-11"},{"lineNumber":85,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":86,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25"},{"lineNumber":93,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":94,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":95,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":98,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":99,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":103,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25"},{"lineNumber":108,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":109,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":113,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":116,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":117,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25"},{"lineNumber":118,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25"},{"lineNumber":120,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":121,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":122,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":123,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03"},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":129,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":130,"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":131,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31"},{"lineNumber":132,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31"},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":136,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31"},{"lineNumber":137,"author":{"gitId":"Javiery3889"},"content":" // Use person\u0027s phone to identify","lastModifiedDate":"2024-03-14"},{"lineNumber":138,"author":{"gitId":"Javiery3889"},"content":" String phone \u003d person.getPhone().value;","lastModifiedDate":"2024-03-14"},{"lineNumber":139,"author":{"gitId":"Javiery3889"},"content":" model.updateFilteredPersonList(new PhoneContainsKeywordPredicate(phone));","lastModifiedDate":"2024-03-15"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08"},{"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":{"Arixeyeion":2,"KohGuanZeh":13,"Javiery3889":4,"Dethada":16,"-":109}},{"path":"src/test/java/seedu/findvisor/logic/commands/DeleteCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.commands;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-10"},{"lineNumber":7,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-10"},{"lineNumber":10,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-10"},{"lineNumber":11,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.index.Index;","lastModifiedDate":"2024-03-10"},{"lineNumber":16,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.Messages;","lastModifiedDate":"2024-03-10"},{"lineNumber":17,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.Model;","lastModifiedDate":"2024-03-10"},{"lineNumber":18,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.ModelManager;","lastModifiedDate":"2024-03-10"},{"lineNumber":19,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.UserPrefs;","lastModifiedDate":"2024-03-10"},{"lineNumber":20,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Person;","lastModifiedDate":"2024-03-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":{"KohGuanZeh":13,"-":107}},{"path":"src/test/java/seedu/findvisor/logic/commands/EditCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.commands;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2024-03-10"},{"lineNumber":7,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-10"},{"lineNumber":10,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-03-10"},{"lineNumber":11,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-10"},{"lineNumber":13,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-03-10"},{"lineNumber":14,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-10"},{"lineNumber":15,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-10"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-10"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":21,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.index.Index;","lastModifiedDate":"2024-03-10"},{"lineNumber":22,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.Messages;","lastModifiedDate":"2024-03-10"},{"lineNumber":23,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-10"},{"lineNumber":24,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.AddressBook;","lastModifiedDate":"2024-03-10"},{"lineNumber":25,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.Model;","lastModifiedDate":"2024-03-10"},{"lineNumber":26,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.ModelManager;","lastModifiedDate":"2024-03-10"},{"lineNumber":27,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.UserPrefs;","lastModifiedDate":"2024-03-10"},{"lineNumber":28,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Person;","lastModifiedDate":"2024-03-10"},{"lineNumber":29,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2024-03-10"},{"lineNumber":30,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.testutil.PersonBuilder;","lastModifiedDate":"2024-03-10"},{"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":"-"},"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":"Dethada"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":151,"author":{"gitId":"Dethada"},"content":" * Ensure that the meeting details are copied over when a person is edited.","lastModifiedDate":"2024-03-19"},{"lineNumber":152,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":153,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":154,"author":{"gitId":"Dethada"},"content":" public void execute_copyMeetingDetails_success() {","lastModifiedDate":"2024-03-19"},{"lineNumber":155,"author":{"gitId":"Dethada"},"content":" // The person at the third index of the unfiltered list has a non-empty meeting object","lastModifiedDate":"2024-03-19"},{"lineNumber":156,"author":{"gitId":"Dethada"},"content":" Person personWithMeeting \u003d model.getFilteredPersonList().get(INDEX_THIRD_PERSON.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":157,"author":{"gitId":"Dethada"},"content":" PersonBuilder personInList \u003d new PersonBuilder(personWithMeeting);","lastModifiedDate":"2024-03-19"},{"lineNumber":158,"author":{"gitId":"Dethada"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":159,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":160,"author":{"gitId":"Dethada"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":161,"author":{"gitId":"Dethada"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_THIRD_PERSON, descriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":162,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":163,"author":{"gitId":"Dethada"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2024-03-19"},{"lineNumber":164,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":165,"author":{"gitId":"Dethada"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":166,"author":{"gitId":"Dethada"},"content":" expectedModel.setPerson(personWithMeeting, editedPerson);","lastModifiedDate":"2024-03-19"},{"lineNumber":167,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":168,"author":{"gitId":"Dethada"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-19"},{"lineNumber":169,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":170,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":171,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2018-08-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":180,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":181,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":183,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":184,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":186,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":187,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":189,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":190,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2017-05-25"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":192,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":193,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2017-05-25"},{"lineNumber":194,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":196,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2019-02-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08"}],"authorContributionMap":{"KohGuanZeh":22,"Dethada":22,"-":162}},{"path":"src/test/java/seedu/findvisor/logic/commands/EditPersonDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.commands;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2024-03-10"},{"lineNumber":7,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-10"},{"lineNumber":10,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-10"},{"lineNumber":11,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-10"},{"lineNumber":17,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" + editPersonDescriptor.getTags().orElse(null) + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"KohGuanZeh":10,"-":61}},{"path":"src/test/java/seedu/findvisor/logic/commands/ExitCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.commands;","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":3,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-10"},{"lineNumber":4,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.ExitCommand.MESSAGE_EXIT_ACKNOWLEDGEMENT;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.model.Model;","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.ModelManager;","lastModifiedDate":"2024-03-10"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class ExitCommandTest {","lastModifiedDate":"2017-06-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-12-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public void execute_exit_success() {","lastModifiedDate":"2017-06-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, false, true);","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ExitCommand(), model, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08"}],"authorContributionMap":{"KohGuanZeh":5,"-":15}},{"path":"src/test/java/seedu/findvisor/logic/commands/FindCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.commands;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.Messages.MESSAGE_PERSONS_LISTED_OVERVIEW;","lastModifiedDate":"2024-03-10"},{"lineNumber":7,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-10"},{"lineNumber":16,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.TypicalPersons.CARL;","lastModifiedDate":"2024-03-10"},{"lineNumber":19,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.testutil.TypicalPersons.DANIEL;","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-10"},{"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":"Javiery3889"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-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":"KohGuanZeh"},"content":"import seedu.findvisor.model.Model;","lastModifiedDate":"2024-03-10"},{"lineNumber":29,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.ModelManager;","lastModifiedDate":"2024-03-10"},{"lineNumber":30,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.UserPrefs;","lastModifiedDate":"2024-03-10"},{"lineNumber":31,"author":{"gitId":"Javiery3889"},"content":"import seedu.findvisor.model.person.EmailContainsKeywordPredicate;","lastModifiedDate":"2024-03-15"},{"lineNumber":32,"author":{"gitId":"Javiery3889"},"content":"import seedu.findvisor.model.person.NameContainsKeywordPredicate;","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"Javiery3889"},"content":"import seedu.findvisor.model.person.Person;","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"Javiery3889"},"content":"import seedu.findvisor.model.person.PhoneContainsKeywordPredicate;","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"Javiery3889"},"content":"import seedu.findvisor.model.tag.TagsContainsKeywordsPredicate;","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code FindCommand}.","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":"public class FindCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"Javiery3889"},"content":" NameContainsKeywordPredicate firstNamePredicate \u003d","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"Javiery3889"},"content":" new NameContainsKeywordPredicate(VALID_NAME_AMY);","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"Javiery3889"},"content":" NameContainsKeywordPredicate secondNamePredicate \u003d","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"Javiery3889"},"content":" new NameContainsKeywordPredicate(VALID_NAME_BOB);","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"Javiery3889"},"content":" EmailContainsKeywordPredicate firstEmailPredicate \u003d","lastModifiedDate":"2024-03-15"},{"lineNumber":52,"author":{"gitId":"Javiery3889"},"content":" new EmailContainsKeywordPredicate(VALID_EMAIL_AMY);","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"Javiery3889"},"content":" EmailContainsKeywordPredicate secondEmailPredicate \u003d","lastModifiedDate":"2024-03-15"},{"lineNumber":54,"author":{"gitId":"Javiery3889"},"content":" new EmailContainsKeywordPredicate(VALID_EMAIL_BOB);","lastModifiedDate":"2024-03-15"},{"lineNumber":55,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"Javiery3889"},"content":" PhoneContainsKeywordPredicate firstPhonePredicate \u003d","lastModifiedDate":"2024-03-15"},{"lineNumber":57,"author":{"gitId":"Javiery3889"},"content":" new PhoneContainsKeywordPredicate(VALID_PHONE_AMY);","lastModifiedDate":"2024-03-15"},{"lineNumber":58,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"Javiery3889"},"content":" PhoneContainsKeywordPredicate secondPhonePredicate \u003d","lastModifiedDate":"2024-03-15"},{"lineNumber":60,"author":{"gitId":"Javiery3889"},"content":" new PhoneContainsKeywordPredicate(VALID_PHONE_BOB);","lastModifiedDate":"2024-03-15"},{"lineNumber":61,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":62,"author":{"gitId":"Javiery3889"},"content":" TagsContainsKeywordsPredicate firstTagsPredicate \u003d","lastModifiedDate":"2024-03-14"},{"lineNumber":63,"author":{"gitId":"Javiery3889"},"content":" new TagsContainsKeywordsPredicate(Arrays.asList(VALID_TAG_HUSBAND));","lastModifiedDate":"2024-03-14"},{"lineNumber":64,"author":{"gitId":"Javiery3889"},"content":" TagsContainsKeywordsPredicate secondTagsPredicate \u003d","lastModifiedDate":"2024-03-14"},{"lineNumber":65,"author":{"gitId":"Javiery3889"},"content":" new TagsContainsKeywordsPredicate(Arrays.asList(VALID_TAG_FRIEND));","lastModifiedDate":"2024-03-14"},{"lineNumber":66,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":67,"author":{"gitId":"Javiery3889"},"content":" testCommandEquality(firstNamePredicate, secondNamePredicate);","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"Javiery3889"},"content":" testCommandEquality(firstEmailPredicate, secondEmailPredicate);","lastModifiedDate":"2024-03-14"},{"lineNumber":69,"author":{"gitId":"Javiery3889"},"content":" testCommandEquality(firstPhonePredicate, secondPhonePredicate);","lastModifiedDate":"2024-03-14"},{"lineNumber":70,"author":{"gitId":"Javiery3889"},"content":" testCommandEquality(firstTagsPredicate, secondTagsPredicate);","lastModifiedDate":"2024-03-14"},{"lineNumber":71,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":73,"author":{"gitId":"Javiery3889"},"content":" // Helper method to test equality of FindCommand objects","lastModifiedDate":"2024-03-14"},{"lineNumber":74,"author":{"gitId":"Javiery3889"},"content":" private void testCommandEquality(Predicate\u003cPerson\u003e firstPredicate, Predicate\u003cPerson\u003e secondPredicate) {","lastModifiedDate":"2024-03-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":" FindCommand findFirstCommand \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":" FindCommand findSecondCommand \u003d new FindCommand(secondPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" FindCommand findFirstCommandCopy \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"Javiery3889"},"content":" // different name -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":95,"author":{"gitId":"Javiery3889"},"content":" public void execute_nonExistentName_noPersonFound() {","lastModifiedDate":"2024-03-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2017-06-12"},{"lineNumber":97,"author":{"gitId":"Javiery3889"},"content":" NameContainsKeywordPredicate namePredicate \u003d new NameContainsKeywordPredicate(VALID_NAME_AMY);","lastModifiedDate":"2024-03-14"},{"lineNumber":98,"author":{"gitId":"Javiery3889"},"content":" FindCommand command \u003d new FindCommand(namePredicate);","lastModifiedDate":"2024-03-14"},{"lineNumber":99,"author":{"gitId":"Javiery3889"},"content":" expectedModel.updateFilteredPersonList(namePredicate);","lastModifiedDate":"2024-03-14"},{"lineNumber":100,"author":{"gitId":"Javiery3889"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-14"},{"lineNumber":101,"author":{"gitId":"Javiery3889"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2024-03-14"},{"lineNumber":102,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":103,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":104,"author":{"gitId":"Javiery3889"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":105,"author":{"gitId":"Javiery3889"},"content":" public void execute_nonExistentPhone_noPersonFound() {","lastModifiedDate":"2024-03-14"},{"lineNumber":106,"author":{"gitId":"Javiery3889"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2024-03-14"},{"lineNumber":107,"author":{"gitId":"Javiery3889"},"content":" PhoneContainsKeywordPredicate phonePredicate \u003d new PhoneContainsKeywordPredicate(VALID_PHONE_AMY);","lastModifiedDate":"2024-03-15"},{"lineNumber":108,"author":{"gitId":"Javiery3889"},"content":" Command command \u003d new FindCommand(phonePredicate);","lastModifiedDate":"2024-03-14"},{"lineNumber":109,"author":{"gitId":"Javiery3889"},"content":" expectedModel.updateFilteredPersonList(phonePredicate);","lastModifiedDate":"2024-03-14"},{"lineNumber":110,"author":{"gitId":"Javiery3889"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-14"},{"lineNumber":111,"author":{"gitId":"Javiery3889"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2024-03-14"},{"lineNumber":112,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":113,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":114,"author":{"gitId":"Javiery3889"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":115,"author":{"gitId":"Javiery3889"},"content":" public void execute_nonExistentEmail_noPersonFound() {","lastModifiedDate":"2024-03-14"},{"lineNumber":116,"author":{"gitId":"Javiery3889"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2024-03-14"},{"lineNumber":117,"author":{"gitId":"Javiery3889"},"content":" EmailContainsKeywordPredicate predicate \u003d new EmailContainsKeywordPredicate(VALID_EMAIL_AMY);","lastModifiedDate":"2024-03-15"},{"lineNumber":118,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":124,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":125,"author":{"gitId":"Javiery3889"},"content":" public void execute_nonExistentTag_noPersonFound() {","lastModifiedDate":"2024-03-14"},{"lineNumber":126,"author":{"gitId":"Javiery3889"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2024-03-14"},{"lineNumber":127,"author":{"gitId":"Javiery3889"},"content":" TagsContainsKeywordsPredicate tagsPredicate \u003d new TagsContainsKeywordsPredicate(","lastModifiedDate":"2024-03-14"},{"lineNumber":128,"author":{"gitId":"Javiery3889"},"content":" Arrays.asList(new String[]{VALID_TAG_HUSBAND}));","lastModifiedDate":"2024-03-14"},{"lineNumber":129,"author":{"gitId":"Javiery3889"},"content":" Command command \u003d new FindCommand(tagsPredicate);","lastModifiedDate":"2024-03-14"},{"lineNumber":130,"author":{"gitId":"Javiery3889"},"content":" expectedModel.updateFilteredPersonList(tagsPredicate);","lastModifiedDate":"2024-03-14"},{"lineNumber":131,"author":{"gitId":"Javiery3889"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-14"},{"lineNumber":132,"author":{"gitId":"Javiery3889"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2024-03-14"},{"lineNumber":133,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":134,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":135,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":136,"author":{"gitId":"Javiery3889"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":137,"author":{"gitId":"Javiery3889"},"content":" public void execute_existingName_personFound() {","lastModifiedDate":"2024-03-14"},{"lineNumber":138,"author":{"gitId":"Javiery3889"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 1);","lastModifiedDate":"2024-03-14"},{"lineNumber":139,"author":{"gitId":"Javiery3889"},"content":" NameContainsKeywordPredicate predicate \u003d new NameContainsKeywordPredicate(ALICE.getName().fullName);","lastModifiedDate":"2024-03-14"},{"lineNumber":140,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":143,"author":{"gitId":"Javiery3889"},"content":" assertEquals(Arrays.asList(ALICE), model.getFilteredPersonList());","lastModifiedDate":"2024-03-14"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":146,"author":{"gitId":"Javiery3889"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":147,"author":{"gitId":"Javiery3889"},"content":" public void execute_existingPhone_personFound() {","lastModifiedDate":"2024-03-14"},{"lineNumber":148,"author":{"gitId":"Javiery3889"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 1);","lastModifiedDate":"2024-03-14"},{"lineNumber":149,"author":{"gitId":"Javiery3889"},"content":" PhoneContainsKeywordPredicate predicate \u003d new PhoneContainsKeywordPredicate(BENSON.getPhone().value);","lastModifiedDate":"2024-03-15"},{"lineNumber":150,"author":{"gitId":"Javiery3889"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2024-03-14"},{"lineNumber":151,"author":{"gitId":"Javiery3889"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-14"},{"lineNumber":152,"author":{"gitId":"Javiery3889"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-14"},{"lineNumber":153,"author":{"gitId":"Javiery3889"},"content":" assertEquals(Arrays.asList(BENSON), model.getFilteredPersonList());","lastModifiedDate":"2024-03-14"},{"lineNumber":154,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":155,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":156,"author":{"gitId":"Javiery3889"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":157,"author":{"gitId":"Javiery3889"},"content":" public void execute_existingEmail_personFound() {","lastModifiedDate":"2024-03-14"},{"lineNumber":158,"author":{"gitId":"Javiery3889"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 1);","lastModifiedDate":"2024-03-14"},{"lineNumber":159,"author":{"gitId":"Javiery3889"},"content":" EmailContainsKeywordPredicate predicate \u003d new EmailContainsKeywordPredicate(CARL.getEmail().value);","lastModifiedDate":"2024-03-15"},{"lineNumber":160,"author":{"gitId":"Javiery3889"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2024-03-14"},{"lineNumber":161,"author":{"gitId":"Javiery3889"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-14"},{"lineNumber":162,"author":{"gitId":"Javiery3889"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-14"},{"lineNumber":163,"author":{"gitId":"Javiery3889"},"content":" assertEquals(Arrays.asList(CARL), model.getFilteredPersonList());","lastModifiedDate":"2024-03-14"},{"lineNumber":164,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":165,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":166,"author":{"gitId":"Javiery3889"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":167,"author":{"gitId":"Javiery3889"},"content":" public void execute_existingTags_personFound() {","lastModifiedDate":"2024-03-14"},{"lineNumber":168,"author":{"gitId":"Javiery3889"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2024-03-14"},{"lineNumber":169,"author":{"gitId":"Javiery3889"},"content":" TagsContainsKeywordsPredicate predicate \u003d new TagsContainsKeywordsPredicate(","lastModifiedDate":"2024-03-14"},{"lineNumber":170,"author":{"gitId":"Javiery3889"},"content":" Arrays.asList(new String[]{\"friends\"}));","lastModifiedDate":"2024-03-14"},{"lineNumber":171,"author":{"gitId":"Javiery3889"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2024-03-14"},{"lineNumber":172,"author":{"gitId":"Javiery3889"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-14"},{"lineNumber":173,"author":{"gitId":"Javiery3889"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-14"},{"lineNumber":174,"author":{"gitId":"Javiery3889"},"content":" assertEquals(Arrays.asList(ALICE, BENSON, DANIEL), model.getFilteredPersonList());","lastModifiedDate":"2024-03-14"},{"lineNumber":175,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":176,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":177,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":179,"author":{"gitId":"Javiery3889"},"content":" NameContainsKeywordPredicate predicate \u003d new NameContainsKeywordPredicate(\"keyword\");","lastModifiedDate":"2024-03-14"},{"lineNumber":180,"author":{"gitId":"-"},"content":" FindCommand findCommand \u003d new FindCommand(predicate);","lastModifiedDate":"2019-02-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"KohGuanZeh":8,"Javiery3889":116,"-":60}},{"path":"src/test/java/seedu/findvisor/logic/commands/HelpCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.commands;","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":3,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-10"},{"lineNumber":4,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.HelpCommand.SHOWING_HELP_MESSAGE;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.model.Model;","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.ModelManager;","lastModifiedDate":"2024-03-10"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class HelpCommandTest {","lastModifiedDate":"2017-06-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public void execute_help_success() {","lastModifiedDate":"2017-06-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(SHOWING_HELP_MESSAGE, true, false);","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":" assertCommandSuccess(new HelpCommand(), model, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08"}],"authorContributionMap":{"KohGuanZeh":5,"-":15}},{"path":"src/test/java/seedu/findvisor/logic/commands/ListCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.commands;","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-10"},{"lineNumber":4,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-03-10"},{"lineNumber":5,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-10"},{"lineNumber":6,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.model.Model;","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.ModelManager;","lastModifiedDate":"2024-03-10"},{"lineNumber":13,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.UserPrefs;","lastModifiedDate":"2024-03-10"},{"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":{"KohGuanZeh":8,"-":31}},{"path":"src/test/java/seedu/findvisor/logic/commands/ScheduleCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package seedu.findvisor.logic.commands;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.createOldMeeting;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.createValidMeeting;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.commons.core.index.Index;","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.logic.Messages;","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.model.AddressBook;","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.model.Model;","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.model.ModelManager;","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.model.UserPrefs;","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.model.person.Meeting;","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.testutil.PersonBuilder;","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":"public class ScheduleCommandTest {","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":" public void constructor_nullMeeting_throwsNullPointerException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":" assertThrows(NullPointerException.class, () -\u003e new ScheduleCommand(INDEX_FIRST_PERSON, null));","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":" public void execute_okayMeeting_scheduleSuccessful() throws Exception {","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"Dethada"},"content":" Meeting meeting \u003d createValidMeeting();","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"Dethada"},"content":" ScheduleCommand scheduleCommand \u003d new ScheduleCommand(INDEX_FIRST_PERSON, meeting);","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"Dethada"},"content":" Person targetPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"Dethada"},"content":" PersonBuilder personBuilder \u003d new PersonBuilder(targetPerson).withMeeting(Optional.of(meeting));","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"Dethada"},"content":" Person editedPerson \u003d personBuilder.build();","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"Dethada"},"content":" String expectedMessage \u003d String.format(ScheduleCommand.MESSAGE_SCHEDULE_SUCCESS, targetPerson.getName(),","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"Dethada"},"content":" meeting.getStartString(), meeting.getEndString());","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"Dethada"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"Dethada"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"Dethada"},"content":" assertCommandSuccess(scheduleCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"Dethada"},"content":" public void execute_multipleMeeting_throwsCommandException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"Dethada"},"content":" Meeting meeting \u003d createValidMeeting();","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"Dethada"},"content":" ScheduleCommand scheduleCommand \u003d new ScheduleCommand(INDEX_FIRST_PERSON, meeting);","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"Dethada"},"content":" Person targetPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"Dethada"},"content":" PersonBuilder personBuilder \u003d new PersonBuilder(targetPerson).withMeeting(Optional.of(meeting));","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"Dethada"},"content":" Person editedPerson \u003d personBuilder.build();","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"Dethada"},"content":" model.setPerson(targetPerson, editedPerson);","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"Dethada"},"content":" assertCommandFailure(scheduleCommand, model, ScheduleCommand.MESSAGE_CANNOT_SCHEDULE_MULTIPLE_MEETINGS);","lastModifiedDate":"2024-03-11"},{"lineNumber":66,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":68,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"Dethada"},"content":" public void execute_meetingTimeInPast_throwsCommandException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":70,"author":{"gitId":"Dethada"},"content":" Meeting meeting \u003d createOldMeeting();","lastModifiedDate":"2024-03-11"},{"lineNumber":71,"author":{"gitId":"Dethada"},"content":" ScheduleCommand scheduleCommand \u003d new ScheduleCommand(INDEX_FIRST_PERSON, meeting);","lastModifiedDate":"2024-03-11"},{"lineNumber":72,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":73,"author":{"gitId":"Dethada"},"content":" assertCommandFailure(scheduleCommand, model, ScheduleCommand.MESSAGE_CANNOT_SCHEDULE_MEETING_IN_THE_PAST);","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":75,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":76,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":77,"author":{"gitId":"Dethada"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2024-03-11"},{"lineNumber":78,"author":{"gitId":"Dethada"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2024-03-11"},{"lineNumber":79,"author":{"gitId":"Dethada"},"content":" Meeting meeting \u003d createValidMeeting();","lastModifiedDate":"2024-03-11"},{"lineNumber":80,"author":{"gitId":"Dethada"},"content":" ScheduleCommand scheduleCommand \u003d new ScheduleCommand(outOfBoundIndex, meeting);","lastModifiedDate":"2024-03-11"},{"lineNumber":81,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":82,"author":{"gitId":"Dethada"},"content":" assertCommandFailure(scheduleCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-11"},{"lineNumber":83,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":84,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":85,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":86,"author":{"gitId":"Dethada"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2024-03-11"},{"lineNumber":87,"author":{"gitId":"Dethada"},"content":" * but smaller than size of address book","lastModifiedDate":"2024-03-11"},{"lineNumber":88,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":89,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":90,"author":{"gitId":"Dethada"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2024-03-11"},{"lineNumber":91,"author":{"gitId":"Dethada"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-11"},{"lineNumber":92,"author":{"gitId":"Dethada"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-11"},{"lineNumber":93,"author":{"gitId":"Dethada"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2024-03-11"},{"lineNumber":94,"author":{"gitId":"Dethada"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2024-03-11"},{"lineNumber":95,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":96,"author":{"gitId":"Dethada"},"content":" Meeting meeting \u003d createValidMeeting();","lastModifiedDate":"2024-03-11"},{"lineNumber":97,"author":{"gitId":"Dethada"},"content":" ScheduleCommand scheduleCommand \u003d new ScheduleCommand(outOfBoundIndex, meeting);","lastModifiedDate":"2024-03-11"},{"lineNumber":98,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":99,"author":{"gitId":"Dethada"},"content":" assertCommandFailure(scheduleCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-11"},{"lineNumber":100,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":101,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":102,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":103,"author":{"gitId":"Dethada"},"content":" public void equals() {","lastModifiedDate":"2024-03-11"},{"lineNumber":104,"author":{"gitId":"Dethada"},"content":" final Meeting meeting \u003d createValidMeeting();","lastModifiedDate":"2024-03-11"},{"lineNumber":105,"author":{"gitId":"Dethada"},"content":" final ScheduleCommand standardCommand \u003d new ScheduleCommand(INDEX_FIRST_PERSON, meeting);","lastModifiedDate":"2024-03-11"},{"lineNumber":106,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":107,"author":{"gitId":"Dethada"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-11"},{"lineNumber":108,"author":{"gitId":"Dethada"},"content":" ScheduleCommand commandWithSameValues \u003d new ScheduleCommand(INDEX_FIRST_PERSON, meeting);","lastModifiedDate":"2024-03-11"},{"lineNumber":109,"author":{"gitId":"Dethada"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-03-11"},{"lineNumber":110,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":111,"author":{"gitId":"Dethada"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-11"},{"lineNumber":112,"author":{"gitId":"Dethada"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-03-11"},{"lineNumber":113,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":114,"author":{"gitId":"Dethada"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-11"},{"lineNumber":115,"author":{"gitId":"Dethada"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-03-11"},{"lineNumber":116,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":117,"author":{"gitId":"Dethada"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-11"},{"lineNumber":118,"author":{"gitId":"Dethada"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2024-03-11"},{"lineNumber":119,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":120,"author":{"gitId":"Dethada"},"content":" // different index -\u003e returns false","lastModifiedDate":"2024-03-11"},{"lineNumber":121,"author":{"gitId":"Dethada"},"content":" assertFalse(standardCommand.equals(new ScheduleCommand(INDEX_SECOND_PERSON, meeting)));","lastModifiedDate":"2024-03-11"},{"lineNumber":122,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":123,"author":{"gitId":"Dethada"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2024-03-11"},{"lineNumber":124,"author":{"gitId":"Dethada"},"content":" assertFalse(standardCommand.equals(new ScheduleCommand(INDEX_FIRST_PERSON, createOldMeeting())));","lastModifiedDate":"2024-03-11"},{"lineNumber":125,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":126,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":127,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":128,"author":{"gitId":"Dethada"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-11"},{"lineNumber":129,"author":{"gitId":"Dethada"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-11"},{"lineNumber":130,"author":{"gitId":"Dethada"},"content":" Meeting meeting \u003d createValidMeeting();","lastModifiedDate":"2024-03-11"},{"lineNumber":131,"author":{"gitId":"Dethada"},"content":" ScheduleCommand editCommand \u003d new ScheduleCommand(index, meeting);","lastModifiedDate":"2024-03-11"},{"lineNumber":132,"author":{"gitId":"Dethada"},"content":" String expected \u003d ScheduleCommand.class.getCanonicalName() + \"{toSchedule\u003d\" + index + \", meeting\u003d\"","lastModifiedDate":"2024-03-11"},{"lineNumber":133,"author":{"gitId":"Dethada"},"content":" + meeting + \"}\";","lastModifiedDate":"2024-03-11"},{"lineNumber":134,"author":{"gitId":"Dethada"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2024-03-11"},{"lineNumber":135,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":136,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":137,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"Dethada":137}},{"path":"src/test/java/seedu/findvisor/logic/commands/UnscheduleCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package seedu.findvisor.logic.commands;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.commons.core.index.Index;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.logic.Messages;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.model.Model;","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.model.ModelManager;","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.model.UserPrefs;","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.testutil.PersonBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" * {@code UnscheduleCommand}.","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":"public class UnscheduleCommandTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":" Person personToUnschedule \u003d model.getFilteredPersonList().get(INDEX_THIRD_PERSON.getZeroBased());","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":" UnscheduleCommand unscheduleCommand \u003d new UnscheduleCommand(INDEX_THIRD_PERSON);","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":" PersonBuilder personBuilder \u003d new PersonBuilder(personToUnschedule).withMeeting(Optional.empty());","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":" Person editedPerson \u003d personBuilder.build();","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"Dethada"},"content":" String expectedMessage \u003d String.format(UnscheduleCommand.MESSAGE_UNSCHEDULE_SUCCESS,","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"Dethada"},"content":" personToUnschedule.getName());","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"Dethada"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"Dethada"},"content":" expectedModel.setPerson(personToUnschedule, editedPerson);","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"Dethada"},"content":" assertCommandSuccess(unscheduleCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"Dethada"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"Dethada"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"Dethada"},"content":" UnscheduleCommand unscheduleCommand \u003d new UnscheduleCommand(outOfBoundIndex);","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"Dethada"},"content":" assertCommandFailure(unscheduleCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"Dethada"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"Dethada"},"content":" showPersonAtIndex(model, INDEX_THIRD_PERSON);","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"Dethada"},"content":" Person personToUnschedule \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"Dethada"},"content":" UnscheduleCommand unscheduleCommand \u003d new UnscheduleCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"Dethada"},"content":" PersonBuilder personBuilder \u003d new PersonBuilder(personToUnschedule).withMeeting(Optional.empty());","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"Dethada"},"content":" Person editedPerson \u003d personBuilder.build();","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"Dethada"},"content":" String expectedMessage \u003d String.format(UnscheduleCommand.MESSAGE_UNSCHEDULE_SUCCESS,","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"Dethada"},"content":" personToUnschedule.getName());","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"Dethada"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"Dethada"},"content":" expectedModel.setPerson(personToUnschedule, editedPerson);","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"Dethada"},"content":" assertCommandSuccess(unscheduleCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-12"},{"lineNumber":74,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":75,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"Dethada"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"Dethada"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-12"},{"lineNumber":79,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"Dethada"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-12"},{"lineNumber":81,"author":{"gitId":"Dethada"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"Dethada"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"Dethada"},"content":" UnscheduleCommand unscheduleCommand \u003d new UnscheduleCommand(outOfBoundIndex);","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":86,"author":{"gitId":"Dethada"},"content":" assertCommandFailure(unscheduleCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":90,"author":{"gitId":"Dethada"},"content":" public void execute_noMeetingToUnschedule_throwsCommandException() {","lastModifiedDate":"2024-03-15"},{"lineNumber":91,"author":{"gitId":"Dethada"},"content":" UnscheduleCommand unscheduleCommand \u003d new UnscheduleCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-15"},{"lineNumber":92,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":93,"author":{"gitId":"Dethada"},"content":" assertCommandFailure(unscheduleCommand, model, String.format(UnscheduleCommand.MESSAGE_NO_MEETING_TO_UNSCHEDULE,","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"Dethada"},"content":" model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased()).getName()));","lastModifiedDate":"2024-03-19"},{"lineNumber":95,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":96,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":97,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":98,"author":{"gitId":"Dethada"},"content":" public void equals() {","lastModifiedDate":"2024-03-12"},{"lineNumber":99,"author":{"gitId":"Dethada"},"content":" UnscheduleCommand unscheduleFirstCommand \u003d new UnscheduleCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-12"},{"lineNumber":100,"author":{"gitId":"Dethada"},"content":" UnscheduleCommand unscheduleSecondCommand \u003d new UnscheduleCommand(INDEX_SECOND_PERSON);","lastModifiedDate":"2024-03-12"},{"lineNumber":101,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":102,"author":{"gitId":"Dethada"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-12"},{"lineNumber":103,"author":{"gitId":"Dethada"},"content":" assertTrue(unscheduleFirstCommand.equals(unscheduleFirstCommand));","lastModifiedDate":"2024-03-12"},{"lineNumber":104,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":105,"author":{"gitId":"Dethada"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-12"},{"lineNumber":106,"author":{"gitId":"Dethada"},"content":" UnscheduleCommand unscheduleFirstCommandCopy \u003d new UnscheduleCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-12"},{"lineNumber":107,"author":{"gitId":"Dethada"},"content":" assertTrue(unscheduleFirstCommand.equals(unscheduleFirstCommandCopy));","lastModifiedDate":"2024-03-12"},{"lineNumber":108,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":109,"author":{"gitId":"Dethada"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":110,"author":{"gitId":"Dethada"},"content":" assertFalse(unscheduleFirstCommand.equals(1));","lastModifiedDate":"2024-03-12"},{"lineNumber":111,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":112,"author":{"gitId":"Dethada"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":113,"author":{"gitId":"Dethada"},"content":" assertFalse(unscheduleFirstCommand.equals(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":114,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":115,"author":{"gitId":"Dethada"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":116,"author":{"gitId":"Dethada"},"content":" assertFalse(unscheduleFirstCommand.equals(unscheduleSecondCommand));","lastModifiedDate":"2024-03-12"},{"lineNumber":117,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":118,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":119,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":120,"author":{"gitId":"Dethada"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-12"},{"lineNumber":121,"author":{"gitId":"Dethada"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-12"},{"lineNumber":122,"author":{"gitId":"Dethada"},"content":" UnscheduleCommand unscheduleCommand \u003d new UnscheduleCommand(targetIndex);","lastModifiedDate":"2024-03-12"},{"lineNumber":123,"author":{"gitId":"Dethada"},"content":" String expected \u003d UnscheduleCommand.class.getCanonicalName() + \"{toUnschedule\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2024-03-12"},{"lineNumber":124,"author":{"gitId":"Dethada"},"content":" assertEquals(expected, unscheduleCommand.toString());","lastModifiedDate":"2024-03-12"},{"lineNumber":125,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":126,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":127,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"Dethada":127}},{"path":"src/test/java/seedu/findvisor/logic/parser/AddCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.parser;","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":3,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-10"},{"lineNumber":4,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-03-10"},{"lineNumber":5,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2024-03-10"},{"lineNumber":6,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-10"},{"lineNumber":7,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2024-03-10"},{"lineNumber":10,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-03-10"},{"lineNumber":11,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2024-03-10"},{"lineNumber":13,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-03-10"},{"lineNumber":14,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2024-03-10"},{"lineNumber":15,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-03-10"},{"lineNumber":16,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2024-03-10"},{"lineNumber":17,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2024-03-10"},{"lineNumber":18,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2024-03-10"},{"lineNumber":19,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2024-03-10"},{"lineNumber":20,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2024-03-10"},{"lineNumber":21,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-10"},{"lineNumber":22,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-10"},{"lineNumber":23,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-10"},{"lineNumber":24,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-10"},{"lineNumber":25,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2024-03-10"},{"lineNumber":26,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-03-10"},{"lineNumber":27,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-10"},{"lineNumber":28,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-10"},{"lineNumber":29,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-10"},{"lineNumber":30,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-10"},{"lineNumber":31,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-10"},{"lineNumber":32,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-10"},{"lineNumber":33,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.TypicalPersons.AMY;","lastModifiedDate":"2024-03-10"},{"lineNumber":34,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.TypicalPersons.BOB;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.logic.Messages;","lastModifiedDate":"2024-03-10"},{"lineNumber":39,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.AddCommand;","lastModifiedDate":"2024-03-10"},{"lineNumber":40,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Address;","lastModifiedDate":"2024-03-10"},{"lineNumber":41,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Email;","lastModifiedDate":"2024-03-10"},{"lineNumber":42,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Name;","lastModifiedDate":"2024-03-10"},{"lineNumber":43,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Person;","lastModifiedDate":"2024-03-10"},{"lineNumber":44,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Phone;","lastModifiedDate":"2024-03-10"},{"lineNumber":45,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.tag.Tag;","lastModifiedDate":"2024-03-10"},{"lineNumber":46,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.testutil.PersonBuilder;","lastModifiedDate":"2024-03-10"},{"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":"-"},"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":"-"},"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":"-"},"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":"-"},"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":{"KohGuanZeh":43,"-":153}},{"path":"src/test/java/seedu/findvisor/logic/parser/AddressBookParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.parser;","lastModifiedDate":"2024-03-10"},{"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":"Dethada"},"content":"import static seedu.findvisor.commons.util.DateTimeUtil.dateTimeToInputString;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-10"},{"lineNumber":7,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.createValidMeeting;","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_END_DATETIME;","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_START_DATETIME;","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-10"},{"lineNumber":21,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-10"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":27,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.AddCommand;","lastModifiedDate":"2024-03-10"},{"lineNumber":28,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.ClearCommand;","lastModifiedDate":"2024-03-10"},{"lineNumber":29,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-10"},{"lineNumber":30,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.EditCommand;","lastModifiedDate":"2024-03-10"},{"lineNumber":31,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-10"},{"lineNumber":32,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.ExitCommand;","lastModifiedDate":"2024-03-10"},{"lineNumber":33,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.FindCommand;","lastModifiedDate":"2024-03-10"},{"lineNumber":34,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.HelpCommand;","lastModifiedDate":"2024-03-10"},{"lineNumber":35,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.ListCommand;","lastModifiedDate":"2024-03-10"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.logic.commands.ScheduleCommand;","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.logic.commands.UnscheduleCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-10"},{"lineNumber":39,"author":{"gitId":"Javiery3889"},"content":"import seedu.findvisor.model.person.EmailContainsKeywordPredicate;","lastModifiedDate":"2024-03-15"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.model.person.Meeting;","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"Javiery3889"},"content":"import seedu.findvisor.model.person.NameContainsKeywordPredicate;","lastModifiedDate":"2024-03-15"},{"lineNumber":42,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Person;","lastModifiedDate":"2024-03-10"},{"lineNumber":43,"author":{"gitId":"Javiery3889"},"content":"import seedu.findvisor.model.person.PhoneContainsKeywordPredicate;","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"Javiery3889"},"content":"import seedu.findvisor.model.tag.TagsContainsKeywordsPredicate;","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2024-03-10"},{"lineNumber":46,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.testutil.PersonBuilder;","lastModifiedDate":"2024-03-10"},{"lineNumber":47,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.testutil.PersonUtil;","lastModifiedDate":"2024-03-10"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27"},{"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":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","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_delete() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2017-06-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), 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_edit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2018-03-26"},{"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":"Javiery3889"},"content":" // Find using name","lastModifiedDate":"2024-03-14"},{"lineNumber":91,"author":{"gitId":"Javiery3889"},"content":" FindCommand findNameCommand \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2024-03-14"},{"lineNumber":92,"author":{"gitId":"Javiery3889"},"content":" FindCommand.COMMAND_WORD + \" \" + PREFIX_NAME + VALID_NAME_AMY);","lastModifiedDate":"2024-03-14"},{"lineNumber":93,"author":{"gitId":"Javiery3889"},"content":" assertEquals(new FindCommand(new NameContainsKeywordPredicate(VALID_NAME_AMY)), findNameCommand);","lastModifiedDate":"2024-03-14"},{"lineNumber":94,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":95,"author":{"gitId":"Javiery3889"},"content":" // Find using email","lastModifiedDate":"2024-03-14"},{"lineNumber":96,"author":{"gitId":"Javiery3889"},"content":" FindCommand findEmailCommand \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2024-03-14"},{"lineNumber":97,"author":{"gitId":"Javiery3889"},"content":" FindCommand.COMMAND_WORD + \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY);","lastModifiedDate":"2024-03-14"},{"lineNumber":98,"author":{"gitId":"Javiery3889"},"content":" assertEquals(new FindCommand(new EmailContainsKeywordPredicate(VALID_EMAIL_AMY)), findEmailCommand);","lastModifiedDate":"2024-03-15"},{"lineNumber":99,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":100,"author":{"gitId":"Javiery3889"},"content":" // Find using phone","lastModifiedDate":"2024-03-14"},{"lineNumber":101,"author":{"gitId":"Javiery3889"},"content":" FindCommand findPhoneCommand \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2024-03-14"},{"lineNumber":102,"author":{"gitId":"Javiery3889"},"content":" FindCommand.COMMAND_WORD + \" \" + PREFIX_PHONE + VALID_PHONE_AMY);","lastModifiedDate":"2024-03-14"},{"lineNumber":103,"author":{"gitId":"Javiery3889"},"content":" assertEquals(new FindCommand(new PhoneContainsKeywordPredicate(VALID_PHONE_AMY)), findPhoneCommand);","lastModifiedDate":"2024-03-15"},{"lineNumber":104,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":105,"author":{"gitId":"Javiery3889"},"content":" // Find using tags","lastModifiedDate":"2024-03-14"},{"lineNumber":106,"author":{"gitId":"Javiery3889"},"content":" FindCommand findTagsCommand \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2024-03-14"},{"lineNumber":107,"author":{"gitId":"Javiery3889"},"content":" FindCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2024-03-14"},{"lineNumber":108,"author":{"gitId":"Javiery3889"},"content":" + PREFIX_TAG + VALID_TAG_FRIEND + \" \"","lastModifiedDate":"2024-03-14"},{"lineNumber":109,"author":{"gitId":"Javiery3889"},"content":" + PREFIX_TAG + VALID_TAG_HUSBAND);","lastModifiedDate":"2024-03-14"},{"lineNumber":110,"author":{"gitId":"Javiery3889"},"content":" assertEquals(new FindCommand(new TagsContainsKeywordsPredicate(","lastModifiedDate":"2024-03-14"},{"lineNumber":111,"author":{"gitId":"Javiery3889"},"content":" Arrays.asList(new String[]{VALID_TAG_FRIEND, VALID_TAG_HUSBAND}))), findTagsCommand);","lastModifiedDate":"2024-03-14"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":115,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":120,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":121,"author":{"gitId":"Dethada"},"content":" public void parseCommand_schedule() throws Exception {","lastModifiedDate":"2024-03-11"},{"lineNumber":122,"author":{"gitId":"Dethada"},"content":" Meeting meeting \u003d createValidMeeting();","lastModifiedDate":"2024-03-11"},{"lineNumber":123,"author":{"gitId":"Dethada"},"content":" ScheduleCommand command \u003d (ScheduleCommand) parser.parseCommand(","lastModifiedDate":"2024-03-11"},{"lineNumber":124,"author":{"gitId":"Dethada"},"content":" ScheduleCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased() + \" \"","lastModifiedDate":"2024-03-11"},{"lineNumber":125,"author":{"gitId":"Dethada"},"content":" + PREFIX_START_DATETIME + dateTimeToInputString(meeting.start) + \" \"","lastModifiedDate":"2024-03-11"},{"lineNumber":126,"author":{"gitId":"Dethada"},"content":" + PREFIX_END_DATETIME + dateTimeToInputString(meeting.end));","lastModifiedDate":"2024-03-11"},{"lineNumber":127,"author":{"gitId":"Dethada"},"content":" assertEquals(new ScheduleCommand(INDEX_FIRST_PERSON, meeting), command);","lastModifiedDate":"2024-03-11"},{"lineNumber":128,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":129,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":130,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":131,"author":{"gitId":"Dethada"},"content":" public void parseCommand_unschedule() throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":132,"author":{"gitId":"Dethada"},"content":" UnscheduleCommand command \u003d (UnscheduleCommand) parser.parseCommand(","lastModifiedDate":"2024-03-12"},{"lineNumber":133,"author":{"gitId":"Dethada"},"content":" UnscheduleCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2024-03-12"},{"lineNumber":134,"author":{"gitId":"Dethada"},"content":" assertEquals(new UnscheduleCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2024-03-12"},{"lineNumber":135,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":136,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":138,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":144,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":147,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"KohGuanZeh":19,"Javiery3889":37,"Dethada":22,"-":69}},{"path":"src/test/java/seedu/findvisor/logic/parser/ArgumentTokenizerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.parser;","lastModifiedDate":"2024-03-10"},{"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":{"KohGuanZeh":1,"-":149}},{"path":"src/test/java/seedu/findvisor/logic/parser/CommandParserTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.parser;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.Command;","lastModifiedDate":"2024-03-10"},{"lineNumber":6,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2017-07-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, pe.getMessage());","lastModifiedDate":"2017-07-06"},{"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":{"KohGuanZeh":3,"-":36}},{"path":"src/test/java/seedu/findvisor/logic/parser/DeleteCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.parser;","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":3,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-10"},{"lineNumber":4,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-10"},{"lineNumber":5,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-10"},{"lineNumber":6,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" assertParseSuccess(parser, \"1\", new DeleteCommand(INDEX_FIRST_PERSON));","lastModifiedDate":"2017-07-06"},{"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":{"KohGuanZeh":6,"-":26}},{"path":"src/test/java/seedu/findvisor/logic/parser/EditCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.parser;","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":3,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-10"},{"lineNumber":4,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-03-10"},{"lineNumber":5,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2024-03-10"},{"lineNumber":6,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-10"},{"lineNumber":7,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2024-03-10"},{"lineNumber":10,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-03-10"},{"lineNumber":11,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2024-03-10"},{"lineNumber":13,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-03-10"},{"lineNumber":14,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-03-10"},{"lineNumber":15,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2024-03-10"},{"lineNumber":16,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2024-03-10"},{"lineNumber":17,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2024-03-10"},{"lineNumber":18,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2024-03-10"},{"lineNumber":19,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-03-10"},{"lineNumber":20,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-03-10"},{"lineNumber":21,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-03-10"},{"lineNumber":22,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-10"},{"lineNumber":23,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2024-03-10"},{"lineNumber":24,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-03-10"},{"lineNumber":25,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-10"},{"lineNumber":26,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-10"},{"lineNumber":27,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-10"},{"lineNumber":28,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-10"},{"lineNumber":29,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-10"},{"lineNumber":30,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-10"},{"lineNumber":31,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-10"},{"lineNumber":32,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-10"},{"lineNumber":33,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.index.Index;","lastModifiedDate":"2024-03-10"},{"lineNumber":38,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.Messages;","lastModifiedDate":"2024-03-10"},{"lineNumber":39,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.EditCommand;","lastModifiedDate":"2024-03-10"},{"lineNumber":40,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-10"},{"lineNumber":41,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Address;","lastModifiedDate":"2024-03-10"},{"lineNumber":42,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Email;","lastModifiedDate":"2024-03-10"},{"lineNumber":43,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Name;","lastModifiedDate":"2024-03-10"},{"lineNumber":44,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Phone;","lastModifiedDate":"2024-03-10"},{"lineNumber":45,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.tag.Tag;","lastModifiedDate":"2024-03-10"},{"lineNumber":46,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2024-03-10"},{"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":"-"},"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":"-"},"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":"-"},"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":"-"},"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":"-"},"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":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"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":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"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":{"KohGuanZeh":43,"-":165}},{"path":"src/test/java/seedu/findvisor/logic/parser/FindCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.parser;","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":3,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-10"},{"lineNumber":4,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-10"},{"lineNumber":18,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-10"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":24,"author":{"gitId":"Javiery3889"},"content":"import seedu.findvisor.logic.Messages;","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.FindCommand;","lastModifiedDate":"2024-03-10"},{"lineNumber":26,"author":{"gitId":"Javiery3889"},"content":"import seedu.findvisor.model.person.EmailContainsKeywordPredicate;","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"Javiery3889"},"content":"import seedu.findvisor.model.person.NameContainsKeywordPredicate;","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"Javiery3889"},"content":"import seedu.findvisor.model.person.PhoneContainsKeywordPredicate;","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"Javiery3889"},"content":"import seedu.findvisor.model.tag.TagsContainsKeywordsPredicate;","lastModifiedDate":"2024-03-14"},{"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":"-"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2017-06-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \" \", String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-07-06"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsFindCommand() {","lastModifiedDate":"2017-08-15"},{"lineNumber":43,"author":{"gitId":"Javiery3889"},"content":" // parse name","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"-"},"content":" FindCommand expectedFindCommand \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":45,"author":{"gitId":"Javiery3889"},"content":" new FindCommand(new NameContainsKeywordPredicate(\"Bob Choo\"));","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"Javiery3889"},"content":" assertParseSuccess(parser, NAME_DESC_BOB, expectedFindCommand);","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"Javiery3889"},"content":" // multiple whitespaces before and after name keyword","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"Javiery3889"},"content":" String paddedKeyword \u003d \"\\n \\t \" + NAME_DESC_BOB + \"\\n \\t\";","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"Javiery3889"},"content":" assertParseSuccess(parser, paddedKeyword, expectedFindCommand);","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"Javiery3889"},"content":" // parse email","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"Javiery3889"},"content":" expectedFindCommand \u003d new FindCommand(new EmailContainsKeywordPredicate(\"amy@example.com\"));","lastModifiedDate":"2024-03-15"},{"lineNumber":54,"author":{"gitId":"Javiery3889"},"content":" assertParseSuccess(parser, EMAIL_DESC_AMY, expectedFindCommand);","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"Javiery3889"},"content":" // parse phone","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"Arixeyeion"},"content":" expectedFindCommand \u003d new FindCommand(new PhoneContainsKeywordPredicate(\"81234567\"));","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"Javiery3889"},"content":" assertParseSuccess(parser, PHONE_DESC_BOB, expectedFindCommand);","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"Javiery3889"},"content":" // parse multiple tags","lastModifiedDate":"2024-03-14"},{"lineNumber":61,"author":{"gitId":"Javiery3889"},"content":" expectedFindCommand \u003d new FindCommand(new TagsContainsKeywordsPredicate(","lastModifiedDate":"2024-03-14"},{"lineNumber":62,"author":{"gitId":"Javiery3889"},"content":" Arrays.asList(new String[]{\"friend\", \"husband\"})));","lastModifiedDate":"2024-03-14"},{"lineNumber":63,"author":{"gitId":"Javiery3889"},"content":" assertParseSuccess(parser, TAG_DESC_FRIEND + TAG_DESC_HUSBAND, expectedFindCommand);","lastModifiedDate":"2024-03-14"},{"lineNumber":64,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":65,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":66,"author":{"gitId":"Javiery3889"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":67,"author":{"gitId":"Javiery3889"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"Javiery3889"},"content":" assertParseFailure(parser, NAME_DESC_BOB + NAME_DESC_AMY,","lastModifiedDate":"2024-03-14"},{"lineNumber":69,"author":{"gitId":"Javiery3889"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2024-03-14"},{"lineNumber":70,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":71,"author":{"gitId":"Javiery3889"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + EMAIL_DESC_BOB,","lastModifiedDate":"2024-03-14"},{"lineNumber":72,"author":{"gitId":"Javiery3889"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2024-03-14"},{"lineNumber":73,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":74,"author":{"gitId":"Javiery3889"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + PHONE_DESC_BOB,","lastModifiedDate":"2024-03-14"},{"lineNumber":75,"author":{"gitId":"Javiery3889"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2024-03-14"},{"lineNumber":76,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":77,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":78,"author":{"gitId":"Javiery3889"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":79,"author":{"gitId":"Javiery3889"},"content":" public void parse_invalidArgs_failure() {","lastModifiedDate":"2024-03-14"},{"lineNumber":80,"author":{"gitId":"Javiery3889"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-15"},{"lineNumber":81,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":82,"author":{"gitId":"Javiery3889"},"content":" // Invalid prefix","lastModifiedDate":"2024-03-15"},{"lineNumber":83,"author":{"gitId":"Javiery3889"},"content":" assertParseFailure(parser, \"@/test\", expectedMessage);","lastModifiedDate":"2024-03-15"},{"lineNumber":84,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":85,"author":{"gitId":"Javiery3889"},"content":" // Invalid and valid prefix","lastModifiedDate":"2024-03-15"},{"lineNumber":86,"author":{"gitId":"Javiery3889"},"content":" assertParseFailure(parser, \"@/test \" + VALID_NAME_AMY, expectedMessage);","lastModifiedDate":"2024-03-15"},{"lineNumber":87,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":88,"author":{"gitId":"Javiery3889"},"content":" // Multiple valid prefixes","lastModifiedDate":"2024-03-15"},{"lineNumber":89,"author":{"gitId":"Javiery3889"},"content":" assertParseFailure(parser, VALID_NAME_AMY + \" \" + VALID_EMAIL_AMY, expectedMessage);","lastModifiedDate":"2024-03-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-27"}],"authorContributionMap":{"Arixeyeion":1,"KohGuanZeh":5,"Javiery3889":63,"-":22}},{"path":"src/test/java/seedu/findvisor/logic/parser/ParserUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.parser;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2024-03-10"},{"lineNumber":6,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-10"},{"lineNumber":7,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-10"},{"lineNumber":17,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Address;","lastModifiedDate":"2024-03-10"},{"lineNumber":18,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Email;","lastModifiedDate":"2024-03-10"},{"lineNumber":19,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Name;","lastModifiedDate":"2024-03-10"},{"lineNumber":20,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Phone;","lastModifiedDate":"2024-03-10"},{"lineNumber":21,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.tag.Tag;","lastModifiedDate":"2024-03-10"},{"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":"Arixeyeion"},"content":" private static final String VALID_NAME_EXTENDED \u003d \"Rachel Lee Walker\";","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"Arixeyeion"},"content":" private static final String VALID_NAME_WITH_BIG_SPACE_IN_BETWEEN \u003d \"Rachel Walker\";","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"Arixeyeion"},"content":" private static final String VALID_NAME_WITH_DIFFERING_SPACES \u003d \"Rachel Lee Walker\";","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"Arixeyeion"},"content":" private static final String VALID_PHONE \u003d \"99123456\";","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"Arixeyeion"},"content":" private static final String VALID_PHONE_WITH_SPACE_BETWEEN \u003d \"9912 3456\";","lastModifiedDate":"2024-03-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d \"123 Main Street #0505\";","lastModifiedDate":"2017-05-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_1 \u003d \"friend\";","lastModifiedDate":"2017-05-22"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_2 \u003d \"neighbour\";","lastModifiedDate":"2017-05-22"},{"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":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23"},{"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":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // No 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":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2017-05-25"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":75,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":81,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29"},{"lineNumber":82,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":86,"author":{"gitId":"Arixeyeion"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"Arixeyeion"},"content":" public void parseName_validValueWithBigSpaceInBetween_returnsTrimmedName() throws Exception {","lastModifiedDate":"2024-03-17"},{"lineNumber":88,"author":{"gitId":"Arixeyeion"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"Arixeyeion"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME_WITH_BIG_SPACE_IN_BETWEEN));","lastModifiedDate":"2024-03-17"},{"lineNumber":90,"author":{"gitId":"Arixeyeion"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"Arixeyeion"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"Arixeyeion"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"Arixeyeion"},"content":" public void parseName_validValueWithDifferingSpaces_returnsTrimmedName() throws Exception {","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"Arixeyeion"},"content":" Name expectedName \u003d new Name(VALID_NAME_EXTENDED);","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"Arixeyeion"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME_WITH_DIFFERING_SPACES));","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"Arixeyeion"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"Arixeyeion"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void parsePhone_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePhone((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public void parsePhone_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhone(INVALID_PHONE));","lastModifiedDate":"2019-03-14"},{"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 parsePhone_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":110,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-22"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(VALID_PHONE));","lastModifiedDate":"2017-05-30"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":115,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithWhitespace_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":116,"author":{"gitId":"-"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":117,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-30"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(phoneWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":121,"author":{"gitId":"Arixeyeion"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":122,"author":{"gitId":"Arixeyeion"},"content":" public void parsePhone_validValueWithWhitespaceInBetween_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2024-03-15"},{"lineNumber":123,"author":{"gitId":"Arixeyeion"},"content":" String phoneWithWhitespaceInBetween \u003d VALID_PHONE_WITH_SPACE_BETWEEN;","lastModifiedDate":"2024-03-15"},{"lineNumber":124,"author":{"gitId":"Arixeyeion"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2024-03-15"},{"lineNumber":125,"author":{"gitId":"Arixeyeion"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(phoneWithWhitespaceInBetween));","lastModifiedDate":"2024-03-15"},{"lineNumber":126,"author":{"gitId":"Arixeyeion"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":127,"author":{"gitId":"Arixeyeion"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public void parseAddress_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseAddress((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 parseAddress_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseAddress(INVALID_ADDRESS));","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 parseAddress_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":140,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-22"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(VALID_ADDRESS));","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 parseAddress_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":146,"author":{"gitId":"-"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_ADDRESS + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":147,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-30"},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(addressWithWhitespace));","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-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":{"Arixeyeion":24,"KohGuanZeh":10,"-":185}},{"path":"src/test/java/seedu/findvisor/logic/parser/ScheduleCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package seedu.findvisor.logic.parser;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.commons.util.DateTimeUtil.dateTimeToInputString;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.createValidMeeting;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_END_DATETIME;","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_START_DATETIME;","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.commons.core.index.Index;","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.logic.commands.ScheduleCommand;","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.model.person.Meeting;","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":"public class ScheduleCommandParserTest {","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" private ScheduleCommandParser parser \u003d new ScheduleCommandParser();","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" assertParseFailure(parser, \" \", String.format(","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" ScheduleCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" public void parse_validArgs_returnsScheduleCommand() {","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" Meeting meeting \u003d createValidMeeting();","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" ScheduleCommand expectedScheduleCommand \u003d new ScheduleCommand(targetIndex, meeting);","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":" System.out.println(dateTimeToInputString(meeting.start) + \" \" + dateTimeToInputString(meeting.end));","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":" targetIndex.getOneBased() + \" \"","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":" + PREFIX_START_DATETIME + \" \" + dateTimeToInputString(meeting.start) + \" \"","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":" + PREFIX_END_DATETIME + \" \" + dateTimeToInputString(meeting.end),","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":" expectedScheduleCommand);","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"Dethada"},"content":" public void parse_invalidDatetimeFormat_throwsParseException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"Dethada"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"Dethada"},"content":" INDEX_FIRST_PERSON.getOneBased() + \" \"","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"Dethada"},"content":" + PREFIX_START_DATETIME + \"2024-02-22 14:00 \"","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"Dethada"},"content":" + PREFIX_END_DATETIME + \"2024-02-22 15:00\",","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"Dethada"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, ScheduleCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"Dethada":50}},{"path":"src/test/java/seedu/findvisor/logic/parser/UnscheduleCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package seedu.findvisor.logic.parser;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.logic.commands.UnscheduleCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" * As we are only doing white-box testing, our test cases do not cover path variations","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" * outside of the UnscheduleCommand code. For example, inputs \"1\" and \"1 abc\" take the","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" * same path through the UnscheduleCommand, and therefore we test only one of them.","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" * The path variation for those two cases occur inside the ParserUtil, and","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" * therefore should be covered by the ParserUtilTest.","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":"public class UnscheduleCommandParserTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" private UnscheduleCommandParser parser \u003d new UnscheduleCommandParser();","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" public void parse_validArgs_returnsUnscheduleCommand() {","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" assertParseSuccess(parser, \"1\", new UnscheduleCommand(INDEX_FIRST_PERSON));","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" assertParseFailure(parser, \"a\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, UnscheduleCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"Dethada":32}},{"path":"src/test/java/seedu/findvisor/model/AddressBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.model;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-10"},{"lineNumber":7,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-10"},{"lineNumber":10,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Person;","lastModifiedDate":"2024-03-10"},{"lineNumber":22,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2024-03-10"},{"lineNumber":23,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.testutil.PersonBuilder;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2018-04-19"},{"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":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2018-08-06"},{"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":"-"},"content":"}","lastModifiedDate":"2016-12-24"}],"authorContributionMap":{"KohGuanZeh":9,"-":99}},{"path":"src/test/java/seedu/findvisor/model/ModelManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.model;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import static seedu.findvisor.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-10"},{"lineNumber":7,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2024-03-10"},{"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":"","lastModifiedDate":"2017-05-31"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":16,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.GuiSettings;","lastModifiedDate":"2024-03-10"},{"lineNumber":17,"author":{"gitId":"Javiery3889"},"content":"import seedu.findvisor.model.person.NameContainsKeywordPredicate;","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.testutil.AddressBookBuilder;","lastModifiedDate":"2024-03-10"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class ModelManagerTest {","lastModifiedDate":"2017-05-31"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2018-08-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertEquals(new GuiSettings(), modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertEquals(new AddressBook(), new AddressBook(modelManager.getAddressBook()));","lastModifiedDate":"2018-11-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void setUserPrefs_nullUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setUserPrefs(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void setUserPrefs_validUserPrefs_copiesUserPrefs() {","lastModifiedDate":"2018-12-06"},{"lineNumber":38,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"address/book/file/path\"));","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1, 2, 3, 4));","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" modelManager.setUserPrefs(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // Modifying userPrefs should not modify modelManager\u0027s userPrefs","lastModifiedDate":"2018-12-06"},{"lineNumber":45,"author":{"gitId":"-"},"content":" UserPrefs oldUserPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":46,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"new/address/book/file/path\"));","lastModifiedDate":"2018-12-06"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertEquals(oldUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setGuiSettings(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void setGuiSettings_validGuiSettings_setsGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1, 2, 3, 4);","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" modelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertEquals(guiSettings, modelManager.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":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setAddressBookFilePath(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_validPath_setsAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" Path path \u003d Paths.get(\"address/book/file/path\");","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" modelManager.setAddressBookFilePath(path);","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertEquals(path, modelManager.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":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasPerson(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertFalse(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":86,"author":{"gitId":"-"},"content":" modelManager.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertTrue(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":97,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBookBuilder().withPerson(ALICE).withPerson(BENSON).build();","lastModifiedDate":"2017-07-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" AddressBook differentAddressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31"},{"lineNumber":99,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":101,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":102,"author":{"gitId":"-"},"content":" modelManager \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2018-08-06"},{"lineNumber":103,"author":{"gitId":"-"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2017-05-31"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":106,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":109,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":112,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":" // different addressBook -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(differentAddressBook, userPrefs)));","lastModifiedDate":"2017-05-31"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":118,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":119,"author":{"gitId":"Javiery3889"},"content":" String keyword \u003d ALICE.getName().fullName;","lastModifiedDate":"2024-03-14"},{"lineNumber":120,"author":{"gitId":"Javiery3889"},"content":" modelManager.updateFilteredPersonList(new NameContainsKeywordPredicate(keyword));","lastModifiedDate":"2024-03-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, userPrefs)));","lastModifiedDate":"2017-05-31"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":123,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2017-08-05"},{"lineNumber":124,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":126,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27"},{"lineNumber":127,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":128,"author":{"gitId":"-"},"content":" differentUserPrefs.setAddressBookFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2018-08-09"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, differentUserPrefs)));","lastModifiedDate":"2018-11-27"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":131,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31"}],"authorContributionMap":{"KohGuanZeh":7,"Javiery3889":3,"-":121}},{"path":"src/test/java/seedu/findvisor/model/UserPrefsTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.model;","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":3,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":"}","lastModifiedDate":"2018-11-27"}],"authorContributionMap":{"KohGuanZeh":2,"-":19}},{"path":"src/test/java/seedu/findvisor/model/person/AddressTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.model.person;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-10"},{"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":{"KohGuanZeh":2,"-":54}},{"path":"src/test/java/seedu/findvisor/model/person/EmailContainsKeywordPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Javiery3889"},"content":"package seedu.findvisor.model.person;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"Javiery3889"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"Javiery3889"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"Javiery3889"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"Javiery3889"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"Javiery3889"},"content":"import seedu.findvisor.testutil.PersonBuilder;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"Javiery3889"},"content":"public class EmailContainsKeywordPredicateTest {","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"Javiery3889"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"Javiery3889"},"content":" public void equals() {","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"Javiery3889"},"content":" String firstPredicateKeyword \u003d \"example1@example.com\";","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"Javiery3889"},"content":" String secondPredicateKeyword \u003d \"example2@example.com\";","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"Javiery3889"},"content":" EmailContainsKeywordPredicate firstPredicate \u003d new EmailContainsKeywordPredicate(firstPredicateKeyword);","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"Javiery3889"},"content":" EmailContainsKeywordPredicate secondPredicate \u003d new EmailContainsKeywordPredicate(secondPredicateKeyword);","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"Javiery3889"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"Javiery3889"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"Javiery3889"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"Javiery3889"},"content":" EmailContainsKeywordPredicate firstPredicateCopy \u003d new EmailContainsKeywordPredicate(firstPredicateKeyword);","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"Javiery3889"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"Javiery3889"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"Javiery3889"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"Javiery3889"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"Javiery3889"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"Javiery3889"},"content":" // different email -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"Javiery3889"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"Javiery3889"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"Javiery3889"},"content":" public void test_emailContainsKeyword_returnsTrue() {","lastModifiedDate":"2024-03-15"},{"lineNumber":40,"author":{"gitId":"Javiery3889"},"content":" // Exact match","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"Javiery3889"},"content":" EmailContainsKeywordPredicate predicate \u003d new EmailContainsKeywordPredicate(\"example@example.com\");","lastModifiedDate":"2024-03-15"},{"lineNumber":42,"author":{"gitId":"Javiery3889"},"content":" assertTrue(predicate.test(new PersonBuilder().withEmail(\"example@example.com\").build()));","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"Javiery3889"},"content":" // Substring match","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"Javiery3889"},"content":" predicate \u003d new EmailContainsKeywordPredicate(\"example\");","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"Javiery3889"},"content":" assertTrue(predicate.test(new PersonBuilder().withEmail(\"example@example.com\").build()));","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"Javiery3889"},"content":" // Mixed-case keyword","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"Javiery3889"},"content":" predicate \u003d new EmailContainsKeywordPredicate(\"EXAmple@example.COM\");","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"Javiery3889"},"content":" assertTrue(predicate.test(new PersonBuilder().withEmail(\"example@example.com\").build()));","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"Javiery3889"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"Javiery3889"},"content":" public void test_emailDoesNotContainsKeyword_returnsFalse() {","lastModifiedDate":"2024-03-15"},{"lineNumber":55,"author":{"gitId":"Javiery3889"},"content":" // Non-matching keyword","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"Javiery3889"},"content":" EmailContainsKeywordPredicate predicate \u003d new EmailContainsKeywordPredicate(\"example@example.com\");","lastModifiedDate":"2024-03-15"},{"lineNumber":57,"author":{"gitId":"Javiery3889"},"content":" assertFalse(predicate.test(new PersonBuilder().withEmail(\"123@example.com\").build()));","lastModifiedDate":"2024-03-14"},{"lineNumber":58,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"Javiery3889"},"content":" // Substring keyword","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"Javiery3889"},"content":" predicate \u003d new EmailContainsKeywordPredicate(\"com@example.com\");","lastModifiedDate":"2024-03-15"},{"lineNumber":61,"author":{"gitId":"Javiery3889"},"content":" assertFalse(predicate.test(new PersonBuilder().withEmail(\"example@example.com\").build()));","lastModifiedDate":"2024-03-14"},{"lineNumber":62,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":63,"author":{"gitId":"Javiery3889"},"content":" // Keywords match phone, but does not match email","lastModifiedDate":"2024-03-14"},{"lineNumber":64,"author":{"gitId":"Javiery3889"},"content":" predicate \u003d new EmailContainsKeywordPredicate(\"91002921\");","lastModifiedDate":"2024-03-15"},{"lineNumber":65,"author":{"gitId":"Javiery3889"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").withPhone(\"91002921\")","lastModifiedDate":"2024-03-14"},{"lineNumber":66,"author":{"gitId":"Javiery3889"},"content":" .withEmail(\"alice@email.com\").withAddress(\"MainStreet\").build()));","lastModifiedDate":"2024-03-14"},{"lineNumber":67,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":69,"author":{"gitId":"Javiery3889"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":70,"author":{"gitId":"Javiery3889"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-14"},{"lineNumber":71,"author":{"gitId":"Javiery3889"},"content":" String keyword \u003d \"example@example.com\";","lastModifiedDate":"2024-03-14"},{"lineNumber":72,"author":{"gitId":"Javiery3889"},"content":" EmailContainsKeywordPredicate predicate \u003d new EmailContainsKeywordPredicate(keyword);","lastModifiedDate":"2024-03-15"},{"lineNumber":73,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":74,"author":{"gitId":"Javiery3889"},"content":" String expected \u003d EmailContainsKeywordPredicate.class.getCanonicalName() + \"{email\u003d\" + keyword + \"}\";","lastModifiedDate":"2024-03-15"},{"lineNumber":75,"author":{"gitId":"Javiery3889"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2024-03-14"},{"lineNumber":76,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":77,"author":{"gitId":"Javiery3889"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"Javiery3889":77}},{"path":"src/test/java/seedu/findvisor/model/person/EmailTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.model.person;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-10"},{"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":{"KohGuanZeh":2,"-":86}},{"path":"src/test/java/seedu/findvisor/model/person/MeetingTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package seedu.findvisor.model.person;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"public class MeetingTest {","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":" private static final LocalDateTime START \u003d LocalDateTime.of(2024, 1, 1, 12, 0);","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" private static final LocalDateTime END \u003d LocalDateTime.of(2024, 1, 1, 13, 0);","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" assertThrows(NullPointerException.class, () -\u003e new Meeting(null, null));","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" assertThrows(NullPointerException.class, () -\u003e new Meeting(START, null));","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" assertThrows(NullPointerException.class, () -\u003e new Meeting(null, END));","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" public void constructor_invalidMeeting_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Meeting(END, START));","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" public void isValidMeeting() {","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" // null meeting","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" assertThrows(NullPointerException.class, () -\u003e Meeting.isValidDateTime(null, null));","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" assertThrows(NullPointerException.class, () -\u003e Meeting.isValidDateTime(START, null));","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" assertThrows(NullPointerException.class, () -\u003e Meeting.isValidDateTime(null, END));","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" // invalid meeting","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":" assertFalse(Meeting.isValidDateTime(END, START));","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":" // valid meeting","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":" assertTrue(Meeting.isValidDateTime(START, END));","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"Dethada"},"content":" public void equals() {","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"Dethada"},"content":" Meeting meeting \u003d new Meeting(START, END);","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"Dethada"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"Dethada"},"content":" assertTrue(meeting.equals(new Meeting(START, END)));","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"Dethada"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"Dethada"},"content":" assertTrue(meeting.equals(meeting));","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"Dethada"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"Dethada"},"content":" assertFalse(meeting.equals(null));","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"Dethada"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"Dethada"},"content":" assertFalse(meeting.equals(LocalDateTime.now()));","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"Dethada"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"Dethada"},"content":" assertFalse(meeting.equals(new Meeting(LocalDateTime.now(), LocalDateTime.now().plusHours(1))));","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"Dethada":60}},{"path":"src/test/java/seedu/findvisor/model/person/NameContainsKeywordPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Javiery3889"},"content":"package seedu.findvisor.model.person;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"Javiery3889"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"Javiery3889"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"Javiery3889"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"Javiery3889"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"Javiery3889"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"Javiery3889"},"content":"import seedu.findvisor.testutil.PersonBuilder;","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"Javiery3889"},"content":"public class NameContainsKeywordPredicateTest {","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"Javiery3889"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"Javiery3889"},"content":" public void equals() {","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"Javiery3889"},"content":" String firstPredicateKeyword \u003d \"first\";","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"Javiery3889"},"content":" String secondPredicateKeyword \u003d \"first second\";","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"Javiery3889"},"content":" NameContainsKeywordPredicate firstPredicate \u003d new NameContainsKeywordPredicate(firstPredicateKeyword);","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"Javiery3889"},"content":" NameContainsKeywordPredicate secondPredicate \u003d new NameContainsKeywordPredicate(secondPredicateKeyword);","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"Javiery3889"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"Javiery3889"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"Javiery3889"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"Javiery3889"},"content":" NameContainsKeywordPredicate firstPredicateCopy \u003d new NameContainsKeywordPredicate(firstPredicateKeyword);","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"Javiery3889"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"Javiery3889"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"Javiery3889"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"Javiery3889"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"Javiery3889"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"Javiery3889"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"Javiery3889"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"Javiery3889"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"Javiery3889"},"content":" public void test_nameEmpty_exceptionThrown() {","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"Javiery3889"},"content":" // empty name -\u003e exception thrown","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"Javiery3889"},"content":" NameContainsKeywordPredicate predicate \u003d new NameContainsKeywordPredicate(\" \");","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"Javiery3889"},"content":" IllegalArgumentException exception \u003d assertThrows(IllegalArgumentException.class, () -\u003e {","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"Javiery3889"},"content":" predicate.test(new PersonBuilder().withName(\"Alice\").build());","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"Javiery3889"},"content":" });","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"Javiery3889"},"content":" assertEquals(\"subString parameter cannot be empty\", exception.getMessage());","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"Javiery3889"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"Javiery3889"},"content":" public void test_nameContainsKeyword_returnsTrue() {","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"Javiery3889"},"content":" // One keyword","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"Javiery3889"},"content":" NameContainsKeywordPredicate predicate \u003d new NameContainsKeywordPredicate(\"Alice\");","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"Javiery3889"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Tan\").build()));","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"Javiery3889"},"content":" // Exact word","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"Javiery3889"},"content":" predicate \u003d new NameContainsKeywordPredicate(\"Alice Tan Li Li\");","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"Javiery3889"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Tan Li Li\").build()));","lastModifiedDate":"2024-03-14"},{"lineNumber":58,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"Javiery3889"},"content":" // Name contains keyword","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"Javiery3889"},"content":" predicate \u003d new NameContainsKeywordPredicate(\"Ali\");","lastModifiedDate":"2024-03-14"},{"lineNumber":61,"author":{"gitId":"Javiery3889"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice\").build()));","lastModifiedDate":"2024-03-14"},{"lineNumber":62,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":63,"author":{"gitId":"Javiery3889"},"content":" // Mixed-case keyword","lastModifiedDate":"2024-03-14"},{"lineNumber":64,"author":{"gitId":"Javiery3889"},"content":" predicate \u003d new NameContainsKeywordPredicate(\"aLIce\");","lastModifiedDate":"2024-03-14"},{"lineNumber":65,"author":{"gitId":"Javiery3889"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Yeoh\").build()));","lastModifiedDate":"2024-03-14"},{"lineNumber":66,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":67,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"Javiery3889"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":69,"author":{"gitId":"Javiery3889"},"content":" public void test_nameDoesNotContainKeyword_returnsFalse() {","lastModifiedDate":"2024-03-15"},{"lineNumber":70,"author":{"gitId":"Javiery3889"},"content":" // Non-matching keyword","lastModifiedDate":"2024-03-14"},{"lineNumber":71,"author":{"gitId":"Javiery3889"},"content":" NameContainsKeywordPredicate predicate \u003d new NameContainsKeywordPredicate(\"Carol\");","lastModifiedDate":"2024-03-14"},{"lineNumber":72,"author":{"gitId":"Javiery3889"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice Tan\").build()));","lastModifiedDate":"2024-03-14"},{"lineNumber":73,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":74,"author":{"gitId":"Javiery3889"},"content":" // Reversed keyword","lastModifiedDate":"2024-03-15"},{"lineNumber":75,"author":{"gitId":"Javiery3889"},"content":" predicate \u003d new NameContainsKeywordPredicate(\"Tan Alex\");","lastModifiedDate":"2024-03-15"},{"lineNumber":76,"author":{"gitId":"Javiery3889"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alex Tan\").build()));","lastModifiedDate":"2024-03-15"},{"lineNumber":77,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":78,"author":{"gitId":"Javiery3889"},"content":" // Keywords match phone, but does not match name","lastModifiedDate":"2024-03-14"},{"lineNumber":79,"author":{"gitId":"Javiery3889"},"content":" predicate \u003d new NameContainsKeywordPredicate(\"91002921\");","lastModifiedDate":"2024-03-14"},{"lineNumber":80,"author":{"gitId":"Javiery3889"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").withPhone(\"91002921\")","lastModifiedDate":"2024-03-14"},{"lineNumber":81,"author":{"gitId":"Javiery3889"},"content":" .withEmail(\"alice@email.com\").withAddress(\"MainStreet\").build()));","lastModifiedDate":"2024-03-14"},{"lineNumber":82,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":83,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":84,"author":{"gitId":"Javiery3889"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":85,"author":{"gitId":"Javiery3889"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-14"},{"lineNumber":86,"author":{"gitId":"Javiery3889"},"content":" String keyword \u003d \"Alice\";","lastModifiedDate":"2024-03-15"},{"lineNumber":87,"author":{"gitId":"Javiery3889"},"content":" NameContainsKeywordPredicate predicate \u003d new NameContainsKeywordPredicate(keyword);","lastModifiedDate":"2024-03-14"},{"lineNumber":88,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":89,"author":{"gitId":"Javiery3889"},"content":" String expected \u003d NameContainsKeywordPredicate.class.getCanonicalName() + \"{name\u003d\" + keyword + \"}\";","lastModifiedDate":"2024-03-14"},{"lineNumber":90,"author":{"gitId":"Javiery3889"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2024-03-14"},{"lineNumber":91,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":92,"author":{"gitId":"Javiery3889"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"Javiery3889":92}},{"path":"src/test/java/seedu/findvisor/model/person/NameTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.model.person;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-10"},{"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":{"KohGuanZeh":2,"-":58}},{"path":"src/test/java/seedu/findvisor/model/person/PersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.model.person;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-10"},{"lineNumber":7,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-10"},{"lineNumber":10,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-03-10"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.createValidMeeting;","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-10"},{"lineNumber":13,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-10"},{"lineNumber":14,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.TypicalPersons.BOB;","lastModifiedDate":"2024-03-10"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-11"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.testutil.PersonBuilder;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTags().remove(0));","lastModifiedDate":"2019-03-23"},{"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":"KohGuanZeh"},"content":" // same phone number, all other attributes different -\u003e returns true","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"KohGuanZeh"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"-"},"content":" .withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":43,"author":{"gitId":"KohGuanZeh"},"content":" // different phone number, all other attributes same -\u003e returns false","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"KohGuanZeh"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","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.equals(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.equals(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2018-04-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18"},{"lineNumber":85,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":86,"author":{"gitId":"Dethada"},"content":" // different meetings -\u003e returns false","lastModifiedDate":"2024-03-11"},{"lineNumber":87,"author":{"gitId":"Dethada"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withMeeting(Optional.of(createValidMeeting())).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":88,"author":{"gitId":"Dethada"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2024-03-11"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2019-02-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", address\u003d\" + ALICE.getAddress() + \", meeting\u003d\" + ALICE.getMeeting()","lastModifiedDate":"2024-02-22"},{"lineNumber":95,"author":{"gitId":"-"},"content":" + \", tags\u003d\" + ALICE.getTags() + \"}\";","lastModifiedDate":"2024-02-22"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"KohGuanZeh":14,"Dethada":6,"-":78}},{"path":"src/test/java/seedu/findvisor/model/person/PhoneContainsKeywordPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Javiery3889"},"content":"package seedu.findvisor.model.person;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"Javiery3889"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"Javiery3889"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"Javiery3889"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"Javiery3889"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"Javiery3889"},"content":"import seedu.findvisor.testutil.PersonBuilder;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"Javiery3889"},"content":"public class PhoneContainsKeywordPredicateTest {","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"Javiery3889"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"Javiery3889"},"content":" public void equals() {","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"Javiery3889"},"content":" String firstPredicateKeyword \u003d \"91234567\";","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"Javiery3889"},"content":" String secondPredicateKeyword \u003d \"84382123\";","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"Javiery3889"},"content":" PhoneContainsKeywordPredicate firstPredicate \u003d new PhoneContainsKeywordPredicate(firstPredicateKeyword);","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"Javiery3889"},"content":" PhoneContainsKeywordPredicate secondPredicate \u003d new PhoneContainsKeywordPredicate(secondPredicateKeyword);","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"Javiery3889"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"Javiery3889"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"Javiery3889"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"Javiery3889"},"content":" PhoneContainsKeywordPredicate firstPredicateCopy \u003d new PhoneContainsKeywordPredicate(firstPredicateKeyword);","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"Javiery3889"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"Javiery3889"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"Javiery3889"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"Javiery3889"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"Javiery3889"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"Javiery3889"},"content":" // different phone number -\u003e returns false","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"Javiery3889"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"Javiery3889"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"Javiery3889"},"content":" public void test_phoneContainsKeyword_returnsTrue() {","lastModifiedDate":"2024-03-15"},{"lineNumber":40,"author":{"gitId":"Javiery3889"},"content":" // Exact match","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"Javiery3889"},"content":" PhoneContainsKeywordPredicate predicate \u003d new PhoneContainsKeywordPredicate(\"91234567\");","lastModifiedDate":"2024-03-15"},{"lineNumber":42,"author":{"gitId":"Javiery3889"},"content":" assertTrue(predicate.test(new PersonBuilder().withPhone(\"91234567\").build()));","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"Javiery3889"},"content":" predicate \u003d new PhoneContainsKeywordPredicate(\"9123\");","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"Javiery3889"},"content":" assertTrue(predicate.test(new PersonBuilder().withPhone(\"91234567\").build()));","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"Javiery3889"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"Javiery3889"},"content":" public void test_phoneDoesNotContainsKeyword_returnsFalse() {","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"Javiery3889"},"content":" // Non-matching keyword","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"Javiery3889"},"content":" PhoneContainsKeywordPredicate predicate \u003d new PhoneContainsKeywordPredicate(\"91234567\");","lastModifiedDate":"2024-03-15"},{"lineNumber":52,"author":{"gitId":"Javiery3889"},"content":" assertFalse(predicate.test(new PersonBuilder().withPhone(\"84382123\").build()));","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"Javiery3889"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"Javiery3889"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"Javiery3889"},"content":" String keyword \u003d \"91234567\";","lastModifiedDate":"2024-03-15"},{"lineNumber":58,"author":{"gitId":"Javiery3889"},"content":" PhoneContainsKeywordPredicate predicate \u003d new PhoneContainsKeywordPredicate(keyword);","lastModifiedDate":"2024-03-15"},{"lineNumber":59,"author":{"gitId":"Javiery3889"},"content":" String expected \u003d PhoneContainsKeywordPredicate.class.getCanonicalName() + \"{phone\u003d\" + keyword + \"}\";","lastModifiedDate":"2024-03-15"},{"lineNumber":60,"author":{"gitId":"Javiery3889"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2024-03-14"},{"lineNumber":61,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":62,"author":{"gitId":"Javiery3889"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"Javiery3889":62}},{"path":"src/test/java/seedu/findvisor/model/person/PhoneTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.model.person;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-10"},{"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":"Arixeyeion"},"content":" assertFalse(Phone.isValidPhone(\"9123456\")); // less than 8 numbers","lastModifiedDate":"2024-03-13"},{"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":"2024-03-17"},{"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(\"93121534\"));","lastModifiedDate":"2017-01-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"Arixeyeion"},"content":" Phone phone \u003d new Phone(\"99912345\");","lastModifiedDate":"2024-03-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"Arixeyeion"},"content":" assertTrue(phone.equals(new Phone(\"99912345\")));","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertTrue(phone.equals(phone));","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"Arixeyeion"},"content":" assertFalse(phone.equals(new Phone(\"88812345\")));","lastModifiedDate":"2024-03-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"Arixeyeion":4,"KohGuanZeh":2,"-":52}},{"path":"src/test/java/seedu/findvisor/model/person/TagsContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Javiery3889"},"content":"package seedu.findvisor.model.person;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"Javiery3889"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"Javiery3889"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"Javiery3889"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"Javiery3889"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"Javiery3889"},"content":"import java.util.List;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"Javiery3889"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"Javiery3889"},"content":"import seedu.findvisor.model.tag.TagsContainsKeywordsPredicate;","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"Javiery3889"},"content":"import seedu.findvisor.testutil.PersonBuilder;","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"Javiery3889"},"content":"public class TagsContainsKeywordsPredicateTest {","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"Javiery3889"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"Javiery3889"},"content":" public void equals() {","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"Javiery3889"},"content":" List\u003cString\u003e firstPredicateKeywords \u003d Arrays.asList(new String[]{\"tag1\"});","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"Javiery3889"},"content":" List\u003cString\u003e secondPredicateKeywords \u003d Arrays.asList(new String[]{\"tag2\", \"tag3\"});","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"Javiery3889"},"content":" TagsContainsKeywordsPredicate firstPredicate \u003d new TagsContainsKeywordsPredicate(firstPredicateKeywords);","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"Javiery3889"},"content":" TagsContainsKeywordsPredicate secondPredicate \u003d new TagsContainsKeywordsPredicate(secondPredicateKeywords);","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"Javiery3889"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"Javiery3889"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"Javiery3889"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"Javiery3889"},"content":" TagsContainsKeywordsPredicate firstPredicateCopy \u003d new TagsContainsKeywordsPredicate(firstPredicateKeywords);","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"Javiery3889"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"Javiery3889"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"Javiery3889"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"Javiery3889"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"Javiery3889"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"Javiery3889"},"content":" // different tags-\u003e returns false","lastModifiedDate":"2024-03-15"},{"lineNumber":39,"author":{"gitId":"Javiery3889"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"Javiery3889"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"Javiery3889"},"content":" public void test_tagsContainsKeywords_returnsTrue() {","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"Javiery3889"},"content":" // single tag","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"Javiery3889"},"content":" TagsContainsKeywordsPredicate predicate \u003d new TagsContainsKeywordsPredicate(","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"Javiery3889"},"content":" Arrays.asList(new String[]{\"friends\"}));","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"Javiery3889"},"content":" assertTrue(predicate.test(new PersonBuilder().withTags(\"friends\").build()));","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"Javiery3889"},"content":" // keyword is a substring","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"Javiery3889"},"content":" predicate \u003d new TagsContainsKeywordsPredicate(Arrays.asList(new String[]{\"pru\"}));","lastModifiedDate":"2024-03-15"},{"lineNumber":51,"author":{"gitId":"Javiery3889"},"content":" assertTrue(predicate.test(new PersonBuilder().withTags(\"PRUActive\", \"PRUEssential\").build()));","lastModifiedDate":"2024-03-15"},{"lineNumber":52,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"Javiery3889"},"content":" // multiple tags","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"Javiery3889"},"content":" predicate \u003d new TagsContainsKeywordsPredicate(Arrays.asList(new String[]{\"friends\", \"husband\"}));","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"Javiery3889"},"content":" assertTrue(predicate.test(new PersonBuilder().withTags(\"friends\", \"husband\", \"wife\").build()));","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":58,"author":{"gitId":"Javiery3889"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"Javiery3889"},"content":" public void test_tagsDoesNotContainsKeywords_returnsFalse() {","lastModifiedDate":"2024-03-15"},{"lineNumber":60,"author":{"gitId":"Javiery3889"},"content":" // Non-matching keywords","lastModifiedDate":"2024-03-14"},{"lineNumber":61,"author":{"gitId":"Javiery3889"},"content":" TagsContainsKeywordsPredicate predicate \u003d new TagsContainsKeywordsPredicate(","lastModifiedDate":"2024-03-14"},{"lineNumber":62,"author":{"gitId":"Javiery3889"},"content":" Arrays.asList(new String[]{\"basketball\", \"football\"}));","lastModifiedDate":"2024-03-14"},{"lineNumber":63,"author":{"gitId":"Javiery3889"},"content":" assertFalse(predicate.test(new PersonBuilder().withTags(\"friends\", \"husband\", \"wife\").build()));","lastModifiedDate":"2024-03-14"},{"lineNumber":64,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":65,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":66,"author":{"gitId":"Javiery3889"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":67,"author":{"gitId":"Javiery3889"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"Javiery3889"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(new String[]{\"exampleTag1, exampleTag2\"});","lastModifiedDate":"2024-03-14"},{"lineNumber":69,"author":{"gitId":"Javiery3889"},"content":" TagsContainsKeywordsPredicate predicate \u003d new TagsContainsKeywordsPredicate(keywords);","lastModifiedDate":"2024-03-14"},{"lineNumber":70,"author":{"gitId":"Javiery3889"},"content":" String expected \u003d TagsContainsKeywordsPredicate.class.getCanonicalName()","lastModifiedDate":"2024-03-14"},{"lineNumber":71,"author":{"gitId":"Javiery3889"},"content":" + \"{tags\u003d\" + keywords.toString() + \"}\";","lastModifiedDate":"2024-03-14"},{"lineNumber":72,"author":{"gitId":"Javiery3889"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2024-03-14"},{"lineNumber":73,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":74,"author":{"gitId":"Javiery3889"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"Javiery3889":74}},{"path":"src/test/java/seedu/findvisor/model/person/UniquePersonListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.model.person;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-10"},{"lineNumber":7,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-10"},{"lineNumber":10,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.TypicalPersons.BOB;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2024-03-10"},{"lineNumber":19,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.exceptions.PersonNotFoundException;","lastModifiedDate":"2024-03-10"},{"lineNumber":20,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.testutil.PersonBuilder;","lastModifiedDate":"2024-03-10"},{"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":"-"},"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":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2018-08-08"},{"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":{"KohGuanZeh":9,"-":166}},{"path":"src/test/java/seedu/findvisor/model/tag/TagTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.model.tag;","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":3,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Tag(null));","lastModifiedDate":"2019-03-14"},{"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":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Tag(invalidTagName));","lastModifiedDate":"2019-03-14"},{"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":{"KohGuanZeh":2,"-":24}},{"path":"src/test/java/seedu/findvisor/storage/JsonAdaptedMeetingTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package seedu.findvisor.storage;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.commons.util.DateTimeUtil.parseDateTimeString;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.model.person.Meeting;","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":"public class JsonAdaptedMeetingTest {","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" private static final String VALID_START \u003d \"12-02-2024T12:00\";","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" private static final String VALID_END \u003d \"12-02-2024T13:00\";","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" private static final String INVALID_START \u003d \"INVALID_START\";","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" private static final String INVALID_END \u003d \"INVALID_END\";","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" public void toModelType_validMeeting_returnsOptionalMeeting() throws Exception {","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" JsonAdaptedMeeting jsonMeeting \u003d new JsonAdaptedMeeting(VALID_START, VALID_END);","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" Meeting meeting \u003d new Meeting(parseDateTimeString(VALID_START), parseDateTimeString(VALID_END));","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" assertEquals(meeting, jsonMeeting.toModelType().get());","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" public void toModelType_invalidDateTime_throwsIllegalValueException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" JsonAdaptedMeeting meeting \u003d new JsonAdaptedMeeting(INVALID_START, INVALID_END);","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" String expectedMessage \u003d Meeting.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" assertThrows(IllegalValueException.class, expectedMessage, meeting::toModelType);","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":" meeting \u003d new JsonAdaptedMeeting(VALID_START, INVALID_END);","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" assertThrows(IllegalValueException.class, expectedMessage, meeting::toModelType);","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":" meeting \u003d new JsonAdaptedMeeting(INVALID_START, VALID_END);","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":" assertThrows(IllegalValueException.class, expectedMessage, meeting::toModelType);","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"Dethada"},"content":" public void toModelType_emptyString_returnsEmptyOptionalMeeting() throws Exception {","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"Dethada"},"content":" JsonAdaptedMeeting meeting \u003d new JsonAdaptedMeeting(\"\", \"\");","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"Dethada"},"content":" assertEquals(meeting.toModelType(), Optional.empty());","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"Dethada"},"content":" meeting \u003d new JsonAdaptedMeeting(VALID_START, \"\");","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"Dethada"},"content":" assertEquals(meeting.toModelType(), Optional.empty());","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"Dethada"},"content":" meeting \u003d new JsonAdaptedMeeting(\"\", VALID_END);","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"Dethada"},"content":" assertEquals(meeting.toModelType(), Optional.empty());","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"Dethada":52}},{"path":"src/test/java/seedu/findvisor/storage/JsonAdaptedPersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.storage;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import static seedu.findvisor.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2024-03-10"},{"lineNumber":5,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-10"},{"lineNumber":6,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-10"},{"lineNumber":15,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Address;","lastModifiedDate":"2024-03-10"},{"lineNumber":16,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Email;","lastModifiedDate":"2024-03-10"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.model.person.Meeting;","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Name;","lastModifiedDate":"2024-03-10"},{"lineNumber":19,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Phone;","lastModifiedDate":"2024-03-10"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13"},{"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":"-"},"content":" private static final JsonAdaptedMeeting VALID_MEETING \u003d new JsonAdaptedMeeting(BENSON.getMeeting());","lastModifiedDate":"2024-02-22"},{"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":"-"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_MEETING, VALID_TAGS);","lastModifiedDate":"2024-02-22"},{"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":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-02-22"},{"lineNumber":54,"author":{"gitId":"-"},"content":" VALID_MEETING, VALID_TAGS);","lastModifiedDate":"2024-02-22"},{"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":"-"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_MEETING, VALID_TAGS);","lastModifiedDate":"2024-02-22"},{"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":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-02-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":" VALID_MEETING, VALID_TAGS);","lastModifiedDate":"2024-02-22"},{"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":"-"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_ADDRESS, VALID_MEETING, VALID_TAGS);","lastModifiedDate":"2024-02-22"},{"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":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null, VALID_ADDRESS,","lastModifiedDate":"2024-02-22"},{"lineNumber":86,"author":{"gitId":"-"},"content":" VALID_MEETING, VALID_TAGS);","lastModifiedDate":"2024-02-22"},{"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":"-"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_ADDRESS, VALID_MEETING, VALID_TAGS);","lastModifiedDate":"2024-02-22"},{"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":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, null,","lastModifiedDate":"2024-02-22"},{"lineNumber":102,"author":{"gitId":"-"},"content":" VALID_MEETING, VALID_TAGS);","lastModifiedDate":"2024-02-22"},{"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":"-"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_MEETING, invalidTags);","lastModifiedDate":"2024-02-22"},{"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"},{"lineNumber":116,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":117,"author":{"gitId":"Dethada"},"content":" public void toModelType_nullMeeting_throwsIllegalValueException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":118,"author":{"gitId":"Dethada"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-11"},{"lineNumber":119,"author":{"gitId":"Dethada"},"content":" null, VALID_TAGS);","lastModifiedDate":"2024-03-11"},{"lineNumber":120,"author":{"gitId":"Dethada"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Meeting.class.getSimpleName());","lastModifiedDate":"2024-03-11"},{"lineNumber":121,"author":{"gitId":"Dethada"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-11"},{"lineNumber":122,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":123,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":124,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":125,"author":{"gitId":"Dethada"},"content":" public void toModelType_invalidMeeting_throwsIllegalValueException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":126,"author":{"gitId":"Dethada"},"content":" JsonAdaptedMeeting invalidMeeting \u003d new JsonAdaptedMeeting(\"INVALID_START\", \"INVALID_END\");","lastModifiedDate":"2024-03-11"},{"lineNumber":127,"author":{"gitId":"Dethada"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-11"},{"lineNumber":128,"author":{"gitId":"Dethada"},"content":" invalidMeeting, VALID_TAGS);","lastModifiedDate":"2024-03-11"},{"lineNumber":129,"author":{"gitId":"Dethada"},"content":" String expectedMessage \u003d Meeting.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-11"},{"lineNumber":130,"author":{"gitId":"Dethada"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-11"},{"lineNumber":131,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":132,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"KohGuanZeh":9,"Dethada":18,"-":106}},{"path":"src/test/java/seedu/findvisor/storage/JsonAddressBookStorageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.storage;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-10"},{"lineNumber":6,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-10"},{"lineNumber":7,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.TypicalPersons.HOON;","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.TypicalPersons.IDA;","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-10"},{"lineNumber":19,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.AddressBook;","lastModifiedDate":"2024-03-10"},{"lineNumber":20,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" public void readAddressBook_invalidPersonAddressBook_throwDataLoadingException() {","lastModifiedDate":"2023-06-14"},{"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":"-"},"content":" public void readAddressBook_invalidAndValidPersonAddressBook_throwDataLoadingException() {","lastModifiedDate":"2023-06-14"},{"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":"-"},"content":" original.addPerson(HOON);","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" original.removePerson(ALICE);","lastModifiedDate":"2018-08-13"},{"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":"-"},"content":" original.addPerson(IDA);","lastModifiedDate":"2018-08-13"},{"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":{"KohGuanZeh":9,"-":101}},{"path":"src/test/java/seedu/findvisor/storage/JsonSerializableAddressBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.storage;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.commons.util.JsonUtil;","lastModifiedDate":"2024-03-10"},{"lineNumber":13,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.AddressBook;","lastModifiedDate":"2024-03-10"},{"lineNumber":14,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.testutil.TypicalPersons;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" AddressBook addressBookFromFile \u003d dataFromFile.toModelType();","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" AddressBook typicalPersonsAddressBook \u003d TypicalPersons.getTypicalAddressBook();","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertEquals(addressBookFromFile, typicalPersonsAddressBook);","lastModifiedDate":"2018-08-13"},{"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":"-"},"content":" public void toModelType_invalidPersonFile_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2018-08-13"},{"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":"-"},"content":" public void toModelType_duplicatePersons_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2018-08-13"},{"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":"-"},"content":" assertThrows(IllegalValueException.class, JsonSerializableAddressBook.MESSAGE_DUPLICATE_PERSON,","lastModifiedDate":"2019-03-23"},{"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":{"KohGuanZeh":6,"-":41}},{"path":"src/test/java/seedu/findvisor/storage/JsonUserPrefsStorageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.storage;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.GuiSettings;","lastModifiedDate":"2024-03-10"},{"lineNumber":16,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-10"},{"lineNumber":17,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.UserPrefs;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"addressbook.json\"));","lastModifiedDate":"2018-11-27"},{"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":{"KohGuanZeh":5,"-":118}},{"path":"src/test/java/seedu/findvisor/storage/StorageManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.storage;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.GuiSettings;","lastModifiedDate":"2024-03-10"},{"lineNumber":14,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.AddressBook;","lastModifiedDate":"2024-03-10"},{"lineNumber":15,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-10"},{"lineNumber":16,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.UserPrefs;","lastModifiedDate":"2024-03-10"},{"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":{"KohGuanZeh":6,"-":62}},{"path":"src/test/java/seedu/findvisor/testutil/AddressBookBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.testutil;","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.AddressBook;","lastModifiedDate":"2024-03-10"},{"lineNumber":4,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Person;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" * {@code AddressBook ab \u003d new AddressBookBuilder().withPerson(\"John\", \"Doe\").build();}","lastModifiedDate":"2018-03-29"},{"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":"-"},"content":" * Adds a new {@code Person} to the {@code AddressBook} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public AddressBookBuilder withPerson(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":27,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2016-09-01"},{"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":{"KohGuanZeh":3,"-":31}},{"path":"src/test/java/seedu/findvisor/testutil/Assert.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.testutil;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" Assertions.assertEquals(expectedMessage, thrownException.getMessage());","lastModifiedDate":"2019-03-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-17"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-07-17"}],"authorContributionMap":{"KohGuanZeh":1,"-":33}},{"path":"src/test/java/seedu/findvisor/testutil/EditPersonDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.testutil;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Address;","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Email;","lastModifiedDate":"2024-03-10"},{"lineNumber":10,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Name;","lastModifiedDate":"2024-03-10"},{"lineNumber":11,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Person;","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Phone;","lastModifiedDate":"2024-03-10"},{"lineNumber":13,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.tag.Tag;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" descriptor.setAddress(person.getAddress());","lastModifiedDate":"2017-06-21"},{"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":"-"},"content":" public EditPersonDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"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":"-"},"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":{"KohGuanZeh":8,"-":79}},{"path":"src/test/java/seedu/findvisor/testutil/PersonBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.testutil;","lastModifiedDate":"2024-03-10"},{"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.Optional;","lastModifiedDate":"2024-02-22"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Address;","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Email;","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.model.person.Meeting;","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Name;","lastModifiedDate":"2024-03-10"},{"lineNumber":11,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Person;","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Phone;","lastModifiedDate":"2024-03-10"},{"lineNumber":13,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.tag.Tag;","lastModifiedDate":"2024-03-10"},{"lineNumber":14,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.util.SampleDataUtil;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05"},{"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":"-"},"content":" private Optional\u003cMeeting\u003e meeting;","lastModifiedDate":"2024-02-22"},{"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":"-"},"content":" meeting \u003d Optional.empty();","lastModifiedDate":"2024-02-22"},{"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":"-"},"content":" meeting \u003d personToCopy.getMeeting();","lastModifiedDate":"2024-02-22"},{"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":"-"},"content":" /**","lastModifiedDate":"2024-02-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * Sets the {@code Meeting} of the {@code Person} that we are building.","lastModifiedDate":"2024-02-22"},{"lineNumber":99,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-22"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public PersonBuilder withMeeting(Optional\u003cMeeting\u003e meeting) {","lastModifiedDate":"2024-02-22"},{"lineNumber":101,"author":{"gitId":"-"},"content":" this.meeting \u003d meeting;","lastModifiedDate":"2024-02-22"},{"lineNumber":102,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2024-02-22"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-22"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05"},{"lineNumber":106,"author":{"gitId":"-"},"content":" return new Person(name, phone, email, address, tags, meeting);","lastModifiedDate":"2024-02-22"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":109,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03"}],"authorContributionMap":{"KohGuanZeh":8,"Dethada":1,"-":100}},{"path":"src/test/java/seedu/findvisor/testutil/PersonUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.testutil;","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":3,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-10"},{"lineNumber":4,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-10"},{"lineNumber":5,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-10"},{"lineNumber":6,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-10"},{"lineNumber":7,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-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":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.AddCommand;","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-10"},{"lineNumber":13,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Person;","lastModifiedDate":"2024-03-10"},{"lineNumber":14,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.tag.Tag;","lastModifiedDate":"2024-03-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":"-"},"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":{"KohGuanZeh":10,"-":52}},{"path":"src/test/java/seedu/findvisor/testutil/SerializableTestClass.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.testutil;","lastModifiedDate":"2024-03-10"},{"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":{"KohGuanZeh":1,"-":71}},{"path":"src/test/java/seedu/findvisor/testutil/TestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.testutil;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.index.Index;","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.Model;","lastModifiedDate":"2024-03-10"},{"lineNumber":10,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Person;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" return Index.fromOneBased(model.getFilteredPersonList().size() / 2);","lastModifiedDate":"2018-08-13"},{"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":"-"},"content":" return Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2018-08-13"},{"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":"-"},"content":" public static Person getPerson(Model model, Index index) {","lastModifiedDate":"2018-01-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList().get(index.getZeroBased());","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30"},{"lineNumber":55,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"KohGuanZeh":4,"-":51}},{"path":"src/test/java/seedu/findvisor/testutil/TypicalIndexes.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.testutil;","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":3,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.index.Index;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":"}","lastModifiedDate":"2017-08-05"}],"authorContributionMap":{"KohGuanZeh":2,"-":10}},{"path":"src/test/java/seedu/findvisor/testutil/TypicalPersons.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.testutil;","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":3,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2024-03-10"},{"lineNumber":4,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-10"},{"lineNumber":5,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-03-10"},{"lineNumber":6,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-10"},{"lineNumber":7,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-03-10"},{"lineNumber":10,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-10"},{"lineNumber":11,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-03-10"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07"},{"lineNumber":20,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.AddressBook;","lastModifiedDate":"2024-03-10"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.model.person.Meeting;","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Person;","lastModifiedDate":"2024-03-10"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static final Person ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2018-01-10"},{"lineNumber":30,"author":{"gitId":"-"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2017-04-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2018-04-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":" .withTags(\"friends\").build();","lastModifiedDate":"2016-09-13"},{"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":"-"},"content":" .withTags(\"owesMoney\", \"friends\").build();","lastModifiedDate":"2016-09-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2018-01-10"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\")","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":" .withMeeting(Optional.of(new Meeting(","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":" LocalDateTime.of(2024, 3, 12, 14, 0, 0),","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"Dethada"},"content":" LocalDateTime.of(2024, 3, 12, 15, 0, 0)))).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2018-01-10"},{"lineNumber":43,"author":{"gitId":"-"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\").withTags(\"friends\").build();","lastModifiedDate":"2018-03-26"},{"lineNumber":44,"author":{"gitId":"Arixeyeion"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withPhone(\"94822247\")","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":46,"author":{"gitId":"Arixeyeion"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withPhone(\"94824276\")","lastModifiedDate":"2024-03-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":48,"author":{"gitId":"Arixeyeion"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withPhone(\"94824428\")","lastModifiedDate":"2024-03-15"},{"lineNumber":49,"author":{"gitId":"-"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":52,"author":{"gitId":"Arixeyeion"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"84824247\")","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":54,"author":{"gitId":"Arixeyeion"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"84821318\")","lastModifiedDate":"2024-03-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\").build();","lastModifiedDate":"2017-04-05"},{"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":"-"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-09-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2018-01-10"},{"lineNumber":61,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2017-09-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2017-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":68,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05"},{"lineNumber":72,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10"},{"lineNumber":74,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13"}],"authorContributionMap":{"Arixeyeion":5,"KohGuanZeh":13,"Dethada":7,"-":57}},{"path":"src/test/java/seedu/findvisor/ui/TestFxmlObject.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.ui;","lastModifiedDate":"2024-03-10"},{"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":{"KohGuanZeh":1,"-":44}},{"path":"src/test/java/seedu/findvisor/ui/UiPartTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.ui;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.MainApp;","lastModifiedDate":"2024-03-10"},{"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":"2019-03-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new TestUiPart\u003cObject\u003e((URL) null, new Object()));","lastModifiedDate":"2019-03-14"},{"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":"2019-03-14"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertThrows(AssertionError.class, () -\u003e new TestUiPart\u003cObject\u003e(missingFileUrl, new Object()));","lastModifiedDate":"2019-03-14"},{"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":"2019-03-14"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertThrows(AssertionError.class, () -\u003e new TestUiPart\u003cObject\u003e(invalidFileUrl, new Object()));","lastModifiedDate":"2019-03-14"},{"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":"2019-03-14"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new TestUiPart\u003cObject\u003e((String) null, new Object()));","lastModifiedDate":"2019-03-14"},{"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":"2019-03-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new TestUiPart\u003cObject\u003e(MISSING_FILE_PATH, new Object()));","lastModifiedDate":"2019-03-14"},{"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":"2019-03-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertThrows(AssertionError.class, () -\u003e new TestUiPart\u003cObject\u003e(INVALID_FILE_PATH, new Object()));","lastModifiedDate":"2019-03-14"},{"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":{"KohGuanZeh":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":"KohGuanZeh"},"content":"\u003c?import seedu.findvisor.ui.TestFxmlObject?\u003e","lastModifiedDate":"2024-03-10"},{"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":{"KohGuanZeh":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":"KohGuanZeh"},"content":"\u003cfx:root type\u003d\"seedu.findvisor.ui.TestFxmlObject\" xmlns\u003d\"http://javafx.com/javafx/17\"","lastModifiedDate":"2024-03-10"},{"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":{"KohGuanZeh":1,"-":5}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"# FINDvisor","lastModifiedDate":"2024-02-27"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"[![CI Status](https://github.com/AY2324S2-CS2103-F15-1/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S2-CS2103-F15-1/tp/actions)","lastModifiedDate":"2024-02-27"},{"lineNumber":3,"author":{"gitId":"-"},"content":"[![codecov](https://codecov.io/gh/AY2324S2-CS2103-F15-1/tp/graph/badge.svg?token\u003dvAQ9m3CKxP)](https://codecov.io/gh/AY2324S2-CS2103-F15-1/tp)","lastModifiedDate":"2024-02-18"},{"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":"Dethada"},"content":"*FINDvisor aims to streamline client management for financial advisors with a tool that organizes contact information. Furthermore, it aims to simplify organising meetings, and tracks client goals for better timeline planning—all in one clutter-free interface.* While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface).","lastModifiedDate":"2024-02-27"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"For the detailed documentation of this project, see the **[FINDvisor Product Website](https://ay2324s2-cs2103-f15-1.github.io/tp/)**.","lastModifiedDate":"2024-02-27"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"## Acknowledgements","lastModifiedDate":"2024-02-27"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-02-27"}],"authorContributionMap":{"Dethada":8,"-":4}},{"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":"KohGuanZeh"},"content":"mainClassName \u003d \u0027seedu.findvisor.Main\u0027","lastModifiedDate":"2024-03-10"},{"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":"Javiery3889"},"content":" archiveFileName \u003d \u0027findvisor.jar\u0027","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"Javiery3889"},"content":"run {","lastModifiedDate":"2024-03-24"},{"lineNumber":73,"author":{"gitId":"Javiery3889"},"content":" enableAssertions \u003d true","lastModifiedDate":"2024-03-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-03-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":"defaultTasks \u0027clean\u0027, \u0027test\u0027","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"KohGuanZeh":1,"Javiery3889":3,"-":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":"YuZizhen"},"content":"### Yu Zizhen","lastModifiedDate":"2024-02-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"YuZizhen"},"content":"\u003cimg src\u003d\"images/yuzizhen.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-02-29"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"YuZizhen"},"content":"[[github](https://github.com/YuZizhen)]","lastModifiedDate":"2024-02-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"YuZizhen"},"content":"* Role: Developer","lastModifiedDate":"2024-02-29"},{"lineNumber":17,"author":{"gitId":"YuZizhen"},"content":"* Responsibilities: Deliverables and deadlines","lastModifiedDate":"2024-02-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"YuZizhen"},"content":"### Koh Guan Zeh","lastModifiedDate":"2024-03-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":21,"author":{"gitId":"KohGuanZeh"},"content":"\u003cimg src\u003d\"images/kohguanzeh.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"KohGuanZeh"},"content":"[[github](https://github.com/KohGuanZeh)]","lastModifiedDate":"2024-02-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"YuZizhen"},"content":"* Role: Developer","lastModifiedDate":"2024-02-29"},{"lineNumber":26,"author":{"gitId":"YuZizhen"},"content":"* Responsibilities: Testing","lastModifiedDate":"2024-02-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"Javiery3889"},"content":"### Javier Yong","lastModifiedDate":"2024-02-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"Javiery3889"},"content":"\u003cimg src\u003d\"images/javiery3889.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-02-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"Javiery3889"},"content":"[[github](https://github.com/Javiery3889)]","lastModifiedDate":"2024-02-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2024-02-29"},{"lineNumber":35,"author":{"gitId":"YuZizhen"},"content":"* Responsibilities: Scheduling and Tracking","lastModifiedDate":"2024-02-29"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"Arixeyeion"},"content":"### Lim Yong En, Dominic","lastModifiedDate":"2024-02-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"Arixeyeion"},"content":"\u003cimg src\u003d\"images/arixeyeion.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-02-26"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"Arixeyeion"},"content":"[[github](http://github.com/Arixeyeion)]","lastModifiedDate":"2024-02-26"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2024-02-29"},{"lineNumber":44,"author":{"gitId":"YuZizhen"},"content":"* Responsibilities: Documentation","lastModifiedDate":"2024-02-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"Arixeyeion"},"content":"### David Zhu","lastModifiedDate":"2024-02-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"Arixeyeion"},"content":"\u003cimg src\u003d\"images/dethada.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-02-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"Arixeyeion"},"content":"[[github](http://github.com/Dethada)]","lastModifiedDate":"2024-02-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2024-02-29"},{"lineNumber":53,"author":{"gitId":"YuZizhen"},"content":"* Responsibilities: Code quality","lastModifiedDate":"2024-02-29"}],"authorContributionMap":{"Arixeyeion":6,"KohGuanZeh":2,"Javiery3889":3,"YuZizhen":11,"-":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":"-"},"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 continues till the end of diagram.","lastModifiedDate":"2024-02-09"},{"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).\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-02-09"},{"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":"KohGuanZeh"},"content":"Classes used by multiple components are in the `seedu.findvisor.commons` package.","lastModifiedDate":"2024-03-20"},{"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":"Arixeyeion"},"content":"### Edit Command","lastModifiedDate":"2024-03-21"},{"lineNumber":159,"author":{"gitId":"Arixeyeion"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":160,"author":{"gitId":"KohGuanZeh"},"content":"The section aims to show how the different components interact with each other when a command that changes the data stored in FINDvisor is called.","lastModifiedDate":"2024-03-21"},{"lineNumber":161,"author":{"gitId":"KohGuanZeh"},"content":"While the `edit` command is used as an example, any command that changes data follows a similar interaction.","lastModifiedDate":"2024-03-21"},{"lineNumber":162,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":163,"author":{"gitId":"KohGuanZeh"},"content":"![EditSequenceDiagram-Logic](images/EditSequenceDiagram-Logic.png)","lastModifiedDate":"2024-03-21"},{"lineNumber":164,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":165,"author":{"gitId":"KohGuanZeh"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** The lifeline for `EditCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline continues till the end of diagram.","lastModifiedDate":"2024-03-21"},{"lineNumber":166,"author":{"gitId":"KohGuanZeh"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":167,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":168,"author":{"gitId":"Arixeyeion"},"content":"In the current iteration, `ModelManager` is the only object that implements model outside of testing. The following","lastModifiedDate":"2024-03-21"},{"lineNumber":169,"author":{"gitId":"Arixeyeion"},"content":"sequence diagram shows the interactions within `Model` when editing a person.","lastModifiedDate":"2024-03-21"},{"lineNumber":170,"author":{"gitId":"Arixeyeion"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":171,"author":{"gitId":"Arixeyeion"},"content":"![EditSequenceDiagram-Model](images/EditSequenceDiagram-Model.png)","lastModifiedDate":"2024-03-21"},{"lineNumber":172,"author":{"gitId":"Arixeyeion"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":173,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"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":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"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":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"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":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"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":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"![UndoRedoState0](images/UndoRedoState0.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"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":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":"![UndoRedoState1](images/UndoRedoState1.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"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":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":"![UndoRedoState2](images/UndoRedoState2.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"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":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"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":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"![UndoRedoState3](images/UndoRedoState3.png)","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 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":208,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Logic.png)","lastModifiedDate":"2024-02-09"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"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":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":222,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Model.png)","lastModifiedDate":"2024-02-09"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":224,"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":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":226,"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":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"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":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":"![UndoRedoState4](images/UndoRedoState4.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"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":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":"![UndoRedoState5](images/UndoRedoState5.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/CommitActivityDiagram.png\" width\u003d\"250\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":262,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":264,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":267,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":268,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":269,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":270,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"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":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":278,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":280,"author":{"gitId":"Javiery3889"},"content":"* financial advisors","lastModifiedDate":"2024-02-27"},{"lineNumber":281,"author":{"gitId":"Javiery3889"},"content":"* has a need of scheduling meetings with a significant number of clients","lastModifiedDate":"2024-02-27"},{"lineNumber":282,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23"},{"lineNumber":283,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26"},{"lineNumber":284,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23"},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":286,"author":{"gitId":"Javiery3889"},"content":"**Value proposition**: FINDvisor aims to streamline client management for financial advisors with a tool that organizes contact information. Furthermore, it aims to simplify organising meetings, and tracks client goals for better timeline planning—all in one clutter-free interface.","lastModifiedDate":"2024-02-27"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":288,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":289,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":291,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":293,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":294,"author":{"gitId":"Javiery3889"},"content":"|----------|-------------------|------------------------------------------------------------------------------------|---------------------------------------------------------------------------------|","lastModifiedDate":"2024-02-27"},{"lineNumber":295,"author":{"gitId":"Javiery3889"},"content":"| `* * *` | New user | easily download and launch FINDvisor | quickly start managing my client information |","lastModifiedDate":"2024-02-27"},{"lineNumber":296,"author":{"gitId":"Javiery3889"},"content":"| `* * *` | New user | know what are the available functionalities of FINDvisor | |","lastModifiedDate":"2024-02-27"},{"lineNumber":297,"author":{"gitId":"Javiery3889"},"content":"| `* * *` | New user | know how to operate the basic functionalities of FINDvisor within the app | |","lastModifiedDate":"2024-02-27"},{"lineNumber":298,"author":{"gitId":"Javiery3889"},"content":"| `* * *` | Financial Advisor | add contacts of my clients | keep a record of my clients\u0027 contact information |","lastModifiedDate":"2024-02-27"},{"lineNumber":299,"author":{"gitId":"Javiery3889"},"content":"| `* * *` | Financial Advisor | find contacts of my clients | find information on a specific client |","lastModifiedDate":"2024-02-27"},{"lineNumber":300,"author":{"gitId":"Javiery3889"},"content":"| `* * *` | Financial Advisor | update client\u0027s contact information | not need to delete and create new contact information |","lastModifiedDate":"2024-02-27"},{"lineNumber":301,"author":{"gitId":"Javiery3889"},"content":"| `* * *` | Financial Advisor | remove contact information | reduce clutter in contact list with clients I have severed ties with |","lastModifiedDate":"2024-02-27"},{"lineNumber":302,"author":{"gitId":"Javiery3889"},"content":"| `* * *` | Financial Advisor | attach a meeting date and time to my client contact | know the next meeting plan with a specific client |","lastModifiedDate":"2024-02-27"},{"lineNumber":303,"author":{"gitId":"Javiery3889"},"content":"| `* * *` | Financial Advisor | filter contact list by tags | update the other parties under the same plan if they were not present in the meeting |","lastModifiedDate":"2024-02-27"},{"lineNumber":304,"author":{"gitId":"Javiery3889"},"content":"| `* * *` | Financial Advisor | delete a scheduled meeting | keep my schedule up-to-date |","lastModifiedDate":"2024-02-27"},{"lineNumber":305,"author":{"gitId":"Javiery3889"},"content":"| `* * *` | Financial Advisor | group my clients into different groupings according to financial plans | easily find target clients |","lastModifiedDate":"2024-02-27"},{"lineNumber":306,"author":{"gitId":"Javiery3889"},"content":"| `* *` | Financial Advisor | be able to view all my meetings for the day | be prepared for my meetings of the day |","lastModifiedDate":"2024-02-27"},{"lineNumber":307,"author":{"gitId":"Javiery3889"},"content":"| `* *` | Financial Advisor | filter contact list by meeting details | find out who I\u0027m meeting |","lastModifiedDate":"2024-02-27"},{"lineNumber":308,"author":{"gitId":"Javiery3889"},"content":"| `* *` | Financial Advisor | modify a scheduled meeting\u0027s details | keep up-to-date with the meeting\u0027s details |","lastModifiedDate":"2024-02-27"},{"lineNumber":309,"author":{"gitId":"Javiery3889"},"content":"| `* *` | Financial Advisor | shift clients into different groups | reorganize in the event of changes |","lastModifiedDate":"2024-02-27"},{"lineNumber":310,"author":{"gitId":"Javiery3889"},"content":"| `* *` | Financial Advisor | be able to add simple notes to my client contact information | know their financial goals to prepare me for my next meeting with them |","lastModifiedDate":"2024-02-27"},{"lineNumber":311,"author":{"gitId":"Javiery3889"},"content":"| `*` | New user | import contact information in bulk to FINDvisor | save time and ensure no client is overlooked |","lastModifiedDate":"2024-02-27"},{"lineNumber":312,"author":{"gitId":"Javiery3889"},"content":"| `*` | Financial Advisor | filter for upcoming meet plans at given time | know the meeting plans at the given time |","lastModifiedDate":"2024-02-27"},{"lineNumber":313,"author":{"gitId":"Javiery3889"},"content":"| `*` | Financial Advisor | schedule recurring meeting plans | not have to manually add the meeting one by one |","lastModifiedDate":"2024-02-27"},{"lineNumber":314,"author":{"gitId":"Javiery3889"},"content":"| `*` | Financial Advisor | group my clients into different groupings according to clients\u0027 relationships | easily manage clients\u0027 that have relationships |","lastModifiedDate":"2024-02-27"},{"lineNumber":315,"author":{"gitId":"Javiery3889"},"content":"| `*` | Financial Advisor | able to attach a note about each meeting | know what the meeting is about |","lastModifiedDate":"2024-02-27"},{"lineNumber":316,"author":{"gitId":"Javiery3889"},"content":"| `*` | Experienced User | bulk remove old contact data that is no longer needed | reduce clutter |","lastModifiedDate":"2024-02-27"},{"lineNumber":317,"author":{"gitId":"Javiery3889"},"content":"| `*` | Experienced User | bulk remove past meeting data that is no longer needed | reduce clutter |","lastModifiedDate":"2024-02-27"},{"lineNumber":318,"author":{"gitId":"Javiery3889"},"content":"| `*` | Experienced User | be able to use shorthand commands | speed up my workflow |","lastModifiedDate":"2024-02-27"},{"lineNumber":319,"author":{"gitId":"Javiery3889"},"content":"| `*` | Experienced User | set up shortcuts that I can run | speed up my workflow |","lastModifiedDate":"2024-02-27"},{"lineNumber":320,"author":{"gitId":"Javiery3889"},"content":"| `*` | Experienced User | export my data | backup my data |","lastModifiedDate":"2024-02-27"},{"lineNumber":321,"author":{"gitId":"Javiery3889"},"content":"| `*` | Experienced User | import my data | restore my data from backup |","lastModifiedDate":"2024-02-27"},{"lineNumber":322,"author":{"gitId":"Javiery3889"},"content":"| `*` | Experienced User | archive contact data that are not in use, but I still want to keep | reduce clutter |","lastModifiedDate":"2024-02-27"},{"lineNumber":323,"author":{"gitId":"Javiery3889"},"content":"| `*` | Experienced User | archive past meeting data that are not in use, but I still want to keep | reduce clutter |","lastModifiedDate":"2024-02-27"},{"lineNumber":324,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":325,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":326,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":327,"author":{"gitId":"KohGuanZeh"},"content":"(For all use cases below, the **System** is the `FINDvisor` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2024-02-26"},{"lineNumber":328,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":329,"author":{"gitId":"KohGuanZeh"},"content":"**Use case: Edit a person**","lastModifiedDate":"2024-02-26"},{"lineNumber":330,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":331,"author":{"gitId":"KohGuanZeh"},"content":"**MSS**","lastModifiedDate":"2024-02-26"},{"lineNumber":332,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":333,"author":{"gitId":"KohGuanZeh"},"content":"1. User requests to list persons.","lastModifiedDate":"2024-02-26"},{"lineNumber":334,"author":{"gitId":"KohGuanZeh"},"content":"2. FINDvisor shows a list of persons.","lastModifiedDate":"2024-02-26"},{"lineNumber":335,"author":{"gitId":"KohGuanZeh"},"content":"3. User requests to edit a specific person in the list and the fields to edit.","lastModifiedDate":"2024-02-26"},{"lineNumber":336,"author":{"gitId":"KohGuanZeh"},"content":"4. FINDvisor edits the person.","lastModifiedDate":"2024-02-26"},{"lineNumber":337,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":338,"author":{"gitId":"KohGuanZeh"},"content":" Use case ends.","lastModifiedDate":"2024-02-26"},{"lineNumber":339,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":340,"author":{"gitId":"KohGuanZeh"},"content":"**Extensions**","lastModifiedDate":"2024-02-26"},{"lineNumber":341,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":342,"author":{"gitId":"KohGuanZeh"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-02-26"},{"lineNumber":343,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":344,"author":{"gitId":"KohGuanZeh"},"content":" Use case ends.","lastModifiedDate":"2024-02-26"},{"lineNumber":345,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":346,"author":{"gitId":"KohGuanZeh"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2024-02-26"},{"lineNumber":347,"author":{"gitId":"KohGuanZeh"},"content":" * 3a1. FINDvisor shows an error message.","lastModifiedDate":"2024-02-26"},{"lineNumber":348,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":349,"author":{"gitId":"KohGuanZeh"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-02-26"},{"lineNumber":350,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":351,"author":{"gitId":"KohGuanZeh"},"content":"* 3b. No fields are given.","lastModifiedDate":"2024-02-26"},{"lineNumber":352,"author":{"gitId":"KohGuanZeh"},"content":" * 3b1. FINDvisor shows an error message.","lastModifiedDate":"2024-02-26"},{"lineNumber":353,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":354,"author":{"gitId":"KohGuanZeh"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-02-26"},{"lineNumber":355,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":356,"author":{"gitId":"KohGuanZeh"},"content":"* 3c. Fields do not comply with stated formats and constraints.","lastModifiedDate":"2024-02-26"},{"lineNumber":357,"author":{"gitId":"KohGuanZeh"},"content":" * 3c1. FINDvisor shows an error message.","lastModifiedDate":"2024-02-26"},{"lineNumber":358,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":359,"author":{"gitId":"KohGuanZeh"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-02-26"},{"lineNumber":360,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":361,"author":{"gitId":"-"},"content":"**Use case: Delete a person**","lastModifiedDate":"2020-05-23"},{"lineNumber":362,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":363,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":364,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":365,"author":{"gitId":"KohGuanZeh"},"content":"1. User requests to list persons.","lastModifiedDate":"2024-02-26"},{"lineNumber":366,"author":{"gitId":"KohGuanZeh"},"content":"2. FINDvisor shows a list of persons.","lastModifiedDate":"2024-02-26"},{"lineNumber":367,"author":{"gitId":"KohGuanZeh"},"content":"3. User requests to delete a specific person in the list.","lastModifiedDate":"2024-02-26"},{"lineNumber":368,"author":{"gitId":"KohGuanZeh"},"content":"4. FINDvisor deletes the person.","lastModifiedDate":"2024-02-26"},{"lineNumber":369,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":370,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":371,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":372,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":373,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":374,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2020-05-23"},{"lineNumber":375,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":376,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":377,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":378,"author":{"gitId":"-"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2020-05-23"},{"lineNumber":379,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":380,"author":{"gitId":"KohGuanZeh"},"content":" * 3a1. FINDvisor shows an error message.","lastModifiedDate":"2024-02-26"},{"lineNumber":381,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":382,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23"},{"lineNumber":383,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":384,"author":{"gitId":"Dethada"},"content":"**Use Case: Scheduling a meeting with a new person**","lastModifiedDate":"2024-02-26"},{"lineNumber":385,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":386,"author":{"gitId":"Dethada"},"content":"**MSS**","lastModifiedDate":"2024-02-26"},{"lineNumber":387,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":388,"author":{"gitId":"Dethada"},"content":"1. User adds new person to FINDvisor.","lastModifiedDate":"2024-02-27"},{"lineNumber":389,"author":{"gitId":"Dethada"},"content":"2. User requests to list persons.","lastModifiedDate":"2024-02-27"},{"lineNumber":390,"author":{"gitId":"Dethada"},"content":"3. FINDvisor shows a list of persons.","lastModifiedDate":"2024-02-27"},{"lineNumber":391,"author":{"gitId":"Dethada"},"content":"4. User requests to schedule a meeting with a specific person in the list.","lastModifiedDate":"2024-02-27"},{"lineNumber":392,"author":{"gitId":"Dethada"},"content":"5. Meeting is scheduled.","lastModifiedDate":"2024-02-27"},{"lineNumber":393,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":394,"author":{"gitId":"Dethada"},"content":" Use case ends.","lastModifiedDate":"2024-02-27"},{"lineNumber":395,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":396,"author":{"gitId":"Dethada"},"content":"**Extensions**","lastModifiedDate":"2024-02-26"},{"lineNumber":397,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":398,"author":{"gitId":"Dethada"},"content":"* 1a. The given details for adding a new person is invalid.","lastModifiedDate":"2024-02-26"},{"lineNumber":399,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":400,"author":{"gitId":"Dethada"},"content":" * 1a1. FINDvisor shows an error message.","lastModifiedDate":"2024-02-26"},{"lineNumber":401,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":402,"author":{"gitId":"Dethada"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-02-26"},{"lineNumber":403,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":404,"author":{"gitId":"Dethada"},"content":"* 4a. The given index is invalid.","lastModifiedDate":"2024-02-26"},{"lineNumber":405,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":406,"author":{"gitId":"Dethada"},"content":" * 4a1. FINDvisor shows an error message.","lastModifiedDate":"2024-02-26"},{"lineNumber":407,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":408,"author":{"gitId":"Dethada"},"content":" Use case resumes at step 3.","lastModifiedDate":"2024-02-26"},{"lineNumber":409,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":410,"author":{"gitId":"Dethada"},"content":"* 4b. The given meeting datetime is invalid.","lastModifiedDate":"2024-02-26"},{"lineNumber":411,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":412,"author":{"gitId":"Dethada"},"content":" * 4b1. FINDvisor shows an error message.","lastModifiedDate":"2024-02-26"},{"lineNumber":413,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":414,"author":{"gitId":"Dethada"},"content":" Use case resumes at step 3.","lastModifiedDate":"2024-02-26"},{"lineNumber":415,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":416,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":417,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":418,"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":419,"author":{"gitId":"Arixeyeion"},"content":"2. Should work without requiring an installer.","lastModifiedDate":"2024-02-26"},{"lineNumber":420,"author":{"gitId":"Arixeyeion"},"content":"3. Should be packaged into a single jar file.","lastModifiedDate":"2024-02-26"},{"lineNumber":421,"author":{"gitId":"Arixeyeion"},"content":"4. Should be below the size limit of 100MB for FINDvisor and 15MB for Docs.","lastModifiedDate":"2024-02-26"},{"lineNumber":422,"author":{"gitId":"Arixeyeion"},"content":"5. Should be able to hold up to 1000 persons without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2024-02-26"},{"lineNumber":423,"author":{"gitId":"Arixeyeion"},"content":"6. Should not depend on a remote server.","lastModifiedDate":"2024-02-26"},{"lineNumber":424,"author":{"gitId":"Arixeyeion"},"content":"7. 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":"2024-02-26"},{"lineNumber":425,"author":{"gitId":"Arixeyeion"},"content":"8. Should not cause any resolution-related inconveniences to user.","lastModifiedDate":"2024-02-26"},{"lineNumber":426,"author":{"gitId":"Arixeyeion"},"content":"9. Should store data locally in a human editable text file without the use of DBMS.","lastModifiedDate":"2024-02-26"},{"lineNumber":427,"author":{"gitId":"Arixeyeion"},"content":"10. Should be used by a single user.","lastModifiedDate":"2024-02-26"},{"lineNumber":428,"author":{"gitId":"Arixeyeion"},"content":"11. Command names should be representative of their actions.","lastModifiedDate":"2024-02-27"},{"lineNumber":429,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":430,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":431,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":432,"author":{"gitId":"KohGuanZeh"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS.","lastModifiedDate":"2024-02-26"},{"lineNumber":433,"author":{"gitId":"KohGuanZeh"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others.","lastModifiedDate":"2024-02-26"},{"lineNumber":434,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":435,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":436,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":437,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":438,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":439,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":440,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":441,"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":442,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":443,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":444,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":445,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":446,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":447,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":448,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":449,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":450,"author":{"gitId":"KohGuanZeh"},"content":" 1. Download the jar file and copy into an empty folder.","lastModifiedDate":"2024-02-26"},{"lineNumber":451,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":452,"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":453,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":454,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":455,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":456,"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":457,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":458,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":459,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":460,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":461,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":462,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":463,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":464,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":465,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":466,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":467,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":468,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":469,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":470,"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":471,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":472,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":473,"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":474,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":475,"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":476,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":477,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":478,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":479,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":480,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":481,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":482,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":483,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":484,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":485,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":486,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"Arixeyeion":17,"KohGuanZeh":50,"Javiery3889":33,"Dethada":31,"-":355}},{"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":"KohGuanZeh"},"content":" 1. Run the `seedu.findvisor.Main` and try a few commands.","lastModifiedDate":"2024-03-10"},{"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":{"KohGuanZeh":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":"KohGuanZeh"},"content":" e.g. `seedu.findvisor.commons.StringUtilTest`","lastModifiedDate":"2024-03-10"},{"lineNumber":33,"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":34,"author":{"gitId":"KohGuanZeh"},"content":" e.g. `seedu.findvisor.storage.StorageManagerTest`","lastModifiedDate":"2024-03-10"},{"lineNumber":35,"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":36,"author":{"gitId":"KohGuanZeh"},"content":" e.g. `seedu.findvisor.logic.LogicManagerTest`","lastModifiedDate":"2024-03-10"}],"authorContributionMap":{"KohGuanZeh":3,"-":33}},{"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":"Arixeyeion"},"content":"FINDvisor is a **desktop app for financial advisors to manage contacts, 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, FINDvisor can get your contact management and meeting scheduling tasks done faster than traditional GUI apps.","lastModifiedDate":"2024-02-26"},{"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":"Arixeyeion"},"content":"1. Download the latest `findvisor.jar` from [here](https://github.com/AY2324S2-CS2103-F15-1/tp/releases).","lastModifiedDate":"2024-02-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"Arixeyeion"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your FINDvisor.","lastModifiedDate":"2024-02-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"Arixeyeion"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar findvisor.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2024-02-26"},{"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":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"Arixeyeion"},"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 FINDvisor.","lastModifiedDate":"2024-02-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2023-01-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01"},{"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":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"KohGuanZeh"},"content":" * e.g. in `add n/NAME`, `NAME` is a parameter which can be used as `add n/John Doe`.","lastModifiedDate":"2024-02-25"},{"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":"KohGuanZeh"},"content":" * e.g `n/NAME [t/TAG]` can be used as `n/John Doe t/friend` or as `n/John Doe`.","lastModifiedDate":"2024-02-25"},{"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":"KohGuanZeh"},"content":" * e.g. `[t/TAG]…​` can be used as ` ` (i.e. 0 times), `t/friend`, `t/friend t/family` etc.","lastModifiedDate":"2024-02-25"},{"lineNumber":56,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":57,"author":{"gitId":"KohGuanZeh"},"content":"* Items with separated with `|` requires exactly one item to be matched.","lastModifiedDate":"2024-02-25"},{"lineNumber":58,"author":{"gitId":"KohGuanZeh"},"content":" * e.g. `n/NAME|p/PHONE_NUMBER` can only accept `n/John Doe` or `p/91234567` but not both.","lastModifiedDate":"2024-02-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"KohGuanZeh"},"content":" * e.g. if the command specifies `n/NAME p/PHONE_NUMBER`, `p/PHONE_NUMBER n/NAME` is also acceptable.","lastModifiedDate":"2024-02-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"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":64,"author":{"gitId":"KohGuanZeh"},"content":" * e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2024-02-25"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":66,"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":67,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"KohGuanZeh"},"content":"\u003cdiv markdown\u003d\"block\" class\u003d\"alert alert-info\"\u003e","lastModifiedDate":"2024-02-26"},{"lineNumber":70,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":71,"author":{"gitId":"KohGuanZeh"},"content":"**:information_source: Notes about input values format:**\u003cbr\u003e","lastModifiedDate":"2024-02-26"},{"lineNumber":72,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":73,"author":{"gitId":"KohGuanZeh"},"content":"* Spacing of values:","lastModifiedDate":"2024-02-26"},{"lineNumber":74,"author":{"gitId":"KohGuanZeh"},"content":" * Leading and trailing spaces of input values will be removed.","lastModifiedDate":"2024-02-26"},{"lineNumber":75,"author":{"gitId":"KohGuanZeh"},"content":" * Extra spaces between values will remain unless otherwise specified.","lastModifiedDate":"2024-02-26"},{"lineNumber":76,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":77,"author":{"gitId":"KohGuanZeh"},"content":"* Case sensitivity:","lastModifiedDate":"2024-02-26"},{"lineNumber":78,"author":{"gitId":"KohGuanZeh"},"content":" * All input values are case-sensitive unless otherwise specified.","lastModifiedDate":"2024-02-26"},{"lineNumber":79,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":80,"author":{"gitId":"KohGuanZeh"},"content":"* Duplicate contacts:","lastModifiedDate":"2024-02-26"},{"lineNumber":81,"author":{"gitId":"KohGuanZeh"},"content":" * Contacts are considered duplicates if they share the same phone number.","lastModifiedDate":"2024-02-26"},{"lineNumber":82,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":83,"author":{"gitId":"KohGuanZeh"},"content":"* `NAME` format:","lastModifiedDate":"2024-02-26"},{"lineNumber":84,"author":{"gitId":"KohGuanZeh"},"content":" * Can only contain alphabetical characters and spaces.","lastModifiedDate":"2024-02-26"},{"lineNumber":85,"author":{"gitId":"KohGuanZeh"},"content":" * Cannot be blank.","lastModifiedDate":"2024-02-26"},{"lineNumber":86,"author":{"gitId":"KohGuanZeh"},"content":" * Extra spaces between values will be processed as a single space.","lastModifiedDate":"2024-02-26"},{"lineNumber":87,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":88,"author":{"gitId":"KohGuanZeh"},"content":"* `PHONE_NUMBER` format:","lastModifiedDate":"2024-02-26"},{"lineNumber":89,"author":{"gitId":"KohGuanZeh"},"content":" * Must follow the standard Singapore telephone numbers (i.e. 9XXXXXXX or 8XXXXXXX).","lastModifiedDate":"2024-02-26"},{"lineNumber":90,"author":{"gitId":"KohGuanZeh"},"content":" * Spaces between numbers will be ignored.","lastModifiedDate":"2024-02-26"},{"lineNumber":91,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":92,"author":{"gitId":"KohGuanZeh"},"content":"* `EMAIL` format:","lastModifiedDate":"2024-02-26"},{"lineNumber":93,"author":{"gitId":"KohGuanZeh"},"content":" * Must follow the standard email address format (i.e. example@example.com).","lastModifiedDate":"2024-02-26"},{"lineNumber":94,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":95,"author":{"gitId":"KohGuanZeh"},"content":"* `ADDRESS` format:","lastModifiedDate":"2024-02-26"},{"lineNumber":96,"author":{"gitId":"KohGuanZeh"},"content":" * Can take any values.","lastModifiedDate":"2024-02-26"},{"lineNumber":97,"author":{"gitId":"KohGuanZeh"},"content":" * Cannot be blank.","lastModifiedDate":"2024-02-26"},{"lineNumber":98,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":99,"author":{"gitId":"KohGuanZeh"},"content":"* `TAG` format:","lastModifiedDate":"2024-02-26"},{"lineNumber":100,"author":{"gitId":"KohGuanZeh"},"content":" * Can only consist of alphanumeric characters.","lastModifiedDate":"2024-02-26"},{"lineNumber":101,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":102,"author":{"gitId":"KohGuanZeh"},"content":"* `DATETIME` format:","lastModifiedDate":"2024-02-26"},{"lineNumber":103,"author":{"gitId":"KohGuanZeh"},"content":" * Applies to all parameters with `DATETIME` postfix (i.e. `START_DATETIME` and `END_DATETIME`).","lastModifiedDate":"2024-02-26"},{"lineNumber":104,"author":{"gitId":"KohGuanZeh"},"content":" * Must follow the format `dd-MM-yyyy`T`HH:mm` (i.e. `23-02-2024T14:00`).","lastModifiedDate":"2024-02-26"},{"lineNumber":105,"author":{"gitId":"Javiery3889"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-02-27"},{"lineNumber":106,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":107,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"Javiery3889"},"content":"Shows a message explaining how to access the help page.","lastModifiedDate":"2024-02-26"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":"### Adding a person: `add`","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"Arixeyeion"},"content":"Adds a person to the contact list in FINDvisor.","lastModifiedDate":"2024-02-26"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​`","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Tip:**","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"Arixeyeion"},"content":"A person can have any number of tags (including 0).","lastModifiedDate":"2024-02-27"},{"lineNumber":124,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"Arixeyeion"},"content":"* `add n/Bobby Tay p/9678 5432 e/BobbyTay@gmail.com a/Blk 123 Foo Street 45, #07-89 t/PRUactiveCash`","lastModifiedDate":"2024-02-26"},{"lineNumber":128,"author":{"gitId":"Arixeyeion"},"content":"* `add n/Betsy Crowe t/PRUactiveCash e/betsycrowe@example.com a/Block 82 Marine Parade Central #01-600 p/9876 5432 t/PRUTravellerProtect`","lastModifiedDate":"2024-02-26"},{"lineNumber":129,"author":{"gitId":"Arixeyeion"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":130,"author":{"gitId":"Arixeyeion"},"content":"Specifications:","lastModifiedDate":"2024-02-26"},{"lineNumber":131,"author":{"gitId":"Arixeyeion"},"content":"* `p/PHONE_NUMBER` has to be unique from the other contacts in FINDvisor.","lastModifiedDate":"2024-02-27"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":"### Listing all persons : `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"Arixeyeion"},"content":"Shows a list of all persons in the contact list of FINDvisor.","lastModifiedDate":"2024-02-26"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"### Editing a person : `edit`","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"Arixeyeion"},"content":"Edits an existing person in the contact list of FINDvisor.","lastModifiedDate":"2024-02-26"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"YuZizhen"},"content":"* Edits the person at the specified `INDEX`. The index refers to the index number shown in the current displayed person list. The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-03-02"},{"lineNumber":146,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"YuZizhen"},"content":"* Input values will overwrite **all** existing values that were assigned to the specified field.","lastModifiedDate":"2024-03-03"},{"lineNumber":148,"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":149,"author":{"gitId":"YuZizhen"},"content":"* You can remove all the person’s tags by typing `t/` without specifying any tags after it.","lastModifiedDate":"2024-03-02"},{"lineNumber":150,"author":{"gitId":"YuZizhen"},"content":"* This command will check for duplicate phone number before edit is executed. If the new phone number is used by another person, the command will not be executed.","lastModifiedDate":"2024-03-03"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"YuZizhen"},"content":"* `edit 3 n/Bobby Tay e/bobbytay@u.nus.edu` Edits contact displayed at index 3 and changes the name of the contact to `Bobby Tay` and email to `bobbytay@u.nus.edu` respectively.","lastModifiedDate":"2024-03-02"},{"lineNumber":154,"author":{"gitId":"YuZizhen"},"content":"* `edit 1 t/PRUActive Saver III t/PRUActive Cash` Edits contact displayed at index 1 to change its tags to only `PRUActive Saver III` and `PRUActive Cash`. It will remove all other previous tags that are previously associated with the contact.","lastModifiedDate":"2024-03-02"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"Javiery3889"},"content":"### Locating persons by person\u0027s information: `find`","lastModifiedDate":"2024-02-27"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"Javiery3889"},"content":"Finds persons using specified keywords for a specified category of a person\u0027s information, e.g. either name, email, phone number, or tags.","lastModifiedDate":"2024-03-15"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"Javiery3889"},"content":"Format: `find n/NAME|e/EMAIL|p/PHONE|t/TAG...`","lastModifiedDate":"2024-03-15"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"Javiery3889"},"content":"* The search checks if a person\u0027s information **contains** the keyword specified, e.g. `find n/Ali` will match `Alice`.","lastModifiedDate":"2024-03-16"},{"lineNumber":163,"author":{"gitId":"Javiery3889"},"content":"* Only the category specified in the command is searched. e.g. `find n/John` will only search for person\u0027s name.","lastModifiedDate":"2024-03-15"},{"lineNumber":164,"author":{"gitId":"Javiery3889"},"content":"* The search is case-insensitive. e.g `find n/hans` will match `Hans`.","lastModifiedDate":"2024-02-27"},{"lineNumber":165,"author":{"gitId":"Javiery3889"},"content":"* Order of keywords matter. e.g. `find n/Doe John` will **not match** `John Doe`.","lastModifiedDate":"2024-02-27"},{"lineNumber":166,"author":{"gitId":"Javiery3889"},"content":"* Multiple keywords can be specified for tags **only**.","lastModifiedDate":"2024-03-15"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"Javiery3889"},"content":"* `find t/PRUActiveCash t/friends` returns all persons with tags containing `PRUActiveCash` and `friends`.","lastModifiedDate":"2024-03-15"},{"lineNumber":170,"author":{"gitId":"Javiery3889"},"content":"* `find e/example` returns all persons with email containing the string \"example\".","lastModifiedDate":"2024-03-15"},{"lineNumber":171,"author":{"gitId":"Javiery3889"},"content":"* `find p/91234567` returns person with phone number `91234567`.","lastModifiedDate":"2024-02-27"},{"lineNumber":172,"author":{"gitId":"-"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"Arixeyeion"},"content":"Deletes the specified person from the contact list of FINDvisor.","lastModifiedDate":"2024-02-26"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":"* Deletes the person at the specified `INDEX`.","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"Arixeyeion"},"content":"* Keying in multiple indexes deletes contacts at all the specified indexes of the displayed list.","lastModifiedDate":"2024-02-26"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"Arixeyeion"},"content":"* `list` followed by `delete 2` deletes the 2nd person in the contact list of FINDvisor.","lastModifiedDate":"2024-02-26"},{"lineNumber":185,"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":186,"author":{"gitId":"Arixeyeion"},"content":"* `list` followed by `delete 2 3 4` deletes the 2nd, 3rd and 4th person in the contact list of FINDvisor","lastModifiedDate":"2024-02-27"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"Dethada"},"content":"### Scheduling a meeting : `schedule`","lastModifiedDate":"2024-02-26"},{"lineNumber":189,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":190,"author":{"gitId":"Dethada"},"content":"Schedules a meeting with the specified person.","lastModifiedDate":"2024-02-26"},{"lineNumber":191,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":192,"author":{"gitId":"Dethada"},"content":"Format: `schedule INDEX s/START_DATETIME e/END_DATETIME`","lastModifiedDate":"2024-02-26"},{"lineNumber":193,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":194,"author":{"gitId":"Dethada"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2024-02-26"},{"lineNumber":195,"author":{"gitId":"Dethada"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-02-26"},{"lineNumber":196,"author":{"gitId":"Dethada"},"content":"* START_DATETIME must be after the system\u0027s current datetime.","lastModifiedDate":"2024-02-27"},{"lineNumber":197,"author":{"gitId":"Dethada"},"content":"* END_DATETIME must be after START_DATETIME","lastModifiedDate":"2024-02-26"},{"lineNumber":198,"author":{"gitId":"Javiery3889"},"content":"* There can be **at most** one scheduled meeting with a person.","lastModifiedDate":"2024-03-15"},{"lineNumber":199,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":200,"author":{"gitId":"Dethada"},"content":"Examples:","lastModifiedDate":"2024-02-26"},{"lineNumber":201,"author":{"gitId":"Dethada"},"content":"```","lastModifiedDate":"2024-02-26"},{"lineNumber":202,"author":{"gitId":"Dethada"},"content":"\u003e schedule 1 s/23-02-2024T16:00 e/23-02-2024T17:00","lastModifiedDate":"2024-02-26"},{"lineNumber":203,"author":{"gitId":"Dethada"},"content":"Scheduled meeting with John Doe from 23-02-2024 16:00 to 23-02-2024 17:00","lastModifiedDate":"2024-02-26"},{"lineNumber":204,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":205,"author":{"gitId":"Dethada"},"content":"\u003e schedule 1 s/23-02-2024T16:00 e/23-02-2024T17:00","lastModifiedDate":"2024-02-26"},{"lineNumber":206,"author":{"gitId":"Dethada"},"content":"Error: cannot schedule more than 1 meeting with a contact!","lastModifiedDate":"2024-02-26"},{"lineNumber":207,"author":{"gitId":"Dethada"},"content":"```","lastModifiedDate":"2024-02-26"},{"lineNumber":208,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":209,"author":{"gitId":"Dethada"},"content":"### Unscheduling a meeting : `unschedule`","lastModifiedDate":"2024-02-26"},{"lineNumber":210,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":211,"author":{"gitId":"Dethada"},"content":"Unschedules a meeting with the specified person.","lastModifiedDate":"2024-02-26"},{"lineNumber":212,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":213,"author":{"gitId":"Dethada"},"content":"Format: `unschedule INDEX`","lastModifiedDate":"2024-02-26"},{"lineNumber":214,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":215,"author":{"gitId":"Dethada"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2024-02-26"},{"lineNumber":216,"author":{"gitId":"Dethada"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-02-26"},{"lineNumber":217,"author":{"gitId":"Javiery3889"},"content":"* Specified person must have a meeting scheduled.","lastModifiedDate":"2024-03-15"},{"lineNumber":218,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":219,"author":{"gitId":"Dethada"},"content":"Examples:","lastModifiedDate":"2024-02-26"},{"lineNumber":220,"author":{"gitId":"Dethada"},"content":"```","lastModifiedDate":"2024-02-26"},{"lineNumber":221,"author":{"gitId":"Dethada"},"content":"\u003e unschedule 1","lastModifiedDate":"2024-02-26"},{"lineNumber":222,"author":{"gitId":"Dethada"},"content":"Unscheduled meeting with John Doe","lastModifiedDate":"2024-02-26"},{"lineNumber":223,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":224,"author":{"gitId":"Dethada"},"content":"\u003e unschedule 1","lastModifiedDate":"2024-02-26"},{"lineNumber":225,"author":{"gitId":"Dethada"},"content":"No scheduled meeting with John Doe!","lastModifiedDate":"2024-02-26"},{"lineNumber":226,"author":{"gitId":"Dethada"},"content":"```","lastModifiedDate":"2024-02-26"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":228,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"Arixeyeion"},"content":"Clears all entries from the contact list of FINDvisor.","lastModifiedDate":"2024-02-26"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"Arixeyeion"},"content":"FINDvisor data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.","lastModifiedDate":"2024-02-27"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":246,"author":{"gitId":"Arixeyeion"},"content":"FINDvisor data are saved automatically as a JSON file `[JAR file location]/data/FINDvisor.json`. Advanced users are welcome to update data directly by editing that data file.","lastModifiedDate":"2024-02-27"},{"lineNumber":247,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":248,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e:exclamation: **Caution:**","lastModifiedDate":"2021-02-04"},{"lineNumber":249,"author":{"gitId":"Arixeyeion"},"content":"If your changes to the data file makes its format invalid, FINDvisor 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.\u003cbr\u003e","lastModifiedDate":"2024-02-27"},{"lineNumber":250,"author":{"gitId":"Arixeyeion"},"content":"Furthermore, certain edits can cause the FINDvisor to behave in unexpected ways (e.g., if a value entered is outside of the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.","lastModifiedDate":"2024-02-26"},{"lineNumber":251,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-02-04"},{"lineNumber":252,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":253,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04"},{"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":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":262,"author":{"gitId":"Arixeyeion"},"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 FINDvisor home folder.","lastModifiedDate":"2024-02-26"},{"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":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":268,"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":269,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":270,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":272,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"--------|------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"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":277,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":278,"author":{"gitId":"-"},"content":"**Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3`","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"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":280,"author":{"gitId":"Javiery3889"},"content":"**Find** | `find n/NAME|e/EMAIL|p/PHONE|t/TAG...`\u003cbr\u003e e.g., `find n/Alice Tan`","lastModifiedDate":"2024-03-16"},{"lineNumber":281,"author":{"gitId":"-"},"content":"**List** | `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":282,"author":{"gitId":"Dethada"},"content":"**Schedule** | `schedule INDEX s/START_DATETIME e/END_DATETIME`\u003cbr\u003e e.g., `schedule 1 s/23-02-2024T16:00 e/23-02-2024T17:00`","lastModifiedDate":"2024-02-26"},{"lineNumber":283,"author":{"gitId":"Dethada"},"content":"**Unschedule** | `unschedule INDEX`\u003cbr\u003e e.g., `unschedule 1`","lastModifiedDate":"2024-02-26"},{"lineNumber":284,"author":{"gitId":"Dethada"},"content":"**Exit** | `exit`","lastModifiedDate":"2024-02-27"},{"lineNumber":285,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"Arixeyeion":24,"KohGuanZeh":45,"Javiery3889":16,"YuZizhen":6,"Dethada":40,"-":154}},{"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":"Javiery3889"},"content":" content: \"FINDvisor\";","lastModifiedDate":"2024-02-25"},{"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":{"Javiery3889":1,"-":294}},{"path":"docs/diagrams/EditSequenceDiagram-Logic.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"@startuml","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"KohGuanZeh"},"content":"!include style.puml","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"KohGuanZeh"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"KohGuanZeh"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"KohGuanZeh"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"KohGuanZeh"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"KohGuanZeh"},"content":"participant \":EditCommandParser\" as EditCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"KohGuanZeh"},"content":"participant \"d:EditCommandDescriptor\" as EditCommandDescriptor LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"KohGuanZeh"},"content":"participant \"e:EditCommand\" as EditCommand LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"KohGuanZeh"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"KohGuanZeh"},"content":"end box","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"KohGuanZeh"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"KohGuanZeh"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"KohGuanZeh"},"content":"participant \"m:PersonList\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"KohGuanZeh"},"content":"end box","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"KohGuanZeh"},"content":"[-\u003e LogicManager : execute(\"edit 1 n/Alex Yeoh\")","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"KohGuanZeh"},"content":"activate LogicManager","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"KohGuanZeh"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"edit 1 n/Alex Yeoh\")","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"KohGuanZeh"},"content":"activate AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"KohGuanZeh"},"content":"create EditCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"KohGuanZeh"},"content":"AddressBookParser -\u003e EditCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"KohGuanZeh"},"content":"activate EditCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"KohGuanZeh"},"content":"EditCommandParser --\u003e AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"KohGuanZeh"},"content":"deactivate EditCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"KohGuanZeh"},"content":"AddressBookParser -\u003e EditCommandParser : parse(\"1 n/Alex Yeoh\")","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"KohGuanZeh"},"content":"activate EditCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"KohGuanZeh"},"content":"create EditCommandDescriptor","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"KohGuanZeh"},"content":"EditCommandParser -\u003e EditCommandDescriptor","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"KohGuanZeh"},"content":"activate EditCommandDescriptor","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"KohGuanZeh"},"content":"EditCommandDescriptor --\u003e EditCommandParser :","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"KohGuanZeh"},"content":"deactivate EditCommandDescriptor","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"KohGuanZeh"},"content":"create EditCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"KohGuanZeh"},"content":"EditCommandParser -\u003e EditCommand : EditCommand(1, d)","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"KohGuanZeh"},"content":"activate EditCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"KohGuanZeh"},"content":"EditCommand --\u003e EditCommandParser :","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"KohGuanZeh"},"content":"deactivate EditCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"KohGuanZeh"},"content":"EditCommandParser --\u003e AddressBookParser : e","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"KohGuanZeh"},"content":"deactivate EditCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"KohGuanZeh"},"content":"EditCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"KohGuanZeh"},"content":"destroy EditCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"KohGuanZeh"},"content":"AddressBookParser --\u003e LogicManager : e","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"KohGuanZeh"},"content":"deactivate AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"KohGuanZeh"},"content":"LogicManager -\u003e EditCommand : execute(m)","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"KohGuanZeh"},"content":"activate EditCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"KohGuanZeh"},"content":"EditCommand -\u003e Model : getFilteredPersonList()","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"KohGuanZeh"},"content":"activate Model","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"KohGuanZeh"},"content":"Model --\u003e EditCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"KohGuanZeh"},"content":"deactivate Model","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"KohGuanZeh"},"content":"EditCommand -\u003e EditCommand : createEditedPerson(personToEdit, d)","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"KohGuanZeh"},"content":"activate EditCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"KohGuanZeh"},"content":"EditCommand --\u003e EditCommand : editedPerson","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"KohGuanZeh"},"content":"deactivate EditCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"KohGuanZeh"},"content":"EditCommand -\u003e Model : setPerson(personToEdit, editedPerson)","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"KohGuanZeh"},"content":"activate Model","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"KohGuanZeh"},"content":"Model --\u003e EditCommand :","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"KohGuanZeh"},"content":"deactivate Model","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"KohGuanZeh"},"content":"EditCommand -\u003e Model : updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS)","lastModifiedDate":"2024-03-24"},{"lineNumber":80,"author":{"gitId":"KohGuanZeh"},"content":"activate Model","lastModifiedDate":"2024-03-24"},{"lineNumber":81,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":82,"author":{"gitId":"KohGuanZeh"},"content":"Model --\u003e EditCommand:","lastModifiedDate":"2024-03-24"},{"lineNumber":83,"author":{"gitId":"KohGuanZeh"},"content":"deactivate Model","lastModifiedDate":"2024-03-24"},{"lineNumber":84,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":85,"author":{"gitId":"KohGuanZeh"},"content":"create CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"KohGuanZeh"},"content":"EditCommand -\u003e CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"KohGuanZeh"},"content":"activate CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"KohGuanZeh"},"content":"CommandResult --\u003e EditCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":90,"author":{"gitId":"KohGuanZeh"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":91,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":92,"author":{"gitId":"KohGuanZeh"},"content":"EditCommand --\u003e LogicManager : r","lastModifiedDate":"2024-03-21"},{"lineNumber":93,"author":{"gitId":"KohGuanZeh"},"content":"deactivate EditCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":94,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":95,"author":{"gitId":"KohGuanZeh"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-21"},{"lineNumber":96,"author":{"gitId":"KohGuanZeh"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-21"},{"lineNumber":97,"author":{"gitId":"KohGuanZeh"},"content":"@enduml","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"KohGuanZeh":97}},{"path":"docs/diagrams/EditSequenceDiagram-Model.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Arixeyeion"},"content":"@startuml","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"Arixeyeion"},"content":"!include style.puml","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"Arixeyeion"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"Arixeyeion"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"Arixeyeion"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"Arixeyeion"},"content":"participant \":ModelManager\" as ModelManager MODEL_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"Arixeyeion"},"content":"participant \":AddressBook\" as AddressBook MODEL_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"Arixeyeion"},"content":"participant \":UniquePersonList\" as UniquePersonList MODEL_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"Arixeyeion"},"content":"participant \":ObservableList\" as ObservableList MODEL_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"Arixeyeion"},"content":"participant \":FilteredList\" as FilteredList MODEL_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"Arixeyeion"},"content":"end box","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"Arixeyeion"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"Arixeyeion"},"content":"[-\u003e ModelManager : getFilteredPersonList()","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"Arixeyeion"},"content":"activate ModelManager","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"Arixeyeion"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"Arixeyeion"},"content":"[\u003c-- ModelManager","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"Arixeyeion"},"content":"deactivate ModelManager","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"Arixeyeion"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"Arixeyeion"},"content":"[-\u003e ModelManager: setPerson(personToEdit, editedPerson)","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"Arixeyeion"},"content":"activate ModelManager","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"Arixeyeion"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"Arixeyeion"},"content":"ModelManager -\u003e AddressBook : setPerson(personToEdit, editedPerson)","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"Arixeyeion"},"content":"activate AddressBook","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"Arixeyeion"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"Arixeyeion"},"content":"AddressBook -\u003e UniquePersonList : setPerson(personToEdit, editedPerson)","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"Arixeyeion"},"content":"activate UniquePersonList","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"Arixeyeion"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"Arixeyeion"},"content":"UniquePersonList -\u003e ObservableList : indexOf(personToEdit)","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"Arixeyeion"},"content":"activate ObservableList","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"Arixeyeion"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"Arixeyeion"},"content":"ObservableList --\u003e UniquePersonList : index","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"Arixeyeion"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"Arixeyeion"},"content":"UniquePersonList -\u003e ObservableList : set(index, editedPerson)","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"Arixeyeion"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"Arixeyeion"},"content":"ObservableList --\u003e UniquePersonList","lastModifiedDate":"2024-03-24"},{"lineNumber":36,"author":{"gitId":"Arixeyeion"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":37,"author":{"gitId":"Arixeyeion"},"content":"deactivate ObservableList","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"Arixeyeion"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":39,"author":{"gitId":"Arixeyeion"},"content":"UniquePersonList --\u003e AddressBook","lastModifiedDate":"2024-03-24"},{"lineNumber":40,"author":{"gitId":"Arixeyeion"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":41,"author":{"gitId":"Arixeyeion"},"content":"deactivate UniquePersonList","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"Arixeyeion"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":43,"author":{"gitId":"Arixeyeion"},"content":"AddressBook --\u003e ModelManager","lastModifiedDate":"2024-03-24"},{"lineNumber":44,"author":{"gitId":"Arixeyeion"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":45,"author":{"gitId":"Arixeyeion"},"content":"deactivate AddressBook","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"Arixeyeion"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":47,"author":{"gitId":"Arixeyeion"},"content":"[\u003c-- ModelManager","lastModifiedDate":"2024-03-24"},{"lineNumber":48,"author":{"gitId":"Arixeyeion"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":49,"author":{"gitId":"Arixeyeion"},"content":"deactivate ModelManager","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"Arixeyeion"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"Arixeyeion"},"content":"[-\u003e ModelManager : updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS)","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"Arixeyeion"},"content":"activate ModelManager","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"Arixeyeion"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"Arixeyeion"},"content":"ModelManager -\u003e FilteredList : setPredicate(PREDICATE_SHOW_ALL_PERSONS)","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"Arixeyeion"},"content":"activate FilteredList","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"Arixeyeion"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"Arixeyeion"},"content":"FilteredList --\u003e ModelManager","lastModifiedDate":"2024-03-24"},{"lineNumber":58,"author":{"gitId":"Arixeyeion"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":59,"author":{"gitId":"Arixeyeion"},"content":"deactivate FilteredList","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"Arixeyeion"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":61,"author":{"gitId":"Arixeyeion"},"content":"[\u003c-- ModelManager","lastModifiedDate":"2024-03-24"},{"lineNumber":62,"author":{"gitId":"Arixeyeion"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":63,"author":{"gitId":"Arixeyeion"},"content":"deactivate ModelManager","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"Arixeyeion"},"content":"@enduml","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"Arixeyeion":64}},{"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":"-"},"content":"Class UniquePersonList","lastModifiedDate":"2021-07-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Class Person","lastModifiedDate":"2019-07-03"},{"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":"-"},"content":"Class Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"Class Tag","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"Javiery3889"},"content":"Class Meeting","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":24,"author":{"gitId":"-"},"content":"Class I #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"AddressBook .up.|\u003e ReadOnlyAddressBook","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"ModelManager .up.|\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"Model .right.\u003e ReadOnlyUserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"Model .left.\u003e ReadOnlyAddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"Javiery3889"},"content":"ModelManager -\u003e \"1\" AddressBook","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"Javiery3889"},"content":"ModelManager -\u003e \"1\" UserPrefs","lastModifiedDate":"2024-03-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"UserPrefs .up.|\u003e ReadOnlyUserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"AddressBook *--\u003e \"1\" UniquePersonList","lastModifiedDate":"2019-07-30"},{"lineNumber":40,"author":{"gitId":"-"},"content":"UniquePersonList --\u003e \"~* all\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":41,"author":{"gitId":"-"},"content":"Person *--\u003e Name","lastModifiedDate":"2019-07-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"Person *--\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"Person *--\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"Person *--\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"Person *--\u003e \"*\" Tag","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"Javiery3889"},"content":"Person *--\u003e \"0..1\" Meeting","lastModifiedDate":"2024-03-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":48,"author":{"gitId":"Javiery3889"},"content":"Person -[hidden]right--\u003e I","lastModifiedDate":"2024-03-23"},{"lineNumber":49,"author":{"gitId":"Javiery3889"},"content":"UniquePersonList -[hidden]left-\u003e I","lastModifiedDate":"2024-03-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"Name -[hidden]right-\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":52,"author":{"gitId":"-"},"content":"Phone -[hidden]right-\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":53,"author":{"gitId":"-"},"content":"Address -[hidden]right-\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":54,"author":{"gitId":"Javiery3889"},"content":"Email -[hidden]right-\u003e Tag","lastModifiedDate":"2024-03-23"},{"lineNumber":55,"author":{"gitId":"Javiery3889"},"content":"Tag -[hidden]right-\u003e Meeting","lastModifiedDate":"2024-03-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":57,"author":{"gitId":"Javiery3889"},"content":"ModelManager -\u003e \"~* filtered\" Person","lastModifiedDate":"2024-03-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"Javiery3889":9,"-":49}},{"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":"-"},"content":"Class JsonAdaptedPerson","lastModifiedDate":"2021-07-31"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Class JsonAdaptedTag","lastModifiedDate":"2021-07-31"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":"Class JsonAdaptedMeeting","lastModifiedDate":"2024-03-22"},{"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":"","lastModifiedDate":"2021-07-31"},{"lineNumber":28,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2021-07-31"},{"lineNumber":29,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Storage","lastModifiedDate":"2021-07-31"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":31,"author":{"gitId":"-"},"content":"StorageManager .up.|\u003e Storage","lastModifiedDate":"2021-07-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"StorageManager -up-\u003e \"1\" UserPrefsStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":33,"author":{"gitId":"-"},"content":"StorageManager -up-\u003e \"1\" AddressBookStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"Storage -left-|\u003e UserPrefsStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"Storage -right-|\u003e AddressBookStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"JsonUserPrefsStorage .up.|\u003e UserPrefsStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":39,"author":{"gitId":"-"},"content":"JsonAddressBookStorage .up.|\u003e AddressBookStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":40,"author":{"gitId":"-"},"content":"JsonAddressBookStorage ..\u003e JsonSerializableAddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":41,"author":{"gitId":"-"},"content":"JsonSerializableAddressBook --\u003e \"*\" JsonAdaptedPerson","lastModifiedDate":"2021-07-31"},{"lineNumber":42,"author":{"gitId":"-"},"content":"JsonAdaptedPerson --\u003e \"*\" JsonAdaptedTag","lastModifiedDate":"2021-07-31"},{"lineNumber":43,"author":{"gitId":"Dethada"},"content":"JsonAdaptedPerson ---\u003e \"1\" JsonAdaptedMeeting","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-03-31"},{"lineNumber":45,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"Dethada":2,"-":43}},{"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":"Javiery3889"},"content":"title: FINDvisor","lastModifiedDate":"2024-02-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"[![CI Status](https://github.com/AY2324S2-CS2103-F15-1/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S2-CS2103-F15-1/tp/actions)","lastModifiedDate":"2024-02-27"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"[![codecov](https://codecov.io/gh/AY2324S2-CS2103-F15-1/tp/graph/badge.svg?token\u003dvAQ9m3CKxP)](https://codecov.io/gh/AY2324S2-CS2103-F15-1/tp)","lastModifiedDate":"2024-02-27"},{"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":"Dethada"},"content":"**FINDvisor aims to streamline client management for financial advisors with a tool that organizes contact information. Furthermore, it aims to simplify organising meetings, and tracks client goals for better timeline planning—all in one clutter-free interface.** While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface).","lastModifiedDate":"2024-02-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":"* If you are interested in using FINDvisor, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).","lastModifiedDate":"2024-02-27"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":"* If you are interested about developing FINDvisor, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.","lastModifiedDate":"2024-02-27"},{"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":"Dethada"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-02-27"},{"lineNumber":19,"author":{"gitId":"Javiery3889"},"content":"* App icon and favicon: \u003ca href\u003d\"https://www.flaticon.com/free-icons/search\" title\u003d\"search icons\"\u003eSearch icons created by Maxim Basinski Premium - Flaticon\u003c/a\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"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":{"Javiery3889":2,"Dethada":6,"-":12}},{"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":"KohGuanZeh"},"content":"package seedu.findvisor.logic.commands;","lastModifiedDate":"2024-03-10"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":28,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.Model;","lastModifiedDate":"2024-03-10"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":30,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Changes the remark of an existing person in the address book.","lastModifiedDate":"2020-07-29"},{"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":"-"},"content":" + \": Edits the remark of the person identified \"","lastModifiedDate":"2021-08-01"},{"lineNumber":69,"author":{"gitId":"-"},"content":" + \"by the index number used in the last person listing. \"","lastModifiedDate":"2020-07-29"},{"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":"KohGuanZeh"},"content":"import static seedu.findvisor.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" * @param index of the person in the filtered person list to edit the remark","lastModifiedDate":"2020-07-29"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * @param remark of the person to be updated to","lastModifiedDate":"2020-07-29"},{"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":"KohGuanZeh"},"content":"Create a `RemarkCommandParser` class in the `seedu.findvisor.logic.parser` package. The class must extend the `Parser` interface.","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" * object that maps prefixes to their respective argument values. Only the","lastModifiedDate":"2020-07-29"},{"lineNumber":155,"author":{"gitId":"-"},"content":" * given prefixes will be recognized in the arguments string.","lastModifiedDate":"2020-07-29"},{"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":"-"},"content":" * {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2020-07-29"},{"lineNumber":159,"author":{"gitId":"-"},"content":" * @param prefixes Prefixes to tokenize the arguments string with","lastModifiedDate":"2020-07-29"},{"lineNumber":160,"author":{"gitId":"-"},"content":" * @return ArgumentMultimap object that maps prefixes to their","lastModifiedDate":"2020-07-29"},{"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":"-"},"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":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":"-"},"content":" * Returns the last value of {@code prefix}.","lastModifiedDate":"2020-07-29"},{"lineNumber":172,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":173,"author":{"gitId":"-"},"content":"public Optional\u003cString\u003e getValue(Prefix prefix) {","lastModifiedDate":"2020-07-29"},{"lineNumber":174,"author":{"gitId":"-"},"content":" List\u003cString\u003e values \u003d getAllValues(prefix);","lastModifiedDate":"2020-07-29"},{"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":"-"},"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":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":"KohGuanZeh"},"content":"Create a new `Remark` in `seedu.findvisor.model.person`. Since a `Remark` is a field that is similar to `Address`, we can reuse a significant bit of code.","lastModifiedDate":"2024-03-10"},{"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":"-"},"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":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":243,"author":{"gitId":"KohGuanZeh"},"content":"Simply add the following to [`seedu.findvisor.ui.PersonCard`](https://github.com/se-edu/addressbook-level3/commit/850b78879582f38accb05dd20c245963c65ea599#diff-639834f1e05afe2276a86372adf0fe5f69314642c2d93cfa543d614ce5a76688).","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":":exclamation: You must delete AddressBook’s storage file located at `/data/addressbook.json` before running it! Not doing so will cause AddressBook to default to an empty address book!","lastModifiedDate":"2020-07-29"},{"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":"-"},"content":"public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2020-07-29"},{"lineNumber":313,"author":{"gitId":"-"},"content":" //...","lastModifiedDate":"2020-07-29"},{"lineNumber":314,"author":{"gitId":"-"},"content":" remark.setText(person.getRemark().value);","lastModifiedDate":"2020-07-29"},{"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":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2020-07-29"},{"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":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2020-07-29"},{"lineNumber":345,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new Person(","lastModifiedDate":"2021-08-01"},{"lineNumber":346,"author":{"gitId":"-"},"content":" personToEdit.getName(), personToEdit.getPhone(), personToEdit.getEmail(),","lastModifiedDate":"2021-08-01"},{"lineNumber":347,"author":{"gitId":"-"},"content":" personToEdit.getAddress(), remark, personToEdit.getTags());","lastModifiedDate":"2020-07-29"},{"lineNumber":348,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":349,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2020-07-29"},{"lineNumber":350,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2020-07-29"},{"lineNumber":351,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":352,"author":{"gitId":"-"},"content":" return new CommandResult(generateSuccessMessage(editedPerson));","lastModifiedDate":"2020-07-29"},{"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":"-"},"content":" * {@code personToEdit}.","lastModifiedDate":"2020-07-29"},{"lineNumber":359,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":360,"author":{"gitId":"-"},"content":" private String generateSuccessMessage(Person personToEdit) {","lastModifiedDate":"2020-07-29"},{"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":"-"},"content":" return String.format(message, personToEdit);","lastModifiedDate":"2020-07-29"},{"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":{"KohGuanZeh":6,"-":393}},{"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":"KohGuanZeh"},"content":"The `address` field in `Person` is actually an instance of the `seedu.findvisor.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":"2024-03-10"},{"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":"-"},"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":"-"},"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":{"KohGuanZeh":1,"-":111}},{"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":"KohGuanZeh"},"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.findvisor.logic.Logic`.","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"A quick look at the `seedu.findvisor.logic.Logic` (an extract given below) confirms that this indeed might be what we’re looking for.","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2020-05-23"},{"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":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, editedPerson));","lastModifiedDate":"2020-05-23"},{"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":"-"},"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":205,"author":{"gitId":"-"},"content":" * it uses the `updateFilteredPersonList` method to ask the `Model` to populate the \u0027filtered list\u0027 with _all_ persons.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":206,"author":{"gitId":"-"},"content":" FYI, The \u0027filtered list\u0027 is the list of persons 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 persons so that the user can see the edited person along with all other persons. If this was a `find` command, we would be setting that list to contain the search results instead.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":207,"author":{"gitId":"-"},"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 persons is being tracked.","lastModifiedDate":"2021-07-31"},{"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":"-"},"content":" persons.addAll(","lastModifiedDate":"2020-05-23"},{"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":{"KohGuanZeh":2,"-":299}},{"path":"src/main/java/seedu/findvisor/AppParameters.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.LogsCenter;","lastModifiedDate":"2024-03-10"},{"lineNumber":11,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.commons.util.FileUtil;","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-10"},{"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":{"KohGuanZeh":4,"-":69}},{"path":"src/main/java/seedu/findvisor/Main.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.LogsCenter;","lastModifiedDate":"2024-03-10"},{"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":{"KohGuanZeh":2,"-":39}},{"path":"src/main/java/seedu/findvisor/MainApp.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.Config;","lastModifiedDate":"2024-03-10"},{"lineNumber":11,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.LogsCenter;","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.Version;","lastModifiedDate":"2024-03-10"},{"lineNumber":13,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-10"},{"lineNumber":14,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.commons.util.ConfigUtil;","lastModifiedDate":"2024-03-10"},{"lineNumber":15,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.commons.util.StringUtil;","lastModifiedDate":"2024-03-10"},{"lineNumber":16,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.Logic;","lastModifiedDate":"2024-03-10"},{"lineNumber":17,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.LogicManager;","lastModifiedDate":"2024-03-10"},{"lineNumber":18,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.AddressBook;","lastModifiedDate":"2024-03-10"},{"lineNumber":19,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.Model;","lastModifiedDate":"2024-03-10"},{"lineNumber":20,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.ModelManager;","lastModifiedDate":"2024-03-10"},{"lineNumber":21,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-10"},{"lineNumber":22,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-10"},{"lineNumber":23,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.UserPrefs;","lastModifiedDate":"2024-03-10"},{"lineNumber":24,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.util.SampleDataUtil;","lastModifiedDate":"2024-03-10"},{"lineNumber":25,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.storage.AddressBookStorage;","lastModifiedDate":"2024-03-10"},{"lineNumber":26,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.storage.JsonAddressBookStorage;","lastModifiedDate":"2024-03-10"},{"lineNumber":27,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.storage.JsonUserPrefsStorage;","lastModifiedDate":"2024-03-10"},{"lineNumber":28,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.storage.Storage;","lastModifiedDate":"2024-03-10"},{"lineNumber":29,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.storage.StorageManager;","lastModifiedDate":"2024-03-10"},{"lineNumber":30,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.storage.UserPrefsStorage;","lastModifiedDate":"2024-03-10"},{"lineNumber":31,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.ui.Ui;","lastModifiedDate":"2024-03-10"},{"lineNumber":32,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.ui.UiManager;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" public static final Version VERSION \u003d new Version(0, 2, 2, true);","lastModifiedDate":"2023-08-21"},{"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":"Arixeyeion"},"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 FINDvisor ]\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2024-03-19"},{"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":"Arixeyeion"},"content":" logger.info(\"Starting FINDvisor \" + MainApp.VERSION);","lastModifiedDate":"2024-03-19"},{"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":"Arixeyeion"},"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 FINDvisor ] \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2024-03-19"},{"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":{"Arixeyeion":3,"KohGuanZeh":24,"-":159}},{"path":"src/main/java/seedu/findvisor/commons/core/Config.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.commons.core;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-10"},{"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":{"KohGuanZeh":2,"-":64}},{"path":"src/main/java/seedu/findvisor/commons/core/GuiSettings.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.commons.core;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-10"},{"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":{"KohGuanZeh":2,"-":80}},{"path":"src/main/java/seedu/findvisor/commons/core/LogsCenter.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.commons.core;","lastModifiedDate":"2024-03-10"},{"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":{"KohGuanZeh":1,"-":105}},{"path":"src/main/java/seedu/findvisor/commons/core/Version.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.commons.core;","lastModifiedDate":"2024-03-10"},{"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":{"KohGuanZeh":1,"-":120}},{"path":"src/main/java/seedu/findvisor/commons/core/index/Index.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.commons.core.index;","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":3,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-10"},{"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":{"KohGuanZeh":2,"-":67}},{"path":"src/main/java/seedu/findvisor/commons/exceptions/DataLoadingException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.commons.exceptions;","lastModifiedDate":"2024-03-10"},{"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":{"KohGuanZeh":1,"-":10}},{"path":"src/main/java/seedu/findvisor/commons/exceptions/IllegalValueException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.commons.exceptions;","lastModifiedDate":"2024-03-10"},{"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":{"KohGuanZeh":1,"-":20}},{"path":"src/main/java/seedu/findvisor/commons/util/AppUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.commons.util;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.MainApp;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Gets an {@code Image} from the specified path.","lastModifiedDate":"2020-05-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static Image getImage(String imagePath) {","lastModifiedDate":"2016-08-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":" requireNonNull(imagePath);","lastModifiedDate":"2017-05-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":" return new Image(MainApp.class.getResourceAsStream(imagePath));","lastModifiedDate":"2016-08-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Checks that {@code condition} is true. Used for validating arguments to methods.","lastModifiedDate":"2017-05-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @throws IllegalArgumentException if {@code condition} is false.","lastModifiedDate":"2017-05-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static void checkArgument(Boolean condition) {","lastModifiedDate":"2017-05-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":" if (!condition) {","lastModifiedDate":"2017-05-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" throw new IllegalArgumentException();","lastModifiedDate":"2017-05-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Checks that {@code condition} is true. Used for validating arguments to methods.","lastModifiedDate":"2017-05-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * @throws IllegalArgumentException with {@code errorMessage} if {@code condition} is false.","lastModifiedDate":"2017-05-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static void checkArgument(Boolean condition, String errorMessage) {","lastModifiedDate":"2017-05-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":" if (!condition) {","lastModifiedDate":"2017-05-15"},{"lineNumber":39,"author":{"gitId":"-"},"content":" throw new IllegalArgumentException(errorMessage);","lastModifiedDate":"2017-05-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"KohGuanZeh":2,"-":40}},{"path":"src/main/java/seedu/findvisor/commons/util/CollectionUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.commons.util;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" /** @see #requireAllNonNull(Collection) */","lastModifiedDate":"2017-05-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static void requireAllNonNull(Object... items) {","lastModifiedDate":"2017-05-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":" requireNonNull(items);","lastModifiedDate":"2017-06-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Stream.of(items).forEach(Objects::requireNonNull);","lastModifiedDate":"2017-05-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Throws NullPointerException if {@code items} or any element of {@code items} is null.","lastModifiedDate":"2017-05-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static void requireAllNonNull(Collection\u003c?\u003e items) {","lastModifiedDate":"2017-05-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" requireNonNull(items);","lastModifiedDate":"2017-06-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":" items.forEach(Objects::requireNonNull);","lastModifiedDate":"2017-05-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"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 {@code items} contain any elements that are non-null.","lastModifiedDate":"2017-06-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static boolean isAnyNonNull(Object... items) {","lastModifiedDate":"2017-06-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return items !\u003d null \u0026\u0026 Arrays.stream(items).anyMatch(Objects::nonNull);","lastModifiedDate":"2017-06-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"KohGuanZeh":1,"-":34}},{"path":"src/main/java/seedu/findvisor/commons/util/ConfigUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.commons.util;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.Config;","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" public static Optional\u003cConfig\u003e readConfig(Path configFilePath) throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":16,"author":{"gitId":"-"},"content":" return JsonUtil.readJsonFile(configFilePath, Config.class);","lastModifiedDate":"2016-10-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static void saveConfig(Config config, Path configFilePath) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" JsonUtil.saveJsonFile(config, configFilePath);","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":"}","lastModifiedDate":"2016-09-24"}],"authorContributionMap":{"KohGuanZeh":3,"-":20}},{"path":"src/main/java/seedu/findvisor/commons/util/DateTimeUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package seedu.findvisor.commons.util;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-22"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-02-22"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2024-02-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Handles DateTime parsing and formatting.","lastModifiedDate":"2024-02-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class DateTimeUtil {","lastModifiedDate":"2024-02-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final DateTimeFormatter DATE_TIME_INPUT_FORMAT \u003d","lastModifiedDate":"2024-02-22"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":" DateTimeFormatter.ofPattern(\"dd-MM-yyyy\u0027T\u0027HH:mm\");","lastModifiedDate":"2024-02-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public static final DateTimeFormatter DATE_TIME_OUTPUT_FORMAT \u003d","lastModifiedDate":"2024-02-22"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" DateTimeFormatter.ofPattern(\"dd-MM-yyyy HH:mm\");","lastModifiedDate":"2024-02-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-02-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Converts a String into a LocalDateTime object. The expected format is yyyy-MM-dd\u0027T\u0027HH:mm. For","lastModifiedDate":"2024-02-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * example, 2023-01-29T14:00.","lastModifiedDate":"2024-02-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2024-02-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @param input The string to be converted to a LocalDateTime object.","lastModifiedDate":"2024-02-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @return The resulting LocalDateTime object after the conversion.","lastModifiedDate":"2024-02-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @throws DateTimeParseException If the String is not in the expected format.","lastModifiedDate":"2024-02-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static LocalDateTime parseDateTimeString(String input) throws DateTimeParseException {","lastModifiedDate":"2024-02-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" return LocalDateTime.parse(input, DATE_TIME_INPUT_FORMAT);","lastModifiedDate":"2024-02-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-22"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-02-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Converts a LocalDateTime object into a String in input format. The format is yyyy-MM-dd\u0027T\u0027HH:mm. For","lastModifiedDate":"2024-02-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * example, 2023-01-29T14:00.","lastModifiedDate":"2024-02-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2024-02-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * @param dateTime The LocalDateTime object to be converted.","lastModifiedDate":"2024-02-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * @return The resulting string after the conversion.","lastModifiedDate":"2024-02-22"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-22"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static String dateTimeToInputString(LocalDateTime dateTime) {","lastModifiedDate":"2024-02-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return dateTime.format(DATE_TIME_INPUT_FORMAT);","lastModifiedDate":"2024-02-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-22"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-02-22"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Converts a LocalDateTime object into a String in output format. The format is yyyy-MM-dd HH:mm. For","lastModifiedDate":"2024-02-22"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * example, 2023-01-29 14:00.","lastModifiedDate":"2024-02-22"},{"lineNumber":43,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2024-02-22"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * @param dateTime The LocalDateTime object to be converted.","lastModifiedDate":"2024-02-22"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * @return The resulting string after the conversion.","lastModifiedDate":"2024-02-22"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-22"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static String dateTimeToString(LocalDateTime dateTime) {","lastModifiedDate":"2024-02-22"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return dateTime.format(DATE_TIME_OUTPUT_FORMAT);","lastModifiedDate":"2024-02-22"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-22"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":51,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-02-27"},{"lineNumber":52,"author":{"gitId":"Dethada"},"content":" * Checks if the given LocalDateTime object is after the current date and time.","lastModifiedDate":"2024-02-27"},{"lineNumber":53,"author":{"gitId":"Dethada"},"content":" *","lastModifiedDate":"2024-02-27"},{"lineNumber":54,"author":{"gitId":"Dethada"},"content":" * @param dateTime The LocalDateTime object to be checked.","lastModifiedDate":"2024-02-27"},{"lineNumber":55,"author":{"gitId":"Dethada"},"content":" * @return True if the given LocalDateTime object is after the current date and time, false otherwise.","lastModifiedDate":"2024-02-27"},{"lineNumber":56,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-02-27"},{"lineNumber":57,"author":{"gitId":"Dethada"},"content":" public static boolean isAfterCurrentDateTime(LocalDateTime dateTime) {","lastModifiedDate":"2024-02-27"},{"lineNumber":58,"author":{"gitId":"Dethada"},"content":" return dateTime.isAfter(LocalDateTime.now());","lastModifiedDate":"2024-02-27"},{"lineNumber":59,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-02-27"},{"lineNumber":60,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-02-22"}],"authorContributionMap":{"Dethada":13,"-":48}},{"path":"src/main/java/seedu/findvisor/commons/util/FileUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.commons.util;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" public static boolean isFileExists(Path file) {","lastModifiedDate":"2018-04-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":" return Files.exists(file) \u0026\u0026 Files.isRegularFile(file);","lastModifiedDate":"2018-04-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-21"},{"lineNumber":21,"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":22,"author":{"gitId":"-"},"content":" * otherwise returns false.","lastModifiedDate":"2018-04-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @param path A string representing the file path. Cannot be null.","lastModifiedDate":"2018-04-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static boolean isValidPath(String path) {","lastModifiedDate":"2018-04-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-04-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" Paths.get(path);","lastModifiedDate":"2018-04-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":" } catch (InvalidPathException ipe) {","lastModifiedDate":"2018-04-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-04-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Creates a file if it does not exist along with its missing parent directories.","lastModifiedDate":"2017-08-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * @throws IOException if the file or directory cannot be created.","lastModifiedDate":"2017-08-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static void createIfMissing(Path file) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" if (!isFileExists(file)) {","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" createFile(file);","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":"","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Creates a file if it does not exist along with its missing parent directories.","lastModifiedDate":"2018-04-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static void createFile(Path file) throws IOException {","lastModifiedDate":"2018-04-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (Files.exists(file)) {","lastModifiedDate":"2018-04-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return;","lastModifiedDate":"2018-04-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" createParentDirsOfFile(file);","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" Files.createFile(file);","lastModifiedDate":"2018-04-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Creates parent directories of file if it has a parent directory","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static void createParentDirsOfFile(Path file) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":" Path parentDir \u003d file.getParent();","lastModifiedDate":"2018-04-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (parentDir !\u003d null) {","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" Files.createDirectories(parentDir);","lastModifiedDate":"2018-04-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-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":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * Assumes file exists","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public static String readFromFile(Path file) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return new String(Files.readAllBytes(file), CHARSET);","lastModifiedDate":"2018-04-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * Writes given string to a file.","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Will create the file if it does not exist yet.","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static void writeToFile(Path file, String content) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":" Files.write(file, content.getBytes(CHARSET));","lastModifiedDate":"2018-04-21"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"KohGuanZeh":1,"-":82}},{"path":"src/main/java/seedu/findvisor/commons/util/JsonUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.commons.util;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.LogsCenter;","lastModifiedDate":"2024-03-10"},{"lineNumber":24,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" static \u003cT\u003e void serializeObjectToJsonFile(Path jsonFile, T objectToSerialize) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" FileUtil.writeToFile(jsonFile, toJsonString(objectToSerialize));","lastModifiedDate":"2016-10-07"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":46,"author":{"gitId":"-"},"content":" static \u003cT\u003e T deserializeObjectFromJsonFile(Path jsonFile, Class\u003cT\u003e classOfObjectToDeserialize)","lastModifiedDate":"2018-04-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2016-10-07"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return fromJsonString(FileUtil.readFromFile(jsonFile), classOfObjectToDeserialize);","lastModifiedDate":"2016-10-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-07"},{"lineNumber":52,"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":53,"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":54,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * @param filePath cannot be null.","lastModifiedDate":"2016-10-07"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * @param classOfObjectToDeserialize JSON file has to correspond to the structure in the class given here.","lastModifiedDate":"2023-06-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * @throws DataLoadingException if loading of the JSON file failed.","lastModifiedDate":"2023-06-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-07"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static \u003cT\u003e Optional\u003cT\u003e readJsonFile(","lastModifiedDate":"2016-10-07"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Path filePath, Class\u003cT\u003e classOfObjectToDeserialize) throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":61,"author":{"gitId":"-"},"content":" requireNonNull(filePath);","lastModifiedDate":"2017-05-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (!Files.exists(filePath)) {","lastModifiedDate":"2018-04-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2016-10-07"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":66,"author":{"gitId":"-"},"content":" logger.info(\"JSON file \" + filePath + \" found.\");","lastModifiedDate":"2023-01-03"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":" T jsonFile;","lastModifiedDate":"2016-10-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-10-07"},{"lineNumber":71,"author":{"gitId":"-"},"content":" jsonFile \u003d deserializeObjectFromJsonFile(filePath, classOfObjectToDeserialize);","lastModifiedDate":"2018-04-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-10-07"},{"lineNumber":73,"author":{"gitId":"-"},"content":" logger.warning(\"Error reading from jsonFile file \" + filePath + \": \" + e);","lastModifiedDate":"2018-04-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" throw new DataLoadingException(e);","lastModifiedDate":"2023-06-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return Optional.of(jsonFile);","lastModifiedDate":"2016-10-07"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":80,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-07"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * Saves the Json object to the specified file.","lastModifiedDate":"2016-10-07"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * Overwrites existing file if it exists, creates a new file if it doesn\u0027t.","lastModifiedDate":"2016-10-07"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * @param jsonFile cannot be null","lastModifiedDate":"2016-10-07"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * @param filePath cannot be null","lastModifiedDate":"2016-10-07"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * @throws IOException if there was an error during writing to the file","lastModifiedDate":"2016-10-07"},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-07"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public static \u003cT\u003e void saveJsonFile(T jsonFile, Path filePath) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":88,"author":{"gitId":"-"},"content":" requireNonNull(filePath);","lastModifiedDate":"2017-05-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" requireNonNull(jsonFile);","lastModifiedDate":"2017-05-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":91,"author":{"gitId":"-"},"content":" serializeObjectToJsonFile(filePath, jsonFile);","lastModifiedDate":"2018-04-21"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * Converts a given string representation of a JSON data to instance of a class","lastModifiedDate":"2016-10-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * @param \u003cT\u003e The generic type to create an instance of","lastModifiedDate":"2016-10-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * @return The instance of T with the specified values in the JSON string","lastModifiedDate":"2016-10-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public static \u003cT\u003e T fromJsonString(String json, Class\u003cT\u003e instanceClass) throws IOException {","lastModifiedDate":"2016-10-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" return objectMapper.readValue(json, instanceClass);","lastModifiedDate":"2016-10-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":104,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-19"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * Converts a given instance of a class into its JSON data string representation","lastModifiedDate":"2016-10-19"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * @param instance The T object to be converted into the JSON string","lastModifiedDate":"2016-10-19"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * @param \u003cT\u003e The generic type to create an instance of","lastModifiedDate":"2016-10-19"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * @return JSON data representation of the given class instance, in string","lastModifiedDate":"2016-10-19"},{"lineNumber":109,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public static \u003cT\u003e String toJsonString(T instance) throws JsonProcessingException {","lastModifiedDate":"2016-10-19"},{"lineNumber":111,"author":{"gitId":"-"},"content":" return objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(instance);","lastModifiedDate":"2016-10-19"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Contains methods that retrieve logging level from serialized string.","lastModifiedDate":"2017-08-16"},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":117,"author":{"gitId":"-"},"content":" private static class LevelDeserializer extends FromStringDeserializer\u003cLevel\u003e {","lastModifiedDate":"2016-08-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" protected LevelDeserializer(Class\u003c?\u003e vc) {","lastModifiedDate":"2016-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" super(vc);","lastModifiedDate":"2016-08-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" protected Level _deserialize(String value, DeserializationContext ctxt) {","lastModifiedDate":"2018-08-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" return getLoggingLevel(value);","lastModifiedDate":"2016-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","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":" * Gets the logging level that matches loggingLevelString","lastModifiedDate":"2016-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" * \u003cp\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":" * Returns null if there are no matches","lastModifiedDate":"2016-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":" private Level getLoggingLevel(String loggingLevelString) {","lastModifiedDate":"2016-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":" return Level.parse(loggingLevelString);","lastModifiedDate":"2016-09-09"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public Class\u003cLevel\u003e handledType() {","lastModifiedDate":"2016-08-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":" return Level.class;","lastModifiedDate":"2016-08-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"KohGuanZeh":3,"-":141}},{"path":"src/main/java/seedu/findvisor/commons/util/StringUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.commons.util;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import static seedu.findvisor.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-10"},{"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":"Javiery3889"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"Javiery3889"},"content":" * Returns true if the {@code sentence} contains the {@code subString}","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"Javiery3889"},"content":" * Ignores case, but order of the words in {@code subString} matter.","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"Javiery3889"},"content":" * @param sentence The string in which to search for the substring. This parameter cannot be null.","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"Javiery3889"},"content":" * @param subString The substring to search within a {@code sentence}. This parameter is trimmed for leading and","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"Javiery3889"},"content":" * trailing whitespace and cannot be empty after trimming. This parameter cannot be null.","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"Javiery3889"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"Javiery3889"},"content":" public static boolean containsIgnoreCase(String sentence, String subString) {","lastModifiedDate":"2024-03-15"},{"lineNumber":49,"author":{"gitId":"Javiery3889"},"content":" requireNonNull(sentence);","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"Javiery3889"},"content":" requireNonNull(subString);","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"Javiery3889"},"content":" String preppedSubString \u003d subString.trim().toLowerCase();","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"Javiery3889"},"content":" checkArgument(!preppedSubString.isEmpty(), \"subString parameter cannot be empty\");","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"Javiery3889"},"content":" return sentence.toLowerCase().contains(preppedSubString);","lastModifiedDate":"2024-03-15"},{"lineNumber":55,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Returns a detailed message of the t, including the stack trace.","lastModifiedDate":"2016-09-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static String getDetails(Throwable t) {","lastModifiedDate":"2016-09-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":" requireNonNull(t);","lastModifiedDate":"2017-05-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":" StringWriter sw \u003d new StringWriter();","lastModifiedDate":"2016-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" t.printStackTrace(new PrintWriter(sw));","lastModifiedDate":"2016-09-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return t.getMessage() + \"\\n\" + sw.toString();","lastModifiedDate":"2016-09-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * Returns true if {@code s} represents a non-zero unsigned integer","lastModifiedDate":"2017-06-02"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * e.g. 1, 2, 3, ..., {@code Integer.MAX_VALUE} \u003cbr\u003e","lastModifiedDate":"2017-06-02"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Will return false for any other non-null string input","lastModifiedDate":"2017-06-02"},{"lineNumber":71,"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":72,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code s} is null.","lastModifiedDate":"2017-06-02"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public static boolean isNonZeroUnsignedInteger(String s) {","lastModifiedDate":"2017-06-02"},{"lineNumber":75,"author":{"gitId":"-"},"content":" requireNonNull(s);","lastModifiedDate":"2017-06-02"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":77,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-06-02"},{"lineNumber":78,"author":{"gitId":"-"},"content":" int value \u003d Integer.parseInt(s);","lastModifiedDate":"2017-06-02"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return value \u003e 0 \u0026\u0026 !s.startsWith(\"+\"); // \"+1\" is successfully parsed by Integer#parseInt(String)","lastModifiedDate":"2017-06-02"},{"lineNumber":80,"author":{"gitId":"-"},"content":" } catch (NumberFormatException nfe) {","lastModifiedDate":"2017-06-02"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-06-02"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-02"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":84,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"KohGuanZeh":2,"Javiery3889":16,"-":66}},{"path":"src/main/java/seedu/findvisor/commons/util/ToStringBuilder.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.commons.util;","lastModifiedDate":"2024-03-10"},{"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":{"KohGuanZeh":1,"-":52}},{"path":"src/main/java/seedu/findvisor/logic/Logic.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.GuiSettings;","lastModifiedDate":"2024-03-10"},{"lineNumber":7,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.CommandResult;","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-10"},{"lineNumber":10,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-10"},{"lineNumber":11,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Person;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":" * @see seedu.findvisor.model.Model#getAddressBook()","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" /** Returns an unmodifiable view of the filtered list of persons */","lastModifiedDate":"2017-09-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10"},{"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":{"KohGuanZeh":8,"-":42}},{"path":"src/main/java/seedu/findvisor/logic/LogicManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.GuiSettings;","lastModifiedDate":"2024-03-10"},{"lineNumber":10,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.LogsCenter;","lastModifiedDate":"2024-03-10"},{"lineNumber":11,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.Command;","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.CommandResult;","lastModifiedDate":"2024-03-10"},{"lineNumber":13,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-10"},{"lineNumber":14,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.parser.AddressBookParser;","lastModifiedDate":"2024-03-10"},{"lineNumber":15,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-10"},{"lineNumber":16,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.Model;","lastModifiedDate":"2024-03-10"},{"lineNumber":17,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-10"},{"lineNumber":18,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Person;","lastModifiedDate":"2024-03-10"},{"lineNumber":19,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.storage.Storage;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList();","lastModifiedDate":"2016-09-25"},{"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":{"KohGuanZeh":12,"-":76}},{"path":"src/main/java/seedu/findvisor/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.logic.parser.Prefix;","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.model.person.Meeting;","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Person;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX \u003d \"The person index provided is invalid\";","lastModifiedDate":"2016-08-24"},{"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":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" person.getTags().forEach(builder::append);","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-02-22"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Formats the {@code meeting} for display to the user.","lastModifiedDate":"2024-02-22"},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-22"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static String format(Meeting meeting) {","lastModifiedDate":"2024-02-22"},{"lineNumber":56,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2024-02-22"},{"lineNumber":57,"author":{"gitId":"-"},"content":" builder.append(\"Meeting Start: \")","lastModifiedDate":"2024-02-22"},{"lineNumber":58,"author":{"gitId":"-"},"content":" .append(meeting.getStartString())","lastModifiedDate":"2024-02-22"},{"lineNumber":59,"author":{"gitId":"-"},"content":" .append(\"; End: \")","lastModifiedDate":"2024-02-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":" .append(meeting.getEndString());","lastModifiedDate":"2024-02-22"},{"lineNumber":61,"author":{"gitId":"Dethada"},"content":" if (!meeting.remark.equals(\"\")) {","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"Dethada"},"content":" builder.append(\"\\nMeeting Remark: \")","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"Dethada"},"content":" .append(meeting.remark);","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2024-02-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"KohGuanZeh":3,"Dethada":5,"-":60}},{"path":"src/main/java/seedu/findvisor/logic/commands/AddCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.commands;","lastModifiedDate":"2024-03-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":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-10"},{"lineNumber":5,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-10"},{"lineNumber":6,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-10"},{"lineNumber":7,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":10,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-10"},{"lineNumber":11,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.Messages;","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-10"},{"lineNumber":13,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.Model;","lastModifiedDate":"2024-03-10"},{"lineNumber":14,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Person;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2017-05-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2017-05-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"owesMoney\";","lastModifiedDate":"2017-05-09"},{"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":{"KohGuanZeh":11,"-":73}},{"path":"src/main/java/seedu/findvisor/logic/commands/ClearCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.commands;","lastModifiedDate":"2024-03-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":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.AddressBook;","lastModifiedDate":"2024-03-10"},{"lineNumber":6,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.Model;","lastModifiedDate":"2024-03-10"},{"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":"-"},"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":{"KohGuanZeh":3,"-":20}},{"path":"src/main/java/seedu/findvisor/logic/commands/Command.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.commands;","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-10"},{"lineNumber":4,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.Model;","lastModifiedDate":"2024-03-10"},{"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":{"KohGuanZeh":3,"-":17}},{"path":"src/main/java/seedu/findvisor/logic/commands/CommandResult.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.commands;","lastModifiedDate":"2024-03-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":"","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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-10"},{"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":{"KohGuanZeh":2,"-":80}},{"path":"src/main/java/seedu/findvisor/logic/commands/DeleteCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.commands;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.index.Index;","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.Messages;","lastModifiedDate":"2024-03-10"},{"lineNumber":10,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-10"},{"lineNumber":11,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.Model;","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Person;","lastModifiedDate":"2024-03-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":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Person: %1$s\";","lastModifiedDate":"2016-08-24"},{"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":{"KohGuanZeh":7,"-":62}},{"path":"src/main/java/seedu/findvisor/logic/commands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.commands;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-10"},{"lineNumber":5,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-10"},{"lineNumber":6,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-10"},{"lineNumber":7,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.index.Index;","lastModifiedDate":"2024-03-10"},{"lineNumber":19,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.commons.util.CollectionUtil;","lastModifiedDate":"2024-03-10"},{"lineNumber":20,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-10"},{"lineNumber":21,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.Messages;","lastModifiedDate":"2024-03-10"},{"lineNumber":22,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-10"},{"lineNumber":23,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.Model;","lastModifiedDate":"2024-03-10"},{"lineNumber":24,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Address;","lastModifiedDate":"2024-03-10"},{"lineNumber":25,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Email;","lastModifiedDate":"2024-03-10"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.model.person.Meeting;","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Name;","lastModifiedDate":"2024-03-10"},{"lineNumber":28,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Person;","lastModifiedDate":"2024-03-10"},{"lineNumber":29,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Phone;","lastModifiedDate":"2024-03-10"},{"lineNumber":30,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.tag.Tag;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2017-06-21"},{"lineNumber":104,"author":{"gitId":"Dethada"},"content":" // EditCommand does not edit meeting so we keep the original meeting","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"Dethada"},"content":" Optional\u003cMeeting\u003e meeting \u003d personToEdit.getMeeting();","lastModifiedDate":"2024-03-19"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":107,"author":{"gitId":"Dethada"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTags, meeting);","lastModifiedDate":"2024-03-19"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" return false;","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":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"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":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":135,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26"},{"lineNumber":136,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26"},{"lineNumber":137,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":138,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26"},{"lineNumber":139,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21"},{"lineNumber":140,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":141,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":142,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21"},{"lineNumber":143,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":145,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":147,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":148,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11"},{"lineNumber":149,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":150,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":151,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26"},{"lineNumber":152,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15"},{"lineNumber":153,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15"},{"lineNumber":154,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15"},{"lineNumber":155,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15"},{"lineNumber":156,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":159,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":160,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26"},{"lineNumber":161,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":162,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26"},{"lineNumber":163,"author":{"gitId":"-"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, tags);","lastModifiedDate":"2018-08-14"},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":166,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21"},{"lineNumber":167,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":170,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":171,"author":{"gitId":"-"},"content":" return Optional.ofNullable(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 void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21"},{"lineNumber":175,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","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 Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26"},{"lineNumber":179,"author":{"gitId":"-"},"content":" return Optional.ofNullable(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 void setEmail(Email email) {","lastModifiedDate":"2017-06-21"},{"lineNumber":183,"author":{"gitId":"-"},"content":" this.email \u003d email;","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 Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":187,"author":{"gitId":"-"},"content":" return Optional.ofNullable(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 void setAddress(Address address) {","lastModifiedDate":"2017-06-21"},{"lineNumber":191,"author":{"gitId":"-"},"content":" this.address \u003d address;","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 Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26"},{"lineNumber":195,"author":{"gitId":"-"},"content":" return Optional.ofNullable(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":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":199,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11"},{"lineNumber":200,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":201,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":202,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21"},{"lineNumber":203,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11"},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":206,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":207,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11"},{"lineNumber":208,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11"},{"lineNumber":209,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11"},{"lineNumber":210,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":211,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":212,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11"},{"lineNumber":213,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":215,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":216,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":217,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":218,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":219,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":221,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":222,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05"},{"lineNumber":223,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":224,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":226,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":227,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":228,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":229,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":230,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":231,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags);","lastModifiedDate":"2023-07-13"},{"lineNumber":232,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":245,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"KohGuanZeh":19,"Dethada":4,"-":222}},{"path":"src/main/java/seedu/findvisor/logic/commands/ExitCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.commands;","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":3,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.Model;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" public static final String MESSAGE_EXIT_ACKNOWLEDGEMENT \u003d \"Exiting Address Book as requested ...\";","lastModifiedDate":"2016-09-22"},{"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":{"KohGuanZeh":2,"-":17}},{"path":"src/main/java/seedu/findvisor/logic/commands/FindCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.commands;","lastModifiedDate":"2024-03-10"},{"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":"Javiery3889"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"Javiery3889"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":11,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.Messages;","lastModifiedDate":"2024-03-10"},{"lineNumber":13,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.Model;","lastModifiedDate":"2024-03-10"},{"lineNumber":14,"author":{"gitId":"Javiery3889"},"content":"import seedu.findvisor.model.person.Person;","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22"},{"lineNumber":17,"author":{"gitId":"Javiery3889"},"content":" * Finds persons based on search criteria of the specified category.","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"Javiery3889"},"content":" * Only exactly one category of the following can be specified, either name, email, phone or tags.","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Keyword matching is case insensitive.","lastModifiedDate":"2018-04-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2016-09-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"find\";","lastModifiedDate":"2016-09-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":25,"author":{"gitId":"Javiery3889"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all persons whose information matches \"","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"Javiery3889"},"content":" + \"the specified keywords (case-insensitive) of the specified category\"","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"Javiery3889"},"content":" + \"and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"Javiery3889"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"Javiery3889"},"content":" + PREFIX_NAME + \"NAME | \"","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"Javiery3889"},"content":" + PREFIX_EMAIL + \"EMAIL | \"","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"Javiery3889"},"content":" + PREFIX_PHONE + \"PHONE | \"","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"Javiery3889"},"content":" + PREFIX_TAG + \"TAG...\\n\"","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"Javiery3889"},"content":" + \"Example: \" + COMMAND_WORD + \" t/PRUActiveCash t/friends\";","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":35,"author":{"gitId":"Javiery3889"},"content":" private final Predicate\u003cPerson\u003e predicate;","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":37,"author":{"gitId":"Javiery3889"},"content":" public FindCommand(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(predicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" return new CommandResult(","lastModifiedDate":"2018-04-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":" String.format(Messages.MESSAGE_PERSONS_LISTED_OVERVIEW, model.getFilteredPersonList().size()));","lastModifiedDate":"2018-04-01"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (!(other instanceof FindCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" FindCommand otherFindCommand \u003d (FindCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return predicate.equals(otherFindCommand.predicate);","lastModifiedDate":"2023-07-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"KohGuanZeh":4,"Javiery3889":20,"-":46}},{"path":"src/main/java/seedu/findvisor/logic/commands/HelpCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.commands;","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.Model;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"KohGuanZeh":2,"-":19}},{"path":"src/main/java/seedu/findvisor/logic/commands/ListCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.commands;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import static seedu.findvisor.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-10"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.Model;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all persons\";","lastModifiedDate":"2016-09-21"},{"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":{"KohGuanZeh":3,"-":21}},{"path":"src/main/java/seedu/findvisor/logic/commands/ScheduleCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package seedu.findvisor.logic.commands;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-02-22"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_END_DATETIME;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_MEETING_REMARK;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_START_DATETIME;","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2024-02-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2024-02-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2024-02-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.commons.core.index.Index;","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.commons.util.DateTimeUtil;","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.logic.Messages;","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.model.Model;","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.model.person.Address;","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.model.person.Email;","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.model.person.Meeting;","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.model.person.Name;","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.model.person.Person;","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.model.person.Phone;","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.model.tag.Tag;","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2024-02-22"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" * Schedules a meeting with a person.","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":"public class ScheduleCommand extends Command {","lastModifiedDate":"2024-02-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"schedule\";","lastModifiedDate":"2024-02-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Schedules a meeting with the person identified \"","lastModifiedDate":"2024-02-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list.\\n\"","lastModifiedDate":"2024-02-22"},{"lineNumber":35,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2024-02-22"},{"lineNumber":36,"author":{"gitId":"-"},"content":" + PREFIX_START_DATETIME + \"START DATETIME \"","lastModifiedDate":"2024-02-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" + PREFIX_END_DATETIME + \"END DATETIME \"","lastModifiedDate":"2024-02-22"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":" + \"[\" + PREFIX_MEETING_REMARK + \"REMARK\" + \"]\\n\"","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2024-02-22"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":" + PREFIX_START_DATETIME + \"22-02-2024T14:00 \"","lastModifiedDate":"2024-02-27"},{"lineNumber":41,"author":{"gitId":"Dethada"},"content":" + PREFIX_END_DATETIME + \"22-02-2024T15:00 \";","lastModifiedDate":"2024-02-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":43,"author":{"gitId":"Dethada"},"content":" public static final String MESSAGE_SCHEDULE_SUCCESS \u003d \"Scheduled meeting with %1$s from %2$s to %3$s\";","lastModifiedDate":"2024-02-27"},{"lineNumber":44,"author":{"gitId":"Dethada"},"content":" public static final String MESSAGE_CANNOT_SCHEDULE_MULTIPLE_MEETINGS \u003d \"Cannot schedule more than 1\"","lastModifiedDate":"2024-02-27"},{"lineNumber":45,"author":{"gitId":"Dethada"},"content":" + \" meeting with a contact!\";","lastModifiedDate":"2024-02-27"},{"lineNumber":46,"author":{"gitId":"Dethada"},"content":" public static final String MESSAGE_CANNOT_SCHEDULE_MEETING_IN_THE_PAST \u003d \"Cannot schedule meeting that\"","lastModifiedDate":"2024-02-27"},{"lineNumber":47,"author":{"gitId":"Dethada"},"content":" + \" starts before the current time!\";","lastModifiedDate":"2024-02-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":49,"author":{"gitId":"-"},"content":" private final Index targetIndex;","lastModifiedDate":"2024-02-22"},{"lineNumber":50,"author":{"gitId":"-"},"content":" private final Meeting meeting;","lastModifiedDate":"2024-02-22"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-02-22"},{"lineNumber":53,"author":{"gitId":"Dethada"},"content":" * Creates an ScheduleCommand to schedule a meeting with the specified {@code Person}","lastModifiedDate":"2024-03-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-22"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public ScheduleCommand(Index targetIndex, Meeting meeting) {","lastModifiedDate":"2024-02-22"},{"lineNumber":56,"author":{"gitId":"-"},"content":" requireNonNull(meeting);","lastModifiedDate":"2024-02-22"},{"lineNumber":57,"author":{"gitId":"-"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2024-02-22"},{"lineNumber":58,"author":{"gitId":"-"},"content":" this.meeting \u003d meeting;","lastModifiedDate":"2024-02-22"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-02-22"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-02-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2024-02-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-02-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-02-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-02-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-02-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":" if (personToEdit.getMeeting().isPresent()) {","lastModifiedDate":"2024-02-22"},{"lineNumber":72,"author":{"gitId":"Dethada"},"content":" throw new CommandException(MESSAGE_CANNOT_SCHEDULE_MULTIPLE_MEETINGS);","lastModifiedDate":"2024-02-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, meeting);","lastModifiedDate":"2024-02-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":76,"author":{"gitId":"Dethada"},"content":" if (!DateTimeUtil.isAfterCurrentDateTime(meeting.start)) {","lastModifiedDate":"2024-02-27"},{"lineNumber":77,"author":{"gitId":"Dethada"},"content":" throw new CommandException(MESSAGE_CANNOT_SCHEDULE_MEETING_IN_THE_PAST);","lastModifiedDate":"2024-02-27"},{"lineNumber":78,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-02-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2024-02-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-02-22"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SCHEDULE_SUCCESS,","lastModifiedDate":"2024-02-22"},{"lineNumber":84,"author":{"gitId":"Dethada"},"content":" editedPerson.getName(),","lastModifiedDate":"2024-02-27"},{"lineNumber":85,"author":{"gitId":"Dethada"},"content":" meeting.getStartString(),","lastModifiedDate":"2024-03-11"},{"lineNumber":86,"author":{"gitId":"Dethada"},"content":" meeting.getEndString()));","lastModifiedDate":"2024-03-11"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-22"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-02-22"},{"lineNumber":90,"author":{"gitId":"Dethada"},"content":" * Creates and returns a {@code Person} with the same details of {@code personToEdit}","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"Dethada"},"content":" * with the meeting scheduled.","lastModifiedDate":"2024-03-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-22"},{"lineNumber":93,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, Meeting meeting) {","lastModifiedDate":"2024-02-22"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2024-02-22"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":96,"author":{"gitId":"Dethada"},"content":" Name name \u003d personToEdit.getName();","lastModifiedDate":"2024-03-12"},{"lineNumber":97,"author":{"gitId":"Dethada"},"content":" Phone phone \u003d personToEdit.getPhone();","lastModifiedDate":"2024-03-12"},{"lineNumber":98,"author":{"gitId":"Dethada"},"content":" Email email \u003d personToEdit.getEmail();","lastModifiedDate":"2024-03-12"},{"lineNumber":99,"author":{"gitId":"Dethada"},"content":" Address address \u003d personToEdit.getAddress();","lastModifiedDate":"2024-03-12"},{"lineNumber":100,"author":{"gitId":"Dethada"},"content":" Set\u003cTag\u003e tags \u003d personToEdit.getTags();","lastModifiedDate":"2024-03-12"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":102,"author":{"gitId":"Dethada"},"content":" return new Person(name, phone, email, address, tags, Optional.of(meeting));","lastModifiedDate":"2024-03-12"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-22"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-02-22"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-02-22"},{"lineNumber":107,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-02-22"},{"lineNumber":108,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2024-02-22"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-22"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":111,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-02-22"},{"lineNumber":112,"author":{"gitId":"-"},"content":" if (!(other instanceof ScheduleCommand)) {","lastModifiedDate":"2024-02-22"},{"lineNumber":113,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2024-02-22"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-22"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":116,"author":{"gitId":"-"},"content":" ScheduleCommand otherScheduleCommand \u003d (ScheduleCommand) other;","lastModifiedDate":"2024-02-22"},{"lineNumber":117,"author":{"gitId":"-"},"content":" return targetIndex.equals(otherScheduleCommand.targetIndex)","lastModifiedDate":"2024-02-22"},{"lineNumber":118,"author":{"gitId":"-"},"content":" \u0026\u0026 meeting.equals(otherScheduleCommand.meeting);","lastModifiedDate":"2024-02-22"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-22"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-02-22"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2024-02-22"},{"lineNumber":123,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-02-22"},{"lineNumber":124,"author":{"gitId":"-"},"content":" .add(\"toSchedule\", targetIndex)","lastModifiedDate":"2024-02-22"},{"lineNumber":125,"author":{"gitId":"-"},"content":" .add(\"meeting\", meeting)","lastModifiedDate":"2024-02-22"},{"lineNumber":126,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2024-02-22"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-22"},{"lineNumber":128,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-02-22"}],"authorContributionMap":{"Dethada":43,"-":85}},{"path":"src/main/java/seedu/findvisor/logic/commands/UnscheduleCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package seedu.findvisor.logic.commands;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import java.util.List;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.commons.core.index.Index;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.logic.Messages;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.model.Model;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.model.person.Address;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.model.person.Email;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.model.person.Name;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.model.person.Phone;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.model.tag.Tag;","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" * Unschedules a meeting with a person.","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":"public class UnscheduleCommand extends Command {","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" public static final String COMMAND_WORD \u003d \"unschedule\";","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Unschedules a meeting with the person identified \"","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" + \"by the index number used in the displayed person list.\\n\"","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":" public static final String MESSAGE_UNSCHEDULE_SUCCESS \u003d \"Unscheduled meeting with %1$s\";","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" public static final String MESSAGE_NO_MEETING_TO_UNSCHEDULE \u003d \"No scheduled meeting with %1$s!\";","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":" private final Index targetIndex;","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":" * Creates an UnscheduleCommand to unschedule a meeting with the person at the specified {@code Index}","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"Dethada"},"content":" public UnscheduleCommand(Index targetIndex) {","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"Dethada"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"Dethada"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"Dethada"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"Dethada"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"Dethada"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"Dethada"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"Dethada"},"content":" Person personToEdit \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"Dethada"},"content":" if (personToEdit.getMeeting().isEmpty()) {","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"Dethada"},"content":" throw new CommandException(String.format(MESSAGE_NO_MEETING_TO_UNSCHEDULE, personToEdit.getName()));","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"Dethada"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit);","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"Dethada"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"Dethada"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"Dethada"},"content":" return new CommandResult(String.format(MESSAGE_UNSCHEDULE_SUCCESS, editedPerson.getName()));","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"Dethada"},"content":" * Creates and returns a copy of {@code personToEdit} with meeting unscheduled.","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"Dethada"},"content":" private static Person createEditedPerson(Person personToEdit) {","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"Dethada"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"Dethada"},"content":" Name name \u003d personToEdit.getName();","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"Dethada"},"content":" Phone phone \u003d personToEdit.getPhone();","lastModifiedDate":"2024-03-12"},{"lineNumber":74,"author":{"gitId":"Dethada"},"content":" Email email \u003d personToEdit.getEmail();","lastModifiedDate":"2024-03-12"},{"lineNumber":75,"author":{"gitId":"Dethada"},"content":" Address address \u003d personToEdit.getAddress();","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"Dethada"},"content":" Set\u003cTag\u003e tags \u003d personToEdit.getTags();","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"Dethada"},"content":" return new Person(name, phone, email, address, tags, Optional.empty());","lastModifiedDate":"2024-03-12"},{"lineNumber":79,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":81,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"Dethada"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"Dethada"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"Dethada"},"content":" return true;","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":86,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"Dethada"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"Dethada"},"content":" if (!(other instanceof UnscheduleCommand)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"Dethada"},"content":" return false;","lastModifiedDate":"2024-03-12"},{"lineNumber":90,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":92,"author":{"gitId":"Dethada"},"content":" UnscheduleCommand otherScheduleCommand \u003d (UnscheduleCommand) other;","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"Dethada"},"content":" return targetIndex.equals(otherScheduleCommand.targetIndex);","lastModifiedDate":"2024-03-12"},{"lineNumber":94,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":95,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":96,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":97,"author":{"gitId":"Dethada"},"content":" public String toString() {","lastModifiedDate":"2024-03-12"},{"lineNumber":98,"author":{"gitId":"Dethada"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-12"},{"lineNumber":99,"author":{"gitId":"Dethada"},"content":" .add(\"toUnschedule\", targetIndex)","lastModifiedDate":"2024-03-12"},{"lineNumber":100,"author":{"gitId":"Dethada"},"content":" .toString();","lastModifiedDate":"2024-03-12"},{"lineNumber":101,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":102,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"Dethada":102}},{"path":"src/main/java/seedu/findvisor/logic/commands/exceptions/CommandException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.commands.exceptions;","lastModifiedDate":"2024-03-10"},{"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":{"KohGuanZeh":1,"-":16}},{"path":"src/main/java/seedu/findvisor/logic/parser/AddCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.parser;","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":3,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-10"},{"lineNumber":4,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-10"},{"lineNumber":5,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-10"},{"lineNumber":6,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-10"},{"lineNumber":7,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-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":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.AddCommand;","lastModifiedDate":"2024-03-10"},{"lineNumber":14,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-10"},{"lineNumber":15,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Address;","lastModifiedDate":"2024-03-10"},{"lineNumber":16,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Email;","lastModifiedDate":"2024-03-10"},{"lineNumber":17,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Name;","lastModifiedDate":"2024-03-10"},{"lineNumber":18,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Person;","lastModifiedDate":"2024-03-10"},{"lineNumber":19,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Phone;","lastModifiedDate":"2024-03-10"},{"lineNumber":20,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.tag.Tag;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG);","lastModifiedDate":"2017-06-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":36,"author":{"gitId":"-"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL)","lastModifiedDate":"2017-12-23"},{"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":"-"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-07-14"},{"lineNumber":42,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":43,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":44,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":46,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17"},{"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":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":57,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17"},{"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":{"KohGuanZeh":15,"-":46}},{"path":"src/main/java/seedu/findvisor/logic/parser/AddressBookParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.parser;","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-10"},{"lineNumber":4,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.LogsCenter;","lastModifiedDate":"2024-03-10"},{"lineNumber":11,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.AddCommand;","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.ClearCommand;","lastModifiedDate":"2024-03-10"},{"lineNumber":13,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.Command;","lastModifiedDate":"2024-03-10"},{"lineNumber":14,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-10"},{"lineNumber":15,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.EditCommand;","lastModifiedDate":"2024-03-10"},{"lineNumber":16,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.ExitCommand;","lastModifiedDate":"2024-03-10"},{"lineNumber":17,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.FindCommand;","lastModifiedDate":"2024-03-10"},{"lineNumber":18,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.HelpCommand;","lastModifiedDate":"2024-03-10"},{"lineNumber":19,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.ListCommand;","lastModifiedDate":"2024-03-10"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.logic.commands.ScheduleCommand;","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.logic.commands.UnscheduleCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" case ScheduleCommand.COMMAND_WORD:","lastModifiedDate":"2024-02-22"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return new ScheduleCommandParser().parse(arguments);","lastModifiedDate":"2024-02-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":64,"author":{"gitId":"Dethada"},"content":" case UnscheduleCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"Dethada"},"content":" return new UnscheduleCommandParser().parse(arguments);","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"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":{"KohGuanZeh":14,"Dethada":5,"-":75}},{"path":"src/main/java/seedu/findvisor/logic/parser/ArgumentMultimap.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.parser;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.logic.Messages;","lastModifiedDate":"2024-03-10"},{"lineNumber":11,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":"}","lastModifiedDate":"2017-03-08"}],"authorContributionMap":{"KohGuanZeh":3,"-":75}},{"path":"src/main/java/seedu/findvisor/logic/parser/ArgumentTokenizer.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.parser;","lastModifiedDate":"2024-03-10"},{"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":{"KohGuanZeh":1,"-":147}},{"path":"src/main/java/seedu/findvisor/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.parser;","lastModifiedDate":"2024-03-10"},{"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":"Dethada"},"content":" public static final Prefix PREFIX_START_DATETIME \u003d new Prefix(\"s/\");","lastModifiedDate":"2024-02-27"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" public static final Prefix PREFIX_END_DATETIME \u003d new Prefix(\"e/\");","lastModifiedDate":"2024-02-27"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" public static final Prefix PREFIX_MEETING_REMARK \u003d new Prefix(\"r/\");","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"KohGuanZeh":1,"Dethada":3,"-":14}},{"path":"src/main/java/seedu/findvisor/logic/parser/DeleteCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.parser;","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-10"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":5,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.index.Index;","lastModifiedDate":"2024-03-10"},{"lineNumber":6,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-10"},{"lineNumber":7,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-10"},{"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":"-"},"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":"2017-03-11"},{"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":"2017-05-15"},{"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":{"KohGuanZeh":5,"-":24}},{"path":"src/main/java/seedu/findvisor/logic/parser/EditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.parser;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-10"},{"lineNumber":5,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-10"},{"lineNumber":6,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-10"},{"lineNumber":7,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.index.Index;","lastModifiedDate":"2024-03-10"},{"lineNumber":17,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.EditCommand;","lastModifiedDate":"2024-03-10"},{"lineNumber":18,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-10"},{"lineNumber":19,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-10"},{"lineNumber":20,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.tag.Tag;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG);","lastModifiedDate":"2017-06-06"},{"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":"-"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-07-14"},{"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":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":50,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":" editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":56,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":59,"author":{"gitId":"-"},"content":" editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":61,"author":{"gitId":"-"},"content":" parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPersonDescriptor::setTags);","lastModifiedDate":"2017-06-21"},{"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":{"KohGuanZeh":12,"-":73}},{"path":"src/main/java/seedu/findvisor/logic/parser/FindCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.parser;","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-10"},{"lineNumber":4,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":9,"author":{"gitId":"Javiery3889"},"content":"import java.util.List;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"Javiery3889"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.FindCommand;","lastModifiedDate":"2024-03-10"},{"lineNumber":13,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-10"},{"lineNumber":14,"author":{"gitId":"Javiery3889"},"content":"import seedu.findvisor.model.person.EmailContainsKeywordPredicate;","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"Javiery3889"},"content":"import seedu.findvisor.model.person.NameContainsKeywordPredicate;","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"Javiery3889"},"content":"import seedu.findvisor.model.person.PhoneContainsKeywordPredicate;","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"Javiery3889"},"content":"import seedu.findvisor.model.tag.TagsContainsKeywordsPredicate;","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new FindCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class FindCommandParser implements Parser\u003cFindCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the FindCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * and returns a FindCommand object for execution.","lastModifiedDate":"2019-05-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public FindCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":30,"author":{"gitId":"Javiery3889"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"Javiery3889"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_TAG);","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"Javiery3889"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL);","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"Javiery3889"},"content":" if (!isSinglePrefixPresent(argMultimap, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_TAG)) {","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"Javiery3889"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":39,"author":{"gitId":"Javiery3889"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"Javiery3889"},"content":" String nameKeyword \u003d argMultimap.getValue(PREFIX_NAME).get();","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"Javiery3889"},"content":" return new FindCommand(new NameContainsKeywordPredicate(nameKeyword));","lastModifiedDate":"2024-03-15"},{"lineNumber":42,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"Javiery3889"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"Javiery3889"},"content":" String emailKeyword \u003d argMultimap.getValue(PREFIX_EMAIL).get();","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"Javiery3889"},"content":" return new FindCommand(new EmailContainsKeywordPredicate(emailKeyword));","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"Javiery3889"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"Javiery3889"},"content":" String phoneKeyword \u003d argMultimap.getValue(PREFIX_PHONE).get();","lastModifiedDate":"2024-03-15"},{"lineNumber":49,"author":{"gitId":"Javiery3889"},"content":" return new FindCommand(new PhoneContainsKeywordPredicate(phoneKeyword));","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":52,"author":{"gitId":"Javiery3889"},"content":" List\u003cString\u003e tagsKeywords \u003d argMultimap.getAllValues(PREFIX_TAG);","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"Javiery3889"},"content":" return new FindCommand(new TagsContainsKeywordsPredicate(tagsKeywords));","lastModifiedDate":"2024-03-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":56,"author":{"gitId":"Javiery3889"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"Javiery3889"},"content":" * Returns true if exactly one prefix is present in the given {@code ArgumentMultimap}.","lastModifiedDate":"2024-03-14"},{"lineNumber":58,"author":{"gitId":"Javiery3889"},"content":" * @param argMultimap The {@link ArgumentMultimap} to check for the presence of prefixes.","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"Javiery3889"},"content":" * @param prefixes A varargs array of {@link Prefix} objects to be checked in the {@code argMultimap}.","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"Javiery3889"},"content":" * @return {@code true} if exactly one of the specified prefixes is present in the {@code ArgumentMultimap}.","lastModifiedDate":"2024-03-14"},{"lineNumber":61,"author":{"gitId":"Javiery3889"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":62,"author":{"gitId":"Javiery3889"},"content":" private boolean isSinglePrefixPresent(ArgumentMultimap argMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-03-14"},{"lineNumber":63,"author":{"gitId":"Javiery3889"},"content":" long prefixCount \u003d Stream.of(prefixes)","lastModifiedDate":"2024-03-14"},{"lineNumber":64,"author":{"gitId":"Javiery3889"},"content":" .filter(prefix -\u003e argMultimap.getValue(prefix).isPresent())","lastModifiedDate":"2024-03-14"},{"lineNumber":65,"author":{"gitId":"Javiery3889"},"content":" .count();","lastModifiedDate":"2024-03-14"},{"lineNumber":66,"author":{"gitId":"Javiery3889"},"content":" return prefixCount \u003d\u003d 1;","lastModifiedDate":"2024-03-14"},{"lineNumber":67,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"KohGuanZeh":4,"Javiery3889":43,"-":21}},{"path":"src/main/java/seedu/findvisor/logic/parser/Parser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.parser;","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":3,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.Command;","lastModifiedDate":"2024-03-10"},{"lineNumber":4,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-10"},{"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":{"KohGuanZeh":3,"-":13}},{"path":"src/main/java/seedu/findvisor/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.parser;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.index.Index;","lastModifiedDate":"2024-03-10"},{"lineNumber":10,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.commons.util.StringUtil;","lastModifiedDate":"2024-03-10"},{"lineNumber":11,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Address;","lastModifiedDate":"2024-03-10"},{"lineNumber":13,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Email;","lastModifiedDate":"2024-03-10"},{"lineNumber":14,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Name;","lastModifiedDate":"2024-03-10"},{"lineNumber":15,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Phone;","lastModifiedDate":"2024-03-10"},{"lineNumber":16,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.tag.Tag;","lastModifiedDate":"2024-03-10"},{"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":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":31,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02"},{"lineNumber":33,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":35,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29"},{"lineNumber":41,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29"},{"lineNumber":46,"author":{"gitId":"Arixeyeion"},"content":" String trimmedName \u003d name.trim().replaceAll(\"\\\\s+\", \" \");","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":48,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"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":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":60,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30"},{"lineNumber":61,"author":{"gitId":"Arixeyeion"},"content":" String trimmedPhone \u003d phone.trim().replaceAll(\"\\\\s\", \"\");","lastModifiedDate":"2024-03-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":63,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30"},{"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":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30"},{"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":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":75,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30"},{"lineNumber":76,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":78,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30"},{"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":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30"},{"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":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":90,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":91,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":92,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":93,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":95,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","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":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":101,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":105,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30"},{"lineNumber":106,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":107,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":108,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":110,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","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":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07"},{"lineNumber":115,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":117,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15"},{"lineNumber":118,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11"},{"lineNumber":119,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11"},{"lineNumber":120,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":122,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":124,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"Arixeyeion":2,"KohGuanZeh":9,"-":113}},{"path":"src/main/java/seedu/findvisor/logic/parser/Prefix.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.parser;","lastModifiedDate":"2024-03-10"},{"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":{"KohGuanZeh":1,"-":41}},{"path":"src/main/java/seedu/findvisor/logic/parser/ScheduleCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package seedu.findvisor.logic.parser;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-02-22"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_END_DATETIME;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_MEETING_REMARK;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_START_DATETIME;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-02-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.commons.core.index.Index;","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.commons.util.DateTimeUtil;","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.logic.commands.ScheduleCommand;","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.model.person.Meeting;","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2024-02-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new ScheduleCommand object","lastModifiedDate":"2024-02-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class ScheduleCommandParser implements Parser\u003cScheduleCommand\u003e {","lastModifiedDate":"2024-02-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-02-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the ScheduleCommand","lastModifiedDate":"2024-02-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * and returns an ScheduleCommand object for execution.","lastModifiedDate":"2024-02-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-02-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public ScheduleCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-02-22"},{"lineNumber":28,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2024-02-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-02-22"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_START_DATETIME, PREFIX_END_DATETIME, PREFIX_MEETING_REMARK);","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2024-02-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2024-02-22"},{"lineNumber":35,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-02-22"},{"lineNumber":36,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-02-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, ScheduleCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-02-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-22"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":40,"author":{"gitId":"-"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_START_DATETIME, PREFIX_END_DATETIME);","lastModifiedDate":"2024-02-22"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":42,"author":{"gitId":"-"},"content":" if (!(argMultimap.getValue(PREFIX_START_DATETIME).isPresent()","lastModifiedDate":"2024-02-22"},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u0026\u0026 argMultimap.getValue(PREFIX_END_DATETIME).isPresent())) {","lastModifiedDate":"2024-02-22"},{"lineNumber":44,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, ScheduleCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-02-22"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-22"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":47,"author":{"gitId":"-"},"content":" LocalDateTime startDateTime;","lastModifiedDate":"2024-02-22"},{"lineNumber":48,"author":{"gitId":"-"},"content":" LocalDateTime endDateTime;","lastModifiedDate":"2024-02-22"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":50,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2024-02-22"},{"lineNumber":51,"author":{"gitId":"-"},"content":" startDateTime \u003d DateTimeUtil.parseDateTimeString(argMultimap.getValue(PREFIX_START_DATETIME).get());","lastModifiedDate":"2024-02-22"},{"lineNumber":52,"author":{"gitId":"-"},"content":" endDateTime \u003d DateTimeUtil.parseDateTimeString(argMultimap.getValue(PREFIX_END_DATETIME).get());","lastModifiedDate":"2024-02-22"},{"lineNumber":53,"author":{"gitId":"-"},"content":" } catch (DateTimeParseException pe) {","lastModifiedDate":"2024-02-22"},{"lineNumber":54,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, ScheduleCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-02-22"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-22"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":57,"author":{"gitId":"Dethada"},"content":" String remark \u003d argMultimap.getValue(PREFIX_MEETING_REMARK).orElse(\"\");","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"Dethada"},"content":" Meeting meeting \u003d new Meeting(startDateTime, endDateTime, remark);","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return new ScheduleCommand(index, meeting);","lastModifiedDate":"2024-02-22"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-02-22"}],"authorContributionMap":{"Dethada":14,"-":49}},{"path":"src/main/java/seedu/findvisor/logic/parser/UnscheduleCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package seedu.findvisor.logic.parser;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.commons.core.index.Index;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.logic.commands.UnscheduleCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":" * Parses input arguments and creates a new UnscheduleCommand object","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"public class UnscheduleCommandParser implements Parser\u003cUnscheduleCommand\u003e {","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" * Parses the given {@code String} of arguments in the context of the UnscheduleCommand","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" * and returns a UnscheduleCommand object for execution.","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" public UnscheduleCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" try {","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" return new UnscheduleCommand(index);","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, UnscheduleCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"Dethada":29}},{"path":"src/main/java/seedu/findvisor/logic/parser/exceptions/ParseException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.parser.exceptions;","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":3,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-10"},{"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":{"KohGuanZeh":2,"-":15}},{"path":"src/main/java/seedu/findvisor/model/AddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.model;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Person;","lastModifiedDate":"2024-03-10"},{"lineNumber":10,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.UniquePersonList;","lastModifiedDate":"2024-03-10"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Wraps all data at the address-book level","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Duplicates are not allowed (by .isSamePerson comparison)","lastModifiedDate":"2018-04-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class AddressBook implements ReadOnlyAddressBook {","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private final UniquePersonList persons;","lastModifiedDate":"2016-08-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-19"},{"lineNumber":21,"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":22,"author":{"gitId":"-"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2016-10-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-19"},{"lineNumber":24,"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":25,"author":{"gitId":"-"},"content":" * among constructors.","lastModifiedDate":"2016-10-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" {","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" persons \u003d new UniquePersonList();","lastModifiedDate":"2016-08-26"},{"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() {}","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":" * Creates an AddressBook using the Persons in the {@code toBeCopied}","lastModifiedDate":"2018-03-29"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public AddressBook(ReadOnlyAddressBook toBeCopied) {","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2016-12-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" resetData(toBeCopied);","lastModifiedDate":"2016-12-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":41,"author":{"gitId":"-"},"content":" //// list overwrite operations","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Replaces the contents of the person list with {@code persons}.","lastModifiedDate":"2018-08-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2018-08-07"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void setPersons(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-08-07"},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.persons.setPersons(persons);","lastModifiedDate":"2016-10-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code AddressBook} with {@code newData}.","lastModifiedDate":"2017-08-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyAddressBook newData) {","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" requireNonNull(newData);","lastModifiedDate":"2017-05-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" setPersons(newData.getPersonList());","lastModifiedDate":"2018-03-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" //// person-level operations","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":63,"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":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return persons.contains(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-09-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * The person must not already exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void addPerson(Person p) {","lastModifiedDate":"2018-08-07"},{"lineNumber":75,"author":{"gitId":"-"},"content":" persons.add(p);","lastModifiedDate":"2018-03-29"},{"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-12-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2018-01-10"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":81,"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":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":84,"author":{"gitId":"-"},"content":" requireNonNull(editedPerson);","lastModifiedDate":"2018-01-10"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" persons.setPerson(target, editedPerson);","lastModifiedDate":"2018-03-29"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * Removes {@code key} from this {@code AddressBook}.","lastModifiedDate":"2017-08-16"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * {@code key} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void removePerson(Person key) {","lastModifiedDate":"2018-08-07"},{"lineNumber":94,"author":{"gitId":"-"},"content":" persons.remove(key);","lastModifiedDate":"2018-02-28"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" //// util methods","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":" .add(\"persons\", persons)","lastModifiedDate":"2019-02-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"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-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":108,"author":{"gitId":"-"},"content":" return persons.asUnmodifiableObservableList();","lastModifiedDate":"2018-04-05"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-01"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-01"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"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 AddressBook)) {","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":" AddressBook otherAddressBook \u003d (AddressBook) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":" return persons.equals(otherAddressBook.persons);","lastModifiedDate":"2023-07-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":127,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":128,"author":{"gitId":"-"},"content":" return persons.hashCode();","lastModifiedDate":"2018-03-29"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":130,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"KohGuanZeh":4,"-":126}},{"path":"src/main/java/seedu/findvisor/model/Model.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.model;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.GuiSettings;","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Person;","lastModifiedDate":"2024-03-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":"-"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2017-08-05"},{"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":{"KohGuanZeh":3,"-":84}},{"path":"src/main/java/seedu/findvisor/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.model;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import static seedu.findvisor.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.GuiSettings;","lastModifiedDate":"2024-03-10"},{"lineNumber":13,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.LogsCenter;","lastModifiedDate":"2024-03-10"},{"lineNumber":14,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Person;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2018-01-10"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(this.addressBook.getPersonList());","lastModifiedDate":"2019-01-25"},{"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":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25"},{"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":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","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 setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"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":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":92,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":93,"author":{"gitId":"-"},"content":" return addressBook.hasPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":" addressBook.removePerson(target);","lastModifiedDate":"2019-01-25"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":102,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":103,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":104,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":109,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" addressBook.setPerson(target, editedPerson);","lastModifiedDate":"2019-01-25"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":114,"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":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":117,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10"},{"lineNumber":118,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11"},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":121,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":122,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":126,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":127,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05"},{"lineNumber":128,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12"},{"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":"2017-05-31"},{"lineNumber":132,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":137,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31"},{"lineNumber":138,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":139,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":143,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13"},{"lineNumber":144,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13"},{"lineNumber":145,"author":{"gitId":"-"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons);","lastModifiedDate":"2023-07-13"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":148,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"KohGuanZeh":5,"-":143}},{"path":"src/main/java/seedu/findvisor/model/ReadOnlyAddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.model;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Person;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" * Returns an unmodifiable view of the persons list.","lastModifiedDate":"2016-12-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * This list will not contain any duplicate persons.","lastModifiedDate":"2016-12-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"KohGuanZeh":2,"-":15}},{"path":"src/main/java/seedu/findvisor/model/ReadOnlyUserPrefs.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.model;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.GuiSettings;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-11-27"}],"authorContributionMap":{"KohGuanZeh":2,"-":14}},{"path":"src/main/java/seedu/findvisor/model/UserPrefs.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.model;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.GuiSettings;","lastModifiedDate":"2024-03-10"},{"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":"-"},"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":{"KohGuanZeh":2,"-":86}},{"path":"src/main/java/seedu/findvisor/model/person/Address.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.model.person;","lastModifiedDate":"2024-03-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":"KohGuanZeh"},"content":"import static seedu.findvisor.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-10"},{"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":"-"},"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":{"KohGuanZeh":2,"-":63}},{"path":"src/main/java/seedu/findvisor/model/person/Email.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.model.person;","lastModifiedDate":"2024-03-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":"KohGuanZeh"},"content":"import static seedu.findvisor.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-10"},{"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":"-"},"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":{"KohGuanZeh":2,"-":77}},{"path":"src/main/java/seedu/findvisor/model/person/EmailContainsKeywordPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Javiery3889"},"content":"package seedu.findvisor.model.person;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"Javiery3889"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"Javiery3889"},"content":"import seedu.findvisor.commons.util.StringUtil;","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"Javiery3889"},"content":"import seedu.findvisor.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"Javiery3889"},"content":"/**","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"Javiery3889"},"content":" * A predicate for evaluating if a {@link Person}\u0027s email contains (case-insensitive) a given keyword.","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"Javiery3889"},"content":" * This is used to filter for persons based on their email attribute.","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"Javiery3889"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"Javiery3889"},"content":"public class EmailContainsKeywordPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"Javiery3889"},"content":" private final String keyword;","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"Javiery3889"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"Javiery3889"},"content":" * Constructs an {@code EmailContainsKeywordPredicate} with the specified keyword.","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"Javiery3889"},"content":" *","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"Javiery3889"},"content":" * @param keyword The keyword to be matched against the person\u0027s email. The match is case-insensitive.","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"Javiery3889"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"Javiery3889"},"content":" public EmailContainsKeywordPredicate(String keyword) {","lastModifiedDate":"2024-03-15"},{"lineNumber":21,"author":{"gitId":"Javiery3889"},"content":" this.keyword \u003d keyword;","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"Javiery3889"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"Javiery3889"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"Javiery3889"},"content":" return StringUtil.containsIgnoreCase(person.getEmail().value, keyword);","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"Javiery3889"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"Javiery3889"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"Javiery3889"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"Javiery3889"},"content":" return true;","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"Javiery3889"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"Javiery3889"},"content":" if (!(other instanceof EmailContainsKeywordPredicate)) {","lastModifiedDate":"2024-03-15"},{"lineNumber":37,"author":{"gitId":"Javiery3889"},"content":" return false;","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"Javiery3889"},"content":" EmailContainsKeywordPredicate otherEmailContainsKeywordsPredicate \u003d (EmailContainsKeywordPredicate) other;","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"Javiery3889"},"content":" return keyword.equals(otherEmailContainsKeywordsPredicate.keyword);","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"Javiery3889"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"Javiery3889"},"content":" public String toString() {","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"Javiery3889"},"content":" return new ToStringBuilder(this).add(\"email\", keyword).toString();","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"Javiery3889"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"Javiery3889":48}},{"path":"src/main/java/seedu/findvisor/model/person/Meeting.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package seedu.findvisor.model.person;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-22"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import java.time.temporal.ChronoUnit;","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2024-02-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.commons.util.DateTimeUtil;","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2024-02-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Represents a meeting with a Person in the address book.","lastModifiedDate":"2024-02-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidDateTime(LocalDateTime, LocalDateTime)}","lastModifiedDate":"2024-02-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class Meeting {","lastModifiedDate":"2024-02-22"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" public static final int MAX_REMARK_LENGTH \u003d 200;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" public static final String MESSAGE_DATETIME_CONSTRAINTS \u003d \"Meetings consist of 2 datetimes, the start datetime and \"","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":" + \"end date time.\\n\"","lastModifiedDate":"2024-02-22"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" + \"Each input string for datetime must be in the format dd-MM-yyyy\u0027T\u0027HH:mm, for example 23-02-2024T16:00.\\n\"","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \"The start datetime must be before the end date time.\";","lastModifiedDate":"2024-02-22"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" public static final String MESSAGE_REMARK_CONSTRAINTS \u003d \"Remark is at most \"","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" + MAX_REMARK_LENGTH + \" characters long.\";","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public final LocalDateTime start;","lastModifiedDate":"2024-02-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public final LocalDateTime end;","lastModifiedDate":"2024-02-22"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" public final String remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-02-22"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" * Constructs an {@code Meeting}.","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2024-02-22"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":" * @param start The start datetime of the meeting.","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" * @param end The end datetime of the meeting.","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-22"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":" public Meeting(LocalDateTime start, LocalDateTime end, String remark) {","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":" requireAllNonNull(start, end, remark);","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":" checkArgument(isValidDateTime(start, end), MESSAGE_DATETIME_CONSTRAINTS);","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":" checkArgument(isValidRemark(remark), MESSAGE_REMARK_CONSTRAINTS);","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.start \u003d start;","lastModifiedDate":"2024-02-22"},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.end \u003d end;","lastModifiedDate":"2024-02-22"},{"lineNumber":42,"author":{"gitId":"Dethada"},"content":" this.remark \u003d remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-22"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-02-22"},{"lineNumber":46,"author":{"gitId":"Dethada"},"content":" * Returns true if the given start and end datetimes are valid.","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"Dethada"},"content":" * The start and end datetime are valid if the start is before the end datetime.","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-22"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static boolean isValidDateTime(LocalDateTime start, LocalDateTime end) {","lastModifiedDate":"2024-02-22"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return start.isBefore(end);","lastModifiedDate":"2024-02-22"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-22"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":53,"author":{"gitId":"Dethada"},"content":" public static boolean isValidRemark(String remark) {","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"Dethada"},"content":" return remark.length() \u003c\u003d MAX_REMARK_LENGTH;","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public String getStartString() {","lastModifiedDate":"2024-02-22"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return DateTimeUtil.dateTimeToString(start);","lastModifiedDate":"2024-02-22"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public String getEndString() {","lastModifiedDate":"2024-02-22"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return DateTimeUtil.dateTimeToString(end);","lastModifiedDate":"2024-02-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-02-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2024-02-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-02-22"},{"lineNumber":68,"author":{"gitId":"Dethada"},"content":" .add(\"Start Datetime\", getStartString())","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"Dethada"},"content":" .add(\"End Datetime\", getEndString())","lastModifiedDate":"2024-03-11"},{"lineNumber":70,"author":{"gitId":"Dethada"},"content":" .add(\"Remark\", remark)","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2024-02-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-02-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-02-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-02-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2024-02-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-02-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":" if (!(other instanceof Meeting)) {","lastModifiedDate":"2024-02-22"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2024-02-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-22"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":85,"author":{"gitId":"-"},"content":" Meeting otherMeeting \u003d (Meeting) other;","lastModifiedDate":"2024-02-22"},{"lineNumber":86,"author":{"gitId":"Dethada"},"content":" // We only need to compare up to minutes, comparing seconds and nanos is unnecessary and can cause issues.","lastModifiedDate":"2024-03-11"},{"lineNumber":87,"author":{"gitId":"Dethada"},"content":" return start.truncatedTo(ChronoUnit.MINUTES).equals(otherMeeting.start.truncatedTo(ChronoUnit.MINUTES))","lastModifiedDate":"2024-03-11"},{"lineNumber":88,"author":{"gitId":"Dethada"},"content":" \u0026\u0026 end.truncatedTo(ChronoUnit.MINUTES).equals(otherMeeting.end.truncatedTo(ChronoUnit.MINUTES))","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"Dethada"},"content":" \u0026\u0026 remark.equals(otherMeeting.remark);","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-22"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-02-22"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2024-02-22"},{"lineNumber":94,"author":{"gitId":"-"},"content":" return Objects.hash(start, end);","lastModifiedDate":"2024-02-22"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-22"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":97,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-02-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"}],"authorContributionMap":{"Dethada":33,"-":65}},{"path":"src/main/java/seedu/findvisor/model/person/Name.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.model.person;","lastModifiedDate":"2024-03-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":"KohGuanZeh"},"content":"import static seedu.findvisor.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-10"},{"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":"-"},"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":"-"},"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":"-"},"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":{"KohGuanZeh":2,"-":65}},{"path":"src/main/java/seedu/findvisor/model/person/NameContainsKeywordPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Javiery3889"},"content":"package seedu.findvisor.model.person;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"Javiery3889"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"Javiery3889"},"content":"import seedu.findvisor.commons.util.StringUtil;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"Javiery3889"},"content":"import seedu.findvisor.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"Javiery3889"},"content":"/**","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"Javiery3889"},"content":" * A predicate for evaluating if a {@link Person}\u0027s name contains (case-insensitive) a given keyword.","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"Javiery3889"},"content":" * This is used to filter for persons based on their name attribute.","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"Javiery3889"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"Javiery3889"},"content":"public class NameContainsKeywordPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"Javiery3889"},"content":" private final String keyword;","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"Javiery3889"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"Javiery3889"},"content":" * Constructs an {@code NameContainsKeywordPredicate} with the specified keyword.","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"Javiery3889"},"content":" *","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"Javiery3889"},"content":" * @param keyword The keyword to be used to lookup against the person\u0027s name. The match is case-insensitive.","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"Javiery3889"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"Javiery3889"},"content":" public NameContainsKeywordPredicate(String keyword) {","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"Javiery3889"},"content":" this.keyword \u003d keyword;","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"Javiery3889"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"Javiery3889"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"Javiery3889"},"content":" return StringUtil.containsIgnoreCase(person.getName().fullName, keyword);","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"Javiery3889"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"Javiery3889"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"Javiery3889"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"Javiery3889"},"content":" return true;","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"Javiery3889"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"Javiery3889"},"content":" if (!(other instanceof NameContainsKeywordPredicate)) {","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"Javiery3889"},"content":" return false;","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"Javiery3889"},"content":" NameContainsKeywordPredicate otherNameContainsKeywordsPredicate \u003d (NameContainsKeywordPredicate) other;","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"Javiery3889"},"content":" return keyword.equals(otherNameContainsKeywordsPredicate.keyword);","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"Javiery3889"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"Javiery3889"},"content":" public String toString() {","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"Javiery3889"},"content":" return new ToStringBuilder(this).add(\"name\", keyword).toString();","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"Javiery3889"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"Javiery3889":48}},{"path":"src/main/java/seedu/findvisor/model/person/Person.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.model.person;","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-10"},{"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.Optional;","lastModifiedDate":"2024-02-22"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.tag.Tag;","lastModifiedDate":"2024-03-10"},{"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":" private final Optional\u003cMeeting\u003e meeting;","lastModifiedDate":"2024-02-22"},{"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":"-"},"content":" public Person(Name name, Phone phone, Email email, Address address, Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-03-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":" requireAllNonNull(name, phone, email, address, tags);","lastModifiedDate":"2017-05-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20"},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.meeting \u003d Optional.empty();","lastModifiedDate":"2024-02-22"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-22"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-02-22"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-02-22"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-22"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public Person(Name name, Phone phone, Email email, Address address, Set\u003cTag\u003e tags, Optional\u003cMeeting\u003e meeting) {","lastModifiedDate":"2024-02-22"},{"lineNumber":47,"author":{"gitId":"-"},"content":" requireAllNonNull(name, phone, email, address, tags, meeting);","lastModifiedDate":"2024-02-22"},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2024-02-22"},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2024-02-22"},{"lineNumber":50,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2024-02-22"},{"lineNumber":51,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2024-02-22"},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2024-02-22"},{"lineNumber":53,"author":{"gitId":"-"},"content":" this.meeting \u003d meeting;","lastModifiedDate":"2024-02-22"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return name;","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":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return phone;","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":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public Optional\u003cMeeting\u003e getMeeting() {","lastModifiedDate":"2024-02-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return meeting;","lastModifiedDate":"2024-02-22"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19"},{"lineNumber":90,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19"},{"lineNumber":94,"author":{"gitId":"KohGuanZeh"},"content":" \u0026\u0026 otherPerson.getPhone().equals(getPhone());","lastModifiedDate":"2024-03-11"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":103,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":104,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":107,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10"},{"lineNumber":109,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":112,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10"},{"lineNumber":113,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" \u0026\u0026 meeting.equals(otherPerson.meeting)","lastModifiedDate":"2024-02-22"},{"lineNumber":118,"author":{"gitId":"-"},"content":" \u0026\u0026 tags.equals(otherPerson.tags);","lastModifiedDate":"2023-07-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 int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":123,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":124,"author":{"gitId":"-"},"content":" return Objects.hash(name, phone, email, address, tags, meeting);","lastModifiedDate":"2024-02-22"},{"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 String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":129,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":" .add(\"meeting\", meeting)","lastModifiedDate":"2024-02-22"},{"lineNumber":135,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":139,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"KohGuanZeh":5,"-":134}},{"path":"src/main/java/seedu/findvisor/model/person/Phone.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.model.person;","lastModifiedDate":"2024-03-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":"KohGuanZeh"},"content":"import static seedu.findvisor.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-10"},{"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":"-"},"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":"Arixeyeion"},"content":" \"Phone numbers should only contain numbers or spaces, and it should be a valid Singaporean mobile number.\\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"Arixeyeion"},"content":" + \"Valid examples: 91234567 or 8123 4567. Do note that the spaces will be trimmed.\";","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"Arixeyeion"},"content":" public static final String VALIDATION_REGEX \u003d \"[89]\\\\d{7}\";","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public final String value;","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"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":{"Arixeyeion":3,"KohGuanZeh":2,"-":57}},{"path":"src/main/java/seedu/findvisor/model/person/PhoneContainsKeywordPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Javiery3889"},"content":"package seedu.findvisor.model.person;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"Javiery3889"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"Javiery3889"},"content":"import seedu.findvisor.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"Javiery3889"},"content":"/**","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"Javiery3889"},"content":" * A predicate for evaluating if a {@link Person}\u0027s phone contains a given keyword.","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"Javiery3889"},"content":" * This is used to filter for persons based on their phone attribute.","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"Javiery3889"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"Javiery3889"},"content":"public class PhoneContainsKeywordPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"Javiery3889"},"content":" private final String keyword;","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"Javiery3889"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"Javiery3889"},"content":" * Constructs an {@code PhoneEqualsKeywordPredicate} with the specified keyword.","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"Javiery3889"},"content":" *","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"Javiery3889"},"content":" * @param keyword The keyword to be used to lookup against the person\u0027s phone.","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"Javiery3889"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"Javiery3889"},"content":" public PhoneContainsKeywordPredicate(String keyword) {","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"Javiery3889"},"content":" this.keyword \u003d keyword;","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"Javiery3889"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"Javiery3889"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"Javiery3889"},"content":" String personPhoneString \u003d person.getPhone().value;","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"Javiery3889"},"content":" return personPhoneString.contains(keyword);","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"Javiery3889"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"Javiery3889"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"Javiery3889"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"Javiery3889"},"content":" return true;","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"Javiery3889"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"Javiery3889"},"content":" if (!(other instanceof PhoneContainsKeywordPredicate)) {","lastModifiedDate":"2024-03-15"},{"lineNumber":37,"author":{"gitId":"Javiery3889"},"content":" return false;","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"Javiery3889"},"content":" PhoneContainsKeywordPredicate otherPhoneEqualsKeywordsPredicate \u003d (PhoneContainsKeywordPredicate) other;","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"Javiery3889"},"content":" return keyword.equals(otherPhoneEqualsKeywordsPredicate.keyword);","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"Javiery3889"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"Javiery3889"},"content":" public String toString() {","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"Javiery3889"},"content":" return new ToStringBuilder(this).add(\"phone\", keyword).toString();","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"Javiery3889"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"Javiery3889":48}},{"path":"src/main/java/seedu/findvisor/model/person/UniquePersonList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.model.person;","lastModifiedDate":"2024-03-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":"KohGuanZeh"},"content":"import static seedu.findvisor.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-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":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.exceptions.PersonNotFoundException;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Adds a person to the list.","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * The person must not already exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void add(Person toAdd) {","lastModifiedDate":"2018-08-07"},{"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":"-"},"content":" * Replaces the person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2017-06-07"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":54,"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":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-07"},{"lineNumber":57,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2018-08-08"},{"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":"-"},"content":" if (!target.isSamePerson(editedPerson) \u0026\u0026 contains(editedPerson)) {","lastModifiedDate":"2018-04-19"},{"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":"-"},"content":" internalList.set(index, editedPerson);","lastModifiedDate":"2018-01-10"},{"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":"-"},"content":" * Removes the equivalent person from the list.","lastModifiedDate":"2016-08-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * The person must exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void remove(Person toRemove) {","lastModifiedDate":"2018-08-07"},{"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":"-"},"content":" public void setPersons(UniquePersonList replacement) {","lastModifiedDate":"2016-10-19"},{"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":"-"},"content":" * Replaces the contents of this list with {@code persons}.","lastModifiedDate":"2018-08-07"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2018-08-07"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void setPersons(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-08-07"},{"lineNumber":92,"author":{"gitId":"-"},"content":" requireAllNonNull(persons);","lastModifiedDate":"2018-01-10"},{"lineNumber":93,"author":{"gitId":"-"},"content":" if (!personsAreUnique(persons)) {","lastModifiedDate":"2018-04-19"},{"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":"-"},"content":" internalList.setAll(persons);","lastModifiedDate":"2018-08-14"},{"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":"-"},"content":" public ObservableList\u003cPerson\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2018-04-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":"-"},"content":" public Iterator\u003cPerson\u003e iterator() {","lastModifiedDate":"2016-08-24"},{"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":"-"},"content":" if (!(other instanceof UniquePersonList)) {","lastModifiedDate":"2023-07-13"},{"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":"-"},"content":" UniquePersonList otherUniquePersonList \u003d (UniquePersonList) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" return internalList.equals(otherUniquePersonList.internalList);","lastModifiedDate":"2023-07-13"},{"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":"-"},"content":" * Returns true if {@code persons} contains only unique persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":140,"author":{"gitId":"-"},"content":" private boolean personsAreUnique(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-04-19"},{"lineNumber":141,"author":{"gitId":"-"},"content":" for (int i \u003d 0; i \u003c persons.size() - 1; i++) {","lastModifiedDate":"2018-04-19"},{"lineNumber":142,"author":{"gitId":"-"},"content":" for (int j \u003d i + 1; j \u003c persons.size(); j++) {","lastModifiedDate":"2018-04-19"},{"lineNumber":143,"author":{"gitId":"-"},"content":" if (persons.get(i).isSamePerson(persons.get(j))) {","lastModifiedDate":"2018-04-19"},{"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":{"KohGuanZeh":4,"-":146}},{"path":"src/main/java/seedu/findvisor/model/person/exceptions/DuplicatePersonException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.model.person.exceptions;","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Signals that the operation will result in duplicate Persons (Persons are considered duplicates if they have the same","lastModifiedDate":"2018-04-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":" * identity).","lastModifiedDate":"2018-04-19"},{"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":"-"},"content":" super(\"Operation would result in duplicate persons\");","lastModifiedDate":"2017-06-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09"}],"authorContributionMap":{"KohGuanZeh":1,"-":10}},{"path":"src/main/java/seedu/findvisor/model/person/exceptions/PersonNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.model.person.exceptions;","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Signals that the operation is unable to find the specified person.","lastModifiedDate":"2017-06-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class PersonNotFoundException extends RuntimeException {}","lastModifiedDate":"2018-08-07"}],"authorContributionMap":{"KohGuanZeh":1,"-":5}},{"path":"src/main/java/seedu/findvisor/model/tag/Tag.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.model.tag;","lastModifiedDate":"2024-03-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":"KohGuanZeh"},"content":"import static seedu.findvisor.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-10"},{"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":{"KohGuanZeh":2,"-":60}},{"path":"src/main/java/seedu/findvisor/model/tag/TagsContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Javiery3889"},"content":"package seedu.findvisor.model.tag;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"Javiery3889"},"content":"import java.util.List;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"Javiery3889"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"Javiery3889"},"content":"import seedu.findvisor.commons.util.StringUtil;","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"Javiery3889"},"content":"import seedu.findvisor.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"Javiery3889"},"content":"import seedu.findvisor.model.person.Person;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"Javiery3889"},"content":"/**","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"Javiery3889"},"content":" * A predicate for evaluating if a {@link Person}\u0027s name contains (case-insensitive) any of the given keywords.","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"Javiery3889"},"content":" * This is used to filter for persons based on their tags attribute.","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"Javiery3889"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"Javiery3889"},"content":"public class TagsContainsKeywordsPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"Javiery3889"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"Javiery3889"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"Javiery3889"},"content":" * Constructs an {@code TagsContainsKeywordsPredicate} with the specified keyword.","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"Javiery3889"},"content":" *","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"Javiery3889"},"content":" * @param keywords The keywords to be used to lookup against the person\u0027s tags.","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"Javiery3889"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"Javiery3889"},"content":" public TagsContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"Javiery3889"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"Javiery3889"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"Javiery3889"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"Javiery3889"},"content":" return keywords.stream().anyMatch(keyword -\u003e person.getTags().stream()","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"Javiery3889"},"content":" .anyMatch(tag -\u003e StringUtil.containsIgnoreCase(tag.tagName, keyword)));","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"Javiery3889"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"Javiery3889"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"Javiery3889"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"Javiery3889"},"content":" return true;","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"Javiery3889"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"Javiery3889"},"content":" if (!(other instanceof TagsContainsKeywordsPredicate)) {","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"Javiery3889"},"content":" return false;","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"Javiery3889"},"content":" TagsContainsKeywordsPredicate otherNameContainsKeywordsPredicate \u003d (TagsContainsKeywordsPredicate) other;","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"Javiery3889"},"content":" return keywords.equals(otherNameContainsKeywordsPredicate.keywords);","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"Javiery3889"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"Javiery3889"},"content":" public String toString() {","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"Javiery3889"},"content":" return new ToStringBuilder(this).add(\"tags\", keywords).toString();","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"Javiery3889"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"Javiery3889":51}},{"path":"src/main/java/seedu/findvisor/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.model.util;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.model.AddressBook;","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Address;","lastModifiedDate":"2024-03-10"},{"lineNumber":10,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Email;","lastModifiedDate":"2024-03-10"},{"lineNumber":11,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Name;","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Person;","lastModifiedDate":"2024-03-10"},{"lineNumber":13,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Phone;","lastModifiedDate":"2024-03-10"},{"lineNumber":14,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.tag.Tag;","lastModifiedDate":"2024-03-10"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":" new Person(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" getTagSet(\"friends\")),","lastModifiedDate":"2017-03-14"},{"lineNumber":25,"author":{"gitId":"-"},"content":" new Person(new Name(\"Bernice Yu\"), new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" getTagSet(\"colleagues\", \"friends\")),","lastModifiedDate":"2017-03-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":" getTagSet(\"neighbours\")),","lastModifiedDate":"2017-03-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":" new Person(new Name(\"David Li\"), new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":33,"author":{"gitId":"-"},"content":" getTagSet(\"family\")),","lastModifiedDate":"2017-03-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" getTagSet(\"classmates\")),","lastModifiedDate":"2017-03-14"},{"lineNumber":37,"author":{"gitId":"-"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":" getTagSet(\"colleagues\"))","lastModifiedDate":"2017-03-14"},{"lineNumber":40,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14"},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"KohGuanZeh":9,"-":51}},{"path":"src/main/java/seedu/findvisor/storage/AddressBookStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.storage;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-24"},{"lineNumber":11,"author":{"gitId":"KohGuanZeh"},"content":" * Represents a storage for {@link seedu.findvisor.model.AddressBook}.","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public interface AddressBookStorage {","lastModifiedDate":"2016-09-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Returns the file path of the data file.","lastModifiedDate":"2016-09-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-04-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Returns AddressBook data as a {@link ReadOnlyAddressBook}.","lastModifiedDate":"2016-09-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Returns {@code Optional.empty()} if storage file is not found.","lastModifiedDate":"2016-09-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2023-06-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" Optional\u003cReadOnlyAddressBook\u003e readAddressBook() throws DataLoadingException;","lastModifiedDate":"2023-06-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-01"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @see #getAddressBookFilePath()","lastModifiedDate":"2016-10-01"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-01"},{"lineNumber":31,"author":{"gitId":"-"},"content":" Optional\u003cReadOnlyAddressBook\u003e readAddressBook(Path filePath) throws DataLoadingException;","lastModifiedDate":"2023-06-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Saves the given {@link ReadOnlyAddressBook} to the storage.","lastModifiedDate":"2016-09-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * @param addressBook cannot be null.","lastModifiedDate":"2016-09-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * @throws IOException if there was any problem writing to the file.","lastModifiedDate":"2016-09-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" void saveAddressBook(ReadOnlyAddressBook addressBook) throws IOException;","lastModifiedDate":"2016-09-28"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * @see #saveAddressBook(ReadOnlyAddressBook)","lastModifiedDate":"2016-10-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath) throws IOException;","lastModifiedDate":"2018-04-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-24"}],"authorContributionMap":{"KohGuanZeh":4,"-":41}},{"path":"src/main/java/seedu/findvisor/storage/JsonAdaptedMeeting.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package seedu.findvisor.storage;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-22"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2024-02-22"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-02-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2024-02-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.commons.util.DateTimeUtil;","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.model.person.Meeting;","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2024-02-22"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" * Jackson-friendly version of {@link Meeting}.","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":"class JsonAdaptedMeeting {","lastModifiedDate":"2024-02-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private final String start;","lastModifiedDate":"2024-02-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private final String end;","lastModifiedDate":"2024-02-22"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" private final String remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-02-22"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" * Constructs a {@code JsonAdaptedMeeting} with the given {@code start} and {@code end}.","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2024-02-22"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" public JsonAdaptedMeeting(@JsonProperty(\"start\") String start,","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" @JsonProperty(\"end\") String end, @JsonProperty(\"remark\") String remark) {","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" this.start \u003d start;","lastModifiedDate":"2024-02-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":" this.end \u003d end;","lastModifiedDate":"2024-02-22"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" this.remark \u003d remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-02-22"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" * Converts a given {@code Optional\u003cMeeting\u003e} into this class for Jackson use.","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-22"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public JsonAdaptedMeeting(Optional\u003cMeeting\u003e source) {","lastModifiedDate":"2024-02-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" start \u003d source.map(meeting -\u003e DateTimeUtil.dateTimeToInputString(meeting.start)).orElse(\"\");","lastModifiedDate":"2024-02-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":" end \u003d source.map(meeting -\u003e DateTimeUtil.dateTimeToInputString(meeting.end)).orElse(\"\");","lastModifiedDate":"2024-02-22"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":" remark \u003d source.map(meeting -\u003e meeting.remark).orElse(\"\");","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-22"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-02-22"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted meeting object into the model\u0027s {@code Meeting} object.","lastModifiedDate":"2024-02-22"},{"lineNumber":44,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2024-02-22"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted","lastModifiedDate":"2024-02-22"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * meeting.","lastModifiedDate":"2024-02-22"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-22"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public Optional\u003cMeeting\u003e toModelType() throws IllegalValueException {","lastModifiedDate":"2024-02-22"},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (start \u003d\u003d \"\" || end \u003d\u003d \"\") {","lastModifiedDate":"2024-02-22"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2024-02-22"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-22"},{"lineNumber":52,"author":{"gitId":"Dethada"},"content":" try {","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"-"},"content":" LocalDateTime start \u003d DateTimeUtil.parseDateTimeString(this.start);","lastModifiedDate":"2024-02-22"},{"lineNumber":54,"author":{"gitId":"-"},"content":" LocalDateTime end \u003d DateTimeUtil.parseDateTimeString(this.end);","lastModifiedDate":"2024-02-22"},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (!Meeting.isValidDateTime(start, end)) {","lastModifiedDate":"2024-02-22"},{"lineNumber":56,"author":{"gitId":"Dethada"},"content":" throw new IllegalValueException(Meeting.MESSAGE_DATETIME_CONSTRAINTS);","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-22"},{"lineNumber":58,"author":{"gitId":"Dethada"},"content":" if (!Meeting.isValidRemark(remark)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"Dethada"},"content":" throw new IllegalValueException(Meeting.MESSAGE_REMARK_CONSTRAINTS);","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"Dethada"},"content":" return Optional.of(new Meeting(start, end, remark));","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"Dethada"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"Dethada"},"content":" throw new IllegalValueException(Meeting.MESSAGE_DATETIME_CONSTRAINTS);","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":67,"author":{"gitId":"Dethada"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"Dethada"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"Dethada"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"Dethada"},"content":" return true;","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"Dethada"},"content":" if (!(other instanceof JsonAdaptedMeeting)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"Dethada"},"content":" return false;","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"Dethada"},"content":" JsonAdaptedMeeting otherMeeting \u003d (JsonAdaptedMeeting) other;","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"Dethada"},"content":" return start.equals(otherMeeting.start) \u0026\u0026 end.equals(otherMeeting.end) \u0026\u0026 remark.equals(otherMeeting.remark);","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-02-22"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"}],"authorContributionMap":{"Dethada":36,"-":46}},{"path":"src/main/java/seedu/findvisor/storage/JsonAdaptedPerson.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.storage;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-10"},{"lineNumber":13,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Address;","lastModifiedDate":"2024-03-10"},{"lineNumber":14,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Email;","lastModifiedDate":"2024-03-10"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.model.person.Meeting;","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Name;","lastModifiedDate":"2024-03-10"},{"lineNumber":17,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Person;","lastModifiedDate":"2024-03-10"},{"lineNumber":18,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Phone;","lastModifiedDate":"2024-03-10"},{"lineNumber":19,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.tag.Tag;","lastModifiedDate":"2024-03-10"},{"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 JsonAdaptedMeeting meeting;","lastModifiedDate":"2024-02-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09"},{"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":"-"},"content":" @JsonProperty(\"meeting\") JsonAdaptedMeeting meeting, @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags) {","lastModifiedDate":"2024-02-22"},{"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":" this.meeting \u003d meeting;","lastModifiedDate":"2024-02-22"},{"lineNumber":47,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"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":" meeting \u003d new JsonAdaptedMeeting(source.getMeeting());","lastModifiedDate":"2024-02-22"},{"lineNumber":61,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09"},{"lineNumber":74,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":111,"author":{"gitId":"-"},"content":" if (meeting \u003d\u003d null) {","lastModifiedDate":"2024-02-22"},{"lineNumber":112,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Meeting.class.getSimpleName()));","lastModifiedDate":"2024-02-22"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-22"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":115,"author":{"gitId":"-"},"content":" return new Person(modelName, modelPhone, modelEmail, modelAddress, modelTags, meeting.toModelType());","lastModifiedDate":"2024-02-22"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"KohGuanZeh":8,"Dethada":1,"-":109}},{"path":"src/main/java/seedu/findvisor/storage/JsonAdaptedTag.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.storage;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-10"},{"lineNumber":7,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.tag.Tag;","lastModifiedDate":"2024-03-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":{"KohGuanZeh":3,"-":45}},{"path":"src/main/java/seedu/findvisor/storage/JsonAddressBookStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.storage;","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.io.IOException;","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.util.Optional;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.LogsCenter;","lastModifiedDate":"2024-03-10"},{"lineNumber":11,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-10"},{"lineNumber":13,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.commons.util.FileUtil;","lastModifiedDate":"2024-03-10"},{"lineNumber":14,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.commons.util.JsonUtil;","lastModifiedDate":"2024-03-10"},{"lineNumber":15,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-10"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * A class to access AddressBook data stored as a json file on the hard disk.","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class JsonAddressBookStorage implements AddressBookStorage {","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(JsonAddressBookStorage.class);","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private Path filePath;","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public JsonAddressBookStorage(Path filePath) {","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" return filePath;","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":" @Override","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public Optional\u003cReadOnlyAddressBook\u003e readAddressBook() throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":36,"author":{"gitId":"-"},"content":" return readAddressBook(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":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Similar to {@link #readAddressBook()}.","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2023-06-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public Optional\u003cReadOnlyAddressBook\u003e readAddressBook(Path filePath) throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":46,"author":{"gitId":"-"},"content":" requireNonNull(filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" Optional\u003cJsonSerializableAddressBook\u003e jsonAddressBook \u003d JsonUtil.readJsonFile(","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" filePath, JsonSerializableAddressBook.class);","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" if (!jsonAddressBook.isPresent()) {","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return Optional.of(jsonAddressBook.get().toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" logger.info(\"Illegal values found in \" + filePath + \": \" + ive.getMessage());","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" throw new DataLoadingException(ive);","lastModifiedDate":"2023-06-14"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook) throws IOException {","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" saveAddressBook(addressBook, filePath);","lastModifiedDate":"2018-08-13"},{"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":" * Similar to {@link #saveAddressBook(ReadOnlyAddressBook)}.","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath) throws IOException {","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" requireNonNull(addressBook);","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" requireNonNull(filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" FileUtil.createIfMissing(filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" JsonUtil.saveJsonFile(new JsonSerializableAddressBook(addressBook), filePath);","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":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"KohGuanZeh":7,"-":73}},{"path":"src/main/java/seedu/findvisor/storage/JsonSerializableAddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.storage;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.AddressBook;","lastModifiedDate":"2024-03-10"},{"lineNumber":13,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-10"},{"lineNumber":14,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Person;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"Persons list contains duplicate person(s).\";","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedPerson\u003e persons \u003d new ArrayList\u003c\u003e();","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":" * 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":"-"},"content":" public JsonSerializableAddressBook(@JsonProperty(\"persons\") List\u003cJsonAdaptedPerson\u003e persons) {","lastModifiedDate":"2018-08-13"},{"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":"-"},"content":" persons.addAll(source.getPersonList().stream().map(JsonAdaptedPerson::new).collect(Collectors.toList()));","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 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":"-"},"content":" for (JsonAdaptedPerson jsonAdaptedPerson : persons) {","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" Person person \u003d jsonAdaptedPerson.toModelType();","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (addressBook.hasPerson(person)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2018-08-13"},{"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":{"KohGuanZeh":5,"-":55}},{"path":"src/main/java/seedu/findvisor/storage/JsonUserPrefsStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.storage;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.commons.util.JsonUtil;","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-10"},{"lineNumber":10,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.UserPrefs;","lastModifiedDate":"2024-03-10"},{"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":{"KohGuanZeh":5,"-":42}},{"path":"src/main/java/seedu/findvisor/storage/Storage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.storage;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-10"},{"lineNumber":10,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.UserPrefs;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":"public interface Storage extends AddressBookStorage, UserPrefsStorage {","lastModifiedDate":"2016-09-25"},{"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":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-04-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" Optional\u003cReadOnlyAddressBook\u003e readAddressBook() throws DataLoadingException;","lastModifiedDate":"2023-06-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" void saveAddressBook(ReadOnlyAddressBook addressBook) throws IOException;","lastModifiedDate":"2016-09-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"KohGuanZeh":5,"-":27}},{"path":"src/main/java/seedu/findvisor/storage/StorageManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.storage;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.LogsCenter;","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-10"},{"lineNumber":10,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-10"},{"lineNumber":11,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.UserPrefs;","lastModifiedDate":"2024-03-10"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Manages storage of AddressBook data in local storage.","lastModifiedDate":"2016-09-24"},{"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":"-"},"content":" private AddressBookStorage addressBookStorage;","lastModifiedDate":"2016-10-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private UserPrefsStorage userPrefsStorage;","lastModifiedDate":"2016-10-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Creates a {@code StorageManager} with the given {@code AddressBookStorage} and {@code UserPrefStorage}.","lastModifiedDate":"2020-05-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public StorageManager(AddressBookStorage addressBookStorage, UserPrefsStorage userPrefsStorage) {","lastModifiedDate":"2016-10-01"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.addressBookStorage \u003d addressBookStorage;","lastModifiedDate":"2016-10-01"},{"lineNumber":28,"author":{"gitId":"-"},"content":" this.userPrefsStorage \u003d userPrefsStorage;","lastModifiedDate":"2016-10-01"},{"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":"-"},"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":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return addressBookStorage.getAddressBookFilePath();","lastModifiedDate":"2016-09-24"},{"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":"-"},"content":" public Optional\u003cReadOnlyAddressBook\u003e readAddressBook() throws DataLoadingException {","lastModifiedDate":"2023-06-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return readAddressBook(addressBookStorage.getAddressBookFilePath());","lastModifiedDate":"2016-10-01"},{"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":"-"},"content":" public Optional\u003cReadOnlyAddressBook\u003e readAddressBook(Path filePath) throws DataLoadingException {","lastModifiedDate":"2023-06-15"},{"lineNumber":63,"author":{"gitId":"-"},"content":" logger.fine(\"Attempting to read data from file: \" + filePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return addressBookStorage.readAddressBook(filePath);","lastModifiedDate":"2016-10-01"},{"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":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook) throws IOException {","lastModifiedDate":"2016-09-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":" saveAddressBook(addressBook, addressBookStorage.getAddressBookFilePath());","lastModifiedDate":"2016-10-01"},{"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":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" logger.fine(\"Attempting to write to data file: \" + filePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":75,"author":{"gitId":"-"},"content":" addressBookStorage.saveAddressBook(addressBook, filePath);","lastModifiedDate":"2016-10-01"},{"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":{"KohGuanZeh":6,"-":72}},{"path":"src/main/java/seedu/findvisor/storage/UserPrefsStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.storage;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.UserPrefs;","lastModifiedDate":"2024-03-10"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-24"},{"lineNumber":12,"author":{"gitId":"KohGuanZeh"},"content":" * Represents a storage for {@link seedu.findvisor.model.UserPrefs}.","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":" * Saves the given {@link seedu.findvisor.model.ReadOnlyUserPrefs} to the storage.","lastModifiedDate":"2024-03-10"},{"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":{"KohGuanZeh":6,"-":30}},{"path":"src/main/java/seedu/findvisor/ui/CommandBox.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.ui;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.CommandResult;","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-10"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * The UI component that is responsible for receiving user command inputs.","lastModifiedDate":"2017-08-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class CommandBox extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String ERROR_STYLE_CLASS \u003d \"error\";","lastModifiedDate":"2017-02-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"CommandBox.fxml\";","lastModifiedDate":"2017-04-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private final CommandExecutor commandExecutor;","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-14"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private TextField commandTextField;","lastModifiedDate":"2016-09-14"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Creates a {@code CommandBox} with the given {@code CommandExecutor}.","lastModifiedDate":"2020-05-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public CommandBox(CommandExecutor commandExecutor) {","lastModifiedDate":"2019-01-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" this.commandExecutor \u003d commandExecutor;","lastModifiedDate":"2018-12-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // calls #setStyleToDefault() whenever there is a change to the text of the command box.","lastModifiedDate":"2017-06-28"},{"lineNumber":31,"author":{"gitId":"-"},"content":" commandTextField.textProperty().addListener((unused1, unused2, unused3) -\u003e setStyleToDefault());","lastModifiedDate":"2017-06-28"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Handles the Enter button pressed event.","lastModifiedDate":"2017-08-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private void handleCommandEntered() {","lastModifiedDate":"2018-04-01"},{"lineNumber":39,"author":{"gitId":"-"},"content":" String commandText \u003d commandTextField.getText();","lastModifiedDate":"2020-12-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":" if (commandText.equals(\"\")) {","lastModifiedDate":"2020-12-04"},{"lineNumber":41,"author":{"gitId":"-"},"content":" return;","lastModifiedDate":"2020-12-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-12-04"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-12-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-02-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" commandExecutor.execute(commandText);","lastModifiedDate":"2020-12-04"},{"lineNumber":46,"author":{"gitId":"-"},"content":" commandTextField.setText(\"\");","lastModifiedDate":"2016-09-14"},{"lineNumber":47,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2017-03-11"},{"lineNumber":48,"author":{"gitId":"-"},"content":" setStyleToIndicateCommandFailure();","lastModifiedDate":"2017-02-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-14"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-28"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Sets the command box style to use the default style.","lastModifiedDate":"2017-06-28"},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28"},{"lineNumber":55,"author":{"gitId":"-"},"content":" private void setStyleToDefault() {","lastModifiedDate":"2017-06-28"},{"lineNumber":56,"author":{"gitId":"-"},"content":" commandTextField.getStyleClass().remove(ERROR_STYLE_CLASS);","lastModifiedDate":"2017-02-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-28"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Sets the command box style to indicate a failed command.","lastModifiedDate":"2017-02-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28"},{"lineNumber":62,"author":{"gitId":"-"},"content":" private void setStyleToIndicateCommandFailure() {","lastModifiedDate":"2017-02-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" ObservableList\u003cString\u003e styleClass \u003d commandTextField.getStyleClass();","lastModifiedDate":"2017-03-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" if (styleClass.contains(ERROR_STYLE_CLASS)) {","lastModifiedDate":"2017-03-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return;","lastModifiedDate":"2017-03-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" styleClass.add(ERROR_STYLE_CLASS);","lastModifiedDate":"2017-03-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Represents a function that can execute commands.","lastModifiedDate":"2018-12-09"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @FunctionalInterface","lastModifiedDate":"2018-12-09"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public interface CommandExecutor {","lastModifiedDate":"2018-12-09"},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":79,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":80,"author":{"gitId":"KohGuanZeh"},"content":" * @see seedu.findvisor.logic.Logic#execute(String)","lastModifiedDate":"2024-03-10"},{"lineNumber":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":82,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2018-12-09"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":85,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"}],"authorContributionMap":{"KohGuanZeh":5,"-":80}},{"path":"src/main/java/seedu/findvisor/ui/HelpWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.ui;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.LogsCenter;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":" public static final String USERGUIDE_URL \u003d \"https://ay2324s2-cs2103-f15-1.github.io/tp/UserGuide.html\";","lastModifiedDate":"2024-03-10"},{"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":{"KohGuanZeh":3,"-":99}},{"path":"src/main/java/seedu/findvisor/ui/MainWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.ui;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.GuiSettings;","lastModifiedDate":"2024-03-10"},{"lineNumber":14,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.LogsCenter;","lastModifiedDate":"2024-03-10"},{"lineNumber":15,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.Logic;","lastModifiedDate":"2024-03-10"},{"lineNumber":16,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.CommandResult;","lastModifiedDate":"2024-03-10"},{"lineNumber":17,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-10"},{"lineNumber":18,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-10"},{"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":"-"},"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":"-"},"content":" private StackPane personListPanelPlaceholder;","lastModifiedDate":"2017-05-09"},{"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":"-"},"content":" personListPanel \u003d new PersonListPanel(logic.getFilteredPersonList());","lastModifiedDate":"2019-01-25"},{"lineNumber":114,"author":{"gitId":"-"},"content":" personListPanelPlaceholder.getChildren().add(personListPanel.getRoot());","lastModifiedDate":"2017-06-14"},{"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":" public PersonListPanel getPersonListPanel() {","lastModifiedDate":"2016-08-25"},{"lineNumber":167,"author":{"gitId":"-"},"content":" return personListPanel;","lastModifiedDate":"2018-08-14"},{"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":"KohGuanZeh"},"content":" * @see seedu.findvisor.logic.Logic#execute(String)","lastModifiedDate":"2024-03-10"},{"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":{"KohGuanZeh":8,"-":188}},{"path":"src/main/java/seedu/findvisor/ui/PersonCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.ui;","lastModifiedDate":"2024-03-10"},{"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":"Dethada"},"content":"import seedu.findvisor.logic.Messages;","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Person;","lastModifiedDate":"2024-03-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":" /**","lastModifiedDate":"2017-03-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25"},{"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":"-"},"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":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public final Person person;","lastModifiedDate":"2018-01-10"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private Label address;","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private Label meeting;","lastModifiedDate":"2024-02-22"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2024-02-22"},{"lineNumber":45,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10"},{"lineNumber":51,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":" address.setText(person.getAddress().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" meeting.setText(person.getMeeting().map(Messages::format).orElse(\"No Scheduled Meeting\"));","lastModifiedDate":"2024-02-22"},{"lineNumber":59,"author":{"gitId":"-"},"content":" person.getTags().stream()","lastModifiedDate":"2019-01-02"},{"lineNumber":60,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02"},{"lineNumber":61,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":63,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"KohGuanZeh":2,"Dethada":1,"-":60}},{"path":"src/main/java/seedu/findvisor/ui/PersonListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.ui;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.LogsCenter;","lastModifiedDate":"2024-03-10"},{"lineNumber":11,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Person;","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Panel containing the list of persons.","lastModifiedDate":"2016-09-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class PersonListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListPanel.fxml\";","lastModifiedDate":"2016-09-14"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(PersonListPanel.class);","lastModifiedDate":"2017-04-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private ListView\u003cPerson\u003e personListView;","lastModifiedDate":"2018-02-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Creates a {@code PersonListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2020-05-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public PersonListPanel(ObservableList\u003cPerson\u003e personList) {","lastModifiedDate":"2019-01-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" personListView.setItems(personList);","lastModifiedDate":"2018-02-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" personListView.setCellFactory(listView -\u003e new PersonListViewCell());","lastModifiedDate":"2016-08-18"},{"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":"-"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Person} using a {@code PersonCard}.","lastModifiedDate":"2018-02-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" class PersonListViewCell extends ListCell\u003cPerson\u003e {","lastModifiedDate":"2018-02-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" protected void updateItem(Person person, boolean empty) {","lastModifiedDate":"2018-02-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" super.updateItem(person, empty);","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" if (empty || person \u003d\u003d null) {","lastModifiedDate":"2016-09-21"},{"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":"-"},"content":" setGraphic(new PersonCard(person, getIndex() + 1).getRoot());","lastModifiedDate":"2018-02-08"},{"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":{"KohGuanZeh":3,"-":46}},{"path":"src/main/java/seedu/findvisor/ui/ResultDisplay.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.ui;","lastModifiedDate":"2024-03-10"},{"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":{"KohGuanZeh":1,"-":27}},{"path":"src/main/java/seedu/findvisor/ui/StatusBarFooter.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.ui;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" * Creates a {@code StatusBarFooter} with the given {@code Path}.","lastModifiedDate":"2020-05-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public StatusBarFooter(Path saveLocation) {","lastModifiedDate":"2019-01-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2017-04-01"},{"lineNumber":25,"author":{"gitId":"-"},"content":" saveLocationStatus.setText(Paths.get(\".\").resolve(saveLocation).toString());","lastModifiedDate":"2018-12-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-01"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"KohGuanZeh":1,"-":27}},{"path":"src/main/java/seedu/findvisor/ui/Ui.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.ui;","lastModifiedDate":"2024-03-10"},{"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":{"KohGuanZeh":1,"-":12}},{"path":"src/main/java/seedu/findvisor/ui/UiManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.ui;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.MainApp;","lastModifiedDate":"2024-03-10"},{"lineNumber":11,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.LogsCenter;","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.commons.util.StringUtil;","lastModifiedDate":"2024-03-10"},{"lineNumber":13,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.Logic;","lastModifiedDate":"2024-03-10"},{"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":"Javiery3889"},"content":" private static final String ICON_APPLICATION \u003d \"/images/findvisor.png\";","lastModifiedDate":"2024-03-19"},{"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":{"KohGuanZeh":5,"Javiery3889":1,"-":82}},{"path":"src/main/java/seedu/findvisor/ui/UiPart.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.ui;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.MainApp;","lastModifiedDate":"2024-03-10"},{"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":{"KohGuanZeh":2,"-":86}},{"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":"Arixeyeion"},"content":" title\u003d\"FINDvisor\" minWidth\u003d\"450\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":17,"author":{"gitId":"Javiery3889"},"content":" \u003cImage url\u003d\"@/images/findvisor.png\" /\u003e","lastModifiedDate":"2024-03-19"},{"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":{"Arixeyeion":1,"Javiery3889":1,"-":58}},{"path":"src/test/java/seedu/findvisor/AppParametersTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor;","lastModifiedDate":"2024-03-10"},{"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":"2019-02-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-02-23"},{"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":"-"},"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":"-"},"content":"}","lastModifiedDate":"2018-04-21"}],"authorContributionMap":{"KohGuanZeh":1,"-":88}},{"path":"src/test/java/seedu/findvisor/commons/core/ConfigTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.commons.core;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","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":"2016-09-30"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class ConfigTest {","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 toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":" Config config \u003d new Config();","lastModifiedDate":"2019-02-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":" String expected \u003d Config.class.getCanonicalName() + \"{logLevel\u003d\" + config.getLogLevel()","lastModifiedDate":"2019-02-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":" + \", userPrefsFilePath\u003d\" + config.getUserPrefsFilePath() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":" assertEquals(expected, config.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-30"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public void equalsMethod() {","lastModifiedDate":"2016-09-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":" Config defaultConfig \u003d new Config();","lastModifiedDate":"2016-09-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" assertNotNull(defaultConfig);","lastModifiedDate":"2016-10-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertTrue(defaultConfig.equals(defaultConfig));","lastModifiedDate":"2016-09-30"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":27,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-30"}],"authorContributionMap":{"KohGuanZeh":1,"-":26}},{"path":"src/test/java/seedu/findvisor/commons/core/GuiSettingsTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.commons.core;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-02-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"public class GuiSettingsTest {","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings();","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":" String expected \u003d GuiSettings.class.getCanonicalName() + \"{windowWidth\u003d\" + guiSettings.getWindowWidth()","lastModifiedDate":"2019-02-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":" + \", windowHeight\u003d\" + guiSettings.getWindowHeight() + \", windowCoordinates\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":" + guiSettings.getWindowCoordinates() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":" assertEquals(expected, guiSettings.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-02-23"}],"authorContributionMap":{"KohGuanZeh":1,"-":15}},{"path":"src/test/java/seedu/findvisor/commons/core/VersionTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.commons.core;","lastModifiedDate":"2024-03-10"},{"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.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-10"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class VersionTest {","lastModifiedDate":"2016-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void versionParsing_acceptableVersionString_parsedVersionCorrectly() {","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" verifyVersionParsedCorrectly(\"V0.0.0ea\", 0, 0, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" verifyVersionParsedCorrectly(\"V3.10.2\", 3, 10, 2, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" verifyVersionParsedCorrectly(\"V100.100.100ea\", 100, 100, 100, true);","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":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public void versionParsing_wrongVersionString_throwIllegalArgumentException() {","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e Version.fromString(\"This is not a version string\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void versionConstructor_correctParameter_valueAsExpected() {","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" Version version \u003d new Version(19, 10, 20, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertEquals(19, version.getMajor());","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertEquals(10, version.getMinor());","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertEquals(20, version.getPatch());","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertEquals(true, version.isEarlyAccess());","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void versionToString_validVersion_correctStringRepresentation() {","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // boundary at 0","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" Version version \u003d new Version(0, 0, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertEquals(\"V0.0.0ea\", version.toString());","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" // normal values","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" version \u003d new Version(4, 10, 5, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertEquals(\"V4.10.5\", version.toString());","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // big numbers","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" version \u003d new Version(100, 100, 100, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertEquals(\"V100.100.100ea\", version.toString());","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":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void versionComparable_validVersion_compareToIsCorrect() {","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" Version one;","lastModifiedDate":"2017-09-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" Version another;","lastModifiedDate":"2017-09-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // Tests equality","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" one \u003d new Version(0, 0, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" another \u003d new Version(0, 0, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003d\u003d 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" one \u003d new Version(11, 12, 13, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" another \u003d new Version(11, 12, 13, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003d\u003d 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // Tests different patch","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" one \u003d new Version(0, 0, 5, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" another \u003d new Version(0, 0, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003e 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // Tests different minor","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" one \u003d new Version(0, 0, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" another \u003d new Version(0, 5, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003c 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // Tests different major","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" one \u003d new Version(10, 0, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":" another \u003d new Version(0, 0, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003e 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // Tests high major vs low minor","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":" one \u003d new Version(10, 0, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" another \u003d new Version(0, 1, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003e 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" // Tests high patch vs low minor","lastModifiedDate":"2016-08-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" one \u003d new Version(0, 0, 10, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":" another \u003d new Version(0, 1, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003c 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // Tests same major minor different patch","lastModifiedDate":"2016-08-08"},{"lineNumber":88,"author":{"gitId":"-"},"content":" one \u003d new Version(2, 15, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":" another \u003d new Version(2, 15, 5, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003c 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":92,"author":{"gitId":"-"},"content":" // Tests early access vs not early access on same version number","lastModifiedDate":"2016-08-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":" one \u003d new Version(2, 15, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":94,"author":{"gitId":"-"},"content":" another \u003d new Version(2, 15, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003c 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" // Tests early access lower version vs not early access higher version compare by version number first","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" one \u003d new Version(2, 15, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" another \u003d new Version(2, 15, 5, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003c 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" // Tests early access higher version vs not early access lower version compare by version number first","lastModifiedDate":"2016-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" one \u003d new Version(2, 15, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" another \u003d new Version(2, 15, 5, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003c 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void versionComparable_validVersion_hashCodeIsCorrect() {","lastModifiedDate":"2016-08-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" Version version \u003d new Version(100, 100, 100, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertEquals(100100100, version.hashCode());","lastModifiedDate":"2016-08-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":" version \u003d new Version(10, 10, 10, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertEquals(1010010010, version.hashCode());","lastModifiedDate":"2016-08-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public void versionComparable_validVersion_equalIsCorrect() {","lastModifiedDate":"2016-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" Version one;","lastModifiedDate":"2016-10-16"},{"lineNumber":120,"author":{"gitId":"-"},"content":" Version another;","lastModifiedDate":"2016-10-16"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" one \u003d new Version(0, 0, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" another \u003d new Version(0, 0, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertTrue(one.equals(another));","lastModifiedDate":"2016-08-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" one \u003d new Version(100, 191, 275, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" another \u003d new Version(100, 191, 275, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertTrue(one.equals(another));","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":" private void verifyVersionParsedCorrectly(String versionString,","lastModifiedDate":"2016-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":" int major, int minor, int patch, boolean isEarlyAccess) {","lastModifiedDate":"2016-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":" assertEquals(new Version(major, minor, patch, isEarlyAccess), Version.fromString(versionString));","lastModifiedDate":"2016-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"KohGuanZeh":2,"-":133}},{"path":"src/test/java/seedu/findvisor/commons/core/index/IndexTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.commons.core.index;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-10"},{"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":"-"},"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":"-"},"content":" assertTrue(fifthPersonIndex.equals(Index.fromOneBased(5)));","lastModifiedDate":"2017-05-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(fifthPersonIndex.equals(Index.fromZeroBased(4)));","lastModifiedDate":"2017-05-24"},{"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":"-"},"content":" assertTrue(fifthPersonIndex.equals(fifthPersonIndex));","lastModifiedDate":"2017-05-24"},{"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":"-"},"content":" assertFalse(fifthPersonIndex.equals(null));","lastModifiedDate":"2017-05-24"},{"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":"-"},"content":" assertFalse(fifthPersonIndex.equals(5.0f));","lastModifiedDate":"2017-05-24"},{"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":"-"},"content":" assertFalse(fifthPersonIndex.equals(Index.fromOneBased(1)));","lastModifiedDate":"2017-05-24"},{"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":{"KohGuanZeh":2,"-":65}},{"path":"src/test/java/seedu/findvisor/commons/util/AppUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.commons.util;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-10"},{"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":"Javiery3889"},"content":" assertNotNull(AppUtil.getImage(\"/images/findvisor.png\"));","lastModifiedDate":"2024-03-19"},{"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":{"KohGuanZeh":2,"Javiery3889":1,"-":33}},{"path":"src/test/java/seedu/findvisor/commons/util/CollectionUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.commons.util;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import static seedu.findvisor.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-10"},{"lineNumber":6,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" List\u003cObject\u003e containingNull \u003d Arrays.asList((Object) null);","lastModifiedDate":"2017-01-14"},{"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":"-"},"content":" assertNullPointerExceptionThrown(Arrays.asList((Object) null));","lastModifiedDate":"2017-05-19"},{"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":"-"},"content":" assertNullPointerExceptionNotThrown(Arrays.asList(new Object()));","lastModifiedDate":"2017-05-19"},{"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":"-"},"content":" List\u003cObject\u003e containingNull \u003d Arrays.asList((Object) null);","lastModifiedDate":"2017-01-14"},{"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":"2019-03-23"},{"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":"2019-03-23"},{"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":"2017-05-19"},{"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":"2017-05-19"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-19"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-22"}],"authorContributionMap":{"KohGuanZeh":3,"-":105}},{"path":"src/test/java/seedu/findvisor/commons/util/ConfigUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.commons.util;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.Config;","lastModifiedDate":"2024-03-10"},{"lineNumber":17,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-10"},{"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":"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":" @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-06-14"},{"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":"2019-03-23"},{"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":"2019-03-23"},{"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":{"KohGuanZeh":4,"-":112}},{"path":"src/test/java/seedu/findvisor/commons/util/DateTimeUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package seedu.findvisor.commons.util;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"public class DateTimeUtilTest {","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" public void parseDateTimeString_validString() {","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" assertEquals(LocalDateTime.of(2024, 1, 29, 14, 0), DateTimeUtil.parseDateTimeString(\"29-01-2024T14:00\"));","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" public void parseDateTimeString_invalidString_throwsDateTimeParseException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" assertThrows(DateTimeParseException.class, () -\u003e DateTimeUtil.parseDateTimeString(\"INVALID STRING\"));","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" public void dateTimeToInputString() {","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" assertEquals(\"29-01-2024T14:00\", DateTimeUtil.dateTimeToInputString(LocalDateTime.of(2024, 1, 29, 14, 0)));","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" public void dateTimeToString() {","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" assertEquals(\"29-01-2024 14:00\", DateTimeUtil.dateTimeToString(LocalDateTime.of(2024, 1, 29, 14, 0)));","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" public void isAfterCurrentDateTime() {","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":" assertTrue(DateTimeUtil.isAfterCurrentDateTime(LocalDateTime.now().plusMinutes(5)));","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"Dethada":39}},{"path":"src/test/java/seedu/findvisor/commons/util/FileUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.commons.util;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-10"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class FileUtilTest {","lastModifiedDate":"2016-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void isValidPath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":" // valid path","lastModifiedDate":"2018-04-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":" assertTrue(FileUtil.isValidPath(\"valid/file/path\"));","lastModifiedDate":"2018-04-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":" // invalid path","lastModifiedDate":"2018-04-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":" assertFalse(FileUtil.isValidPath(\"a\\0\"));","lastModifiedDate":"2018-04-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":" // null path -\u003e throws NullPointerException","lastModifiedDate":"2018-04-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e FileUtil.isValidPath(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"KohGuanZeh":2,"-":21}},{"path":"src/test/java/seedu/findvisor/commons/util/JsonUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.commons.util;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.testutil.SerializableTestClass;","lastModifiedDate":"2024-03-10"},{"lineNumber":11,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.testutil.TestUtil;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"KohGuanZeh":3,"-":42}},{"path":"src/test/java/seedu/findvisor/commons/util/StringUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.commons.util;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e StringUtil.containsWordIgnoreCase(\"typical sentence\", null));","lastModifiedDate":"2019-03-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void containsWordIgnoreCase_emptyWord_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, \"Word parameter cannot be empty\", ()","lastModifiedDate":"2019-03-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" -\u003e StringUtil.containsWordIgnoreCase(\"typical sentence\", \" \"));","lastModifiedDate":"2019-03-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void containsWordIgnoreCase_multipleWords_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, \"Word parameter should be a single word\", ()","lastModifiedDate":"2019-03-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" -\u003e StringUtil.containsWordIgnoreCase(\"typical sentence\", \"aaa BBB\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void containsWordIgnoreCase_nullSentence_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e StringUtil.containsWordIgnoreCase(null, \"abc\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Valid equivalence partitions for word:","lastModifiedDate":"2016-10-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * - any word","lastModifiedDate":"2016-10-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * - word containing symbols/numbers","lastModifiedDate":"2016-10-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * - word with leading/trailing spaces","lastModifiedDate":"2016-10-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Valid equivalence partitions for sentence:","lastModifiedDate":"2016-10-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * - empty string","lastModifiedDate":"2016-10-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * - one word","lastModifiedDate":"2016-10-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * - multiple words","lastModifiedDate":"2016-10-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * - sentence with extra spaces","lastModifiedDate":"2016-10-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Possible scenarios returning true:","lastModifiedDate":"2016-10-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * - matches first word in sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * - last word in sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - middle word in sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * - matches multiple words","lastModifiedDate":"2016-10-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * Possible scenarios returning false:","lastModifiedDate":"2016-10-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * - query word matches part of a sentence word","lastModifiedDate":"2016-10-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * - sentence word matches part of the query word","lastModifiedDate":"2016-10-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-13"},{"lineNumber":101,"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":102,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void containsWordIgnoreCase_validInputs_correctResult() {","lastModifiedDate":"2016-10-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" // Empty sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.containsWordIgnoreCase(\"\", \"abc\")); // Boundary case","lastModifiedDate":"2016-10-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.containsWordIgnoreCase(\" \", \"123\"));","lastModifiedDate":"2016-10-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" // Matches a partial word only","lastModifiedDate":"2016-10-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.containsWordIgnoreCase(\"aaa bbb ccc\", \"bb\")); // Sentence word bigger than query word","lastModifiedDate":"2016-10-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.containsWordIgnoreCase(\"aaa bbb ccc\", \"bbbb\")); // Query word bigger than sentence word","lastModifiedDate":"2016-10-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" // Matches word in the sentence, different upper/lower case letters","lastModifiedDate":"2016-10-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\"aaa bBb ccc\", \"Bbb\")); // First word (boundary case)","lastModifiedDate":"2016-10-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\"aaa bBb ccc@1\", \"CCc@1\")); // Last word (boundary case)","lastModifiedDate":"2016-10-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\" AAA bBb ccc \", \"aaa\")); // Sentence has extra spaces","lastModifiedDate":"2016-10-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\"Aaa\", \"aaa\")); // Only one word in sentence (boundary case)","lastModifiedDate":"2016-10-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\"aaa bbb ccc\", \" ccc \")); // Leading/trailing spaces","lastModifiedDate":"2016-10-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":" // Matches multiple words in sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\"AAA bBb ccc bbb\", \"bbB\"));","lastModifiedDate":"2016-10-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":126,"author":{"gitId":"Javiery3889"},"content":" //---------------- Tests for containsIgnoreCase --------------------------------------","lastModifiedDate":"2024-03-15"},{"lineNumber":127,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":128,"author":{"gitId":"Javiery3889"},"content":" /*","lastModifiedDate":"2024-03-14"},{"lineNumber":129,"author":{"gitId":"Javiery3889"},"content":" * Invalid equivalence partitions for substring: null, empty","lastModifiedDate":"2024-03-14"},{"lineNumber":130,"author":{"gitId":"Javiery3889"},"content":" * Invalid equivalence partitions for sentence: null","lastModifiedDate":"2024-03-14"},{"lineNumber":131,"author":{"gitId":"Javiery3889"},"content":" * The three test cases below test one invalid input at a time.","lastModifiedDate":"2024-03-14"},{"lineNumber":132,"author":{"gitId":"Javiery3889"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":133,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":134,"author":{"gitId":"Javiery3889"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":135,"author":{"gitId":"Javiery3889"},"content":" public void containsIgnoreCase_nullSubString_throwsNullPointerException() {","lastModifiedDate":"2024-03-15"},{"lineNumber":136,"author":{"gitId":"Javiery3889"},"content":" assertThrows(NullPointerException.class, () -\u003e StringUtil.containsIgnoreCase(","lastModifiedDate":"2024-03-15"},{"lineNumber":137,"author":{"gitId":"Javiery3889"},"content":" \"typical sentence\", null));","lastModifiedDate":"2024-03-14"},{"lineNumber":138,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":139,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":140,"author":{"gitId":"Javiery3889"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":141,"author":{"gitId":"Javiery3889"},"content":" public void containsIgnoreCase_emptySubString_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-15"},{"lineNumber":142,"author":{"gitId":"Javiery3889"},"content":" assertThrows(IllegalArgumentException.class, \"subString parameter cannot be empty\", ()","lastModifiedDate":"2024-03-14"},{"lineNumber":143,"author":{"gitId":"Javiery3889"},"content":" -\u003e StringUtil.containsIgnoreCase(\"typical sentence\", \" \"));","lastModifiedDate":"2024-03-15"},{"lineNumber":144,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":145,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":146,"author":{"gitId":"Javiery3889"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":147,"author":{"gitId":"Javiery3889"},"content":" public void containsIgnoreCase_nullSentence_throwsNullPointerException() {","lastModifiedDate":"2024-03-15"},{"lineNumber":148,"author":{"gitId":"Javiery3889"},"content":" assertThrows(NullPointerException.class, () -\u003e StringUtil.containsIgnoreCase(null, \"abc\"));","lastModifiedDate":"2024-03-15"},{"lineNumber":149,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":150,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":151,"author":{"gitId":"Javiery3889"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":152,"author":{"gitId":"Javiery3889"},"content":" public void containsIgnoreCase_validInputs_correctResult() {","lastModifiedDate":"2024-03-15"},{"lineNumber":153,"author":{"gitId":"Javiery3889"},"content":" // Empty sentence","lastModifiedDate":"2024-03-14"},{"lineNumber":154,"author":{"gitId":"Javiery3889"},"content":" assertFalse(StringUtil.containsIgnoreCase(\"\", \"abc\")); // Boundary case","lastModifiedDate":"2024-03-15"},{"lineNumber":155,"author":{"gitId":"Javiery3889"},"content":" assertFalse(StringUtil.containsIgnoreCase(\" \", \"123\"));","lastModifiedDate":"2024-03-15"},{"lineNumber":156,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":157,"author":{"gitId":"Javiery3889"},"content":" // Sentence does not fully contain substring","lastModifiedDate":"2024-03-15"},{"lineNumber":158,"author":{"gitId":"Javiery3889"},"content":" assertFalse(StringUtil.containsIgnoreCase(\"aaa bbb ccc\", \"bbbb\"));","lastModifiedDate":"2024-03-15"},{"lineNumber":159,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":160,"author":{"gitId":"Javiery3889"},"content":" // Sentence contains substring, but does not start with substring","lastModifiedDate":"2024-03-14"},{"lineNumber":161,"author":{"gitId":"Javiery3889"},"content":" assertTrue(StringUtil.containsIgnoreCase(\"aaa bbb ccc\", \"bb\"));","lastModifiedDate":"2024-03-15"},{"lineNumber":162,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":163,"author":{"gitId":"Javiery3889"},"content":" // Matches substring starting in the sentence, different upper/lower case letters","lastModifiedDate":"2024-03-14"},{"lineNumber":164,"author":{"gitId":"Javiery3889"},"content":" assertTrue(StringUtil.containsIgnoreCase(\"aaa bBb ccc\", \"aaa\")); // First word (boundary case)","lastModifiedDate":"2024-03-15"},{"lineNumber":165,"author":{"gitId":"Javiery3889"},"content":" assertTrue(StringUtil.containsIgnoreCase(\"Aaa\", \"aaa\")); // Only one word in sentence (boundary case)","lastModifiedDate":"2024-03-15"},{"lineNumber":166,"author":{"gitId":"Javiery3889"},"content":" assertTrue(StringUtil.containsIgnoreCase(\"aaa bbb ccc\", \" aaa \")); // Leading/trailing spaces","lastModifiedDate":"2024-03-15"},{"lineNumber":167,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":168,"author":{"gitId":"Javiery3889"},"content":" // Sentence matches multiple words in substring","lastModifiedDate":"2024-03-14"},{"lineNumber":169,"author":{"gitId":"Javiery3889"},"content":" assertTrue(StringUtil.containsIgnoreCase(\"AAA bBb ccc bbb\", \"AAA bBb\"));","lastModifiedDate":"2024-03-15"},{"lineNumber":170,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":171,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":172,"author":{"gitId":"-"},"content":" //---------------- Tests for getDetails --------------------------------------","lastModifiedDate":"2016-10-13"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":174,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-13"},{"lineNumber":175,"author":{"gitId":"-"},"content":" * Equivalence Partitions: null, valid throwable object","lastModifiedDate":"2016-10-13"},{"lineNumber":176,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-13"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":178,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-30"},{"lineNumber":179,"author":{"gitId":"-"},"content":" public void getDetails_exceptionGiven() {","lastModifiedDate":"2016-09-30"},{"lineNumber":180,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.getDetails(new FileNotFoundException(\"file not found\"))","lastModifiedDate":"2019-03-14"},{"lineNumber":181,"author":{"gitId":"-"},"content":" .contains(\"java.io.FileNotFoundException: file not found\"));","lastModifiedDate":"2019-03-14"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":184,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-30"},{"lineNumber":185,"author":{"gitId":"-"},"content":" public void getDetails_nullGiven_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":186,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e StringUtil.getDetails(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":189,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"KohGuanZeh":2,"Javiery3889":46,"-":141}},{"path":"src/test/java/seedu/findvisor/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2024-03-10"},{"lineNumber":5,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2024-03-10"},{"lineNumber":6,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-03-10"},{"lineNumber":7,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-03-10"},{"lineNumber":10,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-10"},{"lineNumber":11,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.TypicalPersons.AMY;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.AddCommand;","lastModifiedDate":"2024-03-10"},{"lineNumber":22,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.CommandResult;","lastModifiedDate":"2024-03-10"},{"lineNumber":23,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.ListCommand;","lastModifiedDate":"2024-03-10"},{"lineNumber":24,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-10"},{"lineNumber":25,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-10"},{"lineNumber":26,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.Model;","lastModifiedDate":"2024-03-10"},{"lineNumber":27,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.ModelManager;","lastModifiedDate":"2024-03-10"},{"lineNumber":28,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-10"},{"lineNumber":29,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.UserPrefs;","lastModifiedDate":"2024-03-10"},{"lineNumber":30,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Person;","lastModifiedDate":"2024-03-10"},{"lineNumber":31,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.storage.JsonAddressBookStorage;","lastModifiedDate":"2024-03-10"},{"lineNumber":32,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.storage.JsonUserPrefsStorage;","lastModifiedDate":"2024-03-10"},{"lineNumber":33,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.storage.StorageManager;","lastModifiedDate":"2024-03-10"},{"lineNumber":34,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.testutil.PersonBuilder;","lastModifiedDate":"2024-03-10"},{"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":"-"},"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":"-"},"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":{"KohGuanZeh":23,"-":152}},{"path":"src/test/java/seedu/findvisor/logic/MessagesTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package seedu.findvisor.logic;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_MEETING_NO_REMARK;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_MEETING_WITH_REMARK;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.model.person.Meeting;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"public class MessagesTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" public void formatMeeting_noRemark() {","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" Meeting meeting \u003d VALID_MEETING_NO_REMARK;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" String expected \u003d String.format(\"Meeting Start: %s; End: %s\",","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" meeting.getStartString(), meeting.getEndString());","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" assertEquals(expected, Messages.format(meeting));","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" public void formatMeeting_withRemark() {","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" Meeting meeting \u003d VALID_MEETING_WITH_REMARK;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" String expected \u003d String.format(\"Meeting Start: %s; End: %s\\nMeeting Remark: %s\",","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" meeting.getStartString(), meeting.getEndString(), meeting.remark);","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" assertEquals(expected, Messages.format(meeting));","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"Dethada":28}},{"path":"src/test/java/seedu/findvisor/logic/commands/AddCommandIntegrationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.commands;","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-10"},{"lineNumber":4,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-10"},{"lineNumber":5,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.logic.Messages;","lastModifiedDate":"2024-03-10"},{"lineNumber":11,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.Model;","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.ModelManager;","lastModifiedDate":"2024-03-10"},{"lineNumber":13,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.UserPrefs;","lastModifiedDate":"2024-03-10"},{"lineNumber":14,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Person;","lastModifiedDate":"2024-03-10"},{"lineNumber":15,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.testutil.PersonBuilder;","lastModifiedDate":"2024-03-10"},{"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":{"KohGuanZeh":10,"-":38}},{"path":"src/test/java/seedu/findvisor/logic/commands/AddCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.commands;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.GuiSettings;","lastModifiedDate":"2024-03-10"},{"lineNumber":19,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.Messages;","lastModifiedDate":"2024-03-10"},{"lineNumber":20,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-10"},{"lineNumber":21,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.AddressBook;","lastModifiedDate":"2024-03-10"},{"lineNumber":22,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.Model;","lastModifiedDate":"2024-03-10"},{"lineNumber":23,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-10"},{"lineNumber":24,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-10"},{"lineNumber":25,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Person;","lastModifiedDate":"2024-03-10"},{"lineNumber":26,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.testutil.PersonBuilder;","lastModifiedDate":"2024-03-10"},{"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":"-"},"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":"-"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2017-06-22"},{"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":"2018-08-06"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"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":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07"},{"lineNumber":164,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":165,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07"},{"lineNumber":166,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":168,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":169,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":170,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":173,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":174,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":175,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":176,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":180,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":181,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12"},{"lineNumber":182,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":183,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12"},{"lineNumber":184,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":186,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07"},{"lineNumber":187,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":188,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":189,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":192,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":193,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08"},{"lineNumber":194,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":195,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":198,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":199,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04"},{"lineNumber":200,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04"},{"lineNumber":201,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":202,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":204,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12"}],"authorContributionMap":{"KohGuanZeh":12,"-":192}},{"path":"src/test/java/seedu/findvisor/logic/commands/ClearCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.commands;","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":3,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-10"},{"lineNumber":4,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.model.AddressBook;","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.Model;","lastModifiedDate":"2024-03-10"},{"lineNumber":10,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.ModelManager;","lastModifiedDate":"2024-03-10"},{"lineNumber":11,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.UserPrefs;","lastModifiedDate":"2024-03-10"},{"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":{"KohGuanZeh":7,"-":25}},{"path":"src/test/java/seedu/findvisor/logic/commands/CommandResultTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.commands;","lastModifiedDate":"2024-03-10"},{"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":"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":"2018-12-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class CommandResultTest {","lastModifiedDate":"2018-12-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-12-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new CommandResult(\"feedback\");","lastModifiedDate":"2018-12-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-12-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":" assertTrue(commandResult.equals(new CommandResult(\"feedback\")));","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":" assertTrue(commandResult.equals(new CommandResult(\"feedback\", false, false)));","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertTrue(commandResult.equals(commandResult));","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(null));","lastModifiedDate":"2018-12-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(0.5f));","lastModifiedDate":"2018-12-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // different feedbackToUser value -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(new CommandResult(\"different\")));","lastModifiedDate":"2018-12-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // different showHelp value -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(new CommandResult(\"feedback\", true, false)));","lastModifiedDate":"2018-12-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":" // different exit value -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(new CommandResult(\"feedback\", false, true)));","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void hashcode() {","lastModifiedDate":"2018-12-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new CommandResult(\"feedback\");","lastModifiedDate":"2018-12-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" // same values -\u003e returns same hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(commandResult.hashCode(), new CommandResult(\"feedback\").hashCode());","lastModifiedDate":"2018-12-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // different feedbackToUser value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(\"different\").hashCode());","lastModifiedDate":"2018-12-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // different showHelp value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(\"feedback\", true, false).hashCode());","lastModifiedDate":"2018-12-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different exit value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(\"feedback\", false, true).hashCode());","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new CommandResult(\"feedback\");","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" String expected \u003d CommandResult.class.getCanonicalName() + \"{feedbackToUser\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" + commandResult.getFeedbackToUser() + \", showHelp\u003d\" + commandResult.isShowHelp()","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" + \", exit\u003d\" + commandResult.isExit() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertEquals(expected, commandResult.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-12-09"}],"authorContributionMap":{"KohGuanZeh":1,"-":62}},{"path":"src/test/java/seedu/findvisor/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.commands;","lastModifiedDate":"2024-03-10"},{"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":"Dethada"},"content":"import static seedu.findvisor.commons.util.DateTimeUtil.parseDateTimeString;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-10"},{"lineNumber":7,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-10"},{"lineNumber":10,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-10"},{"lineNumber":11,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.index.Index;","lastModifiedDate":"2024-03-10"},{"lineNumber":18,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-10"},{"lineNumber":19,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.AddressBook;","lastModifiedDate":"2024-03-10"},{"lineNumber":20,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.Model;","lastModifiedDate":"2024-03-10"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.model.person.Meeting;","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Person;","lastModifiedDate":"2024-03-10"},{"lineNumber":23,"author":{"gitId":"Javiery3889"},"content":"import seedu.findvisor.model.person.PhoneContainsKeywordPredicate;","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2024-03-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 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":"","lastModifiedDate":"2017-06-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05"},{"lineNumber":33,"author":{"gitId":"Arixeyeion"},"content":" public static final String VALID_PHONE_AMY \u003d \"91234567\";","lastModifiedDate":"2024-03-15"},{"lineNumber":34,"author":{"gitId":"Arixeyeion"},"content":" public static final String VALID_PHONE_BOB \u003d \"81234567\";","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05"},{"lineNumber":41,"author":{"gitId":"Dethada"},"content":" public static final String VALID_MEETING_REMARK \u003d \"Meeting with someone\";","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"Dethada"},"content":" public static final String VALID_MEETING_START_STR \u003d \"12-02-2024T12:00\";","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"Dethada"},"content":" public static final String VALID_MEETING_END_STR \u003d \"12-02-2024T13:00\";","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":56,"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":57,"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":58,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05"},{"lineNumber":60,"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":61,"author":{"gitId":"Dethada"},"content":" public static final String INVALID_MEETING_REMARK \u003d \"INVALID MEETING REMARK\".repeat(100);","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"Dethada"},"content":" public static final String INVALID_MEETING_START_STR \u003d \"INVALID MEETING START\";","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"Dethada"},"content":" public static final String INVALID_MEETING_END_STR \u003d \"INVALID MEETING END\";","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":65,"author":{"gitId":"Dethada"},"content":" public static final Meeting VALID_MEETING_NO_REMARK \u003d new Meeting(parseDateTimeString(VALID_MEETING_START_STR),","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"Dethada"},"content":" parseDateTimeString(VALID_MEETING_END_STR), \"\");","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"Dethada"},"content":" public static final Meeting VALID_MEETING_WITH_REMARK \u003d new Meeting(parseDateTimeString(VALID_MEETING_START_STR),","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"Dethada"},"content":" parseDateTimeString(VALID_MEETING_END_STR), VALID_MEETING_REMARK);","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"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":"-"},"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":"Dethada"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":86,"author":{"gitId":"Dethada"},"content":" * Creates a valid meeting that is in the future","lastModifiedDate":"2024-03-11"},{"lineNumber":87,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":88,"author":{"gitId":"Dethada"},"content":" public static Meeting createValidMeeting() {","lastModifiedDate":"2024-03-11"},{"lineNumber":89,"author":{"gitId":"Dethada"},"content":" return new Meeting(LocalDateTime.now().plusDays(1),","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"Dethada"},"content":" LocalDateTime.now().plusDays(1).plusHours(1), \"\");","lastModifiedDate":"2024-03-19"},{"lineNumber":91,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":92,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"Dethada"},"content":" * Creates a valid meeting that is in the future with a non-empty remark","lastModifiedDate":"2024-03-19"},{"lineNumber":95,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"Dethada"},"content":" public static Meeting createValidMeetingNonEmptyRemark() {","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"Dethada"},"content":" return new Meeting(LocalDateTime.now().plusDays(1),","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"Dethada"},"content":" LocalDateTime.now().plusDays(1).plusHours(1), VALID_MEETING_REMARK);","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":100,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":101,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":102,"author":{"gitId":"Dethada"},"content":" * Creates a meeting that is in the past","lastModifiedDate":"2024-03-11"},{"lineNumber":103,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":104,"author":{"gitId":"Dethada"},"content":" public static Meeting createOldMeeting() {","lastModifiedDate":"2024-03-11"},{"lineNumber":105,"author":{"gitId":"Dethada"},"content":" return new Meeting(LocalDateTime.now().minusDays(1),","lastModifiedDate":"2024-03-19"},{"lineNumber":106,"author":{"gitId":"Dethada"},"content":" LocalDateTime.now().minusDays(1).plusHours(1), VALID_MEETING_REMARK);","lastModifiedDate":"2024-03-19"},{"lineNumber":107,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":108,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":109,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":110,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":111,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":112,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":113,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25"},{"lineNumber":115,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":116,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":117,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":120,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":121,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":125,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":126,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25"},{"lineNumber":127,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":128,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25"},{"lineNumber":130,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":131,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":135,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":136,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":137,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":138,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":139,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25"},{"lineNumber":140,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":141,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25"},{"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":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":145,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10"},{"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":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":151,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":152,"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":153,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31"},{"lineNumber":154,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":155,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31"},{"lineNumber":156,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":158,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31"},{"lineNumber":159,"author":{"gitId":"Javiery3889"},"content":" // Use person\u0027s phone to identify","lastModifiedDate":"2024-03-14"},{"lineNumber":160,"author":{"gitId":"Javiery3889"},"content":" String phone \u003d person.getPhone().value;","lastModifiedDate":"2024-03-14"},{"lineNumber":161,"author":{"gitId":"Javiery3889"},"content":" model.updateFilteredPersonList(new PhoneContainsKeywordPredicate(phone));","lastModifiedDate":"2024-03-15"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":163,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":166,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"Arixeyeion":2,"KohGuanZeh":13,"Javiery3889":4,"Dethada":37,"-":110}},{"path":"src/test/java/seedu/findvisor/logic/commands/DeleteCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.commands;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-10"},{"lineNumber":7,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-10"},{"lineNumber":10,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-10"},{"lineNumber":11,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.index.Index;","lastModifiedDate":"2024-03-10"},{"lineNumber":16,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.Messages;","lastModifiedDate":"2024-03-10"},{"lineNumber":17,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.Model;","lastModifiedDate":"2024-03-10"},{"lineNumber":18,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.ModelManager;","lastModifiedDate":"2024-03-10"},{"lineNumber":19,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.UserPrefs;","lastModifiedDate":"2024-03-10"},{"lineNumber":20,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Person;","lastModifiedDate":"2024-03-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":{"KohGuanZeh":13,"-":107}},{"path":"src/test/java/seedu/findvisor/logic/commands/EditCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.commands;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2024-03-10"},{"lineNumber":7,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-10"},{"lineNumber":10,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-03-10"},{"lineNumber":11,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-10"},{"lineNumber":13,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-03-10"},{"lineNumber":14,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-10"},{"lineNumber":15,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-10"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-10"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":21,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.index.Index;","lastModifiedDate":"2024-03-10"},{"lineNumber":22,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.Messages;","lastModifiedDate":"2024-03-10"},{"lineNumber":23,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-10"},{"lineNumber":24,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.AddressBook;","lastModifiedDate":"2024-03-10"},{"lineNumber":25,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.Model;","lastModifiedDate":"2024-03-10"},{"lineNumber":26,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.ModelManager;","lastModifiedDate":"2024-03-10"},{"lineNumber":27,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.UserPrefs;","lastModifiedDate":"2024-03-10"},{"lineNumber":28,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Person;","lastModifiedDate":"2024-03-10"},{"lineNumber":29,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2024-03-10"},{"lineNumber":30,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.testutil.PersonBuilder;","lastModifiedDate":"2024-03-10"},{"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":"-"},"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":"Dethada"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":151,"author":{"gitId":"Dethada"},"content":" * Ensure that the meeting details are copied over when a person is edited.","lastModifiedDate":"2024-03-19"},{"lineNumber":152,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":153,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":154,"author":{"gitId":"Dethada"},"content":" public void execute_copyMeetingDetails_success() {","lastModifiedDate":"2024-03-19"},{"lineNumber":155,"author":{"gitId":"Dethada"},"content":" // The person at the third index of the unfiltered list has a non-empty meeting object","lastModifiedDate":"2024-03-19"},{"lineNumber":156,"author":{"gitId":"Dethada"},"content":" Person personWithMeeting \u003d model.getFilteredPersonList().get(INDEX_THIRD_PERSON.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":157,"author":{"gitId":"Dethada"},"content":" PersonBuilder personInList \u003d new PersonBuilder(personWithMeeting);","lastModifiedDate":"2024-03-19"},{"lineNumber":158,"author":{"gitId":"Dethada"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":159,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":160,"author":{"gitId":"Dethada"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":161,"author":{"gitId":"Dethada"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_THIRD_PERSON, descriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":162,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":163,"author":{"gitId":"Dethada"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2024-03-19"},{"lineNumber":164,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":165,"author":{"gitId":"Dethada"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":166,"author":{"gitId":"Dethada"},"content":" expectedModel.setPerson(personWithMeeting, editedPerson);","lastModifiedDate":"2024-03-19"},{"lineNumber":167,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":168,"author":{"gitId":"Dethada"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-19"},{"lineNumber":169,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":170,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":171,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2018-08-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":180,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":181,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":183,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":184,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":186,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":187,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":189,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":190,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2017-05-25"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":192,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":193,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2017-05-25"},{"lineNumber":194,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":196,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2019-02-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08"}],"authorContributionMap":{"KohGuanZeh":22,"Dethada":22,"-":162}},{"path":"src/test/java/seedu/findvisor/logic/commands/EditPersonDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.commands;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2024-03-10"},{"lineNumber":7,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-10"},{"lineNumber":10,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-10"},{"lineNumber":11,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-10"},{"lineNumber":17,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" + editPersonDescriptor.getTags().orElse(null) + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"KohGuanZeh":10,"-":61}},{"path":"src/test/java/seedu/findvisor/logic/commands/ExitCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.commands;","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":3,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-10"},{"lineNumber":4,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.ExitCommand.MESSAGE_EXIT_ACKNOWLEDGEMENT;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.model.Model;","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.ModelManager;","lastModifiedDate":"2024-03-10"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class ExitCommandTest {","lastModifiedDate":"2017-06-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-12-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public void execute_exit_success() {","lastModifiedDate":"2017-06-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, false, true);","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ExitCommand(), model, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08"}],"authorContributionMap":{"KohGuanZeh":5,"-":15}},{"path":"src/test/java/seedu/findvisor/logic/commands/FindCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.commands;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.Messages.MESSAGE_PERSONS_LISTED_OVERVIEW;","lastModifiedDate":"2024-03-10"},{"lineNumber":7,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-10"},{"lineNumber":16,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.TypicalPersons.CARL;","lastModifiedDate":"2024-03-10"},{"lineNumber":19,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.testutil.TypicalPersons.DANIEL;","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-10"},{"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":"Javiery3889"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-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":"KohGuanZeh"},"content":"import seedu.findvisor.model.Model;","lastModifiedDate":"2024-03-10"},{"lineNumber":29,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.ModelManager;","lastModifiedDate":"2024-03-10"},{"lineNumber":30,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.UserPrefs;","lastModifiedDate":"2024-03-10"},{"lineNumber":31,"author":{"gitId":"Javiery3889"},"content":"import seedu.findvisor.model.person.EmailContainsKeywordPredicate;","lastModifiedDate":"2024-03-15"},{"lineNumber":32,"author":{"gitId":"Javiery3889"},"content":"import seedu.findvisor.model.person.NameContainsKeywordPredicate;","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"Javiery3889"},"content":"import seedu.findvisor.model.person.Person;","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"Javiery3889"},"content":"import seedu.findvisor.model.person.PhoneContainsKeywordPredicate;","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"Javiery3889"},"content":"import seedu.findvisor.model.tag.TagsContainsKeywordsPredicate;","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code FindCommand}.","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":"public class FindCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"Javiery3889"},"content":" NameContainsKeywordPredicate firstNamePredicate \u003d","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"Javiery3889"},"content":" new NameContainsKeywordPredicate(VALID_NAME_AMY);","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"Javiery3889"},"content":" NameContainsKeywordPredicate secondNamePredicate \u003d","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"Javiery3889"},"content":" new NameContainsKeywordPredicate(VALID_NAME_BOB);","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"Javiery3889"},"content":" EmailContainsKeywordPredicate firstEmailPredicate \u003d","lastModifiedDate":"2024-03-15"},{"lineNumber":52,"author":{"gitId":"Javiery3889"},"content":" new EmailContainsKeywordPredicate(VALID_EMAIL_AMY);","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"Javiery3889"},"content":" EmailContainsKeywordPredicate secondEmailPredicate \u003d","lastModifiedDate":"2024-03-15"},{"lineNumber":54,"author":{"gitId":"Javiery3889"},"content":" new EmailContainsKeywordPredicate(VALID_EMAIL_BOB);","lastModifiedDate":"2024-03-15"},{"lineNumber":55,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"Javiery3889"},"content":" PhoneContainsKeywordPredicate firstPhonePredicate \u003d","lastModifiedDate":"2024-03-15"},{"lineNumber":57,"author":{"gitId":"Javiery3889"},"content":" new PhoneContainsKeywordPredicate(VALID_PHONE_AMY);","lastModifiedDate":"2024-03-15"},{"lineNumber":58,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"Javiery3889"},"content":" PhoneContainsKeywordPredicate secondPhonePredicate \u003d","lastModifiedDate":"2024-03-15"},{"lineNumber":60,"author":{"gitId":"Javiery3889"},"content":" new PhoneContainsKeywordPredicate(VALID_PHONE_BOB);","lastModifiedDate":"2024-03-15"},{"lineNumber":61,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":62,"author":{"gitId":"Javiery3889"},"content":" TagsContainsKeywordsPredicate firstTagsPredicate \u003d","lastModifiedDate":"2024-03-14"},{"lineNumber":63,"author":{"gitId":"Javiery3889"},"content":" new TagsContainsKeywordsPredicate(Arrays.asList(VALID_TAG_HUSBAND));","lastModifiedDate":"2024-03-14"},{"lineNumber":64,"author":{"gitId":"Javiery3889"},"content":" TagsContainsKeywordsPredicate secondTagsPredicate \u003d","lastModifiedDate":"2024-03-14"},{"lineNumber":65,"author":{"gitId":"Javiery3889"},"content":" new TagsContainsKeywordsPredicate(Arrays.asList(VALID_TAG_FRIEND));","lastModifiedDate":"2024-03-14"},{"lineNumber":66,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":67,"author":{"gitId":"Javiery3889"},"content":" testCommandEquality(firstNamePredicate, secondNamePredicate);","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"Javiery3889"},"content":" testCommandEquality(firstEmailPredicate, secondEmailPredicate);","lastModifiedDate":"2024-03-14"},{"lineNumber":69,"author":{"gitId":"Javiery3889"},"content":" testCommandEquality(firstPhonePredicate, secondPhonePredicate);","lastModifiedDate":"2024-03-14"},{"lineNumber":70,"author":{"gitId":"Javiery3889"},"content":" testCommandEquality(firstTagsPredicate, secondTagsPredicate);","lastModifiedDate":"2024-03-14"},{"lineNumber":71,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":73,"author":{"gitId":"Javiery3889"},"content":" // Helper method to test equality of FindCommand objects","lastModifiedDate":"2024-03-14"},{"lineNumber":74,"author":{"gitId":"Javiery3889"},"content":" private void testCommandEquality(Predicate\u003cPerson\u003e firstPredicate, Predicate\u003cPerson\u003e secondPredicate) {","lastModifiedDate":"2024-03-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":" FindCommand findFirstCommand \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":" FindCommand findSecondCommand \u003d new FindCommand(secondPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" FindCommand findFirstCommandCopy \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"Javiery3889"},"content":" // different name -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":95,"author":{"gitId":"Javiery3889"},"content":" public void execute_nonExistentName_noPersonFound() {","lastModifiedDate":"2024-03-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2017-06-12"},{"lineNumber":97,"author":{"gitId":"Javiery3889"},"content":" NameContainsKeywordPredicate namePredicate \u003d new NameContainsKeywordPredicate(VALID_NAME_AMY);","lastModifiedDate":"2024-03-14"},{"lineNumber":98,"author":{"gitId":"Javiery3889"},"content":" FindCommand command \u003d new FindCommand(namePredicate);","lastModifiedDate":"2024-03-14"},{"lineNumber":99,"author":{"gitId":"Javiery3889"},"content":" expectedModel.updateFilteredPersonList(namePredicate);","lastModifiedDate":"2024-03-14"},{"lineNumber":100,"author":{"gitId":"Javiery3889"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-14"},{"lineNumber":101,"author":{"gitId":"Javiery3889"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2024-03-14"},{"lineNumber":102,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":103,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":104,"author":{"gitId":"Javiery3889"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":105,"author":{"gitId":"Javiery3889"},"content":" public void execute_nonExistentPhone_noPersonFound() {","lastModifiedDate":"2024-03-14"},{"lineNumber":106,"author":{"gitId":"Javiery3889"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2024-03-14"},{"lineNumber":107,"author":{"gitId":"Javiery3889"},"content":" PhoneContainsKeywordPredicate phonePredicate \u003d new PhoneContainsKeywordPredicate(VALID_PHONE_AMY);","lastModifiedDate":"2024-03-15"},{"lineNumber":108,"author":{"gitId":"Javiery3889"},"content":" Command command \u003d new FindCommand(phonePredicate);","lastModifiedDate":"2024-03-14"},{"lineNumber":109,"author":{"gitId":"Javiery3889"},"content":" expectedModel.updateFilteredPersonList(phonePredicate);","lastModifiedDate":"2024-03-14"},{"lineNumber":110,"author":{"gitId":"Javiery3889"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-14"},{"lineNumber":111,"author":{"gitId":"Javiery3889"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2024-03-14"},{"lineNumber":112,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":113,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":114,"author":{"gitId":"Javiery3889"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":115,"author":{"gitId":"Javiery3889"},"content":" public void execute_nonExistentEmail_noPersonFound() {","lastModifiedDate":"2024-03-14"},{"lineNumber":116,"author":{"gitId":"Javiery3889"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2024-03-14"},{"lineNumber":117,"author":{"gitId":"Javiery3889"},"content":" EmailContainsKeywordPredicate predicate \u003d new EmailContainsKeywordPredicate(VALID_EMAIL_AMY);","lastModifiedDate":"2024-03-15"},{"lineNumber":118,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":124,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":125,"author":{"gitId":"Javiery3889"},"content":" public void execute_nonExistentTag_noPersonFound() {","lastModifiedDate":"2024-03-14"},{"lineNumber":126,"author":{"gitId":"Javiery3889"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2024-03-14"},{"lineNumber":127,"author":{"gitId":"Javiery3889"},"content":" TagsContainsKeywordsPredicate tagsPredicate \u003d new TagsContainsKeywordsPredicate(","lastModifiedDate":"2024-03-14"},{"lineNumber":128,"author":{"gitId":"Javiery3889"},"content":" Arrays.asList(new String[]{VALID_TAG_HUSBAND}));","lastModifiedDate":"2024-03-14"},{"lineNumber":129,"author":{"gitId":"Javiery3889"},"content":" Command command \u003d new FindCommand(tagsPredicate);","lastModifiedDate":"2024-03-14"},{"lineNumber":130,"author":{"gitId":"Javiery3889"},"content":" expectedModel.updateFilteredPersonList(tagsPredicate);","lastModifiedDate":"2024-03-14"},{"lineNumber":131,"author":{"gitId":"Javiery3889"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-14"},{"lineNumber":132,"author":{"gitId":"Javiery3889"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2024-03-14"},{"lineNumber":133,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":134,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":135,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":136,"author":{"gitId":"Javiery3889"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":137,"author":{"gitId":"Javiery3889"},"content":" public void execute_existingName_personFound() {","lastModifiedDate":"2024-03-14"},{"lineNumber":138,"author":{"gitId":"Javiery3889"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 1);","lastModifiedDate":"2024-03-14"},{"lineNumber":139,"author":{"gitId":"Javiery3889"},"content":" NameContainsKeywordPredicate predicate \u003d new NameContainsKeywordPredicate(ALICE.getName().fullName);","lastModifiedDate":"2024-03-14"},{"lineNumber":140,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":143,"author":{"gitId":"Javiery3889"},"content":" assertEquals(Arrays.asList(ALICE), model.getFilteredPersonList());","lastModifiedDate":"2024-03-14"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":146,"author":{"gitId":"Javiery3889"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":147,"author":{"gitId":"Javiery3889"},"content":" public void execute_existingPhone_personFound() {","lastModifiedDate":"2024-03-14"},{"lineNumber":148,"author":{"gitId":"Javiery3889"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 1);","lastModifiedDate":"2024-03-14"},{"lineNumber":149,"author":{"gitId":"Javiery3889"},"content":" PhoneContainsKeywordPredicate predicate \u003d new PhoneContainsKeywordPredicate(BENSON.getPhone().value);","lastModifiedDate":"2024-03-15"},{"lineNumber":150,"author":{"gitId":"Javiery3889"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2024-03-14"},{"lineNumber":151,"author":{"gitId":"Javiery3889"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-14"},{"lineNumber":152,"author":{"gitId":"Javiery3889"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-14"},{"lineNumber":153,"author":{"gitId":"Javiery3889"},"content":" assertEquals(Arrays.asList(BENSON), model.getFilteredPersonList());","lastModifiedDate":"2024-03-14"},{"lineNumber":154,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":155,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":156,"author":{"gitId":"Javiery3889"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":157,"author":{"gitId":"Javiery3889"},"content":" public void execute_existingEmail_personFound() {","lastModifiedDate":"2024-03-14"},{"lineNumber":158,"author":{"gitId":"Javiery3889"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 1);","lastModifiedDate":"2024-03-14"},{"lineNumber":159,"author":{"gitId":"Javiery3889"},"content":" EmailContainsKeywordPredicate predicate \u003d new EmailContainsKeywordPredicate(CARL.getEmail().value);","lastModifiedDate":"2024-03-15"},{"lineNumber":160,"author":{"gitId":"Javiery3889"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2024-03-14"},{"lineNumber":161,"author":{"gitId":"Javiery3889"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-14"},{"lineNumber":162,"author":{"gitId":"Javiery3889"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-14"},{"lineNumber":163,"author":{"gitId":"Javiery3889"},"content":" assertEquals(Arrays.asList(CARL), model.getFilteredPersonList());","lastModifiedDate":"2024-03-14"},{"lineNumber":164,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":165,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":166,"author":{"gitId":"Javiery3889"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":167,"author":{"gitId":"Javiery3889"},"content":" public void execute_existingTags_personFound() {","lastModifiedDate":"2024-03-14"},{"lineNumber":168,"author":{"gitId":"Javiery3889"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2024-03-14"},{"lineNumber":169,"author":{"gitId":"Javiery3889"},"content":" TagsContainsKeywordsPredicate predicate \u003d new TagsContainsKeywordsPredicate(","lastModifiedDate":"2024-03-14"},{"lineNumber":170,"author":{"gitId":"Javiery3889"},"content":" Arrays.asList(new String[]{\"friends\"}));","lastModifiedDate":"2024-03-14"},{"lineNumber":171,"author":{"gitId":"Javiery3889"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2024-03-14"},{"lineNumber":172,"author":{"gitId":"Javiery3889"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-14"},{"lineNumber":173,"author":{"gitId":"Javiery3889"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-14"},{"lineNumber":174,"author":{"gitId":"Javiery3889"},"content":" assertEquals(Arrays.asList(ALICE, BENSON, DANIEL), model.getFilteredPersonList());","lastModifiedDate":"2024-03-14"},{"lineNumber":175,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":176,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":177,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":179,"author":{"gitId":"Javiery3889"},"content":" NameContainsKeywordPredicate predicate \u003d new NameContainsKeywordPredicate(\"keyword\");","lastModifiedDate":"2024-03-14"},{"lineNumber":180,"author":{"gitId":"-"},"content":" FindCommand findCommand \u003d new FindCommand(predicate);","lastModifiedDate":"2019-02-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"KohGuanZeh":8,"Javiery3889":116,"-":60}},{"path":"src/test/java/seedu/findvisor/logic/commands/HelpCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.commands;","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":3,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-10"},{"lineNumber":4,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.HelpCommand.SHOWING_HELP_MESSAGE;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.model.Model;","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.ModelManager;","lastModifiedDate":"2024-03-10"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class HelpCommandTest {","lastModifiedDate":"2017-06-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public void execute_help_success() {","lastModifiedDate":"2017-06-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(SHOWING_HELP_MESSAGE, true, false);","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":" assertCommandSuccess(new HelpCommand(), model, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08"}],"authorContributionMap":{"KohGuanZeh":5,"-":15}},{"path":"src/test/java/seedu/findvisor/logic/commands/ListCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.commands;","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-10"},{"lineNumber":4,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-03-10"},{"lineNumber":5,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-10"},{"lineNumber":6,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.model.Model;","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.ModelManager;","lastModifiedDate":"2024-03-10"},{"lineNumber":13,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.UserPrefs;","lastModifiedDate":"2024-03-10"},{"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":{"KohGuanZeh":8,"-":31}},{"path":"src/test/java/seedu/findvisor/logic/commands/ScheduleCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package seedu.findvisor.logic.commands;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.createOldMeeting;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.createValidMeeting;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.createValidMeetingNonEmptyRemark;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.commons.core.index.Index;","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.logic.Messages;","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.model.AddressBook;","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.model.Model;","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.model.ModelManager;","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.model.UserPrefs;","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.model.person.Meeting;","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.testutil.PersonBuilder;","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":"public class ScheduleCommandTest {","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":" public void constructor_nullMeeting_throwsNullPointerException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":" assertThrows(NullPointerException.class, () -\u003e new ScheduleCommand(INDEX_FIRST_PERSON, null));","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"Dethada"},"content":" public void execute_okayMeeting_scheduleSuccessful() throws Exception {","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"Dethada"},"content":" Meeting meeting \u003d createValidMeeting();","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"Dethada"},"content":" ScheduleCommand scheduleCommand \u003d new ScheduleCommand(INDEX_FIRST_PERSON, meeting);","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"Dethada"},"content":" Person targetPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"Dethada"},"content":" PersonBuilder personBuilder \u003d new PersonBuilder(targetPerson).withMeeting(Optional.of(meeting));","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"Dethada"},"content":" Person editedPerson \u003d personBuilder.build();","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"Dethada"},"content":" String expectedMessage \u003d String.format(ScheduleCommand.MESSAGE_SCHEDULE_SUCCESS, targetPerson.getName(),","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"Dethada"},"content":" meeting.getStartString(), meeting.getEndString());","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"Dethada"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"Dethada"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"Dethada"},"content":" assertCommandSuccess(scheduleCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"Dethada"},"content":" public void execute_multipleMeeting_throwsCommandException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"Dethada"},"content":" Meeting meeting \u003d createValidMeeting();","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"Dethada"},"content":" ScheduleCommand scheduleCommand \u003d new ScheduleCommand(INDEX_FIRST_PERSON, meeting);","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"Dethada"},"content":" Person targetPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"Dethada"},"content":" PersonBuilder personBuilder \u003d new PersonBuilder(targetPerson).withMeeting(Optional.of(meeting));","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"Dethada"},"content":" Person editedPerson \u003d personBuilder.build();","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"Dethada"},"content":" model.setPerson(targetPerson, editedPerson);","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":66,"author":{"gitId":"Dethada"},"content":" assertCommandFailure(scheduleCommand, model, ScheduleCommand.MESSAGE_CANNOT_SCHEDULE_MULTIPLE_MEETINGS);","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":68,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":70,"author":{"gitId":"Dethada"},"content":" public void execute_meetingTimeInPast_throwsCommandException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":71,"author":{"gitId":"Dethada"},"content":" Meeting meeting \u003d createOldMeeting();","lastModifiedDate":"2024-03-11"},{"lineNumber":72,"author":{"gitId":"Dethada"},"content":" ScheduleCommand scheduleCommand \u003d new ScheduleCommand(INDEX_FIRST_PERSON, meeting);","lastModifiedDate":"2024-03-11"},{"lineNumber":73,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"Dethada"},"content":" assertCommandFailure(scheduleCommand, model, ScheduleCommand.MESSAGE_CANNOT_SCHEDULE_MEETING_IN_THE_PAST);","lastModifiedDate":"2024-03-11"},{"lineNumber":75,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":76,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":77,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"Dethada"},"content":" public void execute_meetingRemarkPresent_success() {","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"Dethada"},"content":" Meeting meeting \u003d createValidMeetingNonEmptyRemark();","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"Dethada"},"content":" ScheduleCommand scheduleCommand \u003d new ScheduleCommand(INDEX_FIRST_PERSON, meeting);","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"Dethada"},"content":" Person targetPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"Dethada"},"content":" PersonBuilder personBuilder \u003d new PersonBuilder(targetPerson).withMeeting(Optional.of(meeting));","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"Dethada"},"content":" Person editedPerson \u003d personBuilder.build();","lastModifiedDate":"2024-03-19"},{"lineNumber":84,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"Dethada"},"content":" String expectedMessage \u003d String.format(ScheduleCommand.MESSAGE_SCHEDULE_SUCCESS, targetPerson.getName(),","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"Dethada"},"content":" meeting.getStartString(), meeting.getEndString());","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"Dethada"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"Dethada"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":91,"author":{"gitId":"Dethada"},"content":" assertCommandSuccess(scheduleCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-19"},{"lineNumber":92,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":95,"author":{"gitId":"Dethada"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2024-03-11"},{"lineNumber":96,"author":{"gitId":"Dethada"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2024-03-11"},{"lineNumber":97,"author":{"gitId":"Dethada"},"content":" Meeting meeting \u003d createValidMeeting();","lastModifiedDate":"2024-03-11"},{"lineNumber":98,"author":{"gitId":"Dethada"},"content":" ScheduleCommand scheduleCommand \u003d new ScheduleCommand(outOfBoundIndex, meeting);","lastModifiedDate":"2024-03-11"},{"lineNumber":99,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":100,"author":{"gitId":"Dethada"},"content":" assertCommandFailure(scheduleCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-11"},{"lineNumber":101,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":102,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":103,"author":{"gitId":"Dethada"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":104,"author":{"gitId":"Dethada"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2024-03-11"},{"lineNumber":105,"author":{"gitId":"Dethada"},"content":" * but smaller than size of address book","lastModifiedDate":"2024-03-11"},{"lineNumber":106,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":107,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":108,"author":{"gitId":"Dethada"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2024-03-11"},{"lineNumber":109,"author":{"gitId":"Dethada"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-11"},{"lineNumber":110,"author":{"gitId":"Dethada"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-11"},{"lineNumber":111,"author":{"gitId":"Dethada"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2024-03-11"},{"lineNumber":112,"author":{"gitId":"Dethada"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2024-03-11"},{"lineNumber":113,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":114,"author":{"gitId":"Dethada"},"content":" Meeting meeting \u003d createValidMeeting();","lastModifiedDate":"2024-03-11"},{"lineNumber":115,"author":{"gitId":"Dethada"},"content":" ScheduleCommand scheduleCommand \u003d new ScheduleCommand(outOfBoundIndex, meeting);","lastModifiedDate":"2024-03-11"},{"lineNumber":116,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":117,"author":{"gitId":"Dethada"},"content":" assertCommandFailure(scheduleCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-11"},{"lineNumber":118,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":119,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":120,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":121,"author":{"gitId":"Dethada"},"content":" public void equals() {","lastModifiedDate":"2024-03-11"},{"lineNumber":122,"author":{"gitId":"Dethada"},"content":" final Meeting meeting \u003d createValidMeeting();","lastModifiedDate":"2024-03-11"},{"lineNumber":123,"author":{"gitId":"Dethada"},"content":" final ScheduleCommand standardCommand \u003d new ScheduleCommand(INDEX_FIRST_PERSON, meeting);","lastModifiedDate":"2024-03-11"},{"lineNumber":124,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":125,"author":{"gitId":"Dethada"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-11"},{"lineNumber":126,"author":{"gitId":"Dethada"},"content":" ScheduleCommand commandWithSameValues \u003d new ScheduleCommand(INDEX_FIRST_PERSON, meeting);","lastModifiedDate":"2024-03-11"},{"lineNumber":127,"author":{"gitId":"Dethada"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-03-11"},{"lineNumber":128,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":129,"author":{"gitId":"Dethada"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-11"},{"lineNumber":130,"author":{"gitId":"Dethada"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-03-11"},{"lineNumber":131,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":132,"author":{"gitId":"Dethada"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-11"},{"lineNumber":133,"author":{"gitId":"Dethada"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-03-11"},{"lineNumber":134,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":135,"author":{"gitId":"Dethada"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-11"},{"lineNumber":136,"author":{"gitId":"Dethada"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2024-03-11"},{"lineNumber":137,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":138,"author":{"gitId":"Dethada"},"content":" // different index -\u003e returns false","lastModifiedDate":"2024-03-11"},{"lineNumber":139,"author":{"gitId":"Dethada"},"content":" assertFalse(standardCommand.equals(new ScheduleCommand(INDEX_SECOND_PERSON, meeting)));","lastModifiedDate":"2024-03-11"},{"lineNumber":140,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":141,"author":{"gitId":"Dethada"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2024-03-11"},{"lineNumber":142,"author":{"gitId":"Dethada"},"content":" assertFalse(standardCommand.equals(new ScheduleCommand(INDEX_FIRST_PERSON, createOldMeeting())));","lastModifiedDate":"2024-03-11"},{"lineNumber":143,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":144,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":145,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":146,"author":{"gitId":"Dethada"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-11"},{"lineNumber":147,"author":{"gitId":"Dethada"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-11"},{"lineNumber":148,"author":{"gitId":"Dethada"},"content":" Meeting meeting \u003d createValidMeeting();","lastModifiedDate":"2024-03-11"},{"lineNumber":149,"author":{"gitId":"Dethada"},"content":" ScheduleCommand editCommand \u003d new ScheduleCommand(index, meeting);","lastModifiedDate":"2024-03-11"},{"lineNumber":150,"author":{"gitId":"Dethada"},"content":" String expected \u003d ScheduleCommand.class.getCanonicalName() + \"{toSchedule\u003d\" + index + \", meeting\u003d\"","lastModifiedDate":"2024-03-11"},{"lineNumber":151,"author":{"gitId":"Dethada"},"content":" + meeting + \"}\";","lastModifiedDate":"2024-03-11"},{"lineNumber":152,"author":{"gitId":"Dethada"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2024-03-11"},{"lineNumber":153,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":154,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":155,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"Dethada":155}},{"path":"src/test/java/seedu/findvisor/logic/commands/UnscheduleCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package seedu.findvisor.logic.commands;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.commons.core.index.Index;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.logic.Messages;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.model.Model;","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.model.ModelManager;","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.model.UserPrefs;","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.testutil.PersonBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" * {@code UnscheduleCommand}.","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":"public class UnscheduleCommandTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":" Person personToUnschedule \u003d model.getFilteredPersonList().get(INDEX_THIRD_PERSON.getZeroBased());","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":" UnscheduleCommand unscheduleCommand \u003d new UnscheduleCommand(INDEX_THIRD_PERSON);","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":" PersonBuilder personBuilder \u003d new PersonBuilder(personToUnschedule).withMeeting(Optional.empty());","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":" Person editedPerson \u003d personBuilder.build();","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"Dethada"},"content":" String expectedMessage \u003d String.format(UnscheduleCommand.MESSAGE_UNSCHEDULE_SUCCESS,","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"Dethada"},"content":" personToUnschedule.getName());","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"Dethada"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"Dethada"},"content":" expectedModel.setPerson(personToUnschedule, editedPerson);","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"Dethada"},"content":" assertCommandSuccess(unscheduleCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"Dethada"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"Dethada"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"Dethada"},"content":" UnscheduleCommand unscheduleCommand \u003d new UnscheduleCommand(outOfBoundIndex);","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"Dethada"},"content":" assertCommandFailure(unscheduleCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"Dethada"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"Dethada"},"content":" showPersonAtIndex(model, INDEX_THIRD_PERSON);","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"Dethada"},"content":" Person personToUnschedule \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"Dethada"},"content":" UnscheduleCommand unscheduleCommand \u003d new UnscheduleCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"Dethada"},"content":" PersonBuilder personBuilder \u003d new PersonBuilder(personToUnschedule).withMeeting(Optional.empty());","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"Dethada"},"content":" Person editedPerson \u003d personBuilder.build();","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"Dethada"},"content":" String expectedMessage \u003d String.format(UnscheduleCommand.MESSAGE_UNSCHEDULE_SUCCESS,","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"Dethada"},"content":" personToUnschedule.getName());","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"Dethada"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"Dethada"},"content":" expectedModel.setPerson(personToUnschedule, editedPerson);","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"Dethada"},"content":" assertCommandSuccess(unscheduleCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-12"},{"lineNumber":74,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":75,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"Dethada"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"Dethada"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-12"},{"lineNumber":79,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"Dethada"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-12"},{"lineNumber":81,"author":{"gitId":"Dethada"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"Dethada"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"Dethada"},"content":" UnscheduleCommand unscheduleCommand \u003d new UnscheduleCommand(outOfBoundIndex);","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":86,"author":{"gitId":"Dethada"},"content":" assertCommandFailure(unscheduleCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":90,"author":{"gitId":"Dethada"},"content":" public void execute_noMeetingToUnschedule_throwsCommandException() {","lastModifiedDate":"2024-03-15"},{"lineNumber":91,"author":{"gitId":"Dethada"},"content":" UnscheduleCommand unscheduleCommand \u003d new UnscheduleCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-15"},{"lineNumber":92,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":93,"author":{"gitId":"Dethada"},"content":" assertCommandFailure(unscheduleCommand, model, String.format(UnscheduleCommand.MESSAGE_NO_MEETING_TO_UNSCHEDULE,","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"Dethada"},"content":" model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased()).getName()));","lastModifiedDate":"2024-03-19"},{"lineNumber":95,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":96,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":97,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":98,"author":{"gitId":"Dethada"},"content":" public void equals() {","lastModifiedDate":"2024-03-12"},{"lineNumber":99,"author":{"gitId":"Dethada"},"content":" UnscheduleCommand unscheduleFirstCommand \u003d new UnscheduleCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-12"},{"lineNumber":100,"author":{"gitId":"Dethada"},"content":" UnscheduleCommand unscheduleSecondCommand \u003d new UnscheduleCommand(INDEX_SECOND_PERSON);","lastModifiedDate":"2024-03-12"},{"lineNumber":101,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":102,"author":{"gitId":"Dethada"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-12"},{"lineNumber":103,"author":{"gitId":"Dethada"},"content":" assertTrue(unscheduleFirstCommand.equals(unscheduleFirstCommand));","lastModifiedDate":"2024-03-12"},{"lineNumber":104,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":105,"author":{"gitId":"Dethada"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-12"},{"lineNumber":106,"author":{"gitId":"Dethada"},"content":" UnscheduleCommand unscheduleFirstCommandCopy \u003d new UnscheduleCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-12"},{"lineNumber":107,"author":{"gitId":"Dethada"},"content":" assertTrue(unscheduleFirstCommand.equals(unscheduleFirstCommandCopy));","lastModifiedDate":"2024-03-12"},{"lineNumber":108,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":109,"author":{"gitId":"Dethada"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":110,"author":{"gitId":"Dethada"},"content":" assertFalse(unscheduleFirstCommand.equals(1));","lastModifiedDate":"2024-03-12"},{"lineNumber":111,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":112,"author":{"gitId":"Dethada"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":113,"author":{"gitId":"Dethada"},"content":" assertFalse(unscheduleFirstCommand.equals(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":114,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":115,"author":{"gitId":"Dethada"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":116,"author":{"gitId":"Dethada"},"content":" assertFalse(unscheduleFirstCommand.equals(unscheduleSecondCommand));","lastModifiedDate":"2024-03-12"},{"lineNumber":117,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":118,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":119,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":120,"author":{"gitId":"Dethada"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-12"},{"lineNumber":121,"author":{"gitId":"Dethada"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-12"},{"lineNumber":122,"author":{"gitId":"Dethada"},"content":" UnscheduleCommand unscheduleCommand \u003d new UnscheduleCommand(targetIndex);","lastModifiedDate":"2024-03-12"},{"lineNumber":123,"author":{"gitId":"Dethada"},"content":" String expected \u003d UnscheduleCommand.class.getCanonicalName() + \"{toUnschedule\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2024-03-12"},{"lineNumber":124,"author":{"gitId":"Dethada"},"content":" assertEquals(expected, unscheduleCommand.toString());","lastModifiedDate":"2024-03-12"},{"lineNumber":125,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":126,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":127,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"Dethada":127}},{"path":"src/test/java/seedu/findvisor/logic/parser/AddCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.parser;","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":3,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-10"},{"lineNumber":4,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-03-10"},{"lineNumber":5,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2024-03-10"},{"lineNumber":6,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-10"},{"lineNumber":7,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2024-03-10"},{"lineNumber":10,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-03-10"},{"lineNumber":11,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2024-03-10"},{"lineNumber":13,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-03-10"},{"lineNumber":14,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2024-03-10"},{"lineNumber":15,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-03-10"},{"lineNumber":16,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2024-03-10"},{"lineNumber":17,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2024-03-10"},{"lineNumber":18,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2024-03-10"},{"lineNumber":19,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2024-03-10"},{"lineNumber":20,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2024-03-10"},{"lineNumber":21,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-10"},{"lineNumber":22,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-10"},{"lineNumber":23,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-10"},{"lineNumber":24,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-10"},{"lineNumber":25,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2024-03-10"},{"lineNumber":26,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-03-10"},{"lineNumber":27,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-10"},{"lineNumber":28,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-10"},{"lineNumber":29,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-10"},{"lineNumber":30,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-10"},{"lineNumber":31,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-10"},{"lineNumber":32,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-10"},{"lineNumber":33,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.TypicalPersons.AMY;","lastModifiedDate":"2024-03-10"},{"lineNumber":34,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.TypicalPersons.BOB;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.logic.Messages;","lastModifiedDate":"2024-03-10"},{"lineNumber":39,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.AddCommand;","lastModifiedDate":"2024-03-10"},{"lineNumber":40,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Address;","lastModifiedDate":"2024-03-10"},{"lineNumber":41,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Email;","lastModifiedDate":"2024-03-10"},{"lineNumber":42,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Name;","lastModifiedDate":"2024-03-10"},{"lineNumber":43,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Person;","lastModifiedDate":"2024-03-10"},{"lineNumber":44,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Phone;","lastModifiedDate":"2024-03-10"},{"lineNumber":45,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.tag.Tag;","lastModifiedDate":"2024-03-10"},{"lineNumber":46,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.testutil.PersonBuilder;","lastModifiedDate":"2024-03-10"},{"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":"-"},"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":"-"},"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":"-"},"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":"-"},"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":{"KohGuanZeh":43,"-":153}},{"path":"src/test/java/seedu/findvisor/logic/parser/AddressBookParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.parser;","lastModifiedDate":"2024-03-10"},{"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":"Dethada"},"content":"import static seedu.findvisor.commons.util.DateTimeUtil.dateTimeToInputString;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-10"},{"lineNumber":7,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_MEETING_REMARK;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.createValidMeeting;","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.createValidMeetingNonEmptyRemark;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_END_DATETIME;","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_MEETING_REMARK;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_START_DATETIME;","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-10"},{"lineNumber":24,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-10"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":30,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.AddCommand;","lastModifiedDate":"2024-03-10"},{"lineNumber":31,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.ClearCommand;","lastModifiedDate":"2024-03-10"},{"lineNumber":32,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-10"},{"lineNumber":33,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.EditCommand;","lastModifiedDate":"2024-03-10"},{"lineNumber":34,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-10"},{"lineNumber":35,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.ExitCommand;","lastModifiedDate":"2024-03-10"},{"lineNumber":36,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.FindCommand;","lastModifiedDate":"2024-03-10"},{"lineNumber":37,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.HelpCommand;","lastModifiedDate":"2024-03-10"},{"lineNumber":38,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.ListCommand;","lastModifiedDate":"2024-03-10"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.logic.commands.ScheduleCommand;","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.logic.commands.UnscheduleCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-10"},{"lineNumber":42,"author":{"gitId":"Javiery3889"},"content":"import seedu.findvisor.model.person.EmailContainsKeywordPredicate;","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.model.person.Meeting;","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"Javiery3889"},"content":"import seedu.findvisor.model.person.NameContainsKeywordPredicate;","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Person;","lastModifiedDate":"2024-03-10"},{"lineNumber":46,"author":{"gitId":"Javiery3889"},"content":"import seedu.findvisor.model.person.PhoneContainsKeywordPredicate;","lastModifiedDate":"2024-03-15"},{"lineNumber":47,"author":{"gitId":"Javiery3889"},"content":"import seedu.findvisor.model.tag.TagsContainsKeywordsPredicate;","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2024-03-10"},{"lineNumber":49,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.testutil.PersonBuilder;","lastModifiedDate":"2024-03-10"},{"lineNumber":50,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.testutil.PersonUtil;","lastModifiedDate":"2024-03-10"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void parseCommand_add() 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":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","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-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2017-06-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2018-03-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command);","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_exit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","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_find() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":93,"author":{"gitId":"Javiery3889"},"content":" // Find using name","lastModifiedDate":"2024-03-14"},{"lineNumber":94,"author":{"gitId":"Javiery3889"},"content":" FindCommand findNameCommand \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2024-03-14"},{"lineNumber":95,"author":{"gitId":"Javiery3889"},"content":" FindCommand.COMMAND_WORD + \" \" + PREFIX_NAME + VALID_NAME_AMY);","lastModifiedDate":"2024-03-14"},{"lineNumber":96,"author":{"gitId":"Javiery3889"},"content":" assertEquals(new FindCommand(new NameContainsKeywordPredicate(VALID_NAME_AMY)), findNameCommand);","lastModifiedDate":"2024-03-14"},{"lineNumber":97,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":98,"author":{"gitId":"Javiery3889"},"content":" // Find using email","lastModifiedDate":"2024-03-14"},{"lineNumber":99,"author":{"gitId":"Javiery3889"},"content":" FindCommand findEmailCommand \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2024-03-14"},{"lineNumber":100,"author":{"gitId":"Javiery3889"},"content":" FindCommand.COMMAND_WORD + \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY);","lastModifiedDate":"2024-03-14"},{"lineNumber":101,"author":{"gitId":"Javiery3889"},"content":" assertEquals(new FindCommand(new EmailContainsKeywordPredicate(VALID_EMAIL_AMY)), findEmailCommand);","lastModifiedDate":"2024-03-15"},{"lineNumber":102,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":103,"author":{"gitId":"Javiery3889"},"content":" // Find using phone","lastModifiedDate":"2024-03-14"},{"lineNumber":104,"author":{"gitId":"Javiery3889"},"content":" FindCommand findPhoneCommand \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2024-03-14"},{"lineNumber":105,"author":{"gitId":"Javiery3889"},"content":" FindCommand.COMMAND_WORD + \" \" + PREFIX_PHONE + VALID_PHONE_AMY);","lastModifiedDate":"2024-03-14"},{"lineNumber":106,"author":{"gitId":"Javiery3889"},"content":" assertEquals(new FindCommand(new PhoneContainsKeywordPredicate(VALID_PHONE_AMY)), findPhoneCommand);","lastModifiedDate":"2024-03-15"},{"lineNumber":107,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":108,"author":{"gitId":"Javiery3889"},"content":" // Find using tags","lastModifiedDate":"2024-03-14"},{"lineNumber":109,"author":{"gitId":"Javiery3889"},"content":" FindCommand findTagsCommand \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2024-03-14"},{"lineNumber":110,"author":{"gitId":"Javiery3889"},"content":" FindCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2024-03-14"},{"lineNumber":111,"author":{"gitId":"Javiery3889"},"content":" + PREFIX_TAG + VALID_TAG_FRIEND + \" \"","lastModifiedDate":"2024-03-14"},{"lineNumber":112,"author":{"gitId":"Javiery3889"},"content":" + PREFIX_TAG + VALID_TAG_HUSBAND);","lastModifiedDate":"2024-03-14"},{"lineNumber":113,"author":{"gitId":"Javiery3889"},"content":" assertEquals(new FindCommand(new TagsContainsKeywordsPredicate(","lastModifiedDate":"2024-03-14"},{"lineNumber":114,"author":{"gitId":"Javiery3889"},"content":" Arrays.asList(new String[]{VALID_TAG_FRIEND, VALID_TAG_HUSBAND}))), findTagsCommand);","lastModifiedDate":"2024-03-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":123,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":124,"author":{"gitId":"Dethada"},"content":" public void parseCommand_schedule() throws Exception {","lastModifiedDate":"2024-03-11"},{"lineNumber":125,"author":{"gitId":"Dethada"},"content":" Meeting meeting \u003d createValidMeeting();","lastModifiedDate":"2024-03-11"},{"lineNumber":126,"author":{"gitId":"Dethada"},"content":" ScheduleCommand command \u003d (ScheduleCommand) parser.parseCommand(","lastModifiedDate":"2024-03-11"},{"lineNumber":127,"author":{"gitId":"Dethada"},"content":" ScheduleCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased() + \" \"","lastModifiedDate":"2024-03-11"},{"lineNumber":128,"author":{"gitId":"Dethada"},"content":" + PREFIX_START_DATETIME + dateTimeToInputString(meeting.start) + \" \"","lastModifiedDate":"2024-03-11"},{"lineNumber":129,"author":{"gitId":"Dethada"},"content":" + PREFIX_END_DATETIME + dateTimeToInputString(meeting.end));","lastModifiedDate":"2024-03-11"},{"lineNumber":130,"author":{"gitId":"Dethada"},"content":" assertEquals(new ScheduleCommand(INDEX_FIRST_PERSON, meeting), command);","lastModifiedDate":"2024-03-11"},{"lineNumber":131,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":132,"author":{"gitId":"Dethada"},"content":" meeting \u003d createValidMeetingNonEmptyRemark();","lastModifiedDate":"2024-03-19"},{"lineNumber":133,"author":{"gitId":"Dethada"},"content":" command \u003d (ScheduleCommand) parser.parseCommand(","lastModifiedDate":"2024-03-19"},{"lineNumber":134,"author":{"gitId":"Dethada"},"content":" ScheduleCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased() + \" \"","lastModifiedDate":"2024-03-19"},{"lineNumber":135,"author":{"gitId":"Dethada"},"content":" + PREFIX_START_DATETIME + dateTimeToInputString(meeting.start) + \" \"","lastModifiedDate":"2024-03-19"},{"lineNumber":136,"author":{"gitId":"Dethada"},"content":" + PREFIX_END_DATETIME + dateTimeToInputString(meeting.end) + \" \"","lastModifiedDate":"2024-03-19"},{"lineNumber":137,"author":{"gitId":"Dethada"},"content":" + PREFIX_MEETING_REMARK + VALID_MEETING_REMARK);","lastModifiedDate":"2024-03-19"},{"lineNumber":138,"author":{"gitId":"Dethada"},"content":" assertEquals(new ScheduleCommand(INDEX_FIRST_PERSON, meeting), command);","lastModifiedDate":"2024-03-19"},{"lineNumber":139,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":140,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":141,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":142,"author":{"gitId":"Dethada"},"content":" public void parseCommand_unschedule() throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":143,"author":{"gitId":"Dethada"},"content":" UnscheduleCommand command \u003d (UnscheduleCommand) parser.parseCommand(","lastModifiedDate":"2024-03-12"},{"lineNumber":144,"author":{"gitId":"Dethada"},"content":" UnscheduleCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2024-03-12"},{"lineNumber":145,"author":{"gitId":"Dethada"},"content":" assertEquals(new UnscheduleCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2024-03-12"},{"lineNumber":146,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":147,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":148,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":149,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":154,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":155,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":158,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"KohGuanZeh":19,"Javiery3889":37,"Dethada":33,"-":69}},{"path":"src/test/java/seedu/findvisor/logic/parser/ArgumentTokenizerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.parser;","lastModifiedDate":"2024-03-10"},{"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":{"KohGuanZeh":1,"-":149}},{"path":"src/test/java/seedu/findvisor/logic/parser/CommandParserTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.parser;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.Command;","lastModifiedDate":"2024-03-10"},{"lineNumber":6,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2017-07-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, pe.getMessage());","lastModifiedDate":"2017-07-06"},{"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":{"KohGuanZeh":3,"-":36}},{"path":"src/test/java/seedu/findvisor/logic/parser/DeleteCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.parser;","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":3,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-10"},{"lineNumber":4,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-10"},{"lineNumber":5,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-10"},{"lineNumber":6,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" assertParseSuccess(parser, \"1\", new DeleteCommand(INDEX_FIRST_PERSON));","lastModifiedDate":"2017-07-06"},{"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":{"KohGuanZeh":6,"-":26}},{"path":"src/test/java/seedu/findvisor/logic/parser/EditCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.parser;","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"KohGuanZeh"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":3,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-10"},{"lineNumber":4,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-03-10"},{"lineNumber":5,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2024-03-10"},{"lineNumber":6,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-10"},{"lineNumber":7,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2024-03-10"},{"lineNumber":10,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-03-10"},{"lineNumber":11,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2024-03-10"},{"lineNumber":13,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-03-10"},{"lineNumber":14,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-03-10"},{"lineNumber":15,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2024-03-10"},{"lineNumber":16,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2024-03-10"},{"lineNumber":17,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2024-03-10"},{"lineNumber":18,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2024-03-10"},{"lineNumber":19,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-03-10"},{"lineNumber":20,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-03-10"},{"lineNumber":21,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-03-10"},{"lineNumber":22,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-10"},{"lineNumber":23,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2024-03-10"},{"lineNumber":24,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-03-10"},{"lineNumber":25,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-10"},{"lineNumber":26,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-10"},{"lineNumber":27,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-10"},{"lineNumber":28,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-10"},{"lineNumber":29,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-10"},{"lineNumber":30,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-10"},{"lineNumber":31,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-10"},{"lineNumber":32,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-10"},{"lineNumber":33,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.index.Index;","lastModifiedDate":"2024-03-10"},{"lineNumber":38,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.Messages;","lastModifiedDate":"2024-03-10"},{"lineNumber":39,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.EditCommand;","lastModifiedDate":"2024-03-10"},{"lineNumber":40,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-10"},{"lineNumber":41,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Address;","lastModifiedDate":"2024-03-10"},{"lineNumber":42,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Email;","lastModifiedDate":"2024-03-10"},{"lineNumber":43,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Name;","lastModifiedDate":"2024-03-10"},{"lineNumber":44,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Phone;","lastModifiedDate":"2024-03-10"},{"lineNumber":45,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.tag.Tag;","lastModifiedDate":"2024-03-10"},{"lineNumber":46,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2024-03-10"},{"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":"-"},"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":"-"},"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":"-"},"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":"-"},"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":"-"},"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":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"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":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"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":{"KohGuanZeh":43,"-":165}},{"path":"src/test/java/seedu/findvisor/logic/parser/FindCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.parser;","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":3,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-10"},{"lineNumber":4,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"Javiery3889"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-10"},{"lineNumber":18,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-10"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":24,"author":{"gitId":"Javiery3889"},"content":"import seedu.findvisor.logic.Messages;","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.FindCommand;","lastModifiedDate":"2024-03-10"},{"lineNumber":26,"author":{"gitId":"Javiery3889"},"content":"import seedu.findvisor.model.person.EmailContainsKeywordPredicate;","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"Javiery3889"},"content":"import seedu.findvisor.model.person.NameContainsKeywordPredicate;","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"Javiery3889"},"content":"import seedu.findvisor.model.person.PhoneContainsKeywordPredicate;","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"Javiery3889"},"content":"import seedu.findvisor.model.tag.TagsContainsKeywordsPredicate;","lastModifiedDate":"2024-03-14"},{"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":"-"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2017-06-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \" \", String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-07-06"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsFindCommand() {","lastModifiedDate":"2017-08-15"},{"lineNumber":43,"author":{"gitId":"Javiery3889"},"content":" // parse name","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"-"},"content":" FindCommand expectedFindCommand \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":45,"author":{"gitId":"Javiery3889"},"content":" new FindCommand(new NameContainsKeywordPredicate(\"Bob Choo\"));","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"Javiery3889"},"content":" assertParseSuccess(parser, NAME_DESC_BOB, expectedFindCommand);","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"Javiery3889"},"content":" // multiple whitespaces before and after name keyword","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"Javiery3889"},"content":" String paddedKeyword \u003d \"\\n \\t \" + NAME_DESC_BOB + \"\\n \\t\";","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"Javiery3889"},"content":" assertParseSuccess(parser, paddedKeyword, expectedFindCommand);","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"Javiery3889"},"content":" // parse email","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"Javiery3889"},"content":" expectedFindCommand \u003d new FindCommand(new EmailContainsKeywordPredicate(\"amy@example.com\"));","lastModifiedDate":"2024-03-15"},{"lineNumber":54,"author":{"gitId":"Javiery3889"},"content":" assertParseSuccess(parser, EMAIL_DESC_AMY, expectedFindCommand);","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"Javiery3889"},"content":" // parse phone","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"Arixeyeion"},"content":" expectedFindCommand \u003d new FindCommand(new PhoneContainsKeywordPredicate(\"81234567\"));","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"Javiery3889"},"content":" assertParseSuccess(parser, PHONE_DESC_BOB, expectedFindCommand);","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"Javiery3889"},"content":" // parse multiple tags","lastModifiedDate":"2024-03-14"},{"lineNumber":61,"author":{"gitId":"Javiery3889"},"content":" expectedFindCommand \u003d new FindCommand(new TagsContainsKeywordsPredicate(","lastModifiedDate":"2024-03-14"},{"lineNumber":62,"author":{"gitId":"Javiery3889"},"content":" Arrays.asList(new String[]{\"friend\", \"husband\"})));","lastModifiedDate":"2024-03-14"},{"lineNumber":63,"author":{"gitId":"Javiery3889"},"content":" assertParseSuccess(parser, TAG_DESC_FRIEND + TAG_DESC_HUSBAND, expectedFindCommand);","lastModifiedDate":"2024-03-14"},{"lineNumber":64,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":65,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":66,"author":{"gitId":"Javiery3889"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":67,"author":{"gitId":"Javiery3889"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"Javiery3889"},"content":" assertParseFailure(parser, NAME_DESC_BOB + NAME_DESC_AMY,","lastModifiedDate":"2024-03-14"},{"lineNumber":69,"author":{"gitId":"Javiery3889"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2024-03-14"},{"lineNumber":70,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":71,"author":{"gitId":"Javiery3889"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + EMAIL_DESC_BOB,","lastModifiedDate":"2024-03-14"},{"lineNumber":72,"author":{"gitId":"Javiery3889"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2024-03-14"},{"lineNumber":73,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":74,"author":{"gitId":"Javiery3889"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + PHONE_DESC_BOB,","lastModifiedDate":"2024-03-14"},{"lineNumber":75,"author":{"gitId":"Javiery3889"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2024-03-14"},{"lineNumber":76,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":77,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":78,"author":{"gitId":"Javiery3889"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":79,"author":{"gitId":"Javiery3889"},"content":" public void parse_invalidArgs_failure() {","lastModifiedDate":"2024-03-14"},{"lineNumber":80,"author":{"gitId":"Javiery3889"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-15"},{"lineNumber":81,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":82,"author":{"gitId":"Javiery3889"},"content":" // Invalid prefix","lastModifiedDate":"2024-03-15"},{"lineNumber":83,"author":{"gitId":"Javiery3889"},"content":" assertParseFailure(parser, \"@/test\", expectedMessage);","lastModifiedDate":"2024-03-15"},{"lineNumber":84,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":85,"author":{"gitId":"Javiery3889"},"content":" // Invalid and valid prefix","lastModifiedDate":"2024-03-15"},{"lineNumber":86,"author":{"gitId":"Javiery3889"},"content":" assertParseFailure(parser, \"@/test \" + VALID_NAME_AMY, expectedMessage);","lastModifiedDate":"2024-03-15"},{"lineNumber":87,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":88,"author":{"gitId":"Javiery3889"},"content":" // Multiple valid prefixes","lastModifiedDate":"2024-03-15"},{"lineNumber":89,"author":{"gitId":"Javiery3889"},"content":" assertParseFailure(parser, VALID_NAME_AMY + \" \" + VALID_EMAIL_AMY, expectedMessage);","lastModifiedDate":"2024-03-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-27"}],"authorContributionMap":{"Arixeyeion":1,"KohGuanZeh":5,"Javiery3889":63,"-":22}},{"path":"src/test/java/seedu/findvisor/logic/parser/ParserUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.logic.parser;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2024-03-10"},{"lineNumber":6,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-10"},{"lineNumber":7,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-10"},{"lineNumber":17,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Address;","lastModifiedDate":"2024-03-10"},{"lineNumber":18,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Email;","lastModifiedDate":"2024-03-10"},{"lineNumber":19,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Name;","lastModifiedDate":"2024-03-10"},{"lineNumber":20,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Phone;","lastModifiedDate":"2024-03-10"},{"lineNumber":21,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.tag.Tag;","lastModifiedDate":"2024-03-10"},{"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":"Arixeyeion"},"content":" private static final String VALID_NAME_EXTENDED \u003d \"Rachel Lee Walker\";","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"Arixeyeion"},"content":" private static final String VALID_NAME_WITH_BIG_SPACE_IN_BETWEEN \u003d \"Rachel Walker\";","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"Arixeyeion"},"content":" private static final String VALID_NAME_WITH_DIFFERING_SPACES \u003d \"Rachel Lee Walker\";","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"Arixeyeion"},"content":" private static final String VALID_PHONE \u003d \"99123456\";","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"Arixeyeion"},"content":" private static final String VALID_PHONE_WITH_SPACE_BETWEEN \u003d \"9912 3456\";","lastModifiedDate":"2024-03-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d \"123 Main Street #0505\";","lastModifiedDate":"2017-05-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_1 \u003d \"friend\";","lastModifiedDate":"2017-05-22"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_2 \u003d \"neighbour\";","lastModifiedDate":"2017-05-22"},{"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":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23"},{"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":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // No 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":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2017-05-25"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":75,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":81,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29"},{"lineNumber":82,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":86,"author":{"gitId":"Arixeyeion"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"Arixeyeion"},"content":" public void parseName_validValueWithBigSpaceInBetween_returnsTrimmedName() throws Exception {","lastModifiedDate":"2024-03-17"},{"lineNumber":88,"author":{"gitId":"Arixeyeion"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"Arixeyeion"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME_WITH_BIG_SPACE_IN_BETWEEN));","lastModifiedDate":"2024-03-17"},{"lineNumber":90,"author":{"gitId":"Arixeyeion"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"Arixeyeion"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"Arixeyeion"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"Arixeyeion"},"content":" public void parseName_validValueWithDifferingSpaces_returnsTrimmedName() throws Exception {","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"Arixeyeion"},"content":" Name expectedName \u003d new Name(VALID_NAME_EXTENDED);","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"Arixeyeion"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME_WITH_DIFFERING_SPACES));","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"Arixeyeion"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"Arixeyeion"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void parsePhone_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePhone((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public void parsePhone_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhone(INVALID_PHONE));","lastModifiedDate":"2019-03-14"},{"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 parsePhone_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":110,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-22"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(VALID_PHONE));","lastModifiedDate":"2017-05-30"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":115,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithWhitespace_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":116,"author":{"gitId":"-"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":117,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-30"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(phoneWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":121,"author":{"gitId":"Arixeyeion"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":122,"author":{"gitId":"Arixeyeion"},"content":" public void parsePhone_validValueWithWhitespaceInBetween_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2024-03-15"},{"lineNumber":123,"author":{"gitId":"Arixeyeion"},"content":" String phoneWithWhitespaceInBetween \u003d VALID_PHONE_WITH_SPACE_BETWEEN;","lastModifiedDate":"2024-03-15"},{"lineNumber":124,"author":{"gitId":"Arixeyeion"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2024-03-15"},{"lineNumber":125,"author":{"gitId":"Arixeyeion"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(phoneWithWhitespaceInBetween));","lastModifiedDate":"2024-03-15"},{"lineNumber":126,"author":{"gitId":"Arixeyeion"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":127,"author":{"gitId":"Arixeyeion"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public void parseAddress_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseAddress((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 parseAddress_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseAddress(INVALID_ADDRESS));","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 parseAddress_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":140,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-22"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(VALID_ADDRESS));","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 parseAddress_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":146,"author":{"gitId":"-"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_ADDRESS + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":147,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-30"},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(addressWithWhitespace));","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-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":{"Arixeyeion":24,"KohGuanZeh":10,"-":185}},{"path":"src/test/java/seedu/findvisor/logic/parser/ScheduleCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package seedu.findvisor.logic.parser;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.commons.util.DateTimeUtil.dateTimeToInputString;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.createValidMeeting;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.createValidMeetingNonEmptyRemark;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_END_DATETIME;","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_MEETING_REMARK;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_START_DATETIME;","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.commons.core.index.Index;","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.logic.commands.ScheduleCommand;","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.model.person.Meeting;","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":"public class ScheduleCommandParserTest {","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" private ScheduleCommandParser parser \u003d new ScheduleCommandParser();","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" assertParseFailure(parser, \" \", String.format(","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" ScheduleCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" public void parse_validArgs_returnsScheduleCommand() {","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" Meeting meeting \u003d createValidMeeting();","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" ScheduleCommand expectedScheduleCommand \u003d new ScheduleCommand(targetIndex, meeting);","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":" targetIndex.getOneBased() + \" \"","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":" + PREFIX_START_DATETIME + \" \" + dateTimeToInputString(meeting.start) + \" \"","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":" + PREFIX_END_DATETIME + \" \" + dateTimeToInputString(meeting.end),","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":" expectedScheduleCommand);","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"Dethada"},"content":" public void parse_invalidDatetimeFormat_throwsParseException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"Dethada"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"Dethada"},"content":" INDEX_FIRST_PERSON.getOneBased() + \" \"","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"Dethada"},"content":" + PREFIX_START_DATETIME + \"2024-02-22 14:00 \"","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"Dethada"},"content":" + PREFIX_END_DATETIME + \"2024-02-22 15:00\",","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"Dethada"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, ScheduleCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"Dethada"},"content":" public void parse_validRemark_returnsScheduleCommand() {","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"Dethada"},"content":" Meeting meeting \u003d createValidMeetingNonEmptyRemark();","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"Dethada"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"Dethada"},"content":" ScheduleCommand expectedScheduleCommand \u003d new ScheduleCommand(targetIndex, meeting);","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"Dethada"},"content":" System.out.println(dateTimeToInputString(meeting.start) + \" \" + dateTimeToInputString(meeting.end));","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"Dethada"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"Dethada"},"content":" targetIndex.getOneBased() + \" \"","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"Dethada"},"content":" + PREFIX_START_DATETIME + \" \" + dateTimeToInputString(meeting.start) + \" \"","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"Dethada"},"content":" + PREFIX_END_DATETIME + \" \" + dateTimeToInputString(meeting.end) + \" \"","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"Dethada"},"content":" + PREFIX_MEETING_REMARK + \" \" + meeting.remark,","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"Dethada"},"content":" expectedScheduleCommand);","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"Dethada":65}},{"path":"src/test/java/seedu/findvisor/logic/parser/UnscheduleCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package seedu.findvisor.logic.parser;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.logic.commands.UnscheduleCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":" * As we are only doing white-box testing, our test cases do not cover path variations","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" * outside of the UnscheduleCommand code. For example, inputs \"1\" and \"1 abc\" take the","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" * same path through the UnscheduleCommand, and therefore we test only one of them.","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":" * The path variation for those two cases occur inside the ParserUtil, and","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" * therefore should be covered by the ParserUtilTest.","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":"public class UnscheduleCommandParserTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" private UnscheduleCommandParser parser \u003d new UnscheduleCommandParser();","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" public void parse_validArgs_returnsUnscheduleCommand() {","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" assertParseSuccess(parser, \"1\", new UnscheduleCommand(INDEX_FIRST_PERSON));","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" assertParseFailure(parser, \"a\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, UnscheduleCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"Dethada":32}},{"path":"src/test/java/seedu/findvisor/model/AddressBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.model;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-10"},{"lineNumber":7,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-10"},{"lineNumber":10,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Person;","lastModifiedDate":"2024-03-10"},{"lineNumber":22,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2024-03-10"},{"lineNumber":23,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.testutil.PersonBuilder;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2018-04-19"},{"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":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2018-08-06"},{"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":"-"},"content":"}","lastModifiedDate":"2016-12-24"}],"authorContributionMap":{"KohGuanZeh":9,"-":99}},{"path":"src/test/java/seedu/findvisor/model/ModelManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.model;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import static seedu.findvisor.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-10"},{"lineNumber":7,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2024-03-10"},{"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":"","lastModifiedDate":"2017-05-31"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":16,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.GuiSettings;","lastModifiedDate":"2024-03-10"},{"lineNumber":17,"author":{"gitId":"Javiery3889"},"content":"import seedu.findvisor.model.person.NameContainsKeywordPredicate;","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.testutil.AddressBookBuilder;","lastModifiedDate":"2024-03-10"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class ModelManagerTest {","lastModifiedDate":"2017-05-31"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2018-08-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertEquals(new GuiSettings(), modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertEquals(new AddressBook(), new AddressBook(modelManager.getAddressBook()));","lastModifiedDate":"2018-11-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void setUserPrefs_nullUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setUserPrefs(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void setUserPrefs_validUserPrefs_copiesUserPrefs() {","lastModifiedDate":"2018-12-06"},{"lineNumber":38,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"address/book/file/path\"));","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1, 2, 3, 4));","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" modelManager.setUserPrefs(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // Modifying userPrefs should not modify modelManager\u0027s userPrefs","lastModifiedDate":"2018-12-06"},{"lineNumber":45,"author":{"gitId":"-"},"content":" UserPrefs oldUserPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":46,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"new/address/book/file/path\"));","lastModifiedDate":"2018-12-06"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertEquals(oldUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setGuiSettings(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void setGuiSettings_validGuiSettings_setsGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1, 2, 3, 4);","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" modelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertEquals(guiSettings, modelManager.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":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setAddressBookFilePath(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_validPath_setsAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" Path path \u003d Paths.get(\"address/book/file/path\");","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" modelManager.setAddressBookFilePath(path);","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertEquals(path, modelManager.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":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasPerson(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertFalse(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":86,"author":{"gitId":"-"},"content":" modelManager.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertTrue(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":97,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBookBuilder().withPerson(ALICE).withPerson(BENSON).build();","lastModifiedDate":"2017-07-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" AddressBook differentAddressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31"},{"lineNumber":99,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":101,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":102,"author":{"gitId":"-"},"content":" modelManager \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2018-08-06"},{"lineNumber":103,"author":{"gitId":"-"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2017-05-31"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":106,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":109,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":112,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":" // different addressBook -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(differentAddressBook, userPrefs)));","lastModifiedDate":"2017-05-31"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":118,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":119,"author":{"gitId":"Javiery3889"},"content":" String keyword \u003d ALICE.getName().fullName;","lastModifiedDate":"2024-03-14"},{"lineNumber":120,"author":{"gitId":"Javiery3889"},"content":" modelManager.updateFilteredPersonList(new NameContainsKeywordPredicate(keyword));","lastModifiedDate":"2024-03-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, userPrefs)));","lastModifiedDate":"2017-05-31"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":123,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2017-08-05"},{"lineNumber":124,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":126,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27"},{"lineNumber":127,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":128,"author":{"gitId":"-"},"content":" differentUserPrefs.setAddressBookFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2018-08-09"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, differentUserPrefs)));","lastModifiedDate":"2018-11-27"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":131,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31"}],"authorContributionMap":{"KohGuanZeh":7,"Javiery3889":3,"-":121}},{"path":"src/test/java/seedu/findvisor/model/UserPrefsTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.model;","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":3,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":"}","lastModifiedDate":"2018-11-27"}],"authorContributionMap":{"KohGuanZeh":2,"-":19}},{"path":"src/test/java/seedu/findvisor/model/person/AddressTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.model.person;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-10"},{"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":{"KohGuanZeh":2,"-":54}},{"path":"src/test/java/seedu/findvisor/model/person/EmailContainsKeywordPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Javiery3889"},"content":"package seedu.findvisor.model.person;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"Javiery3889"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"Javiery3889"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"Javiery3889"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"Javiery3889"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"Javiery3889"},"content":"import seedu.findvisor.testutil.PersonBuilder;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"Javiery3889"},"content":"public class EmailContainsKeywordPredicateTest {","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"Javiery3889"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"Javiery3889"},"content":" public void equals() {","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"Javiery3889"},"content":" String firstPredicateKeyword \u003d \"example1@example.com\";","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"Javiery3889"},"content":" String secondPredicateKeyword \u003d \"example2@example.com\";","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"Javiery3889"},"content":" EmailContainsKeywordPredicate firstPredicate \u003d new EmailContainsKeywordPredicate(firstPredicateKeyword);","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"Javiery3889"},"content":" EmailContainsKeywordPredicate secondPredicate \u003d new EmailContainsKeywordPredicate(secondPredicateKeyword);","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"Javiery3889"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"Javiery3889"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"Javiery3889"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"Javiery3889"},"content":" EmailContainsKeywordPredicate firstPredicateCopy \u003d new EmailContainsKeywordPredicate(firstPredicateKeyword);","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"Javiery3889"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"Javiery3889"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"Javiery3889"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"Javiery3889"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"Javiery3889"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"Javiery3889"},"content":" // different email -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"Javiery3889"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"Javiery3889"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"Javiery3889"},"content":" public void test_emailContainsKeyword_returnsTrue() {","lastModifiedDate":"2024-03-15"},{"lineNumber":40,"author":{"gitId":"Javiery3889"},"content":" // Exact match","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"Javiery3889"},"content":" EmailContainsKeywordPredicate predicate \u003d new EmailContainsKeywordPredicate(\"example@example.com\");","lastModifiedDate":"2024-03-15"},{"lineNumber":42,"author":{"gitId":"Javiery3889"},"content":" assertTrue(predicate.test(new PersonBuilder().withEmail(\"example@example.com\").build()));","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"Javiery3889"},"content":" // Substring match","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"Javiery3889"},"content":" predicate \u003d new EmailContainsKeywordPredicate(\"example\");","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"Javiery3889"},"content":" assertTrue(predicate.test(new PersonBuilder().withEmail(\"example@example.com\").build()));","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"Javiery3889"},"content":" // Mixed-case keyword","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"Javiery3889"},"content":" predicate \u003d new EmailContainsKeywordPredicate(\"EXAmple@example.COM\");","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"Javiery3889"},"content":" assertTrue(predicate.test(new PersonBuilder().withEmail(\"example@example.com\").build()));","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"Javiery3889"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"Javiery3889"},"content":" public void test_emailDoesNotContainsKeyword_returnsFalse() {","lastModifiedDate":"2024-03-15"},{"lineNumber":55,"author":{"gitId":"Javiery3889"},"content":" // Non-matching keyword","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"Javiery3889"},"content":" EmailContainsKeywordPredicate predicate \u003d new EmailContainsKeywordPredicate(\"example@example.com\");","lastModifiedDate":"2024-03-15"},{"lineNumber":57,"author":{"gitId":"Javiery3889"},"content":" assertFalse(predicate.test(new PersonBuilder().withEmail(\"123@example.com\").build()));","lastModifiedDate":"2024-03-14"},{"lineNumber":58,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"Javiery3889"},"content":" // Substring keyword","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"Javiery3889"},"content":" predicate \u003d new EmailContainsKeywordPredicate(\"com@example.com\");","lastModifiedDate":"2024-03-15"},{"lineNumber":61,"author":{"gitId":"Javiery3889"},"content":" assertFalse(predicate.test(new PersonBuilder().withEmail(\"example@example.com\").build()));","lastModifiedDate":"2024-03-14"},{"lineNumber":62,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":63,"author":{"gitId":"Javiery3889"},"content":" // Keywords match phone, but does not match email","lastModifiedDate":"2024-03-14"},{"lineNumber":64,"author":{"gitId":"Javiery3889"},"content":" predicate \u003d new EmailContainsKeywordPredicate(\"91002921\");","lastModifiedDate":"2024-03-15"},{"lineNumber":65,"author":{"gitId":"Javiery3889"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").withPhone(\"91002921\")","lastModifiedDate":"2024-03-14"},{"lineNumber":66,"author":{"gitId":"Javiery3889"},"content":" .withEmail(\"alice@email.com\").withAddress(\"MainStreet\").build()));","lastModifiedDate":"2024-03-14"},{"lineNumber":67,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":69,"author":{"gitId":"Javiery3889"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":70,"author":{"gitId":"Javiery3889"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-14"},{"lineNumber":71,"author":{"gitId":"Javiery3889"},"content":" String keyword \u003d \"example@example.com\";","lastModifiedDate":"2024-03-14"},{"lineNumber":72,"author":{"gitId":"Javiery3889"},"content":" EmailContainsKeywordPredicate predicate \u003d new EmailContainsKeywordPredicate(keyword);","lastModifiedDate":"2024-03-15"},{"lineNumber":73,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":74,"author":{"gitId":"Javiery3889"},"content":" String expected \u003d EmailContainsKeywordPredicate.class.getCanonicalName() + \"{email\u003d\" + keyword + \"}\";","lastModifiedDate":"2024-03-15"},{"lineNumber":75,"author":{"gitId":"Javiery3889"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2024-03-14"},{"lineNumber":76,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":77,"author":{"gitId":"Javiery3889"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"Javiery3889":77}},{"path":"src/test/java/seedu/findvisor/model/person/EmailTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.model.person;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-10"},{"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":{"KohGuanZeh":2,"-":86}},{"path":"src/test/java/seedu/findvisor/model/person/MeetingTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package seedu.findvisor.model.person;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.INVALID_MEETING_REMARK;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_MEETING_REMARK;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":"public class MeetingTest {","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":" private static final LocalDateTime START \u003d LocalDateTime.of(2024, 1, 1, 12, 0);","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":" private static final LocalDateTime END \u003d LocalDateTime.of(2024, 1, 1, 13, 0);","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":" assertThrows(NullPointerException.class, () -\u003e new Meeting(null, null, VALID_MEETING_REMARK));","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":" assertThrows(NullPointerException.class, () -\u003e new Meeting(START, null, VALID_MEETING_REMARK));","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":" assertThrows(NullPointerException.class, () -\u003e new Meeting(null, END, VALID_MEETING_REMARK));","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":" assertThrows(NullPointerException.class, () -\u003e new Meeting(START, END, null));","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" public void constructor_invalidMeetingDateTime_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Meeting(END, START, VALID_MEETING_REMARK));","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":" public void constructor_invalidMeetingRemark_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Meeting(START, END, INVALID_MEETING_REMARK));","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":" public void isValidMeeting() {","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":" // null meeting","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":" assertThrows(NullPointerException.class, () -\u003e Meeting.isValidDateTime(null, null));","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":" assertThrows(NullPointerException.class, () -\u003e Meeting.isValidDateTime(START, null));","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":" assertThrows(NullPointerException.class, () -\u003e Meeting.isValidDateTime(null, END));","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"Dethada"},"content":" // invalid meeting","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"Dethada"},"content":" assertFalse(Meeting.isValidDateTime(END, START));","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"Dethada"},"content":" // valid meeting","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"Dethada"},"content":" assertTrue(Meeting.isValidDateTime(START, END));","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"Dethada"},"content":" public void isValidMeetingRemark() {","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"Dethada"},"content":" // null meeting remark","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"Dethada"},"content":" assertThrows(NullPointerException.class, () -\u003e Meeting.isValidRemark(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"Dethada"},"content":" // invalid meeting remark","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"Dethada"},"content":" assertFalse(Meeting.isValidRemark(INVALID_MEETING_REMARK));","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"Dethada"},"content":" // valid meeting remark","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"Dethada"},"content":" assertTrue(Meeting.isValidRemark(VALID_MEETING_REMARK));","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"Dethada"},"content":" public void equals() {","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"Dethada"},"content":" Meeting meeting \u003d new Meeting(START, END, VALID_MEETING_REMARK);","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"Dethada"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-11"},{"lineNumber":66,"author":{"gitId":"Dethada"},"content":" assertTrue(meeting.equals(new Meeting(START, END, VALID_MEETING_REMARK)));","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":68,"author":{"gitId":"Dethada"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"Dethada"},"content":" assertTrue(meeting.equals(meeting));","lastModifiedDate":"2024-03-11"},{"lineNumber":70,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":71,"author":{"gitId":"Dethada"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-11"},{"lineNumber":72,"author":{"gitId":"Dethada"},"content":" assertFalse(meeting.equals(null));","lastModifiedDate":"2024-03-11"},{"lineNumber":73,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"Dethada"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-11"},{"lineNumber":75,"author":{"gitId":"Dethada"},"content":" assertFalse(meeting.equals(LocalDateTime.now()));","lastModifiedDate":"2024-03-11"},{"lineNumber":76,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":77,"author":{"gitId":"Dethada"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-11"},{"lineNumber":78,"author":{"gitId":"Dethada"},"content":" assertFalse(meeting.equals(new Meeting(LocalDateTime.now(),","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"Dethada"},"content":" LocalDateTime.now().plusHours(1), VALID_MEETING_REMARK)));","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"Dethada"},"content":" // different remark -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"Dethada"},"content":" assertFalse(meeting.equals(new Meeting(START, END, \"Different remark\")));","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":84,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"Dethada":84}},{"path":"src/test/java/seedu/findvisor/model/person/NameContainsKeywordPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Javiery3889"},"content":"package seedu.findvisor.model.person;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"Javiery3889"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"Javiery3889"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"Javiery3889"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"Javiery3889"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"Javiery3889"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"Javiery3889"},"content":"import seedu.findvisor.testutil.PersonBuilder;","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"Javiery3889"},"content":"public class NameContainsKeywordPredicateTest {","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"Javiery3889"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"Javiery3889"},"content":" public void equals() {","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"Javiery3889"},"content":" String firstPredicateKeyword \u003d \"first\";","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"Javiery3889"},"content":" String secondPredicateKeyword \u003d \"first second\";","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"Javiery3889"},"content":" NameContainsKeywordPredicate firstPredicate \u003d new NameContainsKeywordPredicate(firstPredicateKeyword);","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"Javiery3889"},"content":" NameContainsKeywordPredicate secondPredicate \u003d new NameContainsKeywordPredicate(secondPredicateKeyword);","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"Javiery3889"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"Javiery3889"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"Javiery3889"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"Javiery3889"},"content":" NameContainsKeywordPredicate firstPredicateCopy \u003d new NameContainsKeywordPredicate(firstPredicateKeyword);","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"Javiery3889"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"Javiery3889"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"Javiery3889"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"Javiery3889"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"Javiery3889"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"Javiery3889"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"Javiery3889"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"Javiery3889"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"Javiery3889"},"content":" public void test_nameEmpty_exceptionThrown() {","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"Javiery3889"},"content":" // empty name -\u003e exception thrown","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"Javiery3889"},"content":" NameContainsKeywordPredicate predicate \u003d new NameContainsKeywordPredicate(\" \");","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"Javiery3889"},"content":" IllegalArgumentException exception \u003d assertThrows(IllegalArgumentException.class, () -\u003e {","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"Javiery3889"},"content":" predicate.test(new PersonBuilder().withName(\"Alice\").build());","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"Javiery3889"},"content":" });","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"Javiery3889"},"content":" assertEquals(\"subString parameter cannot be empty\", exception.getMessage());","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"Javiery3889"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"Javiery3889"},"content":" public void test_nameContainsKeyword_returnsTrue() {","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"Javiery3889"},"content":" // One keyword","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"Javiery3889"},"content":" NameContainsKeywordPredicate predicate \u003d new NameContainsKeywordPredicate(\"Alice\");","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"Javiery3889"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Tan\").build()));","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"Javiery3889"},"content":" // Exact word","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"Javiery3889"},"content":" predicate \u003d new NameContainsKeywordPredicate(\"Alice Tan Li Li\");","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"Javiery3889"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Tan Li Li\").build()));","lastModifiedDate":"2024-03-14"},{"lineNumber":58,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"Javiery3889"},"content":" // Name contains keyword","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"Javiery3889"},"content":" predicate \u003d new NameContainsKeywordPredicate(\"Ali\");","lastModifiedDate":"2024-03-14"},{"lineNumber":61,"author":{"gitId":"Javiery3889"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice\").build()));","lastModifiedDate":"2024-03-14"},{"lineNumber":62,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":63,"author":{"gitId":"Javiery3889"},"content":" // Mixed-case keyword","lastModifiedDate":"2024-03-14"},{"lineNumber":64,"author":{"gitId":"Javiery3889"},"content":" predicate \u003d new NameContainsKeywordPredicate(\"aLIce\");","lastModifiedDate":"2024-03-14"},{"lineNumber":65,"author":{"gitId":"Javiery3889"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Yeoh\").build()));","lastModifiedDate":"2024-03-14"},{"lineNumber":66,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":67,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"Javiery3889"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":69,"author":{"gitId":"Javiery3889"},"content":" public void test_nameDoesNotContainKeyword_returnsFalse() {","lastModifiedDate":"2024-03-15"},{"lineNumber":70,"author":{"gitId":"Javiery3889"},"content":" // Non-matching keyword","lastModifiedDate":"2024-03-14"},{"lineNumber":71,"author":{"gitId":"Javiery3889"},"content":" NameContainsKeywordPredicate predicate \u003d new NameContainsKeywordPredicate(\"Carol\");","lastModifiedDate":"2024-03-14"},{"lineNumber":72,"author":{"gitId":"Javiery3889"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice Tan\").build()));","lastModifiedDate":"2024-03-14"},{"lineNumber":73,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":74,"author":{"gitId":"Javiery3889"},"content":" // Reversed keyword","lastModifiedDate":"2024-03-15"},{"lineNumber":75,"author":{"gitId":"Javiery3889"},"content":" predicate \u003d new NameContainsKeywordPredicate(\"Tan Alex\");","lastModifiedDate":"2024-03-15"},{"lineNumber":76,"author":{"gitId":"Javiery3889"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alex Tan\").build()));","lastModifiedDate":"2024-03-15"},{"lineNumber":77,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":78,"author":{"gitId":"Javiery3889"},"content":" // Keywords match phone, but does not match name","lastModifiedDate":"2024-03-14"},{"lineNumber":79,"author":{"gitId":"Javiery3889"},"content":" predicate \u003d new NameContainsKeywordPredicate(\"91002921\");","lastModifiedDate":"2024-03-14"},{"lineNumber":80,"author":{"gitId":"Javiery3889"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").withPhone(\"91002921\")","lastModifiedDate":"2024-03-14"},{"lineNumber":81,"author":{"gitId":"Javiery3889"},"content":" .withEmail(\"alice@email.com\").withAddress(\"MainStreet\").build()));","lastModifiedDate":"2024-03-14"},{"lineNumber":82,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":83,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":84,"author":{"gitId":"Javiery3889"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":85,"author":{"gitId":"Javiery3889"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-14"},{"lineNumber":86,"author":{"gitId":"Javiery3889"},"content":" String keyword \u003d \"Alice\";","lastModifiedDate":"2024-03-15"},{"lineNumber":87,"author":{"gitId":"Javiery3889"},"content":" NameContainsKeywordPredicate predicate \u003d new NameContainsKeywordPredicate(keyword);","lastModifiedDate":"2024-03-14"},{"lineNumber":88,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":89,"author":{"gitId":"Javiery3889"},"content":" String expected \u003d NameContainsKeywordPredicate.class.getCanonicalName() + \"{name\u003d\" + keyword + \"}\";","lastModifiedDate":"2024-03-14"},{"lineNumber":90,"author":{"gitId":"Javiery3889"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2024-03-14"},{"lineNumber":91,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":92,"author":{"gitId":"Javiery3889"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"Javiery3889":92}},{"path":"src/test/java/seedu/findvisor/model/person/NameTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.model.person;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-10"},{"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":{"KohGuanZeh":2,"-":58}},{"path":"src/test/java/seedu/findvisor/model/person/PersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.model.person;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-10"},{"lineNumber":7,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-10"},{"lineNumber":10,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-03-10"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.createValidMeeting;","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-10"},{"lineNumber":13,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-10"},{"lineNumber":14,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.TypicalPersons.BOB;","lastModifiedDate":"2024-03-10"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-11"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.testutil.PersonBuilder;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTags().remove(0));","lastModifiedDate":"2019-03-23"},{"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":"KohGuanZeh"},"content":" // same phone number, all other attributes different -\u003e returns true","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"KohGuanZeh"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"-"},"content":" .withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":43,"author":{"gitId":"KohGuanZeh"},"content":" // different phone number, all other attributes same -\u003e returns false","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"KohGuanZeh"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","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.equals(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.equals(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2018-04-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18"},{"lineNumber":85,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":86,"author":{"gitId":"Dethada"},"content":" // different meetings -\u003e returns false","lastModifiedDate":"2024-03-11"},{"lineNumber":87,"author":{"gitId":"Dethada"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withMeeting(Optional.of(createValidMeeting())).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":88,"author":{"gitId":"Dethada"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2024-03-11"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2019-02-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", address\u003d\" + ALICE.getAddress() + \", meeting\u003d\" + ALICE.getMeeting()","lastModifiedDate":"2024-02-22"},{"lineNumber":95,"author":{"gitId":"-"},"content":" + \", tags\u003d\" + ALICE.getTags() + \"}\";","lastModifiedDate":"2024-02-22"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"KohGuanZeh":14,"Dethada":6,"-":78}},{"path":"src/test/java/seedu/findvisor/model/person/PhoneContainsKeywordPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Javiery3889"},"content":"package seedu.findvisor.model.person;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"Javiery3889"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"Javiery3889"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"Javiery3889"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"Javiery3889"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"Javiery3889"},"content":"import seedu.findvisor.testutil.PersonBuilder;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"Javiery3889"},"content":"public class PhoneContainsKeywordPredicateTest {","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"Javiery3889"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"Javiery3889"},"content":" public void equals() {","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"Javiery3889"},"content":" String firstPredicateKeyword \u003d \"91234567\";","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"Javiery3889"},"content":" String secondPredicateKeyword \u003d \"84382123\";","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"Javiery3889"},"content":" PhoneContainsKeywordPredicate firstPredicate \u003d new PhoneContainsKeywordPredicate(firstPredicateKeyword);","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"Javiery3889"},"content":" PhoneContainsKeywordPredicate secondPredicate \u003d new PhoneContainsKeywordPredicate(secondPredicateKeyword);","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"Javiery3889"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"Javiery3889"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"Javiery3889"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"Javiery3889"},"content":" PhoneContainsKeywordPredicate firstPredicateCopy \u003d new PhoneContainsKeywordPredicate(firstPredicateKeyword);","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"Javiery3889"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"Javiery3889"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"Javiery3889"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"Javiery3889"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"Javiery3889"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"Javiery3889"},"content":" // different phone number -\u003e returns false","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"Javiery3889"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"Javiery3889"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"Javiery3889"},"content":" public void test_phoneContainsKeyword_returnsTrue() {","lastModifiedDate":"2024-03-15"},{"lineNumber":40,"author":{"gitId":"Javiery3889"},"content":" // Exact match","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"Javiery3889"},"content":" PhoneContainsKeywordPredicate predicate \u003d new PhoneContainsKeywordPredicate(\"91234567\");","lastModifiedDate":"2024-03-15"},{"lineNumber":42,"author":{"gitId":"Javiery3889"},"content":" assertTrue(predicate.test(new PersonBuilder().withPhone(\"91234567\").build()));","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"Javiery3889"},"content":" predicate \u003d new PhoneContainsKeywordPredicate(\"9123\");","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"Javiery3889"},"content":" assertTrue(predicate.test(new PersonBuilder().withPhone(\"91234567\").build()));","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"Javiery3889"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"Javiery3889"},"content":" public void test_phoneDoesNotContainsKeyword_returnsFalse() {","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"Javiery3889"},"content":" // Non-matching keyword","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"Javiery3889"},"content":" PhoneContainsKeywordPredicate predicate \u003d new PhoneContainsKeywordPredicate(\"91234567\");","lastModifiedDate":"2024-03-15"},{"lineNumber":52,"author":{"gitId":"Javiery3889"},"content":" assertFalse(predicate.test(new PersonBuilder().withPhone(\"84382123\").build()));","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"Javiery3889"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"Javiery3889"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"Javiery3889"},"content":" String keyword \u003d \"91234567\";","lastModifiedDate":"2024-03-15"},{"lineNumber":58,"author":{"gitId":"Javiery3889"},"content":" PhoneContainsKeywordPredicate predicate \u003d new PhoneContainsKeywordPredicate(keyword);","lastModifiedDate":"2024-03-15"},{"lineNumber":59,"author":{"gitId":"Javiery3889"},"content":" String expected \u003d PhoneContainsKeywordPredicate.class.getCanonicalName() + \"{phone\u003d\" + keyword + \"}\";","lastModifiedDate":"2024-03-15"},{"lineNumber":60,"author":{"gitId":"Javiery3889"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2024-03-14"},{"lineNumber":61,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":62,"author":{"gitId":"Javiery3889"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"Javiery3889":62}},{"path":"src/test/java/seedu/findvisor/model/person/PhoneTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.model.person;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-10"},{"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":"Arixeyeion"},"content":" assertFalse(Phone.isValidPhone(\"9123456\")); // less than 8 numbers","lastModifiedDate":"2024-03-13"},{"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":"2024-03-17"},{"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(\"93121534\"));","lastModifiedDate":"2017-01-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"Arixeyeion"},"content":" Phone phone \u003d new Phone(\"99912345\");","lastModifiedDate":"2024-03-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"Arixeyeion"},"content":" assertTrue(phone.equals(new Phone(\"99912345\")));","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertTrue(phone.equals(phone));","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"Arixeyeion"},"content":" assertFalse(phone.equals(new Phone(\"88812345\")));","lastModifiedDate":"2024-03-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"Arixeyeion":4,"KohGuanZeh":2,"-":52}},{"path":"src/test/java/seedu/findvisor/model/person/TagsContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Javiery3889"},"content":"package seedu.findvisor.model.person;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"Javiery3889"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"Javiery3889"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"Javiery3889"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"Javiery3889"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"Javiery3889"},"content":"import java.util.List;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"Javiery3889"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"Javiery3889"},"content":"import seedu.findvisor.model.tag.TagsContainsKeywordsPredicate;","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"Javiery3889"},"content":"import seedu.findvisor.testutil.PersonBuilder;","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"Javiery3889"},"content":"public class TagsContainsKeywordsPredicateTest {","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"Javiery3889"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"Javiery3889"},"content":" public void equals() {","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"Javiery3889"},"content":" List\u003cString\u003e firstPredicateKeywords \u003d Arrays.asList(new String[]{\"tag1\"});","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"Javiery3889"},"content":" List\u003cString\u003e secondPredicateKeywords \u003d Arrays.asList(new String[]{\"tag2\", \"tag3\"});","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"Javiery3889"},"content":" TagsContainsKeywordsPredicate firstPredicate \u003d new TagsContainsKeywordsPredicate(firstPredicateKeywords);","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"Javiery3889"},"content":" TagsContainsKeywordsPredicate secondPredicate \u003d new TagsContainsKeywordsPredicate(secondPredicateKeywords);","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"Javiery3889"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"Javiery3889"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"Javiery3889"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"Javiery3889"},"content":" TagsContainsKeywordsPredicate firstPredicateCopy \u003d new TagsContainsKeywordsPredicate(firstPredicateKeywords);","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"Javiery3889"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"Javiery3889"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"Javiery3889"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"Javiery3889"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"Javiery3889"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"Javiery3889"},"content":" // different tags-\u003e returns false","lastModifiedDate":"2024-03-15"},{"lineNumber":39,"author":{"gitId":"Javiery3889"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"Javiery3889"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"Javiery3889"},"content":" public void test_tagsContainsKeywords_returnsTrue() {","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"Javiery3889"},"content":" // single tag","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"Javiery3889"},"content":" TagsContainsKeywordsPredicate predicate \u003d new TagsContainsKeywordsPredicate(","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"Javiery3889"},"content":" Arrays.asList(new String[]{\"friends\"}));","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"Javiery3889"},"content":" assertTrue(predicate.test(new PersonBuilder().withTags(\"friends\").build()));","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"Javiery3889"},"content":" // keyword is a substring","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"Javiery3889"},"content":" predicate \u003d new TagsContainsKeywordsPredicate(Arrays.asList(new String[]{\"pru\"}));","lastModifiedDate":"2024-03-15"},{"lineNumber":51,"author":{"gitId":"Javiery3889"},"content":" assertTrue(predicate.test(new PersonBuilder().withTags(\"PRUActive\", \"PRUEssential\").build()));","lastModifiedDate":"2024-03-15"},{"lineNumber":52,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"Javiery3889"},"content":" // multiple tags","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"Javiery3889"},"content":" predicate \u003d new TagsContainsKeywordsPredicate(Arrays.asList(new String[]{\"friends\", \"husband\"}));","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"Javiery3889"},"content":" assertTrue(predicate.test(new PersonBuilder().withTags(\"friends\", \"husband\", \"wife\").build()));","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":58,"author":{"gitId":"Javiery3889"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"Javiery3889"},"content":" public void test_tagsDoesNotContainsKeywords_returnsFalse() {","lastModifiedDate":"2024-03-15"},{"lineNumber":60,"author":{"gitId":"Javiery3889"},"content":" // Non-matching keywords","lastModifiedDate":"2024-03-14"},{"lineNumber":61,"author":{"gitId":"Javiery3889"},"content":" TagsContainsKeywordsPredicate predicate \u003d new TagsContainsKeywordsPredicate(","lastModifiedDate":"2024-03-14"},{"lineNumber":62,"author":{"gitId":"Javiery3889"},"content":" Arrays.asList(new String[]{\"basketball\", \"football\"}));","lastModifiedDate":"2024-03-14"},{"lineNumber":63,"author":{"gitId":"Javiery3889"},"content":" assertFalse(predicate.test(new PersonBuilder().withTags(\"friends\", \"husband\", \"wife\").build()));","lastModifiedDate":"2024-03-14"},{"lineNumber":64,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":65,"author":{"gitId":"Javiery3889"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":66,"author":{"gitId":"Javiery3889"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":67,"author":{"gitId":"Javiery3889"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"Javiery3889"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(new String[]{\"exampleTag1, exampleTag2\"});","lastModifiedDate":"2024-03-14"},{"lineNumber":69,"author":{"gitId":"Javiery3889"},"content":" TagsContainsKeywordsPredicate predicate \u003d new TagsContainsKeywordsPredicate(keywords);","lastModifiedDate":"2024-03-14"},{"lineNumber":70,"author":{"gitId":"Javiery3889"},"content":" String expected \u003d TagsContainsKeywordsPredicate.class.getCanonicalName()","lastModifiedDate":"2024-03-14"},{"lineNumber":71,"author":{"gitId":"Javiery3889"},"content":" + \"{tags\u003d\" + keywords.toString() + \"}\";","lastModifiedDate":"2024-03-14"},{"lineNumber":72,"author":{"gitId":"Javiery3889"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2024-03-14"},{"lineNumber":73,"author":{"gitId":"Javiery3889"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":74,"author":{"gitId":"Javiery3889"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"Javiery3889":74}},{"path":"src/test/java/seedu/findvisor/model/person/UniquePersonListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.model.person;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-10"},{"lineNumber":7,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-10"},{"lineNumber":10,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.TypicalPersons.BOB;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2024-03-10"},{"lineNumber":19,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.exceptions.PersonNotFoundException;","lastModifiedDate":"2024-03-10"},{"lineNumber":20,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.testutil.PersonBuilder;","lastModifiedDate":"2024-03-10"},{"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":"-"},"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":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2018-08-08"},{"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":{"KohGuanZeh":9,"-":166}},{"path":"src/test/java/seedu/findvisor/model/tag/TagTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.model.tag;","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":3,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Tag(null));","lastModifiedDate":"2019-03-14"},{"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":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Tag(invalidTagName));","lastModifiedDate":"2019-03-14"},{"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":{"KohGuanZeh":2,"-":24}},{"path":"src/test/java/seedu/findvisor/storage/JsonAdaptedMeetingTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Dethada"},"content":"package seedu.findvisor.storage;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"Dethada"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"Dethada"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.commons.util.DateTimeUtil.parseDateTimeString;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.INVALID_MEETING_END_STR;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.INVALID_MEETING_REMARK;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.INVALID_MEETING_START_STR;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_MEETING_END_STR;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_MEETING_REMARK;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_MEETING_START_STR;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"Dethada"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.model.person.Meeting;","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":"public class JsonAdaptedMeetingTest {","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"Dethada"},"content":" public void toModelType_validMeeting_returnsOptionalMeeting() throws Exception {","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"Dethada"},"content":" JsonAdaptedMeeting jsonMeeting \u003d new JsonAdaptedMeeting(VALID_MEETING_START_STR,","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"Dethada"},"content":" VALID_MEETING_END_STR, VALID_MEETING_REMARK);","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"Dethada"},"content":" Meeting meeting \u003d new Meeting(parseDateTimeString(VALID_MEETING_START_STR),","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"Dethada"},"content":" parseDateTimeString(VALID_MEETING_END_STR), VALID_MEETING_REMARK);","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"Dethada"},"content":" assertEquals(meeting, jsonMeeting.toModelType().get());","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"Dethada"},"content":" public void toModelType_invalidDateTimeFormat_throwsIllegalValueException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"Dethada"},"content":" JsonAdaptedMeeting meeting \u003d new JsonAdaptedMeeting(INVALID_MEETING_START_STR,","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"Dethada"},"content":" INVALID_MEETING_END_STR, VALID_MEETING_REMARK);","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"Dethada"},"content":" String expectedMessage \u003d Meeting.MESSAGE_DATETIME_CONSTRAINTS;","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"Dethada"},"content":" assertThrows(IllegalValueException.class, expectedMessage, meeting::toModelType);","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"Dethada"},"content":" meeting \u003d new JsonAdaptedMeeting(VALID_MEETING_START_STR, INVALID_MEETING_END_STR, VALID_MEETING_REMARK);","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":" assertThrows(IllegalValueException.class, expectedMessage, meeting::toModelType);","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"Dethada"},"content":" meeting \u003d new JsonAdaptedMeeting(INVALID_MEETING_START_STR, VALID_MEETING_END_STR, VALID_MEETING_REMARK);","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"Dethada"},"content":" assertThrows(IllegalValueException.class, expectedMessage, meeting::toModelType);","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"Dethada"},"content":" public void toModelType_endDateTimeBeforeStart_throwsIllegalValueException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"Dethada"},"content":" JsonAdaptedMeeting meeting \u003d new JsonAdaptedMeeting(VALID_MEETING_END_STR,","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"Dethada"},"content":" VALID_MEETING_START_STR, VALID_MEETING_REMARK);","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"Dethada"},"content":" String expectedMessage \u003d Meeting.MESSAGE_DATETIME_CONSTRAINTS;","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"Dethada"},"content":" assertThrows(IllegalValueException.class, expectedMessage, meeting::toModelType);","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"Dethada"},"content":" public void toModelType_emptyString_returnsEmptyOptionalMeeting() throws Exception {","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"Dethada"},"content":" JsonAdaptedMeeting meeting \u003d new JsonAdaptedMeeting(\"\", \"\", VALID_MEETING_REMARK);","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"Dethada"},"content":" assertEquals(meeting.toModelType(), Optional.empty());","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"Dethada"},"content":" meeting \u003d new JsonAdaptedMeeting(VALID_MEETING_START_STR, \"\", VALID_MEETING_REMARK);","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"Dethada"},"content":" assertEquals(meeting.toModelType(), Optional.empty());","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"Dethada"},"content":" meeting \u003d new JsonAdaptedMeeting(\"\", VALID_MEETING_END_STR, VALID_MEETING_REMARK);","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"Dethada"},"content":" assertEquals(meeting.toModelType(), Optional.empty());","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":66,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"Dethada"},"content":" public void toModelType_validMeetingEmptyRemark_returnsOptionalMeeting() throws Exception {","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"Dethada"},"content":" JsonAdaptedMeeting jsonMeeting \u003d new JsonAdaptedMeeting(VALID_MEETING_START_STR,","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"Dethada"},"content":" VALID_MEETING_END_STR, \"\");","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"Dethada"},"content":" Meeting meeting \u003d new Meeting(parseDateTimeString(VALID_MEETING_START_STR),","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"Dethada"},"content":" parseDateTimeString(VALID_MEETING_END_STR), \"\");","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"Dethada"},"content":" assertEquals(meeting, jsonMeeting.toModelType().get());","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"Dethada"},"content":" public void toModelType_invalidRemark_throwsIllegalValueException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"Dethada"},"content":" JsonAdaptedMeeting meeting \u003d new JsonAdaptedMeeting(VALID_MEETING_START_STR,","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"Dethada"},"content":" VALID_MEETING_END_STR, INVALID_MEETING_REMARK);","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"Dethada"},"content":" String expectedMessage \u003d Meeting.MESSAGE_REMARK_CONSTRAINTS;","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"Dethada"},"content":" assertThrows(IllegalValueException.class, expectedMessage, meeting::toModelType);","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":84,"author":{"gitId":"Dethada"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"Dethada"},"content":" assertThrows(NullPointerException.class, () -\u003e new JsonAdaptedMeeting((Optional\u003cMeeting\u003e) null));","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"Dethada"},"content":" public void constructor_emptyMeeting() throws Exception {","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"Dethada"},"content":" JsonAdaptedMeeting jsonMeeting \u003d new JsonAdaptedMeeting(Optional.empty());","lastModifiedDate":"2024-03-19"},{"lineNumber":91,"author":{"gitId":"Dethada"},"content":" JsonAdaptedMeeting expectedJsonMeeting \u003d new JsonAdaptedMeeting(\"\", \"\", \"\");","lastModifiedDate":"2024-03-19"},{"lineNumber":92,"author":{"gitId":"Dethada"},"content":" assertEquals(jsonMeeting, expectedJsonMeeting);","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":95,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"Dethada"},"content":" public void constructor_validMeeting() throws Exception {","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"Dethada"},"content":" Meeting meeting \u003d new Meeting(parseDateTimeString(VALID_MEETING_START_STR),","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"Dethada"},"content":" parseDateTimeString(VALID_MEETING_END_STR), VALID_MEETING_REMARK);","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"Dethada"},"content":" JsonAdaptedMeeting jsonMeeting \u003d new JsonAdaptedMeeting(Optional.of(meeting));","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"Dethada"},"content":" JsonAdaptedMeeting expectedJsonMeeting \u003d new JsonAdaptedMeeting(VALID_MEETING_START_STR,","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"Dethada"},"content":" VALID_MEETING_END_STR, VALID_MEETING_REMARK);","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"Dethada"},"content":" assertEquals(jsonMeeting, expectedJsonMeeting);","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":106,"author":{"gitId":"Dethada"},"content":" public void equals() {","lastModifiedDate":"2024-03-19"},{"lineNumber":107,"author":{"gitId":"Dethada"},"content":" JsonAdaptedMeeting meeting \u003d new JsonAdaptedMeeting(VALID_MEETING_START_STR,","lastModifiedDate":"2024-03-19"},{"lineNumber":108,"author":{"gitId":"Dethada"},"content":" VALID_MEETING_END_STR, VALID_MEETING_REMARK);","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":110,"author":{"gitId":"Dethada"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":111,"author":{"gitId":"Dethada"},"content":" assertTrue(meeting.equals(new JsonAdaptedMeeting(VALID_MEETING_START_STR,","lastModifiedDate":"2024-03-19"},{"lineNumber":112,"author":{"gitId":"Dethada"},"content":" VALID_MEETING_END_STR, VALID_MEETING_REMARK)));","lastModifiedDate":"2024-03-19"},{"lineNumber":113,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":114,"author":{"gitId":"Dethada"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":115,"author":{"gitId":"Dethada"},"content":" assertTrue(meeting.equals(meeting));","lastModifiedDate":"2024-03-19"},{"lineNumber":116,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":117,"author":{"gitId":"Dethada"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":118,"author":{"gitId":"Dethada"},"content":" assertFalse(meeting.equals(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":119,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":120,"author":{"gitId":"Dethada"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":121,"author":{"gitId":"Dethada"},"content":" assertFalse(meeting.equals(1));","lastModifiedDate":"2024-03-19"},{"lineNumber":122,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":123,"author":{"gitId":"Dethada"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":124,"author":{"gitId":"Dethada"},"content":" assertFalse(meeting.equals(new JsonAdaptedMeeting(\"12-02-2025T12:00\",","lastModifiedDate":"2024-03-19"},{"lineNumber":125,"author":{"gitId":"Dethada"},"content":" \"12-02-2025T13:00\", VALID_MEETING_REMARK)));","lastModifiedDate":"2024-03-19"},{"lineNumber":126,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":127,"author":{"gitId":"Dethada"},"content":" // different remark -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":128,"author":{"gitId":"Dethada"},"content":" assertFalse(meeting.equals(new JsonAdaptedMeeting(VALID_MEETING_START_STR,","lastModifiedDate":"2024-03-19"},{"lineNumber":129,"author":{"gitId":"Dethada"},"content":" VALID_MEETING_END_STR, \"Different remark\")));","lastModifiedDate":"2024-03-19"},{"lineNumber":130,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":131,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":132,"author":{"gitId":"Dethada"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"Dethada":132}},{"path":"src/test/java/seedu/findvisor/storage/JsonAdaptedPersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.storage;","lastModifiedDate":"2024-03-10"},{"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":"Dethada"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.INVALID_MEETING_REMARK;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_MEETING_END_STR;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_MEETING_REMARK;","lastModifiedDate":"2024-03-24"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_MEETING_START_STR;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-10"},{"lineNumber":10,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2024-03-10"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-10"},{"lineNumber":19,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Address;","lastModifiedDate":"2024-03-10"},{"lineNumber":20,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Email;","lastModifiedDate":"2024-03-10"},{"lineNumber":21,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.model.person.Meeting;","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Name;","lastModifiedDate":"2024-03-10"},{"lineNumber":23,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Phone;","lastModifiedDate":"2024-03-10"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final JsonAdaptedMeeting VALID_MEETING \u003d new JsonAdaptedMeeting(BENSON.getMeeting());","lastModifiedDate":"2024-02-22"},{"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":"-"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_MEETING, VALID_TAGS);","lastModifiedDate":"2024-02-22"},{"lineNumber":51,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-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 toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-02-22"},{"lineNumber":58,"author":{"gitId":"-"},"content":" VALID_MEETING, VALID_TAGS);","lastModifiedDate":"2024-02-22"},{"lineNumber":59,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-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 toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_MEETING, VALID_TAGS);","lastModifiedDate":"2024-02-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-02-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":" VALID_MEETING, VALID_TAGS);","lastModifiedDate":"2024-02-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","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_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_ADDRESS, VALID_MEETING, VALID_TAGS);","lastModifiedDate":"2024-02-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.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":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null, VALID_ADDRESS,","lastModifiedDate":"2024-02-22"},{"lineNumber":90,"author":{"gitId":"-"},"content":" VALID_MEETING, VALID_TAGS);","lastModifiedDate":"2024-02-22"},{"lineNumber":91,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"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_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_ADDRESS, VALID_MEETING, VALID_TAGS);","lastModifiedDate":"2024-02-22"},{"lineNumber":99,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"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_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, null,","lastModifiedDate":"2024-02-22"},{"lineNumber":106,"author":{"gitId":"-"},"content":" VALID_MEETING, VALID_TAGS);","lastModifiedDate":"2024-02-22"},{"lineNumber":107,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"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 toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_MEETING, invalidTags);","lastModifiedDate":"2024-02-22"},{"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":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":121,"author":{"gitId":"Dethada"},"content":" public void toModelType_nullMeeting_throwsIllegalValueException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":122,"author":{"gitId":"Dethada"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-11"},{"lineNumber":123,"author":{"gitId":"Dethada"},"content":" null, VALID_TAGS);","lastModifiedDate":"2024-03-11"},{"lineNumber":124,"author":{"gitId":"Dethada"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Meeting.class.getSimpleName());","lastModifiedDate":"2024-03-11"},{"lineNumber":125,"author":{"gitId":"Dethada"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-11"},{"lineNumber":126,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":127,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":128,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":129,"author":{"gitId":"Dethada"},"content":" public void toModelType_invalidMeetingDateTime_throwsIllegalValueException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":130,"author":{"gitId":"Dethada"},"content":" JsonAdaptedMeeting invalidMeeting \u003d new JsonAdaptedMeeting(\"INVALID_START\",","lastModifiedDate":"2024-03-19"},{"lineNumber":131,"author":{"gitId":"Dethada"},"content":" \"INVALID_END\", VALID_MEETING_REMARK);","lastModifiedDate":"2024-03-24"},{"lineNumber":132,"author":{"gitId":"Dethada"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-11"},{"lineNumber":133,"author":{"gitId":"Dethada"},"content":" invalidMeeting, VALID_TAGS);","lastModifiedDate":"2024-03-11"},{"lineNumber":134,"author":{"gitId":"Dethada"},"content":" String expectedMessage \u003d Meeting.MESSAGE_DATETIME_CONSTRAINTS;","lastModifiedDate":"2024-03-19"},{"lineNumber":135,"author":{"gitId":"Dethada"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-11"},{"lineNumber":136,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":137,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":138,"author":{"gitId":"Dethada"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":139,"author":{"gitId":"Dethada"},"content":" public void toModelType_invalidMeetingRemark_throwsIllegalValueException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":140,"author":{"gitId":"Dethada"},"content":" JsonAdaptedMeeting invalidMeeting \u003d new JsonAdaptedMeeting(VALID_MEETING_START_STR,","lastModifiedDate":"2024-03-19"},{"lineNumber":141,"author":{"gitId":"Dethada"},"content":" VALID_MEETING_END_STR, INVALID_MEETING_REMARK);","lastModifiedDate":"2024-03-19"},{"lineNumber":142,"author":{"gitId":"Dethada"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-19"},{"lineNumber":143,"author":{"gitId":"Dethada"},"content":" invalidMeeting, VALID_TAGS);","lastModifiedDate":"2024-03-19"},{"lineNumber":144,"author":{"gitId":"Dethada"},"content":" String expectedMessage \u003d Meeting.MESSAGE_REMARK_CONSTRAINTS;","lastModifiedDate":"2024-03-19"},{"lineNumber":145,"author":{"gitId":"Dethada"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-19"},{"lineNumber":146,"author":{"gitId":"Dethada"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":147,"author":{"gitId":"Dethada"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":148,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"KohGuanZeh":9,"Dethada":33,"-":106}},{"path":"src/test/java/seedu/findvisor/storage/JsonAddressBookStorageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.storage;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-10"},{"lineNumber":6,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-10"},{"lineNumber":7,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.TypicalPersons.HOON;","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.TypicalPersons.IDA;","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-10"},{"lineNumber":19,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.AddressBook;","lastModifiedDate":"2024-03-10"},{"lineNumber":20,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" public void readAddressBook_invalidPersonAddressBook_throwDataLoadingException() {","lastModifiedDate":"2023-06-14"},{"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":"-"},"content":" public void readAddressBook_invalidAndValidPersonAddressBook_throwDataLoadingException() {","lastModifiedDate":"2023-06-14"},{"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":"-"},"content":" original.addPerson(HOON);","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" original.removePerson(ALICE);","lastModifiedDate":"2018-08-13"},{"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":"-"},"content":" original.addPerson(IDA);","lastModifiedDate":"2018-08-13"},{"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":{"KohGuanZeh":9,"-":101}},{"path":"src/test/java/seedu/findvisor/storage/JsonSerializableAddressBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.storage;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.commons.util.JsonUtil;","lastModifiedDate":"2024-03-10"},{"lineNumber":13,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.AddressBook;","lastModifiedDate":"2024-03-10"},{"lineNumber":14,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.testutil.TypicalPersons;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" AddressBook addressBookFromFile \u003d dataFromFile.toModelType();","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" AddressBook typicalPersonsAddressBook \u003d TypicalPersons.getTypicalAddressBook();","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertEquals(addressBookFromFile, typicalPersonsAddressBook);","lastModifiedDate":"2018-08-13"},{"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":"-"},"content":" public void toModelType_invalidPersonFile_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2018-08-13"},{"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":"-"},"content":" public void toModelType_duplicatePersons_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2018-08-13"},{"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":"-"},"content":" assertThrows(IllegalValueException.class, JsonSerializableAddressBook.MESSAGE_DUPLICATE_PERSON,","lastModifiedDate":"2019-03-23"},{"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":{"KohGuanZeh":6,"-":41}},{"path":"src/test/java/seedu/findvisor/storage/JsonUserPrefsStorageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.storage;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.GuiSettings;","lastModifiedDate":"2024-03-10"},{"lineNumber":16,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-10"},{"lineNumber":17,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.UserPrefs;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"addressbook.json\"));","lastModifiedDate":"2018-11-27"},{"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":{"KohGuanZeh":5,"-":118}},{"path":"src/test/java/seedu/findvisor/storage/StorageManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.storage;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.GuiSettings;","lastModifiedDate":"2024-03-10"},{"lineNumber":14,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.AddressBook;","lastModifiedDate":"2024-03-10"},{"lineNumber":15,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-10"},{"lineNumber":16,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.UserPrefs;","lastModifiedDate":"2024-03-10"},{"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":{"KohGuanZeh":6,"-":62}},{"path":"src/test/java/seedu/findvisor/testutil/AddressBookBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.testutil;","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.AddressBook;","lastModifiedDate":"2024-03-10"},{"lineNumber":4,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Person;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" * {@code AddressBook ab \u003d new AddressBookBuilder().withPerson(\"John\", \"Doe\").build();}","lastModifiedDate":"2018-03-29"},{"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":"-"},"content":" * Adds a new {@code Person} to the {@code AddressBook} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public AddressBookBuilder withPerson(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":27,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2016-09-01"},{"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":{"KohGuanZeh":3,"-":31}},{"path":"src/test/java/seedu/findvisor/testutil/Assert.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.testutil;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" Assertions.assertEquals(expectedMessage, thrownException.getMessage());","lastModifiedDate":"2019-03-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-17"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-07-17"}],"authorContributionMap":{"KohGuanZeh":1,"-":33}},{"path":"src/test/java/seedu/findvisor/testutil/EditPersonDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.testutil;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Address;","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Email;","lastModifiedDate":"2024-03-10"},{"lineNumber":10,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Name;","lastModifiedDate":"2024-03-10"},{"lineNumber":11,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Person;","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Phone;","lastModifiedDate":"2024-03-10"},{"lineNumber":13,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.tag.Tag;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" descriptor.setAddress(person.getAddress());","lastModifiedDate":"2017-06-21"},{"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":"-"},"content":" public EditPersonDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"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":"-"},"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":{"KohGuanZeh":8,"-":79}},{"path":"src/test/java/seedu/findvisor/testutil/PersonBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.testutil;","lastModifiedDate":"2024-03-10"},{"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.Optional;","lastModifiedDate":"2024-02-22"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Address;","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Email;","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.model.person.Meeting;","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Name;","lastModifiedDate":"2024-03-10"},{"lineNumber":11,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Person;","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Phone;","lastModifiedDate":"2024-03-10"},{"lineNumber":13,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.tag.Tag;","lastModifiedDate":"2024-03-10"},{"lineNumber":14,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.util.SampleDataUtil;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05"},{"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":"-"},"content":" private Optional\u003cMeeting\u003e meeting;","lastModifiedDate":"2024-02-22"},{"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":"-"},"content":" meeting \u003d Optional.empty();","lastModifiedDate":"2024-02-22"},{"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":"-"},"content":" meeting \u003d personToCopy.getMeeting();","lastModifiedDate":"2024-02-22"},{"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":"-"},"content":" /**","lastModifiedDate":"2024-02-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * Sets the {@code Meeting} of the {@code Person} that we are building.","lastModifiedDate":"2024-02-22"},{"lineNumber":99,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-22"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public PersonBuilder withMeeting(Optional\u003cMeeting\u003e meeting) {","lastModifiedDate":"2024-02-22"},{"lineNumber":101,"author":{"gitId":"-"},"content":" this.meeting \u003d meeting;","lastModifiedDate":"2024-02-22"},{"lineNumber":102,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2024-02-22"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-22"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-22"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05"},{"lineNumber":106,"author":{"gitId":"-"},"content":" return new Person(name, phone, email, address, tags, meeting);","lastModifiedDate":"2024-02-22"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":109,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03"}],"authorContributionMap":{"KohGuanZeh":8,"Dethada":1,"-":100}},{"path":"src/test/java/seedu/findvisor/testutil/PersonUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.testutil;","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":3,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-10"},{"lineNumber":4,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-10"},{"lineNumber":5,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-10"},{"lineNumber":6,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-10"},{"lineNumber":7,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-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":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.AddCommand;","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-10"},{"lineNumber":13,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Person;","lastModifiedDate":"2024-03-10"},{"lineNumber":14,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.tag.Tag;","lastModifiedDate":"2024-03-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":"-"},"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":{"KohGuanZeh":10,"-":52}},{"path":"src/test/java/seedu/findvisor/testutil/SerializableTestClass.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.testutil;","lastModifiedDate":"2024-03-10"},{"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":{"KohGuanZeh":1,"-":71}},{"path":"src/test/java/seedu/findvisor/testutil/TestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.testutil;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.index.Index;","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.Model;","lastModifiedDate":"2024-03-10"},{"lineNumber":10,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Person;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" return Index.fromOneBased(model.getFilteredPersonList().size() / 2);","lastModifiedDate":"2018-08-13"},{"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":"-"},"content":" return Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2018-08-13"},{"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":"-"},"content":" public static Person getPerson(Model model, Index index) {","lastModifiedDate":"2018-01-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList().get(index.getZeroBased());","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30"},{"lineNumber":55,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"KohGuanZeh":4,"-":51}},{"path":"src/test/java/seedu/findvisor/testutil/TypicalIndexes.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.testutil;","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":3,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.commons.core.index.Index;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":"}","lastModifiedDate":"2017-08-05"}],"authorContributionMap":{"KohGuanZeh":2,"-":10}},{"path":"src/test/java/seedu/findvisor/testutil/TypicalPersons.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.testutil;","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":3,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2024-03-10"},{"lineNumber":4,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-10"},{"lineNumber":5,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-03-10"},{"lineNumber":6,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-10"},{"lineNumber":7,"author":{"gitId":"Dethada"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_MEETING_REMARK;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-10"},{"lineNumber":10,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-03-10"},{"lineNumber":11,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2024-03-10"},{"lineNumber":13,"author":{"gitId":"KohGuanZeh"},"content":"import static seedu.findvisor.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-03-10"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":15,"author":{"gitId":"Dethada"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-03-12"},{"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":"Dethada"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07"},{"lineNumber":21,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.AddressBook;","lastModifiedDate":"2024-03-10"},{"lineNumber":22,"author":{"gitId":"Dethada"},"content":"import seedu.findvisor.model.person.Meeting;","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"KohGuanZeh"},"content":"import seedu.findvisor.model.person.Person;","lastModifiedDate":"2024-03-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":"-"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2017-04-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2018-04-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":" .withTags(\"friends\").build();","lastModifiedDate":"2016-09-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2017-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2017-04-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" .withTags(\"owesMoney\", \"friends\").build();","lastModifiedDate":"2016-09-13"},{"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":"Dethada"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\")","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"Dethada"},"content":" .withMeeting(Optional.of(new Meeting(","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"Dethada"},"content":" LocalDateTime.of(2024, 3, 12, 14, 0, 0),","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"Dethada"},"content":" LocalDateTime.of(2024, 3, 12, 15, 0, 0),","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"Dethada"},"content":" VALID_MEETING_REMARK))).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2018-01-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\").withTags(\"friends\").build();","lastModifiedDate":"2018-03-26"},{"lineNumber":46,"author":{"gitId":"Arixeyeion"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withPhone(\"94822247\")","lastModifiedDate":"2024-03-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":48,"author":{"gitId":"Arixeyeion"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withPhone(\"94824276\")","lastModifiedDate":"2024-03-15"},{"lineNumber":49,"author":{"gitId":"-"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":50,"author":{"gitId":"Arixeyeion"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withPhone(\"94824428\")","lastModifiedDate":"2024-03-15"},{"lineNumber":51,"author":{"gitId":"-"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":54,"author":{"gitId":"Arixeyeion"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"84824247\")","lastModifiedDate":"2024-03-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":56,"author":{"gitId":"Arixeyeion"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"84821318\")","lastModifiedDate":"2024-03-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2018-01-10"},{"lineNumber":61,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-09-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2018-01-10"},{"lineNumber":63,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2017-09-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2017-09-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05"},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10"},{"lineNumber":76,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04"},{"lineNumber":84,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13"}],"authorContributionMap":{"Arixeyeion":5,"KohGuanZeh":13,"Dethada":9,"-":57}},{"path":"src/test/java/seedu/findvisor/ui/TestFxmlObject.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.ui;","lastModifiedDate":"2024-03-10"},{"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":{"KohGuanZeh":1,"-":44}},{"path":"src/test/java/seedu/findvisor/ui/UiPartTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"KohGuanZeh"},"content":"package seedu.findvisor.ui;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import static seedu.findvisor.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-10"},{"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":"KohGuanZeh"},"content":"import seedu.findvisor.MainApp;","lastModifiedDate":"2024-03-10"},{"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":"2019-03-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new TestUiPart\u003cObject\u003e((URL) null, new Object()));","lastModifiedDate":"2019-03-14"},{"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":"2019-03-14"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertThrows(AssertionError.class, () -\u003e new TestUiPart\u003cObject\u003e(missingFileUrl, new Object()));","lastModifiedDate":"2019-03-14"},{"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":"2019-03-14"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertThrows(AssertionError.class, () -\u003e new TestUiPart\u003cObject\u003e(invalidFileUrl, new Object()));","lastModifiedDate":"2019-03-14"},{"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":"2019-03-14"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new TestUiPart\u003cObject\u003e((String) null, new Object()));","lastModifiedDate":"2019-03-14"},{"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":"2019-03-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new TestUiPart\u003cObject\u003e(MISSING_FILE_PATH, new Object()));","lastModifiedDate":"2019-03-14"},{"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":"2019-03-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertThrows(AssertionError.class, () -\u003e new TestUiPart\u003cObject\u003e(INVALID_FILE_PATH, new Object()));","lastModifiedDate":"2019-03-14"},{"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":{"KohGuanZeh":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":"KohGuanZeh"},"content":"\u003c?import seedu.findvisor.ui.TestFxmlObject?\u003e","lastModifiedDate":"2024-03-10"},{"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":{"KohGuanZeh":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":"KohGuanZeh"},"content":"\u003cfx:root type\u003d\"seedu.findvisor.ui.TestFxmlObject\" xmlns\u003d\"http://javafx.com/javafx/17\"","lastModifiedDate":"2024-03-10"},{"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":{"KohGuanZeh":1,"-":5}}] diff --git a/AY2324S2-CS2103-F15-1_tp_master/commits.json b/AY2324S2-CS2103-F15-1_tp_master/commits.json index 4ba4b26c..554ca82e 100644 --- a/AY2324S2-CS2103-F15-1_tp_master/commits.json +++ b/AY2324S2-CS2103-F15-1_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Arixeyeion":[{"date":"2024-02-26","commitResults":[{"hash":"c71297576c3f2488722d54627cb90af3b6c084e1","isMergeCommit":false,"messageTitle":"Update personal entry on about us page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":5}}},{"hash":"23d4d7357bd04d3c1fe655b153dc1f259b976110","isMergeCommit":false,"messageTitle":"Update NFRs in DG to match TP constraints exhaustively","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":2}}},{"hash":"9a71d3d5615f8a071e43a63ce56e1d911d522949","isMergeCommit":false,"messageTitle":"Update add and delete contact functionality in user guide to align with expected final product delivery","messageBody":"Adapt user guide from addressbook to FINDvisor\n","fileTypesAndContributionMap":{"docs":{"insertions":25,"deletions":19}}},{"hash":"e2731b347f7b362a28f298772fd3d94aa4f745d4","isMergeCommit":false,"messageTitle":"Correct self image name to lower case","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-02-27","commitResults":[{"hash":"7154f812c8fd97be2fe9841e3e0b68155e29a688","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-individual-aboutus-entry","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"870306568b5bdef5735c28973d0be1e7a869a25a","isMergeCommit":false,"messageTitle":"Add line to AboutUs to fix EOF error","messageBody":"Remove picture to rename to lower case\n","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"3d9a739280d2de2f9965cbc32124d89811414445","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-dg-nfrs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"6661c8a1fd392727f1bd97621ced21aa19734b71","isMergeCommit":false,"messageTitle":"Remove unwanted line from dg","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":2}}},{"hash":"dfe70b62f18cb86db84672c74ba02d51eebc5bcb","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-ug-and-adapt","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"89e5866d60691e09a42be8657893dac96b1b30b1","isMergeCommit":false,"messageTitle":"Correct FINDVisor to FINDvisor in UG for consistency","messageBody":"Correct gramatical errors pertaining to updates done on UG in prior commit\n","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":8}}},{"hash":"c0dd727bff040b9efff0542def9b418d7e74163f","isMergeCommit":false,"messageTitle":"Add 1 more NFR based on generated user stories","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}}]},{"date":"2024-02-28","commitResults":[{"hash":"63197f0e01e2dfee6bacae604818656ce4eb98db","isMergeCommit":true,"messageTitle":"Merge pull request #49 from Arixeyeion/update-individual-aboutus-entry","messageBody":"Update individual about us entry","fileTypesAndContributionMap":{}}]},{"date":"2024-03-01","commitResults":[{"hash":"7f640fd06b4bdc1ffa9330a356585b3b0ebcfd76","isMergeCommit":true,"messageTitle":"Merge pull request #50 from Arixeyeion/update-ug-and-adapt","messageBody":"Updated add and delete commands. Adapted UG to FINDvisor.","fileTypesAndContributionMap":{}},{"hash":"4123280b92e0c456daef88b0226314482606a157","isMergeCommit":true,"messageTitle":"Merge pull request #51 from Arixeyeion/update-dg-nfrs","messageBody":"Update NFRs in DG to match TP constraints exhaustively","fileTypesAndContributionMap":{}}]},{"date":"2024-03-13","commitResults":[{"hash":"95a755447c7b79833950b54f6888f0bbea8a1f39","isMergeCommit":false,"messageTitle":"Update phone and name parsing logic","messageBody":"FINDvisor aims to support fast typing. To aid this, the name and\nphone number now allows the input to have multiple spaces in\nbetween characters, in case the user is careless.\n\nPhone numbers are now constrained to Singaporean mobile numbers to\nfit the target user group of FINDvisor.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":4},"test-code":{"insertions":4,"deletions":4}}}]},{"date":"2024-03-15","commitResults":[{"hash":"667d9f07890f7d8027bd21d411401f70c1a591dd","isMergeCommit":false,"messageTitle":"Fix formatting error flagged by checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"44923e0cdb372df2b2381edb87a3d73df924fe90","isMergeCommit":false,"messageTitle":"Update test cases to match new phone number constraints","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":21,"deletions":14}}}]},{"date":"2024-03-16","commitResults":[{"hash":"f06e1944b540259037dc6beaf264218cb5fd22e0","isMergeCommit":false,"messageTitle":"Update error message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"a6faabf01b0f1b355a20c1108a125d1813592adc","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-phone-and-name-parsing","messageBody":"# Conflicts:\n#\tsrc/test/java/seedu/findvisor/model/person/NameContainsKeywordsPredicateTest.java\n","fileTypesAndContributionMap":{}},{"hash":"3e9904f09e6c8284ad813faeaf2dabece7876f54","isMergeCommit":false,"messageTitle":"Fix conflicts with prior test cases","messageBody":"Delete unwanted file from prior merge to prevent recurrence\nin future merges and changed test case to accomodate phone number\nformat.\n","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":86}}}]},{"date":"2024-03-17","commitResults":[{"hash":"4a45c40223221c0a7eaf05c2b03bd354abb2e0f2","isMergeCommit":false,"messageTitle":"Update test cases for phone, name and parserutil","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":16,"deletions":2}}},{"hash":"7357de8c91de816a58ad26bb1af5904f2c40989c","isMergeCommit":true,"messageTitle":"Merge pull request #73 from Arixeyeion/update-phone-and-name-parsing","messageBody":"Update phone and name parsing logic","fileTypesAndContributionMap":{}}]},{"date":"2024-03-19","commitResults":[{"hash":"32b4681a9b9688b8e9a460842044e205afb2c3b0","isMergeCommit":false,"messageTitle":"Update title bar text to FINDvisor","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4}}},{"hash":"a606c959cb2b1fee044633cbb40580237d115644","isMergeCommit":true,"messageTitle":"Merge pull request #103 from Arixeyeion/update-titlebar","messageBody":"Update title bar text to FINDvisor","fileTypesAndContributionMap":{}}]}],"KohGuanZeh":[{"date":"2024-02-25","commitResults":[{"hash":"565e85a17d156dbb9def5d59c4586a01939c4813","isMergeCommit":false,"messageTitle":"Update AboutUs","messageBody":"Update AboutUs.md with Koh Guan Zeh\u0027s profile information:\n- Profile image\n- GitHub link\n- Role in project\n- Responsibilities in project\n","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}},{"hash":"83ce55078ffc44764de21449f38942c0febfe8fc","isMergeCommit":false,"messageTitle":"Update UG command formats","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":5}}}]},{"date":"2024-02-26","commitResults":[{"hash":"fa6242d41819fb3f83d0628f544b946080f70cf1","isMergeCommit":false,"messageTitle":"Add input formats to UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":37,"deletions":0}}},{"hash":"d4f9e233d684744e9bb7f679dd967ee2a50e231f","isMergeCommit":false,"messageTitle":"Add edit use case","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":33,"deletions":1}}},{"hash":"98f3862c6662b3c5d228d656b209030a51a7fd52","isMergeCommit":false,"messageTitle":"Update delete use case","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":7}}},{"hash":"fb85ebb49205382cea1e519f2982c3aa880074e7","isMergeCommit":false,"messageTitle":"Fix punctuation","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"51e30a5686b78aa3966638e5b32372fc7d561677","isMergeCommit":false,"messageTitle":"Fix name inconsistency","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"74698753003b139f8b0c837e64791b389bc47b41","isMergeCommit":true,"messageTitle":"Merge pull request #33 from KohGuanZeh/update-about-us","messageBody":"Update AboutUs","fileTypesAndContributionMap":{}},{"hash":"6943f6c42f2cdcd7d89cf1d34e4ceb237b8c21de","isMergeCommit":true,"messageTitle":"Merge pull request #34 from KohGuanZeh/update-UG-command-formats","messageBody":"Update UG command formats","fileTypesAndContributionMap":{}},{"hash":"4b67d026ba0b1141ed4d785b8bdc773c9d86ae4e","isMergeCommit":true,"messageTitle":"Merge pull request #43 from KohGuanZeh/update-dg","messageBody":"Update DG","fileTypesAndContributionMap":{}},{"hash":"2a53c1463cc0f6459589aa2be0b5cde107f05a9a","isMergeCommit":true,"messageTitle":"Merge pull request #42 from KohGuanZeh/update-ug-input-formats","messageBody":"Add input formats to UG","fileTypesAndContributionMap":{}}]},{"date":"2024-03-10","commitResults":[{"hash":"aea57699acc9408a972d89cf660a4b9054d74644","isMergeCommit":false,"messageTitle":"Refactor package name","messageBody":"Renamed all instaces of `seedu.address` to `seedu.findvisor`.\n","fileTypesAndContributionMap":{"other":{"insertions":770,"deletions":770},"docs":{"insertions":13,"deletions":13},"test-code":{"insertions":3,"deletions":3}}},{"hash":"73cffb826ec43577cf7aed2e7738394808ab6696","isMergeCommit":true,"messageTitle":"Merge pull request #69 from KohGuanZeh/refactor-package","messageBody":"Refactor package name","fileTypesAndContributionMap":{}},{"hash":"1c6137068185eb9cd7aac6db88c3d7a566ee4213","isMergeCommit":false,"messageTitle":"Update help window","messageBody":"Change help window url to redirect users from old addressbook UG to\nFINDvisor UG.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-11","commitResults":[{"hash":"0ea70be93f14d304dd1d62febf1930f9a6fbe668","isMergeCommit":false,"messageTitle":"Update isSamePerson","messageBody":"Same person is identified by name and can be an issue as there can be\nmany people who share the same name.\n\nSame person should be identified by unique identity information such as\nphone number as no 2 person should share the same phone number.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":4,"deletions":13}}}]},{"date":"2024-03-13","commitResults":[{"hash":"7d93765a9b4aa73fc398f4eff4a924b270cb616c","isMergeCommit":true,"messageTitle":"Merge pull request #71 from KohGuanZeh/update-same-person-check","messageBody":"Update isSamePerson","fileTypesAndContributionMap":{}},{"hash":"982fe9667d4274c2f9fdb5028b436e801d77e164","isMergeCommit":true,"messageTitle":"Merge pull request #70 from KohGuanZeh/update-help-command","messageBody":"Update help window","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"17b57f3e67a44155c5db8a66382059a8e10d8439","isMergeCommit":false,"messageTitle":"Update DG to use correct package name","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-23","commitResults":[{"hash":"0f6ffe8884f11897aa32439bee8fa9df8d36be6d","isMergeCommit":true,"messageTitle":"Merge pull request #109 from KohGuanZeh/update-dg-package-names","messageBody":"Update DG to use correct package name","fileTypesAndContributionMap":{}}]}],"Javiery3889":[{"date":"2024-02-25","commitResults":[{"hash":"c6266a62fdd3d27406fe337972f675e60e0e2540","isMergeCommit":false,"messageTitle":"Update Jekyll site-wide settings","messageBody":"- Rename all instances of AB-3 to FINDvisor on website\n- Change Github icon link to point to tP repo\n- Add favicon to website and acknowledgement for favicon\n","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}}]},{"date":"2024-02-26","commitResults":[{"hash":"c0563ec16955e28a785ed82ea9ef9bcbb3e77dbb","isMergeCommit":true,"messageTitle":"Merge pull request #35 from Javiery3889/update-jekyll-settings","messageBody":"Update Jekyll site-wide settings\r\nCloses #35 ","fileTypesAndContributionMap":{}},{"hash":"e17a46862e6385a5daf3b0111a07b2a0f70e0f24","isMergeCommit":false,"messageTitle":"Update AboutUs page","messageBody":"- Add personal details to `AboutUs.md`\n- Add personal image to `images/`\n- Remove PPP template\n","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":53}}},{"hash":"9988721b4426951e10faaa784f2c55c71bee9597","isMergeCommit":true,"messageTitle":"Merge pull request #40 from Javiery3889/update-about-us","messageBody":"Update AboutUs page","fileTypesAndContributionMap":{}}]},{"date":"2024-02-27","commitResults":[{"hash":"059ca2d88eca3271ddc6d6db021c5c842e27c12c","isMergeCommit":false,"messageTitle":"Update help command in user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"0432848faef283625158f4589d0c70b971466027","isMergeCommit":false,"messageTitle":"Update find command in user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":13}}},{"hash":"be9e1353538ed563096ef5dd78f6cc5ef33eb3fe","isMergeCommit":false,"messageTitle":"Fix alert box for user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}},{"hash":"7ccfe166a7d64ed96c44dfc64fcc6d9475bc926b","isMergeCommit":false,"messageTitle":"Update target user and value proposition in DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"9c40f031fdf2e199bff1fdd2f65fc6c098099b7a","isMergeCommit":false,"messageTitle":"Update user stories table in DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":31,"deletions":10}}},{"hash":"4e65a3df6da4700db88b832950ceba85d1312574","isMergeCommit":false,"messageTitle":"Remove full stop in user stories","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}},{"hash":"03e01673030743fa869370cc14f8e80c853491c9","isMergeCommit":false,"messageTitle":"Update find command example","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":6}}},{"hash":"93c49d71afffa874a234a19b5824c7063c1555c5","isMergeCommit":false,"messageTitle":"Fix punctuation for target user description","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"cf2a53341049a203eebf6800886b3c0ea67361c9","isMergeCommit":true,"messageTitle":"Merge pull request #54 from Javiery3889/53-UG-alert-box-fix","messageBody":"Fix alert box for user guide","fileTypesAndContributionMap":{}},{"hash":"33ff669131e8201f757b81e56a880457a3cc881a","isMergeCommit":true,"messageTitle":"Merge pull request #55 from Javiery3889/update-DG-target-user","messageBody":"Update target user and user stories in DG","fileTypesAndContributionMap":{}},{"hash":"3475dba8967b9f6e515e7af21d362877934ff835","isMergeCommit":false,"messageTitle":"Update find command description","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"8394ea454581f51bdb94ad705563f1de1a60f396","isMergeCommit":true,"messageTitle":"Merge pull request #52 from Javiery3889/update-UG","messageBody":"Update `find` and `help` commands in user guide","fileTypesAndContributionMap":{}}]},{"date":"2024-03-14","commitResults":[{"hash":"4e8852aa9e486c877880bd0760cfc4b4b2b15a0b","isMergeCommit":false,"messageTitle":"Update find command","messageBody":"Find command only supports searching of persons\u0027 name, returns results\nbased on OR search of specified keywords.\n\nUpdate find command to accept exactly one person\u0027s category: name,\nemail, phone or tags.\n\nFor each category:\n* name: check if person\u0027s name starts with specified keyword.\n Ignores case.\n* email: check if person\u0027s email equals with specified keyword. Ignores\n case.\n* phone: check if person\u0027s phone equals with specified keyword.\n* tags: check if person\u0027s tags contains one of specified keywords,\n requires whole match of keyword. Ignores case.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":249,"deletions":60}}},{"hash":"d41129cd54c3bedbaaa7dde9e3cf089fda955561","isMergeCommit":false,"messageTitle":"Fix JUnit tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":121,"deletions":114}}},{"hash":"a2e41f8a9e86c703bf6a96a1098a05eaade822b0","isMergeCommit":false,"messageTitle":"Add JUnit tests for new find categories","messageBody":"Add test coverage for name, email, phone and tags find operations\n","fileTypesAndContributionMap":{"test-code":{"insertions":462,"deletions":38}}},{"hash":"7720bdf0b29951419c8a98c21e38da8392789dc7","isMergeCommit":false,"messageTitle":"Fix checkstyles","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":37,"deletions":8},"test-code":{"insertions":27,"deletions":30}}}]},{"date":"2024-03-15","commitResults":[{"hash":"ec12e44d64a666a8e2c047b98e9b5e0f049a4830","isMergeCommit":false,"messageTitle":"Fix typos","messageBody":"Co-authored-by: David Zhu \u003cdavid@dzhy.dev\u003e","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"f63ecbcb2b79679fa2a17ff9a3761fb573f5fb9a","isMergeCommit":false,"messageTitle":"Update criteria of find command","messageBody":"Change search criteria for all search categories to contains substring\ninstead of equals substring.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":17,"deletions":23},"other":{"insertions":48,"deletions":37},"test-code":{"insertions":63,"deletions":63}}},{"hash":"e75d06917c1994ab8f59526f03f72f5b4a23d897","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-find-command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"075442c046f2fac17337515a9740e32098ac5221","isMergeCommit":false,"messageTitle":"Fix import errors and checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":6}}},{"hash":"dfdc78e04f9d24d5c4a5cbb5ada84484f78f6c6b","isMergeCommit":false,"messageTitle":"Update UG to match v1.2 features","messageBody":"- Update UG to match schedule and find commands\n- Fix issue where favicon was not appearing\n","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":7}}},{"hash":"016c941487cb03aaeb0d0dc77ddbfd0ae99d3a63","isMergeCommit":true,"messageTitle":"Merge pull request #75 from Javiery3889/update-find-command","messageBody":"Update find command","fileTypesAndContributionMap":{}}]},{"date":"2024-03-16","commitResults":[{"hash":"c71748d21aaafa3fdcc7d2f478bb79bafb968735","isMergeCommit":true,"messageTitle":"Merge pull request #83 from Javiery3889/update-UG","messageBody":"Update UG to match v1.2 features","fileTypesAndContributionMap":{}},{"hash":"0e683519804d7807dda4903989d8c8dfc57dc458","isMergeCommit":false,"messageTitle":"Update command summary in UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-17","commitResults":[{"hash":"046225f8a8beee6f13ae1762d97d97e4eca79038","isMergeCommit":true,"messageTitle":"Merge pull request #89 from Javiery3889/update-UG","messageBody":"Update command summary in UG","fileTypesAndContributionMap":{}}]},{"date":"2024-03-19","commitResults":[{"hash":"fe73af7a99c112441131278d6c150169ad5f12df","isMergeCommit":false,"messageTitle":"Rename JAR filename to findvisor.jar","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":1,"deletions":1}}},{"hash":"940d10b83f181d8d0070297f9ebc6f1fa05782a8","isMergeCommit":true,"messageTitle":"Merge pull request #101 from Javiery3889/update-JAR-filename","messageBody":"Rename JAR filename to findvisor.jar","fileTypesAndContributionMap":{}},{"hash":"d5e2e57356b04847ffbd599ae8238a83862eb2a8","isMergeCommit":false,"messageTitle":"Update app icon and include acknowledgement","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"docs":{"insertions":1,"deletions":1}}},{"hash":"3ff96b9db4396706b460e3e5667fe77ca5456cc4","isMergeCommit":false,"messageTitle":"Fix tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"17a2d6ea548c8bc4c4285c88e37174dccd117c8f","isMergeCommit":true,"messageTitle":"Merge pull request #104 from Javiery3889/update-app-icon","messageBody":"Update app icon and include acknowledgement","fileTypesAndContributionMap":{}},{"hash":"c791d97b5e962a4a93d7593c08294b832cffe3f3","isMergeCommit":false,"messageTitle":"Update image path","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"4552dd3e23d3ee6f05131906a56a8ed22d25355b","isMergeCommit":true,"messageTitle":"Merge pull request #106 from Javiery3889/update-app-icon","messageBody":"Fix icon path in UiManager","tags":["v1.2"],"fileTypesAndContributionMap":{}}]},{"date":"2024-03-23","commitResults":[{"hash":"fa0880099f29544f78f6d666928a4164bcf0d96c","isMergeCommit":false,"messageTitle":"Add Meeting class to Model class diagram","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":0}}},{"hash":"770803f19c5ad4871f99bbae5d9bbc668bc1f853","isMergeCommit":false,"messageTitle":"Fix association arrowheads and roles alignment","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":5}}},{"hash":"ae4e811ad2354c607cc9182f78e317f96011153a","isMergeCommit":true,"messageTitle":"Merge pull request #113 from Javiery3889/update-model-class-diagram","messageBody":"Add Meeting class to Model class diagram","fileTypesAndContributionMap":{}}]}],"YuZizhen":[{"date":"2024-02-29","commitResults":[{"hash":"7693c4ab4ce3b714b449bceadcf4bf69db1170be","isMergeCommit":false,"messageTitle":"Modify AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":14}}},{"hash":"c2a41a45cefdf01845354f586fb8fc3f809592a0","isMergeCommit":false,"messageTitle":"Update AboutUs format","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":11}}}]},{"date":"2024-03-01","commitResults":[{"hash":"6bd669797629d14f4dd372a61a9ba98f9666863f","isMergeCommit":false,"messageTitle":"Update AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":0}}},{"hash":"9c82a742016169785f02114d530367faf6d5e9a5","isMergeCommit":true,"messageTitle":"Merge pull request #61 from YuZizhen/branch-NewAboutUs","messageBody":"Modify AboutUs","fileTypesAndContributionMap":{}}]},{"date":"2024-03-02","commitResults":[{"hash":"57d195573113c4738f92426df3e23b7b12c41dcc","isMergeCommit":false,"messageTitle":"Update User Guide for Edit command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}}]},{"date":"2024-03-03","commitResults":[{"hash":"0f856f6383ebac506e2a83b4a87d2762a7ef85ea","isMergeCommit":false,"messageTitle":"Update User Guide description for Edit command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"fa51c2742cd68fb4dc4bcd13800eaef9bbab8ca1","isMergeCommit":false,"messageTitle":"Update User Guide for Edit command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"ba63abfdd3bcae90757b8aa7b9f716f89efd1194","isMergeCommit":true,"messageTitle":"Merge pull request #66 from YuZizhen/branch-EditCommandUserGuide","messageBody":"Update User Guide for Edit command","fileTypesAndContributionMap":{}}]}],"Dethada":[{"date":"2024-02-26","commitResults":[{"hash":"9af4eead3b53536c13306728624375cc2d0058e9","isMergeCommit":false,"messageTitle":"Update aboutus to include David\u0027s details","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":5}}},{"hash":"05900b8bb092f2d0cf34b19115946a75a67b9fda","isMergeCommit":false,"messageTitle":"Add docs for `schedule` and `unschedule` command","messageBody":"closes #16 and #17\n","fileTypesAndContributionMap":{"docs":{"insertions":38,"deletions":0}}},{"hash":"ad7d5b8c9c0f667889a4db93a2fcd67ce94f73b6","isMergeCommit":false,"messageTitle":"Fix datetime format in example","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"966e4f7a11f5ddec47ae7616aa2d866c23a1da8e","isMergeCommit":false,"messageTitle":"Add new commands to command summary table","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":0}}},{"hash":"ff6f827465d3c7c1c7940f53b0f085845ff6e8cc","isMergeCommit":false,"messageTitle":"Add use case for scheduling meeting with a new person","messageBody":"closes #38\n","fileTypesAndContributionMap":{"docs":{"insertions":29,"deletions":1}}},{"hash":"070a30d9030b2f9a7dde6e3f304c2b6a60277f3a","isMergeCommit":false,"messageTitle":"Rename AddressBook to FINDvisor in use case","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}}]},{"date":"2024-02-27","commitResults":[{"hash":"555f82a908551e26a76e34a5c8f56e27658c734a","isMergeCommit":true,"messageTitle":"Merge pull request #44 from Dethada/update-aboutus","messageBody":"Update aboutus to include David\u0027s details","fileTypesAndContributionMap":{}},{"hash":"bbf07ee6b3d90c968baa58f98166234585880b29","isMergeCommit":false,"messageTitle":"Update docs/UserGuide.md","messageBody":"Co-authored-by: Javier \u003cjaviery3889@gmail.com\u003e","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"ebe5c7a1fbe7fefc5dea2f1012a29d57d8e5d804","isMergeCommit":false,"messageTitle":"Add puncutation and fix spelling","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":5}}},{"hash":"9b5d3cd4c2a1d16ca61acad77190ec5e82c06254","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-use-case","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"572317d8f3e0ca86ff45489278b22e860b064da9","isMergeCommit":false,"messageTitle":"Change schedule command prefixes to match spec","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"961af5a8cfa8ffa5974b23d237363f29fe854564","isMergeCommit":false,"messageTitle":"Update datetime input and output formats to match spec","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":6}}},{"hash":"1632937d92dcb5f4f3a9b4855b94c540db098915","isMergeCommit":false,"messageTitle":"Only check if meeting start is not after current datetime in the command","messageBody":"Previously it was checked in the Meeting class, this would cause\nissues when we load previously scheduled meetings from the save file,\nwhich can have meeting start datetime that is before the current\ndatetime.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":17,"deletions":4}}},{"hash":"a82760a9f9529a4abaeda4c173bc39ec1c36c6be","isMergeCommit":false,"messageTitle":"Update command output to match spec","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":2}}},{"hash":"e1b7f93af94b710c7b9253bf86333810666206b1","isMergeCommit":true,"messageTitle":"Merge pull request #46 from Dethada/update-user-guide","messageBody":"Add docs for `schedule` and `unschedule` command","fileTypesAndContributionMap":{}},{"hash":"e822bb0c4ddf969d70f089fc15382d7e6f1b002f","isMergeCommit":true,"messageTitle":"Merge pull request #48 from Dethada/add-use-case","messageBody":"Add use case for scheduling meeting with a new person","fileTypesAndContributionMap":{}},{"hash":"3fe7ece44478cacb5f88e26be18f70d9942ace71","isMergeCommit":false,"messageTitle":"Update CI status link","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"f6ce696bf49c8495dd07546514787b04d29ce928","isMergeCommit":false,"messageTitle":"Update CI and codecov badges for website","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"50b4081d2697652aa5901eba3db6ded8dcf219f9","isMergeCommit":false,"messageTitle":"Update index.md with our information","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"ecf8ee4c5fff69561723bad73cd0a1215e4fc749","isMergeCommit":false,"messageTitle":"Add acknowledgement to AB3","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}},{"hash":"f86b2babeed8c70a346f218263bbfab5be5a8ec6","isMergeCommit":false,"messageTitle":"Update README with our information","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":10}}},{"hash":"9c24ad1b75b3d10b9b331b7ef79f8d9521be56b8","isMergeCommit":false,"messageTitle":"Italics looks more readable on the README","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"e9fed68ce584990276baf6a9b428def947527438","isMergeCommit":false,"messageTitle":"Fix product website link","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"4f07760207324bb540a646fe2617fd44b8c4fd6b","isMergeCommit":false,"messageTitle":"Add exit action to command summary table #47","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}}]},{"date":"2024-02-28","commitResults":[{"hash":"28d75bf5e296c4e867ae1300eed28e5b951e555e","isMergeCommit":true,"messageTitle":"Merge pull request #57 from Dethada/update-readme","messageBody":"Update README and index.md","fileTypesAndContributionMap":{}},{"hash":"0af960b0ebb0628932b03a3713b17cda68f04c59","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-exit-action","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"3a5d2f41a3a8155c5cc7e1eaf0f11b7fefcfa5bf","isMergeCommit":true,"messageTitle":"Merge pull request #58 from Dethada/add-exit-action","messageBody":"Add exit action to command summary table","fileTypesAndContributionMap":{}}]},{"date":"2024-03-11","commitResults":[{"hash":"bc8e08057a3daadf9f462ec87709f0a8b4c53a1c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into tutorial-adding-command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"3900e9e98a24e3ddd54e34bb78c0d292c381b41d","isMergeCommit":false,"messageTitle":"Additional renames to fix compilation errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":36,"deletions":36}}},{"hash":"8fbfcbacf7f19a8b88d872ab900281c69331eb60","isMergeCommit":false,"messageTitle":"Added Tests for DateTimeUtil","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":39,"deletions":0}}},{"hash":"5cf71617d5345901f005ad411415e0684a49b43b","isMergeCommit":false,"messageTitle":"Fix datetime format in meeting constraint message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"09ce2a27aeac88973d61f76416abfe135d00cc02","isMergeCommit":false,"messageTitle":"Add tests for schedule command","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":153,"deletions":0}}},{"hash":"7729e2e407ff637870e3a592e4f0138db96c4556","isMergeCommit":false,"messageTitle":"Remove unnecessary assertion and make use of class method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":4}}},{"hash":"e2fcebdc2fe7cd9b966eb94bf415653042757019","isMergeCommit":false,"messageTitle":"Only compare up to minutes for meeting equality check","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":4}}},{"hash":"f373ee19e625b5946524442363e949c4d868f3a6","isMergeCommit":false,"messageTitle":"Add tests for schedule command parser","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":48,"deletions":0}}},{"hash":"4a33992a7c191e65d3a2f6ab1957c629cfbccc3f","isMergeCommit":false,"messageTitle":"Add tests for Meeting","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":60,"deletions":0}}},{"hash":"4c4f33356196837254cf613542f0afade9060a2f","isMergeCommit":false,"messageTitle":"Update tests for person","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":0}}},{"hash":"ec90ed7048de1bc4e75b7b95e86dd2588b52db42","isMergeCommit":false,"messageTitle":"Add tests for JsonAdaptedMeeting and fix its expected behavior","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":4},"test-code":{"insertions":53,"deletions":0}}},{"hash":"be56029952a55c41c337e3801414be1834d4d2cd","isMergeCommit":false,"messageTitle":"Update tests for JsonAdaptedPersonTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":18,"deletions":0}}},{"hash":"f8e1b0d1534f6c1636e4e50346794a71fa56f137","isMergeCommit":false,"messageTitle":"Update tests for AddressBookParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":16,"deletions":0}}}]},{"date":"2024-03-12","commitResults":[{"hash":"c52e5f8a55b05360b97b1b453ee4de76231281b9","isMergeCommit":false,"messageTitle":"Fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":8,"deletions":7}}},{"hash":"6a1c781c3493f2f0348a3a414ed9d73e7e849330","isMergeCommit":false,"messageTitle":"Add unschedule command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":135,"deletions":0}}},{"hash":"7765168c16ab3e1f5e40d088e3d32e95af852156","isMergeCommit":false,"messageTitle":"Update AddressBookParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":8,"deletions":0}}},{"hash":"0303885299de72d36c6911d80e80b0004280f432","isMergeCommit":false,"messageTitle":"Add test for UnscheduleCommandParser","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":32,"deletions":0}}},{"hash":"38148778e9c91bd407529f0c2d2c65e4f0c6fffe","isMergeCommit":false,"messageTitle":"Add tests for UnscheduleCommandTest","messageBody":"- Also updated TypicalPersons and typicalPersonsAddressBook.json to\n accomadate for the new tests\n","fileTypesAndContributionMap":{"test-code":{"insertions":127,"deletions":1}}},{"hash":"c126b302d5e8fc472a6502e54c0756b302ee3dc9","isMergeCommit":false,"messageTitle":"Remove unused import","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}},{"hash":"65dc2f0b4765a8078078441d764d961732355c55","isMergeCommit":false,"messageTitle":"Fix java docs and use more sensible variable name in ScheduleCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":13}}}]},{"date":"2024-03-13","commitResults":[{"hash":"81d2e751f545d2f7c56735346a2b211f11d2be04","isMergeCommit":false,"messageTitle":"Update src/test/java/seedu/findvisor/model/person/MeetingTest.java","messageBody":"Co-authored-by: Koh Guan Zeh \u003c44768220+KohGuanZeh@users.noreply.github.com\u003e","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":5}}}]},{"date":"2024-03-15","commitResults":[{"hash":"333ed6a1fd63fa35d408ed676e97757ca2549977","isMergeCommit":false,"messageTitle":"Update src/main/java/seedu/findvisor/logic/commands/ScheduleCommand.java","messageBody":"Co-authored-by: Javier \u003cjaviery3889@gmail.com\u003e","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"cd753c8e5464f0c38dd769acdaa3d217e1fbfe46","isMergeCommit":true,"messageTitle":"Merge pull request #2 from Dethada/tutorial-adding-command","messageBody":"Add `schedule` command to schedule meetings","fileTypesAndContributionMap":{}},{"hash":"d3f5e29258cf23023d9c1e1d3fc25c3c7bf863cf","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into new-unschedule-command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"765990b91b9989baf05ea80c91e9a0690ad438fb","isMergeCommit":false,"messageTitle":"Test for when there is no meeting to unschedule","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":0}}}]},{"date":"2024-03-16","commitResults":[{"hash":"9a6e27e8743c845e929f09743c50469078b4e199","isMergeCommit":false,"messageTitle":"Fix javadoc for Meeting class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":3}}},{"hash":"ac8d72c8e455ebd937ee2255268b8ded6d4c8253","isMergeCommit":true,"messageTitle":"Merge pull request #72 from Dethada/new-unschedule-command","messageBody":"Add unschedule Command","fileTypesAndContributionMap":{}},{"hash":"ba93d4b794c23a26d8c24f5eea879271ae559acd","isMergeCommit":true,"messageTitle":"Merge pull request #86 from Dethada/fix-meeting-javadoc","messageBody":"Fix javadoc for Meeting class","fileTypesAndContributionMap":{}}]},{"date":"2024-03-19","commitResults":[{"hash":"4f5f476d7ae8184d53a54839172c86779b1d6f56","isMergeCommit":true,"messageTitle":"Merge pull request #87 from Dethada/fix-test-json-missing-meeting-field","messageBody":"Add missing meeting fields for json test files","fileTypesAndContributionMap":{}},{"hash":"d29f112e78150229da1448b19565f6a5a44620e4","isMergeCommit":false,"messageTitle":"Copy over the meeting object to the newly edited person","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":1}}},{"hash":"cff1b066709d722e45fd2b0a546a4ade26fdb8ca","isMergeCommit":false,"messageTitle":"Add commment to explain why we are copying from personToEdit directly","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"823ba9a2c916b78b043c9048a7488b02b84407fc","isMergeCommit":false,"messageTitle":"Add test for this bug so we don\u0027t regress","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":21,"deletions":0}}},{"hash":"26e00f7d1a105a251ed9a1a457eca13f44ac8276","isMergeCommit":false,"messageTitle":"Add a comment to make it clear up poential confusion","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":0}}},{"hash":"db6969e9bb590ee7bd8253f6ff78f954aa7e483f","isMergeCommit":true,"messageTitle":"Merge pull request #96 from Dethada/bugfix/95-edit-track-meeting","messageBody":"bugfix for edit not copyign meeting details over","fileTypesAndContributionMap":{}},{"hash":"0660730769d996c495712c5eec8a42171b11f5ca","isMergeCommit":false,"messageTitle":"Fix fomrat string being printed as string literal","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":2,"deletions":1}}},{"hash":"c716021a9be1356a372889dfaf2cbafafcac7e71","isMergeCommit":true,"messageTitle":"Merge pull request #102 from Dethada/bugfix/unschedule-not-showing-name","messageBody":"Fix fomrat string being printed as string literal","fileTypesAndContributionMap":{}}]},{"date":"2024-03-22","commitResults":[{"hash":"47990a0567378c1848985b70909398dc469b43ae","isMergeCommit":false,"messageTitle":"Add JsonAdaptedMeeting to diagram","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":0}}},{"hash":"0d23581bfb27dffa4a7e9405a4f5edf377ddfecb","isMergeCommit":false,"messageTitle":"Fix multiplicity","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-23","commitResults":[{"hash":"e55999f92a1cdd48708314b412cebb9e9eb3ef68","isMergeCommit":true,"messageTitle":"Merge pull request #112 from Dethada/update/storage-class-diagram","messageBody":"Update Storage class diagram","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Arixeyeion":{"docs":40,"functional-code":9,"test-code":36},"KohGuanZeh":{"docs":102,"functional-code":331,"test-code":432,"other":1},"Javiery3889":{"docs":63,"functional-code":276,"test-code":575,"other":2},"YuZizhen":{"docs":17,"functional-code":0,"test-code":0},"Dethada":{"docs":87,"functional-code":235,"test-code":589}},"authorContributionVariance":{"Arixeyeion":433.29892,"KohGuanZeh":79638.75,"Javiery3889":44003.402,"YuZizhen":74.40548,"Dethada":11490.163},"authorDisplayNameMap":{"Arixeyeion":"CS2103-F15-1 LIM ..INIC","KohGuanZeh":"CS2103-F15-1 KOH .. ZEH","Javiery3889":"CS2103-F15-1 YONG..VIER","YuZizhen":"CS2103-F15-1 YU Z..ZHEN","Dethada":"CS2103-F15-1 DAVI..YUAN"}} +{"authorDailyContributionsMap":{"Arixeyeion":[{"date":"2024-02-26","commitResults":[{"hash":"c71297576c3f2488722d54627cb90af3b6c084e1","isMergeCommit":false,"messageTitle":"Update personal entry on about us page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":5}}},{"hash":"23d4d7357bd04d3c1fe655b153dc1f259b976110","isMergeCommit":false,"messageTitle":"Update NFRs in DG to match TP constraints exhaustively","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":2}}},{"hash":"9a71d3d5615f8a071e43a63ce56e1d911d522949","isMergeCommit":false,"messageTitle":"Update add and delete contact functionality in user guide to align with expected final product delivery","messageBody":"Adapt user guide from addressbook to FINDvisor\n","fileTypesAndContributionMap":{"docs":{"insertions":25,"deletions":19}}},{"hash":"e2731b347f7b362a28f298772fd3d94aa4f745d4","isMergeCommit":false,"messageTitle":"Correct self image name to lower case","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-02-27","commitResults":[{"hash":"7154f812c8fd97be2fe9841e3e0b68155e29a688","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-individual-aboutus-entry","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"870306568b5bdef5735c28973d0be1e7a869a25a","isMergeCommit":false,"messageTitle":"Add line to AboutUs to fix EOF error","messageBody":"Remove picture to rename to lower case\n","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"3d9a739280d2de2f9965cbc32124d89811414445","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-dg-nfrs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"6661c8a1fd392727f1bd97621ced21aa19734b71","isMergeCommit":false,"messageTitle":"Remove unwanted line from dg","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":2}}},{"hash":"dfe70b62f18cb86db84672c74ba02d51eebc5bcb","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-ug-and-adapt","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"89e5866d60691e09a42be8657893dac96b1b30b1","isMergeCommit":false,"messageTitle":"Correct FINDVisor to FINDvisor in UG for consistency","messageBody":"Correct gramatical errors pertaining to updates done on UG in prior commit\n","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":8}}},{"hash":"c0dd727bff040b9efff0542def9b418d7e74163f","isMergeCommit":false,"messageTitle":"Add 1 more NFR based on generated user stories","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}}]},{"date":"2024-02-28","commitResults":[{"hash":"63197f0e01e2dfee6bacae604818656ce4eb98db","isMergeCommit":true,"messageTitle":"Merge pull request #49 from Arixeyeion/update-individual-aboutus-entry","messageBody":"Update individual about us entry","fileTypesAndContributionMap":{}}]},{"date":"2024-03-01","commitResults":[{"hash":"7f640fd06b4bdc1ffa9330a356585b3b0ebcfd76","isMergeCommit":true,"messageTitle":"Merge pull request #50 from Arixeyeion/update-ug-and-adapt","messageBody":"Updated add and delete commands. Adapted UG to FINDvisor.","fileTypesAndContributionMap":{}},{"hash":"4123280b92e0c456daef88b0226314482606a157","isMergeCommit":true,"messageTitle":"Merge pull request #51 from Arixeyeion/update-dg-nfrs","messageBody":"Update NFRs in DG to match TP constraints exhaustively","fileTypesAndContributionMap":{}}]},{"date":"2024-03-13","commitResults":[{"hash":"95a755447c7b79833950b54f6888f0bbea8a1f39","isMergeCommit":false,"messageTitle":"Update phone and name parsing logic","messageBody":"FINDvisor aims to support fast typing. To aid this, the name and\nphone number now allows the input to have multiple spaces in\nbetween characters, in case the user is careless.\n\nPhone numbers are now constrained to Singaporean mobile numbers to\nfit the target user group of FINDvisor.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":4},"test-code":{"insertions":4,"deletions":4}}}]},{"date":"2024-03-15","commitResults":[{"hash":"667d9f07890f7d8027bd21d411401f70c1a591dd","isMergeCommit":false,"messageTitle":"Fix formatting error flagged by checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"44923e0cdb372df2b2381edb87a3d73df924fe90","isMergeCommit":false,"messageTitle":"Update test cases to match new phone number constraints","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":21,"deletions":14}}}]},{"date":"2024-03-16","commitResults":[{"hash":"f06e1944b540259037dc6beaf264218cb5fd22e0","isMergeCommit":false,"messageTitle":"Update error message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"a6faabf01b0f1b355a20c1108a125d1813592adc","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-phone-and-name-parsing","messageBody":"# Conflicts:\n#\tsrc/test/java/seedu/findvisor/model/person/NameContainsKeywordsPredicateTest.java\n","fileTypesAndContributionMap":{}},{"hash":"3e9904f09e6c8284ad813faeaf2dabece7876f54","isMergeCommit":false,"messageTitle":"Fix conflicts with prior test cases","messageBody":"Delete unwanted file from prior merge to prevent recurrence\nin future merges and changed test case to accomodate phone number\nformat.\n","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":86}}}]},{"date":"2024-03-17","commitResults":[{"hash":"4a45c40223221c0a7eaf05c2b03bd354abb2e0f2","isMergeCommit":false,"messageTitle":"Update test cases for phone, name and parserutil","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":16,"deletions":2}}},{"hash":"7357de8c91de816a58ad26bb1af5904f2c40989c","isMergeCommit":true,"messageTitle":"Merge pull request #73 from Arixeyeion/update-phone-and-name-parsing","messageBody":"Update phone and name parsing logic","fileTypesAndContributionMap":{}}]},{"date":"2024-03-19","commitResults":[{"hash":"32b4681a9b9688b8e9a460842044e205afb2c3b0","isMergeCommit":false,"messageTitle":"Update title bar text to FINDvisor","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4}}},{"hash":"a606c959cb2b1fee044633cbb40580237d115644","isMergeCommit":true,"messageTitle":"Merge pull request #103 from Arixeyeion/update-titlebar","messageBody":"Update title bar text to FINDvisor","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"81753f13dd96c696b92e07dd3287d62d927e5d3c","isMergeCommit":false,"messageTitle":"Add edit command UML sequence diagram for Model","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":66,"deletions":0}}}]},{"date":"2024-03-24","commitResults":[{"hash":"59a53161c52b8267dcc7cc76417a072736ab7995","isMergeCommit":false,"messageTitle":"Update DG with return arrows","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":16,"deletions":8}}},{"hash":"4e45c2faa121d9e8bd785605ab87ec75c91ee139","isMergeCommit":false,"messageTitle":"Remove unnecessary alert","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":3}}},{"hash":"487083643ff2e9da5a2fb09994364d9b062c82d2","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-dg-uml-diagram-edit-model","messageBody":"# Conflicts:\n#\tdocs/DeveloperGuide.md\n","fileTypesAndContributionMap":{}},{"hash":"21d80aeb405a3ce99fb00fd2ef5d977cf4eb3f60","isMergeCommit":true,"messageTitle":"Merge pull request #111 from Arixeyeion/update-dg-uml-diagram-edit-model","messageBody":"Add edit command UML sequence diagram for Model","fileTypesAndContributionMap":{}}]}],"KohGuanZeh":[{"date":"2024-02-25","commitResults":[{"hash":"565e85a17d156dbb9def5d59c4586a01939c4813","isMergeCommit":false,"messageTitle":"Update AboutUs","messageBody":"Update AboutUs.md with Koh Guan Zeh\u0027s profile information:\n- Profile image\n- GitHub link\n- Role in project\n- Responsibilities in project\n","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}},{"hash":"83ce55078ffc44764de21449f38942c0febfe8fc","isMergeCommit":false,"messageTitle":"Update UG command formats","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":5}}}]},{"date":"2024-02-26","commitResults":[{"hash":"fa6242d41819fb3f83d0628f544b946080f70cf1","isMergeCommit":false,"messageTitle":"Add input formats to UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":37,"deletions":0}}},{"hash":"d4f9e233d684744e9bb7f679dd967ee2a50e231f","isMergeCommit":false,"messageTitle":"Add edit use case","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":33,"deletions":1}}},{"hash":"98f3862c6662b3c5d228d656b209030a51a7fd52","isMergeCommit":false,"messageTitle":"Update delete use case","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":7}}},{"hash":"fb85ebb49205382cea1e519f2982c3aa880074e7","isMergeCommit":false,"messageTitle":"Fix punctuation","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"51e30a5686b78aa3966638e5b32372fc7d561677","isMergeCommit":false,"messageTitle":"Fix name inconsistency","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"74698753003b139f8b0c837e64791b389bc47b41","isMergeCommit":true,"messageTitle":"Merge pull request #33 from KohGuanZeh/update-about-us","messageBody":"Update AboutUs","fileTypesAndContributionMap":{}},{"hash":"6943f6c42f2cdcd7d89cf1d34e4ceb237b8c21de","isMergeCommit":true,"messageTitle":"Merge pull request #34 from KohGuanZeh/update-UG-command-formats","messageBody":"Update UG command formats","fileTypesAndContributionMap":{}},{"hash":"4b67d026ba0b1141ed4d785b8bdc773c9d86ae4e","isMergeCommit":true,"messageTitle":"Merge pull request #43 from KohGuanZeh/update-dg","messageBody":"Update DG","fileTypesAndContributionMap":{}},{"hash":"2a53c1463cc0f6459589aa2be0b5cde107f05a9a","isMergeCommit":true,"messageTitle":"Merge pull request #42 from KohGuanZeh/update-ug-input-formats","messageBody":"Add input formats to UG","fileTypesAndContributionMap":{}}]},{"date":"2024-03-10","commitResults":[{"hash":"aea57699acc9408a972d89cf660a4b9054d74644","isMergeCommit":false,"messageTitle":"Refactor package name","messageBody":"Renamed all instaces of `seedu.address` to `seedu.findvisor`.\n","fileTypesAndContributionMap":{"other":{"insertions":770,"deletions":770},"docs":{"insertions":13,"deletions":13},"test-code":{"insertions":3,"deletions":3}}},{"hash":"73cffb826ec43577cf7aed2e7738394808ab6696","isMergeCommit":true,"messageTitle":"Merge pull request #69 from KohGuanZeh/refactor-package","messageBody":"Refactor package name","fileTypesAndContributionMap":{}},{"hash":"1c6137068185eb9cd7aac6db88c3d7a566ee4213","isMergeCommit":false,"messageTitle":"Update help window","messageBody":"Change help window url to redirect users from old addressbook UG to\nFINDvisor UG.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-11","commitResults":[{"hash":"0ea70be93f14d304dd1d62febf1930f9a6fbe668","isMergeCommit":false,"messageTitle":"Update isSamePerson","messageBody":"Same person is identified by name and can be an issue as there can be\nmany people who share the same name.\n\nSame person should be identified by unique identity information such as\nphone number as no 2 person should share the same phone number.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":4,"deletions":13}}}]},{"date":"2024-03-13","commitResults":[{"hash":"7d93765a9b4aa73fc398f4eff4a924b270cb616c","isMergeCommit":true,"messageTitle":"Merge pull request #71 from KohGuanZeh/update-same-person-check","messageBody":"Update isSamePerson","fileTypesAndContributionMap":{}},{"hash":"982fe9667d4274c2f9fdb5028b436e801d77e164","isMergeCommit":true,"messageTitle":"Merge pull request #70 from KohGuanZeh/update-help-command","messageBody":"Update help window","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"17b57f3e67a44155c5db8a66382059a8e10d8439","isMergeCommit":false,"messageTitle":"Update DG to use correct package name","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-21","commitResults":[{"hash":"80098ff3cf6adc3dd7b20ce9e23b9f53bb42556f","isMergeCommit":false,"messageTitle":"Add edit command UML diagram","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":107,"deletions":0}}},{"hash":"7d84843d854fe09c95d075c6b803e92cbfd11ba6","isMergeCommit":false,"messageTitle":"Fix no newline at EOF","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"071fa17cdff511909336a32a3f84f8791b3b6a3a","isMergeCommit":false,"messageTitle":"Add missing parameters","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}}]},{"date":"2024-03-22","commitResults":[{"hash":"21442d4121f6aa118e071bf62f0c1d7f58d0568d","isMergeCommit":false,"messageTitle":"Update sequence diagram","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":6}}}]},{"date":"2024-03-23","commitResults":[{"hash":"0f6ffe8884f11897aa32439bee8fa9df8d36be6d","isMergeCommit":true,"messageTitle":"Merge pull request #109 from KohGuanZeh/update-dg-package-names","messageBody":"Update DG to use correct package name","fileTypesAndContributionMap":{}}]},{"date":"2024-03-24","commitResults":[{"hash":"c14a70305b0ee8dfd40603ca7408bb05bae6c3cd","isMergeCommit":false,"messageTitle":"Update UML diagram","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":0}}},{"hash":"700ec4f88af8342b011744a0dd50cf4a70749799","isMergeCommit":true,"messageTitle":"Merge pull request #110 from KohGuanZeh/update-dg-uml-diagram","messageBody":"Add edit command UML diagram","fileTypesAndContributionMap":{}}]}],"Javiery3889":[{"date":"2024-02-25","commitResults":[{"hash":"c6266a62fdd3d27406fe337972f675e60e0e2540","isMergeCommit":false,"messageTitle":"Update Jekyll site-wide settings","messageBody":"- Rename all instances of AB-3 to FINDvisor on website\n- Change Github icon link to point to tP repo\n- Add favicon to website and acknowledgement for favicon\n","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}}]},{"date":"2024-02-26","commitResults":[{"hash":"c0563ec16955e28a785ed82ea9ef9bcbb3e77dbb","isMergeCommit":true,"messageTitle":"Merge pull request #35 from Javiery3889/update-jekyll-settings","messageBody":"Update Jekyll site-wide settings\r\nCloses #35 ","fileTypesAndContributionMap":{}},{"hash":"e17a46862e6385a5daf3b0111a07b2a0f70e0f24","isMergeCommit":false,"messageTitle":"Update AboutUs page","messageBody":"- Add personal details to `AboutUs.md`\n- Add personal image to `images/`\n- Remove PPP template\n","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":53}}},{"hash":"9988721b4426951e10faaa784f2c55c71bee9597","isMergeCommit":true,"messageTitle":"Merge pull request #40 from Javiery3889/update-about-us","messageBody":"Update AboutUs page","fileTypesAndContributionMap":{}}]},{"date":"2024-02-27","commitResults":[{"hash":"059ca2d88eca3271ddc6d6db021c5c842e27c12c","isMergeCommit":false,"messageTitle":"Update help command in user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"0432848faef283625158f4589d0c70b971466027","isMergeCommit":false,"messageTitle":"Update find command in user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":13}}},{"hash":"be9e1353538ed563096ef5dd78f6cc5ef33eb3fe","isMergeCommit":false,"messageTitle":"Fix alert box for user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}},{"hash":"7ccfe166a7d64ed96c44dfc64fcc6d9475bc926b","isMergeCommit":false,"messageTitle":"Update target user and value proposition in DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"9c40f031fdf2e199bff1fdd2f65fc6c098099b7a","isMergeCommit":false,"messageTitle":"Update user stories table in DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":31,"deletions":10}}},{"hash":"4e65a3df6da4700db88b832950ceba85d1312574","isMergeCommit":false,"messageTitle":"Remove full stop in user stories","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}},{"hash":"03e01673030743fa869370cc14f8e80c853491c9","isMergeCommit":false,"messageTitle":"Update find command example","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":6}}},{"hash":"93c49d71afffa874a234a19b5824c7063c1555c5","isMergeCommit":false,"messageTitle":"Fix punctuation for target user description","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"cf2a53341049a203eebf6800886b3c0ea67361c9","isMergeCommit":true,"messageTitle":"Merge pull request #54 from Javiery3889/53-UG-alert-box-fix","messageBody":"Fix alert box for user guide","fileTypesAndContributionMap":{}},{"hash":"33ff669131e8201f757b81e56a880457a3cc881a","isMergeCommit":true,"messageTitle":"Merge pull request #55 from Javiery3889/update-DG-target-user","messageBody":"Update target user and user stories in DG","fileTypesAndContributionMap":{}},{"hash":"3475dba8967b9f6e515e7af21d362877934ff835","isMergeCommit":false,"messageTitle":"Update find command description","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"8394ea454581f51bdb94ad705563f1de1a60f396","isMergeCommit":true,"messageTitle":"Merge pull request #52 from Javiery3889/update-UG","messageBody":"Update `find` and `help` commands in user guide","fileTypesAndContributionMap":{}}]},{"date":"2024-03-14","commitResults":[{"hash":"4e8852aa9e486c877880bd0760cfc4b4b2b15a0b","isMergeCommit":false,"messageTitle":"Update find command","messageBody":"Find command only supports searching of persons\u0027 name, returns results\nbased on OR search of specified keywords.\n\nUpdate find command to accept exactly one person\u0027s category: name,\nemail, phone or tags.\n\nFor each category:\n* name: check if person\u0027s name starts with specified keyword.\n Ignores case.\n* email: check if person\u0027s email equals with specified keyword. Ignores\n case.\n* phone: check if person\u0027s phone equals with specified keyword.\n* tags: check if person\u0027s tags contains one of specified keywords,\n requires whole match of keyword. Ignores case.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":249,"deletions":60}}},{"hash":"d41129cd54c3bedbaaa7dde9e3cf089fda955561","isMergeCommit":false,"messageTitle":"Fix JUnit tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":121,"deletions":114}}},{"hash":"a2e41f8a9e86c703bf6a96a1098a05eaade822b0","isMergeCommit":false,"messageTitle":"Add JUnit tests for new find categories","messageBody":"Add test coverage for name, email, phone and tags find operations\n","fileTypesAndContributionMap":{"test-code":{"insertions":462,"deletions":38}}},{"hash":"7720bdf0b29951419c8a98c21e38da8392789dc7","isMergeCommit":false,"messageTitle":"Fix checkstyles","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":37,"deletions":8},"test-code":{"insertions":27,"deletions":30}}}]},{"date":"2024-03-15","commitResults":[{"hash":"ec12e44d64a666a8e2c047b98e9b5e0f049a4830","isMergeCommit":false,"messageTitle":"Fix typos","messageBody":"Co-authored-by: David Zhu \u003cdavid@dzhy.dev\u003e","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"f63ecbcb2b79679fa2a17ff9a3761fb573f5fb9a","isMergeCommit":false,"messageTitle":"Update criteria of find command","messageBody":"Change search criteria for all search categories to contains substring\ninstead of equals substring.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":17,"deletions":23},"other":{"insertions":48,"deletions":37},"test-code":{"insertions":63,"deletions":63}}},{"hash":"e75d06917c1994ab8f59526f03f72f5b4a23d897","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-find-command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"075442c046f2fac17337515a9740e32098ac5221","isMergeCommit":false,"messageTitle":"Fix import errors and checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":6}}},{"hash":"dfdc78e04f9d24d5c4a5cbb5ada84484f78f6c6b","isMergeCommit":false,"messageTitle":"Update UG to match v1.2 features","messageBody":"- Update UG to match schedule and find commands\n- Fix issue where favicon was not appearing\n","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":7}}},{"hash":"016c941487cb03aaeb0d0dc77ddbfd0ae99d3a63","isMergeCommit":true,"messageTitle":"Merge pull request #75 from Javiery3889/update-find-command","messageBody":"Update find command","fileTypesAndContributionMap":{}}]},{"date":"2024-03-16","commitResults":[{"hash":"c71748d21aaafa3fdcc7d2f478bb79bafb968735","isMergeCommit":true,"messageTitle":"Merge pull request #83 from Javiery3889/update-UG","messageBody":"Update UG to match v1.2 features","fileTypesAndContributionMap":{}},{"hash":"0e683519804d7807dda4903989d8c8dfc57dc458","isMergeCommit":false,"messageTitle":"Update command summary in UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-17","commitResults":[{"hash":"046225f8a8beee6f13ae1762d97d97e4eca79038","isMergeCommit":true,"messageTitle":"Merge pull request #89 from Javiery3889/update-UG","messageBody":"Update command summary in UG","fileTypesAndContributionMap":{}}]},{"date":"2024-03-19","commitResults":[{"hash":"fe73af7a99c112441131278d6c150169ad5f12df","isMergeCommit":false,"messageTitle":"Rename JAR filename to findvisor.jar","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":1,"deletions":1}}},{"hash":"940d10b83f181d8d0070297f9ebc6f1fa05782a8","isMergeCommit":true,"messageTitle":"Merge pull request #101 from Javiery3889/update-JAR-filename","messageBody":"Rename JAR filename to findvisor.jar","fileTypesAndContributionMap":{}},{"hash":"d5e2e57356b04847ffbd599ae8238a83862eb2a8","isMergeCommit":false,"messageTitle":"Update app icon and include acknowledgement","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"docs":{"insertions":1,"deletions":1}}},{"hash":"3ff96b9db4396706b460e3e5667fe77ca5456cc4","isMergeCommit":false,"messageTitle":"Fix tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"17a2d6ea548c8bc4c4285c88e37174dccd117c8f","isMergeCommit":true,"messageTitle":"Merge pull request #104 from Javiery3889/update-app-icon","messageBody":"Update app icon and include acknowledgement","fileTypesAndContributionMap":{}},{"hash":"c791d97b5e962a4a93d7593c08294b832cffe3f3","isMergeCommit":false,"messageTitle":"Update image path","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"4552dd3e23d3ee6f05131906a56a8ed22d25355b","isMergeCommit":true,"messageTitle":"Merge pull request #106 from Javiery3889/update-app-icon","messageBody":"Fix icon path in UiManager","tags":["v1.2"],"fileTypesAndContributionMap":{}}]},{"date":"2024-03-23","commitResults":[{"hash":"fa0880099f29544f78f6d666928a4164bcf0d96c","isMergeCommit":false,"messageTitle":"Add Meeting class to Model class diagram","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":0}}},{"hash":"770803f19c5ad4871f99bbae5d9bbc668bc1f853","isMergeCommit":false,"messageTitle":"Fix association arrowheads and roles alignment","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":5}}},{"hash":"ae4e811ad2354c607cc9182f78e317f96011153a","isMergeCommit":true,"messageTitle":"Merge pull request #113 from Javiery3889/update-model-class-diagram","messageBody":"Add Meeting class to Model class diagram","fileTypesAndContributionMap":{}}]},{"date":"2024-03-24","commitResults":[{"hash":"cffb90fe9ac5a2e2ef8e1ae23a1a9a409d7153b2","isMergeCommit":false,"messageTitle":"Enable assertions in build.gradle","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":4,"deletions":0}}},{"hash":"2058905b6832f4a48772ef402493bb5353e0905a","isMergeCommit":true,"messageTitle":"Merge pull request #116 from Javiery3889/enable-assertions-gradle","messageBody":"Enable assertions in `build.gradle`","fileTypesAndContributionMap":{}}]}],"YuZizhen":[{"date":"2024-02-29","commitResults":[{"hash":"7693c4ab4ce3b714b449bceadcf4bf69db1170be","isMergeCommit":false,"messageTitle":"Modify AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":14}}},{"hash":"c2a41a45cefdf01845354f586fb8fc3f809592a0","isMergeCommit":false,"messageTitle":"Update AboutUs format","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":11}}}]},{"date":"2024-03-01","commitResults":[{"hash":"6bd669797629d14f4dd372a61a9ba98f9666863f","isMergeCommit":false,"messageTitle":"Update AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":0}}},{"hash":"9c82a742016169785f02114d530367faf6d5e9a5","isMergeCommit":true,"messageTitle":"Merge pull request #61 from YuZizhen/branch-NewAboutUs","messageBody":"Modify AboutUs","fileTypesAndContributionMap":{}}]},{"date":"2024-03-02","commitResults":[{"hash":"57d195573113c4738f92426df3e23b7b12c41dcc","isMergeCommit":false,"messageTitle":"Update User Guide for Edit command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}}]},{"date":"2024-03-03","commitResults":[{"hash":"0f856f6383ebac506e2a83b4a87d2762a7ef85ea","isMergeCommit":false,"messageTitle":"Update User Guide description for Edit command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"fa51c2742cd68fb4dc4bcd13800eaef9bbab8ca1","isMergeCommit":false,"messageTitle":"Update User Guide for Edit command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"ba63abfdd3bcae90757b8aa7b9f716f89efd1194","isMergeCommit":true,"messageTitle":"Merge pull request #66 from YuZizhen/branch-EditCommandUserGuide","messageBody":"Update User Guide for Edit command","fileTypesAndContributionMap":{}}]}],"Dethada":[{"date":"2024-02-26","commitResults":[{"hash":"9af4eead3b53536c13306728624375cc2d0058e9","isMergeCommit":false,"messageTitle":"Update aboutus to include David\u0027s details","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":5}}},{"hash":"05900b8bb092f2d0cf34b19115946a75a67b9fda","isMergeCommit":false,"messageTitle":"Add docs for `schedule` and `unschedule` command","messageBody":"closes #16 and #17\n","fileTypesAndContributionMap":{"docs":{"insertions":38,"deletions":0}}},{"hash":"ad7d5b8c9c0f667889a4db93a2fcd67ce94f73b6","isMergeCommit":false,"messageTitle":"Fix datetime format in example","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"966e4f7a11f5ddec47ae7616aa2d866c23a1da8e","isMergeCommit":false,"messageTitle":"Add new commands to command summary table","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":0}}},{"hash":"ff6f827465d3c7c1c7940f53b0f085845ff6e8cc","isMergeCommit":false,"messageTitle":"Add use case for scheduling meeting with a new person","messageBody":"closes #38\n","fileTypesAndContributionMap":{"docs":{"insertions":29,"deletions":1}}},{"hash":"070a30d9030b2f9a7dde6e3f304c2b6a60277f3a","isMergeCommit":false,"messageTitle":"Rename AddressBook to FINDvisor in use case","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}}]},{"date":"2024-02-27","commitResults":[{"hash":"555f82a908551e26a76e34a5c8f56e27658c734a","isMergeCommit":true,"messageTitle":"Merge pull request #44 from Dethada/update-aboutus","messageBody":"Update aboutus to include David\u0027s details","fileTypesAndContributionMap":{}},{"hash":"bbf07ee6b3d90c968baa58f98166234585880b29","isMergeCommit":false,"messageTitle":"Update docs/UserGuide.md","messageBody":"Co-authored-by: Javier \u003cjaviery3889@gmail.com\u003e","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"ebe5c7a1fbe7fefc5dea2f1012a29d57d8e5d804","isMergeCommit":false,"messageTitle":"Add puncutation and fix spelling","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":5}}},{"hash":"9b5d3cd4c2a1d16ca61acad77190ec5e82c06254","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-use-case","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"572317d8f3e0ca86ff45489278b22e860b064da9","isMergeCommit":false,"messageTitle":"Change schedule command prefixes to match spec","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"961af5a8cfa8ffa5974b23d237363f29fe854564","isMergeCommit":false,"messageTitle":"Update datetime input and output formats to match spec","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":6}}},{"hash":"1632937d92dcb5f4f3a9b4855b94c540db098915","isMergeCommit":false,"messageTitle":"Only check if meeting start is not after current datetime in the command","messageBody":"Previously it was checked in the Meeting class, this would cause\nissues when we load previously scheduled meetings from the save file,\nwhich can have meeting start datetime that is before the current\ndatetime.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":17,"deletions":4}}},{"hash":"a82760a9f9529a4abaeda4c173bc39ec1c36c6be","isMergeCommit":false,"messageTitle":"Update command output to match spec","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":2}}},{"hash":"e1b7f93af94b710c7b9253bf86333810666206b1","isMergeCommit":true,"messageTitle":"Merge pull request #46 from Dethada/update-user-guide","messageBody":"Add docs for `schedule` and `unschedule` command","fileTypesAndContributionMap":{}},{"hash":"e822bb0c4ddf969d70f089fc15382d7e6f1b002f","isMergeCommit":true,"messageTitle":"Merge pull request #48 from Dethada/add-use-case","messageBody":"Add use case for scheduling meeting with a new person","fileTypesAndContributionMap":{}},{"hash":"3fe7ece44478cacb5f88e26be18f70d9942ace71","isMergeCommit":false,"messageTitle":"Update CI status link","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"f6ce696bf49c8495dd07546514787b04d29ce928","isMergeCommit":false,"messageTitle":"Update CI and codecov badges for website","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"50b4081d2697652aa5901eba3db6ded8dcf219f9","isMergeCommit":false,"messageTitle":"Update index.md with our information","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"ecf8ee4c5fff69561723bad73cd0a1215e4fc749","isMergeCommit":false,"messageTitle":"Add acknowledgement to AB3","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}},{"hash":"f86b2babeed8c70a346f218263bbfab5be5a8ec6","isMergeCommit":false,"messageTitle":"Update README with our information","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":10}}},{"hash":"9c24ad1b75b3d10b9b331b7ef79f8d9521be56b8","isMergeCommit":false,"messageTitle":"Italics looks more readable on the README","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"e9fed68ce584990276baf6a9b428def947527438","isMergeCommit":false,"messageTitle":"Fix product website link","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"4f07760207324bb540a646fe2617fd44b8c4fd6b","isMergeCommit":false,"messageTitle":"Add exit action to command summary table #47","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}}]},{"date":"2024-02-28","commitResults":[{"hash":"28d75bf5e296c4e867ae1300eed28e5b951e555e","isMergeCommit":true,"messageTitle":"Merge pull request #57 from Dethada/update-readme","messageBody":"Update README and index.md","fileTypesAndContributionMap":{}},{"hash":"0af960b0ebb0628932b03a3713b17cda68f04c59","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-exit-action","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"3a5d2f41a3a8155c5cc7e1eaf0f11b7fefcfa5bf","isMergeCommit":true,"messageTitle":"Merge pull request #58 from Dethada/add-exit-action","messageBody":"Add exit action to command summary table","fileTypesAndContributionMap":{}}]},{"date":"2024-03-11","commitResults":[{"hash":"bc8e08057a3daadf9f462ec87709f0a8b4c53a1c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into tutorial-adding-command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"3900e9e98a24e3ddd54e34bb78c0d292c381b41d","isMergeCommit":false,"messageTitle":"Additional renames to fix compilation errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":36,"deletions":36}}},{"hash":"8fbfcbacf7f19a8b88d872ab900281c69331eb60","isMergeCommit":false,"messageTitle":"Added Tests for DateTimeUtil","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":39,"deletions":0}}},{"hash":"5cf71617d5345901f005ad411415e0684a49b43b","isMergeCommit":false,"messageTitle":"Fix datetime format in meeting constraint message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"09ce2a27aeac88973d61f76416abfe135d00cc02","isMergeCommit":false,"messageTitle":"Add tests for schedule command","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":153,"deletions":0}}},{"hash":"7729e2e407ff637870e3a592e4f0138db96c4556","isMergeCommit":false,"messageTitle":"Remove unnecessary assertion and make use of class method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":4}}},{"hash":"e2fcebdc2fe7cd9b966eb94bf415653042757019","isMergeCommit":false,"messageTitle":"Only compare up to minutes for meeting equality check","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":4}}},{"hash":"f373ee19e625b5946524442363e949c4d868f3a6","isMergeCommit":false,"messageTitle":"Add tests for schedule command parser","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":48,"deletions":0}}},{"hash":"4a33992a7c191e65d3a2f6ab1957c629cfbccc3f","isMergeCommit":false,"messageTitle":"Add tests for Meeting","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":60,"deletions":0}}},{"hash":"4c4f33356196837254cf613542f0afade9060a2f","isMergeCommit":false,"messageTitle":"Update tests for person","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":0}}},{"hash":"ec90ed7048de1bc4e75b7b95e86dd2588b52db42","isMergeCommit":false,"messageTitle":"Add tests for JsonAdaptedMeeting and fix its expected behavior","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":4},"test-code":{"insertions":53,"deletions":0}}},{"hash":"be56029952a55c41c337e3801414be1834d4d2cd","isMergeCommit":false,"messageTitle":"Update tests for JsonAdaptedPersonTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":18,"deletions":0}}},{"hash":"f8e1b0d1534f6c1636e4e50346794a71fa56f137","isMergeCommit":false,"messageTitle":"Update tests for AddressBookParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":16,"deletions":0}}}]},{"date":"2024-03-12","commitResults":[{"hash":"c52e5f8a55b05360b97b1b453ee4de76231281b9","isMergeCommit":false,"messageTitle":"Fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":8,"deletions":7}}},{"hash":"6a1c781c3493f2f0348a3a414ed9d73e7e849330","isMergeCommit":false,"messageTitle":"Add unschedule command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":135,"deletions":0}}},{"hash":"7765168c16ab3e1f5e40d088e3d32e95af852156","isMergeCommit":false,"messageTitle":"Update AddressBookParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":8,"deletions":0}}},{"hash":"0303885299de72d36c6911d80e80b0004280f432","isMergeCommit":false,"messageTitle":"Add test for UnscheduleCommandParser","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":32,"deletions":0}}},{"hash":"38148778e9c91bd407529f0c2d2c65e4f0c6fffe","isMergeCommit":false,"messageTitle":"Add tests for UnscheduleCommandTest","messageBody":"- Also updated TypicalPersons and typicalPersonsAddressBook.json to\n accomadate for the new tests\n","fileTypesAndContributionMap":{"test-code":{"insertions":127,"deletions":1}}},{"hash":"c126b302d5e8fc472a6502e54c0756b302ee3dc9","isMergeCommit":false,"messageTitle":"Remove unused import","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}},{"hash":"65dc2f0b4765a8078078441d764d961732355c55","isMergeCommit":false,"messageTitle":"Fix java docs and use more sensible variable name in ScheduleCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":13}}}]},{"date":"2024-03-13","commitResults":[{"hash":"81d2e751f545d2f7c56735346a2b211f11d2be04","isMergeCommit":false,"messageTitle":"Update src/test/java/seedu/findvisor/model/person/MeetingTest.java","messageBody":"Co-authored-by: Koh Guan Zeh \u003c44768220+KohGuanZeh@users.noreply.github.com\u003e","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":5}}}]},{"date":"2024-03-15","commitResults":[{"hash":"333ed6a1fd63fa35d408ed676e97757ca2549977","isMergeCommit":false,"messageTitle":"Update src/main/java/seedu/findvisor/logic/commands/ScheduleCommand.java","messageBody":"Co-authored-by: Javier \u003cjaviery3889@gmail.com\u003e","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"cd753c8e5464f0c38dd769acdaa3d217e1fbfe46","isMergeCommit":true,"messageTitle":"Merge pull request #2 from Dethada/tutorial-adding-command","messageBody":"Add `schedule` command to schedule meetings","fileTypesAndContributionMap":{}},{"hash":"d3f5e29258cf23023d9c1e1d3fc25c3c7bf863cf","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into new-unschedule-command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"765990b91b9989baf05ea80c91e9a0690ad438fb","isMergeCommit":false,"messageTitle":"Test for when there is no meeting to unschedule","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":0}}}]},{"date":"2024-03-16","commitResults":[{"hash":"9a6e27e8743c845e929f09743c50469078b4e199","isMergeCommit":false,"messageTitle":"Fix javadoc for Meeting class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":3}}},{"hash":"ac8d72c8e455ebd937ee2255268b8ded6d4c8253","isMergeCommit":true,"messageTitle":"Merge pull request #72 from Dethada/new-unschedule-command","messageBody":"Add unschedule Command","fileTypesAndContributionMap":{}},{"hash":"ba93d4b794c23a26d8c24f5eea879271ae559acd","isMergeCommit":true,"messageTitle":"Merge pull request #86 from Dethada/fix-meeting-javadoc","messageBody":"Fix javadoc for Meeting class","fileTypesAndContributionMap":{}}]},{"date":"2024-03-19","commitResults":[{"hash":"4f5f476d7ae8184d53a54839172c86779b1d6f56","isMergeCommit":true,"messageTitle":"Merge pull request #87 from Dethada/fix-test-json-missing-meeting-field","messageBody":"Add missing meeting fields for json test files","fileTypesAndContributionMap":{}},{"hash":"3f22237a7f5117978537c6a0c6d29bd59701a77a","isMergeCommit":false,"messageTitle":"Add remark field to meeting","messageBody":"- Edited Schedule Command to take in an optional field remark\n- Meeting now has additional string field for remark\n","fileTypesAndContributionMap":{"functional-code":{"insertions":35,"deletions":11}}},{"hash":"a6202c60bfd3b57ee95d0aa077fb224cc5ca28e9","isMergeCommit":false,"messageTitle":"Fix checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":2}}},{"hash":"efedf5a286a1a1c8de9dcaf21615e4f638bac92c","isMergeCommit":false,"messageTitle":"Update existing tests to work with remark","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":33,"deletions":21}}},{"hash":"d29f112e78150229da1448b19565f6a5a44620e4","isMergeCommit":false,"messageTitle":"Copy over the meeting object to the newly edited person","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":1}}},{"hash":"cff1b066709d722e45fd2b0a546a4ade26fdb8ca","isMergeCommit":false,"messageTitle":"Add commment to explain why we are copying from personToEdit directly","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"823ba9a2c916b78b043c9048a7488b02b84407fc","isMergeCommit":false,"messageTitle":"Add test for this bug so we don\u0027t regress","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":21,"deletions":0}}},{"hash":"a2572c50d22fcabe202fb7b98b22cc1e45bf86b9","isMergeCommit":false,"messageTitle":"Meeting equality now also depends on remark","messageBody":"- Update tests to support this change\n","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1},"test-code":{"insertions":42,"deletions":1}}},{"hash":"994930f31f633d5c1920e10a4341872cc03dba41","isMergeCommit":false,"messageTitle":"Update tests for JsonAdaptedMeeting","messageBody":"- Also defined equals method for JsonAdaptedMeeting\n","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":0},"test-code":{"insertions":37,"deletions":0}}},{"hash":"d60a6d9f52f37ae467a93b5dd75fcecb45dc2bb9","isMergeCommit":false,"messageTitle":"Update schedule command tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":39,"deletions":1}}},{"hash":"4cc10f986d271cbeac06501a0c243f80a2c9e19a","isMergeCommit":false,"messageTitle":"Update json adapted tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":38,"deletions":22}}},{"hash":"25d68376e0284cc6584f4caaffcad30a6a4f638f","isMergeCommit":false,"messageTitle":"Update ScheduleCommand usage message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":0}}},{"hash":"26e00f7d1a105a251ed9a1a457eca13f44ac8276","isMergeCommit":false,"messageTitle":"Add a comment to make it clear up poential confusion","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":0}}},{"hash":"4942abc67eb4f50947638ad1596e56b281c53256","isMergeCommit":false,"messageTitle":"Add test class for Messages","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":34,"deletions":0}}},{"hash":"b065acbffdde1fadcb10455c8ab1e8cef896bd83","isMergeCommit":false,"messageTitle":"Add test for equals() for JsonAdaptedMeeting","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":29,"deletions":0}}},{"hash":"62751796a1b0bd7362d2f3a8e8253b1075dc2eba","isMergeCommit":false,"messageTitle":"Add test for invalid dateTime order in JsonAdaptedMeeting::toModelType","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":9,"deletions":1}}},{"hash":"db6969e9bb590ee7bd8253f6ff78f954aa7e483f","isMergeCommit":true,"messageTitle":"Merge pull request #96 from Dethada/bugfix/95-edit-track-meeting","messageBody":"bugfix for edit not copyign meeting details over","fileTypesAndContributionMap":{}},{"hash":"0660730769d996c495712c5eec8a42171b11f5ca","isMergeCommit":false,"messageTitle":"Fix fomrat string being printed as string literal","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":2,"deletions":1}}},{"hash":"c716021a9be1356a372889dfaf2cbafafcac7e71","isMergeCommit":true,"messageTitle":"Merge pull request #102 from Dethada/bugfix/unschedule-not-showing-name","messageBody":"Fix fomrat string being printed as string literal","fileTypesAndContributionMap":{}}]},{"date":"2024-03-22","commitResults":[{"hash":"47990a0567378c1848985b70909398dc469b43ae","isMergeCommit":false,"messageTitle":"Add JsonAdaptedMeeting to diagram","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":0}}},{"hash":"0d23581bfb27dffa4a7e9405a4f5edf377ddfecb","isMergeCommit":false,"messageTitle":"Fix multiplicity","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-23","commitResults":[{"hash":"e55999f92a1cdd48708314b412cebb9e9eb3ef68","isMergeCommit":true,"messageTitle":"Merge pull request #112 from Dethada/update/storage-class-diagram","messageBody":"Update Storage class diagram","fileTypesAndContributionMap":{}}]},{"date":"2024-03-24","commitResults":[{"hash":"931f3a32e43b9f3365704d1f38d28e18ce4cce25","isMergeCommit":false,"messageTitle":"Use valid meeting remark to isolate test for invalid datetime","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":1}}},{"hash":"05bf942b9c142b0afcab91c4f650bdc2530b3478","isMergeCommit":false,"messageTitle":"Remove stray print statement","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}},{"hash":"6311ff731e4a6d5dd659eff5d010d78491517a2d","isMergeCommit":true,"messageTitle":"Merge pull request #97 from Dethada/feature/78-meeting-remark","messageBody":"Feature: Meeting\u0027s can store remark","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Arixeyeion":{"docs":111,"functional-code":9,"test-code":36},"KohGuanZeh":{"docs":207,"functional-code":331,"test-code":432,"other":1},"Javiery3889":{"docs":63,"functional-code":276,"test-code":575,"other":4},"YuZizhen":{"docs":17,"functional-code":0,"test-code":0},"Dethada":{"docs":87,"functional-code":289,"test-code":803}},"authorContributionVariance":{"Arixeyeion":526.5515,"KohGuanZeh":77146.16,"Javiery3889":42662.164,"YuZizhen":72.15194,"Dethada":15556.958},"authorDisplayNameMap":{"Arixeyeion":"CS2103-F15-1 LIM ..INIC","KohGuanZeh":"CS2103-F15-1 KOH .. ZEH","Javiery3889":"CS2103-F15-1 YONG..VIER","YuZizhen":"CS2103-F15-1 YU Z..ZHEN","Dethada":"CS2103-F15-1 DAVI..YUAN"}} diff --git a/AY2324S2-CS2103T-F10-4_tp_master/authorship.json b/AY2324S2-CS2103T-F10-4_tp_master/authorship.json index 41945465..d14265c7 100644 --- a/AY2324S2-CS2103T-F10-4_tp_master/authorship.json +++ b/AY2324S2-CS2103T-F10-4_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"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":2,"author":{"gitId":"-"},"content":"[![codecov](https://codecov.io/gh/AY2324S2-CS2103T-F10-4/tp/graph/badge.svg?token\u003dH2P9OR4JFH)](https://codecov.io/gh/AY2324S2-CS2103T-F10-4/tp)","lastModifiedDate":"2024-02-21"},{"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":"YowSiaoKang"},"content":"* Welcome to **Match**.\u003cbr\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":7,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":8,"author":{"gitId":"YowSiaoKang"},"content":" Created for Bob who:","lastModifiedDate":"2024-03-06"},{"lineNumber":9,"author":{"gitId":"YowSiaoKang"},"content":" - works as the coordinator of a volunteer befriending organization","lastModifiedDate":"2024-03-06"},{"lineNumber":10,"author":{"gitId":"YowSiaoKang"},"content":" - can type fast due to his 20 years of experience working in an office job","lastModifiedDate":"2024-03-06"},{"lineNumber":11,"author":{"gitId":"YowSiaoKang"},"content":" - has carpal tunnel and would appreciate if there is smart tools to reduce the typing","lastModifiedDate":"2024-03-06"},{"lineNumber":12,"author":{"gitId":"YowSiaoKang"},"content":" - is forgetful and forgets the person that he has assigns","lastModifiedDate":"2024-03-06"},{"lineNumber":13,"author":{"gitId":"YowSiaoKang"},"content":" - day-to-day job involves matching volunteers and beneficiaries","lastModifiedDate":"2024-03-06"},{"lineNumber":14,"author":{"gitId":"YowSiaoKang"},"content":"\u003e [!CAUTION]","lastModifiedDate":"2024-03-06"},{"lineNumber":15,"author":{"gitId":"YowSiaoKang"},"content":"\u003e Problem: The challenge of efficiently managing a diverse group of volunteers. This includes tracking each volunteer’s availability, skills, interests, and participation in various activities.","lastModifiedDate":"2024-03-06"},{"lineNumber":16,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":17,"author":{"gitId":"YowSiaoKang"},"content":"\u003e [!TIP]","lastModifiedDate":"2024-03-06"},{"lineNumber":18,"author":{"gitId":"YowSiaoKang"},"content":"\u003e Solution: Match streamlines volunteer management, facilitating efficient scheduling, and coordination of volunteers, ultimately saving time and resources for organizations focused on social impact.","lastModifiedDate":"2024-03-06"},{"lineNumber":19,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":20,"author":{"gitId":"-"},"content":"* For the detailed documentation of this project, see the **[Address Book Product Website](https://ay2324s2-cs2103t-f10-4.github.io/tp/)**.","lastModifiedDate":"2024-02-21"},{"lineNumber":21,"author":{"gitId":"YowSiaoKang"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"-":6,"YowSiaoKang":15}},{"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":"SimKianSeng"},"content":"You can reach us at the following emails `simkianseng28@gmail.com`, `bensonang36@gmail.com`, `ho.xu.wen@gmail.com`, `ziyitay1@gmail.com`, `kangyow4@gmail.com`.","lastModifiedDate":"2024-03-06"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17"},{"lineNumber":10,"author":{"gitId":"SimKianSeng"},"content":"## Project Team","lastModifiedDate":"2024-03-06"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"SimKianSeng"},"content":"### Sim Kian Seng","lastModifiedDate":"2024-03-06"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"SimKianSeng"},"content":"\u003cimg src\u003d\"images/simkianseng.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"SimKianSeng"},"content":"[[github](https://github.com/SimKianSeng)]","lastModifiedDate":"2024-03-06"},{"lineNumber":17,"author":{"gitId":"SimKianSeng"},"content":"[[portfolio](team/simkianseng)]","lastModifiedDate":"2024-03-06"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"YowSiaoKang"},"content":"- Role: Team Lead/ Developer","lastModifiedDate":"2024-03-07"},{"lineNumber":20,"author":{"gitId":"YowSiaoKang"},"content":"- Responsibilities: In charge of project coordination, documentation","lastModifiedDate":"2024-03-07"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"SimKianSeng"},"content":"### Benson Ang Wei Kiat","lastModifiedDate":"2024-03-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"Benson15912"},"content":"\u003cimg src\u003d\"images/benson15912.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-07"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"SimKianSeng"},"content":"[[github](http://github.com/Benson15912)]","lastModifiedDate":"2024-03-06"},{"lineNumber":27,"author":{"gitId":"Benson15912"},"content":"[[portfolio](team/benson15912)]","lastModifiedDate":"2024-03-07"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"YowSiaoKang"},"content":"- Role: Developer","lastModifiedDate":"2024-03-07"},{"lineNumber":30,"author":{"gitId":"YowSiaoKang"},"content":"- Responsibilities: In charge of components integration","lastModifiedDate":"2024-03-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"SimKianSeng"},"content":"### Ho Xu Wen","lastModifiedDate":"2024-03-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"xuwen-ho"},"content":"\u003cimg src\u003d\"images/xuwen-ho.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"SimKianSeng"},"content":"[[github](http://github.com/xuwen-ho)]","lastModifiedDate":"2024-03-06"},{"lineNumber":37,"author":{"gitId":"xuwen-ho"},"content":"[[portfolio](team/xuwen-ho)]","lastModifiedDate":"2024-03-07"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"YowSiaoKang"},"content":"- Role: Developer","lastModifiedDate":"2024-03-07"},{"lineNumber":40,"author":{"gitId":"xuwen-ho"},"content":"- Responsibilities: In charge of deliverables, deadlines and UI","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"SimKianSeng"},"content":"### Tay Zi Yi","lastModifiedDate":"2024-03-06"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"tayziyi"},"content":"\u003cimg src\u003d\"images/tayziyi.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"SimKianSeng"},"content":"[[github](http://github.com/tayziyi)]","lastModifiedDate":"2024-03-06"},{"lineNumber":47,"author":{"gitId":"SimKianSeng"},"content":"[[portfolio](team/tayziyi)]","lastModifiedDate":"2024-03-06"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"YowSiaoKang"},"content":"- Role: Developer","lastModifiedDate":"2024-03-07"},{"lineNumber":50,"author":{"gitId":"tayziyi"},"content":"- Responsibilities: In charge of coding quality","lastModifiedDate":"2024-03-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"SimKianSeng"},"content":"### Yow Siao Kang","lastModifiedDate":"2024-03-06"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"YowSiaoKang"},"content":"\u003cimg src\u003d\"images/yowsiaokang.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-07"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"SimKianSeng"},"content":"[[github](http://github.com/YowSiaoKang)]","lastModifiedDate":"2024-03-06"},{"lineNumber":57,"author":{"gitId":"SimKianSeng"},"content":"[[portfolio](team/yowsiaokang)]","lastModifiedDate":"2024-03-06"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"YowSiaoKang"},"content":"- Role: Developer","lastModifiedDate":"2024-03-07"},{"lineNumber":60,"author":{"gitId":"YowSiaoKang"},"content":"- Responsibilities: In charge of testing","lastModifiedDate":"2024-03-07"}],"authorContributionMap":{"tayziyi":2,"Benson15912":2,"SimKianSeng":16,"xuwen-ho":3,"-":28,"YowSiaoKang":9}},{"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 continues till the end of diagram.","lastModifiedDate":"2024-02-09"},{"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).\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-02-09"},{"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 an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Logic.png)","lastModifiedDate":"2024-02-09"},{"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":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":207,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Model.png)","lastModifiedDate":"2024-02-09"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"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":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"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":"xuwen-ho"},"content":"**Target User Profile**:","lastModifiedDate":"2024-03-06"},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"xuwen-ho"},"content":"- Bob is the coordinator of a volunteer befriending organization.","lastModifiedDate":"2024-03-06"},{"lineNumber":266,"author":{"gitId":"xuwen-ho"},"content":"- He can type fast due to his 20 years of experience working in an office job.","lastModifiedDate":"2024-03-06"},{"lineNumber":267,"author":{"gitId":"xuwen-ho"},"content":"- He has carpal tunnel and would appreciate tools to reduce typing.","lastModifiedDate":"2024-03-06"},{"lineNumber":268,"author":{"gitId":"xuwen-ho"},"content":"- His day-to-day job involves matching volunteers and beneficiaries based on availability.","lastModifiedDate":"2024-03-06"},{"lineNumber":269,"author":{"gitId":"xuwen-ho"},"content":"- He is forgetful and often forgets the assignments he has made.","lastModifiedDate":"2024-03-06"},{"lineNumber":270,"author":{"gitId":"xuwen-ho"},"content":"- He has bad eyesight and cannot see small or low-contrast texts.","lastModifiedDate":"2024-03-06"},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"xuwen-ho"},"content":"**Value Proposition**:","lastModifiedDate":"2024-03-06"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":274,"author":{"gitId":"xuwen-ho"},"content":"Match streamlines volunteer management, facilitating efficient scheduling and coordination of volunteers, ultimately saving time and resources for organizations focused on social impact. It helps Bob efficiently manage a diverse group of volunteers by tracking their availability.","lastModifiedDate":"2024-03-06"},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"xuwen-ho"},"content":"**User Stories**:","lastModifiedDate":"2024-03-06"},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":278,"author":{"gitId":"xuwen-ho"},"content":"Priority: High (must have) - `***`, Medium (nice to have) - `**`, Low (unlikely to have) - `*`","lastModifiedDate":"2024-03-07"},{"lineNumber":279,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":280,"author":{"gitId":"xuwen-ho"},"content":"| Priority | As a … | I want to … | So that I can… |","lastModifiedDate":"2024-03-06"},{"lineNumber":281,"author":{"gitId":"-"},"content":"| -------- | ------------------------------------------ | ------------------------------ | ---------------------------------------------------------------------- |","lastModifiedDate":"2020-05-23"},{"lineNumber":282,"author":{"gitId":"xuwen-ho"},"content":"| `*` | new user | see usage instructions | refer to instructions when I forget how to use the App |","lastModifiedDate":"2024-03-06"},{"lineNumber":283,"author":{"gitId":"xuwen-ho"},"content":"| `***` | coordinator | add a new volunteer | keep track of all volunteers in the organization |","lastModifiedDate":"2024-03-06"},{"lineNumber":284,"author":{"gitId":"xuwen-ho"},"content":"| `***` | coordinator | view a volunteer\u0027s details | match volunteers with beneficiaries based on their availability, skills, and interests |","lastModifiedDate":"2024-03-06"},{"lineNumber":285,"author":{"gitId":"xuwen-ho"},"content":"| `***` | coordinator | update a volunteer\u0027s information | keep volunteer information up-to-date |","lastModifiedDate":"2024-03-06"},{"lineNumber":286,"author":{"gitId":"xuwen-ho"},"content":"| `***` | coordinator | delete a volunteer | remove volunteers who are no longer with the organization |","lastModifiedDate":"2024-03-06"},{"lineNumber":287,"author":{"gitId":"xuwen-ho"},"content":"| `***` | coordinator | find volunteers by name | quickly locate a specific volunteer\u0027s information |","lastModifiedDate":"2024-03-06"},{"lineNumber":288,"author":{"gitId":"xuwen-ho"},"content":"| `**` | coordinator | view a list of all volunteers | have an overview of all registered volunteers |","lastModifiedDate":"2024-03-06"},{"lineNumber":289,"author":{"gitId":"xuwen-ho"},"content":"| `**` | coordinator | find volunteers by availability | match volunteers with beneficiaries based on their availability |","lastModifiedDate":"2024-03-06"},{"lineNumber":290,"author":{"gitId":"xuwen-ho"},"content":"| `*` | coordinator | use a GUI with large fonts and high contrast | easily view information with my bad eyesight |","lastModifiedDate":"2024-03-06"},{"lineNumber":291,"author":{"gitId":"xuwen-ho"},"content":"| `*` | coordinator | use keyboard shortcuts | reduce typing due to my carpal tunnel |","lastModifiedDate":"2024-03-06"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":293,"author":{"gitId":"xuwen-ho"},"content":"**Use Cases**:","lastModifiedDate":"2024-03-06"},{"lineNumber":294,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":295,"author":{"gitId":"xuwen-ho"},"content":"**Use case: Add a Volunteer**","lastModifiedDate":"2024-03-06"},{"lineNumber":296,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":297,"author":{"gitId":"xuwen-ho"},"content":"**Actor**: Coordinator (Bob)","lastModifiedDate":"2024-03-06"},{"lineNumber":298,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":299,"author":{"gitId":"xuwen-ho"},"content":"**Precondition**: Coordinator has launched the application and is on the main screen.","lastModifiedDate":"2024-03-06"},{"lineNumber":300,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":301,"author":{"gitId":"xuwen-ho"},"content":"**Main Success Scenario**:","lastModifiedDate":"2024-03-06"},{"lineNumber":302,"author":{"gitId":"SimKianSeng"},"content":"1. Coordinator adds a new volunteer.","lastModifiedDate":"2024-03-09"},{"lineNumber":303,"author":{"gitId":"SimKianSeng"},"content":"2. Coordinator is required to enter the volunteer\u0027s name, phone number, email and availability.","lastModifiedDate":"2024-03-09"},{"lineNumber":304,"author":{"gitId":"xuwen-ho"},"content":"3. Coordinator enters the required information in the correct format.","lastModifiedDate":"2024-03-06"},{"lineNumber":305,"author":{"gitId":"xuwen-ho"},"content":"4. The system validates the input and displays a confirmation message: \"Volunteer [volunteer_name] has been added successfully.\"","lastModifiedDate":"2024-03-06"},{"lineNumber":306,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":307,"author":{"gitId":"xuwen-ho"},"content":"**Extensions**:","lastModifiedDate":"2024-03-06"},{"lineNumber":308,"author":{"gitId":"xuwen-ho"},"content":"3a. The coordinator enters invalid data for any of the fields.","lastModifiedDate":"2024-03-06"},{"lineNumber":309,"author":{"gitId":"xuwen-ho"},"content":" 3a1. The system displays an error message indicating the nature of the error (e.g., \"[Parameter] is invalid,\" \"[Parameter] is missing,\" \"[Parameter] is specified multiple times\").","lastModifiedDate":"2024-03-06"},{"lineNumber":310,"author":{"gitId":"xuwen-ho"},"content":" 3a2. The coordinator corrects the input and continues from step 3.","lastModifiedDate":"2024-03-06"},{"lineNumber":311,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":312,"author":{"gitId":"xuwen-ho"},"content":"**Use case: Find a Volunteer\u0027s Information**","lastModifiedDate":"2024-03-06"},{"lineNumber":313,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":314,"author":{"gitId":"xuwen-ho"},"content":"**Actor**: Coordinator (Bob)","lastModifiedDate":"2024-03-06"},{"lineNumber":315,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":316,"author":{"gitId":"xuwen-ho"},"content":"**Precondition**: Coordinator has launched the application and is on the main screen.","lastModifiedDate":"2024-03-06"},{"lineNumber":317,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":318,"author":{"gitId":"xuwen-ho"},"content":"**Main Success Scenario**:","lastModifiedDate":"2024-03-06"},{"lineNumber":319,"author":{"gitId":"xuwen-ho"},"content":"1. Coordinator selects the \"Find Volunteer\" option.","lastModifiedDate":"2024-03-06"},{"lineNumber":320,"author":{"gitId":"xuwen-ho"},"content":"2. The system prompts the coordinator to enter the volunteer\u0027s name.","lastModifiedDate":"2024-03-06"},{"lineNumber":321,"author":{"gitId":"xuwen-ho"},"content":"3. Coordinator enters the volunteer\u0027s name (or a part of it).","lastModifiedDate":"2024-03-06"},{"lineNumber":322,"author":{"gitId":"xuwen-ho"},"content":"4. The system displays all volunteers whose names contain the entered keywords.","lastModifiedDate":"2024-03-06"},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":324,"author":{"gitId":"xuwen-ho"},"content":"**Extensions**:","lastModifiedDate":"2024-03-06"},{"lineNumber":325,"author":{"gitId":"xuwen-ho"},"content":"4a. No volunteers match the entered name.","lastModifiedDate":"2024-03-06"},{"lineNumber":326,"author":{"gitId":"xuwen-ho"},"content":" 4a1. The system displays an error message: \"No volunteers found.\"","lastModifiedDate":"2024-03-06"},{"lineNumber":327,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":328,"author":{"gitId":"xuwen-ho"},"content":"**Use case: View Entire List of Volunteers**","lastModifiedDate":"2024-03-06"},{"lineNumber":329,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":330,"author":{"gitId":"xuwen-ho"},"content":"**Actor**: Coordinator (Bob)","lastModifiedDate":"2024-03-06"},{"lineNumber":331,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":332,"author":{"gitId":"xuwen-ho"},"content":"**Precondition**: Coordinator has launched the application and is on the main screen.","lastModifiedDate":"2024-03-06"},{"lineNumber":333,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":334,"author":{"gitId":"xuwen-ho"},"content":"**Main Success Scenario**:","lastModifiedDate":"2024-03-06"},{"lineNumber":335,"author":{"gitId":"xuwen-ho"},"content":"1. Coordinator selects the \"List Volunteers\" option.","lastModifiedDate":"2024-03-06"},{"lineNumber":336,"author":{"gitId":"xuwen-ho"},"content":"2. The system displays the entire list of volunteers, along with their details, in the GUI.","lastModifiedDate":"2024-03-06"},{"lineNumber":337,"author":{"gitId":"xuwen-ho"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":338,"author":{"gitId":"xuwen-ho"},"content":"**Extensions**:","lastModifiedDate":"2024-03-06"},{"lineNumber":339,"author":{"gitId":"xuwen-ho"},"content":"2a. There are no volunteers in the address book.","lastModifiedDate":"2024-03-06"},{"lineNumber":340,"author":{"gitId":"xuwen-ho"},"content":" 2a1. The system displays a message: \"There are no volunteers in the address book.\"","lastModifiedDate":"2024-03-06"},{"lineNumber":341,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":342,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":343,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":344,"author":{"gitId":"SimKianSeng"},"content":"1. Should work on any *mainstream OS* as long as it has Java `11` or above installed.","lastModifiedDate":"2024-03-09"},{"lineNumber":345,"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":346,"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":347,"author":{"gitId":"SimKianSeng"},"content":"4. Should be able to run the application without internet connection.","lastModifiedDate":"2024-03-09"},{"lineNumber":348,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":349,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":350,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":351,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09"},{"lineNumber":352,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23"},{"lineNumber":353,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":354,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":355,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":356,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":357,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":358,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":359,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":360,"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":361,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":362,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":363,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":364,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":365,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":366,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":367,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":368,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":369,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":370,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":371,"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":372,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":373,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":374,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":375,"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":376,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":377,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":378,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":379,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":380,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":381,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":382,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":383,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":384,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":385,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":386,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":387,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":388,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":389,"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":390,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":391,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":392,"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":393,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":394,"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":395,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":396,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":397,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":398,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":399,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":400,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":401,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":402,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":403,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":404,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":405,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"SimKianSeng":4,"xuwen-ho":54,"-":347}},{"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":"SimKianSeng"},"content":"ui -[UI_COLOR]\u003e logic : save execute(\"delete 1\")","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"activate logic LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"xuwen-ho"},"content":"alt confirm deletion","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"SimKianSeng"},"content":" logic --[LOGIC_COLOR]\u003e ui : Ask for confirmation","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"SimKianSeng"},"content":" user -[USER_COLOR]\u003e ui : \"y\"","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"SimKianSeng"},"content":" ui -[UI_COLOR]\u003e logic : execute(\"delete 1\")","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":" logic -[LOGIC_COLOR]\u003e model : deletePerson(p)","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":" activate model MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":" model -[MODEL_COLOR]-\u003e logic","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":" deactivate model","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":" logic -[LOGIC_COLOR]\u003e storage : saveAddressBook(addressBook)","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":" activate storage STORAGE_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":" storage -[STORAGE_COLOR]\u003e storage : Save to file","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":" activate storage STORAGE_COLOR_T1","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":" storage --[STORAGE_COLOR]\u003e storage","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" deactivate storage","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":36,"author":{"gitId":"-"},"content":" storage --[STORAGE_COLOR]\u003e logic","lastModifiedDate":"2019-07-03"},{"lineNumber":37,"author":{"gitId":"-"},"content":" deactivate storage","lastModifiedDate":"2019-07-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":" logic --[LOGIC_COLOR]\u003e ui","lastModifiedDate":"2019-07-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":" deactivate logic","lastModifiedDate":"2019-07-03"},{"lineNumber":41,"author":{"gitId":"xuwen-ho"},"content":" ui--[UI_COLOR]\u003e user","lastModifiedDate":"2024-03-22"},{"lineNumber":42,"author":{"gitId":"xuwen-ho"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":43,"author":{"gitId":"xuwen-ho"},"content":"else abort deletion","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"xuwen-ho"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"xuwen-ho"},"content":" user -[USER_COLOR]\u003e ui : \"n\"","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":47,"author":{"gitId":"-"},"content":" ui--[UI_COLOR]\u003e user","lastModifiedDate":"2019-07-03"},{"lineNumber":48,"author":{"gitId":"-"},"content":" deactivate ui","lastModifiedDate":"2019-07-03"},{"lineNumber":49,"author":{"gitId":"xuwen-ho"},"content":"end","lastModifiedDate":"2024-03-22"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":51,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"SimKianSeng":4,"xuwen-ho":7,"-":40}},{"path":"docs/diagrams/CommitActivityDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"skin rose","lastModifiedDate":"2023-07-27"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ActivityFontSize 15","lastModifiedDate":"2023-07-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam ArrowFontSize 12","lastModifiedDate":"2023-07-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"start","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"SimKianSeng"},"content":":User enters command;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"SimKianSeng"},"content":"if () then ([Decline confirmation])","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"SimKianSeng"},"content":" stop","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"SimKianSeng"},"content":"else ([Accept confirmation])","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"if () then ([command commits AddressBook])","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":" :Purge redundant states;","lastModifiedDate":"2020-12-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":" :Save AddressBook to","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":" addressBookStateList;","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"else ([else])","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"endif","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"stop","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"SimKianSeng":4,"-":15}},{"path":"docs/diagrams/FindSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"tayziyi"},"content":"@startuml","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"tayziyi"},"content":"!include style.puml","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"tayziyi"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"tayziyi"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"tayziyi"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"tayziyi"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"tayziyi"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"tayziyi"},"content":"participant \":FindCommandParser\" as FindCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"tayziyi"},"content":"participant \"d:FindCommand\" as FindCommand LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"tayziyi"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"tayziyi"},"content":"end box","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"tayziyi"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"tayziyi"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"tayziyi"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"tayziyi"},"content":"end box","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"tayziyi"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"tayziyi"},"content":"[-\u003e LogicManager : execute(\"find alex\")","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"tayziyi"},"content":"activate LogicManager","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"tayziyi"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"tayziyi"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"find alex\")","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"tayziyi"},"content":"activate AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"tayziyi"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"tayziyi"},"content":"create FindCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"tayziyi"},"content":"AddressBookParser -\u003e FindCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"tayziyi"},"content":"activate FindCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"tayziyi"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"tayziyi"},"content":"FindCommandParser --\u003e AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"tayziyi"},"content":"deactivate FindCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"tayziyi"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"tayziyi"},"content":"AddressBookParser -\u003e FindCommandParser : parse(\"alex\")","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"tayziyi"},"content":"activate FindCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"tayziyi"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"tayziyi"},"content":"create FindCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"tayziyi"},"content":"FindCommandParser -\u003e FindCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"tayziyi"},"content":"activate FindCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"tayziyi"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"tayziyi"},"content":"FindCommand --\u003e FindCommandParser :","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"tayziyi"},"content":"deactivate FindCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"tayziyi"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"tayziyi"},"content":"FindCommandParser --\u003e AddressBookParser : d","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"tayziyi"},"content":"deactivate FindCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"tayziyi"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"tayziyi"},"content":"FindCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"tayziyi"},"content":"destroy FindCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"tayziyi"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"tayziyi"},"content":"AddressBookParser --\u003e LogicManager : d","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"tayziyi"},"content":"deactivate AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"tayziyi"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"tayziyi"},"content":"LogicManager -\u003e FindCommand : execute(m)","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"tayziyi"},"content":"activate FindCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"tayziyi"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"tayziyi"},"content":"FindCommand -\u003e Model : updateFilteredPersonList(alex)","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"tayziyi"},"content":"activate Model","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"tayziyi"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"tayziyi"},"content":"Model --\u003e FindCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"tayziyi"},"content":"deactivate Model","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"tayziyi"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"tayziyi"},"content":"create CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"tayziyi"},"content":"FindCommand -\u003e CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"tayziyi"},"content":"activate CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"tayziyi"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"tayziyi"},"content":"CommandResult --\u003e FindCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"tayziyi"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"tayziyi"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"tayziyi"},"content":"FindCommand --\u003e LogicManager : r","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"tayziyi"},"content":"deactivate FindCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"tayziyi"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"tayziyi"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"tayziyi"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"tayziyi"},"content":"@enduml","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"tayziyi":70}},{"path":"docs/diagrams/LogicClassDiagram.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 LOGIC_COLOR_T4","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"package Logic as LogicPackage {","lastModifiedDate":"2023-07-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"package \"Parser Classes\" as ParserClasses{","lastModifiedDate":"2024-02-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-02-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"Class XYZCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"Class CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"Class \"{abstract}\\nCommand\" as Command","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nLogic\" as Logic","lastModifiedDate":"2022-01-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Class LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"SimKianSeng"},"content":"Class Confirmation","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"package Model {","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Class HiddenModel #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":"package Storage {","lastModifiedDate":"2021-03-30"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-03-30"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-03-30"},{"lineNumber":28,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Logic","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"LogicManager .right.|\u003e Logic","lastModifiedDate":"2021-07-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"LogicManager -right-\u003e\"1\" ParserClasses","lastModifiedDate":"2024-02-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":"ParserClasses ..\u003e XYZCommand : \u003c\u003ccreate\u003e\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"XYZCommand -up-|\u003e Command","lastModifiedDate":"2019-07-03"},{"lineNumber":36,"author":{"gitId":"-"},"content":"LogicManager .left.\u003e Command : \u003c\u003ccall\u003e\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"LogicManager --\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"LogicManager --\u003e Storage","lastModifiedDate":"2021-03-30"},{"lineNumber":40,"author":{"gitId":"-"},"content":"Storage --[hidden] Model","lastModifiedDate":"2021-03-30"},{"lineNumber":41,"author":{"gitId":"-"},"content":"Command .[hidden]up.\u003e Storage","lastModifiedDate":"2021-03-30"},{"lineNumber":42,"author":{"gitId":"-"},"content":"Command .right.\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"note right of XYZCommand: XYZCommand \u003d AddCommand, \\nFindCommand, etc","lastModifiedDate":"2019-07-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"Logic ..\u003e CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"LogicManager .down.\u003e CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":47,"author":{"gitId":"SimKianSeng"},"content":"LogicManager .down.\u003e Confirmation","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":"Command .up.\u003e CommandResult : \u003c\u003ccreate\u003e\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"SimKianSeng":2,"-":47}},{"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":"-"},"content":"Class UniquePersonList","lastModifiedDate":"2021-07-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Class Person","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Class Email","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Class Name","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Class Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"YowSiaoKang"},"content":"Class Availability","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":"Class Tag","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":23,"author":{"gitId":"-"},"content":"Class I #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"AddressBook .up.|\u003e ReadOnlyAddressBook","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"ModelManager .up.|\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"Model .right.\u003e ReadOnlyUserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":33,"author":{"gitId":"-"},"content":"Model .left.\u003e ReadOnlyAddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"ModelManager -left-\u003e \"1\" AddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":"ModelManager -right-\u003e \"1\" UserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"UserPrefs .up.|\u003e ReadOnlyUserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"AddressBook *--\u003e \"1\" UniquePersonList","lastModifiedDate":"2019-07-30"},{"lineNumber":39,"author":{"gitId":"-"},"content":"UniquePersonList --\u003e \"~* all\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":40,"author":{"gitId":"-"},"content":"Person *--\u003e Name","lastModifiedDate":"2019-07-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"Person *--\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"Person *--\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":43,"author":{"gitId":"YowSiaoKang"},"content":"Person *--\u003e \"*\" Availability","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":"Person *--\u003e \"*\" Tag","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"Person -[hidden]up--\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":"UniquePersonList -[hidden]right-\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"Name -[hidden]right-\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":50,"author":{"gitId":"YowSiaoKang"},"content":"Phone -[hidden]right-\u003e Email","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"YowSiaoKang"},"content":"Email -[hidden]right-\u003e Availability","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":53,"author":{"gitId":"-"},"content":"ModelManager --\u003e \"~* filtered\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":54,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"-":50,"YowSiaoKang":4}},{"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":"-"},"content":"Class JsonAdaptedPerson","lastModifiedDate":"2021-07-31"},{"lineNumber":22,"author":{"gitId":"YowSiaoKang"},"content":"Class JsonAdaptedAvailability","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":"Class JsonAdaptedTag","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":"","lastModifiedDate":"2021-07-31"},{"lineNumber":28,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2021-07-31"},{"lineNumber":29,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Storage","lastModifiedDate":"2021-07-31"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":31,"author":{"gitId":"-"},"content":"StorageManager .up.|\u003e Storage","lastModifiedDate":"2021-07-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"StorageManager -up-\u003e \"1\" UserPrefsStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":33,"author":{"gitId":"-"},"content":"StorageManager -up-\u003e \"1\" AddressBookStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"Storage -left-|\u003e UserPrefsStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"Storage -right-|\u003e AddressBookStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"JsonUserPrefsStorage .up.|\u003e UserPrefsStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":39,"author":{"gitId":"-"},"content":"JsonAddressBookStorage .up.|\u003e AddressBookStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":40,"author":{"gitId":"-"},"content":"JsonAddressBookStorage ..\u003e JsonSerializableAddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":41,"author":{"gitId":"-"},"content":"JsonSerializableAddressBook --\u003e \"*\" JsonAdaptedPerson","lastModifiedDate":"2021-07-31"},{"lineNumber":42,"author":{"gitId":"-"},"content":"JsonAdaptedPerson --\u003e \"*\" JsonAdaptedTag","lastModifiedDate":"2021-07-31"},{"lineNumber":43,"author":{"gitId":"YowSiaoKang"},"content":"JsonAdaptedPerson --\u003e \"*\" JsonAdaptedAvailability","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-03-31"},{"lineNumber":45,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"-":43,"YowSiaoKang":2}},{"path":"docs/team/benson15912.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"SimKianSeng"},"content":"---","lastModifiedDate":"2024-03-06"},{"lineNumber":2,"author":{"gitId":"SimKianSeng"},"content":"layout: page","lastModifiedDate":"2024-03-06"},{"lineNumber":3,"author":{"gitId":"SimKianSeng"},"content":"title: Benson\u0027s Project Portfolio Page","lastModifiedDate":"2024-03-06"},{"lineNumber":4,"author":{"gitId":"SimKianSeng"},"content":"---","lastModifiedDate":"2024-03-06"},{"lineNumber":5,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":6,"author":{"gitId":"SimKianSeng"},"content":"### Project: Match","lastModifiedDate":"2024-03-06"},{"lineNumber":7,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":8,"author":{"gitId":"SimKianSeng"},"content":"Match 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":"2024-03-06"},{"lineNumber":9,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":10,"author":{"gitId":"SimKianSeng"},"content":"* **Code contributed**: [RepoSense link](https://nus-cs2103-ay2324s2.github.io/tp-dashboard/?search\u003dBenson15912\u0026sort\u003dgroupTitle\u0026sortWithin\u003dtitle\u0026timeframe\u003dcommit\u0026mergegroup\u003d\u0026groupSelect\u003dgroupByRepos\u0026breakdown\u003dtrue\u0026checkedFileTypes\u003ddocs~functional-code~test-code~other\u0026since\u003d2024-02-23)","lastModifiedDate":"2024-03-06"},{"lineNumber":11,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":12,"author":{"gitId":"SimKianSeng"},"content":"* **Project management**:","lastModifiedDate":"2024-03-06"},{"lineNumber":13,"author":{"gitId":"SimKianSeng"},"content":" * NA","lastModifiedDate":"2024-03-06"},{"lineNumber":14,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":15,"author":{"gitId":"SimKianSeng"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-03-06"},{"lineNumber":16,"author":{"gitId":"SimKianSeng"},"content":" * NA","lastModifiedDate":"2024-03-06"},{"lineNumber":17,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":18,"author":{"gitId":"SimKianSeng"},"content":"* **Documentation**:","lastModifiedDate":"2024-03-06"},{"lineNumber":19,"author":{"gitId":"SimKianSeng"},"content":" * NA","lastModifiedDate":"2024-03-06"},{"lineNumber":20,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":21,"author":{"gitId":"SimKianSeng"},"content":"* **Community**:","lastModifiedDate":"2024-03-06"},{"lineNumber":22,"author":{"gitId":"SimKianSeng"},"content":" * NA","lastModifiedDate":"2024-03-06"},{"lineNumber":23,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":24,"author":{"gitId":"SimKianSeng"},"content":"* **Tools**:","lastModifiedDate":"2024-03-06"},{"lineNumber":25,"author":{"gitId":"SimKianSeng"},"content":" * NA","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"SimKianSeng":25}},{"path":"docs/team/simkianseng.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"SimKianSeng"},"content":"---","lastModifiedDate":"2024-03-06"},{"lineNumber":2,"author":{"gitId":"SimKianSeng"},"content":"layout: page","lastModifiedDate":"2024-03-06"},{"lineNumber":3,"author":{"gitId":"SimKianSeng"},"content":"title: Kian Seng\u0027s Project Portfolio Page","lastModifiedDate":"2024-03-06"},{"lineNumber":4,"author":{"gitId":"SimKianSeng"},"content":"---","lastModifiedDate":"2024-03-06"},{"lineNumber":5,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":6,"author":{"gitId":"SimKianSeng"},"content":"### Project: Match","lastModifiedDate":"2024-03-06"},{"lineNumber":7,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":8,"author":{"gitId":"SimKianSeng"},"content":"Match 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":"2024-03-06"},{"lineNumber":9,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":10,"author":{"gitId":"SimKianSeng"},"content":"* **Code contributed**: [RepoSense link](https://nus-cs2103-ay2324s2.github.io/tp-dashboard/?search\u003dSimKianSeng\u0026sort\u003dgroupTitle\u0026sortWithin\u003dtitle\u0026timeframe\u003dcommit\u0026mergegroup\u003d\u0026groupSelect\u003dgroupByRepos\u0026breakdown\u003dtrue\u0026checkedFileTypes\u003ddocs~functional-code~test-code~other\u0026since\u003d2024-02-23)","lastModifiedDate":"2024-03-06"},{"lineNumber":11,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":12,"author":{"gitId":"SimKianSeng"},"content":"* **Project management**:","lastModifiedDate":"2024-03-06"},{"lineNumber":13,"author":{"gitId":"SimKianSeng"},"content":" * Add `AboutUs` page.","lastModifiedDate":"2024-03-06"},{"lineNumber":14,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":15,"author":{"gitId":"SimKianSeng"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-03-06"},{"lineNumber":16,"author":{"gitId":"SimKianSeng"},"content":" * NA","lastModifiedDate":"2024-03-06"},{"lineNumber":17,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":18,"author":{"gitId":"SimKianSeng"},"content":"* **Documentation**:","lastModifiedDate":"2024-03-06"},{"lineNumber":19,"author":{"gitId":"SimKianSeng"},"content":" * NA","lastModifiedDate":"2024-03-06"},{"lineNumber":20,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":21,"author":{"gitId":"SimKianSeng"},"content":"* **Community**:","lastModifiedDate":"2024-03-06"},{"lineNumber":22,"author":{"gitId":"SimKianSeng"},"content":" * PRs reviewed (with non-trivial review comments): [\\#11](https://github.com/AY2324S2-CS2103T-F10-4/tp/pull/11)","lastModifiedDate":"2024-03-06"},{"lineNumber":23,"author":{"gitId":"SimKianSeng"},"content":" * NA","lastModifiedDate":"2024-03-06"},{"lineNumber":24,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":25,"author":{"gitId":"SimKianSeng"},"content":"* **Tools**:","lastModifiedDate":"2024-03-06"},{"lineNumber":26,"author":{"gitId":"SimKianSeng"},"content":" * NA","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"SimKianSeng":26}},{"path":"docs/team/tayziyi.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"SimKianSeng"},"content":"---","lastModifiedDate":"2024-03-06"},{"lineNumber":2,"author":{"gitId":"SimKianSeng"},"content":"layout: page","lastModifiedDate":"2024-03-06"},{"lineNumber":3,"author":{"gitId":"SimKianSeng"},"content":"title: Zi Yi\u0027s Project Portfolio Page","lastModifiedDate":"2024-03-06"},{"lineNumber":4,"author":{"gitId":"SimKianSeng"},"content":"---","lastModifiedDate":"2024-03-06"},{"lineNumber":5,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":6,"author":{"gitId":"SimKianSeng"},"content":"### Project: Match","lastModifiedDate":"2024-03-06"},{"lineNumber":7,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":8,"author":{"gitId":"SimKianSeng"},"content":"Match 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":"2024-03-06"},{"lineNumber":9,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":10,"author":{"gitId":"SimKianSeng"},"content":"* **Code contributed**: [RepoSense link](https://nus-cs2103-ay2324s2.github.io/tp-dashboard/?search\u003dtayziyi\u0026sort\u003dgroupTitle\u0026sortWithin\u003dtitle\u0026timeframe\u003dcommit\u0026mergegroup\u003d\u0026groupSelect\u003dgroupByRepos\u0026breakdown\u003dtrue\u0026checkedFileTypes\u003ddocs~functional-code~test-code~other\u0026since\u003d2024-02-23)","lastModifiedDate":"2024-03-06"},{"lineNumber":11,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":12,"author":{"gitId":"SimKianSeng"},"content":"* **Project management**:","lastModifiedDate":"2024-03-06"},{"lineNumber":13,"author":{"gitId":"SimKianSeng"},"content":" * NA","lastModifiedDate":"2024-03-06"},{"lineNumber":14,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":15,"author":{"gitId":"SimKianSeng"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-03-06"},{"lineNumber":16,"author":{"gitId":"SimKianSeng"},"content":" * NA","lastModifiedDate":"2024-03-06"},{"lineNumber":17,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":18,"author":{"gitId":"SimKianSeng"},"content":"* **Documentation**:","lastModifiedDate":"2024-03-06"},{"lineNumber":19,"author":{"gitId":"SimKianSeng"},"content":" * NA","lastModifiedDate":"2024-03-06"},{"lineNumber":20,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":21,"author":{"gitId":"SimKianSeng"},"content":"* **Community**:","lastModifiedDate":"2024-03-06"},{"lineNumber":22,"author":{"gitId":"SimKianSeng"},"content":" * NA","lastModifiedDate":"2024-03-06"},{"lineNumber":23,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":24,"author":{"gitId":"SimKianSeng"},"content":"* **Tools**:","lastModifiedDate":"2024-03-06"},{"lineNumber":25,"author":{"gitId":"SimKianSeng"},"content":" * NA","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"SimKianSeng":25}},{"path":"docs/team/xuwen-ho.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"SimKianSeng"},"content":"---","lastModifiedDate":"2024-03-06"},{"lineNumber":2,"author":{"gitId":"SimKianSeng"},"content":"layout: page","lastModifiedDate":"2024-03-06"},{"lineNumber":3,"author":{"gitId":"SimKianSeng"},"content":"title: Xu Wen\u0027s Project Portfolio Page","lastModifiedDate":"2024-03-06"},{"lineNumber":4,"author":{"gitId":"SimKianSeng"},"content":"---","lastModifiedDate":"2024-03-06"},{"lineNumber":5,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":6,"author":{"gitId":"SimKianSeng"},"content":"### Project: Match","lastModifiedDate":"2024-03-06"},{"lineNumber":7,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":8,"author":{"gitId":"SimKianSeng"},"content":"Match 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":"2024-03-06"},{"lineNumber":9,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":10,"author":{"gitId":"SimKianSeng"},"content":"* **Code contributed**: [RepoSense link](https://nus-cs2103-ay2324s2.github.io/tp-dashboard/?search\u003dxuwen-ho\u0026sort\u003dgroupTitle\u0026sortWithin\u003dtitle\u0026timeframe\u003dcommit\u0026mergegroup\u003d\u0026groupSelect\u003dgroupByRepos\u0026breakdown\u003dtrue\u0026checkedFileTypes\u003ddocs~functional-code~test-code~other\u0026since\u003d2024-02-23)","lastModifiedDate":"2024-03-06"},{"lineNumber":11,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":12,"author":{"gitId":"SimKianSeng"},"content":"* **Project management**:","lastModifiedDate":"2024-03-06"},{"lineNumber":13,"author":{"gitId":"SimKianSeng"},"content":" * NA","lastModifiedDate":"2024-03-06"},{"lineNumber":14,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":15,"author":{"gitId":"SimKianSeng"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-03-06"},{"lineNumber":16,"author":{"gitId":"SimKianSeng"},"content":" * NA","lastModifiedDate":"2024-03-06"},{"lineNumber":17,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":18,"author":{"gitId":"SimKianSeng"},"content":"* **Documentation**:","lastModifiedDate":"2024-03-06"},{"lineNumber":19,"author":{"gitId":"SimKianSeng"},"content":" * Developer Guide:","lastModifiedDate":"2024-03-06"},{"lineNumber":20,"author":{"gitId":"SimKianSeng"},"content":" * Add **target user profile**, **value proposition**, **user stories**, **use cases**, **non-functional requirements**, **glossary**.","lastModifiedDate":"2024-03-06"},{"lineNumber":21,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":22,"author":{"gitId":"SimKianSeng"},"content":"* **Community**:","lastModifiedDate":"2024-03-06"},{"lineNumber":23,"author":{"gitId":"SimKianSeng"},"content":" * NA","lastModifiedDate":"2024-03-06"},{"lineNumber":24,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":25,"author":{"gitId":"SimKianSeng"},"content":"* **Tools**:","lastModifiedDate":"2024-03-06"},{"lineNumber":26,"author":{"gitId":"SimKianSeng"},"content":" * NA","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"SimKianSeng":26}},{"path":"docs/team/yowsiaokang.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"SimKianSeng"},"content":"---","lastModifiedDate":"2024-03-06"},{"lineNumber":2,"author":{"gitId":"SimKianSeng"},"content":"layout: page","lastModifiedDate":"2024-03-06"},{"lineNumber":3,"author":{"gitId":"SimKianSeng"},"content":"title: Siao Kang\u0027s Project Portfolio Page","lastModifiedDate":"2024-03-06"},{"lineNumber":4,"author":{"gitId":"SimKianSeng"},"content":"---","lastModifiedDate":"2024-03-06"},{"lineNumber":5,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":6,"author":{"gitId":"SimKianSeng"},"content":"### Project: Match","lastModifiedDate":"2024-03-06"},{"lineNumber":7,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":8,"author":{"gitId":"SimKianSeng"},"content":"Match 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":"2024-03-06"},{"lineNumber":9,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":10,"author":{"gitId":"SimKianSeng"},"content":"* **Code contributed**: [RepoSense link](https://nus-cs2103-ay2324s2.github.io/tp-dashboard/?search\u003dYowSiaoKang\u0026sort\u003dgroupTitle\u0026sortWithin\u003dtitle\u0026timeframe\u003dcommit\u0026mergegroup\u003d\u0026groupSelect\u003dgroupByRepos\u0026breakdown\u003dtrue\u0026checkedFileTypes\u003ddocs~functional-code~test-code~other\u0026since\u003d2024-02-23)","lastModifiedDate":"2024-03-06"},{"lineNumber":11,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":12,"author":{"gitId":"SimKianSeng"},"content":"* **Project management**:","lastModifiedDate":"2024-03-06"},{"lineNumber":13,"author":{"gitId":"SimKianSeng"},"content":" * NA","lastModifiedDate":"2024-03-06"},{"lineNumber":14,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":15,"author":{"gitId":"SimKianSeng"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-03-06"},{"lineNumber":16,"author":{"gitId":"SimKianSeng"},"content":" * NA","lastModifiedDate":"2024-03-06"},{"lineNumber":17,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":18,"author":{"gitId":"SimKianSeng"},"content":"* **Documentation**:","lastModifiedDate":"2024-03-06"},{"lineNumber":19,"author":{"gitId":"SimKianSeng"},"content":" * README:","lastModifiedDate":"2024-03-06"},{"lineNumber":20,"author":{"gitId":"SimKianSeng"},"content":" * Add **user profile**.","lastModifiedDate":"2024-03-06"},{"lineNumber":21,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":22,"author":{"gitId":"SimKianSeng"},"content":"* **Community**:","lastModifiedDate":"2024-03-06"},{"lineNumber":23,"author":{"gitId":"SimKianSeng"},"content":" * NA","lastModifiedDate":"2024-03-06"},{"lineNumber":24,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":25,"author":{"gitId":"SimKianSeng"},"content":"* **Tools**:","lastModifiedDate":"2024-03-06"},{"lineNumber":26,"author":{"gitId":"SimKianSeng"},"content":" * NA","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"SimKianSeng":26}},{"path":"src/main/java/seedu/address/logic/Confirmation.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SimKianSeng"},"content":"package seedu.address.logic;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"SimKianSeng"},"content":"import static seedu.address.logic.Messages.MESSAGE_CONFIRMATION;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"SimKianSeng"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"SimKianSeng"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"SimKianSeng"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"SimKianSeng"},"content":" * Confirmation to prevent critical actions from being executed accidentally.","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"SimKianSeng"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"SimKianSeng"},"content":"public class Confirmation {","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"SimKianSeng"},"content":" private boolean isToProceed;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"SimKianSeng"},"content":" public Confirmation(Command command) {","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"SimKianSeng"},"content":" this.isToProceed \u003d !hasConfirmation(command);","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"SimKianSeng"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"SimKianSeng"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"SimKianSeng"},"content":" * Checks if command requires comfirmation before executing.","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"SimKianSeng"},"content":" *","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"SimKianSeng"},"content":" * @param command The command to be executed.","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"SimKianSeng"},"content":" * @return True if command requires confirmation. False if otherwise.","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"SimKianSeng"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"SimKianSeng"},"content":" public boolean hasConfirmation(Command command) {","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"SimKianSeng"},"content":" return command instanceof DeleteCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"SimKianSeng"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"SimKianSeng"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"SimKianSeng"},"content":" * Whether the confirmation is successful or not.","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"SimKianSeng"},"content":" *","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"SimKianSeng"},"content":" * @return True if the command can be executed. False if otherwise.","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"SimKianSeng"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"SimKianSeng"},"content":" public boolean isToProceed() {","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"SimKianSeng"},"content":" return isToProceed;","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"SimKianSeng"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"SimKianSeng"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"SimKianSeng"},"content":" public String toString() {","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"SimKianSeng"},"content":" return MESSAGE_CONFIRMATION;","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"SimKianSeng"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"SimKianSeng"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"SimKianSeng":41}},{"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":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"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":"SimKianSeng"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"SimKianSeng"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"SimKianSeng"},"content":" * @param isConfirmation","lastModifiedDate":"2024-03-21"},{"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":"SimKianSeng"},"content":" CommandResult execute(String commandText, boolean isConfirmation) throws CommandException, ParseException;","lastModifiedDate":"2024-03-21"},{"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":"-"},"content":" /** Returns an unmodifiable view of the filtered list of persons */","lastModifiedDate":"2017-09-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26"},{"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":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","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":" * Set the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"SimKianSeng":4,"-":48}},{"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":"SimKianSeng"},"content":"import static seedu.address.logic.Messages.MESSAGE_CONFIRMATION;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"SimKianSeng"},"content":"import static seedu.address.logic.Messages.MESSAGE_CONFIRMATION_CANCELLED;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-24"},{"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-29"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2016-09-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.AddressBookParser;","lastModifiedDate":"2017-07-07"},{"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.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"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":"SimKianSeng"},"content":" private Command prevCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Constructs a {@code LogicManager} with the given {@code Model} and {@code Storage}.","lastModifiedDate":"2020-05-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public LogicManager(Model model, Storage storage) {","lastModifiedDate":"2018-12-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":" this.model \u003d model;","lastModifiedDate":"2016-09-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" this.storage \u003d storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":" addressBookParser \u003d new AddressBookParser();","lastModifiedDate":"2018-01-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":51,"author":{"gitId":"SimKianSeng"},"content":" public CommandResult execute(String commandText, boolean isConfirmation) throws CommandException, ParseException {","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2016-09-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"SimKianSeng"},"content":" if (isConfirmation) {","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"SimKianSeng"},"content":" if (commandText.equalsIgnoreCase(\"y\")) {","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"SimKianSeng"},"content":" commandResult \u003d prevCommand.execute(model);","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"SimKianSeng"},"content":" } else {","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"SimKianSeng"},"content":" commandResult \u003d new CommandResult(MESSAGE_CONFIRMATION_CANCELLED);","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"SimKianSeng"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"SimKianSeng"},"content":" } else {","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2017-07-07"},{"lineNumber":63,"author":{"gitId":"SimKianSeng"},"content":" prevCommand \u003d command;","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"SimKianSeng"},"content":" Confirmation confirmation \u003d new Confirmation(command);","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"SimKianSeng"},"content":" if (!confirmation.isToProceed()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"SimKianSeng"},"content":" return new CommandResult(MESSAGE_CONFIRMATION, true, false, false);","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"SimKianSeng"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2019-01-25"},{"lineNumber":71,"author":{"gitId":"SimKianSeng"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":73,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":74,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2018-12-09"},{"lineNumber":75,"author":{"gitId":"-"},"content":" } catch (AccessDeniedException e) {","lastModifiedDate":"2023-06-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e);","lastModifiedDate":"2023-06-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-12-09"},{"lineNumber":78,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe);","lastModifiedDate":"2023-06-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-03"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2018-12-03"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return model.getAddressBook();","lastModifiedDate":"2018-12-03"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-03"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":91,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList();","lastModifiedDate":"2016-09-25"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-29"},{"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":{"SimKianSeng":21,"-":87}},{"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":"tayziyi"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX \u003d \"The volunteer index provided is invalid\";","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"tayziyi"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d volunteer(s) found!\";","lastModifiedDate":"2024-03-14"},{"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":"SimKianSeng"},"content":" public static final String MESSAGE_CONFIRMATION \u003d \"Are you sure that you want to proceed with that action? \"","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"SimKianSeng"},"content":" + \"[y/N]\";","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":24,"author":{"gitId":"SimKianSeng"},"content":" public static final String MESSAGE_CONFIRMATION_CANCELLED \u003d \"Command execution has been cancelled.\";","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":35,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"YowSiaoKang"},"content":" .append(\"; Availabilities: \");","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"YowSiaoKang"},"content":" person.getAvailabilities().forEach(builder::append);","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"YowSiaoKang"},"content":" builder.append(\"; Tags: \");","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"-"},"content":" person.getTags().forEach(builder::append);","lastModifiedDate":"2019-02-23"},{"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":{"tayziyi":2,"SimKianSeng":3,"-":47,"YowSiaoKang":3}},{"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":"Benson15912"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AVAIL;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-12"},{"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":"Benson15912"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a volunteer to the address book. \"","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09"},{"lineNumber":28,"author":{"gitId":"YowSiaoKang"},"content":" + \"[\" + PREFIX_AVAIL + \"AVAILABILITY] \"","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09"},{"lineNumber":34,"author":{"gitId":"YowSiaoKang"},"content":" + PREFIX_AVAIL + \"01/01/2024 \"","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"YowSiaoKang"},"content":" + PREFIX_AVAIL + \"02/01/2024 \"","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2017-05-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"owesMoney\";","lastModifiedDate":"2017-05-09"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"Benson15912"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Volunteer added successfully: %1$s\";","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book\";","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":48,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":49,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":57,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":60,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return true;","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":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return false;","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":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"Benson15912":3,"-":79,"YowSiaoKang":3}},{"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":"SimKianSeng"},"content":" /** User should confirm if they want to execute the command. */","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"SimKianSeng"},"content":" private final boolean confirmation;","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":" /** Help information should be shown to the user. */","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final boolean showHelp;","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /** The application should exit. */","lastModifiedDate":"2018-12-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final boolean exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Constructs a {@code CommandResult} with the specified fields.","lastModifiedDate":"2018-12-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":28,"author":{"gitId":"SimKianSeng"},"content":" public CommandResult(String feedbackToUser, boolean confirmation, boolean showHelp, boolean exit) {","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":" this.feedbackToUser \u003d requireNonNull(feedbackToUser);","lastModifiedDate":"2017-05-15"},{"lineNumber":30,"author":{"gitId":"SimKianSeng"},"content":" this.confirmation \u003d confirmation;","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":" this.showHelp \u003d showHelp;","lastModifiedDate":"2018-12-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.exit \u003d exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Constructs a {@code CommandResult} with the specified {@code feedbackToUser},","lastModifiedDate":"2018-12-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * and other fields set to their default value.","lastModifiedDate":"2018-12-09"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public CommandResult(String feedbackToUser) {","lastModifiedDate":"2018-12-09"},{"lineNumber":40,"author":{"gitId":"SimKianSeng"},"content":" this(feedbackToUser, false, false, false);","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public String getFeedbackToUser() {","lastModifiedDate":"2018-12-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return feedbackToUser;","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":"SimKianSeng"},"content":" public boolean isConfirmation() {","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"SimKianSeng"},"content":" return confirmation;","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"SimKianSeng"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public boolean isShowHelp() {","lastModifiedDate":"2018-12-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return showHelp;","lastModifiedDate":"2018-12-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public boolean isExit() {","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2018-12-09"},{"lineNumber":60,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-12-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-12-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":64,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2018-12-09"},{"lineNumber":65,"author":{"gitId":"-"},"content":" if (!(other instanceof CommandResult)) {","lastModifiedDate":"2018-12-09"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return false;","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":" CommandResult otherCommandResult \u003d (CommandResult) other;","lastModifiedDate":"2018-12-09"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return feedbackToUser.equals(otherCommandResult.feedbackToUser)","lastModifiedDate":"2018-12-09"},{"lineNumber":71,"author":{"gitId":"SimKianSeng"},"content":" \u0026\u0026 confirmation \u003d\u003d otherCommandResult.confirmation","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"-"},"content":" \u0026\u0026 showHelp \u003d\u003d otherCommandResult.showHelp","lastModifiedDate":"2018-12-09"},{"lineNumber":73,"author":{"gitId":"-"},"content":" \u0026\u0026 exit \u003d\u003d otherCommandResult.exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2018-12-09"},{"lineNumber":78,"author":{"gitId":"SimKianSeng"},"content":" return Objects.hash(feedbackToUser, confirmation, showHelp, exit);","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"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(\"feedbackToUser\", feedbackToUser)","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"SimKianSeng"},"content":" .add(\"confirmation\", confirmation)","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"-"},"content":" .add(\"showHelp\", showHelp)","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" .add(\"exit\", exit)","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":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"SimKianSeng":12,"-":79}},{"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":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"tayziyi"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Volunteer removed: %1$s\";","lastModifiedDate":"2024-03-14"},{"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":{"tayziyi":1,"-":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":"YowSiaoKang"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AVAIL;","lastModifiedDate":"2024-03-15"},{"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":"Benson15912"},"content":"import seedu.address.model.person.Availability;","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-12"},{"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":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06"},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":45,"author":{"gitId":"YowSiaoKang"},"content":" + \"[\" + PREFIX_AVAIL + \"ADDRESS] \"","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":51,"author":{"gitId":"tayziyi"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Volunteer Updated: %1$s\";","lastModifiedDate":"2024-03-14"},{"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":"YowSiaoKang"},"content":" Set\u003cAvailability\u003e updatedAvailability \u003d editPersonDescriptor.getAvailabilities()","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"YowSiaoKang"},"content":" .orElse(personToEdit.getAvailabilities());","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2017-06-21"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":105,"author":{"gitId":"Benson15912"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedAvailability, updatedTags);","lastModifiedDate":"2024-03-12"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26"},{"lineNumber":134,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26"},{"lineNumber":135,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":136,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26"},{"lineNumber":137,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21"},{"lineNumber":138,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":139,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":140,"author":{"gitId":"YowSiaoKang"},"content":" private Set\u003cAvailability\u003e availabilities;","lastModifiedDate":"2024-03-17"},{"lineNumber":141,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":143,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":145,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":146,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11"},{"lineNumber":147,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":148,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":149,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26"},{"lineNumber":150,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15"},{"lineNumber":151,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15"},{"lineNumber":152,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15"},{"lineNumber":153,"author":{"gitId":"YowSiaoKang"},"content":" setAvailabilities(toCopy.availabilities);","lastModifiedDate":"2024-03-17"},{"lineNumber":154,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":157,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":158,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26"},{"lineNumber":159,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":160,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26"},{"lineNumber":161,"author":{"gitId":"YowSiaoKang"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, availabilities, tags);","lastModifiedDate":"2024-03-17"},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":164,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21"},{"lineNumber":165,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21"},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":168,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":169,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21"},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":172,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21"},{"lineNumber":173,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":176,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26"},{"lineNumber":177,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21"},{"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 setEmail(Email email) {","lastModifiedDate":"2017-06-21"},{"lineNumber":181,"author":{"gitId":"-"},"content":" this.email \u003d email;","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\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":185,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","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":"YowSiaoKang"},"content":" public void setAvailabilities(Set\u003cAvailability\u003e availabilities) {","lastModifiedDate":"2024-03-17"},{"lineNumber":189,"author":{"gitId":"YowSiaoKang"},"content":" this.availabilities \u003d availabilities;","lastModifiedDate":"2024-03-17"},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":192,"author":{"gitId":"YowSiaoKang"},"content":" public Optional\u003cSet\u003cAvailability\u003e\u003e getAvailabilities() {","lastModifiedDate":"2024-03-17"},{"lineNumber":193,"author":{"gitId":"YowSiaoKang"},"content":" return (availabilities !\u003d null)","lastModifiedDate":"2024-03-18"},{"lineNumber":194,"author":{"gitId":"YowSiaoKang"},"content":" ? Optional.of(Collections.unmodifiableSet(availabilities))","lastModifiedDate":"2024-03-18"},{"lineNumber":195,"author":{"gitId":"YowSiaoKang"},"content":" : Optional.empty();","lastModifiedDate":"2024-03-18"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":198,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":199,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11"},{"lineNumber":200,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":201,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":202,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21"},{"lineNumber":203,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11"},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":206,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":207,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11"},{"lineNumber":208,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11"},{"lineNumber":209,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11"},{"lineNumber":210,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":211,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":212,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11"},{"lineNumber":213,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":215,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":216,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":217,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":218,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":219,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":221,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":222,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05"},{"lineNumber":223,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":224,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":226,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":227,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":228,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":229,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":230,"author":{"gitId":"YowSiaoKang"},"content":" \u0026\u0026 Objects.equals(availabilities, otherEditPersonDescriptor.availabilities)","lastModifiedDate":"2024-03-17"},{"lineNumber":231,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags);","lastModifiedDate":"2023-07-13"},{"lineNumber":232,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":240,"author":{"gitId":"YowSiaoKang"},"content":" .add(\"availabilities\", availabilities)","lastModifiedDate":"2024-03-17"},{"lineNumber":241,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":245,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"tayziyi":1,"Benson15912":2,"-":227,"YowSiaoKang":15}},{"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":"-"},"content":" public static final String MESSAGE_EXIT_ACKNOWLEDGEMENT \u003d \"Exiting Address Book as requested ...\";","lastModifiedDate":"2016-09-22"},{"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":"SimKianSeng"},"content":" return new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, false, false, true);","lastModifiedDate":"2024-03-20"},{"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":{"SimKianSeng":1,"-":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":"YowSiaoKang"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AVAIL;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"YowSiaoKang"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":7,"author":{"gitId":"YowSiaoKang"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"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":"2018-08-08"},{"lineNumber":12,"author":{"gitId":"YowSiaoKang"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Finds and lists all persons in address book whose name contains any of the argument keywords.","lastModifiedDate":"2016-09-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Keyword matching is case insensitive.","lastModifiedDate":"2018-04-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2016-09-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"find\";","lastModifiedDate":"2016-09-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":22,"author":{"gitId":"YowSiaoKang"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all volunteers whose \u003cAttribute\u003e contain \"","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"YowSiaoKang"},"content":" + \"the specified keywords (case-insensitive) and displays them as a indexed list.\\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"YowSiaoKang"},"content":" + \"Parameters: \u003cAttribute_Prefix/\u003e KEYWORD [MORE_KEYWORDS]...\\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"YowSiaoKang"},"content":" + \"Example(find by name): \" + COMMAND_WORD + \" \" + PREFIX_NAME + \" alice bob charlie\\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"YowSiaoKang"},"content":" + \"Example(find by availability): \" + COMMAND_WORD + \" \" + PREFIX_AVAIL + \" 01/01/2024 12/12/2024\\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"YowSiaoKang"},"content":" + \"Example(find by name and availability): \" + COMMAND_WORD + \" \"","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"YowSiaoKang"},"content":" + PREFIX_NAME + \" alice \" + PREFIX_AVAIL + \" 01/01/2024 12/12/2024\";","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":30,"author":{"gitId":"YowSiaoKang"},"content":" private final Predicate\u003cPerson\u003e predicate;","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":32,"author":{"gitId":"YowSiaoKang"},"content":" public FindCommand(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"-"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(predicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return new CommandResult(","lastModifiedDate":"2018-04-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":" String.format(Messages.MESSAGE_PERSONS_LISTED_OVERVIEW, model.getFilteredPersonList().size()));","lastModifiedDate":"2018-04-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" return true;","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":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (!(other instanceof FindCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" FindCommand otherFindCommand \u003d (FindCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return predicate.equals(otherFindCommand.predicate);","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"-":52,"YowSiaoKang":13}},{"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":"SimKianSeng"},"content":" return new CommandResult(SHOWING_HELP_MESSAGE, false, true, false);","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"SimKianSeng":1,"-":20}},{"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":"tayziyi"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Here are your list of volunteers\";","lastModifiedDate":"2024-03-14"},{"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":{"tayziyi":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":"Benson15912"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AVAIL;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-12"},{"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":"Benson15912"},"content":"import seedu.address.model.person.Availability;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-12"},{"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":"Benson15912"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_AVAIL, PREFIX_TAG);","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":36,"author":{"gitId":"YowSiaoKang"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL)","lastModifiedDate":"2024-03-17"},{"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":"YowSiaoKang"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL);","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":43,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":44,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":45,"author":{"gitId":"YowSiaoKang"},"content":" Set\u003cAvailability\u003e availability \u003d ParserUtil.parseAvailabilities(argMultimap.getAllValues(PREFIX_AVAIL));","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":48,"author":{"gitId":"Benson15912"},"content":" Person person \u003d new Person(name, phone, email, availability, tagList);","lastModifiedDate":"2024-03-12"},{"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":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":57,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17"},{"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":{"Benson15912":4,"-":54,"YowSiaoKang":3}},{"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":"Benson15912"},"content":" public static final Prefix PREFIX_AVAIL \u003d new Prefix(\"a/\");","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"Benson15912":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":"Benson15912"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AVAIL;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-12"},{"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":"YowSiaoKang"},"content":"import seedu.address.model.person.Availability;","lastModifiedDate":"2024-03-17"},{"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":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":36,"author":{"gitId":"YowSiaoKang"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_AVAIL, PREFIX_TAG);","lastModifiedDate":"2024-03-15"},{"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":"YowSiaoKang"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL);","lastModifiedDate":"2024-03-17"},{"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":"YowSiaoKang"},"content":" parseAvailabilitiesForEdit(argMultimap.getAllValues(PREFIX_AVAIL))","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"YowSiaoKang"},"content":" .ifPresent(editPersonDescriptor::setAvailabilities);","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":" parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPersonDescriptor::setTags);","lastModifiedDate":"2017-06-21"},{"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":"YowSiaoKang"},"content":" private Optional\u003cSet\u003cAvailability\u003e\u003e parseAvailabilitiesForEdit(Collection\u003cString\u003e availabilities)","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"YowSiaoKang"},"content":" throws ParseException {","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"YowSiaoKang"},"content":" assert availabilities !\u003d null;","lastModifiedDate":"2024-03-17"},{"lineNumber":88,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"YowSiaoKang"},"content":" if (availabilities.isEmpty()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":90,"author":{"gitId":"YowSiaoKang"},"content":" return Optional.empty();","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"YowSiaoKang"},"content":" Collection\u003cString\u003e availabilitySet \u003d availabilities.size() \u003d\u003d 1 \u0026\u0026 availabilities.contains(\"\")","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"YowSiaoKang"},"content":" ? Collections.emptySet() : availabilities;","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"YowSiaoKang"},"content":" return Optional.of(ParserUtil.parseAvailabilities(availabilitySet));","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"Benson15912":1,"-":79,"YowSiaoKang":17}},{"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":"YowSiaoKang"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AVAIL;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"YowSiaoKang"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"YowSiaoKang"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"YowSiaoKang"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"YowSiaoKang"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-01-26"},{"lineNumber":11,"author":{"gitId":"YowSiaoKang"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"YowSiaoKang"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":16,"author":{"gitId":"YowSiaoKang"},"content":"import seedu.address.model.person.AvailableAtDatePredicate;","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"YowSiaoKang"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new FindCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class FindCommandParser implements Parser\u003cFindCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the FindCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * and returns a FindCommand object for execution.","lastModifiedDate":"2019-05-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public FindCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":31,"author":{"gitId":"YowSiaoKang"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"YowSiaoKang"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_AVAIL, PREFIX_TAG);","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"YowSiaoKang"},"content":" if (!isAnyPrefixPresent(argMultimap, PREFIX_NAME, PREFIX_AVAIL)","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"YowSiaoKang"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"YowSiaoKang"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"YowSiaoKang"},"content":" return new FindCommand(predicateBuilder(argMultimap, PREFIX_NAME, PREFIX_AVAIL));","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"YowSiaoKang"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"YowSiaoKang"},"content":" * Returns true if at least one of the prefixes contains non-empty {@code Optional} values in the given","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"YowSiaoKang"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"YowSiaoKang"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"YowSiaoKang"},"content":" private static boolean isAnyPrefixPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"YowSiaoKang"},"content":" return Stream.of(prefixes).anyMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"YowSiaoKang"},"content":" private Predicate\u003cPerson\u003e predicateBuilder(ArgumentMultimap argMultimap, Prefix... prefixes) throws ParseException {","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"YowSiaoKang"},"content":" Predicate\u003cPerson\u003e predicate \u003d null;","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"YowSiaoKang"},"content":" for (Prefix prefix : prefixes) {","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"YowSiaoKang"},"content":" String keywords \u003d argMultimap.getValue(prefix).orElse(\"\").trim();","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"YowSiaoKang"},"content":" if (!keywords.isEmpty()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"YowSiaoKang"},"content":" switch (prefix.toString()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"YowSiaoKang"},"content":" case \"n/\":","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"YowSiaoKang"},"content":" if (predicate \u003d\u003d null) {","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"YowSiaoKang"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(keywords.split(\"\\\\s+\")));","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"YowSiaoKang"},"content":" } else {","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"YowSiaoKang"},"content":" predicate \u003d predicate.or(","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"YowSiaoKang"},"content":" new NameContainsKeywordsPredicate(Arrays.asList(keywords.split(\"\\\\s+\"))));","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"YowSiaoKang"},"content":" break;","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"YowSiaoKang"},"content":" case \"a/\":","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"YowSiaoKang"},"content":" if (predicate \u003d\u003d null) {","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"YowSiaoKang"},"content":" predicate \u003d new AvailableAtDatePredicate(Arrays.asList(keywords.split(\"\\\\s+\")));","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"YowSiaoKang"},"content":" } else {","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"YowSiaoKang"},"content":" predicate \u003d predicate.or(new AvailableAtDatePredicate(Arrays.asList(keywords.split(\"\\\\s+\"))));","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"YowSiaoKang"},"content":" break;","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"YowSiaoKang"},"content":" default:","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"YowSiaoKang"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"YowSiaoKang"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"YowSiaoKang"},"content":" };","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"YowSiaoKang"},"content":" if (predicate \u003d\u003d null) {","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11"},{"lineNumber":79,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-01-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":82,"author":{"gitId":"YowSiaoKang"},"content":" return predicate;","lastModifiedDate":"2024-03-18"},{"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":{"-":30,"YowSiaoKang":55}},{"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":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"Benson15912"},"content":"import seedu.address.model.person.Availability;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":32,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02"},{"lineNumber":34,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":36,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":46,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":49,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":57,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":61,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30"},{"lineNumber":62,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":64,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","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":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":72,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":76,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30"},{"lineNumber":77,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":78,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":79,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"Benson15912"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"Benson15912"},"content":" * Parses a {@code String availability} into an {@code Availability}.","lastModifiedDate":"2024-03-12"},{"lineNumber":86,"author":{"gitId":"Benson15912"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"Benson15912"},"content":" *","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"Benson15912"},"content":" * @throws ParseException if the given {@code Availability} is invalid.","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"Benson15912"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":90,"author":{"gitId":"Benson15912"},"content":" public static Availability parseAvailability(String availability) throws ParseException {","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"Benson15912"},"content":" String trimmedAvailability \u003d availability.trim();","lastModifiedDate":"2024-03-12"},{"lineNumber":92,"author":{"gitId":"Benson15912"},"content":" if (!Availability.isValidAvailability(trimmedAvailability)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"Benson15912"},"content":" throw new ParseException(Availability.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":94,"author":{"gitId":"Benson15912"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":95,"author":{"gitId":"Benson15912"},"content":" return new Availability(trimmedAvailability);","lastModifiedDate":"2024-03-12"},{"lineNumber":96,"author":{"gitId":"Benson15912"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":97,"author":{"gitId":"Benson15912"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":98,"author":{"gitId":"YowSiaoKang"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"YowSiaoKang"},"content":" * Parses {@code Collection\u003cString\u003e availabilities} into a {@code Set\u003cAvailability\u003e}.","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"YowSiaoKang"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":101,"author":{"gitId":"YowSiaoKang"},"content":" public static Set\u003cAvailability\u003e parseAvailabilities(Collection\u003cString\u003e availabilities) throws ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"YowSiaoKang"},"content":" requireNonNull(availabilities);","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"YowSiaoKang"},"content":" final Set\u003cAvailability\u003e availabilitiesSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"YowSiaoKang"},"content":" for (String availability : availabilities) {","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"YowSiaoKang"},"content":" availabilitiesSet.add(parseAvailability(availability));","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"YowSiaoKang"},"content":" return availabilitiesSet;","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":109,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":111,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30"},{"lineNumber":112,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":113,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":115,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":117,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":118,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":119,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":120,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":122,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":125,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":126,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":127,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":128,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":129,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":130,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":131,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":132,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30"},{"lineNumber":133,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":134,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":135,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":137,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":140,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":141,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07"},{"lineNumber":142,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":143,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":144,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15"},{"lineNumber":145,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11"},{"lineNumber":146,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11"},{"lineNumber":147,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":149,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":151,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"Benson15912":15,"-":124,"YowSiaoKang":12}},{"path":"src/main/java/seedu/address/model/person/Availability.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Benson15912"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"Benson15912"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"Benson15912"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"Benson15912"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"Benson15912"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"YowSiaoKang"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"YowSiaoKang"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"YowSiaoKang"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"Benson15912"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"Benson15912"},"content":" * Represents a Person\u0027s availability in the address book.","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"Benson15912"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidAvailability(String)}","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"Benson15912"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"Benson15912"},"content":"public class Availability {","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"YowSiaoKang"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Availabilities must be in the format of dd/MM/yyyy\";","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"Benson15912"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"Benson15912"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"Benson15912"},"content":" * The first character of the availability must not be a whitespace,","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"Benson15912"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"Benson15912"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"YowSiaoKang"},"content":" public static final String VALIDATION_REGEX \u003d \"dd/MM/yyyy\";","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"YowSiaoKang"},"content":" private static DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(VALIDATION_REGEX);","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"Benson15912"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"YowSiaoKang"},"content":" private LocalDate date;","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"Benson15912"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"Benson15912"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"Benson15912"},"content":" * Constructs an {@code Address}.","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"Benson15912"},"content":" *","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"Benson15912"},"content":" * @param availability A valid date.","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"Benson15912"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"Benson15912"},"content":" public Availability(String availability) {","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"Benson15912"},"content":" requireNonNull(availability);","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"Benson15912"},"content":" checkArgument(isValidAvailability(availability), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"YowSiaoKang"},"content":" this.date \u003d LocalDate.parse(availability, formatter);","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"Benson15912"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"Benson15912"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"Benson15912"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"Benson15912"},"content":" * Returns true if a given string is a valid availability.","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"Benson15912"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"Benson15912"},"content":" public static boolean isValidAvailability(String test) {","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"YowSiaoKang"},"content":" test \u003d test.trim();","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"YowSiaoKang"},"content":" try {","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"YowSiaoKang"},"content":" formatter.parse(test);","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"YowSiaoKang"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"YowSiaoKang"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"YowSiaoKang"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"Benson15912"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"Benson15912"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"Benson15912"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"Benson15912"},"content":" public String toString() {","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"YowSiaoKang"},"content":" return date.format(formatter);","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"Benson15912"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"Benson15912"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"Benson15912"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"Benson15912"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"Benson15912"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"Benson15912"},"content":" return true;","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"Benson15912"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"Benson15912"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"Benson15912"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"Benson15912"},"content":" if (!(other instanceof Availability)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"Benson15912"},"content":" return false;","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"Benson15912"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"Benson15912"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"Benson15912"},"content":" Availability otherAvailability \u003d (Availability) other;","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"YowSiaoKang"},"content":" return date.equals(otherAvailability.date);","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"Benson15912"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"Benson15912"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"Benson15912"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"Benson15912"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"YowSiaoKang"},"content":" return date.hashCode();","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"Benson15912"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":74,"author":{"gitId":"Benson15912"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"Benson15912":55,"YowSiaoKang":19}},{"path":"src/main/java/seedu/address/model/person/AvailableAtDatePredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"YowSiaoKang"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"YowSiaoKang"},"content":"import static seedu.address.logic.parser.ParserUtil.parseAvailabilities;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"YowSiaoKang"},"content":"import java.util.List;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"YowSiaoKang"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"YowSiaoKang"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"YowSiaoKang"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"YowSiaoKang"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"YowSiaoKang"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"YowSiaoKang"},"content":" * Tests that a {@code Person}\u0027s {@code Availability} matches any of the keywords given.","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"YowSiaoKang"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"YowSiaoKang"},"content":"public class AvailableAtDatePredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"YowSiaoKang"},"content":" private final Set\u003cAvailability\u003e keywords;","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"YowSiaoKang"},"content":" public AvailableAtDatePredicate(List\u003cString\u003e keywords) throws ParseException {","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"YowSiaoKang"},"content":" this.keywords \u003d parseAvailabilities(keywords);","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"YowSiaoKang"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"YowSiaoKang"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"YowSiaoKang"},"content":" return keywords.stream()","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"YowSiaoKang"},"content":" .anyMatch(keyword -\u003e person.getAvailabilities().stream()","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"YowSiaoKang"},"content":" .anyMatch(availability -\u003e availability.equals(keyword)));","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"YowSiaoKang"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"YowSiaoKang"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"YowSiaoKang"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"YowSiaoKang"},"content":" return true;","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"YowSiaoKang"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"YowSiaoKang"},"content":" if (!(other instanceof AvailableAtDatePredicate)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"YowSiaoKang"},"content":" return false;","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"YowSiaoKang"},"content":" AvailableAtDatePredicate otherAvailableAtDatePredicate \u003d (AvailableAtDatePredicate) other;","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"YowSiaoKang"},"content":" return keywords.equals(otherAvailableAtDatePredicate.keywords);","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"YowSiaoKang"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"YowSiaoKang"},"content":" public String toString() {","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"YowSiaoKang"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"YowSiaoKang"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"YowSiaoKang":48}},{"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.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Tests that a {@code Person}\u0027s {@code Name} matches any of the keywords given.","lastModifiedDate":"2018-01-10"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class NameContainsKeywordsPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2018-01-10"},{"lineNumber":12,"author":{"gitId":"-"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public NameContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" this.keywords \u003d keywords;","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":" @Override","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public boolean test(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":20,"author":{"gitId":"tayziyi"},"content":" return keywords.stream().anyMatch(keyword -\u003e","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"tayziyi"},"content":" person.getName().fullName.toLowerCase().contains(keyword.toLowerCase()));","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" if (!(other instanceof NameContainsKeywordsPredicate)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate otherNameContainsKeywordsPredicate \u003d (NameContainsKeywordsPredicate) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" return keywords.equals(otherNameContainsKeywordsPredicate.keywords);","lastModifiedDate":"2023-07-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"tayziyi":2,"-":41}},{"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":"-"},"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":"YowSiaoKang"},"content":" private final Set\u003cAvailability\u003e availabilities;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"YowSiaoKang"},"content":" public Person(Name name, Phone phone, Email email, Set\u003cAvailability\u003e availabilities, Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"YowSiaoKang"},"content":" requireAllNonNull(name, phone, email, availabilities, tags);","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20"},{"lineNumber":34,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20"},{"lineNumber":36,"author":{"gitId":"YowSiaoKang"},"content":" this.availabilities \u003d availabilities;","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return email;","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":"YowSiaoKang"},"content":" public Set\u003cAvailability\u003e getAvailabilities() {","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"YowSiaoKang"},"content":" return Collections.unmodifiableSet(availabilities);","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07"},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2020-12-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":92,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10"},{"lineNumber":93,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":96,"author":{"gitId":"YowSiaoKang"},"content":" \u0026\u0026 availabilities.equals(otherPerson.availabilities)","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"-"},"content":" \u0026\u0026 tags.equals(otherPerson.tags);","lastModifiedDate":"2023-07-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":103,"author":{"gitId":"YowSiaoKang"},"content":" return Objects.hash(name, phone, email, availabilities, tags);","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":108,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":112,"author":{"gitId":"YowSiaoKang"},"content":" .add(\"availabilities\", availabilities)","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"-":108,"YowSiaoKang":9}},{"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":"Benson15912"},"content":"import seedu.address.model.person.Availability;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":" new Person(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":23,"author":{"gitId":"YowSiaoKang"},"content":" getAvailabilitySet(\"01/03/2024\", \"02/03/2024\", \"03/03/2024\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"-"},"content":" getTagSet(\"friends\")),","lastModifiedDate":"2017-03-14"},{"lineNumber":25,"author":{"gitId":"-"},"content":" new Person(new Name(\"Bernice Yu\"), new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":26,"author":{"gitId":"YowSiaoKang"},"content":" getAvailabilitySet(\"20/03/2024\", \"22/03/2024\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"-"},"content":" getTagSet(\"colleagues\", \"friends\")),","lastModifiedDate":"2017-03-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":29,"author":{"gitId":"YowSiaoKang"},"content":" getAvailabilitySet(\"01/03/2024\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"-"},"content":" getTagSet(\"neighbours\")),","lastModifiedDate":"2017-03-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":" new Person(new Name(\"David Li\"), new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":32,"author":{"gitId":"YowSiaoKang"},"content":" getAvailabilitySet(\"28/02/2024\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"-"},"content":" getTagSet(\"family\")),","lastModifiedDate":"2017-03-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":35,"author":{"gitId":"YowSiaoKang"},"content":" getAvailabilitySet(\"05/04/2024\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"-"},"content":" getTagSet(\"classmates\")),","lastModifiedDate":"2017-03-14"},{"lineNumber":37,"author":{"gitId":"-"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":38,"author":{"gitId":"YowSiaoKang"},"content":" getAvailabilitySet(\"03/05/2024\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":" getTagSet(\"colleagues\"))","lastModifiedDate":"2017-03-14"},{"lineNumber":40,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14"},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":60,"author":{"gitId":"YowSiaoKang"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"YowSiaoKang"},"content":" * Returns an availability set containing the list of strings given.","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"YowSiaoKang"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"YowSiaoKang"},"content":" public static Set\u003cAvailability\u003e getAvailabilitySet(String... strings) {","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"YowSiaoKang"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"YowSiaoKang"},"content":" .map(Availability::new)","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"YowSiaoKang"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"Benson15912":1,"-":53,"YowSiaoKang":14}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedAvailability.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"YowSiaoKang"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"YowSiaoKang"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"YowSiaoKang"},"content":"import com.fasterxml.jackson.annotation.JsonValue;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"YowSiaoKang"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"YowSiaoKang"},"content":"import seedu.address.model.person.Availability;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"YowSiaoKang"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"YowSiaoKang"},"content":" * Jackson-friendly version of {@link Availability}.","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"YowSiaoKang"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"YowSiaoKang"},"content":"public class JsonAdaptedAvailability {","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"YowSiaoKang"},"content":" private final String availability;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"YowSiaoKang"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"YowSiaoKang"},"content":" * Constructs a {@code JsonAdaptedAvailability} with the given availability details.","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"YowSiaoKang"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"YowSiaoKang"},"content":" @JsonCreator","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"YowSiaoKang"},"content":" public JsonAdaptedAvailability(String availability) {","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"YowSiaoKang"},"content":" this.availability \u003d availability;","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"YowSiaoKang"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"YowSiaoKang"},"content":" * Converts a given {@code Availability} into this class for Jackson use.","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"YowSiaoKang"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"YowSiaoKang"},"content":" public JsonAdaptedAvailability(Availability source) {","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"YowSiaoKang"},"content":" availability \u003d source.toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"YowSiaoKang"},"content":" @JsonValue","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"YowSiaoKang"},"content":" public String getAvailability() {","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"YowSiaoKang"},"content":" return availability;","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"YowSiaoKang"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"YowSiaoKang"},"content":" * Converts this Jackson-friendly adapted availability object into the model\u0027s {@code Availability} object.","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"YowSiaoKang"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"YowSiaoKang"},"content":" public Availability toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"YowSiaoKang"},"content":" if (!Availability.isValidAvailability(availability)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"YowSiaoKang"},"content":" throw new IllegalValueException(Availability.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"YowSiaoKang"},"content":" return new Availability(availability);","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"YowSiaoKang"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"YowSiaoKang":44}},{"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":"Benson15912"},"content":"import seedu.address.model.person.Availability;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"YowSiaoKang"},"content":" private final List\u003cJsonAdaptedAvailability\u003e availabilities \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"YowSiaoKang"},"content":" @JsonProperty(\"email\") String email,","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"YowSiaoKang"},"content":" @JsonProperty(\"availabilities\") List\u003cJsonAdaptedAvailability\u003e availabilities,","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags) {","lastModifiedDate":"2023-05-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"YowSiaoKang"},"content":" if (availabilities !\u003d null) {","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"YowSiaoKang"},"content":" this.availabilities.addAll(availabilities);","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"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":"YowSiaoKang"},"content":" availabilities.addAll(source.getAvailabilities().stream()","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"YowSiaoKang"},"content":" .map(JsonAdaptedAvailability::new)","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"YowSiaoKang"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09"},{"lineNumber":63,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13"},{"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 this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"YowSiaoKang"},"content":" final List\u003cAvailability\u003e availabilityList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09"},{"lineNumber":76,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"YowSiaoKang"},"content":" for (JsonAdaptedAvailability availability : availabilities) {","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"YowSiaoKang"},"content":" availabilityList.add(availability.toModelType());","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-17"},{"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":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"YowSiaoKang"},"content":" final Set\u003cAvailability\u003e modelAvailability \u003d new HashSet\u003c\u003e(availabilityList);","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"Benson15912"},"content":" return new Person(modelName, modelPhone, modelEmail, modelAvailability, modelTags);","lastModifiedDate":"2024-03-12"},{"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"}],"authorContributionMap":{"Benson15912":2,"-":94,"YowSiaoKang":14}},{"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":"-"},"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":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-10-15"},{"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":"","lastModifiedDate":"2016-09-14"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * The UI component that is responsible for receiving user command inputs.","lastModifiedDate":"2017-08-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class CommandBox extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String ERROR_STYLE_CLASS \u003d \"error\";","lastModifiedDate":"2017-02-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"CommandBox.fxml\";","lastModifiedDate":"2017-04-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private final CommandExecutor commandExecutor;","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-14"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private TextField commandTextField;","lastModifiedDate":"2016-09-14"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Creates a {@code CommandBox} with the given {@code CommandExecutor}.","lastModifiedDate":"2020-05-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public CommandBox(CommandExecutor commandExecutor) {","lastModifiedDate":"2019-01-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" this.commandExecutor \u003d commandExecutor;","lastModifiedDate":"2018-12-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // calls #setStyleToDefault() whenever there is a change to the text of the command box.","lastModifiedDate":"2017-06-28"},{"lineNumber":31,"author":{"gitId":"-"},"content":" commandTextField.textProperty().addListener((unused1, unused2, unused3) -\u003e setStyleToDefault());","lastModifiedDate":"2017-06-28"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Handles the Enter button pressed event.","lastModifiedDate":"2017-08-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private void handleCommandEntered() {","lastModifiedDate":"2018-04-01"},{"lineNumber":39,"author":{"gitId":"-"},"content":" String commandText \u003d commandTextField.getText();","lastModifiedDate":"2020-12-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":" if (commandText.equals(\"\")) {","lastModifiedDate":"2020-12-04"},{"lineNumber":41,"author":{"gitId":"-"},"content":" return;","lastModifiedDate":"2020-12-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-12-04"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-12-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-02-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" commandExecutor.execute(commandText);","lastModifiedDate":"2020-12-04"},{"lineNumber":46,"author":{"gitId":"-"},"content":" commandTextField.setText(\"\");","lastModifiedDate":"2016-09-14"},{"lineNumber":47,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2017-03-11"},{"lineNumber":48,"author":{"gitId":"-"},"content":" setStyleToIndicateCommandFailure();","lastModifiedDate":"2017-02-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-14"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-28"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Sets the command box style to use the default style.","lastModifiedDate":"2017-06-28"},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28"},{"lineNumber":55,"author":{"gitId":"-"},"content":" private void setStyleToDefault() {","lastModifiedDate":"2017-06-28"},{"lineNumber":56,"author":{"gitId":"-"},"content":" commandTextField.getStyleClass().remove(ERROR_STYLE_CLASS);","lastModifiedDate":"2017-02-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-28"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Sets the command box style to indicate a failed command.","lastModifiedDate":"2017-02-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28"},{"lineNumber":62,"author":{"gitId":"-"},"content":" private void setStyleToIndicateCommandFailure() {","lastModifiedDate":"2017-02-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" ObservableList\u003cString\u003e styleClass \u003d commandTextField.getStyleClass();","lastModifiedDate":"2017-03-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" if (styleClass.contains(ERROR_STYLE_CLASS)) {","lastModifiedDate":"2017-03-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return;","lastModifiedDate":"2017-03-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" styleClass.add(ERROR_STYLE_CLASS);","lastModifiedDate":"2017-03-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Represents a function that can execute commands.","lastModifiedDate":"2018-12-09"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @FunctionalInterface","lastModifiedDate":"2018-12-09"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public interface CommandExecutor {","lastModifiedDate":"2018-12-09"},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":79,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":80,"author":{"gitId":"SimKianSeng"},"content":" * @see seedu.address.logic.Logic#execute(String, boolean)","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":82,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2018-12-09"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":85,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"}],"authorContributionMap":{"SimKianSeng":1,"-":84}},{"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":"SimKianSeng"},"content":" private boolean isConfirmation;","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":" // Independent Ui parts residing in this Ui container","lastModifiedDate":"2016-08-18"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private PersonListPanel personListPanel;","lastModifiedDate":"2016-08-18"},{"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":"-"},"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":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08"},{"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":"SimKianSeng"},"content":" isConfirmation \u003d false;","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":" personListPanel \u003d new PersonListPanel(logic.getFilteredPersonList());","lastModifiedDate":"2019-01-25"},{"lineNumber":117,"author":{"gitId":"-"},"content":" personListPanelPlaceholder.getChildren().add(personListPanel.getRoot());","lastModifiedDate":"2017-06-14"},{"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":"-"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getAddressBookFilePath());","lastModifiedDate":"2019-01-25"},{"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":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":129,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":130,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27"},{"lineNumber":131,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":132,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":133,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27"},{"lineNumber":134,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27"},{"lineNumber":135,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27"},{"lineNumber":136,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27"},{"lineNumber":137,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":141,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":142,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15"},{"lineNumber":143,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":145,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15"},{"lineNumber":147,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":148,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15"},{"lineNumber":149,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":153,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15"},{"lineNumber":154,"author":{"gitId":"-"},"content":" primaryStage.show();","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":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":158,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18"},{"lineNumber":159,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":160,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":161,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18"},{"lineNumber":162,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":169,"author":{"gitId":"-"},"content":" public PersonListPanel getPersonListPanel() {","lastModifiedDate":"2016-08-25"},{"lineNumber":170,"author":{"gitId":"-"},"content":" return personListPanel;","lastModifiedDate":"2018-08-14"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":173,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":174,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":175,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":176,"author":{"gitId":"SimKianSeng"},"content":" * @see Logic#execute(String, boolean)","lastModifiedDate":"2024-03-20"},{"lineNumber":177,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":178,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09"},{"lineNumber":179,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":180,"author":{"gitId":"SimKianSeng"},"content":" CommandResult commandResult \u003d logic.execute(commandText, isConfirmation);","lastModifiedDate":"2024-03-20"},{"lineNumber":181,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":182,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":184,"author":{"gitId":"SimKianSeng"},"content":" isConfirmation \u003d commandResult.isConfirmation(); // to determine if next commandText is a confirmation","lastModifiedDate":"2024-03-20"},{"lineNumber":185,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":186,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":187,"author":{"gitId":"-"},"content":" handleHelp();","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":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":191,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09"},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":194,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":195,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09"},{"lineNumber":196,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13"},{"lineNumber":197,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09"},{"lineNumber":198,"author":{"gitId":"-"},"content":" throw e;","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":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"SimKianSeng":7,"-":194}},{"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":"Benson15912"},"content":" private Label availability;","lastModifiedDate":"2024-03-12"},{"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":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-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":"YowSiaoKang"},"content":" availability.setText(\"Availability: \" + person.getAvailabilities().toString());","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"-"},"content":" person.getTags().stream()","lastModifiedDate":"2019-01-02"},{"lineNumber":56,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02"},{"lineNumber":57,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"Benson15912":1,"-":57,"YowSiaoKang":1}},{"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":"xuwen-ho"},"content":" -fx-background-color: derive(#000000, 80%);","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"xuwen-ho"},"content":" background-color: #676F9D; /* Used in the default.html file */","lastModifiedDate":"2024-03-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":"-"},"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":"xuwen-ho"},"content":" -fx-base: #2d3250;","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"xuwen-ho"},"content":" -fx-control-inner-background: #2d3250;","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"xuwen-ho"},"content":" -fx-background-color: #2d3250;","lastModifiedDate":"2024-03-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":"-"},"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":"xuwen-ho"},"content":" -fx-background-color: derive(#000000, 20%);","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"xuwen-ho"},"content":" -fx-border-color: transparent transparent transparent #6C7B8B;","lastModifiedDate":"2024-03-17"},{"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":"xuwen-ho"},"content":" -fx-background-color: derive(#2d3250, 20%);","lastModifiedDate":"2024-03-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":"xuwen-ho"},"content":" -fx-background-color: derive(#2d3250, 20%);","lastModifiedDate":"2024-03-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":"-"},"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":"xuwen-ho"},"content":" -fx-border-color: #2d3250;","lastModifiedDate":"2024-03-17"},{"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":"xuwen-ho"},"content":" -fx-background-color: derive(#2d3250, 20%);","lastModifiedDate":"2024-03-17"},{"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":"xuwen-ho"},"content":" -fx-background-color: derive(#2d3250, 20%);","lastModifiedDate":"2024-03-17"},{"lineNumber":141,"author":{"gitId":"xuwen-ho"},"content":" -fx-border-color: derive(#2d3250, 10%);","lastModifiedDate":"2024-03-17"},{"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":"xuwen-ho"},"content":" -fx-background-color: derive(#2d3250, 30%);","lastModifiedDate":"2024-03-17"},{"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":"xuwen-ho"},"content":" -fx-background-color: derive(#2d3250, 30%);","lastModifiedDate":"2024-03-17"},{"lineNumber":169,"author":{"gitId":"xuwen-ho"},"content":" -fx-border-color: derive(#2d3250, 25%);","lastModifiedDate":"2024-03-17"},{"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":"xuwen-ho"},"content":" -fx-background-color: derive(#2d3250, 30%);","lastModifiedDate":"2024-03-17"},{"lineNumber":179,"author":{"gitId":"xuwen-ho"},"content":" -fx-border-color: derive(#2d3250, 30%);","lastModifiedDate":"2024-03-17"},{"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":"xuwen-ho"},"content":" -fx-background-color: derive(#2d3250, 30%);","lastModifiedDate":"2024-03-17"},{"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":"xuwen-ho"},"content":" -fx-background-color: derive(#2d3250, 50%);","lastModifiedDate":"2024-03-17"},{"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":"xuwen-ho"},"content":" -fx-background-color: derive(#2d3250, 20%);","lastModifiedDate":"2024-03-17"},{"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":"xuwen-ho"},"content":" -fx-background-color: #2d3250;","lastModifiedDate":"2024-03-17"},{"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":"xuwen-ho"},"content":" -fx-text-fill: #2d3250;","lastModifiedDate":"2024-03-17"},{"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":"xuwen-ho"},"content":" -fx-background-color: #2d3250;","lastModifiedDate":"2024-03-17"},{"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":"xuwen-ho"},"content":" -fx-background-color: #2d3250;","lastModifiedDate":"2024-03-17"},{"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":"xuwen-ho"},"content":" -fx-background-color: #2d3250;","lastModifiedDate":"2024-03-17"},{"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":"xuwen-ho"},"content":" -fx-background-color: derive(#2d3250, 25%);","lastModifiedDate":"2024-03-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: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":"xuwen-ho"},"content":" -fx-background-color: derive(#2d3250, 20%);","lastModifiedDate":"2024-03-17"},{"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":"xuwen-ho"},"content":" -fx-background-color: derive(#2d3250, 50%);","lastModifiedDate":"2024-03-17"},{"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":"xuwen-ho"},"content":" -fx-background-color: #2d3250;","lastModifiedDate":"2024-03-17"},{"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":"xuwen-ho"},"content":" -fx-background-color: transparent #676F9D transparent #676F9D;","lastModifiedDate":"2024-03-17"},{"lineNumber":322,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":323,"author":{"gitId":"xuwen-ho"},"content":" -fx-border-color: #676F9D #676F9D #ffffff #676F9D;","lastModifiedDate":"2024-03-17"},{"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":"xuwen-ho"},"content":" -fx-background-color: transparent, #676F9D, transparent, #676F9D;","lastModifiedDate":"2024-03-17"},{"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":"xuwen-ho"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-17"},{"lineNumber":347,"author":{"gitId":"xuwen-ho"},"content":" -fx-background-color: #f9b17a;","lastModifiedDate":"2024-03-17"},{"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":{"xuwen-ho":35,"-":317}},{"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":"xuwen-ho"},"content":" -fx-background: #505680","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"xuwen-ho"},"content":";","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":".tag-selector {","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-border-color: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" -fx-border-radius: 3;","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" -fx-background-radius: 3;","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":".tooltip-text {","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"xuwen-ho":2,"-":19}},{"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":"xuwen-ho"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"xuwen-ho"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"xuwen-ho"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"xuwen-ho"},"content":" \u003cHBox alignment\u003d\"CENTER_LEFT\" spacing\u003d\"5\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"xuwen-ho"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"5\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"xuwen-ho"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"xuwen-ho"},"content":" \u003cHBox alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":35,"author":{"gitId":"xuwen-ho"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"xuwen-ho"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"xuwen-ho"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" GridPane.columnIndex\u003d\"1\"\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"xuwen-ho"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"xuwen-ho"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"5\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"xuwen-ho"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"xuwen-ho"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" GridPane.columnIndex\u003d\"2\"\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"xuwen-ho"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"xuwen-ho"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"5\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"xuwen-ho"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"xuwen-ho"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" GridPane.columnIndex\u003d\"3\"\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"xuwen-ho"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"xuwen-ho"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"5\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"xuwen-ho"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"xuwen-ho"},"content":" \u003cLabel fx:id\u003d\"availability\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"xuwen-ho"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"xuwen-ho":23,"-":33}},{"path":"src/test/java/seedu/address/logic/ConfirmationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"SimKianSeng"},"content":"package seedu.address.logic;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"SimKianSeng"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"SimKianSeng"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"SimKianSeng"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"SimKianSeng"},"content":"import static seedu.address.logic.Messages.MESSAGE_CONFIRMATION;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"SimKianSeng"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"SimKianSeng"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"SimKianSeng"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"SimKianSeng"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"SimKianSeng"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"SimKianSeng"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"SimKianSeng"},"content":"public class ConfirmationTest {","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"SimKianSeng"},"content":" public static final int RANDOM_INDEX \u003d 1;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"SimKianSeng"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"SimKianSeng"},"content":" public void assertNoConfirmation() {","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"SimKianSeng"},"content":" Confirmation confirmation;","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"SimKianSeng"},"content":" confirmation \u003d new Confirmation(new AddCommand(ALICE));","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"SimKianSeng"},"content":" assertTrue(confirmation.isToProceed());","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"SimKianSeng"},"content":" // different command -\u003e return true","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"SimKianSeng"},"content":" confirmation \u003d new Confirmation((new ListCommand()));","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"SimKianSeng"},"content":" assertTrue(confirmation.isToProceed());","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"SimKianSeng"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"SimKianSeng"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"SimKianSeng"},"content":" public void assertConfirmation() {","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"SimKianSeng"},"content":" Confirmation confirmation \u003d new Confirmation(new DeleteCommand(Index.fromOneBased(RANDOM_INDEX)));","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"SimKianSeng"},"content":" assertFalse(confirmation.isToProceed());","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"SimKianSeng"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"SimKianSeng"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"SimKianSeng"},"content":" public void assertConfirmationString() {","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"SimKianSeng"},"content":" Confirmation confirmation \u003d new Confirmation((new ListCommand()));","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"SimKianSeng"},"content":" assertEquals(MESSAGE_CONFIRMATION, confirmation.toString());","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"SimKianSeng"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"SimKianSeng"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"SimKianSeng":41}},{"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":"SimKianSeng"},"content":"import static seedu.address.logic.Messages.MESSAGE_CONFIRMATION;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"SimKianSeng"},"content":"import static seedu.address.logic.Messages.MESSAGE_CONFIRMATION_CANCELLED;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"Benson15912"},"content":"import static seedu.address.logic.commands.CommandTestUtil.AVAILABILITY_DESC_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"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.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":"-"},"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":"SimKianSeng"},"content":" assertParseException(invalidCommand, false, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2024-03-21"},{"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":"SimKianSeng"},"content":" public void execute_commandExecutionError_throwsCommandException() throws CommandException, ParseException {","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2017-06-14"},{"lineNumber":66,"author":{"gitId":"SimKianSeng"},"content":" String confirmation \u003d \"y\";","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"SimKianSeng"},"content":" assertCommandSuccess(deleteCommand, false, MESSAGE_CONFIRMATION, model);","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"SimKianSeng"},"content":" assertCommandException(confirmation, true, MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-21"},{"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":"SimKianSeng"},"content":" public void execute_validCommand_success() throws CommandException, ParseException {","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2017-06-19"},{"lineNumber":74,"author":{"gitId":"SimKianSeng"},"content":" assertCommandSuccess(listCommand, false, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":77,"author":{"gitId":"SimKianSeng"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"SimKianSeng"},"content":" public void execute_validCommand_cancelled() throws CommandException, ParseException {","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"SimKianSeng"},"content":" String deleteCommand \u003d \"delete 1\";","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"SimKianSeng"},"content":" String confirmation \u003d \"anything\";","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"SimKianSeng"},"content":" assertCommandSuccess(deleteCommand, false, MESSAGE_CONFIRMATION, model);","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"SimKianSeng"},"content":" assertCommandSuccess(confirmation, true, MESSAGE_CONFIRMATION_CANCELLED, model);","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().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":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":107,"author":{"gitId":"SimKianSeng"},"content":" * @see #assertCommandFailure(String, boolean, Class, String, Model)","lastModifiedDate":"2024-03-21"},{"lineNumber":108,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":109,"author":{"gitId":"SimKianSeng"},"content":" private void assertCommandSuccess(String inputCommand, boolean isConfirmation, String expectedMessage,","lastModifiedDate":"2024-03-21"},{"lineNumber":110,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14"},{"lineNumber":111,"author":{"gitId":"SimKianSeng"},"content":" CommandResult result \u003d logic.execute(inputCommand, isConfirmation);","lastModifiedDate":"2024-03-21"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":116,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":117,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":118,"author":{"gitId":"SimKianSeng"},"content":" * @see #assertCommandFailure(String, boolean, Class, String, Model)","lastModifiedDate":"2024-03-21"},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":120,"author":{"gitId":"SimKianSeng"},"content":" private void assertParseException(String inputCommand, boolean isConfirmation, String expectedMessage) {","lastModifiedDate":"2024-03-21"},{"lineNumber":121,"author":{"gitId":"SimKianSeng"},"content":" assertCommandFailure(inputCommand, isConfirmation, ParseException.class, expectedMessage);","lastModifiedDate":"2024-03-21"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":124,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14"},{"lineNumber":126,"author":{"gitId":"SimKianSeng"},"content":" * @see #assertCommandFailure(String, boolean, Class, String, Model)","lastModifiedDate":"2024-03-21"},{"lineNumber":127,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14"},{"lineNumber":128,"author":{"gitId":"SimKianSeng"},"content":" private void assertCommandException(String inputCommand, boolean isConfirmation, String expectedMessage) {","lastModifiedDate":"2024-03-21"},{"lineNumber":129,"author":{"gitId":"SimKianSeng"},"content":" assertCommandFailure(inputCommand, isConfirmation, CommandException.class, expectedMessage);","lastModifiedDate":"2024-03-21"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":134,"author":{"gitId":"SimKianSeng"},"content":" * @see #assertCommandFailure(String, boolean, Class, String, Model)","lastModifiedDate":"2024-03-21"},{"lineNumber":135,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":136,"author":{"gitId":"SimKianSeng"},"content":" private void assertCommandFailure(String inputCommand, boolean isConfirmation,","lastModifiedDate":"2024-03-21"},{"lineNumber":137,"author":{"gitId":"SimKianSeng"},"content":" Class\u003c? extends Throwable\u003e expectedException, String expectedMessage) {","lastModifiedDate":"2024-03-21"},{"lineNumber":138,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31"},{"lineNumber":139,"author":{"gitId":"SimKianSeng"},"content":" assertCommandFailure(inputCommand, isConfirmation, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-21"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":142,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":143,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":144,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":145,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":146,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":147,"author":{"gitId":"SimKianSeng"},"content":" * @see #assertCommandSuccess(String, boolean, String, Model)","lastModifiedDate":"2024-03-21"},{"lineNumber":148,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":149,"author":{"gitId":"SimKianSeng"},"content":" private void assertCommandFailure(String inputCommand, boolean isConfirmation,","lastModifiedDate":"2024-03-21"},{"lineNumber":150,"author":{"gitId":"SimKianSeng"},"content":" Class\u003c? extends Throwable\u003e expectedException, String expectedMessage,","lastModifiedDate":"2024-03-21"},{"lineNumber":151,"author":{"gitId":"SimKianSeng"},"content":" Model expectedModel) {","lastModifiedDate":"2024-03-21"},{"lineNumber":152,"author":{"gitId":"SimKianSeng"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand, isConfirmation));","lastModifiedDate":"2024-03-21"},{"lineNumber":153,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19"},{"lineNumber":156,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":157,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13"},{"lineNumber":158,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13"},{"lineNumber":159,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13"},{"lineNumber":160,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13"},{"lineNumber":161,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":162,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13"},{"lineNumber":163,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":165,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13"},{"lineNumber":166,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":168,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13"},{"lineNumber":169,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13"},{"lineNumber":170,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":172,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":174,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":175,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13"},{"lineNumber":176,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":178,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":180,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13"},{"lineNumber":181,"author":{"gitId":"-"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2023-06-13"},{"lineNumber":182,"author":{"gitId":"Benson15912"},"content":" + EMAIL_DESC_AMY + AVAILABILITY_DESC_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":183,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2023-06-13"},{"lineNumber":184,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13"},{"lineNumber":185,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13"},{"lineNumber":186,"author":{"gitId":"SimKianSeng"},"content":" assertCommandFailure(addCommand, false, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-21"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":188,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"Benson15912":2,"SimKianSeng":34,"-":152}},{"path":"src/test/java/seedu/address/logic/commands/CommandResultTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2018-12-09"},{"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":"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":"2018-12-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class CommandResultTest {","lastModifiedDate":"2018-12-09"},{"lineNumber":11,"author":{"gitId":"SimKianSeng"},"content":" public static final String DEFAULT_FEEDBACK_MESSAGE \u003d \"feedback\";","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"SimKianSeng"},"content":" public static final String DIFFERENT_FEEDBACK_MESSAGE \u003d \"different\";","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-12-09"},{"lineNumber":15,"author":{"gitId":"SimKianSeng"},"content":" CommandResult commandResult \u003d new CommandResult(DEFAULT_FEEDBACK_MESSAGE);","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"SimKianSeng"},"content":" assertTrue(commandResult.equals(new CommandResult(DEFAULT_FEEDBACK_MESSAGE)));","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"SimKianSeng"},"content":" assertTrue(commandResult.equals(new CommandResult(DEFAULT_FEEDBACK_MESSAGE, false, false, false)));","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":" assertTrue(commandResult.equals(commandResult));","lastModifiedDate":"2018-12-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(null));","lastModifiedDate":"2018-12-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(0.5f));","lastModifiedDate":"2018-12-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // different feedbackToUser value -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":31,"author":{"gitId":"SimKianSeng"},"content":" assertFalse(commandResult.equals(new CommandResult(DIFFERENT_FEEDBACK_MESSAGE)));","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"SimKianSeng"},"content":" // different confirmation value -\u003e return false","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"SimKianSeng"},"content":" assertFalse(commandResult.equals(new CommandResult(DEFAULT_FEEDBACK_MESSAGE, true, false, false)));","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // different showHelp value -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":37,"author":{"gitId":"SimKianSeng"},"content":" assertFalse(commandResult.equals(new CommandResult(DEFAULT_FEEDBACK_MESSAGE, false, true, false)));","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" // different exit value -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":40,"author":{"gitId":"SimKianSeng"},"content":" assertFalse(commandResult.equals(new CommandResult(DEFAULT_FEEDBACK_MESSAGE, false, false, true)));","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void hashcode() {","lastModifiedDate":"2018-12-09"},{"lineNumber":45,"author":{"gitId":"SimKianSeng"},"content":" CommandResult commandResult \u003d new CommandResult(DEFAULT_FEEDBACK_MESSAGE);","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // same values -\u003e returns same hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":48,"author":{"gitId":"SimKianSeng"},"content":" assertEquals(commandResult.hashCode(), new CommandResult(DEFAULT_FEEDBACK_MESSAGE).hashCode());","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // different feedbackToUser value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":51,"author":{"gitId":"SimKianSeng"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(DIFFERENT_FEEDBACK_MESSAGE).hashCode());","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // different showHelp value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"SimKianSeng"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(DEFAULT_FEEDBACK_MESSAGE, false,","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"SimKianSeng"},"content":" true, false).hashCode());","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // different exit value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":58,"author":{"gitId":"SimKianSeng"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(DEFAULT_FEEDBACK_MESSAGE, false,","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"SimKianSeng"},"content":" false, true).hashCode());","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"SimKianSeng"},"content":" CommandResult commandResult \u003d new CommandResult(DEFAULT_FEEDBACK_MESSAGE);","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" String expected \u003d CommandResult.class.getCanonicalName() + \"{feedbackToUser\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"SimKianSeng"},"content":" + commandResult.getFeedbackToUser() + \", confirmation\u003d\" + commandResult.isConfirmation()","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"SimKianSeng"},"content":" + \", showHelp\u003d\" + commandResult.isShowHelp() + \", exit\u003d\" + commandResult.isExit() + \"}\";","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertEquals(expected, commandResult.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-12-09"}],"authorContributionMap":{"SimKianSeng":21,"-":49}},{"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":"Benson15912"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AVAIL;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-12"},{"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":"YowSiaoKang"},"content":" public static final String VALID_AVAILABILITY_AMY \u003d \"01/01/2024\";","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"YowSiaoKang"},"content":" public static final String VALID_AVAILABILITY_BOB \u003d \"31/12/2024\";","lastModifiedDate":"2024-03-17"},{"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":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":46,"author":{"gitId":"Benson15912"},"content":" public static final String AVAILABILITY_DESC_AMY \u003d \" \" + PREFIX_AVAIL + VALID_AVAILABILITY_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"Benson15912"},"content":" public static final String AVAILABILITY_DESC_BOB \u003d \" \" + PREFIX_AVAIL + VALID_AVAILABILITY_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":51,"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":52,"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":53,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05"},{"lineNumber":54,"author":{"gitId":"YowSiaoKang"},"content":" public static final String INVALID_AVAILABILITY_DESC \u003d \" \" + PREFIX_AVAIL + \"1/1/24\"; // wrong date format","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"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":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":65,"author":{"gitId":"Benson15912"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAvailability(VALID_AVAILABILITY_AMY)","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":68,"author":{"gitId":"Benson15912"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAvailability(VALID_AVAILABILITY_BOB)","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25"},{"lineNumber":78,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":79,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":80,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":83,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":84,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25"},{"lineNumber":93,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":94,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":98,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25"},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25"},{"lineNumber":105,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":106,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":107,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":108,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":115,"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":116,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31"},{"lineNumber":117,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":121,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31"},{"lineNumber":122,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20"},{"lineNumber":123,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":128,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"Benson15912":5,"-":120,"YowSiaoKang":3}},{"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":"Benson15912"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_AVAILABILITY_BOB;","lastModifiedDate":"2024-03-12"},{"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":"Benson15912"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withAvailability(VALID_AVAILABILITY_BOB).build();","lastModifiedDate":"2024-03-12"},{"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":"YowSiaoKang"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", availabilities\u003d\"","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"YowSiaoKang"},"content":" + editPersonDescriptor.getAvailabilities().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getTags().orElse(null) + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"Benson15912":2,"-":67,"YowSiaoKang":2}},{"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":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-12-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.ExitCommand.MESSAGE_EXIT_ACKNOWLEDGEMENT;","lastModifiedDate":"2017-06-08"},{"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.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2018-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class ExitCommandTest {","lastModifiedDate":"2017-06-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-12-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public void execute_exit_success() {","lastModifiedDate":"2017-06-08"},{"lineNumber":17,"author":{"gitId":"SimKianSeng"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, false, false, true);","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ExitCommand(), model, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08"}],"authorContributionMap":{"SimKianSeng":1,"-":19}},{"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":"YowSiaoKang"},"content":"import seedu.address.logic.parser.FindCommandParser;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"YowSiaoKang"},"content":"import seedu.address.model.person.AvailableAtDatePredicate;","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","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":" * Contains integration tests (interaction with the Model) for {@code FindCommand}.","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class FindCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"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":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2017-06-12"},{"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":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2017-06-27"},{"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":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"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":"-"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"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":"-"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void execute_zeroKeywords_noPersonFound() {","lastModifiedDate":"2017-08-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2017-06-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2018-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08"},{"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 execute_multipleKeywords_multiplePersonsFound() {","lastModifiedDate":"2017-08-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2017-06-12"},{"lineNumber":72,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\"Kurz Elle Kunz\");","lastModifiedDate":"2018-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" FindCommand findCommand \u003d new FindCommand(predicate);","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.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":"YowSiaoKang"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"YowSiaoKang"},"content":" public void execute_multipleAttributes_multiplePersonsFound() {","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"YowSiaoKang"},"content":" try {","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"YowSiaoKang"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 2);","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"YowSiaoKang"},"content":" NameContainsKeywordsPredicate predicate1 \u003d preparePredicate(\"Kurz\");","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"YowSiaoKang"},"content":" AvailableAtDatePredicate predicate2 \u003d new AvailableAtDatePredicate(Arrays.asList(\"25/05/2024\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"YowSiaoKang"},"content":" // test parser too","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"YowSiaoKang"},"content":" FindCommand command1 \u003d new FindCommandParser().parse(\" n/Kurz a/25/05/2024\");","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"YowSiaoKang"},"content":" FindCommand command2 \u003d new FindCommandParser().parse(\" a/25/05/2024 n/Kurz\");","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"YowSiaoKang"},"content":" expectedModel.updateFilteredPersonList(predicate1.or(predicate2));","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"YowSiaoKang"},"content":" assertCommandSuccess(command1, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"YowSiaoKang"},"content":" assertCommandSuccess(command2, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"YowSiaoKang"},"content":" assertEquals(Arrays.asList(CARL, ELLE), model.getFilteredPersonList());","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"YowSiaoKang"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-03-18"},{"lineNumber":101,"author":{"gitId":"YowSiaoKang"},"content":" e.printStackTrace();","lastModifiedDate":"2024-03-18"},{"lineNumber":102,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":103,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":104,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2018-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":108,"author":{"gitId":"-"},"content":" private NameContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2018-08-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":" return new NameContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2018-08-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":111,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"-":91,"YowSiaoKang":20}},{"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":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.HelpCommand.SHOWING_HELP_MESSAGE;","lastModifiedDate":"2017-06-08"},{"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.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2018-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class HelpCommandTest {","lastModifiedDate":"2017-06-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public void execute_help_success() {","lastModifiedDate":"2017-06-08"},{"lineNumber":17,"author":{"gitId":"SimKianSeng"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(SHOWING_HELP_MESSAGE, false, true, false);","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":" assertCommandSuccess(new HelpCommand(), model, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08"}],"authorContributionMap":{"SimKianSeng":1,"-":19}},{"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":"Benson15912"},"content":"import static seedu.address.logic.commands.CommandTestUtil.AVAILABILITY_DESC_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"Benson15912"},"content":"import static seedu.address.logic.commands.CommandTestUtil.AVAILABILITY_DESC_BOB;","lastModifiedDate":"2024-03-12"},{"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":"Benson15912"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_AVAILABILITY_DESC;","lastModifiedDate":"2024-03-12"},{"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":"Benson15912"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_AVAILABILITY_BOB;","lastModifiedDate":"2024-03-12"},{"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_EMAIL;","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-12"},{"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.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15"},{"lineNumber":39,"author":{"gitId":"Benson15912"},"content":"import seedu.address.model.person.Availability;","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2018-07-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":56,"author":{"gitId":"Benson15912"},"content":" + AVAILABILITY_DESC_BOB + TAG_DESC_FRIEND, new AddCommand(expectedPerson));","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND)","lastModifiedDate":"2018-07-25"},{"lineNumber":61,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":63,"author":{"gitId":"Benson15912"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + AVAILABILITY_DESC_BOB","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"Benson15912"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2024-03-12"},{"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":"YowSiaoKang"},"content":" public void parse_repeatedNonAddressOrTagValue_failure() {","lastModifiedDate":"2024-03-17"},{"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":"Benson15912"},"content":" + AVAILABILITY_DESC_BOB + TAG_DESC_FRIEND;","lastModifiedDate":"2024-03-12"},{"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":"","lastModifiedDate":"2023-07-14"},{"lineNumber":86,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":88,"author":{"gitId":"YowSiaoKang"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"-"},"content":" + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":90,"author":{"gitId":"YowSiaoKang"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_EMAIL, PREFIX_PHONE));","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":106,"author":{"gitId":"-"},"content":" // valid value followed by invalid 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":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":110,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":112,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":123,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15"},{"lineNumber":124,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2018-07-25"},{"lineNumber":125,"author":{"gitId":"Benson15912"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + AVAILABILITY_DESC_AMY,","lastModifiedDate":"2024-03-12"},{"lineNumber":126,"author":{"gitId":"-"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2017-12-23"},{"lineNumber":127,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":128,"author":{"gitId":"YowSiaoKang"},"content":" // no availability","lastModifiedDate":"2024-03-18"},{"lineNumber":129,"author":{"gitId":"YowSiaoKang"},"content":" Person expectedPersonNoAvailability \u003d new PersonBuilder(AMY).withTags().withAvailabilities().build();","lastModifiedDate":"2024-03-18"},{"lineNumber":130,"author":{"gitId":"YowSiaoKang"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY,","lastModifiedDate":"2024-03-18"},{"lineNumber":131,"author":{"gitId":"YowSiaoKang"},"content":" new AddCommand(expectedPersonNoAvailability));","lastModifiedDate":"2024-03-18"},{"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_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":136,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":138,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":139,"author":{"gitId":"Benson15912"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + AVAILABILITY_DESC_BOB,","lastModifiedDate":"2024-03-12"},{"lineNumber":140,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":142,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":143,"author":{"gitId":"Benson15912"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB + AVAILABILITY_DESC_BOB,","lastModifiedDate":"2024-03-12"},{"lineNumber":144,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":146,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":147,"author":{"gitId":"Benson15912"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + AVAILABILITY_DESC_BOB,","lastModifiedDate":"2024-03-12"},{"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":"Benson15912"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_AVAILABILITY_BOB,","lastModifiedDate":"2024-03-12"},{"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":"Benson15912"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + AVAILABILITY_DESC_BOB","lastModifiedDate":"2024-03-12"},{"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":"Benson15912"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + AVAILABILITY_DESC_BOB","lastModifiedDate":"2024-03-12"},{"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":"Benson15912"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + AVAILABILITY_DESC_BOB","lastModifiedDate":"2024-03-12"},{"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":"Benson15912"},"content":" // invalid availability","lastModifiedDate":"2024-03-12"},{"lineNumber":170,"author":{"gitId":"Benson15912"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_AVAILABILITY_DESC","lastModifiedDate":"2024-03-12"},{"lineNumber":171,"author":{"gitId":"Benson15912"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Availability.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":173,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15"},{"lineNumber":174,"author":{"gitId":"Benson15912"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + AVAILABILITY_DESC_BOB","lastModifiedDate":"2024-03-12"},{"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":"Benson15912"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_AVAILABILITY_DESC,","lastModifiedDate":"2024-03-12"},{"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":"Benson15912"},"content":" + AVAILABILITY_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2024-03-12"},{"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":{"Benson15912":23,"-":155,"YowSiaoKang":8}},{"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":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24"},{"lineNumber":26,"author":{"gitId":"YowSiaoKang"},"content":"import seedu.address.model.person.AvailableAtDatePredicate;","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command);","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_edit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2018-03-26"},{"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":"YowSiaoKang"},"content":" public void parseCommand_findName() throws Exception {","lastModifiedDate":"2024-03-18"},{"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":"YowSiaoKang"},"content":" FindCommand.COMMAND_WORD + \" n/ \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"YowSiaoKang"},"content":" FindCommand expectedCommand \u003d new FindCommand(new NameContainsKeywordsPredicate(keywords));","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"YowSiaoKang"},"content":" assertEquals(expectedCommand, command);","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"YowSiaoKang"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"YowSiaoKang"},"content":" public void parseCommand_findAvail() throws Exception {","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"YowSiaoKang"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"01/01/2021\", \"02/01/2021\", \"03/01/2021\");","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"YowSiaoKang"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"YowSiaoKang"},"content":" FindCommand.COMMAND_WORD + \" a/ \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"YowSiaoKang"},"content":" FindCommand expectedCommand \u003d new FindCommand(new AvailableAtDatePredicate(keywords));","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"YowSiaoKang"},"content":" assertEquals(expectedCommand, command);","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"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_list() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","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_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"-":98,"YowSiaoKang":14}},{"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":"Benson15912"},"content":"import static seedu.address.logic.commands.CommandTestUtil.AVAILABILITY_DESC_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"Benson15912"},"content":"import static seedu.address.logic.commands.CommandTestUtil.AVAILABILITY_DESC_BOB;","lastModifiedDate":"2024-03-12"},{"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":"Benson15912"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_AVAILABILITY_DESC;","lastModifiedDate":"2024-03-12"},{"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":"Benson15912"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_AVAILABILITY_AMY;","lastModifiedDate":"2024-03-12"},{"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":"YowSiaoKang"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AVAIL;","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-12"},{"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":"Benson15912"},"content":"import seedu.address.model.person.Availability;","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-12"},{"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":"-"},"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":"Benson15912"},"content":" assertParseFailure(parser, \"1\" + INVALID_AVAILABILITY_DESC,","lastModifiedDate":"2024-03-12"},{"lineNumber":90,"author":{"gitId":"Benson15912"},"content":" Availability.MESSAGE_CONSTRAINTS); // invalid availability","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2018-09-22"},{"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":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"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":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_DESC_HUSBAND + TAG_EMPTY, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_EMPTY + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_EMPTY + TAG_DESC_FRIEND + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":102,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04"},{"lineNumber":103,"author":{"gitId":"Benson15912"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2024-03-12"},{"lineNumber":104,"author":{"gitId":"Benson15912"},"content":" + VALID_AVAILABILITY_AMY + VALID_PHONE_AMY,","lastModifiedDate":"2024-03-12"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":110,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":111,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2017-06-06"},{"lineNumber":112,"author":{"gitId":"Benson15912"},"content":" + EMAIL_DESC_AMY + AVAILABILITY_DESC_AMY + NAME_DESC_AMY + TAG_DESC_FRIEND;","lastModifiedDate":"2024-03-12"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":114,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-05-04"},{"lineNumber":115,"author":{"gitId":"Benson15912"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withAvailability(VALID_AVAILABILITY_AMY)","lastModifiedDate":"2024-03-12"},{"lineNumber":116,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":117,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"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_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":124,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":125,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":127,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-04"},{"lineNumber":128,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":129,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"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_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":136,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04"},{"lineNumber":137,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":138,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":139,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":140,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":143,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2017-05-04"},{"lineNumber":144,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":145,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":146,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":147,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":149,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04"},{"lineNumber":150,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":151,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":152,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":153,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":155,"author":{"gitId":"Benson15912"},"content":" // availability","lastModifiedDate":"2024-03-12"},{"lineNumber":156,"author":{"gitId":"Benson15912"},"content":" userInput \u003d targetIndex.getOneBased() + AVAILABILITY_DESC_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":157,"author":{"gitId":"Benson15912"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withAvailability(VALID_AVAILABILITY_AMY).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":158,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"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":"-"},"content":" // tags","lastModifiedDate":"2017-05-04"},{"lineNumber":162,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + TAG_DESC_FRIEND;","lastModifiedDate":"2017-05-25"},{"lineNumber":163,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":164,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"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":"","lastModifiedDate":"2017-05-04"},{"lineNumber":168,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":169,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":170,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14"},{"lineNumber":171,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-07-14"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":173,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14"},{"lineNumber":174,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":175,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2023-07-14"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":177,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":179,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14"},{"lineNumber":180,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2023-07-14"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":182,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":184,"author":{"gitId":"-"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":185,"author":{"gitId":"Benson15912"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY + AVAILABILITY_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2024-03-12"},{"lineNumber":186,"author":{"gitId":"Benson15912"},"content":" + TAG_DESC_FRIEND + PHONE_DESC_AMY + AVAILABILITY_DESC_AMY + EMAIL_DESC_AMY + TAG_DESC_FRIEND","lastModifiedDate":"2024-03-12"},{"lineNumber":187,"author":{"gitId":"Benson15912"},"content":" + PHONE_DESC_BOB + AVAILABILITY_DESC_BOB + EMAIL_DESC_BOB + TAG_DESC_HUSBAND;","lastModifiedDate":"2024-03-12"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":189,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":190,"author":{"gitId":"YowSiaoKang"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL));","lastModifiedDate":"2024-03-17"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":192,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14"},{"lineNumber":193,"author":{"gitId":"Benson15912"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + INVALID_AVAILABILITY_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2024-03-12"},{"lineNumber":194,"author":{"gitId":"Benson15912"},"content":" + INVALID_PHONE_DESC + INVALID_AVAILABILITY_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2024-03-12"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":196,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":197,"author":{"gitId":"YowSiaoKang"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL));","lastModifiedDate":"2024-03-17"},{"lineNumber":198,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":200,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":201,"author":{"gitId":"-"},"content":" public void parse_resetTags_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":202,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":203,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_EMPTY;","lastModifiedDate":"2017-05-25"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":205,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withTags().build();","lastModifiedDate":"2017-05-04"},{"lineNumber":206,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":208,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":209,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":210,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":211,"author":{"gitId":"YowSiaoKang"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":212,"author":{"gitId":"YowSiaoKang"},"content":" public void parse_resetAvailibilities_success() {","lastModifiedDate":"2024-03-18"},{"lineNumber":213,"author":{"gitId":"YowSiaoKang"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2024-03-18"},{"lineNumber":214,"author":{"gitId":"YowSiaoKang"},"content":" String userInput \u003d targetIndex.getOneBased() + \" \" + PREFIX_AVAIL;","lastModifiedDate":"2024-03-18"},{"lineNumber":215,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":216,"author":{"gitId":"YowSiaoKang"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withAvailability().build();","lastModifiedDate":"2024-03-18"},{"lineNumber":217,"author":{"gitId":"YowSiaoKang"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-18"},{"lineNumber":218,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":219,"author":{"gitId":"YowSiaoKang"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-18"},{"lineNumber":220,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":221,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04"}],"authorContributionMap":{"Benson15912":19,"-":188,"YowSiaoKang":14}},{"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":"YowSiaoKang"},"content":"import seedu.address.model.person.Availability;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"YowSiaoKang"},"content":"import seedu.address.model.person.AvailableAtDatePredicate;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class FindCommandParserTest {","lastModifiedDate":"2017-06-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private FindCommandParser parser \u003d new FindCommandParser();","lastModifiedDate":"2017-06-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2017-06-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \" \", String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-07-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"YowSiaoKang"},"content":" public void parse_prefixWithoutArgs_throwsParseException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"YowSiaoKang"},"content":" assertParseFailure(parser, \" n/\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"YowSiaoKang"},"content":" assertParseFailure(parser, \" a/\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"YowSiaoKang"},"content":" assertParseFailure(parser, \" n/ a/\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":33,"author":{"gitId":"YowSiaoKang"},"content":" public void parse_validNameArgs_returnsFindCommand() {","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"YowSiaoKang"},"content":" // single space between keywords","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"-"},"content":" FindCommand expectedFindCommand \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" new FindCommand(new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\")));","lastModifiedDate":"2017-06-12"},{"lineNumber":37,"author":{"gitId":"YowSiaoKang"},"content":" assertParseSuccess(parser, \" n/Alice Bob\", expectedFindCommand);","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"YowSiaoKang"},"content":" assertParseSuccess(parser, \" n/ \\n Alice \\n \\t Bob \\t\", expectedFindCommand);","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"YowSiaoKang"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"YowSiaoKang"},"content":" public void parse_invalidAvailArgs_throwsParseException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"YowSiaoKang"},"content":" assertParseFailure(parser, \" a/12/1/2024\",","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"YowSiaoKang"},"content":" String.format(Availability.MESSAGE_CONSTRAINTS));","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"YowSiaoKang"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"YowSiaoKang"},"content":" public void parse_validAvailabilityArgs_returnsFindCommand() {","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"YowSiaoKang"},"content":" try {","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"YowSiaoKang"},"content":" // single space between keywords","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"YowSiaoKang"},"content":" FindCommand expectedFindCommand \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"YowSiaoKang"},"content":" new FindCommand(new AvailableAtDatePredicate(Arrays.asList(\"01/01/2024\", \"12/12/2024\")));","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"YowSiaoKang"},"content":" assertParseSuccess(parser, \" a/01/01/2024 12/12/2024\", expectedFindCommand);","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"YowSiaoKang"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"YowSiaoKang"},"content":" assertParseSuccess(parser, \" a/ \\n 01/01/2024 \\n \\t 12/12/2024 \\t\", expectedFindCommand);","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"YowSiaoKang"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"YowSiaoKang"},"content":" e.printStackTrace();","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-27"}],"authorContributionMap":{"-":31,"YowSiaoKang":33}},{"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":"Benson15912"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_AVAILABILITY_BOB;","lastModifiedDate":"2024-03-12"},{"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":"-"},"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":"YowSiaoKang"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAvailabilities(VALID_AVAILABILITY_BOB)","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"Benson15912"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-03-12"},{"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":"YowSiaoKang"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAvailabilities(VALID_AVAILABILITY_BOB)","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"Benson15912"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-03-12"},{"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":"-"},"content":"}","lastModifiedDate":"2016-12-24"}],"authorContributionMap":{"Benson15912":3,"-":103,"YowSiaoKang":2}},{"path":"src/test/java/seedu/address/model/person/AvailabilityTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"YowSiaoKang"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"YowSiaoKang"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"YowSiaoKang"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"YowSiaoKang"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"YowSiaoKang"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"YowSiaoKang"},"content":"public class AvailabilityTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"YowSiaoKang"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"YowSiaoKang"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"YowSiaoKang"},"content":" assertThrows(NullPointerException.class, () -\u003e new Availability(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"YowSiaoKang"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"YowSiaoKang"},"content":" public void constructor_invalidAvailability_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"YowSiaoKang"},"content":" String invalidAvailability \u003d \"\";","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"YowSiaoKang"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Availability(invalidAvailability));","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"YowSiaoKang"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"YowSiaoKang"},"content":" public void isValidAvailability() {","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"YowSiaoKang"},"content":" // null availability","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"YowSiaoKang"},"content":" assertThrows(NullPointerException.class, () -\u003e Availability.isValidAvailability(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"YowSiaoKang"},"content":" // invalid availability","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"YowSiaoKang"},"content":" assertFalse(Availability.isValidAvailability(\"\")); // empty string","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"YowSiaoKang"},"content":" assertFalse(Availability.isValidAvailability(\" \")); // spaces only","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"YowSiaoKang"},"content":" assertFalse(Availability.isValidAvailability(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"YowSiaoKang"},"content":" assertFalse(Availability.isValidAvailability(\"peter*\")); // contains non-alphanumeric characters","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"YowSiaoKang"},"content":" assertFalse(Availability.isValidAvailability(\"Available\")); // alphabets only","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"YowSiaoKang"},"content":" // valid availability","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"YowSiaoKang"},"content":" assertTrue(Availability.isValidAvailability(\"01/01/2024\")); // date format","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"YowSiaoKang"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"YowSiaoKang"},"content":" public void equals() {","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"YowSiaoKang"},"content":" Availability availability \u003d new Availability(\"01/01/2024\");","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"YowSiaoKang"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"YowSiaoKang"},"content":" assertTrue(availability.equals(new Availability(\"01/01/2024\")));","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"YowSiaoKang"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"YowSiaoKang"},"content":" assertTrue(availability.equals(availability));","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"YowSiaoKang"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"YowSiaoKang"},"content":" assertFalse(availability.equals(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"YowSiaoKang"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"YowSiaoKang"},"content":" assertFalse(availability.equals(5.0f));","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"YowSiaoKang"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"YowSiaoKang"},"content":" assertFalse(availability.equals(new Availability(\"12/12/2024\")));","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"YowSiaoKang"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"YowSiaoKang":56}},{"path":"src/test/java/seedu/address/model/person/AvailableAtDatePredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"YowSiaoKang"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"YowSiaoKang"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"YowSiaoKang"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"YowSiaoKang"},"content":"import java.util.List;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"YowSiaoKang"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"YowSiaoKang"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"YowSiaoKang"},"content":"public class AvailableAtDatePredicateTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"YowSiaoKang"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"YowSiaoKang"},"content":" public void equals() throws Exception {","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"YowSiaoKang"},"content":" List\u003cString\u003e firstPredicateKeywordList \u003d List.of(\"01/01/2024\");","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"YowSiaoKang"},"content":" List\u003cString\u003e secondPredicateKeywordList \u003d List.of(\"12/12/2024\", \"01/01/2024\");","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"YowSiaoKang"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"YowSiaoKang"},"content":" AvailableAtDatePredicate firstPredicate \u003d new AvailableAtDatePredicate(firstPredicateKeywordList);","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"YowSiaoKang"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"YowSiaoKang"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"YowSiaoKang"},"content":" AvailableAtDatePredicate firstPredicateCopy \u003d new AvailableAtDatePredicate(firstPredicateKeywordList);","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"YowSiaoKang"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"YowSiaoKang"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"YowSiaoKang"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"YowSiaoKang"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"YowSiaoKang"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"YowSiaoKang"},"content":" // different dates -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"YowSiaoKang"},"content":" AvailableAtDatePredicate secondPredicate \u003d new AvailableAtDatePredicate(secondPredicateKeywordList);","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"YowSiaoKang"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"YowSiaoKang"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"YowSiaoKang"},"content":" public void test_containsAvailableAtDate_returnsTrue() throws Exception {","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"YowSiaoKang"},"content":" // One date","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"YowSiaoKang"},"content":" AvailableAtDatePredicate predicate \u003d new AvailableAtDatePredicate(List.of(\"01/01/2024\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"YowSiaoKang"},"content":" assertTrue(predicate.test(new PersonBuilder().withAvailabilities(\"01/01/2024\").build()));","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"YowSiaoKang"},"content":" // Multiple dates","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"YowSiaoKang"},"content":" predicate \u003d new AvailableAtDatePredicate(List.of(\"12/12/2024\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"YowSiaoKang"},"content":" assertTrue(predicate.test(new PersonBuilder().withAvailabilities(\"01/01/2024\", \"12/12/2024\").build()));","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"YowSiaoKang"},"content":" // Only one matching date","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"YowSiaoKang"},"content":" predicate \u003d new AvailableAtDatePredicate(List.of(\"12/12/2024\", \"01/01/2024\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"YowSiaoKang"},"content":" assertTrue(predicate.test(new PersonBuilder().withAvailabilities(\"01/01/2024\").build()));","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"YowSiaoKang"},"content":" predicate \u003d new AvailableAtDatePredicate(List.of(\"01/01/2024\", \"12/12/2024\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"YowSiaoKang"},"content":" assertTrue(predicate.test(new PersonBuilder().withAvailabilities(\"12/12/2024\").build()));","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"YowSiaoKang"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"YowSiaoKang"},"content":" public void test_doesNotContainAvailableAtDate_returnsFalse() throws Exception {","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"YowSiaoKang"},"content":" // One date","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"YowSiaoKang"},"content":" AvailableAtDatePredicate predicate \u003d new AvailableAtDatePredicate(List.of(\"01/01/2024\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"YowSiaoKang"},"content":" assertFalse(predicate.test(new PersonBuilder().withAvailabilities(\"12/12/2024\").build()));","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"YowSiaoKang"},"content":" // Multiple dates","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"YowSiaoKang"},"content":" predicate \u003d new AvailableAtDatePredicate(List.of(\"01/01/2024\", \"12/12/2024\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"YowSiaoKang"},"content":" assertFalse(predicate.test(new PersonBuilder().withAvailabilities(\"02/01/2024\").build()));","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"YowSiaoKang"},"content":" // Only one matching date","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"YowSiaoKang"},"content":" predicate \u003d new AvailableAtDatePredicate(List.of(\"01/01/2024\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"YowSiaoKang"},"content":" assertFalse(predicate.test(new PersonBuilder().withAvailabilities(\"12/12/2024\", \"03/01/2024\").build()));","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"YowSiaoKang"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"YowSiaoKang"},"content":" public void toStringMethod() throws Exception {","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"YowSiaoKang"},"content":" AvailableAtDatePredicate predicate \u003d new AvailableAtDatePredicate(List.of(\"01/01/2024\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"YowSiaoKang"},"content":" String expected \u003d AvailableAtDatePredicate.class.getCanonicalName()","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"YowSiaoKang"},"content":" + \"{keywords\u003d\" + List.of(\"01/01/2024\") + \"}\";","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"YowSiaoKang"},"content":" assertTrue(predicate.toString().equals(expected));","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"YowSiaoKang"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"YowSiaoKang":77}},{"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":"-"},"content":" // Keywords match phone, email and address, but does not match name","lastModifiedDate":"2017-06-12"},{"lineNumber":72,"author":{"gitId":"YowSiaoKang"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"12345\", \"alice@email.com\", \"12/12/2024\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").withPhone(\"12345\")","lastModifiedDate":"2017-06-12"},{"lineNumber":74,"author":{"gitId":"YowSiaoKang"},"content":" .withEmail(\"alice@email.com\").withAvailabilities(\"12/12/2024\").build()));","lastModifiedDate":"2024-03-17"},{"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":{"-":83,"YowSiaoKang":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":"Benson15912"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_AVAILABILITY_BOB;","lastModifiedDate":"2024-03-12"},{"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":"-"},"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":"YowSiaoKang"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getAvailabilities().remove(0));","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18"},{"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":"YowSiaoKang"},"content":" .withAvailabilities(VALID_AVAILABILITY_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-03-17"},{"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":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":86,"author":{"gitId":"YowSiaoKang"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAvailabilities(VALID_AVAILABILITY_BOB).build();","lastModifiedDate":"2024-03-17"},{"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":"YowSiaoKang"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", availabilities\u003d\" + ALICE.getAvailabilities() + \", tags\u003d\"","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"Benson15912"},"content":" + ALICE.getTags() + \"}\";","lastModifiedDate":"2024-03-12"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"Benson15912":2,"-":95,"YowSiaoKang":4}},{"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":"Benson15912"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_AVAILABILITY_BOB;","lastModifiedDate":"2024-03-12"},{"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":"YowSiaoKang"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAvailabilities(VALID_AVAILABILITY_BOB)","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"Benson15912"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-03-12"},{"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":"YowSiaoKang"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAvailabilities(VALID_AVAILABILITY_BOB)","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"Benson15912"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-03-12"},{"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":{"Benson15912":3,"-":170,"YowSiaoKang":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 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":"Benson15912"},"content":"import seedu.address.model.person.Availability;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-12"},{"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":"Benson15912"},"content":" private static final String INVALID_AVAILABILITY \u003d \" \";","lastModifiedDate":"2024-03-12"},{"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":"YowSiaoKang"},"content":" private static final List\u003cJsonAdaptedAvailability\u003e VALID_AVAILABILITY \u003d BENSON.getAvailabilities().stream()","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"YowSiaoKang"},"content":" .map(JsonAdaptedAvailability::new)","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"YowSiaoKang"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2024-03-17"},{"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":"Benson15912"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_AVAILABILITY, VALID_TAGS);","lastModifiedDate":"2024-03-12"},{"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":"Benson15912"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"Benson15912"},"content":" VALID_AVAILABILITY, VALID_TAGS);","lastModifiedDate":"2024-03-12"},{"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":"Benson15912"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_AVAILABILITY, VALID_TAGS);","lastModifiedDate":"2024-03-12"},{"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":"Benson15912"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL, VALID_AVAILABILITY, VALID_TAGS);","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","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_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"Benson15912"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_AVAILABILITY, VALID_TAGS);","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.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_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"Benson15912"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null, VALID_AVAILABILITY, VALID_TAGS);","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"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":"Benson15912"},"content":" public void toModelType_invalidAvailability_throwsIllegalValueException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"YowSiaoKang"},"content":" List\u003cJsonAdaptedAvailability\u003e invalidAvailabilities \u003d new ArrayList\u003c\u003e(VALID_AVAILABILITY);","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"YowSiaoKang"},"content":" invalidAvailabilities.add(new JsonAdaptedAvailability(INVALID_AVAILABILITY));","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"YowSiaoKang"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, invalidAvailabilities, VALID_TAGS);","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"Benson15912"},"content":" String expectedMessage \u003d Availability.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-12"},{"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_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"Benson15912"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_AVAILABILITY, invalidTags);","lastModifiedDate":"2024-03-12"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, 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":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"Benson15912":12,"-":90,"YowSiaoKang":6}},{"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":"Benson15912"},"content":"import seedu.address.model.person.Availability;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-12"},{"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":"-"},"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":"YowSiaoKang"},"content":" descriptor.setAvailabilities(person.getAvailabilities());","lastModifiedDate":"2024-03-17"},{"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":"YowSiaoKang"},"content":" public EditPersonDescriptorBuilder withAvailability(String... availablities) {","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"YowSiaoKang"},"content":" Set\u003cAvailability\u003e availabilitySet \u003d Stream.of(availablities).map(Availability::new).collect(Collectors.toSet());","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"YowSiaoKang"},"content":" descriptor.setAvailabilities(availabilitySet);","lastModifiedDate":"2024-03-17"},{"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":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code EditPersonDescriptor}","lastModifiedDate":"2017-07-26"},{"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":"-"},"content":" public EditPersonDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15"},{"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":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05"},{"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":{"Benson15912":1,"-":83,"YowSiaoKang":4}},{"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":"Benson15912"},"content":"import seedu.address.model.person.Availability;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-12"},{"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":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03"},{"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":"YowSiaoKang"},"content":" public static final String DEFAULT_AVAILABILITY \u003d \"01/01/2024\";","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":27,"author":{"gitId":"YowSiaoKang"},"content":" private Set\u003cAvailability\u003e availabilities;","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20"},{"lineNumber":37,"author":{"gitId":"YowSiaoKang"},"content":" availabilities \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20"},{"lineNumber":48,"author":{"gitId":"YowSiaoKang"},"content":" availabilities \u003d new HashSet\u003c\u003e(personToCopy.getAvailabilities());","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":61,"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":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String ... tags) {","lastModifiedDate":"2017-08-15"},{"lineNumber":64,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2017-12-20"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":68,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":71,"author":{"gitId":"YowSiaoKang"},"content":" public PersonBuilder withAvailabilities(String... availabilities) {","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"YowSiaoKang"},"content":" this.availabilities \u003d SampleDataUtil.getAvailabilitySet(availabilities);","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":80,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05"},{"lineNumber":93,"author":{"gitId":"YowSiaoKang"},"content":" return new Person(name, phone, email, availabilities, tags);","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":96,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03"}],"authorContributionMap":{"Benson15912":1,"-":88,"YowSiaoKang":7}},{"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":"Benson15912"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AVAIL;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"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":"YowSiaoKang"},"content":"import seedu.address.model.person.Availability;","lastModifiedDate":"2024-03-17"},{"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":"YowSiaoKang"},"content":" person.getAvailabilities().stream().forEach(","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"YowSiaoKang"},"content":" s -\u003e sb.append(PREFIX_AVAIL + s.toString() + \" \")","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"YowSiaoKang"},"content":" );","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"-"},"content":" person.getTags().stream().forEach(","lastModifiedDate":"2017-05-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2017-05-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09"},{"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":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26"},{"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":"YowSiaoKang"},"content":" if (descriptor.getAvailabilities().isPresent()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"YowSiaoKang"},"content":" Set\u003cAvailability\u003e availabilities \u003d descriptor.getAvailabilities().get();","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"YowSiaoKang"},"content":" if (availabilities.isEmpty()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"YowSiaoKang"},"content":" sb.append(PREFIX_AVAIL).append(\" \");","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"YowSiaoKang"},"content":" } else {","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"YowSiaoKang"},"content":" availabilities.forEach(s -\u003e sb.append(PREFIX_AVAIL).append(s).append(\" \"));","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" sb.append(PREFIX_TAG);","lastModifiedDate":"2018-03-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05"}],"authorContributionMap":{"Benson15912":1,"-":59,"YowSiaoKang":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":"Benson15912"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_AVAILABILITY_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"Benson15912"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_AVAILABILITY_BOB;","lastModifiedDate":"2024-03-12"},{"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":"YowSiaoKang"},"content":" .withAvailabilities(\"14/02/2024\").withEmail(\"alice@example.com\")","lastModifiedDate":"2024-03-17"},{"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":"YowSiaoKang"},"content":" .withAvailabilities(\"20/03/2024\", \"03/05/2024\")","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"-"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2017-04-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" .withTags(\"owesMoney\", \"friends\").build();","lastModifiedDate":"2016-09-13"},{"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":"YowSiaoKang"},"content":" .withEmail(\"heinz@example.com\").withAvailabilities(\"12/12/2024\").build();","lastModifiedDate":"2024-03-17"},{"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":"YowSiaoKang"},"content":" .withEmail(\"cornelia@example.com\").withAvailabilities(\"01/06/2024\", \"31/06/2024\")","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"YowSiaoKang"},"content":" .withTags(\"friends\").build();","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2018-01-10"},{"lineNumber":40,"author":{"gitId":"YowSiaoKang"},"content":" .withEmail(\"werner@example.com\").withAvailabilities(\"25/05/2024\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2018-01-10"},{"lineNumber":42,"author":{"gitId":"YowSiaoKang"},"content":" .withEmail(\"lydia@example.com\").withAvailabilities(\"02/05/2024\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2018-01-10"},{"lineNumber":44,"author":{"gitId":"YowSiaoKang"},"content":" .withEmail(\"anna@example.com\").withAvailabilities(\"04/06/2024\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2018-01-10"},{"lineNumber":48,"author":{"gitId":"YowSiaoKang"},"content":" .withEmail(\"stefan@example.com\").withAvailabilities(\"10/08/2024\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2018-01-10"},{"lineNumber":50,"author":{"gitId":"YowSiaoKang"},"content":" .withEmail(\"hans@example.com\").withAvailabilities(\"03/03/2024\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2018-01-10"},{"lineNumber":54,"author":{"gitId":"YowSiaoKang"},"content":" .withEmail(VALID_EMAIL_AMY).withAvailabilities(VALID_AVAILABILITY_AMY).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2018-01-10"},{"lineNumber":56,"author":{"gitId":"YowSiaoKang"},"content":" .withEmail(VALID_EMAIL_BOB).withAvailabilities(VALID_AVAILABILITY_BOB)","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"Benson15912"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10"},{"lineNumber":69,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04"},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13"}],"authorContributionMap":{"Benson15912":3,"-":62,"YowSiaoKang":12}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"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":2,"author":{"gitId":"-"},"content":"[![codecov](https://codecov.io/gh/AY2324S2-CS2103T-F10-4/tp/graph/badge.svg?token\u003dH2P9OR4JFH)](https://codecov.io/gh/AY2324S2-CS2103T-F10-4/tp)","lastModifiedDate":"2024-02-21"},{"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":"YowSiaoKang"},"content":"* Welcome to **Match**.\u003cbr\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":7,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":8,"author":{"gitId":"YowSiaoKang"},"content":" Created for Bob who:","lastModifiedDate":"2024-03-06"},{"lineNumber":9,"author":{"gitId":"YowSiaoKang"},"content":" - works as the coordinator of a volunteer befriending organization","lastModifiedDate":"2024-03-06"},{"lineNumber":10,"author":{"gitId":"YowSiaoKang"},"content":" - can type fast due to his 20 years of experience working in an office job","lastModifiedDate":"2024-03-06"},{"lineNumber":11,"author":{"gitId":"YowSiaoKang"},"content":" - has carpal tunnel and would appreciate if there is smart tools to reduce the typing","lastModifiedDate":"2024-03-06"},{"lineNumber":12,"author":{"gitId":"YowSiaoKang"},"content":" - is forgetful and forgets the person that he has assigns","lastModifiedDate":"2024-03-06"},{"lineNumber":13,"author":{"gitId":"YowSiaoKang"},"content":" - day-to-day job involves matching volunteers and beneficiaries","lastModifiedDate":"2024-03-06"},{"lineNumber":14,"author":{"gitId":"YowSiaoKang"},"content":"\u003e [!CAUTION]","lastModifiedDate":"2024-03-06"},{"lineNumber":15,"author":{"gitId":"YowSiaoKang"},"content":"\u003e Problem: The challenge of efficiently managing a diverse group of volunteers. This includes tracking each volunteer’s availability, skills, interests, and participation in various activities.","lastModifiedDate":"2024-03-06"},{"lineNumber":16,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":17,"author":{"gitId":"YowSiaoKang"},"content":"\u003e [!TIP]","lastModifiedDate":"2024-03-06"},{"lineNumber":18,"author":{"gitId":"YowSiaoKang"},"content":"\u003e Solution: Match streamlines volunteer management, facilitating efficient scheduling, and coordination of volunteers, ultimately saving time and resources for organizations focused on social impact.","lastModifiedDate":"2024-03-06"},{"lineNumber":19,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":20,"author":{"gitId":"-"},"content":"* For the detailed documentation of this project, see the **[Address Book Product Website](https://ay2324s2-cs2103t-f10-4.github.io/tp/)**.","lastModifiedDate":"2024-02-21"},{"lineNumber":21,"author":{"gitId":"YowSiaoKang"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"-":6,"YowSiaoKang":15}},{"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":"SimKianSeng"},"content":"You can reach us at the following emails `simkianseng28@gmail.com`, `bensonang36@gmail.com`, `ho.xu.wen@gmail.com`, `ziyitay1@gmail.com`, `kangyow4@gmail.com`.","lastModifiedDate":"2024-03-06"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17"},{"lineNumber":10,"author":{"gitId":"SimKianSeng"},"content":"## Project Team","lastModifiedDate":"2024-03-06"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"SimKianSeng"},"content":"### Sim Kian Seng","lastModifiedDate":"2024-03-06"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"SimKianSeng"},"content":"\u003cimg src\u003d\"images/simkianseng.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"SimKianSeng"},"content":"[[github](https://github.com/SimKianSeng)]","lastModifiedDate":"2024-03-06"},{"lineNumber":17,"author":{"gitId":"SimKianSeng"},"content":"[[portfolio](team/simkianseng)]","lastModifiedDate":"2024-03-06"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"YowSiaoKang"},"content":"- Role: Team Lead/ Developer","lastModifiedDate":"2024-03-07"},{"lineNumber":20,"author":{"gitId":"YowSiaoKang"},"content":"- Responsibilities: In charge of project coordination, documentation","lastModifiedDate":"2024-03-07"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"SimKianSeng"},"content":"### Benson Ang Wei Kiat","lastModifiedDate":"2024-03-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"Benson15912"},"content":"\u003cimg src\u003d\"images/benson15912.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-07"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"SimKianSeng"},"content":"[[github](http://github.com/Benson15912)]","lastModifiedDate":"2024-03-06"},{"lineNumber":27,"author":{"gitId":"Benson15912"},"content":"[[portfolio](team/benson15912)]","lastModifiedDate":"2024-03-07"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"YowSiaoKang"},"content":"- Role: Developer","lastModifiedDate":"2024-03-07"},{"lineNumber":30,"author":{"gitId":"YowSiaoKang"},"content":"- Responsibilities: In charge of components integration","lastModifiedDate":"2024-03-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"SimKianSeng"},"content":"### Ho Xu Wen","lastModifiedDate":"2024-03-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"xuwen-ho"},"content":"\u003cimg src\u003d\"images/xuwen-ho.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"SimKianSeng"},"content":"[[github](http://github.com/xuwen-ho)]","lastModifiedDate":"2024-03-06"},{"lineNumber":37,"author":{"gitId":"xuwen-ho"},"content":"[[portfolio](team/xuwen-ho)]","lastModifiedDate":"2024-03-07"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"YowSiaoKang"},"content":"- Role: Developer","lastModifiedDate":"2024-03-07"},{"lineNumber":40,"author":{"gitId":"xuwen-ho"},"content":"- Responsibilities: In charge of deliverables, deadlines and UI","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"SimKianSeng"},"content":"### Tay Zi Yi","lastModifiedDate":"2024-03-06"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"tayziyi"},"content":"\u003cimg src\u003d\"images/tayziyi.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"SimKianSeng"},"content":"[[github](http://github.com/tayziyi)]","lastModifiedDate":"2024-03-06"},{"lineNumber":47,"author":{"gitId":"SimKianSeng"},"content":"[[portfolio](team/tayziyi)]","lastModifiedDate":"2024-03-06"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"YowSiaoKang"},"content":"- Role: Developer","lastModifiedDate":"2024-03-07"},{"lineNumber":50,"author":{"gitId":"tayziyi"},"content":"- Responsibilities: In charge of coding quality","lastModifiedDate":"2024-03-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"SimKianSeng"},"content":"### Yow Siao Kang","lastModifiedDate":"2024-03-06"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"YowSiaoKang"},"content":"\u003cimg src\u003d\"images/yowsiaokang.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-07"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"SimKianSeng"},"content":"[[github](http://github.com/YowSiaoKang)]","lastModifiedDate":"2024-03-06"},{"lineNumber":57,"author":{"gitId":"SimKianSeng"},"content":"[[portfolio](team/yowsiaokang)]","lastModifiedDate":"2024-03-06"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"YowSiaoKang"},"content":"- Role: Developer","lastModifiedDate":"2024-03-07"},{"lineNumber":60,"author":{"gitId":"YowSiaoKang"},"content":"- Responsibilities: In charge of testing","lastModifiedDate":"2024-03-07"}],"authorContributionMap":{"tayziyi":2,"Benson15912":2,"SimKianSeng":16,"xuwen-ho":3,"-":28,"YowSiaoKang":9}},{"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 continues till the end of diagram.","lastModifiedDate":"2024-02-09"},{"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).\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-02-09"},{"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 an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Logic.png)","lastModifiedDate":"2024-02-09"},{"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":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":207,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Model.png)","lastModifiedDate":"2024-02-09"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"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":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"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":"xuwen-ho"},"content":"**Target User Profile**:","lastModifiedDate":"2024-03-06"},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"xuwen-ho"},"content":"- Bob is the coordinator of a volunteer befriending organization.","lastModifiedDate":"2024-03-06"},{"lineNumber":266,"author":{"gitId":"xuwen-ho"},"content":"- He can type fast due to his 20 years of experience working in an office job.","lastModifiedDate":"2024-03-06"},{"lineNumber":267,"author":{"gitId":"xuwen-ho"},"content":"- He has carpal tunnel and would appreciate tools to reduce typing.","lastModifiedDate":"2024-03-06"},{"lineNumber":268,"author":{"gitId":"xuwen-ho"},"content":"- His day-to-day job involves matching volunteers and beneficiaries based on availability.","lastModifiedDate":"2024-03-06"},{"lineNumber":269,"author":{"gitId":"xuwen-ho"},"content":"- He is forgetful and often forgets the assignments he has made.","lastModifiedDate":"2024-03-06"},{"lineNumber":270,"author":{"gitId":"xuwen-ho"},"content":"- He has bad eyesight and cannot see small or low-contrast texts.","lastModifiedDate":"2024-03-06"},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"xuwen-ho"},"content":"**Value Proposition**:","lastModifiedDate":"2024-03-06"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":274,"author":{"gitId":"xuwen-ho"},"content":"Match streamlines volunteer management, facilitating efficient scheduling and coordination of volunteers, ultimately saving time and resources for organizations focused on social impact. It helps Bob efficiently manage a diverse group of volunteers by tracking their availability.","lastModifiedDate":"2024-03-06"},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"xuwen-ho"},"content":"**User Stories**:","lastModifiedDate":"2024-03-06"},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":278,"author":{"gitId":"xuwen-ho"},"content":"Priority: High (must have) - `***`, Medium (nice to have) - `**`, Low (unlikely to have) - `*`","lastModifiedDate":"2024-03-07"},{"lineNumber":279,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":280,"author":{"gitId":"xuwen-ho"},"content":"| Priority | As a … | I want to … | So that I can… |","lastModifiedDate":"2024-03-06"},{"lineNumber":281,"author":{"gitId":"-"},"content":"| -------- | ------------------------------------------ | ------------------------------ | ---------------------------------------------------------------------- |","lastModifiedDate":"2020-05-23"},{"lineNumber":282,"author":{"gitId":"xuwen-ho"},"content":"| `*` | new user | see usage instructions | refer to instructions when I forget how to use the App |","lastModifiedDate":"2024-03-06"},{"lineNumber":283,"author":{"gitId":"xuwen-ho"},"content":"| `***` | coordinator | add a new volunteer | keep track of all volunteers in the organization |","lastModifiedDate":"2024-03-06"},{"lineNumber":284,"author":{"gitId":"xuwen-ho"},"content":"| `***` | coordinator | view a volunteer\u0027s details | match volunteers with beneficiaries based on their availability, skills, and interests |","lastModifiedDate":"2024-03-06"},{"lineNumber":285,"author":{"gitId":"xuwen-ho"},"content":"| `***` | coordinator | update a volunteer\u0027s information | keep volunteer information up-to-date |","lastModifiedDate":"2024-03-06"},{"lineNumber":286,"author":{"gitId":"xuwen-ho"},"content":"| `***` | coordinator | delete a volunteer | remove volunteers who are no longer with the organization |","lastModifiedDate":"2024-03-06"},{"lineNumber":287,"author":{"gitId":"xuwen-ho"},"content":"| `***` | coordinator | find volunteers by name | quickly locate a specific volunteer\u0027s information |","lastModifiedDate":"2024-03-06"},{"lineNumber":288,"author":{"gitId":"xuwen-ho"},"content":"| `**` | coordinator | view a list of all volunteers | have an overview of all registered volunteers |","lastModifiedDate":"2024-03-06"},{"lineNumber":289,"author":{"gitId":"xuwen-ho"},"content":"| `**` | coordinator | find volunteers by availability | match volunteers with beneficiaries based on their availability |","lastModifiedDate":"2024-03-06"},{"lineNumber":290,"author":{"gitId":"xuwen-ho"},"content":"| `*` | coordinator | use a GUI with large fonts and high contrast | easily view information with my bad eyesight |","lastModifiedDate":"2024-03-06"},{"lineNumber":291,"author":{"gitId":"xuwen-ho"},"content":"| `*` | coordinator | use keyboard shortcuts | reduce typing due to my carpal tunnel |","lastModifiedDate":"2024-03-06"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":293,"author":{"gitId":"xuwen-ho"},"content":"**Use Cases**:","lastModifiedDate":"2024-03-06"},{"lineNumber":294,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":295,"author":{"gitId":"xuwen-ho"},"content":"**Use case: Add a Volunteer**","lastModifiedDate":"2024-03-06"},{"lineNumber":296,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":297,"author":{"gitId":"xuwen-ho"},"content":"**Actor**: Coordinator (Bob)","lastModifiedDate":"2024-03-06"},{"lineNumber":298,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":299,"author":{"gitId":"xuwen-ho"},"content":"**Precondition**: Coordinator has launched the application and is on the main screen.","lastModifiedDate":"2024-03-06"},{"lineNumber":300,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":301,"author":{"gitId":"xuwen-ho"},"content":"**Main Success Scenario**:","lastModifiedDate":"2024-03-06"},{"lineNumber":302,"author":{"gitId":"SimKianSeng"},"content":"1. Coordinator adds a new volunteer.","lastModifiedDate":"2024-03-09"},{"lineNumber":303,"author":{"gitId":"SimKianSeng"},"content":"2. Coordinator is required to enter the volunteer\u0027s name, phone number, email and availability.","lastModifiedDate":"2024-03-09"},{"lineNumber":304,"author":{"gitId":"xuwen-ho"},"content":"3. Coordinator enters the required information in the correct format.","lastModifiedDate":"2024-03-06"},{"lineNumber":305,"author":{"gitId":"xuwen-ho"},"content":"4. The system validates the input and displays a confirmation message: \"Volunteer [volunteer_name] has been added successfully.\"","lastModifiedDate":"2024-03-06"},{"lineNumber":306,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":307,"author":{"gitId":"xuwen-ho"},"content":"**Extensions**:","lastModifiedDate":"2024-03-06"},{"lineNumber":308,"author":{"gitId":"xuwen-ho"},"content":"3a. The coordinator enters invalid data for any of the fields.","lastModifiedDate":"2024-03-06"},{"lineNumber":309,"author":{"gitId":"xuwen-ho"},"content":" 3a1. The system displays an error message indicating the nature of the error (e.g., \"[Parameter] is invalid,\" \"[Parameter] is missing,\" \"[Parameter] is specified multiple times\").","lastModifiedDate":"2024-03-06"},{"lineNumber":310,"author":{"gitId":"xuwen-ho"},"content":" 3a2. The coordinator corrects the input and continues from step 3.","lastModifiedDate":"2024-03-06"},{"lineNumber":311,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":312,"author":{"gitId":"xuwen-ho"},"content":"**Use case: Find a Volunteer\u0027s Information**","lastModifiedDate":"2024-03-06"},{"lineNumber":313,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":314,"author":{"gitId":"xuwen-ho"},"content":"**Actor**: Coordinator (Bob)","lastModifiedDate":"2024-03-06"},{"lineNumber":315,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":316,"author":{"gitId":"xuwen-ho"},"content":"**Precondition**: Coordinator has launched the application and is on the main screen.","lastModifiedDate":"2024-03-06"},{"lineNumber":317,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":318,"author":{"gitId":"xuwen-ho"},"content":"**Main Success Scenario**:","lastModifiedDate":"2024-03-06"},{"lineNumber":319,"author":{"gitId":"xuwen-ho"},"content":"1. Coordinator selects the \"Find Volunteer\" option.","lastModifiedDate":"2024-03-06"},{"lineNumber":320,"author":{"gitId":"xuwen-ho"},"content":"2. The system prompts the coordinator to enter the volunteer\u0027s name.","lastModifiedDate":"2024-03-06"},{"lineNumber":321,"author":{"gitId":"xuwen-ho"},"content":"3. Coordinator enters the volunteer\u0027s name (or a part of it).","lastModifiedDate":"2024-03-06"},{"lineNumber":322,"author":{"gitId":"xuwen-ho"},"content":"4. The system displays all volunteers whose names contain the entered keywords.","lastModifiedDate":"2024-03-06"},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":324,"author":{"gitId":"xuwen-ho"},"content":"**Extensions**:","lastModifiedDate":"2024-03-06"},{"lineNumber":325,"author":{"gitId":"xuwen-ho"},"content":"4a. No volunteers match the entered name.","lastModifiedDate":"2024-03-06"},{"lineNumber":326,"author":{"gitId":"xuwen-ho"},"content":" 4a1. The system displays an error message: \"No volunteers found.\"","lastModifiedDate":"2024-03-06"},{"lineNumber":327,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":328,"author":{"gitId":"xuwen-ho"},"content":"**Use case: View Entire List of Volunteers**","lastModifiedDate":"2024-03-06"},{"lineNumber":329,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":330,"author":{"gitId":"xuwen-ho"},"content":"**Actor**: Coordinator (Bob)","lastModifiedDate":"2024-03-06"},{"lineNumber":331,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":332,"author":{"gitId":"xuwen-ho"},"content":"**Precondition**: Coordinator has launched the application and is on the main screen.","lastModifiedDate":"2024-03-06"},{"lineNumber":333,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":334,"author":{"gitId":"xuwen-ho"},"content":"**Main Success Scenario**:","lastModifiedDate":"2024-03-06"},{"lineNumber":335,"author":{"gitId":"xuwen-ho"},"content":"1. Coordinator selects the \"List Volunteers\" option.","lastModifiedDate":"2024-03-06"},{"lineNumber":336,"author":{"gitId":"xuwen-ho"},"content":"2. The system displays the entire list of volunteers, along with their details, in the GUI.","lastModifiedDate":"2024-03-06"},{"lineNumber":337,"author":{"gitId":"xuwen-ho"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":338,"author":{"gitId":"xuwen-ho"},"content":"**Extensions**:","lastModifiedDate":"2024-03-06"},{"lineNumber":339,"author":{"gitId":"xuwen-ho"},"content":"2a. There are no volunteers in the address book.","lastModifiedDate":"2024-03-06"},{"lineNumber":340,"author":{"gitId":"xuwen-ho"},"content":" 2a1. The system displays a message: \"There are no volunteers in the address book.\"","lastModifiedDate":"2024-03-06"},{"lineNumber":341,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":342,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":343,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":344,"author":{"gitId":"SimKianSeng"},"content":"1. Should work on any *mainstream OS* as long as it has Java `11` or above installed.","lastModifiedDate":"2024-03-09"},{"lineNumber":345,"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":346,"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":347,"author":{"gitId":"SimKianSeng"},"content":"4. Should be able to run the application without internet connection.","lastModifiedDate":"2024-03-09"},{"lineNumber":348,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":349,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":350,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":351,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09"},{"lineNumber":352,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23"},{"lineNumber":353,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":354,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":355,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":356,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":357,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":358,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":359,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":360,"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":361,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":362,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":363,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":364,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":365,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":366,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":367,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":368,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":369,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":370,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":371,"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":372,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":373,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":374,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":375,"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":376,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":377,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":378,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":379,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":380,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":381,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":382,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":383,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":384,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":385,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":386,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":387,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":388,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":389,"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":390,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":391,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":392,"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":393,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":394,"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":395,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":396,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":397,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":398,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":399,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":400,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":401,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":402,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":403,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":404,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":405,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"SimKianSeng":4,"xuwen-ho":54,"-":347}},{"path":"docs/diagrams/AddSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Benson15912"},"content":"@startuml","lastModifiedDate":"2024-03-23"},{"lineNumber":2,"author":{"gitId":"Benson15912"},"content":"!include style.puml","lastModifiedDate":"2024-03-23"},{"lineNumber":3,"author":{"gitId":"Benson15912"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-23"},{"lineNumber":4,"author":{"gitId":"Benson15912"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"Benson15912"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"Benson15912"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"Benson15912"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"Benson15912"},"content":"participant \":AddCommandParser\" as AddCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-23"},{"lineNumber":9,"author":{"gitId":"Benson15912"},"content":"participant \"a:AddCommand\" as AddCommand LOGIC_COLOR","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"Benson15912"},"content":"participant \"p:Person\" as Person LOGIC_COLOR","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"Benson15912"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"Benson15912"},"content":"end box","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"Benson15912"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"Benson15912"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-23"},{"lineNumber":15,"author":{"gitId":"Benson15912"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":16,"author":{"gitId":"Benson15912"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"Benson15912"},"content":"end box","lastModifiedDate":"2024-03-23"},{"lineNumber":18,"author":{"gitId":"Benson15912"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"Benson15912"},"content":"[-\u003e LogicManager : execute(\"add John Doe...\")","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"Benson15912"},"content":"activate LogicManager","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"Benson15912"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"Benson15912"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"add John Doe...\")","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"Benson15912"},"content":"activate AddressBookParser","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"Benson15912"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"Benson15912"},"content":"create AddCommandParser","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"Benson15912"},"content":"AddressBookParser -\u003e AddCommandParser","lastModifiedDate":"2024-03-23"},{"lineNumber":27,"author":{"gitId":"Benson15912"},"content":"activate AddCommandParser","lastModifiedDate":"2024-03-23"},{"lineNumber":28,"author":{"gitId":"Benson15912"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":29,"author":{"gitId":"Benson15912"},"content":"AddCommandParser --\u003e AddressBookParser","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"Benson15912"},"content":"deactivate AddCommandParser","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"Benson15912"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"Benson15912"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":33,"author":{"gitId":"Benson15912"},"content":"AddressBookParser -\u003e AddCommandParser : parse(\"1\")","lastModifiedDate":"2024-03-23"},{"lineNumber":34,"author":{"gitId":"Benson15912"},"content":"activate AddCommandParser","lastModifiedDate":"2024-03-23"},{"lineNumber":35,"author":{"gitId":"Benson15912"},"content":"create Person","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"Benson15912"},"content":"AddCommandParser -\u003e Person","lastModifiedDate":"2024-03-23"},{"lineNumber":37,"author":{"gitId":"Benson15912"},"content":"activate Person","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"Benson15912"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":39,"author":{"gitId":"Benson15912"},"content":"Person --\u003e AddCommandParser : p","lastModifiedDate":"2024-03-23"},{"lineNumber":40,"author":{"gitId":"Benson15912"},"content":"deactivate Person","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"Benson15912"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"Benson15912"},"content":"create AddCommand","lastModifiedDate":"2024-03-23"},{"lineNumber":43,"author":{"gitId":"Benson15912"},"content":"AddCommandParser -\u003e AddCommand : AddCommand(p)","lastModifiedDate":"2024-03-23"},{"lineNumber":44,"author":{"gitId":"Benson15912"},"content":"activate AddCommand","lastModifiedDate":"2024-03-23"},{"lineNumber":45,"author":{"gitId":"Benson15912"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":46,"author":{"gitId":"Benson15912"},"content":"AddCommand --\u003e AddCommandParser : a","lastModifiedDate":"2024-03-23"},{"lineNumber":47,"author":{"gitId":"Benson15912"},"content":"deactivate AddCommand","lastModifiedDate":"2024-03-23"},{"lineNumber":48,"author":{"gitId":"Benson15912"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":49,"author":{"gitId":"Benson15912"},"content":"AddCommandParser --\u003e AddressBookParser : a","lastModifiedDate":"2024-03-23"},{"lineNumber":50,"author":{"gitId":"Benson15912"},"content":"deactivate AddCommandParser","lastModifiedDate":"2024-03-23"},{"lineNumber":51,"author":{"gitId":"Benson15912"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2024-03-23"},{"lineNumber":52,"author":{"gitId":"Benson15912"},"content":"AddCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-23"},{"lineNumber":53,"author":{"gitId":"Benson15912"},"content":"destroy AddCommandParser","lastModifiedDate":"2024-03-23"},{"lineNumber":54,"author":{"gitId":"Benson15912"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":55,"author":{"gitId":"Benson15912"},"content":"AddressBookParser --\u003e LogicManager : a","lastModifiedDate":"2024-03-23"},{"lineNumber":56,"author":{"gitId":"Benson15912"},"content":"deactivate AddressBookParser","lastModifiedDate":"2024-03-23"},{"lineNumber":57,"author":{"gitId":"Benson15912"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":58,"author":{"gitId":"Benson15912"},"content":"LogicManager -\u003e AddCommand : execute(m)","lastModifiedDate":"2024-03-23"},{"lineNumber":59,"author":{"gitId":"Benson15912"},"content":"activate AddCommand","lastModifiedDate":"2024-03-23"},{"lineNumber":60,"author":{"gitId":"Benson15912"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":61,"author":{"gitId":"Benson15912"},"content":"AddCommand -\u003e Model : addPerson(p)","lastModifiedDate":"2024-03-23"},{"lineNumber":62,"author":{"gitId":"Benson15912"},"content":"activate Model","lastModifiedDate":"2024-03-23"},{"lineNumber":63,"author":{"gitId":"Benson15912"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":64,"author":{"gitId":"Benson15912"},"content":"Model --\u003e AddCommand","lastModifiedDate":"2024-03-23"},{"lineNumber":65,"author":{"gitId":"Benson15912"},"content":"deactivate Model","lastModifiedDate":"2024-03-23"},{"lineNumber":66,"author":{"gitId":"Benson15912"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":67,"author":{"gitId":"Benson15912"},"content":"create CommandResult","lastModifiedDate":"2024-03-23"},{"lineNumber":68,"author":{"gitId":"Benson15912"},"content":"AddCommand -\u003e CommandResult","lastModifiedDate":"2024-03-23"},{"lineNumber":69,"author":{"gitId":"Benson15912"},"content":"activate CommandResult","lastModifiedDate":"2024-03-23"},{"lineNumber":70,"author":{"gitId":"Benson15912"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":71,"author":{"gitId":"Benson15912"},"content":"CommandResult --\u003e AddCommand","lastModifiedDate":"2024-03-23"},{"lineNumber":72,"author":{"gitId":"Benson15912"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-23"},{"lineNumber":73,"author":{"gitId":"Benson15912"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":74,"author":{"gitId":"Benson15912"},"content":"AddCommand --\u003e LogicManager : r","lastModifiedDate":"2024-03-23"},{"lineNumber":75,"author":{"gitId":"Benson15912"},"content":"deactivate AddCommand","lastModifiedDate":"2024-03-23"},{"lineNumber":76,"author":{"gitId":"Benson15912"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":77,"author":{"gitId":"Benson15912"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-23"},{"lineNumber":78,"author":{"gitId":"Benson15912"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-23"},{"lineNumber":79,"author":{"gitId":"Benson15912"},"content":"@enduml","lastModifiedDate":"2024-03-23"}],"authorContributionMap":{"Benson15912":79}},{"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":"SimKianSeng"},"content":"ui -[UI_COLOR]\u003e logic : save execute(\"delete 1\")","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"activate logic LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"xuwen-ho"},"content":"alt confirm deletion","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"SimKianSeng"},"content":" logic --[LOGIC_COLOR]\u003e ui : Ask for confirmation","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"SimKianSeng"},"content":" user -[USER_COLOR]\u003e ui : \"y\"","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"SimKianSeng"},"content":" ui -[UI_COLOR]\u003e logic : execute(\"delete 1\")","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":" logic -[LOGIC_COLOR]\u003e model : deletePerson(p)","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":" activate model MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":" model -[MODEL_COLOR]-\u003e logic","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":" deactivate model","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":" logic -[LOGIC_COLOR]\u003e storage : saveAddressBook(addressBook)","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":" activate storage STORAGE_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":" storage -[STORAGE_COLOR]\u003e storage : Save to file","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":" activate storage STORAGE_COLOR_T1","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":" storage --[STORAGE_COLOR]\u003e storage","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" deactivate storage","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":36,"author":{"gitId":"-"},"content":" storage --[STORAGE_COLOR]\u003e logic","lastModifiedDate":"2019-07-03"},{"lineNumber":37,"author":{"gitId":"-"},"content":" deactivate storage","lastModifiedDate":"2019-07-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":" logic --[LOGIC_COLOR]\u003e ui","lastModifiedDate":"2019-07-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":" deactivate logic","lastModifiedDate":"2019-07-03"},{"lineNumber":41,"author":{"gitId":"xuwen-ho"},"content":" ui--[UI_COLOR]\u003e user","lastModifiedDate":"2024-03-22"},{"lineNumber":42,"author":{"gitId":"xuwen-ho"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":43,"author":{"gitId":"xuwen-ho"},"content":"else abort deletion","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"xuwen-ho"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"xuwen-ho"},"content":" user -[USER_COLOR]\u003e ui : \"n\"","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":47,"author":{"gitId":"-"},"content":" ui--[UI_COLOR]\u003e user","lastModifiedDate":"2019-07-03"},{"lineNumber":48,"author":{"gitId":"-"},"content":" deactivate ui","lastModifiedDate":"2019-07-03"},{"lineNumber":49,"author":{"gitId":"xuwen-ho"},"content":"end","lastModifiedDate":"2024-03-22"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":51,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"SimKianSeng":4,"xuwen-ho":7,"-":40}},{"path":"docs/diagrams/CommitActivityDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"skin rose","lastModifiedDate":"2023-07-27"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ActivityFontSize 15","lastModifiedDate":"2023-07-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam ArrowFontSize 12","lastModifiedDate":"2023-07-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"start","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"SimKianSeng"},"content":":User enters command;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"SimKianSeng"},"content":"if () then ([Decline confirmation])","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"SimKianSeng"},"content":" stop","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"SimKianSeng"},"content":"else ([Accept confirmation])","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"if () then ([command commits AddressBook])","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":" :Purge redundant states;","lastModifiedDate":"2020-12-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":" :Save AddressBook to","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":" addressBookStateList;","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"else ([else])","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"endif","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"stop","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"SimKianSeng":4,"-":15}},{"path":"docs/diagrams/FindSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"tayziyi"},"content":"@startuml","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"tayziyi"},"content":"!include style.puml","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"tayziyi"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"tayziyi"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"tayziyi"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"tayziyi"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"tayziyi"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"tayziyi"},"content":"participant \":FindCommandParser\" as FindCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"tayziyi"},"content":"participant \"d:FindCommand\" as FindCommand LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"tayziyi"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"tayziyi"},"content":"end box","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"tayziyi"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"tayziyi"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"tayziyi"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"tayziyi"},"content":"end box","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"tayziyi"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"tayziyi"},"content":"[-\u003e LogicManager : execute(\"find alex\")","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"tayziyi"},"content":"activate LogicManager","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"tayziyi"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"tayziyi"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"find alex\")","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"tayziyi"},"content":"activate AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"tayziyi"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"tayziyi"},"content":"create FindCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"tayziyi"},"content":"AddressBookParser -\u003e FindCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"tayziyi"},"content":"activate FindCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"tayziyi"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"tayziyi"},"content":"FindCommandParser --\u003e AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"tayziyi"},"content":"deactivate FindCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"tayziyi"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"tayziyi"},"content":"AddressBookParser -\u003e FindCommandParser : parse(\"alex\")","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"tayziyi"},"content":"activate FindCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"tayziyi"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"tayziyi"},"content":"create FindCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"tayziyi"},"content":"FindCommandParser -\u003e FindCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"tayziyi"},"content":"activate FindCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"tayziyi"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"tayziyi"},"content":"FindCommand --\u003e FindCommandParser :","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"tayziyi"},"content":"deactivate FindCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"tayziyi"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"tayziyi"},"content":"FindCommandParser --\u003e AddressBookParser : d","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"tayziyi"},"content":"deactivate FindCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"tayziyi"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"tayziyi"},"content":"FindCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"tayziyi"},"content":"destroy FindCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"tayziyi"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"tayziyi"},"content":"AddressBookParser --\u003e LogicManager : d","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"tayziyi"},"content":"deactivate AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"tayziyi"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"tayziyi"},"content":"LogicManager -\u003e FindCommand : execute(m)","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"tayziyi"},"content":"activate FindCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"tayziyi"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"tayziyi"},"content":"FindCommand -\u003e Model : updateFilteredPersonList(alex)","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"tayziyi"},"content":"activate Model","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"tayziyi"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"tayziyi"},"content":"Model --\u003e FindCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"tayziyi"},"content":"deactivate Model","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"tayziyi"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"tayziyi"},"content":"create CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"tayziyi"},"content":"FindCommand -\u003e CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"tayziyi"},"content":"activate CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"tayziyi"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"tayziyi"},"content":"CommandResult --\u003e FindCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"tayziyi"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"tayziyi"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"tayziyi"},"content":"FindCommand --\u003e LogicManager : r","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"tayziyi"},"content":"deactivate FindCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"tayziyi"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"tayziyi"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"tayziyi"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"tayziyi"},"content":"@enduml","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"tayziyi":70}},{"path":"docs/diagrams/LogicClassDiagram.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 LOGIC_COLOR_T4","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"package Logic as LogicPackage {","lastModifiedDate":"2023-07-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"package \"Parser Classes\" as ParserClasses{","lastModifiedDate":"2024-02-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-02-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"Class XYZCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"Class CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"Class \"{abstract}\\nCommand\" as Command","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nLogic\" as Logic","lastModifiedDate":"2022-01-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Class LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"SimKianSeng"},"content":"Class Confirmation","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"package Model {","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Class HiddenModel #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":"package Storage {","lastModifiedDate":"2021-03-30"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-03-30"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-03-30"},{"lineNumber":28,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Logic","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"LogicManager .right.|\u003e Logic","lastModifiedDate":"2021-07-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"LogicManager -right-\u003e\"1\" ParserClasses","lastModifiedDate":"2024-02-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":"ParserClasses ..\u003e XYZCommand : \u003c\u003ccreate\u003e\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"XYZCommand -up-|\u003e Command","lastModifiedDate":"2019-07-03"},{"lineNumber":36,"author":{"gitId":"-"},"content":"LogicManager .left.\u003e Command : \u003c\u003ccall\u003e\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"LogicManager --\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"LogicManager --\u003e Storage","lastModifiedDate":"2021-03-30"},{"lineNumber":40,"author":{"gitId":"-"},"content":"Storage --[hidden] Model","lastModifiedDate":"2021-03-30"},{"lineNumber":41,"author":{"gitId":"-"},"content":"Command .[hidden]up.\u003e Storage","lastModifiedDate":"2021-03-30"},{"lineNumber":42,"author":{"gitId":"-"},"content":"Command .right.\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"note right of XYZCommand: XYZCommand \u003d AddCommand, \\nFindCommand, etc","lastModifiedDate":"2019-07-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"Logic ..\u003e CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"LogicManager .down.\u003e CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":47,"author":{"gitId":"SimKianSeng"},"content":"LogicManager .down.\u003e Confirmation","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":"Command .up.\u003e CommandResult : \u003c\u003ccreate\u003e\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"SimKianSeng":2,"-":47}},{"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":"-"},"content":"Class UniquePersonList","lastModifiedDate":"2021-07-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Class Person","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Class Email","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Class Name","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Class Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"YowSiaoKang"},"content":"Class Availability","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":"Class Tag","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":23,"author":{"gitId":"-"},"content":"Class I #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"AddressBook .up.|\u003e ReadOnlyAddressBook","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"ModelManager .up.|\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"Model .right.\u003e ReadOnlyUserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":33,"author":{"gitId":"-"},"content":"Model .left.\u003e ReadOnlyAddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"ModelManager -left-\u003e \"1\" AddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":"ModelManager -right-\u003e \"1\" UserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"UserPrefs .up.|\u003e ReadOnlyUserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"AddressBook *--\u003e \"1\" UniquePersonList","lastModifiedDate":"2019-07-30"},{"lineNumber":39,"author":{"gitId":"-"},"content":"UniquePersonList --\u003e \"~* all\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":40,"author":{"gitId":"-"},"content":"Person *--\u003e Name","lastModifiedDate":"2019-07-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"Person *--\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"Person *--\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":43,"author":{"gitId":"YowSiaoKang"},"content":"Person *--\u003e \"*\" Availability","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":"Person *--\u003e \"*\" Tag","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"Person -[hidden]up--\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":"UniquePersonList -[hidden]right-\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"Name -[hidden]right-\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":50,"author":{"gitId":"YowSiaoKang"},"content":"Phone -[hidden]right-\u003e Email","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"YowSiaoKang"},"content":"Email -[hidden]right-\u003e Availability","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":53,"author":{"gitId":"-"},"content":"ModelManager --\u003e \"~* filtered\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":54,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"-":50,"YowSiaoKang":4}},{"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":"-"},"content":"Class JsonAdaptedPerson","lastModifiedDate":"2021-07-31"},{"lineNumber":22,"author":{"gitId":"YowSiaoKang"},"content":"Class JsonAdaptedAvailability","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":"Class JsonAdaptedTag","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":"","lastModifiedDate":"2021-07-31"},{"lineNumber":28,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2021-07-31"},{"lineNumber":29,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Storage","lastModifiedDate":"2021-07-31"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":31,"author":{"gitId":"-"},"content":"StorageManager .up.|\u003e Storage","lastModifiedDate":"2021-07-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"StorageManager -up-\u003e \"1\" UserPrefsStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":33,"author":{"gitId":"-"},"content":"StorageManager -up-\u003e \"1\" AddressBookStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"Storage -left-|\u003e UserPrefsStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"Storage -right-|\u003e AddressBookStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"JsonUserPrefsStorage .up.|\u003e UserPrefsStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":39,"author":{"gitId":"-"},"content":"JsonAddressBookStorage .up.|\u003e AddressBookStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":40,"author":{"gitId":"-"},"content":"JsonAddressBookStorage ..\u003e JsonSerializableAddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":41,"author":{"gitId":"-"},"content":"JsonSerializableAddressBook --\u003e \"*\" JsonAdaptedPerson","lastModifiedDate":"2021-07-31"},{"lineNumber":42,"author":{"gitId":"-"},"content":"JsonAdaptedPerson --\u003e \"*\" JsonAdaptedTag","lastModifiedDate":"2021-07-31"},{"lineNumber":43,"author":{"gitId":"YowSiaoKang"},"content":"JsonAdaptedPerson --\u003e \"*\" JsonAdaptedAvailability","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-03-31"},{"lineNumber":45,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"-":43,"YowSiaoKang":2}},{"path":"docs/team/benson15912.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"SimKianSeng"},"content":"---","lastModifiedDate":"2024-03-06"},{"lineNumber":2,"author":{"gitId":"SimKianSeng"},"content":"layout: page","lastModifiedDate":"2024-03-06"},{"lineNumber":3,"author":{"gitId":"SimKianSeng"},"content":"title: Benson\u0027s Project Portfolio Page","lastModifiedDate":"2024-03-06"},{"lineNumber":4,"author":{"gitId":"SimKianSeng"},"content":"---","lastModifiedDate":"2024-03-06"},{"lineNumber":5,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":6,"author":{"gitId":"SimKianSeng"},"content":"### Project: Match","lastModifiedDate":"2024-03-06"},{"lineNumber":7,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":8,"author":{"gitId":"SimKianSeng"},"content":"Match 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":"2024-03-06"},{"lineNumber":9,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":10,"author":{"gitId":"SimKianSeng"},"content":"* **Code contributed**: [RepoSense link](https://nus-cs2103-ay2324s2.github.io/tp-dashboard/?search\u003dBenson15912\u0026sort\u003dgroupTitle\u0026sortWithin\u003dtitle\u0026timeframe\u003dcommit\u0026mergegroup\u003d\u0026groupSelect\u003dgroupByRepos\u0026breakdown\u003dtrue\u0026checkedFileTypes\u003ddocs~functional-code~test-code~other\u0026since\u003d2024-02-23)","lastModifiedDate":"2024-03-06"},{"lineNumber":11,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":12,"author":{"gitId":"SimKianSeng"},"content":"* **Project management**:","lastModifiedDate":"2024-03-06"},{"lineNumber":13,"author":{"gitId":"SimKianSeng"},"content":" * NA","lastModifiedDate":"2024-03-06"},{"lineNumber":14,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":15,"author":{"gitId":"SimKianSeng"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-03-06"},{"lineNumber":16,"author":{"gitId":"SimKianSeng"},"content":" * NA","lastModifiedDate":"2024-03-06"},{"lineNumber":17,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":18,"author":{"gitId":"SimKianSeng"},"content":"* **Documentation**:","lastModifiedDate":"2024-03-06"},{"lineNumber":19,"author":{"gitId":"SimKianSeng"},"content":" * NA","lastModifiedDate":"2024-03-06"},{"lineNumber":20,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":21,"author":{"gitId":"SimKianSeng"},"content":"* **Community**:","lastModifiedDate":"2024-03-06"},{"lineNumber":22,"author":{"gitId":"SimKianSeng"},"content":" * NA","lastModifiedDate":"2024-03-06"},{"lineNumber":23,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":24,"author":{"gitId":"SimKianSeng"},"content":"* **Tools**:","lastModifiedDate":"2024-03-06"},{"lineNumber":25,"author":{"gitId":"SimKianSeng"},"content":" * NA","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"SimKianSeng":25}},{"path":"docs/team/simkianseng.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"SimKianSeng"},"content":"---","lastModifiedDate":"2024-03-06"},{"lineNumber":2,"author":{"gitId":"SimKianSeng"},"content":"layout: page","lastModifiedDate":"2024-03-06"},{"lineNumber":3,"author":{"gitId":"SimKianSeng"},"content":"title: Kian Seng\u0027s Project Portfolio Page","lastModifiedDate":"2024-03-06"},{"lineNumber":4,"author":{"gitId":"SimKianSeng"},"content":"---","lastModifiedDate":"2024-03-06"},{"lineNumber":5,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":6,"author":{"gitId":"SimKianSeng"},"content":"### Project: Match","lastModifiedDate":"2024-03-06"},{"lineNumber":7,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":8,"author":{"gitId":"SimKianSeng"},"content":"Match 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":"2024-03-06"},{"lineNumber":9,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":10,"author":{"gitId":"SimKianSeng"},"content":"* **Code contributed**: [RepoSense link](https://nus-cs2103-ay2324s2.github.io/tp-dashboard/?search\u003dSimKianSeng\u0026sort\u003dgroupTitle\u0026sortWithin\u003dtitle\u0026timeframe\u003dcommit\u0026mergegroup\u003d\u0026groupSelect\u003dgroupByRepos\u0026breakdown\u003dtrue\u0026checkedFileTypes\u003ddocs~functional-code~test-code~other\u0026since\u003d2024-02-23)","lastModifiedDate":"2024-03-06"},{"lineNumber":11,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":12,"author":{"gitId":"SimKianSeng"},"content":"* **Project management**:","lastModifiedDate":"2024-03-06"},{"lineNumber":13,"author":{"gitId":"SimKianSeng"},"content":" * Add `AboutUs` page.","lastModifiedDate":"2024-03-06"},{"lineNumber":14,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":15,"author":{"gitId":"SimKianSeng"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-03-06"},{"lineNumber":16,"author":{"gitId":"SimKianSeng"},"content":" * NA","lastModifiedDate":"2024-03-06"},{"lineNumber":17,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":18,"author":{"gitId":"SimKianSeng"},"content":"* **Documentation**:","lastModifiedDate":"2024-03-06"},{"lineNumber":19,"author":{"gitId":"SimKianSeng"},"content":" * NA","lastModifiedDate":"2024-03-06"},{"lineNumber":20,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":21,"author":{"gitId":"SimKianSeng"},"content":"* **Community**:","lastModifiedDate":"2024-03-06"},{"lineNumber":22,"author":{"gitId":"SimKianSeng"},"content":" * PRs reviewed (with non-trivial review comments): [\\#11](https://github.com/AY2324S2-CS2103T-F10-4/tp/pull/11)","lastModifiedDate":"2024-03-06"},{"lineNumber":23,"author":{"gitId":"SimKianSeng"},"content":" * NA","lastModifiedDate":"2024-03-06"},{"lineNumber":24,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":25,"author":{"gitId":"SimKianSeng"},"content":"* **Tools**:","lastModifiedDate":"2024-03-06"},{"lineNumber":26,"author":{"gitId":"SimKianSeng"},"content":" * NA","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"SimKianSeng":26}},{"path":"docs/team/tayziyi.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"SimKianSeng"},"content":"---","lastModifiedDate":"2024-03-06"},{"lineNumber":2,"author":{"gitId":"SimKianSeng"},"content":"layout: page","lastModifiedDate":"2024-03-06"},{"lineNumber":3,"author":{"gitId":"SimKianSeng"},"content":"title: Zi Yi\u0027s Project Portfolio Page","lastModifiedDate":"2024-03-06"},{"lineNumber":4,"author":{"gitId":"SimKianSeng"},"content":"---","lastModifiedDate":"2024-03-06"},{"lineNumber":5,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":6,"author":{"gitId":"SimKianSeng"},"content":"### Project: Match","lastModifiedDate":"2024-03-06"},{"lineNumber":7,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":8,"author":{"gitId":"SimKianSeng"},"content":"Match 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":"2024-03-06"},{"lineNumber":9,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":10,"author":{"gitId":"SimKianSeng"},"content":"* **Code contributed**: [RepoSense link](https://nus-cs2103-ay2324s2.github.io/tp-dashboard/?search\u003dtayziyi\u0026sort\u003dgroupTitle\u0026sortWithin\u003dtitle\u0026timeframe\u003dcommit\u0026mergegroup\u003d\u0026groupSelect\u003dgroupByRepos\u0026breakdown\u003dtrue\u0026checkedFileTypes\u003ddocs~functional-code~test-code~other\u0026since\u003d2024-02-23)","lastModifiedDate":"2024-03-06"},{"lineNumber":11,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":12,"author":{"gitId":"SimKianSeng"},"content":"* **Project management**:","lastModifiedDate":"2024-03-06"},{"lineNumber":13,"author":{"gitId":"SimKianSeng"},"content":" * NA","lastModifiedDate":"2024-03-06"},{"lineNumber":14,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":15,"author":{"gitId":"SimKianSeng"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-03-06"},{"lineNumber":16,"author":{"gitId":"SimKianSeng"},"content":" * NA","lastModifiedDate":"2024-03-06"},{"lineNumber":17,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":18,"author":{"gitId":"SimKianSeng"},"content":"* **Documentation**:","lastModifiedDate":"2024-03-06"},{"lineNumber":19,"author":{"gitId":"SimKianSeng"},"content":" * NA","lastModifiedDate":"2024-03-06"},{"lineNumber":20,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":21,"author":{"gitId":"SimKianSeng"},"content":"* **Community**:","lastModifiedDate":"2024-03-06"},{"lineNumber":22,"author":{"gitId":"SimKianSeng"},"content":" * NA","lastModifiedDate":"2024-03-06"},{"lineNumber":23,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":24,"author":{"gitId":"SimKianSeng"},"content":"* **Tools**:","lastModifiedDate":"2024-03-06"},{"lineNumber":25,"author":{"gitId":"SimKianSeng"},"content":" * NA","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"SimKianSeng":25}},{"path":"docs/team/xuwen-ho.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"SimKianSeng"},"content":"---","lastModifiedDate":"2024-03-06"},{"lineNumber":2,"author":{"gitId":"SimKianSeng"},"content":"layout: page","lastModifiedDate":"2024-03-06"},{"lineNumber":3,"author":{"gitId":"SimKianSeng"},"content":"title: Xu Wen\u0027s Project Portfolio Page","lastModifiedDate":"2024-03-06"},{"lineNumber":4,"author":{"gitId":"SimKianSeng"},"content":"---","lastModifiedDate":"2024-03-06"},{"lineNumber":5,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":6,"author":{"gitId":"SimKianSeng"},"content":"### Project: Match","lastModifiedDate":"2024-03-06"},{"lineNumber":7,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":8,"author":{"gitId":"SimKianSeng"},"content":"Match 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":"2024-03-06"},{"lineNumber":9,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":10,"author":{"gitId":"SimKianSeng"},"content":"* **Code contributed**: [RepoSense link](https://nus-cs2103-ay2324s2.github.io/tp-dashboard/?search\u003dxuwen-ho\u0026sort\u003dgroupTitle\u0026sortWithin\u003dtitle\u0026timeframe\u003dcommit\u0026mergegroup\u003d\u0026groupSelect\u003dgroupByRepos\u0026breakdown\u003dtrue\u0026checkedFileTypes\u003ddocs~functional-code~test-code~other\u0026since\u003d2024-02-23)","lastModifiedDate":"2024-03-06"},{"lineNumber":11,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":12,"author":{"gitId":"SimKianSeng"},"content":"* **Project management**:","lastModifiedDate":"2024-03-06"},{"lineNumber":13,"author":{"gitId":"SimKianSeng"},"content":" * NA","lastModifiedDate":"2024-03-06"},{"lineNumber":14,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":15,"author":{"gitId":"SimKianSeng"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-03-06"},{"lineNumber":16,"author":{"gitId":"SimKianSeng"},"content":" * NA","lastModifiedDate":"2024-03-06"},{"lineNumber":17,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":18,"author":{"gitId":"SimKianSeng"},"content":"* **Documentation**:","lastModifiedDate":"2024-03-06"},{"lineNumber":19,"author":{"gitId":"SimKianSeng"},"content":" * Developer Guide:","lastModifiedDate":"2024-03-06"},{"lineNumber":20,"author":{"gitId":"SimKianSeng"},"content":" * Add **target user profile**, **value proposition**, **user stories**, **use cases**, **non-functional requirements**, **glossary**.","lastModifiedDate":"2024-03-06"},{"lineNumber":21,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":22,"author":{"gitId":"SimKianSeng"},"content":"* **Community**:","lastModifiedDate":"2024-03-06"},{"lineNumber":23,"author":{"gitId":"SimKianSeng"},"content":" * NA","lastModifiedDate":"2024-03-06"},{"lineNumber":24,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":25,"author":{"gitId":"SimKianSeng"},"content":"* **Tools**:","lastModifiedDate":"2024-03-06"},{"lineNumber":26,"author":{"gitId":"SimKianSeng"},"content":" * NA","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"SimKianSeng":26}},{"path":"docs/team/yowsiaokang.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"SimKianSeng"},"content":"---","lastModifiedDate":"2024-03-06"},{"lineNumber":2,"author":{"gitId":"SimKianSeng"},"content":"layout: page","lastModifiedDate":"2024-03-06"},{"lineNumber":3,"author":{"gitId":"SimKianSeng"},"content":"title: Siao Kang\u0027s Project Portfolio Page","lastModifiedDate":"2024-03-06"},{"lineNumber":4,"author":{"gitId":"SimKianSeng"},"content":"---","lastModifiedDate":"2024-03-06"},{"lineNumber":5,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":6,"author":{"gitId":"SimKianSeng"},"content":"### Project: Match","lastModifiedDate":"2024-03-06"},{"lineNumber":7,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":8,"author":{"gitId":"SimKianSeng"},"content":"Match 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":"2024-03-06"},{"lineNumber":9,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":10,"author":{"gitId":"SimKianSeng"},"content":"* **Code contributed**: [RepoSense link](https://nus-cs2103-ay2324s2.github.io/tp-dashboard/?search\u003dYowSiaoKang\u0026sort\u003dgroupTitle\u0026sortWithin\u003dtitle\u0026timeframe\u003dcommit\u0026mergegroup\u003d\u0026groupSelect\u003dgroupByRepos\u0026breakdown\u003dtrue\u0026checkedFileTypes\u003ddocs~functional-code~test-code~other\u0026since\u003d2024-02-23)","lastModifiedDate":"2024-03-06"},{"lineNumber":11,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":12,"author":{"gitId":"SimKianSeng"},"content":"* **Project management**:","lastModifiedDate":"2024-03-06"},{"lineNumber":13,"author":{"gitId":"SimKianSeng"},"content":" * NA","lastModifiedDate":"2024-03-06"},{"lineNumber":14,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":15,"author":{"gitId":"SimKianSeng"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-03-06"},{"lineNumber":16,"author":{"gitId":"SimKianSeng"},"content":" * NA","lastModifiedDate":"2024-03-06"},{"lineNumber":17,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":18,"author":{"gitId":"SimKianSeng"},"content":"* **Documentation**:","lastModifiedDate":"2024-03-06"},{"lineNumber":19,"author":{"gitId":"SimKianSeng"},"content":" * README:","lastModifiedDate":"2024-03-06"},{"lineNumber":20,"author":{"gitId":"SimKianSeng"},"content":" * Add **user profile**.","lastModifiedDate":"2024-03-06"},{"lineNumber":21,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":22,"author":{"gitId":"SimKianSeng"},"content":"* **Community**:","lastModifiedDate":"2024-03-06"},{"lineNumber":23,"author":{"gitId":"SimKianSeng"},"content":" * NA","lastModifiedDate":"2024-03-06"},{"lineNumber":24,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":25,"author":{"gitId":"SimKianSeng"},"content":"* **Tools**:","lastModifiedDate":"2024-03-06"},{"lineNumber":26,"author":{"gitId":"SimKianSeng"},"content":" * NA","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"SimKianSeng":26}},{"path":"src/main/java/seedu/address/logic/Confirmation.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SimKianSeng"},"content":"package seedu.address.logic;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"SimKianSeng"},"content":"import static seedu.address.logic.Messages.MESSAGE_CONFIRMATION;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"SimKianSeng"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"SimKianSeng"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"SimKianSeng"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"SimKianSeng"},"content":" * Confirmation to prevent critical actions from being executed accidentally.","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"SimKianSeng"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"SimKianSeng"},"content":"public class Confirmation {","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"SimKianSeng"},"content":" private boolean isToProceed;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"SimKianSeng"},"content":" public Confirmation(Command command) {","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"SimKianSeng"},"content":" this.isToProceed \u003d !hasConfirmation(command);","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"SimKianSeng"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"SimKianSeng"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"SimKianSeng"},"content":" * Checks if command requires comfirmation before executing.","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"SimKianSeng"},"content":" *","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"SimKianSeng"},"content":" * @param command The command to be executed.","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"SimKianSeng"},"content":" * @return True if command requires confirmation. False if otherwise.","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"SimKianSeng"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"SimKianSeng"},"content":" public boolean hasConfirmation(Command command) {","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"SimKianSeng"},"content":" return command instanceof DeleteCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"SimKianSeng"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"SimKianSeng"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"SimKianSeng"},"content":" * Whether the confirmation is successful or not.","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"SimKianSeng"},"content":" *","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"SimKianSeng"},"content":" * @return True if the command can be executed. False if otherwise.","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"SimKianSeng"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"SimKianSeng"},"content":" public boolean isToProceed() {","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"SimKianSeng"},"content":" return isToProceed;","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"SimKianSeng"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"SimKianSeng"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"SimKianSeng"},"content":" public String toString() {","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"SimKianSeng"},"content":" return MESSAGE_CONFIRMATION;","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"SimKianSeng"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"SimKianSeng"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"SimKianSeng":41}},{"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":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"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":"SimKianSeng"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"SimKianSeng"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"SimKianSeng"},"content":" * @param isConfirmation","lastModifiedDate":"2024-03-21"},{"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":"SimKianSeng"},"content":" CommandResult execute(String commandText, boolean isConfirmation) throws CommandException, ParseException;","lastModifiedDate":"2024-03-21"},{"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":"-"},"content":" /** Returns an unmodifiable view of the filtered list of persons */","lastModifiedDate":"2017-09-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26"},{"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":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","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":" * Set the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"SimKianSeng":4,"-":48}},{"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":"SimKianSeng"},"content":"import static seedu.address.logic.Messages.MESSAGE_CONFIRMATION;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"SimKianSeng"},"content":"import static seedu.address.logic.Messages.MESSAGE_CONFIRMATION_CANCELLED;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-24"},{"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-29"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2016-09-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.AddressBookParser;","lastModifiedDate":"2017-07-07"},{"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.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"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":"SimKianSeng"},"content":" private Command prevCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Constructs a {@code LogicManager} with the given {@code Model} and {@code Storage}.","lastModifiedDate":"2020-05-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public LogicManager(Model model, Storage storage) {","lastModifiedDate":"2018-12-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":" this.model \u003d model;","lastModifiedDate":"2016-09-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" this.storage \u003d storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":" addressBookParser \u003d new AddressBookParser();","lastModifiedDate":"2018-01-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":51,"author":{"gitId":"SimKianSeng"},"content":" public CommandResult execute(String commandText, boolean isConfirmation) throws CommandException, ParseException {","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2016-09-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"SimKianSeng"},"content":" if (isConfirmation) {","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"SimKianSeng"},"content":" if (commandText.equalsIgnoreCase(\"y\")) {","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"SimKianSeng"},"content":" commandResult \u003d prevCommand.execute(model);","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"SimKianSeng"},"content":" } else {","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"SimKianSeng"},"content":" commandResult \u003d new CommandResult(MESSAGE_CONFIRMATION_CANCELLED);","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"SimKianSeng"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"SimKianSeng"},"content":" } else {","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2017-07-07"},{"lineNumber":63,"author":{"gitId":"SimKianSeng"},"content":" prevCommand \u003d command;","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"SimKianSeng"},"content":" Confirmation confirmation \u003d new Confirmation(command);","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"SimKianSeng"},"content":" if (!confirmation.isToProceed()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"SimKianSeng"},"content":" return new CommandResult(MESSAGE_CONFIRMATION, true, false, false);","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"SimKianSeng"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2019-01-25"},{"lineNumber":71,"author":{"gitId":"SimKianSeng"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":73,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":74,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2018-12-09"},{"lineNumber":75,"author":{"gitId":"-"},"content":" } catch (AccessDeniedException e) {","lastModifiedDate":"2023-06-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e);","lastModifiedDate":"2023-06-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-12-09"},{"lineNumber":78,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe);","lastModifiedDate":"2023-06-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-03"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2018-12-03"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return model.getAddressBook();","lastModifiedDate":"2018-12-03"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-03"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":91,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList();","lastModifiedDate":"2016-09-25"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-29"},{"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":{"SimKianSeng":21,"-":87}},{"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":"tayziyi"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX \u003d \"The volunteer index provided is invalid\";","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"tayziyi"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d volunteer(s) found!\";","lastModifiedDate":"2024-03-14"},{"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":"SimKianSeng"},"content":" public static final String MESSAGE_CONFIRMATION \u003d \"Are you sure that you want to proceed with that action? \"","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"SimKianSeng"},"content":" + \"[y/N]\";","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":24,"author":{"gitId":"SimKianSeng"},"content":" public static final String MESSAGE_CONFIRMATION_CANCELLED \u003d \"Command execution has been cancelled.\";","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":35,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"YowSiaoKang"},"content":" .append(\"; Availabilities: \");","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"YowSiaoKang"},"content":" person.getAvailabilities().forEach(builder::append);","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"YowSiaoKang"},"content":" builder.append(\"; Tags: \");","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"-"},"content":" person.getTags().forEach(builder::append);","lastModifiedDate":"2019-02-23"},{"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":{"tayziyi":2,"SimKianSeng":3,"-":47,"YowSiaoKang":3}},{"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":"Benson15912"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AVAIL;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-12"},{"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":"Benson15912"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a volunteer to the address book. \"","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09"},{"lineNumber":28,"author":{"gitId":"YowSiaoKang"},"content":" + \"[\" + PREFIX_AVAIL + \"AVAILABILITY] \"","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09"},{"lineNumber":34,"author":{"gitId":"YowSiaoKang"},"content":" + PREFIX_AVAIL + \"01/01/2024 \"","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"YowSiaoKang"},"content":" + PREFIX_AVAIL + \"02/01/2024 \"","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2017-05-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"owesMoney\";","lastModifiedDate":"2017-05-09"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"Benson15912"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Volunteer added successfully: %1$s\";","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book\";","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":48,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":49,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":57,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":60,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return true;","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":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return false;","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":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"Benson15912":3,"-":79,"YowSiaoKang":3}},{"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":"SimKianSeng"},"content":" /** User should confirm if they want to execute the command. */","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"SimKianSeng"},"content":" private final boolean confirmation;","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":" /** Help information should be shown to the user. */","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final boolean showHelp;","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /** The application should exit. */","lastModifiedDate":"2018-12-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final boolean exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Constructs a {@code CommandResult} with the specified fields.","lastModifiedDate":"2018-12-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":28,"author":{"gitId":"SimKianSeng"},"content":" public CommandResult(String feedbackToUser, boolean confirmation, boolean showHelp, boolean exit) {","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":" this.feedbackToUser \u003d requireNonNull(feedbackToUser);","lastModifiedDate":"2017-05-15"},{"lineNumber":30,"author":{"gitId":"SimKianSeng"},"content":" this.confirmation \u003d confirmation;","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":" this.showHelp \u003d showHelp;","lastModifiedDate":"2018-12-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.exit \u003d exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Constructs a {@code CommandResult} with the specified {@code feedbackToUser},","lastModifiedDate":"2018-12-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * and other fields set to their default value.","lastModifiedDate":"2018-12-09"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public CommandResult(String feedbackToUser) {","lastModifiedDate":"2018-12-09"},{"lineNumber":40,"author":{"gitId":"SimKianSeng"},"content":" this(feedbackToUser, false, false, false);","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public String getFeedbackToUser() {","lastModifiedDate":"2018-12-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return feedbackToUser;","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":"SimKianSeng"},"content":" public boolean isConfirmation() {","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"SimKianSeng"},"content":" return confirmation;","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"SimKianSeng"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public boolean isShowHelp() {","lastModifiedDate":"2018-12-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return showHelp;","lastModifiedDate":"2018-12-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public boolean isExit() {","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2018-12-09"},{"lineNumber":60,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-12-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-12-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":64,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2018-12-09"},{"lineNumber":65,"author":{"gitId":"-"},"content":" if (!(other instanceof CommandResult)) {","lastModifiedDate":"2018-12-09"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return false;","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":" CommandResult otherCommandResult \u003d (CommandResult) other;","lastModifiedDate":"2018-12-09"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return feedbackToUser.equals(otherCommandResult.feedbackToUser)","lastModifiedDate":"2018-12-09"},{"lineNumber":71,"author":{"gitId":"SimKianSeng"},"content":" \u0026\u0026 confirmation \u003d\u003d otherCommandResult.confirmation","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"-"},"content":" \u0026\u0026 showHelp \u003d\u003d otherCommandResult.showHelp","lastModifiedDate":"2018-12-09"},{"lineNumber":73,"author":{"gitId":"-"},"content":" \u0026\u0026 exit \u003d\u003d otherCommandResult.exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2018-12-09"},{"lineNumber":78,"author":{"gitId":"SimKianSeng"},"content":" return Objects.hash(feedbackToUser, confirmation, showHelp, exit);","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"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(\"feedbackToUser\", feedbackToUser)","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"SimKianSeng"},"content":" .add(\"confirmation\", confirmation)","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"-"},"content":" .add(\"showHelp\", showHelp)","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" .add(\"exit\", exit)","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":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"SimKianSeng":12,"-":79}},{"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":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"tayziyi"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Volunteer removed: %1$s\";","lastModifiedDate":"2024-03-14"},{"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":{"tayziyi":1,"-":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":"YowSiaoKang"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AVAIL;","lastModifiedDate":"2024-03-15"},{"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":"Benson15912"},"content":"import seedu.address.model.person.Availability;","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-12"},{"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":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06"},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":45,"author":{"gitId":"YowSiaoKang"},"content":" + \"[\" + PREFIX_AVAIL + \"ADDRESS] \"","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":51,"author":{"gitId":"tayziyi"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Volunteer Updated: %1$s\";","lastModifiedDate":"2024-03-14"},{"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":"YowSiaoKang"},"content":" Set\u003cAvailability\u003e updatedAvailability \u003d editPersonDescriptor.getAvailabilities()","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"YowSiaoKang"},"content":" .orElse(personToEdit.getAvailabilities());","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2017-06-21"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":105,"author":{"gitId":"Benson15912"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedAvailability, updatedTags);","lastModifiedDate":"2024-03-12"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26"},{"lineNumber":134,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26"},{"lineNumber":135,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":136,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26"},{"lineNumber":137,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21"},{"lineNumber":138,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":139,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":140,"author":{"gitId":"YowSiaoKang"},"content":" private Set\u003cAvailability\u003e availabilities;","lastModifiedDate":"2024-03-17"},{"lineNumber":141,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":143,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":145,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":146,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11"},{"lineNumber":147,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":148,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":149,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26"},{"lineNumber":150,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15"},{"lineNumber":151,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15"},{"lineNumber":152,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15"},{"lineNumber":153,"author":{"gitId":"YowSiaoKang"},"content":" setAvailabilities(toCopy.availabilities);","lastModifiedDate":"2024-03-17"},{"lineNumber":154,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":157,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":158,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26"},{"lineNumber":159,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":160,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26"},{"lineNumber":161,"author":{"gitId":"YowSiaoKang"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, availabilities, tags);","lastModifiedDate":"2024-03-17"},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":164,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21"},{"lineNumber":165,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21"},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":168,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":169,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21"},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":172,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21"},{"lineNumber":173,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":176,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26"},{"lineNumber":177,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21"},{"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 setEmail(Email email) {","lastModifiedDate":"2017-06-21"},{"lineNumber":181,"author":{"gitId":"-"},"content":" this.email \u003d email;","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\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":185,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","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":"YowSiaoKang"},"content":" public void setAvailabilities(Set\u003cAvailability\u003e availabilities) {","lastModifiedDate":"2024-03-17"},{"lineNumber":189,"author":{"gitId":"YowSiaoKang"},"content":" this.availabilities \u003d availabilities;","lastModifiedDate":"2024-03-17"},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":192,"author":{"gitId":"YowSiaoKang"},"content":" public Optional\u003cSet\u003cAvailability\u003e\u003e getAvailabilities() {","lastModifiedDate":"2024-03-17"},{"lineNumber":193,"author":{"gitId":"YowSiaoKang"},"content":" return (availabilities !\u003d null)","lastModifiedDate":"2024-03-18"},{"lineNumber":194,"author":{"gitId":"YowSiaoKang"},"content":" ? Optional.of(Collections.unmodifiableSet(availabilities))","lastModifiedDate":"2024-03-18"},{"lineNumber":195,"author":{"gitId":"YowSiaoKang"},"content":" : Optional.empty();","lastModifiedDate":"2024-03-18"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":198,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":199,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11"},{"lineNumber":200,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":201,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":202,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21"},{"lineNumber":203,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11"},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":206,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":207,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11"},{"lineNumber":208,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11"},{"lineNumber":209,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11"},{"lineNumber":210,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":211,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":212,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11"},{"lineNumber":213,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":215,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":216,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":217,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":218,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":219,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":221,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":222,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05"},{"lineNumber":223,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":224,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":226,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":227,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":228,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":229,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":230,"author":{"gitId":"YowSiaoKang"},"content":" \u0026\u0026 Objects.equals(availabilities, otherEditPersonDescriptor.availabilities)","lastModifiedDate":"2024-03-17"},{"lineNumber":231,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags);","lastModifiedDate":"2023-07-13"},{"lineNumber":232,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":240,"author":{"gitId":"YowSiaoKang"},"content":" .add(\"availabilities\", availabilities)","lastModifiedDate":"2024-03-17"},{"lineNumber":241,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":245,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"tayziyi":1,"Benson15912":2,"-":227,"YowSiaoKang":15}},{"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":"-"},"content":" public static final String MESSAGE_EXIT_ACKNOWLEDGEMENT \u003d \"Exiting Address Book as requested ...\";","lastModifiedDate":"2016-09-22"},{"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":"SimKianSeng"},"content":" return new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, false, false, true);","lastModifiedDate":"2024-03-20"},{"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":{"SimKianSeng":1,"-":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":"YowSiaoKang"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AVAIL;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"YowSiaoKang"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":7,"author":{"gitId":"YowSiaoKang"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"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":"2018-08-08"},{"lineNumber":12,"author":{"gitId":"YowSiaoKang"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Finds and lists all persons in address book whose name contains any of the argument keywords.","lastModifiedDate":"2016-09-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Keyword matching is case insensitive.","lastModifiedDate":"2018-04-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2016-09-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"find\";","lastModifiedDate":"2016-09-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":22,"author":{"gitId":"YowSiaoKang"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all volunteers whose \u003cAttribute\u003e contain \"","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"YowSiaoKang"},"content":" + \"the specified keywords (case-insensitive) and displays them as a indexed list.\\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"YowSiaoKang"},"content":" + \"Parameters: \u003cAttribute_Prefix/\u003e KEYWORD [MORE_KEYWORDS]...\\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"YowSiaoKang"},"content":" + \"Example(find by name): \" + COMMAND_WORD + \" \" + PREFIX_NAME + \" alice bob charlie\\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"YowSiaoKang"},"content":" + \"Example(find by availability): \" + COMMAND_WORD + \" \" + PREFIX_AVAIL + \" 01/01/2024 12/12/2024\\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"YowSiaoKang"},"content":" + \"Example(find by name and availability): \" + COMMAND_WORD + \" \"","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"YowSiaoKang"},"content":" + PREFIX_NAME + \" alice \" + PREFIX_AVAIL + \" 01/01/2024 12/12/2024\";","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":30,"author":{"gitId":"YowSiaoKang"},"content":" private final Predicate\u003cPerson\u003e predicate;","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":32,"author":{"gitId":"YowSiaoKang"},"content":" public FindCommand(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"-"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(predicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return new CommandResult(","lastModifiedDate":"2018-04-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":" String.format(Messages.MESSAGE_PERSONS_LISTED_OVERVIEW, model.getFilteredPersonList().size()));","lastModifiedDate":"2018-04-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" return true;","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":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (!(other instanceof FindCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" FindCommand otherFindCommand \u003d (FindCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return predicate.equals(otherFindCommand.predicate);","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"-":52,"YowSiaoKang":13}},{"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":"SimKianSeng"},"content":" return new CommandResult(SHOWING_HELP_MESSAGE, false, true, false);","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"SimKianSeng":1,"-":20}},{"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":"tayziyi"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Here are your list of volunteers\";","lastModifiedDate":"2024-03-14"},{"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":{"tayziyi":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":"Benson15912"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AVAIL;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-12"},{"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":"Benson15912"},"content":"import seedu.address.model.person.Availability;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-12"},{"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":"Benson15912"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_AVAIL, PREFIX_TAG);","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":36,"author":{"gitId":"YowSiaoKang"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL)","lastModifiedDate":"2024-03-17"},{"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":"YowSiaoKang"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL);","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":43,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":44,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":45,"author":{"gitId":"YowSiaoKang"},"content":" Set\u003cAvailability\u003e availability \u003d ParserUtil.parseAvailabilities(argMultimap.getAllValues(PREFIX_AVAIL));","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":48,"author":{"gitId":"Benson15912"},"content":" Person person \u003d new Person(name, phone, email, availability, tagList);","lastModifiedDate":"2024-03-12"},{"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":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":57,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17"},{"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":{"Benson15912":4,"-":54,"YowSiaoKang":3}},{"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":"Benson15912"},"content":" public static final Prefix PREFIX_AVAIL \u003d new Prefix(\"a/\");","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"Benson15912":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":"Benson15912"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AVAIL;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-12"},{"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":"YowSiaoKang"},"content":"import seedu.address.model.person.Availability;","lastModifiedDate":"2024-03-17"},{"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":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":36,"author":{"gitId":"YowSiaoKang"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_AVAIL, PREFIX_TAG);","lastModifiedDate":"2024-03-15"},{"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":"YowSiaoKang"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL);","lastModifiedDate":"2024-03-17"},{"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":"YowSiaoKang"},"content":" parseAvailabilitiesForEdit(argMultimap.getAllValues(PREFIX_AVAIL))","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"YowSiaoKang"},"content":" .ifPresent(editPersonDescriptor::setAvailabilities);","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":" parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPersonDescriptor::setTags);","lastModifiedDate":"2017-06-21"},{"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":"YowSiaoKang"},"content":" private Optional\u003cSet\u003cAvailability\u003e\u003e parseAvailabilitiesForEdit(Collection\u003cString\u003e availabilities)","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"YowSiaoKang"},"content":" throws ParseException {","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"YowSiaoKang"},"content":" assert availabilities !\u003d null;","lastModifiedDate":"2024-03-17"},{"lineNumber":88,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"YowSiaoKang"},"content":" if (availabilities.isEmpty()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":90,"author":{"gitId":"YowSiaoKang"},"content":" return Optional.empty();","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"YowSiaoKang"},"content":" Collection\u003cString\u003e availabilitySet \u003d availabilities.size() \u003d\u003d 1 \u0026\u0026 availabilities.contains(\"\")","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"YowSiaoKang"},"content":" ? Collections.emptySet() : availabilities;","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"YowSiaoKang"},"content":" return Optional.of(ParserUtil.parseAvailabilities(availabilitySet));","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"Benson15912":1,"-":79,"YowSiaoKang":17}},{"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":"YowSiaoKang"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AVAIL;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"YowSiaoKang"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"YowSiaoKang"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"YowSiaoKang"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"YowSiaoKang"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-01-26"},{"lineNumber":11,"author":{"gitId":"YowSiaoKang"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"YowSiaoKang"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":16,"author":{"gitId":"YowSiaoKang"},"content":"import seedu.address.model.person.AvailableAtDatePredicate;","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"YowSiaoKang"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new FindCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class FindCommandParser implements Parser\u003cFindCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the FindCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * and returns a FindCommand object for execution.","lastModifiedDate":"2019-05-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public FindCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":31,"author":{"gitId":"YowSiaoKang"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"YowSiaoKang"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_AVAIL, PREFIX_TAG);","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"YowSiaoKang"},"content":" if (!isAnyPrefixPresent(argMultimap, PREFIX_NAME, PREFIX_AVAIL)","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"YowSiaoKang"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"YowSiaoKang"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"YowSiaoKang"},"content":" return new FindCommand(predicateBuilder(argMultimap, PREFIX_NAME, PREFIX_AVAIL));","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"YowSiaoKang"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"YowSiaoKang"},"content":" * Returns true if at least one of the prefixes contains non-empty {@code Optional} values in the given","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"YowSiaoKang"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"YowSiaoKang"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"YowSiaoKang"},"content":" private static boolean isAnyPrefixPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"YowSiaoKang"},"content":" return Stream.of(prefixes).anyMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"YowSiaoKang"},"content":" private Predicate\u003cPerson\u003e predicateBuilder(ArgumentMultimap argMultimap, Prefix... prefixes) throws ParseException {","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"YowSiaoKang"},"content":" Predicate\u003cPerson\u003e predicate \u003d null;","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"YowSiaoKang"},"content":" for (Prefix prefix : prefixes) {","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"YowSiaoKang"},"content":" String keywords \u003d argMultimap.getValue(prefix).orElse(\"\").trim();","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"YowSiaoKang"},"content":" if (!keywords.isEmpty()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"YowSiaoKang"},"content":" switch (prefix.toString()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"YowSiaoKang"},"content":" case \"n/\":","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"YowSiaoKang"},"content":" if (predicate \u003d\u003d null) {","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"YowSiaoKang"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(keywords.split(\"\\\\s+\")));","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"YowSiaoKang"},"content":" } else {","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"YowSiaoKang"},"content":" predicate \u003d predicate.or(","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"YowSiaoKang"},"content":" new NameContainsKeywordsPredicate(Arrays.asList(keywords.split(\"\\\\s+\"))));","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"YowSiaoKang"},"content":" break;","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"YowSiaoKang"},"content":" case \"a/\":","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"YowSiaoKang"},"content":" if (predicate \u003d\u003d null) {","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"YowSiaoKang"},"content":" predicate \u003d new AvailableAtDatePredicate(Arrays.asList(keywords.split(\"\\\\s+\")));","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"YowSiaoKang"},"content":" } else {","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"YowSiaoKang"},"content":" predicate \u003d predicate.or(new AvailableAtDatePredicate(Arrays.asList(keywords.split(\"\\\\s+\"))));","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"YowSiaoKang"},"content":" break;","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"YowSiaoKang"},"content":" default:","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"YowSiaoKang"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"YowSiaoKang"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"YowSiaoKang"},"content":" };","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"YowSiaoKang"},"content":" if (predicate \u003d\u003d null) {","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11"},{"lineNumber":79,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-01-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":82,"author":{"gitId":"YowSiaoKang"},"content":" return predicate;","lastModifiedDate":"2024-03-18"},{"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":{"-":30,"YowSiaoKang":55}},{"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":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"Benson15912"},"content":"import seedu.address.model.person.Availability;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":32,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02"},{"lineNumber":34,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":36,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":46,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":49,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":57,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":61,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30"},{"lineNumber":62,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":64,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","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":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":72,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":76,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30"},{"lineNumber":77,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":78,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":79,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"Benson15912"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"Benson15912"},"content":" * Parses a {@code String availability} into an {@code Availability}.","lastModifiedDate":"2024-03-12"},{"lineNumber":86,"author":{"gitId":"Benson15912"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"Benson15912"},"content":" *","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"Benson15912"},"content":" * @throws ParseException if the given {@code Availability} is invalid.","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"Benson15912"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":90,"author":{"gitId":"Benson15912"},"content":" public static Availability parseAvailability(String availability) throws ParseException {","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"Benson15912"},"content":" String trimmedAvailability \u003d availability.trim();","lastModifiedDate":"2024-03-12"},{"lineNumber":92,"author":{"gitId":"Benson15912"},"content":" if (!Availability.isValidAvailability(trimmedAvailability)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"Benson15912"},"content":" throw new ParseException(Availability.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":94,"author":{"gitId":"Benson15912"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":95,"author":{"gitId":"Benson15912"},"content":" return new Availability(trimmedAvailability);","lastModifiedDate":"2024-03-12"},{"lineNumber":96,"author":{"gitId":"Benson15912"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":97,"author":{"gitId":"Benson15912"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":98,"author":{"gitId":"YowSiaoKang"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"YowSiaoKang"},"content":" * Parses {@code Collection\u003cString\u003e availabilities} into a {@code Set\u003cAvailability\u003e}.","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"YowSiaoKang"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":101,"author":{"gitId":"YowSiaoKang"},"content":" public static Set\u003cAvailability\u003e parseAvailabilities(Collection\u003cString\u003e availabilities) throws ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"YowSiaoKang"},"content":" requireNonNull(availabilities);","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"YowSiaoKang"},"content":" final Set\u003cAvailability\u003e availabilitiesSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"YowSiaoKang"},"content":" for (String availability : availabilities) {","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"YowSiaoKang"},"content":" availabilitiesSet.add(parseAvailability(availability));","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"YowSiaoKang"},"content":" return availabilitiesSet;","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":109,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":111,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30"},{"lineNumber":112,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":113,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":115,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":117,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":118,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":119,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":120,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":122,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":125,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":126,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":127,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":128,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":129,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":130,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":131,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":132,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30"},{"lineNumber":133,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":134,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":135,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":137,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":140,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":141,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07"},{"lineNumber":142,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":143,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":144,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15"},{"lineNumber":145,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11"},{"lineNumber":146,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11"},{"lineNumber":147,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":149,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":151,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"Benson15912":15,"-":124,"YowSiaoKang":12}},{"path":"src/main/java/seedu/address/model/person/Availability.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Benson15912"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"Benson15912"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"Benson15912"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"Benson15912"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"Benson15912"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"YowSiaoKang"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"YowSiaoKang"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"YowSiaoKang"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"Benson15912"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"Benson15912"},"content":" * Represents a Person\u0027s availability in the address book.","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"Benson15912"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidAvailability(String)}","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"Benson15912"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"Benson15912"},"content":"public class Availability {","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"YowSiaoKang"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Availabilities must be in the format of dd/MM/yyyy\";","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"Benson15912"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"Benson15912"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"Benson15912"},"content":" * The first character of the availability must not be a whitespace,","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"Benson15912"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"Benson15912"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"YowSiaoKang"},"content":" public static final String VALIDATION_REGEX \u003d \"dd/MM/yyyy\";","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"YowSiaoKang"},"content":" private static DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(VALIDATION_REGEX);","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"Benson15912"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"YowSiaoKang"},"content":" private LocalDate date;","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"Benson15912"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"Benson15912"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"Benson15912"},"content":" * Constructs an {@code Address}.","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"Benson15912"},"content":" *","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"Benson15912"},"content":" * @param availability A valid date.","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"Benson15912"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"Benson15912"},"content":" public Availability(String availability) {","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"Benson15912"},"content":" requireNonNull(availability);","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"Benson15912"},"content":" checkArgument(isValidAvailability(availability), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"YowSiaoKang"},"content":" this.date \u003d LocalDate.parse(availability, formatter);","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"Benson15912"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"Benson15912"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"Benson15912"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"Benson15912"},"content":" * Returns true if a given string is a valid availability.","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"Benson15912"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"Benson15912"},"content":" public static boolean isValidAvailability(String test) {","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"YowSiaoKang"},"content":" test \u003d test.trim();","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"YowSiaoKang"},"content":" try {","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"YowSiaoKang"},"content":" formatter.parse(test);","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"YowSiaoKang"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"YowSiaoKang"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"YowSiaoKang"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"Benson15912"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"Benson15912"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"Benson15912"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"Benson15912"},"content":" public String toString() {","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"YowSiaoKang"},"content":" return date.format(formatter);","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"Benson15912"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"Benson15912"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"Benson15912"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"Benson15912"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"Benson15912"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"Benson15912"},"content":" return true;","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"Benson15912"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"Benson15912"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"Benson15912"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"Benson15912"},"content":" if (!(other instanceof Availability)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"Benson15912"},"content":" return false;","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"Benson15912"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"Benson15912"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"Benson15912"},"content":" Availability otherAvailability \u003d (Availability) other;","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"YowSiaoKang"},"content":" return date.equals(otherAvailability.date);","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"Benson15912"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"Benson15912"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"Benson15912"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"Benson15912"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"YowSiaoKang"},"content":" return date.hashCode();","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"Benson15912"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":74,"author":{"gitId":"Benson15912"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"Benson15912":55,"YowSiaoKang":19}},{"path":"src/main/java/seedu/address/model/person/AvailableAtDatePredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"YowSiaoKang"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"YowSiaoKang"},"content":"import static seedu.address.logic.parser.ParserUtil.parseAvailabilities;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"YowSiaoKang"},"content":"import java.util.List;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"YowSiaoKang"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"YowSiaoKang"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"YowSiaoKang"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"YowSiaoKang"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"YowSiaoKang"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"YowSiaoKang"},"content":" * Tests that a {@code Person}\u0027s {@code Availability} matches any of the keywords given.","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"YowSiaoKang"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"YowSiaoKang"},"content":"public class AvailableAtDatePredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"YowSiaoKang"},"content":" private final Set\u003cAvailability\u003e keywords;","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"YowSiaoKang"},"content":" public AvailableAtDatePredicate(List\u003cString\u003e keywords) throws ParseException {","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"YowSiaoKang"},"content":" this.keywords \u003d parseAvailabilities(keywords);","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"YowSiaoKang"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"YowSiaoKang"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"YowSiaoKang"},"content":" return keywords.stream()","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"YowSiaoKang"},"content":" .anyMatch(keyword -\u003e person.getAvailabilities().stream()","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"YowSiaoKang"},"content":" .anyMatch(availability -\u003e availability.equals(keyword)));","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"YowSiaoKang"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"YowSiaoKang"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"YowSiaoKang"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"YowSiaoKang"},"content":" return true;","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"YowSiaoKang"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"YowSiaoKang"},"content":" if (!(other instanceof AvailableAtDatePredicate)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"YowSiaoKang"},"content":" return false;","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"YowSiaoKang"},"content":" AvailableAtDatePredicate otherAvailableAtDatePredicate \u003d (AvailableAtDatePredicate) other;","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"YowSiaoKang"},"content":" return keywords.equals(otherAvailableAtDatePredicate.keywords);","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"YowSiaoKang"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"YowSiaoKang"},"content":" public String toString() {","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"YowSiaoKang"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"YowSiaoKang"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"YowSiaoKang":48}},{"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.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Tests that a {@code Person}\u0027s {@code Name} matches any of the keywords given.","lastModifiedDate":"2018-01-10"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class NameContainsKeywordsPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2018-01-10"},{"lineNumber":12,"author":{"gitId":"-"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public NameContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" this.keywords \u003d keywords;","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":" @Override","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public boolean test(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":20,"author":{"gitId":"tayziyi"},"content":" return keywords.stream().anyMatch(keyword -\u003e","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"tayziyi"},"content":" person.getName().fullName.toLowerCase().contains(keyword.toLowerCase()));","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" if (!(other instanceof NameContainsKeywordsPredicate)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate otherNameContainsKeywordsPredicate \u003d (NameContainsKeywordsPredicate) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" return keywords.equals(otherNameContainsKeywordsPredicate.keywords);","lastModifiedDate":"2023-07-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"tayziyi":2,"-":41}},{"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":"-"},"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":"YowSiaoKang"},"content":" private final Set\u003cAvailability\u003e availabilities;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"YowSiaoKang"},"content":" public Person(Name name, Phone phone, Email email, Set\u003cAvailability\u003e availabilities, Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"YowSiaoKang"},"content":" requireAllNonNull(name, phone, email, availabilities, tags);","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20"},{"lineNumber":34,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20"},{"lineNumber":36,"author":{"gitId":"YowSiaoKang"},"content":" this.availabilities \u003d availabilities;","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return email;","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":"YowSiaoKang"},"content":" public Set\u003cAvailability\u003e getAvailabilities() {","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"YowSiaoKang"},"content":" return Collections.unmodifiableSet(availabilities);","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07"},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2020-12-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":92,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10"},{"lineNumber":93,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":96,"author":{"gitId":"YowSiaoKang"},"content":" \u0026\u0026 availabilities.equals(otherPerson.availabilities)","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"-"},"content":" \u0026\u0026 tags.equals(otherPerson.tags);","lastModifiedDate":"2023-07-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":103,"author":{"gitId":"YowSiaoKang"},"content":" return Objects.hash(name, phone, email, availabilities, tags);","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":108,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":112,"author":{"gitId":"YowSiaoKang"},"content":" .add(\"availabilities\", availabilities)","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"-":108,"YowSiaoKang":9}},{"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":"Benson15912"},"content":"import seedu.address.model.person.Availability;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":" new Person(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":23,"author":{"gitId":"YowSiaoKang"},"content":" getAvailabilitySet(\"01/03/2024\", \"02/03/2024\", \"03/03/2024\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"-"},"content":" getTagSet(\"friends\")),","lastModifiedDate":"2017-03-14"},{"lineNumber":25,"author":{"gitId":"-"},"content":" new Person(new Name(\"Bernice Yu\"), new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":26,"author":{"gitId":"YowSiaoKang"},"content":" getAvailabilitySet(\"20/03/2024\", \"22/03/2024\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"-"},"content":" getTagSet(\"colleagues\", \"friends\")),","lastModifiedDate":"2017-03-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":29,"author":{"gitId":"YowSiaoKang"},"content":" getAvailabilitySet(\"01/03/2024\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"-"},"content":" getTagSet(\"neighbours\")),","lastModifiedDate":"2017-03-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":" new Person(new Name(\"David Li\"), new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":32,"author":{"gitId":"YowSiaoKang"},"content":" getAvailabilitySet(\"28/02/2024\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"-"},"content":" getTagSet(\"family\")),","lastModifiedDate":"2017-03-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":35,"author":{"gitId":"YowSiaoKang"},"content":" getAvailabilitySet(\"05/04/2024\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"-"},"content":" getTagSet(\"classmates\")),","lastModifiedDate":"2017-03-14"},{"lineNumber":37,"author":{"gitId":"-"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":38,"author":{"gitId":"YowSiaoKang"},"content":" getAvailabilitySet(\"03/05/2024\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":" getTagSet(\"colleagues\"))","lastModifiedDate":"2017-03-14"},{"lineNumber":40,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14"},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":60,"author":{"gitId":"YowSiaoKang"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"YowSiaoKang"},"content":" * Returns an availability set containing the list of strings given.","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"YowSiaoKang"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"YowSiaoKang"},"content":" public static Set\u003cAvailability\u003e getAvailabilitySet(String... strings) {","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"YowSiaoKang"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"YowSiaoKang"},"content":" .map(Availability::new)","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"YowSiaoKang"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"Benson15912":1,"-":53,"YowSiaoKang":14}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedAvailability.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"YowSiaoKang"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"YowSiaoKang"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"YowSiaoKang"},"content":"import com.fasterxml.jackson.annotation.JsonValue;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"YowSiaoKang"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"YowSiaoKang"},"content":"import seedu.address.model.person.Availability;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"YowSiaoKang"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"YowSiaoKang"},"content":" * Jackson-friendly version of {@link Availability}.","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"YowSiaoKang"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"YowSiaoKang"},"content":"public class JsonAdaptedAvailability {","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"YowSiaoKang"},"content":" private final String availability;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"YowSiaoKang"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"YowSiaoKang"},"content":" * Constructs a {@code JsonAdaptedAvailability} with the given availability details.","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"YowSiaoKang"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"YowSiaoKang"},"content":" @JsonCreator","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"YowSiaoKang"},"content":" public JsonAdaptedAvailability(String availability) {","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"YowSiaoKang"},"content":" this.availability \u003d availability;","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"YowSiaoKang"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"YowSiaoKang"},"content":" * Converts a given {@code Availability} into this class for Jackson use.","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"YowSiaoKang"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"YowSiaoKang"},"content":" public JsonAdaptedAvailability(Availability source) {","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"YowSiaoKang"},"content":" availability \u003d source.toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"YowSiaoKang"},"content":" @JsonValue","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"YowSiaoKang"},"content":" public String getAvailability() {","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"YowSiaoKang"},"content":" return availability;","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"YowSiaoKang"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"YowSiaoKang"},"content":" * Converts this Jackson-friendly adapted availability object into the model\u0027s {@code Availability} object.","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"YowSiaoKang"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"YowSiaoKang"},"content":" public Availability toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"YowSiaoKang"},"content":" if (!Availability.isValidAvailability(availability)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"YowSiaoKang"},"content":" throw new IllegalValueException(Availability.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"YowSiaoKang"},"content":" return new Availability(availability);","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"YowSiaoKang"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"YowSiaoKang":44}},{"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":"Benson15912"},"content":"import seedu.address.model.person.Availability;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"YowSiaoKang"},"content":" private final List\u003cJsonAdaptedAvailability\u003e availabilities \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"YowSiaoKang"},"content":" @JsonProperty(\"email\") String email,","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"YowSiaoKang"},"content":" @JsonProperty(\"availabilities\") List\u003cJsonAdaptedAvailability\u003e availabilities,","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags) {","lastModifiedDate":"2023-05-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"YowSiaoKang"},"content":" if (availabilities !\u003d null) {","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"YowSiaoKang"},"content":" this.availabilities.addAll(availabilities);","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"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":"YowSiaoKang"},"content":" availabilities.addAll(source.getAvailabilities().stream()","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"YowSiaoKang"},"content":" .map(JsonAdaptedAvailability::new)","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"YowSiaoKang"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09"},{"lineNumber":63,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13"},{"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 this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"YowSiaoKang"},"content":" final List\u003cAvailability\u003e availabilityList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09"},{"lineNumber":76,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"YowSiaoKang"},"content":" for (JsonAdaptedAvailability availability : availabilities) {","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"YowSiaoKang"},"content":" availabilityList.add(availability.toModelType());","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-17"},{"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":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"YowSiaoKang"},"content":" final Set\u003cAvailability\u003e modelAvailability \u003d new HashSet\u003c\u003e(availabilityList);","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"Benson15912"},"content":" return new Person(modelName, modelPhone, modelEmail, modelAvailability, modelTags);","lastModifiedDate":"2024-03-12"},{"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"}],"authorContributionMap":{"Benson15912":2,"-":94,"YowSiaoKang":14}},{"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":"-"},"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":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-10-15"},{"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":"","lastModifiedDate":"2016-09-14"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * The UI component that is responsible for receiving user command inputs.","lastModifiedDate":"2017-08-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class CommandBox extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String ERROR_STYLE_CLASS \u003d \"error\";","lastModifiedDate":"2017-02-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"CommandBox.fxml\";","lastModifiedDate":"2017-04-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private final CommandExecutor commandExecutor;","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-14"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private TextField commandTextField;","lastModifiedDate":"2016-09-14"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Creates a {@code CommandBox} with the given {@code CommandExecutor}.","lastModifiedDate":"2020-05-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public CommandBox(CommandExecutor commandExecutor) {","lastModifiedDate":"2019-01-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" this.commandExecutor \u003d commandExecutor;","lastModifiedDate":"2018-12-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // calls #setStyleToDefault() whenever there is a change to the text of the command box.","lastModifiedDate":"2017-06-28"},{"lineNumber":31,"author":{"gitId":"-"},"content":" commandTextField.textProperty().addListener((unused1, unused2, unused3) -\u003e setStyleToDefault());","lastModifiedDate":"2017-06-28"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Handles the Enter button pressed event.","lastModifiedDate":"2017-08-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private void handleCommandEntered() {","lastModifiedDate":"2018-04-01"},{"lineNumber":39,"author":{"gitId":"-"},"content":" String commandText \u003d commandTextField.getText();","lastModifiedDate":"2020-12-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":" if (commandText.equals(\"\")) {","lastModifiedDate":"2020-12-04"},{"lineNumber":41,"author":{"gitId":"-"},"content":" return;","lastModifiedDate":"2020-12-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-12-04"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-12-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-02-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" commandExecutor.execute(commandText);","lastModifiedDate":"2020-12-04"},{"lineNumber":46,"author":{"gitId":"-"},"content":" commandTextField.setText(\"\");","lastModifiedDate":"2016-09-14"},{"lineNumber":47,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2017-03-11"},{"lineNumber":48,"author":{"gitId":"-"},"content":" setStyleToIndicateCommandFailure();","lastModifiedDate":"2017-02-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-14"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-28"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Sets the command box style to use the default style.","lastModifiedDate":"2017-06-28"},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28"},{"lineNumber":55,"author":{"gitId":"-"},"content":" private void setStyleToDefault() {","lastModifiedDate":"2017-06-28"},{"lineNumber":56,"author":{"gitId":"-"},"content":" commandTextField.getStyleClass().remove(ERROR_STYLE_CLASS);","lastModifiedDate":"2017-02-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-28"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Sets the command box style to indicate a failed command.","lastModifiedDate":"2017-02-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28"},{"lineNumber":62,"author":{"gitId":"-"},"content":" private void setStyleToIndicateCommandFailure() {","lastModifiedDate":"2017-02-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" ObservableList\u003cString\u003e styleClass \u003d commandTextField.getStyleClass();","lastModifiedDate":"2017-03-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" if (styleClass.contains(ERROR_STYLE_CLASS)) {","lastModifiedDate":"2017-03-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return;","lastModifiedDate":"2017-03-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" styleClass.add(ERROR_STYLE_CLASS);","lastModifiedDate":"2017-03-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Represents a function that can execute commands.","lastModifiedDate":"2018-12-09"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @FunctionalInterface","lastModifiedDate":"2018-12-09"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public interface CommandExecutor {","lastModifiedDate":"2018-12-09"},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":79,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":80,"author":{"gitId":"SimKianSeng"},"content":" * @see seedu.address.logic.Logic#execute(String, boolean)","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":82,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2018-12-09"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":85,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"}],"authorContributionMap":{"SimKianSeng":1,"-":84}},{"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":"SimKianSeng"},"content":" private boolean isConfirmation;","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":" // Independent Ui parts residing in this Ui container","lastModifiedDate":"2016-08-18"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private PersonListPanel personListPanel;","lastModifiedDate":"2016-08-18"},{"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":"-"},"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":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08"},{"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":"SimKianSeng"},"content":" isConfirmation \u003d false;","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":" personListPanel \u003d new PersonListPanel(logic.getFilteredPersonList());","lastModifiedDate":"2019-01-25"},{"lineNumber":117,"author":{"gitId":"-"},"content":" personListPanelPlaceholder.getChildren().add(personListPanel.getRoot());","lastModifiedDate":"2017-06-14"},{"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":"-"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getAddressBookFilePath());","lastModifiedDate":"2019-01-25"},{"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":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":129,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":130,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27"},{"lineNumber":131,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":132,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":133,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27"},{"lineNumber":134,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27"},{"lineNumber":135,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27"},{"lineNumber":136,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27"},{"lineNumber":137,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":141,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":142,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15"},{"lineNumber":143,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":145,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15"},{"lineNumber":147,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":148,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15"},{"lineNumber":149,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":153,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15"},{"lineNumber":154,"author":{"gitId":"-"},"content":" primaryStage.show();","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":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":158,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18"},{"lineNumber":159,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":160,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":161,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18"},{"lineNumber":162,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":169,"author":{"gitId":"-"},"content":" public PersonListPanel getPersonListPanel() {","lastModifiedDate":"2016-08-25"},{"lineNumber":170,"author":{"gitId":"-"},"content":" return personListPanel;","lastModifiedDate":"2018-08-14"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":173,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":174,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":175,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":176,"author":{"gitId":"SimKianSeng"},"content":" * @see Logic#execute(String, boolean)","lastModifiedDate":"2024-03-20"},{"lineNumber":177,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":178,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09"},{"lineNumber":179,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":180,"author":{"gitId":"SimKianSeng"},"content":" CommandResult commandResult \u003d logic.execute(commandText, isConfirmation);","lastModifiedDate":"2024-03-20"},{"lineNumber":181,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":182,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":184,"author":{"gitId":"SimKianSeng"},"content":" isConfirmation \u003d commandResult.isConfirmation(); // to determine if next commandText is a confirmation","lastModifiedDate":"2024-03-20"},{"lineNumber":185,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":186,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":187,"author":{"gitId":"-"},"content":" handleHelp();","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":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":191,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09"},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":194,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":195,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09"},{"lineNumber":196,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13"},{"lineNumber":197,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09"},{"lineNumber":198,"author":{"gitId":"-"},"content":" throw e;","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":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"SimKianSeng":7,"-":194}},{"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":"Benson15912"},"content":" private Label availability;","lastModifiedDate":"2024-03-12"},{"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":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-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":"YowSiaoKang"},"content":" availability.setText(\"Availability: \" + person.getAvailabilities().toString());","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"-"},"content":" person.getTags().stream()","lastModifiedDate":"2019-01-02"},{"lineNumber":56,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02"},{"lineNumber":57,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"Benson15912":1,"-":57,"YowSiaoKang":1}},{"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":"xuwen-ho"},"content":" -fx-background-color: derive(#000000, 80%);","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"xuwen-ho"},"content":" background-color: #676F9D; /* Used in the default.html file */","lastModifiedDate":"2024-03-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":"-"},"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":"xuwen-ho"},"content":" -fx-base: #2d3250;","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"xuwen-ho"},"content":" -fx-control-inner-background: #2d3250;","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"xuwen-ho"},"content":" -fx-background-color: #2d3250;","lastModifiedDate":"2024-03-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":"-"},"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":"xuwen-ho"},"content":" -fx-background-color: derive(#000000, 20%);","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"xuwen-ho"},"content":" -fx-border-color: transparent transparent transparent #6C7B8B;","lastModifiedDate":"2024-03-17"},{"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":"xuwen-ho"},"content":" -fx-background-color: derive(#2d3250, 20%);","lastModifiedDate":"2024-03-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":"xuwen-ho"},"content":" -fx-background-color: derive(#2d3250, 20%);","lastModifiedDate":"2024-03-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":"-"},"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":"xuwen-ho"},"content":" -fx-border-color: #2d3250;","lastModifiedDate":"2024-03-17"},{"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":"xuwen-ho"},"content":" -fx-background-color: derive(#2d3250, 20%);","lastModifiedDate":"2024-03-17"},{"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":"xuwen-ho"},"content":" -fx-background-color: derive(#2d3250, 20%);","lastModifiedDate":"2024-03-17"},{"lineNumber":141,"author":{"gitId":"xuwen-ho"},"content":" -fx-border-color: derive(#2d3250, 10%);","lastModifiedDate":"2024-03-17"},{"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":"xuwen-ho"},"content":" -fx-background-color: derive(#2d3250, 30%);","lastModifiedDate":"2024-03-17"},{"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":"xuwen-ho"},"content":" -fx-background-color: derive(#2d3250, 30%);","lastModifiedDate":"2024-03-17"},{"lineNumber":169,"author":{"gitId":"xuwen-ho"},"content":" -fx-border-color: derive(#2d3250, 25%);","lastModifiedDate":"2024-03-17"},{"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":"xuwen-ho"},"content":" -fx-background-color: derive(#2d3250, 30%);","lastModifiedDate":"2024-03-17"},{"lineNumber":179,"author":{"gitId":"xuwen-ho"},"content":" -fx-border-color: derive(#2d3250, 30%);","lastModifiedDate":"2024-03-17"},{"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":"xuwen-ho"},"content":" -fx-background-color: derive(#2d3250, 30%);","lastModifiedDate":"2024-03-17"},{"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":"xuwen-ho"},"content":" -fx-background-color: derive(#2d3250, 50%);","lastModifiedDate":"2024-03-17"},{"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":"xuwen-ho"},"content":" -fx-background-color: derive(#2d3250, 20%);","lastModifiedDate":"2024-03-17"},{"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":"xuwen-ho"},"content":" -fx-background-color: #2d3250;","lastModifiedDate":"2024-03-17"},{"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":"xuwen-ho"},"content":" -fx-text-fill: #2d3250;","lastModifiedDate":"2024-03-17"},{"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":"xuwen-ho"},"content":" -fx-background-color: #2d3250;","lastModifiedDate":"2024-03-17"},{"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":"xuwen-ho"},"content":" -fx-background-color: #2d3250;","lastModifiedDate":"2024-03-17"},{"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":"xuwen-ho"},"content":" -fx-background-color: #2d3250;","lastModifiedDate":"2024-03-17"},{"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":"xuwen-ho"},"content":" -fx-background-color: derive(#2d3250, 25%);","lastModifiedDate":"2024-03-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: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":"xuwen-ho"},"content":" -fx-background-color: derive(#2d3250, 20%);","lastModifiedDate":"2024-03-17"},{"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":"xuwen-ho"},"content":" -fx-background-color: derive(#2d3250, 50%);","lastModifiedDate":"2024-03-17"},{"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":"xuwen-ho"},"content":" -fx-background-color: #2d3250;","lastModifiedDate":"2024-03-17"},{"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":"xuwen-ho"},"content":" -fx-background-color: transparent #676F9D transparent #676F9D;","lastModifiedDate":"2024-03-17"},{"lineNumber":322,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":323,"author":{"gitId":"xuwen-ho"},"content":" -fx-border-color: #676F9D #676F9D #ffffff #676F9D;","lastModifiedDate":"2024-03-17"},{"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":"xuwen-ho"},"content":" -fx-background-color: transparent, #676F9D, transparent, #676F9D;","lastModifiedDate":"2024-03-17"},{"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":"xuwen-ho"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-17"},{"lineNumber":347,"author":{"gitId":"xuwen-ho"},"content":" -fx-background-color: #f9b17a;","lastModifiedDate":"2024-03-17"},{"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":{"xuwen-ho":35,"-":317}},{"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":"xuwen-ho"},"content":" -fx-background: #505680","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"xuwen-ho"},"content":";","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":".tag-selector {","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-border-color: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" -fx-border-radius: 3;","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" -fx-background-radius: 3;","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":".tooltip-text {","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"xuwen-ho":2,"-":19}},{"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":"xuwen-ho"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"xuwen-ho"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"xuwen-ho"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"xuwen-ho"},"content":" \u003cHBox alignment\u003d\"CENTER_LEFT\" spacing\u003d\"5\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"xuwen-ho"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"5\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"xuwen-ho"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"xuwen-ho"},"content":" \u003cHBox alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":35,"author":{"gitId":"xuwen-ho"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"xuwen-ho"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"xuwen-ho"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" GridPane.columnIndex\u003d\"1\"\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"xuwen-ho"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"xuwen-ho"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"5\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"xuwen-ho"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"xuwen-ho"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" GridPane.columnIndex\u003d\"2\"\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"xuwen-ho"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"xuwen-ho"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"5\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"xuwen-ho"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"xuwen-ho"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" GridPane.columnIndex\u003d\"3\"\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"xuwen-ho"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"xuwen-ho"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"5\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"xuwen-ho"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"xuwen-ho"},"content":" \u003cLabel fx:id\u003d\"availability\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"xuwen-ho"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"xuwen-ho":23,"-":33}},{"path":"src/test/java/seedu/address/logic/ConfirmationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"SimKianSeng"},"content":"package seedu.address.logic;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"SimKianSeng"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"SimKianSeng"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"SimKianSeng"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"SimKianSeng"},"content":"import static seedu.address.logic.Messages.MESSAGE_CONFIRMATION;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"SimKianSeng"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"SimKianSeng"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"SimKianSeng"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"SimKianSeng"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"SimKianSeng"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"SimKianSeng"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"SimKianSeng"},"content":"public class ConfirmationTest {","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"SimKianSeng"},"content":" public static final int RANDOM_INDEX \u003d 1;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"SimKianSeng"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"SimKianSeng"},"content":" public void assertNoConfirmation() {","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"SimKianSeng"},"content":" Confirmation confirmation;","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"SimKianSeng"},"content":" confirmation \u003d new Confirmation(new AddCommand(ALICE));","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"SimKianSeng"},"content":" assertTrue(confirmation.isToProceed());","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"SimKianSeng"},"content":" // different command -\u003e return true","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"SimKianSeng"},"content":" confirmation \u003d new Confirmation((new ListCommand()));","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"SimKianSeng"},"content":" assertTrue(confirmation.isToProceed());","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"SimKianSeng"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"SimKianSeng"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"SimKianSeng"},"content":" public void assertConfirmation() {","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"SimKianSeng"},"content":" Confirmation confirmation \u003d new Confirmation(new DeleteCommand(Index.fromOneBased(RANDOM_INDEX)));","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"SimKianSeng"},"content":" assertFalse(confirmation.isToProceed());","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"SimKianSeng"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"SimKianSeng"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"SimKianSeng"},"content":" public void assertConfirmationString() {","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"SimKianSeng"},"content":" Confirmation confirmation \u003d new Confirmation((new ListCommand()));","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"SimKianSeng"},"content":" assertEquals(MESSAGE_CONFIRMATION, confirmation.toString());","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"SimKianSeng"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"SimKianSeng"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"SimKianSeng":41}},{"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":"SimKianSeng"},"content":"import static seedu.address.logic.Messages.MESSAGE_CONFIRMATION;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"SimKianSeng"},"content":"import static seedu.address.logic.Messages.MESSAGE_CONFIRMATION_CANCELLED;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"Benson15912"},"content":"import static seedu.address.logic.commands.CommandTestUtil.AVAILABILITY_DESC_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"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.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":"-"},"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":"SimKianSeng"},"content":" assertParseException(invalidCommand, false, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2024-03-21"},{"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":"SimKianSeng"},"content":" public void execute_commandExecutionError_throwsCommandException() throws CommandException, ParseException {","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2017-06-14"},{"lineNumber":66,"author":{"gitId":"SimKianSeng"},"content":" String confirmation \u003d \"y\";","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"SimKianSeng"},"content":" assertCommandSuccess(deleteCommand, false, MESSAGE_CONFIRMATION, model);","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"SimKianSeng"},"content":" assertCommandException(confirmation, true, MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-21"},{"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":"SimKianSeng"},"content":" public void execute_validCommand_success() throws CommandException, ParseException {","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2017-06-19"},{"lineNumber":74,"author":{"gitId":"SimKianSeng"},"content":" assertCommandSuccess(listCommand, false, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":77,"author":{"gitId":"SimKianSeng"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"SimKianSeng"},"content":" public void execute_validCommand_cancelled() throws CommandException, ParseException {","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"SimKianSeng"},"content":" String deleteCommand \u003d \"delete 1\";","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"SimKianSeng"},"content":" String confirmation \u003d \"anything\";","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"SimKianSeng"},"content":" assertCommandSuccess(deleteCommand, false, MESSAGE_CONFIRMATION, model);","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"SimKianSeng"},"content":" assertCommandSuccess(confirmation, true, MESSAGE_CONFIRMATION_CANCELLED, model);","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().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":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":107,"author":{"gitId":"SimKianSeng"},"content":" * @see #assertCommandFailure(String, boolean, Class, String, Model)","lastModifiedDate":"2024-03-21"},{"lineNumber":108,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":109,"author":{"gitId":"SimKianSeng"},"content":" private void assertCommandSuccess(String inputCommand, boolean isConfirmation, String expectedMessage,","lastModifiedDate":"2024-03-21"},{"lineNumber":110,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14"},{"lineNumber":111,"author":{"gitId":"SimKianSeng"},"content":" CommandResult result \u003d logic.execute(inputCommand, isConfirmation);","lastModifiedDate":"2024-03-21"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":116,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":117,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":118,"author":{"gitId":"SimKianSeng"},"content":" * @see #assertCommandFailure(String, boolean, Class, String, Model)","lastModifiedDate":"2024-03-21"},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":120,"author":{"gitId":"SimKianSeng"},"content":" private void assertParseException(String inputCommand, boolean isConfirmation, String expectedMessage) {","lastModifiedDate":"2024-03-21"},{"lineNumber":121,"author":{"gitId":"SimKianSeng"},"content":" assertCommandFailure(inputCommand, isConfirmation, ParseException.class, expectedMessage);","lastModifiedDate":"2024-03-21"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":124,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14"},{"lineNumber":126,"author":{"gitId":"SimKianSeng"},"content":" * @see #assertCommandFailure(String, boolean, Class, String, Model)","lastModifiedDate":"2024-03-21"},{"lineNumber":127,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14"},{"lineNumber":128,"author":{"gitId":"SimKianSeng"},"content":" private void assertCommandException(String inputCommand, boolean isConfirmation, String expectedMessage) {","lastModifiedDate":"2024-03-21"},{"lineNumber":129,"author":{"gitId":"SimKianSeng"},"content":" assertCommandFailure(inputCommand, isConfirmation, CommandException.class, expectedMessage);","lastModifiedDate":"2024-03-21"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":134,"author":{"gitId":"SimKianSeng"},"content":" * @see #assertCommandFailure(String, boolean, Class, String, Model)","lastModifiedDate":"2024-03-21"},{"lineNumber":135,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":136,"author":{"gitId":"SimKianSeng"},"content":" private void assertCommandFailure(String inputCommand, boolean isConfirmation,","lastModifiedDate":"2024-03-21"},{"lineNumber":137,"author":{"gitId":"SimKianSeng"},"content":" Class\u003c? extends Throwable\u003e expectedException, String expectedMessage) {","lastModifiedDate":"2024-03-21"},{"lineNumber":138,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31"},{"lineNumber":139,"author":{"gitId":"SimKianSeng"},"content":" assertCommandFailure(inputCommand, isConfirmation, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-21"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":142,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":143,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":144,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":145,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":146,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":147,"author":{"gitId":"SimKianSeng"},"content":" * @see #assertCommandSuccess(String, boolean, String, Model)","lastModifiedDate":"2024-03-21"},{"lineNumber":148,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":149,"author":{"gitId":"SimKianSeng"},"content":" private void assertCommandFailure(String inputCommand, boolean isConfirmation,","lastModifiedDate":"2024-03-21"},{"lineNumber":150,"author":{"gitId":"SimKianSeng"},"content":" Class\u003c? extends Throwable\u003e expectedException, String expectedMessage,","lastModifiedDate":"2024-03-21"},{"lineNumber":151,"author":{"gitId":"SimKianSeng"},"content":" Model expectedModel) {","lastModifiedDate":"2024-03-21"},{"lineNumber":152,"author":{"gitId":"SimKianSeng"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand, isConfirmation));","lastModifiedDate":"2024-03-21"},{"lineNumber":153,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19"},{"lineNumber":156,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":157,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13"},{"lineNumber":158,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13"},{"lineNumber":159,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13"},{"lineNumber":160,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13"},{"lineNumber":161,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":162,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13"},{"lineNumber":163,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":165,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13"},{"lineNumber":166,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":168,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13"},{"lineNumber":169,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13"},{"lineNumber":170,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":172,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":174,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":175,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13"},{"lineNumber":176,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":178,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":180,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13"},{"lineNumber":181,"author":{"gitId":"-"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2023-06-13"},{"lineNumber":182,"author":{"gitId":"Benson15912"},"content":" + EMAIL_DESC_AMY + AVAILABILITY_DESC_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":183,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2023-06-13"},{"lineNumber":184,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13"},{"lineNumber":185,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13"},{"lineNumber":186,"author":{"gitId":"SimKianSeng"},"content":" assertCommandFailure(addCommand, false, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-21"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":188,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"Benson15912":2,"SimKianSeng":34,"-":152}},{"path":"src/test/java/seedu/address/logic/commands/CommandResultTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2018-12-09"},{"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":"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":"2018-12-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class CommandResultTest {","lastModifiedDate":"2018-12-09"},{"lineNumber":11,"author":{"gitId":"SimKianSeng"},"content":" public static final String DEFAULT_FEEDBACK_MESSAGE \u003d \"feedback\";","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"SimKianSeng"},"content":" public static final String DIFFERENT_FEEDBACK_MESSAGE \u003d \"different\";","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-12-09"},{"lineNumber":15,"author":{"gitId":"SimKianSeng"},"content":" CommandResult commandResult \u003d new CommandResult(DEFAULT_FEEDBACK_MESSAGE);","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"SimKianSeng"},"content":" assertTrue(commandResult.equals(new CommandResult(DEFAULT_FEEDBACK_MESSAGE)));","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"SimKianSeng"},"content":" assertTrue(commandResult.equals(new CommandResult(DEFAULT_FEEDBACK_MESSAGE, false, false, false)));","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":" assertTrue(commandResult.equals(commandResult));","lastModifiedDate":"2018-12-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(null));","lastModifiedDate":"2018-12-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(0.5f));","lastModifiedDate":"2018-12-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // different feedbackToUser value -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":31,"author":{"gitId":"SimKianSeng"},"content":" assertFalse(commandResult.equals(new CommandResult(DIFFERENT_FEEDBACK_MESSAGE)));","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"SimKianSeng"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"SimKianSeng"},"content":" // different confirmation value -\u003e return false","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"SimKianSeng"},"content":" assertFalse(commandResult.equals(new CommandResult(DEFAULT_FEEDBACK_MESSAGE, true, false, false)));","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // different showHelp value -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":37,"author":{"gitId":"SimKianSeng"},"content":" assertFalse(commandResult.equals(new CommandResult(DEFAULT_FEEDBACK_MESSAGE, false, true, false)));","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" // different exit value -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":40,"author":{"gitId":"SimKianSeng"},"content":" assertFalse(commandResult.equals(new CommandResult(DEFAULT_FEEDBACK_MESSAGE, false, false, true)));","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void hashcode() {","lastModifiedDate":"2018-12-09"},{"lineNumber":45,"author":{"gitId":"SimKianSeng"},"content":" CommandResult commandResult \u003d new CommandResult(DEFAULT_FEEDBACK_MESSAGE);","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // same values -\u003e returns same hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":48,"author":{"gitId":"SimKianSeng"},"content":" assertEquals(commandResult.hashCode(), new CommandResult(DEFAULT_FEEDBACK_MESSAGE).hashCode());","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // different feedbackToUser value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":51,"author":{"gitId":"SimKianSeng"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(DIFFERENT_FEEDBACK_MESSAGE).hashCode());","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // different showHelp value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"SimKianSeng"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(DEFAULT_FEEDBACK_MESSAGE, false,","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"SimKianSeng"},"content":" true, false).hashCode());","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // different exit value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":58,"author":{"gitId":"SimKianSeng"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(DEFAULT_FEEDBACK_MESSAGE, false,","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"SimKianSeng"},"content":" false, true).hashCode());","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"SimKianSeng"},"content":" CommandResult commandResult \u003d new CommandResult(DEFAULT_FEEDBACK_MESSAGE);","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" String expected \u003d CommandResult.class.getCanonicalName() + \"{feedbackToUser\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"SimKianSeng"},"content":" + commandResult.getFeedbackToUser() + \", confirmation\u003d\" + commandResult.isConfirmation()","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"SimKianSeng"},"content":" + \", showHelp\u003d\" + commandResult.isShowHelp() + \", exit\u003d\" + commandResult.isExit() + \"}\";","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertEquals(expected, commandResult.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-12-09"}],"authorContributionMap":{"SimKianSeng":21,"-":49}},{"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":"Benson15912"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AVAIL;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-12"},{"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":"YowSiaoKang"},"content":" public static final String VALID_AVAILABILITY_AMY \u003d \"01/01/2024\";","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"YowSiaoKang"},"content":" public static final String VALID_AVAILABILITY_BOB \u003d \"31/12/2024\";","lastModifiedDate":"2024-03-17"},{"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":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":46,"author":{"gitId":"Benson15912"},"content":" public static final String AVAILABILITY_DESC_AMY \u003d \" \" + PREFIX_AVAIL + VALID_AVAILABILITY_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"Benson15912"},"content":" public static final String AVAILABILITY_DESC_BOB \u003d \" \" + PREFIX_AVAIL + VALID_AVAILABILITY_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":51,"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":52,"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":53,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05"},{"lineNumber":54,"author":{"gitId":"YowSiaoKang"},"content":" public static final String INVALID_AVAILABILITY_DESC \u003d \" \" + PREFIX_AVAIL + \"1/1/24\"; // wrong date format","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"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":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":65,"author":{"gitId":"Benson15912"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAvailability(VALID_AVAILABILITY_AMY)","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":68,"author":{"gitId":"Benson15912"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAvailability(VALID_AVAILABILITY_BOB)","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25"},{"lineNumber":78,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":79,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":80,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":83,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":84,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25"},{"lineNumber":93,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":94,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":98,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25"},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25"},{"lineNumber":105,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":106,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":107,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":108,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":115,"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":116,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31"},{"lineNumber":117,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":121,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31"},{"lineNumber":122,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20"},{"lineNumber":123,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":128,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"Benson15912":5,"-":120,"YowSiaoKang":3}},{"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":"Benson15912"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_AVAILABILITY_BOB;","lastModifiedDate":"2024-03-12"},{"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":"Benson15912"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withAvailability(VALID_AVAILABILITY_BOB).build();","lastModifiedDate":"2024-03-12"},{"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":"YowSiaoKang"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", availabilities\u003d\"","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"YowSiaoKang"},"content":" + editPersonDescriptor.getAvailabilities().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getTags().orElse(null) + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"Benson15912":2,"-":67,"YowSiaoKang":2}},{"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":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-12-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.ExitCommand.MESSAGE_EXIT_ACKNOWLEDGEMENT;","lastModifiedDate":"2017-06-08"},{"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.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2018-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class ExitCommandTest {","lastModifiedDate":"2017-06-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-12-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public void execute_exit_success() {","lastModifiedDate":"2017-06-08"},{"lineNumber":17,"author":{"gitId":"SimKianSeng"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, false, false, true);","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ExitCommand(), model, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08"}],"authorContributionMap":{"SimKianSeng":1,"-":19}},{"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":"YowSiaoKang"},"content":"import seedu.address.logic.parser.FindCommandParser;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"YowSiaoKang"},"content":"import seedu.address.model.person.AvailableAtDatePredicate;","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","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":" * Contains integration tests (interaction with the Model) for {@code FindCommand}.","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class FindCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"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":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2017-06-12"},{"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":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2017-06-27"},{"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":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"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":"-"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"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":"-"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void execute_zeroKeywords_noPersonFound() {","lastModifiedDate":"2017-08-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2017-06-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2018-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08"},{"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 execute_multipleKeywords_multiplePersonsFound() {","lastModifiedDate":"2017-08-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2017-06-12"},{"lineNumber":72,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\"Kurz Elle Kunz\");","lastModifiedDate":"2018-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" FindCommand findCommand \u003d new FindCommand(predicate);","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.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":"YowSiaoKang"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"YowSiaoKang"},"content":" public void execute_multipleAttributes_multiplePersonsFound() {","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"YowSiaoKang"},"content":" try {","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"YowSiaoKang"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 2);","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"YowSiaoKang"},"content":" NameContainsKeywordsPredicate predicate1 \u003d preparePredicate(\"Kurz\");","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"YowSiaoKang"},"content":" AvailableAtDatePredicate predicate2 \u003d new AvailableAtDatePredicate(Arrays.asList(\"25/05/2024\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"YowSiaoKang"},"content":" // test parser too","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"YowSiaoKang"},"content":" FindCommand command1 \u003d new FindCommandParser().parse(\" n/Kurz a/25/05/2024\");","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"YowSiaoKang"},"content":" FindCommand command2 \u003d new FindCommandParser().parse(\" a/25/05/2024 n/Kurz\");","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"YowSiaoKang"},"content":" expectedModel.updateFilteredPersonList(predicate1.or(predicate2));","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"YowSiaoKang"},"content":" assertCommandSuccess(command1, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"YowSiaoKang"},"content":" assertCommandSuccess(command2, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"YowSiaoKang"},"content":" assertEquals(Arrays.asList(CARL, ELLE), model.getFilteredPersonList());","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"YowSiaoKang"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-03-18"},{"lineNumber":101,"author":{"gitId":"YowSiaoKang"},"content":" e.printStackTrace();","lastModifiedDate":"2024-03-18"},{"lineNumber":102,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":103,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":104,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2018-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":108,"author":{"gitId":"-"},"content":" private NameContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2018-08-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":" return new NameContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2018-08-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":111,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"-":91,"YowSiaoKang":20}},{"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":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.HelpCommand.SHOWING_HELP_MESSAGE;","lastModifiedDate":"2017-06-08"},{"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.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2018-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class HelpCommandTest {","lastModifiedDate":"2017-06-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public void execute_help_success() {","lastModifiedDate":"2017-06-08"},{"lineNumber":17,"author":{"gitId":"SimKianSeng"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(SHOWING_HELP_MESSAGE, false, true, false);","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":" assertCommandSuccess(new HelpCommand(), model, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08"}],"authorContributionMap":{"SimKianSeng":1,"-":19}},{"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":"Benson15912"},"content":"import static seedu.address.logic.commands.CommandTestUtil.AVAILABILITY_DESC_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"Benson15912"},"content":"import static seedu.address.logic.commands.CommandTestUtil.AVAILABILITY_DESC_BOB;","lastModifiedDate":"2024-03-12"},{"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":"Benson15912"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_AVAILABILITY_DESC;","lastModifiedDate":"2024-03-12"},{"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":"Benson15912"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_AVAILABILITY_BOB;","lastModifiedDate":"2024-03-12"},{"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_EMAIL;","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-12"},{"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.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15"},{"lineNumber":39,"author":{"gitId":"Benson15912"},"content":"import seedu.address.model.person.Availability;","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2018-07-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":56,"author":{"gitId":"Benson15912"},"content":" + AVAILABILITY_DESC_BOB + TAG_DESC_FRIEND, new AddCommand(expectedPerson));","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND)","lastModifiedDate":"2018-07-25"},{"lineNumber":61,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":63,"author":{"gitId":"Benson15912"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + AVAILABILITY_DESC_BOB","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"Benson15912"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2024-03-12"},{"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":"YowSiaoKang"},"content":" public void parse_repeatedNonAddressOrTagValue_failure() {","lastModifiedDate":"2024-03-17"},{"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":"Benson15912"},"content":" + AVAILABILITY_DESC_BOB + TAG_DESC_FRIEND;","lastModifiedDate":"2024-03-12"},{"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":"","lastModifiedDate":"2023-07-14"},{"lineNumber":86,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":88,"author":{"gitId":"YowSiaoKang"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"-"},"content":" + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":90,"author":{"gitId":"YowSiaoKang"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_EMAIL, PREFIX_PHONE));","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":106,"author":{"gitId":"-"},"content":" // valid value followed by invalid 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":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":110,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":112,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":123,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15"},{"lineNumber":124,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2018-07-25"},{"lineNumber":125,"author":{"gitId":"Benson15912"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + AVAILABILITY_DESC_AMY,","lastModifiedDate":"2024-03-12"},{"lineNumber":126,"author":{"gitId":"-"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2017-12-23"},{"lineNumber":127,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":128,"author":{"gitId":"YowSiaoKang"},"content":" // no availability","lastModifiedDate":"2024-03-18"},{"lineNumber":129,"author":{"gitId":"YowSiaoKang"},"content":" Person expectedPersonNoAvailability \u003d new PersonBuilder(AMY).withTags().withAvailabilities().build();","lastModifiedDate":"2024-03-18"},{"lineNumber":130,"author":{"gitId":"YowSiaoKang"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY,","lastModifiedDate":"2024-03-18"},{"lineNumber":131,"author":{"gitId":"YowSiaoKang"},"content":" new AddCommand(expectedPersonNoAvailability));","lastModifiedDate":"2024-03-18"},{"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_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":136,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":138,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":139,"author":{"gitId":"Benson15912"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + AVAILABILITY_DESC_BOB,","lastModifiedDate":"2024-03-12"},{"lineNumber":140,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":142,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":143,"author":{"gitId":"Benson15912"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB + AVAILABILITY_DESC_BOB,","lastModifiedDate":"2024-03-12"},{"lineNumber":144,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":146,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":147,"author":{"gitId":"Benson15912"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + AVAILABILITY_DESC_BOB,","lastModifiedDate":"2024-03-12"},{"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":"Benson15912"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_AVAILABILITY_BOB,","lastModifiedDate":"2024-03-12"},{"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":"Benson15912"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + AVAILABILITY_DESC_BOB","lastModifiedDate":"2024-03-12"},{"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":"Benson15912"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + AVAILABILITY_DESC_BOB","lastModifiedDate":"2024-03-12"},{"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":"Benson15912"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + AVAILABILITY_DESC_BOB","lastModifiedDate":"2024-03-12"},{"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":"Benson15912"},"content":" // invalid availability","lastModifiedDate":"2024-03-12"},{"lineNumber":170,"author":{"gitId":"Benson15912"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_AVAILABILITY_DESC","lastModifiedDate":"2024-03-12"},{"lineNumber":171,"author":{"gitId":"Benson15912"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Availability.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":173,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15"},{"lineNumber":174,"author":{"gitId":"Benson15912"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + AVAILABILITY_DESC_BOB","lastModifiedDate":"2024-03-12"},{"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":"Benson15912"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_AVAILABILITY_DESC,","lastModifiedDate":"2024-03-12"},{"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":"Benson15912"},"content":" + AVAILABILITY_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2024-03-12"},{"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":{"Benson15912":23,"-":155,"YowSiaoKang":8}},{"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":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24"},{"lineNumber":26,"author":{"gitId":"YowSiaoKang"},"content":"import seedu.address.model.person.AvailableAtDatePredicate;","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command);","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_edit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2018-03-26"},{"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":"YowSiaoKang"},"content":" public void parseCommand_findName() throws Exception {","lastModifiedDate":"2024-03-18"},{"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":"YowSiaoKang"},"content":" FindCommand.COMMAND_WORD + \" n/ \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"YowSiaoKang"},"content":" FindCommand expectedCommand \u003d new FindCommand(new NameContainsKeywordsPredicate(keywords));","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"YowSiaoKang"},"content":" assertEquals(expectedCommand, command);","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"YowSiaoKang"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"YowSiaoKang"},"content":" public void parseCommand_findAvail() throws Exception {","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"YowSiaoKang"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"01/01/2021\", \"02/01/2021\", \"03/01/2021\");","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"YowSiaoKang"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"YowSiaoKang"},"content":" FindCommand.COMMAND_WORD + \" a/ \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"YowSiaoKang"},"content":" FindCommand expectedCommand \u003d new FindCommand(new AvailableAtDatePredicate(keywords));","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"YowSiaoKang"},"content":" assertEquals(expectedCommand, command);","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"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_list() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","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_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"-":98,"YowSiaoKang":14}},{"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":"Benson15912"},"content":"import static seedu.address.logic.commands.CommandTestUtil.AVAILABILITY_DESC_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"Benson15912"},"content":"import static seedu.address.logic.commands.CommandTestUtil.AVAILABILITY_DESC_BOB;","lastModifiedDate":"2024-03-12"},{"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":"Benson15912"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_AVAILABILITY_DESC;","lastModifiedDate":"2024-03-12"},{"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":"Benson15912"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_AVAILABILITY_AMY;","lastModifiedDate":"2024-03-12"},{"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":"YowSiaoKang"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AVAIL;","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-12"},{"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":"Benson15912"},"content":"import seedu.address.model.person.Availability;","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-12"},{"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":"-"},"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":"Benson15912"},"content":" assertParseFailure(parser, \"1\" + INVALID_AVAILABILITY_DESC,","lastModifiedDate":"2024-03-12"},{"lineNumber":90,"author":{"gitId":"Benson15912"},"content":" Availability.MESSAGE_CONSTRAINTS); // invalid availability","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2018-09-22"},{"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":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"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":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_DESC_HUSBAND + TAG_EMPTY, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_EMPTY + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_EMPTY + TAG_DESC_FRIEND + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":102,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04"},{"lineNumber":103,"author":{"gitId":"Benson15912"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2024-03-12"},{"lineNumber":104,"author":{"gitId":"Benson15912"},"content":" + VALID_AVAILABILITY_AMY + VALID_PHONE_AMY,","lastModifiedDate":"2024-03-12"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":110,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":111,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2017-06-06"},{"lineNumber":112,"author":{"gitId":"Benson15912"},"content":" + EMAIL_DESC_AMY + AVAILABILITY_DESC_AMY + NAME_DESC_AMY + TAG_DESC_FRIEND;","lastModifiedDate":"2024-03-12"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":114,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-05-04"},{"lineNumber":115,"author":{"gitId":"Benson15912"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withAvailability(VALID_AVAILABILITY_AMY)","lastModifiedDate":"2024-03-12"},{"lineNumber":116,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":117,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"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_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":124,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":125,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":127,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-04"},{"lineNumber":128,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":129,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"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_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":136,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04"},{"lineNumber":137,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":138,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":139,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":140,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":143,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2017-05-04"},{"lineNumber":144,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":145,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":146,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":147,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":149,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04"},{"lineNumber":150,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":151,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":152,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":153,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":155,"author":{"gitId":"Benson15912"},"content":" // availability","lastModifiedDate":"2024-03-12"},{"lineNumber":156,"author":{"gitId":"Benson15912"},"content":" userInput \u003d targetIndex.getOneBased() + AVAILABILITY_DESC_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":157,"author":{"gitId":"Benson15912"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withAvailability(VALID_AVAILABILITY_AMY).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":158,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"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":"-"},"content":" // tags","lastModifiedDate":"2017-05-04"},{"lineNumber":162,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + TAG_DESC_FRIEND;","lastModifiedDate":"2017-05-25"},{"lineNumber":163,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":164,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"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":"","lastModifiedDate":"2017-05-04"},{"lineNumber":168,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":169,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":170,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14"},{"lineNumber":171,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-07-14"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":173,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14"},{"lineNumber":174,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":175,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2023-07-14"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":177,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":179,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14"},{"lineNumber":180,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2023-07-14"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":182,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":184,"author":{"gitId":"-"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":185,"author":{"gitId":"Benson15912"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY + AVAILABILITY_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2024-03-12"},{"lineNumber":186,"author":{"gitId":"Benson15912"},"content":" + TAG_DESC_FRIEND + PHONE_DESC_AMY + AVAILABILITY_DESC_AMY + EMAIL_DESC_AMY + TAG_DESC_FRIEND","lastModifiedDate":"2024-03-12"},{"lineNumber":187,"author":{"gitId":"Benson15912"},"content":" + PHONE_DESC_BOB + AVAILABILITY_DESC_BOB + EMAIL_DESC_BOB + TAG_DESC_HUSBAND;","lastModifiedDate":"2024-03-12"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":189,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":190,"author":{"gitId":"YowSiaoKang"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL));","lastModifiedDate":"2024-03-17"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":192,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14"},{"lineNumber":193,"author":{"gitId":"Benson15912"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + INVALID_AVAILABILITY_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2024-03-12"},{"lineNumber":194,"author":{"gitId":"Benson15912"},"content":" + INVALID_PHONE_DESC + INVALID_AVAILABILITY_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2024-03-12"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":196,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":197,"author":{"gitId":"YowSiaoKang"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL));","lastModifiedDate":"2024-03-17"},{"lineNumber":198,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":200,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":201,"author":{"gitId":"-"},"content":" public void parse_resetTags_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":202,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":203,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_EMPTY;","lastModifiedDate":"2017-05-25"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":205,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withTags().build();","lastModifiedDate":"2017-05-04"},{"lineNumber":206,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":208,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":209,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":210,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":211,"author":{"gitId":"YowSiaoKang"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":212,"author":{"gitId":"YowSiaoKang"},"content":" public void parse_resetAvailibilities_success() {","lastModifiedDate":"2024-03-18"},{"lineNumber":213,"author":{"gitId":"YowSiaoKang"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2024-03-18"},{"lineNumber":214,"author":{"gitId":"YowSiaoKang"},"content":" String userInput \u003d targetIndex.getOneBased() + \" \" + PREFIX_AVAIL;","lastModifiedDate":"2024-03-18"},{"lineNumber":215,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":216,"author":{"gitId":"YowSiaoKang"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withAvailability().build();","lastModifiedDate":"2024-03-18"},{"lineNumber":217,"author":{"gitId":"YowSiaoKang"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-18"},{"lineNumber":218,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":219,"author":{"gitId":"YowSiaoKang"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-18"},{"lineNumber":220,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":221,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04"}],"authorContributionMap":{"Benson15912":19,"-":188,"YowSiaoKang":14}},{"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":"YowSiaoKang"},"content":"import seedu.address.model.person.Availability;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"YowSiaoKang"},"content":"import seedu.address.model.person.AvailableAtDatePredicate;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class FindCommandParserTest {","lastModifiedDate":"2017-06-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private FindCommandParser parser \u003d new FindCommandParser();","lastModifiedDate":"2017-06-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2017-06-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \" \", String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-07-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"YowSiaoKang"},"content":" public void parse_prefixWithoutArgs_throwsParseException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"YowSiaoKang"},"content":" assertParseFailure(parser, \" n/\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"YowSiaoKang"},"content":" assertParseFailure(parser, \" a/\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"YowSiaoKang"},"content":" assertParseFailure(parser, \" n/ a/\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":33,"author":{"gitId":"YowSiaoKang"},"content":" public void parse_validNameArgs_returnsFindCommand() {","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"YowSiaoKang"},"content":" // single space between keywords","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"-"},"content":" FindCommand expectedFindCommand \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" new FindCommand(new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\")));","lastModifiedDate":"2017-06-12"},{"lineNumber":37,"author":{"gitId":"YowSiaoKang"},"content":" assertParseSuccess(parser, \" n/Alice Bob\", expectedFindCommand);","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"YowSiaoKang"},"content":" assertParseSuccess(parser, \" n/ \\n Alice \\n \\t Bob \\t\", expectedFindCommand);","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"YowSiaoKang"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"YowSiaoKang"},"content":" public void parse_invalidAvailArgs_throwsParseException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"YowSiaoKang"},"content":" assertParseFailure(parser, \" a/12/1/2024\",","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"YowSiaoKang"},"content":" String.format(Availability.MESSAGE_CONSTRAINTS));","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"YowSiaoKang"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"YowSiaoKang"},"content":" public void parse_validAvailabilityArgs_returnsFindCommand() {","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"YowSiaoKang"},"content":" try {","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"YowSiaoKang"},"content":" // single space between keywords","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"YowSiaoKang"},"content":" FindCommand expectedFindCommand \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"YowSiaoKang"},"content":" new FindCommand(new AvailableAtDatePredicate(Arrays.asList(\"01/01/2024\", \"12/12/2024\")));","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"YowSiaoKang"},"content":" assertParseSuccess(parser, \" a/01/01/2024 12/12/2024\", expectedFindCommand);","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"YowSiaoKang"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"YowSiaoKang"},"content":" assertParseSuccess(parser, \" a/ \\n 01/01/2024 \\n \\t 12/12/2024 \\t\", expectedFindCommand);","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"YowSiaoKang"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"YowSiaoKang"},"content":" e.printStackTrace();","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-27"}],"authorContributionMap":{"-":31,"YowSiaoKang":33}},{"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":"Benson15912"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_AVAILABILITY_BOB;","lastModifiedDate":"2024-03-12"},{"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":"-"},"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":"YowSiaoKang"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAvailabilities(VALID_AVAILABILITY_BOB)","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"Benson15912"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-03-12"},{"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":"YowSiaoKang"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAvailabilities(VALID_AVAILABILITY_BOB)","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"Benson15912"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-03-12"},{"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":"-"},"content":"}","lastModifiedDate":"2016-12-24"}],"authorContributionMap":{"Benson15912":3,"-":103,"YowSiaoKang":2}},{"path":"src/test/java/seedu/address/model/person/AvailabilityTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"YowSiaoKang"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"YowSiaoKang"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"YowSiaoKang"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"YowSiaoKang"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"YowSiaoKang"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"YowSiaoKang"},"content":"public class AvailabilityTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"YowSiaoKang"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"YowSiaoKang"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"YowSiaoKang"},"content":" assertThrows(NullPointerException.class, () -\u003e new Availability(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"YowSiaoKang"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"YowSiaoKang"},"content":" public void constructor_invalidAvailability_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"YowSiaoKang"},"content":" String invalidAvailability \u003d \"\";","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"YowSiaoKang"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Availability(invalidAvailability));","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"YowSiaoKang"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"YowSiaoKang"},"content":" public void isValidAvailability() {","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"YowSiaoKang"},"content":" // null availability","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"YowSiaoKang"},"content":" assertThrows(NullPointerException.class, () -\u003e Availability.isValidAvailability(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"YowSiaoKang"},"content":" // invalid availability","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"YowSiaoKang"},"content":" assertFalse(Availability.isValidAvailability(\"\")); // empty string","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"YowSiaoKang"},"content":" assertFalse(Availability.isValidAvailability(\" \")); // spaces only","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"YowSiaoKang"},"content":" assertFalse(Availability.isValidAvailability(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"YowSiaoKang"},"content":" assertFalse(Availability.isValidAvailability(\"peter*\")); // contains non-alphanumeric characters","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"YowSiaoKang"},"content":" assertFalse(Availability.isValidAvailability(\"Available\")); // alphabets only","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"YowSiaoKang"},"content":" // valid availability","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"YowSiaoKang"},"content":" assertTrue(Availability.isValidAvailability(\"01/01/2024\")); // date format","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"YowSiaoKang"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"YowSiaoKang"},"content":" public void equals() {","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"YowSiaoKang"},"content":" Availability availability \u003d new Availability(\"01/01/2024\");","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"YowSiaoKang"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"YowSiaoKang"},"content":" assertTrue(availability.equals(new Availability(\"01/01/2024\")));","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"YowSiaoKang"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"YowSiaoKang"},"content":" assertTrue(availability.equals(availability));","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"YowSiaoKang"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"YowSiaoKang"},"content":" assertFalse(availability.equals(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"YowSiaoKang"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"YowSiaoKang"},"content":" assertFalse(availability.equals(5.0f));","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"YowSiaoKang"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"YowSiaoKang"},"content":" assertFalse(availability.equals(new Availability(\"12/12/2024\")));","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"YowSiaoKang"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"YowSiaoKang":56}},{"path":"src/test/java/seedu/address/model/person/AvailableAtDatePredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"YowSiaoKang"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"YowSiaoKang"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"YowSiaoKang"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"YowSiaoKang"},"content":"import java.util.List;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"YowSiaoKang"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"YowSiaoKang"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"YowSiaoKang"},"content":"public class AvailableAtDatePredicateTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"YowSiaoKang"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"YowSiaoKang"},"content":" public void equals() throws Exception {","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"YowSiaoKang"},"content":" List\u003cString\u003e firstPredicateKeywordList \u003d List.of(\"01/01/2024\");","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"YowSiaoKang"},"content":" List\u003cString\u003e secondPredicateKeywordList \u003d List.of(\"12/12/2024\", \"01/01/2024\");","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"YowSiaoKang"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"YowSiaoKang"},"content":" AvailableAtDatePredicate firstPredicate \u003d new AvailableAtDatePredicate(firstPredicateKeywordList);","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"YowSiaoKang"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"YowSiaoKang"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"YowSiaoKang"},"content":" AvailableAtDatePredicate firstPredicateCopy \u003d new AvailableAtDatePredicate(firstPredicateKeywordList);","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"YowSiaoKang"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"YowSiaoKang"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"YowSiaoKang"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"YowSiaoKang"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"YowSiaoKang"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"YowSiaoKang"},"content":" // different dates -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"YowSiaoKang"},"content":" AvailableAtDatePredicate secondPredicate \u003d new AvailableAtDatePredicate(secondPredicateKeywordList);","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"YowSiaoKang"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"YowSiaoKang"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"YowSiaoKang"},"content":" public void test_containsAvailableAtDate_returnsTrue() throws Exception {","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"YowSiaoKang"},"content":" // One date","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"YowSiaoKang"},"content":" AvailableAtDatePredicate predicate \u003d new AvailableAtDatePredicate(List.of(\"01/01/2024\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"YowSiaoKang"},"content":" assertTrue(predicate.test(new PersonBuilder().withAvailabilities(\"01/01/2024\").build()));","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"YowSiaoKang"},"content":" // Multiple dates","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"YowSiaoKang"},"content":" predicate \u003d new AvailableAtDatePredicate(List.of(\"12/12/2024\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"YowSiaoKang"},"content":" assertTrue(predicate.test(new PersonBuilder().withAvailabilities(\"01/01/2024\", \"12/12/2024\").build()));","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"YowSiaoKang"},"content":" // Only one matching date","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"YowSiaoKang"},"content":" predicate \u003d new AvailableAtDatePredicate(List.of(\"12/12/2024\", \"01/01/2024\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"YowSiaoKang"},"content":" assertTrue(predicate.test(new PersonBuilder().withAvailabilities(\"01/01/2024\").build()));","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"YowSiaoKang"},"content":" predicate \u003d new AvailableAtDatePredicate(List.of(\"01/01/2024\", \"12/12/2024\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"YowSiaoKang"},"content":" assertTrue(predicate.test(new PersonBuilder().withAvailabilities(\"12/12/2024\").build()));","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"YowSiaoKang"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"YowSiaoKang"},"content":" public void test_doesNotContainAvailableAtDate_returnsFalse() throws Exception {","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"YowSiaoKang"},"content":" // One date","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"YowSiaoKang"},"content":" AvailableAtDatePredicate predicate \u003d new AvailableAtDatePredicate(List.of(\"01/01/2024\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"YowSiaoKang"},"content":" assertFalse(predicate.test(new PersonBuilder().withAvailabilities(\"12/12/2024\").build()));","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"YowSiaoKang"},"content":" // Multiple dates","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"YowSiaoKang"},"content":" predicate \u003d new AvailableAtDatePredicate(List.of(\"01/01/2024\", \"12/12/2024\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"YowSiaoKang"},"content":" assertFalse(predicate.test(new PersonBuilder().withAvailabilities(\"02/01/2024\").build()));","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"YowSiaoKang"},"content":" // Only one matching date","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"YowSiaoKang"},"content":" predicate \u003d new AvailableAtDatePredicate(List.of(\"01/01/2024\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"YowSiaoKang"},"content":" assertFalse(predicate.test(new PersonBuilder().withAvailabilities(\"12/12/2024\", \"03/01/2024\").build()));","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"YowSiaoKang"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"YowSiaoKang"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"YowSiaoKang"},"content":" public void toStringMethod() throws Exception {","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"YowSiaoKang"},"content":" AvailableAtDatePredicate predicate \u003d new AvailableAtDatePredicate(List.of(\"01/01/2024\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"YowSiaoKang"},"content":" String expected \u003d AvailableAtDatePredicate.class.getCanonicalName()","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"YowSiaoKang"},"content":" + \"{keywords\u003d\" + List.of(\"01/01/2024\") + \"}\";","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"YowSiaoKang"},"content":" assertTrue(predicate.toString().equals(expected));","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"YowSiaoKang"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"YowSiaoKang":77}},{"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":"-"},"content":" // Keywords match phone, email and address, but does not match name","lastModifiedDate":"2017-06-12"},{"lineNumber":72,"author":{"gitId":"YowSiaoKang"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"12345\", \"alice@email.com\", \"12/12/2024\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").withPhone(\"12345\")","lastModifiedDate":"2017-06-12"},{"lineNumber":74,"author":{"gitId":"YowSiaoKang"},"content":" .withEmail(\"alice@email.com\").withAvailabilities(\"12/12/2024\").build()));","lastModifiedDate":"2024-03-17"},{"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":{"-":83,"YowSiaoKang":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":"Benson15912"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_AVAILABILITY_BOB;","lastModifiedDate":"2024-03-12"},{"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":"-"},"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":"YowSiaoKang"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getAvailabilities().remove(0));","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18"},{"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":"YowSiaoKang"},"content":" .withAvailabilities(VALID_AVAILABILITY_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-03-17"},{"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":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":86,"author":{"gitId":"YowSiaoKang"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAvailabilities(VALID_AVAILABILITY_BOB).build();","lastModifiedDate":"2024-03-17"},{"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":"YowSiaoKang"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", availabilities\u003d\" + ALICE.getAvailabilities() + \", tags\u003d\"","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"Benson15912"},"content":" + ALICE.getTags() + \"}\";","lastModifiedDate":"2024-03-12"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"Benson15912":2,"-":95,"YowSiaoKang":4}},{"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":"Benson15912"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_AVAILABILITY_BOB;","lastModifiedDate":"2024-03-12"},{"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":"YowSiaoKang"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAvailabilities(VALID_AVAILABILITY_BOB)","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"Benson15912"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-03-12"},{"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":"YowSiaoKang"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAvailabilities(VALID_AVAILABILITY_BOB)","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"Benson15912"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-03-12"},{"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":{"Benson15912":3,"-":170,"YowSiaoKang":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 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":"Benson15912"},"content":"import seedu.address.model.person.Availability;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-12"},{"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":"Benson15912"},"content":" private static final String INVALID_AVAILABILITY \u003d \" \";","lastModifiedDate":"2024-03-12"},{"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":"YowSiaoKang"},"content":" private static final List\u003cJsonAdaptedAvailability\u003e VALID_AVAILABILITY \u003d BENSON.getAvailabilities().stream()","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"YowSiaoKang"},"content":" .map(JsonAdaptedAvailability::new)","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"YowSiaoKang"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2024-03-17"},{"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":"Benson15912"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_AVAILABILITY, VALID_TAGS);","lastModifiedDate":"2024-03-12"},{"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":"Benson15912"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"Benson15912"},"content":" VALID_AVAILABILITY, VALID_TAGS);","lastModifiedDate":"2024-03-12"},{"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":"Benson15912"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_AVAILABILITY, VALID_TAGS);","lastModifiedDate":"2024-03-12"},{"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":"Benson15912"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL, VALID_AVAILABILITY, VALID_TAGS);","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","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_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"Benson15912"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_AVAILABILITY, VALID_TAGS);","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.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_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"Benson15912"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null, VALID_AVAILABILITY, VALID_TAGS);","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"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":"Benson15912"},"content":" public void toModelType_invalidAvailability_throwsIllegalValueException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"YowSiaoKang"},"content":" List\u003cJsonAdaptedAvailability\u003e invalidAvailabilities \u003d new ArrayList\u003c\u003e(VALID_AVAILABILITY);","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"YowSiaoKang"},"content":" invalidAvailabilities.add(new JsonAdaptedAvailability(INVALID_AVAILABILITY));","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"YowSiaoKang"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, invalidAvailabilities, VALID_TAGS);","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"Benson15912"},"content":" String expectedMessage \u003d Availability.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-12"},{"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_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"Benson15912"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_AVAILABILITY, invalidTags);","lastModifiedDate":"2024-03-12"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, 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":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"Benson15912":12,"-":90,"YowSiaoKang":6}},{"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":"Benson15912"},"content":"import seedu.address.model.person.Availability;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-12"},{"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":"-"},"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":"YowSiaoKang"},"content":" descriptor.setAvailabilities(person.getAvailabilities());","lastModifiedDate":"2024-03-17"},{"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":"YowSiaoKang"},"content":" public EditPersonDescriptorBuilder withAvailability(String... availablities) {","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"YowSiaoKang"},"content":" Set\u003cAvailability\u003e availabilitySet \u003d Stream.of(availablities).map(Availability::new).collect(Collectors.toSet());","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"YowSiaoKang"},"content":" descriptor.setAvailabilities(availabilitySet);","lastModifiedDate":"2024-03-17"},{"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":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code EditPersonDescriptor}","lastModifiedDate":"2017-07-26"},{"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":"-"},"content":" public EditPersonDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15"},{"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":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05"},{"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":{"Benson15912":1,"-":83,"YowSiaoKang":4}},{"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":"Benson15912"},"content":"import seedu.address.model.person.Availability;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-12"},{"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":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03"},{"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":"YowSiaoKang"},"content":" public static final String DEFAULT_AVAILABILITY \u003d \"01/01/2024\";","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":27,"author":{"gitId":"YowSiaoKang"},"content":" private Set\u003cAvailability\u003e availabilities;","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20"},{"lineNumber":37,"author":{"gitId":"YowSiaoKang"},"content":" availabilities \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20"},{"lineNumber":48,"author":{"gitId":"YowSiaoKang"},"content":" availabilities \u003d new HashSet\u003c\u003e(personToCopy.getAvailabilities());","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":61,"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":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String ... tags) {","lastModifiedDate":"2017-08-15"},{"lineNumber":64,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2017-12-20"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":68,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":71,"author":{"gitId":"YowSiaoKang"},"content":" public PersonBuilder withAvailabilities(String... availabilities) {","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"YowSiaoKang"},"content":" this.availabilities \u003d SampleDataUtil.getAvailabilitySet(availabilities);","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":80,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05"},{"lineNumber":93,"author":{"gitId":"YowSiaoKang"},"content":" return new Person(name, phone, email, availabilities, tags);","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":96,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03"}],"authorContributionMap":{"Benson15912":1,"-":88,"YowSiaoKang":7}},{"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":"Benson15912"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AVAIL;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"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":"YowSiaoKang"},"content":"import seedu.address.model.person.Availability;","lastModifiedDate":"2024-03-17"},{"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":"YowSiaoKang"},"content":" person.getAvailabilities().stream().forEach(","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"YowSiaoKang"},"content":" s -\u003e sb.append(PREFIX_AVAIL + s.toString() + \" \")","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"YowSiaoKang"},"content":" );","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"-"},"content":" person.getTags().stream().forEach(","lastModifiedDate":"2017-05-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2017-05-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09"},{"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":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26"},{"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":"YowSiaoKang"},"content":" if (descriptor.getAvailabilities().isPresent()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"YowSiaoKang"},"content":" Set\u003cAvailability\u003e availabilities \u003d descriptor.getAvailabilities().get();","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"YowSiaoKang"},"content":" if (availabilities.isEmpty()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"YowSiaoKang"},"content":" sb.append(PREFIX_AVAIL).append(\" \");","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"YowSiaoKang"},"content":" } else {","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"YowSiaoKang"},"content":" availabilities.forEach(s -\u003e sb.append(PREFIX_AVAIL).append(s).append(\" \"));","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"YowSiaoKang"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" sb.append(PREFIX_TAG);","lastModifiedDate":"2018-03-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05"}],"authorContributionMap":{"Benson15912":1,"-":59,"YowSiaoKang":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":"Benson15912"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_AVAILABILITY_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"Benson15912"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_AVAILABILITY_BOB;","lastModifiedDate":"2024-03-12"},{"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":"YowSiaoKang"},"content":" .withAvailabilities(\"14/02/2024\").withEmail(\"alice@example.com\")","lastModifiedDate":"2024-03-17"},{"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":"YowSiaoKang"},"content":" .withAvailabilities(\"20/03/2024\", \"03/05/2024\")","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"-"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2017-04-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" .withTags(\"owesMoney\", \"friends\").build();","lastModifiedDate":"2016-09-13"},{"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":"YowSiaoKang"},"content":" .withEmail(\"heinz@example.com\").withAvailabilities(\"12/12/2024\").build();","lastModifiedDate":"2024-03-17"},{"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":"YowSiaoKang"},"content":" .withEmail(\"cornelia@example.com\").withAvailabilities(\"01/06/2024\", \"31/06/2024\")","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"YowSiaoKang"},"content":" .withTags(\"friends\").build();","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2018-01-10"},{"lineNumber":40,"author":{"gitId":"YowSiaoKang"},"content":" .withEmail(\"werner@example.com\").withAvailabilities(\"25/05/2024\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2018-01-10"},{"lineNumber":42,"author":{"gitId":"YowSiaoKang"},"content":" .withEmail(\"lydia@example.com\").withAvailabilities(\"02/05/2024\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2018-01-10"},{"lineNumber":44,"author":{"gitId":"YowSiaoKang"},"content":" .withEmail(\"anna@example.com\").withAvailabilities(\"04/06/2024\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2018-01-10"},{"lineNumber":48,"author":{"gitId":"YowSiaoKang"},"content":" .withEmail(\"stefan@example.com\").withAvailabilities(\"10/08/2024\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2018-01-10"},{"lineNumber":50,"author":{"gitId":"YowSiaoKang"},"content":" .withEmail(\"hans@example.com\").withAvailabilities(\"03/03/2024\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2018-01-10"},{"lineNumber":54,"author":{"gitId":"YowSiaoKang"},"content":" .withEmail(VALID_EMAIL_AMY).withAvailabilities(VALID_AVAILABILITY_AMY).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2018-01-10"},{"lineNumber":56,"author":{"gitId":"YowSiaoKang"},"content":" .withEmail(VALID_EMAIL_BOB).withAvailabilities(VALID_AVAILABILITY_BOB)","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"Benson15912"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10"},{"lineNumber":69,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04"},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13"}],"authorContributionMap":{"Benson15912":3,"-":62,"YowSiaoKang":12}}] diff --git a/AY2324S2-CS2103T-F10-4_tp_master/commits.json b/AY2324S2-CS2103T-F10-4_tp_master/commits.json index 5e09ff68..9fe0b30b 100644 --- a/AY2324S2-CS2103T-F10-4_tp_master/commits.json +++ b/AY2324S2-CS2103T-F10-4_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"tayziyi":[{"date":"2024-03-07","commitResults":[{"hash":"7f3f8d5c4cff00c538217599d2d941bb5d1e175a","isMergeCommit":true,"messageTitle":"Merge pull request #15 from SimKianSeng/master","messageBody":"Update AboutUs, portfolio page","fileTypesAndContributionMap":{}},{"hash":"1c1c4d138810bfe3714910169983fb9f155c9a2c","isMergeCommit":false,"messageTitle":"Fix image location","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"22ac5c76c2188c5d84653f598abbcf8b4cb858d2","isMergeCommit":true,"messageTitle":"Merge pull request #18 from SimKianSeng/master","messageBody":"Move image location","fileTypesAndContributionMap":{}}]},{"date":"2024-03-08","commitResults":[{"hash":"90bbdef0c1f88ff821cb28fed4871f49c38cbede","isMergeCommit":false,"messageTitle":"Add responsibilities","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-09","commitResults":[{"hash":"e978d08d99fdcd56e02d70d033e949daf7773902","isMergeCommit":true,"messageTitle":"Merge pull request #28 from SimKianSeng/branch-dg","messageBody":"Update use cases and non-functional requirements","fileTypesAndContributionMap":{}}]},{"date":"2024-03-14","commitResults":[{"hash":"a810cb3ee1746b694a8617a4b1fb492a71e0266b","isMergeCommit":false,"messageTitle":"Update FindCommand and Refactor messages","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":12}}}]},{"date":"2024-03-15","commitResults":[{"hash":"0034b59f78607bee5fec011866e995f9b23ef1fe","isMergeCommit":false,"messageTitle":"Fix checkstyle error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2}}}]},{"date":"2024-03-21","commitResults":[{"hash":"43f24f4a3f025c0973629e9ce1efed296d4192f4","isMergeCommit":false,"messageTitle":"Add FindSequenceDiagram","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":70,"deletions":0}}},{"hash":"d20f3151d6a0c1e1387d8edb8d10e645b7a632b2","isMergeCommit":true,"messageTitle":"Merge pull request #36 from YowSiaoKang/update-DG-UML","messageBody":"Update Model and Storage class diagrams","fileTypesAndContributionMap":{}}]}],"Benson15912":[{"date":"2024-03-07","commitResults":[{"hash":"60c2e8333ced2901609cbb106736262dfe618b1b","isMergeCommit":false,"messageTitle":"Update image name and md file name","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-12","commitResults":[{"hash":"29d8e8782e022678b6b09226603411b9d81b43d0","isMergeCommit":false,"messageTitle":"Add availability field to person class and refactor code","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":71,"deletions":93},"test-code":{"insertions":125,"deletions":156}}},{"hash":"d84fce8369fc6672b48659ff055e4f76e4d5e889","isMergeCommit":false,"messageTitle":"Add availability class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":59,"deletions":0}}},{"hash":"63fb27ce9b4a0e6e9731e2f6e2617e0385a7ce24","isMergeCommit":false,"messageTitle":"Fix Checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":59,"deletions":14},"test-code":{"insertions":62,"deletions":25}}}]},{"date":"2024-03-14","commitResults":[{"hash":"b4f87195e2991cec7357cae486fea23c38faf036","isMergeCommit":true,"messageTitle":"Merge pull request #30 from Benson15912/Add-Command","messageBody":"Add command and refactored address to availability","fileTypesAndContributionMap":{}}]},{"date":"2024-03-23","commitResults":[{"hash":"c524edb8bc9bd0d93c69a43421456fd6a6fa8cce","isMergeCommit":true,"messageTitle":"Merge pull request #41 from xuwen-ho/branch-add-alt-to-uml","messageBody":"Add alt boxes to architecture diagram","fileTypesAndContributionMap":{}}]}],"SimKianSeng":[{"date":"2024-03-06","commitResults":[{"hash":"4398bdc84ea6b48391c697125dc98cd0dc1820ec","isMergeCommit":true,"messageTitle":"Merge pull request #11 from YowSiaoKang/master","messageBody":"Update ReadME and project website","fileTypesAndContributionMap":{}},{"hash":"89ede67fb778b8851cce778ac94ea3633c9b0347","isMergeCommit":false,"messageTitle":"Update AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":140,"deletions":46}}},{"hash":"88b99166c83e0beb260ccd338989e4c3a00f3f30","isMergeCommit":false,"messageTitle":"Update AboutUs, portfolio page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":46,"deletions":57}}}]},{"date":"2024-03-07","commitResults":[{"hash":"a79dac81ea1c3393edbda1ffdaf456644695b264","isMergeCommit":true,"messageTitle":"Merge pull request #17 from Benson15912/benson-readme","messageBody":"Move image location","fileTypesAndContributionMap":{}},{"hash":"7b8b7782d8da06f8dd4d84cfc909504d14e225ed","isMergeCommit":false,"messageTitle":"Move image location","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-09","commitResults":[{"hash":"7d0f643a6f49582936a3709a9e9204dbc6bcb0da","isMergeCommit":false,"messageTitle":"Update use cases and non-functional requirements","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":8}}},{"hash":"5e2c0d4d73924d2b563d41831770452d951c70b1","isMergeCommit":true,"messageTitle":"Merge pull request #26 from tayziyi/add-descr","messageBody":"Add responsibilities","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"4aa29754bb097b291a1ed4e0bab92619327b1302","isMergeCommit":false,"messageTitle":"Add command confirmation","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":27,"deletions":0}}},{"hash":"216f93e9f4e82b905e69f13b67068c809144dc1e","isMergeCommit":false,"messageTitle":"Add command confirmation","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":68,"deletions":23},"test-code":{"insertions":9,"deletions":9}}}]},{"date":"2024-03-21","commitResults":[{"hash":"69f197189e1afffcaf100f0a783821d2713e00d9","isMergeCommit":false,"messageTitle":"Update JUnit tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":10},"test-code":{"insertions":26,"deletions":26}}},{"hash":"0e8d29fbc6375e2b7123fff7683b2b0ed6b0df21","isMergeCommit":false,"messageTitle":"Add unit test for Confirmation.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":32,"deletions":0}}},{"hash":"cca3a66399c5a90170e0f03fd5e65cb70b23ff53","isMergeCommit":false,"messageTitle":"Update JavaDocs for Confirmation.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":0}}},{"hash":"4a5b803bdb9cdf65f4b7298635b38b3f76fc8799","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-F10-4/tp into branch-confirmation","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"1972eb3dd1c60a47e0746c800a6dbc4cd182f801","isMergeCommit":false,"messageTitle":"Update code quality","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":10},"test-code":{"insertions":11,"deletions":7}}},{"hash":"7a8e1da32a3eda18ff4e360e5fba8403b2d12833","isMergeCommit":false,"messageTitle":"Update tests coverage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":1},"test-code":{"insertions":38,"deletions":13}}},{"hash":"da35736eefb55aa9ada398d5924f60a42a0d1ce6","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-confirmation\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ac4c72276f883d4457ecab8e995a6a46532d2a21","isMergeCommit":true,"messageTitle":"Merge pull request #39 from tayziyi/branch-add-puml-diagram","messageBody":"Add FindSequenceDiagram","fileTypesAndContributionMap":{}},{"hash":"ba4b8392031fe4e53acad7b80d6554391c524a38","isMergeCommit":true,"messageTitle":"Merge pull request #37 from SimKianSeng/branch-confirmation","messageBody":"Branch confirmation","tags":["v1.2"],"fileTypesAndContributionMap":{}},{"hash":"dce8e7ecf84b7dbd9e9b3218b75e7a742c0c3fbe","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-F10-4/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"0ece8ad09cf192f3fa7b9dea86d99a0d8b60db3c","isMergeCommit":false,"messageTitle":"Update UML diagrams to represent confirmation","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":13,"deletions":7}}}]},{"date":"2024-03-22","commitResults":[{"hash":"488390807c793b7cd5311f2651bf083278c825fa","isMergeCommit":false,"messageTitle":"Update minor diagram style issue","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}}]}],"xuwen-ho":[{"date":"2024-03-06","commitResults":[{"hash":"4cbfc70d87b0205ba60a752874233aa68e3c28f9","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":58,"deletions":33}}}]},{"date":"2024-03-07","commitResults":[{"hash":"9a507281a27aa5126bb91d04a2daa191290071d6","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"a4fef3435d0a4fe5cfd4aec9c80c19768057f794","isMergeCommit":true,"messageTitle":"Merge pull request #23 from xuwen-ho/master","messageBody":"Updated AboutUs page and Image","fileTypesAndContributionMap":{}},{"hash":"b2f2db1d0252481b7de76079aecbcc2971411e3c","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-17","commitResults":[{"hash":"53cead19a90deb1d127158a5a143ad4f5dd44580","isMergeCommit":false,"messageTitle":"Change person card to list information horizontally.","messageBody":"Initially, details will be listed vertically, with name and then phone, email and availability below\n\nHowever, this wasted the large horizontal space present on computers\n\nLets list the details in horizontal columns so that it is easier to read\n","fileTypesAndContributionMap":{"functional-code":{"insertions":24,"deletions":16}}},{"hash":"fa1fd20c458bac0b7af645e9dc5e252a3adda028","isMergeCommit":false,"messageTitle":"Change colour scheme of App","messageBody":"Previously, app had a grey colour scheme\n\nThis was pretty boring for users\n\nLets mke our colour scheme more colorful sousers enjoy using our app\n","fileTypesAndContributionMap":{"functional-code":{"insertions":37,"deletions":36}}},{"hash":"6b6d6654a3e9063ca15c37c7705a99ae1b196abd","isMergeCommit":false,"messageTitle":"Fix the arrangement of the volunteer details","messageBody":"Previously, the placement of email and address was dependent on the length of phone (fixed distance from phone)\n\nThis made the information disorganised if phone had different length\n\nLets put details in columns so it is more organised\n","fileTypesAndContributionMap":{"functional-code":{"insertions":23,"deletions":11}}},{"hash":"320e1bff1a2838ddc68cf0510e200cec0b5d4529","isMergeCommit":false,"messageTitle":"Fixed EOF error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-18","commitResults":[{"hash":"c1223c697a1ef0273966ec7cd29b7fce8ef9846d","isMergeCommit":true,"messageTitle":"Merge pull request #34 from YowSiaoKang/filter-by-availability-function","messageBody":"Filter by availability function","fileTypesAndContributionMap":{}}]},{"date":"2024-03-19","commitResults":[{"hash":"f8a914a2775408571fafed42cc4ff37fa9314431","isMergeCommit":false,"messageTitle":"Change Xu Wen\u0027s role in About Us","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-22","commitResults":[{"hash":"89a258a44c2152eb2c9cb35c566ae2c278df4c1b","isMergeCommit":false,"messageTitle":"Add alt boxes to architecture diagram","messageBody":"Previously, architecture diagram did not reflect new confirmation feature for deletion\n","fileTypesAndContributionMap":{"docs":{"insertions":28,"deletions":19}}}]}],"YowSiaoKang":[{"date":"2024-03-06","commitResults":[{"hash":"d69abd35dcd59f35e423dba7cf1d35aa79884c39","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":15,"deletions":9}}},{"hash":"a122e5df1b812c26497b805713ea2cbf78027fab","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}}]},{"date":"2024-03-07","commitResults":[{"hash":"b667764579bc61758767fe139c48a17a5131ae53","isMergeCommit":true,"messageTitle":"Merge pull request #20 from tayziyi/master","messageBody":"Fix image location","fileTypesAndContributionMap":{}},{"hash":"e275d862f24d6703df3688bf1e298ddcbffeb206","isMergeCommit":false,"messageTitle":"Update AboutUs and image location","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":11}}},{"hash":"c1377e61a37ef31a833d3232148470e8ffbec499","isMergeCommit":true,"messageTitle":"Merge pull request #22 from YowSiaoKang/upload-photo","messageBody":"Upload photo","fileTypesAndContributionMap":{}}]},{"date":"2024-03-15","commitResults":[{"hash":"d71599f41e7bd6f3f0e3590fd9d9636597aabf6f","isMergeCommit":false,"messageTitle":"Remove traces of address","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":8}}}]},{"date":"2024-03-17","commitResults":[{"hash":"a3bc834090e102da1abc0fdef5f8fd66c816e980","isMergeCommit":false,"messageTitle":"implement date for availability","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":143,"deletions":56},"test-code":{"insertions":31,"deletions":15}}},{"hash":"8390a7dd3e143a223388e05d40d20975d768623b","isMergeCommit":false,"messageTitle":"Update edit command to parse optional availabilities","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":33,"deletions":55}}}]},{"date":"2024-03-18","commitResults":[{"hash":"7a12e0c1ffa8bae7520bcc886da4b14e700450a1","isMergeCommit":false,"messageTitle":"Add function to find person by available dates","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":116,"deletions":12}}},{"hash":"113c317945e2fdfe20d93ba6a0c0f84228166ceb","isMergeCommit":false,"messageTitle":"Update testing for find command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":6},"test-code":{"insertions":43,"deletions":9}}},{"hash":"71d56729e66d9b9f68fcd68334b53f7e97496ca0","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":32,"deletions":28},"test-code":{"insertions":2,"deletions":5}}},{"hash":"63524e3664d0d50325c0529bb6eda866f764cc82","isMergeCommit":true,"messageTitle":"Merge pull request #31 from tayziyi/branch-find","messageBody":"Update FindCommand and Refactor messages","fileTypesAndContributionMap":{}},{"hash":"6cb959c4ebf649c1f70200111eb32232181da4dc","isMergeCommit":true,"messageTitle":"Merge pull request #33 from xuwen-ho/change-listing-format","messageBody":"Change listing format","fileTypesAndContributionMap":{}},{"hash":"32314d338894d7061503eced1da2c052edbe93c0","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into filter-by-availability-function","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"03736506bafa84967b3e92341d208185a86503b5","isMergeCommit":false,"messageTitle":"Edit usage message for add command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4}}},{"hash":"4f31dea7085e47a664203df08f095744795cd0a9","isMergeCommit":false,"messageTitle":"Add testcases related to availability","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":6},"test-code":{"insertions":178,"deletions":0}}},{"hash":"cdfac86cc1fc1490de378fa30466b257aafaab51","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-20","commitResults":[{"hash":"1357effb03dfa207904544a943715a75f4954178","isMergeCommit":false,"messageTitle":"Update Model and Storage class diagrams","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":4}}},{"hash":"2693c238cde2d907a77891a2ad11b6d807734f6e","isMergeCommit":true,"messageTitle":"Merge pull request #35 from xuwen-ho/change-aboutus-role","messageBody":"Change Xu Wen\u0027s role in About Us","fileTypesAndContributionMap":{}}]},{"date":"2024-03-22","commitResults":[{"hash":"6071a6c6256b9e6b45f932171cf9638f1abfdeca","isMergeCommit":true,"messageTitle":"Merge pull request #40 from SimKianSeng/branch-update-diagrams","messageBody":"Branch update diagrams","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"tayziyi":{"docs":72,"functional-code":7,"test-code":0},"Benson15912":{"docs":2,"functional-code":85,"test-code":77},"SimKianSeng":{"docs":158,"functional-code":91,"test-code":98},"xuwen-ho":{"docs":64,"functional-code":60,"test-code":0},"YowSiaoKang":{"docs":30,"functional-code":270,"test-code":278}},"authorContributionVariance":{"tayziyi":173.17332,"Benson15912":14201.266,"SimKianSeng":4580.698,"xuwen-ho":994.33905,"YowSiaoKang":10007.233},"authorDisplayNameMap":{"tayziyi":"CS2103T-F10-4 TAY ..I YI","Benson15912":"CS2103T-F10-4 BENS..KIAT","SimKianSeng":"CS2103T-F10-4 SIM ..SENG","xuwen-ho":"CS2103T-F10-4 HO X.. WEN","YowSiaoKang":"CS2103T-F10-4 YOW ..KANG"}} +{"authorDailyContributionsMap":{"tayziyi":[{"date":"2024-03-07","commitResults":[{"hash":"7f3f8d5c4cff00c538217599d2d941bb5d1e175a","isMergeCommit":true,"messageTitle":"Merge pull request #15 from SimKianSeng/master","messageBody":"Update AboutUs, portfolio page","fileTypesAndContributionMap":{}},{"hash":"1c1c4d138810bfe3714910169983fb9f155c9a2c","isMergeCommit":false,"messageTitle":"Fix image location","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"22ac5c76c2188c5d84653f598abbcf8b4cb858d2","isMergeCommit":true,"messageTitle":"Merge pull request #18 from SimKianSeng/master","messageBody":"Move image location","fileTypesAndContributionMap":{}}]},{"date":"2024-03-08","commitResults":[{"hash":"90bbdef0c1f88ff821cb28fed4871f49c38cbede","isMergeCommit":false,"messageTitle":"Add responsibilities","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-09","commitResults":[{"hash":"e978d08d99fdcd56e02d70d033e949daf7773902","isMergeCommit":true,"messageTitle":"Merge pull request #28 from SimKianSeng/branch-dg","messageBody":"Update use cases and non-functional requirements","fileTypesAndContributionMap":{}}]},{"date":"2024-03-14","commitResults":[{"hash":"a810cb3ee1746b694a8617a4b1fb492a71e0266b","isMergeCommit":false,"messageTitle":"Update FindCommand and Refactor messages","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":12}}}]},{"date":"2024-03-15","commitResults":[{"hash":"0034b59f78607bee5fec011866e995f9b23ef1fe","isMergeCommit":false,"messageTitle":"Fix checkstyle error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2}}}]},{"date":"2024-03-21","commitResults":[{"hash":"43f24f4a3f025c0973629e9ce1efed296d4192f4","isMergeCommit":false,"messageTitle":"Add FindSequenceDiagram","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":70,"deletions":0}}},{"hash":"d20f3151d6a0c1e1387d8edb8d10e645b7a632b2","isMergeCommit":true,"messageTitle":"Merge pull request #36 from YowSiaoKang/update-DG-UML","messageBody":"Update Model and Storage class diagrams","fileTypesAndContributionMap":{}}]}],"Benson15912":[{"date":"2024-03-07","commitResults":[{"hash":"60c2e8333ced2901609cbb106736262dfe618b1b","isMergeCommit":false,"messageTitle":"Update image name and md file name","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-12","commitResults":[{"hash":"29d8e8782e022678b6b09226603411b9d81b43d0","isMergeCommit":false,"messageTitle":"Add availability field to person class and refactor code","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":71,"deletions":93},"test-code":{"insertions":125,"deletions":156}}},{"hash":"d84fce8369fc6672b48659ff055e4f76e4d5e889","isMergeCommit":false,"messageTitle":"Add availability class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":59,"deletions":0}}},{"hash":"63fb27ce9b4a0e6e9731e2f6e2617e0385a7ce24","isMergeCommit":false,"messageTitle":"Fix Checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":59,"deletions":14},"test-code":{"insertions":62,"deletions":25}}}]},{"date":"2024-03-14","commitResults":[{"hash":"b4f87195e2991cec7357cae486fea23c38faf036","isMergeCommit":true,"messageTitle":"Merge pull request #30 from Benson15912/Add-Command","messageBody":"Add command and refactored address to availability","fileTypesAndContributionMap":{}}]},{"date":"2024-03-19","commitResults":[{"hash":"d3b93b5cfeba45c1ad52a472e135a221c153b463","isMergeCommit":false,"messageTitle":"no message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"25607691b92318f0ca54656ab407d90f761ed4cb","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-F10-4/tp","messageBody":"* \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-F10-4/tp:\n Fix checkstyle\n Add testcases related to availability\n Edit usage message for add command\n Fix checkstyle\n Update testing for find command\n Add function to find person by available dates\n Update edit command to parse optional availabilities\n implement date for availability\n Fixed EOF error\n Fix the arrangement of the volunteer details\n Change colour scheme of App\n Change person card to list information horizontally.\n Remove traces of address\n Fix checkstyle error\n Update FindCommand and Refactor messages\n\n# Conflicts:\n#\tsrc/main/java/seedu/address/storage/JsonAdaptedPerson.java\n","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"e35ad78631e251b17a7db892c92fb8ec49ac1313","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-F10-4/tp","messageBody":"* \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-F10-4/tp:\n Add FindSequenceDiagram\n Update tests coverage\n Update code quality\n Update JavaDocs for Confirmation.java\n Add unit test for Confirmation.java\n Update JUnit tests\n Add command confirmation\n Add command confirmation\n Update Model and Storage class diagrams\n Change Xu Wen\u0027s role in About Us\n","fileTypesAndContributionMap":{}}]},{"date":"2024-03-23","commitResults":[{"hash":"c524edb8bc9bd0d93c69a43421456fd6a6fa8cce","isMergeCommit":true,"messageTitle":"Merge pull request #41 from xuwen-ho/branch-add-alt-to-uml","messageBody":"Add alt boxes to architecture diagram","fileTypesAndContributionMap":{}},{"hash":"750fe52cf5ffffed2ef0bfcc6ad5b47465330938","isMergeCommit":false,"messageTitle":"Add UML for adding a volunteer","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":79,"deletions":0}}}]}],"SimKianSeng":[{"date":"2024-03-06","commitResults":[{"hash":"4398bdc84ea6b48391c697125dc98cd0dc1820ec","isMergeCommit":true,"messageTitle":"Merge pull request #11 from YowSiaoKang/master","messageBody":"Update ReadME and project website","fileTypesAndContributionMap":{}},{"hash":"89ede67fb778b8851cce778ac94ea3633c9b0347","isMergeCommit":false,"messageTitle":"Update AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":140,"deletions":46}}},{"hash":"88b99166c83e0beb260ccd338989e4c3a00f3f30","isMergeCommit":false,"messageTitle":"Update AboutUs, portfolio page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":46,"deletions":57}}}]},{"date":"2024-03-07","commitResults":[{"hash":"a79dac81ea1c3393edbda1ffdaf456644695b264","isMergeCommit":true,"messageTitle":"Merge pull request #17 from Benson15912/benson-readme","messageBody":"Move image location","fileTypesAndContributionMap":{}},{"hash":"7b8b7782d8da06f8dd4d84cfc909504d14e225ed","isMergeCommit":false,"messageTitle":"Move image location","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-09","commitResults":[{"hash":"7d0f643a6f49582936a3709a9e9204dbc6bcb0da","isMergeCommit":false,"messageTitle":"Update use cases and non-functional requirements","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":8}}},{"hash":"5e2c0d4d73924d2b563d41831770452d951c70b1","isMergeCommit":true,"messageTitle":"Merge pull request #26 from tayziyi/add-descr","messageBody":"Add responsibilities","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"4aa29754bb097b291a1ed4e0bab92619327b1302","isMergeCommit":false,"messageTitle":"Add command confirmation","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":27,"deletions":0}}},{"hash":"216f93e9f4e82b905e69f13b67068c809144dc1e","isMergeCommit":false,"messageTitle":"Add command confirmation","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":68,"deletions":23},"test-code":{"insertions":9,"deletions":9}}}]},{"date":"2024-03-21","commitResults":[{"hash":"69f197189e1afffcaf100f0a783821d2713e00d9","isMergeCommit":false,"messageTitle":"Update JUnit tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":10},"test-code":{"insertions":26,"deletions":26}}},{"hash":"0e8d29fbc6375e2b7123fff7683b2b0ed6b0df21","isMergeCommit":false,"messageTitle":"Add unit test for Confirmation.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":32,"deletions":0}}},{"hash":"cca3a66399c5a90170e0f03fd5e65cb70b23ff53","isMergeCommit":false,"messageTitle":"Update JavaDocs for Confirmation.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":0}}},{"hash":"4a5b803bdb9cdf65f4b7298635b38b3f76fc8799","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-F10-4/tp into branch-confirmation","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"1972eb3dd1c60a47e0746c800a6dbc4cd182f801","isMergeCommit":false,"messageTitle":"Update code quality","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":10},"test-code":{"insertions":11,"deletions":7}}},{"hash":"7a8e1da32a3eda18ff4e360e5fba8403b2d12833","isMergeCommit":false,"messageTitle":"Update tests coverage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":1},"test-code":{"insertions":38,"deletions":13}}},{"hash":"da35736eefb55aa9ada398d5924f60a42a0d1ce6","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-confirmation\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ac4c72276f883d4457ecab8e995a6a46532d2a21","isMergeCommit":true,"messageTitle":"Merge pull request #39 from tayziyi/branch-add-puml-diagram","messageBody":"Add FindSequenceDiagram","fileTypesAndContributionMap":{}},{"hash":"ba4b8392031fe4e53acad7b80d6554391c524a38","isMergeCommit":true,"messageTitle":"Merge pull request #37 from SimKianSeng/branch-confirmation","messageBody":"Branch confirmation","tags":["v1.2"],"fileTypesAndContributionMap":{}},{"hash":"dce8e7ecf84b7dbd9e9b3218b75e7a742c0c3fbe","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-F10-4/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"0ece8ad09cf192f3fa7b9dea86d99a0d8b60db3c","isMergeCommit":false,"messageTitle":"Update UML diagrams to represent confirmation","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":13,"deletions":7}}}]},{"date":"2024-03-22","commitResults":[{"hash":"488390807c793b7cd5311f2651bf083278c825fa","isMergeCommit":false,"messageTitle":"Update minor diagram style issue","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}}]},{"date":"2024-03-24","commitResults":[{"hash":"f4eda21989820738853bec910f6ca07b32c0fc2e","isMergeCommit":true,"messageTitle":"Merge pull request #42 from Benson15912/branch-AddSeqDiagram","messageBody":"AddSequenceDiagram","fileTypesAndContributionMap":{}}]}],"xuwen-ho":[{"date":"2024-03-06","commitResults":[{"hash":"4cbfc70d87b0205ba60a752874233aa68e3c28f9","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":58,"deletions":33}}}]},{"date":"2024-03-07","commitResults":[{"hash":"9a507281a27aa5126bb91d04a2daa191290071d6","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"a4fef3435d0a4fe5cfd4aec9c80c19768057f794","isMergeCommit":true,"messageTitle":"Merge pull request #23 from xuwen-ho/master","messageBody":"Updated AboutUs page and Image","fileTypesAndContributionMap":{}},{"hash":"b2f2db1d0252481b7de76079aecbcc2971411e3c","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-17","commitResults":[{"hash":"53cead19a90deb1d127158a5a143ad4f5dd44580","isMergeCommit":false,"messageTitle":"Change person card to list information horizontally.","messageBody":"Initially, details will be listed vertically, with name and then phone, email and availability below\n\nHowever, this wasted the large horizontal space present on computers\n\nLets list the details in horizontal columns so that it is easier to read\n","fileTypesAndContributionMap":{"functional-code":{"insertions":24,"deletions":16}}},{"hash":"fa1fd20c458bac0b7af645e9dc5e252a3adda028","isMergeCommit":false,"messageTitle":"Change colour scheme of App","messageBody":"Previously, app had a grey colour scheme\n\nThis was pretty boring for users\n\nLets mke our colour scheme more colorful sousers enjoy using our app\n","fileTypesAndContributionMap":{"functional-code":{"insertions":37,"deletions":36}}},{"hash":"6b6d6654a3e9063ca15c37c7705a99ae1b196abd","isMergeCommit":false,"messageTitle":"Fix the arrangement of the volunteer details","messageBody":"Previously, the placement of email and address was dependent on the length of phone (fixed distance from phone)\n\nThis made the information disorganised if phone had different length\n\nLets put details in columns so it is more organised\n","fileTypesAndContributionMap":{"functional-code":{"insertions":23,"deletions":11}}},{"hash":"320e1bff1a2838ddc68cf0510e200cec0b5d4529","isMergeCommit":false,"messageTitle":"Fixed EOF error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-18","commitResults":[{"hash":"c1223c697a1ef0273966ec7cd29b7fce8ef9846d","isMergeCommit":true,"messageTitle":"Merge pull request #34 from YowSiaoKang/filter-by-availability-function","messageBody":"Filter by availability function","fileTypesAndContributionMap":{}}]},{"date":"2024-03-19","commitResults":[{"hash":"f8a914a2775408571fafed42cc4ff37fa9314431","isMergeCommit":false,"messageTitle":"Change Xu Wen\u0027s role in About Us","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-22","commitResults":[{"hash":"89a258a44c2152eb2c9cb35c566ae2c278df4c1b","isMergeCommit":false,"messageTitle":"Add alt boxes to architecture diagram","messageBody":"Previously, architecture diagram did not reflect new confirmation feature for deletion\n","fileTypesAndContributionMap":{"docs":{"insertions":28,"deletions":19}}}]}],"YowSiaoKang":[{"date":"2024-03-06","commitResults":[{"hash":"d69abd35dcd59f35e423dba7cf1d35aa79884c39","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":15,"deletions":9}}},{"hash":"a122e5df1b812c26497b805713ea2cbf78027fab","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}}]},{"date":"2024-03-07","commitResults":[{"hash":"b667764579bc61758767fe139c48a17a5131ae53","isMergeCommit":true,"messageTitle":"Merge pull request #20 from tayziyi/master","messageBody":"Fix image location","fileTypesAndContributionMap":{}},{"hash":"e275d862f24d6703df3688bf1e298ddcbffeb206","isMergeCommit":false,"messageTitle":"Update AboutUs and image location","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":11}}},{"hash":"c1377e61a37ef31a833d3232148470e8ffbec499","isMergeCommit":true,"messageTitle":"Merge pull request #22 from YowSiaoKang/upload-photo","messageBody":"Upload photo","fileTypesAndContributionMap":{}}]},{"date":"2024-03-15","commitResults":[{"hash":"d71599f41e7bd6f3f0e3590fd9d9636597aabf6f","isMergeCommit":false,"messageTitle":"Remove traces of address","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":8}}}]},{"date":"2024-03-17","commitResults":[{"hash":"a3bc834090e102da1abc0fdef5f8fd66c816e980","isMergeCommit":false,"messageTitle":"implement date for availability","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":143,"deletions":56},"test-code":{"insertions":31,"deletions":15}}},{"hash":"8390a7dd3e143a223388e05d40d20975d768623b","isMergeCommit":false,"messageTitle":"Update edit command to parse optional availabilities","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":33,"deletions":55}}}]},{"date":"2024-03-18","commitResults":[{"hash":"7a12e0c1ffa8bae7520bcc886da4b14e700450a1","isMergeCommit":false,"messageTitle":"Add function to find person by available dates","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":116,"deletions":12}}},{"hash":"113c317945e2fdfe20d93ba6a0c0f84228166ceb","isMergeCommit":false,"messageTitle":"Update testing for find command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":6},"test-code":{"insertions":43,"deletions":9}}},{"hash":"71d56729e66d9b9f68fcd68334b53f7e97496ca0","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":32,"deletions":28},"test-code":{"insertions":2,"deletions":5}}},{"hash":"63524e3664d0d50325c0529bb6eda866f764cc82","isMergeCommit":true,"messageTitle":"Merge pull request #31 from tayziyi/branch-find","messageBody":"Update FindCommand and Refactor messages","fileTypesAndContributionMap":{}},{"hash":"6cb959c4ebf649c1f70200111eb32232181da4dc","isMergeCommit":true,"messageTitle":"Merge pull request #33 from xuwen-ho/change-listing-format","messageBody":"Change listing format","fileTypesAndContributionMap":{}},{"hash":"32314d338894d7061503eced1da2c052edbe93c0","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into filter-by-availability-function","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"03736506bafa84967b3e92341d208185a86503b5","isMergeCommit":false,"messageTitle":"Edit usage message for add command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4}}},{"hash":"4f31dea7085e47a664203df08f095744795cd0a9","isMergeCommit":false,"messageTitle":"Add testcases related to availability","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":6},"test-code":{"insertions":178,"deletions":0}}},{"hash":"cdfac86cc1fc1490de378fa30466b257aafaab51","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-20","commitResults":[{"hash":"1357effb03dfa207904544a943715a75f4954178","isMergeCommit":false,"messageTitle":"Update Model and Storage class diagrams","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":4}}},{"hash":"2693c238cde2d907a77891a2ad11b6d807734f6e","isMergeCommit":true,"messageTitle":"Merge pull request #35 from xuwen-ho/change-aboutus-role","messageBody":"Change Xu Wen\u0027s role in About Us","fileTypesAndContributionMap":{}}]},{"date":"2024-03-22","commitResults":[{"hash":"6071a6c6256b9e6b45f932171cf9638f1abfdeca","isMergeCommit":true,"messageTitle":"Merge pull request #40 from SimKianSeng/branch-update-diagrams","messageBody":"Branch update diagrams","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"tayziyi":{"docs":72,"functional-code":7,"test-code":0},"Benson15912":{"docs":81,"functional-code":85,"test-code":77},"SimKianSeng":{"docs":158,"functional-code":91,"test-code":98},"xuwen-ho":{"docs":64,"functional-code":60,"test-code":0},"YowSiaoKang":{"docs":30,"functional-code":270,"test-code":278}},"authorContributionVariance":{"tayziyi":167.94797,"Benson15912":13840.654,"SimKianSeng":4448.552,"xuwen-ho":965.282,"YowSiaoKang":9710.735},"authorDisplayNameMap":{"tayziyi":"CS2103T-F10-4 TAY ..I YI","Benson15912":"CS2103T-F10-4 BENS..KIAT","SimKianSeng":"CS2103T-F10-4 SIM ..SENG","xuwen-ho":"CS2103T-F10-4 HO X.. WEN","YowSiaoKang":"CS2103T-F10-4 YOW ..KANG"}} diff --git a/AY2324S2-CS2103T-F13-2_tp_master/authorship.json b/AY2324S2-CS2103T-F13-2_tp_master/authorship.json index d2a4b8c9..6b735422 100644 --- a/AY2324S2-CS2103T-F13-2_tp_master/authorship.json +++ b/AY2324S2-CS2103T-F13-2_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"ziyang27"},"content":"[![CI Status](https://github.com/se-edu/addressbook-level3/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S2-CS2103T-F13-2/tp/actions)","lastModifiedDate":"2024-02-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"ziyang27"},"content":"# FAPro","lastModifiedDate":"2024-02-29"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-29"},{"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":"ziyang27"},"content":"## What is it? ","lastModifiedDate":"2024-02-29"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"**FAPro** is a desktop application for financial advisors to manage the contacts of their clients. This is especially built for those with more than 50 clients to handle.","lastModifiedDate":"2024-03-04"},{"lineNumber":9,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":10,"author":{"gitId":"ziyang27"},"content":"## What value it brings?","lastModifiedDate":"2024-02-29"},{"lineNumber":11,"author":{"gitId":"ziyang27"},"content":"This application revolutionizes client engagement for financial advisors by facilitating strategic communication and personalized service.","lastModifiedDate":"2024-02-29"},{"lineNumber":12,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":13,"author":{"gitId":"ziyang27"},"content":"* It ensures advisors efficiently prioritize outreach, focusing on clients requiring immediate attention, thereby optimizing client satisfaction and retention.","lastModifiedDate":"2024-02-29"},{"lineNumber":14,"author":{"gitId":"ziyang27"},"content":"* The system offers insights into clients’ financial product portfolios, enabling advisors to tailor advice and recommendations effectively.","lastModifiedDate":"2024-02-29"},{"lineNumber":15,"author":{"gitId":"ziyang27"},"content":"* Additionally, it streamlines scheduling, allowing for seamless planning of future communications.","lastModifiedDate":"2024-02-29"},{"lineNumber":16,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":17,"author":{"gitId":"ziyang27"},"content":"This approach not only elevates the advisor-client relationship but also enhances the advisor\u0027s ability to serve with precision and foresight, setting a new standard in client management excellence.","lastModifiedDate":"2024-02-29"},{"lineNumber":18,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":19,"author":{"gitId":"ziyang27"},"content":"## Where can I find out more?","lastModifiedDate":"2024-02-29"},{"lineNumber":20,"author":{"gitId":"ziyang27"},"content":"Check out our detailed documentation of this project at **[FAPro Product Website](https://ay2324s2-cs2103t-f13-2.github.io/tp/)**.","lastModifiedDate":"2024-02-29"},{"lineNumber":21,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":22,"author":{"gitId":"ziyang27"},"content":"## Acknowledgements","lastModifiedDate":"2024-02-29"},{"lineNumber":23,"author":{"gitId":"ziyang27"},"content":"This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-02-29"}],"authorContributionMap":{"SimHanKiong":1,"ziyang27":18,"-":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":"## Project team","lastModifiedDate":"2020-06-07"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"ziyang27"},"content":"### Sim Han Kiong","lastModifiedDate":"2024-02-29"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":"\u003cimg src\u003d\"images/simhankiong.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"ziyang27"},"content":"[[github](https://github.com/SimHanKiong)]","lastModifiedDate":"2024-02-29"},{"lineNumber":17,"author":{"gitId":"ziyang27"},"content":"[[portfolio](team/simhankiong.md)]","lastModifiedDate":"2024-02-29"},{"lineNumber":18,"author":{"gitId":"ziyang27"},"content":"[[email](e0957654@u.nus.edu)]","lastModifiedDate":"2024-02-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"* Role: Team Lead","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"ziyang27"},"content":"* Responsibilities: Code quality","lastModifiedDate":"2024-02-29"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"ziyang27"},"content":"### Tan Yun Chao","lastModifiedDate":"2024-02-29"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"tanyunchao"},"content":"\u003cimg src\u003d\"images/tanyunchao.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-07"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"ziyang27"},"content":"[[github](http://github.com/tanyunchao)]","lastModifiedDate":"2024-02-29"},{"lineNumber":28,"author":{"gitId":"ziyang27"},"content":"[[portfolio](team/tanyunchao.md)]","lastModifiedDate":"2024-02-29"},{"lineNumber":29,"author":{"gitId":"ziyang27"},"content":"[[email](tanyunchao@u.nus.edu)]","lastModifiedDate":"2024-02-29"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"ziyang27"},"content":"* Role: Developer, Git expert","lastModifiedDate":"2024-02-29"},{"lineNumber":32,"author":{"gitId":"ziyang27"},"content":"* Responsibilities: Integration","lastModifiedDate":"2024-02-29"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"ziyang27"},"content":"### Tiong Chuan Yao","lastModifiedDate":"2024-02-29"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"Colex2000"},"content":"\u003cimg src\u003d\"images/colex2000.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"ziyang27"},"content":"[[github](http://github.com/Colex2000)] ","lastModifiedDate":"2024-02-29"},{"lineNumber":39,"author":{"gitId":"ziyang27"},"content":"[[portfolio](team/tiongchuanyao.md)]","lastModifiedDate":"2024-02-29"},{"lineNumber":40,"author":{"gitId":"ziyang27"},"content":"[[email](tiongchuanyao@u.nus.edu)]","lastModifiedDate":"2024-02-29"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"ziyang27"},"content":"* Responsibilities: Testing + Scheduling and tracking","lastModifiedDate":"2024-02-29"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"ziyang27"},"content":"### Tan Zi Yang","lastModifiedDate":"2024-02-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"ziyang27"},"content":"\u003cimg src\u003d\"images/ziyang27.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-02-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"ziyang27"},"content":"[[github](http://github.com/ziyang27)]","lastModifiedDate":"2024-02-29"},{"lineNumber":50,"author":{"gitId":"ziyang27"},"content":"[[portfolio](team/tanziyang.md)]","lastModifiedDate":"2024-02-29"},{"lineNumber":51,"author":{"gitId":"ziyang27"},"content":"[[email](tan.ziyang@u.nus.edu)]","lastModifiedDate":"2024-02-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"ziyang27"},"content":"* Responsibilities: Documentation + Deliverables and deadlines","lastModifiedDate":"2024-02-29"}],"authorContributionMap":{"SimHanKiong":1,"ziyang27":22,"Colex2000":1,"tanyunchao":1,"-":29}},{"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":"SimHanKiong"},"content":"# FAPro Developer Guide","lastModifiedDate":"2024-03-03"},{"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":"SimHanKiong"},"content":"This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-03-04"},{"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":"-"},"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":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":"-"},"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":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":"-"},"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":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":"-"},"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":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 continues till 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).\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-02-09"},{"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":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12"},{"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":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"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":"2021-07-31"},{"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":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":133,"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":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":135,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"ziyang27"},"content":"Here are the other classes in `Model` (omitted from the class diagram above) that are used for filtering the list which is exposed to outsiders:","lastModifiedDate":"2024-03-19"},{"lineNumber":140,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":141,"author":{"gitId":"ziyang27"},"content":"\u003cpuml src\u003d\"diagrams/PredicateClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":142,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":143,"author":{"gitId":"ziyang27"},"content":"How the filtering works:","lastModifiedDate":"2024-03-19"},{"lineNumber":144,"author":{"gitId":"ziyang27"},"content":"* When filtering is needed, the `XYZCommand` class (`XYZ` is a placeholder for the specific command name e.g., `SelectCommand`) passes a `Predicate` object (e.g., `IsSamePersonCommand`) to the `Model` component.","lastModifiedDate":"2024-03-19"},{"lineNumber":145,"author":{"gitId":"ziyang27"},"content":"* The `Model` component then ensures that the `Predicate` is not null before setting this `Predicate` in the `ObservableList\u003cPerson\u003e`.","lastModifiedDate":"2024-03-19"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"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":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":153,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"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":155,"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":156,"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":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","lastModifiedDate":"2020-05-23"},{"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":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"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":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"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":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"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":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"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":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"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":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"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":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"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":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":198,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"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":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":205,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"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":208,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12"},{"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":"2020-05-23"},{"lineNumber":218,"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":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"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":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":224,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":226,"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":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":230,"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":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"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":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"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":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":247,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","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":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":268,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":269,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":270,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":271,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":272,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":273,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":274,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":278,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":280,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":281,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":282,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":284,"author":{"gitId":"ziyang27"},"content":"* is a financial advisor","lastModifiedDate":"2024-02-29"},{"lineNumber":285,"author":{"gitId":"ziyang27"},"content":"* is currently studying at the same time","lastModifiedDate":"2024-02-29"},{"lineNumber":286,"author":{"gitId":"ziyang27"},"content":"* has a need to manage over 50 clients while juggling with school commitments","lastModifiedDate":"2024-02-29"},{"lineNumber":287,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23"},{"lineNumber":288,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23"},{"lineNumber":289,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26"},{"lineNumber":290,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23"},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":292,"author":{"gitId":"SimHanKiong"},"content":"**Value proposition**: manage contacts faster than a typical mouse/GUI driven app and revolutionizes client engagement ","lastModifiedDate":"2024-03-04"},{"lineNumber":293,"author":{"gitId":"SimHanKiong"},"content":"for financial advisors by facilitating strategic communication and personalized service.","lastModifiedDate":"2024-03-04"},{"lineNumber":294,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":296,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":298,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":299,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":300,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":301,"author":{"gitId":"SimHanKiong"},"content":"|---------|---------------------------------------------|-------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------|","lastModifiedDate":"2024-03-04"},{"lineNumber":302,"author":{"gitId":"-"},"content":"| `* * *` | new user | see usage instructions | refer to instructions when I forget how to use the App |","lastModifiedDate":"2020-05-23"},{"lineNumber":303,"author":{"gitId":"-"},"content":"| `* * *` | user | add a new person | |","lastModifiedDate":"2020-05-23"},{"lineNumber":304,"author":{"gitId":"-"},"content":"| `* * *` | user | delete a person | remove entries that I no longer need |","lastModifiedDate":"2020-05-23"},{"lineNumber":305,"author":{"gitId":"SimHanKiong"},"content":"| `* * *` | user | find a person by name | locate details of people without having to go through the entire list |","lastModifiedDate":"2024-03-03"},{"lineNumber":306,"author":{"gitId":"ziyang27"},"content":"| `* * *` | financial advisor with more than 50 clients | easily identity those that I haven\u0027t reach out to for a long time | contact them and check on their progress as well as well-being |","lastModifiedDate":"2024-02-29"},{"lineNumber":307,"author":{"gitId":"ziyang27"},"content":"| `* * *` | financial advisor with many upcoming meeting | easily view my schedule | plan and prepare the respective information for the respective meetings, serving the client more effectively |","lastModifiedDate":"2024-02-29"},{"lineNumber":308,"author":{"gitId":"SimHanKiong"},"content":"| `* * *` | financial advisor who provides multiple plans for my clients | tag clients based on their existing plans | keep track of which clients hold which policies |","lastModifiedDate":"2024-03-04"},{"lineNumber":309,"author":{"gitId":"SimHanKiong"},"content":"| `* * *` | financial advisor who provides multiple plans for my clients | find clients based on their existing plans | provide personalised service to each type of policy holder |","lastModifiedDate":"2024-03-04"},{"lineNumber":310,"author":{"gitId":"ziyang27"},"content":"| `* * *` | financial advisor with more than 50 clients | view a client\u0027s profile with a few simple commands | have the relevant information at hand when planning and during the consultations |","lastModifiedDate":"2024-02-29"},{"lineNumber":311,"author":{"gitId":"ziyang27"},"content":"| `* * ` | financial advisor with more than 50 clients | set reminders for all the clients\u0027 birthday | build personal connection through timely greetings |","lastModifiedDate":"2024-02-29"},{"lineNumber":312,"author":{"gitId":"SimHanKiong"},"content":"| `*` | user with many people in the address book | sort people by name | locate a person easily |","lastModifiedDate":"2024-03-03"},{"lineNumber":313,"author":{"gitId":"ziyang27"},"content":"| `*` | financial advisor who wants to help my clients reach their goals | keep track of their goals and financial progress | provide a more curated and personalized service |","lastModifiedDate":"2024-02-29"},{"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":"ziyang27"},"content":"(For all use cases below, the **System** is `FAPro` and the **Actor** is the `financial advisor`, unless specified otherwise)","lastModifiedDate":"2024-03-07"},{"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":"SimHanKiong"},"content":"1. User requests to list people","lastModifiedDate":"2024-03-03"},{"lineNumber":326,"author":{"gitId":"SimHanKiong"},"content":"2. AddressBook shows a list of people","lastModifiedDate":"2024-03-03"},{"lineNumber":327,"author":{"gitId":"-"},"content":"3. User requests to delete a specific person in the list","lastModifiedDate":"2020-05-23"},{"lineNumber":328,"author":{"gitId":"-"},"content":"4. AddressBook deletes the person","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":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":332,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":333,"author":{"gitId":"ziyang27"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-02-29"},{"lineNumber":334,"author":{"gitId":"ziyang27"},"content":" Use case ends.","lastModifiedDate":"2024-02-29"},{"lineNumber":335,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":336,"author":{"gitId":"ziyang27"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2024-02-29"},{"lineNumber":337,"author":{"gitId":"ziyang27"},"content":" * 3a1. AddressBook shows an error message.","lastModifiedDate":"2024-02-29"},{"lineNumber":338,"author":{"gitId":"ziyang27"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-02-29"},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":340,"author":{"gitId":"ziyang27"},"content":"**Use case: Adding a client**","lastModifiedDate":"2024-03-07"},{"lineNumber":341,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":342,"author":{"gitId":"ziyang27"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":343,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":344,"author":{"gitId":"ziyang27"},"content":"1. User add a new client by providing the necessary information including the person\u0027s name, phone number, email, address, and optional tags.","lastModifiedDate":"2024-03-07"},{"lineNumber":345,"author":{"gitId":"ziyang27"},"content":"2. FAPro validates the provided information and adds the person to the address book.","lastModifiedDate":"2024-03-07"},{"lineNumber":346,"author":{"gitId":"ziyang27"},"content":"3. FAPro shows the client information in the list.","lastModifiedDate":"2024-03-07"},{"lineNumber":347,"author":{"gitId":"ziyang27"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":348,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":349,"author":{"gitId":"ziyang27"},"content":"**Use case: Edit a client\u0027s info**","lastModifiedDate":"2024-03-07"},{"lineNumber":350,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":351,"author":{"gitId":"ziyang27"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":352,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":353,"author":{"gitId":"ziyang27"},"content":"1. User edits an existing client\u0027s information in FAPro by providing the updated information.","lastModifiedDate":"2024-03-07"},{"lineNumber":354,"author":{"gitId":"ziyang27"},"content":"2. FAPro validates the provided information and edits the information.","lastModifiedDate":"2024-03-07"},{"lineNumber":355,"author":{"gitId":"ziyang27"},"content":"3. FAPro shows the updated client information in the list.","lastModifiedDate":"2024-03-07"},{"lineNumber":356,"author":{"gitId":"ziyang27"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":357,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":358,"author":{"gitId":"ziyang27"},"content":"**Use case: Find a client by name**","lastModifiedDate":"2024-03-07"},{"lineNumber":359,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":360,"author":{"gitId":"ziyang27"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":361,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":362,"author":{"gitId":"ziyang27"},"content":"1. User provides one or more keywords for the seach.","lastModifiedDate":"2024-03-07"},{"lineNumber":363,"author":{"gitId":"ziyang27"},"content":"2. FAPro performs a case-insensitive search for people whose names contain any of the provided keywords.","lastModifiedDate":"2024-03-07"},{"lineNumber":364,"author":{"gitId":"ziyang27"},"content":"3. FAPro returns a list of people matching at least one keyword.","lastModifiedDate":"2024-03-07"},{"lineNumber":365,"author":{"gitId":"ziyang27"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":366,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":367,"author":{"gitId":"ziyang27"},"content":"**Use case: Viewing a client\u0027s profile**","lastModifiedDate":"2024-02-29"},{"lineNumber":368,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":369,"author":{"gitId":"ziyang27"},"content":"**MSS**","lastModifiedDate":"2024-02-29"},{"lineNumber":370,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":371,"author":{"gitId":"SimHanKiong"},"content":"1. User requests to list people","lastModifiedDate":"2024-03-03"},{"lineNumber":372,"author":{"gitId":"SimHanKiong"},"content":"2. FAPro shows a list of people","lastModifiedDate":"2024-03-03"},{"lineNumber":373,"author":{"gitId":"ziyang27"},"content":"3. User requests to view the profile of the client in the list","lastModifiedDate":"2024-02-29"},{"lineNumber":374,"author":{"gitId":"ziyang27"},"content":"4. FAPro shows the detailed profile of the client","lastModifiedDate":"2024-02-29"},{"lineNumber":375,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2024-02-29"},{"lineNumber":376,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":377,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2024-02-29"},{"lineNumber":378,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":379,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2020-05-23"},{"lineNumber":380,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":381,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":382,"author":{"gitId":"-"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2020-05-23"},{"lineNumber":383,"author":{"gitId":"-"},"content":" * 3a1. AddressBook shows an error message.","lastModifiedDate":"2020-05-23"},{"lineNumber":384,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23"},{"lineNumber":385,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":386,"author":{"gitId":"SimHanKiong"},"content":"**Use case: Tagging a client**","lastModifiedDate":"2024-03-04"},{"lineNumber":387,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":388,"author":{"gitId":"SimHanKiong"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":389,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":390,"author":{"gitId":"SimHanKiong"},"content":"1. User requests to list people","lastModifiedDate":"2024-03-04"},{"lineNumber":391,"author":{"gitId":"SimHanKiong"},"content":"2. AddressBook shows a list of people","lastModifiedDate":"2024-03-04"},{"lineNumber":392,"author":{"gitId":"SimHanKiong"},"content":"3. User requests to tag a specific person in the list with a specified tag","lastModifiedDate":"2024-03-04"},{"lineNumber":393,"author":{"gitId":"SimHanKiong"},"content":"4. AddressBook tags the person","lastModifiedDate":"2024-03-04"},{"lineNumber":394,"author":{"gitId":"SimHanKiong"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":395,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":396,"author":{"gitId":"SimHanKiong"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":397,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":398,"author":{"gitId":"SimHanKiong"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-03-04"},{"lineNumber":399,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":400,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":401,"author":{"gitId":"-"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2024-03-04"},{"lineNumber":402,"author":{"gitId":"SimHanKiong"},"content":" * 3a1. AddressBook shows an error message.","lastModifiedDate":"2024-03-04"},{"lineNumber":403,"author":{"gitId":"SimHanKiong"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-04"},{"lineNumber":404,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":405,"author":{"gitId":"SimHanKiong"},"content":"**Use case: Removing tags from a client**","lastModifiedDate":"2024-03-04"},{"lineNumber":406,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":407,"author":{"gitId":"SimHanKiong"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":408,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":409,"author":{"gitId":"SimHanKiong"},"content":"1. User requests to list people","lastModifiedDate":"2024-03-04"},{"lineNumber":410,"author":{"gitId":"SimHanKiong"},"content":"2. AddressBook shows a list of people","lastModifiedDate":"2024-03-04"},{"lineNumber":411,"author":{"gitId":"SimHanKiong"},"content":"3. User requests to remove tags from a specific person in the list","lastModifiedDate":"2024-03-04"},{"lineNumber":412,"author":{"gitId":"SimHanKiong"},"content":"4. AddressBook removes the tags of the person","lastModifiedDate":"2024-03-04"},{"lineNumber":413,"author":{"gitId":"SimHanKiong"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":414,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":415,"author":{"gitId":"SimHanKiong"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":416,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":417,"author":{"gitId":"SimHanKiong"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-03-04"},{"lineNumber":418,"author":{"gitId":"SimHanKiong"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":419,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":420,"author":{"gitId":"SimHanKiong"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2024-03-04"},{"lineNumber":421,"author":{"gitId":"-"},"content":" * 3a1. AddressBook shows an error message.","lastModifiedDate":"2024-03-04"},{"lineNumber":422,"author":{"gitId":"SimHanKiong"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-04"},{"lineNumber":423,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":424,"author":{"gitId":"SimHanKiong"},"content":"**Use case: Finding all clients that contain any of the tags**","lastModifiedDate":"2024-03-04"},{"lineNumber":425,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":426,"author":{"gitId":"SimHanKiong"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":427,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":428,"author":{"gitId":"SimHanKiong"},"content":"1. User requests to find people containing any of the specified tags","lastModifiedDate":"2024-03-04"},{"lineNumber":429,"author":{"gitId":"SimHanKiong"},"content":"2. AddressBook shows a list of people","lastModifiedDate":"2024-03-04"},{"lineNumber":430,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":431,"author":{"gitId":"SimHanKiong"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":432,"author":{"gitId":"SimHanKiong"},"content":"* 1a. One of the tags do not exist.","lastModifiedDate":"2024-03-04"},{"lineNumber":433,"author":{"gitId":"SimHanKiong"},"content":" * 1a1. AddressBook shows an error message.","lastModifiedDate":"2024-03-04"},{"lineNumber":434,"author":{"gitId":"SimHanKiong"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":435,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":436,"author":{"gitId":"SimHanKiong"},"content":"**Use case: Finding all clients that contain all the tags**","lastModifiedDate":"2024-03-04"},{"lineNumber":437,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":438,"author":{"gitId":"SimHanKiong"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":439,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":440,"author":{"gitId":"SimHanKiong"},"content":"1. User requests to find people containing all the specified tags","lastModifiedDate":"2024-03-04"},{"lineNumber":441,"author":{"gitId":"SimHanKiong"},"content":"2. AddressBook shows a list of people","lastModifiedDate":"2024-03-04"},{"lineNumber":442,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":443,"author":{"gitId":"SimHanKiong"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":444,"author":{"gitId":"SimHanKiong"},"content":"* 1a. One of the tags do not exist.","lastModifiedDate":"2024-03-04"},{"lineNumber":445,"author":{"gitId":"SimHanKiong"},"content":" * 1a1. AddressBook shows an error message.","lastModifiedDate":"2024-03-04"},{"lineNumber":446,"author":{"gitId":"SimHanKiong"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":447,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":448,"author":{"gitId":"Colex2000"},"content":"**Use case: Clearing all contacts in FAPro**","lastModifiedDate":"2024-03-06"},{"lineNumber":449,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":450,"author":{"gitId":"Colex2000"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":451,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":452,"author":{"gitId":"Colex2000"},"content":"1. User requests to clear all contacts.","lastModifiedDate":"2024-03-06"},{"lineNumber":453,"author":{"gitId":"Colex2000"},"content":"2. The system clears all contacts.","lastModifiedDate":"2024-03-06"},{"lineNumber":454,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":455,"author":{"gitId":"Colex2000"},"content":"**Use case: Exiting FAPro**","lastModifiedDate":"2024-03-06"},{"lineNumber":456,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":457,"author":{"gitId":"Colex2000"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":458,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":459,"author":{"gitId":"Colex2000"},"content":"1. User enters the exit command.","lastModifiedDate":"2024-03-06"},{"lineNumber":460,"author":{"gitId":"Colex2000"},"content":"2. FAPro closes the window and its system.","lastModifiedDate":"2024-03-06"},{"lineNumber":461,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":462,"author":{"gitId":"Colex2000"},"content":"**Use case: Tagging a client as last contacted**","lastModifiedDate":"2024-03-06"},{"lineNumber":463,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":464,"author":{"gitId":"Colex2000"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":465,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":466,"author":{"gitId":"Colex2000"},"content":"1. User requests to tag a client with date and time.","lastModifiedDate":"2024-03-06"},{"lineNumber":467,"author":{"gitId":"Colex2000"},"content":"2. The system tags the client as \u0027last contacted\u0027 with given date and time.","lastModifiedDate":"2024-03-06"},{"lineNumber":468,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":469,"author":{"gitId":"Colex2000"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":470,"author":{"gitId":"Colex2000"},"content":"* 2a. Client name does not exist.","lastModifiedDate":"2024-03-06"},{"lineNumber":471,"author":{"gitId":"Colex2000"},"content":" * 2a1. The system shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":472,"author":{"gitId":"Colex2000"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-06"},{"lineNumber":473,"author":{"gitId":"Colex2000"},"content":"* 2b. The system found more than 1 matching name.","lastModifiedDate":"2024-03-06"},{"lineNumber":474,"author":{"gitId":"Colex2000"},"content":" * 2b1. The system lists all matching clients\u0027 name with their ID code and other details for identification.","lastModifiedDate":"2024-03-06"},{"lineNumber":475,"author":{"gitId":"Colex2000"},"content":" * 2b2. User enters the ID code shown from the list.","lastModifiedDate":"2024-03-06"},{"lineNumber":476,"author":{"gitId":"Colex2000"},"content":" Steps 2b1-2b2 are repeated until the data entered are valid.","lastModifiedDate":"2024-03-06"},{"lineNumber":477,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-06"},{"lineNumber":478,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":479,"author":{"gitId":"tanyunchao"},"content":"**Use case: Finding all upcoming contacts with appointments**","lastModifiedDate":"2024-03-07"},{"lineNumber":480,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":481,"author":{"gitId":"tanyunchao"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":482,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":483,"author":{"gitId":"ziyang27"},"content":"1. User requests to find people containing an upcoming appointment. ","lastModifiedDate":"2024-03-07"},{"lineNumber":484,"author":{"gitId":"ziyang27"},"content":"2. AddressBook retrieves a list of people who have upcoming appointments. ","lastModifiedDate":"2024-03-07"},{"lineNumber":485,"author":{"gitId":"ziyang27"},"content":"3. AddressBook shows the list of people to the user.","lastModifiedDate":"2024-03-07"},{"lineNumber":486,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":487,"author":{"gitId":"tanyunchao"},"content":"**Extensions**","lastModifiedDate":"2024-03-07"},{"lineNumber":488,"author":{"gitId":"ziyang27"},"content":"* 2a. Client name does not exist.","lastModifiedDate":"2024-03-07"},{"lineNumber":489,"author":{"gitId":"ziyang27"},"content":" * 2a1. The system shows an error message.","lastModifiedDate":"2024-03-07"},{"lineNumber":490,"author":{"gitId":"ziyang27"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-07"},{"lineNumber":491,"author":{"gitId":"ziyang27"},"content":"* 2b. The system found more than 1 matching name.","lastModifiedDate":"2024-03-07"},{"lineNumber":492,"author":{"gitId":"ziyang27"},"content":" * 2b1. The system lists all matching clients\u0027 name with their ID code and other details for identification.","lastModifiedDate":"2024-03-07"},{"lineNumber":493,"author":{"gitId":"ziyang27"},"content":" * 2b2. User enters the ID code shown from the list.","lastModifiedDate":"2024-03-07"},{"lineNumber":494,"author":{"gitId":"ziyang27"},"content":" Steps 2b1-2b2 are repeated until the data entered are valid.","lastModifiedDate":"2024-03-07"},{"lineNumber":495,"author":{"gitId":"ziyang27"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-07"},{"lineNumber":496,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":497,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":498,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":499,"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":500,"author":{"gitId":"SimHanKiong"},"content":"2. Should be able to hold up to 1000 people without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2024-03-03"},{"lineNumber":501,"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":502,"author":{"gitId":"ziyang27"},"content":"4. The data in FAPro should be stored locally and should be in a human editable text file.","lastModifiedDate":"2024-03-07"},{"lineNumber":503,"author":{"gitId":"ziyang27"},"content":"5. Should not use a _DBMS_ to store data.","lastModifiedDate":"2024-03-07"},{"lineNumber":504,"author":{"gitId":"ziyang27"},"content":"6. Should work without requiring an installer.","lastModifiedDate":"2024-03-07"},{"lineNumber":505,"author":{"gitId":"ziyang27"},"content":"7. Should not depend on any _remote server_.","lastModifiedDate":"2024-03-07"},{"lineNumber":506,"author":{"gitId":"ziyang27"},"content":"8. _GUI_ should work well for standard screen resolutions 1920x080 and higher, and, for screen scales 100% and 125%.","lastModifiedDate":"2024-03-07"},{"lineNumber":507,"author":{"gitId":"ziyang27"},"content":"9. The size of the documents should not exceed 15MB/file.","lastModifiedDate":"2024-03-07"},{"lineNumber":508,"author":{"gitId":"ziyang27"},"content":"10. The size of the final FAPro product should not exceed 100MB.","lastModifiedDate":"2024-03-07"},{"lineNumber":509,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":510,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":511,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":512,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":513,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":514,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09"},{"lineNumber":515,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23"},{"lineNumber":516,"author":{"gitId":"ziyang27"},"content":"* **DBMS**: Database Management System, a software suite that facilitates the creation, management, and manipulation of databases.","lastModifiedDate":"2024-03-07"},{"lineNumber":517,"author":{"gitId":"ziyang27"},"content":"* **Remote server**: A computer system or software application that provides services or resources to other computers or clients over a network, typically the internet.","lastModifiedDate":"2024-03-07"},{"lineNumber":518,"author":{"gitId":"ziyang27"},"content":"* **GUI**: Graphic User Interface, a visual interface that allows users to interact with electronic devices or software using graphical icons, menus, and other graphical elements, rather than text-based commands","lastModifiedDate":"2024-03-07"},{"lineNumber":519,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":520,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":521,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":522,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":523,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":524,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":525,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":526,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":527,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":528,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12"},{"lineNumber":529,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":530,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":531,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":532,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":533,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":534,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":535,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":536,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":537,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":538,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":539,"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":540,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":541,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":542,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":543,"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":544,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":545,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":546,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":547,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":548,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":549,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":550,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":551,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":552,"author":{"gitId":"SimHanKiong"},"content":"1. Deleting a person while all people are being shown","lastModifiedDate":"2024-03-03"},{"lineNumber":553,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":554,"author":{"gitId":"SimHanKiong"},"content":" 1. Prerequisites: List all people using the `list` command. Multiple people in the list.","lastModifiedDate":"2024-03-03"},{"lineNumber":555,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":556,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":557,"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":558,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":559,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":560,"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":561,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":562,"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":563,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":564,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":565,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":566,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":567,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":568,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":569,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":570,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":571,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":572,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":573,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"SimHanKiong":70,"ziyang27":76,"Colex2000":29,"tanyunchao":6,"-":392}},{"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":"ziyang27"},"content":"# FAPro User Guide","lastModifiedDate":"2024-02-29"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"ziyang27"},"content":"FAPro is a **desktop app for managing clients\u0027 contacts, optimized for use via a Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI). ","lastModifiedDate":"2024-02-29"},{"lineNumber":10,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":11,"author":{"gitId":"ziyang27"},"content":"If you ","lastModifiedDate":"2024-02-29"},{"lineNumber":12,"author":{"gitId":"ziyang27"},"content":"* are a financial advisor,","lastModifiedDate":"2024-02-29"},{"lineNumber":13,"author":{"gitId":"ziyang27"},"content":"* can type fast, ","lastModifiedDate":"2024-02-29"},{"lineNumber":14,"author":{"gitId":"ziyang27"},"content":"* have more than 50 clients, ","lastModifiedDate":"2024-02-29"},{"lineNumber":15,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":16,"author":{"gitId":"ziyang27"},"content":"FAPro can get your client management tasks done faster than traditional GUI apps.","lastModifiedDate":"2024-02-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12"},{"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":"## Quick start","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"1. Ensure you have Java `11` or above installed in your Computer.","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"ziyang27"},"content":"1. Download the latest `fapro.jar` from [here](https://github.com/AY2324S2-CS2103T-F13-2/tp/releases).","lastModifiedDate":"2024-02-29"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"ziyang27"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your FAPro.","lastModifiedDate":"2024-02-29"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"ziyang27"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar fapro.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2024-02-29"},{"lineNumber":32,"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":33,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"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":36,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"SimHanKiong"},"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 FAPro.","lastModifiedDate":"2024-03-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2023-01-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","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":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"**Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"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":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"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":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"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":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"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":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"Colex2000"},"content":"* `DATETIME` format must be in `DD-MM-YYYY HHmm` format.","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"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":72,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":74,"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":75,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"Format: `help`","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":"### Adding a person: `add`","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"SimHanKiong"},"content":"Adds a person to FAPro.","lastModifiedDate":"2024-03-03"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"Colex2000"},"content":"Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​ [lc/DATETIME]`","lastModifiedDate":"2024-03-16"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":94,"author":{"gitId":"-"},"content":"**Tip:** A person can have any number of tags (including 0)","lastModifiedDate":"2023-09-12"},{"lineNumber":95,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"Colex2000"},"content":"**Note:** t/ and lc/ : tag and lastcontact field is optional. ","lastModifiedDate":"2024-03-16"},{"lineNumber":98,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":99,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":100,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"Colex2000"},"content":"* `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01 lc/16-03-2024 0800`","lastModifiedDate":"2024-03-16"},{"lineNumber":102,"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":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"SimHanKiong"},"content":"### Listing all people : `list`","lastModifiedDate":"2024-03-04"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"SimHanKiong"},"content":"Shows a list of all people in FAPro.","lastModifiedDate":"2024-03-03"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":"### Editing a person : `edit`","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"SimHanKiong"},"content":"Edits an existing person in FAPro.","lastModifiedDate":"2024-03-03"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"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":117,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"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":120,"author":{"gitId":"-"},"content":"* You can remove all the person’s tags by typing `t/` without","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":" specifying any tags after it.","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":"-"},"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":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":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"SimHanKiong"},"content":"### Locating people by name: `find`","lastModifiedDate":"2024-03-04"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"SimHanKiong"},"content":"Finds people whose names contain any of the given keywords.","lastModifiedDate":"2024-03-04"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"* `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"SimHanKiong"},"content":"### Locating people by tag : `tagfind`","lastModifiedDate":"2024-03-04"},{"lineNumber":146,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":147,"author":{"gitId":"SimHanKiong"},"content":"Finds people who are associated with the specified tag.","lastModifiedDate":"2024-03-04"},{"lineNumber":148,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":149,"author":{"gitId":"SimHanKiong"},"content":"Format: `tagfind TAG`","lastModifiedDate":"2024-03-04"},{"lineNumber":150,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":151,"author":{"gitId":"SimHanKiong"},"content":"* The search is case-insensitive. e.g. `CaR` will match `car`.","lastModifiedDate":"2024-03-04"},{"lineNumber":152,"author":{"gitId":"SimHanKiong"},"content":"* As long as the person has 1 tag that matches, the person will be listed.","lastModifiedDate":"2024-03-04"},{"lineNumber":153,"author":{"gitId":"SimHanKiong"},"content":"* Only full words will be matched e.g. `cars` will not match `car`.","lastModifiedDate":"2024-03-04"},{"lineNumber":154,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":155,"author":{"gitId":"SimHanKiong"},"content":"Examples:","lastModifiedDate":"2024-03-04"},{"lineNumber":156,"author":{"gitId":"SimHanKiong"},"content":"* `tagfind car` returns all people with a `car` tag.","lastModifiedDate":"2024-03-04"},{"lineNumber":157,"author":{"gitId":"SimHanKiong"},"content":"* `tagfind HOUSING` returns all people with a `housing` tag.","lastModifiedDate":"2024-03-04"},{"lineNumber":158,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":159,"author":{"gitId":"-"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"SimHanKiong"},"content":"Deletes the specified person from FAPro.","lastModifiedDate":"2024-03-03"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"* Deletes the person at the specified `INDEX`.","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"SimHanKiong"},"content":"* `list` followed by `delete 2` deletes the 2nd person in FAPro.","lastModifiedDate":"2024-03-03"},{"lineNumber":171,"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":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"SimHanKiong"},"content":"### Viewing the detailed profile a person : `select`","lastModifiedDate":"2024-03-04"},{"lineNumber":174,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":175,"author":{"gitId":"SimHanKiong"},"content":"View a more detailed profile of the specified person from FAPro.","lastModifiedDate":"2024-03-03"},{"lineNumber":176,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":177,"author":{"gitId":"ziyang27"},"content":"Format: `select INDEX`","lastModifiedDate":"2024-02-29"},{"lineNumber":178,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":179,"author":{"gitId":"ziyang27"},"content":"* Displays the profile of the client at the specified `INDEX`.","lastModifiedDate":"2024-02-29"},{"lineNumber":180,"author":{"gitId":"ziyang27"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2024-02-29"},{"lineNumber":181,"author":{"gitId":"ziyang27"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-02-29"},{"lineNumber":182,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":183,"author":{"gitId":"ziyang27"},"content":"Examples:","lastModifiedDate":"2024-02-29"},{"lineNumber":184,"author":{"gitId":"SimHanKiong"},"content":"* `list` followed by `select 2` shows the detailed profile of the 2nd person in FAPro.","lastModifiedDate":"2024-03-03"},{"lineNumber":185,"author":{"gitId":"ziyang27"},"content":"* `find Betsy` followed by `select 1` shows the detailed profile of the 1st person in the results of the `find` command.","lastModifiedDate":"2024-02-29"},{"lineNumber":186,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":187,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":188,"author":{"gitId":"tanyunchao"},"content":"### View contacts of all upcoming appointments: `upcoming`","lastModifiedDate":"2024-03-07"},{"lineNumber":189,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":190,"author":{"gitId":"ziyang27"},"content":"View all the contacts of all upcoming appointments ordered by date (earliest to latest).","lastModifiedDate":"2024-03-07"},{"lineNumber":191,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":192,"author":{"gitId":"tanyunchao"},"content":"Format: `upcoming`","lastModifiedDate":"2024-03-07"},{"lineNumber":193,"author":{"gitId":"tanyunchao"},"content":" ","lastModifiedDate":"2024-03-07"},{"lineNumber":194,"author":{"gitId":"ziyang27"},"content":"- `upcoming` displays all upcoming appointments.","lastModifiedDate":"2024-03-07"},{"lineNumber":195,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":196,"author":{"gitId":"tanyunchao"},"content":"Examples:","lastModifiedDate":"2024-03-07"},{"lineNumber":197,"author":{"gitId":"ziyang27"},"content":"- `upcoming` would show the 3 contacts if there are 3 contacts with upcoming appointments.","lastModifiedDate":"2024-03-07"},{"lineNumber":198,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":199,"author":{"gitId":"Colex2000"},"content":"### Tag a client\u0027s profile as last contacted : `lastcontact`","lastModifiedDate":"2024-03-06"},{"lineNumber":200,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":201,"author":{"gitId":"Colex2000"},"content":"Adds a client to the recently contacted list in FAPro.","lastModifiedDate":"2024-03-06"},{"lineNumber":202,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":203,"author":{"gitId":"Colex2000"},"content":"Format: `lastcontact n/NAME lc/DATETIME`","lastModifiedDate":"2024-03-12"},{"lineNumber":204,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":205,"author":{"gitId":"Colex2000"},"content":"* The input is case-insensitive. e.g. `JoHn Doe` will match `john doe`.","lastModifiedDate":"2024-03-06"},{"lineNumber":206,"author":{"gitId":"Colex2000"},"content":"* In case of duplicate names, all matching names will be listed with their ID code and other details.","lastModifiedDate":"2024-03-06"},{"lineNumber":207,"author":{"gitId":"Colex2000"},"content":"* User will need to add the respective ID code to existing input in case of duplicate.","lastModifiedDate":"2024-03-06"},{"lineNumber":208,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":209,"author":{"gitId":"Colex2000"},"content":"Example:","lastModifiedDate":"2024-03-06"},{"lineNumber":210,"author":{"gitId":"Colex2000"},"content":"* `lastcontact n/John doe lc/05-09-2024 1955` tags the client with name `john doe` and assigns the date `05 Sep 2024 7:55pm` as last contacted.","lastModifiedDate":"2024-03-12"},{"lineNumber":211,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":212,"author":{"gitId":"Colex2000"},"content":"Example (For duplicate names):","lastModifiedDate":"2024-03-06"},{"lineNumber":213,"author":{"gitId":"Colex2000"},"content":"* `lastcontact n/John doe#0005 lc/05-09-2024 1955` tags the client with name `john doe#0005` and assigns the date `05 Sep 2024 7:55pm` as last contacted.","lastModifiedDate":"2024-03-12"},{"lineNumber":214,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":215,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":216,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"SimHanKiong"},"content":"Clears all entries from FAPro.","lastModifiedDate":"2024-03-03"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":226,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"ziyang27"},"content":"FAPro data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.","lastModifiedDate":"2024-02-29"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":234,"author":{"gitId":"ziyang27"},"content":"FAPro 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":"2024-02-29"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":236,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":238,"author":{"gitId":"-"},"content":"**Caution:**","lastModifiedDate":"2023-09-12"},{"lineNumber":239,"author":{"gitId":"ziyang27"},"content":"If your changes to the data file makes its format invalid, FAPro 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.\u003cbr\u003e","lastModifiedDate":"2024-02-29"},{"lineNumber":240,"author":{"gitId":"SimHanKiong"},"content":"Furthermore, certain edits can cause FAPro to behave in unexpected ways (e.g., if a value entered is outside the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.","lastModifiedDate":"2024-03-03"},{"lineNumber":241,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":243,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"ziyang27"},"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 FAPro home folder.","lastModifiedDate":"2024-02-29"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":254,"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":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":256,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":258,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"ziyang27"},"content":"-----------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-03-07"},{"lineNumber":262,"author":{"gitId":"SimHanKiong"},"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":"2024-03-04"},{"lineNumber":263,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":264,"author":{"gitId":"SimHanKiong"},"content":"**Delete** | `delete INDEX`\u003cbr\u003e e.g. `delete 3`","lastModifiedDate":"2024-03-04"},{"lineNumber":265,"author":{"gitId":"SimHanKiong"},"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":"2024-03-04"},{"lineNumber":266,"author":{"gitId":"SimHanKiong"},"content":"**Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g. `find James Jake`","lastModifiedDate":"2024-03-04"},{"lineNumber":267,"author":{"gitId":"SimHanKiong"},"content":"**TagFind**| `tagfind TAG` \u003cbr\u003e e.g. `tagfind car`","lastModifiedDate":"2024-03-04"},{"lineNumber":268,"author":{"gitId":"ziyang27"},"content":"**Lastcontact**| `lastcontact NAME [d/DATE] [tm/TIME]` \u003cbr\u003e e.g. `lastcontact John doe d/05-09-2024 tm/1955`","lastModifiedDate":"2024-03-07"},{"lineNumber":269,"author":{"gitId":"tanyunchao"},"content":"**Upcoming**| `upcoming`","lastModifiedDate":"2024-03-07"},{"lineNumber":270,"author":{"gitId":"-"},"content":"**List** | `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"SimHanKiong"},"content":"**Select** | `select INDEX`\u003cbr\u003e e.g. `select 1`","lastModifiedDate":"2024-03-04"},{"lineNumber":272,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"SimHanKiong":34,"ziyang27":32,"Colex2000":22,"tanyunchao":11,"-":173}},{"path":"docs/_markbind/layouts/default.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003chead-bottom\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003clink rel\u003d\"stylesheet\" href\u003d\"{{baseUrl}}/stylesheets/main.css\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c/head-bottom\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003cheader sticky\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cnavbar type\u003d\"dark\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"ziyang27"},"content":" \u003ca slot\u003d\"brand\" href\u003d\"{{baseUrl}}/index.html\" title\u003d\"Home\" class\u003d\"navbar-brand\"\u003eFAPro\u003c/a\u003e","lastModifiedDate":"2024-02-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/index.html\" class\u003d\"nav-link\"\u003eHome\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/UserGuide.html\" class\u003d\"nav-link\"\u003eUser Guide\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/DeveloperGuide.html\" class\u003d\"nav-link\"\u003eDeveloper Guide\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/AboutUs.html\" class\u003d\"nav-link\"\u003eAbout Us\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"https://github.com/se-edu/addressbook-level3\" target\u003d\"_blank\" class\u003d\"nav-link\"\u003e\u003cmd\u003e:fab-github:\u003c/md\u003e\u003c/a\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cli slot\u003d\"right\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cform class\u003d\"navbar-form\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003csearchbar :data\u003d\"searchData\" placeholder\u003d\"Search\" :on-hit\u003d\"searchCallback\" menu-align-right\u003e\u003c/searchbar\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/form\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/navbar\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"\u003c/header\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"flex-body\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"site-nav\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"site-nav-top\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"fw-bold mb-2\" style\u003d\"font-size: 1.25rem;\"\u003eSite Map\u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003csite-nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"* [Home]({{ baseUrl }}/index.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"* [User Guide]({{ baseUrl }}/UserGuide.html) :expanded:","lastModifiedDate":"2023-09-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * [Quick Start]({{ baseUrl }}/UserGuide.html#quick-start)","lastModifiedDate":"2023-09-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * [Features]({{ baseUrl }}/UserGuide.html#features)","lastModifiedDate":"2023-09-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * [FAQ]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * [Command Summary]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":"* [Developer Guide]({{ baseUrl }}/DeveloperGuide.html) :expanded:","lastModifiedDate":"2023-09-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * [Acknowledgements]({{ baseUrl }}/DeveloperGuide.html#acknowledgements)","lastModifiedDate":"2023-09-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * [Setting Up]({{ baseUrl }}/DeveloperGuide.html#setting-up-getting-started)","lastModifiedDate":"2023-09-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * [Design]({{ baseUrl }}/DeveloperGuide.html#design)","lastModifiedDate":"2023-09-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * [Implementation]({{ baseUrl }}/DeveloperGuide.html#implementation)","lastModifiedDate":"2023-09-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * [Documentation, logging, testing, configuration, dev-ops]({{ baseUrl }}/DeveloperGuide.html#documentation-logging-testing-configuration-dev-ops)","lastModifiedDate":"2023-09-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * [Appendix: Requirements]({{ baseUrl }}/DeveloperGuide.html#appendix-requirements)","lastModifiedDate":"2023-09-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * [Appendix: Instructions for manual testing]({{ baseUrl }}/DeveloperGuide.html#appendix-instructions-for-manual-testing)","lastModifiedDate":"2023-09-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":"* Tutorials","lastModifiedDate":"2023-09-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * [Tracing code]({{ baseUrl }}/tutorials/TracingCode.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * [Adding a command]({{ baseUrl }}/tutorials/AddRemark.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * [Removing Fields]({{ baseUrl }}/tutorials/RemovingFields.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [About Us]({{ baseUrl }}/AboutUs.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/site-nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cdiv id\u003d\"content-wrapper\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" {{ content }}","lastModifiedDate":"2023-09-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"page-nav\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cpage-nav /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003cscroll-top-button\u003e\u003c/scroll-top-button\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":"\u003cfooter\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003c!-- Support MarkBind by including a link to us on your landing page! --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"text-center\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u003csmall\u003e[\u003cmd\u003e**Powered by**\u003c/md\u003e \u003cimg src\u003d\"https://markbind.org/favicon.ico\" width\u003d\"30\"\u003e {{MarkBind}}, generated on {{timestamp}}]\u003c/small\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003c/footer\u003e","lastModifiedDate":"2023-09-12"}],"authorContributionMap":{"ziyang27":1,"-":66}},{"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":"-"},"content":"Class UniquePersonList","lastModifiedDate":"2021-07-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Class Person","lastModifiedDate":"2019-07-03"},{"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":"-"},"content":"Class Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"Class Tag","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"tanyunchao"},"content":"Class Upcoming","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"Colex2000"},"content":"Class LastContact","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":26,"author":{"gitId":"-"},"content":"Class I #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"AddressBook .up.|\u003e ReadOnlyAddressBook","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"ModelManager .up.|\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"Model .right.\u003e ReadOnlyUserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"Model .left.\u003e ReadOnlyAddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"ModelManager -left-\u003e \"1\" AddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"ModelManager -right-\u003e \"1\" UserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":39,"author":{"gitId":"-"},"content":"UserPrefs .up.|\u003e ReadOnlyUserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"AddressBook *--\u003e \"1\" UniquePersonList","lastModifiedDate":"2019-07-30"},{"lineNumber":42,"author":{"gitId":"-"},"content":"UniquePersonList --\u003e \"~* all\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":43,"author":{"gitId":"-"},"content":"Person *--\u003e Name","lastModifiedDate":"2019-07-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"Person *--\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"Person *--\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"Person *--\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":47,"author":{"gitId":"-"},"content":"Person *--\u003e \"*\" Tag","lastModifiedDate":"2019-07-03"},{"lineNumber":48,"author":{"gitId":"tanyunchao"},"content":"Person *--\u003e Upcoming","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"Colex2000"},"content":"Person *--\u003e LastContact","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"Person -[hidden]up--\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"UniquePersonList -[hidden]right-\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":"Name -[hidden]right-\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":55,"author":{"gitId":"-"},"content":"Phone -[hidden]right-\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":"Address -[hidden]right-\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":57,"author":{"gitId":"tanyunchao"},"content":"Email -[hidden]right-\u003e Tag","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"tanyunchao"},"content":"Tag -[hidden]right-\u003e Upcoming","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"SimHanKiong"},"content":"Upcoming -[hidden]right-\u003e LastContact","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":61,"author":{"gitId":"-"},"content":"ModelManager --\u003e \"~* filtered\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":62,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"SimHanKiong":1,"Colex2000":2,"tanyunchao":4,"-":55}},{"path":"docs/diagrams/PredicateClasses.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"ziyang27"},"content":"@startuml","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"ziyang27"},"content":"!include style.puml","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"ziyang27"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"ziyang27"},"content":"skinparam arrowColor MODEL_COLOR_T4","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"ziyang27"},"content":"skinparam classBackgroundColor MODEL_COLOR","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"ziyang27"},"content":"package \"Predicate classes\" {","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"ziyang27"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nPredicate\" as Predicate","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"ziyang27"},"content":"Class \"IsSamePersonPredicate\"","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"ziyang27"},"content":"Class \"NameContainsKeywordsPredicate\"","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":"Class \"TagsOrFoundPredicate\"","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":"Class \"TagsAndFoundPredicate\"","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"Colex2000"},"content":"Class \"IsLastContactedPredicate\"","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"ziyang27"},"content":"}","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"ziyang27"},"content":"Class \"SelectCommand\"","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"ziyang27"},"content":"Class \"FindCommand\"","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":"Class \"FindTagsOrCommand\"","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":"Class \"FindTagsAndCommand\"","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"Colex2000"},"content":"Class \"LastContactCommand\"","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"ziyang27"},"content":"SelectCommand ..\u003e IsSamePersonPredicate : \u003c\u003ccreate\u003e\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"ziyang27"},"content":"FindCommand --\u003e NameContainsKeywordsPredicate","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"ziyang27"},"content":"IsSamePersonPredicate .up.|\u003e Predicate","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"ziyang27"},"content":"NameContainsKeywordsPredicate .up.|\u003e Predicate","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":"FindTagsOrCommand --\u003e TagsOrFoundPredicate","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":"FindTagsAndCommand --\u003e TagsAndFoundPredicate","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"Colex2000"},"content":"LastContactCommand --\u003e IsLastContactedPredicate","lastModifiedDate":"2024-03-23"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":"TagsOrFoundPredicate ..|\u003e Predicate","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"SimHanKiong"},"content":"TagsAndFoundPredicate ..|\u003e Predicate","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"Colex2000"},"content":"IsLastContactedPredicate ..|\u003e Predicate","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"ziyang27"},"content":"@enduml","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"SimHanKiong":8,"ziyang27":20,"Colex2000":4}},{"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":"ziyang27"},"content":"# FAPro","lastModifiedDate":"2024-03-07"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"ziyang27"},"content":"[![CI Status](https://github.com/se-edu/addressbook-level3/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S2-CS2103T-F13-2/tp/actions)","lastModifiedDate":"2024-03-07"},{"lineNumber":9,"author":{"gitId":"ziyang27"},"content":"[![codecov](https://codecov.io/gh/se-edu/addressbook-level3/branch/master/graph/badge.svg)](https://codecov.io/gh/AY2324S2-CS2103T-F13-2)","lastModifiedDate":"2024-03-07"},{"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":"-"},"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":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"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":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"* If you are interested about developing AddressBook, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.","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":"**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":{"ziyang27":3,"-":18}},{"path":"docs/team/simhankiong.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"ziyang27"},"content":"---","lastModifiedDate":"2024-02-29"},{"lineNumber":2,"author":{"gitId":"ziyang27"},"content":" layout: default.md","lastModifiedDate":"2024-02-29"},{"lineNumber":3,"author":{"gitId":"ziyang27"},"content":" title: \"John Doe\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-02-29"},{"lineNumber":4,"author":{"gitId":"ziyang27"},"content":"---","lastModifiedDate":"2024-02-29"},{"lineNumber":5,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":6,"author":{"gitId":"ziyang27"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-02-29"},{"lineNumber":7,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":8,"author":{"gitId":"ziyang27"},"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":"2024-02-29"},{"lineNumber":9,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":10,"author":{"gitId":"ziyang27"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-02-29"},{"lineNumber":11,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":12,"author":{"gitId":"ziyang27"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-02-29"},{"lineNumber":13,"author":{"gitId":"ziyang27"},"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":"2024-02-29"},{"lineNumber":14,"author":{"gitId":"ziyang27"},"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":"2024-02-29"},{"lineNumber":15,"author":{"gitId":"ziyang27"},"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":"2024-02-29"},{"lineNumber":16,"author":{"gitId":"ziyang27"},"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":"2024-02-29"},{"lineNumber":17,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":18,"author":{"gitId":"ziyang27"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-02-29"},{"lineNumber":19,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":20,"author":{"gitId":"ziyang27"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-02-29"},{"lineNumber":21,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":22,"author":{"gitId":"ziyang27"},"content":"* **Project management**:","lastModifiedDate":"2024-02-29"},{"lineNumber":23,"author":{"gitId":"ziyang27"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-02-29"},{"lineNumber":24,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":25,"author":{"gitId":"ziyang27"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-02-29"},{"lineNumber":26,"author":{"gitId":"ziyang27"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-02-29"},{"lineNumber":27,"author":{"gitId":"ziyang27"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-02-29"},{"lineNumber":28,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":29,"author":{"gitId":"ziyang27"},"content":"* **Documentation**:","lastModifiedDate":"2024-02-29"},{"lineNumber":30,"author":{"gitId":"ziyang27"},"content":" * User Guide:","lastModifiedDate":"2024-02-29"},{"lineNumber":31,"author":{"gitId":"ziyang27"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-02-29"},{"lineNumber":32,"author":{"gitId":"ziyang27"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-02-29"},{"lineNumber":33,"author":{"gitId":"ziyang27"},"content":" * Developer Guide:","lastModifiedDate":"2024-02-29"},{"lineNumber":34,"author":{"gitId":"ziyang27"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-02-29"},{"lineNumber":35,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":36,"author":{"gitId":"ziyang27"},"content":"* **Community**:","lastModifiedDate":"2024-02-29"},{"lineNumber":37,"author":{"gitId":"ziyang27"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-02-29"},{"lineNumber":38,"author":{"gitId":"ziyang27"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-02-29"},{"lineNumber":39,"author":{"gitId":"ziyang27"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-02-29"},{"lineNumber":40,"author":{"gitId":"ziyang27"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-02-29"},{"lineNumber":41,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":42,"author":{"gitId":"ziyang27"},"content":"* **Tools**:","lastModifiedDate":"2024-02-29"},{"lineNumber":43,"author":{"gitId":"ziyang27"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-02-29"},{"lineNumber":44,"author":{"gitId":"ziyang27"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-02-29"},{"lineNumber":45,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":46,"author":{"gitId":"ziyang27"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-02-29"}],"authorContributionMap":{"ziyang27":46}},{"path":"docs/team/tanyunchao.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"ziyang27"},"content":"---","lastModifiedDate":"2024-02-29"},{"lineNumber":2,"author":{"gitId":"ziyang27"},"content":" layout: default.md","lastModifiedDate":"2024-02-29"},{"lineNumber":3,"author":{"gitId":"ziyang27"},"content":" title: \"John Doe\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-02-29"},{"lineNumber":4,"author":{"gitId":"ziyang27"},"content":"---","lastModifiedDate":"2024-02-29"},{"lineNumber":5,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":6,"author":{"gitId":"ziyang27"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-02-29"},{"lineNumber":7,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":8,"author":{"gitId":"ziyang27"},"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":"2024-02-29"},{"lineNumber":9,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":10,"author":{"gitId":"ziyang27"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-02-29"},{"lineNumber":11,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":12,"author":{"gitId":"ziyang27"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-02-29"},{"lineNumber":13,"author":{"gitId":"ziyang27"},"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":"2024-02-29"},{"lineNumber":14,"author":{"gitId":"ziyang27"},"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":"2024-02-29"},{"lineNumber":15,"author":{"gitId":"ziyang27"},"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":"2024-02-29"},{"lineNumber":16,"author":{"gitId":"ziyang27"},"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":"2024-02-29"},{"lineNumber":17,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":18,"author":{"gitId":"ziyang27"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-02-29"},{"lineNumber":19,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":20,"author":{"gitId":"ziyang27"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-02-29"},{"lineNumber":21,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":22,"author":{"gitId":"ziyang27"},"content":"* **Project management**:","lastModifiedDate":"2024-02-29"},{"lineNumber":23,"author":{"gitId":"ziyang27"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-02-29"},{"lineNumber":24,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":25,"author":{"gitId":"ziyang27"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-02-29"},{"lineNumber":26,"author":{"gitId":"ziyang27"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-02-29"},{"lineNumber":27,"author":{"gitId":"ziyang27"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-02-29"},{"lineNumber":28,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":29,"author":{"gitId":"ziyang27"},"content":"* **Documentation**:","lastModifiedDate":"2024-02-29"},{"lineNumber":30,"author":{"gitId":"ziyang27"},"content":" * User Guide:","lastModifiedDate":"2024-02-29"},{"lineNumber":31,"author":{"gitId":"ziyang27"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-02-29"},{"lineNumber":32,"author":{"gitId":"ziyang27"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-02-29"},{"lineNumber":33,"author":{"gitId":"ziyang27"},"content":" * Developer Guide:","lastModifiedDate":"2024-02-29"},{"lineNumber":34,"author":{"gitId":"ziyang27"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-02-29"},{"lineNumber":35,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":36,"author":{"gitId":"ziyang27"},"content":"* **Community**:","lastModifiedDate":"2024-02-29"},{"lineNumber":37,"author":{"gitId":"ziyang27"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-02-29"},{"lineNumber":38,"author":{"gitId":"ziyang27"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-02-29"},{"lineNumber":39,"author":{"gitId":"ziyang27"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-02-29"},{"lineNumber":40,"author":{"gitId":"ziyang27"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-02-29"},{"lineNumber":41,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":42,"author":{"gitId":"ziyang27"},"content":"* **Tools**:","lastModifiedDate":"2024-02-29"},{"lineNumber":43,"author":{"gitId":"ziyang27"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-02-29"},{"lineNumber":44,"author":{"gitId":"ziyang27"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-02-29"},{"lineNumber":45,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":46,"author":{"gitId":"ziyang27"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-02-29"}],"authorContributionMap":{"ziyang27":46}},{"path":"docs/team/tanziyang.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"ziyang27"},"content":"---","lastModifiedDate":"2024-02-29"},{"lineNumber":2,"author":{"gitId":"ziyang27"},"content":" layout: default.md","lastModifiedDate":"2024-02-29"},{"lineNumber":3,"author":{"gitId":"ziyang27"},"content":" title: \"John Doe\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-02-29"},{"lineNumber":4,"author":{"gitId":"ziyang27"},"content":"---","lastModifiedDate":"2024-02-29"},{"lineNumber":5,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":6,"author":{"gitId":"ziyang27"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-02-29"},{"lineNumber":7,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":8,"author":{"gitId":"ziyang27"},"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":"2024-02-29"},{"lineNumber":9,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":10,"author":{"gitId":"ziyang27"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-02-29"},{"lineNumber":11,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":12,"author":{"gitId":"ziyang27"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-02-29"},{"lineNumber":13,"author":{"gitId":"ziyang27"},"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":"2024-02-29"},{"lineNumber":14,"author":{"gitId":"ziyang27"},"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":"2024-02-29"},{"lineNumber":15,"author":{"gitId":"ziyang27"},"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":"2024-02-29"},{"lineNumber":16,"author":{"gitId":"ziyang27"},"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":"2024-02-29"},{"lineNumber":17,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":18,"author":{"gitId":"ziyang27"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-02-29"},{"lineNumber":19,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":20,"author":{"gitId":"ziyang27"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-02-29"},{"lineNumber":21,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":22,"author":{"gitId":"ziyang27"},"content":"* **Project management**:","lastModifiedDate":"2024-02-29"},{"lineNumber":23,"author":{"gitId":"ziyang27"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-02-29"},{"lineNumber":24,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":25,"author":{"gitId":"ziyang27"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-02-29"},{"lineNumber":26,"author":{"gitId":"ziyang27"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-02-29"},{"lineNumber":27,"author":{"gitId":"ziyang27"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-02-29"},{"lineNumber":28,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":29,"author":{"gitId":"ziyang27"},"content":"* **Documentation**:","lastModifiedDate":"2024-02-29"},{"lineNumber":30,"author":{"gitId":"ziyang27"},"content":" * User Guide:","lastModifiedDate":"2024-02-29"},{"lineNumber":31,"author":{"gitId":"ziyang27"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-02-29"},{"lineNumber":32,"author":{"gitId":"ziyang27"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-02-29"},{"lineNumber":33,"author":{"gitId":"ziyang27"},"content":" * Developer Guide:","lastModifiedDate":"2024-02-29"},{"lineNumber":34,"author":{"gitId":"ziyang27"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-02-29"},{"lineNumber":35,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":36,"author":{"gitId":"ziyang27"},"content":"* **Community**:","lastModifiedDate":"2024-02-29"},{"lineNumber":37,"author":{"gitId":"ziyang27"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-02-29"},{"lineNumber":38,"author":{"gitId":"ziyang27"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-02-29"},{"lineNumber":39,"author":{"gitId":"ziyang27"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-02-29"},{"lineNumber":40,"author":{"gitId":"ziyang27"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-02-29"},{"lineNumber":41,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":42,"author":{"gitId":"ziyang27"},"content":"* **Tools**:","lastModifiedDate":"2024-02-29"},{"lineNumber":43,"author":{"gitId":"ziyang27"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-02-29"},{"lineNumber":44,"author":{"gitId":"ziyang27"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-02-29"},{"lineNumber":45,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":46,"author":{"gitId":"ziyang27"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-02-29"}],"authorContributionMap":{"ziyang27":46}},{"path":"docs/team/tiongchuanyao.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"ziyang27"},"content":"---","lastModifiedDate":"2024-02-29"},{"lineNumber":2,"author":{"gitId":"ziyang27"},"content":" layout: default.md","lastModifiedDate":"2024-02-29"},{"lineNumber":3,"author":{"gitId":"ziyang27"},"content":" title: \"John Doe\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-02-29"},{"lineNumber":4,"author":{"gitId":"ziyang27"},"content":"---","lastModifiedDate":"2024-02-29"},{"lineNumber":5,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":6,"author":{"gitId":"ziyang27"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-02-29"},{"lineNumber":7,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":8,"author":{"gitId":"ziyang27"},"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":"2024-02-29"},{"lineNumber":9,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":10,"author":{"gitId":"ziyang27"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-02-29"},{"lineNumber":11,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":12,"author":{"gitId":"ziyang27"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-02-29"},{"lineNumber":13,"author":{"gitId":"ziyang27"},"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":"2024-02-29"},{"lineNumber":14,"author":{"gitId":"ziyang27"},"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":"2024-02-29"},{"lineNumber":15,"author":{"gitId":"ziyang27"},"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":"2024-02-29"},{"lineNumber":16,"author":{"gitId":"ziyang27"},"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":"2024-02-29"},{"lineNumber":17,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":18,"author":{"gitId":"ziyang27"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-02-29"},{"lineNumber":19,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":20,"author":{"gitId":"ziyang27"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-02-29"},{"lineNumber":21,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":22,"author":{"gitId":"ziyang27"},"content":"* **Project management**:","lastModifiedDate":"2024-02-29"},{"lineNumber":23,"author":{"gitId":"ziyang27"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-02-29"},{"lineNumber":24,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":25,"author":{"gitId":"ziyang27"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-02-29"},{"lineNumber":26,"author":{"gitId":"ziyang27"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-02-29"},{"lineNumber":27,"author":{"gitId":"ziyang27"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-02-29"},{"lineNumber":28,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":29,"author":{"gitId":"ziyang27"},"content":"* **Documentation**:","lastModifiedDate":"2024-02-29"},{"lineNumber":30,"author":{"gitId":"ziyang27"},"content":" * User Guide:","lastModifiedDate":"2024-02-29"},{"lineNumber":31,"author":{"gitId":"ziyang27"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-02-29"},{"lineNumber":32,"author":{"gitId":"ziyang27"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-02-29"},{"lineNumber":33,"author":{"gitId":"ziyang27"},"content":" * Developer Guide:","lastModifiedDate":"2024-02-29"},{"lineNumber":34,"author":{"gitId":"ziyang27"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-02-29"},{"lineNumber":35,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":36,"author":{"gitId":"ziyang27"},"content":"* **Community**:","lastModifiedDate":"2024-02-29"},{"lineNumber":37,"author":{"gitId":"ziyang27"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-02-29"},{"lineNumber":38,"author":{"gitId":"ziyang27"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-02-29"},{"lineNumber":39,"author":{"gitId":"ziyang27"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-02-29"},{"lineNumber":40,"author":{"gitId":"ziyang27"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-02-29"},{"lineNumber":41,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":42,"author":{"gitId":"ziyang27"},"content":"* **Tools**:","lastModifiedDate":"2024-02-29"},{"lineNumber":43,"author":{"gitId":"ziyang27"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-02-29"},{"lineNumber":44,"author":{"gitId":"ziyang27"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-02-29"},{"lineNumber":45,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":46,"author":{"gitId":"ziyang27"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-02-29"}],"authorContributionMap":{"ziyang27":46}},{"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":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"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":"-"},"content":" /** Returns an unmodifiable view of the filtered list of persons */","lastModifiedDate":"2017-09-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10"},{"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":"Colex2000"},"content":" ObservableList\u003cPerson\u003e getSortedAndFilteredPersonList();","lastModifiedDate":"2024-03-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"Colex2000":1,"-":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":"-"},"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":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"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":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList();","lastModifiedDate":"2016-09-25"},{"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":"Colex2000"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":89,"author":{"gitId":"Colex2000"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":90,"author":{"gitId":"Colex2000"},"content":" public ObservableList\u003cPerson\u003e getSortedAndFilteredPersonList() {","lastModifiedDate":"2024-03-23"},{"lineNumber":91,"author":{"gitId":"Colex2000"},"content":" return model.getSortedPersonList();","lastModifiedDate":"2024-03-23"},{"lineNumber":92,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"Colex2000":5,"-":88}},{"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":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" person.getTags().forEach(builder::append);","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"tanyunchao"},"content":" builder.append(\"; Upcoming: \")","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"tanyunchao"},"content":" .append(person.getUpcoming());","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"Colex2000"},"content":" builder.append(\"; Last contacted: \")","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"Colex2000"},"content":" .append(person.getLastcontact().toString())","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"tanyunchao"},"content":" .append(\";\");","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"Colex2000":2,"tanyunchao":3,"-":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":"Colex2000"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LASTCONTACT;","lastModifiedDate":"2024-03-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":"tanyunchao"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_UPCOMING;","lastModifiedDate":"2024-03-15"},{"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":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-08-24"},{"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":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a person to the address book. \"","lastModifiedDate":"2016-08-24"},{"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":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2017-05-09"},{"lineNumber":31,"author":{"gitId":"tanyunchao"},"content":" + \"[\" + PREFIX_TAG + \"TAG]... \"","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"tanyunchao"},"content":" + \"[\" + PREFIX_UPCOMING + \"UPCOMING] \"","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"Colex2000"},"content":" + \"[\" + PREFIX_LASTCONTACT + \"LASTCONTACT]\\n\"","lastModifiedDate":"2024-03-13"},{"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":"-"},"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":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2017-05-09"},{"lineNumber":40,"author":{"gitId":"tanyunchao"},"content":" + PREFIX_TAG + \"owesMoney\"","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"tanyunchao"},"content":" + PREFIX_UPCOMING + \"01-01-2021 12:00\"","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"Colex2000"},"content":" + PREFIX_LASTCONTACT + \"13-03-2024 0641\";","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: %1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book\";","lastModifiedDate":"2016-08-24"},{"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":{"Colex2000":3,"tanyunchao":5,"-":82}},{"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":"Colex2000"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LASTCONTACT;","lastModifiedDate":"2024-03-18"},{"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":"tanyunchao"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_UPCOMING;","lastModifiedDate":"2024-03-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":"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":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26"},{"lineNumber":28,"author":{"gitId":"Colex2000"},"content":"import seedu.address.model.person.LastContact;","lastModifiedDate":"2024-03-13"},{"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":"2016-12-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-26"},{"lineNumber":32,"author":{"gitId":"tanyunchao"},"content":"import seedu.address.model.person.Upcoming;","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"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":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":50,"author":{"gitId":"tanyunchao"},"content":" + \"[\" + PREFIX_TAG + \"TAG] \"","lastModifiedDate":"2024-03-15"},{"lineNumber":51,"author":{"gitId":"Colex2000"},"content":" + \"[\" + PREFIX_UPCOMING + \"UPCOMING] \"","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"Colex2000"},"content":" + \"[\" + PREFIX_LASTCONTACT + \"LASTCONTACT]...\\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26"},{"lineNumber":58,"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":59,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25"},{"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":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25"},{"lineNumber":69,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25"},{"lineNumber":70,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25"},{"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":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","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":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":89,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":92,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":93,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":94,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":97,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26"},{"lineNumber":100,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":101,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":104,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2017-06-21"},{"lineNumber":108,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2017-06-21"},{"lineNumber":109,"author":{"gitId":"tanyunchao"},"content":" Upcoming updatedUpcoming \u003d editPersonDescriptor.getUpcoming().orElse(personToEdit.getUpcoming());","lastModifiedDate":"2024-03-15"},{"lineNumber":110,"author":{"gitId":"Colex2000"},"content":" LastContact updatedLastContact \u003d editPersonDescriptor.getLastcontact().orElse(personToEdit.getLastcontact());","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":112,"author":{"gitId":"tanyunchao"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTags, updatedUpcoming,","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"tanyunchao"},"content":" updatedLastContact);","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" return false;","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":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":128,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13"},{"lineNumber":129,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":141,"author":{"gitId":"tanyunchao"},"content":" * Stores the details to edit the person with. Each non-empty field value will","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"tanyunchao"},"content":" * replace the corresponding field value of the person.","lastModifiedDate":"2024-03-17"},{"lineNumber":143,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":144,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26"},{"lineNumber":145,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21"},{"lineNumber":146,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":147,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":148,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21"},{"lineNumber":149,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21"},{"lineNumber":150,"author":{"gitId":"tanyunchao"},"content":" private Upcoming upcoming;","lastModifiedDate":"2024-03-15"},{"lineNumber":151,"author":{"gitId":"Colex2000"},"content":" private LastContact lastContact;","lastModifiedDate":"2024-03-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":153,"author":{"gitId":"tanyunchao"},"content":" public EditPersonDescriptor() {","lastModifiedDate":"2024-03-17"},{"lineNumber":154,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":156,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":157,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11"},{"lineNumber":158,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":159,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":160,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26"},{"lineNumber":161,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15"},{"lineNumber":162,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15"},{"lineNumber":163,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15"},{"lineNumber":164,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15"},{"lineNumber":165,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11"},{"lineNumber":166,"author":{"gitId":"tanyunchao"},"content":" setUpcoming(toCopy.upcoming);","lastModifiedDate":"2024-03-15"},{"lineNumber":167,"author":{"gitId":"Colex2000"},"content":" setLastContact(toCopy.lastContact);","lastModifiedDate":"2024-03-13"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":170,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":171,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26"},{"lineNumber":172,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":173,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26"},{"lineNumber":174,"author":{"gitId":"Colex2000"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, tags, upcoming, lastContact);","lastModifiedDate":"2024-03-18"},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":177,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21"},{"lineNumber":178,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21"},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":181,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":182,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21"},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":185,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21"},{"lineNumber":186,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":189,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26"},{"lineNumber":190,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21"},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":193,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21"},{"lineNumber":194,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":197,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":198,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21"},{"lineNumber":199,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":201,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21"},{"lineNumber":202,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21"},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":205,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26"},{"lineNumber":206,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21"},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":209,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":210,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11"},{"lineNumber":211,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":212,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":213,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21"},{"lineNumber":214,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11"},{"lineNumber":215,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":217,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":218,"author":{"gitId":"tanyunchao"},"content":" * Returns an unmodifiable tag set, which throws","lastModifiedDate":"2024-03-17"},{"lineNumber":219,"author":{"gitId":"tanyunchao"},"content":" * {@code UnsupportedOperationException}","lastModifiedDate":"2024-03-17"},{"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":"tanyunchao"},"content":" public void setUpcoming(Upcoming upcoming) {","lastModifiedDate":"2024-03-15"},{"lineNumber":228,"author":{"gitId":"tanyunchao"},"content":" this.upcoming \u003d upcoming;","lastModifiedDate":"2024-03-15"},{"lineNumber":229,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":230,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":231,"author":{"gitId":"tanyunchao"},"content":" public Optional\u003cUpcoming\u003e getUpcoming() {","lastModifiedDate":"2024-03-15"},{"lineNumber":232,"author":{"gitId":"tanyunchao"},"content":" return Optional.ofNullable(upcoming);","lastModifiedDate":"2024-03-15"},{"lineNumber":233,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":234,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":235,"author":{"gitId":"Colex2000"},"content":" public void setLastContact(LastContact lastContact) {","lastModifiedDate":"2024-03-18"},{"lineNumber":236,"author":{"gitId":"Colex2000"},"content":" this.lastContact \u003d lastContact;","lastModifiedDate":"2024-03-18"},{"lineNumber":237,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":238,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":239,"author":{"gitId":"Colex2000"},"content":" public Optional\u003cLastContact\u003e getLastcontact() {","lastModifiedDate":"2024-03-18"},{"lineNumber":240,"author":{"gitId":"Colex2000"},"content":" return Optional.ofNullable(lastContact);","lastModifiedDate":"2024-03-18"},{"lineNumber":241,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":242,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":243,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":244,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":245,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":246,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":247,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":248,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":249,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05"},{"lineNumber":250,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":251,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":252,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":253,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":254,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":255,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":256,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":257,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":258,"author":{"gitId":"tanyunchao"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags)","lastModifiedDate":"2024-03-15"},{"lineNumber":259,"author":{"gitId":"Colex2000"},"content":" \u0026\u0026 Objects.equals(upcoming, otherEditPersonDescriptor.upcoming)","lastModifiedDate":"2024-03-18"},{"lineNumber":260,"author":{"gitId":"Colex2000"},"content":" \u0026\u0026 Objects.equals(lastContact, otherEditPersonDescriptor.lastContact);","lastModifiedDate":"2024-03-18"},{"lineNumber":261,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":264,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":268,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":270,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":271,"author":{"gitId":"tanyunchao"},"content":" .add(\"upcoming\", upcoming)","lastModifiedDate":"2024-03-15"},{"lineNumber":272,"author":{"gitId":"Colex2000"},"content":" .add(\"lastcontact\", lastContact)","lastModifiedDate":"2024-03-18"},{"lineNumber":273,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":275,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":276,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":277,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"Colex2000":19,"tanyunchao":24,"-":234}},{"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":"-"},"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":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"SimHanKiong":1,"-":58}},{"path":"src/main/java/seedu/address/logic/commands/FindTagsAndCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.model.tag.TagsAndFoundPredicate;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":" * Finds and lists all persons in address book who contains all the tags in the argument.","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":" * Tag matching is case sensitive.","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":"public class FindTagsAndCommand extends Command {","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":" public static final String COMMAND_WORD \u003d \"findTagsAnd\";","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all persons who contains all of the tags \"","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":" + \"and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" + \"Parameters: TAG [MORE_TAGS]...\\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":" + \"Example: \" + COMMAND_WORD + \" car health death\";","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":" private final TagsAndFoundPredicate predicate;","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":" public FindTagsAndCommand(TagsAndFoundPredicate predicate) {","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"SimHanKiong"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"SimHanKiong"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"SimHanKiong"},"content":" model.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"SimHanKiong"},"content":" return new CommandResult(","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"SimHanKiong"},"content":" String.format(Messages.MESSAGE_PERSONS_LISTED_OVERVIEW, model.getFilteredPersonList().size()));","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"SimHanKiong"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"SimHanKiong"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"SimHanKiong"},"content":" return true;","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"SimHanKiong"},"content":" if (!(other instanceof FindTagsAndCommand)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"SimHanKiong"},"content":" return false;","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"SimHanKiong"},"content":" FindTagsAndCommand otherFindTagsAndCommand \u003d (FindTagsAndCommand) other;","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"SimHanKiong"},"content":" return predicate.equals(otherFindTagsAndCommand.predicate);","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"SimHanKiong"},"content":" public String toString() {","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"SimHanKiong"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"SimHanKiong"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"SimHanKiong"},"content":" .toString();","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"SimHanKiong":58}},{"path":"src/main/java/seedu/address/logic/commands/FindTagsOrCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.model.tag.TagsOrFoundPredicate;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":"/**","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":" * Finds and lists all persons in address book who contains any of tags in the argument.","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":" * Tag matching is case sensitive.","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":"public class FindTagsOrCommand extends Command {","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":" public static final String COMMAND_WORD \u003d \"findTagsOr\";","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all persons who contains any of the tags \"","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":" + \"and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" + \"Parameters: TAG [MORE_TAGS]...\\n\"","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":" + \"Example: \" + COMMAND_WORD + \" car health death\";","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":" private final TagsOrFoundPredicate predicate;","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":" public FindTagsOrCommand(TagsOrFoundPredicate predicate) {","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"SimHanKiong"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"SimHanKiong"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"SimHanKiong"},"content":" model.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"SimHanKiong"},"content":" return new CommandResult(","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"SimHanKiong"},"content":" String.format(Messages.MESSAGE_PERSONS_LISTED_OVERVIEW, model.getFilteredPersonList().size()));","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"SimHanKiong"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"SimHanKiong"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"SimHanKiong"},"content":" return true;","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"SimHanKiong"},"content":" if (!(other instanceof FindTagsOrCommand)) {","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"SimHanKiong"},"content":" return false;","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"SimHanKiong"},"content":" FindTagsOrCommand otherFindTagOrCommand \u003d (FindTagsOrCommand) other;","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"SimHanKiong"},"content":" return predicate.equals(otherFindTagOrCommand.predicate);","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"SimHanKiong"},"content":" public String toString() {","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"SimHanKiong"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"SimHanKiong"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"SimHanKiong"},"content":" .toString();","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":58,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"SimHanKiong":58}},{"path":"src/main/java/seedu/address/logic/commands/LastContactCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Colex2000"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"Colex2000"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"Colex2000"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"Colex2000"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"Colex2000"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"Colex2000"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"Colex2000"},"content":"import seedu.address.model.person.IsLastContactedPredicate;","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"Colex2000"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"Colex2000"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"Colex2000"},"content":" * Tags a person with last contacted date and time in the address book.","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"Colex2000"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"Colex2000"},"content":"public class LastContactCommand extends Command {","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"Colex2000"},"content":" public static final Comparator\u003cPerson\u003e SORT_COMPARATOR \u003d (person1, person2) -\u003e {","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"Colex2000"},"content":" // Assuming getLastContact() can be null and getDateTime() can also be null.","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"Colex2000"},"content":" LocalDateTime lastContactDateTime1 \u003d person1.getLastcontact().getDateTime();","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"Colex2000"},"content":" LocalDateTime lastContactDateTime2 \u003d person2.getLastcontact().getDateTime();","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"Colex2000"},"content":" // If both dates are non-null, compare them directly.","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"Colex2000"},"content":" return lastContactDateTime1.compareTo(lastContactDateTime2);","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"Colex2000"},"content":" };","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":27,"author":{"gitId":"Colex2000"},"content":" public static final String COMMAND_WORD \u003d \"lastcontact\";","lastModifiedDate":"2024-03-23"},{"lineNumber":28,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":29,"author":{"gitId":"Colex2000"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Show a list of last contacted clients \"","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"Colex2000"},"content":" + \"sorted according to dateTime\";","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"Colex2000"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all clients with last contact dates,\"","lastModifiedDate":"2024-03-23"},{"lineNumber":33,"author":{"gitId":"Colex2000"},"content":" + \" starting with the oldest date\";","lastModifiedDate":"2024-03-23"},{"lineNumber":34,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":35,"author":{"gitId":"Colex2000"},"content":" private final IsLastContactedPredicate predicate;","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":37,"author":{"gitId":"Colex2000"},"content":" public LastContactCommand(IsLastContactedPredicate predicate) {","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"Colex2000"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2024-03-23"},{"lineNumber":39,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":40,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"Colex2000"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":43,"author":{"gitId":"Colex2000"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-23"},{"lineNumber":44,"author":{"gitId":"Colex2000"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-23"},{"lineNumber":45,"author":{"gitId":"Colex2000"},"content":" model.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-23"},{"lineNumber":46,"author":{"gitId":"Colex2000"},"content":" model.sortFilteredPersonList(SORT_COMPARATOR);","lastModifiedDate":"2024-03-23"},{"lineNumber":47,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":48,"author":{"gitId":"Colex2000"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2024-03-22"},{"lineNumber":49,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":51,"author":{"gitId":"Colex2000"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":52,"author":{"gitId":"Colex2000"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"Colex2000"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-15"},{"lineNumber":54,"author":{"gitId":"Colex2000"},"content":" return true;","lastModifiedDate":"2024-03-15"},{"lineNumber":55,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":56,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":57,"author":{"gitId":"Colex2000"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-15"},{"lineNumber":58,"author":{"gitId":"Colex2000"},"content":" if (!(other instanceof LastContactCommand)) {","lastModifiedDate":"2024-03-15"},{"lineNumber":59,"author":{"gitId":"Colex2000"},"content":" return false;","lastModifiedDate":"2024-03-15"},{"lineNumber":60,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":61,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":62,"author":{"gitId":"Colex2000"},"content":" LastContactCommand otherLastContactCommand \u003d (LastContactCommand) other;","lastModifiedDate":"2024-03-15"},{"lineNumber":63,"author":{"gitId":"Colex2000"},"content":" return predicate.equals(otherLastContactCommand.predicate);","lastModifiedDate":"2024-03-22"},{"lineNumber":64,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":65,"author":{"gitId":"Colex2000"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"Colex2000":65}},{"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":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all persons\";","lastModifiedDate":"2016-09-21"},{"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":"Colex2000"},"content":" model.sortFilteredPersonList(null); // Resetting the sort order","lastModifiedDate":"2024-03-23"},{"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":{"Colex2000":1,"-":24}},{"path":"src/main/java/seedu/address/logic/commands/SelectCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ziyang27"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"ziyang27"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"ziyang27"},"content":"import java.util.List;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"ziyang27"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"ziyang27"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"ziyang27"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"ziyang27"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"ziyang27"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"ziyang27"},"content":"import seedu.address.model.person.IsSamePersonPredicate;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"ziyang27"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"ziyang27"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"ziyang27"},"content":" * Selects a person identified using it\u0027s displayed index from the address book.","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"ziyang27"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"ziyang27"},"content":"public class SelectCommand extends Command {","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"ziyang27"},"content":" public static final String COMMAND_WORD \u003d \"select\";","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"ziyang27"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"ziyang27"},"content":" + \": Selects the person identified by the index number used in the displayed person list.\\n\"","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"ziyang27"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"ziyang27"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"ziyang27"},"content":" public static final String MESSAGE_SELECT_PERSON_SUCCESS \u003d \"Selected Person: %1$s\";","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"ziyang27"},"content":" public static final String MESSAGE_ARGUMENTS \u003d \"Index: %1$d\";","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"ziyang27"},"content":" private final Index targetIndex;","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"ziyang27"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"ziyang27"},"content":" * Constructs a SelectCommand object.","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"ziyang27"},"content":" *","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"ziyang27"},"content":" * @param targetIndex The index of the person in the filtered person list to select.","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"ziyang27"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"ziyang27"},"content":" public SelectCommand(Index targetIndex) {","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"ziyang27"},"content":" requireNonNull(targetIndex);","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"ziyang27"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"ziyang27"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"ziyang27"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"ziyang27"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"Colex2000"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getSortedPersonList();","lastModifiedDate":"2024-03-23"},{"lineNumber":47,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"ziyang27"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"ziyang27"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"ziyang27"},"content":" Person personToSelect \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"ziyang27"},"content":" IsSamePersonPredicate predicate \u003d new IsSamePersonPredicate(personToSelect);","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"ziyang27"},"content":" model.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"ziyang27"},"content":" return new CommandResult(String.format(MESSAGE_SELECT_PERSON_SUCCESS, Messages.format(personToSelect)));","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"ziyang27"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"ziyang27"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"ziyang27"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"ziyang27"},"content":" return true;","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"ziyang27"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"ziyang27"},"content":" if (!(other instanceof SelectCommand)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"ziyang27"},"content":" return false;","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"ziyang27"},"content":" SelectCommand otherSelectCommand \u003d (SelectCommand) other;","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"ziyang27"},"content":" return targetIndex.equals(otherSelectCommand.targetIndex);","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"ziyang27"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":74,"author":{"gitId":"ziyang27"},"content":" public String toString() {","lastModifiedDate":"2024-03-12"},{"lineNumber":75,"author":{"gitId":"ziyang27"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"ziyang27"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"ziyang27"},"content":" .toString();","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":79,"author":{"gitId":"ziyang27"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"ziyang27":78,"Colex2000":1}},{"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":"Colex2000"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LASTCONTACT;","lastModifiedDate":"2024-03-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":"tanyunchao"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_UPCOMING;","lastModifiedDate":"2024-03-15"},{"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":"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":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-03-17"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17"},{"lineNumber":19,"author":{"gitId":"Colex2000"},"content":"import seedu.address.model.person.LastContact;","lastModifiedDate":"2024-03-13"},{"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":"tanyunchao"},"content":"import seedu.address.model.person.Upcoming;","lastModifiedDate":"2024-03-15"},{"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":"tanyunchao"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"tanyunchao"},"content":" PREFIX_ADDRESS, PREFIX_TAG, PREFIX_UPCOMING,","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"Colex2000"},"content":" PREFIX_LASTCONTACT);","lastModifiedDate":"2024-03-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":"tanyunchao"},"content":" Upcoming upcoming \u003d ParserUtil.parseUpcoming(argMultimap.getValue(PREFIX_UPCOMING).orElse(\"\"));","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"Colex2000"},"content":" LastContact lastcontact \u003d ParserUtil.parseLastContact(argMultimap.getValue(PREFIX_LASTCONTACT)","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"Colex2000"},"content":" .orElse(\"\"));","lastModifiedDate":"2024-03-22"},{"lineNumber":55,"author":{"gitId":"tanyunchao"},"content":" Person person \u003d new Person(name, phone, email, address, tagList, upcoming, lastcontact);","lastModifiedDate":"2024-03-17"},{"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":"tanyunchao"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"tanyunchao"},"content":" * in the given","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":65,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"Colex2000":5,"tanyunchao":8,"-":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":"-"},"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":"SimHanKiong"},"content":"import seedu.address.logic.commands.FindTagsAndCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.logic.commands.FindTagsOrCommand;","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":21,"author":{"gitId":"Colex2000"},"content":"import seedu.address.logic.commands.LastContactCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":23,"author":{"gitId":"ziyang27"},"content":"import seedu.address.logic.commands.SelectCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":25,"author":{"gitId":"Colex2000"},"content":"import seedu.address.model.person.IsLastContactedPredicate;","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":46,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":54,"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":55,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"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":"ziyang27"},"content":" case SelectCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"ziyang27"},"content":" return new SelectCommandParser().parse(arguments);","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":79,"author":{"gitId":"SimHanKiong"},"content":" case FindTagsOrCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-14"},{"lineNumber":80,"author":{"gitId":"SimHanKiong"},"content":" return new FindTagsOrCommandParser().parse(arguments);","lastModifiedDate":"2024-03-14"},{"lineNumber":81,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":82,"author":{"gitId":"SimHanKiong"},"content":" case FindTagsAndCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"SimHanKiong"},"content":" return new FindTagsAndCommandParser().parse(arguments);","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":88,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":91,"author":{"gitId":"Colex2000"},"content":" case LastContactCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-12"},{"lineNumber":92,"author":{"gitId":"Colex2000"},"content":" return new LastContactCommand(new IsLastContactedPredicate());","lastModifiedDate":"2024-03-23"},{"lineNumber":93,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":94,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26"},{"lineNumber":95,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26"},{"lineNumber":98,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29"},{"lineNumber":99,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11"},{"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"},{"lineNumber":103,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"SimHanKiong":8,"Colex2000":5,"ziyang27":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":"tanyunchao"},"content":" public static final Prefix PREFIX_UPCOMING \u003d new Prefix(\"u/\");","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"Colex2000"},"content":" public static final Prefix PREFIX_LASTCONTACT \u003d new Prefix(\"lc/\");","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"Colex2000":1,"tanyunchao":1,"-":15}},{"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":"Colex2000"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LASTCONTACT;","lastModifiedDate":"2024-03-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":"tanyunchao"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_UPCOMING;","lastModifiedDate":"2024-03-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":"-"},"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":"-"},"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":"Colex2000"},"content":"import seedu.address.model.person.LastContact;","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"Colex2000"},"content":"import seedu.address.model.person.Upcoming;","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"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":"2017-01-26"},{"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":"2017-01-26"},{"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":"tanyunchao"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-03-15"},{"lineNumber":40,"author":{"gitId":"Colex2000"},"content":" PREFIX_TAG, PREFIX_UPCOMING, PREFIX_LASTCONTACT);","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06"},{"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":"tanyunchao"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-03-15"},{"lineNumber":51,"author":{"gitId":"Colex2000"},"content":" PREFIX_ADDRESS, PREFIX_UPCOMING, PREFIX_LASTCONTACT);","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":59,"author":{"gitId":"-"},"content":" editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":62,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":64,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":65,"author":{"gitId":"-"},"content":" editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":67,"author":{"gitId":"-"},"content":" parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPersonDescriptor::setTags);","lastModifiedDate":"2017-06-21"},{"lineNumber":68,"author":{"gitId":"tanyunchao"},"content":" if (argMultimap.getValue(PREFIX_UPCOMING).isPresent()) {","lastModifiedDate":"2024-03-15"},{"lineNumber":69,"author":{"gitId":"Colex2000"},"content":" if (argMultimap.getValue(PREFIX_UPCOMING).get().isEmpty()) {","lastModifiedDate":"2024-03-22"},{"lineNumber":70,"author":{"gitId":"Colex2000"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-22"},{"lineNumber":71,"author":{"gitId":"Colex2000"},"content":" Upcoming.MESSAGE_EDIT_EMPTY_STRING_EXCEPTION));","lastModifiedDate":"2024-03-22"},{"lineNumber":72,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":73,"author":{"gitId":"tanyunchao"},"content":" editPersonDescriptor.setUpcoming(ParserUtil.parseUpcoming(argMultimap.getValue(PREFIX_UPCOMING).get()));","lastModifiedDate":"2024-03-15"},{"lineNumber":74,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":75,"author":{"gitId":"Colex2000"},"content":" if (argMultimap.getValue(PREFIX_LASTCONTACT).isPresent()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"Colex2000"},"content":" if (argMultimap.getValue(PREFIX_LASTCONTACT).get().isEmpty()) {","lastModifiedDate":"2024-03-22"},{"lineNumber":77,"author":{"gitId":"Colex2000"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-22"},{"lineNumber":78,"author":{"gitId":"Colex2000"},"content":" LastContact.MESSAGE_EDIT_EMPTY_STRING_EXCEPTION));","lastModifiedDate":"2024-03-22"},{"lineNumber":79,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":80,"author":{"gitId":"Colex2000"},"content":" editPersonDescriptor.setLastContact(ParserUtil.parseLastContact(argMultimap","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"Colex2000"},"content":" .getValue(PREFIX_LASTCONTACT).get()));","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":84,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","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":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e} if {@code tags} is non-empty.","lastModifiedDate":"2017-03-07"},{"lineNumber":92,"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":93,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":95,"author":{"gitId":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":98,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":99,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":101,"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":102,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26"},{"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":{"Colex2000":17,"tanyunchao":6,"-":82}},{"path":"src/main/java/seedu/address/logic/parser/FindTagsAndCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.logic.commands.FindTagsAndCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.model.tag.TagsAndFoundPredicate;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":" * Parses input arguments and creates a new FindTagsOrCommand object","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":"public class FindTagsAndCommandParser implements Parser\u003cFindTagsAndCommand\u003e {","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":" * Parses the given {@code String} of arguments in the context of the FindTagsOrCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" * and returns a FindTagsOrCommand object for execution.","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":" public FindTagsAndCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindTagsAndCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"SimHanKiong"},"content":" String[] tags \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"SimHanKiong"},"content":" Set\u003cTag\u003e tagSet \u003d ParserUtil.parseTags(Arrays.asList(tags));","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"SimHanKiong"},"content":" return new FindTagsAndCommand(new TagsAndFoundPredicate(tagSet));","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"SimHanKiong":36}},{"path":"src/main/java/seedu/address/logic/parser/FindTagsOrCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.logic.commands.FindTagsOrCommand;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.model.tag.TagsOrFoundPredicate;","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":"/**","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":" * Parses input arguments and creates a new FindTagsOrCommand object","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":"public class FindTagsOrCommandParser implements Parser\u003cFindTagsOrCommand\u003e {","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":" * Parses the given {@code String} of arguments in the context of the FindTagsOrCommand","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" * and returns a FindTagsOrCommand object for execution.","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":" public FindTagsOrCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindTagsOrCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"SimHanKiong"},"content":" String[] tags \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"SimHanKiong"},"content":" Set\u003cTag\u003e tagSet \u003d ParserUtil.parseTags(Arrays.asList(tags));","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"SimHanKiong"},"content":" return new FindTagsOrCommand(new TagsOrFoundPredicate(tagSet));","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"SimHanKiong":36}},{"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":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-02-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11"},{"lineNumber":14,"author":{"gitId":"Colex2000"},"content":"import seedu.address.model.person.LastContact;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-02-11"},{"lineNumber":17,"author":{"gitId":"tanyunchao"},"content":"import seedu.address.model.person.Upcoming;","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-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":" 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":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"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":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":62,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30"},{"lineNumber":63,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":64,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":65,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30"},{"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":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30"},{"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":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":77,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30"},{"lineNumber":78,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":79,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":80,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30"},{"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":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30"},{"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":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":92,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":93,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":94,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":97,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","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":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"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":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":107,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30"},{"lineNumber":108,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":109,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":110,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":112,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","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":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":116,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07"},{"lineNumber":117,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":119,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15"},{"lineNumber":120,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11"},{"lineNumber":121,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11"},{"lineNumber":122,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":124,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":126,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":127,"author":{"gitId":"tanyunchao"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":128,"author":{"gitId":"tanyunchao"},"content":" * Represents an upcoming event or task.","lastModifiedDate":"2024-03-15"},{"lineNumber":129,"author":{"gitId":"tanyunchao"},"content":" * It provides methods to validate and parse the upcoming string.","lastModifiedDate":"2024-03-15"},{"lineNumber":130,"author":{"gitId":"tanyunchao"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":131,"author":{"gitId":"tanyunchao"},"content":" public static Upcoming parseUpcoming(String upcoming) throws ParseException {","lastModifiedDate":"2024-03-15"},{"lineNumber":132,"author":{"gitId":"tanyunchao"},"content":" requireNonNull(upcoming);","lastModifiedDate":"2024-03-15"},{"lineNumber":133,"author":{"gitId":"tanyunchao"},"content":" String trimmedUpcoming \u003d upcoming.trim();","lastModifiedDate":"2024-03-15"},{"lineNumber":134,"author":{"gitId":"tanyunchao"},"content":" if (!Upcoming.isValidUpcoming(trimmedUpcoming)) {","lastModifiedDate":"2024-03-15"},{"lineNumber":135,"author":{"gitId":"tanyunchao"},"content":" throw new ParseException(Upcoming.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":136,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":137,"author":{"gitId":"tanyunchao"},"content":" return new Upcoming(trimmedUpcoming);","lastModifiedDate":"2024-03-15"},{"lineNumber":138,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":139,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":140,"author":{"gitId":"Colex2000"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":141,"author":{"gitId":"Colex2000"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2024-03-12"},{"lineNumber":142,"author":{"gitId":"Colex2000"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-12"},{"lineNumber":143,"author":{"gitId":"Colex2000"},"content":" *","lastModifiedDate":"2024-03-12"},{"lineNumber":144,"author":{"gitId":"Colex2000"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2024-03-12"},{"lineNumber":145,"author":{"gitId":"Colex2000"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":146,"author":{"gitId":"Colex2000"},"content":" public static LastContact parseLastContact(String lastContact) throws ParseException {","lastModifiedDate":"2024-03-12"},{"lineNumber":147,"author":{"gitId":"Colex2000"},"content":" requireNonNull(lastContact);","lastModifiedDate":"2024-03-12"},{"lineNumber":148,"author":{"gitId":"Colex2000"},"content":" String trimmedLastContact \u003d lastContact.trim();","lastModifiedDate":"2024-03-12"},{"lineNumber":149,"author":{"gitId":"Colex2000"},"content":" if (!LastContact.isValidDateTime(trimmedLastContact)) {","lastModifiedDate":"2024-03-22"},{"lineNumber":150,"author":{"gitId":"Colex2000"},"content":" throw new ParseException(String.format(LastContact.MESSAGE_CONSTRAINTS, trimmedLastContact));","lastModifiedDate":"2024-03-13"},{"lineNumber":151,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":152,"author":{"gitId":"Colex2000"},"content":" return new LastContact(trimmedLastContact);","lastModifiedDate":"2024-03-12"},{"lineNumber":153,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"Colex2000":15,"tanyunchao":15,"-":124}},{"path":"src/main/java/seedu/address/logic/parser/SelectCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ziyang27"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"ziyang27"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"ziyang27"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"ziyang27"},"content":"import seedu.address.logic.commands.SelectCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"ziyang27"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"ziyang27"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"ziyang27"},"content":" * Parses input arguments and creates a new SelectCommand object","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"ziyang27"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"ziyang27"},"content":"public class SelectCommandParser implements Parser\u003cSelectCommand\u003e {","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"ziyang27"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"ziyang27"},"content":" * Parses the given {@code String} of arguments in the context of the SelectCommand","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"ziyang27"},"content":" * and returns a SelectCommand object for execution.","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"ziyang27"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"ziyang27"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"ziyang27"},"content":" public SelectCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"ziyang27"},"content":" try {","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"ziyang27"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"ziyang27"},"content":" return new SelectCommand(index);","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"ziyang27"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"ziyang27"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"ziyang27"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, SelectCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"ziyang27"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"ziyang27":29}},{"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":"Colex2000"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"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":"Colex2000"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":89,"author":{"gitId":"Colex2000"},"content":" void sortFilteredPersonList(Comparator\u003cPerson\u003e comparator);","lastModifiedDate":"2024-03-22"},{"lineNumber":90,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":91,"author":{"gitId":"Colex2000"},"content":" ObservableList\u003cPerson\u003e getSortedPersonList();","lastModifiedDate":"2024-03-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"Colex2000":5,"-":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":"Colex2000"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-03-22"},{"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":"2017-01-19"},{"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":"Colex2000"},"content":"import javafx.collections.transformation.SortedList;","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"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":"Colex2000"},"content":" private final SortedList\u003cPerson\u003e sortedPersons;","lastModifiedDate":"2024-03-23"},{"lineNumber":28,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":40,"author":{"gitId":"-"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(this.addressBook.getPersonList());","lastModifiedDate":"2019-01-25"},{"lineNumber":41,"author":{"gitId":"Colex2000"},"content":" sortedPersons \u003d new SortedList\u003c\u003e(filteredPersons);","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22"},{"lineNumber":45,"author":{"gitId":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"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":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":52,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06"},{"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 ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return userPrefs;","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 GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","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 void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","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 Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","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":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","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":" //\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":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21"},{"lineNumber":92,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":97,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":98,"author":{"gitId":"-"},"content":" return addressBook.hasPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":102,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15"},{"lineNumber":103,"author":{"gitId":"-"},"content":" addressBook.removePerson(target);","lastModifiedDate":"2019-01-25"},{"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":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":108,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":109,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":114,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" addressBook.setPerson(target, editedPerson);","lastModifiedDate":"2019-01-25"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":119,"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":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":122,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10"},{"lineNumber":123,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11"},{"lineNumber":124,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":126,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":127,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":130,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":131,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":132,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05"},{"lineNumber":133,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":136,"author":{"gitId":"Colex2000"},"content":" @Override","lastModifiedDate":"2024-03-22"},{"lineNumber":137,"author":{"gitId":"Colex2000"},"content":" public void sortFilteredPersonList(Comparator\u003cPerson\u003e comparator) {","lastModifiedDate":"2024-03-22"},{"lineNumber":138,"author":{"gitId":"Colex2000"},"content":" sortedPersons.setComparator(comparator);","lastModifiedDate":"2024-03-23"},{"lineNumber":139,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":140,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":141,"author":{"gitId":"Colex2000"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":142,"author":{"gitId":"Colex2000"},"content":" public ObservableList\u003cPerson\u003e getSortedPersonList() {","lastModifiedDate":"2024-03-23"},{"lineNumber":143,"author":{"gitId":"Colex2000"},"content":" return sortedPersons;","lastModifiedDate":"2024-03-23"},{"lineNumber":144,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":145,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":146,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31"},{"lineNumber":147,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":148,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":149,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":152,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31"},{"lineNumber":153,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":154,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":157,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":158,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13"},{"lineNumber":159,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13"},{"lineNumber":160,"author":{"gitId":"-"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons);","lastModifiedDate":"2023-07-13"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":163,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"Colex2000":15,"-":148}},{"path":"src/main/java/seedu/address/model/person/IsLastContactedPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Colex2000"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":3,"author":{"gitId":"Colex2000"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"Colex2000"},"content":"/**","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"Colex2000"},"content":" * Tests that a {@code Person}\u0027s {@code LastContact} is present.","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"Colex2000"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"Colex2000"},"content":"public class IsLastContactedPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-03-23"},{"lineNumber":9,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"Colex2000"},"content":" @Override","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"Colex2000"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"Colex2000"},"content":" return person.getLastcontact().isLastContacted();","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"Colex2000"},"content":"}","lastModifiedDate":"2024-03-22"}],"authorContributionMap":{"Colex2000":14}},{"path":"src/main/java/seedu/address/model/person/IsSamePersonPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ziyang27"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"ziyang27"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"ziyang27"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"ziyang27"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"ziyang27"},"content":" * Tests that a {@code Person}\u0027s {@code Name} matches any of the keywords given.","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"ziyang27"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"ziyang27"},"content":"public class IsSamePersonPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"ziyang27"},"content":" private final Person selectedPerson;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"ziyang27"},"content":" public IsSamePersonPredicate(Person selectedPerson) {","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"ziyang27"},"content":" this.selectedPerson \u003d selectedPerson;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"ziyang27"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"ziyang27"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"ziyang27"},"content":" return this.selectedPerson \u003d\u003d person;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"ziyang27"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"ziyang27"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"ziyang27"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"ziyang27"},"content":" return true;","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"ziyang27"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"ziyang27"},"content":" if (!(other instanceof IsSamePersonPredicate)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"ziyang27"},"content":" return false;","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"ziyang27"},"content":" IsSamePersonPredicate otherisSamePersonPredicate \u003d (IsSamePersonPredicate) other;","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"ziyang27"},"content":" return selectedPerson \u003d\u003d otherisSamePersonPredicate.selectedPerson;","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"ziyang27"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"ziyang27"},"content":" public String toString() {","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"ziyang27"},"content":" return new ToStringBuilder(this).add(\"selected person\", selectedPerson).toString();","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"ziyang27"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"ziyang27":42}},{"path":"src/main/java/seedu/address/model/person/LastContact.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Colex2000"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"Colex2000"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"Colex2000"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"Colex2000"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"Colex2000"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"Colex2000"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"Colex2000"},"content":"import java.time.format.ResolverStyle;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"Colex2000"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"Colex2000"},"content":" * Represents a client\u0027s last contacted date and time in the address book.","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"Colex2000"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"Colex2000"},"content":"public class LastContact implements Comparable\u003cLastContact\u003e {","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"Colex2000"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Expected DATETIME format: DD-MM-YYYY HHmm\\n\"","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"Colex2000"},"content":" + \"Actual format: %s\";","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"Colex2000"},"content":" public static final String MESSAGE_EDIT_EMPTY_STRING_EXCEPTION \u003d \"Last contacted can only take DD-MM-YYYY HHmm \"","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"Colex2000"},"content":" + \"dateTime format, and it should not be blank\";","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"Colex2000"},"content":" public static final DateTimeFormatter DATETIME_FORMATTER \u003d DateTimeFormatter.ofPattern(\"dd-MM-uuuu HHmm\")","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"Colex2000"},"content":" .withResolverStyle(ResolverStyle.STRICT);","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"Colex2000"},"content":" private LocalDateTime dateTime;","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"Colex2000"},"content":" private boolean hasLastContact;","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"Colex2000"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"Colex2000"},"content":" * Constructs an {@code Address}.","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"Colex2000"},"content":" *","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"Colex2000"},"content":" * @param dateTime A valid dateTime.","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"Colex2000"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"Colex2000"},"content":" public LastContact(String dateTime) {","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"Colex2000"},"content":" requireNonNull(dateTime);","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"Colex2000"},"content":" checkArgument(isValidDateTime(dateTime), String.format(MESSAGE_CONSTRAINTS, dateTime));","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"Colex2000"},"content":" if (dateTime.isEmpty()) {","lastModifiedDate":"2024-03-22"},{"lineNumber":35,"author":{"gitId":"Colex2000"},"content":" this.hasLastContact \u003d false;","lastModifiedDate":"2024-03-22"},{"lineNumber":36,"author":{"gitId":"Colex2000"},"content":" this.dateTime \u003d null;","lastModifiedDate":"2024-03-22"},{"lineNumber":37,"author":{"gitId":"Colex2000"},"content":" return;","lastModifiedDate":"2024-03-22"},{"lineNumber":38,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"Colex2000"},"content":" this.hasLastContact \u003d true;","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"Colex2000"},"content":" this.dateTime \u003d LocalDateTime.parse(dateTime, DATETIME_FORMATTER);","lastModifiedDate":"2024-03-22"},{"lineNumber":41,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"Colex2000"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"Colex2000"},"content":" * Returns true if a given string is in valid dateTime format.","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"Colex2000"},"content":" * @param dateTime String to parse into formatter to check whether is valid.","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"Colex2000"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"Colex2000"},"content":" public static boolean isValidDateTime(String dateTime) {","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"Colex2000"},"content":" if (dateTime.isEmpty()) {","lastModifiedDate":"2024-03-22"},{"lineNumber":49,"author":{"gitId":"Colex2000"},"content":" return true;","lastModifiedDate":"2024-03-22"},{"lineNumber":50,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":51,"author":{"gitId":"Colex2000"},"content":" String trimmedDateTime \u003d dateTime.trim();","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"Colex2000"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd-MM-uuuu HHmm\")","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"Colex2000"},"content":" .withResolverStyle(ResolverStyle.STRICT);","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"Colex2000"},"content":" try {","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"Colex2000"},"content":" LocalDateTime.parse(trimmedDateTime, formatter);","lastModifiedDate":"2024-03-13"},{"lineNumber":56,"author":{"gitId":"Colex2000"},"content":" return true; // Successfully parsed, input matches the format","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"Colex2000"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"Colex2000"},"content":" return false; // Parsing failed, input does not match the format","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"Colex2000"},"content":" public boolean isLastContacted() {","lastModifiedDate":"2024-03-22"},{"lineNumber":63,"author":{"gitId":"Colex2000"},"content":" return this.hasLastContact;","lastModifiedDate":"2024-03-22"},{"lineNumber":64,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":65,"author":{"gitId":"Colex2000"},"content":" public LocalDateTime getDateTime() {","lastModifiedDate":"2024-03-22"},{"lineNumber":66,"author":{"gitId":"Colex2000"},"content":" return this.dateTime;","lastModifiedDate":"2024-03-22"},{"lineNumber":67,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":68,"author":{"gitId":"Colex2000"},"content":" @Override","lastModifiedDate":"2024-03-22"},{"lineNumber":69,"author":{"gitId":"Colex2000"},"content":" public int compareTo(LastContact other) {","lastModifiedDate":"2024-03-22"},{"lineNumber":70,"author":{"gitId":"Colex2000"},"content":" return this.dateTime.compareTo(other.dateTime);","lastModifiedDate":"2024-03-22"},{"lineNumber":71,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":72,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":73,"author":{"gitId":"Colex2000"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"Colex2000"},"content":" public String toString() {","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"Colex2000"},"content":" if (!hasLastContact) {","lastModifiedDate":"2024-03-22"},{"lineNumber":76,"author":{"gitId":"Colex2000"},"content":" return \"\";","lastModifiedDate":"2024-03-22"},{"lineNumber":77,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":78,"author":{"gitId":"Colex2000"},"content":" return this.dateTime.format(DATETIME_FORMATTER);","lastModifiedDate":"2024-03-22"},{"lineNumber":79,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":81,"author":{"gitId":"Colex2000"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"Colex2000"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"Colex2000"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"Colex2000"},"content":" return true;","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":86,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"Colex2000"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"Colex2000"},"content":" if (!(other instanceof LastContact)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"Colex2000"},"content":" return false;","lastModifiedDate":"2024-03-12"},{"lineNumber":90,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":92,"author":{"gitId":"Colex2000"},"content":" LastContact otherDateTime \u003d (LastContact) other;","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"Colex2000"},"content":" return this.dateTime.equals(otherDateTime.dateTime);","lastModifiedDate":"2024-03-12"},{"lineNumber":94,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":95,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":96,"author":{"gitId":"Colex2000"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":97,"author":{"gitId":"Colex2000"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-12"},{"lineNumber":98,"author":{"gitId":"Colex2000"},"content":" return this.dateTime.hashCode();","lastModifiedDate":"2024-03-12"},{"lineNumber":99,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":100,"author":{"gitId":"Colex2000"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"Colex2000":100}},{"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":"-"},"content":" .anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(person.getName().fullName, keyword));","lastModifiedDate":"2017-06-12"},{"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":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"SimHanKiong":1,"-":44}},{"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":"tanyunchao"},"content":" * Guarantees: details are present and not null, field values are validated,","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"tanyunchao"},"content":" * immutable.","lastModifiedDate":"2024-03-17"},{"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":"tanyunchao"},"content":" private final Upcoming upcoming;","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"Colex2000"},"content":" private final LastContact lastcontact;","lastModifiedDate":"2024-03-12"},{"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":"tanyunchao"},"content":" public Person(Name name, Phone phone, Email email, Address address, Set\u003cTag\u003e tags, Upcoming upcoming,","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"tanyunchao"},"content":" LastContact lastcontact) {","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"tanyunchao"},"content":" requireAllNonNull(name, phone, email, address, tags, upcoming, lastcontact);","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20"},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20"},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":42,"author":{"gitId":"tanyunchao"},"content":" this.upcoming \u003d upcoming;","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"Colex2000"},"content":" this.lastcontact \u003d lastcontact;","lastModifiedDate":"2024-03-12"},{"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":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07"},{"lineNumber":63,"author":{"gitId":"tanyunchao"},"content":" * Returns an immutable tag set, which throws","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"tanyunchao"},"content":" * {@code UnsupportedOperationException}","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07"},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":71,"author":{"gitId":"tanyunchao"},"content":" public Upcoming getUpcoming() {","lastModifiedDate":"2024-03-15"},{"lineNumber":72,"author":{"gitId":"tanyunchao"},"content":" return upcoming;","lastModifiedDate":"2024-03-15"},{"lineNumber":73,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":74,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":75,"author":{"gitId":"Colex2000"},"content":" public LastContact getLastcontact() {","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"Colex2000"},"content":" return lastcontact;","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return true;","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":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":" \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2020-12-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":98,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":99,"author":{"gitId":"-"},"content":" return true;","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":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10"},{"lineNumber":104,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10"},{"lineNumber":108,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-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":"tanyunchao"},"content":" \u0026\u0026 tags.equals(otherPerson.tags)","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"tanyunchao"},"content":" \u0026\u0026 upcoming.equals(otherPerson.upcoming)","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"Colex2000"},"content":" \u0026\u0026 lastcontact.equals(otherPerson.lastcontact);","lastModifiedDate":"2024-03-12"},{"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 int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":119,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":120,"author":{"gitId":"tanyunchao"},"content":" return Objects.hash(name, phone, email, address, tags, upcoming);","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":124,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":125,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"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":"tanyunchao"},"content":" .add(\"upcoming\", upcoming)","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"Colex2000"},"content":" .add(\"lastcontact\", lastcontact)","lastModifiedDate":"2024-03-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":136,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"Colex2000":8,"tanyunchao":17,"-":111}},{"path":"src/main/java/seedu/address/model/person/Upcoming.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"tanyunchao"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"tanyunchao"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"tanyunchao"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"tanyunchao"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"tanyunchao"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"tanyunchao"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"tanyunchao"},"content":"/**","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"tanyunchao"},"content":" * Represents a Person\u0027s upcoming appointment in the address book.","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"tanyunchao"},"content":" * Guarantees: immutable; is valid as declared in","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"tanyunchao"},"content":" * {@link #isValidUpcoming(String)}","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"tanyunchao"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"tanyunchao"},"content":"public class Upcoming implements Comparable\u003cUpcoming\u003e {","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"tanyunchao"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Invalid input. Please follow the format: DD-MM-YYYY HHmm\";","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"Colex2000"},"content":" public static final String MESSAGE_EDIT_EMPTY_STRING_EXCEPTION \u003d \"Upcoming can only take DD-MM-YYYY HHmm \"","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"Colex2000"},"content":" + \"dateTime format, and it should not be blank\";","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"tanyunchao"},"content":" private static final String DATETIME_FORMAT \u003d \"dd-MM-yyyy HHmm\";","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"tanyunchao"},"content":" private static final DateTimeFormatter DATETIME_FORMATTER \u003d DateTimeFormatter.ofPattern(DATETIME_FORMAT);","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"tanyunchao"},"content":" private static final String DATETIME_REGEX \u003d \"^\\\\d{2}-\\\\d{2}-\\\\d{4} \\\\d{2}\\\\d{2}$\";","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"tanyunchao"},"content":" private static final Pattern DATETIME_PATTERN \u003d Pattern.compile(DATETIME_REGEX);","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"tanyunchao"},"content":" private boolean hasUpcoming;","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"tanyunchao"},"content":" private LocalDateTime dateTime;","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"tanyunchao"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"tanyunchao"},"content":" * Constructs an {@code Upcoming} object from a valid date and time string in","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"tanyunchao"},"content":" * the format \"DD-MM-YYYY HH:MM\".","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"tanyunchao"},"content":" *","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"tanyunchao"},"content":" * @param dateTimeStr a string representing the date and time in the format","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"tanyunchao"},"content":" * \"DD-MM-YYYY HH:MM\"","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"tanyunchao"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"tanyunchao"},"content":" public Upcoming(String dateTimeStr) {","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"tanyunchao"},"content":" requireNonNull(dateTimeStr);","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"tanyunchao"},"content":" checkArgument(isValidUpcoming(dateTimeStr), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":38,"author":{"gitId":"tanyunchao"},"content":" if (dateTimeStr.isEmpty()) {","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"tanyunchao"},"content":" this.hasUpcoming \u003d false;","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"tanyunchao"},"content":" this.dateTime \u003d null;","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"tanyunchao"},"content":" return;","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"tanyunchao"},"content":" this.hasUpcoming \u003d true;","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"tanyunchao"},"content":" this.dateTime \u003d LocalDateTime.parse(dateTimeStr, DATETIME_FORMATTER);","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"tanyunchao"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"tanyunchao"},"content":" * Checks if the given string is a valid date and time combination in the format","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"tanyunchao"},"content":" * \"DD-MM-YYYY HH:MM\".","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"tanyunchao"},"content":" *","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"tanyunchao"},"content":" * @param dateTimeStr a string representing the date and time in the format","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"tanyunchao"},"content":" * \"DD-MM-YYYY HH:MM\"","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"tanyunchao"},"content":" * @return true if the string is a valid date and time combination, false","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"tanyunchao"},"content":" * otherwise","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"tanyunchao"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"tanyunchao"},"content":" public static boolean isValidUpcoming(String dateTimeStr) {","lastModifiedDate":"2024-03-15"},{"lineNumber":57,"author":{"gitId":"tanyunchao"},"content":" return dateTimeStr.isEmpty() || DATETIME_PATTERN.matcher(dateTimeStr).matches();","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"tanyunchao"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"tanyunchao"},"content":" public int compareTo(Upcoming other) {","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"tanyunchao"},"content":" return this.dateTime.compareTo(other.dateTime);","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"tanyunchao"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":66,"author":{"gitId":"tanyunchao"},"content":" * Returns a string representation of this {@code Upcoming} object.","lastModifiedDate":"2024-03-15"},{"lineNumber":67,"author":{"gitId":"tanyunchao"},"content":" *","lastModifiedDate":"2024-03-15"},{"lineNumber":68,"author":{"gitId":"tanyunchao"},"content":" * @return a string representation of this object","lastModifiedDate":"2024-03-15"},{"lineNumber":69,"author":{"gitId":"tanyunchao"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":70,"author":{"gitId":"tanyunchao"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"tanyunchao"},"content":" public String toString() {","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"tanyunchao"},"content":" if (!hasUpcoming) {","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"tanyunchao"},"content":" return \"\";","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"tanyunchao"},"content":" return dateTime.format(DATETIME_FORMATTER);","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"tanyunchao"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":79,"author":{"gitId":"tanyunchao"},"content":" * Checks if this {@code Upcoming} object is equal to another object.","lastModifiedDate":"2024-03-15"},{"lineNumber":80,"author":{"gitId":"tanyunchao"},"content":" *","lastModifiedDate":"2024-03-15"},{"lineNumber":81,"author":{"gitId":"tanyunchao"},"content":" * @param obj the object to compare with","lastModifiedDate":"2024-03-15"},{"lineNumber":82,"author":{"gitId":"tanyunchao"},"content":" * @return true if the objects are equal, false otherwise","lastModifiedDate":"2024-03-15"},{"lineNumber":83,"author":{"gitId":"tanyunchao"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":84,"author":{"gitId":"tanyunchao"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"tanyunchao"},"content":" public boolean equals(Object obj) {","lastModifiedDate":"2024-03-12"},{"lineNumber":86,"author":{"gitId":"tanyunchao"},"content":" if (this \u003d\u003d obj) {","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"tanyunchao"},"content":" return true;","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"tanyunchao"},"content":" if (obj \u003d\u003d null || getClass() !\u003d obj.getClass()) {","lastModifiedDate":"2024-03-12"},{"lineNumber":90,"author":{"gitId":"tanyunchao"},"content":" return false;","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":92,"author":{"gitId":"tanyunchao"},"content":" Upcoming other \u003d (Upcoming) obj;","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"tanyunchao"},"content":" if (!this.hasUpcoming \u0026\u0026 !other.hasUpcoming) {","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"tanyunchao"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"tanyunchao"},"content":" return this.hasUpcoming \u003d\u003d other.hasUpcoming \u0026\u0026 this.dateTime.equals(other.dateTime);","lastModifiedDate":"2024-03-16"},{"lineNumber":99,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":100,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":101,"author":{"gitId":"tanyunchao"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":102,"author":{"gitId":"tanyunchao"},"content":" * Returns the hash code value for this {@code Upcoming} object.","lastModifiedDate":"2024-03-15"},{"lineNumber":103,"author":{"gitId":"tanyunchao"},"content":" *","lastModifiedDate":"2024-03-15"},{"lineNumber":104,"author":{"gitId":"tanyunchao"},"content":" * @return the hash code value for this object","lastModifiedDate":"2024-03-15"},{"lineNumber":105,"author":{"gitId":"tanyunchao"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":106,"author":{"gitId":"tanyunchao"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":107,"author":{"gitId":"tanyunchao"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-12"},{"lineNumber":108,"author":{"gitId":"tanyunchao"},"content":" return dateTime.hashCode();","lastModifiedDate":"2024-03-12"},{"lineNumber":109,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":110,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":111,"author":{"gitId":"tanyunchao"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"Colex2000":2,"tanyunchao":109}},{"path":"src/main/java/seedu/address/model/tag/TagsAndFoundPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package seedu.address.model.tag;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":" * Tests that a {@code Person}\u0027s {@code Tag} matches all the tags given.","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":"public class TagsAndFoundPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":" private final Set\u003cTag\u003e tags;","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":" public TagsAndFoundPredicate(Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":" this.tags \u003d tags;","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" return person.getTags().containsAll(tags);","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":" return true;","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"SimHanKiong"},"content":" if (!(other instanceof TagsAndFoundPredicate)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"SimHanKiong"},"content":" return false;","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"SimHanKiong"},"content":" TagsAndFoundPredicate otherTagsAndFoundPredicate \u003d (TagsAndFoundPredicate) other;","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"SimHanKiong"},"content":" return tags.equals(otherTagsAndFoundPredicate.tags);","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"SimHanKiong"},"content":" public String toString() {","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"SimHanKiong"},"content":" return new ToStringBuilder(this).add(\"tags\", tags).toString();","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"SimHanKiong":44}},{"path":"src/main/java/seedu/address/model/tag/TagsOrFoundPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package seedu.address.model.tag;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"/**","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":" * Tests that a {@code Person}\u0027s {@code Tag} matches any of the tags given.","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":"public class TagsOrFoundPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":" private final Set\u003cTag\u003e tags;","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":" public TagsOrFoundPredicate(Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":" this.tags \u003d tags;","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" return tags.stream()","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":" .anyMatch(tag -\u003e person.getTags().contains(tag));","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":" return true;","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"SimHanKiong"},"content":" if (!(other instanceof TagsOrFoundPredicate)) {","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"SimHanKiong"},"content":" return false;","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"SimHanKiong"},"content":" TagsOrFoundPredicate otherTagOrFoundPredicate \u003d (TagsOrFoundPredicate) other;","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"SimHanKiong"},"content":" return tags.equals(otherTagOrFoundPredicate.tags);","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"SimHanKiong"},"content":" public String toString() {","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"SimHanKiong"},"content":" return new ToStringBuilder(this).add(\"tags\", tags).toString();","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"SimHanKiong":45}},{"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":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20"},{"lineNumber":11,"author":{"gitId":"Colex2000"},"content":"import seedu.address.model.person.LastContact;","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-20"},{"lineNumber":15,"author":{"gitId":"tanyunchao"},"content":"import seedu.address.model.person.Upcoming;","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-15"},{"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":"Colex2000"},"content":" public static final LastContact DUMMY_LASTCONTACT \u003d new LastContact(\"05-03-2024 0600\");","lastModifiedDate":"2024-03-12"},{"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":"-"},"content":" new Person(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":27,"author":{"gitId":"tanyunchao"},"content":" getTagSet(\"friends\"), new Upcoming(\"23-08-2024 1500\"), DUMMY_LASTCONTACT),","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"-"},"content":" new Person(new Name(\"Bernice Yu\"), new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":30,"author":{"gitId":"tanyunchao"},"content":" getTagSet(\"colleagues\", \"friends\"), new Upcoming(\"08-08-2024 1515\"), DUMMY_LASTCONTACT),","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"-"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":33,"author":{"gitId":"tanyunchao"},"content":" getTagSet(\"neighbours\"), new Upcoming(\"03-03-2024 0930\"), DUMMY_LASTCONTACT),","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"-"},"content":" new Person(new Name(\"David Li\"), new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":36,"author":{"gitId":"tanyunchao"},"content":" getTagSet(\"family\"), new Upcoming(\"01-01-2024 1200\"), DUMMY_LASTCONTACT),","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"-"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":39,"author":{"gitId":"tanyunchao"},"content":" getTagSet(\"classmates\"), new Upcoming(\"12-12-2023 1800\"), DUMMY_LASTCONTACT),","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"-"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":42,"author":{"gitId":"tanyunchao"},"content":" getTagSet(\"colleagues\"), new Upcoming(\"25-12-2023 2000\"), DUMMY_LASTCONTACT)","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07"},{"lineNumber":48,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":63,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"Colex2000":2,"tanyunchao":7,"-":54}},{"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":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"Colex2000"},"content":"import seedu.address.model.person.LastContact;","lastModifiedDate":"2024-03-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":"tanyunchao"},"content":"import seedu.address.model.person.Upcoming;","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-15"},{"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":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13"},{"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":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09"},{"lineNumber":34,"author":{"gitId":"tanyunchao"},"content":" private final String upcoming;","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"Colex2000"},"content":" private final String lastcontact;","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-15"},{"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":"-"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"tanyunchao"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags, @JsonProperty(\"upcoming\") String upcoming,","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"tanyunchao"},"content":" @JsonProperty(\"lastcontact\") String lastcontact) {","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"tanyunchao"},"content":" this.upcoming \u003d upcoming;","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"Colex2000"},"content":" this.lastcontact \u003d lastcontact;","lastModifiedDate":"2024-03-12"},{"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":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09"},{"lineNumber":65,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"tanyunchao"},"content":" upcoming \u003d source.getUpcoming().toString();","lastModifiedDate":"2024-03-15"},{"lineNumber":68,"author":{"gitId":"Colex2000"},"content":" lastcontact \u003d source.getLastcontact().toString();","lastModifiedDate":"2024-03-19"},{"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":"tanyunchao"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"tanyunchao"},"content":" * {@code Person} object.","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"tanyunchao"},"content":" * @throws IllegalValueException if there were any data constraints violated in","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"tanyunchao"},"content":" * the adapted person.","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09"},{"lineNumber":81,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13"},{"lineNumber":117,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":118,"author":{"gitId":"tanyunchao"},"content":" if (upcoming \u003d\u003d null) {","lastModifiedDate":"2024-03-15"},{"lineNumber":119,"author":{"gitId":"tanyunchao"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-15"},{"lineNumber":120,"author":{"gitId":"tanyunchao"},"content":" Upcoming.class.getSimpleName()));","lastModifiedDate":"2024-03-15"},{"lineNumber":121,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":122,"author":{"gitId":"tanyunchao"},"content":" if (!Upcoming.isValidUpcoming(upcoming)) {","lastModifiedDate":"2024-03-15"},{"lineNumber":123,"author":{"gitId":"tanyunchao"},"content":" throw new IllegalValueException(Upcoming.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":124,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":125,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"tanyunchao"},"content":" final Upcoming modelUpcoming \u003d new Upcoming(upcoming);","lastModifiedDate":"2024-03-15"},{"lineNumber":127,"author":{"gitId":"tanyunchao"},"content":" if (lastcontact \u003d\u003d null) {","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"tanyunchao"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-17"},{"lineNumber":129,"author":{"gitId":"tanyunchao"},"content":" LastContact.class.getSimpleName()));","lastModifiedDate":"2024-03-17"},{"lineNumber":130,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"tanyunchao"},"content":" final LastContact modelLastContact \u003d new LastContact(lastcontact);","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":133,"author":{"gitId":"tanyunchao"},"content":" return new Person(modelName, modelPhone, modelEmail, modelAddress, modelTags, modelUpcoming, modelLastContact);","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":136,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"Colex2000":4,"tanyunchao":27,"-":105}},{"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":"-"},"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":"-"},"content":" private StackPane personListPanelPlaceholder;","lastModifiedDate":"2017-05-09"},{"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":"Colex2000"},"content":" personListPanel \u003d new PersonListPanel(logic.getSortedAndFilteredPersonList());","lastModifiedDate":"2024-03-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":" personListPanelPlaceholder.getChildren().add(personListPanel.getRoot());","lastModifiedDate":"2017-06-14"},{"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":" public PersonListPanel getPersonListPanel() {","lastModifiedDate":"2016-08-25"},{"lineNumber":167,"author":{"gitId":"-"},"content":" return personListPanel;","lastModifiedDate":"2018-08-14"},{"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":{"Colex2000":1,"-":195}},{"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 address;","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":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18"},{"lineNumber":43,"author":{"gitId":"tanyunchao"},"content":" @FXML","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"tanyunchao"},"content":" private Label upcoming;","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"tanyunchao"},"content":" @FXML","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"Colex2000"},"content":" private Label lastcontact;","lastModifiedDate":"2024-03-12"},{"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":" address.setText(person.getAddress().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" person.getTags().stream()","lastModifiedDate":"2019-01-02"},{"lineNumber":60,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02"},{"lineNumber":61,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02"},{"lineNumber":62,"author":{"gitId":"ziyang27"},"content":" upcoming.setText(\"Upcoming: \" + person.getUpcoming().toString());","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"Colex2000"},"content":" lastcontact.setText(\"Last contacted: \" + person.getLastcontact().toString());","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"Colex2000":2,"ziyang27":1,"tanyunchao":3,"-":59}},{"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":"Colex2000"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"Colex2000"},"content":"import javafx.collections.transformation.SortedList;","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2016-09-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2016-08-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-01-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"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":"Colex2000"},"content":" FilteredList\u003cPerson\u003e filteredData \u003d new FilteredList\u003c\u003e(personList);","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"Colex2000"},"content":" SortedList\u003cPerson\u003e sortableData \u003d new SortedList\u003c\u003e(filteredData);","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"Colex2000"},"content":" personListView.setItems(sortableData);","lastModifiedDate":"2024-03-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" personListView.setCellFactory(listView -\u003e new PersonListViewCell());","lastModifiedDate":"2016-08-18"},{"lineNumber":34,"author":{"gitId":"Colex2000"},"content":" personListView.refresh();","lastModifiedDate":"2024-03-23"},{"lineNumber":35,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Person} using a {@code PersonCard}.","lastModifiedDate":"2018-02-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":41,"author":{"gitId":"-"},"content":" class PersonListViewCell extends ListCell\u003cPerson\u003e {","lastModifiedDate":"2018-02-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" protected void updateItem(Person person, boolean empty) {","lastModifiedDate":"2018-02-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" super.updateItem(person, empty);","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":" if (empty || person \u003d\u003d null) {","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" setGraphic(null);","lastModifiedDate":"2016-09-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":" setText(null);","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" setGraphic(new PersonCard(person, getIndex() + 1).getRoot());","lastModifiedDate":"2018-02-08"},{"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":{"Colex2000":7,"-":48}},{"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":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2016-08-08"},{"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":"tanyunchao"},"content":" \u003cLabel fx:id\u003d\"upcoming\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$upcoming\" /\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"Colex2000"},"content":" \u003cLabel fx:id\u003d\"lastcontact\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$lastcontacted\"/\u003e","lastModifiedDate":"2024-03-12"},{"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":{"Colex2000":1,"tanyunchao":1,"-":36}},{"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":"Colex2000"},"content":"import static seedu.address.logic.commands.CommandTestUtil.LASTCONTACT_AMY;","lastModifiedDate":"2024-03-13"},{"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":"tanyunchao"},"content":"import static seedu.address.logic.commands.CommandTestUtil.UPCOMING_DESC_AMY;","lastModifiedDate":"2024-03-15"},{"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":"-"},"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":"2017-06-14"},{"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":"Colex2000"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":93,"author":{"gitId":"Colex2000"},"content":" public void getSortedPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-23"},{"lineNumber":94,"author":{"gitId":"Colex2000"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getSortedAndFilteredPersonList().remove(0));","lastModifiedDate":"2024-03-23"},{"lineNumber":95,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":96,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":104,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14"},{"lineNumber":106,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14"},{"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-03-11"},{"lineNumber":112,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":115,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11"},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":119,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":128,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":129,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":130,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":131,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":132,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31"},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":137,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":138,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":139,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":140,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":141,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":142,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":143,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":144,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":145,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14"},{"lineNumber":147,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19"},{"lineNumber":150,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":151,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13"},{"lineNumber":153,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13"},{"lineNumber":154,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13"},{"lineNumber":155,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":156,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13"},{"lineNumber":157,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":159,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13"},{"lineNumber":160,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13"},{"lineNumber":161,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":162,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13"},{"lineNumber":163,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13"},{"lineNumber":164,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":166,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":168,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":169,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13"},{"lineNumber":170,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":172,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":174,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13"},{"lineNumber":175,"author":{"gitId":"-"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2023-06-13"},{"lineNumber":176,"author":{"gitId":"tanyunchao"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + UPCOMING_DESC_AMY + LASTCONTACT_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":177,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2023-06-13"},{"lineNumber":178,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13"},{"lineNumber":179,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13"},{"lineNumber":180,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13"},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":182,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"Colex2000":6,"tanyunchao":2,"-":174}},{"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":"Colex2000"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-03-23"},{"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":"-"},"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":"-"},"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":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15"},{"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":"-"},"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":"-"},"content":" CommandResult commandResult \u003d new AddCommand(validPerson).execute(modelStub);","lastModifiedDate":"2019-01-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23"},{"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":"-"},"content":" AddCommand addCommand \u003d new AddCommand(validPerson);","lastModifiedDate":"2018-08-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":"-"},"content":" assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2019-05-03"},{"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":"Colex2000"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":162,"author":{"gitId":"Colex2000"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":163,"author":{"gitId":"Colex2000"},"content":" public void sortFilteredPersonList(Comparator\u003cPerson\u003e comparator) {","lastModifiedDate":"2024-03-23"},{"lineNumber":164,"author":{"gitId":"Colex2000"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":165,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":166,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":167,"author":{"gitId":"Colex2000"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":168,"author":{"gitId":"Colex2000"},"content":" public ObservableList\u003cPerson\u003e getSortedPersonList() {","lastModifiedDate":"2024-03-23"},{"lineNumber":169,"author":{"gitId":"Colex2000"},"content":" return null;","lastModifiedDate":"2024-03-23"},{"lineNumber":170,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":173,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":174,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07"},{"lineNumber":175,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":176,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07"},{"lineNumber":177,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":179,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":180,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":181,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":184,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":185,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":186,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":187,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":188,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":189,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":191,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":192,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12"},{"lineNumber":193,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":194,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12"},{"lineNumber":195,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":197,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07"},{"lineNumber":198,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":199,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":200,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":201,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":203,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":204,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08"},{"lineNumber":205,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":206,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":209,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":210,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04"},{"lineNumber":211,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04"},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":213,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":215,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12"}],"authorContributionMap":{"Colex2000":11,"-":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":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"Colex2000"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LASTCONTACT;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"tanyunchao"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_UPCOMING;","lastModifiedDate":"2024-03-15"},{"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":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05"},{"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":"","lastModifiedDate":"2017-06-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05"},{"lineNumber":41,"author":{"gitId":"tanyunchao"},"content":" public static final String VALID_UPCOMING_AMY \u003d \"12-12-2024 1200\";","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"tanyunchao"},"content":" public static final String VALID_UPCOMING_BOB \u003d \"05-05-2024 1700\";","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"Colex2000"},"content":" public static final String VALID_LAST_CONTACT \u003d \"13-03-2024 0600\";","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"Colex2000"},"content":" public static final String VALID_LAST_CONTACT_AMY \u003d \"13-04-2024 1600\";","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"Colex2000"},"content":" public static final String VALID_LAST_CONTACT_BOB \u003d \"13-04-2024 1700\";","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":58,"author":{"gitId":"tanyunchao"},"content":" public static final String UPCOMING_DESC_AMY \u003d \" \" + PREFIX_UPCOMING + VALID_UPCOMING_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":59,"author":{"gitId":"tanyunchao"},"content":" public static final String UPCOMING_DESC_BOB \u003d \" \" + PREFIX_UPCOMING + VALID_UPCOMING_BOB;","lastModifiedDate":"2024-03-15"},{"lineNumber":60,"author":{"gitId":"Colex2000"},"content":" public static final String LASTCONTACT_AMY \u003d \" \" + PREFIX_LASTCONTACT + VALID_LAST_CONTACT;","lastModifiedDate":"2024-03-13"},{"lineNumber":61,"author":{"gitId":"Colex2000"},"content":" public static final String LASTCONTACT_BOB \u003d \" \" + PREFIX_LASTCONTACT + VALID_LAST_CONTACT;","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05"},{"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":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05"},{"lineNumber":66,"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":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":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":76,"author":{"gitId":"Colex2000"},"content":" .withTags(VALID_TAG_FRIEND).withUpcoming(VALID_UPCOMING_AMY).withLastContact(VALID_LAST_CONTACT_AMY)","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"Colex2000"},"content":" .build();","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":79,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":80,"author":{"gitId":"Colex2000"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).withUpcoming(VALID_UPCOMING_BOB)","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"Colex2000"},"content":" .withLastContact(VALID_LAST_CONTACT_BOB).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25"},{"lineNumber":90,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":91,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":92,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":95,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":96,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":106,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":110,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":111,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":112,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25"},{"lineNumber":115,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25"},{"lineNumber":117,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":118,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":119,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":120,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03"},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":126,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":127,"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":128,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":130,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31"},{"lineNumber":131,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":133,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31"},{"lineNumber":134,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20"},{"lineNumber":135,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":140,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"Colex2000":11,"tanyunchao":5,"-":124}},{"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":"Colex2000"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_LAST_CONTACT_AMY;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"Colex2000"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_LAST_CONTACT_BOB;","lastModifiedDate":"2024-03-18"},{"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":"tanyunchao"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_UPCOMING_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"tanyunchao"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_UPCOMING_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"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":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-04"},{"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":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":58,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2017-05-18"},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2017-05-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-18"},{"lineNumber":63,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18"},{"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":"-"},"content":" .withPhone(VALID_PHONE_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":67,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPerson, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":69,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":72,"author":{"gitId":"-"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":79,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, new EditPersonDescriptor());","lastModifiedDate":"2018-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":91,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":94,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder(personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"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":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17"},{"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":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":108,"author":{"gitId":"-"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":109,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05"},{"lineNumber":110,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25"},{"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":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":117,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":119,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2017-05-18"},{"lineNumber":120,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":121,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25"},{"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":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":129,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18"},{"lineNumber":130,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22"},{"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":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"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":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":142,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":143,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18"},{"lineNumber":144,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18"},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-05-18"},{"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":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":150,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"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":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2018-08-08"},{"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":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":160,"author":{"gitId":"tanyunchao"},"content":" EditPersonDescriptor editedDescriptor \u003d new EditPersonDescriptorBuilder(DESC_AMY)","lastModifiedDate":"2024-03-17"},{"lineNumber":161,"author":{"gitId":"tanyunchao"},"content":" .withUpcoming(VALID_UPCOMING_BOB).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":162,"author":{"gitId":"SimHanKiong"},"content":" EditPersonDescriptor editedDescriptorLastContact \u003d new EditPersonDescriptorBuilder(DESC_AMY)","lastModifiedDate":"2024-03-20"},{"lineNumber":163,"author":{"gitId":"Colex2000"},"content":" .withLastContact(VALID_LAST_CONTACT_BOB).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":164,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":165,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2017-05-25"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":179,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":180,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2017-05-25"},{"lineNumber":181,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":182,"author":{"gitId":"tanyunchao"},"content":" // different upcoming -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":183,"author":{"gitId":"tanyunchao"},"content":" assertFalse(DESC_AMY.equals(editedDescriptor));","lastModifiedDate":"2024-03-17"},{"lineNumber":184,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":185,"author":{"gitId":"tanyunchao"},"content":" // different upcoming, same other fields -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":186,"author":{"gitId":"tanyunchao"},"content":" editedDescriptor \u003d new EditPersonDescriptorBuilder(DESC_AMY)","lastModifiedDate":"2024-03-17"},{"lineNumber":187,"author":{"gitId":"tanyunchao"},"content":" .withUpcoming(VALID_UPCOMING_BOB).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":188,"author":{"gitId":"tanyunchao"},"content":" assertFalse(DESC_AMY.equals(editedDescriptor));","lastModifiedDate":"2024-03-17"},{"lineNumber":189,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":190,"author":{"gitId":"tanyunchao"},"content":" // same upcoming, different other fields -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":191,"author":{"gitId":"tanyunchao"},"content":" editedDescriptor \u003d new EditPersonDescriptorBuilder(DESC_BOB)","lastModifiedDate":"2024-03-17"},{"lineNumber":192,"author":{"gitId":"tanyunchao"},"content":" .withUpcoming(VALID_UPCOMING_AMY).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":193,"author":{"gitId":"tanyunchao"},"content":" assertFalse(DESC_AMY.equals(editedDescriptor));","lastModifiedDate":"2024-03-17"},{"lineNumber":194,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":195,"author":{"gitId":"Colex2000"},"content":" // different lastcontact -\u003e return false","lastModifiedDate":"2024-03-18"},{"lineNumber":196,"author":{"gitId":"SimHanKiong"},"content":" assertFalse(DESC_AMY.equals(editedDescriptorLastContact));","lastModifiedDate":"2024-03-20"},{"lineNumber":197,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":198,"author":{"gitId":"Colex2000"},"content":" // different lastcontact, same other fields -\u003e return false","lastModifiedDate":"2024-03-18"},{"lineNumber":199,"author":{"gitId":"SimHanKiong"},"content":" editedDescriptorLastContact \u003d new EditPersonDescriptorBuilder(DESC_AMY)","lastModifiedDate":"2024-03-20"},{"lineNumber":200,"author":{"gitId":"Colex2000"},"content":" .withLastContact(VALID_LAST_CONTACT_BOB).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":201,"author":{"gitId":"SimHanKiong"},"content":" assertFalse(DESC_AMY.equals(editedDescriptorLastContact));","lastModifiedDate":"2024-03-20"},{"lineNumber":202,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":203,"author":{"gitId":"Colex2000"},"content":" // same lastcontact -\u003e return true","lastModifiedDate":"2024-03-18"},{"lineNumber":204,"author":{"gitId":"SimHanKiong"},"content":" editedDescriptorLastContact \u003d new EditPersonDescriptorBuilder(DESC_AMY)","lastModifiedDate":"2024-03-20"},{"lineNumber":205,"author":{"gitId":"Colex2000"},"content":" .withLastContact(VALID_LAST_CONTACT_AMY).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":206,"author":{"gitId":"SimHanKiong"},"content":" assertTrue(DESC_AMY.equals(editedDescriptorLastContact));","lastModifiedDate":"2024-03-20"},{"lineNumber":207,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":208,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":210,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":212,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2019-02-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":216,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08"}],"authorContributionMap":{"SimHanKiong":6,"Colex2000":12,"tanyunchao":18,"-":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_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":"tanyunchao"},"content":" + editPersonDescriptor.getTags().orElse(null) + \", upcoming\u003d\"","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"Colex2000"},"content":" + editPersonDescriptor.getUpcoming().orElse(null) + \", lastcontact\u003d\"","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"Colex2000"},"content":" + editPersonDescriptor.getLastcontact().orElse(null) + \"}\";","lastModifiedDate":"2024-03-18"},{"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":{"Colex2000":2,"tanyunchao":1,"-":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":"-"},"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":"SimHanKiong"},"content":" // different object -\u003e returns false","lastModifiedDate":"2024-03-14"},{"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":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"SimHanKiong":2,"-":90}},{"path":"src/test/java/seedu/address/logic/commands/FindTagsAndCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"import static seedu.address.logic.Messages.MESSAGE_PERSONS_LISTED_OVERVIEW;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":"import static seedu.address.testutil.TypicalPersons.DANIEL;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalPersons;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":"import java.util.List;","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.model.tag.TagsAndFoundPredicate;","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.testutil.TagBuilder;","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":" * Contains integration tests (interaction with the Model) for {@code FindTagsOrCommand}.","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":"public class FindTagsAndCommandTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"SimHanKiong"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"SimHanKiong"},"content":" public void equals() {","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"SimHanKiong"},"content":" TagsAndFoundPredicate firstPredicate \u003d preparePredicate(\"first\");","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"SimHanKiong"},"content":" TagsAndFoundPredicate secondPredicate \u003d preparePredicate(\"second\");","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"SimHanKiong"},"content":" FindTagsAndCommand firstCommand \u003d new FindTagsAndCommand(firstPredicate);","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"SimHanKiong"},"content":" FindTagsAndCommand secondCommand \u003d new FindTagsAndCommand(secondPredicate);","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"SimHanKiong"},"content":" assertTrue(firstCommand.equals(firstCommand));","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"SimHanKiong"},"content":" FindTagsAndCommand firstCommandCopy \u003d new FindTagsAndCommand(firstPredicate);","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"SimHanKiong"},"content":" assertTrue(firstCommand.equals(firstCommandCopy));","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"SimHanKiong"},"content":" assertFalse(firstCommand.equals(1));","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"SimHanKiong"},"content":" assertFalse(firstCommand.equals(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"SimHanKiong"},"content":" assertFalse(firstCommand.equals(secondCommand));","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"SimHanKiong"},"content":" public void execute_zeroTags_allPersonsFound() {","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"SimHanKiong"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, getTypicalPersons().size());","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"SimHanKiong"},"content":" TagsAndFoundPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"SimHanKiong"},"content":" FindTagsAndCommand command \u003d new FindTagsAndCommand(predicate);","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"SimHanKiong"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"SimHanKiong"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(getTypicalPersons(), model.getFilteredPersonList());","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"SimHanKiong"},"content":" public void execute_oneTag_multiplePersonsFound() {","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"SimHanKiong"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 2);","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"SimHanKiong"},"content":" TagsAndFoundPredicate predicate \u003d preparePredicate(\"car\");","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"SimHanKiong"},"content":" FindTagsAndCommand command \u003d new FindTagsAndCommand(predicate);","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"SimHanKiong"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"SimHanKiong"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(List.of(ALICE, BENSON), model.getFilteredPersonList());","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"SimHanKiong"},"content":" public void execute_oneTagWrongCase_noPersonFound() {","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"SimHanKiong"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"SimHanKiong"},"content":" TagsAndFoundPredicate predicate \u003d preparePredicate(\"Car\");","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"SimHanKiong"},"content":" FindTagsAndCommand command \u003d new FindTagsAndCommand(predicate);","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"SimHanKiong"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"SimHanKiong"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(List.of(), model.getFilteredPersonList());","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"SimHanKiong"},"content":" public void execute_multipleTags_onePersonWithAllTagsFound() {","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"SimHanKiong"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 1);","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"SimHanKiong"},"content":" TagsAndFoundPredicate predicate \u003d preparePredicate(\"car death\");","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"SimHanKiong"},"content":" FindTagsAndCommand command \u003d new FindTagsAndCommand(predicate);","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"SimHanKiong"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"SimHanKiong"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(List.of(BENSON), model.getFilteredPersonList());","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"SimHanKiong"},"content":" public void execute_multipleTags_onePersonWithNotAllTagsFound() {","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"SimHanKiong"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 1);","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"SimHanKiong"},"content":" TagsAndFoundPredicate predicate \u003d preparePredicate(\"flight covid\");","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"SimHanKiong"},"content":" FindTagsAndCommand command \u003d new FindTagsAndCommand(predicate);","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"SimHanKiong"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"SimHanKiong"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(List.of(DANIEL), model.getFilteredPersonList());","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"SimHanKiong"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-18"},{"lineNumber":101,"author":{"gitId":"SimHanKiong"},"content":" TagsAndFoundPredicate predicate \u003d preparePredicate(\"tag\");","lastModifiedDate":"2024-03-18"},{"lineNumber":102,"author":{"gitId":"SimHanKiong"},"content":" FindTagsAndCommand command \u003d new FindTagsAndCommand(predicate);","lastModifiedDate":"2024-03-18"},{"lineNumber":103,"author":{"gitId":"SimHanKiong"},"content":" String expected \u003d FindTagsAndCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2024-03-18"},{"lineNumber":104,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(expected, command.toString());","lastModifiedDate":"2024-03-18"},{"lineNumber":105,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":106,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":107,"author":{"gitId":"SimHanKiong"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"SimHanKiong"},"content":" * Parses {@code userInput} into a {@code TagsAndFoundPredicate}.","lastModifiedDate":"2024-03-18"},{"lineNumber":109,"author":{"gitId":"SimHanKiong"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":110,"author":{"gitId":"SimHanKiong"},"content":" private TagsAndFoundPredicate preparePredicate(String userInput) {","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"SimHanKiong"},"content":" List\u003cString\u003e tagList \u003d List.of(userInput.split(\"\\\\s+\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"SimHanKiong"},"content":" return new TagsAndFoundPredicate(TagBuilder.build(tagList));","lastModifiedDate":"2024-03-18"},{"lineNumber":113,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":115,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"SimHanKiong":115}},{"path":"src/test/java/seedu/address/logic/commands/FindTagsOrCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"import static seedu.address.logic.Messages.MESSAGE_PERSONS_LISTED_OVERVIEW;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":"import static seedu.address.testutil.TypicalPersons.CARL;","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":"import static seedu.address.testutil.TypicalPersons.DANIEL;","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":"import java.util.List;","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.model.tag.TagsOrFoundPredicate;","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.testutil.TagBuilder;","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":"/**","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" * Contains integration tests (interaction with the Model) for {@code FindTagsOrCommand}.","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":"public class FindTagsOrCommandTest {","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"SimHanKiong"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"SimHanKiong"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"SimHanKiong"},"content":" public void equals() {","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"SimHanKiong"},"content":" TagsOrFoundPredicate firstPredicate \u003d preparePredicate(\"first\");","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"SimHanKiong"},"content":" TagsOrFoundPredicate secondPredicate \u003d preparePredicate(\"second\");","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"SimHanKiong"},"content":" FindTagsOrCommand firstCommand \u003d new FindTagsOrCommand(firstPredicate);","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"SimHanKiong"},"content":" FindTagsOrCommand secondCommand \u003d new FindTagsOrCommand(secondPredicate);","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"SimHanKiong"},"content":" assertTrue(firstCommand.equals(firstCommand));","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"SimHanKiong"},"content":" FindTagsOrCommand firstCommandCopy \u003d new FindTagsOrCommand(firstPredicate);","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"SimHanKiong"},"content":" assertTrue(firstCommand.equals(firstCommandCopy));","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"SimHanKiong"},"content":" assertFalse(firstCommand.equals(1));","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"SimHanKiong"},"content":" assertFalse(firstCommand.equals(null));","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"SimHanKiong"},"content":" assertFalse(firstCommand.equals(secondCommand));","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"SimHanKiong"},"content":" public void execute_zeroTags_noPersonFound() {","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"SimHanKiong"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"SimHanKiong"},"content":" TagsOrFoundPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"SimHanKiong"},"content":" FindTagsOrCommand command \u003d new FindTagsOrCommand(predicate);","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"SimHanKiong"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"SimHanKiong"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2024-03-14"},{"lineNumber":58,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":61,"author":{"gitId":"SimHanKiong"},"content":" public void execute_oneTag_multiplePersonsFound() {","lastModifiedDate":"2024-03-14"},{"lineNumber":62,"author":{"gitId":"SimHanKiong"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 2);","lastModifiedDate":"2024-03-14"},{"lineNumber":63,"author":{"gitId":"SimHanKiong"},"content":" TagsOrFoundPredicate predicate \u003d preparePredicate(\"car\");","lastModifiedDate":"2024-03-14"},{"lineNumber":64,"author":{"gitId":"SimHanKiong"},"content":" FindTagsOrCommand command \u003d new FindTagsOrCommand(predicate);","lastModifiedDate":"2024-03-14"},{"lineNumber":65,"author":{"gitId":"SimHanKiong"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-14"},{"lineNumber":66,"author":{"gitId":"SimHanKiong"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-14"},{"lineNumber":67,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(List.of(ALICE, BENSON), model.getFilteredPersonList());","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":69,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":70,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":71,"author":{"gitId":"SimHanKiong"},"content":" public void execute_oneTagWrongCase_noPersonFound() {","lastModifiedDate":"2024-03-14"},{"lineNumber":72,"author":{"gitId":"SimHanKiong"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2024-03-14"},{"lineNumber":73,"author":{"gitId":"SimHanKiong"},"content":" TagsOrFoundPredicate predicate \u003d preparePredicate(\"Car\");","lastModifiedDate":"2024-03-14"},{"lineNumber":74,"author":{"gitId":"SimHanKiong"},"content":" FindTagsOrCommand command \u003d new FindTagsOrCommand(predicate);","lastModifiedDate":"2024-03-14"},{"lineNumber":75,"author":{"gitId":"SimHanKiong"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-14"},{"lineNumber":76,"author":{"gitId":"SimHanKiong"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-14"},{"lineNumber":77,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(List.of(), model.getFilteredPersonList());","lastModifiedDate":"2024-03-14"},{"lineNumber":78,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":79,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":80,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":81,"author":{"gitId":"SimHanKiong"},"content":" public void execute_multipleTags_multiplePersonsFromOneTagFound() {","lastModifiedDate":"2024-03-14"},{"lineNumber":82,"author":{"gitId":"SimHanKiong"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 2);","lastModifiedDate":"2024-03-14"},{"lineNumber":83,"author":{"gitId":"SimHanKiong"},"content":" TagsOrFoundPredicate predicate \u003d preparePredicate(\"car death test\");","lastModifiedDate":"2024-03-14"},{"lineNumber":84,"author":{"gitId":"SimHanKiong"},"content":" FindTagsOrCommand command \u003d new FindTagsOrCommand(predicate);","lastModifiedDate":"2024-03-14"},{"lineNumber":85,"author":{"gitId":"SimHanKiong"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-14"},{"lineNumber":86,"author":{"gitId":"SimHanKiong"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-14"},{"lineNumber":87,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(List.of(ALICE, BENSON), model.getFilteredPersonList());","lastModifiedDate":"2024-03-14"},{"lineNumber":88,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":89,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":90,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":91,"author":{"gitId":"SimHanKiong"},"content":" public void execute_multipleTags_multiplePersonsFromDifferentTagsFound() {","lastModifiedDate":"2024-03-14"},{"lineNumber":92,"author":{"gitId":"SimHanKiong"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2024-03-14"},{"lineNumber":93,"author":{"gitId":"SimHanKiong"},"content":" TagsOrFoundPredicate predicate \u003d preparePredicate(\"death health covid\");","lastModifiedDate":"2024-03-14"},{"lineNumber":94,"author":{"gitId":"SimHanKiong"},"content":" FindTagsOrCommand command \u003d new FindTagsOrCommand(predicate);","lastModifiedDate":"2024-03-14"},{"lineNumber":95,"author":{"gitId":"SimHanKiong"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-14"},{"lineNumber":96,"author":{"gitId":"SimHanKiong"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-14"},{"lineNumber":97,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(List.of(BENSON, CARL, DANIEL), model.getFilteredPersonList());","lastModifiedDate":"2024-03-14"},{"lineNumber":98,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":99,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":100,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":101,"author":{"gitId":"SimHanKiong"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-14"},{"lineNumber":102,"author":{"gitId":"SimHanKiong"},"content":" TagsOrFoundPredicate predicate \u003d preparePredicate(\"tag\");","lastModifiedDate":"2024-03-14"},{"lineNumber":103,"author":{"gitId":"SimHanKiong"},"content":" FindTagsOrCommand command \u003d new FindTagsOrCommand(predicate);","lastModifiedDate":"2024-03-14"},{"lineNumber":104,"author":{"gitId":"SimHanKiong"},"content":" String expected \u003d FindTagsOrCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2024-03-14"},{"lineNumber":105,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(expected, command.toString());","lastModifiedDate":"2024-03-14"},{"lineNumber":106,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":107,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":108,"author":{"gitId":"SimHanKiong"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":109,"author":{"gitId":"SimHanKiong"},"content":" * Parses {@code userInput} into a {@code TagsOrFoundPredicate}.","lastModifiedDate":"2024-03-14"},{"lineNumber":110,"author":{"gitId":"SimHanKiong"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":111,"author":{"gitId":"SimHanKiong"},"content":" private TagsOrFoundPredicate preparePredicate(String userInput) {","lastModifiedDate":"2024-03-14"},{"lineNumber":112,"author":{"gitId":"SimHanKiong"},"content":" List\u003cString\u003e tagList \u003d List.of(userInput.split(\"\\\\s+\"));","lastModifiedDate":"2024-03-14"},{"lineNumber":113,"author":{"gitId":"SimHanKiong"},"content":" return new TagsOrFoundPredicate(TagBuilder.build(tagList));","lastModifiedDate":"2024-03-14"},{"lineNumber":114,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":115,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":116,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"SimHanKiong":116}},{"path":"src/test/java/seedu/address/logic/commands/LastContactCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Colex2000"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-15"},{"lineNumber":2,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":3,"author":{"gitId":"Colex2000"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-23"},{"lineNumber":4,"author":{"gitId":"Colex2000"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"Colex2000"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"Colex2000"},"content":"import static seedu.address.logic.commands.LastContactCommand.SORT_COMPARATOR;","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"Colex2000"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"Colex2000"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"Colex2000"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"Colex2000"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"Colex2000"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"Colex2000"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"Colex2000"},"content":"import seedu.address.model.person.IsLastContactedPredicate;","lastModifiedDate":"2024-03-23"},{"lineNumber":16,"author":{"gitId":"Colex2000"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"Colex2000"},"content":"/**","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"Colex2000"},"content":" * Contains integration tests (interaction with the Model) and unit tests for LastContactCommand.","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"Colex2000"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"Colex2000"},"content":"public class LastContactCommandTest {","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"Colex2000"},"content":" private Model model;","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"Colex2000"},"content":" private Model expectedModel;","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"Colex2000"},"content":" @BeforeEach","lastModifiedDate":"2024-03-23"},{"lineNumber":27,"author":{"gitId":"Colex2000"},"content":" public void setUp() {","lastModifiedDate":"2024-03-23"},{"lineNumber":28,"author":{"gitId":"Colex2000"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-23"},{"lineNumber":29,"author":{"gitId":"Colex2000"},"content":" expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"Colex2000"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":33,"author":{"gitId":"Colex2000"},"content":" public void execute_lastContactListIsNotFiltered_showsSameList() {","lastModifiedDate":"2024-03-23"},{"lineNumber":34,"author":{"gitId":"Colex2000"},"content":" assertCommandSuccess(new LastContactCommand(new IsLastContactedPredicate()), model,","lastModifiedDate":"2024-03-23"},{"lineNumber":35,"author":{"gitId":"Colex2000"},"content":" LastContactCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":37,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"Colex2000"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":39,"author":{"gitId":"Colex2000"},"content":" public void execute_lastContactListIsFiltered_showsSortedAndFiltered() {","lastModifiedDate":"2024-03-23"},{"lineNumber":40,"author":{"gitId":"Colex2000"},"content":" model.updateFilteredPersonList(new IsLastContactedPredicate());","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"Colex2000"},"content":" model.sortFilteredPersonList(SORT_COMPARATOR);","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"Colex2000"},"content":" expectedModel.updateFilteredPersonList(new IsLastContactedPredicate());","lastModifiedDate":"2024-03-23"},{"lineNumber":43,"author":{"gitId":"Colex2000"},"content":" expectedModel.sortFilteredPersonList(SORT_COMPARATOR);","lastModifiedDate":"2024-03-23"},{"lineNumber":44,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":45,"author":{"gitId":"Colex2000"},"content":" assertCommandSuccess(new LastContactCommand(new IsLastContactedPredicate()), model,","lastModifiedDate":"2024-03-23"},{"lineNumber":46,"author":{"gitId":"Colex2000"},"content":" LastContactCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-03-23"},{"lineNumber":47,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":48,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":49,"author":{"gitId":"Colex2000"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":50,"author":{"gitId":"Colex2000"},"content":" public void equals() {","lastModifiedDate":"2024-03-23"},{"lineNumber":51,"author":{"gitId":"Colex2000"},"content":" IsLastContactedPredicate firstPredicate \u003d new IsLastContactedPredicate();","lastModifiedDate":"2024-03-23"},{"lineNumber":52,"author":{"gitId":"Colex2000"},"content":" IsLastContactedPredicate secondPredicate \u003d new IsLastContactedPredicate() {","lastModifiedDate":"2024-03-23"},{"lineNumber":53,"author":{"gitId":"Colex2000"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":54,"author":{"gitId":"Colex2000"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-03-23"},{"lineNumber":55,"author":{"gitId":"Colex2000"},"content":" return false;","lastModifiedDate":"2024-03-23"},{"lineNumber":56,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":57,"author":{"gitId":"Colex2000"},"content":" };","lastModifiedDate":"2024-03-23"},{"lineNumber":58,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":59,"author":{"gitId":"Colex2000"},"content":" LastContactCommand lastContactFirstCommand \u003d new LastContactCommand(firstPredicate);","lastModifiedDate":"2024-03-23"},{"lineNumber":60,"author":{"gitId":"Colex2000"},"content":" LastContactCommand lastContactSecondCommand \u003d new LastContactCommand(secondPredicate);","lastModifiedDate":"2024-03-23"},{"lineNumber":61,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":62,"author":{"gitId":"Colex2000"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-23"},{"lineNumber":63,"author":{"gitId":"Colex2000"},"content":" assertTrue(lastContactFirstCommand.equals(lastContactFirstCommand));","lastModifiedDate":"2024-03-23"},{"lineNumber":64,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":65,"author":{"gitId":"Colex2000"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-23"},{"lineNumber":66,"author":{"gitId":"Colex2000"},"content":" LastContactCommand lastContactFirstCommandCopy \u003d new LastContactCommand(firstPredicate);","lastModifiedDate":"2024-03-23"},{"lineNumber":67,"author":{"gitId":"Colex2000"},"content":" assertTrue(lastContactFirstCommand.equals(lastContactFirstCommandCopy));","lastModifiedDate":"2024-03-23"},{"lineNumber":68,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":69,"author":{"gitId":"Colex2000"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-23"},{"lineNumber":70,"author":{"gitId":"Colex2000"},"content":" assertFalse(lastContactFirstCommand.equals(1));","lastModifiedDate":"2024-03-23"},{"lineNumber":71,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":72,"author":{"gitId":"Colex2000"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-23"},{"lineNumber":73,"author":{"gitId":"Colex2000"},"content":" assertFalse(lastContactFirstCommand.equals(null));","lastModifiedDate":"2024-03-23"},{"lineNumber":74,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":75,"author":{"gitId":"Colex2000"},"content":" // different predicate -\u003e returns false","lastModifiedDate":"2024-03-23"},{"lineNumber":76,"author":{"gitId":"Colex2000"},"content":" assertFalse(lastContactFirstCommand.equals(lastContactSecondCommand));","lastModifiedDate":"2024-03-23"},{"lineNumber":77,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":78,"author":{"gitId":"Colex2000"},"content":"}","lastModifiedDate":"2024-03-15"}],"authorContributionMap":{"Colex2000":78}},{"path":"src/test/java/seedu/address/logic/commands/SelectCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ziyang27"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"ziyang27"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"ziyang27"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"ziyang27"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"ziyang27"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"ziyang27"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"ziyang27"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"ziyang27"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"ziyang27"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"ziyang27"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"ziyang27"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"ziyang27"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"ziyang27"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"ziyang27"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"ziyang27"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"ziyang27"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"ziyang27"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"ziyang27"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"ziyang27"},"content":"import seedu.address.model.person.IsSamePersonPredicate;","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"ziyang27"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"ziyang27"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"ziyang27"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"ziyang27"},"content":" * {@code SelectCommand}.","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"ziyang27"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"ziyang27"},"content":"public class SelectCommandTest {","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"ziyang27"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"ziyang27"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"ziyang27"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"ziyang27"},"content":" Person personToSelect \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"ziyang27"},"content":" SelectCommand selectCommand \u003d new SelectCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"ziyang27"},"content":" String expectedMessage \u003d String.format(SelectCommand.MESSAGE_SELECT_PERSON_SUCCESS,","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"ziyang27"},"content":" Messages.format(personToSelect));","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"ziyang27"},"content":" IsSamePersonPredicate predicate \u003d preparePredicate(personToSelect);","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"ziyang27"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"ziyang27"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"ziyang27"},"content":" assertCommandSuccess(selectCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"ziyang27"},"content":" assertEquals(Arrays.asList(ALICE), model.getFilteredPersonList());","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"ziyang27"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"ziyang27"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"ziyang27"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"ziyang27"},"content":" SelectCommand selectCommand \u003d new SelectCommand(outOfBoundIndex);","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"ziyang27"},"content":" assertCommandFailure(selectCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-13"},{"lineNumber":56,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"ziyang27"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"ziyang27"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2024-03-13"},{"lineNumber":60,"author":{"gitId":"ziyang27"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-13"},{"lineNumber":61,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":62,"author":{"gitId":"ziyang27"},"content":" Person personToSelect \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-13"},{"lineNumber":63,"author":{"gitId":"ziyang27"},"content":" SelectCommand selectCommand \u003d new SelectCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-13"},{"lineNumber":64,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":65,"author":{"gitId":"ziyang27"},"content":" String expectedMessage \u003d String.format(SelectCommand.MESSAGE_SELECT_PERSON_SUCCESS,","lastModifiedDate":"2024-03-13"},{"lineNumber":66,"author":{"gitId":"ziyang27"},"content":" Messages.format(personToSelect));","lastModifiedDate":"2024-03-13"},{"lineNumber":67,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":68,"author":{"gitId":"ziyang27"},"content":" IsSamePersonPredicate predicate \u003d preparePredicate(personToSelect);","lastModifiedDate":"2024-03-13"},{"lineNumber":69,"author":{"gitId":"ziyang27"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"lineNumber":70,"author":{"gitId":"ziyang27"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":72,"author":{"gitId":"ziyang27"},"content":" assertCommandSuccess(selectCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-13"},{"lineNumber":73,"author":{"gitId":"ziyang27"},"content":" assertEquals(Arrays.asList(ALICE), model.getFilteredPersonList());","lastModifiedDate":"2024-03-13"},{"lineNumber":74,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":75,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":76,"author":{"gitId":"ziyang27"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":77,"author":{"gitId":"ziyang27"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2024-03-13"},{"lineNumber":78,"author":{"gitId":"ziyang27"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-13"},{"lineNumber":79,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":80,"author":{"gitId":"ziyang27"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-13"},{"lineNumber":81,"author":{"gitId":"ziyang27"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2024-03-13"},{"lineNumber":82,"author":{"gitId":"ziyang27"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2024-03-13"},{"lineNumber":83,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":84,"author":{"gitId":"ziyang27"},"content":" SelectCommand selectCommand \u003d new SelectCommand(outOfBoundIndex);","lastModifiedDate":"2024-03-13"},{"lineNumber":85,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":86,"author":{"gitId":"ziyang27"},"content":" assertCommandFailure(selectCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-13"},{"lineNumber":87,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":88,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":89,"author":{"gitId":"ziyang27"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":90,"author":{"gitId":"ziyang27"},"content":" public void equals() {","lastModifiedDate":"2024-03-13"},{"lineNumber":91,"author":{"gitId":"ziyang27"},"content":" SelectCommand selectFirstCommand \u003d new SelectCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-13"},{"lineNumber":92,"author":{"gitId":"ziyang27"},"content":" SelectCommand selectSecondCommand \u003d new SelectCommand(INDEX_SECOND_PERSON);","lastModifiedDate":"2024-03-13"},{"lineNumber":93,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":94,"author":{"gitId":"ziyang27"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-13"},{"lineNumber":95,"author":{"gitId":"ziyang27"},"content":" assertTrue(selectFirstCommand.equals(selectFirstCommand));","lastModifiedDate":"2024-03-13"},{"lineNumber":96,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":97,"author":{"gitId":"ziyang27"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-13"},{"lineNumber":98,"author":{"gitId":"ziyang27"},"content":" SelectCommand selectFirstCommandCopy \u003d new SelectCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-13"},{"lineNumber":99,"author":{"gitId":"ziyang27"},"content":" assertTrue(selectFirstCommand.equals(selectFirstCommandCopy));","lastModifiedDate":"2024-03-13"},{"lineNumber":100,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":101,"author":{"gitId":"ziyang27"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-13"},{"lineNumber":102,"author":{"gitId":"ziyang27"},"content":" assertFalse(selectFirstCommand.equals(1));","lastModifiedDate":"2024-03-13"},{"lineNumber":103,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":104,"author":{"gitId":"ziyang27"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-13"},{"lineNumber":105,"author":{"gitId":"ziyang27"},"content":" assertFalse(selectFirstCommand.equals(null));","lastModifiedDate":"2024-03-13"},{"lineNumber":106,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":107,"author":{"gitId":"ziyang27"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-13"},{"lineNumber":108,"author":{"gitId":"ziyang27"},"content":" assertFalse(selectFirstCommand.equals(selectSecondCommand));","lastModifiedDate":"2024-03-13"},{"lineNumber":109,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":110,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":111,"author":{"gitId":"ziyang27"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":112,"author":{"gitId":"ziyang27"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-13"},{"lineNumber":113,"author":{"gitId":"ziyang27"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-13"},{"lineNumber":114,"author":{"gitId":"ziyang27"},"content":" SelectCommand selectCommand \u003d new SelectCommand(targetIndex);","lastModifiedDate":"2024-03-13"},{"lineNumber":115,"author":{"gitId":"ziyang27"},"content":" String expected \u003d SelectCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2024-03-13"},{"lineNumber":116,"author":{"gitId":"ziyang27"},"content":" assertEquals(expected, selectCommand.toString());","lastModifiedDate":"2024-03-13"},{"lineNumber":117,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":118,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":119,"author":{"gitId":"ziyang27"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":120,"author":{"gitId":"ziyang27"},"content":" * Parses {@code selectedPerson} into a {@code IsSamePersonPredicate}.","lastModifiedDate":"2024-03-13"},{"lineNumber":121,"author":{"gitId":"ziyang27"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":122,"author":{"gitId":"ziyang27"},"content":" private IsSamePersonPredicate preparePredicate(Person selectedPerson) {","lastModifiedDate":"2024-03-13"},{"lineNumber":123,"author":{"gitId":"ziyang27"},"content":" return new IsSamePersonPredicate(selectedPerson);","lastModifiedDate":"2024-03-13"},{"lineNumber":124,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":125,"author":{"gitId":"ziyang27"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"ziyang27":125}},{"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":"Colex2000"},"content":"import static seedu.address.logic.commands.CommandTestUtil.LASTCONTACT_AMY;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"Colex2000"},"content":"import static seedu.address.logic.commands.CommandTestUtil.LASTCONTACT_BOB;","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2017-12-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":23,"author":{"gitId":"tanyunchao"},"content":"import static seedu.address.logic.commands.CommandTestUtil.UPCOMING_DESC_BOB;","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":26,"author":{"gitId":"Colex2000"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_LAST_CONTACT;","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"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":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-06-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-06-15"},{"lineNumber":49,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15"},{"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_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":57,"author":{"gitId":"Colex2000"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND)","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"Colex2000"},"content":" .withLastContact(VALID_LAST_CONTACT).build();","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":62,"author":{"gitId":"tanyunchao"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND + UPCOMING_DESC_BOB + LASTCONTACT_BOB,","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"tanyunchao"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2024-03-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":"-"},"content":" Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND)","lastModifiedDate":"2018-07-25"},{"lineNumber":68,"author":{"gitId":"Colex2000"},"content":" .withLastContact(VALID_LAST_CONTACT).build();","lastModifiedDate":"2024-03-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":70,"author":{"gitId":"Colex2000"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"tanyunchao"},"content":" + TAG_DESC_FRIEND + UPCOMING_DESC_BOB + LASTCONTACT_BOB,","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"-"},"content":" new AddCommand(expectedPersonMultipleTags));","lastModifiedDate":"2023-07-14"},{"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":"-"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-07-14"},{"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":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":82,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":86,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2023-07-14"},{"lineNumber":99,"author":{"gitId":"-"},"content":" + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_ADDRESS, PREFIX_EMAIL, PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":110,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":112,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" // valid value followed by invalid 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, validExpectedPersonString + INVALID_NAME_DESC,","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, validExpectedPersonString + INVALID_EMAIL_DESC,","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, validExpectedPersonString + INVALID_PHONE_DESC,","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":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":139,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":140,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":141,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15"},{"lineNumber":142,"author":{"gitId":"tanyunchao"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().withUpcoming(\"\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":143,"author":{"gitId":"Colex2000"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2024-03-13"},{"lineNumber":144,"author":{"gitId":"Colex2000"},"content":" + LASTCONTACT_AMY,","lastModifiedDate":"2024-03-13"},{"lineNumber":145,"author":{"gitId":"-"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2017-12-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":148,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":149,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":150,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":152,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":153,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_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 phone prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_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":" // missing email prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":161,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_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":" // missing address prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":165,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":168,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15"},{"lineNumber":169,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":173,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":174,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":175,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":176,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":179,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15"},{"lineNumber":180,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":183,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15"},{"lineNumber":184,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":187,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15"},{"lineNumber":188,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2017-12-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":191,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15"},{"lineNumber":192,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":" + INVALID_TAG_DESC + VALID_TAG_FRIEND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":195,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":196,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC,","lastModifiedDate":"2017-12-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2017-12-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":204,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"Colex2000":9,"tanyunchao":5,"-":190}},{"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.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-06-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.logic.commands.FindTagsAndCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.logic.commands.FindTagsOrCommand;","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":24,"author":{"gitId":"Colex2000"},"content":"import seedu.address.logic.commands.LastContactCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":26,"author":{"gitId":"ziyang27"},"content":"import seedu.address.logic.commands.SelectCommand;","lastModifiedDate":"2024-03-14"},{"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":"SimHanKiong"},"content":"import seedu.address.model.tag.TagsAndFoundPredicate;","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.model.tag.TagsOrFoundPredicate;","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27"},{"lineNumber":35,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.testutil.TagBuilder;","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":61,"author":{"gitId":"ziyang27"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":62,"author":{"gitId":"ziyang27"},"content":" public void parseCommand_select() throws Exception {","lastModifiedDate":"2024-03-14"},{"lineNumber":63,"author":{"gitId":"ziyang27"},"content":" SelectCommand command \u003d (SelectCommand) parser.parseCommand(","lastModifiedDate":"2024-03-14"},{"lineNumber":64,"author":{"gitId":"ziyang27"},"content":" SelectCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2024-03-14"},{"lineNumber":65,"author":{"gitId":"ziyang27"},"content":" assertEquals(new SelectCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2024-03-14"},{"lineNumber":66,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":67,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2018-03-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command);","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":"2017-06-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","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_find() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":85,"author":{"gitId":"SimHanKiong"},"content":" List\u003cString\u003e keywords \u003d List.of(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2024-03-14"},{"lineNumber":86,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":87,"author":{"gitId":"SimHanKiong"},"content":" FindCommand.COMMAND_WORD + \" \" + String.join(\" \", keywords));","lastModifiedDate":"2024-03-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":92,"author":{"gitId":"SimHanKiong"},"content":" public void parseCommand_findTagsOr() throws Exception {","lastModifiedDate":"2024-03-14"},{"lineNumber":93,"author":{"gitId":"SimHanKiong"},"content":" List\u003cString\u003e tags \u003d List.of(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2024-03-14"},{"lineNumber":94,"author":{"gitId":"SimHanKiong"},"content":" FindTagsOrCommand command \u003d (FindTagsOrCommand) parser.parseCommand(","lastModifiedDate":"2024-03-14"},{"lineNumber":95,"author":{"gitId":"SimHanKiong"},"content":" FindTagsOrCommand.COMMAND_WORD + \" \" + String.join(\" \", tags));","lastModifiedDate":"2024-03-14"},{"lineNumber":96,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(new FindTagsOrCommand(new TagsOrFoundPredicate(TagBuilder.build(tags))), command);","lastModifiedDate":"2024-03-14"},{"lineNumber":97,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":98,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":99,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"SimHanKiong"},"content":" public void parseCommand_findTagsAnd() throws Exception {","lastModifiedDate":"2024-03-18"},{"lineNumber":101,"author":{"gitId":"SimHanKiong"},"content":" List\u003cString\u003e tags \u003d List.of(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2024-03-18"},{"lineNumber":102,"author":{"gitId":"SimHanKiong"},"content":" FindTagsAndCommand command \u003d (FindTagsAndCommand) parser.parseCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":103,"author":{"gitId":"SimHanKiong"},"content":" FindTagsAndCommand.COMMAND_WORD + \" \" + String.join(\" \", tags));","lastModifiedDate":"2024-03-18"},{"lineNumber":104,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(new FindTagsAndCommand(new TagsAndFoundPredicate(TagBuilder.build(tags))), command);","lastModifiedDate":"2024-03-18"},{"lineNumber":105,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":106,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":120,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":126,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":129,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":130,"author":{"gitId":"Colex2000"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":131,"author":{"gitId":"Colex2000"},"content":" public void parseCommand_lastContact() throws Exception {","lastModifiedDate":"2024-03-16"},{"lineNumber":132,"author":{"gitId":"Colex2000"},"content":" assertTrue(parser.parseCommand(LastContactCommand.COMMAND_WORD) instanceof LastContactCommand);","lastModifiedDate":"2024-03-23"},{"lineNumber":133,"author":{"gitId":"Colex2000"},"content":" assertTrue(parser.parseCommand(LastContactCommand.COMMAND_WORD + \" 3\") instanceof LastContactCommand);","lastModifiedDate":"2024-03-23"},{"lineNumber":134,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":135,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":136,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"SimHanKiong":24,"Colex2000":7,"ziyang27":8,"-":97}},{"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":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-23"},{"lineNumber":27,"author":{"gitId":"Colex2000"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LASTCONTACT;","lastModifiedDate":"2024-03-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"Colex2000"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_UPCOMING;","lastModifiedDate":"2024-03-23"},{"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.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.Address;","lastModifiedDate":"2024-03-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-23"},{"lineNumber":45,"author":{"gitId":"Colex2000"},"content":"import seedu.address.model.person.LastContact;","lastModifiedDate":"2024-03-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-23"},{"lineNumber":48,"author":{"gitId":"Colex2000"},"content":"import seedu.address.model.person.Upcoming;","lastModifiedDate":"2024-03-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":" private static final String TAG_EMPTY \u003d \" \" + PREFIX_TAG;","lastModifiedDate":"2017-05-04"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","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":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-07-06"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06"},{"lineNumber":75,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":78,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"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":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"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":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2018-09-22"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2018-09-22"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2018-09-22"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_ADDRESS_DESC, Address.MESSAGE_CONSTRAINTS); // invalid address","lastModifiedDate":"2018-09-22"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2018-09-22"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":96,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":99,"author":{"gitId":"-"},"content":" // while parsing {@code PREFIX_TAG} alone will reset the tags of the {@code Person} being edited,","lastModifiedDate":"2017-05-04"},{"lineNumber":100,"author":{"gitId":"-"},"content":" // parsing it together with a valid tag results in error","lastModifiedDate":"2017-05-04"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_DESC_HUSBAND + TAG_EMPTY, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_EMPTY + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_EMPTY + TAG_DESC_FRIEND + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"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":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_ADDRESS_AMY + VALID_PHONE_AMY,","lastModifiedDate":"2017-07-06"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":112,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":113,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2017-06-06"},{"lineNumber":114,"author":{"gitId":"-"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + NAME_DESC_AMY + TAG_DESC_FRIEND;","lastModifiedDate":"2017-06-06"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":116,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-05-04"},{"lineNumber":117,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-05-04"},{"lineNumber":118,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":119,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":124,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":125,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":126,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":127,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":129,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-04"},{"lineNumber":130,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":131,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"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_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":138,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04"},{"lineNumber":139,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":140,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":141,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_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":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":145,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2017-05-04"},{"lineNumber":146,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":147,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":148,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":151,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04"},{"lineNumber":152,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":153,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":154,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":155,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":157,"author":{"gitId":"-"},"content":" // address","lastModifiedDate":"2017-05-04"},{"lineNumber":158,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + ADDRESS_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":159,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":160,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":161,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":163,"author":{"gitId":"-"},"content":" // tags","lastModifiedDate":"2017-05-04"},{"lineNumber":164,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + TAG_DESC_FRIEND;","lastModifiedDate":"2017-05-25"},{"lineNumber":165,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":166,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":167,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":170,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":171,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":172,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14"},{"lineNumber":173,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-07-14"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":175,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14"},{"lineNumber":176,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":177,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2023-07-14"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":179,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":181,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14"},{"lineNumber":182,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2023-07-14"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":184,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":186,"author":{"gitId":"-"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":187,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2023-07-14"},{"lineNumber":188,"author":{"gitId":"-"},"content":" + TAG_DESC_FRIEND + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + TAG_DESC_FRIEND","lastModifiedDate":"2017-05-25"},{"lineNumber":189,"author":{"gitId":"-"},"content":" + PHONE_DESC_BOB + ADDRESS_DESC_BOB + EMAIL_DESC_BOB + TAG_DESC_HUSBAND;","lastModifiedDate":"2017-05-25"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":191,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":192,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":194,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14"},{"lineNumber":195,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2023-07-14"},{"lineNumber":196,"author":{"gitId":"-"},"content":" + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2023-07-14"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":198,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":199,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":200,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":202,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":203,"author":{"gitId":"-"},"content":" public void parse_resetTags_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":204,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":205,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_EMPTY;","lastModifiedDate":"2017-05-25"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":207,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withTags().build();","lastModifiedDate":"2017-05-04"},{"lineNumber":208,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":210,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":211,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":212,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":213,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":214,"author":{"gitId":"Colex2000"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":215,"author":{"gitId":"Colex2000"},"content":" public void parse_upcomingFieldEmpty_failure() {","lastModifiedDate":"2024-03-23"},{"lineNumber":216,"author":{"gitId":"Colex2000"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-23"},{"lineNumber":217,"author":{"gitId":"Colex2000"},"content":" String userInput \u003d targetIndex.getOneBased() + \" \" + PREFIX_UPCOMING;","lastModifiedDate":"2024-03-23"},{"lineNumber":218,"author":{"gitId":"Colex2000"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-23"},{"lineNumber":219,"author":{"gitId":"Colex2000"},"content":" Upcoming.MESSAGE_EDIT_EMPTY_STRING_EXCEPTION);","lastModifiedDate":"2024-03-23"},{"lineNumber":220,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":221,"author":{"gitId":"Colex2000"},"content":" assertParseFailure(parser, userInput, expectedMessage);","lastModifiedDate":"2024-03-23"},{"lineNumber":222,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":223,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":224,"author":{"gitId":"Colex2000"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":225,"author":{"gitId":"Colex2000"},"content":" public void parse_lastContactFieldEmpty_failure() {","lastModifiedDate":"2024-03-23"},{"lineNumber":226,"author":{"gitId":"Colex2000"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-23"},{"lineNumber":227,"author":{"gitId":"Colex2000"},"content":" String userInput \u003d targetIndex.getOneBased() + \" \" + PREFIX_LASTCONTACT;","lastModifiedDate":"2024-03-23"},{"lineNumber":228,"author":{"gitId":"Colex2000"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-23"},{"lineNumber":229,"author":{"gitId":"Colex2000"},"content":" LastContact.MESSAGE_EDIT_EMPTY_STRING_EXCEPTION);","lastModifiedDate":"2024-03-23"},{"lineNumber":230,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":231,"author":{"gitId":"Colex2000"},"content":" assertParseFailure(parser, userInput, expectedMessage);","lastModifiedDate":"2024-03-23"},{"lineNumber":232,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":233,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04"}],"authorContributionMap":{"Colex2000":26,"-":208}},{"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":"-"},"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":"SimHanKiong"},"content":" assertParseFailure(parser, \" \",","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsFindCommand() {","lastModifiedDate":"2017-08-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2017-06-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" FindCommand expectedFindCommand \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" new FindCommand(new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\")));","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, \"Alice Bob\", expectedFindCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2017-06-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, \" \\n Alice \\n \\t Bob \\t\", expectedFindCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-27"}],"authorContributionMap":{"SimHanKiong":2,"-":33}},{"path":"src/test/java/seedu/address/logic/parser/FindTagsAndCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"import java.util.List;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.logic.commands.FindTagsAndCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.model.tag.TagsAndFoundPredicate;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.testutil.TagBuilder;","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":"public class FindTagsAndCommandParserTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" private FindTagsAndCommandParser parser \u003d new FindTagsAndCommandParser();","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" assertParseFailure(parser, \" \",","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindTagsAndCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":" assertParseFailure(parser, \"!#@#$\", Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"SimHanKiong"},"content":" public void parse_validArgs_returnsFindTagsOrCommand() {","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"SimHanKiong"},"content":" List\u003cString\u003e tagList \u003d List.of(\"car\", \"health\");","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"SimHanKiong"},"content":" FindTagsAndCommand expectedCommand \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"SimHanKiong"},"content":" new FindTagsAndCommand(new TagsAndFoundPredicate(TagBuilder.build(tagList)));","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"SimHanKiong"},"content":" assertParseSuccess(parser, \"car health\", expectedCommand);","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"SimHanKiong"},"content":" assertParseSuccess(parser, \" \\n car \\n \\t health \\t\", expectedCommand);","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"SimHanKiong":41}},{"path":"src/test/java/seedu/address/logic/parser/FindTagsOrCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"import java.util.List;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.logic.commands.FindTagsOrCommand;","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.model.tag.TagsOrFoundPredicate;","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.testutil.TagBuilder;","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":"public class FindTagsOrCommandParserTest {","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" private FindTagsOrCommandParser parser \u003d new FindTagsOrCommandParser();","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" assertParseFailure(parser, \" \",","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindTagsOrCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":" assertParseFailure(parser, \"!#@#$\", Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"SimHanKiong"},"content":" public void parse_validArgs_returnsFindTagsOrCommand() {","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"SimHanKiong"},"content":" List\u003cString\u003e tagList \u003d List.of(\"car\", \"health\");","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"SimHanKiong"},"content":" FindTagsOrCommand expectedCommand \u003d","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"SimHanKiong"},"content":" new FindTagsOrCommand(new TagsOrFoundPredicate(TagBuilder.build(tagList)));","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"SimHanKiong"},"content":" assertParseSuccess(parser, \"car health\", expectedCommand);","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"SimHanKiong"},"content":" assertParseSuccess(parser, \" \\n car \\n \\t health \\t\", expectedCommand);","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"SimHanKiong":41}},{"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.Address;","lastModifiedDate":"2017-05-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-22"},{"lineNumber":19,"author":{"gitId":"Colex2000"},"content":"import seedu.address.model.person.LastContact;","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-22"},{"lineNumber":22,"author":{"gitId":"tanyunchao"},"content":"import seedu.address.model.person.Upcoming;","lastModifiedDate":"2024-03-17"},{"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":"tanyunchao"},"content":" private static final String INVALID_UPCOMING \u003d \"12-12-2024\";","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"Colex2000"},"content":" private static final String INVALID_LASTCONTACT \u003d \"12-12-2024\";","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d \"123456\";","lastModifiedDate":"2017-05-22"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d \"123 Main Street #0505\";","lastModifiedDate":"2017-05-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_1 \u003d \"friend\";","lastModifiedDate":"2017-05-22"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_2 \u003d \"neighbour\";","lastModifiedDate":"2017-05-22"},{"lineNumber":40,"author":{"gitId":"tanyunchao"},"content":" private static final String VALID_UPCOMING \u003d \"12-12-2024 1200\";","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"Colex2000"},"content":" private static final String VALID_LASTCONTACT \u003d \"13-03-2024 0600\";","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","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_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // No 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":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2017-05-25"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":83,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29"},{"lineNumber":84,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void parsePhone_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePhone((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void parsePhone_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhone(INVALID_PHONE));","lastModifiedDate":"2019-03-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":100,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-22"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(VALID_PHONE));","lastModifiedDate":"2017-05-30"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithWhitespace_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":106,"author":{"gitId":"-"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-30"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(phoneWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void parseAddress_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseAddress((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public void parseAddress_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseAddress(INVALID_ADDRESS));","lastModifiedDate":"2019-03-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":123,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-22"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(VALID_ADDRESS));","lastModifiedDate":"2017-05-30"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":128,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":129,"author":{"gitId":"-"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_ADDRESS + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":130,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-30"},{"lineNumber":131,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(addressWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":135,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":139,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":140,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":145,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":146,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22"},{"lineNumber":147,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":150,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":151,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":152,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":153,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30"},{"lineNumber":154,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":157,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":158,"author":{"gitId":"-"},"content":" public void parseTag_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":162,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":163,"author":{"gitId":"-"},"content":" public void parseTag_invalidValue_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTag(INVALID_TAG));","lastModifiedDate":"2019-03-23"},{"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_validValueWithoutWhitespace_returnsTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":169,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30"},{"lineNumber":170,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(VALID_TAG_1));","lastModifiedDate":"2017-05-30"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":173,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":174,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithWhitespace_returnsTrimmedTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":175,"author":{"gitId":"-"},"content":" String tagWithWhitespace \u003d WHITESPACE + VALID_TAG_1 + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":176,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30"},{"lineNumber":177,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(tagWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":180,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":181,"author":{"gitId":"-"},"content":" public void parseTags_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTags(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":185,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":186,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithInvalidTags_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, INVALID_TAG)));","lastModifiedDate":"2019-03-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":190,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":191,"author":{"gitId":"-"},"content":" public void parseTags_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2017-05-22"},{"lineNumber":192,"author":{"gitId":"-"},"content":" assertTrue(ParserUtil.parseTags(Collections.emptyList()).isEmpty());","lastModifiedDate":"2017-05-22"},{"lineNumber":193,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":195,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":196,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithValidTags_returnsTagSet() throws Exception {","lastModifiedDate":"2017-05-22"},{"lineNumber":197,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e actualTagSet \u003d ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, VALID_TAG_2));","lastModifiedDate":"2017-05-22"},{"lineNumber":198,"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":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":200,"author":{"gitId":"-"},"content":" assertEquals(expectedTagSet, actualTagSet);","lastModifiedDate":"2017-05-22"},{"lineNumber":201,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":202,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":203,"author":{"gitId":"tanyunchao"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":204,"author":{"gitId":"tanyunchao"},"content":" public void parseUpcoming_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":205,"author":{"gitId":"tanyunchao"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseUpcoming(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":206,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":207,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":208,"author":{"gitId":"tanyunchao"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":209,"author":{"gitId":"tanyunchao"},"content":" public void parseUpcoming_invalidValue_throwsParseException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":210,"author":{"gitId":"tanyunchao"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseUpcoming(INVALID_UPCOMING));","lastModifiedDate":"2024-03-17"},{"lineNumber":211,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":212,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":213,"author":{"gitId":"tanyunchao"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":214,"author":{"gitId":"tanyunchao"},"content":" public void parseUpcoming_validValueWithoutWhitespace_returnsUpcoming() throws Exception {","lastModifiedDate":"2024-03-17"},{"lineNumber":215,"author":{"gitId":"tanyunchao"},"content":" Upcoming expectedUpcoming \u003d new Upcoming(VALID_UPCOMING);","lastModifiedDate":"2024-03-17"},{"lineNumber":216,"author":{"gitId":"tanyunchao"},"content":" assertEquals(expectedUpcoming, ParserUtil.parseUpcoming(VALID_UPCOMING));","lastModifiedDate":"2024-03-17"},{"lineNumber":217,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":218,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":219,"author":{"gitId":"tanyunchao"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":220,"author":{"gitId":"tanyunchao"},"content":" public void parseUpcoming_validValueWithWhitespace_returnsTrimmedUpcoming() throws Exception {","lastModifiedDate":"2024-03-17"},{"lineNumber":221,"author":{"gitId":"tanyunchao"},"content":" String upcomingWithWhitespace \u003d WHITESPACE + VALID_UPCOMING + WHITESPACE;","lastModifiedDate":"2024-03-17"},{"lineNumber":222,"author":{"gitId":"tanyunchao"},"content":" Upcoming expectedUpcoming \u003d new Upcoming(VALID_UPCOMING);","lastModifiedDate":"2024-03-17"},{"lineNumber":223,"author":{"gitId":"tanyunchao"},"content":" assertEquals(expectedUpcoming, ParserUtil.parseUpcoming(upcomingWithWhitespace));","lastModifiedDate":"2024-03-17"},{"lineNumber":224,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":225,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":226,"author":{"gitId":"Colex2000"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":227,"author":{"gitId":"Colex2000"},"content":" public void parseLastContact_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":228,"author":{"gitId":"Colex2000"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseLastContact(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":229,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":230,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":231,"author":{"gitId":"Colex2000"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":232,"author":{"gitId":"Colex2000"},"content":" public void parseLastContact_invalidValue_throwsParseException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":233,"author":{"gitId":"Colex2000"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseLastContact(INVALID_LASTCONTACT));","lastModifiedDate":"2024-03-18"},{"lineNumber":234,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":235,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":236,"author":{"gitId":"Colex2000"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":237,"author":{"gitId":"Colex2000"},"content":" public void parseLastContact_validValueWithoutWhitespace_returnsLastContact() throws Exception {","lastModifiedDate":"2024-03-18"},{"lineNumber":238,"author":{"gitId":"Colex2000"},"content":" LastContact expectedLastContact \u003d new LastContact(VALID_LASTCONTACT);","lastModifiedDate":"2024-03-18"},{"lineNumber":239,"author":{"gitId":"Colex2000"},"content":" assertEquals(expectedLastContact, ParserUtil.parseLastContact(VALID_LASTCONTACT));","lastModifiedDate":"2024-03-18"},{"lineNumber":240,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":241,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":242,"author":{"gitId":"Colex2000"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":243,"author":{"gitId":"Colex2000"},"content":" public void parseLastContact_validValueWithWhitespace_returnsTrimmedLastContact() throws Exception {","lastModifiedDate":"2024-03-18"},{"lineNumber":244,"author":{"gitId":"Colex2000"},"content":" String lastContactWithWhitespace \u003d WHITESPACE + VALID_LASTCONTACT + WHITESPACE;","lastModifiedDate":"2024-03-18"},{"lineNumber":245,"author":{"gitId":"Colex2000"},"content":" LastContact expectedLastContact \u003d new LastContact(VALID_LASTCONTACT);","lastModifiedDate":"2024-03-18"},{"lineNumber":246,"author":{"gitId":"Colex2000"},"content":" assertEquals(expectedLastContact, ParserUtil.parseLastContact(lastContactWithWhitespace));","lastModifiedDate":"2024-03-18"},{"lineNumber":247,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":248,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22"}],"authorContributionMap":{"Colex2000":26,"tanyunchao":26,"-":196}},{"path":"src/test/java/seedu/address/logic/parser/SelectCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ziyang27"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"ziyang27"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"ziyang27"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"ziyang27"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"ziyang27"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"ziyang27"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"ziyang27"},"content":"import seedu.address.logic.commands.SelectCommand;","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"ziyang27"},"content":"/**","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"ziyang27"},"content":" * As we are only doing white-box testing, our test cases do not cover path variations","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"ziyang27"},"content":" * outside of the SelectCommand code. For example, inputs \"1\" and \"1 abc\" take the","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"ziyang27"},"content":" * same path through the DeleteCommand, and therefore we test only one of them.","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"ziyang27"},"content":" * The path variation for those two cases occur inside the ParserUtil, and","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"ziyang27"},"content":" * therefore should be covered by the ParserUtilTest.","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"ziyang27"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"ziyang27"},"content":"public class SelectCommandParserTest {","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"ziyang27"},"content":" private SelectCommandParser parser \u003d new SelectCommandParser();","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"ziyang27"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"ziyang27"},"content":" public void parse_validArgs_returnsSelectCommand() {","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"ziyang27"},"content":" assertParseSuccess(parser, \"1\", new SelectCommand(INDEX_FIRST_PERSON));","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"ziyang27"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"ziyang27"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"ziyang27"},"content":" assertParseFailure(parser, \"a\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, SelectCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"ziyang27"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"ziyang27":32}},{"path":"src/test/java/seedu/address/model/person/IsSamePersonPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ziyang27"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"ziyang27"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"ziyang27"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"ziyang27"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"ziyang27"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"ziyang27"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"ziyang27"},"content":"public class IsSamePersonPredicateTest {","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"ziyang27"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"ziyang27"},"content":" public void equals() {","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"ziyang27"},"content":" Person firstPredicateSelectedPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"ziyang27"},"content":" Person secondPredicateSelectedPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"ziyang27"},"content":" IsSamePersonPredicate firstPredicate \u003d new IsSamePersonPredicate(firstPredicateSelectedPerson);","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"ziyang27"},"content":" IsSamePersonPredicate secondPredicate \u003d new IsSamePersonPredicate(secondPredicateSelectedPerson);","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"ziyang27"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"ziyang27"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"ziyang27"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"ziyang27"},"content":" IsSamePersonPredicate firstPredicateCopy \u003d new IsSamePersonPredicate(firstPredicateSelectedPerson);","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"ziyang27"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"ziyang27"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"ziyang27"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"ziyang27"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"ziyang27"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"ziyang27"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"ziyang27"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"ziyang27"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"ziyang27"},"content":" public void test_isSamePerson_returnsTrue() {","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"ziyang27"},"content":" Person selectedPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"ziyang27"},"content":" IsSamePersonPredicate predicate \u003d new IsSamePersonPredicate(selectedPerson);","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"ziyang27"},"content":" assertTrue(predicate.test(selectedPerson));","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"ziyang27"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"ziyang27"},"content":" public void test_nameDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"ziyang27"},"content":" Person selectedPerson \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"ziyang27"},"content":" Person nonSelectedPersonWithSameName \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"ziyang27"},"content":" Person nonSelectedPersonWithDifferentName \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"ziyang27"},"content":" // Different name","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"ziyang27"},"content":" IsSamePersonPredicate predicate \u003d new IsSamePersonPredicate(selectedPerson);","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"ziyang27"},"content":" assertFalse(predicate.test(nonSelectedPersonWithDifferentName));","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"ziyang27"},"content":" // Same name but different Person object","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"ziyang27"},"content":" assertFalse(predicate.test(nonSelectedPersonWithSameName));","lastModifiedDate":"2024-03-14"},{"lineNumber":58,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"ziyang27"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":61,"author":{"gitId":"ziyang27"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-14"},{"lineNumber":62,"author":{"gitId":"ziyang27"},"content":" Person selectedPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2024-03-14"},{"lineNumber":63,"author":{"gitId":"ziyang27"},"content":" IsSamePersonPredicate predicate \u003d new IsSamePersonPredicate(selectedPerson);","lastModifiedDate":"2024-03-14"},{"lineNumber":64,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":65,"author":{"gitId":"ziyang27"},"content":" String expected \u003d IsSamePersonPredicate.class.getCanonicalName() + \"{selected person\u003d\" + selectedPerson + \"}\";","lastModifiedDate":"2024-03-14"},{"lineNumber":66,"author":{"gitId":"ziyang27"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2024-03-14"},{"lineNumber":67,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"ziyang27"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"ziyang27":68}},{"path":"src/test/java/seedu/address/model/person/LastContactTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Colex2000"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"Colex2000"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-23"},{"lineNumber":4,"author":{"gitId":"Colex2000"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"Colex2000"},"content":"import static org.junit.jupiter.api.Assertions.assertNull;","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"Colex2000"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"Colex2000"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"Colex2000"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"Colex2000"},"content":"class LastContactTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"Colex2000"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"Colex2000"},"content":" void constructor_nullDateTime_throwsNullPointerException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"Colex2000"},"content":" assertThrows(NullPointerException.class, () -\u003e new LastContact(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"Colex2000"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"Colex2000"},"content":" void constructor_emptyDateTime_throwsNullPointerException() {","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"Colex2000"},"content":" String validDateTime \u003d \"\";","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"Colex2000"},"content":" LastContact lastContact \u003d new LastContact(validDateTime);","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"Colex2000"},"content":" assertEquals(validDateTime, lastContact.toString());","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"Colex2000"},"content":" assertNull(lastContact.getDateTime());","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"Colex2000"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"Colex2000"},"content":" void constructor_invalidDateTime_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"Colex2000"},"content":" String invalidDateTime \u003d \"32-12-2020 2500\"; // This date and time are invalid","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"Colex2000"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new LastContact(invalidDateTime));","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"Colex2000"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"Colex2000"},"content":" void constructor_validDateTime_createsLastContact() {","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"Colex2000"},"content":" String validDateTime \u003d \"05-03-2024 0600\";","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"Colex2000"},"content":" LastContact lastContact \u003d new LastContact(validDateTime);","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"Colex2000"},"content":" assertEquals(validDateTime, lastContact.toString());","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"Colex2000"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"Colex2000"},"content":" void isValidDateTime() {","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"Colex2000"},"content":" // Invalid date formats","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"Colex2000"},"content":" assertFalse(LastContact.isValidDateTime(\"31-02-2020 2400\")); // Invalid date and time","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"Colex2000"},"content":" assertFalse(LastContact.isValidDateTime(\"05-13-2024 0600\")); // Invalid month","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"Colex2000"},"content":" assertTrue(LastContact.isValidDateTime(\"\")); // Empty string","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"Colex2000"},"content":" // Valid date format","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"Colex2000"},"content":" assertTrue(LastContact.isValidDateTime(\"05-03-2024 0600\")); // Valid date and time","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"Colex2000"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":51,"author":{"gitId":"Colex2000"},"content":" void compareTo() {","lastModifiedDate":"2024-03-23"},{"lineNumber":52,"author":{"gitId":"Colex2000"},"content":" LastContact lastcontact1 \u003d new LastContact(\"05-12-2024 0600\");","lastModifiedDate":"2024-03-23"},{"lineNumber":53,"author":{"gitId":"Colex2000"},"content":" LastContact lastcontact2 \u003d new LastContact(\"05-12-2024 0600\");","lastModifiedDate":"2024-03-23"},{"lineNumber":54,"author":{"gitId":"Colex2000"},"content":" LastContact lastcontact3 \u003d new LastContact(\"05-12-2024 0500\");","lastModifiedDate":"2024-03-23"},{"lineNumber":55,"author":{"gitId":"Colex2000"},"content":" assertEquals(0, lastcontact1.compareTo(lastcontact2));","lastModifiedDate":"2024-03-23"},{"lineNumber":56,"author":{"gitId":"Colex2000"},"content":" assertEquals(1, lastcontact1.compareTo(lastcontact3));","lastModifiedDate":"2024-03-23"},{"lineNumber":57,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":58,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":59,"author":{"gitId":"Colex2000"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"Colex2000"},"content":" void getDateTimeString() {","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"Colex2000"},"content":" String validDateTime \u003d \"05-03-2024 0600\";","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"Colex2000"},"content":" LastContact lastContact \u003d new LastContact(validDateTime);","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"Colex2000"},"content":" assertEquals(validDateTime, lastContact.toString());","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"Colex2000"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"Colex2000"},"content":" void equals() {","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"Colex2000"},"content":" LastContact lastContact1 \u003d new LastContact(\"05-03-2024 0600\");","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"Colex2000"},"content":" LastContact lastContact2 \u003d new LastContact(\"05-03-2024 0600\");","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"Colex2000"},"content":" LastContact lastContact3 \u003d new LastContact(\"06-03-2024 0600\");","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"Colex2000"},"content":" assertFalse(lastContact1.equals(null)); // test null return false","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"Colex2000"},"content":" assertEquals(lastContact1, lastContact2); // Same date and time","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"Colex2000"},"content":" assertFalse(lastContact1.equals(lastContact3)); // Different date and time","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"Colex2000"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"Colex2000"},"content":" void hashCodeTest() {","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"Colex2000"},"content":" LastContact lastContact1 \u003d new LastContact(\"05-03-2024 0600\");","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"Colex2000"},"content":" LastContact lastContact2 \u003d new LastContact(\"05-03-2024 0600\");","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"Colex2000"},"content":" assertEquals(lastContact1.hashCode(), lastContact2.hashCode()); // Same hash code for same date and time","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"Colex2000"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"Colex2000":84}},{"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":"-"},"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":"-"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").withPhone(\"12345\")","lastModifiedDate":"2017-06-12"},{"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":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":86,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"SimHanKiong":1,"-":85}},{"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":"tanyunchao"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-17"},{"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_ADDRESS_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":9,"author":{"gitId":"tanyunchao"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_LAST_CONTACT_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19"},{"lineNumber":13,"author":{"gitId":"tanyunchao"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_UPCOMING_BOB;","lastModifiedDate":"2024-03-17"},{"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":"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":"-"},"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":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTags().remove(0));","lastModifiedDate":"2019-03-23"},{"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":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2020-12-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" .withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18"},{"lineNumber":53,"author":{"gitId":"-"},"content":" editedBob \u003d new PersonBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19"},{"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 phone -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2018-04-19"},{"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 email -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2018-04-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18"},{"lineNumber":94,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"tanyunchao"},"content":" // different upcoming -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"tanyunchao"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withUpcoming(VALID_UPCOMING_BOB).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"tanyunchao"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"tanyunchao"},"content":" // different lastcontact -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"tanyunchao"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withLastContact(VALID_LAST_CONTACT_BOB).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"tanyunchao"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":104,"author":{"gitId":"tanyunchao"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"tanyunchao"},"content":" public void hashCode_samePersonFields_sameHashCode() {","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"tanyunchao"},"content":" // same object -\u003e same hash code","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"tanyunchao"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"tanyunchao"},"content":" assertEquals(ALICE.hashCode(), aliceCopy.hashCode());","lastModifiedDate":"2024-03-17"},{"lineNumber":109,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"tanyunchao"},"content":" // different object, same fields -\u003e same hash code","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"tanyunchao"},"content":" Person otherAliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"tanyunchao"},"content":" assertEquals(ALICE.hashCode(), otherAliceCopy.hashCode());","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"tanyunchao"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"tanyunchao"},"content":" public void hashCode_differentPersonFields_differentHashCode() {","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"tanyunchao"},"content":" // different person -\u003e different hash code","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"tanyunchao"},"content":" assertNotEquals(ALICE.hashCode(), BOB.hashCode());","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"tanyunchao"},"content":" // different name -\u003e different hash code","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"tanyunchao"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(\"Different Name\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"tanyunchao"},"content":" assertNotEquals(ALICE.hashCode(), editedAlice.hashCode());","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"tanyunchao"},"content":" // different phone -\u003e different hash code","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"tanyunchao"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(\"12345678\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"tanyunchao"},"content":" assertNotEquals(ALICE.hashCode(), editedAlice.hashCode());","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"tanyunchao"},"content":" // different email -\u003e different hash code","lastModifiedDate":"2024-03-17"},{"lineNumber":129,"author":{"gitId":"tanyunchao"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(\"different@example.com\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":130,"author":{"gitId":"tanyunchao"},"content":" assertNotEquals(ALICE.hashCode(), editedAlice.hashCode());","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"tanyunchao"},"content":" // different address -\u003e different hash code","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"tanyunchao"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(\"Different Address\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"tanyunchao"},"content":" assertNotEquals(ALICE.hashCode(), editedAlice.hashCode());","lastModifiedDate":"2024-03-17"},{"lineNumber":135,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":136,"author":{"gitId":"tanyunchao"},"content":" // different tags -\u003e different hash code","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"tanyunchao"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(\"differentTag\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":138,"author":{"gitId":"tanyunchao"},"content":" assertNotEquals(ALICE.hashCode(), editedAlice.hashCode());","lastModifiedDate":"2024-03-17"},{"lineNumber":139,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":140,"author":{"gitId":"tanyunchao"},"content":" // different upcoming -\u003e different hash code","lastModifiedDate":"2024-03-17"},{"lineNumber":141,"author":{"gitId":"tanyunchao"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withUpcoming(\"01-01-2024 1200\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"tanyunchao"},"content":" assertNotEquals(ALICE.hashCode(), editedAlice.hashCode());","lastModifiedDate":"2024-03-17"},{"lineNumber":143,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":144,"author":{"gitId":"tanyunchao"},"content":" // different lastcontact -\u003e same hash code (lastcontact not included in hashCode)","lastModifiedDate":"2024-03-17"},{"lineNumber":145,"author":{"gitId":"tanyunchao"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withLastContact(\"01-01-2023 1200\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"tanyunchao"},"content":" assertEquals(ALICE.hashCode(), editedAlice.hashCode());","lastModifiedDate":"2024-03-17"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":149,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2019-02-23"},{"lineNumber":152,"author":{"gitId":"Colex2000"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", address\u003d\" + ALICE.getAddress() + \", tags\u003d\" + ALICE.getTags()","lastModifiedDate":"2024-03-13"},{"lineNumber":153,"author":{"gitId":"tanyunchao"},"content":" + \", upcoming\u003d\" + ALICE.getUpcoming()","lastModifiedDate":"2024-03-17"},{"lineNumber":154,"author":{"gitId":"tanyunchao"},"content":" + \", lastcontact\u003d\" + ALICE.getLastcontact() + \"}\";","lastModifiedDate":"2024-03-17"},{"lineNumber":155,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"Colex2000":1,"tanyunchao":56,"-":100}},{"path":"src/test/java/seedu/address/model/person/UpcomingTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"tanyunchao"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"tanyunchao"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"tanyunchao"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"tanyunchao"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"tanyunchao"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"tanyunchao"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"tanyunchao"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"tanyunchao"},"content":"public class UpcomingTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"tanyunchao"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"tanyunchao"},"content":" public void constructor_validDateTimeString_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"tanyunchao"},"content":" // Valid date and time string","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"tanyunchao"},"content":" Upcoming upcoming \u003d new Upcoming(\"01-01-2022 1200\");","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"tanyunchao"},"content":" assertTrue(Upcoming.isValidUpcoming(\"01-01-2022 1200\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"tanyunchao"},"content":" assertTrue(Upcoming.isValidUpcoming(\"\")); // Empty string is considered valid","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"tanyunchao"},"content":" assertEquals(\"01-01-2022 1200\", upcoming.toString());","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"tanyunchao"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"tanyunchao"},"content":" public void constructor_invalidDateTimeString_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"tanyunchao"},"content":" // Invalid date and time string","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"tanyunchao"},"content":" String invalidDateTime \u003d \"2022-01-01 12:00\"; // Invalid format","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"tanyunchao"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Upcoming(invalidDateTime));","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"tanyunchao"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"tanyunchao"},"content":" public void compareTo_sameDateTime_returnsZero() {","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"tanyunchao"},"content":" Upcoming upcoming1 \u003d new Upcoming(\"01-04-2023 1500\");","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"tanyunchao"},"content":" Upcoming upcoming2 \u003d new Upcoming(\"01-04-2023 1500\");","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"tanyunchao"},"content":" assertEquals(0, upcoming1.compareTo(upcoming2));","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"tanyunchao"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"tanyunchao"},"content":" public void compareTo_laterDateTime_returnsPositive() {","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"tanyunchao"},"content":" Upcoming upcoming1 \u003d new Upcoming(\"01-04-2023 1500\");","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"tanyunchao"},"content":" Upcoming upcoming2 \u003d new Upcoming(\"01-04-2023 1400\");","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"tanyunchao"},"content":" assertTrue(upcoming1.compareTo(upcoming2) \u003e 0);","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"tanyunchao"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"tanyunchao"},"content":" public void compareTo_earlierDateTime_returnsNegative() {","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"tanyunchao"},"content":" Upcoming upcoming1 \u003d new Upcoming(\"01-04-2023 1400\");","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"tanyunchao"},"content":" Upcoming upcoming2 \u003d new Upcoming(\"01-04-2023 1500\");","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"tanyunchao"},"content":" assertTrue(upcoming1.compareTo(upcoming2) \u003c 0);","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"tanyunchao"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"tanyunchao"},"content":" public void compareTo_nullUpcoming_throws() {","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"tanyunchao"},"content":" Upcoming upcoming1 \u003d new Upcoming(\"01-04-2023 1500\");","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"tanyunchao"},"content":" Upcoming upcoming2 \u003d new Upcoming(\"\");","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"tanyunchao"},"content":" // Assuming you want to throw an exception when comparing with a null Upcoming","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"tanyunchao"},"content":" try {","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"tanyunchao"},"content":" upcoming1.compareTo(upcoming2);","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"tanyunchao"},"content":" // Fail the test if no exception is thrown","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"tanyunchao"},"content":" throw new AssertionError(\"Expected NullPointerException\");","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"tanyunchao"},"content":" } catch (NullPointerException e) {","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"tanyunchao"},"content":" // Expected exception, test passed","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"tanyunchao"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"tanyunchao"},"content":" public void compareTo_differentDayMonthYear_returnsCorrectValue() {","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"tanyunchao"},"content":" Upcoming upcoming1 \u003d new Upcoming(\"01-04-2023 1500\");","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"tanyunchao"},"content":" Upcoming upcoming2 \u003d new Upcoming(\"02-05-2024 1600\");","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"tanyunchao"},"content":" assertTrue(upcoming1.compareTo(upcoming2) \u003c 0);","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"tanyunchao"},"content":" assertTrue(upcoming2.compareTo(upcoming1) \u003e 0);","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"tanyunchao"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"tanyunchao"},"content":" public void equals_sameObject_returnsTrue() {","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"tanyunchao"},"content":" Upcoming upcoming \u003d new Upcoming(\"01-01-2022 1200\");","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"tanyunchao"},"content":" assertTrue(upcoming.equals(upcoming));","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"tanyunchao"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"tanyunchao"},"content":" public void equals_nullObject_returnsFalse() {","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"tanyunchao"},"content":" Upcoming upcoming \u003d new Upcoming(\"01-01-2022 1200\");","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"tanyunchao"},"content":" assertFalse(upcoming.equals(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":88,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"tanyunchao"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":90,"author":{"gitId":"tanyunchao"},"content":" public void equals_differentClass_returnsFalse() {","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"tanyunchao"},"content":" Upcoming upcoming \u003d new Upcoming(\"01-01-2022 1200\");","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"tanyunchao"},"content":" assertFalse(upcoming.equals(\"01-01-2022 1200\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"tanyunchao"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"tanyunchao"},"content":" public void equals_sameDateTime_returnsTrue() {","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"tanyunchao"},"content":" Upcoming upcoming1 \u003d new Upcoming(\"01-01-2022 1200\");","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"tanyunchao"},"content":" Upcoming upcoming2 \u003d new Upcoming(\"01-01-2022 1200\");","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"tanyunchao"},"content":" assertTrue(upcoming1.equals(upcoming2));","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"tanyunchao"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"tanyunchao"},"content":" public void equals_differentDateTime_returnsFalse() {","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"tanyunchao"},"content":" Upcoming upcoming1 \u003d new Upcoming(\"01-01-2022 1200\");","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"tanyunchao"},"content":" Upcoming upcoming2 \u003d new Upcoming(\"02-01-2022 1200\");","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"tanyunchao"},"content":" assertFalse(upcoming1.equals(upcoming2));","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":109,"author":{"gitId":"tanyunchao"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"tanyunchao"},"content":" public void equals_differentUpcomingStatus_returnsFalse() {","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"tanyunchao"},"content":" Upcoming upcoming1 \u003d new Upcoming(\"\");","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"tanyunchao"},"content":" Upcoming upcoming2 \u003d new Upcoming(\"01-04-2023 1500\");","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"tanyunchao"},"content":" assertFalse(upcoming1.equals(upcoming2));","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"tanyunchao"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"tanyunchao"},"content":" public void equals_oneUpcomingEmpty_returnsFalse() {","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"tanyunchao"},"content":" Upcoming upcoming1 \u003d new Upcoming(\"\");","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"tanyunchao"},"content":" Upcoming upcoming2 \u003d new Upcoming(\"01-04-2023 1500\");","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"tanyunchao"},"content":" assertFalse(upcoming1.equals(upcoming2));","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"tanyunchao"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"tanyunchao"},"content":" public void equals_bothUpcomingEmpty_returnsTrue() {","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"tanyunchao"},"content":" Upcoming upcoming1 \u003d new Upcoming(\"\");","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"tanyunchao"},"content":" Upcoming upcoming2 \u003d new Upcoming(\"\");","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"tanyunchao"},"content":" assertTrue(upcoming1.equals(upcoming2));","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":129,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":130,"author":{"gitId":"tanyunchao"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"tanyunchao"},"content":" public void hashCode_sameDateTime_returnsSameHashCode() {","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"tanyunchao"},"content":" Upcoming upcoming1 \u003d new Upcoming(\"01-01-2022 1200\");","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"tanyunchao"},"content":" Upcoming upcoming2 \u003d new Upcoming(\"01-01-2022 1200\");","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"tanyunchao"},"content":" assertEquals(upcoming1.hashCode(), upcoming2.hashCode());","lastModifiedDate":"2024-03-17"},{"lineNumber":135,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":136,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"tanyunchao"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":138,"author":{"gitId":"tanyunchao"},"content":" public void hashCode_differentDateTime_returnsDifferentHashCode() {","lastModifiedDate":"2024-03-17"},{"lineNumber":139,"author":{"gitId":"tanyunchao"},"content":" Upcoming upcoming1 \u003d new Upcoming(\"01-01-2022 1200\");","lastModifiedDate":"2024-03-17"},{"lineNumber":140,"author":{"gitId":"tanyunchao"},"content":" Upcoming upcoming2 \u003d new Upcoming(\"02-01-2022 1200\");","lastModifiedDate":"2024-03-17"},{"lineNumber":141,"author":{"gitId":"tanyunchao"},"content":" assertNotEquals(upcoming1.hashCode(), upcoming2.hashCode());","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":143,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":144,"author":{"gitId":"tanyunchao"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":145,"author":{"gitId":"tanyunchao"},"content":" public void toString_hasUpcoming_returnsFormattedDateTime() {","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"tanyunchao"},"content":" Upcoming upcoming \u003d new Upcoming(\"01-01-2022 1200\");","lastModifiedDate":"2024-03-17"},{"lineNumber":147,"author":{"gitId":"tanyunchao"},"content":" String expected \u003d \"01-01-2022 1200\";","lastModifiedDate":"2024-03-17"},{"lineNumber":148,"author":{"gitId":"tanyunchao"},"content":" assertEquals(expected, upcoming.toString());","lastModifiedDate":"2024-03-17"},{"lineNumber":149,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":150,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":151,"author":{"gitId":"tanyunchao"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":152,"author":{"gitId":"tanyunchao"},"content":" public void toString_noUpcoming_returnsEmptyString() {","lastModifiedDate":"2024-03-17"},{"lineNumber":153,"author":{"gitId":"tanyunchao"},"content":" Upcoming upcoming \u003d new Upcoming(\"\");","lastModifiedDate":"2024-03-17"},{"lineNumber":154,"author":{"gitId":"tanyunchao"},"content":" String expected \u003d \"\";","lastModifiedDate":"2024-03-17"},{"lineNumber":155,"author":{"gitId":"tanyunchao"},"content":" assertEquals(expected, upcoming.toString());","lastModifiedDate":"2024-03-17"},{"lineNumber":156,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":157,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":158,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":159,"author":{"gitId":"tanyunchao"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"tanyunchao":159}},{"path":"src/test/java/seedu/address/model/tag/TagsAndFoundPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package seedu.address.model.tag;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"import java.util.List;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.testutil.TagBuilder;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":"public class TagsAndFoundPredicateTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" public void equals() {","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":" List\u003cString\u003e firstTagList \u003d List.of(\"first\");","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" List\u003cString\u003e secondTagList \u003d List.of(\"first\", \"second\");","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" TagsAndFoundPredicate firstPredicate \u003d preparePredicate(firstTagList);","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":" TagsAndFoundPredicate secondPredicate \u003d preparePredicate(secondTagList);","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" TagsAndFoundPredicate firstPredicateCopy \u003d preparePredicate(firstTagList);","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"SimHanKiong"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"SimHanKiong"},"content":" public void test_tagFound_returnsTrue() {","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"SimHanKiong"},"content":" TagsAndFoundPredicate predicate \u003d preparePredicate(List.of(\"car\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"SimHanKiong"},"content":" assertTrue(predicate.test(new PersonBuilder().withTags(\"car\").build()));","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"SimHanKiong"},"content":" predicate \u003d preparePredicate(List.of(\"car\", \"health\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"SimHanKiong"},"content":" assertTrue(predicate.test(new PersonBuilder().withTags(\"car\", \"health\").build()));","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"SimHanKiong"},"content":" predicate \u003d preparePredicate(List.of(\"car\", \"health\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"SimHanKiong"},"content":" assertTrue(predicate.test(new PersonBuilder().withTags(\"car\", \"health\", \"flight\").build()));","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"SimHanKiong"},"content":" predicate \u003d preparePredicate(List.of());","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"SimHanKiong"},"content":" assertTrue(predicate.test(new PersonBuilder().withTags(\"car\").build()));","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"SimHanKiong"},"content":" public void test_tagNotFound_returnsFalse() {","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"SimHanKiong"},"content":" TagsAndFoundPredicate predicate \u003d preparePredicate(List.of(\"motorcycle\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"SimHanKiong"},"content":" assertFalse(predicate.test(new PersonBuilder().withTags(\"car\", \"health\").build()));","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"SimHanKiong"},"content":" predicate \u003d preparePredicate(List.of(\"Car\", \"Health\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"SimHanKiong"},"content":" assertFalse(predicate.test(new PersonBuilder().withTags(\"car\", \"health\").build()));","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"SimHanKiong"},"content":" predicate \u003d preparePredicate(List.of(\"car\", \"health\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"SimHanKiong"},"content":" assertFalse(predicate.test(new PersonBuilder().withTags(\"health\").build()));","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"SimHanKiong"},"content":" predicate \u003d preparePredicate(List.of(\"car\", \"health\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"SimHanKiong"},"content":" assertFalse(predicate.test(new PersonBuilder().withTags(\"car\", \"covid\").build()));","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"SimHanKiong"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"SimHanKiong"},"content":" List\u003cString\u003e tagList \u003d List.of(\"tag1\", \"tag2\");","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"SimHanKiong"},"content":" TagsAndFoundPredicate predicate \u003d preparePredicate(tagList);","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"SimHanKiong"},"content":" String expected \u003d TagsAndFoundPredicate.class.getCanonicalName() + \"{tags\u003d\" + TagBuilder.build(tagList) + \"}\";","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"SimHanKiong"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"SimHanKiong"},"content":" * Parses {@code userInput} into a {@code TagsAndFoundPredicate}.","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"SimHanKiong"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"SimHanKiong"},"content":" private TagsAndFoundPredicate preparePredicate(List\u003cString\u003e tagList) {","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"SimHanKiong"},"content":" return new TagsAndFoundPredicate(TagBuilder.build(tagList));","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"SimHanKiong":78}},{"path":"src/test/java/seedu/address/model/tag/TagsOrFoundPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package seedu.address.model.tag;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"import java.util.List;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.testutil.TagBuilder;","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":"public class TagsOrFoundPredicateTest {","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" public void equals() {","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":" List\u003cString\u003e firstTagList \u003d List.of(\"first\");","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" List\u003cString\u003e secondTagList \u003d List.of(\"first\", \"second\");","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" TagsOrFoundPredicate firstPredicate \u003d preparePredicate(firstTagList);","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":" TagsOrFoundPredicate secondPredicate \u003d preparePredicate(secondTagList);","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" TagsOrFoundPredicate firstPredicateCopy \u003d preparePredicate(firstTagList);","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"SimHanKiong"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"SimHanKiong"},"content":" public void test_tagFound_returnsTrue() {","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"SimHanKiong"},"content":" TagsOrFoundPredicate predicate \u003d preparePredicate(List.of(\"car\"));","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"SimHanKiong"},"content":" assertTrue(predicate.test(new PersonBuilder().withTags(\"car\").build()));","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"SimHanKiong"},"content":" predicate \u003d preparePredicate(List.of(\"car\", \"health\"));","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"SimHanKiong"},"content":" assertTrue(predicate.test(new PersonBuilder().withTags(\"health\").build()));","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"SimHanKiong"},"content":" predicate \u003d preparePredicate(List.of(\"car\", \"health\"));","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"SimHanKiong"},"content":" assertTrue(predicate.test(new PersonBuilder().withTags(\"car\", \"covid\").build()));","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"SimHanKiong"},"content":" predicate \u003d preparePredicate(List.of(\"car\", \"health\"));","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"SimHanKiong"},"content":" assertTrue(predicate.test(new PersonBuilder().withTags(\"car\", \"health\").build()));","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"SimHanKiong"},"content":" public void test_tagNotFound_returnsFalse() {","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"SimHanKiong"},"content":" TagsOrFoundPredicate predicate \u003d preparePredicate(List.of());","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"SimHanKiong"},"content":" assertFalse(predicate.test(new PersonBuilder().withTags(\"car\").build()));","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"SimHanKiong"},"content":" predicate \u003d preparePredicate(List.of(\"motorcycle\"));","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"SimHanKiong"},"content":" assertFalse(predicate.test(new PersonBuilder().withTags(\"car\", \"health\").build()));","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"SimHanKiong"},"content":" predicate \u003d preparePredicate(List.of(\"Car\", \"Health\", \"CAR\", \"HEAlth\"));","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"SimHanKiong"},"content":" assertFalse(predicate.test(new PersonBuilder().withTags(\"car\", \"health\").build()));","lastModifiedDate":"2024-03-14"},{"lineNumber":58,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":61,"author":{"gitId":"SimHanKiong"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-14"},{"lineNumber":62,"author":{"gitId":"SimHanKiong"},"content":" List\u003cString\u003e tagList \u003d List.of(\"tag1\", \"tag2\");","lastModifiedDate":"2024-03-14"},{"lineNumber":63,"author":{"gitId":"SimHanKiong"},"content":" TagsOrFoundPredicate predicate \u003d preparePredicate(tagList);","lastModifiedDate":"2024-03-14"},{"lineNumber":64,"author":{"gitId":"SimHanKiong"},"content":" String expected \u003d TagsOrFoundPredicate.class.getCanonicalName() + \"{tags\u003d\" + TagBuilder.build(tagList) + \"}\";","lastModifiedDate":"2024-03-14"},{"lineNumber":65,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2024-03-14"},{"lineNumber":66,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":67,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"SimHanKiong"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":69,"author":{"gitId":"SimHanKiong"},"content":" * Parses {@code userInput} into a {@code TagsOrFoundPredicate}.","lastModifiedDate":"2024-03-14"},{"lineNumber":70,"author":{"gitId":"SimHanKiong"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":71,"author":{"gitId":"SimHanKiong"},"content":" private TagsOrFoundPredicate preparePredicate(List\u003cString\u003e tagList) {","lastModifiedDate":"2024-03-14"},{"lineNumber":72,"author":{"gitId":"SimHanKiong"},"content":" return new TagsOrFoundPredicate(TagBuilder.build(tagList));","lastModifiedDate":"2024-03-14"},{"lineNumber":73,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":74,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":75,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"SimHanKiong":75}},{"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":"Colex2000"},"content":"import seedu.address.model.person.LastContact;","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"tanyunchao"},"content":"import seedu.address.model.person.Upcoming;","lastModifiedDate":"2024-03-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":"-"},"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":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"tanyunchao"},"content":" private static final String INVALID_UPCOMING \u003d \"12-12-2024\";","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"Colex2000"},"content":" private static final String INVALID_LASTCONTACT \u003d \"05-09-20000 1920\";","lastModifiedDate":"2024-03-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":"Colex2000"},"content":" private static final String VALID_LASTCONTACT \u003d BENSON.getLastcontact().toString();","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"tanyunchao"},"content":" private static final String VALID_UPCOMING \u003d BENSON.getUpcoming().toString();","lastModifiedDate":"2024-03-15"},{"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":"tanyunchao"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"tanyunchao"},"content":" VALID_TAGS, VALID_UPCOMING, VALID_LASTCONTACT);","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-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 toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"Colex2000"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"tanyunchao"},"content":" VALID_TAGS, VALID_UPCOMING, VALID_LASTCONTACT);","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-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 toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"tanyunchao"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-15"},{"lineNumber":66,"author":{"gitId":"tanyunchao"},"content":" VALID_TAGS, VALID_UPCOMING, VALID_LASTCONTACT);","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"Colex2000"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-13"},{"lineNumber":74,"author":{"gitId":"tanyunchao"},"content":" VALID_TAGS, VALID_UPCOMING, VALID_LASTCONTACT);","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","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_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"tanyunchao"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-15"},{"lineNumber":82,"author":{"gitId":"tanyunchao"},"content":" VALID_TAGS, VALID_UPCOMING, VALID_LASTCONTACT);","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.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":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"tanyunchao"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null, VALID_ADDRESS,","lastModifiedDate":"2024-03-17"},{"lineNumber":90,"author":{"gitId":"tanyunchao"},"content":" VALID_TAGS, VALID_UPCOMING, VALID_LASTCONTACT);","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"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_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"tanyunchao"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_ADDRESS,","lastModifiedDate":"2024-03-15"},{"lineNumber":98,"author":{"gitId":"tanyunchao"},"content":" VALID_TAGS, VALID_UPCOMING, VALID_LASTCONTACT);","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"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_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"tanyunchao"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, null, VALID_TAGS,","lastModifiedDate":"2024-03-15"},{"lineNumber":106,"author":{"gitId":"tanyunchao"},"content":" VALID_UPCOMING, VALID_LASTCONTACT);","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"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 toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13"},{"lineNumber":115,"author":{"gitId":"tanyunchao"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-15"},{"lineNumber":116,"author":{"gitId":"tanyunchao"},"content":" invalidTags, VALID_UPCOMING, VALID_LASTCONTACT);","lastModifiedDate":"2024-03-17"},{"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":"tanyunchao"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":121,"author":{"gitId":"tanyunchao"},"content":" public void toModelType_invalidUpcoming_throwsIllegalValueException() {","lastModifiedDate":"2024-03-15"},{"lineNumber":122,"author":{"gitId":"tanyunchao"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-15"},{"lineNumber":123,"author":{"gitId":"tanyunchao"},"content":" VALID_TAGS, INVALID_UPCOMING, VALID_LASTCONTACT);","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"tanyunchao"},"content":" String expectedMessage \u003d Upcoming.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-15"},{"lineNumber":125,"author":{"gitId":"tanyunchao"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"tanyunchao"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":129,"author":{"gitId":"tanyunchao"},"content":" public void toModelType_nullUpcoming_throwsIllegalValueException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":130,"author":{"gitId":"tanyunchao"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"tanyunchao"},"content":" VALID_TAGS, null, VALID_LASTCONTACT);","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"tanyunchao"},"content":" String expectedMessage \u003d String.format(JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"tanyunchao"},"content":" Upcoming.class.getSimpleName());","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"tanyunchao"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-15"},{"lineNumber":135,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":136,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"Colex2000"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":138,"author":{"gitId":"Colex2000"},"content":" public void toModelType_invalidLastContact_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-13"},{"lineNumber":139,"author":{"gitId":"Colex2000"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-13"},{"lineNumber":140,"author":{"gitId":"tanyunchao"},"content":" VALID_TAGS, VALID_UPCOMING, INVALID_LASTCONTACT);","lastModifiedDate":"2024-03-17"},{"lineNumber":141,"author":{"gitId":"Colex2000"},"content":" String expectedMessage \u003d String.format(LastContact.MESSAGE_CONSTRAINTS, INVALID_LASTCONTACT);","lastModifiedDate":"2024-03-13"},{"lineNumber":142,"author":{"gitId":"Colex2000"},"content":" assertThrows(IllegalArgumentException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-13"},{"lineNumber":143,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":144,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":145,"author":{"gitId":"Colex2000"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":146,"author":{"gitId":"Colex2000"},"content":" public void toModelType_nullLastContact_throwsIllegalValueException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":147,"author":{"gitId":"Colex2000"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-16"},{"lineNumber":148,"author":{"gitId":"tanyunchao"},"content":" VALID_TAGS, VALID_UPCOMING, null);","lastModifiedDate":"2024-03-17"},{"lineNumber":149,"author":{"gitId":"Colex2000"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, LastContact.class.getSimpleName());","lastModifiedDate":"2024-03-16"},{"lineNumber":150,"author":{"gitId":"Colex2000"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-16"},{"lineNumber":151,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":152,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":153,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"Colex2000":19,"tanyunchao":38,"-":96}},{"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.Address;","lastModifiedDate":"2017-12-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-12-23"},{"lineNumber":10,"author":{"gitId":"Colex2000"},"content":"import seedu.address.model.person.LastContact;","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-12-23"},{"lineNumber":14,"author":{"gitId":"tanyunchao"},"content":"import seedu.address.model.person.Upcoming;","lastModifiedDate":"2024-03-15"},{"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":"Colex2000"},"content":" this.descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" descriptor.setName(person.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" descriptor.setPhone(person.getPhone());","lastModifiedDate":"2017-06-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" descriptor.setAddress(person.getAddress());","lastModifiedDate":"2017-06-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" descriptor.setTags(person.getTags());","lastModifiedDate":"2017-06-21"},{"lineNumber":42,"author":{"gitId":"tanyunchao"},"content":" descriptor.setUpcoming(person.getUpcoming());","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"Colex2000"},"content":" descriptor.setLastContact(person.getLastcontact());","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":" * Sets the {@code Phone} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2017-12-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Sets the {@code Email} 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 withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":66,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","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 Address} 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 withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" descriptor.setAddress(new Address(address));","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":"Colex2000"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":79,"author":{"gitId":"Colex2000"},"content":" * Sets the {@code LastContact} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-13"},{"lineNumber":80,"author":{"gitId":"Colex2000"},"content":" * @param lastcontact the dateTime string provided.","lastModifiedDate":"2024-03-13"},{"lineNumber":81,"author":{"gitId":"Colex2000"},"content":" * @return the EditPersonDescriptorBuilder object.","lastModifiedDate":"2024-03-13"},{"lineNumber":82,"author":{"gitId":"Colex2000"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":83,"author":{"gitId":"Colex2000"},"content":" public EditPersonDescriptorBuilder withLastContact(String lastcontact) {","lastModifiedDate":"2024-03-13"},{"lineNumber":84,"author":{"gitId":"Colex2000"},"content":" descriptor.setLastContact(new LastContact(lastcontact));","lastModifiedDate":"2024-03-13"},{"lineNumber":85,"author":{"gitId":"Colex2000"},"content":" return this;","lastModifiedDate":"2024-03-13"},{"lineNumber":86,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":87,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":89,"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":90,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15"},{"lineNumber":93,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2017-12-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2017-12-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":98,"author":{"gitId":"tanyunchao"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":99,"author":{"gitId":"tanyunchao"},"content":" * Sets the {@code Upcoming} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-15"},{"lineNumber":100,"author":{"gitId":"tanyunchao"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":101,"author":{"gitId":"tanyunchao"},"content":" public EditPersonDescriptorBuilder withUpcoming(String upcoming) {","lastModifiedDate":"2024-03-15"},{"lineNumber":102,"author":{"gitId":"tanyunchao"},"content":" descriptor.setUpcoming(new Upcoming(upcoming));","lastModifiedDate":"2024-03-15"},{"lineNumber":103,"author":{"gitId":"tanyunchao"},"content":" return this;","lastModifiedDate":"2024-03-15"},{"lineNumber":104,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":105,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05"},{"lineNumber":107,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":109,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"Colex2000":13,"tanyunchao":10,"-":86}},{"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":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18"},{"lineNumber":8,"author":{"gitId":"Colex2000"},"content":"import seedu.address.model.person.LastContact;","lastModifiedDate":"2024-03-13"},{"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":"tanyunchao"},"content":"import seedu.address.model.person.Upcoming;","lastModifiedDate":"2024-03-15"},{"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":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05"},{"lineNumber":25,"author":{"gitId":"tanyunchao"},"content":" public static final String DEFAULT_UPCOMING \u003d \"12-12-2024 1200\";","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"Colex2000"},"content":" public static final String DEFAULT_LASTCONTACT \u003d \"13-03-2024 0600\";","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20"},{"lineNumber":33,"author":{"gitId":"tanyunchao"},"content":" private Upcoming upcoming;","lastModifiedDate":"2024-03-15"},{"lineNumber":34,"author":{"gitId":"Colex2000"},"content":" private LastContact lastContact;","lastModifiedDate":"2024-03-13"},{"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":"tanyunchao"},"content":" upcoming \u003d new Upcoming(DEFAULT_UPCOMING);","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"Colex2000"},"content":" lastContact \u003d new LastContact(DEFAULT_LASTCONTACT);","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20"},{"lineNumber":58,"author":{"gitId":"tanyunchao"},"content":" upcoming \u003d personToCopy.getUpcoming();","lastModifiedDate":"2024-03-15"},{"lineNumber":59,"author":{"gitId":"Colex2000"},"content":" lastContact \u003d personToCopy.getLastcontact();","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":71,"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":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String ... tags) {","lastModifiedDate":"2017-08-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2017-12-20"},{"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":"2017-07-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":82,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of 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 withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","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 Email} 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 withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","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":"tanyunchao"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":103,"author":{"gitId":"tanyunchao"},"content":" * Sets the {@code Upcoming} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-15"},{"lineNumber":104,"author":{"gitId":"tanyunchao"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":105,"author":{"gitId":"tanyunchao"},"content":" public PersonBuilder withUpcoming(String upcoming) {","lastModifiedDate":"2024-03-15"},{"lineNumber":106,"author":{"gitId":"tanyunchao"},"content":" this.upcoming \u003d new Upcoming(upcoming);","lastModifiedDate":"2024-03-15"},{"lineNumber":107,"author":{"gitId":"tanyunchao"},"content":" return this;","lastModifiedDate":"2024-03-15"},{"lineNumber":108,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":109,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":110,"author":{"gitId":"Colex2000"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":111,"author":{"gitId":"Colex2000"},"content":" * Sets the {@code LastContact} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-13"},{"lineNumber":112,"author":{"gitId":"Colex2000"},"content":" * @param lastContact consists of a string of date and time","lastModifiedDate":"2024-03-13"},{"lineNumber":113,"author":{"gitId":"Colex2000"},"content":" * @return the person we are building","lastModifiedDate":"2024-03-13"},{"lineNumber":114,"author":{"gitId":"Colex2000"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":115,"author":{"gitId":"Colex2000"},"content":" public PersonBuilder withLastContact(String lastContact) {","lastModifiedDate":"2024-03-13"},{"lineNumber":116,"author":{"gitId":"Colex2000"},"content":" this.lastContact \u003d new LastContact(lastContact);","lastModifiedDate":"2024-03-13"},{"lineNumber":117,"author":{"gitId":"Colex2000"},"content":" return this;","lastModifiedDate":"2024-03-13"},{"lineNumber":118,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":119,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05"},{"lineNumber":121,"author":{"gitId":"tanyunchao"},"content":" return new Person(name, phone, email, address, tags, upcoming, lastContact);","lastModifiedDate":"2024-03-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":{"Colex2000":15,"tanyunchao":14,"-":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":"Colex2000"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LASTCONTACT;","lastModifiedDate":"2024-03-13"},{"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":"tanyunchao"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_UPCOMING;","lastModifiedDate":"2024-03-15"},{"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":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2018-03-26"},{"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":"-"},"content":" sb.append(PREFIX_PHONE + person.getPhone().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":38,"author":{"gitId":"-"},"content":" sb.append(PREFIX_ADDRESS + person.getAddress().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" person.getTags().stream().forEach(","lastModifiedDate":"2017-05-09"},{"lineNumber":40,"author":{"gitId":"tanyunchao"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \"));","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"tanyunchao"},"content":" sb.append(PREFIX_UPCOMING + person.getUpcoming().toString() + \" \");","lastModifiedDate":"2024-03-15"},{"lineNumber":42,"author":{"gitId":"Colex2000"},"content":" sb.append(PREFIX_LASTCONTACT + person.getLastcontact().toString() + \" \");","lastModifiedDate":"2024-03-19"},{"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":"tanyunchao"},"content":" * Returns the part of command string for the given","lastModifiedDate":"2024-03-15"},{"lineNumber":48,"author":{"gitId":"tanyunchao"},"content":" * {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2024-03-15"},{"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":"tanyunchao"},"content":" sb.append(PREFIX_TAG).append(\" \");","lastModifiedDate":"2024-03-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":"tanyunchao"},"content":" descriptor.getUpcoming()","lastModifiedDate":"2024-03-15"},{"lineNumber":65,"author":{"gitId":"Colex2000"},"content":" .ifPresent(upcoming -\u003e sb.append(PREFIX_UPCOMING).append(upcoming).append(\" \"));","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"Colex2000"},"content":" descriptor.getLastcontact()","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"Colex2000"},"content":" .ifPresent(lastContact -\u003e sb.append(PREFIX_LASTCONTACT)","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"Colex2000"},"content":" .append(lastContact).append(\" \"));","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05"}],"authorContributionMap":{"Colex2000":6,"tanyunchao":7,"-":58}},{"path":"src/test/java/seedu/address/testutil/SampleDataUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Colex2000"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"Colex2000"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"Colex2000"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"Colex2000"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"Colex2000"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"Colex2000"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"Colex2000"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"Colex2000"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"Colex2000"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"Colex2000"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"Colex2000"},"content":"public class SampleDataUtilTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"Colex2000"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"Colex2000"},"content":" public void getSamplePersons_correctlyCreatesSamplePersons() {","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"Colex2000"},"content":" Person[] samplePersons \u003d SampleDataUtil.getSamplePersons();","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"Colex2000"},"content":" assertNotNull(samplePersons);","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"Colex2000"},"content":" assertEquals(6, samplePersons.length); // Assuming there are 6 sample persons","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"Colex2000"},"content":" // Check details of the first sample person","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"Colex2000"},"content":" Person firstPerson \u003d samplePersons[0];","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"Colex2000"},"content":" assertEquals(\"Alex Yeoh\", firstPerson.getName().toString());","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"Colex2000"},"content":" assertEquals(\"87438807\", firstPerson.getPhone().toString());","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"Colex2000"},"content":" assertEquals(\"alexyeoh@example.com\", firstPerson.getEmail().toString());","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"Colex2000"},"content":" assertEquals(\"Blk 30 Geylang Street 29, #06-40\", firstPerson.getAddress().toString());","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"Colex2000"},"content":" assertTrue(firstPerson.getTags().contains(new Tag(\"friends\")));","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"Colex2000"},"content":" assertEquals(SampleDataUtil.DUMMY_LASTCONTACT, firstPerson.getLastcontact());","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"Colex2000"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"Colex2000"},"content":" public void getSampleAddressBook_correctlyPopulatesSampleAddressBook() {","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"Colex2000"},"content":" ReadOnlyAddressBook sampleAb \u003d SampleDataUtil.getSampleAddressBook();","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"Colex2000"},"content":" assertNotNull(sampleAb);","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"Colex2000"},"content":" // The address book should have the same number of persons as the sample data","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"Colex2000"},"content":" assertEquals(6, sampleAb.getPersonList().size());","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"Colex2000"},"content":" // Verify some details of the first person in the address book","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"Colex2000"},"content":" Person firstPersonInAddressBook \u003d sampleAb.getPersonList().get(0);","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"Colex2000"},"content":" assertEquals(\"Alex Yeoh\", firstPersonInAddressBook.getName().toString());","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"Colex2000"},"content":" assertEquals(\"87438807\", firstPersonInAddressBook.getPhone().toString());","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"Colex2000"},"content":" assertEquals(\"alexyeoh@example.com\", firstPersonInAddressBook.getEmail().toString());","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"Colex2000"},"content":" assertEquals(\"Blk 30 Geylang Street 29, #06-40\", firstPersonInAddressBook.getAddress().toString());","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"Colex2000"},"content":" assertTrue(firstPersonInAddressBook.getTags().contains(new Tag(\"friends\")));","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"Colex2000"},"content":" assertEquals(SampleDataUtil.DUMMY_LASTCONTACT, firstPersonInAddressBook.getLastcontact());","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"Colex2000"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"Colex2000"},"content":" public void getTagSet_createsCorrectTagSet() {","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"Colex2000"},"content":" Set\u003cTag\u003e tags \u003d SampleDataUtil.getTagSet(\"friends\", \"colleagues\");","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"Colex2000"},"content":" assertNotNull(tags);","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"Colex2000"},"content":" assertEquals(2, tags.size());","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"Colex2000"},"content":" assertTrue(tags.contains(new Tag(\"friends\")));","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"Colex2000"},"content":" assertTrue(tags.contains(new Tag(\"colleagues\")));","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"Colex2000"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"Colex2000":60}},{"path":"src/test/java/seedu/address/testutil/TagBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import java.util.List;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"/**","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":" * A utility to help build a set of tags","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":"public class TagBuilder {","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":" public static Set\u003cTag\u003e build(List\u003cString\u003e tagList) {","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":" return tagList.stream().map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"SimHanKiong":18}},{"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":"tanyunchao"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_UPCOMING_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"tanyunchao"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_UPCOMING_BOB;","lastModifiedDate":"2024-03-15"},{"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":"-"},"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":"tanyunchao"},"content":" .withTags(\"car\")","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"tanyunchao"},"content":" .withUpcoming(\"01-05-2024 1500\").build();","lastModifiedDate":"2024-03-17"},{"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":"tanyunchao"},"content":" .withTags(\"death\", \"car\")","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"tanyunchao"},"content":" .withUpcoming(\"06-06-2024 1600\").build();","lastModifiedDate":"2024-03-17"},{"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":"tanyunchao"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\").withTags(\"health\")","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"tanyunchao"},"content":" .withUpcoming(\"05-05-2024 1234\").withTags(\"health\").build();","lastModifiedDate":"2024-03-17"},{"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":"SimHanKiong"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\")","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"SimHanKiong"},"content":" .withTags(\"covid\", \"flight\", \"disability\").build();","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\").build();","lastModifiedDate":"2017-04-05"},{"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":"-"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\").build();","lastModifiedDate":"2017-04-05"},{"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":"-"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\").build();","lastModifiedDate":"2017-04-05"},{"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":"-"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\").build();","lastModifiedDate":"2017-04-05"},{"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":"-"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\").build();","lastModifiedDate":"2017-04-05"},{"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":"tanyunchao"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withTags(VALID_TAG_FRIEND)","lastModifiedDate":"2024-03-15"},{"lineNumber":60,"author":{"gitId":"tanyunchao"},"content":" .withUpcoming(VALID_UPCOMING_AMY)","lastModifiedDate":"2024-03-15"},{"lineNumber":61,"author":{"gitId":"tanyunchao"},"content":" .build();","lastModifiedDate":"2024-03-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2018-01-10"},{"lineNumber":63,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2017-09-21"},{"lineNumber":64,"author":{"gitId":"tanyunchao"},"content":" .withUpcoming(VALID_UPCOMING_BOB)","lastModifiedDate":"2024-03-15"},{"lineNumber":65,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2017-09-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21"},{"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":{"SimHanKiong":2,"tanyunchao":12,"-":71}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"ziyang27"},"content":"[![CI Status](https://github.com/se-edu/addressbook-level3/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S2-CS2103T-F13-2/tp/actions)","lastModifiedDate":"2024-02-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"ziyang27"},"content":"# FAPro","lastModifiedDate":"2024-02-29"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-29"},{"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":"ziyang27"},"content":"## What is it? ","lastModifiedDate":"2024-02-29"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"**FAPro** is a desktop application for financial advisors to manage the contacts of their clients. This is especially built for those with more than 50 clients to handle.","lastModifiedDate":"2024-03-04"},{"lineNumber":9,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":10,"author":{"gitId":"ziyang27"},"content":"## What value it brings?","lastModifiedDate":"2024-02-29"},{"lineNumber":11,"author":{"gitId":"ziyang27"},"content":"This application revolutionizes client engagement for financial advisors by facilitating strategic communication and personalized service.","lastModifiedDate":"2024-02-29"},{"lineNumber":12,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":13,"author":{"gitId":"ziyang27"},"content":"* It ensures advisors efficiently prioritize outreach, focusing on clients requiring immediate attention, thereby optimizing client satisfaction and retention.","lastModifiedDate":"2024-02-29"},{"lineNumber":14,"author":{"gitId":"ziyang27"},"content":"* The system offers insights into clients’ financial product portfolios, enabling advisors to tailor advice and recommendations effectively.","lastModifiedDate":"2024-02-29"},{"lineNumber":15,"author":{"gitId":"ziyang27"},"content":"* Additionally, it streamlines scheduling, allowing for seamless planning of future communications.","lastModifiedDate":"2024-02-29"},{"lineNumber":16,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":17,"author":{"gitId":"ziyang27"},"content":"This approach not only elevates the advisor-client relationship but also enhances the advisor\u0027s ability to serve with precision and foresight, setting a new standard in client management excellence.","lastModifiedDate":"2024-02-29"},{"lineNumber":18,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":19,"author":{"gitId":"ziyang27"},"content":"## Where can I find out more?","lastModifiedDate":"2024-02-29"},{"lineNumber":20,"author":{"gitId":"ziyang27"},"content":"Check out our detailed documentation of this project at **[FAPro Product Website](https://ay2324s2-cs2103t-f13-2.github.io/tp/)**.","lastModifiedDate":"2024-02-29"},{"lineNumber":21,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":22,"author":{"gitId":"ziyang27"},"content":"## Acknowledgements","lastModifiedDate":"2024-02-29"},{"lineNumber":23,"author":{"gitId":"ziyang27"},"content":"This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-02-29"}],"authorContributionMap":{"SimHanKiong":1,"ziyang27":18,"-":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":"## Project team","lastModifiedDate":"2020-06-07"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"ziyang27"},"content":"### Sim Han Kiong","lastModifiedDate":"2024-02-29"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":"\u003cimg src\u003d\"images/simhankiong.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"ziyang27"},"content":"[[github](https://github.com/SimHanKiong)]","lastModifiedDate":"2024-02-29"},{"lineNumber":17,"author":{"gitId":"ziyang27"},"content":"[[portfolio](team/simhankiong.md)]","lastModifiedDate":"2024-02-29"},{"lineNumber":18,"author":{"gitId":"ziyang27"},"content":"[[email](e0957654@u.nus.edu)]","lastModifiedDate":"2024-02-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"* Role: Team Lead","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"ziyang27"},"content":"* Responsibilities: Code quality","lastModifiedDate":"2024-02-29"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"ziyang27"},"content":"### Tan Yun Chao","lastModifiedDate":"2024-02-29"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"tanyunchao"},"content":"\u003cimg src\u003d\"images/tanyunchao.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-07"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"ziyang27"},"content":"[[github](http://github.com/tanyunchao)]","lastModifiedDate":"2024-02-29"},{"lineNumber":28,"author":{"gitId":"ziyang27"},"content":"[[portfolio](team/tanyunchao.md)]","lastModifiedDate":"2024-02-29"},{"lineNumber":29,"author":{"gitId":"ziyang27"},"content":"[[email](tanyunchao@u.nus.edu)]","lastModifiedDate":"2024-02-29"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"ziyang27"},"content":"* Role: Developer, Git expert","lastModifiedDate":"2024-02-29"},{"lineNumber":32,"author":{"gitId":"ziyang27"},"content":"* Responsibilities: Integration","lastModifiedDate":"2024-02-29"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"ziyang27"},"content":"### Tiong Chuan Yao","lastModifiedDate":"2024-02-29"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"Colex2000"},"content":"\u003cimg src\u003d\"images/colex2000.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"ziyang27"},"content":"[[github](http://github.com/Colex2000)] ","lastModifiedDate":"2024-02-29"},{"lineNumber":39,"author":{"gitId":"ziyang27"},"content":"[[portfolio](team/tiongchuanyao.md)]","lastModifiedDate":"2024-02-29"},{"lineNumber":40,"author":{"gitId":"ziyang27"},"content":"[[email](tiongchuanyao@u.nus.edu)]","lastModifiedDate":"2024-02-29"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"ziyang27"},"content":"* Responsibilities: Testing + Scheduling and tracking","lastModifiedDate":"2024-02-29"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"ziyang27"},"content":"### Tan Zi Yang","lastModifiedDate":"2024-02-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"ziyang27"},"content":"\u003cimg src\u003d\"images/ziyang27.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-02-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"ziyang27"},"content":"[[github](http://github.com/ziyang27)]","lastModifiedDate":"2024-02-29"},{"lineNumber":50,"author":{"gitId":"ziyang27"},"content":"[[portfolio](team/tanziyang.md)]","lastModifiedDate":"2024-02-29"},{"lineNumber":51,"author":{"gitId":"ziyang27"},"content":"[[email](tan.ziyang@u.nus.edu)]","lastModifiedDate":"2024-02-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"ziyang27"},"content":"* Responsibilities: Documentation + Deliverables and deadlines","lastModifiedDate":"2024-02-29"}],"authorContributionMap":{"SimHanKiong":1,"ziyang27":22,"Colex2000":1,"tanyunchao":1,"-":29}},{"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":"SimHanKiong"},"content":"# FAPro Developer Guide","lastModifiedDate":"2024-03-03"},{"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":"SimHanKiong"},"content":"This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-03-04"},{"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":"-"},"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":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":"-"},"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":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":"-"},"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":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":"-"},"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":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 continues till 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).\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-02-09"},{"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":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12"},{"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":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"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":"2021-07-31"},{"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":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":133,"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":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":135,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"ziyang27"},"content":"Here are the other classes in `Model` (omitted from the class diagram above) that are used for filtering the list which is exposed to outsiders:","lastModifiedDate":"2024-03-19"},{"lineNumber":140,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":141,"author":{"gitId":"ziyang27"},"content":"\u003cpuml src\u003d\"diagrams/PredicateClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":142,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":143,"author":{"gitId":"ziyang27"},"content":"How the filtering works:","lastModifiedDate":"2024-03-19"},{"lineNumber":144,"author":{"gitId":"ziyang27"},"content":"* When filtering is needed, the `XYZCommand` class (`XYZ` is a placeholder for the specific command name e.g., `SelectCommand`) passes a `Predicate` object (e.g., `IsSamePersonCommand`) to the `Model` component.","lastModifiedDate":"2024-03-19"},{"lineNumber":145,"author":{"gitId":"ziyang27"},"content":"* The `Model` component then ensures that the `Predicate` is not null before setting this `Predicate` in the `ObservableList\u003cPerson\u003e`.","lastModifiedDate":"2024-03-19"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"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":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":153,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"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":155,"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":156,"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":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","lastModifiedDate":"2020-05-23"},{"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":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"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":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"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":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"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":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"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":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"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":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"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":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"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":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":198,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"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":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":205,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"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":208,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12"},{"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":"2020-05-23"},{"lineNumber":218,"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":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"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":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":224,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":226,"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":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":230,"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":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"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":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"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":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":247,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","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":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":268,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":269,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":270,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":271,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":272,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":273,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":274,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":278,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":280,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":281,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":282,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":284,"author":{"gitId":"ziyang27"},"content":"* is a financial advisor","lastModifiedDate":"2024-02-29"},{"lineNumber":285,"author":{"gitId":"ziyang27"},"content":"* is currently studying at the same time","lastModifiedDate":"2024-02-29"},{"lineNumber":286,"author":{"gitId":"ziyang27"},"content":"* has a need to manage over 50 clients while juggling with school commitments","lastModifiedDate":"2024-02-29"},{"lineNumber":287,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23"},{"lineNumber":288,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23"},{"lineNumber":289,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26"},{"lineNumber":290,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23"},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":292,"author":{"gitId":"SimHanKiong"},"content":"**Value proposition**: manage contacts faster than a typical mouse/GUI driven app and revolutionizes client engagement ","lastModifiedDate":"2024-03-04"},{"lineNumber":293,"author":{"gitId":"SimHanKiong"},"content":"for financial advisors by facilitating strategic communication and personalized service.","lastModifiedDate":"2024-03-04"},{"lineNumber":294,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":296,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":298,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":299,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":300,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":301,"author":{"gitId":"SimHanKiong"},"content":"|---------|---------------------------------------------|-------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------|","lastModifiedDate":"2024-03-04"},{"lineNumber":302,"author":{"gitId":"-"},"content":"| `* * *` | new user | see usage instructions | refer to instructions when I forget how to use the App |","lastModifiedDate":"2020-05-23"},{"lineNumber":303,"author":{"gitId":"-"},"content":"| `* * *` | user | add a new person | |","lastModifiedDate":"2020-05-23"},{"lineNumber":304,"author":{"gitId":"-"},"content":"| `* * *` | user | delete a person | remove entries that I no longer need |","lastModifiedDate":"2020-05-23"},{"lineNumber":305,"author":{"gitId":"SimHanKiong"},"content":"| `* * *` | user | find a person by name | locate details of people without having to go through the entire list |","lastModifiedDate":"2024-03-03"},{"lineNumber":306,"author":{"gitId":"ziyang27"},"content":"| `* * *` | financial advisor with more than 50 clients | easily identity those that I haven\u0027t reach out to for a long time | contact them and check on their progress as well as well-being |","lastModifiedDate":"2024-02-29"},{"lineNumber":307,"author":{"gitId":"ziyang27"},"content":"| `* * *` | financial advisor with many upcoming meeting | easily view my schedule | plan and prepare the respective information for the respective meetings, serving the client more effectively |","lastModifiedDate":"2024-02-29"},{"lineNumber":308,"author":{"gitId":"SimHanKiong"},"content":"| `* * *` | financial advisor who provides multiple plans for my clients | tag clients based on their existing plans | keep track of which clients hold which policies |","lastModifiedDate":"2024-03-04"},{"lineNumber":309,"author":{"gitId":"SimHanKiong"},"content":"| `* * *` | financial advisor who provides multiple plans for my clients | find clients based on their existing plans | provide personalised service to each type of policy holder |","lastModifiedDate":"2024-03-04"},{"lineNumber":310,"author":{"gitId":"ziyang27"},"content":"| `* * *` | financial advisor with more than 50 clients | view a client\u0027s profile with a few simple commands | have the relevant information at hand when planning and during the consultations |","lastModifiedDate":"2024-02-29"},{"lineNumber":311,"author":{"gitId":"ziyang27"},"content":"| `* * ` | financial advisor with more than 50 clients | set reminders for all the clients\u0027 birthday | build personal connection through timely greetings |","lastModifiedDate":"2024-02-29"},{"lineNumber":312,"author":{"gitId":"SimHanKiong"},"content":"| `*` | user with many people in the address book | sort people by name | locate a person easily |","lastModifiedDate":"2024-03-03"},{"lineNumber":313,"author":{"gitId":"ziyang27"},"content":"| `*` | financial advisor who wants to help my clients reach their goals | keep track of their goals and financial progress | provide a more curated and personalized service |","lastModifiedDate":"2024-02-29"},{"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":"ziyang27"},"content":"(For all use cases below, the **System** is `FAPro` and the **Actor** is the `financial advisor`, unless specified otherwise)","lastModifiedDate":"2024-03-07"},{"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":"SimHanKiong"},"content":"1. User requests to list people","lastModifiedDate":"2024-03-03"},{"lineNumber":326,"author":{"gitId":"SimHanKiong"},"content":"2. AddressBook shows a list of people","lastModifiedDate":"2024-03-03"},{"lineNumber":327,"author":{"gitId":"-"},"content":"3. User requests to delete a specific person in the list","lastModifiedDate":"2020-05-23"},{"lineNumber":328,"author":{"gitId":"-"},"content":"4. AddressBook deletes the person","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":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":332,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":333,"author":{"gitId":"ziyang27"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-02-29"},{"lineNumber":334,"author":{"gitId":"ziyang27"},"content":" Use case ends.","lastModifiedDate":"2024-02-29"},{"lineNumber":335,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":336,"author":{"gitId":"ziyang27"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2024-02-29"},{"lineNumber":337,"author":{"gitId":"ziyang27"},"content":" * 3a1. AddressBook shows an error message.","lastModifiedDate":"2024-02-29"},{"lineNumber":338,"author":{"gitId":"ziyang27"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-02-29"},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":340,"author":{"gitId":"ziyang27"},"content":"**Use case: Adding a client**","lastModifiedDate":"2024-03-07"},{"lineNumber":341,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":342,"author":{"gitId":"ziyang27"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":343,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":344,"author":{"gitId":"ziyang27"},"content":"1. User add a new client by providing the necessary information including the person\u0027s name, phone number, email, address, and optional tags.","lastModifiedDate":"2024-03-07"},{"lineNumber":345,"author":{"gitId":"ziyang27"},"content":"2. FAPro validates the provided information and adds the person to the address book.","lastModifiedDate":"2024-03-07"},{"lineNumber":346,"author":{"gitId":"ziyang27"},"content":"3. FAPro shows the client information in the list.","lastModifiedDate":"2024-03-07"},{"lineNumber":347,"author":{"gitId":"ziyang27"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":348,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":349,"author":{"gitId":"ziyang27"},"content":"**Use case: Edit a client\u0027s info**","lastModifiedDate":"2024-03-07"},{"lineNumber":350,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":351,"author":{"gitId":"ziyang27"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":352,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":353,"author":{"gitId":"ziyang27"},"content":"1. User edits an existing client\u0027s information in FAPro by providing the updated information.","lastModifiedDate":"2024-03-07"},{"lineNumber":354,"author":{"gitId":"ziyang27"},"content":"2. FAPro validates the provided information and edits the information.","lastModifiedDate":"2024-03-07"},{"lineNumber":355,"author":{"gitId":"ziyang27"},"content":"3. FAPro shows the updated client information in the list.","lastModifiedDate":"2024-03-07"},{"lineNumber":356,"author":{"gitId":"ziyang27"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":357,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":358,"author":{"gitId":"ziyang27"},"content":"**Use case: Find a client by name**","lastModifiedDate":"2024-03-07"},{"lineNumber":359,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":360,"author":{"gitId":"ziyang27"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":361,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":362,"author":{"gitId":"ziyang27"},"content":"1. User provides one or more keywords for the seach.","lastModifiedDate":"2024-03-07"},{"lineNumber":363,"author":{"gitId":"ziyang27"},"content":"2. FAPro performs a case-insensitive search for people whose names contain any of the provided keywords.","lastModifiedDate":"2024-03-07"},{"lineNumber":364,"author":{"gitId":"ziyang27"},"content":"3. FAPro returns a list of people matching at least one keyword.","lastModifiedDate":"2024-03-07"},{"lineNumber":365,"author":{"gitId":"ziyang27"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":366,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":367,"author":{"gitId":"ziyang27"},"content":"**Use case: Viewing a client\u0027s profile**","lastModifiedDate":"2024-02-29"},{"lineNumber":368,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":369,"author":{"gitId":"ziyang27"},"content":"**MSS**","lastModifiedDate":"2024-02-29"},{"lineNumber":370,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":371,"author":{"gitId":"SimHanKiong"},"content":"1. User requests to list people","lastModifiedDate":"2024-03-03"},{"lineNumber":372,"author":{"gitId":"SimHanKiong"},"content":"2. FAPro shows a list of people","lastModifiedDate":"2024-03-03"},{"lineNumber":373,"author":{"gitId":"ziyang27"},"content":"3. User requests to view the profile of the client in the list","lastModifiedDate":"2024-02-29"},{"lineNumber":374,"author":{"gitId":"ziyang27"},"content":"4. FAPro shows the detailed profile of the client","lastModifiedDate":"2024-02-29"},{"lineNumber":375,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2024-02-29"},{"lineNumber":376,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":377,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2024-02-29"},{"lineNumber":378,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":379,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2020-05-23"},{"lineNumber":380,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":381,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":382,"author":{"gitId":"-"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2020-05-23"},{"lineNumber":383,"author":{"gitId":"-"},"content":" * 3a1. AddressBook shows an error message.","lastModifiedDate":"2020-05-23"},{"lineNumber":384,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23"},{"lineNumber":385,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":386,"author":{"gitId":"SimHanKiong"},"content":"**Use case: Tagging a client**","lastModifiedDate":"2024-03-04"},{"lineNumber":387,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":388,"author":{"gitId":"SimHanKiong"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":389,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":390,"author":{"gitId":"SimHanKiong"},"content":"1. User requests to list people","lastModifiedDate":"2024-03-04"},{"lineNumber":391,"author":{"gitId":"SimHanKiong"},"content":"2. AddressBook shows a list of people","lastModifiedDate":"2024-03-04"},{"lineNumber":392,"author":{"gitId":"SimHanKiong"},"content":"3. User requests to tag a specific person in the list with a specified tag","lastModifiedDate":"2024-03-04"},{"lineNumber":393,"author":{"gitId":"SimHanKiong"},"content":"4. AddressBook tags the person","lastModifiedDate":"2024-03-04"},{"lineNumber":394,"author":{"gitId":"SimHanKiong"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":395,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":396,"author":{"gitId":"SimHanKiong"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":397,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":398,"author":{"gitId":"SimHanKiong"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-03-04"},{"lineNumber":399,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":400,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":401,"author":{"gitId":"-"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2024-03-04"},{"lineNumber":402,"author":{"gitId":"SimHanKiong"},"content":" * 3a1. AddressBook shows an error message.","lastModifiedDate":"2024-03-04"},{"lineNumber":403,"author":{"gitId":"SimHanKiong"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-04"},{"lineNumber":404,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":405,"author":{"gitId":"SimHanKiong"},"content":"**Use case: Removing tags from a client**","lastModifiedDate":"2024-03-04"},{"lineNumber":406,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":407,"author":{"gitId":"SimHanKiong"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":408,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":409,"author":{"gitId":"SimHanKiong"},"content":"1. User requests to list people","lastModifiedDate":"2024-03-04"},{"lineNumber":410,"author":{"gitId":"SimHanKiong"},"content":"2. AddressBook shows a list of people","lastModifiedDate":"2024-03-04"},{"lineNumber":411,"author":{"gitId":"SimHanKiong"},"content":"3. User requests to remove tags from a specific person in the list","lastModifiedDate":"2024-03-04"},{"lineNumber":412,"author":{"gitId":"SimHanKiong"},"content":"4. AddressBook removes the tags of the person","lastModifiedDate":"2024-03-04"},{"lineNumber":413,"author":{"gitId":"SimHanKiong"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":414,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":415,"author":{"gitId":"SimHanKiong"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":416,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":417,"author":{"gitId":"SimHanKiong"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-03-04"},{"lineNumber":418,"author":{"gitId":"SimHanKiong"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":419,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":420,"author":{"gitId":"SimHanKiong"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2024-03-04"},{"lineNumber":421,"author":{"gitId":"-"},"content":" * 3a1. AddressBook shows an error message.","lastModifiedDate":"2024-03-04"},{"lineNumber":422,"author":{"gitId":"SimHanKiong"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-04"},{"lineNumber":423,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":424,"author":{"gitId":"SimHanKiong"},"content":"**Use case: Finding all clients that contain any of the tags**","lastModifiedDate":"2024-03-04"},{"lineNumber":425,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":426,"author":{"gitId":"SimHanKiong"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":427,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":428,"author":{"gitId":"SimHanKiong"},"content":"1. User requests to find people containing any of the specified tags","lastModifiedDate":"2024-03-04"},{"lineNumber":429,"author":{"gitId":"SimHanKiong"},"content":"2. AddressBook shows a list of people","lastModifiedDate":"2024-03-04"},{"lineNumber":430,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":431,"author":{"gitId":"SimHanKiong"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":432,"author":{"gitId":"SimHanKiong"},"content":"* 1a. One of the tags do not exist.","lastModifiedDate":"2024-03-04"},{"lineNumber":433,"author":{"gitId":"SimHanKiong"},"content":" * 1a1. AddressBook shows an error message.","lastModifiedDate":"2024-03-04"},{"lineNumber":434,"author":{"gitId":"SimHanKiong"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":435,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":436,"author":{"gitId":"SimHanKiong"},"content":"**Use case: Finding all clients that contain all the tags**","lastModifiedDate":"2024-03-04"},{"lineNumber":437,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":438,"author":{"gitId":"SimHanKiong"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":439,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":440,"author":{"gitId":"SimHanKiong"},"content":"1. User requests to find people containing all the specified tags","lastModifiedDate":"2024-03-04"},{"lineNumber":441,"author":{"gitId":"SimHanKiong"},"content":"2. AddressBook shows a list of people","lastModifiedDate":"2024-03-04"},{"lineNumber":442,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":443,"author":{"gitId":"SimHanKiong"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":444,"author":{"gitId":"SimHanKiong"},"content":"* 1a. One of the tags do not exist.","lastModifiedDate":"2024-03-04"},{"lineNumber":445,"author":{"gitId":"SimHanKiong"},"content":" * 1a1. AddressBook shows an error message.","lastModifiedDate":"2024-03-04"},{"lineNumber":446,"author":{"gitId":"SimHanKiong"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":447,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":448,"author":{"gitId":"Colex2000"},"content":"**Use case: Clearing all contacts in FAPro**","lastModifiedDate":"2024-03-06"},{"lineNumber":449,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":450,"author":{"gitId":"Colex2000"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":451,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":452,"author":{"gitId":"Colex2000"},"content":"1. User requests to clear all contacts.","lastModifiedDate":"2024-03-06"},{"lineNumber":453,"author":{"gitId":"Colex2000"},"content":"2. The system clears all contacts.","lastModifiedDate":"2024-03-06"},{"lineNumber":454,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":455,"author":{"gitId":"Colex2000"},"content":"**Use case: Exiting FAPro**","lastModifiedDate":"2024-03-06"},{"lineNumber":456,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":457,"author":{"gitId":"Colex2000"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":458,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":459,"author":{"gitId":"Colex2000"},"content":"1. User enters the exit command.","lastModifiedDate":"2024-03-06"},{"lineNumber":460,"author":{"gitId":"Colex2000"},"content":"2. FAPro closes the window and its system.","lastModifiedDate":"2024-03-06"},{"lineNumber":461,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":462,"author":{"gitId":"Colex2000"},"content":"**Use case: Tagging a client as last contacted**","lastModifiedDate":"2024-03-06"},{"lineNumber":463,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":464,"author":{"gitId":"Colex2000"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":465,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":466,"author":{"gitId":"Colex2000"},"content":"1. User requests to tag a client with date and time.","lastModifiedDate":"2024-03-06"},{"lineNumber":467,"author":{"gitId":"Colex2000"},"content":"2. The system tags the client as \u0027last contacted\u0027 with given date and time.","lastModifiedDate":"2024-03-06"},{"lineNumber":468,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":469,"author":{"gitId":"Colex2000"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":470,"author":{"gitId":"Colex2000"},"content":"* 2a. Client name does not exist.","lastModifiedDate":"2024-03-06"},{"lineNumber":471,"author":{"gitId":"Colex2000"},"content":" * 2a1. The system shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":472,"author":{"gitId":"Colex2000"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-06"},{"lineNumber":473,"author":{"gitId":"Colex2000"},"content":"* 2b. The system found more than 1 matching name.","lastModifiedDate":"2024-03-06"},{"lineNumber":474,"author":{"gitId":"Colex2000"},"content":" * 2b1. The system lists all matching clients\u0027 name with their ID code and other details for identification.","lastModifiedDate":"2024-03-06"},{"lineNumber":475,"author":{"gitId":"Colex2000"},"content":" * 2b2. User enters the ID code shown from the list.","lastModifiedDate":"2024-03-06"},{"lineNumber":476,"author":{"gitId":"Colex2000"},"content":" Steps 2b1-2b2 are repeated until the data entered are valid.","lastModifiedDate":"2024-03-06"},{"lineNumber":477,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-06"},{"lineNumber":478,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":479,"author":{"gitId":"tanyunchao"},"content":"**Use case: Finding all upcoming contacts with appointments**","lastModifiedDate":"2024-03-07"},{"lineNumber":480,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":481,"author":{"gitId":"tanyunchao"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":482,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":483,"author":{"gitId":"ziyang27"},"content":"1. User requests to find people containing an upcoming appointment. ","lastModifiedDate":"2024-03-07"},{"lineNumber":484,"author":{"gitId":"ziyang27"},"content":"2. AddressBook retrieves a list of people who have upcoming appointments. ","lastModifiedDate":"2024-03-07"},{"lineNumber":485,"author":{"gitId":"ziyang27"},"content":"3. AddressBook shows the list of people to the user.","lastModifiedDate":"2024-03-07"},{"lineNumber":486,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":487,"author":{"gitId":"tanyunchao"},"content":"**Extensions**","lastModifiedDate":"2024-03-07"},{"lineNumber":488,"author":{"gitId":"ziyang27"},"content":"* 2a. Client name does not exist.","lastModifiedDate":"2024-03-07"},{"lineNumber":489,"author":{"gitId":"ziyang27"},"content":" * 2a1. The system shows an error message.","lastModifiedDate":"2024-03-07"},{"lineNumber":490,"author":{"gitId":"ziyang27"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-07"},{"lineNumber":491,"author":{"gitId":"ziyang27"},"content":"* 2b. The system found more than 1 matching name.","lastModifiedDate":"2024-03-07"},{"lineNumber":492,"author":{"gitId":"ziyang27"},"content":" * 2b1. The system lists all matching clients\u0027 name with their ID code and other details for identification.","lastModifiedDate":"2024-03-07"},{"lineNumber":493,"author":{"gitId":"ziyang27"},"content":" * 2b2. User enters the ID code shown from the list.","lastModifiedDate":"2024-03-07"},{"lineNumber":494,"author":{"gitId":"ziyang27"},"content":" Steps 2b1-2b2 are repeated until the data entered are valid.","lastModifiedDate":"2024-03-07"},{"lineNumber":495,"author":{"gitId":"ziyang27"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-07"},{"lineNumber":496,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":497,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":498,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":499,"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":500,"author":{"gitId":"SimHanKiong"},"content":"2. Should be able to hold up to 1000 people without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2024-03-03"},{"lineNumber":501,"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":502,"author":{"gitId":"ziyang27"},"content":"4. The data in FAPro should be stored locally and should be in a human editable text file.","lastModifiedDate":"2024-03-07"},{"lineNumber":503,"author":{"gitId":"ziyang27"},"content":"5. Should not use a _DBMS_ to store data.","lastModifiedDate":"2024-03-07"},{"lineNumber":504,"author":{"gitId":"ziyang27"},"content":"6. Should work without requiring an installer.","lastModifiedDate":"2024-03-07"},{"lineNumber":505,"author":{"gitId":"ziyang27"},"content":"7. Should not depend on any _remote server_.","lastModifiedDate":"2024-03-07"},{"lineNumber":506,"author":{"gitId":"ziyang27"},"content":"8. _GUI_ should work well for standard screen resolutions 1920x080 and higher, and, for screen scales 100% and 125%.","lastModifiedDate":"2024-03-07"},{"lineNumber":507,"author":{"gitId":"ziyang27"},"content":"9. The size of the documents should not exceed 15MB/file.","lastModifiedDate":"2024-03-07"},{"lineNumber":508,"author":{"gitId":"ziyang27"},"content":"10. The size of the final FAPro product should not exceed 100MB.","lastModifiedDate":"2024-03-07"},{"lineNumber":509,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":510,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":511,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":512,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":513,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":514,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09"},{"lineNumber":515,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23"},{"lineNumber":516,"author":{"gitId":"ziyang27"},"content":"* **DBMS**: Database Management System, a software suite that facilitates the creation, management, and manipulation of databases.","lastModifiedDate":"2024-03-07"},{"lineNumber":517,"author":{"gitId":"ziyang27"},"content":"* **Remote server**: A computer system or software application that provides services or resources to other computers or clients over a network, typically the internet.","lastModifiedDate":"2024-03-07"},{"lineNumber":518,"author":{"gitId":"ziyang27"},"content":"* **GUI**: Graphic User Interface, a visual interface that allows users to interact with electronic devices or software using graphical icons, menus, and other graphical elements, rather than text-based commands","lastModifiedDate":"2024-03-07"},{"lineNumber":519,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":520,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":521,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":522,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":523,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":524,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":525,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":526,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":527,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":528,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12"},{"lineNumber":529,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":530,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":531,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":532,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":533,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":534,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":535,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":536,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":537,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":538,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":539,"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":540,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":541,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":542,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":543,"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":544,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":545,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":546,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":547,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":548,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":549,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":550,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":551,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":552,"author":{"gitId":"SimHanKiong"},"content":"1. Deleting a person while all people are being shown","lastModifiedDate":"2024-03-03"},{"lineNumber":553,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":554,"author":{"gitId":"SimHanKiong"},"content":" 1. Prerequisites: List all people using the `list` command. Multiple people in the list.","lastModifiedDate":"2024-03-03"},{"lineNumber":555,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":556,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":557,"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":558,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":559,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":560,"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":561,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":562,"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":563,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":564,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":565,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":566,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":567,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":568,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":569,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":570,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":571,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":572,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":573,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"SimHanKiong":70,"ziyang27":76,"Colex2000":29,"tanyunchao":6,"-":392}},{"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":"ziyang27"},"content":"# FAPro User Guide","lastModifiedDate":"2024-02-29"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"ziyang27"},"content":"FAPro is a **desktop app for managing clients\u0027 contacts, optimized for use via a Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI). ","lastModifiedDate":"2024-02-29"},{"lineNumber":10,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":11,"author":{"gitId":"ziyang27"},"content":"If you ","lastModifiedDate":"2024-02-29"},{"lineNumber":12,"author":{"gitId":"ziyang27"},"content":"* are a financial advisor,","lastModifiedDate":"2024-02-29"},{"lineNumber":13,"author":{"gitId":"ziyang27"},"content":"* can type fast, ","lastModifiedDate":"2024-02-29"},{"lineNumber":14,"author":{"gitId":"ziyang27"},"content":"* have more than 50 clients, ","lastModifiedDate":"2024-02-29"},{"lineNumber":15,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":16,"author":{"gitId":"ziyang27"},"content":"FAPro can get your client management tasks done faster than traditional GUI apps.","lastModifiedDate":"2024-02-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12"},{"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":"## Quick start","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"1. Ensure you have Java `11` or above installed in your Computer.","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"ziyang27"},"content":"1. Download the latest `fapro.jar` from [here](https://github.com/AY2324S2-CS2103T-F13-2/tp/releases).","lastModifiedDate":"2024-02-29"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"ziyang27"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your FAPro.","lastModifiedDate":"2024-02-29"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"ziyang27"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar fapro.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2024-02-29"},{"lineNumber":32,"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":33,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"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":36,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"SimHanKiong"},"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 FAPro.","lastModifiedDate":"2024-03-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2023-01-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","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":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"**Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"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":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"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":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"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":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"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":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"Colex2000"},"content":"* `DATETIME` format must be in `DD-MM-YYYY HHmm` format.","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"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":72,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":74,"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":75,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"Format: `help`","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":"### Adding a person: `add`","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"SimHanKiong"},"content":"Adds a person to FAPro.","lastModifiedDate":"2024-03-03"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"Colex2000"},"content":"Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​ [lc/DATETIME]`","lastModifiedDate":"2024-03-16"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":94,"author":{"gitId":"-"},"content":"**Tip:** A person can have any number of tags (including 0)","lastModifiedDate":"2023-09-12"},{"lineNumber":95,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"Colex2000"},"content":"**Note:** t/ and lc/ : tag and lastcontact field is optional. ","lastModifiedDate":"2024-03-16"},{"lineNumber":98,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":99,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":100,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"Colex2000"},"content":"* `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01 lc/16-03-2024 0800`","lastModifiedDate":"2024-03-16"},{"lineNumber":102,"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":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"SimHanKiong"},"content":"### Listing all people : `list`","lastModifiedDate":"2024-03-04"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"SimHanKiong"},"content":"Shows a list of all people in FAPro.","lastModifiedDate":"2024-03-03"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":"### Editing a person : `edit`","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"SimHanKiong"},"content":"Edits an existing person in FAPro.","lastModifiedDate":"2024-03-03"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"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":117,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"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":120,"author":{"gitId":"-"},"content":"* You can remove all the person’s tags by typing `t/` without","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":" specifying any tags after it.","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":"-"},"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":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":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"SimHanKiong"},"content":"### Locating people by name: `find`","lastModifiedDate":"2024-03-04"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"SimHanKiong"},"content":"Finds people whose names contain any of the given keywords.","lastModifiedDate":"2024-03-04"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"* `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"SimHanKiong"},"content":"### Locating people by tag : `tagfind`","lastModifiedDate":"2024-03-04"},{"lineNumber":146,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":147,"author":{"gitId":"SimHanKiong"},"content":"Finds people who are associated with the specified tag.","lastModifiedDate":"2024-03-04"},{"lineNumber":148,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":149,"author":{"gitId":"SimHanKiong"},"content":"Format: `tagfind TAG`","lastModifiedDate":"2024-03-04"},{"lineNumber":150,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":151,"author":{"gitId":"SimHanKiong"},"content":"* The search is case-insensitive. e.g. `CaR` will match `car`.","lastModifiedDate":"2024-03-04"},{"lineNumber":152,"author":{"gitId":"SimHanKiong"},"content":"* As long as the person has 1 tag that matches, the person will be listed.","lastModifiedDate":"2024-03-04"},{"lineNumber":153,"author":{"gitId":"SimHanKiong"},"content":"* Only full words will be matched e.g. `cars` will not match `car`.","lastModifiedDate":"2024-03-04"},{"lineNumber":154,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":155,"author":{"gitId":"SimHanKiong"},"content":"Examples:","lastModifiedDate":"2024-03-04"},{"lineNumber":156,"author":{"gitId":"SimHanKiong"},"content":"* `tagfind car` returns all people with a `car` tag.","lastModifiedDate":"2024-03-04"},{"lineNumber":157,"author":{"gitId":"SimHanKiong"},"content":"* `tagfind HOUSING` returns all people with a `housing` tag.","lastModifiedDate":"2024-03-04"},{"lineNumber":158,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":159,"author":{"gitId":"-"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"SimHanKiong"},"content":"Deletes the specified person from FAPro.","lastModifiedDate":"2024-03-03"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"* Deletes the person at the specified `INDEX`.","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"SimHanKiong"},"content":"* `list` followed by `delete 2` deletes the 2nd person in FAPro.","lastModifiedDate":"2024-03-03"},{"lineNumber":171,"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":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"SimHanKiong"},"content":"### Viewing the detailed profile a person : `select`","lastModifiedDate":"2024-03-04"},{"lineNumber":174,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":175,"author":{"gitId":"SimHanKiong"},"content":"View a more detailed profile of the specified person from FAPro.","lastModifiedDate":"2024-03-03"},{"lineNumber":176,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":177,"author":{"gitId":"ziyang27"},"content":"Format: `select INDEX`","lastModifiedDate":"2024-02-29"},{"lineNumber":178,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":179,"author":{"gitId":"ziyang27"},"content":"* Displays the profile of the client at the specified `INDEX`.","lastModifiedDate":"2024-02-29"},{"lineNumber":180,"author":{"gitId":"ziyang27"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2024-02-29"},{"lineNumber":181,"author":{"gitId":"ziyang27"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-02-29"},{"lineNumber":182,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":183,"author":{"gitId":"ziyang27"},"content":"Examples:","lastModifiedDate":"2024-02-29"},{"lineNumber":184,"author":{"gitId":"SimHanKiong"},"content":"* `list` followed by `select 2` shows the detailed profile of the 2nd person in FAPro.","lastModifiedDate":"2024-03-03"},{"lineNumber":185,"author":{"gitId":"ziyang27"},"content":"* `find Betsy` followed by `select 1` shows the detailed profile of the 1st person in the results of the `find` command.","lastModifiedDate":"2024-02-29"},{"lineNumber":186,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":187,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":188,"author":{"gitId":"tanyunchao"},"content":"### View contacts of all upcoming appointments: `upcoming`","lastModifiedDate":"2024-03-07"},{"lineNumber":189,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":190,"author":{"gitId":"ziyang27"},"content":"View all the contacts of all upcoming appointments ordered by date (earliest to latest).","lastModifiedDate":"2024-03-07"},{"lineNumber":191,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":192,"author":{"gitId":"tanyunchao"},"content":"Format: `upcoming`","lastModifiedDate":"2024-03-07"},{"lineNumber":193,"author":{"gitId":"tanyunchao"},"content":" ","lastModifiedDate":"2024-03-07"},{"lineNumber":194,"author":{"gitId":"ziyang27"},"content":"- `upcoming` displays all upcoming appointments.","lastModifiedDate":"2024-03-07"},{"lineNumber":195,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":196,"author":{"gitId":"tanyunchao"},"content":"Examples:","lastModifiedDate":"2024-03-07"},{"lineNumber":197,"author":{"gitId":"ziyang27"},"content":"- `upcoming` would show the 3 contacts if there are 3 contacts with upcoming appointments.","lastModifiedDate":"2024-03-07"},{"lineNumber":198,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":199,"author":{"gitId":"Colex2000"},"content":"### Tag a client\u0027s profile as last contacted : `lastcontact`","lastModifiedDate":"2024-03-06"},{"lineNumber":200,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":201,"author":{"gitId":"Colex2000"},"content":"Adds a client to the recently contacted list in FAPro.","lastModifiedDate":"2024-03-06"},{"lineNumber":202,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":203,"author":{"gitId":"Colex2000"},"content":"Format: `lastcontact n/NAME lc/DATETIME`","lastModifiedDate":"2024-03-12"},{"lineNumber":204,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":205,"author":{"gitId":"Colex2000"},"content":"* The input is case-insensitive. e.g. `JoHn Doe` will match `john doe`.","lastModifiedDate":"2024-03-06"},{"lineNumber":206,"author":{"gitId":"Colex2000"},"content":"* In case of duplicate names, all matching names will be listed with their ID code and other details.","lastModifiedDate":"2024-03-06"},{"lineNumber":207,"author":{"gitId":"Colex2000"},"content":"* User will need to add the respective ID code to existing input in case of duplicate.","lastModifiedDate":"2024-03-06"},{"lineNumber":208,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":209,"author":{"gitId":"Colex2000"},"content":"Example:","lastModifiedDate":"2024-03-06"},{"lineNumber":210,"author":{"gitId":"Colex2000"},"content":"* `lastcontact n/John doe lc/05-09-2024 1955` tags the client with name `john doe` and assigns the date `05 Sep 2024 7:55pm` as last contacted.","lastModifiedDate":"2024-03-12"},{"lineNumber":211,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":212,"author":{"gitId":"Colex2000"},"content":"Example (For duplicate names):","lastModifiedDate":"2024-03-06"},{"lineNumber":213,"author":{"gitId":"Colex2000"},"content":"* `lastcontact n/John doe#0005 lc/05-09-2024 1955` tags the client with name `john doe#0005` and assigns the date `05 Sep 2024 7:55pm` as last contacted.","lastModifiedDate":"2024-03-12"},{"lineNumber":214,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":215,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":216,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"SimHanKiong"},"content":"Clears all entries from FAPro.","lastModifiedDate":"2024-03-03"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":226,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"ziyang27"},"content":"FAPro data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.","lastModifiedDate":"2024-02-29"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":234,"author":{"gitId":"ziyang27"},"content":"FAPro 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":"2024-02-29"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":236,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":238,"author":{"gitId":"-"},"content":"**Caution:**","lastModifiedDate":"2023-09-12"},{"lineNumber":239,"author":{"gitId":"ziyang27"},"content":"If your changes to the data file makes its format invalid, FAPro 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.\u003cbr\u003e","lastModifiedDate":"2024-02-29"},{"lineNumber":240,"author":{"gitId":"SimHanKiong"},"content":"Furthermore, certain edits can cause FAPro to behave in unexpected ways (e.g., if a value entered is outside the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.","lastModifiedDate":"2024-03-03"},{"lineNumber":241,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":243,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"ziyang27"},"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 FAPro home folder.","lastModifiedDate":"2024-02-29"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":254,"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":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":256,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":258,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"ziyang27"},"content":"-----------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-03-07"},{"lineNumber":262,"author":{"gitId":"SimHanKiong"},"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":"2024-03-04"},{"lineNumber":263,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":264,"author":{"gitId":"SimHanKiong"},"content":"**Delete** | `delete INDEX`\u003cbr\u003e e.g. `delete 3`","lastModifiedDate":"2024-03-04"},{"lineNumber":265,"author":{"gitId":"SimHanKiong"},"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":"2024-03-04"},{"lineNumber":266,"author":{"gitId":"SimHanKiong"},"content":"**Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g. `find James Jake`","lastModifiedDate":"2024-03-04"},{"lineNumber":267,"author":{"gitId":"SimHanKiong"},"content":"**TagFind**| `tagfind TAG` \u003cbr\u003e e.g. `tagfind car`","lastModifiedDate":"2024-03-04"},{"lineNumber":268,"author":{"gitId":"ziyang27"},"content":"**Lastcontact**| `lastcontact NAME [d/DATE] [tm/TIME]` \u003cbr\u003e e.g. `lastcontact John doe d/05-09-2024 tm/1955`","lastModifiedDate":"2024-03-07"},{"lineNumber":269,"author":{"gitId":"tanyunchao"},"content":"**Upcoming**| `upcoming`","lastModifiedDate":"2024-03-07"},{"lineNumber":270,"author":{"gitId":"-"},"content":"**List** | `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"SimHanKiong"},"content":"**Select** | `select INDEX`\u003cbr\u003e e.g. `select 1`","lastModifiedDate":"2024-03-04"},{"lineNumber":272,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"SimHanKiong":34,"ziyang27":32,"Colex2000":22,"tanyunchao":11,"-":173}},{"path":"docs/_markbind/layouts/default.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003chead-bottom\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003clink rel\u003d\"stylesheet\" href\u003d\"{{baseUrl}}/stylesheets/main.css\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c/head-bottom\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003cheader sticky\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cnavbar type\u003d\"dark\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"ziyang27"},"content":" \u003ca slot\u003d\"brand\" href\u003d\"{{baseUrl}}/index.html\" title\u003d\"Home\" class\u003d\"navbar-brand\"\u003eFAPro\u003c/a\u003e","lastModifiedDate":"2024-02-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/index.html\" class\u003d\"nav-link\"\u003eHome\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/UserGuide.html\" class\u003d\"nav-link\"\u003eUser Guide\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/DeveloperGuide.html\" class\u003d\"nav-link\"\u003eDeveloper Guide\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/AboutUs.html\" class\u003d\"nav-link\"\u003eAbout Us\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"https://github.com/se-edu/addressbook-level3\" target\u003d\"_blank\" class\u003d\"nav-link\"\u003e\u003cmd\u003e:fab-github:\u003c/md\u003e\u003c/a\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cli slot\u003d\"right\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cform class\u003d\"navbar-form\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003csearchbar :data\u003d\"searchData\" placeholder\u003d\"Search\" :on-hit\u003d\"searchCallback\" menu-align-right\u003e\u003c/searchbar\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/form\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/navbar\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"\u003c/header\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"flex-body\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"site-nav\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"site-nav-top\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"fw-bold mb-2\" style\u003d\"font-size: 1.25rem;\"\u003eSite Map\u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003csite-nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"* [Home]({{ baseUrl }}/index.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"* [User Guide]({{ baseUrl }}/UserGuide.html) :expanded:","lastModifiedDate":"2023-09-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * [Quick Start]({{ baseUrl }}/UserGuide.html#quick-start)","lastModifiedDate":"2023-09-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * [Features]({{ baseUrl }}/UserGuide.html#features)","lastModifiedDate":"2023-09-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * [FAQ]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * [Command Summary]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":"* [Developer Guide]({{ baseUrl }}/DeveloperGuide.html) :expanded:","lastModifiedDate":"2023-09-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * [Acknowledgements]({{ baseUrl }}/DeveloperGuide.html#acknowledgements)","lastModifiedDate":"2023-09-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * [Setting Up]({{ baseUrl }}/DeveloperGuide.html#setting-up-getting-started)","lastModifiedDate":"2023-09-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * [Design]({{ baseUrl }}/DeveloperGuide.html#design)","lastModifiedDate":"2023-09-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * [Implementation]({{ baseUrl }}/DeveloperGuide.html#implementation)","lastModifiedDate":"2023-09-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * [Documentation, logging, testing, configuration, dev-ops]({{ baseUrl }}/DeveloperGuide.html#documentation-logging-testing-configuration-dev-ops)","lastModifiedDate":"2023-09-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * [Appendix: Requirements]({{ baseUrl }}/DeveloperGuide.html#appendix-requirements)","lastModifiedDate":"2023-09-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * [Appendix: Instructions for manual testing]({{ baseUrl }}/DeveloperGuide.html#appendix-instructions-for-manual-testing)","lastModifiedDate":"2023-09-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":"* Tutorials","lastModifiedDate":"2023-09-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * [Tracing code]({{ baseUrl }}/tutorials/TracingCode.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * [Adding a command]({{ baseUrl }}/tutorials/AddRemark.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * [Removing Fields]({{ baseUrl }}/tutorials/RemovingFields.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [About Us]({{ baseUrl }}/AboutUs.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/site-nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cdiv id\u003d\"content-wrapper\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" {{ content }}","lastModifiedDate":"2023-09-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"page-nav\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cpage-nav /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003cscroll-top-button\u003e\u003c/scroll-top-button\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":"\u003cfooter\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003c!-- Support MarkBind by including a link to us on your landing page! --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"text-center\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u003csmall\u003e[\u003cmd\u003e**Powered by**\u003c/md\u003e \u003cimg src\u003d\"https://markbind.org/favicon.ico\" width\u003d\"30\"\u003e {{MarkBind}}, generated on {{timestamp}}]\u003c/small\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003c/footer\u003e","lastModifiedDate":"2023-09-12"}],"authorContributionMap":{"ziyang27":1,"-":66}},{"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":"-"},"content":"Class UniquePersonList","lastModifiedDate":"2021-07-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Class Person","lastModifiedDate":"2019-07-03"},{"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":"-"},"content":"Class Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"Class Tag","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"tanyunchao"},"content":"Class Upcoming","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"Colex2000"},"content":"Class LastContact","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":26,"author":{"gitId":"-"},"content":"Class I #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"AddressBook .up.|\u003e ReadOnlyAddressBook","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"ModelManager .up.|\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"Model .right.\u003e ReadOnlyUserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"Model .left.\u003e ReadOnlyAddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"ModelManager -left-\u003e \"1\" AddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"ModelManager -right-\u003e \"1\" UserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":39,"author":{"gitId":"-"},"content":"UserPrefs .up.|\u003e ReadOnlyUserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"AddressBook *--\u003e \"1\" UniquePersonList","lastModifiedDate":"2019-07-30"},{"lineNumber":42,"author":{"gitId":"-"},"content":"UniquePersonList --\u003e \"~* all\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":43,"author":{"gitId":"-"},"content":"Person *--\u003e Name","lastModifiedDate":"2019-07-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"Person *--\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"Person *--\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"Person *--\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":47,"author":{"gitId":"-"},"content":"Person *--\u003e \"*\" Tag","lastModifiedDate":"2019-07-03"},{"lineNumber":48,"author":{"gitId":"tanyunchao"},"content":"Person *--\u003e Upcoming","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"Colex2000"},"content":"Person *--\u003e LastContact","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"Person -[hidden]up--\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"UniquePersonList -[hidden]right-\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":"Name -[hidden]right-\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":55,"author":{"gitId":"-"},"content":"Phone -[hidden]right-\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":"Address -[hidden]right-\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":57,"author":{"gitId":"tanyunchao"},"content":"Email -[hidden]right-\u003e Tag","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"tanyunchao"},"content":"Tag -[hidden]right-\u003e Upcoming","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"SimHanKiong"},"content":"Upcoming -[hidden]right-\u003e LastContact","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":61,"author":{"gitId":"-"},"content":"ModelManager --\u003e \"~* filtered\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":62,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"SimHanKiong":1,"Colex2000":2,"tanyunchao":4,"-":55}},{"path":"docs/diagrams/PredicateClasses.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"ziyang27"},"content":"@startuml","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"ziyang27"},"content":"!include style.puml","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"ziyang27"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"ziyang27"},"content":"skinparam arrowColor MODEL_COLOR_T4","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"ziyang27"},"content":"skinparam classBackgroundColor MODEL_COLOR","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"ziyang27"},"content":"package \"Predicate classes\" {","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"ziyang27"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nPredicate\" as Predicate","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"ziyang27"},"content":"Class \"IsSamePersonPredicate\"","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"ziyang27"},"content":"Class \"NameContainsKeywordsPredicate\"","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":"Class \"TagsOrFoundPredicate\"","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":"Class \"TagsAndFoundPredicate\"","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"Colex2000"},"content":"Class \"IsLastContactedPredicate\"","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"ziyang27"},"content":"}","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"ziyang27"},"content":"Class \"SelectCommand\"","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"ziyang27"},"content":"Class \"FindCommand\"","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":"Class \"FindTagsOrCommand\"","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":"Class \"FindTagsAndCommand\"","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"Colex2000"},"content":"Class \"LastContactCommand\"","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"ziyang27"},"content":"SelectCommand ..\u003e IsSamePersonPredicate : \u003c\u003ccreate\u003e\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"ziyang27"},"content":"FindCommand --\u003e NameContainsKeywordsPredicate","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"ziyang27"},"content":"IsSamePersonPredicate .up.|\u003e Predicate","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"ziyang27"},"content":"NameContainsKeywordsPredicate .up.|\u003e Predicate","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":"FindTagsOrCommand --\u003e TagsOrFoundPredicate","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":"FindTagsAndCommand --\u003e TagsAndFoundPredicate","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"Colex2000"},"content":"LastContactCommand --\u003e IsLastContactedPredicate","lastModifiedDate":"2024-03-23"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":"TagsOrFoundPredicate ..|\u003e Predicate","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"SimHanKiong"},"content":"TagsAndFoundPredicate ..|\u003e Predicate","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"Colex2000"},"content":"IsLastContactedPredicate ..|\u003e Predicate","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"ziyang27"},"content":"@enduml","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"SimHanKiong":8,"ziyang27":20,"Colex2000":4}},{"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":"ziyang27"},"content":"# FAPro","lastModifiedDate":"2024-03-07"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"ziyang27"},"content":"[![CI Status](https://github.com/se-edu/addressbook-level3/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S2-CS2103T-F13-2/tp/actions)","lastModifiedDate":"2024-03-07"},{"lineNumber":9,"author":{"gitId":"ziyang27"},"content":"[![codecov](https://codecov.io/gh/se-edu/addressbook-level3/branch/master/graph/badge.svg)](https://codecov.io/gh/AY2324S2-CS2103T-F13-2)","lastModifiedDate":"2024-03-07"},{"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":"-"},"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":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"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":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"* If you are interested about developing AddressBook, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.","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":"**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":{"ziyang27":3,"-":18}},{"path":"docs/team/simhankiong.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"ziyang27"},"content":"---","lastModifiedDate":"2024-02-29"},{"lineNumber":2,"author":{"gitId":"ziyang27"},"content":" layout: default.md","lastModifiedDate":"2024-02-29"},{"lineNumber":3,"author":{"gitId":"ziyang27"},"content":" title: \"John Doe\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-02-29"},{"lineNumber":4,"author":{"gitId":"ziyang27"},"content":"---","lastModifiedDate":"2024-02-29"},{"lineNumber":5,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":6,"author":{"gitId":"ziyang27"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-02-29"},{"lineNumber":7,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":8,"author":{"gitId":"ziyang27"},"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":"2024-02-29"},{"lineNumber":9,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":10,"author":{"gitId":"ziyang27"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-02-29"},{"lineNumber":11,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":12,"author":{"gitId":"ziyang27"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-02-29"},{"lineNumber":13,"author":{"gitId":"ziyang27"},"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":"2024-02-29"},{"lineNumber":14,"author":{"gitId":"ziyang27"},"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":"2024-02-29"},{"lineNumber":15,"author":{"gitId":"ziyang27"},"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":"2024-02-29"},{"lineNumber":16,"author":{"gitId":"ziyang27"},"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":"2024-02-29"},{"lineNumber":17,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":18,"author":{"gitId":"ziyang27"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-02-29"},{"lineNumber":19,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":20,"author":{"gitId":"ziyang27"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-02-29"},{"lineNumber":21,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":22,"author":{"gitId":"ziyang27"},"content":"* **Project management**:","lastModifiedDate":"2024-02-29"},{"lineNumber":23,"author":{"gitId":"ziyang27"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-02-29"},{"lineNumber":24,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":25,"author":{"gitId":"ziyang27"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-02-29"},{"lineNumber":26,"author":{"gitId":"ziyang27"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-02-29"},{"lineNumber":27,"author":{"gitId":"ziyang27"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-02-29"},{"lineNumber":28,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":29,"author":{"gitId":"ziyang27"},"content":"* **Documentation**:","lastModifiedDate":"2024-02-29"},{"lineNumber":30,"author":{"gitId":"ziyang27"},"content":" * User Guide:","lastModifiedDate":"2024-02-29"},{"lineNumber":31,"author":{"gitId":"ziyang27"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-02-29"},{"lineNumber":32,"author":{"gitId":"ziyang27"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-02-29"},{"lineNumber":33,"author":{"gitId":"ziyang27"},"content":" * Developer Guide:","lastModifiedDate":"2024-02-29"},{"lineNumber":34,"author":{"gitId":"ziyang27"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-02-29"},{"lineNumber":35,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":36,"author":{"gitId":"ziyang27"},"content":"* **Community**:","lastModifiedDate":"2024-02-29"},{"lineNumber":37,"author":{"gitId":"ziyang27"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-02-29"},{"lineNumber":38,"author":{"gitId":"ziyang27"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-02-29"},{"lineNumber":39,"author":{"gitId":"ziyang27"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-02-29"},{"lineNumber":40,"author":{"gitId":"ziyang27"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-02-29"},{"lineNumber":41,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":42,"author":{"gitId":"ziyang27"},"content":"* **Tools**:","lastModifiedDate":"2024-02-29"},{"lineNumber":43,"author":{"gitId":"ziyang27"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-02-29"},{"lineNumber":44,"author":{"gitId":"ziyang27"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-02-29"},{"lineNumber":45,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":46,"author":{"gitId":"ziyang27"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-02-29"}],"authorContributionMap":{"ziyang27":46}},{"path":"docs/team/tanyunchao.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"ziyang27"},"content":"---","lastModifiedDate":"2024-02-29"},{"lineNumber":2,"author":{"gitId":"ziyang27"},"content":" layout: default.md","lastModifiedDate":"2024-02-29"},{"lineNumber":3,"author":{"gitId":"ziyang27"},"content":" title: \"John Doe\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-02-29"},{"lineNumber":4,"author":{"gitId":"ziyang27"},"content":"---","lastModifiedDate":"2024-02-29"},{"lineNumber":5,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":6,"author":{"gitId":"ziyang27"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-02-29"},{"lineNumber":7,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":8,"author":{"gitId":"ziyang27"},"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":"2024-02-29"},{"lineNumber":9,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":10,"author":{"gitId":"ziyang27"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-02-29"},{"lineNumber":11,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":12,"author":{"gitId":"ziyang27"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-02-29"},{"lineNumber":13,"author":{"gitId":"ziyang27"},"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":"2024-02-29"},{"lineNumber":14,"author":{"gitId":"ziyang27"},"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":"2024-02-29"},{"lineNumber":15,"author":{"gitId":"ziyang27"},"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":"2024-02-29"},{"lineNumber":16,"author":{"gitId":"ziyang27"},"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":"2024-02-29"},{"lineNumber":17,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":18,"author":{"gitId":"ziyang27"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-02-29"},{"lineNumber":19,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":20,"author":{"gitId":"ziyang27"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-02-29"},{"lineNumber":21,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":22,"author":{"gitId":"ziyang27"},"content":"* **Project management**:","lastModifiedDate":"2024-02-29"},{"lineNumber":23,"author":{"gitId":"ziyang27"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-02-29"},{"lineNumber":24,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":25,"author":{"gitId":"ziyang27"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-02-29"},{"lineNumber":26,"author":{"gitId":"ziyang27"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-02-29"},{"lineNumber":27,"author":{"gitId":"ziyang27"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-02-29"},{"lineNumber":28,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":29,"author":{"gitId":"ziyang27"},"content":"* **Documentation**:","lastModifiedDate":"2024-02-29"},{"lineNumber":30,"author":{"gitId":"ziyang27"},"content":" * User Guide:","lastModifiedDate":"2024-02-29"},{"lineNumber":31,"author":{"gitId":"ziyang27"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-02-29"},{"lineNumber":32,"author":{"gitId":"ziyang27"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-02-29"},{"lineNumber":33,"author":{"gitId":"ziyang27"},"content":" * Developer Guide:","lastModifiedDate":"2024-02-29"},{"lineNumber":34,"author":{"gitId":"ziyang27"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-02-29"},{"lineNumber":35,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":36,"author":{"gitId":"ziyang27"},"content":"* **Community**:","lastModifiedDate":"2024-02-29"},{"lineNumber":37,"author":{"gitId":"ziyang27"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-02-29"},{"lineNumber":38,"author":{"gitId":"ziyang27"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-02-29"},{"lineNumber":39,"author":{"gitId":"ziyang27"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-02-29"},{"lineNumber":40,"author":{"gitId":"ziyang27"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-02-29"},{"lineNumber":41,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":42,"author":{"gitId":"ziyang27"},"content":"* **Tools**:","lastModifiedDate":"2024-02-29"},{"lineNumber":43,"author":{"gitId":"ziyang27"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-02-29"},{"lineNumber":44,"author":{"gitId":"ziyang27"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-02-29"},{"lineNumber":45,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":46,"author":{"gitId":"ziyang27"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-02-29"}],"authorContributionMap":{"ziyang27":46}},{"path":"docs/team/tanziyang.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"ziyang27"},"content":"---","lastModifiedDate":"2024-02-29"},{"lineNumber":2,"author":{"gitId":"ziyang27"},"content":" layout: default.md","lastModifiedDate":"2024-02-29"},{"lineNumber":3,"author":{"gitId":"ziyang27"},"content":" title: \"John Doe\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-02-29"},{"lineNumber":4,"author":{"gitId":"ziyang27"},"content":"---","lastModifiedDate":"2024-02-29"},{"lineNumber":5,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":6,"author":{"gitId":"ziyang27"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-02-29"},{"lineNumber":7,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":8,"author":{"gitId":"ziyang27"},"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":"2024-02-29"},{"lineNumber":9,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":10,"author":{"gitId":"ziyang27"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-02-29"},{"lineNumber":11,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":12,"author":{"gitId":"ziyang27"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-02-29"},{"lineNumber":13,"author":{"gitId":"ziyang27"},"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":"2024-02-29"},{"lineNumber":14,"author":{"gitId":"ziyang27"},"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":"2024-02-29"},{"lineNumber":15,"author":{"gitId":"ziyang27"},"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":"2024-02-29"},{"lineNumber":16,"author":{"gitId":"ziyang27"},"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":"2024-02-29"},{"lineNumber":17,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":18,"author":{"gitId":"ziyang27"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-02-29"},{"lineNumber":19,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":20,"author":{"gitId":"ziyang27"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-02-29"},{"lineNumber":21,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":22,"author":{"gitId":"ziyang27"},"content":"* **Project management**:","lastModifiedDate":"2024-02-29"},{"lineNumber":23,"author":{"gitId":"ziyang27"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-02-29"},{"lineNumber":24,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":25,"author":{"gitId":"ziyang27"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-02-29"},{"lineNumber":26,"author":{"gitId":"ziyang27"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-02-29"},{"lineNumber":27,"author":{"gitId":"ziyang27"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-02-29"},{"lineNumber":28,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":29,"author":{"gitId":"ziyang27"},"content":"* **Documentation**:","lastModifiedDate":"2024-02-29"},{"lineNumber":30,"author":{"gitId":"ziyang27"},"content":" * User Guide:","lastModifiedDate":"2024-02-29"},{"lineNumber":31,"author":{"gitId":"ziyang27"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-02-29"},{"lineNumber":32,"author":{"gitId":"ziyang27"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-02-29"},{"lineNumber":33,"author":{"gitId":"ziyang27"},"content":" * Developer Guide:","lastModifiedDate":"2024-02-29"},{"lineNumber":34,"author":{"gitId":"ziyang27"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-02-29"},{"lineNumber":35,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":36,"author":{"gitId":"ziyang27"},"content":"* **Community**:","lastModifiedDate":"2024-02-29"},{"lineNumber":37,"author":{"gitId":"ziyang27"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-02-29"},{"lineNumber":38,"author":{"gitId":"ziyang27"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-02-29"},{"lineNumber":39,"author":{"gitId":"ziyang27"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-02-29"},{"lineNumber":40,"author":{"gitId":"ziyang27"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-02-29"},{"lineNumber":41,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":42,"author":{"gitId":"ziyang27"},"content":"* **Tools**:","lastModifiedDate":"2024-02-29"},{"lineNumber":43,"author":{"gitId":"ziyang27"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-02-29"},{"lineNumber":44,"author":{"gitId":"ziyang27"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-02-29"},{"lineNumber":45,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":46,"author":{"gitId":"ziyang27"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-02-29"}],"authorContributionMap":{"ziyang27":46}},{"path":"docs/team/tiongchuanyao.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"ziyang27"},"content":"---","lastModifiedDate":"2024-02-29"},{"lineNumber":2,"author":{"gitId":"ziyang27"},"content":" layout: default.md","lastModifiedDate":"2024-02-29"},{"lineNumber":3,"author":{"gitId":"ziyang27"},"content":" title: \"John Doe\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-02-29"},{"lineNumber":4,"author":{"gitId":"ziyang27"},"content":"---","lastModifiedDate":"2024-02-29"},{"lineNumber":5,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":6,"author":{"gitId":"ziyang27"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-02-29"},{"lineNumber":7,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":8,"author":{"gitId":"ziyang27"},"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":"2024-02-29"},{"lineNumber":9,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":10,"author":{"gitId":"ziyang27"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-02-29"},{"lineNumber":11,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":12,"author":{"gitId":"ziyang27"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-02-29"},{"lineNumber":13,"author":{"gitId":"ziyang27"},"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":"2024-02-29"},{"lineNumber":14,"author":{"gitId":"ziyang27"},"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":"2024-02-29"},{"lineNumber":15,"author":{"gitId":"ziyang27"},"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":"2024-02-29"},{"lineNumber":16,"author":{"gitId":"ziyang27"},"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":"2024-02-29"},{"lineNumber":17,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":18,"author":{"gitId":"ziyang27"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-02-29"},{"lineNumber":19,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":20,"author":{"gitId":"ziyang27"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-02-29"},{"lineNumber":21,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":22,"author":{"gitId":"ziyang27"},"content":"* **Project management**:","lastModifiedDate":"2024-02-29"},{"lineNumber":23,"author":{"gitId":"ziyang27"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-02-29"},{"lineNumber":24,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":25,"author":{"gitId":"ziyang27"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-02-29"},{"lineNumber":26,"author":{"gitId":"ziyang27"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-02-29"},{"lineNumber":27,"author":{"gitId":"ziyang27"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-02-29"},{"lineNumber":28,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":29,"author":{"gitId":"ziyang27"},"content":"* **Documentation**:","lastModifiedDate":"2024-02-29"},{"lineNumber":30,"author":{"gitId":"ziyang27"},"content":" * User Guide:","lastModifiedDate":"2024-02-29"},{"lineNumber":31,"author":{"gitId":"ziyang27"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-02-29"},{"lineNumber":32,"author":{"gitId":"ziyang27"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-02-29"},{"lineNumber":33,"author":{"gitId":"ziyang27"},"content":" * Developer Guide:","lastModifiedDate":"2024-02-29"},{"lineNumber":34,"author":{"gitId":"ziyang27"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-02-29"},{"lineNumber":35,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":36,"author":{"gitId":"ziyang27"},"content":"* **Community**:","lastModifiedDate":"2024-02-29"},{"lineNumber":37,"author":{"gitId":"ziyang27"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-02-29"},{"lineNumber":38,"author":{"gitId":"ziyang27"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-02-29"},{"lineNumber":39,"author":{"gitId":"ziyang27"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-02-29"},{"lineNumber":40,"author":{"gitId":"ziyang27"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-02-29"},{"lineNumber":41,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":42,"author":{"gitId":"ziyang27"},"content":"* **Tools**:","lastModifiedDate":"2024-02-29"},{"lineNumber":43,"author":{"gitId":"ziyang27"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-02-29"},{"lineNumber":44,"author":{"gitId":"ziyang27"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-02-29"},{"lineNumber":45,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":46,"author":{"gitId":"ziyang27"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-02-29"}],"authorContributionMap":{"ziyang27":46}},{"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":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"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":"-"},"content":" /** Returns an unmodifiable view of the filtered list of persons */","lastModifiedDate":"2017-09-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10"},{"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":"Colex2000"},"content":" ObservableList\u003cPerson\u003e getSortedAndFilteredPersonList();","lastModifiedDate":"2024-03-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"Colex2000":1,"-":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":"-"},"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":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"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":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList();","lastModifiedDate":"2016-09-25"},{"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":"Colex2000"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":89,"author":{"gitId":"Colex2000"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":90,"author":{"gitId":"Colex2000"},"content":" public ObservableList\u003cPerson\u003e getSortedAndFilteredPersonList() {","lastModifiedDate":"2024-03-23"},{"lineNumber":91,"author":{"gitId":"Colex2000"},"content":" return model.getSortedPersonList();","lastModifiedDate":"2024-03-23"},{"lineNumber":92,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"Colex2000":5,"-":88}},{"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":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" person.getTags().forEach(builder::append);","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"tanyunchao"},"content":" builder.append(\"; Upcoming: \")","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"tanyunchao"},"content":" .append(person.getUpcoming());","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"Colex2000"},"content":" builder.append(\"; Last contacted: \")","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"Colex2000"},"content":" .append(person.getLastcontact().toString())","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"tanyunchao"},"content":" .append(\";\");","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"Colex2000":2,"tanyunchao":3,"-":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":"Colex2000"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LASTCONTACT;","lastModifiedDate":"2024-03-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":"tanyunchao"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_UPCOMING;","lastModifiedDate":"2024-03-15"},{"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":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-08-24"},{"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":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a person to the address book. \"","lastModifiedDate":"2016-08-24"},{"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":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2017-05-09"},{"lineNumber":31,"author":{"gitId":"tanyunchao"},"content":" + \"[\" + PREFIX_TAG + \"TAG]... \"","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"tanyunchao"},"content":" + \"[\" + PREFIX_UPCOMING + \"UPCOMING] \"","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"Colex2000"},"content":" + \"[\" + PREFIX_LASTCONTACT + \"LASTCONTACT]\\n\"","lastModifiedDate":"2024-03-13"},{"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":"-"},"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":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2017-05-09"},{"lineNumber":40,"author":{"gitId":"tanyunchao"},"content":" + PREFIX_TAG + \"owesMoney\"","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"tanyunchao"},"content":" + PREFIX_UPCOMING + \"01-01-2021 12:00\"","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"Colex2000"},"content":" + PREFIX_LASTCONTACT + \"13-03-2024 0641\";","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: %1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book\";","lastModifiedDate":"2016-08-24"},{"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":{"Colex2000":3,"tanyunchao":5,"-":82}},{"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":"Colex2000"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LASTCONTACT;","lastModifiedDate":"2024-03-18"},{"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":"tanyunchao"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_UPCOMING;","lastModifiedDate":"2024-03-15"},{"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":"-"},"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":"Colex2000"},"content":"import seedu.address.model.person.LastContact;","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-26"},{"lineNumber":31,"author":{"gitId":"tanyunchao"},"content":"import seedu.address.model.person.Upcoming;","lastModifiedDate":"2024-03-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26"},{"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":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the person identified \"","lastModifiedDate":"2016-12-26"},{"lineNumber":42,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06"},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06"},{"lineNumber":46,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":49,"author":{"gitId":"tanyunchao"},"content":" + \"[\" + PREFIX_TAG + \"TAG] \"","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"Colex2000"},"content":" + \"[\" + PREFIX_UPCOMING + \"UPCOMING] \"","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"Colex2000"},"content":" + \"[\" + PREFIX_LASTCONTACT + \"LASTCONTACT]...\\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26"},{"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":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26"},{"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":"Colex2000"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getSortedPersonList();","lastModifiedDate":"2024-03-24"},{"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":"Colex2000"},"content":" model.setToInitialList();","lastModifiedDate":"2024-03-24"},{"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":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2017-06-21"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2017-06-21"},{"lineNumber":108,"author":{"gitId":"tanyunchao"},"content":" Upcoming updatedUpcoming \u003d editPersonDescriptor.getUpcoming().orElse(personToEdit.getUpcoming());","lastModifiedDate":"2024-03-15"},{"lineNumber":109,"author":{"gitId":"Colex2000"},"content":" LastContact updatedLastContact \u003d editPersonDescriptor.getLastcontact().orElse(personToEdit.getLastcontact());","lastModifiedDate":"2024-03-18"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":111,"author":{"gitId":"tanyunchao"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTags, updatedUpcoming,","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"tanyunchao"},"content":" updatedLastContact);","lastModifiedDate":"2024-03-17"},{"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":"tanyunchao"},"content":" * Stores the details to edit the person with. Each non-empty field value will","lastModifiedDate":"2024-03-17"},{"lineNumber":141,"author":{"gitId":"tanyunchao"},"content":" * replace the corresponding field value of the person.","lastModifiedDate":"2024-03-17"},{"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":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21"},{"lineNumber":149,"author":{"gitId":"tanyunchao"},"content":" private Upcoming upcoming;","lastModifiedDate":"2024-03-15"},{"lineNumber":150,"author":{"gitId":"Colex2000"},"content":" private LastContact lastContact;","lastModifiedDate":"2024-03-13"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":152,"author":{"gitId":"tanyunchao"},"content":" public EditPersonDescriptor() {","lastModifiedDate":"2024-03-17"},{"lineNumber":153,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":155,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":156,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11"},{"lineNumber":157,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":158,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":159,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26"},{"lineNumber":160,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15"},{"lineNumber":161,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15"},{"lineNumber":162,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15"},{"lineNumber":163,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15"},{"lineNumber":164,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11"},{"lineNumber":165,"author":{"gitId":"tanyunchao"},"content":" setUpcoming(toCopy.upcoming);","lastModifiedDate":"2024-03-15"},{"lineNumber":166,"author":{"gitId":"Colex2000"},"content":" setLastContact(toCopy.lastContact);","lastModifiedDate":"2024-03-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":169,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":170,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26"},{"lineNumber":171,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":172,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26"},{"lineNumber":173,"author":{"gitId":"Colex2000"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, tags, upcoming, lastContact);","lastModifiedDate":"2024-03-18"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":176,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21"},{"lineNumber":177,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":180,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":181,"author":{"gitId":"-"},"content":" return Optional.ofNullable(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 void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21"},{"lineNumber":185,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","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\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26"},{"lineNumber":189,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","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 setEmail(Email email) {","lastModifiedDate":"2017-06-21"},{"lineNumber":193,"author":{"gitId":"-"},"content":" this.email \u003d email;","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\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":197,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","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 setAddress(Address address) {","lastModifiedDate":"2017-06-21"},{"lineNumber":201,"author":{"gitId":"-"},"content":" this.address \u003d address;","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\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26"},{"lineNumber":205,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21"},{"lineNumber":206,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":208,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":209,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11"},{"lineNumber":210,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":211,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":212,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21"},{"lineNumber":213,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11"},{"lineNumber":214,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":216,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":217,"author":{"gitId":"tanyunchao"},"content":" * Returns an unmodifiable tag set, which throws","lastModifiedDate":"2024-03-17"},{"lineNumber":218,"author":{"gitId":"tanyunchao"},"content":" * {@code UnsupportedOperationException}","lastModifiedDate":"2024-03-17"},{"lineNumber":219,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11"},{"lineNumber":220,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11"},{"lineNumber":221,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":222,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":223,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11"},{"lineNumber":224,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":226,"author":{"gitId":"tanyunchao"},"content":" public void setUpcoming(Upcoming upcoming) {","lastModifiedDate":"2024-03-15"},{"lineNumber":227,"author":{"gitId":"tanyunchao"},"content":" this.upcoming \u003d upcoming;","lastModifiedDate":"2024-03-15"},{"lineNumber":228,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":229,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":230,"author":{"gitId":"tanyunchao"},"content":" public Optional\u003cUpcoming\u003e getUpcoming() {","lastModifiedDate":"2024-03-15"},{"lineNumber":231,"author":{"gitId":"tanyunchao"},"content":" return Optional.ofNullable(upcoming);","lastModifiedDate":"2024-03-15"},{"lineNumber":232,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":233,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":234,"author":{"gitId":"Colex2000"},"content":" public void setLastContact(LastContact lastContact) {","lastModifiedDate":"2024-03-18"},{"lineNumber":235,"author":{"gitId":"Colex2000"},"content":" this.lastContact \u003d lastContact;","lastModifiedDate":"2024-03-18"},{"lineNumber":236,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":237,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":238,"author":{"gitId":"Colex2000"},"content":" public Optional\u003cLastContact\u003e getLastcontact() {","lastModifiedDate":"2024-03-18"},{"lineNumber":239,"author":{"gitId":"Colex2000"},"content":" return Optional.ofNullable(lastContact);","lastModifiedDate":"2024-03-18"},{"lineNumber":240,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":241,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":242,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":243,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":244,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":245,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":247,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":248,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05"},{"lineNumber":249,"author":{"gitId":"-"},"content":" return false;","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":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":253,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":254,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":255,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":256,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":257,"author":{"gitId":"tanyunchao"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags)","lastModifiedDate":"2024-03-15"},{"lineNumber":258,"author":{"gitId":"Colex2000"},"content":" \u0026\u0026 Objects.equals(upcoming, otherEditPersonDescriptor.upcoming)","lastModifiedDate":"2024-03-18"},{"lineNumber":259,"author":{"gitId":"Colex2000"},"content":" \u0026\u0026 Objects.equals(lastContact, otherEditPersonDescriptor.lastContact);","lastModifiedDate":"2024-03-18"},{"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":"tanyunchao"},"content":" .add(\"upcoming\", upcoming)","lastModifiedDate":"2024-03-15"},{"lineNumber":271,"author":{"gitId":"Colex2000"},"content":" .add(\"lastcontact\", lastContact)","lastModifiedDate":"2024-03-18"},{"lineNumber":272,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":274,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":275,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":276,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"Colex2000":21,"tanyunchao":24,"-":231}},{"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":"-"},"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":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"SimHanKiong":1,"-":58}},{"path":"src/main/java/seedu/address/logic/commands/FindTagsAndCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.model.tag.TagsAndFoundPredicate;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":" * Finds and lists all persons in address book who contains all the tags in the argument.","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":" * Tag matching is case sensitive.","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":"public class FindTagsAndCommand extends Command {","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":" public static final String COMMAND_WORD \u003d \"findtagsand\";","lastModifiedDate":"2024-03-24"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all persons who contains all of the tags \"","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":" + \"and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" + \"Parameters: TAG [MORE_TAGS]...\\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":" + \"Example: \" + COMMAND_WORD + \" car health death\";","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":" private final TagsAndFoundPredicate predicate;","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":" public FindTagsAndCommand(TagsAndFoundPredicate predicate) {","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"SimHanKiong"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"SimHanKiong"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"SimHanKiong"},"content":" model.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"SimHanKiong"},"content":" return new CommandResult(","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"SimHanKiong"},"content":" String.format(Messages.MESSAGE_PERSONS_LISTED_OVERVIEW, model.getFilteredPersonList().size()));","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"SimHanKiong"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"SimHanKiong"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"SimHanKiong"},"content":" return true;","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"SimHanKiong"},"content":" if (!(other instanceof FindTagsAndCommand)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"SimHanKiong"},"content":" return false;","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"SimHanKiong"},"content":" FindTagsAndCommand otherFindTagsAndCommand \u003d (FindTagsAndCommand) other;","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"SimHanKiong"},"content":" return predicate.equals(otherFindTagsAndCommand.predicate);","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"SimHanKiong"},"content":" public String toString() {","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"SimHanKiong"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"SimHanKiong"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"SimHanKiong"},"content":" .toString();","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"SimHanKiong":58}},{"path":"src/main/java/seedu/address/logic/commands/FindTagsOrCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.model.tag.TagsOrFoundPredicate;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":"/**","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":" * Finds and lists all persons in address book who contains any of tags in the argument.","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":" * Tag matching is case sensitive.","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":"public class FindTagsOrCommand extends Command {","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":" public static final String COMMAND_WORD \u003d \"findtagsor\";","lastModifiedDate":"2024-03-24"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all persons who contains any of the tags \"","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":" + \"and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" + \"Parameters: TAG [MORE_TAGS]...\\n\"","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":" + \"Example: \" + COMMAND_WORD + \" car health death\";","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":" private final TagsOrFoundPredicate predicate;","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":" public FindTagsOrCommand(TagsOrFoundPredicate predicate) {","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"SimHanKiong"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"SimHanKiong"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"SimHanKiong"},"content":" model.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"SimHanKiong"},"content":" return new CommandResult(","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"SimHanKiong"},"content":" String.format(Messages.MESSAGE_PERSONS_LISTED_OVERVIEW, model.getFilteredPersonList().size()));","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"SimHanKiong"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"SimHanKiong"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"SimHanKiong"},"content":" return true;","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"SimHanKiong"},"content":" if (!(other instanceof FindTagsOrCommand)) {","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"SimHanKiong"},"content":" return false;","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"SimHanKiong"},"content":" FindTagsOrCommand otherFindTagOrCommand \u003d (FindTagsOrCommand) other;","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"SimHanKiong"},"content":" return predicate.equals(otherFindTagOrCommand.predicate);","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"SimHanKiong"},"content":" public String toString() {","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"SimHanKiong"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"SimHanKiong"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"SimHanKiong"},"content":" .toString();","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":58,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"SimHanKiong":58}},{"path":"src/main/java/seedu/address/logic/commands/LastContactCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Colex2000"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"Colex2000"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"Colex2000"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"Colex2000"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"Colex2000"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"Colex2000"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"Colex2000"},"content":"import seedu.address.model.person.HasLastContactedPredicate;","lastModifiedDate":"2024-03-24"},{"lineNumber":11,"author":{"gitId":"Colex2000"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"Colex2000"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"Colex2000"},"content":" * Tags a person with last contacted date and time in the address book.","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"Colex2000"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"Colex2000"},"content":"public class LastContactCommand extends Command {","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"Colex2000"},"content":" public static final Comparator\u003cPerson\u003e SORT_COMPARATOR \u003d (person1, person2) -\u003e {","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"Colex2000"},"content":" // Assuming getLastContact() can be null and getDateTime() can also be null.","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"Colex2000"},"content":" LocalDateTime lastContactDateTime1 \u003d (person1.getLastcontact() !\u003d null)","lastModifiedDate":"2024-03-24"},{"lineNumber":21,"author":{"gitId":"Colex2000"},"content":" ? person1.getLastcontact().getDateTime() : null;","lastModifiedDate":"2024-03-24"},{"lineNumber":22,"author":{"gitId":"Colex2000"},"content":" LocalDateTime lastContactDateTime2 \u003d (person2.getLastcontact() !\u003d null)","lastModifiedDate":"2024-03-24"},{"lineNumber":23,"author":{"gitId":"Colex2000"},"content":" ? person2.getLastcontact().getDateTime() : null;","lastModifiedDate":"2024-03-24"},{"lineNumber":24,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":25,"author":{"gitId":"Colex2000"},"content":" // Handling nulls to ensure they are sorted to the end.","lastModifiedDate":"2024-03-24"},{"lineNumber":26,"author":{"gitId":"Colex2000"},"content":" if (lastContactDateTime1 \u003d\u003d null \u0026\u0026 lastContactDateTime2 \u003d\u003d null) {","lastModifiedDate":"2024-03-24"},{"lineNumber":27,"author":{"gitId":"Colex2000"},"content":" return 0; // Both are equal in terms of sorting.","lastModifiedDate":"2024-03-24"},{"lineNumber":28,"author":{"gitId":"Colex2000"},"content":" } else if (lastContactDateTime1 \u003d\u003d null) {","lastModifiedDate":"2024-03-24"},{"lineNumber":29,"author":{"gitId":"Colex2000"},"content":" return 1; // Nulls are considered greater to sort them to the end.","lastModifiedDate":"2024-03-24"},{"lineNumber":30,"author":{"gitId":"Colex2000"},"content":" } else if (lastContactDateTime2 \u003d\u003d null) {","lastModifiedDate":"2024-03-24"},{"lineNumber":31,"author":{"gitId":"Colex2000"},"content":" return -1; // Non-nulls come before nulls.","lastModifiedDate":"2024-03-24"},{"lineNumber":32,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":33,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"Colex2000"},"content":" // If both dates are non-null, compare them directly.","lastModifiedDate":"2024-03-22"},{"lineNumber":35,"author":{"gitId":"Colex2000"},"content":" return lastContactDateTime1.compareTo(lastContactDateTime2);","lastModifiedDate":"2024-03-22"},{"lineNumber":36,"author":{"gitId":"Colex2000"},"content":" };","lastModifiedDate":"2024-03-23"},{"lineNumber":37,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"Colex2000"},"content":" public static final String COMMAND_WORD \u003d \"lastcontact\";","lastModifiedDate":"2024-03-23"},{"lineNumber":39,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":40,"author":{"gitId":"Colex2000"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Show a list of last contacted clients \"","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"Colex2000"},"content":" + \"sorted according to dateTime\";","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":43,"author":{"gitId":"Colex2000"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all clients with last contact dates,\"","lastModifiedDate":"2024-03-23"},{"lineNumber":44,"author":{"gitId":"Colex2000"},"content":" + \" starting with the oldest date\";","lastModifiedDate":"2024-03-23"},{"lineNumber":45,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":46,"author":{"gitId":"Colex2000"},"content":" private static final HasLastContactedPredicate HAS_LAST_CONTACTED_PREDICATE \u003d new HasLastContactedPredicate();","lastModifiedDate":"2024-03-24"},{"lineNumber":47,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":48,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":49,"author":{"gitId":"Colex2000"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":50,"author":{"gitId":"Colex2000"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-23"},{"lineNumber":51,"author":{"gitId":"Colex2000"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-23"},{"lineNumber":52,"author":{"gitId":"Colex2000"},"content":" model.updateFilteredPersonList(HAS_LAST_CONTACTED_PREDICATE);","lastModifiedDate":"2024-03-24"},{"lineNumber":53,"author":{"gitId":"Colex2000"},"content":" model.sortFilteredPersonList(SORT_COMPARATOR);","lastModifiedDate":"2024-03-23"},{"lineNumber":54,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":55,"author":{"gitId":"Colex2000"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2024-03-22"},{"lineNumber":56,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":57,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":58,"author":{"gitId":"Colex2000"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":59,"author":{"gitId":"Colex2000"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-15"},{"lineNumber":60,"author":{"gitId":"Colex2000"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-15"},{"lineNumber":61,"author":{"gitId":"Colex2000"},"content":" return true;","lastModifiedDate":"2024-03-15"},{"lineNumber":62,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":63,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":64,"author":{"gitId":"Colex2000"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-15"},{"lineNumber":65,"author":{"gitId":"Colex2000"},"content":" if (!(other instanceof LastContactCommand)) {","lastModifiedDate":"2024-03-15"},{"lineNumber":66,"author":{"gitId":"Colex2000"},"content":" return false;","lastModifiedDate":"2024-03-15"},{"lineNumber":67,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":68,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":69,"author":{"gitId":"Colex2000"},"content":" LastContactCommand otherLastContactCommand \u003d (LastContactCommand) other;","lastModifiedDate":"2024-03-15"},{"lineNumber":70,"author":{"gitId":"Colex2000"},"content":" return HAS_LAST_CONTACTED_PREDICATE.equals(otherLastContactCommand.HAS_LAST_CONTACTED_PREDICATE);","lastModifiedDate":"2024-03-24"},{"lineNumber":71,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":72,"author":{"gitId":"Colex2000"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"Colex2000":72}},{"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":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all persons\";","lastModifiedDate":"2016-09-21"},{"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":"Colex2000"},"content":" model.sortFilteredPersonList(null); // Resetting the sort order","lastModifiedDate":"2024-03-23"},{"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":{"Colex2000":1,"-":24}},{"path":"src/main/java/seedu/address/logic/commands/SelectCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ziyang27"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"ziyang27"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"ziyang27"},"content":"import java.util.List;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"ziyang27"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"ziyang27"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"ziyang27"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"ziyang27"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"ziyang27"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"ziyang27"},"content":"import seedu.address.model.person.IsSamePersonPredicate;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"ziyang27"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"ziyang27"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"ziyang27"},"content":" * Selects a person identified using it\u0027s displayed index from the address book.","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"ziyang27"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"ziyang27"},"content":"public class SelectCommand extends Command {","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"ziyang27"},"content":" public static final String COMMAND_WORD \u003d \"select\";","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"ziyang27"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"ziyang27"},"content":" + \": Selects the person identified by the index number used in the displayed person list.\\n\"","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"ziyang27"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"ziyang27"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"ziyang27"},"content":" public static final String MESSAGE_SELECT_PERSON_SUCCESS \u003d \"Selected Person: %1$s\";","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"ziyang27"},"content":" public static final String MESSAGE_ARGUMENTS \u003d \"Index: %1$d\";","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"ziyang27"},"content":" private final Index targetIndex;","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"ziyang27"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"ziyang27"},"content":" * Constructs a SelectCommand object.","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"ziyang27"},"content":" *","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"ziyang27"},"content":" * @param targetIndex The index of the person in the filtered person list to select.","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"ziyang27"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"ziyang27"},"content":" public SelectCommand(Index targetIndex) {","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"ziyang27"},"content":" requireNonNull(targetIndex);","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"ziyang27"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"ziyang27"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"ziyang27"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"ziyang27"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"Colex2000"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getSortedPersonList();","lastModifiedDate":"2024-03-23"},{"lineNumber":47,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"ziyang27"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"ziyang27"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"ziyang27"},"content":" Person personToSelect \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"ziyang27"},"content":" IsSamePersonPredicate predicate \u003d new IsSamePersonPredicate(personToSelect);","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"ziyang27"},"content":" model.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"ziyang27"},"content":" return new CommandResult(String.format(MESSAGE_SELECT_PERSON_SUCCESS, Messages.format(personToSelect)));","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"ziyang27"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"ziyang27"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"ziyang27"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"ziyang27"},"content":" return true;","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"ziyang27"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"ziyang27"},"content":" if (!(other instanceof SelectCommand)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"ziyang27"},"content":" return false;","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"ziyang27"},"content":" SelectCommand otherSelectCommand \u003d (SelectCommand) other;","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"ziyang27"},"content":" return targetIndex.equals(otherSelectCommand.targetIndex);","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"ziyang27"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":74,"author":{"gitId":"ziyang27"},"content":" public String toString() {","lastModifiedDate":"2024-03-12"},{"lineNumber":75,"author":{"gitId":"ziyang27"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"ziyang27"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"ziyang27"},"content":" .toString();","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":79,"author":{"gitId":"ziyang27"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"ziyang27":78,"Colex2000":1}},{"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":"Colex2000"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LASTCONTACT;","lastModifiedDate":"2024-03-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":"tanyunchao"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_UPCOMING;","lastModifiedDate":"2024-03-15"},{"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":"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":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-03-17"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17"},{"lineNumber":19,"author":{"gitId":"Colex2000"},"content":"import seedu.address.model.person.LastContact;","lastModifiedDate":"2024-03-13"},{"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":"tanyunchao"},"content":"import seedu.address.model.person.Upcoming;","lastModifiedDate":"2024-03-15"},{"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":"tanyunchao"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"tanyunchao"},"content":" PREFIX_ADDRESS, PREFIX_TAG, PREFIX_UPCOMING,","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"Colex2000"},"content":" PREFIX_LASTCONTACT);","lastModifiedDate":"2024-03-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":"tanyunchao"},"content":" Upcoming upcoming \u003d ParserUtil.parseUpcoming(argMultimap.getValue(PREFIX_UPCOMING).orElse(\"\"));","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"Colex2000"},"content":" LastContact lastcontact \u003d ParserUtil.parseLastContact(argMultimap.getValue(PREFIX_LASTCONTACT)","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"Colex2000"},"content":" .orElse(\"\"));","lastModifiedDate":"2024-03-22"},{"lineNumber":55,"author":{"gitId":"tanyunchao"},"content":" Person person \u003d new Person(name, phone, email, address, tagList, upcoming, lastcontact);","lastModifiedDate":"2024-03-17"},{"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":"tanyunchao"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"tanyunchao"},"content":" * in the given","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":65,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"Colex2000":5,"tanyunchao":8,"-":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":"-"},"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":"SimHanKiong"},"content":"import seedu.address.logic.commands.FindTagsAndCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.logic.commands.FindTagsOrCommand;","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":21,"author":{"gitId":"Colex2000"},"content":"import seedu.address.logic.commands.LastContactCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":23,"author":{"gitId":"ziyang27"},"content":"import seedu.address.logic.commands.SelectCommand;","lastModifiedDate":"2024-03-12"},{"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":"SimHanKiong"},"content":" final String commandWord \u003d matcher.group(\"commandWord\").toLowerCase();","lastModifiedDate":"2024-03-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":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":69,"author":{"gitId":"ziyang27"},"content":" case SelectCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"ziyang27"},"content":" return new SelectCommandParser().parse(arguments);","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-12"},{"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":"SimHanKiong"},"content":" case FindTagsOrCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-14"},{"lineNumber":79,"author":{"gitId":"SimHanKiong"},"content":" return new FindTagsOrCommandParser().parse(arguments);","lastModifiedDate":"2024-03-14"},{"lineNumber":80,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":81,"author":{"gitId":"SimHanKiong"},"content":" case FindTagsAndCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"SimHanKiong"},"content":" return new FindTagsAndCommandParser().parse(arguments);","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"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":"Colex2000"},"content":" case LastContactCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"Colex2000"},"content":" return new LastContactCommand();","lastModifiedDate":"2024-03-24"},{"lineNumber":92,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26"},{"lineNumber":94,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"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":{"SimHanKiong":9,"Colex2000":4,"ziyang27":4,"-":85}},{"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":"tanyunchao"},"content":" public static final Prefix PREFIX_UPCOMING \u003d new Prefix(\"u/\");","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"Colex2000"},"content":" public static final Prefix PREFIX_LASTCONTACT \u003d new Prefix(\"lc/\");","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"Colex2000":1,"tanyunchao":1,"-":15}},{"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":"Colex2000"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LASTCONTACT;","lastModifiedDate":"2024-03-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":"tanyunchao"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_UPCOMING;","lastModifiedDate":"2024-03-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":"-"},"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":"-"},"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":"Colex2000"},"content":"import seedu.address.model.person.LastContact;","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"Colex2000"},"content":"import seedu.address.model.person.Upcoming;","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"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":"2017-01-26"},{"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":"2017-01-26"},{"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":"tanyunchao"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-03-15"},{"lineNumber":40,"author":{"gitId":"Colex2000"},"content":" PREFIX_TAG, PREFIX_UPCOMING, PREFIX_LASTCONTACT);","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06"},{"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":"tanyunchao"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-03-15"},{"lineNumber":51,"author":{"gitId":"Colex2000"},"content":" PREFIX_ADDRESS, PREFIX_UPCOMING, PREFIX_LASTCONTACT);","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":59,"author":{"gitId":"-"},"content":" editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":62,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":64,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":65,"author":{"gitId":"-"},"content":" editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":67,"author":{"gitId":"-"},"content":" parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPersonDescriptor::setTags);","lastModifiedDate":"2017-06-21"},{"lineNumber":68,"author":{"gitId":"tanyunchao"},"content":" if (argMultimap.getValue(PREFIX_UPCOMING).isPresent()) {","lastModifiedDate":"2024-03-15"},{"lineNumber":69,"author":{"gitId":"Colex2000"},"content":" if (argMultimap.getValue(PREFIX_UPCOMING).get().isEmpty()) {","lastModifiedDate":"2024-03-22"},{"lineNumber":70,"author":{"gitId":"Colex2000"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-22"},{"lineNumber":71,"author":{"gitId":"Colex2000"},"content":" Upcoming.MESSAGE_EDIT_EMPTY_STRING_EXCEPTION));","lastModifiedDate":"2024-03-22"},{"lineNumber":72,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":73,"author":{"gitId":"tanyunchao"},"content":" editPersonDescriptor.setUpcoming(ParserUtil.parseUpcoming(argMultimap.getValue(PREFIX_UPCOMING).get()));","lastModifiedDate":"2024-03-15"},{"lineNumber":74,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":75,"author":{"gitId":"Colex2000"},"content":" if (argMultimap.getValue(PREFIX_LASTCONTACT).isPresent()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"Colex2000"},"content":" if (argMultimap.getValue(PREFIX_LASTCONTACT).get().isEmpty()) {","lastModifiedDate":"2024-03-22"},{"lineNumber":77,"author":{"gitId":"Colex2000"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-22"},{"lineNumber":78,"author":{"gitId":"Colex2000"},"content":" LastContact.MESSAGE_EDIT_EMPTY_STRING_EXCEPTION));","lastModifiedDate":"2024-03-22"},{"lineNumber":79,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":80,"author":{"gitId":"Colex2000"},"content":" editPersonDescriptor.setLastContact(ParserUtil.parseLastContact(argMultimap","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"Colex2000"},"content":" .getValue(PREFIX_LASTCONTACT).get()));","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":84,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","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":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e} if {@code tags} is non-empty.","lastModifiedDate":"2017-03-07"},{"lineNumber":92,"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":93,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":95,"author":{"gitId":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":98,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":99,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":101,"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":102,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26"},{"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":{"Colex2000":17,"tanyunchao":6,"-":82}},{"path":"src/main/java/seedu/address/logic/parser/FindTagsAndCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.logic.commands.FindTagsAndCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.model.tag.TagsAndFoundPredicate;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":" * Parses input arguments and creates a new FindTagsOrCommand object","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":"public class FindTagsAndCommandParser implements Parser\u003cFindTagsAndCommand\u003e {","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":" * Parses the given {@code String} of arguments in the context of the FindTagsOrCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" * and returns a FindTagsOrCommand object for execution.","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":" public FindTagsAndCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindTagsAndCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"SimHanKiong"},"content":" String[] tags \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"SimHanKiong"},"content":" Set\u003cTag\u003e tagSet \u003d ParserUtil.parseTags(Arrays.asList(tags));","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"SimHanKiong"},"content":" return new FindTagsAndCommand(new TagsAndFoundPredicate(tagSet));","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"SimHanKiong":36}},{"path":"src/main/java/seedu/address/logic/parser/FindTagsOrCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.logic.commands.FindTagsOrCommand;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.model.tag.TagsOrFoundPredicate;","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":"/**","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":" * Parses input arguments and creates a new FindTagsOrCommand object","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":"public class FindTagsOrCommandParser implements Parser\u003cFindTagsOrCommand\u003e {","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":" * Parses the given {@code String} of arguments in the context of the FindTagsOrCommand","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" * and returns a FindTagsOrCommand object for execution.","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":" public FindTagsOrCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindTagsOrCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"SimHanKiong"},"content":" String[] tags \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"SimHanKiong"},"content":" Set\u003cTag\u003e tagSet \u003d ParserUtil.parseTags(Arrays.asList(tags));","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"SimHanKiong"},"content":" return new FindTagsOrCommand(new TagsOrFoundPredicate(tagSet));","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"SimHanKiong":36}},{"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":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-02-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11"},{"lineNumber":14,"author":{"gitId":"Colex2000"},"content":"import seedu.address.model.person.LastContact;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-02-11"},{"lineNumber":17,"author":{"gitId":"tanyunchao"},"content":"import seedu.address.model.person.Upcoming;","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-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":" 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":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"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":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":62,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30"},{"lineNumber":63,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":64,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":65,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30"},{"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":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30"},{"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":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":77,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30"},{"lineNumber":78,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":79,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":80,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30"},{"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":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30"},{"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":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":92,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":93,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":94,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":97,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","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":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"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":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":107,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30"},{"lineNumber":108,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":109,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":110,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":112,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","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":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":116,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07"},{"lineNumber":117,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":119,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15"},{"lineNumber":120,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11"},{"lineNumber":121,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11"},{"lineNumber":122,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":124,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":126,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":127,"author":{"gitId":"tanyunchao"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":128,"author":{"gitId":"tanyunchao"},"content":" * Represents an upcoming event or task.","lastModifiedDate":"2024-03-15"},{"lineNumber":129,"author":{"gitId":"tanyunchao"},"content":" * It provides methods to validate and parse the upcoming string.","lastModifiedDate":"2024-03-15"},{"lineNumber":130,"author":{"gitId":"tanyunchao"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":131,"author":{"gitId":"tanyunchao"},"content":" public static Upcoming parseUpcoming(String upcoming) throws ParseException {","lastModifiedDate":"2024-03-15"},{"lineNumber":132,"author":{"gitId":"tanyunchao"},"content":" requireNonNull(upcoming);","lastModifiedDate":"2024-03-15"},{"lineNumber":133,"author":{"gitId":"tanyunchao"},"content":" String trimmedUpcoming \u003d upcoming.trim();","lastModifiedDate":"2024-03-15"},{"lineNumber":134,"author":{"gitId":"tanyunchao"},"content":" if (!Upcoming.isValidUpcoming(trimmedUpcoming)) {","lastModifiedDate":"2024-03-15"},{"lineNumber":135,"author":{"gitId":"tanyunchao"},"content":" throw new ParseException(Upcoming.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":136,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":137,"author":{"gitId":"tanyunchao"},"content":" return new Upcoming(trimmedUpcoming);","lastModifiedDate":"2024-03-15"},{"lineNumber":138,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":139,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":140,"author":{"gitId":"Colex2000"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":141,"author":{"gitId":"Colex2000"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2024-03-12"},{"lineNumber":142,"author":{"gitId":"Colex2000"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-12"},{"lineNumber":143,"author":{"gitId":"Colex2000"},"content":" *","lastModifiedDate":"2024-03-12"},{"lineNumber":144,"author":{"gitId":"Colex2000"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2024-03-12"},{"lineNumber":145,"author":{"gitId":"Colex2000"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":146,"author":{"gitId":"Colex2000"},"content":" public static LastContact parseLastContact(String lastContact) throws ParseException {","lastModifiedDate":"2024-03-12"},{"lineNumber":147,"author":{"gitId":"Colex2000"},"content":" requireNonNull(lastContact);","lastModifiedDate":"2024-03-12"},{"lineNumber":148,"author":{"gitId":"Colex2000"},"content":" String trimmedLastContact \u003d lastContact.trim();","lastModifiedDate":"2024-03-12"},{"lineNumber":149,"author":{"gitId":"Colex2000"},"content":" if (!LastContact.isValidDateTime(trimmedLastContact)) {","lastModifiedDate":"2024-03-22"},{"lineNumber":150,"author":{"gitId":"Colex2000"},"content":" throw new ParseException(String.format(LastContact.MESSAGE_CONSTRAINTS, trimmedLastContact));","lastModifiedDate":"2024-03-13"},{"lineNumber":151,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":152,"author":{"gitId":"Colex2000"},"content":" return new LastContact(trimmedLastContact);","lastModifiedDate":"2024-03-12"},{"lineNumber":153,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"Colex2000":15,"tanyunchao":15,"-":124}},{"path":"src/main/java/seedu/address/logic/parser/SelectCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ziyang27"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"ziyang27"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"ziyang27"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"ziyang27"},"content":"import seedu.address.logic.commands.SelectCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"ziyang27"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"ziyang27"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"ziyang27"},"content":" * Parses input arguments and creates a new SelectCommand object","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"ziyang27"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"ziyang27"},"content":"public class SelectCommandParser implements Parser\u003cSelectCommand\u003e {","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"ziyang27"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"ziyang27"},"content":" * Parses the given {@code String} of arguments in the context of the SelectCommand","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"ziyang27"},"content":" * and returns a SelectCommand object for execution.","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"ziyang27"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"ziyang27"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"ziyang27"},"content":" public SelectCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"ziyang27"},"content":" try {","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"ziyang27"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"ziyang27"},"content":" return new SelectCommand(index);","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"ziyang27"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"ziyang27"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"ziyang27"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, SelectCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"ziyang27"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"ziyang27":29}},{"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":"Colex2000"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"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":"Colex2000"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":89,"author":{"gitId":"Colex2000"},"content":" void sortFilteredPersonList(Comparator\u003cPerson\u003e comparator);","lastModifiedDate":"2024-03-22"},{"lineNumber":90,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":91,"author":{"gitId":"Colex2000"},"content":" ObservableList\u003cPerson\u003e getSortedPersonList();","lastModifiedDate":"2024-03-23"},{"lineNumber":92,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":93,"author":{"gitId":"Colex2000"},"content":" void setToInitialList();","lastModifiedDate":"2024-03-24"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"Colex2000":7,"-":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":"Colex2000"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-03-22"},{"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":"2017-01-19"},{"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":"Colex2000"},"content":"import javafx.collections.transformation.SortedList;","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"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":"Colex2000"},"content":" private FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2024-03-24"},{"lineNumber":27,"author":{"gitId":"Colex2000"},"content":" private final SortedList\u003cPerson\u003e sortedPersons;","lastModifiedDate":"2024-03-23"},{"lineNumber":28,"author":{"gitId":"Colex2000"},"content":" private final FilteredList\u003cPerson\u003e initialPersons;","lastModifiedDate":"2024-03-24"},{"lineNumber":29,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":41,"author":{"gitId":"-"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(this.addressBook.getPersonList());","lastModifiedDate":"2019-01-25"},{"lineNumber":42,"author":{"gitId":"Colex2000"},"content":" sortedPersons \u003d new SortedList\u003c\u003e(filteredPersons);","lastModifiedDate":"2024-03-23"},{"lineNumber":43,"author":{"gitId":"Colex2000"},"content":" initialPersons \u003d filteredPersons;","lastModifiedDate":"2024-03-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"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":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":54,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06"},{"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 ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return userPrefs;","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 GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","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 void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","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 Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return userPrefs.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 void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","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":" //\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":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21"},{"lineNumber":94,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":99,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":100,"author":{"gitId":"-"},"content":" return addressBook.hasPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15"},{"lineNumber":105,"author":{"gitId":"-"},"content":" addressBook.removePerson(target);","lastModifiedDate":"2019-01-25"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":110,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":111,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26"},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":116,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" addressBook.setPerson(target, editedPerson);","lastModifiedDate":"2019-01-25"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":121,"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":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":124,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10"},{"lineNumber":125,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11"},{"lineNumber":126,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":128,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":129,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":134,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05"},{"lineNumber":135,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":138,"author":{"gitId":"Colex2000"},"content":" @Override","lastModifiedDate":"2024-03-22"},{"lineNumber":139,"author":{"gitId":"Colex2000"},"content":" public void sortFilteredPersonList(Comparator\u003cPerson\u003e comparator) {","lastModifiedDate":"2024-03-22"},{"lineNumber":140,"author":{"gitId":"Colex2000"},"content":" sortedPersons.setComparator(comparator);","lastModifiedDate":"2024-03-23"},{"lineNumber":141,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":142,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":143,"author":{"gitId":"Colex2000"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":144,"author":{"gitId":"Colex2000"},"content":" public ObservableList\u003cPerson\u003e getSortedPersonList() {","lastModifiedDate":"2024-03-23"},{"lineNumber":145,"author":{"gitId":"Colex2000"},"content":" return sortedPersons;","lastModifiedDate":"2024-03-23"},{"lineNumber":146,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":147,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":148,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31"},{"lineNumber":149,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":150,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":151,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31"},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":154,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31"},{"lineNumber":155,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":156,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":159,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":160,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13"},{"lineNumber":161,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons);","lastModifiedDate":"2023-07-13"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":165,"author":{"gitId":"Colex2000"},"content":" /**","lastModifiedDate":"2024-03-24"},{"lineNumber":166,"author":{"gitId":"Colex2000"},"content":" * Maintains the filtered list after edit command is used.","lastModifiedDate":"2024-03-24"},{"lineNumber":167,"author":{"gitId":"Colex2000"},"content":" */","lastModifiedDate":"2024-03-24"},{"lineNumber":168,"author":{"gitId":"Colex2000"},"content":" public void setToInitialList() {","lastModifiedDate":"2024-03-24"},{"lineNumber":169,"author":{"gitId":"Colex2000"},"content":" this.filteredPersons \u003d this.initialPersons;","lastModifiedDate":"2024-03-24"},{"lineNumber":170,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":171,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":172,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"Colex2000":25,"-":147}},{"path":"src/main/java/seedu/address/model/person/HasLastContactedPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Colex2000"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":3,"author":{"gitId":"Colex2000"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"Colex2000"},"content":"/**","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"Colex2000"},"content":" * Tests that a {@code Person}\u0027s {@code LastContact} is present.","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"Colex2000"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"Colex2000"},"content":"public class HasLastContactedPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-03-24"},{"lineNumber":9,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"Colex2000"},"content":" @Override","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"Colex2000"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"Colex2000"},"content":" return person.getLastcontact().isLastContacted();","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"Colex2000"},"content":"}","lastModifiedDate":"2024-03-22"}],"authorContributionMap":{"Colex2000":14}},{"path":"src/main/java/seedu/address/model/person/IsSamePersonPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ziyang27"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"ziyang27"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"ziyang27"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"ziyang27"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"ziyang27"},"content":" * Tests that a {@code Person}\u0027s {@code Name} matches any of the keywords given.","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"ziyang27"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"ziyang27"},"content":"public class IsSamePersonPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"ziyang27"},"content":" private final Person selectedPerson;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"ziyang27"},"content":" public IsSamePersonPredicate(Person selectedPerson) {","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"ziyang27"},"content":" this.selectedPerson \u003d selectedPerson;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"ziyang27"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"ziyang27"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"ziyang27"},"content":" return this.selectedPerson \u003d\u003d person;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"ziyang27"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"ziyang27"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"ziyang27"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"ziyang27"},"content":" return true;","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"ziyang27"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"ziyang27"},"content":" if (!(other instanceof IsSamePersonPredicate)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"ziyang27"},"content":" return false;","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"ziyang27"},"content":" IsSamePersonPredicate otherisSamePersonPredicate \u003d (IsSamePersonPredicate) other;","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"ziyang27"},"content":" return selectedPerson \u003d\u003d otherisSamePersonPredicate.selectedPerson;","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"ziyang27"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"ziyang27"},"content":" public String toString() {","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"ziyang27"},"content":" return new ToStringBuilder(this).add(\"selected person\", selectedPerson).toString();","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"ziyang27"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"ziyang27":42}},{"path":"src/main/java/seedu/address/model/person/LastContact.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Colex2000"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"Colex2000"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"Colex2000"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"Colex2000"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"Colex2000"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"Colex2000"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"Colex2000"},"content":"import java.time.format.ResolverStyle;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"Colex2000"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"Colex2000"},"content":" * Represents a client\u0027s last contacted date and time in the address book.","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"Colex2000"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"Colex2000"},"content":"public class LastContact implements Comparable\u003cLastContact\u003e {","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"Colex2000"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Expected DATETIME format: DD-MM-YYYY HHmm\\n\"","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"Colex2000"},"content":" + \"Actual format: %s\";","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"Colex2000"},"content":" public static final String MESSAGE_EDIT_EMPTY_STRING_EXCEPTION \u003d \"Last contacted can only take DD-MM-YYYY HHmm \"","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"Colex2000"},"content":" + \"dateTime format, and it should not be blank\";","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"Colex2000"},"content":" public static final DateTimeFormatter DATETIME_FORMATTER \u003d DateTimeFormatter.ofPattern(\"dd-MM-uuuu HHmm\")","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"Colex2000"},"content":" .withResolverStyle(ResolverStyle.STRICT);","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"Colex2000"},"content":" private LocalDateTime dateTime;","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"Colex2000"},"content":" private boolean hasLastContact;","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"Colex2000"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"Colex2000"},"content":" * Constructs an {@code Address}.","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"Colex2000"},"content":" *","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"Colex2000"},"content":" * @param dateTime A valid dateTime.","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"Colex2000"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"Colex2000"},"content":" public LastContact(String dateTime) {","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"Colex2000"},"content":" requireNonNull(dateTime);","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"Colex2000"},"content":" checkArgument(isValidDateTime(dateTime), String.format(MESSAGE_CONSTRAINTS, dateTime));","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"Colex2000"},"content":" if (dateTime.isEmpty()) {","lastModifiedDate":"2024-03-22"},{"lineNumber":35,"author":{"gitId":"Colex2000"},"content":" this.hasLastContact \u003d false;","lastModifiedDate":"2024-03-22"},{"lineNumber":36,"author":{"gitId":"Colex2000"},"content":" this.dateTime \u003d null;","lastModifiedDate":"2024-03-22"},{"lineNumber":37,"author":{"gitId":"Colex2000"},"content":" return;","lastModifiedDate":"2024-03-22"},{"lineNumber":38,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"Colex2000"},"content":" this.hasLastContact \u003d true;","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"Colex2000"},"content":" this.dateTime \u003d LocalDateTime.parse(dateTime, DATETIME_FORMATTER);","lastModifiedDate":"2024-03-22"},{"lineNumber":41,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"Colex2000"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"Colex2000"},"content":" * Returns true if a given string is in valid dateTime format.","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"Colex2000"},"content":" * @param dateTime String to parse into formatter to check whether is valid.","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"Colex2000"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"Colex2000"},"content":" public static boolean isValidDateTime(String dateTime) {","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"Colex2000"},"content":" if (dateTime.isEmpty()) {","lastModifiedDate":"2024-03-22"},{"lineNumber":49,"author":{"gitId":"Colex2000"},"content":" return true;","lastModifiedDate":"2024-03-22"},{"lineNumber":50,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":51,"author":{"gitId":"Colex2000"},"content":" String trimmedDateTime \u003d dateTime.trim();","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"Colex2000"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd-MM-uuuu HHmm\")","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"Colex2000"},"content":" .withResolverStyle(ResolverStyle.STRICT);","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"Colex2000"},"content":" try {","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"Colex2000"},"content":" LocalDateTime.parse(trimmedDateTime, formatter);","lastModifiedDate":"2024-03-13"},{"lineNumber":56,"author":{"gitId":"Colex2000"},"content":" return true; // Successfully parsed, input matches the format","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"Colex2000"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"Colex2000"},"content":" return false; // Parsing failed, input does not match the format","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"Colex2000"},"content":" public boolean isLastContacted() {","lastModifiedDate":"2024-03-22"},{"lineNumber":63,"author":{"gitId":"Colex2000"},"content":" return this.hasLastContact;","lastModifiedDate":"2024-03-22"},{"lineNumber":64,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":65,"author":{"gitId":"Colex2000"},"content":" public LocalDateTime getDateTime() {","lastModifiedDate":"2024-03-22"},{"lineNumber":66,"author":{"gitId":"Colex2000"},"content":" return this.dateTime;","lastModifiedDate":"2024-03-22"},{"lineNumber":67,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":68,"author":{"gitId":"Colex2000"},"content":" @Override","lastModifiedDate":"2024-03-22"},{"lineNumber":69,"author":{"gitId":"Colex2000"},"content":" public int compareTo(LastContact other) {","lastModifiedDate":"2024-03-22"},{"lineNumber":70,"author":{"gitId":"Colex2000"},"content":" return this.dateTime.compareTo(other.dateTime);","lastModifiedDate":"2024-03-22"},{"lineNumber":71,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":72,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":73,"author":{"gitId":"Colex2000"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"Colex2000"},"content":" public String toString() {","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"Colex2000"},"content":" if (!hasLastContact) {","lastModifiedDate":"2024-03-22"},{"lineNumber":76,"author":{"gitId":"Colex2000"},"content":" return \"\";","lastModifiedDate":"2024-03-22"},{"lineNumber":77,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":78,"author":{"gitId":"Colex2000"},"content":" return this.dateTime.format(DATETIME_FORMATTER);","lastModifiedDate":"2024-03-22"},{"lineNumber":79,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":81,"author":{"gitId":"Colex2000"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"Colex2000"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"Colex2000"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"Colex2000"},"content":" return true;","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":86,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"Colex2000"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"Colex2000"},"content":" if (!(other instanceof LastContact)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"Colex2000"},"content":" return false;","lastModifiedDate":"2024-03-12"},{"lineNumber":90,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":92,"author":{"gitId":"Colex2000"},"content":" LastContact otherDateTime \u003d (LastContact) other;","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"Colex2000"},"content":" return this.dateTime.equals(otherDateTime.dateTime);","lastModifiedDate":"2024-03-12"},{"lineNumber":94,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":95,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":96,"author":{"gitId":"Colex2000"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":97,"author":{"gitId":"Colex2000"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-12"},{"lineNumber":98,"author":{"gitId":"Colex2000"},"content":" return this.dateTime.hashCode();","lastModifiedDate":"2024-03-12"},{"lineNumber":99,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":100,"author":{"gitId":"Colex2000"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"Colex2000":100}},{"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":"-"},"content":" .anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(person.getName().fullName, keyword));","lastModifiedDate":"2017-06-12"},{"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":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"SimHanKiong":1,"-":44}},{"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":"tanyunchao"},"content":" * Guarantees: details are present and not null, field values are validated,","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"tanyunchao"},"content":" * immutable.","lastModifiedDate":"2024-03-17"},{"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":"tanyunchao"},"content":" private final Upcoming upcoming;","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"Colex2000"},"content":" private final LastContact lastcontact;","lastModifiedDate":"2024-03-12"},{"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":"tanyunchao"},"content":" public Person(Name name, Phone phone, Email email, Address address, Set\u003cTag\u003e tags, Upcoming upcoming,","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"tanyunchao"},"content":" LastContact lastcontact) {","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"tanyunchao"},"content":" requireAllNonNull(name, phone, email, address, tags, upcoming, lastcontact);","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20"},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20"},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":42,"author":{"gitId":"tanyunchao"},"content":" this.upcoming \u003d upcoming;","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"Colex2000"},"content":" this.lastcontact \u003d lastcontact;","lastModifiedDate":"2024-03-12"},{"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":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07"},{"lineNumber":63,"author":{"gitId":"tanyunchao"},"content":" * Returns an immutable tag set, which throws","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"tanyunchao"},"content":" * {@code UnsupportedOperationException}","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07"},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":71,"author":{"gitId":"tanyunchao"},"content":" public Upcoming getUpcoming() {","lastModifiedDate":"2024-03-15"},{"lineNumber":72,"author":{"gitId":"tanyunchao"},"content":" return upcoming;","lastModifiedDate":"2024-03-15"},{"lineNumber":73,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":74,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":75,"author":{"gitId":"Colex2000"},"content":" public LastContact getLastcontact() {","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"Colex2000"},"content":" return lastcontact;","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return true;","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":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":" \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2020-12-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":98,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":99,"author":{"gitId":"-"},"content":" return true;","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":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10"},{"lineNumber":104,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10"},{"lineNumber":108,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-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":"tanyunchao"},"content":" \u0026\u0026 tags.equals(otherPerson.tags)","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"tanyunchao"},"content":" \u0026\u0026 upcoming.equals(otherPerson.upcoming)","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"Colex2000"},"content":" \u0026\u0026 lastcontact.equals(otherPerson.lastcontact);","lastModifiedDate":"2024-03-12"},{"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 int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":119,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":120,"author":{"gitId":"tanyunchao"},"content":" return Objects.hash(name, phone, email, address, tags, upcoming);","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":124,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":125,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"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":"tanyunchao"},"content":" .add(\"upcoming\", upcoming)","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"Colex2000"},"content":" .add(\"lastcontact\", lastcontact)","lastModifiedDate":"2024-03-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":136,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"Colex2000":8,"tanyunchao":17,"-":111}},{"path":"src/main/java/seedu/address/model/person/Upcoming.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"tanyunchao"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"tanyunchao"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"tanyunchao"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"tanyunchao"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"tanyunchao"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"tanyunchao"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"tanyunchao"},"content":"/**","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"tanyunchao"},"content":" * Represents a Person\u0027s upcoming appointment in the address book.","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"tanyunchao"},"content":" * Guarantees: immutable; is valid as declared in","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"tanyunchao"},"content":" * {@link #isValidUpcoming(String)}","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"tanyunchao"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"tanyunchao"},"content":"public class Upcoming implements Comparable\u003cUpcoming\u003e {","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"tanyunchao"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Invalid input. Please follow the format: DD-MM-YYYY HHmm\";","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"Colex2000"},"content":" public static final String MESSAGE_EDIT_EMPTY_STRING_EXCEPTION \u003d \"Upcoming can only take DD-MM-YYYY HHmm \"","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"Colex2000"},"content":" + \"dateTime format, and it should not be blank\";","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"tanyunchao"},"content":" private static final String DATETIME_FORMAT \u003d \"dd-MM-yyyy HHmm\";","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"tanyunchao"},"content":" private static final DateTimeFormatter DATETIME_FORMATTER \u003d DateTimeFormatter.ofPattern(DATETIME_FORMAT);","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"tanyunchao"},"content":" private static final String DATETIME_REGEX \u003d \"^\\\\d{2}-\\\\d{2}-\\\\d{4} \\\\d{2}\\\\d{2}$\";","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"tanyunchao"},"content":" private static final Pattern DATETIME_PATTERN \u003d Pattern.compile(DATETIME_REGEX);","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"tanyunchao"},"content":" private boolean hasUpcoming;","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"tanyunchao"},"content":" private LocalDateTime dateTime;","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"tanyunchao"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"tanyunchao"},"content":" * Constructs an {@code Upcoming} object from a valid date and time string in","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"tanyunchao"},"content":" * the format \"DD-MM-YYYY HH:MM\".","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"tanyunchao"},"content":" *","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"tanyunchao"},"content":" * @param dateTimeStr a string representing the date and time in the format","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"tanyunchao"},"content":" * \"DD-MM-YYYY HH:MM\"","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"tanyunchao"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"tanyunchao"},"content":" public Upcoming(String dateTimeStr) {","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"tanyunchao"},"content":" requireNonNull(dateTimeStr);","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"tanyunchao"},"content":" checkArgument(isValidUpcoming(dateTimeStr), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":38,"author":{"gitId":"tanyunchao"},"content":" if (dateTimeStr.isEmpty()) {","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"tanyunchao"},"content":" this.hasUpcoming \u003d false;","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"tanyunchao"},"content":" this.dateTime \u003d null;","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"tanyunchao"},"content":" return;","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"tanyunchao"},"content":" this.hasUpcoming \u003d true;","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"tanyunchao"},"content":" this.dateTime \u003d LocalDateTime.parse(dateTimeStr, DATETIME_FORMATTER);","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"tanyunchao"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"tanyunchao"},"content":" * Checks if the given string is a valid date and time combination in the format","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"tanyunchao"},"content":" * \"DD-MM-YYYY HH:MM\".","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"tanyunchao"},"content":" *","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"tanyunchao"},"content":" * @param dateTimeStr a string representing the date and time in the format","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"tanyunchao"},"content":" * \"DD-MM-YYYY HH:MM\"","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"tanyunchao"},"content":" * @return true if the string is a valid date and time combination, false","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"tanyunchao"},"content":" * otherwise","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"tanyunchao"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"tanyunchao"},"content":" public static boolean isValidUpcoming(String dateTimeStr) {","lastModifiedDate":"2024-03-15"},{"lineNumber":57,"author":{"gitId":"tanyunchao"},"content":" return dateTimeStr.isEmpty() || DATETIME_PATTERN.matcher(dateTimeStr).matches();","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"tanyunchao"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"tanyunchao"},"content":" public int compareTo(Upcoming other) {","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"tanyunchao"},"content":" return this.dateTime.compareTo(other.dateTime);","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"tanyunchao"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":66,"author":{"gitId":"tanyunchao"},"content":" * Returns a string representation of this {@code Upcoming} object.","lastModifiedDate":"2024-03-15"},{"lineNumber":67,"author":{"gitId":"tanyunchao"},"content":" *","lastModifiedDate":"2024-03-15"},{"lineNumber":68,"author":{"gitId":"tanyunchao"},"content":" * @return a string representation of this object","lastModifiedDate":"2024-03-15"},{"lineNumber":69,"author":{"gitId":"tanyunchao"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":70,"author":{"gitId":"tanyunchao"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"tanyunchao"},"content":" public String toString() {","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"tanyunchao"},"content":" if (!hasUpcoming) {","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"tanyunchao"},"content":" return \"\";","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"tanyunchao"},"content":" return dateTime.format(DATETIME_FORMATTER);","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"tanyunchao"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":79,"author":{"gitId":"tanyunchao"},"content":" * Checks if this {@code Upcoming} object is equal to another object.","lastModifiedDate":"2024-03-15"},{"lineNumber":80,"author":{"gitId":"tanyunchao"},"content":" *","lastModifiedDate":"2024-03-15"},{"lineNumber":81,"author":{"gitId":"tanyunchao"},"content":" * @param obj the object to compare with","lastModifiedDate":"2024-03-15"},{"lineNumber":82,"author":{"gitId":"tanyunchao"},"content":" * @return true if the objects are equal, false otherwise","lastModifiedDate":"2024-03-15"},{"lineNumber":83,"author":{"gitId":"tanyunchao"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":84,"author":{"gitId":"tanyunchao"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"tanyunchao"},"content":" public boolean equals(Object obj) {","lastModifiedDate":"2024-03-12"},{"lineNumber":86,"author":{"gitId":"tanyunchao"},"content":" if (this \u003d\u003d obj) {","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"tanyunchao"},"content":" return true;","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"tanyunchao"},"content":" if (obj \u003d\u003d null || getClass() !\u003d obj.getClass()) {","lastModifiedDate":"2024-03-12"},{"lineNumber":90,"author":{"gitId":"tanyunchao"},"content":" return false;","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":92,"author":{"gitId":"tanyunchao"},"content":" Upcoming other \u003d (Upcoming) obj;","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"tanyunchao"},"content":" if (!this.hasUpcoming \u0026\u0026 !other.hasUpcoming) {","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"tanyunchao"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"tanyunchao"},"content":" return this.hasUpcoming \u003d\u003d other.hasUpcoming \u0026\u0026 this.dateTime.equals(other.dateTime);","lastModifiedDate":"2024-03-16"},{"lineNumber":99,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":100,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":101,"author":{"gitId":"tanyunchao"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":102,"author":{"gitId":"tanyunchao"},"content":" * Returns the hash code value for this {@code Upcoming} object.","lastModifiedDate":"2024-03-15"},{"lineNumber":103,"author":{"gitId":"tanyunchao"},"content":" *","lastModifiedDate":"2024-03-15"},{"lineNumber":104,"author":{"gitId":"tanyunchao"},"content":" * @return the hash code value for this object","lastModifiedDate":"2024-03-15"},{"lineNumber":105,"author":{"gitId":"tanyunchao"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":106,"author":{"gitId":"tanyunchao"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":107,"author":{"gitId":"tanyunchao"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-12"},{"lineNumber":108,"author":{"gitId":"tanyunchao"},"content":" return dateTime.hashCode();","lastModifiedDate":"2024-03-12"},{"lineNumber":109,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":110,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":111,"author":{"gitId":"tanyunchao"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"Colex2000":2,"tanyunchao":109}},{"path":"src/main/java/seedu/address/model/tag/TagsAndFoundPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package seedu.address.model.tag;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":" * Tests that a {@code Person}\u0027s {@code Tag} matches all the tags given.","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":"public class TagsAndFoundPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":" private final Set\u003cTag\u003e tags;","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":" public TagsAndFoundPredicate(Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":" this.tags \u003d tags;","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" return person.getTags().containsAll(tags);","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":" return true;","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"SimHanKiong"},"content":" if (!(other instanceof TagsAndFoundPredicate)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"SimHanKiong"},"content":" return false;","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"SimHanKiong"},"content":" TagsAndFoundPredicate otherTagsAndFoundPredicate \u003d (TagsAndFoundPredicate) other;","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"SimHanKiong"},"content":" return tags.equals(otherTagsAndFoundPredicate.tags);","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"SimHanKiong"},"content":" public String toString() {","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"SimHanKiong"},"content":" return new ToStringBuilder(this).add(\"tags\", tags).toString();","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"SimHanKiong":44}},{"path":"src/main/java/seedu/address/model/tag/TagsOrFoundPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package seedu.address.model.tag;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"/**","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":" * Tests that a {@code Person}\u0027s {@code Tag} matches any of the tags given.","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":"public class TagsOrFoundPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":" private final Set\u003cTag\u003e tags;","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":" public TagsOrFoundPredicate(Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":" this.tags \u003d tags;","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" return tags.stream()","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":" .anyMatch(tag -\u003e person.getTags().contains(tag));","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":" return true;","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"SimHanKiong"},"content":" if (!(other instanceof TagsOrFoundPredicate)) {","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"SimHanKiong"},"content":" return false;","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"SimHanKiong"},"content":" TagsOrFoundPredicate otherTagOrFoundPredicate \u003d (TagsOrFoundPredicate) other;","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"SimHanKiong"},"content":" return tags.equals(otherTagOrFoundPredicate.tags);","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"SimHanKiong"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"SimHanKiong"},"content":" public String toString() {","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"SimHanKiong"},"content":" return new ToStringBuilder(this).add(\"tags\", tags).toString();","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"SimHanKiong":45}},{"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":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20"},{"lineNumber":11,"author":{"gitId":"Colex2000"},"content":"import seedu.address.model.person.LastContact;","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-20"},{"lineNumber":15,"author":{"gitId":"tanyunchao"},"content":"import seedu.address.model.person.Upcoming;","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-15"},{"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":"Colex2000"},"content":" public static final LastContact DUMMY_LASTCONTACT \u003d new LastContact(\"05-03-2024 0600\");","lastModifiedDate":"2024-03-12"},{"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":"-"},"content":" new Person(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":27,"author":{"gitId":"tanyunchao"},"content":" getTagSet(\"friends\"), new Upcoming(\"23-08-2024 1500\"), DUMMY_LASTCONTACT),","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"-"},"content":" new Person(new Name(\"Bernice Yu\"), new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":30,"author":{"gitId":"tanyunchao"},"content":" getTagSet(\"colleagues\", \"friends\"), new Upcoming(\"08-08-2024 1515\"), DUMMY_LASTCONTACT),","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"-"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":33,"author":{"gitId":"tanyunchao"},"content":" getTagSet(\"neighbours\"), new Upcoming(\"03-03-2024 0930\"), DUMMY_LASTCONTACT),","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"-"},"content":" new Person(new Name(\"David Li\"), new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":36,"author":{"gitId":"tanyunchao"},"content":" getTagSet(\"family\"), new Upcoming(\"01-01-2024 1200\"), DUMMY_LASTCONTACT),","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"-"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":39,"author":{"gitId":"tanyunchao"},"content":" getTagSet(\"classmates\"), new Upcoming(\"12-12-2023 1800\"), DUMMY_LASTCONTACT),","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"-"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":42,"author":{"gitId":"tanyunchao"},"content":" getTagSet(\"colleagues\"), new Upcoming(\"25-12-2023 2000\"), DUMMY_LASTCONTACT)","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07"},{"lineNumber":48,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":63,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"Colex2000":2,"tanyunchao":7,"-":54}},{"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":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"Colex2000"},"content":"import seedu.address.model.person.LastContact;","lastModifiedDate":"2024-03-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":"tanyunchao"},"content":"import seedu.address.model.person.Upcoming;","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-15"},{"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":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13"},{"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":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09"},{"lineNumber":34,"author":{"gitId":"tanyunchao"},"content":" private final String upcoming;","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"Colex2000"},"content":" private final String lastcontact;","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-15"},{"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":"-"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"tanyunchao"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags, @JsonProperty(\"upcoming\") String upcoming,","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"tanyunchao"},"content":" @JsonProperty(\"lastcontact\") String lastcontact) {","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"tanyunchao"},"content":" this.upcoming \u003d upcoming;","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"Colex2000"},"content":" this.lastcontact \u003d lastcontact;","lastModifiedDate":"2024-03-12"},{"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":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09"},{"lineNumber":65,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"tanyunchao"},"content":" upcoming \u003d source.getUpcoming().toString();","lastModifiedDate":"2024-03-15"},{"lineNumber":68,"author":{"gitId":"Colex2000"},"content":" lastcontact \u003d source.getLastcontact().toString();","lastModifiedDate":"2024-03-19"},{"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":"tanyunchao"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"tanyunchao"},"content":" * {@code Person} object.","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"tanyunchao"},"content":" * @throws IllegalValueException if there were any data constraints violated in","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"tanyunchao"},"content":" * the adapted person.","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09"},{"lineNumber":81,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13"},{"lineNumber":117,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":118,"author":{"gitId":"tanyunchao"},"content":" if (upcoming \u003d\u003d null) {","lastModifiedDate":"2024-03-15"},{"lineNumber":119,"author":{"gitId":"tanyunchao"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-15"},{"lineNumber":120,"author":{"gitId":"tanyunchao"},"content":" Upcoming.class.getSimpleName()));","lastModifiedDate":"2024-03-15"},{"lineNumber":121,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":122,"author":{"gitId":"tanyunchao"},"content":" if (!Upcoming.isValidUpcoming(upcoming)) {","lastModifiedDate":"2024-03-15"},{"lineNumber":123,"author":{"gitId":"tanyunchao"},"content":" throw new IllegalValueException(Upcoming.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":124,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":125,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"tanyunchao"},"content":" final Upcoming modelUpcoming \u003d new Upcoming(upcoming);","lastModifiedDate":"2024-03-15"},{"lineNumber":127,"author":{"gitId":"tanyunchao"},"content":" if (lastcontact \u003d\u003d null) {","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"tanyunchao"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-17"},{"lineNumber":129,"author":{"gitId":"tanyunchao"},"content":" LastContact.class.getSimpleName()));","lastModifiedDate":"2024-03-17"},{"lineNumber":130,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"tanyunchao"},"content":" final LastContact modelLastContact \u003d new LastContact(lastcontact);","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":133,"author":{"gitId":"tanyunchao"},"content":" return new Person(modelName, modelPhone, modelEmail, modelAddress, modelTags, modelUpcoming, modelLastContact);","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":136,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"Colex2000":4,"tanyunchao":27,"-":105}},{"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":"-"},"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":"-"},"content":" private StackPane personListPanelPlaceholder;","lastModifiedDate":"2017-05-09"},{"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":"Colex2000"},"content":" personListPanel \u003d new PersonListPanel(logic.getSortedAndFilteredPersonList());","lastModifiedDate":"2024-03-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":" personListPanelPlaceholder.getChildren().add(personListPanel.getRoot());","lastModifiedDate":"2017-06-14"},{"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":" public PersonListPanel getPersonListPanel() {","lastModifiedDate":"2016-08-25"},{"lineNumber":167,"author":{"gitId":"-"},"content":" return personListPanel;","lastModifiedDate":"2018-08-14"},{"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":{"Colex2000":1,"-":195}},{"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 address;","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":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18"},{"lineNumber":43,"author":{"gitId":"tanyunchao"},"content":" @FXML","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"tanyunchao"},"content":" private Label upcoming;","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"tanyunchao"},"content":" @FXML","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"Colex2000"},"content":" private Label lastcontact;","lastModifiedDate":"2024-03-12"},{"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":" address.setText(person.getAddress().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" person.getTags().stream()","lastModifiedDate":"2019-01-02"},{"lineNumber":60,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02"},{"lineNumber":61,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02"},{"lineNumber":62,"author":{"gitId":"ziyang27"},"content":" upcoming.setText(\"Upcoming: \" + person.getUpcoming().toString());","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"Colex2000"},"content":" lastcontact.setText(\"Last contacted: \" + person.getLastcontact().toString());","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"Colex2000":2,"ziyang27":1,"tanyunchao":3,"-":59}},{"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":"Colex2000"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"Colex2000"},"content":"import javafx.collections.transformation.SortedList;","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2016-09-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2016-08-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-01-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"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":"Colex2000"},"content":" FilteredList\u003cPerson\u003e filteredData \u003d new FilteredList\u003c\u003e(personList);","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"Colex2000"},"content":" SortedList\u003cPerson\u003e sortableData \u003d new SortedList\u003c\u003e(filteredData);","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"Colex2000"},"content":" personListView.setItems(sortableData);","lastModifiedDate":"2024-03-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" personListView.setCellFactory(listView -\u003e new PersonListViewCell());","lastModifiedDate":"2016-08-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Person} using a {@code PersonCard}.","lastModifiedDate":"2018-02-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" class PersonListViewCell extends ListCell\u003cPerson\u003e {","lastModifiedDate":"2018-02-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" protected void updateItem(Person person, boolean empty) {","lastModifiedDate":"2018-02-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" super.updateItem(person, empty);","lastModifiedDate":"2016-09-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":" if (empty || person \u003d\u003d null) {","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" setGraphic(null);","lastModifiedDate":"2016-09-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":" setText(null);","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2016-09-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":" setGraphic(new PersonCard(person, getIndex() + 1).getRoot());","lastModifiedDate":"2018-02-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"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-08-18"}],"authorContributionMap":{"Colex2000":5,"-":48}},{"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":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2016-08-08"},{"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":"tanyunchao"},"content":" \u003cLabel fx:id\u003d\"upcoming\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$upcoming\" /\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"Colex2000"},"content":" \u003cLabel fx:id\u003d\"lastcontact\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$lastcontacted\"/\u003e","lastModifiedDate":"2024-03-12"},{"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":{"Colex2000":1,"tanyunchao":1,"-":36}},{"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":"Colex2000"},"content":"import static seedu.address.logic.commands.CommandTestUtil.LASTCONTACT_AMY;","lastModifiedDate":"2024-03-13"},{"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":"tanyunchao"},"content":"import static seedu.address.logic.commands.CommandTestUtil.UPCOMING_DESC_AMY;","lastModifiedDate":"2024-03-15"},{"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":"-"},"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":"2017-06-14"},{"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":"Colex2000"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":93,"author":{"gitId":"Colex2000"},"content":" public void getSortedPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-23"},{"lineNumber":94,"author":{"gitId":"Colex2000"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getSortedAndFilteredPersonList().remove(0));","lastModifiedDate":"2024-03-23"},{"lineNumber":95,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":96,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":104,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14"},{"lineNumber":106,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14"},{"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-03-11"},{"lineNumber":112,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":115,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11"},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":119,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":128,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":129,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":130,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":131,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":132,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31"},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":137,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":138,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":139,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":140,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":141,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":142,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":143,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":144,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":145,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14"},{"lineNumber":147,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19"},{"lineNumber":150,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":151,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13"},{"lineNumber":153,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13"},{"lineNumber":154,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13"},{"lineNumber":155,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":156,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13"},{"lineNumber":157,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":159,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13"},{"lineNumber":160,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13"},{"lineNumber":161,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":162,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13"},{"lineNumber":163,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13"},{"lineNumber":164,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":166,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":168,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":169,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13"},{"lineNumber":170,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":172,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":174,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13"},{"lineNumber":175,"author":{"gitId":"-"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2023-06-13"},{"lineNumber":176,"author":{"gitId":"tanyunchao"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + UPCOMING_DESC_AMY + LASTCONTACT_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":177,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2023-06-13"},{"lineNumber":178,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13"},{"lineNumber":179,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13"},{"lineNumber":180,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13"},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":182,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"Colex2000":6,"tanyunchao":2,"-":174}},{"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":"Colex2000"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-03-23"},{"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":"-"},"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":"-"},"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":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15"},{"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":"-"},"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":"-"},"content":" CommandResult commandResult \u003d new AddCommand(validPerson).execute(modelStub);","lastModifiedDate":"2019-01-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23"},{"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":"-"},"content":" AddCommand addCommand \u003d new AddCommand(validPerson);","lastModifiedDate":"2018-08-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":"-"},"content":" assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2019-05-03"},{"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":"Colex2000"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":162,"author":{"gitId":"Colex2000"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":163,"author":{"gitId":"Colex2000"},"content":" public void sortFilteredPersonList(Comparator\u003cPerson\u003e comparator) {","lastModifiedDate":"2024-03-23"},{"lineNumber":164,"author":{"gitId":"Colex2000"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":165,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":166,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":167,"author":{"gitId":"Colex2000"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":168,"author":{"gitId":"Colex2000"},"content":" public ObservableList\u003cPerson\u003e getSortedPersonList() {","lastModifiedDate":"2024-03-23"},{"lineNumber":169,"author":{"gitId":"Colex2000"},"content":" return null;","lastModifiedDate":"2024-03-23"},{"lineNumber":170,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":171,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":172,"author":{"gitId":"Colex2000"},"content":" @Override","lastModifiedDate":"2024-03-24"},{"lineNumber":173,"author":{"gitId":"Colex2000"},"content":" public void setToInitialList() {","lastModifiedDate":"2024-03-24"},{"lineNumber":174,"author":{"gitId":"Colex2000"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-24"},{"lineNumber":175,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":178,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":179,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07"},{"lineNumber":180,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":181,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07"},{"lineNumber":182,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":184,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":185,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":186,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":189,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":190,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":191,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":192,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":193,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":194,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":196,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":197,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12"},{"lineNumber":198,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":199,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12"},{"lineNumber":200,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":202,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07"},{"lineNumber":203,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":204,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":205,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":206,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":208,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":209,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08"},{"lineNumber":210,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":211,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":214,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":215,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04"},{"lineNumber":216,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04"},{"lineNumber":217,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":218,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":220,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12"}],"authorContributionMap":{"Colex2000":16,"-":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":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"Colex2000"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LASTCONTACT;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"tanyunchao"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_UPCOMING;","lastModifiedDate":"2024-03-15"},{"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":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05"},{"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":"","lastModifiedDate":"2017-06-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05"},{"lineNumber":41,"author":{"gitId":"tanyunchao"},"content":" public static final String VALID_UPCOMING_AMY \u003d \"12-12-2024 1200\";","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"tanyunchao"},"content":" public static final String VALID_UPCOMING_BOB \u003d \"05-05-2024 1700\";","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"Colex2000"},"content":" public static final String VALID_LAST_CONTACT \u003d \"13-03-2024 0600\";","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"Colex2000"},"content":" public static final String VALID_LAST_CONTACT_AMY \u003d \"13-04-2024 1600\";","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"Colex2000"},"content":" public static final String VALID_LAST_CONTACT_BOB \u003d \"13-04-2024 1700\";","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":58,"author":{"gitId":"tanyunchao"},"content":" public static final String UPCOMING_DESC_AMY \u003d \" \" + PREFIX_UPCOMING + VALID_UPCOMING_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":59,"author":{"gitId":"tanyunchao"},"content":" public static final String UPCOMING_DESC_BOB \u003d \" \" + PREFIX_UPCOMING + VALID_UPCOMING_BOB;","lastModifiedDate":"2024-03-15"},{"lineNumber":60,"author":{"gitId":"Colex2000"},"content":" public static final String LASTCONTACT_AMY \u003d \" \" + PREFIX_LASTCONTACT + VALID_LAST_CONTACT;","lastModifiedDate":"2024-03-13"},{"lineNumber":61,"author":{"gitId":"Colex2000"},"content":" public static final String LASTCONTACT_BOB \u003d \" \" + PREFIX_LASTCONTACT + VALID_LAST_CONTACT;","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05"},{"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":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05"},{"lineNumber":66,"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":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":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":76,"author":{"gitId":"Colex2000"},"content":" .withTags(VALID_TAG_FRIEND).withUpcoming(VALID_UPCOMING_AMY).withLastContact(VALID_LAST_CONTACT_AMY)","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"Colex2000"},"content":" .build();","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":79,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":80,"author":{"gitId":"Colex2000"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).withUpcoming(VALID_UPCOMING_BOB)","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"Colex2000"},"content":" .withLastContact(VALID_LAST_CONTACT_BOB).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25"},{"lineNumber":90,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":91,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":92,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":95,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":96,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":106,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":110,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":111,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":112,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25"},{"lineNumber":115,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25"},{"lineNumber":117,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":118,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":119,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":120,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03"},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":126,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":127,"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":128,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":130,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31"},{"lineNumber":131,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":133,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31"},{"lineNumber":134,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20"},{"lineNumber":135,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":140,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"Colex2000":11,"tanyunchao":5,"-":124}},{"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":"Colex2000"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_LAST_CONTACT_AMY;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"Colex2000"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_LAST_CONTACT_BOB;","lastModifiedDate":"2024-03-18"},{"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":"tanyunchao"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_UPCOMING_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"tanyunchao"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_UPCOMING_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"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":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-04"},{"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":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":58,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2017-05-18"},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2017-05-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-18"},{"lineNumber":63,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18"},{"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":"-"},"content":" .withPhone(VALID_PHONE_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":67,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPerson, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":69,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":72,"author":{"gitId":"-"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":79,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, new EditPersonDescriptor());","lastModifiedDate":"2018-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":92,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05"},{"lineNumber":93,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":100,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2017-05-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":104,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","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_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":112,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18"},{"lineNumber":113,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22"},{"lineNumber":114,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","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":" /**","lastModifiedDate":"2017-05-18"},{"lineNumber":120,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18"},{"lineNumber":121,"author":{"gitId":"-"},"content":" * but smaller than size of address book","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_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":125,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":126,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18"},{"lineNumber":127,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18"},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-05-18"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":130,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":133,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2018-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08"},{"lineNumber":142,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":143,"author":{"gitId":"tanyunchao"},"content":" EditPersonDescriptor editedDescriptor \u003d new EditPersonDescriptorBuilder(DESC_AMY)","lastModifiedDate":"2024-03-17"},{"lineNumber":144,"author":{"gitId":"tanyunchao"},"content":" .withUpcoming(VALID_UPCOMING_BOB).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":145,"author":{"gitId":"SimHanKiong"},"content":" EditPersonDescriptor editedDescriptorLastContact \u003d new EditPersonDescriptorBuilder(DESC_AMY)","lastModifiedDate":"2024-03-20"},{"lineNumber":146,"author":{"gitId":"Colex2000"},"content":" .withLastContact(VALID_LAST_CONTACT_BOB).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":147,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"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":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2017-05-25"},{"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":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2017-05-25"},{"lineNumber":164,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":165,"author":{"gitId":"tanyunchao"},"content":" // different upcoming -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":166,"author":{"gitId":"tanyunchao"},"content":" assertFalse(DESC_AMY.equals(editedDescriptor));","lastModifiedDate":"2024-03-17"},{"lineNumber":167,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":168,"author":{"gitId":"tanyunchao"},"content":" // different upcoming, same other fields -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":169,"author":{"gitId":"tanyunchao"},"content":" editedDescriptor \u003d new EditPersonDescriptorBuilder(DESC_AMY)","lastModifiedDate":"2024-03-17"},{"lineNumber":170,"author":{"gitId":"tanyunchao"},"content":" .withUpcoming(VALID_UPCOMING_BOB).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":171,"author":{"gitId":"tanyunchao"},"content":" assertFalse(DESC_AMY.equals(editedDescriptor));","lastModifiedDate":"2024-03-17"},{"lineNumber":172,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":173,"author":{"gitId":"tanyunchao"},"content":" // same upcoming, different other fields -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":174,"author":{"gitId":"tanyunchao"},"content":" editedDescriptor \u003d new EditPersonDescriptorBuilder(DESC_BOB)","lastModifiedDate":"2024-03-17"},{"lineNumber":175,"author":{"gitId":"tanyunchao"},"content":" .withUpcoming(VALID_UPCOMING_AMY).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":176,"author":{"gitId":"tanyunchao"},"content":" assertFalse(DESC_AMY.equals(editedDescriptor));","lastModifiedDate":"2024-03-17"},{"lineNumber":177,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":178,"author":{"gitId":"Colex2000"},"content":" // different lastcontact -\u003e return false","lastModifiedDate":"2024-03-18"},{"lineNumber":179,"author":{"gitId":"SimHanKiong"},"content":" assertFalse(DESC_AMY.equals(editedDescriptorLastContact));","lastModifiedDate":"2024-03-20"},{"lineNumber":180,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":181,"author":{"gitId":"Colex2000"},"content":" // different lastcontact, same other fields -\u003e return false","lastModifiedDate":"2024-03-18"},{"lineNumber":182,"author":{"gitId":"SimHanKiong"},"content":" editedDescriptorLastContact \u003d new EditPersonDescriptorBuilder(DESC_AMY)","lastModifiedDate":"2024-03-20"},{"lineNumber":183,"author":{"gitId":"Colex2000"},"content":" .withLastContact(VALID_LAST_CONTACT_BOB).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":184,"author":{"gitId":"SimHanKiong"},"content":" assertFalse(DESC_AMY.equals(editedDescriptorLastContact));","lastModifiedDate":"2024-03-20"},{"lineNumber":185,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":186,"author":{"gitId":"Colex2000"},"content":" // same lastcontact -\u003e return true","lastModifiedDate":"2024-03-18"},{"lineNumber":187,"author":{"gitId":"SimHanKiong"},"content":" editedDescriptorLastContact \u003d new EditPersonDescriptorBuilder(DESC_AMY)","lastModifiedDate":"2024-03-20"},{"lineNumber":188,"author":{"gitId":"Colex2000"},"content":" .withLastContact(VALID_LAST_CONTACT_AMY).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":189,"author":{"gitId":"SimHanKiong"},"content":" assertTrue(DESC_AMY.equals(editedDescriptorLastContact));","lastModifiedDate":"2024-03-20"},{"lineNumber":190,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":193,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2019-02-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08"}],"authorContributionMap":{"SimHanKiong":6,"Colex2000":12,"tanyunchao":18,"-":167}},{"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":"tanyunchao"},"content":" + editPersonDescriptor.getTags().orElse(null) + \", upcoming\u003d\"","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"Colex2000"},"content":" + editPersonDescriptor.getUpcoming().orElse(null) + \", lastcontact\u003d\"","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"Colex2000"},"content":" + editPersonDescriptor.getLastcontact().orElse(null) + \"}\";","lastModifiedDate":"2024-03-18"},{"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":{"Colex2000":2,"tanyunchao":1,"-":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":"-"},"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":"SimHanKiong"},"content":" // different object -\u003e returns false","lastModifiedDate":"2024-03-14"},{"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":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"SimHanKiong":2,"-":90}},{"path":"src/test/java/seedu/address/logic/commands/FindTagsAndCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"import static seedu.address.logic.Messages.MESSAGE_PERSONS_LISTED_OVERVIEW;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":"import static seedu.address.testutil.TypicalPersons.DANIEL;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalPersons;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":"import java.util.List;","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.model.tag.TagsAndFoundPredicate;","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.testutil.TagBuilder;","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":" * Contains integration tests (interaction with the Model) for {@code FindTagsOrCommand}.","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":"public class FindTagsAndCommandTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"SimHanKiong"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"SimHanKiong"},"content":" public void equals() {","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"SimHanKiong"},"content":" TagsAndFoundPredicate firstPredicate \u003d preparePredicate(\"first\");","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"SimHanKiong"},"content":" TagsAndFoundPredicate secondPredicate \u003d preparePredicate(\"second\");","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"SimHanKiong"},"content":" FindTagsAndCommand firstCommand \u003d new FindTagsAndCommand(firstPredicate);","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"SimHanKiong"},"content":" FindTagsAndCommand secondCommand \u003d new FindTagsAndCommand(secondPredicate);","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"SimHanKiong"},"content":" assertTrue(firstCommand.equals(firstCommand));","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"SimHanKiong"},"content":" FindTagsAndCommand firstCommandCopy \u003d new FindTagsAndCommand(firstPredicate);","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"SimHanKiong"},"content":" assertTrue(firstCommand.equals(firstCommandCopy));","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"SimHanKiong"},"content":" assertFalse(firstCommand.equals(1));","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"SimHanKiong"},"content":" assertFalse(firstCommand.equals(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"SimHanKiong"},"content":" assertFalse(firstCommand.equals(secondCommand));","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"SimHanKiong"},"content":" public void execute_zeroTags_allPersonsFound() {","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"SimHanKiong"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, getTypicalPersons().size());","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"SimHanKiong"},"content":" TagsAndFoundPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"SimHanKiong"},"content":" FindTagsAndCommand command \u003d new FindTagsAndCommand(predicate);","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"SimHanKiong"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"SimHanKiong"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(getTypicalPersons(), model.getFilteredPersonList());","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"SimHanKiong"},"content":" public void execute_oneTag_multiplePersonsFound() {","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"SimHanKiong"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 2);","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"SimHanKiong"},"content":" TagsAndFoundPredicate predicate \u003d preparePredicate(\"car\");","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"SimHanKiong"},"content":" FindTagsAndCommand command \u003d new FindTagsAndCommand(predicate);","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"SimHanKiong"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"SimHanKiong"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(List.of(ALICE, BENSON), model.getFilteredPersonList());","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"SimHanKiong"},"content":" public void execute_oneTagWrongCase_noPersonFound() {","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"SimHanKiong"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"SimHanKiong"},"content":" TagsAndFoundPredicate predicate \u003d preparePredicate(\"Car\");","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"SimHanKiong"},"content":" FindTagsAndCommand command \u003d new FindTagsAndCommand(predicate);","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"SimHanKiong"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"SimHanKiong"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(List.of(), model.getFilteredPersonList());","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"SimHanKiong"},"content":" public void execute_multipleTags_onePersonWithAllTagsFound() {","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"SimHanKiong"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 1);","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"SimHanKiong"},"content":" TagsAndFoundPredicate predicate \u003d preparePredicate(\"car death\");","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"SimHanKiong"},"content":" FindTagsAndCommand command \u003d new FindTagsAndCommand(predicate);","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"SimHanKiong"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"SimHanKiong"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(List.of(BENSON), model.getFilteredPersonList());","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"SimHanKiong"},"content":" public void execute_multipleTags_onePersonWithNotAllTagsFound() {","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"SimHanKiong"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 1);","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"SimHanKiong"},"content":" TagsAndFoundPredicate predicate \u003d preparePredicate(\"flight covid\");","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"SimHanKiong"},"content":" FindTagsAndCommand command \u003d new FindTagsAndCommand(predicate);","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"SimHanKiong"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"SimHanKiong"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(List.of(DANIEL), model.getFilteredPersonList());","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"SimHanKiong"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-18"},{"lineNumber":101,"author":{"gitId":"SimHanKiong"},"content":" TagsAndFoundPredicate predicate \u003d preparePredicate(\"tag\");","lastModifiedDate":"2024-03-18"},{"lineNumber":102,"author":{"gitId":"SimHanKiong"},"content":" FindTagsAndCommand command \u003d new FindTagsAndCommand(predicate);","lastModifiedDate":"2024-03-18"},{"lineNumber":103,"author":{"gitId":"SimHanKiong"},"content":" String expected \u003d FindTagsAndCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2024-03-18"},{"lineNumber":104,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(expected, command.toString());","lastModifiedDate":"2024-03-18"},{"lineNumber":105,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":106,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":107,"author":{"gitId":"SimHanKiong"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"SimHanKiong"},"content":" * Parses {@code userInput} into a {@code TagsAndFoundPredicate}.","lastModifiedDate":"2024-03-18"},{"lineNumber":109,"author":{"gitId":"SimHanKiong"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":110,"author":{"gitId":"SimHanKiong"},"content":" private TagsAndFoundPredicate preparePredicate(String userInput) {","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"SimHanKiong"},"content":" List\u003cString\u003e tagList \u003d List.of(userInput.split(\"\\\\s+\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"SimHanKiong"},"content":" return new TagsAndFoundPredicate(TagBuilder.build(tagList));","lastModifiedDate":"2024-03-18"},{"lineNumber":113,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":115,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"SimHanKiong":115}},{"path":"src/test/java/seedu/address/logic/commands/FindTagsOrCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"import static seedu.address.logic.Messages.MESSAGE_PERSONS_LISTED_OVERVIEW;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":"import static seedu.address.testutil.TypicalPersons.CARL;","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":"import static seedu.address.testutil.TypicalPersons.DANIEL;","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":"import java.util.List;","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.model.tag.TagsOrFoundPredicate;","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.testutil.TagBuilder;","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":"/**","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" * Contains integration tests (interaction with the Model) for {@code FindTagsOrCommand}.","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":"public class FindTagsOrCommandTest {","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"SimHanKiong"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"SimHanKiong"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"SimHanKiong"},"content":" public void equals() {","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"SimHanKiong"},"content":" TagsOrFoundPredicate firstPredicate \u003d preparePredicate(\"first\");","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"SimHanKiong"},"content":" TagsOrFoundPredicate secondPredicate \u003d preparePredicate(\"second\");","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"SimHanKiong"},"content":" FindTagsOrCommand firstCommand \u003d new FindTagsOrCommand(firstPredicate);","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"SimHanKiong"},"content":" FindTagsOrCommand secondCommand \u003d new FindTagsOrCommand(secondPredicate);","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"SimHanKiong"},"content":" assertTrue(firstCommand.equals(firstCommand));","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"SimHanKiong"},"content":" FindTagsOrCommand firstCommandCopy \u003d new FindTagsOrCommand(firstPredicate);","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"SimHanKiong"},"content":" assertTrue(firstCommand.equals(firstCommandCopy));","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"SimHanKiong"},"content":" assertFalse(firstCommand.equals(1));","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"SimHanKiong"},"content":" assertFalse(firstCommand.equals(null));","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"SimHanKiong"},"content":" assertFalse(firstCommand.equals(secondCommand));","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"SimHanKiong"},"content":" public void execute_zeroTags_noPersonFound() {","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"SimHanKiong"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"SimHanKiong"},"content":" TagsOrFoundPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"SimHanKiong"},"content":" FindTagsOrCommand command \u003d new FindTagsOrCommand(predicate);","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"SimHanKiong"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"SimHanKiong"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2024-03-14"},{"lineNumber":58,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":61,"author":{"gitId":"SimHanKiong"},"content":" public void execute_oneTag_multiplePersonsFound() {","lastModifiedDate":"2024-03-14"},{"lineNumber":62,"author":{"gitId":"SimHanKiong"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 2);","lastModifiedDate":"2024-03-14"},{"lineNumber":63,"author":{"gitId":"SimHanKiong"},"content":" TagsOrFoundPredicate predicate \u003d preparePredicate(\"car\");","lastModifiedDate":"2024-03-14"},{"lineNumber":64,"author":{"gitId":"SimHanKiong"},"content":" FindTagsOrCommand command \u003d new FindTagsOrCommand(predicate);","lastModifiedDate":"2024-03-14"},{"lineNumber":65,"author":{"gitId":"SimHanKiong"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-14"},{"lineNumber":66,"author":{"gitId":"SimHanKiong"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-14"},{"lineNumber":67,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(List.of(ALICE, BENSON), model.getFilteredPersonList());","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":69,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":70,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":71,"author":{"gitId":"SimHanKiong"},"content":" public void execute_oneTagWrongCase_noPersonFound() {","lastModifiedDate":"2024-03-14"},{"lineNumber":72,"author":{"gitId":"SimHanKiong"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2024-03-14"},{"lineNumber":73,"author":{"gitId":"SimHanKiong"},"content":" TagsOrFoundPredicate predicate \u003d preparePredicate(\"Car\");","lastModifiedDate":"2024-03-14"},{"lineNumber":74,"author":{"gitId":"SimHanKiong"},"content":" FindTagsOrCommand command \u003d new FindTagsOrCommand(predicate);","lastModifiedDate":"2024-03-14"},{"lineNumber":75,"author":{"gitId":"SimHanKiong"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-14"},{"lineNumber":76,"author":{"gitId":"SimHanKiong"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-14"},{"lineNumber":77,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(List.of(), model.getFilteredPersonList());","lastModifiedDate":"2024-03-14"},{"lineNumber":78,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":79,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":80,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":81,"author":{"gitId":"SimHanKiong"},"content":" public void execute_multipleTags_multiplePersonsFromOneTagFound() {","lastModifiedDate":"2024-03-14"},{"lineNumber":82,"author":{"gitId":"SimHanKiong"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 2);","lastModifiedDate":"2024-03-14"},{"lineNumber":83,"author":{"gitId":"SimHanKiong"},"content":" TagsOrFoundPredicate predicate \u003d preparePredicate(\"car death test\");","lastModifiedDate":"2024-03-14"},{"lineNumber":84,"author":{"gitId":"SimHanKiong"},"content":" FindTagsOrCommand command \u003d new FindTagsOrCommand(predicate);","lastModifiedDate":"2024-03-14"},{"lineNumber":85,"author":{"gitId":"SimHanKiong"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-14"},{"lineNumber":86,"author":{"gitId":"SimHanKiong"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-14"},{"lineNumber":87,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(List.of(ALICE, BENSON), model.getFilteredPersonList());","lastModifiedDate":"2024-03-14"},{"lineNumber":88,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":89,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":90,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":91,"author":{"gitId":"SimHanKiong"},"content":" public void execute_multipleTags_multiplePersonsFromDifferentTagsFound() {","lastModifiedDate":"2024-03-14"},{"lineNumber":92,"author":{"gitId":"SimHanKiong"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2024-03-14"},{"lineNumber":93,"author":{"gitId":"SimHanKiong"},"content":" TagsOrFoundPredicate predicate \u003d preparePredicate(\"death health covid\");","lastModifiedDate":"2024-03-14"},{"lineNumber":94,"author":{"gitId":"SimHanKiong"},"content":" FindTagsOrCommand command \u003d new FindTagsOrCommand(predicate);","lastModifiedDate":"2024-03-14"},{"lineNumber":95,"author":{"gitId":"SimHanKiong"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-14"},{"lineNumber":96,"author":{"gitId":"SimHanKiong"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-14"},{"lineNumber":97,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(List.of(BENSON, CARL, DANIEL), model.getFilteredPersonList());","lastModifiedDate":"2024-03-14"},{"lineNumber":98,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":99,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":100,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":101,"author":{"gitId":"SimHanKiong"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-14"},{"lineNumber":102,"author":{"gitId":"SimHanKiong"},"content":" TagsOrFoundPredicate predicate \u003d preparePredicate(\"tag\");","lastModifiedDate":"2024-03-14"},{"lineNumber":103,"author":{"gitId":"SimHanKiong"},"content":" FindTagsOrCommand command \u003d new FindTagsOrCommand(predicate);","lastModifiedDate":"2024-03-14"},{"lineNumber":104,"author":{"gitId":"SimHanKiong"},"content":" String expected \u003d FindTagsOrCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2024-03-14"},{"lineNumber":105,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(expected, command.toString());","lastModifiedDate":"2024-03-14"},{"lineNumber":106,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":107,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":108,"author":{"gitId":"SimHanKiong"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":109,"author":{"gitId":"SimHanKiong"},"content":" * Parses {@code userInput} into a {@code TagsOrFoundPredicate}.","lastModifiedDate":"2024-03-14"},{"lineNumber":110,"author":{"gitId":"SimHanKiong"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":111,"author":{"gitId":"SimHanKiong"},"content":" private TagsOrFoundPredicate preparePredicate(String userInput) {","lastModifiedDate":"2024-03-14"},{"lineNumber":112,"author":{"gitId":"SimHanKiong"},"content":" List\u003cString\u003e tagList \u003d List.of(userInput.split(\"\\\\s+\"));","lastModifiedDate":"2024-03-14"},{"lineNumber":113,"author":{"gitId":"SimHanKiong"},"content":" return new TagsOrFoundPredicate(TagBuilder.build(tagList));","lastModifiedDate":"2024-03-14"},{"lineNumber":114,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":115,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":116,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"SimHanKiong":116}},{"path":"src/test/java/seedu/address/logic/commands/LastContactCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Colex2000"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-15"},{"lineNumber":2,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":3,"author":{"gitId":"Colex2000"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-24"},{"lineNumber":4,"author":{"gitId":"Colex2000"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"Colex2000"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"Colex2000"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"Colex2000"},"content":"import static seedu.address.logic.commands.LastContactCommand.SORT_COMPARATOR;","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"Colex2000"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"Colex2000"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-03-24"},{"lineNumber":11,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":12,"author":{"gitId":"Colex2000"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"Colex2000"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"Colex2000"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"Colex2000"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"Colex2000"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"Colex2000"},"content":"import seedu.address.model.person.HasLastContactedPredicate;","lastModifiedDate":"2024-03-24"},{"lineNumber":19,"author":{"gitId":"Colex2000"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"Colex2000"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-24"},{"lineNumber":21,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"Colex2000"},"content":"/**","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"Colex2000"},"content":" * Contains integration tests (interaction with the Model) and unit tests for LastContactCommand.","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"Colex2000"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"Colex2000"},"content":"public class LastContactCommandTest {","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"Colex2000"},"content":" private Model model;","lastModifiedDate":"2024-03-23"},{"lineNumber":28,"author":{"gitId":"Colex2000"},"content":" private Model expectedModel;","lastModifiedDate":"2024-03-23"},{"lineNumber":29,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"Colex2000"},"content":" @BeforeEach","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"Colex2000"},"content":" public void setUp() {","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"Colex2000"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-23"},{"lineNumber":33,"author":{"gitId":"Colex2000"},"content":" expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-23"},{"lineNumber":34,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":35,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"Colex2000"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":37,"author":{"gitId":"Colex2000"},"content":" public void execute_lastContactListIsNotFiltered_showsSameList() {","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"Colex2000"},"content":" assertCommandSuccess(new LastContactCommand(), model,","lastModifiedDate":"2024-03-24"},{"lineNumber":39,"author":{"gitId":"Colex2000"},"content":" LastContactCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-03-23"},{"lineNumber":40,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"Colex2000"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":43,"author":{"gitId":"Colex2000"},"content":" public void execute_lastContactListIsFiltered_showsSortedAndFiltered() {","lastModifiedDate":"2024-03-23"},{"lineNumber":44,"author":{"gitId":"Colex2000"},"content":" model.updateFilteredPersonList(new HasLastContactedPredicate());","lastModifiedDate":"2024-03-24"},{"lineNumber":45,"author":{"gitId":"Colex2000"},"content":" model.sortFilteredPersonList(SORT_COMPARATOR);","lastModifiedDate":"2024-03-23"},{"lineNumber":46,"author":{"gitId":"Colex2000"},"content":" expectedModel.updateFilteredPersonList(new HasLastContactedPredicate());","lastModifiedDate":"2024-03-24"},{"lineNumber":47,"author":{"gitId":"Colex2000"},"content":" expectedModel.sortFilteredPersonList(SORT_COMPARATOR);","lastModifiedDate":"2024-03-23"},{"lineNumber":48,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":49,"author":{"gitId":"Colex2000"},"content":" assertCommandSuccess(new LastContactCommand(), model,","lastModifiedDate":"2024-03-24"},{"lineNumber":50,"author":{"gitId":"Colex2000"},"content":" LastContactCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-03-23"},{"lineNumber":51,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":52,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":53,"author":{"gitId":"Colex2000"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":54,"author":{"gitId":"Colex2000"},"content":" public void compare_personsWithNullLastContact_datesHandledCorrectly() {","lastModifiedDate":"2024-03-24"},{"lineNumber":55,"author":{"gitId":"Colex2000"},"content":" // Create two Person instances with null last contacts","lastModifiedDate":"2024-03-24"},{"lineNumber":56,"author":{"gitId":"Colex2000"},"content":" Person firstPersonWithNullLastContact \u003d new PersonBuilder().withLastContact(\"\").build();","lastModifiedDate":"2024-03-24"},{"lineNumber":57,"author":{"gitId":"Colex2000"},"content":" Person secondPersonWithNullLastContact \u003d new PersonBuilder().withLastContact(\"\").build();","lastModifiedDate":"2024-03-24"},{"lineNumber":58,"author":{"gitId":"Colex2000"},"content":" Person thirdPersonWithValidLastContact \u003d new PersonBuilder().withLastContact(\"24-03-2024 0935\").build();","lastModifiedDate":"2024-03-24"},{"lineNumber":59,"author":{"gitId":"Colex2000"},"content":" boolean isNullLastContact \u003d firstPersonWithNullLastContact.getLastcontact() \u003d\u003d null;","lastModifiedDate":"2024-03-24"},{"lineNumber":60,"author":{"gitId":"Colex2000"},"content":" boolean isNotNullLastContact \u003d thirdPersonWithValidLastContact.getLastcontact() !\u003d null;","lastModifiedDate":"2024-03-24"},{"lineNumber":61,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":62,"author":{"gitId":"Colex2000"},"content":" // Comparator from LastContactCommand","lastModifiedDate":"2024-03-24"},{"lineNumber":63,"author":{"gitId":"Colex2000"},"content":" Comparator\u003cPerson\u003e sortComparator \u003d LastContactCommand.SORT_COMPARATOR;","lastModifiedDate":"2024-03-24"},{"lineNumber":64,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":65,"author":{"gitId":"Colex2000"},"content":" // Applying the comparator","lastModifiedDate":"2024-03-24"},{"lineNumber":66,"author":{"gitId":"Colex2000"},"content":" int comparisonResult \u003d sortComparator.compare(firstPersonWithNullLastContact, secondPersonWithNullLastContact);","lastModifiedDate":"2024-03-24"},{"lineNumber":67,"author":{"gitId":"Colex2000"},"content":" int comparisonResult2 \u003d sortComparator.compare(firstPersonWithNullLastContact, thirdPersonWithValidLastContact);","lastModifiedDate":"2024-03-24"},{"lineNumber":68,"author":{"gitId":"Colex2000"},"content":" int comparisonResult3 \u003d sortComparator.compare(thirdPersonWithValidLastContact, firstPersonWithNullLastContact);","lastModifiedDate":"2024-03-24"},{"lineNumber":69,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":70,"author":{"gitId":"Colex2000"},"content":" // Since both last contact dates are null, we expect the comparator to consider them equal","lastModifiedDate":"2024-03-24"},{"lineNumber":71,"author":{"gitId":"Colex2000"},"content":" assertEquals(0, comparisonResult);","lastModifiedDate":"2024-03-24"},{"lineNumber":72,"author":{"gitId":"Colex2000"},"content":" // Since only first person has Null last contact, we should expect 1","lastModifiedDate":"2024-03-24"},{"lineNumber":73,"author":{"gitId":"Colex2000"},"content":" assertEquals(1, comparisonResult2);","lastModifiedDate":"2024-03-24"},{"lineNumber":74,"author":{"gitId":"Colex2000"},"content":" // Since only second person has Null last contact, we should expect -1","lastModifiedDate":"2024-03-24"},{"lineNumber":75,"author":{"gitId":"Colex2000"},"content":" assertEquals(-1, comparisonResult3);","lastModifiedDate":"2024-03-24"},{"lineNumber":76,"author":{"gitId":"Colex2000"},"content":" // Test for null and non-null LastContact","lastModifiedDate":"2024-03-24"},{"lineNumber":77,"author":{"gitId":"Colex2000"},"content":" assertFalse(isNullLastContact);","lastModifiedDate":"2024-03-24"},{"lineNumber":78,"author":{"gitId":"Colex2000"},"content":" assertTrue(isNotNullLastContact);","lastModifiedDate":"2024-03-24"},{"lineNumber":79,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":80,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":81,"author":{"gitId":"Colex2000"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":82,"author":{"gitId":"Colex2000"},"content":" public void equals() {","lastModifiedDate":"2024-03-24"},{"lineNumber":83,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":84,"author":{"gitId":"Colex2000"},"content":" LastContactCommand lastContactFirstCommand \u003d new LastContactCommand();","lastModifiedDate":"2024-03-24"},{"lineNumber":85,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":86,"author":{"gitId":"Colex2000"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-23"},{"lineNumber":87,"author":{"gitId":"Colex2000"},"content":" assertTrue(lastContactFirstCommand.equals(lastContactFirstCommand));","lastModifiedDate":"2024-03-23"},{"lineNumber":88,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":89,"author":{"gitId":"Colex2000"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-23"},{"lineNumber":90,"author":{"gitId":"Colex2000"},"content":" LastContactCommand lastContactFirstCommandCopy \u003d new LastContactCommand();","lastModifiedDate":"2024-03-24"},{"lineNumber":91,"author":{"gitId":"Colex2000"},"content":" assertTrue(lastContactFirstCommand.equals(lastContactFirstCommandCopy));","lastModifiedDate":"2024-03-23"},{"lineNumber":92,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":93,"author":{"gitId":"Colex2000"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-23"},{"lineNumber":94,"author":{"gitId":"Colex2000"},"content":" assertFalse(lastContactFirstCommand.equals(1));","lastModifiedDate":"2024-03-23"},{"lineNumber":95,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":96,"author":{"gitId":"Colex2000"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-23"},{"lineNumber":97,"author":{"gitId":"Colex2000"},"content":" assertFalse(lastContactFirstCommand.equals(null));","lastModifiedDate":"2024-03-23"},{"lineNumber":98,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":99,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":100,"author":{"gitId":"Colex2000"},"content":"}","lastModifiedDate":"2024-03-15"}],"authorContributionMap":{"Colex2000":100}},{"path":"src/test/java/seedu/address/logic/commands/SelectCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ziyang27"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"ziyang27"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"ziyang27"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"ziyang27"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"ziyang27"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"ziyang27"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"ziyang27"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"ziyang27"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"ziyang27"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"ziyang27"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"ziyang27"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"ziyang27"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"ziyang27"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"ziyang27"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"ziyang27"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"ziyang27"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"ziyang27"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"ziyang27"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"ziyang27"},"content":"import seedu.address.model.person.IsSamePersonPredicate;","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"ziyang27"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"ziyang27"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"ziyang27"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"ziyang27"},"content":" * {@code SelectCommand}.","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"ziyang27"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"ziyang27"},"content":"public class SelectCommandTest {","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"ziyang27"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"ziyang27"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"ziyang27"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"ziyang27"},"content":" Person personToSelect \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"ziyang27"},"content":" SelectCommand selectCommand \u003d new SelectCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"ziyang27"},"content":" String expectedMessage \u003d String.format(SelectCommand.MESSAGE_SELECT_PERSON_SUCCESS,","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"ziyang27"},"content":" Messages.format(personToSelect));","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"ziyang27"},"content":" IsSamePersonPredicate predicate \u003d preparePredicate(personToSelect);","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"ziyang27"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"ziyang27"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"ziyang27"},"content":" assertCommandSuccess(selectCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"ziyang27"},"content":" assertEquals(Arrays.asList(ALICE), model.getFilteredPersonList());","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"ziyang27"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"ziyang27"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"ziyang27"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"ziyang27"},"content":" SelectCommand selectCommand \u003d new SelectCommand(outOfBoundIndex);","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"ziyang27"},"content":" assertCommandFailure(selectCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-13"},{"lineNumber":56,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"ziyang27"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"ziyang27"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2024-03-13"},{"lineNumber":60,"author":{"gitId":"ziyang27"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-13"},{"lineNumber":61,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":62,"author":{"gitId":"ziyang27"},"content":" Person personToSelect \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-13"},{"lineNumber":63,"author":{"gitId":"ziyang27"},"content":" SelectCommand selectCommand \u003d new SelectCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-13"},{"lineNumber":64,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":65,"author":{"gitId":"ziyang27"},"content":" String expectedMessage \u003d String.format(SelectCommand.MESSAGE_SELECT_PERSON_SUCCESS,","lastModifiedDate":"2024-03-13"},{"lineNumber":66,"author":{"gitId":"ziyang27"},"content":" Messages.format(personToSelect));","lastModifiedDate":"2024-03-13"},{"lineNumber":67,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":68,"author":{"gitId":"ziyang27"},"content":" IsSamePersonPredicate predicate \u003d preparePredicate(personToSelect);","lastModifiedDate":"2024-03-13"},{"lineNumber":69,"author":{"gitId":"ziyang27"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"lineNumber":70,"author":{"gitId":"ziyang27"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":72,"author":{"gitId":"ziyang27"},"content":" assertCommandSuccess(selectCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-13"},{"lineNumber":73,"author":{"gitId":"ziyang27"},"content":" assertEquals(Arrays.asList(ALICE), model.getFilteredPersonList());","lastModifiedDate":"2024-03-13"},{"lineNumber":74,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":75,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":76,"author":{"gitId":"ziyang27"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":77,"author":{"gitId":"ziyang27"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2024-03-13"},{"lineNumber":78,"author":{"gitId":"ziyang27"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-13"},{"lineNumber":79,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":80,"author":{"gitId":"ziyang27"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-13"},{"lineNumber":81,"author":{"gitId":"ziyang27"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2024-03-13"},{"lineNumber":82,"author":{"gitId":"ziyang27"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2024-03-13"},{"lineNumber":83,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":84,"author":{"gitId":"ziyang27"},"content":" SelectCommand selectCommand \u003d new SelectCommand(outOfBoundIndex);","lastModifiedDate":"2024-03-13"},{"lineNumber":85,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":86,"author":{"gitId":"ziyang27"},"content":" assertCommandFailure(selectCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-13"},{"lineNumber":87,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":88,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":89,"author":{"gitId":"ziyang27"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":90,"author":{"gitId":"ziyang27"},"content":" public void equals() {","lastModifiedDate":"2024-03-13"},{"lineNumber":91,"author":{"gitId":"ziyang27"},"content":" SelectCommand selectFirstCommand \u003d new SelectCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-13"},{"lineNumber":92,"author":{"gitId":"ziyang27"},"content":" SelectCommand selectSecondCommand \u003d new SelectCommand(INDEX_SECOND_PERSON);","lastModifiedDate":"2024-03-13"},{"lineNumber":93,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":94,"author":{"gitId":"ziyang27"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-13"},{"lineNumber":95,"author":{"gitId":"ziyang27"},"content":" assertTrue(selectFirstCommand.equals(selectFirstCommand));","lastModifiedDate":"2024-03-13"},{"lineNumber":96,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":97,"author":{"gitId":"ziyang27"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-13"},{"lineNumber":98,"author":{"gitId":"ziyang27"},"content":" SelectCommand selectFirstCommandCopy \u003d new SelectCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-13"},{"lineNumber":99,"author":{"gitId":"ziyang27"},"content":" assertTrue(selectFirstCommand.equals(selectFirstCommandCopy));","lastModifiedDate":"2024-03-13"},{"lineNumber":100,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":101,"author":{"gitId":"ziyang27"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-13"},{"lineNumber":102,"author":{"gitId":"ziyang27"},"content":" assertFalse(selectFirstCommand.equals(1));","lastModifiedDate":"2024-03-13"},{"lineNumber":103,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":104,"author":{"gitId":"ziyang27"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-13"},{"lineNumber":105,"author":{"gitId":"ziyang27"},"content":" assertFalse(selectFirstCommand.equals(null));","lastModifiedDate":"2024-03-13"},{"lineNumber":106,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":107,"author":{"gitId":"ziyang27"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-13"},{"lineNumber":108,"author":{"gitId":"ziyang27"},"content":" assertFalse(selectFirstCommand.equals(selectSecondCommand));","lastModifiedDate":"2024-03-13"},{"lineNumber":109,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":110,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":111,"author":{"gitId":"ziyang27"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":112,"author":{"gitId":"ziyang27"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-13"},{"lineNumber":113,"author":{"gitId":"ziyang27"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-13"},{"lineNumber":114,"author":{"gitId":"ziyang27"},"content":" SelectCommand selectCommand \u003d new SelectCommand(targetIndex);","lastModifiedDate":"2024-03-13"},{"lineNumber":115,"author":{"gitId":"ziyang27"},"content":" String expected \u003d SelectCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2024-03-13"},{"lineNumber":116,"author":{"gitId":"ziyang27"},"content":" assertEquals(expected, selectCommand.toString());","lastModifiedDate":"2024-03-13"},{"lineNumber":117,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":118,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":119,"author":{"gitId":"ziyang27"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":120,"author":{"gitId":"ziyang27"},"content":" * Parses {@code selectedPerson} into a {@code IsSamePersonPredicate}.","lastModifiedDate":"2024-03-13"},{"lineNumber":121,"author":{"gitId":"ziyang27"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":122,"author":{"gitId":"ziyang27"},"content":" private IsSamePersonPredicate preparePredicate(Person selectedPerson) {","lastModifiedDate":"2024-03-13"},{"lineNumber":123,"author":{"gitId":"ziyang27"},"content":" return new IsSamePersonPredicate(selectedPerson);","lastModifiedDate":"2024-03-13"},{"lineNumber":124,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":125,"author":{"gitId":"ziyang27"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"ziyang27":125}},{"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":"Colex2000"},"content":"import static seedu.address.logic.commands.CommandTestUtil.LASTCONTACT_AMY;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"Colex2000"},"content":"import static seedu.address.logic.commands.CommandTestUtil.LASTCONTACT_BOB;","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2017-12-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":23,"author":{"gitId":"tanyunchao"},"content":"import static seedu.address.logic.commands.CommandTestUtil.UPCOMING_DESC_BOB;","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":26,"author":{"gitId":"Colex2000"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_LAST_CONTACT;","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"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":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-06-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-06-15"},{"lineNumber":49,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15"},{"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_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":57,"author":{"gitId":"Colex2000"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND)","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"Colex2000"},"content":" .withLastContact(VALID_LAST_CONTACT).build();","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":62,"author":{"gitId":"tanyunchao"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND + UPCOMING_DESC_BOB + LASTCONTACT_BOB,","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"tanyunchao"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2024-03-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":"-"},"content":" Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND)","lastModifiedDate":"2018-07-25"},{"lineNumber":68,"author":{"gitId":"Colex2000"},"content":" .withLastContact(VALID_LAST_CONTACT).build();","lastModifiedDate":"2024-03-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":70,"author":{"gitId":"Colex2000"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"tanyunchao"},"content":" + TAG_DESC_FRIEND + UPCOMING_DESC_BOB + LASTCONTACT_BOB,","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"-"},"content":" new AddCommand(expectedPersonMultipleTags));","lastModifiedDate":"2023-07-14"},{"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":"-"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-07-14"},{"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":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":82,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":86,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2023-07-14"},{"lineNumber":99,"author":{"gitId":"-"},"content":" + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_ADDRESS, PREFIX_EMAIL, PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":110,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":112,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" // valid value followed by invalid 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, validExpectedPersonString + INVALID_NAME_DESC,","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, validExpectedPersonString + INVALID_EMAIL_DESC,","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, validExpectedPersonString + INVALID_PHONE_DESC,","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":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":139,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":140,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":141,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15"},{"lineNumber":142,"author":{"gitId":"tanyunchao"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().withUpcoming(\"\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":143,"author":{"gitId":"Colex2000"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2024-03-13"},{"lineNumber":144,"author":{"gitId":"Colex2000"},"content":" + LASTCONTACT_AMY,","lastModifiedDate":"2024-03-13"},{"lineNumber":145,"author":{"gitId":"-"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2017-12-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":148,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":149,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":150,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":152,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":153,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_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 phone prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_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":" // missing email prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":161,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_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":" // missing address prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":165,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":168,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15"},{"lineNumber":169,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":173,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":174,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":175,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":176,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":179,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15"},{"lineNumber":180,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":183,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15"},{"lineNumber":184,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":187,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15"},{"lineNumber":188,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2017-12-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":191,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15"},{"lineNumber":192,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":" + INVALID_TAG_DESC + VALID_TAG_FRIEND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":195,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":196,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC,","lastModifiedDate":"2017-12-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2017-12-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":204,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"Colex2000":9,"tanyunchao":5,"-":190}},{"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.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-06-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.logic.commands.FindTagsAndCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.logic.commands.FindTagsOrCommand;","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":24,"author":{"gitId":"Colex2000"},"content":"import seedu.address.logic.commands.LastContactCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":26,"author":{"gitId":"ziyang27"},"content":"import seedu.address.logic.commands.SelectCommand;","lastModifiedDate":"2024-03-14"},{"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":"SimHanKiong"},"content":"import seedu.address.model.tag.TagsAndFoundPredicate;","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.model.tag.TagsOrFoundPredicate;","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27"},{"lineNumber":35,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.testutil.TagBuilder;","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":61,"author":{"gitId":"ziyang27"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":62,"author":{"gitId":"ziyang27"},"content":" public void parseCommand_select() throws Exception {","lastModifiedDate":"2024-03-14"},{"lineNumber":63,"author":{"gitId":"ziyang27"},"content":" SelectCommand command \u003d (SelectCommand) parser.parseCommand(","lastModifiedDate":"2024-03-14"},{"lineNumber":64,"author":{"gitId":"ziyang27"},"content":" SelectCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2024-03-14"},{"lineNumber":65,"author":{"gitId":"ziyang27"},"content":" assertEquals(new SelectCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2024-03-14"},{"lineNumber":66,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":67,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2018-03-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command);","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":"2017-06-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","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_find() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":85,"author":{"gitId":"SimHanKiong"},"content":" List\u003cString\u003e keywords \u003d List.of(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2024-03-14"},{"lineNumber":86,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":87,"author":{"gitId":"SimHanKiong"},"content":" FindCommand.COMMAND_WORD + \" \" + String.join(\" \", keywords));","lastModifiedDate":"2024-03-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":92,"author":{"gitId":"SimHanKiong"},"content":" public void parseCommand_findTagsOr() throws Exception {","lastModifiedDate":"2024-03-14"},{"lineNumber":93,"author":{"gitId":"SimHanKiong"},"content":" List\u003cString\u003e tags \u003d List.of(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2024-03-14"},{"lineNumber":94,"author":{"gitId":"SimHanKiong"},"content":" FindTagsOrCommand command \u003d (FindTagsOrCommand) parser.parseCommand(","lastModifiedDate":"2024-03-14"},{"lineNumber":95,"author":{"gitId":"SimHanKiong"},"content":" FindTagsOrCommand.COMMAND_WORD + \" \" + String.join(\" \", tags));","lastModifiedDate":"2024-03-14"},{"lineNumber":96,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(new FindTagsOrCommand(new TagsOrFoundPredicate(TagBuilder.build(tags))), command);","lastModifiedDate":"2024-03-14"},{"lineNumber":97,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":98,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":99,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"SimHanKiong"},"content":" public void parseCommand_findTagsAnd() throws Exception {","lastModifiedDate":"2024-03-18"},{"lineNumber":101,"author":{"gitId":"SimHanKiong"},"content":" List\u003cString\u003e tags \u003d List.of(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2024-03-18"},{"lineNumber":102,"author":{"gitId":"SimHanKiong"},"content":" FindTagsAndCommand command \u003d (FindTagsAndCommand) parser.parseCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":103,"author":{"gitId":"SimHanKiong"},"content":" FindTagsAndCommand.COMMAND_WORD + \" \" + String.join(\" \", tags));","lastModifiedDate":"2024-03-18"},{"lineNumber":104,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(new FindTagsAndCommand(new TagsAndFoundPredicate(TagBuilder.build(tags))), command);","lastModifiedDate":"2024-03-18"},{"lineNumber":105,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":106,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":120,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":126,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":129,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":130,"author":{"gitId":"Colex2000"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":131,"author":{"gitId":"Colex2000"},"content":" public void parseCommand_lastContact() throws Exception {","lastModifiedDate":"2024-03-16"},{"lineNumber":132,"author":{"gitId":"Colex2000"},"content":" assertTrue(parser.parseCommand(LastContactCommand.COMMAND_WORD) instanceof LastContactCommand);","lastModifiedDate":"2024-03-23"},{"lineNumber":133,"author":{"gitId":"Colex2000"},"content":" assertTrue(parser.parseCommand(LastContactCommand.COMMAND_WORD + \" 3\") instanceof LastContactCommand);","lastModifiedDate":"2024-03-23"},{"lineNumber":134,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":135,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":136,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"SimHanKiong":24,"Colex2000":7,"ziyang27":8,"-":97}},{"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":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-23"},{"lineNumber":27,"author":{"gitId":"Colex2000"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LASTCONTACT;","lastModifiedDate":"2024-03-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"Colex2000"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_UPCOMING;","lastModifiedDate":"2024-03-23"},{"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.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.Address;","lastModifiedDate":"2024-03-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-23"},{"lineNumber":45,"author":{"gitId":"Colex2000"},"content":"import seedu.address.model.person.LastContact;","lastModifiedDate":"2024-03-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-23"},{"lineNumber":48,"author":{"gitId":"Colex2000"},"content":"import seedu.address.model.person.Upcoming;","lastModifiedDate":"2024-03-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":" private static final String TAG_EMPTY \u003d \" \" + PREFIX_TAG;","lastModifiedDate":"2017-05-04"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","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":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-07-06"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06"},{"lineNumber":75,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":78,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"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":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"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":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2018-09-22"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2018-09-22"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2018-09-22"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_ADDRESS_DESC, Address.MESSAGE_CONSTRAINTS); // invalid address","lastModifiedDate":"2018-09-22"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2018-09-22"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":96,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":99,"author":{"gitId":"-"},"content":" // while parsing {@code PREFIX_TAG} alone will reset the tags of the {@code Person} being edited,","lastModifiedDate":"2017-05-04"},{"lineNumber":100,"author":{"gitId":"-"},"content":" // parsing it together with a valid tag results in error","lastModifiedDate":"2017-05-04"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_DESC_HUSBAND + TAG_EMPTY, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_EMPTY + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_EMPTY + TAG_DESC_FRIEND + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"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":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_ADDRESS_AMY + VALID_PHONE_AMY,","lastModifiedDate":"2017-07-06"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":112,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":113,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2017-06-06"},{"lineNumber":114,"author":{"gitId":"-"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + NAME_DESC_AMY + TAG_DESC_FRIEND;","lastModifiedDate":"2017-06-06"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":116,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-05-04"},{"lineNumber":117,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-05-04"},{"lineNumber":118,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":119,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":124,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":125,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":126,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":127,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":129,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-04"},{"lineNumber":130,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":131,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"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_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":138,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04"},{"lineNumber":139,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":140,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":141,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_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":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":145,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2017-05-04"},{"lineNumber":146,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":147,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":148,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":151,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04"},{"lineNumber":152,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":153,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":154,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":155,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":157,"author":{"gitId":"-"},"content":" // address","lastModifiedDate":"2017-05-04"},{"lineNumber":158,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + ADDRESS_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":159,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":160,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":161,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":163,"author":{"gitId":"-"},"content":" // tags","lastModifiedDate":"2017-05-04"},{"lineNumber":164,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + TAG_DESC_FRIEND;","lastModifiedDate":"2017-05-25"},{"lineNumber":165,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":166,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":167,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":170,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":171,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":172,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14"},{"lineNumber":173,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-07-14"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":175,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14"},{"lineNumber":176,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":177,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2023-07-14"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":179,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":181,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14"},{"lineNumber":182,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2023-07-14"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":184,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":186,"author":{"gitId":"-"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":187,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2023-07-14"},{"lineNumber":188,"author":{"gitId":"-"},"content":" + TAG_DESC_FRIEND + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + TAG_DESC_FRIEND","lastModifiedDate":"2017-05-25"},{"lineNumber":189,"author":{"gitId":"-"},"content":" + PHONE_DESC_BOB + ADDRESS_DESC_BOB + EMAIL_DESC_BOB + TAG_DESC_HUSBAND;","lastModifiedDate":"2017-05-25"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":191,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":192,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":194,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14"},{"lineNumber":195,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2023-07-14"},{"lineNumber":196,"author":{"gitId":"-"},"content":" + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2023-07-14"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":198,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":199,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":200,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":202,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":203,"author":{"gitId":"-"},"content":" public void parse_resetTags_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":204,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":205,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_EMPTY;","lastModifiedDate":"2017-05-25"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":207,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withTags().build();","lastModifiedDate":"2017-05-04"},{"lineNumber":208,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":210,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":211,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":212,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":213,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":214,"author":{"gitId":"Colex2000"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":215,"author":{"gitId":"Colex2000"},"content":" public void parse_upcomingFieldEmpty_failure() {","lastModifiedDate":"2024-03-23"},{"lineNumber":216,"author":{"gitId":"Colex2000"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-23"},{"lineNumber":217,"author":{"gitId":"Colex2000"},"content":" String userInput \u003d targetIndex.getOneBased() + \" \" + PREFIX_UPCOMING;","lastModifiedDate":"2024-03-23"},{"lineNumber":218,"author":{"gitId":"Colex2000"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-23"},{"lineNumber":219,"author":{"gitId":"Colex2000"},"content":" Upcoming.MESSAGE_EDIT_EMPTY_STRING_EXCEPTION);","lastModifiedDate":"2024-03-23"},{"lineNumber":220,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":221,"author":{"gitId":"Colex2000"},"content":" assertParseFailure(parser, userInput, expectedMessage);","lastModifiedDate":"2024-03-23"},{"lineNumber":222,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":223,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":224,"author":{"gitId":"Colex2000"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":225,"author":{"gitId":"Colex2000"},"content":" public void parse_lastContactFieldEmpty_failure() {","lastModifiedDate":"2024-03-23"},{"lineNumber":226,"author":{"gitId":"Colex2000"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-23"},{"lineNumber":227,"author":{"gitId":"Colex2000"},"content":" String userInput \u003d targetIndex.getOneBased() + \" \" + PREFIX_LASTCONTACT;","lastModifiedDate":"2024-03-23"},{"lineNumber":228,"author":{"gitId":"Colex2000"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-23"},{"lineNumber":229,"author":{"gitId":"Colex2000"},"content":" LastContact.MESSAGE_EDIT_EMPTY_STRING_EXCEPTION);","lastModifiedDate":"2024-03-23"},{"lineNumber":230,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":231,"author":{"gitId":"Colex2000"},"content":" assertParseFailure(parser, userInput, expectedMessage);","lastModifiedDate":"2024-03-23"},{"lineNumber":232,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":233,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04"}],"authorContributionMap":{"Colex2000":26,"-":208}},{"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":"-"},"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":"SimHanKiong"},"content":" assertParseFailure(parser, \" \",","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsFindCommand() {","lastModifiedDate":"2017-08-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2017-06-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" FindCommand expectedFindCommand \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" new FindCommand(new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\")));","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, \"Alice Bob\", expectedFindCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2017-06-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, \" \\n Alice \\n \\t Bob \\t\", expectedFindCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-27"}],"authorContributionMap":{"SimHanKiong":2,"-":33}},{"path":"src/test/java/seedu/address/logic/parser/FindTagsAndCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"import java.util.List;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.logic.commands.FindTagsAndCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.model.tag.TagsAndFoundPredicate;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.testutil.TagBuilder;","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":"public class FindTagsAndCommandParserTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" private FindTagsAndCommandParser parser \u003d new FindTagsAndCommandParser();","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" assertParseFailure(parser, \" \",","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindTagsAndCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":" assertParseFailure(parser, \"!#@#$\", Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"SimHanKiong"},"content":" public void parse_validArgs_returnsFindTagsOrCommand() {","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"SimHanKiong"},"content":" List\u003cString\u003e tagList \u003d List.of(\"car\", \"health\");","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"SimHanKiong"},"content":" FindTagsAndCommand expectedCommand \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"SimHanKiong"},"content":" new FindTagsAndCommand(new TagsAndFoundPredicate(TagBuilder.build(tagList)));","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"SimHanKiong"},"content":" assertParseSuccess(parser, \"car health\", expectedCommand);","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"SimHanKiong"},"content":" assertParseSuccess(parser, \" \\n car \\n \\t health \\t\", expectedCommand);","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"SimHanKiong":41}},{"path":"src/test/java/seedu/address/logic/parser/FindTagsOrCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"import java.util.List;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.logic.commands.FindTagsOrCommand;","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.model.tag.TagsOrFoundPredicate;","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.testutil.TagBuilder;","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":"public class FindTagsOrCommandParserTest {","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" private FindTagsOrCommandParser parser \u003d new FindTagsOrCommandParser();","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" assertParseFailure(parser, \" \",","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindTagsOrCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":" assertParseFailure(parser, \"!#@#$\", Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"SimHanKiong"},"content":" public void parse_validArgs_returnsFindTagsOrCommand() {","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"SimHanKiong"},"content":" List\u003cString\u003e tagList \u003d List.of(\"car\", \"health\");","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"SimHanKiong"},"content":" FindTagsOrCommand expectedCommand \u003d","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"SimHanKiong"},"content":" new FindTagsOrCommand(new TagsOrFoundPredicate(TagBuilder.build(tagList)));","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"SimHanKiong"},"content":" assertParseSuccess(parser, \"car health\", expectedCommand);","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"SimHanKiong"},"content":" assertParseSuccess(parser, \" \\n car \\n \\t health \\t\", expectedCommand);","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"SimHanKiong":41}},{"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.Address;","lastModifiedDate":"2017-05-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-22"},{"lineNumber":19,"author":{"gitId":"Colex2000"},"content":"import seedu.address.model.person.LastContact;","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-22"},{"lineNumber":22,"author":{"gitId":"tanyunchao"},"content":"import seedu.address.model.person.Upcoming;","lastModifiedDate":"2024-03-17"},{"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":"tanyunchao"},"content":" private static final String INVALID_UPCOMING \u003d \"12-12-2024\";","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"Colex2000"},"content":" private static final String INVALID_LASTCONTACT \u003d \"12-12-2024\";","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d \"123456\";","lastModifiedDate":"2017-05-22"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d \"123 Main Street #0505\";","lastModifiedDate":"2017-05-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_1 \u003d \"friend\";","lastModifiedDate":"2017-05-22"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_2 \u003d \"neighbour\";","lastModifiedDate":"2017-05-22"},{"lineNumber":40,"author":{"gitId":"tanyunchao"},"content":" private static final String VALID_UPCOMING \u003d \"12-12-2024 1200\";","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"Colex2000"},"content":" private static final String VALID_LASTCONTACT \u003d \"13-03-2024 0600\";","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","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_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // No 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":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2017-05-25"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":83,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29"},{"lineNumber":84,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void parsePhone_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePhone((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void parsePhone_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhone(INVALID_PHONE));","lastModifiedDate":"2019-03-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":100,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-22"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(VALID_PHONE));","lastModifiedDate":"2017-05-30"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithWhitespace_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":106,"author":{"gitId":"-"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-30"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(phoneWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void parseAddress_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseAddress((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public void parseAddress_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseAddress(INVALID_ADDRESS));","lastModifiedDate":"2019-03-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":123,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-22"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(VALID_ADDRESS));","lastModifiedDate":"2017-05-30"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":128,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":129,"author":{"gitId":"-"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_ADDRESS + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":130,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-30"},{"lineNumber":131,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(addressWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":135,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":139,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":140,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":145,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":146,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22"},{"lineNumber":147,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":150,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":151,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":152,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":153,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30"},{"lineNumber":154,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":157,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":158,"author":{"gitId":"-"},"content":" public void parseTag_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":162,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":163,"author":{"gitId":"-"},"content":" public void parseTag_invalidValue_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTag(INVALID_TAG));","lastModifiedDate":"2019-03-23"},{"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_validValueWithoutWhitespace_returnsTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":169,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30"},{"lineNumber":170,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(VALID_TAG_1));","lastModifiedDate":"2017-05-30"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":173,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":174,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithWhitespace_returnsTrimmedTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":175,"author":{"gitId":"-"},"content":" String tagWithWhitespace \u003d WHITESPACE + VALID_TAG_1 + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":176,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30"},{"lineNumber":177,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(tagWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":180,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":181,"author":{"gitId":"-"},"content":" public void parseTags_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTags(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":185,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":186,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithInvalidTags_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, INVALID_TAG)));","lastModifiedDate":"2019-03-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":190,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":191,"author":{"gitId":"-"},"content":" public void parseTags_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2017-05-22"},{"lineNumber":192,"author":{"gitId":"-"},"content":" assertTrue(ParserUtil.parseTags(Collections.emptyList()).isEmpty());","lastModifiedDate":"2017-05-22"},{"lineNumber":193,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":195,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":196,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithValidTags_returnsTagSet() throws Exception {","lastModifiedDate":"2017-05-22"},{"lineNumber":197,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e actualTagSet \u003d ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, VALID_TAG_2));","lastModifiedDate":"2017-05-22"},{"lineNumber":198,"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":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":200,"author":{"gitId":"-"},"content":" assertEquals(expectedTagSet, actualTagSet);","lastModifiedDate":"2017-05-22"},{"lineNumber":201,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":202,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":203,"author":{"gitId":"tanyunchao"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":204,"author":{"gitId":"tanyunchao"},"content":" public void parseUpcoming_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":205,"author":{"gitId":"tanyunchao"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseUpcoming(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":206,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":207,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":208,"author":{"gitId":"tanyunchao"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":209,"author":{"gitId":"tanyunchao"},"content":" public void parseUpcoming_invalidValue_throwsParseException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":210,"author":{"gitId":"tanyunchao"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseUpcoming(INVALID_UPCOMING));","lastModifiedDate":"2024-03-17"},{"lineNumber":211,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":212,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":213,"author":{"gitId":"tanyunchao"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":214,"author":{"gitId":"tanyunchao"},"content":" public void parseUpcoming_validValueWithoutWhitespace_returnsUpcoming() throws Exception {","lastModifiedDate":"2024-03-17"},{"lineNumber":215,"author":{"gitId":"tanyunchao"},"content":" Upcoming expectedUpcoming \u003d new Upcoming(VALID_UPCOMING);","lastModifiedDate":"2024-03-17"},{"lineNumber":216,"author":{"gitId":"tanyunchao"},"content":" assertEquals(expectedUpcoming, ParserUtil.parseUpcoming(VALID_UPCOMING));","lastModifiedDate":"2024-03-17"},{"lineNumber":217,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":218,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":219,"author":{"gitId":"tanyunchao"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":220,"author":{"gitId":"tanyunchao"},"content":" public void parseUpcoming_validValueWithWhitespace_returnsTrimmedUpcoming() throws Exception {","lastModifiedDate":"2024-03-17"},{"lineNumber":221,"author":{"gitId":"tanyunchao"},"content":" String upcomingWithWhitespace \u003d WHITESPACE + VALID_UPCOMING + WHITESPACE;","lastModifiedDate":"2024-03-17"},{"lineNumber":222,"author":{"gitId":"tanyunchao"},"content":" Upcoming expectedUpcoming \u003d new Upcoming(VALID_UPCOMING);","lastModifiedDate":"2024-03-17"},{"lineNumber":223,"author":{"gitId":"tanyunchao"},"content":" assertEquals(expectedUpcoming, ParserUtil.parseUpcoming(upcomingWithWhitespace));","lastModifiedDate":"2024-03-17"},{"lineNumber":224,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":225,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":226,"author":{"gitId":"Colex2000"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":227,"author":{"gitId":"Colex2000"},"content":" public void parseLastContact_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":228,"author":{"gitId":"Colex2000"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseLastContact(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":229,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":230,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":231,"author":{"gitId":"Colex2000"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":232,"author":{"gitId":"Colex2000"},"content":" public void parseLastContact_invalidValue_throwsParseException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":233,"author":{"gitId":"Colex2000"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseLastContact(INVALID_LASTCONTACT));","lastModifiedDate":"2024-03-18"},{"lineNumber":234,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":235,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":236,"author":{"gitId":"Colex2000"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":237,"author":{"gitId":"Colex2000"},"content":" public void parseLastContact_validValueWithoutWhitespace_returnsLastContact() throws Exception {","lastModifiedDate":"2024-03-18"},{"lineNumber":238,"author":{"gitId":"Colex2000"},"content":" LastContact expectedLastContact \u003d new LastContact(VALID_LASTCONTACT);","lastModifiedDate":"2024-03-18"},{"lineNumber":239,"author":{"gitId":"Colex2000"},"content":" assertEquals(expectedLastContact, ParserUtil.parseLastContact(VALID_LASTCONTACT));","lastModifiedDate":"2024-03-18"},{"lineNumber":240,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":241,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":242,"author":{"gitId":"Colex2000"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":243,"author":{"gitId":"Colex2000"},"content":" public void parseLastContact_validValueWithWhitespace_returnsTrimmedLastContact() throws Exception {","lastModifiedDate":"2024-03-18"},{"lineNumber":244,"author":{"gitId":"Colex2000"},"content":" String lastContactWithWhitespace \u003d WHITESPACE + VALID_LASTCONTACT + WHITESPACE;","lastModifiedDate":"2024-03-18"},{"lineNumber":245,"author":{"gitId":"Colex2000"},"content":" LastContact expectedLastContact \u003d new LastContact(VALID_LASTCONTACT);","lastModifiedDate":"2024-03-18"},{"lineNumber":246,"author":{"gitId":"Colex2000"},"content":" assertEquals(expectedLastContact, ParserUtil.parseLastContact(lastContactWithWhitespace));","lastModifiedDate":"2024-03-18"},{"lineNumber":247,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":248,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22"}],"authorContributionMap":{"Colex2000":26,"tanyunchao":26,"-":196}},{"path":"src/test/java/seedu/address/logic/parser/SelectCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ziyang27"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"ziyang27"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"ziyang27"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"ziyang27"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"ziyang27"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"ziyang27"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"ziyang27"},"content":"import seedu.address.logic.commands.SelectCommand;","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"ziyang27"},"content":"/**","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"ziyang27"},"content":" * As we are only doing white-box testing, our test cases do not cover path variations","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"ziyang27"},"content":" * outside of the SelectCommand code. For example, inputs \"1\" and \"1 abc\" take the","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"ziyang27"},"content":" * same path through the DeleteCommand, and therefore we test only one of them.","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"ziyang27"},"content":" * The path variation for those two cases occur inside the ParserUtil, and","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"ziyang27"},"content":" * therefore should be covered by the ParserUtilTest.","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"ziyang27"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"ziyang27"},"content":"public class SelectCommandParserTest {","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"ziyang27"},"content":" private SelectCommandParser parser \u003d new SelectCommandParser();","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"ziyang27"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"ziyang27"},"content":" public void parse_validArgs_returnsSelectCommand() {","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"ziyang27"},"content":" assertParseSuccess(parser, \"1\", new SelectCommand(INDEX_FIRST_PERSON));","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"ziyang27"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"ziyang27"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"ziyang27"},"content":" assertParseFailure(parser, \"a\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, SelectCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"ziyang27"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"ziyang27":32}},{"path":"src/test/java/seedu/address/model/person/IsSamePersonPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ziyang27"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"ziyang27"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"ziyang27"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"ziyang27"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"ziyang27"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"ziyang27"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"ziyang27"},"content":"public class IsSamePersonPredicateTest {","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"ziyang27"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"ziyang27"},"content":" public void equals() {","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"ziyang27"},"content":" Person firstPredicateSelectedPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"ziyang27"},"content":" Person secondPredicateSelectedPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"ziyang27"},"content":" IsSamePersonPredicate firstPredicate \u003d new IsSamePersonPredicate(firstPredicateSelectedPerson);","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"ziyang27"},"content":" IsSamePersonPredicate secondPredicate \u003d new IsSamePersonPredicate(secondPredicateSelectedPerson);","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"ziyang27"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"ziyang27"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"ziyang27"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"ziyang27"},"content":" IsSamePersonPredicate firstPredicateCopy \u003d new IsSamePersonPredicate(firstPredicateSelectedPerson);","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"ziyang27"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"ziyang27"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"ziyang27"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"ziyang27"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"ziyang27"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"ziyang27"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"ziyang27"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"ziyang27"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"ziyang27"},"content":" public void test_isSamePerson_returnsTrue() {","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"ziyang27"},"content":" Person selectedPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"ziyang27"},"content":" IsSamePersonPredicate predicate \u003d new IsSamePersonPredicate(selectedPerson);","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"ziyang27"},"content":" assertTrue(predicate.test(selectedPerson));","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"ziyang27"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"ziyang27"},"content":" public void test_nameDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"ziyang27"},"content":" Person selectedPerson \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"ziyang27"},"content":" Person nonSelectedPersonWithSameName \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"ziyang27"},"content":" Person nonSelectedPersonWithDifferentName \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"ziyang27"},"content":" // Different name","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"ziyang27"},"content":" IsSamePersonPredicate predicate \u003d new IsSamePersonPredicate(selectedPerson);","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"ziyang27"},"content":" assertFalse(predicate.test(nonSelectedPersonWithDifferentName));","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"ziyang27"},"content":" // Same name but different Person object","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"ziyang27"},"content":" assertFalse(predicate.test(nonSelectedPersonWithSameName));","lastModifiedDate":"2024-03-14"},{"lineNumber":58,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"ziyang27"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":61,"author":{"gitId":"ziyang27"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-14"},{"lineNumber":62,"author":{"gitId":"ziyang27"},"content":" Person selectedPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2024-03-14"},{"lineNumber":63,"author":{"gitId":"ziyang27"},"content":" IsSamePersonPredicate predicate \u003d new IsSamePersonPredicate(selectedPerson);","lastModifiedDate":"2024-03-14"},{"lineNumber":64,"author":{"gitId":"ziyang27"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":65,"author":{"gitId":"ziyang27"},"content":" String expected \u003d IsSamePersonPredicate.class.getCanonicalName() + \"{selected person\u003d\" + selectedPerson + \"}\";","lastModifiedDate":"2024-03-14"},{"lineNumber":66,"author":{"gitId":"ziyang27"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2024-03-14"},{"lineNumber":67,"author":{"gitId":"ziyang27"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"ziyang27"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"ziyang27":68}},{"path":"src/test/java/seedu/address/model/person/LastContactTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Colex2000"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"Colex2000"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-23"},{"lineNumber":4,"author":{"gitId":"Colex2000"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"Colex2000"},"content":"import static org.junit.jupiter.api.Assertions.assertNull;","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"Colex2000"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"Colex2000"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"Colex2000"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"Colex2000"},"content":"class LastContactTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"Colex2000"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"Colex2000"},"content":" void constructor_nullDateTime_throwsNullPointerException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"Colex2000"},"content":" assertThrows(NullPointerException.class, () -\u003e new LastContact(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"Colex2000"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"Colex2000"},"content":" void constructor_emptyDateTime_throwsNullPointerException() {","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"Colex2000"},"content":" String validDateTime \u003d \"\";","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"Colex2000"},"content":" LastContact lastContact \u003d new LastContact(validDateTime);","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"Colex2000"},"content":" assertEquals(validDateTime, lastContact.toString());","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"Colex2000"},"content":" assertNull(lastContact.getDateTime());","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"Colex2000"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"Colex2000"},"content":" void constructor_invalidDateTime_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"Colex2000"},"content":" String invalidDateTime \u003d \"32-12-2020 2500\"; // This date and time are invalid","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"Colex2000"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new LastContact(invalidDateTime));","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"Colex2000"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"Colex2000"},"content":" void constructor_validDateTime_createsLastContact() {","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"Colex2000"},"content":" String validDateTime \u003d \"05-03-2024 0600\";","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"Colex2000"},"content":" LastContact lastContact \u003d new LastContact(validDateTime);","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"Colex2000"},"content":" assertEquals(validDateTime, lastContact.toString());","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"Colex2000"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"Colex2000"},"content":" void isValidDateTime() {","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"Colex2000"},"content":" // Invalid date formats","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"Colex2000"},"content":" assertFalse(LastContact.isValidDateTime(\"31-02-2020 2400\")); // Invalid date and time","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"Colex2000"},"content":" assertFalse(LastContact.isValidDateTime(\"05-13-2024 0600\")); // Invalid month","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"Colex2000"},"content":" assertTrue(LastContact.isValidDateTime(\"\")); // Empty string","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"Colex2000"},"content":" // Valid date format","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"Colex2000"},"content":" assertTrue(LastContact.isValidDateTime(\"05-03-2024 0600\")); // Valid date and time","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"Colex2000"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":51,"author":{"gitId":"Colex2000"},"content":" void compareTo() {","lastModifiedDate":"2024-03-23"},{"lineNumber":52,"author":{"gitId":"Colex2000"},"content":" LastContact lastcontact1 \u003d new LastContact(\"05-12-2024 0600\");","lastModifiedDate":"2024-03-23"},{"lineNumber":53,"author":{"gitId":"Colex2000"},"content":" LastContact lastcontact2 \u003d new LastContact(\"05-12-2024 0600\");","lastModifiedDate":"2024-03-23"},{"lineNumber":54,"author":{"gitId":"Colex2000"},"content":" LastContact lastcontact3 \u003d new LastContact(\"05-12-2024 0500\");","lastModifiedDate":"2024-03-23"},{"lineNumber":55,"author":{"gitId":"Colex2000"},"content":" assertEquals(0, lastcontact1.compareTo(lastcontact2));","lastModifiedDate":"2024-03-23"},{"lineNumber":56,"author":{"gitId":"Colex2000"},"content":" assertEquals(1, lastcontact1.compareTo(lastcontact3));","lastModifiedDate":"2024-03-23"},{"lineNumber":57,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":58,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":59,"author":{"gitId":"Colex2000"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"Colex2000"},"content":" void getDateTimeString() {","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"Colex2000"},"content":" String validDateTime \u003d \"05-03-2024 0600\";","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"Colex2000"},"content":" LastContact lastContact \u003d new LastContact(validDateTime);","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"Colex2000"},"content":" assertEquals(validDateTime, lastContact.toString());","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"Colex2000"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"Colex2000"},"content":" void equals() {","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"Colex2000"},"content":" LastContact lastContact1 \u003d new LastContact(\"05-03-2024 0600\");","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"Colex2000"},"content":" LastContact lastContact2 \u003d new LastContact(\"05-03-2024 0600\");","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"Colex2000"},"content":" LastContact lastContact3 \u003d new LastContact(\"06-03-2024 0600\");","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"Colex2000"},"content":" assertFalse(lastContact1.equals(null)); // test null return false","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"Colex2000"},"content":" assertEquals(lastContact1, lastContact2); // Same date and time","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"Colex2000"},"content":" assertFalse(lastContact1.equals(lastContact3)); // Different date and time","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"Colex2000"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"Colex2000"},"content":" void hashCodeTest() {","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"Colex2000"},"content":" LastContact lastContact1 \u003d new LastContact(\"05-03-2024 0600\");","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"Colex2000"},"content":" LastContact lastContact2 \u003d new LastContact(\"05-03-2024 0600\");","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"Colex2000"},"content":" assertEquals(lastContact1.hashCode(), lastContact2.hashCode()); // Same hash code for same date and time","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"Colex2000"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"Colex2000":84}},{"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":"-"},"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":"-"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").withPhone(\"12345\")","lastModifiedDate":"2017-06-12"},{"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":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":86,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"SimHanKiong":1,"-":85}},{"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":"tanyunchao"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-17"},{"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_ADDRESS_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":9,"author":{"gitId":"tanyunchao"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_LAST_CONTACT_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19"},{"lineNumber":13,"author":{"gitId":"tanyunchao"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_UPCOMING_BOB;","lastModifiedDate":"2024-03-17"},{"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":"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":"-"},"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":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTags().remove(0));","lastModifiedDate":"2019-03-23"},{"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":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2020-12-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" .withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18"},{"lineNumber":53,"author":{"gitId":"-"},"content":" editedBob \u003d new PersonBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19"},{"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 phone -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2018-04-19"},{"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 email -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2018-04-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18"},{"lineNumber":94,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"tanyunchao"},"content":" // different upcoming -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"tanyunchao"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withUpcoming(VALID_UPCOMING_BOB).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"tanyunchao"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"tanyunchao"},"content":" // different lastcontact -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"tanyunchao"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withLastContact(VALID_LAST_CONTACT_BOB).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"tanyunchao"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":104,"author":{"gitId":"tanyunchao"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"tanyunchao"},"content":" public void hashCode_samePersonFields_sameHashCode() {","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"tanyunchao"},"content":" // same object -\u003e same hash code","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"tanyunchao"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"tanyunchao"},"content":" assertEquals(ALICE.hashCode(), aliceCopy.hashCode());","lastModifiedDate":"2024-03-17"},{"lineNumber":109,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"tanyunchao"},"content":" // different object, same fields -\u003e same hash code","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"tanyunchao"},"content":" Person otherAliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"tanyunchao"},"content":" assertEquals(ALICE.hashCode(), otherAliceCopy.hashCode());","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"tanyunchao"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"tanyunchao"},"content":" public void hashCode_differentPersonFields_differentHashCode() {","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"tanyunchao"},"content":" // different person -\u003e different hash code","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"tanyunchao"},"content":" assertNotEquals(ALICE.hashCode(), BOB.hashCode());","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"tanyunchao"},"content":" // different name -\u003e different hash code","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"tanyunchao"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(\"Different Name\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"tanyunchao"},"content":" assertNotEquals(ALICE.hashCode(), editedAlice.hashCode());","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"tanyunchao"},"content":" // different phone -\u003e different hash code","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"tanyunchao"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(\"12345678\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"tanyunchao"},"content":" assertNotEquals(ALICE.hashCode(), editedAlice.hashCode());","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"tanyunchao"},"content":" // different email -\u003e different hash code","lastModifiedDate":"2024-03-17"},{"lineNumber":129,"author":{"gitId":"tanyunchao"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(\"different@example.com\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":130,"author":{"gitId":"tanyunchao"},"content":" assertNotEquals(ALICE.hashCode(), editedAlice.hashCode());","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"tanyunchao"},"content":" // different address -\u003e different hash code","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"tanyunchao"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(\"Different Address\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"tanyunchao"},"content":" assertNotEquals(ALICE.hashCode(), editedAlice.hashCode());","lastModifiedDate":"2024-03-17"},{"lineNumber":135,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":136,"author":{"gitId":"tanyunchao"},"content":" // different tags -\u003e different hash code","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"tanyunchao"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(\"differentTag\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":138,"author":{"gitId":"tanyunchao"},"content":" assertNotEquals(ALICE.hashCode(), editedAlice.hashCode());","lastModifiedDate":"2024-03-17"},{"lineNumber":139,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":140,"author":{"gitId":"tanyunchao"},"content":" // different upcoming -\u003e different hash code","lastModifiedDate":"2024-03-17"},{"lineNumber":141,"author":{"gitId":"tanyunchao"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withUpcoming(\"01-01-2024 1200\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"tanyunchao"},"content":" assertNotEquals(ALICE.hashCode(), editedAlice.hashCode());","lastModifiedDate":"2024-03-17"},{"lineNumber":143,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":144,"author":{"gitId":"tanyunchao"},"content":" // different lastcontact -\u003e same hash code (lastcontact not included in hashCode)","lastModifiedDate":"2024-03-17"},{"lineNumber":145,"author":{"gitId":"tanyunchao"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withLastContact(\"01-01-2023 1200\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"tanyunchao"},"content":" assertEquals(ALICE.hashCode(), editedAlice.hashCode());","lastModifiedDate":"2024-03-17"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":149,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2019-02-23"},{"lineNumber":152,"author":{"gitId":"Colex2000"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", address\u003d\" + ALICE.getAddress() + \", tags\u003d\" + ALICE.getTags()","lastModifiedDate":"2024-03-13"},{"lineNumber":153,"author":{"gitId":"tanyunchao"},"content":" + \", upcoming\u003d\" + ALICE.getUpcoming()","lastModifiedDate":"2024-03-17"},{"lineNumber":154,"author":{"gitId":"tanyunchao"},"content":" + \", lastcontact\u003d\" + ALICE.getLastcontact() + \"}\";","lastModifiedDate":"2024-03-17"},{"lineNumber":155,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"Colex2000":1,"tanyunchao":56,"-":100}},{"path":"src/test/java/seedu/address/model/person/UpcomingTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"tanyunchao"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"tanyunchao"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"tanyunchao"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"tanyunchao"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"tanyunchao"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"tanyunchao"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"tanyunchao"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"tanyunchao"},"content":"public class UpcomingTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"tanyunchao"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"tanyunchao"},"content":" public void constructor_validDateTimeString_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"tanyunchao"},"content":" // Valid date and time string","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"tanyunchao"},"content":" Upcoming upcoming \u003d new Upcoming(\"01-01-2022 1200\");","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"tanyunchao"},"content":" assertTrue(Upcoming.isValidUpcoming(\"01-01-2022 1200\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"tanyunchao"},"content":" assertTrue(Upcoming.isValidUpcoming(\"\")); // Empty string is considered valid","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"tanyunchao"},"content":" assertEquals(\"01-01-2022 1200\", upcoming.toString());","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"tanyunchao"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"tanyunchao"},"content":" public void constructor_invalidDateTimeString_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"tanyunchao"},"content":" // Invalid date and time string","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"tanyunchao"},"content":" String invalidDateTime \u003d \"2022-01-01 12:00\"; // Invalid format","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"tanyunchao"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Upcoming(invalidDateTime));","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"tanyunchao"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"tanyunchao"},"content":" public void compareTo_sameDateTime_returnsZero() {","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"tanyunchao"},"content":" Upcoming upcoming1 \u003d new Upcoming(\"01-04-2023 1500\");","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"tanyunchao"},"content":" Upcoming upcoming2 \u003d new Upcoming(\"01-04-2023 1500\");","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"tanyunchao"},"content":" assertEquals(0, upcoming1.compareTo(upcoming2));","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"tanyunchao"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"tanyunchao"},"content":" public void compareTo_laterDateTime_returnsPositive() {","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"tanyunchao"},"content":" Upcoming upcoming1 \u003d new Upcoming(\"01-04-2023 1500\");","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"tanyunchao"},"content":" Upcoming upcoming2 \u003d new Upcoming(\"01-04-2023 1400\");","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"tanyunchao"},"content":" assertTrue(upcoming1.compareTo(upcoming2) \u003e 0);","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"tanyunchao"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"tanyunchao"},"content":" public void compareTo_earlierDateTime_returnsNegative() {","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"tanyunchao"},"content":" Upcoming upcoming1 \u003d new Upcoming(\"01-04-2023 1400\");","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"tanyunchao"},"content":" Upcoming upcoming2 \u003d new Upcoming(\"01-04-2023 1500\");","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"tanyunchao"},"content":" assertTrue(upcoming1.compareTo(upcoming2) \u003c 0);","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"tanyunchao"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"tanyunchao"},"content":" public void compareTo_nullUpcoming_throws() {","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"tanyunchao"},"content":" Upcoming upcoming1 \u003d new Upcoming(\"01-04-2023 1500\");","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"tanyunchao"},"content":" Upcoming upcoming2 \u003d new Upcoming(\"\");","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"tanyunchao"},"content":" // Assuming you want to throw an exception when comparing with a null Upcoming","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"tanyunchao"},"content":" try {","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"tanyunchao"},"content":" upcoming1.compareTo(upcoming2);","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"tanyunchao"},"content":" // Fail the test if no exception is thrown","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"tanyunchao"},"content":" throw new AssertionError(\"Expected NullPointerException\");","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"tanyunchao"},"content":" } catch (NullPointerException e) {","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"tanyunchao"},"content":" // Expected exception, test passed","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"tanyunchao"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"tanyunchao"},"content":" public void compareTo_differentDayMonthYear_returnsCorrectValue() {","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"tanyunchao"},"content":" Upcoming upcoming1 \u003d new Upcoming(\"01-04-2023 1500\");","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"tanyunchao"},"content":" Upcoming upcoming2 \u003d new Upcoming(\"02-05-2024 1600\");","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"tanyunchao"},"content":" assertTrue(upcoming1.compareTo(upcoming2) \u003c 0);","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"tanyunchao"},"content":" assertTrue(upcoming2.compareTo(upcoming1) \u003e 0);","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"tanyunchao"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"tanyunchao"},"content":" public void equals_sameObject_returnsTrue() {","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"tanyunchao"},"content":" Upcoming upcoming \u003d new Upcoming(\"01-01-2022 1200\");","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"tanyunchao"},"content":" assertTrue(upcoming.equals(upcoming));","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"tanyunchao"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"tanyunchao"},"content":" public void equals_nullObject_returnsFalse() {","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"tanyunchao"},"content":" Upcoming upcoming \u003d new Upcoming(\"01-01-2022 1200\");","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"tanyunchao"},"content":" assertFalse(upcoming.equals(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":88,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"tanyunchao"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":90,"author":{"gitId":"tanyunchao"},"content":" public void equals_differentClass_returnsFalse() {","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"tanyunchao"},"content":" Upcoming upcoming \u003d new Upcoming(\"01-01-2022 1200\");","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"tanyunchao"},"content":" assertFalse(upcoming.equals(\"01-01-2022 1200\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"tanyunchao"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"tanyunchao"},"content":" public void equals_sameDateTime_returnsTrue() {","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"tanyunchao"},"content":" Upcoming upcoming1 \u003d new Upcoming(\"01-01-2022 1200\");","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"tanyunchao"},"content":" Upcoming upcoming2 \u003d new Upcoming(\"01-01-2022 1200\");","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"tanyunchao"},"content":" assertTrue(upcoming1.equals(upcoming2));","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"tanyunchao"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"tanyunchao"},"content":" public void equals_differentDateTime_returnsFalse() {","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"tanyunchao"},"content":" Upcoming upcoming1 \u003d new Upcoming(\"01-01-2022 1200\");","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"tanyunchao"},"content":" Upcoming upcoming2 \u003d new Upcoming(\"02-01-2022 1200\");","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"tanyunchao"},"content":" assertFalse(upcoming1.equals(upcoming2));","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":109,"author":{"gitId":"tanyunchao"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"tanyunchao"},"content":" public void equals_differentUpcomingStatus_returnsFalse() {","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"tanyunchao"},"content":" Upcoming upcoming1 \u003d new Upcoming(\"\");","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"tanyunchao"},"content":" Upcoming upcoming2 \u003d new Upcoming(\"01-04-2023 1500\");","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"tanyunchao"},"content":" assertFalse(upcoming1.equals(upcoming2));","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"tanyunchao"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"tanyunchao"},"content":" public void equals_oneUpcomingEmpty_returnsFalse() {","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"tanyunchao"},"content":" Upcoming upcoming1 \u003d new Upcoming(\"\");","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"tanyunchao"},"content":" Upcoming upcoming2 \u003d new Upcoming(\"01-04-2023 1500\");","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"tanyunchao"},"content":" assertFalse(upcoming1.equals(upcoming2));","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"tanyunchao"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"tanyunchao"},"content":" public void equals_bothUpcomingEmpty_returnsTrue() {","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"tanyunchao"},"content":" Upcoming upcoming1 \u003d new Upcoming(\"\");","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"tanyunchao"},"content":" Upcoming upcoming2 \u003d new Upcoming(\"\");","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"tanyunchao"},"content":" assertTrue(upcoming1.equals(upcoming2));","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":129,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":130,"author":{"gitId":"tanyunchao"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"tanyunchao"},"content":" public void hashCode_sameDateTime_returnsSameHashCode() {","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"tanyunchao"},"content":" Upcoming upcoming1 \u003d new Upcoming(\"01-01-2022 1200\");","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"tanyunchao"},"content":" Upcoming upcoming2 \u003d new Upcoming(\"01-01-2022 1200\");","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"tanyunchao"},"content":" assertEquals(upcoming1.hashCode(), upcoming2.hashCode());","lastModifiedDate":"2024-03-17"},{"lineNumber":135,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":136,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"tanyunchao"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":138,"author":{"gitId":"tanyunchao"},"content":" public void hashCode_differentDateTime_returnsDifferentHashCode() {","lastModifiedDate":"2024-03-17"},{"lineNumber":139,"author":{"gitId":"tanyunchao"},"content":" Upcoming upcoming1 \u003d new Upcoming(\"01-01-2022 1200\");","lastModifiedDate":"2024-03-17"},{"lineNumber":140,"author":{"gitId":"tanyunchao"},"content":" Upcoming upcoming2 \u003d new Upcoming(\"02-01-2022 1200\");","lastModifiedDate":"2024-03-17"},{"lineNumber":141,"author":{"gitId":"tanyunchao"},"content":" assertNotEquals(upcoming1.hashCode(), upcoming2.hashCode());","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":143,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":144,"author":{"gitId":"tanyunchao"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":145,"author":{"gitId":"tanyunchao"},"content":" public void toString_hasUpcoming_returnsFormattedDateTime() {","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"tanyunchao"},"content":" Upcoming upcoming \u003d new Upcoming(\"01-01-2022 1200\");","lastModifiedDate":"2024-03-17"},{"lineNumber":147,"author":{"gitId":"tanyunchao"},"content":" String expected \u003d \"01-01-2022 1200\";","lastModifiedDate":"2024-03-17"},{"lineNumber":148,"author":{"gitId":"tanyunchao"},"content":" assertEquals(expected, upcoming.toString());","lastModifiedDate":"2024-03-17"},{"lineNumber":149,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":150,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":151,"author":{"gitId":"tanyunchao"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":152,"author":{"gitId":"tanyunchao"},"content":" public void toString_noUpcoming_returnsEmptyString() {","lastModifiedDate":"2024-03-17"},{"lineNumber":153,"author":{"gitId":"tanyunchao"},"content":" Upcoming upcoming \u003d new Upcoming(\"\");","lastModifiedDate":"2024-03-17"},{"lineNumber":154,"author":{"gitId":"tanyunchao"},"content":" String expected \u003d \"\";","lastModifiedDate":"2024-03-17"},{"lineNumber":155,"author":{"gitId":"tanyunchao"},"content":" assertEquals(expected, upcoming.toString());","lastModifiedDate":"2024-03-17"},{"lineNumber":156,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":157,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":158,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":159,"author":{"gitId":"tanyunchao"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"tanyunchao":159}},{"path":"src/test/java/seedu/address/model/tag/TagsAndFoundPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package seedu.address.model.tag;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"import java.util.List;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.testutil.TagBuilder;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":"public class TagsAndFoundPredicateTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" public void equals() {","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":" List\u003cString\u003e firstTagList \u003d List.of(\"first\");","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" List\u003cString\u003e secondTagList \u003d List.of(\"first\", \"second\");","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" TagsAndFoundPredicate firstPredicate \u003d preparePredicate(firstTagList);","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":" TagsAndFoundPredicate secondPredicate \u003d preparePredicate(secondTagList);","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" TagsAndFoundPredicate firstPredicateCopy \u003d preparePredicate(firstTagList);","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"SimHanKiong"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"SimHanKiong"},"content":" public void test_tagFound_returnsTrue() {","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"SimHanKiong"},"content":" TagsAndFoundPredicate predicate \u003d preparePredicate(List.of(\"car\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"SimHanKiong"},"content":" assertTrue(predicate.test(new PersonBuilder().withTags(\"car\").build()));","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"SimHanKiong"},"content":" predicate \u003d preparePredicate(List.of(\"car\", \"health\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"SimHanKiong"},"content":" assertTrue(predicate.test(new PersonBuilder().withTags(\"car\", \"health\").build()));","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"SimHanKiong"},"content":" predicate \u003d preparePredicate(List.of(\"car\", \"health\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"SimHanKiong"},"content":" assertTrue(predicate.test(new PersonBuilder().withTags(\"car\", \"health\", \"flight\").build()));","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"SimHanKiong"},"content":" predicate \u003d preparePredicate(List.of());","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"SimHanKiong"},"content":" assertTrue(predicate.test(new PersonBuilder().withTags(\"car\").build()));","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"SimHanKiong"},"content":" public void test_tagNotFound_returnsFalse() {","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"SimHanKiong"},"content":" TagsAndFoundPredicate predicate \u003d preparePredicate(List.of(\"motorcycle\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"SimHanKiong"},"content":" assertFalse(predicate.test(new PersonBuilder().withTags(\"car\", \"health\").build()));","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"SimHanKiong"},"content":" predicate \u003d preparePredicate(List.of(\"Car\", \"Health\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"SimHanKiong"},"content":" assertFalse(predicate.test(new PersonBuilder().withTags(\"car\", \"health\").build()));","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"SimHanKiong"},"content":" predicate \u003d preparePredicate(List.of(\"car\", \"health\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"SimHanKiong"},"content":" assertFalse(predicate.test(new PersonBuilder().withTags(\"health\").build()));","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"SimHanKiong"},"content":" predicate \u003d preparePredicate(List.of(\"car\", \"health\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"SimHanKiong"},"content":" assertFalse(predicate.test(new PersonBuilder().withTags(\"car\", \"covid\").build()));","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"SimHanKiong"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"SimHanKiong"},"content":" List\u003cString\u003e tagList \u003d List.of(\"tag1\", \"tag2\");","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"SimHanKiong"},"content":" TagsAndFoundPredicate predicate \u003d preparePredicate(tagList);","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"SimHanKiong"},"content":" String expected \u003d TagsAndFoundPredicate.class.getCanonicalName() + \"{tags\u003d\" + TagBuilder.build(tagList) + \"}\";","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"SimHanKiong"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"SimHanKiong"},"content":" * Parses {@code userInput} into a {@code TagsAndFoundPredicate}.","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"SimHanKiong"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"SimHanKiong"},"content":" private TagsAndFoundPredicate preparePredicate(List\u003cString\u003e tagList) {","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"SimHanKiong"},"content":" return new TagsAndFoundPredicate(TagBuilder.build(tagList));","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"SimHanKiong":78}},{"path":"src/test/java/seedu/address/model/tag/TagsOrFoundPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package seedu.address.model.tag;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"import java.util.List;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.testutil.TagBuilder;","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":"public class TagsOrFoundPredicateTest {","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":" public void equals() {","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"SimHanKiong"},"content":" List\u003cString\u003e firstTagList \u003d List.of(\"first\");","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"SimHanKiong"},"content":" List\u003cString\u003e secondTagList \u003d List.of(\"first\", \"second\");","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"SimHanKiong"},"content":" TagsOrFoundPredicate firstPredicate \u003d preparePredicate(firstTagList);","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"SimHanKiong"},"content":" TagsOrFoundPredicate secondPredicate \u003d preparePredicate(secondTagList);","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"SimHanKiong"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"SimHanKiong"},"content":" TagsOrFoundPredicate firstPredicateCopy \u003d preparePredicate(firstTagList);","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"SimHanKiong"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"SimHanKiong"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"SimHanKiong"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"SimHanKiong"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"SimHanKiong"},"content":" public void test_tagFound_returnsTrue() {","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"SimHanKiong"},"content":" TagsOrFoundPredicate predicate \u003d preparePredicate(List.of(\"car\"));","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"SimHanKiong"},"content":" assertTrue(predicate.test(new PersonBuilder().withTags(\"car\").build()));","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"SimHanKiong"},"content":" predicate \u003d preparePredicate(List.of(\"car\", \"health\"));","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"SimHanKiong"},"content":" assertTrue(predicate.test(new PersonBuilder().withTags(\"health\").build()));","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"SimHanKiong"},"content":" predicate \u003d preparePredicate(List.of(\"car\", \"health\"));","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"SimHanKiong"},"content":" assertTrue(predicate.test(new PersonBuilder().withTags(\"car\", \"covid\").build()));","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"SimHanKiong"},"content":" predicate \u003d preparePredicate(List.of(\"car\", \"health\"));","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"SimHanKiong"},"content":" assertTrue(predicate.test(new PersonBuilder().withTags(\"car\", \"health\").build()));","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"SimHanKiong"},"content":" public void test_tagNotFound_returnsFalse() {","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"SimHanKiong"},"content":" TagsOrFoundPredicate predicate \u003d preparePredicate(List.of());","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"SimHanKiong"},"content":" assertFalse(predicate.test(new PersonBuilder().withTags(\"car\").build()));","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"SimHanKiong"},"content":" predicate \u003d preparePredicate(List.of(\"motorcycle\"));","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"SimHanKiong"},"content":" assertFalse(predicate.test(new PersonBuilder().withTags(\"car\", \"health\").build()));","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"SimHanKiong"},"content":" predicate \u003d preparePredicate(List.of(\"Car\", \"Health\", \"CAR\", \"HEAlth\"));","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"SimHanKiong"},"content":" assertFalse(predicate.test(new PersonBuilder().withTags(\"car\", \"health\").build()));","lastModifiedDate":"2024-03-14"},{"lineNumber":58,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"SimHanKiong"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":61,"author":{"gitId":"SimHanKiong"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-14"},{"lineNumber":62,"author":{"gitId":"SimHanKiong"},"content":" List\u003cString\u003e tagList \u003d List.of(\"tag1\", \"tag2\");","lastModifiedDate":"2024-03-14"},{"lineNumber":63,"author":{"gitId":"SimHanKiong"},"content":" TagsOrFoundPredicate predicate \u003d preparePredicate(tagList);","lastModifiedDate":"2024-03-14"},{"lineNumber":64,"author":{"gitId":"SimHanKiong"},"content":" String expected \u003d TagsOrFoundPredicate.class.getCanonicalName() + \"{tags\u003d\" + TagBuilder.build(tagList) + \"}\";","lastModifiedDate":"2024-03-14"},{"lineNumber":65,"author":{"gitId":"SimHanKiong"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2024-03-14"},{"lineNumber":66,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":67,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"SimHanKiong"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":69,"author":{"gitId":"SimHanKiong"},"content":" * Parses {@code userInput} into a {@code TagsOrFoundPredicate}.","lastModifiedDate":"2024-03-14"},{"lineNumber":70,"author":{"gitId":"SimHanKiong"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":71,"author":{"gitId":"SimHanKiong"},"content":" private TagsOrFoundPredicate preparePredicate(List\u003cString\u003e tagList) {","lastModifiedDate":"2024-03-14"},{"lineNumber":72,"author":{"gitId":"SimHanKiong"},"content":" return new TagsOrFoundPredicate(TagBuilder.build(tagList));","lastModifiedDate":"2024-03-14"},{"lineNumber":73,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":74,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":75,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"SimHanKiong":75}},{"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":"Colex2000"},"content":"import seedu.address.model.person.LastContact;","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"tanyunchao"},"content":"import seedu.address.model.person.Upcoming;","lastModifiedDate":"2024-03-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":"-"},"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":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"tanyunchao"},"content":" private static final String INVALID_UPCOMING \u003d \"12-12-2024\";","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"Colex2000"},"content":" private static final String INVALID_LASTCONTACT \u003d \"05-09-20000 1920\";","lastModifiedDate":"2024-03-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":"Colex2000"},"content":" private static final String VALID_LASTCONTACT \u003d BENSON.getLastcontact().toString();","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"tanyunchao"},"content":" private static final String VALID_UPCOMING \u003d BENSON.getUpcoming().toString();","lastModifiedDate":"2024-03-15"},{"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":"tanyunchao"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"tanyunchao"},"content":" VALID_TAGS, VALID_UPCOMING, VALID_LASTCONTACT);","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-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 toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"Colex2000"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"tanyunchao"},"content":" VALID_TAGS, VALID_UPCOMING, VALID_LASTCONTACT);","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-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 toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"tanyunchao"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-15"},{"lineNumber":66,"author":{"gitId":"tanyunchao"},"content":" VALID_TAGS, VALID_UPCOMING, VALID_LASTCONTACT);","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"Colex2000"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-13"},{"lineNumber":74,"author":{"gitId":"tanyunchao"},"content":" VALID_TAGS, VALID_UPCOMING, VALID_LASTCONTACT);","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","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_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"tanyunchao"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-15"},{"lineNumber":82,"author":{"gitId":"tanyunchao"},"content":" VALID_TAGS, VALID_UPCOMING, VALID_LASTCONTACT);","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.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":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"tanyunchao"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null, VALID_ADDRESS,","lastModifiedDate":"2024-03-17"},{"lineNumber":90,"author":{"gitId":"tanyunchao"},"content":" VALID_TAGS, VALID_UPCOMING, VALID_LASTCONTACT);","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"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_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"tanyunchao"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_ADDRESS,","lastModifiedDate":"2024-03-15"},{"lineNumber":98,"author":{"gitId":"tanyunchao"},"content":" VALID_TAGS, VALID_UPCOMING, VALID_LASTCONTACT);","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"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_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"tanyunchao"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, null, VALID_TAGS,","lastModifiedDate":"2024-03-15"},{"lineNumber":106,"author":{"gitId":"tanyunchao"},"content":" VALID_UPCOMING, VALID_LASTCONTACT);","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"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 toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13"},{"lineNumber":115,"author":{"gitId":"tanyunchao"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-15"},{"lineNumber":116,"author":{"gitId":"tanyunchao"},"content":" invalidTags, VALID_UPCOMING, VALID_LASTCONTACT);","lastModifiedDate":"2024-03-17"},{"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":"tanyunchao"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":121,"author":{"gitId":"tanyunchao"},"content":" public void toModelType_invalidUpcoming_throwsIllegalValueException() {","lastModifiedDate":"2024-03-15"},{"lineNumber":122,"author":{"gitId":"tanyunchao"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-15"},{"lineNumber":123,"author":{"gitId":"tanyunchao"},"content":" VALID_TAGS, INVALID_UPCOMING, VALID_LASTCONTACT);","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"tanyunchao"},"content":" String expectedMessage \u003d Upcoming.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-15"},{"lineNumber":125,"author":{"gitId":"tanyunchao"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"tanyunchao"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":129,"author":{"gitId":"tanyunchao"},"content":" public void toModelType_nullUpcoming_throwsIllegalValueException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":130,"author":{"gitId":"tanyunchao"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"tanyunchao"},"content":" VALID_TAGS, null, VALID_LASTCONTACT);","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"tanyunchao"},"content":" String expectedMessage \u003d String.format(JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"tanyunchao"},"content":" Upcoming.class.getSimpleName());","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"tanyunchao"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-15"},{"lineNumber":135,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":136,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"Colex2000"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":138,"author":{"gitId":"Colex2000"},"content":" public void toModelType_invalidLastContact_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-13"},{"lineNumber":139,"author":{"gitId":"Colex2000"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-13"},{"lineNumber":140,"author":{"gitId":"tanyunchao"},"content":" VALID_TAGS, VALID_UPCOMING, INVALID_LASTCONTACT);","lastModifiedDate":"2024-03-17"},{"lineNumber":141,"author":{"gitId":"Colex2000"},"content":" String expectedMessage \u003d String.format(LastContact.MESSAGE_CONSTRAINTS, INVALID_LASTCONTACT);","lastModifiedDate":"2024-03-13"},{"lineNumber":142,"author":{"gitId":"Colex2000"},"content":" assertThrows(IllegalArgumentException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-13"},{"lineNumber":143,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":144,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":145,"author":{"gitId":"Colex2000"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":146,"author":{"gitId":"Colex2000"},"content":" public void toModelType_nullLastContact_throwsIllegalValueException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":147,"author":{"gitId":"Colex2000"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-16"},{"lineNumber":148,"author":{"gitId":"tanyunchao"},"content":" VALID_TAGS, VALID_UPCOMING, null);","lastModifiedDate":"2024-03-17"},{"lineNumber":149,"author":{"gitId":"Colex2000"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, LastContact.class.getSimpleName());","lastModifiedDate":"2024-03-16"},{"lineNumber":150,"author":{"gitId":"Colex2000"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-16"},{"lineNumber":151,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":152,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":153,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"Colex2000":19,"tanyunchao":38,"-":96}},{"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.Address;","lastModifiedDate":"2017-12-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-12-23"},{"lineNumber":10,"author":{"gitId":"Colex2000"},"content":"import seedu.address.model.person.LastContact;","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-12-23"},{"lineNumber":14,"author":{"gitId":"tanyunchao"},"content":"import seedu.address.model.person.Upcoming;","lastModifiedDate":"2024-03-15"},{"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":"Colex2000"},"content":" this.descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" descriptor.setName(person.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" descriptor.setPhone(person.getPhone());","lastModifiedDate":"2017-06-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" descriptor.setAddress(person.getAddress());","lastModifiedDate":"2017-06-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" descriptor.setTags(person.getTags());","lastModifiedDate":"2017-06-21"},{"lineNumber":42,"author":{"gitId":"tanyunchao"},"content":" descriptor.setUpcoming(person.getUpcoming());","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"Colex2000"},"content":" descriptor.setLastContact(person.getLastcontact());","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":" * Sets the {@code Phone} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2017-12-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Sets the {@code Email} 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 withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":66,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","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 Address} 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 withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" descriptor.setAddress(new Address(address));","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":"Colex2000"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":79,"author":{"gitId":"Colex2000"},"content":" * Sets the {@code LastContact} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-13"},{"lineNumber":80,"author":{"gitId":"Colex2000"},"content":" * @param lastcontact the dateTime string provided.","lastModifiedDate":"2024-03-13"},{"lineNumber":81,"author":{"gitId":"Colex2000"},"content":" * @return the EditPersonDescriptorBuilder object.","lastModifiedDate":"2024-03-13"},{"lineNumber":82,"author":{"gitId":"Colex2000"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":83,"author":{"gitId":"Colex2000"},"content":" public EditPersonDescriptorBuilder withLastContact(String lastcontact) {","lastModifiedDate":"2024-03-13"},{"lineNumber":84,"author":{"gitId":"Colex2000"},"content":" descriptor.setLastContact(new LastContact(lastcontact));","lastModifiedDate":"2024-03-13"},{"lineNumber":85,"author":{"gitId":"Colex2000"},"content":" return this;","lastModifiedDate":"2024-03-13"},{"lineNumber":86,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":87,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":89,"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":90,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15"},{"lineNumber":93,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2017-12-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2017-12-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":98,"author":{"gitId":"tanyunchao"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":99,"author":{"gitId":"tanyunchao"},"content":" * Sets the {@code Upcoming} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-15"},{"lineNumber":100,"author":{"gitId":"tanyunchao"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":101,"author":{"gitId":"tanyunchao"},"content":" public EditPersonDescriptorBuilder withUpcoming(String upcoming) {","lastModifiedDate":"2024-03-15"},{"lineNumber":102,"author":{"gitId":"tanyunchao"},"content":" descriptor.setUpcoming(new Upcoming(upcoming));","lastModifiedDate":"2024-03-15"},{"lineNumber":103,"author":{"gitId":"tanyunchao"},"content":" return this;","lastModifiedDate":"2024-03-15"},{"lineNumber":104,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":105,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05"},{"lineNumber":107,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":109,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"Colex2000":13,"tanyunchao":10,"-":86}},{"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":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18"},{"lineNumber":8,"author":{"gitId":"Colex2000"},"content":"import seedu.address.model.person.LastContact;","lastModifiedDate":"2024-03-13"},{"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":"tanyunchao"},"content":"import seedu.address.model.person.Upcoming;","lastModifiedDate":"2024-03-15"},{"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":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05"},{"lineNumber":25,"author":{"gitId":"tanyunchao"},"content":" public static final String DEFAULT_UPCOMING \u003d \"12-12-2024 1200\";","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"Colex2000"},"content":" public static final String DEFAULT_LASTCONTACT \u003d \"13-03-2024 0600\";","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20"},{"lineNumber":33,"author":{"gitId":"tanyunchao"},"content":" private Upcoming upcoming;","lastModifiedDate":"2024-03-15"},{"lineNumber":34,"author":{"gitId":"Colex2000"},"content":" private LastContact lastContact;","lastModifiedDate":"2024-03-13"},{"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":"tanyunchao"},"content":" upcoming \u003d new Upcoming(DEFAULT_UPCOMING);","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"Colex2000"},"content":" lastContact \u003d new LastContact(DEFAULT_LASTCONTACT);","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20"},{"lineNumber":58,"author":{"gitId":"tanyunchao"},"content":" upcoming \u003d personToCopy.getUpcoming();","lastModifiedDate":"2024-03-15"},{"lineNumber":59,"author":{"gitId":"Colex2000"},"content":" lastContact \u003d personToCopy.getLastcontact();","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":71,"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":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String ... tags) {","lastModifiedDate":"2017-08-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2017-12-20"},{"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":"2017-07-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":82,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of 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 withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","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 Email} 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 withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","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":"tanyunchao"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":103,"author":{"gitId":"tanyunchao"},"content":" * Sets the {@code Upcoming} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-15"},{"lineNumber":104,"author":{"gitId":"tanyunchao"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":105,"author":{"gitId":"tanyunchao"},"content":" public PersonBuilder withUpcoming(String upcoming) {","lastModifiedDate":"2024-03-15"},{"lineNumber":106,"author":{"gitId":"tanyunchao"},"content":" this.upcoming \u003d new Upcoming(upcoming);","lastModifiedDate":"2024-03-15"},{"lineNumber":107,"author":{"gitId":"tanyunchao"},"content":" return this;","lastModifiedDate":"2024-03-15"},{"lineNumber":108,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":109,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":110,"author":{"gitId":"Colex2000"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":111,"author":{"gitId":"Colex2000"},"content":" * Sets the {@code LastContact} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-13"},{"lineNumber":112,"author":{"gitId":"Colex2000"},"content":" * @param lastContact consists of a string of date and time","lastModifiedDate":"2024-03-13"},{"lineNumber":113,"author":{"gitId":"Colex2000"},"content":" * @return the person we are building","lastModifiedDate":"2024-03-13"},{"lineNumber":114,"author":{"gitId":"Colex2000"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":115,"author":{"gitId":"Colex2000"},"content":" public PersonBuilder withLastContact(String lastContact) {","lastModifiedDate":"2024-03-13"},{"lineNumber":116,"author":{"gitId":"Colex2000"},"content":" this.lastContact \u003d new LastContact(lastContact);","lastModifiedDate":"2024-03-13"},{"lineNumber":117,"author":{"gitId":"Colex2000"},"content":" return this;","lastModifiedDate":"2024-03-13"},{"lineNumber":118,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":119,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05"},{"lineNumber":121,"author":{"gitId":"tanyunchao"},"content":" return new Person(name, phone, email, address, tags, upcoming, lastContact);","lastModifiedDate":"2024-03-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":{"Colex2000":15,"tanyunchao":14,"-":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":"Colex2000"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_LASTCONTACT;","lastModifiedDate":"2024-03-13"},{"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":"tanyunchao"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_UPCOMING;","lastModifiedDate":"2024-03-15"},{"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":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2018-03-26"},{"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":"-"},"content":" sb.append(PREFIX_PHONE + person.getPhone().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":38,"author":{"gitId":"-"},"content":" sb.append(PREFIX_ADDRESS + person.getAddress().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" person.getTags().stream().forEach(","lastModifiedDate":"2017-05-09"},{"lineNumber":40,"author":{"gitId":"tanyunchao"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \"));","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"tanyunchao"},"content":" sb.append(PREFIX_UPCOMING + person.getUpcoming().toString() + \" \");","lastModifiedDate":"2024-03-15"},{"lineNumber":42,"author":{"gitId":"Colex2000"},"content":" sb.append(PREFIX_LASTCONTACT + person.getLastcontact().toString() + \" \");","lastModifiedDate":"2024-03-19"},{"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":"tanyunchao"},"content":" * Returns the part of command string for the given","lastModifiedDate":"2024-03-15"},{"lineNumber":48,"author":{"gitId":"tanyunchao"},"content":" * {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2024-03-15"},{"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":"tanyunchao"},"content":" sb.append(PREFIX_TAG).append(\" \");","lastModifiedDate":"2024-03-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":"tanyunchao"},"content":" descriptor.getUpcoming()","lastModifiedDate":"2024-03-15"},{"lineNumber":65,"author":{"gitId":"Colex2000"},"content":" .ifPresent(upcoming -\u003e sb.append(PREFIX_UPCOMING).append(upcoming).append(\" \"));","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"Colex2000"},"content":" descriptor.getLastcontact()","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"Colex2000"},"content":" .ifPresent(lastContact -\u003e sb.append(PREFIX_LASTCONTACT)","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"Colex2000"},"content":" .append(lastContact).append(\" \"));","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05"}],"authorContributionMap":{"Colex2000":6,"tanyunchao":7,"-":58}},{"path":"src/test/java/seedu/address/testutil/SampleDataUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Colex2000"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"Colex2000"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"Colex2000"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"Colex2000"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"Colex2000"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"Colex2000"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"Colex2000"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"Colex2000"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"Colex2000"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"Colex2000"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"Colex2000"},"content":"public class SampleDataUtilTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"Colex2000"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"Colex2000"},"content":" public void getSamplePersons_correctlyCreatesSamplePersons() {","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"Colex2000"},"content":" Person[] samplePersons \u003d SampleDataUtil.getSamplePersons();","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"Colex2000"},"content":" assertNotNull(samplePersons);","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"Colex2000"},"content":" assertEquals(6, samplePersons.length); // Assuming there are 6 sample persons","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"Colex2000"},"content":" // Check details of the first sample person","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"Colex2000"},"content":" Person firstPerson \u003d samplePersons[0];","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"Colex2000"},"content":" assertEquals(\"Alex Yeoh\", firstPerson.getName().toString());","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"Colex2000"},"content":" assertEquals(\"87438807\", firstPerson.getPhone().toString());","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"Colex2000"},"content":" assertEquals(\"alexyeoh@example.com\", firstPerson.getEmail().toString());","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"Colex2000"},"content":" assertEquals(\"Blk 30 Geylang Street 29, #06-40\", firstPerson.getAddress().toString());","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"Colex2000"},"content":" assertTrue(firstPerson.getTags().contains(new Tag(\"friends\")));","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"Colex2000"},"content":" assertEquals(SampleDataUtil.DUMMY_LASTCONTACT, firstPerson.getLastcontact());","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"Colex2000"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"Colex2000"},"content":" public void getSampleAddressBook_correctlyPopulatesSampleAddressBook() {","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"Colex2000"},"content":" ReadOnlyAddressBook sampleAb \u003d SampleDataUtil.getSampleAddressBook();","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"Colex2000"},"content":" assertNotNull(sampleAb);","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"Colex2000"},"content":" // The address book should have the same number of persons as the sample data","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"Colex2000"},"content":" assertEquals(6, sampleAb.getPersonList().size());","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"Colex2000"},"content":" // Verify some details of the first person in the address book","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"Colex2000"},"content":" Person firstPersonInAddressBook \u003d sampleAb.getPersonList().get(0);","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"Colex2000"},"content":" assertEquals(\"Alex Yeoh\", firstPersonInAddressBook.getName().toString());","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"Colex2000"},"content":" assertEquals(\"87438807\", firstPersonInAddressBook.getPhone().toString());","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"Colex2000"},"content":" assertEquals(\"alexyeoh@example.com\", firstPersonInAddressBook.getEmail().toString());","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"Colex2000"},"content":" assertEquals(\"Blk 30 Geylang Street 29, #06-40\", firstPersonInAddressBook.getAddress().toString());","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"Colex2000"},"content":" assertTrue(firstPersonInAddressBook.getTags().contains(new Tag(\"friends\")));","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"Colex2000"},"content":" assertEquals(SampleDataUtil.DUMMY_LASTCONTACT, firstPersonInAddressBook.getLastcontact());","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"Colex2000"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"Colex2000"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"Colex2000"},"content":" public void getTagSet_createsCorrectTagSet() {","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"Colex2000"},"content":" Set\u003cTag\u003e tags \u003d SampleDataUtil.getTagSet(\"friends\", \"colleagues\");","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"Colex2000"},"content":" assertNotNull(tags);","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"Colex2000"},"content":" assertEquals(2, tags.size());","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"Colex2000"},"content":" assertTrue(tags.contains(new Tag(\"friends\")));","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"Colex2000"},"content":" assertTrue(tags.contains(new Tag(\"colleagues\")));","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"Colex2000"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"Colex2000"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"Colex2000":60}},{"path":"src/test/java/seedu/address/testutil/TagBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"SimHanKiong"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"SimHanKiong"},"content":"import java.util.List;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"SimHanKiong"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"SimHanKiong"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"SimHanKiong"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"SimHanKiong"},"content":"/**","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"SimHanKiong"},"content":" * A utility to help build a set of tags","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"SimHanKiong"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"SimHanKiong"},"content":"public class TagBuilder {","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"SimHanKiong"},"content":" public static Set\u003cTag\u003e build(List\u003cString\u003e tagList) {","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"SimHanKiong"},"content":" return tagList.stream().map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"SimHanKiong"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"SimHanKiong"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"SimHanKiong"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"SimHanKiong":18}},{"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":"tanyunchao"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_UPCOMING_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"tanyunchao"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_UPCOMING_BOB;","lastModifiedDate":"2024-03-15"},{"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":"-"},"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":"tanyunchao"},"content":" .withTags(\"car\")","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"tanyunchao"},"content":" .withUpcoming(\"01-05-2024 1500\").build();","lastModifiedDate":"2024-03-17"},{"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":"tanyunchao"},"content":" .withTags(\"death\", \"car\")","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"tanyunchao"},"content":" .withUpcoming(\"06-06-2024 1600\").build();","lastModifiedDate":"2024-03-17"},{"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":"tanyunchao"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\").withTags(\"health\")","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"tanyunchao"},"content":" .withUpcoming(\"05-05-2024 1234\").withTags(\"health\").build();","lastModifiedDate":"2024-03-17"},{"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":"SimHanKiong"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\")","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"SimHanKiong"},"content":" .withTags(\"covid\", \"flight\", \"disability\").build();","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\").build();","lastModifiedDate":"2017-04-05"},{"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":"-"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\").build();","lastModifiedDate":"2017-04-05"},{"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":"-"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\").build();","lastModifiedDate":"2017-04-05"},{"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":"-"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\").build();","lastModifiedDate":"2017-04-05"},{"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":"-"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\").build();","lastModifiedDate":"2017-04-05"},{"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":"tanyunchao"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withTags(VALID_TAG_FRIEND)","lastModifiedDate":"2024-03-15"},{"lineNumber":60,"author":{"gitId":"tanyunchao"},"content":" .withUpcoming(VALID_UPCOMING_AMY)","lastModifiedDate":"2024-03-15"},{"lineNumber":61,"author":{"gitId":"tanyunchao"},"content":" .build();","lastModifiedDate":"2024-03-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2018-01-10"},{"lineNumber":63,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2017-09-21"},{"lineNumber":64,"author":{"gitId":"tanyunchao"},"content":" .withUpcoming(VALID_UPCOMING_BOB)","lastModifiedDate":"2024-03-15"},{"lineNumber":65,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2017-09-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21"},{"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":{"SimHanKiong":2,"tanyunchao":12,"-":71}}] diff --git a/AY2324S2-CS2103T-F13-2_tp_master/commits.json b/AY2324S2-CS2103T-F13-2_tp_master/commits.json index 3b7df72e..b58f9313 100644 --- a/AY2324S2-CS2103T-F13-2_tp_master/commits.json +++ b/AY2324S2-CS2103T-F13-2_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"SimHanKiong":[{"date":"2024-03-03","commitResults":[{"hash":"43ed111253679062e94fa672dbf06472036159a7","isMergeCommit":true,"messageTitle":"Merge pull request #12 from ziyang27/updating-AboutUs-page","messageBody":"Update AboutUs page with roles, links, and my own photo","fileTypesAndContributionMap":{}},{"hash":"08f3796cd552191b7e9ab4a69df135a172229a6c","isMergeCommit":true,"messageTitle":"Merge pull request #15 from ziyang27/updating-README-page","messageBody":"Update readme page","fileTypesAndContributionMap":{}},{"hash":"660434233cc4285402b19c98d246a2270588398b","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":10}}},{"hash":"0eef02dd9453968999e4a154bcc4eef0939054a0","isMergeCommit":true,"messageTitle":"Merge pull request #16 from ziyang27/branch-update-UG","messageBody":"Add the select feature description in the user guide","fileTypesAndContributionMap":{}},{"hash":"cf4fe7a047b05ff84e6accc4d67363fbc5056858","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":11}}},{"hash":"ab70f3daaa8f0bf0d3cfb7e32cf06b0bab6331bb","isMergeCommit":true,"messageTitle":"Merge pull request #21 from ziyang27/branch-update-DG","messageBody":"Update developer guide based on our product","fileTypesAndContributionMap":{}}]},{"date":"2024-03-04","commitResults":[{"hash":"d0f34f027fbd1dfd1045c74ac18de30ab6bdaa29","isMergeCommit":false,"messageTitle":"Add picture to AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"02b3c5adf5a77dd497047d02440ebe74bb903f7e","isMergeCommit":false,"messageTitle":"Add find by tag feature to UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":24,"deletions":9}}},{"hash":"6e120c97d4e84183a451e516c2e288218b47b9ad","isMergeCommit":false,"messageTitle":"Add tagging user stories and uses cases to DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":78,"deletions":16}}},{"hash":"c338510182777bcb57e185e36357e144e4484ea9","isMergeCommit":false,"messageTitle":"Fix typo in README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-11","commitResults":[{"hash":"366e00e7f56550cfaba40804ae4d62cd6ecd23f8","isMergeCommit":false,"messageTitle":"Add find by exact tag feature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":142,"deletions":0}}},{"hash":"f268820472a03e237523336f88c2319a4da79d9e","isMergeCommit":false,"messageTitle":"Fix style issues in find tag feature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"other":{"insertions":4,"deletions":4}}}]},{"date":"2024-03-14","commitResults":[{"hash":"7b794781d98a2efaead5caa520e1362df1486356","isMergeCommit":false,"messageTitle":"Add find by one tag feature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":144,"deletions":2},"test-code":{"insertions":276,"deletions":10}}},{"hash":"b2c29d41b8bab13a8fcadd26038694deaaad42c1","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-FindByOneTag","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e5ef216514e5fcc981deebb6fbdc38135cfeddcc","isMergeCommit":true,"messageTitle":"Merge pull request #50 from ziyang27/branch-add-select","messageBody":"Add select command","fileTypesAndContributionMap":{}},{"hash":"a621381ae284be924d1e07644e02c0a324037f75","isMergeCommit":false,"messageTitle":"Increase test coverage","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":12,"deletions":12}}},{"hash":"fcf1cd6772a90cb41498e8e124763b0a4cdab4b0","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-FindByOneTag","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-15","commitResults":[{"hash":"1b30b3dba119b4993c60b1de3e9aa5a3e8205c78","isMergeCommit":false,"messageTitle":"Delete redundant find tag feature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":135}}},{"hash":"f639493cac4f534cbd77df7d894c197448847804","isMergeCommit":false,"messageTitle":"Fix bug in AddressBook parser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":4}}},{"hash":"5e77ba31146b31215c1947cc3db2abae706c6331","isMergeCommit":true,"messageTitle":"Merge pull request #55 from SimHanKiong/branch-FindByOneTag","messageBody":"Add find by one tag feature","fileTypesAndContributionMap":{}}]},{"date":"2024-03-17","commitResults":[{"hash":"9b36f3023890b89755fe063558b0d02aa2d3c19c","isMergeCommit":true,"messageTitle":"Merge pull request #56 from tanyunchao/add_upcoming_field","messageBody":"Add upcoming field","fileTypesAndContributionMap":{}}]},{"date":"2024-03-18","commitResults":[{"hash":"4af2a25721560b5f588a3745b2a16f50a753f93f","isMergeCommit":false,"messageTitle":"Add find by all tags feature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":142,"deletions":0},"test-code":{"insertions":246,"deletions":4}}},{"hash":"a5f5eaf3f052bd86bdbd8b1670a49fd7f32c4c4c","isMergeCommit":true,"messageTitle":"Merge pull request #59 from ziyang27/branch-minor-touchup","messageBody":"Add identifier to differentiate the two dates in PersonCard","fileTypesAndContributionMap":{}}]},{"date":"2024-03-19","commitResults":[{"hash":"7796fb00468442f09ce3ba79825dd273aad0d768","isMergeCommit":true,"messageTitle":"Merge pull request #63 from Colex2000/update-uml","messageBody":"Update UML for LastContact field","fileTypesAndContributionMap":{}},{"hash":"fb369f53ee71cfe7513155c0f83a938fd2ceb2cd","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into yc/update-uml","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4130435390012db063b379ea08d0ecbea413d9bd","isMergeCommit":true,"messageTitle":"Merge pull request #64 from tanyunchao/yc/update-uml","messageBody":"Add upcoming field to ModelClassDiagram","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"6ba54a680169a252513baa84415fb6e7d44e4e91","isMergeCommit":false,"messageTitle":"Update UML diagrams for predicate","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":1},"test-code":{"insertions":6,"deletions":6}}}]},{"date":"2024-03-24","commitResults":[{"hash":"37e33e524924618589c5817c19e8aa489528dad7","isMergeCommit":true,"messageTitle":"Merge pull request #68 from Colex2000/add-last-contact-list","messageBody":"Change the last contact command to show all last contacted clients","fileTypesAndContributionMap":{}}]}],"ziyang27":[{"date":"2024-02-24","commitResults":[{"hash":"841126e514771c7799adf6add5b4e9b897e2f057","isMergeCommit":true,"messageTitle":"Merge pull request #1 from AY2324S2-CS2103T-F13-2/switch-docs-to-markbind","messageBody":"Switch docs to markbind","fileTypesAndContributionMap":{}},{"hash":"79dddc147247ad7afadbc038ac51939161b4dc54","isMergeCommit":false,"messageTitle":"Update default.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-02-29","commitResults":[{"hash":"d8755a8ce0da501b1213d00586f3fbc988e3ef47","isMergeCommit":false,"messageTitle":"Update AboutUs page with roles, links, and my own photo","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":206,"deletions":29}}},{"hash":"0f94b95eb964d474e4efc61816c15fe1c8cd24f4","isMergeCommit":false,"messageTitle":"Update the link of the GitHub Actions build status badge","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"fc06af5416f91c258a5734870b425b3969e8c03e","isMergeCommit":false,"messageTitle":"Update all contents to match our project","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":10}}},{"hash":"e5f95669cb1e29ce8dc43e8a64698f60e2f57b44","isMergeCommit":false,"messageTitle":"Remove trailing whitespace","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}},{"hash":"7ba95e086f805b8393873c339def0093d0ed41d5","isMergeCommit":false,"messageTitle":"Add the select feature description in the user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":39,"deletions":21}}},{"hash":"002a6cbf36aefb1ad0ac92619d0248b5877b9e32","isMergeCommit":false,"messageTitle":"Update developer guide based on our product","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":41,"deletions":11}}}]},{"date":"2024-03-04","commitResults":[{"hash":"ac2334941551de42831912c93de2ca183ce75cd4","isMergeCommit":true,"messageTitle":"Merge pull request #26 from SimHanKiong/branch-AboutUs","messageBody":"Add picture to AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"12c2e2ba38a7ab5b20169f6f196bf2f8f0b27475","isMergeCommit":true,"messageTitle":"Merge pull request #27 from SimHanKiong/branch-DeveloperGuide","messageBody":"Add tagging user stories and uses cases to DeveloperGuide.md","fileTypesAndContributionMap":{}},{"hash":"dfda9e8caaba03d1280edaef60658fd0cb54a3b5","isMergeCommit":true,"messageTitle":"Merge pull request #28 from SimHanKiong/branch-ReadMe","messageBody":"Fix typo in README.md","fileTypesAndContributionMap":{}},{"hash":"875de1405eb9edc4240e43e9f95acab0744c0416","isMergeCommit":true,"messageTitle":"Merge pull request #29 from SimHanKiong/branch-UserGuide","messageBody":"Add find by tag feature to UserGuide.md","fileTypesAndContributionMap":{}}]},{"date":"2024-03-06","commitResults":[{"hash":"a9ead0a04ab5f66bfaa10371dc2372f8d300c215","isMergeCommit":true,"messageTitle":"Merge pull request #30 from Colex2000/master","messageBody":"Add profile pic and update AboutUs doc","fileTypesAndContributionMap":{}},{"hash":"1e6f73b9ddceb32ee9cc22c0c9a4c9505f47bfd0","isMergeCommit":true,"messageTitle":"Merge pull request #31 from Colex2000/updateUserGuide","messageBody":"Add tagging last contacted feature in UG and update DG use cases.","fileTypesAndContributionMap":{}}]},{"date":"2024-03-07","commitResults":[{"hash":"2a759fdb6c9ceb3488cba088311185a8767f6f90","isMergeCommit":true,"messageTitle":"Merge pull request #33 from tanyunchao/update-about-us-page","messageBody":"Update team member image in AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"598d6b9da90ec74a02314ef50d5fa7ac32e56bb7","isMergeCommit":true,"messageTitle":"Merge pull request #36 from tanyunchao/DG-update","messageBody":"Add use case for finding upcoming contacts with appointments","fileTypesAndContributionMap":{}},{"hash":"32f44a7d341aa4409e7f10af4f0a0731bece3cdc","isMergeCommit":true,"messageTitle":"Merge pull request #34 from tanyunchao/update-ui-mockup","messageBody":"Update UI image","fileTypesAndContributionMap":{}},{"hash":"bbb9fdea07c00f6bb884f09565460db8f64888f4","isMergeCommit":false,"messageTitle":"Update title and links","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"ef65f93f9e8103bf79a5b8dbfeee47cac034994e","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-update-doc","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8e9260816c390518e8684814cbced3f02555f61f","isMergeCommit":false,"messageTitle":"Update user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":4}}},{"hash":"66da74961e87a31081407ccbd75e158f2b898a98","isMergeCommit":false,"messageTitle":"Add NFRs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":0}}},{"hash":"90cce9a7cd1e1e4f32e96100dfa55f18ed74e7f2","isMergeCommit":false,"messageTitle":"Add MSS for three new use cases","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":39,"deletions":12}}}]},{"date":"2024-03-11","commitResults":[{"hash":"978cea6d05055139272f9f58a06e8f74a4c73fc7","isMergeCommit":true,"messageTitle":"Merge pull request #44 from SimHanKiong/branch-FindByExactTag","messageBody":"Add find by exact tag feature","fileTypesAndContributionMap":{}}]},{"date":"2024-03-12","commitResults":[{"hash":"a4d5d4d7b2f5199f2ac750b7ae28cd7e6f778a79","isMergeCommit":false,"messageTitle":"Create a new select command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":69,"deletions":0}}},{"hash":"ec336a2bc5090576c3ff90e37ff2bd22bb2248cb","isMergeCommit":false,"messageTitle":"Hook SelectCommand into the application","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":33,"deletions":0}}},{"hash":"d9806658cf378e4173a4ddee731e51d928693932","isMergeCommit":false,"messageTitle":"Update SelectCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":1}}},{"hash":"ec8e3e36d250b7e07bd17850f9775d77c2e9a607","isMergeCommit":false,"messageTitle":"Update SelectCommand to show only selected person in filtered list","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":45,"deletions":1}}}]},{"date":"2024-03-13","commitResults":[{"hash":"dc23ef67e55f5bfbd06e6585d998b57d3736a062","isMergeCommit":false,"messageTitle":"Add tests for SelectCommand","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":125,"deletions":0}}}]},{"date":"2024-03-14","commitResults":[{"hash":"7ca0659b46f592e71f9671cc275acd65f60474ae","isMergeCommit":false,"messageTitle":"Add tests for IsSamePersonPredicate","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":68,"deletions":0}}},{"hash":"013ba6942e907fd4330049a5e3ac7e46b06c2667","isMergeCommit":false,"messageTitle":"Add tests for SelectCommandParser","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":32,"deletions":0}}},{"hash":"ac4f189efb14bfb1cb244dd69a1ea25360e0e7f4","isMergeCommit":false,"messageTitle":"Add test for select command in AddressBookParser","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":8,"deletions":0}}}]},{"date":"2024-03-17","commitResults":[{"hash":"247a1eea853b2636abffa9d13691833cc9410a08","isMergeCommit":false,"messageTitle":"Add identifier to differentiate the two dates in PersonCard","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-18","commitResults":[{"hash":"f73e5dc107450c17231df6cdb17666c68734de2e","isMergeCommit":true,"messageTitle":"Merge pull request #60 from SimHanKiong/branch-FindByAllTags","messageBody":"Add find by all tags feature","fileTypesAndContributionMap":{}}]},{"date":"2024-03-19","commitResults":[{"hash":"ea791b37f0c16a8ef5a5072b2cff803afd2e3c78","isMergeCommit":false,"messageTitle":"Include text for filtering in Model component","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":0}}},{"hash":"63135e8a540986566ce083f39b56e4eaed9294cc","isMergeCommit":false,"messageTitle":"Add UML diagram","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":21,"deletions":1}}}]},{"date":"2024-03-20","commitResults":[{"hash":"09fb9737a7c9fa5935128a9dc35700c3a994857a","isMergeCommit":true,"messageTitle":"Merge pull request #66 from SimHanKiong/branch-UMLDiagrams","messageBody":"Update UML diagrams for predicate","tags":["v1.2"],"fileTypesAndContributionMap":{}}]},{"date":"2024-03-23","commitResults":[{"hash":"2ba1f77656bf9d579c83d827e053080e3d0361fa","isMergeCommit":true,"messageTitle":"Merge pull request #70 from Colex2000/uml-diagram-update","messageBody":"Update UML diagram","fileTypesAndContributionMap":{}}]}],"Colex2000":[{"date":"2024-03-06","commitResults":[{"hash":"61c3c0deada9a9ae25e05db3bed4797ab06bd4e2","isMergeCommit":false,"messageTitle":"Update docs to include profile pic","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"220819cdf0008a2c449827f8d42cf01a27079ff9","isMergeCommit":false,"messageTitle":"Add tagging last contacted feature in UserGuide. Update DeveloperGuide use cases.","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":48,"deletions":0}}}]},{"date":"2024-03-07","commitResults":[{"hash":"f4b0bbd0bf8eef5a7e3d7cb73d29c873b1dcb750","isMergeCommit":true,"messageTitle":"Merge pull request #37 from ziyang27/branch-update-doc","messageBody":"Update documentations","fileTypesAndContributionMap":{}}]},{"date":"2024-03-12","commitResults":[{"hash":"25a61b860fc7b218e2e4521f6beb22ef279b12d2","isMergeCommit":false,"messageTitle":"Add lastcontact command","messageBody":"This commit introduces \"lastcontact\" command.\nHowever, unable to tag at the moment.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":64,"deletions":0}}},{"hash":"fb721f422c7a5ff797b1ecf73915fe734c568bb6","isMergeCommit":false,"messageTitle":"Update lastcontact command to tag on a profile.","messageBody":"- Add last contacted field to Person model\n- Add GUI view of the last contacted field\n","fileTypesAndContributionMap":{"functional-code":{"insertions":181,"deletions":34}}},{"hash":"ad9ae522d88762be7e9eb3582b7beed166554617","isMergeCommit":false,"messageTitle":"Update UserGuide according to changed command format","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}}]},{"date":"2024-03-13","commitResults":[{"hash":"2727355b37f6b0f994d04041722ecc554424f854","isMergeCommit":false,"messageTitle":"Fix bug for add command parsing fail","messageBody":"- Previously add command fails due to last contact parsing.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":30,"deletions":23}}},{"hash":"bbc1f501596017a61aef5831d8ef2e515f4eb5e1","isMergeCommit":false,"messageTitle":"Refactor code according to style check gradle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":38,"deletions":25}}},{"hash":"7219f7a12c663d78740f51c87f071438b81a185e","isMergeCommit":false,"messageTitle":"Refactor code according to style check gradle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":9}}},{"hash":"ed93480fb170af004dd2880939bcdb3c207d15e2","isMergeCommit":false,"messageTitle":"Fix bug for failing Junit test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":67,"deletions":22}}},{"hash":"5e5d452e379bc2d8e9ac4a9d5606b499de1313c0","isMergeCommit":false,"messageTitle":"Fix bug for failing Junit test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":0}}},{"hash":"55414855c5e73dfbea05a6b54fbebc597973777c","isMergeCommit":false,"messageTitle":"Fix bugs for failing Junit test","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":1},"test-code":{"insertions":35,"deletions":19}}},{"hash":"386ba9ce5f31d4690640c42772f34ff8f2b06a04","isMergeCommit":false,"messageTitle":"Refactor and add Javadoc comment.","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":9,"deletions":3}}}]},{"date":"2024-03-15","commitResults":[{"hash":"f334ab46d973eb36e54ff51e24d9b05900055b91","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-F13-2/tp into addLastContactedCommand","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"709d0e6c1d49c77608338770bb3e1967b39dbf27","isMergeCommit":false,"messageTitle":"Add test for LastContactCommand classes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":25,"deletions":3},"test-code":{"insertions":126,"deletions":0}}},{"hash":"5c2cfb0b254271179bffa5ae57c04a7e673b3516","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into addLastContactedCommand","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"7fa751d0d79d7836670d6a95be1304705cb802cb","isMergeCommit":true,"messageTitle":"Resolve merge conflict","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b1e582ca1ce4d733c2fb5facb9b4f78d91579eb7","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/addLastContactedCommand\u0027 into addLastContactedCommand","messageBody":"# Conflicts:\n#\tsrc/test/data/JsonSerializableAddressBookTest/typicalPersonsAddressBook.json\n#\tsrc/test/java/seedu/address/testutil/TypicalPersons.java\n","fileTypesAndContributionMap":{}},{"hash":"15085aceef422a677949d368ffbab07d5593c500","isMergeCommit":false,"messageTitle":"Refactor according to style check","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":2}}}]},{"date":"2024-03-16","commitResults":[{"hash":"50ff872eac1e5bd09e8536acd664b7dc32a6b730","isMergeCommit":false,"messageTitle":"Update userguide for lastcontact usage","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":3}}},{"hash":"dc21e919c4f3be5bf5cdab8f9fd0a0f170ffbb87","isMergeCommit":false,"messageTitle":"Add test for methods in SampleDataUtil class","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":60,"deletions":0}}},{"hash":"84e43654888139c8a08753fb72bdd965e675aa1a","isMergeCommit":false,"messageTitle":"Refactor the order of imports","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"35124461a173c6234f9deaed604488676e67735c","isMergeCommit":false,"messageTitle":"Add test to provide more test coverage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":2},"test-code":{"insertions":88,"deletions":0}}},{"hash":"edb5e80ae25e7cf288496269c4b0f748de8dca07","isMergeCommit":false,"messageTitle":"Add test for LastContact equals method for null case","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":0}}}]},{"date":"2024-03-18","commitResults":[{"hash":"5ab03d2dedd4ad02c592b2721b13be9e93e7a813","isMergeCommit":false,"messageTitle":"Update edit command to edit lastcontact field","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":23,"deletions":11},"test-code":{"insertions":56,"deletions":8}}},{"hash":"c8ddcd4a8204c4e6b9a9c952e0fcea3f99f99860","isMergeCommit":false,"messageTitle":"Fix indentation issue for the import","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-19","commitResults":[{"hash":"fc1eb6186bc95c1f471f7062874b9aa48e473e89","isMergeCommit":false,"messageTitle":"Refactor classes to achieve more harmonize code style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":4},"test-code":{"insertions":8,"deletions":7}}},{"hash":"24093581334708ac939593f25ffca2886efba49c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into edit-last-contact-field","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c3ab13f80699b8b6c6027f98196edb7f96d20b4a","isMergeCommit":true,"messageTitle":"Merge pull request #61 from Colex2000/edit-last-contact-field","messageBody":"Update edit command to edit lastcontact field","fileTypesAndContributionMap":{}},{"hash":"e3a395edc33b1db7ca4dbac5a4684e346951bf37","isMergeCommit":true,"messageTitle":"Merge pull request #62 from ziyang27/branch-update-uml","messageBody":"Update Developer Guide","fileTypesAndContributionMap":{}},{"hash":"383bd10b999eeb0019d5022d3739ea8cf9a607d4","isMergeCommit":false,"messageTitle":"Update UML for LastContact field","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":0}}}]},{"date":"2024-03-22","commitResults":[{"hash":"e81c753c4420e5356bbeffd9329d4f0d03c8bbc5","isMergeCommit":false,"messageTitle":"Update lastcontact field to be empty if not added for add command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":9},"test-code":{"insertions":1,"deletions":1}}},{"hash":"284b9c20b4d672a1240c272c929cc0ace28b1724","isMergeCommit":false,"messageTitle":"Fix edit command for lastcontact field should not be empty","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":0}}},{"hash":"dc701902483907c1177a9796d6511227de68ba57","isMergeCommit":false,"messageTitle":"Fix edit command for upcoming field should not be empty","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":0}}},{"hash":"342c0bce5e6a3e5a13403ef896d828c98b99455f","isMergeCommit":false,"messageTitle":"Change last contact command to show filtered and sorted list","messageBody":"The list shown will be filtered by clients who have last contacted field.\nThe list will also be sorted according to the oldest datetime.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":71,"deletions":50},"test-code":{"insertions":4,"deletions":93}}},{"hash":"eda81ef6a4ba0f6634708d6c368a2b1301cdc524","isMergeCommit":false,"messageTitle":"Update comparator","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-23","commitResults":[{"hash":"9862513f097307435fcbe3ed37e9ac46bcae9a42","isMergeCommit":false,"messageTitle":"Fix bug select command not selecting from correct sorted list","messageBody":"- Add test for LastContactCommand\n- Delete LastContactParserTest because not parsing any arguments\n","fileTypesAndContributionMap":{"functional-code":{"insertions":69,"deletions":83},"other":{"insertions":4,"deletions":1},"test-code":{"insertions":45,"deletions":36}}},{"hash":"5c2634a26b1b5e9b3fc3711976d40de7794225a1","isMergeCommit":false,"messageTitle":"Update UML diagram","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":0}}},{"hash":"dd2020362cc417d01c4c1259aea49c327a37787a","isMergeCommit":false,"messageTitle":"Update UML diagram","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":0}}},{"hash":"a2450870e98cdb33265f7f387efec19356a83f8e","isMergeCommit":false,"messageTitle":"Update sorting comparator to remove null instance","messageBody":"- There will not be an instance of null since already filtered\n","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":13}}},{"hash":"cf9ae1219809177cecff40500e03f54e21cde70f","isMergeCommit":false,"messageTitle":"Add test for some classes","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":71,"deletions":5}}},{"hash":"88e5596eaf2eeef6c8865aa30b6f3b493eaa9998","isMergeCommit":false,"messageTitle":"Change ordering of imports for style check","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":3}}},{"hash":"3db8d71543ea1d2c32b6a96503a49bdd38ad78b9","isMergeCommit":false,"messageTitle":"Add test for parsing empty lastcontact field for edit command","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":12,"deletions":10}}},{"hash":"b3ec08a240da4422b670b283bff343a3bd72b234","isMergeCommit":false,"messageTitle":"Fix imports for checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":12,"deletions":2}}}]}],"tanyunchao":[{"date":"2024-03-07","commitResults":[{"hash":"cb798957fe6b17fec46b9287f57dfdd012b85437","isMergeCommit":false,"messageTitle":"Update team member image in AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"2cb0a093131dcdf225136cd1cbd153e582c9fc5c","isMergeCommit":false,"messageTitle":"Add upcoming command to UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":0}}},{"hash":"4f49775c069fcdba9ed0e4ad321c3363495a8ac4","isMergeCommit":false,"messageTitle":"Add use case for finding upcoming contacts with appointments","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":0}}},{"hash":"d2e90befdced0d1d30801822f7e51d7ea410451d","isMergeCommit":true,"messageTitle":"Merge branch \u0027tanyunchao-DG-update\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"42bf1825eb7c5d1dabb6950c5b79b4b1946f7ee4","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into DG-update","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d6209b9308bb89f9c23f26919fcad02d300eafd3","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into yc-ug-update","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a4270a722b8200ff13e70b067866fe1b0861166b","isMergeCommit":true,"messageTitle":"Merge pull request #35 from tanyunchao/yc-ug-update","messageBody":"Add upcoming command to UserGuide.md","fileTypesAndContributionMap":{}}]},{"date":"2024-03-12","commitResults":[{"hash":"dadab6c3688311ffb409f7ab677b3262f87c7cab","isMergeCommit":false,"messageTitle":"Add Upcoming class for handling appointment date and time","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":68,"deletions":0}}}]},{"date":"2024-03-15","commitResults":[{"hash":"6fbe2440aee0d307b144cabd7eb18c439c53a4f6","isMergeCommit":false,"messageTitle":"Refactor isValidDateTime to isValidUpcoming","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"c4e46cfaf9e8dd173ccc646dc5907479246c5e9e","isMergeCommit":false,"messageTitle":"Add PREFIX_UPCOMING constant","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0}}},{"hash":"7d269de521dc9744b00ec3d6110b63ff01843370","isMergeCommit":false,"messageTitle":"Add Upcoming field to Person class and parse Upcoming in ParserUtil","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":3}}},{"hash":"d97b9826b5ab59eb3208addcbdfa85a4db3eec47","isMergeCommit":false,"messageTitle":"Update person constructor in AddCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":1}}},{"hash":"1cc6fd091e3891cfe57f80d5349a66eb275b4dd6","isMergeCommit":false,"messageTitle":"Add upcoming field to EditCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":4}}},{"hash":"6eb68aa2523db013f648048b4a9ea5bd3a59a6df","isMergeCommit":false,"messageTitle":"Add upcoming tag to AddCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":1}}},{"hash":"ed7ed66096483d5ea2c0eca3095328be5cc2af62","isMergeCommit":false,"messageTitle":"Add support for upcoming field in EditCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":2}}},{"hash":"aded3a73ee439e73af9bae37dd115d7f254b241f","isMergeCommit":false,"messageTitle":"Add Upcoming field to JsonAdaptedPerson class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":2}}},{"hash":"657f7b5f8176c84bf2f72cf9fb63bc09d2ea5e8e","isMergeCommit":false,"messageTitle":"Fix Person constructors in SampleDataUtil","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":6}}},{"hash":"cc190c0068d61b65cfaac1681617b50435a15420","isMergeCommit":false,"messageTitle":"Add Upcoming field to PersonBuilder","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":14,"deletions":1}}},{"hash":"5dc3460cf9514e9a1d85a7a31fe130e4ec5ab83f","isMergeCommit":false,"messageTitle":"Add upcoming field to CommandTestUtil","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":2}}},{"hash":"1787f40dcfe2521fc5fceea9efc643804e7e274e","isMergeCommit":false,"messageTitle":"Add Upcoming field to EditPersonDescriptorBuilder","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":10,"deletions":0}}},{"hash":"79f7f96780a30c7c56ff6d173b5b840a67ca90f8","isMergeCommit":false,"messageTitle":"Add upcoming events to TypicalPersons test data","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":9,"deletions":4}}},{"hash":"8cd5b364e606f4b7c4892760bb9e05e09d8ee71c","isMergeCommit":false,"messageTitle":"Add PREFIX_UPCOMING to PersonUtil","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":0}}},{"hash":"aa41c7ef75f99bfdc45dd8b2ddef98a8a1b9165c","isMergeCommit":false,"messageTitle":"Updated JsonAdaptedPerson call in test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":12,"deletions":9}}},{"hash":"97109d91bad9f6bc51e5229e79baaabc92a79240","isMergeCommit":false,"messageTitle":"Added test for invalid Upcoming","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":0}}},{"hash":"def205915c588476f3be61d5eab3fcb1c7cae2bd","isMergeCommit":false,"messageTitle":"Style: remove additional EOF line","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"f37fe214cf53a0b4af9d490332d50dd7217e4b00","isMergeCommit":false,"messageTitle":"Style: shorten excessively long lines","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":2}}},{"hash":"f55f5c764db2ccc95f9500238c8770c635e8ee2c","isMergeCommit":false,"messageTitle":"Reorder imports and add javadocs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":1}}},{"hash":"6013eb352102fdf26f2cb7d0c99642675b9ff006","isMergeCommit":false,"messageTitle":"Update import order","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"cbd64c82356716fbd06e2c5b858e708dd5e27e83","isMergeCommit":false,"messageTitle":"Add docs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":27,"deletions":0}}},{"hash":"59140954d415041352702f90538bf29690be5ac7","isMergeCommit":false,"messageTitle":"Reodering of constants","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":8}}},{"hash":"239da3d8c475914aed2133bc29e96f0c3220f696","isMergeCommit":false,"messageTitle":"Fix whitespace diff","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"ef185e4beb09eb69f8de4bdfac17e54c6e12613a","isMergeCommit":false,"messageTitle":"Fix whitespace diff","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2}}},{"hash":"4928927bc14e79a4689ea05cdc48a2443da5efac","isMergeCommit":false,"messageTitle":"Style fix","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":9},"test-code":{"insertions":31,"deletions":22}}},{"hash":"de6bbd498457849ae8225473f953033e583b0538","isMergeCommit":false,"messageTitle":"Update UI components","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":0}}},{"hash":"2083455c7920c58b6ac79bb43c171d70d1524e30","isMergeCommit":false,"messageTitle":"Update logic manager test and command test util","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":1}}},{"hash":"5e494b2f8ee5ecaabf8c731f973fa6498053177a","isMergeCommit":false,"messageTitle":"Fix add command parsing bug","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-16","commitResults":[{"hash":"143f166d56a84fbbc19e2a378ddc63afe5df799b","isMergeCommit":false,"messageTitle":"Fix date format in CommandTestUtil.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"34f39d4f75487c372b1f7d2259593f50a3429b52","isMergeCommit":false,"messageTitle":"Add upcoming field to EditPersonDescriptor toString() method","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":1}}},{"hash":"a6195ed5da59a037a591529041b8c784e6bfd942","isMergeCommit":false,"messageTitle":"Add upcoming event description to AddCommandParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":2}}},{"hash":"094e5daaf138bf167fde5e44262645ad22c01d69","isMergeCommit":false,"messageTitle":"Fix parsing of Upcoming in AddCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"299422347e687a7d5e11b27f979f54adad677215","isMergeCommit":false,"messageTitle":"Add handling of empty string when no upcoming is planned","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":3}}},{"hash":"f60193faad562ce4a083b60753376850ce9f406c","isMergeCommit":false,"messageTitle":"Update add command message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"1f3207598549d6484604c3aa8516a04314574aca","isMergeCommit":true,"messageTitle":"Merge pull request #54 from Colex2000/addLastContactedCommand","messageBody":"Add last contacted command","fileTypesAndContributionMap":{}}]},{"date":"2024-03-17","commitResults":[{"hash":"52d8cb22ccf9cc7c4cc910574ea0af92c9e7ff5a","isMergeCommit":false,"messageTitle":"Add upcoming field to Person class functions","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":2}}},{"hash":"0c8cbcaf06047f3ea9a787cfab3e7630206b5f0a","isMergeCommit":false,"messageTitle":"Update messages displayed to display messages correctly","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"5c4a635f38a980c5f5418a642eecd00789ac5bb9","isMergeCommit":false,"messageTitle":"Fix upcoming initialisation bug and refactored magic words","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":1}}},{"hash":"fc1d891eaca3fac4aef67482f8f70e3d6503047e","isMergeCommit":false,"messageTitle":"Fix bug in output message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"e75a8bc8edfc9d441e7cfc5914d20a81765793dc","isMergeCommit":false,"messageTitle":"Removed unuse no upcoming message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2}}},{"hash":"d9349f238fd845ae218b3258e79f315773efd9ec","isMergeCommit":false,"messageTitle":"Updated upcoming equals comparisons","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":0}}},{"hash":"310beca68ee92863d59c6ca2c647922ee6b10851","isMergeCommit":false,"messageTitle":"Update tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"6d1eab714a80ca463daa9747785a9b3fee883af3","isMergeCommit":false,"messageTitle":"Updated person test string","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"4dffd7ece15f09ef9e751d62efd46f4e06b68d6d","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add_upcoming_field","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"14997f92c56293f91a4514cd6d4f310dd041bd25","isMergeCommit":false,"messageTitle":"Update last contact command to use updated person constructor","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"ffe746c93a58fe1ecbda8233f6736554eeed24a6","isMergeCommit":false,"messageTitle":"Fix style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":43,"deletions":25}}},{"hash":"63a4c9b4cd6d5f236ceda1224b39befc67336a10","isMergeCommit":false,"messageTitle":"Fix style","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":2}}},{"hash":"c3cc52d8d76103b3210697daf64402ba0e0370ef","isMergeCommit":false,"messageTitle":"Fix test due to change in person constructor","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":3}}},{"hash":"9e4831e8149ff8707d2c337b2cb497efa3533cfc","isMergeCommit":false,"messageTitle":"Fix test and implementation for JsonAdapterPerson","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":6},"test-code":{"insertions":1,"deletions":0}}},{"hash":"6d11936e4e80cffa25d365334b551638e96bd1ba","isMergeCommit":false,"messageTitle":"Fix style for test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":1}}},{"hash":"7f69461cc4ef6832c888b1940cfedda3aab0a6e3","isMergeCommit":false,"messageTitle":"Update messages to account for new fields","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"0038186a3c2e7727d198be176fbc1dbf23204d1d","isMergeCommit":false,"messageTitle":"Fix style for editCommand and its message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":4}}},{"hash":"5831bee48b4d903cb1cf478390361a38c80265b7","isMergeCommit":false,"messageTitle":"Add space append after tag when tags are not present","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"1c132b7de34cf05de5b14350c3c93845bcfde135","isMergeCommit":false,"messageTitle":"Fix whitespace style issue","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"34eb630b9853fa2d0f49280523db365f255e492d","isMergeCommit":false,"messageTitle":"Fix style check","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"db254f70d0d596e26521943397a66379049517dc","isMergeCommit":false,"messageTitle":"Update upcoming with standardised datetime format","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":9},"test-code":{"insertions":6,"deletions":6}}},{"hash":"949fad0c642793124ac65e9ead5005c5de3f7548","isMergeCommit":false,"messageTitle":"Add test for parseUpcoming in ParserUtil","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":26,"deletions":0}}},{"hash":"765b061ead7d42518ed413927630ba6354237c6e","isMergeCommit":false,"messageTitle":"Add test for upcoming","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":122,"deletions":0}}},{"hash":"68749b37a5603a2f3406c9c08313ea005cda5488","isMergeCommit":false,"messageTitle":"Update test with upcoming field","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":10,"deletions":21}}},{"hash":"ed0b7afbb40f4f9f2e4b10638dc9309e1f05dfb2","isMergeCommit":false,"messageTitle":"Add test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":14,"deletions":0}}},{"hash":"29d28269d3a5551a0e9d886b51fe8523c62a3711","isMergeCommit":false,"messageTitle":"Added test for null upcoming","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":8,"deletions":0}}},{"hash":"24a396295f837bca9adb31d28a813c7732f83d5e","isMergeCommit":false,"messageTitle":"Check style","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":2}}},{"hash":"fe4fc200576ba6593ddebdcec76d38a0ec7e5bac","isMergeCommit":false,"messageTitle":"Add even more tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":23,"deletions":0}}},{"hash":"e6f9fc9e0b75200768357cc7b876f5d809bbb214","isMergeCommit":false,"messageTitle":"Add test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":18,"deletions":0}}},{"hash":"c4e761d894c6c1495507d02f1e64446da154e74f","isMergeCommit":false,"messageTitle":"Add const","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":0}}},{"hash":"7239587db8c8361edda315b0abddd3a5b785187d","isMergeCommit":false,"messageTitle":"Add test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":10,"deletions":0}}},{"hash":"3a47672ab0b26c5d58503a0ba545998a172f990c","isMergeCommit":false,"messageTitle":"Check style","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"6e578d0744d94567464a60d35ab7be164fab4de0","isMergeCommit":false,"messageTitle":"Add test for hash","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":46,"deletions":0}}}]},{"date":"2024-03-19","commitResults":[{"hash":"28007118011f032ef5102b1707d81b4eb589a266","isMergeCommit":false,"messageTitle":"Add Upcoming class and update class relationships","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"SimHanKiong":{"docs":115,"functional-code":287,"test-code":521},"ziyang27":{"docs":356,"functional-code":154,"test-code":233},"Colex2000":{"docs":58,"functional-code":301,"test-code":386},"tanyunchao":{"docs":22,"functional-code":226,"test-code":353}},"authorContributionVariance":{"SimHanKiong":11821.572,"ziyang27":5935.0034,"Colex2000":11597.467,"tanyunchao":10136.258},"authorDisplayNameMap":{"SimHanKiong":"CS2103T-F13-2 SIM ..IONG","ziyang27":"CS2103T-F13-2 TAN ..YANG","Colex2000":"CS2103T-F13-2 TION.. YAO","tanyunchao":"CS2103T-F13-2 TAN ..CHAO"}} +{"authorDailyContributionsMap":{"SimHanKiong":[{"date":"2024-03-03","commitResults":[{"hash":"43ed111253679062e94fa672dbf06472036159a7","isMergeCommit":true,"messageTitle":"Merge pull request #12 from ziyang27/updating-AboutUs-page","messageBody":"Update AboutUs page with roles, links, and my own photo","fileTypesAndContributionMap":{}},{"hash":"08f3796cd552191b7e9ab4a69df135a172229a6c","isMergeCommit":true,"messageTitle":"Merge pull request #15 from ziyang27/updating-README-page","messageBody":"Update readme page","fileTypesAndContributionMap":{}},{"hash":"660434233cc4285402b19c98d246a2270588398b","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":10}}},{"hash":"0eef02dd9453968999e4a154bcc4eef0939054a0","isMergeCommit":true,"messageTitle":"Merge pull request #16 from ziyang27/branch-update-UG","messageBody":"Add the select feature description in the user guide","fileTypesAndContributionMap":{}},{"hash":"cf4fe7a047b05ff84e6accc4d67363fbc5056858","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":11}}},{"hash":"ab70f3daaa8f0bf0d3cfb7e32cf06b0bab6331bb","isMergeCommit":true,"messageTitle":"Merge pull request #21 from ziyang27/branch-update-DG","messageBody":"Update developer guide based on our product","fileTypesAndContributionMap":{}}]},{"date":"2024-03-04","commitResults":[{"hash":"d0f34f027fbd1dfd1045c74ac18de30ab6bdaa29","isMergeCommit":false,"messageTitle":"Add picture to AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"02b3c5adf5a77dd497047d02440ebe74bb903f7e","isMergeCommit":false,"messageTitle":"Add find by tag feature to UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":24,"deletions":9}}},{"hash":"6e120c97d4e84183a451e516c2e288218b47b9ad","isMergeCommit":false,"messageTitle":"Add tagging user stories and uses cases to DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":78,"deletions":16}}},{"hash":"c338510182777bcb57e185e36357e144e4484ea9","isMergeCommit":false,"messageTitle":"Fix typo in README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-11","commitResults":[{"hash":"366e00e7f56550cfaba40804ae4d62cd6ecd23f8","isMergeCommit":false,"messageTitle":"Add find by exact tag feature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":142,"deletions":0}}},{"hash":"f268820472a03e237523336f88c2319a4da79d9e","isMergeCommit":false,"messageTitle":"Fix style issues in find tag feature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"other":{"insertions":4,"deletions":4}}}]},{"date":"2024-03-14","commitResults":[{"hash":"7b794781d98a2efaead5caa520e1362df1486356","isMergeCommit":false,"messageTitle":"Add find by one tag feature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":144,"deletions":2},"test-code":{"insertions":276,"deletions":10}}},{"hash":"b2c29d41b8bab13a8fcadd26038694deaaad42c1","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-FindByOneTag","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e5ef216514e5fcc981deebb6fbdc38135cfeddcc","isMergeCommit":true,"messageTitle":"Merge pull request #50 from ziyang27/branch-add-select","messageBody":"Add select command","fileTypesAndContributionMap":{}},{"hash":"a621381ae284be924d1e07644e02c0a324037f75","isMergeCommit":false,"messageTitle":"Increase test coverage","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":12,"deletions":12}}},{"hash":"fcf1cd6772a90cb41498e8e124763b0a4cdab4b0","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-FindByOneTag","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-15","commitResults":[{"hash":"1b30b3dba119b4993c60b1de3e9aa5a3e8205c78","isMergeCommit":false,"messageTitle":"Delete redundant find tag feature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":135}}},{"hash":"f639493cac4f534cbd77df7d894c197448847804","isMergeCommit":false,"messageTitle":"Fix bug in AddressBook parser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":4}}},{"hash":"5e77ba31146b31215c1947cc3db2abae706c6331","isMergeCommit":true,"messageTitle":"Merge pull request #55 from SimHanKiong/branch-FindByOneTag","messageBody":"Add find by one tag feature","fileTypesAndContributionMap":{}}]},{"date":"2024-03-17","commitResults":[{"hash":"9b36f3023890b89755fe063558b0d02aa2d3c19c","isMergeCommit":true,"messageTitle":"Merge pull request #56 from tanyunchao/add_upcoming_field","messageBody":"Add upcoming field","fileTypesAndContributionMap":{}}]},{"date":"2024-03-18","commitResults":[{"hash":"4af2a25721560b5f588a3745b2a16f50a753f93f","isMergeCommit":false,"messageTitle":"Add find by all tags feature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":142,"deletions":0},"test-code":{"insertions":246,"deletions":4}}},{"hash":"a5f5eaf3f052bd86bdbd8b1670a49fd7f32c4c4c","isMergeCommit":true,"messageTitle":"Merge pull request #59 from ziyang27/branch-minor-touchup","messageBody":"Add identifier to differentiate the two dates in PersonCard","fileTypesAndContributionMap":{}}]},{"date":"2024-03-19","commitResults":[{"hash":"7796fb00468442f09ce3ba79825dd273aad0d768","isMergeCommit":true,"messageTitle":"Merge pull request #63 from Colex2000/update-uml","messageBody":"Update UML for LastContact field","fileTypesAndContributionMap":{}},{"hash":"fb369f53ee71cfe7513155c0f83a938fd2ceb2cd","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into yc/update-uml","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4130435390012db063b379ea08d0ecbea413d9bd","isMergeCommit":true,"messageTitle":"Merge pull request #64 from tanyunchao/yc/update-uml","messageBody":"Add upcoming field to ModelClassDiagram","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"6ba54a680169a252513baa84415fb6e7d44e4e91","isMergeCommit":false,"messageTitle":"Update UML diagrams for predicate","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":1},"test-code":{"insertions":6,"deletions":6}}}]},{"date":"2024-03-24","commitResults":[{"hash":"37e33e524924618589c5817c19e8aa489528dad7","isMergeCommit":true,"messageTitle":"Merge pull request #68 from Colex2000/add-last-contact-list","messageBody":"Change the last contact command to show all last contacted clients","fileTypesAndContributionMap":{}},{"hash":"82c7230265133b052d72cec5c45c11bbff2ab28b","isMergeCommit":false,"messageTitle":"Change command words to be case-insensitive","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}}]}],"ziyang27":[{"date":"2024-02-24","commitResults":[{"hash":"841126e514771c7799adf6add5b4e9b897e2f057","isMergeCommit":true,"messageTitle":"Merge pull request #1 from AY2324S2-CS2103T-F13-2/switch-docs-to-markbind","messageBody":"Switch docs to markbind","fileTypesAndContributionMap":{}},{"hash":"79dddc147247ad7afadbc038ac51939161b4dc54","isMergeCommit":false,"messageTitle":"Update default.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-02-29","commitResults":[{"hash":"d8755a8ce0da501b1213d00586f3fbc988e3ef47","isMergeCommit":false,"messageTitle":"Update AboutUs page with roles, links, and my own photo","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":206,"deletions":29}}},{"hash":"0f94b95eb964d474e4efc61816c15fe1c8cd24f4","isMergeCommit":false,"messageTitle":"Update the link of the GitHub Actions build status badge","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"fc06af5416f91c258a5734870b425b3969e8c03e","isMergeCommit":false,"messageTitle":"Update all contents to match our project","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":10}}},{"hash":"e5f95669cb1e29ce8dc43e8a64698f60e2f57b44","isMergeCommit":false,"messageTitle":"Remove trailing whitespace","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}},{"hash":"7ba95e086f805b8393873c339def0093d0ed41d5","isMergeCommit":false,"messageTitle":"Add the select feature description in the user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":39,"deletions":21}}},{"hash":"002a6cbf36aefb1ad0ac92619d0248b5877b9e32","isMergeCommit":false,"messageTitle":"Update developer guide based on our product","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":41,"deletions":11}}}]},{"date":"2024-03-04","commitResults":[{"hash":"ac2334941551de42831912c93de2ca183ce75cd4","isMergeCommit":true,"messageTitle":"Merge pull request #26 from SimHanKiong/branch-AboutUs","messageBody":"Add picture to AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"12c2e2ba38a7ab5b20169f6f196bf2f8f0b27475","isMergeCommit":true,"messageTitle":"Merge pull request #27 from SimHanKiong/branch-DeveloperGuide","messageBody":"Add tagging user stories and uses cases to DeveloperGuide.md","fileTypesAndContributionMap":{}},{"hash":"dfda9e8caaba03d1280edaef60658fd0cb54a3b5","isMergeCommit":true,"messageTitle":"Merge pull request #28 from SimHanKiong/branch-ReadMe","messageBody":"Fix typo in README.md","fileTypesAndContributionMap":{}},{"hash":"875de1405eb9edc4240e43e9f95acab0744c0416","isMergeCommit":true,"messageTitle":"Merge pull request #29 from SimHanKiong/branch-UserGuide","messageBody":"Add find by tag feature to UserGuide.md","fileTypesAndContributionMap":{}}]},{"date":"2024-03-06","commitResults":[{"hash":"a9ead0a04ab5f66bfaa10371dc2372f8d300c215","isMergeCommit":true,"messageTitle":"Merge pull request #30 from Colex2000/master","messageBody":"Add profile pic and update AboutUs doc","fileTypesAndContributionMap":{}},{"hash":"1e6f73b9ddceb32ee9cc22c0c9a4c9505f47bfd0","isMergeCommit":true,"messageTitle":"Merge pull request #31 from Colex2000/updateUserGuide","messageBody":"Add tagging last contacted feature in UG and update DG use cases.","fileTypesAndContributionMap":{}}]},{"date":"2024-03-07","commitResults":[{"hash":"2a759fdb6c9ceb3488cba088311185a8767f6f90","isMergeCommit":true,"messageTitle":"Merge pull request #33 from tanyunchao/update-about-us-page","messageBody":"Update team member image in AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"598d6b9da90ec74a02314ef50d5fa7ac32e56bb7","isMergeCommit":true,"messageTitle":"Merge pull request #36 from tanyunchao/DG-update","messageBody":"Add use case for finding upcoming contacts with appointments","fileTypesAndContributionMap":{}},{"hash":"32f44a7d341aa4409e7f10af4f0a0731bece3cdc","isMergeCommit":true,"messageTitle":"Merge pull request #34 from tanyunchao/update-ui-mockup","messageBody":"Update UI image","fileTypesAndContributionMap":{}},{"hash":"bbb9fdea07c00f6bb884f09565460db8f64888f4","isMergeCommit":false,"messageTitle":"Update title and links","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"ef65f93f9e8103bf79a5b8dbfeee47cac034994e","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-update-doc","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8e9260816c390518e8684814cbced3f02555f61f","isMergeCommit":false,"messageTitle":"Update user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":4}}},{"hash":"66da74961e87a31081407ccbd75e158f2b898a98","isMergeCommit":false,"messageTitle":"Add NFRs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":0}}},{"hash":"90cce9a7cd1e1e4f32e96100dfa55f18ed74e7f2","isMergeCommit":false,"messageTitle":"Add MSS for three new use cases","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":39,"deletions":12}}}]},{"date":"2024-03-11","commitResults":[{"hash":"978cea6d05055139272f9f58a06e8f74a4c73fc7","isMergeCommit":true,"messageTitle":"Merge pull request #44 from SimHanKiong/branch-FindByExactTag","messageBody":"Add find by exact tag feature","fileTypesAndContributionMap":{}}]},{"date":"2024-03-12","commitResults":[{"hash":"a4d5d4d7b2f5199f2ac750b7ae28cd7e6f778a79","isMergeCommit":false,"messageTitle":"Create a new select command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":69,"deletions":0}}},{"hash":"ec336a2bc5090576c3ff90e37ff2bd22bb2248cb","isMergeCommit":false,"messageTitle":"Hook SelectCommand into the application","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":33,"deletions":0}}},{"hash":"d9806658cf378e4173a4ddee731e51d928693932","isMergeCommit":false,"messageTitle":"Update SelectCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":1}}},{"hash":"ec8e3e36d250b7e07bd17850f9775d77c2e9a607","isMergeCommit":false,"messageTitle":"Update SelectCommand to show only selected person in filtered list","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":45,"deletions":1}}}]},{"date":"2024-03-13","commitResults":[{"hash":"dc23ef67e55f5bfbd06e6585d998b57d3736a062","isMergeCommit":false,"messageTitle":"Add tests for SelectCommand","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":125,"deletions":0}}}]},{"date":"2024-03-14","commitResults":[{"hash":"7ca0659b46f592e71f9671cc275acd65f60474ae","isMergeCommit":false,"messageTitle":"Add tests for IsSamePersonPredicate","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":68,"deletions":0}}},{"hash":"013ba6942e907fd4330049a5e3ac7e46b06c2667","isMergeCommit":false,"messageTitle":"Add tests for SelectCommandParser","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":32,"deletions":0}}},{"hash":"ac4f189efb14bfb1cb244dd69a1ea25360e0e7f4","isMergeCommit":false,"messageTitle":"Add test for select command in AddressBookParser","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":8,"deletions":0}}}]},{"date":"2024-03-17","commitResults":[{"hash":"247a1eea853b2636abffa9d13691833cc9410a08","isMergeCommit":false,"messageTitle":"Add identifier to differentiate the two dates in PersonCard","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-18","commitResults":[{"hash":"f73e5dc107450c17231df6cdb17666c68734de2e","isMergeCommit":true,"messageTitle":"Merge pull request #60 from SimHanKiong/branch-FindByAllTags","messageBody":"Add find by all tags feature","fileTypesAndContributionMap":{}}]},{"date":"2024-03-19","commitResults":[{"hash":"ea791b37f0c16a8ef5a5072b2cff803afd2e3c78","isMergeCommit":false,"messageTitle":"Include text for filtering in Model component","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":0}}},{"hash":"63135e8a540986566ce083f39b56e4eaed9294cc","isMergeCommit":false,"messageTitle":"Add UML diagram","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":21,"deletions":1}}}]},{"date":"2024-03-20","commitResults":[{"hash":"09fb9737a7c9fa5935128a9dc35700c3a994857a","isMergeCommit":true,"messageTitle":"Merge pull request #66 from SimHanKiong/branch-UMLDiagrams","messageBody":"Update UML diagrams for predicate","tags":["v1.2"],"fileTypesAndContributionMap":{}}]},{"date":"2024-03-23","commitResults":[{"hash":"2ba1f77656bf9d579c83d827e053080e3d0361fa","isMergeCommit":true,"messageTitle":"Merge pull request #70 from Colex2000/uml-diagram-update","messageBody":"Update UML diagram","fileTypesAndContributionMap":{}}]},{"date":"2024-03-24","commitResults":[{"hash":"2db786ca39080e7315e74d9a7befee6155f3a3ce","isMergeCommit":true,"messageTitle":"Merge pull request #77 from SimHanKiong/branch-CaseInsensitiveCommands","messageBody":"Change command words to be case-insensitive","fileTypesAndContributionMap":{}}]}],"Colex2000":[{"date":"2024-03-06","commitResults":[{"hash":"61c3c0deada9a9ae25e05db3bed4797ab06bd4e2","isMergeCommit":false,"messageTitle":"Update docs to include profile pic","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"220819cdf0008a2c449827f8d42cf01a27079ff9","isMergeCommit":false,"messageTitle":"Add tagging last contacted feature in UserGuide. Update DeveloperGuide use cases.","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":48,"deletions":0}}}]},{"date":"2024-03-07","commitResults":[{"hash":"f4b0bbd0bf8eef5a7e3d7cb73d29c873b1dcb750","isMergeCommit":true,"messageTitle":"Merge pull request #37 from ziyang27/branch-update-doc","messageBody":"Update documentations","fileTypesAndContributionMap":{}}]},{"date":"2024-03-12","commitResults":[{"hash":"25a61b860fc7b218e2e4521f6beb22ef279b12d2","isMergeCommit":false,"messageTitle":"Add lastcontact command","messageBody":"This commit introduces \"lastcontact\" command.\nHowever, unable to tag at the moment.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":64,"deletions":0}}},{"hash":"fb721f422c7a5ff797b1ecf73915fe734c568bb6","isMergeCommit":false,"messageTitle":"Update lastcontact command to tag on a profile.","messageBody":"- Add last contacted field to Person model\n- Add GUI view of the last contacted field\n","fileTypesAndContributionMap":{"functional-code":{"insertions":181,"deletions":34}}},{"hash":"ad9ae522d88762be7e9eb3582b7beed166554617","isMergeCommit":false,"messageTitle":"Update UserGuide according to changed command format","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}}]},{"date":"2024-03-13","commitResults":[{"hash":"2727355b37f6b0f994d04041722ecc554424f854","isMergeCommit":false,"messageTitle":"Fix bug for add command parsing fail","messageBody":"- Previously add command fails due to last contact parsing.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":30,"deletions":23}}},{"hash":"bbc1f501596017a61aef5831d8ef2e515f4eb5e1","isMergeCommit":false,"messageTitle":"Refactor code according to style check gradle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":38,"deletions":25}}},{"hash":"7219f7a12c663d78740f51c87f071438b81a185e","isMergeCommit":false,"messageTitle":"Refactor code according to style check gradle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":9}}},{"hash":"ed93480fb170af004dd2880939bcdb3c207d15e2","isMergeCommit":false,"messageTitle":"Fix bug for failing Junit test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":67,"deletions":22}}},{"hash":"5e5d452e379bc2d8e9ac4a9d5606b499de1313c0","isMergeCommit":false,"messageTitle":"Fix bug for failing Junit test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":0}}},{"hash":"55414855c5e73dfbea05a6b54fbebc597973777c","isMergeCommit":false,"messageTitle":"Fix bugs for failing Junit test","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":1},"test-code":{"insertions":35,"deletions":19}}},{"hash":"386ba9ce5f31d4690640c42772f34ff8f2b06a04","isMergeCommit":false,"messageTitle":"Refactor and add Javadoc comment.","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":9,"deletions":3}}}]},{"date":"2024-03-15","commitResults":[{"hash":"f334ab46d973eb36e54ff51e24d9b05900055b91","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-F13-2/tp into addLastContactedCommand","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"709d0e6c1d49c77608338770bb3e1967b39dbf27","isMergeCommit":false,"messageTitle":"Add test for LastContactCommand classes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":25,"deletions":3},"test-code":{"insertions":126,"deletions":0}}},{"hash":"5c2cfb0b254271179bffa5ae57c04a7e673b3516","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into addLastContactedCommand","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"7fa751d0d79d7836670d6a95be1304705cb802cb","isMergeCommit":true,"messageTitle":"Resolve merge conflict","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b1e582ca1ce4d733c2fb5facb9b4f78d91579eb7","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/addLastContactedCommand\u0027 into addLastContactedCommand","messageBody":"# Conflicts:\n#\tsrc/test/data/JsonSerializableAddressBookTest/typicalPersonsAddressBook.json\n#\tsrc/test/java/seedu/address/testutil/TypicalPersons.java\n","fileTypesAndContributionMap":{}},{"hash":"15085aceef422a677949d368ffbab07d5593c500","isMergeCommit":false,"messageTitle":"Refactor according to style check","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":2}}}]},{"date":"2024-03-16","commitResults":[{"hash":"50ff872eac1e5bd09e8536acd664b7dc32a6b730","isMergeCommit":false,"messageTitle":"Update userguide for lastcontact usage","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":3}}},{"hash":"dc21e919c4f3be5bf5cdab8f9fd0a0f170ffbb87","isMergeCommit":false,"messageTitle":"Add test for methods in SampleDataUtil class","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":60,"deletions":0}}},{"hash":"84e43654888139c8a08753fb72bdd965e675aa1a","isMergeCommit":false,"messageTitle":"Refactor the order of imports","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"35124461a173c6234f9deaed604488676e67735c","isMergeCommit":false,"messageTitle":"Add test to provide more test coverage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":2},"test-code":{"insertions":88,"deletions":0}}},{"hash":"edb5e80ae25e7cf288496269c4b0f748de8dca07","isMergeCommit":false,"messageTitle":"Add test for LastContact equals method for null case","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":0}}}]},{"date":"2024-03-18","commitResults":[{"hash":"5ab03d2dedd4ad02c592b2721b13be9e93e7a813","isMergeCommit":false,"messageTitle":"Update edit command to edit lastcontact field","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":23,"deletions":11},"test-code":{"insertions":56,"deletions":8}}},{"hash":"c8ddcd4a8204c4e6b9a9c952e0fcea3f99f99860","isMergeCommit":false,"messageTitle":"Fix indentation issue for the import","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-19","commitResults":[{"hash":"fc1eb6186bc95c1f471f7062874b9aa48e473e89","isMergeCommit":false,"messageTitle":"Refactor classes to achieve more harmonize code style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":4},"test-code":{"insertions":8,"deletions":7}}},{"hash":"24093581334708ac939593f25ffca2886efba49c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into edit-last-contact-field","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c3ab13f80699b8b6c6027f98196edb7f96d20b4a","isMergeCommit":true,"messageTitle":"Merge pull request #61 from Colex2000/edit-last-contact-field","messageBody":"Update edit command to edit lastcontact field","fileTypesAndContributionMap":{}},{"hash":"e3a395edc33b1db7ca4dbac5a4684e346951bf37","isMergeCommit":true,"messageTitle":"Merge pull request #62 from ziyang27/branch-update-uml","messageBody":"Update Developer Guide","fileTypesAndContributionMap":{}},{"hash":"383bd10b999eeb0019d5022d3739ea8cf9a607d4","isMergeCommit":false,"messageTitle":"Update UML for LastContact field","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":0}}}]},{"date":"2024-03-22","commitResults":[{"hash":"e81c753c4420e5356bbeffd9329d4f0d03c8bbc5","isMergeCommit":false,"messageTitle":"Update lastcontact field to be empty if not added for add command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":9},"test-code":{"insertions":1,"deletions":1}}},{"hash":"284b9c20b4d672a1240c272c929cc0ace28b1724","isMergeCommit":false,"messageTitle":"Fix edit command for lastcontact field should not be empty","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":0}}},{"hash":"dc701902483907c1177a9796d6511227de68ba57","isMergeCommit":false,"messageTitle":"Fix edit command for upcoming field should not be empty","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":0}}},{"hash":"342c0bce5e6a3e5a13403ef896d828c98b99455f","isMergeCommit":false,"messageTitle":"Change last contact command to show filtered and sorted list","messageBody":"The list shown will be filtered by clients who have last contacted field.\nThe list will also be sorted according to the oldest datetime.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":71,"deletions":50},"test-code":{"insertions":4,"deletions":93}}},{"hash":"eda81ef6a4ba0f6634708d6c368a2b1301cdc524","isMergeCommit":false,"messageTitle":"Update comparator","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-23","commitResults":[{"hash":"9862513f097307435fcbe3ed37e9ac46bcae9a42","isMergeCommit":false,"messageTitle":"Fix bug select command not selecting from correct sorted list","messageBody":"- Add test for LastContactCommand\n- Delete LastContactParserTest because not parsing any arguments\n","fileTypesAndContributionMap":{"functional-code":{"insertions":69,"deletions":83},"other":{"insertions":4,"deletions":1},"test-code":{"insertions":45,"deletions":36}}},{"hash":"5c2634a26b1b5e9b3fc3711976d40de7794225a1","isMergeCommit":false,"messageTitle":"Update UML diagram","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":0}}},{"hash":"dd2020362cc417d01c4c1259aea49c327a37787a","isMergeCommit":false,"messageTitle":"Update UML diagram","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":0}}},{"hash":"a2450870e98cdb33265f7f387efec19356a83f8e","isMergeCommit":false,"messageTitle":"Update sorting comparator to remove null instance","messageBody":"- There will not be an instance of null since already filtered\n","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":13}}},{"hash":"cf9ae1219809177cecff40500e03f54e21cde70f","isMergeCommit":false,"messageTitle":"Add test for some classes","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":71,"deletions":5}}},{"hash":"88e5596eaf2eeef6c8865aa30b6f3b493eaa9998","isMergeCommit":false,"messageTitle":"Change ordering of imports for style check","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":3}}},{"hash":"3db8d71543ea1d2c32b6a96503a49bdd38ad78b9","isMergeCommit":false,"messageTitle":"Add test for parsing empty lastcontact field for edit command","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":12,"deletions":10}}},{"hash":"b3ec08a240da4422b670b283bff343a3bd72b234","isMergeCommit":false,"messageTitle":"Fix imports for checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":12,"deletions":2}}}]},{"date":"2024-03-24","commitResults":[{"hash":"c91c4e64c8558be395879808e518b9ad57afa473","isMergeCommit":false,"messageTitle":"Fix bug editing twice from lastcontact filter not working","messageBody":"Refactored IsLastContactedPredicacte to HasLastContactedPredicate\n","fileTypesAndContributionMap":{"functional-code":{"insertions":32,"deletions":18},"other":{"insertions":1,"deletions":1},"test-code":{"insertions":39,"deletions":34}}},{"hash":"aa49b158d30aa591dcbbceff488e1978b9a7b964","isMergeCommit":false,"messageTitle":"Add more comprehensive test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":0}}},{"hash":"ab4673936f9d66938bcc87a300aff692799bd9b3","isMergeCommit":false,"messageTitle":"Update LastContactCommandTest to be more comprehensive","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":12,"deletions":16}}},{"hash":"01d6709a082f4ef6298af63fa8420eb8b1fae888","isMergeCommit":false,"messageTitle":"Update LastContactCommandTest to be more comprehensive","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":19,"deletions":12}}},{"hash":"0933a265494b3b9fdae0ca61fd5cbdd054fcc398","isMergeCommit":false,"messageTitle":"Update LastContactCommandTest to be more comprehensive","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":3}}},{"hash":"66b652edbb9fb783d208a35c777aba48cd0edb64","isMergeCommit":false,"messageTitle":"Remove unused import","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}}]}],"tanyunchao":[{"date":"2024-03-07","commitResults":[{"hash":"cb798957fe6b17fec46b9287f57dfdd012b85437","isMergeCommit":false,"messageTitle":"Update team member image in AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"2cb0a093131dcdf225136cd1cbd153e582c9fc5c","isMergeCommit":false,"messageTitle":"Add upcoming command to UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":0}}},{"hash":"4f49775c069fcdba9ed0e4ad321c3363495a8ac4","isMergeCommit":false,"messageTitle":"Add use case for finding upcoming contacts with appointments","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":0}}},{"hash":"d2e90befdced0d1d30801822f7e51d7ea410451d","isMergeCommit":true,"messageTitle":"Merge branch \u0027tanyunchao-DG-update\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"42bf1825eb7c5d1dabb6950c5b79b4b1946f7ee4","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into DG-update","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d6209b9308bb89f9c23f26919fcad02d300eafd3","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into yc-ug-update","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a4270a722b8200ff13e70b067866fe1b0861166b","isMergeCommit":true,"messageTitle":"Merge pull request #35 from tanyunchao/yc-ug-update","messageBody":"Add upcoming command to UserGuide.md","fileTypesAndContributionMap":{}}]},{"date":"2024-03-12","commitResults":[{"hash":"dadab6c3688311ffb409f7ab677b3262f87c7cab","isMergeCommit":false,"messageTitle":"Add Upcoming class for handling appointment date and time","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":68,"deletions":0}}}]},{"date":"2024-03-15","commitResults":[{"hash":"6fbe2440aee0d307b144cabd7eb18c439c53a4f6","isMergeCommit":false,"messageTitle":"Refactor isValidDateTime to isValidUpcoming","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"c4e46cfaf9e8dd173ccc646dc5907479246c5e9e","isMergeCommit":false,"messageTitle":"Add PREFIX_UPCOMING constant","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0}}},{"hash":"7d269de521dc9744b00ec3d6110b63ff01843370","isMergeCommit":false,"messageTitle":"Add Upcoming field to Person class and parse Upcoming in ParserUtil","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":3}}},{"hash":"d97b9826b5ab59eb3208addcbdfa85a4db3eec47","isMergeCommit":false,"messageTitle":"Update person constructor in AddCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":1}}},{"hash":"1cc6fd091e3891cfe57f80d5349a66eb275b4dd6","isMergeCommit":false,"messageTitle":"Add upcoming field to EditCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":4}}},{"hash":"6eb68aa2523db013f648048b4a9ea5bd3a59a6df","isMergeCommit":false,"messageTitle":"Add upcoming tag to AddCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":1}}},{"hash":"ed7ed66096483d5ea2c0eca3095328be5cc2af62","isMergeCommit":false,"messageTitle":"Add support for upcoming field in EditCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":2}}},{"hash":"aded3a73ee439e73af9bae37dd115d7f254b241f","isMergeCommit":false,"messageTitle":"Add Upcoming field to JsonAdaptedPerson class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":2}}},{"hash":"657f7b5f8176c84bf2f72cf9fb63bc09d2ea5e8e","isMergeCommit":false,"messageTitle":"Fix Person constructors in SampleDataUtil","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":6}}},{"hash":"cc190c0068d61b65cfaac1681617b50435a15420","isMergeCommit":false,"messageTitle":"Add Upcoming field to PersonBuilder","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":14,"deletions":1}}},{"hash":"5dc3460cf9514e9a1d85a7a31fe130e4ec5ab83f","isMergeCommit":false,"messageTitle":"Add upcoming field to CommandTestUtil","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":2}}},{"hash":"1787f40dcfe2521fc5fceea9efc643804e7e274e","isMergeCommit":false,"messageTitle":"Add Upcoming field to EditPersonDescriptorBuilder","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":10,"deletions":0}}},{"hash":"79f7f96780a30c7c56ff6d173b5b840a67ca90f8","isMergeCommit":false,"messageTitle":"Add upcoming events to TypicalPersons test data","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":9,"deletions":4}}},{"hash":"8cd5b364e606f4b7c4892760bb9e05e09d8ee71c","isMergeCommit":false,"messageTitle":"Add PREFIX_UPCOMING to PersonUtil","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":0}}},{"hash":"aa41c7ef75f99bfdc45dd8b2ddef98a8a1b9165c","isMergeCommit":false,"messageTitle":"Updated JsonAdaptedPerson call in test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":12,"deletions":9}}},{"hash":"97109d91bad9f6bc51e5229e79baaabc92a79240","isMergeCommit":false,"messageTitle":"Added test for invalid Upcoming","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":0}}},{"hash":"def205915c588476f3be61d5eab3fcb1c7cae2bd","isMergeCommit":false,"messageTitle":"Style: remove additional EOF line","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"f37fe214cf53a0b4af9d490332d50dd7217e4b00","isMergeCommit":false,"messageTitle":"Style: shorten excessively long lines","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":2}}},{"hash":"f55f5c764db2ccc95f9500238c8770c635e8ee2c","isMergeCommit":false,"messageTitle":"Reorder imports and add javadocs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":1}}},{"hash":"6013eb352102fdf26f2cb7d0c99642675b9ff006","isMergeCommit":false,"messageTitle":"Update import order","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"cbd64c82356716fbd06e2c5b858e708dd5e27e83","isMergeCommit":false,"messageTitle":"Add docs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":27,"deletions":0}}},{"hash":"59140954d415041352702f90538bf29690be5ac7","isMergeCommit":false,"messageTitle":"Reodering of constants","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":8}}},{"hash":"239da3d8c475914aed2133bc29e96f0c3220f696","isMergeCommit":false,"messageTitle":"Fix whitespace diff","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"ef185e4beb09eb69f8de4bdfac17e54c6e12613a","isMergeCommit":false,"messageTitle":"Fix whitespace diff","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2}}},{"hash":"4928927bc14e79a4689ea05cdc48a2443da5efac","isMergeCommit":false,"messageTitle":"Style fix","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":9},"test-code":{"insertions":31,"deletions":22}}},{"hash":"de6bbd498457849ae8225473f953033e583b0538","isMergeCommit":false,"messageTitle":"Update UI components","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":0}}},{"hash":"2083455c7920c58b6ac79bb43c171d70d1524e30","isMergeCommit":false,"messageTitle":"Update logic manager test and command test util","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":1}}},{"hash":"5e494b2f8ee5ecaabf8c731f973fa6498053177a","isMergeCommit":false,"messageTitle":"Fix add command parsing bug","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-16","commitResults":[{"hash":"143f166d56a84fbbc19e2a378ddc63afe5df799b","isMergeCommit":false,"messageTitle":"Fix date format in CommandTestUtil.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"34f39d4f75487c372b1f7d2259593f50a3429b52","isMergeCommit":false,"messageTitle":"Add upcoming field to EditPersonDescriptor toString() method","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":1}}},{"hash":"a6195ed5da59a037a591529041b8c784e6bfd942","isMergeCommit":false,"messageTitle":"Add upcoming event description to AddCommandParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":2}}},{"hash":"094e5daaf138bf167fde5e44262645ad22c01d69","isMergeCommit":false,"messageTitle":"Fix parsing of Upcoming in AddCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"299422347e687a7d5e11b27f979f54adad677215","isMergeCommit":false,"messageTitle":"Add handling of empty string when no upcoming is planned","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":3}}},{"hash":"f60193faad562ce4a083b60753376850ce9f406c","isMergeCommit":false,"messageTitle":"Update add command message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"1f3207598549d6484604c3aa8516a04314574aca","isMergeCommit":true,"messageTitle":"Merge pull request #54 from Colex2000/addLastContactedCommand","messageBody":"Add last contacted command","fileTypesAndContributionMap":{}}]},{"date":"2024-03-17","commitResults":[{"hash":"52d8cb22ccf9cc7c4cc910574ea0af92c9e7ff5a","isMergeCommit":false,"messageTitle":"Add upcoming field to Person class functions","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":2}}},{"hash":"0c8cbcaf06047f3ea9a787cfab3e7630206b5f0a","isMergeCommit":false,"messageTitle":"Update messages displayed to display messages correctly","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"5c4a635f38a980c5f5418a642eecd00789ac5bb9","isMergeCommit":false,"messageTitle":"Fix upcoming initialisation bug and refactored magic words","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":1}}},{"hash":"fc1d891eaca3fac4aef67482f8f70e3d6503047e","isMergeCommit":false,"messageTitle":"Fix bug in output message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"e75a8bc8edfc9d441e7cfc5914d20a81765793dc","isMergeCommit":false,"messageTitle":"Removed unuse no upcoming message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2}}},{"hash":"d9349f238fd845ae218b3258e79f315773efd9ec","isMergeCommit":false,"messageTitle":"Updated upcoming equals comparisons","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":0}}},{"hash":"310beca68ee92863d59c6ca2c647922ee6b10851","isMergeCommit":false,"messageTitle":"Update tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"6d1eab714a80ca463daa9747785a9b3fee883af3","isMergeCommit":false,"messageTitle":"Updated person test string","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"4dffd7ece15f09ef9e751d62efd46f4e06b68d6d","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add_upcoming_field","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"14997f92c56293f91a4514cd6d4f310dd041bd25","isMergeCommit":false,"messageTitle":"Update last contact command to use updated person constructor","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"ffe746c93a58fe1ecbda8233f6736554eeed24a6","isMergeCommit":false,"messageTitle":"Fix style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":43,"deletions":25}}},{"hash":"63a4c9b4cd6d5f236ceda1224b39befc67336a10","isMergeCommit":false,"messageTitle":"Fix style","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":2}}},{"hash":"c3cc52d8d76103b3210697daf64402ba0e0370ef","isMergeCommit":false,"messageTitle":"Fix test due to change in person constructor","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":3}}},{"hash":"9e4831e8149ff8707d2c337b2cb497efa3533cfc","isMergeCommit":false,"messageTitle":"Fix test and implementation for JsonAdapterPerson","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":6},"test-code":{"insertions":1,"deletions":0}}},{"hash":"6d11936e4e80cffa25d365334b551638e96bd1ba","isMergeCommit":false,"messageTitle":"Fix style for test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":1}}},{"hash":"7f69461cc4ef6832c888b1940cfedda3aab0a6e3","isMergeCommit":false,"messageTitle":"Update messages to account for new fields","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"0038186a3c2e7727d198be176fbc1dbf23204d1d","isMergeCommit":false,"messageTitle":"Fix style for editCommand and its message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":4}}},{"hash":"5831bee48b4d903cb1cf478390361a38c80265b7","isMergeCommit":false,"messageTitle":"Add space append after tag when tags are not present","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"1c132b7de34cf05de5b14350c3c93845bcfde135","isMergeCommit":false,"messageTitle":"Fix whitespace style issue","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"34eb630b9853fa2d0f49280523db365f255e492d","isMergeCommit":false,"messageTitle":"Fix style check","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"db254f70d0d596e26521943397a66379049517dc","isMergeCommit":false,"messageTitle":"Update upcoming with standardised datetime format","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":9},"test-code":{"insertions":6,"deletions":6}}},{"hash":"949fad0c642793124ac65e9ead5005c5de3f7548","isMergeCommit":false,"messageTitle":"Add test for parseUpcoming in ParserUtil","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":26,"deletions":0}}},{"hash":"765b061ead7d42518ed413927630ba6354237c6e","isMergeCommit":false,"messageTitle":"Add test for upcoming","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":122,"deletions":0}}},{"hash":"68749b37a5603a2f3406c9c08313ea005cda5488","isMergeCommit":false,"messageTitle":"Update test with upcoming field","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":10,"deletions":21}}},{"hash":"ed0b7afbb40f4f9f2e4b10638dc9309e1f05dfb2","isMergeCommit":false,"messageTitle":"Add test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":14,"deletions":0}}},{"hash":"29d28269d3a5551a0e9d886b51fe8523c62a3711","isMergeCommit":false,"messageTitle":"Added test for null upcoming","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":8,"deletions":0}}},{"hash":"24a396295f837bca9adb31d28a813c7732f83d5e","isMergeCommit":false,"messageTitle":"Check style","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":2}}},{"hash":"fe4fc200576ba6593ddebdcec76d38a0ec7e5bac","isMergeCommit":false,"messageTitle":"Add even more tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":23,"deletions":0}}},{"hash":"e6f9fc9e0b75200768357cc7b876f5d809bbb214","isMergeCommit":false,"messageTitle":"Add test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":18,"deletions":0}}},{"hash":"c4e761d894c6c1495507d02f1e64446da154e74f","isMergeCommit":false,"messageTitle":"Add const","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":0}}},{"hash":"7239587db8c8361edda315b0abddd3a5b785187d","isMergeCommit":false,"messageTitle":"Add test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":10,"deletions":0}}},{"hash":"3a47672ab0b26c5d58503a0ba545998a172f990c","isMergeCommit":false,"messageTitle":"Check style","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"6e578d0744d94567464a60d35ab7be164fab4de0","isMergeCommit":false,"messageTitle":"Add test for hash","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":46,"deletions":0}}}]},{"date":"2024-03-19","commitResults":[{"hash":"28007118011f032ef5102b1707d81b4eb589a266","isMergeCommit":false,"messageTitle":"Add Upcoming class and update class relationships","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":0}}}]},{"date":"2024-03-24","commitResults":[{"hash":"0048b69accf4b468beda508c13bceb18d31740a9","isMergeCommit":true,"messageTitle":"Merge pull request #71 from Colex2000/fix-edit-not-showing-list","messageBody":"Fix bug editing twice from lastcontact filter not working","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"SimHanKiong":{"docs":115,"functional-code":288,"test-code":521},"ziyang27":{"docs":356,"functional-code":154,"test-code":233},"Colex2000":{"docs":58,"functional-code":319,"test-code":413},"tanyunchao":{"docs":22,"functional-code":226,"test-code":353}},"authorContributionVariance":{"SimHanKiong":11806.014,"ziyang27":5935.0034,"Colex2000":12068.637,"tanyunchao":10136.258},"authorDisplayNameMap":{"SimHanKiong":"CS2103T-F13-2 SIM ..IONG","ziyang27":"CS2103T-F13-2 TAN ..YANG","Colex2000":"CS2103T-F13-2 TION.. YAO","tanyunchao":"CS2103T-F13-2 TAN ..CHAO"}} diff --git a/AY2324S2-CS2103T-F14-1_tp_master/authorship.json b/AY2324S2-CS2103T-F14-1_tp_master/authorship.json index af8c95c2..4c49cfcd 100644 --- a/AY2324S2-CS2103T-F14-1_tp_master/authorship.json +++ b/AY2324S2-CS2103T-F14-1_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"eunrcn"},"content":"# InternHub","lastModifiedDate":"2024-02-25"},{"lineNumber":2,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":3,"author":{"gitId":"ashleygoh1"},"content":"[![CI Status](https://github.com/AY2324S2-CS2103T-F14-1/tp/actions/workflows/gradle.yml/badge.svg)](https://github.com/AY2324S2-CS2103T-F14-1/tp/actions/workflows/gradle.yml)","lastModifiedDate":"2024-03-02"},{"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":"eunrcn"},"content":"## Overview","lastModifiedDate":"2024-02-25"},{"lineNumber":8,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":9,"author":{"gitId":"eunrcn"},"content":"InternHub is a comprehensive project designed to assist Computer Science (CS) students in managing their internship applications. This project serves various purposes:","lastModifiedDate":"2024-02-25"},{"lineNumber":10,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":11,"author":{"gitId":"eunrcn"},"content":"- It can be utilized as a starting point for a course project, offering students a foundation rather than building everything from scratch.","lastModifiedDate":"2024-02-25"},{"lineNumber":12,"author":{"gitId":"eunrcn"},"content":"- It serves as a case study for understanding the development of a desktop application in an Object-Oriented Programming (OOP) fashion.","lastModifiedDate":"2024-02-25"},{"lineNumber":13,"author":{"gitId":"eunrcn"},"content":"- The project provides a well-written code base, surpassing the typical size of beginner-level SE modules (around 6 KLoC) without becoming overwhelming.","lastModifiedDate":"2024-02-25"},{"lineNumber":14,"author":{"gitId":"eunrcn"},"content":"- Extensive user and developer documentation is included to facilitate understanding and usage.","lastModifiedDate":"2024-02-25"},{"lineNumber":15,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":16,"author":{"gitId":"eunrcn"},"content":"## Project Details","lastModifiedDate":"2024-02-25"},{"lineNumber":17,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":18,"author":{"gitId":"eunrcn"},"content":"- **Name:** InternHub","lastModifiedDate":"2024-02-25"},{"lineNumber":19,"author":{"gitId":"eunrcn"},"content":"- **Type:** Desktop Application","lastModifiedDate":"2024-02-25"},{"lineNumber":20,"author":{"gitId":"eunrcn"},"content":"- **Initiative:** Part of the se-education.org initiative","lastModifiedDate":"2024-02-25"},{"lineNumber":21,"author":{"gitId":"eunrcn"},"content":"- **Documentation:** [InternHub Product Website](https://ay2324s2-cs2103t-f14-1.github.io/tp/index.html)","lastModifiedDate":"2024-02-28"},{"lineNumber":22,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":23,"author":{"gitId":"eunrcn"},"content":"## Features","lastModifiedDate":"2024-02-25"},{"lineNumber":24,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":25,"author":{"gitId":"eunrcn"},"content":"InternHub is specifically tailored for CS students, offering the following features:","lastModifiedDate":"2024-02-25"},{"lineNumber":26,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":27,"author":{"gitId":"eunrcn"},"content":"- Organization and optimization of internship application details.","lastModifiedDate":"2024-02-25"},{"lineNumber":28,"author":{"gitId":"eunrcn"},"content":"- Seamless management of contacts, interview dates, internship duration, salary and job description.","lastModifiedDate":"2024-02-28"},{"lineNumber":29,"author":{"gitId":"eunrcn"},"content":"- Editable fields to meet sudden changes in attributes.","lastModifiedDate":"2024-02-28"},{"lineNumber":30,"author":{"gitId":"eunrcn"},"content":"- Tagging system to categorize and track the stages of each interview process.","lastModifiedDate":"2024-02-25"},{"lineNumber":31,"author":{"gitId":"eunrcn"},"content":"- Filtering and sorting capabilities for efficient access to relevant information.","lastModifiedDate":"2024-02-25"},{"lineNumber":32,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":33,"author":{"gitId":"eunrcn"},"content":"## Getting Started","lastModifiedDate":"2024-02-25"},{"lineNumber":34,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":35,"author":{"gitId":"eunrcn"},"content":"For detailed information on using InternHub, refer to our [User Guide](https://ay2324s2-cs2103t-f14-1.github.io/tp/UserGuide.html).","lastModifiedDate":"2024-02-28"},{"lineNumber":36,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":37,"author":{"gitId":"eunrcn"},"content":"## Contributing","lastModifiedDate":"2024-02-25"},{"lineNumber":38,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":39,"author":{"gitId":"ashleygoh1"},"content":"This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-03-02"}],"authorContributionMap":{"eunrcn":34,"ashleygoh1":2,"-":3}},{"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":"ashleygoh1"},"content":"### Ashley Goh","lastModifiedDate":"2024-02-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"ashleygoh1"},"content":"\u003cimg src\u003d\"images/ashleygoh1.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-02-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"ashleygoh1"},"content":"[[github](http://github.com/ashleygoh1)]","lastModifiedDate":"2024-02-27"},{"lineNumber":19,"author":{"gitId":"ashleygoh1"},"content":"[[portfolio](team/ashley.md)]","lastModifiedDate":"2024-02-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"ashleygoh1"},"content":"* Role: Developer","lastModifiedDate":"2024-02-27"},{"lineNumber":22,"author":{"gitId":"ashleygoh1"},"content":"* Responsibilities: Model","lastModifiedDate":"2024-02-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"ashleygoh1"},"content":"### Chai Ming How","lastModifiedDate":"2024-02-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"ashleygoh1"},"content":"\u003cimg src\u003d\"images/minghowc.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"ashleygoh1"},"content":"[[github](http://github.com/minghowC)]","lastModifiedDate":"2024-02-27"},{"lineNumber":29,"author":{"gitId":"ashleygoh1"},"content":"[[portfolio](team/minghow.md)]","lastModifiedDate":"2024-02-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"ashleygoh1"},"content":"* Role: Developer","lastModifiedDate":"2024-02-27"},{"lineNumber":32,"author":{"gitId":"minghowC"},"content":"* Responsibilities: Features Testing","lastModifiedDate":"2024-03-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"ashleygoh1"},"content":"### Chen Yixin","lastModifiedDate":"2024-02-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"Jawad280"},"content":"\u003cimg src\u003d\"images/chenyixin0.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-03"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"ashleygoh1"},"content":"[[github](http://github.com/chenyixin0)]","lastModifiedDate":"2024-02-27"},{"lineNumber":39,"author":{"gitId":"ashleygoh1"},"content":"[[portfolio](team/yixin.md)]","lastModifiedDate":"2024-02-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"ashleygoh1"},"content":"* Responsibilities: Dev Ops + Threading","lastModifiedDate":"2024-02-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"ashleygoh1"},"content":"### Eunice Koh","lastModifiedDate":"2024-02-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"eunrcn"},"content":"\u003cimg src\u003d\"images/eunrcn.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"ashleygoh1"},"content":"[[github](http://github.com/eunrcn)]","lastModifiedDate":"2024-02-27"},{"lineNumber":49,"author":{"gitId":"ashleygoh1"},"content":"[[portfolio](team/eunice.md)]","lastModifiedDate":"2024-02-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":"eunrcn"},"content":"* Responsibilities: Model","lastModifiedDate":"2024-02-28"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"Jawad280"},"content":"### Jawad Afthab","lastModifiedDate":"2024-02-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"Jawad280"},"content":"\u003cimg src\u003d\"images/jawad280.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-02-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"ashleygoh1"},"content":"[[github](http://github.com/Jawad280)]","lastModifiedDate":"2024-02-27"},{"lineNumber":59,"author":{"gitId":"ashleygoh1"},"content":"[[portfolio](team/jawad.md)]","lastModifiedDate":"2024-02-27"},{"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":{"eunrcn":2,"minghowC":1,"Jawad280":3,"ashleygoh1":20,"-":36}},{"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":"ashleygoh1"},"content":"# InternHub Developer Guide","lastModifiedDate":"2024-03-02"},{"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":"-"},"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":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":"-"},"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":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":"-"},"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":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":"-"},"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":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 continues till 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).\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-02-09"},{"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":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12"},{"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":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"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":"2021-07-31"},{"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":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":133,"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":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":135,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"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":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"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":148,"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":149,"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":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","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":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"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":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"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":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"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":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"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":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"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":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"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":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"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":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":191,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"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":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":198,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"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":201,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"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":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":213,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":217,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":219,"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":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":223,"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":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"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":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"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":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":239,"author":{"gitId":"Jawad280"},"content":"### Design considerations:","lastModifiedDate":"2024-03-01"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","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":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":264,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":265,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":266,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":267,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"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":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":277,"author":{"gitId":"ashleygoh1"},"content":"* CS students","lastModifiedDate":"2024-03-02"},{"lineNumber":278,"author":{"gitId":"ashleygoh1"},"content":"* has a need to keep track of contacts of companies and interview dates during thier internship hunt","lastModifiedDate":"2024-03-02"},{"lineNumber":279,"author":{"gitId":"ashleygoh1"},"content":"* prefer a one-stop, centralised dashboard to manage all contact details of companies","lastModifiedDate":"2024-03-02"},{"lineNumber":280,"author":{"gitId":"ashleygoh1"},"content":"* is reasonably comfortable in using a more CLI based app","lastModifiedDate":"2024-03-02"},{"lineNumber":281,"author":{"gitId":"ashleygoh1"},"content":"* wants to be better organized","lastModifiedDate":"2024-03-02"},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":283,"author":{"gitId":"ashleygoh1"},"content":"**Value proposition**: Ultimate companion for Computer Science (CS) students embarking on their internship journey !","lastModifiedDate":"2024-03-02"},{"lineNumber":284,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":285,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":286,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":287,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":288,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":290,"author":{"gitId":"eunrcn"},"content":"| Priority | As an …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2024-03-01"},{"lineNumber":291,"author":{"gitId":"Jawad280"},"content":"|----------|----------------------|---------------------------------------------------------|---------------------------------------------------------------------------------------------------|","lastModifiedDate":"2024-03-01"},{"lineNumber":292,"author":{"gitId":"Jawad280"},"content":"| `* * *` | internship applicant | add contact information of internship companies | easily access their details when needed |","lastModifiedDate":"2024-03-01"},{"lineNumber":293,"author":{"gitId":"Jawad280"},"content":"| `* * *` | internship applicant | delete contact information of internship companies | easily remove any old or irrelevant company contacts |","lastModifiedDate":"2024-03-01"},{"lineNumber":294,"author":{"gitId":"Jawad280"},"content":"| `* * *` | internship applicant | edit contact information of internship companies | easily update any details on the go |","lastModifiedDate":"2024-03-01"},{"lineNumber":295,"author":{"gitId":"Jawad280"},"content":"| `* * *` | internship applicant | see usage instructions | refer to instructions when I forget how to use the AddressBook |","lastModifiedDate":"2024-03-01"},{"lineNumber":296,"author":{"gitId":"Jawad280"},"content":"| `* * *` | internship applicant | find the contact information of a certain company | easily search which company contact I want by name |","lastModifiedDate":"2024-03-01"},{"lineNumber":297,"author":{"gitId":"Jawad280"},"content":"| `* * *` | internship applicant | keep track of the status of each internship application | categorize and easily follow up accordingly |","lastModifiedDate":"2024-03-01"},{"lineNumber":298,"author":{"gitId":"Jawad280"},"content":"| `* * *` | internship applicant | sort company contacts by dates | prioritize and plan for upcoming interviews |","lastModifiedDate":"2024-03-01"},{"lineNumber":299,"author":{"gitId":"Jawad280"},"content":"| `* * ` | internship applicant | filter company contacts by date | quickly access contacts associated with a specific date |","lastModifiedDate":"2024-03-01"},{"lineNumber":300,"author":{"gitId":"Jawad280"},"content":"| `* * ` | internship applicant | filter company contacts by tag | easily find and manage contacts within specific categories |","lastModifiedDate":"2024-03-01"},{"lineNumber":301,"author":{"gitId":"Jawad280"},"content":"| `* * ` | internship applicant | add a time to a company contact | record when a specific task or interaction needs to be done |","lastModifiedDate":"2024-03-01"},{"lineNumber":302,"author":{"gitId":"Jawad280"},"content":"| `* ` | internship applicant | add notes to company contacts | include important details or information about specific interviews and what I can learn from them |","lastModifiedDate":"2024-03-01"},{"lineNumber":303,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":304,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":305,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":306,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":307,"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":308,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":309,"author":{"gitId":"Jawad280"},"content":"**Use Case: Input Company Contact Information**","lastModifiedDate":"2024-03-01"},{"lineNumber":310,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":311,"author":{"gitId":"Jawad280"},"content":"**Actor:** Internship Applicant","lastModifiedDate":"2024-03-01"},{"lineNumber":312,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":313,"author":{"gitId":"Jawad280"},"content":"**Main Success Scenario (MSS):**","lastModifiedDate":"2024-03-01"},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":315,"author":{"gitId":"Jawad280"},"content":"1. Internship Applicant inputs contact information of internship company.","lastModifiedDate":"2024-03-01"},{"lineNumber":316,"author":{"gitId":"Jawad280"},"content":"2. System stores the contact information.","lastModifiedDate":"2024-03-01"},{"lineNumber":317,"author":{"gitId":"Jawad280"},"content":"3. Use case ends.","lastModifiedDate":"2024-03-01"},{"lineNumber":318,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":319,"author":{"gitId":"Jawad280"},"content":"**Extensions:**","lastModifiedDate":"2024-03-01"},{"lineNumber":320,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":321,"author":{"gitId":"Jawad280"},"content":"* 1a. System detects an error in the entered data.","lastModifiedDate":"2024-03-01"},{"lineNumber":322,"author":{"gitId":"Jawad280"},"content":" * 1a1. System requests for the correct data.","lastModifiedDate":"2024-03-01"},{"lineNumber":323,"author":{"gitId":"Jawad280"},"content":" * 1a2. Internship Applicant enters new data.","lastModifiedDate":"2024-03-01"},{"lineNumber":324,"author":{"gitId":"Jawad280"},"content":" * Steps 1a1-1a2 are repeated until the data entered are correct.","lastModifiedDate":"2024-03-01"},{"lineNumber":325,"author":{"gitId":"Jawad280"},"content":" * Use case resumes from step 2.","lastModifiedDate":"2024-03-01"},{"lineNumber":326,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":327,"author":{"gitId":"Jawad280"},"content":"* *a. At any time, Internship Applicant chooses to cancel the input.","lastModifiedDate":"2024-03-01"},{"lineNumber":328,"author":{"gitId":"Jawad280"},"content":" * Use case ends.","lastModifiedDate":"2024-03-01"},{"lineNumber":329,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":330,"author":{"gitId":"Jawad280"},"content":"---","lastModifiedDate":"2024-03-01"},{"lineNumber":331,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":332,"author":{"gitId":"Jawad280"},"content":"**Use Case: Delete Company Contact Information**","lastModifiedDate":"2024-03-01"},{"lineNumber":333,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":334,"author":{"gitId":"Jawad280"},"content":"**Actor:** Internship Applicant","lastModifiedDate":"2024-03-01"},{"lineNumber":335,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":336,"author":{"gitId":"Jawad280"},"content":"**Main Success Scenario (MSS):**","lastModifiedDate":"2024-03-01"},{"lineNumber":337,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":338,"author":{"gitId":"Jawad280"},"content":"1. Internship Applicant inputs index of contact to be deleted.","lastModifiedDate":"2024-03-01"},{"lineNumber":339,"author":{"gitId":"Jawad280"},"content":"2. System deletes the relevant contact information.","lastModifiedDate":"2024-03-01"},{"lineNumber":340,"author":{"gitId":"Jawad280"},"content":"3. Use case ends.","lastModifiedDate":"2024-03-01"},{"lineNumber":341,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":342,"author":{"gitId":"Jawad280"},"content":"**Extensions:**","lastModifiedDate":"2024-03-01"},{"lineNumber":343,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":344,"author":{"gitId":"Jawad280"},"content":"* 1a. System detects an error in index of contact","lastModifiedDate":"2024-03-01"},{"lineNumber":345,"author":{"gitId":"Jawad280"},"content":" * 1a1. System requests for proper input of index (1 to current number of contacts)","lastModifiedDate":"2024-03-01"},{"lineNumber":346,"author":{"gitId":"Jawad280"},"content":" * 1a2. Internship Applicant enters the correct index.","lastModifiedDate":"2024-03-01"},{"lineNumber":347,"author":{"gitId":"Jawad280"},"content":" * Steps 1a1-1a2 are repeated until the selection is correct.","lastModifiedDate":"2024-03-01"},{"lineNumber":348,"author":{"gitId":"Jawad280"},"content":" * Use case resumes from step 2.","lastModifiedDate":"2024-03-01"},{"lineNumber":349,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":350,"author":{"gitId":"Jawad280"},"content":"* *a. At any time, the Internship Applicant chooses to cancel to detect contact.","lastModifiedDate":"2024-03-01"},{"lineNumber":351,"author":{"gitId":"Jawad280"},"content":" * *a1. System cancels deletion of contact.","lastModifiedDate":"2024-03-01"},{"lineNumber":352,"author":{"gitId":"Jawad280"},"content":" * Use case ends.","lastModifiedDate":"2024-03-01"},{"lineNumber":353,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":354,"author":{"gitId":"Jawad280"},"content":"---","lastModifiedDate":"2024-03-01"},{"lineNumber":355,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":356,"author":{"gitId":"Jawad280"},"content":"**Use Case: Edit Contacts Info**","lastModifiedDate":"2024-03-01"},{"lineNumber":357,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":358,"author":{"gitId":"Jawad280"},"content":"**Actor:** Internship Applicant","lastModifiedDate":"2024-03-01"},{"lineNumber":359,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":360,"author":{"gitId":"Jawad280"},"content":"**Main Success Scenario (MSS):**","lastModifiedDate":"2024-03-01"},{"lineNumber":361,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":362,"author":{"gitId":"Jawad280"},"content":"1. Internship Applicant chooses contact to edit by its index and enters relevant fields to be modified","lastModifiedDate":"2024-03-01"},{"lineNumber":363,"author":{"gitId":"Jawad280"},"content":"2. System modifies that corresponding field of that contact","lastModifiedDate":"2024-03-01"},{"lineNumber":364,"author":{"gitId":"Jawad280"},"content":"3. Use case ends","lastModifiedDate":"2024-03-01"},{"lineNumber":365,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":366,"author":{"gitId":"Jawad280"},"content":"**Extensions:**","lastModifiedDate":"2024-03-01"},{"lineNumber":367,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":368,"author":{"gitId":"Jawad280"},"content":"* 1a. System detects an error in index of contact","lastModifiedDate":"2024-03-01"},{"lineNumber":369,"author":{"gitId":"Jawad280"},"content":" * 1a1. System requests for proper input of index (1 to current number of contacts)","lastModifiedDate":"2024-03-01"},{"lineNumber":370,"author":{"gitId":"Jawad280"},"content":" * 1a2. Internship Applicant enters the correct index.","lastModifiedDate":"2024-03-01"},{"lineNumber":371,"author":{"gitId":"Jawad280"},"content":" * Steps 1a1-1a2 are repeated until the selection is correct.","lastModifiedDate":"2024-03-01"},{"lineNumber":372,"author":{"gitId":"Jawad280"},"content":" * Use case resumes from step 2.","lastModifiedDate":"2024-03-01"},{"lineNumber":373,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":374,"author":{"gitId":"Jawad280"},"content":"* 1a. System detects an error in the fields to be edited (No fields at all or incorrect field prefixes)","lastModifiedDate":"2024-03-01"},{"lineNumber":375,"author":{"gitId":"Jawad280"},"content":" * 1a1. System requests for proper input of fields and correct prefix","lastModifiedDate":"2024-03-01"},{"lineNumber":376,"author":{"gitId":"Jawad280"},"content":" * 1a2. Internship Applicant enters the fields to be edited.","lastModifiedDate":"2024-03-01"},{"lineNumber":377,"author":{"gitId":"Jawad280"},"content":" * Steps 1a1-1a2 are repeated until the selection is correct.","lastModifiedDate":"2024-03-01"},{"lineNumber":378,"author":{"gitId":"Jawad280"},"content":" * Use case resumes from step 2.","lastModifiedDate":"2024-03-01"},{"lineNumber":379,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":380,"author":{"gitId":"Jawad280"},"content":"* *a. At any time, the Internship Applicant chooses to cancel to edit contact.","lastModifiedDate":"2024-03-01"},{"lineNumber":381,"author":{"gitId":"Jawad280"},"content":" * *a1. System cancels edit of contact.","lastModifiedDate":"2024-03-01"},{"lineNumber":382,"author":{"gitId":"Jawad280"},"content":" * Use case ends.","lastModifiedDate":"2024-03-01"},{"lineNumber":383,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":384,"author":{"gitId":"Jawad280"},"content":"---","lastModifiedDate":"2024-03-01"},{"lineNumber":385,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":386,"author":{"gitId":"Jawad280"},"content":"**Use Case: Filter Contacts by Tag**","lastModifiedDate":"2024-03-01"},{"lineNumber":387,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":388,"author":{"gitId":"Jawad280"},"content":"**Actor:** Internship Applicant","lastModifiedDate":"2024-03-01"},{"lineNumber":389,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":390,"author":{"gitId":"Jawad280"},"content":"**Main Success Scenario (MSS):**","lastModifiedDate":"2024-03-01"},{"lineNumber":391,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":392,"author":{"gitId":"Jawad280"},"content":"1. Internship Applicant chooses to filter contacts by tag.","lastModifiedDate":"2024-03-01"},{"lineNumber":393,"author":{"gitId":"Jawad280"},"content":"2. Internship Applicant inputs the tag.","lastModifiedDate":"2024-03-01"},{"lineNumber":394,"author":{"gitId":"Jawad280"},"content":"3. System filters the contacts associated with the selected tag.","lastModifiedDate":"2024-03-01"},{"lineNumber":395,"author":{"gitId":"Jawad280"},"content":"4. System displays the filtered contacts.","lastModifiedDate":"2024-03-01"},{"lineNumber":396,"author":{"gitId":"Jawad280"},"content":"5. Use case ends.","lastModifiedDate":"2024-03-01"},{"lineNumber":397,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":398,"author":{"gitId":"Jawad280"},"content":"**Extensions:**","lastModifiedDate":"2024-03-01"},{"lineNumber":399,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":400,"author":{"gitId":"Jawad280"},"content":"* 2a. System detects an error in tag to be filtered","lastModifiedDate":"2024-03-01"},{"lineNumber":401,"author":{"gitId":"Jawad280"},"content":" * 2a1. System requests for proper input of tag (One of existing tags)","lastModifiedDate":"2024-03-01"},{"lineNumber":402,"author":{"gitId":"Jawad280"},"content":" * 2a2. Internship Applicant enters the correct tag.","lastModifiedDate":"2024-03-01"},{"lineNumber":403,"author":{"gitId":"Jawad280"},"content":" * Steps 2a1-2a2 are repeated until the selection is correct.","lastModifiedDate":"2024-03-01"},{"lineNumber":404,"author":{"gitId":"Jawad280"},"content":" * Use case resumes from step 3.","lastModifiedDate":"2024-03-01"},{"lineNumber":405,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":406,"author":{"gitId":"Jawad280"},"content":"* *a. At any time, the Internship Applicant chooses to cancel the filtering.","lastModifiedDate":"2024-03-01"},{"lineNumber":407,"author":{"gitId":"Jawad280"},"content":" * *a1. System cancels the filtering.","lastModifiedDate":"2024-03-01"},{"lineNumber":408,"author":{"gitId":"Jawad280"},"content":" * Use case ends.","lastModifiedDate":"2024-03-01"},{"lineNumber":409,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":410,"author":{"gitId":"Jawad280"},"content":"---","lastModifiedDate":"2024-03-01"},{"lineNumber":411,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":412,"author":{"gitId":"Jawad280"},"content":"**Use Case: View information of a contact**","lastModifiedDate":"2024-03-01"},{"lineNumber":413,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":414,"author":{"gitId":"Jawad280"},"content":"**Actor:** Internship Applicant","lastModifiedDate":"2024-03-01"},{"lineNumber":415,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":416,"author":{"gitId":"Jawad280"},"content":"**Main Success Scenario (MSS):**","lastModifiedDate":"2024-03-01"},{"lineNumber":417,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":418,"author":{"gitId":"Jawad280"},"content":"1. Internship Applicant chooses contact to be viewed on view panel.","lastModifiedDate":"2024-03-01"},{"lineNumber":419,"author":{"gitId":"Jawad280"},"content":"2. System requests for the specific contact index.","lastModifiedDate":"2024-03-01"},{"lineNumber":420,"author":{"gitId":"Jawad280"},"content":"3. Internship Applicant enters the contact index.","lastModifiedDate":"2024-03-01"},{"lineNumber":421,"author":{"gitId":"Jawad280"},"content":"4. System views the relevant contact on the view panel.","lastModifiedDate":"2024-03-01"},{"lineNumber":422,"author":{"gitId":"Jawad280"},"content":"5. Use case ends.","lastModifiedDate":"2024-03-01"},{"lineNumber":423,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":424,"author":{"gitId":"Jawad280"},"content":"**Extensions:**","lastModifiedDate":"2024-03-01"},{"lineNumber":425,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":426,"author":{"gitId":"Jawad280"},"content":"* 3a. IH detects an error in index of contact","lastModifiedDate":"2024-03-01"},{"lineNumber":427,"author":{"gitId":"Jawad280"},"content":" * 3a1. System requests for proper input of index (1 to current number of contacts)","lastModifiedDate":"2024-03-01"},{"lineNumber":428,"author":{"gitId":"Jawad280"},"content":" * 3a2. Internship Applicant enters the correct index.","lastModifiedDate":"2024-03-01"},{"lineNumber":429,"author":{"gitId":"Jawad280"},"content":" * Steps 3a1-3a2 are repeated until the selection is correct.","lastModifiedDate":"2024-03-01"},{"lineNumber":430,"author":{"gitId":"Jawad280"},"content":" * Use case resumes from step 3.","lastModifiedDate":"2024-03-01"},{"lineNumber":431,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":432,"author":{"gitId":"Jawad280"},"content":"* *a. At any time, Internship Applicant chooses to cancel to view contact.","lastModifiedDate":"2024-03-01"},{"lineNumber":433,"author":{"gitId":"Jawad280"},"content":" * *a1. System cancels viewing of contact.","lastModifiedDate":"2024-03-01"},{"lineNumber":434,"author":{"gitId":"Jawad280"},"content":" * Use case ends.","lastModifiedDate":"2024-03-01"},{"lineNumber":435,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":436,"author":{"gitId":"Jawad280"},"content":"---","lastModifiedDate":"2024-03-01"},{"lineNumber":437,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":438,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":439,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":440,"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":441,"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":442,"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":443,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":444,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":445,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":446,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09"},{"lineNumber":447,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23"},{"lineNumber":448,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":449,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":450,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":451,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":452,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":453,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":454,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":455,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":456,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12"},{"lineNumber":457,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":458,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":459,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":460,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":461,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":462,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":463,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":464,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":465,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":466,"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":467,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":468,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":469,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":470,"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":471,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":472,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":473,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":474,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":475,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":476,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":477,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":478,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":479,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":480,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":481,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":482,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":483,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":484,"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":485,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":486,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":487,"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":488,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":489,"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":490,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":491,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":492,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":493,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":494,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":495,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":496,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":497,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":498,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":499,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":500,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"eunrcn":1,"Jawad280":120,"ashleygoh1":7,"-":372}},{"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":"eunrcn"},"content":"# Internhub User Guide","lastModifiedDate":"2024-02-28"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":"Intern Hub is a **desktop app for managing contacts, optimized for use via a Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, InternHub can get your contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2024-03-01"},{"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":"eunrcn"},"content":"1. Download the latest `internhub.jar` from [here](https://github.com/se-edu/addressbook-level3/releases).","lastModifiedDate":"2024-02-28"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your AddressBook.","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"eunrcn"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar internhub.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":25,"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":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":"-"},"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":29,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"ashleygoh1"},"content":" * `add c/Food Panda p/12345678 e/panda@food.com a/CBD t/F jd/Front End Intern d/15-04-2024 0900 id/6 months s/500","lastModifiedDate":"2024-02-27"},{"lineNumber":34,"author":{"gitId":"ashleygoh1"},"content":" ` : Adds a contact named `Food Panda` to the Address Book.","lastModifiedDate":"2024-02-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2023-01-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"**Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"ashleygoh1"},"content":" e.g. in `add c/COMPANY_NAME`, `COMPANY_NAME` is a parameter which can be used as `add c/Food Panda`.","lastModifiedDate":"2024-02-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"ashleygoh1"},"content":" e.g `c/COMPANY_NAME [a/ADDRESS]` can be used as `c/Food Panda a/CBD` or as `c/Food Panda`.","lastModifiedDate":"2024-02-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"ashleygoh1"},"content":" e.g. if the command specifies `add c/COMPANY_NAME p/PHONE_NUMBER`, `p/PHONE_NUMBER add c/COMPANY_NAME` is also acceptable.","lastModifiedDate":"2024-02-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"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":62,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":64,"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":65,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"Jawad280"},"content":"### Adding a contact: `add`","lastModifiedDate":"2024-03-01"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"Jawad280"},"content":"Adds a contact to the address book.","lastModifiedDate":"2024-03-01"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"ashleygoh1"},"content":"Format: `add c/COMPANY_NAME p/PHONE_NUMBER e/EMAIL a/[ADDRESS] t/TAG jd/JOB_DESCRIPTION d/[INTERVIEW_DATE] id/INTERN_DURATION s/salary`","lastModifiedDate":"2024-02-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":84,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"ashleygoh1"},"content":"* `add c/FoodPanda p/12345678 e/panda@food.com a/CBD t/F jd/Front End Intern d/15-04-2024 0900 id/6 months s/500`","lastModifiedDate":"2024-02-27"},{"lineNumber":88,"author":{"gitId":"ashleygoh1"},"content":"* `add c/Shoppa p/99912345 e/panda@food.com t/F jd/Software Developer Intern id/6 months s/500`","lastModifiedDate":"2024-02-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"Jawad280"},"content":"### Listing all contacts : `list`","lastModifiedDate":"2024-03-01"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"Jawad280"},"content":"Shows a list of all contacts in the address book sorted in ascending order of interview dates. If a company contact does not have any interview dates yet, it will be pushed to the end of the list.","lastModifiedDate":"2024-03-01"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"Jawad280"},"content":"### Viewing a contact : `view`","lastModifiedDate":"2024-03-02"},{"lineNumber":97,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":98,"author":{"gitId":"Jawad280"},"content":"Views the details of the contact on the view panel in address book.","lastModifiedDate":"2024-03-02"},{"lineNumber":99,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":100,"author":{"gitId":"Jawad280"},"content":"Format: `View INDEX`","lastModifiedDate":"2024-03-02"},{"lineNumber":101,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":102,"author":{"gitId":"Jawad280"},"content":"* Views the contact at the specified `INDEX`. The index refers to the index number shown in the displayed contact list. The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-03-02"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":104,"author":{"gitId":"Jawad280"},"content":"Example:","lastModifiedDate":"2024-03-02"},{"lineNumber":105,"author":{"gitId":"Jawad280"},"content":"* `view 3` Shows the company name of the 3rd contact on the view panel.","lastModifiedDate":"2024-03-02"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":107,"author":{"gitId":"Jawad280"},"content":"### Editing a contact : `edit`","lastModifiedDate":"2024-03-01"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"Jawad280"},"content":"Edits an existing contact detail in the address book.","lastModifiedDate":"2024-03-01"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"Jawad280"},"content":"Format: `Edit INDEX c/[COMPANY_NAME] p/[PHONE_NUMBER] e/[EMAIL] a/[ADDRESS] t/[TAG] jd/[JOB_DESCRIPTION] d/[INTERVIEW_DATE] id/[INTERN_DURATION] s/[salary]`","lastModifiedDate":"2024-03-01"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"Jawad280"},"content":"* Edits the contact at the specified `INDEX`. The index refers to the index number shown in the displayed contact list. The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-03-01"},{"lineNumber":114,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"Jawad280"},"content":"* For `[INTERVIEW_DATE]`, if you want to remove a date, just enter `d/` and it will remove that field.","lastModifiedDate":"2024-03-01"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":118,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"Jawad280"},"content":"* `edit 1 p/91234567 e/foodpanda@example.com` Edits the phone number and email address of the 1st contact to be `91234567` and `foodpanda@example.com` respectively.","lastModifiedDate":"2024-03-01"},{"lineNumber":120,"author":{"gitId":"Jawad280"},"content":"* `edit 2 c/shopee` Edits the company name of the 2nd contact to be `shopee`.","lastModifiedDate":"2024-03-01"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"Jawad280"},"content":"### Locating contacts by name: `find`","lastModifiedDate":"2024-03-01"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"Jawad280"},"content":"Finds contacts whose names contain any of the given keywords.","lastModifiedDate":"2024-03-01"},{"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":"chenyixin0"},"content":"* The search is case-insensitive. e.g `shoppa` will match `Shoppa`","lastModifiedDate":"2024-02-29"},{"lineNumber":129,"author":{"gitId":"chenyixin0"},"content":"* The order of the keywords does not matter. e.g. `Food Panda` will match `Panda Food`","lastModifiedDate":"2024-02-29"},{"lineNumber":130,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"chenyixin0"},"content":"* Only full words will be matched e.g. `Shopp` will not match `Shoppa`","lastModifiedDate":"2024-02-29"},{"lineNumber":132,"author":{"gitId":"Jawad280"},"content":"* Contacts matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2024-03-01"},{"lineNumber":133,"author":{"gitId":"Jawad280"},"content":" e.g. `Happy Burger` will return `Happy Meal`, `Burger Queen`","lastModifiedDate":"2024-03-01"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"Jawad280"},"content":"* `find Happy` returns `happy` and `Happy Burger`","lastModifiedDate":"2024-03-01"},{"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":"Jawad280"},"content":"### Deleting a contact : `delete`","lastModifiedDate":"2024-03-01"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"Jawad280"},"content":"Deletes the specified contact from the address book.","lastModifiedDate":"2024-03-01"},{"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":"Jawad280"},"content":"* Deletes the contact at the specified `INDEX`.","lastModifiedDate":"2024-03-01"},{"lineNumber":147,"author":{"gitId":"Jawad280"},"content":"* The index refers to the index number shown in the displayed contact list.","lastModifiedDate":"2024-03-01"},{"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":"Jawad280"},"content":"* `list` followed by `delete 2` deletes the 2nd contact in the address book.","lastModifiedDate":"2024-03-01"},{"lineNumber":152,"author":{"gitId":"Jawad280"},"content":"* `find Betsy` followed by `delete 1` deletes the 1st contact in the results of the `find` command.","lastModifiedDate":"2024-03-01"},{"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":"-"},"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":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":"-"},"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":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":174,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":176,"author":{"gitId":"-"},"content":"**Caution:**","lastModifiedDate":"2023-09-12"},{"lineNumber":177,"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.\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":178,"author":{"gitId":"-"},"content":"Furthermore, certain edits can cause the AddressBook to behave in unexpected ways (e.g., if a value entered is outside the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.","lastModifiedDate":"2023-09-12"},{"lineNumber":179,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":180,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":182,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"chenyixin0"},"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 InternHub home folder.","lastModifiedDate":"2024-02-29"},{"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":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":197,"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":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":199,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":201,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"Jawad280"},"content":"| Action | Format, Examples |","lastModifiedDate":"2024-03-01"},{"lineNumber":204,"author":{"gitId":"Jawad280"},"content":"|------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|","lastModifiedDate":"2024-03-01"},{"lineNumber":205,"author":{"gitId":"Jawad280"},"content":"| **Add** | `add c/COMPANY_NAME p/PHONE_NUMBER e/EMAIL a/[ADDRESS] t/TAG jd/JOB_DESCRIPTION d/[INTERVIEW_DATE] id/INTERN_DURATION s/salary` \u003cbr\u003e e.g., `add c/FoodPanda p/12345678 e/panda@food.com a/CBD t/F jd/Front End Intern d/15-04-2024 0900 id/6 months s/500` |","lastModifiedDate":"2024-03-01"},{"lineNumber":206,"author":{"gitId":"Jawad280"},"content":"| **Clear** | `clear` |","lastModifiedDate":"2024-03-01"},{"lineNumber":207,"author":{"gitId":"Jawad280"},"content":"| **Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3` |","lastModifiedDate":"2024-03-01"},{"lineNumber":208,"author":{"gitId":"Jawad280"},"content":"| **Edit** | `Edit INDEX c/[COMPANY_NAME] p/[PHONE_NUMBER] e/[EMAIL] a/[ADDRESS] t/[TAG] jd/[JOB_DESCRIPTION] d/[INTERVIEW_DATE] id/[INTERN_DURATION] s/[salary]`\u003cbr\u003e e.g.,`Edit 2 p/9998765` |","lastModifiedDate":"2024-03-01"},{"lineNumber":209,"author":{"gitId":"Jawad280"},"content":"| **Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find foodpanda` |","lastModifiedDate":"2024-03-01"},{"lineNumber":210,"author":{"gitId":"Jawad280"},"content":"| **List** | `list` |","lastModifiedDate":"2024-03-01"},{"lineNumber":211,"author":{"gitId":"Jawad280"},"content":"| **View** | `view INDEX`\u003cbr\u003e e.g., `view 3` |","lastModifiedDate":"2024-03-02"},{"lineNumber":212,"author":{"gitId":"Jawad280"},"content":"| **Help** | `help` |","lastModifiedDate":"2024-03-01"}],"authorContributionMap":{"eunrcn":3,"chenyixin0":4,"Jawad280":43,"ashleygoh1":8,"-":154}},{"path":"docs/_markbind/layouts/default.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003chead-bottom\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003clink rel\u003d\"stylesheet\" href\u003d\"{{baseUrl}}/stylesheets/main.css\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c/head-bottom\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003cheader sticky\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cnavbar type\u003d\"dark\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"ashleygoh1"},"content":" \u003ca slot\u003d\"brand\" href\u003d\"{{baseUrl}}/index.html\" title\u003d\"Home\" class\u003d\"navbar-brand\"\u003eInternHub\u003c/a\u003e","lastModifiedDate":"2024-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/index.html\" class\u003d\"nav-link\"\u003eHome\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/UserGuide.html\" class\u003d\"nav-link\"\u003eUser Guide\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/DeveloperGuide.html\" class\u003d\"nav-link\"\u003eDeveloper Guide\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/AboutUs.html\" class\u003d\"nav-link\"\u003eAbout Us\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"https://github.com/se-edu/addressbook-level3\" target\u003d\"_blank\" class\u003d\"nav-link\"\u003e\u003cmd\u003e:fab-github:\u003c/md\u003e\u003c/a\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cli slot\u003d\"right\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cform class\u003d\"navbar-form\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003csearchbar :data\u003d\"searchData\" placeholder\u003d\"Search\" :on-hit\u003d\"searchCallback\" menu-align-right\u003e\u003c/searchbar\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/form\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/navbar\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"\u003c/header\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"flex-body\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"site-nav\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"site-nav-top\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"fw-bold mb-2\" style\u003d\"font-size: 1.25rem;\"\u003eSite Map\u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003csite-nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"* [Home]({{ baseUrl }}/index.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"* [User Guide]({{ baseUrl }}/UserGuide.html) :expanded:","lastModifiedDate":"2023-09-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * [Quick Start]({{ baseUrl }}/UserGuide.html#quick-start)","lastModifiedDate":"2023-09-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * [Features]({{ baseUrl }}/UserGuide.html#features)","lastModifiedDate":"2023-09-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * [FAQ]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * [Command Summary]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":"* [Developer Guide]({{ baseUrl }}/DeveloperGuide.html) :expanded:","lastModifiedDate":"2023-09-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * [Acknowledgements]({{ baseUrl }}/DeveloperGuide.html#acknowledgements)","lastModifiedDate":"2023-09-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * [Setting Up]({{ baseUrl }}/DeveloperGuide.html#setting-up-getting-started)","lastModifiedDate":"2023-09-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * [Design]({{ baseUrl }}/DeveloperGuide.html#design)","lastModifiedDate":"2023-09-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * [Implementation]({{ baseUrl }}/DeveloperGuide.html#implementation)","lastModifiedDate":"2023-09-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * [Documentation, logging, testing, configuration, dev-ops]({{ baseUrl }}/DeveloperGuide.html#documentation-logging-testing-configuration-dev-ops)","lastModifiedDate":"2023-09-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * [Appendix: Requirements]({{ baseUrl }}/DeveloperGuide.html#appendix-requirements)","lastModifiedDate":"2023-09-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * [Appendix: Instructions for manual testing]({{ baseUrl }}/DeveloperGuide.html#appendix-instructions-for-manual-testing)","lastModifiedDate":"2023-09-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":"* Tutorials","lastModifiedDate":"2023-09-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * [Tracing code]({{ baseUrl }}/tutorials/TracingCode.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * [Adding a command]({{ baseUrl }}/tutorials/AddRemark.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * [Removing Fields]({{ baseUrl }}/tutorials/RemovingFields.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [About Us]({{ baseUrl }}/AboutUs.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/site-nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cdiv id\u003d\"content-wrapper\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" {{ content }}","lastModifiedDate":"2023-09-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"page-nav\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cpage-nav /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003cscroll-top-button\u003e\u003c/scroll-top-button\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":"\u003cfooter\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003c!-- Support MarkBind by including a link to us on your landing page! --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"text-center\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u003csmall\u003e[\u003cmd\u003e**Powered by**\u003c/md\u003e \u003cimg src\u003d\"https://markbind.org/favicon.ico\" width\u003d\"30\"\u003e {{MarkBind}}, generated on {{timestamp}}]\u003c/small\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003c/footer\u003e","lastModifiedDate":"2023-09-12"}],"authorContributionMap":{"ashleygoh1":1,"-":66}},{"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":"-"},"content":"AddressBook *-right-\u003e \"1\" UniquePersonList","lastModifiedDate":"2019-07-30"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"UniquePersonList -right-\u003e Person","lastModifiedDate":"2021-07-31"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"Person *--\u003e Name","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"Person *--\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"Person *--\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"Person *--\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"eunrcn"},"content":"Person *--\u003e Tag","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"eunrcn"},"content":"Person *--\u003e InternDuration","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"eunrcn"},"content":"Person *--\u003e InterviewDate","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"eunrcn"},"content":"Person *--\u003e JobDescription","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"eunrcn"},"content":"Person *--\u003e Salary","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"eunrcn":5,"-":15}},{"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":"-"},"content":"Class UniquePersonList","lastModifiedDate":"2021-07-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Class Person","lastModifiedDate":"2019-07-03"},{"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":"eunrcn"},"content":"Class CompanyName","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Class Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"Class Tag","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"eunrcn"},"content":"Class InternDuration","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"eunrcn"},"content":"Class InterviewDate","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"eunrcn"},"content":"Class JobDescription","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"eunrcn"},"content":"Class Salary","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":27,"author":{"gitId":"-"},"content":"Class I #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"AddressBook .up.|\u003e ReadOnlyAddressBook","lastModifiedDate":"2019-07-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"ModelManager .up.|\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":36,"author":{"gitId":"-"},"content":"Model .right.\u003e ReadOnlyUserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"Model .left.\u003e ReadOnlyAddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"ModelManager -left-\u003e \"1\" AddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":39,"author":{"gitId":"-"},"content":"ModelManager -right-\u003e \"1\" UserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":40,"author":{"gitId":"-"},"content":"UserPrefs .up.|\u003e ReadOnlyUserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"AddressBook *--\u003e \"1\" UniquePersonList","lastModifiedDate":"2019-07-30"},{"lineNumber":43,"author":{"gitId":"-"},"content":"UniquePersonList --\u003e \"~* all\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":44,"author":{"gitId":"eunrcn"},"content":"Person *--\u003e CompanyName","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":"Person *--\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"Person *--\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":47,"author":{"gitId":"-"},"content":"Person *--\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":48,"author":{"gitId":"eunrcn"},"content":"Person *--\u003e Tag","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"eunrcn"},"content":"Person *--\u003e InternDuration","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"eunrcn"},"content":"Person *--\u003e InterviewDate","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"eunrcn"},"content":"Person *--\u003e JobDescription","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"eunrcn"},"content":"Person *--\u003e Salary","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":54,"author":{"gitId":"-"},"content":"Person -[hidden]up--\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"UniquePersonList -[hidden]right-\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":57,"author":{"gitId":"eunrcn"},"content":"CompanyName -[hidden]right-\u003e Phone","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"-"},"content":"Phone -[hidden]right-\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":"Address -[hidden]right-\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":61,"author":{"gitId":"-"},"content":"ModelManager --\u003e \"~* filtered\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":62,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"eunrcn":12,"-":50}},{"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":"-"},"content":"Class PersonListPanel","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"Class PersonCard","lastModifiedDate":"2019-07-03"},{"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":"Jawad280"},"content":"Class ViewPanel","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"package Model \u003c\u003cRectangle\u003e\u003e {","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Class HiddenModel #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":"package Logic \u003c\u003cRectangle\u003e\u003e {","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"Class HiddenLogic #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Ui","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"UiManager .left.|\u003e Ui","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"UiManager -down-\u003e \"1\" MainWindow","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" CommandBox","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" ResultDisplay","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" PersonListPanel","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" StatusBarFooter","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"MainWindow --\u003e \"0..1\" HelpWindow","lastModifiedDate":"2021-07-31"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":"PersonListPanel -down-\u003e \"*\" PersonCard","lastModifiedDate":"2021-07-31"},{"lineNumber":41,"author":{"gitId":"Jawad280"},"content":"PersonListPanel -down-\u003e \"1\" ViewPanel","lastModifiedDate":"2024-03-22"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"MainWindow -left-|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"ResultDisplay --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"CommandBox --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":47,"author":{"gitId":"-"},"content":"PersonListPanel --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":48,"author":{"gitId":"-"},"content":"PersonCard --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":49,"author":{"gitId":"Jawad280"},"content":"ViewPanel --|\u003e UiPart","lastModifiedDate":"2024-03-22"},{"lineNumber":50,"author":{"gitId":"-"},"content":"StatusBarFooter --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"HelpWindow --|\u003e UiPart","lastModifiedDate":"2021-07-31"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":53,"author":{"gitId":"-"},"content":"PersonCard ..\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":54,"author":{"gitId":"Jawad280"},"content":"ViewPanel ..\u003e Model","lastModifiedDate":"2024-03-22"},{"lineNumber":55,"author":{"gitId":"-"},"content":"UiManager -right-\u003e Logic","lastModifiedDate":"2019-07-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":"MainWindow -left-\u003e Logic","lastModifiedDate":"2019-07-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":58,"author":{"gitId":"-"},"content":"PersonListPanel -[hidden]left- HelpWindow","lastModifiedDate":"2019-07-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":"HelpWindow -[hidden]left- CommandBox","lastModifiedDate":"2019-07-03"},{"lineNumber":60,"author":{"gitId":"-"},"content":"CommandBox -[hidden]left- ResultDisplay","lastModifiedDate":"2019-07-03"},{"lineNumber":61,"author":{"gitId":"-"},"content":"ResultDisplay -[hidden]left- StatusBarFooter","lastModifiedDate":"2019-07-30"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":63,"author":{"gitId":"-"},"content":"MainWindow -[hidden]-|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":64,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"Jawad280":4,"-":60}},{"path":"docs/team/ashley.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"ashleygoh1"},"content":"---","lastModifiedDate":"2024-02-27"},{"lineNumber":2,"author":{"gitId":"ashleygoh1"},"content":" layout: default.md","lastModifiedDate":"2024-02-27"},{"lineNumber":3,"author":{"gitId":"ashleygoh1"},"content":" title: \"John Doe\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-02-27"},{"lineNumber":4,"author":{"gitId":"ashleygoh1"},"content":"---","lastModifiedDate":"2024-02-27"},{"lineNumber":5,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":6,"author":{"gitId":"ashleygoh1"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-02-27"},{"lineNumber":7,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":8,"author":{"gitId":"ashleygoh1"},"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":"2024-02-27"},{"lineNumber":9,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":10,"author":{"gitId":"ashleygoh1"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-02-27"},{"lineNumber":11,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":12,"author":{"gitId":"ashleygoh1"},"content":"* **New Feature**: Allow user to add new contact to the address book.","lastModifiedDate":"2024-02-27"},{"lineNumber":13,"author":{"gitId":"ashleygoh1"},"content":" * What it does: Allow user to add the internship information that they applied for","lastModifiedDate":"2024-02-27"},{"lineNumber":14,"author":{"gitId":"ashleygoh1"},"content":" * Justification: This feature allow users to conveniently store all relevant internship details in one centralized location alongside their other contacts. This helps them stay organized and easily access internship information when needed.","lastModifiedDate":"2024-02-27"},{"lineNumber":15,"author":{"gitId":"ashleygoh1"},"content":" * Credits: The feature builds upon the robust foundation of AB3, optimizing code to accommodate new parameters.","lastModifiedDate":"2024-02-27"},{"lineNumber":16,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":17,"author":{"gitId":"ashleygoh1"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-02-27"},{"lineNumber":18,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":19,"author":{"gitId":"ashleygoh1"},"content":"* **Project management**:","lastModifiedDate":"2024-02-27"},{"lineNumber":20,"author":{"gitId":"ashleygoh1"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-02-27"},{"lineNumber":21,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":22,"author":{"gitId":"ashleygoh1"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-02-27"},{"lineNumber":23,"author":{"gitId":"ashleygoh1"},"content":" * Update existing tests for existing features with coverage of 78.57% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-02-27"},{"lineNumber":24,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":25,"author":{"gitId":"ashleygoh1"},"content":"* **Documentation**:","lastModifiedDate":"2024-02-27"},{"lineNumber":26,"author":{"gitId":"ashleygoh1"},"content":" * User Guide:","lastModifiedDate":"2024-02-27"},{"lineNumber":27,"author":{"gitId":"ashleygoh1"},"content":" * Added documentation for the features `add` and `edit` [\\#72]()","lastModifiedDate":"2024-02-27"},{"lineNumber":28,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":29,"author":{"gitId":"ashleygoh1"},"content":"* **Community**:","lastModifiedDate":"2024-02-27"},{"lineNumber":30,"author":{"gitId":"ashleygoh1"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-02-27"},{"lineNumber":31,"author":{"gitId":"ashleygoh1"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-02-27"},{"lineNumber":32,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":33,"author":{"gitId":"ashleygoh1"},"content":"* **Tools**:","lastModifiedDate":"2024-02-27"},{"lineNumber":34,"author":{"gitId":"ashleygoh1"},"content":" * Set up codecov to the team repo","lastModifiedDate":"2024-02-27"},{"lineNumber":35,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":36,"author":{"gitId":"ashleygoh1"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-02-27"}],"authorContributionMap":{"ashleygoh1":36}},{"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":"ashleygoh1"},"content":" builder.append(person.getCompanyName())","lastModifiedDate":"2024-02-25"},{"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":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"ashleygoh1"},"content":" .append(\"; Tags: \")","lastModifiedDate":"2024-02-25"},{"lineNumber":47,"author":{"gitId":"ashleygoh1"},"content":" .append(person.getTag())","lastModifiedDate":"2024-02-25"},{"lineNumber":48,"author":{"gitId":"ashleygoh1"},"content":" .append(\"; Job Description: \")","lastModifiedDate":"2024-02-25"},{"lineNumber":49,"author":{"gitId":"ashleygoh1"},"content":" .append(person.getJobDescription())","lastModifiedDate":"2024-02-25"},{"lineNumber":50,"author":{"gitId":"ashleygoh1"},"content":" .append(\"; Interview Date: \")","lastModifiedDate":"2024-02-25"},{"lineNumber":51,"author":{"gitId":"ashleygoh1"},"content":" .append(person.getInterviewDate())","lastModifiedDate":"2024-02-25"},{"lineNumber":52,"author":{"gitId":"ashleygoh1"},"content":" .append(\"; Internship Duration: \")","lastModifiedDate":"2024-02-25"},{"lineNumber":53,"author":{"gitId":"ashleygoh1"},"content":" .append(person.getInternDuration())","lastModifiedDate":"2024-02-25"},{"lineNumber":54,"author":{"gitId":"ashleygoh1"},"content":" .append(\"; Salary: \")","lastModifiedDate":"2024-02-25"},{"lineNumber":55,"author":{"gitId":"ashleygoh1"},"content":" .append(person.getSalary());","lastModifiedDate":"2024-02-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"ashleygoh1":11,"-":48}},{"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":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_INTERN_DURATION;","lastModifiedDate":"2024-02-26"},{"lineNumber":7,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_INTERVIEW_DATE;","lastModifiedDate":"2024-02-26"},{"lineNumber":8,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_JOB_DESCRIPTION;","lastModifiedDate":"2024-02-26"},{"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-05-09"},{"lineNumber":11,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SALARY;","lastModifiedDate":"2024-02-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"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":"-"},"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":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a person to the address book. \"","lastModifiedDate":"2016-08-24"},{"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":"ashleygoh1"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2024-02-26"},{"lineNumber":33,"author":{"gitId":"ashleygoh1"},"content":" + PREFIX_TAG + \"TAG \"","lastModifiedDate":"2024-02-26"},{"lineNumber":34,"author":{"gitId":"ashleygoh1"},"content":" + PREFIX_JOB_DESCRIPTION + \"JOB DESCRIPTION \"","lastModifiedDate":"2024-02-26"},{"lineNumber":35,"author":{"gitId":"ashleygoh1"},"content":" + \"[\" + PREFIX_INTERVIEW_DATE + \"INTERVIEW DATE] \"","lastModifiedDate":"2024-02-26"},{"lineNumber":36,"author":{"gitId":"ashleygoh1"},"content":" + PREFIX_INTERN_DURATION + \"INTERN DURATION \"","lastModifiedDate":"2024-02-26"},{"lineNumber":37,"author":{"gitId":"ashleygoh1"},"content":" + PREFIX_SALARY + \"SALARY\\n\"","lastModifiedDate":"2024-02-26"},{"lineNumber":38,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":39,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06"},{"lineNumber":40,"author":{"gitId":"ashleygoh1"},"content":" + PREFIX_NAME + \"Happy Burger \"","lastModifiedDate":"2024-02-26"},{"lineNumber":41,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":42,"author":{"gitId":"ashleygoh1"},"content":" + PREFIX_EMAIL + \"HappyBurger@example.com \"","lastModifiedDate":"2024-02-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":44,"author":{"gitId":"ashleygoh1"},"content":" + PREFIX_TAG + \"I \"","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"ashleygoh1"},"content":" + PREFIX_JOB_DESCRIPTION + \"Software Developer intern \"","lastModifiedDate":"2024-02-26"},{"lineNumber":46,"author":{"gitId":"eunrcn"},"content":" + PREFIX_INTERVIEW_DATE + \"03-03-2024 1200 \"","lastModifiedDate":"2024-02-28"},{"lineNumber":47,"author":{"gitId":"ashleygoh1"},"content":" + PREFIX_INTERN_DURATION + \"3 months \"","lastModifiedDate":"2024-02-26"},{"lineNumber":48,"author":{"gitId":"ashleygoh1"},"content":" + PREFIX_SALARY + \"1000\";","lastModifiedDate":"2024-02-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: %1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book\";","lastModifiedDate":"2016-08-24"},{"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":{"eunrcn":1,"ashleygoh1":17,"-":78}},{"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":"chenyixin0"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2024-02-29"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-02-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Represents the result of a command execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class CommandResult {","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":16,"author":{"gitId":"-"},"content":" private final String feedbackToUser;","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" /** Help information should be shown to the user. */","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private final boolean showHelp;","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /** The application should exit. */","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final boolean exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":23,"author":{"gitId":"Jawad280"},"content":" private final Person viewPerson;","lastModifiedDate":"2024-02-26"},{"lineNumber":24,"author":{"gitId":"chenyixin0"},"content":" private final FilteredList\u003cPerson\u003e viewList;","lastModifiedDate":"2024-02-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Constructs a {@code CommandResult} with the specified fields.","lastModifiedDate":"2018-12-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public CommandResult(String feedbackToUser, boolean showHelp, boolean exit) {","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"-"},"content":" this.feedbackToUser \u003d requireNonNull(feedbackToUser);","lastModifiedDate":"2017-05-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":" this.showHelp \u003d showHelp;","lastModifiedDate":"2018-12-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.exit \u003d exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":33,"author":{"gitId":"Jawad280"},"content":" this.viewPerson \u003d null;","lastModifiedDate":"2024-02-26"},{"lineNumber":34,"author":{"gitId":"chenyixin0"},"content":" this.viewList \u003d null;","lastModifiedDate":"2024-02-29"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Constructs a {@code CommandResult} with the specified {@code feedbackToUser},","lastModifiedDate":"2018-12-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * and other fields set to their default value.","lastModifiedDate":"2018-12-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public CommandResult(String feedbackToUser) {","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this(feedbackToUser, false, false);","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":45,"author":{"gitId":"Jawad280"},"content":" /**","lastModifiedDate":"2024-02-26"},{"lineNumber":46,"author":{"gitId":"Jawad280"},"content":" * Constructs a {@code CommandResult} with the specified {@code feedbackToUser},","lastModifiedDate":"2024-02-26"},{"lineNumber":47,"author":{"gitId":"Jawad280"},"content":" * and other fields set to their default value.","lastModifiedDate":"2024-02-26"},{"lineNumber":48,"author":{"gitId":"Jawad280"},"content":" */","lastModifiedDate":"2024-02-26"},{"lineNumber":49,"author":{"gitId":"Jawad280"},"content":" public CommandResult(String feedbackToUser, Person viewPerson) {","lastModifiedDate":"2024-02-26"},{"lineNumber":50,"author":{"gitId":"Jawad280"},"content":" this.feedbackToUser \u003d requireNonNull(feedbackToUser);","lastModifiedDate":"2024-02-26"},{"lineNumber":51,"author":{"gitId":"Jawad280"},"content":" this.showHelp \u003d false;","lastModifiedDate":"2024-02-26"},{"lineNumber":52,"author":{"gitId":"Jawad280"},"content":" this.exit \u003d false;","lastModifiedDate":"2024-02-26"},{"lineNumber":53,"author":{"gitId":"Jawad280"},"content":" this.viewPerson \u003d viewPerson;","lastModifiedDate":"2024-02-26"},{"lineNumber":54,"author":{"gitId":"chenyixin0"},"content":" this.viewList \u003d null;","lastModifiedDate":"2024-02-29"},{"lineNumber":55,"author":{"gitId":"chenyixin0"},"content":" }","lastModifiedDate":"2024-02-29"},{"lineNumber":56,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":57,"author":{"gitId":"Jawad280"},"content":" /**","lastModifiedDate":"2024-03-01"},{"lineNumber":58,"author":{"gitId":"Jawad280"},"content":" * Constructs a {@code CommandResult} with the specified {@code feedbackToUser},","lastModifiedDate":"2024-03-01"},{"lineNumber":59,"author":{"gitId":"Jawad280"},"content":" * and other fields set to their default value.","lastModifiedDate":"2024-03-01"},{"lineNumber":60,"author":{"gitId":"Jawad280"},"content":" */","lastModifiedDate":"2024-03-01"},{"lineNumber":61,"author":{"gitId":"chenyixin0"},"content":" public CommandResult(String feedbackToUser, FilteredList\u003cPerson\u003e viewList) {","lastModifiedDate":"2024-02-29"},{"lineNumber":62,"author":{"gitId":"chenyixin0"},"content":" this.feedbackToUser \u003d requireNonNull(feedbackToUser);","lastModifiedDate":"2024-02-29"},{"lineNumber":63,"author":{"gitId":"chenyixin0"},"content":" this.showHelp \u003d false;","lastModifiedDate":"2024-02-29"},{"lineNumber":64,"author":{"gitId":"chenyixin0"},"content":" this.exit \u003d false;","lastModifiedDate":"2024-02-29"},{"lineNumber":65,"author":{"gitId":"chenyixin0"},"content":" this.viewPerson \u003d null;","lastModifiedDate":"2024-02-29"},{"lineNumber":66,"author":{"gitId":"chenyixin0"},"content":" this.viewList \u003d viewList;","lastModifiedDate":"2024-02-29"},{"lineNumber":67,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public String getFeedbackToUser() {","lastModifiedDate":"2018-12-09"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return feedbackToUser;","lastModifiedDate":"2018-12-09"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":72,"author":{"gitId":"Jawad280"},"content":" public Person getViewPerson() {","lastModifiedDate":"2024-02-26"},{"lineNumber":73,"author":{"gitId":"Jawad280"},"content":" return this.viewPerson;","lastModifiedDate":"2024-02-26"},{"lineNumber":74,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":75,"author":{"gitId":"chenyixin0"},"content":" public FilteredList\u003cPerson\u003e getViewList() {","lastModifiedDate":"2024-02-29"},{"lineNumber":76,"author":{"gitId":"chenyixin0"},"content":" return this.viewList;","lastModifiedDate":"2024-02-29"},{"lineNumber":77,"author":{"gitId":"chenyixin0"},"content":" }","lastModifiedDate":"2024-02-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public boolean isShowHelp() {","lastModifiedDate":"2018-12-09"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return showHelp;","lastModifiedDate":"2018-12-09"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public boolean isExit() {","lastModifiedDate":"2018-12-09"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":87,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2018-12-09"},{"lineNumber":90,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-12-09"},{"lineNumber":91,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-12-09"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":94,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2018-12-09"},{"lineNumber":95,"author":{"gitId":"-"},"content":" if (!(other instanceof CommandResult)) {","lastModifiedDate":"2018-12-09"},{"lineNumber":96,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-12-09"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":99,"author":{"gitId":"-"},"content":" CommandResult otherCommandResult \u003d (CommandResult) other;","lastModifiedDate":"2018-12-09"},{"lineNumber":100,"author":{"gitId":"-"},"content":" return feedbackToUser.equals(otherCommandResult.feedbackToUser)","lastModifiedDate":"2018-12-09"},{"lineNumber":101,"author":{"gitId":"-"},"content":" \u0026\u0026 showHelp \u003d\u003d otherCommandResult.showHelp","lastModifiedDate":"2018-12-09"},{"lineNumber":102,"author":{"gitId":"-"},"content":" \u0026\u0026 exit \u003d\u003d otherCommandResult.exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2018-12-09"},{"lineNumber":107,"author":{"gitId":"-"},"content":" return Objects.hash(feedbackToUser, showHelp, exit);","lastModifiedDate":"2018-12-09"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":" .add(\"feedbackToUser\", feedbackToUser)","lastModifiedDate":"2019-02-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":" .add(\"showHelp\", showHelp)","lastModifiedDate":"2019-02-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" .add(\"exit\", exit)","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":"2019-02-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"chenyixin0":15,"Jawad280":21,"-":83}},{"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":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"minghowC"},"content":" // Output message: \"Deleted Person: Person Name\"","lastModifiedDate":"2024-03-01"},{"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":"-"},"content":" public DeleteCommand(Index targetIndex) {","lastModifiedDate":"2017-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2016-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 CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":" Person personToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2018-04-19"},{"lineNumber":45,"author":{"gitId":"-"},"content":" model.deletePerson(personToDelete);","lastModifiedDate":"2016-09-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete)));","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (!(other instanceof DeleteCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return targetIndex.equals(otherDeleteCommand.targetIndex);","lastModifiedDate":"2023-07-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"minghowC":1,"-":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":"2024-02-28"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-02-28"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-02-28"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-02-28"},{"lineNumber":6,"author":{"gitId":"eunrcn"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_INTERN_DURATION;","lastModifiedDate":"2024-02-28"},{"lineNumber":7,"author":{"gitId":"eunrcn"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_INTERVIEW_DATE;","lastModifiedDate":"2024-02-28"},{"lineNumber":8,"author":{"gitId":"eunrcn"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_JOB_DESCRIPTION;","lastModifiedDate":"2024-02-28"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-02-28"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-02-28"},{"lineNumber":11,"author":{"gitId":"eunrcn"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SALARY;","lastModifiedDate":"2024-02-28"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-02-28"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-02-28"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2024-02-28"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2024-02-28"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2024-02-28"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-02-28"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2024-02-28"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-02-28"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-02-28"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-02-28"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-02-28"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-02-28"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-02-29"},{"lineNumber":27,"author":{"gitId":"eunrcn"},"content":"import seedu.address.model.person.InternDuration;","lastModifiedDate":"2024-02-28"},{"lineNumber":28,"author":{"gitId":"eunrcn"},"content":"import seedu.address.model.person.InterviewDate;","lastModifiedDate":"2024-02-28"},{"lineNumber":29,"author":{"gitId":"Jawad280"},"content":"import seedu.address.model.person.JobDescription;","lastModifiedDate":"2024-02-29"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-02-28"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-02-28"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-02-28"},{"lineNumber":33,"author":{"gitId":"Jawad280"},"content":"import seedu.address.model.person.Salary;","lastModifiedDate":"2024-02-29"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-02-28"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":36,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2024-02-28"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2024-02-28"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-28"},{"lineNumber":39,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2024-02-28"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2024-02-28"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the person identified \"","lastModifiedDate":"2024-02-28"},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2024-02-28"},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2024-02-28"},{"lineNumber":46,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2024-02-28"},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2024-02-28"},{"lineNumber":48,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2024-02-28"},{"lineNumber":49,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2024-02-28"},{"lineNumber":50,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2024-02-28"},{"lineNumber":51,"author":{"gitId":"eunrcn"},"content":" + \"[\" + PREFIX_JOB_DESCRIPTION + \"JOB DESCRIPTION] \"","lastModifiedDate":"2024-02-28"},{"lineNumber":52,"author":{"gitId":"eunrcn"},"content":" + \"[\" + PREFIX_INTERVIEW_DATE + \"INTERVIEW DATE] \"","lastModifiedDate":"2024-02-28"},{"lineNumber":53,"author":{"gitId":"eunrcn"},"content":" + \"[\" + PREFIX_INTERN_DURATION + \"INTERN DURATION] \"","lastModifiedDate":"2024-02-28"},{"lineNumber":54,"author":{"gitId":"eunrcn"},"content":" + \"[\" + PREFIX_SALARY + \"SALARY] \"","lastModifiedDate":"2024-02-28"},{"lineNumber":55,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2024-02-28"},{"lineNumber":56,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2024-02-28"},{"lineNumber":57,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2024-02-28"},{"lineNumber":58,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2024-02-28"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2024-02-28"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2024-02-28"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2024-02-28"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":64,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2024-02-28"},{"lineNumber":65,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2024-02-28"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-02-28"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2024-02-28"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2024-02-28"},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-28"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2024-02-28"},{"lineNumber":72,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2024-02-28"},{"lineNumber":73,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2024-02-28"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":75,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2024-02-28"},{"lineNumber":76,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2024-02-28"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-02-28"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-02-28"},{"lineNumber":81,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2024-02-28"},{"lineNumber":82,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-02-28"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":84,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-02-28"},{"lineNumber":85,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-02-28"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":88,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-02-28"},{"lineNumber":89,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2024-02-28"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":91,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2024-02-28"},{"lineNumber":92,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2024-02-28"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":95,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2024-02-28"},{"lineNumber":96,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-02-28"},{"lineNumber":97,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2024-02-28"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-02-28"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2024-02-28"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2024-02-28"},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-28"},{"lineNumber":104,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2024-02-28"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2024-02-28"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":107,"author":{"gitId":"eunrcn"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getCompanyName());","lastModifiedDate":"2024-02-28"},{"lineNumber":108,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2024-02-28"},{"lineNumber":109,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2024-02-28"},{"lineNumber":110,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2024-02-28"},{"lineNumber":111,"author":{"gitId":"Jawad280"},"content":" JobDescription updatedJobDescription \u003d editPersonDescriptor","lastModifiedDate":"2024-02-29"},{"lineNumber":112,"author":{"gitId":"Jawad280"},"content":" .getJobDescription()","lastModifiedDate":"2024-02-29"},{"lineNumber":113,"author":{"gitId":"Jawad280"},"content":" .orElse(personToEdit.getJobDescription());","lastModifiedDate":"2024-02-29"},{"lineNumber":114,"author":{"gitId":"Jawad280"},"content":" InterviewDate updatedInterviewDate \u003d editPersonDescriptor","lastModifiedDate":"2024-02-29"},{"lineNumber":115,"author":{"gitId":"Jawad280"},"content":" .getInterviewDate()","lastModifiedDate":"2024-02-29"},{"lineNumber":116,"author":{"gitId":"Jawad280"},"content":" .orElse(personToEdit.getInterviewDate());","lastModifiedDate":"2024-02-29"},{"lineNumber":117,"author":{"gitId":"Jawad280"},"content":" InternDuration updatedInternDuration \u003d editPersonDescriptor","lastModifiedDate":"2024-02-29"},{"lineNumber":118,"author":{"gitId":"Jawad280"},"content":" .getInternDuration()","lastModifiedDate":"2024-02-29"},{"lineNumber":119,"author":{"gitId":"Jawad280"},"content":" .orElse(personToEdit.getInternDuration());","lastModifiedDate":"2024-02-29"},{"lineNumber":120,"author":{"gitId":"eunrcn"},"content":" Salary updatedSalary \u003d editPersonDescriptor.getSalary().orElse(personToEdit.getSalary());","lastModifiedDate":"2024-02-28"},{"lineNumber":121,"author":{"gitId":"Jawad280"},"content":" Tag updatedTags \u003d editPersonDescriptor.getTag().orElse(personToEdit.getTag());","lastModifiedDate":"2024-02-29"},{"lineNumber":122,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":123,"author":{"gitId":"eunrcn"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTags,","lastModifiedDate":"2024-02-28"},{"lineNumber":124,"author":{"gitId":"eunrcn"},"content":" updatedJobDescription, updatedInterviewDate,","lastModifiedDate":"2024-02-28"},{"lineNumber":125,"author":{"gitId":"eunrcn"},"content":" updatedInternDuration, updatedSalary);","lastModifiedDate":"2024-02-28"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-02-28"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-02-28"},{"lineNumber":130,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-02-28"},{"lineNumber":131,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2024-02-28"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":134,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-02-28"},{"lineNumber":135,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2024-02-28"},{"lineNumber":136,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2024-02-28"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":139,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2024-02-28"},{"lineNumber":140,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2024-02-28"},{"lineNumber":141,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2024-02-28"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-02-28"},{"lineNumber":145,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2024-02-28"},{"lineNumber":146,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-02-28"},{"lineNumber":147,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2024-02-28"},{"lineNumber":148,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2024-02-28"},{"lineNumber":149,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2024-02-28"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":152,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-02-28"},{"lineNumber":153,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2024-02-28"},{"lineNumber":154,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2024-02-28"},{"lineNumber":155,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-28"},{"lineNumber":156,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2024-02-28"},{"lineNumber":157,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2024-02-28"},{"lineNumber":158,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2024-02-28"},{"lineNumber":159,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2024-02-28"},{"lineNumber":160,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2024-02-28"},{"lineNumber":161,"author":{"gitId":"Jawad280"},"content":" private Tag tag;","lastModifiedDate":"2024-02-29"},{"lineNumber":162,"author":{"gitId":"eunrcn"},"content":" private JobDescription jobDescription;","lastModifiedDate":"2024-02-28"},{"lineNumber":163,"author":{"gitId":"eunrcn"},"content":" private InternDuration internDuration;","lastModifiedDate":"2024-02-28"},{"lineNumber":164,"author":{"gitId":"eunrcn"},"content":" private InterviewDate interviewDate;","lastModifiedDate":"2024-02-28"},{"lineNumber":165,"author":{"gitId":"eunrcn"},"content":" private Salary salary;","lastModifiedDate":"2024-02-28"},{"lineNumber":166,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":168,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2024-02-28"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":170,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-02-28"},{"lineNumber":171,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2024-02-28"},{"lineNumber":172,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2024-02-28"},{"lineNumber":173,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-28"},{"lineNumber":174,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2024-02-28"},{"lineNumber":175,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2024-02-28"},{"lineNumber":176,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2024-02-28"},{"lineNumber":177,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2024-02-28"},{"lineNumber":178,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2024-02-28"},{"lineNumber":179,"author":{"gitId":"Jawad280"},"content":" setTag(toCopy.tag);","lastModifiedDate":"2024-02-29"},{"lineNumber":180,"author":{"gitId":"eunrcn"},"content":" setJobDescription(toCopy.jobDescription);","lastModifiedDate":"2024-02-28"},{"lineNumber":181,"author":{"gitId":"eunrcn"},"content":" setInternDuration(toCopy.internDuration);","lastModifiedDate":"2024-02-28"},{"lineNumber":182,"author":{"gitId":"eunrcn"},"content":" setInterviewDate(toCopy.interviewDate);","lastModifiedDate":"2024-02-28"},{"lineNumber":183,"author":{"gitId":"eunrcn"},"content":" setSalary(toCopy.salary);","lastModifiedDate":"2024-02-28"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":186,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-02-28"},{"lineNumber":187,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2024-02-28"},{"lineNumber":188,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-28"},{"lineNumber":189,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2024-02-28"},{"lineNumber":190,"author":{"gitId":"Jawad280"},"content":" return CollectionUtil.isAnyNonNull(","lastModifiedDate":"2024-02-29"},{"lineNumber":191,"author":{"gitId":"Jawad280"},"content":" name, phone, email, address, tag, jobDescription, interviewDate, internDuration, salary","lastModifiedDate":"2024-02-29"},{"lineNumber":192,"author":{"gitId":"Jawad280"},"content":" );","lastModifiedDate":"2024-02-29"},{"lineNumber":193,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":195,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2024-02-28"},{"lineNumber":196,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2024-02-28"},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":199,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2024-02-28"},{"lineNumber":200,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2024-02-28"},{"lineNumber":201,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":203,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2024-02-28"},{"lineNumber":204,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2024-02-28"},{"lineNumber":205,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":207,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2024-02-28"},{"lineNumber":208,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2024-02-28"},{"lineNumber":209,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":211,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2024-02-28"},{"lineNumber":212,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2024-02-28"},{"lineNumber":213,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":215,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2024-02-28"},{"lineNumber":216,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2024-02-28"},{"lineNumber":217,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":219,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2024-02-28"},{"lineNumber":220,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2024-02-28"},{"lineNumber":221,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":223,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2024-02-28"},{"lineNumber":224,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2024-02-28"},{"lineNumber":225,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":227,"author":{"gitId":"eunrcn"},"content":" public void setJobDescription(JobDescription jobDescription) {","lastModifiedDate":"2024-02-28"},{"lineNumber":228,"author":{"gitId":"eunrcn"},"content":" this.jobDescription \u003d jobDescription;","lastModifiedDate":"2024-02-28"},{"lineNumber":229,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":231,"author":{"gitId":"eunrcn"},"content":" public Optional\u003cJobDescription\u003e getJobDescription() {","lastModifiedDate":"2024-02-28"},{"lineNumber":232,"author":{"gitId":"eunrcn"},"content":" return Optional.ofNullable(jobDescription);","lastModifiedDate":"2024-02-28"},{"lineNumber":233,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":234,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":235,"author":{"gitId":"eunrcn"},"content":" public void setInternDuration(InternDuration internDuration) {","lastModifiedDate":"2024-02-28"},{"lineNumber":236,"author":{"gitId":"eunrcn"},"content":" this.internDuration \u003d internDuration;","lastModifiedDate":"2024-02-28"},{"lineNumber":237,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":238,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":239,"author":{"gitId":"eunrcn"},"content":" public Optional\u003cInternDuration\u003e getInternDuration() {","lastModifiedDate":"2024-02-28"},{"lineNumber":240,"author":{"gitId":"eunrcn"},"content":" return Optional.ofNullable(internDuration);","lastModifiedDate":"2024-02-28"},{"lineNumber":241,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":242,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":243,"author":{"gitId":"eunrcn"},"content":" public void setInterviewDate(InterviewDate interviewDate) {","lastModifiedDate":"2024-02-28"},{"lineNumber":244,"author":{"gitId":"eunrcn"},"content":" this.interviewDate \u003d interviewDate;","lastModifiedDate":"2024-02-28"},{"lineNumber":245,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":246,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":247,"author":{"gitId":"eunrcn"},"content":" public Optional\u003cInterviewDate\u003e getInterviewDate() {","lastModifiedDate":"2024-02-28"},{"lineNumber":248,"author":{"gitId":"eunrcn"},"content":" return Optional.ofNullable(interviewDate);","lastModifiedDate":"2024-02-28"},{"lineNumber":249,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":250,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":251,"author":{"gitId":"eunrcn"},"content":" public void setSalary(Salary salary) {","lastModifiedDate":"2024-02-28"},{"lineNumber":252,"author":{"gitId":"eunrcn"},"content":" this.salary \u003d salary;","lastModifiedDate":"2024-02-28"},{"lineNumber":253,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":254,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":255,"author":{"gitId":"eunrcn"},"content":" public Optional\u003cSalary\u003e getSalary() {","lastModifiedDate":"2024-02-28"},{"lineNumber":256,"author":{"gitId":"eunrcn"},"content":" return Optional.ofNullable(salary);","lastModifiedDate":"2024-02-28"},{"lineNumber":257,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":258,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":259,"author":{"gitId":"Jawad280"},"content":" public void setTag(Tag tag) {","lastModifiedDate":"2024-02-29"},{"lineNumber":260,"author":{"gitId":"Jawad280"},"content":" this.tag \u003d tag;","lastModifiedDate":"2024-02-29"},{"lineNumber":261,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":262,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":263,"author":{"gitId":"Jawad280"},"content":" public Optional\u003cTag\u003e getTag() {","lastModifiedDate":"2024-02-29"},{"lineNumber":264,"author":{"gitId":"Jawad280"},"content":" return Optional.ofNullable(tag);","lastModifiedDate":"2024-02-29"},{"lineNumber":265,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":267,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-02-28"},{"lineNumber":268,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-02-28"},{"lineNumber":269,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-02-28"},{"lineNumber":270,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2024-02-28"},{"lineNumber":271,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":273,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-02-28"},{"lineNumber":274,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2024-02-28"},{"lineNumber":275,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2024-02-28"},{"lineNumber":276,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":278,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2024-02-28"},{"lineNumber":279,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2024-02-28"},{"lineNumber":280,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2024-02-28"},{"lineNumber":281,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2024-02-28"},{"lineNumber":282,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2024-02-28"},{"lineNumber":283,"author":{"gitId":"Jawad280"},"content":" \u0026\u0026 Objects.equals(tag, otherEditPersonDescriptor.tag)","lastModifiedDate":"2024-02-29"},{"lineNumber":284,"author":{"gitId":"eunrcn"},"content":" \u0026\u0026 Objects.equals(jobDescription, otherEditPersonDescriptor.jobDescription)","lastModifiedDate":"2024-02-28"},{"lineNumber":285,"author":{"gitId":"eunrcn"},"content":" \u0026\u0026 Objects.equals(internDuration, otherEditPersonDescriptor.internDuration)","lastModifiedDate":"2024-02-28"},{"lineNumber":286,"author":{"gitId":"eunrcn"},"content":" \u0026\u0026 Objects.equals(interviewDate, otherEditPersonDescriptor.interviewDate)","lastModifiedDate":"2024-02-28"},{"lineNumber":287,"author":{"gitId":"eunrcn"},"content":" \u0026\u0026 Objects.equals(salary, otherEditPersonDescriptor.salary);","lastModifiedDate":"2024-02-28"},{"lineNumber":288,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":290,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-02-28"},{"lineNumber":291,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2024-02-28"},{"lineNumber":292,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-02-28"},{"lineNumber":293,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2024-02-28"},{"lineNumber":294,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2024-02-28"},{"lineNumber":295,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2024-02-28"},{"lineNumber":296,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2024-02-28"},{"lineNumber":297,"author":{"gitId":"Jawad280"},"content":" .add(\"tag\", tag)","lastModifiedDate":"2024-02-29"},{"lineNumber":298,"author":{"gitId":"Jawad280"},"content":" .add(\"job description\", jobDescription)","lastModifiedDate":"2024-02-29"},{"lineNumber":299,"author":{"gitId":"Jawad280"},"content":" .add(\"intern duration\", internDuration)","lastModifiedDate":"2024-02-29"},{"lineNumber":300,"author":{"gitId":"Jawad280"},"content":" .add(\"interview date\", interviewDate)","lastModifiedDate":"2024-02-29"},{"lineNumber":301,"author":{"gitId":"Jawad280"},"content":" .add(\"salary\", salary)","lastModifiedDate":"2024-02-29"},{"lineNumber":302,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2024-02-28"},{"lineNumber":303,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":304,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":305,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-02-28"}],"authorContributionMap":{"eunrcn":61,"Jawad280":27,"-":217}},{"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 seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22"},{"lineNumber":9,"author":{"gitId":"chenyixin0"},"content":" * Finds and lists all companies in address book whose name contains any of the argument keywords.","lastModifiedDate":"2024-02-29"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Keyword matching is case insensitive.","lastModifiedDate":"2018-04-01"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2016-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"find\";","lastModifiedDate":"2016-09-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":16,"author":{"gitId":"chenyixin0"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all companies whose names contain any of \"","lastModifiedDate":"2024-02-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":" + \"the specified keywords (case-insensitive) and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2018-04-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":" + \"Parameters: KEYWORD [MORE_KEYWORDS]...\\n\"","lastModifiedDate":"2016-09-22"},{"lineNumber":19,"author":{"gitId":"chenyixin0"},"content":" + \"Example: \" + COMMAND_WORD + \" food panda\";","lastModifiedDate":"2024-02-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final NameContainsKeywordsPredicate predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public FindCommand(NameContainsKeywordsPredicate predicate) {","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":29,"author":{"gitId":"chenyixin0"},"content":" //requireNonNull(model);","lastModifiedDate":"2024-03-08"},{"lineNumber":30,"author":{"gitId":"chenyixin0"},"content":" //model.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" return new CommandResult(","lastModifiedDate":"2018-04-01"},{"lineNumber":32,"author":{"gitId":"Jawad280"},"content":" String.format(","lastModifiedDate":"2024-03-01"},{"lineNumber":33,"author":{"gitId":"Jawad280"},"content":" Messages.MESSAGE_PERSONS_LISTED_OVERVIEW,","lastModifiedDate":"2024-03-01"},{"lineNumber":34,"author":{"gitId":"Jawad280"},"content":" model.generateNewFilteredPersonList(predicate).size()),","lastModifiedDate":"2024-03-01"},{"lineNumber":35,"author":{"gitId":"chenyixin0"},"content":" model.generateNewFilteredPersonList(predicate));","lastModifiedDate":"2024-02-29"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" if (!(other instanceof FindCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" FindCommand otherFindCommand \u003d (FindCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return predicate.equals(otherFindCommand.predicate);","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"chenyixin0":6,"Jawad280":3,"-":50}},{"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":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all persons\";","lastModifiedDate":"2016-09-21"},{"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":"Jawad280"},"content":" return new CommandResult(MESSAGE_SUCCESS, false, false);","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"Jawad280":1,"-":23}},{"path":"src/main/java/seedu/address/logic/commands/ViewCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-02-26"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-02-26"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"import java.util.List;","lastModifiedDate":"2024-02-26"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-02-26"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-02-26"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-02-26"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-02-26"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-02-26"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-02-26"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":"/**","lastModifiedDate":"2024-02-26"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":" * Views a person identified using it\u0027s displayed index from the address book.","lastModifiedDate":"2024-02-26"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":" */","lastModifiedDate":"2024-02-26"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":"public class ViewCommand extends Command {","lastModifiedDate":"2024-02-26"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":" public static final String COMMAND_WORD \u003d \"view\";","lastModifiedDate":"2024-02-26"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-02-26"},{"lineNumber":21,"author":{"gitId":"Jawad280"},"content":" + \": Views the person identified by the index number used in the displayed person list.\\n\"","lastModifiedDate":"2024-02-26"},{"lineNumber":22,"author":{"gitId":"Jawad280"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2024-02-26"},{"lineNumber":23,"author":{"gitId":"Jawad280"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2024-02-26"},{"lineNumber":24,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":25,"author":{"gitId":"Jawad280"},"content":" public static final String MESSAGE_VIEW_PERSON_SUCCESS \u003d \"Viewing Person: %1$s\";","lastModifiedDate":"2024-02-26"},{"lineNumber":26,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":27,"author":{"gitId":"Jawad280"},"content":" private final Index targetIndex;","lastModifiedDate":"2024-02-26"},{"lineNumber":28,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":29,"author":{"gitId":"Jawad280"},"content":" public ViewCommand(Index targetIndex) {","lastModifiedDate":"2024-02-26"},{"lineNumber":30,"author":{"gitId":"Jawad280"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2024-02-26"},{"lineNumber":31,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":32,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":33,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-02-26"},{"lineNumber":34,"author":{"gitId":"Jawad280"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-02-26"},{"lineNumber":35,"author":{"gitId":"Jawad280"},"content":" requireNonNull(model);","lastModifiedDate":"2024-02-26"},{"lineNumber":36,"author":{"gitId":"Jawad280"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-02-26"},{"lineNumber":37,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":38,"author":{"gitId":"Jawad280"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-02-26"},{"lineNumber":39,"author":{"gitId":"Jawad280"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-02-26"},{"lineNumber":40,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":41,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":42,"author":{"gitId":"Jawad280"},"content":" Person personToView \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-02-26"},{"lineNumber":43,"author":{"gitId":"Jawad280"},"content":" return new CommandResult(","lastModifiedDate":"2024-02-26"},{"lineNumber":44,"author":{"gitId":"Jawad280"},"content":" String.format(MESSAGE_VIEW_PERSON_SUCCESS, Messages.format(personToView)),","lastModifiedDate":"2024-02-26"},{"lineNumber":45,"author":{"gitId":"Jawad280"},"content":" personToView);","lastModifiedDate":"2024-02-26"},{"lineNumber":46,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":47,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":48,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-02-26"},{"lineNumber":49,"author":{"gitId":"Jawad280"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-02-26"},{"lineNumber":50,"author":{"gitId":"Jawad280"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-02-26"},{"lineNumber":51,"author":{"gitId":"Jawad280"},"content":" return true;","lastModifiedDate":"2024-02-26"},{"lineNumber":52,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":53,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":54,"author":{"gitId":"Jawad280"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-02-26"},{"lineNumber":55,"author":{"gitId":"Jawad280"},"content":" if (!(other instanceof ViewCommand)) {","lastModifiedDate":"2024-02-26"},{"lineNumber":56,"author":{"gitId":"Jawad280"},"content":" return false;","lastModifiedDate":"2024-02-26"},{"lineNumber":57,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":58,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":59,"author":{"gitId":"Jawad280"},"content":" ViewCommand otherViewCommand \u003d (ViewCommand) other;","lastModifiedDate":"2024-02-26"},{"lineNumber":60,"author":{"gitId":"Jawad280"},"content":" return targetIndex.equals(otherViewCommand.targetIndex);","lastModifiedDate":"2024-02-26"},{"lineNumber":61,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":62,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":63,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-02-26"},{"lineNumber":64,"author":{"gitId":"Jawad280"},"content":" public String toString() {","lastModifiedDate":"2024-02-26"},{"lineNumber":65,"author":{"gitId":"Jawad280"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-02-26"},{"lineNumber":66,"author":{"gitId":"Jawad280"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2024-02-26"},{"lineNumber":67,"author":{"gitId":"Jawad280"},"content":" .toString();","lastModifiedDate":"2024-02-26"},{"lineNumber":68,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":69,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-02-26"}],"authorContributionMap":{"Jawad280":69}},{"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":"eunrcn"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":" * Represents an error which occurs during execution of a {@link Command}.","lastModifiedDate":"2017-02-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"public class CommandException extends Exception {","lastModifiedDate":"2017-02-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":" public CommandException(String message) {","lastModifiedDate":"2017-02-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":" super(message);","lastModifiedDate":"2017-02-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":12,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Constructs a new {@code CommandException} with the specified detail {@code message} and {@code cause}.","lastModifiedDate":"2018-08-06"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public CommandException(String message, Throwable cause) {","lastModifiedDate":"2018-08-06"},{"lineNumber":16,"author":{"gitId":"-"},"content":" super(message, cause);","lastModifiedDate":"2018-08-06"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"eunrcn":1,"-":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":"-"},"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":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_INTERN_DURATION;","lastModifiedDate":"2024-02-25"},{"lineNumber":7,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_INTERVIEW_DATE;","lastModifiedDate":"2024-02-25"},{"lineNumber":8,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_JOB_DESCRIPTION;","lastModifiedDate":"2024-02-25"},{"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":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SALARY;","lastModifiedDate":"2024-02-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-02-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"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":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-02-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-02-25"},{"lineNumber":20,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.InternDuration;","lastModifiedDate":"2024-02-25"},{"lineNumber":21,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.InterviewDate;","lastModifiedDate":"2024-02-25"},{"lineNumber":22,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.JobDescription;","lastModifiedDate":"2024-02-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-02-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-02-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-02-25"},{"lineNumber":26,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.Salary;","lastModifiedDate":"2024-02-25"},{"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":"ashleygoh1"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG,","lastModifiedDate":"2024-02-25"},{"lineNumber":42,"author":{"gitId":"ashleygoh1"},"content":" PREFIX_JOB_DESCRIPTION, PREFIX_INTERVIEW_DATE, PREFIX_INTERN_DURATION, PREFIX_SALARY);","lastModifiedDate":"2024-02-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":44,"author":{"gitId":"ashleygoh1"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_TAG,","lastModifiedDate":"2024-02-26"},{"lineNumber":45,"author":{"gitId":"ashleygoh1"},"content":" PREFIX_JOB_DESCRIPTION, PREFIX_INTERN_DURATION, PREFIX_SALARY)","lastModifiedDate":"2024-02-26"},{"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":"ashleygoh1"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-02-26"},{"lineNumber":51,"author":{"gitId":"ashleygoh1"},"content":" PREFIX_TAG, PREFIX_JOB_DESCRIPTION, PREFIX_INTERVIEW_DATE, PREFIX_INTERN_DURATION,","lastModifiedDate":"2024-02-26"},{"lineNumber":52,"author":{"gitId":"ashleygoh1"},"content":" PREFIX_SALARY);","lastModifiedDate":"2024-02-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":55,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":57,"author":{"gitId":"ashleygoh1"},"content":" Address address;","lastModifiedDate":"2024-02-26"},{"lineNumber":58,"author":{"gitId":"ashleygoh1"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2024-02-26"},{"lineNumber":59,"author":{"gitId":"ashleygoh1"},"content":" try {","lastModifiedDate":"2024-02-26"},{"lineNumber":60,"author":{"gitId":"ashleygoh1"},"content":" address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2024-02-26"},{"lineNumber":61,"author":{"gitId":"ashleygoh1"},"content":" } catch (ParseException e) {","lastModifiedDate":"2024-02-26"},{"lineNumber":62,"author":{"gitId":"ashleygoh1"},"content":" throw new ParseException(\"Error parsing address: \" + e.getMessage());","lastModifiedDate":"2024-02-26"},{"lineNumber":63,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":64,"author":{"gitId":"ashleygoh1"},"content":" } else {","lastModifiedDate":"2024-02-26"},{"lineNumber":65,"author":{"gitId":"ashleygoh1"},"content":" address \u003d new Address(\"\"); // Provide a default empty address if not provided","lastModifiedDate":"2024-02-26"},{"lineNumber":66,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":67,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":68,"author":{"gitId":"ashleygoh1"},"content":" Tag tag \u003d ParserUtil.parseTag(argMultimap.getValue(PREFIX_TAG).get());","lastModifiedDate":"2024-02-25"},{"lineNumber":69,"author":{"gitId":"ashleygoh1"},"content":" JobDescription jobDescription \u003d ParserUtil.parseJobDescription(","lastModifiedDate":"2024-02-25"},{"lineNumber":70,"author":{"gitId":"ashleygoh1"},"content":" argMultimap.getValue(PREFIX_JOB_DESCRIPTION).get());","lastModifiedDate":"2024-02-25"},{"lineNumber":71,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":72,"author":{"gitId":"ashleygoh1"},"content":" InterviewDate interviewDate \u003d new InterviewDate(null);","lastModifiedDate":"2024-02-26"},{"lineNumber":73,"author":{"gitId":"ashleygoh1"},"content":" if (argMultimap.getValue(PREFIX_INTERVIEW_DATE).isPresent()) {","lastModifiedDate":"2024-02-26"},{"lineNumber":74,"author":{"gitId":"ashleygoh1"},"content":" try {","lastModifiedDate":"2024-02-26"},{"lineNumber":75,"author":{"gitId":"ashleygoh1"},"content":" String givenDate \u003d argMultimap.getValue(PREFIX_INTERVIEW_DATE).get();","lastModifiedDate":"2024-02-26"},{"lineNumber":76,"author":{"gitId":"ashleygoh1"},"content":" if (!givenDate.isEmpty()) {","lastModifiedDate":"2024-02-26"},{"lineNumber":77,"author":{"gitId":"ashleygoh1"},"content":" interviewDate \u003d ParserUtil.parseInterviewDate(givenDate);","lastModifiedDate":"2024-02-26"},{"lineNumber":78,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":79,"author":{"gitId":"ashleygoh1"},"content":" } catch (ParseException e) {","lastModifiedDate":"2024-02-26"},{"lineNumber":80,"author":{"gitId":"ashleygoh1"},"content":" throw new ParseException(\"Error parsing interview date: \" + e.getMessage());","lastModifiedDate":"2024-02-26"},{"lineNumber":81,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":82,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":83,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":84,"author":{"gitId":"ashleygoh1"},"content":" InternDuration internDuration \u003d ParserUtil.parseInternDuration(","lastModifiedDate":"2024-02-25"},{"lineNumber":85,"author":{"gitId":"ashleygoh1"},"content":" argMultimap.getValue(PREFIX_INTERN_DURATION).get());","lastModifiedDate":"2024-02-25"},{"lineNumber":86,"author":{"gitId":"ashleygoh1"},"content":" Salary salary \u003d ParserUtil.parseSalary(argMultimap.getValue(PREFIX_SALARY).get());","lastModifiedDate":"2024-02-25"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":88,"author":{"gitId":"ashleygoh1"},"content":" Person person \u003d new Person(name, phone, email, address, tag,","lastModifiedDate":"2024-02-25"},{"lineNumber":89,"author":{"gitId":"ashleygoh1"},"content":" jobDescription, interviewDate, internDuration, salary);","lastModifiedDate":"2024-02-25"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":91,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17"},{"lineNumber":97,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":98,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17"},{"lineNumber":99,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":102,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"ashleygoh1":47,"-":55}},{"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":"2024-02-29"},{"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":"2024-03-01"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-02-29"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2024-02-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2024-02-29"},{"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":"2024-02-26"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":"import seedu.address.logic.commands.ViewCommand;","lastModifiedDate":"2024-02-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24"},{"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":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":50,"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":51,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2024-02-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2024-02-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2024-02-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2024-02-26"},{"lineNumber":63,"author":{"gitId":"minghowC"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-01"},{"lineNumber":64,"author":{"gitId":"minghowC"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2024-03-01"},{"lineNumber":65,"author":{"gitId":"Jawad280"},"content":" case ViewCommand.COMMAND_WORD:","lastModifiedDate":"2024-02-26"},{"lineNumber":66,"author":{"gitId":"Jawad280"},"content":" return new ViewCommandParser().parse(arguments);","lastModifiedDate":"2024-02-26"},{"lineNumber":67,"author":{"gitId":"eunrcn"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2024-02-28"},{"lineNumber":68,"author":{"gitId":"eunrcn"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2024-02-28"},{"lineNumber":69,"author":{"gitId":"ashleygoh1"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2024-02-27"},{"lineNumber":70,"author":{"gitId":"ashleygoh1"},"content":" return new ClearCommand();","lastModifiedDate":"2024-02-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2024-02-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2024-02-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2024-02-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2024-02-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11"},{"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":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"eunrcn":2,"minghowC":2,"Jawad280":3,"ashleygoh1":2,"-":73}},{"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":"eunrcn"},"content":" public static final Prefix PREFIX_INDEX \u003d new Prefix(\"i/\");","lastModifiedDate":"2024-02-28"},{"lineNumber":10,"author":{"gitId":"ashleygoh1"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"c/\");","lastModifiedDate":"2024-02-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","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":"ashleygoh1"},"content":" public static final Prefix PREFIX_JOB_DESCRIPTION \u003d new Prefix(\"jd/\");","lastModifiedDate":"2024-02-25"},{"lineNumber":16,"author":{"gitId":"ashleygoh1"},"content":" public static final Prefix PREFIX_INTERVIEW_DATE \u003d new Prefix(\"d/\");","lastModifiedDate":"2024-02-25"},{"lineNumber":17,"author":{"gitId":"ashleygoh1"},"content":" public static final Prefix PREFIX_INTERN_DURATION \u003d new Prefix(\"id/\");","lastModifiedDate":"2024-02-25"},{"lineNumber":18,"author":{"gitId":"ashleygoh1"},"content":" public static final Prefix PREFIX_SALARY \u003d new Prefix(\"s/\");","lastModifiedDate":"2024-02-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"eunrcn":1,"ashleygoh1":5,"-":14}},{"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":"2024-02-28"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-02-28"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-02-28"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-02-28"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-02-28"},{"lineNumber":7,"author":{"gitId":"eunrcn"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_INTERN_DURATION;","lastModifiedDate":"2024-02-28"},{"lineNumber":8,"author":{"gitId":"eunrcn"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_INTERVIEW_DATE;","lastModifiedDate":"2024-02-28"},{"lineNumber":9,"author":{"gitId":"eunrcn"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_JOB_DESCRIPTION;","lastModifiedDate":"2024-02-28"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-02-28"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-02-28"},{"lineNumber":12,"author":{"gitId":"eunrcn"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SALARY;","lastModifiedDate":"2024-02-28"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-02-28"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-02-28"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-02-28"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-02-28"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-02-28"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":"import seedu.address.model.person.InterviewDate;","lastModifiedDate":"2024-02-29"},{"lineNumber":20,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2024-02-28"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2024-02-28"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-28"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2024-02-28"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-02-28"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2024-02-28"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2024-02-28"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-02-28"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-28"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-02-28"},{"lineNumber":33,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2024-02-28"},{"lineNumber":34,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-02-28"},{"lineNumber":35,"author":{"gitId":"eunrcn"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG,","lastModifiedDate":"2024-02-28"},{"lineNumber":36,"author":{"gitId":"eunrcn"},"content":" PREFIX_JOB_DESCRIPTION, PREFIX_INTERVIEW_DATE, PREFIX_INTERN_DURATION, PREFIX_SALARY);","lastModifiedDate":"2024-02-28"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":38,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2024-02-28"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":40,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2024-02-28"},{"lineNumber":41,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-02-28"},{"lineNumber":42,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-02-28"},{"lineNumber":43,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-02-28"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":46,"author":{"gitId":"eunrcn"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-02-28"},{"lineNumber":47,"author":{"gitId":"eunrcn"},"content":" PREFIX_TAG, PREFIX_JOB_DESCRIPTION, PREFIX_INTERVIEW_DATE, PREFIX_INTERN_DURATION,","lastModifiedDate":"2024-02-28"},{"lineNumber":48,"author":{"gitId":"eunrcn"},"content":" PREFIX_SALARY);","lastModifiedDate":"2024-02-28"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":50,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2024-02-28"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2024-02-28"},{"lineNumber":53,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2024-02-28"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2024-02-28"},{"lineNumber":56,"author":{"gitId":"-"},"content":" editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2024-02-28"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2024-02-28"},{"lineNumber":59,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2024-02-28"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2024-02-28"},{"lineNumber":62,"author":{"gitId":"-"},"content":" editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2024-02-28"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":64,"author":{"gitId":"eunrcn"},"content":" if (argMultimap.getValue(PREFIX_JOB_DESCRIPTION).isPresent()) {","lastModifiedDate":"2024-02-28"},{"lineNumber":65,"author":{"gitId":"Jawad280"},"content":" editPersonDescriptor.setJobDescription(","lastModifiedDate":"2024-02-29"},{"lineNumber":66,"author":{"gitId":"Jawad280"},"content":" ParserUtil.parseJobDescription(argMultimap.getValue(PREFIX_JOB_DESCRIPTION).get())","lastModifiedDate":"2024-02-29"},{"lineNumber":67,"author":{"gitId":"Jawad280"},"content":" );","lastModifiedDate":"2024-02-29"},{"lineNumber":68,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":69,"author":{"gitId":"eunrcn"},"content":" if (argMultimap.getValue(PREFIX_INTERVIEW_DATE).isPresent()) {","lastModifiedDate":"2024-02-28"},{"lineNumber":70,"author":{"gitId":"Jawad280"},"content":" String givenDate \u003d argMultimap.getValue(PREFIX_INTERVIEW_DATE).get();","lastModifiedDate":"2024-02-29"},{"lineNumber":71,"author":{"gitId":"Jawad280"},"content":" if (!givenDate.isEmpty()) {","lastModifiedDate":"2024-02-29"},{"lineNumber":72,"author":{"gitId":"Jawad280"},"content":" editPersonDescriptor.setInterviewDate(","lastModifiedDate":"2024-02-29"},{"lineNumber":73,"author":{"gitId":"Jawad280"},"content":" ParserUtil.parseInterviewDate(argMultimap.getValue(PREFIX_INTERVIEW_DATE).get())","lastModifiedDate":"2024-02-29"},{"lineNumber":74,"author":{"gitId":"Jawad280"},"content":" );","lastModifiedDate":"2024-02-29"},{"lineNumber":75,"author":{"gitId":"Jawad280"},"content":" } else {","lastModifiedDate":"2024-02-29"},{"lineNumber":76,"author":{"gitId":"Jawad280"},"content":" editPersonDescriptor.setInterviewDate(new InterviewDate(null));","lastModifiedDate":"2024-02-29"},{"lineNumber":77,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-29"},{"lineNumber":78,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":79,"author":{"gitId":"eunrcn"},"content":" if (argMultimap.getValue(PREFIX_INTERN_DURATION).isPresent()) {","lastModifiedDate":"2024-02-28"},{"lineNumber":80,"author":{"gitId":"Jawad280"},"content":" editPersonDescriptor.setInternDuration(","lastModifiedDate":"2024-02-29"},{"lineNumber":81,"author":{"gitId":"Jawad280"},"content":" ParserUtil.parseInternDuration(argMultimap.getValue(PREFIX_INTERN_DURATION).get())","lastModifiedDate":"2024-02-29"},{"lineNumber":82,"author":{"gitId":"Jawad280"},"content":" );","lastModifiedDate":"2024-02-29"},{"lineNumber":83,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":84,"author":{"gitId":"eunrcn"},"content":" if (argMultimap.getValue(PREFIX_SALARY).isPresent()) {","lastModifiedDate":"2024-02-28"},{"lineNumber":85,"author":{"gitId":"eunrcn"},"content":" editPersonDescriptor.setSalary(ParserUtil.parseSalary(argMultimap.getValue(PREFIX_SALARY).get()));","lastModifiedDate":"2024-02-28"},{"lineNumber":86,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":87,"author":{"gitId":"eunrcn"},"content":" if (argMultimap.getValue(PREFIX_TAG).isPresent()) {","lastModifiedDate":"2024-02-28"},{"lineNumber":88,"author":{"gitId":"Jawad280"},"content":" editPersonDescriptor.setTag(ParserUtil.parseTag(argMultimap.getValue(PREFIX_TAG).get()));","lastModifiedDate":"2024-02-29"},{"lineNumber":89,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":90,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2024-02-28"},{"lineNumber":91,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2024-02-28"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":95,"author":{"gitId":"eunrcn"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2024-02-28"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":97,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-02-28"}],"authorContributionMap":{"eunrcn":22,"Jawad280":16,"-":59}},{"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-02-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-02-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-02-25"},{"lineNumber":10,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.InternDuration;","lastModifiedDate":"2024-02-25"},{"lineNumber":11,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.InterviewDate;","lastModifiedDate":"2024-02-25"},{"lineNumber":12,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.JobDescription;","lastModifiedDate":"2024-02-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-02-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-02-25"},{"lineNumber":15,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.Salary;","lastModifiedDate":"2024-02-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11"},{"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":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02"},{"lineNumber":24,"author":{"gitId":"ashleygoh1"},"content":" public static final String MESSAGE_INVALID_NUMBER_OF_PEOPLE \u003d","lastModifiedDate":"2024-02-25"},{"lineNumber":25,"author":{"gitId":"ashleygoh1"},"content":" \"Number of people is not a non-zero unsigned integer.\";","lastModifiedDate":"2024-02-25"},{"lineNumber":26,"author":{"gitId":"ashleygoh1"},"content":" public static final String MESSAGE_INVALID_DATE_TIME_FORMAT \u003d","lastModifiedDate":"2024-02-25"},{"lineNumber":27,"author":{"gitId":"ashleygoh1"},"content":" \"Date time is wrongly formatted. You need to input a date in yyyy-mm-dd or dd-mm-yyyy \"","lastModifiedDate":"2024-02-25"},{"lineNumber":28,"author":{"gitId":"ashleygoh1"},"content":" + \"format and a time in HH:mm or HHmm (24hr clock) format (eg: 1800 or 18:00 for 6 pm). \"","lastModifiedDate":"2024-02-25"},{"lineNumber":29,"author":{"gitId":"ashleygoh1"},"content":" + \"You can choose to entire enter a date first or time first in any of the formats mentioned\";","lastModifiedDate":"2024-02-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"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":"-"},"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":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30"},{"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":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":81,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30"},{"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":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30"},{"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":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":92,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":93,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":94,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":97,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","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":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"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":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":107,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30"},{"lineNumber":108,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":109,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":110,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":112,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","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":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":116,"author":{"gitId":"ashleygoh1"},"content":" * Parses a {@code String jobDescription} into an {@code jobDescription}.","lastModifiedDate":"2024-02-25"},{"lineNumber":117,"author":{"gitId":"ashleygoh1"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-02-25"},{"lineNumber":118,"author":{"gitId":"ashleygoh1"},"content":" *","lastModifiedDate":"2024-02-25"},{"lineNumber":119,"author":{"gitId":"ashleygoh1"},"content":" * @throws ParseException if the given {@code jobDescription} is invalid.","lastModifiedDate":"2024-02-25"},{"lineNumber":120,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":121,"author":{"gitId":"ashleygoh1"},"content":" public static JobDescription parseJobDescription(String jobDescription) throws ParseException {","lastModifiedDate":"2024-02-25"},{"lineNumber":122,"author":{"gitId":"ashleygoh1"},"content":" requireNonNull(jobDescription);","lastModifiedDate":"2024-02-25"},{"lineNumber":123,"author":{"gitId":"ashleygoh1"},"content":" String trimmedJobDescription \u003d jobDescription.trim();","lastModifiedDate":"2024-02-25"},{"lineNumber":124,"author":{"gitId":"ashleygoh1"},"content":" if (!JobDescription.isValidJobDescription(trimmedJobDescription)) {","lastModifiedDate":"2024-02-25"},{"lineNumber":125,"author":{"gitId":"ashleygoh1"},"content":" throw new ParseException(JobDescription.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-25"},{"lineNumber":126,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":127,"author":{"gitId":"ashleygoh1"},"content":" return new JobDescription(trimmedJobDescription);","lastModifiedDate":"2024-02-25"},{"lineNumber":128,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":129,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":130,"author":{"gitId":"ashleygoh1"},"content":" /**","lastModifiedDate":"2024-02-25"},{"lineNumber":131,"author":{"gitId":"ashleygoh1"},"content":" * Parses {@code dateTime} into a {@code LocalDateTime} object.","lastModifiedDate":"2024-02-25"},{"lineNumber":132,"author":{"gitId":"ashleygoh1"},"content":" * @throws ParseException if {@code dateTime} is of invalid format.","lastModifiedDate":"2024-02-25"},{"lineNumber":133,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":134,"author":{"gitId":"ashleygoh1"},"content":" public static InterviewDate parseInterviewDate(String interviewDate) throws ParseException {","lastModifiedDate":"2024-02-25"},{"lineNumber":135,"author":{"gitId":"ashleygoh1"},"content":" String trimmedDateTime \u003d interviewDate.trim();","lastModifiedDate":"2024-02-25"},{"lineNumber":136,"author":{"gitId":"ashleygoh1"},"content":" return new InterviewDate(trimmedDateTime);","lastModifiedDate":"2024-02-25"},{"lineNumber":137,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":138,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":139,"author":{"gitId":"ashleygoh1"},"content":" /**","lastModifiedDate":"2024-02-25"},{"lineNumber":140,"author":{"gitId":"ashleygoh1"},"content":" * Parses a {@code String internDuration} into an {@code internDuration}.","lastModifiedDate":"2024-02-25"},{"lineNumber":141,"author":{"gitId":"ashleygoh1"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-02-25"},{"lineNumber":142,"author":{"gitId":"ashleygoh1"},"content":" *","lastModifiedDate":"2024-02-25"},{"lineNumber":143,"author":{"gitId":"ashleygoh1"},"content":" * @throws ParseException if the given {@code internDuration} is invalid.","lastModifiedDate":"2024-02-25"},{"lineNumber":144,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":145,"author":{"gitId":"ashleygoh1"},"content":" public static InternDuration parseInternDuration(String internDuration) throws ParseException {","lastModifiedDate":"2024-02-25"},{"lineNumber":146,"author":{"gitId":"ashleygoh1"},"content":" String trimmedInternDuration \u003d internDuration.trim();","lastModifiedDate":"2024-02-25"},{"lineNumber":147,"author":{"gitId":"ashleygoh1"},"content":" if (!InternDuration.isValidInternDuration(trimmedInternDuration)) {","lastModifiedDate":"2024-02-25"},{"lineNumber":148,"author":{"gitId":"ashleygoh1"},"content":" throw new ParseException(InternDuration.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-25"},{"lineNumber":149,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":150,"author":{"gitId":"ashleygoh1"},"content":" return new InternDuration(trimmedInternDuration);","lastModifiedDate":"2024-02-25"},{"lineNumber":151,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":152,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":153,"author":{"gitId":"ashleygoh1"},"content":" /**","lastModifiedDate":"2024-02-25"},{"lineNumber":154,"author":{"gitId":"ashleygoh1"},"content":" * Parses a {@code String salary} into an {@code salary}.","lastModifiedDate":"2024-02-25"},{"lineNumber":155,"author":{"gitId":"ashleygoh1"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-02-25"},{"lineNumber":156,"author":{"gitId":"ashleygoh1"},"content":" *","lastModifiedDate":"2024-02-25"},{"lineNumber":157,"author":{"gitId":"ashleygoh1"},"content":" * @throws ParseException if the given {@code salary} is invalid.","lastModifiedDate":"2024-02-25"},{"lineNumber":158,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":159,"author":{"gitId":"ashleygoh1"},"content":" public static Salary parseSalary(String salary) throws ParseException {","lastModifiedDate":"2024-02-25"},{"lineNumber":160,"author":{"gitId":"ashleygoh1"},"content":" String trimmedSalary \u003d salary.trim();","lastModifiedDate":"2024-02-25"},{"lineNumber":161,"author":{"gitId":"ashleygoh1"},"content":" if (!Salary.isValidSalary(trimmedSalary)) {","lastModifiedDate":"2024-02-25"},{"lineNumber":162,"author":{"gitId":"ashleygoh1"},"content":" throw new ParseException(Salary.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-25"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":164,"author":{"gitId":"ashleygoh1"},"content":" return new Salary(trimmedSalary);","lastModifiedDate":"2024-02-25"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":166,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"ashleygoh1":57,"-":109}},{"path":"src/main/java/seedu/address/logic/parser/ViewCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-02-26"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-02-26"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-02-26"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"import seedu.address.logic.commands.ViewCommand;","lastModifiedDate":"2024-02-26"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-02-26"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":"/**","lastModifiedDate":"2024-02-26"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":" * Parses input arguments and creates a new ViewCommand object","lastModifiedDate":"2024-02-26"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":" */","lastModifiedDate":"2024-02-26"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":"public class ViewCommandParser {","lastModifiedDate":"2024-02-26"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":" /**","lastModifiedDate":"2024-02-26"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":" * Parses the given {@code String} of arguments in the context of the ViewCommand","lastModifiedDate":"2024-02-26"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":" * and returns a ViewCommand object for execution.","lastModifiedDate":"2024-02-26"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-02-26"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":" */","lastModifiedDate":"2024-02-26"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":" public ViewCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-02-26"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":" try {","lastModifiedDate":"2024-02-26"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2024-02-26"},{"lineNumber":21,"author":{"gitId":"Jawad280"},"content":" return new ViewCommand(index);","lastModifiedDate":"2024-02-26"},{"lineNumber":22,"author":{"gitId":"Jawad280"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-02-26"},{"lineNumber":23,"author":{"gitId":"Jawad280"},"content":" throw new ParseException(","lastModifiedDate":"2024-02-26"},{"lineNumber":24,"author":{"gitId":"Jawad280"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, ViewCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-02-26"},{"lineNumber":25,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":26,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":27,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-02-26"}],"authorContributionMap":{"Jawad280":27}},{"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":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.UniquePersonList;","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Wraps all data at the address-book level","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Duplicates are not allowed (by .isSamePerson comparison)","lastModifiedDate":"2018-04-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class AddressBook implements ReadOnlyAddressBook {","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private final UniquePersonList persons;","lastModifiedDate":"2016-08-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-19"},{"lineNumber":21,"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":22,"author":{"gitId":"-"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2016-10-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-19"},{"lineNumber":24,"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":25,"author":{"gitId":"-"},"content":" * among constructors.","lastModifiedDate":"2016-10-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" {","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" persons \u003d new UniquePersonList();","lastModifiedDate":"2016-08-26"},{"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() {}","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":" * Creates an AddressBook using the Persons in the {@code toBeCopied}","lastModifiedDate":"2018-03-29"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public AddressBook(ReadOnlyAddressBook toBeCopied) {","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2016-12-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" resetData(toBeCopied);","lastModifiedDate":"2016-12-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":41,"author":{"gitId":"-"},"content":" //// list overwrite operations","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Replaces the contents of the person list with {@code persons}.","lastModifiedDate":"2018-08-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2018-08-07"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void setPersons(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-08-07"},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.persons.setPersons(persons);","lastModifiedDate":"2016-10-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code AddressBook} with {@code newData}.","lastModifiedDate":"2017-08-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyAddressBook newData) {","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" requireNonNull(newData);","lastModifiedDate":"2017-05-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" setPersons(newData.getPersonList());","lastModifiedDate":"2018-03-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" //// person-level operations","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":63,"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":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return persons.contains(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-09-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * The person must not already exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void addPerson(Person p) {","lastModifiedDate":"2018-08-07"},{"lineNumber":75,"author":{"gitId":"-"},"content":" persons.add(p);","lastModifiedDate":"2018-03-29"},{"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-12-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2018-01-10"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":81,"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":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":84,"author":{"gitId":"-"},"content":" requireNonNull(editedPerson);","lastModifiedDate":"2018-01-10"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" persons.setPerson(target, editedPerson);","lastModifiedDate":"2018-03-29"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * Removes {@code key} from this {@code AddressBook}.","lastModifiedDate":"2017-08-16"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * {@code key} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void removePerson(Person key) {","lastModifiedDate":"2018-08-07"},{"lineNumber":94,"author":{"gitId":"-"},"content":" persons.remove(key);","lastModifiedDate":"2018-02-28"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" //// util methods","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":" .add(\"persons\", persons)","lastModifiedDate":"2019-02-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"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-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":108,"author":{"gitId":"Jawad280"},"content":" ObservableList\u003cPerson\u003e personList \u003d persons.asUnmodifiableObservableList();","lastModifiedDate":"2024-02-26"},{"lineNumber":109,"author":{"gitId":"Jawad280"},"content":" // Sort the list","lastModifiedDate":"2024-02-26"},{"lineNumber":110,"author":{"gitId":"Jawad280"},"content":" personList \u003d personList.sorted();","lastModifiedDate":"2024-02-26"},{"lineNumber":111,"author":{"gitId":"Jawad280"},"content":" return personList;","lastModifiedDate":"2024-02-26"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-01"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-01"},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":115,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"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 AddressBook)) {","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":" AddressBook otherAddressBook \u003d (AddressBook) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" return persons.equals(otherAddressBook.persons);","lastModifiedDate":"2023-07-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":130,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":131,"author":{"gitId":"-"},"content":" return persons.hashCode();","lastModifiedDate":"2018-03-29"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"Jawad280":4,"-":129}},{"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":"chenyixin0"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2024-02-29"},{"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":"Jawad280"},"content":" Person choosePersonToView(Predicate\u003cPerson\u003e predicate);","lastModifiedDate":"2024-02-26"},{"lineNumber":89,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":90,"author":{"gitId":"chenyixin0"},"content":" FilteredList\u003cPerson\u003e generateNewFilteredPersonList(Predicate\u003cPerson\u003e predicate);","lastModifiedDate":"2024-02-29"},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"chenyixin0":3,"Jawad280":1,"-":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":"-"},"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":"-"},"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":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2018-01-10"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(this.addressBook.getPersonList());","lastModifiedDate":"2019-01-25"},{"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":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25"},{"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":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","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 setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"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":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":92,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":93,"author":{"gitId":"-"},"content":" return addressBook.hasPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":" addressBook.removePerson(target);","lastModifiedDate":"2019-01-25"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":102,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":103,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":104,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":109,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" addressBook.setPerson(target, editedPerson);","lastModifiedDate":"2019-01-25"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":114,"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":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":117,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10"},{"lineNumber":118,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11"},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":121,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":122,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":126,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":127,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05"},{"lineNumber":128,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":131,"author":{"gitId":"chenyixin0"},"content":" @Override","lastModifiedDate":"2024-02-29"},{"lineNumber":132,"author":{"gitId":"chenyixin0"},"content":" public FilteredList\u003cPerson\u003e generateNewFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2024-02-29"},{"lineNumber":133,"author":{"gitId":"chenyixin0"},"content":" requireNonNull(predicate);","lastModifiedDate":"2024-02-29"},{"lineNumber":134,"author":{"gitId":"chenyixin0"},"content":" return new FilteredList\u003c\u003e(filteredPersons, predicate);","lastModifiedDate":"2024-02-29"},{"lineNumber":135,"author":{"gitId":"chenyixin0"},"content":" //return filteredPersons;","lastModifiedDate":"2024-02-29"},{"lineNumber":136,"author":{"gitId":"chenyixin0"},"content":" }","lastModifiedDate":"2024-02-29"},{"lineNumber":137,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":138,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-02-26"},{"lineNumber":139,"author":{"gitId":"Jawad280"},"content":" public Person choosePersonToView(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2024-02-26"},{"lineNumber":140,"author":{"gitId":"Jawad280"},"content":" requireNonNull(predicate);","lastModifiedDate":"2024-02-26"},{"lineNumber":141,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":142,"author":{"gitId":"Jawad280"},"content":" for (Person p : filteredPersons) {","lastModifiedDate":"2024-02-26"},{"lineNumber":143,"author":{"gitId":"Jawad280"},"content":" if (predicate.test(p)) {","lastModifiedDate":"2024-02-26"},{"lineNumber":144,"author":{"gitId":"Jawad280"},"content":" return p;","lastModifiedDate":"2024-02-26"},{"lineNumber":145,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":146,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":147,"author":{"gitId":"Jawad280"},"content":" return null;","lastModifiedDate":"2024-02-26"},{"lineNumber":148,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":150,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":151,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":152,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31"},{"lineNumber":153,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":154,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":155,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":158,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31"},{"lineNumber":159,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":160,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":163,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":164,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13"},{"lineNumber":165,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13"},{"lineNumber":166,"author":{"gitId":"-"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons);","lastModifiedDate":"2023-07-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":168,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"chenyixin0":9,"Jawad280":11,"-":148}},{"path":"src/main/java/seedu/address/model/person/Address.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.AppUtil.checkArgument;","lastModifiedDate":"2024-02-26"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Represents a Person\u0027s address in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class Address {","lastModifiedDate":"2016-09-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Addresses can take any values, and it should not be blank\";","lastModifiedDate":"2024-02-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2024-02-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2024-02-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-02-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2024-02-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public final String value;","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Constructs an {@code Address}.","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @param address A valid address.","lastModifiedDate":"2017-05-30"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public Address(String address) {","lastModifiedDate":"2017-05-30"},{"lineNumber":26,"author":{"gitId":"ashleygoh1"},"content":" if (address.isEmpty()) {","lastModifiedDate":"2024-02-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":" value \u003d address;","lastModifiedDate":"2018-08-14"},{"lineNumber":28,"author":{"gitId":"ashleygoh1"},"content":" } else {","lastModifiedDate":"2024-02-26"},{"lineNumber":29,"author":{"gitId":"ashleygoh1"},"content":" checkArgument(isValidAddress(address), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-26"},{"lineNumber":30,"author":{"gitId":"ashleygoh1"},"content":" value \u003d address;","lastModifiedDate":"2024-02-26"},{"lineNumber":31,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-02-26"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid email.","lastModifiedDate":"2024-02-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static boolean isValidAddress(String test) {","lastModifiedDate":"2024-02-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-02-26"},{"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 String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24"},{"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 boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return true;","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":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" if (!(other instanceof Address)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return false;","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":" Address otherAddress \u003d (Address) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return value.equals(otherAddress.value);","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"ashleygoh1":5,"-":61}},{"path":"src/main/java/seedu/address/model/person/InternDuration.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ashleygoh1"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-02-25"},{"lineNumber":2,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":3,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-02-25"},{"lineNumber":4,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":5,"author":{"gitId":"ashleygoh1"},"content":"/**","lastModifiedDate":"2024-02-25"},{"lineNumber":6,"author":{"gitId":"ashleygoh1"},"content":" * Represents a Person\u0027s Intern Duration in the address book.","lastModifiedDate":"2024-02-25"},{"lineNumber":7,"author":{"gitId":"ashleygoh1"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidInternDuration(String)}","lastModifiedDate":"2024-02-25"},{"lineNumber":8,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":9,"author":{"gitId":"ashleygoh1"},"content":"public class InternDuration {","lastModifiedDate":"2024-02-25"},{"lineNumber":10,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":11,"author":{"gitId":"ashleygoh1"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Intern Duration can take any values, and it should not be blank\";","lastModifiedDate":"2024-02-25"},{"lineNumber":12,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":13,"author":{"gitId":"ashleygoh1"},"content":" /*","lastModifiedDate":"2024-02-25"},{"lineNumber":14,"author":{"gitId":"ashleygoh1"},"content":" * The first character of the intern duration must not be a whitespace,","lastModifiedDate":"2024-02-25"},{"lineNumber":15,"author":{"gitId":"ashleygoh1"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-02-25"},{"lineNumber":16,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":17,"author":{"gitId":"ashleygoh1"},"content":" public static final String VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2024-02-25"},{"lineNumber":18,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":19,"author":{"gitId":"ashleygoh1"},"content":" public final String value;","lastModifiedDate":"2024-02-25"},{"lineNumber":20,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":21,"author":{"gitId":"ashleygoh1"},"content":" /**","lastModifiedDate":"2024-02-25"},{"lineNumber":22,"author":{"gitId":"ashleygoh1"},"content":" * Constructs an {@code internDuration}.","lastModifiedDate":"2024-02-25"},{"lineNumber":23,"author":{"gitId":"ashleygoh1"},"content":" *","lastModifiedDate":"2024-02-25"},{"lineNumber":24,"author":{"gitId":"ashleygoh1"},"content":" * @param internDuration A valid intern duration.","lastModifiedDate":"2024-02-25"},{"lineNumber":25,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":26,"author":{"gitId":"ashleygoh1"},"content":" public InternDuration(String internDuration) {","lastModifiedDate":"2024-02-25"},{"lineNumber":27,"author":{"gitId":"ashleygoh1"},"content":" checkArgument(isValidInternDuration(internDuration), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-25"},{"lineNumber":28,"author":{"gitId":"ashleygoh1"},"content":" value \u003d internDuration;","lastModifiedDate":"2024-02-25"},{"lineNumber":29,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":30,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":31,"author":{"gitId":"ashleygoh1"},"content":" /**","lastModifiedDate":"2024-02-25"},{"lineNumber":32,"author":{"gitId":"ashleygoh1"},"content":" * Returns true if a given string is a valid intern duration.","lastModifiedDate":"2024-02-25"},{"lineNumber":33,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":34,"author":{"gitId":"ashleygoh1"},"content":" public static boolean isValidInternDuration(String test) {","lastModifiedDate":"2024-02-25"},{"lineNumber":35,"author":{"gitId":"ashleygoh1"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-02-25"},{"lineNumber":36,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":37,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":38,"author":{"gitId":"ashleygoh1"},"content":" @Override","lastModifiedDate":"2024-02-25"},{"lineNumber":39,"author":{"gitId":"ashleygoh1"},"content":" public String toString() {","lastModifiedDate":"2024-02-25"},{"lineNumber":40,"author":{"gitId":"ashleygoh1"},"content":" return value;","lastModifiedDate":"2024-02-25"},{"lineNumber":41,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":42,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":43,"author":{"gitId":"ashleygoh1"},"content":" @Override","lastModifiedDate":"2024-02-25"},{"lineNumber":44,"author":{"gitId":"ashleygoh1"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-02-25"},{"lineNumber":45,"author":{"gitId":"ashleygoh1"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-02-25"},{"lineNumber":46,"author":{"gitId":"ashleygoh1"},"content":" return true;","lastModifiedDate":"2024-02-25"},{"lineNumber":47,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":48,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":49,"author":{"gitId":"ashleygoh1"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-02-25"},{"lineNumber":50,"author":{"gitId":"ashleygoh1"},"content":" if (!(other instanceof InternDuration)) {","lastModifiedDate":"2024-02-25"},{"lineNumber":51,"author":{"gitId":"ashleygoh1"},"content":" return false;","lastModifiedDate":"2024-02-25"},{"lineNumber":52,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":53,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":54,"author":{"gitId":"ashleygoh1"},"content":" InternDuration otherInternDuration \u003d (InternDuration) other;","lastModifiedDate":"2024-02-25"},{"lineNumber":55,"author":{"gitId":"ashleygoh1"},"content":" return value.equals(otherInternDuration.value);","lastModifiedDate":"2024-02-25"},{"lineNumber":56,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":57,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":58,"author":{"gitId":"ashleygoh1"},"content":" @Override","lastModifiedDate":"2024-02-25"},{"lineNumber":59,"author":{"gitId":"ashleygoh1"},"content":" public int hashCode() {","lastModifiedDate":"2024-02-25"},{"lineNumber":60,"author":{"gitId":"ashleygoh1"},"content":" return value.hashCode();","lastModifiedDate":"2024-02-25"},{"lineNumber":61,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":62,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":63,"author":{"gitId":"ashleygoh1"},"content":"}","lastModifiedDate":"2024-02-25"}],"authorContributionMap":{"ashleygoh1":63}},{"path":"src/main/java/seedu/address/model/person/InterviewDate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ashleygoh1"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-02-25"},{"lineNumber":2,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":3,"author":{"gitId":"ashleygoh1"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-25"},{"lineNumber":4,"author":{"gitId":"ashleygoh1"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-25"},{"lineNumber":5,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":6,"author":{"gitId":"ashleygoh1"},"content":"/**","lastModifiedDate":"2024-02-25"},{"lineNumber":7,"author":{"gitId":"ashleygoh1"},"content":" * Represents a Person\u0027s interview date in the address book.","lastModifiedDate":"2024-02-26"},{"lineNumber":8,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":9,"author":{"gitId":"ashleygoh1"},"content":"public class InterviewDate {","lastModifiedDate":"2024-02-25"},{"lineNumber":10,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":11,"author":{"gitId":"ashleygoh1"},"content":" public final LocalDateTime value;","lastModifiedDate":"2024-02-25"},{"lineNumber":12,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":13,"author":{"gitId":"ashleygoh1"},"content":" private DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd-MM-yyyy HHmm\");","lastModifiedDate":"2024-02-25"},{"lineNumber":14,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":15,"author":{"gitId":"ashleygoh1"},"content":" /**","lastModifiedDate":"2024-02-25"},{"lineNumber":16,"author":{"gitId":"ashleygoh1"},"content":" * Constructs an {@code interview date}.","lastModifiedDate":"2024-02-25"},{"lineNumber":17,"author":{"gitId":"ashleygoh1"},"content":" *","lastModifiedDate":"2024-02-25"},{"lineNumber":18,"author":{"gitId":"ashleygoh1"},"content":" * @param interviewDate A valid interview date.","lastModifiedDate":"2024-02-25"},{"lineNumber":19,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":20,"author":{"gitId":"ashleygoh1"},"content":" public InterviewDate(String interviewDate) {","lastModifiedDate":"2024-02-25"},{"lineNumber":21,"author":{"gitId":"ashleygoh1"},"content":" if (interviewDate \u003d\u003d null) {","lastModifiedDate":"2024-02-26"},{"lineNumber":22,"author":{"gitId":"ashleygoh1"},"content":" value \u003d null;","lastModifiedDate":"2024-02-26"},{"lineNumber":23,"author":{"gitId":"ashleygoh1"},"content":" } else {","lastModifiedDate":"2024-02-26"},{"lineNumber":24,"author":{"gitId":"ashleygoh1"},"content":" value \u003d LocalDateTime.parse(interviewDate, formatter);","lastModifiedDate":"2024-02-25"},{"lineNumber":25,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":26,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":27,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":28,"author":{"gitId":"ashleygoh1"},"content":" @Override","lastModifiedDate":"2024-02-25"},{"lineNumber":29,"author":{"gitId":"ashleygoh1"},"content":" public String toString() {","lastModifiedDate":"2024-02-25"},{"lineNumber":30,"author":{"gitId":"ashleygoh1"},"content":" String str \u003d \"\";","lastModifiedDate":"2024-02-26"},{"lineNumber":31,"author":{"gitId":"ashleygoh1"},"content":" if (value !\u003d null) {","lastModifiedDate":"2024-02-26"},{"lineNumber":32,"author":{"gitId":"ashleygoh1"},"content":" str \u003d value.format(DateTimeFormatter.ofPattern(\"dd-MM-yyyy HHmm\"));","lastModifiedDate":"2024-02-26"},{"lineNumber":33,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":34,"author":{"gitId":"ashleygoh1"},"content":" return str;","lastModifiedDate":"2024-02-26"},{"lineNumber":35,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":36,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":37,"author":{"gitId":"ashleygoh1"},"content":" @Override","lastModifiedDate":"2024-02-25"},{"lineNumber":38,"author":{"gitId":"ashleygoh1"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-02-25"},{"lineNumber":39,"author":{"gitId":"ashleygoh1"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-02-25"},{"lineNumber":40,"author":{"gitId":"ashleygoh1"},"content":" return true;","lastModifiedDate":"2024-02-25"},{"lineNumber":41,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":42,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":43,"author":{"gitId":"ashleygoh1"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-02-25"},{"lineNumber":44,"author":{"gitId":"ashleygoh1"},"content":" // if (!(other instanceof InterviewDate)) {","lastModifiedDate":"2024-02-26"},{"lineNumber":45,"author":{"gitId":"ashleygoh1"},"content":" // return false;","lastModifiedDate":"2024-02-26"},{"lineNumber":46,"author":{"gitId":"ashleygoh1"},"content":" // }","lastModifiedDate":"2024-02-26"},{"lineNumber":47,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":48,"author":{"gitId":"ashleygoh1"},"content":" if (other \u003d\u003d null || getClass() !\u003d other.getClass()) {","lastModifiedDate":"2024-02-26"},{"lineNumber":49,"author":{"gitId":"ashleygoh1"},"content":" return false;","lastModifiedDate":"2024-02-26"},{"lineNumber":50,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":51,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":52,"author":{"gitId":"ashleygoh1"},"content":" InterviewDate otherInterviewDate \u003d (InterviewDate) other;","lastModifiedDate":"2024-02-25"},{"lineNumber":53,"author":{"gitId":"ashleygoh1"},"content":" if (value \u003d\u003d null) {","lastModifiedDate":"2024-02-26"},{"lineNumber":54,"author":{"gitId":"ashleygoh1"},"content":" return otherInterviewDate.value \u003d\u003d null;","lastModifiedDate":"2024-02-26"},{"lineNumber":55,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":56,"author":{"gitId":"ashleygoh1"},"content":" return value.equals(otherInterviewDate.value);","lastModifiedDate":"2024-02-25"},{"lineNumber":57,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":58,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":59,"author":{"gitId":"ashleygoh1"},"content":" @Override","lastModifiedDate":"2024-02-25"},{"lineNumber":60,"author":{"gitId":"ashleygoh1"},"content":" public int hashCode() {","lastModifiedDate":"2024-02-25"},{"lineNumber":61,"author":{"gitId":"ashleygoh1"},"content":" return value.hashCode();","lastModifiedDate":"2024-02-25"},{"lineNumber":62,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":63,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":64,"author":{"gitId":"ashleygoh1"},"content":"}","lastModifiedDate":"2024-02-25"}],"authorContributionMap":{"ashleygoh1":64}},{"path":"src/main/java/seedu/address/model/person/JobDescription.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ashleygoh1"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-02-25"},{"lineNumber":2,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":3,"author":{"gitId":"ashleygoh1"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-02-25"},{"lineNumber":4,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-02-25"},{"lineNumber":5,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":6,"author":{"gitId":"ashleygoh1"},"content":"/**","lastModifiedDate":"2024-02-25"},{"lineNumber":7,"author":{"gitId":"ashleygoh1"},"content":" * Represents a Person\u0027s job description in the address book.","lastModifiedDate":"2024-02-25"},{"lineNumber":8,"author":{"gitId":"ashleygoh1"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidJobDescription(String)}","lastModifiedDate":"2024-02-25"},{"lineNumber":9,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":10,"author":{"gitId":"ashleygoh1"},"content":"public class JobDescription {","lastModifiedDate":"2024-02-25"},{"lineNumber":11,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":12,"author":{"gitId":"ashleygoh1"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Job Description can take any values, and it should not be blank\";","lastModifiedDate":"2024-02-25"},{"lineNumber":13,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":14,"author":{"gitId":"ashleygoh1"},"content":" /*","lastModifiedDate":"2024-02-25"},{"lineNumber":15,"author":{"gitId":"ashleygoh1"},"content":" * The first character of the job description must not be a whitespace,","lastModifiedDate":"2024-02-25"},{"lineNumber":16,"author":{"gitId":"ashleygoh1"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-02-25"},{"lineNumber":17,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":18,"author":{"gitId":"ashleygoh1"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\S.*\";","lastModifiedDate":"2024-02-25"},{"lineNumber":19,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":20,"author":{"gitId":"ashleygoh1"},"content":" public final String value;","lastModifiedDate":"2024-02-25"},{"lineNumber":21,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":22,"author":{"gitId":"ashleygoh1"},"content":" /**","lastModifiedDate":"2024-02-25"},{"lineNumber":23,"author":{"gitId":"ashleygoh1"},"content":" * Constructs an {@code Job Description}.","lastModifiedDate":"2024-02-25"},{"lineNumber":24,"author":{"gitId":"ashleygoh1"},"content":" *","lastModifiedDate":"2024-02-25"},{"lineNumber":25,"author":{"gitId":"ashleygoh1"},"content":" * @param jobDescription A valid Job Description.","lastModifiedDate":"2024-02-25"},{"lineNumber":26,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":27,"author":{"gitId":"ashleygoh1"},"content":" public JobDescription(String jobDescription) {","lastModifiedDate":"2024-02-25"},{"lineNumber":28,"author":{"gitId":"ashleygoh1"},"content":" requireNonNull(jobDescription);","lastModifiedDate":"2024-02-25"},{"lineNumber":29,"author":{"gitId":"ashleygoh1"},"content":" checkArgument(isValidJobDescription(jobDescription), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-25"},{"lineNumber":30,"author":{"gitId":"ashleygoh1"},"content":" value \u003d jobDescription;","lastModifiedDate":"2024-02-25"},{"lineNumber":31,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":32,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":33,"author":{"gitId":"ashleygoh1"},"content":" /**","lastModifiedDate":"2024-02-25"},{"lineNumber":34,"author":{"gitId":"ashleygoh1"},"content":" * Returns true if a given string is a valid job description.","lastModifiedDate":"2024-02-25"},{"lineNumber":35,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":36,"author":{"gitId":"ashleygoh1"},"content":" public static boolean isValidJobDescription(String test) {","lastModifiedDate":"2024-02-25"},{"lineNumber":37,"author":{"gitId":"ashleygoh1"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-02-25"},{"lineNumber":38,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":39,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":40,"author":{"gitId":"ashleygoh1"},"content":" @Override","lastModifiedDate":"2024-02-25"},{"lineNumber":41,"author":{"gitId":"ashleygoh1"},"content":" public String toString() {","lastModifiedDate":"2024-02-25"},{"lineNumber":42,"author":{"gitId":"ashleygoh1"},"content":" return value;","lastModifiedDate":"2024-02-25"},{"lineNumber":43,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":44,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":45,"author":{"gitId":"ashleygoh1"},"content":" @Override","lastModifiedDate":"2024-02-25"},{"lineNumber":46,"author":{"gitId":"ashleygoh1"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-02-25"},{"lineNumber":47,"author":{"gitId":"ashleygoh1"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-02-25"},{"lineNumber":48,"author":{"gitId":"ashleygoh1"},"content":" return true;","lastModifiedDate":"2024-02-25"},{"lineNumber":49,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":50,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":51,"author":{"gitId":"ashleygoh1"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-02-25"},{"lineNumber":52,"author":{"gitId":"ashleygoh1"},"content":" if (!(other instanceof JobDescription)) {","lastModifiedDate":"2024-02-25"},{"lineNumber":53,"author":{"gitId":"ashleygoh1"},"content":" return false;","lastModifiedDate":"2024-02-25"},{"lineNumber":54,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":55,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":56,"author":{"gitId":"ashleygoh1"},"content":" JobDescription otherJobDescription \u003d (JobDescription) other;","lastModifiedDate":"2024-02-25"},{"lineNumber":57,"author":{"gitId":"ashleygoh1"},"content":" return value.equals(otherJobDescription.value);","lastModifiedDate":"2024-02-25"},{"lineNumber":58,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":59,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":60,"author":{"gitId":"ashleygoh1"},"content":" @Override","lastModifiedDate":"2024-02-25"},{"lineNumber":61,"author":{"gitId":"ashleygoh1"},"content":" public int hashCode() {","lastModifiedDate":"2024-02-25"},{"lineNumber":62,"author":{"gitId":"ashleygoh1"},"content":" return value.hashCode();","lastModifiedDate":"2024-02-25"},{"lineNumber":63,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":64,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":65,"author":{"gitId":"ashleygoh1"},"content":"}","lastModifiedDate":"2024-02-25"}],"authorContributionMap":{"ashleygoh1":65}},{"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":"ashleygoh1"},"content":" .anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(person.getCompanyName().fullName, keyword));","lastModifiedDate":"2024-02-25"},{"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":{"ashleygoh1":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.Objects;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":"public class Person implements Comparable\u003cPerson\u003e {","lastModifiedDate":"2024-02-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":17,"author":{"gitId":"ashleygoh1"},"content":" private final Name companyName;","lastModifiedDate":"2024-02-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19"},{"lineNumber":23,"author":{"gitId":"ashleygoh1"},"content":" private final Tag tag;","lastModifiedDate":"2024-02-25"},{"lineNumber":24,"author":{"gitId":"ashleygoh1"},"content":" private final JobDescription jobDescription;","lastModifiedDate":"2024-02-25"},{"lineNumber":25,"author":{"gitId":"ashleygoh1"},"content":" private final InterviewDate interviewDate;","lastModifiedDate":"2024-02-25"},{"lineNumber":26,"author":{"gitId":"ashleygoh1"},"content":" private final InternDuration internDuration;","lastModifiedDate":"2024-02-25"},{"lineNumber":27,"author":{"gitId":"ashleygoh1"},"content":" private final Salary salary;","lastModifiedDate":"2024-02-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"ashleygoh1"},"content":" public Person(Name companyName, Phone phone, Email email, Address address, Tag tag,","lastModifiedDate":"2024-02-25"},{"lineNumber":33,"author":{"gitId":"ashleygoh1"},"content":" JobDescription jobDescription, InterviewDate interviewDate,","lastModifiedDate":"2024-02-25"},{"lineNumber":34,"author":{"gitId":"ashleygoh1"},"content":" InternDuration internDuration, Salary salary) {","lastModifiedDate":"2024-02-25"},{"lineNumber":35,"author":{"gitId":"ashleygoh1"},"content":" requireAllNonNull(companyName, phone, email, tag, jobDescription);","lastModifiedDate":"2024-02-26"},{"lineNumber":36,"author":{"gitId":"ashleygoh1"},"content":" this.companyName \u003d companyName;","lastModifiedDate":"2024-02-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20"},{"lineNumber":40,"author":{"gitId":"ashleygoh1"},"content":" this.tag \u003d tag;","lastModifiedDate":"2024-02-25"},{"lineNumber":41,"author":{"gitId":"ashleygoh1"},"content":" this.jobDescription \u003d jobDescription;","lastModifiedDate":"2024-02-25"},{"lineNumber":42,"author":{"gitId":"ashleygoh1"},"content":" this.interviewDate \u003d interviewDate;","lastModifiedDate":"2024-02-25"},{"lineNumber":43,"author":{"gitId":"ashleygoh1"},"content":" this.internDuration \u003d internDuration;","lastModifiedDate":"2024-02-25"},{"lineNumber":44,"author":{"gitId":"ashleygoh1"},"content":" this.salary \u003d salary;","lastModifiedDate":"2024-02-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"ashleygoh1"},"content":" public Name getCompanyName() {","lastModifiedDate":"2024-02-25"},{"lineNumber":48,"author":{"gitId":"ashleygoh1"},"content":" return companyName;","lastModifiedDate":"2024-02-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return email;","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":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":63,"author":{"gitId":"ashleygoh1"},"content":" public Tag getTag() {","lastModifiedDate":"2024-02-25"},{"lineNumber":64,"author":{"gitId":"ashleygoh1"},"content":" return tag;","lastModifiedDate":"2024-02-25"},{"lineNumber":65,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":66,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":67,"author":{"gitId":"ashleygoh1"},"content":" public JobDescription getJobDescription() {","lastModifiedDate":"2024-02-25"},{"lineNumber":68,"author":{"gitId":"ashleygoh1"},"content":" return jobDescription;","lastModifiedDate":"2024-02-25"},{"lineNumber":69,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":70,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":71,"author":{"gitId":"ashleygoh1"},"content":" public InterviewDate getInterviewDate() {","lastModifiedDate":"2024-02-25"},{"lineNumber":72,"author":{"gitId":"ashleygoh1"},"content":" return interviewDate;","lastModifiedDate":"2024-02-25"},{"lineNumber":73,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":74,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":75,"author":{"gitId":"ashleygoh1"},"content":" public InternDuration getInternDuration() {","lastModifiedDate":"2024-02-25"},{"lineNumber":76,"author":{"gitId":"ashleygoh1"},"content":" return internDuration;","lastModifiedDate":"2024-02-25"},{"lineNumber":77,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":78,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":79,"author":{"gitId":"ashleygoh1"},"content":" public Salary getSalary() {","lastModifiedDate":"2024-02-25"},{"lineNumber":80,"author":{"gitId":"ashleygoh1"},"content":" return salary;","lastModifiedDate":"2024-02-25"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":84,"author":{"gitId":"ashleygoh1"},"content":" * Returns true if both inputs have the same company name and job description.","lastModifiedDate":"2024-02-25"},{"lineNumber":85,"author":{"gitId":"ashleygoh1"},"content":" * This defines a weaker notion of equality between two inputs.","lastModifiedDate":"2024-02-25"},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19"},{"lineNumber":93,"author":{"gitId":"ashleygoh1"},"content":" \u0026\u0026 otherPerson.getCompanyName().equals(getCompanyName())","lastModifiedDate":"2024-02-25"},{"lineNumber":94,"author":{"gitId":"ashleygoh1"},"content":" \u0026\u0026 otherPerson.getJobDescription().equals(getJobDescription());","lastModifiedDate":"2024-02-25"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":98,"author":{"gitId":"ashleygoh1"},"content":" * Returns true if both inputs have the same identity and data fields.","lastModifiedDate":"2024-02-25"},{"lineNumber":99,"author":{"gitId":"ashleygoh1"},"content":" * This defines a stronger notion of equality between two inputs.","lastModifiedDate":"2024-02-25"},{"lineNumber":100,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":103,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":104,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":107,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10"},{"lineNumber":109,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":112,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10"},{"lineNumber":113,"author":{"gitId":"ashleygoh1"},"content":" return companyName.equals(otherPerson.companyName)","lastModifiedDate":"2024-02-25"},{"lineNumber":114,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":117,"author":{"gitId":"ashleygoh1"},"content":" \u0026\u0026 tag.equals(otherPerson.tag)","lastModifiedDate":"2024-02-25"},{"lineNumber":118,"author":{"gitId":"ashleygoh1"},"content":" \u0026\u0026 jobDescription.equals(otherPerson.jobDescription)","lastModifiedDate":"2024-02-25"},{"lineNumber":119,"author":{"gitId":"ashleygoh1"},"content":" \u0026\u0026 interviewDate.equals(otherPerson.interviewDate)","lastModifiedDate":"2024-02-25"},{"lineNumber":120,"author":{"gitId":"ashleygoh1"},"content":" \u0026\u0026 internDuration.equals(otherPerson.internDuration)","lastModifiedDate":"2024-02-25"},{"lineNumber":121,"author":{"gitId":"ashleygoh1"},"content":" \u0026\u0026 salary.equals(otherPerson.salary);","lastModifiedDate":"2024-02-25"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":124,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":125,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":126,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":127,"author":{"gitId":"ashleygoh1"},"content":" return Objects.hash(companyName, phone, email, address, tag,","lastModifiedDate":"2024-02-25"},{"lineNumber":128,"author":{"gitId":"ashleygoh1"},"content":" jobDescription, interviewDate, internDuration, salary);","lastModifiedDate":"2024-02-25"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":132,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":133,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":134,"author":{"gitId":"ashleygoh1"},"content":" .add(\"name\", companyName)","lastModifiedDate":"2024-02-25"},{"lineNumber":135,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":138,"author":{"gitId":"ashleygoh1"},"content":" .add(\"tag\", tag)","lastModifiedDate":"2024-02-25"},{"lineNumber":139,"author":{"gitId":"ashleygoh1"},"content":" .add(\"job description\", jobDescription)","lastModifiedDate":"2024-02-25"},{"lineNumber":140,"author":{"gitId":"ashleygoh1"},"content":" .add(\"interview date\", interviewDate)","lastModifiedDate":"2024-02-25"},{"lineNumber":141,"author":{"gitId":"ashleygoh1"},"content":" .add(\"intern duration\", internDuration)","lastModifiedDate":"2024-02-25"},{"lineNumber":142,"author":{"gitId":"ashleygoh1"},"content":" .add(\"salary\", salary)","lastModifiedDate":"2024-02-25"},{"lineNumber":143,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":145,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-02-26"},{"lineNumber":146,"author":{"gitId":"Jawad280"},"content":" public int compareTo(Person otherPerson) {","lastModifiedDate":"2024-02-26"},{"lineNumber":147,"author":{"gitId":"Jawad280"},"content":" if (this.interviewDate.value !\u003d null \u0026\u0026 otherPerson.getInterviewDate().value !\u003d null) {","lastModifiedDate":"2024-02-26"},{"lineNumber":148,"author":{"gitId":"Jawad280"},"content":" return this.interviewDate.value.compareTo(otherPerson.getInterviewDate().value);","lastModifiedDate":"2024-02-26"},{"lineNumber":149,"author":{"gitId":"Jawad280"},"content":" } else if (this.interviewDate.value !\u003d null) {","lastModifiedDate":"2024-02-26"},{"lineNumber":150,"author":{"gitId":"Jawad280"},"content":" return -1;","lastModifiedDate":"2024-02-26"},{"lineNumber":151,"author":{"gitId":"Jawad280"},"content":" } else if (otherPerson.getInterviewDate().value !\u003d null) {","lastModifiedDate":"2024-02-26"},{"lineNumber":152,"author":{"gitId":"Jawad280"},"content":" return 1;","lastModifiedDate":"2024-02-26"},{"lineNumber":153,"author":{"gitId":"Jawad280"},"content":" } else {","lastModifiedDate":"2024-02-26"},{"lineNumber":154,"author":{"gitId":"Jawad280"},"content":" return 0;","lastModifiedDate":"2024-02-26"},{"lineNumber":155,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":156,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":158,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"Jawad280":13,"ashleygoh1":56,"-":89}},{"path":"src/main/java/seedu/address/model/person/Salary.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ashleygoh1"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-02-25"},{"lineNumber":2,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":3,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-02-25"},{"lineNumber":4,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":5,"author":{"gitId":"ashleygoh1"},"content":"/**","lastModifiedDate":"2024-02-25"},{"lineNumber":6,"author":{"gitId":"ashleygoh1"},"content":" * Represents a Person\u0027s salary in the address book.","lastModifiedDate":"2024-02-25"},{"lineNumber":7,"author":{"gitId":"ashleygoh1"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidSalary(String)}","lastModifiedDate":"2024-02-25"},{"lineNumber":8,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":9,"author":{"gitId":"ashleygoh1"},"content":"public class Salary {","lastModifiedDate":"2024-02-25"},{"lineNumber":10,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":11,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":12,"author":{"gitId":"ashleygoh1"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Salary should only contain numbers\";","lastModifiedDate":"2024-02-26"},{"lineNumber":13,"author":{"gitId":"ashleygoh1"},"content":" public static final String VALIDATION_REGEX \u003d \"[1-9]\\\\d*\";","lastModifiedDate":"2024-02-26"},{"lineNumber":14,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":15,"author":{"gitId":"ashleygoh1"},"content":" public final String value;","lastModifiedDate":"2024-02-25"},{"lineNumber":16,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":17,"author":{"gitId":"ashleygoh1"},"content":" /**","lastModifiedDate":"2024-02-25"},{"lineNumber":18,"author":{"gitId":"ashleygoh1"},"content":" * Constructs a {@code Salary}.","lastModifiedDate":"2024-02-25"},{"lineNumber":19,"author":{"gitId":"ashleygoh1"},"content":" *","lastModifiedDate":"2024-02-25"},{"lineNumber":20,"author":{"gitId":"ashleygoh1"},"content":" * @param salary A valid salary.","lastModifiedDate":"2024-02-25"},{"lineNumber":21,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":22,"author":{"gitId":"ashleygoh1"},"content":" public Salary(String salary) {","lastModifiedDate":"2024-02-25"},{"lineNumber":23,"author":{"gitId":"ashleygoh1"},"content":" checkArgument(isValidSalary(salary), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-25"},{"lineNumber":24,"author":{"gitId":"ashleygoh1"},"content":" value \u003d salary;","lastModifiedDate":"2024-02-25"},{"lineNumber":25,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":26,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":27,"author":{"gitId":"ashleygoh1"},"content":" /**","lastModifiedDate":"2024-02-25"},{"lineNumber":28,"author":{"gitId":"ashleygoh1"},"content":" * Returns true if a given string is a valid phone number.","lastModifiedDate":"2024-02-25"},{"lineNumber":29,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":30,"author":{"gitId":"ashleygoh1"},"content":" public static boolean isValidSalary(String test) {","lastModifiedDate":"2024-02-25"},{"lineNumber":31,"author":{"gitId":"ashleygoh1"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-02-25"},{"lineNumber":32,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":33,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":34,"author":{"gitId":"ashleygoh1"},"content":" @Override","lastModifiedDate":"2024-02-25"},{"lineNumber":35,"author":{"gitId":"ashleygoh1"},"content":" public String toString() {","lastModifiedDate":"2024-02-25"},{"lineNumber":36,"author":{"gitId":"ashleygoh1"},"content":" return value;","lastModifiedDate":"2024-02-25"},{"lineNumber":37,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":38,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":39,"author":{"gitId":"ashleygoh1"},"content":" @Override","lastModifiedDate":"2024-02-25"},{"lineNumber":40,"author":{"gitId":"ashleygoh1"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-02-25"},{"lineNumber":41,"author":{"gitId":"ashleygoh1"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-02-25"},{"lineNumber":42,"author":{"gitId":"ashleygoh1"},"content":" return true;","lastModifiedDate":"2024-02-25"},{"lineNumber":43,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":44,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":45,"author":{"gitId":"ashleygoh1"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-02-25"},{"lineNumber":46,"author":{"gitId":"ashleygoh1"},"content":" if (!(other instanceof Salary)) {","lastModifiedDate":"2024-02-25"},{"lineNumber":47,"author":{"gitId":"ashleygoh1"},"content":" return false;","lastModifiedDate":"2024-02-25"},{"lineNumber":48,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":49,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":50,"author":{"gitId":"ashleygoh1"},"content":" Salary otherSalary \u003d (Salary) other;","lastModifiedDate":"2024-02-25"},{"lineNumber":51,"author":{"gitId":"ashleygoh1"},"content":" return value.equals(otherSalary.value);","lastModifiedDate":"2024-02-25"},{"lineNumber":52,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":53,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":54,"author":{"gitId":"ashleygoh1"},"content":" @Override","lastModifiedDate":"2024-02-25"},{"lineNumber":55,"author":{"gitId":"ashleygoh1"},"content":" public int hashCode() {","lastModifiedDate":"2024-02-25"},{"lineNumber":56,"author":{"gitId":"ashleygoh1"},"content":" return value.hashCode();","lastModifiedDate":"2024-02-25"},{"lineNumber":57,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":58,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":59,"author":{"gitId":"ashleygoh1"},"content":"}","lastModifiedDate":"2024-02-25"}],"authorContributionMap":{"ashleygoh1":59}},{"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":"2024-02-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-02-25"},{"lineNumber":11,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.InternDuration;","lastModifiedDate":"2024-02-25"},{"lineNumber":12,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.InterviewDate;","lastModifiedDate":"2024-02-25"},{"lineNumber":13,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.JobDescription;","lastModifiedDate":"2024-02-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-02-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-02-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-02-25"},{"lineNumber":17,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.Salary;","lastModifiedDate":"2024-02-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16"},{"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":"ashleygoh1"},"content":" new Person(new Name(\"FoodPanda\"), new Phone(\"12345678\"), new Email(\"panda@food.com\"),","lastModifiedDate":"2024-02-25"},{"lineNumber":27,"author":{"gitId":"ashleygoh1"},"content":" new Address(\"CBD\"), new Tag(\"F\"), new JobDescription(\"Front End Intern\"),","lastModifiedDate":"2024-02-25"},{"lineNumber":28,"author":{"gitId":"ashleygoh1"},"content":" new InterviewDate(\"15-04-2024 0900\"), new InternDuration(\"6 months\"), new Salary(\"500\"))","lastModifiedDate":"2024-02-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20"},{"lineNumber":33,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"ashleygoh1":7,"-":42}},{"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 com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","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.person.Address;","lastModifiedDate":"2024-02-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-02-25"},{"lineNumber":9,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.InternDuration;","lastModifiedDate":"2024-02-25"},{"lineNumber":10,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.InterviewDate;","lastModifiedDate":"2024-02-25"},{"lineNumber":11,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.JobDescription;","lastModifiedDate":"2024-02-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-02-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-02-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-02-25"},{"lineNumber":15,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.Salary;","lastModifiedDate":"2024-02-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"ashleygoh1"},"content":" private final String companyName;","lastModifiedDate":"2024-02-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"ashleygoh1"},"content":" private final String tag;","lastModifiedDate":"2024-02-25"},{"lineNumber":30,"author":{"gitId":"ashleygoh1"},"content":" private final String jobDescription;","lastModifiedDate":"2024-02-25"},{"lineNumber":31,"author":{"gitId":"ashleygoh1"},"content":" private final String interviewDate;","lastModifiedDate":"2024-02-25"},{"lineNumber":32,"author":{"gitId":"ashleygoh1"},"content":" private final String internDuration;","lastModifiedDate":"2024-02-25"},{"lineNumber":33,"author":{"gitId":"ashleygoh1"},"content":" private final String salary;","lastModifiedDate":"2024-02-25"},{"lineNumber":34,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"ashleygoh1"},"content":" public JsonAdaptedPerson(@JsonProperty(\"companyName\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2024-02-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"ashleygoh1"},"content":" @JsonProperty(\"tag\") String tag, @JsonProperty(\"jobDescription\") String jobDescription,","lastModifiedDate":"2024-02-25"},{"lineNumber":43,"author":{"gitId":"ashleygoh1"},"content":" @JsonProperty(\"interviewDate\") String interviewDate,","lastModifiedDate":"2024-02-25"},{"lineNumber":44,"author":{"gitId":"ashleygoh1"},"content":" @JsonProperty(\"internDuration\") String internDuration,","lastModifiedDate":"2024-02-25"},{"lineNumber":45,"author":{"gitId":"ashleygoh1"},"content":" @JsonProperty(\"salary\") String salary) {","lastModifiedDate":"2024-02-25"},{"lineNumber":46,"author":{"gitId":"ashleygoh1"},"content":" this.companyName \u003d name;","lastModifiedDate":"2024-02-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"ashleygoh1"},"content":" this.tag \u003d tag;","lastModifiedDate":"2024-02-25"},{"lineNumber":51,"author":{"gitId":"ashleygoh1"},"content":" this.jobDescription \u003d jobDescription;","lastModifiedDate":"2024-02-25"},{"lineNumber":52,"author":{"gitId":"ashleygoh1"},"content":" this.interviewDate \u003d interviewDate;","lastModifiedDate":"2024-02-25"},{"lineNumber":53,"author":{"gitId":"ashleygoh1"},"content":" this.internDuration \u003d internDuration;","lastModifiedDate":"2024-02-25"},{"lineNumber":54,"author":{"gitId":"ashleygoh1"},"content":" this.salary \u003d salary;","lastModifiedDate":"2024-02-25"},{"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":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"ashleygoh1"},"content":" companyName \u003d source.getCompanyName().fullName;","lastModifiedDate":"2024-02-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"ashleygoh1"},"content":" tag \u003d source.getTag().tagName;","lastModifiedDate":"2024-02-25"},{"lineNumber":66,"author":{"gitId":"ashleygoh1"},"content":" jobDescription \u003d source.getJobDescription().value;","lastModifiedDate":"2024-02-25"},{"lineNumber":67,"author":{"gitId":"ashleygoh1"},"content":" interviewDate \u003d source.getInterviewDate().toString();","lastModifiedDate":"2024-02-25"},{"lineNumber":68,"author":{"gitId":"ashleygoh1"},"content":" internDuration \u003d source.getInternDuration().value;","lastModifiedDate":"2024-02-25"},{"lineNumber":69,"author":{"gitId":"ashleygoh1"},"content":" salary \u003d source.getSalary().value;","lastModifiedDate":"2024-02-25"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"ashleygoh1"},"content":" if (companyName \u003d\u003d null) {","lastModifiedDate":"2024-02-25"},{"lineNumber":80,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"ashleygoh1"},"content":" if (!Name.isValidName(companyName)) {","lastModifiedDate":"2024-02-25"},{"lineNumber":83,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"ashleygoh1"},"content":" final Name modelCompanyName \u003d new Name(companyName);","lastModifiedDate":"2024-02-25"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"ashleygoh1"},"content":" if (tag \u003d\u003d null) {","lastModifiedDate":"2024-02-25"},{"lineNumber":109,"author":{"gitId":"ashleygoh1"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Tag.class.getSimpleName()));","lastModifiedDate":"2024-02-25"},{"lineNumber":110,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":111,"author":{"gitId":"ashleygoh1"},"content":" if (!Tag.isValidTagName(tag)) {","lastModifiedDate":"2024-02-25"},{"lineNumber":112,"author":{"gitId":"ashleygoh1"},"content":" throw new IllegalValueException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-26"},{"lineNumber":113,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":114,"author":{"gitId":"ashleygoh1"},"content":" final Tag modelTag \u003d new Tag(tag);","lastModifiedDate":"2024-02-25"},{"lineNumber":115,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":116,"author":{"gitId":"ashleygoh1"},"content":" if (jobDescription \u003d\u003d null) {","lastModifiedDate":"2024-02-25"},{"lineNumber":117,"author":{"gitId":"ashleygoh1"},"content":" throw new IllegalValueException(","lastModifiedDate":"2024-02-25"},{"lineNumber":118,"author":{"gitId":"ashleygoh1"},"content":" String.format(MISSING_FIELD_MESSAGE_FORMAT, JobDescription.class.getSimpleName()));","lastModifiedDate":"2024-02-25"},{"lineNumber":119,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":120,"author":{"gitId":"ashleygoh1"},"content":" if (!JobDescription.isValidJobDescription(jobDescription)) {","lastModifiedDate":"2024-02-25"},{"lineNumber":121,"author":{"gitId":"ashleygoh1"},"content":" throw new IllegalValueException(JobDescription.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-25"},{"lineNumber":122,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":123,"author":{"gitId":"ashleygoh1"},"content":" final JobDescription modelJobDescription \u003d new JobDescription(jobDescription);","lastModifiedDate":"2024-02-25"},{"lineNumber":124,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":125,"author":{"gitId":"ashleygoh1"},"content":" final InterviewDate modelInterviewDate;","lastModifiedDate":"2024-02-26"},{"lineNumber":126,"author":{"gitId":"ashleygoh1"},"content":" if (interviewDate.isEmpty()) {","lastModifiedDate":"2024-02-26"},{"lineNumber":127,"author":{"gitId":"ashleygoh1"},"content":" modelInterviewDate \u003d new InterviewDate(null);","lastModifiedDate":"2024-02-26"},{"lineNumber":128,"author":{"gitId":"ashleygoh1"},"content":" } else {","lastModifiedDate":"2024-02-26"},{"lineNumber":129,"author":{"gitId":"ashleygoh1"},"content":" modelInterviewDate \u003d new InterviewDate(interviewDate);","lastModifiedDate":"2024-02-26"},{"lineNumber":130,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":131,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":132,"author":{"gitId":"ashleygoh1"},"content":" if (internDuration \u003d\u003d null) {","lastModifiedDate":"2024-02-25"},{"lineNumber":133,"author":{"gitId":"ashleygoh1"},"content":" throw new IllegalValueException(","lastModifiedDate":"2024-02-25"},{"lineNumber":134,"author":{"gitId":"ashleygoh1"},"content":" String.format(MISSING_FIELD_MESSAGE_FORMAT, InternDuration.class.getSimpleName()));","lastModifiedDate":"2024-02-25"},{"lineNumber":135,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":136,"author":{"gitId":"ashleygoh1"},"content":" if (!InternDuration.isValidInternDuration(internDuration)) {","lastModifiedDate":"2024-02-26"},{"lineNumber":137,"author":{"gitId":"ashleygoh1"},"content":" throw new IllegalValueException(InternDuration.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-25"},{"lineNumber":138,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":139,"author":{"gitId":"ashleygoh1"},"content":" final InternDuration modelInternDuration \u003d new InternDuration(internDuration);","lastModifiedDate":"2024-02-25"},{"lineNumber":140,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":141,"author":{"gitId":"ashleygoh1"},"content":" if (salary \u003d\u003d null) {","lastModifiedDate":"2024-02-25"},{"lineNumber":142,"author":{"gitId":"ashleygoh1"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Salary.class.getSimpleName()));","lastModifiedDate":"2024-02-25"},{"lineNumber":143,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":144,"author":{"gitId":"ashleygoh1"},"content":" if (!Salary.isValidSalary(salary)) {","lastModifiedDate":"2024-02-25"},{"lineNumber":145,"author":{"gitId":"ashleygoh1"},"content":" throw new IllegalValueException(Salary.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-26"},{"lineNumber":146,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":147,"author":{"gitId":"ashleygoh1"},"content":" final Salary modelSalary \u003d new Salary(salary);","lastModifiedDate":"2024-02-25"},{"lineNumber":148,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":149,"author":{"gitId":"ashleygoh1"},"content":" return new Person(modelCompanyName, modelPhone, modelEmail, modelAddress, modelTag,","lastModifiedDate":"2024-02-25"},{"lineNumber":150,"author":{"gitId":"ashleygoh1"},"content":" modelJobDescription, modelInterviewDate, modelInternDuration, modelSalary);","lastModifiedDate":"2024-02-25"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":153,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"ashleygoh1":74,"-":79}},{"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":"Jawad280"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2024-02-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2016-09-28"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-06-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-02-26"},{"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":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"Jawad280"},"content":" @FXML","lastModifiedDate":"2024-02-26"},{"lineNumber":56,"author":{"gitId":"Jawad280"},"content":" private VBox viewPanelPlaceholder;","lastModifiedDate":"2024-03-11"},{"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 MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":66,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21"},{"lineNumber":69,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21"},{"lineNumber":81,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","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":" /**","lastModifiedDate":"2016-12-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","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":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":107,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18"},{"lineNumber":108,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18"},{"lineNumber":109,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":111,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16"},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":117,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21"},{"lineNumber":118,"author":{"gitId":"-"},"content":" personListPanel \u003d new PersonListPanel(logic.getFilteredPersonList());","lastModifiedDate":"2019-01-25"},{"lineNumber":119,"author":{"gitId":"-"},"content":" personListPanelPlaceholder.getChildren().add(personListPanel.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09"},{"lineNumber":122,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getAddressBookFilePath());","lastModifiedDate":"2019-01-25"},{"lineNumber":125,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25"},{"lineNumber":128,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":131,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":132,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27"},{"lineNumber":133,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":134,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":135,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27"},{"lineNumber":136,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27"},{"lineNumber":137,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27"},{"lineNumber":138,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27"},{"lineNumber":139,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27"},{"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":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":144,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15"},{"lineNumber":145,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":146,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":147,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31"},{"lineNumber":148,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15"},{"lineNumber":149,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":150,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15"},{"lineNumber":151,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15"},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":155,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15"},{"lineNumber":156,"author":{"gitId":"-"},"content":" primaryStage.show();","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":"2016-08-18"},{"lineNumber":160,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18"},{"lineNumber":161,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":162,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":163,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18"},{"lineNumber":164,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":170,"author":{"gitId":"Jawad280"},"content":" /**","lastModifiedDate":"2024-02-26"},{"lineNumber":171,"author":{"gitId":"Jawad280"},"content":" * Views the person on the View Panel.","lastModifiedDate":"2024-02-26"},{"lineNumber":172,"author":{"gitId":"Jawad280"},"content":" */","lastModifiedDate":"2024-02-26"},{"lineNumber":173,"author":{"gitId":"Jawad280"},"content":" @FXML","lastModifiedDate":"2024-02-26"},{"lineNumber":174,"author":{"gitId":"chenyixin0"},"content":" // private void handleView(Person p, int displayIndex) {","lastModifiedDate":"2024-02-29"},{"lineNumber":175,"author":{"gitId":"chenyixin0"},"content":" // PersonCard viewPanel \u003d new PersonCard(p, displayIndex);","lastModifiedDate":"2024-02-29"},{"lineNumber":176,"author":{"gitId":"chenyixin0"},"content":" // //ViewPanel viewPanel \u003d new ViewPanel(p);","lastModifiedDate":"2024-02-29"},{"lineNumber":177,"author":{"gitId":"chenyixin0"},"content":" // //viewPanelPlaceHolder.getChildren().clear();","lastModifiedDate":"2024-02-29"},{"lineNumber":178,"author":{"gitId":"chenyixin0"},"content":" // viewPanelPlaceHolder.getChildren().add(viewPanel.getRoot());","lastModifiedDate":"2024-02-29"},{"lineNumber":179,"author":{"gitId":"chenyixin0"},"content":" // }","lastModifiedDate":"2024-02-29"},{"lineNumber":180,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":181,"author":{"gitId":"Jawad280"},"content":" // private void handleView(Person p) {","lastModifiedDate":"2024-03-11"},{"lineNumber":182,"author":{"gitId":"Jawad280"},"content":" // ViewPanel viewPanel \u003d new ViewPanel(p);","lastModifiedDate":"2024-03-11"},{"lineNumber":183,"author":{"gitId":"Jawad280"},"content":" // //viewPanelPlaceHolder.getChildren().clear();","lastModifiedDate":"2024-03-11"},{"lineNumber":184,"author":{"gitId":"Jawad280"},"content":" // VBox holder \u003d viewPanelPlaceHolder.getContent() \u003d\u003d null ? new VBox()","lastModifiedDate":"2024-03-11"},{"lineNumber":185,"author":{"gitId":"Jawad280"},"content":" // : (VBox) viewPanelPlaceHolder.getContent();","lastModifiedDate":"2024-03-11"},{"lineNumber":186,"author":{"gitId":"Jawad280"},"content":" // holder.getChildren().add(viewPanel.getRoot());","lastModifiedDate":"2024-03-11"},{"lineNumber":187,"author":{"gitId":"Jawad280"},"content":" // viewPanelPlaceHolder.setContent(holder);","lastModifiedDate":"2024-03-11"},{"lineNumber":188,"author":{"gitId":"Jawad280"},"content":" // }","lastModifiedDate":"2024-03-11"},{"lineNumber":189,"author":{"gitId":"chenyixin0"},"content":" private void handleView(Person p) {","lastModifiedDate":"2024-02-29"},{"lineNumber":190,"author":{"gitId":"chenyixin0"},"content":" ViewPanel viewPanel \u003d new ViewPanel(p);","lastModifiedDate":"2024-02-29"},{"lineNumber":191,"author":{"gitId":"Jawad280"},"content":" viewPanelPlaceholder.getChildren().add(viewPanel.getRoot());","lastModifiedDate":"2024-03-11"},{"lineNumber":192,"author":{"gitId":"chenyixin0"},"content":" }","lastModifiedDate":"2024-02-29"},{"lineNumber":193,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":195,"author":{"gitId":"-"},"content":" public PersonListPanel getPersonListPanel() {","lastModifiedDate":"2016-08-25"},{"lineNumber":196,"author":{"gitId":"-"},"content":" return personListPanel;","lastModifiedDate":"2018-08-14"},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":199,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":200,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":201,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":202,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09"},{"lineNumber":203,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":204,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09"},{"lineNumber":205,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":206,"author":{"gitId":"Jawad280"},"content":" // viewPanelPlaceHolder.setContent(null);","lastModifiedDate":"2024-03-11"},{"lineNumber":207,"author":{"gitId":"Jawad280"},"content":" viewPanelPlaceholder.getChildren().clear();","lastModifiedDate":"2024-03-11"},{"lineNumber":208,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09"},{"lineNumber":209,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":210,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":212,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":213,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09"},{"lineNumber":214,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":215,"author":{"gitId":"Jawad280"},"content":" if (commandResult.getViewPerson() !\u003d null) {","lastModifiedDate":"2024-02-26"},{"lineNumber":216,"author":{"gitId":"Jawad280"},"content":" Person p \u003d commandResult.getViewPerson();","lastModifiedDate":"2024-02-26"},{"lineNumber":217,"author":{"gitId":"chenyixin0"},"content":" handleView(p);","lastModifiedDate":"2024-02-29"},{"lineNumber":218,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":219,"author":{"gitId":"Jawad280"},"content":" if (commandResult.getViewList() !\u003d null) {","lastModifiedDate":"2024-03-11"},{"lineNumber":220,"author":{"gitId":"chenyixin0"},"content":" for (Person p : commandResult.getViewList()) {","lastModifiedDate":"2024-02-29"},{"lineNumber":221,"author":{"gitId":"chenyixin0"},"content":" handleView(p);","lastModifiedDate":"2024-02-29"},{"lineNumber":222,"author":{"gitId":"chenyixin0"},"content":" }","lastModifiedDate":"2024-02-29"},{"lineNumber":223,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":225,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":226,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09"},{"lineNumber":227,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":229,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":230,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09"},{"lineNumber":231,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13"},{"lineNumber":232,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09"},{"lineNumber":233,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09"},{"lineNumber":234,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":235,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":236,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"chenyixin0":15,"Jawad280":24,"-":197}},{"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 javafx.fxml.FXML;","lastModifiedDate":"2016-09-21"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2017-08-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2016-09-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25"},{"lineNumber":21,"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":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public final Person person;","lastModifiedDate":"2018-01-10"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private Label address;","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"ashleygoh1"},"content":" private Label tags;","lastModifiedDate":"2024-02-25"},{"lineNumber":40,"author":{"gitId":"ashleygoh1"},"content":" @FXML","lastModifiedDate":"2024-02-25"},{"lineNumber":41,"author":{"gitId":"ashleygoh1"},"content":" private Label jobDescription;","lastModifiedDate":"2024-02-25"},{"lineNumber":42,"author":{"gitId":"ashleygoh1"},"content":" @FXML","lastModifiedDate":"2024-02-25"},{"lineNumber":43,"author":{"gitId":"ashleygoh1"},"content":" private Label interviewDate;","lastModifiedDate":"2024-02-25"},{"lineNumber":44,"author":{"gitId":"ashleygoh1"},"content":" @FXML","lastModifiedDate":"2024-02-25"},{"lineNumber":45,"author":{"gitId":"ashleygoh1"},"content":" private Label internDuration;","lastModifiedDate":"2024-02-25"},{"lineNumber":46,"author":{"gitId":"ashleygoh1"},"content":" @FXML","lastModifiedDate":"2024-02-25"},{"lineNumber":47,"author":{"gitId":"ashleygoh1"},"content":" private Label salary;","lastModifiedDate":"2024-02-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21"},{"lineNumber":56,"author":{"gitId":"ashleygoh1"},"content":" name.setText(person.getCompanyName().fullName);","lastModifiedDate":"2024-02-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" address.setText(person.getAddress().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":60,"author":{"gitId":"ashleygoh1"},"content":" tags.setText(person.getTag().tagName);","lastModifiedDate":"2024-02-25"},{"lineNumber":61,"author":{"gitId":"ashleygoh1"},"content":" jobDescription.setText(person.getJobDescription().value);","lastModifiedDate":"2024-02-25"},{"lineNumber":62,"author":{"gitId":"ashleygoh1"},"content":" interviewDate.setText(person.getInterviewDate().toString());","lastModifiedDate":"2024-02-25"},{"lineNumber":63,"author":{"gitId":"ashleygoh1"},"content":" internDuration.setText(person.getInternDuration().value);","lastModifiedDate":"2024-02-25"},{"lineNumber":64,"author":{"gitId":"ashleygoh1"},"content":" salary.setText(person.getSalary().value);","lastModifiedDate":"2024-02-25"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"ashleygoh1":15,"-":51}},{"path":"src/main/java/seedu/address/ui/ViewPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-02-26"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-02-26"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-02-26"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-02-26"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2024-02-26"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-02-26"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":"/**","lastModifiedDate":"2024-02-26"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":" * A UI component that displays information of a {@code Person}.","lastModifiedDate":"2024-02-26"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":" */","lastModifiedDate":"2024-02-26"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":"public class ViewPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-02-26"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":" private static final String FXML \u003d \"ViewPanel.fxml\";","lastModifiedDate":"2024-02-26"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":" public final Person person;","lastModifiedDate":"2024-02-26"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":" @FXML","lastModifiedDate":"2024-02-26"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":" private VBox viewPanel;","lastModifiedDate":"2024-02-26"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":" @FXML","lastModifiedDate":"2024-02-26"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":" private Label companyName;","lastModifiedDate":"2024-02-26"},{"lineNumber":21,"author":{"gitId":"Jawad280"},"content":" @FXML","lastModifiedDate":"2024-02-26"},{"lineNumber":22,"author":{"gitId":"Jawad280"},"content":" private Label jobDescription;","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"Jawad280"},"content":" @FXML","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"Jawad280"},"content":" private Label phone;","lastModifiedDate":"2024-02-26"},{"lineNumber":25,"author":{"gitId":"Jawad280"},"content":" @FXML","lastModifiedDate":"2024-02-26"},{"lineNumber":26,"author":{"gitId":"Jawad280"},"content":" private Label address;","lastModifiedDate":"2024-02-26"},{"lineNumber":27,"author":{"gitId":"Jawad280"},"content":" @FXML","lastModifiedDate":"2024-02-26"},{"lineNumber":28,"author":{"gitId":"Jawad280"},"content":" private Label email;","lastModifiedDate":"2024-02-26"},{"lineNumber":29,"author":{"gitId":"Jawad280"},"content":" @FXML","lastModifiedDate":"2024-02-26"},{"lineNumber":30,"author":{"gitId":"Jawad280"},"content":" private Label tag;","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"Jawad280"},"content":" @FXML","lastModifiedDate":"2024-02-26"},{"lineNumber":32,"author":{"gitId":"Jawad280"},"content":" private Label interviewDate;","lastModifiedDate":"2024-02-26"},{"lineNumber":33,"author":{"gitId":"Jawad280"},"content":" @FXML","lastModifiedDate":"2024-02-26"},{"lineNumber":34,"author":{"gitId":"Jawad280"},"content":" private Label internDuration;","lastModifiedDate":"2024-02-26"},{"lineNumber":35,"author":{"gitId":"Jawad280"},"content":" @FXML","lastModifiedDate":"2024-02-26"},{"lineNumber":36,"author":{"gitId":"Jawad280"},"content":" private Label salary;","lastModifiedDate":"2024-02-26"},{"lineNumber":37,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":38,"author":{"gitId":"Jawad280"},"content":" /**","lastModifiedDate":"2024-02-26"},{"lineNumber":39,"author":{"gitId":"Jawad280"},"content":" * Creates a {@code PersonCode} with the given {@code Person} to display.","lastModifiedDate":"2024-02-26"},{"lineNumber":40,"author":{"gitId":"Jawad280"},"content":" */","lastModifiedDate":"2024-02-26"},{"lineNumber":41,"author":{"gitId":"Jawad280"},"content":" public ViewPanel(Person person) {","lastModifiedDate":"2024-02-26"},{"lineNumber":42,"author":{"gitId":"Jawad280"},"content":" super(FXML);","lastModifiedDate":"2024-02-26"},{"lineNumber":43,"author":{"gitId":"Jawad280"},"content":" this.person \u003d person;","lastModifiedDate":"2024-02-26"},{"lineNumber":44,"author":{"gitId":"Jawad280"},"content":" companyName.setText(person.getCompanyName().fullName);","lastModifiedDate":"2024-02-26"},{"lineNumber":45,"author":{"gitId":"Jawad280"},"content":" jobDescription.setText(person.getJobDescription().value);","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"Jawad280"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2024-02-26"},{"lineNumber":47,"author":{"gitId":"Jawad280"},"content":" address.setText(person.getAddress().value);","lastModifiedDate":"2024-02-26"},{"lineNumber":48,"author":{"gitId":"Jawad280"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2024-02-26"},{"lineNumber":49,"author":{"gitId":"Jawad280"},"content":" interviewDate.setText(\"Interview : \" + person.getInterviewDate().toString());","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"Jawad280"},"content":" tag.setText(person.getTag().tagName);","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"Jawad280"},"content":" internDuration.setText(person.getInternDuration().value);","lastModifiedDate":"2024-02-26"},{"lineNumber":52,"author":{"gitId":"Jawad280"},"content":" salary.setText(\"$\" + person.getSalary().value);","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":54,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-02-26"}],"authorContributionMap":{"Jawad280":54}},{"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":"Jawad280"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":354,"author":{"gitId":"Jawad280"},"content":"/*","lastModifiedDate":"2024-03-11"},{"lineNumber":355,"author":{"gitId":"Jawad280"},"content":"Custom Styles","lastModifiedDate":"2024-03-11"},{"lineNumber":356,"author":{"gitId":"Jawad280"},"content":"*/","lastModifiedDate":"2024-03-11"},{"lineNumber":357,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":358,"author":{"gitId":"Jawad280"},"content":".cell-header {","lastModifiedDate":"2024-03-11"},{"lineNumber":359,"author":{"gitId":"Jawad280"},"content":" -fx-font-family: Arial;","lastModifiedDate":"2024-03-11"},{"lineNumber":360,"author":{"gitId":"Jawad280"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2024-03-11"},{"lineNumber":361,"author":{"gitId":"Jawad280"},"content":" -fx-font-size: 32px;","lastModifiedDate":"2024-03-11"},{"lineNumber":362,"author":{"gitId":"Jawad280"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-11"},{"lineNumber":363,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-03-11"},{"lineNumber":364,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":365,"author":{"gitId":"Jawad280"},"content":".cell-subHeader {","lastModifiedDate":"2024-03-11"},{"lineNumber":366,"author":{"gitId":"Jawad280"},"content":" -fx-font-family: Arial;","lastModifiedDate":"2024-03-11"},{"lineNumber":367,"author":{"gitId":"Jawad280"},"content":" -fx-font-weight: 700;","lastModifiedDate":"2024-03-11"},{"lineNumber":368,"author":{"gitId":"Jawad280"},"content":" -fx-font-size: 24px;","lastModifiedDate":"2024-03-11"},{"lineNumber":369,"author":{"gitId":"Jawad280"},"content":" -fx-text-fill: #0065d6;","lastModifiedDate":"2024-03-11"},{"lineNumber":370,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-03-11"},{"lineNumber":371,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":372,"author":{"gitId":"Jawad280"},"content":".cell-content {","lastModifiedDate":"2024-03-11"},{"lineNumber":373,"author":{"gitId":"Jawad280"},"content":" -fx-font-family: Arial;","lastModifiedDate":"2024-03-11"},{"lineNumber":374,"author":{"gitId":"Jawad280"},"content":" -fx-font-size: 20px;","lastModifiedDate":"2024-03-11"},{"lineNumber":375,"author":{"gitId":"Jawad280"},"content":" -fx-text-fill: #2a3166;","lastModifiedDate":"2024-03-11"},{"lineNumber":376,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-03-11"},{"lineNumber":377,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":378,"author":{"gitId":"Jawad280"},"content":".cell-content-header {","lastModifiedDate":"2024-03-11"},{"lineNumber":379,"author":{"gitId":"Jawad280"},"content":" -fx-font-family: Arial;","lastModifiedDate":"2024-03-11"},{"lineNumber":380,"author":{"gitId":"Jawad280"},"content":" -fx-font-weight: 700;","lastModifiedDate":"2024-03-11"},{"lineNumber":381,"author":{"gitId":"Jawad280"},"content":" -fx-font-size: 20px;","lastModifiedDate":"2024-03-11"},{"lineNumber":382,"author":{"gitId":"Jawad280"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-11"},{"lineNumber":383,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-03-11"},{"lineNumber":384,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":385,"author":{"gitId":"Jawad280"},"content":".cell-date {","lastModifiedDate":"2024-03-11"},{"lineNumber":386,"author":{"gitId":"Jawad280"},"content":" -fx-font-family: Arial;","lastModifiedDate":"2024-03-11"},{"lineNumber":387,"author":{"gitId":"Jawad280"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2024-03-11"},{"lineNumber":388,"author":{"gitId":"Jawad280"},"content":" -fx-font-size: 24px;","lastModifiedDate":"2024-03-11"},{"lineNumber":389,"author":{"gitId":"Jawad280"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-11"},{"lineNumber":390,"author":{"gitId":"Jawad280"},"content":" -fx-padding: 15;","lastModifiedDate":"2024-03-11"},{"lineNumber":391,"author":{"gitId":"Jawad280"},"content":" -fx-background-color: #Ce1313;","lastModifiedDate":"2024-03-11"},{"lineNumber":392,"author":{"gitId":"Jawad280"},"content":" -fx-background-radius: 10;","lastModifiedDate":"2024-03-11"},{"lineNumber":393,"author":{"gitId":"Jawad280"},"content":" -fx-alignment: CENTER;","lastModifiedDate":"2024-03-11"},{"lineNumber":394,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-03-11"},{"lineNumber":395,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":396,"author":{"gitId":"Jawad280"},"content":".cell-tag {","lastModifiedDate":"2024-03-11"},{"lineNumber":397,"author":{"gitId":"Jawad280"},"content":" -fx-font-family: Arial;","lastModifiedDate":"2024-03-11"},{"lineNumber":398,"author":{"gitId":"Jawad280"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2024-03-11"},{"lineNumber":399,"author":{"gitId":"Jawad280"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2024-03-11"},{"lineNumber":400,"author":{"gitId":"Jawad280"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-11"},{"lineNumber":401,"author":{"gitId":"Jawad280"},"content":" -fx-background-color: #0065d6;","lastModifiedDate":"2024-03-11"},{"lineNumber":402,"author":{"gitId":"Jawad280"},"content":" -fx-padding: 8;","lastModifiedDate":"2024-03-11"},{"lineNumber":403,"author":{"gitId":"Jawad280"},"content":" -fx-background-radius: 3;","lastModifiedDate":"2024-03-11"},{"lineNumber":404,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-03-11"},{"lineNumber":405,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":406,"author":{"gitId":"Jawad280"},"content":".view-panel-cell {","lastModifiedDate":"2024-03-11"},{"lineNumber":407,"author":{"gitId":"Jawad280"},"content":" -fx-background-color: white;","lastModifiedDate":"2024-03-11"},{"lineNumber":408,"author":{"gitId":"Jawad280"},"content":" -fx-background-radius: 10;","lastModifiedDate":"2024-03-11"},{"lineNumber":409,"author":{"gitId":"Jawad280"},"content":" -width: 450;","lastModifiedDate":"2024-03-11"},{"lineNumber":410,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"Jawad280":58,"-":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":"Jawad280"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-02-26"},{"lineNumber":15,"author":{"gitId":"chenyixin0"},"content":"\u003c?import javafx.scene.control.ScrollPane?\u003e","lastModifiedDate":"2024-02-29"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":"\u003c?import javafx.scene.layout.Pane?\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"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":18,"author":{"gitId":"-"},"content":" title\u003d\"Address App\" minWidth\u003d\"450\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2018-12-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cImage url\u003d\"@/images/address_book_32.png\" /\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@DarkTheme.css\" /\u003e","lastModifiedDate":"2016-08-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@Extensions.css\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cVBox\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2017-06-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2017-05-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"resultDisplayPlaceholder\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2017-05-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" minHeight\u003d\"100\" prefHeight\u003d\"100\" maxHeight\u003d\"100\"\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":52,"author":{"gitId":"Jawad280"},"content":" \u003cSplitPane VBox.vgrow\u003d\"ALWAYS\" HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-02-26"},{"lineNumber":53,"author":{"gitId":"Jawad280"},"content":" \u003cVBox fx:id\u003d\"personList\" styleClass\u003d\"pane-with-border\" minWidth\u003d\"300\" prefWidth\u003d\"400\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-02-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"personListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2017-06-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":60,"author":{"gitId":"Jawad280"},"content":" \u003cScrollPane fitToHeight\u003d\"true\" fitToWidth\u003d\"true\" hbarPolicy\u003d\"NEVER\" minWidth\u003d\"475\" maxWidth\u003d\"475\"\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"chenyixin0"},"content":" \u003ccontent\u003e","lastModifiedDate":"2024-02-29"},{"lineNumber":62,"author":{"gitId":"Jawad280"},"content":" \u003cVBox styleClass\u003d\"pane-with-border\" VBox.vgrow\u003d\"ALWAYS\" prefWidth\u003d\"475\" \u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"Jawad280"},"content":" \u003cVBox VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"viewPanelPlaceholder\" spacing\u003d\"20\"\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"Jawad280"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-02-26"},{"lineNumber":65,"author":{"gitId":"Jawad280"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2024-02-26"},{"lineNumber":66,"author":{"gitId":"Jawad280"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-02-26"},{"lineNumber":67,"author":{"gitId":"Jawad280"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-02-26"},{"lineNumber":68,"author":{"gitId":"Jawad280"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"chenyixin0"},"content":" \u003c/content\u003e","lastModifiedDate":"2024-02-29"},{"lineNumber":70,"author":{"gitId":"chenyixin0"},"content":" \u003c/ScrollPane\u003e","lastModifiedDate":"2024-02-29"},{"lineNumber":71,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":72,"author":{"gitId":"Jawad280"},"content":" \u003c/SplitPane\u003e","lastModifiedDate":"2024-02-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":75,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29"}],"authorContributionMap":{"chenyixin0":5,"Jawad280":13,"-":60}},{"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":"ashleygoh1"},"content":" \u003cLabel fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2024-02-25"},{"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":"-"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2016-08-08"},{"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":"ashleygoh1"},"content":" \u003cLabel fx:id\u003d\"jobDescription\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$job description\" /\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":35,"author":{"gitId":"ashleygoh1"},"content":" \u003cLabel fx:id\u003d\"interviewDate\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$interview date\" /\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":36,"author":{"gitId":"ashleygoh1"},"content":" \u003cLabel fx:id\u003d\"internDuration\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$intern duration\" /\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":37,"author":{"gitId":"ashleygoh1"},"content":" \u003cLabel fx:id\u003d\"salary\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$salary\" /\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"ashleygoh1":5,"-":35}},{"path":"src/main/resources/view/ViewPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-02-26"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-02-26"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-02-26"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2024-02-26"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-02-26"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":"\u003cVBox id\u003d\"viewPanel\" fx:id\u003d\"ViewPanel\" xmlns\u003d\"http://javafx.com/javafx/21\" xmlns:fx\u003d\"http://javafx.com/fxml/1\" alignment\u003d\"CENTER\" GridPane.columnIndex\u003d\"0\" styleClass\u003d\"view-panel-cell\" prefWidth\u003d\"450\" spacing\u003d\"15\"\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-02-26"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":" \u003cInsets bottom\u003d\"20.0\" left\u003d\"20.0\" right\u003d\"20.0\" top\u003d\"20.0\" /\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-02-26"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":" \u003cHBox\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":" \u003cLabel fx:id\u003d\"companyName\" text\u003d\"\\$first\" styleClass\u003d\"cell-header\" /\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":" \u003cRegion HBox.hgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":" \u003cLabel fx:id\u003d\"tag\" text\u003d\"\\$tag\" styleClass\u003d\"cell-tag\" /\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":" \u003cVBox spacing\u003d\"15\"\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"Jawad280"},"content":" \u003cLabel fx:id\u003d\"jobDescription\" text\u003d\"\\$jobDescription\" styleClass\u003d\"cell-subHeader\" /\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"Jawad280"},"content":" \u003cHBox\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"Jawad280"},"content":" \u003cLabel text\u003d\"Phone: \" styleClass\u003d\"cell-content-header\"/\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"Jawad280"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell-content\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"Jawad280"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"Jawad280"},"content":" \u003cHBox\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"Jawad280"},"content":" \u003cLabel text\u003d\"Address: \" styleClass\u003d\"cell-content-header\"/\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"Jawad280"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell-content\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"Jawad280"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"Jawad280"},"content":" \u003cHBox\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"Jawad280"},"content":" \u003cLabel text\u003d\"Email: \" styleClass\u003d\"cell-content-header\"/\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"Jawad280"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell-content\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"Jawad280"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"Jawad280"},"content":" \u003cHBox\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"Jawad280"},"content":" \u003cLabel text\u003d\"Duration: \" styleClass\u003d\"cell-content-header\"/\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"Jawad280"},"content":" \u003cLabel fx:id\u003d\"internDuration\" styleClass\u003d\"cell-content\" text\u003d\"\\$internDuration\" /\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"Jawad280"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"Jawad280"},"content":" \u003cHBox\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"Jawad280"},"content":" \u003cLabel text\u003d\"Salary: \" styleClass\u003d\"cell-content-header\"/\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"Jawad280"},"content":" \u003cLabel fx:id\u003d\"salary\" styleClass\u003d\"cell-content\" text\u003d\"\\$salary\" /\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"Jawad280"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"Jawad280"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-02-26"},{"lineNumber":48,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"Jawad280"},"content":" \u003cHBox alignment\u003d\"CENTER\"\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"Jawad280"},"content":" \u003cLabel fx:id\u003d\"interviewDate\" styleClass\u003d\"cell-date\" text\u003d\"\\$interviewDate\" prefWidth\u003d\"450\" HBox.hgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"Jawad280"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"Jawad280"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2024-02-26"}],"authorContributionMap":{"Jawad280":53}},{"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":"ashleygoh1"},"content":"//import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2024-02-26"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2024-03-17"},{"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.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":9,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INTERN_DURATION_DESC_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.logic.commands.CommandTestUtil.JOB_DESCRIPTION_DESC_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":13,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SALARY_DESC_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_NO_REPLY;","lastModifiedDate":"2024-02-26"},{"lineNumber":15,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_NO_REPLY;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2018-12-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18"},{"lineNumber":29,"author":{"gitId":"ashleygoh1"},"content":"//import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-02-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-12-09"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09"},{"lineNumber":59,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":64,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"chenyixin0"},"content":" // the original test compares expected model and actual model and that one keeps failing so i js","lastModifiedDate":"2024-03-17"},{"lineNumber":90,"author":{"gitId":"chenyixin0"},"content":" // commented that line out first cuz idk whats going on lol","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":95,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":99,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":106,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14"},{"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-03-11"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":117,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":121,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":130,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":131,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":132,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":133,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31"},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":139,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":140,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":141,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":142,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":143,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":144,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":145,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":146,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":147,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31"},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14"},{"lineNumber":149,"author":{"gitId":"chenyixin0"},"content":" //assertEquals(expectedModel, model);","lastModifiedDate":"2024-03-17"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19"},{"lineNumber":152,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":153,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13"},{"lineNumber":154,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13"},{"lineNumber":155,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13"},{"lineNumber":156,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13"},{"lineNumber":157,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":158,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13"},{"lineNumber":159,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":161,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13"},{"lineNumber":163,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":164,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13"},{"lineNumber":165,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13"},{"lineNumber":166,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":168,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":170,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":171,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13"},{"lineNumber":172,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":174,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":176,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13"},{"lineNumber":177,"author":{"gitId":"-"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2023-06-13"},{"lineNumber":178,"author":{"gitId":"chenyixin0"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + TAG_DESC_NO_REPLY + JOB_DESCRIPTION_DESC_AMY","lastModifiedDate":"2024-03-17"},{"lineNumber":179,"author":{"gitId":"chenyixin0"},"content":" + INTERN_DURATION_DESC_AMY + SALARY_DESC_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":180,"author":{"gitId":"chenyixin0"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags(VALID_TAG_NO_REPLY).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":181,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13"},{"lineNumber":182,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13"},{"lineNumber":183,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"chenyixin0":10,"ashleygoh1":3,"-":172}},{"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":"Jawad280"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2024-03-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":"-"},"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":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15"},{"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":"-"},"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":"-"},"content":" CommandResult commandResult \u003d new AddCommand(validPerson).execute(modelStub);","lastModifiedDate":"2019-01-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23"},{"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":"-"},"content":" AddCommand addCommand \u003d new AddCommand(validPerson);","lastModifiedDate":"2018-08-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":"-"},"content":" assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2019-05-03"},{"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":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-02-29"},{"lineNumber":162,"author":{"gitId":"Jawad280"},"content":" public Person choosePersonToView(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2024-02-29"},{"lineNumber":163,"author":{"gitId":"Jawad280"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-02-29"},{"lineNumber":164,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-29"},{"lineNumber":165,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-03-01"},{"lineNumber":166,"author":{"gitId":"Jawad280"},"content":" public FilteredList\u003cPerson\u003e generateNewFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2024-03-01"},{"lineNumber":167,"author":{"gitId":"Jawad280"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-01"},{"lineNumber":168,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":171,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":172,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07"},{"lineNumber":173,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":174,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07"},{"lineNumber":175,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":177,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":178,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":179,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":182,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":183,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":184,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":185,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":189,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":190,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12"},{"lineNumber":191,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":192,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12"},{"lineNumber":193,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":195,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07"},{"lineNumber":196,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":197,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":198,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":199,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":201,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":202,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08"},{"lineNumber":203,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":204,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":205,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":207,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":208,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04"},{"lineNumber":209,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04"},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":211,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":213,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12"}],"authorContributionMap":{"Jawad280":9,"-":204}},{"path":"src/test/java/seedu/address/logic/commands/CommandResultTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2018-12-09"},{"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":"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":"chenyixin0"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"chenyixin0"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"chenyixin0"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"chenyixin0"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"chenyixin0"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class CommandResultTest {","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"chenyixin0"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"chenyixin0"},"content":" // constructor 1: CommandResult(String feedback)","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new CommandResult(\"feedback\");","lastModifiedDate":"2018-12-09"},{"lineNumber":25,"author":{"gitId":"chenyixin0"},"content":" // constructor 2: CommandResult(String feedback, Person viewPerson)","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"chenyixin0"},"content":" CommandResult commandResultViewPerson \u003d new CommandResult(\"feedback\", ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"chenyixin0"},"content":" // constructor 3: CommandResult(String feedback, FilteredList\u003cPerson\u003e viewList)","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"chenyixin0"},"content":" CommandResult commandResultViewList \u003d new CommandResult(\"feedback\",","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"chenyixin0"},"content":" new FilteredList\u003c\u003e(model.getFilteredPersonList(), PREDICATE_SHOW_ALL_PERSONS));","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-12-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertTrue(commandResult.equals(new CommandResult(\"feedback\")));","lastModifiedDate":"2018-12-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertTrue(commandResult.equals(new CommandResult(\"feedback\", false, false)));","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":35,"author":{"gitId":"chenyixin0"},"content":" assertTrue(commandResultViewPerson.equals(new CommandResult(\"feedback\", ALICE)));","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"chenyixin0"},"content":" assertTrue(commandResultViewList.equals(new CommandResult(\"feedback\",","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"chenyixin0"},"content":" new FilteredList\u003c\u003e(model.getFilteredPersonList(), PREDICATE_SHOW_ALL_PERSONS))));","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-12-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertTrue(commandResult.equals(commandResult));","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":43,"author":{"gitId":"chenyixin0"},"content":" assertTrue(commandResultViewPerson.equals(commandResultViewPerson));","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"chenyixin0"},"content":" assertTrue(commandResultViewPerson.getViewPerson().equals(ALICE));","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"chenyixin0"},"content":" assertTrue(commandResultViewList.equals(commandResultViewList));","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"chenyixin0"},"content":" assertTrue(commandResultViewList.getViewList().equals(","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"chenyixin0"},"content":" new FilteredList\u003c\u003e(model.getFilteredPersonList(), PREDICATE_SHOW_ALL_PERSONS)));","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(null));","lastModifiedDate":"2018-12-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(0.5f));","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // different feedbackToUser value -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(new CommandResult(\"different\")));","lastModifiedDate":"2018-12-09"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // different showHelp value -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(new CommandResult(\"feedback\", true, false)));","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // different exit value -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(new CommandResult(\"feedback\", false, true)));","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void hashcode() {","lastModifiedDate":"2018-12-09"},{"lineNumber":68,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new CommandResult(\"feedback\");","lastModifiedDate":"2018-12-09"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":70,"author":{"gitId":"-"},"content":" // same values -\u003e returns same hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertEquals(commandResult.hashCode(), new CommandResult(\"feedback\").hashCode());","lastModifiedDate":"2018-12-09"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // different feedbackToUser value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(\"different\").hashCode());","lastModifiedDate":"2018-12-09"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // different showHelp value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(\"feedback\", true, false).hashCode());","lastModifiedDate":"2024-03-11"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":79,"author":{"gitId":"-"},"content":" // different exit value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(\"feedback\", false, true).hashCode());","lastModifiedDate":"2024-03-11"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"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":" CommandResult commandResult \u003d new CommandResult(\"feedback\");","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" String expected \u003d CommandResult.class.getCanonicalName() + \"{feedbackToUser\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" + commandResult.getFeedbackToUser() + \", showHelp\u003d\" + commandResult.isShowHelp()","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" + \", exit\u003d\" + commandResult.isExit() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertEquals(expected, commandResult.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-12-09"},{"lineNumber":92,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"chenyixin0":29,"-":64}},{"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":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_INTERN_DURATION;","lastModifiedDate":"2024-02-26"},{"lineNumber":8,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_INTERVIEW_DATE;","lastModifiedDate":"2024-02-26"},{"lineNumber":9,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_JOB_DESCRIPTION;","lastModifiedDate":"2024-02-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SALARY;","lastModifiedDate":"2024-02-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05"},{"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.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":"2024-03-04"},{"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":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05"},{"lineNumber":41,"author":{"gitId":"ashleygoh1"},"content":" public static final String VALID_TAG_NO_REPLY \u003d \"NR\";","lastModifiedDate":"2024-02-26"},{"lineNumber":42,"author":{"gitId":"ashleygoh1"},"content":" public static final String VALID_TAG_INTERVIEW \u003d \"I\";","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"ashleygoh1"},"content":" public static final String VALID_JOB_DESCRIPTION_AMY \u003d \"Data Science intern\";","lastModifiedDate":"2024-02-26"},{"lineNumber":44,"author":{"gitId":"ashleygoh1"},"content":" public static final String VALID_JOB_DESCRIPTION_BOB \u003d \"Front end developer intern\";","lastModifiedDate":"2024-02-26"},{"lineNumber":45,"author":{"gitId":"ashleygoh1"},"content":" public static final String VALID_INTERVIEW_DATE_AMY \u003d \"15-04-2024 0900\";","lastModifiedDate":"2024-02-26"},{"lineNumber":46,"author":{"gitId":"ashleygoh1"},"content":" public static final String VALID_INTERVIEW_DATE_BOB \u003d \"15-04-2024 1200\";","lastModifiedDate":"2024-02-26"},{"lineNumber":47,"author":{"gitId":"ashleygoh1"},"content":" public static final String VALID_INTERN_DURATION_AMY \u003d \"6 months\";","lastModifiedDate":"2024-02-26"},{"lineNumber":48,"author":{"gitId":"ashleygoh1"},"content":" public static final String VALID_INTERN_DURATION_BOB \u003d \"3 months\";","lastModifiedDate":"2024-02-26"},{"lineNumber":49,"author":{"gitId":"ashleygoh1"},"content":" public static final String VALID_SALARY_AMY \u003d \"500\";","lastModifiedDate":"2024-02-26"},{"lineNumber":50,"author":{"gitId":"ashleygoh1"},"content":" public static final String VALID_SALARY_BOB \u003d \"1000\";","lastModifiedDate":"2024-02-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"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":"ashleygoh1"},"content":" public static final String TAG_DESC_NO_REPLY \u003d \" \" + PREFIX_TAG + VALID_TAG_NO_REPLY;","lastModifiedDate":"2024-02-26"},{"lineNumber":61,"author":{"gitId":"ashleygoh1"},"content":" public static final String TAG_DESC_INTERVIEW \u003d \" \" + PREFIX_TAG + VALID_TAG_INTERVIEW;","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"ashleygoh1"},"content":" public static final String JOB_DESCRIPTION_DESC_AMY \u003d \" \" + PREFIX_JOB_DESCRIPTION + VALID_JOB_DESCRIPTION_AMY;","lastModifiedDate":"2024-02-26"},{"lineNumber":63,"author":{"gitId":"ashleygoh1"},"content":" public static final String JOB_DESCRIPTION_DESC_BOB \u003d \" \" + PREFIX_JOB_DESCRIPTION + VALID_JOB_DESCRIPTION_BOB;","lastModifiedDate":"2024-02-26"},{"lineNumber":64,"author":{"gitId":"ashleygoh1"},"content":" public static final String INTERVIEW_DATE_DESC_AMY \u003d \" \" + PREFIX_INTERVIEW_DATE + VALID_INTERVIEW_DATE_AMY;","lastModifiedDate":"2024-02-26"},{"lineNumber":65,"author":{"gitId":"ashleygoh1"},"content":" public static final String INTERVIEW_DATE_DESC_BOB \u003d \" \" + PREFIX_INTERVIEW_DATE + VALID_INTERVIEW_DATE_BOB;","lastModifiedDate":"2024-02-26"},{"lineNumber":66,"author":{"gitId":"ashleygoh1"},"content":" public static final String INTERN_DURATION_DESC_AMY \u003d \" \" + PREFIX_INTERN_DURATION + VALID_INTERN_DURATION_AMY;","lastModifiedDate":"2024-02-26"},{"lineNumber":67,"author":{"gitId":"ashleygoh1"},"content":" public static final String INTERN_DURATION_DESC_BOB \u003d \" \" + PREFIX_INTERN_DURATION + VALID_INTERN_DURATION_BOB;","lastModifiedDate":"2024-02-26"},{"lineNumber":68,"author":{"gitId":"ashleygoh1"},"content":" public static final String SALARY_DESC_AMY \u003d \" \" + PREFIX_SALARY + VALID_SALARY_AMY;","lastModifiedDate":"2024-02-26"},{"lineNumber":69,"author":{"gitId":"ashleygoh1"},"content":" public static final String SALARY_DESC_BOB \u003d \" \" + PREFIX_SALARY + VALID_SALARY_BOB;","lastModifiedDate":"2024-02-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":71,"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":72,"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":73,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05"},{"lineNumber":75,"author":{"gitId":"ashleygoh1"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2024-02-26"},{"lineNumber":76,"author":{"gitId":"ashleygoh1"},"content":" public static final String INVALID_JOB_DESCRIPTION_DESC \u003d \" \" + PREFIX_JOB_DESCRIPTION;","lastModifiedDate":"2024-02-26"},{"lineNumber":77,"author":{"gitId":"ashleygoh1"},"content":" // empty string not allowed for job description","lastModifiedDate":"2024-02-26"},{"lineNumber":78,"author":{"gitId":"ashleygoh1"},"content":" public static final String INVALID_INTERN_DURATION_DESC \u003d \" \" + PREFIX_INTERN_DURATION;","lastModifiedDate":"2024-02-26"},{"lineNumber":79,"author":{"gitId":"ashleygoh1"},"content":" // empty string not allowed for intern duration","lastModifiedDate":"2024-02-26"},{"lineNumber":80,"author":{"gitId":"ashleygoh1"},"content":" public static final String INVALID_SALARY_DESC \u003d \" \" + PREFIX_SALARY + \"0\";","lastModifiedDate":"2024-02-26"},{"lineNumber":81,"author":{"gitId":"ashleygoh1"},"content":" // salary need to be above 0 dollar","lastModifiedDate":"2024-02-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2024-03-04"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2024-03-04"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":88,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2024-03-04"},{"lineNumber":89,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-03-04"},{"lineNumber":90,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2024-03-04"},{"lineNumber":91,"author":{"gitId":"Jawad280"},"content":" .withTags(VALID_TAG_NO_REPLY).withJobDescription(VALID_JOB_DESCRIPTION_AMY)","lastModifiedDate":"2024-03-11"},{"lineNumber":92,"author":{"gitId":"Jawad280"},"content":" .withInterviewDate(VALID_INTERVIEW_DATE_AMY).withInternDuration(VALID_INTERN_DURATION_AMY)","lastModifiedDate":"2024-03-11"},{"lineNumber":93,"author":{"gitId":"Jawad280"},"content":" .withSalary(VALID_SALARY_AMY).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":94,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-04"},{"lineNumber":95,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-03-04"},{"lineNumber":96,"author":{"gitId":"Jawad280"},"content":" .withTags(VALID_TAG_NO_REPLY).withJobDescription(VALID_JOB_DESCRIPTION_BOB)","lastModifiedDate":"2024-03-11"},{"lineNumber":97,"author":{"gitId":"Jawad280"},"content":" .withInterviewDate(VALID_INTERVIEW_DATE_BOB).withInternDuration(VALID_INTERN_DURATION_BOB)","lastModifiedDate":"2024-03-11"},{"lineNumber":98,"author":{"gitId":"Jawad280"},"content":" .withSalary(VALID_SALARY_BOB).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":101,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-04"},{"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":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25"},{"lineNumber":108,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":109,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":110,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":114,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":118,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":119,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25"},{"lineNumber":120,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":121,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25"},{"lineNumber":123,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":124,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":128,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":129,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":130,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":131,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":132,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25"},{"lineNumber":133,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":134,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25"},{"lineNumber":135,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":136,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":137,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":138,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":144,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":145,"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":146,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31"},{"lineNumber":147,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":148,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31"},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":151,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31"},{"lineNumber":152,"author":{"gitId":"ashleygoh1"},"content":" final String[] splitName \u003d person.getCompanyName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2024-02-25"},{"lineNumber":153,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":155,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":158,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"eunrcn":1,"Jawad280":6,"ashleygoh1":32,"-":119}},{"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":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-04"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-04"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-04"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_INTERN_DURATION_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_INTERVIEW_DATE_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_JOB_DESCRIPTION_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SALARY_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_INTERVIEW;","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-04"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-04"},{"lineNumber":22,"author":{"gitId":"Jawad280"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-04"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-04"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-04"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-04"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-04"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-03-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-04"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-04"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-04"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2024-03-04"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2024-03-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2024-03-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-04"},{"lineNumber":41,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2024-03-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-04"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2024-03-04"},{"lineNumber":47,"author":{"gitId":"Jawad280"},"content":" Person editedPerson \u003d ALICE;","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"Jawad280"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedPerson).withTags(\"NR\").build();","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2024-03-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":51,"author":{"gitId":"Jawad280"},"content":" String expectedMessage \u003d String.format(","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"Jawad280"},"content":" EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"Jawad280"},"content":" );","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"Jawad280"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2024-03-04"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":59,"author":{"gitId":"Jawad280"},"content":" assertCommandSuccess(editCommand, model, expectedCommandResult, expectedModel);","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-04"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2024-03-04"},{"lineNumber":64,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2024-03-04"},{"lineNumber":65,"author":{"gitId":"-"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2024-03-04"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":67,"author":{"gitId":"-"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2024-03-04"},{"lineNumber":68,"author":{"gitId":"-"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-04"},{"lineNumber":69,"author":{"gitId":"ashleygoh1"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_INTERVIEW)","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"eunrcn"},"content":" .withJobDescription(VALID_JOB_DESCRIPTION_BOB).withInterviewDate(VALID_INTERVIEW_DATE_BOB)","lastModifiedDate":"2024-03-04"},{"lineNumber":71,"author":{"gitId":"eunrcn"},"content":" .withInternDuration(VALID_INTERN_DURATION_BOB).withSalary(VALID_SALARY_BOB).build();","lastModifiedDate":"2024-03-04"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":73,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-12"},{"lineNumber":74,"author":{"gitId":"chenyixin0"},"content":" .withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-12"},{"lineNumber":75,"author":{"gitId":"ashleygoh1"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_INTERVIEW)","lastModifiedDate":"2024-03-13"},{"lineNumber":76,"author":{"gitId":"eunrcn"},"content":" .withJobDescription(VALID_JOB_DESCRIPTION_BOB).withInterviewDate(VALID_INTERVIEW_DATE_BOB)","lastModifiedDate":"2024-03-04"},{"lineNumber":77,"author":{"gitId":"eunrcn"},"content":" .withInternDuration(VALID_INTERN_DURATION_BOB).withSalary(VALID_SALARY_BOB).build();","lastModifiedDate":"2024-03-04"},{"lineNumber":78,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPerson, descriptor);","lastModifiedDate":"2024-03-04"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":81,"author":{"gitId":"eunrcn"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS,","lastModifiedDate":"2024-03-04"},{"lineNumber":82,"author":{"gitId":"eunrcn"},"content":" Messages.format(editedPerson));","lastModifiedDate":"2024-03-04"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":84,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-04"},{"lineNumber":85,"author":{"gitId":"-"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2024-03-04"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":87,"author":{"gitId":"eunrcn"},"content":" // Print actual values for debugging","lastModifiedDate":"2024-03-04"},{"lineNumber":88,"author":{"gitId":"eunrcn"},"content":" System.out.println(\"Actual Message: \" + expectedMessage);","lastModifiedDate":"2024-03-04"},{"lineNumber":89,"author":{"gitId":"eunrcn"},"content":" System.out.println(\"Actual Model: \" + expectedModel);","lastModifiedDate":"2024-03-04"},{"lineNumber":90,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-04"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-04"},{"lineNumber":95,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2024-03-04"},{"lineNumber":96,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, new EditPersonDescriptor());","lastModifiedDate":"2024-03-04"},{"lineNumber":97,"author":{"gitId":"-"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-04"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":99,"author":{"gitId":"eunrcn"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS,","lastModifiedDate":"2024-03-04"},{"lineNumber":100,"author":{"gitId":"eunrcn"},"content":" Messages.format(editedPerson));","lastModifiedDate":"2024-03-04"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":102,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-04"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-04"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-04"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2024-03-04"},{"lineNumber":109,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-04"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":111,"author":{"gitId":"-"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-04"},{"lineNumber":112,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder(personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-04"},{"lineNumber":113,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2024-03-04"},{"lineNumber":114,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2024-03-04"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":116,"author":{"gitId":"eunrcn"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS,","lastModifiedDate":"2024-03-04"},{"lineNumber":117,"author":{"gitId":"eunrcn"},"content":" Messages.format(editedPerson));","lastModifiedDate":"2024-03-04"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":119,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-04"},{"lineNumber":120,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2024-03-04"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-04"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-04"},{"lineNumber":126,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2024-03-04"},{"lineNumber":127,"author":{"gitId":"-"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-04"},{"lineNumber":128,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2024-03-04"},{"lineNumber":129,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2024-03-04"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":131,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2024-03-04"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-04"},{"lineNumber":135,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2024-03-04"},{"lineNumber":136,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-04"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":138,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2024-03-04"},{"lineNumber":139,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2024-03-04"},{"lineNumber":140,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2024-03-04"},{"lineNumber":141,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2024-03-04"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2024-03-04"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":146,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-04"},{"lineNumber":147,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2024-03-04"},{"lineNumber":148,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2024-03-04"},{"lineNumber":149,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-04"},{"lineNumber":150,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2024-03-04"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-04"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":155,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-04"},{"lineNumber":156,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2024-03-04"},{"lineNumber":157,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2024-03-04"},{"lineNumber":158,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-04"},{"lineNumber":159,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-04"},{"lineNumber":160,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2024-03-04"},{"lineNumber":161,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-04"},{"lineNumber":162,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-04"},{"lineNumber":163,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2024-03-04"},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2024-03-04"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":166,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2024-03-04"},{"lineNumber":167,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2024-03-04"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":169,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-04"},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":172,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-04"},{"lineNumber":173,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2024-03-04"},{"lineNumber":174,"author":{"gitId":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2024-03-04"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":176,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-04"},{"lineNumber":177,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2024-03-04"},{"lineNumber":178,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2024-03-04"},{"lineNumber":179,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-03-04"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":181,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-04"},{"lineNumber":182,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-03-04"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":184,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-04"},{"lineNumber":185,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-03-04"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":187,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-04"},{"lineNumber":188,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2024-03-04"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":190,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2024-03-04"},{"lineNumber":191,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2024-03-04"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":193,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2024-03-04"},{"lineNumber":194,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2024-03-04"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":197,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-04"},{"lineNumber":198,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-04"},{"lineNumber":199,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-04"},{"lineNumber":200,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2024-03-04"},{"lineNumber":201,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2024-03-04"},{"lineNumber":202,"author":{"gitId":"-"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2024-03-04"},{"lineNumber":203,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2024-03-04"},{"lineNumber":204,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2024-03-04"},{"lineNumber":205,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":207,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"eunrcn":15,"chenyixin0":7,"Jawad280":8,"ashleygoh1":3,"-":174}},{"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":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-04"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-04"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_INTERN_DURATION_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_INTERVIEW_DATE_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_JOB_DESCRIPTION_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SALARY_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_INTERVIEW;","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_NO_REPLY;","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-04"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2024-03-04"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorTest {","lastModifiedDate":"2024-03-04"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-04"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2024-03-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-04"},{"lineNumber":32,"author":{"gitId":"Jawad280"},"content":" EditPersonDescriptor descriptorWithSameValues \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"Jawad280"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"Jawad280"},"content":" .withTags(VALID_TAG_NO_REPLY).withJobDescription(VALID_JOB_DESCRIPTION_AMY)","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"Jawad280"},"content":" .withInterviewDate(VALID_INTERVIEW_DATE_AMY).withInternDuration(VALID_INTERN_DURATION_AMY)","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"Jawad280"},"content":" .withSalary(VALID_SALARY_AMY).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2024-03-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2024-03-04"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-04"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2024-03-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-04"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2024-03-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-04"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2024-03-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2024-03-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":" EditPersonDescriptor editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2024-03-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2024-03-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2024-03-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2024-03-04"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2024-03-04"},{"lineNumber":60,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2024-03-04"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2024-03-04"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2024-03-04"},{"lineNumber":64,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2024-03-04"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2024-03-04"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2024-03-04"},{"lineNumber":68,"author":{"gitId":"ashleygoh1"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_INTERVIEW).build();","lastModifiedDate":"2024-03-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2024-03-04"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-04"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-04"},{"lineNumber":74,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2024-03-04"},{"lineNumber":75,"author":{"gitId":"eunrcn"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{Edited Person:\"","lastModifiedDate":"2024-03-04"},{"lineNumber":76,"author":{"gitId":"eunrcn"},"content":" + editPersonDescriptor.getName().orElse(null) + \"; Phone: \"","lastModifiedDate":"2024-03-04"},{"lineNumber":77,"author":{"gitId":"eunrcn"},"content":" + editPersonDescriptor.getPhone().orElse(null) + \"; Email: \"","lastModifiedDate":"2024-03-04"},{"lineNumber":78,"author":{"gitId":"eunrcn"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \"; Address: \"","lastModifiedDate":"2024-03-04"},{"lineNumber":79,"author":{"gitId":"eunrcn"},"content":" + editPersonDescriptor.getAddress().orElse(null) + \"; Tags: \"","lastModifiedDate":"2024-03-04"},{"lineNumber":80,"author":{"gitId":"eunrcn"},"content":" + editPersonDescriptor.getTag().orElse(null) + \"; Job Description: \"","lastModifiedDate":"2024-03-04"},{"lineNumber":81,"author":{"gitId":"eunrcn"},"content":" + editPersonDescriptor.getJobDescription().orElse(null) + \"; Interview Date: \"","lastModifiedDate":"2024-03-04"},{"lineNumber":82,"author":{"gitId":"eunrcn"},"content":" + editPersonDescriptor.getInterviewDate().orElse(null) + \"; Internship Duration: \"","lastModifiedDate":"2024-03-04"},{"lineNumber":83,"author":{"gitId":"eunrcn"},"content":" + editPersonDescriptor.getInternDuration().orElse(null) + \"; Salary: \"","lastModifiedDate":"2024-03-04"},{"lineNumber":84,"author":{"gitId":"eunrcn"},"content":" + editPersonDescriptor.getSalary().orElse(null) + \"}\";","lastModifiedDate":"2024-03-04"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":86,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"eunrcn":10,"Jawad280":14,"ashleygoh1":2,"-":60}},{"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.testutil.TypicalPersons.CARL;","lastModifiedDate":"2017-07-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ELLE;","lastModifiedDate":"2017-07-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.FIONA;","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":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"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":"import seedu.address.model.person.NameContainsKeywordsPredicate;","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":" * Contains integration tests (interaction with the Model) for {@code FindCommand}.","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class FindCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" FindCommand findFirstCommand \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" FindCommand findSecondCommand \u003d new FindCommand(secondPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" FindCommand findFirstCommandCopy \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void execute_zeroKeywords_noPersonFound() {","lastModifiedDate":"2017-08-15"},{"lineNumber":57,"author":{"gitId":"chenyixin0"},"content":" // String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2018-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2024-03-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":61,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":62,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":63,"author":{"gitId":"chenyixin0"},"content":" // this test will always fail because the way I implemented the find the list of found names will be","lastModifiedDate":"2024-03-08"},{"lineNumber":64,"author":{"gitId":"chenyixin0"},"content":" // returned as a separate list instead of modifying the existing list inside the model which is","lastModifiedDate":"2024-03-08"},{"lineNumber":65,"author":{"gitId":"chenyixin0"},"content":" // what assertCommandSuccess checks for.","lastModifiedDate":"2024-03-08"},{"lineNumber":66,"author":{"gitId":"chenyixin0"},"content":" // with the current implementation this test is also kind of irrelevant since the find command will not","lastModifiedDate":"2024-03-08"},{"lineNumber":67,"author":{"gitId":"chenyixin0"},"content":" // actually modify the model itself.","lastModifiedDate":"2024-03-08"},{"lineNumber":68,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":69,"author":{"gitId":"chenyixin0"},"content":" //assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-08"},{"lineNumber":70,"author":{"gitId":"chenyixin0"},"content":" assertEquals(Collections.emptyList(), model.generateNewFilteredPersonList(predicate));","lastModifiedDate":"2024-03-08"},{"lineNumber":71,"author":{"gitId":"chenyixin0"},"content":" assertEquals(Collections.emptyList(), command.execute(model).getViewList());","lastModifiedDate":"2024-03-15"},{"lineNumber":72,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":73,"author":{"gitId":"chenyixin0"},"content":" assertEquals(0, model.generateNewFilteredPersonList(predicate).size());","lastModifiedDate":"2024-03-15"},{"lineNumber":74,"author":{"gitId":"chenyixin0"},"content":" // theres no view size i hope that\u0027s not a problem","lastModifiedDate":"2024-03-15"},{"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":"2017-06-12"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void execute_multipleKeywords_multiplePersonsFound() {","lastModifiedDate":"2017-08-15"},{"lineNumber":79,"author":{"gitId":"chenyixin0"},"content":" // String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2024-03-15"},{"lineNumber":80,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\"Kurz Elle Kunz\");","lastModifiedDate":"2018-08-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2024-03-15"},{"lineNumber":82,"author":{"gitId":"chenyixin0"},"content":" // expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-15"},{"lineNumber":83,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":84,"author":{"gitId":"chenyixin0"},"content":" //following line will always fail; see above","lastModifiedDate":"2024-03-08"},{"lineNumber":85,"author":{"gitId":"chenyixin0"},"content":" //assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-08"},{"lineNumber":86,"author":{"gitId":"chenyixin0"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), model.generateNewFilteredPersonList(predicate));","lastModifiedDate":"2024-03-08"},{"lineNumber":87,"author":{"gitId":"chenyixin0"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), command.execute(model).getViewList());","lastModifiedDate":"2024-03-15"},{"lineNumber":88,"author":{"gitId":"chenyixin0"},"content":" assertEquals(3, model.generateNewFilteredPersonList(predicate).size());","lastModifiedDate":"2024-03-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2019-02-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" FindCommand findCommand \u003d new FindCommand(predicate);","lastModifiedDate":"2019-02-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2018-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":102,"author":{"gitId":"-"},"content":" private NameContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2018-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" return new NameContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2018-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":105,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"chenyixin0":23,"-":82}},{"path":"src/test/java/seedu/address/logic/commands/ViewCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"eunrcn"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"eunrcn"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"eunrcn"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"eunrcn"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"eunrcn"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"eunrcn"},"content":"import java.util.List;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"eunrcn"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"eunrcn"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"eunrcn"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"eunrcn"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"eunrcn"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"eunrcn"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"eunrcn"},"content":"class ViewCommandTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"eunrcn"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"eunrcn"},"content":" void execute_validIndex_success() throws CommandException {","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"eunrcn"},"content":" Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"eunrcn"},"content":" List\u003cPerson\u003e personList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"eunrcn"},"content":" Person personToView \u003d personList.get(0);","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"eunrcn"},"content":" ViewCommand viewCommand \u003d new ViewCommand(Index.fromZeroBased(0));","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"eunrcn"},"content":" CommandResult commandResult \u003d viewCommand.execute(model);","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"eunrcn"},"content":" assertEquals(","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"eunrcn"},"content":" String.format(","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"ashleygoh1"},"content":" \"Viewing Person: %s; Phone: %s; Email: %s; Address: %s; Tags: %s; \"","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"ashleygoh1"},"content":" + \"Job Description: %s; Interview Date: %s; Internship Duration: %s; Salary: %s\",","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"eunrcn"},"content":" personToView.getCompanyName(),","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"eunrcn"},"content":" personToView.getPhone(),","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"eunrcn"},"content":" personToView.getEmail(),","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"eunrcn"},"content":" personToView.getAddress(),","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"eunrcn"},"content":" personToView.getTag(),","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"eunrcn"},"content":" personToView.getJobDescription(),","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"eunrcn"},"content":" personToView.getInterviewDate(),","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"eunrcn"},"content":" personToView.getInternDuration(),","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"eunrcn"},"content":" personToView.getSalary()","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"eunrcn"},"content":" ),","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"eunrcn"},"content":" commandResult.getFeedbackToUser()","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"eunrcn"},"content":" );","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"eunrcn"},"content":" assertEquals(personToView, commandResult.getViewPerson());","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"eunrcn"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"eunrcn"},"content":" void execute_invalidIndex_throwsCommandException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"eunrcn"},"content":" Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"eunrcn"},"content":" ViewCommand viewCommand \u003d new ViewCommand(Index.fromZeroBased(10)); // Assuming there are fewer than 10 persons","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"eunrcn"},"content":" assertThrows(CommandException.class, () -\u003e viewCommand.execute(model));","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"eunrcn"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"eunrcn"},"content":" void equals_sameObject_true() {","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"eunrcn"},"content":" ViewCommand viewCommand \u003d new ViewCommand(Index.fromZeroBased(0));","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"eunrcn"},"content":" assertEquals(viewCommand, viewCommand);","lastModifiedDate":"2024-03-14"},{"lineNumber":63,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"eunrcn"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"eunrcn"},"content":" void equals_differentObject_false() {","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"eunrcn"},"content":" ViewCommand viewCommand1 \u003d new ViewCommand(Index.fromZeroBased(0));","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"eunrcn"},"content":" ViewCommand viewCommand2 \u003d new ViewCommand(Index.fromZeroBased(1));","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"eunrcn"},"content":" assertNotEquals(viewCommand1, viewCommand2);","lastModifiedDate":"2024-03-14"},{"lineNumber":71,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"eunrcn"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":74,"author":{"gitId":"eunrcn"},"content":" void equals_differentClass_false() {","lastModifiedDate":"2024-03-12"},{"lineNumber":75,"author":{"gitId":"eunrcn"},"content":" ViewCommand viewCommand \u003d new ViewCommand(Index.fromZeroBased(0));","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"eunrcn"},"content":" Object otherObject \u003d new Object();","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"eunrcn"},"content":" assertNotEquals(viewCommand, otherObject);","lastModifiedDate":"2024-03-14"},{"lineNumber":79,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":80,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":81,"author":{"gitId":"eunrcn"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":82,"author":{"gitId":"eunrcn"},"content":" public void toString_validIndex_success() {","lastModifiedDate":"2024-03-14"},{"lineNumber":83,"author":{"gitId":"eunrcn"},"content":" // Create an Index object","lastModifiedDate":"2024-03-14"},{"lineNumber":84,"author":{"gitId":"eunrcn"},"content":" Index index \u003d Index.fromZeroBased(3);","lastModifiedDate":"2024-03-14"},{"lineNumber":85,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":86,"author":{"gitId":"eunrcn"},"content":" // Create a ViewCommand object using the Index","lastModifiedDate":"2024-03-14"},{"lineNumber":87,"author":{"gitId":"eunrcn"},"content":" ViewCommand viewCommand \u003d new ViewCommand(index);","lastModifiedDate":"2024-03-14"},{"lineNumber":88,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":89,"author":{"gitId":"eunrcn"},"content":" // Create the expected string representation using variables","lastModifiedDate":"2024-03-14"},{"lineNumber":90,"author":{"gitId":"eunrcn"},"content":" String expectedToString \u003d String.format(\"seedu.address.logic.commands.ViewCommand{targetIndex\u003d%s}\", index);","lastModifiedDate":"2024-03-14"},{"lineNumber":91,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":92,"author":{"gitId":"eunrcn"},"content":" // Perform the assertion","lastModifiedDate":"2024-03-14"},{"lineNumber":93,"author":{"gitId":"eunrcn"},"content":" assertEquals(expectedToString, viewCommand.toString());","lastModifiedDate":"2024-03-14"},{"lineNumber":94,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":95,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":96,"author":{"gitId":"eunrcn"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"eunrcn":93,"ashleygoh1":3}},{"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":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INTERN_DURATION_DESC_AMY;","lastModifiedDate":"2024-02-26"},{"lineNumber":9,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INTERN_DURATION_DESC_BOB;","lastModifiedDate":"2024-02-26"},{"lineNumber":10,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INTERVIEW_DATE_DESC_AMY;","lastModifiedDate":"2024-02-26"},{"lineNumber":11,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INTERVIEW_DATE_DESC_BOB;","lastModifiedDate":"2024-02-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":14,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_INTERN_DURATION_DESC;","lastModifiedDate":"2024-02-26"},{"lineNumber":15,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_JOB_DESCRIPTION_DESC;","lastModifiedDate":"2024-02-26"},{"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":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_SALARY_DESC;","lastModifiedDate":"2024-02-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":20,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.JOB_DESCRIPTION_DESC_AMY;","lastModifiedDate":"2024-02-26"},{"lineNumber":21,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.JOB_DESCRIPTION_DESC_BOB;","lastModifiedDate":"2024-02-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2017-12-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23"},{"lineNumber":28,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SALARY_DESC_AMY;","lastModifiedDate":"2024-02-26"},{"lineNumber":29,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SALARY_DESC_BOB;","lastModifiedDate":"2024-02-26"},{"lineNumber":30,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_INTERVIEW;","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_NO_REPLY;","lastModifiedDate":"2024-02-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":34,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_INTERN_DURATION_BOB;","lastModifiedDate":"2024-02-26"},{"lineNumber":35,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_INTERVIEW_DATE_BOB;","lastModifiedDate":"2024-02-26"},{"lineNumber":36,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_JOB_DESCRIPTION_BOB;","lastModifiedDate":"2024-02-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14"},{"lineNumber":40,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":41,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_INTERN_DURATION;","lastModifiedDate":"2024-02-26"},{"lineNumber":42,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_INTERVIEW_DATE;","lastModifiedDate":"2024-02-26"},{"lineNumber":43,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_JOB_DESCRIPTION;","lastModifiedDate":"2024-02-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14"},{"lineNumber":45,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":46,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SALARY;","lastModifiedDate":"2024-02-26"},{"lineNumber":47,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-02-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":49,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":50,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":55,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15"},{"lineNumber":57,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.InternDuration;","lastModifiedDate":"2024-02-26"},{"lineNumber":58,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.JobDescription;","lastModifiedDate":"2024-02-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-06-15"},{"lineNumber":62,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.Salary;","lastModifiedDate":"2024-02-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15"},{"lineNumber":64,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":66,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":67,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":71,"author":{"gitId":"ashleygoh1"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).build();","lastModifiedDate":"2024-02-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":75,"author":{"gitId":"ashleygoh1"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_INTERVIEW","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"ashleygoh1"},"content":" + JOB_DESCRIPTION_DESC_BOB + INTERVIEW_DATE_DESC_BOB","lastModifiedDate":"2024-02-26"},{"lineNumber":77,"author":{"gitId":"ashleygoh1"},"content":" + INTERN_DURATION_DESC_BOB + SALARY_DESC_BOB, new AddCommand(expectedPerson));","lastModifiedDate":"2024-02-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":83,"author":{"gitId":"-"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-07-14"},{"lineNumber":84,"author":{"gitId":"ashleygoh1"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_INTERVIEW","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"ashleygoh1"},"content":" + JOB_DESCRIPTION_DESC_BOB + INTERVIEW_DATE_DESC_BOB","lastModifiedDate":"2024-02-26"},{"lineNumber":86,"author":{"gitId":"ashleygoh1"},"content":" + INTERN_DURATION_DESC_BOB + SALARY_DESC_BOB;","lastModifiedDate":"2024-02-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":104,"author":{"gitId":"ashleygoh1"},"content":" // multiple job description","lastModifiedDate":"2024-02-26"},{"lineNumber":105,"author":{"gitId":"ashleygoh1"},"content":" assertParseFailure(parser, JOB_DESCRIPTION_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-02-26"},{"lineNumber":106,"author":{"gitId":"ashleygoh1"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_JOB_DESCRIPTION));","lastModifiedDate":"2024-02-26"},{"lineNumber":107,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":108,"author":{"gitId":"ashleygoh1"},"content":" // multiple interview date","lastModifiedDate":"2024-02-26"},{"lineNumber":109,"author":{"gitId":"ashleygoh1"},"content":" assertParseFailure(parser, INTERVIEW_DATE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-02-26"},{"lineNumber":110,"author":{"gitId":"ashleygoh1"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_INTERVIEW_DATE));","lastModifiedDate":"2024-02-26"},{"lineNumber":111,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":112,"author":{"gitId":"ashleygoh1"},"content":" // multiple intern duration","lastModifiedDate":"2024-02-26"},{"lineNumber":113,"author":{"gitId":"ashleygoh1"},"content":" assertParseFailure(parser, INTERN_DURATION_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-02-26"},{"lineNumber":114,"author":{"gitId":"ashleygoh1"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_INTERN_DURATION));","lastModifiedDate":"2024-02-26"},{"lineNumber":115,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":116,"author":{"gitId":"ashleygoh1"},"content":" // multiple salary","lastModifiedDate":"2024-02-26"},{"lineNumber":117,"author":{"gitId":"ashleygoh1"},"content":" assertParseFailure(parser, SALARY_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-02-26"},{"lineNumber":118,"author":{"gitId":"ashleygoh1"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_SALARY));","lastModifiedDate":"2024-02-26"},{"lineNumber":119,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":120,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2023-07-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":124,"author":{"gitId":"ashleygoh1"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_ADDRESS, PREFIX_EMAIL, PREFIX_PHONE,","lastModifiedDate":"2024-02-26"},{"lineNumber":125,"author":{"gitId":"ashleygoh1"},"content":" PREFIX_TAG, PREFIX_JOB_DESCRIPTION, PREFIX_INTERVIEW_DATE, PREFIX_INTERN_DURATION,","lastModifiedDate":"2024-02-26"},{"lineNumber":126,"author":{"gitId":"ashleygoh1"},"content":" PREFIX_SALARY));","lastModifiedDate":"2024-02-26"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" // invalid value followed by valid 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":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":132,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":138,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":140,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":142,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":144,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":146,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":148,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":150,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":152,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":153,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":154,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":156,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":158,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":160,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":161,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":162,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"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_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":167,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":169,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":170,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":173,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":174,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":177,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":178,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":181,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":182,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":185,"author":{"gitId":"ashleygoh1"},"content":" // missing tag prefix","lastModifiedDate":"2024-02-26"},{"lineNumber":186,"author":{"gitId":"ashleygoh1"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2024-02-26"},{"lineNumber":187,"author":{"gitId":"ashleygoh1"},"content":" expectedMessage);","lastModifiedDate":"2024-02-26"},{"lineNumber":188,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":189,"author":{"gitId":"ashleygoh1"},"content":" // missing job description prefix","lastModifiedDate":"2024-02-26"},{"lineNumber":190,"author":{"gitId":"ashleygoh1"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB","lastModifiedDate":"2024-02-26"},{"lineNumber":191,"author":{"gitId":"ashleygoh1"},"content":" + VALID_JOB_DESCRIPTION_BOB,","lastModifiedDate":"2024-02-26"},{"lineNumber":192,"author":{"gitId":"ashleygoh1"},"content":" expectedMessage);","lastModifiedDate":"2024-02-26"},{"lineNumber":193,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":194,"author":{"gitId":"ashleygoh1"},"content":" // missing interview date prefix","lastModifiedDate":"2024-02-26"},{"lineNumber":195,"author":{"gitId":"ashleygoh1"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB","lastModifiedDate":"2024-02-26"},{"lineNumber":196,"author":{"gitId":"ashleygoh1"},"content":" + VALID_INTERVIEW_DATE_BOB,","lastModifiedDate":"2024-02-26"},{"lineNumber":197,"author":{"gitId":"ashleygoh1"},"content":" expectedMessage);","lastModifiedDate":"2024-02-26"},{"lineNumber":198,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":199,"author":{"gitId":"ashleygoh1"},"content":" // missing intern duration prefix","lastModifiedDate":"2024-02-26"},{"lineNumber":200,"author":{"gitId":"ashleygoh1"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB","lastModifiedDate":"2024-02-26"},{"lineNumber":201,"author":{"gitId":"ashleygoh1"},"content":" + VALID_INTERN_DURATION_BOB,","lastModifiedDate":"2024-02-26"},{"lineNumber":202,"author":{"gitId":"ashleygoh1"},"content":" expectedMessage);","lastModifiedDate":"2024-02-26"},{"lineNumber":203,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":204,"author":{"gitId":"ashleygoh1"},"content":" // missing salary prefix","lastModifiedDate":"2024-02-26"},{"lineNumber":205,"author":{"gitId":"ashleygoh1"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2024-02-26"},{"lineNumber":206,"author":{"gitId":"ashleygoh1"},"content":" expectedMessage);","lastModifiedDate":"2024-02-26"},{"lineNumber":207,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":208,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15"},{"lineNumber":209,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":213,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":214,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":215,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":216,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":217,"author":{"gitId":"ashleygoh1"},"content":" + TAG_DESC_INTERVIEW + JOB_DESCRIPTION_DESC_BOB + INTERVIEW_DATE_DESC_BOB","lastModifiedDate":"2024-03-12"},{"lineNumber":218,"author":{"gitId":"ashleygoh1"},"content":" + INTERN_DURATION_DESC_BOB + SALARY_DESC_BOB, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-26"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":220,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15"},{"lineNumber":221,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":222,"author":{"gitId":"ashleygoh1"},"content":" + TAG_DESC_INTERVIEW + JOB_DESCRIPTION_DESC_BOB + INTERVIEW_DATE_DESC_BOB","lastModifiedDate":"2024-03-12"},{"lineNumber":223,"author":{"gitId":"ashleygoh1"},"content":" + INTERN_DURATION_DESC_BOB + SALARY_DESC_BOB, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-26"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":225,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15"},{"lineNumber":226,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":227,"author":{"gitId":"ashleygoh1"},"content":" + TAG_DESC_INTERVIEW + JOB_DESCRIPTION_DESC_BOB + INTERVIEW_DATE_DESC_BOB","lastModifiedDate":"2024-03-12"},{"lineNumber":228,"author":{"gitId":"ashleygoh1"},"content":" + INTERN_DURATION_DESC_BOB + SALARY_DESC_BOB, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-26"},{"lineNumber":229,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15"},{"lineNumber":230,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":231,"author":{"gitId":"ashleygoh1"},"content":" + INVALID_TAG_DESC + JOB_DESCRIPTION_DESC_BOB + INTERVIEW_DATE_DESC_BOB","lastModifiedDate":"2024-02-26"},{"lineNumber":232,"author":{"gitId":"ashleygoh1"},"content":" + INTERN_DURATION_DESC_BOB + SALARY_DESC_BOB, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-26"},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":234,"author":{"gitId":"ashleygoh1"},"content":" // invalid job description","lastModifiedDate":"2024-02-26"},{"lineNumber":235,"author":{"gitId":"ashleygoh1"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-02-26"},{"lineNumber":236,"author":{"gitId":"ashleygoh1"},"content":" + TAG_DESC_INTERVIEW + INVALID_JOB_DESCRIPTION_DESC + INTERVIEW_DATE_DESC_BOB","lastModifiedDate":"2024-03-12"},{"lineNumber":237,"author":{"gitId":"ashleygoh1"},"content":" + INTERN_DURATION_DESC_BOB + SALARY_DESC_BOB, JobDescription.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-26"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":239,"author":{"gitId":"ashleygoh1"},"content":" // invalid intern duration","lastModifiedDate":"2024-02-26"},{"lineNumber":240,"author":{"gitId":"ashleygoh1"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-02-26"},{"lineNumber":241,"author":{"gitId":"ashleygoh1"},"content":" + TAG_DESC_INTERVIEW + JOB_DESCRIPTION_DESC_BOB + INTERVIEW_DATE_DESC_BOB","lastModifiedDate":"2024-03-12"},{"lineNumber":242,"author":{"gitId":"ashleygoh1"},"content":" + INVALID_INTERN_DURATION_DESC + SALARY_DESC_BOB, InternDuration.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-26"},{"lineNumber":243,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":244,"author":{"gitId":"ashleygoh1"},"content":" // invalid salary","lastModifiedDate":"2024-02-26"},{"lineNumber":245,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-02-26"},{"lineNumber":246,"author":{"gitId":"ashleygoh1"},"content":" + TAG_DESC_INTERVIEW + JOB_DESCRIPTION_DESC_BOB + INTERVIEW_DATE_DESC_BOB","lastModifiedDate":"2024-03-12"},{"lineNumber":247,"author":{"gitId":"ashleygoh1"},"content":" + INTERN_DURATION_DESC_BOB + INVALID_SALARY_DESC, Salary.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-26"},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":249,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":250,"author":{"gitId":"ashleygoh1"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2024-02-26"},{"lineNumber":251,"author":{"gitId":"ashleygoh1"},"content":" + TAG_DESC_INTERVIEW + JOB_DESCRIPTION_DESC_BOB + INTERVIEW_DATE_DESC_BOB","lastModifiedDate":"2024-03-12"},{"lineNumber":252,"author":{"gitId":"ashleygoh1"},"content":" + INTERN_DURATION_DESC_BOB + INVALID_SALARY_DESC,","lastModifiedDate":"2024-02-26"},{"lineNumber":253,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":257,"author":{"gitId":"ashleygoh1"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_INTERVIEW + TAG_DESC_NO_REPLY,","lastModifiedDate":"2024-03-12"},{"lineNumber":258,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":260,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"ashleygoh1":97,"-":163}},{"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":"2024-03-12"},{"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":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":15,"author":{"gitId":"eunrcn"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.logic.commands.ViewCommand;","lastModifiedDate":"2024-03-12"},{"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":"2024-03-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":"2024-03-12"},{"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":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"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":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"eunrcn"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"eunrcn"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"eunrcn"},"content":" Index index \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"eunrcn"},"content":" EditCommand.EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(\"Betty\").build();","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"eunrcn"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"eunrcn"},"content":" String.format(\"%s %d %s\", EditCommand.COMMAND_WORD, index.getOneBased(), \"c/\" + \"Betty\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"eunrcn"},"content":" assertEquals(new EditCommand(index, descriptor), command);","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"eunrcn"},"content":" FindCommand.COMMAND_WORD + \" \" + String.join(\" \", keywords));","lastModifiedDate":"2024-03-14"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2024-03-12"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2024-03-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":94,"author":{"gitId":"eunrcn"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":95,"author":{"gitId":"eunrcn"},"content":" public void parseCommand_view() throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":96,"author":{"gitId":"eunrcn"},"content":" Index index \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-12"},{"lineNumber":97,"author":{"gitId":"eunrcn"},"content":" ViewCommand command \u003d (ViewCommand) parser.parseCommand(","lastModifiedDate":"2024-03-12"},{"lineNumber":98,"author":{"gitId":"eunrcn"},"content":" ViewCommand.COMMAND_WORD + \" \" + (index).getOneBased());","lastModifiedDate":"2024-03-14"},{"lineNumber":99,"author":{"gitId":"eunrcn"},"content":" assertEquals(new ViewCommand(index), command);","lastModifiedDate":"2024-03-12"},{"lineNumber":100,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-03-12"},{"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_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"eunrcn":21,"ashleygoh1":1,"-":90}},{"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":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-04"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INTERN_DURATION_DESC_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INTERVIEW_DATE_DESC_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.logic.commands.CommandTestUtil.JOB_DESCRIPTION_DESC_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SALARY_DESC_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_INTERVIEW;","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_NO_REPLY;","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_INTERN_DURATION_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_INTERVIEW_DATE_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_JOB_DESCRIPTION_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SALARY_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_INTERVIEW;","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"Jawad280"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_NO_REPLY;","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-04"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-04"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-04"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2024-03-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-04"},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-03-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-04"},{"lineNumber":49,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2024-03-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":55,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2024-03-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2024-03-04"},{"lineNumber":58,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":60,"author":{"gitId":"Jawad280"},"content":" private final EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-04"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2024-03-04"},{"lineNumber":64,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2024-03-04"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-04"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2024-03-04"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2024-03-04"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":70,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2024-03-04"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-04"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-04"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2024-03-04"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2024-03-04"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-04"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":79,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2024-03-04"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-04"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":82,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2024-03-04"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-04"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":85,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2024-03-04"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-04"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-04"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2024-03-04"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2024-03-04"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2024-03-04"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2024-03-04"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2024-03-04"},{"lineNumber":95,"author":{"gitId":"Jawad280"},"content":" // Since address is optional, the following testcase is not relevant","lastModifiedDate":"2024-03-11"},{"lineNumber":96,"author":{"gitId":"Jawad280"},"content":" // assertParseFailure(parser, \"1\" + INVALID_ADDRESS_DESC, Address.MESSAGE_CONSTRAINTS); // invalid address","lastModifiedDate":"2024-03-11"},{"lineNumber":97,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2024-03-04"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-04"},{"lineNumber":99,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2024-03-04"},{"lineNumber":100,"author":{"gitId":"Jawad280"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_ADDRESS_AMY","lastModifiedDate":"2024-03-11"},{"lineNumber":101,"author":{"gitId":"Jawad280"},"content":" + VALID_PHONE_AMY, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-11"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-04"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2024-03-04"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-04"},{"lineNumber":107,"author":{"gitId":"eunrcn"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + TAG_DESC_NO_REPLY","lastModifiedDate":"2024-03-04"},{"lineNumber":108,"author":{"gitId":"eunrcn"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + NAME_DESC_AMY + JOB_DESCRIPTION_DESC_AMY + INTERVIEW_DATE_DESC_AMY","lastModifiedDate":"2024-03-04"},{"lineNumber":109,"author":{"gitId":"eunrcn"},"content":" + INTERN_DURATION_DESC_AMY + SALARY_DESC_AMY;","lastModifiedDate":"2024-03-04"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":111,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-03-04"},{"lineNumber":112,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2024-03-04"},{"lineNumber":113,"author":{"gitId":"Jawad280"},"content":" .withTags(VALID_TAG_NO_REPLY).withJobDescription(VALID_JOB_DESCRIPTION_AMY)","lastModifiedDate":"2024-03-11"},{"lineNumber":114,"author":{"gitId":"eunrcn"},"content":" .withInterviewDate(VALID_INTERVIEW_DATE_AMY).withInternDuration(VALID_INTERN_DURATION_AMY)","lastModifiedDate":"2024-03-04"},{"lineNumber":115,"author":{"gitId":"eunrcn"},"content":" .withSalary(VALID_SALARY_AMY).build();","lastModifiedDate":"2024-03-04"},{"lineNumber":116,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-04"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-04"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-04"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2024-03-04"},{"lineNumber":123,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-04"},{"lineNumber":124,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-04"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":126,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-04"},{"lineNumber":127,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2024-03-04"},{"lineNumber":128,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-04"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-04"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-04"},{"lineNumber":134,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2024-03-04"},{"lineNumber":135,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2024-03-04"},{"lineNumber":136,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2024-03-04"},{"lineNumber":137,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2024-03-04"},{"lineNumber":138,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2024-03-04"},{"lineNumber":139,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-04"},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-04"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":142,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2024-03-04"},{"lineNumber":143,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY;","lastModifiedDate":"2024-03-04"},{"lineNumber":144,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2024-03-04"},{"lineNumber":145,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-04"},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-04"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":148,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2024-03-04"},{"lineNumber":149,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-04"},{"lineNumber":150,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2024-03-04"},{"lineNumber":151,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-04"},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-04"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":154,"author":{"gitId":"-"},"content":" // address","lastModifiedDate":"2024-03-04"},{"lineNumber":155,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + ADDRESS_DESC_AMY;","lastModifiedDate":"2024-03-04"},{"lineNumber":156,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2024-03-04"},{"lineNumber":157,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-04"},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-04"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":160,"author":{"gitId":"Jawad280"},"content":" // tag","lastModifiedDate":"2024-03-11"},{"lineNumber":161,"author":{"gitId":"ashleygoh1"},"content":" userInput \u003d targetIndex.getOneBased() + TAG_DESC_INTERVIEW;","lastModifiedDate":"2024-03-13"},{"lineNumber":162,"author":{"gitId":"ashleygoh1"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withTags(VALID_TAG_INTERVIEW).build();","lastModifiedDate":"2024-03-13"},{"lineNumber":163,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":164,"author":{"gitId":"eunrcn"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-04"},{"lineNumber":165,"author":{"gitId":"eunrcn"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-04"},{"lineNumber":166,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":167,"author":{"gitId":"eunrcn"},"content":" // job description","lastModifiedDate":"2024-03-04"},{"lineNumber":168,"author":{"gitId":"Jawad280"},"content":" userInput \u003d targetIndex.getOneBased() + JOB_DESCRIPTION_DESC_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":169,"author":{"gitId":"eunrcn"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withJobDescription(VALID_JOB_DESCRIPTION_AMY).build();","lastModifiedDate":"2024-03-04"},{"lineNumber":170,"author":{"gitId":"eunrcn"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-04"},{"lineNumber":171,"author":{"gitId":"eunrcn"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-04"},{"lineNumber":172,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":173,"author":{"gitId":"eunrcn"},"content":" // interview date","lastModifiedDate":"2024-03-04"},{"lineNumber":174,"author":{"gitId":"Jawad280"},"content":" userInput \u003d targetIndex.getOneBased() + INTERVIEW_DATE_DESC_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":175,"author":{"gitId":"eunrcn"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withInterviewDate(VALID_INTERVIEW_DATE_AMY).build();","lastModifiedDate":"2024-03-04"},{"lineNumber":176,"author":{"gitId":"eunrcn"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-04"},{"lineNumber":177,"author":{"gitId":"eunrcn"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-04"},{"lineNumber":178,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":179,"author":{"gitId":"eunrcn"},"content":" // intern duration","lastModifiedDate":"2024-03-04"},{"lineNumber":180,"author":{"gitId":"Jawad280"},"content":" userInput \u003d targetIndex.getOneBased() + INTERN_DURATION_DESC_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":181,"author":{"gitId":"eunrcn"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withInternDuration(VALID_INTERN_DURATION_AMY).build();","lastModifiedDate":"2024-03-04"},{"lineNumber":182,"author":{"gitId":"eunrcn"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-04"},{"lineNumber":183,"author":{"gitId":"eunrcn"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-04"},{"lineNumber":184,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":185,"author":{"gitId":"eunrcn"},"content":" // salary","lastModifiedDate":"2024-03-04"},{"lineNumber":186,"author":{"gitId":"Jawad280"},"content":" userInput \u003d targetIndex.getOneBased() + SALARY_DESC_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":187,"author":{"gitId":"eunrcn"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withSalary(VALID_SALARY_AMY).build();","lastModifiedDate":"2024-03-04"},{"lineNumber":188,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-04"},{"lineNumber":189,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-04"},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":192,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-04"},{"lineNumber":193,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2024-03-04"},{"lineNumber":194,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2024-03-04"},{"lineNumber":195,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2024-03-04"},{"lineNumber":196,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2024-03-04"},{"lineNumber":197,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-04"},{"lineNumber":198,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2024-03-04"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":200,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2024-03-04"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":202,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2024-03-04"},{"lineNumber":203,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2024-03-04"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":205,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2024-03-04"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":207,"author":{"gitId":"eunrcn"},"content":" // multiple valid fields repeated","lastModifiedDate":"2024-03-04"},{"lineNumber":208,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2024-03-04"},{"lineNumber":209,"author":{"gitId":"ashleygoh1"},"content":" + TAG_DESC_INTERVIEW + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2024-03-13"},{"lineNumber":210,"author":{"gitId":"ashleygoh1"},"content":" + TAG_DESC_INTERVIEW + PHONE_DESC_BOB + ADDRESS_DESC_BOB + EMAIL_DESC_BOB + TAG_DESC_NO_REPLY;","lastModifiedDate":"2024-03-13"},{"lineNumber":211,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":212,"author":{"gitId":"Jawad280"},"content":" assertParseFailure(","lastModifiedDate":"2024-03-11"},{"lineNumber":213,"author":{"gitId":"Jawad280"},"content":" parser,","lastModifiedDate":"2024-03-11"},{"lineNumber":214,"author":{"gitId":"Jawad280"},"content":" userInput,","lastModifiedDate":"2024-03-11"},{"lineNumber":215,"author":{"gitId":"Jawad280"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_TAG, PREFIX_ADDRESS)","lastModifiedDate":"2024-03-11"},{"lineNumber":216,"author":{"gitId":"Jawad280"},"content":" );","lastModifiedDate":"2024-03-11"},{"lineNumber":217,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2024-03-04"},{"lineNumber":218,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2024-03-04"},{"lineNumber":219,"author":{"gitId":"-"},"content":" + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2024-03-04"},{"lineNumber":220,"author":{"gitId":"Jawad280"},"content":" assertParseFailure(","lastModifiedDate":"2024-03-11"},{"lineNumber":221,"author":{"gitId":"Jawad280"},"content":" parser,","lastModifiedDate":"2024-03-11"},{"lineNumber":222,"author":{"gitId":"Jawad280"},"content":" userInput,","lastModifiedDate":"2024-03-11"},{"lineNumber":223,"author":{"gitId":"Jawad280"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS)","lastModifiedDate":"2024-03-11"},{"lineNumber":224,"author":{"gitId":"Jawad280"},"content":" );","lastModifiedDate":"2024-03-11"},{"lineNumber":225,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":226,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"eunrcn":27,"chenyixin0":9,"Jawad280":23,"ashleygoh1":6,"-":161}},{"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 seedu.address.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2017-06-02"},{"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.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2017-05-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2017-05-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":22,"author":{"gitId":"ashleygoh1"},"content":" private static final String INVALID_TAG \u003d \"#NR\";","lastModifiedDate":"2024-02-26"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d \"123456\";","lastModifiedDate":"2017-05-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d \"123 Main Street #0505\";","lastModifiedDate":"2017-05-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":28,"author":{"gitId":"ashleygoh1"},"content":" private static final String VALID_TAG \u003d \"NR\";","lastModifiedDate":"2024-02-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2017-05-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2017-05-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","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_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":64,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":70,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void parsePhone_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePhone((String) null));","lastModifiedDate":"2019-03-14"},{"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":"-"},"content":" public void parsePhone_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhone(INVALID_PHONE));","lastModifiedDate":"2019-03-14"},{"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_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":87,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-22"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(VALID_PHONE));","lastModifiedDate":"2017-05-30"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithWhitespace_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":93,"author":{"gitId":"-"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":94,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-30"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(phoneWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void parseAddress_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseAddress((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-22"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(VALID_ADDRESS));","lastModifiedDate":"2017-05-30"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":111,"author":{"gitId":"-"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_ADDRESS + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":112,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-30"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(addressWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14"},{"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":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":128,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":134,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":135,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30"},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":139,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":140,"author":{"gitId":"-"},"content":" public void parseTag_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":145,"author":{"gitId":"-"},"content":" public void parseTag_invalidValue_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTag(INVALID_TAG));","lastModifiedDate":"2019-03-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":149,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":150,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithoutWhitespace_returnsTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":151,"author":{"gitId":"ashleygoh1"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG);","lastModifiedDate":"2024-02-26"},{"lineNumber":152,"author":{"gitId":"ashleygoh1"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(VALID_TAG));","lastModifiedDate":"2024-02-26"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":156,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithWhitespace_returnsTrimmedTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":157,"author":{"gitId":"ashleygoh1"},"content":" String tagWithWhitespace \u003d WHITESPACE + VALID_TAG + WHITESPACE;","lastModifiedDate":"2024-02-26"},{"lineNumber":158,"author":{"gitId":"ashleygoh1"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG);","lastModifiedDate":"2024-02-26"},{"lineNumber":159,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(tagWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":162,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":163,"author":{"gitId":"-"},"content":" public void parseTags_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":164,"author":{"gitId":"ashleygoh1"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag(null));","lastModifiedDate":"2024-02-26"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":167,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22"}],"authorContributionMap":{"ashleygoh1":7,"-":160}},{"path":"src/test/java/seedu/address/logic/parser/ViewCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"eunrcn"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"eunrcn"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"eunrcn"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"eunrcn"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"eunrcn"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"eunrcn"},"content":"import seedu.address.logic.commands.ViewCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"eunrcn"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"eunrcn"},"content":"class ViewCommandParserTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"eunrcn"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"eunrcn"},"content":" void parse_validArgs_returnsViewCommand() throws ParseException {","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"eunrcn"},"content":" ViewCommandParser parser \u003d new ViewCommandParser();","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"ashleygoh1"},"content":" ViewCommand expectedCommand \u003d new ViewCommand(Index.fromZeroBased(0));","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"eunrcn"},"content":" assertEquals(expectedCommand, parser.parse(\"1\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"eunrcn"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"eunrcn"},"content":" void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"eunrcn"},"content":" ViewCommandParser parser \u003d new ViewCommandParser();","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"eunrcn"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"abc\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"eunrcn"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"eunrcn"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"eunrcn"},"content":" void parse_invalidIndex_throwsParseException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"eunrcn"},"content":" ViewCommandParser parser \u003d new ViewCommandParser();","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"eunrcn"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"0\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"eunrcn"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"-1\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"eunrcn"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"eunrcn"},"content":" void parse_withWhitespaceAndValidArgs_returnsViewCommand() throws ParseException {","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"eunrcn"},"content":" ViewCommandParser parser \u003d new ViewCommandParser();","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"ashleygoh1"},"content":" ViewCommand expectedCommand \u003d new ViewCommand(Index.fromZeroBased(1));","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"eunrcn"},"content":" assertEquals(expectedCommand, parser.parse(\" 2 \"));","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"eunrcn"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"eunrcn"},"content":" void parse_withWhitespaceAndInvalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"eunrcn"},"content":" ViewCommandParser parser \u003d new ViewCommandParser();","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"eunrcn"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\" abc \"));","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"eunrcn"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\" \"));","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"eunrcn"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"eunrcn":50,"ashleygoh1":3}},{"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":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_INTERVIEW;","lastModifiedDate":"2024-03-12"},{"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":"ashleygoh1"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_INTERVIEW)","lastModifiedDate":"2024-03-12"},{"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":"ashleygoh1"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_INTERVIEW)","lastModifiedDate":"2024-03-12"},{"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":"-"},"content":"}","lastModifiedDate":"2016-12-24"}],"authorContributionMap":{"ashleygoh1":3,"-":105}},{"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":"-"},"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":"ashleygoh1"},"content":" String[] keywords \u003d ALICE.getCompanyName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2024-02-25"},{"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":{"ashleygoh1":1,"-":131}},{"path":"src/test/java/seedu/address/model/person/InternDurationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ashleygoh1"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"ashleygoh1"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"ashleygoh1"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"ashleygoh1"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"ashleygoh1"},"content":"public class InternDurationTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"ashleygoh1"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"ashleygoh1"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"ashleygoh1"},"content":" assertThrows(NullPointerException.class, () -\u003e new InternDuration(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"ashleygoh1"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"ashleygoh1"},"content":" public void isValidInternDuration() {","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"ashleygoh1"},"content":" // null address","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"ashleygoh1"},"content":" assertThrows(NullPointerException.class, () -\u003e InternDuration.isValidInternDuration(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"ashleygoh1"},"content":" // invalid addresses","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"ashleygoh1"},"content":" assertFalse(InternDuration.isValidInternDuration(\"\")); // empty string","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"ashleygoh1"},"content":" assertFalse(InternDuration.isValidInternDuration(\" \")); // spaces only","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"ashleygoh1"},"content":" // valid addresses","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"ashleygoh1"},"content":" assertTrue(InternDuration.isValidInternDuration(\"6 months\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"ashleygoh1"},"content":" assertTrue(InternDuration.isValidInternDuration(\"-\")); // one character","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"ashleygoh1"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"ashleygoh1"},"content":" public void equals() {","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"ashleygoh1"},"content":" InternDuration internDuration \u003d new InternDuration(\"Valid InternDuration\");","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"ashleygoh1"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"ashleygoh1"},"content":" assertTrue(internDuration.equals(new InternDuration(\"Valid InternDuration\")));","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"ashleygoh1"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"ashleygoh1"},"content":" assertTrue(internDuration.equals(internDuration));","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"ashleygoh1"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"ashleygoh1"},"content":" assertFalse(internDuration.equals(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"ashleygoh1"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"ashleygoh1"},"content":" assertFalse(internDuration.equals(5.0f));","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"ashleygoh1"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"ashleygoh1"},"content":" assertFalse(internDuration.equals(new Address(\"Other Valid InternDuration\")));","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"ashleygoh1"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"ashleygoh1":48}},{"path":"src/test/java/seedu/address/model/person/JobDescriptionTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ashleygoh1"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"ashleygoh1"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"ashleygoh1"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"ashleygoh1"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"ashleygoh1"},"content":"public class JobDescriptionTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"ashleygoh1"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"ashleygoh1"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"ashleygoh1"},"content":" assertThrows(NullPointerException.class, () -\u003e new InternDuration(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"ashleygoh1"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"ashleygoh1"},"content":" public void isValidInternDuration() {","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"ashleygoh1"},"content":" // null address","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"ashleygoh1"},"content":" assertThrows(NullPointerException.class, () -\u003e InternDuration.isValidInternDuration(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"ashleygoh1"},"content":" // invalid addresses","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"ashleygoh1"},"content":" assertFalse(InternDuration.isValidInternDuration(\"\")); // empty string","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"ashleygoh1"},"content":" assertFalse(InternDuration.isValidInternDuration(\" \")); // spaces only","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"ashleygoh1"},"content":" // valid addresses","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"ashleygoh1"},"content":" assertTrue(InternDuration.isValidInternDuration(\"6 months\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"ashleygoh1"},"content":" assertTrue(InternDuration.isValidInternDuration(\"-\")); // one character","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"ashleygoh1"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"ashleygoh1"},"content":" public void equals() {","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"ashleygoh1"},"content":" InternDuration internDuration \u003d new InternDuration(\"Valid InternDuration\");","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"ashleygoh1"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"ashleygoh1"},"content":" assertTrue(internDuration.equals(new InternDuration(\"Valid InternDuration\")));","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"ashleygoh1"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"ashleygoh1"},"content":" assertTrue(internDuration.equals(internDuration));","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"ashleygoh1"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"ashleygoh1"},"content":" assertFalse(internDuration.equals(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"ashleygoh1"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"ashleygoh1"},"content":" assertFalse(internDuration.equals(5.0f));","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"ashleygoh1"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"ashleygoh1"},"content":" assertFalse(internDuration.equals(new Address(\"Other Valid InternDuration\")));","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"ashleygoh1"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"ashleygoh1":49}},{"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":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_INTERVIEW;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26"},{"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":"2018-04-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18"},{"lineNumber":29,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2020-12-18"},{"lineNumber":30,"author":{"gitId":"ashleygoh1"},"content":" .withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_INTERVIEW).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":38,"author":{"gitId":"-"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":" editedBob \u003d new PersonBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_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 address -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_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-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18"},{"lineNumber":82,"author":{"gitId":"ashleygoh1"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_INTERVIEW).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"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":"ashleygoh1"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getCompanyName()","lastModifiedDate":"2024-02-26"},{"lineNumber":89,"author":{"gitId":"ashleygoh1"},"content":" + \", phone\u003d\" + ALICE.getPhone() + \", email\u003d\" + ALICE.getEmail()","lastModifiedDate":"2024-02-26"},{"lineNumber":90,"author":{"gitId":"ashleygoh1"},"content":" + \", address\u003d\" + ALICE.getAddress() + \", tag\u003d\" + ALICE.getTag()","lastModifiedDate":"2024-02-26"},{"lineNumber":91,"author":{"gitId":"ashleygoh1"},"content":" + \", job description\u003d\" + ALICE.getJobDescription()","lastModifiedDate":"2024-02-26"},{"lineNumber":92,"author":{"gitId":"ashleygoh1"},"content":" + \", interview date\u003d\" + ALICE.getInterviewDate()","lastModifiedDate":"2024-02-26"},{"lineNumber":93,"author":{"gitId":"ashleygoh1"},"content":" + \", intern duration\u003d\" + ALICE.getInternDuration()","lastModifiedDate":"2024-02-26"},{"lineNumber":94,"author":{"gitId":"ashleygoh1"},"content":" + \", salary\u003d\" + ALICE.getSalary() + \"}\";","lastModifiedDate":"2024-02-26"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"ashleygoh1":10,"-":87}},{"path":"src/test/java/seedu/address/model/person/SalaryTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ashleygoh1"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"ashleygoh1"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"ashleygoh1"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"ashleygoh1"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"ashleygoh1"},"content":"public class SalaryTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"ashleygoh1"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"ashleygoh1"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"ashleygoh1"},"content":" assertThrows(NullPointerException.class, () -\u003e new Salary(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"ashleygoh1"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"ashleygoh1"},"content":" public void constructor_invalidSalary_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"ashleygoh1"},"content":" String invalidSalary \u003d \"\";","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"ashleygoh1"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Salary(invalidSalary));","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"ashleygoh1"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"ashleygoh1"},"content":" public void isValidSalary() {","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"ashleygoh1"},"content":" // null salary","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"ashleygoh1"},"content":" assertThrows(NullPointerException.class, () -\u003e Salary.isValidSalary(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"ashleygoh1"},"content":" // invalid Salary","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"ashleygoh1"},"content":" assertFalse(Salary.isValidSalary(\"\")); // empty string","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"ashleygoh1"},"content":" assertFalse(Salary.isValidSalary(\" \")); // spaces only","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"ashleygoh1"},"content":" assertFalse(Salary.isValidSalary(\"salary\")); // non-numeric","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"ashleygoh1"},"content":" assertFalse(Salary.isValidSalary(\"9011p041\")); // alphabets within digits","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"ashleygoh1"},"content":" assertFalse(Salary.isValidSalary(\"9312 1534\")); // spaces within digits","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"ashleygoh1"},"content":" // valid salary","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"ashleygoh1"},"content":" assertTrue(Salary.isValidSalary(\"1\")); // exactly 1 numbers","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"ashleygoh1"},"content":" assertTrue(Salary.isValidSalary(\"1000\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"ashleygoh1"},"content":" assertTrue(Salary.isValidSalary(\"124293842033123\")); // long salary","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"ashleygoh1"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"ashleygoh1"},"content":" public void equals() {","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"ashleygoh1"},"content":" Salary salary \u003d new Salary(\"1000\");","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"ashleygoh1"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"ashleygoh1"},"content":" assertTrue(salary.equals(new Salary(\"1000\")));","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"ashleygoh1"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"ashleygoh1"},"content":" assertTrue(salary.equals(salary));","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"ashleygoh1"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"ashleygoh1"},"content":" assertFalse(salary.equals(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"ashleygoh1"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"ashleygoh1"},"content":" assertFalse(salary.equals(5.0f));","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"ashleygoh1"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"ashleygoh1"},"content":" assertFalse(salary.equals(new Salary(\"995\")));","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"ashleygoh1"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"ashleygoh1":59}},{"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":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_INTERVIEW;","lastModifiedDate":"2024-03-12"},{"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":"ashleygoh1"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_INTERVIEW)","lastModifiedDate":"2024-03-12"},{"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":"ashleygoh1"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_INTERVIEW)","lastModifiedDate":"2024-03-12"},{"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":{"ashleygoh1":3,"-":172}},{"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 org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"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.Address;","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.InternDuration;","lastModifiedDate":"2024-02-26"},{"lineNumber":14,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.InterviewDate;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.JobDescription;","lastModifiedDate":"2024-02-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.Salary;","lastModifiedDate":"2024-02-26"},{"lineNumber":20,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-12"},{"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":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"ashleygoh1"},"content":" private static final String INVALID_JOB_DESCRIPTION \u003d \" \";","lastModifiedDate":"2024-02-26"},{"lineNumber":29,"author":{"gitId":"ashleygoh1"},"content":" private static final String INVALID_INTERVIEW_DATE \u003d \"\";","lastModifiedDate":"2024-02-26"},{"lineNumber":30,"author":{"gitId":"ashleygoh1"},"content":" private static final String INVALID_INTERN_DURATION \u003d \" \";","lastModifiedDate":"2024-02-26"},{"lineNumber":31,"author":{"gitId":"ashleygoh1"},"content":" private static final String INVALID_SALARY \u003d \"0\";","lastModifiedDate":"2024-02-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"ashleygoh1"},"content":" private static final String VALID_NAME \u003d BENSON.getCompanyName().toString();","lastModifiedDate":"2024-02-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"ashleygoh1"},"content":" private static final String VALID_TAGS \u003d BENSON.getTag().tagName;","lastModifiedDate":"2024-02-26"},{"lineNumber":38,"author":{"gitId":"ashleygoh1"},"content":" private static final String VALID_JOB_DESCRIPTION \u003d BENSON.getJobDescription().toString();","lastModifiedDate":"2024-02-26"},{"lineNumber":39,"author":{"gitId":"ashleygoh1"},"content":" private static final String VALID_INTERVIEW_DATE \u003d BENSON.getInterviewDate().toString();","lastModifiedDate":"2024-02-26"},{"lineNumber":40,"author":{"gitId":"ashleygoh1"},"content":" private static final String VALID_INTERN_DURATION \u003d BENSON.getInternDuration().toString();","lastModifiedDate":"2024-02-26"},{"lineNumber":41,"author":{"gitId":"ashleygoh1"},"content":" private static final String VALID_SALARY \u003d BENSON.getSalary().toString();","lastModifiedDate":"2024-02-26"},{"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":"ashleygoh1"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS,","lastModifiedDate":"2024-02-26"},{"lineNumber":53,"author":{"gitId":"ashleygoh1"},"content":" VALID_JOB_DESCRIPTION, VALID_INTERVIEW_DATE, VALID_INTERN_DURATION, VALID_SALARY);","lastModifiedDate":"2024-02-26"},{"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":"ashleygoh1"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS,","lastModifiedDate":"2024-02-26"},{"lineNumber":61,"author":{"gitId":"ashleygoh1"},"content":" VALID_JOB_DESCRIPTION, VALID_INTERVIEW_DATE, VALID_INTERN_DURATION, VALID_SALARY);","lastModifiedDate":"2024-02-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"ashleygoh1"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS,","lastModifiedDate":"2024-02-26"},{"lineNumber":70,"author":{"gitId":"ashleygoh1"},"content":" VALID_JOB_DESCRIPTION, VALID_INTERVIEW_DATE, VALID_INTERN_DURATION, VALID_SALARY);","lastModifiedDate":"2024-02-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","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_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"ashleygoh1"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS,","lastModifiedDate":"2024-02-26"},{"lineNumber":78,"author":{"gitId":"ashleygoh1"},"content":" VALID_JOB_DESCRIPTION, VALID_INTERVIEW_DATE, VALID_INTERN_DURATION, VALID_SALARY);","lastModifiedDate":"2024-02-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","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_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"ashleygoh1"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_ADDRESS, VALID_TAGS,","lastModifiedDate":"2024-02-26"},{"lineNumber":87,"author":{"gitId":"ashleygoh1"},"content":" VALID_JOB_DESCRIPTION, VALID_INTERVIEW_DATE, VALID_INTERN_DURATION, VALID_SALARY);","lastModifiedDate":"2024-02-26"},{"lineNumber":88,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"ashleygoh1"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null, VALID_ADDRESS, VALID_TAGS,","lastModifiedDate":"2024-02-26"},{"lineNumber":95,"author":{"gitId":"ashleygoh1"},"content":" VALID_JOB_DESCRIPTION, VALID_INTERVIEW_DATE, VALID_INTERN_DURATION, VALID_SALARY);","lastModifiedDate":"2024-02-26"},{"lineNumber":96,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"ashleygoh1"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, null, VALID_TAGS,","lastModifiedDate":"2024-02-26"},{"lineNumber":103,"author":{"gitId":"ashleygoh1"},"content":" VALID_JOB_DESCRIPTION, VALID_INTERVIEW_DATE, VALID_INTERN_DURATION, VALID_SALARY);","lastModifiedDate":"2024-02-26"},{"lineNumber":104,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","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":"2024-03-12"},{"lineNumber":109,"author":{"gitId":"ashleygoh1"},"content":" public void toModelType_nullTag_throwsIllegalValueException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":110,"author":{"gitId":"ashleygoh1"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, null,","lastModifiedDate":"2024-03-12"},{"lineNumber":111,"author":{"gitId":"ashleygoh1"},"content":" VALID_JOB_DESCRIPTION, VALID_INTERVIEW_DATE, VALID_INTERN_DURATION, VALID_SALARY);","lastModifiedDate":"2024-03-12"},{"lineNumber":112,"author":{"gitId":"ashleygoh1"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Tag.class.getSimpleName());","lastModifiedDate":"2024-03-12"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-12"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"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":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":119,"author":{"gitId":"ashleygoh1"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, INVALID_TAG,","lastModifiedDate":"2024-02-26"},{"lineNumber":120,"author":{"gitId":"ashleygoh1"},"content":" VALID_JOB_DESCRIPTION, VALID_INTERVIEW_DATE, VALID_INTERN_DURATION, VALID_SALARY);","lastModifiedDate":"2024-02-26"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, 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":"ashleygoh1"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":125,"author":{"gitId":"ashleygoh1"},"content":" public void toModelType_nullJobDescription_throwsIllegalValueException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":126,"author":{"gitId":"ashleygoh1"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-03-12"},{"lineNumber":127,"author":{"gitId":"ashleygoh1"},"content":" VALID_ADDRESS, VALID_TAGS, null, VALID_INTERVIEW_DATE, VALID_INTERN_DURATION, VALID_SALARY);","lastModifiedDate":"2024-03-12"},{"lineNumber":128,"author":{"gitId":"ashleygoh1"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, JobDescription.class.getSimpleName());","lastModifiedDate":"2024-03-12"},{"lineNumber":129,"author":{"gitId":"ashleygoh1"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-12"},{"lineNumber":130,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":131,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":132,"author":{"gitId":"ashleygoh1"},"content":" @Test","lastModifiedDate":"2024-02-26"},{"lineNumber":133,"author":{"gitId":"ashleygoh1"},"content":" public void toModelType_invalidJobDescription_throwsIllegalValueException() {","lastModifiedDate":"2024-02-26"},{"lineNumber":134,"author":{"gitId":"ashleygoh1"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-02-26"},{"lineNumber":135,"author":{"gitId":"ashleygoh1"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS,","lastModifiedDate":"2024-02-26"},{"lineNumber":136,"author":{"gitId":"ashleygoh1"},"content":" INVALID_JOB_DESCRIPTION, VALID_INTERVIEW_DATE, VALID_INTERN_DURATION, VALID_SALARY);","lastModifiedDate":"2024-02-26"},{"lineNumber":137,"author":{"gitId":"ashleygoh1"},"content":" String expectedMessage \u003d JobDescription.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-02-26"},{"lineNumber":138,"author":{"gitId":"ashleygoh1"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-02-26"},{"lineNumber":139,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":140,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":141,"author":{"gitId":"ashleygoh1"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":142,"author":{"gitId":"ashleygoh1"},"content":" public void toModelType_nullInterviewDate_returnPerson() throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":143,"author":{"gitId":"ashleygoh1"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-03-12"},{"lineNumber":144,"author":{"gitId":"ashleygoh1"},"content":" VALID_ADDRESS, VALID_TAGS, VALID_JOB_DESCRIPTION, INVALID_INTERVIEW_DATE,","lastModifiedDate":"2024-03-12"},{"lineNumber":145,"author":{"gitId":"ashleygoh1"},"content":" VALID_INTERN_DURATION, VALID_SALARY);","lastModifiedDate":"2024-03-12"},{"lineNumber":146,"author":{"gitId":"ashleygoh1"},"content":" Person person1 \u003d new Person(BENSON.getCompanyName(), BENSON.getPhone(), BENSON.getEmail(), BENSON.getAddress(),","lastModifiedDate":"2024-03-12"},{"lineNumber":147,"author":{"gitId":"ashleygoh1"},"content":" BENSON.getTag(), BENSON.getJobDescription(), new InterviewDate(null),","lastModifiedDate":"2024-03-12"},{"lineNumber":148,"author":{"gitId":"ashleygoh1"},"content":" BENSON.getInternDuration(), BENSON.getSalary());","lastModifiedDate":"2024-03-12"},{"lineNumber":149,"author":{"gitId":"ashleygoh1"},"content":" assertEquals(person1, person.toModelType());","lastModifiedDate":"2024-03-12"},{"lineNumber":150,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":151,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":152,"author":{"gitId":"ashleygoh1"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":153,"author":{"gitId":"ashleygoh1"},"content":" public void toModelType_validPersonDetails_returnsPe() throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":154,"author":{"gitId":"ashleygoh1"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2024-03-12"},{"lineNumber":155,"author":{"gitId":"ashleygoh1"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2024-03-12"},{"lineNumber":156,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":157,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":158,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":159,"author":{"gitId":"ashleygoh1"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":160,"author":{"gitId":"ashleygoh1"},"content":" public void toModelType_nullInternDuration_throwsIllegalValueException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":161,"author":{"gitId":"ashleygoh1"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-12"},{"lineNumber":162,"author":{"gitId":"ashleygoh1"},"content":" VALID_TAGS, VALID_JOB_DESCRIPTION, VALID_INTERVIEW_DATE, null, VALID_SALARY);","lastModifiedDate":"2024-03-12"},{"lineNumber":163,"author":{"gitId":"ashleygoh1"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, InternDuration.class.getSimpleName());","lastModifiedDate":"2024-03-12"},{"lineNumber":164,"author":{"gitId":"ashleygoh1"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-12"},{"lineNumber":165,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":166,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":167,"author":{"gitId":"ashleygoh1"},"content":" @Test","lastModifiedDate":"2024-02-26"},{"lineNumber":168,"author":{"gitId":"ashleygoh1"},"content":" public void toModelType_invalidInternDuration_throwsIllegalValueException() {","lastModifiedDate":"2024-02-26"},{"lineNumber":169,"author":{"gitId":"ashleygoh1"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-02-26"},{"lineNumber":170,"author":{"gitId":"ashleygoh1"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS,","lastModifiedDate":"2024-02-26"},{"lineNumber":171,"author":{"gitId":"ashleygoh1"},"content":" VALID_JOB_DESCRIPTION, VALID_INTERVIEW_DATE, INVALID_INTERN_DURATION, VALID_SALARY);","lastModifiedDate":"2024-02-26"},{"lineNumber":172,"author":{"gitId":"ashleygoh1"},"content":" String expectedMessage \u003d InternDuration.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-02-26"},{"lineNumber":173,"author":{"gitId":"ashleygoh1"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-02-26"},{"lineNumber":174,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":175,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":176,"author":{"gitId":"ashleygoh1"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":177,"author":{"gitId":"ashleygoh1"},"content":" public void toModelType_nullSalary_throwsIllegalValueException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":178,"author":{"gitId":"ashleygoh1"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-03-12"},{"lineNumber":179,"author":{"gitId":"ashleygoh1"},"content":" VALID_ADDRESS, VALID_TAGS, VALID_JOB_DESCRIPTION, VALID_INTERVIEW_DATE, VALID_INTERN_DURATION, null);","lastModifiedDate":"2024-03-12"},{"lineNumber":180,"author":{"gitId":"ashleygoh1"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Salary.class.getSimpleName());","lastModifiedDate":"2024-03-12"},{"lineNumber":181,"author":{"gitId":"ashleygoh1"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-12"},{"lineNumber":182,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":183,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":184,"author":{"gitId":"ashleygoh1"},"content":" @Test","lastModifiedDate":"2024-02-26"},{"lineNumber":185,"author":{"gitId":"ashleygoh1"},"content":" public void toModelType_invalidSalary_throwsIllegalValueException() {","lastModifiedDate":"2024-02-26"},{"lineNumber":186,"author":{"gitId":"ashleygoh1"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-02-26"},{"lineNumber":187,"author":{"gitId":"ashleygoh1"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS,","lastModifiedDate":"2024-02-26"},{"lineNumber":188,"author":{"gitId":"ashleygoh1"},"content":" VALID_JOB_DESCRIPTION, VALID_INTERVIEW_DATE, VALID_INTERN_DURATION, INVALID_SALARY);","lastModifiedDate":"2024-02-26"},{"lineNumber":189,"author":{"gitId":"ashleygoh1"},"content":" String expectedMessage \u003d Salary.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-02-26"},{"lineNumber":190,"author":{"gitId":"ashleygoh1"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-02-26"},{"lineNumber":191,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":192,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"ashleygoh1":105,"-":88}},{"path":"src/test/java/seedu/address/testutil/EditPersonDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-04"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"import seedu.address.model.person.InternDuration;","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"import seedu.address.model.person.InterviewDate;","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"import seedu.address.model.person.JobDescription;","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":"import seedu.address.model.person.Salary;","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-04"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2024-03-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * A utility class to help with building EditPersonDescriptor objects.","lastModifiedDate":"2024-03-04"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-04"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorBuilder {","lastModifiedDate":"2024-03-04"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private EditPersonDescriptor descriptor;","lastModifiedDate":"2024-03-04"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder() {","lastModifiedDate":"2024-03-04"},{"lineNumber":23,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2024-03-04"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(EditPersonDescriptor descriptor) {","lastModifiedDate":"2024-03-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.descriptor \u003d new EditPersonDescriptor(descriptor);","lastModifiedDate":"2024-03-04"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Returns an {@code EditPersonDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2024-03-04"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-04"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(Person person) {","lastModifiedDate":"2024-03-04"},{"lineNumber":34,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2024-03-04"},{"lineNumber":35,"author":{"gitId":"eunrcn"},"content":" descriptor.setName(person.getCompanyName());","lastModifiedDate":"2024-03-04"},{"lineNumber":36,"author":{"gitId":"-"},"content":" descriptor.setPhone(person.getPhone());","lastModifiedDate":"2024-03-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2024-03-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":" descriptor.setAddress(person.getAddress());","lastModifiedDate":"2024-03-04"},{"lineNumber":39,"author":{"gitId":"eunrcn"},"content":" descriptor.setTag(person.getTag());","lastModifiedDate":"2024-03-04"},{"lineNumber":40,"author":{"gitId":"eunrcn"},"content":" descriptor.setJobDescription(person.getJobDescription());","lastModifiedDate":"2024-03-04"},{"lineNumber":41,"author":{"gitId":"eunrcn"},"content":" descriptor.setInterviewDate(person.getInterviewDate());","lastModifiedDate":"2024-03-04"},{"lineNumber":42,"author":{"gitId":"eunrcn"},"content":" descriptor.setInternDuration(person.getInternDuration());","lastModifiedDate":"2024-03-04"},{"lineNumber":43,"author":{"gitId":"eunrcn"},"content":" descriptor.setSalary(person.getSalary());","lastModifiedDate":"2024-03-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-04"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withName(String name) {","lastModifiedDate":"2024-03-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2024-03-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2024-03-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-04"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2024-03-04"},{"lineNumber":58,"author":{"gitId":"-"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2024-03-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2024-03-04"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-04"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-04"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-04"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2024-03-04"},{"lineNumber":66,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2024-03-04"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2024-03-04"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-04"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-04"},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-04"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2024-03-04"},{"lineNumber":74,"author":{"gitId":"-"},"content":" descriptor.setAddress(new Address(address));","lastModifiedDate":"2024-03-04"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2024-03-04"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-04"},{"lineNumber":79,"author":{"gitId":"eunrcn"},"content":" * Sets the {@code Tag} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-04"},{"lineNumber":80,"author":{"gitId":"eunrcn"},"content":" */","lastModifiedDate":"2024-03-04"},{"lineNumber":81,"author":{"gitId":"Jawad280"},"content":" public EditPersonDescriptorBuilder withTags(String tag) {","lastModifiedDate":"2024-03-11"},{"lineNumber":82,"author":{"gitId":"Jawad280"},"content":" descriptor.setTag(new Tag(tag));","lastModifiedDate":"2024-03-11"},{"lineNumber":83,"author":{"gitId":"eunrcn"},"content":" return this;","lastModifiedDate":"2024-03-04"},{"lineNumber":84,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":85,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":86,"author":{"gitId":"eunrcn"},"content":" /**","lastModifiedDate":"2024-03-04"},{"lineNumber":87,"author":{"gitId":"eunrcn"},"content":" * Sets the {@code JobDescription} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-04"},{"lineNumber":88,"author":{"gitId":"eunrcn"},"content":" */","lastModifiedDate":"2024-03-04"},{"lineNumber":89,"author":{"gitId":"eunrcn"},"content":" public EditPersonDescriptorBuilder withJobDescription(String jobDescription) {","lastModifiedDate":"2024-03-04"},{"lineNumber":90,"author":{"gitId":"eunrcn"},"content":" descriptor.setJobDescription(new JobDescription(jobDescription));","lastModifiedDate":"2024-03-04"},{"lineNumber":91,"author":{"gitId":"eunrcn"},"content":" return this;","lastModifiedDate":"2024-03-04"},{"lineNumber":92,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":93,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":94,"author":{"gitId":"eunrcn"},"content":" /**","lastModifiedDate":"2024-03-04"},{"lineNumber":95,"author":{"gitId":"eunrcn"},"content":" * Sets the {@code InterviewDate} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-04"},{"lineNumber":96,"author":{"gitId":"eunrcn"},"content":" */","lastModifiedDate":"2024-03-04"},{"lineNumber":97,"author":{"gitId":"eunrcn"},"content":" public EditPersonDescriptorBuilder withInterviewDate(String interviewDate) {","lastModifiedDate":"2024-03-04"},{"lineNumber":98,"author":{"gitId":"eunrcn"},"content":" descriptor.setInterviewDate(new InterviewDate(interviewDate));","lastModifiedDate":"2024-03-04"},{"lineNumber":99,"author":{"gitId":"eunrcn"},"content":" return this;","lastModifiedDate":"2024-03-04"},{"lineNumber":100,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":101,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":102,"author":{"gitId":"eunrcn"},"content":" /**","lastModifiedDate":"2024-03-04"},{"lineNumber":103,"author":{"gitId":"eunrcn"},"content":" * Sets the {@code InternDuration} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-04"},{"lineNumber":104,"author":{"gitId":"eunrcn"},"content":" */","lastModifiedDate":"2024-03-04"},{"lineNumber":105,"author":{"gitId":"eunrcn"},"content":" public EditPersonDescriptorBuilder withInternDuration(String internDuration) {","lastModifiedDate":"2024-03-04"},{"lineNumber":106,"author":{"gitId":"eunrcn"},"content":" descriptor.setInternDuration(new InternDuration(internDuration));","lastModifiedDate":"2024-03-04"},{"lineNumber":107,"author":{"gitId":"eunrcn"},"content":" return this;","lastModifiedDate":"2024-03-04"},{"lineNumber":108,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":109,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":110,"author":{"gitId":"eunrcn"},"content":" /**","lastModifiedDate":"2024-03-04"},{"lineNumber":111,"author":{"gitId":"eunrcn"},"content":" * Sets the {@code Salary} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-04"},{"lineNumber":112,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-04"},{"lineNumber":113,"author":{"gitId":"eunrcn"},"content":" public EditPersonDescriptorBuilder withSalary(String salary) {","lastModifiedDate":"2024-03-04"},{"lineNumber":114,"author":{"gitId":"eunrcn"},"content":" descriptor.setSalary(new Salary(salary));","lastModifiedDate":"2024-03-04"},{"lineNumber":115,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2024-03-04"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2024-03-04"},{"lineNumber":119,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2024-03-04"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"eunrcn":39,"Jawad280":6,"-":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":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-01-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18"},{"lineNumber":5,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.InternDuration;","lastModifiedDate":"2024-02-26"},{"lineNumber":6,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.InterviewDate;","lastModifiedDate":"2024-02-26"},{"lineNumber":7,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.JobDescription;","lastModifiedDate":"2024-02-26"},{"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":"ashleygoh1"},"content":"import seedu.address.model.person.Salary;","lastModifiedDate":"2024-02-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","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":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03"},{"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":"ashleygoh1"},"content":" public static final String DEFAULT_ADDRESS \u003d \"\";","lastModifiedDate":"2024-02-26"},{"lineNumber":23,"author":{"gitId":"ashleygoh1"},"content":" public static final String DEFAULT_TAG \u003d \"I\";","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"ashleygoh1"},"content":" public static final String DEFAULT_JOB_DESCRIPTION \u003d \"Software Developer Intern\";","lastModifiedDate":"2024-02-26"},{"lineNumber":25,"author":{"gitId":"ashleygoh1"},"content":" public static final String DEFAULT_INTERVIEW_DATE \u003d null;","lastModifiedDate":"2024-02-26"},{"lineNumber":26,"author":{"gitId":"ashleygoh1"},"content":" public static final String DEFAULT_INTERN_DURATION \u003d \"6 months\";","lastModifiedDate":"2024-02-26"},{"lineNumber":27,"author":{"gitId":"ashleygoh1"},"content":" public static final String DEFAULT_SALARY \u003d \"500\";","lastModifiedDate":"2024-02-26"},{"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":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20"},{"lineNumber":33,"author":{"gitId":"ashleygoh1"},"content":" private Tag tag;","lastModifiedDate":"2024-02-26"},{"lineNumber":34,"author":{"gitId":"ashleygoh1"},"content":" private JobDescription jobDescription;","lastModifiedDate":"2024-02-26"},{"lineNumber":35,"author":{"gitId":"ashleygoh1"},"content":" private InterviewDate interviewDate;","lastModifiedDate":"2024-02-26"},{"lineNumber":36,"author":{"gitId":"ashleygoh1"},"content":" private InternDuration internDuration;","lastModifiedDate":"2024-02-26"},{"lineNumber":37,"author":{"gitId":"ashleygoh1"},"content":" private Salary salary;","lastModifiedDate":"2024-02-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20"},{"lineNumber":45,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20"},{"lineNumber":47,"author":{"gitId":"ashleygoh1"},"content":" tag \u003d new Tag(DEFAULT_TAG);","lastModifiedDate":"2024-02-26"},{"lineNumber":48,"author":{"gitId":"ashleygoh1"},"content":" jobDescription \u003d new JobDescription(DEFAULT_JOB_DESCRIPTION);","lastModifiedDate":"2024-02-26"},{"lineNumber":49,"author":{"gitId":"ashleygoh1"},"content":" interviewDate \u003d new InterviewDate(DEFAULT_INTERVIEW_DATE);;","lastModifiedDate":"2024-02-26"},{"lineNumber":50,"author":{"gitId":"ashleygoh1"},"content":" internDuration \u003d new InternDuration(DEFAULT_INTERN_DURATION);;","lastModifiedDate":"2024-02-26"},{"lineNumber":51,"author":{"gitId":"ashleygoh1"},"content":" salary \u003d new Salary(DEFAULT_SALARY);;","lastModifiedDate":"2024-02-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10"},{"lineNumber":58,"author":{"gitId":"ashleygoh1"},"content":" name \u003d personToCopy.getCompanyName();","lastModifiedDate":"2024-02-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20"},{"lineNumber":62,"author":{"gitId":"ashleygoh1"},"content":" tag \u003d personToCopy.getTag();","lastModifiedDate":"2024-02-26"},{"lineNumber":63,"author":{"gitId":"ashleygoh1"},"content":" jobDescription \u003d personToCopy.getJobDescription();","lastModifiedDate":"2024-02-26"},{"lineNumber":64,"author":{"gitId":"ashleygoh1"},"content":" interviewDate \u003d personToCopy.getInterviewDate();","lastModifiedDate":"2024-02-26"},{"lineNumber":65,"author":{"gitId":"ashleygoh1"},"content":" internDuration \u003d personToCopy.getInternDuration();","lastModifiedDate":"2024-02-26"},{"lineNumber":66,"author":{"gitId":"ashleygoh1"},"content":" salary \u003d personToCopy.getSalary();","lastModifiedDate":"2024-02-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11"},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":78,"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":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":80,"author":{"gitId":"ashleygoh1"},"content":" public PersonBuilder withTags(String tag) {","lastModifiedDate":"2024-02-26"},{"lineNumber":81,"author":{"gitId":"ashleygoh1"},"content":" this.tag \u003d new Tag(tag);","lastModifiedDate":"2024-02-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20"},{"lineNumber":90,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":95,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":97,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20"},{"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":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":105,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20"},{"lineNumber":106,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":109,"author":{"gitId":"ashleygoh1"},"content":" /**","lastModifiedDate":"2024-02-26"},{"lineNumber":110,"author":{"gitId":"ashleygoh1"},"content":" * Sets the {@code jobDescription} of the {@code Person} that we are building.","lastModifiedDate":"2024-02-26"},{"lineNumber":111,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-26"},{"lineNumber":112,"author":{"gitId":"ashleygoh1"},"content":" public PersonBuilder withJobDescription(String jobDescription) {","lastModifiedDate":"2024-02-26"},{"lineNumber":113,"author":{"gitId":"ashleygoh1"},"content":" this.jobDescription \u003d new JobDescription(jobDescription);","lastModifiedDate":"2024-02-26"},{"lineNumber":114,"author":{"gitId":"ashleygoh1"},"content":" return this;","lastModifiedDate":"2024-02-26"},{"lineNumber":115,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":116,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":117,"author":{"gitId":"ashleygoh1"},"content":" /**","lastModifiedDate":"2024-02-26"},{"lineNumber":118,"author":{"gitId":"ashleygoh1"},"content":" * Sets the {@code interviewDate} of the {@code Person} that we are building.","lastModifiedDate":"2024-02-26"},{"lineNumber":119,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-26"},{"lineNumber":120,"author":{"gitId":"ashleygoh1"},"content":" public PersonBuilder withInterviewDate(String interviewDate) {","lastModifiedDate":"2024-02-26"},{"lineNumber":121,"author":{"gitId":"ashleygoh1"},"content":" this.interviewDate \u003d new InterviewDate(interviewDate);","lastModifiedDate":"2024-02-26"},{"lineNumber":122,"author":{"gitId":"ashleygoh1"},"content":" return this;","lastModifiedDate":"2024-02-26"},{"lineNumber":123,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":124,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":125,"author":{"gitId":"ashleygoh1"},"content":" /**","lastModifiedDate":"2024-02-26"},{"lineNumber":126,"author":{"gitId":"ashleygoh1"},"content":" * Sets the {@code internDuration} of the {@code Person} that we are building.","lastModifiedDate":"2024-02-26"},{"lineNumber":127,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-26"},{"lineNumber":128,"author":{"gitId":"ashleygoh1"},"content":" public PersonBuilder withInternDuration(String internDuration) {","lastModifiedDate":"2024-02-26"},{"lineNumber":129,"author":{"gitId":"ashleygoh1"},"content":" this.internDuration \u003d new InternDuration(internDuration);","lastModifiedDate":"2024-02-26"},{"lineNumber":130,"author":{"gitId":"ashleygoh1"},"content":" return this;","lastModifiedDate":"2024-02-26"},{"lineNumber":131,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":132,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":133,"author":{"gitId":"ashleygoh1"},"content":" /**","lastModifiedDate":"2024-02-26"},{"lineNumber":134,"author":{"gitId":"ashleygoh1"},"content":" * Sets the {@code salary} of the {@code Person} that we are building.","lastModifiedDate":"2024-02-26"},{"lineNumber":135,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-26"},{"lineNumber":136,"author":{"gitId":"ashleygoh1"},"content":" public PersonBuilder withSalary(String salary) {","lastModifiedDate":"2024-02-26"},{"lineNumber":137,"author":{"gitId":"ashleygoh1"},"content":" this.salary \u003d new Salary(salary);","lastModifiedDate":"2024-02-26"},{"lineNumber":138,"author":{"gitId":"ashleygoh1"},"content":" return this;","lastModifiedDate":"2024-02-26"},{"lineNumber":139,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":140,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":141,"author":{"gitId":"ashleygoh1"},"content":" /**","lastModifiedDate":"2024-02-26"},{"lineNumber":142,"author":{"gitId":"ashleygoh1"},"content":" * Build the person","lastModifiedDate":"2024-02-26"},{"lineNumber":143,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-26"},{"lineNumber":144,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05"},{"lineNumber":145,"author":{"gitId":"ashleygoh1"},"content":" return new Person(name, phone, email, address, tag,","lastModifiedDate":"2024-02-26"},{"lineNumber":146,"author":{"gitId":"ashleygoh1"},"content":" jobDescription, interviewDate, internDuration, salary);","lastModifiedDate":"2024-02-26"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":149,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03"}],"authorContributionMap":{"ashleygoh1":65,"-":84}},{"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":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_INTERN_DURATION;","lastModifiedDate":"2024-02-26"},{"lineNumber":6,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_INTERVIEW_DATE;","lastModifiedDate":"2024-02-26"},{"lineNumber":7,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_JOB_DESCRIPTION;","lastModifiedDate":"2024-02-26"},{"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":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SALARY;","lastModifiedDate":"2024-02-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29"},{"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":"ashleygoh1"},"content":" sb.append(PREFIX_NAME + person.getCompanyName().fullName + \" \");","lastModifiedDate":"2024-02-25"},{"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":"ashleygoh1"},"content":" sb.append(PREFIX_TAG + person.getTag().tagName + \" \");","lastModifiedDate":"2024-02-26"},{"lineNumber":38,"author":{"gitId":"ashleygoh1"},"content":" sb.append(PREFIX_JOB_DESCRIPTION + person.getJobDescription().value + \" \");","lastModifiedDate":"2024-02-26"},{"lineNumber":39,"author":{"gitId":"ashleygoh1"},"content":" sb.append(PREFIX_INTERVIEW_DATE + person.getInterviewDate().toString() + \" \");","lastModifiedDate":"2024-02-26"},{"lineNumber":40,"author":{"gitId":"ashleygoh1"},"content":" sb.append(PREFIX_INTERN_DURATION + person.getInternDuration().value + \" \");","lastModifiedDate":"2024-02-26"},{"lineNumber":41,"author":{"gitId":"ashleygoh1"},"content":" sb.append(PREFIX_SALARY + person.getSalary().value);","lastModifiedDate":"2024-02-26"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05"}],"authorContributionMap":{"ashleygoh1":10,"-":34}},{"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":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_INTERN_DURATION_AMY;","lastModifiedDate":"2024-02-26"},{"lineNumber":8,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_INTERN_DURATION_BOB;","lastModifiedDate":"2024-02-26"},{"lineNumber":9,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_INTERVIEW_DATE_AMY;","lastModifiedDate":"2024-02-26"},{"lineNumber":10,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_INTERVIEW_DATE_BOB;","lastModifiedDate":"2024-02-26"},{"lineNumber":11,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_JOB_DESCRIPTION_AMY;","lastModifiedDate":"2024-02-26"},{"lineNumber":12,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_JOB_DESCRIPTION_BOB;","lastModifiedDate":"2024-02-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":17,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SALARY_AMY;","lastModifiedDate":"2024-02-26"},{"lineNumber":18,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SALARY_BOB;","lastModifiedDate":"2024-02-26"},{"lineNumber":19,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_INTERVIEW;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_NO_REPLY;","lastModifiedDate":"2024-02-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final Person ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2018-01-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2018-04-19"},{"lineNumber":36,"author":{"gitId":"ashleygoh1"},"content":" .withEmail(\"alice@example.com\")","lastModifiedDate":"2024-02-26"},{"lineNumber":37,"author":{"gitId":"ashleygoh1"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\")","lastModifiedDate":"2024-02-26"},{"lineNumber":38,"author":{"gitId":"ashleygoh1"},"content":" .withTags(\"NR\")","lastModifiedDate":"2024-02-26"},{"lineNumber":39,"author":{"gitId":"ashleygoh1"},"content":" .withJobDescription(\"Software engineer developer\")","lastModifiedDate":"2024-02-26"},{"lineNumber":40,"author":{"gitId":"ashleygoh1"},"content":" .withInterviewDate(\"03-01-2024 1000\")","lastModifiedDate":"2024-02-26"},{"lineNumber":41,"author":{"gitId":"ashleygoh1"},"content":" .withInternDuration(\"3 months\")","lastModifiedDate":"2024-02-26"},{"lineNumber":42,"author":{"gitId":"ashleygoh1"},"content":" .withSalary(\"1000\").build();","lastModifiedDate":"2024-02-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10"},{"lineNumber":44,"author":{"gitId":"-"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2017-09-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2017-04-05"},{"lineNumber":46,"author":{"gitId":"ashleygoh1"},"content":" .withTags(\"I\")","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"ashleygoh1"},"content":" .withJobDescription(\"Software engineer developer intern\")","lastModifiedDate":"2024-02-26"},{"lineNumber":48,"author":{"gitId":"Jawad280"},"content":" .withInterviewDate(\"03-02-2024 1000\")","lastModifiedDate":"2024-02-29"},{"lineNumber":49,"author":{"gitId":"ashleygoh1"},"content":" .withInternDuration(\"3 months\")","lastModifiedDate":"2024-02-26"},{"lineNumber":50,"author":{"gitId":"ashleygoh1"},"content":" .withSalary(\"1000\").build();","lastModifiedDate":"2024-02-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2018-01-10"},{"lineNumber":52,"author":{"gitId":"ashleygoh1"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\")","lastModifiedDate":"2024-02-26"},{"lineNumber":53,"author":{"gitId":"ashleygoh1"},"content":" .withTags(\"NR\")","lastModifiedDate":"2024-02-26"},{"lineNumber":54,"author":{"gitId":"ashleygoh1"},"content":" .withJobDescription(\"Software engineer developer intern\")","lastModifiedDate":"2024-02-26"},{"lineNumber":55,"author":{"gitId":"Jawad280"},"content":" .withInterviewDate(\"03-03-2024 1000\")","lastModifiedDate":"2024-02-29"},{"lineNumber":56,"author":{"gitId":"ashleygoh1"},"content":" .withInternDuration(\"3 months\")","lastModifiedDate":"2024-02-26"},{"lineNumber":57,"author":{"gitId":"ashleygoh1"},"content":" .withSalary(\"1000\").build();","lastModifiedDate":"2024-02-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2018-01-10"},{"lineNumber":59,"author":{"gitId":"ashleygoh1"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\")","lastModifiedDate":"2024-02-26"},{"lineNumber":60,"author":{"gitId":"ashleygoh1"},"content":" .withTags(\"NR\")","lastModifiedDate":"2024-02-26"},{"lineNumber":61,"author":{"gitId":"ashleygoh1"},"content":" .withJobDescription(\"Front End intern\")","lastModifiedDate":"2024-02-26"},{"lineNumber":62,"author":{"gitId":"Jawad280"},"content":" .withInterviewDate(\"03-04-2024 1000\")","lastModifiedDate":"2024-02-29"},{"lineNumber":63,"author":{"gitId":"ashleygoh1"},"content":" .withInternDuration(\"3 months\")","lastModifiedDate":"2024-02-26"},{"lineNumber":64,"author":{"gitId":"ashleygoh1"},"content":" .withSalary(\"1200\").build();","lastModifiedDate":"2024-02-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2018-01-10"},{"lineNumber":66,"author":{"gitId":"ashleygoh1"},"content":" .withEmail(\"werner@example.com\")","lastModifiedDate":"2024-02-26"},{"lineNumber":67,"author":{"gitId":"ashleygoh1"},"content":" .withTags(\"NR\")","lastModifiedDate":"2024-02-26"},{"lineNumber":68,"author":{"gitId":"ashleygoh1"},"content":" .withJobDescription(\"Software engineer developer intern\")","lastModifiedDate":"2024-02-26"},{"lineNumber":69,"author":{"gitId":"Jawad280"},"content":" .withInterviewDate(\"03-05-2024 1000\")","lastModifiedDate":"2024-02-29"},{"lineNumber":70,"author":{"gitId":"ashleygoh1"},"content":" .withInternDuration(\"3 months\")","lastModifiedDate":"2024-02-26"},{"lineNumber":71,"author":{"gitId":"ashleygoh1"},"content":" .withSalary(\"1000\").build();","lastModifiedDate":"2024-02-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2018-01-10"},{"lineNumber":73,"author":{"gitId":"ashleygoh1"},"content":" .withEmail(\"lydia@example.com\")","lastModifiedDate":"2024-02-26"},{"lineNumber":74,"author":{"gitId":"ashleygoh1"},"content":" .withTags(\"NR\")","lastModifiedDate":"2024-02-26"},{"lineNumber":75,"author":{"gitId":"ashleygoh1"},"content":" .withJobDescription(\"Data science intern\")","lastModifiedDate":"2024-02-26"},{"lineNumber":76,"author":{"gitId":"Jawad280"},"content":" .withInterviewDate(\"03-06-2024 1000\")","lastModifiedDate":"2024-02-29"},{"lineNumber":77,"author":{"gitId":"ashleygoh1"},"content":" .withInternDuration(\"3 months\")","lastModifiedDate":"2024-02-26"},{"lineNumber":78,"author":{"gitId":"ashleygoh1"},"content":" .withSalary(\"1000\").build();","lastModifiedDate":"2024-02-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2018-01-10"},{"lineNumber":80,"author":{"gitId":"ashleygoh1"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\")","lastModifiedDate":"2024-02-26"},{"lineNumber":81,"author":{"gitId":"ashleygoh1"},"content":" .withTags(\"I\")","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"ashleygoh1"},"content":" .withJobDescription(\"Software engineer developer intern\")","lastModifiedDate":"2024-02-26"},{"lineNumber":83,"author":{"gitId":"Jawad280"},"content":" .withInterviewDate(\"03-07-2024 1000\")","lastModifiedDate":"2024-02-29"},{"lineNumber":84,"author":{"gitId":"ashleygoh1"},"content":" .withInternDuration(\"3 months\")","lastModifiedDate":"2024-02-26"},{"lineNumber":85,"author":{"gitId":"ashleygoh1"},"content":" .withSalary(\"1000\").build();","lastModifiedDate":"2024-02-26"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2018-01-10"},{"lineNumber":89,"author":{"gitId":"ashleygoh1"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\")","lastModifiedDate":"2024-02-26"},{"lineNumber":90,"author":{"gitId":"ashleygoh1"},"content":" .withTags(\"I\")","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"ashleygoh1"},"content":" .withJobDescription(\"Software engineer developer intern\")","lastModifiedDate":"2024-02-26"},{"lineNumber":92,"author":{"gitId":"Jawad280"},"content":" .withInterviewDate(\"03-08-2024 1700\")","lastModifiedDate":"2024-02-29"},{"lineNumber":93,"author":{"gitId":"ashleygoh1"},"content":" .withInternDuration(\"3 months\")","lastModifiedDate":"2024-02-26"},{"lineNumber":94,"author":{"gitId":"ashleygoh1"},"content":" .withSalary(\"1000\").build();","lastModifiedDate":"2024-02-26"},{"lineNumber":95,"author":{"gitId":"-"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2018-01-10"},{"lineNumber":96,"author":{"gitId":"ashleygoh1"},"content":" .withEmail(\"hans@example.com\")","lastModifiedDate":"2024-02-26"},{"lineNumber":97,"author":{"gitId":"ashleygoh1"},"content":" .withTags(\"NR\")","lastModifiedDate":"2024-02-26"},{"lineNumber":98,"author":{"gitId":"ashleygoh1"},"content":" .withJobDescription(\"Full Stack intern\")","lastModifiedDate":"2024-02-26"},{"lineNumber":99,"author":{"gitId":"Jawad280"},"content":" .withInterviewDate(\"03-09-2024 1000\")","lastModifiedDate":"2024-02-29"},{"lineNumber":100,"author":{"gitId":"ashleygoh1"},"content":" .withInternDuration(\"3 months\")","lastModifiedDate":"2024-02-26"},{"lineNumber":101,"author":{"gitId":"ashleygoh1"},"content":" .withSalary(\"1000\").build();","lastModifiedDate":"2024-02-26"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":103,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2018-01-10"},{"lineNumber":105,"author":{"gitId":"ashleygoh1"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withTags(VALID_TAG_NO_REPLY)","lastModifiedDate":"2024-02-26"},{"lineNumber":106,"author":{"gitId":"ashleygoh1"},"content":" .withJobDescription(VALID_JOB_DESCRIPTION_AMY).withInterviewDate(VALID_INTERVIEW_DATE_AMY)","lastModifiedDate":"2024-02-26"},{"lineNumber":107,"author":{"gitId":"ashleygoh1"},"content":" .withInternDuration(VALID_INTERN_DURATION_AMY).withSalary(VALID_SALARY_AMY).build();","lastModifiedDate":"2024-02-26"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2018-01-10"},{"lineNumber":109,"author":{"gitId":"ashleygoh1"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_INTERVIEW)","lastModifiedDate":"2024-03-12"},{"lineNumber":110,"author":{"gitId":"ashleygoh1"},"content":" .withJobDescription(VALID_JOB_DESCRIPTION_BOB).withInterviewDate(VALID_INTERVIEW_DATE_BOB)","lastModifiedDate":"2024-02-26"},{"lineNumber":111,"author":{"gitId":"ashleygoh1"},"content":" .withInternDuration(VALID_INTERN_DURATION_BOB).withSalary(VALID_SALARY_BOB).build();","lastModifiedDate":"2024-02-26"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":116,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":117,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05"},{"lineNumber":118,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05"},{"lineNumber":120,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05"},{"lineNumber":121,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10"},{"lineNumber":122,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04"},{"lineNumber":127,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10"},{"lineNumber":128,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04"},{"lineNumber":130,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13"}],"authorContributionMap":{"Jawad280":8,"ashleygoh1":62,"-":60}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"eunrcn"},"content":"# InternHub","lastModifiedDate":"2024-02-25"},{"lineNumber":2,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":3,"author":{"gitId":"ashleygoh1"},"content":"[![CI Status](https://github.com/AY2324S2-CS2103T-F14-1/tp/actions/workflows/gradle.yml/badge.svg)](https://github.com/AY2324S2-CS2103T-F14-1/tp/actions/workflows/gradle.yml)","lastModifiedDate":"2024-03-02"},{"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":"eunrcn"},"content":"## Overview","lastModifiedDate":"2024-02-25"},{"lineNumber":8,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":9,"author":{"gitId":"eunrcn"},"content":"InternHub is a comprehensive project designed to assist Computer Science (CS) students in managing their internship applications. This project serves various purposes:","lastModifiedDate":"2024-02-25"},{"lineNumber":10,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":11,"author":{"gitId":"eunrcn"},"content":"- It can be utilized as a starting point for a course project, offering students a foundation rather than building everything from scratch.","lastModifiedDate":"2024-02-25"},{"lineNumber":12,"author":{"gitId":"eunrcn"},"content":"- It serves as a case study for understanding the development of a desktop application in an Object-Oriented Programming (OOP) fashion.","lastModifiedDate":"2024-02-25"},{"lineNumber":13,"author":{"gitId":"eunrcn"},"content":"- The project provides a well-written code base, surpassing the typical size of beginner-level SE modules (around 6 KLoC) without becoming overwhelming.","lastModifiedDate":"2024-02-25"},{"lineNumber":14,"author":{"gitId":"eunrcn"},"content":"- Extensive user and developer documentation is included to facilitate understanding and usage.","lastModifiedDate":"2024-02-25"},{"lineNumber":15,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":16,"author":{"gitId":"eunrcn"},"content":"## Project Details","lastModifiedDate":"2024-02-25"},{"lineNumber":17,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":18,"author":{"gitId":"eunrcn"},"content":"- **Name:** InternHub","lastModifiedDate":"2024-02-25"},{"lineNumber":19,"author":{"gitId":"eunrcn"},"content":"- **Type:** Desktop Application","lastModifiedDate":"2024-02-25"},{"lineNumber":20,"author":{"gitId":"eunrcn"},"content":"- **Initiative:** Part of the se-education.org initiative","lastModifiedDate":"2024-02-25"},{"lineNumber":21,"author":{"gitId":"eunrcn"},"content":"- **Documentation:** [InternHub Product Website](https://ay2324s2-cs2103t-f14-1.github.io/tp/index.html)","lastModifiedDate":"2024-02-28"},{"lineNumber":22,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":23,"author":{"gitId":"eunrcn"},"content":"## Features","lastModifiedDate":"2024-02-25"},{"lineNumber":24,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":25,"author":{"gitId":"eunrcn"},"content":"InternHub is specifically tailored for CS students, offering the following features:","lastModifiedDate":"2024-02-25"},{"lineNumber":26,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":27,"author":{"gitId":"eunrcn"},"content":"- Organization and optimization of internship application details.","lastModifiedDate":"2024-02-25"},{"lineNumber":28,"author":{"gitId":"eunrcn"},"content":"- Seamless management of contacts, interview dates, internship duration, salary and job description.","lastModifiedDate":"2024-02-28"},{"lineNumber":29,"author":{"gitId":"eunrcn"},"content":"- Editable fields to meet sudden changes in attributes.","lastModifiedDate":"2024-02-28"},{"lineNumber":30,"author":{"gitId":"eunrcn"},"content":"- Tagging system to categorize and track the stages of each interview process.","lastModifiedDate":"2024-02-25"},{"lineNumber":31,"author":{"gitId":"eunrcn"},"content":"- Filtering and sorting capabilities for efficient access to relevant information.","lastModifiedDate":"2024-02-25"},{"lineNumber":32,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":33,"author":{"gitId":"eunrcn"},"content":"## Getting Started","lastModifiedDate":"2024-02-25"},{"lineNumber":34,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":35,"author":{"gitId":"eunrcn"},"content":"For detailed information on using InternHub, refer to our [User Guide](https://ay2324s2-cs2103t-f14-1.github.io/tp/UserGuide.html).","lastModifiedDate":"2024-02-28"},{"lineNumber":36,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":37,"author":{"gitId":"eunrcn"},"content":"## Contributing","lastModifiedDate":"2024-02-25"},{"lineNumber":38,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":39,"author":{"gitId":"ashleygoh1"},"content":"This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-03-02"}],"authorContributionMap":{"eunrcn":34,"ashleygoh1":2,"-":3}},{"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":"ashleygoh1"},"content":"### Ashley Goh","lastModifiedDate":"2024-02-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"ashleygoh1"},"content":"\u003cimg src\u003d\"images/ashleygoh1.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-02-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"ashleygoh1"},"content":"[[github](http://github.com/ashleygoh1)]","lastModifiedDate":"2024-02-27"},{"lineNumber":19,"author":{"gitId":"ashleygoh1"},"content":"[[portfolio](team/ashley.md)]","lastModifiedDate":"2024-02-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"ashleygoh1"},"content":"* Role: Developer","lastModifiedDate":"2024-02-27"},{"lineNumber":22,"author":{"gitId":"ashleygoh1"},"content":"* Responsibilities: Model","lastModifiedDate":"2024-02-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"ashleygoh1"},"content":"### Chai Ming How","lastModifiedDate":"2024-02-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"ashleygoh1"},"content":"\u003cimg src\u003d\"images/minghowc.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"ashleygoh1"},"content":"[[github](http://github.com/minghowC)]","lastModifiedDate":"2024-02-27"},{"lineNumber":29,"author":{"gitId":"ashleygoh1"},"content":"[[portfolio](team/minghow.md)]","lastModifiedDate":"2024-02-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"ashleygoh1"},"content":"* Role: Developer","lastModifiedDate":"2024-02-27"},{"lineNumber":32,"author":{"gitId":"minghowC"},"content":"* Responsibilities: Features Testing","lastModifiedDate":"2024-03-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"ashleygoh1"},"content":"### Chen Yixin","lastModifiedDate":"2024-02-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"Jawad280"},"content":"\u003cimg src\u003d\"images/chenyixin0.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-03"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"ashleygoh1"},"content":"[[github](http://github.com/chenyixin0)]","lastModifiedDate":"2024-02-27"},{"lineNumber":39,"author":{"gitId":"ashleygoh1"},"content":"[[portfolio](team/yixin.md)]","lastModifiedDate":"2024-02-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"ashleygoh1"},"content":"* Responsibilities: Dev Ops + Threading","lastModifiedDate":"2024-02-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"ashleygoh1"},"content":"### Eunice Koh","lastModifiedDate":"2024-02-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"eunrcn"},"content":"\u003cimg src\u003d\"images/eunrcn.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"ashleygoh1"},"content":"[[github](http://github.com/eunrcn)]","lastModifiedDate":"2024-02-27"},{"lineNumber":49,"author":{"gitId":"ashleygoh1"},"content":"[[portfolio](team/eunice.md)]","lastModifiedDate":"2024-02-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":"eunrcn"},"content":"* Responsibilities: Model","lastModifiedDate":"2024-02-28"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"Jawad280"},"content":"### Jawad Afthab","lastModifiedDate":"2024-02-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"Jawad280"},"content":"\u003cimg src\u003d\"images/jawad280.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-02-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"ashleygoh1"},"content":"[[github](http://github.com/Jawad280)]","lastModifiedDate":"2024-02-27"},{"lineNumber":59,"author":{"gitId":"ashleygoh1"},"content":"[[portfolio](team/jawad.md)]","lastModifiedDate":"2024-02-27"},{"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":{"eunrcn":2,"minghowC":1,"Jawad280":3,"ashleygoh1":20,"-":36}},{"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":"ashleygoh1"},"content":"# InternHub Developer Guide","lastModifiedDate":"2024-03-02"},{"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":"-"},"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":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":"-"},"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":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":"-"},"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":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":"-"},"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":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 continues till 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).\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-02-09"},{"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":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12"},{"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":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"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":"2021-07-31"},{"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":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":133,"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":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":135,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"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":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"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":148,"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":149,"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":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","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":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"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":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"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":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"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":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"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":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"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":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"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":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"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":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":191,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"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":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":198,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"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":201,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"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":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":213,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":217,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":219,"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":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":223,"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":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"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":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"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":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":239,"author":{"gitId":"Jawad280"},"content":"### Design considerations:","lastModifiedDate":"2024-03-01"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","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":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":264,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":265,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":266,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":267,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"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":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":277,"author":{"gitId":"ashleygoh1"},"content":"* CS students","lastModifiedDate":"2024-03-02"},{"lineNumber":278,"author":{"gitId":"ashleygoh1"},"content":"* has a need to keep track of contacts of companies and interview dates during thier internship hunt","lastModifiedDate":"2024-03-02"},{"lineNumber":279,"author":{"gitId":"ashleygoh1"},"content":"* prefer a one-stop, centralised dashboard to manage all contact details of companies","lastModifiedDate":"2024-03-02"},{"lineNumber":280,"author":{"gitId":"ashleygoh1"},"content":"* is reasonably comfortable in using a more CLI based app","lastModifiedDate":"2024-03-02"},{"lineNumber":281,"author":{"gitId":"ashleygoh1"},"content":"* wants to be better organized","lastModifiedDate":"2024-03-02"},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":283,"author":{"gitId":"ashleygoh1"},"content":"**Value proposition**: Ultimate companion for Computer Science (CS) students embarking on their internship journey !","lastModifiedDate":"2024-03-02"},{"lineNumber":284,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":285,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":286,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":287,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":288,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":290,"author":{"gitId":"eunrcn"},"content":"| Priority | As an …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2024-03-01"},{"lineNumber":291,"author":{"gitId":"Jawad280"},"content":"|----------|----------------------|---------------------------------------------------------|---------------------------------------------------------------------------------------------------|","lastModifiedDate":"2024-03-01"},{"lineNumber":292,"author":{"gitId":"Jawad280"},"content":"| `* * *` | internship applicant | add contact information of internship companies | easily access their details when needed |","lastModifiedDate":"2024-03-01"},{"lineNumber":293,"author":{"gitId":"Jawad280"},"content":"| `* * *` | internship applicant | delete contact information of internship companies | easily remove any old or irrelevant company contacts |","lastModifiedDate":"2024-03-01"},{"lineNumber":294,"author":{"gitId":"Jawad280"},"content":"| `* * *` | internship applicant | edit contact information of internship companies | easily update any details on the go |","lastModifiedDate":"2024-03-01"},{"lineNumber":295,"author":{"gitId":"Jawad280"},"content":"| `* * *` | internship applicant | see usage instructions | refer to instructions when I forget how to use the AddressBook |","lastModifiedDate":"2024-03-01"},{"lineNumber":296,"author":{"gitId":"Jawad280"},"content":"| `* * *` | internship applicant | find the contact information of a certain company | easily search which company contact I want by name |","lastModifiedDate":"2024-03-01"},{"lineNumber":297,"author":{"gitId":"Jawad280"},"content":"| `* * *` | internship applicant | keep track of the status of each internship application | categorize and easily follow up accordingly |","lastModifiedDate":"2024-03-01"},{"lineNumber":298,"author":{"gitId":"Jawad280"},"content":"| `* * *` | internship applicant | sort company contacts by dates | prioritize and plan for upcoming interviews |","lastModifiedDate":"2024-03-01"},{"lineNumber":299,"author":{"gitId":"Jawad280"},"content":"| `* * ` | internship applicant | filter company contacts by date | quickly access contacts associated with a specific date |","lastModifiedDate":"2024-03-01"},{"lineNumber":300,"author":{"gitId":"Jawad280"},"content":"| `* * ` | internship applicant | filter company contacts by tag | easily find and manage contacts within specific categories |","lastModifiedDate":"2024-03-01"},{"lineNumber":301,"author":{"gitId":"Jawad280"},"content":"| `* * ` | internship applicant | add a time to a company contact | record when a specific task or interaction needs to be done |","lastModifiedDate":"2024-03-01"},{"lineNumber":302,"author":{"gitId":"Jawad280"},"content":"| `* ` | internship applicant | add notes to company contacts | include important details or information about specific interviews and what I can learn from them |","lastModifiedDate":"2024-03-01"},{"lineNumber":303,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":304,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":305,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":306,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":307,"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":308,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":309,"author":{"gitId":"Jawad280"},"content":"**Use Case: Input Company Contact Information**","lastModifiedDate":"2024-03-01"},{"lineNumber":310,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":311,"author":{"gitId":"Jawad280"},"content":"**Actor:** Internship Applicant","lastModifiedDate":"2024-03-01"},{"lineNumber":312,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":313,"author":{"gitId":"Jawad280"},"content":"**Main Success Scenario (MSS):**","lastModifiedDate":"2024-03-01"},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":315,"author":{"gitId":"Jawad280"},"content":"1. Internship Applicant inputs contact information of internship company.","lastModifiedDate":"2024-03-01"},{"lineNumber":316,"author":{"gitId":"Jawad280"},"content":"2. System stores the contact information.","lastModifiedDate":"2024-03-01"},{"lineNumber":317,"author":{"gitId":"Jawad280"},"content":"3. Use case ends.","lastModifiedDate":"2024-03-01"},{"lineNumber":318,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":319,"author":{"gitId":"Jawad280"},"content":"**Extensions:**","lastModifiedDate":"2024-03-01"},{"lineNumber":320,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":321,"author":{"gitId":"Jawad280"},"content":"* 1a. System detects an error in the entered data.","lastModifiedDate":"2024-03-01"},{"lineNumber":322,"author":{"gitId":"Jawad280"},"content":" * 1a1. System requests for the correct data.","lastModifiedDate":"2024-03-01"},{"lineNumber":323,"author":{"gitId":"Jawad280"},"content":" * 1a2. Internship Applicant enters new data.","lastModifiedDate":"2024-03-01"},{"lineNumber":324,"author":{"gitId":"Jawad280"},"content":" * Steps 1a1-1a2 are repeated until the data entered are correct.","lastModifiedDate":"2024-03-01"},{"lineNumber":325,"author":{"gitId":"Jawad280"},"content":" * Use case resumes from step 2.","lastModifiedDate":"2024-03-01"},{"lineNumber":326,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":327,"author":{"gitId":"Jawad280"},"content":"* *a. At any time, Internship Applicant chooses to cancel the input.","lastModifiedDate":"2024-03-01"},{"lineNumber":328,"author":{"gitId":"Jawad280"},"content":" * Use case ends.","lastModifiedDate":"2024-03-01"},{"lineNumber":329,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":330,"author":{"gitId":"Jawad280"},"content":"---","lastModifiedDate":"2024-03-01"},{"lineNumber":331,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":332,"author":{"gitId":"Jawad280"},"content":"**Use Case: Delete Company Contact Information**","lastModifiedDate":"2024-03-01"},{"lineNumber":333,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":334,"author":{"gitId":"Jawad280"},"content":"**Actor:** Internship Applicant","lastModifiedDate":"2024-03-01"},{"lineNumber":335,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":336,"author":{"gitId":"Jawad280"},"content":"**Main Success Scenario (MSS):**","lastModifiedDate":"2024-03-01"},{"lineNumber":337,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":338,"author":{"gitId":"Jawad280"},"content":"1. Internship Applicant inputs index of contact to be deleted.","lastModifiedDate":"2024-03-01"},{"lineNumber":339,"author":{"gitId":"Jawad280"},"content":"2. System deletes the relevant contact information.","lastModifiedDate":"2024-03-01"},{"lineNumber":340,"author":{"gitId":"Jawad280"},"content":"3. Use case ends.","lastModifiedDate":"2024-03-01"},{"lineNumber":341,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":342,"author":{"gitId":"Jawad280"},"content":"**Extensions:**","lastModifiedDate":"2024-03-01"},{"lineNumber":343,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":344,"author":{"gitId":"Jawad280"},"content":"* 1a. System detects an error in index of contact","lastModifiedDate":"2024-03-01"},{"lineNumber":345,"author":{"gitId":"Jawad280"},"content":" * 1a1. System requests for proper input of index (1 to current number of contacts)","lastModifiedDate":"2024-03-01"},{"lineNumber":346,"author":{"gitId":"Jawad280"},"content":" * 1a2. Internship Applicant enters the correct index.","lastModifiedDate":"2024-03-01"},{"lineNumber":347,"author":{"gitId":"Jawad280"},"content":" * Steps 1a1-1a2 are repeated until the selection is correct.","lastModifiedDate":"2024-03-01"},{"lineNumber":348,"author":{"gitId":"Jawad280"},"content":" * Use case resumes from step 2.","lastModifiedDate":"2024-03-01"},{"lineNumber":349,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":350,"author":{"gitId":"Jawad280"},"content":"* *a. At any time, the Internship Applicant chooses to cancel to detect contact.","lastModifiedDate":"2024-03-01"},{"lineNumber":351,"author":{"gitId":"Jawad280"},"content":" * *a1. System cancels deletion of contact.","lastModifiedDate":"2024-03-01"},{"lineNumber":352,"author":{"gitId":"Jawad280"},"content":" * Use case ends.","lastModifiedDate":"2024-03-01"},{"lineNumber":353,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":354,"author":{"gitId":"Jawad280"},"content":"---","lastModifiedDate":"2024-03-01"},{"lineNumber":355,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":356,"author":{"gitId":"Jawad280"},"content":"**Use Case: Edit Contacts Info**","lastModifiedDate":"2024-03-01"},{"lineNumber":357,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":358,"author":{"gitId":"Jawad280"},"content":"**Actor:** Internship Applicant","lastModifiedDate":"2024-03-01"},{"lineNumber":359,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":360,"author":{"gitId":"Jawad280"},"content":"**Main Success Scenario (MSS):**","lastModifiedDate":"2024-03-01"},{"lineNumber":361,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":362,"author":{"gitId":"Jawad280"},"content":"1. Internship Applicant chooses contact to edit by its index and enters relevant fields to be modified","lastModifiedDate":"2024-03-01"},{"lineNumber":363,"author":{"gitId":"Jawad280"},"content":"2. System modifies that corresponding field of that contact","lastModifiedDate":"2024-03-01"},{"lineNumber":364,"author":{"gitId":"Jawad280"},"content":"3. Use case ends","lastModifiedDate":"2024-03-01"},{"lineNumber":365,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":366,"author":{"gitId":"Jawad280"},"content":"**Extensions:**","lastModifiedDate":"2024-03-01"},{"lineNumber":367,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":368,"author":{"gitId":"Jawad280"},"content":"* 1a. System detects an error in index of contact","lastModifiedDate":"2024-03-01"},{"lineNumber":369,"author":{"gitId":"Jawad280"},"content":" * 1a1. System requests for proper input of index (1 to current number of contacts)","lastModifiedDate":"2024-03-01"},{"lineNumber":370,"author":{"gitId":"Jawad280"},"content":" * 1a2. Internship Applicant enters the correct index.","lastModifiedDate":"2024-03-01"},{"lineNumber":371,"author":{"gitId":"Jawad280"},"content":" * Steps 1a1-1a2 are repeated until the selection is correct.","lastModifiedDate":"2024-03-01"},{"lineNumber":372,"author":{"gitId":"Jawad280"},"content":" * Use case resumes from step 2.","lastModifiedDate":"2024-03-01"},{"lineNumber":373,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":374,"author":{"gitId":"Jawad280"},"content":"* 1a. System detects an error in the fields to be edited (No fields at all or incorrect field prefixes)","lastModifiedDate":"2024-03-01"},{"lineNumber":375,"author":{"gitId":"Jawad280"},"content":" * 1a1. System requests for proper input of fields and correct prefix","lastModifiedDate":"2024-03-01"},{"lineNumber":376,"author":{"gitId":"Jawad280"},"content":" * 1a2. Internship Applicant enters the fields to be edited.","lastModifiedDate":"2024-03-01"},{"lineNumber":377,"author":{"gitId":"Jawad280"},"content":" * Steps 1a1-1a2 are repeated until the selection is correct.","lastModifiedDate":"2024-03-01"},{"lineNumber":378,"author":{"gitId":"Jawad280"},"content":" * Use case resumes from step 2.","lastModifiedDate":"2024-03-01"},{"lineNumber":379,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":380,"author":{"gitId":"Jawad280"},"content":"* *a. At any time, the Internship Applicant chooses to cancel to edit contact.","lastModifiedDate":"2024-03-01"},{"lineNumber":381,"author":{"gitId":"Jawad280"},"content":" * *a1. System cancels edit of contact.","lastModifiedDate":"2024-03-01"},{"lineNumber":382,"author":{"gitId":"Jawad280"},"content":" * Use case ends.","lastModifiedDate":"2024-03-01"},{"lineNumber":383,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":384,"author":{"gitId":"Jawad280"},"content":"---","lastModifiedDate":"2024-03-01"},{"lineNumber":385,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":386,"author":{"gitId":"Jawad280"},"content":"**Use Case: Filter Contacts by Tag**","lastModifiedDate":"2024-03-01"},{"lineNumber":387,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":388,"author":{"gitId":"Jawad280"},"content":"**Actor:** Internship Applicant","lastModifiedDate":"2024-03-01"},{"lineNumber":389,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":390,"author":{"gitId":"Jawad280"},"content":"**Main Success Scenario (MSS):**","lastModifiedDate":"2024-03-01"},{"lineNumber":391,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":392,"author":{"gitId":"Jawad280"},"content":"1. Internship Applicant chooses to filter contacts by tag.","lastModifiedDate":"2024-03-01"},{"lineNumber":393,"author":{"gitId":"Jawad280"},"content":"2. Internship Applicant inputs the tag.","lastModifiedDate":"2024-03-01"},{"lineNumber":394,"author":{"gitId":"Jawad280"},"content":"3. System filters the contacts associated with the selected tag.","lastModifiedDate":"2024-03-01"},{"lineNumber":395,"author":{"gitId":"Jawad280"},"content":"4. System displays the filtered contacts.","lastModifiedDate":"2024-03-01"},{"lineNumber":396,"author":{"gitId":"Jawad280"},"content":"5. Use case ends.","lastModifiedDate":"2024-03-01"},{"lineNumber":397,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":398,"author":{"gitId":"Jawad280"},"content":"**Extensions:**","lastModifiedDate":"2024-03-01"},{"lineNumber":399,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":400,"author":{"gitId":"Jawad280"},"content":"* 2a. System detects an error in tag to be filtered","lastModifiedDate":"2024-03-01"},{"lineNumber":401,"author":{"gitId":"Jawad280"},"content":" * 2a1. System requests for proper input of tag (One of existing tags)","lastModifiedDate":"2024-03-01"},{"lineNumber":402,"author":{"gitId":"Jawad280"},"content":" * 2a2. Internship Applicant enters the correct tag.","lastModifiedDate":"2024-03-01"},{"lineNumber":403,"author":{"gitId":"Jawad280"},"content":" * Steps 2a1-2a2 are repeated until the selection is correct.","lastModifiedDate":"2024-03-01"},{"lineNumber":404,"author":{"gitId":"Jawad280"},"content":" * Use case resumes from step 3.","lastModifiedDate":"2024-03-01"},{"lineNumber":405,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":406,"author":{"gitId":"Jawad280"},"content":"* *a. At any time, the Internship Applicant chooses to cancel the filtering.","lastModifiedDate":"2024-03-01"},{"lineNumber":407,"author":{"gitId":"Jawad280"},"content":" * *a1. System cancels the filtering.","lastModifiedDate":"2024-03-01"},{"lineNumber":408,"author":{"gitId":"Jawad280"},"content":" * Use case ends.","lastModifiedDate":"2024-03-01"},{"lineNumber":409,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":410,"author":{"gitId":"Jawad280"},"content":"---","lastModifiedDate":"2024-03-01"},{"lineNumber":411,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":412,"author":{"gitId":"Jawad280"},"content":"**Use Case: View information of a contact**","lastModifiedDate":"2024-03-01"},{"lineNumber":413,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":414,"author":{"gitId":"Jawad280"},"content":"**Actor:** Internship Applicant","lastModifiedDate":"2024-03-01"},{"lineNumber":415,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":416,"author":{"gitId":"Jawad280"},"content":"**Main Success Scenario (MSS):**","lastModifiedDate":"2024-03-01"},{"lineNumber":417,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":418,"author":{"gitId":"Jawad280"},"content":"1. Internship Applicant chooses contact to be viewed on view panel.","lastModifiedDate":"2024-03-01"},{"lineNumber":419,"author":{"gitId":"Jawad280"},"content":"2. System requests for the specific contact index.","lastModifiedDate":"2024-03-01"},{"lineNumber":420,"author":{"gitId":"Jawad280"},"content":"3. Internship Applicant enters the contact index.","lastModifiedDate":"2024-03-01"},{"lineNumber":421,"author":{"gitId":"Jawad280"},"content":"4. System views the relevant contact on the view panel.","lastModifiedDate":"2024-03-01"},{"lineNumber":422,"author":{"gitId":"Jawad280"},"content":"5. Use case ends.","lastModifiedDate":"2024-03-01"},{"lineNumber":423,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":424,"author":{"gitId":"Jawad280"},"content":"**Extensions:**","lastModifiedDate":"2024-03-01"},{"lineNumber":425,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":426,"author":{"gitId":"Jawad280"},"content":"* 3a. IH detects an error in index of contact","lastModifiedDate":"2024-03-01"},{"lineNumber":427,"author":{"gitId":"Jawad280"},"content":" * 3a1. System requests for proper input of index (1 to current number of contacts)","lastModifiedDate":"2024-03-01"},{"lineNumber":428,"author":{"gitId":"Jawad280"},"content":" * 3a2. Internship Applicant enters the correct index.","lastModifiedDate":"2024-03-01"},{"lineNumber":429,"author":{"gitId":"Jawad280"},"content":" * Steps 3a1-3a2 are repeated until the selection is correct.","lastModifiedDate":"2024-03-01"},{"lineNumber":430,"author":{"gitId":"Jawad280"},"content":" * Use case resumes from step 3.","lastModifiedDate":"2024-03-01"},{"lineNumber":431,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":432,"author":{"gitId":"Jawad280"},"content":"* *a. At any time, Internship Applicant chooses to cancel to view contact.","lastModifiedDate":"2024-03-01"},{"lineNumber":433,"author":{"gitId":"Jawad280"},"content":" * *a1. System cancels viewing of contact.","lastModifiedDate":"2024-03-01"},{"lineNumber":434,"author":{"gitId":"Jawad280"},"content":" * Use case ends.","lastModifiedDate":"2024-03-01"},{"lineNumber":435,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":436,"author":{"gitId":"Jawad280"},"content":"---","lastModifiedDate":"2024-03-01"},{"lineNumber":437,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":438,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":439,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":440,"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":441,"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":442,"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":443,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":444,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":445,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":446,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09"},{"lineNumber":447,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23"},{"lineNumber":448,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":449,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":450,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":451,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":452,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":453,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":454,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":455,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":456,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12"},{"lineNumber":457,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":458,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":459,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":460,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":461,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":462,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":463,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":464,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":465,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":466,"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":467,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":468,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":469,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":470,"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":471,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":472,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":473,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":474,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":475,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":476,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":477,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":478,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":479,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":480,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":481,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":482,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":483,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":484,"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":485,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":486,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":487,"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":488,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":489,"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":490,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":491,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":492,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":493,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":494,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":495,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":496,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":497,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":498,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":499,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":500,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"eunrcn":1,"Jawad280":120,"ashleygoh1":7,"-":372}},{"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":"eunrcn"},"content":"# Internhub User Guide","lastModifiedDate":"2024-02-28"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":"Intern Hub is a **desktop app for managing contacts, optimized for use via a Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, InternHub can get your contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2024-03-01"},{"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":"eunrcn"},"content":"1. Download the latest `internhub.jar` from [here](https://github.com/se-edu/addressbook-level3/releases).","lastModifiedDate":"2024-02-28"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your AddressBook.","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"eunrcn"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar internhub.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":25,"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":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":"-"},"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":29,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"ashleygoh1"},"content":" * `add c/Food Panda p/12345678 e/panda@food.com a/CBD t/F jd/Front End Intern d/15-04-2024 0900 id/6 months s/500","lastModifiedDate":"2024-02-27"},{"lineNumber":34,"author":{"gitId":"ashleygoh1"},"content":" ` : Adds a contact named `Food Panda` to the Address Book.","lastModifiedDate":"2024-02-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2023-01-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"**Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"ashleygoh1"},"content":" e.g. in `add c/COMPANY_NAME`, `COMPANY_NAME` is a parameter which can be used as `add c/Food Panda`.","lastModifiedDate":"2024-02-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"ashleygoh1"},"content":" e.g `c/COMPANY_NAME [a/ADDRESS]` can be used as `c/Food Panda a/CBD` or as `c/Food Panda`.","lastModifiedDate":"2024-02-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"ashleygoh1"},"content":" e.g. if the command specifies `add c/COMPANY_NAME p/PHONE_NUMBER`, `p/PHONE_NUMBER add c/COMPANY_NAME` is also acceptable.","lastModifiedDate":"2024-02-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"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":62,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":64,"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":65,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"Jawad280"},"content":"### Adding a contact: `add`","lastModifiedDate":"2024-03-01"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"Jawad280"},"content":"Adds a contact to the address book.","lastModifiedDate":"2024-03-01"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"ashleygoh1"},"content":"Format: `add c/COMPANY_NAME p/PHONE_NUMBER e/EMAIL a/[ADDRESS] t/TAG jd/JOB_DESCRIPTION d/[INTERVIEW_DATE] id/INTERN_DURATION s/salary`","lastModifiedDate":"2024-02-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":84,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"ashleygoh1"},"content":"* `add c/FoodPanda p/12345678 e/panda@food.com a/CBD t/F jd/Front End Intern d/15-04-2024 0900 id/6 months s/500`","lastModifiedDate":"2024-02-27"},{"lineNumber":88,"author":{"gitId":"ashleygoh1"},"content":"* `add c/Shoppa p/99912345 e/panda@food.com t/F jd/Software Developer Intern id/6 months s/500`","lastModifiedDate":"2024-02-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"Jawad280"},"content":"### Listing all contacts : `list`","lastModifiedDate":"2024-03-01"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"Jawad280"},"content":"Shows a list of all contacts in the address book sorted in ascending order of interview dates. If a company contact does not have any interview dates yet, it will be pushed to the end of the list.","lastModifiedDate":"2024-03-01"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"Jawad280"},"content":"### Viewing a contact : `view`","lastModifiedDate":"2024-03-02"},{"lineNumber":97,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":98,"author":{"gitId":"Jawad280"},"content":"Views the details of the contact on the view panel in address book.","lastModifiedDate":"2024-03-02"},{"lineNumber":99,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":100,"author":{"gitId":"Jawad280"},"content":"Format: `View INDEX`","lastModifiedDate":"2024-03-02"},{"lineNumber":101,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":102,"author":{"gitId":"Jawad280"},"content":"* Views the contact at the specified `INDEX`. The index refers to the index number shown in the displayed contact list. The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-03-02"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":104,"author":{"gitId":"Jawad280"},"content":"Example:","lastModifiedDate":"2024-03-02"},{"lineNumber":105,"author":{"gitId":"Jawad280"},"content":"* `view 3` Shows the company name of the 3rd contact on the view panel.","lastModifiedDate":"2024-03-02"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":107,"author":{"gitId":"Jawad280"},"content":"### Editing a contact : `edit`","lastModifiedDate":"2024-03-01"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"Jawad280"},"content":"Edits an existing contact detail in the address book.","lastModifiedDate":"2024-03-01"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"Jawad280"},"content":"Format: `Edit INDEX c/[COMPANY_NAME] p/[PHONE_NUMBER] e/[EMAIL] a/[ADDRESS] t/[TAG] jd/[JOB_DESCRIPTION] d/[INTERVIEW_DATE] id/[INTERN_DURATION] s/[salary]`","lastModifiedDate":"2024-03-01"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"Jawad280"},"content":"* Edits the contact at the specified `INDEX`. The index refers to the index number shown in the displayed contact list. The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-03-01"},{"lineNumber":114,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"Jawad280"},"content":"* For `[INTERVIEW_DATE]`, if you want to remove a date, just enter `d/` and it will remove that field.","lastModifiedDate":"2024-03-01"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":118,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"Jawad280"},"content":"* `edit 1 p/91234567 e/foodpanda@example.com` Edits the phone number and email address of the 1st contact to be `91234567` and `foodpanda@example.com` respectively.","lastModifiedDate":"2024-03-01"},{"lineNumber":120,"author":{"gitId":"Jawad280"},"content":"* `edit 2 c/shopee` Edits the company name of the 2nd contact to be `shopee`.","lastModifiedDate":"2024-03-01"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"Jawad280"},"content":"### Locating contacts by name: `find`","lastModifiedDate":"2024-03-01"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"Jawad280"},"content":"Finds contacts whose names contain any of the given keywords.","lastModifiedDate":"2024-03-01"},{"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":"chenyixin0"},"content":"* The search is case-insensitive. e.g `shoppa` will match `Shoppa`","lastModifiedDate":"2024-02-29"},{"lineNumber":129,"author":{"gitId":"chenyixin0"},"content":"* The order of the keywords does not matter. e.g. `Food Panda` will match `Panda Food`","lastModifiedDate":"2024-02-29"},{"lineNumber":130,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"chenyixin0"},"content":"* Only full words will be matched e.g. `Shopp` will not match `Shoppa`","lastModifiedDate":"2024-02-29"},{"lineNumber":132,"author":{"gitId":"Jawad280"},"content":"* Contacts matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2024-03-01"},{"lineNumber":133,"author":{"gitId":"Jawad280"},"content":" e.g. `Happy Burger` will return `Happy Meal`, `Burger Queen`","lastModifiedDate":"2024-03-01"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"Jawad280"},"content":"* `find Happy` returns `happy` and `Happy Burger`","lastModifiedDate":"2024-03-01"},{"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":"Jawad280"},"content":"### Deleting a contact : `delete`","lastModifiedDate":"2024-03-01"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"Jawad280"},"content":"Deletes the specified contact from the address book.","lastModifiedDate":"2024-03-01"},{"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":"Jawad280"},"content":"* Deletes the contact at the specified `INDEX`.","lastModifiedDate":"2024-03-01"},{"lineNumber":147,"author":{"gitId":"Jawad280"},"content":"* The index refers to the index number shown in the displayed contact list.","lastModifiedDate":"2024-03-01"},{"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":"Jawad280"},"content":"* `list` followed by `delete 2` deletes the 2nd contact in the address book.","lastModifiedDate":"2024-03-01"},{"lineNumber":152,"author":{"gitId":"Jawad280"},"content":"* `find Betsy` followed by `delete 1` deletes the 1st contact in the results of the `find` command.","lastModifiedDate":"2024-03-01"},{"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":"-"},"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":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":"-"},"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":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":174,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":176,"author":{"gitId":"-"},"content":"**Caution:**","lastModifiedDate":"2023-09-12"},{"lineNumber":177,"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.\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":178,"author":{"gitId":"-"},"content":"Furthermore, certain edits can cause the AddressBook to behave in unexpected ways (e.g., if a value entered is outside the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.","lastModifiedDate":"2023-09-12"},{"lineNumber":179,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":180,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":182,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"chenyixin0"},"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 InternHub home folder.","lastModifiedDate":"2024-02-29"},{"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":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":197,"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":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":199,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":201,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"Jawad280"},"content":"| Action | Format, Examples |","lastModifiedDate":"2024-03-01"},{"lineNumber":204,"author":{"gitId":"Jawad280"},"content":"|------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|","lastModifiedDate":"2024-03-01"},{"lineNumber":205,"author":{"gitId":"Jawad280"},"content":"| **Add** | `add c/COMPANY_NAME p/PHONE_NUMBER e/EMAIL a/[ADDRESS] t/TAG jd/JOB_DESCRIPTION d/[INTERVIEW_DATE] id/INTERN_DURATION s/salary` \u003cbr\u003e e.g., `add c/FoodPanda p/12345678 e/panda@food.com a/CBD t/F jd/Front End Intern d/15-04-2024 0900 id/6 months s/500` |","lastModifiedDate":"2024-03-01"},{"lineNumber":206,"author":{"gitId":"Jawad280"},"content":"| **Clear** | `clear` |","lastModifiedDate":"2024-03-01"},{"lineNumber":207,"author":{"gitId":"Jawad280"},"content":"| **Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3` |","lastModifiedDate":"2024-03-01"},{"lineNumber":208,"author":{"gitId":"Jawad280"},"content":"| **Edit** | `Edit INDEX c/[COMPANY_NAME] p/[PHONE_NUMBER] e/[EMAIL] a/[ADDRESS] t/[TAG] jd/[JOB_DESCRIPTION] d/[INTERVIEW_DATE] id/[INTERN_DURATION] s/[salary]`\u003cbr\u003e e.g.,`Edit 2 p/9998765` |","lastModifiedDate":"2024-03-01"},{"lineNumber":209,"author":{"gitId":"Jawad280"},"content":"| **Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find foodpanda` |","lastModifiedDate":"2024-03-01"},{"lineNumber":210,"author":{"gitId":"Jawad280"},"content":"| **List** | `list` |","lastModifiedDate":"2024-03-01"},{"lineNumber":211,"author":{"gitId":"Jawad280"},"content":"| **View** | `view INDEX`\u003cbr\u003e e.g., `view 3` |","lastModifiedDate":"2024-03-02"},{"lineNumber":212,"author":{"gitId":"Jawad280"},"content":"| **Help** | `help` |","lastModifiedDate":"2024-03-01"}],"authorContributionMap":{"eunrcn":3,"chenyixin0":4,"Jawad280":43,"ashleygoh1":8,"-":154}},{"path":"docs/_markbind/layouts/default.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003chead-bottom\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003clink rel\u003d\"stylesheet\" href\u003d\"{{baseUrl}}/stylesheets/main.css\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c/head-bottom\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003cheader sticky\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cnavbar type\u003d\"dark\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"ashleygoh1"},"content":" \u003ca slot\u003d\"brand\" href\u003d\"{{baseUrl}}/index.html\" title\u003d\"Home\" class\u003d\"navbar-brand\"\u003eInternHub\u003c/a\u003e","lastModifiedDate":"2024-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/index.html\" class\u003d\"nav-link\"\u003eHome\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/UserGuide.html\" class\u003d\"nav-link\"\u003eUser Guide\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/DeveloperGuide.html\" class\u003d\"nav-link\"\u003eDeveloper Guide\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/AboutUs.html\" class\u003d\"nav-link\"\u003eAbout Us\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"https://github.com/se-edu/addressbook-level3\" target\u003d\"_blank\" class\u003d\"nav-link\"\u003e\u003cmd\u003e:fab-github:\u003c/md\u003e\u003c/a\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cli slot\u003d\"right\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cform class\u003d\"navbar-form\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003csearchbar :data\u003d\"searchData\" placeholder\u003d\"Search\" :on-hit\u003d\"searchCallback\" menu-align-right\u003e\u003c/searchbar\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/form\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/navbar\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"\u003c/header\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"flex-body\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"site-nav\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"site-nav-top\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"fw-bold mb-2\" style\u003d\"font-size: 1.25rem;\"\u003eSite Map\u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003csite-nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"* [Home]({{ baseUrl }}/index.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"* [User Guide]({{ baseUrl }}/UserGuide.html) :expanded:","lastModifiedDate":"2023-09-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * [Quick Start]({{ baseUrl }}/UserGuide.html#quick-start)","lastModifiedDate":"2023-09-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * [Features]({{ baseUrl }}/UserGuide.html#features)","lastModifiedDate":"2023-09-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * [FAQ]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * [Command Summary]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":"* [Developer Guide]({{ baseUrl }}/DeveloperGuide.html) :expanded:","lastModifiedDate":"2023-09-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * [Acknowledgements]({{ baseUrl }}/DeveloperGuide.html#acknowledgements)","lastModifiedDate":"2023-09-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * [Setting Up]({{ baseUrl }}/DeveloperGuide.html#setting-up-getting-started)","lastModifiedDate":"2023-09-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * [Design]({{ baseUrl }}/DeveloperGuide.html#design)","lastModifiedDate":"2023-09-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * [Implementation]({{ baseUrl }}/DeveloperGuide.html#implementation)","lastModifiedDate":"2023-09-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * [Documentation, logging, testing, configuration, dev-ops]({{ baseUrl }}/DeveloperGuide.html#documentation-logging-testing-configuration-dev-ops)","lastModifiedDate":"2023-09-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * [Appendix: Requirements]({{ baseUrl }}/DeveloperGuide.html#appendix-requirements)","lastModifiedDate":"2023-09-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * [Appendix: Instructions for manual testing]({{ baseUrl }}/DeveloperGuide.html#appendix-instructions-for-manual-testing)","lastModifiedDate":"2023-09-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":"* Tutorials","lastModifiedDate":"2023-09-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * [Tracing code]({{ baseUrl }}/tutorials/TracingCode.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * [Adding a command]({{ baseUrl }}/tutorials/AddRemark.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * [Removing Fields]({{ baseUrl }}/tutorials/RemovingFields.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [About Us]({{ baseUrl }}/AboutUs.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/site-nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cdiv id\u003d\"content-wrapper\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" {{ content }}","lastModifiedDate":"2023-09-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"page-nav\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cpage-nav /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003cscroll-top-button\u003e\u003c/scroll-top-button\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":"\u003cfooter\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003c!-- Support MarkBind by including a link to us on your landing page! --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"text-center\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u003csmall\u003e[\u003cmd\u003e**Powered by**\u003c/md\u003e \u003cimg src\u003d\"https://markbind.org/favicon.ico\" width\u003d\"30\"\u003e {{MarkBind}}, generated on {{timestamp}}]\u003c/small\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003c/footer\u003e","lastModifiedDate":"2023-09-12"}],"authorContributionMap":{"ashleygoh1":1,"-":66}},{"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":"-"},"content":"AddressBook *-right-\u003e \"1\" UniquePersonList","lastModifiedDate":"2019-07-30"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"UniquePersonList -right-\u003e Person","lastModifiedDate":"2021-07-31"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"Person *--\u003e Name","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"Person *--\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"Person *--\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"Person *--\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"eunrcn"},"content":"Person *--\u003e Tag","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"eunrcn"},"content":"Person *--\u003e InternDuration","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"eunrcn"},"content":"Person *--\u003e InterviewDate","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"eunrcn"},"content":"Person *--\u003e JobDescription","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"eunrcn"},"content":"Person *--\u003e Salary","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"eunrcn":5,"-":15}},{"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":"-"},"content":"Class UniquePersonList","lastModifiedDate":"2021-07-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Class Person","lastModifiedDate":"2019-07-03"},{"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":"eunrcn"},"content":"Class CompanyName","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Class Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"Class Tag","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"eunrcn"},"content":"Class InternDuration","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"eunrcn"},"content":"Class InterviewDate","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"eunrcn"},"content":"Class JobDescription","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"eunrcn"},"content":"Class Salary","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":27,"author":{"gitId":"-"},"content":"Class I #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"AddressBook .up.|\u003e ReadOnlyAddressBook","lastModifiedDate":"2019-07-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"ModelManager .up.|\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":36,"author":{"gitId":"-"},"content":"Model .right.\u003e ReadOnlyUserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"Model .left.\u003e ReadOnlyAddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"ModelManager -left-\u003e \"1\" AddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":39,"author":{"gitId":"-"},"content":"ModelManager -right-\u003e \"1\" UserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":40,"author":{"gitId":"-"},"content":"UserPrefs .up.|\u003e ReadOnlyUserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"AddressBook *--\u003e \"1\" UniquePersonList","lastModifiedDate":"2019-07-30"},{"lineNumber":43,"author":{"gitId":"-"},"content":"UniquePersonList --\u003e \"~* all\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":44,"author":{"gitId":"eunrcn"},"content":"Person *--\u003e CompanyName","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":"Person *--\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"Person *--\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":47,"author":{"gitId":"-"},"content":"Person *--\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":48,"author":{"gitId":"eunrcn"},"content":"Person *--\u003e Tag","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"eunrcn"},"content":"Person *--\u003e InternDuration","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"eunrcn"},"content":"Person *--\u003e InterviewDate","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"eunrcn"},"content":"Person *--\u003e JobDescription","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"eunrcn"},"content":"Person *--\u003e Salary","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":54,"author":{"gitId":"-"},"content":"Person -[hidden]up--\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"UniquePersonList -[hidden]right-\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":57,"author":{"gitId":"eunrcn"},"content":"CompanyName -[hidden]right-\u003e Phone","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"-"},"content":"Phone -[hidden]right-\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":"Address -[hidden]right-\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":61,"author":{"gitId":"-"},"content":"ModelManager --\u003e \"~* filtered\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":62,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"eunrcn":12,"-":50}},{"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":"-"},"content":"Class PersonListPanel","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"Class PersonCard","lastModifiedDate":"2019-07-03"},{"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":"Jawad280"},"content":"Class ViewPanel","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"package Model \u003c\u003cRectangle\u003e\u003e {","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Class HiddenModel #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":"package Logic \u003c\u003cRectangle\u003e\u003e {","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"Class HiddenLogic #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Ui","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"UiManager .left.|\u003e Ui","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"UiManager -down-\u003e \"1\" MainWindow","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" CommandBox","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" ResultDisplay","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" PersonListPanel","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" StatusBarFooter","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"MainWindow --\u003e \"0..1\" HelpWindow","lastModifiedDate":"2021-07-31"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":"PersonListPanel -down-\u003e \"*\" PersonCard","lastModifiedDate":"2021-07-31"},{"lineNumber":41,"author":{"gitId":"Jawad280"},"content":"PersonListPanel -down-\u003e \"1\" ViewPanel","lastModifiedDate":"2024-03-22"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"MainWindow -left-|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"ResultDisplay --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"CommandBox --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":47,"author":{"gitId":"-"},"content":"PersonListPanel --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":48,"author":{"gitId":"-"},"content":"PersonCard --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":49,"author":{"gitId":"Jawad280"},"content":"ViewPanel --|\u003e UiPart","lastModifiedDate":"2024-03-22"},{"lineNumber":50,"author":{"gitId":"-"},"content":"StatusBarFooter --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"HelpWindow --|\u003e UiPart","lastModifiedDate":"2021-07-31"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":53,"author":{"gitId":"-"},"content":"PersonCard ..\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":54,"author":{"gitId":"Jawad280"},"content":"ViewPanel ..\u003e Model","lastModifiedDate":"2024-03-22"},{"lineNumber":55,"author":{"gitId":"-"},"content":"UiManager -right-\u003e Logic","lastModifiedDate":"2019-07-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":"MainWindow -left-\u003e Logic","lastModifiedDate":"2019-07-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":58,"author":{"gitId":"-"},"content":"PersonListPanel -[hidden]left- HelpWindow","lastModifiedDate":"2019-07-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":"HelpWindow -[hidden]left- CommandBox","lastModifiedDate":"2019-07-03"},{"lineNumber":60,"author":{"gitId":"-"},"content":"CommandBox -[hidden]left- ResultDisplay","lastModifiedDate":"2019-07-03"},{"lineNumber":61,"author":{"gitId":"-"},"content":"ResultDisplay -[hidden]left- StatusBarFooter","lastModifiedDate":"2019-07-30"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":63,"author":{"gitId":"-"},"content":"MainWindow -[hidden]-|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":64,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"Jawad280":4,"-":60}},{"path":"docs/team/ashley.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"ashleygoh1"},"content":"---","lastModifiedDate":"2024-02-27"},{"lineNumber":2,"author":{"gitId":"ashleygoh1"},"content":" layout: default.md","lastModifiedDate":"2024-02-27"},{"lineNumber":3,"author":{"gitId":"ashleygoh1"},"content":" title: \"John Doe\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-02-27"},{"lineNumber":4,"author":{"gitId":"ashleygoh1"},"content":"---","lastModifiedDate":"2024-02-27"},{"lineNumber":5,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":6,"author":{"gitId":"ashleygoh1"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-02-27"},{"lineNumber":7,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":8,"author":{"gitId":"ashleygoh1"},"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":"2024-02-27"},{"lineNumber":9,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":10,"author":{"gitId":"ashleygoh1"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-02-27"},{"lineNumber":11,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":12,"author":{"gitId":"ashleygoh1"},"content":"* **New Feature**: Allow user to add new contact to the address book.","lastModifiedDate":"2024-02-27"},{"lineNumber":13,"author":{"gitId":"ashleygoh1"},"content":" * What it does: Allow user to add the internship information that they applied for","lastModifiedDate":"2024-02-27"},{"lineNumber":14,"author":{"gitId":"ashleygoh1"},"content":" * Justification: This feature allow users to conveniently store all relevant internship details in one centralized location alongside their other contacts. This helps them stay organized and easily access internship information when needed.","lastModifiedDate":"2024-02-27"},{"lineNumber":15,"author":{"gitId":"ashleygoh1"},"content":" * Credits: The feature builds upon the robust foundation of AB3, optimizing code to accommodate new parameters.","lastModifiedDate":"2024-02-27"},{"lineNumber":16,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":17,"author":{"gitId":"ashleygoh1"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-02-27"},{"lineNumber":18,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":19,"author":{"gitId":"ashleygoh1"},"content":"* **Project management**:","lastModifiedDate":"2024-02-27"},{"lineNumber":20,"author":{"gitId":"ashleygoh1"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-02-27"},{"lineNumber":21,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":22,"author":{"gitId":"ashleygoh1"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-02-27"},{"lineNumber":23,"author":{"gitId":"ashleygoh1"},"content":" * Update existing tests for existing features with coverage of 78.57% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-02-27"},{"lineNumber":24,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":25,"author":{"gitId":"ashleygoh1"},"content":"* **Documentation**:","lastModifiedDate":"2024-02-27"},{"lineNumber":26,"author":{"gitId":"ashleygoh1"},"content":" * User Guide:","lastModifiedDate":"2024-02-27"},{"lineNumber":27,"author":{"gitId":"ashleygoh1"},"content":" * Added documentation for the features `add` and `edit` [\\#72]()","lastModifiedDate":"2024-02-27"},{"lineNumber":28,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":29,"author":{"gitId":"ashleygoh1"},"content":"* **Community**:","lastModifiedDate":"2024-02-27"},{"lineNumber":30,"author":{"gitId":"ashleygoh1"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-02-27"},{"lineNumber":31,"author":{"gitId":"ashleygoh1"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-02-27"},{"lineNumber":32,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":33,"author":{"gitId":"ashleygoh1"},"content":"* **Tools**:","lastModifiedDate":"2024-02-27"},{"lineNumber":34,"author":{"gitId":"ashleygoh1"},"content":" * Set up codecov to the team repo","lastModifiedDate":"2024-02-27"},{"lineNumber":35,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":36,"author":{"gitId":"ashleygoh1"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-02-27"}],"authorContributionMap":{"ashleygoh1":36}},{"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":"ashleygoh1"},"content":" builder.append(person.getCompanyName())","lastModifiedDate":"2024-02-25"},{"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":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"ashleygoh1"},"content":" .append(\"; Tags: \")","lastModifiedDate":"2024-02-25"},{"lineNumber":47,"author":{"gitId":"ashleygoh1"},"content":" .append(person.getTag())","lastModifiedDate":"2024-02-25"},{"lineNumber":48,"author":{"gitId":"ashleygoh1"},"content":" .append(\"; Job Description: \")","lastModifiedDate":"2024-02-25"},{"lineNumber":49,"author":{"gitId":"ashleygoh1"},"content":" .append(person.getJobDescription())","lastModifiedDate":"2024-02-25"},{"lineNumber":50,"author":{"gitId":"ashleygoh1"},"content":" .append(\"; Interview Date: \")","lastModifiedDate":"2024-02-25"},{"lineNumber":51,"author":{"gitId":"ashleygoh1"},"content":" .append(person.getInterviewDate())","lastModifiedDate":"2024-02-25"},{"lineNumber":52,"author":{"gitId":"ashleygoh1"},"content":" .append(\"; Internship Duration: \")","lastModifiedDate":"2024-02-25"},{"lineNumber":53,"author":{"gitId":"ashleygoh1"},"content":" .append(person.getInternDuration())","lastModifiedDate":"2024-02-25"},{"lineNumber":54,"author":{"gitId":"ashleygoh1"},"content":" .append(\"; Salary: \")","lastModifiedDate":"2024-02-25"},{"lineNumber":55,"author":{"gitId":"ashleygoh1"},"content":" .append(person.getSalary());","lastModifiedDate":"2024-02-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"ashleygoh1":11,"-":48}},{"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":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_INTERN_DURATION;","lastModifiedDate":"2024-02-26"},{"lineNumber":7,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_INTERVIEW_DATE;","lastModifiedDate":"2024-02-26"},{"lineNumber":8,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_JOB_DESCRIPTION;","lastModifiedDate":"2024-02-26"},{"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-05-09"},{"lineNumber":11,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SALARY;","lastModifiedDate":"2024-02-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"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":"-"},"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":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a person to the address book. \"","lastModifiedDate":"2016-08-24"},{"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":"ashleygoh1"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2024-02-26"},{"lineNumber":33,"author":{"gitId":"ashleygoh1"},"content":" + PREFIX_TAG + \"TAG \"","lastModifiedDate":"2024-02-26"},{"lineNumber":34,"author":{"gitId":"ashleygoh1"},"content":" + PREFIX_JOB_DESCRIPTION + \"JOB DESCRIPTION \"","lastModifiedDate":"2024-02-26"},{"lineNumber":35,"author":{"gitId":"ashleygoh1"},"content":" + \"[\" + PREFIX_INTERVIEW_DATE + \"INTERVIEW DATE] \"","lastModifiedDate":"2024-02-26"},{"lineNumber":36,"author":{"gitId":"ashleygoh1"},"content":" + PREFIX_INTERN_DURATION + \"INTERN DURATION \"","lastModifiedDate":"2024-02-26"},{"lineNumber":37,"author":{"gitId":"ashleygoh1"},"content":" + PREFIX_SALARY + \"SALARY\\n\"","lastModifiedDate":"2024-02-26"},{"lineNumber":38,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":39,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06"},{"lineNumber":40,"author":{"gitId":"ashleygoh1"},"content":" + PREFIX_NAME + \"Happy Burger \"","lastModifiedDate":"2024-02-26"},{"lineNumber":41,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":42,"author":{"gitId":"ashleygoh1"},"content":" + PREFIX_EMAIL + \"HappyBurger@example.com \"","lastModifiedDate":"2024-02-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":44,"author":{"gitId":"ashleygoh1"},"content":" + PREFIX_TAG + \"I \"","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"ashleygoh1"},"content":" + PREFIX_JOB_DESCRIPTION + \"Software Developer intern \"","lastModifiedDate":"2024-02-26"},{"lineNumber":46,"author":{"gitId":"eunrcn"},"content":" + PREFIX_INTERVIEW_DATE + \"03-03-2024 1200 \"","lastModifiedDate":"2024-02-28"},{"lineNumber":47,"author":{"gitId":"ashleygoh1"},"content":" + PREFIX_INTERN_DURATION + \"3 months \"","lastModifiedDate":"2024-02-26"},{"lineNumber":48,"author":{"gitId":"ashleygoh1"},"content":" + PREFIX_SALARY + \"1000\";","lastModifiedDate":"2024-02-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: %1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book\";","lastModifiedDate":"2016-08-24"},{"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":{"eunrcn":1,"ashleygoh1":17,"-":78}},{"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":"chenyixin0"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2024-02-29"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-02-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Represents the result of a command execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class CommandResult {","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":16,"author":{"gitId":"-"},"content":" private final String feedbackToUser;","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" /** Help information should be shown to the user. */","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private final boolean showHelp;","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /** The application should exit. */","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final boolean exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":23,"author":{"gitId":"Jawad280"},"content":" private final Person viewPerson;","lastModifiedDate":"2024-02-26"},{"lineNumber":24,"author":{"gitId":"chenyixin0"},"content":" private final FilteredList\u003cPerson\u003e viewList;","lastModifiedDate":"2024-02-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Constructs a {@code CommandResult} with the specified fields.","lastModifiedDate":"2018-12-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public CommandResult(String feedbackToUser, boolean showHelp, boolean exit) {","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"-"},"content":" this.feedbackToUser \u003d requireNonNull(feedbackToUser);","lastModifiedDate":"2017-05-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":" this.showHelp \u003d showHelp;","lastModifiedDate":"2018-12-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.exit \u003d exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":33,"author":{"gitId":"Jawad280"},"content":" this.viewPerson \u003d null;","lastModifiedDate":"2024-02-26"},{"lineNumber":34,"author":{"gitId":"chenyixin0"},"content":" this.viewList \u003d null;","lastModifiedDate":"2024-02-29"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Constructs a {@code CommandResult} with the specified {@code feedbackToUser},","lastModifiedDate":"2018-12-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * and other fields set to their default value.","lastModifiedDate":"2018-12-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public CommandResult(String feedbackToUser) {","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this(feedbackToUser, false, false);","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":45,"author":{"gitId":"Jawad280"},"content":" /**","lastModifiedDate":"2024-02-26"},{"lineNumber":46,"author":{"gitId":"Jawad280"},"content":" * Constructs a {@code CommandResult} with the specified {@code feedbackToUser},","lastModifiedDate":"2024-02-26"},{"lineNumber":47,"author":{"gitId":"Jawad280"},"content":" * and other fields set to their default value.","lastModifiedDate":"2024-02-26"},{"lineNumber":48,"author":{"gitId":"Jawad280"},"content":" */","lastModifiedDate":"2024-02-26"},{"lineNumber":49,"author":{"gitId":"Jawad280"},"content":" public CommandResult(String feedbackToUser, Person viewPerson) {","lastModifiedDate":"2024-02-26"},{"lineNumber":50,"author":{"gitId":"Jawad280"},"content":" this.feedbackToUser \u003d requireNonNull(feedbackToUser);","lastModifiedDate":"2024-02-26"},{"lineNumber":51,"author":{"gitId":"Jawad280"},"content":" this.showHelp \u003d false;","lastModifiedDate":"2024-02-26"},{"lineNumber":52,"author":{"gitId":"Jawad280"},"content":" this.exit \u003d false;","lastModifiedDate":"2024-02-26"},{"lineNumber":53,"author":{"gitId":"Jawad280"},"content":" this.viewPerson \u003d viewPerson;","lastModifiedDate":"2024-02-26"},{"lineNumber":54,"author":{"gitId":"chenyixin0"},"content":" this.viewList \u003d null;","lastModifiedDate":"2024-02-29"},{"lineNumber":55,"author":{"gitId":"chenyixin0"},"content":" }","lastModifiedDate":"2024-02-29"},{"lineNumber":56,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":57,"author":{"gitId":"Jawad280"},"content":" /**","lastModifiedDate":"2024-03-01"},{"lineNumber":58,"author":{"gitId":"Jawad280"},"content":" * Constructs a {@code CommandResult} with the specified {@code feedbackToUser},","lastModifiedDate":"2024-03-01"},{"lineNumber":59,"author":{"gitId":"Jawad280"},"content":" * and other fields set to their default value.","lastModifiedDate":"2024-03-01"},{"lineNumber":60,"author":{"gitId":"Jawad280"},"content":" */","lastModifiedDate":"2024-03-01"},{"lineNumber":61,"author":{"gitId":"chenyixin0"},"content":" public CommandResult(String feedbackToUser, FilteredList\u003cPerson\u003e viewList) {","lastModifiedDate":"2024-02-29"},{"lineNumber":62,"author":{"gitId":"chenyixin0"},"content":" this.feedbackToUser \u003d requireNonNull(feedbackToUser);","lastModifiedDate":"2024-02-29"},{"lineNumber":63,"author":{"gitId":"chenyixin0"},"content":" this.showHelp \u003d false;","lastModifiedDate":"2024-02-29"},{"lineNumber":64,"author":{"gitId":"chenyixin0"},"content":" this.exit \u003d false;","lastModifiedDate":"2024-02-29"},{"lineNumber":65,"author":{"gitId":"chenyixin0"},"content":" this.viewPerson \u003d null;","lastModifiedDate":"2024-02-29"},{"lineNumber":66,"author":{"gitId":"chenyixin0"},"content":" this.viewList \u003d viewList;","lastModifiedDate":"2024-02-29"},{"lineNumber":67,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public String getFeedbackToUser() {","lastModifiedDate":"2018-12-09"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return feedbackToUser;","lastModifiedDate":"2018-12-09"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":72,"author":{"gitId":"Jawad280"},"content":" public Person getViewPerson() {","lastModifiedDate":"2024-02-26"},{"lineNumber":73,"author":{"gitId":"Jawad280"},"content":" return this.viewPerson;","lastModifiedDate":"2024-02-26"},{"lineNumber":74,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":75,"author":{"gitId":"chenyixin0"},"content":" public FilteredList\u003cPerson\u003e getViewList() {","lastModifiedDate":"2024-02-29"},{"lineNumber":76,"author":{"gitId":"chenyixin0"},"content":" return this.viewList;","lastModifiedDate":"2024-02-29"},{"lineNumber":77,"author":{"gitId":"chenyixin0"},"content":" }","lastModifiedDate":"2024-02-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public boolean isShowHelp() {","lastModifiedDate":"2018-12-09"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return showHelp;","lastModifiedDate":"2018-12-09"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public boolean isExit() {","lastModifiedDate":"2018-12-09"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":87,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2018-12-09"},{"lineNumber":90,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-12-09"},{"lineNumber":91,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-12-09"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":94,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2018-12-09"},{"lineNumber":95,"author":{"gitId":"-"},"content":" if (!(other instanceof CommandResult)) {","lastModifiedDate":"2018-12-09"},{"lineNumber":96,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-12-09"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":99,"author":{"gitId":"-"},"content":" CommandResult otherCommandResult \u003d (CommandResult) other;","lastModifiedDate":"2018-12-09"},{"lineNumber":100,"author":{"gitId":"-"},"content":" return feedbackToUser.equals(otherCommandResult.feedbackToUser)","lastModifiedDate":"2018-12-09"},{"lineNumber":101,"author":{"gitId":"-"},"content":" \u0026\u0026 showHelp \u003d\u003d otherCommandResult.showHelp","lastModifiedDate":"2018-12-09"},{"lineNumber":102,"author":{"gitId":"-"},"content":" \u0026\u0026 exit \u003d\u003d otherCommandResult.exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2018-12-09"},{"lineNumber":107,"author":{"gitId":"-"},"content":" return Objects.hash(feedbackToUser, showHelp, exit);","lastModifiedDate":"2018-12-09"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":" .add(\"feedbackToUser\", feedbackToUser)","lastModifiedDate":"2019-02-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":" .add(\"showHelp\", showHelp)","lastModifiedDate":"2019-02-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" .add(\"exit\", exit)","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":"2019-02-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"chenyixin0":15,"Jawad280":21,"-":83}},{"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":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"minghowC"},"content":" // Output message: \"Deleted Person: Person Name\"","lastModifiedDate":"2024-03-01"},{"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":"-"},"content":" public DeleteCommand(Index targetIndex) {","lastModifiedDate":"2017-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2016-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 CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":" Person personToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2018-04-19"},{"lineNumber":45,"author":{"gitId":"-"},"content":" model.deletePerson(personToDelete);","lastModifiedDate":"2016-09-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete)));","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (!(other instanceof DeleteCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return targetIndex.equals(otherDeleteCommand.targetIndex);","lastModifiedDate":"2023-07-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"minghowC":1,"-":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":"2024-02-28"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-02-28"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-02-28"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-02-28"},{"lineNumber":6,"author":{"gitId":"eunrcn"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_INTERN_DURATION;","lastModifiedDate":"2024-02-28"},{"lineNumber":7,"author":{"gitId":"eunrcn"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_INTERVIEW_DATE;","lastModifiedDate":"2024-02-28"},{"lineNumber":8,"author":{"gitId":"eunrcn"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_JOB_DESCRIPTION;","lastModifiedDate":"2024-02-28"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-02-28"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-02-28"},{"lineNumber":11,"author":{"gitId":"eunrcn"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SALARY;","lastModifiedDate":"2024-02-28"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-02-28"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-02-28"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2024-02-28"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2024-02-28"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2024-02-28"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-02-28"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2024-02-28"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-02-28"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-02-28"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-02-28"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-02-28"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-02-28"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-02-29"},{"lineNumber":27,"author":{"gitId":"eunrcn"},"content":"import seedu.address.model.person.InternDuration;","lastModifiedDate":"2024-02-28"},{"lineNumber":28,"author":{"gitId":"eunrcn"},"content":"import seedu.address.model.person.InterviewDate;","lastModifiedDate":"2024-02-28"},{"lineNumber":29,"author":{"gitId":"Jawad280"},"content":"import seedu.address.model.person.JobDescription;","lastModifiedDate":"2024-02-29"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-02-28"},{"lineNumber":31,"author":{"gitId":"Jawad280"},"content":"import seedu.address.model.person.Note;","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-02-28"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-02-28"},{"lineNumber":34,"author":{"gitId":"Jawad280"},"content":"import seedu.address.model.person.Salary;","lastModifiedDate":"2024-02-29"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-02-28"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":37,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2024-02-28"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2024-02-28"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-28"},{"lineNumber":40,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2024-02-28"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2024-02-28"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the person identified \"","lastModifiedDate":"2024-02-28"},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2024-02-28"},{"lineNumber":46,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2024-02-28"},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2024-02-28"},{"lineNumber":48,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2024-02-28"},{"lineNumber":49,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2024-02-28"},{"lineNumber":50,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2024-02-28"},{"lineNumber":51,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2024-02-28"},{"lineNumber":52,"author":{"gitId":"eunrcn"},"content":" + \"[\" + PREFIX_JOB_DESCRIPTION + \"JOB DESCRIPTION] \"","lastModifiedDate":"2024-02-28"},{"lineNumber":53,"author":{"gitId":"eunrcn"},"content":" + \"[\" + PREFIX_INTERVIEW_DATE + \"INTERVIEW DATE] \"","lastModifiedDate":"2024-02-28"},{"lineNumber":54,"author":{"gitId":"eunrcn"},"content":" + \"[\" + PREFIX_INTERN_DURATION + \"INTERN DURATION] \"","lastModifiedDate":"2024-02-28"},{"lineNumber":55,"author":{"gitId":"eunrcn"},"content":" + \"[\" + PREFIX_SALARY + \"SALARY] \"","lastModifiedDate":"2024-02-28"},{"lineNumber":56,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2024-02-28"},{"lineNumber":57,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2024-02-28"},{"lineNumber":58,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2024-02-28"},{"lineNumber":59,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2024-02-28"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2024-02-28"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2024-02-28"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2024-02-28"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":65,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2024-02-28"},{"lineNumber":66,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2024-02-28"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":68,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-02-28"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2024-02-28"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2024-02-28"},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-28"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2024-02-28"},{"lineNumber":73,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2024-02-28"},{"lineNumber":74,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2024-02-28"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":76,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2024-02-28"},{"lineNumber":77,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2024-02-28"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-02-28"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-02-28"},{"lineNumber":82,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2024-02-28"},{"lineNumber":83,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-02-28"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":85,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-02-28"},{"lineNumber":86,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-02-28"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":89,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-02-28"},{"lineNumber":90,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2024-02-28"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":92,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2024-02-28"},{"lineNumber":93,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2024-02-28"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":96,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2024-02-28"},{"lineNumber":97,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-02-28"},{"lineNumber":98,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2024-02-28"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":101,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-02-28"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2024-02-28"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2024-02-28"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-28"},{"lineNumber":105,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2024-02-28"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2024-02-28"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":108,"author":{"gitId":"eunrcn"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getCompanyName());","lastModifiedDate":"2024-02-28"},{"lineNumber":109,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2024-02-28"},{"lineNumber":110,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2024-02-28"},{"lineNumber":111,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2024-02-28"},{"lineNumber":112,"author":{"gitId":"Jawad280"},"content":" JobDescription updatedJobDescription \u003d editPersonDescriptor","lastModifiedDate":"2024-02-29"},{"lineNumber":113,"author":{"gitId":"Jawad280"},"content":" .getJobDescription()","lastModifiedDate":"2024-02-29"},{"lineNumber":114,"author":{"gitId":"Jawad280"},"content":" .orElse(personToEdit.getJobDescription());","lastModifiedDate":"2024-02-29"},{"lineNumber":115,"author":{"gitId":"Jawad280"},"content":" InterviewDate updatedInterviewDate \u003d editPersonDescriptor","lastModifiedDate":"2024-02-29"},{"lineNumber":116,"author":{"gitId":"Jawad280"},"content":" .getInterviewDate()","lastModifiedDate":"2024-02-29"},{"lineNumber":117,"author":{"gitId":"Jawad280"},"content":" .orElse(personToEdit.getInterviewDate());","lastModifiedDate":"2024-02-29"},{"lineNumber":118,"author":{"gitId":"Jawad280"},"content":" InternDuration updatedInternDuration \u003d editPersonDescriptor","lastModifiedDate":"2024-02-29"},{"lineNumber":119,"author":{"gitId":"Jawad280"},"content":" .getInternDuration()","lastModifiedDate":"2024-02-29"},{"lineNumber":120,"author":{"gitId":"Jawad280"},"content":" .orElse(personToEdit.getInternDuration());","lastModifiedDate":"2024-02-29"},{"lineNumber":121,"author":{"gitId":"eunrcn"},"content":" Salary updatedSalary \u003d editPersonDescriptor.getSalary().orElse(personToEdit.getSalary());","lastModifiedDate":"2024-02-28"},{"lineNumber":122,"author":{"gitId":"Jawad280"},"content":" Tag updatedTags \u003d editPersonDescriptor.getTag().orElse(personToEdit.getTag());","lastModifiedDate":"2024-02-29"},{"lineNumber":123,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":124,"author":{"gitId":"Jawad280"},"content":" Note updatedNote \u003d editPersonDescriptor.getNote().orElse(personToEdit.getNote());","lastModifiedDate":"2024-03-20"},{"lineNumber":125,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":126,"author":{"gitId":"eunrcn"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTags,","lastModifiedDate":"2024-02-28"},{"lineNumber":127,"author":{"gitId":"eunrcn"},"content":" updatedJobDescription, updatedInterviewDate,","lastModifiedDate":"2024-02-28"},{"lineNumber":128,"author":{"gitId":"Jawad280"},"content":" updatedInternDuration, updatedSalary, updatedNote);","lastModifiedDate":"2024-03-20"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-02-28"},{"lineNumber":132,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-02-28"},{"lineNumber":133,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-02-28"},{"lineNumber":134,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2024-02-28"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":137,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-02-28"},{"lineNumber":138,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2024-02-28"},{"lineNumber":139,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2024-02-28"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":142,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2024-02-28"},{"lineNumber":143,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2024-02-28"},{"lineNumber":144,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2024-02-28"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":147,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-02-28"},{"lineNumber":148,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2024-02-28"},{"lineNumber":149,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-02-28"},{"lineNumber":150,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2024-02-28"},{"lineNumber":151,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2024-02-28"},{"lineNumber":152,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2024-02-28"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":155,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-02-28"},{"lineNumber":156,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2024-02-28"},{"lineNumber":157,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2024-02-28"},{"lineNumber":158,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-28"},{"lineNumber":159,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2024-02-28"},{"lineNumber":160,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2024-02-28"},{"lineNumber":161,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2024-02-28"},{"lineNumber":162,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2024-02-28"},{"lineNumber":163,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2024-02-28"},{"lineNumber":164,"author":{"gitId":"Jawad280"},"content":" private Tag tag;","lastModifiedDate":"2024-02-29"},{"lineNumber":165,"author":{"gitId":"eunrcn"},"content":" private JobDescription jobDescription;","lastModifiedDate":"2024-02-28"},{"lineNumber":166,"author":{"gitId":"eunrcn"},"content":" private InternDuration internDuration;","lastModifiedDate":"2024-02-28"},{"lineNumber":167,"author":{"gitId":"eunrcn"},"content":" private InterviewDate interviewDate;","lastModifiedDate":"2024-02-28"},{"lineNumber":168,"author":{"gitId":"eunrcn"},"content":" private Salary salary;","lastModifiedDate":"2024-02-28"},{"lineNumber":169,"author":{"gitId":"Jawad280"},"content":" private Note note;","lastModifiedDate":"2024-03-20"},{"lineNumber":170,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":172,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2024-02-28"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":174,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-02-28"},{"lineNumber":175,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2024-02-28"},{"lineNumber":176,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2024-02-28"},{"lineNumber":177,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-28"},{"lineNumber":178,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2024-02-28"},{"lineNumber":179,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2024-02-28"},{"lineNumber":180,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2024-02-28"},{"lineNumber":181,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2024-02-28"},{"lineNumber":182,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2024-02-28"},{"lineNumber":183,"author":{"gitId":"Jawad280"},"content":" setTag(toCopy.tag);","lastModifiedDate":"2024-02-29"},{"lineNumber":184,"author":{"gitId":"eunrcn"},"content":" setJobDescription(toCopy.jobDescription);","lastModifiedDate":"2024-02-28"},{"lineNumber":185,"author":{"gitId":"eunrcn"},"content":" setInternDuration(toCopy.internDuration);","lastModifiedDate":"2024-02-28"},{"lineNumber":186,"author":{"gitId":"eunrcn"},"content":" setInterviewDate(toCopy.interviewDate);","lastModifiedDate":"2024-02-28"},{"lineNumber":187,"author":{"gitId":"eunrcn"},"content":" setSalary(toCopy.salary);","lastModifiedDate":"2024-02-28"},{"lineNumber":188,"author":{"gitId":"Jawad280"},"content":" setNote(toCopy.note);","lastModifiedDate":"2024-03-20"},{"lineNumber":189,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":191,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-02-28"},{"lineNumber":192,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2024-02-28"},{"lineNumber":193,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-28"},{"lineNumber":194,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2024-02-28"},{"lineNumber":195,"author":{"gitId":"Jawad280"},"content":" return CollectionUtil.isAnyNonNull(","lastModifiedDate":"2024-02-29"},{"lineNumber":196,"author":{"gitId":"Jawad280"},"content":" name, phone, email, address, tag, jobDescription, interviewDate, internDuration, salary, note","lastModifiedDate":"2024-03-20"},{"lineNumber":197,"author":{"gitId":"Jawad280"},"content":" );","lastModifiedDate":"2024-02-29"},{"lineNumber":198,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":200,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2024-02-28"},{"lineNumber":201,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2024-02-28"},{"lineNumber":202,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":204,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2024-02-28"},{"lineNumber":205,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2024-02-28"},{"lineNumber":206,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":208,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2024-02-28"},{"lineNumber":209,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2024-02-28"},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":212,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2024-02-28"},{"lineNumber":213,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2024-02-28"},{"lineNumber":214,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":216,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2024-02-28"},{"lineNumber":217,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2024-02-28"},{"lineNumber":218,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":220,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2024-02-28"},{"lineNumber":221,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2024-02-28"},{"lineNumber":222,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":224,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2024-02-28"},{"lineNumber":225,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2024-02-28"},{"lineNumber":226,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":228,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2024-02-28"},{"lineNumber":229,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2024-02-28"},{"lineNumber":230,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":232,"author":{"gitId":"eunrcn"},"content":" public void setJobDescription(JobDescription jobDescription) {","lastModifiedDate":"2024-02-28"},{"lineNumber":233,"author":{"gitId":"eunrcn"},"content":" this.jobDescription \u003d jobDescription;","lastModifiedDate":"2024-02-28"},{"lineNumber":234,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":236,"author":{"gitId":"eunrcn"},"content":" public Optional\u003cJobDescription\u003e getJobDescription() {","lastModifiedDate":"2024-02-28"},{"lineNumber":237,"author":{"gitId":"eunrcn"},"content":" return Optional.ofNullable(jobDescription);","lastModifiedDate":"2024-02-28"},{"lineNumber":238,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":239,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":240,"author":{"gitId":"eunrcn"},"content":" public void setInternDuration(InternDuration internDuration) {","lastModifiedDate":"2024-02-28"},{"lineNumber":241,"author":{"gitId":"eunrcn"},"content":" this.internDuration \u003d internDuration;","lastModifiedDate":"2024-02-28"},{"lineNumber":242,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":243,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":244,"author":{"gitId":"eunrcn"},"content":" public Optional\u003cInternDuration\u003e getInternDuration() {","lastModifiedDate":"2024-02-28"},{"lineNumber":245,"author":{"gitId":"eunrcn"},"content":" return Optional.ofNullable(internDuration);","lastModifiedDate":"2024-02-28"},{"lineNumber":246,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":247,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":248,"author":{"gitId":"eunrcn"},"content":" public void setInterviewDate(InterviewDate interviewDate) {","lastModifiedDate":"2024-02-28"},{"lineNumber":249,"author":{"gitId":"eunrcn"},"content":" this.interviewDate \u003d interviewDate;","lastModifiedDate":"2024-02-28"},{"lineNumber":250,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":251,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":252,"author":{"gitId":"eunrcn"},"content":" public Optional\u003cInterviewDate\u003e getInterviewDate() {","lastModifiedDate":"2024-02-28"},{"lineNumber":253,"author":{"gitId":"eunrcn"},"content":" return Optional.ofNullable(interviewDate);","lastModifiedDate":"2024-02-28"},{"lineNumber":254,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":255,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":256,"author":{"gitId":"eunrcn"},"content":" public void setSalary(Salary salary) {","lastModifiedDate":"2024-02-28"},{"lineNumber":257,"author":{"gitId":"eunrcn"},"content":" this.salary \u003d salary;","lastModifiedDate":"2024-02-28"},{"lineNumber":258,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":259,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":260,"author":{"gitId":"eunrcn"},"content":" public Optional\u003cSalary\u003e getSalary() {","lastModifiedDate":"2024-02-28"},{"lineNumber":261,"author":{"gitId":"eunrcn"},"content":" return Optional.ofNullable(salary);","lastModifiedDate":"2024-02-28"},{"lineNumber":262,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":263,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":264,"author":{"gitId":"Jawad280"},"content":" public void setTag(Tag tag) {","lastModifiedDate":"2024-02-29"},{"lineNumber":265,"author":{"gitId":"Jawad280"},"content":" this.tag \u003d tag;","lastModifiedDate":"2024-02-29"},{"lineNumber":266,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":267,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":268,"author":{"gitId":"Jawad280"},"content":" public Optional\u003cTag\u003e getTag() {","lastModifiedDate":"2024-02-29"},{"lineNumber":269,"author":{"gitId":"Jawad280"},"content":" return Optional.ofNullable(tag);","lastModifiedDate":"2024-02-29"},{"lineNumber":270,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":271,"author":{"gitId":"Jawad280"},"content":" public void setNote(Note note) {","lastModifiedDate":"2024-03-20"},{"lineNumber":272,"author":{"gitId":"Jawad280"},"content":" this.note \u003d note;","lastModifiedDate":"2024-03-20"},{"lineNumber":273,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":274,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":275,"author":{"gitId":"Jawad280"},"content":" public Optional\u003cNote\u003e getNote() {","lastModifiedDate":"2024-03-20"},{"lineNumber":276,"author":{"gitId":"Jawad280"},"content":" return Optional.ofNullable(note);","lastModifiedDate":"2024-03-20"},{"lineNumber":277,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":279,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-02-28"},{"lineNumber":280,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-02-28"},{"lineNumber":281,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-02-28"},{"lineNumber":282,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2024-02-28"},{"lineNumber":283,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":284,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":285,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-02-28"},{"lineNumber":286,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2024-02-28"},{"lineNumber":287,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2024-02-28"},{"lineNumber":288,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":290,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2024-02-28"},{"lineNumber":291,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2024-02-28"},{"lineNumber":292,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2024-02-28"},{"lineNumber":293,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2024-02-28"},{"lineNumber":294,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2024-02-28"},{"lineNumber":295,"author":{"gitId":"Jawad280"},"content":" \u0026\u0026 Objects.equals(tag, otherEditPersonDescriptor.tag)","lastModifiedDate":"2024-02-29"},{"lineNumber":296,"author":{"gitId":"eunrcn"},"content":" \u0026\u0026 Objects.equals(jobDescription, otherEditPersonDescriptor.jobDescription)","lastModifiedDate":"2024-02-28"},{"lineNumber":297,"author":{"gitId":"eunrcn"},"content":" \u0026\u0026 Objects.equals(internDuration, otherEditPersonDescriptor.internDuration)","lastModifiedDate":"2024-02-28"},{"lineNumber":298,"author":{"gitId":"eunrcn"},"content":" \u0026\u0026 Objects.equals(interviewDate, otherEditPersonDescriptor.interviewDate)","lastModifiedDate":"2024-02-28"},{"lineNumber":299,"author":{"gitId":"eunrcn"},"content":" \u0026\u0026 Objects.equals(salary, otherEditPersonDescriptor.salary);","lastModifiedDate":"2024-02-28"},{"lineNumber":300,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":302,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-02-28"},{"lineNumber":303,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2024-02-28"},{"lineNumber":304,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-02-28"},{"lineNumber":305,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2024-02-28"},{"lineNumber":306,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2024-02-28"},{"lineNumber":307,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2024-02-28"},{"lineNumber":308,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2024-02-28"},{"lineNumber":309,"author":{"gitId":"Jawad280"},"content":" .add(\"tag\", tag)","lastModifiedDate":"2024-02-29"},{"lineNumber":310,"author":{"gitId":"Jawad280"},"content":" .add(\"job description\", jobDescription)","lastModifiedDate":"2024-02-29"},{"lineNumber":311,"author":{"gitId":"Jawad280"},"content":" .add(\"intern duration\", internDuration)","lastModifiedDate":"2024-02-29"},{"lineNumber":312,"author":{"gitId":"Jawad280"},"content":" .add(\"interview date\", interviewDate)","lastModifiedDate":"2024-02-29"},{"lineNumber":313,"author":{"gitId":"Jawad280"},"content":" .add(\"salary\", salary)","lastModifiedDate":"2024-02-29"},{"lineNumber":314,"author":{"gitId":"Jawad280"},"content":" .add(\"note\", note)","lastModifiedDate":"2024-03-20"},{"lineNumber":315,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2024-02-28"},{"lineNumber":316,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":317,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":318,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-02-28"}],"authorContributionMap":{"eunrcn":61,"Jawad280":40,"-":217}},{"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 seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22"},{"lineNumber":9,"author":{"gitId":"chenyixin0"},"content":" * Finds and lists all companies in address book whose name contains any of the argument keywords.","lastModifiedDate":"2024-02-29"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Keyword matching is case insensitive.","lastModifiedDate":"2018-04-01"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2016-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"find\";","lastModifiedDate":"2016-09-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":16,"author":{"gitId":"chenyixin0"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all companies whose names contain any of \"","lastModifiedDate":"2024-02-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":" + \"the specified keywords (case-insensitive) and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2018-04-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":" + \"Parameters: KEYWORD [MORE_KEYWORDS]...\\n\"","lastModifiedDate":"2016-09-22"},{"lineNumber":19,"author":{"gitId":"chenyixin0"},"content":" + \"Example: \" + COMMAND_WORD + \" food panda\";","lastModifiedDate":"2024-02-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final NameContainsKeywordsPredicate predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public FindCommand(NameContainsKeywordsPredicate predicate) {","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":29,"author":{"gitId":"chenyixin0"},"content":" //requireNonNull(model);","lastModifiedDate":"2024-03-08"},{"lineNumber":30,"author":{"gitId":"chenyixin0"},"content":" //model.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" return new CommandResult(","lastModifiedDate":"2018-04-01"},{"lineNumber":32,"author":{"gitId":"Jawad280"},"content":" String.format(","lastModifiedDate":"2024-03-01"},{"lineNumber":33,"author":{"gitId":"Jawad280"},"content":" Messages.MESSAGE_PERSONS_LISTED_OVERVIEW,","lastModifiedDate":"2024-03-01"},{"lineNumber":34,"author":{"gitId":"Jawad280"},"content":" model.generateNewFilteredPersonList(predicate).size()),","lastModifiedDate":"2024-03-01"},{"lineNumber":35,"author":{"gitId":"chenyixin0"},"content":" model.generateNewFilteredPersonList(predicate));","lastModifiedDate":"2024-02-29"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" if (!(other instanceof FindCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" FindCommand otherFindCommand \u003d (FindCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return predicate.equals(otherFindCommand.predicate);","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"chenyixin0":6,"Jawad280":3,"-":50}},{"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":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all persons\";","lastModifiedDate":"2016-09-21"},{"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":"Jawad280"},"content":" return new CommandResult(MESSAGE_SUCCESS, false, false);","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"Jawad280":1,"-":23}},{"path":"src/main/java/seedu/address/logic/commands/NoteCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"import java.util.List;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":" * Fetches the note content of the contact of index.","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":"public class NoteCommand extends Command {","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":" public static final String COMMAND_WORD \u003d \"note\";","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"Jawad280"},"content":" + \": Fetches the note content of the index number used in the displayed contact list.\\n\"","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"Jawad280"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"Jawad280"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"Jawad280"},"content":" private final Index targetIndex;","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"Jawad280"},"content":" public NoteCommand(Index targetIndex) {","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"Jawad280"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"Jawad280"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"Jawad280"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"Jawad280"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"Jawad280"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"Jawad280"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"Jawad280"},"content":" Person personToView \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"Jawad280"},"content":" return new CommandResult(","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"Jawad280"},"content":" String.format(\"edit %d n/\", targetIndex.getOneBased()) + personToView.getNote(),","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"Jawad280"},"content":" personToView);","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"Jawad280"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"Jawad280"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"Jawad280"},"content":" return true;","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"Jawad280"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"Jawad280"},"content":" if (!(other instanceof NoteCommand)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"Jawad280"},"content":" return false;","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"Jawad280"},"content":" NoteCommand otherNoteCommand \u003d (NoteCommand) other;","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"Jawad280"},"content":" return targetIndex.equals(otherNoteCommand.targetIndex);","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"Jawad280"},"content":" public String toString() {","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"Jawad280"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"Jawad280"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"Jawad280"},"content":" .toString();","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"Jawad280":67}},{"path":"src/main/java/seedu/address/logic/commands/ViewCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-02-26"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-02-26"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"import java.util.List;","lastModifiedDate":"2024-02-26"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-02-26"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-02-26"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-02-26"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-02-26"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-02-26"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-02-26"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":"/**","lastModifiedDate":"2024-02-26"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":" * Views a person identified using it\u0027s displayed index from the address book.","lastModifiedDate":"2024-02-26"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":" */","lastModifiedDate":"2024-02-26"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":"public class ViewCommand extends Command {","lastModifiedDate":"2024-02-26"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":" public static final String COMMAND_WORD \u003d \"view\";","lastModifiedDate":"2024-02-26"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-02-26"},{"lineNumber":21,"author":{"gitId":"Jawad280"},"content":" + \": Views the person identified by the index number used in the displayed person list.\\n\"","lastModifiedDate":"2024-02-26"},{"lineNumber":22,"author":{"gitId":"Jawad280"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2024-02-26"},{"lineNumber":23,"author":{"gitId":"Jawad280"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2024-02-26"},{"lineNumber":24,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":25,"author":{"gitId":"Jawad280"},"content":" public static final String MESSAGE_VIEW_PERSON_SUCCESS \u003d \"Viewing Person: %1$s\";","lastModifiedDate":"2024-02-26"},{"lineNumber":26,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":27,"author":{"gitId":"Jawad280"},"content":" private final Index targetIndex;","lastModifiedDate":"2024-02-26"},{"lineNumber":28,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":29,"author":{"gitId":"Jawad280"},"content":" public ViewCommand(Index targetIndex) {","lastModifiedDate":"2024-02-26"},{"lineNumber":30,"author":{"gitId":"Jawad280"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2024-02-26"},{"lineNumber":31,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":32,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":33,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-02-26"},{"lineNumber":34,"author":{"gitId":"Jawad280"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-02-26"},{"lineNumber":35,"author":{"gitId":"Jawad280"},"content":" requireNonNull(model);","lastModifiedDate":"2024-02-26"},{"lineNumber":36,"author":{"gitId":"Jawad280"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-02-26"},{"lineNumber":37,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":38,"author":{"gitId":"Jawad280"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-02-26"},{"lineNumber":39,"author":{"gitId":"Jawad280"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-02-26"},{"lineNumber":40,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":41,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":42,"author":{"gitId":"Jawad280"},"content":" Person personToView \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-02-26"},{"lineNumber":43,"author":{"gitId":"Jawad280"},"content":" return new CommandResult(","lastModifiedDate":"2024-02-26"},{"lineNumber":44,"author":{"gitId":"Jawad280"},"content":" String.format(MESSAGE_VIEW_PERSON_SUCCESS, Messages.format(personToView)),","lastModifiedDate":"2024-02-26"},{"lineNumber":45,"author":{"gitId":"Jawad280"},"content":" personToView);","lastModifiedDate":"2024-02-26"},{"lineNumber":46,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":47,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":48,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-02-26"},{"lineNumber":49,"author":{"gitId":"Jawad280"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-02-26"},{"lineNumber":50,"author":{"gitId":"Jawad280"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-02-26"},{"lineNumber":51,"author":{"gitId":"Jawad280"},"content":" return true;","lastModifiedDate":"2024-02-26"},{"lineNumber":52,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":53,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":54,"author":{"gitId":"Jawad280"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-02-26"},{"lineNumber":55,"author":{"gitId":"Jawad280"},"content":" if (!(other instanceof ViewCommand)) {","lastModifiedDate":"2024-02-26"},{"lineNumber":56,"author":{"gitId":"Jawad280"},"content":" return false;","lastModifiedDate":"2024-02-26"},{"lineNumber":57,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":58,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":59,"author":{"gitId":"Jawad280"},"content":" ViewCommand otherViewCommand \u003d (ViewCommand) other;","lastModifiedDate":"2024-02-26"},{"lineNumber":60,"author":{"gitId":"Jawad280"},"content":" return targetIndex.equals(otherViewCommand.targetIndex);","lastModifiedDate":"2024-02-26"},{"lineNumber":61,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":62,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":63,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-02-26"},{"lineNumber":64,"author":{"gitId":"Jawad280"},"content":" public String toString() {","lastModifiedDate":"2024-02-26"},{"lineNumber":65,"author":{"gitId":"Jawad280"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-02-26"},{"lineNumber":66,"author":{"gitId":"Jawad280"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2024-02-26"},{"lineNumber":67,"author":{"gitId":"Jawad280"},"content":" .toString();","lastModifiedDate":"2024-02-26"},{"lineNumber":68,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":69,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-02-26"}],"authorContributionMap":{"Jawad280":69}},{"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":"eunrcn"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":" * Represents an error which occurs during execution of a {@link Command}.","lastModifiedDate":"2017-02-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"public class CommandException extends Exception {","lastModifiedDate":"2017-02-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":" public CommandException(String message) {","lastModifiedDate":"2017-02-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":" super(message);","lastModifiedDate":"2017-02-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":12,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Constructs a new {@code CommandException} with the specified detail {@code message} and {@code cause}.","lastModifiedDate":"2018-08-06"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public CommandException(String message, Throwable cause) {","lastModifiedDate":"2018-08-06"},{"lineNumber":16,"author":{"gitId":"-"},"content":" super(message, cause);","lastModifiedDate":"2018-08-06"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"eunrcn":1,"-":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":"-"},"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":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_INTERN_DURATION;","lastModifiedDate":"2024-02-25"},{"lineNumber":7,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_INTERVIEW_DATE;","lastModifiedDate":"2024-02-25"},{"lineNumber":8,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_JOB_DESCRIPTION;","lastModifiedDate":"2024-02-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NOTE;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-02-05"},{"lineNumber":12,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SALARY;","lastModifiedDate":"2024-02-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-02-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"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.Address;","lastModifiedDate":"2024-02-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-02-25"},{"lineNumber":21,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.InternDuration;","lastModifiedDate":"2024-02-25"},{"lineNumber":22,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.InterviewDate;","lastModifiedDate":"2024-02-25"},{"lineNumber":23,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.JobDescription;","lastModifiedDate":"2024-02-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-02-25"},{"lineNumber":25,"author":{"gitId":"Jawad280"},"content":"import seedu.address.model.person.Note;","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-02-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-02-25"},{"lineNumber":28,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.Salary;","lastModifiedDate":"2024-02-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17"},{"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":"ashleygoh1"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG,","lastModifiedDate":"2024-02-25"},{"lineNumber":44,"author":{"gitId":"Jawad280"},"content":" PREFIX_JOB_DESCRIPTION, PREFIX_INTERVIEW_DATE, PREFIX_INTERN_DURATION, PREFIX_SALARY,","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"Jawad280"},"content":" PREFIX_NOTE);","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":47,"author":{"gitId":"ashleygoh1"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_TAG,","lastModifiedDate":"2024-02-26"},{"lineNumber":48,"author":{"gitId":"ashleygoh1"},"content":" PREFIX_JOB_DESCRIPTION, PREFIX_INTERN_DURATION, PREFIX_SALARY)","lastModifiedDate":"2024-02-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":53,"author":{"gitId":"ashleygoh1"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-02-26"},{"lineNumber":54,"author":{"gitId":"ashleygoh1"},"content":" PREFIX_TAG, PREFIX_JOB_DESCRIPTION, PREFIX_INTERVIEW_DATE, PREFIX_INTERN_DURATION,","lastModifiedDate":"2024-02-26"},{"lineNumber":55,"author":{"gitId":"Jawad280"},"content":" PREFIX_SALARY, PREFIX_NOTE);","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":58,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":60,"author":{"gitId":"ashleygoh1"},"content":" Address address;","lastModifiedDate":"2024-02-26"},{"lineNumber":61,"author":{"gitId":"ashleygoh1"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2024-02-26"},{"lineNumber":62,"author":{"gitId":"ashleygoh1"},"content":" try {","lastModifiedDate":"2024-02-26"},{"lineNumber":63,"author":{"gitId":"ashleygoh1"},"content":" address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2024-02-26"},{"lineNumber":64,"author":{"gitId":"ashleygoh1"},"content":" } catch (ParseException e) {","lastModifiedDate":"2024-02-26"},{"lineNumber":65,"author":{"gitId":"ashleygoh1"},"content":" throw new ParseException(\"Error parsing address: \" + e.getMessage());","lastModifiedDate":"2024-02-26"},{"lineNumber":66,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":67,"author":{"gitId":"ashleygoh1"},"content":" } else {","lastModifiedDate":"2024-02-26"},{"lineNumber":68,"author":{"gitId":"ashleygoh1"},"content":" address \u003d new Address(\"\"); // Provide a default empty address if not provided","lastModifiedDate":"2024-02-26"},{"lineNumber":69,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":70,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":71,"author":{"gitId":"ashleygoh1"},"content":" Tag tag \u003d ParserUtil.parseTag(argMultimap.getValue(PREFIX_TAG).get());","lastModifiedDate":"2024-02-25"},{"lineNumber":72,"author":{"gitId":"ashleygoh1"},"content":" JobDescription jobDescription \u003d ParserUtil.parseJobDescription(","lastModifiedDate":"2024-02-25"},{"lineNumber":73,"author":{"gitId":"ashleygoh1"},"content":" argMultimap.getValue(PREFIX_JOB_DESCRIPTION).get());","lastModifiedDate":"2024-02-25"},{"lineNumber":74,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":75,"author":{"gitId":"ashleygoh1"},"content":" InterviewDate interviewDate \u003d new InterviewDate(null);","lastModifiedDate":"2024-02-26"},{"lineNumber":76,"author":{"gitId":"ashleygoh1"},"content":" if (argMultimap.getValue(PREFIX_INTERVIEW_DATE).isPresent()) {","lastModifiedDate":"2024-02-26"},{"lineNumber":77,"author":{"gitId":"ashleygoh1"},"content":" try {","lastModifiedDate":"2024-02-26"},{"lineNumber":78,"author":{"gitId":"ashleygoh1"},"content":" String givenDate \u003d argMultimap.getValue(PREFIX_INTERVIEW_DATE).get();","lastModifiedDate":"2024-02-26"},{"lineNumber":79,"author":{"gitId":"ashleygoh1"},"content":" if (!givenDate.isEmpty()) {","lastModifiedDate":"2024-02-26"},{"lineNumber":80,"author":{"gitId":"ashleygoh1"},"content":" interviewDate \u003d ParserUtil.parseInterviewDate(givenDate);","lastModifiedDate":"2024-02-26"},{"lineNumber":81,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":82,"author":{"gitId":"ashleygoh1"},"content":" } catch (ParseException e) {","lastModifiedDate":"2024-02-26"},{"lineNumber":83,"author":{"gitId":"ashleygoh1"},"content":" throw new ParseException(\"Error parsing interview date: \" + e.getMessage());","lastModifiedDate":"2024-02-26"},{"lineNumber":84,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":85,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":86,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":87,"author":{"gitId":"ashleygoh1"},"content":" InternDuration internDuration \u003d ParserUtil.parseInternDuration(","lastModifiedDate":"2024-02-25"},{"lineNumber":88,"author":{"gitId":"ashleygoh1"},"content":" argMultimap.getValue(PREFIX_INTERN_DURATION).get());","lastModifiedDate":"2024-02-25"},{"lineNumber":89,"author":{"gitId":"ashleygoh1"},"content":" Salary salary \u003d ParserUtil.parseSalary(argMultimap.getValue(PREFIX_SALARY).get());","lastModifiedDate":"2024-02-25"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":91,"author":{"gitId":"Jawad280"},"content":" Note note;","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"Jawad280"},"content":" if (argMultimap.getValue(PREFIX_NOTE).isPresent()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"Jawad280"},"content":" try {","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"Jawad280"},"content":" note \u003d ParserUtil.parseNote(argMultimap.getValue(PREFIX_NOTE).get());","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"Jawad280"},"content":" } catch (ParseException e) {","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"Jawad280"},"content":" throw new ParseException(\"Error parsing note: \" + e.getMessage());","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"Jawad280"},"content":" } else {","lastModifiedDate":"2024-03-20"},{"lineNumber":99,"author":{"gitId":"Jawad280"},"content":" note \u003d new Note(\"\"); // Provide a default empty note if not provided","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":101,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":102,"author":{"gitId":"ashleygoh1"},"content":" Person person \u003d new Person(name, phone, email, address, tag,","lastModifiedDate":"2024-02-25"},{"lineNumber":103,"author":{"gitId":"Jawad280"},"content":" jobDescription, interviewDate, internDuration, salary, note);","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":105,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":108,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17"},{"lineNumber":109,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17"},{"lineNumber":110,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17"},{"lineNumber":111,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":112,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17"},{"lineNumber":113,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":116,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"Jawad280":17,"ashleygoh1":44,"-":55}},{"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":"2024-02-29"},{"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":"2024-03-01"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-02-29"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2024-02-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2024-02-29"},{"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":"2024-02-26"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":"import seedu.address.logic.commands.NoteCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"Jawad280"},"content":"import seedu.address.logic.commands.ViewCommand;","lastModifiedDate":"2024-02-29"},{"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":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2024-02-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2024-02-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2024-02-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2024-02-26"},{"lineNumber":64,"author":{"gitId":"minghowC"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-01"},{"lineNumber":65,"author":{"gitId":"minghowC"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2024-03-01"},{"lineNumber":66,"author":{"gitId":"Jawad280"},"content":" case ViewCommand.COMMAND_WORD:","lastModifiedDate":"2024-02-26"},{"lineNumber":67,"author":{"gitId":"Jawad280"},"content":" return new ViewCommandParser().parse(arguments);","lastModifiedDate":"2024-02-26"},{"lineNumber":68,"author":{"gitId":"eunrcn"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2024-02-28"},{"lineNumber":69,"author":{"gitId":"eunrcn"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2024-02-28"},{"lineNumber":70,"author":{"gitId":"ashleygoh1"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2024-02-27"},{"lineNumber":71,"author":{"gitId":"ashleygoh1"},"content":" return new ClearCommand();","lastModifiedDate":"2024-02-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2024-02-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2024-02-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2024-02-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2024-02-27"},{"lineNumber":76,"author":{"gitId":"Jawad280"},"content":" case NoteCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"Jawad280"},"content":" return new NoteCommandParser().parse(arguments);","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29"},{"lineNumber":81,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"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"}],"authorContributionMap":{"eunrcn":2,"minghowC":2,"Jawad280":6,"ashleygoh1":2,"-":73}},{"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":"eunrcn"},"content":" public static final Prefix PREFIX_INDEX \u003d new Prefix(\"i/\");","lastModifiedDate":"2024-02-28"},{"lineNumber":10,"author":{"gitId":"ashleygoh1"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"c/\");","lastModifiedDate":"2024-02-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","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":"ashleygoh1"},"content":" public static final Prefix PREFIX_JOB_DESCRIPTION \u003d new Prefix(\"jd/\");","lastModifiedDate":"2024-02-25"},{"lineNumber":16,"author":{"gitId":"ashleygoh1"},"content":" public static final Prefix PREFIX_INTERVIEW_DATE \u003d new Prefix(\"d/\");","lastModifiedDate":"2024-02-25"},{"lineNumber":17,"author":{"gitId":"ashleygoh1"},"content":" public static final Prefix PREFIX_INTERN_DURATION \u003d new Prefix(\"id/\");","lastModifiedDate":"2024-02-25"},{"lineNumber":18,"author":{"gitId":"ashleygoh1"},"content":" public static final Prefix PREFIX_SALARY \u003d new Prefix(\"s/\");","lastModifiedDate":"2024-02-25"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":" public static final Prefix PREFIX_NOTE \u003d new Prefix(\"n/\");","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"eunrcn":1,"Jawad280":1,"ashleygoh1":5,"-":14}},{"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":"2024-02-28"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-02-28"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-02-28"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-02-28"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-02-28"},{"lineNumber":7,"author":{"gitId":"eunrcn"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_INTERN_DURATION;","lastModifiedDate":"2024-02-28"},{"lineNumber":8,"author":{"gitId":"eunrcn"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_INTERVIEW_DATE;","lastModifiedDate":"2024-02-28"},{"lineNumber":9,"author":{"gitId":"eunrcn"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_JOB_DESCRIPTION;","lastModifiedDate":"2024-02-28"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-02-28"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NOTE;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-02-28"},{"lineNumber":13,"author":{"gitId":"eunrcn"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SALARY;","lastModifiedDate":"2024-02-28"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-02-28"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-02-28"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-02-28"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-02-28"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-02-28"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":"import seedu.address.model.person.InterviewDate;","lastModifiedDate":"2024-02-29"},{"lineNumber":21,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2024-02-28"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2024-02-28"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-28"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2024-02-28"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-02-28"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2024-02-28"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2024-02-28"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-02-28"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-28"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-02-28"},{"lineNumber":34,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2024-02-28"},{"lineNumber":35,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-02-28"},{"lineNumber":36,"author":{"gitId":"eunrcn"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG,","lastModifiedDate":"2024-02-28"},{"lineNumber":37,"author":{"gitId":"Jawad280"},"content":" PREFIX_JOB_DESCRIPTION, PREFIX_INTERVIEW_DATE, PREFIX_INTERN_DURATION, PREFIX_SALARY,","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"Jawad280"},"content":" PREFIX_NOTE);","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":40,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2024-02-28"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":42,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2024-02-28"},{"lineNumber":43,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-02-28"},{"lineNumber":44,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-02-28"},{"lineNumber":45,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-02-28"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":48,"author":{"gitId":"eunrcn"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-02-28"},{"lineNumber":49,"author":{"gitId":"eunrcn"},"content":" PREFIX_TAG, PREFIX_JOB_DESCRIPTION, PREFIX_INTERVIEW_DATE, PREFIX_INTERN_DURATION,","lastModifiedDate":"2024-02-28"},{"lineNumber":50,"author":{"gitId":"eunrcn"},"content":" PREFIX_SALARY);","lastModifiedDate":"2024-02-28"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":52,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2024-02-28"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2024-02-28"},{"lineNumber":55,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2024-02-28"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":57,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2024-02-28"},{"lineNumber":58,"author":{"gitId":"-"},"content":" editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2024-02-28"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":60,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2024-02-28"},{"lineNumber":61,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2024-02-28"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2024-02-28"},{"lineNumber":64,"author":{"gitId":"-"},"content":" editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2024-02-28"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":66,"author":{"gitId":"eunrcn"},"content":" if (argMultimap.getValue(PREFIX_JOB_DESCRIPTION).isPresent()) {","lastModifiedDate":"2024-02-28"},{"lineNumber":67,"author":{"gitId":"Jawad280"},"content":" editPersonDescriptor.setJobDescription(","lastModifiedDate":"2024-02-29"},{"lineNumber":68,"author":{"gitId":"Jawad280"},"content":" ParserUtil.parseJobDescription(argMultimap.getValue(PREFIX_JOB_DESCRIPTION).get())","lastModifiedDate":"2024-02-29"},{"lineNumber":69,"author":{"gitId":"Jawad280"},"content":" );","lastModifiedDate":"2024-02-29"},{"lineNumber":70,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":71,"author":{"gitId":"eunrcn"},"content":" if (argMultimap.getValue(PREFIX_INTERVIEW_DATE).isPresent()) {","lastModifiedDate":"2024-02-28"},{"lineNumber":72,"author":{"gitId":"Jawad280"},"content":" String givenDate \u003d argMultimap.getValue(PREFIX_INTERVIEW_DATE).get();","lastModifiedDate":"2024-02-29"},{"lineNumber":73,"author":{"gitId":"Jawad280"},"content":" if (!givenDate.isEmpty()) {","lastModifiedDate":"2024-02-29"},{"lineNumber":74,"author":{"gitId":"Jawad280"},"content":" editPersonDescriptor.setInterviewDate(","lastModifiedDate":"2024-02-29"},{"lineNumber":75,"author":{"gitId":"Jawad280"},"content":" ParserUtil.parseInterviewDate(argMultimap.getValue(PREFIX_INTERVIEW_DATE).get())","lastModifiedDate":"2024-02-29"},{"lineNumber":76,"author":{"gitId":"Jawad280"},"content":" );","lastModifiedDate":"2024-02-29"},{"lineNumber":77,"author":{"gitId":"Jawad280"},"content":" } else {","lastModifiedDate":"2024-02-29"},{"lineNumber":78,"author":{"gitId":"Jawad280"},"content":" editPersonDescriptor.setInterviewDate(new InterviewDate(null));","lastModifiedDate":"2024-02-29"},{"lineNumber":79,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-29"},{"lineNumber":80,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":81,"author":{"gitId":"eunrcn"},"content":" if (argMultimap.getValue(PREFIX_INTERN_DURATION).isPresent()) {","lastModifiedDate":"2024-02-28"},{"lineNumber":82,"author":{"gitId":"Jawad280"},"content":" editPersonDescriptor.setInternDuration(","lastModifiedDate":"2024-02-29"},{"lineNumber":83,"author":{"gitId":"Jawad280"},"content":" ParserUtil.parseInternDuration(argMultimap.getValue(PREFIX_INTERN_DURATION).get())","lastModifiedDate":"2024-02-29"},{"lineNumber":84,"author":{"gitId":"Jawad280"},"content":" );","lastModifiedDate":"2024-02-29"},{"lineNumber":85,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":86,"author":{"gitId":"eunrcn"},"content":" if (argMultimap.getValue(PREFIX_SALARY).isPresent()) {","lastModifiedDate":"2024-02-28"},{"lineNumber":87,"author":{"gitId":"eunrcn"},"content":" editPersonDescriptor.setSalary(ParserUtil.parseSalary(argMultimap.getValue(PREFIX_SALARY).get()));","lastModifiedDate":"2024-02-28"},{"lineNumber":88,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":89,"author":{"gitId":"eunrcn"},"content":" if (argMultimap.getValue(PREFIX_TAG).isPresent()) {","lastModifiedDate":"2024-02-28"},{"lineNumber":90,"author":{"gitId":"Jawad280"},"content":" editPersonDescriptor.setTag(ParserUtil.parseTag(argMultimap.getValue(PREFIX_TAG).get()));","lastModifiedDate":"2024-02-29"},{"lineNumber":91,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":92,"author":{"gitId":"Jawad280"},"content":" if (argMultimap.getValue(PREFIX_NOTE).isPresent()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"Jawad280"},"content":" editPersonDescriptor.setNote(ParserUtil.parseNote(argMultimap.getValue(PREFIX_NOTE).get()));","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2024-02-28"},{"lineNumber":96,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2024-02-28"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":99,"author":{"gitId":"-"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2024-02-28"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-28"},{"lineNumber":101,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-02-28"}],"authorContributionMap":{"eunrcn":20,"Jawad280":22,"-":59}},{"path":"src/main/java/seedu/address/logic/parser/NoteCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"import seedu.address.logic.commands.NoteCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":" * Parses input arguments and creates a new NoteCommand object","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":"public class NoteCommandParser {","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":" * Parses the given {@code String} of arguments in the context of the NoteCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":" * and returns a NoteCommand object for execution.","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":" public NoteCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":" try {","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"Jawad280"},"content":" return new NoteCommand(index);","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"Jawad280"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"Jawad280"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"Jawad280"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, NoteCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"Jawad280":27}},{"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-02-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-02-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-02-25"},{"lineNumber":10,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.InternDuration;","lastModifiedDate":"2024-02-25"},{"lineNumber":11,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.InterviewDate;","lastModifiedDate":"2024-02-25"},{"lineNumber":12,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.JobDescription;","lastModifiedDate":"2024-02-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-02-25"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":"import seedu.address.model.person.Note;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-02-25"},{"lineNumber":16,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.Salary;","lastModifiedDate":"2024-02-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02"},{"lineNumber":25,"author":{"gitId":"ashleygoh1"},"content":" public static final String MESSAGE_INVALID_NUMBER_OF_PEOPLE \u003d","lastModifiedDate":"2024-02-25"},{"lineNumber":26,"author":{"gitId":"ashleygoh1"},"content":" \"Number of people is not a non-zero unsigned integer.\";","lastModifiedDate":"2024-02-25"},{"lineNumber":27,"author":{"gitId":"ashleygoh1"},"content":" public static final String MESSAGE_INVALID_DATE_TIME_FORMAT \u003d","lastModifiedDate":"2024-02-25"},{"lineNumber":28,"author":{"gitId":"ashleygoh1"},"content":" \"Date time is wrongly formatted. You need to input a date in yyyy-mm-dd or dd-mm-yyyy \"","lastModifiedDate":"2024-02-25"},{"lineNumber":29,"author":{"gitId":"ashleygoh1"},"content":" + \"format and a time in HH:mm or HHmm (24hr clock) format (eg: 1800 or 18:00 for 6 pm). \"","lastModifiedDate":"2024-02-25"},{"lineNumber":30,"author":{"gitId":"ashleygoh1"},"content":" + \"You can choose to entire enter a date first or time first in any of the formats mentioned\";","lastModifiedDate":"2024-02-25"},{"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":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","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":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":89,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":93,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":94,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":95,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":96,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":98,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","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":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":104,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":108,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30"},{"lineNumber":109,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":110,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":111,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":113,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","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":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":117,"author":{"gitId":"ashleygoh1"},"content":" * Parses a {@code String jobDescription} into an {@code jobDescription}.","lastModifiedDate":"2024-02-25"},{"lineNumber":118,"author":{"gitId":"ashleygoh1"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-02-25"},{"lineNumber":119,"author":{"gitId":"ashleygoh1"},"content":" *","lastModifiedDate":"2024-02-25"},{"lineNumber":120,"author":{"gitId":"ashleygoh1"},"content":" * @throws ParseException if the given {@code jobDescription} is invalid.","lastModifiedDate":"2024-02-25"},{"lineNumber":121,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":122,"author":{"gitId":"ashleygoh1"},"content":" public static JobDescription parseJobDescription(String jobDescription) throws ParseException {","lastModifiedDate":"2024-02-25"},{"lineNumber":123,"author":{"gitId":"ashleygoh1"},"content":" requireNonNull(jobDescription);","lastModifiedDate":"2024-02-25"},{"lineNumber":124,"author":{"gitId":"ashleygoh1"},"content":" String trimmedJobDescription \u003d jobDescription.trim();","lastModifiedDate":"2024-02-25"},{"lineNumber":125,"author":{"gitId":"ashleygoh1"},"content":" if (!JobDescription.isValidJobDescription(trimmedJobDescription)) {","lastModifiedDate":"2024-02-25"},{"lineNumber":126,"author":{"gitId":"ashleygoh1"},"content":" throw new ParseException(JobDescription.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-25"},{"lineNumber":127,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":128,"author":{"gitId":"ashleygoh1"},"content":" return new JobDescription(trimmedJobDescription);","lastModifiedDate":"2024-02-25"},{"lineNumber":129,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":130,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":131,"author":{"gitId":"ashleygoh1"},"content":" /**","lastModifiedDate":"2024-02-25"},{"lineNumber":132,"author":{"gitId":"ashleygoh1"},"content":" * Parses {@code dateTime} into a {@code LocalDateTime} object.","lastModifiedDate":"2024-02-25"},{"lineNumber":133,"author":{"gitId":"ashleygoh1"},"content":" * @throws ParseException if {@code dateTime} is of invalid format.","lastModifiedDate":"2024-02-25"},{"lineNumber":134,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":135,"author":{"gitId":"ashleygoh1"},"content":" public static InterviewDate parseInterviewDate(String interviewDate) throws ParseException {","lastModifiedDate":"2024-02-25"},{"lineNumber":136,"author":{"gitId":"ashleygoh1"},"content":" String trimmedDateTime \u003d interviewDate.trim();","lastModifiedDate":"2024-02-25"},{"lineNumber":137,"author":{"gitId":"ashleygoh1"},"content":" return new InterviewDate(trimmedDateTime);","lastModifiedDate":"2024-02-25"},{"lineNumber":138,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":139,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":140,"author":{"gitId":"ashleygoh1"},"content":" /**","lastModifiedDate":"2024-02-25"},{"lineNumber":141,"author":{"gitId":"ashleygoh1"},"content":" * Parses a {@code String internDuration} into an {@code internDuration}.","lastModifiedDate":"2024-02-25"},{"lineNumber":142,"author":{"gitId":"ashleygoh1"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-02-25"},{"lineNumber":143,"author":{"gitId":"ashleygoh1"},"content":" *","lastModifiedDate":"2024-02-25"},{"lineNumber":144,"author":{"gitId":"ashleygoh1"},"content":" * @throws ParseException if the given {@code internDuration} is invalid.","lastModifiedDate":"2024-02-25"},{"lineNumber":145,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":146,"author":{"gitId":"ashleygoh1"},"content":" public static InternDuration parseInternDuration(String internDuration) throws ParseException {","lastModifiedDate":"2024-02-25"},{"lineNumber":147,"author":{"gitId":"ashleygoh1"},"content":" String trimmedInternDuration \u003d internDuration.trim();","lastModifiedDate":"2024-02-25"},{"lineNumber":148,"author":{"gitId":"ashleygoh1"},"content":" if (!InternDuration.isValidInternDuration(trimmedInternDuration)) {","lastModifiedDate":"2024-02-25"},{"lineNumber":149,"author":{"gitId":"ashleygoh1"},"content":" throw new ParseException(InternDuration.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-25"},{"lineNumber":150,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":151,"author":{"gitId":"ashleygoh1"},"content":" return new InternDuration(trimmedInternDuration);","lastModifiedDate":"2024-02-25"},{"lineNumber":152,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":153,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":154,"author":{"gitId":"ashleygoh1"},"content":" /**","lastModifiedDate":"2024-02-25"},{"lineNumber":155,"author":{"gitId":"ashleygoh1"},"content":" * Parses a {@code String salary} into an {@code salary}.","lastModifiedDate":"2024-02-25"},{"lineNumber":156,"author":{"gitId":"ashleygoh1"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-02-25"},{"lineNumber":157,"author":{"gitId":"ashleygoh1"},"content":" *","lastModifiedDate":"2024-02-25"},{"lineNumber":158,"author":{"gitId":"ashleygoh1"},"content":" * @throws ParseException if the given {@code salary} is invalid.","lastModifiedDate":"2024-02-25"},{"lineNumber":159,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":160,"author":{"gitId":"ashleygoh1"},"content":" public static Salary parseSalary(String salary) throws ParseException {","lastModifiedDate":"2024-02-25"},{"lineNumber":161,"author":{"gitId":"ashleygoh1"},"content":" String trimmedSalary \u003d salary.trim();","lastModifiedDate":"2024-02-25"},{"lineNumber":162,"author":{"gitId":"ashleygoh1"},"content":" if (!Salary.isValidSalary(trimmedSalary)) {","lastModifiedDate":"2024-02-25"},{"lineNumber":163,"author":{"gitId":"ashleygoh1"},"content":" throw new ParseException(Salary.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-25"},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":165,"author":{"gitId":"ashleygoh1"},"content":" return new Salary(trimmedSalary);","lastModifiedDate":"2024-02-25"},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":167,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":168,"author":{"gitId":"Jawad280"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":169,"author":{"gitId":"Jawad280"},"content":" * Parses a {@code String note} into an {@code note}.","lastModifiedDate":"2024-03-20"},{"lineNumber":170,"author":{"gitId":"Jawad280"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-20"},{"lineNumber":171,"author":{"gitId":"Jawad280"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":172,"author":{"gitId":"Jawad280"},"content":" * @throws ParseException if the given {@code note} is invalid.","lastModifiedDate":"2024-03-20"},{"lineNumber":173,"author":{"gitId":"Jawad280"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":174,"author":{"gitId":"Jawad280"},"content":" public static Note parseNote(String note) throws ParseException {","lastModifiedDate":"2024-03-20"},{"lineNumber":175,"author":{"gitId":"Jawad280"},"content":" String trimmedNote \u003d note.trim();","lastModifiedDate":"2024-03-20"},{"lineNumber":176,"author":{"gitId":"Jawad280"},"content":" return new Note(trimmedNote);","lastModifiedDate":"2024-03-20"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":178,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"Jawad280":11,"ashleygoh1":57,"-":110}},{"path":"src/main/java/seedu/address/logic/parser/ViewCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-02-26"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-02-26"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-02-26"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"import seedu.address.logic.commands.ViewCommand;","lastModifiedDate":"2024-02-26"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-02-26"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":"/**","lastModifiedDate":"2024-02-26"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":" * Parses input arguments and creates a new ViewCommand object","lastModifiedDate":"2024-02-26"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":" */","lastModifiedDate":"2024-02-26"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":"public class ViewCommandParser {","lastModifiedDate":"2024-02-26"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":" /**","lastModifiedDate":"2024-02-26"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":" * Parses the given {@code String} of arguments in the context of the ViewCommand","lastModifiedDate":"2024-02-26"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":" * and returns a ViewCommand object for execution.","lastModifiedDate":"2024-02-26"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-02-26"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":" */","lastModifiedDate":"2024-02-26"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":" public ViewCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-02-26"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":" try {","lastModifiedDate":"2024-02-26"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2024-02-26"},{"lineNumber":21,"author":{"gitId":"Jawad280"},"content":" return new ViewCommand(index);","lastModifiedDate":"2024-02-26"},{"lineNumber":22,"author":{"gitId":"Jawad280"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-02-26"},{"lineNumber":23,"author":{"gitId":"Jawad280"},"content":" throw new ParseException(","lastModifiedDate":"2024-02-26"},{"lineNumber":24,"author":{"gitId":"Jawad280"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, ViewCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-02-26"},{"lineNumber":25,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":26,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":27,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-02-26"}],"authorContributionMap":{"Jawad280":27}},{"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":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.UniquePersonList;","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Wraps all data at the address-book level","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Duplicates are not allowed (by .isSamePerson comparison)","lastModifiedDate":"2018-04-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class AddressBook implements ReadOnlyAddressBook {","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private final UniquePersonList persons;","lastModifiedDate":"2016-08-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-19"},{"lineNumber":21,"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":22,"author":{"gitId":"-"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2016-10-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-19"},{"lineNumber":24,"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":25,"author":{"gitId":"-"},"content":" * among constructors.","lastModifiedDate":"2016-10-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" {","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" persons \u003d new UniquePersonList();","lastModifiedDate":"2016-08-26"},{"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() {}","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":" * Creates an AddressBook using the Persons in the {@code toBeCopied}","lastModifiedDate":"2018-03-29"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public AddressBook(ReadOnlyAddressBook toBeCopied) {","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2016-12-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" resetData(toBeCopied);","lastModifiedDate":"2016-12-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":41,"author":{"gitId":"-"},"content":" //// list overwrite operations","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Replaces the contents of the person list with {@code persons}.","lastModifiedDate":"2018-08-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2018-08-07"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void setPersons(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-08-07"},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.persons.setPersons(persons);","lastModifiedDate":"2016-10-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code AddressBook} with {@code newData}.","lastModifiedDate":"2017-08-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyAddressBook newData) {","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" requireNonNull(newData);","lastModifiedDate":"2017-05-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" setPersons(newData.getPersonList());","lastModifiedDate":"2018-03-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" //// person-level operations","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":63,"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":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return persons.contains(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-09-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * The person must not already exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void addPerson(Person p) {","lastModifiedDate":"2018-08-07"},{"lineNumber":75,"author":{"gitId":"-"},"content":" persons.add(p);","lastModifiedDate":"2018-03-29"},{"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-12-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2018-01-10"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":81,"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":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":84,"author":{"gitId":"-"},"content":" requireNonNull(editedPerson);","lastModifiedDate":"2018-01-10"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" persons.setPerson(target, editedPerson);","lastModifiedDate":"2018-03-29"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * Removes {@code key} from this {@code AddressBook}.","lastModifiedDate":"2017-08-16"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * {@code key} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void removePerson(Person key) {","lastModifiedDate":"2018-08-07"},{"lineNumber":94,"author":{"gitId":"-"},"content":" persons.remove(key);","lastModifiedDate":"2018-02-28"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" //// util methods","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":" .add(\"persons\", persons)","lastModifiedDate":"2019-02-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"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-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":108,"author":{"gitId":"Jawad280"},"content":" ObservableList\u003cPerson\u003e personList \u003d persons.asUnmodifiableObservableList();","lastModifiedDate":"2024-02-26"},{"lineNumber":109,"author":{"gitId":"Jawad280"},"content":" // Sort the list","lastModifiedDate":"2024-02-26"},{"lineNumber":110,"author":{"gitId":"Jawad280"},"content":" personList \u003d personList.sorted();","lastModifiedDate":"2024-02-26"},{"lineNumber":111,"author":{"gitId":"Jawad280"},"content":" return personList;","lastModifiedDate":"2024-02-26"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-01"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-01"},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":115,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"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 AddressBook)) {","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":" AddressBook otherAddressBook \u003d (AddressBook) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" return persons.equals(otherAddressBook.persons);","lastModifiedDate":"2023-07-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":130,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":131,"author":{"gitId":"-"},"content":" return persons.hashCode();","lastModifiedDate":"2018-03-29"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"Jawad280":4,"-":129}},{"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":"chenyixin0"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2024-02-29"},{"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":"Jawad280"},"content":" Person choosePersonToView(Predicate\u003cPerson\u003e predicate);","lastModifiedDate":"2024-02-26"},{"lineNumber":89,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":90,"author":{"gitId":"chenyixin0"},"content":" FilteredList\u003cPerson\u003e generateNewFilteredPersonList(Predicate\u003cPerson\u003e predicate);","lastModifiedDate":"2024-02-29"},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"chenyixin0":3,"Jawad280":1,"-":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":"-"},"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":"-"},"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":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2018-01-10"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(this.addressBook.getPersonList());","lastModifiedDate":"2019-01-25"},{"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":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25"},{"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":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","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 setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"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":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":92,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":93,"author":{"gitId":"-"},"content":" return addressBook.hasPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":" addressBook.removePerson(target);","lastModifiedDate":"2019-01-25"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":102,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":103,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":104,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":109,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" addressBook.setPerson(target, editedPerson);","lastModifiedDate":"2019-01-25"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":114,"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":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":117,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10"},{"lineNumber":118,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11"},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":121,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":122,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":126,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":127,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05"},{"lineNumber":128,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":131,"author":{"gitId":"chenyixin0"},"content":" @Override","lastModifiedDate":"2024-02-29"},{"lineNumber":132,"author":{"gitId":"chenyixin0"},"content":" public FilteredList\u003cPerson\u003e generateNewFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2024-02-29"},{"lineNumber":133,"author":{"gitId":"chenyixin0"},"content":" requireNonNull(predicate);","lastModifiedDate":"2024-02-29"},{"lineNumber":134,"author":{"gitId":"chenyixin0"},"content":" return new FilteredList\u003c\u003e(filteredPersons, predicate);","lastModifiedDate":"2024-02-29"},{"lineNumber":135,"author":{"gitId":"chenyixin0"},"content":" //return filteredPersons;","lastModifiedDate":"2024-02-29"},{"lineNumber":136,"author":{"gitId":"chenyixin0"},"content":" }","lastModifiedDate":"2024-02-29"},{"lineNumber":137,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":138,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-02-26"},{"lineNumber":139,"author":{"gitId":"Jawad280"},"content":" public Person choosePersonToView(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2024-02-26"},{"lineNumber":140,"author":{"gitId":"Jawad280"},"content":" requireNonNull(predicate);","lastModifiedDate":"2024-02-26"},{"lineNumber":141,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":142,"author":{"gitId":"Jawad280"},"content":" for (Person p : filteredPersons) {","lastModifiedDate":"2024-02-26"},{"lineNumber":143,"author":{"gitId":"Jawad280"},"content":" if (predicate.test(p)) {","lastModifiedDate":"2024-02-26"},{"lineNumber":144,"author":{"gitId":"Jawad280"},"content":" return p;","lastModifiedDate":"2024-02-26"},{"lineNumber":145,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":146,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":147,"author":{"gitId":"Jawad280"},"content":" return null;","lastModifiedDate":"2024-02-26"},{"lineNumber":148,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":150,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":151,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":152,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31"},{"lineNumber":153,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":154,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":155,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":158,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31"},{"lineNumber":159,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":160,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":163,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":164,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13"},{"lineNumber":165,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13"},{"lineNumber":166,"author":{"gitId":"-"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons);","lastModifiedDate":"2023-07-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":168,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"chenyixin0":9,"Jawad280":11,"-":148}},{"path":"src/main/java/seedu/address/model/person/Address.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.AppUtil.checkArgument;","lastModifiedDate":"2024-02-26"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Represents a Person\u0027s address in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class Address {","lastModifiedDate":"2016-09-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Addresses can take any values, and it should not be blank\";","lastModifiedDate":"2024-02-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2024-02-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2024-02-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-02-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2024-02-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public final String value;","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Constructs an {@code Address}.","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @param address A valid address.","lastModifiedDate":"2017-05-30"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public Address(String address) {","lastModifiedDate":"2017-05-30"},{"lineNumber":26,"author":{"gitId":"ashleygoh1"},"content":" if (address.isEmpty()) {","lastModifiedDate":"2024-02-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":" value \u003d address;","lastModifiedDate":"2018-08-14"},{"lineNumber":28,"author":{"gitId":"ashleygoh1"},"content":" } else {","lastModifiedDate":"2024-02-26"},{"lineNumber":29,"author":{"gitId":"ashleygoh1"},"content":" checkArgument(isValidAddress(address), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-26"},{"lineNumber":30,"author":{"gitId":"ashleygoh1"},"content":" value \u003d address;","lastModifiedDate":"2024-02-26"},{"lineNumber":31,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-02-26"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid email.","lastModifiedDate":"2024-02-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static boolean isValidAddress(String test) {","lastModifiedDate":"2024-02-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-02-26"},{"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 String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24"},{"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 boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return true;","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":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" if (!(other instanceof Address)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return false;","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":" Address otherAddress \u003d (Address) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return value.equals(otherAddress.value);","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"ashleygoh1":5,"-":61}},{"path":"src/main/java/seedu/address/model/person/InternDuration.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ashleygoh1"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-02-25"},{"lineNumber":2,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":3,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-02-25"},{"lineNumber":4,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":5,"author":{"gitId":"ashleygoh1"},"content":"/**","lastModifiedDate":"2024-02-25"},{"lineNumber":6,"author":{"gitId":"ashleygoh1"},"content":" * Represents a Person\u0027s Intern Duration in the address book.","lastModifiedDate":"2024-02-25"},{"lineNumber":7,"author":{"gitId":"ashleygoh1"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidInternDuration(String)}","lastModifiedDate":"2024-02-25"},{"lineNumber":8,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":9,"author":{"gitId":"ashleygoh1"},"content":"public class InternDuration {","lastModifiedDate":"2024-02-25"},{"lineNumber":10,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":11,"author":{"gitId":"ashleygoh1"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Intern Duration can take any values, and it should not be blank\";","lastModifiedDate":"2024-02-25"},{"lineNumber":12,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":13,"author":{"gitId":"ashleygoh1"},"content":" /*","lastModifiedDate":"2024-02-25"},{"lineNumber":14,"author":{"gitId":"ashleygoh1"},"content":" * The first character of the intern duration must not be a whitespace,","lastModifiedDate":"2024-02-25"},{"lineNumber":15,"author":{"gitId":"ashleygoh1"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-02-25"},{"lineNumber":16,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":17,"author":{"gitId":"ashleygoh1"},"content":" public static final String VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2024-02-25"},{"lineNumber":18,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":19,"author":{"gitId":"ashleygoh1"},"content":" public final String value;","lastModifiedDate":"2024-02-25"},{"lineNumber":20,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":21,"author":{"gitId":"ashleygoh1"},"content":" /**","lastModifiedDate":"2024-02-25"},{"lineNumber":22,"author":{"gitId":"ashleygoh1"},"content":" * Constructs an {@code internDuration}.","lastModifiedDate":"2024-02-25"},{"lineNumber":23,"author":{"gitId":"ashleygoh1"},"content":" *","lastModifiedDate":"2024-02-25"},{"lineNumber":24,"author":{"gitId":"ashleygoh1"},"content":" * @param internDuration A valid intern duration.","lastModifiedDate":"2024-02-25"},{"lineNumber":25,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":26,"author":{"gitId":"ashleygoh1"},"content":" public InternDuration(String internDuration) {","lastModifiedDate":"2024-02-25"},{"lineNumber":27,"author":{"gitId":"ashleygoh1"},"content":" checkArgument(isValidInternDuration(internDuration), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-25"},{"lineNumber":28,"author":{"gitId":"ashleygoh1"},"content":" value \u003d internDuration;","lastModifiedDate":"2024-02-25"},{"lineNumber":29,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":30,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":31,"author":{"gitId":"ashleygoh1"},"content":" /**","lastModifiedDate":"2024-02-25"},{"lineNumber":32,"author":{"gitId":"ashleygoh1"},"content":" * Returns true if a given string is a valid intern duration.","lastModifiedDate":"2024-02-25"},{"lineNumber":33,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":34,"author":{"gitId":"ashleygoh1"},"content":" public static boolean isValidInternDuration(String test) {","lastModifiedDate":"2024-02-25"},{"lineNumber":35,"author":{"gitId":"ashleygoh1"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-02-25"},{"lineNumber":36,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":37,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":38,"author":{"gitId":"ashleygoh1"},"content":" @Override","lastModifiedDate":"2024-02-25"},{"lineNumber":39,"author":{"gitId":"ashleygoh1"},"content":" public String toString() {","lastModifiedDate":"2024-02-25"},{"lineNumber":40,"author":{"gitId":"ashleygoh1"},"content":" return value;","lastModifiedDate":"2024-02-25"},{"lineNumber":41,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":42,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":43,"author":{"gitId":"ashleygoh1"},"content":" @Override","lastModifiedDate":"2024-02-25"},{"lineNumber":44,"author":{"gitId":"ashleygoh1"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-02-25"},{"lineNumber":45,"author":{"gitId":"ashleygoh1"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-02-25"},{"lineNumber":46,"author":{"gitId":"ashleygoh1"},"content":" return true;","lastModifiedDate":"2024-02-25"},{"lineNumber":47,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":48,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":49,"author":{"gitId":"ashleygoh1"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-02-25"},{"lineNumber":50,"author":{"gitId":"ashleygoh1"},"content":" if (!(other instanceof InternDuration)) {","lastModifiedDate":"2024-02-25"},{"lineNumber":51,"author":{"gitId":"ashleygoh1"},"content":" return false;","lastModifiedDate":"2024-02-25"},{"lineNumber":52,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":53,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":54,"author":{"gitId":"ashleygoh1"},"content":" InternDuration otherInternDuration \u003d (InternDuration) other;","lastModifiedDate":"2024-02-25"},{"lineNumber":55,"author":{"gitId":"ashleygoh1"},"content":" return value.equals(otherInternDuration.value);","lastModifiedDate":"2024-02-25"},{"lineNumber":56,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":57,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":58,"author":{"gitId":"ashleygoh1"},"content":" @Override","lastModifiedDate":"2024-02-25"},{"lineNumber":59,"author":{"gitId":"ashleygoh1"},"content":" public int hashCode() {","lastModifiedDate":"2024-02-25"},{"lineNumber":60,"author":{"gitId":"ashleygoh1"},"content":" return value.hashCode();","lastModifiedDate":"2024-02-25"},{"lineNumber":61,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":62,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":63,"author":{"gitId":"ashleygoh1"},"content":"}","lastModifiedDate":"2024-02-25"}],"authorContributionMap":{"ashleygoh1":63}},{"path":"src/main/java/seedu/address/model/person/InterviewDate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ashleygoh1"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-02-25"},{"lineNumber":2,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":3,"author":{"gitId":"ashleygoh1"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-25"},{"lineNumber":4,"author":{"gitId":"ashleygoh1"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-25"},{"lineNumber":5,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":6,"author":{"gitId":"ashleygoh1"},"content":"/**","lastModifiedDate":"2024-02-25"},{"lineNumber":7,"author":{"gitId":"ashleygoh1"},"content":" * Represents a Person\u0027s interview date in the address book.","lastModifiedDate":"2024-02-26"},{"lineNumber":8,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":9,"author":{"gitId":"ashleygoh1"},"content":"public class InterviewDate {","lastModifiedDate":"2024-02-25"},{"lineNumber":10,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":11,"author":{"gitId":"ashleygoh1"},"content":" public final LocalDateTime value;","lastModifiedDate":"2024-02-25"},{"lineNumber":12,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":13,"author":{"gitId":"ashleygoh1"},"content":" private DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd-MM-yyyy HHmm\");","lastModifiedDate":"2024-02-25"},{"lineNumber":14,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":15,"author":{"gitId":"ashleygoh1"},"content":" /**","lastModifiedDate":"2024-02-25"},{"lineNumber":16,"author":{"gitId":"ashleygoh1"},"content":" * Constructs an {@code interview date}.","lastModifiedDate":"2024-02-25"},{"lineNumber":17,"author":{"gitId":"ashleygoh1"},"content":" *","lastModifiedDate":"2024-02-25"},{"lineNumber":18,"author":{"gitId":"ashleygoh1"},"content":" * @param interviewDate A valid interview date.","lastModifiedDate":"2024-02-25"},{"lineNumber":19,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":20,"author":{"gitId":"ashleygoh1"},"content":" public InterviewDate(String interviewDate) {","lastModifiedDate":"2024-02-25"},{"lineNumber":21,"author":{"gitId":"ashleygoh1"},"content":" if (interviewDate \u003d\u003d null) {","lastModifiedDate":"2024-02-26"},{"lineNumber":22,"author":{"gitId":"ashleygoh1"},"content":" value \u003d null;","lastModifiedDate":"2024-02-26"},{"lineNumber":23,"author":{"gitId":"ashleygoh1"},"content":" } else {","lastModifiedDate":"2024-02-26"},{"lineNumber":24,"author":{"gitId":"ashleygoh1"},"content":" value \u003d LocalDateTime.parse(interviewDate, formatter);","lastModifiedDate":"2024-02-25"},{"lineNumber":25,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":26,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":27,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":28,"author":{"gitId":"ashleygoh1"},"content":" @Override","lastModifiedDate":"2024-02-25"},{"lineNumber":29,"author":{"gitId":"ashleygoh1"},"content":" public String toString() {","lastModifiedDate":"2024-02-25"},{"lineNumber":30,"author":{"gitId":"ashleygoh1"},"content":" String str \u003d \"\";","lastModifiedDate":"2024-02-26"},{"lineNumber":31,"author":{"gitId":"ashleygoh1"},"content":" if (value !\u003d null) {","lastModifiedDate":"2024-02-26"},{"lineNumber":32,"author":{"gitId":"ashleygoh1"},"content":" str \u003d value.format(DateTimeFormatter.ofPattern(\"dd-MM-yyyy HHmm\"));","lastModifiedDate":"2024-02-26"},{"lineNumber":33,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":34,"author":{"gitId":"ashleygoh1"},"content":" return str;","lastModifiedDate":"2024-02-26"},{"lineNumber":35,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":36,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":37,"author":{"gitId":"ashleygoh1"},"content":" @Override","lastModifiedDate":"2024-02-25"},{"lineNumber":38,"author":{"gitId":"ashleygoh1"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-02-25"},{"lineNumber":39,"author":{"gitId":"ashleygoh1"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-02-25"},{"lineNumber":40,"author":{"gitId":"ashleygoh1"},"content":" return true;","lastModifiedDate":"2024-02-25"},{"lineNumber":41,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":42,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":43,"author":{"gitId":"ashleygoh1"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-02-25"},{"lineNumber":44,"author":{"gitId":"ashleygoh1"},"content":" // if (!(other instanceof InterviewDate)) {","lastModifiedDate":"2024-02-26"},{"lineNumber":45,"author":{"gitId":"ashleygoh1"},"content":" // return false;","lastModifiedDate":"2024-02-26"},{"lineNumber":46,"author":{"gitId":"ashleygoh1"},"content":" // }","lastModifiedDate":"2024-02-26"},{"lineNumber":47,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":48,"author":{"gitId":"ashleygoh1"},"content":" if (other \u003d\u003d null || getClass() !\u003d other.getClass()) {","lastModifiedDate":"2024-02-26"},{"lineNumber":49,"author":{"gitId":"ashleygoh1"},"content":" return false;","lastModifiedDate":"2024-02-26"},{"lineNumber":50,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":51,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":52,"author":{"gitId":"ashleygoh1"},"content":" InterviewDate otherInterviewDate \u003d (InterviewDate) other;","lastModifiedDate":"2024-02-25"},{"lineNumber":53,"author":{"gitId":"ashleygoh1"},"content":" if (value \u003d\u003d null) {","lastModifiedDate":"2024-02-26"},{"lineNumber":54,"author":{"gitId":"ashleygoh1"},"content":" return otherInterviewDate.value \u003d\u003d null;","lastModifiedDate":"2024-02-26"},{"lineNumber":55,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":56,"author":{"gitId":"ashleygoh1"},"content":" return value.equals(otherInterviewDate.value);","lastModifiedDate":"2024-02-25"},{"lineNumber":57,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":58,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":59,"author":{"gitId":"ashleygoh1"},"content":" @Override","lastModifiedDate":"2024-02-25"},{"lineNumber":60,"author":{"gitId":"ashleygoh1"},"content":" public int hashCode() {","lastModifiedDate":"2024-02-25"},{"lineNumber":61,"author":{"gitId":"ashleygoh1"},"content":" return value.hashCode();","lastModifiedDate":"2024-02-25"},{"lineNumber":62,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":63,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":64,"author":{"gitId":"ashleygoh1"},"content":"}","lastModifiedDate":"2024-02-25"}],"authorContributionMap":{"ashleygoh1":64}},{"path":"src/main/java/seedu/address/model/person/JobDescription.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ashleygoh1"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-02-25"},{"lineNumber":2,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":3,"author":{"gitId":"ashleygoh1"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-02-25"},{"lineNumber":4,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-02-25"},{"lineNumber":5,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":6,"author":{"gitId":"ashleygoh1"},"content":"/**","lastModifiedDate":"2024-02-25"},{"lineNumber":7,"author":{"gitId":"ashleygoh1"},"content":" * Represents a Person\u0027s job description in the address book.","lastModifiedDate":"2024-02-25"},{"lineNumber":8,"author":{"gitId":"ashleygoh1"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidJobDescription(String)}","lastModifiedDate":"2024-02-25"},{"lineNumber":9,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":10,"author":{"gitId":"ashleygoh1"},"content":"public class JobDescription {","lastModifiedDate":"2024-02-25"},{"lineNumber":11,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":12,"author":{"gitId":"ashleygoh1"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Job Description can take any values, and it should not be blank\";","lastModifiedDate":"2024-02-25"},{"lineNumber":13,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":14,"author":{"gitId":"ashleygoh1"},"content":" /*","lastModifiedDate":"2024-02-25"},{"lineNumber":15,"author":{"gitId":"ashleygoh1"},"content":" * The first character of the job description must not be a whitespace,","lastModifiedDate":"2024-02-25"},{"lineNumber":16,"author":{"gitId":"ashleygoh1"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-02-25"},{"lineNumber":17,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":18,"author":{"gitId":"ashleygoh1"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\S.*\";","lastModifiedDate":"2024-02-25"},{"lineNumber":19,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":20,"author":{"gitId":"ashleygoh1"},"content":" public final String value;","lastModifiedDate":"2024-02-25"},{"lineNumber":21,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":22,"author":{"gitId":"ashleygoh1"},"content":" /**","lastModifiedDate":"2024-02-25"},{"lineNumber":23,"author":{"gitId":"ashleygoh1"},"content":" * Constructs an {@code Job Description}.","lastModifiedDate":"2024-02-25"},{"lineNumber":24,"author":{"gitId":"ashleygoh1"},"content":" *","lastModifiedDate":"2024-02-25"},{"lineNumber":25,"author":{"gitId":"ashleygoh1"},"content":" * @param jobDescription A valid Job Description.","lastModifiedDate":"2024-02-25"},{"lineNumber":26,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":27,"author":{"gitId":"ashleygoh1"},"content":" public JobDescription(String jobDescription) {","lastModifiedDate":"2024-02-25"},{"lineNumber":28,"author":{"gitId":"ashleygoh1"},"content":" requireNonNull(jobDescription);","lastModifiedDate":"2024-02-25"},{"lineNumber":29,"author":{"gitId":"ashleygoh1"},"content":" checkArgument(isValidJobDescription(jobDescription), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-25"},{"lineNumber":30,"author":{"gitId":"ashleygoh1"},"content":" value \u003d jobDescription;","lastModifiedDate":"2024-02-25"},{"lineNumber":31,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":32,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":33,"author":{"gitId":"ashleygoh1"},"content":" /**","lastModifiedDate":"2024-02-25"},{"lineNumber":34,"author":{"gitId":"ashleygoh1"},"content":" * Returns true if a given string is a valid job description.","lastModifiedDate":"2024-02-25"},{"lineNumber":35,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":36,"author":{"gitId":"ashleygoh1"},"content":" public static boolean isValidJobDescription(String test) {","lastModifiedDate":"2024-02-25"},{"lineNumber":37,"author":{"gitId":"ashleygoh1"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-02-25"},{"lineNumber":38,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":39,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":40,"author":{"gitId":"ashleygoh1"},"content":" @Override","lastModifiedDate":"2024-02-25"},{"lineNumber":41,"author":{"gitId":"ashleygoh1"},"content":" public String toString() {","lastModifiedDate":"2024-02-25"},{"lineNumber":42,"author":{"gitId":"ashleygoh1"},"content":" return value;","lastModifiedDate":"2024-02-25"},{"lineNumber":43,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":44,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":45,"author":{"gitId":"ashleygoh1"},"content":" @Override","lastModifiedDate":"2024-02-25"},{"lineNumber":46,"author":{"gitId":"ashleygoh1"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-02-25"},{"lineNumber":47,"author":{"gitId":"ashleygoh1"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-02-25"},{"lineNumber":48,"author":{"gitId":"ashleygoh1"},"content":" return true;","lastModifiedDate":"2024-02-25"},{"lineNumber":49,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":50,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":51,"author":{"gitId":"ashleygoh1"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-02-25"},{"lineNumber":52,"author":{"gitId":"ashleygoh1"},"content":" if (!(other instanceof JobDescription)) {","lastModifiedDate":"2024-02-25"},{"lineNumber":53,"author":{"gitId":"ashleygoh1"},"content":" return false;","lastModifiedDate":"2024-02-25"},{"lineNumber":54,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":55,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":56,"author":{"gitId":"ashleygoh1"},"content":" JobDescription otherJobDescription \u003d (JobDescription) other;","lastModifiedDate":"2024-02-25"},{"lineNumber":57,"author":{"gitId":"ashleygoh1"},"content":" return value.equals(otherJobDescription.value);","lastModifiedDate":"2024-02-25"},{"lineNumber":58,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":59,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":60,"author":{"gitId":"ashleygoh1"},"content":" @Override","lastModifiedDate":"2024-02-25"},{"lineNumber":61,"author":{"gitId":"ashleygoh1"},"content":" public int hashCode() {","lastModifiedDate":"2024-02-25"},{"lineNumber":62,"author":{"gitId":"ashleygoh1"},"content":" return value.hashCode();","lastModifiedDate":"2024-02-25"},{"lineNumber":63,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":64,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":65,"author":{"gitId":"ashleygoh1"},"content":"}","lastModifiedDate":"2024-02-25"}],"authorContributionMap":{"ashleygoh1":65}},{"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":"ashleygoh1"},"content":" .anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(person.getCompanyName().fullName, keyword));","lastModifiedDate":"2024-02-25"},{"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":{"ashleygoh1":1,"-":43}},{"path":"src/main/java/seedu/address/model/person/Note.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":" * Represents a Person\u0027s name in the address book.","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidNote(String)}","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":"public class Note {","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":" public static final String VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Notes can take any values, and it should not be blank\";","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":" public final String value;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":" * Constructs a {@code Name}.","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":" * @param note A valid name.","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":" public Note(String note) {","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":" if (note.isEmpty()) {","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"Jawad280"},"content":" value \u003d \"\";","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"Jawad280"},"content":" } else {","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"Jawad280"},"content":" checkArgument(isValidNote(note), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"Jawad280"},"content":" value \u003d note;","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"Jawad280"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"Jawad280"},"content":" * Returns true if a given string is a valid note.","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"Jawad280"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"Jawad280"},"content":" public static boolean isValidNote(String test) {","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"Jawad280"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-22"},{"lineNumber":33,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"Jawad280"},"content":" public String toString() {","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"Jawad280"},"content":" return value;","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"Jawad280"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"Jawad280"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"Jawad280"},"content":" return true;","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"Jawad280"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"Jawad280"},"content":" if (!(other instanceof Note)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"Jawad280"},"content":" return false;","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"Jawad280"},"content":" Note otherNote \u003d (Note) other;","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"Jawad280"},"content":" return value.equals(otherNote.value);","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"Jawad280"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"Jawad280"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"Jawad280":61}},{"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.Objects;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":"public class Person implements Comparable\u003cPerson\u003e {","lastModifiedDate":"2024-02-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":17,"author":{"gitId":"ashleygoh1"},"content":" private final Name companyName;","lastModifiedDate":"2024-02-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19"},{"lineNumber":23,"author":{"gitId":"ashleygoh1"},"content":" private final Tag tag;","lastModifiedDate":"2024-02-25"},{"lineNumber":24,"author":{"gitId":"ashleygoh1"},"content":" private final JobDescription jobDescription;","lastModifiedDate":"2024-02-25"},{"lineNumber":25,"author":{"gitId":"ashleygoh1"},"content":" private final InterviewDate interviewDate;","lastModifiedDate":"2024-02-25"},{"lineNumber":26,"author":{"gitId":"ashleygoh1"},"content":" private final InternDuration internDuration;","lastModifiedDate":"2024-02-25"},{"lineNumber":27,"author":{"gitId":"ashleygoh1"},"content":" private final Salary salary;","lastModifiedDate":"2024-02-25"},{"lineNumber":28,"author":{"gitId":"Jawad280"},"content":" private final Note note;","lastModifiedDate":"2024-03-20"},{"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":"ashleygoh1"},"content":" public Person(Name companyName, Phone phone, Email email, Address address, Tag tag,","lastModifiedDate":"2024-02-25"},{"lineNumber":34,"author":{"gitId":"ashleygoh1"},"content":" JobDescription jobDescription, InterviewDate interviewDate,","lastModifiedDate":"2024-02-25"},{"lineNumber":35,"author":{"gitId":"Jawad280"},"content":" InternDuration internDuration, Salary salary, Note note) {","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"ashleygoh1"},"content":" requireAllNonNull(companyName, phone, email, tag, jobDescription);","lastModifiedDate":"2024-02-26"},{"lineNumber":37,"author":{"gitId":"ashleygoh1"},"content":" this.companyName \u003d companyName;","lastModifiedDate":"2024-02-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20"},{"lineNumber":41,"author":{"gitId":"ashleygoh1"},"content":" this.tag \u003d tag;","lastModifiedDate":"2024-02-25"},{"lineNumber":42,"author":{"gitId":"ashleygoh1"},"content":" this.jobDescription \u003d jobDescription;","lastModifiedDate":"2024-02-25"},{"lineNumber":43,"author":{"gitId":"ashleygoh1"},"content":" this.interviewDate \u003d interviewDate;","lastModifiedDate":"2024-02-25"},{"lineNumber":44,"author":{"gitId":"ashleygoh1"},"content":" this.internDuration \u003d internDuration;","lastModifiedDate":"2024-02-25"},{"lineNumber":45,"author":{"gitId":"ashleygoh1"},"content":" this.salary \u003d salary;","lastModifiedDate":"2024-02-25"},{"lineNumber":46,"author":{"gitId":"Jawad280"},"content":" this.note \u003d note;","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"ashleygoh1"},"content":" public Name getCompanyName() {","lastModifiedDate":"2024-02-25"},{"lineNumber":50,"author":{"gitId":"ashleygoh1"},"content":" return companyName;","lastModifiedDate":"2024-02-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return email;","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 Address getAddress() {","lastModifiedDate":"2017-07-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":65,"author":{"gitId":"ashleygoh1"},"content":" public Tag getTag() {","lastModifiedDate":"2024-02-25"},{"lineNumber":66,"author":{"gitId":"ashleygoh1"},"content":" return tag;","lastModifiedDate":"2024-02-25"},{"lineNumber":67,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":68,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":69,"author":{"gitId":"ashleygoh1"},"content":" public JobDescription getJobDescription() {","lastModifiedDate":"2024-02-25"},{"lineNumber":70,"author":{"gitId":"ashleygoh1"},"content":" return jobDescription;","lastModifiedDate":"2024-02-25"},{"lineNumber":71,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":72,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":73,"author":{"gitId":"ashleygoh1"},"content":" public InterviewDate getInterviewDate() {","lastModifiedDate":"2024-02-25"},{"lineNumber":74,"author":{"gitId":"ashleygoh1"},"content":" return interviewDate;","lastModifiedDate":"2024-02-25"},{"lineNumber":75,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":76,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":77,"author":{"gitId":"ashleygoh1"},"content":" public InternDuration getInternDuration() {","lastModifiedDate":"2024-02-25"},{"lineNumber":78,"author":{"gitId":"ashleygoh1"},"content":" return internDuration;","lastModifiedDate":"2024-02-25"},{"lineNumber":79,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":80,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":81,"author":{"gitId":"ashleygoh1"},"content":" public Salary getSalary() {","lastModifiedDate":"2024-02-25"},{"lineNumber":82,"author":{"gitId":"ashleygoh1"},"content":" return salary;","lastModifiedDate":"2024-02-25"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":84,"author":{"gitId":"Jawad280"},"content":" public Note getNote() {","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"Jawad280"},"content":" return note;","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":89,"author":{"gitId":"ashleygoh1"},"content":" * Returns true if both inputs have the same company name and job description.","lastModifiedDate":"2024-02-25"},{"lineNumber":90,"author":{"gitId":"ashleygoh1"},"content":" * This defines a weaker notion of equality between two inputs.","lastModifiedDate":"2024-02-25"},{"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":"ashleygoh1"},"content":" \u0026\u0026 otherPerson.getCompanyName().equals(getCompanyName())","lastModifiedDate":"2024-02-25"},{"lineNumber":99,"author":{"gitId":"ashleygoh1"},"content":" \u0026\u0026 otherPerson.getJobDescription().equals(getJobDescription());","lastModifiedDate":"2024-02-25"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":103,"author":{"gitId":"ashleygoh1"},"content":" * Returns true if both inputs have the same identity and data fields.","lastModifiedDate":"2024-02-25"},{"lineNumber":104,"author":{"gitId":"ashleygoh1"},"content":" * This defines a stronger notion of equality between two inputs.","lastModifiedDate":"2024-02-25"},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":108,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":109,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":112,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10"},{"lineNumber":114,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":117,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10"},{"lineNumber":118,"author":{"gitId":"ashleygoh1"},"content":" return companyName.equals(otherPerson.companyName)","lastModifiedDate":"2024-02-25"},{"lineNumber":119,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":122,"author":{"gitId":"ashleygoh1"},"content":" \u0026\u0026 tag.equals(otherPerson.tag)","lastModifiedDate":"2024-02-25"},{"lineNumber":123,"author":{"gitId":"ashleygoh1"},"content":" \u0026\u0026 jobDescription.equals(otherPerson.jobDescription)","lastModifiedDate":"2024-02-25"},{"lineNumber":124,"author":{"gitId":"ashleygoh1"},"content":" \u0026\u0026 interviewDate.equals(otherPerson.interviewDate)","lastModifiedDate":"2024-02-25"},{"lineNumber":125,"author":{"gitId":"ashleygoh1"},"content":" \u0026\u0026 internDuration.equals(otherPerson.internDuration)","lastModifiedDate":"2024-02-25"},{"lineNumber":126,"author":{"gitId":"ashleygoh1"},"content":" \u0026\u0026 salary.equals(otherPerson.salary);","lastModifiedDate":"2024-02-25"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":130,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":131,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":132,"author":{"gitId":"ashleygoh1"},"content":" return Objects.hash(companyName, phone, email, address, tag,","lastModifiedDate":"2024-02-25"},{"lineNumber":133,"author":{"gitId":"ashleygoh1"},"content":" jobDescription, interviewDate, internDuration, salary);","lastModifiedDate":"2024-02-25"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":137,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":138,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":139,"author":{"gitId":"ashleygoh1"},"content":" .add(\"name\", companyName)","lastModifiedDate":"2024-02-25"},{"lineNumber":140,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":143,"author":{"gitId":"ashleygoh1"},"content":" .add(\"tag\", tag)","lastModifiedDate":"2024-02-25"},{"lineNumber":144,"author":{"gitId":"ashleygoh1"},"content":" .add(\"job description\", jobDescription)","lastModifiedDate":"2024-02-25"},{"lineNumber":145,"author":{"gitId":"ashleygoh1"},"content":" .add(\"interview date\", interviewDate)","lastModifiedDate":"2024-02-25"},{"lineNumber":146,"author":{"gitId":"ashleygoh1"},"content":" .add(\"intern duration\", internDuration)","lastModifiedDate":"2024-02-25"},{"lineNumber":147,"author":{"gitId":"ashleygoh1"},"content":" .add(\"salary\", salary)","lastModifiedDate":"2024-02-25"},{"lineNumber":148,"author":{"gitId":"Jawad280"},"content":" .add(\"note\", note)","lastModifiedDate":"2024-03-20"},{"lineNumber":149,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":151,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-02-26"},{"lineNumber":152,"author":{"gitId":"Jawad280"},"content":" public int compareTo(Person otherPerson) {","lastModifiedDate":"2024-02-26"},{"lineNumber":153,"author":{"gitId":"Jawad280"},"content":" if (this.interviewDate.value !\u003d null \u0026\u0026 otherPerson.getInterviewDate().value !\u003d null) {","lastModifiedDate":"2024-02-26"},{"lineNumber":154,"author":{"gitId":"Jawad280"},"content":" return this.interviewDate.value.compareTo(otherPerson.getInterviewDate().value);","lastModifiedDate":"2024-02-26"},{"lineNumber":155,"author":{"gitId":"Jawad280"},"content":" } else if (this.interviewDate.value !\u003d null) {","lastModifiedDate":"2024-02-26"},{"lineNumber":156,"author":{"gitId":"Jawad280"},"content":" return -1;","lastModifiedDate":"2024-02-26"},{"lineNumber":157,"author":{"gitId":"Jawad280"},"content":" } else if (otherPerson.getInterviewDate().value !\u003d null) {","lastModifiedDate":"2024-02-26"},{"lineNumber":158,"author":{"gitId":"Jawad280"},"content":" return 1;","lastModifiedDate":"2024-02-26"},{"lineNumber":159,"author":{"gitId":"Jawad280"},"content":" } else {","lastModifiedDate":"2024-02-26"},{"lineNumber":160,"author":{"gitId":"Jawad280"},"content":" return 0;","lastModifiedDate":"2024-02-26"},{"lineNumber":161,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":162,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":164,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"Jawad280":19,"ashleygoh1":55,"-":90}},{"path":"src/main/java/seedu/address/model/person/Salary.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ashleygoh1"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-02-25"},{"lineNumber":2,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":3,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-02-25"},{"lineNumber":4,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":5,"author":{"gitId":"ashleygoh1"},"content":"/**","lastModifiedDate":"2024-02-25"},{"lineNumber":6,"author":{"gitId":"ashleygoh1"},"content":" * Represents a Person\u0027s salary in the address book.","lastModifiedDate":"2024-02-25"},{"lineNumber":7,"author":{"gitId":"ashleygoh1"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidSalary(String)}","lastModifiedDate":"2024-02-25"},{"lineNumber":8,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":9,"author":{"gitId":"ashleygoh1"},"content":"public class Salary {","lastModifiedDate":"2024-02-25"},{"lineNumber":10,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":11,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":12,"author":{"gitId":"ashleygoh1"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Salary should only contain numbers\";","lastModifiedDate":"2024-02-26"},{"lineNumber":13,"author":{"gitId":"ashleygoh1"},"content":" public static final String VALIDATION_REGEX \u003d \"[1-9]\\\\d*\";","lastModifiedDate":"2024-02-26"},{"lineNumber":14,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":15,"author":{"gitId":"ashleygoh1"},"content":" public final String value;","lastModifiedDate":"2024-02-25"},{"lineNumber":16,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":17,"author":{"gitId":"ashleygoh1"},"content":" /**","lastModifiedDate":"2024-02-25"},{"lineNumber":18,"author":{"gitId":"ashleygoh1"},"content":" * Constructs a {@code Salary}.","lastModifiedDate":"2024-02-25"},{"lineNumber":19,"author":{"gitId":"ashleygoh1"},"content":" *","lastModifiedDate":"2024-02-25"},{"lineNumber":20,"author":{"gitId":"ashleygoh1"},"content":" * @param salary A valid salary.","lastModifiedDate":"2024-02-25"},{"lineNumber":21,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":22,"author":{"gitId":"ashleygoh1"},"content":" public Salary(String salary) {","lastModifiedDate":"2024-02-25"},{"lineNumber":23,"author":{"gitId":"ashleygoh1"},"content":" checkArgument(isValidSalary(salary), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-25"},{"lineNumber":24,"author":{"gitId":"ashleygoh1"},"content":" value \u003d salary;","lastModifiedDate":"2024-02-25"},{"lineNumber":25,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":26,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":27,"author":{"gitId":"ashleygoh1"},"content":" /**","lastModifiedDate":"2024-02-25"},{"lineNumber":28,"author":{"gitId":"ashleygoh1"},"content":" * Returns true if a given string is a valid phone number.","lastModifiedDate":"2024-02-25"},{"lineNumber":29,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-25"},{"lineNumber":30,"author":{"gitId":"ashleygoh1"},"content":" public static boolean isValidSalary(String test) {","lastModifiedDate":"2024-02-25"},{"lineNumber":31,"author":{"gitId":"ashleygoh1"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-02-25"},{"lineNumber":32,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":33,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":34,"author":{"gitId":"ashleygoh1"},"content":" @Override","lastModifiedDate":"2024-02-25"},{"lineNumber":35,"author":{"gitId":"ashleygoh1"},"content":" public String toString() {","lastModifiedDate":"2024-02-25"},{"lineNumber":36,"author":{"gitId":"ashleygoh1"},"content":" return value;","lastModifiedDate":"2024-02-25"},{"lineNumber":37,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":38,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":39,"author":{"gitId":"ashleygoh1"},"content":" @Override","lastModifiedDate":"2024-02-25"},{"lineNumber":40,"author":{"gitId":"ashleygoh1"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-02-25"},{"lineNumber":41,"author":{"gitId":"ashleygoh1"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-02-25"},{"lineNumber":42,"author":{"gitId":"ashleygoh1"},"content":" return true;","lastModifiedDate":"2024-02-25"},{"lineNumber":43,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":44,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":45,"author":{"gitId":"ashleygoh1"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-02-25"},{"lineNumber":46,"author":{"gitId":"ashleygoh1"},"content":" if (!(other instanceof Salary)) {","lastModifiedDate":"2024-02-25"},{"lineNumber":47,"author":{"gitId":"ashleygoh1"},"content":" return false;","lastModifiedDate":"2024-02-25"},{"lineNumber":48,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":49,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":50,"author":{"gitId":"ashleygoh1"},"content":" Salary otherSalary \u003d (Salary) other;","lastModifiedDate":"2024-02-25"},{"lineNumber":51,"author":{"gitId":"ashleygoh1"},"content":" return value.equals(otherSalary.value);","lastModifiedDate":"2024-02-25"},{"lineNumber":52,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":53,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":54,"author":{"gitId":"ashleygoh1"},"content":" @Override","lastModifiedDate":"2024-02-25"},{"lineNumber":55,"author":{"gitId":"ashleygoh1"},"content":" public int hashCode() {","lastModifiedDate":"2024-02-25"},{"lineNumber":56,"author":{"gitId":"ashleygoh1"},"content":" return value.hashCode();","lastModifiedDate":"2024-02-25"},{"lineNumber":57,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":58,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":59,"author":{"gitId":"ashleygoh1"},"content":"}","lastModifiedDate":"2024-02-25"}],"authorContributionMap":{"ashleygoh1":59}},{"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":"2024-02-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-02-25"},{"lineNumber":11,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.InternDuration;","lastModifiedDate":"2024-02-25"},{"lineNumber":12,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.InterviewDate;","lastModifiedDate":"2024-02-25"},{"lineNumber":13,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.JobDescription;","lastModifiedDate":"2024-02-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-02-25"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":"import seedu.address.model.person.Note;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-02-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-02-25"},{"lineNumber":18,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.Salary;","lastModifiedDate":"2024-02-25"},{"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":"ashleygoh1"},"content":" new Person(new Name(\"FoodPanda\"), new Phone(\"12345678\"), new Email(\"panda@food.com\"),","lastModifiedDate":"2024-02-25"},{"lineNumber":28,"author":{"gitId":"ashleygoh1"},"content":" new Address(\"CBD\"), new Tag(\"F\"), new JobDescription(\"Front End Intern\"),","lastModifiedDate":"2024-02-25"},{"lineNumber":29,"author":{"gitId":"Jawad280"},"content":" new InterviewDate(\"15-04-2024 0900\"), new InternDuration(\"6 months\"), new Salary(\"500\"), new Note(\"\"))","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20"},{"lineNumber":34,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30"},{"lineNumber":45,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":50,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"Jawad280":2,"ashleygoh1":6,"-":42}},{"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 com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","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.person.Address;","lastModifiedDate":"2024-02-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-02-25"},{"lineNumber":9,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.InternDuration;","lastModifiedDate":"2024-02-25"},{"lineNumber":10,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.InterviewDate;","lastModifiedDate":"2024-02-25"},{"lineNumber":11,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.JobDescription;","lastModifiedDate":"2024-02-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-02-25"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":"import seedu.address.model.person.Note;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-02-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-02-25"},{"lineNumber":16,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.Salary;","lastModifiedDate":"2024-02-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"ashleygoh1"},"content":" private final String companyName;","lastModifiedDate":"2024-02-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"ashleygoh1"},"content":" private final String tag;","lastModifiedDate":"2024-02-25"},{"lineNumber":31,"author":{"gitId":"ashleygoh1"},"content":" private final String jobDescription;","lastModifiedDate":"2024-02-25"},{"lineNumber":32,"author":{"gitId":"ashleygoh1"},"content":" private final String interviewDate;","lastModifiedDate":"2024-02-25"},{"lineNumber":33,"author":{"gitId":"ashleygoh1"},"content":" private final String internDuration;","lastModifiedDate":"2024-02-25"},{"lineNumber":34,"author":{"gitId":"ashleygoh1"},"content":" private final String salary;","lastModifiedDate":"2024-02-25"},{"lineNumber":35,"author":{"gitId":"Jawad280"},"content":" private final String note;","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"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":"ashleygoh1"},"content":" public JsonAdaptedPerson(@JsonProperty(\"companyName\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2024-02-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"ashleygoh1"},"content":" @JsonProperty(\"tag\") String tag, @JsonProperty(\"jobDescription\") String jobDescription,","lastModifiedDate":"2024-02-25"},{"lineNumber":45,"author":{"gitId":"ashleygoh1"},"content":" @JsonProperty(\"interviewDate\") String interviewDate,","lastModifiedDate":"2024-02-25"},{"lineNumber":46,"author":{"gitId":"ashleygoh1"},"content":" @JsonProperty(\"internDuration\") String internDuration,","lastModifiedDate":"2024-02-25"},{"lineNumber":47,"author":{"gitId":"Jawad280"},"content":" @JsonProperty(\"salary\") String salary, @JsonProperty(\"note\") String note) {","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"ashleygoh1"},"content":" this.companyName \u003d name;","lastModifiedDate":"2024-02-25"},{"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":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"ashleygoh1"},"content":" this.tag \u003d tag;","lastModifiedDate":"2024-02-25"},{"lineNumber":53,"author":{"gitId":"ashleygoh1"},"content":" this.jobDescription \u003d jobDescription;","lastModifiedDate":"2024-02-25"},{"lineNumber":54,"author":{"gitId":"ashleygoh1"},"content":" this.interviewDate \u003d interviewDate;","lastModifiedDate":"2024-02-25"},{"lineNumber":55,"author":{"gitId":"ashleygoh1"},"content":" this.internDuration \u003d internDuration;","lastModifiedDate":"2024-02-25"},{"lineNumber":56,"author":{"gitId":"ashleygoh1"},"content":" this.salary \u003d salary;","lastModifiedDate":"2024-02-25"},{"lineNumber":57,"author":{"gitId":"Jawad280"},"content":" this.note \u003d note;","lastModifiedDate":"2024-03-20"},{"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"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"ashleygoh1"},"content":" companyName \u003d source.getCompanyName().fullName;","lastModifiedDate":"2024-02-25"},{"lineNumber":65,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"ashleygoh1"},"content":" tag \u003d source.getTag().tagName;","lastModifiedDate":"2024-02-25"},{"lineNumber":69,"author":{"gitId":"ashleygoh1"},"content":" jobDescription \u003d source.getJobDescription().value;","lastModifiedDate":"2024-02-25"},{"lineNumber":70,"author":{"gitId":"ashleygoh1"},"content":" interviewDate \u003d source.getInterviewDate().toString();","lastModifiedDate":"2024-02-25"},{"lineNumber":71,"author":{"gitId":"ashleygoh1"},"content":" internDuration \u003d source.getInternDuration().value;","lastModifiedDate":"2024-02-25"},{"lineNumber":72,"author":{"gitId":"ashleygoh1"},"content":" salary \u003d source.getSalary().value;","lastModifiedDate":"2024-02-25"},{"lineNumber":73,"author":{"gitId":"Jawad280"},"content":" note \u003d source.getNote().value;","lastModifiedDate":"2024-03-20"},{"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"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"ashleygoh1"},"content":" if (companyName \u003d\u003d null) {","lastModifiedDate":"2024-02-25"},{"lineNumber":84,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"ashleygoh1"},"content":" if (!Name.isValidName(companyName)) {","lastModifiedDate":"2024-02-25"},{"lineNumber":87,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"ashleygoh1"},"content":" final Name modelCompanyName \u003d new Name(companyName);","lastModifiedDate":"2024-02-25"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":112,"author":{"gitId":"ashleygoh1"},"content":" if (tag \u003d\u003d null) {","lastModifiedDate":"2024-02-25"},{"lineNumber":113,"author":{"gitId":"ashleygoh1"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Tag.class.getSimpleName()));","lastModifiedDate":"2024-02-25"},{"lineNumber":114,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":115,"author":{"gitId":"ashleygoh1"},"content":" if (!Tag.isValidTagName(tag)) {","lastModifiedDate":"2024-02-25"},{"lineNumber":116,"author":{"gitId":"ashleygoh1"},"content":" throw new IllegalValueException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-26"},{"lineNumber":117,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":118,"author":{"gitId":"ashleygoh1"},"content":" final Tag modelTag \u003d new Tag(tag);","lastModifiedDate":"2024-02-25"},{"lineNumber":119,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":120,"author":{"gitId":"ashleygoh1"},"content":" if (jobDescription \u003d\u003d null) {","lastModifiedDate":"2024-02-25"},{"lineNumber":121,"author":{"gitId":"ashleygoh1"},"content":" throw new IllegalValueException(","lastModifiedDate":"2024-02-25"},{"lineNumber":122,"author":{"gitId":"ashleygoh1"},"content":" String.format(MISSING_FIELD_MESSAGE_FORMAT, JobDescription.class.getSimpleName()));","lastModifiedDate":"2024-02-25"},{"lineNumber":123,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":124,"author":{"gitId":"ashleygoh1"},"content":" if (!JobDescription.isValidJobDescription(jobDescription)) {","lastModifiedDate":"2024-02-25"},{"lineNumber":125,"author":{"gitId":"ashleygoh1"},"content":" throw new IllegalValueException(JobDescription.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-25"},{"lineNumber":126,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":127,"author":{"gitId":"ashleygoh1"},"content":" final JobDescription modelJobDescription \u003d new JobDescription(jobDescription);","lastModifiedDate":"2024-02-25"},{"lineNumber":128,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":129,"author":{"gitId":"ashleygoh1"},"content":" final InterviewDate modelInterviewDate;","lastModifiedDate":"2024-02-26"},{"lineNumber":130,"author":{"gitId":"ashleygoh1"},"content":" if (interviewDate.isEmpty()) {","lastModifiedDate":"2024-02-26"},{"lineNumber":131,"author":{"gitId":"ashleygoh1"},"content":" modelInterviewDate \u003d new InterviewDate(null);","lastModifiedDate":"2024-02-26"},{"lineNumber":132,"author":{"gitId":"ashleygoh1"},"content":" } else {","lastModifiedDate":"2024-02-26"},{"lineNumber":133,"author":{"gitId":"ashleygoh1"},"content":" modelInterviewDate \u003d new InterviewDate(interviewDate);","lastModifiedDate":"2024-02-26"},{"lineNumber":134,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":135,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":136,"author":{"gitId":"ashleygoh1"},"content":" if (internDuration \u003d\u003d null) {","lastModifiedDate":"2024-02-25"},{"lineNumber":137,"author":{"gitId":"ashleygoh1"},"content":" throw new IllegalValueException(","lastModifiedDate":"2024-02-25"},{"lineNumber":138,"author":{"gitId":"ashleygoh1"},"content":" String.format(MISSING_FIELD_MESSAGE_FORMAT, InternDuration.class.getSimpleName()));","lastModifiedDate":"2024-02-25"},{"lineNumber":139,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":140,"author":{"gitId":"ashleygoh1"},"content":" if (!InternDuration.isValidInternDuration(internDuration)) {","lastModifiedDate":"2024-02-26"},{"lineNumber":141,"author":{"gitId":"ashleygoh1"},"content":" throw new IllegalValueException(InternDuration.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-25"},{"lineNumber":142,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":143,"author":{"gitId":"ashleygoh1"},"content":" final InternDuration modelInternDuration \u003d new InternDuration(internDuration);","lastModifiedDate":"2024-02-25"},{"lineNumber":144,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":145,"author":{"gitId":"ashleygoh1"},"content":" if (salary \u003d\u003d null) {","lastModifiedDate":"2024-02-25"},{"lineNumber":146,"author":{"gitId":"ashleygoh1"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Salary.class.getSimpleName()));","lastModifiedDate":"2024-02-25"},{"lineNumber":147,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":148,"author":{"gitId":"ashleygoh1"},"content":" if (!Salary.isValidSalary(salary)) {","lastModifiedDate":"2024-02-25"},{"lineNumber":149,"author":{"gitId":"ashleygoh1"},"content":" throw new IllegalValueException(Salary.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-26"},{"lineNumber":150,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-25"},{"lineNumber":151,"author":{"gitId":"ashleygoh1"},"content":" final Salary modelSalary \u003d new Salary(salary);","lastModifiedDate":"2024-02-25"},{"lineNumber":152,"author":{"gitId":"Jawad280"},"content":" final Note modelNote \u003d new Note(note);","lastModifiedDate":"2024-03-20"},{"lineNumber":153,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":154,"author":{"gitId":"ashleygoh1"},"content":" return new Person(modelCompanyName, modelPhone, modelEmail, modelAddress, modelTag,","lastModifiedDate":"2024-02-25"},{"lineNumber":155,"author":{"gitId":"Jawad280"},"content":" modelJobDescription, modelInterviewDate, modelInternDuration, modelSalary, modelNote);","lastModifiedDate":"2024-03-20"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":158,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"Jawad280":7,"ashleygoh1":72,"-":79}},{"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":"-"},"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":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-10-15"},{"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":"","lastModifiedDate":"2016-09-14"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * The UI component that is responsible for receiving user command inputs.","lastModifiedDate":"2017-08-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class CommandBox extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String ERROR_STYLE_CLASS \u003d \"error\";","lastModifiedDate":"2017-02-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"CommandBox.fxml\";","lastModifiedDate":"2017-04-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private final CommandExecutor commandExecutor;","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-14"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private TextField commandTextField;","lastModifiedDate":"2016-09-14"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Creates a {@code CommandBox} with the given {@code CommandExecutor}.","lastModifiedDate":"2020-05-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public CommandBox(CommandExecutor commandExecutor) {","lastModifiedDate":"2019-01-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" this.commandExecutor \u003d commandExecutor;","lastModifiedDate":"2018-12-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // calls #setStyleToDefault() whenever there is a change to the text of the command box.","lastModifiedDate":"2017-06-28"},{"lineNumber":31,"author":{"gitId":"-"},"content":" commandTextField.textProperty().addListener((unused1, unused2, unused3) -\u003e setStyleToDefault());","lastModifiedDate":"2017-06-28"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Handles the Enter button pressed event.","lastModifiedDate":"2017-08-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private void handleCommandEntered() {","lastModifiedDate":"2018-04-01"},{"lineNumber":39,"author":{"gitId":"-"},"content":" String commandText \u003d commandTextField.getText();","lastModifiedDate":"2020-12-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":" if (commandText.equals(\"\")) {","lastModifiedDate":"2020-12-04"},{"lineNumber":41,"author":{"gitId":"-"},"content":" return;","lastModifiedDate":"2020-12-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-12-04"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-12-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-02-05"},{"lineNumber":45,"author":{"gitId":"Jawad280"},"content":" CommandResult res \u003d commandExecutor.execute(commandText);","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"Jawad280"},"content":" System.out.println(res);","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"Jawad280"},"content":" if (res.getFeedbackToUser().startsWith(\"edit \")) {","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"Jawad280"},"content":" commandTextField.setText(res.getFeedbackToUser());","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"Jawad280"},"content":" } else {","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"-"},"content":" commandTextField.setText(\"\");","lastModifiedDate":"2016-09-14"},{"lineNumber":53,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2017-03-11"},{"lineNumber":55,"author":{"gitId":"-"},"content":" setStyleToIndicateCommandFailure();","lastModifiedDate":"2017-02-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-14"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-28"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Sets the command box style to use the default style.","lastModifiedDate":"2017-06-28"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28"},{"lineNumber":62,"author":{"gitId":"-"},"content":" private void setStyleToDefault() {","lastModifiedDate":"2017-06-28"},{"lineNumber":63,"author":{"gitId":"-"},"content":" commandTextField.getStyleClass().remove(ERROR_STYLE_CLASS);","lastModifiedDate":"2017-02-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-28"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * Sets the command box style to indicate a failed command.","lastModifiedDate":"2017-02-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28"},{"lineNumber":69,"author":{"gitId":"-"},"content":" private void setStyleToIndicateCommandFailure() {","lastModifiedDate":"2017-02-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" ObservableList\u003cString\u003e styleClass \u003d commandTextField.getStyleClass();","lastModifiedDate":"2017-03-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (styleClass.contains(ERROR_STYLE_CLASS)) {","lastModifiedDate":"2017-03-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return;","lastModifiedDate":"2017-03-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" styleClass.add(ERROR_STYLE_CLASS);","lastModifiedDate":"2017-03-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-14"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Represents a function that can execute commands.","lastModifiedDate":"2018-12-09"},{"lineNumber":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @FunctionalInterface","lastModifiedDate":"2018-12-09"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public interface CommandExecutor {","lastModifiedDate":"2018-12-09"},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":86,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":89,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2018-12-09"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":92,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"}],"authorContributionMap":{"Jawad280":8,"-":84}},{"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":"Jawad280"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2024-02-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2016-09-28"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-06-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-02-26"},{"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":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"Jawad280"},"content":" @FXML","lastModifiedDate":"2024-02-26"},{"lineNumber":56,"author":{"gitId":"Jawad280"},"content":" private VBox viewPanelPlaceholder;","lastModifiedDate":"2024-03-11"},{"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 MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":66,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21"},{"lineNumber":69,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21"},{"lineNumber":81,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","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":" /**","lastModifiedDate":"2016-12-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","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":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":107,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18"},{"lineNumber":108,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18"},{"lineNumber":109,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":111,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16"},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":117,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21"},{"lineNumber":118,"author":{"gitId":"-"},"content":" personListPanel \u003d new PersonListPanel(logic.getFilteredPersonList());","lastModifiedDate":"2019-01-25"},{"lineNumber":119,"author":{"gitId":"-"},"content":" personListPanelPlaceholder.getChildren().add(personListPanel.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09"},{"lineNumber":122,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getAddressBookFilePath());","lastModifiedDate":"2019-01-25"},{"lineNumber":125,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25"},{"lineNumber":128,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":131,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":132,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27"},{"lineNumber":133,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":134,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":135,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27"},{"lineNumber":136,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27"},{"lineNumber":137,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27"},{"lineNumber":138,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27"},{"lineNumber":139,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27"},{"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":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":144,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15"},{"lineNumber":145,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":146,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":147,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31"},{"lineNumber":148,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15"},{"lineNumber":149,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":150,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15"},{"lineNumber":151,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15"},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":155,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15"},{"lineNumber":156,"author":{"gitId":"-"},"content":" primaryStage.show();","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":"2016-08-18"},{"lineNumber":160,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18"},{"lineNumber":161,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":162,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":163,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18"},{"lineNumber":164,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":170,"author":{"gitId":"Jawad280"},"content":" /**","lastModifiedDate":"2024-02-26"},{"lineNumber":171,"author":{"gitId":"Jawad280"},"content":" * Views the person on the View Panel.","lastModifiedDate":"2024-02-26"},{"lineNumber":172,"author":{"gitId":"Jawad280"},"content":" */","lastModifiedDate":"2024-02-26"},{"lineNumber":173,"author":{"gitId":"Jawad280"},"content":" @FXML","lastModifiedDate":"2024-02-26"},{"lineNumber":174,"author":{"gitId":"chenyixin0"},"content":" // private void handleView(Person p, int displayIndex) {","lastModifiedDate":"2024-02-29"},{"lineNumber":175,"author":{"gitId":"chenyixin0"},"content":" // PersonCard viewPanel \u003d new PersonCard(p, displayIndex);","lastModifiedDate":"2024-02-29"},{"lineNumber":176,"author":{"gitId":"chenyixin0"},"content":" // //ViewPanel viewPanel \u003d new ViewPanel(p);","lastModifiedDate":"2024-02-29"},{"lineNumber":177,"author":{"gitId":"chenyixin0"},"content":" // //viewPanelPlaceHolder.getChildren().clear();","lastModifiedDate":"2024-02-29"},{"lineNumber":178,"author":{"gitId":"chenyixin0"},"content":" // viewPanelPlaceHolder.getChildren().add(viewPanel.getRoot());","lastModifiedDate":"2024-02-29"},{"lineNumber":179,"author":{"gitId":"chenyixin0"},"content":" // }","lastModifiedDate":"2024-02-29"},{"lineNumber":180,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":181,"author":{"gitId":"Jawad280"},"content":" // private void handleView(Person p) {","lastModifiedDate":"2024-03-11"},{"lineNumber":182,"author":{"gitId":"Jawad280"},"content":" // ViewPanel viewPanel \u003d new ViewPanel(p);","lastModifiedDate":"2024-03-11"},{"lineNumber":183,"author":{"gitId":"Jawad280"},"content":" // //viewPanelPlaceHolder.getChildren().clear();","lastModifiedDate":"2024-03-11"},{"lineNumber":184,"author":{"gitId":"Jawad280"},"content":" // VBox holder \u003d viewPanelPlaceHolder.getContent() \u003d\u003d null ? new VBox()","lastModifiedDate":"2024-03-11"},{"lineNumber":185,"author":{"gitId":"Jawad280"},"content":" // : (VBox) viewPanelPlaceHolder.getContent();","lastModifiedDate":"2024-03-11"},{"lineNumber":186,"author":{"gitId":"Jawad280"},"content":" // holder.getChildren().add(viewPanel.getRoot());","lastModifiedDate":"2024-03-11"},{"lineNumber":187,"author":{"gitId":"Jawad280"},"content":" // viewPanelPlaceHolder.setContent(holder);","lastModifiedDate":"2024-03-11"},{"lineNumber":188,"author":{"gitId":"Jawad280"},"content":" // }","lastModifiedDate":"2024-03-11"},{"lineNumber":189,"author":{"gitId":"chenyixin0"},"content":" private void handleView(Person p) {","lastModifiedDate":"2024-02-29"},{"lineNumber":190,"author":{"gitId":"chenyixin0"},"content":" ViewPanel viewPanel \u003d new ViewPanel(p);","lastModifiedDate":"2024-02-29"},{"lineNumber":191,"author":{"gitId":"Jawad280"},"content":" viewPanelPlaceholder.getChildren().add(viewPanel.getRoot());","lastModifiedDate":"2024-03-11"},{"lineNumber":192,"author":{"gitId":"chenyixin0"},"content":" }","lastModifiedDate":"2024-02-29"},{"lineNumber":193,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":195,"author":{"gitId":"-"},"content":" public PersonListPanel getPersonListPanel() {","lastModifiedDate":"2016-08-25"},{"lineNumber":196,"author":{"gitId":"-"},"content":" return personListPanel;","lastModifiedDate":"2018-08-14"},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":199,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":200,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":201,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":202,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09"},{"lineNumber":203,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":204,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09"},{"lineNumber":205,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":206,"author":{"gitId":"Jawad280"},"content":" // viewPanelPlaceHolder.setContent(null);","lastModifiedDate":"2024-03-11"},{"lineNumber":207,"author":{"gitId":"Jawad280"},"content":" viewPanelPlaceholder.getChildren().clear();","lastModifiedDate":"2024-03-11"},{"lineNumber":208,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09"},{"lineNumber":209,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":210,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":212,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":213,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09"},{"lineNumber":214,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":215,"author":{"gitId":"Jawad280"},"content":" if (commandResult.getViewPerson() !\u003d null) {","lastModifiedDate":"2024-02-26"},{"lineNumber":216,"author":{"gitId":"Jawad280"},"content":" Person p \u003d commandResult.getViewPerson();","lastModifiedDate":"2024-02-26"},{"lineNumber":217,"author":{"gitId":"chenyixin0"},"content":" handleView(p);","lastModifiedDate":"2024-02-29"},{"lineNumber":218,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":219,"author":{"gitId":"Jawad280"},"content":" if (commandResult.getViewList() !\u003d null) {","lastModifiedDate":"2024-03-11"},{"lineNumber":220,"author":{"gitId":"chenyixin0"},"content":" for (Person p : commandResult.getViewList()) {","lastModifiedDate":"2024-02-29"},{"lineNumber":221,"author":{"gitId":"chenyixin0"},"content":" handleView(p);","lastModifiedDate":"2024-02-29"},{"lineNumber":222,"author":{"gitId":"chenyixin0"},"content":" }","lastModifiedDate":"2024-02-29"},{"lineNumber":223,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":225,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":226,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09"},{"lineNumber":227,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":229,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":230,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09"},{"lineNumber":231,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13"},{"lineNumber":232,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09"},{"lineNumber":233,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09"},{"lineNumber":234,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":235,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":236,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"chenyixin0":15,"Jawad280":24,"-":197}},{"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 javafx.fxml.FXML;","lastModifiedDate":"2016-09-21"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2017-08-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2016-09-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25"},{"lineNumber":21,"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":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public final Person person;","lastModifiedDate":"2018-01-10"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private Label address;","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"ashleygoh1"},"content":" private Label tags;","lastModifiedDate":"2024-02-25"},{"lineNumber":40,"author":{"gitId":"ashleygoh1"},"content":" @FXML","lastModifiedDate":"2024-02-25"},{"lineNumber":41,"author":{"gitId":"ashleygoh1"},"content":" private Label jobDescription;","lastModifiedDate":"2024-02-25"},{"lineNumber":42,"author":{"gitId":"ashleygoh1"},"content":" @FXML","lastModifiedDate":"2024-02-25"},{"lineNumber":43,"author":{"gitId":"ashleygoh1"},"content":" private Label interviewDate;","lastModifiedDate":"2024-02-25"},{"lineNumber":44,"author":{"gitId":"ashleygoh1"},"content":" @FXML","lastModifiedDate":"2024-02-25"},{"lineNumber":45,"author":{"gitId":"ashleygoh1"},"content":" private Label internDuration;","lastModifiedDate":"2024-02-25"},{"lineNumber":46,"author":{"gitId":"ashleygoh1"},"content":" @FXML","lastModifiedDate":"2024-02-25"},{"lineNumber":47,"author":{"gitId":"ashleygoh1"},"content":" private Label salary;","lastModifiedDate":"2024-02-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21"},{"lineNumber":56,"author":{"gitId":"ashleygoh1"},"content":" name.setText(person.getCompanyName().fullName);","lastModifiedDate":"2024-02-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" address.setText(person.getAddress().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":60,"author":{"gitId":"ashleygoh1"},"content":" tags.setText(person.getTag().tagName);","lastModifiedDate":"2024-02-25"},{"lineNumber":61,"author":{"gitId":"ashleygoh1"},"content":" jobDescription.setText(person.getJobDescription().value);","lastModifiedDate":"2024-02-25"},{"lineNumber":62,"author":{"gitId":"ashleygoh1"},"content":" interviewDate.setText(person.getInterviewDate().toString());","lastModifiedDate":"2024-02-25"},{"lineNumber":63,"author":{"gitId":"ashleygoh1"},"content":" internDuration.setText(person.getInternDuration().value);","lastModifiedDate":"2024-02-25"},{"lineNumber":64,"author":{"gitId":"ashleygoh1"},"content":" salary.setText(person.getSalary().value);","lastModifiedDate":"2024-02-25"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"ashleygoh1":15,"-":51}},{"path":"src/main/java/seedu/address/ui/ViewPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-02-26"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-02-26"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-02-26"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-02-26"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2024-02-26"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-02-26"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":"/**","lastModifiedDate":"2024-02-26"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":" * A UI component that displays information of a {@code Person}.","lastModifiedDate":"2024-02-26"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":" */","lastModifiedDate":"2024-02-26"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":"public class ViewPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-02-26"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":" private static final String FXML \u003d \"ViewPanel.fxml\";","lastModifiedDate":"2024-02-26"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":" public final Person person;","lastModifiedDate":"2024-02-26"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":" @FXML","lastModifiedDate":"2024-02-26"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":" private VBox viewPanel;","lastModifiedDate":"2024-02-26"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":" @FXML","lastModifiedDate":"2024-02-26"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":" private Label companyName;","lastModifiedDate":"2024-02-26"},{"lineNumber":21,"author":{"gitId":"Jawad280"},"content":" @FXML","lastModifiedDate":"2024-02-26"},{"lineNumber":22,"author":{"gitId":"Jawad280"},"content":" private Label jobDescription;","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"Jawad280"},"content":" @FXML","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"Jawad280"},"content":" private Label phone;","lastModifiedDate":"2024-02-26"},{"lineNumber":25,"author":{"gitId":"Jawad280"},"content":" @FXML","lastModifiedDate":"2024-02-26"},{"lineNumber":26,"author":{"gitId":"Jawad280"},"content":" private Label address;","lastModifiedDate":"2024-02-26"},{"lineNumber":27,"author":{"gitId":"Jawad280"},"content":" @FXML","lastModifiedDate":"2024-02-26"},{"lineNumber":28,"author":{"gitId":"Jawad280"},"content":" private Label email;","lastModifiedDate":"2024-02-26"},{"lineNumber":29,"author":{"gitId":"Jawad280"},"content":" @FXML","lastModifiedDate":"2024-02-26"},{"lineNumber":30,"author":{"gitId":"Jawad280"},"content":" private Label tag;","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"Jawad280"},"content":" @FXML","lastModifiedDate":"2024-02-26"},{"lineNumber":32,"author":{"gitId":"Jawad280"},"content":" private Label interviewDate;","lastModifiedDate":"2024-02-26"},{"lineNumber":33,"author":{"gitId":"Jawad280"},"content":" @FXML","lastModifiedDate":"2024-02-26"},{"lineNumber":34,"author":{"gitId":"Jawad280"},"content":" private Label internDuration;","lastModifiedDate":"2024-02-26"},{"lineNumber":35,"author":{"gitId":"Jawad280"},"content":" @FXML","lastModifiedDate":"2024-02-26"},{"lineNumber":36,"author":{"gitId":"Jawad280"},"content":" private Label salary;","lastModifiedDate":"2024-02-26"},{"lineNumber":37,"author":{"gitId":"Jawad280"},"content":" @FXML","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"Jawad280"},"content":" private Label note;","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":40,"author":{"gitId":"Jawad280"},"content":" /**","lastModifiedDate":"2024-02-26"},{"lineNumber":41,"author":{"gitId":"Jawad280"},"content":" * Creates a {@code PersonCode} with the given {@code Person} to display.","lastModifiedDate":"2024-02-26"},{"lineNumber":42,"author":{"gitId":"Jawad280"},"content":" */","lastModifiedDate":"2024-02-26"},{"lineNumber":43,"author":{"gitId":"Jawad280"},"content":" public ViewPanel(Person person) {","lastModifiedDate":"2024-02-26"},{"lineNumber":44,"author":{"gitId":"Jawad280"},"content":" super(FXML);","lastModifiedDate":"2024-02-26"},{"lineNumber":45,"author":{"gitId":"Jawad280"},"content":" this.person \u003d person;","lastModifiedDate":"2024-02-26"},{"lineNumber":46,"author":{"gitId":"Jawad280"},"content":" companyName.setText(person.getCompanyName().fullName);","lastModifiedDate":"2024-02-26"},{"lineNumber":47,"author":{"gitId":"Jawad280"},"content":" jobDescription.setText(person.getJobDescription().value);","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"Jawad280"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2024-02-26"},{"lineNumber":49,"author":{"gitId":"Jawad280"},"content":" address.setText(person.getAddress().value);","lastModifiedDate":"2024-02-26"},{"lineNumber":50,"author":{"gitId":"Jawad280"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2024-02-26"},{"lineNumber":51,"author":{"gitId":"Jawad280"},"content":" interviewDate.setText(\"Interview : \" + person.getInterviewDate().toString());","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"Jawad280"},"content":" tag.setText(person.getTag().tagName);","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"Jawad280"},"content":" internDuration.setText(person.getInternDuration().value);","lastModifiedDate":"2024-02-26"},{"lineNumber":54,"author":{"gitId":"Jawad280"},"content":" salary.setText(\"$\" + person.getSalary().value);","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"Jawad280"},"content":" note.setText(person.getNote().value);","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":57,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-02-26"}],"authorContributionMap":{"Jawad280":57}},{"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":"Jawad280"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":354,"author":{"gitId":"Jawad280"},"content":"/*","lastModifiedDate":"2024-03-11"},{"lineNumber":355,"author":{"gitId":"Jawad280"},"content":"Custom Styles","lastModifiedDate":"2024-03-11"},{"lineNumber":356,"author":{"gitId":"Jawad280"},"content":"*/","lastModifiedDate":"2024-03-11"},{"lineNumber":357,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":358,"author":{"gitId":"Jawad280"},"content":".cell-header {","lastModifiedDate":"2024-03-11"},{"lineNumber":359,"author":{"gitId":"Jawad280"},"content":" -fx-font-family: Arial;","lastModifiedDate":"2024-03-11"},{"lineNumber":360,"author":{"gitId":"Jawad280"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2024-03-11"},{"lineNumber":361,"author":{"gitId":"Jawad280"},"content":" -fx-font-size: 32px;","lastModifiedDate":"2024-03-11"},{"lineNumber":362,"author":{"gitId":"Jawad280"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-11"},{"lineNumber":363,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-03-11"},{"lineNumber":364,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":365,"author":{"gitId":"Jawad280"},"content":".cell-subHeader {","lastModifiedDate":"2024-03-11"},{"lineNumber":366,"author":{"gitId":"Jawad280"},"content":" -fx-font-family: Arial;","lastModifiedDate":"2024-03-11"},{"lineNumber":367,"author":{"gitId":"Jawad280"},"content":" -fx-font-weight: 700;","lastModifiedDate":"2024-03-11"},{"lineNumber":368,"author":{"gitId":"Jawad280"},"content":" -fx-font-size: 24px;","lastModifiedDate":"2024-03-11"},{"lineNumber":369,"author":{"gitId":"Jawad280"},"content":" -fx-text-fill: #0065d6;","lastModifiedDate":"2024-03-11"},{"lineNumber":370,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-03-11"},{"lineNumber":371,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":372,"author":{"gitId":"Jawad280"},"content":".cell-content {","lastModifiedDate":"2024-03-11"},{"lineNumber":373,"author":{"gitId":"Jawad280"},"content":" -fx-font-family: Arial;","lastModifiedDate":"2024-03-11"},{"lineNumber":374,"author":{"gitId":"Jawad280"},"content":" -fx-font-size: 20px;","lastModifiedDate":"2024-03-11"},{"lineNumber":375,"author":{"gitId":"Jawad280"},"content":" -fx-text-fill: #2a3166;","lastModifiedDate":"2024-03-11"},{"lineNumber":376,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-03-11"},{"lineNumber":377,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":378,"author":{"gitId":"Jawad280"},"content":".cell-content-header {","lastModifiedDate":"2024-03-11"},{"lineNumber":379,"author":{"gitId":"Jawad280"},"content":" -fx-font-family: Arial;","lastModifiedDate":"2024-03-11"},{"lineNumber":380,"author":{"gitId":"Jawad280"},"content":" -fx-font-weight: 700;","lastModifiedDate":"2024-03-11"},{"lineNumber":381,"author":{"gitId":"Jawad280"},"content":" -fx-font-size: 20px;","lastModifiedDate":"2024-03-11"},{"lineNumber":382,"author":{"gitId":"Jawad280"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-11"},{"lineNumber":383,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-03-11"},{"lineNumber":384,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":385,"author":{"gitId":"Jawad280"},"content":".cell-date {","lastModifiedDate":"2024-03-11"},{"lineNumber":386,"author":{"gitId":"Jawad280"},"content":" -fx-font-family: Arial;","lastModifiedDate":"2024-03-11"},{"lineNumber":387,"author":{"gitId":"Jawad280"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2024-03-11"},{"lineNumber":388,"author":{"gitId":"Jawad280"},"content":" -fx-font-size: 24px;","lastModifiedDate":"2024-03-11"},{"lineNumber":389,"author":{"gitId":"Jawad280"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-11"},{"lineNumber":390,"author":{"gitId":"Jawad280"},"content":" -fx-padding: 15;","lastModifiedDate":"2024-03-11"},{"lineNumber":391,"author":{"gitId":"Jawad280"},"content":" -fx-background-color: #Ce1313;","lastModifiedDate":"2024-03-11"},{"lineNumber":392,"author":{"gitId":"Jawad280"},"content":" -fx-background-radius: 10;","lastModifiedDate":"2024-03-11"},{"lineNumber":393,"author":{"gitId":"Jawad280"},"content":" -fx-alignment: CENTER;","lastModifiedDate":"2024-03-11"},{"lineNumber":394,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-03-11"},{"lineNumber":395,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":396,"author":{"gitId":"Jawad280"},"content":".cell-tag {","lastModifiedDate":"2024-03-11"},{"lineNumber":397,"author":{"gitId":"Jawad280"},"content":" -fx-font-family: Arial;","lastModifiedDate":"2024-03-11"},{"lineNumber":398,"author":{"gitId":"Jawad280"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2024-03-11"},{"lineNumber":399,"author":{"gitId":"Jawad280"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2024-03-11"},{"lineNumber":400,"author":{"gitId":"Jawad280"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-11"},{"lineNumber":401,"author":{"gitId":"Jawad280"},"content":" -fx-background-color: #0065d6;","lastModifiedDate":"2024-03-11"},{"lineNumber":402,"author":{"gitId":"Jawad280"},"content":" -fx-padding: 8;","lastModifiedDate":"2024-03-11"},{"lineNumber":403,"author":{"gitId":"Jawad280"},"content":" -fx-background-radius: 3;","lastModifiedDate":"2024-03-11"},{"lineNumber":404,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-03-11"},{"lineNumber":405,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":406,"author":{"gitId":"Jawad280"},"content":".view-panel-cell {","lastModifiedDate":"2024-03-11"},{"lineNumber":407,"author":{"gitId":"Jawad280"},"content":" -fx-background-color: white;","lastModifiedDate":"2024-03-11"},{"lineNumber":408,"author":{"gitId":"Jawad280"},"content":" -fx-background-radius: 10;","lastModifiedDate":"2024-03-11"},{"lineNumber":409,"author":{"gitId":"Jawad280"},"content":" -width: 450;","lastModifiedDate":"2024-03-11"},{"lineNumber":410,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"Jawad280":58,"-":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":"Jawad280"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-02-26"},{"lineNumber":15,"author":{"gitId":"chenyixin0"},"content":"\u003c?import javafx.scene.control.ScrollPane?\u003e","lastModifiedDate":"2024-02-29"},{"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":"-"},"content":" title\u003d\"Address App\" minWidth\u003d\"450\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2018-12-08"},{"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":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2017-05-15"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"resultDisplayPlaceholder\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2017-05-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" minHeight\u003d\"100\" prefHeight\u003d\"100\" maxHeight\u003d\"100\"\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":51,"author":{"gitId":"Jawad280"},"content":" \u003cSplitPane VBox.vgrow\u003d\"ALWAYS\" HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-02-26"},{"lineNumber":52,"author":{"gitId":"Jawad280"},"content":" \u003cVBox fx:id\u003d\"personList\" styleClass\u003d\"pane-with-border\" minWidth\u003d\"300\" prefWidth\u003d\"400\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-02-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"personListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2017-06-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":59,"author":{"gitId":"Jawad280"},"content":" \u003cScrollPane fitToHeight\u003d\"true\" fitToWidth\u003d\"true\" hbarPolicy\u003d\"NEVER\" minWidth\u003d\"475\" maxWidth\u003d\"475\"\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"chenyixin0"},"content":" \u003ccontent\u003e","lastModifiedDate":"2024-02-29"},{"lineNumber":61,"author":{"gitId":"Jawad280"},"content":" \u003cVBox styleClass\u003d\"pane-with-border\" VBox.vgrow\u003d\"ALWAYS\" prefWidth\u003d\"475\" \u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"Jawad280"},"content":" \u003cVBox VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"viewPanelPlaceholder\" spacing\u003d\"20\"\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"Jawad280"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-02-26"},{"lineNumber":64,"author":{"gitId":"Jawad280"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2024-02-26"},{"lineNumber":65,"author":{"gitId":"Jawad280"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-02-26"},{"lineNumber":66,"author":{"gitId":"Jawad280"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-02-26"},{"lineNumber":67,"author":{"gitId":"Jawad280"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":68,"author":{"gitId":"chenyixin0"},"content":" \u003c/content\u003e","lastModifiedDate":"2024-02-29"},{"lineNumber":69,"author":{"gitId":"chenyixin0"},"content":" \u003c/ScrollPane\u003e","lastModifiedDate":"2024-02-29"},{"lineNumber":70,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":71,"author":{"gitId":"Jawad280"},"content":" \u003c/SplitPane\u003e","lastModifiedDate":"2024-02-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-26"},{"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":{"chenyixin0":5,"Jawad280":12,"-":60}},{"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":"ashleygoh1"},"content":" \u003cLabel fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2024-02-25"},{"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":"-"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2016-08-08"},{"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":"ashleygoh1"},"content":" \u003cLabel fx:id\u003d\"jobDescription\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$job description\" /\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":35,"author":{"gitId":"ashleygoh1"},"content":" \u003cLabel fx:id\u003d\"interviewDate\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$interview date\" /\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":36,"author":{"gitId":"ashleygoh1"},"content":" \u003cLabel fx:id\u003d\"internDuration\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$intern duration\" /\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":37,"author":{"gitId":"ashleygoh1"},"content":" \u003cLabel fx:id\u003d\"salary\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$salary\" /\u003e","lastModifiedDate":"2024-02-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"ashleygoh1":5,"-":35}},{"path":"src/main/resources/view/ViewPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-02-26"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-02-26"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-02-26"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2024-02-26"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-02-26"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":"\u003c?import javafx.scene.control.TextArea?\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":"\u003cVBox id\u003d\"viewPanel\" fx:id\u003d\"ViewPanel\" xmlns\u003d\"http://javafx.com/javafx/21\" xmlns:fx\u003d\"http://javafx.com/fxml/1\" alignment\u003d\"CENTER\" GridPane.columnIndex\u003d\"0\" styleClass\u003d\"view-panel-cell\" prefWidth\u003d\"450\" spacing\u003d\"15\"\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-02-26"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":" \u003cInsets bottom\u003d\"20.0\" left\u003d\"20.0\" right\u003d\"20.0\" top\u003d\"20.0\" /\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-02-26"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":" \u003cHBox\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":" \u003cLabel fx:id\u003d\"companyName\" text\u003d\"\\$first\" styleClass\u003d\"cell-header\" /\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":" \u003cRegion HBox.hgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":" \u003cLabel fx:id\u003d\"tag\" text\u003d\"\\$tag\" styleClass\u003d\"cell-tag\" /\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"Jawad280"},"content":" \u003cVBox spacing\u003d\"15\"\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"Jawad280"},"content":" \u003cLabel fx:id\u003d\"jobDescription\" text\u003d\"\\$jobDescription\" styleClass\u003d\"cell-subHeader\" /\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"Jawad280"},"content":" \u003cHBox\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"Jawad280"},"content":" \u003cLabel text\u003d\"Phone: \" styleClass\u003d\"cell-content-header\"/\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"Jawad280"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell-content\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"Jawad280"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"Jawad280"},"content":" \u003cHBox\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"Jawad280"},"content":" \u003cLabel text\u003d\"Address: \" styleClass\u003d\"cell-content-header\"/\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"Jawad280"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell-content\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"Jawad280"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"Jawad280"},"content":" \u003cHBox\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"Jawad280"},"content":" \u003cLabel text\u003d\"Email: \" styleClass\u003d\"cell-content-header\"/\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"Jawad280"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell-content\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"Jawad280"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"Jawad280"},"content":" \u003cHBox\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"Jawad280"},"content":" \u003cLabel text\u003d\"Duration: \" styleClass\u003d\"cell-content-header\"/\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"Jawad280"},"content":" \u003cLabel fx:id\u003d\"internDuration\" styleClass\u003d\"cell-content\" text\u003d\"\\$internDuration\" /\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"Jawad280"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"Jawad280"},"content":" \u003cHBox\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"Jawad280"},"content":" \u003cLabel text\u003d\"Salary: \" styleClass\u003d\"cell-content-header\"/\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"Jawad280"},"content":" \u003cLabel fx:id\u003d\"salary\" styleClass\u003d\"cell-content\" text\u003d\"\\$salary\" /\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"Jawad280"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"Jawad280"},"content":" \u003cHBox\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"Jawad280"},"content":" \u003cLabel text\u003d\"Notes: \" styleClass\u003d\"cell-content-header\"/\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"Jawad280"},"content":" \u003cLabel fx:id\u003d\"note\" styleClass\u003d\"cell-content\" text\u003d\"\\$note\" wrapText\u003d\"true\" prefWidth\u003d\"300\" /\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"Jawad280"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"Jawad280"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-02-26"},{"lineNumber":54,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"Jawad280"},"content":" \u003cHBox alignment\u003d\"CENTER\"\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"Jawad280"},"content":" \u003cLabel fx:id\u003d\"interviewDate\" styleClass\u003d\"cell-date\" text\u003d\"\\$interviewDate\" prefWidth\u003d\"450\" HBox.hgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"Jawad280"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"Jawad280"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2024-02-26"}],"authorContributionMap":{"Jawad280":59}},{"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":"ashleygoh1"},"content":"//import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2024-02-26"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2024-03-17"},{"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.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":9,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INTERN_DURATION_DESC_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.logic.commands.CommandTestUtil.JOB_DESCRIPTION_DESC_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":13,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SALARY_DESC_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_NO_REPLY;","lastModifiedDate":"2024-02-26"},{"lineNumber":15,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_NO_REPLY;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2018-12-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18"},{"lineNumber":29,"author":{"gitId":"ashleygoh1"},"content":"//import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-02-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-12-09"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09"},{"lineNumber":59,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":64,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"chenyixin0"},"content":" // the original test compares expected model and actual model and that one keeps failing so i js","lastModifiedDate":"2024-03-17"},{"lineNumber":90,"author":{"gitId":"chenyixin0"},"content":" // commented that line out first cuz idk whats going on lol","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":95,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":99,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":106,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14"},{"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-03-11"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":117,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":121,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":130,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":131,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":132,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":133,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31"},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":139,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":140,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":141,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":142,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":143,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":144,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":145,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":146,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":147,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31"},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14"},{"lineNumber":149,"author":{"gitId":"chenyixin0"},"content":" //assertEquals(expectedModel, model);","lastModifiedDate":"2024-03-17"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19"},{"lineNumber":152,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":153,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13"},{"lineNumber":154,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13"},{"lineNumber":155,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13"},{"lineNumber":156,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13"},{"lineNumber":157,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":158,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13"},{"lineNumber":159,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":161,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13"},{"lineNumber":163,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":164,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13"},{"lineNumber":165,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13"},{"lineNumber":166,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":168,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":170,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":171,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13"},{"lineNumber":172,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":174,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":176,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13"},{"lineNumber":177,"author":{"gitId":"-"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2023-06-13"},{"lineNumber":178,"author":{"gitId":"chenyixin0"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + TAG_DESC_NO_REPLY + JOB_DESCRIPTION_DESC_AMY","lastModifiedDate":"2024-03-17"},{"lineNumber":179,"author":{"gitId":"chenyixin0"},"content":" + INTERN_DURATION_DESC_AMY + SALARY_DESC_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":180,"author":{"gitId":"chenyixin0"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags(VALID_TAG_NO_REPLY).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":181,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13"},{"lineNumber":182,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13"},{"lineNumber":183,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"chenyixin0":10,"ashleygoh1":3,"-":172}},{"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":"Jawad280"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2024-03-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":"-"},"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":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15"},{"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":"-"},"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":"-"},"content":" CommandResult commandResult \u003d new AddCommand(validPerson).execute(modelStub);","lastModifiedDate":"2019-01-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23"},{"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":"-"},"content":" AddCommand addCommand \u003d new AddCommand(validPerson);","lastModifiedDate":"2018-08-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":"-"},"content":" assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2019-05-03"},{"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":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-02-29"},{"lineNumber":162,"author":{"gitId":"Jawad280"},"content":" public Person choosePersonToView(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2024-02-29"},{"lineNumber":163,"author":{"gitId":"Jawad280"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-02-29"},{"lineNumber":164,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-02-29"},{"lineNumber":165,"author":{"gitId":"Jawad280"},"content":" @Override","lastModifiedDate":"2024-03-01"},{"lineNumber":166,"author":{"gitId":"Jawad280"},"content":" public FilteredList\u003cPerson\u003e generateNewFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2024-03-01"},{"lineNumber":167,"author":{"gitId":"Jawad280"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-01"},{"lineNumber":168,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-03-01"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":171,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":172,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07"},{"lineNumber":173,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":174,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07"},{"lineNumber":175,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":177,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":178,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":179,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":182,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":183,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":184,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":185,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":189,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":190,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12"},{"lineNumber":191,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":192,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12"},{"lineNumber":193,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":195,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07"},{"lineNumber":196,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":197,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":198,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":199,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":201,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":202,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08"},{"lineNumber":203,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":204,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":205,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":207,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":208,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04"},{"lineNumber":209,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04"},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":211,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":213,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12"}],"authorContributionMap":{"Jawad280":9,"-":204}},{"path":"src/test/java/seedu/address/logic/commands/CommandResultTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2018-12-09"},{"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":"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":"chenyixin0"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"chenyixin0"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"chenyixin0"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"chenyixin0"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"chenyixin0"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class CommandResultTest {","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"chenyixin0"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"chenyixin0"},"content":" // constructor 1: CommandResult(String feedback)","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new CommandResult(\"feedback\");","lastModifiedDate":"2018-12-09"},{"lineNumber":25,"author":{"gitId":"chenyixin0"},"content":" // constructor 2: CommandResult(String feedback, Person viewPerson)","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"chenyixin0"},"content":" CommandResult commandResultViewPerson \u003d new CommandResult(\"feedback\", ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"chenyixin0"},"content":" // constructor 3: CommandResult(String feedback, FilteredList\u003cPerson\u003e viewList)","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"chenyixin0"},"content":" CommandResult commandResultViewList \u003d new CommandResult(\"feedback\",","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"chenyixin0"},"content":" new FilteredList\u003c\u003e(model.getFilteredPersonList(), PREDICATE_SHOW_ALL_PERSONS));","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-12-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertTrue(commandResult.equals(new CommandResult(\"feedback\")));","lastModifiedDate":"2018-12-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertTrue(commandResult.equals(new CommandResult(\"feedback\", false, false)));","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":35,"author":{"gitId":"chenyixin0"},"content":" assertTrue(commandResultViewPerson.equals(new CommandResult(\"feedback\", ALICE)));","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"chenyixin0"},"content":" assertTrue(commandResultViewList.equals(new CommandResult(\"feedback\",","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"chenyixin0"},"content":" new FilteredList\u003c\u003e(model.getFilteredPersonList(), PREDICATE_SHOW_ALL_PERSONS))));","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-12-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertTrue(commandResult.equals(commandResult));","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":43,"author":{"gitId":"chenyixin0"},"content":" assertTrue(commandResultViewPerson.equals(commandResultViewPerson));","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"chenyixin0"},"content":" assertTrue(commandResultViewPerson.getViewPerson().equals(ALICE));","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"chenyixin0"},"content":" assertTrue(commandResultViewList.equals(commandResultViewList));","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"chenyixin0"},"content":" assertTrue(commandResultViewList.getViewList().equals(","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"chenyixin0"},"content":" new FilteredList\u003c\u003e(model.getFilteredPersonList(), PREDICATE_SHOW_ALL_PERSONS)));","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(null));","lastModifiedDate":"2018-12-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(0.5f));","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // different feedbackToUser value -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(new CommandResult(\"different\")));","lastModifiedDate":"2018-12-09"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // different showHelp value -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(new CommandResult(\"feedback\", true, false)));","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // different exit value -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(new CommandResult(\"feedback\", false, true)));","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void hashcode() {","lastModifiedDate":"2018-12-09"},{"lineNumber":68,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new CommandResult(\"feedback\");","lastModifiedDate":"2018-12-09"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":70,"author":{"gitId":"-"},"content":" // same values -\u003e returns same hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertEquals(commandResult.hashCode(), new CommandResult(\"feedback\").hashCode());","lastModifiedDate":"2018-12-09"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // different feedbackToUser value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(\"different\").hashCode());","lastModifiedDate":"2018-12-09"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // different showHelp value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(\"feedback\", true, false).hashCode());","lastModifiedDate":"2024-03-11"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":79,"author":{"gitId":"-"},"content":" // different exit value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(\"feedback\", false, true).hashCode());","lastModifiedDate":"2024-03-11"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"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":" CommandResult commandResult \u003d new CommandResult(\"feedback\");","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" String expected \u003d CommandResult.class.getCanonicalName() + \"{feedbackToUser\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" + commandResult.getFeedbackToUser() + \", showHelp\u003d\" + commandResult.isShowHelp()","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" + \", exit\u003d\" + commandResult.isExit() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertEquals(expected, commandResult.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-12-09"},{"lineNumber":92,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"chenyixin0":29,"-":64}},{"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":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_INTERN_DURATION;","lastModifiedDate":"2024-02-26"},{"lineNumber":8,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_INTERVIEW_DATE;","lastModifiedDate":"2024-02-26"},{"lineNumber":9,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_JOB_DESCRIPTION;","lastModifiedDate":"2024-02-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SALARY;","lastModifiedDate":"2024-02-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05"},{"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.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":"2024-03-04"},{"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":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05"},{"lineNumber":41,"author":{"gitId":"ashleygoh1"},"content":" public static final String VALID_TAG_NO_REPLY \u003d \"NR\";","lastModifiedDate":"2024-02-26"},{"lineNumber":42,"author":{"gitId":"ashleygoh1"},"content":" public static final String VALID_TAG_INTERVIEW \u003d \"I\";","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"ashleygoh1"},"content":" public static final String VALID_JOB_DESCRIPTION_AMY \u003d \"Data Science intern\";","lastModifiedDate":"2024-02-26"},{"lineNumber":44,"author":{"gitId":"ashleygoh1"},"content":" public static final String VALID_JOB_DESCRIPTION_BOB \u003d \"Front end developer intern\";","lastModifiedDate":"2024-02-26"},{"lineNumber":45,"author":{"gitId":"ashleygoh1"},"content":" public static final String VALID_INTERVIEW_DATE_AMY \u003d \"15-04-2024 0900\";","lastModifiedDate":"2024-02-26"},{"lineNumber":46,"author":{"gitId":"ashleygoh1"},"content":" public static final String VALID_INTERVIEW_DATE_BOB \u003d \"15-04-2024 1200\";","lastModifiedDate":"2024-02-26"},{"lineNumber":47,"author":{"gitId":"ashleygoh1"},"content":" public static final String VALID_INTERN_DURATION_AMY \u003d \"6 months\";","lastModifiedDate":"2024-02-26"},{"lineNumber":48,"author":{"gitId":"ashleygoh1"},"content":" public static final String VALID_INTERN_DURATION_BOB \u003d \"3 months\";","lastModifiedDate":"2024-02-26"},{"lineNumber":49,"author":{"gitId":"ashleygoh1"},"content":" public static final String VALID_SALARY_AMY \u003d \"500\";","lastModifiedDate":"2024-02-26"},{"lineNumber":50,"author":{"gitId":"ashleygoh1"},"content":" public static final String VALID_SALARY_BOB \u003d \"1000\";","lastModifiedDate":"2024-02-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"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":"ashleygoh1"},"content":" public static final String TAG_DESC_NO_REPLY \u003d \" \" + PREFIX_TAG + VALID_TAG_NO_REPLY;","lastModifiedDate":"2024-02-26"},{"lineNumber":61,"author":{"gitId":"ashleygoh1"},"content":" public static final String TAG_DESC_INTERVIEW \u003d \" \" + PREFIX_TAG + VALID_TAG_INTERVIEW;","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"ashleygoh1"},"content":" public static final String JOB_DESCRIPTION_DESC_AMY \u003d \" \" + PREFIX_JOB_DESCRIPTION + VALID_JOB_DESCRIPTION_AMY;","lastModifiedDate":"2024-02-26"},{"lineNumber":63,"author":{"gitId":"ashleygoh1"},"content":" public static final String JOB_DESCRIPTION_DESC_BOB \u003d \" \" + PREFIX_JOB_DESCRIPTION + VALID_JOB_DESCRIPTION_BOB;","lastModifiedDate":"2024-02-26"},{"lineNumber":64,"author":{"gitId":"ashleygoh1"},"content":" public static final String INTERVIEW_DATE_DESC_AMY \u003d \" \" + PREFIX_INTERVIEW_DATE + VALID_INTERVIEW_DATE_AMY;","lastModifiedDate":"2024-02-26"},{"lineNumber":65,"author":{"gitId":"ashleygoh1"},"content":" public static final String INTERVIEW_DATE_DESC_BOB \u003d \" \" + PREFIX_INTERVIEW_DATE + VALID_INTERVIEW_DATE_BOB;","lastModifiedDate":"2024-02-26"},{"lineNumber":66,"author":{"gitId":"ashleygoh1"},"content":" public static final String INTERN_DURATION_DESC_AMY \u003d \" \" + PREFIX_INTERN_DURATION + VALID_INTERN_DURATION_AMY;","lastModifiedDate":"2024-02-26"},{"lineNumber":67,"author":{"gitId":"ashleygoh1"},"content":" public static final String INTERN_DURATION_DESC_BOB \u003d \" \" + PREFIX_INTERN_DURATION + VALID_INTERN_DURATION_BOB;","lastModifiedDate":"2024-02-26"},{"lineNumber":68,"author":{"gitId":"ashleygoh1"},"content":" public static final String SALARY_DESC_AMY \u003d \" \" + PREFIX_SALARY + VALID_SALARY_AMY;","lastModifiedDate":"2024-02-26"},{"lineNumber":69,"author":{"gitId":"ashleygoh1"},"content":" public static final String SALARY_DESC_BOB \u003d \" \" + PREFIX_SALARY + VALID_SALARY_BOB;","lastModifiedDate":"2024-02-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":71,"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":72,"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":73,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05"},{"lineNumber":75,"author":{"gitId":"ashleygoh1"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2024-02-26"},{"lineNumber":76,"author":{"gitId":"ashleygoh1"},"content":" public static final String INVALID_JOB_DESCRIPTION_DESC \u003d \" \" + PREFIX_JOB_DESCRIPTION;","lastModifiedDate":"2024-02-26"},{"lineNumber":77,"author":{"gitId":"ashleygoh1"},"content":" // empty string not allowed for job description","lastModifiedDate":"2024-02-26"},{"lineNumber":78,"author":{"gitId":"ashleygoh1"},"content":" public static final String INVALID_INTERN_DURATION_DESC \u003d \" \" + PREFIX_INTERN_DURATION;","lastModifiedDate":"2024-02-26"},{"lineNumber":79,"author":{"gitId":"ashleygoh1"},"content":" // empty string not allowed for intern duration","lastModifiedDate":"2024-02-26"},{"lineNumber":80,"author":{"gitId":"ashleygoh1"},"content":" public static final String INVALID_SALARY_DESC \u003d \" \" + PREFIX_SALARY + \"0\";","lastModifiedDate":"2024-02-26"},{"lineNumber":81,"author":{"gitId":"ashleygoh1"},"content":" // salary need to be above 0 dollar","lastModifiedDate":"2024-02-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2024-03-04"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2024-03-04"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":88,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2024-03-04"},{"lineNumber":89,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-03-04"},{"lineNumber":90,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2024-03-04"},{"lineNumber":91,"author":{"gitId":"Jawad280"},"content":" .withTags(VALID_TAG_NO_REPLY).withJobDescription(VALID_JOB_DESCRIPTION_AMY)","lastModifiedDate":"2024-03-11"},{"lineNumber":92,"author":{"gitId":"Jawad280"},"content":" .withInterviewDate(VALID_INTERVIEW_DATE_AMY).withInternDuration(VALID_INTERN_DURATION_AMY)","lastModifiedDate":"2024-03-11"},{"lineNumber":93,"author":{"gitId":"Jawad280"},"content":" .withSalary(VALID_SALARY_AMY).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":94,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-04"},{"lineNumber":95,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-03-04"},{"lineNumber":96,"author":{"gitId":"Jawad280"},"content":" .withTags(VALID_TAG_NO_REPLY).withJobDescription(VALID_JOB_DESCRIPTION_BOB)","lastModifiedDate":"2024-03-11"},{"lineNumber":97,"author":{"gitId":"Jawad280"},"content":" .withInterviewDate(VALID_INTERVIEW_DATE_BOB).withInternDuration(VALID_INTERN_DURATION_BOB)","lastModifiedDate":"2024-03-11"},{"lineNumber":98,"author":{"gitId":"Jawad280"},"content":" .withSalary(VALID_SALARY_BOB).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":101,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-04"},{"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":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25"},{"lineNumber":108,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":109,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":110,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":114,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":118,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":119,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25"},{"lineNumber":120,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":121,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25"},{"lineNumber":123,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":124,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":128,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":129,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":130,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":131,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":132,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25"},{"lineNumber":133,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":134,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25"},{"lineNumber":135,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":136,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":137,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":138,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":144,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":145,"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":146,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31"},{"lineNumber":147,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":148,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31"},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":151,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31"},{"lineNumber":152,"author":{"gitId":"ashleygoh1"},"content":" final String[] splitName \u003d person.getCompanyName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2024-02-25"},{"lineNumber":153,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":155,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":158,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"eunrcn":1,"Jawad280":6,"ashleygoh1":32,"-":119}},{"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":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-04"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-04"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-04"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_INTERN_DURATION_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_INTERVIEW_DATE_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_JOB_DESCRIPTION_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SALARY_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_INTERVIEW;","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-04"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-04"},{"lineNumber":22,"author":{"gitId":"Jawad280"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-04"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-04"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-04"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-04"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-04"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-03-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-04"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-04"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-04"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2024-03-04"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2024-03-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2024-03-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-04"},{"lineNumber":41,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2024-03-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-04"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2024-03-04"},{"lineNumber":47,"author":{"gitId":"Jawad280"},"content":" Person editedPerson \u003d ALICE;","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"Jawad280"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedPerson).withTags(\"NR\").build();","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2024-03-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":51,"author":{"gitId":"Jawad280"},"content":" String expectedMessage \u003d String.format(","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"Jawad280"},"content":" EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"Jawad280"},"content":" );","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"Jawad280"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2024-03-04"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":59,"author":{"gitId":"Jawad280"},"content":" assertCommandSuccess(editCommand, model, expectedCommandResult, expectedModel);","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-04"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2024-03-04"},{"lineNumber":64,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2024-03-04"},{"lineNumber":65,"author":{"gitId":"-"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2024-03-04"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":67,"author":{"gitId":"-"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2024-03-04"},{"lineNumber":68,"author":{"gitId":"-"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-04"},{"lineNumber":69,"author":{"gitId":"ashleygoh1"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_INTERVIEW)","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"eunrcn"},"content":" .withJobDescription(VALID_JOB_DESCRIPTION_BOB).withInterviewDate(VALID_INTERVIEW_DATE_BOB)","lastModifiedDate":"2024-03-04"},{"lineNumber":71,"author":{"gitId":"eunrcn"},"content":" .withInternDuration(VALID_INTERN_DURATION_BOB).withSalary(VALID_SALARY_BOB).build();","lastModifiedDate":"2024-03-04"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":73,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-12"},{"lineNumber":74,"author":{"gitId":"chenyixin0"},"content":" .withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-12"},{"lineNumber":75,"author":{"gitId":"ashleygoh1"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_INTERVIEW)","lastModifiedDate":"2024-03-13"},{"lineNumber":76,"author":{"gitId":"eunrcn"},"content":" .withJobDescription(VALID_JOB_DESCRIPTION_BOB).withInterviewDate(VALID_INTERVIEW_DATE_BOB)","lastModifiedDate":"2024-03-04"},{"lineNumber":77,"author":{"gitId":"eunrcn"},"content":" .withInternDuration(VALID_INTERN_DURATION_BOB).withSalary(VALID_SALARY_BOB).build();","lastModifiedDate":"2024-03-04"},{"lineNumber":78,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPerson, descriptor);","lastModifiedDate":"2024-03-04"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":81,"author":{"gitId":"eunrcn"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS,","lastModifiedDate":"2024-03-04"},{"lineNumber":82,"author":{"gitId":"eunrcn"},"content":" Messages.format(editedPerson));","lastModifiedDate":"2024-03-04"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":84,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-04"},{"lineNumber":85,"author":{"gitId":"-"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2024-03-04"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":87,"author":{"gitId":"eunrcn"},"content":" // Print actual values for debugging","lastModifiedDate":"2024-03-04"},{"lineNumber":88,"author":{"gitId":"eunrcn"},"content":" System.out.println(\"Actual Message: \" + expectedMessage);","lastModifiedDate":"2024-03-04"},{"lineNumber":89,"author":{"gitId":"eunrcn"},"content":" System.out.println(\"Actual Model: \" + expectedModel);","lastModifiedDate":"2024-03-04"},{"lineNumber":90,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-04"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-04"},{"lineNumber":95,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2024-03-04"},{"lineNumber":96,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, new EditPersonDescriptor());","lastModifiedDate":"2024-03-04"},{"lineNumber":97,"author":{"gitId":"-"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-04"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":99,"author":{"gitId":"eunrcn"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS,","lastModifiedDate":"2024-03-04"},{"lineNumber":100,"author":{"gitId":"eunrcn"},"content":" Messages.format(editedPerson));","lastModifiedDate":"2024-03-04"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":102,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-04"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-04"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-04"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2024-03-04"},{"lineNumber":109,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-04"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":111,"author":{"gitId":"-"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-04"},{"lineNumber":112,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder(personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-04"},{"lineNumber":113,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2024-03-04"},{"lineNumber":114,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2024-03-04"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":116,"author":{"gitId":"eunrcn"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS,","lastModifiedDate":"2024-03-04"},{"lineNumber":117,"author":{"gitId":"eunrcn"},"content":" Messages.format(editedPerson));","lastModifiedDate":"2024-03-04"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":119,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-04"},{"lineNumber":120,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2024-03-04"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-04"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-04"},{"lineNumber":126,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2024-03-04"},{"lineNumber":127,"author":{"gitId":"-"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-04"},{"lineNumber":128,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2024-03-04"},{"lineNumber":129,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2024-03-04"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":131,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2024-03-04"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-04"},{"lineNumber":135,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2024-03-04"},{"lineNumber":136,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-04"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":138,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2024-03-04"},{"lineNumber":139,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2024-03-04"},{"lineNumber":140,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2024-03-04"},{"lineNumber":141,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2024-03-04"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2024-03-04"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":146,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-04"},{"lineNumber":147,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2024-03-04"},{"lineNumber":148,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2024-03-04"},{"lineNumber":149,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-04"},{"lineNumber":150,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2024-03-04"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-04"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":155,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-04"},{"lineNumber":156,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2024-03-04"},{"lineNumber":157,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2024-03-04"},{"lineNumber":158,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-04"},{"lineNumber":159,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-04"},{"lineNumber":160,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2024-03-04"},{"lineNumber":161,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-04"},{"lineNumber":162,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-04"},{"lineNumber":163,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2024-03-04"},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2024-03-04"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":166,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2024-03-04"},{"lineNumber":167,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2024-03-04"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":169,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-04"},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":172,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-04"},{"lineNumber":173,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2024-03-04"},{"lineNumber":174,"author":{"gitId":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2024-03-04"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":176,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-04"},{"lineNumber":177,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2024-03-04"},{"lineNumber":178,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2024-03-04"},{"lineNumber":179,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-03-04"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":181,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-04"},{"lineNumber":182,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-03-04"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":184,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-04"},{"lineNumber":185,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-03-04"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":187,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-04"},{"lineNumber":188,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2024-03-04"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":190,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2024-03-04"},{"lineNumber":191,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2024-03-04"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":193,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2024-03-04"},{"lineNumber":194,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2024-03-04"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":197,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-04"},{"lineNumber":198,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-04"},{"lineNumber":199,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-04"},{"lineNumber":200,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2024-03-04"},{"lineNumber":201,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2024-03-04"},{"lineNumber":202,"author":{"gitId":"-"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2024-03-04"},{"lineNumber":203,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2024-03-04"},{"lineNumber":204,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2024-03-04"},{"lineNumber":205,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":207,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"eunrcn":15,"chenyixin0":7,"Jawad280":8,"ashleygoh1":3,"-":174}},{"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":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-04"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-04"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_INTERN_DURATION_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_INTERVIEW_DATE_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_JOB_DESCRIPTION_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SALARY_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_INTERVIEW;","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_NO_REPLY;","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-04"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2024-03-04"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorTest {","lastModifiedDate":"2024-03-04"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-04"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2024-03-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-04"},{"lineNumber":32,"author":{"gitId":"Jawad280"},"content":" EditPersonDescriptor descriptorWithSameValues \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"Jawad280"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"Jawad280"},"content":" .withTags(VALID_TAG_NO_REPLY).withJobDescription(VALID_JOB_DESCRIPTION_AMY)","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"Jawad280"},"content":" .withInterviewDate(VALID_INTERVIEW_DATE_AMY).withInternDuration(VALID_INTERN_DURATION_AMY)","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"Jawad280"},"content":" .withSalary(VALID_SALARY_AMY).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2024-03-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2024-03-04"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-04"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2024-03-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-04"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2024-03-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-04"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2024-03-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2024-03-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":" EditPersonDescriptor editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2024-03-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2024-03-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2024-03-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2024-03-04"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2024-03-04"},{"lineNumber":60,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2024-03-04"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2024-03-04"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2024-03-04"},{"lineNumber":64,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2024-03-04"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2024-03-04"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2024-03-04"},{"lineNumber":68,"author":{"gitId":"ashleygoh1"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_INTERVIEW).build();","lastModifiedDate":"2024-03-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2024-03-04"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-04"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-04"},{"lineNumber":74,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2024-03-04"},{"lineNumber":75,"author":{"gitId":"eunrcn"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{Edited Person:\"","lastModifiedDate":"2024-03-04"},{"lineNumber":76,"author":{"gitId":"eunrcn"},"content":" + editPersonDescriptor.getName().orElse(null) + \"; Phone: \"","lastModifiedDate":"2024-03-04"},{"lineNumber":77,"author":{"gitId":"eunrcn"},"content":" + editPersonDescriptor.getPhone().orElse(null) + \"; Email: \"","lastModifiedDate":"2024-03-04"},{"lineNumber":78,"author":{"gitId":"eunrcn"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \"; Address: \"","lastModifiedDate":"2024-03-04"},{"lineNumber":79,"author":{"gitId":"eunrcn"},"content":" + editPersonDescriptor.getAddress().orElse(null) + \"; Tags: \"","lastModifiedDate":"2024-03-04"},{"lineNumber":80,"author":{"gitId":"eunrcn"},"content":" + editPersonDescriptor.getTag().orElse(null) + \"; Job Description: \"","lastModifiedDate":"2024-03-04"},{"lineNumber":81,"author":{"gitId":"eunrcn"},"content":" + editPersonDescriptor.getJobDescription().orElse(null) + \"; Interview Date: \"","lastModifiedDate":"2024-03-04"},{"lineNumber":82,"author":{"gitId":"eunrcn"},"content":" + editPersonDescriptor.getInterviewDate().orElse(null) + \"; Internship Duration: \"","lastModifiedDate":"2024-03-04"},{"lineNumber":83,"author":{"gitId":"eunrcn"},"content":" + editPersonDescriptor.getInternDuration().orElse(null) + \"; Salary: \"","lastModifiedDate":"2024-03-04"},{"lineNumber":84,"author":{"gitId":"eunrcn"},"content":" + editPersonDescriptor.getSalary().orElse(null) + \"}\";","lastModifiedDate":"2024-03-04"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":86,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"eunrcn":10,"Jawad280":14,"ashleygoh1":2,"-":60}},{"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.testutil.TypicalPersons.CARL;","lastModifiedDate":"2017-07-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ELLE;","lastModifiedDate":"2017-07-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.FIONA;","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":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"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":"import seedu.address.model.person.NameContainsKeywordsPredicate;","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":" * Contains integration tests (interaction with the Model) for {@code FindCommand}.","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class FindCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" FindCommand findFirstCommand \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" FindCommand findSecondCommand \u003d new FindCommand(secondPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" FindCommand findFirstCommandCopy \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void execute_zeroKeywords_noPersonFound() {","lastModifiedDate":"2017-08-15"},{"lineNumber":57,"author":{"gitId":"chenyixin0"},"content":" // String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2018-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2024-03-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":61,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":62,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":63,"author":{"gitId":"chenyixin0"},"content":" // this test will always fail because the way I implemented the find the list of found names will be","lastModifiedDate":"2024-03-08"},{"lineNumber":64,"author":{"gitId":"chenyixin0"},"content":" // returned as a separate list instead of modifying the existing list inside the model which is","lastModifiedDate":"2024-03-08"},{"lineNumber":65,"author":{"gitId":"chenyixin0"},"content":" // what assertCommandSuccess checks for.","lastModifiedDate":"2024-03-08"},{"lineNumber":66,"author":{"gitId":"chenyixin0"},"content":" // with the current implementation this test is also kind of irrelevant since the find command will not","lastModifiedDate":"2024-03-08"},{"lineNumber":67,"author":{"gitId":"chenyixin0"},"content":" // actually modify the model itself.","lastModifiedDate":"2024-03-08"},{"lineNumber":68,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":69,"author":{"gitId":"chenyixin0"},"content":" //assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-08"},{"lineNumber":70,"author":{"gitId":"chenyixin0"},"content":" assertEquals(Collections.emptyList(), model.generateNewFilteredPersonList(predicate));","lastModifiedDate":"2024-03-08"},{"lineNumber":71,"author":{"gitId":"chenyixin0"},"content":" assertEquals(Collections.emptyList(), command.execute(model).getViewList());","lastModifiedDate":"2024-03-15"},{"lineNumber":72,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":73,"author":{"gitId":"chenyixin0"},"content":" assertEquals(0, model.generateNewFilteredPersonList(predicate).size());","lastModifiedDate":"2024-03-15"},{"lineNumber":74,"author":{"gitId":"chenyixin0"},"content":" // theres no view size i hope that\u0027s not a problem","lastModifiedDate":"2024-03-15"},{"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":"2017-06-12"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void execute_multipleKeywords_multiplePersonsFound() {","lastModifiedDate":"2017-08-15"},{"lineNumber":79,"author":{"gitId":"chenyixin0"},"content":" // String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2024-03-15"},{"lineNumber":80,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\"Kurz Elle Kunz\");","lastModifiedDate":"2018-08-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2024-03-15"},{"lineNumber":82,"author":{"gitId":"chenyixin0"},"content":" // expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-15"},{"lineNumber":83,"author":{"gitId":"chenyixin0"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":84,"author":{"gitId":"chenyixin0"},"content":" //following line will always fail; see above","lastModifiedDate":"2024-03-08"},{"lineNumber":85,"author":{"gitId":"chenyixin0"},"content":" //assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-08"},{"lineNumber":86,"author":{"gitId":"chenyixin0"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), model.generateNewFilteredPersonList(predicate));","lastModifiedDate":"2024-03-08"},{"lineNumber":87,"author":{"gitId":"chenyixin0"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), command.execute(model).getViewList());","lastModifiedDate":"2024-03-15"},{"lineNumber":88,"author":{"gitId":"chenyixin0"},"content":" assertEquals(3, model.generateNewFilteredPersonList(predicate).size());","lastModifiedDate":"2024-03-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2019-02-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" FindCommand findCommand \u003d new FindCommand(predicate);","lastModifiedDate":"2019-02-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2018-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":102,"author":{"gitId":"-"},"content":" private NameContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2018-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" return new NameContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2018-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":105,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"chenyixin0":23,"-":82}},{"path":"src/test/java/seedu/address/logic/commands/NoteCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-24"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-24"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-24"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-24"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-24"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"import java.util.List;","lastModifiedDate":"2024-03-24"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-24"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-24"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-24"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-24"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-24"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-24"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-24"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":"class NoteCommandTest {","lastModifiedDate":"2024-03-24"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":21,"author":{"gitId":"Jawad280"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":22,"author":{"gitId":"Jawad280"},"content":" void execute_validIndex_success() throws CommandException {","lastModifiedDate":"2024-03-24"},{"lineNumber":23,"author":{"gitId":"Jawad280"},"content":" Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-24"},{"lineNumber":24,"author":{"gitId":"Jawad280"},"content":" List\u003cPerson\u003e personList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-24"},{"lineNumber":25,"author":{"gitId":"Jawad280"},"content":" Person personToView \u003d personList.get(0);","lastModifiedDate":"2024-03-24"},{"lineNumber":26,"author":{"gitId":"Jawad280"},"content":" NoteCommand noteCommand \u003d new NoteCommand(Index.fromZeroBased(0));","lastModifiedDate":"2024-03-24"},{"lineNumber":27,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":28,"author":{"gitId":"Jawad280"},"content":" CommandResult commandResult \u003d noteCommand.execute(model);","lastModifiedDate":"2024-03-24"},{"lineNumber":29,"author":{"gitId":"Jawad280"},"content":" assertEquals(\"edit 1 n/\" + personToView.getNote(), commandResult.getFeedbackToUser());","lastModifiedDate":"2024-03-24"},{"lineNumber":30,"author":{"gitId":"Jawad280"},"content":" assertEquals(personToView, commandResult.getViewPerson());","lastModifiedDate":"2024-03-24"},{"lineNumber":31,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":32,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":33,"author":{"gitId":"Jawad280"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":34,"author":{"gitId":"Jawad280"},"content":" void execute_invalidIndex_throwsCommandException() {","lastModifiedDate":"2024-03-24"},{"lineNumber":35,"author":{"gitId":"Jawad280"},"content":" Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-24"},{"lineNumber":36,"author":{"gitId":"Jawad280"},"content":" List\u003cPerson\u003e personList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-24"},{"lineNumber":37,"author":{"gitId":"Jawad280"},"content":" Index invalidIndex \u003d Index.fromZeroBased(personList.size() + 10);","lastModifiedDate":"2024-03-24"},{"lineNumber":38,"author":{"gitId":"Jawad280"},"content":" NoteCommand noteCommand \u003d new NoteCommand(invalidIndex);","lastModifiedDate":"2024-03-24"},{"lineNumber":39,"author":{"gitId":"Jawad280"},"content":" assertThrows(CommandException.class, () -\u003e noteCommand.execute(model));","lastModifiedDate":"2024-03-24"},{"lineNumber":40,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":41,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":42,"author":{"gitId":"Jawad280"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":43,"author":{"gitId":"Jawad280"},"content":" void equals_sameObject_true() {","lastModifiedDate":"2024-03-24"},{"lineNumber":44,"author":{"gitId":"Jawad280"},"content":" NoteCommand noteCommand \u003d new NoteCommand(Index.fromZeroBased(0));","lastModifiedDate":"2024-03-24"},{"lineNumber":45,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":46,"author":{"gitId":"Jawad280"},"content":" assertEquals(noteCommand, noteCommand);","lastModifiedDate":"2024-03-24"},{"lineNumber":47,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":48,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":49,"author":{"gitId":"Jawad280"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":50,"author":{"gitId":"Jawad280"},"content":" void equals_differentObject_false() {","lastModifiedDate":"2024-03-24"},{"lineNumber":51,"author":{"gitId":"Jawad280"},"content":" NoteCommand noteCommand1 \u003d new NoteCommand(Index.fromZeroBased(0));","lastModifiedDate":"2024-03-24"},{"lineNumber":52,"author":{"gitId":"Jawad280"},"content":" NoteCommand noteCommand2 \u003d new NoteCommand(Index.fromZeroBased(1));","lastModifiedDate":"2024-03-24"},{"lineNumber":53,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":54,"author":{"gitId":"Jawad280"},"content":" assertNotEquals(noteCommand1, noteCommand2);","lastModifiedDate":"2024-03-24"},{"lineNumber":55,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":56,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":57,"author":{"gitId":"Jawad280"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":58,"author":{"gitId":"Jawad280"},"content":" void equals_differentClass_false() {","lastModifiedDate":"2024-03-24"},{"lineNumber":59,"author":{"gitId":"Jawad280"},"content":" NoteCommand noteCommand \u003d new NoteCommand(Index.fromZeroBased(0));","lastModifiedDate":"2024-03-24"},{"lineNumber":60,"author":{"gitId":"Jawad280"},"content":" Object otherObject \u003d new Object();","lastModifiedDate":"2024-03-24"},{"lineNumber":61,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":62,"author":{"gitId":"Jawad280"},"content":" assertNotEquals(noteCommand, otherObject);","lastModifiedDate":"2024-03-24"},{"lineNumber":63,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":64,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":65,"author":{"gitId":"Jawad280"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":66,"author":{"gitId":"Jawad280"},"content":" public void toString_validIndex_success() {","lastModifiedDate":"2024-03-24"},{"lineNumber":67,"author":{"gitId":"Jawad280"},"content":" // Create an Index object","lastModifiedDate":"2024-03-24"},{"lineNumber":68,"author":{"gitId":"Jawad280"},"content":" Index index \u003d Index.fromZeroBased(3);","lastModifiedDate":"2024-03-24"},{"lineNumber":69,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":70,"author":{"gitId":"Jawad280"},"content":" // Create a NoteCommand object using the Index","lastModifiedDate":"2024-03-24"},{"lineNumber":71,"author":{"gitId":"Jawad280"},"content":" NoteCommand noteCommand \u003d new NoteCommand(index);","lastModifiedDate":"2024-03-24"},{"lineNumber":72,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":73,"author":{"gitId":"Jawad280"},"content":" // Create the expected string representation using variables","lastModifiedDate":"2024-03-24"},{"lineNumber":74,"author":{"gitId":"Jawad280"},"content":" String expectedToString \u003d String.format(\"seedu.address.logic.commands.NoteCommand{targetIndex\u003d%s}\", index);","lastModifiedDate":"2024-03-24"},{"lineNumber":75,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":76,"author":{"gitId":"Jawad280"},"content":" // Perform the assertion","lastModifiedDate":"2024-03-24"},{"lineNumber":77,"author":{"gitId":"Jawad280"},"content":" assertEquals(expectedToString, noteCommand.toString());","lastModifiedDate":"2024-03-24"},{"lineNumber":78,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":79,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-03-24"}],"authorContributionMap":{"Jawad280":79}},{"path":"src/test/java/seedu/address/logic/commands/ViewCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"eunrcn"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"eunrcn"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"eunrcn"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"eunrcn"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"eunrcn"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"eunrcn"},"content":"import java.util.List;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"eunrcn"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"eunrcn"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"eunrcn"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"eunrcn"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"eunrcn"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"eunrcn"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"eunrcn"},"content":"class ViewCommandTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"eunrcn"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"eunrcn"},"content":" void execute_validIndex_success() throws CommandException {","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"eunrcn"},"content":" Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"eunrcn"},"content":" List\u003cPerson\u003e personList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"eunrcn"},"content":" Person personToView \u003d personList.get(0);","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"eunrcn"},"content":" ViewCommand viewCommand \u003d new ViewCommand(Index.fromZeroBased(0));","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"eunrcn"},"content":" CommandResult commandResult \u003d viewCommand.execute(model);","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"eunrcn"},"content":" assertEquals(","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"eunrcn"},"content":" String.format(","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"ashleygoh1"},"content":" \"Viewing Person: %s; Phone: %s; Email: %s; Address: %s; Tags: %s; \"","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"ashleygoh1"},"content":" + \"Job Description: %s; Interview Date: %s; Internship Duration: %s; Salary: %s\",","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"eunrcn"},"content":" personToView.getCompanyName(),","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"eunrcn"},"content":" personToView.getPhone(),","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"eunrcn"},"content":" personToView.getEmail(),","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"eunrcn"},"content":" personToView.getAddress(),","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"eunrcn"},"content":" personToView.getTag(),","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"eunrcn"},"content":" personToView.getJobDescription(),","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"eunrcn"},"content":" personToView.getInterviewDate(),","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"eunrcn"},"content":" personToView.getInternDuration(),","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"eunrcn"},"content":" personToView.getSalary()","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"eunrcn"},"content":" ),","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"eunrcn"},"content":" commandResult.getFeedbackToUser()","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"eunrcn"},"content":" );","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"eunrcn"},"content":" assertEquals(personToView, commandResult.getViewPerson());","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"eunrcn"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"eunrcn"},"content":" void execute_invalidIndex_throwsCommandException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"eunrcn"},"content":" Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"eunrcn"},"content":" ViewCommand viewCommand \u003d new ViewCommand(Index.fromZeroBased(10)); // Assuming there are fewer than 10 persons","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"eunrcn"},"content":" assertThrows(CommandException.class, () -\u003e viewCommand.execute(model));","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"eunrcn"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"eunrcn"},"content":" void equals_sameObject_true() {","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"eunrcn"},"content":" ViewCommand viewCommand \u003d new ViewCommand(Index.fromZeroBased(0));","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"eunrcn"},"content":" assertEquals(viewCommand, viewCommand);","lastModifiedDate":"2024-03-14"},{"lineNumber":63,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"eunrcn"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"eunrcn"},"content":" void equals_differentObject_false() {","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"eunrcn"},"content":" ViewCommand viewCommand1 \u003d new ViewCommand(Index.fromZeroBased(0));","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"eunrcn"},"content":" ViewCommand viewCommand2 \u003d new ViewCommand(Index.fromZeroBased(1));","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"eunrcn"},"content":" assertNotEquals(viewCommand1, viewCommand2);","lastModifiedDate":"2024-03-14"},{"lineNumber":71,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"eunrcn"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":74,"author":{"gitId":"eunrcn"},"content":" void equals_differentClass_false() {","lastModifiedDate":"2024-03-12"},{"lineNumber":75,"author":{"gitId":"eunrcn"},"content":" ViewCommand viewCommand \u003d new ViewCommand(Index.fromZeroBased(0));","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"eunrcn"},"content":" Object otherObject \u003d new Object();","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"eunrcn"},"content":" assertNotEquals(viewCommand, otherObject);","lastModifiedDate":"2024-03-14"},{"lineNumber":79,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":80,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":81,"author":{"gitId":"eunrcn"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":82,"author":{"gitId":"eunrcn"},"content":" public void toString_validIndex_success() {","lastModifiedDate":"2024-03-14"},{"lineNumber":83,"author":{"gitId":"eunrcn"},"content":" // Create an Index object","lastModifiedDate":"2024-03-14"},{"lineNumber":84,"author":{"gitId":"eunrcn"},"content":" Index index \u003d Index.fromZeroBased(3);","lastModifiedDate":"2024-03-14"},{"lineNumber":85,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":86,"author":{"gitId":"eunrcn"},"content":" // Create a ViewCommand object using the Index","lastModifiedDate":"2024-03-14"},{"lineNumber":87,"author":{"gitId":"eunrcn"},"content":" ViewCommand viewCommand \u003d new ViewCommand(index);","lastModifiedDate":"2024-03-14"},{"lineNumber":88,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":89,"author":{"gitId":"eunrcn"},"content":" // Create the expected string representation using variables","lastModifiedDate":"2024-03-14"},{"lineNumber":90,"author":{"gitId":"eunrcn"},"content":" String expectedToString \u003d String.format(\"seedu.address.logic.commands.ViewCommand{targetIndex\u003d%s}\", index);","lastModifiedDate":"2024-03-14"},{"lineNumber":91,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":92,"author":{"gitId":"eunrcn"},"content":" // Perform the assertion","lastModifiedDate":"2024-03-14"},{"lineNumber":93,"author":{"gitId":"eunrcn"},"content":" assertEquals(expectedToString, viewCommand.toString());","lastModifiedDate":"2024-03-14"},{"lineNumber":94,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":95,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":96,"author":{"gitId":"eunrcn"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"eunrcn":93,"ashleygoh1":3}},{"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":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INTERN_DURATION_DESC_AMY;","lastModifiedDate":"2024-02-26"},{"lineNumber":9,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INTERN_DURATION_DESC_BOB;","lastModifiedDate":"2024-02-26"},{"lineNumber":10,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INTERVIEW_DATE_DESC_AMY;","lastModifiedDate":"2024-02-26"},{"lineNumber":11,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INTERVIEW_DATE_DESC_BOB;","lastModifiedDate":"2024-02-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":14,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_INTERN_DURATION_DESC;","lastModifiedDate":"2024-02-26"},{"lineNumber":15,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_JOB_DESCRIPTION_DESC;","lastModifiedDate":"2024-02-26"},{"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":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_SALARY_DESC;","lastModifiedDate":"2024-02-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":20,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.JOB_DESCRIPTION_DESC_AMY;","lastModifiedDate":"2024-02-26"},{"lineNumber":21,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.JOB_DESCRIPTION_DESC_BOB;","lastModifiedDate":"2024-02-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2017-12-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23"},{"lineNumber":28,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SALARY_DESC_AMY;","lastModifiedDate":"2024-02-26"},{"lineNumber":29,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SALARY_DESC_BOB;","lastModifiedDate":"2024-02-26"},{"lineNumber":30,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_INTERVIEW;","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_NO_REPLY;","lastModifiedDate":"2024-02-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":34,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_INTERN_DURATION_BOB;","lastModifiedDate":"2024-02-26"},{"lineNumber":35,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_INTERVIEW_DATE_BOB;","lastModifiedDate":"2024-02-26"},{"lineNumber":36,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_JOB_DESCRIPTION_BOB;","lastModifiedDate":"2024-02-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14"},{"lineNumber":40,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":41,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_INTERN_DURATION;","lastModifiedDate":"2024-02-26"},{"lineNumber":42,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_INTERVIEW_DATE;","lastModifiedDate":"2024-02-26"},{"lineNumber":43,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_JOB_DESCRIPTION;","lastModifiedDate":"2024-02-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14"},{"lineNumber":45,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":46,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SALARY;","lastModifiedDate":"2024-02-26"},{"lineNumber":47,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-02-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":49,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":50,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":55,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15"},{"lineNumber":57,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.InternDuration;","lastModifiedDate":"2024-02-26"},{"lineNumber":58,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.JobDescription;","lastModifiedDate":"2024-02-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-06-15"},{"lineNumber":62,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.Salary;","lastModifiedDate":"2024-02-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15"},{"lineNumber":64,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":66,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":67,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":71,"author":{"gitId":"ashleygoh1"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).build();","lastModifiedDate":"2024-02-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":75,"author":{"gitId":"ashleygoh1"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_INTERVIEW","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"ashleygoh1"},"content":" + JOB_DESCRIPTION_DESC_BOB + INTERVIEW_DATE_DESC_BOB","lastModifiedDate":"2024-02-26"},{"lineNumber":77,"author":{"gitId":"ashleygoh1"},"content":" + INTERN_DURATION_DESC_BOB + SALARY_DESC_BOB, new AddCommand(expectedPerson));","lastModifiedDate":"2024-02-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":83,"author":{"gitId":"-"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-07-14"},{"lineNumber":84,"author":{"gitId":"ashleygoh1"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_INTERVIEW","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"ashleygoh1"},"content":" + JOB_DESCRIPTION_DESC_BOB + INTERVIEW_DATE_DESC_BOB","lastModifiedDate":"2024-02-26"},{"lineNumber":86,"author":{"gitId":"ashleygoh1"},"content":" + INTERN_DURATION_DESC_BOB + SALARY_DESC_BOB;","lastModifiedDate":"2024-02-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":104,"author":{"gitId":"ashleygoh1"},"content":" // multiple job description","lastModifiedDate":"2024-02-26"},{"lineNumber":105,"author":{"gitId":"ashleygoh1"},"content":" assertParseFailure(parser, JOB_DESCRIPTION_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-02-26"},{"lineNumber":106,"author":{"gitId":"ashleygoh1"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_JOB_DESCRIPTION));","lastModifiedDate":"2024-02-26"},{"lineNumber":107,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":108,"author":{"gitId":"ashleygoh1"},"content":" // multiple interview date","lastModifiedDate":"2024-02-26"},{"lineNumber":109,"author":{"gitId":"ashleygoh1"},"content":" assertParseFailure(parser, INTERVIEW_DATE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-02-26"},{"lineNumber":110,"author":{"gitId":"ashleygoh1"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_INTERVIEW_DATE));","lastModifiedDate":"2024-02-26"},{"lineNumber":111,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":112,"author":{"gitId":"ashleygoh1"},"content":" // multiple intern duration","lastModifiedDate":"2024-02-26"},{"lineNumber":113,"author":{"gitId":"ashleygoh1"},"content":" assertParseFailure(parser, INTERN_DURATION_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-02-26"},{"lineNumber":114,"author":{"gitId":"ashleygoh1"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_INTERN_DURATION));","lastModifiedDate":"2024-02-26"},{"lineNumber":115,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":116,"author":{"gitId":"ashleygoh1"},"content":" // multiple salary","lastModifiedDate":"2024-02-26"},{"lineNumber":117,"author":{"gitId":"ashleygoh1"},"content":" assertParseFailure(parser, SALARY_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-02-26"},{"lineNumber":118,"author":{"gitId":"ashleygoh1"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_SALARY));","lastModifiedDate":"2024-02-26"},{"lineNumber":119,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":120,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2023-07-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":124,"author":{"gitId":"ashleygoh1"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_ADDRESS, PREFIX_EMAIL, PREFIX_PHONE,","lastModifiedDate":"2024-02-26"},{"lineNumber":125,"author":{"gitId":"ashleygoh1"},"content":" PREFIX_TAG, PREFIX_JOB_DESCRIPTION, PREFIX_INTERVIEW_DATE, PREFIX_INTERN_DURATION,","lastModifiedDate":"2024-02-26"},{"lineNumber":126,"author":{"gitId":"ashleygoh1"},"content":" PREFIX_SALARY));","lastModifiedDate":"2024-02-26"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" // invalid value followed by valid 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":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":132,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":138,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":140,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":142,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":144,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":146,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":148,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":150,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":152,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":153,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":154,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":156,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":158,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":160,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":161,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":162,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"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_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":167,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":169,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":170,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":173,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":174,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":177,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":178,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":181,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":182,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":185,"author":{"gitId":"ashleygoh1"},"content":" // missing tag prefix","lastModifiedDate":"2024-02-26"},{"lineNumber":186,"author":{"gitId":"ashleygoh1"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2024-02-26"},{"lineNumber":187,"author":{"gitId":"ashleygoh1"},"content":" expectedMessage);","lastModifiedDate":"2024-02-26"},{"lineNumber":188,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":189,"author":{"gitId":"ashleygoh1"},"content":" // missing job description prefix","lastModifiedDate":"2024-02-26"},{"lineNumber":190,"author":{"gitId":"ashleygoh1"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB","lastModifiedDate":"2024-02-26"},{"lineNumber":191,"author":{"gitId":"ashleygoh1"},"content":" + VALID_JOB_DESCRIPTION_BOB,","lastModifiedDate":"2024-02-26"},{"lineNumber":192,"author":{"gitId":"ashleygoh1"},"content":" expectedMessage);","lastModifiedDate":"2024-02-26"},{"lineNumber":193,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":194,"author":{"gitId":"ashleygoh1"},"content":" // missing interview date prefix","lastModifiedDate":"2024-02-26"},{"lineNumber":195,"author":{"gitId":"ashleygoh1"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB","lastModifiedDate":"2024-02-26"},{"lineNumber":196,"author":{"gitId":"ashleygoh1"},"content":" + VALID_INTERVIEW_DATE_BOB,","lastModifiedDate":"2024-02-26"},{"lineNumber":197,"author":{"gitId":"ashleygoh1"},"content":" expectedMessage);","lastModifiedDate":"2024-02-26"},{"lineNumber":198,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":199,"author":{"gitId":"ashleygoh1"},"content":" // missing intern duration prefix","lastModifiedDate":"2024-02-26"},{"lineNumber":200,"author":{"gitId":"ashleygoh1"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB","lastModifiedDate":"2024-02-26"},{"lineNumber":201,"author":{"gitId":"ashleygoh1"},"content":" + VALID_INTERN_DURATION_BOB,","lastModifiedDate":"2024-02-26"},{"lineNumber":202,"author":{"gitId":"ashleygoh1"},"content":" expectedMessage);","lastModifiedDate":"2024-02-26"},{"lineNumber":203,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":204,"author":{"gitId":"ashleygoh1"},"content":" // missing salary prefix","lastModifiedDate":"2024-02-26"},{"lineNumber":205,"author":{"gitId":"ashleygoh1"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2024-02-26"},{"lineNumber":206,"author":{"gitId":"ashleygoh1"},"content":" expectedMessage);","lastModifiedDate":"2024-02-26"},{"lineNumber":207,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":208,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15"},{"lineNumber":209,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":213,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":214,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":215,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":216,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":217,"author":{"gitId":"ashleygoh1"},"content":" + TAG_DESC_INTERVIEW + JOB_DESCRIPTION_DESC_BOB + INTERVIEW_DATE_DESC_BOB","lastModifiedDate":"2024-03-12"},{"lineNumber":218,"author":{"gitId":"ashleygoh1"},"content":" + INTERN_DURATION_DESC_BOB + SALARY_DESC_BOB, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-26"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":220,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15"},{"lineNumber":221,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":222,"author":{"gitId":"ashleygoh1"},"content":" + TAG_DESC_INTERVIEW + JOB_DESCRIPTION_DESC_BOB + INTERVIEW_DATE_DESC_BOB","lastModifiedDate":"2024-03-12"},{"lineNumber":223,"author":{"gitId":"ashleygoh1"},"content":" + INTERN_DURATION_DESC_BOB + SALARY_DESC_BOB, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-26"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":225,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15"},{"lineNumber":226,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":227,"author":{"gitId":"ashleygoh1"},"content":" + TAG_DESC_INTERVIEW + JOB_DESCRIPTION_DESC_BOB + INTERVIEW_DATE_DESC_BOB","lastModifiedDate":"2024-03-12"},{"lineNumber":228,"author":{"gitId":"ashleygoh1"},"content":" + INTERN_DURATION_DESC_BOB + SALARY_DESC_BOB, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-26"},{"lineNumber":229,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15"},{"lineNumber":230,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":231,"author":{"gitId":"ashleygoh1"},"content":" + INVALID_TAG_DESC + JOB_DESCRIPTION_DESC_BOB + INTERVIEW_DATE_DESC_BOB","lastModifiedDate":"2024-02-26"},{"lineNumber":232,"author":{"gitId":"ashleygoh1"},"content":" + INTERN_DURATION_DESC_BOB + SALARY_DESC_BOB, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-26"},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":234,"author":{"gitId":"ashleygoh1"},"content":" // invalid job description","lastModifiedDate":"2024-02-26"},{"lineNumber":235,"author":{"gitId":"ashleygoh1"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-02-26"},{"lineNumber":236,"author":{"gitId":"ashleygoh1"},"content":" + TAG_DESC_INTERVIEW + INVALID_JOB_DESCRIPTION_DESC + INTERVIEW_DATE_DESC_BOB","lastModifiedDate":"2024-03-12"},{"lineNumber":237,"author":{"gitId":"ashleygoh1"},"content":" + INTERN_DURATION_DESC_BOB + SALARY_DESC_BOB, JobDescription.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-26"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":239,"author":{"gitId":"ashleygoh1"},"content":" // invalid intern duration","lastModifiedDate":"2024-02-26"},{"lineNumber":240,"author":{"gitId":"ashleygoh1"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-02-26"},{"lineNumber":241,"author":{"gitId":"ashleygoh1"},"content":" + TAG_DESC_INTERVIEW + JOB_DESCRIPTION_DESC_BOB + INTERVIEW_DATE_DESC_BOB","lastModifiedDate":"2024-03-12"},{"lineNumber":242,"author":{"gitId":"ashleygoh1"},"content":" + INVALID_INTERN_DURATION_DESC + SALARY_DESC_BOB, InternDuration.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-26"},{"lineNumber":243,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":244,"author":{"gitId":"ashleygoh1"},"content":" // invalid salary","lastModifiedDate":"2024-02-26"},{"lineNumber":245,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-02-26"},{"lineNumber":246,"author":{"gitId":"ashleygoh1"},"content":" + TAG_DESC_INTERVIEW + JOB_DESCRIPTION_DESC_BOB + INTERVIEW_DATE_DESC_BOB","lastModifiedDate":"2024-03-12"},{"lineNumber":247,"author":{"gitId":"ashleygoh1"},"content":" + INTERN_DURATION_DESC_BOB + INVALID_SALARY_DESC, Salary.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-26"},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":249,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":250,"author":{"gitId":"ashleygoh1"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2024-02-26"},{"lineNumber":251,"author":{"gitId":"ashleygoh1"},"content":" + TAG_DESC_INTERVIEW + JOB_DESCRIPTION_DESC_BOB + INTERVIEW_DATE_DESC_BOB","lastModifiedDate":"2024-03-12"},{"lineNumber":252,"author":{"gitId":"ashleygoh1"},"content":" + INTERN_DURATION_DESC_BOB + INVALID_SALARY_DESC,","lastModifiedDate":"2024-02-26"},{"lineNumber":253,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":257,"author":{"gitId":"ashleygoh1"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_INTERVIEW + TAG_DESC_NO_REPLY,","lastModifiedDate":"2024-03-12"},{"lineNumber":258,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":260,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"ashleygoh1":97,"-":163}},{"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":"2024-03-12"},{"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":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":15,"author":{"gitId":"eunrcn"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"Jawad280"},"content":"import seedu.address.logic.commands.NoteCommand;","lastModifiedDate":"2024-03-24"},{"lineNumber":25,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.logic.commands.ViewCommand;","lastModifiedDate":"2024-03-12"},{"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":"2024-03-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":"2024-03-12"},{"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":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"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":"eunrcn"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"eunrcn"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"eunrcn"},"content":" Index index \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"eunrcn"},"content":" EditCommand.EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(\"Betty\").build();","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"eunrcn"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"eunrcn"},"content":" String.format(\"%s %d %s\", EditCommand.COMMAND_WORD, index.getOneBased(), \"c/\" + \"Betty\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"eunrcn"},"content":" assertEquals(new EditCommand(index, descriptor), command);","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2024-03-12"},{"lineNumber":79,"author":{"gitId":"eunrcn"},"content":" FindCommand.COMMAND_WORD + \" \" + String.join(\" \", keywords));","lastModifiedDate":"2024-03-14"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2024-03-12"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2024-03-12"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2024-03-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":95,"author":{"gitId":"eunrcn"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":96,"author":{"gitId":"eunrcn"},"content":" public void parseCommand_view() throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":97,"author":{"gitId":"eunrcn"},"content":" Index index \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-12"},{"lineNumber":98,"author":{"gitId":"eunrcn"},"content":" ViewCommand command \u003d (ViewCommand) parser.parseCommand(","lastModifiedDate":"2024-03-12"},{"lineNumber":99,"author":{"gitId":"eunrcn"},"content":" ViewCommand.COMMAND_WORD + \" \" + (index).getOneBased());","lastModifiedDate":"2024-03-14"},{"lineNumber":100,"author":{"gitId":"eunrcn"},"content":" assertEquals(new ViewCommand(index), command);","lastModifiedDate":"2024-03-12"},{"lineNumber":101,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":102,"author":{"gitId":"Jawad280"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":103,"author":{"gitId":"Jawad280"},"content":" public void parseCommand_note() throws Exception {","lastModifiedDate":"2024-03-24"},{"lineNumber":104,"author":{"gitId":"Jawad280"},"content":" Index index \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-24"},{"lineNumber":105,"author":{"gitId":"Jawad280"},"content":" NoteCommand command \u003d (NoteCommand) parser.parseCommand(","lastModifiedDate":"2024-03-24"},{"lineNumber":106,"author":{"gitId":"Jawad280"},"content":" NoteCommand.COMMAND_WORD + \" \" + (index).getOneBased());","lastModifiedDate":"2024-03-24"},{"lineNumber":107,"author":{"gitId":"Jawad280"},"content":" assertEquals(new NoteCommand(index), command);","lastModifiedDate":"2024-03-24"},{"lineNumber":108,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":120,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"eunrcn":21,"Jawad280":8,"ashleygoh1":1,"-":90}},{"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":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-04"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INTERN_DURATION_DESC_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INTERVIEW_DATE_DESC_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.logic.commands.CommandTestUtil.JOB_DESCRIPTION_DESC_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SALARY_DESC_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_INTERVIEW;","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_NO_REPLY;","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_INTERN_DURATION_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_INTERVIEW_DATE_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_JOB_DESCRIPTION_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"chenyixin0"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SALARY_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_INTERVIEW;","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"Jawad280"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_NO_REPLY;","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-04"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-04"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-04"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2024-03-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-04"},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-03-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-04"},{"lineNumber":49,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2024-03-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":55,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2024-03-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2024-03-04"},{"lineNumber":58,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":60,"author":{"gitId":"Jawad280"},"content":" private final EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-04"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2024-03-04"},{"lineNumber":64,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2024-03-04"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-04"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2024-03-04"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2024-03-04"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":70,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2024-03-04"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-04"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-04"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2024-03-04"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2024-03-04"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-04"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":79,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2024-03-04"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-04"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":82,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2024-03-04"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-04"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":85,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2024-03-04"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-04"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-04"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2024-03-04"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2024-03-04"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2024-03-04"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2024-03-04"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2024-03-04"},{"lineNumber":95,"author":{"gitId":"Jawad280"},"content":" // Since address is optional, the following testcase is not relevant","lastModifiedDate":"2024-03-11"},{"lineNumber":96,"author":{"gitId":"Jawad280"},"content":" // assertParseFailure(parser, \"1\" + INVALID_ADDRESS_DESC, Address.MESSAGE_CONSTRAINTS); // invalid address","lastModifiedDate":"2024-03-11"},{"lineNumber":97,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2024-03-04"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-04"},{"lineNumber":99,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2024-03-04"},{"lineNumber":100,"author":{"gitId":"Jawad280"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_ADDRESS_AMY","lastModifiedDate":"2024-03-11"},{"lineNumber":101,"author":{"gitId":"Jawad280"},"content":" + VALID_PHONE_AMY, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-11"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-04"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2024-03-04"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-04"},{"lineNumber":107,"author":{"gitId":"eunrcn"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + TAG_DESC_NO_REPLY","lastModifiedDate":"2024-03-04"},{"lineNumber":108,"author":{"gitId":"eunrcn"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + NAME_DESC_AMY + JOB_DESCRIPTION_DESC_AMY + INTERVIEW_DATE_DESC_AMY","lastModifiedDate":"2024-03-04"},{"lineNumber":109,"author":{"gitId":"eunrcn"},"content":" + INTERN_DURATION_DESC_AMY + SALARY_DESC_AMY;","lastModifiedDate":"2024-03-04"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":111,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-03-04"},{"lineNumber":112,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2024-03-04"},{"lineNumber":113,"author":{"gitId":"Jawad280"},"content":" .withTags(VALID_TAG_NO_REPLY).withJobDescription(VALID_JOB_DESCRIPTION_AMY)","lastModifiedDate":"2024-03-11"},{"lineNumber":114,"author":{"gitId":"eunrcn"},"content":" .withInterviewDate(VALID_INTERVIEW_DATE_AMY).withInternDuration(VALID_INTERN_DURATION_AMY)","lastModifiedDate":"2024-03-04"},{"lineNumber":115,"author":{"gitId":"eunrcn"},"content":" .withSalary(VALID_SALARY_AMY).build();","lastModifiedDate":"2024-03-04"},{"lineNumber":116,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-04"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-04"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-04"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2024-03-04"},{"lineNumber":123,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-04"},{"lineNumber":124,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-04"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":126,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-04"},{"lineNumber":127,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2024-03-04"},{"lineNumber":128,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-04"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-04"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-04"},{"lineNumber":134,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2024-03-04"},{"lineNumber":135,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2024-03-04"},{"lineNumber":136,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2024-03-04"},{"lineNumber":137,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2024-03-04"},{"lineNumber":138,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2024-03-04"},{"lineNumber":139,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-04"},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-04"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":142,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2024-03-04"},{"lineNumber":143,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY;","lastModifiedDate":"2024-03-04"},{"lineNumber":144,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2024-03-04"},{"lineNumber":145,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-04"},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-04"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":148,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2024-03-04"},{"lineNumber":149,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-04"},{"lineNumber":150,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2024-03-04"},{"lineNumber":151,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-04"},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-04"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":154,"author":{"gitId":"-"},"content":" // address","lastModifiedDate":"2024-03-04"},{"lineNumber":155,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + ADDRESS_DESC_AMY;","lastModifiedDate":"2024-03-04"},{"lineNumber":156,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2024-03-04"},{"lineNumber":157,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-04"},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-04"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":160,"author":{"gitId":"Jawad280"},"content":" // tag","lastModifiedDate":"2024-03-11"},{"lineNumber":161,"author":{"gitId":"ashleygoh1"},"content":" userInput \u003d targetIndex.getOneBased() + TAG_DESC_INTERVIEW;","lastModifiedDate":"2024-03-13"},{"lineNumber":162,"author":{"gitId":"ashleygoh1"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withTags(VALID_TAG_INTERVIEW).build();","lastModifiedDate":"2024-03-13"},{"lineNumber":163,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":164,"author":{"gitId":"eunrcn"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-04"},{"lineNumber":165,"author":{"gitId":"eunrcn"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-04"},{"lineNumber":166,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":167,"author":{"gitId":"eunrcn"},"content":" // job description","lastModifiedDate":"2024-03-04"},{"lineNumber":168,"author":{"gitId":"Jawad280"},"content":" userInput \u003d targetIndex.getOneBased() + JOB_DESCRIPTION_DESC_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":169,"author":{"gitId":"eunrcn"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withJobDescription(VALID_JOB_DESCRIPTION_AMY).build();","lastModifiedDate":"2024-03-04"},{"lineNumber":170,"author":{"gitId":"eunrcn"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-04"},{"lineNumber":171,"author":{"gitId":"eunrcn"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-04"},{"lineNumber":172,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":173,"author":{"gitId":"eunrcn"},"content":" // interview date","lastModifiedDate":"2024-03-04"},{"lineNumber":174,"author":{"gitId":"Jawad280"},"content":" userInput \u003d targetIndex.getOneBased() + INTERVIEW_DATE_DESC_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":175,"author":{"gitId":"eunrcn"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withInterviewDate(VALID_INTERVIEW_DATE_AMY).build();","lastModifiedDate":"2024-03-04"},{"lineNumber":176,"author":{"gitId":"eunrcn"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-04"},{"lineNumber":177,"author":{"gitId":"eunrcn"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-04"},{"lineNumber":178,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":179,"author":{"gitId":"eunrcn"},"content":" // intern duration","lastModifiedDate":"2024-03-04"},{"lineNumber":180,"author":{"gitId":"Jawad280"},"content":" userInput \u003d targetIndex.getOneBased() + INTERN_DURATION_DESC_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":181,"author":{"gitId":"eunrcn"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withInternDuration(VALID_INTERN_DURATION_AMY).build();","lastModifiedDate":"2024-03-04"},{"lineNumber":182,"author":{"gitId":"eunrcn"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-04"},{"lineNumber":183,"author":{"gitId":"eunrcn"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-04"},{"lineNumber":184,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":185,"author":{"gitId":"eunrcn"},"content":" // salary","lastModifiedDate":"2024-03-04"},{"lineNumber":186,"author":{"gitId":"Jawad280"},"content":" userInput \u003d targetIndex.getOneBased() + SALARY_DESC_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":187,"author":{"gitId":"eunrcn"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withSalary(VALID_SALARY_AMY).build();","lastModifiedDate":"2024-03-04"},{"lineNumber":188,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-04"},{"lineNumber":189,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-04"},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":192,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-04"},{"lineNumber":193,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2024-03-04"},{"lineNumber":194,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2024-03-04"},{"lineNumber":195,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2024-03-04"},{"lineNumber":196,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2024-03-04"},{"lineNumber":197,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-04"},{"lineNumber":198,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2024-03-04"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":200,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2024-03-04"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":202,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2024-03-04"},{"lineNumber":203,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2024-03-04"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":205,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2024-03-04"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":207,"author":{"gitId":"eunrcn"},"content":" // multiple valid fields repeated","lastModifiedDate":"2024-03-04"},{"lineNumber":208,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2024-03-04"},{"lineNumber":209,"author":{"gitId":"ashleygoh1"},"content":" + TAG_DESC_INTERVIEW + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2024-03-13"},{"lineNumber":210,"author":{"gitId":"ashleygoh1"},"content":" + TAG_DESC_INTERVIEW + PHONE_DESC_BOB + ADDRESS_DESC_BOB + EMAIL_DESC_BOB + TAG_DESC_NO_REPLY;","lastModifiedDate":"2024-03-13"},{"lineNumber":211,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":212,"author":{"gitId":"Jawad280"},"content":" assertParseFailure(","lastModifiedDate":"2024-03-11"},{"lineNumber":213,"author":{"gitId":"Jawad280"},"content":" parser,","lastModifiedDate":"2024-03-11"},{"lineNumber":214,"author":{"gitId":"Jawad280"},"content":" userInput,","lastModifiedDate":"2024-03-11"},{"lineNumber":215,"author":{"gitId":"Jawad280"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_TAG, PREFIX_ADDRESS)","lastModifiedDate":"2024-03-11"},{"lineNumber":216,"author":{"gitId":"Jawad280"},"content":" );","lastModifiedDate":"2024-03-11"},{"lineNumber":217,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2024-03-04"},{"lineNumber":218,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2024-03-04"},{"lineNumber":219,"author":{"gitId":"-"},"content":" + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2024-03-04"},{"lineNumber":220,"author":{"gitId":"Jawad280"},"content":" assertParseFailure(","lastModifiedDate":"2024-03-11"},{"lineNumber":221,"author":{"gitId":"Jawad280"},"content":" parser,","lastModifiedDate":"2024-03-11"},{"lineNumber":222,"author":{"gitId":"Jawad280"},"content":" userInput,","lastModifiedDate":"2024-03-11"},{"lineNumber":223,"author":{"gitId":"Jawad280"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS)","lastModifiedDate":"2024-03-11"},{"lineNumber":224,"author":{"gitId":"Jawad280"},"content":" );","lastModifiedDate":"2024-03-11"},{"lineNumber":225,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":226,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"eunrcn":27,"chenyixin0":9,"Jawad280":23,"ashleygoh1":6,"-":161}},{"path":"src/test/java/seedu/address/logic/parser/NoteCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-24"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-24"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-24"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-24"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-24"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":"import seedu.address.logic.commands.NoteCommand;","lastModifiedDate":"2024-03-24"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-24"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":"class NoteCommandParserTest {","lastModifiedDate":"2024-03-24"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":" void parse_validArgs_returnsNoteCommand() throws ParseException {","lastModifiedDate":"2024-03-24"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":" NoteCommandParser parser \u003d new NoteCommandParser();","lastModifiedDate":"2024-03-24"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":" NoteCommand expectedCommand \u003d new NoteCommand(Index.fromZeroBased(0));","lastModifiedDate":"2024-03-24"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":21,"author":{"gitId":"Jawad280"},"content":" assertEquals(expectedCommand, parser.parse(\"1\"));","lastModifiedDate":"2024-03-24"},{"lineNumber":22,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":23,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":24,"author":{"gitId":"Jawad280"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":25,"author":{"gitId":"Jawad280"},"content":" void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-24"},{"lineNumber":26,"author":{"gitId":"Jawad280"},"content":" NoteCommandParser parser \u003d new NoteCommandParser();","lastModifiedDate":"2024-03-24"},{"lineNumber":27,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":28,"author":{"gitId":"Jawad280"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"abc\"));","lastModifiedDate":"2024-03-24"},{"lineNumber":29,"author":{"gitId":"Jawad280"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"\"));","lastModifiedDate":"2024-03-24"},{"lineNumber":30,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":31,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":32,"author":{"gitId":"Jawad280"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":33,"author":{"gitId":"Jawad280"},"content":" void parse_invalidIndex_throwsParseException() {","lastModifiedDate":"2024-03-24"},{"lineNumber":34,"author":{"gitId":"Jawad280"},"content":" NoteCommandParser parser \u003d new NoteCommandParser();","lastModifiedDate":"2024-03-24"},{"lineNumber":35,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":36,"author":{"gitId":"Jawad280"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"0\"));","lastModifiedDate":"2024-03-24"},{"lineNumber":37,"author":{"gitId":"Jawad280"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"-1\"));","lastModifiedDate":"2024-03-24"},{"lineNumber":38,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":39,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":40,"author":{"gitId":"Jawad280"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":41,"author":{"gitId":"Jawad280"},"content":" void parse_withWhitespaceAndValidArgs_returnsNoteCommand() throws ParseException {","lastModifiedDate":"2024-03-24"},{"lineNumber":42,"author":{"gitId":"Jawad280"},"content":" NoteCommandParser parser \u003d new NoteCommandParser();","lastModifiedDate":"2024-03-24"},{"lineNumber":43,"author":{"gitId":"Jawad280"},"content":" NoteCommand expectedCommand \u003d new NoteCommand(Index.fromZeroBased(1));","lastModifiedDate":"2024-03-24"},{"lineNumber":44,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":45,"author":{"gitId":"Jawad280"},"content":" assertEquals(expectedCommand, parser.parse(\" 2 \"));","lastModifiedDate":"2024-03-24"},{"lineNumber":46,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":47,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":48,"author":{"gitId":"Jawad280"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":49,"author":{"gitId":"Jawad280"},"content":" void parse_withWhitespaceAndInvalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-24"},{"lineNumber":50,"author":{"gitId":"Jawad280"},"content":" NoteCommandParser parser \u003d new NoteCommandParser();","lastModifiedDate":"2024-03-24"},{"lineNumber":51,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":52,"author":{"gitId":"Jawad280"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\" abc \"));","lastModifiedDate":"2024-03-24"},{"lineNumber":53,"author":{"gitId":"Jawad280"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\" \"));","lastModifiedDate":"2024-03-24"},{"lineNumber":54,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":55,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-03-24"}],"authorContributionMap":{"Jawad280":55}},{"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 seedu.address.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2017-06-02"},{"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.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2017-05-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2017-05-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":22,"author":{"gitId":"ashleygoh1"},"content":" private static final String INVALID_TAG \u003d \"#NR\";","lastModifiedDate":"2024-02-26"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d \"123456\";","lastModifiedDate":"2017-05-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d \"123 Main Street #0505\";","lastModifiedDate":"2017-05-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":28,"author":{"gitId":"ashleygoh1"},"content":" private static final String VALID_TAG \u003d \"NR\";","lastModifiedDate":"2024-02-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2017-05-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2017-05-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","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_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":64,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":70,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void parsePhone_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePhone((String) null));","lastModifiedDate":"2019-03-14"},{"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":"-"},"content":" public void parsePhone_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhone(INVALID_PHONE));","lastModifiedDate":"2019-03-14"},{"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_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":87,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-22"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(VALID_PHONE));","lastModifiedDate":"2017-05-30"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithWhitespace_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":93,"author":{"gitId":"-"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":94,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-30"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(phoneWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void parseAddress_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseAddress((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-22"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(VALID_ADDRESS));","lastModifiedDate":"2017-05-30"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":111,"author":{"gitId":"-"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_ADDRESS + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":112,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-30"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(addressWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14"},{"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":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":128,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":134,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":135,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30"},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":139,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":140,"author":{"gitId":"-"},"content":" public void parseTag_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":145,"author":{"gitId":"-"},"content":" public void parseTag_invalidValue_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTag(INVALID_TAG));","lastModifiedDate":"2019-03-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":149,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":150,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithoutWhitespace_returnsTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":151,"author":{"gitId":"ashleygoh1"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG);","lastModifiedDate":"2024-02-26"},{"lineNumber":152,"author":{"gitId":"ashleygoh1"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(VALID_TAG));","lastModifiedDate":"2024-02-26"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":156,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithWhitespace_returnsTrimmedTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":157,"author":{"gitId":"ashleygoh1"},"content":" String tagWithWhitespace \u003d WHITESPACE + VALID_TAG + WHITESPACE;","lastModifiedDate":"2024-02-26"},{"lineNumber":158,"author":{"gitId":"ashleygoh1"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG);","lastModifiedDate":"2024-02-26"},{"lineNumber":159,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(tagWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":162,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":163,"author":{"gitId":"-"},"content":" public void parseTags_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":164,"author":{"gitId":"ashleygoh1"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag(null));","lastModifiedDate":"2024-02-26"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":167,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22"}],"authorContributionMap":{"ashleygoh1":7,"-":160}},{"path":"src/test/java/seedu/address/logic/parser/ViewCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"eunrcn"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"eunrcn"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"eunrcn"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"eunrcn"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"eunrcn"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"eunrcn"},"content":"import seedu.address.logic.commands.ViewCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"eunrcn"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"eunrcn"},"content":"class ViewCommandParserTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"eunrcn"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"eunrcn"},"content":" void parse_validArgs_returnsViewCommand() throws ParseException {","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"eunrcn"},"content":" ViewCommandParser parser \u003d new ViewCommandParser();","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"ashleygoh1"},"content":" ViewCommand expectedCommand \u003d new ViewCommand(Index.fromZeroBased(0));","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"eunrcn"},"content":" assertEquals(expectedCommand, parser.parse(\"1\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"eunrcn"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"eunrcn"},"content":" void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"eunrcn"},"content":" ViewCommandParser parser \u003d new ViewCommandParser();","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"eunrcn"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"abc\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"eunrcn"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"eunrcn"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"eunrcn"},"content":" void parse_invalidIndex_throwsParseException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"eunrcn"},"content":" ViewCommandParser parser \u003d new ViewCommandParser();","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"eunrcn"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"0\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"eunrcn"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"-1\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"eunrcn"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"eunrcn"},"content":" void parse_withWhitespaceAndValidArgs_returnsViewCommand() throws ParseException {","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"eunrcn"},"content":" ViewCommandParser parser \u003d new ViewCommandParser();","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"ashleygoh1"},"content":" ViewCommand expectedCommand \u003d new ViewCommand(Index.fromZeroBased(1));","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"eunrcn"},"content":" assertEquals(expectedCommand, parser.parse(\" 2 \"));","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"eunrcn"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"eunrcn"},"content":" void parse_withWhitespaceAndInvalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"eunrcn"},"content":" ViewCommandParser parser \u003d new ViewCommandParser();","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"eunrcn"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\" abc \"));","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"eunrcn"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\" \"));","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"eunrcn"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"eunrcn":50,"ashleygoh1":3}},{"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":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_INTERVIEW;","lastModifiedDate":"2024-03-12"},{"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":"ashleygoh1"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_INTERVIEW)","lastModifiedDate":"2024-03-12"},{"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":"ashleygoh1"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_INTERVIEW)","lastModifiedDate":"2024-03-12"},{"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":"-"},"content":"}","lastModifiedDate":"2016-12-24"}],"authorContributionMap":{"ashleygoh1":3,"-":105}},{"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":"-"},"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":"ashleygoh1"},"content":" String[] keywords \u003d ALICE.getCompanyName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2024-02-25"},{"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":{"ashleygoh1":1,"-":131}},{"path":"src/test/java/seedu/address/model/person/InternDurationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ashleygoh1"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"ashleygoh1"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"ashleygoh1"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"ashleygoh1"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"ashleygoh1"},"content":"public class InternDurationTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"ashleygoh1"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"ashleygoh1"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"ashleygoh1"},"content":" assertThrows(NullPointerException.class, () -\u003e new InternDuration(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"ashleygoh1"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"ashleygoh1"},"content":" public void isValidInternDuration() {","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"ashleygoh1"},"content":" // null address","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"ashleygoh1"},"content":" assertThrows(NullPointerException.class, () -\u003e InternDuration.isValidInternDuration(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"ashleygoh1"},"content":" // invalid addresses","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"ashleygoh1"},"content":" assertFalse(InternDuration.isValidInternDuration(\"\")); // empty string","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"ashleygoh1"},"content":" assertFalse(InternDuration.isValidInternDuration(\" \")); // spaces only","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"ashleygoh1"},"content":" // valid addresses","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"ashleygoh1"},"content":" assertTrue(InternDuration.isValidInternDuration(\"6 months\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"ashleygoh1"},"content":" assertTrue(InternDuration.isValidInternDuration(\"-\")); // one character","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"ashleygoh1"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"ashleygoh1"},"content":" public void equals() {","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"ashleygoh1"},"content":" InternDuration internDuration \u003d new InternDuration(\"Valid InternDuration\");","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"ashleygoh1"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"ashleygoh1"},"content":" assertTrue(internDuration.equals(new InternDuration(\"Valid InternDuration\")));","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"ashleygoh1"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"ashleygoh1"},"content":" assertTrue(internDuration.equals(internDuration));","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"ashleygoh1"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"ashleygoh1"},"content":" assertFalse(internDuration.equals(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"ashleygoh1"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"ashleygoh1"},"content":" assertFalse(internDuration.equals(5.0f));","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"ashleygoh1"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"ashleygoh1"},"content":" assertFalse(internDuration.equals(new Address(\"Other Valid InternDuration\")));","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"ashleygoh1"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"ashleygoh1":48}},{"path":"src/test/java/seedu/address/model/person/JobDescriptionTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ashleygoh1"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"ashleygoh1"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"ashleygoh1"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"ashleygoh1"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"ashleygoh1"},"content":"public class JobDescriptionTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"ashleygoh1"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"ashleygoh1"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"ashleygoh1"},"content":" assertThrows(NullPointerException.class, () -\u003e new InternDuration(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"ashleygoh1"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"ashleygoh1"},"content":" public void isValidInternDuration() {","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"ashleygoh1"},"content":" // null address","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"ashleygoh1"},"content":" assertThrows(NullPointerException.class, () -\u003e InternDuration.isValidInternDuration(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"ashleygoh1"},"content":" // invalid addresses","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"ashleygoh1"},"content":" assertFalse(InternDuration.isValidInternDuration(\"\")); // empty string","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"ashleygoh1"},"content":" assertFalse(InternDuration.isValidInternDuration(\" \")); // spaces only","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"ashleygoh1"},"content":" // valid addresses","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"ashleygoh1"},"content":" assertTrue(InternDuration.isValidInternDuration(\"6 months\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"ashleygoh1"},"content":" assertTrue(InternDuration.isValidInternDuration(\"-\")); // one character","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"ashleygoh1"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"ashleygoh1"},"content":" public void equals() {","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"ashleygoh1"},"content":" InternDuration internDuration \u003d new InternDuration(\"Valid InternDuration\");","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"ashleygoh1"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"ashleygoh1"},"content":" assertTrue(internDuration.equals(new InternDuration(\"Valid InternDuration\")));","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"ashleygoh1"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"ashleygoh1"},"content":" assertTrue(internDuration.equals(internDuration));","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"ashleygoh1"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"ashleygoh1"},"content":" assertFalse(internDuration.equals(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"ashleygoh1"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"ashleygoh1"},"content":" assertFalse(internDuration.equals(5.0f));","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"ashleygoh1"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"ashleygoh1"},"content":" assertFalse(internDuration.equals(new Address(\"Other Valid InternDuration\")));","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"ashleygoh1"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"ashleygoh1":49}},{"path":"src/test/java/seedu/address/model/person/NoteTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Jawad280"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":3,"author":{"gitId":"Jawad280"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"Jawad280"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"Jawad280"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-22"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":"public class NoteTest {","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"Jawad280"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"Jawad280"},"content":" assertThrows(NullPointerException.class, () -\u003e new Note(null));","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"Jawad280"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"Jawad280"},"content":" public void isValidNote() {","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"Jawad280"},"content":" // null address","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"Jawad280"},"content":" assertThrows(NullPointerException.class, () -\u003e Note.isValidNote(null));","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"Jawad280"},"content":" // invalid addresses","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"Jawad280"},"content":" assertFalse(Note.isValidNote(\"\")); // empty string","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"Jawad280"},"content":" assertFalse(Note.isValidNote(\" \")); // spaces only","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"Jawad280"},"content":" // valid addresses","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"Jawad280"},"content":" assertTrue(Note.isValidNote(\"Yay Yay Yay\"));","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"Jawad280"},"content":" assertTrue(Note.isValidNote(\"-\")); // one character","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"Jawad280"},"content":" assertTrue(Note.isValidNote(\"The CEO of XYZ Corporation, John Smith, is widely recognized ...\"));","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":30,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":32,"author":{"gitId":"Jawad280"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":33,"author":{"gitId":"Jawad280"},"content":" public void equals() {","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"Jawad280"},"content":" Note note \u003d new Note(\"Valid Note\");","lastModifiedDate":"2024-03-22"},{"lineNumber":35,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":36,"author":{"gitId":"Jawad280"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-22"},{"lineNumber":37,"author":{"gitId":"Jawad280"},"content":" assertTrue(note.equals(new Note(\"Valid Note\")));","lastModifiedDate":"2024-03-22"},{"lineNumber":38,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"Jawad280"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"Jawad280"},"content":" assertTrue(note.equals(note));","lastModifiedDate":"2024-03-22"},{"lineNumber":41,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":42,"author":{"gitId":"Jawad280"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-22"},{"lineNumber":43,"author":{"gitId":"Jawad280"},"content":" assertFalse(note.equals(null));","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"Jawad280"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"Jawad280"},"content":" assertFalse(note.equals(5.0f));","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"Jawad280"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"Jawad280"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-22"},{"lineNumber":49,"author":{"gitId":"Jawad280"},"content":" assertFalse(note.equals(new Note(\"Other Valid Note\")));","lastModifiedDate":"2024-03-22"},{"lineNumber":50,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":51,"author":{"gitId":"Jawad280"},"content":"}","lastModifiedDate":"2024-03-22"}],"authorContributionMap":{"Jawad280":51}},{"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":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_INTERVIEW;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26"},{"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":"2018-04-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18"},{"lineNumber":29,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2020-12-18"},{"lineNumber":30,"author":{"gitId":"ashleygoh1"},"content":" .withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_INTERVIEW).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":38,"author":{"gitId":"-"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":" editedBob \u003d new PersonBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_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 address -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_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-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18"},{"lineNumber":82,"author":{"gitId":"ashleygoh1"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_INTERVIEW).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"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":"ashleygoh1"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getCompanyName()","lastModifiedDate":"2024-02-26"},{"lineNumber":89,"author":{"gitId":"ashleygoh1"},"content":" + \", phone\u003d\" + ALICE.getPhone() + \", email\u003d\" + ALICE.getEmail()","lastModifiedDate":"2024-02-26"},{"lineNumber":90,"author":{"gitId":"ashleygoh1"},"content":" + \", address\u003d\" + ALICE.getAddress() + \", tag\u003d\" + ALICE.getTag()","lastModifiedDate":"2024-02-26"},{"lineNumber":91,"author":{"gitId":"ashleygoh1"},"content":" + \", job description\u003d\" + ALICE.getJobDescription()","lastModifiedDate":"2024-02-26"},{"lineNumber":92,"author":{"gitId":"ashleygoh1"},"content":" + \", interview date\u003d\" + ALICE.getInterviewDate()","lastModifiedDate":"2024-02-26"},{"lineNumber":93,"author":{"gitId":"ashleygoh1"},"content":" + \", intern duration\u003d\" + ALICE.getInternDuration()","lastModifiedDate":"2024-02-26"},{"lineNumber":94,"author":{"gitId":"Jawad280"},"content":" + \", salary\u003d\" + ALICE.getSalary()","lastModifiedDate":"2024-03-22"},{"lineNumber":95,"author":{"gitId":"Jawad280"},"content":" + \", note\u003d\" + ALICE.getNote() + \"}\";","lastModifiedDate":"2024-03-22"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"Jawad280":2,"ashleygoh1":9,"-":87}},{"path":"src/test/java/seedu/address/model/person/SalaryTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ashleygoh1"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"ashleygoh1"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"ashleygoh1"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"ashleygoh1"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"ashleygoh1"},"content":"public class SalaryTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"ashleygoh1"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"ashleygoh1"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"ashleygoh1"},"content":" assertThrows(NullPointerException.class, () -\u003e new Salary(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"ashleygoh1"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"ashleygoh1"},"content":" public void constructor_invalidSalary_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"ashleygoh1"},"content":" String invalidSalary \u003d \"\";","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"ashleygoh1"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Salary(invalidSalary));","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"ashleygoh1"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"ashleygoh1"},"content":" public void isValidSalary() {","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"ashleygoh1"},"content":" // null salary","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"ashleygoh1"},"content":" assertThrows(NullPointerException.class, () -\u003e Salary.isValidSalary(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"ashleygoh1"},"content":" // invalid Salary","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"ashleygoh1"},"content":" assertFalse(Salary.isValidSalary(\"\")); // empty string","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"ashleygoh1"},"content":" assertFalse(Salary.isValidSalary(\" \")); // spaces only","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"ashleygoh1"},"content":" assertFalse(Salary.isValidSalary(\"salary\")); // non-numeric","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"ashleygoh1"},"content":" assertFalse(Salary.isValidSalary(\"9011p041\")); // alphabets within digits","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"ashleygoh1"},"content":" assertFalse(Salary.isValidSalary(\"9312 1534\")); // spaces within digits","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"ashleygoh1"},"content":" // valid salary","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"ashleygoh1"},"content":" assertTrue(Salary.isValidSalary(\"1\")); // exactly 1 numbers","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"ashleygoh1"},"content":" assertTrue(Salary.isValidSalary(\"1000\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"ashleygoh1"},"content":" assertTrue(Salary.isValidSalary(\"124293842033123\")); // long salary","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"ashleygoh1"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"ashleygoh1"},"content":" public void equals() {","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"ashleygoh1"},"content":" Salary salary \u003d new Salary(\"1000\");","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"ashleygoh1"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"ashleygoh1"},"content":" assertTrue(salary.equals(new Salary(\"1000\")));","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"ashleygoh1"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"ashleygoh1"},"content":" assertTrue(salary.equals(salary));","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"ashleygoh1"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"ashleygoh1"},"content":" assertFalse(salary.equals(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"ashleygoh1"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"ashleygoh1"},"content":" assertFalse(salary.equals(5.0f));","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"ashleygoh1"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"ashleygoh1"},"content":" assertFalse(salary.equals(new Salary(\"995\")));","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"ashleygoh1"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"ashleygoh1":59}},{"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":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_INTERVIEW;","lastModifiedDate":"2024-03-12"},{"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":"ashleygoh1"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_INTERVIEW)","lastModifiedDate":"2024-03-12"},{"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":"ashleygoh1"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_INTERVIEW)","lastModifiedDate":"2024-03-12"},{"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":{"ashleygoh1":3,"-":172}},{"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 org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"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.Address;","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.InternDuration;","lastModifiedDate":"2024-02-26"},{"lineNumber":14,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.InterviewDate;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.JobDescription;","lastModifiedDate":"2024-02-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.Salary;","lastModifiedDate":"2024-02-26"},{"lineNumber":20,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-12"},{"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":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"ashleygoh1"},"content":" private static final String INVALID_JOB_DESCRIPTION \u003d \" \";","lastModifiedDate":"2024-02-26"},{"lineNumber":29,"author":{"gitId":"ashleygoh1"},"content":" private static final String INVALID_INTERVIEW_DATE \u003d \"\";","lastModifiedDate":"2024-02-26"},{"lineNumber":30,"author":{"gitId":"ashleygoh1"},"content":" private static final String INVALID_INTERN_DURATION \u003d \" \";","lastModifiedDate":"2024-02-26"},{"lineNumber":31,"author":{"gitId":"ashleygoh1"},"content":" private static final String INVALID_SALARY \u003d \"0\";","lastModifiedDate":"2024-02-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"ashleygoh1"},"content":" private static final String VALID_NAME \u003d BENSON.getCompanyName().toString();","lastModifiedDate":"2024-02-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"ashleygoh1"},"content":" private static final String VALID_TAGS \u003d BENSON.getTag().tagName;","lastModifiedDate":"2024-02-26"},{"lineNumber":38,"author":{"gitId":"ashleygoh1"},"content":" private static final String VALID_JOB_DESCRIPTION \u003d BENSON.getJobDescription().toString();","lastModifiedDate":"2024-02-26"},{"lineNumber":39,"author":{"gitId":"ashleygoh1"},"content":" private static final String VALID_INTERVIEW_DATE \u003d BENSON.getInterviewDate().toString();","lastModifiedDate":"2024-02-26"},{"lineNumber":40,"author":{"gitId":"ashleygoh1"},"content":" private static final String VALID_INTERN_DURATION \u003d BENSON.getInternDuration().toString();","lastModifiedDate":"2024-02-26"},{"lineNumber":41,"author":{"gitId":"ashleygoh1"},"content":" private static final String VALID_SALARY \u003d BENSON.getSalary().toString();","lastModifiedDate":"2024-02-26"},{"lineNumber":42,"author":{"gitId":"Jawad280"},"content":" private static final String VALID_NOTE \u003d BENSON.getNote().toString();","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","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 toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"ashleygoh1"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS,","lastModifiedDate":"2024-02-26"},{"lineNumber":54,"author":{"gitId":"Jawad280"},"content":" VALID_JOB_DESCRIPTION, VALID_INTERVIEW_DATE, VALID_INTERN_DURATION, VALID_SALARY, VALID_NOTE);","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","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_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"ashleygoh1"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS,","lastModifiedDate":"2024-02-26"},{"lineNumber":62,"author":{"gitId":"Jawad280"},"content":" VALID_JOB_DESCRIPTION, VALID_INTERVIEW_DATE, VALID_INTERN_DURATION, VALID_SALARY, VALID_NOTE);","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"ashleygoh1"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS,","lastModifiedDate":"2024-02-26"},{"lineNumber":71,"author":{"gitId":"Jawad280"},"content":" VALID_JOB_DESCRIPTION, VALID_INTERVIEW_DATE, VALID_INTERN_DURATION, VALID_SALARY, VALID_NOTE);","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","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_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"ashleygoh1"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS,","lastModifiedDate":"2024-02-26"},{"lineNumber":79,"author":{"gitId":"Jawad280"},"content":" VALID_JOB_DESCRIPTION, VALID_INTERVIEW_DATE, VALID_INTERN_DURATION, VALID_SALARY, VALID_NOTE);","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"ashleygoh1"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_ADDRESS, VALID_TAGS,","lastModifiedDate":"2024-02-26"},{"lineNumber":88,"author":{"gitId":"Jawad280"},"content":" VALID_JOB_DESCRIPTION, VALID_INTERVIEW_DATE, VALID_INTERN_DURATION, VALID_SALARY, VALID_NOTE);","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","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_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"ashleygoh1"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null, VALID_ADDRESS, VALID_TAGS,","lastModifiedDate":"2024-02-26"},{"lineNumber":96,"author":{"gitId":"Jawad280"},"content":" VALID_JOB_DESCRIPTION, VALID_INTERVIEW_DATE, VALID_INTERN_DURATION, VALID_SALARY, VALID_NOTE);","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"ashleygoh1"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, null, VALID_TAGS,","lastModifiedDate":"2024-02-26"},{"lineNumber":104,"author":{"gitId":"Jawad280"},"content":" VALID_JOB_DESCRIPTION, VALID_INTERVIEW_DATE, VALID_INTERN_DURATION, VALID_SALARY, VALID_NOTE);","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":110,"author":{"gitId":"ashleygoh1"},"content":" public void toModelType_nullTag_throwsIllegalValueException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":111,"author":{"gitId":"ashleygoh1"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, null,","lastModifiedDate":"2024-03-12"},{"lineNumber":112,"author":{"gitId":"Jawad280"},"content":" VALID_JOB_DESCRIPTION, VALID_INTERVIEW_DATE, VALID_INTERN_DURATION, VALID_SALARY, VALID_NOTE);","lastModifiedDate":"2024-03-20"},{"lineNumber":113,"author":{"gitId":"ashleygoh1"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Tag.class.getSimpleName());","lastModifiedDate":"2024-03-12"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-12"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":120,"author":{"gitId":"ashleygoh1"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, INVALID_TAG,","lastModifiedDate":"2024-02-26"},{"lineNumber":121,"author":{"gitId":"Jawad280"},"content":" VALID_JOB_DESCRIPTION, VALID_INTERVIEW_DATE, VALID_INTERN_DURATION, VALID_SALARY, VALID_NOTE);","lastModifiedDate":"2024-03-20"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":125,"author":{"gitId":"ashleygoh1"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":126,"author":{"gitId":"ashleygoh1"},"content":" public void toModelType_nullJobDescription_throwsIllegalValueException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":127,"author":{"gitId":"ashleygoh1"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-03-12"},{"lineNumber":128,"author":{"gitId":"Jawad280"},"content":" VALID_ADDRESS, VALID_TAGS, null, VALID_INTERVIEW_DATE, VALID_INTERN_DURATION, VALID_SALARY,","lastModifiedDate":"2024-03-20"},{"lineNumber":129,"author":{"gitId":"Jawad280"},"content":" VALID_NOTE);","lastModifiedDate":"2024-03-20"},{"lineNumber":130,"author":{"gitId":"ashleygoh1"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, JobDescription.class.getSimpleName());","lastModifiedDate":"2024-03-12"},{"lineNumber":131,"author":{"gitId":"ashleygoh1"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-12"},{"lineNumber":132,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":133,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":134,"author":{"gitId":"ashleygoh1"},"content":" @Test","lastModifiedDate":"2024-02-26"},{"lineNumber":135,"author":{"gitId":"ashleygoh1"},"content":" public void toModelType_invalidJobDescription_throwsIllegalValueException() {","lastModifiedDate":"2024-02-26"},{"lineNumber":136,"author":{"gitId":"ashleygoh1"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-02-26"},{"lineNumber":137,"author":{"gitId":"ashleygoh1"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS,","lastModifiedDate":"2024-02-26"},{"lineNumber":138,"author":{"gitId":"Jawad280"},"content":" INVALID_JOB_DESCRIPTION, VALID_INTERVIEW_DATE, VALID_INTERN_DURATION, VALID_SALARY, VALID_NOTE);","lastModifiedDate":"2024-03-20"},{"lineNumber":139,"author":{"gitId":"ashleygoh1"},"content":" String expectedMessage \u003d JobDescription.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-02-26"},{"lineNumber":140,"author":{"gitId":"ashleygoh1"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-02-26"},{"lineNumber":141,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":142,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":143,"author":{"gitId":"ashleygoh1"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":144,"author":{"gitId":"ashleygoh1"},"content":" public void toModelType_nullInterviewDate_returnPerson() throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":145,"author":{"gitId":"ashleygoh1"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-03-12"},{"lineNumber":146,"author":{"gitId":"ashleygoh1"},"content":" VALID_ADDRESS, VALID_TAGS, VALID_JOB_DESCRIPTION, INVALID_INTERVIEW_DATE,","lastModifiedDate":"2024-03-12"},{"lineNumber":147,"author":{"gitId":"Jawad280"},"content":" VALID_INTERN_DURATION, VALID_SALARY, VALID_NOTE);","lastModifiedDate":"2024-03-20"},{"lineNumber":148,"author":{"gitId":"ashleygoh1"},"content":" Person person1 \u003d new Person(BENSON.getCompanyName(), BENSON.getPhone(), BENSON.getEmail(), BENSON.getAddress(),","lastModifiedDate":"2024-03-12"},{"lineNumber":149,"author":{"gitId":"ashleygoh1"},"content":" BENSON.getTag(), BENSON.getJobDescription(), new InterviewDate(null),","lastModifiedDate":"2024-03-12"},{"lineNumber":150,"author":{"gitId":"Jawad280"},"content":" BENSON.getInternDuration(), BENSON.getSalary(), BENSON.getNote());","lastModifiedDate":"2024-03-20"},{"lineNumber":151,"author":{"gitId":"ashleygoh1"},"content":" assertEquals(person1, person.toModelType());","lastModifiedDate":"2024-03-12"},{"lineNumber":152,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":153,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":154,"author":{"gitId":"ashleygoh1"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":155,"author":{"gitId":"ashleygoh1"},"content":" public void toModelType_validPersonDetails_returnsPe() throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":156,"author":{"gitId":"ashleygoh1"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2024-03-12"},{"lineNumber":157,"author":{"gitId":"ashleygoh1"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2024-03-12"},{"lineNumber":158,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":159,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":160,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":161,"author":{"gitId":"ashleygoh1"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":162,"author":{"gitId":"ashleygoh1"},"content":" public void toModelType_nullInternDuration_throwsIllegalValueException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":163,"author":{"gitId":"ashleygoh1"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-12"},{"lineNumber":164,"author":{"gitId":"Jawad280"},"content":" VALID_TAGS, VALID_JOB_DESCRIPTION, VALID_INTERVIEW_DATE, null, VALID_SALARY, VALID_NOTE);","lastModifiedDate":"2024-03-20"},{"lineNumber":165,"author":{"gitId":"ashleygoh1"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, InternDuration.class.getSimpleName());","lastModifiedDate":"2024-03-12"},{"lineNumber":166,"author":{"gitId":"ashleygoh1"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-12"},{"lineNumber":167,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":168,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":169,"author":{"gitId":"ashleygoh1"},"content":" @Test","lastModifiedDate":"2024-02-26"},{"lineNumber":170,"author":{"gitId":"ashleygoh1"},"content":" public void toModelType_invalidInternDuration_throwsIllegalValueException() {","lastModifiedDate":"2024-02-26"},{"lineNumber":171,"author":{"gitId":"ashleygoh1"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-02-26"},{"lineNumber":172,"author":{"gitId":"ashleygoh1"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS,","lastModifiedDate":"2024-02-26"},{"lineNumber":173,"author":{"gitId":"Jawad280"},"content":" VALID_JOB_DESCRIPTION, VALID_INTERVIEW_DATE, INVALID_INTERN_DURATION, VALID_SALARY, VALID_NOTE);","lastModifiedDate":"2024-03-20"},{"lineNumber":174,"author":{"gitId":"ashleygoh1"},"content":" String expectedMessage \u003d InternDuration.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-02-26"},{"lineNumber":175,"author":{"gitId":"ashleygoh1"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-02-26"},{"lineNumber":176,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":177,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":178,"author":{"gitId":"ashleygoh1"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":179,"author":{"gitId":"ashleygoh1"},"content":" public void toModelType_nullSalary_throwsIllegalValueException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":180,"author":{"gitId":"ashleygoh1"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-03-12"},{"lineNumber":181,"author":{"gitId":"Jawad280"},"content":" VALID_ADDRESS, VALID_TAGS, VALID_JOB_DESCRIPTION, VALID_INTERVIEW_DATE, VALID_INTERN_DURATION,","lastModifiedDate":"2024-03-20"},{"lineNumber":182,"author":{"gitId":"Jawad280"},"content":" null, VALID_NOTE);","lastModifiedDate":"2024-03-20"},{"lineNumber":183,"author":{"gitId":"ashleygoh1"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Salary.class.getSimpleName());","lastModifiedDate":"2024-03-12"},{"lineNumber":184,"author":{"gitId":"ashleygoh1"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-12"},{"lineNumber":185,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":186,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":187,"author":{"gitId":"ashleygoh1"},"content":" @Test","lastModifiedDate":"2024-02-26"},{"lineNumber":188,"author":{"gitId":"ashleygoh1"},"content":" public void toModelType_invalidSalary_throwsIllegalValueException() {","lastModifiedDate":"2024-02-26"},{"lineNumber":189,"author":{"gitId":"ashleygoh1"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-02-26"},{"lineNumber":190,"author":{"gitId":"ashleygoh1"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS,","lastModifiedDate":"2024-02-26"},{"lineNumber":191,"author":{"gitId":"Jawad280"},"content":" VALID_JOB_DESCRIPTION, VALID_INTERVIEW_DATE, VALID_INTERN_DURATION, INVALID_SALARY, VALID_NOTE);","lastModifiedDate":"2024-03-20"},{"lineNumber":192,"author":{"gitId":"ashleygoh1"},"content":" String expectedMessage \u003d Salary.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-02-26"},{"lineNumber":193,"author":{"gitId":"ashleygoh1"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-02-26"},{"lineNumber":194,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":195,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":196,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"Jawad280":20,"ashleygoh1":88,"-":88}},{"path":"src/test/java/seedu/address/testutil/EditPersonDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-04"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"Jawad280"},"content":"import seedu.address.model.person.InternDuration;","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"Jawad280"},"content":"import seedu.address.model.person.InterviewDate;","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"Jawad280"},"content":"import seedu.address.model.person.JobDescription;","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"Jawad280"},"content":"import seedu.address.model.person.Salary;","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-04"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2024-03-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * A utility class to help with building EditPersonDescriptor objects.","lastModifiedDate":"2024-03-04"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-04"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorBuilder {","lastModifiedDate":"2024-03-04"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private EditPersonDescriptor descriptor;","lastModifiedDate":"2024-03-04"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder() {","lastModifiedDate":"2024-03-04"},{"lineNumber":23,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2024-03-04"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(EditPersonDescriptor descriptor) {","lastModifiedDate":"2024-03-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.descriptor \u003d new EditPersonDescriptor(descriptor);","lastModifiedDate":"2024-03-04"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Returns an {@code EditPersonDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2024-03-04"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-04"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(Person person) {","lastModifiedDate":"2024-03-04"},{"lineNumber":34,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2024-03-04"},{"lineNumber":35,"author":{"gitId":"eunrcn"},"content":" descriptor.setName(person.getCompanyName());","lastModifiedDate":"2024-03-04"},{"lineNumber":36,"author":{"gitId":"-"},"content":" descriptor.setPhone(person.getPhone());","lastModifiedDate":"2024-03-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2024-03-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":" descriptor.setAddress(person.getAddress());","lastModifiedDate":"2024-03-04"},{"lineNumber":39,"author":{"gitId":"eunrcn"},"content":" descriptor.setTag(person.getTag());","lastModifiedDate":"2024-03-04"},{"lineNumber":40,"author":{"gitId":"eunrcn"},"content":" descriptor.setJobDescription(person.getJobDescription());","lastModifiedDate":"2024-03-04"},{"lineNumber":41,"author":{"gitId":"eunrcn"},"content":" descriptor.setInterviewDate(person.getInterviewDate());","lastModifiedDate":"2024-03-04"},{"lineNumber":42,"author":{"gitId":"eunrcn"},"content":" descriptor.setInternDuration(person.getInternDuration());","lastModifiedDate":"2024-03-04"},{"lineNumber":43,"author":{"gitId":"eunrcn"},"content":" descriptor.setSalary(person.getSalary());","lastModifiedDate":"2024-03-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-04"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withName(String name) {","lastModifiedDate":"2024-03-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2024-03-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2024-03-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-04"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2024-03-04"},{"lineNumber":58,"author":{"gitId":"-"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2024-03-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2024-03-04"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-04"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-04"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-04"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2024-03-04"},{"lineNumber":66,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2024-03-04"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2024-03-04"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-04"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-04"},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-04"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2024-03-04"},{"lineNumber":74,"author":{"gitId":"-"},"content":" descriptor.setAddress(new Address(address));","lastModifiedDate":"2024-03-04"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2024-03-04"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-04"},{"lineNumber":79,"author":{"gitId":"eunrcn"},"content":" * Sets the {@code Tag} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-04"},{"lineNumber":80,"author":{"gitId":"eunrcn"},"content":" */","lastModifiedDate":"2024-03-04"},{"lineNumber":81,"author":{"gitId":"Jawad280"},"content":" public EditPersonDescriptorBuilder withTags(String tag) {","lastModifiedDate":"2024-03-11"},{"lineNumber":82,"author":{"gitId":"Jawad280"},"content":" descriptor.setTag(new Tag(tag));","lastModifiedDate":"2024-03-11"},{"lineNumber":83,"author":{"gitId":"eunrcn"},"content":" return this;","lastModifiedDate":"2024-03-04"},{"lineNumber":84,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":85,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":86,"author":{"gitId":"eunrcn"},"content":" /**","lastModifiedDate":"2024-03-04"},{"lineNumber":87,"author":{"gitId":"eunrcn"},"content":" * Sets the {@code JobDescription} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-04"},{"lineNumber":88,"author":{"gitId":"eunrcn"},"content":" */","lastModifiedDate":"2024-03-04"},{"lineNumber":89,"author":{"gitId":"eunrcn"},"content":" public EditPersonDescriptorBuilder withJobDescription(String jobDescription) {","lastModifiedDate":"2024-03-04"},{"lineNumber":90,"author":{"gitId":"eunrcn"},"content":" descriptor.setJobDescription(new JobDescription(jobDescription));","lastModifiedDate":"2024-03-04"},{"lineNumber":91,"author":{"gitId":"eunrcn"},"content":" return this;","lastModifiedDate":"2024-03-04"},{"lineNumber":92,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":93,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":94,"author":{"gitId":"eunrcn"},"content":" /**","lastModifiedDate":"2024-03-04"},{"lineNumber":95,"author":{"gitId":"eunrcn"},"content":" * Sets the {@code InterviewDate} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-04"},{"lineNumber":96,"author":{"gitId":"eunrcn"},"content":" */","lastModifiedDate":"2024-03-04"},{"lineNumber":97,"author":{"gitId":"eunrcn"},"content":" public EditPersonDescriptorBuilder withInterviewDate(String interviewDate) {","lastModifiedDate":"2024-03-04"},{"lineNumber":98,"author":{"gitId":"eunrcn"},"content":" descriptor.setInterviewDate(new InterviewDate(interviewDate));","lastModifiedDate":"2024-03-04"},{"lineNumber":99,"author":{"gitId":"eunrcn"},"content":" return this;","lastModifiedDate":"2024-03-04"},{"lineNumber":100,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":101,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":102,"author":{"gitId":"eunrcn"},"content":" /**","lastModifiedDate":"2024-03-04"},{"lineNumber":103,"author":{"gitId":"eunrcn"},"content":" * Sets the {@code InternDuration} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-04"},{"lineNumber":104,"author":{"gitId":"eunrcn"},"content":" */","lastModifiedDate":"2024-03-04"},{"lineNumber":105,"author":{"gitId":"eunrcn"},"content":" public EditPersonDescriptorBuilder withInternDuration(String internDuration) {","lastModifiedDate":"2024-03-04"},{"lineNumber":106,"author":{"gitId":"eunrcn"},"content":" descriptor.setInternDuration(new InternDuration(internDuration));","lastModifiedDate":"2024-03-04"},{"lineNumber":107,"author":{"gitId":"eunrcn"},"content":" return this;","lastModifiedDate":"2024-03-04"},{"lineNumber":108,"author":{"gitId":"eunrcn"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":109,"author":{"gitId":"eunrcn"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":110,"author":{"gitId":"eunrcn"},"content":" /**","lastModifiedDate":"2024-03-04"},{"lineNumber":111,"author":{"gitId":"eunrcn"},"content":" * Sets the {@code Salary} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-04"},{"lineNumber":112,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-04"},{"lineNumber":113,"author":{"gitId":"eunrcn"},"content":" public EditPersonDescriptorBuilder withSalary(String salary) {","lastModifiedDate":"2024-03-04"},{"lineNumber":114,"author":{"gitId":"eunrcn"},"content":" descriptor.setSalary(new Salary(salary));","lastModifiedDate":"2024-03-04"},{"lineNumber":115,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2024-03-04"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2024-03-04"},{"lineNumber":119,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2024-03-04"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-04"},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"eunrcn":39,"Jawad280":6,"-":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":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-01-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18"},{"lineNumber":5,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.InternDuration;","lastModifiedDate":"2024-02-26"},{"lineNumber":6,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.InterviewDate;","lastModifiedDate":"2024-02-26"},{"lineNumber":7,"author":{"gitId":"ashleygoh1"},"content":"import seedu.address.model.person.JobDescription;","lastModifiedDate":"2024-02-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-01-18"},{"lineNumber":9,"author":{"gitId":"Jawad280"},"content":"import seedu.address.model.person.Note;","lastModifiedDate":"2024-03-20"},{"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":"ashleygoh1"},"content":"import seedu.address.model.person.Salary;","lastModifiedDate":"2024-02-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","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":"ashleygoh1"},"content":" public static final String DEFAULT_ADDRESS \u003d \"\";","lastModifiedDate":"2024-02-26"},{"lineNumber":24,"author":{"gitId":"ashleygoh1"},"content":" public static final String DEFAULT_TAG \u003d \"I\";","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"ashleygoh1"},"content":" public static final String DEFAULT_JOB_DESCRIPTION \u003d \"Software Developer Intern\";","lastModifiedDate":"2024-02-26"},{"lineNumber":26,"author":{"gitId":"ashleygoh1"},"content":" public static final String DEFAULT_INTERVIEW_DATE \u003d null;","lastModifiedDate":"2024-02-26"},{"lineNumber":27,"author":{"gitId":"ashleygoh1"},"content":" public static final String DEFAULT_INTERN_DURATION \u003d \"6 months\";","lastModifiedDate":"2024-02-26"},{"lineNumber":28,"author":{"gitId":"ashleygoh1"},"content":" public static final String DEFAULT_SALARY \u003d \"500\";","lastModifiedDate":"2024-02-26"},{"lineNumber":29,"author":{"gitId":"Jawad280"},"content":" public static final String DEFAULT_NOTE \u003d \"\";","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20"},{"lineNumber":35,"author":{"gitId":"ashleygoh1"},"content":" private Tag tag;","lastModifiedDate":"2024-02-26"},{"lineNumber":36,"author":{"gitId":"ashleygoh1"},"content":" private JobDescription jobDescription;","lastModifiedDate":"2024-02-26"},{"lineNumber":37,"author":{"gitId":"ashleygoh1"},"content":" private InterviewDate interviewDate;","lastModifiedDate":"2024-02-26"},{"lineNumber":38,"author":{"gitId":"ashleygoh1"},"content":" private InternDuration internDuration;","lastModifiedDate":"2024-02-26"},{"lineNumber":39,"author":{"gitId":"ashleygoh1"},"content":" private Salary salary;","lastModifiedDate":"2024-02-26"},{"lineNumber":40,"author":{"gitId":"Jawad280"},"content":" private Note note;","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20"},{"lineNumber":50,"author":{"gitId":"ashleygoh1"},"content":" tag \u003d new Tag(DEFAULT_TAG);","lastModifiedDate":"2024-02-26"},{"lineNumber":51,"author":{"gitId":"ashleygoh1"},"content":" jobDescription \u003d new JobDescription(DEFAULT_JOB_DESCRIPTION);","lastModifiedDate":"2024-02-26"},{"lineNumber":52,"author":{"gitId":"ashleygoh1"},"content":" interviewDate \u003d new InterviewDate(DEFAULT_INTERVIEW_DATE);;","lastModifiedDate":"2024-02-26"},{"lineNumber":53,"author":{"gitId":"ashleygoh1"},"content":" internDuration \u003d new InternDuration(DEFAULT_INTERN_DURATION);;","lastModifiedDate":"2024-02-26"},{"lineNumber":54,"author":{"gitId":"Jawad280"},"content":" salary \u003d new Salary(DEFAULT_SALARY);","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"Jawad280"},"content":" note \u003d new Note(DEFAULT_NOTE);","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11"},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10"},{"lineNumber":62,"author":{"gitId":"ashleygoh1"},"content":" name \u003d personToCopy.getCompanyName();","lastModifiedDate":"2024-02-25"},{"lineNumber":63,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20"},{"lineNumber":64,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20"},{"lineNumber":65,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20"},{"lineNumber":66,"author":{"gitId":"ashleygoh1"},"content":" tag \u003d personToCopy.getTag();","lastModifiedDate":"2024-02-26"},{"lineNumber":67,"author":{"gitId":"ashleygoh1"},"content":" jobDescription \u003d personToCopy.getJobDescription();","lastModifiedDate":"2024-02-26"},{"lineNumber":68,"author":{"gitId":"ashleygoh1"},"content":" interviewDate \u003d personToCopy.getInterviewDate();","lastModifiedDate":"2024-02-26"},{"lineNumber":69,"author":{"gitId":"ashleygoh1"},"content":" internDuration \u003d personToCopy.getInternDuration();","lastModifiedDate":"2024-02-26"},{"lineNumber":70,"author":{"gitId":"ashleygoh1"},"content":" salary \u003d personToCopy.getSalary();","lastModifiedDate":"2024-02-26"},{"lineNumber":71,"author":{"gitId":"Jawad280"},"content":" note \u003d personToCopy.getNote();","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11"},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * Sets the {@code Name} 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 withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":78,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","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":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":83,"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":84,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":85,"author":{"gitId":"ashleygoh1"},"content":" public PersonBuilder withTags(String tag) {","lastModifiedDate":"2024-02-26"},{"lineNumber":86,"author":{"gitId":"ashleygoh1"},"content":" this.tag \u003d new Tag(tag);","lastModifiedDate":"2024-02-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"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":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":94,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20"},{"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":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":100,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":102,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20"},{"lineNumber":103,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":106,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * Sets the {@code Email} 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 withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":110,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","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":"ashleygoh1"},"content":" /**","lastModifiedDate":"2024-02-26"},{"lineNumber":115,"author":{"gitId":"ashleygoh1"},"content":" * Sets the {@code jobDescription} of the {@code Person} that we are building.","lastModifiedDate":"2024-02-26"},{"lineNumber":116,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-26"},{"lineNumber":117,"author":{"gitId":"ashleygoh1"},"content":" public PersonBuilder withJobDescription(String jobDescription) {","lastModifiedDate":"2024-02-26"},{"lineNumber":118,"author":{"gitId":"ashleygoh1"},"content":" this.jobDescription \u003d new JobDescription(jobDescription);","lastModifiedDate":"2024-02-26"},{"lineNumber":119,"author":{"gitId":"ashleygoh1"},"content":" return this;","lastModifiedDate":"2024-02-26"},{"lineNumber":120,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":121,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":122,"author":{"gitId":"ashleygoh1"},"content":" /**","lastModifiedDate":"2024-02-26"},{"lineNumber":123,"author":{"gitId":"ashleygoh1"},"content":" * Sets the {@code interviewDate} of the {@code Person} that we are building.","lastModifiedDate":"2024-02-26"},{"lineNumber":124,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-26"},{"lineNumber":125,"author":{"gitId":"ashleygoh1"},"content":" public PersonBuilder withInterviewDate(String interviewDate) {","lastModifiedDate":"2024-02-26"},{"lineNumber":126,"author":{"gitId":"ashleygoh1"},"content":" this.interviewDate \u003d new InterviewDate(interviewDate);","lastModifiedDate":"2024-02-26"},{"lineNumber":127,"author":{"gitId":"ashleygoh1"},"content":" return this;","lastModifiedDate":"2024-02-26"},{"lineNumber":128,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":129,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":130,"author":{"gitId":"ashleygoh1"},"content":" /**","lastModifiedDate":"2024-02-26"},{"lineNumber":131,"author":{"gitId":"ashleygoh1"},"content":" * Sets the {@code internDuration} of the {@code Person} that we are building.","lastModifiedDate":"2024-02-26"},{"lineNumber":132,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-26"},{"lineNumber":133,"author":{"gitId":"ashleygoh1"},"content":" public PersonBuilder withInternDuration(String internDuration) {","lastModifiedDate":"2024-02-26"},{"lineNumber":134,"author":{"gitId":"ashleygoh1"},"content":" this.internDuration \u003d new InternDuration(internDuration);","lastModifiedDate":"2024-02-26"},{"lineNumber":135,"author":{"gitId":"ashleygoh1"},"content":" return this;","lastModifiedDate":"2024-02-26"},{"lineNumber":136,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":137,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":138,"author":{"gitId":"ashleygoh1"},"content":" /**","lastModifiedDate":"2024-02-26"},{"lineNumber":139,"author":{"gitId":"ashleygoh1"},"content":" * Sets the {@code salary} of the {@code Person} that we are building.","lastModifiedDate":"2024-02-26"},{"lineNumber":140,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-26"},{"lineNumber":141,"author":{"gitId":"ashleygoh1"},"content":" public PersonBuilder withSalary(String salary) {","lastModifiedDate":"2024-02-26"},{"lineNumber":142,"author":{"gitId":"ashleygoh1"},"content":" this.salary \u003d new Salary(salary);","lastModifiedDate":"2024-02-26"},{"lineNumber":143,"author":{"gitId":"ashleygoh1"},"content":" return this;","lastModifiedDate":"2024-02-26"},{"lineNumber":144,"author":{"gitId":"ashleygoh1"},"content":" }","lastModifiedDate":"2024-02-26"},{"lineNumber":145,"author":{"gitId":"Jawad280"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":146,"author":{"gitId":"Jawad280"},"content":" * Sets the {@code note} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-20"},{"lineNumber":147,"author":{"gitId":"Jawad280"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":148,"author":{"gitId":"Jawad280"},"content":" public PersonBuilder withNote(String note) {","lastModifiedDate":"2024-03-20"},{"lineNumber":149,"author":{"gitId":"Jawad280"},"content":" this.note \u003d new Note(note);","lastModifiedDate":"2024-03-20"},{"lineNumber":150,"author":{"gitId":"Jawad280"},"content":" return this;","lastModifiedDate":"2024-03-20"},{"lineNumber":151,"author":{"gitId":"Jawad280"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":152,"author":{"gitId":"ashleygoh1"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":153,"author":{"gitId":"ashleygoh1"},"content":" /**","lastModifiedDate":"2024-02-26"},{"lineNumber":154,"author":{"gitId":"ashleygoh1"},"content":" * Build the person","lastModifiedDate":"2024-02-26"},{"lineNumber":155,"author":{"gitId":"ashleygoh1"},"content":" */","lastModifiedDate":"2024-02-26"},{"lineNumber":156,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05"},{"lineNumber":157,"author":{"gitId":"ashleygoh1"},"content":" return new Person(name, phone, email, address, tag,","lastModifiedDate":"2024-02-26"},{"lineNumber":158,"author":{"gitId":"Jawad280"},"content":" jobDescription, interviewDate, internDuration, salary, note);","lastModifiedDate":"2024-03-20"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":161,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03"}],"authorContributionMap":{"Jawad280":14,"ashleygoh1":63,"-":84}},{"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":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_INTERN_DURATION;","lastModifiedDate":"2024-02-26"},{"lineNumber":6,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_INTERVIEW_DATE;","lastModifiedDate":"2024-02-26"},{"lineNumber":7,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_JOB_DESCRIPTION;","lastModifiedDate":"2024-02-26"},{"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":"ashleygoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SALARY;","lastModifiedDate":"2024-02-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29"},{"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":"ashleygoh1"},"content":" sb.append(PREFIX_NAME + person.getCompanyName().fullName + \" \");","lastModifiedDate":"2024-02-25"},{"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":"ashleygoh1"},"content":" sb.append(PREFIX_TAG + person.getTag().tagName + \" \");","lastModifiedDate":"2024-02-26"},{"lineNumber":38,"author":{"gitId":"ashleygoh1"},"content":" sb.append(PREFIX_JOB_DESCRIPTION + person.getJobDescription().value + \" \");","lastModifiedDate":"2024-02-26"},{"lineNumber":39,"author":{"gitId":"ashleygoh1"},"content":" sb.append(PREFIX_INTERVIEW_DATE + person.getInterviewDate().toString() + \" \");","lastModifiedDate":"2024-02-26"},{"lineNumber":40,"author":{"gitId":"ashleygoh1"},"content":" sb.append(PREFIX_INTERN_DURATION + person.getInternDuration().value + \" \");","lastModifiedDate":"2024-02-26"},{"lineNumber":41,"author":{"gitId":"ashleygoh1"},"content":" sb.append(PREFIX_SALARY + person.getSalary().value);","lastModifiedDate":"2024-02-26"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05"}],"authorContributionMap":{"ashleygoh1":10,"-":34}},{"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":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_INTERN_DURATION_AMY;","lastModifiedDate":"2024-02-26"},{"lineNumber":8,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_INTERN_DURATION_BOB;","lastModifiedDate":"2024-02-26"},{"lineNumber":9,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_INTERVIEW_DATE_AMY;","lastModifiedDate":"2024-02-26"},{"lineNumber":10,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_INTERVIEW_DATE_BOB;","lastModifiedDate":"2024-02-26"},{"lineNumber":11,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_JOB_DESCRIPTION_AMY;","lastModifiedDate":"2024-02-26"},{"lineNumber":12,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_JOB_DESCRIPTION_BOB;","lastModifiedDate":"2024-02-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":17,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SALARY_AMY;","lastModifiedDate":"2024-02-26"},{"lineNumber":18,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SALARY_BOB;","lastModifiedDate":"2024-02-26"},{"lineNumber":19,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_INTERVIEW;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"ashleygoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_NO_REPLY;","lastModifiedDate":"2024-02-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final Person ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2018-01-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2018-04-19"},{"lineNumber":36,"author":{"gitId":"ashleygoh1"},"content":" .withEmail(\"alice@example.com\")","lastModifiedDate":"2024-02-26"},{"lineNumber":37,"author":{"gitId":"ashleygoh1"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\")","lastModifiedDate":"2024-02-26"},{"lineNumber":38,"author":{"gitId":"ashleygoh1"},"content":" .withTags(\"NR\")","lastModifiedDate":"2024-02-26"},{"lineNumber":39,"author":{"gitId":"ashleygoh1"},"content":" .withJobDescription(\"Software engineer developer\")","lastModifiedDate":"2024-02-26"},{"lineNumber":40,"author":{"gitId":"ashleygoh1"},"content":" .withInterviewDate(\"03-01-2024 1000\")","lastModifiedDate":"2024-02-26"},{"lineNumber":41,"author":{"gitId":"ashleygoh1"},"content":" .withInternDuration(\"3 months\")","lastModifiedDate":"2024-02-26"},{"lineNumber":42,"author":{"gitId":"ashleygoh1"},"content":" .withSalary(\"1000\").build();","lastModifiedDate":"2024-02-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10"},{"lineNumber":44,"author":{"gitId":"-"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2017-09-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2017-04-05"},{"lineNumber":46,"author":{"gitId":"ashleygoh1"},"content":" .withTags(\"I\")","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"ashleygoh1"},"content":" .withJobDescription(\"Software engineer developer intern\")","lastModifiedDate":"2024-02-26"},{"lineNumber":48,"author":{"gitId":"Jawad280"},"content":" .withInterviewDate(\"03-02-2024 1000\")","lastModifiedDate":"2024-02-29"},{"lineNumber":49,"author":{"gitId":"ashleygoh1"},"content":" .withInternDuration(\"3 months\")","lastModifiedDate":"2024-02-26"},{"lineNumber":50,"author":{"gitId":"ashleygoh1"},"content":" .withSalary(\"1000\").build();","lastModifiedDate":"2024-02-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2018-01-10"},{"lineNumber":52,"author":{"gitId":"ashleygoh1"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\")","lastModifiedDate":"2024-02-26"},{"lineNumber":53,"author":{"gitId":"ashleygoh1"},"content":" .withTags(\"NR\")","lastModifiedDate":"2024-02-26"},{"lineNumber":54,"author":{"gitId":"ashleygoh1"},"content":" .withJobDescription(\"Software engineer developer intern\")","lastModifiedDate":"2024-02-26"},{"lineNumber":55,"author":{"gitId":"Jawad280"},"content":" .withInterviewDate(\"03-03-2024 1000\")","lastModifiedDate":"2024-02-29"},{"lineNumber":56,"author":{"gitId":"ashleygoh1"},"content":" .withInternDuration(\"3 months\")","lastModifiedDate":"2024-02-26"},{"lineNumber":57,"author":{"gitId":"ashleygoh1"},"content":" .withSalary(\"1000\").build();","lastModifiedDate":"2024-02-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2018-01-10"},{"lineNumber":59,"author":{"gitId":"ashleygoh1"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\")","lastModifiedDate":"2024-02-26"},{"lineNumber":60,"author":{"gitId":"ashleygoh1"},"content":" .withTags(\"NR\")","lastModifiedDate":"2024-02-26"},{"lineNumber":61,"author":{"gitId":"ashleygoh1"},"content":" .withJobDescription(\"Front End intern\")","lastModifiedDate":"2024-02-26"},{"lineNumber":62,"author":{"gitId":"Jawad280"},"content":" .withInterviewDate(\"03-04-2024 1000\")","lastModifiedDate":"2024-02-29"},{"lineNumber":63,"author":{"gitId":"ashleygoh1"},"content":" .withInternDuration(\"3 months\")","lastModifiedDate":"2024-02-26"},{"lineNumber":64,"author":{"gitId":"ashleygoh1"},"content":" .withSalary(\"1200\").build();","lastModifiedDate":"2024-02-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2018-01-10"},{"lineNumber":66,"author":{"gitId":"ashleygoh1"},"content":" .withEmail(\"werner@example.com\")","lastModifiedDate":"2024-02-26"},{"lineNumber":67,"author":{"gitId":"ashleygoh1"},"content":" .withTags(\"NR\")","lastModifiedDate":"2024-02-26"},{"lineNumber":68,"author":{"gitId":"ashleygoh1"},"content":" .withJobDescription(\"Software engineer developer intern\")","lastModifiedDate":"2024-02-26"},{"lineNumber":69,"author":{"gitId":"Jawad280"},"content":" .withInterviewDate(\"03-05-2024 1000\")","lastModifiedDate":"2024-02-29"},{"lineNumber":70,"author":{"gitId":"ashleygoh1"},"content":" .withInternDuration(\"3 months\")","lastModifiedDate":"2024-02-26"},{"lineNumber":71,"author":{"gitId":"ashleygoh1"},"content":" .withSalary(\"1000\").build();","lastModifiedDate":"2024-02-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2018-01-10"},{"lineNumber":73,"author":{"gitId":"ashleygoh1"},"content":" .withEmail(\"lydia@example.com\")","lastModifiedDate":"2024-02-26"},{"lineNumber":74,"author":{"gitId":"ashleygoh1"},"content":" .withTags(\"NR\")","lastModifiedDate":"2024-02-26"},{"lineNumber":75,"author":{"gitId":"ashleygoh1"},"content":" .withJobDescription(\"Data science intern\")","lastModifiedDate":"2024-02-26"},{"lineNumber":76,"author":{"gitId":"Jawad280"},"content":" .withInterviewDate(\"03-06-2024 1000\")","lastModifiedDate":"2024-02-29"},{"lineNumber":77,"author":{"gitId":"ashleygoh1"},"content":" .withInternDuration(\"3 months\")","lastModifiedDate":"2024-02-26"},{"lineNumber":78,"author":{"gitId":"ashleygoh1"},"content":" .withSalary(\"1000\").build();","lastModifiedDate":"2024-02-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2018-01-10"},{"lineNumber":80,"author":{"gitId":"ashleygoh1"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\")","lastModifiedDate":"2024-02-26"},{"lineNumber":81,"author":{"gitId":"ashleygoh1"},"content":" .withTags(\"I\")","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"ashleygoh1"},"content":" .withJobDescription(\"Software engineer developer intern\")","lastModifiedDate":"2024-02-26"},{"lineNumber":83,"author":{"gitId":"Jawad280"},"content":" .withInterviewDate(\"03-07-2024 1000\")","lastModifiedDate":"2024-02-29"},{"lineNumber":84,"author":{"gitId":"ashleygoh1"},"content":" .withInternDuration(\"3 months\")","lastModifiedDate":"2024-02-26"},{"lineNumber":85,"author":{"gitId":"ashleygoh1"},"content":" .withSalary(\"1000\").build();","lastModifiedDate":"2024-02-26"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2018-01-10"},{"lineNumber":89,"author":{"gitId":"ashleygoh1"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\")","lastModifiedDate":"2024-02-26"},{"lineNumber":90,"author":{"gitId":"ashleygoh1"},"content":" .withTags(\"I\")","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"ashleygoh1"},"content":" .withJobDescription(\"Software engineer developer intern\")","lastModifiedDate":"2024-02-26"},{"lineNumber":92,"author":{"gitId":"Jawad280"},"content":" .withInterviewDate(\"03-08-2024 1700\")","lastModifiedDate":"2024-02-29"},{"lineNumber":93,"author":{"gitId":"ashleygoh1"},"content":" .withInternDuration(\"3 months\")","lastModifiedDate":"2024-02-26"},{"lineNumber":94,"author":{"gitId":"ashleygoh1"},"content":" .withSalary(\"1000\").build();","lastModifiedDate":"2024-02-26"},{"lineNumber":95,"author":{"gitId":"-"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2018-01-10"},{"lineNumber":96,"author":{"gitId":"ashleygoh1"},"content":" .withEmail(\"hans@example.com\")","lastModifiedDate":"2024-02-26"},{"lineNumber":97,"author":{"gitId":"ashleygoh1"},"content":" .withTags(\"NR\")","lastModifiedDate":"2024-02-26"},{"lineNumber":98,"author":{"gitId":"ashleygoh1"},"content":" .withJobDescription(\"Full Stack intern\")","lastModifiedDate":"2024-02-26"},{"lineNumber":99,"author":{"gitId":"Jawad280"},"content":" .withInterviewDate(\"03-09-2024 1000\")","lastModifiedDate":"2024-02-29"},{"lineNumber":100,"author":{"gitId":"ashleygoh1"},"content":" .withInternDuration(\"3 months\")","lastModifiedDate":"2024-02-26"},{"lineNumber":101,"author":{"gitId":"ashleygoh1"},"content":" .withSalary(\"1000\").build();","lastModifiedDate":"2024-02-26"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":103,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2018-01-10"},{"lineNumber":105,"author":{"gitId":"ashleygoh1"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withTags(VALID_TAG_NO_REPLY)","lastModifiedDate":"2024-02-26"},{"lineNumber":106,"author":{"gitId":"ashleygoh1"},"content":" .withJobDescription(VALID_JOB_DESCRIPTION_AMY).withInterviewDate(VALID_INTERVIEW_DATE_AMY)","lastModifiedDate":"2024-02-26"},{"lineNumber":107,"author":{"gitId":"ashleygoh1"},"content":" .withInternDuration(VALID_INTERN_DURATION_AMY).withSalary(VALID_SALARY_AMY).build();","lastModifiedDate":"2024-02-26"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2018-01-10"},{"lineNumber":109,"author":{"gitId":"ashleygoh1"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_INTERVIEW)","lastModifiedDate":"2024-03-12"},{"lineNumber":110,"author":{"gitId":"ashleygoh1"},"content":" .withJobDescription(VALID_JOB_DESCRIPTION_BOB).withInterviewDate(VALID_INTERVIEW_DATE_BOB)","lastModifiedDate":"2024-02-26"},{"lineNumber":111,"author":{"gitId":"ashleygoh1"},"content":" .withInternDuration(VALID_INTERN_DURATION_BOB).withSalary(VALID_SALARY_BOB).build();","lastModifiedDate":"2024-02-26"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":116,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":117,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05"},{"lineNumber":118,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05"},{"lineNumber":120,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05"},{"lineNumber":121,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10"},{"lineNumber":122,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04"},{"lineNumber":127,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10"},{"lineNumber":128,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04"},{"lineNumber":130,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13"}],"authorContributionMap":{"Jawad280":8,"ashleygoh1":62,"-":60}}] diff --git a/AY2324S2-CS2103T-F14-1_tp_master/commits.json b/AY2324S2-CS2103T-F14-1_tp_master/commits.json index c9c7fb97..47a75fae 100644 --- a/AY2324S2-CS2103T-F14-1_tp_master/commits.json +++ b/AY2324S2-CS2103T-F14-1_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"eunrcn":[{"date":"2024-02-25","commitResults":[{"hash":"0cd3bdc989755c7ed43a8523cc9d8592ed363c5d","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":40,"deletions":10}}},{"hash":"c7e914ce20a66490ee2c6c968b9adfc187767466","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"b3975f7769ca075ee0cd10cd246aa26bbd31253f","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":4}}},{"hash":"b3412e8d21e2cca2ae14585b99a3ee63ec447d27","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-02-28","commitResults":[{"hash":"9087634673272c4b9aacdfd3a4981e26df04e166","isMergeCommit":false,"messageTitle":"before i go crazy","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":342,"deletions":327},"docs":{"insertions":1,"deletions":1}}},{"hash":"4d48a0558a1cbb536656ae2ba00ead0240359df3","isMergeCommit":false,"messageTitle":"i need to restart the ide","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":171}}},{"hash":"3372f5a12a5623167ba02deee90937332255aef0","isMergeCommit":false,"messageTitle":"i need to restart the ide","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":281,"deletions":22},"docs":{"insertions":4,"deletions":4},"test-code":{"insertions":1,"deletions":1}}},{"hash":"e90d8c8db6708686cccd3d271f9fe57636b4a653","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"aedeef19613f887efdc9b579e95c25fd0e2466b0","isMergeCommit":false,"messageTitle":"before i go crazy","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":342,"deletions":327},"docs":{"insertions":1,"deletions":1}}},{"hash":"d7df7f89c530dbc3ef386559b6d51c7074f1d0fb","isMergeCommit":false,"messageTitle":"i need to restart the ide","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":171}}},{"hash":"d8e6ae17fbfd38ff7a7df109f3d530aba1d6fb13","isMergeCommit":false,"messageTitle":"Implement EditCommandParser, EditCommand, README.md","messageBody":"Create EditCommandParser to parse user input for editing a person\u0027s details in the address book. The parser handles the input arguments, validates them, and constructs an EditCommand object for execution. It uses CliSyntax prefixes and follows a similar structure as the AddCommandParser. The parsing logic for each attribute (name, phone, email, address, tags, jobDescription, interviewDate, internDuration, salary) is provided, and the EditPersonDescriptor is updated accordingly.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":281,"deletions":22},"docs":{"insertions":4,"deletions":4},"test-code":{"insertions":1,"deletions":1}}},{"hash":"84fb48af30266ef49e59def139d0152ae70b8df0","isMergeCommit":true,"messageTitle":"Merge pull request #19 from eunrcn/edit-user-command","messageBody":"Edit user command","fileTypesAndContributionMap":{}},{"hash":"dee005733138e04614d1fd8e7a8d24d9ddff9d95","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into list-sort-feature","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ff077d86cc6c6b13b43cb40856299ff43bb877a5","isMergeCommit":true,"messageTitle":"Merge pull request #11 from Jawad280/list-sort-feature","messageBody":"List sort feature","fileTypesAndContributionMap":{}},{"hash":"70757311f0d1c7009d98281de8d45534f5c02b6f","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into ui-change-v2","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"2bf68d378518de9cf0e8aaa29b430e2e09d766f5","isMergeCommit":true,"messageTitle":"Merge pull request #10 from Jawad280/ui-change-v2","messageBody":"UI change v2","fileTypesAndContributionMap":{}},{"hash":"1a3591b38a2804685c5a1bca534e29b53a32526b","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into about-us","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"bb15b96192da118c460c8dce2fedd4bcdae4b1f8","isMergeCommit":true,"messageTitle":"Merge pull request #12 from Jawad280/about-us","messageBody":"About us","fileTypesAndContributionMap":{}},{"hash":"466970275c7eca80fa4821cdb9d2906299c11996","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"180f24f7cde7a2b6cb01146757d4fb8d96ef2e7a","isMergeCommit":true,"messageTitle":"Merge pull request #20 from eunrcn/master","messageBody":"Implement EditCommandParser, EditCommand, README.md","fileTypesAndContributionMap":{}},{"hash":"b10868a6cfaf9af636253fd399a624e52c8997af","isMergeCommit":false,"messageTitle":"Remove duplicate method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":3}}},{"hash":"4c41d2d12227744858662ff3d3c21b4953f564dc","isMergeCommit":true,"messageTitle":"Merge pull request #22 from eunrcn/master","messageBody":"Remove duplicate method","fileTypesAndContributionMap":{}}]},{"date":"2024-02-29","commitResults":[{"hash":"e906563e27c635c19e9572e77ca6bb8ed2164147","isMergeCommit":true,"messageTitle":"Merge pull request #23 from Jawad280/edit-v2","messageBody":"Edit command tweaks","fileTypesAndContributionMap":{}}]},{"date":"2024-03-01","commitResults":[{"hash":"0e86ea8d3bf59f05a541ad0e54c5bfeff227f5fa","isMergeCommit":false,"messageTitle":"Rename my github username","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"32a484d3af811f8d282f7fd303e4d63b784e7469","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-F14-1:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"7e44cf99bfaafbfc9e8b5cddadb675f22b52b907","isMergeCommit":true,"messageTitle":"Merge pull request #26 from eunrcn/master","messageBody":"Github Username","fileTypesAndContributionMap":{}},{"hash":"e2ac9386c6386c8f9ece3b98b8c273725952c91b","isMergeCommit":false,"messageTitle":"Developer Guide User Stories","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":8}}}]},{"date":"2024-03-04","commitResults":[{"hash":"6e4d97e9d7e85b0ebe22ea9e449fd87ce51fa67a","isMergeCommit":false,"messageTitle":"Debugging Edit Command and Edit Command Parser Test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":613,"deletions":554}}}]},{"date":"2024-03-11","commitResults":[{"hash":"a36debcf1af88254054314c420c3ea576406e395","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-F14-1:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e4643d8d2642e470c1811ae2cdab1fbac2b85ea9","isMergeCommit":true,"messageTitle":"Merge pull request #34 from eunrcn/master","messageBody":"Debugging Edit Command and Edit Command Parser Test","fileTypesAndContributionMap":{}}]},{"date":"2024-03-12","commitResults":[{"hash":"998da3fa9c038c1d95c23da0cd38f9c0506f69c8","isMergeCommit":false,"messageTitle":"commit to git pull","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0}}},{"hash":"69c43722024f2d7846440032515c1dfa3e49cbb7","isMergeCommit":false,"messageTitle":"Implement test cases for ViewCommand and ViewCommandTest, and AddressBookParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":209,"deletions":41}}},{"hash":"d64ded923fb2cb4cdbfe982e2b77f62a7a823b0e","isMergeCommit":true,"messageTitle":"Merge pull request #45 from eunrcn/master","messageBody":"Implement test cases for ViewCommand and ViewCommandTest, and AddressBookParserTest","fileTypesAndContributionMap":{}}]},{"date":"2024-03-13","commitResults":[{"hash":"07430928129e037c759eaf2f3bd9b339b5e7f4fc","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into edit-test","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b650b7c87e494add4e9092c58420de0abd2c03ae","isMergeCommit":true,"messageTitle":"Merge pull request #43 from Jawad280/edit-test","messageBody":"EditCommandTest and EditCommandParserTest updated","fileTypesAndContributionMap":{}}]},{"date":"2024-03-14","commitResults":[{"hash":"b55261a37f2376d4695d9dc4e3a4291899127035","isMergeCommit":false,"messageTitle":"Implement test cases for ViewCommand and ViewCommandTest, and AddressBookParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":12,"deletions":15}}},{"hash":"6cf1349a7a57e4278c0e12a288744878ed798d27","isMergeCommit":false,"messageTitle":"Implement test cases for ViewCommand and ViewCommandTest, and AddressBookParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":1}}},{"hash":"624a7f632fc185abea3b9ab15ed3049d9be7e5f7","isMergeCommit":false,"messageTitle":"Implement test cases for ViewCommand and ViewCommandTest, and AddressBookParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":18,"deletions":14}}},{"hash":"798c2eb6c49cf7fbd6773ca0a82e6606cb2ccdc2","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into ViewCommandTest","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b921d4bcfda39d13ad86c19698e48caedcce0b03","isMergeCommit":true,"messageTitle":"Merge pull request #50 from eunrcn/ViewCommandTest","messageBody":"View Command, View Command Parser, Address Book test cases","fileTypesAndContributionMap":{}},{"hash":"e792cd9488997336ed8af40992ad5986202cbc47","isMergeCommit":false,"messageTitle":"Remove unnessary function in ParserUtil.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":20}}},{"hash":"40b84916e9c94a01217983266bf7da25711a865b","isMergeCommit":false,"messageTitle":"Remove unnessary function in ParserUtil.java and EditCommandParser.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":22},"test-code":{"insertions":0,"deletions":3}}},{"hash":"da7872972c9584e06fd61841b4f55015816f1584","isMergeCommit":false,"messageTitle":"Remove unnessary function in ParserUtil.java and EditCommandParser.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":4}}},{"hash":"c8df4eeef0fbe10c84f62515b0e373ea5a3fefd1","isMergeCommit":false,"messageTitle":"Remove unnessary function in ParserUtil.java and EditCommandParser.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":7}}},{"hash":"b213bc4fdfe00420e8e9545e1f3fddf12c5f1f26","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e149832ea5faae468f79275682a7daedb4b6d437","isMergeCommit":false,"messageTitle":"Remove unnessary function in ParserUtil.java and EditCommandParser.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"35e001e6cfd9a4095b9c4f8604f1e606fff1fb9f","isMergeCommit":false,"messageTitle":"Remove unnessary function in ParserUtil.java and EditCommandParser.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":9,"deletions":1}}},{"hash":"501e5ae4b9f7446fb8c8204f9d8e83ee1b544b4c","isMergeCommit":true,"messageTitle":"Merge pull request #51 from eunrcn/master","messageBody":"Remove unnessary function in ParserUtil.java, EditCommandParser.java","fileTypesAndContributionMap":{}}]},{"date":"2024-03-18","commitResults":[{"hash":"05c0a194ee015aee971c07580a6b68a71beaac54","isMergeCommit":false,"messageTitle":"Edit ModelClassDiagram.puml to update the changes to Person","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":3}}},{"hash":"0feb65635b7366cb1a4f04ca36d7d2075072c270","isMergeCommit":true,"messageTitle":"Merge pull request #56 from eunrcn/master","messageBody":"Edit ModelClassDiagram.puml to update the changes to Person","fileTypesAndContributionMap":{}},{"hash":"d8f98901df63bf95b66ac74966f4460bbbbf1b48","isMergeCommit":false,"messageTitle":"Edit ModelClassDiagram.puml to update the changes to Person, Edit BetterModelCLassDiagram to update changes to Tag and Person","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":7}}},{"hash":"8bed3facffeb2a7eb20598b01645dfe43476f556","isMergeCommit":true,"messageTitle":"Merge pull request #57 from eunrcn/master","messageBody":"Edit ModelClassDiagram.puml to update the changes to Person, Edit Bet…","fileTypesAndContributionMap":{}}]},{"date":"2024-03-19","commitResults":[{"hash":"2161c914fab431324f2cb5ad562bab1735cac31b","isMergeCommit":true,"messageTitle":"Merge pull request #55 from chenyixin0/master","messageBody":"Update find and exception command test","tags":["v1.2"],"fileTypesAndContributionMap":{}}]}],"chenyixin0":[{"date":"2024-02-25","commitResults":[{"hash":"982cfaee95655364aedaeb31d37dd2404d126cf0","isMergeCommit":true,"messageTitle":"Merge pull request #2 from eunrcn/master","messageBody":"Update README.md","fileTypesAndContributionMap":{}}]},{"date":"2024-02-29","commitResults":[{"hash":"bfb35deb0850f85af37824fc722aa0944321c2a7","isMergeCommit":false,"messageTitle":"Add find command halfway","messageBody":"Ui is still bugged\n","fileTypesAndContributionMap":{"functional-code":{"insertions":54,"deletions":9}}},{"hash":"9d94238ad9b7188dbbe813415012bfc2d88e1cd4","isMergeCommit":false,"messageTitle":"Add Find command correctly","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":38,"deletions":27},"docs":{"insertions":5,"deletions":5}}}]},{"date":"2024-03-01","commitResults":[{"hash":"c7214479a83a1e4a8719287d3f75fbf77db504b4","isMergeCommit":true,"messageTitle":"Merge pull request #24 from chenyixin0/master","messageBody":"AboutUs, Find command","fileTypesAndContributionMap":{}}]},{"date":"2024-03-07","commitResults":[{"hash":"ac06240c7ee50cf36290a36777429e7bbc54810e","isMergeCommit":false,"messageTitle":"Improve Find and View UI","messageBody":"Side view panel no longer displays white box on default.\n\nStill displays a really weird white border havent figure out why yet.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":20}}},{"hash":"3aa4b47a013833a38f8390f1fb7d126cff89525d","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/chenyixin0/tp","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-08","commitResults":[{"hash":"270dbf04fc2fa1fc8b507564ee5196322b030d6c","isMergeCommit":false,"messageTitle":"Finish side panel UI update","messageBody":"Side panel UI now exhibits correct display behaviour\n","fileTypesAndContributionMap":{"functional-code":{"insertions":31,"deletions":10}}},{"hash":"837629d3d17da598399aaeac98926d9bb05221e6","isMergeCommit":false,"messageTitle":"Update for checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":3}}},{"hash":"71ed1a0848aa572e77930de27a3b7de7801b7daa","isMergeCommit":false,"messageTitle":"Update test files to reflect new CommandResult constructor","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":7}}},{"hash":"cd500ea6f684f3155a6b211c392ff81ca1dbfde7","isMergeCommit":false,"messageTitle":"Update find command test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":14,"deletions":4}}},{"hash":"eef2ec33ff42c621426e9aea2a447889ae4c6b76","isMergeCommit":false,"messageTitle":"Update for checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":10,"deletions":10}}},{"hash":"654db56598f6bd319ab2cb4c0f99603fd48f81e8","isMergeCommit":false,"messageTitle":"i swear to god if i fail checkstyle one more time","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}},{"hash":"13e038b330de05b66c6ece6a49aa09c864719562","isMergeCommit":false,"messageTitle":"Update UI logic to be more concise","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":14}}}]},{"date":"2024-03-11","commitResults":[{"hash":"c8d5072c6c82a3e311ef65f121ee4fdbb1b6dda3","isMergeCommit":true,"messageTitle":"Merge pull request #36 from chenyixin0/master","messageBody":"Improvements to find/view UI","fileTypesAndContributionMap":{}}]},{"date":"2024-03-12","commitResults":[{"hash":"5048741be375927c2f9199f42822751ab65f3395","isMergeCommit":false,"messageTitle":"Update testcases for CommandResult","messageBody":"Add more tests to CommandResultTest file to test overloaded constructors for CommandResult object.\n","fileTypesAndContributionMap":{"test-code":{"insertions":32,"deletions":2}}},{"hash":"dd1bc6a497efd0649501b333070f449c89957e36","isMergeCommit":false,"messageTitle":"eunice ur files kena my checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":4}}},{"hash":"edb04dd90f3a40be70ff46cc261427f886a3254f","isMergeCommit":false,"messageTitle":"Edit for checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":71,"deletions":15}}}]},{"date":"2024-03-15","commitResults":[{"hash":"61966fe1e48ea34c1915dad9f97b941483563b8b","isMergeCommit":true,"messageTitle":"Resolve merge conflict","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"54fc2808fa9eea5546130fcdcba4f5f33c55d44b","isMergeCommit":true,"messageTitle":"Merge pull request #53 from chenyixin0/conflict-branch","messageBody":"Resolving Conflict branch","fileTypesAndContributionMap":{}},{"hash":"64ddf3caea70cc8139ac48a4adcfb968d7c4c51a","isMergeCommit":true,"messageTitle":"Merge pull request #54 from AY2324S2-CS2103T-F14-1/command-result-test","messageBody":"Command result test","fileTypesAndContributionMap":{}},{"hash":"3cd38b959736e825f26817819b42fe0e350c86fd","isMergeCommit":false,"messageTitle":"Update find command test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":3}}},{"hash":"5046bde110ddeaa7f16ef88c6e927b15ef45f06a","isMergeCommit":false,"messageTitle":"Add more find tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":8,"deletions":4}}}]},{"date":"2024-03-17","commitResults":[{"hash":"ec0321ced2a5db7fe083192604305ed198fc0e38","isMergeCommit":false,"messageTitle":"Update Exception tests","messageBody":"Had to comment out one line from one of the test methods that compares if the generated model with\nan expected model but i havent figured out why that one keeps failing yet\n","fileTypesAndContributionMap":{"test-code":{"insertions":35,"deletions":26}}}]}],"minghowC":[{"date":"2024-03-01","commitResults":[{"hash":"4ca3dea543c95143e2a4d16638916ecf309f2a02","isMergeCommit":false,"messageTitle":"Add my AboutUS.md details","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"24e282da380f51c1bdbb9602341f0d106a877e3c","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"fbe28239026c115f3c9f2a189e0cd0c9c6a5f8d4","isMergeCommit":false,"messageTitle":"Add delete feature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":0}}},{"hash":"3cfc9010be6d990cb335dd0021ff33aeb814e020","isMergeCommit":true,"messageTitle":"Merge pull request #28 from minghowC/master","messageBody":"Add delete feature","fileTypesAndContributionMap":{}}]},{"date":"2024-03-08","commitResults":[{"hash":"5e85ff2e6d7146293b90be23256eaf47f5326948","isMergeCommit":false,"messageTitle":"Update Minghow profile","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"0b37fb5faa010ba6c3ec621eba28b812ca693e74","isMergeCommit":true,"messageTitle":"Merge pull request #37 from minghowC/add-minghowC-info","messageBody":"Update Minghow profile","fileTypesAndContributionMap":{}}]}],"Jawad280":[{"date":"2024-02-25","commitResults":[{"hash":"a7783867c92a5a46814382d06ac2889ad9ef58d5","isMergeCommit":false,"messageTitle":"Remark tutorial","messageBody":"The tutorial for adding a command, remark in the AB.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":180,"deletions":16}}},{"hash":"f497f581a26aded9b0aba848fd1f6f077419982a","isMergeCommit":false,"messageTitle":"Restore to tp master","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":176}}},{"hash":"44dcd8a249a1c6937d1cab34f48cc42e1c0a11d3","isMergeCommit":false,"messageTitle":"Restore to tp master including JavaFX","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":4}}}]},{"date":"2024-02-26","commitResults":[{"hash":"72b6fe1d1feaff7fdd17593858b00050831a17ef","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-F14-1:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4aebef91a564c0a38b6264577a2b40f6d858be33","isMergeCommit":false,"messageTitle":"List function implemented with auto sort by interview date","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":4}}},{"hash":"ad2e6e6e6a1279989051a6a86af43b832194580c","isMergeCommit":false,"messageTitle":"Ui is updated together with a simple view feature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":250,"deletions":12}}}]},{"date":"2024-02-27","commitResults":[{"hash":"af8d4de6e6ed2407cd3199b9b3098a2b77380af6","isMergeCommit":false,"messageTitle":"AboutUs page updated \u0026 included picture","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}}]},{"date":"2024-02-29","commitResults":[{"hash":"a98c3853d486f940b161f73b2a536e80d20fcb69","isMergeCommit":false,"messageTitle":"Edit command tweaks","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":50,"deletions":30}}},{"hash":"b47cf87fadc45499cf2a1e02965cadbc81aba8e9","isMergeCommit":false,"messageTitle":"Reformatted classes to fit checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":15},"test-code":{"insertions":1,"deletions":1}}},{"hash":"adca670b121b567c6103b05a133a1952e604b1fd","isMergeCommit":false,"messageTitle":"Edited test classes to reflect changes in our main classes","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":12,"deletions":3}}}]},{"date":"2024-03-01","commitResults":[{"hash":"c9656627807a5a25559c51df77f64b69af34608f","isMergeCommit":true,"messageTitle":"Merge pull request #25 from minghowC/master","messageBody":"Update AboutUs.md for everyone","fileTypesAndContributionMap":{}},{"hash":"1f9824cca54b5ee7cd9917f8440992221726fecd","isMergeCommit":false,"messageTitle":"Developer Guide updated with use cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":16},"docs":{"insertions":119,"deletions":20}}},{"hash":"edd259a66efe637953f9370b1cd5d03c3f632e9c","isMergeCommit":true,"messageTitle":"Merge branch \u0027DG\u0027 into DG-v2","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"40e2be88e2a1d621b4fc29698ac76917c05bb749","isMergeCommit":true,"messageTitle":"Merge pull request #27 from eunrcn/master","messageBody":"Developer Guide User Stories","fileTypesAndContributionMap":{}},{"hash":"65f56fa2ecb089e8f35aa13b2e268852c354eff2","isMergeCommit":false,"messageTitle":"Developer Guide edited to include Use Case","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"651c53401fd3cd17b415a7e54dc5e778f92c61c8","isMergeCommit":false,"messageTitle":"Update DG","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":0}}},{"hash":"49001518677cd99d41d76f2a118d92ed2a961020","isMergeCommit":true,"messageTitle":"Merge pull request #30 from Jawad280/DG-v2","messageBody":"Developer Guide edited to include Use Cases","fileTypesAndContributionMap":{}},{"hash":"c4eb64ca81ebba0163703ba0d9dbd5e8f0bf8899","isMergeCommit":false,"messageTitle":"UG updated \u0026 DG finalised","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":75,"deletions":68}}},{"hash":"2dd836dd6a3fb60422f14ce3d26a585d042c18ef","isMergeCommit":false,"messageTitle":"Updated FindCommand and FindCommandTest to pass test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"0ad563ef3e6ff78790bcd25a1b468106619a5985","isMergeCommit":true,"messageTitle":"Merge pull request #31 from Jawad280/UG","messageBody":"* UG updated \u0026 DG finalised\r\n* FindCommand \u0026 FindCommandTest has been updated to pass test cases","fileTypesAndContributionMap":{}}]},{"date":"2024-03-02","commitResults":[{"hash":"7e0ab9d1a79ab01d4756f7cc54c1c6b459922034","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}},{"hash":"6f21796aa0f276bdd5b50f4ef3580d642c5662d3","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"src\u003d\"images/minghowc\" changed to src\u003d\"images/minghowC\"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"10890b9de2c8244da3c35ea2e657532427eb23f8","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"Updated Actions build badge to our CI","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"e652643f1bd82fc981347e914f5cf8757a42d80e","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"Update link of GitHub Actions build status to reflect out CI","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"17f42bbd0898b2834e896f6aeb1f523499656a3b","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":0}}},{"hash":"849a4015008919834a3d02d24ff79a3ee8bab43d","isMergeCommit":true,"messageTitle":"Merge pull request #33 from ashleygoh1/v1.2-readme-dg","messageBody":"Edit AboutUs.md making sure CI banners pointing to own project","fileTypesAndContributionMap":{}}]},{"date":"2024-03-03","commitResults":[{"hash":"1dc44135b25b17969c3eac957fa5e1d9a2d9d988","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"Change from .jpg to .png","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-11","commitResults":[{"hash":"ed46bcc240e84198230d5d8aebe57b19e89ff0ae","isMergeCommit":false,"messageTitle":"CommandResult and company card ui updated","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":144,"deletions":70},"test-code":{"insertions":7,"deletions":7}}},{"hash":"0fc8792b07ef9efffaf69b76b855d9917041cd5b","isMergeCommit":false,"messageTitle":"CommandResult and company card ui updated","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4}}},{"hash":"97cc9a3633f1db958e75e58a3f1d03c18aca3ef9","isMergeCommit":true,"messageTitle":"Merge pull request #42 from Jawad280/company-card-ui","messageBody":"CommandResult and company card ui updated","fileTypesAndContributionMap":{}},{"hash":"0e820f53c4810d609b24e1c1e0d0e1aed10ad102","isMergeCommit":false,"messageTitle":"EditCommandTest and EditCommandParserTest updated","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":110,"deletions":59}}},{"hash":"5ed175913145bef845fc1d693ded2b76c1be1f2f","isMergeCommit":false,"messageTitle":"EditCommandTest and EditCommandParserTest updated","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":16,"deletions":6}}},{"hash":"1479fbb5101a4dc6ce6dd08175e60af7667673d9","isMergeCommit":false,"messageTitle":"EditCommandTest and EditCommandParserTest Updated","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":13,"deletions":15}}}]},{"date":"2024-03-13","commitResults":[{"hash":"f53924a2eac08a180be7e35e40776e772c26ec5c","isMergeCommit":true,"messageTitle":"Merge pull request #48 from ashleygoh1/v1.2-edit-test-cases","messageBody":"Update edit test cases","fileTypesAndContributionMap":{}}]},{"date":"2024-03-22","commitResults":[{"hash":"8883adefbecfde0dec5fad135f302ee1d6564789","isMergeCommit":false,"messageTitle":"Update UiClassDiagram.puml","messageBody":"UI uml updated","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":0}}}]}],"ashleygoh1":[{"date":"2024-02-23","commitResults":[{"hash":"c37653119c039b3b06a0f1c97a54bf50bab58e13","isMergeCommit":true,"messageTitle":"Merge pull request #1 from nus-cs2103-AY2324S2/switch-docs-to-markbind","messageBody":"Switch docs to markbind","fileTypesAndContributionMap":{}},{"hash":"02b788dfe07da9cd8cdbf59e8a88d7b173519b99","isMergeCommit":false,"messageTitle":"Update default.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-02-25","commitResults":[{"hash":"91310b8007505d028bf03ebb7328628123aac855","isMergeCommit":false,"messageTitle":"Edit add person command","messageBody":"Allow user to input additional information such as job description, interview date, intern duration, and salary\n\nCreate new java files for the new parameters (job description, interview date, intern duration, and salary)\n\nUpdate the message shown to user when inputs are successfully added to the address book\n","fileTypesAndContributionMap":{"functional-code":{"insertions":820,"deletions":452},"test-code":{"insertions":7,"deletions":7}}},{"hash":"ac8ff5ede9e0140593cce2738807dc140cfe0a4b","isMergeCommit":false,"messageTitle":"Edit the code to adhere to checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":72,"deletions":52}}}]},{"date":"2024-02-26","commitResults":[{"hash":"40a8dc2db17be26f847e2e62578d0ec85daf5d0c","isMergeCommit":false,"messageTitle":"Edit the code to adhere to checkstyle","messageBody":"Update add command making address and interview date optional\n","fileTypesAndContributionMap":{"functional-code":{"insertions":60,"deletions":67},"test-code":{"insertions":725,"deletions":674}}},{"hash":"48b2b75118695a2e36e2b48fa421555c9c79da9e","isMergeCommit":false,"messageTitle":"Edit the code to adhere to checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":5}}},{"hash":"1555b79e2fb6a6cbc1c5fa2df744fdb9b5442024","isMergeCommit":false,"messageTitle":"Edit the code to adhere to checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":1},"test-code":{"insertions":50,"deletions":84}}},{"hash":"6c916d78717a24e63ace889976d7f9ad6a775c9f","isMergeCommit":false,"messageTitle":"Edit the code to adhere to checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":3}}},{"hash":"a803a78f42529db23dbcfe4eadb3f4d4dba645dc","isMergeCommit":false,"messageTitle":"Edit the code to adhere to checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":1}}},{"hash":"2b6bcf8fd067cc7e80bc13859d4d00495d051c45","isMergeCommit":false,"messageTitle":"Edit the code to pass test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":15},"test-code":{"insertions":159,"deletions":34}}},{"hash":"53c3484501afe1c222de9e19e3a0265280e371a8","isMergeCommit":false,"messageTitle":"Edit the code to pass test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":4}}},{"hash":"c681a5e1e216e5b28d8ae7a1a38b3c4bef1c6464","isMergeCommit":false,"messageTitle":"Comment out unuse test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":74,"deletions":75}}},{"hash":"0a725fae3815ac4eacc7358b4914f5d105c0a158","isMergeCommit":true,"messageTitle":"Merge pull request #6 from ashleygoh1/v1.2-add-user-command","messageBody":"Edit add person command","fileTypesAndContributionMap":{}},{"hash":"ee45f5fafbc62b4861e26d071bf3bf0d4720ec40","isMergeCommit":true,"messageTitle":"Merge pull request #9 from AY2324S2-CS2103T-F14-1/add-user-command","messageBody":"Add user command","fileTypesAndContributionMap":{}}]},{"date":"2024-02-27","commitResults":[{"hash":"a5a33c8068e449766a7fcb1e2e1d8c05236d5e95","isMergeCommit":false,"messageTitle":"Edit UserGuide.md and AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":0},"docs":{"insertions":210,"deletions":42}}},{"hash":"085f8e3a69ef3ef61c9f29c1f52f2ac4cf225bdc","isMergeCommit":false,"messageTitle":"Edit the code to adhere to checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"f099d488e6f666a9e4118ac987d9547dc00cba64","isMergeCommit":true,"messageTitle":"Merge pull request #15 from ashleygoh1/v1.2-update-ug","messageBody":"Edit UserGuide.md and AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"120a711cc7f58c49bc269f566b3d92db4ae13cd0","isMergeCommit":true,"messageTitle":"Merge pull request #16 from AY2324S2-CS2103T-F14-1/update-ug","messageBody":"Update ug","fileTypesAndContributionMap":{}}]},{"date":"2024-03-02","commitResults":[{"hash":"ada3fc193734a4f821e290355418b26a1d5157b0","isMergeCommit":false,"messageTitle":"Edit AboutUs.md making sure CI banners pointing to own project","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":12}}},{"hash":"3396036cac84e2f12b7a53bc72867b2d5e6ddee3","isMergeCommit":false,"messageTitle":"Edit the code to adhere to checkstyle","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}}]},{"date":"2024-03-12","commitResults":[{"hash":"0ddf9064d02a4c599c4a4043bf314440da00538d","isMergeCommit":false,"messageTitle":"change tag from \"F\" to \"I\" \"F\" stand for first interview \"I\" stand for interview we generalise the this giving the user more flexibility","messageBody":"update and create test cases for\nJsonAdaptedPersonTest.java, InternDurationTest.java,\nSalaryTest.java, JobDescriptionTest.java\n","fileTypesAndContributionMap":{"test-code":{"insertions":332,"deletions":64}}}]},{"date":"2024-03-13","commitResults":[{"hash":"8fe1027705d740cbd336746a8e26f97a663c872c","isMergeCommit":true,"messageTitle":"Merge pull request #46 from ashleygoh1/v1.2-add-test-cases","messageBody":"update and create test cases","fileTypesAndContributionMap":{}},{"hash":"2b178d3c5553b7f17f587e158f131b9b901f28ec","isMergeCommit":false,"messageTitle":"change \"TAG_DESC_FIRST_INTERVIEW\" to \"TAG_DESC_INTERVIEW;\" and \"VALID_TAG_FIRST_INTERVIEW\" to \"VALID_TAG_INTERVIEW\" we change it to make the tag more general, giving the user more flexibility when inputing the intern status","messageBody":"Update the ViewCommandPaserTest.java to pass the test cases\n","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":12,"deletions":12}}}]}]},"authorFileTypeContributionMap":{"eunrcn":{"docs":57,"functional-code":88,"test-code":256},"chenyixin0":{"docs":4,"functional-code":53,"test-code":78},"minghowC":{"docs":1,"functional-code":3,"test-code":0},"Jawad280":{"docs":170,"functional-code":398,"test-code":74},"ashleygoh1":{"docs":74,"functional-code":553,"test-code":572}},"authorContributionVariance":{"eunrcn":216863.14,"chenyixin0":1574.3381,"minghowC":1.3032101,"Jawad280":16481.764,"ashleygoh1":205765.66},"authorDisplayNameMap":{"eunrcn":"CS2103T-F14-1 EUNI..NING","chenyixin0":"CS2103T-F14-1 CHEN..IXIN","minghowC":"CS2103T-F14-1 CHAI.. HOW","Jawad280":"CS2103T-F14-1 JAWA..THAB","ashleygoh1":"CS2103T-F14-1 ASHL..TING"}} +{"authorDailyContributionsMap":{"eunrcn":[{"date":"2024-02-25","commitResults":[{"hash":"0cd3bdc989755c7ed43a8523cc9d8592ed363c5d","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":40,"deletions":10}}},{"hash":"c7e914ce20a66490ee2c6c968b9adfc187767466","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"b3975f7769ca075ee0cd10cd246aa26bbd31253f","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":4}}},{"hash":"b3412e8d21e2cca2ae14585b99a3ee63ec447d27","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-02-28","commitResults":[{"hash":"9087634673272c4b9aacdfd3a4981e26df04e166","isMergeCommit":false,"messageTitle":"before i go crazy","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":342,"deletions":327},"docs":{"insertions":1,"deletions":1}}},{"hash":"4d48a0558a1cbb536656ae2ba00ead0240359df3","isMergeCommit":false,"messageTitle":"i need to restart the ide","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":171}}},{"hash":"3372f5a12a5623167ba02deee90937332255aef0","isMergeCommit":false,"messageTitle":"i need to restart the ide","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":281,"deletions":22},"docs":{"insertions":4,"deletions":4},"test-code":{"insertions":1,"deletions":1}}},{"hash":"e90d8c8db6708686cccd3d271f9fe57636b4a653","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"aedeef19613f887efdc9b579e95c25fd0e2466b0","isMergeCommit":false,"messageTitle":"before i go crazy","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":342,"deletions":327},"docs":{"insertions":1,"deletions":1}}},{"hash":"d7df7f89c530dbc3ef386559b6d51c7074f1d0fb","isMergeCommit":false,"messageTitle":"i need to restart the ide","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":171}}},{"hash":"d8e6ae17fbfd38ff7a7df109f3d530aba1d6fb13","isMergeCommit":false,"messageTitle":"Implement EditCommandParser, EditCommand, README.md","messageBody":"Create EditCommandParser to parse user input for editing a person\u0027s details in the address book. The parser handles the input arguments, validates them, and constructs an EditCommand object for execution. It uses CliSyntax prefixes and follows a similar structure as the AddCommandParser. The parsing logic for each attribute (name, phone, email, address, tags, jobDescription, interviewDate, internDuration, salary) is provided, and the EditPersonDescriptor is updated accordingly.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":281,"deletions":22},"docs":{"insertions":4,"deletions":4},"test-code":{"insertions":1,"deletions":1}}},{"hash":"84fb48af30266ef49e59def139d0152ae70b8df0","isMergeCommit":true,"messageTitle":"Merge pull request #19 from eunrcn/edit-user-command","messageBody":"Edit user command","fileTypesAndContributionMap":{}},{"hash":"dee005733138e04614d1fd8e7a8d24d9ddff9d95","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into list-sort-feature","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ff077d86cc6c6b13b43cb40856299ff43bb877a5","isMergeCommit":true,"messageTitle":"Merge pull request #11 from Jawad280/list-sort-feature","messageBody":"List sort feature","fileTypesAndContributionMap":{}},{"hash":"70757311f0d1c7009d98281de8d45534f5c02b6f","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into ui-change-v2","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"2bf68d378518de9cf0e8aaa29b430e2e09d766f5","isMergeCommit":true,"messageTitle":"Merge pull request #10 from Jawad280/ui-change-v2","messageBody":"UI change v2","fileTypesAndContributionMap":{}},{"hash":"1a3591b38a2804685c5a1bca534e29b53a32526b","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into about-us","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"bb15b96192da118c460c8dce2fedd4bcdae4b1f8","isMergeCommit":true,"messageTitle":"Merge pull request #12 from Jawad280/about-us","messageBody":"About us","fileTypesAndContributionMap":{}},{"hash":"466970275c7eca80fa4821cdb9d2906299c11996","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"180f24f7cde7a2b6cb01146757d4fb8d96ef2e7a","isMergeCommit":true,"messageTitle":"Merge pull request #20 from eunrcn/master","messageBody":"Implement EditCommandParser, EditCommand, README.md","fileTypesAndContributionMap":{}},{"hash":"b10868a6cfaf9af636253fd399a624e52c8997af","isMergeCommit":false,"messageTitle":"Remove duplicate method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":3}}},{"hash":"4c41d2d12227744858662ff3d3c21b4953f564dc","isMergeCommit":true,"messageTitle":"Merge pull request #22 from eunrcn/master","messageBody":"Remove duplicate method","fileTypesAndContributionMap":{}}]},{"date":"2024-02-29","commitResults":[{"hash":"e906563e27c635c19e9572e77ca6bb8ed2164147","isMergeCommit":true,"messageTitle":"Merge pull request #23 from Jawad280/edit-v2","messageBody":"Edit command tweaks","fileTypesAndContributionMap":{}}]},{"date":"2024-03-01","commitResults":[{"hash":"0e86ea8d3bf59f05a541ad0e54c5bfeff227f5fa","isMergeCommit":false,"messageTitle":"Rename my github username","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"32a484d3af811f8d282f7fd303e4d63b784e7469","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-F14-1:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"7e44cf99bfaafbfc9e8b5cddadb675f22b52b907","isMergeCommit":true,"messageTitle":"Merge pull request #26 from eunrcn/master","messageBody":"Github Username","fileTypesAndContributionMap":{}},{"hash":"e2ac9386c6386c8f9ece3b98b8c273725952c91b","isMergeCommit":false,"messageTitle":"Developer Guide User Stories","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":8}}}]},{"date":"2024-03-04","commitResults":[{"hash":"6e4d97e9d7e85b0ebe22ea9e449fd87ce51fa67a","isMergeCommit":false,"messageTitle":"Debugging Edit Command and Edit Command Parser Test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":613,"deletions":554}}}]},{"date":"2024-03-11","commitResults":[{"hash":"a36debcf1af88254054314c420c3ea576406e395","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-F14-1:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e4643d8d2642e470c1811ae2cdab1fbac2b85ea9","isMergeCommit":true,"messageTitle":"Merge pull request #34 from eunrcn/master","messageBody":"Debugging Edit Command and Edit Command Parser Test","fileTypesAndContributionMap":{}}]},{"date":"2024-03-12","commitResults":[{"hash":"998da3fa9c038c1d95c23da0cd38f9c0506f69c8","isMergeCommit":false,"messageTitle":"commit to git pull","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0}}},{"hash":"69c43722024f2d7846440032515c1dfa3e49cbb7","isMergeCommit":false,"messageTitle":"Implement test cases for ViewCommand and ViewCommandTest, and AddressBookParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":209,"deletions":41}}},{"hash":"d64ded923fb2cb4cdbfe982e2b77f62a7a823b0e","isMergeCommit":true,"messageTitle":"Merge pull request #45 from eunrcn/master","messageBody":"Implement test cases for ViewCommand and ViewCommandTest, and AddressBookParserTest","fileTypesAndContributionMap":{}}]},{"date":"2024-03-13","commitResults":[{"hash":"07430928129e037c759eaf2f3bd9b339b5e7f4fc","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into edit-test","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b650b7c87e494add4e9092c58420de0abd2c03ae","isMergeCommit":true,"messageTitle":"Merge pull request #43 from Jawad280/edit-test","messageBody":"EditCommandTest and EditCommandParserTest updated","fileTypesAndContributionMap":{}}]},{"date":"2024-03-14","commitResults":[{"hash":"b55261a37f2376d4695d9dc4e3a4291899127035","isMergeCommit":false,"messageTitle":"Implement test cases for ViewCommand and ViewCommandTest, and AddressBookParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":12,"deletions":15}}},{"hash":"6cf1349a7a57e4278c0e12a288744878ed798d27","isMergeCommit":false,"messageTitle":"Implement test cases for ViewCommand and ViewCommandTest, and AddressBookParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":1}}},{"hash":"624a7f632fc185abea3b9ab15ed3049d9be7e5f7","isMergeCommit":false,"messageTitle":"Implement test cases for ViewCommand and ViewCommandTest, and AddressBookParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":18,"deletions":14}}},{"hash":"798c2eb6c49cf7fbd6773ca0a82e6606cb2ccdc2","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into ViewCommandTest","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b921d4bcfda39d13ad86c19698e48caedcce0b03","isMergeCommit":true,"messageTitle":"Merge pull request #50 from eunrcn/ViewCommandTest","messageBody":"View Command, View Command Parser, Address Book test cases","fileTypesAndContributionMap":{}},{"hash":"e792cd9488997336ed8af40992ad5986202cbc47","isMergeCommit":false,"messageTitle":"Remove unnessary function in ParserUtil.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":20}}},{"hash":"40b84916e9c94a01217983266bf7da25711a865b","isMergeCommit":false,"messageTitle":"Remove unnessary function in ParserUtil.java and EditCommandParser.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":22},"test-code":{"insertions":0,"deletions":3}}},{"hash":"da7872972c9584e06fd61841b4f55015816f1584","isMergeCommit":false,"messageTitle":"Remove unnessary function in ParserUtil.java and EditCommandParser.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":4}}},{"hash":"c8df4eeef0fbe10c84f62515b0e373ea5a3fefd1","isMergeCommit":false,"messageTitle":"Remove unnessary function in ParserUtil.java and EditCommandParser.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":7}}},{"hash":"b213bc4fdfe00420e8e9545e1f3fddf12c5f1f26","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e149832ea5faae468f79275682a7daedb4b6d437","isMergeCommit":false,"messageTitle":"Remove unnessary function in ParserUtil.java and EditCommandParser.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"35e001e6cfd9a4095b9c4f8604f1e606fff1fb9f","isMergeCommit":false,"messageTitle":"Remove unnessary function in ParserUtil.java and EditCommandParser.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":9,"deletions":1}}},{"hash":"501e5ae4b9f7446fb8c8204f9d8e83ee1b544b4c","isMergeCommit":true,"messageTitle":"Merge pull request #51 from eunrcn/master","messageBody":"Remove unnessary function in ParserUtil.java, EditCommandParser.java","fileTypesAndContributionMap":{}}]},{"date":"2024-03-18","commitResults":[{"hash":"05c0a194ee015aee971c07580a6b68a71beaac54","isMergeCommit":false,"messageTitle":"Edit ModelClassDiagram.puml to update the changes to Person","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":3}}},{"hash":"0feb65635b7366cb1a4f04ca36d7d2075072c270","isMergeCommit":true,"messageTitle":"Merge pull request #56 from eunrcn/master","messageBody":"Edit ModelClassDiagram.puml to update the changes to Person","fileTypesAndContributionMap":{}},{"hash":"d8f98901df63bf95b66ac74966f4460bbbbf1b48","isMergeCommit":false,"messageTitle":"Edit ModelClassDiagram.puml to update the changes to Person, Edit BetterModelCLassDiagram to update changes to Tag and Person","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":7}}},{"hash":"8bed3facffeb2a7eb20598b01645dfe43476f556","isMergeCommit":true,"messageTitle":"Merge pull request #57 from eunrcn/master","messageBody":"Edit ModelClassDiagram.puml to update the changes to Person, Edit Bet…","fileTypesAndContributionMap":{}}]},{"date":"2024-03-19","commitResults":[{"hash":"2161c914fab431324f2cb5ad562bab1735cac31b","isMergeCommit":true,"messageTitle":"Merge pull request #55 from chenyixin0/master","messageBody":"Update find and exception command test","tags":["v1.2"],"fileTypesAndContributionMap":{}}]},{"date":"2024-03-24","commitResults":[{"hash":"06a0adfff677dee46d5c0c66a84300d6f1228524","isMergeCommit":true,"messageTitle":"Merge pull request #64 from Jawad280/notes","messageBody":"Notes ","fileTypesAndContributionMap":{}},{"hash":"6308c9353088d3d9e3b580de7f99155dd7e404e5","isMergeCommit":true,"messageTitle":"Merge pull request #65 from Jawad280/notes","messageBody":"NoteCommand and NoteCommandParser testcases update","fileTypesAndContributionMap":{}}]}],"chenyixin0":[{"date":"2024-02-25","commitResults":[{"hash":"982cfaee95655364aedaeb31d37dd2404d126cf0","isMergeCommit":true,"messageTitle":"Merge pull request #2 from eunrcn/master","messageBody":"Update README.md","fileTypesAndContributionMap":{}}]},{"date":"2024-02-29","commitResults":[{"hash":"bfb35deb0850f85af37824fc722aa0944321c2a7","isMergeCommit":false,"messageTitle":"Add find command halfway","messageBody":"Ui is still bugged\n","fileTypesAndContributionMap":{"functional-code":{"insertions":54,"deletions":9}}},{"hash":"9d94238ad9b7188dbbe813415012bfc2d88e1cd4","isMergeCommit":false,"messageTitle":"Add Find command correctly","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":38,"deletions":27},"docs":{"insertions":5,"deletions":5}}}]},{"date":"2024-03-01","commitResults":[{"hash":"c7214479a83a1e4a8719287d3f75fbf77db504b4","isMergeCommit":true,"messageTitle":"Merge pull request #24 from chenyixin0/master","messageBody":"AboutUs, Find command","fileTypesAndContributionMap":{}}]},{"date":"2024-03-07","commitResults":[{"hash":"ac06240c7ee50cf36290a36777429e7bbc54810e","isMergeCommit":false,"messageTitle":"Improve Find and View UI","messageBody":"Side view panel no longer displays white box on default.\n\nStill displays a really weird white border havent figure out why yet.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":20}}},{"hash":"3aa4b47a013833a38f8390f1fb7d126cff89525d","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/chenyixin0/tp","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-08","commitResults":[{"hash":"270dbf04fc2fa1fc8b507564ee5196322b030d6c","isMergeCommit":false,"messageTitle":"Finish side panel UI update","messageBody":"Side panel UI now exhibits correct display behaviour\n","fileTypesAndContributionMap":{"functional-code":{"insertions":31,"deletions":10}}},{"hash":"837629d3d17da598399aaeac98926d9bb05221e6","isMergeCommit":false,"messageTitle":"Update for checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":3}}},{"hash":"71ed1a0848aa572e77930de27a3b7de7801b7daa","isMergeCommit":false,"messageTitle":"Update test files to reflect new CommandResult constructor","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":7}}},{"hash":"cd500ea6f684f3155a6b211c392ff81ca1dbfde7","isMergeCommit":false,"messageTitle":"Update find command test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":14,"deletions":4}}},{"hash":"eef2ec33ff42c621426e9aea2a447889ae4c6b76","isMergeCommit":false,"messageTitle":"Update for checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":10,"deletions":10}}},{"hash":"654db56598f6bd319ab2cb4c0f99603fd48f81e8","isMergeCommit":false,"messageTitle":"i swear to god if i fail checkstyle one more time","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}},{"hash":"13e038b330de05b66c6ece6a49aa09c864719562","isMergeCommit":false,"messageTitle":"Update UI logic to be more concise","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":14}}}]},{"date":"2024-03-11","commitResults":[{"hash":"c8d5072c6c82a3e311ef65f121ee4fdbb1b6dda3","isMergeCommit":true,"messageTitle":"Merge pull request #36 from chenyixin0/master","messageBody":"Improvements to find/view UI","fileTypesAndContributionMap":{}}]},{"date":"2024-03-12","commitResults":[{"hash":"5048741be375927c2f9199f42822751ab65f3395","isMergeCommit":false,"messageTitle":"Update testcases for CommandResult","messageBody":"Add more tests to CommandResultTest file to test overloaded constructors for CommandResult object.\n","fileTypesAndContributionMap":{"test-code":{"insertions":32,"deletions":2}}},{"hash":"dd1bc6a497efd0649501b333070f449c89957e36","isMergeCommit":false,"messageTitle":"eunice ur files kena my checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":4}}},{"hash":"edb04dd90f3a40be70ff46cc261427f886a3254f","isMergeCommit":false,"messageTitle":"Edit for checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":71,"deletions":15}}}]},{"date":"2024-03-15","commitResults":[{"hash":"61966fe1e48ea34c1915dad9f97b941483563b8b","isMergeCommit":true,"messageTitle":"Resolve merge conflict","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"54fc2808fa9eea5546130fcdcba4f5f33c55d44b","isMergeCommit":true,"messageTitle":"Merge pull request #53 from chenyixin0/conflict-branch","messageBody":"Resolving Conflict branch","fileTypesAndContributionMap":{}},{"hash":"64ddf3caea70cc8139ac48a4adcfb968d7c4c51a","isMergeCommit":true,"messageTitle":"Merge pull request #54 from AY2324S2-CS2103T-F14-1/command-result-test","messageBody":"Command result test","fileTypesAndContributionMap":{}},{"hash":"3cd38b959736e825f26817819b42fe0e350c86fd","isMergeCommit":false,"messageTitle":"Update find command test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":3}}},{"hash":"5046bde110ddeaa7f16ef88c6e927b15ef45f06a","isMergeCommit":false,"messageTitle":"Add more find tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":8,"deletions":4}}}]},{"date":"2024-03-17","commitResults":[{"hash":"ec0321ced2a5db7fe083192604305ed198fc0e38","isMergeCommit":false,"messageTitle":"Update Exception tests","messageBody":"Had to comment out one line from one of the test methods that compares if the generated model with\nan expected model but i havent figured out why that one keeps failing yet\n","fileTypesAndContributionMap":{"test-code":{"insertions":35,"deletions":26}}}]}],"minghowC":[{"date":"2024-03-01","commitResults":[{"hash":"4ca3dea543c95143e2a4d16638916ecf309f2a02","isMergeCommit":false,"messageTitle":"Add my AboutUS.md details","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"24e282da380f51c1bdbb9602341f0d106a877e3c","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"fbe28239026c115f3c9f2a189e0cd0c9c6a5f8d4","isMergeCommit":false,"messageTitle":"Add delete feature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":0}}},{"hash":"3cfc9010be6d990cb335dd0021ff33aeb814e020","isMergeCommit":true,"messageTitle":"Merge pull request #28 from minghowC/master","messageBody":"Add delete feature","fileTypesAndContributionMap":{}}]},{"date":"2024-03-08","commitResults":[{"hash":"5e85ff2e6d7146293b90be23256eaf47f5326948","isMergeCommit":false,"messageTitle":"Update Minghow profile","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"0b37fb5faa010ba6c3ec621eba28b812ca693e74","isMergeCommit":true,"messageTitle":"Merge pull request #37 from minghowC/add-minghowC-info","messageBody":"Update Minghow profile","fileTypesAndContributionMap":{}}]}],"Jawad280":[{"date":"2024-02-25","commitResults":[{"hash":"a7783867c92a5a46814382d06ac2889ad9ef58d5","isMergeCommit":false,"messageTitle":"Remark tutorial","messageBody":"The tutorial for adding a command, remark in the AB.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":180,"deletions":16}}},{"hash":"f497f581a26aded9b0aba848fd1f6f077419982a","isMergeCommit":false,"messageTitle":"Restore to tp master","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":176}}},{"hash":"44dcd8a249a1c6937d1cab34f48cc42e1c0a11d3","isMergeCommit":false,"messageTitle":"Restore to tp master including JavaFX","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":4}}}]},{"date":"2024-02-26","commitResults":[{"hash":"72b6fe1d1feaff7fdd17593858b00050831a17ef","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-F14-1:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4aebef91a564c0a38b6264577a2b40f6d858be33","isMergeCommit":false,"messageTitle":"List function implemented with auto sort by interview date","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":4}}},{"hash":"ad2e6e6e6a1279989051a6a86af43b832194580c","isMergeCommit":false,"messageTitle":"Ui is updated together with a simple view feature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":250,"deletions":12}}}]},{"date":"2024-02-27","commitResults":[{"hash":"af8d4de6e6ed2407cd3199b9b3098a2b77380af6","isMergeCommit":false,"messageTitle":"AboutUs page updated \u0026 included picture","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}}]},{"date":"2024-02-29","commitResults":[{"hash":"a98c3853d486f940b161f73b2a536e80d20fcb69","isMergeCommit":false,"messageTitle":"Edit command tweaks","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":50,"deletions":30}}},{"hash":"b47cf87fadc45499cf2a1e02965cadbc81aba8e9","isMergeCommit":false,"messageTitle":"Reformatted classes to fit checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":15},"test-code":{"insertions":1,"deletions":1}}},{"hash":"adca670b121b567c6103b05a133a1952e604b1fd","isMergeCommit":false,"messageTitle":"Edited test classes to reflect changes in our main classes","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":12,"deletions":3}}}]},{"date":"2024-03-01","commitResults":[{"hash":"c9656627807a5a25559c51df77f64b69af34608f","isMergeCommit":true,"messageTitle":"Merge pull request #25 from minghowC/master","messageBody":"Update AboutUs.md for everyone","fileTypesAndContributionMap":{}},{"hash":"1f9824cca54b5ee7cd9917f8440992221726fecd","isMergeCommit":false,"messageTitle":"Developer Guide updated with use cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":16},"docs":{"insertions":119,"deletions":20}}},{"hash":"edd259a66efe637953f9370b1cd5d03c3f632e9c","isMergeCommit":true,"messageTitle":"Merge branch \u0027DG\u0027 into DG-v2","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"40e2be88e2a1d621b4fc29698ac76917c05bb749","isMergeCommit":true,"messageTitle":"Merge pull request #27 from eunrcn/master","messageBody":"Developer Guide User Stories","fileTypesAndContributionMap":{}},{"hash":"65f56fa2ecb089e8f35aa13b2e268852c354eff2","isMergeCommit":false,"messageTitle":"Developer Guide edited to include Use Case","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"651c53401fd3cd17b415a7e54dc5e778f92c61c8","isMergeCommit":false,"messageTitle":"Update DG","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":0}}},{"hash":"49001518677cd99d41d76f2a118d92ed2a961020","isMergeCommit":true,"messageTitle":"Merge pull request #30 from Jawad280/DG-v2","messageBody":"Developer Guide edited to include Use Cases","fileTypesAndContributionMap":{}},{"hash":"c4eb64ca81ebba0163703ba0d9dbd5e8f0bf8899","isMergeCommit":false,"messageTitle":"UG updated \u0026 DG finalised","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":75,"deletions":68}}},{"hash":"2dd836dd6a3fb60422f14ce3d26a585d042c18ef","isMergeCommit":false,"messageTitle":"Updated FindCommand and FindCommandTest to pass test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"0ad563ef3e6ff78790bcd25a1b468106619a5985","isMergeCommit":true,"messageTitle":"Merge pull request #31 from Jawad280/UG","messageBody":"* UG updated \u0026 DG finalised\r\n* FindCommand \u0026 FindCommandTest has been updated to pass test cases","fileTypesAndContributionMap":{}}]},{"date":"2024-03-02","commitResults":[{"hash":"7e0ab9d1a79ab01d4756f7cc54c1c6b459922034","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}},{"hash":"6f21796aa0f276bdd5b50f4ef3580d642c5662d3","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"src\u003d\"images/minghowc\" changed to src\u003d\"images/minghowC\"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"10890b9de2c8244da3c35ea2e657532427eb23f8","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"Updated Actions build badge to our CI","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"e652643f1bd82fc981347e914f5cf8757a42d80e","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"Update link of GitHub Actions build status to reflect out CI","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"17f42bbd0898b2834e896f6aeb1f523499656a3b","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":0}}},{"hash":"849a4015008919834a3d02d24ff79a3ee8bab43d","isMergeCommit":true,"messageTitle":"Merge pull request #33 from ashleygoh1/v1.2-readme-dg","messageBody":"Edit AboutUs.md making sure CI banners pointing to own project","fileTypesAndContributionMap":{}}]},{"date":"2024-03-03","commitResults":[{"hash":"1dc44135b25b17969c3eac957fa5e1d9a2d9d988","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"Change from .jpg to .png","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-11","commitResults":[{"hash":"ed46bcc240e84198230d5d8aebe57b19e89ff0ae","isMergeCommit":false,"messageTitle":"CommandResult and company card ui updated","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":144,"deletions":70},"test-code":{"insertions":7,"deletions":7}}},{"hash":"0fc8792b07ef9efffaf69b76b855d9917041cd5b","isMergeCommit":false,"messageTitle":"CommandResult and company card ui updated","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4}}},{"hash":"97cc9a3633f1db958e75e58a3f1d03c18aca3ef9","isMergeCommit":true,"messageTitle":"Merge pull request #42 from Jawad280/company-card-ui","messageBody":"CommandResult and company card ui updated","fileTypesAndContributionMap":{}},{"hash":"0e820f53c4810d609b24e1c1e0d0e1aed10ad102","isMergeCommit":false,"messageTitle":"EditCommandTest and EditCommandParserTest updated","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":110,"deletions":59}}},{"hash":"5ed175913145bef845fc1d693ded2b76c1be1f2f","isMergeCommit":false,"messageTitle":"EditCommandTest and EditCommandParserTest updated","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":16,"deletions":6}}},{"hash":"1479fbb5101a4dc6ce6dd08175e60af7667673d9","isMergeCommit":false,"messageTitle":"EditCommandTest and EditCommandParserTest Updated","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":13,"deletions":15}}}]},{"date":"2024-03-13","commitResults":[{"hash":"f53924a2eac08a180be7e35e40776e772c26ec5c","isMergeCommit":true,"messageTitle":"Merge pull request #48 from ashleygoh1/v1.2-edit-test-cases","messageBody":"Update edit test cases","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"4a80e9b9cb6e68f64a770b388d9e5e515a569f73","isMergeCommit":false,"messageTitle":"notes function","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":237,"deletions":13}}},{"hash":"41be1792ee101d4081eeb2d342d0139f3bd4e3bd","isMergeCommit":false,"messageTitle":"updated notes to fit current tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":5},"test-code":{"insertions":34,"deletions":19}}}]},{"date":"2024-03-22","commitResults":[{"hash":"8883adefbecfde0dec5fad135f302ee1d6564789","isMergeCommit":false,"messageTitle":"Update UiClassDiagram.puml","messageBody":"UI uml updated","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":0}}},{"hash":"ad4a1b91525a1042311285cb2c6f1e36eb885e9c","isMergeCommit":false,"messageTitle":"Add tests for Notes Attribute","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":4},"test-code":{"insertions":53,"deletions":1}}}]},{"date":"2024-03-24","commitResults":[{"hash":"b42861ed1a222e5e4eb6939ab8f1f19fcb06effa","isMergeCommit":false,"messageTitle":"Notes implemented with test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2}}},{"hash":"84670c066ed8c78f6c137bb208fb54fdf48d54f0","isMergeCommit":false,"messageTitle":"No EOF fixed","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"3846f6a3c18e4b36dba51a394b79c38fda8ecc7d","isMergeCommit":false,"messageTitle":"NoteCommand and NoteCommandParser testcases update","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":142,"deletions":0}}}]}],"ashleygoh1":[{"date":"2024-02-23","commitResults":[{"hash":"c37653119c039b3b06a0f1c97a54bf50bab58e13","isMergeCommit":true,"messageTitle":"Merge pull request #1 from nus-cs2103-AY2324S2/switch-docs-to-markbind","messageBody":"Switch docs to markbind","fileTypesAndContributionMap":{}},{"hash":"02b788dfe07da9cd8cdbf59e8a88d7b173519b99","isMergeCommit":false,"messageTitle":"Update default.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-02-25","commitResults":[{"hash":"91310b8007505d028bf03ebb7328628123aac855","isMergeCommit":false,"messageTitle":"Edit add person command","messageBody":"Allow user to input additional information such as job description, interview date, intern duration, and salary\n\nCreate new java files for the new parameters (job description, interview date, intern duration, and salary)\n\nUpdate the message shown to user when inputs are successfully added to the address book\n","fileTypesAndContributionMap":{"functional-code":{"insertions":820,"deletions":452},"test-code":{"insertions":7,"deletions":7}}},{"hash":"ac8ff5ede9e0140593cce2738807dc140cfe0a4b","isMergeCommit":false,"messageTitle":"Edit the code to adhere to checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":72,"deletions":52}}}]},{"date":"2024-02-26","commitResults":[{"hash":"40a8dc2db17be26f847e2e62578d0ec85daf5d0c","isMergeCommit":false,"messageTitle":"Edit the code to adhere to checkstyle","messageBody":"Update add command making address and interview date optional\n","fileTypesAndContributionMap":{"functional-code":{"insertions":60,"deletions":67},"test-code":{"insertions":725,"deletions":674}}},{"hash":"48b2b75118695a2e36e2b48fa421555c9c79da9e","isMergeCommit":false,"messageTitle":"Edit the code to adhere to checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":5}}},{"hash":"1555b79e2fb6a6cbc1c5fa2df744fdb9b5442024","isMergeCommit":false,"messageTitle":"Edit the code to adhere to checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":1},"test-code":{"insertions":50,"deletions":84}}},{"hash":"6c916d78717a24e63ace889976d7f9ad6a775c9f","isMergeCommit":false,"messageTitle":"Edit the code to adhere to checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":3}}},{"hash":"a803a78f42529db23dbcfe4eadb3f4d4dba645dc","isMergeCommit":false,"messageTitle":"Edit the code to adhere to checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":1}}},{"hash":"2b6bcf8fd067cc7e80bc13859d4d00495d051c45","isMergeCommit":false,"messageTitle":"Edit the code to pass test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":15},"test-code":{"insertions":159,"deletions":34}}},{"hash":"53c3484501afe1c222de9e19e3a0265280e371a8","isMergeCommit":false,"messageTitle":"Edit the code to pass test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":4}}},{"hash":"c681a5e1e216e5b28d8ae7a1a38b3c4bef1c6464","isMergeCommit":false,"messageTitle":"Comment out unuse test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":74,"deletions":75}}},{"hash":"0a725fae3815ac4eacc7358b4914f5d105c0a158","isMergeCommit":true,"messageTitle":"Merge pull request #6 from ashleygoh1/v1.2-add-user-command","messageBody":"Edit add person command","fileTypesAndContributionMap":{}},{"hash":"ee45f5fafbc62b4861e26d071bf3bf0d4720ec40","isMergeCommit":true,"messageTitle":"Merge pull request #9 from AY2324S2-CS2103T-F14-1/add-user-command","messageBody":"Add user command","fileTypesAndContributionMap":{}}]},{"date":"2024-02-27","commitResults":[{"hash":"a5a33c8068e449766a7fcb1e2e1d8c05236d5e95","isMergeCommit":false,"messageTitle":"Edit UserGuide.md and AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":0},"docs":{"insertions":210,"deletions":42}}},{"hash":"085f8e3a69ef3ef61c9f29c1f52f2ac4cf225bdc","isMergeCommit":false,"messageTitle":"Edit the code to adhere to checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"f099d488e6f666a9e4118ac987d9547dc00cba64","isMergeCommit":true,"messageTitle":"Merge pull request #15 from ashleygoh1/v1.2-update-ug","messageBody":"Edit UserGuide.md and AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"120a711cc7f58c49bc269f566b3d92db4ae13cd0","isMergeCommit":true,"messageTitle":"Merge pull request #16 from AY2324S2-CS2103T-F14-1/update-ug","messageBody":"Update ug","fileTypesAndContributionMap":{}}]},{"date":"2024-03-02","commitResults":[{"hash":"ada3fc193734a4f821e290355418b26a1d5157b0","isMergeCommit":false,"messageTitle":"Edit AboutUs.md making sure CI banners pointing to own project","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":12}}},{"hash":"3396036cac84e2f12b7a53bc72867b2d5e6ddee3","isMergeCommit":false,"messageTitle":"Edit the code to adhere to checkstyle","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}}]},{"date":"2024-03-12","commitResults":[{"hash":"0ddf9064d02a4c599c4a4043bf314440da00538d","isMergeCommit":false,"messageTitle":"change tag from \"F\" to \"I\" \"F\" stand for first interview \"I\" stand for interview we generalise the this giving the user more flexibility","messageBody":"update and create test cases for\nJsonAdaptedPersonTest.java, InternDurationTest.java,\nSalaryTest.java, JobDescriptionTest.java\n","fileTypesAndContributionMap":{"test-code":{"insertions":332,"deletions":64}}}]},{"date":"2024-03-13","commitResults":[{"hash":"8fe1027705d740cbd336746a8e26f97a663c872c","isMergeCommit":true,"messageTitle":"Merge pull request #46 from ashleygoh1/v1.2-add-test-cases","messageBody":"update and create test cases","fileTypesAndContributionMap":{}},{"hash":"2b178d3c5553b7f17f587e158f131b9b901f28ec","isMergeCommit":false,"messageTitle":"change \"TAG_DESC_FIRST_INTERVIEW\" to \"TAG_DESC_INTERVIEW;\" and \"VALID_TAG_FIRST_INTERVIEW\" to \"VALID_TAG_INTERVIEW\" we change it to make the tag more general, giving the user more flexibility when inputing the intern status","messageBody":"Update the ViewCommandPaserTest.java to pass the test cases\n","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":12,"deletions":12}}}]}]},"authorFileTypeContributionMap":{"eunrcn":{"docs":57,"functional-code":86,"test-code":256},"chenyixin0":{"docs":4,"functional-code":53,"test-code":78},"minghowC":{"docs":1,"functional-code":3,"test-code":0},"Jawad280":{"docs":170,"functional-code":635,"test-code":303},"ashleygoh1":{"docs":74,"functional-code":546,"test-code":552}},"authorContributionVariance":{"eunrcn":204006.31,"chenyixin0":1490.7805,"minghowC":1.2237252,"Jawad280":17556.25,"ashleygoh1":193772.2},"authorDisplayNameMap":{"eunrcn":"CS2103T-F14-1 EUNI..NING","chenyixin0":"CS2103T-F14-1 CHEN..IXIN","minghowC":"CS2103T-F14-1 CHAI.. HOW","Jawad280":"CS2103T-F14-1 JAWA..THAB","ashleygoh1":"CS2103T-F14-1 ASHL..TING"}} diff --git a/AY2324S2-CS2103T-F14-2_tp_master/authorship.json b/AY2324S2-CS2103T-F14-2_tp_master/authorship.json index 7594d41f..db951a99 100644 --- a/AY2324S2-CS2103T-F14-2_tp_master/authorship.json +++ b/AY2324S2-CS2103T-F14-2_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"tengcharmaine"},"content":"[![CI Status](https://github.com/AY2324S2-CS2103T-F14-2/tp/actions/workflows/gradle.yml/badge.svg)](https://github.com/AY2324S2-CS2103T-F14-2/tp/actions/workflows/gradle.yml)","lastModifiedDate":"2024-03-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"[![codecov](https://codecov.io/gh/AY2324S2-CS2103T-F14-2/tp/graph/badge.svg?token\u003dT5H5FY1BYS)](https://codecov.io/gh/AY2324S2-CS2103T-F14-2/tp)","lastModifiedDate":"2024-02-20"},{"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":"tengcharmaine"},"content":"The project simulates an ongoing software project for a desktop application (called _Clinic Mate_) used for managing contact details.","lastModifiedDate":"2024-03-03"},{"lineNumber":7,"author":{"gitId":"tengcharmaine"},"content":"* It is **written in OOP fashion**. It provides a **reasonably well-written** code base.","lastModifiedDate":"2024-03-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"* It comes with a **reasonable level of user and developer documentation**.","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":10,"author":{"gitId":"tengcharmaine"},"content":"Clinic Mate is an **address book for managing user\u0027s contacts, optimised for use via a Command Line Interface** (CLI) while","lastModifiedDate":"2024-03-03"},{"lineNumber":11,"author":{"gitId":"tengcharmaine"},"content":"still having the benefits of a Graphical User Interface (GUI).","lastModifiedDate":"2024-03-03"},{"lineNumber":12,"author":{"gitId":"tengcharmaine"},"content":"If you can type fast, Clinic Mate can manage your contacts faster than traditional GUI apps.","lastModifiedDate":"2024-03-03"},{"lineNumber":13,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":14,"author":{"gitId":"tengcharmaine"},"content":"Clinic Mate aims to make it easy for **General Practitioners** (GPs) in private family clinics to view patient contacts at","lastModifiedDate":"2024-03-03"},{"lineNumber":15,"author":{"gitId":"tengcharmaine"},"content":"a glance including:","lastModifiedDate":"2024-03-03"},{"lineNumber":16,"author":{"gitId":"tengcharmaine"},"content":"* Medical history","lastModifiedDate":"2024-03-03"},{"lineNumber":17,"author":{"gitId":"tengcharmaine"},"content":"* Past diagnosis","lastModifiedDate":"2024-03-03"},{"lineNumber":18,"author":{"gitId":"tengcharmaine"},"content":"* Prescriptions","lastModifiedDate":"2024-03-03"},{"lineNumber":19,"author":{"gitId":"tengcharmaine"},"content":"* Future appointments","lastModifiedDate":"2024-03-03"},{"lineNumber":20,"author":{"gitId":"tengcharmaine"},"content":"* Many more","lastModifiedDate":"2024-03-03"},{"lineNumber":21,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":22,"author":{"gitId":"tengcharmaine"},"content":"For the detailed documentation of this project (e.g. User or Developer Guide), see the **[Clinic Mate Website](https://ay2324s2-cs2103t-f14-2.github.io/tp/)**.","lastModifiedDate":"2024-03-03"},{"lineNumber":23,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":24,"author":{"gitId":"drustanyjt"},"content":"To join our mailing list fill in this [form](https://docs.google.com/forms/d/e/1FAIpQLSdhsv0afLOwhto8Ov6CW9FqKSQyEJ-oprHHLmLS-d5ylGShmg/viewform?usp\u003dsharing).","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"tengcharmaine"},"content":"This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-03-03"}],"authorContributionMap":{"drustanyjt":2,"tengcharmaine":19,"-":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":"drustanyjt"},"content":" archiveFileName \u003d \u0027clinicmate.jar\u0027","lastModifiedDate":"2024-03-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":{"drustanyjt":1,"-":71}},{"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":"jiahui0309"},"content":"You can reach us at the email `e0970466@comp.nus.edu.sg`","lastModifiedDate":"2024-03-03"},{"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":"jiahui0309"},"content":"### Yeo Jun Teng Drustan","lastModifiedDate":"2024-03-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"jiahui0309"},"content":"\u003cimg src\u003d\"images/drustanyjt.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"jiahui0309"},"content":"[[github](https://github.com/drustanyjt)]","lastModifiedDate":"2024-03-03"},{"lineNumber":19,"author":{"gitId":"jiahui0309"},"content":"[[linkedin](https://www.linkedin.com/in/drustan/)]","lastModifiedDate":"2024-03-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"* Role: Team Lead","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"jiahui0309"},"content":"### Chen Jiaying Jayne","lastModifiedDate":"2024-03-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"jiahui0309"},"content":"\u003cimg src\u003d\"images/jayne1010.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"jiahui0309"},"content":"[[github](http://github.com/Jayne1010)]","lastModifiedDate":"2024-03-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"jiahui0309"},"content":"* Responsibilities: Documentation","lastModifiedDate":"2024-03-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"jiahui0309"},"content":"### Song Jia Hui","lastModifiedDate":"2024-03-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"jiahui0309"},"content":"\u003cimg src\u003d\"images/jiahui0309.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"jiahui0309"},"content":"[[github](http://github.com/jiahui0309)]","lastModifiedDate":"2024-03-03"},{"lineNumber":37,"author":{"gitId":"jiahui0309"},"content":"[[linkedin](https://www.linkedin.com/in/song-jia-hui/)]","lastModifiedDate":"2024-03-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":"jiahui0309"},"content":"* Responsibilities: Integration","lastModifiedDate":"2024-03-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"jiahui0309"},"content":"### Teng Shi Rou Charmaine","lastModifiedDate":"2024-03-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"jiahui0309"},"content":"\u003cimg src\u003d\"images/tengcharmaine.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"jiahui0309"},"content":"[[github](http://github.com/tengcharmaine)]","lastModifiedDate":"2024-03-03"},{"lineNumber":47,"author":{"gitId":"jiahui0309"},"content":"[[linkedin](https://www.linkedin.com/in/charmaine-teng/)]","lastModifiedDate":"2024-03-03"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"jiahui0309"},"content":"* Responsibilities: Scheduling and tracking","lastModifiedDate":"2024-03-03"}],"authorContributionMap":{"-":32,"jiahui0309":19}},{"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":"drustanyjt"},"content":"# ClinicMate Developer Guide","lastModifiedDate":"2024-03-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":"-"},"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":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":"-"},"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":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":"-"},"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":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":"-"},"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":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 continues till 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).\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-02-09"},{"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":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12"},{"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":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"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":"2021-07-31"},{"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":"drustanyjt"},"content":"[//]: # (\u003cbox type\u003d\"info\" seamless\u003e)","lastModifiedDate":"2024-03-20"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":133,"author":{"gitId":"drustanyjt"},"content":"[//]: # ()","lastModifiedDate":"2024-03-20"},{"lineNumber":134,"author":{"gitId":"drustanyjt"},"content":"[//]: # (**Note:** An alternative \u0026#40;arguably, a more OOP\u0026#41; 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":"2024-03-20"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":136,"author":{"gitId":"drustanyjt"},"content":"[//]: # ()","lastModifiedDate":"2024-03-20"},{"lineNumber":137,"author":{"gitId":"drustanyjt"},"content":"[//]: # (\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e)","lastModifiedDate":"2024-03-20"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"drustanyjt"},"content":"[//]: # ()","lastModifiedDate":"2024-03-20"},{"lineNumber":140,"author":{"gitId":"drustanyjt"},"content":"[//]: # (\u003c/box\u003e)","lastModifiedDate":"2024-03-20"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"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":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":149,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"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":151,"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":152,"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":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","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":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"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":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"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":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"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":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"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":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"Jayne1010"},"content":"Step 2. The user executes `delete T0123456A` command to delete the person in the address book with the unique identification number `T0123456A`. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete T0123456A` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state.","lastModifiedDate":"2024-03-19"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"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":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"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":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":194,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"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":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":201,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"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":204,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"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":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":216,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":220,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":222,"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":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":226,"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":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"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":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"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":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":262,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":264,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":267,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":268,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":269,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":270,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"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":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":278,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":280,"author":{"gitId":"drustanyjt"},"content":"* General Practitioners working in their own private GP Clinics","lastModifiedDate":"2024-03-06"},{"lineNumber":281,"author":{"gitId":"drustanyjt"},"content":"* short staffed with minimal assistants for administrative tasks","lastModifiedDate":"2024-03-06"},{"lineNumber":282,"author":{"gitId":"drustanyjt"},"content":"* annoyed by relying on pen and paper to track patient contacts","lastModifiedDate":"2024-03-06"},{"lineNumber":283,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23"},{"lineNumber":284,"author":{"gitId":"drustanyjt"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2024-03-06"},{"lineNumber":285,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26"},{"lineNumber":286,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":288,"author":{"gitId":"drustanyjt"},"content":"**Value proposition**: Quick and easy management of patient contacts, including important patient information.","lastModifiedDate":"2024-03-06"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":291,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":293,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":294,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":295,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":296,"author":{"gitId":"-"},"content":"|----------|--------------------------------------------|------------------------------|------------------------------------------------------------------------|","lastModifiedDate":"2023-09-12"},{"lineNumber":297,"author":{"gitId":"-"},"content":"| `* * *` | new user | see usage instructions | refer to instructions when I forget how to use the App |","lastModifiedDate":"2020-05-23"},{"lineNumber":298,"author":{"gitId":"-"},"content":"| `* * *` | user | add a new person | |","lastModifiedDate":"2020-05-23"},{"lineNumber":299,"author":{"gitId":"-"},"content":"| `* * *` | user | delete a person | remove entries that I no longer need |","lastModifiedDate":"2020-05-23"},{"lineNumber":300,"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":301,"author":{"gitId":"-"},"content":"| `* *` | user | hide private contact details | minimize chance of someone else seeing them by accident |","lastModifiedDate":"2020-05-23"},{"lineNumber":302,"author":{"gitId":"-"},"content":"| `*` | user with many persons in the address book | sort persons by name | locate a person easily |","lastModifiedDate":"2020-05-23"},{"lineNumber":303,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":304,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":306,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":307,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":308,"author":{"gitId":"jiahui0309"},"content":"(For all use cases below, the **System** is the `ClinicMate` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2024-03-05"},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":310,"author":{"gitId":"jiahui0309"},"content":"**Use case: Add a person**","lastModifiedDate":"2024-03-04"},{"lineNumber":311,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":312,"author":{"gitId":"jiahui0309"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":313,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":314,"author":{"gitId":"jiahui0309"},"content":"1. User requests to list persons","lastModifiedDate":"2024-03-04"},{"lineNumber":315,"author":{"gitId":"jiahui0309"},"content":"2. ClinicMate shows a list of persons","lastModifiedDate":"2024-03-05"},{"lineNumber":316,"author":{"gitId":"jiahui0309"},"content":"3. User requests to add a specific person in the list","lastModifiedDate":"2024-03-04"},{"lineNumber":317,"author":{"gitId":"jiahui0309"},"content":"4. ClinicMate adds the person","lastModifiedDate":"2024-03-05"},{"lineNumber":318,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":319,"author":{"gitId":"jiahui0309"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":320,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":321,"author":{"gitId":"jiahui0309"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":322,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":323,"author":{"gitId":"jiahui0309"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-03-04"},{"lineNumber":324,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":325,"author":{"gitId":"jiahui0309"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":326,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":327,"author":{"gitId":"jiahui0309"},"content":"* 3a. The given command format is wrong.","lastModifiedDate":"2024-03-04"},{"lineNumber":328,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":329,"author":{"gitId":"jiahui0309"},"content":" * 3a1. ClinicMate shows an error message.","lastModifiedDate":"2024-03-05"},{"lineNumber":330,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":331,"author":{"gitId":"jiahui0309"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-04"},{"lineNumber":332,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":333,"author":{"gitId":"jiahui0309"},"content":"* 4a. There is an existing user in the database.","lastModifiedDate":"2024-03-04"},{"lineNumber":334,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":335,"author":{"gitId":"jiahui0309"},"content":" * 4a1. ClinicMate shows an error message.","lastModifiedDate":"2024-03-05"},{"lineNumber":336,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":337,"author":{"gitId":"jiahui0309"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-04"},{"lineNumber":338,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":339,"author":{"gitId":"jiahui0309"},"content":"**Use case: Add notes for a person**","lastModifiedDate":"2024-03-04"},{"lineNumber":340,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":341,"author":{"gitId":"jiahui0309"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":342,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":343,"author":{"gitId":"jiahui0309"},"content":"1. User requests to list persons","lastModifiedDate":"2024-03-04"},{"lineNumber":344,"author":{"gitId":"jiahui0309"},"content":"2. ClinicMate shows a list of persons","lastModifiedDate":"2024-03-05"},{"lineNumber":345,"author":{"gitId":"jiahui0309"},"content":"3. User requests to add notes for a specific person in the list","lastModifiedDate":"2024-03-04"},{"lineNumber":346,"author":{"gitId":"jiahui0309"},"content":"4. ClinicMate adds notes for the person","lastModifiedDate":"2024-03-05"},{"lineNumber":347,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":348,"author":{"gitId":"jiahui0309"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":349,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":350,"author":{"gitId":"jiahui0309"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":351,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":352,"author":{"gitId":"jiahui0309"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-03-04"},{"lineNumber":353,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":354,"author":{"gitId":"jiahui0309"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":355,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":356,"author":{"gitId":"jiahui0309"},"content":"* 3a. The given command format is wrong.","lastModifiedDate":"2024-03-04"},{"lineNumber":357,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":358,"author":{"gitId":"jiahui0309"},"content":" * 3a1. ClinicMate shows an error message.","lastModifiedDate":"2024-03-05"},{"lineNumber":359,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":360,"author":{"gitId":"jiahui0309"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-04"},{"lineNumber":361,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":362,"author":{"gitId":"jiahui0309"},"content":"* 4a. The given IC number is invalid.","lastModifiedDate":"2024-03-05"},{"lineNumber":363,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":364,"author":{"gitId":"jiahui0309"},"content":" * 4a1. ClinicMate shows an error message.","lastModifiedDate":"2024-03-05"},{"lineNumber":365,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":366,"author":{"gitId":"jiahui0309"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-04"},{"lineNumber":367,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":368,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":369,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":370,"author":{"gitId":"-"},"content":"**Use case: Delete a person**","lastModifiedDate":"2020-05-23"},{"lineNumber":371,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":372,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":373,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":374,"author":{"gitId":"-"},"content":"1. User requests to list persons","lastModifiedDate":"2020-05-23"},{"lineNumber":375,"author":{"gitId":"jiahui0309"},"content":"2. ClinicMate shows a list of persons","lastModifiedDate":"2024-03-05"},{"lineNumber":376,"author":{"gitId":"-"},"content":"3. User requests to delete a specific person in the list","lastModifiedDate":"2020-05-23"},{"lineNumber":377,"author":{"gitId":"jiahui0309"},"content":"4. ClinicMate deletes the person","lastModifiedDate":"2024-03-05"},{"lineNumber":378,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":379,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":380,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":381,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":382,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":383,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2020-05-23"},{"lineNumber":384,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":385,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":386,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":387,"author":{"gitId":"jiahui0309"},"content":"* 3a. The given IC number is invalid.","lastModifiedDate":"2024-03-05"},{"lineNumber":388,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":389,"author":{"gitId":"jiahui0309"},"content":" * 3a1. ClinicMate shows an error message.","lastModifiedDate":"2024-03-05"},{"lineNumber":390,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":391,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23"},{"lineNumber":392,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":393,"author":{"gitId":"jiahui0309"},"content":"* 4a. The given command format is wrong.","lastModifiedDate":"2024-03-04"},{"lineNumber":394,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":395,"author":{"gitId":"jiahui0309"},"content":" * 4a1. ClinicMate shows an error message.","lastModifiedDate":"2024-03-05"},{"lineNumber":396,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":397,"author":{"gitId":"jiahui0309"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-04"},{"lineNumber":398,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":399,"author":{"gitId":"jiahui0309"},"content":"**Use case: Find a person**","lastModifiedDate":"2024-03-04"},{"lineNumber":400,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":401,"author":{"gitId":"jiahui0309"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":402,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":403,"author":{"gitId":"jiahui0309"},"content":"1. User requests to list persons","lastModifiedDate":"2024-03-04"},{"lineNumber":404,"author":{"gitId":"jiahui0309"},"content":"2. ClinicMate shows a list of persons","lastModifiedDate":"2024-03-05"},{"lineNumber":405,"author":{"gitId":"jiahui0309"},"content":"3. User requests to find a specific person in the list","lastModifiedDate":"2024-03-04"},{"lineNumber":406,"author":{"gitId":"jiahui0309"},"content":"4. ClinicMate finds the person","lastModifiedDate":"2024-03-05"},{"lineNumber":407,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":408,"author":{"gitId":"jiahui0309"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":409,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":410,"author":{"gitId":"jiahui0309"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":411,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":412,"author":{"gitId":"jiahui0309"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-03-04"},{"lineNumber":413,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":414,"author":{"gitId":"jiahui0309"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":415,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":416,"author":{"gitId":"jiahui0309"},"content":"* 3a. The given IC number is invalid.","lastModifiedDate":"2024-03-05"},{"lineNumber":417,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":418,"author":{"gitId":"jiahui0309"},"content":" * 3a1. ClinicMate shows an error message.","lastModifiedDate":"2024-03-05"},{"lineNumber":419,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":420,"author":{"gitId":"jiahui0309"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-04"},{"lineNumber":421,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":422,"author":{"gitId":"jiahui0309"},"content":"* 4a. The given command format is wrong.","lastModifiedDate":"2024-03-04"},{"lineNumber":423,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":424,"author":{"gitId":"jiahui0309"},"content":" * 4a1. ClinicMate shows an error message.","lastModifiedDate":"2024-03-05"},{"lineNumber":425,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":426,"author":{"gitId":"jiahui0309"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-04"},{"lineNumber":427,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":428,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":429,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":430,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":431,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":432,"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":433,"author":{"gitId":"tengcharmaine"},"content":"2. 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":"2024-03-03"},{"lineNumber":434,"author":{"gitId":"tengcharmaine"},"content":"3. Should be able to hold up to 1000 persons without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2024-03-03"},{"lineNumber":435,"author":{"gitId":"tengcharmaine"},"content":"4. Should respond to user actions within 5 seconds under normal load conditions.","lastModifiedDate":"2024-03-03"},{"lineNumber":436,"author":{"gitId":"tengcharmaine"},"content":"5. Should be designed to use system resources (e.g. CPU) efficiently to minimise its impact on the host environment.","lastModifiedDate":"2024-03-03"},{"lineNumber":437,"author":{"gitId":"tengcharmaine"},"content":"6. User interface should be intuitive and easy for users with varying levels of technical expertise.","lastModifiedDate":"2024-03-03"},{"lineNumber":438,"author":{"gitId":"tengcharmaine"},"content":"7. Codebase should be well-documented and follow best practices to facilitate future maintenance and enhancements.","lastModifiedDate":"2024-03-03"},{"lineNumber":439,"author":{"gitId":"tengcharmaine"},"content":"8. Should be easy for developers to add new features or make changes to existing ones without causing unintended side effects.","lastModifiedDate":"2024-03-03"},{"lineNumber":440,"author":{"gitId":"tengcharmaine"},"content":"9. Should comply with relevant data privacy regulations (e.g. PDPA) and ensure user data is stored and processed securely.","lastModifiedDate":"2024-03-03"},{"lineNumber":441,"author":{"gitId":"tengcharmaine"},"content":"10. Should be able to be used alongside other systems and services commonly used in healthcare settings, such as electronic health record (EHR) systems.","lastModifiedDate":"2024-03-03"},{"lineNumber":442,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":443,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":444,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":445,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09"},{"lineNumber":446,"author":{"gitId":"drustanyjt"},"content":"* **GP**: General Practitioner, a general physician who provides primary care (usually in a clinic)","lastModifiedDate":"2024-03-04"},{"lineNumber":447,"author":{"gitId":"drustanyjt"},"content":"* **Taking History**: A medical term for recording a patient\u0027s symptoms, medical history, and other relevant information","lastModifiedDate":"2024-03-04"},{"lineNumber":448,"author":{"gitId":"drustanyjt"},"content":"* **Differential Diagnosis**: A medical term for a possible alternative diagnosis for a patient\u0027s symptoms","lastModifiedDate":"2024-03-04"},{"lineNumber":449,"author":{"gitId":"drustanyjt"},"content":"* **IC Number**: Short for NRIC (National Registration Identity Card) Number, a unique identifier for Singapore citizens and permanent residents","lastModifiedDate":"2024-03-05"},{"lineNumber":450,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":451,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":452,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":453,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":454,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":455,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":456,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":457,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":458,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":459,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12"},{"lineNumber":460,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":461,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":462,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":463,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":464,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":465,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":466,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":467,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":468,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":469,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":470,"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":471,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":472,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":473,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":474,"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":475,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":476,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":477,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","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"},{"lineNumber":480,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":481,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":482,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":483,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":484,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":485,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":486,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":487,"author":{"gitId":"Jayne1010"},"content":" 1. Test case: `delete T0123456A`\u003cbr\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":488,"author":{"gitId":"Jayne1010"},"content":" Expected: The contact with the unique identification number `T0123456A` is deleted from the list. Details of the deleted contact shown in the status message. Timestamp in the status bar is updated.","lastModifiedDate":"2024-03-19"},{"lineNumber":489,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":490,"author":{"gitId":"Jayne1010"},"content":" 1. Test case: `delete T0123A`\u003cbr\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":491,"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":492,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":493,"author":{"gitId":"Jayne1010"},"content":" 1. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is the identification number which does not exist in the list)\u003cbr\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":494,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":495,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":496,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":497,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":498,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":499,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":500,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":501,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":502,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":503,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":504,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"drustanyjt":17,"Jayne1010":5,"tengcharmaine":9,"-":376,"jiahui0309":97}},{"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":"Jayne1010"},"content":"# Clinic Mate User Guide","lastModifiedDate":"2024-03-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"Jayne1010"},"content":"Clinic Mate is a **desktop** app for managing contacts in a clinic, 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, Clinic Mate can manage your patients\u0027 contact faster than traditional GUI apps.","lastModifiedDate":"2024-03-05"},{"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":"drustanyjt"},"content":"1. Download the latest `.jar` file from [here](https://github.com/AY2324S2-CS2103T-F14-2/tp/releases/latest)","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your AddressBook.","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"tengcharmaine"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar clinicmate.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":25,"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":26,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2024-03-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"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":29,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"Jayne1010"},"content":" * `add n/John Doe p/88888888 e/johndoe@mail.com i/T0123456A ag/12 s/Male a/John street, block 123, #01-01` : Adds a contact named `John Doe` to the Address Book.","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"Jayne1010"},"content":" * `delete T0123456A` : Deletes the contact with the IC \u0027T0123456A\u0027 shown in the current list.","lastModifiedDate":"2024-03-03"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"Jayne1010"},"content":" * `find T0123456A` : Find the contact with the IC \u0027T0123456A\u0027 shown in the current list.","lastModifiedDate":"2024-03-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"Jayne1010"},"content":" * `addnote i/T0123456A n/Patient has diabetes` : Add a note: \u0027Patient has diabetes\u0027 for the contact with the IC \u0027T0123456A\u0027 as shown in current list.","lastModifiedDate":"2024-03-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"**Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"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":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":"Jayne1010"},"content":" e.g. if the command specifies `n/NAME i/IC_NUMBER`, `i/IC_NUMBER n/NAME` is also acceptable.","lastModifiedDate":"2024-03-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"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":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":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"Jayne1010"},"content":"Shows a message explaining how to access the help page.","lastModifiedDate":"2024-03-03"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"### Adding a person: `add`","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"Adds a person to the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"Jayne1010"},"content":"Format: `add n/NAME p/PHONE e/EMAIL i/IC_NUMBER ag/AGE s/SEX a/ADDRESS`","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"Jayne1010"},"content":"* A person will be uniquely identified by his/her personal identification number.","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"Jayne1010"},"content":"* Clinic mate does not allow the same identification number to be twice.","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":82,"author":{"gitId":"Jayne1010"},"content":"**Tip:** A person can have a note included.","lastModifiedDate":"2024-03-03"},{"lineNumber":83,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"Jayne1010"},"content":"* `add n/John Doe p/88888888 e/johndoe@mail.com i/T0123456A ag/12 s/Male a/John street, block 123, #01-01`","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"Jayne1010"},"content":"### Adding a note : `addnote`","lastModifiedDate":"2024-03-03"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"Jayne1010"},"content":"Add a note to an existing person in the address book","lastModifiedDate":"2024-03-03"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"Jayne1010"},"content":"Format: `addnote i/IC_NUMBER n/NOTE`","lastModifiedDate":"2024-03-03"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"Jayne1010"},"content":"* Adds a note to the person with the specified `IC_NUMBER`. The IC number refers to the IC number shown in the displayed person list. The IC_NUMBER **must be the FULL IC NUMBER**.","lastModifiedDate":"2024-03-03"},{"lineNumber":95,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"Jayne1010"},"content":"* When adding notes, the new note added will be appended to the current note of the person. i.e. current note is preserved","lastModifiedDate":"2024-03-05"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"Jayne1010"},"content":"* `addnote i/T0123456A n/Patient has diabetes` Adds a note `Patient has diabetes` to the person with the IC number `T0123456A` in the address book.","lastModifiedDate":"2024-03-03"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"Jayne1010"},"content":"### Locating persons by ic number: `find`","lastModifiedDate":"2024-03-03"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"Jayne1010"},"content":"Find an existing person in the address book using their IC_NUMBER.","lastModifiedDate":"2024-03-03"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"Jayne1010"},"content":"Format: `find IC_NUMBER`","lastModifiedDate":"2024-03-03"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"Jayne1010"},"content":"* The search is case-insensitive. e.g `t0123456a` will match `T0123456A`.","lastModifiedDate":"2024-03-03"},{"lineNumber":108,"author":{"gitId":"Jayne1010"},"content":"* Only the IC number is searched.","lastModifiedDate":"2024-03-03"},{"lineNumber":109,"author":{"gitId":"Jayne1010"},"content":"* Only full IC number will be matched e.g. `T0123456A` will not match `T0123A`.","lastModifiedDate":"2024-03-03"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"Jayne1010"},"content":"* `find T0123456A` returns `John Doe`.","lastModifiedDate":"2024-03-03"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"Jayne1010"},"content":"Deletes the specified person from the address book using their IC_NUMBER.","lastModifiedDate":"2024-03-03"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"Jayne1010"},"content":"Format: `delete IC_NUMBER`","lastModifiedDate":"2024-03-03"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"Jayne1010"},"content":"* Deletes the person with the specified `IC_NUMBER`.","lastModifiedDate":"2024-03-03"},{"lineNumber":121,"author":{"gitId":"Jayne1010"},"content":"* The IC_NUMBER refers to the IC number shown in the displayed person list.","lastModifiedDate":"2024-03-03"},{"lineNumber":122,"author":{"gitId":"Jayne1010"},"content":"* The IC_NUMBER **must be the FULL IC NUMBER**.","lastModifiedDate":"2024-03-03"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"Jayne1010"},"content":"* `delete T0123456A` deletes `John Doe` from the address book.","lastModifiedDate":"2024-03-03"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":"Clears all entries from the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"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":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":145,"author":{"gitId":"drustanyjt"},"content":"AddressBook data are saved automatically as a JSON file `[JAR file location]/data/clinicmate.json`. Advanced users are welcome to update data directly by editing that data file.","lastModifiedDate":"2024-03-18"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":147,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":149,"author":{"gitId":"-"},"content":"**Caution:**","lastModifiedDate":"2023-09-12"},{"lineNumber":150,"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.\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":151,"author":{"gitId":"-"},"content":"Furthermore, certain edits can cause the AddressBook to behave in unexpected ways (e.g., if a value entered is outside the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.","lastModifiedDate":"2023-09-12"},{"lineNumber":152,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"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":"-"},"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":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":"2023-09-12"},{"lineNumber":177,"author":{"gitId":"Jayne1010"},"content":"**Add** | `add n/NAME p/PHONE e/EMAIL i/IC_NUMBER ag/AGE s/SEX a/ADDRESS` \u003cbr\u003e e.g., `add n/John Doe p/88888888 e/johndoe@mail.com i/T0123456A ag/12 s/Male a/John street, block 123, #01-01`","lastModifiedDate":"2024-03-19"},{"lineNumber":178,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"Jayne1010"},"content":"**Delete** | `delete IC_NUMBER`\u003cbr\u003e e.g., `delete T0123456A`","lastModifiedDate":"2024-03-03"},{"lineNumber":180,"author":{"gitId":"Jayne1010"},"content":"**AddNote** | `addnote i/IC_NUMBER n/NOTE`\u003cbr\u003e e.g., `addnote i/T0123456A n/Patient has diabetes`","lastModifiedDate":"2024-03-03"},{"lineNumber":181,"author":{"gitId":"Jayne1010"},"content":"**Find** | `find IC_NUMBER`\u003cbr\u003e e.g., `find T0123456A`","lastModifiedDate":"2024-03-03"},{"lineNumber":182,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"Jayne1010":37,"drustanyjt":2,"tengcharmaine":1,"-":142}},{"path":"docs/diagrams/AddCommandDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Jayne1010"},"content":"@startuml","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"Jayne1010"},"content":"!include style.puml","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"Jayne1010"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"Jayne1010"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"Jayne1010"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"Jayne1010"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"Jayne1010"},"content":"participant \":AddCommandParser\" as AddCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"Jayne1010"},"content":"participant \"d:AddCommand\" as AddCommand LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"Jayne1010"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"Jayne1010"},"content":"end box","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"Jayne1010"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"Jayne1010"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"Jayne1010"},"content":"end box","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"Jayne1010"},"content":"[-\u003e LogicManager : execute(\"add n/John Doe p/12345678 e/john@mail.com i/T0123456A ag/12 s/Male a/John street, block 123, #01-01\")","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"Jayne1010"},"content":"activate LogicManager","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"Jayne1010"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"add n/John Doe p/12345678 e/john@mail.com i/T0123456A ag/12 s/Male a/John street, block 123, #01-01\")","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"Jayne1010"},"content":"activate AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"Jayne1010"},"content":"create AddCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"Jayne1010"},"content":"AddressBookParser -\u003e AddCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"Jayne1010"},"content":"activate AddCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"Jayne1010"},"content":"AddCommandParser --\u003e AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"Jayne1010"},"content":"deactivate AddCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"Jayne1010"},"content":"AddressBookParser -\u003e AddCommandParser : parse(\"n/John Doe p/12345678 e/john@mail.com i/T0123456A ag/12 s/Male a/John street, block 123, #01-01\")","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"Jayne1010"},"content":"activate AddCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"Jayne1010"},"content":"create AddCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"Jayne1010"},"content":"AddCommandParser -\u003e AddCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"Jayne1010"},"content":"activate AddCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"Jayne1010"},"content":"AddCommand --\u003e AddCommandParser :","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"Jayne1010"},"content":"deactivate AddCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"Jayne1010"},"content":"AddCommandParser --\u003e AddressBookParser : a","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"Jayne1010"},"content":"deactivate AddCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"Jayne1010"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"Jayne1010"},"content":"AddCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"Jayne1010"},"content":"destroy AddCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"Jayne1010"},"content":"AddressBookParser --\u003e LogicManager : a","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"Jayne1010"},"content":"deactivate AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"Jayne1010"},"content":"LogicManager -\u003e AddCommand : execute(m)","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"Jayne1010"},"content":"activate AddCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"Jayne1010"},"content":"AddCommand -\u003e Model : setPerson(T0123456A, \\n new Person(John Doe, 12345678, ...))","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"Jayne1010"},"content":"activate Model","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"Jayne1010"},"content":"Model --\u003e AddCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"Jayne1010"},"content":"deactivate Model","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"Jayne1010"},"content":"create CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"Jayne1010"},"content":"AddCommand -\u003e CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"Jayne1010"},"content":"activate CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"Jayne1010"},"content":"CommandResult --\u003e AddCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"Jayne1010"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"Jayne1010"},"content":"AddCommand --\u003e LogicManager : r","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"Jayne1010"},"content":"deactivate AddCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"Jayne1010"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"Jayne1010"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"Jayne1010"},"content":"@enduml","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"Jayne1010":70}},{"path":"docs/diagrams/AddNoteSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"tengcharmaine"},"content":"@startuml","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"tengcharmaine"},"content":"!include style.puml","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"tengcharmaine"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"tengcharmaine"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"tengcharmaine"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"tengcharmaine"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"tengcharmaine"},"content":"participant \":AddNoteCommandParser\" as AddNoteCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"tengcharmaine"},"content":"participant \"n:AddNoteCommand\" as AddNoteCommand LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"tengcharmaine"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"tengcharmaine"},"content":"end box","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"tengcharmaine"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"tengcharmaine"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"tengcharmaine"},"content":"end box","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"tengcharmaine"},"content":"[-\u003e LogicManager : execute(\"addnote \\n i/T0123456A n/Covid\")","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"tengcharmaine"},"content":"activate LogicManager","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"tengcharmaine"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"addnote \\n i/T0123456A n/Covid\")","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"tengcharmaine"},"content":"activate AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"tengcharmaine"},"content":"create AddNoteCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"tengcharmaine"},"content":"AddressBookParser -\u003e AddNoteCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"tengcharmaine"},"content":"activate AddNoteCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"tengcharmaine"},"content":"AddNoteCommandParser --\u003e AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"tengcharmaine"},"content":"deactivate AddNoteCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"tengcharmaine"},"content":"AddressBookParser -\u003e AddNoteCommandParser : parse(\"i/T0123456A n/Covid\")","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"tengcharmaine"},"content":"activate AddNoteCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"tengcharmaine"},"content":"create AddNoteCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"tengcharmaine"},"content":"AddNoteCommandParser -\u003e AddNoteCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"tengcharmaine"},"content":"activate AddNoteCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"tengcharmaine"},"content":"AddNoteCommand --\u003e AddNoteCommandParser :","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"tengcharmaine"},"content":"deactivate AddNoteCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"tengcharmaine"},"content":"AddNoteCommandParser --\u003e AddressBookParser : n","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"tengcharmaine"},"content":"deactivate AddNoteCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"tengcharmaine"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"tengcharmaine"},"content":"AddNoteCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"tengcharmaine"},"content":"destroy AddNoteCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"tengcharmaine"},"content":"AddressBookParser --\u003e LogicManager : n","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"tengcharmaine"},"content":"deactivate AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"tengcharmaine"},"content":"LogicManager -\u003e AddNoteCommand : execute(m)","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"tengcharmaine"},"content":"activate AddNoteCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"tengcharmaine"},"content":"AddNoteCommand -\u003e Model : setPerson(T0123456A, \\n new Person(..., Covid, ...))","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"tengcharmaine"},"content":"activate Model","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"tengcharmaine"},"content":"Model --\u003e AddNoteCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"tengcharmaine"},"content":"deactivate Model","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"tengcharmaine"},"content":"create CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"tengcharmaine"},"content":"AddNoteCommand -\u003e CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"tengcharmaine"},"content":"activate CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"tengcharmaine"},"content":"CommandResult --\u003e AddNoteCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"tengcharmaine"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"tengcharmaine"},"content":"AddNoteCommand --\u003e LogicManager : r","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"tengcharmaine"},"content":"deactivate AddNoteCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"tengcharmaine"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"tengcharmaine"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"tengcharmaine"},"content":"@enduml","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"tengcharmaine":70}},{"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 \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-02-09"},{"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 \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-02-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"jiahui0309"},"content":"[-\u003e LogicManager : execute(\"delete S0123456A\")","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":"activate LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"jiahui0309"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"delete S0123456A\")","lastModifiedDate":"2024-03-20"},{"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":"jiahui0309"},"content":"AddressBookParser -\u003e DeleteCommandParser : parse(\"S0123456A\")","lastModifiedDate":"2024-03-20"},{"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 :","lastModifiedDate":"2024-02-09"},{"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(m)","lastModifiedDate":"2024-02-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":"activate DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":52,"author":{"gitId":"jiahui0309"},"content":"DeleteCommand -\u003e Model : deletePerson(S0123456A)","lastModifiedDate":"2024-03-20"},{"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 : r","lastModifiedDate":"2024-02-09"},{"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":{"-":66,"jiahui0309":4}},{"path":"docs/diagrams/EditCommandDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Jayne1010"},"content":"@startuml","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"Jayne1010"},"content":"!include style.puml","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"Jayne1010"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"Jayne1010"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"Jayne1010"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"Jayne1010"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"Jayne1010"},"content":"participant \":EditCommandParser\" as EditCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"Jayne1010"},"content":"participant \"d:EditCommand\" as EditCommand LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"Jayne1010"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"Jayne1010"},"content":"end box","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"Jayne1010"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"Jayne1010"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"Jayne1010"},"content":"end box","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"Jayne1010"},"content":"[-\u003e LogicManager : execute(\"edit T0123456A p/23456789\")","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"Jayne1010"},"content":"activate LogicManager","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"Jayne1010"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"edit T0123456A p/23456789\")","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"Jayne1010"},"content":"activate AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"Jayne1010"},"content":"create EditCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"Jayne1010"},"content":"AddressBookParser -\u003e EditCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"Jayne1010"},"content":"activate EditCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"Jayne1010"},"content":"EditCommandParser --\u003e AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"Jayne1010"},"content":"deactivate EditCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"Jayne1010"},"content":"AddressBookParser -\u003e EditCommandParser : parse(\"p/23456789\")","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"Jayne1010"},"content":"activate EditCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"Jayne1010"},"content":"create EditCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"Jayne1010"},"content":"EditCommandParser -\u003e EditCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"Jayne1010"},"content":"activate EditCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"Jayne1010"},"content":"EditCommand --\u003e EditCommandParser :","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"Jayne1010"},"content":"deactivate EditCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"Jayne1010"},"content":"EditCommandParser --\u003e AddressBookParser : e","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"Jayne1010"},"content":"deactivate EditCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"Jayne1010"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"Jayne1010"},"content":"EditCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"Jayne1010"},"content":"destroy EditCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"Jayne1010"},"content":"AddressBookParser --\u003e LogicManager : e","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"Jayne1010"},"content":"deactivate AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"Jayne1010"},"content":"LogicManager -\u003e EditCommand : execute(m)","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"Jayne1010"},"content":"activate EditCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"Jayne1010"},"content":"EditCommand -\u003e Model : setPerson(T0123456A, \\n new Person(John Doe, 23456789, ...))","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"Jayne1010"},"content":"activate Model","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"Jayne1010"},"content":"Model --\u003e EditCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"Jayne1010"},"content":"deactivate Model","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"Jayne1010"},"content":"create CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"Jayne1010"},"content":"EditCommand -\u003e CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"Jayne1010"},"content":"activate CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"Jayne1010"},"content":"CommandResult --\u003e EditCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"Jayne1010"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"Jayne1010"},"content":"EditCommand --\u003e LogicManager : r","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"Jayne1010"},"content":"deactivate EditCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"Jayne1010"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"Jayne1010"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"Jayne1010"},"content":"@enduml","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"Jayne1010":70}},{"path":"docs/diagrams/FindSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"jiahui0309"},"content":"@startuml","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"jiahui0309"},"content":"!include style.puml","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"jiahui0309"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"jiahui0309"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"jiahui0309"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"jiahui0309"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"jiahui0309"},"content":"participant \":FindCommandParser\" as FindCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"jiahui0309"},"content":"participant \"f:FindCommand\" as FindCommand LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"jiahui0309"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"jiahui0309"},"content":"end box","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"jiahui0309"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"jiahui0309"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"jiahui0309"},"content":"end box","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"jiahui0309"},"content":"[-\u003e LogicManager : execute(\"find S0123456A\")","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"jiahui0309"},"content":"activate LogicManager","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"jiahui0309"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"find S0123456A\")","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"jiahui0309"},"content":"activate AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"jiahui0309"},"content":"create FindCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"jiahui0309"},"content":"AddressBookParser -\u003e FindCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"jiahui0309"},"content":"activate FindCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"jiahui0309"},"content":"FindCommandParser --\u003e AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"jiahui0309"},"content":"deactivate FindCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"jiahui0309"},"content":"AddressBookParser -\u003e FindCommandParser : parse(\"S0123456A\")","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"jiahui0309"},"content":"activate FindCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"jiahui0309"},"content":"create FindCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"jiahui0309"},"content":"FindCommandParser -\u003e FindCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"jiahui0309"},"content":"activate FindCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"jiahui0309"},"content":"FindCommand --\u003e FindCommandParser :","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"jiahui0309"},"content":"deactivate FindCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"jiahui0309"},"content":"FindCommandParser --\u003e AddressBookParser : f","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"jiahui0309"},"content":"deactivate FindCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"jiahui0309"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"jiahui0309"},"content":"FindCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"jiahui0309"},"content":"destroy FindCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"jiahui0309"},"content":"AddressBookParser --\u003e LogicManager : f","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"jiahui0309"},"content":"deactivate AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"jiahui0309"},"content":"LogicManager -\u003e FindCommand : execute(m)","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"jiahui0309"},"content":"activate FindCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"jiahui0309"},"content":"FindCommand -\u003e Model : updateFilteredPersonList(S0123456A)","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"jiahui0309"},"content":"activate Model","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"jiahui0309"},"content":"Model --\u003e FindCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"jiahui0309"},"content":"deactivate Model","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"jiahui0309"},"content":"create CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"jiahui0309"},"content":"FindCommand -\u003e CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"jiahui0309"},"content":"activate CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"jiahui0309"},"content":"CommandResult --\u003e FindCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"jiahui0309"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"jiahui0309"},"content":"FindCommand --\u003e LogicManager : r","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"jiahui0309"},"content":"deactivate FindCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"jiahui0309"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"jiahui0309"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"jiahui0309"},"content":"@enduml","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"jiahui0309":70}},{"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":"-"},"content":"Class UniquePersonList","lastModifiedDate":"2021-07-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Class Person","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Class Name","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Class Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"drustanyjt"},"content":"Class Email","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"drustanyjt"},"content":"Class IdentityCardNumber","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"drustanyjt"},"content":"Class Age","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"drustanyjt"},"content":"Class Sex","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"drustanyjt"},"content":"Class Address","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"drustanyjt"},"content":"Class Note","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"drustanyjt"},"content":"\u0027Class Tag","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":27,"author":{"gitId":"-"},"content":"Class I #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"AddressBook .up.|\u003e ReadOnlyAddressBook","lastModifiedDate":"2019-07-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"ModelManager .up.|\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":36,"author":{"gitId":"-"},"content":"Model .right.\u003e ReadOnlyUserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"Model .left.\u003e ReadOnlyAddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"ModelManager -left-\u003e \"1\" AddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":39,"author":{"gitId":"-"},"content":"ModelManager -right-\u003e \"1\" UserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":40,"author":{"gitId":"-"},"content":"UserPrefs .up.|\u003e ReadOnlyUserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"AddressBook *--\u003e \"1\" UniquePersonList","lastModifiedDate":"2019-07-30"},{"lineNumber":43,"author":{"gitId":"-"},"content":"UniquePersonList --\u003e \"~* all\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":44,"author":{"gitId":"-"},"content":"Person *--\u003e Name","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"Person *--\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"Person *--\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":47,"author":{"gitId":"drustanyjt"},"content":"Person *--\u003e IdentityCardNumber","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"drustanyjt"},"content":"Person *--\u003e Age","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"drustanyjt"},"content":"Person *--\u003e Sex","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":"Person *--\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":51,"author":{"gitId":"drustanyjt"},"content":"Person *--\u003e Note","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"drustanyjt"},"content":"\u0027Person *--\u003e \"*\" Tag","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":54,"author":{"gitId":"-"},"content":"Person -[hidden]up--\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"UniquePersonList -[hidden]right-\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":"Name -[hidden]right-\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":58,"author":{"gitId":"-"},"content":"Phone -[hidden]right-\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":"Address -[hidden]right-\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":61,"author":{"gitId":"-"},"content":"ModelManager --\u003e \"~* filtered\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":62,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"drustanyjt":12,"-":50}},{"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":"jiahui0309"},"content":"# ClinicMate Level-3","lastModifiedDate":"2024-03-06"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"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":9,"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":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"tengcharmaine"},"content":"![Ui](images/OldUi.png)","lastModifiedDate":"2024-03-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"jiahui0309"},"content":"**ClinicMate 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":"2024-03-06"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"jiahui0309"},"content":"* If you are interested in using ClinicMate, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).","lastModifiedDate":"2024-03-06"},{"lineNumber":16,"author":{"gitId":"jiahui0309"},"content":"* If you are interested about developing ClinicMate, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.","lastModifiedDate":"2024-03-06"},{"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"},{"lineNumber":22,"author":{"gitId":"drustanyjt"},"content":"* Logo: [Red Cross icons by Freepik - Flaticon](https://www.flaticon.com/free-icons/red-cross)","lastModifiedDate":"2024-03-03"},{"lineNumber":23,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-03"}],"authorContributionMap":{"drustanyjt":2,"tengcharmaine":1,"-":16,"jiahui0309":4}},{"path":"docs/tutorials/AddRemark.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-07-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Tutorial: Adding a command\"","lastModifiedDate":"2020-07-29"},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-07-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"# Tutorial: Adding a command","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"Let\u0027s walk you through the implementation of a new command — `remark`.","lastModifiedDate":"2020-07-29"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":11,"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":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":13,"author":{"gitId":"-"},"content":"`remark INDEX r/REMARK` (e.g., `remark 2 r/Likes baseball`)","lastModifiedDate":"2020-07-29"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":15,"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":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":"## Create a new `remark` command","lastModifiedDate":"2020-07-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":20,"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":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":22,"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":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":24,"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":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":26,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":28,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":29,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2020-07-29"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2020-07-29"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":33,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Changes the remark of an existing person in the address book.","lastModifiedDate":"2020-07-29"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":36,"author":{"gitId":"-"},"content":"public class RemarkCommand extends Command {","lastModifiedDate":"2020-07-29"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"remark\";","lastModifiedDate":"2020-07-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2020-07-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return new CommandResult(\"Hello from remark\");","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":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":"### Hook `RemarkCommand` into the application","lastModifiedDate":"2020-07-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":49,"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":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":51,"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":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":"### Run the application","lastModifiedDate":"2020-07-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":55,"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":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":"![Output displayed](../images/add-remark/RemarkHello.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":"## Change `RemarkCommand` to throw an exception","lastModifiedDate":"2020-07-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":61,"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":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":63,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"../diagrams/add-remark/RemarkClass.puml\" alt\u003d\"The relationship between RemarkCommand and Command\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":65,"author":{"gitId":"-"},"content":"Following the convention in other commands, we add relevant messages as constants and use them.","lastModifiedDate":"2020-07-29"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":67,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":69,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2021-08-01"},{"lineNumber":71,"author":{"gitId":"-"},"content":" + \": Edits the remark of the person identified \"","lastModifiedDate":"2021-08-01"},{"lineNumber":72,"author":{"gitId":"-"},"content":" + \"by the index number used in the last person listing. \"","lastModifiedDate":"2020-07-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":" + \"Existing remark will be overwritten by the input.\\n\"","lastModifiedDate":"2020-07-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2020-07-29"},{"lineNumber":75,"author":{"gitId":"-"},"content":" + \"r/ [REMARK]\\n\"","lastModifiedDate":"2020-07-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2020-07-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":" + \"r/ Likes to swim.\";","lastModifiedDate":"2020-07-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_IMPLEMENTED_YET \u003d","lastModifiedDate":"2021-08-01"},{"lineNumber":80,"author":{"gitId":"-"},"content":" \"Remark command not implemented yet\";","lastModifiedDate":"2021-08-01"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":84,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_NOT_IMPLEMENTED_YET);","lastModifiedDate":"2020-07-29"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":86,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":88,"author":{"gitId":"-"},"content":"## Enhancing `RemarkCommand`","lastModifiedDate":"2020-07-29"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":90,"author":{"gitId":"-"},"content":"Let’s change `RemarkCommand` to parse input from the user.","lastModifiedDate":"2020-07-29"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":92,"author":{"gitId":"-"},"content":"### Make the command accept parameters","lastModifiedDate":"2020-07-29"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":94,"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":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":96,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":97,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2020-07-29"},{"lineNumber":98,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":99,"author":{"gitId":"-"},"content":"public class RemarkCommand extends Command {","lastModifiedDate":"2020-07-29"},{"lineNumber":100,"author":{"gitId":"-"},"content":" //...","lastModifiedDate":"2020-07-29"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public static final String MESSAGE_ARGUMENTS \u003d \"Index: %1$d, Remark: %2$s\";","lastModifiedDate":"2020-07-29"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":103,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2020-07-29"},{"lineNumber":104,"author":{"gitId":"-"},"content":" private final String remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":106,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-07-29"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit the remark","lastModifiedDate":"2020-07-29"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * @param remark of the person to be updated to","lastModifiedDate":"2020-07-29"},{"lineNumber":109,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public RemarkCommand(Index index, String remark) {","lastModifiedDate":"2020-07-29"},{"lineNumber":111,"author":{"gitId":"-"},"content":" requireAllNonNull(index, remark);","lastModifiedDate":"2020-07-29"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":113,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2020-07-29"},{"lineNumber":114,"author":{"gitId":"-"},"content":" this.remark \u003d remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":118,"author":{"gitId":"-"},"content":" throw new CommandException(","lastModifiedDate":"2021-08-01"},{"lineNumber":119,"author":{"gitId":"-"},"content":" String.format(MESSAGE_ARGUMENTS, index.getOneBased(), remark));","lastModifiedDate":"2021-08-01"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2020-07-29"},{"lineNumber":124,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2020-07-29"},{"lineNumber":125,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2020-07-29"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":128,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2020-07-29"},{"lineNumber":129,"author":{"gitId":"-"},"content":" if (!(other instanceof RemarkCommand)) {","lastModifiedDate":"2020-07-29"},{"lineNumber":130,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2020-07-29"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":133,"author":{"gitId":"-"},"content":" RemarkCommand e \u003d (RemarkCommand) other;","lastModifiedDate":"2020-07-29"},{"lineNumber":134,"author":{"gitId":"-"},"content":" return index.equals(e.index)","lastModifiedDate":"2020-07-29"},{"lineNumber":135,"author":{"gitId":"-"},"content":" \u0026\u0026 remark.equals(e.remark);","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":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":140,"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":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":142,"author":{"gitId":"-"},"content":"### Parse user input","lastModifiedDate":"2020-07-29"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":144,"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":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":146,"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":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":148,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"../diagrams/add-remark/ParserClass.puml\" alt\u003d\"The relationship between Parser and RemarkCommandParser\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":150,"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":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":152,"author":{"gitId":"-"},"content":"**`ArgumentTokenizer.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":154,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":155,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":156,"author":{"gitId":"-"},"content":" * Tokenizes an arguments string and returns an {@code ArgumentMultimap}","lastModifiedDate":"2020-07-29"},{"lineNumber":157,"author":{"gitId":"-"},"content":" * object that maps prefixes to their respective argument values. Only the","lastModifiedDate":"2020-07-29"},{"lineNumber":158,"author":{"gitId":"-"},"content":" * given prefixes will be recognized in the arguments string.","lastModifiedDate":"2020-07-29"},{"lineNumber":159,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2020-07-29"},{"lineNumber":160,"author":{"gitId":"-"},"content":" * @param argsString Arguments string of the form:","lastModifiedDate":"2020-07-29"},{"lineNumber":161,"author":{"gitId":"-"},"content":" * {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2020-07-29"},{"lineNumber":162,"author":{"gitId":"-"},"content":" * @param prefixes Prefixes to tokenize the arguments string with","lastModifiedDate":"2020-07-29"},{"lineNumber":163,"author":{"gitId":"-"},"content":" * @return ArgumentMultimap object that maps prefixes to their","lastModifiedDate":"2020-07-29"},{"lineNumber":164,"author":{"gitId":"-"},"content":" * arguments","lastModifiedDate":"2020-07-29"},{"lineNumber":165,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":166,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":168,"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":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":170,"author":{"gitId":"-"},"content":"**`ArgumentMultimap.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":172,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":173,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":174,"author":{"gitId":"-"},"content":" * Returns the last value of {@code prefix}.","lastModifiedDate":"2020-07-29"},{"lineNumber":175,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":176,"author":{"gitId":"-"},"content":"public Optional\u003cString\u003e getValue(Prefix prefix) {","lastModifiedDate":"2020-07-29"},{"lineNumber":177,"author":{"gitId":"-"},"content":" List\u003cString\u003e values \u003d getAllValues(prefix);","lastModifiedDate":"2020-07-29"},{"lineNumber":178,"author":{"gitId":"-"},"content":" return values.isEmpty() ? Optional.empty() :","lastModifiedDate":"2020-07-29"},{"lineNumber":179,"author":{"gitId":"-"},"content":" Optional.of(values.get(values.size() - 1));","lastModifiedDate":"2020-07-29"},{"lineNumber":180,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":181,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":183,"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":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":185,"author":{"gitId":"-"},"content":"**`DeleteCommandParser.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":187,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":188,"author":{"gitId":"-"},"content":"Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2020-07-29"},{"lineNumber":189,"author":{"gitId":"-"},"content":"return new DeleteCommand(index);","lastModifiedDate":"2020-07-29"},{"lineNumber":190,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":192,"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":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":194,"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":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":196,"author":{"gitId":"-"},"content":"**`RemarkCommandParser.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":198,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":199,"author":{"gitId":"-"},"content":"public RemarkCommand parse(String args) throws ParseException {","lastModifiedDate":"2020-07-29"},{"lineNumber":200,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2020-07-29"},{"lineNumber":201,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args,","lastModifiedDate":"2020-07-29"},{"lineNumber":202,"author":{"gitId":"-"},"content":" PREFIX_REMARK);","lastModifiedDate":"2020-07-29"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":204,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2020-07-29"},{"lineNumber":205,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2020-07-29"},{"lineNumber":206,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2020-07-29"},{"lineNumber":207,"author":{"gitId":"-"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2020-07-29"},{"lineNumber":208,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2020-07-29"},{"lineNumber":209,"author":{"gitId":"-"},"content":" RemarkCommand.MESSAGE_USAGE), ive);","lastModifiedDate":"2020-07-29"},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":212,"author":{"gitId":"-"},"content":" String remark \u003d argMultimap.getValue(PREFIX_REMARK).orElse(\"\");","lastModifiedDate":"2020-07-29"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":214,"author":{"gitId":"-"},"content":" return new RemarkCommand(index, remark);","lastModifiedDate":"2020-07-29"},{"lineNumber":215,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":216,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":218,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":220,"author":{"gitId":"-"},"content":"Don’t forget to update `AddressBookParser` to use our new `RemarkCommandParser`!","lastModifiedDate":"2023-09-12"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":222,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":224,"author":{"gitId":"-"},"content":"If you are stuck, check out the sample","lastModifiedDate":"2020-07-29"},{"lineNumber":225,"author":{"gitId":"-"},"content":"[here](https://github.com/se-edu/addressbook-level3/commit/dc6d5139d08f6403da0ec624ea32bd79a2ae0cbf#diff-8bf239e8e9529369b577701303ddd96af93178b4ed6735f91c2d8488b20c6b4a).","lastModifiedDate":"2022-01-02"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":227,"author":{"gitId":"-"},"content":"## Add `Remark` to the model","lastModifiedDate":"2020-07-29"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":229,"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":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":231,"author":{"gitId":"-"},"content":"### Add a new `Remark` class","lastModifiedDate":"2020-07-29"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":233,"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":"2020-07-29"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":235,"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":236,"author":{"gitId":"-"},"content":"validation.","lastModifiedDate":"2020-07-29"},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":238,"author":{"gitId":"-"},"content":"### Make use of `Remark`","lastModifiedDate":"2020-07-29"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":240,"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":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":242,"author":{"gitId":"-"},"content":"## Add a placeholder element for remark to the UI","lastModifiedDate":"2020-07-29"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":244,"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":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":246,"author":{"gitId":"-"},"content":"Simply add the following to [`seedu.address.ui.PersonCard`](https://github.com/se-edu/addressbook-level3/commit/850b78879582f38accb05dd20c245963c65ea599#diff-639834f1e05afe2276a86372adf0fe5f69314642c2d93cfa543d614ce5a76688).","lastModifiedDate":"2022-01-02"},{"lineNumber":247,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":248,"author":{"gitId":"-"},"content":"**`PersonCard.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":250,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":251,"author":{"gitId":"-"},"content":"@FXML","lastModifiedDate":"2020-07-29"},{"lineNumber":252,"author":{"gitId":"-"},"content":"private Label remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":253,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":256,"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":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":258,"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":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":260,"author":{"gitId":"-"},"content":"**`PersonListCard.fxml`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":261,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":262,"author":{"gitId":"-"},"content":"``` xml","lastModifiedDate":"2020-07-29"},{"lineNumber":263,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"remark\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$remark\" /\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":264,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":266,"author":{"gitId":"-"},"content":"That’s it! Fire up the application again and you should see something like this:","lastModifiedDate":"2020-07-29"},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":268,"author":{"gitId":"-"},"content":"![$remark shows up in each entry](../images/add-remark/$Remark.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":269,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":270,"author":{"gitId":"-"},"content":"## Modify `Person` to support a `Remark` field","lastModifiedDate":"2020-07-29"},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":272,"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":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":274,"author":{"gitId":"-"},"content":"### Modify `Person`","lastModifiedDate":"2020-07-29"},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":276,"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":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":278,"author":{"gitId":"-"},"content":"### Update other usages of `Person`","lastModifiedDate":"2020-07-29"},{"lineNumber":279,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":280,"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":281,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":282,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":284,"author":{"gitId":"-"},"content":"Use the `Find Usages` feature in IntelliJ IDEA on the `Person` class to find these commands.","lastModifiedDate":"2023-09-12"},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":286,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":288,"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":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":291,"author":{"gitId":"-"},"content":"## Updating Storage","lastModifiedDate":"2020-07-29"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":293,"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":294,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":295,"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":296,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":297,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":298,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":299,"author":{"gitId":"drustanyjt"},"content":"You must delete AddressBook’s storage file located at `/data/clinicmate.json` before running it! Not doing so will cause AddressBook to default to an empty address book!","lastModifiedDate":"2024-03-18"},{"lineNumber":300,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":301,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":302,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":303,"author":{"gitId":"-"},"content":"Check out [this commit](https://github.com/se-edu/addressbook-level3/commit/556cbd0e03ff224d7a68afba171ad2eb0ce56bbf)","lastModifiedDate":"2020-07-29"},{"lineNumber":304,"author":{"gitId":"-"},"content":"to see what the changes entail.","lastModifiedDate":"2020-07-29"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":306,"author":{"gitId":"-"},"content":"## Finalizing the UI","lastModifiedDate":"2020-07-29"},{"lineNumber":307,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":308,"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":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":310,"author":{"gitId":"-"},"content":"Just add [this one line of code!](https://github.com/se-edu/addressbook-level3/commit/5b98fee11b6b3f5749b6b943c4f3bd3aa049b692)","lastModifiedDate":"2020-07-29"},{"lineNumber":311,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":312,"author":{"gitId":"-"},"content":"**`PersonCard.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":313,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":314,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":315,"author":{"gitId":"-"},"content":"public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2020-07-29"},{"lineNumber":316,"author":{"gitId":"-"},"content":" //...","lastModifiedDate":"2020-07-29"},{"lineNumber":317,"author":{"gitId":"-"},"content":" remark.setText(person.getRemark().value);","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":"","lastModifiedDate":"2020-07-29"},{"lineNumber":321,"author":{"gitId":"-"},"content":"![The remark label is bound properly!](../images/add-remark/RemarkBound.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":322,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":323,"author":{"gitId":"-"},"content":"## Putting everything together","lastModifiedDate":"2020-07-29"},{"lineNumber":324,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":325,"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":326,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":327,"author":{"gitId":"-"},"content":"### Update `RemarkCommand` and `RemarkCommandParser`","lastModifiedDate":"2020-07-29"},{"lineNumber":328,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":329,"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":330,"author":{"gitId":"-"},"content":"save it with `Model#setPerson()`.","lastModifiedDate":"2020-07-29"},{"lineNumber":331,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":332,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":333,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":334,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":335,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":336,"author":{"gitId":"-"},"content":" public static final String MESSAGE_ADD_REMARK_SUCCESS \u003d \"Added remark to Person: %1$s\";","lastModifiedDate":"2020-07-29"},{"lineNumber":337,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_REMARK_SUCCESS \u003d \"Removed remark from Person: %1$s\";","lastModifiedDate":"2020-07-29"},{"lineNumber":338,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":339,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":340,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":341,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2020-07-29"},{"lineNumber":342,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":343,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2020-07-29"},{"lineNumber":344,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2020-07-29"},{"lineNumber":345,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":346,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":347,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2020-07-29"},{"lineNumber":348,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new Person(","lastModifiedDate":"2021-08-01"},{"lineNumber":349,"author":{"gitId":"-"},"content":" personToEdit.getName(), personToEdit.getPhone(), personToEdit.getEmail(),","lastModifiedDate":"2021-08-01"},{"lineNumber":350,"author":{"gitId":"-"},"content":" personToEdit.getAddress(), remark, personToEdit.getTags());","lastModifiedDate":"2020-07-29"},{"lineNumber":351,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":352,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2020-07-29"},{"lineNumber":353,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2020-07-29"},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":355,"author":{"gitId":"-"},"content":" return new CommandResult(generateSuccessMessage(editedPerson));","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":" /**","lastModifiedDate":"2020-07-29"},{"lineNumber":359,"author":{"gitId":"-"},"content":" * Generates a command execution success message based on whether","lastModifiedDate":"2021-08-01"},{"lineNumber":360,"author":{"gitId":"-"},"content":" * the remark is added to or removed from","lastModifiedDate":"2021-08-01"},{"lineNumber":361,"author":{"gitId":"-"},"content":" * {@code personToEdit}.","lastModifiedDate":"2020-07-29"},{"lineNumber":362,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":363,"author":{"gitId":"-"},"content":" private String generateSuccessMessage(Person personToEdit) {","lastModifiedDate":"2020-07-29"},{"lineNumber":364,"author":{"gitId":"-"},"content":" String message \u003d !remark.value.isEmpty() ? MESSAGE_ADD_REMARK_SUCCESS : MESSAGE_DELETE_REMARK_SUCCESS;","lastModifiedDate":"2020-07-29"},{"lineNumber":365,"author":{"gitId":"-"},"content":" return String.format(message, personToEdit);","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":"","lastModifiedDate":"2020-07-29"},{"lineNumber":369,"author":{"gitId":"-"},"content":"![Congratulations!](../images/add-remark/RemarkComplete.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":370,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":371,"author":{"gitId":"-"},"content":"## Writing tests","lastModifiedDate":"2020-07-29"},{"lineNumber":372,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":373,"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":374,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":375,"author":{"gitId":"-"},"content":"Let’s verify the correctness of our code by writing some tests!","lastModifiedDate":"2020-07-29"},{"lineNumber":376,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":377,"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":378,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-01"},{"lineNumber":379,"author":{"gitId":"-"},"content":"### Automatically generating tests","lastModifiedDate":"2020-07-29"},{"lineNumber":380,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":381,"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":382,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":383,"author":{"gitId":"-"},"content":"The convention for test names is `methodName_testScenario_expectedResult`. An example would be","lastModifiedDate":"2020-07-29"},{"lineNumber":384,"author":{"gitId":"-"},"content":"`execute_filteredList_success`.","lastModifiedDate":"2020-07-29"},{"lineNumber":385,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":386,"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":387,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":388,"author":{"gitId":"-"},"content":"![Using the context menu to jump to tests](../images/add-remark/ContextMenu.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":389,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":390,"author":{"gitId":"-"},"content":"Then, create a test for the `execute` method.","lastModifiedDate":"2020-07-29"},{"lineNumber":391,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":392,"author":{"gitId":"-"},"content":"![Creating a test for `execute`.](../images/add-remark/CreateTest.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":393,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":394,"author":{"gitId":"-"},"content":"Following convention, let’s change the name of the generated method to `execute_addRemarkUnfilteredList_success`.","lastModifiedDate":"2020-07-29"},{"lineNumber":395,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":396,"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":397,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":398,"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":399,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":400,"author":{"gitId":"-"},"content":"## Conclusion","lastModifiedDate":"2020-07-29"},{"lineNumber":401,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":402,"author":{"gitId":"-"},"content":"This concludes the tutorial for adding a new `Command` to AddressBook.","lastModifiedDate":"2020-07-29"}],"authorContributionMap":{"drustanyjt":1,"-":401}},{"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":"tengcharmaine"},"content":" public static final String MESSAGE_INVALID_PERSON \u003d \"The ic number provided is invalid\";","lastModifiedDate":"2024-03-16"},{"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":"jiahui0309"},"content":" public static final String MESSAGE_NO_MATCHING_IC \u003d \"There is nobody with the IC you specified.\";","lastModifiedDate":"2024-03-16"},{"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(\"; Address: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"drustanyjt"},"content":" .append(\"; Email: \")","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"drustanyjt"},"content":" .append(person.getEmail())","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"drustanyjt"},"content":" .append(\"; Identity Card Number: \")","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"drustanyjt"},"content":" .append(person.getIdentityCardNumber())","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"drustanyjt"},"content":" .append(\"; Age: \")","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"drustanyjt"},"content":" .append(person.getAge())","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"drustanyjt"},"content":" .append(\"; Sex: \")","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"drustanyjt"},"content":" .append(person.getSex())","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"drustanyjt"},"content":" .append(\"; Note: \")","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"drustanyjt"},"content":" .append(person.getNote())","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" person.getTags().forEach(builder::append);","lastModifiedDate":"2019-02-23"},{"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":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"drustanyjt":10,"tengcharmaine":1,"-":49,"jiahui0309":1}},{"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":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AGE;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_IC_NUMBER;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SEX;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-17"},{"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":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-01-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-08-24"},{"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":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a person to the address book. \"","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09"},{"lineNumber":31,"author":{"gitId":"Jayne1010"},"content":" + PREFIX_IC_NUMBER + \"IC_NUMBER \"","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"Jayne1010"},"content":" + PREFIX_AGE + \"AGE \"","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"Jayne1010"},"content":" + PREFIX_SEX + \"SEX \"","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"Jayne1010"},"content":" + PREFIX_ADDRESS + \" \"","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09"},{"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":"Jayne1010"},"content":" + PREFIX_PHONE + \"12345678 \"","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"Jayne1010"},"content":" + PREFIX_EMAIL + \"JohnDoe@mail.com \"","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"Jayne1010"},"content":" + PREFIX_IC_NUMBER + \"T0123456A \"","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"Jayne1010"},"content":" + PREFIX_AGE + \"12 \"","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"Jayne1010"},"content":" + PREFIX_SEX + \"M \"","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"Jayne1010"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \";","lastModifiedDate":"2024-03-17"},{"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":{"Jayne1010":13,"-":78}},{"path":"src/main/java/seedu/address/logic/commands/AddNoteCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"tengcharmaine"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"tengcharmaine"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"tengcharmaine"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_IC;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"tengcharmaine"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NOTE;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"tengcharmaine"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"tengcharmaine"},"content":"import java.util.List;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.model.person.IdentityCardNumberMatchesPredicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.model.person.Note;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"tengcharmaine"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"tengcharmaine"},"content":" * Changes the note of an existing person in the address book.","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"tengcharmaine"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"tengcharmaine"},"content":"public class AddNoteCommand extends Command {","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"tengcharmaine"},"content":" public static final String COMMAND_WORD \u003d \"addnote\";","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"tengcharmaine"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the note of the person whose profile matches \"","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"tengcharmaine"},"content":" + \"the specified IC (case-insensitive). \"","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"tengcharmaine"},"content":" + \"Existing remark will be appended by default. \"","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"tengcharmaine"},"content":" + \"To replace the original note, add -replace at the end of your command. \"","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"tengcharmaine"},"content":" + \"E.g. addnote i/S0123456Q n/Diabetes -replace\\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"tengcharmaine"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"tengcharmaine"},"content":" + PREFIX_IC + \"IC \"","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"tengcharmaine"},"content":" + PREFIX_NOTE + \"NOTE \\n\"","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"tengcharmaine"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"tengcharmaine"},"content":" + PREFIX_IC + \"S0123456Q \"","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"tengcharmaine"},"content":" + PREFIX_NOTE + \"Diabetes\";","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"tengcharmaine"},"content":" public static final String MESSAGE_MODIFY_NOTE_SUCCESS \u003d \"Note for %1$s (ic: %2$s) modified successfully!\";","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"tengcharmaine"},"content":" private final IdentityCardNumberMatchesPredicate icPredicate;","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"tengcharmaine"},"content":" private final Note note;","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"tengcharmaine"},"content":" private final boolean isReplace;","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"tengcharmaine"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"tengcharmaine"},"content":" * @param icPredicate of the person in the filtered person list to edit the note","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"tengcharmaine"},"content":" * @param note of the person to be updated to","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"tengcharmaine"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"tengcharmaine"},"content":" public AddNoteCommand(IdentityCardNumberMatchesPredicate icPredicate, Note note, boolean isReplace) {","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"tengcharmaine"},"content":" requireAllNonNull(icPredicate, note);","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"tengcharmaine"},"content":" this.icPredicate \u003d icPredicate;","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"tengcharmaine"},"content":" this.note \u003d note;","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"tengcharmaine"},"content":" this.isReplace \u003d isReplace;","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"tengcharmaine"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"tengcharmaine"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"tengcharmaine"},"content":" model.updateFilteredPersonList(icPredicate);","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"tengcharmaine"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"tengcharmaine"},"content":" if (lastShownList.isEmpty()) {","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"tengcharmaine"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON);","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"tengcharmaine"},"content":" Person personToEdit \u003d lastShownList.get(0);","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"tengcharmaine"},"content":" Person editedPerson;","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"tengcharmaine"},"content":" if (isReplace || personToEdit.getNote().equals(Note.DEFAULT)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"tengcharmaine"},"content":" editedPerson \u003d new Person(personToEdit.getName(), personToEdit.getPhone(), personToEdit.getEmail(),","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"tengcharmaine"},"content":" personToEdit.getIdentityCardNumber(), personToEdit.getAge(), personToEdit.getSex(),","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"tengcharmaine"},"content":" personToEdit.getAddress(), note, personToEdit.getTags());","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"tengcharmaine"},"content":" } else {","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"tengcharmaine"},"content":" Note updatedNote \u003d personToEdit.getNote().append(\"\\n\" + note.toString());","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"tengcharmaine"},"content":" editedPerson \u003d new Person(personToEdit.getName(), personToEdit.getPhone(), personToEdit.getEmail(),","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"tengcharmaine"},"content":" personToEdit.getIdentityCardNumber(), personToEdit.getAge(), personToEdit.getSex(),","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"tengcharmaine"},"content":" personToEdit.getAddress(), updatedNote, personToEdit.getTags());","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"tengcharmaine"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"tengcharmaine"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"tengcharmaine"},"content":" return new CommandResult(generateSuccessMessage(editedPerson));","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"tengcharmaine"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"tengcharmaine"},"content":" * Generates a command execution success message based on whether the remark is added to or removed from","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"tengcharmaine"},"content":" * {@code personToEdit}.","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"tengcharmaine"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"tengcharmaine"},"content":" public String generateSuccessMessage(Person personToEdit) {","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"tengcharmaine"},"content":" return String.format(MESSAGE_MODIFY_NOTE_SUCCESS, personToEdit.getName(),","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"tengcharmaine"},"content":" personToEdit.getIdentityCardNumber());","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":90,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":91,"author":{"gitId":"tengcharmaine"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":92,"author":{"gitId":"tengcharmaine"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-16"},{"lineNumber":93,"author":{"gitId":"tengcharmaine"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-16"},{"lineNumber":94,"author":{"gitId":"tengcharmaine"},"content":" return true;","lastModifiedDate":"2024-03-16"},{"lineNumber":95,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":96,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":97,"author":{"gitId":"tengcharmaine"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-16"},{"lineNumber":98,"author":{"gitId":"tengcharmaine"},"content":" if (!(other instanceof AddNoteCommand)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":99,"author":{"gitId":"tengcharmaine"},"content":" return false;","lastModifiedDate":"2024-03-16"},{"lineNumber":100,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":101,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":102,"author":{"gitId":"tengcharmaine"},"content":" AddNoteCommand e \u003d (AddNoteCommand) other;","lastModifiedDate":"2024-03-16"},{"lineNumber":103,"author":{"gitId":"tengcharmaine"},"content":" return icPredicate.equals(e.icPredicate)","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"tengcharmaine"},"content":" \u0026\u0026 note.equals(e.note)","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"tengcharmaine"},"content":" \u0026\u0026 isReplace \u003d\u003d e.isReplace;","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":107,"author":{"gitId":"tengcharmaine"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"tengcharmaine":107}},{"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.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"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":"jiahui0309"},"content":"import seedu.address.model.person.IdentityCardNumberMatchesPredicate;","lastModifiedDate":"2024-03-16"},{"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":"jiahui0309"},"content":" * Deletes a person identified using it\u0027s displayed identity card number from the address book.","lastModifiedDate":"2024-03-16"},{"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":"jiahui0309"},"content":" + \": Deletes the person identified by the identity card number used in the displayed person list.\\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"jiahui0309"},"content":" + \"Parameters: IC (must be a valid identity card number)\\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"jiahui0309"},"content":" + \"Example: \" + COMMAND_WORD + \" S1234567A\";","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Person: %1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"jiahui0309"},"content":" private final IdentityCardNumberMatchesPredicate predicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"jiahui0309"},"content":" public DeleteCommand(IdentityCardNumberMatchesPredicate predicate) {","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"jiahui0309"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2024-03-16"},{"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":"jiahui0309"},"content":" List\u003cPerson\u003e allPatients \u003d model.getAddressBook().getPersonList();","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":39,"author":{"gitId":"jiahui0309"},"content":" Person personToDelete \u003d allPatients.stream()","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"jiahui0309"},"content":" .filter(predicate::test)","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"jiahui0309"},"content":" .findFirst()","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"jiahui0309"},"content":" .orElseThrow(() -\u003e new CommandException(Messages.MESSAGE_NO_MATCHING_IC));","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","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":"jiahui0309"},"content":" return predicate.equals(otherDeleteCommand.predicate);","lastModifiedDate":"2024-03-16"},{"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":"jiahui0309"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2024-03-16"},{"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":{"-":54,"jiahui0309":15}},{"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":"Jayne1010"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AGE;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":7,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_IC_NUMBER;","lastModifiedDate":"2024-03-21"},{"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":"Jayne1010"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SEX;","lastModifiedDate":"2024-03-21"},{"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.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":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.Age;","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.IdentityCardNumberMatchesPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.Sex;","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":39,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the person identified \"","lastModifiedDate":"2016-12-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26"},{"lineNumber":46,"author":{"gitId":"Jayne1010"},"content":" + \"Parameters: IC (National Registration Identity Card) \"","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06"},{"lineNumber":48,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":50,"author":{"gitId":"Jayne1010"},"content":" + \"[\" + PREFIX_IC_NUMBER + \"IC] \"","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"Jayne1010"},"content":" + \"[\" + PREFIX_AGE + \"AGE] \"","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"Jayne1010"},"content":" + \"[\" + PREFIX_SEX + \"SEX] \"","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":54,"author":{"gitId":"Jayne1010"},"content":" + \"Example: \" + COMMAND_WORD + \" T0123456A \"","lastModifiedDate":"2024-03-21"},{"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":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26"},{"lineNumber":62,"author":{"gitId":"Jayne1010"},"content":" private final IdentityCardNumberMatchesPredicate predicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":65,"author":{"gitId":"Jayne1010"},"content":" * @param predicate of the person in the filtered person list to edit","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":68,"author":{"gitId":"Jayne1010"},"content":" public EditCommand(IdentityCardNumberMatchesPredicate predicate, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"Jayne1010"},"content":" requireNonNull(predicate);","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":72,"author":{"gitId":"Jayne1010"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2024-03-21"},{"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":"Jayne1010"},"content":" List\u003cPerson\u003e allPatients \u003d model.getAddressBook().getPersonList();","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":81,"author":{"gitId":"Jayne1010"},"content":" Person personToEdit \u003d allPatients.stream()","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"Jayne1010"},"content":" .filter(predicate::test)","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"Jayne1010"},"content":" .findFirst()","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"Jayne1010"},"content":" .orElseThrow(() -\u003e new CommandException(Messages.MESSAGE_NO_MATCHING_IC));","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":89,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":92,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":93,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":94,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":97,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26"},{"lineNumber":100,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":101,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":104,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":107,"author":{"gitId":"Jayne1010"},"content":" IdentityCardNumber updatedIC \u003d editPersonDescriptor.getIC().orElse(personToEdit.getIdentityCardNumber());","lastModifiedDate":"2024-03-21"},{"lineNumber":108,"author":{"gitId":"Jayne1010"},"content":" Age updatedAge \u003d editPersonDescriptor.getAge().orElse(personToEdit.getAge());","lastModifiedDate":"2024-03-21"},{"lineNumber":109,"author":{"gitId":"Jayne1010"},"content":" Sex updatedSex \u003d editPersonDescriptor.getSex().orElse(personToEdit.getSex());","lastModifiedDate":"2024-03-21"},{"lineNumber":110,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2017-06-21"},{"lineNumber":111,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2017-06-21"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":113,"author":{"gitId":"drustanyjt"},"content":" // Use the same person for existing fields, but copies the object for every thing else","lastModifiedDate":"2024-03-16"},{"lineNumber":114,"author":{"gitId":"drustanyjt"},"content":" // TODO: change this when the command is updated","lastModifiedDate":"2024-03-16"},{"lineNumber":115,"author":{"gitId":"Jayne1010"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedIC,","lastModifiedDate":"2024-03-21"},{"lineNumber":116,"author":{"gitId":"Jayne1010"},"content":" updatedAge, updatedSex, updatedAddress, personToEdit.getNote(), updatedTags);","lastModifiedDate":"2024-03-21"},{"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":"Jayne1010"},"content":" return predicate.equals(otherEditCommand.predicate)","lastModifiedDate":"2024-03-21"},{"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":"Jayne1010"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2024-03-21"},{"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":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21"},{"lineNumber":152,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21"},{"lineNumber":153,"author":{"gitId":"Jayne1010"},"content":" private IdentityCardNumber ic;","lastModifiedDate":"2024-03-21"},{"lineNumber":154,"author":{"gitId":"Jayne1010"},"content":" private Age age;","lastModifiedDate":"2024-03-21"},{"lineNumber":155,"author":{"gitId":"Jayne1010"},"content":" private Sex sex;","lastModifiedDate":"2024-03-21"},{"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":"-"},"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":"Jayne1010"},"content":" setIC(toCopy.ic);","lastModifiedDate":"2024-03-21"},{"lineNumber":167,"author":{"gitId":"Jayne1010"},"content":" setAge(toCopy.age);","lastModifiedDate":"2024-03-21"},{"lineNumber":168,"author":{"gitId":"Jayne1010"},"content":" setSex(toCopy.sex);","lastModifiedDate":"2024-03-21"},{"lineNumber":169,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15"},{"lineNumber":170,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11"},{"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":"2016-12-26"},{"lineNumber":176,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26"},{"lineNumber":177,"author":{"gitId":"Jayne1010"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, ic, sex, age, address, tags);","lastModifiedDate":"2024-03-21"},{"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":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21"},{"lineNumber":189,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","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 Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26"},{"lineNumber":193,"author":{"gitId":"-"},"content":" return Optional.ofNullable(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 void setEmail(Email email) {","lastModifiedDate":"2017-06-21"},{"lineNumber":197,"author":{"gitId":"-"},"content":" this.email \u003d email;","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 Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":201,"author":{"gitId":"-"},"content":" return Optional.ofNullable(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 void setAddress(Address address) {","lastModifiedDate":"2017-06-21"},{"lineNumber":205,"author":{"gitId":"-"},"content":" this.address \u003d address;","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\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26"},{"lineNumber":209,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21"},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":211,"author":{"gitId":"Jayne1010"},"content":" public void setIC(IdentityCardNumber ic) {","lastModifiedDate":"2024-03-21"},{"lineNumber":212,"author":{"gitId":"Jayne1010"},"content":" this.ic \u003d ic;","lastModifiedDate":"2024-03-21"},{"lineNumber":213,"author":{"gitId":"Jayne1010"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":214,"author":{"gitId":"Jayne1010"},"content":" public Optional\u003cIdentityCardNumber\u003e getIC() {","lastModifiedDate":"2024-03-21"},{"lineNumber":215,"author":{"gitId":"Jayne1010"},"content":" return Optional.ofNullable(ic);","lastModifiedDate":"2024-03-21"},{"lineNumber":216,"author":{"gitId":"Jayne1010"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":217,"author":{"gitId":"Jayne1010"},"content":" public void setAge(Age age) {","lastModifiedDate":"2024-03-21"},{"lineNumber":218,"author":{"gitId":"Jayne1010"},"content":" this.age \u003d age;","lastModifiedDate":"2024-03-21"},{"lineNumber":219,"author":{"gitId":"Jayne1010"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":220,"author":{"gitId":"Jayne1010"},"content":" public Optional\u003cAge\u003e getAge() {","lastModifiedDate":"2024-03-21"},{"lineNumber":221,"author":{"gitId":"Jayne1010"},"content":" return Optional.ofNullable(age);","lastModifiedDate":"2024-03-21"},{"lineNumber":222,"author":{"gitId":"Jayne1010"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":223,"author":{"gitId":"Jayne1010"},"content":" public void setSex(Sex sex) {","lastModifiedDate":"2024-03-21"},{"lineNumber":224,"author":{"gitId":"Jayne1010"},"content":" this.sex \u003d sex;","lastModifiedDate":"2024-03-21"},{"lineNumber":225,"author":{"gitId":"Jayne1010"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":226,"author":{"gitId":"Jayne1010"},"content":" public Optional\u003cSex\u003e getSex() {","lastModifiedDate":"2024-03-21"},{"lineNumber":227,"author":{"gitId":"Jayne1010"},"content":" return Optional.ofNullable(sex);","lastModifiedDate":"2024-03-21"},{"lineNumber":228,"author":{"gitId":"Jayne1010"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":230,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":231,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11"},{"lineNumber":232,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":233,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":234,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21"},{"lineNumber":235,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11"},{"lineNumber":236,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":238,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":239,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11"},{"lineNumber":240,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11"},{"lineNumber":241,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11"},{"lineNumber":242,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":243,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":244,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11"},{"lineNumber":245,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":247,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":248,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":249,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":250,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":251,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":252,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":253,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":254,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05"},{"lineNumber":255,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":256,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":258,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":259,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":260,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":261,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":262,"author":{"gitId":"Jayne1010"},"content":" \u0026\u0026 Objects.equals(ic, otherEditPersonDescriptor.ic)","lastModifiedDate":"2024-03-21"},{"lineNumber":263,"author":{"gitId":"Jayne1010"},"content":" \u0026\u0026 Objects.equals(age, otherEditPersonDescriptor.age)","lastModifiedDate":"2024-03-21"},{"lineNumber":264,"author":{"gitId":"Jayne1010"},"content":" \u0026\u0026 Objects.equals(sex, otherEditPersonDescriptor.sex)","lastModifiedDate":"2024-03-21"},{"lineNumber":265,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":266,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags);","lastModifiedDate":"2023-07-13"},{"lineNumber":267,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":270,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":275,"author":{"gitId":"Jayne1010"},"content":" .add(\"ic\", ic)","lastModifiedDate":"2024-03-21"},{"lineNumber":276,"author":{"gitId":"Jayne1010"},"content":" .add(\"age\", age)","lastModifiedDate":"2024-03-21"},{"lineNumber":277,"author":{"gitId":"Jayne1010"},"content":" .add(\"sex\", sex)","lastModifiedDate":"2024-03-21"},{"lineNumber":278,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":279,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":280,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":281,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":282,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":283,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"Jayne1010":60,"drustanyjt":2,"-":221}},{"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":"jiahui0309"},"content":"import seedu.address.model.person.IdentityCardNumberMatchesPredicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22"},{"lineNumber":11,"author":{"gitId":"jiahui0309"},"content":" * Finds and lists all persons in address book whose IC matches the argument IC.","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"jiahui0309"},"content":" * Keyword matching is case-insensitive.","lastModifiedDate":"2024-03-16"},{"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":"jiahui0309"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all persons whose profile matches \"","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"jiahui0309"},"content":" + \"the specified IC (case-insensitive) and displays them.\\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"jiahui0309"},"content":" + \"Parameters: IC\\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"jiahui0309"},"content":" + \"Example: \" + COMMAND_WORD + \" t1234567A\";","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":23,"author":{"gitId":"jiahui0309"},"content":" private final IdentityCardNumberMatchesPredicate predicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":25,"author":{"gitId":"jiahui0309"},"content":" public FindCommand(IdentityCardNumberMatchesPredicate predicate) {","lastModifiedDate":"2024-03-16"},{"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":{"-":49,"jiahui0309":9}},{"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":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AGE;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_IC_NUMBER;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SEX;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"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":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.Age;","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.Note;","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.Sex;","lastModifiedDate":"2024-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":"Jayne1010"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"Jayne1010"},"content":" PREFIX_IC_NUMBER, PREFIX_AGE, PREFIX_SEX, PREFIX_ADDRESS);","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":44,"author":{"gitId":"Jayne1010"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"Jayne1010"},"content":" PREFIX_IC_NUMBER, PREFIX_AGE, PREFIX_SEX, PREFIX_ADDRESS)","lastModifiedDate":"2024-03-17"},{"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":"Jayne1010"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"Jayne1010"},"content":" PREFIX_IC_NUMBER, PREFIX_AGE, PREFIX_SEX, PREFIX_ADDRESS);","lastModifiedDate":"2024-03-17"},{"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":"Jayne1010"},"content":" IdentityCardNumber ic \u003d ParserUtil.parseIC(argMultimap.getValue(PREFIX_IC_NUMBER).get());","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"Jayne1010"},"content":" Sex sex \u003d ParserUtil.parseSex(argMultimap.getValue(PREFIX_SEX).get());","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":58,"author":{"gitId":"Jayne1010"},"content":" Age age \u003d ParserUtil.parseAge(argMultimap.getValue(PREFIX_AGE).get());","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":61,"author":{"gitId":"drustanyjt"},"content":" // Use the same add person, but create a DEFAULT object for every thing else","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"drustanyjt"},"content":" // TODO: change this when the command is updated","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"Jayne1010"},"content":" Person person \u003d new Person(name, phone, email, ic, age, sex,","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"drustanyjt"},"content":" address, Note.DEFAULT, tagList);","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17"},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":73,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"Jayne1010":17,"drustanyjt":3,"-":57}},{"path":"src/main/java/seedu/address/logic/parser/AddNoteCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"tengcharmaine"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"tengcharmaine"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"tengcharmaine"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"tengcharmaine"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FLAG;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"tengcharmaine"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_IC;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"tengcharmaine"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NOTE;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"tengcharmaine"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.logic.commands.AddNoteCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.model.person.IdentityCardNumberMatchesPredicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.model.person.Note;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"tengcharmaine"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"tengcharmaine"},"content":" * Parses input arguments and creates a new {@code AddNoteCommand} object","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"tengcharmaine"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"tengcharmaine"},"content":"public class AddNoteCommandParser implements Parser\u003cAddNoteCommand\u003e {","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"tengcharmaine"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"tengcharmaine"},"content":" * Parses the given {@code String} of arguments in the context of the {@code AddNoteCommand}","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"tengcharmaine"},"content":" * and returns a {@code AddNoteCommand} object for execution.","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"tengcharmaine"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"tengcharmaine"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"tengcharmaine"},"content":" public AddNoteCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"tengcharmaine"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"tengcharmaine"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_IC, PREFIX_NOTE, PREFIX_FLAG);","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"tengcharmaine"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_IC, PREFIX_NOTE)","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"tengcharmaine"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"tengcharmaine"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddNoteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"tengcharmaine"},"content":" IdentityCardNumber ic;","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"tengcharmaine"},"content":" try {","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"tengcharmaine"},"content":" String note \u003d \"\";","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"tengcharmaine"},"content":" boolean isReplace \u003d false;","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"tengcharmaine"},"content":" if (argMultimap.getValue(PREFIX_FLAG).isPresent()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"tengcharmaine"},"content":" int startIndex \u003d args.indexOf(PREFIX_NOTE.getPrefix()) + PREFIX_NOTE.getPrefix().length();","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"tengcharmaine"},"content":" int endIndex \u003d args.indexOf(PREFIX_FLAG.getPrefix());","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"tengcharmaine"},"content":" note \u003d args.substring(startIndex, endIndex).trim();","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"tengcharmaine"},"content":" isReplace \u003d true;","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"tengcharmaine"},"content":" } else {","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"tengcharmaine"},"content":" note \u003d argMultimap.getValue(PREFIX_NOTE).orElse(\"\");","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"tengcharmaine"},"content":" ic \u003d ParserUtil.parseIC(argMultimap.getValue(PREFIX_IC).get());","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"tengcharmaine"},"content":" return new AddNoteCommand(new IdentityCardNumberMatchesPredicate(ic), new Note(note), isReplace);","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"tengcharmaine"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"tengcharmaine"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddNoteCommand.MESSAGE_USAGE), ive);","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"tengcharmaine"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"tengcharmaine"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"tengcharmaine"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"tengcharmaine"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"tengcharmaine"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"tengcharmaine"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"tengcharmaine"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"tengcharmaine":64}},{"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":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.logic.commands.AddNoteCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24"},{"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":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":50,"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":51,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":72,"author":{"gitId":"tengcharmaine"},"content":" case AddNoteCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"tengcharmaine"},"content":" return new AddNoteCommandParser().parse(arguments);","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26"},{"lineNumber":85,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29"},{"lineNumber":86,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11"},{"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":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"tengcharmaine":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":"Jayne1010"},"content":" public static final Prefix PREFIX_IC_NUMBER \u003d new Prefix(\"i/\");","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"Jayne1010"},"content":" public static final Prefix PREFIX_AGE \u003d new Prefix(\"ag/\");","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"Jayne1010"},"content":" public static final Prefix PREFIX_SEX \u003d new Prefix(\"s/\");","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":14,"author":{"gitId":"Jayne1010"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"Jayne1010"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":17,"author":{"gitId":"tengcharmaine"},"content":" public static final Prefix PREFIX_NOTE \u003d new Prefix(\"n/\");","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"tengcharmaine"},"content":" public static final Prefix PREFIX_IC \u003d new Prefix(\"i/\");","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"tengcharmaine"},"content":" public static final Prefix PREFIX_FLAG \u003d new Prefix(\"-replace\");","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"Jayne1010":5,"tengcharmaine":3,"-":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":"2017-01-26"},{"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":"jiahui0309"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"jiahui0309"},"content":"import seedu.address.model.person.IdentityCardNumberMatchesPredicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new DeleteCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class DeleteCommandParser implements Parser\u003cDeleteCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * and returns a DeleteCommand object for execution.","lastModifiedDate":"2019-05-11"},{"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":"jiahui0309"},"content":" IdentityCardNumber ic \u003d ParserUtil.parseIC(args);","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"jiahui0309"},"content":" return new DeleteCommand(new IdentityCardNumberMatchesPredicate(ic));","lastModifiedDate":"2024-03-16"},{"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"},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"-":26,"jiahui0309":4}},{"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":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AGE;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_IC_NUMBER;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SEX;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26"},{"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":"Jayne1010"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.IdentityCardNumberMatchesPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"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":"2017-01-26"},{"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":"2017-01-26"},{"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":"Jayne1010"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_IC_NUMBER,","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"Jayne1010"},"content":" PREFIX_AGE, PREFIX_SEX, PREFIX_ADDRESS);","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"Jayne1010"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"Jayne1010"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"Jayne1010"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"Jayne1010"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":46,"author":{"gitId":"Jayne1010"},"content":" IdentityCardNumber ic \u003d ParserUtil.parseIC(argMultimap.getPreamble());","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":48,"author":{"gitId":"Jayne1010"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_IC_NUMBER,","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"Jayne1010"},"content":" PREFIX_AGE, PREFIX_SEX, PREFIX_ADDRESS);","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":51,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-01-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":53,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":" editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":59,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":60,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":62,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":63,"author":{"gitId":"-"},"content":" editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":65,"author":{"gitId":"Jayne1010"},"content":" if (argMultimap.getValue(PREFIX_IC_NUMBER).isPresent()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"Jayne1010"},"content":" editPersonDescriptor.setIC(ParserUtil.parseIC(argMultimap.getValue(PREFIX_IC_NUMBER).get()));","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"Jayne1010"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"Jayne1010"},"content":" if (argMultimap.getValue(PREFIX_SEX).isPresent()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"Jayne1010"},"content":" editPersonDescriptor.setSex(ParserUtil.parseSex(argMultimap.getValue(PREFIX_SEX).get()));","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"Jayne1010"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"Jayne1010"},"content":" if (argMultimap.getValue(PREFIX_AGE).isPresent()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"Jayne1010"},"content":" editPersonDescriptor.setAge(ParserUtil.parseAge(argMultimap.getValue(PREFIX_AGE).get()));","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"Jayne1010"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPersonDescriptor::setTags);","lastModifiedDate":"2017-06-21"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":79,"author":{"gitId":"Jayne1010"},"content":" try {","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"Jayne1010"},"content":" return new EditCommand(new IdentityCardNumberMatchesPredicate(ic), editPersonDescriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"Jayne1010"},"content":" } catch (IllegalArgumentException pe) {","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"Jayne1010"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"Jayne1010"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"Jayne1010"},"content":" }","lastModifiedDate":"2024-03-21"},{"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":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e} if {@code tags} is non-empty.","lastModifiedDate":"2017-03-07"},{"lineNumber":89,"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":90,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07"},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":92,"author":{"gitId":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":95,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":96,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":98,"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":99,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":102,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"Jayne1010":29,"-":73}},{"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 seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":7,"author":{"gitId":"jiahui0309"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"jiahui0309"},"content":"import seedu.address.model.person.IdentityCardNumberMatchesPredicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new FindCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class FindCommandParser implements Parser\u003cFindCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the FindCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * and returns a FindCommand object for execution.","lastModifiedDate":"2019-05-11"},{"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 FindCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2017-02-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2017-02-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-01-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":27,"author":{"gitId":"jiahui0309"},"content":" try {","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"jiahui0309"},"content":" IdentityCardNumber ic \u003d ParserUtil.parseIC(trimmedArgs);","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"jiahui0309"},"content":" return new FindCommand(new IdentityCardNumberMatchesPredicate(ic));","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"jiahui0309"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"jiahui0309"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"jiahui0309"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE), e);","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"jiahui0309"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"-":26,"jiahui0309":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":"-"},"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":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.Age;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.Sex;","lastModifiedDate":"2024-03-17"},{"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":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18"},{"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":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":59,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30"},{"lineNumber":64,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":65,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":71,"author":{"gitId":"jiahui0309"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"jiahui0309"},"content":" * Parses a {@code String identityCardNumber} into a {@code IdentityCardNumber}.","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"jiahui0309"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"jiahui0309"},"content":" *","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"jiahui0309"},"content":" * @throws ParseException if the given {@code identityCardNumber} is invalid.","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"jiahui0309"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"jiahui0309"},"content":" public static IdentityCardNumber parseIC(String identityCardNumber) throws ParseException {","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"jiahui0309"},"content":" requireNonNull(identityCardNumber);","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"jiahui0309"},"content":" String trimmedIdentityCardNumber \u003d identityCardNumber.trim();","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"jiahui0309"},"content":" if (!IdentityCardNumber.isValidIdentityCardNumber(trimmedIdentityCardNumber)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"jiahui0309"},"content":" throw new ParseException(IdentityCardNumber.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"jiahui0309"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"jiahui0309"},"content":" return new IdentityCardNumber(trimmedIdentityCardNumber);","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"jiahui0309"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":89,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":93,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30"},{"lineNumber":94,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":95,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":96,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":98,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","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":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":104,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":108,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":109,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":110,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":111,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":113,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","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":"Jayne1010"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"Jayne1010"},"content":" * Parses a {@code String sex} into an {@code Sex}.","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"Jayne1010"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"Jayne1010"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"Jayne1010"},"content":" * @throws ParseException if the given {@code sex} is invalid.","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"Jayne1010"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"Jayne1010"},"content":" public static Sex parseSex(String sex) throws ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"Jayne1010"},"content":" requireNonNull(sex);","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"Jayne1010"},"content":" String trimmedSex \u003d sex.trim();","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"Jayne1010"},"content":" if (!Sex.isValidSex(trimmedSex)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"Jayne1010"},"content":" throw new ParseException(Sex.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"Jayne1010"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"Jayne1010"},"content":" return new Sex(trimmedSex);","lastModifiedDate":"2024-03-17"},{"lineNumber":129,"author":{"gitId":"Jayne1010"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":130,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"Jayne1010"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"Jayne1010"},"content":" * Parses a {@code String age} into an {@code Age}.","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"Jayne1010"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"Jayne1010"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":135,"author":{"gitId":"Jayne1010"},"content":" * @throws ParseException if the given {@code age} is invalid.","lastModifiedDate":"2024-03-17"},{"lineNumber":136,"author":{"gitId":"Jayne1010"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"Jayne1010"},"content":" public static Age parseAge(String age) throws ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":138,"author":{"gitId":"Jayne1010"},"content":" requireNonNull(age);","lastModifiedDate":"2024-03-17"},{"lineNumber":139,"author":{"gitId":"Jayne1010"},"content":" String trimmedAge \u003d age.trim();","lastModifiedDate":"2024-03-17"},{"lineNumber":140,"author":{"gitId":"Jayne1010"},"content":" if (!Age.isValidAge(trimmedAge)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":141,"author":{"gitId":"Jayne1010"},"content":" throw new ParseException(Age.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"Jayne1010"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":143,"author":{"gitId":"Jayne1010"},"content":" return new Age(trimmedAge);","lastModifiedDate":"2024-03-17"},{"lineNumber":144,"author":{"gitId":"Jayne1010"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":145,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":147,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":148,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":149,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":150,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":151,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":152,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":153,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30"},{"lineNumber":154,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":155,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":156,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":158,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"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":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"Jayne1010":33,"-":124,"jiahui0309":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":"drustanyjt"},"content":" private Path addressBookFilePath \u003d Paths.get(\"data\" , \"clinicmate.json\");","lastModifiedDate":"2024-03-18"},{"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":{"drustanyjt":1,"-":87}},{"path":"src/main/java/seedu/address/model/person/Age.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"drustanyjt"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-15"},{"lineNumber":2,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":3,"author":{"gitId":"drustanyjt"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"drustanyjt"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-15"},{"lineNumber":5,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"drustanyjt"},"content":"/**","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"drustanyjt"},"content":" * Represents a Person\u0027s age in the address book.","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"drustanyjt"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidAge(String)}","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"drustanyjt"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"drustanyjt"},"content":"public class Age {","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"drustanyjt"},"content":" public static final Age DEFAULT \u003d new Age(0);","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"drustanyjt"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"drustanyjt"},"content":" \"Age should only contain non-negative numbers, and it should not be blank\";","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"drustanyjt"},"content":" public static final String VALIDATION_REGEX \u003d \"[0-9]+\";","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"drustanyjt"},"content":" public final Integer value;","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"drustanyjt"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"drustanyjt"},"content":" * Constructs a {@code Age}.","lastModifiedDate":"2024-03-15"},{"lineNumber":21,"author":{"gitId":"drustanyjt"},"content":" *","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"drustanyjt"},"content":" * @param age A valid age.","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"drustanyjt"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"drustanyjt"},"content":" public Age(String age) {","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"drustanyjt"},"content":" requireNonNull(age);","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"drustanyjt"},"content":" checkArgument(isValidAge(age), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"drustanyjt"},"content":" value \u003d Integer.parseInt(age);","lastModifiedDate":"2024-03-15"},{"lineNumber":28,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"drustanyjt"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"drustanyjt"},"content":" * Constructs a {@code Age}.","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"drustanyjt"},"content":" *","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"drustanyjt"},"content":" * @param age A valid age.","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"drustanyjt"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"drustanyjt"},"content":" public Age(int age) {","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"drustanyjt"},"content":" checkArgument(isValidAge(age), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"drustanyjt"},"content":" value \u003d age;","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"drustanyjt"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"drustanyjt"},"content":" * Returns true if a given string is a valid age.","lastModifiedDate":"2024-03-15"},{"lineNumber":42,"author":{"gitId":"drustanyjt"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"drustanyjt"},"content":" public static boolean isValidAge(String test) {","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"drustanyjt"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":47,"author":{"gitId":"drustanyjt"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"drustanyjt"},"content":" * Returns true if a given integer is a valid age.","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"drustanyjt"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"drustanyjt"},"content":" public static boolean isValidAge(int test) {","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"drustanyjt"},"content":" return test \u003e\u003d 0;","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"drustanyjt"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":55,"author":{"gitId":"drustanyjt"},"content":" public String toString() {","lastModifiedDate":"2024-03-15"},{"lineNumber":56,"author":{"gitId":"drustanyjt"},"content":" return value.toString();","lastModifiedDate":"2024-03-15"},{"lineNumber":57,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":58,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":59,"author":{"gitId":"drustanyjt"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":60,"author":{"gitId":"drustanyjt"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-15"},{"lineNumber":61,"author":{"gitId":"drustanyjt"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-15"},{"lineNumber":62,"author":{"gitId":"drustanyjt"},"content":" return true;","lastModifiedDate":"2024-03-15"},{"lineNumber":63,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":64,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":65,"author":{"gitId":"drustanyjt"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-15"},{"lineNumber":66,"author":{"gitId":"drustanyjt"},"content":" if (!(other instanceof Age)) {","lastModifiedDate":"2024-03-15"},{"lineNumber":67,"author":{"gitId":"drustanyjt"},"content":" return false;","lastModifiedDate":"2024-03-15"},{"lineNumber":68,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":69,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":70,"author":{"gitId":"drustanyjt"},"content":" Age otherAge \u003d (Age) other;","lastModifiedDate":"2024-03-15"},{"lineNumber":71,"author":{"gitId":"drustanyjt"},"content":" return value.equals(otherAge.value);","lastModifiedDate":"2024-03-15"},{"lineNumber":72,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":73,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":74,"author":{"gitId":"drustanyjt"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":75,"author":{"gitId":"drustanyjt"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-15"},{"lineNumber":76,"author":{"gitId":"drustanyjt"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-15"},{"lineNumber":77,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":78,"author":{"gitId":"drustanyjt"},"content":"}","lastModifiedDate":"2024-03-15"}],"authorContributionMap":{"drustanyjt":78}},{"path":"src/main/java/seedu/address/model/person/IdentityCardNumber.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"drustanyjt"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-15"},{"lineNumber":2,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":3,"author":{"gitId":"drustanyjt"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"drustanyjt"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-15"},{"lineNumber":5,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"drustanyjt"},"content":"/**","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"drustanyjt"},"content":" * Represents a Person\u0027s identity card number in the address book.","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"drustanyjt"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidIdentityCardNumber(String)}","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"drustanyjt"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"drustanyjt"},"content":"public class IdentityCardNumber {","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"drustanyjt"},"content":" public static final IdentityCardNumber DEFAULT \u003d new IdentityCardNumber(\"S0000000A\");","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"drustanyjt"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"drustanyjt"},"content":" \"IC number starts with one letter (S,T,F,G,M) followed by seven digits and one letter behind\"","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"drustanyjt"},"content":" + \" It is case insensitive. An example is S1234567A.\";","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"jiahui0309"},"content":" public static final String VALIDATION_REGEX \u003d \"[STFGMstfgm][0-9]{7}[A-Z,a-z]\";","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"drustanyjt"},"content":" public final String value;","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":21,"author":{"gitId":"drustanyjt"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"drustanyjt"},"content":" * Constructs a {@code IdentityCardNumber}.","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"drustanyjt"},"content":" *","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"drustanyjt"},"content":" * @param identityCardNumber A valid identity card number.","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"drustanyjt"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"drustanyjt"},"content":" public IdentityCardNumber(String identityCardNumber) {","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"drustanyjt"},"content":" requireNonNull(identityCardNumber);","lastModifiedDate":"2024-03-15"},{"lineNumber":28,"author":{"gitId":"drustanyjt"},"content":" checkArgument(isValidIdentityCardNumber(identityCardNumber), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"jiahui0309"},"content":" value \u003d identityCardNumber.toUpperCase();","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":31,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":32,"author":{"gitId":"drustanyjt"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"drustanyjt"},"content":" * Returns true if a given string is a valid identity card number.","lastModifiedDate":"2024-03-15"},{"lineNumber":34,"author":{"gitId":"drustanyjt"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"drustanyjt"},"content":" public static boolean isValidIdentityCardNumber(String test) {","lastModifiedDate":"2024-03-15"},{"lineNumber":36,"author":{"gitId":"drustanyjt"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-15"},{"lineNumber":37,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":38,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":39,"author":{"gitId":"drustanyjt"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":40,"author":{"gitId":"drustanyjt"},"content":" public String toString() {","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"drustanyjt"},"content":" return value;","lastModifiedDate":"2024-03-15"},{"lineNumber":42,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"drustanyjt"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"drustanyjt"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"drustanyjt"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-15"},{"lineNumber":47,"author":{"gitId":"drustanyjt"},"content":" return true;","lastModifiedDate":"2024-03-15"},{"lineNumber":48,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":49,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"drustanyjt"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-15"},{"lineNumber":51,"author":{"gitId":"drustanyjt"},"content":" if (!(other instanceof IdentityCardNumber)) {","lastModifiedDate":"2024-03-15"},{"lineNumber":52,"author":{"gitId":"drustanyjt"},"content":" return false;","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":54,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":55,"author":{"gitId":"drustanyjt"},"content":" IdentityCardNumber otherIdentityCardNumber \u003d (IdentityCardNumber) other;","lastModifiedDate":"2024-03-15"},{"lineNumber":56,"author":{"gitId":"drustanyjt"},"content":" return value.equals(otherIdentityCardNumber.value);","lastModifiedDate":"2024-03-15"},{"lineNumber":57,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":58,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":59,"author":{"gitId":"drustanyjt"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":60,"author":{"gitId":"drustanyjt"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-15"},{"lineNumber":61,"author":{"gitId":"drustanyjt"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-15"},{"lineNumber":62,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":63,"author":{"gitId":"drustanyjt"},"content":"}","lastModifiedDate":"2024-03-15"}],"authorContributionMap":{"drustanyjt":61,"jiahui0309":2}},{"path":"src/main/java/seedu/address/model/person/IdentityCardNumberMatchesPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jiahui0309"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"jiahui0309"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"jiahui0309"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"jiahui0309"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"jiahui0309"},"content":" * Tests that a {@code Person}\u0027s {@code IdentityCardNumber} matches the given IC number.","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"jiahui0309"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"jiahui0309"},"content":"public class IdentityCardNumberMatchesPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"jiahui0309"},"content":" private final IdentityCardNumber targetIcNumber;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"jiahui0309"},"content":" public IdentityCardNumberMatchesPredicate(IdentityCardNumber targetIcNumber) {","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"jiahui0309"},"content":" this.targetIcNumber \u003d targetIcNumber;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"jiahui0309"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"jiahui0309"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"jiahui0309"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"jiahui0309"},"content":" return person.getIdentityCardNumber().equals(targetIcNumber);","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"jiahui0309"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"jiahui0309"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"jiahui0309"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"jiahui0309"},"content":" if (this \u003d\u003d other) {","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"jiahui0309"},"content":" return true;","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"jiahui0309"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"jiahui0309"},"content":" if (!(other instanceof IdentityCardNumberMatchesPredicate)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"jiahui0309"},"content":" return false;","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"jiahui0309"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"jiahui0309"},"content":" IdentityCardNumberMatchesPredicate predicate \u003d (IdentityCardNumberMatchesPredicate) other;","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"jiahui0309"},"content":" return targetIcNumber.equals(predicate.targetIcNumber);","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"jiahui0309"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"jiahui0309"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"jiahui0309"},"content":" public String toString() {","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"jiahui0309"},"content":" return new ToStringBuilder(this).toString();","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"jiahui0309"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"jiahui0309":42}},{"path":"src/main/java/seedu/address/model/person/Note.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"drustanyjt"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-15"},{"lineNumber":2,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":3,"author":{"gitId":"drustanyjt"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"drustanyjt"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-15"},{"lineNumber":5,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"drustanyjt"},"content":"/**","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"drustanyjt"},"content":" * Represents a Person\u0027s note in the address book.","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"drustanyjt"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidNote(String)}","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"drustanyjt"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"drustanyjt"},"content":"public class Note {","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"drustanyjt"},"content":" public static final Note DEFAULT \u003d new Note(\"\");","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"drustanyjt"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Notes can take any values, and it should not be blank\";","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"drustanyjt"},"content":" public final String value;","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"drustanyjt"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"drustanyjt"},"content":" * Constructs a {@code Note}.","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"drustanyjt"},"content":" *","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"drustanyjt"},"content":" * @param note A valid note.","lastModifiedDate":"2024-03-15"},{"lineNumber":21,"author":{"gitId":"drustanyjt"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"drustanyjt"},"content":" public Note(String note) {","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"drustanyjt"},"content":" requireNonNull(note);","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"drustanyjt"},"content":" checkArgument(isValidNote(note), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"drustanyjt"},"content":" value \u003d note;","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":28,"author":{"gitId":"drustanyjt"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"drustanyjt"},"content":" * Returns true if a given string is a valid note.","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"drustanyjt"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":31,"author":{"gitId":"drustanyjt"},"content":" public static boolean isValidNote(String test) {","lastModifiedDate":"2024-03-15"},{"lineNumber":32,"author":{"gitId":"drustanyjt"},"content":" return true;","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":34,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"tengcharmaine"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"tengcharmaine"},"content":" * Appends text to the current note.","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"tengcharmaine"},"content":" *","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"tengcharmaine"},"content":" * @param text The text to append.","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"tengcharmaine"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"tengcharmaine"},"content":" public Note append(String text) {","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"tengcharmaine"},"content":" requireNonNull(text);","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"tengcharmaine"},"content":" return new Note(value + text);","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"drustanyjt"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"drustanyjt"},"content":" public String toString() {","lastModifiedDate":"2024-03-15"},{"lineNumber":47,"author":{"gitId":"drustanyjt"},"content":" return value;","lastModifiedDate":"2024-03-15"},{"lineNumber":48,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":49,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"drustanyjt"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":51,"author":{"gitId":"drustanyjt"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-15"},{"lineNumber":52,"author":{"gitId":"drustanyjt"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"drustanyjt"},"content":" return true;","lastModifiedDate":"2024-03-15"},{"lineNumber":54,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":55,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":56,"author":{"gitId":"drustanyjt"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-15"},{"lineNumber":57,"author":{"gitId":"drustanyjt"},"content":" if (!(other instanceof Note)) {","lastModifiedDate":"2024-03-15"},{"lineNumber":58,"author":{"gitId":"drustanyjt"},"content":" return false;","lastModifiedDate":"2024-03-15"},{"lineNumber":59,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":60,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":61,"author":{"gitId":"drustanyjt"},"content":" Note otherNote \u003d (Note) other;","lastModifiedDate":"2024-03-15"},{"lineNumber":62,"author":{"gitId":"drustanyjt"},"content":" return value.equals(otherNote.value);","lastModifiedDate":"2024-03-15"},{"lineNumber":63,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":64,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":65,"author":{"gitId":"drustanyjt"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":66,"author":{"gitId":"drustanyjt"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-15"},{"lineNumber":67,"author":{"gitId":"drustanyjt"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-15"},{"lineNumber":68,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":69,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":70,"author":{"gitId":"drustanyjt"},"content":"}","lastModifiedDate":"2024-03-15"}],"authorContributionMap":{"drustanyjt":60,"tengcharmaine":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":"-"},"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":"-"},"content":" private final Phone phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"drustanyjt"},"content":" private final IdentityCardNumber identityCardNumber;","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19"},{"lineNumber":26,"author":{"gitId":"drustanyjt"},"content":" private final Age age;","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"drustanyjt"},"content":" private final Sex sex;","lastModifiedDate":"2024-03-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19"},{"lineNumber":29,"author":{"gitId":"drustanyjt"},"content":" private final Note note;","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"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":"Jayne1010"},"content":" public Person(Name name, Phone phone, Email email, IdentityCardNumber identityCardNumber,","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"Jayne1010"},"content":" Age age, Sex sex, Address address, Note note, Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"drustanyjt"},"content":" requireAllNonNull(name, phone, email, identityCardNumber, age, sex, address, note, tags);","lastModifiedDate":"2024-03-16"},{"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":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"drustanyjt"},"content":" this.identityCardNumber \u003d identityCardNumber;","lastModifiedDate":"2024-03-15"},{"lineNumber":42,"author":{"gitId":"drustanyjt"},"content":" this.age \u003d age;","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"drustanyjt"},"content":" this.sex \u003d sex;","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20"},{"lineNumber":45,"author":{"gitId":"drustanyjt"},"content":" this.note \u003d note;","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"drustanyjt"},"content":" public IdentityCardNumber getIdentityCardNumber() {","lastModifiedDate":"2024-03-15"},{"lineNumber":62,"author":{"gitId":"drustanyjt"},"content":" return identityCardNumber;","lastModifiedDate":"2024-03-15"},{"lineNumber":63,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":64,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":65,"author":{"gitId":"drustanyjt"},"content":" public Age getAge() {","lastModifiedDate":"2024-03-15"},{"lineNumber":66,"author":{"gitId":"drustanyjt"},"content":" return age;","lastModifiedDate":"2024-03-15"},{"lineNumber":67,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":68,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":69,"author":{"gitId":"drustanyjt"},"content":" public Sex getSex() {","lastModifiedDate":"2024-03-15"},{"lineNumber":70,"author":{"gitId":"drustanyjt"},"content":" return sex;","lastModifiedDate":"2024-03-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":77,"author":{"gitId":"drustanyjt"},"content":" public Note getNote() {","lastModifiedDate":"2024-03-15"},{"lineNumber":78,"author":{"gitId":"drustanyjt"},"content":" return note;","lastModifiedDate":"2024-03-15"},{"lineNumber":79,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":80,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"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":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":90,"author":{"gitId":"jiahui0309"},"content":" * Returns true if both persons have the same IC number.","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19"},{"lineNumber":99,"author":{"gitId":"drustanyjt"},"content":" \u0026\u0026 otherPerson.getIdentityCardNumber().equals(getIdentityCardNumber());","lastModifiedDate":"2024-03-15"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":102,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":103,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":109,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":110,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":113,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10"},{"lineNumber":115,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":118,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10"},{"lineNumber":119,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2024-03-16"},{"lineNumber":122,"author":{"gitId":"drustanyjt"},"content":" \u0026\u0026 identityCardNumber.equals(otherPerson.identityCardNumber)","lastModifiedDate":"2024-03-15"},{"lineNumber":123,"author":{"gitId":"drustanyjt"},"content":" \u0026\u0026 age.equals(otherPerson.age)","lastModifiedDate":"2024-03-15"},{"lineNumber":124,"author":{"gitId":"drustanyjt"},"content":" \u0026\u0026 sex.equals(otherPerson.sex)","lastModifiedDate":"2024-03-15"},{"lineNumber":125,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":126,"author":{"gitId":"drustanyjt"},"content":" \u0026\u0026 note.equals(otherPerson.note)","lastModifiedDate":"2024-03-15"},{"lineNumber":127,"author":{"gitId":"-"},"content":" \u0026\u0026 tags.equals(otherPerson.tags);","lastModifiedDate":"2023-07-13"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":130,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":131,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":132,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":133,"author":{"gitId":"drustanyjt"},"content":" return Objects.hash(name, phone, email, identityCardNumber, age, sex, address, note, tags);","lastModifiedDate":"2024-03-16"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":137,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":138,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2024-03-16"},{"lineNumber":142,"author":{"gitId":"drustanyjt"},"content":" .add(\"identityCardNumber\", identityCardNumber)","lastModifiedDate":"2024-03-15"},{"lineNumber":143,"author":{"gitId":"drustanyjt"},"content":" .add(\"age\", age)","lastModifiedDate":"2024-03-15"},{"lineNumber":144,"author":{"gitId":"drustanyjt"},"content":" .add(\"sex\", sex)","lastModifiedDate":"2024-03-15"},{"lineNumber":145,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":146,"author":{"gitId":"drustanyjt"},"content":" .add(\"note\", note)","lastModifiedDate":"2024-03-15"},{"lineNumber":147,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":151,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"drustanyjt":34,"Jayne1010":2,"-":114,"jiahui0309":1}},{"path":"src/main/java/seedu/address/model/person/Sex.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"drustanyjt"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-15"},{"lineNumber":2,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":3,"author":{"gitId":"drustanyjt"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"drustanyjt"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-15"},{"lineNumber":5,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"drustanyjt"},"content":"/**","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"drustanyjt"},"content":" * Represents a Person\u0027s sex in the address book.","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"drustanyjt"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidSex(String)}","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"drustanyjt"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"drustanyjt"},"content":"public class Sex {","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"drustanyjt"},"content":" public static final Sex DEFAULT \u003d new Sex(\"F\");","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"drustanyjt"},"content":" public static final String MALE \u003d \"M\";","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"drustanyjt"},"content":" public static final String FEMALE \u003d \"F\";","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"drustanyjt"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"drustanyjt"},"content":" \"Sex should only contain either \u0027M\u0027 or \u0027F\u0027, and it should not be blank\";","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"drustanyjt"},"content":" /*","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"drustanyjt"},"content":" * The first character of the sex must not be a whitespace,","lastModifiedDate":"2024-03-15"},{"lineNumber":21,"author":{"gitId":"drustanyjt"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"drustanyjt"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"tengcharmaine"},"content":" public static final String VALIDATION_REGEX \u003d \"[mfMF]\";","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"drustanyjt"},"content":" public final String value;","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"drustanyjt"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":28,"author":{"gitId":"drustanyjt"},"content":" * Constructs a {@code Sex}","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"drustanyjt"},"content":" *","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"drustanyjt"},"content":" * @param sex A valid sex.","lastModifiedDate":"2024-03-15"},{"lineNumber":31,"author":{"gitId":"drustanyjt"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":32,"author":{"gitId":"drustanyjt"},"content":" public Sex(String sex) {","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"drustanyjt"},"content":" requireNonNull(sex);","lastModifiedDate":"2024-03-15"},{"lineNumber":34,"author":{"gitId":"drustanyjt"},"content":" checkArgument(isValidSex(sex), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"drustanyjt"},"content":" if (isFemaleString(sex)) {","lastModifiedDate":"2024-03-15"},{"lineNumber":36,"author":{"gitId":"drustanyjt"},"content":" value \u003d FEMALE;","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"drustanyjt"},"content":" } else if (isMaleString(sex)) {","lastModifiedDate":"2024-03-15"},{"lineNumber":38,"author":{"gitId":"drustanyjt"},"content":" value \u003d MALE;","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"drustanyjt"},"content":" } else {","lastModifiedDate":"2024-03-15"},{"lineNumber":40,"author":{"gitId":"drustanyjt"},"content":" // This should never happen","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"drustanyjt"},"content":" // Prevents linter from detecting fullSex as potentially unassigned","lastModifiedDate":"2024-03-15"},{"lineNumber":42,"author":{"gitId":"drustanyjt"},"content":" value \u003d \"\";","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"drustanyjt"},"content":" public boolean isMaleString(String sex) {","lastModifiedDate":"2024-03-15"},{"lineNumber":47,"author":{"gitId":"tengcharmaine"},"content":" return sex.equalsIgnoreCase(MALE);","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":49,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"drustanyjt"},"content":" public boolean isFemaleString(String sex) {","lastModifiedDate":"2024-03-15"},{"lineNumber":51,"author":{"gitId":"tengcharmaine"},"content":" return sex.equalsIgnoreCase(FEMALE);","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":54,"author":{"gitId":"drustanyjt"},"content":" public static boolean isValidSex(String test) {","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"drustanyjt"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-15"},{"lineNumber":56,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":57,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":58,"author":{"gitId":"drustanyjt"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":59,"author":{"gitId":"drustanyjt"},"content":" public String toString() {","lastModifiedDate":"2024-03-15"},{"lineNumber":60,"author":{"gitId":"drustanyjt"},"content":" return value;","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":62,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":63,"author":{"gitId":"drustanyjt"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":64,"author":{"gitId":"drustanyjt"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-15"},{"lineNumber":65,"author":{"gitId":"drustanyjt"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-15"},{"lineNumber":66,"author":{"gitId":"drustanyjt"},"content":" return true;","lastModifiedDate":"2024-03-15"},{"lineNumber":67,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":68,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":69,"author":{"gitId":"drustanyjt"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-15"},{"lineNumber":70,"author":{"gitId":"drustanyjt"},"content":" if (!(other instanceof Sex)) {","lastModifiedDate":"2024-03-15"},{"lineNumber":71,"author":{"gitId":"drustanyjt"},"content":" return false;","lastModifiedDate":"2024-03-15"},{"lineNumber":72,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":73,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":74,"author":{"gitId":"drustanyjt"},"content":" Sex otherSex \u003d (Sex) other;","lastModifiedDate":"2024-03-15"},{"lineNumber":75,"author":{"gitId":"drustanyjt"},"content":" return value.equals(otherSex.value);","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":77,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":78,"author":{"gitId":"drustanyjt"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":79,"author":{"gitId":"drustanyjt"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-15"},{"lineNumber":80,"author":{"gitId":"drustanyjt"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":82,"author":{"gitId":"drustanyjt"},"content":"}","lastModifiedDate":"2024-03-15"}],"authorContributionMap":{"drustanyjt":79,"tengcharmaine":3}},{"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":"drustanyjt"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-22"},{"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.Address;","lastModifiedDate":"2016-12-20"},{"lineNumber":11,"author":{"gitId":"drustanyjt"},"content":"import seedu.address.model.person.Age;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20"},{"lineNumber":13,"author":{"gitId":"drustanyjt"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20"},{"lineNumber":15,"author":{"gitId":"drustanyjt"},"content":"import seedu.address.model.person.Note;","lastModifiedDate":"2024-03-16"},{"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":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"drustanyjt"},"content":"import seedu.address.model.person.Sex;","lastModifiedDate":"2024-03-16"},{"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":"Jayne1010"},"content":" new Person(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"Jayne1010"},"content":" new Email(\"alexyeoh@example.com\"), new IdentityCardNumber(\"S1234567A\"), new Age(\"30\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"Jayne1010"},"content":" new Sex(\"M\"), new Address(\"Blk 30 Geylang Street 29, #06-40\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"Jayne1010"},"content":" new Note(\"No medical conditions\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"drustanyjt"},"content":" getEmptyTagSet()),","lastModifiedDate":"2024-03-22"},{"lineNumber":32,"author":{"gitId":"Jayne1010"},"content":" new Person(new Name(\"Bernice Yu\"), new Phone(\"99272758\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"Jayne1010"},"content":" new Email(\"berniceyu@example.com\"), new IdentityCardNumber(\"S1234567B\"), new Age(31),","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"Jayne1010"},"content":" new Sex(\"F\"), new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"), new Note(\"Asthma\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"drustanyjt"},"content":" getEmptyTagSet()),","lastModifiedDate":"2024-03-22"},{"lineNumber":36,"author":{"gitId":"Jayne1010"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"Jayne1010"},"content":" new Email(\"charlotte@example.com\"), new IdentityCardNumber(\"S1234567C\"), new Age(\"32\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"Jayne1010"},"content":" new Sex(\"F\"), new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"), new Note(\"Diabetes\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"drustanyjt"},"content":" getEmptyTagSet()),","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"Jayne1010"},"content":" new Person(new Name(\"David Li\"), new Phone(\"91031282\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"Jayne1010"},"content":" new Email(\"lidavid@example.com\"), new IdentityCardNumber(\"S1234567D\"), new Age(33), new Sex(\"M\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"drustanyjt"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"), new Note(\"No medical conditions\"),","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"drustanyjt"},"content":" getEmptyTagSet()),","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"Jayne1010"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"Jayne1010"},"content":" new Email(\"irfan@example.com\"), new IdentityCardNumber(\"S1234567E\"), new Age(\"34\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"Jayne1010"},"content":" new Sex(\"M\"), new Address(\"Blk 47 Tampines Street 20, #17-35\"), new Note(\"High blood pressure\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"drustanyjt"},"content":" getEmptyTagSet()),","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"Jayne1010"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"Jayne1010"},"content":" new Email(\"royb@example.com\"), new IdentityCardNumber(\"S1234567F\"), new Age(35),","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"Jayne1010"},"content":" new Sex(\"M\"), new Address(\"Blk 45 Aljunied Street 85, #11-31\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"Jayne1010"},"content":" new Note(\"No medical conditions\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"drustanyjt"},"content":" getEmptyTagSet()),","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07"},{"lineNumber":58,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21"},{"lineNumber":69,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":73,"author":{"gitId":"drustanyjt"},"content":" public static Set\u003cTag\u003e getEmptyTagSet() {","lastModifiedDate":"2024-03-22"},{"lineNumber":74,"author":{"gitId":"drustanyjt"},"content":" return new HashSet\u003cTag\u003e();","lastModifiedDate":"2024-03-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"drustanyjt":14,"Jayne1010":19,"-":44}},{"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":"drustanyjt"},"content":"import seedu.address.model.person.Age;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"drustanyjt"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"drustanyjt"},"content":"import seedu.address.model.person.Note;","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"drustanyjt"},"content":"import seedu.address.model.person.Sex;","lastModifiedDate":"2024-03-16"},{"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":"drustanyjt"},"content":" private final String identityCardNumber;","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"drustanyjt"},"content":" private final Integer age;","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"drustanyjt"},"content":" private final String sex;","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"drustanyjt"},"content":" private final String note;","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","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":" * 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":"drustanyjt"},"content":" @JsonProperty(\"email\") String email,","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"drustanyjt"},"content":" @JsonProperty(\"identityCardNumber\") String identityCardNumber,","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"drustanyjt"},"content":" @JsonProperty(\"age\") Integer age,","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"drustanyjt"},"content":" @JsonProperty(\"sex\") String sex,","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"drustanyjt"},"content":" @JsonProperty(\"address\") String address,","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"drustanyjt"},"content":" @JsonProperty(\"note\") String note,","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags) {","lastModifiedDate":"2023-05-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"drustanyjt"},"content":" this.identityCardNumber \u003d identityCardNumber;","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"drustanyjt"},"content":" this.age \u003d age;","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"drustanyjt"},"content":" this.sex \u003d sex;","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"drustanyjt"},"content":" this.note \u003d note;","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"drustanyjt"},"content":" identityCardNumber \u003d source.getIdentityCardNumber().value;","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"drustanyjt"},"content":" age \u003d source.getAge().value;","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"drustanyjt"},"content":" sex \u003d source.getSex().value;","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"drustanyjt"},"content":" note \u003d source.getNote().value;","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09"},{"lineNumber":79,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09"},{"lineNumber":91,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","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":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"Jayne1010"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"Jayne1010"},"content":" Phone.class.getSimpleName()));","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":119,"author":{"gitId":"drustanyjt"},"content":" if (identityCardNumber \u003d\u003d null) {","lastModifiedDate":"2024-03-16"},{"lineNumber":120,"author":{"gitId":"drustanyjt"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-16"},{"lineNumber":121,"author":{"gitId":"drustanyjt"},"content":" IdentityCardNumber.class.getSimpleName()));","lastModifiedDate":"2024-03-16"},{"lineNumber":122,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":123,"author":{"gitId":"drustanyjt"},"content":" if (!IdentityCardNumber.isValidIdentityCardNumber(identityCardNumber)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":124,"author":{"gitId":"drustanyjt"},"content":" throw new IllegalValueException(IdentityCardNumber.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":125,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":126,"author":{"gitId":"drustanyjt"},"content":" final IdentityCardNumber modelIdentityCardNumber \u003d new IdentityCardNumber(identityCardNumber);","lastModifiedDate":"2024-03-16"},{"lineNumber":127,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":128,"author":{"gitId":"drustanyjt"},"content":" if (age \u003d\u003d null) {","lastModifiedDate":"2024-03-16"},{"lineNumber":129,"author":{"gitId":"drustanyjt"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Age.class.getSimpleName()));","lastModifiedDate":"2024-03-16"},{"lineNumber":130,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":131,"author":{"gitId":"drustanyjt"},"content":" if (!Age.isValidAge(age)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":132,"author":{"gitId":"drustanyjt"},"content":" throw new IllegalValueException(Age.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":133,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":134,"author":{"gitId":"drustanyjt"},"content":" final Age modelAge \u003d new Age(age);","lastModifiedDate":"2024-03-16"},{"lineNumber":135,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":136,"author":{"gitId":"drustanyjt"},"content":" if (sex \u003d\u003d null) {","lastModifiedDate":"2024-03-16"},{"lineNumber":137,"author":{"gitId":"drustanyjt"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Sex.class.getSimpleName()));","lastModifiedDate":"2024-03-16"},{"lineNumber":138,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":139,"author":{"gitId":"drustanyjt"},"content":" if (!Sex.isValidSex(sex)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":140,"author":{"gitId":"drustanyjt"},"content":" throw new IllegalValueException(Sex.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":141,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":142,"author":{"gitId":"drustanyjt"},"content":" final Sex modelSex \u003d new Sex(sex);","lastModifiedDate":"2024-03-16"},{"lineNumber":143,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":144,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":145,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":147,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":148,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":150,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":152,"author":{"gitId":"drustanyjt"},"content":" if (note \u003d\u003d null) {","lastModifiedDate":"2024-03-16"},{"lineNumber":153,"author":{"gitId":"drustanyjt"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Note.class.getSimpleName()));","lastModifiedDate":"2024-03-16"},{"lineNumber":154,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":155,"author":{"gitId":"drustanyjt"},"content":" if (!Note.isValidNote(note)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":156,"author":{"gitId":"drustanyjt"},"content":" throw new IllegalValueException(Note.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":157,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":158,"author":{"gitId":"drustanyjt"},"content":" final Note modelNote \u003d new Note(note);","lastModifiedDate":"2024-03-16"},{"lineNumber":159,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":160,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13"},{"lineNumber":161,"author":{"gitId":"drustanyjt"},"content":" return new Person(modelName, modelPhone, modelEmail, modelIdentityCardNumber, modelAge, modelSex, modelAddress,","lastModifiedDate":"2024-03-16"},{"lineNumber":162,"author":{"gitId":"drustanyjt"},"content":" modelNote, modelTags);","lastModifiedDate":"2024-03-16"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":165,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"drustanyjt":57,"Jayne1010":2,"-":106}},{"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":"tengcharmaine"},"content":" public static final String USERGUIDE_URL \u003d \"https://ay2324s2-cs2103t-f14-2.github.io/tp/UserGuide.html\";","lastModifiedDate":"2024-03-16"},{"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":{"tengcharmaine":1,"-":101}},{"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 address;","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":"tengcharmaine"},"content":" private Label note;","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"tengcharmaine"},"content":" @FXML","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"Jayne1010"},"content":" private Label age;","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"Jayne1010"},"content":" @FXML","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"Jayne1010"},"content":" private Label sex;","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"Jayne1010"},"content":" @FXML","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"Jayne1010"},"content":" private Label ic;","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"Jayne1010"},"content":" @FXML","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10"},{"lineNumber":56,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":62,"author":{"gitId":"tengcharmaine"},"content":" note.setText(person.getNote().value);","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"Jayne1010"},"content":" ic.setText(person.getIdentityCardNumber().value);","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"Jayne1010"},"content":" age.setText(String.valueOf(person.getAge().value));","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"Jayne1010"},"content":" sex.setText(person.getSex().value);","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"Jayne1010"},"content":" address.setText(person.getAddress().value);","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"-"},"content":" person.getTags().stream()","lastModifiedDate":"2019-01-02"},{"lineNumber":68,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02"},{"lineNumber":69,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"Jayne1010":10,"tengcharmaine":3,"-":58}},{"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":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25"},{"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":"drustanyjt"},"content":" private static final String ICON_APPLICATION \u003d \"/images/clinic_mate_logo2_32.png\";","lastModifiedDate":"2024-03-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":{"drustanyjt":1,"-":87}},{"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":"tengcharmaine"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-03-21"},{"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":"drustanyjt"},"content":" title\u003d\"ClinicMate\" minWidth\u003d\"450\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":18,"author":{"gitId":"drustanyjt"},"content":" \u003cImage url\u003d\"@/images/clinic_mate_logo2_32.png\" /\u003e","lastModifiedDate":"2024-03-18"},{"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":"tengcharmaine"},"content":" \u003cSplitPane orientation\u003d\"HORIZONTAL\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":51,"author":{"gitId":"tengcharmaine"},"content":" \u003cVBox fx:id\u003d\"personList\" styleClass\u003d\"pane-with-border\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"personListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2017-06-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":58,"author":{"gitId":"tengcharmaine"},"content":" \u003cStackPane fx:id\u003d\"patientDetails\" styleClass\u003d\"pane-with-border\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"tengcharmaine"},"content":" \u003cVBox alignment\u003d\"CENTER\"\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"tengcharmaine"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"tengcharmaine"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"tengcharmaine"},"content":" \u003c/SplitPane\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"tengcharmaine"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" minHeight\u003d\"20\" prefHeight\u003d\"20\" maxHeight\u003d\"20\"","lastModifiedDate":"2024-03-22"},{"lineNumber":65,"author":{"gitId":"tengcharmaine"},"content":" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":68,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":69,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29"}],"authorContributionMap":{"drustanyjt":2,"tengcharmaine":10,"-":57}},{"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":"Jayne1010"},"content":" \u003cLabel fx:id\u003d\"ic\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$ic\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"Jayne1010"},"content":" \u003cLabel fx:id\u003d\"age\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$age\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"Jayne1010"},"content":" \u003cLabel fx:id\u003d\"sex\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$sex\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"tengcharmaine"},"content":" \u003cLabel fx:id\u003d\"note\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$note\" /\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"Jayne1010":3,"tengcharmaine":1,"-":36}},{"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":"drustanyjt"},"content":" assertNotNull(AppUtil.getImage(\"/images/clinic_mate_logo2_32.png\"));","lastModifiedDate":"2024-03-18"},{"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":{"drustanyjt":1,"-":35}},{"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":"jiahui0309"},"content":"import static seedu.address.logic.Messages.MESSAGE_NO_MATCHING_IC;","lastModifiedDate":"2024-03-16"},{"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":"drustanyjt"},"content":"import org.junit.jupiter.api.Disabled;","lastModifiedDate":"2024-03-16"},{"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":"-"},"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":"jiahui0309"},"content":" String deleteCommand \u003d \"delete s1234567a\";","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"jiahui0309"},"content":" assertCommandException(deleteCommand, MESSAGE_NO_MATCHING_IC);","lastModifiedDate":"2024-03-16"},{"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":"drustanyjt"},"content":" @Disabled (\"Requires add command to be working properly\")","lastModifiedDate":"2024-03-16"},{"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":"drustanyjt"},"content":" @Disabled (\"Requires add command to be working properly\")","lastModifiedDate":"2024-03-16"},{"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":"-"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2023-06-13"},{"lineNumber":172,"author":{"gitId":"-"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY;","lastModifiedDate":"2023-06-13"},{"lineNumber":173,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2023-06-13"},{"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":{"drustanyjt":3,"-":172,"jiahui0309":3}},{"path":"src/test/java/seedu/address/logic/commands/AddNoteCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"tengcharmaine"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"tengcharmaine"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"tengcharmaine"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"tengcharmaine"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"tengcharmaine"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NOTE_AMY;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"tengcharmaine"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NOTE_BOB;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"tengcharmaine"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"tengcharmaine"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.model.person.IdentityCardNumberMatchesPredicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.model.person.Note;","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"tengcharmaine"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"tengcharmaine"},"content":" * Contains integration tests (interaction with the Model) and unit tests for AddNoteCommand.","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"tengcharmaine"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"tengcharmaine"},"content":"public class AddNoteCommandTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"tengcharmaine"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"tengcharmaine"},"content":" public void testReplaceNote() throws CommandException {","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"tengcharmaine"},"content":" // Setup","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"tengcharmaine"},"content":" Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"tengcharmaine"},"content":" Person person \u003d model.getFilteredPersonList().get(0);","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"tengcharmaine"},"content":" Note originalNote \u003d person.getNote();","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"tengcharmaine"},"content":" AddNoteCommand command \u003d new AddNoteCommand(","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"tengcharmaine"},"content":" new IdentityCardNumberMatchesPredicate(person.getIdentityCardNumber()),","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"tengcharmaine"},"content":" new Note(\"new note\"), true);","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"tengcharmaine"},"content":" // Action","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"tengcharmaine"},"content":" command.execute(model);","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"tengcharmaine"},"content":" // Verify","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"tengcharmaine"},"content":" assertEquals(originalNote.toString(), person.getNote().toString());","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"tengcharmaine"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"tengcharmaine"},"content":" public void generateSuccessMessage_noteAdded_successMessage() {","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"tengcharmaine"},"content":" Person personToEdit \u003d new PersonBuilder().withName(\"Alice\").withIdentityCardNumber(\"S1234567A\").build();","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"tengcharmaine"},"content":" String expectedMessage \u003d String.format(AddNoteCommand.MESSAGE_MODIFY_NOTE_SUCCESS,","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"tengcharmaine"},"content":" personToEdit.getName(), personToEdit.getIdentityCardNumber());","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"tengcharmaine"},"content":" assertEquals(expectedMessage, new AddNoteCommand(","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"tengcharmaine"},"content":" new IdentityCardNumberMatchesPredicate(personToEdit.getIdentityCardNumber()),","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"tengcharmaine"},"content":" new Note(\"new note\"), false).generateSuccessMessage(personToEdit));","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"tengcharmaine"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"tengcharmaine"},"content":" public void equals() {","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"tengcharmaine"},"content":" IdentityCardNumberMatchesPredicate firstPredicate \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"tengcharmaine"},"content":" new IdentityCardNumberMatchesPredicate(new IdentityCardNumber(\"S1234567A\"));","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"tengcharmaine"},"content":" IdentityCardNumberMatchesPredicate secondPredicate \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"tengcharmaine"},"content":" new IdentityCardNumberMatchesPredicate(new IdentityCardNumber(\"S9876543B\"));","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"tengcharmaine"},"content":" final AddNoteCommand standardCommand \u003d new AddNoteCommand(firstPredicate,","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"tengcharmaine"},"content":" new Note(VALID_NOTE_AMY), false);","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"tengcharmaine"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"tengcharmaine"},"content":" AddNoteCommand commandWithSameValues \u003d new AddNoteCommand(firstPredicate,","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"tengcharmaine"},"content":" new Note(VALID_NOTE_AMY), false);","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"tengcharmaine"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"tengcharmaine"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"tengcharmaine"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"tengcharmaine"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"tengcharmaine"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"tengcharmaine"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"tengcharmaine"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"tengcharmaine"},"content":" // different index -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"tengcharmaine"},"content":" assertFalse(standardCommand.equals(new AddNoteCommand(secondPredicate,","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"tengcharmaine"},"content":" new Note(VALID_NOTE_AMY), false)));","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"tengcharmaine"},"content":" // different remark -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"tengcharmaine"},"content":" assertFalse(standardCommand.equals(new AddNoteCommand(firstPredicate,","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"tengcharmaine"},"content":" new Note(VALID_NOTE_BOB), false)));","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"tengcharmaine"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"tengcharmaine":86}},{"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":"Jayne1010"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-21"},{"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.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AGE;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_IC_NUMBER;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SEX;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-20"},{"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.AddressBook;","lastModifiedDate":"2017-06-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":24,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.IdentityCardNumberMatchesPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05"},{"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":"drustanyjt"},"content":" public static final String VALID_IDENTITY_CARD_NUMBER_AMY \u003d \"S1234567A\";","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"drustanyjt"},"content":" public static final String VALID_IDENTITY_CARD_NUMBER_BOB \u003d \"S1234567B\";","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"drustanyjt"},"content":" public static final Integer VALID_AGE_AMY \u003d 13;","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"drustanyjt"},"content":" public static final Integer VALID_AGE_BOB \u003d 54;","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"drustanyjt"},"content":" public static final String VALID_SEX_AMY \u003d \"F\";","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"drustanyjt"},"content":" public static final String VALID_SEX_BOB \u003d \"M\";","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05"},{"lineNumber":49,"author":{"gitId":"drustanyjt"},"content":" public static final String VALID_NOTE_AMY \u003d \"Hypertensive Crisis with last reading of 156/60\";","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"drustanyjt"},"content":" public static final String VALID_NOTE_BOB \u003d \"Prone to cardiac arrest, 3 times in the past 2 months\";","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"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":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"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":"Jayne1010"},"content":" public static final String IC_DESC_AMY \u003d \" \" + PREFIX_IC_NUMBER + VALID_IDENTITY_CARD_NUMBER_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"Jayne1010"},"content":" public static final String IC_DESC_BOB \u003d \" \" + PREFIX_IC_NUMBER + VALID_IDENTITY_CARD_NUMBER_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"Jayne1010"},"content":" public static final String AGE_DESC_AMY \u003d \" \" + PREFIX_AGE + VALID_AGE_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"Jayne1010"},"content":" public static final String AGE_DESC_BOB \u003d \" \" + PREFIX_AGE + VALID_AGE_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"Jayne1010"},"content":" public static final String SEX_DESC_AMY \u003d \" \" + PREFIX_SEX + VALID_SEX_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"Jayne1010"},"content":" public static final String SEX_DESC_BOB \u003d \" \" + PREFIX_SEX + VALID_AGE_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"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":71,"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":72,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05"},{"lineNumber":74,"author":{"gitId":"Jayne1010"},"content":" public static final String INVALID_SEX \u003d \" \" + PREFIX_SEX + \"Z\"; // Only \u0027M\u0027 and \u0027F\u0027 allowed in sex","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"Jayne1010"},"content":" public static final String INVALID_AGE \u003d \" \" + PREFIX_AGE + \"-15\"; // Negative age not allowed in age","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"Jayne1010"},"content":" public static final String INVALID_IC \u003d \" \" + PREFIX_IC_NUMBER + \"P379@\"; // @ not allowed in identification number","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":85,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":88,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":89,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":91,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25"},{"lineNumber":100,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":101,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":102,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":105,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":106,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":110,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":111,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25"},{"lineNumber":112,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":113,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25"},{"lineNumber":115,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":116,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":120,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":121,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":122,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":123,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":124,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25"},{"lineNumber":125,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":126,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25"},{"lineNumber":127,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":128,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":129,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":130,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03"},{"lineNumber":133,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":136,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":137,"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":138,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31"},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":140,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":143,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31"},{"lineNumber":144,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20"},{"lineNumber":145,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":147,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":150,"author":{"gitId":"Jayne1010"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":151,"author":{"gitId":"Jayne1010"},"content":" * Updates {@code model}\u0027s filtered list to show only the person with the given {@code icNumber} in the","lastModifiedDate":"2024-03-21"},{"lineNumber":152,"author":{"gitId":"Jayne1010"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2024-03-21"},{"lineNumber":153,"author":{"gitId":"Jayne1010"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":154,"author":{"gitId":"Jayne1010"},"content":" public static void showPersonWithIC(Model model, IdentityCardNumber icNumber) {","lastModifiedDate":"2024-03-21"},{"lineNumber":155,"author":{"gitId":"Jayne1010"},"content":" model.updateFilteredPersonList(new IdentityCardNumberMatchesPredicate(icNumber));","lastModifiedDate":"2024-03-21"},{"lineNumber":156,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":157,"author":{"gitId":"Jayne1010"},"content":" // Ensure that at least one person matches the IC number","lastModifiedDate":"2024-03-21"},{"lineNumber":158,"author":{"gitId":"Jayne1010"},"content":" assertFalse(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2024-03-21"},{"lineNumber":159,"author":{"gitId":"Jayne1010"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":160,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":161,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"Jayne1010":26,"drustanyjt":8,"-":127}},{"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.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-05"},{"lineNumber":17,"author":{"gitId":"jiahui0309"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"jiahui0309"},"content":"import seedu.address.model.person.IdentityCardNumberMatchesPredicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2018-01-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2017-06-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":32,"author":{"gitId":"jiahui0309"},"content":" IdentityCardNumber icToDelete \u003d personToDelete.getIdentityCardNumber();","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"jiahui0309"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(new IdentityCardNumberMatchesPredicate(icToDelete));","lastModifiedDate":"2024-03-16"},{"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":"","lastModifiedDate":"2017-06-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":50,"author":{"gitId":"jiahui0309"},"content":" IdentityCardNumber icToDelete \u003d personToDelete.getIdentityCardNumber();","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"jiahui0309"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(new IdentityCardNumberMatchesPredicate(icToDelete));","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" showNoPerson(expectedModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":66,"author":{"gitId":"jiahui0309"},"content":" IdentityCardNumberMatchesPredicate firstPredicate \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"jiahui0309"},"content":" new IdentityCardNumberMatchesPredicate(new IdentityCardNumber(\"S1234567A\"));","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"jiahui0309"},"content":" IdentityCardNumberMatchesPredicate secondPredicate \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"jiahui0309"},"content":" new IdentityCardNumberMatchesPredicate(new IdentityCardNumber(\"S9876543B\"));","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"jiahui0309"},"content":" DeleteCommand deleteFirstCommand \u003d new DeleteCommand(firstPredicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"jiahui0309"},"content":" DeleteCommand deleteSecondCommand \u003d new DeleteCommand(secondPredicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":78,"author":{"gitId":"jiahui0309"},"content":" DeleteCommand deleteFirstCommandCopy \u003d new DeleteCommand(firstPredicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","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":"2019-02-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"jiahui0309"},"content":" IdentityCardNumberMatchesPredicate predicate \u003d new IdentityCardNumberMatchesPredicate(","lastModifiedDate":"2024-03-16"},{"lineNumber":94,"author":{"gitId":"jiahui0309"},"content":" new IdentityCardNumber(\"S1234567A\"));","lastModifiedDate":"2024-03-16"},{"lineNumber":95,"author":{"gitId":"jiahui0309"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(predicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":96,"author":{"gitId":"jiahui0309"},"content":" String expected \u003d DeleteCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2024-03-16"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertEquals(expected, deleteCommand.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":"2017-06-05"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05"},{"lineNumber":102,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":103,"author":{"gitId":"-"},"content":" private void showNoPerson(Model model) {","lastModifiedDate":"2017-06-05"},{"lineNumber":104,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2017-06-12"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertTrue(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2018-02-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"-":90,"jiahui0309":18}},{"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":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.IC_DESC_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_IDENTITY_CARD_NUMBER_BOB;","lastModifiedDate":"2024-03-21"},{"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":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonWithIC;","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.testutil.TypicalIdentityPredicate.IC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.testutil.TypicalIdentityPredicate.IC_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":22,"author":{"gitId":"drustanyjt"},"content":"import org.junit.jupiter.api.Disabled;","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"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":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04"},{"lineNumber":31,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-04"},{"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":"drustanyjt"},"content":"@Disabled(\"Requires edit Command to be implemented\")","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"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":"Jayne1010"},"content":" EditCommand editCommand \u003d new EditCommand(IC_AMY, descriptor);","lastModifiedDate":"2024-03-21"},{"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":"Jayne1010"},"content":" Person lastPerson \u003d model.getAddressBook().getPersonList()","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"Jayne1010"},"content":" .get(model.getAddressBook().getPersonList().size() - 1);","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":63,"author":{"gitId":"-"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2017-05-18"},{"lineNumber":64,"author":{"gitId":"-"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-18"},{"lineNumber":65,"author":{"gitId":"Jayne1010"},"content":" .withIdentityCardNumber(VALID_IDENTITY_CARD_NUMBER_BOB)","lastModifiedDate":"2024-03-21"},{"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":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-05-18"},{"lineNumber":69,"author":{"gitId":"Jayne1010"},"content":" .withIC(VALID_IDENTITY_CARD_NUMBER_BOB)","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":71,"author":{"gitId":"Jayne1010"},"content":" EditCommand editCommand \u003d new EditCommand(IC_BOB, descriptor);","lastModifiedDate":"2024-03-21"},{"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":"-"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2018-08-17"},{"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":"Jayne1010"},"content":" EditCommand editCommand \u003d new EditCommand(IC_AMY, new EditPersonDescriptor());","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"Jayne1010"},"content":" Person editedPerson \u003d new PersonBuilder(AMY).build();","lastModifiedDate":"2024-03-21"},{"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":"Jayne1010"},"content":" showPersonWithIC(model, new IdentityCardNumber(\"S0123456B\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":97,"author":{"gitId":"Jayne1010"},"content":" Person editedPerson \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-21"},{"lineNumber":98,"author":{"gitId":"Jayne1010"},"content":" .withIdentityCardNumber(VALID_IDENTITY_CARD_NUMBER_BOB).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":99,"author":{"gitId":"Jayne1010"},"content":" EditCommand editCommand \u003d new EditCommand(IC_BOB,","lastModifiedDate":"2024-03-21"},{"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":"Jayne1010"},"content":" Person firstPerson \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-21"},{"lineNumber":113,"author":{"gitId":"Jayne1010"},"content":" .withIdentityCardNumber(VALID_IDENTITY_CARD_NUMBER_BOB).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":114,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"Jayne1010"},"content":" EditCommand editCommand \u003d new EditCommand(IC_BOB, descriptor);","lastModifiedDate":"2024-03-21"},{"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":"Jayne1010"},"content":" showPersonWithIC(model, new IdentityCardNumber(\"S0123456B\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":124,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2017-05-18"},{"lineNumber":125,"author":{"gitId":"Jayne1010"},"content":" Person personInList \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-21"},{"lineNumber":126,"author":{"gitId":"Jayne1010"},"content":" .withIdentityCardNumber(VALID_IDENTITY_CARD_NUMBER_BOB).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":127,"author":{"gitId":"Jayne1010"},"content":" EditCommand editCommand \u003d new EditCommand(IC_BOB,","lastModifiedDate":"2024-03-21"},{"lineNumber":128,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":135,"author":{"gitId":"Jayne1010"},"content":" final EditCommand standardCommand \u003d new EditCommand(IC_AMY, DESC_AMY);","lastModifiedDate":"2024-03-21"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":137,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08"},{"lineNumber":139,"author":{"gitId":"Jayne1010"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(IC_AMY, copyDescriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":142,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":148,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":151,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":152,"author":{"gitId":"Jayne1010"},"content":" assertFalse(standardCommand.equals(new EditCommand(IC_BOB, DESC_AMY)));","lastModifiedDate":"2024-03-21"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":154,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":155,"author":{"gitId":"Jayne1010"},"content":" assertFalse(standardCommand.equals(new EditCommand(IC_BOB, DESC_BOB)));","lastModifiedDate":"2024-03-21"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":158,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":161,"author":{"gitId":"Jayne1010"},"content":" EditCommand editCommand \u003d new EditCommand(IC_BOB, editPersonDescriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":162,"author":{"gitId":"Jayne1010"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{ic\u003d\" + IC_DESC_BOB + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2024-03-21"},{"lineNumber":163,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08"}],"authorContributionMap":{"Jayne1010":33,"drustanyjt":2,"-":131}},{"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":"Jayne1010"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", ic\u003d\"","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"Jayne1010"},"content":" + editPersonDescriptor.getIC().orElse(null) + \", age\u003d\"","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"Jayne1010"},"content":" + editPersonDescriptor.getAge().orElse(null) + \", sex\u003d\"","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"Jayne1010"},"content":" + editPersonDescriptor.getSex().orElse(null) + \", address\u003d\"","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getAddress().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getTags().orElse(null) + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"Jayne1010":4,"-":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":"jiahui0309"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"jiahui0309"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"jiahui0309"},"content":"import seedu.address.model.person.IdentityCardNumberMatchesPredicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code FindCommand}.","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class FindCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-27"},{"lineNumber":31,"author":{"gitId":"jiahui0309"},"content":" IdentityCardNumberMatchesPredicate firstPredicate \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"jiahui0309"},"content":" new IdentityCardNumberMatchesPredicate(new IdentityCardNumber(\"S1234567A\"));","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"jiahui0309"},"content":" IdentityCardNumberMatchesPredicate secondPredicate \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"jiahui0309"},"content":" new IdentityCardNumberMatchesPredicate(new IdentityCardNumber(\"S9876543B\"));","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" FindCommand findFirstCommand \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" FindCommand findSecondCommand \u003d new FindCommand(secondPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" FindCommand findFirstCommandCopy \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","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-12"},{"lineNumber":57,"author":{"gitId":"jiahui0309"},"content":" public void execute_validIC_singlePersonFound() {","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"jiahui0309"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 1);","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"jiahui0309"},"content":" IdentityCardNumberMatchesPredicate predicate \u003d preparePredicate(\"S1234567A\");","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":63,"author":{"gitId":"jiahui0309"},"content":" assertEquals(Collections.singletonList(ALICE), model.getFilteredPersonList());","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"jiahui0309"},"content":" IdentityCardNumberMatchesPredicate predicate \u003d new IdentityCardNumberMatchesPredicate(","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"jiahui0309"},"content":" new IdentityCardNumber(\"S1234567A\"));","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"-"},"content":" FindCommand findCommand \u003d new FindCommand(predicate);","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2018-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":78,"author":{"gitId":"jiahui0309"},"content":" private IdentityCardNumberMatchesPredicate preparePredicate(String userInput) {","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"jiahui0309"},"content":" return new IdentityCardNumberMatchesPredicate(new IdentityCardNumber(userInput));","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":81,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"},{"lineNumber":82,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"-":65,"jiahui0309":17}},{"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":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.AGE_DESC_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.AGE_DESC_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.IC_DESC_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.IC_DESC_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_AGE;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_IC;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_SEX;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SEX_DESC_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SEX_DESC_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AGE;","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_IC;","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SEX;","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":47,"author":{"gitId":"drustanyjt"},"content":"import org.junit.jupiter.api.Disabled;","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":51,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-06-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15"},{"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":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-06-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":60,"author":{"gitId":"drustanyjt"},"content":"@Disabled(\"Requires add Command to be implemented\")","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":66,"author":{"gitId":"Jayne1010"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":70,"author":{"gitId":"Jayne1010"},"content":" + IC_DESC_BOB + AGE_DESC_BOB + SEX_DESC_BOB + ADDRESS_DESC_BOB, new AddCommand(expectedPerson));","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15"},{"lineNumber":74,"author":{"gitId":"Jayne1010"},"content":" Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB)","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":77,"author":{"gitId":"Jayne1010"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + IC_DESC_BOB","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"Jayne1010"},"content":" + AGE_DESC_BOB + SEX_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"-"},"content":" new AddCommand(expectedPersonMultipleTags));","lastModifiedDate":"2023-07-14"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-07-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND;","lastModifiedDate":"2023-07-14"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":99,"author":{"gitId":"Jayne1010"},"content":" // multiple ic","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, IC_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-20"},{"lineNumber":101,"author":{"gitId":"Jayne1010"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_IC));","lastModifiedDate":"2024-03-20"},{"lineNumber":102,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":103,"author":{"gitId":"Jayne1010"},"content":" // multiple age","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, AGE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"Jayne1010"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_AGE));","lastModifiedDate":"2024-03-20"},{"lineNumber":106,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":107,"author":{"gitId":"Jayne1010"},"content":" // multiple sex","lastModifiedDate":"2024-03-20"},{"lineNumber":108,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, SEX_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-20"},{"lineNumber":109,"author":{"gitId":"Jayne1010"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_SEX));","lastModifiedDate":"2024-03-20"},{"lineNumber":110,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":111,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2023-07-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":" + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_ADDRESS, PREFIX_EMAIL, PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":137,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":139,"author":{"gitId":"Jayne1010"},"content":" // invalid sex","lastModifiedDate":"2024-03-20"},{"lineNumber":140,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, INVALID_SEX + validExpectedPersonString,","lastModifiedDate":"2024-03-20"},{"lineNumber":141,"author":{"gitId":"Jayne1010"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_SEX));","lastModifiedDate":"2024-03-20"},{"lineNumber":142,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":143,"author":{"gitId":"Jayne1010"},"content":" // invalid age","lastModifiedDate":"2024-03-20"},{"lineNumber":144,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, INVALID_AGE + validExpectedPersonString,","lastModifiedDate":"2024-03-20"},{"lineNumber":145,"author":{"gitId":"Jayne1010"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_AGE));","lastModifiedDate":"2024-03-20"},{"lineNumber":146,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":147,"author":{"gitId":"Jayne1010"},"content":" // invalid ic","lastModifiedDate":"2024-03-20"},{"lineNumber":148,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, INVALID_IC + validExpectedPersonString,","lastModifiedDate":"2024-03-20"},{"lineNumber":149,"author":{"gitId":"Jayne1010"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_IC));","lastModifiedDate":"2024-03-20"},{"lineNumber":150,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":151,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":153,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":154,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":155,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":157,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":159,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":161,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":163,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":165,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":167,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":168,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":169,"author":{"gitId":"Jayne1010"},"content":" // invalid age","lastModifiedDate":"2024-03-20"},{"lineNumber":170,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_AGE,","lastModifiedDate":"2024-03-20"},{"lineNumber":171,"author":{"gitId":"Jayne1010"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_AGE));","lastModifiedDate":"2024-03-20"},{"lineNumber":172,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":173,"author":{"gitId":"Jayne1010"},"content":" // invalid sex","lastModifiedDate":"2024-03-20"},{"lineNumber":174,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_SEX,","lastModifiedDate":"2024-03-20"},{"lineNumber":175,"author":{"gitId":"Jayne1010"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_SEX));","lastModifiedDate":"2024-03-20"},{"lineNumber":176,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":177,"author":{"gitId":"Jayne1010"},"content":" // invalid ic","lastModifiedDate":"2024-03-20"},{"lineNumber":178,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_IC,","lastModifiedDate":"2024-03-20"},{"lineNumber":179,"author":{"gitId":"Jayne1010"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_IC));","lastModifiedDate":"2024-03-20"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":182,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":183,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":184,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15"},{"lineNumber":185,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2018-07-25"},{"lineNumber":186,"author":{"gitId":"Jayne1010"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + IC_DESC_AMY","lastModifiedDate":"2024-03-20"},{"lineNumber":187,"author":{"gitId":"Jayne1010"},"content":" + AGE_DESC_AMY + SEX_DESC_AMY + ADDRESS_DESC_AMY,","lastModifiedDate":"2024-03-20"},{"lineNumber":188,"author":{"gitId":"-"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2017-12-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":191,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":192,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":193,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":195,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":196,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":199,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":200,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":203,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":204,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":207,"author":{"gitId":"Jayne1010"},"content":" // missing age prefix","lastModifiedDate":"2024-03-20"},{"lineNumber":208,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-03-20"},{"lineNumber":209,"author":{"gitId":"Jayne1010"},"content":" expectedMessage);","lastModifiedDate":"2024-03-20"},{"lineNumber":210,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":211,"author":{"gitId":"Jayne1010"},"content":" // missing sex prefix","lastModifiedDate":"2024-03-20"},{"lineNumber":212,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-03-20"},{"lineNumber":213,"author":{"gitId":"Jayne1010"},"content":" expectedMessage);","lastModifiedDate":"2024-03-20"},{"lineNumber":214,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":215,"author":{"gitId":"Jayne1010"},"content":" // missing ic prefix","lastModifiedDate":"2024-03-20"},{"lineNumber":216,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-03-20"},{"lineNumber":217,"author":{"gitId":"Jayne1010"},"content":" expectedMessage);","lastModifiedDate":"2024-03-20"},{"lineNumber":218,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":219,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":220,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":223,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15"},{"lineNumber":224,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":226,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":228,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":229,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":230,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":231,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-20"},{"lineNumber":232,"author":{"gitId":"Jayne1010"},"content":" + IC_DESC_BOB + AGE_DESC_BOB + SEX_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-20"},{"lineNumber":233,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":235,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15"},{"lineNumber":236,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-20"},{"lineNumber":237,"author":{"gitId":"Jayne1010"},"content":" + IC_DESC_BOB + AGE_DESC_BOB + SEX_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-20"},{"lineNumber":238,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":240,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15"},{"lineNumber":241,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC","lastModifiedDate":"2024-03-20"},{"lineNumber":242,"author":{"gitId":"Jayne1010"},"content":" + IC_DESC_BOB + AGE_DESC_BOB + SEX_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-20"},{"lineNumber":243,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":245,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15"},{"lineNumber":246,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-20"},{"lineNumber":247,"author":{"gitId":"Jayne1010"},"content":" + IC_DESC_BOB + AGE_DESC_BOB + SEX_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2024-03-20"},{"lineNumber":248,"author":{"gitId":"Jayne1010"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-20"},{"lineNumber":249,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":250,"author":{"gitId":"Jayne1010"},"content":" // invalid age","lastModifiedDate":"2024-03-20"},{"lineNumber":251,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-20"},{"lineNumber":252,"author":{"gitId":"Jayne1010"},"content":" + IC_DESC_BOB + INVALID_AGE + SEX_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-20"},{"lineNumber":253,"author":{"gitId":"Jayne1010"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-20"},{"lineNumber":254,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":255,"author":{"gitId":"Jayne1010"},"content":" // invalid sex","lastModifiedDate":"2024-03-20"},{"lineNumber":256,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-20"},{"lineNumber":257,"author":{"gitId":"Jayne1010"},"content":" + IC_DESC_BOB + AGE_DESC_BOB + INVALID_SEX + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-20"},{"lineNumber":258,"author":{"gitId":"Jayne1010"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-20"},{"lineNumber":259,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":260,"author":{"gitId":"Jayne1010"},"content":" // invalid ic","lastModifiedDate":"2024-03-20"},{"lineNumber":261,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-20"},{"lineNumber":262,"author":{"gitId":"Jayne1010"},"content":" + INVALID_IC + AGE_DESC_BOB + SEX_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-20"},{"lineNumber":263,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":265,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15"},{"lineNumber":266,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":" + INVALID_TAG_DESC + VALID_TAG_FRIEND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":269,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":270,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC,","lastModifiedDate":"2017-12-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2017-12-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23"},{"lineNumber":277,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":278,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"Jayne1010":90,"drustanyjt":2,"-":186}},{"path":"src/test/java/seedu/address/logic/parser/AddNoteCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"tengcharmaine"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"tengcharmaine"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"tengcharmaine"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"tengcharmaine"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.logic.commands.AddNoteCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"tengcharmaine"},"content":"public class AddNoteCommandParserTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"tengcharmaine"},"content":" private AddNoteCommandParser parser \u003d new AddNoteCommandParser();","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"tengcharmaine"},"content":" private final String nonEmptyNote \u003d \"Some note.\";","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"tengcharmaine"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"tengcharmaine"},"content":" public void parse_missingCompulsoryField_failure() {","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"tengcharmaine"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddNoteCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"tengcharmaine"},"content":" // no parameters","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"tengcharmaine"},"content":" assertParseFailure(parser, AddNoteCommand.COMMAND_WORD, expectedMessage);","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"tengcharmaine"},"content":" // no index","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"tengcharmaine"},"content":" assertParseFailure(parser, AddNoteCommand.COMMAND_WORD + \" \" + nonEmptyNote, expectedMessage);","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"tengcharmaine"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"tengcharmaine":24}},{"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":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.AGE_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.IC_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SEX_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_AGE_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_IDENTITY_CARD_NUMBER_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SEX_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"tengcharmaine"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FLAG;","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"tengcharmaine"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_IC;","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"tengcharmaine"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NOTE;","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":26,"author":{"gitId":"drustanyjt"},"content":"import org.junit.jupiter.api.Disabled;","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.logic.commands.AddNoteCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-06-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24"},{"lineNumber":40,"author":{"gitId":"jiahui0309"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"jiahui0309"},"content":"import seedu.address.model.person.IdentityCardNumberMatchesPredicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.model.person.Note;","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":52,"author":{"gitId":"drustanyjt"},"content":" @Disabled(\"Requires add Command to be implemented\")","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27"},{"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":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","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_delete() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":68,"author":{"gitId":"jiahui0309"},"content":" String args \u003d \"s1234567a\";","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":70,"author":{"gitId":"jiahui0309"},"content":" DeleteCommand.COMMAND_WORD + \" \" + args);","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"jiahui0309"},"content":" assertEquals(new DeleteCommand(new IdentityCardNumberMatchesPredicate(","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"jiahui0309"},"content":" new IdentityCardNumber(args))), command);","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":77,"author":{"gitId":"Jayne1010"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"Jayne1010"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withIC(VALID_IDENTITY_CARD_NUMBER_AMY)","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"Jayne1010"},"content":" .withSex(VALID_SEX_AMY).withAge(VALID_AGE_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"Jayne1010"},"content":" .build();","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"Jayne1010"},"content":" String userInput \u003d EditCommand.COMMAND_WORD + \" \" + VALID_IDENTITY_CARD_NUMBER_AMY","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"Jayne1010"},"content":" + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"Jayne1010"},"content":" + EMAIL_DESC_AMY + IC_DESC_AMY + AGE_DESC_AMY + SEX_DESC_AMY + ADDRESS_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"Jayne1010"},"content":" EditCommand expectedCommand \u003d new EditCommand(new IdentityCardNumberMatchesPredicate(","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"Jayne1010"},"content":" new IdentityCardNumber(VALID_IDENTITY_CARD_NUMBER_AMY)), descriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"Jayne1010"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(userInput);","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"Jayne1010"},"content":" assertEquals(expectedCommand, command);","lastModifiedDate":"2024-03-21"},{"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_exit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"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_find() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":100,"author":{"gitId":"jiahui0309"},"content":" String args \u003d \"s1234567a\";","lastModifiedDate":"2024-03-16"},{"lineNumber":101,"author":{"gitId":"jiahui0309"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(FindCommand.COMMAND_WORD + \" \" + args);","lastModifiedDate":"2024-03-16"},{"lineNumber":102,"author":{"gitId":"jiahui0309"},"content":" assertEquals(new FindCommand(new IdentityCardNumberMatchesPredicate(new IdentityCardNumber(args))), command);","lastModifiedDate":"2024-03-16"},{"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_help() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":117,"author":{"gitId":"tengcharmaine"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":118,"author":{"gitId":"tengcharmaine"},"content":" public void parseCommand_addNote_withReplaceFlag() throws Exception {","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"tengcharmaine"},"content":" final Note note \u003d new Note(\"Some note.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"tengcharmaine"},"content":" AddNoteCommand command \u003d (AddNoteCommand) parser.parseCommand(AddNoteCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"tengcharmaine"},"content":" + PREFIX_IC + \"S0123456Q \" + PREFIX_NOTE + note.value + \" \" + PREFIX_FLAG);","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"tengcharmaine"},"content":" assertEquals(new AddNoteCommand(new IdentityCardNumberMatchesPredicate(new IdentityCardNumber(\"S0123456Q\")),","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"tengcharmaine"},"content":" note, true), command);","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"tengcharmaine"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"tengcharmaine"},"content":" public void parseCommand_addNote_withoutReplaceFlag() throws Exception {","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"tengcharmaine"},"content":" final Note note \u003d new Note(\"Some note.\");","lastModifiedDate":"2024-03-16"},{"lineNumber":129,"author":{"gitId":"tengcharmaine"},"content":" AddNoteCommand command \u003d (AddNoteCommand) parser.parseCommand(AddNoteCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2024-03-16"},{"lineNumber":130,"author":{"gitId":"tengcharmaine"},"content":" + PREFIX_IC + \"S0123456Q \" + PREFIX_NOTE + note.value);","lastModifiedDate":"2024-03-16"},{"lineNumber":131,"author":{"gitId":"tengcharmaine"},"content":" assertEquals(new AddNoteCommand(new IdentityCardNumberMatchesPredicate(new IdentityCardNumber(\"S0123456Q\")),","lastModifiedDate":"2024-03-16"},{"lineNumber":132,"author":{"gitId":"tengcharmaine"},"content":" note, false), command);","lastModifiedDate":"2024-03-16"},{"lineNumber":133,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":134,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":136,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":145,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"Jayne1010":27,"drustanyjt":2,"tengcharmaine":23,"-":84,"jiahui0309":9}},{"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":"2017-06-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-09"},{"lineNumber":10,"author":{"gitId":"jiahui0309"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"jiahui0309"},"content":"import seedu.address.model.person.IdentityCardNumberMatchesPredicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * As we are only doing white-box testing, our test cases do not cover path variations","lastModifiedDate":"2017-06-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * outside of the DeleteCommand code. For example, inputs \"1\" and \"1 abc\" take the","lastModifiedDate":"2017-06-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * same path through the DeleteCommand, and therefore we test only one of them.","lastModifiedDate":"2017-06-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * The path variation for those two cases occur inside the ParserUtil, and","lastModifiedDate":"2017-06-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * therefore should be covered by the ParserUtilTest.","lastModifiedDate":"2017-06-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class DeleteCommandParserTest {","lastModifiedDate":"2017-06-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private DeleteCommandParser parser \u003d new DeleteCommandParser();","lastModifiedDate":"2017-06-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsDeleteCommand() {","lastModifiedDate":"2017-08-15"},{"lineNumber":26,"author":{"gitId":"jiahui0309"},"content":" DeleteCommand expectedDeleteCommand \u003d new DeleteCommand(new IdentityCardNumberMatchesPredicate(","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"jiahui0309"},"content":" new IdentityCardNumber(\"S1234567A\")));","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"jiahui0309"},"content":" assertParseSuccess(parser, \"S1234567A\", expectedDeleteCommand);","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":33,"author":{"gitId":"jiahui0309"},"content":" // IC with incorrect format","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"jiahui0309"},"content":" assertParseFailure(parser, \"S1234\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"jiahui0309"},"content":" // IC with incorrect format and additional arguments","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"jiahui0309"},"content":" assertParseFailure(parser, \"S1234 extra\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"jiahui0309"},"content":" DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"jiahui0309"},"content":" // IC with correct format but contains non-alphanumeric characters","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"jiahui0309"},"content":" assertParseFailure(parser, \"S1234$%^\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"jiahui0309"},"content":" DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09"}],"authorContributionMap":{"-":29,"jiahui0309":15}},{"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":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.AGE_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"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":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.IC_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"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":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","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":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SEX_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":19,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_AGE_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":21,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_IDENTITY_CARD_NUMBER_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_IDENTITY_CARD_NUMBER_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":25,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SEX_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14"},{"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_PHONE;","lastModifiedDate":"2023-07-14"},{"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":"","lastModifiedDate":"2017-05-04"},{"lineNumber":32,"author":{"gitId":"Jayne1010"},"content":"import org.junit.jupiter.api.Disabled;","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-04"},{"lineNumber":40,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.IdentityCardNumberMatchesPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-04"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":46,"author":{"gitId":"Jayne1010"},"content":"@Disabled(\"Boo\")","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":49,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"Jayne1010"},"content":" private static final String IC_INVALID \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"Jayne1010"},"content":" String.format(IdentityCardNumber.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-21"},{"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":"","lastModifiedDate":"2017-05-04"},{"lineNumber":60,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":61,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, \"S0123456A\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","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_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06"},{"lineNumber":69,"author":{"gitId":"Jayne1010"},"content":" // too short string","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, \"S09\" + NAME_DESC_AMY, IC_INVALID);","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":72,"author":{"gitId":"Jayne1010"},"content":" // Wrong format","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, \"P0123456A\" + NAME_DESC_AMY, IC_INVALID);","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":75,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":76,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, \"some random string\", IC_INVALID);","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":78,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":79,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, \"1 i/ string\", IC_INVALID);","lastModifiedDate":"2024-03-21"},{"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_invalidValue_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":84,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, \"S0123456A\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, \"S0123456A\" + INVALID_PHONE_DESC,","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"Jayne1010"},"content":" Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, \"S0123456A\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, \"S0123456A\" + INVALID_ADDRESS_DESC, Address.MESSAGE_CONSTRAINTS); // invalid address","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":90,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04"},{"lineNumber":91,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, \"S0123456A\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY,","lastModifiedDate":"2024-03-21"},{"lineNumber":92,"author":{"gitId":"Jayne1010"},"content":" Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":94,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04"},{"lineNumber":95,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, \"S0123456A\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2024-03-21"},{"lineNumber":96,"author":{"gitId":"Jayne1010"},"content":" + VALID_ADDRESS_AMY + VALID_PHONE_AMY,","lastModifiedDate":"2024-03-21"},{"lineNumber":97,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":102,"author":{"gitId":"Jayne1010"},"content":" String userInput \u003d VALID_IDENTITY_CARD_NUMBER_AMY + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2024-03-21"},{"lineNumber":103,"author":{"gitId":"Jayne1010"},"content":" + EMAIL_DESC_AMY + IC_DESC_AMY + AGE_DESC_AMY + SEX_DESC_AMY + ADDRESS_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":104,"author":{"gitId":"Jayne1010"},"content":" IdentityCardNumberMatchesPredicate ic \u003d new IdentityCardNumberMatchesPredicate(","lastModifiedDate":"2024-03-21"},{"lineNumber":105,"author":{"gitId":"Jayne1010"},"content":" new IdentityCardNumber(VALID_IDENTITY_CARD_NUMBER_AMY));","lastModifiedDate":"2024-03-21"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":107,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-05-04"},{"lineNumber":108,"author":{"gitId":"Jayne1010"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withIC(VALID_IDENTITY_CARD_NUMBER_AMY)","lastModifiedDate":"2024-03-21"},{"lineNumber":109,"author":{"gitId":"Jayne1010"},"content":" .withSex(VALID_SEX_AMY).withAge(VALID_AGE_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2024-03-21"},{"lineNumber":110,"author":{"gitId":"Jayne1010"},"content":" .build();","lastModifiedDate":"2024-03-21"},{"lineNumber":111,"author":{"gitId":"Jayne1010"},"content":" EditCommand expectedCommand \u003d new EditCommand(ic, descriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":118,"author":{"gitId":"Jayne1010"},"content":" String userInput \u003d VALID_IDENTITY_CARD_NUMBER_AMY + NAME_DESC_AMY + PHONE_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":119,"author":{"gitId":"Jayne1010"},"content":" IdentityCardNumberMatchesPredicate ic \u003d new IdentityCardNumberMatchesPredicate(","lastModifiedDate":"2024-03-21"},{"lineNumber":120,"author":{"gitId":"Jayne1010"},"content":" new IdentityCardNumber(VALID_IDENTITY_CARD_NUMBER_AMY));","lastModifiedDate":"2024-03-21"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":122,"author":{"gitId":"Jayne1010"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-03-21"},{"lineNumber":123,"author":{"gitId":"Jayne1010"},"content":" .withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":124,"author":{"gitId":"Jayne1010"},"content":" EditCommand expectedCommand \u003d new EditCommand(ic, descriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":130,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":131,"author":{"gitId":"Jayne1010"},"content":" IdentityCardNumberMatchesPredicate ic \u003d new IdentityCardNumberMatchesPredicate(","lastModifiedDate":"2024-03-21"},{"lineNumber":132,"author":{"gitId":"Jayne1010"},"content":" new IdentityCardNumber(VALID_IDENTITY_CARD_NUMBER_AMY));","lastModifiedDate":"2024-03-21"},{"lineNumber":133,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04"},{"lineNumber":134,"author":{"gitId":"Jayne1010"},"content":" String userInput \u003d VALID_IDENTITY_CARD_NUMBER_AMY + NAME_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":135,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":136,"author":{"gitId":"Jayne1010"},"content":" EditCommand expectedCommand \u003d new EditCommand(ic, descriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":139,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2017-05-04"},{"lineNumber":140,"author":{"gitId":"Jayne1010"},"content":" userInput \u003d VALID_IDENTITY_CARD_NUMBER_AMY + PHONE_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":141,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":142,"author":{"gitId":"Jayne1010"},"content":" expectedCommand \u003d new EditCommand(ic, descriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":145,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04"},{"lineNumber":146,"author":{"gitId":"Jayne1010"},"content":" userInput \u003d VALID_IDENTITY_CARD_NUMBER_AMY + EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":147,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":148,"author":{"gitId":"Jayne1010"},"content":" expectedCommand \u003d new EditCommand(ic, descriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":151,"author":{"gitId":"Jayne1010"},"content":" // sex","lastModifiedDate":"2024-03-21"},{"lineNumber":152,"author":{"gitId":"Jayne1010"},"content":" userInput \u003d VALID_IDENTITY_CARD_NUMBER_AMY + SEX_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":153,"author":{"gitId":"Jayne1010"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withSex(VALID_SEX_AMY).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":154,"author":{"gitId":"Jayne1010"},"content":" expectedCommand \u003d new EditCommand(ic, descriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":155,"author":{"gitId":"Jayne1010"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-21"},{"lineNumber":156,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":157,"author":{"gitId":"Jayne1010"},"content":" // age","lastModifiedDate":"2024-03-21"},{"lineNumber":158,"author":{"gitId":"Jayne1010"},"content":" userInput \u003d VALID_IDENTITY_CARD_NUMBER_AMY + AGE_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":159,"author":{"gitId":"Jayne1010"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withAge(VALID_AGE_AMY).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":160,"author":{"gitId":"Jayne1010"},"content":" expectedCommand \u003d new EditCommand(ic, descriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":161,"author":{"gitId":"Jayne1010"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-21"},{"lineNumber":162,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":163,"author":{"gitId":"Jayne1010"},"content":" // IC number","lastModifiedDate":"2024-03-21"},{"lineNumber":164,"author":{"gitId":"Jayne1010"},"content":" userInput \u003d VALID_IDENTITY_CARD_NUMBER_AMY + IC_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":165,"author":{"gitId":"Jayne1010"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withIC(VALID_IDENTITY_CARD_NUMBER_AMY).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":166,"author":{"gitId":"Jayne1010"},"content":" expectedCommand \u003d new EditCommand(ic, descriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":167,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":169,"author":{"gitId":"Jayne1010"},"content":" // address","lastModifiedDate":"2024-03-21"},{"lineNumber":170,"author":{"gitId":"Jayne1010"},"content":" userInput \u003d VALID_IDENTITY_CARD_NUMBER_AMY + ADDRESS_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":171,"author":{"gitId":"Jayne1010"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":172,"author":{"gitId":"Jayne1010"},"content":" expectedCommand \u003d new EditCommand(ic, descriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":173,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"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":"Jayne1010"},"content":" String userInput \u003d VALID_IDENTITY_CARD_NUMBER_BOB + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2024-03-21"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":184,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":186,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14"},{"lineNumber":187,"author":{"gitId":"Jayne1010"},"content":" userInput \u003d VALID_IDENTITY_CARD_NUMBER_AMY + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":189,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":191,"author":{"gitId":"Jayne1010"},"content":" // multiple valid fields repeated","lastModifiedDate":"2024-03-21"},{"lineNumber":192,"author":{"gitId":"Jayne1010"},"content":" userInput \u003d VALID_IDENTITY_CARD_NUMBER_BOB + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2024-03-21"},{"lineNumber":193,"author":{"gitId":"Jayne1010"},"content":" + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2024-03-21"},{"lineNumber":194,"author":{"gitId":"Jayne1010"},"content":" + PHONE_DESC_BOB + ADDRESS_DESC_BOB + EMAIL_DESC_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":196,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":197,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":199,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14"},{"lineNumber":200,"author":{"gitId":"Jayne1010"},"content":" userInput \u003d VALID_IDENTITY_CARD_NUMBER_BOB + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2024-03-21"},{"lineNumber":201,"author":{"gitId":"-"},"content":" + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2023-07-14"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":203,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":204,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":205,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":206,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04"}],"authorContributionMap":{"Jayne1010":79,"-":127}},{"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":"jiahui0309"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":11,"author":{"gitId":"jiahui0309"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"jiahui0309"},"content":"import seedu.address.model.person.IdentityCardNumberMatchesPredicate;","lastModifiedDate":"2024-03-16"},{"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":" FindCommand expectedFindCommand \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"jiahui0309"},"content":" new FindCommand(new IdentityCardNumberMatchesPredicate(new IdentityCardNumber(\"S1234567A\")));","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"jiahui0309"},"content":" assertParseSuccess(parser, \"S1234567A\", expectedFindCommand);","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2017-06-27"},{"lineNumber":30,"author":{"gitId":"jiahui0309"},"content":" assertParseSuccess(parser, \" \\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"jiahui0309"},"content":" + \" S1234567A \\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"jiahui0309"},"content":" + \" \\t \\t\", expectedFindCommand);","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"jiahui0309"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"jiahui0309"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"jiahui0309"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"jiahui0309"},"content":" // IC with incorrect format","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"jiahui0309"},"content":" assertParseFailure(parser, \"S1234\", IdentityCardNumber.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"jiahui0309"},"content":" // IC with incorrect format and additional arguments","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"jiahui0309"},"content":" assertParseFailure(parser, \"S1234 extra\", IdentityCardNumber.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"jiahui0309"},"content":" // IC with correct format but contains non-alphanumeric characters","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"jiahui0309"},"content":" assertParseFailure(parser, \"S1234$%^\", IdentityCardNumber.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"jiahui0309"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"jiahui0309"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"jiahui0309"},"content":" public void parse_nullArgs_throwsNullPointerException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"jiahui0309"},"content":" assertThrows(NullPointerException.class, () -\u003e parser.parse(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-27"}],"authorContributionMap":{"-":27,"jiahui0309":25}},{"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.Address;","lastModifiedDate":"2017-05-22"},{"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":"-"},"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":"-"},"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"},{"lineNumber":197,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"Jayne1010":1,"-":196}},{"path":"src/test/java/seedu/address/model/person/AgeTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"drustanyjt"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"drustanyjt"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"drustanyjt"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"drustanyjt"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"drustanyjt"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"drustanyjt"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"drustanyjt"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"drustanyjt"},"content":"public class AgeTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"drustanyjt"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"drustanyjt"},"content":" assertThrows(NullPointerException.class, () -\u003e new Age(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"drustanyjt"},"content":" public void constructor_invalidAge_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"drustanyjt"},"content":" String invalidAge \u003d \"\";","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"drustanyjt"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Age(invalidAge));","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"drustanyjt"},"content":" public void isValidAge() {","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"drustanyjt"},"content":" // null age","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"drustanyjt"},"content":" assertThrows(NullPointerException.class, () -\u003e Age.isValidAge(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"drustanyjt"},"content":" // invalid age","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"drustanyjt"},"content":" assertFalse(Age.isValidAge(\"\")); // empty string","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"drustanyjt"},"content":" assertFalse(Age.isValidAge(\" \")); // spaces only","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"drustanyjt"},"content":" assertFalse(Age.isValidAge(\"age\")); // non-numeric","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"drustanyjt"},"content":" assertFalse(Age.isValidAge(\"-1\")); // negative number","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"drustanyjt"},"content":" // valid age","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"drustanyjt"},"content":" assertTrue(Age.isValidAge(\"1\")); // one number","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"drustanyjt"},"content":" assertTrue(Age.isValidAge(\"12\")); // two numbers","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"drustanyjt"},"content":" assertTrue(Age.isValidAge(\"123\")); // three numbers","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"drustanyjt"},"content":" public void equals() {","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"drustanyjt"},"content":" Age age \u003d new Age(\"123\");","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"drustanyjt"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"drustanyjt"},"content":" assertTrue(age.equals(new Age(\"123\")));","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"drustanyjt"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"drustanyjt"},"content":" assertTrue(age.equals(age));","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"drustanyjt"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"drustanyjt"},"content":" assertFalse(age.equals(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"drustanyjt"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"drustanyjt"},"content":" assertFalse(age.equals(5.0f));","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"drustanyjt"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"drustanyjt"},"content":" assertFalse(age.equals(new Age(\"321\")));","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"drustanyjt"},"content":" public void hash() {","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"drustanyjt"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"drustanyjt"},"content":" Age ageCopy \u003d new Age(\"123\");","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"drustanyjt"},"content":" assertEquals(ageCopy.hashCode(), ageCopy.hashCode());","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"drustanyjt"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"drustanyjt"},"content":" Age age \u003d new Age(\"123\");","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"drustanyjt"},"content":" assertEquals(age.hashCode(), age.hashCode());","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"drustanyjt"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"drustanyjt"},"content":" Age differentAge \u003d new Age(\"321\");","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"drustanyjt"},"content":" assertNotEquals(age.hashCode(), differentAge.hashCode());","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"drustanyjt"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"drustanyjt":75}},{"path":"src/test/java/seedu/address/model/person/IdentityCardNumberTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"drustanyjt"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"drustanyjt"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"drustanyjt"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"drustanyjt"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"drustanyjt"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"drustanyjt"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"drustanyjt"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"drustanyjt"},"content":"public class IdentityCardNumberTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"drustanyjt"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"drustanyjt"},"content":" assertThrows(NullPointerException.class, () -\u003e new IdentityCardNumber(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"drustanyjt"},"content":" public void constructor_invalidIdentityCardNumber_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"drustanyjt"},"content":" String invalidIdentityCardNumber \u003d \"\";","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"drustanyjt"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new IdentityCardNumber(invalidIdentityCardNumber));","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"drustanyjt"},"content":" public void isValidIdentityCardNumber() {","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"drustanyjt"},"content":" // null identity card number","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"drustanyjt"},"content":" assertThrows(NullPointerException.class, () -\u003e IdentityCardNumber.isValidIdentityCardNumber(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"drustanyjt"},"content":" // invalid identity card number","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"drustanyjt"},"content":" assertFalse(IdentityCardNumber.isValidIdentityCardNumber(\"\")); // empty string","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"drustanyjt"},"content":" assertFalse(IdentityCardNumber.isValidIdentityCardNumber(\" \")); // spaces only","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"drustanyjt"},"content":" assertFalse(IdentityCardNumber.isValidIdentityCardNumber(\"1234abc\")); // alphanumeric","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"drustanyjt"},"content":" assertFalse(IdentityCardNumber.isValidIdentityCardNumber(\"1234 5678\")); // spaces within digits","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"drustanyjt"},"content":" // valid identity card number","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"drustanyjt"},"content":" assertTrue(IdentityCardNumber.isValidIdentityCardNumber(\"S1234567A\")); // starts with S","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"drustanyjt"},"content":" assertTrue(IdentityCardNumber.isValidIdentityCardNumber(\"T1234567A\")); // starts with T","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"drustanyjt"},"content":" assertTrue(IdentityCardNumber.isValidIdentityCardNumber(\"F1234567A\")); // starts with F","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"drustanyjt"},"content":" assertTrue(IdentityCardNumber.isValidIdentityCardNumber(\"G1234567A\")); // starts with G","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"drustanyjt"},"content":" public void equals() {","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"drustanyjt"},"content":" // remember the format is [STFG][0-9]{7}[A-Z]","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"drustanyjt"},"content":" IdentityCardNumber identityCardNumber \u003d new IdentityCardNumber(\"S1234567A\");","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"drustanyjt"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"drustanyjt"},"content":" IdentityCardNumber identityCardNumberCopy \u003d new IdentityCardNumber(\"S1234567A\");","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"drustanyjt"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"drustanyjt"},"content":" assertTrue(identityCardNumber.equals(identityCardNumber));","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"drustanyjt"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"drustanyjt"},"content":" assertFalse(identityCardNumber.equals(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"drustanyjt"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"drustanyjt"},"content":" assertFalse(identityCardNumber.equals(5.0f));","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"drustanyjt"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"drustanyjt"},"content":" assertFalse(identityCardNumber.equals(new IdentityCardNumber(\"T1234567A\")));","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"drustanyjt"},"content":" public void hash() {","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"drustanyjt"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"drustanyjt"},"content":" IdentityCardNumber identityCardNumber \u003d new IdentityCardNumber(\"S1234567A\");","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"drustanyjt"},"content":" assertEquals(identityCardNumber.hashCode(), identityCardNumber.hashCode());","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"drustanyjt"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"drustanyjt"},"content":" IdentityCardNumber identityCardNumberCopy \u003d new IdentityCardNumber(\"S1234567A\");","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"drustanyjt"},"content":" assertEquals(identityCardNumber.hashCode(), identityCardNumberCopy.hashCode());","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"drustanyjt"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"drustanyjt"},"content":" assertNotEquals(identityCardNumber.hashCode(), new IdentityCardNumber(\"T1234567A\").hashCode());","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"drustanyjt"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"drustanyjt":77}},{"path":"src/test/java/seedu/address/model/person/NoteTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"tengcharmaine"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"tengcharmaine"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"tengcharmaine"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"tengcharmaine"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"tengcharmaine"},"content":"public class NoteTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"tengcharmaine"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"tengcharmaine"},"content":" public void equals() {","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"tengcharmaine"},"content":" Note remark \u003d new Note(\"Hello\");","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"tengcharmaine"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"tengcharmaine"},"content":" assertTrue(remark.equals(remark));","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"tengcharmaine"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"tengcharmaine"},"content":" Note remarkCopy \u003d new Note(remark.value);","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"tengcharmaine"},"content":" assertTrue(remark.equals(remarkCopy));","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"tengcharmaine"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"tengcharmaine"},"content":" assertFalse(remark.equals(1));","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"tengcharmaine"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"tengcharmaine"},"content":" assertFalse(remark.equals(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"tengcharmaine"},"content":" // different remark -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"tengcharmaine"},"content":" Note differentRemark \u003d new Note(\"Bye\");","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"tengcharmaine"},"content":" assertFalse(remark.equals(differentRemark));","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"tengcharmaine"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"tengcharmaine":31}},{"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":"drustanyjt"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-16"},{"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_ADDRESS_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19"},{"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":"-"},"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":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18"},{"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":"-"},"content":" .withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2020-12-18"},{"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":"jiahui0309"},"content":" // different name, all other attributes same -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":43,"author":{"gitId":"jiahui0309"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":45,"author":{"gitId":"jiahui0309"},"content":" // name differs in case, all other attributes same -\u003e returns true","lastModifiedDate":"2024-03-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":"jiahui0309"},"content":" assertTrue(BOB.isSamePerson(editedBob));","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":49,"author":{"gitId":"jiahui0309"},"content":" // name has trailing spaces, all other attributes same -\u003e returns true","lastModifiedDate":"2024-03-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":"jiahui0309"},"content":" assertTrue(BOB.isSamePerson(editedBob));","lastModifiedDate":"2024-03-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":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2018-04-19"},{"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":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":95,"author":{"gitId":"drustanyjt"},"content":" public void hash() {","lastModifiedDate":"2024-03-16"},{"lineNumber":96,"author":{"gitId":"drustanyjt"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":97,"author":{"gitId":"drustanyjt"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":98,"author":{"gitId":"drustanyjt"},"content":" assertEquals(ALICE.hashCode(), aliceCopy.hashCode());","lastModifiedDate":"2024-03-16"},{"lineNumber":99,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":100,"author":{"gitId":"drustanyjt"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":101,"author":{"gitId":"drustanyjt"},"content":" Person bobCopy \u003d new PersonBuilder(BOB).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":102,"author":{"gitId":"drustanyjt"},"content":" assertEquals(BOB.hashCode(), bobCopy.hashCode());","lastModifiedDate":"2024-03-16"},{"lineNumber":103,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":104,"author":{"gitId":"drustanyjt"},"content":" // different name -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":105,"author":{"gitId":"drustanyjt"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":106,"author":{"gitId":"drustanyjt"},"content":" assertNotEquals(ALICE.hashCode(), editedAlice.hashCode());","lastModifiedDate":"2024-03-16"},{"lineNumber":107,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":108,"author":{"gitId":"drustanyjt"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":109,"author":{"gitId":"drustanyjt"},"content":" Person editedAlice2 \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":110,"author":{"gitId":"drustanyjt"},"content":" assertNotEquals(ALICE.hashCode(), editedAlice2.hashCode());","lastModifiedDate":"2024-03-16"},{"lineNumber":111,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":112,"author":{"gitId":"drustanyjt"},"content":" // different email -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":113,"author":{"gitId":"drustanyjt"},"content":" Person editedAlice3 \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":114,"author":{"gitId":"drustanyjt"},"content":" assertNotEquals(ALICE.hashCode(), editedAlice3.hashCode());","lastModifiedDate":"2024-03-16"},{"lineNumber":115,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":116,"author":{"gitId":"drustanyjt"},"content":" // different address -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":117,"author":{"gitId":"drustanyjt"},"content":" Person editedAlice4 \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":118,"author":{"gitId":"drustanyjt"},"content":" assertNotEquals(ALICE.hashCode(), editedAlice4.hashCode());","lastModifiedDate":"2024-03-16"},{"lineNumber":119,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":120,"author":{"gitId":"drustanyjt"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":121,"author":{"gitId":"drustanyjt"},"content":" Person editedAlice5 \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":122,"author":{"gitId":"drustanyjt"},"content":" assertNotEquals(ALICE.hashCode(), editedAlice5.hashCode());","lastModifiedDate":"2024-03-16"},{"lineNumber":123,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":124,"author":{"gitId":"drustanyjt"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":125,"author":{"gitId":"drustanyjt"},"content":" assertNotEquals(ALICE.hashCode(), BOB.hashCode());","lastModifiedDate":"2024-03-16"},{"lineNumber":126,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":127,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2019-02-23"},{"lineNumber":131,"author":{"gitId":"drustanyjt"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", identityCardNumber\u003d\" + ALICE.getIdentityCardNumber()","lastModifiedDate":"2024-03-16"},{"lineNumber":132,"author":{"gitId":"drustanyjt"},"content":" + \", age\u003d\" + ALICE.getAge() + \", sex\u003d\" + ALICE.getSex() + \", address\u003d\" + ALICE.getAddress()","lastModifiedDate":"2024-03-16"},{"lineNumber":133,"author":{"gitId":"drustanyjt"},"content":" + \", note\u003d\" + ALICE.getNote() + \", tags\u003d\" + ALICE.getTags() + \"}\";","lastModifiedDate":"2024-03-16"},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"drustanyjt":38,"-":92,"jiahui0309":6}},{"path":"src/test/java/seedu/address/model/person/SexTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"drustanyjt"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"drustanyjt"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"drustanyjt"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"drustanyjt"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"drustanyjt"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"drustanyjt"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"drustanyjt"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"drustanyjt"},"content":"public class SexTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"drustanyjt"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"drustanyjt"},"content":" assertThrows(NullPointerException.class, () -\u003e new Sex(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"drustanyjt"},"content":" public void constructor_invalidSex_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"drustanyjt"},"content":" String invalidSex \u003d \"\";","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"drustanyjt"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Sex(invalidSex));","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"drustanyjt"},"content":" public void isValidSex() {","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"drustanyjt"},"content":" // null sex","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"drustanyjt"},"content":" assertThrows(NullPointerException.class, () -\u003e Sex.isValidSex(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"drustanyjt"},"content":" // invalid sex","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"drustanyjt"},"content":" assertFalse(Sex.isValidSex(\"\")); // empty string","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"drustanyjt"},"content":" assertFalse(Sex.isValidSex(\" \")); // spaces only","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"drustanyjt"},"content":" assertFalse(Sex.isValidSex(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"drustanyjt"},"content":" assertFalse(Sex.isValidSex(\"peter*\")); // contains non-alphanumeric characters","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"drustanyjt"},"content":" // valid sex","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"drustanyjt"},"content":" assertTrue(Sex.isValidSex(\"M\")); // one character","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"drustanyjt"},"content":" assertTrue(Sex.isValidSex(\"F\")); // one character","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"drustanyjt"},"content":" public void equals() {","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"drustanyjt"},"content":" Sex sex \u003d new Sex(\"M\");","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"drustanyjt"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"drustanyjt"},"content":" assertEquals(sex, new Sex(\"M\"));","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"drustanyjt"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"drustanyjt"},"content":" assertEquals(sex, sex);","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"drustanyjt"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"drustanyjt"},"content":" assertNotEquals(null, sex);","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"drustanyjt"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"drustanyjt"},"content":" assertFalse(sex.equals(5.0f));","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"drustanyjt"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"drustanyjt"},"content":" assertFalse(sex.equals(new Sex(\"F\")));","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"drustanyjt"},"content":" public void hash() {","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"drustanyjt"},"content":" Sex sexMale \u003d new Sex(\"M\");","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"drustanyjt"},"content":" Sex sexMaleCopy \u003d new Sex(\"M\");","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"drustanyjt"},"content":" Sex sexFemale \u003d new Sex(\"F\");","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"drustanyjt"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"drustanyjt"},"content":" assertEquals(sexMale.hashCode(), sexMaleCopy.hashCode());","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"drustanyjt"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"drustanyjt"},"content":" assertNotEquals(sexMale.hashCode(), sexFemale.hashCode());","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"drustanyjt"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"drustanyjt":72}},{"path":"src/test/java/seedu/address/model/util/SampleDataUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"drustanyjt"},"content":"package seedu.address.model.util;","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":3,"author":{"gitId":"drustanyjt"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"drustanyjt"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":6,"author":{"gitId":"drustanyjt"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"drustanyjt"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"drustanyjt"},"content":"public class SampleDataUtilTest {","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"drustanyjt"},"content":" public void getSamplePersonsTest() {","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"drustanyjt"},"content":" Person[] samplePersons \u003d SampleDataUtil.getSamplePersons();","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"drustanyjt"},"content":" // Test the number of sample persons","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"drustanyjt"},"content":" assertTrue(samplePersons.length \u003e 0);","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"drustanyjt"},"content":" public void getSampleAddressBookTest() {","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"drustanyjt"},"content":" assertEquals(SampleDataUtil.getSampleAddressBook().getPersonList().size(), 6);","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"drustanyjt"},"content":" public void getEmptyTagSetTest() {","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"drustanyjt"},"content":" assertEquals(SampleDataUtil.getEmptyTagSet().size(), 0);","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"drustanyjt"},"content":"}","lastModifiedDate":"2024-03-22"}],"authorContributionMap":{"drustanyjt":29}},{"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":"drustanyjt"},"content":"import seedu.address.model.person.Age;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"drustanyjt"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"drustanyjt"},"content":"import seedu.address.model.person.Note;","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"drustanyjt"},"content":"import seedu.address.model.person.Sex;","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"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":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"drustanyjt"},"content":" private static final String INVALID_IDENTITY_CARD_NUMBER \u003d \"Q1234567A\";","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"drustanyjt"},"content":" private static final Integer INVALID_AGE \u003d -12;","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"drustanyjt"},"content":" private static final String INVALID_SEX \u003d \"G\";","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"drustanyjt"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"drustanyjt"},"content":" private static final String VALID_IDENTITY_CARD_NUMBER \u003d BENSON.getIdentityCardNumber().toString();","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"drustanyjt"},"content":" private static final Integer VALID_AGE \u003d BENSON.getAge().value;","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"drustanyjt"},"content":" private static final String VALID_SEX \u003d BENSON.getSex().value;","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"drustanyjt"},"content":" private static final String VALID_NOTE \u003d BENSON.getNote().toString();","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"drustanyjt"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_IDENTITY_CARD_NUMBER, VALID_AGE,","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"drustanyjt"},"content":" VALID_SEX, VALID_ADDRESS, VALID_NOTE, VALID_TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"drustanyjt"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL, VALID_IDENTITY_CARD_NUMBER,","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"drustanyjt"},"content":" VALID_AGE, VALID_SEX, VALID_ADDRESS, VALID_NOTE, VALID_TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","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_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"drustanyjt"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_IDENTITY_CARD_NUMBER, VALID_AGE,","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"drustanyjt"},"content":" VALID_SEX, VALID_ADDRESS, VALID_NOTE, VALID_TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","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_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"drustanyjt"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL, VALID_IDENTITY_CARD_NUMBER,","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"drustanyjt"},"content":" VALID_AGE, VALID_SEX, VALID_ADDRESS, VALID_NOTE, VALID_TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"drustanyjt"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_IDENTITY_CARD_NUMBER, VALID_AGE,","lastModifiedDate":"2024-03-16"},{"lineNumber":90,"author":{"gitId":"drustanyjt"},"content":" VALID_SEX, VALID_ADDRESS, VALID_NOTE, VALID_TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":91,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"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_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"drustanyjt"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null,","lastModifiedDate":"2024-03-16"},{"lineNumber":98,"author":{"gitId":"drustanyjt"},"content":" VALID_IDENTITY_CARD_NUMBER, VALID_AGE, VALID_SEX, VALID_ADDRESS, VALID_NOTE, VALID_TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":99,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"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":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":104,"author":{"gitId":"drustanyjt"},"content":" public void toModelType_invalidIdentityCardNumber_throwsIllegalValueException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":105,"author":{"gitId":"drustanyjt"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":106,"author":{"gitId":"drustanyjt"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_IDENTITY_CARD_NUMBER, VALID_AGE,","lastModifiedDate":"2024-03-16"},{"lineNumber":107,"author":{"gitId":"drustanyjt"},"content":" VALID_SEX, VALID_ADDRESS, VALID_NOTE, VALID_TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":108,"author":{"gitId":"drustanyjt"},"content":" String expectedMessage \u003d IdentityCardNumber.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-16"},{"lineNumber":109,"author":{"gitId":"drustanyjt"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-16"},{"lineNumber":110,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":111,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":112,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":113,"author":{"gitId":"drustanyjt"},"content":" public void toModelType_nullIdentityCardNumber_throwsIllegalValueException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":114,"author":{"gitId":"drustanyjt"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, null,","lastModifiedDate":"2024-03-16"},{"lineNumber":115,"author":{"gitId":"drustanyjt"},"content":" VALID_AGE, VALID_SEX, VALID_ADDRESS, VALID_NOTE, VALID_TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":116,"author":{"gitId":"drustanyjt"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, IdentityCardNumber.class.getSimpleName());","lastModifiedDate":"2024-03-16"},{"lineNumber":117,"author":{"gitId":"drustanyjt"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-16"},{"lineNumber":118,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":119,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":120,"author":{"gitId":"drustanyjt"},"content":" public void toModelType_invalidAge_throwsIllegalValueException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":121,"author":{"gitId":"drustanyjt"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":122,"author":{"gitId":"drustanyjt"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_IDENTITY_CARD_NUMBER, INVALID_AGE,","lastModifiedDate":"2024-03-16"},{"lineNumber":123,"author":{"gitId":"drustanyjt"},"content":" VALID_SEX, VALID_ADDRESS, VALID_NOTE, VALID_TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":124,"author":{"gitId":"drustanyjt"},"content":" String expectedMessage \u003d Age.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-16"},{"lineNumber":125,"author":{"gitId":"drustanyjt"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-16"},{"lineNumber":126,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":127,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":128,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":129,"author":{"gitId":"drustanyjt"},"content":" public void toModelType_nullAge_throwsIllegalValueException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":130,"author":{"gitId":"drustanyjt"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-03-16"},{"lineNumber":131,"author":{"gitId":"drustanyjt"},"content":" VALID_IDENTITY_CARD_NUMBER, null, VALID_SEX, VALID_ADDRESS, VALID_NOTE, VALID_TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":132,"author":{"gitId":"drustanyjt"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Age.class.getSimpleName());","lastModifiedDate":"2024-03-16"},{"lineNumber":133,"author":{"gitId":"drustanyjt"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-16"},{"lineNumber":134,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":135,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":136,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":137,"author":{"gitId":"drustanyjt"},"content":" public void toModelType_invalidSex_throwsIllegalValueException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":138,"author":{"gitId":"drustanyjt"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":139,"author":{"gitId":"drustanyjt"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_IDENTITY_CARD_NUMBER, VALID_AGE,","lastModifiedDate":"2024-03-16"},{"lineNumber":140,"author":{"gitId":"drustanyjt"},"content":" INVALID_SEX, VALID_ADDRESS, VALID_NOTE, VALID_TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":141,"author":{"gitId":"drustanyjt"},"content":" String expectedMessage \u003d Sex.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-16"},{"lineNumber":142,"author":{"gitId":"drustanyjt"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-16"},{"lineNumber":143,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":144,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":145,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":146,"author":{"gitId":"drustanyjt"},"content":" public void toModelType_nullSex_throwsIllegalValueException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":147,"author":{"gitId":"drustanyjt"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-03-16"},{"lineNumber":148,"author":{"gitId":"drustanyjt"},"content":" VALID_IDENTITY_CARD_NUMBER, VALID_AGE, null, VALID_ADDRESS, VALID_NOTE, VALID_TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":149,"author":{"gitId":"drustanyjt"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Sex.class.getSimpleName());","lastModifiedDate":"2024-03-16"},{"lineNumber":150,"author":{"gitId":"drustanyjt"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-16"},{"lineNumber":151,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":152,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":153,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":154,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":155,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":156,"author":{"gitId":"drustanyjt"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_IDENTITY_CARD_NUMBER, VALID_AGE,","lastModifiedDate":"2024-03-16"},{"lineNumber":157,"author":{"gitId":"drustanyjt"},"content":" VALID_SEX, INVALID_ADDRESS, VALID_NOTE, VALID_TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":158,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":159,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":163,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":164,"author":{"gitId":"drustanyjt"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-03-16"},{"lineNumber":165,"author":{"gitId":"drustanyjt"},"content":" VALID_IDENTITY_CARD_NUMBER, VALID_AGE, VALID_SEX, null, VALID_NOTE, VALID_TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":166,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":170,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":171,"author":{"gitId":"drustanyjt"},"content":" public void toModelType_nullNote_throwsIllegalValueException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":172,"author":{"gitId":"drustanyjt"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-03-16"},{"lineNumber":173,"author":{"gitId":"drustanyjt"},"content":" VALID_IDENTITY_CARD_NUMBER, VALID_AGE, VALID_SEX, VALID_ADDRESS, null, VALID_TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":174,"author":{"gitId":"drustanyjt"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Note.class.getSimpleName());","lastModifiedDate":"2024-03-16"},{"lineNumber":175,"author":{"gitId":"drustanyjt"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-16"},{"lineNumber":176,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":177,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":178,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":179,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":180,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13"},{"lineNumber":181,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13"},{"lineNumber":182,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":183,"author":{"gitId":"drustanyjt"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_IDENTITY_CARD_NUMBER, VALID_AGE,","lastModifiedDate":"2024-03-16"},{"lineNumber":184,"author":{"gitId":"drustanyjt"},"content":" VALID_SEX, VALID_ADDRESS, VALID_NOTE, invalidTags);","lastModifiedDate":"2024-03-16"},{"lineNumber":185,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":188,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"drustanyjt":88,"-":100}},{"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":"drustanyjt"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"clinicmate.json\"));","lastModifiedDate":"2024-03-18"},{"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":{"drustanyjt":1,"-":122}},{"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.Address;","lastModifiedDate":"2017-12-23"},{"lineNumber":9,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.Age;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-12-23"},{"lineNumber":11,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-21"},{"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":"Jayne1010"},"content":"import seedu.address.model.person.Sex;","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-12-23"},{"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":"-"},"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":"-"},"content":" descriptor.setAddress(person.getAddress());","lastModifiedDate":"2017-06-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" descriptor.setTags(person.getTags());","lastModifiedDate":"2017-06-21"},{"lineNumber":43,"author":{"gitId":"Jayne1010"},"content":" descriptor.setSex(person.getSex());","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"Jayne1010"},"content":" descriptor.setAge(person.getAge());","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"Jayne1010"},"content":" descriptor.setIC(person.getIdentityCardNumber());","lastModifiedDate":"2024-03-21"},{"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":"-"},"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":"Jayne1010"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"Jayne1010"},"content":" * Sets the {@code Age} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"Jayne1010"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"Jayne1010"},"content":" public EditPersonDescriptorBuilder withAge(int age) {","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"Jayne1010"},"content":" descriptor.setAge(new Age(age));","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"Jayne1010"},"content":" return this;","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"Jayne1010"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"Jayne1010"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"Jayne1010"},"content":" * Sets the {@code IdentityCardNumber} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-21"},{"lineNumber":90,"author":{"gitId":"Jayne1010"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":91,"author":{"gitId":"Jayne1010"},"content":" public EditPersonDescriptorBuilder withIC(String ic) {","lastModifiedDate":"2024-03-21"},{"lineNumber":92,"author":{"gitId":"Jayne1010"},"content":" descriptor.setIC(new IdentityCardNumber(ic));","lastModifiedDate":"2024-03-21"},{"lineNumber":93,"author":{"gitId":"Jayne1010"},"content":" return this;","lastModifiedDate":"2024-03-21"},{"lineNumber":94,"author":{"gitId":"Jayne1010"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":95,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":96,"author":{"gitId":"Jayne1010"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":97,"author":{"gitId":"Jayne1010"},"content":" * Sets the {@code Sex} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-21"},{"lineNumber":98,"author":{"gitId":"Jayne1010"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":99,"author":{"gitId":"Jayne1010"},"content":" public EditPersonDescriptorBuilder withSex(String sex) {","lastModifiedDate":"2024-03-21"},{"lineNumber":100,"author":{"gitId":"Jayne1010"},"content":" descriptor.setSex(new Sex(sex));","lastModifiedDate":"2024-03-21"},{"lineNumber":101,"author":{"gitId":"Jayne1010"},"content":" return this;","lastModifiedDate":"2024-03-21"},{"lineNumber":102,"author":{"gitId":"Jayne1010"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":103,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":104,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":105,"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":106,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":107,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15"},{"lineNumber":109,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2017-12-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2017-12-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05"},{"lineNumber":115,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"},{"lineNumber":118,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"Jayne1010":31,"-":87}},{"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":"drustanyjt"},"content":"import seedu.address.model.person.Age;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18"},{"lineNumber":9,"author":{"gitId":"drustanyjt"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-01-18"},{"lineNumber":11,"author":{"gitId":"drustanyjt"},"content":"import seedu.address.model.person.Note;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-04-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-01-18"},{"lineNumber":14,"author":{"gitId":"drustanyjt"},"content":"import seedu.address.model.person.Sex;","lastModifiedDate":"2024-03-16"},{"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":"drustanyjt"},"content":" public static final String DEFAULT_IDENTITY_CARD_NUMBER \u003d \"S1234567A\";","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"drustanyjt"},"content":" public static final Integer DEFAULT_AGE \u003d 20;","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"drustanyjt"},"content":" public static final String DEFAULT_SEX \u003d \"F\";","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05"},{"lineNumber":30,"author":{"gitId":"drustanyjt"},"content":" public static final String DEFAULT_NOTE \u003d \"Hypertensive Crisis with last reading of 203/114\";","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":35,"author":{"gitId":"drustanyjt"},"content":" private IdentityCardNumber identityCardNumber;","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"drustanyjt"},"content":" private Age age;","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"drustanyjt"},"content":" private Sex sex;","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20"},{"lineNumber":39,"author":{"gitId":"drustanyjt"},"content":" private Note note;","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20"},{"lineNumber":49,"author":{"gitId":"drustanyjt"},"content":" identityCardNumber \u003d new IdentityCardNumber(DEFAULT_IDENTITY_CARD_NUMBER);","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"drustanyjt"},"content":" age \u003d new Age(DEFAULT_AGE);","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"drustanyjt"},"content":" sex \u003d new Sex(DEFAULT_SEX);","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20"},{"lineNumber":53,"author":{"gitId":"drustanyjt"},"content":" note \u003d new Note(DEFAULT_NOTE);","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11"},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10"},{"lineNumber":61,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20"},{"lineNumber":64,"author":{"gitId":"drustanyjt"},"content":" identityCardNumber \u003d personToCopy.getIdentityCardNumber();","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"drustanyjt"},"content":" age \u003d personToCopy.getAge();","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"drustanyjt"},"content":" sex \u003d personToCopy.getSex();","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20"},{"lineNumber":68,"author":{"gitId":"drustanyjt"},"content":" note \u003d personToCopy.getNote();","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20"},{"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":"2017-07-26"},{"lineNumber":81,"author":{"gitId":"drustanyjt"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":83,"author":{"gitId":"drustanyjt"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"drustanyjt"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"drustanyjt"},"content":" return this;","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":87,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":88,"author":{"gitId":"drustanyjt"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":89,"author":{"gitId":"drustanyjt"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-16"},{"lineNumber":90,"author":{"gitId":"drustanyjt"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":91,"author":{"gitId":"drustanyjt"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2024-03-16"},{"lineNumber":92,"author":{"gitId":"drustanyjt"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2024-03-16"},{"lineNumber":93,"author":{"gitId":"drustanyjt"},"content":" return this;","lastModifiedDate":"2024-03-16"},{"lineNumber":94,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":95,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":96,"author":{"gitId":"drustanyjt"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":97,"author":{"gitId":"drustanyjt"},"content":" * Sets the {@code IdentityCardNumber} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-16"},{"lineNumber":98,"author":{"gitId":"drustanyjt"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":99,"author":{"gitId":"drustanyjt"},"content":" public PersonBuilder withIdentityCardNumber(String identityCardNumber) {","lastModifiedDate":"2024-03-16"},{"lineNumber":100,"author":{"gitId":"drustanyjt"},"content":" this.identityCardNumber \u003d new IdentityCardNumber(identityCardNumber);","lastModifiedDate":"2024-03-16"},{"lineNumber":101,"author":{"gitId":"drustanyjt"},"content":" return this;","lastModifiedDate":"2024-03-16"},{"lineNumber":102,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":103,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":104,"author":{"gitId":"drustanyjt"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":105,"author":{"gitId":"drustanyjt"},"content":" * Sets the {@code Age} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-16"},{"lineNumber":106,"author":{"gitId":"drustanyjt"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":107,"author":{"gitId":"drustanyjt"},"content":" public PersonBuilder withAge(int age) {","lastModifiedDate":"2024-03-16"},{"lineNumber":108,"author":{"gitId":"drustanyjt"},"content":" this.age \u003d new Age(age);","lastModifiedDate":"2024-03-16"},{"lineNumber":109,"author":{"gitId":"drustanyjt"},"content":" return this;","lastModifiedDate":"2024-03-16"},{"lineNumber":110,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":111,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":112,"author":{"gitId":"drustanyjt"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":113,"author":{"gitId":"drustanyjt"},"content":" * Sets the {@code Age} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-16"},{"lineNumber":114,"author":{"gitId":"drustanyjt"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":115,"author":{"gitId":"drustanyjt"},"content":" public PersonBuilder withAge(String age) {","lastModifiedDate":"2024-03-16"},{"lineNumber":116,"author":{"gitId":"drustanyjt"},"content":" this.age \u003d new Age(age);","lastModifiedDate":"2024-03-16"},{"lineNumber":117,"author":{"gitId":"drustanyjt"},"content":" return this;","lastModifiedDate":"2024-03-16"},{"lineNumber":118,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":119,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":120,"author":{"gitId":"drustanyjt"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":121,"author":{"gitId":"drustanyjt"},"content":" * Sets the {@code Sex} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-16"},{"lineNumber":122,"author":{"gitId":"drustanyjt"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":123,"author":{"gitId":"drustanyjt"},"content":" public PersonBuilder withSex(String sex) {","lastModifiedDate":"2024-03-16"},{"lineNumber":124,"author":{"gitId":"drustanyjt"},"content":" this.sex \u003d new Sex(sex);","lastModifiedDate":"2024-03-16"},{"lineNumber":125,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":128,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":129,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":130,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":131,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":132,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20"},{"lineNumber":133,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":136,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":137,"author":{"gitId":"drustanyjt"},"content":" * Sets the {@code Note} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-16"},{"lineNumber":138,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":139,"author":{"gitId":"drustanyjt"},"content":" public PersonBuilder withNote(String note) {","lastModifiedDate":"2024-03-16"},{"lineNumber":140,"author":{"gitId":"drustanyjt"},"content":" this.note \u003d new Note(note);","lastModifiedDate":"2024-03-16"},{"lineNumber":141,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":144,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":145,"author":{"gitId":"drustanyjt"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2024-03-16"},{"lineNumber":146,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":147,"author":{"gitId":"drustanyjt"},"content":" public PersonBuilder withTags(String ... tags) {","lastModifiedDate":"2024-03-16"},{"lineNumber":148,"author":{"gitId":"drustanyjt"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2024-03-16"},{"lineNumber":149,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":152,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":153,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05"},{"lineNumber":154,"author":{"gitId":"drustanyjt"},"content":" return new Person(name, phone, email, identityCardNumber, age, sex, address, note, tags);","lastModifiedDate":"2024-03-16"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":157,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03"}],"authorContributionMap":{"drustanyjt":71,"-":86}},{"path":"src/test/java/seedu/address/testutil/TypicalIdentityPredicate.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Jayne1010"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.IdentityCardNumberMatchesPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"Jayne1010"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"Jayne1010"},"content":" * A utility class containing a list of {@code IdentityCardNumberMatchesPredicate} objects to be used in tests.","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"Jayne1010"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"Jayne1010"},"content":"public class TypicalIdentityPredicate {","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"Jayne1010"},"content":" public static final IdentityCardNumberMatchesPredicate IC_AMY \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"Jayne1010"},"content":" new IdentityCardNumberMatchesPredicate(new IdentityCardNumber(\"S1234567A\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"Jayne1010"},"content":" public static final IdentityCardNumberMatchesPredicate IC_BOB \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"Jayne1010"},"content":" new IdentityCardNumberMatchesPredicate(new IdentityCardNumber(\"S1234567B\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"Jayne1010"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"Jayne1010":14}},{"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":" public static final Person ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2018-01-10"},{"lineNumber":26,"author":{"gitId":"-"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2017-04-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2018-04-19"},{"lineNumber":28,"author":{"gitId":"drustanyjt"},"content":" .withIdentityCardNumber(\"S1234567A\").withAge(\"30\").withSex(\"F\")","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"drustanyjt"},"content":" .withNote(\"No medical conditions\")","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" .withTags(\"friends\").build();","lastModifiedDate":"2016-09-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10"},{"lineNumber":32,"author":{"gitId":"-"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2017-09-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2017-04-05"},{"lineNumber":34,"author":{"gitId":"drustanyjt"},"content":" .withIdentityCardNumber(\"S1234567B\").withAge(31).withSex(\"M\")","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"drustanyjt"},"content":" .withNote(\"Asthma\")","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" .withTags(\"owesMoney\", \"friends\").build();","lastModifiedDate":"2016-09-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2018-01-10"},{"lineNumber":38,"author":{"gitId":"drustanyjt"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\")","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"drustanyjt"},"content":" .withIdentityCardNumber(\"S1234567C\").withAge(\"32\").withSex(\"M\")","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"drustanyjt"},"content":" .withNote(\"Diabetes\")","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"drustanyjt"},"content":" .build();","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2018-01-10"},{"lineNumber":43,"author":{"gitId":"drustanyjt"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\")","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"drustanyjt"},"content":" .withIdentityCardNumber(\"S1234567D\").withAge(33).withSex(\"M\")","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"drustanyjt"},"content":" .withNote(\"No medical conditions\")","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"drustanyjt"},"content":" .withTags(\"friends\").build();","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2018-01-10"},{"lineNumber":48,"author":{"gitId":"drustanyjt"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\")","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"drustanyjt"},"content":" .withIdentityCardNumber(\"S1234567E\").withAge(\"34\").withSex(\"F\")","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"drustanyjt"},"content":" .withNote(\"High blood pressure\")","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"drustanyjt"},"content":" .build();","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2018-01-10"},{"lineNumber":53,"author":{"gitId":"drustanyjt"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\")","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"drustanyjt"},"content":" .withIdentityCardNumber(\"S1234567F\").withAge(35).withSex(\"F\")","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"drustanyjt"},"content":" .withNote(\"No medical conditions\")","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"drustanyjt"},"content":" .build();","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2018-01-10"},{"lineNumber":58,"author":{"gitId":"drustanyjt"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\")","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"drustanyjt"},"content":" .withIdentityCardNumber(\"S1234567G\").withAge(\"36\").withSex(\"M\")","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"drustanyjt"},"content":" .withNote(\"Asthma\")","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"drustanyjt"},"content":" .build();","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2018-01-10"},{"lineNumber":63,"author":{"gitId":"drustanyjt"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\")","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"drustanyjt"},"content":" .withIdentityCardNumber(\"S1234567H\").withAge(\"37\").withSex(\"M\")","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"drustanyjt"},"content":" .withNote(\"No medical conditions\")","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"drustanyjt"},"content":" .build();","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2018-01-10"},{"lineNumber":68,"author":{"gitId":"drustanyjt"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\")","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"drustanyjt"},"content":" .withIdentityCardNumber(\"S1234567I\").withAge(\"38\").withSex(\"F\")","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"drustanyjt"},"content":" .withNote(\"Diabetes\")","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"drustanyjt"},"content":" .build();","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2018-01-10"},{"lineNumber":75,"author":{"gitId":"drustanyjt"},"content":" .withAge(\"20\").withSex(\"F\").withIdentityCardNumber(\"S1234567A\").withEmail(VALID_EMAIL_AMY)","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"drustanyjt"},"content":" .withAddress(VALID_ADDRESS_AMY).withTags(VALID_TAG_FRIEND).withNote(\"Heavy smoker, 3 packs a day\")","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2017-09-21"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"drustanyjt"},"content":" .withAge(\"21\").withSex(\"M\").withIdentityCardNumber(\"S1234567B\").withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"drustanyjt"},"content":" .withAddress(VALID_ADDRESS_BOB).withNote(\"Torn ACL multiple times\")","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"drustanyjt"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-03-16"},{"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":{"drustanyjt":37,"-":64}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"tengcharmaine"},"content":"[![CI Status](https://github.com/AY2324S2-CS2103T-F14-2/tp/actions/workflows/gradle.yml/badge.svg)](https://github.com/AY2324S2-CS2103T-F14-2/tp/actions/workflows/gradle.yml)","lastModifiedDate":"2024-03-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"[![codecov](https://codecov.io/gh/AY2324S2-CS2103T-F14-2/tp/graph/badge.svg?token\u003dT5H5FY1BYS)](https://codecov.io/gh/AY2324S2-CS2103T-F14-2/tp)","lastModifiedDate":"2024-02-20"},{"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":"tengcharmaine"},"content":"The project simulates an ongoing software project for a desktop application (called _Clinic Mate_) used for managing contact details.","lastModifiedDate":"2024-03-03"},{"lineNumber":7,"author":{"gitId":"tengcharmaine"},"content":"* It is **written in OOP fashion**. It provides a **reasonably well-written** code base.","lastModifiedDate":"2024-03-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"* It comes with a **reasonable level of user and developer documentation**.","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":10,"author":{"gitId":"tengcharmaine"},"content":"Clinic Mate is an **address book for managing user\u0027s contacts, optimised for use via a Command Line Interface** (CLI) while","lastModifiedDate":"2024-03-03"},{"lineNumber":11,"author":{"gitId":"tengcharmaine"},"content":"still having the benefits of a Graphical User Interface (GUI).","lastModifiedDate":"2024-03-03"},{"lineNumber":12,"author":{"gitId":"tengcharmaine"},"content":"If you can type fast, Clinic Mate can manage your contacts faster than traditional GUI apps.","lastModifiedDate":"2024-03-03"},{"lineNumber":13,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":14,"author":{"gitId":"tengcharmaine"},"content":"Clinic Mate aims to make it easy for **General Practitioners** (GPs) in private family clinics to view patient contacts at","lastModifiedDate":"2024-03-03"},{"lineNumber":15,"author":{"gitId":"tengcharmaine"},"content":"a glance including:","lastModifiedDate":"2024-03-03"},{"lineNumber":16,"author":{"gitId":"tengcharmaine"},"content":"* Medical history","lastModifiedDate":"2024-03-03"},{"lineNumber":17,"author":{"gitId":"tengcharmaine"},"content":"* Past diagnosis","lastModifiedDate":"2024-03-03"},{"lineNumber":18,"author":{"gitId":"tengcharmaine"},"content":"* Prescriptions","lastModifiedDate":"2024-03-03"},{"lineNumber":19,"author":{"gitId":"tengcharmaine"},"content":"* Future appointments","lastModifiedDate":"2024-03-03"},{"lineNumber":20,"author":{"gitId":"tengcharmaine"},"content":"* Many more","lastModifiedDate":"2024-03-03"},{"lineNumber":21,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":22,"author":{"gitId":"tengcharmaine"},"content":"For the detailed documentation of this project (e.g. User or Developer Guide), see the **[Clinic Mate Website](https://ay2324s2-cs2103t-f14-2.github.io/tp/)**.","lastModifiedDate":"2024-03-03"},{"lineNumber":23,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":24,"author":{"gitId":"drustanyjt"},"content":"To join our mailing list fill in this [form](https://docs.google.com/forms/d/e/1FAIpQLSdhsv0afLOwhto8Ov6CW9FqKSQyEJ-oprHHLmLS-d5ylGShmg/viewform?usp\u003dsharing).","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"tengcharmaine"},"content":"This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-03-03"}],"authorContributionMap":{"drustanyjt":2,"tengcharmaine":19,"-":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":"drustanyjt"},"content":" archiveFileName \u003d \u0027clinicmate.jar\u0027","lastModifiedDate":"2024-03-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":{"drustanyjt":1,"-":71}},{"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":"jiahui0309"},"content":"You can reach us at the email `e0970466@comp.nus.edu.sg`","lastModifiedDate":"2024-03-03"},{"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":"jiahui0309"},"content":"### Yeo Jun Teng Drustan","lastModifiedDate":"2024-03-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"jiahui0309"},"content":"\u003cimg src\u003d\"images/drustanyjt.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"jiahui0309"},"content":"[[github](https://github.com/drustanyjt)]","lastModifiedDate":"2024-03-03"},{"lineNumber":19,"author":{"gitId":"jiahui0309"},"content":"[[linkedin](https://www.linkedin.com/in/drustan/)]","lastModifiedDate":"2024-03-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"* Role: Team Lead","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"jiahui0309"},"content":"### Chen Jiaying Jayne","lastModifiedDate":"2024-03-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"jiahui0309"},"content":"\u003cimg src\u003d\"images/jayne1010.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"jiahui0309"},"content":"[[github](http://github.com/Jayne1010)]","lastModifiedDate":"2024-03-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"jiahui0309"},"content":"* Responsibilities: Documentation","lastModifiedDate":"2024-03-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"jiahui0309"},"content":"### Song Jia Hui","lastModifiedDate":"2024-03-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"jiahui0309"},"content":"\u003cimg src\u003d\"images/jiahui0309.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"jiahui0309"},"content":"[[github](http://github.com/jiahui0309)]","lastModifiedDate":"2024-03-03"},{"lineNumber":37,"author":{"gitId":"jiahui0309"},"content":"[[linkedin](https://www.linkedin.com/in/song-jia-hui/)]","lastModifiedDate":"2024-03-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":"jiahui0309"},"content":"* Responsibilities: Integration","lastModifiedDate":"2024-03-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"jiahui0309"},"content":"### Teng Shi Rou Charmaine","lastModifiedDate":"2024-03-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"jiahui0309"},"content":"\u003cimg src\u003d\"images/tengcharmaine.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"jiahui0309"},"content":"[[github](http://github.com/tengcharmaine)]","lastModifiedDate":"2024-03-03"},{"lineNumber":47,"author":{"gitId":"jiahui0309"},"content":"[[linkedin](https://www.linkedin.com/in/charmaine-teng/)]","lastModifiedDate":"2024-03-03"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"jiahui0309"},"content":"* Responsibilities: Scheduling and tracking","lastModifiedDate":"2024-03-03"}],"authorContributionMap":{"-":32,"jiahui0309":19}},{"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":"drustanyjt"},"content":"# ClinicMate Developer Guide","lastModifiedDate":"2024-03-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":"-"},"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":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":"-"},"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":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":"-"},"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":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":"-"},"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":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 continues till 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).\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-02-09"},{"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":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12"},{"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":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"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":"2021-07-31"},{"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":"drustanyjt"},"content":"[//]: # (\u003cbox type\u003d\"info\" seamless\u003e)","lastModifiedDate":"2024-03-20"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":133,"author":{"gitId":"drustanyjt"},"content":"[//]: # ()","lastModifiedDate":"2024-03-20"},{"lineNumber":134,"author":{"gitId":"drustanyjt"},"content":"[//]: # (**Note:** An alternative \u0026#40;arguably, a more OOP\u0026#41; 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":"2024-03-20"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":136,"author":{"gitId":"drustanyjt"},"content":"[//]: # ()","lastModifiedDate":"2024-03-20"},{"lineNumber":137,"author":{"gitId":"drustanyjt"},"content":"[//]: # (\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e)","lastModifiedDate":"2024-03-20"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"drustanyjt"},"content":"[//]: # ()","lastModifiedDate":"2024-03-20"},{"lineNumber":140,"author":{"gitId":"drustanyjt"},"content":"[//]: # (\u003c/box\u003e)","lastModifiedDate":"2024-03-20"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"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":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":149,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"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":151,"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":152,"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":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","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":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"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":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"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":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"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":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"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":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"Jayne1010"},"content":"Step 2. The user executes `delete T0123456A` command to delete the person in the address book with the unique identification number `T0123456A`. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete T0123456A` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state.","lastModifiedDate":"2024-03-19"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"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":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"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":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":194,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"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":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":201,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"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":204,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"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":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":216,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":220,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":222,"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":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":226,"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":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"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":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"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":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":262,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":264,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":267,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":268,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":269,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":270,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"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":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":278,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":280,"author":{"gitId":"drustanyjt"},"content":"* General Practitioners working in their own private GP Clinics","lastModifiedDate":"2024-03-06"},{"lineNumber":281,"author":{"gitId":"drustanyjt"},"content":"* short staffed with minimal assistants for administrative tasks","lastModifiedDate":"2024-03-06"},{"lineNumber":282,"author":{"gitId":"drustanyjt"},"content":"* annoyed by relying on pen and paper to track patient contacts","lastModifiedDate":"2024-03-06"},{"lineNumber":283,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23"},{"lineNumber":284,"author":{"gitId":"drustanyjt"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2024-03-06"},{"lineNumber":285,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26"},{"lineNumber":286,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":288,"author":{"gitId":"drustanyjt"},"content":"**Value proposition**: Quick and easy management of patient contacts, including important patient information.","lastModifiedDate":"2024-03-06"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":291,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":293,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":294,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":295,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":296,"author":{"gitId":"-"},"content":"|----------|--------------------------------------------|------------------------------|------------------------------------------------------------------------|","lastModifiedDate":"2023-09-12"},{"lineNumber":297,"author":{"gitId":"-"},"content":"| `* * *` | new user | see usage instructions | refer to instructions when I forget how to use the App |","lastModifiedDate":"2020-05-23"},{"lineNumber":298,"author":{"gitId":"-"},"content":"| `* * *` | user | add a new person | |","lastModifiedDate":"2020-05-23"},{"lineNumber":299,"author":{"gitId":"-"},"content":"| `* * *` | user | delete a person | remove entries that I no longer need |","lastModifiedDate":"2020-05-23"},{"lineNumber":300,"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":301,"author":{"gitId":"-"},"content":"| `* *` | user | hide private contact details | minimize chance of someone else seeing them by accident |","lastModifiedDate":"2020-05-23"},{"lineNumber":302,"author":{"gitId":"-"},"content":"| `*` | user with many persons in the address book | sort persons by name | locate a person easily |","lastModifiedDate":"2020-05-23"},{"lineNumber":303,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":304,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":306,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":307,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":308,"author":{"gitId":"jiahui0309"},"content":"(For all use cases below, the **System** is the `ClinicMate` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2024-03-05"},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":310,"author":{"gitId":"jiahui0309"},"content":"**Use case: Add a person**","lastModifiedDate":"2024-03-04"},{"lineNumber":311,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":312,"author":{"gitId":"jiahui0309"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":313,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":314,"author":{"gitId":"jiahui0309"},"content":"1. User requests to list persons","lastModifiedDate":"2024-03-04"},{"lineNumber":315,"author":{"gitId":"jiahui0309"},"content":"2. ClinicMate shows a list of persons","lastModifiedDate":"2024-03-05"},{"lineNumber":316,"author":{"gitId":"jiahui0309"},"content":"3. User requests to add a specific person in the list","lastModifiedDate":"2024-03-04"},{"lineNumber":317,"author":{"gitId":"jiahui0309"},"content":"4. ClinicMate adds the person","lastModifiedDate":"2024-03-05"},{"lineNumber":318,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":319,"author":{"gitId":"jiahui0309"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":320,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":321,"author":{"gitId":"jiahui0309"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":322,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":323,"author":{"gitId":"jiahui0309"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-03-04"},{"lineNumber":324,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":325,"author":{"gitId":"jiahui0309"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":326,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":327,"author":{"gitId":"jiahui0309"},"content":"* 3a. The given command format is wrong.","lastModifiedDate":"2024-03-04"},{"lineNumber":328,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":329,"author":{"gitId":"jiahui0309"},"content":" * 3a1. ClinicMate shows an error message.","lastModifiedDate":"2024-03-05"},{"lineNumber":330,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":331,"author":{"gitId":"jiahui0309"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-04"},{"lineNumber":332,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":333,"author":{"gitId":"jiahui0309"},"content":"* 4a. There is an existing user in the database.","lastModifiedDate":"2024-03-04"},{"lineNumber":334,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":335,"author":{"gitId":"jiahui0309"},"content":" * 4a1. ClinicMate shows an error message.","lastModifiedDate":"2024-03-05"},{"lineNumber":336,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":337,"author":{"gitId":"jiahui0309"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-04"},{"lineNumber":338,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":339,"author":{"gitId":"jiahui0309"},"content":"**Use case: Add notes for a person**","lastModifiedDate":"2024-03-04"},{"lineNumber":340,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":341,"author":{"gitId":"jiahui0309"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":342,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":343,"author":{"gitId":"jiahui0309"},"content":"1. User requests to list persons","lastModifiedDate":"2024-03-04"},{"lineNumber":344,"author":{"gitId":"jiahui0309"},"content":"2. ClinicMate shows a list of persons","lastModifiedDate":"2024-03-05"},{"lineNumber":345,"author":{"gitId":"jiahui0309"},"content":"3. User requests to add notes for a specific person in the list","lastModifiedDate":"2024-03-04"},{"lineNumber":346,"author":{"gitId":"jiahui0309"},"content":"4. ClinicMate adds notes for the person","lastModifiedDate":"2024-03-05"},{"lineNumber":347,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":348,"author":{"gitId":"jiahui0309"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":349,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":350,"author":{"gitId":"jiahui0309"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":351,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":352,"author":{"gitId":"jiahui0309"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-03-04"},{"lineNumber":353,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":354,"author":{"gitId":"jiahui0309"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":355,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":356,"author":{"gitId":"jiahui0309"},"content":"* 3a. The given command format is wrong.","lastModifiedDate":"2024-03-04"},{"lineNumber":357,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":358,"author":{"gitId":"jiahui0309"},"content":" * 3a1. ClinicMate shows an error message.","lastModifiedDate":"2024-03-05"},{"lineNumber":359,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":360,"author":{"gitId":"jiahui0309"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-04"},{"lineNumber":361,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":362,"author":{"gitId":"jiahui0309"},"content":"* 4a. The given IC number is invalid.","lastModifiedDate":"2024-03-05"},{"lineNumber":363,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":364,"author":{"gitId":"jiahui0309"},"content":" * 4a1. ClinicMate shows an error message.","lastModifiedDate":"2024-03-05"},{"lineNumber":365,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":366,"author":{"gitId":"jiahui0309"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-04"},{"lineNumber":367,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":368,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":369,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":370,"author":{"gitId":"-"},"content":"**Use case: Delete a person**","lastModifiedDate":"2020-05-23"},{"lineNumber":371,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":372,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":373,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":374,"author":{"gitId":"-"},"content":"1. User requests to list persons","lastModifiedDate":"2020-05-23"},{"lineNumber":375,"author":{"gitId":"jiahui0309"},"content":"2. ClinicMate shows a list of persons","lastModifiedDate":"2024-03-05"},{"lineNumber":376,"author":{"gitId":"-"},"content":"3. User requests to delete a specific person in the list","lastModifiedDate":"2020-05-23"},{"lineNumber":377,"author":{"gitId":"jiahui0309"},"content":"4. ClinicMate deletes the person","lastModifiedDate":"2024-03-05"},{"lineNumber":378,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":379,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":380,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":381,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":382,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":383,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2020-05-23"},{"lineNumber":384,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":385,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":386,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":387,"author":{"gitId":"jiahui0309"},"content":"* 3a. The given IC number is invalid.","lastModifiedDate":"2024-03-05"},{"lineNumber":388,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":389,"author":{"gitId":"jiahui0309"},"content":" * 3a1. ClinicMate shows an error message.","lastModifiedDate":"2024-03-05"},{"lineNumber":390,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":391,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23"},{"lineNumber":392,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":393,"author":{"gitId":"jiahui0309"},"content":"* 4a. The given command format is wrong.","lastModifiedDate":"2024-03-04"},{"lineNumber":394,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":395,"author":{"gitId":"jiahui0309"},"content":" * 4a1. ClinicMate shows an error message.","lastModifiedDate":"2024-03-05"},{"lineNumber":396,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":397,"author":{"gitId":"jiahui0309"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-04"},{"lineNumber":398,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":399,"author":{"gitId":"jiahui0309"},"content":"**Use case: Find a person**","lastModifiedDate":"2024-03-04"},{"lineNumber":400,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":401,"author":{"gitId":"jiahui0309"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":402,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":403,"author":{"gitId":"jiahui0309"},"content":"1. User requests to list persons","lastModifiedDate":"2024-03-04"},{"lineNumber":404,"author":{"gitId":"jiahui0309"},"content":"2. ClinicMate shows a list of persons","lastModifiedDate":"2024-03-05"},{"lineNumber":405,"author":{"gitId":"jiahui0309"},"content":"3. User requests to find a specific person in the list","lastModifiedDate":"2024-03-04"},{"lineNumber":406,"author":{"gitId":"jiahui0309"},"content":"4. ClinicMate finds the person","lastModifiedDate":"2024-03-05"},{"lineNumber":407,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":408,"author":{"gitId":"jiahui0309"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":409,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":410,"author":{"gitId":"jiahui0309"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":411,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":412,"author":{"gitId":"jiahui0309"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-03-04"},{"lineNumber":413,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":414,"author":{"gitId":"jiahui0309"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":415,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":416,"author":{"gitId":"jiahui0309"},"content":"* 3a. The given IC number is invalid.","lastModifiedDate":"2024-03-05"},{"lineNumber":417,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":418,"author":{"gitId":"jiahui0309"},"content":" * 3a1. ClinicMate shows an error message.","lastModifiedDate":"2024-03-05"},{"lineNumber":419,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":420,"author":{"gitId":"jiahui0309"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-04"},{"lineNumber":421,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":422,"author":{"gitId":"jiahui0309"},"content":"* 4a. The given command format is wrong.","lastModifiedDate":"2024-03-04"},{"lineNumber":423,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":424,"author":{"gitId":"jiahui0309"},"content":" * 4a1. ClinicMate shows an error message.","lastModifiedDate":"2024-03-05"},{"lineNumber":425,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":426,"author":{"gitId":"jiahui0309"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-04"},{"lineNumber":427,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":428,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":429,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":430,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":431,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":432,"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":433,"author":{"gitId":"tengcharmaine"},"content":"2. 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":"2024-03-03"},{"lineNumber":434,"author":{"gitId":"tengcharmaine"},"content":"3. Should be able to hold up to 1000 persons without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2024-03-03"},{"lineNumber":435,"author":{"gitId":"tengcharmaine"},"content":"4. Should respond to user actions within 5 seconds under normal load conditions.","lastModifiedDate":"2024-03-03"},{"lineNumber":436,"author":{"gitId":"tengcharmaine"},"content":"5. Should be designed to use system resources (e.g. CPU) efficiently to minimise its impact on the host environment.","lastModifiedDate":"2024-03-03"},{"lineNumber":437,"author":{"gitId":"tengcharmaine"},"content":"6. User interface should be intuitive and easy for users with varying levels of technical expertise.","lastModifiedDate":"2024-03-03"},{"lineNumber":438,"author":{"gitId":"tengcharmaine"},"content":"7. Codebase should be well-documented and follow best practices to facilitate future maintenance and enhancements.","lastModifiedDate":"2024-03-03"},{"lineNumber":439,"author":{"gitId":"tengcharmaine"},"content":"8. Should be easy for developers to add new features or make changes to existing ones without causing unintended side effects.","lastModifiedDate":"2024-03-03"},{"lineNumber":440,"author":{"gitId":"tengcharmaine"},"content":"9. Should comply with relevant data privacy regulations (e.g. PDPA) and ensure user data is stored and processed securely.","lastModifiedDate":"2024-03-03"},{"lineNumber":441,"author":{"gitId":"tengcharmaine"},"content":"10. Should be able to be used alongside other systems and services commonly used in healthcare settings, such as electronic health record (EHR) systems.","lastModifiedDate":"2024-03-03"},{"lineNumber":442,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":443,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":444,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":445,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09"},{"lineNumber":446,"author":{"gitId":"drustanyjt"},"content":"* **GP**: General Practitioner, a general physician who provides primary care (usually in a clinic)","lastModifiedDate":"2024-03-04"},{"lineNumber":447,"author":{"gitId":"drustanyjt"},"content":"* **Taking History**: A medical term for recording a patient\u0027s symptoms, medical history, and other relevant information","lastModifiedDate":"2024-03-04"},{"lineNumber":448,"author":{"gitId":"drustanyjt"},"content":"* **Differential Diagnosis**: A medical term for a possible alternative diagnosis for a patient\u0027s symptoms","lastModifiedDate":"2024-03-04"},{"lineNumber":449,"author":{"gitId":"drustanyjt"},"content":"* **IC Number**: Short for NRIC (National Registration Identity Card) Number, a unique identifier for Singapore citizens and permanent residents","lastModifiedDate":"2024-03-05"},{"lineNumber":450,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":451,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":452,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":453,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":454,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":455,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":456,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":457,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":458,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":459,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12"},{"lineNumber":460,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":461,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":462,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":463,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":464,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":465,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":466,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":467,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":468,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":469,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":470,"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":471,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":472,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":473,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":474,"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":475,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":476,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":477,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","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"},{"lineNumber":480,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":481,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":482,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":483,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":484,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":485,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":486,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":487,"author":{"gitId":"Jayne1010"},"content":" 1. Test case: `delete T0123456A`\u003cbr\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":488,"author":{"gitId":"Jayne1010"},"content":" Expected: The contact with the unique identification number `T0123456A` is deleted from the list. Details of the deleted contact shown in the status message. Timestamp in the status bar is updated.","lastModifiedDate":"2024-03-19"},{"lineNumber":489,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":490,"author":{"gitId":"Jayne1010"},"content":" 1. Test case: `delete T0123A`\u003cbr\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":491,"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":492,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":493,"author":{"gitId":"Jayne1010"},"content":" 1. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is the identification number which does not exist in the list)\u003cbr\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":494,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":495,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":496,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":497,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":498,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":499,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":500,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":501,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":502,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":503,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":504,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"drustanyjt":17,"Jayne1010":5,"tengcharmaine":9,"-":376,"jiahui0309":97}},{"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":"Jayne1010"},"content":"# Clinic Mate User Guide","lastModifiedDate":"2024-03-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"Jayne1010"},"content":"Clinic Mate is a **desktop** app for managing contacts in a clinic, 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, Clinic Mate can manage your patients\u0027 contact faster than traditional GUI apps.","lastModifiedDate":"2024-03-05"},{"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":"drustanyjt"},"content":"1. Download the latest `.jar` file from [here](https://github.com/AY2324S2-CS2103T-F14-2/tp/releases/latest)","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your AddressBook.","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"tengcharmaine"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar clinicmate.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":25,"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":26,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2024-03-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"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":29,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"Jayne1010"},"content":" * `add n/John Doe p/88888888 e/johndoe@mail.com i/T0123456A ag/12 s/Male a/John street, block 123, #01-01` : Adds a contact named `John Doe` to the Address Book.","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"Jayne1010"},"content":" * `delete T0123456A` : Deletes the contact with the IC \u0027T0123456A\u0027 shown in the current list.","lastModifiedDate":"2024-03-03"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"Jayne1010"},"content":" * `find T0123456A` : Find the contact with the IC \u0027T0123456A\u0027 shown in the current list.","lastModifiedDate":"2024-03-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"Jayne1010"},"content":" * `addnote i/T0123456A n/Patient has diabetes` : Add a note: \u0027Patient has diabetes\u0027 for the contact with the IC \u0027T0123456A\u0027 as shown in current list.","lastModifiedDate":"2024-03-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"**Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"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":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":"Jayne1010"},"content":" e.g. if the command specifies `n/NAME i/IC_NUMBER`, `i/IC_NUMBER n/NAME` is also acceptable.","lastModifiedDate":"2024-03-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"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":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":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"Jayne1010"},"content":"Shows a message explaining how to access the help page.","lastModifiedDate":"2024-03-03"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"### Adding a person: `add`","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"Adds a person to the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"Jayne1010"},"content":"Format: `add n/NAME p/PHONE e/EMAIL i/IC_NUMBER ag/AGE s/SEX a/ADDRESS`","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"Jayne1010"},"content":"* A person will be uniquely identified by his/her personal identification number.","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"Jayne1010"},"content":"* Clinic mate does not allow the same identification number to be twice.","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":82,"author":{"gitId":"Jayne1010"},"content":"**Tip:** A person can have a note included.","lastModifiedDate":"2024-03-03"},{"lineNumber":83,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"Jayne1010"},"content":"* `add n/John Doe p/88888888 e/johndoe@mail.com i/T0123456A ag/12 s/Male a/John street, block 123, #01-01`","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"Jayne1010"},"content":"### Adding a note : `addnote`","lastModifiedDate":"2024-03-03"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"Jayne1010"},"content":"Add a note to an existing person in the address book","lastModifiedDate":"2024-03-03"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"Jayne1010"},"content":"Format: `addnote i/IC_NUMBER n/NOTE`","lastModifiedDate":"2024-03-03"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"Jayne1010"},"content":"* Adds a note to the person with the specified `IC_NUMBER`. The IC number refers to the IC number shown in the displayed person list. The IC_NUMBER **must be the FULL IC NUMBER**.","lastModifiedDate":"2024-03-03"},{"lineNumber":95,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"Jayne1010"},"content":"* When adding notes, the new note added will be appended to the current note of the person. i.e. current note is preserved","lastModifiedDate":"2024-03-05"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"Jayne1010"},"content":"* `addnote i/T0123456A n/Patient has diabetes` Adds a note `Patient has diabetes` to the person with the IC number `T0123456A` in the address book.","lastModifiedDate":"2024-03-03"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"Jayne1010"},"content":"### Locating persons by ic number: `find`","lastModifiedDate":"2024-03-03"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"Jayne1010"},"content":"Find an existing person in the address book using their IC_NUMBER.","lastModifiedDate":"2024-03-03"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"Jayne1010"},"content":"Format: `find IC_NUMBER`","lastModifiedDate":"2024-03-03"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"Jayne1010"},"content":"* The search is case-insensitive. e.g `t0123456a` will match `T0123456A`.","lastModifiedDate":"2024-03-03"},{"lineNumber":108,"author":{"gitId":"Jayne1010"},"content":"* Only the IC number is searched.","lastModifiedDate":"2024-03-03"},{"lineNumber":109,"author":{"gitId":"Jayne1010"},"content":"* Only full IC number will be matched e.g. `T0123456A` will not match `T0123A`.","lastModifiedDate":"2024-03-03"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"Jayne1010"},"content":"* `find T0123456A` returns `John Doe`.","lastModifiedDate":"2024-03-03"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"Jayne1010"},"content":"Deletes the specified person from the address book using their IC_NUMBER.","lastModifiedDate":"2024-03-03"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"Jayne1010"},"content":"Format: `delete IC_NUMBER`","lastModifiedDate":"2024-03-03"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"Jayne1010"},"content":"* Deletes the person with the specified `IC_NUMBER`.","lastModifiedDate":"2024-03-03"},{"lineNumber":121,"author":{"gitId":"Jayne1010"},"content":"* The IC_NUMBER refers to the IC number shown in the displayed person list.","lastModifiedDate":"2024-03-03"},{"lineNumber":122,"author":{"gitId":"Jayne1010"},"content":"* The IC_NUMBER **must be the FULL IC NUMBER**.","lastModifiedDate":"2024-03-03"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"Jayne1010"},"content":"* `delete T0123456A` deletes `John Doe` from the address book.","lastModifiedDate":"2024-03-03"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":"Clears all entries from the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"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":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":145,"author":{"gitId":"drustanyjt"},"content":"AddressBook data are saved automatically as a JSON file `[JAR file location]/data/clinicmate.json`. Advanced users are welcome to update data directly by editing that data file.","lastModifiedDate":"2024-03-18"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":147,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":149,"author":{"gitId":"-"},"content":"**Caution:**","lastModifiedDate":"2023-09-12"},{"lineNumber":150,"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.\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":151,"author":{"gitId":"-"},"content":"Furthermore, certain edits can cause the AddressBook to behave in unexpected ways (e.g., if a value entered is outside the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.","lastModifiedDate":"2023-09-12"},{"lineNumber":152,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"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":"-"},"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":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":"2023-09-12"},{"lineNumber":177,"author":{"gitId":"Jayne1010"},"content":"**Add** | `add n/NAME p/PHONE e/EMAIL i/IC_NUMBER ag/AGE s/SEX a/ADDRESS` \u003cbr\u003e e.g., `add n/John Doe p/88888888 e/johndoe@mail.com i/T0123456A ag/12 s/Male a/John street, block 123, #01-01`","lastModifiedDate":"2024-03-19"},{"lineNumber":178,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"Jayne1010"},"content":"**Delete** | `delete IC_NUMBER`\u003cbr\u003e e.g., `delete T0123456A`","lastModifiedDate":"2024-03-03"},{"lineNumber":180,"author":{"gitId":"Jayne1010"},"content":"**AddNote** | `addnote i/IC_NUMBER n/NOTE`\u003cbr\u003e e.g., `addnote i/T0123456A n/Patient has diabetes`","lastModifiedDate":"2024-03-03"},{"lineNumber":181,"author":{"gitId":"Jayne1010"},"content":"**Find** | `find IC_NUMBER`\u003cbr\u003e e.g., `find T0123456A`","lastModifiedDate":"2024-03-03"},{"lineNumber":182,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"Jayne1010":37,"drustanyjt":2,"tengcharmaine":1,"-":142}},{"path":"docs/diagrams/AddCommandDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Jayne1010"},"content":"@startuml","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"Jayne1010"},"content":"!include style.puml","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"Jayne1010"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"Jayne1010"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"Jayne1010"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"Jayne1010"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"Jayne1010"},"content":"participant \":AddCommandParser\" as AddCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"Jayne1010"},"content":"participant \"d:AddCommand\" as AddCommand LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"Jayne1010"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"Jayne1010"},"content":"end box","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"Jayne1010"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"Jayne1010"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"Jayne1010"},"content":"end box","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"Jayne1010"},"content":"[-\u003e LogicManager : execute(\"add n/John Doe p/12345678 e/john@mail.com i/T0123456A ag/12 s/Male a/John street, block 123, #01-01\")","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"Jayne1010"},"content":"activate LogicManager","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"Jayne1010"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"add n/John Doe p/12345678 e/john@mail.com i/T0123456A ag/12 s/Male a/John street, block 123, #01-01\")","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"Jayne1010"},"content":"activate AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"Jayne1010"},"content":"create AddCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"Jayne1010"},"content":"AddressBookParser -\u003e AddCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"Jayne1010"},"content":"activate AddCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"Jayne1010"},"content":"AddCommandParser --\u003e AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"Jayne1010"},"content":"deactivate AddCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"Jayne1010"},"content":"AddressBookParser -\u003e AddCommandParser : parse(\"n/John Doe p/12345678 e/john@mail.com i/T0123456A ag/12 s/Male a/John street, block 123, #01-01\")","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"Jayne1010"},"content":"activate AddCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"Jayne1010"},"content":"create AddCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"Jayne1010"},"content":"AddCommandParser -\u003e AddCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"Jayne1010"},"content":"activate AddCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"Jayne1010"},"content":"AddCommand --\u003e AddCommandParser :","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"Jayne1010"},"content":"deactivate AddCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"Jayne1010"},"content":"AddCommandParser --\u003e AddressBookParser : a","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"Jayne1010"},"content":"deactivate AddCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"Jayne1010"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"Jayne1010"},"content":"AddCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"Jayne1010"},"content":"destroy AddCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"Jayne1010"},"content":"AddressBookParser --\u003e LogicManager : a","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"Jayne1010"},"content":"deactivate AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"Jayne1010"},"content":"LogicManager -\u003e AddCommand : execute(m)","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"Jayne1010"},"content":"activate AddCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"Jayne1010"},"content":"AddCommand -\u003e Model : setPerson(T0123456A, \\n new Person(John Doe, 12345678, ...))","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"Jayne1010"},"content":"activate Model","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"Jayne1010"},"content":"Model --\u003e AddCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"Jayne1010"},"content":"deactivate Model","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"Jayne1010"},"content":"create CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"Jayne1010"},"content":"AddCommand -\u003e CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"Jayne1010"},"content":"activate CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"Jayne1010"},"content":"CommandResult --\u003e AddCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"Jayne1010"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"Jayne1010"},"content":"AddCommand --\u003e LogicManager : r","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"Jayne1010"},"content":"deactivate AddCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"Jayne1010"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"Jayne1010"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"Jayne1010"},"content":"@enduml","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"Jayne1010":70}},{"path":"docs/diagrams/AddNoteSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"tengcharmaine"},"content":"@startuml","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"tengcharmaine"},"content":"!include style.puml","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"tengcharmaine"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"tengcharmaine"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"tengcharmaine"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"tengcharmaine"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"tengcharmaine"},"content":"participant \":AddNoteCommandParser\" as AddNoteCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"tengcharmaine"},"content":"participant \"n:AddNoteCommand\" as AddNoteCommand LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"tengcharmaine"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"tengcharmaine"},"content":"end box","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"tengcharmaine"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"tengcharmaine"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"tengcharmaine"},"content":"end box","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"tengcharmaine"},"content":"[-\u003e LogicManager : execute(\"addnote \\n i/T0123456A n/Covid\")","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"tengcharmaine"},"content":"activate LogicManager","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"tengcharmaine"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"addnote \\n i/T0123456A n/Covid\")","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"tengcharmaine"},"content":"activate AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"tengcharmaine"},"content":"create AddNoteCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"tengcharmaine"},"content":"AddressBookParser -\u003e AddNoteCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"tengcharmaine"},"content":"activate AddNoteCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"tengcharmaine"},"content":"AddNoteCommandParser --\u003e AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"tengcharmaine"},"content":"deactivate AddNoteCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"tengcharmaine"},"content":"AddressBookParser -\u003e AddNoteCommandParser : parse(\"i/T0123456A n/Covid\")","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"tengcharmaine"},"content":"activate AddNoteCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"tengcharmaine"},"content":"create AddNoteCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"tengcharmaine"},"content":"AddNoteCommandParser -\u003e AddNoteCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"tengcharmaine"},"content":"activate AddNoteCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"tengcharmaine"},"content":"AddNoteCommand --\u003e AddNoteCommandParser :","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"tengcharmaine"},"content":"deactivate AddNoteCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"tengcharmaine"},"content":"AddNoteCommandParser --\u003e AddressBookParser : n","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"tengcharmaine"},"content":"deactivate AddNoteCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"tengcharmaine"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"tengcharmaine"},"content":"AddNoteCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"tengcharmaine"},"content":"destroy AddNoteCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"tengcharmaine"},"content":"AddressBookParser --\u003e LogicManager : n","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"tengcharmaine"},"content":"deactivate AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"tengcharmaine"},"content":"LogicManager -\u003e AddNoteCommand : execute(m)","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"tengcharmaine"},"content":"activate AddNoteCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"tengcharmaine"},"content":"AddNoteCommand -\u003e Model : setPerson(T0123456A, \\n new Person(..., Covid, ...))","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"tengcharmaine"},"content":"activate Model","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"tengcharmaine"},"content":"Model --\u003e AddNoteCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"tengcharmaine"},"content":"deactivate Model","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"tengcharmaine"},"content":"create CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"tengcharmaine"},"content":"AddNoteCommand -\u003e CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"tengcharmaine"},"content":"activate CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"tengcharmaine"},"content":"CommandResult --\u003e AddNoteCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"tengcharmaine"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"tengcharmaine"},"content":"AddNoteCommand --\u003e LogicManager : r","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"tengcharmaine"},"content":"deactivate AddNoteCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"tengcharmaine"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"tengcharmaine"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"tengcharmaine"},"content":"@enduml","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"tengcharmaine":70}},{"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 \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-02-09"},{"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 \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-02-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"jiahui0309"},"content":"[-\u003e LogicManager : execute(\"delete S0123456A\")","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":"activate LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"jiahui0309"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"delete S0123456A\")","lastModifiedDate":"2024-03-20"},{"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":"jiahui0309"},"content":"AddressBookParser -\u003e DeleteCommandParser : parse(\"S0123456A\")","lastModifiedDate":"2024-03-20"},{"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 :","lastModifiedDate":"2024-02-09"},{"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(m)","lastModifiedDate":"2024-02-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":"activate DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":52,"author":{"gitId":"jiahui0309"},"content":"DeleteCommand -\u003e Model : deletePerson(S0123456A)","lastModifiedDate":"2024-03-20"},{"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 : r","lastModifiedDate":"2024-02-09"},{"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":{"-":66,"jiahui0309":4}},{"path":"docs/diagrams/EditCommandDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Jayne1010"},"content":"@startuml","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"Jayne1010"},"content":"!include style.puml","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"Jayne1010"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"Jayne1010"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"Jayne1010"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"Jayne1010"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"Jayne1010"},"content":"participant \":EditCommandParser\" as EditCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"Jayne1010"},"content":"participant \"d:EditCommand\" as EditCommand LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"Jayne1010"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"Jayne1010"},"content":"end box","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"Jayne1010"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"Jayne1010"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"Jayne1010"},"content":"end box","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"Jayne1010"},"content":"[-\u003e LogicManager : execute(\"edit T0123456A p/23456789\")","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"Jayne1010"},"content":"activate LogicManager","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"Jayne1010"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"edit T0123456A p/23456789\")","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"Jayne1010"},"content":"activate AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"Jayne1010"},"content":"create EditCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"Jayne1010"},"content":"AddressBookParser -\u003e EditCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"Jayne1010"},"content":"activate EditCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"Jayne1010"},"content":"EditCommandParser --\u003e AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"Jayne1010"},"content":"deactivate EditCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"Jayne1010"},"content":"AddressBookParser -\u003e EditCommandParser : parse(\"p/23456789\")","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"Jayne1010"},"content":"activate EditCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"Jayne1010"},"content":"create EditCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"Jayne1010"},"content":"EditCommandParser -\u003e EditCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"Jayne1010"},"content":"activate EditCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"Jayne1010"},"content":"EditCommand --\u003e EditCommandParser :","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"Jayne1010"},"content":"deactivate EditCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"Jayne1010"},"content":"EditCommandParser --\u003e AddressBookParser : e","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"Jayne1010"},"content":"deactivate EditCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"Jayne1010"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"Jayne1010"},"content":"EditCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"Jayne1010"},"content":"destroy EditCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"Jayne1010"},"content":"AddressBookParser --\u003e LogicManager : e","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"Jayne1010"},"content":"deactivate AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"Jayne1010"},"content":"LogicManager -\u003e EditCommand : execute(m)","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"Jayne1010"},"content":"activate EditCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"Jayne1010"},"content":"EditCommand -\u003e Model : setPerson(T0123456A, \\n new Person(John Doe, 23456789, ...))","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"Jayne1010"},"content":"activate Model","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"Jayne1010"},"content":"Model --\u003e EditCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"Jayne1010"},"content":"deactivate Model","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"Jayne1010"},"content":"create CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"Jayne1010"},"content":"EditCommand -\u003e CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"Jayne1010"},"content":"activate CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"Jayne1010"},"content":"CommandResult --\u003e EditCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"Jayne1010"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"Jayne1010"},"content":"EditCommand --\u003e LogicManager : r","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"Jayne1010"},"content":"deactivate EditCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"Jayne1010"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"Jayne1010"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"Jayne1010"},"content":"@enduml","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"Jayne1010":70}},{"path":"docs/diagrams/FindSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"jiahui0309"},"content":"@startuml","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"jiahui0309"},"content":"!include style.puml","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"jiahui0309"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"jiahui0309"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"jiahui0309"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"jiahui0309"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"jiahui0309"},"content":"participant \":FindCommandParser\" as FindCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"jiahui0309"},"content":"participant \"f:FindCommand\" as FindCommand LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"jiahui0309"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"jiahui0309"},"content":"end box","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"jiahui0309"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"jiahui0309"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"jiahui0309"},"content":"end box","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"jiahui0309"},"content":"[-\u003e LogicManager : execute(\"find S0123456A\")","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"jiahui0309"},"content":"activate LogicManager","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"jiahui0309"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"find S0123456A\")","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"jiahui0309"},"content":"activate AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"jiahui0309"},"content":"create FindCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"jiahui0309"},"content":"AddressBookParser -\u003e FindCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"jiahui0309"},"content":"activate FindCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"jiahui0309"},"content":"FindCommandParser --\u003e AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"jiahui0309"},"content":"deactivate FindCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"jiahui0309"},"content":"AddressBookParser -\u003e FindCommandParser : parse(\"S0123456A\")","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"jiahui0309"},"content":"activate FindCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"jiahui0309"},"content":"create FindCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"jiahui0309"},"content":"FindCommandParser -\u003e FindCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"jiahui0309"},"content":"activate FindCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"jiahui0309"},"content":"FindCommand --\u003e FindCommandParser :","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"jiahui0309"},"content":"deactivate FindCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"jiahui0309"},"content":"FindCommandParser --\u003e AddressBookParser : f","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"jiahui0309"},"content":"deactivate FindCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"jiahui0309"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"jiahui0309"},"content":"FindCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"jiahui0309"},"content":"destroy FindCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"jiahui0309"},"content":"AddressBookParser --\u003e LogicManager : f","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"jiahui0309"},"content":"deactivate AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"jiahui0309"},"content":"LogicManager -\u003e FindCommand : execute(m)","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"jiahui0309"},"content":"activate FindCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"jiahui0309"},"content":"FindCommand -\u003e Model : updateFilteredPersonList(S0123456A)","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"jiahui0309"},"content":"activate Model","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"jiahui0309"},"content":"Model --\u003e FindCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"jiahui0309"},"content":"deactivate Model","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"jiahui0309"},"content":"create CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"jiahui0309"},"content":"FindCommand -\u003e CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"jiahui0309"},"content":"activate CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"jiahui0309"},"content":"CommandResult --\u003e FindCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"jiahui0309"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"jiahui0309"},"content":"FindCommand --\u003e LogicManager : r","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"jiahui0309"},"content":"deactivate FindCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"jiahui0309"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"jiahui0309"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"jiahui0309"},"content":"@enduml","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"jiahui0309":70}},{"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":"-"},"content":"Class UniquePersonList","lastModifiedDate":"2021-07-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Class Person","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Class Name","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Class Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"drustanyjt"},"content":"Class Email","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"drustanyjt"},"content":"Class IdentityCardNumber","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"drustanyjt"},"content":"Class Age","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"drustanyjt"},"content":"Class Sex","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"drustanyjt"},"content":"Class Address","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"drustanyjt"},"content":"Class Note","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"drustanyjt"},"content":"\u0027Class Tag","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":27,"author":{"gitId":"-"},"content":"Class I #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"AddressBook .up.|\u003e ReadOnlyAddressBook","lastModifiedDate":"2019-07-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"ModelManager .up.|\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":36,"author":{"gitId":"-"},"content":"Model .right.\u003e ReadOnlyUserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"Model .left.\u003e ReadOnlyAddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"ModelManager -left-\u003e \"1\" AddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":39,"author":{"gitId":"-"},"content":"ModelManager -right-\u003e \"1\" UserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":40,"author":{"gitId":"-"},"content":"UserPrefs .up.|\u003e ReadOnlyUserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"AddressBook *--\u003e \"1\" UniquePersonList","lastModifiedDate":"2019-07-30"},{"lineNumber":43,"author":{"gitId":"-"},"content":"UniquePersonList --\u003e \"~* all\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":44,"author":{"gitId":"-"},"content":"Person *--\u003e Name","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"Person *--\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"Person *--\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":47,"author":{"gitId":"drustanyjt"},"content":"Person *--\u003e IdentityCardNumber","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"drustanyjt"},"content":"Person *--\u003e Age","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"drustanyjt"},"content":"Person *--\u003e Sex","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":"Person *--\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":51,"author":{"gitId":"drustanyjt"},"content":"Person *--\u003e Note","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"drustanyjt"},"content":"\u0027Person *--\u003e \"*\" Tag","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":54,"author":{"gitId":"-"},"content":"Person -[hidden]up--\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"UniquePersonList -[hidden]right-\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":"Name -[hidden]right-\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":58,"author":{"gitId":"-"},"content":"Phone -[hidden]right-\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":"Address -[hidden]right-\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":61,"author":{"gitId":"-"},"content":"ModelManager --\u003e \"~* filtered\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":62,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"drustanyjt":12,"-":50}},{"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":"jiahui0309"},"content":"# ClinicMate Level-3","lastModifiedDate":"2024-03-06"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"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":9,"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":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"tengcharmaine"},"content":"![Ui](images/OldUi.png)","lastModifiedDate":"2024-03-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"jiahui0309"},"content":"**ClinicMate 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":"2024-03-06"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"jiahui0309"},"content":"* If you are interested in using ClinicMate, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).","lastModifiedDate":"2024-03-06"},{"lineNumber":16,"author":{"gitId":"jiahui0309"},"content":"* If you are interested about developing ClinicMate, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.","lastModifiedDate":"2024-03-06"},{"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"},{"lineNumber":22,"author":{"gitId":"drustanyjt"},"content":"* Logo: [Red Cross icons by Freepik - Flaticon](https://www.flaticon.com/free-icons/red-cross)","lastModifiedDate":"2024-03-03"},{"lineNumber":23,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-03"}],"authorContributionMap":{"drustanyjt":2,"tengcharmaine":1,"-":16,"jiahui0309":4}},{"path":"docs/tutorials/AddRemark.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-07-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Tutorial: Adding a command\"","lastModifiedDate":"2020-07-29"},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-07-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"# Tutorial: Adding a command","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"Let\u0027s walk you through the implementation of a new command — `remark`.","lastModifiedDate":"2020-07-29"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":11,"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":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":13,"author":{"gitId":"-"},"content":"`remark INDEX r/REMARK` (e.g., `remark 2 r/Likes baseball`)","lastModifiedDate":"2020-07-29"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":15,"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":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":"## Create a new `remark` command","lastModifiedDate":"2020-07-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":20,"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":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":22,"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":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":24,"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":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":26,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":28,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":29,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2020-07-29"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2020-07-29"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":33,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Changes the remark of an existing person in the address book.","lastModifiedDate":"2020-07-29"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":36,"author":{"gitId":"-"},"content":"public class RemarkCommand extends Command {","lastModifiedDate":"2020-07-29"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"remark\";","lastModifiedDate":"2020-07-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2020-07-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return new CommandResult(\"Hello from remark\");","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":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":"### Hook `RemarkCommand` into the application","lastModifiedDate":"2020-07-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":49,"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":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":51,"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":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":"### Run the application","lastModifiedDate":"2020-07-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":55,"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":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":"![Output displayed](../images/add-remark/RemarkHello.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":"## Change `RemarkCommand` to throw an exception","lastModifiedDate":"2020-07-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":61,"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":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":63,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"../diagrams/add-remark/RemarkClass.puml\" alt\u003d\"The relationship between RemarkCommand and Command\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":65,"author":{"gitId":"-"},"content":"Following the convention in other commands, we add relevant messages as constants and use them.","lastModifiedDate":"2020-07-29"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":67,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":69,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2021-08-01"},{"lineNumber":71,"author":{"gitId":"-"},"content":" + \": Edits the remark of the person identified \"","lastModifiedDate":"2021-08-01"},{"lineNumber":72,"author":{"gitId":"-"},"content":" + \"by the index number used in the last person listing. \"","lastModifiedDate":"2020-07-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":" + \"Existing remark will be overwritten by the input.\\n\"","lastModifiedDate":"2020-07-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2020-07-29"},{"lineNumber":75,"author":{"gitId":"-"},"content":" + \"r/ [REMARK]\\n\"","lastModifiedDate":"2020-07-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2020-07-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":" + \"r/ Likes to swim.\";","lastModifiedDate":"2020-07-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_IMPLEMENTED_YET \u003d","lastModifiedDate":"2021-08-01"},{"lineNumber":80,"author":{"gitId":"-"},"content":" \"Remark command not implemented yet\";","lastModifiedDate":"2021-08-01"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":84,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_NOT_IMPLEMENTED_YET);","lastModifiedDate":"2020-07-29"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":86,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":88,"author":{"gitId":"-"},"content":"## Enhancing `RemarkCommand`","lastModifiedDate":"2020-07-29"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":90,"author":{"gitId":"-"},"content":"Let’s change `RemarkCommand` to parse input from the user.","lastModifiedDate":"2020-07-29"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":92,"author":{"gitId":"-"},"content":"### Make the command accept parameters","lastModifiedDate":"2020-07-29"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":94,"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":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":96,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":97,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2020-07-29"},{"lineNumber":98,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":99,"author":{"gitId":"-"},"content":"public class RemarkCommand extends Command {","lastModifiedDate":"2020-07-29"},{"lineNumber":100,"author":{"gitId":"-"},"content":" //...","lastModifiedDate":"2020-07-29"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public static final String MESSAGE_ARGUMENTS \u003d \"Index: %1$d, Remark: %2$s\";","lastModifiedDate":"2020-07-29"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":103,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2020-07-29"},{"lineNumber":104,"author":{"gitId":"-"},"content":" private final String remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":106,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-07-29"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit the remark","lastModifiedDate":"2020-07-29"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * @param remark of the person to be updated to","lastModifiedDate":"2020-07-29"},{"lineNumber":109,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public RemarkCommand(Index index, String remark) {","lastModifiedDate":"2020-07-29"},{"lineNumber":111,"author":{"gitId":"-"},"content":" requireAllNonNull(index, remark);","lastModifiedDate":"2020-07-29"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":113,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2020-07-29"},{"lineNumber":114,"author":{"gitId":"-"},"content":" this.remark \u003d remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":118,"author":{"gitId":"-"},"content":" throw new CommandException(","lastModifiedDate":"2021-08-01"},{"lineNumber":119,"author":{"gitId":"-"},"content":" String.format(MESSAGE_ARGUMENTS, index.getOneBased(), remark));","lastModifiedDate":"2021-08-01"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2020-07-29"},{"lineNumber":124,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2020-07-29"},{"lineNumber":125,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2020-07-29"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":128,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2020-07-29"},{"lineNumber":129,"author":{"gitId":"-"},"content":" if (!(other instanceof RemarkCommand)) {","lastModifiedDate":"2020-07-29"},{"lineNumber":130,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2020-07-29"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":133,"author":{"gitId":"-"},"content":" RemarkCommand e \u003d (RemarkCommand) other;","lastModifiedDate":"2020-07-29"},{"lineNumber":134,"author":{"gitId":"-"},"content":" return index.equals(e.index)","lastModifiedDate":"2020-07-29"},{"lineNumber":135,"author":{"gitId":"-"},"content":" \u0026\u0026 remark.equals(e.remark);","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":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":140,"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":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":142,"author":{"gitId":"-"},"content":"### Parse user input","lastModifiedDate":"2020-07-29"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":144,"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":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":146,"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":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":148,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"../diagrams/add-remark/ParserClass.puml\" alt\u003d\"The relationship between Parser and RemarkCommandParser\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":150,"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":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":152,"author":{"gitId":"-"},"content":"**`ArgumentTokenizer.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":154,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":155,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":156,"author":{"gitId":"-"},"content":" * Tokenizes an arguments string and returns an {@code ArgumentMultimap}","lastModifiedDate":"2020-07-29"},{"lineNumber":157,"author":{"gitId":"-"},"content":" * object that maps prefixes to their respective argument values. Only the","lastModifiedDate":"2020-07-29"},{"lineNumber":158,"author":{"gitId":"-"},"content":" * given prefixes will be recognized in the arguments string.","lastModifiedDate":"2020-07-29"},{"lineNumber":159,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2020-07-29"},{"lineNumber":160,"author":{"gitId":"-"},"content":" * @param argsString Arguments string of the form:","lastModifiedDate":"2020-07-29"},{"lineNumber":161,"author":{"gitId":"-"},"content":" * {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2020-07-29"},{"lineNumber":162,"author":{"gitId":"-"},"content":" * @param prefixes Prefixes to tokenize the arguments string with","lastModifiedDate":"2020-07-29"},{"lineNumber":163,"author":{"gitId":"-"},"content":" * @return ArgumentMultimap object that maps prefixes to their","lastModifiedDate":"2020-07-29"},{"lineNumber":164,"author":{"gitId":"-"},"content":" * arguments","lastModifiedDate":"2020-07-29"},{"lineNumber":165,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":166,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":168,"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":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":170,"author":{"gitId":"-"},"content":"**`ArgumentMultimap.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":172,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":173,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":174,"author":{"gitId":"-"},"content":" * Returns the last value of {@code prefix}.","lastModifiedDate":"2020-07-29"},{"lineNumber":175,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":176,"author":{"gitId":"-"},"content":"public Optional\u003cString\u003e getValue(Prefix prefix) {","lastModifiedDate":"2020-07-29"},{"lineNumber":177,"author":{"gitId":"-"},"content":" List\u003cString\u003e values \u003d getAllValues(prefix);","lastModifiedDate":"2020-07-29"},{"lineNumber":178,"author":{"gitId":"-"},"content":" return values.isEmpty() ? Optional.empty() :","lastModifiedDate":"2020-07-29"},{"lineNumber":179,"author":{"gitId":"-"},"content":" Optional.of(values.get(values.size() - 1));","lastModifiedDate":"2020-07-29"},{"lineNumber":180,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":181,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":183,"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":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":185,"author":{"gitId":"-"},"content":"**`DeleteCommandParser.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":187,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":188,"author":{"gitId":"-"},"content":"Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2020-07-29"},{"lineNumber":189,"author":{"gitId":"-"},"content":"return new DeleteCommand(index);","lastModifiedDate":"2020-07-29"},{"lineNumber":190,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":192,"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":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":194,"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":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":196,"author":{"gitId":"-"},"content":"**`RemarkCommandParser.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":198,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":199,"author":{"gitId":"-"},"content":"public RemarkCommand parse(String args) throws ParseException {","lastModifiedDate":"2020-07-29"},{"lineNumber":200,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2020-07-29"},{"lineNumber":201,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args,","lastModifiedDate":"2020-07-29"},{"lineNumber":202,"author":{"gitId":"-"},"content":" PREFIX_REMARK);","lastModifiedDate":"2020-07-29"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":204,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2020-07-29"},{"lineNumber":205,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2020-07-29"},{"lineNumber":206,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2020-07-29"},{"lineNumber":207,"author":{"gitId":"-"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2020-07-29"},{"lineNumber":208,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2020-07-29"},{"lineNumber":209,"author":{"gitId":"-"},"content":" RemarkCommand.MESSAGE_USAGE), ive);","lastModifiedDate":"2020-07-29"},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":212,"author":{"gitId":"-"},"content":" String remark \u003d argMultimap.getValue(PREFIX_REMARK).orElse(\"\");","lastModifiedDate":"2020-07-29"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":214,"author":{"gitId":"-"},"content":" return new RemarkCommand(index, remark);","lastModifiedDate":"2020-07-29"},{"lineNumber":215,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":216,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":218,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":220,"author":{"gitId":"-"},"content":"Don’t forget to update `AddressBookParser` to use our new `RemarkCommandParser`!","lastModifiedDate":"2023-09-12"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":222,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":224,"author":{"gitId":"-"},"content":"If you are stuck, check out the sample","lastModifiedDate":"2020-07-29"},{"lineNumber":225,"author":{"gitId":"-"},"content":"[here](https://github.com/se-edu/addressbook-level3/commit/dc6d5139d08f6403da0ec624ea32bd79a2ae0cbf#diff-8bf239e8e9529369b577701303ddd96af93178b4ed6735f91c2d8488b20c6b4a).","lastModifiedDate":"2022-01-02"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":227,"author":{"gitId":"-"},"content":"## Add `Remark` to the model","lastModifiedDate":"2020-07-29"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":229,"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":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":231,"author":{"gitId":"-"},"content":"### Add a new `Remark` class","lastModifiedDate":"2020-07-29"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":233,"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":"2020-07-29"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":235,"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":236,"author":{"gitId":"-"},"content":"validation.","lastModifiedDate":"2020-07-29"},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":238,"author":{"gitId":"-"},"content":"### Make use of `Remark`","lastModifiedDate":"2020-07-29"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":240,"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":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":242,"author":{"gitId":"-"},"content":"## Add a placeholder element for remark to the UI","lastModifiedDate":"2020-07-29"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":244,"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":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":246,"author":{"gitId":"-"},"content":"Simply add the following to [`seedu.address.ui.PersonCard`](https://github.com/se-edu/addressbook-level3/commit/850b78879582f38accb05dd20c245963c65ea599#diff-639834f1e05afe2276a86372adf0fe5f69314642c2d93cfa543d614ce5a76688).","lastModifiedDate":"2022-01-02"},{"lineNumber":247,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":248,"author":{"gitId":"-"},"content":"**`PersonCard.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":250,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":251,"author":{"gitId":"-"},"content":"@FXML","lastModifiedDate":"2020-07-29"},{"lineNumber":252,"author":{"gitId":"-"},"content":"private Label remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":253,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":256,"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":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":258,"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":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":260,"author":{"gitId":"-"},"content":"**`PersonListCard.fxml`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":261,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":262,"author":{"gitId":"-"},"content":"``` xml","lastModifiedDate":"2020-07-29"},{"lineNumber":263,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"remark\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$remark\" /\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":264,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":266,"author":{"gitId":"-"},"content":"That’s it! Fire up the application again and you should see something like this:","lastModifiedDate":"2020-07-29"},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":268,"author":{"gitId":"-"},"content":"![$remark shows up in each entry](../images/add-remark/$Remark.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":269,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":270,"author":{"gitId":"-"},"content":"## Modify `Person` to support a `Remark` field","lastModifiedDate":"2020-07-29"},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":272,"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":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":274,"author":{"gitId":"-"},"content":"### Modify `Person`","lastModifiedDate":"2020-07-29"},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":276,"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":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":278,"author":{"gitId":"-"},"content":"### Update other usages of `Person`","lastModifiedDate":"2020-07-29"},{"lineNumber":279,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":280,"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":281,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":282,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":284,"author":{"gitId":"-"},"content":"Use the `Find Usages` feature in IntelliJ IDEA on the `Person` class to find these commands.","lastModifiedDate":"2023-09-12"},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":286,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":288,"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":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":291,"author":{"gitId":"-"},"content":"## Updating Storage","lastModifiedDate":"2020-07-29"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":293,"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":294,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":295,"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":296,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":297,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":298,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":299,"author":{"gitId":"drustanyjt"},"content":"You must delete AddressBook’s storage file located at `/data/clinicmate.json` before running it! Not doing so will cause AddressBook to default to an empty address book!","lastModifiedDate":"2024-03-18"},{"lineNumber":300,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":301,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":302,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":303,"author":{"gitId":"-"},"content":"Check out [this commit](https://github.com/se-edu/addressbook-level3/commit/556cbd0e03ff224d7a68afba171ad2eb0ce56bbf)","lastModifiedDate":"2020-07-29"},{"lineNumber":304,"author":{"gitId":"-"},"content":"to see what the changes entail.","lastModifiedDate":"2020-07-29"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":306,"author":{"gitId":"-"},"content":"## Finalizing the UI","lastModifiedDate":"2020-07-29"},{"lineNumber":307,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":308,"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":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":310,"author":{"gitId":"-"},"content":"Just add [this one line of code!](https://github.com/se-edu/addressbook-level3/commit/5b98fee11b6b3f5749b6b943c4f3bd3aa049b692)","lastModifiedDate":"2020-07-29"},{"lineNumber":311,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":312,"author":{"gitId":"-"},"content":"**`PersonCard.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":313,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":314,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":315,"author":{"gitId":"-"},"content":"public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2020-07-29"},{"lineNumber":316,"author":{"gitId":"-"},"content":" //...","lastModifiedDate":"2020-07-29"},{"lineNumber":317,"author":{"gitId":"-"},"content":" remark.setText(person.getRemark().value);","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":"","lastModifiedDate":"2020-07-29"},{"lineNumber":321,"author":{"gitId":"-"},"content":"![The remark label is bound properly!](../images/add-remark/RemarkBound.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":322,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":323,"author":{"gitId":"-"},"content":"## Putting everything together","lastModifiedDate":"2020-07-29"},{"lineNumber":324,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":325,"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":326,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":327,"author":{"gitId":"-"},"content":"### Update `RemarkCommand` and `RemarkCommandParser`","lastModifiedDate":"2020-07-29"},{"lineNumber":328,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":329,"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":330,"author":{"gitId":"-"},"content":"save it with `Model#setPerson()`.","lastModifiedDate":"2020-07-29"},{"lineNumber":331,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":332,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":333,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":334,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":335,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":336,"author":{"gitId":"-"},"content":" public static final String MESSAGE_ADD_REMARK_SUCCESS \u003d \"Added remark to Person: %1$s\";","lastModifiedDate":"2020-07-29"},{"lineNumber":337,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_REMARK_SUCCESS \u003d \"Removed remark from Person: %1$s\";","lastModifiedDate":"2020-07-29"},{"lineNumber":338,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":339,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":340,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":341,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2020-07-29"},{"lineNumber":342,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":343,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2020-07-29"},{"lineNumber":344,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2020-07-29"},{"lineNumber":345,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":346,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":347,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2020-07-29"},{"lineNumber":348,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new Person(","lastModifiedDate":"2021-08-01"},{"lineNumber":349,"author":{"gitId":"-"},"content":" personToEdit.getName(), personToEdit.getPhone(), personToEdit.getEmail(),","lastModifiedDate":"2021-08-01"},{"lineNumber":350,"author":{"gitId":"-"},"content":" personToEdit.getAddress(), remark, personToEdit.getTags());","lastModifiedDate":"2020-07-29"},{"lineNumber":351,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":352,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2020-07-29"},{"lineNumber":353,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2020-07-29"},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":355,"author":{"gitId":"-"},"content":" return new CommandResult(generateSuccessMessage(editedPerson));","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":" /**","lastModifiedDate":"2020-07-29"},{"lineNumber":359,"author":{"gitId":"-"},"content":" * Generates a command execution success message based on whether","lastModifiedDate":"2021-08-01"},{"lineNumber":360,"author":{"gitId":"-"},"content":" * the remark is added to or removed from","lastModifiedDate":"2021-08-01"},{"lineNumber":361,"author":{"gitId":"-"},"content":" * {@code personToEdit}.","lastModifiedDate":"2020-07-29"},{"lineNumber":362,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":363,"author":{"gitId":"-"},"content":" private String generateSuccessMessage(Person personToEdit) {","lastModifiedDate":"2020-07-29"},{"lineNumber":364,"author":{"gitId":"-"},"content":" String message \u003d !remark.value.isEmpty() ? MESSAGE_ADD_REMARK_SUCCESS : MESSAGE_DELETE_REMARK_SUCCESS;","lastModifiedDate":"2020-07-29"},{"lineNumber":365,"author":{"gitId":"-"},"content":" return String.format(message, personToEdit);","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":"","lastModifiedDate":"2020-07-29"},{"lineNumber":369,"author":{"gitId":"-"},"content":"![Congratulations!](../images/add-remark/RemarkComplete.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":370,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":371,"author":{"gitId":"-"},"content":"## Writing tests","lastModifiedDate":"2020-07-29"},{"lineNumber":372,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":373,"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":374,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":375,"author":{"gitId":"-"},"content":"Let’s verify the correctness of our code by writing some tests!","lastModifiedDate":"2020-07-29"},{"lineNumber":376,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":377,"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":378,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-01"},{"lineNumber":379,"author":{"gitId":"-"},"content":"### Automatically generating tests","lastModifiedDate":"2020-07-29"},{"lineNumber":380,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":381,"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":382,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":383,"author":{"gitId":"-"},"content":"The convention for test names is `methodName_testScenario_expectedResult`. An example would be","lastModifiedDate":"2020-07-29"},{"lineNumber":384,"author":{"gitId":"-"},"content":"`execute_filteredList_success`.","lastModifiedDate":"2020-07-29"},{"lineNumber":385,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":386,"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":387,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":388,"author":{"gitId":"-"},"content":"![Using the context menu to jump to tests](../images/add-remark/ContextMenu.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":389,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":390,"author":{"gitId":"-"},"content":"Then, create a test for the `execute` method.","lastModifiedDate":"2020-07-29"},{"lineNumber":391,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":392,"author":{"gitId":"-"},"content":"![Creating a test for `execute`.](../images/add-remark/CreateTest.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":393,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":394,"author":{"gitId":"-"},"content":"Following convention, let’s change the name of the generated method to `execute_addRemarkUnfilteredList_success`.","lastModifiedDate":"2020-07-29"},{"lineNumber":395,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":396,"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":397,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":398,"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":399,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":400,"author":{"gitId":"-"},"content":"## Conclusion","lastModifiedDate":"2020-07-29"},{"lineNumber":401,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":402,"author":{"gitId":"-"},"content":"This concludes the tutorial for adding a new `Command` to AddressBook.","lastModifiedDate":"2020-07-29"}],"authorContributionMap":{"drustanyjt":1,"-":401}},{"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":"tengcharmaine"},"content":" public static final String MESSAGE_INVALID_PERSON \u003d \"The ic number provided is invalid\";","lastModifiedDate":"2024-03-16"},{"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":"jiahui0309"},"content":" public static final String MESSAGE_NO_MATCHING_IC \u003d \"There is nobody with the IC you specified.\";","lastModifiedDate":"2024-03-16"},{"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":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" .append(person.getPhone())","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":"drustanyjt"},"content":" .append(\"; Email: \")","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"drustanyjt"},"content":" .append(person.getEmail())","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"drustanyjt"},"content":" .append(\"; Identity Card Number: \")","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"drustanyjt"},"content":" .append(person.getIdentityCardNumber())","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"drustanyjt"},"content":" .append(\"; Age: \")","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"drustanyjt"},"content":" .append(person.getAge())","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"drustanyjt"},"content":" .append(\"; Sex: \")","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"drustanyjt"},"content":" .append(person.getSex())","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"drustanyjt"},"content":" .append(\"; Note: \")","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"drustanyjt"},"content":" .append(person.getNote())","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" person.getTags().forEach(builder::append);","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"drustanyjt":10,"tengcharmaine":1,"-":48,"jiahui0309":1}},{"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":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AGE;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_IC_NUMBER;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SEX;","lastModifiedDate":"2024-03-17"},{"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.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":"Jayne1010"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a person to the address book. \\n\"","lastModifiedDate":"2024-03-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":"Jayne1010"},"content":" + PREFIX_IC_NUMBER + \"IC_NUMBER \"","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"Jayne1010"},"content":" + PREFIX_AGE + \"AGE \"","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"Jayne1010"},"content":" + PREFIX_SEX + \"SEX \"","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"Jayne1010"},"content":" + PREFIX_ADDRESS + \"ADDRESS \\n\"","lastModifiedDate":"2024-03-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06"},{"lineNumber":35,"author":{"gitId":"Jayne1010"},"content":" + PREFIX_PHONE + \"12345678 \"","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"Jayne1010"},"content":" + PREFIX_EMAIL + \"JohnDoe@mail.com \"","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"Jayne1010"},"content":" + PREFIX_IC_NUMBER + \"T0123456A \"","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"Jayne1010"},"content":" + PREFIX_AGE + \"12 \"","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"Jayne1010"},"content":" + PREFIX_SEX + \"M \"","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"Jayne1010"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \";","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"Jayne1010"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: \\n\"","lastModifiedDate":"2024-03-24"},{"lineNumber":43,"author":{"gitId":"Jayne1010"},"content":" + \"Name: %1$s\\n\"","lastModifiedDate":"2024-03-24"},{"lineNumber":44,"author":{"gitId":"Jayne1010"},"content":" + \"Phone: %2$s\\n\"","lastModifiedDate":"2024-03-24"},{"lineNumber":45,"author":{"gitId":"Jayne1010"},"content":" + \"Email: %3$s\\n\"","lastModifiedDate":"2024-03-24"},{"lineNumber":46,"author":{"gitId":"Jayne1010"},"content":" + \"Identity Card Number: %4$s\\n\"","lastModifiedDate":"2024-03-24"},{"lineNumber":47,"author":{"gitId":"Jayne1010"},"content":" + \"Age: %5$s\\n\"","lastModifiedDate":"2024-03-24"},{"lineNumber":48,"author":{"gitId":"Jayne1010"},"content":" + \"Sex: %6$s\\n\"","lastModifiedDate":"2024-03-24"},{"lineNumber":49,"author":{"gitId":"Jayne1010"},"content":" + \"Address: %7$s\\n\";","lastModifiedDate":"2024-03-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book\";","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":58,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":59,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":64,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":67,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25"},{"lineNumber":71,"author":{"gitId":"Jayne1010"},"content":" String successMessage \u003d String.format(MESSAGE_SUCCESS,","lastModifiedDate":"2024-03-24"},{"lineNumber":72,"author":{"gitId":"Jayne1010"},"content":" toAdd.getName(),","lastModifiedDate":"2024-03-24"},{"lineNumber":73,"author":{"gitId":"Jayne1010"},"content":" toAdd.getPhone(),","lastModifiedDate":"2024-03-24"},{"lineNumber":74,"author":{"gitId":"Jayne1010"},"content":" toAdd.getEmail(),","lastModifiedDate":"2024-03-24"},{"lineNumber":75,"author":{"gitId":"Jayne1010"},"content":" toAdd.getIdentityCardNumber(),","lastModifiedDate":"2024-03-24"},{"lineNumber":76,"author":{"gitId":"Jayne1010"},"content":" toAdd.getAge(),","lastModifiedDate":"2024-03-24"},{"lineNumber":77,"author":{"gitId":"Jayne1010"},"content":" toAdd.getSex(),","lastModifiedDate":"2024-03-24"},{"lineNumber":78,"author":{"gitId":"Jayne1010"},"content":" toAdd.getAddress());","lastModifiedDate":"2024-03-24"},{"lineNumber":79,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":80,"author":{"gitId":"Jayne1010"},"content":" return new CommandResult(successMessage);","lastModifiedDate":"2024-03-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22"},{"lineNumber":85,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"Jayne1010":32,"-":72}},{"path":"src/main/java/seedu/address/logic/commands/AddNoteCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"tengcharmaine"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"tengcharmaine"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"tengcharmaine"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NOTE;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"tengcharmaine"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"tengcharmaine"},"content":"import java.util.List;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.model.person.IdentityCardNumberMatchesPredicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.model.person.Note;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"tengcharmaine"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"tengcharmaine"},"content":" * Changes the note of an existing person in the address book.","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"tengcharmaine"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"tengcharmaine"},"content":"public class AddNoteCommand extends Command {","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"tengcharmaine"},"content":" public static final String COMMAND_WORD \u003d \"addnote\";","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"tengcharmaine"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the note of the person whose profile matches \"","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"tengcharmaine"},"content":" + \"the specified IC (case-insensitive). \"","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"tengcharmaine"},"content":" + \"Existing remark will be appended by default. \"","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"tengcharmaine"},"content":" + \"To replace the original note, add -replace at the end of your command. \"","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"tengcharmaine"},"content":" + \"E.g. addnote i/S0123456Q n/Diabetes -replace\\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"tengcharmaine"},"content":" + \"Parameters: IC (National Registration Identity Card) \"","lastModifiedDate":"2024-03-23"},{"lineNumber":29,"author":{"gitId":"tengcharmaine"},"content":" + PREFIX_NOTE + \"NOTE \\n\"","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"tengcharmaine"},"content":" + \"Example: \" + COMMAND_WORD","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"tengcharmaine"},"content":" + \" S0123456Q \"","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"tengcharmaine"},"content":" + PREFIX_NOTE + \"Diabetes\";","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"tengcharmaine"},"content":" public static final String MESSAGE_MODIFY_NOTE_SUCCESS \u003d \"Note for %1$s (ic: %2$s) modified successfully!\";","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"tengcharmaine"},"content":" private final IdentityCardNumberMatchesPredicate icPredicate;","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"tengcharmaine"},"content":" private final Note note;","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"tengcharmaine"},"content":" private final boolean isReplace;","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"tengcharmaine"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"tengcharmaine"},"content":" * @param icPredicate of the person in the filtered person list to edit the note","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"tengcharmaine"},"content":" * @param note of the person to be updated to","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"tengcharmaine"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"tengcharmaine"},"content":" public AddNoteCommand(IdentityCardNumberMatchesPredicate icPredicate, Note note, boolean isReplace) {","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"tengcharmaine"},"content":" requireAllNonNull(icPredicate, note);","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"tengcharmaine"},"content":" this.icPredicate \u003d icPredicate;","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"tengcharmaine"},"content":" this.note \u003d note;","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"tengcharmaine"},"content":" this.isReplace \u003d isReplace;","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"tengcharmaine"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"tengcharmaine"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"tengcharmaine"},"content":" model.updateFilteredPersonList(icPredicate);","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"tengcharmaine"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"tengcharmaine"},"content":" if (lastShownList.isEmpty()) {","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"tengcharmaine"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON);","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"tengcharmaine"},"content":" Person personToEdit \u003d lastShownList.get(0);","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"tengcharmaine"},"content":" Person editedPerson;","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"tengcharmaine"},"content":" if (isReplace || personToEdit.getNote().equals(Note.DEFAULT)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"tengcharmaine"},"content":" editedPerson \u003d new Person(personToEdit.getName(), personToEdit.getPhone(), personToEdit.getEmail(),","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"tengcharmaine"},"content":" personToEdit.getIdentityCardNumber(), personToEdit.getAge(), personToEdit.getSex(),","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"tengcharmaine"},"content":" personToEdit.getAddress(), note, personToEdit.getTags());","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"tengcharmaine"},"content":" } else {","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"tengcharmaine"},"content":" Note updatedNote \u003d personToEdit.getNote().append(\"\\n\" + note.toString());","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"tengcharmaine"},"content":" editedPerson \u003d new Person(personToEdit.getName(), personToEdit.getPhone(), personToEdit.getEmail(),","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"tengcharmaine"},"content":" personToEdit.getIdentityCardNumber(), personToEdit.getAge(), personToEdit.getSex(),","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"tengcharmaine"},"content":" personToEdit.getAddress(), updatedNote, personToEdit.getTags());","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"tengcharmaine"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"tengcharmaine"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"tengcharmaine"},"content":" return new CommandResult(generateSuccessMessage(editedPerson));","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"tengcharmaine"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"tengcharmaine"},"content":" * Generates a command execution success message based on whether the remark is added to or removed from","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"tengcharmaine"},"content":" * {@code personToEdit}.","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"tengcharmaine"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"tengcharmaine"},"content":" public String generateSuccessMessage(Person personToEdit) {","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"tengcharmaine"},"content":" return String.format(MESSAGE_MODIFY_NOTE_SUCCESS, personToEdit.getName(),","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"tengcharmaine"},"content":" personToEdit.getIdentityCardNumber());","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":87,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":88,"author":{"gitId":"tengcharmaine"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":89,"author":{"gitId":"tengcharmaine"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-16"},{"lineNumber":90,"author":{"gitId":"tengcharmaine"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-16"},{"lineNumber":91,"author":{"gitId":"tengcharmaine"},"content":" return true;","lastModifiedDate":"2024-03-16"},{"lineNumber":92,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":93,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":94,"author":{"gitId":"tengcharmaine"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-16"},{"lineNumber":95,"author":{"gitId":"tengcharmaine"},"content":" if (!(other instanceof AddNoteCommand)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":96,"author":{"gitId":"tengcharmaine"},"content":" return false;","lastModifiedDate":"2024-03-16"},{"lineNumber":97,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":98,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":99,"author":{"gitId":"tengcharmaine"},"content":" AddNoteCommand e \u003d (AddNoteCommand) other;","lastModifiedDate":"2024-03-16"},{"lineNumber":100,"author":{"gitId":"tengcharmaine"},"content":" return icPredicate.equals(e.icPredicate)","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"tengcharmaine"},"content":" \u0026\u0026 note.equals(e.note)","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"tengcharmaine"},"content":" \u0026\u0026 isReplace \u003d\u003d e.isReplace;","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":104,"author":{"gitId":"tengcharmaine"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"tengcharmaine":104}},{"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.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"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":"jiahui0309"},"content":"import seedu.address.model.person.IdentityCardNumberMatchesPredicate;","lastModifiedDate":"2024-03-16"},{"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":"jiahui0309"},"content":" * Deletes a person identified using it\u0027s displayed identity card number from the address book.","lastModifiedDate":"2024-03-16"},{"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":"jiahui0309"},"content":" + \": Deletes the person identified by the identity card number used in the displayed person list.\\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"jiahui0309"},"content":" + \"Parameters: IC (must be a valid identity card number)\\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"jiahui0309"},"content":" + \"Example: \" + COMMAND_WORD + \" S1234567A\";","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"Jayne1010"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Person: \\n\"","lastModifiedDate":"2024-03-24"},{"lineNumber":27,"author":{"gitId":"Jayne1010"},"content":" + \"Name: %1$s\\n\"","lastModifiedDate":"2024-03-24"},{"lineNumber":28,"author":{"gitId":"Jayne1010"},"content":" + \"Phone: %2$s\\n\"","lastModifiedDate":"2024-03-24"},{"lineNumber":29,"author":{"gitId":"Jayne1010"},"content":" + \"Email: %3$s\\n\"","lastModifiedDate":"2024-03-24"},{"lineNumber":30,"author":{"gitId":"Jayne1010"},"content":" + \"Identity Card Number: %4$s\\n\"","lastModifiedDate":"2024-03-24"},{"lineNumber":31,"author":{"gitId":"Jayne1010"},"content":" + \"Age: %5$s\\n\"","lastModifiedDate":"2024-03-24"},{"lineNumber":32,"author":{"gitId":"Jayne1010"},"content":" + \"Sex: %6$s\\n\"","lastModifiedDate":"2024-03-24"},{"lineNumber":33,"author":{"gitId":"Jayne1010"},"content":" + \"Address: %7$s\\n\";;","lastModifiedDate":"2024-03-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"jiahui0309"},"content":" private final IdentityCardNumberMatchesPredicate predicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"jiahui0309"},"content":" public DeleteCommand(IdentityCardNumberMatchesPredicate predicate) {","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"jiahui0309"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2024-03-16"},{"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 CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":44,"author":{"gitId":"jiahui0309"},"content":" List\u003cPerson\u003e allPatients \u003d model.getAddressBook().getPersonList();","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":46,"author":{"gitId":"jiahui0309"},"content":" Person personToDelete \u003d allPatients.stream()","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"jiahui0309"},"content":" .filter(predicate::test)","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"jiahui0309"},"content":" .findFirst()","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"jiahui0309"},"content":" .orElseThrow(() -\u003e new CommandException(Messages.MESSAGE_NO_MATCHING_IC));","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" model.deletePerson(personToDelete);","lastModifiedDate":"2016-09-25"},{"lineNumber":52,"author":{"gitId":"Jayne1010"},"content":" String successMessage \u003d String.format(MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2024-03-24"},{"lineNumber":53,"author":{"gitId":"Jayne1010"},"content":" personToDelete.getName(),","lastModifiedDate":"2024-03-24"},{"lineNumber":54,"author":{"gitId":"Jayne1010"},"content":" personToDelete.getPhone(),","lastModifiedDate":"2024-03-24"},{"lineNumber":55,"author":{"gitId":"Jayne1010"},"content":" personToDelete.getEmail(),","lastModifiedDate":"2024-03-24"},{"lineNumber":56,"author":{"gitId":"Jayne1010"},"content":" personToDelete.getIdentityCardNumber(),","lastModifiedDate":"2024-03-24"},{"lineNumber":57,"author":{"gitId":"Jayne1010"},"content":" personToDelete.getAge(),","lastModifiedDate":"2024-03-24"},{"lineNumber":58,"author":{"gitId":"Jayne1010"},"content":" personToDelete.getSex(),","lastModifiedDate":"2024-03-24"},{"lineNumber":59,"author":{"gitId":"Jayne1010"},"content":" personToDelete.getAddress());","lastModifiedDate":"2024-03-24"},{"lineNumber":60,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":61,"author":{"gitId":"Jayne1010"},"content":" return new CommandResult(successMessage);","lastModifiedDate":"2024-03-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return true;","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":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" if (!(other instanceof DeleteCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return false;","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":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":76,"author":{"gitId":"jiahui0309"},"content":" return predicate.equals(otherDeleteCommand.predicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"jiahui0309"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"Jayne1010":18,"-":52,"jiahui0309":15}},{"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":"Jayne1010"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AGE;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":7,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_IC_NUMBER;","lastModifiedDate":"2024-03-21"},{"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":"Jayne1010"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SEX;","lastModifiedDate":"2024-03-21"},{"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.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":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.Age;","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.IdentityCardNumberMatchesPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.Sex;","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":39,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the person identified \"","lastModifiedDate":"2016-12-26"},{"lineNumber":44,"author":{"gitId":"Jayne1010"},"content":" + \"by the identity card number used in the displayed person list. \\n\"","lastModifiedDate":"2024-03-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26"},{"lineNumber":46,"author":{"gitId":"Jayne1010"},"content":" + \"Parameters: IC (must be a valid identity card number) \"","lastModifiedDate":"2024-03-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06"},{"lineNumber":48,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":50,"author":{"gitId":"Jayne1010"},"content":" + \"[\" + PREFIX_IC_NUMBER + \"IC_NUMBER] \"","lastModifiedDate":"2024-03-24"},{"lineNumber":51,"author":{"gitId":"Jayne1010"},"content":" + \"[\" + PREFIX_AGE + \"AGE] \"","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"Jayne1010"},"content":" + \"[\" + PREFIX_SEX + \"SEX] \"","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"Jayne1010"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \\n\"","lastModifiedDate":"2024-03-24"},{"lineNumber":54,"author":{"gitId":"Jayne1010"},"content":" + \"Example: \" + COMMAND_WORD + \" T0123456A \"","lastModifiedDate":"2024-03-21"},{"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":"Jayne1010"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: \\n\"","lastModifiedDate":"2024-03-24"},{"lineNumber":59,"author":{"gitId":"Jayne1010"},"content":" + \"Name: %1$s\\n\"","lastModifiedDate":"2024-03-24"},{"lineNumber":60,"author":{"gitId":"Jayne1010"},"content":" + \"Phone: %2$s\\n\"","lastModifiedDate":"2024-03-24"},{"lineNumber":61,"author":{"gitId":"Jayne1010"},"content":" + \"Email: %3$s\\n\"","lastModifiedDate":"2024-03-24"},{"lineNumber":62,"author":{"gitId":"Jayne1010"},"content":" + \"Identity Card Number: %4$s\\n\"","lastModifiedDate":"2024-03-24"},{"lineNumber":63,"author":{"gitId":"Jayne1010"},"content":" + \"Age: %5$s\\n\"","lastModifiedDate":"2024-03-24"},{"lineNumber":64,"author":{"gitId":"Jayne1010"},"content":" + \"Sex: %6$s\\n\"","lastModifiedDate":"2024-03-24"},{"lineNumber":65,"author":{"gitId":"Jayne1010"},"content":" + \"Address: %7$s\\n\";","lastModifiedDate":"2024-03-24"},{"lineNumber":66,"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":67,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26"},{"lineNumber":69,"author":{"gitId":"Jayne1010"},"content":" private final IdentityCardNumberMatchesPredicate predicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":72,"author":{"gitId":"Jayne1010"},"content":" * @param predicate of the person in the filtered person list to edit","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":75,"author":{"gitId":"Jayne1010"},"content":" public EditCommand(IdentityCardNumberMatchesPredicate predicate, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"Jayne1010"},"content":" requireNonNull(predicate);","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":79,"author":{"gitId":"Jayne1010"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":85,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":86,"author":{"gitId":"Jayne1010"},"content":" List\u003cPerson\u003e allPatients \u003d model.getAddressBook().getPersonList();","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":88,"author":{"gitId":"Jayne1010"},"content":" Person personToEdit \u003d allPatients.stream()","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"Jayne1010"},"content":" .filter(predicate::test)","lastModifiedDate":"2024-03-21"},{"lineNumber":90,"author":{"gitId":"Jayne1010"},"content":" .findFirst()","lastModifiedDate":"2024-03-21"},{"lineNumber":91,"author":{"gitId":"Jayne1010"},"content":" .orElseThrow(() -\u003e new CommandException(Messages.MESSAGE_NO_MATCHING_IC));","lastModifiedDate":"2024-03-21"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":96,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":99,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":100,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":101,"author":{"gitId":"Jayne1010"},"content":" String successMessage \u003d String.format(MESSAGE_EDIT_PERSON_SUCCESS,","lastModifiedDate":"2024-03-24"},{"lineNumber":102,"author":{"gitId":"Jayne1010"},"content":" editedPerson.getName(),","lastModifiedDate":"2024-03-24"},{"lineNumber":103,"author":{"gitId":"Jayne1010"},"content":" editedPerson.getPhone(),","lastModifiedDate":"2024-03-24"},{"lineNumber":104,"author":{"gitId":"Jayne1010"},"content":" editedPerson.getEmail(),","lastModifiedDate":"2024-03-24"},{"lineNumber":105,"author":{"gitId":"Jayne1010"},"content":" editedPerson.getIdentityCardNumber(),","lastModifiedDate":"2024-03-24"},{"lineNumber":106,"author":{"gitId":"Jayne1010"},"content":" editedPerson.getAge(),","lastModifiedDate":"2024-03-24"},{"lineNumber":107,"author":{"gitId":"Jayne1010"},"content":" editedPerson.getSex(),","lastModifiedDate":"2024-03-24"},{"lineNumber":108,"author":{"gitId":"Jayne1010"},"content":" editedPerson.getAddress());","lastModifiedDate":"2024-03-24"},{"lineNumber":109,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":110,"author":{"gitId":"Jayne1010"},"content":" return new CommandResult(successMessage);","lastModifiedDate":"2024-03-24"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":113,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26"},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":117,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":120,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":121,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21"},{"lineNumber":122,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":123,"author":{"gitId":"Jayne1010"},"content":" IdentityCardNumber updatedIC \u003d editPersonDescriptor.getIC().orElse(personToEdit.getIdentityCardNumber());","lastModifiedDate":"2024-03-21"},{"lineNumber":124,"author":{"gitId":"Jayne1010"},"content":" Age updatedAge \u003d editPersonDescriptor.getAge().orElse(personToEdit.getAge());","lastModifiedDate":"2024-03-21"},{"lineNumber":125,"author":{"gitId":"Jayne1010"},"content":" Sex updatedSex \u003d editPersonDescriptor.getSex().orElse(personToEdit.getSex());","lastModifiedDate":"2024-03-21"},{"lineNumber":126,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2017-06-21"},{"lineNumber":127,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2017-06-21"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":129,"author":{"gitId":"drustanyjt"},"content":" // Use the same person for existing fields, but copies the object for every thing else","lastModifiedDate":"2024-03-16"},{"lineNumber":130,"author":{"gitId":"drustanyjt"},"content":" // TODO: change this when the command is updated","lastModifiedDate":"2024-03-16"},{"lineNumber":131,"author":{"gitId":"Jayne1010"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedIC,","lastModifiedDate":"2024-03-21"},{"lineNumber":132,"author":{"gitId":"Jayne1010"},"content":" updatedAge, updatedSex, updatedAddress, personToEdit.getNote(), updatedTags);","lastModifiedDate":"2024-03-21"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":136,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":137,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08"},{"lineNumber":142,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":146,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":147,"author":{"gitId":"Jayne1010"},"content":" return predicate.equals(otherEditCommand.predicate)","lastModifiedDate":"2024-03-21"},{"lineNumber":148,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":151,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":154,"author":{"gitId":"Jayne1010"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2024-03-21"},{"lineNumber":155,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":160,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26"},{"lineNumber":161,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26"},{"lineNumber":162,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":163,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26"},{"lineNumber":164,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21"},{"lineNumber":165,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":166,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":167,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21"},{"lineNumber":168,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21"},{"lineNumber":169,"author":{"gitId":"Jayne1010"},"content":" private IdentityCardNumber ic;","lastModifiedDate":"2024-03-21"},{"lineNumber":170,"author":{"gitId":"Jayne1010"},"content":" private Age age;","lastModifiedDate":"2024-03-21"},{"lineNumber":171,"author":{"gitId":"Jayne1010"},"content":" private Sex sex;","lastModifiedDate":"2024-03-21"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":173,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":175,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":176,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11"},{"lineNumber":177,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":178,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26"},{"lineNumber":179,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15"},{"lineNumber":180,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15"},{"lineNumber":181,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15"},{"lineNumber":182,"author":{"gitId":"Jayne1010"},"content":" setIC(toCopy.ic);","lastModifiedDate":"2024-03-21"},{"lineNumber":183,"author":{"gitId":"Jayne1010"},"content":" setAge(toCopy.age);","lastModifiedDate":"2024-03-21"},{"lineNumber":184,"author":{"gitId":"Jayne1010"},"content":" setSex(toCopy.sex);","lastModifiedDate":"2024-03-21"},{"lineNumber":185,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15"},{"lineNumber":186,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":189,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":190,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26"},{"lineNumber":191,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":192,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26"},{"lineNumber":193,"author":{"gitId":"Jayne1010"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, ic, sex, age, address, tags);","lastModifiedDate":"2024-03-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 void setName(Name name) {","lastModifiedDate":"2017-06-21"},{"lineNumber":197,"author":{"gitId":"-"},"content":" this.name \u003d name;","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 Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":201,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","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 void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21"},{"lineNumber":205,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","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\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26"},{"lineNumber":209,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","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":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21"},{"lineNumber":213,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21"},{"lineNumber":214,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":216,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":217,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21"},{"lineNumber":218,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":220,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21"},{"lineNumber":221,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21"},{"lineNumber":222,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":224,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26"},{"lineNumber":225,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21"},{"lineNumber":226,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":227,"author":{"gitId":"Jayne1010"},"content":" public void setIC(IdentityCardNumber ic) {","lastModifiedDate":"2024-03-21"},{"lineNumber":228,"author":{"gitId":"Jayne1010"},"content":" this.ic \u003d ic;","lastModifiedDate":"2024-03-21"},{"lineNumber":229,"author":{"gitId":"Jayne1010"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":230,"author":{"gitId":"Jayne1010"},"content":" public Optional\u003cIdentityCardNumber\u003e getIC() {","lastModifiedDate":"2024-03-21"},{"lineNumber":231,"author":{"gitId":"Jayne1010"},"content":" return Optional.ofNullable(ic);","lastModifiedDate":"2024-03-21"},{"lineNumber":232,"author":{"gitId":"Jayne1010"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":233,"author":{"gitId":"Jayne1010"},"content":" public void setAge(Age age) {","lastModifiedDate":"2024-03-21"},{"lineNumber":234,"author":{"gitId":"Jayne1010"},"content":" this.age \u003d age;","lastModifiedDate":"2024-03-21"},{"lineNumber":235,"author":{"gitId":"Jayne1010"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":236,"author":{"gitId":"Jayne1010"},"content":" public Optional\u003cAge\u003e getAge() {","lastModifiedDate":"2024-03-21"},{"lineNumber":237,"author":{"gitId":"Jayne1010"},"content":" return Optional.ofNullable(age);","lastModifiedDate":"2024-03-21"},{"lineNumber":238,"author":{"gitId":"Jayne1010"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":239,"author":{"gitId":"Jayne1010"},"content":" public void setSex(Sex sex) {","lastModifiedDate":"2024-03-21"},{"lineNumber":240,"author":{"gitId":"Jayne1010"},"content":" this.sex \u003d sex;","lastModifiedDate":"2024-03-21"},{"lineNumber":241,"author":{"gitId":"Jayne1010"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":242,"author":{"gitId":"Jayne1010"},"content":" public Optional\u003cSex\u003e getSex() {","lastModifiedDate":"2024-03-21"},{"lineNumber":243,"author":{"gitId":"Jayne1010"},"content":" return Optional.ofNullable(sex);","lastModifiedDate":"2024-03-21"},{"lineNumber":244,"author":{"gitId":"Jayne1010"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":246,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":247,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11"},{"lineNumber":248,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":249,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":250,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21"},{"lineNumber":251,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11"},{"lineNumber":252,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":254,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":255,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11"},{"lineNumber":256,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11"},{"lineNumber":257,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11"},{"lineNumber":258,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":259,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":260,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11"},{"lineNumber":261,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"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":"Jayne1010"},"content":" \u0026\u0026 Objects.equals(ic, otherEditPersonDescriptor.ic)","lastModifiedDate":"2024-03-21"},{"lineNumber":279,"author":{"gitId":"Jayne1010"},"content":" \u0026\u0026 Objects.equals(age, otherEditPersonDescriptor.age)","lastModifiedDate":"2024-03-21"},{"lineNumber":280,"author":{"gitId":"Jayne1010"},"content":" \u0026\u0026 Objects.equals(sex, otherEditPersonDescriptor.sex)","lastModifiedDate":"2024-03-21"},{"lineNumber":281,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":282,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags);","lastModifiedDate":"2023-07-13"},{"lineNumber":283,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":284,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":285,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":286,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":287,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":288,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":289,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":290,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":291,"author":{"gitId":"Jayne1010"},"content":" .add(\"ic\", ic)","lastModifiedDate":"2024-03-21"},{"lineNumber":292,"author":{"gitId":"Jayne1010"},"content":" .add(\"age\", age)","lastModifiedDate":"2024-03-21"},{"lineNumber":293,"author":{"gitId":"Jayne1010"},"content":" .add(\"sex\", sex)","lastModifiedDate":"2024-03-21"},{"lineNumber":294,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":295,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":296,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":297,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":298,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":299,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"Jayne1010":80,"drustanyjt":2,"-":217}},{"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":"jiahui0309"},"content":"import seedu.address.model.person.IdentityCardNumberMatchesPredicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22"},{"lineNumber":11,"author":{"gitId":"jiahui0309"},"content":" * Finds and lists all persons in address book whose IC matches the argument IC.","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"jiahui0309"},"content":" * Keyword matching is case-insensitive.","lastModifiedDate":"2024-03-16"},{"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":"jiahui0309"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all persons whose profile matches \"","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"jiahui0309"},"content":" + \"the specified IC (case-insensitive) and displays them.\\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"Jayne1010"},"content":" + \"Parameters: IC (must be a valid identity card number) \\n\"","lastModifiedDate":"2024-03-24"},{"lineNumber":21,"author":{"gitId":"jiahui0309"},"content":" + \"Example: \" + COMMAND_WORD + \" t1234567A\";","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":23,"author":{"gitId":"jiahui0309"},"content":" private final IdentityCardNumberMatchesPredicate predicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":25,"author":{"gitId":"jiahui0309"},"content":" public FindCommand(IdentityCardNumberMatchesPredicate predicate) {","lastModifiedDate":"2024-03-16"},{"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":{"Jayne1010":1,"-":49,"jiahui0309":8}},{"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":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AGE;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_IC_NUMBER;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SEX;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"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":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.Age;","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.Note;","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.Sex;","lastModifiedDate":"2024-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":"Jayne1010"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"Jayne1010"},"content":" PREFIX_IC_NUMBER, PREFIX_AGE, PREFIX_SEX, PREFIX_ADDRESS);","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":44,"author":{"gitId":"Jayne1010"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"Jayne1010"},"content":" PREFIX_IC_NUMBER, PREFIX_AGE, PREFIX_SEX, PREFIX_ADDRESS)","lastModifiedDate":"2024-03-17"},{"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":"Jayne1010"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"Jayne1010"},"content":" PREFIX_IC_NUMBER, PREFIX_AGE, PREFIX_SEX, PREFIX_ADDRESS);","lastModifiedDate":"2024-03-17"},{"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":"Jayne1010"},"content":" IdentityCardNumber ic \u003d ParserUtil.parseIC(argMultimap.getValue(PREFIX_IC_NUMBER).get());","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"Jayne1010"},"content":" Sex sex \u003d ParserUtil.parseSex(argMultimap.getValue(PREFIX_SEX).get());","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":58,"author":{"gitId":"Jayne1010"},"content":" Age age \u003d ParserUtil.parseAge(argMultimap.getValue(PREFIX_AGE).get());","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":61,"author":{"gitId":"drustanyjt"},"content":" // Use the same add person, but create a DEFAULT object for every thing else","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"drustanyjt"},"content":" // TODO: change this when the command is updated","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"Jayne1010"},"content":" Person person \u003d new Person(name, phone, email, ic, age, sex,","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"drustanyjt"},"content":" address, Note.DEFAULT, tagList);","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17"},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":73,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"Jayne1010":17,"drustanyjt":3,"-":57}},{"path":"src/main/java/seedu/address/logic/parser/AddNoteCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"tengcharmaine"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"tengcharmaine"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"tengcharmaine"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"tengcharmaine"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FLAG;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"tengcharmaine"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NOTE;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"tengcharmaine"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.logic.commands.AddNoteCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.model.person.IdentityCardNumberMatchesPredicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.model.person.Note;","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"tengcharmaine"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"tengcharmaine"},"content":" * Parses input arguments and creates a new {@code AddNoteCommand} object","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"tengcharmaine"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"tengcharmaine"},"content":"public class AddNoteCommandParser implements Parser\u003cAddNoteCommand\u003e {","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"tengcharmaine"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"tengcharmaine"},"content":" * Parses the given {@code String} of arguments in the context of the {@code AddNoteCommand}","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"tengcharmaine"},"content":" * and returns a {@code AddNoteCommand} object for execution.","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"tengcharmaine"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"tengcharmaine"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"tengcharmaine"},"content":" public AddNoteCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"tengcharmaine"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"tengcharmaine"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_NOTE, PREFIX_FLAG);","lastModifiedDate":"2024-03-23"},{"lineNumber":29,"author":{"gitId":"tengcharmaine"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"tengcharmaine"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NOTE)","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"tengcharmaine"},"content":" || trimmedArgs.isEmpty()) {","lastModifiedDate":"2024-03-23"},{"lineNumber":33,"author":{"gitId":"tengcharmaine"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddNoteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"tengcharmaine"},"content":" IdentityCardNumber ic;","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"tengcharmaine"},"content":" try {","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"tengcharmaine"},"content":" String note \u003d \"\";","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"tengcharmaine"},"content":" boolean isReplace \u003d false;","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"tengcharmaine"},"content":" if (argMultimap.getValue(PREFIX_FLAG).isPresent()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"tengcharmaine"},"content":" int startIndex \u003d args.indexOf(PREFIX_NOTE.getPrefix()) + PREFIX_NOTE.getPrefix().length();","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"tengcharmaine"},"content":" int endIndex \u003d args.indexOf(PREFIX_FLAG.getPrefix());","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"tengcharmaine"},"content":" note \u003d args.substring(startIndex, endIndex).trim();","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"tengcharmaine"},"content":" isReplace \u003d true;","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"tengcharmaine"},"content":" } else {","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"tengcharmaine"},"content":" note \u003d argMultimap.getValue(PREFIX_NOTE).orElse(\"\");","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"tengcharmaine"},"content":" ic \u003d ParserUtil.parseIC(argMultimap.getPreamble());","lastModifiedDate":"2024-03-23"},{"lineNumber":51,"author":{"gitId":"tengcharmaine"},"content":" return new AddNoteCommand(new IdentityCardNumberMatchesPredicate(ic), new Note(note), isReplace);","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"tengcharmaine"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"tengcharmaine"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddNoteCommand.MESSAGE_USAGE), ive);","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"tengcharmaine"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"tengcharmaine"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"tengcharmaine"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"tengcharmaine"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"tengcharmaine"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"tengcharmaine"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"tengcharmaine"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"tengcharmaine":64}},{"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":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.logic.commands.AddNoteCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24"},{"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":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":50,"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":51,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":72,"author":{"gitId":"tengcharmaine"},"content":" case AddNoteCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"tengcharmaine"},"content":" return new AddNoteCommandParser().parse(arguments);","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26"},{"lineNumber":85,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29"},{"lineNumber":86,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11"},{"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":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"tengcharmaine":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":"Jayne1010"},"content":" public static final Prefix PREFIX_IC_NUMBER \u003d new Prefix(\"i/\");","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"Jayne1010"},"content":" public static final Prefix PREFIX_AGE \u003d new Prefix(\"ag/\");","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"Jayne1010"},"content":" public static final Prefix PREFIX_SEX \u003d new Prefix(\"s/\");","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":14,"author":{"gitId":"Jayne1010"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"Jayne1010"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":17,"author":{"gitId":"tengcharmaine"},"content":" public static final Prefix PREFIX_NOTE \u003d new Prefix(\"n/\");","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"tengcharmaine"},"content":" public static final Prefix PREFIX_IC \u003d new Prefix(\"i/\");","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"tengcharmaine"},"content":" public static final Prefix PREFIX_FLAG \u003d new Prefix(\"-replace\");","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"Jayne1010":5,"tengcharmaine":3,"-":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":"2017-01-26"},{"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":"jiahui0309"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"jiahui0309"},"content":"import seedu.address.model.person.IdentityCardNumberMatchesPredicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new DeleteCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class DeleteCommandParser implements Parser\u003cDeleteCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * and returns a DeleteCommand object for execution.","lastModifiedDate":"2019-05-11"},{"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":"jiahui0309"},"content":" IdentityCardNumber ic \u003d ParserUtil.parseIC(args);","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"jiahui0309"},"content":" return new DeleteCommand(new IdentityCardNumberMatchesPredicate(ic));","lastModifiedDate":"2024-03-16"},{"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"},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"-":26,"jiahui0309":4}},{"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":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AGE;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_IC_NUMBER;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SEX;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26"},{"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":"Jayne1010"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.IdentityCardNumberMatchesPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"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":"2017-01-26"},{"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":"2017-01-26"},{"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":"Jayne1010"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_IC_NUMBER,","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"Jayne1010"},"content":" PREFIX_AGE, PREFIX_SEX, PREFIX_ADDRESS);","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"Jayne1010"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"Jayne1010"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"Jayne1010"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"Jayne1010"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":46,"author":{"gitId":"Jayne1010"},"content":" IdentityCardNumber ic \u003d ParserUtil.parseIC(argMultimap.getPreamble());","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":48,"author":{"gitId":"Jayne1010"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_IC_NUMBER,","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"Jayne1010"},"content":" PREFIX_AGE, PREFIX_SEX, PREFIX_ADDRESS);","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":51,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-01-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":53,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":" editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":59,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":60,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":62,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":63,"author":{"gitId":"-"},"content":" editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":65,"author":{"gitId":"Jayne1010"},"content":" if (argMultimap.getValue(PREFIX_IC_NUMBER).isPresent()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"Jayne1010"},"content":" editPersonDescriptor.setIC(ParserUtil.parseIC(argMultimap.getValue(PREFIX_IC_NUMBER).get()));","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"Jayne1010"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"Jayne1010"},"content":" if (argMultimap.getValue(PREFIX_SEX).isPresent()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"Jayne1010"},"content":" editPersonDescriptor.setSex(ParserUtil.parseSex(argMultimap.getValue(PREFIX_SEX).get()));","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"Jayne1010"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"Jayne1010"},"content":" if (argMultimap.getValue(PREFIX_AGE).isPresent()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"Jayne1010"},"content":" editPersonDescriptor.setAge(ParserUtil.parseAge(argMultimap.getValue(PREFIX_AGE).get()));","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"Jayne1010"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPersonDescriptor::setTags);","lastModifiedDate":"2017-06-21"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":79,"author":{"gitId":"Jayne1010"},"content":" try {","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"Jayne1010"},"content":" return new EditCommand(new IdentityCardNumberMatchesPredicate(ic), editPersonDescriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"Jayne1010"},"content":" } catch (IllegalArgumentException pe) {","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"Jayne1010"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"Jayne1010"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"Jayne1010"},"content":" }","lastModifiedDate":"2024-03-21"},{"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":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e} if {@code tags} is non-empty.","lastModifiedDate":"2017-03-07"},{"lineNumber":89,"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":90,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07"},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":92,"author":{"gitId":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":95,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":96,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":98,"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":99,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":102,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"Jayne1010":29,"-":73}},{"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 seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":7,"author":{"gitId":"jiahui0309"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"jiahui0309"},"content":"import seedu.address.model.person.IdentityCardNumberMatchesPredicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new FindCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class FindCommandParser implements Parser\u003cFindCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the FindCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * and returns a FindCommand object for execution.","lastModifiedDate":"2019-05-11"},{"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 FindCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2017-02-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2017-02-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-01-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":27,"author":{"gitId":"jiahui0309"},"content":" try {","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"jiahui0309"},"content":" IdentityCardNumber ic \u003d ParserUtil.parseIC(trimmedArgs);","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"jiahui0309"},"content":" return new FindCommand(new IdentityCardNumberMatchesPredicate(ic));","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"jiahui0309"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"jiahui0309"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"jiahui0309"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE), e);","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"jiahui0309"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"-":26,"jiahui0309":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":"-"},"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":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.Age;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.Sex;","lastModifiedDate":"2024-03-17"},{"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":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18"},{"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":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":59,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30"},{"lineNumber":64,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":65,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":71,"author":{"gitId":"jiahui0309"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"jiahui0309"},"content":" * Parses a {@code String identityCardNumber} into a {@code IdentityCardNumber}.","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"jiahui0309"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"jiahui0309"},"content":" *","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"jiahui0309"},"content":" * @throws ParseException if the given {@code identityCardNumber} is invalid.","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"jiahui0309"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"jiahui0309"},"content":" public static IdentityCardNumber parseIC(String identityCardNumber) throws ParseException {","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"jiahui0309"},"content":" requireNonNull(identityCardNumber);","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"jiahui0309"},"content":" String trimmedIdentityCardNumber \u003d identityCardNumber.trim();","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"jiahui0309"},"content":" if (!IdentityCardNumber.isValidIdentityCardNumber(trimmedIdentityCardNumber)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"jiahui0309"},"content":" throw new ParseException(IdentityCardNumber.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"jiahui0309"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"jiahui0309"},"content":" return new IdentityCardNumber(trimmedIdentityCardNumber);","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"jiahui0309"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":89,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":93,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30"},{"lineNumber":94,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":95,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":96,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":98,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","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":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":104,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":108,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":109,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":110,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":111,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":113,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","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":"Jayne1010"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"Jayne1010"},"content":" * Parses a {@code String sex} into an {@code Sex}.","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"Jayne1010"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"Jayne1010"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"Jayne1010"},"content":" * @throws ParseException if the given {@code sex} is invalid.","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"Jayne1010"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"Jayne1010"},"content":" public static Sex parseSex(String sex) throws ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"Jayne1010"},"content":" requireNonNull(sex);","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"Jayne1010"},"content":" String trimmedSex \u003d sex.trim();","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"Jayne1010"},"content":" if (!Sex.isValidSex(trimmedSex)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"Jayne1010"},"content":" throw new ParseException(Sex.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"Jayne1010"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"Jayne1010"},"content":" return new Sex(trimmedSex);","lastModifiedDate":"2024-03-17"},{"lineNumber":129,"author":{"gitId":"Jayne1010"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":130,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"Jayne1010"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"Jayne1010"},"content":" * Parses a {@code String age} into an {@code Age}.","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"Jayne1010"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"Jayne1010"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":135,"author":{"gitId":"Jayne1010"},"content":" * @throws ParseException if the given {@code age} is invalid.","lastModifiedDate":"2024-03-17"},{"lineNumber":136,"author":{"gitId":"Jayne1010"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"Jayne1010"},"content":" public static Age parseAge(String age) throws ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":138,"author":{"gitId":"Jayne1010"},"content":" requireNonNull(age);","lastModifiedDate":"2024-03-17"},{"lineNumber":139,"author":{"gitId":"Jayne1010"},"content":" String trimmedAge \u003d age.trim();","lastModifiedDate":"2024-03-17"},{"lineNumber":140,"author":{"gitId":"Jayne1010"},"content":" if (!Age.isValidAge(trimmedAge)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":141,"author":{"gitId":"Jayne1010"},"content":" throw new ParseException(Age.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"Jayne1010"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":143,"author":{"gitId":"Jayne1010"},"content":" return new Age(trimmedAge);","lastModifiedDate":"2024-03-17"},{"lineNumber":144,"author":{"gitId":"Jayne1010"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":145,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":147,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":148,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":149,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":150,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":151,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":152,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":153,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30"},{"lineNumber":154,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":155,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":156,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":158,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"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":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"Jayne1010":33,"-":124,"jiahui0309":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":"drustanyjt"},"content":" private Path addressBookFilePath \u003d Paths.get(\"data\" , \"clinicmate.json\");","lastModifiedDate":"2024-03-18"},{"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":{"drustanyjt":1,"-":87}},{"path":"src/main/java/seedu/address/model/person/Age.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"drustanyjt"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-15"},{"lineNumber":2,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":3,"author":{"gitId":"drustanyjt"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"drustanyjt"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-15"},{"lineNumber":5,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"drustanyjt"},"content":"/**","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"drustanyjt"},"content":" * Represents a Person\u0027s age in the address book.","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"drustanyjt"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidAge(String)}","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"drustanyjt"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"drustanyjt"},"content":"public class Age {","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"drustanyjt"},"content":" public static final Age DEFAULT \u003d new Age(0);","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"drustanyjt"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"drustanyjt"},"content":" \"Age should only contain non-negative numbers, and it should not be blank\";","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"drustanyjt"},"content":" public static final String VALIDATION_REGEX \u003d \"[0-9]+\";","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"drustanyjt"},"content":" public final Integer value;","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"drustanyjt"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"drustanyjt"},"content":" * Constructs a {@code Age}.","lastModifiedDate":"2024-03-15"},{"lineNumber":21,"author":{"gitId":"drustanyjt"},"content":" *","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"drustanyjt"},"content":" * @param age A valid age.","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"drustanyjt"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"drustanyjt"},"content":" public Age(String age) {","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"drustanyjt"},"content":" requireNonNull(age);","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"drustanyjt"},"content":" checkArgument(isValidAge(age), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"drustanyjt"},"content":" value \u003d Integer.parseInt(age);","lastModifiedDate":"2024-03-15"},{"lineNumber":28,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"drustanyjt"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"drustanyjt"},"content":" * Constructs a {@code Age}.","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"drustanyjt"},"content":" *","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"drustanyjt"},"content":" * @param age A valid age.","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"drustanyjt"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"drustanyjt"},"content":" public Age(int age) {","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"drustanyjt"},"content":" checkArgument(isValidAge(age), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"drustanyjt"},"content":" value \u003d age;","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"drustanyjt"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"drustanyjt"},"content":" * Returns true if a given string is a valid age.","lastModifiedDate":"2024-03-15"},{"lineNumber":42,"author":{"gitId":"drustanyjt"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"drustanyjt"},"content":" public static boolean isValidAge(String test) {","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"drustanyjt"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":47,"author":{"gitId":"drustanyjt"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"drustanyjt"},"content":" * Returns true if a given integer is a valid age.","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"drustanyjt"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"drustanyjt"},"content":" public static boolean isValidAge(int test) {","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"drustanyjt"},"content":" return test \u003e\u003d 0;","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"drustanyjt"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":55,"author":{"gitId":"drustanyjt"},"content":" public String toString() {","lastModifiedDate":"2024-03-15"},{"lineNumber":56,"author":{"gitId":"drustanyjt"},"content":" return value.toString();","lastModifiedDate":"2024-03-15"},{"lineNumber":57,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":58,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":59,"author":{"gitId":"drustanyjt"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":60,"author":{"gitId":"drustanyjt"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-15"},{"lineNumber":61,"author":{"gitId":"drustanyjt"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-15"},{"lineNumber":62,"author":{"gitId":"drustanyjt"},"content":" return true;","lastModifiedDate":"2024-03-15"},{"lineNumber":63,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":64,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":65,"author":{"gitId":"drustanyjt"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-15"},{"lineNumber":66,"author":{"gitId":"drustanyjt"},"content":" if (!(other instanceof Age)) {","lastModifiedDate":"2024-03-15"},{"lineNumber":67,"author":{"gitId":"drustanyjt"},"content":" return false;","lastModifiedDate":"2024-03-15"},{"lineNumber":68,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":69,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":70,"author":{"gitId":"drustanyjt"},"content":" Age otherAge \u003d (Age) other;","lastModifiedDate":"2024-03-15"},{"lineNumber":71,"author":{"gitId":"drustanyjt"},"content":" return value.equals(otherAge.value);","lastModifiedDate":"2024-03-15"},{"lineNumber":72,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":73,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":74,"author":{"gitId":"drustanyjt"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":75,"author":{"gitId":"drustanyjt"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-15"},{"lineNumber":76,"author":{"gitId":"drustanyjt"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-15"},{"lineNumber":77,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":78,"author":{"gitId":"drustanyjt"},"content":"}","lastModifiedDate":"2024-03-15"}],"authorContributionMap":{"drustanyjt":78}},{"path":"src/main/java/seedu/address/model/person/IdentityCardNumber.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"drustanyjt"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-15"},{"lineNumber":2,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":3,"author":{"gitId":"drustanyjt"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"drustanyjt"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-15"},{"lineNumber":5,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"drustanyjt"},"content":"/**","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"drustanyjt"},"content":" * Represents a Person\u0027s identity card number in the address book.","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"drustanyjt"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidIdentityCardNumber(String)}","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"drustanyjt"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"drustanyjt"},"content":"public class IdentityCardNumber {","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"drustanyjt"},"content":" public static final IdentityCardNumber DEFAULT \u003d new IdentityCardNumber(\"S0000000A\");","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"drustanyjt"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"drustanyjt"},"content":" \"IC number starts with one letter (S,T,F,G,M) followed by seven digits and one letter behind\"","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"drustanyjt"},"content":" + \" It is case insensitive. An example is S1234567A.\";","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"jiahui0309"},"content":" public static final String VALIDATION_REGEX \u003d \"[STFGMstfgm][0-9]{7}[A-Z,a-z]\";","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"drustanyjt"},"content":" public final String value;","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":21,"author":{"gitId":"drustanyjt"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"drustanyjt"},"content":" * Constructs a {@code IdentityCardNumber}.","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"drustanyjt"},"content":" *","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"drustanyjt"},"content":" * @param identityCardNumber A valid identity card number.","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"drustanyjt"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"drustanyjt"},"content":" public IdentityCardNumber(String identityCardNumber) {","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"drustanyjt"},"content":" requireNonNull(identityCardNumber);","lastModifiedDate":"2024-03-15"},{"lineNumber":28,"author":{"gitId":"drustanyjt"},"content":" checkArgument(isValidIdentityCardNumber(identityCardNumber), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"jiahui0309"},"content":" value \u003d identityCardNumber.toUpperCase();","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":31,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":32,"author":{"gitId":"drustanyjt"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"drustanyjt"},"content":" * Returns true if a given string is a valid identity card number.","lastModifiedDate":"2024-03-15"},{"lineNumber":34,"author":{"gitId":"drustanyjt"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"drustanyjt"},"content":" public static boolean isValidIdentityCardNumber(String test) {","lastModifiedDate":"2024-03-15"},{"lineNumber":36,"author":{"gitId":"drustanyjt"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-15"},{"lineNumber":37,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":38,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":39,"author":{"gitId":"drustanyjt"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":40,"author":{"gitId":"drustanyjt"},"content":" public String toString() {","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"drustanyjt"},"content":" return value;","lastModifiedDate":"2024-03-15"},{"lineNumber":42,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"drustanyjt"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"drustanyjt"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"drustanyjt"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-15"},{"lineNumber":47,"author":{"gitId":"drustanyjt"},"content":" return true;","lastModifiedDate":"2024-03-15"},{"lineNumber":48,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":49,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"drustanyjt"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-15"},{"lineNumber":51,"author":{"gitId":"drustanyjt"},"content":" if (!(other instanceof IdentityCardNumber)) {","lastModifiedDate":"2024-03-15"},{"lineNumber":52,"author":{"gitId":"drustanyjt"},"content":" return false;","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":54,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":55,"author":{"gitId":"drustanyjt"},"content":" IdentityCardNumber otherIdentityCardNumber \u003d (IdentityCardNumber) other;","lastModifiedDate":"2024-03-15"},{"lineNumber":56,"author":{"gitId":"drustanyjt"},"content":" return value.equals(otherIdentityCardNumber.value);","lastModifiedDate":"2024-03-15"},{"lineNumber":57,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":58,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":59,"author":{"gitId":"drustanyjt"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":60,"author":{"gitId":"drustanyjt"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-15"},{"lineNumber":61,"author":{"gitId":"drustanyjt"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-15"},{"lineNumber":62,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":63,"author":{"gitId":"drustanyjt"},"content":"}","lastModifiedDate":"2024-03-15"}],"authorContributionMap":{"drustanyjt":61,"jiahui0309":2}},{"path":"src/main/java/seedu/address/model/person/IdentityCardNumberMatchesPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jiahui0309"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"jiahui0309"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"jiahui0309"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"jiahui0309"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"jiahui0309"},"content":" * Tests that a {@code Person}\u0027s {@code IdentityCardNumber} matches the given IC number.","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"jiahui0309"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"jiahui0309"},"content":"public class IdentityCardNumberMatchesPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"jiahui0309"},"content":" private final IdentityCardNumber targetIcNumber;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"jiahui0309"},"content":" public IdentityCardNumberMatchesPredicate(IdentityCardNumber targetIcNumber) {","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"jiahui0309"},"content":" this.targetIcNumber \u003d targetIcNumber;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"jiahui0309"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"jiahui0309"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"jiahui0309"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"jiahui0309"},"content":" return person.getIdentityCardNumber().equals(targetIcNumber);","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"jiahui0309"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"jiahui0309"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"jiahui0309"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"jiahui0309"},"content":" if (this \u003d\u003d other) {","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"jiahui0309"},"content":" return true;","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"jiahui0309"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"jiahui0309"},"content":" if (!(other instanceof IdentityCardNumberMatchesPredicate)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"jiahui0309"},"content":" return false;","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"jiahui0309"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"jiahui0309"},"content":" IdentityCardNumberMatchesPredicate predicate \u003d (IdentityCardNumberMatchesPredicate) other;","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"jiahui0309"},"content":" return targetIcNumber.equals(predicate.targetIcNumber);","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"jiahui0309"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"jiahui0309"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"jiahui0309"},"content":" public String toString() {","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"jiahui0309"},"content":" return new ToStringBuilder(this).toString();","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"jiahui0309"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"jiahui0309":42}},{"path":"src/main/java/seedu/address/model/person/Note.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"drustanyjt"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-15"},{"lineNumber":2,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":3,"author":{"gitId":"drustanyjt"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"drustanyjt"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-15"},{"lineNumber":5,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"drustanyjt"},"content":"/**","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"drustanyjt"},"content":" * Represents a Person\u0027s note in the address book.","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"drustanyjt"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidNote(String)}","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"drustanyjt"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"drustanyjt"},"content":"public class Note {","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"drustanyjt"},"content":" public static final Note DEFAULT \u003d new Note(\"\");","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"drustanyjt"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Notes can take any values, and it should not be blank\";","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"drustanyjt"},"content":" public final String value;","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"drustanyjt"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"drustanyjt"},"content":" * Constructs a {@code Note}.","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"drustanyjt"},"content":" *","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"drustanyjt"},"content":" * @param note A valid note.","lastModifiedDate":"2024-03-15"},{"lineNumber":21,"author":{"gitId":"drustanyjt"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"drustanyjt"},"content":" public Note(String note) {","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"drustanyjt"},"content":" requireNonNull(note);","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"drustanyjt"},"content":" checkArgument(isValidNote(note), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"drustanyjt"},"content":" value \u003d note;","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":28,"author":{"gitId":"drustanyjt"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"drustanyjt"},"content":" * Returns true if a given string is a valid note.","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"drustanyjt"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":31,"author":{"gitId":"drustanyjt"},"content":" public static boolean isValidNote(String test) {","lastModifiedDate":"2024-03-15"},{"lineNumber":32,"author":{"gitId":"drustanyjt"},"content":" return true;","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":34,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"tengcharmaine"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"tengcharmaine"},"content":" * Appends text to the current note.","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"tengcharmaine"},"content":" *","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"tengcharmaine"},"content":" * @param text The text to append.","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"tengcharmaine"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"tengcharmaine"},"content":" public Note append(String text) {","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"tengcharmaine"},"content":" requireNonNull(text);","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"tengcharmaine"},"content":" return new Note(value + text);","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"drustanyjt"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"drustanyjt"},"content":" public String toString() {","lastModifiedDate":"2024-03-15"},{"lineNumber":47,"author":{"gitId":"drustanyjt"},"content":" return value;","lastModifiedDate":"2024-03-15"},{"lineNumber":48,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":49,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"drustanyjt"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":51,"author":{"gitId":"drustanyjt"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-15"},{"lineNumber":52,"author":{"gitId":"drustanyjt"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"drustanyjt"},"content":" return true;","lastModifiedDate":"2024-03-15"},{"lineNumber":54,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":55,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":56,"author":{"gitId":"drustanyjt"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-15"},{"lineNumber":57,"author":{"gitId":"drustanyjt"},"content":" if (!(other instanceof Note)) {","lastModifiedDate":"2024-03-15"},{"lineNumber":58,"author":{"gitId":"drustanyjt"},"content":" return false;","lastModifiedDate":"2024-03-15"},{"lineNumber":59,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":60,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":61,"author":{"gitId":"drustanyjt"},"content":" Note otherNote \u003d (Note) other;","lastModifiedDate":"2024-03-15"},{"lineNumber":62,"author":{"gitId":"drustanyjt"},"content":" return value.equals(otherNote.value);","lastModifiedDate":"2024-03-15"},{"lineNumber":63,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":64,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":65,"author":{"gitId":"drustanyjt"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":66,"author":{"gitId":"drustanyjt"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-15"},{"lineNumber":67,"author":{"gitId":"drustanyjt"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-15"},{"lineNumber":68,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":69,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":70,"author":{"gitId":"drustanyjt"},"content":"}","lastModifiedDate":"2024-03-15"}],"authorContributionMap":{"drustanyjt":60,"tengcharmaine":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":"-"},"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":"-"},"content":" private final Phone phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"drustanyjt"},"content":" private final IdentityCardNumber identityCardNumber;","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19"},{"lineNumber":26,"author":{"gitId":"drustanyjt"},"content":" private final Age age;","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"drustanyjt"},"content":" private final Sex sex;","lastModifiedDate":"2024-03-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19"},{"lineNumber":29,"author":{"gitId":"drustanyjt"},"content":" private final Note note;","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"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":"Jayne1010"},"content":" public Person(Name name, Phone phone, Email email, IdentityCardNumber identityCardNumber,","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"Jayne1010"},"content":" Age age, Sex sex, Address address, Note note, Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"drustanyjt"},"content":" requireAllNonNull(name, phone, email, identityCardNumber, age, sex, address, note, tags);","lastModifiedDate":"2024-03-16"},{"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":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"drustanyjt"},"content":" this.identityCardNumber \u003d identityCardNumber;","lastModifiedDate":"2024-03-15"},{"lineNumber":42,"author":{"gitId":"drustanyjt"},"content":" this.age \u003d age;","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"drustanyjt"},"content":" this.sex \u003d sex;","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20"},{"lineNumber":45,"author":{"gitId":"drustanyjt"},"content":" this.note \u003d note;","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"drustanyjt"},"content":" public IdentityCardNumber getIdentityCardNumber() {","lastModifiedDate":"2024-03-15"},{"lineNumber":62,"author":{"gitId":"drustanyjt"},"content":" return identityCardNumber;","lastModifiedDate":"2024-03-15"},{"lineNumber":63,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":64,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":65,"author":{"gitId":"drustanyjt"},"content":" public Age getAge() {","lastModifiedDate":"2024-03-15"},{"lineNumber":66,"author":{"gitId":"drustanyjt"},"content":" return age;","lastModifiedDate":"2024-03-15"},{"lineNumber":67,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":68,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":69,"author":{"gitId":"drustanyjt"},"content":" public Sex getSex() {","lastModifiedDate":"2024-03-15"},{"lineNumber":70,"author":{"gitId":"drustanyjt"},"content":" return sex;","lastModifiedDate":"2024-03-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":77,"author":{"gitId":"drustanyjt"},"content":" public Note getNote() {","lastModifiedDate":"2024-03-15"},{"lineNumber":78,"author":{"gitId":"drustanyjt"},"content":" return note;","lastModifiedDate":"2024-03-15"},{"lineNumber":79,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":80,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"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":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":90,"author":{"gitId":"jiahui0309"},"content":" * Returns true if both persons have the same IC number.","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19"},{"lineNumber":99,"author":{"gitId":"drustanyjt"},"content":" \u0026\u0026 otherPerson.getIdentityCardNumber().equals(getIdentityCardNumber());","lastModifiedDate":"2024-03-15"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":102,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":103,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":109,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":110,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":113,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10"},{"lineNumber":115,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":118,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10"},{"lineNumber":119,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2024-03-16"},{"lineNumber":122,"author":{"gitId":"drustanyjt"},"content":" \u0026\u0026 identityCardNumber.equals(otherPerson.identityCardNumber)","lastModifiedDate":"2024-03-15"},{"lineNumber":123,"author":{"gitId":"drustanyjt"},"content":" \u0026\u0026 age.equals(otherPerson.age)","lastModifiedDate":"2024-03-15"},{"lineNumber":124,"author":{"gitId":"drustanyjt"},"content":" \u0026\u0026 sex.equals(otherPerson.sex)","lastModifiedDate":"2024-03-15"},{"lineNumber":125,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":126,"author":{"gitId":"drustanyjt"},"content":" \u0026\u0026 note.equals(otherPerson.note)","lastModifiedDate":"2024-03-15"},{"lineNumber":127,"author":{"gitId":"-"},"content":" \u0026\u0026 tags.equals(otherPerson.tags);","lastModifiedDate":"2023-07-13"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":130,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":131,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":132,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":133,"author":{"gitId":"drustanyjt"},"content":" return Objects.hash(name, phone, email, identityCardNumber, age, sex, address, note, tags);","lastModifiedDate":"2024-03-16"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":137,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":138,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2024-03-16"},{"lineNumber":142,"author":{"gitId":"drustanyjt"},"content":" .add(\"identityCardNumber\", identityCardNumber)","lastModifiedDate":"2024-03-15"},{"lineNumber":143,"author":{"gitId":"drustanyjt"},"content":" .add(\"age\", age)","lastModifiedDate":"2024-03-15"},{"lineNumber":144,"author":{"gitId":"drustanyjt"},"content":" .add(\"sex\", sex)","lastModifiedDate":"2024-03-15"},{"lineNumber":145,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":146,"author":{"gitId":"drustanyjt"},"content":" .add(\"note\", note)","lastModifiedDate":"2024-03-15"},{"lineNumber":147,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":151,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"drustanyjt":34,"Jayne1010":2,"-":114,"jiahui0309":1}},{"path":"src/main/java/seedu/address/model/person/Sex.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"drustanyjt"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-15"},{"lineNumber":2,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":3,"author":{"gitId":"drustanyjt"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"drustanyjt"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-15"},{"lineNumber":5,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"drustanyjt"},"content":"/**","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"drustanyjt"},"content":" * Represents a Person\u0027s sex in the address book.","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"drustanyjt"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidSex(String)}","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"drustanyjt"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"drustanyjt"},"content":"public class Sex {","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"drustanyjt"},"content":" public static final Sex DEFAULT \u003d new Sex(\"F\");","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"drustanyjt"},"content":" public static final String MALE \u003d \"M\";","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"drustanyjt"},"content":" public static final String FEMALE \u003d \"F\";","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"drustanyjt"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"drustanyjt"},"content":" \"Sex should only contain either \u0027M\u0027 or \u0027F\u0027, and it should not be blank\";","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"drustanyjt"},"content":" /*","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"drustanyjt"},"content":" * The first character of the sex must not be a whitespace,","lastModifiedDate":"2024-03-15"},{"lineNumber":21,"author":{"gitId":"drustanyjt"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"drustanyjt"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"tengcharmaine"},"content":" public static final String VALIDATION_REGEX \u003d \"[mfMF]\";","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"drustanyjt"},"content":" public final String value;","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"drustanyjt"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":28,"author":{"gitId":"drustanyjt"},"content":" * Constructs a {@code Sex}","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"drustanyjt"},"content":" *","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"drustanyjt"},"content":" * @param sex A valid sex.","lastModifiedDate":"2024-03-15"},{"lineNumber":31,"author":{"gitId":"drustanyjt"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":32,"author":{"gitId":"drustanyjt"},"content":" public Sex(String sex) {","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"drustanyjt"},"content":" requireNonNull(sex);","lastModifiedDate":"2024-03-15"},{"lineNumber":34,"author":{"gitId":"drustanyjt"},"content":" checkArgument(isValidSex(sex), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"drustanyjt"},"content":" if (isFemaleString(sex)) {","lastModifiedDate":"2024-03-15"},{"lineNumber":36,"author":{"gitId":"drustanyjt"},"content":" value \u003d FEMALE;","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"drustanyjt"},"content":" } else if (isMaleString(sex)) {","lastModifiedDate":"2024-03-15"},{"lineNumber":38,"author":{"gitId":"drustanyjt"},"content":" value \u003d MALE;","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"drustanyjt"},"content":" } else {","lastModifiedDate":"2024-03-15"},{"lineNumber":40,"author":{"gitId":"drustanyjt"},"content":" // This should never happen","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"drustanyjt"},"content":" // Prevents linter from detecting fullSex as potentially unassigned","lastModifiedDate":"2024-03-15"},{"lineNumber":42,"author":{"gitId":"drustanyjt"},"content":" value \u003d \"\";","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"drustanyjt"},"content":" public boolean isMaleString(String sex) {","lastModifiedDate":"2024-03-15"},{"lineNumber":47,"author":{"gitId":"tengcharmaine"},"content":" return sex.equalsIgnoreCase(MALE);","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":49,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"drustanyjt"},"content":" public boolean isFemaleString(String sex) {","lastModifiedDate":"2024-03-15"},{"lineNumber":51,"author":{"gitId":"tengcharmaine"},"content":" return sex.equalsIgnoreCase(FEMALE);","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":54,"author":{"gitId":"drustanyjt"},"content":" public static boolean isValidSex(String test) {","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"drustanyjt"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-15"},{"lineNumber":56,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":57,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":58,"author":{"gitId":"drustanyjt"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":59,"author":{"gitId":"drustanyjt"},"content":" public String toString() {","lastModifiedDate":"2024-03-15"},{"lineNumber":60,"author":{"gitId":"drustanyjt"},"content":" return value;","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":62,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":63,"author":{"gitId":"drustanyjt"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":64,"author":{"gitId":"drustanyjt"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-15"},{"lineNumber":65,"author":{"gitId":"drustanyjt"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-15"},{"lineNumber":66,"author":{"gitId":"drustanyjt"},"content":" return true;","lastModifiedDate":"2024-03-15"},{"lineNumber":67,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":68,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":69,"author":{"gitId":"drustanyjt"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-15"},{"lineNumber":70,"author":{"gitId":"drustanyjt"},"content":" if (!(other instanceof Sex)) {","lastModifiedDate":"2024-03-15"},{"lineNumber":71,"author":{"gitId":"drustanyjt"},"content":" return false;","lastModifiedDate":"2024-03-15"},{"lineNumber":72,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":73,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":74,"author":{"gitId":"drustanyjt"},"content":" Sex otherSex \u003d (Sex) other;","lastModifiedDate":"2024-03-15"},{"lineNumber":75,"author":{"gitId":"drustanyjt"},"content":" return value.equals(otherSex.value);","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":77,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":78,"author":{"gitId":"drustanyjt"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":79,"author":{"gitId":"drustanyjt"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-15"},{"lineNumber":80,"author":{"gitId":"drustanyjt"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":82,"author":{"gitId":"drustanyjt"},"content":"}","lastModifiedDate":"2024-03-15"}],"authorContributionMap":{"drustanyjt":79,"tengcharmaine":3}},{"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":"drustanyjt"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-22"},{"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.Address;","lastModifiedDate":"2016-12-20"},{"lineNumber":11,"author":{"gitId":"drustanyjt"},"content":"import seedu.address.model.person.Age;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20"},{"lineNumber":13,"author":{"gitId":"drustanyjt"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20"},{"lineNumber":15,"author":{"gitId":"drustanyjt"},"content":"import seedu.address.model.person.Note;","lastModifiedDate":"2024-03-16"},{"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":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"drustanyjt"},"content":"import seedu.address.model.person.Sex;","lastModifiedDate":"2024-03-16"},{"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":"Jayne1010"},"content":" new Person(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"Jayne1010"},"content":" new Email(\"alexyeoh@example.com\"), new IdentityCardNumber(\"S1234567A\"), new Age(\"30\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"Jayne1010"},"content":" new Sex(\"M\"), new Address(\"Blk 30 Geylang Street 29, #06-40\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"Jayne1010"},"content":" new Note(\"No medical conditions\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"drustanyjt"},"content":" getEmptyTagSet()),","lastModifiedDate":"2024-03-22"},{"lineNumber":32,"author":{"gitId":"Jayne1010"},"content":" new Person(new Name(\"Bernice Yu\"), new Phone(\"99272758\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"Jayne1010"},"content":" new Email(\"berniceyu@example.com\"), new IdentityCardNumber(\"S1234567B\"), new Age(31),","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"Jayne1010"},"content":" new Sex(\"F\"), new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"), new Note(\"Asthma\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"drustanyjt"},"content":" getEmptyTagSet()),","lastModifiedDate":"2024-03-22"},{"lineNumber":36,"author":{"gitId":"Jayne1010"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"Jayne1010"},"content":" new Email(\"charlotte@example.com\"), new IdentityCardNumber(\"S1234567C\"), new Age(\"32\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"Jayne1010"},"content":" new Sex(\"F\"), new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"), new Note(\"Diabetes\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"drustanyjt"},"content":" getEmptyTagSet()),","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"Jayne1010"},"content":" new Person(new Name(\"David Li\"), new Phone(\"91031282\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"Jayne1010"},"content":" new Email(\"lidavid@example.com\"), new IdentityCardNumber(\"S1234567D\"), new Age(33), new Sex(\"M\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"drustanyjt"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"), new Note(\"No medical conditions\"),","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"drustanyjt"},"content":" getEmptyTagSet()),","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"Jayne1010"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"Jayne1010"},"content":" new Email(\"irfan@example.com\"), new IdentityCardNumber(\"S1234567E\"), new Age(\"34\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"Jayne1010"},"content":" new Sex(\"M\"), new Address(\"Blk 47 Tampines Street 20, #17-35\"), new Note(\"High blood pressure\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"drustanyjt"},"content":" getEmptyTagSet()),","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"Jayne1010"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"Jayne1010"},"content":" new Email(\"royb@example.com\"), new IdentityCardNumber(\"S1234567F\"), new Age(35),","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"Jayne1010"},"content":" new Sex(\"M\"), new Address(\"Blk 45 Aljunied Street 85, #11-31\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"Jayne1010"},"content":" new Note(\"No medical conditions\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"drustanyjt"},"content":" getEmptyTagSet()),","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07"},{"lineNumber":58,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21"},{"lineNumber":69,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":73,"author":{"gitId":"drustanyjt"},"content":" public static Set\u003cTag\u003e getEmptyTagSet() {","lastModifiedDate":"2024-03-22"},{"lineNumber":74,"author":{"gitId":"drustanyjt"},"content":" return new HashSet\u003cTag\u003e();","lastModifiedDate":"2024-03-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"drustanyjt":14,"Jayne1010":19,"-":44}},{"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":"drustanyjt"},"content":"import seedu.address.model.person.Age;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"drustanyjt"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"drustanyjt"},"content":"import seedu.address.model.person.Note;","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"drustanyjt"},"content":"import seedu.address.model.person.Sex;","lastModifiedDate":"2024-03-16"},{"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":"drustanyjt"},"content":" private final String identityCardNumber;","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"drustanyjt"},"content":" private final Integer age;","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"drustanyjt"},"content":" private final String sex;","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"drustanyjt"},"content":" private final String note;","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","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":" * 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":"drustanyjt"},"content":" @JsonProperty(\"email\") String email,","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"drustanyjt"},"content":" @JsonProperty(\"identityCardNumber\") String identityCardNumber,","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"drustanyjt"},"content":" @JsonProperty(\"age\") Integer age,","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"drustanyjt"},"content":" @JsonProperty(\"sex\") String sex,","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"drustanyjt"},"content":" @JsonProperty(\"address\") String address,","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"drustanyjt"},"content":" @JsonProperty(\"note\") String note,","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags) {","lastModifiedDate":"2023-05-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"drustanyjt"},"content":" this.identityCardNumber \u003d identityCardNumber;","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"drustanyjt"},"content":" this.age \u003d age;","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"drustanyjt"},"content":" this.sex \u003d sex;","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"drustanyjt"},"content":" this.note \u003d note;","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"drustanyjt"},"content":" identityCardNumber \u003d source.getIdentityCardNumber().value;","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"drustanyjt"},"content":" age \u003d source.getAge().value;","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"drustanyjt"},"content":" sex \u003d source.getSex().value;","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"drustanyjt"},"content":" note \u003d source.getNote().value;","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09"},{"lineNumber":79,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09"},{"lineNumber":91,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","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":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"Jayne1010"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"Jayne1010"},"content":" Phone.class.getSimpleName()));","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":119,"author":{"gitId":"drustanyjt"},"content":" if (identityCardNumber \u003d\u003d null) {","lastModifiedDate":"2024-03-16"},{"lineNumber":120,"author":{"gitId":"drustanyjt"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-16"},{"lineNumber":121,"author":{"gitId":"drustanyjt"},"content":" IdentityCardNumber.class.getSimpleName()));","lastModifiedDate":"2024-03-16"},{"lineNumber":122,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":123,"author":{"gitId":"drustanyjt"},"content":" if (!IdentityCardNumber.isValidIdentityCardNumber(identityCardNumber)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":124,"author":{"gitId":"drustanyjt"},"content":" throw new IllegalValueException(IdentityCardNumber.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":125,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":126,"author":{"gitId":"drustanyjt"},"content":" final IdentityCardNumber modelIdentityCardNumber \u003d new IdentityCardNumber(identityCardNumber);","lastModifiedDate":"2024-03-16"},{"lineNumber":127,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":128,"author":{"gitId":"drustanyjt"},"content":" if (age \u003d\u003d null) {","lastModifiedDate":"2024-03-16"},{"lineNumber":129,"author":{"gitId":"drustanyjt"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Age.class.getSimpleName()));","lastModifiedDate":"2024-03-16"},{"lineNumber":130,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":131,"author":{"gitId":"drustanyjt"},"content":" if (!Age.isValidAge(age)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":132,"author":{"gitId":"drustanyjt"},"content":" throw new IllegalValueException(Age.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":133,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":134,"author":{"gitId":"drustanyjt"},"content":" final Age modelAge \u003d new Age(age);","lastModifiedDate":"2024-03-16"},{"lineNumber":135,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":136,"author":{"gitId":"drustanyjt"},"content":" if (sex \u003d\u003d null) {","lastModifiedDate":"2024-03-16"},{"lineNumber":137,"author":{"gitId":"drustanyjt"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Sex.class.getSimpleName()));","lastModifiedDate":"2024-03-16"},{"lineNumber":138,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":139,"author":{"gitId":"drustanyjt"},"content":" if (!Sex.isValidSex(sex)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":140,"author":{"gitId":"drustanyjt"},"content":" throw new IllegalValueException(Sex.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":141,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":142,"author":{"gitId":"drustanyjt"},"content":" final Sex modelSex \u003d new Sex(sex);","lastModifiedDate":"2024-03-16"},{"lineNumber":143,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":144,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":145,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":147,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":148,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":150,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":152,"author":{"gitId":"drustanyjt"},"content":" if (note \u003d\u003d null) {","lastModifiedDate":"2024-03-16"},{"lineNumber":153,"author":{"gitId":"drustanyjt"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Note.class.getSimpleName()));","lastModifiedDate":"2024-03-16"},{"lineNumber":154,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":155,"author":{"gitId":"drustanyjt"},"content":" if (!Note.isValidNote(note)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":156,"author":{"gitId":"drustanyjt"},"content":" throw new IllegalValueException(Note.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":157,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":158,"author":{"gitId":"drustanyjt"},"content":" final Note modelNote \u003d new Note(note);","lastModifiedDate":"2024-03-16"},{"lineNumber":159,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":160,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13"},{"lineNumber":161,"author":{"gitId":"drustanyjt"},"content":" return new Person(modelName, modelPhone, modelEmail, modelIdentityCardNumber, modelAge, modelSex, modelAddress,","lastModifiedDate":"2024-03-16"},{"lineNumber":162,"author":{"gitId":"drustanyjt"},"content":" modelNote, modelTags);","lastModifiedDate":"2024-03-16"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":165,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"drustanyjt":57,"Jayne1010":2,"-":106}},{"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":"tengcharmaine"},"content":" public static final String USERGUIDE_URL \u003d \"https://ay2324s2-cs2103t-f14-2.github.io/tp/UserGuide.html\";","lastModifiedDate":"2024-03-16"},{"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":{"tengcharmaine":1,"-":101}},{"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 address;","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":"tengcharmaine"},"content":" private Label note;","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"tengcharmaine"},"content":" @FXML","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"Jayne1010"},"content":" private Label age;","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"Jayne1010"},"content":" @FXML","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"Jayne1010"},"content":" private Label sex;","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"Jayne1010"},"content":" @FXML","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"Jayne1010"},"content":" private Label ic;","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"Jayne1010"},"content":" @FXML","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10"},{"lineNumber":56,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":62,"author":{"gitId":"tengcharmaine"},"content":" note.setText(person.getNote().value);","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"Jayne1010"},"content":" ic.setText(person.getIdentityCardNumber().value);","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"Jayne1010"},"content":" age.setText(String.valueOf(person.getAge().value));","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"Jayne1010"},"content":" sex.setText(person.getSex().value);","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"Jayne1010"},"content":" address.setText(person.getAddress().value);","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"-"},"content":" person.getTags().stream()","lastModifiedDate":"2019-01-02"},{"lineNumber":68,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02"},{"lineNumber":69,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"Jayne1010":10,"tengcharmaine":3,"-":58}},{"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":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25"},{"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":"drustanyjt"},"content":" private static final String ICON_APPLICATION \u003d \"/images/clinic_mate_logo2_32.png\";","lastModifiedDate":"2024-03-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":{"drustanyjt":1,"-":87}},{"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":"tengcharmaine"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-03-21"},{"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":"drustanyjt"},"content":" title\u003d\"ClinicMate\" minWidth\u003d\"450\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":18,"author":{"gitId":"drustanyjt"},"content":" \u003cImage url\u003d\"@/images/clinic_mate_logo2_32.png\" /\u003e","lastModifiedDate":"2024-03-18"},{"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":"tengcharmaine"},"content":" \u003cSplitPane orientation\u003d\"HORIZONTAL\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":51,"author":{"gitId":"tengcharmaine"},"content":" \u003cVBox fx:id\u003d\"personList\" styleClass\u003d\"pane-with-border\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"personListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2017-06-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":58,"author":{"gitId":"tengcharmaine"},"content":" \u003cStackPane fx:id\u003d\"patientDetails\" styleClass\u003d\"pane-with-border\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"tengcharmaine"},"content":" \u003cVBox alignment\u003d\"CENTER\"\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"tengcharmaine"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"tengcharmaine"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"tengcharmaine"},"content":" \u003c/SplitPane\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"tengcharmaine"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" minHeight\u003d\"20\" prefHeight\u003d\"20\" maxHeight\u003d\"20\"","lastModifiedDate":"2024-03-22"},{"lineNumber":65,"author":{"gitId":"tengcharmaine"},"content":" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":68,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":69,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29"}],"authorContributionMap":{"drustanyjt":2,"tengcharmaine":10,"-":57}},{"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":"Jayne1010"},"content":" \u003cLabel fx:id\u003d\"ic\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$ic\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"Jayne1010"},"content":" \u003cLabel fx:id\u003d\"age\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$age\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"Jayne1010"},"content":" \u003cLabel fx:id\u003d\"sex\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$sex\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"tengcharmaine"},"content":" \u003cLabel fx:id\u003d\"note\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$note\" /\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"Jayne1010":3,"tengcharmaine":1,"-":36}},{"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":"drustanyjt"},"content":" assertNotNull(AppUtil.getImage(\"/images/clinic_mate_logo2_32.png\"));","lastModifiedDate":"2024-03-18"},{"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":{"drustanyjt":1,"-":35}},{"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":"jiahui0309"},"content":"import static seedu.address.logic.Messages.MESSAGE_NO_MATCHING_IC;","lastModifiedDate":"2024-03-16"},{"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":"drustanyjt"},"content":"import org.junit.jupiter.api.Disabled;","lastModifiedDate":"2024-03-16"},{"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":"-"},"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":"jiahui0309"},"content":" String deleteCommand \u003d \"delete s1234567a\";","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"jiahui0309"},"content":" assertCommandException(deleteCommand, MESSAGE_NO_MATCHING_IC);","lastModifiedDate":"2024-03-16"},{"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":"drustanyjt"},"content":" @Disabled (\"Requires add command to be working properly\")","lastModifiedDate":"2024-03-16"},{"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":"drustanyjt"},"content":" @Disabled (\"Requires add command to be working properly\")","lastModifiedDate":"2024-03-16"},{"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":"-"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2023-06-13"},{"lineNumber":172,"author":{"gitId":"-"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY;","lastModifiedDate":"2023-06-13"},{"lineNumber":173,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2023-06-13"},{"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":{"drustanyjt":3,"-":172,"jiahui0309":3}},{"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.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class AddCommandTest {","lastModifiedDate":"2017-05-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2017-05-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2017-05-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new AddCommand(validPerson).execute(modelStub);","lastModifiedDate":"2019-01-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":41,"author":{"gitId":"Jayne1010"},"content":" String successMessage \u003d String.format(AddCommand.MESSAGE_SUCCESS,","lastModifiedDate":"2024-03-24"},{"lineNumber":42,"author":{"gitId":"Jayne1010"},"content":" validPerson.getName(),","lastModifiedDate":"2024-03-24"},{"lineNumber":43,"author":{"gitId":"Jayne1010"},"content":" validPerson.getPhone(),","lastModifiedDate":"2024-03-24"},{"lineNumber":44,"author":{"gitId":"Jayne1010"},"content":" validPerson.getEmail(),","lastModifiedDate":"2024-03-24"},{"lineNumber":45,"author":{"gitId":"Jayne1010"},"content":" validPerson.getIdentityCardNumber(),","lastModifiedDate":"2024-03-24"},{"lineNumber":46,"author":{"gitId":"Jayne1010"},"content":" validPerson.getAge(),","lastModifiedDate":"2024-03-24"},{"lineNumber":47,"author":{"gitId":"Jayne1010"},"content":" validPerson.getSex(),","lastModifiedDate":"2024-03-24"},{"lineNumber":48,"author":{"gitId":"Jayne1010"},"content":" validPerson.getAddress());","lastModifiedDate":"2024-03-24"},{"lineNumber":49,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":50,"author":{"gitId":"Jayne1010"},"content":" assertEquals(successMessage,","lastModifiedDate":"2024-03-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(validPerson), modelStub.personsAdded);","lastModifiedDate":"2017-05-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(validPerson);","lastModifiedDate":"2018-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2019-05-03"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":66,"author":{"gitId":"-"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" AddCommand addAliceCommand \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" AddCommand addBobCommand \u003d new AddCommand(bob);","lastModifiedDate":"2017-06-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":" AddCommand addAliceCommandCopy \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":84,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(ALICE);","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":" String expected \u003d AddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.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-05-12"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12"},{"lineNumber":97,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":98,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12"},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"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 ReadOnlyUserPrefs getUserPrefs() {","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 GuiSettings getGuiSettings() {","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 void setGuiSettings(GuiSettings guiSettings) {","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 Path getAddressBookFilePath() {","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":"2018-11-27"},{"lineNumber":125,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":126,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":130,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":131,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"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":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":150,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-08"},{"lineNumber":151,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":154,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":155,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"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 ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"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 void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","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":"","lastModifiedDate":"2017-05-12"},{"lineNumber":170,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":171,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07"},{"lineNumber":172,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":173,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07"},{"lineNumber":174,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":176,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":177,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":178,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07"},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":181,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":182,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":183,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":184,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":188,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":189,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12"},{"lineNumber":190,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":191,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12"},{"lineNumber":192,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":194,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07"},{"lineNumber":195,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":196,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":197,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":198,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":200,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":201,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08"},{"lineNumber":202,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":203,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":206,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":207,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04"},{"lineNumber":208,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04"},{"lineNumber":209,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":212,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12"}],"authorContributionMap":{"Jayne1010":10,"-":202}},{"path":"src/test/java/seedu/address/logic/commands/AddNoteCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"tengcharmaine"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"tengcharmaine"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"tengcharmaine"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"tengcharmaine"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"tengcharmaine"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NOTE_AMY;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"tengcharmaine"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NOTE_BOB;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"tengcharmaine"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"tengcharmaine"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.model.person.IdentityCardNumberMatchesPredicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.model.person.Note;","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"tengcharmaine"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"tengcharmaine"},"content":" * Contains integration tests (interaction with the Model) and unit tests for AddNoteCommand.","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"tengcharmaine"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"tengcharmaine"},"content":"public class AddNoteCommandTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"tengcharmaine"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"tengcharmaine"},"content":" public void testReplaceNote() throws CommandException {","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"tengcharmaine"},"content":" // Setup","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"tengcharmaine"},"content":" Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"tengcharmaine"},"content":" Person person \u003d model.getFilteredPersonList().get(0);","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"tengcharmaine"},"content":" Note originalNote \u003d person.getNote();","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"tengcharmaine"},"content":" AddNoteCommand command \u003d new AddNoteCommand(","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"tengcharmaine"},"content":" new IdentityCardNumberMatchesPredicate(person.getIdentityCardNumber()),","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"tengcharmaine"},"content":" new Note(\"new note\"), true);","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"tengcharmaine"},"content":" // Action","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"tengcharmaine"},"content":" command.execute(model);","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"tengcharmaine"},"content":" // Verify","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"tengcharmaine"},"content":" assertEquals(originalNote.toString(), person.getNote().toString());","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"tengcharmaine"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"tengcharmaine"},"content":" public void generateSuccessMessage_noteAdded_successMessage() {","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"tengcharmaine"},"content":" Person personToEdit \u003d new PersonBuilder().withName(\"Alice\").withIdentityCardNumber(\"S1234567A\").build();","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"tengcharmaine"},"content":" String expectedMessage \u003d String.format(AddNoteCommand.MESSAGE_MODIFY_NOTE_SUCCESS,","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"tengcharmaine"},"content":" personToEdit.getName(), personToEdit.getIdentityCardNumber());","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"tengcharmaine"},"content":" assertEquals(expectedMessage, new AddNoteCommand(","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"tengcharmaine"},"content":" new IdentityCardNumberMatchesPredicate(personToEdit.getIdentityCardNumber()),","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"tengcharmaine"},"content":" new Note(\"new note\"), false).generateSuccessMessage(personToEdit));","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"tengcharmaine"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"tengcharmaine"},"content":" public void equals() {","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"tengcharmaine"},"content":" IdentityCardNumberMatchesPredicate firstPredicate \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"tengcharmaine"},"content":" new IdentityCardNumberMatchesPredicate(new IdentityCardNumber(\"S1234567A\"));","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"tengcharmaine"},"content":" IdentityCardNumberMatchesPredicate secondPredicate \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"tengcharmaine"},"content":" new IdentityCardNumberMatchesPredicate(new IdentityCardNumber(\"S9876543B\"));","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"tengcharmaine"},"content":" final AddNoteCommand standardCommand \u003d new AddNoteCommand(firstPredicate,","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"tengcharmaine"},"content":" new Note(VALID_NOTE_AMY), false);","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"tengcharmaine"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"tengcharmaine"},"content":" AddNoteCommand commandWithSameValues \u003d new AddNoteCommand(firstPredicate,","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"tengcharmaine"},"content":" new Note(VALID_NOTE_AMY), false);","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"tengcharmaine"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"tengcharmaine"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"tengcharmaine"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"tengcharmaine"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"tengcharmaine"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"tengcharmaine"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"tengcharmaine"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"tengcharmaine"},"content":" // different index -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"tengcharmaine"},"content":" assertFalse(standardCommand.equals(new AddNoteCommand(secondPredicate,","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"tengcharmaine"},"content":" new Note(VALID_NOTE_AMY), false)));","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"tengcharmaine"},"content":" // different remark -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"tengcharmaine"},"content":" assertFalse(standardCommand.equals(new AddNoteCommand(firstPredicate,","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"tengcharmaine"},"content":" new Note(VALID_NOTE_BOB), false)));","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"tengcharmaine"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"tengcharmaine":86}},{"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":"Jayne1010"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-21"},{"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.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AGE;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_IC_NUMBER;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SEX;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-20"},{"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.AddressBook;","lastModifiedDate":"2017-06-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":24,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.IdentityCardNumberMatchesPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05"},{"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":"drustanyjt"},"content":" public static final String VALID_IDENTITY_CARD_NUMBER_AMY \u003d \"S1234567A\";","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"drustanyjt"},"content":" public static final String VALID_IDENTITY_CARD_NUMBER_BOB \u003d \"S1234567B\";","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"drustanyjt"},"content":" public static final Integer VALID_AGE_AMY \u003d 13;","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"drustanyjt"},"content":" public static final Integer VALID_AGE_BOB \u003d 54;","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"drustanyjt"},"content":" public static final String VALID_SEX_AMY \u003d \"F\";","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"drustanyjt"},"content":" public static final String VALID_SEX_BOB \u003d \"M\";","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05"},{"lineNumber":49,"author":{"gitId":"drustanyjt"},"content":" public static final String VALID_NOTE_AMY \u003d \"Hypertensive Crisis with last reading of 156/60\";","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"drustanyjt"},"content":" public static final String VALID_NOTE_BOB \u003d \"Prone to cardiac arrest, 3 times in the past 2 months\";","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"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":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"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":"Jayne1010"},"content":" public static final String IC_DESC_AMY \u003d \" \" + PREFIX_IC_NUMBER + VALID_IDENTITY_CARD_NUMBER_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"Jayne1010"},"content":" public static final String IC_DESC_BOB \u003d \" \" + PREFIX_IC_NUMBER + VALID_IDENTITY_CARD_NUMBER_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"Jayne1010"},"content":" public static final String AGE_DESC_AMY \u003d \" \" + PREFIX_AGE + VALID_AGE_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"Jayne1010"},"content":" public static final String AGE_DESC_BOB \u003d \" \" + PREFIX_AGE + VALID_AGE_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"Jayne1010"},"content":" public static final String SEX_DESC_AMY \u003d \" \" + PREFIX_SEX + VALID_SEX_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"Jayne1010"},"content":" public static final String SEX_DESC_BOB \u003d \" \" + PREFIX_SEX + VALID_AGE_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"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":71,"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":72,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05"},{"lineNumber":74,"author":{"gitId":"Jayne1010"},"content":" public static final String INVALID_SEX \u003d \" \" + PREFIX_SEX + \"Z\"; // Only \u0027M\u0027 and \u0027F\u0027 allowed in sex","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"Jayne1010"},"content":" public static final String INVALID_AGE \u003d \" \" + PREFIX_AGE + \"-15\"; // Negative age not allowed in age","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"Jayne1010"},"content":" public static final String INVALID_IC \u003d \" \" + PREFIX_IC_NUMBER + \"P379@\"; // @ not allowed in identification number","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":85,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":88,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":89,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":91,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25"},{"lineNumber":100,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":101,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":102,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":105,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":106,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":110,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":111,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25"},{"lineNumber":112,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":113,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25"},{"lineNumber":115,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":116,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":120,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":121,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":122,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":123,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":124,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25"},{"lineNumber":125,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":126,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25"},{"lineNumber":127,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":128,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":129,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":130,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03"},{"lineNumber":133,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":136,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":137,"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":138,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31"},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":140,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":143,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31"},{"lineNumber":144,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20"},{"lineNumber":145,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":147,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":150,"author":{"gitId":"Jayne1010"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":151,"author":{"gitId":"Jayne1010"},"content":" * Updates {@code model}\u0027s filtered list to show only the person with the given {@code icNumber} in the","lastModifiedDate":"2024-03-21"},{"lineNumber":152,"author":{"gitId":"Jayne1010"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2024-03-21"},{"lineNumber":153,"author":{"gitId":"Jayne1010"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":154,"author":{"gitId":"Jayne1010"},"content":" public static void showPersonWithIC(Model model, IdentityCardNumber icNumber) {","lastModifiedDate":"2024-03-21"},{"lineNumber":155,"author":{"gitId":"Jayne1010"},"content":" model.updateFilteredPersonList(new IdentityCardNumberMatchesPredicate(icNumber));","lastModifiedDate":"2024-03-21"},{"lineNumber":156,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":157,"author":{"gitId":"Jayne1010"},"content":" // Ensure that at least one person matches the IC number","lastModifiedDate":"2024-03-21"},{"lineNumber":158,"author":{"gitId":"Jayne1010"},"content":" assertFalse(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2024-03-21"},{"lineNumber":159,"author":{"gitId":"Jayne1010"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":160,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":161,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"Jayne1010":26,"drustanyjt":8,"-":127}},{"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.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"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":"jiahui0309"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"jiahui0309"},"content":"import seedu.address.model.person.IdentityCardNumberMatchesPredicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2018-01-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2017-06-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":30,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":31,"author":{"gitId":"jiahui0309"},"content":" IdentityCardNumber icToDelete \u003d personToDelete.getIdentityCardNumber();","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"jiahui0309"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(new IdentityCardNumberMatchesPredicate(icToDelete));","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23"},{"lineNumber":35,"author":{"gitId":"Jayne1010"},"content":" personToDelete.getName(),","lastModifiedDate":"2024-03-24"},{"lineNumber":36,"author":{"gitId":"Jayne1010"},"content":" personToDelete.getPhone(),","lastModifiedDate":"2024-03-24"},{"lineNumber":37,"author":{"gitId":"Jayne1010"},"content":" personToDelete.getEmail(),","lastModifiedDate":"2024-03-24"},{"lineNumber":38,"author":{"gitId":"Jayne1010"},"content":" personToDelete.getIdentityCardNumber(),","lastModifiedDate":"2024-03-24"},{"lineNumber":39,"author":{"gitId":"Jayne1010"},"content":" personToDelete.getAge(),","lastModifiedDate":"2024-03-24"},{"lineNumber":40,"author":{"gitId":"Jayne1010"},"content":" personToDelete.getSex(),","lastModifiedDate":"2024-03-24"},{"lineNumber":41,"author":{"gitId":"Jayne1010"},"content":" personToDelete.getAddress());","lastModifiedDate":"2024-03-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"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_validIndexFilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":52,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":55,"author":{"gitId":"jiahui0309"},"content":" IdentityCardNumber icToDelete \u003d personToDelete.getIdentityCardNumber();","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"jiahui0309"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(new IdentityCardNumberMatchesPredicate(icToDelete));","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"Jayne1010"},"content":" personToDelete.getName(),","lastModifiedDate":"2024-03-24"},{"lineNumber":60,"author":{"gitId":"Jayne1010"},"content":" personToDelete.getPhone(),","lastModifiedDate":"2024-03-24"},{"lineNumber":61,"author":{"gitId":"Jayne1010"},"content":" personToDelete.getEmail(),","lastModifiedDate":"2024-03-24"},{"lineNumber":62,"author":{"gitId":"Jayne1010"},"content":" personToDelete.getIdentityCardNumber(),","lastModifiedDate":"2024-03-24"},{"lineNumber":63,"author":{"gitId":"Jayne1010"},"content":" personToDelete.getAge(),","lastModifiedDate":"2024-03-24"},{"lineNumber":64,"author":{"gitId":"Jayne1010"},"content":" personToDelete.getSex(),","lastModifiedDate":"2024-03-24"},{"lineNumber":65,"author":{"gitId":"Jayne1010"},"content":" personToDelete.getAddress());","lastModifiedDate":"2024-03-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" showNoPerson(expectedModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":77,"author":{"gitId":"jiahui0309"},"content":" IdentityCardNumberMatchesPredicate firstPredicate \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"jiahui0309"},"content":" new IdentityCardNumberMatchesPredicate(new IdentityCardNumber(\"S1234567A\"));","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"jiahui0309"},"content":" IdentityCardNumberMatchesPredicate secondPredicate \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"jiahui0309"},"content":" new IdentityCardNumberMatchesPredicate(new IdentityCardNumber(\"S9876543B\"));","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"jiahui0309"},"content":" DeleteCommand deleteFirstCommand \u003d new DeleteCommand(firstPredicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"jiahui0309"},"content":" DeleteCommand deleteSecondCommand \u003d new DeleteCommand(secondPredicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":89,"author":{"gitId":"jiahui0309"},"content":" DeleteCommand deleteFirstCommandCopy \u003d new DeleteCommand(firstPredicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","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":"2019-02-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":104,"author":{"gitId":"jiahui0309"},"content":" IdentityCardNumberMatchesPredicate predicate \u003d new IdentityCardNumberMatchesPredicate(","lastModifiedDate":"2024-03-16"},{"lineNumber":105,"author":{"gitId":"jiahui0309"},"content":" new IdentityCardNumber(\"S1234567A\"));","lastModifiedDate":"2024-03-16"},{"lineNumber":106,"author":{"gitId":"jiahui0309"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(predicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":107,"author":{"gitId":"jiahui0309"},"content":" String expected \u003d DeleteCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2024-03-16"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertEquals(expected, deleteCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":112,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":" private void showNoPerson(Model model) {","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2017-06-12"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertTrue(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2018-02-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":119,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"Jayne1010":14,"-":87,"jiahui0309":18}},{"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":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.IC_DESC_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_IDENTITY_CARD_NUMBER_BOB;","lastModifiedDate":"2024-03-21"},{"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":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonWithIC;","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.testutil.TypicalIdentityPredicate.IC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.testutil.TypicalIdentityPredicate.IC_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":22,"author":{"gitId":"drustanyjt"},"content":"import org.junit.jupiter.api.Disabled;","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"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":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04"},{"lineNumber":31,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-04"},{"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":"drustanyjt"},"content":"@Disabled(\"Requires edit Command to be implemented\")","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"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":"Jayne1010"},"content":" EditCommand editCommand \u003d new EditCommand(IC_AMY, descriptor);","lastModifiedDate":"2024-03-21"},{"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":"Jayne1010"},"content":" Person lastPerson \u003d model.getAddressBook().getPersonList()","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"Jayne1010"},"content":" .get(model.getAddressBook().getPersonList().size() - 1);","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":63,"author":{"gitId":"-"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2017-05-18"},{"lineNumber":64,"author":{"gitId":"-"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-18"},{"lineNumber":65,"author":{"gitId":"Jayne1010"},"content":" .withIdentityCardNumber(VALID_IDENTITY_CARD_NUMBER_BOB)","lastModifiedDate":"2024-03-21"},{"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":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-05-18"},{"lineNumber":69,"author":{"gitId":"Jayne1010"},"content":" .withIC(VALID_IDENTITY_CARD_NUMBER_BOB)","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":71,"author":{"gitId":"Jayne1010"},"content":" EditCommand editCommand \u003d new EditCommand(IC_BOB, descriptor);","lastModifiedDate":"2024-03-21"},{"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":"-"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2018-08-17"},{"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":"Jayne1010"},"content":" EditCommand editCommand \u003d new EditCommand(IC_AMY, new EditPersonDescriptor());","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"Jayne1010"},"content":" Person editedPerson \u003d new PersonBuilder(AMY).build();","lastModifiedDate":"2024-03-21"},{"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":"Jayne1010"},"content":" showPersonWithIC(model, new IdentityCardNumber(\"S0123456B\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":97,"author":{"gitId":"Jayne1010"},"content":" Person editedPerson \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-21"},{"lineNumber":98,"author":{"gitId":"Jayne1010"},"content":" .withIdentityCardNumber(VALID_IDENTITY_CARD_NUMBER_BOB).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":99,"author":{"gitId":"Jayne1010"},"content":" EditCommand editCommand \u003d new EditCommand(IC_BOB,","lastModifiedDate":"2024-03-21"},{"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":"Jayne1010"},"content":" Person firstPerson \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-21"},{"lineNumber":113,"author":{"gitId":"Jayne1010"},"content":" .withIdentityCardNumber(VALID_IDENTITY_CARD_NUMBER_BOB).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":114,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"Jayne1010"},"content":" EditCommand editCommand \u003d new EditCommand(IC_BOB, descriptor);","lastModifiedDate":"2024-03-21"},{"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":"Jayne1010"},"content":" showPersonWithIC(model, new IdentityCardNumber(\"S0123456B\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":124,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2017-05-18"},{"lineNumber":125,"author":{"gitId":"Jayne1010"},"content":" Person personInList \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-21"},{"lineNumber":126,"author":{"gitId":"Jayne1010"},"content":" .withIdentityCardNumber(VALID_IDENTITY_CARD_NUMBER_BOB).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":127,"author":{"gitId":"Jayne1010"},"content":" EditCommand editCommand \u003d new EditCommand(IC_BOB,","lastModifiedDate":"2024-03-21"},{"lineNumber":128,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":135,"author":{"gitId":"Jayne1010"},"content":" final EditCommand standardCommand \u003d new EditCommand(IC_AMY, DESC_AMY);","lastModifiedDate":"2024-03-21"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":137,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08"},{"lineNumber":139,"author":{"gitId":"Jayne1010"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(IC_AMY, copyDescriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":142,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":148,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":151,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":152,"author":{"gitId":"Jayne1010"},"content":" assertFalse(standardCommand.equals(new EditCommand(IC_BOB, DESC_AMY)));","lastModifiedDate":"2024-03-21"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":154,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":155,"author":{"gitId":"Jayne1010"},"content":" assertFalse(standardCommand.equals(new EditCommand(IC_BOB, DESC_BOB)));","lastModifiedDate":"2024-03-21"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":158,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":161,"author":{"gitId":"Jayne1010"},"content":" EditCommand editCommand \u003d new EditCommand(IC_BOB, editPersonDescriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":162,"author":{"gitId":"Jayne1010"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{ic\u003d\" + IC_DESC_BOB + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2024-03-21"},{"lineNumber":163,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08"}],"authorContributionMap":{"Jayne1010":33,"drustanyjt":2,"-":131}},{"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":"Jayne1010"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", ic\u003d\"","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"Jayne1010"},"content":" + editPersonDescriptor.getIC().orElse(null) + \", age\u003d\"","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"Jayne1010"},"content":" + editPersonDescriptor.getAge().orElse(null) + \", sex\u003d\"","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"Jayne1010"},"content":" + editPersonDescriptor.getSex().orElse(null) + \", address\u003d\"","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getAddress().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getTags().orElse(null) + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"Jayne1010":4,"-":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":"jiahui0309"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"jiahui0309"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"jiahui0309"},"content":"import seedu.address.model.person.IdentityCardNumberMatchesPredicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code FindCommand}.","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class FindCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-27"},{"lineNumber":31,"author":{"gitId":"jiahui0309"},"content":" IdentityCardNumberMatchesPredicate firstPredicate \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"jiahui0309"},"content":" new IdentityCardNumberMatchesPredicate(new IdentityCardNumber(\"S1234567A\"));","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"jiahui0309"},"content":" IdentityCardNumberMatchesPredicate secondPredicate \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"jiahui0309"},"content":" new IdentityCardNumberMatchesPredicate(new IdentityCardNumber(\"S9876543B\"));","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" FindCommand findFirstCommand \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" FindCommand findSecondCommand \u003d new FindCommand(secondPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" FindCommand findFirstCommandCopy \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","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-12"},{"lineNumber":57,"author":{"gitId":"jiahui0309"},"content":" public void execute_validIC_singlePersonFound() {","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"jiahui0309"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 1);","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"jiahui0309"},"content":" IdentityCardNumberMatchesPredicate predicate \u003d preparePredicate(\"S1234567A\");","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":63,"author":{"gitId":"jiahui0309"},"content":" assertEquals(Collections.singletonList(ALICE), model.getFilteredPersonList());","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"jiahui0309"},"content":" IdentityCardNumberMatchesPredicate predicate \u003d new IdentityCardNumberMatchesPredicate(","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"jiahui0309"},"content":" new IdentityCardNumber(\"S1234567A\"));","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"-"},"content":" FindCommand findCommand \u003d new FindCommand(predicate);","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2018-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":78,"author":{"gitId":"jiahui0309"},"content":" private IdentityCardNumberMatchesPredicate preparePredicate(String userInput) {","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"jiahui0309"},"content":" return new IdentityCardNumberMatchesPredicate(new IdentityCardNumber(userInput));","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":81,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"},{"lineNumber":82,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"-":65,"jiahui0309":17}},{"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":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.AGE_DESC_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.AGE_DESC_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.IC_DESC_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.IC_DESC_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_AGE;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_IC;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_SEX;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SEX_DESC_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SEX_DESC_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_AGE;","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_IC;","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SEX;","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":47,"author":{"gitId":"drustanyjt"},"content":"import org.junit.jupiter.api.Disabled;","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":51,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-06-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15"},{"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":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-06-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":60,"author":{"gitId":"drustanyjt"},"content":"@Disabled(\"Requires add Command to be implemented\")","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":66,"author":{"gitId":"Jayne1010"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":70,"author":{"gitId":"Jayne1010"},"content":" + IC_DESC_BOB + AGE_DESC_BOB + SEX_DESC_BOB + ADDRESS_DESC_BOB, new AddCommand(expectedPerson));","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15"},{"lineNumber":74,"author":{"gitId":"Jayne1010"},"content":" Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB)","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":77,"author":{"gitId":"Jayne1010"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + IC_DESC_BOB","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"Jayne1010"},"content":" + AGE_DESC_BOB + SEX_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"-"},"content":" new AddCommand(expectedPersonMultipleTags));","lastModifiedDate":"2023-07-14"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-07-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND;","lastModifiedDate":"2023-07-14"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":99,"author":{"gitId":"Jayne1010"},"content":" // multiple ic","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, IC_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-20"},{"lineNumber":101,"author":{"gitId":"Jayne1010"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_IC));","lastModifiedDate":"2024-03-20"},{"lineNumber":102,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":103,"author":{"gitId":"Jayne1010"},"content":" // multiple age","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, AGE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"Jayne1010"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_AGE));","lastModifiedDate":"2024-03-20"},{"lineNumber":106,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":107,"author":{"gitId":"Jayne1010"},"content":" // multiple sex","lastModifiedDate":"2024-03-20"},{"lineNumber":108,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, SEX_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-20"},{"lineNumber":109,"author":{"gitId":"Jayne1010"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_SEX));","lastModifiedDate":"2024-03-20"},{"lineNumber":110,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":111,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2023-07-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":" + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_ADDRESS, PREFIX_EMAIL, PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":137,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":139,"author":{"gitId":"Jayne1010"},"content":" // invalid sex","lastModifiedDate":"2024-03-20"},{"lineNumber":140,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, INVALID_SEX + validExpectedPersonString,","lastModifiedDate":"2024-03-20"},{"lineNumber":141,"author":{"gitId":"Jayne1010"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_SEX));","lastModifiedDate":"2024-03-20"},{"lineNumber":142,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":143,"author":{"gitId":"Jayne1010"},"content":" // invalid age","lastModifiedDate":"2024-03-20"},{"lineNumber":144,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, INVALID_AGE + validExpectedPersonString,","lastModifiedDate":"2024-03-20"},{"lineNumber":145,"author":{"gitId":"Jayne1010"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_AGE));","lastModifiedDate":"2024-03-20"},{"lineNumber":146,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":147,"author":{"gitId":"Jayne1010"},"content":" // invalid ic","lastModifiedDate":"2024-03-20"},{"lineNumber":148,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, INVALID_IC + validExpectedPersonString,","lastModifiedDate":"2024-03-20"},{"lineNumber":149,"author":{"gitId":"Jayne1010"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_IC));","lastModifiedDate":"2024-03-20"},{"lineNumber":150,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":151,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":153,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":154,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":155,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":157,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":159,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":161,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":163,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":165,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":167,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":168,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":169,"author":{"gitId":"Jayne1010"},"content":" // invalid age","lastModifiedDate":"2024-03-20"},{"lineNumber":170,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_AGE,","lastModifiedDate":"2024-03-20"},{"lineNumber":171,"author":{"gitId":"Jayne1010"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_AGE));","lastModifiedDate":"2024-03-20"},{"lineNumber":172,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":173,"author":{"gitId":"Jayne1010"},"content":" // invalid sex","lastModifiedDate":"2024-03-20"},{"lineNumber":174,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_SEX,","lastModifiedDate":"2024-03-20"},{"lineNumber":175,"author":{"gitId":"Jayne1010"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_SEX));","lastModifiedDate":"2024-03-20"},{"lineNumber":176,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":177,"author":{"gitId":"Jayne1010"},"content":" // invalid ic","lastModifiedDate":"2024-03-20"},{"lineNumber":178,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_IC,","lastModifiedDate":"2024-03-20"},{"lineNumber":179,"author":{"gitId":"Jayne1010"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_IC));","lastModifiedDate":"2024-03-20"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":182,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":183,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":184,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15"},{"lineNumber":185,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2018-07-25"},{"lineNumber":186,"author":{"gitId":"Jayne1010"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + IC_DESC_AMY","lastModifiedDate":"2024-03-20"},{"lineNumber":187,"author":{"gitId":"Jayne1010"},"content":" + AGE_DESC_AMY + SEX_DESC_AMY + ADDRESS_DESC_AMY,","lastModifiedDate":"2024-03-20"},{"lineNumber":188,"author":{"gitId":"-"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2017-12-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":191,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":192,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":193,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":195,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":196,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":199,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":200,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":203,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":204,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":207,"author":{"gitId":"Jayne1010"},"content":" // missing age prefix","lastModifiedDate":"2024-03-20"},{"lineNumber":208,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-03-20"},{"lineNumber":209,"author":{"gitId":"Jayne1010"},"content":" expectedMessage);","lastModifiedDate":"2024-03-20"},{"lineNumber":210,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":211,"author":{"gitId":"Jayne1010"},"content":" // missing sex prefix","lastModifiedDate":"2024-03-20"},{"lineNumber":212,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-03-20"},{"lineNumber":213,"author":{"gitId":"Jayne1010"},"content":" expectedMessage);","lastModifiedDate":"2024-03-20"},{"lineNumber":214,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":215,"author":{"gitId":"Jayne1010"},"content":" // missing ic prefix","lastModifiedDate":"2024-03-20"},{"lineNumber":216,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-03-20"},{"lineNumber":217,"author":{"gitId":"Jayne1010"},"content":" expectedMessage);","lastModifiedDate":"2024-03-20"},{"lineNumber":218,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":219,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":220,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":223,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15"},{"lineNumber":224,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":226,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":228,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":229,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":230,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":231,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-20"},{"lineNumber":232,"author":{"gitId":"Jayne1010"},"content":" + IC_DESC_BOB + AGE_DESC_BOB + SEX_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-20"},{"lineNumber":233,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":235,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15"},{"lineNumber":236,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-20"},{"lineNumber":237,"author":{"gitId":"Jayne1010"},"content":" + IC_DESC_BOB + AGE_DESC_BOB + SEX_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-20"},{"lineNumber":238,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":240,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15"},{"lineNumber":241,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC","lastModifiedDate":"2024-03-20"},{"lineNumber":242,"author":{"gitId":"Jayne1010"},"content":" + IC_DESC_BOB + AGE_DESC_BOB + SEX_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-20"},{"lineNumber":243,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":245,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15"},{"lineNumber":246,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-20"},{"lineNumber":247,"author":{"gitId":"Jayne1010"},"content":" + IC_DESC_BOB + AGE_DESC_BOB + SEX_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2024-03-20"},{"lineNumber":248,"author":{"gitId":"Jayne1010"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-20"},{"lineNumber":249,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":250,"author":{"gitId":"Jayne1010"},"content":" // invalid age","lastModifiedDate":"2024-03-20"},{"lineNumber":251,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-20"},{"lineNumber":252,"author":{"gitId":"Jayne1010"},"content":" + IC_DESC_BOB + INVALID_AGE + SEX_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-20"},{"lineNumber":253,"author":{"gitId":"Jayne1010"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-20"},{"lineNumber":254,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":255,"author":{"gitId":"Jayne1010"},"content":" // invalid sex","lastModifiedDate":"2024-03-20"},{"lineNumber":256,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-20"},{"lineNumber":257,"author":{"gitId":"Jayne1010"},"content":" + IC_DESC_BOB + AGE_DESC_BOB + INVALID_SEX + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-20"},{"lineNumber":258,"author":{"gitId":"Jayne1010"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-20"},{"lineNumber":259,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":260,"author":{"gitId":"Jayne1010"},"content":" // invalid ic","lastModifiedDate":"2024-03-20"},{"lineNumber":261,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-20"},{"lineNumber":262,"author":{"gitId":"Jayne1010"},"content":" + INVALID_IC + AGE_DESC_BOB + SEX_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-20"},{"lineNumber":263,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":265,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15"},{"lineNumber":266,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":" + INVALID_TAG_DESC + VALID_TAG_FRIEND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":269,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":270,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC,","lastModifiedDate":"2017-12-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2017-12-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23"},{"lineNumber":277,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":278,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"Jayne1010":90,"drustanyjt":2,"-":186}},{"path":"src/test/java/seedu/address/logic/parser/AddNoteCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"tengcharmaine"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"tengcharmaine"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"tengcharmaine"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"tengcharmaine"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.logic.commands.AddNoteCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"tengcharmaine"},"content":"public class AddNoteCommandParserTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"tengcharmaine"},"content":" private AddNoteCommandParser parser \u003d new AddNoteCommandParser();","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"tengcharmaine"},"content":" private final String nonEmptyNote \u003d \"Some note.\";","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"tengcharmaine"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"tengcharmaine"},"content":" public void parse_missingCompulsoryField_failure() {","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"tengcharmaine"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddNoteCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"tengcharmaine"},"content":" // no parameters","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"tengcharmaine"},"content":" assertParseFailure(parser, AddNoteCommand.COMMAND_WORD, expectedMessage);","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"tengcharmaine"},"content":" // no index","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"tengcharmaine"},"content":" assertParseFailure(parser, AddNoteCommand.COMMAND_WORD + \" \" + nonEmptyNote, expectedMessage);","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"tengcharmaine"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"tengcharmaine":24}},{"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":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.AGE_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.IC_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SEX_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_AGE_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_IDENTITY_CARD_NUMBER_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SEX_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"tengcharmaine"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FLAG;","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"tengcharmaine"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NOTE;","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":25,"author":{"gitId":"drustanyjt"},"content":"import org.junit.jupiter.api.Disabled;","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.logic.commands.AddNoteCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-06-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24"},{"lineNumber":39,"author":{"gitId":"jiahui0309"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"jiahui0309"},"content":"import seedu.address.model.person.IdentityCardNumberMatchesPredicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.model.person.Note;","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27"},{"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":"drustanyjt"},"content":" @Disabled(\"Requires add Command to be implemented\")","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") 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":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":67,"author":{"gitId":"jiahui0309"},"content":" String args \u003d \"s1234567a\";","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":69,"author":{"gitId":"jiahui0309"},"content":" DeleteCommand.COMMAND_WORD + \" \" + args);","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"jiahui0309"},"content":" assertEquals(new DeleteCommand(new IdentityCardNumberMatchesPredicate(","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"jiahui0309"},"content":" new IdentityCardNumber(args))), command);","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"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":"Jayne1010"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"Jayne1010"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withIC(VALID_IDENTITY_CARD_NUMBER_AMY)","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"Jayne1010"},"content":" .withSex(VALID_SEX_AMY).withAge(VALID_AGE_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"Jayne1010"},"content":" .build();","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"Jayne1010"},"content":" String userInput \u003d EditCommand.COMMAND_WORD + \" \" + VALID_IDENTITY_CARD_NUMBER_AMY","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"Jayne1010"},"content":" + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"Jayne1010"},"content":" + EMAIL_DESC_AMY + IC_DESC_AMY + AGE_DESC_AMY + SEX_DESC_AMY + ADDRESS_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"Jayne1010"},"content":" EditCommand expectedCommand \u003d new EditCommand(new IdentityCardNumberMatchesPredicate(","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"Jayne1010"},"content":" new IdentityCardNumber(VALID_IDENTITY_CARD_NUMBER_AMY)), descriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"Jayne1010"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(userInput);","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"Jayne1010"},"content":" assertEquals(expectedCommand, command);","lastModifiedDate":"2024-03-21"},{"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_exit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"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_find() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":99,"author":{"gitId":"jiahui0309"},"content":" String args \u003d \"s1234567a\";","lastModifiedDate":"2024-03-16"},{"lineNumber":100,"author":{"gitId":"jiahui0309"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(FindCommand.COMMAND_WORD + \" \" + args);","lastModifiedDate":"2024-03-16"},{"lineNumber":101,"author":{"gitId":"jiahui0309"},"content":" assertEquals(new FindCommand(new IdentityCardNumberMatchesPredicate(new IdentityCardNumber(args))), command);","lastModifiedDate":"2024-03-16"},{"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":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":116,"author":{"gitId":"tengcharmaine"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":117,"author":{"gitId":"tengcharmaine"},"content":" public void parseCommand_addNote_withReplaceFlag() throws Exception {","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"tengcharmaine"},"content":" final Note note \u003d new Note(\"Some note.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"tengcharmaine"},"content":" AddNoteCommand command \u003d (AddNoteCommand) parser.parseCommand(AddNoteCommand.COMMAND_WORD","lastModifiedDate":"2024-03-23"},{"lineNumber":120,"author":{"gitId":"tengcharmaine"},"content":" + \" S0123456Q \" + PREFIX_NOTE + note.value + \" \" + PREFIX_FLAG);","lastModifiedDate":"2024-03-23"},{"lineNumber":121,"author":{"gitId":"tengcharmaine"},"content":" assertEquals(new AddNoteCommand(new IdentityCardNumberMatchesPredicate(new IdentityCardNumber(\"S0123456Q\")),","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"tengcharmaine"},"content":" note, true), command);","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"tengcharmaine"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"tengcharmaine"},"content":" public void parseCommand_addNote_withoutReplaceFlag() throws Exception {","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"tengcharmaine"},"content":" final Note note \u003d new Note(\"Some note.\");","lastModifiedDate":"2024-03-16"},{"lineNumber":128,"author":{"gitId":"tengcharmaine"},"content":" AddNoteCommand command \u003d (AddNoteCommand) parser.parseCommand(AddNoteCommand.COMMAND_WORD","lastModifiedDate":"2024-03-23"},{"lineNumber":129,"author":{"gitId":"tengcharmaine"},"content":" + \" S0123456Q \" + PREFIX_NOTE + note.value);","lastModifiedDate":"2024-03-23"},{"lineNumber":130,"author":{"gitId":"tengcharmaine"},"content":" assertEquals(new AddNoteCommand(new IdentityCardNumberMatchesPredicate(new IdentityCardNumber(\"S0123456Q\")),","lastModifiedDate":"2024-03-16"},{"lineNumber":131,"author":{"gitId":"tengcharmaine"},"content":" note, false), command);","lastModifiedDate":"2024-03-16"},{"lineNumber":132,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":133,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":135,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23"},{"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_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":144,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"Jayne1010":27,"drustanyjt":2,"tengcharmaine":22,"-":84,"jiahui0309":9}},{"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":"2017-06-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-09"},{"lineNumber":10,"author":{"gitId":"jiahui0309"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"jiahui0309"},"content":"import seedu.address.model.person.IdentityCardNumberMatchesPredicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * As we are only doing white-box testing, our test cases do not cover path variations","lastModifiedDate":"2017-06-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * outside of the DeleteCommand code. For example, inputs \"1\" and \"1 abc\" take the","lastModifiedDate":"2017-06-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * same path through the DeleteCommand, and therefore we test only one of them.","lastModifiedDate":"2017-06-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * The path variation for those two cases occur inside the ParserUtil, and","lastModifiedDate":"2017-06-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * therefore should be covered by the ParserUtilTest.","lastModifiedDate":"2017-06-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class DeleteCommandParserTest {","lastModifiedDate":"2017-06-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private DeleteCommandParser parser \u003d new DeleteCommandParser();","lastModifiedDate":"2017-06-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsDeleteCommand() {","lastModifiedDate":"2017-08-15"},{"lineNumber":26,"author":{"gitId":"jiahui0309"},"content":" DeleteCommand expectedDeleteCommand \u003d new DeleteCommand(new IdentityCardNumberMatchesPredicate(","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"jiahui0309"},"content":" new IdentityCardNumber(\"S1234567A\")));","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"jiahui0309"},"content":" assertParseSuccess(parser, \"S1234567A\", expectedDeleteCommand);","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":33,"author":{"gitId":"jiahui0309"},"content":" // IC with incorrect format","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"jiahui0309"},"content":" assertParseFailure(parser, \"S1234\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"jiahui0309"},"content":" // IC with incorrect format and additional arguments","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"jiahui0309"},"content":" assertParseFailure(parser, \"S1234 extra\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"jiahui0309"},"content":" DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"jiahui0309"},"content":" // IC with correct format but contains non-alphanumeric characters","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"jiahui0309"},"content":" assertParseFailure(parser, \"S1234$%^\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"jiahui0309"},"content":" DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09"}],"authorContributionMap":{"-":29,"jiahui0309":15}},{"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":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.AGE_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"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":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.IC_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"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":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","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":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SEX_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":19,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_AGE_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":21,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_IDENTITY_CARD_NUMBER_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_IDENTITY_CARD_NUMBER_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":25,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SEX_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14"},{"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_PHONE;","lastModifiedDate":"2023-07-14"},{"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":"","lastModifiedDate":"2017-05-04"},{"lineNumber":32,"author":{"gitId":"Jayne1010"},"content":"import org.junit.jupiter.api.Disabled;","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-04"},{"lineNumber":40,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.IdentityCardNumberMatchesPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-04"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":46,"author":{"gitId":"Jayne1010"},"content":"@Disabled(\"Boo\")","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":49,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"Jayne1010"},"content":" private static final String IC_INVALID \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"Jayne1010"},"content":" String.format(IdentityCardNumber.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-21"},{"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":"","lastModifiedDate":"2017-05-04"},{"lineNumber":60,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":61,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, \"S0123456A\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","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_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06"},{"lineNumber":69,"author":{"gitId":"Jayne1010"},"content":" // too short string","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, \"S09\" + NAME_DESC_AMY, IC_INVALID);","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":72,"author":{"gitId":"Jayne1010"},"content":" // Wrong format","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, \"P0123456A\" + NAME_DESC_AMY, IC_INVALID);","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":75,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":76,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, \"some random string\", IC_INVALID);","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":78,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":79,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, \"1 i/ string\", IC_INVALID);","lastModifiedDate":"2024-03-21"},{"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_invalidValue_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":84,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, \"S0123456A\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, \"S0123456A\" + INVALID_PHONE_DESC,","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"Jayne1010"},"content":" Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, \"S0123456A\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, \"S0123456A\" + INVALID_ADDRESS_DESC, Address.MESSAGE_CONSTRAINTS); // invalid address","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":90,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04"},{"lineNumber":91,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, \"S0123456A\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY,","lastModifiedDate":"2024-03-21"},{"lineNumber":92,"author":{"gitId":"Jayne1010"},"content":" Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":94,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04"},{"lineNumber":95,"author":{"gitId":"Jayne1010"},"content":" assertParseFailure(parser, \"S0123456A\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2024-03-21"},{"lineNumber":96,"author":{"gitId":"Jayne1010"},"content":" + VALID_ADDRESS_AMY + VALID_PHONE_AMY,","lastModifiedDate":"2024-03-21"},{"lineNumber":97,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":102,"author":{"gitId":"Jayne1010"},"content":" String userInput \u003d VALID_IDENTITY_CARD_NUMBER_AMY + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2024-03-21"},{"lineNumber":103,"author":{"gitId":"Jayne1010"},"content":" + EMAIL_DESC_AMY + IC_DESC_AMY + AGE_DESC_AMY + SEX_DESC_AMY + ADDRESS_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":104,"author":{"gitId":"Jayne1010"},"content":" IdentityCardNumberMatchesPredicate ic \u003d new IdentityCardNumberMatchesPredicate(","lastModifiedDate":"2024-03-21"},{"lineNumber":105,"author":{"gitId":"Jayne1010"},"content":" new IdentityCardNumber(VALID_IDENTITY_CARD_NUMBER_AMY));","lastModifiedDate":"2024-03-21"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":107,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-05-04"},{"lineNumber":108,"author":{"gitId":"Jayne1010"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withIC(VALID_IDENTITY_CARD_NUMBER_AMY)","lastModifiedDate":"2024-03-21"},{"lineNumber":109,"author":{"gitId":"Jayne1010"},"content":" .withSex(VALID_SEX_AMY).withAge(VALID_AGE_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2024-03-21"},{"lineNumber":110,"author":{"gitId":"Jayne1010"},"content":" .build();","lastModifiedDate":"2024-03-21"},{"lineNumber":111,"author":{"gitId":"Jayne1010"},"content":" EditCommand expectedCommand \u003d new EditCommand(ic, descriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":118,"author":{"gitId":"Jayne1010"},"content":" String userInput \u003d VALID_IDENTITY_CARD_NUMBER_AMY + NAME_DESC_AMY + PHONE_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":119,"author":{"gitId":"Jayne1010"},"content":" IdentityCardNumberMatchesPredicate ic \u003d new IdentityCardNumberMatchesPredicate(","lastModifiedDate":"2024-03-21"},{"lineNumber":120,"author":{"gitId":"Jayne1010"},"content":" new IdentityCardNumber(VALID_IDENTITY_CARD_NUMBER_AMY));","lastModifiedDate":"2024-03-21"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":122,"author":{"gitId":"Jayne1010"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-03-21"},{"lineNumber":123,"author":{"gitId":"Jayne1010"},"content":" .withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":124,"author":{"gitId":"Jayne1010"},"content":" EditCommand expectedCommand \u003d new EditCommand(ic, descriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":130,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":131,"author":{"gitId":"Jayne1010"},"content":" IdentityCardNumberMatchesPredicate ic \u003d new IdentityCardNumberMatchesPredicate(","lastModifiedDate":"2024-03-21"},{"lineNumber":132,"author":{"gitId":"Jayne1010"},"content":" new IdentityCardNumber(VALID_IDENTITY_CARD_NUMBER_AMY));","lastModifiedDate":"2024-03-21"},{"lineNumber":133,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04"},{"lineNumber":134,"author":{"gitId":"Jayne1010"},"content":" String userInput \u003d VALID_IDENTITY_CARD_NUMBER_AMY + NAME_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":135,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":136,"author":{"gitId":"Jayne1010"},"content":" EditCommand expectedCommand \u003d new EditCommand(ic, descriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":139,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2017-05-04"},{"lineNumber":140,"author":{"gitId":"Jayne1010"},"content":" userInput \u003d VALID_IDENTITY_CARD_NUMBER_AMY + PHONE_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":141,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":142,"author":{"gitId":"Jayne1010"},"content":" expectedCommand \u003d new EditCommand(ic, descriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":145,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04"},{"lineNumber":146,"author":{"gitId":"Jayne1010"},"content":" userInput \u003d VALID_IDENTITY_CARD_NUMBER_AMY + EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":147,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":148,"author":{"gitId":"Jayne1010"},"content":" expectedCommand \u003d new EditCommand(ic, descriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":151,"author":{"gitId":"Jayne1010"},"content":" // sex","lastModifiedDate":"2024-03-21"},{"lineNumber":152,"author":{"gitId":"Jayne1010"},"content":" userInput \u003d VALID_IDENTITY_CARD_NUMBER_AMY + SEX_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":153,"author":{"gitId":"Jayne1010"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withSex(VALID_SEX_AMY).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":154,"author":{"gitId":"Jayne1010"},"content":" expectedCommand \u003d new EditCommand(ic, descriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":155,"author":{"gitId":"Jayne1010"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-21"},{"lineNumber":156,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":157,"author":{"gitId":"Jayne1010"},"content":" // age","lastModifiedDate":"2024-03-21"},{"lineNumber":158,"author":{"gitId":"Jayne1010"},"content":" userInput \u003d VALID_IDENTITY_CARD_NUMBER_AMY + AGE_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":159,"author":{"gitId":"Jayne1010"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withAge(VALID_AGE_AMY).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":160,"author":{"gitId":"Jayne1010"},"content":" expectedCommand \u003d new EditCommand(ic, descriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":161,"author":{"gitId":"Jayne1010"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-21"},{"lineNumber":162,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":163,"author":{"gitId":"Jayne1010"},"content":" // IC number","lastModifiedDate":"2024-03-21"},{"lineNumber":164,"author":{"gitId":"Jayne1010"},"content":" userInput \u003d VALID_IDENTITY_CARD_NUMBER_AMY + IC_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":165,"author":{"gitId":"Jayne1010"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withIC(VALID_IDENTITY_CARD_NUMBER_AMY).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":166,"author":{"gitId":"Jayne1010"},"content":" expectedCommand \u003d new EditCommand(ic, descriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":167,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":169,"author":{"gitId":"Jayne1010"},"content":" // address","lastModifiedDate":"2024-03-21"},{"lineNumber":170,"author":{"gitId":"Jayne1010"},"content":" userInput \u003d VALID_IDENTITY_CARD_NUMBER_AMY + ADDRESS_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":171,"author":{"gitId":"Jayne1010"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":172,"author":{"gitId":"Jayne1010"},"content":" expectedCommand \u003d new EditCommand(ic, descriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":173,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"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":"Jayne1010"},"content":" String userInput \u003d VALID_IDENTITY_CARD_NUMBER_BOB + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2024-03-21"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":184,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":186,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14"},{"lineNumber":187,"author":{"gitId":"Jayne1010"},"content":" userInput \u003d VALID_IDENTITY_CARD_NUMBER_AMY + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":189,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":191,"author":{"gitId":"Jayne1010"},"content":" // multiple valid fields repeated","lastModifiedDate":"2024-03-21"},{"lineNumber":192,"author":{"gitId":"Jayne1010"},"content":" userInput \u003d VALID_IDENTITY_CARD_NUMBER_BOB + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2024-03-21"},{"lineNumber":193,"author":{"gitId":"Jayne1010"},"content":" + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2024-03-21"},{"lineNumber":194,"author":{"gitId":"Jayne1010"},"content":" + PHONE_DESC_BOB + ADDRESS_DESC_BOB + EMAIL_DESC_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":196,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":197,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":199,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14"},{"lineNumber":200,"author":{"gitId":"Jayne1010"},"content":" userInput \u003d VALID_IDENTITY_CARD_NUMBER_BOB + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2024-03-21"},{"lineNumber":201,"author":{"gitId":"-"},"content":" + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2023-07-14"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":203,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":204,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":205,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":206,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04"}],"authorContributionMap":{"Jayne1010":79,"-":127}},{"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":"jiahui0309"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":11,"author":{"gitId":"jiahui0309"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"jiahui0309"},"content":"import seedu.address.model.person.IdentityCardNumberMatchesPredicate;","lastModifiedDate":"2024-03-16"},{"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":" FindCommand expectedFindCommand \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"jiahui0309"},"content":" new FindCommand(new IdentityCardNumberMatchesPredicate(new IdentityCardNumber(\"S1234567A\")));","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"jiahui0309"},"content":" assertParseSuccess(parser, \"S1234567A\", expectedFindCommand);","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2017-06-27"},{"lineNumber":30,"author":{"gitId":"jiahui0309"},"content":" assertParseSuccess(parser, \" \\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"jiahui0309"},"content":" + \" S1234567A \\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"jiahui0309"},"content":" + \" \\t \\t\", expectedFindCommand);","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"jiahui0309"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"jiahui0309"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"jiahui0309"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"jiahui0309"},"content":" // IC with incorrect format","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"jiahui0309"},"content":" assertParseFailure(parser, \"S1234\", IdentityCardNumber.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"jiahui0309"},"content":" // IC with incorrect format and additional arguments","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"jiahui0309"},"content":" assertParseFailure(parser, \"S1234 extra\", IdentityCardNumber.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"jiahui0309"},"content":" // IC with correct format but contains non-alphanumeric characters","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"jiahui0309"},"content":" assertParseFailure(parser, \"S1234$%^\", IdentityCardNumber.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"jiahui0309"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"jiahui0309"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"jiahui0309"},"content":" public void parse_nullArgs_throwsNullPointerException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"jiahui0309"},"content":" assertThrows(NullPointerException.class, () -\u003e parser.parse(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-27"}],"authorContributionMap":{"-":27,"jiahui0309":25}},{"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.Address;","lastModifiedDate":"2017-05-22"},{"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":"-"},"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":"-"},"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"},{"lineNumber":197,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"Jayne1010":1,"-":196}},{"path":"src/test/java/seedu/address/model/person/AgeTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"drustanyjt"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"drustanyjt"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"drustanyjt"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"drustanyjt"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"drustanyjt"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"drustanyjt"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"drustanyjt"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"drustanyjt"},"content":"public class AgeTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"drustanyjt"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"drustanyjt"},"content":" assertThrows(NullPointerException.class, () -\u003e new Age(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"drustanyjt"},"content":" public void constructor_invalidAge_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"drustanyjt"},"content":" String invalidAge \u003d \"\";","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"drustanyjt"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Age(invalidAge));","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"drustanyjt"},"content":" public void isValidAge() {","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"drustanyjt"},"content":" // null age","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"drustanyjt"},"content":" assertThrows(NullPointerException.class, () -\u003e Age.isValidAge(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"drustanyjt"},"content":" // invalid age","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"drustanyjt"},"content":" assertFalse(Age.isValidAge(\"\")); // empty string","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"drustanyjt"},"content":" assertFalse(Age.isValidAge(\" \")); // spaces only","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"drustanyjt"},"content":" assertFalse(Age.isValidAge(\"age\")); // non-numeric","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"drustanyjt"},"content":" assertFalse(Age.isValidAge(\"-1\")); // negative number","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"drustanyjt"},"content":" // valid age","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"drustanyjt"},"content":" assertTrue(Age.isValidAge(\"1\")); // one number","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"drustanyjt"},"content":" assertTrue(Age.isValidAge(\"12\")); // two numbers","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"drustanyjt"},"content":" assertTrue(Age.isValidAge(\"123\")); // three numbers","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"drustanyjt"},"content":" public void equals() {","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"drustanyjt"},"content":" Age age \u003d new Age(\"123\");","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"drustanyjt"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"drustanyjt"},"content":" assertTrue(age.equals(new Age(\"123\")));","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"drustanyjt"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"drustanyjt"},"content":" assertTrue(age.equals(age));","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"drustanyjt"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"drustanyjt"},"content":" assertFalse(age.equals(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"drustanyjt"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"drustanyjt"},"content":" assertFalse(age.equals(5.0f));","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"drustanyjt"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"drustanyjt"},"content":" assertFalse(age.equals(new Age(\"321\")));","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"drustanyjt"},"content":" public void hash() {","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"drustanyjt"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"drustanyjt"},"content":" Age ageCopy \u003d new Age(\"123\");","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"drustanyjt"},"content":" assertEquals(ageCopy.hashCode(), ageCopy.hashCode());","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"drustanyjt"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"drustanyjt"},"content":" Age age \u003d new Age(\"123\");","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"drustanyjt"},"content":" assertEquals(age.hashCode(), age.hashCode());","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"drustanyjt"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"drustanyjt"},"content":" Age differentAge \u003d new Age(\"321\");","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"drustanyjt"},"content":" assertNotEquals(age.hashCode(), differentAge.hashCode());","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"drustanyjt"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"drustanyjt":75}},{"path":"src/test/java/seedu/address/model/person/IdentityCardNumberTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"drustanyjt"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"drustanyjt"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"drustanyjt"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"drustanyjt"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"drustanyjt"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"drustanyjt"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"drustanyjt"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"drustanyjt"},"content":"public class IdentityCardNumberTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"drustanyjt"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"drustanyjt"},"content":" assertThrows(NullPointerException.class, () -\u003e new IdentityCardNumber(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"drustanyjt"},"content":" public void constructor_invalidIdentityCardNumber_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"drustanyjt"},"content":" String invalidIdentityCardNumber \u003d \"\";","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"drustanyjt"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new IdentityCardNumber(invalidIdentityCardNumber));","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"drustanyjt"},"content":" public void isValidIdentityCardNumber() {","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"drustanyjt"},"content":" // null identity card number","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"drustanyjt"},"content":" assertThrows(NullPointerException.class, () -\u003e IdentityCardNumber.isValidIdentityCardNumber(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"drustanyjt"},"content":" // invalid identity card number","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"drustanyjt"},"content":" assertFalse(IdentityCardNumber.isValidIdentityCardNumber(\"\")); // empty string","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"drustanyjt"},"content":" assertFalse(IdentityCardNumber.isValidIdentityCardNumber(\" \")); // spaces only","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"drustanyjt"},"content":" assertFalse(IdentityCardNumber.isValidIdentityCardNumber(\"1234abc\")); // alphanumeric","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"drustanyjt"},"content":" assertFalse(IdentityCardNumber.isValidIdentityCardNumber(\"1234 5678\")); // spaces within digits","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"drustanyjt"},"content":" // valid identity card number","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"drustanyjt"},"content":" assertTrue(IdentityCardNumber.isValidIdentityCardNumber(\"S1234567A\")); // starts with S","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"drustanyjt"},"content":" assertTrue(IdentityCardNumber.isValidIdentityCardNumber(\"T1234567A\")); // starts with T","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"drustanyjt"},"content":" assertTrue(IdentityCardNumber.isValidIdentityCardNumber(\"F1234567A\")); // starts with F","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"drustanyjt"},"content":" assertTrue(IdentityCardNumber.isValidIdentityCardNumber(\"G1234567A\")); // starts with G","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"drustanyjt"},"content":" public void equals() {","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"drustanyjt"},"content":" // remember the format is [STFG][0-9]{7}[A-Z]","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"drustanyjt"},"content":" IdentityCardNumber identityCardNumber \u003d new IdentityCardNumber(\"S1234567A\");","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"drustanyjt"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"drustanyjt"},"content":" IdentityCardNumber identityCardNumberCopy \u003d new IdentityCardNumber(\"S1234567A\");","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"drustanyjt"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"drustanyjt"},"content":" assertTrue(identityCardNumber.equals(identityCardNumber));","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"drustanyjt"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"drustanyjt"},"content":" assertFalse(identityCardNumber.equals(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"drustanyjt"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"drustanyjt"},"content":" assertFalse(identityCardNumber.equals(5.0f));","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"drustanyjt"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"drustanyjt"},"content":" assertFalse(identityCardNumber.equals(new IdentityCardNumber(\"T1234567A\")));","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"drustanyjt"},"content":" public void hash() {","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"drustanyjt"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"drustanyjt"},"content":" IdentityCardNumber identityCardNumber \u003d new IdentityCardNumber(\"S1234567A\");","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"drustanyjt"},"content":" assertEquals(identityCardNumber.hashCode(), identityCardNumber.hashCode());","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"drustanyjt"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"drustanyjt"},"content":" IdentityCardNumber identityCardNumberCopy \u003d new IdentityCardNumber(\"S1234567A\");","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"drustanyjt"},"content":" assertEquals(identityCardNumber.hashCode(), identityCardNumberCopy.hashCode());","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"drustanyjt"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"drustanyjt"},"content":" assertNotEquals(identityCardNumber.hashCode(), new IdentityCardNumber(\"T1234567A\").hashCode());","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"drustanyjt"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"drustanyjt":77}},{"path":"src/test/java/seedu/address/model/person/NoteTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"tengcharmaine"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"tengcharmaine"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"tengcharmaine"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"tengcharmaine"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"tengcharmaine"},"content":"public class NoteTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"tengcharmaine"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"tengcharmaine"},"content":" public void equals() {","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"tengcharmaine"},"content":" Note remark \u003d new Note(\"Hello\");","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"tengcharmaine"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"tengcharmaine"},"content":" assertTrue(remark.equals(remark));","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"tengcharmaine"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"tengcharmaine"},"content":" Note remarkCopy \u003d new Note(remark.value);","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"tengcharmaine"},"content":" assertTrue(remark.equals(remarkCopy));","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"tengcharmaine"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"tengcharmaine"},"content":" assertFalse(remark.equals(1));","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"tengcharmaine"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"tengcharmaine"},"content":" assertFalse(remark.equals(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"tengcharmaine"},"content":" // different remark -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"tengcharmaine"},"content":" Note differentRemark \u003d new Note(\"Bye\");","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"tengcharmaine"},"content":" assertFalse(remark.equals(differentRemark));","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"tengcharmaine"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"tengcharmaine":31}},{"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":"drustanyjt"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-16"},{"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_ADDRESS_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19"},{"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":"-"},"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":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18"},{"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":"-"},"content":" .withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2020-12-18"},{"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":"jiahui0309"},"content":" // different name, all other attributes same -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":43,"author":{"gitId":"jiahui0309"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":45,"author":{"gitId":"jiahui0309"},"content":" // name differs in case, all other attributes same -\u003e returns true","lastModifiedDate":"2024-03-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":"jiahui0309"},"content":" assertTrue(BOB.isSamePerson(editedBob));","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":49,"author":{"gitId":"jiahui0309"},"content":" // name has trailing spaces, all other attributes same -\u003e returns true","lastModifiedDate":"2024-03-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":"jiahui0309"},"content":" assertTrue(BOB.isSamePerson(editedBob));","lastModifiedDate":"2024-03-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":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2018-04-19"},{"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":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":95,"author":{"gitId":"drustanyjt"},"content":" public void hash() {","lastModifiedDate":"2024-03-16"},{"lineNumber":96,"author":{"gitId":"drustanyjt"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":97,"author":{"gitId":"drustanyjt"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":98,"author":{"gitId":"drustanyjt"},"content":" assertEquals(ALICE.hashCode(), aliceCopy.hashCode());","lastModifiedDate":"2024-03-16"},{"lineNumber":99,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":100,"author":{"gitId":"drustanyjt"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":101,"author":{"gitId":"drustanyjt"},"content":" Person bobCopy \u003d new PersonBuilder(BOB).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":102,"author":{"gitId":"drustanyjt"},"content":" assertEquals(BOB.hashCode(), bobCopy.hashCode());","lastModifiedDate":"2024-03-16"},{"lineNumber":103,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":104,"author":{"gitId":"drustanyjt"},"content":" // different name -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":105,"author":{"gitId":"drustanyjt"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":106,"author":{"gitId":"drustanyjt"},"content":" assertNotEquals(ALICE.hashCode(), editedAlice.hashCode());","lastModifiedDate":"2024-03-16"},{"lineNumber":107,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":108,"author":{"gitId":"drustanyjt"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":109,"author":{"gitId":"drustanyjt"},"content":" Person editedAlice2 \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":110,"author":{"gitId":"drustanyjt"},"content":" assertNotEquals(ALICE.hashCode(), editedAlice2.hashCode());","lastModifiedDate":"2024-03-16"},{"lineNumber":111,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":112,"author":{"gitId":"drustanyjt"},"content":" // different email -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":113,"author":{"gitId":"drustanyjt"},"content":" Person editedAlice3 \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":114,"author":{"gitId":"drustanyjt"},"content":" assertNotEquals(ALICE.hashCode(), editedAlice3.hashCode());","lastModifiedDate":"2024-03-16"},{"lineNumber":115,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":116,"author":{"gitId":"drustanyjt"},"content":" // different address -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":117,"author":{"gitId":"drustanyjt"},"content":" Person editedAlice4 \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":118,"author":{"gitId":"drustanyjt"},"content":" assertNotEquals(ALICE.hashCode(), editedAlice4.hashCode());","lastModifiedDate":"2024-03-16"},{"lineNumber":119,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":120,"author":{"gitId":"drustanyjt"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":121,"author":{"gitId":"drustanyjt"},"content":" Person editedAlice5 \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":122,"author":{"gitId":"drustanyjt"},"content":" assertNotEquals(ALICE.hashCode(), editedAlice5.hashCode());","lastModifiedDate":"2024-03-16"},{"lineNumber":123,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":124,"author":{"gitId":"drustanyjt"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":125,"author":{"gitId":"drustanyjt"},"content":" assertNotEquals(ALICE.hashCode(), BOB.hashCode());","lastModifiedDate":"2024-03-16"},{"lineNumber":126,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":127,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2019-02-23"},{"lineNumber":131,"author":{"gitId":"drustanyjt"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", identityCardNumber\u003d\" + ALICE.getIdentityCardNumber()","lastModifiedDate":"2024-03-16"},{"lineNumber":132,"author":{"gitId":"drustanyjt"},"content":" + \", age\u003d\" + ALICE.getAge() + \", sex\u003d\" + ALICE.getSex() + \", address\u003d\" + ALICE.getAddress()","lastModifiedDate":"2024-03-16"},{"lineNumber":133,"author":{"gitId":"drustanyjt"},"content":" + \", note\u003d\" + ALICE.getNote() + \", tags\u003d\" + ALICE.getTags() + \"}\";","lastModifiedDate":"2024-03-16"},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"drustanyjt":38,"-":92,"jiahui0309":6}},{"path":"src/test/java/seedu/address/model/person/SexTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"drustanyjt"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"drustanyjt"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"drustanyjt"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"drustanyjt"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"drustanyjt"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"drustanyjt"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"drustanyjt"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"drustanyjt"},"content":"public class SexTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"drustanyjt"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"drustanyjt"},"content":" assertThrows(NullPointerException.class, () -\u003e new Sex(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"drustanyjt"},"content":" public void constructor_invalidSex_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"drustanyjt"},"content":" String invalidSex \u003d \"\";","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"drustanyjt"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Sex(invalidSex));","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"drustanyjt"},"content":" public void isValidSex() {","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"drustanyjt"},"content":" // null sex","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"drustanyjt"},"content":" assertThrows(NullPointerException.class, () -\u003e Sex.isValidSex(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"drustanyjt"},"content":" // invalid sex","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"drustanyjt"},"content":" assertFalse(Sex.isValidSex(\"\")); // empty string","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"drustanyjt"},"content":" assertFalse(Sex.isValidSex(\" \")); // spaces only","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"drustanyjt"},"content":" assertFalse(Sex.isValidSex(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"drustanyjt"},"content":" assertFalse(Sex.isValidSex(\"peter*\")); // contains non-alphanumeric characters","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"drustanyjt"},"content":" // valid sex","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"drustanyjt"},"content":" assertTrue(Sex.isValidSex(\"M\")); // one character","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"drustanyjt"},"content":" assertTrue(Sex.isValidSex(\"F\")); // one character","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"drustanyjt"},"content":" public void equals() {","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"drustanyjt"},"content":" Sex sex \u003d new Sex(\"M\");","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"drustanyjt"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"drustanyjt"},"content":" assertEquals(sex, new Sex(\"M\"));","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"drustanyjt"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"drustanyjt"},"content":" assertEquals(sex, sex);","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"drustanyjt"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"drustanyjt"},"content":" assertNotEquals(null, sex);","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"drustanyjt"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"drustanyjt"},"content":" assertFalse(sex.equals(5.0f));","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"drustanyjt"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"drustanyjt"},"content":" assertFalse(sex.equals(new Sex(\"F\")));","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"drustanyjt"},"content":" public void hash() {","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"drustanyjt"},"content":" Sex sexMale \u003d new Sex(\"M\");","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"drustanyjt"},"content":" Sex sexMaleCopy \u003d new Sex(\"M\");","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"drustanyjt"},"content":" Sex sexFemale \u003d new Sex(\"F\");","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"drustanyjt"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"drustanyjt"},"content":" assertEquals(sexMale.hashCode(), sexMaleCopy.hashCode());","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"drustanyjt"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"drustanyjt"},"content":" assertNotEquals(sexMale.hashCode(), sexFemale.hashCode());","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"drustanyjt"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"drustanyjt":72}},{"path":"src/test/java/seedu/address/model/util/SampleDataUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"drustanyjt"},"content":"package seedu.address.model.util;","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":3,"author":{"gitId":"drustanyjt"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"drustanyjt"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":6,"author":{"gitId":"drustanyjt"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"drustanyjt"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"drustanyjt"},"content":"public class SampleDataUtilTest {","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"drustanyjt"},"content":" public void getSamplePersonsTest() {","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"drustanyjt"},"content":" Person[] samplePersons \u003d SampleDataUtil.getSamplePersons();","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"drustanyjt"},"content":" // Test the number of sample persons","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"drustanyjt"},"content":" assertTrue(samplePersons.length \u003e 0);","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"drustanyjt"},"content":" public void getSampleAddressBookTest() {","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"drustanyjt"},"content":" assertEquals(SampleDataUtil.getSampleAddressBook().getPersonList().size(), 6);","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"drustanyjt"},"content":" public void getEmptyTagSetTest() {","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"drustanyjt"},"content":" assertEquals(SampleDataUtil.getEmptyTagSet().size(), 0);","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"drustanyjt"},"content":"}","lastModifiedDate":"2024-03-22"}],"authorContributionMap":{"drustanyjt":29}},{"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":"drustanyjt"},"content":"import seedu.address.model.person.Age;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"drustanyjt"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"drustanyjt"},"content":"import seedu.address.model.person.Note;","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"drustanyjt"},"content":"import seedu.address.model.person.Sex;","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"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":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"drustanyjt"},"content":" private static final String INVALID_IDENTITY_CARD_NUMBER \u003d \"Q1234567A\";","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"drustanyjt"},"content":" private static final Integer INVALID_AGE \u003d -12;","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"drustanyjt"},"content":" private static final String INVALID_SEX \u003d \"G\";","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"drustanyjt"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"drustanyjt"},"content":" private static final String VALID_IDENTITY_CARD_NUMBER \u003d BENSON.getIdentityCardNumber().toString();","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"drustanyjt"},"content":" private static final Integer VALID_AGE \u003d BENSON.getAge().value;","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"drustanyjt"},"content":" private static final String VALID_SEX \u003d BENSON.getSex().value;","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"drustanyjt"},"content":" private static final String VALID_NOTE \u003d BENSON.getNote().toString();","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"drustanyjt"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_IDENTITY_CARD_NUMBER, VALID_AGE,","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"drustanyjt"},"content":" VALID_SEX, VALID_ADDRESS, VALID_NOTE, VALID_TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"drustanyjt"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL, VALID_IDENTITY_CARD_NUMBER,","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"drustanyjt"},"content":" VALID_AGE, VALID_SEX, VALID_ADDRESS, VALID_NOTE, VALID_TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","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_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"drustanyjt"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_IDENTITY_CARD_NUMBER, VALID_AGE,","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"drustanyjt"},"content":" VALID_SEX, VALID_ADDRESS, VALID_NOTE, VALID_TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","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_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"drustanyjt"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL, VALID_IDENTITY_CARD_NUMBER,","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"drustanyjt"},"content":" VALID_AGE, VALID_SEX, VALID_ADDRESS, VALID_NOTE, VALID_TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"drustanyjt"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_IDENTITY_CARD_NUMBER, VALID_AGE,","lastModifiedDate":"2024-03-16"},{"lineNumber":90,"author":{"gitId":"drustanyjt"},"content":" VALID_SEX, VALID_ADDRESS, VALID_NOTE, VALID_TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":91,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"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_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"drustanyjt"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null,","lastModifiedDate":"2024-03-16"},{"lineNumber":98,"author":{"gitId":"drustanyjt"},"content":" VALID_IDENTITY_CARD_NUMBER, VALID_AGE, VALID_SEX, VALID_ADDRESS, VALID_NOTE, VALID_TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":99,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"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":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":104,"author":{"gitId":"drustanyjt"},"content":" public void toModelType_invalidIdentityCardNumber_throwsIllegalValueException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":105,"author":{"gitId":"drustanyjt"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":106,"author":{"gitId":"drustanyjt"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_IDENTITY_CARD_NUMBER, VALID_AGE,","lastModifiedDate":"2024-03-16"},{"lineNumber":107,"author":{"gitId":"drustanyjt"},"content":" VALID_SEX, VALID_ADDRESS, VALID_NOTE, VALID_TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":108,"author":{"gitId":"drustanyjt"},"content":" String expectedMessage \u003d IdentityCardNumber.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-16"},{"lineNumber":109,"author":{"gitId":"drustanyjt"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-16"},{"lineNumber":110,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":111,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":112,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":113,"author":{"gitId":"drustanyjt"},"content":" public void toModelType_nullIdentityCardNumber_throwsIllegalValueException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":114,"author":{"gitId":"drustanyjt"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, null,","lastModifiedDate":"2024-03-16"},{"lineNumber":115,"author":{"gitId":"drustanyjt"},"content":" VALID_AGE, VALID_SEX, VALID_ADDRESS, VALID_NOTE, VALID_TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":116,"author":{"gitId":"drustanyjt"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, IdentityCardNumber.class.getSimpleName());","lastModifiedDate":"2024-03-16"},{"lineNumber":117,"author":{"gitId":"drustanyjt"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-16"},{"lineNumber":118,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":119,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":120,"author":{"gitId":"drustanyjt"},"content":" public void toModelType_invalidAge_throwsIllegalValueException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":121,"author":{"gitId":"drustanyjt"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":122,"author":{"gitId":"drustanyjt"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_IDENTITY_CARD_NUMBER, INVALID_AGE,","lastModifiedDate":"2024-03-16"},{"lineNumber":123,"author":{"gitId":"drustanyjt"},"content":" VALID_SEX, VALID_ADDRESS, VALID_NOTE, VALID_TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":124,"author":{"gitId":"drustanyjt"},"content":" String expectedMessage \u003d Age.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-16"},{"lineNumber":125,"author":{"gitId":"drustanyjt"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-16"},{"lineNumber":126,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":127,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":128,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":129,"author":{"gitId":"drustanyjt"},"content":" public void toModelType_nullAge_throwsIllegalValueException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":130,"author":{"gitId":"drustanyjt"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-03-16"},{"lineNumber":131,"author":{"gitId":"drustanyjt"},"content":" VALID_IDENTITY_CARD_NUMBER, null, VALID_SEX, VALID_ADDRESS, VALID_NOTE, VALID_TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":132,"author":{"gitId":"drustanyjt"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Age.class.getSimpleName());","lastModifiedDate":"2024-03-16"},{"lineNumber":133,"author":{"gitId":"drustanyjt"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-16"},{"lineNumber":134,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":135,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":136,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":137,"author":{"gitId":"drustanyjt"},"content":" public void toModelType_invalidSex_throwsIllegalValueException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":138,"author":{"gitId":"drustanyjt"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":139,"author":{"gitId":"drustanyjt"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_IDENTITY_CARD_NUMBER, VALID_AGE,","lastModifiedDate":"2024-03-16"},{"lineNumber":140,"author":{"gitId":"drustanyjt"},"content":" INVALID_SEX, VALID_ADDRESS, VALID_NOTE, VALID_TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":141,"author":{"gitId":"drustanyjt"},"content":" String expectedMessage \u003d Sex.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-16"},{"lineNumber":142,"author":{"gitId":"drustanyjt"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-16"},{"lineNumber":143,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":144,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":145,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":146,"author":{"gitId":"drustanyjt"},"content":" public void toModelType_nullSex_throwsIllegalValueException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":147,"author":{"gitId":"drustanyjt"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-03-16"},{"lineNumber":148,"author":{"gitId":"drustanyjt"},"content":" VALID_IDENTITY_CARD_NUMBER, VALID_AGE, null, VALID_ADDRESS, VALID_NOTE, VALID_TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":149,"author":{"gitId":"drustanyjt"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Sex.class.getSimpleName());","lastModifiedDate":"2024-03-16"},{"lineNumber":150,"author":{"gitId":"drustanyjt"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-16"},{"lineNumber":151,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":152,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":153,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":154,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":155,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":156,"author":{"gitId":"drustanyjt"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_IDENTITY_CARD_NUMBER, VALID_AGE,","lastModifiedDate":"2024-03-16"},{"lineNumber":157,"author":{"gitId":"drustanyjt"},"content":" VALID_SEX, INVALID_ADDRESS, VALID_NOTE, VALID_TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":158,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":159,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":163,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":164,"author":{"gitId":"drustanyjt"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-03-16"},{"lineNumber":165,"author":{"gitId":"drustanyjt"},"content":" VALID_IDENTITY_CARD_NUMBER, VALID_AGE, VALID_SEX, null, VALID_NOTE, VALID_TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":166,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":170,"author":{"gitId":"drustanyjt"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":171,"author":{"gitId":"drustanyjt"},"content":" public void toModelType_nullNote_throwsIllegalValueException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":172,"author":{"gitId":"drustanyjt"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-03-16"},{"lineNumber":173,"author":{"gitId":"drustanyjt"},"content":" VALID_IDENTITY_CARD_NUMBER, VALID_AGE, VALID_SEX, VALID_ADDRESS, null, VALID_TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":174,"author":{"gitId":"drustanyjt"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Note.class.getSimpleName());","lastModifiedDate":"2024-03-16"},{"lineNumber":175,"author":{"gitId":"drustanyjt"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-16"},{"lineNumber":176,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":177,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":178,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":179,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":180,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13"},{"lineNumber":181,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13"},{"lineNumber":182,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":183,"author":{"gitId":"drustanyjt"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_IDENTITY_CARD_NUMBER, VALID_AGE,","lastModifiedDate":"2024-03-16"},{"lineNumber":184,"author":{"gitId":"drustanyjt"},"content":" VALID_SEX, VALID_ADDRESS, VALID_NOTE, invalidTags);","lastModifiedDate":"2024-03-16"},{"lineNumber":185,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":188,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"drustanyjt":88,"-":100}},{"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":"drustanyjt"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"clinicmate.json\"));","lastModifiedDate":"2024-03-18"},{"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":{"drustanyjt":1,"-":122}},{"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.Address;","lastModifiedDate":"2017-12-23"},{"lineNumber":9,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.Age;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-12-23"},{"lineNumber":11,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-21"},{"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":"Jayne1010"},"content":"import seedu.address.model.person.Sex;","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-12-23"},{"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":"-"},"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":"-"},"content":" descriptor.setAddress(person.getAddress());","lastModifiedDate":"2017-06-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" descriptor.setTags(person.getTags());","lastModifiedDate":"2017-06-21"},{"lineNumber":43,"author":{"gitId":"Jayne1010"},"content":" descriptor.setSex(person.getSex());","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"Jayne1010"},"content":" descriptor.setAge(person.getAge());","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"Jayne1010"},"content":" descriptor.setIC(person.getIdentityCardNumber());","lastModifiedDate":"2024-03-21"},{"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":"-"},"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":"Jayne1010"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"Jayne1010"},"content":" * Sets the {@code Age} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"Jayne1010"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"Jayne1010"},"content":" public EditPersonDescriptorBuilder withAge(int age) {","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"Jayne1010"},"content":" descriptor.setAge(new Age(age));","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"Jayne1010"},"content":" return this;","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"Jayne1010"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"Jayne1010"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"Jayne1010"},"content":" * Sets the {@code IdentityCardNumber} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-21"},{"lineNumber":90,"author":{"gitId":"Jayne1010"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":91,"author":{"gitId":"Jayne1010"},"content":" public EditPersonDescriptorBuilder withIC(String ic) {","lastModifiedDate":"2024-03-21"},{"lineNumber":92,"author":{"gitId":"Jayne1010"},"content":" descriptor.setIC(new IdentityCardNumber(ic));","lastModifiedDate":"2024-03-21"},{"lineNumber":93,"author":{"gitId":"Jayne1010"},"content":" return this;","lastModifiedDate":"2024-03-21"},{"lineNumber":94,"author":{"gitId":"Jayne1010"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":95,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":96,"author":{"gitId":"Jayne1010"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":97,"author":{"gitId":"Jayne1010"},"content":" * Sets the {@code Sex} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-21"},{"lineNumber":98,"author":{"gitId":"Jayne1010"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":99,"author":{"gitId":"Jayne1010"},"content":" public EditPersonDescriptorBuilder withSex(String sex) {","lastModifiedDate":"2024-03-21"},{"lineNumber":100,"author":{"gitId":"Jayne1010"},"content":" descriptor.setSex(new Sex(sex));","lastModifiedDate":"2024-03-21"},{"lineNumber":101,"author":{"gitId":"Jayne1010"},"content":" return this;","lastModifiedDate":"2024-03-21"},{"lineNumber":102,"author":{"gitId":"Jayne1010"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":103,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":104,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":105,"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":106,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":107,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15"},{"lineNumber":109,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2017-12-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2017-12-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05"},{"lineNumber":115,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"},{"lineNumber":118,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"Jayne1010":31,"-":87}},{"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":"drustanyjt"},"content":"import seedu.address.model.person.Age;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18"},{"lineNumber":9,"author":{"gitId":"drustanyjt"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-01-18"},{"lineNumber":11,"author":{"gitId":"drustanyjt"},"content":"import seedu.address.model.person.Note;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-04-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-01-18"},{"lineNumber":14,"author":{"gitId":"drustanyjt"},"content":"import seedu.address.model.person.Sex;","lastModifiedDate":"2024-03-16"},{"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":"drustanyjt"},"content":" public static final String DEFAULT_IDENTITY_CARD_NUMBER \u003d \"S1234567A\";","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"drustanyjt"},"content":" public static final Integer DEFAULT_AGE \u003d 20;","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"drustanyjt"},"content":" public static final String DEFAULT_SEX \u003d \"F\";","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05"},{"lineNumber":30,"author":{"gitId":"drustanyjt"},"content":" public static final String DEFAULT_NOTE \u003d \"Hypertensive Crisis with last reading of 203/114\";","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":35,"author":{"gitId":"drustanyjt"},"content":" private IdentityCardNumber identityCardNumber;","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"drustanyjt"},"content":" private Age age;","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"drustanyjt"},"content":" private Sex sex;","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20"},{"lineNumber":39,"author":{"gitId":"drustanyjt"},"content":" private Note note;","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20"},{"lineNumber":49,"author":{"gitId":"drustanyjt"},"content":" identityCardNumber \u003d new IdentityCardNumber(DEFAULT_IDENTITY_CARD_NUMBER);","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"drustanyjt"},"content":" age \u003d new Age(DEFAULT_AGE);","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"drustanyjt"},"content":" sex \u003d new Sex(DEFAULT_SEX);","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20"},{"lineNumber":53,"author":{"gitId":"drustanyjt"},"content":" note \u003d new Note(DEFAULT_NOTE);","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11"},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10"},{"lineNumber":61,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20"},{"lineNumber":64,"author":{"gitId":"drustanyjt"},"content":" identityCardNumber \u003d personToCopy.getIdentityCardNumber();","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"drustanyjt"},"content":" age \u003d personToCopy.getAge();","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"drustanyjt"},"content":" sex \u003d personToCopy.getSex();","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20"},{"lineNumber":68,"author":{"gitId":"drustanyjt"},"content":" note \u003d personToCopy.getNote();","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20"},{"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":"2017-07-26"},{"lineNumber":81,"author":{"gitId":"drustanyjt"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":83,"author":{"gitId":"drustanyjt"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"drustanyjt"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"drustanyjt"},"content":" return this;","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":87,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":88,"author":{"gitId":"drustanyjt"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":89,"author":{"gitId":"drustanyjt"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-16"},{"lineNumber":90,"author":{"gitId":"drustanyjt"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":91,"author":{"gitId":"drustanyjt"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2024-03-16"},{"lineNumber":92,"author":{"gitId":"drustanyjt"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2024-03-16"},{"lineNumber":93,"author":{"gitId":"drustanyjt"},"content":" return this;","lastModifiedDate":"2024-03-16"},{"lineNumber":94,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":95,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":96,"author":{"gitId":"drustanyjt"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":97,"author":{"gitId":"drustanyjt"},"content":" * Sets the {@code IdentityCardNumber} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-16"},{"lineNumber":98,"author":{"gitId":"drustanyjt"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":99,"author":{"gitId":"drustanyjt"},"content":" public PersonBuilder withIdentityCardNumber(String identityCardNumber) {","lastModifiedDate":"2024-03-16"},{"lineNumber":100,"author":{"gitId":"drustanyjt"},"content":" this.identityCardNumber \u003d new IdentityCardNumber(identityCardNumber);","lastModifiedDate":"2024-03-16"},{"lineNumber":101,"author":{"gitId":"drustanyjt"},"content":" return this;","lastModifiedDate":"2024-03-16"},{"lineNumber":102,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":103,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":104,"author":{"gitId":"drustanyjt"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":105,"author":{"gitId":"drustanyjt"},"content":" * Sets the {@code Age} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-16"},{"lineNumber":106,"author":{"gitId":"drustanyjt"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":107,"author":{"gitId":"drustanyjt"},"content":" public PersonBuilder withAge(int age) {","lastModifiedDate":"2024-03-16"},{"lineNumber":108,"author":{"gitId":"drustanyjt"},"content":" this.age \u003d new Age(age);","lastModifiedDate":"2024-03-16"},{"lineNumber":109,"author":{"gitId":"drustanyjt"},"content":" return this;","lastModifiedDate":"2024-03-16"},{"lineNumber":110,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":111,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":112,"author":{"gitId":"drustanyjt"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":113,"author":{"gitId":"drustanyjt"},"content":" * Sets the {@code Age} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-16"},{"lineNumber":114,"author":{"gitId":"drustanyjt"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":115,"author":{"gitId":"drustanyjt"},"content":" public PersonBuilder withAge(String age) {","lastModifiedDate":"2024-03-16"},{"lineNumber":116,"author":{"gitId":"drustanyjt"},"content":" this.age \u003d new Age(age);","lastModifiedDate":"2024-03-16"},{"lineNumber":117,"author":{"gitId":"drustanyjt"},"content":" return this;","lastModifiedDate":"2024-03-16"},{"lineNumber":118,"author":{"gitId":"drustanyjt"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":119,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":120,"author":{"gitId":"drustanyjt"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":121,"author":{"gitId":"drustanyjt"},"content":" * Sets the {@code Sex} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-16"},{"lineNumber":122,"author":{"gitId":"drustanyjt"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":123,"author":{"gitId":"drustanyjt"},"content":" public PersonBuilder withSex(String sex) {","lastModifiedDate":"2024-03-16"},{"lineNumber":124,"author":{"gitId":"drustanyjt"},"content":" this.sex \u003d new Sex(sex);","lastModifiedDate":"2024-03-16"},{"lineNumber":125,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":128,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":129,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":130,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":131,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":132,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20"},{"lineNumber":133,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":136,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":137,"author":{"gitId":"drustanyjt"},"content":" * Sets the {@code Note} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-16"},{"lineNumber":138,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":139,"author":{"gitId":"drustanyjt"},"content":" public PersonBuilder withNote(String note) {","lastModifiedDate":"2024-03-16"},{"lineNumber":140,"author":{"gitId":"drustanyjt"},"content":" this.note \u003d new Note(note);","lastModifiedDate":"2024-03-16"},{"lineNumber":141,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":144,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":145,"author":{"gitId":"drustanyjt"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2024-03-16"},{"lineNumber":146,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":147,"author":{"gitId":"drustanyjt"},"content":" public PersonBuilder withTags(String ... tags) {","lastModifiedDate":"2024-03-16"},{"lineNumber":148,"author":{"gitId":"drustanyjt"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2024-03-16"},{"lineNumber":149,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":152,"author":{"gitId":"drustanyjt"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":153,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05"},{"lineNumber":154,"author":{"gitId":"drustanyjt"},"content":" return new Person(name, phone, email, identityCardNumber, age, sex, address, note, tags);","lastModifiedDate":"2024-03-16"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":157,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03"}],"authorContributionMap":{"drustanyjt":71,"-":86}},{"path":"src/test/java/seedu/address/testutil/TypicalIdentityPredicate.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Jayne1010"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.IdentityCardNumber;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"Jayne1010"},"content":"import seedu.address.model.person.IdentityCardNumberMatchesPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"Jayne1010"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"Jayne1010"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"Jayne1010"},"content":" * A utility class containing a list of {@code IdentityCardNumberMatchesPredicate} objects to be used in tests.","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"Jayne1010"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"Jayne1010"},"content":"public class TypicalIdentityPredicate {","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"Jayne1010"},"content":" public static final IdentityCardNumberMatchesPredicate IC_AMY \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"Jayne1010"},"content":" new IdentityCardNumberMatchesPredicate(new IdentityCardNumber(\"S1234567A\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"Jayne1010"},"content":" public static final IdentityCardNumberMatchesPredicate IC_BOB \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"Jayne1010"},"content":" new IdentityCardNumberMatchesPredicate(new IdentityCardNumber(\"S1234567B\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"Jayne1010"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"Jayne1010":14}},{"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":" public static final Person ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2018-01-10"},{"lineNumber":26,"author":{"gitId":"-"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2017-04-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2018-04-19"},{"lineNumber":28,"author":{"gitId":"drustanyjt"},"content":" .withIdentityCardNumber(\"S1234567A\").withAge(\"30\").withSex(\"F\")","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"drustanyjt"},"content":" .withNote(\"No medical conditions\")","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" .withTags(\"friends\").build();","lastModifiedDate":"2016-09-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10"},{"lineNumber":32,"author":{"gitId":"-"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2017-09-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2017-04-05"},{"lineNumber":34,"author":{"gitId":"drustanyjt"},"content":" .withIdentityCardNumber(\"S1234567B\").withAge(31).withSex(\"M\")","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"drustanyjt"},"content":" .withNote(\"Asthma\")","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" .withTags(\"owesMoney\", \"friends\").build();","lastModifiedDate":"2016-09-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2018-01-10"},{"lineNumber":38,"author":{"gitId":"drustanyjt"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\")","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"drustanyjt"},"content":" .withIdentityCardNumber(\"S1234567C\").withAge(\"32\").withSex(\"M\")","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"drustanyjt"},"content":" .withNote(\"Diabetes\")","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"drustanyjt"},"content":" .build();","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2018-01-10"},{"lineNumber":43,"author":{"gitId":"drustanyjt"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\")","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"drustanyjt"},"content":" .withIdentityCardNumber(\"S1234567D\").withAge(33).withSex(\"M\")","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"drustanyjt"},"content":" .withNote(\"No medical conditions\")","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"drustanyjt"},"content":" .withTags(\"friends\").build();","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2018-01-10"},{"lineNumber":48,"author":{"gitId":"drustanyjt"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\")","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"drustanyjt"},"content":" .withIdentityCardNumber(\"S1234567E\").withAge(\"34\").withSex(\"F\")","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"drustanyjt"},"content":" .withNote(\"High blood pressure\")","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"drustanyjt"},"content":" .build();","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2018-01-10"},{"lineNumber":53,"author":{"gitId":"drustanyjt"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\")","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"drustanyjt"},"content":" .withIdentityCardNumber(\"S1234567F\").withAge(35).withSex(\"F\")","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"drustanyjt"},"content":" .withNote(\"No medical conditions\")","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"drustanyjt"},"content":" .build();","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2018-01-10"},{"lineNumber":58,"author":{"gitId":"drustanyjt"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\")","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"drustanyjt"},"content":" .withIdentityCardNumber(\"S1234567G\").withAge(\"36\").withSex(\"M\")","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"drustanyjt"},"content":" .withNote(\"Asthma\")","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"drustanyjt"},"content":" .build();","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2018-01-10"},{"lineNumber":63,"author":{"gitId":"drustanyjt"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\")","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"drustanyjt"},"content":" .withIdentityCardNumber(\"S1234567H\").withAge(\"37\").withSex(\"M\")","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"drustanyjt"},"content":" .withNote(\"No medical conditions\")","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"drustanyjt"},"content":" .build();","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2018-01-10"},{"lineNumber":68,"author":{"gitId":"drustanyjt"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\")","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"drustanyjt"},"content":" .withIdentityCardNumber(\"S1234567I\").withAge(\"38\").withSex(\"F\")","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"drustanyjt"},"content":" .withNote(\"Diabetes\")","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"drustanyjt"},"content":" .build();","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2018-01-10"},{"lineNumber":75,"author":{"gitId":"drustanyjt"},"content":" .withAge(\"20\").withSex(\"F\").withIdentityCardNumber(\"S1234567A\").withEmail(VALID_EMAIL_AMY)","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"drustanyjt"},"content":" .withAddress(VALID_ADDRESS_AMY).withTags(VALID_TAG_FRIEND).withNote(\"Heavy smoker, 3 packs a day\")","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2017-09-21"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"drustanyjt"},"content":" .withAge(\"21\").withSex(\"M\").withIdentityCardNumber(\"S1234567B\").withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"drustanyjt"},"content":" .withAddress(VALID_ADDRESS_BOB).withNote(\"Torn ACL multiple times\")","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"drustanyjt"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-03-16"},{"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":{"drustanyjt":37,"-":64}}] diff --git a/AY2324S2-CS2103T-F14-2_tp_master/commits.json b/AY2324S2-CS2103T-F14-2_tp_master/commits.json index 892347fd..e8955f60 100644 --- a/AY2324S2-CS2103T-F14-2_tp_master/commits.json +++ b/AY2324S2-CS2103T-F14-2_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"drustanyjt":[{"date":"2024-03-03","commitResults":[{"hash":"e054773e7feb575fd00e7ac063510ae83d2c94d1","isMergeCommit":false,"messageTitle":"Update sitewide settings with product name and new logo","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":0}}},{"hash":"6b2d0514ccfe445f72ff94a09eff0e80b023a14c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into docs-sitewide-settings","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"3da4848193c31724810f138e9ca4ecc699b5622c","isMergeCommit":true,"messageTitle":"Merge pull request #20 from drustanyjt/docs-sitewide-settings","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-04","commitResults":[{"hash":"863ee95c9fdb7c1212b802c562b4d0c47b9c75d0","isMergeCommit":false,"messageTitle":"Add medical terms in meeting notes to glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":2}}},{"hash":"8490e739aea7f07a72a320c62382da7316e982d5","isMergeCommit":false,"messageTitle":"Fix whitespace errors","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-05","commitResults":[{"hash":"3936397f7fb177dbeb1099057ef0dd76c36f00de","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-06","commitResults":[{"hash":"467d54beba603f8ee15c03f015b90ec4eadc35fa","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"Added value proposition and user profile.","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":3}}}]},{"date":"2024-03-15","commitResults":[{"hash":"9b3c1bc527279a3dbc61d1fbc343e5f74c11dd4a","isMergeCommit":false,"messageTitle":"Update models to support new Person fields","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":306,"deletions":11}}}]},{"date":"2024-03-16","commitResults":[{"hash":"d6df9b2962221f3fc13fce1a89e015fe9b593b6f","isMergeCommit":false,"messageTitle":"Fix support for using the new Person constructor","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":134,"deletions":39},"test-code":{"insertions":164,"deletions":42}}},{"hash":"90a1a5e75fde24f143b3b5378ff6a59ec1d4df26","isMergeCommit":false,"messageTitle":"Fix line formatting issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":283,"deletions":283}}},{"hash":"9348f3b6d45023bb0d5cf0204d918548c6d78c75","isMergeCommit":false,"messageTitle":"Fix line too long for checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"6ff0db7e1787cf29bb66f08f7113ec6e9d112e87","isMergeCommit":false,"messageTitle":"Add test coverage for new Person fields","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":548,"deletions":228}}},{"hash":"5b7b1918e150a30060cc1fe87d8c58b9dc9bb2b5","isMergeCommit":false,"messageTitle":"Replace CRLF with LF","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":325,"deletions":325}}},{"hash":"fe3baa9236e2f4c21a40ff41e1f311acab6e8b14","isMergeCommit":false,"messageTitle":"Fix message not showing some fields from a Person","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":5}}}]},{"date":"2024-03-18","commitResults":[{"hash":"216b72757c6dbcaa6cfc41e8d1bb475a09e7a1ec","isMergeCommit":false,"messageTitle":"Update icon in UI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"test-code":{"insertions":1,"deletions":1}}},{"hash":"bc2abd9ebf106d1d87120297ec67a2c3e8293ba7","isMergeCommit":false,"messageTitle":"Re-rename test file","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":1,"deletions":1}}},{"hash":"72967a3b3fb6f77f78149a53deed55cb81f147da","isMergeCommit":false,"messageTitle":"Change some references of addresbook to clinicmate","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"other":{"insertions":72,"deletions":72},"docs":{"insertions":2,"deletions":2},"test-code":{"insertions":1,"deletions":1}}},{"hash":"3535c1d1efb981a6b7206f4fb6118b7aba668bc7","isMergeCommit":false,"messageTitle":"Change CRLF to LF","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":72,"deletions":72}}}]},{"date":"2024-03-19","commitResults":[{"hash":"a3fd086dc37a1c7fbcfc25baa770d83a9b894458","isMergeCommit":true,"messageTitle":"Merge pull request #63 from drustanyjt/fix-phonetest","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"26394e6a65ca6108a4efd408c5c6275b828eb252","isMergeCommit":true,"messageTitle":"Merge pull request #66 from Jayne1010/UpdateUGv1.2b","messageBody":"Update user guide for features v1.2b","fileTypesAndContributionMap":{}},{"hash":"29f201eb54951eeb0b7433e806d5398802bdffb7","isMergeCommit":false,"messageTitle":"Add new attribute classes and remove references to Tag","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":8}}},{"hash":"5bb0e9d0ccbd06c8dc55515d6a63f660f22b50d0","isMergeCommit":false,"messageTitle":"Revert \"Update Edit Command to edit with Person\u0027s IC\"","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":32,"deletions":88},"docs":{"insertions":1,"deletions":0}}},{"hash":"10df923a08f07ec97ba9a32fb1a7515d1a3f5de5","isMergeCommit":true,"messageTitle":"Merge pull request #80 from AY2324S2-CS2103T-F14-2/revert-65-UpdateEditCommandv1.2b","messageBody":"Revert \"Update Edit Command to edit with Person\u0027s IC\"","fileTypesAndContributionMap":{}},{"hash":"e38345b1184de88826da2b88bb491a96341fedee","isMergeCommit":true,"messageTitle":"Merge pull request #85 from AY2324S2-CS2103T-F14-2/drustanyjt-patch-1","messageBody":"Fix typo in pre-release names","fileTypesAndContributionMap":{}},{"hash":"e53d42cb9636c21071a91e61bdb0934b663ee733","isMergeCommit":false,"messageTitle":"Add google form link and update release link","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":1}}},{"hash":"4de861628d8e885464367a820e2f607580dae3a9","isMergeCommit":true,"messageTitle":"Merge pull request #88 from drustanyjt/drus-gform","messageBody":"Add google form link and update release link","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"d579361ce799668289ca6390a2e5f621d264ff59","isMergeCommit":true,"messageTitle":"Merge pull request #89 from tengcharmaine/sex_field_bug","messageBody":"","tags":["v1.2b"],"fileTypesAndContributionMap":{}}]},{"date":"2024-03-22","commitResults":[{"hash":"33ccf1040274465a973c6809afb5e589bbe2b6bd","isMergeCommit":false,"messageTitle":"Change sample data to have no tags","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":27,"deletions":22},"test-code":{"insertions":29,"deletions":0}}}]}],"Jayne1010":[{"date":"2024-03-05","commitResults":[{"hash":"5c3b512b4437b7dbc40a12f81d2a5f2c4043d612","isMergeCommit":false,"messageTitle":"Update user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":34,"deletions":58}}},{"hash":"474dc32baa8f98a1a8bcbf3df39a6e78e83f1d2d","isMergeCommit":false,"messageTitle":"Update UG with minor typo fix","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"8a95434394c4826dbd915f7d99bdb060ed2ea7aa","isMergeCommit":false,"messageTitle":"Update UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}},{"hash":"bccedcb53f202203ade98150652a325be001ba04","isMergeCommit":false,"messageTitle":"Update UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"80c59a32e3f398301150979761ec4f763903e5f0","isMergeCommit":false,"messageTitle":"Update UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"ae0360ebd33544f6c1b1b14bc94e972a998f48f5","isMergeCommit":false,"messageTitle":"Update UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":1}}},{"hash":"25b35b33296660a59dfebfe6c7c75df99957da4f","isMergeCommit":false,"messageTitle":"Update DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":34,"deletions":58}}},{"hash":"e6ef73be1f8c8973daa5432b782e0115a35d3945","isMergeCommit":false,"messageTitle":"Update DG v1.1","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":9}}},{"hash":"8ef12faa0943d2dfcd686f934b30f37ee98b8ad4","isMergeCommit":false,"messageTitle":"Update DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}},{"hash":"a848745810b23913f65038b592963a9ba03b4d72","isMergeCommit":false,"messageTitle":"Update DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}},{"hash":"62eceedef59ac84b48a8dfdf17b5e857dfaf23b7","isMergeCommit":false,"messageTitle":"Update DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":1}}},{"hash":"90d19984cb50ddf3faa74ac2182f8724cf041efb","isMergeCommit":true,"messageTitle":"Merge pull request #26 from Jayne1010/Updated-DG-v1.1","messageBody":"Update dg v1.1","fileTypesAndContributionMap":{}},{"hash":"c9d0294eb50bbd3d051ef812fc30db401db1a632","isMergeCommit":false,"messageTitle":"Revert \"Update dg v1.1\"","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":67,"deletions":46}}},{"hash":"44d87616ec6b8d546d083f15578cb65e6fa586fb","isMergeCommit":true,"messageTitle":"Merge pull request #30 from AY2324S2-CS2103T-F14-2/revert-26-Updated-DG-v1.1","messageBody":"Revert \"Update dg v1.1\"","fileTypesAndContributionMap":{}},{"hash":"46d4d35070797256cbf1a01fb7a6bb5cb07954a2","isMergeCommit":false,"messageTitle":"Update UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"349d3530bc407f12ef6316292df677f7da1ea3ed","isMergeCommit":false,"messageTitle":"Update UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-17","commitResults":[{"hash":"e7f6c808b940a0a5390acbc01033aeeeef77cbd9","isMergeCommit":false,"messageTitle":"Update Add Command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":82,"deletions":67},"other":{"insertions":1,"deletions":1},"test-code":{"insertions":9,"deletions":14}}},{"hash":"4a73cf3ede2e956c8dd997ab9bcb35674c40097e","isMergeCommit":false,"messageTitle":"Update Add Command to add more Person\u0027s parameters","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":18,"deletions":5}}},{"hash":"d9dd3a2450670ae972f69520634b5a7de98503ea","isMergeCommit":false,"messageTitle":"Fix style: General style improvements","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":33,"deletions":7}}},{"hash":"1432dd9f55d45c5b22611d4b3ca6f29f48296dd4","isMergeCommit":false,"messageTitle":"Fix style: General style improvements","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":17,"deletions":7}}},{"hash":"713b587907b03b5b815d55a9623da1419dcf9333","isMergeCommit":false,"messageTitle":"Fix style: General style improvements","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":2}}},{"hash":"116d1a441c736c1bd2b93c3a4cdbae8d8e1b740c","isMergeCommit":false,"messageTitle":"Fix style: General style improvements","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":2}}},{"hash":"defb309d5fc0c8ce6a000cfd2426b4b1cbdc811e","isMergeCommit":false,"messageTitle":"Fix style: General style improvements","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":29,"deletions":30},"test-code":{"insertions":14,"deletions":9}}},{"hash":"c06824bf8da1476b28ac4e629c59e8aa1a1d6bc0","isMergeCommit":false,"messageTitle":"Fix style: General style improvements","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":2}}},{"hash":"f9a36cbb78b0a4e360cc66370dff542601aaebaa","isMergeCommit":false,"messageTitle":"Fix style: General style improvements","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"01efc05263cab20b8e01b9148cb39d063bc9922c","isMergeCommit":false,"messageTitle":"Fix style: General style improvements","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":21}}},{"hash":"3aabcf15f4e2a9b3b52e6b38a298fa3cd7c30c68","isMergeCommit":true,"messageTitle":"Merge pull request #53 from Jayne1010/UpdateAdd1.2","messageBody":"Update add1.2","fileTypesAndContributionMap":{}}]},{"date":"2024-03-18","commitResults":[{"hash":"6e19572844da113e05ffb588e34fa8986d83104f","isMergeCommit":false,"messageTitle":"Update Edit Command to edit with Person\u0027s IC","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":83,"deletions":41}}},{"hash":"7e602cdfbb9e118ed4f78cb152db3b053fb0b452","isMergeCommit":false,"messageTitle":"Update Edit Command to edit with Person\u0027s IC","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":17,"deletions":3}}}]},{"date":"2024-03-19","commitResults":[{"hash":"fa2cba4fce2677a798273f4b31a22593ee22064f","isMergeCommit":false,"messageTitle":"Update user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":5}}},{"hash":"c54256525520c61e3a178a2a75087b06de7be70f","isMergeCommit":false,"messageTitle":"Update developer guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}},{"hash":"a8d1265d5c930e30a8598939de94e196bc3ed4fc","isMergeCommit":false,"messageTitle":"Style enhancement","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"docs":{"insertions":0,"deletions":1}}}]},{"date":"2024-03-20","commitResults":[{"hash":"d4ba08a423ebafb5103291e7dad87f57d1b3a6ad","isMergeCommit":false,"messageTitle":"Add UML diagram for add command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":70,"deletions":0}}},{"hash":"2096e22eb9e1d39b661e12a03bd404cb16e1fc18","isMergeCommit":false,"messageTitle":"Add UML diagram for edit command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":70,"deletions":0}}},{"hash":"e154c8199b8561dc0be88a7ad488722f964d8148","isMergeCommit":false,"messageTitle":"Add test cases for add command","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":89,"deletions":42}}},{"hash":"00246e93044baff1c2f670cb393064b8be17fc0c","isMergeCommit":false,"messageTitle":"Fix style","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":51,"deletions":7}}},{"hash":"138e2e3044c031c6e6cf3427974de8da334181d9","isMergeCommit":false,"messageTitle":"Fix style","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"69621e5f881ea459ba0f0ab2a59fe5356bebfd32","isMergeCommit":true,"messageTitle":"Merge pull request #65 from Jayne1010/UpdateEditCommandv1.2b","messageBody":"Update Edit Command to edit with Person\u0027s IC","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"4c97d2a44827ff30141e9ca40e4f17f45fbc6d9b","isMergeCommit":false,"messageTitle":"Update edit command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":60,"deletions":22}}},{"hash":"40c648e33a264ed3de5d524017377fa53ad236b5","isMergeCommit":false,"messageTitle":"Update edit command parser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":29,"deletions":12}}},{"hash":"f385afd8123f50ad2220237d635356af7a304d62","isMergeCommit":false,"messageTitle":"Update edit command test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":113,"deletions":136}}},{"hash":"e18e604f267059d574e1410568c67e1e95d3afb3","isMergeCommit":false,"messageTitle":"Add new class","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":0}}},{"hash":"f92949ae64248ea5d5d29a4aea6cb27b33fb156c","isMergeCommit":false,"messageTitle":"Update edit command test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":41,"deletions":1}}},{"hash":"eddc320fc5092d4eb83123feb73809aa2bf01566","isMergeCommit":false,"messageTitle":"Update edit command test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":16,"deletions":2}}},{"hash":"f8576e93b3e4a389cd1ff104b8534c9582a76505","isMergeCommit":false,"messageTitle":"Update edit command test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":28,"deletions":7}}},{"hash":"3490671e09e40f99750307d2d0ec89943adad54f","isMergeCommit":false,"messageTitle":"Update edit command","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":1}}},{"hash":"742dd0511add81875621f7342a7168fd1e40b292","isMergeCommit":false,"messageTitle":"Update edit command","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-22","commitResults":[{"hash":"518a4d97cb1f0c4b05df5e4b8a6e1c7b98a5eda1","isMergeCommit":false,"messageTitle":"Fix typo","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"76d48aac5243c5b628715cb72c1bb8d9baa4082d","isMergeCommit":true,"messageTitle":"Merge pull request #93 from Jayne1010/UpdateEditCommandTestv1.2b","messageBody":"Update edit command test","fileTypesAndContributionMap":{}},{"hash":"a62d3e45fd226189eba4c249086173ee4be4077e","isMergeCommit":true,"messageTitle":"Merge pull request #94 from drustanyjt/drus-update-sample","messageBody":"Remove tags from sample data","fileTypesAndContributionMap":{}}]}],"tengcharmaine":[{"date":"2024-03-03","commitResults":[{"hash":"6adfcc34a784f13ffc31553c6973dadbb80cac88","isMergeCommit":false,"messageTitle":"Update Ui mockup png to the new Ui mockup in readme","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"1486ea0ef2a180512c5976509554d75ef28089dd","isMergeCommit":false,"messageTitle":"Update readme docs for Clinic Mate from original docs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":10}}},{"hash":"6e06e4ea3678473438cca55efac61b95ed58ecbf","isMergeCommit":false,"messageTitle":"Fix errors from github checks","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"19bf42edea40495ac4119f43eb631d4c62b37073","isMergeCommit":false,"messageTitle":"Update CI status badge to reflect build status of teams repo","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"633a23989c72c88bc8f67cdfd1334c35eb009fa0","isMergeCommit":false,"messageTitle":"Update non-functional requirements (NFRs) to developers guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":5}}},{"hash":"6e1c8f60919f274804a665135aa7ee90348f57b0","isMergeCommit":true,"messageTitle":"Merge pull request #24 from tengcharmaine/update-readme","messageBody":"Update Project README","fileTypesAndContributionMap":{}},{"hash":"922bfe9ea876da86da32caebe1932565f064f5b4","isMergeCommit":true,"messageTitle":"Merge pull request #25 from tengcharmaine/update_NFR","messageBody":"Update non-functional requirements (NFRs) to developers guide","fileTypesAndContributionMap":{}}]},{"date":"2024-03-05","commitResults":[{"hash":"46d097d2b310c08dd298e62dc545ff12a54644de","isMergeCommit":true,"messageTitle":"Merge pull request #27 from Jayne1010/Updated-UG-v1.1","messageBody":"Update ug v1.1","fileTypesAndContributionMap":{}}]},{"date":"2024-03-06","commitResults":[{"hash":"3f6d958b873330dc5407e8bb3e43e7334e3e1aa6","isMergeCommit":false,"messageTitle":"Update Quick Start section of UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}}]},{"date":"2024-03-16","commitResults":[{"hash":"0fe36078122ac2a61d7c89cdf4788d23bdec8e40","isMergeCommit":false,"messageTitle":"Create a new AddNoteCommand class for the new addnote functionality","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":35,"deletions":0}}},{"hash":"665392252e1bf9f57f32851c3b3d129c5456494c","isMergeCommit":false,"messageTitle":"Start addnote from scratch again to prevent mixup","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":24}}},{"hash":"fba4dade8a26169a869463e43b0054dc894086bb","isMergeCommit":false,"messageTitle":"Update main body of the addnote command class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":2}}},{"hash":"cdf552de2e734860f1806a08f8c948db40404c0a","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/tengcharmaine/tp into addnote","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"47fef0bc3dd278ca979e3221291cfdf8b93bfcb6","isMergeCommit":false,"messageTitle":"Update addressbookparser to include addnote command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":9}}},{"hash":"f064efd928120ca7e3f14ca4cf19b8b11ced1735","isMergeCommit":false,"messageTitle":"Add prefix for the note section of the addnotecommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0}}},{"hash":"2ff70274d59ddbb96029423577e0edc49be78132","isMergeCommit":false,"messageTitle":"Add test file to test the functionality of the addnotecommand","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":24,"deletions":0}}},{"hash":"6ae46c777b2f1815a580b357825e42e710dfc2ce","isMergeCommit":false,"messageTitle":"Update addressbookparsertest file to include the parsing of the addnote command","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":8}}},{"hash":"0aa30a47054fa71b0e61a5b71517c46094e320bc","isMergeCommit":false,"messageTitle":"Create parser for addnotecommand to parse addnote command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":72,"deletions":3}}},{"hash":"b953704fc5e36e73e89303fadb54bd1db3404414","isMergeCommit":false,"messageTitle":"Add more tests for addnotecommandtest to check if add note command works","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":37,"deletions":6}}},{"hash":"19c02c9a4c8c6f0ae5a077154ded5e502a1de9d3","isMergeCommit":false,"messageTitle":"Update addressbookparsertest to check that parsing works","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":1}}},{"hash":"e92c6a711c6103d786f4ded3b22354c9ee288fec","isMergeCommit":false,"messageTitle":"Create a parser test for addnotecommandparser","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":42,"deletions":0}}},{"hash":"9b401bddb29969bf74af3ade8e3bfcf4c00301c1","isMergeCommit":false,"messageTitle":"Update comments to fit the class name","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":4}}},{"hash":"5dd57bd198941b8960523b4e5546c701825a35c4","isMergeCommit":false,"messageTitle":"Update names of variables to match new names","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":4}}},{"hash":"50f08d92eb32fdc0b3194006629dc76aee34db49","isMergeCommit":false,"messageTitle":"Update the type of note to all relevant files and create a test for note class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":3},"test-code":{"insertions":48,"deletions":9}}},{"hash":"18e48a708961bdd57d13a098c30dbb99ad7a9ae2","isMergeCommit":false,"messageTitle":"Update code for the ui to show note in the main window","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":0}}},{"hash":"59c2973f81bf759822ae322d8df6e1d048e0258d","isMergeCommit":false,"messageTitle":"Update code for ui to work properly","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0}}},{"hash":"a8cda1b083ae0911b9d21f4c550a6d8aea2377c0","isMergeCommit":false,"messageTitle":"Update addnotecommand class to have the correct person format","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":34,"deletions":6},"test-code":{"insertions":77,"deletions":9}}},{"hash":"dc08b5f7db6e534fb4d0b17a2f46d51a6c16f53a","isMergeCommit":false,"messageTitle":"Update addnotecommand to append notes instead of replacing them","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":25,"deletions":6}}},{"hash":"098fb1f2b74c6044113e0964846c61506c29fbcc","isMergeCommit":false,"messageTitle":"Update the addnotecommand to be able to replace or append the original note","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":30,"deletions":16}}},{"hash":"07769ba97fd671dd6c2789cf356b30639453ef65","isMergeCommit":false,"messageTitle":"Edit the appending of new note to make the output more user friendly","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":2}}},{"hash":"81aefcc9c314e29a603eab7d072173eb97f0a694","isMergeCommit":false,"messageTitle":"Update to use ic number instead of index to addnote to a person","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":35,"deletions":30}}},{"hash":"3e1b1d0960373d9351aec95f8ae3bacb02b23773","isMergeCommit":false,"messageTitle":"Update addnotecommand and addnotecommandparser classes to be able to append or replace note","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":26,"deletions":11},"test-code":{"insertions":33,"deletions":52}}},{"hash":"75619c631e9eef91aed04c5bb67be4b1bc0d73ae","isMergeCommit":false,"messageTitle":"Resolve checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":5}}},{"hash":"c2ea630c9d8f7c6854d1c4c2e21c081d5d0b3e7f","isMergeCommit":false,"messageTitle":"Update imports to resolve checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":1}}},{"hash":"f5f4105f45e2486a88ddd8395e59a0783f84a758","isMergeCommit":false,"messageTitle":"Resolve checkstyle issue again","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"487291a522debc982e5047f68cdec3dace2e01cc","isMergeCommit":false,"messageTitle":"Update addressbookparsertest to be able to test when notes are added","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":2}}},{"hash":"4aca9270e0bdaadec67d877d537e66df11300017","isMergeCommit":false,"messageTitle":"Update files to make sure all tests pass","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":12,"deletions":83}}},{"hash":"2f04d41b5300a61f4ac3773b38cc305f7d8dca3d","isMergeCommit":false,"messageTitle":"Update url of help command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-17","commitResults":[{"hash":"96beadae28564108a199f25e873b4963b1932807","isMergeCommit":true,"messageTitle":"Merge pull request #51 from tengcharmaine/helpcommand","messageBody":"Update URL of help command","fileTypesAndContributionMap":{}},{"hash":"351418a1e1c71dc1dc6f94e0cd411a494aea7efb","isMergeCommit":false,"messageTitle":"Update naming of variable to make the code more readable","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":7}}},{"hash":"1defa5b91d2ae21e1a4f299fe7f9019ed87dc966","isMergeCommit":false,"messageTitle":"Update code such that there is no repeated code in the if-else block","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":12}}},{"hash":"27f94b8780094149a5712b522460949b12a5cc13","isMergeCommit":false,"messageTitle":"Update success message to fit the functionalities that are going to be implemented","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":4}}},{"hash":"b6da16e7d0427f2298e0660ad44d2647f4132452","isMergeCommit":false,"messageTitle":"Update equals method in addnotecommand class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"65e4f6d9fb9ef49b856e290372fdc91696958e68","isMergeCommit":false,"messageTitle":"Move -replace flag to be a prefix because it is a constant","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":8}}},{"hash":"504a6703e724f4312911eb7637556896b4044750","isMergeCommit":false,"messageTitle":"Update parser and the relevant test files to support testing of the replace flag","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":5},"test-code":{"insertions":11,"deletions":1}}},{"hash":"adf49f8cccd1f0ca863fed3d49d1909f6a477c49","isMergeCommit":false,"messageTitle":"Remove unecessary string in the test case","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"34049096c3887035c2fdcbddbc07d8eca8817df5","isMergeCommit":false,"messageTitle":"Update invalid format output and remove unecessary lines of code","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":5}}},{"hash":"7c5baeec3ae1edaa23da954b35697cb3dfedf5a3","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into addnote","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-18","commitResults":[{"hash":"5c57592ed5e86e4a50bd0d75df021f7d498f69f7","isMergeCommit":true,"messageTitle":"Merge pull request #50 from tengcharmaine/addnote","messageBody":"Add addnote command to add a note to a Person\u0027s entry in the addressbook","fileTypesAndContributionMap":{}},{"hash":"2e2c94a8715de9f8ae27dfe3fd778f54d55922cd","isMergeCommit":true,"messageTitle":"Merge pull request #47 from jiahui0309/update-delete-command","messageBody":"Update Delete Command to delete with Person\u0027s IC","fileTypesAndContributionMap":{}},{"hash":"ba56b8f3169d27722e5697cab7ce1fb4a8e6f577","isMergeCommit":false,"messageTitle":"Fix bug that results in a empty line when a note is first added","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":5}}},{"hash":"44fb44e949110f002aec28e8fcd9257274d25c60","isMergeCommit":false,"messageTitle":"Update the output success message to be more user friendly","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":2}}}]},{"date":"2024-03-20","commitResults":[{"hash":"e9344111855be514da956b9dd6539a5745ef0819","isMergeCommit":true,"messageTitle":"Merge pull request #64 from drustanyjt/drus-ci","messageBody":"Add release workflows and update icons/titles to match product","fileTypesAndContributionMap":{}},{"hash":"78816172f25a8fe82a66935d381b9d1cc3a4f9af","isMergeCommit":false,"messageTitle":"Create UML diagram using PlantUML for addnotecommand function","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":70,"deletions":0}}},{"hash":"032e2453de7b90a06cdef8075a04c35a7b374682","isMergeCommit":false,"messageTitle":"Add test cases for addnotecommand class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":38,"deletions":2}}},{"hash":"eccd7f69508df4cc8cad7455483dea9d21ae728d","isMergeCommit":false,"messageTitle":"Edit file to resolve checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":3}}},{"hash":"e346979cb6f0827b2bdf54ff46cddfcddde47717","isMergeCommit":true,"messageTitle":"Merge pull request #68 from jiahui0309/add-seq-diagram","messageBody":"Create UML diagram for find and delete commands","fileTypesAndContributionMap":{}},{"hash":"68b26570fd6df049800008271734c66b3e5f4f1e","isMergeCommit":true,"messageTitle":"Merge pull request #74 from Jayne1010/master","messageBody":"Add UML diagram for add command and edit command","fileTypesAndContributionMap":{}},{"hash":"58013af5ab57cfd07da360478ed0016c19db9e72","isMergeCommit":true,"messageTitle":"Merge pull request #78 from drustanyjt/drus-person-uml","messageBody":"Update UML diagram for Person","fileTypesAndContributionMap":{}},{"hash":"f9caef08d2a479ec65f42cb0beb9e3c735505c4b","isMergeCommit":true,"messageTitle":"Merge pull request #71 from tengcharmaine/uml_addnotecommand","messageBody":"Create UML diagram using PlantUML for addnotecommand function","fileTypesAndContributionMap":{}},{"hash":"71d8bc93b84be9e50bf3f3786e6b4a81dfa31d99","isMergeCommit":true,"messageTitle":"Merge pull request #67 from Jayne1010/UpdateDGv1.2b","messageBody":"Update dg for v1.2b","tags":["dev"],"fileTypesAndContributionMap":{}},{"hash":"dd696a81d7454b18a575688973537dfdd248670c","isMergeCommit":false,"messageTitle":"Update sex field to accept upper and lower case","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"d8902645b25aa38d037c66a1273ed6efeb38b3c7","isMergeCommit":true,"messageTitle":"Merge pull request #77 from Jayne1010/UpdateAddCommandTestv1.2b","messageBody":"Update add command test for v1.2b","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"a3c54ace8262ecf7334bf349a42687140ca85c47","isMergeCommit":false,"messageTitle":"Update fxml to change the ui for main window but incomplete","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":7}}}]},{"date":"2024-03-22","commitResults":[{"hash":"0462a049e5d09e807cc18f4a40bbf9ac2c095a66","isMergeCommit":false,"messageTitle":"Update split window to make it grow proportionately","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":8}}}]}],"jiahui0309":[{"date":"2024-03-03","commitResults":[{"hash":"be650b34b7753172421b5ac7dc1b96999429bb1c","isMergeCommit":false,"messageTitle":"Update About Us","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":17,"deletions":29}}},{"hash":"d7d233883734a9e0bcc21f4991fc8f820a6ba874","isMergeCommit":false,"messageTitle":"Update About Us from feedbacks","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":4}}},{"hash":"c363de2811d3fd0a4d3110b9047eee86e9232c22","isMergeCommit":true,"messageTitle":"Merge pull request #19 from jiahui0309/update-about-us","messageBody":"Update About Us","fileTypesAndContributionMap":{}}]},{"date":"2024-03-04","commitResults":[{"hash":"9a969a3bb60e72dcfaf0bc6d755408e91f78fe54","isMergeCommit":false,"messageTitle":"Update DG usecase","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":97,"deletions":2}}}]},{"date":"2024-03-05","commitResults":[{"hash":"f06e933edb533409ab4cce2c551b975a0b604bd2","isMergeCommit":false,"messageTitle":"Update DG usecase from comments","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":20,"deletions":20}}},{"hash":"f2831f7e8d61abdedfb24b7ebd72b5e7fcafd917","isMergeCommit":true,"messageTitle":"Merge pull request #29 from drustanyjt/docs-dg-glossary","messageBody":"Add medical terms in meeting notes to glossary","fileTypesAndContributionMap":{}},{"hash":"4e8320caaaf9ba28f09b91f32975fa292a0f96af","isMergeCommit":true,"messageTitle":"Merge pull request #28 from jiahui0309/update-dg-usecase","messageBody":"Update DG usecase","fileTypesAndContributionMap":{}}]},{"date":"2024-03-06","commitResults":[{"hash":"548133f9d747a41caa2218591dfc1e381a2f0f60","isMergeCommit":true,"messageTitle":"Merge pull request #33 from tengcharmaine/updateug","messageBody":"Update Quick Start section of UG","fileTypesAndContributionMap":{}},{"hash":"0d6da5c29394a526908e9fd2124d6549f57cec53","isMergeCommit":true,"messageTitle":"Merge pull request #34 from drustanyjt/docs-dg-product-scope","messageBody":"Update DeveloperGuide.md","fileTypesAndContributionMap":{}},{"hash":"8a80e337ed28e10568b9606abb2173afa58cc921","isMergeCommit":false,"messageTitle":"Update index.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"f2ec7ddff937a906bc2e2a0d7a00bc620db97ef3","isMergeCommit":true,"messageTitle":"Merge pull request #35 from jiahui0309/update-index","messageBody":"Update index.md","fileTypesAndContributionMap":{}}]},{"date":"2024-03-16","commitResults":[{"hash":"dfcbf36c65d5d96d25471da99407015f2221593a","isMergeCommit":true,"messageTitle":"Merge pull request #44 from drustanyjt/drus-update-person","messageBody":"Update Person Class","fileTypesAndContributionMap":{}},{"hash":"0813c1753e3f735d66fefa81ab4bd0698af2c3a6","isMergeCommit":false,"messageTitle":"Update Find command to search with Person\u0027s IC","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":61,"deletions":17},"test-code":{"insertions":49,"deletions":42}}},{"hash":"53dac0a58990075939d2d93e04d7670b08f9eac6","isMergeCommit":false,"messageTitle":"Update PaserUtil to add parseIC","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":18,"deletions":2},"test-code":{"insertions":3,"deletions":5}}},{"hash":"14de81967ef0fed342a542d525affb138668a6c0","isMergeCommit":true,"messageTitle":"Merge pull request #46 from jiahui0309/update-find-command","messageBody":"Update Find command to search using Person\u0027s IC","fileTypesAndContributionMap":{}},{"hash":"69940f556a45d2f7d548345fbbc9ee34cead237c","isMergeCommit":false,"messageTitle":"Update Delete Command to delete with Person\u0027s IC","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":17},"test-code":{"insertions":40,"deletions":38}}},{"hash":"e093fa404c24f17eeb13a8d96fa7c95313884e96","isMergeCommit":false,"messageTitle":"Update Delete Command class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-18","commitResults":[{"hash":"7671661bb0df09ac3c55aa9c381db3cc8d8fbd05","isMergeCommit":false,"messageTitle":"Fix bugs in IdentityCardNumber class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":3}}},{"hash":"60acb0663c3d3e2de1d454c6a776b59bdbd10ede","isMergeCommit":false,"messageTitle":"Fix checkstyle comments","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2},"test-code":{"insertions":6,"deletions":21}}},{"hash":"541832906428e5254fbfdb0c8c44e7083e5b103c","isMergeCommit":true,"messageTitle":"Merge pull request #61 from jiahui0309/review-find-delete-commands","messageBody":"Fix bugs in IdentityCardNumber class","fileTypesAndContributionMap":{}},{"hash":"bed5d5d7d44d0f92a26211c8530e815482c3fcc6","isMergeCommit":true,"messageTitle":"Merge pull request #60 from tengcharmaine/bugfixes","messageBody":"Bugfixes for addnote command","tags":["v1.2"],"fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"a018971dde606dce262bf8ae51a44b3286f25228","isMergeCommit":false,"messageTitle":"Add UML diagram for find and delete commands","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":74,"deletions":4}}},{"hash":"81b904c26bf50c64bba80aa609cd3daf08f91aaa","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"9f248ee44c792ab821a8785acc01b629531bb032","isMergeCommit":true,"messageTitle":"Merge pull request #83 from tengcharmaine/addnotetest","messageBody":"Add test cases for addnotecommand class","fileTypesAndContributionMap":{}}]},{"date":"2024-03-22","commitResults":[{"hash":"9275e1387489506d5cc140df44402a9d7f81e97e","isMergeCommit":true,"messageTitle":"Merge pull request #107 from tengcharmaine/improvenotesui","messageBody":"Create split screen to display patient information","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"drustanyjt":{"docs":36,"functional-code":402,"test-code":506,"other":1},"Jayne1010":{"docs":182,"functional-code":193,"test-code":305},"tengcharmaine":{"docs":100,"functional-code":207,"test-code":164},"jiahui0309":{"docs":194,"functional-code":98,"test-code":93}},"authorContributionVariance":{"drustanyjt":192921.06,"Jayne1010":18425.744,"tengcharmaine":27354.744,"jiahui0309":3712.464},"authorDisplayNameMap":{"drustanyjt":"CS2103T-F14-2 YEO ..STAN","Jayne1010":"CS2103T-F14-2 CHEN..AYNE","tengcharmaine":"CS2103T-F14-2 TENG..AINE","jiahui0309":"CS2103T-F14-2 SONG.. HUI"}} +{"authorDailyContributionsMap":{"drustanyjt":[{"date":"2024-03-03","commitResults":[{"hash":"e054773e7feb575fd00e7ac063510ae83d2c94d1","isMergeCommit":false,"messageTitle":"Update sitewide settings with product name and new logo","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":0}}},{"hash":"6b2d0514ccfe445f72ff94a09eff0e80b023a14c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into docs-sitewide-settings","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"3da4848193c31724810f138e9ca4ecc699b5622c","isMergeCommit":true,"messageTitle":"Merge pull request #20 from drustanyjt/docs-sitewide-settings","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-04","commitResults":[{"hash":"863ee95c9fdb7c1212b802c562b4d0c47b9c75d0","isMergeCommit":false,"messageTitle":"Add medical terms in meeting notes to glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":2}}},{"hash":"8490e739aea7f07a72a320c62382da7316e982d5","isMergeCommit":false,"messageTitle":"Fix whitespace errors","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-05","commitResults":[{"hash":"3936397f7fb177dbeb1099057ef0dd76c36f00de","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-06","commitResults":[{"hash":"467d54beba603f8ee15c03f015b90ec4eadc35fa","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"Added value proposition and user profile.","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":3}}}]},{"date":"2024-03-15","commitResults":[{"hash":"9b3c1bc527279a3dbc61d1fbc343e5f74c11dd4a","isMergeCommit":false,"messageTitle":"Update models to support new Person fields","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":306,"deletions":11}}}]},{"date":"2024-03-16","commitResults":[{"hash":"d6df9b2962221f3fc13fce1a89e015fe9b593b6f","isMergeCommit":false,"messageTitle":"Fix support for using the new Person constructor","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":134,"deletions":39},"test-code":{"insertions":164,"deletions":42}}},{"hash":"90a1a5e75fde24f143b3b5378ff6a59ec1d4df26","isMergeCommit":false,"messageTitle":"Fix line formatting issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":283,"deletions":283}}},{"hash":"9348f3b6d45023bb0d5cf0204d918548c6d78c75","isMergeCommit":false,"messageTitle":"Fix line too long for checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"6ff0db7e1787cf29bb66f08f7113ec6e9d112e87","isMergeCommit":false,"messageTitle":"Add test coverage for new Person fields","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":548,"deletions":228}}},{"hash":"5b7b1918e150a30060cc1fe87d8c58b9dc9bb2b5","isMergeCommit":false,"messageTitle":"Replace CRLF with LF","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":325,"deletions":325}}},{"hash":"fe3baa9236e2f4c21a40ff41e1f311acab6e8b14","isMergeCommit":false,"messageTitle":"Fix message not showing some fields from a Person","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":5}}}]},{"date":"2024-03-18","commitResults":[{"hash":"216b72757c6dbcaa6cfc41e8d1bb475a09e7a1ec","isMergeCommit":false,"messageTitle":"Update icon in UI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"test-code":{"insertions":1,"deletions":1}}},{"hash":"bc2abd9ebf106d1d87120297ec67a2c3e8293ba7","isMergeCommit":false,"messageTitle":"Re-rename test file","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":1,"deletions":1}}},{"hash":"72967a3b3fb6f77f78149a53deed55cb81f147da","isMergeCommit":false,"messageTitle":"Change some references of addresbook to clinicmate","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"other":{"insertions":72,"deletions":72},"docs":{"insertions":2,"deletions":2},"test-code":{"insertions":1,"deletions":1}}},{"hash":"3535c1d1efb981a6b7206f4fb6118b7aba668bc7","isMergeCommit":false,"messageTitle":"Change CRLF to LF","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":72,"deletions":72}}}]},{"date":"2024-03-19","commitResults":[{"hash":"a3fd086dc37a1c7fbcfc25baa770d83a9b894458","isMergeCommit":true,"messageTitle":"Merge pull request #63 from drustanyjt/fix-phonetest","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"26394e6a65ca6108a4efd408c5c6275b828eb252","isMergeCommit":true,"messageTitle":"Merge pull request #66 from Jayne1010/UpdateUGv1.2b","messageBody":"Update user guide for features v1.2b","fileTypesAndContributionMap":{}},{"hash":"29f201eb54951eeb0b7433e806d5398802bdffb7","isMergeCommit":false,"messageTitle":"Add new attribute classes and remove references to Tag","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":8}}},{"hash":"5bb0e9d0ccbd06c8dc55515d6a63f660f22b50d0","isMergeCommit":false,"messageTitle":"Revert \"Update Edit Command to edit with Person\u0027s IC\"","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":32,"deletions":88},"docs":{"insertions":1,"deletions":0}}},{"hash":"10df923a08f07ec97ba9a32fb1a7515d1a3f5de5","isMergeCommit":true,"messageTitle":"Merge pull request #80 from AY2324S2-CS2103T-F14-2/revert-65-UpdateEditCommandv1.2b","messageBody":"Revert \"Update Edit Command to edit with Person\u0027s IC\"","fileTypesAndContributionMap":{}},{"hash":"e38345b1184de88826da2b88bb491a96341fedee","isMergeCommit":true,"messageTitle":"Merge pull request #85 from AY2324S2-CS2103T-F14-2/drustanyjt-patch-1","messageBody":"Fix typo in pre-release names","fileTypesAndContributionMap":{}},{"hash":"e53d42cb9636c21071a91e61bdb0934b663ee733","isMergeCommit":false,"messageTitle":"Add google form link and update release link","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":1}}},{"hash":"4de861628d8e885464367a820e2f607580dae3a9","isMergeCommit":true,"messageTitle":"Merge pull request #88 from drustanyjt/drus-gform","messageBody":"Add google form link and update release link","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"d579361ce799668289ca6390a2e5f621d264ff59","isMergeCommit":true,"messageTitle":"Merge pull request #89 from tengcharmaine/sex_field_bug","messageBody":"","tags":["v1.2b"],"fileTypesAndContributionMap":{}}]},{"date":"2024-03-22","commitResults":[{"hash":"33ccf1040274465a973c6809afb5e589bbe2b6bd","isMergeCommit":false,"messageTitle":"Change sample data to have no tags","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":27,"deletions":22},"test-code":{"insertions":29,"deletions":0}}}]}],"Jayne1010":[{"date":"2024-03-05","commitResults":[{"hash":"5c3b512b4437b7dbc40a12f81d2a5f2c4043d612","isMergeCommit":false,"messageTitle":"Update user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":34,"deletions":58}}},{"hash":"474dc32baa8f98a1a8bcbf3df39a6e78e83f1d2d","isMergeCommit":false,"messageTitle":"Update UG with minor typo fix","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"8a95434394c4826dbd915f7d99bdb060ed2ea7aa","isMergeCommit":false,"messageTitle":"Update UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}},{"hash":"bccedcb53f202203ade98150652a325be001ba04","isMergeCommit":false,"messageTitle":"Update UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"80c59a32e3f398301150979761ec4f763903e5f0","isMergeCommit":false,"messageTitle":"Update UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"ae0360ebd33544f6c1b1b14bc94e972a998f48f5","isMergeCommit":false,"messageTitle":"Update UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":1}}},{"hash":"25b35b33296660a59dfebfe6c7c75df99957da4f","isMergeCommit":false,"messageTitle":"Update DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":34,"deletions":58}}},{"hash":"e6ef73be1f8c8973daa5432b782e0115a35d3945","isMergeCommit":false,"messageTitle":"Update DG v1.1","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":9}}},{"hash":"8ef12faa0943d2dfcd686f934b30f37ee98b8ad4","isMergeCommit":false,"messageTitle":"Update DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}},{"hash":"a848745810b23913f65038b592963a9ba03b4d72","isMergeCommit":false,"messageTitle":"Update DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}},{"hash":"62eceedef59ac84b48a8dfdf17b5e857dfaf23b7","isMergeCommit":false,"messageTitle":"Update DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":1}}},{"hash":"90d19984cb50ddf3faa74ac2182f8724cf041efb","isMergeCommit":true,"messageTitle":"Merge pull request #26 from Jayne1010/Updated-DG-v1.1","messageBody":"Update dg v1.1","fileTypesAndContributionMap":{}},{"hash":"c9d0294eb50bbd3d051ef812fc30db401db1a632","isMergeCommit":false,"messageTitle":"Revert \"Update dg v1.1\"","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":67,"deletions":46}}},{"hash":"44d87616ec6b8d546d083f15578cb65e6fa586fb","isMergeCommit":true,"messageTitle":"Merge pull request #30 from AY2324S2-CS2103T-F14-2/revert-26-Updated-DG-v1.1","messageBody":"Revert \"Update dg v1.1\"","fileTypesAndContributionMap":{}},{"hash":"46d4d35070797256cbf1a01fb7a6bb5cb07954a2","isMergeCommit":false,"messageTitle":"Update UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"349d3530bc407f12ef6316292df677f7da1ea3ed","isMergeCommit":false,"messageTitle":"Update UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-17","commitResults":[{"hash":"e7f6c808b940a0a5390acbc01033aeeeef77cbd9","isMergeCommit":false,"messageTitle":"Update Add Command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":82,"deletions":67},"other":{"insertions":1,"deletions":1},"test-code":{"insertions":9,"deletions":14}}},{"hash":"4a73cf3ede2e956c8dd997ab9bcb35674c40097e","isMergeCommit":false,"messageTitle":"Update Add Command to add more Person\u0027s parameters","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":18,"deletions":5}}},{"hash":"d9dd3a2450670ae972f69520634b5a7de98503ea","isMergeCommit":false,"messageTitle":"Fix style: General style improvements","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":33,"deletions":7}}},{"hash":"1432dd9f55d45c5b22611d4b3ca6f29f48296dd4","isMergeCommit":false,"messageTitle":"Fix style: General style improvements","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":17,"deletions":7}}},{"hash":"713b587907b03b5b815d55a9623da1419dcf9333","isMergeCommit":false,"messageTitle":"Fix style: General style improvements","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":2}}},{"hash":"116d1a441c736c1bd2b93c3a4cdbae8d8e1b740c","isMergeCommit":false,"messageTitle":"Fix style: General style improvements","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":2}}},{"hash":"defb309d5fc0c8ce6a000cfd2426b4b1cbdc811e","isMergeCommit":false,"messageTitle":"Fix style: General style improvements","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":29,"deletions":30},"test-code":{"insertions":14,"deletions":9}}},{"hash":"c06824bf8da1476b28ac4e629c59e8aa1a1d6bc0","isMergeCommit":false,"messageTitle":"Fix style: General style improvements","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":2}}},{"hash":"f9a36cbb78b0a4e360cc66370dff542601aaebaa","isMergeCommit":false,"messageTitle":"Fix style: General style improvements","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"01efc05263cab20b8e01b9148cb39d063bc9922c","isMergeCommit":false,"messageTitle":"Fix style: General style improvements","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":21}}},{"hash":"3aabcf15f4e2a9b3b52e6b38a298fa3cd7c30c68","isMergeCommit":true,"messageTitle":"Merge pull request #53 from Jayne1010/UpdateAdd1.2","messageBody":"Update add1.2","fileTypesAndContributionMap":{}}]},{"date":"2024-03-18","commitResults":[{"hash":"6e19572844da113e05ffb588e34fa8986d83104f","isMergeCommit":false,"messageTitle":"Update Edit Command to edit with Person\u0027s IC","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":83,"deletions":41}}},{"hash":"7e602cdfbb9e118ed4f78cb152db3b053fb0b452","isMergeCommit":false,"messageTitle":"Update Edit Command to edit with Person\u0027s IC","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":17,"deletions":3}}}]},{"date":"2024-03-19","commitResults":[{"hash":"fa2cba4fce2677a798273f4b31a22593ee22064f","isMergeCommit":false,"messageTitle":"Update user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":5}}},{"hash":"c54256525520c61e3a178a2a75087b06de7be70f","isMergeCommit":false,"messageTitle":"Update developer guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}},{"hash":"a8d1265d5c930e30a8598939de94e196bc3ed4fc","isMergeCommit":false,"messageTitle":"Style enhancement","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"docs":{"insertions":0,"deletions":1}}}]},{"date":"2024-03-20","commitResults":[{"hash":"d4ba08a423ebafb5103291e7dad87f57d1b3a6ad","isMergeCommit":false,"messageTitle":"Add UML diagram for add command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":70,"deletions":0}}},{"hash":"2096e22eb9e1d39b661e12a03bd404cb16e1fc18","isMergeCommit":false,"messageTitle":"Add UML diagram for edit command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":70,"deletions":0}}},{"hash":"e154c8199b8561dc0be88a7ad488722f964d8148","isMergeCommit":false,"messageTitle":"Add test cases for add command","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":89,"deletions":42}}},{"hash":"00246e93044baff1c2f670cb393064b8be17fc0c","isMergeCommit":false,"messageTitle":"Fix style","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":51,"deletions":7}}},{"hash":"138e2e3044c031c6e6cf3427974de8da334181d9","isMergeCommit":false,"messageTitle":"Fix style","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"69621e5f881ea459ba0f0ab2a59fe5356bebfd32","isMergeCommit":true,"messageTitle":"Merge pull request #65 from Jayne1010/UpdateEditCommandv1.2b","messageBody":"Update Edit Command to edit with Person\u0027s IC","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"4c97d2a44827ff30141e9ca40e4f17f45fbc6d9b","isMergeCommit":false,"messageTitle":"Update edit command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":60,"deletions":22}}},{"hash":"40c648e33a264ed3de5d524017377fa53ad236b5","isMergeCommit":false,"messageTitle":"Update edit command parser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":29,"deletions":12}}},{"hash":"f385afd8123f50ad2220237d635356af7a304d62","isMergeCommit":false,"messageTitle":"Update edit command test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":113,"deletions":136}}},{"hash":"e18e604f267059d574e1410568c67e1e95d3afb3","isMergeCommit":false,"messageTitle":"Add new class","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":0}}},{"hash":"f92949ae64248ea5d5d29a4aea6cb27b33fb156c","isMergeCommit":false,"messageTitle":"Update edit command test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":41,"deletions":1}}},{"hash":"eddc320fc5092d4eb83123feb73809aa2bf01566","isMergeCommit":false,"messageTitle":"Update edit command test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":16,"deletions":2}}},{"hash":"f8576e93b3e4a389cd1ff104b8534c9582a76505","isMergeCommit":false,"messageTitle":"Update edit command test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":28,"deletions":7}}},{"hash":"3490671e09e40f99750307d2d0ec89943adad54f","isMergeCommit":false,"messageTitle":"Update edit command","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":1}}},{"hash":"742dd0511add81875621f7342a7168fd1e40b292","isMergeCommit":false,"messageTitle":"Update edit command","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-22","commitResults":[{"hash":"518a4d97cb1f0c4b05df5e4b8a6e1c7b98a5eda1","isMergeCommit":false,"messageTitle":"Fix typo","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"76d48aac5243c5b628715cb72c1bb8d9baa4082d","isMergeCommit":true,"messageTitle":"Merge pull request #93 from Jayne1010/UpdateEditCommandTestv1.2b","messageBody":"Update edit command test","fileTypesAndContributionMap":{}},{"hash":"a62d3e45fd226189eba4c249086173ee4be4077e","isMergeCommit":true,"messageTitle":"Merge pull request #94 from drustanyjt/drus-update-sample","messageBody":"Remove tags from sample data","fileTypesAndContributionMap":{}}]},{"date":"2024-03-24","commitResults":[{"hash":"3b6e02fc6dfb09f0683750b46e190ef1691c76d3","isMergeCommit":false,"messageTitle":"Revise error message for commands and refine success message formatting","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":68,"deletions":21}}},{"hash":"85387773f286ab8f905e2bd0c39298aef44908fd","isMergeCommit":false,"messageTitle":"Fix style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2}}},{"hash":"9e18e558e137257a744e9a990c85fe2511152357","isMergeCommit":false,"messageTitle":"Edit add commnad and delete command test","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1},"test-code":{"insertions":24,"deletions":5}}},{"hash":"dc16decaa849c2a1089fefe6e7437afdf0e8d760","isMergeCommit":false,"messageTitle":"Fix typos","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"06822786d3d15ae0e723176649875697db0745e5","isMergeCommit":false,"messageTitle":"Resolve merge conflict","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":11}}},{"hash":"ddb67e75d1d2996002603fedc66c87ca0a65804b","isMergeCommit":true,"messageTitle":"Merge pull request #110 from Jayne1010/EditErrorMessage","messageBody":"Edit error message and success message ","fileTypesAndContributionMap":{}}]}],"tengcharmaine":[{"date":"2024-03-03","commitResults":[{"hash":"6adfcc34a784f13ffc31553c6973dadbb80cac88","isMergeCommit":false,"messageTitle":"Update Ui mockup png to the new Ui mockup in readme","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"1486ea0ef2a180512c5976509554d75ef28089dd","isMergeCommit":false,"messageTitle":"Update readme docs for Clinic Mate from original docs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":10}}},{"hash":"6e06e4ea3678473438cca55efac61b95ed58ecbf","isMergeCommit":false,"messageTitle":"Fix errors from github checks","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"19bf42edea40495ac4119f43eb631d4c62b37073","isMergeCommit":false,"messageTitle":"Update CI status badge to reflect build status of teams repo","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"633a23989c72c88bc8f67cdfd1334c35eb009fa0","isMergeCommit":false,"messageTitle":"Update non-functional requirements (NFRs) to developers guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":5}}},{"hash":"6e1c8f60919f274804a665135aa7ee90348f57b0","isMergeCommit":true,"messageTitle":"Merge pull request #24 from tengcharmaine/update-readme","messageBody":"Update Project README","fileTypesAndContributionMap":{}},{"hash":"922bfe9ea876da86da32caebe1932565f064f5b4","isMergeCommit":true,"messageTitle":"Merge pull request #25 from tengcharmaine/update_NFR","messageBody":"Update non-functional requirements (NFRs) to developers guide","fileTypesAndContributionMap":{}}]},{"date":"2024-03-05","commitResults":[{"hash":"46d097d2b310c08dd298e62dc545ff12a54644de","isMergeCommit":true,"messageTitle":"Merge pull request #27 from Jayne1010/Updated-UG-v1.1","messageBody":"Update ug v1.1","fileTypesAndContributionMap":{}}]},{"date":"2024-03-06","commitResults":[{"hash":"3f6d958b873330dc5407e8bb3e43e7334e3e1aa6","isMergeCommit":false,"messageTitle":"Update Quick Start section of UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}}]},{"date":"2024-03-16","commitResults":[{"hash":"0fe36078122ac2a61d7c89cdf4788d23bdec8e40","isMergeCommit":false,"messageTitle":"Create a new AddNoteCommand class for the new addnote functionality","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":35,"deletions":0}}},{"hash":"665392252e1bf9f57f32851c3b3d129c5456494c","isMergeCommit":false,"messageTitle":"Start addnote from scratch again to prevent mixup","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":24}}},{"hash":"fba4dade8a26169a869463e43b0054dc894086bb","isMergeCommit":false,"messageTitle":"Update main body of the addnote command class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":2}}},{"hash":"cdf552de2e734860f1806a08f8c948db40404c0a","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/tengcharmaine/tp into addnote","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"47fef0bc3dd278ca979e3221291cfdf8b93bfcb6","isMergeCommit":false,"messageTitle":"Update addressbookparser to include addnote command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":9}}},{"hash":"f064efd928120ca7e3f14ca4cf19b8b11ced1735","isMergeCommit":false,"messageTitle":"Add prefix for the note section of the addnotecommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0}}},{"hash":"2ff70274d59ddbb96029423577e0edc49be78132","isMergeCommit":false,"messageTitle":"Add test file to test the functionality of the addnotecommand","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":24,"deletions":0}}},{"hash":"6ae46c777b2f1815a580b357825e42e710dfc2ce","isMergeCommit":false,"messageTitle":"Update addressbookparsertest file to include the parsing of the addnote command","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":8}}},{"hash":"0aa30a47054fa71b0e61a5b71517c46094e320bc","isMergeCommit":false,"messageTitle":"Create parser for addnotecommand to parse addnote command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":72,"deletions":3}}},{"hash":"b953704fc5e36e73e89303fadb54bd1db3404414","isMergeCommit":false,"messageTitle":"Add more tests for addnotecommandtest to check if add note command works","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":37,"deletions":6}}},{"hash":"19c02c9a4c8c6f0ae5a077154ded5e502a1de9d3","isMergeCommit":false,"messageTitle":"Update addressbookparsertest to check that parsing works","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":1}}},{"hash":"e92c6a711c6103d786f4ded3b22354c9ee288fec","isMergeCommit":false,"messageTitle":"Create a parser test for addnotecommandparser","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":42,"deletions":0}}},{"hash":"9b401bddb29969bf74af3ade8e3bfcf4c00301c1","isMergeCommit":false,"messageTitle":"Update comments to fit the class name","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":4}}},{"hash":"5dd57bd198941b8960523b4e5546c701825a35c4","isMergeCommit":false,"messageTitle":"Update names of variables to match new names","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":4}}},{"hash":"50f08d92eb32fdc0b3194006629dc76aee34db49","isMergeCommit":false,"messageTitle":"Update the type of note to all relevant files and create a test for note class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":3},"test-code":{"insertions":48,"deletions":9}}},{"hash":"18e48a708961bdd57d13a098c30dbb99ad7a9ae2","isMergeCommit":false,"messageTitle":"Update code for the ui to show note in the main window","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":0}}},{"hash":"59c2973f81bf759822ae322d8df6e1d048e0258d","isMergeCommit":false,"messageTitle":"Update code for ui to work properly","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0}}},{"hash":"a8cda1b083ae0911b9d21f4c550a6d8aea2377c0","isMergeCommit":false,"messageTitle":"Update addnotecommand class to have the correct person format","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":34,"deletions":6},"test-code":{"insertions":77,"deletions":9}}},{"hash":"dc08b5f7db6e534fb4d0b17a2f46d51a6c16f53a","isMergeCommit":false,"messageTitle":"Update addnotecommand to append notes instead of replacing them","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":25,"deletions":6}}},{"hash":"098fb1f2b74c6044113e0964846c61506c29fbcc","isMergeCommit":false,"messageTitle":"Update the addnotecommand to be able to replace or append the original note","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":30,"deletions":16}}},{"hash":"07769ba97fd671dd6c2789cf356b30639453ef65","isMergeCommit":false,"messageTitle":"Edit the appending of new note to make the output more user friendly","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":2}}},{"hash":"81aefcc9c314e29a603eab7d072173eb97f0a694","isMergeCommit":false,"messageTitle":"Update to use ic number instead of index to addnote to a person","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":35,"deletions":30}}},{"hash":"3e1b1d0960373d9351aec95f8ae3bacb02b23773","isMergeCommit":false,"messageTitle":"Update addnotecommand and addnotecommandparser classes to be able to append or replace note","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":26,"deletions":11},"test-code":{"insertions":33,"deletions":52}}},{"hash":"75619c631e9eef91aed04c5bb67be4b1bc0d73ae","isMergeCommit":false,"messageTitle":"Resolve checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":5}}},{"hash":"c2ea630c9d8f7c6854d1c4c2e21c081d5d0b3e7f","isMergeCommit":false,"messageTitle":"Update imports to resolve checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":1}}},{"hash":"f5f4105f45e2486a88ddd8395e59a0783f84a758","isMergeCommit":false,"messageTitle":"Resolve checkstyle issue again","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"487291a522debc982e5047f68cdec3dace2e01cc","isMergeCommit":false,"messageTitle":"Update addressbookparsertest to be able to test when notes are added","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":2}}},{"hash":"4aca9270e0bdaadec67d877d537e66df11300017","isMergeCommit":false,"messageTitle":"Update files to make sure all tests pass","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":12,"deletions":83}}},{"hash":"2f04d41b5300a61f4ac3773b38cc305f7d8dca3d","isMergeCommit":false,"messageTitle":"Update url of help command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-17","commitResults":[{"hash":"96beadae28564108a199f25e873b4963b1932807","isMergeCommit":true,"messageTitle":"Merge pull request #51 from tengcharmaine/helpcommand","messageBody":"Update URL of help command","fileTypesAndContributionMap":{}},{"hash":"351418a1e1c71dc1dc6f94e0cd411a494aea7efb","isMergeCommit":false,"messageTitle":"Update naming of variable to make the code more readable","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":7}}},{"hash":"1defa5b91d2ae21e1a4f299fe7f9019ed87dc966","isMergeCommit":false,"messageTitle":"Update code such that there is no repeated code in the if-else block","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":12}}},{"hash":"27f94b8780094149a5712b522460949b12a5cc13","isMergeCommit":false,"messageTitle":"Update success message to fit the functionalities that are going to be implemented","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":4}}},{"hash":"b6da16e7d0427f2298e0660ad44d2647f4132452","isMergeCommit":false,"messageTitle":"Update equals method in addnotecommand class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"65e4f6d9fb9ef49b856e290372fdc91696958e68","isMergeCommit":false,"messageTitle":"Move -replace flag to be a prefix because it is a constant","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":8}}},{"hash":"504a6703e724f4312911eb7637556896b4044750","isMergeCommit":false,"messageTitle":"Update parser and the relevant test files to support testing of the replace flag","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":5},"test-code":{"insertions":11,"deletions":1}}},{"hash":"adf49f8cccd1f0ca863fed3d49d1909f6a477c49","isMergeCommit":false,"messageTitle":"Remove unecessary string in the test case","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"34049096c3887035c2fdcbddbc07d8eca8817df5","isMergeCommit":false,"messageTitle":"Update invalid format output and remove unecessary lines of code","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":5}}},{"hash":"7c5baeec3ae1edaa23da954b35697cb3dfedf5a3","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into addnote","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-18","commitResults":[{"hash":"5c57592ed5e86e4a50bd0d75df021f7d498f69f7","isMergeCommit":true,"messageTitle":"Merge pull request #50 from tengcharmaine/addnote","messageBody":"Add addnote command to add a note to a Person\u0027s entry in the addressbook","fileTypesAndContributionMap":{}},{"hash":"2e2c94a8715de9f8ae27dfe3fd778f54d55922cd","isMergeCommit":true,"messageTitle":"Merge pull request #47 from jiahui0309/update-delete-command","messageBody":"Update Delete Command to delete with Person\u0027s IC","fileTypesAndContributionMap":{}},{"hash":"ba56b8f3169d27722e5697cab7ce1fb4a8e6f577","isMergeCommit":false,"messageTitle":"Fix bug that results in a empty line when a note is first added","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":5}}},{"hash":"44fb44e949110f002aec28e8fcd9257274d25c60","isMergeCommit":false,"messageTitle":"Update the output success message to be more user friendly","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":2}}}]},{"date":"2024-03-20","commitResults":[{"hash":"e9344111855be514da956b9dd6539a5745ef0819","isMergeCommit":true,"messageTitle":"Merge pull request #64 from drustanyjt/drus-ci","messageBody":"Add release workflows and update icons/titles to match product","fileTypesAndContributionMap":{}},{"hash":"78816172f25a8fe82a66935d381b9d1cc3a4f9af","isMergeCommit":false,"messageTitle":"Create UML diagram using PlantUML for addnotecommand function","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":70,"deletions":0}}},{"hash":"032e2453de7b90a06cdef8075a04c35a7b374682","isMergeCommit":false,"messageTitle":"Add test cases for addnotecommand class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":38,"deletions":2}}},{"hash":"eccd7f69508df4cc8cad7455483dea9d21ae728d","isMergeCommit":false,"messageTitle":"Edit file to resolve checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":3}}},{"hash":"e346979cb6f0827b2bdf54ff46cddfcddde47717","isMergeCommit":true,"messageTitle":"Merge pull request #68 from jiahui0309/add-seq-diagram","messageBody":"Create UML diagram for find and delete commands","fileTypesAndContributionMap":{}},{"hash":"68b26570fd6df049800008271734c66b3e5f4f1e","isMergeCommit":true,"messageTitle":"Merge pull request #74 from Jayne1010/master","messageBody":"Add UML diagram for add command and edit command","fileTypesAndContributionMap":{}},{"hash":"58013af5ab57cfd07da360478ed0016c19db9e72","isMergeCommit":true,"messageTitle":"Merge pull request #78 from drustanyjt/drus-person-uml","messageBody":"Update UML diagram for Person","fileTypesAndContributionMap":{}},{"hash":"f9caef08d2a479ec65f42cb0beb9e3c735505c4b","isMergeCommit":true,"messageTitle":"Merge pull request #71 from tengcharmaine/uml_addnotecommand","messageBody":"Create UML diagram using PlantUML for addnotecommand function","fileTypesAndContributionMap":{}},{"hash":"71d8bc93b84be9e50bf3f3786e6b4a81dfa31d99","isMergeCommit":true,"messageTitle":"Merge pull request #67 from Jayne1010/UpdateDGv1.2b","messageBody":"Update dg for v1.2b","tags":["dev"],"fileTypesAndContributionMap":{}},{"hash":"dd696a81d7454b18a575688973537dfdd248670c","isMergeCommit":false,"messageTitle":"Update sex field to accept upper and lower case","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"d8902645b25aa38d037c66a1273ed6efeb38b3c7","isMergeCommit":true,"messageTitle":"Merge pull request #77 from Jayne1010/UpdateAddCommandTestv1.2b","messageBody":"Update add command test for v1.2b","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"a3c54ace8262ecf7334bf349a42687140ca85c47","isMergeCommit":false,"messageTitle":"Update fxml to change the ui for main window but incomplete","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":7}}}]},{"date":"2024-03-22","commitResults":[{"hash":"0462a049e5d09e807cc18f4a40bbf9ac2c095a66","isMergeCommit":false,"messageTitle":"Update split window to make it grow proportionately","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":8}}}]},{"date":"2024-03-23","commitResults":[{"hash":"cbf68d9c7159c173b1e2944b37f6373db078d2ea","isMergeCommit":false,"messageTitle":"Update addnote command to not have an ic prefix","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":10}}},{"hash":"2fc51897e64f04dc4a6d397c7038418e97e62866","isMergeCommit":false,"messageTitle":"Update addressbook parser test cases for addnote","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":5}}}]},{"date":"2024-03-24","commitResults":[{"hash":"a74be2dc55f4d95d771b1d74b59fb383ac163884","isMergeCommit":true,"messageTitle":"Merge pull request #109 from tengcharmaine/edit_addnote","messageBody":"Update addnote to not include ic prefix","fileTypesAndContributionMap":{}}]}],"jiahui0309":[{"date":"2024-03-03","commitResults":[{"hash":"be650b34b7753172421b5ac7dc1b96999429bb1c","isMergeCommit":false,"messageTitle":"Update About Us","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":17,"deletions":29}}},{"hash":"d7d233883734a9e0bcc21f4991fc8f820a6ba874","isMergeCommit":false,"messageTitle":"Update About Us from feedbacks","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":4}}},{"hash":"c363de2811d3fd0a4d3110b9047eee86e9232c22","isMergeCommit":true,"messageTitle":"Merge pull request #19 from jiahui0309/update-about-us","messageBody":"Update About Us","fileTypesAndContributionMap":{}}]},{"date":"2024-03-04","commitResults":[{"hash":"9a969a3bb60e72dcfaf0bc6d755408e91f78fe54","isMergeCommit":false,"messageTitle":"Update DG usecase","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":97,"deletions":2}}}]},{"date":"2024-03-05","commitResults":[{"hash":"f06e933edb533409ab4cce2c551b975a0b604bd2","isMergeCommit":false,"messageTitle":"Update DG usecase from comments","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":20,"deletions":20}}},{"hash":"f2831f7e8d61abdedfb24b7ebd72b5e7fcafd917","isMergeCommit":true,"messageTitle":"Merge pull request #29 from drustanyjt/docs-dg-glossary","messageBody":"Add medical terms in meeting notes to glossary","fileTypesAndContributionMap":{}},{"hash":"4e8320caaaf9ba28f09b91f32975fa292a0f96af","isMergeCommit":true,"messageTitle":"Merge pull request #28 from jiahui0309/update-dg-usecase","messageBody":"Update DG usecase","fileTypesAndContributionMap":{}}]},{"date":"2024-03-06","commitResults":[{"hash":"548133f9d747a41caa2218591dfc1e381a2f0f60","isMergeCommit":true,"messageTitle":"Merge pull request #33 from tengcharmaine/updateug","messageBody":"Update Quick Start section of UG","fileTypesAndContributionMap":{}},{"hash":"0d6da5c29394a526908e9fd2124d6549f57cec53","isMergeCommit":true,"messageTitle":"Merge pull request #34 from drustanyjt/docs-dg-product-scope","messageBody":"Update DeveloperGuide.md","fileTypesAndContributionMap":{}},{"hash":"8a80e337ed28e10568b9606abb2173afa58cc921","isMergeCommit":false,"messageTitle":"Update index.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"f2ec7ddff937a906bc2e2a0d7a00bc620db97ef3","isMergeCommit":true,"messageTitle":"Merge pull request #35 from jiahui0309/update-index","messageBody":"Update index.md","fileTypesAndContributionMap":{}}]},{"date":"2024-03-16","commitResults":[{"hash":"dfcbf36c65d5d96d25471da99407015f2221593a","isMergeCommit":true,"messageTitle":"Merge pull request #44 from drustanyjt/drus-update-person","messageBody":"Update Person Class","fileTypesAndContributionMap":{}},{"hash":"0813c1753e3f735d66fefa81ab4bd0698af2c3a6","isMergeCommit":false,"messageTitle":"Update Find command to search with Person\u0027s IC","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":61,"deletions":17},"test-code":{"insertions":49,"deletions":42}}},{"hash":"53dac0a58990075939d2d93e04d7670b08f9eac6","isMergeCommit":false,"messageTitle":"Update PaserUtil to add parseIC","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":18,"deletions":2},"test-code":{"insertions":3,"deletions":5}}},{"hash":"14de81967ef0fed342a542d525affb138668a6c0","isMergeCommit":true,"messageTitle":"Merge pull request #46 from jiahui0309/update-find-command","messageBody":"Update Find command to search using Person\u0027s IC","fileTypesAndContributionMap":{}},{"hash":"69940f556a45d2f7d548345fbbc9ee34cead237c","isMergeCommit":false,"messageTitle":"Update Delete Command to delete with Person\u0027s IC","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":17},"test-code":{"insertions":40,"deletions":38}}},{"hash":"e093fa404c24f17eeb13a8d96fa7c95313884e96","isMergeCommit":false,"messageTitle":"Update Delete Command class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-18","commitResults":[{"hash":"7671661bb0df09ac3c55aa9c381db3cc8d8fbd05","isMergeCommit":false,"messageTitle":"Fix bugs in IdentityCardNumber class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":3}}},{"hash":"60acb0663c3d3e2de1d454c6a776b59bdbd10ede","isMergeCommit":false,"messageTitle":"Fix checkstyle comments","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2},"test-code":{"insertions":6,"deletions":21}}},{"hash":"541832906428e5254fbfdb0c8c44e7083e5b103c","isMergeCommit":true,"messageTitle":"Merge pull request #61 from jiahui0309/review-find-delete-commands","messageBody":"Fix bugs in IdentityCardNumber class","fileTypesAndContributionMap":{}},{"hash":"bed5d5d7d44d0f92a26211c8530e815482c3fcc6","isMergeCommit":true,"messageTitle":"Merge pull request #60 from tengcharmaine/bugfixes","messageBody":"Bugfixes for addnote command","tags":["v1.2"],"fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"a018971dde606dce262bf8ae51a44b3286f25228","isMergeCommit":false,"messageTitle":"Add UML diagram for find and delete commands","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":74,"deletions":4}}},{"hash":"81b904c26bf50c64bba80aa609cd3daf08f91aaa","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"9f248ee44c792ab821a8785acc01b629531bb032","isMergeCommit":true,"messageTitle":"Merge pull request #83 from tengcharmaine/addnotetest","messageBody":"Add test cases for addnotecommand class","fileTypesAndContributionMap":{}}]},{"date":"2024-03-22","commitResults":[{"hash":"9275e1387489506d5cc140df44402a9d7f81e97e","isMergeCommit":true,"messageTitle":"Merge pull request #107 from tengcharmaine/improvenotesui","messageBody":"Create split screen to display patient information","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"drustanyjt":{"docs":36,"functional-code":402,"test-code":506,"other":1},"Jayne1010":{"docs":182,"functional-code":251,"test-code":329},"tengcharmaine":{"docs":100,"functional-code":204,"test-code":163},"jiahui0309":{"docs":194,"functional-code":97,"test-code":93}},"authorContributionVariance":{"drustanyjt":181243.8,"Jayne1010":17581.104,"tengcharmaine":25653.709,"jiahui0309":3501.7957},"authorDisplayNameMap":{"drustanyjt":"CS2103T-F14-2 YEO ..STAN","Jayne1010":"CS2103T-F14-2 CHEN..AYNE","tengcharmaine":"CS2103T-F14-2 TENG..AINE","jiahui0309":"CS2103T-F14-2 SONG.. HUI"}} diff --git a/AY2324S2-CS2103T-F14-3_tp_master/authorship.json b/AY2324S2-CS2103T-F14-3_tp_master/authorship.json index 8cb2d09f..13d28460 100644 --- a/AY2324S2-CS2103T-F14-3_tp_master/authorship.json +++ b/AY2324S2-CS2103T-F14-3_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"kailashgautham"},"content":"[![CI Status](https://github.com/AY2324S2-CS2103T-F14-3/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S2-CS2103T-F14-3/tp/actions)","lastModifiedDate":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"kailashgautham"},"content":"[![codecov](https://codecov.io/gh/AY2324S2-CS2103T-F14-3/tp/graph/badge.svg?token\u003dLJBQBAER31)](https://codecov.io/gh/AY2324S2-CS2103T-F14-3/tp)","lastModifiedDate":"2024-03-12"},{"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":"kailashgautham"},"content":"* This is **a project for Software Engineering (SE) students in CS2103T**.\u003cbr\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":7,"author":{"gitId":"-"},"content":" Example usages:","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"kailashgautham"},"content":" * For a TA to keep track of their students, or","lastModifiedDate":"2024-03-04"},{"lineNumber":9,"author":{"gitId":"kailashgautham"},"content":" * For a personal project to keep track of your contacts.","lastModifiedDate":"2024-03-04"},{"lineNumber":10,"author":{"gitId":"kailashgautham"},"content":"* The project simulates an ongoing software project for a desktop application (called _TA Toolkit_) used for managing contact details.","lastModifiedDate":"2024-03-04"},{"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":"kailashgautham"},"content":"* It is named `TA Toolkit` because it is a toolkit that allows TAs to manage their students\u0027 contacts and other information in a more organised manner.","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"kailashgautham":7,"-":6}},{"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":"g-tejas"},"content":" archiveFileName \u003d \u0027tatoolkit.jar\u0027","lastModifiedDate":"2024-03-21"},{"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":{"g-tejas":1,"-":71}},{"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":"g-tejas"},"content":"### Tejas Garrepally","lastModifiedDate":"2024-02-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"teojunda"},"content":"\u003cimg src\u003d\"images/g-tejas.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"g-tejas"},"content":"[[homepage](http://www.gtejas.com)]","lastModifiedDate":"2024-02-24"},{"lineNumber":19,"author":{"gitId":"g-tejas"},"content":"[[github](https://github.com/g-tejas)]","lastModifiedDate":"2024-02-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"g-tejas"},"content":"* Role:","lastModifiedDate":"2024-02-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"kailashgautham"},"content":"### Gautham Kailash","lastModifiedDate":"2024-02-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"kailashgautham"},"content":"\u003cimg src\u003d\"images/kailashgautham.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-02-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"kailashgautham"},"content":"[[homepage](https://www.kailashgautham.com)]","lastModifiedDate":"2024-02-24"},{"lineNumber":29,"author":{"gitId":"kailashgautham"},"content":"[[github](http://github.com/kailashgautham)]","lastModifiedDate":"2024-02-24"},{"lineNumber":30,"author":{"gitId":"kailashgautham"},"content":"[[portfolio](team/kailashgautham.md)]","lastModifiedDate":"2024-02-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"kailashgautham"},"content":"* Role: TBC","lastModifiedDate":"2024-02-24"},{"lineNumber":33,"author":{"gitId":"kailashgautham"},"content":"* Responsibilities: TBC","lastModifiedDate":"2024-02-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"hiivan"},"content":"### Ivan Ang","lastModifiedDate":"2024-03-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"hiivan"},"content":"\u003cimg src\u003d\"images/hiivan.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"hiivan"},"content":"[[homepage](https://www.ivan-ang.com)]","lastModifiedDate":"2024-03-01"},{"lineNumber":40,"author":{"gitId":"hiivan"},"content":"[[github](https://github.com/hiivan)]","lastModifiedDate":"2024-03-01"},{"lineNumber":41,"author":{"gitId":"hiivan"},"content":"[[portfolio](team/ivan.md)]","lastModifiedDate":"2024-03-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"hiivan"},"content":"* Role: TBC","lastModifiedDate":"2024-03-01"},{"lineNumber":44,"author":{"gitId":"hiivan"},"content":"* Responsibilities: TBC","lastModifiedDate":"2024-03-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"teojunda"},"content":"### Axel Teo","lastModifiedDate":"2024-03-02"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"teojunda"},"content":"\u003cimg src\u003d\"images/teojunda.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"teojunda"},"content":"[[github](http://github.com/teojunda)]","lastModifiedDate":"2024-03-02"},{"lineNumber":51,"author":{"gitId":"teojunda"},"content":"[[portfolio](team/teojunda.md)]","lastModifiedDate":"2024-03-02"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"* Responsibilities: Dev Ops + Threading","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"YuSoonZ"},"content":"### Ng Yu Soon","lastModifiedDate":"2024-03-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"YuSoonZ"},"content":"\u003cimg src\u003d\"images/yusoonz.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"YuSoonZ"},"content":"[[github](http://github.com/yusoonz)]","lastModifiedDate":"2024-03-05"},{"lineNumber":61,"author":{"gitId":"YuSoonZ"},"content":"[[portfolio](team/ngyusoon.md)]","lastModifiedDate":"2024-03-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"YuSoonZ"},"content":"* Responsibilities: TBC","lastModifiedDate":"2024-03-05"}],"authorContributionMap":{"YuSoonZ":5,"kailashgautham":7,"teojunda":5,"hiivan":7,"g-tejas":4,"-":36}},{"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":"teojunda"},"content":"# TA Toolkit Developer Guide","lastModifiedDate":"2024-03-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":"-"},"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":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":"hiivan"},"content":"The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues the command `dc 1` to delete a person.","lastModifiedDate":"2024-03-20"},{"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":"-"},"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":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":"-"},"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":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":"-"},"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":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":"hiivan"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"dc 1\")` API call as an example.","lastModifiedDate":"2024-03-20"},{"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 continues till 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).\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-02-09"},{"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":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12"},{"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":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"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":"2021-07-31"},{"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":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":133,"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":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":135,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"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":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"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":148,"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":149,"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":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","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":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"teojunda"},"content":"### Edit a `Person`","lastModifiedDate":"2024-03-19"},{"lineNumber":162,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":163,"author":{"gitId":"teojunda"},"content":"Edits the details of an existing `Person` identified by their `INDEX`in the displayed person list.","lastModifiedDate":"2024-03-19"},{"lineNumber":164,"author":{"gitId":"teojunda"},"content":"The commands are implemented in the `EditCommand` class which extend the `Command` class.","lastModifiedDate":"2024-03-19"},{"lineNumber":165,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":166,"author":{"gitId":"teojunda"},"content":"* Step 1. The `EditCommand` object\u0027s `execute()` method is called.","lastModifiedDate":"2024-03-19"},{"lineNumber":167,"author":{"gitId":"teojunda"},"content":"* Step 2. The `INDEX` is checked to be within the valid range of the displayed person list. If the `INDEX` given is invalid (i.e., out of range), a `CommandException` is thrown.","lastModifiedDate":"2024-03-19"},{"lineNumber":168,"author":{"gitId":"teojunda"},"content":"* Step 3. The `Person` at the given `INDEX` is referenced and removed from person list.","lastModifiedDate":"2024-03-19"},{"lineNumber":169,"author":{"gitId":"teojunda"},"content":"* Step 4. The field(s) to be edited are checked.","lastModifiedDate":"2024-03-19"},{"lineNumber":170,"author":{"gitId":"teojunda"},"content":" * If there are no fields to be edited, a `CommandException` is thrown.","lastModifiedDate":"2024-03-19"},{"lineNumber":171,"author":{"gitId":"teojunda"},"content":" * If any of the edited fields are invalid, a `CommandException` is thrown.","lastModifiedDate":"2024-03-19"},{"lineNumber":172,"author":{"gitId":"teojunda"},"content":" * If the edited person is the same as the original person, a `CommandException` is thrown`.","lastModifiedDate":"2024-03-19"},{"lineNumber":173,"author":{"gitId":"teojunda"},"content":" * If any of `Email`, `Phone`, `Telegram`, `Github` fields are duplicates with any existing person in person list, a `CommandException` is thrown.","lastModifiedDate":"2024-03-19"},{"lineNumber":174,"author":{"gitId":"teojunda"},"content":"* Step 5. The model object\u0027s `addPerson()` method is called. The input parameter is the `editedPerson` with the edited details.","lastModifiedDate":"2024-03-19"},{"lineNumber":175,"author":{"gitId":"teojunda"},"content":"* Step 5. The `Person` field(s) are edited.","lastModifiedDate":"2024-03-19"},{"lineNumber":176,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":177,"author":{"gitId":"teojunda"},"content":"The diagram below describes this behaviour concisely. It shows how a user’s command is processed and what message is ultimately shown if they decide to edit a person.","lastModifiedDate":"2024-03-19"},{"lineNumber":178,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":179,"author":{"gitId":"teojunda"},"content":"\u003cpuml src\u003d\"diagrams/EditCommandActivityDiagram.puml\" /\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":180,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":181,"author":{"gitId":"teojunda"},"content":"The sequence diagram below also shows the interaction between the various components during the execution of the `EditCommand`.","lastModifiedDate":"2024-03-19"},{"lineNumber":182,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":183,"author":{"gitId":"teojunda"},"content":"\u003cpuml src\u003d\"diagrams/EditCommandSequenceDiagram.puml\" /\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":184,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":185,"author":{"gitId":"YuSoonZ"},"content":"### View a `Person`","lastModifiedDate":"2024-03-20"},{"lineNumber":186,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":187,"author":{"gitId":"YuSoonZ"},"content":"Views the details of an existing `Person` identified by their `INDEX`in the displayed person list.","lastModifiedDate":"2024-03-20"},{"lineNumber":188,"author":{"gitId":"YuSoonZ"},"content":"The commands are implemented in the `ViewCommand` class which extend the `Command` class.","lastModifiedDate":"2024-03-20"},{"lineNumber":189,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":190,"author":{"gitId":"YuSoonZ"},"content":"* Step 1. The `ViewCommand` object\u0027s `execute()` method is called.","lastModifiedDate":"2024-03-20"},{"lineNumber":191,"author":{"gitId":"YuSoonZ"},"content":"* Step 2. The `INDEX` is checked to be within the valid range of the displayed person list. If the `INDEX` given is invalid (i.e., out of range), a `CommandException` is thrown.","lastModifiedDate":"2024-03-20"},{"lineNumber":192,"author":{"gitId":"YuSoonZ"},"content":"* Step 3. The `Person` at the given `INDEX` is referenced and then displayed to the user.","lastModifiedDate":"2024-03-20"},{"lineNumber":193,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":194,"author":{"gitId":"YuSoonZ"},"content":"The diagram below describes this behaviour concisely. It shows how a user’s command is processed and what message is ultimately shown if they decide to view a person.","lastModifiedDate":"2024-03-20"},{"lineNumber":195,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":196,"author":{"gitId":"YuSoonZ"},"content":"\u003cpuml src\u003d\"diagrams/ViewCommandActivityDiagram.puml\" /\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":197,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":198,"author":{"gitId":"YuSoonZ"},"content":"The sequence diagram below also shows the interaction between the various components during the execution of the `ViewCommand`.","lastModifiedDate":"2024-03-20"},{"lineNumber":199,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":200,"author":{"gitId":"YuSoonZ"},"content":"\u003cpuml src\u003d\"diagrams/ViewCommandSequenceDiagram.puml\" /\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":201,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":202,"author":{"gitId":"teojunda"},"content":"\u003cdiv style\u003d\"page-break-after: always;\"\u003e\u003c/div\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":203,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":204,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"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":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"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":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"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":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"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":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"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":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":226,"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":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"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":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":234,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"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":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":241,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"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":244,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":247,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"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":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":256,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09"},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":260,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":261,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":262,"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":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":264,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":266,"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":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":268,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":269,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":270,"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":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":274,"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":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":278,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":280,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":281,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":282,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":284,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":286,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":287,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":288,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":290,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":291,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":292,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"lineNumber":293,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":294,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":295,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":296,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":297,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":298,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":299,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23"},{"lineNumber":300,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":302,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":303,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":304,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":306,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":307,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":308,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":309,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":310,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":311,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":312,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":313,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":314,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":315,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":316,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":317,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":318,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":320,"author":{"gitId":"teojunda"},"content":"* is a CS2103T TA in NUS School of Computing","lastModifiedDate":"2024-03-05"},{"lineNumber":321,"author":{"gitId":"teojunda"},"content":"* has a need to manage a significant number of contacts over different communication channels","lastModifiedDate":"2024-03-05"},{"lineNumber":322,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23"},{"lineNumber":323,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23"},{"lineNumber":324,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26"},{"lineNumber":325,"author":{"gitId":"teojunda"},"content":"* prefers to use a separate app that is made to manage student contacts efficiently","lastModifiedDate":"2024-03-05"},{"lineNumber":326,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23"},{"lineNumber":327,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":328,"author":{"gitId":"teojunda"},"content":"**Value proposition**:","lastModifiedDate":"2024-03-05"},{"lineNumber":329,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":330,"author":{"gitId":"teojunda"},"content":"* TA Toolkit is a desktop app that helps the user manage a large number of student contacts","lastModifiedDate":"2024-03-05"},{"lineNumber":331,"author":{"gitId":"teojunda"},"content":"across different communication channels efficiently. It is optimised for use via a Command","lastModifiedDate":"2024-03-05"},{"lineNumber":332,"author":{"gitId":"teojunda"},"content":"Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI)","lastModifiedDate":"2024-03-05"},{"lineNumber":333,"author":{"gitId":"teojunda"},"content":"* It categorises contacts into their tutorial group, allowing for easier management of contacts","lastModifiedDate":"2024-03-05"},{"lineNumber":334,"author":{"gitId":"teojunda"},"content":"* It allows the user to add, delete, edit, find and view student contacts","lastModifiedDate":"2024-03-05"},{"lineNumber":335,"author":{"gitId":"teojunda"},"content":"* Users are able to take notes on specific students and keep track of tasks associated to students","lastModifiedDate":"2024-03-05"},{"lineNumber":336,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":337,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":338,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":339,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":340,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":341,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":342,"author":{"gitId":"teojunda"},"content":"|----------|---------|-----------------------------------------------|----------------------------------------------------------|","lastModifiedDate":"2024-03-06"},{"lineNumber":343,"author":{"gitId":"teojunda"},"content":"| `* * *` | TA | add a student contact | keep track of my students when I need to |","lastModifiedDate":"2024-03-05"},{"lineNumber":344,"author":{"gitId":"teojunda"},"content":"| `* * *` | TA | delete a student contact | remove students from the database if they drop the class |","lastModifiedDate":"2024-03-05"},{"lineNumber":345,"author":{"gitId":"teojunda"},"content":"| `* * *` | TA | view all student contacts | see a list of all my students |","lastModifiedDate":"2024-03-05"},{"lineNumber":346,"author":{"gitId":"teojunda"},"content":"| `* *` | TA | view a students\u0027 detailed information | see all the information related to a student |","lastModifiedDate":"2024-03-06"},{"lineNumber":347,"author":{"gitId":"teojunda"},"content":"| `* *` | TA | edit a student contact | update a students’s details should they change |","lastModifiedDate":"2024-03-05"},{"lineNumber":348,"author":{"gitId":"teojunda"},"content":"| `* *` | TA | assign student to project team | organise students according to their project team |","lastModifiedDate":"2024-03-06"},{"lineNumber":349,"author":{"gitId":"teojunda"},"content":"| `* *` | TA | take notes on students | keep track of their strengths and weaknesses |","lastModifiedDate":"2024-03-05"},{"lineNumber":350,"author":{"gitId":"teojunda"},"content":"| `* *` | TA | delete notes on students | remove notes that are no longer relevant |","lastModifiedDate":"2024-03-05"},{"lineNumber":351,"author":{"gitId":"teojunda"},"content":"| `*` | TA | mark student as absent for a specific class | be aware of who is missing lessons |","lastModifiedDate":"2024-03-06"},{"lineNumber":352,"author":{"gitId":"teojunda"},"content":"| `*` | TA | unmark student as absent for a specific class | correct mistakes in attendance marking |","lastModifiedDate":"2024-03-06"},{"lineNumber":353,"author":{"gitId":"teojunda"},"content":"| `* ` | TA | view all student contacts for a project team | see a list of students in a project team |","lastModifiedDate":"2024-03-06"},{"lineNumber":354,"author":{"gitId":"teojunda"},"content":"| `* ` | TA | view summary of all students attendance | get a quick overview of class attendance |","lastModifiedDate":"2024-03-06"},{"lineNumber":355,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":356,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":357,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":358,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":359,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":360,"author":{"gitId":"teojunda"},"content":"(For all use cases below, the **System** is the `TA Toolkit` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2024-03-05"},{"lineNumber":361,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":362,"author":{"gitId":"teojunda"},"content":"**Use case: UC01 - Adding a student**","lastModifiedDate":"2024-03-06"},{"lineNumber":363,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":364,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":365,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":366,"author":{"gitId":"teojunda"},"content":"1. User enters command to add a student","lastModifiedDate":"2024-03-06"},{"lineNumber":367,"author":{"gitId":"teojunda"},"content":"2. TA Toolkit adds the student to the list of students","lastModifiedDate":"2024-03-06"},{"lineNumber":368,"author":{"gitId":"teojunda"},"content":"3. TA Toolkit displays a success message along with the student’s contact details","lastModifiedDate":"2024-03-06"},{"lineNumber":369,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":370,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":371,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":372,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":373,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":374,"author":{"gitId":"teojunda"},"content":"* 1a. The add student command format is invalid.","lastModifiedDate":"2024-03-06"},{"lineNumber":375,"author":{"gitId":"teojunda"},"content":" * 1a1. TA Toolkit shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":376,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":377,"author":{"gitId":"teojunda"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-06"},{"lineNumber":378,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":379,"author":{"gitId":"teojunda"},"content":"* 2a. Student already exists in the list of students.","lastModifiedDate":"2024-03-06"},{"lineNumber":380,"author":{"gitId":"teojunda"},"content":" * 2a1. TA Toolkit shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":381,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":382,"author":{"gitId":"teojunda"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":383,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":384,"author":{"gitId":"teojunda"},"content":"---","lastModifiedDate":"2024-03-06"},{"lineNumber":385,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":386,"author":{"gitId":"teojunda"},"content":"**Use case: UC02 - Deleting a student**","lastModifiedDate":"2024-03-06"},{"lineNumber":387,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":388,"author":{"gitId":"teojunda"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":389,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":390,"author":{"gitId":"teojunda"},"content":"1. User enters command to delete a student","lastModifiedDate":"2024-03-06"},{"lineNumber":391,"author":{"gitId":"teojunda"},"content":"2. TA Toolkit requests for confirmation","lastModifiedDate":"2024-03-06"},{"lineNumber":392,"author":{"gitId":"teojunda"},"content":"3. User confirms","lastModifiedDate":"2024-03-06"},{"lineNumber":393,"author":{"gitId":"teojunda"},"content":"4. TA Toolkit deletes the student’s contact and displays a success message","lastModifiedDate":"2024-03-06"},{"lineNumber":394,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":395,"author":{"gitId":"teojunda"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":396,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":397,"author":{"gitId":"teojunda"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":398,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":399,"author":{"gitId":"teojunda"},"content":"* 1a. TA Toolkit does not contain the student specified","lastModifiedDate":"2024-03-06"},{"lineNumber":400,"author":{"gitId":"teojunda"},"content":" * 1a1. TA Toolkit shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":401,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":402,"author":{"gitId":"teojunda"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-06"},{"lineNumber":403,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":404,"author":{"gitId":"teojunda"},"content":"* 3a. The User chooses to cancel the deletion of the student","lastModifiedDate":"2024-03-06"},{"lineNumber":405,"author":{"gitId":"teojunda"},"content":" * 3a1. TA Toolkit cancels the deletion","lastModifiedDate":"2024-03-06"},{"lineNumber":406,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":407,"author":{"gitId":"teojunda"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":408,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":409,"author":{"gitId":"teojunda"},"content":"---","lastModifiedDate":"2024-03-06"},{"lineNumber":410,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":411,"author":{"gitId":"teojunda"},"content":"**Use case: UC03 - Update a student**","lastModifiedDate":"2024-03-06"},{"lineNumber":412,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":413,"author":{"gitId":"teojunda"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":414,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":415,"author":{"gitId":"teojunda"},"content":"1. User enters the command to update a student’s details","lastModifiedDate":"2024-03-06"},{"lineNumber":416,"author":{"gitId":"teojunda"},"content":"2. TA Toolkit modifies the values that user intended to replace","lastModifiedDate":"2024-03-06"},{"lineNumber":417,"author":{"gitId":"teojunda"},"content":"3. TA Toolkit displays a success message along with the student’s updated contact details","lastModifiedDate":"2024-03-06"},{"lineNumber":418,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":419,"author":{"gitId":"teojunda"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":420,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":421,"author":{"gitId":"teojunda"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":422,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":423,"author":{"gitId":"teojunda"},"content":"* 1a. The update student command format is invalid.","lastModifiedDate":"2024-03-06"},{"lineNumber":424,"author":{"gitId":"teojunda"},"content":" * 1a1. TA Toolkit shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":425,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":426,"author":{"gitId":"teojunda"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-06"},{"lineNumber":427,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":428,"author":{"gitId":"teojunda"},"content":"* 2a. Student does not exist in the list of students.","lastModifiedDate":"2024-03-06"},{"lineNumber":429,"author":{"gitId":"teojunda"},"content":" * 2a1. TA Toolkit shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":430,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":431,"author":{"gitId":"teojunda"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-06"},{"lineNumber":432,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":433,"author":{"gitId":"teojunda"},"content":"---","lastModifiedDate":"2024-03-06"},{"lineNumber":434,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":435,"author":{"gitId":"teojunda"},"content":"**Use case: UC04 - Viewing students overview**","lastModifiedDate":"2024-03-06"},{"lineNumber":436,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":437,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":438,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":439,"author":{"gitId":"teojunda"},"content":"1. User requests to view all student","lastModifiedDate":"2024-03-06"},{"lineNumber":440,"author":{"gitId":"teojunda"},"content":"2. TA Toolkit shows a list of all members","lastModifiedDate":"2024-03-06"},{"lineNumber":441,"author":{"gitId":"teojunda"},"content":"3. TA Toolkit displays a success message","lastModifiedDate":"2024-03-06"},{"lineNumber":442,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":443,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":444,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":445,"author":{"gitId":"teojunda"},"content":"---","lastModifiedDate":"2024-03-06"},{"lineNumber":446,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":447,"author":{"gitId":"teojunda"},"content":"**Use case: UC05 - View a student detailed**","lastModifiedDate":"2024-03-06"},{"lineNumber":448,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":449,"author":{"gitId":"teojunda"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":450,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":451,"author":{"gitId":"teojunda"},"content":"1. User requests to view the detailed information of a student","lastModifiedDate":"2024-03-06"},{"lineNumber":452,"author":{"gitId":"teojunda"},"content":"2. TA Toolkit shows the detailed information of the student","lastModifiedDate":"2024-03-06"},{"lineNumber":453,"author":{"gitId":"teojunda"},"content":"3. TA Toolkit displays a success message","lastModifiedDate":"2024-03-06"},{"lineNumber":454,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":455,"author":{"gitId":"teojunda"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":456,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":457,"author":{"gitId":"teojunda"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":458,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":459,"author":{"gitId":"teojunda"},"content":"* 1a. The view student command format is invalid.","lastModifiedDate":"2024-03-06"},{"lineNumber":460,"author":{"gitId":"teojunda"},"content":" * 1a1. TA Toolkit shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":461,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":462,"author":{"gitId":"teojunda"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-06"},{"lineNumber":463,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":464,"author":{"gitId":"teojunda"},"content":"* 1b. The requested student is invalid.","lastModifiedDate":"2024-03-06"},{"lineNumber":465,"author":{"gitId":"teojunda"},"content":" * 1b1. TA Toolkit shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":466,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":467,"author":{"gitId":"teojunda"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-06"},{"lineNumber":468,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":469,"author":{"gitId":"teojunda"},"content":"---","lastModifiedDate":"2024-03-06"},{"lineNumber":470,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":471,"author":{"gitId":"teojunda"},"content":"**Use case: UC06 - Assign student to project team**","lastModifiedDate":"2024-03-06"},{"lineNumber":472,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":473,"author":{"gitId":"teojunda"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":474,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":475,"author":{"gitId":"teojunda"},"content":"1. User requests to assign student to project team","lastModifiedDate":"2024-03-06"},{"lineNumber":476,"author":{"gitId":"teojunda"},"content":"2. TA Toolkit adds the project team tag to the student","lastModifiedDate":"2024-03-06"},{"lineNumber":477,"author":{"gitId":"teojunda"},"content":"3. TA Toolkit displays a success message","lastModifiedDate":"2024-03-06"},{"lineNumber":478,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":479,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":480,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":481,"author":{"gitId":"teojunda"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":482,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":483,"author":{"gitId":"teojunda"},"content":"* 1a. The group student command format is invalid.","lastModifiedDate":"2024-03-06"},{"lineNumber":484,"author":{"gitId":"teojunda"},"content":" * 1a1. TA Toolkit shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":485,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":486,"author":{"gitId":"teojunda"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-06"},{"lineNumber":487,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":488,"author":{"gitId":"teojunda"},"content":"* 1b. The requested student is invalid.","lastModifiedDate":"2024-03-06"},{"lineNumber":489,"author":{"gitId":"teojunda"},"content":" * 1b1. TA Toolkit shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":490,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":491,"author":{"gitId":"teojunda"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-06"},{"lineNumber":492,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":493,"author":{"gitId":"teojunda"},"content":"* 2b. The student is already assigned a project team tag.","lastModifiedDate":"2024-03-06"},{"lineNumber":494,"author":{"gitId":"teojunda"},"content":" * 2b1. TA Toolkit shows a message asking whether to replace or keep the existing tag.","lastModifiedDate":"2024-03-06"},{"lineNumber":495,"author":{"gitId":"teojunda"},"content":" * 2b1a. User decides to replace the existing tag.","lastModifiedDate":"2024-03-06"},{"lineNumber":496,"author":{"gitId":"teojunda"},"content":" * 2b1a1. TA Toolkit removes the current project team tag from the student.","lastModifiedDate":"2024-03-06"},{"lineNumber":497,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":498,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23"},{"lineNumber":499,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":500,"author":{"gitId":"teojunda"},"content":" * 2b1b. User decides to keep the existing tag.","lastModifiedDate":"2024-03-06"},{"lineNumber":501,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":502,"author":{"gitId":"teojunda"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":503,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":504,"author":{"gitId":"teojunda"},"content":"---","lastModifiedDate":"2024-03-06"},{"lineNumber":505,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":506,"author":{"gitId":"teojunda"},"content":"**Use case: UC07 - Add note on student**","lastModifiedDate":"2024-03-06"},{"lineNumber":507,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":508,"author":{"gitId":"teojunda"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":509,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":510,"author":{"gitId":"teojunda"},"content":"1. User requests to add a note regarding a student","lastModifiedDate":"2024-03-06"},{"lineNumber":511,"author":{"gitId":"teojunda"},"content":"2. TA Toolkit adds the note to the student’s list of notes","lastModifiedDate":"2024-03-06"},{"lineNumber":512,"author":{"gitId":"teojunda"},"content":"3. TA Toolkit displays a success message","lastModifiedDate":"2024-03-06"},{"lineNumber":513,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":514,"author":{"gitId":"teojunda"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":515,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":516,"author":{"gitId":"teojunda"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":517,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":518,"author":{"gitId":"teojunda"},"content":"* 1a. The add note command format is invalid.","lastModifiedDate":"2024-03-06"},{"lineNumber":519,"author":{"gitId":"teojunda"},"content":" * 1a1. TA Toolkit shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":520,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":521,"author":{"gitId":"teojunda"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-06"},{"lineNumber":522,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":523,"author":{"gitId":"teojunda"},"content":"* 1b. The requested student is invalid.","lastModifiedDate":"2024-03-06"},{"lineNumber":524,"author":{"gitId":"teojunda"},"content":" * 1b1. TA Toolkit shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":525,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":526,"author":{"gitId":"teojunda"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-06"},{"lineNumber":527,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":528,"author":{"gitId":"teojunda"},"content":"---","lastModifiedDate":"2024-03-06"},{"lineNumber":529,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":530,"author":{"gitId":"teojunda"},"content":"**Use case: UC08 - Delete note on student**","lastModifiedDate":"2024-03-06"},{"lineNumber":531,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":532,"author":{"gitId":"teojunda"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":533,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":534,"author":{"gitId":"teojunda"},"content":"1. User requests to delete a note regarding a student","lastModifiedDate":"2024-03-06"},{"lineNumber":535,"author":{"gitId":"teojunda"},"content":"2. TA Toolkit removes the note from the student’s list of notes","lastModifiedDate":"2024-03-06"},{"lineNumber":536,"author":{"gitId":"teojunda"},"content":"3. TA Toolkit displays a success message","lastModifiedDate":"2024-03-06"},{"lineNumber":537,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":538,"author":{"gitId":"teojunda"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":539,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":540,"author":{"gitId":"teojunda"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":541,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":542,"author":{"gitId":"teojunda"},"content":"* 1a. The delete note command format is invalid.","lastModifiedDate":"2024-03-06"},{"lineNumber":543,"author":{"gitId":"teojunda"},"content":" * 1a1. TA Toolkit shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":544,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":545,"author":{"gitId":"teojunda"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-06"},{"lineNumber":546,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":547,"author":{"gitId":"teojunda"},"content":"* 1b. The requested student is invalid.","lastModifiedDate":"2024-03-06"},{"lineNumber":548,"author":{"gitId":"teojunda"},"content":" * 1b1. TA Toolkit shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":549,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":550,"author":{"gitId":"teojunda"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-06"},{"lineNumber":551,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":552,"author":{"gitId":"teojunda"},"content":"* 2a. The note requested to be deleted is invalid.","lastModifiedDate":"2024-03-06"},{"lineNumber":553,"author":{"gitId":"teojunda"},"content":" * 2a1. TA Toolkit shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":554,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":555,"author":{"gitId":"teojunda"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-06"},{"lineNumber":556,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":557,"author":{"gitId":"teojunda"},"content":"---","lastModifiedDate":"2024-03-06"},{"lineNumber":558,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":559,"author":{"gitId":"teojunda"},"content":"**Use case: UC09 - Mark student as absent from a specific class**","lastModifiedDate":"2024-03-06"},{"lineNumber":560,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":561,"author":{"gitId":"teojunda"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":562,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":563,"author":{"gitId":"teojunda"},"content":"1. Use requests to mark student as absent for a class","lastModifiedDate":"2024-03-06"},{"lineNumber":564,"author":{"gitId":"teojunda"},"content":"2. TA Toolkit marks the student as absent for that class","lastModifiedDate":"2024-03-06"},{"lineNumber":565,"author":{"gitId":"teojunda"},"content":"3. TA Toolkit displays a success message","lastModifiedDate":"2024-03-06"},{"lineNumber":566,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":567,"author":{"gitId":"teojunda"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":568,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":569,"author":{"gitId":"teojunda"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":570,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":571,"author":{"gitId":"teojunda"},"content":"* 1a. The mark student command format is invalid.","lastModifiedDate":"2024-03-06"},{"lineNumber":572,"author":{"gitId":"teojunda"},"content":" * 1a1. TA Toolkit shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":573,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":574,"author":{"gitId":"teojunda"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-06"},{"lineNumber":575,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":576,"author":{"gitId":"teojunda"},"content":"* 1b. The requested student is invalid.","lastModifiedDate":"2024-03-06"},{"lineNumber":577,"author":{"gitId":"teojunda"},"content":" * 1b1. TA Toolkit shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":578,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":579,"author":{"gitId":"teojunda"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-06"},{"lineNumber":580,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":581,"author":{"gitId":"teojunda"},"content":"---","lastModifiedDate":"2024-03-06"},{"lineNumber":582,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":583,"author":{"gitId":"teojunda"},"content":"**Use case: UC10 - Unmark student as absent for a class**","lastModifiedDate":"2024-03-06"},{"lineNumber":584,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":585,"author":{"gitId":"teojunda"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":586,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":587,"author":{"gitId":"teojunda"},"content":"1. User requests to mark student as absent for a class","lastModifiedDate":"2024-03-06"},{"lineNumber":588,"author":{"gitId":"teojunda"},"content":"2. TA Toolkit marks the student as absent for that class","lastModifiedDate":"2024-03-06"},{"lineNumber":589,"author":{"gitId":"teojunda"},"content":"3. TA Toolkit displays a success message","lastModifiedDate":"2024-03-06"},{"lineNumber":590,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":591,"author":{"gitId":"teojunda"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":592,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":593,"author":{"gitId":"teojunda"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":594,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":595,"author":{"gitId":"teojunda"},"content":"* 1a. The unmark student command format is invalid.","lastModifiedDate":"2024-03-06"},{"lineNumber":596,"author":{"gitId":"teojunda"},"content":" * 1a1. TA Toolkit shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":597,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":598,"author":{"gitId":"teojunda"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-06"},{"lineNumber":599,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":600,"author":{"gitId":"teojunda"},"content":"* 1b. The requested student is invalid.","lastModifiedDate":"2024-03-06"},{"lineNumber":601,"author":{"gitId":"teojunda"},"content":" * 1b1. TA Toolkit shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":602,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":603,"author":{"gitId":"teojunda"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-06"},{"lineNumber":604,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":605,"author":{"gitId":"teojunda"},"content":"* 2a. The requested student is not currently marked as absent for the class.","lastModifiedDate":"2024-03-06"},{"lineNumber":606,"author":{"gitId":"teojunda"},"content":" * 2a1. TA Toolkit shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":607,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":608,"author":{"gitId":"teojunda"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-06"},{"lineNumber":609,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":610,"author":{"gitId":"teojunda"},"content":"---","lastModifiedDate":"2024-03-06"},{"lineNumber":611,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":612,"author":{"gitId":"teojunda"},"content":"**Use case: UC11 - View all students by project team tag**","lastModifiedDate":"2024-03-06"},{"lineNumber":613,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":614,"author":{"gitId":"teojunda"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":615,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":616,"author":{"gitId":"teojunda"},"content":"1. User requests to view all students with a specified project team tag","lastModifiedDate":"2024-03-06"},{"lineNumber":617,"author":{"gitId":"teojunda"},"content":"2. TA Toolkit displays a list of all members with that project team tag","lastModifiedDate":"2024-03-06"},{"lineNumber":618,"author":{"gitId":"teojunda"},"content":"3. TA Toolkit displays a success message","lastModifiedDate":"2024-03-06"},{"lineNumber":619,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":620,"author":{"gitId":"teojunda"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":621,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":622,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":623,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":624,"author":{"gitId":"teojunda"},"content":"* 1a. The view student by tag command format is invalid.","lastModifiedDate":"2024-03-06"},{"lineNumber":625,"author":{"gitId":"teojunda"},"content":" * 1a1. TA Toolkit shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":626,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":627,"author":{"gitId":"teojunda"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-06"},{"lineNumber":628,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":629,"author":{"gitId":"teojunda"},"content":"* 1b. The requested tag is invalid.","lastModifiedDate":"2024-03-06"},{"lineNumber":630,"author":{"gitId":"teojunda"},"content":" * 1b1. TA Toolkit shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":631,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":632,"author":{"gitId":"teojunda"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-06"},{"lineNumber":633,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":634,"author":{"gitId":"teojunda"},"content":"---","lastModifiedDate":"2024-03-06"},{"lineNumber":635,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":636,"author":{"gitId":"teojunda"},"content":"**Use case: UC12 - View summary of students attendance**","lastModifiedDate":"2024-03-06"},{"lineNumber":637,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":638,"author":{"gitId":"teojunda"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":639,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":640,"author":{"gitId":"teojunda"},"content":"1. User requests to view a summary of all students attendance","lastModifiedDate":"2024-03-06"},{"lineNumber":641,"author":{"gitId":"teojunda"},"content":"2. TA Toolkit displays a summary of all students attendance","lastModifiedDate":"2024-03-06"},{"lineNumber":642,"author":{"gitId":"teojunda"},"content":"3. TA Toolkit displays a success message","lastModifiedDate":"2024-03-06"},{"lineNumber":643,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":644,"author":{"gitId":"teojunda"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":645,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":646,"author":{"gitId":"teojunda"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":647,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":648,"author":{"gitId":"teojunda"},"content":"* 1a. There are no students in storage.","lastModifiedDate":"2024-03-06"},{"lineNumber":649,"author":{"gitId":"teojunda"},"content":" * 1a1. TA Toolkit shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":650,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":651,"author":{"gitId":"teojunda"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":652,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":653,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":654,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":655,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":656,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":657,"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":658,"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":659,"author":{"gitId":"teojunda"},"content":"3. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should","lastModifiedDate":"2024-03-05"},{"lineNumber":660,"author":{"gitId":"teojunda"},"content":"be able to accomplish most of the tasks faster using commands than using the mouse.","lastModifiedDate":"2024-03-05"},{"lineNumber":661,"author":{"gitId":"teojunda"},"content":"4. All functions within the application must provide responses to user queries within a timeframe of 2 seconds.","lastModifiedDate":"2024-03-05"},{"lineNumber":662,"author":{"gitId":"teojunda"},"content":"5. The applications does not support concurrent usage by multiple users.","lastModifiedDate":"2024-03-05"},{"lineNumber":663,"author":{"gitId":"teojunda"},"content":"6. The application does not offer support for languages aside from English.","lastModifiedDate":"2024-03-05"},{"lineNumber":664,"author":{"gitId":"teojunda"},"content":"7. The application should be able to handle most common user input errors and provide meaningful error messages.","lastModifiedDate":"2024-03-05"},{"lineNumber":665,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":666,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":667,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":668,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":669,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":670,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09"},{"lineNumber":671,"author":{"gitId":"teojunda"},"content":"* **CLI**: Command Line Interface: A way of interacting with a computer program where the user issues commands to the","lastModifiedDate":"2024-03-05"},{"lineNumber":672,"author":{"gitId":"teojunda"},"content":"program in the form of successive lines of text (command lines). It emphasises text-based user interaction over graphical user interfaces.","lastModifiedDate":"2024-03-05"},{"lineNumber":673,"author":{"gitId":"teojunda"},"content":"* **TA**: Teaching Assistant","lastModifiedDate":"2024-03-05"},{"lineNumber":674,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":675,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":676,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":677,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":678,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":679,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":680,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":681,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":682,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12"},{"lineNumber":683,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":684,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":685,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":686,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":687,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":688,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":689,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":690,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":691,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":692,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":693,"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":694,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":695,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":696,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":697,"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":698,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":699,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":700,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":701,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":702,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":703,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":704,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":705,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":706,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":707,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":708,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":709,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":710,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":711,"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":712,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":713,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":714,"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":715,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":716,"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":717,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":718,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":719,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":720,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":721,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":722,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":723,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":724,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":725,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":726,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":727,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"YuSoonZ":17,"teojunda":322,"hiivan":2,"-":386}},{"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":"g-tejas"},"content":"# TA Toolkit User Guide","lastModifiedDate":"2024-03-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"g-tejas"},"content":"TA Toolkit is a **desktop app for managing students, optimized for use via a Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, TA Toolkit can get your student management tasks done faster than traditional GUI apps.","lastModifiedDate":"2024-03-05"},{"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":"kailashgautham"},"content":"1. Download the latest `TAToolkit.jar` from [here](https://github.com/AY2324S2-CS2103T-F14-3/tp/releases).","lastModifiedDate":"2024-03-06"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"kailashgautham"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your TA Toolkit.","lastModifiedDate":"2024-03-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"kailashgautham"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar TAToolkit.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":25,"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":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":"-"},"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":29,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"kailashgautham"},"content":" * `ac n/John Doe c/F14-3 p/98765432 e/johnd@example.com t/@johndoe g/johnDoeGithub` : Adds a student named `John Doe` to the TA Toolkit.","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"g-tejas"},"content":" * `dc 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"**Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"kailashgautham"},"content":" e.g. in `ac n/NAME`, `NAME` is a parameter which can be used as `ac n/John Doe`.","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"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":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"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":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"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":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"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":64,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":66,"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":67,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"kailashgautham"},"content":"### Adding a person: `ac`","lastModifiedDate":"2024-03-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"kailashgautham"},"content":"Adds a person to the TA Toolkit.","lastModifiedDate":"2024-03-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"kailashgautham"},"content":"Format: `ac n/NAME c/CLASS_GROUP e/EMAIL p/PHONE_NUMBER [t/TELEGRAM] [g/GITHUB]`","lastModifiedDate":"2024-03-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"kailashgautham"},"content":"* `ac n/John Doe c/F14-3 p/98765432 e/johnd@example.com t/@johndoe g/johnDoeGithub`","lastModifiedDate":"2024-03-13"},{"lineNumber":86,"author":{"gitId":"kailashgautham"},"content":"* `ac n/Betsy Crowe c/T10-2 e/betsycrowe@example.com p/1234567 g/betsycodes`","lastModifiedDate":"2024-03-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"YuSoonZ"},"content":"### Listing all persons : `ls`","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"kailashgautham"},"content":"Shows a list of all persons in the TA Toolkit.","lastModifiedDate":"2024-03-06"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"YuSoonZ"},"content":"Format: `ls`","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"teojunda"},"content":"### Updating a person : `uc`","lastModifiedDate":"2024-03-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"teojunda"},"content":"Updates an existing person in the TA Toolkit.","lastModifiedDate":"2024-03-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"teojunda"},"content":"Format: `uc INDEX [n/NAME] [c/CLASS_GROUP] [e/EMAIL] [p/PHONE] [t/TELEGRAM] [g/GITHUB]…​`","lastModifiedDate":"2024-03-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"teojunda"},"content":"* Updates 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":"2024-03-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"teojunda"},"content":"* The updated person must have a different field compared to the original person.","lastModifiedDate":"2024-03-13"},{"lineNumber":104,"author":{"gitId":"teojunda"},"content":"* When editing any field, EMAIL, PHONE, TELEGRAM, GITHUB must be unique compared to every other person.","lastModifiedDate":"2024-03-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"teojunda"},"content":"* `uc 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":"2024-03-13"},{"lineNumber":108,"author":{"gitId":"teojunda"},"content":"* `uc 2 n/Betsy Crower t/` Edits the name of the 2nd person to be `Betsy Crower` and clears the Telegram field.","lastModifiedDate":"2024-03-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":"### Locating persons by name: `find`","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"Finds persons whose names contain any of the given keywords.","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","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":"-"},"content":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":"* `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"YuSoonZ"},"content":"### Viewing a person : `view`","lastModifiedDate":"2024-03-18"},{"lineNumber":129,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":130,"author":{"gitId":"YuSoonZ"},"content":"View the specified person from the TA Toolkit.","lastModifiedDate":"2024-03-18"},{"lineNumber":131,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":132,"author":{"gitId":"YuSoonZ"},"content":"Format: `view INDEX`","lastModifiedDate":"2024-03-18"},{"lineNumber":133,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":134,"author":{"gitId":"YuSoonZ"},"content":"* View the person at the specified `INDEX`.","lastModifiedDate":"2024-03-18"},{"lineNumber":135,"author":{"gitId":"YuSoonZ"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2024-03-18"},{"lineNumber":136,"author":{"gitId":"YuSoonZ"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-03-18"},{"lineNumber":137,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":138,"author":{"gitId":"YuSoonZ"},"content":"Examples:","lastModifiedDate":"2024-03-18"},{"lineNumber":139,"author":{"gitId":"YuSoonZ"},"content":"* `ls` followed by `view 2` views the 2nd person in the TA Toolkit.","lastModifiedDate":"2024-03-18"},{"lineNumber":140,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":141,"author":{"gitId":"g-tejas"},"content":"### Deleting a person : `dc`","lastModifiedDate":"2024-03-14"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"kailashgautham"},"content":"Deletes the specified person from the TA Toolkit.","lastModifiedDate":"2024-03-06"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"g-tejas"},"content":"Format: `dc INDEX`","lastModifiedDate":"2024-03-14"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"* Deletes the person at the specified `INDEX`.","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"YuSoonZ"},"content":"* `ls` followed by `dc 2` deletes the 2nd person in the TA Toolkit.","lastModifiedDate":"2024-03-18"},{"lineNumber":153,"author":{"gitId":"g-tejas"},"content":"* `find Betsy` followed by `dc 1` deletes the 1st person in the results of the `find` command.","lastModifiedDate":"2024-03-14"},{"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":"kailashgautham"},"content":"Clears all entries from the TA Toolkit.","lastModifiedDate":"2024-03-06"},{"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":"kailashgautham"},"content":"TAToolkit data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.","lastModifiedDate":"2024-03-06"},{"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":"kailashgautham"},"content":"TAToolkit data are saved automatically as a JSON file `[JAR file location]/data/TAToolkit.json`. Advanced users are welcome to update data directly by editing that data file.","lastModifiedDate":"2024-03-06"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":175,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":177,"author":{"gitId":"-"},"content":"**Caution:**","lastModifiedDate":"2023-09-12"},{"lineNumber":178,"author":{"gitId":"kailashgautham"},"content":"If your changes to the data file makes its format invalid, TAToolkit 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.\u003cbr\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":179,"author":{"gitId":"kailashgautham"},"content":"Furthermore, certain edits can cause the TAToolkit to behave in unexpected ways (e.g., if a value entered is outside the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.","lastModifiedDate":"2024-03-06"},{"lineNumber":180,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":182,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"kailashgautham"},"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 TAToolkit home folder.","lastModifiedDate":"2024-03-06"},{"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":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":197,"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":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":199,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":201,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":"-----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-12"},{"lineNumber":205,"author":{"gitId":"kailashgautham"},"content":"**Add** | `ac n/NAME c/CLASS_GROUP e/EMAIL p/PHONE_NUMBER [t/TELEGRAM] [g/GITHUB]` \u003cbr\u003e e.g., `ac c/T10-2 n/James Ho p/22224444 e/jamesho@example.com t/@jamesho g/jameshoGithub`","lastModifiedDate":"2024-03-13"},{"lineNumber":206,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"g-tejas"},"content":"**Delete** | `dc INDEX`\u003cbr\u003e e.g., `dc 3`","lastModifiedDate":"2024-03-14"},{"lineNumber":208,"author":{"gitId":"teojunda"},"content":"**Edit** | `uc INDEX [n/NAME] [c/CLASS_GROUP] [e/EMAIL] [p/PHONE] [t/TELEGRAM] [g/GITHUB]…​`\u003cbr\u003e e.g.,`uc 2 n/James Lee e/jameslee@example.com`","lastModifiedDate":"2024-03-13"},{"lineNumber":209,"author":{"gitId":"-"},"content":"**Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake`","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"YuSoonZ"},"content":"**List** | `ls`","lastModifiedDate":"2024-03-18"},{"lineNumber":211,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"YuSoonZ"},"content":"**View** | `view INDEX`","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"YuSoonZ":18,"kailashgautham":19,"teojunda":9,"g-tejas":7,"-":159}},{"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":"kailashgautham"},"content":"user -[USER_COLOR]\u003e ui : \"dc 1\"","lastModifiedDate":"2024-03-16"},{"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":"kailashgautham"},"content":"ui -[UI_COLOR]\u003e logic : execute(\"dc 1\")","lastModifiedDate":"2024-03-16"},{"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":"-"},"content":"logic -[LOGIC_COLOR]\u003e model : deletePerson(p)","lastModifiedDate":"2019-07-03"},{"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":{"kailashgautham":2,"-":37}},{"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":"-"},"content":"AddressBook *-right-\u003e \"1\" UniquePersonList","lastModifiedDate":"2019-07-30"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"UniquePersonList -right-\u003e Person","lastModifiedDate":"2021-07-31"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":11,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"Person *--\u003e Name","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"kailashgautham"},"content":"Person *--\u003e ClassGroup","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"Person *--\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"kailashgautham"},"content":"Person *--\u003e Phone","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"kailashgautham"},"content":"Person |o--\u003e Telegram","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"kailashgautham"},"content":"Person |o--\u003e Github","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"kailashgautham":5,"-":14}},{"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":"hiivan"},"content":"participant \":AddressBookParser\" as TaToolkitParser LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"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 \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-02-09"},{"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 \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-02-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"hiivan"},"content":"[-\u003e LogicManager : execute(\"dc 1\")","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":"activate LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"hiivan"},"content":"LogicManager -\u003e TaToolkitParser : parseCommand(\"dc 1\")","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"hiivan"},"content":"activate TaToolkitParser","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"create DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"hiivan"},"content":"TaToolkitParser -\u003e DeleteCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":"activate DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"hiivan"},"content":"DeleteCommandParser --\u003e TaToolkitParser","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":"deactivate DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"hiivan"},"content":"TaToolkitParser -\u003e DeleteCommandParser : parse(\"1\")","lastModifiedDate":"2024-03-20"},{"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 :","lastModifiedDate":"2024-02-09"},{"lineNumber":38,"author":{"gitId":"-"},"content":"deactivate DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":40,"author":{"gitId":"hiivan"},"content":"DeleteCommandParser --\u003e TaToolkitParser : d","lastModifiedDate":"2024-03-20"},{"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":"hiivan"},"content":"DeleteCommandParser -[hidden]-\u003e TaToolkitParser","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":"destroy DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"hiivan"},"content":"TaToolkitParser --\u003e LogicManager : d","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"hiivan"},"content":"deactivate TaToolkitParser","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":49,"author":{"gitId":"-"},"content":"LogicManager -\u003e DeleteCommand : execute(m)","lastModifiedDate":"2024-02-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":"activate DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":52,"author":{"gitId":"-"},"content":"DeleteCommand -\u003e Model : deletePerson(1)","lastModifiedDate":"2019-07-03"},{"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 : r","lastModifiedDate":"2024-02-09"},{"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":{"hiivan":11,"-":59}},{"path":"docs/diagrams/EditCommandActivityDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"teojunda"},"content":"@startuml","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"teojunda"},"content":"skin rose","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"teojunda"},"content":"skinparam ActivityFontSize 15","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"teojunda"},"content":"skinparam ArrowFontSize 12","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"teojunda"},"content":"start","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"teojunda"},"content":":User enters command to update a Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"teojunda"},"content":"if () then ([command is invalid])","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"teojunda"},"content":" :Show error message\\nfor invalid command;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"teojunda"},"content":"else ([else])","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"teojunda"},"content":" if () then ([index is invalid])","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"teojunda"},"content":" :Show error message\\nfor invalid index;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"teojunda"},"content":" else ([else])","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"teojunda"},"content":" if () then ([no field is entered])","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"teojunda"},"content":" :Show error message\\nindicating no fields\\nenteredfor editing;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"teojunda"},"content":" else ([else])","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"teojunda"},"content":" if () then ([any field is invalid])","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"teojunda"},"content":" :Show error message\\nindicating invalid field;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"teojunda"},"content":" else ([else])","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"teojunda"},"content":" if () then ([updated person issame as original])","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"teojunda"},"content":" :Show error message indicating\\nupdated person is the same as\\nthe original person;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"teojunda"},"content":" else ([else])","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"teojunda"},"content":" if () then ([edited person contains duplicate\\nfields with another person])","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"teojunda"},"content":" :Show error message indicating\\n duplicated field.;","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"teojunda"},"content":" else ([else])","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"teojunda"},"content":" :Edit the details of the\\npersonin the person list;","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"teojunda"},"content":" :Update the person list\\nin the GUI, retaining\\nthe same filter;","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"teojunda"},"content":" :Show success message\\nwith person\u0027s information;","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"teojunda"},"content":" endif;","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"teojunda"},"content":" endif;","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"teojunda"},"content":" endif;","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"teojunda"},"content":" endif","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"teojunda"},"content":" endif","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"teojunda"},"content":"endif","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"teojunda"},"content":"stop","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"teojunda"},"content":"@enduml","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"teojunda":38}},{"path":"docs/diagrams/EditCommandSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"teojunda"},"content":"@startuml","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"teojunda"},"content":"!include style.puml","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"teojunda"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"teojunda"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"teojunda"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"teojunda"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"teojunda"},"content":"participant \":EditCommandParser\" as EditCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"teojunda"},"content":"participant \"e:EditCommand\" as EditCommand LOGIC_COLOR","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"teojunda"},"content":"participant \":CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"teojunda"},"content":"end box","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"teojunda"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"teojunda"},"content":"participant \":Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"teojunda"},"content":"end box","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"teojunda"},"content":"[-\u003e LogicManager : execute(\"uc 1 n/Harry Potter p/98765432\")","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"teojunda"},"content":"activate LogicManager","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"teojunda"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"uc 1 n/Harry Potter p/98765432\")","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"teojunda"},"content":"activate AddressBookParser","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"teojunda"},"content":"create EditCommandParser","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"teojunda"},"content":"AddressBookParser -\u003e EditCommandParser","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"teojunda"},"content":"activate EditCommandParser","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"teojunda"},"content":"EditCommandParser --\u003e AddressBookParser","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"teojunda"},"content":"deactivate EditCommandParser","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"teojunda"},"content":"AddressBookParser -\u003e EditCommandParser : parse(\"uc 1 n/Harry Potter p/98765432\")","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"teojunda"},"content":"activate EditCommandParser","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"teojunda"},"content":"create EditCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"teojunda"},"content":"EditCommandParser -\u003e EditCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"teojunda"},"content":"activate EditCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"teojunda"},"content":"EditCommand --\u003e EditCommandParser","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"teojunda"},"content":"deactivate EditCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"teojunda"},"content":"EditCommandParser --\u003e AddressBookParser","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"teojunda"},"content":"deactivate EditCommandParser","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"teojunda"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"teojunda"},"content":"EditCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"teojunda"},"content":"destroy EditCommandParser","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"teojunda"},"content":"AddressBookParser --\u003e LogicManager","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"teojunda"},"content":"deactivate AddressBookParser","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"teojunda"},"content":"LogicManager -\u003e EditCommand : execute()","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"teojunda"},"content":"activate EditCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"teojunda"},"content":"EditCommand -\u003e Model : getFilteredPersonList()","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"teojunda"},"content":"activate Model","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"teojunda"},"content":"Model --\u003e EditCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"teojunda"},"content":"deactivate Model","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"teojunda"},"content":"EditCommand -\u003e Model : deletePerson(originalPerson)","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"teojunda"},"content":"activate Model","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"teojunda"},"content":"Model --\u003e EditCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"teojunda"},"content":"deactivate Model","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"teojunda"},"content":"EditCommand -\u003e Model : addPerson(editedPerson)","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"teojunda"},"content":"activate Model","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"teojunda"},"content":"Model --\u003e EditCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"teojunda"},"content":"deactivate Model","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"teojunda"},"content":"create CommandResult","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"teojunda"},"content":"EditCommand -\u003e CommandResult","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"teojunda"},"content":"activate CommandResult","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"teojunda"},"content":"CommandResult --\u003e EditCommand : result","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"teojunda"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"teojunda"},"content":"EditCommand --\u003e LogicManager : result","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"teojunda"},"content":"deactivate EditCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"teojunda"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"teojunda"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"teojunda"},"content":"@enduml","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"teojunda":83}},{"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":"g-tejas"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyTaToolkit\" as ReadOnlyTaToolkit","lastModifiedDate":"2024-03-17"},{"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":"g-tejas"},"content":"Class TaToolkit","lastModifiedDate":"2024-03-17"},{"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":"-"},"content":"Class UniquePersonList","lastModifiedDate":"2021-07-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Class Person","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Class Name","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"g-tejas"},"content":"Class ClassGroup","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"g-tejas"},"content":"Class Email","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Class Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"g-tejas"},"content":"Class Telegram","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"g-tejas"},"content":"Class Github","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":24,"author":{"gitId":"-"},"content":"Class I #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"g-tejas"},"content":"TaToolkit .up.|\u003e ReadOnlyTaToolkit","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"ModelManager .up.|\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"Model .right.\u003e ReadOnlyUserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"g-tejas"},"content":"Model .left.\u003e ReadOnlyTaToolkit","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"g-tejas"},"content":"ModelManager -left-\u003e \"1\" TaToolkit","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"-"},"content":"ModelManager -right-\u003e \"1\" UserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"UserPrefs .up.|\u003e ReadOnlyUserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":39,"author":{"gitId":"g-tejas"},"content":"TaToolkit *--\u003e \"1\" UniquePersonList","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"-"},"content":"UniquePersonList --\u003e \"~* all\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":41,"author":{"gitId":"-"},"content":"Person *--\u003e Name","lastModifiedDate":"2019-07-03"},{"lineNumber":42,"author":{"gitId":"g-tejas"},"content":"Person *--\u003e ClassGroup","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"-"},"content":"Person *--\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":44,"author":{"gitId":"g-tejas"},"content":"Person *--\u003e Phone","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"g-tejas"},"content":"Person |o--\u003e Telegram","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"g-tejas"},"content":"Person |o--\u003e Github","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":48,"author":{"gitId":"-"},"content":"Person -[hidden]up--\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"UniquePersonList -[hidden]right-\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":51,"author":{"gitId":"g-tejas"},"content":"Name -[hidden]right-\u003e ClassGroup","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"g-tejas"},"content":"ClassGroup -[hidden]right-\u003e Email","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"g-tejas"},"content":"Email -[hidden]right-\u003e Phone","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"g-tejas"},"content":"Phone -[hidden]right-\u003e Telegram","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"g-tejas"},"content":"Telegram -[hidden]right-\u003e Github","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":"ModelManager --\u003e \"~* filtered\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":58,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"g-tejas":19,"-":39}},{"path":"docs/diagrams/ViewCommandActivityDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"YuSoonZ"},"content":"@startuml","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"YuSoonZ"},"content":"skin rose","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"YuSoonZ"},"content":"skinparam ActivityFontSize 15","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"YuSoonZ"},"content":"skinparam ArrowFontSize 12","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"YuSoonZ"},"content":"start","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"YuSoonZ"},"content":":User enters command to view a Person;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"YuSoonZ"},"content":"if () then ([command is invalid])","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"YuSoonZ"},"content":" :Show error message\\nfor invalid command;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"YuSoonZ"},"content":"else ([else])","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"YuSoonZ"},"content":" if () then ([no field is entered])","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"YuSoonZ"},"content":" :Show error message\\nindicating no fields\\nenteredfor viewing;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"YuSoonZ"},"content":" else ([else])","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"YuSoonZ"},"content":" if () then ([index given is invalid])","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"YuSoonZ"},"content":" :Show error message indicating\\ninvalid index;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"YuSoonZ"},"content":" else ([else])","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"YuSoonZ"},"content":" :Show success message\\nwith person\u0027s information;","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"YuSoonZ"},"content":" endif;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"YuSoonZ"},"content":" endif;","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"YuSoonZ"},"content":" endif;","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"YuSoonZ"},"content":"stop","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"YuSoonZ"},"content":"@enduml","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"YuSoonZ":23}},{"path":"docs/diagrams/ViewCommandSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"YuSoonZ"},"content":"@startuml","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"YuSoonZ"},"content":"!include style.puml","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"YuSoonZ"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"YuSoonZ"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"YuSoonZ"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"YuSoonZ"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"YuSoonZ"},"content":"participant \":ViewCommandParser\" as ViewCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"YuSoonZ"},"content":"participant \"v:ViewCommand\" as ViewCommand LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"YuSoonZ"},"content":"participant \":CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"YuSoonZ"},"content":"end box","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"YuSoonZ"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"YuSoonZ"},"content":"participant \":Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"YuSoonZ"},"content":"end box","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"YuSoonZ"},"content":"[-\u003e LogicManager : execute(\"view 1\")","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"YuSoonZ"},"content":"activate LogicManager","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"YuSoonZ"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"view 1\")","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"YuSoonZ"},"content":"activate AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"YuSoonZ"},"content":"create ViewCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"YuSoonZ"},"content":"AddressBookParser -\u003e ViewCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"YuSoonZ"},"content":"activate ViewCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"YuSoonZ"},"content":"ViewCommand --\u003e AddressBookParser : v","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"YuSoonZ"},"content":"deactivate ViewCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"YuSoonZ"},"content":"AddressBookParser --\u003e LogicManager : v","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"YuSoonZ"},"content":"deactivate AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"YuSoonZ"},"content":"LogicManager -\u003e ViewCommand : execute()","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"YuSoonZ"},"content":"activate ViewCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"YuSoonZ"},"content":"create CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"YuSoonZ"},"content":"ViewCommand -\u003e CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"YuSoonZ"},"content":"activate CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"YuSoonZ"},"content":"CommandResult --\u003e ViewCommand : result","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"YuSoonZ"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"YuSoonZ"},"content":"ViewCommand --\u003e LogicManager : result","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"YuSoonZ"},"content":"deactivate ViewCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"YuSoonZ"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"YuSoonZ"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"YuSoonZ"},"content":"@enduml@enduml","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"YuSoonZ":48}},{"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":"hiivan"},"content":"# TA Toolkit","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"kailashgautham"},"content":"[![CI Status](https://github.com/AY2324S2-CS2103T-F14-3/tp/workflows/Java%20CI/badge.svg)](https://github.com//AY2324S2-CS2103T-F14-3/tp/actions)","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"kailashgautham"},"content":"[![codecov](https://codecov.io/gh/AY2324S2-CS2103T-F14-3/tp/branch/master/graph/badge.svg)](https://codecov.io/gh/AY2324S2-CS2103T-F14-3/tp)","lastModifiedDate":"2024-03-12"},{"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":"hiivan"},"content":"**TA Toolkit is a desktop app for managing students.** While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface).","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"hiivan"},"content":"* If you are interested in using TA Toolkit, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"hiivan"},"content":"* If you are interested about developing TA Toolkit, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.","lastModifiedDate":"2024-03-20"},{"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":{"kailashgautham":2,"hiivan":4,"-":15}},{"path":"docs/team/ivan.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"hiivan"},"content":"---","lastModifiedDate":"2024-03-01"},{"lineNumber":2,"author":{"gitId":"hiivan"},"content":" layout: default.md","lastModifiedDate":"2024-03-01"},{"lineNumber":3,"author":{"gitId":"hiivan"},"content":" title: \"Ivan\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-03-01"},{"lineNumber":4,"author":{"gitId":"hiivan"},"content":"---","lastModifiedDate":"2024-03-01"},{"lineNumber":5,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":6,"author":{"gitId":"hiivan"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-03-01"},{"lineNumber":7,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":8,"author":{"gitId":"hiivan"},"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":"2024-03-01"},{"lineNumber":9,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":10,"author":{"gitId":"hiivan"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-01"},{"lineNumber":11,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":12,"author":{"gitId":"hiivan"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-03-01"},{"lineNumber":13,"author":{"gitId":"hiivan"},"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":"2024-03-01"},{"lineNumber":14,"author":{"gitId":"hiivan"},"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":"2024-03-01"},{"lineNumber":15,"author":{"gitId":"hiivan"},"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":"2024-03-01"},{"lineNumber":16,"author":{"gitId":"hiivan"},"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":"2024-03-01"},{"lineNumber":17,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":18,"author":{"gitId":"hiivan"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-03-01"},{"lineNumber":19,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":20,"author":{"gitId":"hiivan"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-03-01"},{"lineNumber":21,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":22,"author":{"gitId":"hiivan"},"content":"* **Project management**:","lastModifiedDate":"2024-03-01"},{"lineNumber":23,"author":{"gitId":"hiivan"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-03-01"},{"lineNumber":24,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":25,"author":{"gitId":"hiivan"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-03-01"},{"lineNumber":26,"author":{"gitId":"hiivan"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-03-01"},{"lineNumber":27,"author":{"gitId":"hiivan"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-03-01"},{"lineNumber":28,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":29,"author":{"gitId":"hiivan"},"content":"* **Documentation**:","lastModifiedDate":"2024-03-01"},{"lineNumber":30,"author":{"gitId":"hiivan"},"content":" * User Guide:","lastModifiedDate":"2024-03-01"},{"lineNumber":31,"author":{"gitId":"hiivan"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-03-01"},{"lineNumber":32,"author":{"gitId":"hiivan"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-03-01"},{"lineNumber":33,"author":{"gitId":"hiivan"},"content":" * Developer Guide:","lastModifiedDate":"2024-03-01"},{"lineNumber":34,"author":{"gitId":"hiivan"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-03-01"},{"lineNumber":35,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":36,"author":{"gitId":"hiivan"},"content":"* **Community**:","lastModifiedDate":"2024-03-01"},{"lineNumber":37,"author":{"gitId":"hiivan"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-03-01"},{"lineNumber":38,"author":{"gitId":"hiivan"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-03-01"},{"lineNumber":39,"author":{"gitId":"hiivan"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-03-01"},{"lineNumber":40,"author":{"gitId":"hiivan"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-03-01"},{"lineNumber":41,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":42,"author":{"gitId":"hiivan"},"content":"* **Tools**:","lastModifiedDate":"2024-03-01"},{"lineNumber":43,"author":{"gitId":"hiivan"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-03-01"},{"lineNumber":44,"author":{"gitId":"hiivan"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-03-01"},{"lineNumber":45,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":46,"author":{"gitId":"hiivan"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-03-01"}],"authorContributionMap":{"hiivan":46}},{"path":"docs/team/kailashgautham.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"kailashgautham"},"content":"---","lastModifiedDate":"2024-02-24"},{"lineNumber":2,"author":{"gitId":"kailashgautham"},"content":" layout: default.md","lastModifiedDate":"2024-02-24"},{"lineNumber":3,"author":{"gitId":"kailashgautham"},"content":" title: \"Kailash Gautham\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-02-24"},{"lineNumber":4,"author":{"gitId":"kailashgautham"},"content":"---","lastModifiedDate":"2024-02-24"},{"lineNumber":5,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-02-24"},{"lineNumber":6,"author":{"gitId":"kailashgautham"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-02-24"},{"lineNumber":7,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-02-24"},{"lineNumber":8,"author":{"gitId":"kailashgautham"},"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":"2024-02-24"},{"lineNumber":9,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-02-24"},{"lineNumber":10,"author":{"gitId":"kailashgautham"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-02-24"},{"lineNumber":11,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-02-24"},{"lineNumber":12,"author":{"gitId":"kailashgautham"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-02-24"},{"lineNumber":13,"author":{"gitId":"kailashgautham"},"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":"2024-02-24"},{"lineNumber":14,"author":{"gitId":"kailashgautham"},"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":"2024-02-24"},{"lineNumber":15,"author":{"gitId":"kailashgautham"},"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":"2024-02-24"},{"lineNumber":16,"author":{"gitId":"kailashgautham"},"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":"2024-02-24"},{"lineNumber":17,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-02-24"},{"lineNumber":18,"author":{"gitId":"kailashgautham"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-02-24"},{"lineNumber":19,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-02-24"},{"lineNumber":20,"author":{"gitId":"kailashgautham"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-02-24"},{"lineNumber":21,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-02-24"},{"lineNumber":22,"author":{"gitId":"kailashgautham"},"content":"* **Project management**:","lastModifiedDate":"2024-02-24"},{"lineNumber":23,"author":{"gitId":"kailashgautham"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-02-24"},{"lineNumber":24,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-02-24"},{"lineNumber":25,"author":{"gitId":"kailashgautham"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-02-24"},{"lineNumber":26,"author":{"gitId":"kailashgautham"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-02-24"},{"lineNumber":27,"author":{"gitId":"kailashgautham"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-02-24"},{"lineNumber":28,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-02-24"},{"lineNumber":29,"author":{"gitId":"kailashgautham"},"content":"* **Documentation**:","lastModifiedDate":"2024-02-24"},{"lineNumber":30,"author":{"gitId":"kailashgautham"},"content":" * User Guide:","lastModifiedDate":"2024-02-24"},{"lineNumber":31,"author":{"gitId":"kailashgautham"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-02-24"},{"lineNumber":32,"author":{"gitId":"kailashgautham"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-02-24"},{"lineNumber":33,"author":{"gitId":"kailashgautham"},"content":" * Developer Guide:","lastModifiedDate":"2024-02-24"},{"lineNumber":34,"author":{"gitId":"kailashgautham"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-02-24"},{"lineNumber":35,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-02-24"},{"lineNumber":36,"author":{"gitId":"kailashgautham"},"content":"* **Community**:","lastModifiedDate":"2024-02-24"},{"lineNumber":37,"author":{"gitId":"kailashgautham"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-02-24"},{"lineNumber":38,"author":{"gitId":"kailashgautham"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-02-24"},{"lineNumber":39,"author":{"gitId":"kailashgautham"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-02-24"},{"lineNumber":40,"author":{"gitId":"kailashgautham"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-02-24"},{"lineNumber":41,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-02-24"},{"lineNumber":42,"author":{"gitId":"kailashgautham"},"content":"* **Tools**:","lastModifiedDate":"2024-02-24"},{"lineNumber":43,"author":{"gitId":"kailashgautham"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-02-24"},{"lineNumber":44,"author":{"gitId":"kailashgautham"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-02-24"},{"lineNumber":45,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-02-24"},{"lineNumber":46,"author":{"gitId":"kailashgautham"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-02-24"}],"authorContributionMap":{"kailashgautham":46}},{"path":"docs/team/ngyusoon.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"YuSoonZ"},"content":"---","lastModifiedDate":"2024-03-05"},{"lineNumber":2,"author":{"gitId":"YuSoonZ"},"content":" layout: default.md","lastModifiedDate":"2024-03-05"},{"lineNumber":3,"author":{"gitId":"YuSoonZ"},"content":" title: \"Yu Soon\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-03-05"},{"lineNumber":4,"author":{"gitId":"YuSoonZ"},"content":"---","lastModifiedDate":"2024-03-05"},{"lineNumber":5,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":6,"author":{"gitId":"YuSoonZ"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-03-05"},{"lineNumber":7,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":8,"author":{"gitId":"YuSoonZ"},"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":"2024-03-05"},{"lineNumber":9,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":10,"author":{"gitId":"YuSoonZ"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-05"},{"lineNumber":11,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":12,"author":{"gitId":"YuSoonZ"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-03-05"},{"lineNumber":13,"author":{"gitId":"YuSoonZ"},"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":"2024-03-05"},{"lineNumber":14,"author":{"gitId":"YuSoonZ"},"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":"2024-03-05"},{"lineNumber":15,"author":{"gitId":"YuSoonZ"},"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":"2024-03-05"},{"lineNumber":16,"author":{"gitId":"YuSoonZ"},"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":"2024-03-05"},{"lineNumber":17,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":18,"author":{"gitId":"YuSoonZ"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-03-05"},{"lineNumber":19,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":20,"author":{"gitId":"YuSoonZ"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-03-05"},{"lineNumber":21,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":22,"author":{"gitId":"YuSoonZ"},"content":"* **Project management**:","lastModifiedDate":"2024-03-05"},{"lineNumber":23,"author":{"gitId":"YuSoonZ"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-03-05"},{"lineNumber":24,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":25,"author":{"gitId":"YuSoonZ"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-03-05"},{"lineNumber":26,"author":{"gitId":"YuSoonZ"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-03-05"},{"lineNumber":27,"author":{"gitId":"YuSoonZ"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-03-05"},{"lineNumber":28,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":29,"author":{"gitId":"YuSoonZ"},"content":"* **Documentation**:","lastModifiedDate":"2024-03-05"},{"lineNumber":30,"author":{"gitId":"YuSoonZ"},"content":" * User Guide:","lastModifiedDate":"2024-03-05"},{"lineNumber":31,"author":{"gitId":"YuSoonZ"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-03-05"},{"lineNumber":32,"author":{"gitId":"YuSoonZ"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-03-05"},{"lineNumber":33,"author":{"gitId":"YuSoonZ"},"content":" * Developer Guide:","lastModifiedDate":"2024-03-05"},{"lineNumber":34,"author":{"gitId":"YuSoonZ"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-03-05"},{"lineNumber":35,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":36,"author":{"gitId":"YuSoonZ"},"content":"* **Community**:","lastModifiedDate":"2024-03-05"},{"lineNumber":37,"author":{"gitId":"YuSoonZ"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-03-05"},{"lineNumber":38,"author":{"gitId":"YuSoonZ"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-03-05"},{"lineNumber":39,"author":{"gitId":"YuSoonZ"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-03-05"},{"lineNumber":40,"author":{"gitId":"YuSoonZ"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-03-05"},{"lineNumber":41,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":42,"author":{"gitId":"YuSoonZ"},"content":"* **Tools**:","lastModifiedDate":"2024-03-05"},{"lineNumber":43,"author":{"gitId":"YuSoonZ"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-03-05"},{"lineNumber":44,"author":{"gitId":"YuSoonZ"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-03-05"},{"lineNumber":45,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":46,"author":{"gitId":"YuSoonZ"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-03-05"}],"authorContributionMap":{"YuSoonZ":46}},{"path":"docs/team/tejasgarrepally.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"g-tejas"},"content":"---","lastModifiedDate":"2024-02-27"},{"lineNumber":2,"author":{"gitId":"g-tejas"},"content":" layout: default.md","lastModifiedDate":"2024-02-27"},{"lineNumber":3,"author":{"gitId":"g-tejas"},"content":" title: \"Tejas Garrepally\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-02-27"},{"lineNumber":4,"author":{"gitId":"g-tejas"},"content":"---","lastModifiedDate":"2024-02-27"},{"lineNumber":5,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":6,"author":{"gitId":"g-tejas"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-02-27"},{"lineNumber":7,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":8,"author":{"gitId":"g-tejas"},"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":"2024-02-27"},{"lineNumber":9,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":10,"author":{"gitId":"g-tejas"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-02-27"},{"lineNumber":11,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":12,"author":{"gitId":"g-tejas"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-02-27"},{"lineNumber":13,"author":{"gitId":"g-tejas"},"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":"2024-02-27"},{"lineNumber":14,"author":{"gitId":"g-tejas"},"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":"2024-02-27"},{"lineNumber":15,"author":{"gitId":"g-tejas"},"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":"2024-02-27"},{"lineNumber":16,"author":{"gitId":"g-tejas"},"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":"2024-02-27"},{"lineNumber":17,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":18,"author":{"gitId":"g-tejas"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-02-27"},{"lineNumber":19,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":20,"author":{"gitId":"g-tejas"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-02-27"},{"lineNumber":21,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":22,"author":{"gitId":"g-tejas"},"content":"* **Project management**:","lastModifiedDate":"2024-02-27"},{"lineNumber":23,"author":{"gitId":"g-tejas"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-02-27"},{"lineNumber":24,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":25,"author":{"gitId":"g-tejas"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-02-27"},{"lineNumber":26,"author":{"gitId":"g-tejas"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-02-27"},{"lineNumber":27,"author":{"gitId":"g-tejas"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-02-27"},{"lineNumber":28,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":29,"author":{"gitId":"g-tejas"},"content":"* **Documentation**:","lastModifiedDate":"2024-02-27"},{"lineNumber":30,"author":{"gitId":"g-tejas"},"content":" * User Guide:","lastModifiedDate":"2024-02-27"},{"lineNumber":31,"author":{"gitId":"g-tejas"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-02-27"},{"lineNumber":32,"author":{"gitId":"g-tejas"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-02-27"},{"lineNumber":33,"author":{"gitId":"g-tejas"},"content":" * Developer Guide:","lastModifiedDate":"2024-02-27"},{"lineNumber":34,"author":{"gitId":"g-tejas"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-02-27"},{"lineNumber":35,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":36,"author":{"gitId":"g-tejas"},"content":"* **Community**:","lastModifiedDate":"2024-02-27"},{"lineNumber":37,"author":{"gitId":"g-tejas"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-02-27"},{"lineNumber":38,"author":{"gitId":"g-tejas"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-02-27"},{"lineNumber":39,"author":{"gitId":"g-tejas"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-02-27"},{"lineNumber":40,"author":{"gitId":"g-tejas"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-02-27"},{"lineNumber":41,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":42,"author":{"gitId":"g-tejas"},"content":"* **Tools**:","lastModifiedDate":"2024-02-27"},{"lineNumber":43,"author":{"gitId":"g-tejas"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-02-27"},{"lineNumber":44,"author":{"gitId":"g-tejas"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-02-27"},{"lineNumber":45,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":46,"author":{"gitId":"g-tejas"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-02-27"}],"authorContributionMap":{"g-tejas":46}},{"path":"docs/team/teojunda.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"teojunda"},"content":"---","lastModifiedDate":"2024-03-02"},{"lineNumber":2,"author":{"gitId":"teojunda"},"content":"layout: default.md","lastModifiedDate":"2024-03-02"},{"lineNumber":3,"author":{"gitId":"teojunda"},"content":"title: \"Axel\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-03-02"},{"lineNumber":4,"author":{"gitId":"teojunda"},"content":"---","lastModifiedDate":"2024-03-02"},{"lineNumber":5,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":6,"author":{"gitId":"teojunda"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-03-02"},{"lineNumber":7,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":8,"author":{"gitId":"teojunda"},"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":"2024-03-02"},{"lineNumber":9,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":10,"author":{"gitId":"teojunda"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-02"},{"lineNumber":11,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":12,"author":{"gitId":"teojunda"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-03-02"},{"lineNumber":13,"author":{"gitId":"teojunda"},"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":"2024-03-02"},{"lineNumber":14,"author":{"gitId":"teojunda"},"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":"2024-03-02"},{"lineNumber":15,"author":{"gitId":"teojunda"},"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":"2024-03-02"},{"lineNumber":16,"author":{"gitId":"teojunda"},"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":"2024-03-02"},{"lineNumber":17,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":18,"author":{"gitId":"teojunda"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-03-02"},{"lineNumber":19,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":20,"author":{"gitId":"teojunda"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-03-02"},{"lineNumber":21,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":22,"author":{"gitId":"teojunda"},"content":"* **Project management**:","lastModifiedDate":"2024-03-02"},{"lineNumber":23,"author":{"gitId":"teojunda"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-03-02"},{"lineNumber":24,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":25,"author":{"gitId":"teojunda"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-03-02"},{"lineNumber":26,"author":{"gitId":"teojunda"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-03-02"},{"lineNumber":27,"author":{"gitId":"teojunda"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-03-02"},{"lineNumber":28,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":29,"author":{"gitId":"teojunda"},"content":"* **Documentation**:","lastModifiedDate":"2024-03-02"},{"lineNumber":30,"author":{"gitId":"teojunda"},"content":" * User Guide:","lastModifiedDate":"2024-03-02"},{"lineNumber":31,"author":{"gitId":"teojunda"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-03-02"},{"lineNumber":32,"author":{"gitId":"teojunda"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-03-02"},{"lineNumber":33,"author":{"gitId":"teojunda"},"content":" * Developer Guide:","lastModifiedDate":"2024-03-02"},{"lineNumber":34,"author":{"gitId":"teojunda"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-03-02"},{"lineNumber":35,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":36,"author":{"gitId":"teojunda"},"content":"* **Community**:","lastModifiedDate":"2024-03-02"},{"lineNumber":37,"author":{"gitId":"teojunda"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-03-02"},{"lineNumber":38,"author":{"gitId":"teojunda"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-03-02"},{"lineNumber":39,"author":{"gitId":"teojunda"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-03-02"},{"lineNumber":40,"author":{"gitId":"teojunda"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-03-02"},{"lineNumber":41,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":42,"author":{"gitId":"teojunda"},"content":"* **Tools**:","lastModifiedDate":"2024-03-02"},{"lineNumber":43,"author":{"gitId":"teojunda"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-03-02"},{"lineNumber":44,"author":{"gitId":"teojunda"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-03-02"},{"lineNumber":45,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":46,"author":{"gitId":"teojunda"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-03-02"}],"authorContributionMap":{"teojunda":46}},{"path":"src/main/java/seedu/address/commons/util/ToStringBuilder.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.commons.util;","lastModifiedDate":"2019-02-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":3,"author":{"gitId":"kailashgautham"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2019-02-23"},{"lineNumber":6,"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":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class ToStringBuilder {","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":" private static final String OBJECT_PREFIX \u003d \"{\";","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":" private static final String OBJECT_SUFFIX \u003d \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":" private static final String FIELD_SEPARATOR \u003d \", \";","lastModifiedDate":"2019-02-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":" private static final String FIELD_NAME_VALUE_SEPARATOR \u003d \"\u003d\";","lastModifiedDate":"2019-02-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private final StringBuilder stringBuilder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":" private boolean hasField;","lastModifiedDate":"2019-02-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Constructs a {@code ToStringBuilder} whose formatted output will be prefixed with {@code objectName}.","lastModifiedDate":"2019-02-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public ToStringBuilder(String objectName) {","lastModifiedDate":"2019-02-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":" stringBuilder.append(objectName).append(OBJECT_PREFIX);","lastModifiedDate":"2019-02-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Constructs a {@code ToStringBuilder} whose formatted output will be prefixed with the","lastModifiedDate":"2019-02-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * canonical class name of {@code object}.","lastModifiedDate":"2019-02-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public ToStringBuilder(Object object) {","lastModifiedDate":"2019-02-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" this(object.getClass().getCanonicalName());","lastModifiedDate":"2019-02-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Adds a field name/value pair to the output string.","lastModifiedDate":"2019-02-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2019-02-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * @param fieldName The name of the field.","lastModifiedDate":"2019-02-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * @param fieldValue The value of the field.","lastModifiedDate":"2019-02-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @return A reference to this {@code ToStringBuilder} object, allowing method calls to be chained.","lastModifiedDate":"2019-02-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public ToStringBuilder add(String fieldName, Object fieldValue) {","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"kailashgautham"},"content":" if (fieldValue instanceof Optional\u003c?\u003e) {","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"kailashgautham"},"content":" fieldValue \u003d ((Optional\u003c?\u003e) fieldValue).orElse(null);","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"-"},"content":" if (hasField) {","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" stringBuilder.append(FIELD_SEPARATOR);","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" stringBuilder.append(fieldName).append(FIELD_NAME_VALUE_SEPARATOR).append(fieldValue);","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" hasField \u003d true;","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Returns the built formatted string representation.","lastModifiedDate":"2019-02-23"},{"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 stringBuilder.toString() + OBJECT_SUFFIX;","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-02-23"}],"authorContributionMap":{"kailashgautham":5,"-":53}},{"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":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"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":"-"},"content":" /** Returns an unmodifiable view of the filtered list of persons */","lastModifiedDate":"2017-09-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10"},{"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":"hiivan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"hiivan"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"hiivan"},"content":" * Retrieves the last viewed person after a successful \"view\" command.","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"hiivan"},"content":" * @return The last viewed person, or null if no view command has been executed yet.","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"hiivan"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"hiivan"},"content":" Person getLastViewedPerson();","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"hiivan":6,"-":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":"-"},"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":"hiivan"},"content":"import seedu.address.logic.commands.ViewCommand;","lastModifiedDate":"2024-03-21"},{"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":"hiivan"},"content":" private Person lastViewedPerson;","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Constructs a {@code LogicManager} with the given {@code Model} and {@code Storage}.","lastModifiedDate":"2020-05-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public LogicManager(Model model, Storage storage) {","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.model \u003d model;","lastModifiedDate":"2016-09-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.storage \u003d storage;","lastModifiedDate":"2018-12-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":" addressBookParser \u003d new AddressBookParser();","lastModifiedDate":"2018-01-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":49,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2016-09-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2017-07-07"},{"lineNumber":53,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2019-01-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"hiivan"},"content":" if (command instanceof ViewCommand) {","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"hiivan"},"content":" int index \u003d ((ViewCommand) command).getTargetIndex().getZeroBased();","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"hiivan"},"content":" lastViewedPerson \u003d model.getFilteredPersonList().get(index);","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2018-12-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":" } catch (AccessDeniedException e) {","lastModifiedDate":"2023-06-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e);","lastModifiedDate":"2023-06-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-12-09"},{"lineNumber":65,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe);","lastModifiedDate":"2023-06-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-03"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2018-12-03"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return model.getAddressBook();","lastModifiedDate":"2018-12-03"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-03"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList();","lastModifiedDate":"2016-09-25"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-29"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return model.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" return model.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":" model.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":95,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":96,"author":{"gitId":"hiivan"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":97,"author":{"gitId":"hiivan"},"content":" public Person getLastViewedPerson() {","lastModifiedDate":"2024-03-21"},{"lineNumber":98,"author":{"gitId":"hiivan"},"content":" return lastViewedPerson;","lastModifiedDate":"2024-03-21"},{"lineNumber":99,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"hiivan":12,"-":88}},{"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":"kailashgautham"},"content":" .append(\"; Class/Group: \")","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"kailashgautham"},"content":" .append(person.getClassGroup())","lastModifiedDate":"2024-03-11"},{"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":"kailashgautham"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"kailashgautham"},"content":" .append(person.getPhone())","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"kailashgautham"},"content":" .append(\"; Telegram: \")","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"kailashgautham"},"content":" .append(person.getTelegram().isPresent() ? person.getTelegram().get().telegramId : \"\")","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"kailashgautham"},"content":" .append(\"; Github: \")","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"kailashgautham"},"content":" .append(person.getGithub().isPresent() ? person.getGithub().get().githubId : \"\");","lastModifiedDate":"2024-03-11"},{"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":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"kailashgautham":8,"-":45}},{"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":"kailashgautham"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CLASS_GROUP;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":6,"author":{"gitId":"kailashgautham"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GITHUB;","lastModifiedDate":"2024-03-11"},{"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":"kailashgautham"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-03-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":"kailashgautham"},"content":" public static final String COMMAND_WORD \u003d \"ac\";","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"kailashgautham"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a person to the TA Toolkit. \"","lastModifiedDate":"2024-03-11"},{"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":"kailashgautham"},"content":" + PREFIX_CLASS_GROUP + \"CLASS/GROUP \"","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09"},{"lineNumber":29,"author":{"gitId":"kailashgautham"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"kailashgautham"},"content":" + \"[\" + PREFIX_TELEGRAM + \"TELEGRAM ID] \"","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"kailashgautham"},"content":" + \"[\" + PREFIX_GITHUB + \"GITHUB ID]...\\n\"","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06"},{"lineNumber":34,"author":{"gitId":"kailashgautham"},"content":" + PREFIX_CLASS_GROUP + \"F14-3 \"","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"kailashgautham"},"content":" + PREFIX_EMAIL + \"johndoe@gmail.com \"","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"kailashgautham"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"kailashgautham"},"content":" + PREFIX_TELEGRAM + \"@johndoe \"","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"kailashgautham"},"content":" + PREFIX_GITHUB + \"johnDoeGithub \";","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: %1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"teojunda"},"content":" public static final String MESSAGE_DUPLICATE_FIELD \u003d \"This person contains duplicate fields\"","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"teojunda"},"content":" + \"(Email, Phone, Telegram, or Github) with another person.\";","lastModifiedDate":"2024-03-14"},{"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":"teojunda"},"content":" throw new CommandException(MESSAGE_DUPLICATE_FIELD);","lastModifiedDate":"2024-03-14"},{"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":{"kailashgautham":14,"teojunda":3,"-":70}},{"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":"g-tejas"},"content":" public static final String COMMAND_WORD \u003d \"dc\";","lastModifiedDate":"2024-03-14"},{"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":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Person: %1$s\";","lastModifiedDate":"2016-08-24"},{"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":{"g-tejas":1,"-":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":"teojunda"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CLASS_GROUP;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":6,"author":{"gitId":"teojunda"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GITHUB;","lastModifiedDate":"2024-03-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":"teojunda"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-03-13"},{"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.List;","lastModifiedDate":"2016-12-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-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.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"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-02-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":22,"author":{"gitId":"kailashgautham"},"content":"import seedu.address.model.person.ClassGroup;","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26"},{"lineNumber":24,"author":{"gitId":"kailashgautham"},"content":"import seedu.address.model.person.Github;","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-26"},{"lineNumber":28,"author":{"gitId":"kailashgautham"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":35,"author":{"gitId":"teojunda"},"content":" public static final String COMMAND_WORD \u003d \"uc\";","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":37,"author":{"gitId":"teojunda"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Updates the details of the person identified \"","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01"},{"lineNumber":39,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26"},{"lineNumber":40,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06"},{"lineNumber":41,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06"},{"lineNumber":42,"author":{"gitId":"teojunda"},"content":" + \"[\" + PREFIX_CLASS_GROUP + \"CLASS/GROUP] \"","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":44,"author":{"gitId":"teojunda"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"teojunda"},"content":" + \"[\" + PREFIX_TELEGRAM + \"TELEGRAM ID] \"","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"teojunda"},"content":" + \"[\" + PREFIX_GITHUB + \"GITHUB ID]...\\n\"","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":51,"author":{"gitId":"teojunda"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Updated Person: %1$s\";","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"teojunda"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to update must be provided.\";","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"teojunda"},"content":" public static final String MESSAGE_NO_CHANGE \u003d \"The updated person is the same as the original person\";","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"teojunda"},"content":" public static final String MESSAGE_DUPLICATE_FIELD \u003d \"The updated person contains duplicate fields\"","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"teojunda"},"content":" + \"(Email, Phone, Telegram, or Github) with another person.\";","lastModifiedDate":"2024-03-14"},{"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":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25"},{"lineNumber":65,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25"},{"lineNumber":66,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"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":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26"},{"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":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19"},{"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":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":84,"author":{"gitId":"teojunda"},"content":" if (personToEdit.equals(editedPerson)) {","lastModifiedDate":"2024-03-13"},{"lineNumber":85,"author":{"gitId":"teojunda"},"content":" throw new CommandException(MESSAGE_NO_CHANGE);","lastModifiedDate":"2024-03-13"},{"lineNumber":86,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":87,"author":{"gitId":"teojunda"},"content":" model.deletePerson(personToEdit);","lastModifiedDate":"2024-03-13"},{"lineNumber":88,"author":{"gitId":"teojunda"},"content":" if (model.hasPerson(editedPerson)) {","lastModifiedDate":"2024-03-13"},{"lineNumber":89,"author":{"gitId":"teojunda"},"content":" model.addPersonKeepFilter(personToEdit);","lastModifiedDate":"2024-03-14"},{"lineNumber":90,"author":{"gitId":"teojunda"},"content":" throw new CommandException(MESSAGE_DUPLICATE_FIELD);","lastModifiedDate":"2024-03-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":93,"author":{"gitId":"teojunda"},"content":" model.addPersonKeepFilter(editedPerson);","lastModifiedDate":"2024-03-14"},{"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":"kailashgautham"},"content":" ClassGroup updatedClassGroup \u003d editPersonDescriptor.getClassGroup().orElse(personToEdit.getClassGroup());","lastModifiedDate":"2024-03-11"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":108,"author":{"gitId":"kailashgautham"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2024-03-11"},{"lineNumber":109,"author":{"gitId":"kailashgautham"},"content":" Optional\u003cTelegram\u003e updatedTelegram \u003d editPersonDescriptor.getTelegram().isPresent()","lastModifiedDate":"2024-03-11"},{"lineNumber":110,"author":{"gitId":"kailashgautham"},"content":" ? editPersonDescriptor.getTelegram() : personToEdit.getTelegram();","lastModifiedDate":"2024-03-11"},{"lineNumber":111,"author":{"gitId":"kailashgautham"},"content":" Optional\u003cGithub\u003e updatedGithub \u003d editPersonDescriptor.getGithub().isPresent()","lastModifiedDate":"2024-03-11"},{"lineNumber":112,"author":{"gitId":"kailashgautham"},"content":" ? editPersonDescriptor.getGithub() : personToEdit.getGithub();","lastModifiedDate":"2024-03-11"},{"lineNumber":113,"author":{"gitId":"kailashgautham"},"content":" return new Person(updatedName, updatedClassGroup, updatedEmail,","lastModifiedDate":"2024-03-11"},{"lineNumber":114,"author":{"gitId":"kailashgautham"},"content":" updatedPhone, updatedTelegram, updatedGithub);","lastModifiedDate":"2024-03-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" return true;","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":" // instanceof handles nulls","lastModifiedDate":"2017-05-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":129,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13"},{"lineNumber":130,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":142,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26"},{"lineNumber":143,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26"},{"lineNumber":144,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":145,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26"},{"lineNumber":146,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21"},{"lineNumber":147,"author":{"gitId":"kailashgautham"},"content":" private ClassGroup classGroup;","lastModifiedDate":"2024-03-11"},{"lineNumber":148,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":149,"author":{"gitId":"kailashgautham"},"content":" private Phone phone;","lastModifiedDate":"2024-03-11"},{"lineNumber":150,"author":{"gitId":"kailashgautham"},"content":" private Optional\u003cTelegram\u003e telegram;","lastModifiedDate":"2024-03-11"},{"lineNumber":151,"author":{"gitId":"kailashgautham"},"content":" private Optional\u003cGithub\u003e github;","lastModifiedDate":"2024-03-11"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":153,"author":{"gitId":"kailashgautham"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":154,"author":{"gitId":"kailashgautham"},"content":" * Creates a new EditPersonDescriptor with empty fields.","lastModifiedDate":"2024-03-11"},{"lineNumber":155,"author":{"gitId":"kailashgautham"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":156,"author":{"gitId":"kailashgautham"},"content":" public EditPersonDescriptor() {","lastModifiedDate":"2024-03-11"},{"lineNumber":157,"author":{"gitId":"kailashgautham"},"content":" telegram \u003d Optional.empty();","lastModifiedDate":"2024-03-11"},{"lineNumber":158,"author":{"gitId":"kailashgautham"},"content":" github \u003d Optional.empty();","lastModifiedDate":"2024-03-11"},{"lineNumber":159,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":161,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":162,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11"},{"lineNumber":163,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":164,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":165,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26"},{"lineNumber":166,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15"},{"lineNumber":167,"author":{"gitId":"kailashgautham"},"content":" setClassGroup(toCopy.classGroup);","lastModifiedDate":"2024-03-11"},{"lineNumber":168,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15"},{"lineNumber":169,"author":{"gitId":"kailashgautham"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2024-03-11"},{"lineNumber":170,"author":{"gitId":"kailashgautham"},"content":" setTelegram(toCopy.telegram);","lastModifiedDate":"2024-03-11"},{"lineNumber":171,"author":{"gitId":"kailashgautham"},"content":" setGithub(toCopy.github);","lastModifiedDate":"2024-03-11"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":174,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":175,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26"},{"lineNumber":176,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":177,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26"},{"lineNumber":178,"author":{"gitId":"kailashgautham"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, classGroup)","lastModifiedDate":"2024-03-11"},{"lineNumber":179,"author":{"gitId":"kailashgautham"},"content":" || (github.isPresent() || telegram.isPresent());","lastModifiedDate":"2024-03-11"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":182,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21"},{"lineNumber":183,"author":{"gitId":"-"},"content":" this.name \u003d 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 Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":187,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","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":"kailashgautham"},"content":" public void setClassGroup(ClassGroup classGroup) {","lastModifiedDate":"2024-03-11"},{"lineNumber":191,"author":{"gitId":"kailashgautham"},"content":" this.classGroup \u003d classGroup;","lastModifiedDate":"2024-03-11"},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":194,"author":{"gitId":"kailashgautham"},"content":" public Optional\u003cClassGroup\u003e getClassGroup() {","lastModifiedDate":"2024-03-11"},{"lineNumber":195,"author":{"gitId":"kailashgautham"},"content":" return Optional.ofNullable(classGroup);","lastModifiedDate":"2024-03-11"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":198,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21"},{"lineNumber":199,"author":{"gitId":"-"},"content":" this.email \u003d 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 Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":203,"author":{"gitId":"-"},"content":" return Optional.ofNullable(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":"kailashgautham"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2024-03-11"},{"lineNumber":207,"author":{"gitId":"kailashgautham"},"content":" this.phone \u003d phone;","lastModifiedDate":"2024-03-11"},{"lineNumber":208,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":210,"author":{"gitId":"kailashgautham"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2024-03-11"},{"lineNumber":211,"author":{"gitId":"kailashgautham"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2024-03-11"},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":214,"author":{"gitId":"kailashgautham"},"content":" public void setTelegram(Optional\u003cTelegram\u003e telegram) {","lastModifiedDate":"2024-03-11"},{"lineNumber":215,"author":{"gitId":"kailashgautham"},"content":" this.telegram \u003d telegram;","lastModifiedDate":"2024-03-11"},{"lineNumber":216,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":218,"author":{"gitId":"kailashgautham"},"content":" public Optional\u003cTelegram\u003e getTelegram() {","lastModifiedDate":"2024-03-11"},{"lineNumber":219,"author":{"gitId":"kailashgautham"},"content":" return telegram;","lastModifiedDate":"2024-03-11"},{"lineNumber":220,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":221,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":222,"author":{"gitId":"kailashgautham"},"content":" public void setGithub(Optional\u003cGithub\u003e github) {","lastModifiedDate":"2024-03-11"},{"lineNumber":223,"author":{"gitId":"kailashgautham"},"content":" this.github \u003d github;","lastModifiedDate":"2024-03-11"},{"lineNumber":224,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":225,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":226,"author":{"gitId":"kailashgautham"},"content":" public Optional\u003cGithub\u003e getGithub() {","lastModifiedDate":"2024-03-11"},{"lineNumber":227,"author":{"gitId":"kailashgautham"},"content":" return github;","lastModifiedDate":"2024-03-11"},{"lineNumber":228,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":230,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":231,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":232,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":233,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":234,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":236,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":237,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05"},{"lineNumber":238,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":239,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":241,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":242,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":243,"author":{"gitId":"kailashgautham"},"content":" \u0026\u0026 Objects.equals(classGroup, otherEditPersonDescriptor.classGroup)","lastModifiedDate":"2024-03-11"},{"lineNumber":244,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":245,"author":{"gitId":"kailashgautham"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2024-03-11"},{"lineNumber":246,"author":{"gitId":"kailashgautham"},"content":" \u0026\u0026 Objects.equals(telegram, otherEditPersonDescriptor.telegram)","lastModifiedDate":"2024-03-11"},{"lineNumber":247,"author":{"gitId":"kailashgautham"},"content":" \u0026\u0026 Objects.equals(github, otherEditPersonDescriptor.github);","lastModifiedDate":"2024-03-11"},{"lineNumber":248,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":254,"author":{"gitId":"kailashgautham"},"content":" .add(\"classGroup\", classGroup)","lastModifiedDate":"2024-03-11"},{"lineNumber":255,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":256,"author":{"gitId":"kailashgautham"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2024-03-11"},{"lineNumber":257,"author":{"gitId":"kailashgautham"},"content":" .add(\"telegram\", telegram)","lastModifiedDate":"2024-03-11"},{"lineNumber":258,"author":{"gitId":"kailashgautham"},"content":" .add(\"github\", github)","lastModifiedDate":"2024-03-11"},{"lineNumber":259,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":262,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"kailashgautham":56,"teojunda":22,"-":184}},{"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":"g-tejas"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"g-tejas"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":9,"author":{"gitId":"g-tejas"},"content":"import seedu.address.model.person.ListCommandPredicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"g-tejas"},"content":" * Lists students in the TA Toolkit to the user.","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2016-09-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"g-tejas"},"content":" public static final String COMMAND_WORD \u003d \"ls\";","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"g-tejas"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": List all students or students from a specific \"","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"g-tejas"},"content":" + \"class group given the class group identifier and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"g-tejas"},"content":" + \"Parameters: [CLASSGROUP_ID] (must be a valid class group identifier)\\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"g-tejas"},"content":" + \"Example: \" + COMMAND_WORD + \" F14-3\";","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"g-tejas"},"content":" public static final String MESSAGE_LIST_ALL_SUCCESS \u003d \"Listed all %1$d students\";","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"g-tejas"},"content":" public static final String MESSAGE_LIST_CLASS_SUCCESS \u003d \"Listed %1$d students from class groups: %2$s\";","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"g-tejas"},"content":" private final ListCommandPredicate predicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"g-tejas"},"content":" public ListCommand(ListCommandPredicate predicate) {","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"g-tejas"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"g-tejas"},"content":" }","lastModifiedDate":"2024-03-16"},{"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) {","lastModifiedDate":"2019-01-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":37,"author":{"gitId":"g-tejas"},"content":" model.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"g-tejas"},"content":" if (predicate.getClassGroups().isEmpty()) {","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"g-tejas"},"content":" return new CommandResult(","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"g-tejas"},"content":" String.format(MESSAGE_LIST_ALL_SUCCESS, model.getFilteredPersonList().size()));","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"g-tejas"},"content":" } else {","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"g-tejas"},"content":" String classGroupsString \u003d predicate.getClassGroups().get()","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"g-tejas"},"content":" .stream()","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"g-tejas"},"content":" .map(Object::toString)","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"g-tejas"},"content":" .collect(Collectors.joining(\", \"));","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"g-tejas"},"content":" return new CommandResult(String.format(MESSAGE_LIST_CLASS_SUCCESS,","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"g-tejas"},"content":" model.getFilteredPersonList().size(), classGroupsString));","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"g-tejas"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"g-tejas"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"g-tejas"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"g-tejas"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"g-tejas"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"g-tejas"},"content":" return true;","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"g-tejas"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"g-tejas"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"g-tejas"},"content":" if (!(other instanceof ListCommand)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"g-tejas"},"content":" return false;","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"g-tejas"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"g-tejas"},"content":" ListCommand otherListCommand \u003d (ListCommand) other;","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"g-tejas"},"content":" return predicate.equals(otherListCommand.predicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"g-tejas"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"g-tejas"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"g-tejas"},"content":" public String toString() {","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"g-tejas"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"g-tejas"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"g-tejas"},"content":" .toString();","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"g-tejas":54,"-":19}},{"path":"src/main/java/seedu/address/logic/commands/ViewCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"YuSoonZ"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"YuSoonZ"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"YuSoonZ"},"content":"import java.util.List;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"YuSoonZ"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"YuSoonZ"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"YuSoonZ"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"YuSoonZ"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"YuSoonZ"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"YuSoonZ"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"YuSoonZ"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"YuSoonZ"},"content":" * Views details of a person in the address book identified using its displayed index from the address book.","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"YuSoonZ"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"YuSoonZ"},"content":"public class ViewCommand extends Command {","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"YuSoonZ"},"content":" public static final String COMMAND_WORD \u003d \"view\";","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"YuSoonZ"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"YuSoonZ"},"content":" + \": View the person identified by the index number used in the displayed person list.\\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"YuSoonZ"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"YuSoonZ"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"YuSoonZ"},"content":" public static final String MESSAGE_VIEW_PERSON_SUCCESS \u003d \"View Person: %1$s\";","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"YuSoonZ"},"content":" private final Index targetIndex;","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"YuSoonZ"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"YuSoonZ"},"content":" * Constructs a ViewCommand with the specified index.","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"YuSoonZ"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"YuSoonZ"},"content":" * @param targetIndex Index of the person to view.","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"YuSoonZ"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"YuSoonZ"},"content":" public ViewCommand(Index targetIndex) {","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"YuSoonZ"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"YuSoonZ"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"YuSoonZ"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"YuSoonZ"},"content":" * Executes the view command to display details of the person specified by the index.","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"YuSoonZ"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"YuSoonZ"},"content":" * @param model {@code Model} which the command should operate on.","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"YuSoonZ"},"content":" * @return The command result indicating the success of the execution.","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"YuSoonZ"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"YuSoonZ"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"YuSoonZ"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"YuSoonZ"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"YuSoonZ"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"YuSoonZ"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"YuSoonZ"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"YuSoonZ"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"YuSoonZ"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"YuSoonZ"},"content":" Person personToView \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"YuSoonZ"},"content":" return new CommandResult(String.format(MESSAGE_VIEW_PERSON_SUCCESS, Messages.format(personToView)));","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"YuSoonZ"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"hiivan"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"hiivan"},"content":" * Gets targetIndex.","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"hiivan"},"content":" *","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"hiivan"},"content":" * @return targetIndex","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"hiivan"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"hiivan"},"content":" public Index getTargetIndex() {","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"hiivan"},"content":" return targetIndex;","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"YuSoonZ"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"YuSoonZ"},"content":" * Checks if this ViewCommand is equal to another object.","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"YuSoonZ"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"YuSoonZ"},"content":" * @param other The other object to compare with.","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"YuSoonZ"},"content":" * @return True if the objects are equal, false otherwise.","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"YuSoonZ"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"YuSoonZ"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"YuSoonZ"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"YuSoonZ"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"YuSoonZ"},"content":" return true;","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"YuSoonZ"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"YuSoonZ"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"YuSoonZ"},"content":" if (!(other instanceof ViewCommand)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"YuSoonZ"},"content":" return false;","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"YuSoonZ"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"YuSoonZ"},"content":" ViewCommand otherViewCommand \u003d (ViewCommand) other;","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"YuSoonZ"},"content":" return targetIndex.equals(otherViewCommand.targetIndex);","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"YuSoonZ"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"YuSoonZ"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"YuSoonZ"},"content":" * Generates a string representation of this ViewCommand.","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"YuSoonZ"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"YuSoonZ"},"content":" * @return The string representation of this ViewCommand.","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"YuSoonZ"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"YuSoonZ"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"YuSoonZ"},"content":" public String toString() {","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"YuSoonZ"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"YuSoonZ"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"YuSoonZ"},"content":" .toString();","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"YuSoonZ"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"YuSoonZ"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"YuSoonZ":89,"hiivan":9}},{"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":"kailashgautham"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CLASS_GROUP;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05"},{"lineNumber":6,"author":{"gitId":"kailashgautham"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GITHUB;","lastModifiedDate":"2024-03-11"},{"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":"kailashgautham"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":11,"author":{"gitId":"kailashgautham"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":16,"author":{"gitId":"kailashgautham"},"content":"import seedu.address.model.person.ClassGroup;","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17"},{"lineNumber":18,"author":{"gitId":"kailashgautham"},"content":"import seedu.address.model.person.Github;","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-03-17"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-03-17"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-03-17"},{"lineNumber":22,"author":{"gitId":"kailashgautham"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05"},{"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-02-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":35,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":36,"author":{"gitId":"kailashgautham"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_CLASS_GROUP, PREFIX_EMAIL,","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"kailashgautham"},"content":" PREFIX_PHONE, PREFIX_TELEGRAM, PREFIX_GITHUB);","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"kailashgautham"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_CLASS_GROUP, PREFIX_EMAIL, PREFIX_PHONE)","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":43,"author":{"gitId":"kailashgautham"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_CLASS_GROUP,","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"kailashgautham"},"content":" PREFIX_EMAIL, PREFIX_PHONE, PREFIX_TELEGRAM, PREFIX_GITHUB);","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":46,"author":{"gitId":"kailashgautham"},"content":" ClassGroup classGroup \u003d ParserUtil.parseClassGroup(argMultimap.getValue(PREFIX_CLASS_GROUP).get());","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":48,"author":{"gitId":"kailashgautham"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"kailashgautham"},"content":" Optional\u003cTelegram\u003e telegram \u003d ParserUtil.parseTelegram(argMultimap.getValue(PREFIX_TELEGRAM).orElse(\"\"));","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"kailashgautham"},"content":" Optional\u003cGithub\u003e github \u003d ParserUtil.parseGithub(argMultimap.getValue(PREFIX_GITHUB).orElse(\"\"));","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":52,"author":{"gitId":"kailashgautham"},"content":" Person person \u003d new Person(name, classGroup, email, phone, telegram, github);","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17"},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":61,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"kailashgautham":17,"-":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":"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":"YuSoonZ"},"content":"import seedu.address.logic.commands.ViewCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24"},{"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":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":50,"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":51,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":73,"author":{"gitId":"g-tejas"},"content":" return new ListCommandParser().parse(arguments);","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":81,"author":{"gitId":"YuSoonZ"},"content":" case ViewCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"YuSoonZ"},"content":" return new ViewCommandParser().parse(arguments);","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26"},{"lineNumber":85,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29"},{"lineNumber":86,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11"},{"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":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"YuSoonZ":4,"g-tejas":1,"-":85}},{"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":"kailashgautham"},"content":" public static final Prefix PREFIX_CLASS_GROUP \u003d new Prefix(\"c/\");","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":12,"author":{"gitId":"kailashgautham"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"kailashgautham"},"content":" public static final Prefix PREFIX_TELEGRAM \u003d new Prefix(\"t/\");","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"kailashgautham"},"content":" public static final Prefix PREFIX_GITHUB \u003d new Prefix(\"g/\");","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"kailashgautham":4,"-":12}},{"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":"kailashgautham"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CLASS_GROUP;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-01-26"},{"lineNumber":7,"author":{"gitId":"kailashgautham"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GITHUB;","lastModifiedDate":"2024-03-11"},{"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":"kailashgautham"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":28,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":31,"author":{"gitId":"kailashgautham"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_CLASS_GROUP,","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"kailashgautham"},"content":" PREFIX_EMAIL, PREFIX_PHONE, PREFIX_TELEGRAM, PREFIX_GITHUB);","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06"},{"lineNumber":38,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10"},{"lineNumber":39,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":42,"author":{"gitId":"teojunda"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_CLASS_GROUP, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"teojunda"},"content":" PREFIX_TELEGRAM, PREFIX_GITHUB);","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":45,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-01-26"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":47,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":48,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":50,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":51,"author":{"gitId":"-"},"content":" editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":56,"author":{"gitId":"kailashgautham"},"content":" if (argMultimap.getValue(PREFIX_CLASS_GROUP).isPresent()) {","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"kailashgautham"},"content":" editPersonDescriptor.setClassGroup(","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"kailashgautham"},"content":" ParserUtil.parseClassGroup(argMultimap.getValue(PREFIX_CLASS_GROUP).get()));","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"kailashgautham"},"content":" if (argMultimap.getValue(PREFIX_TELEGRAM).isPresent()) {","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"kailashgautham"},"content":" editPersonDescriptor.setTelegram(","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"kailashgautham"},"content":" ParserUtil.parseTelegram(argMultimap.getValue(PREFIX_TELEGRAM).orElse(\"\")));","lastModifiedDate":"2024-03-13"},{"lineNumber":63,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"kailashgautham"},"content":" if (argMultimap.getValue(PREFIX_GITHUB).isPresent()) {","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"kailashgautham"},"content":" editPersonDescriptor.setGithub(","lastModifiedDate":"2024-03-11"},{"lineNumber":66,"author":{"gitId":"kailashgautham"},"content":" ParserUtil.parseGithub(argMultimap.getValue(PREFIX_GITHUB).orElse(\"\")));","lastModifiedDate":"2024-03-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"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"}],"authorContributionMap":{"kailashgautham":17,"teojunda":2,"-":56}},{"path":"src/main/java/seedu/address/logic/parser/ListCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"g-tejas"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"g-tejas"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"g-tejas"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"g-tejas"},"content":"import java.util.List;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"g-tejas"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"g-tejas"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"g-tejas"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"g-tejas"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"g-tejas"},"content":"import seedu.address.model.person.ClassGroup;","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"g-tejas"},"content":"import seedu.address.model.person.ListCommandPredicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"g-tejas"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"g-tejas"},"content":" * Parses input arguments and creates a new ListCommand object","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"g-tejas"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"g-tejas"},"content":"public class ListCommandParser implements Parser\u003cListCommand\u003e {","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"g-tejas"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"g-tejas"},"content":" * Parses the given {@code String} of arguments in the context of the ListCommand","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"g-tejas"},"content":" * and returns a ListCommand object for execution.","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"g-tejas"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"g-tejas"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"g-tejas"},"content":" public ListCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"g-tejas"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"g-tejas"},"content":" if (!trimmedArgs.isEmpty()) {","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"g-tejas"},"content":" String[] classGroups \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"g-tejas"},"content":" List\u003cClassGroup\u003e groups;","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"g-tejas"},"content":" try {","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"g-tejas"},"content":" groups \u003d Arrays.stream(classGroups).map(ClassGroup::new).collect(Collectors.toList());","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"g-tejas"},"content":" } catch (IllegalArgumentException err) {","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"g-tejas"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"g-tejas"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, ListCommand.MESSAGE_USAGE)","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"g-tejas"},"content":" );","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"g-tejas"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"g-tejas"},"content":" return new ListCommand(new ListCommandPredicate(Optional.of(groups)));","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"g-tejas"},"content":" } else {","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"g-tejas"},"content":" return new ListCommand(new ListCommandPredicate(Optional.empty()));","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"g-tejas"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"g-tejas"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"g-tejas"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"g-tejas":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":"kailashgautham"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"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.StringUtil;","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-02-11"},{"lineNumber":11,"author":{"gitId":"kailashgautham"},"content":"import seedu.address.model.person.ClassGroup;","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11"},{"lineNumber":13,"author":{"gitId":"kailashgautham"},"content":"import seedu.address.model.person.Github;","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-02-11"},{"lineNumber":16,"author":{"gitId":"kailashgautham"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-03-11"},{"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":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":31,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02"},{"lineNumber":33,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":35,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29"},{"lineNumber":41,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":48,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"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":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":60,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30"},{"lineNumber":61,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":62,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":63,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30"},{"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":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30"},{"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":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":75,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30"},{"lineNumber":76,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":78,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30"},{"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":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30"},{"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":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":90,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":91,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":92,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":93,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":95,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":98,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":99,"author":{"gitId":"kailashgautham"},"content":" * Parses a {@code String classGroup} into an {@code ClassGroup}.","lastModifiedDate":"2024-03-11"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-11"},{"lineNumber":101,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":102,"author":{"gitId":"kailashgautham"},"content":" * @throws ParseException if the given {@code classGroup} is invalid.","lastModifiedDate":"2024-03-11"},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":104,"author":{"gitId":"kailashgautham"},"content":" public static ClassGroup parseClassGroup(String classGroup) throws ParseException {","lastModifiedDate":"2024-03-11"},{"lineNumber":105,"author":{"gitId":"kailashgautham"},"content":" requireNonNull(classGroup);","lastModifiedDate":"2024-03-11"},{"lineNumber":106,"author":{"gitId":"kailashgautham"},"content":" String trimmedClassGroup \u003d classGroup.trim();","lastModifiedDate":"2024-03-11"},{"lineNumber":107,"author":{"gitId":"kailashgautham"},"content":" if (!ClassGroup.isValidClassGroup(trimmedClassGroup)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":108,"author":{"gitId":"kailashgautham"},"content":" throw new ParseException(ClassGroup.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-11"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":110,"author":{"gitId":"kailashgautham"},"content":" return new ClassGroup(trimmedClassGroup);","lastModifiedDate":"2024-03-11"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":113,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":114,"author":{"gitId":"kailashgautham"},"content":" * Parses a {@code String telegram} into an {@code Telegram}.","lastModifiedDate":"2024-03-11"},{"lineNumber":115,"author":{"gitId":"kailashgautham"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-11"},{"lineNumber":116,"author":{"gitId":"kailashgautham"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":117,"author":{"gitId":"kailashgautham"},"content":" * @throws ParseException if the given {@code telegram} is invalid.","lastModifiedDate":"2024-03-11"},{"lineNumber":118,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":119,"author":{"gitId":"kailashgautham"},"content":" public static Optional\u003cTelegram\u003e parseTelegram(String telegram) throws ParseException {","lastModifiedDate":"2024-03-13"},{"lineNumber":120,"author":{"gitId":"kailashgautham"},"content":" if (telegram.isEmpty()) {","lastModifiedDate":"2024-03-11"},{"lineNumber":121,"author":{"gitId":"kailashgautham"},"content":" return Optional.of(Telegram.EMPTY);","lastModifiedDate":"2024-03-13"},{"lineNumber":122,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":123,"author":{"gitId":"kailashgautham"},"content":" String trimmedTelegram \u003d telegram.trim();","lastModifiedDate":"2024-03-11"},{"lineNumber":124,"author":{"gitId":"kailashgautham"},"content":" if (!Telegram.isValidTelegram(trimmedTelegram)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":125,"author":{"gitId":"kailashgautham"},"content":" throw new ParseException(Telegram.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-11"},{"lineNumber":126,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":127,"author":{"gitId":"kailashgautham"},"content":" return Optional.of(new Telegram(trimmedTelegram));","lastModifiedDate":"2024-03-13"},{"lineNumber":128,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":129,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":130,"author":{"gitId":"kailashgautham"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":131,"author":{"gitId":"kailashgautham"},"content":" * Parses a {@code String github} into an {@code Github}.","lastModifiedDate":"2024-03-11"},{"lineNumber":132,"author":{"gitId":"kailashgautham"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-11"},{"lineNumber":133,"author":{"gitId":"kailashgautham"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":134,"author":{"gitId":"kailashgautham"},"content":" * @throws ParseException if the given {@code github} is invalid.","lastModifiedDate":"2024-03-11"},{"lineNumber":135,"author":{"gitId":"kailashgautham"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":136,"author":{"gitId":"kailashgautham"},"content":" public static Optional\u003cGithub\u003e parseGithub(String github) throws ParseException {","lastModifiedDate":"2024-03-13"},{"lineNumber":137,"author":{"gitId":"kailashgautham"},"content":" if (github.isEmpty()) {","lastModifiedDate":"2024-03-11"},{"lineNumber":138,"author":{"gitId":"kailashgautham"},"content":" return Optional.of(Github.EMPTY);","lastModifiedDate":"2024-03-13"},{"lineNumber":139,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":140,"author":{"gitId":"kailashgautham"},"content":" String trimmedGithub \u003d github.trim();","lastModifiedDate":"2024-03-11"},{"lineNumber":141,"author":{"gitId":"kailashgautham"},"content":" if (!Github.isValidGithub(trimmedGithub)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":142,"author":{"gitId":"kailashgautham"},"content":" throw new ParseException(ClassGroup.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-11"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":144,"author":{"gitId":"kailashgautham"},"content":" return Optional.of(new Github(trimmedGithub));","lastModifiedDate":"2024-03-13"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":146,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"kailashgautham":41,"-":105}},{"path":"src/main/java/seedu/address/logic/parser/ViewCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"YuSoonZ"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"YuSoonZ"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"YuSoonZ"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"YuSoonZ"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"YuSoonZ"},"content":"import seedu.address.logic.commands.ViewCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"YuSoonZ"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"YuSoonZ"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"YuSoonZ"},"content":" * Parses input arguments and creates a new ViewCommand object.","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"YuSoonZ"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"YuSoonZ"},"content":"public class ViewCommandParser implements Parser\u003cViewCommand\u003e {","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"YuSoonZ"},"content":" public static final String MESSAGE_ONE_BASED_INDEXING \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"YuSoonZ"},"content":" \"Please input a 1-based index.\";","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"YuSoonZ"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"YuSoonZ"},"content":" * Parses the given {@code String} of arguments in the context of the ViewCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"YuSoonZ"},"content":" * and returns a ViewCommand object for execution.","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"YuSoonZ"},"content":" * @param args The user input arguments.","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"YuSoonZ"},"content":" * @return A ViewCommand object representing the parsed command.","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"YuSoonZ"},"content":" * @throws ParseException if the user input does not conform to the expected format","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"YuSoonZ"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"YuSoonZ"},"content":" public ViewCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"YuSoonZ"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"YuSoonZ"},"content":" Index index;","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"YuSoonZ"},"content":" try {","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"YuSoonZ"},"content":" index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"YuSoonZ"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"YuSoonZ"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"YuSoonZ"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, ViewCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"YuSoonZ"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"YuSoonZ"},"content":" if (index.getOneBased() \u003c\u003d 0) {","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"YuSoonZ"},"content":" throw new ParseException(MESSAGE_ONE_BASED_INDEXING);","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"YuSoonZ"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"YuSoonZ"},"content":" return new ViewCommand(index);","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"YuSoonZ"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"YuSoonZ"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"YuSoonZ":39}},{"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":"-"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2017-08-05"},{"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":"teojunda"},"content":" * Adds the given person and updates the filteredList to show all.","lastModifiedDate":"2024-03-13"},{"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":"2024-03-13"},{"lineNumber":73,"author":{"gitId":"teojunda"},"content":" * Adds the given person without updating the filteredList.","lastModifiedDate":"2024-03-13"},{"lineNumber":74,"author":{"gitId":"teojunda"},"content":" * {@code person} must not already exist in the address book.","lastModifiedDate":"2024-03-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":76,"author":{"gitId":"teojunda"},"content":" void addPersonKeepFilter(Person person);","lastModifiedDate":"2024-03-14"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered person list */","lastModifiedDate":"2017-09-01"},{"lineNumber":79,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":81,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * Updates the filter of the filtered person list to filter by the given {@code predicate}.","lastModifiedDate":"2017-08-05"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":85,"author":{"gitId":"-"},"content":" void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate);","lastModifiedDate":"2018-01-10"},{"lineNumber":86,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"teojunda":4,"-":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":"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":"-"},"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":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2018-01-10"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(this.addressBook.getPersonList());","lastModifiedDate":"2019-01-25"},{"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":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25"},{"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":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","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 setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"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":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":92,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":93,"author":{"gitId":"-"},"content":" return addressBook.hasPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":" addressBook.removePerson(target);","lastModifiedDate":"2019-01-25"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":102,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":103,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":104,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":108,"author":{"gitId":"teojunda"},"content":" public void addPersonKeepFilter(Person person) {","lastModifiedDate":"2024-03-14"},{"lineNumber":109,"author":{"gitId":"teojunda"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2024-03-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":112,"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":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10"},{"lineNumber":116,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11"},{"lineNumber":117,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":120,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":124,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":125,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05"},{"lineNumber":126,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12"},{"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":"2017-05-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":132,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":135,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31"},{"lineNumber":136,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":137,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":140,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":141,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13"},{"lineNumber":142,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13"},{"lineNumber":143,"author":{"gitId":"-"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons);","lastModifiedDate":"2023-07-13"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"teojunda":2,"-":144}},{"path":"src/main/java/seedu/address/model/person/ClassGroup.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"kailashgautham"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"kailashgautham"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"kailashgautham"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"kailashgautham"},"content":"/**","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"g-tejas"},"content":" * Represents a Person\u0027s class/group in the TA Toolkit.","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"kailashgautham"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidClassGroup(String)}","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"kailashgautham"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"kailashgautham"},"content":"public class ClassGroup {","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"kailashgautham"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"g-tejas"},"content":" \"Class/groups should only contain alphanumeric characters delimited by a dash.\\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"g-tejas"},"content":" + \"It cannot contain symbols, whitespaces and it should not be blank\";","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"kailashgautham"},"content":" /*","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"kailashgautham"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"kailashgautham"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"kailashgautham"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"g-tejas"},"content":" public static final String VALIDATION_REGEX \u003d \"^(?:[\\\\p{Alnum}]+-?)*[\\\\p{Alnum}]+$\";","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"kailashgautham"},"content":" public final String classGroup;","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"kailashgautham"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"kailashgautham"},"content":" * Constructs a {@code ClassGroup}.","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"kailashgautham"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"kailashgautham"},"content":" * @param classGroup A valid classGroup.","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"kailashgautham"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"kailashgautham"},"content":" public ClassGroup(String classGroup) {","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"kailashgautham"},"content":" requireNonNull(classGroup);","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"kailashgautham"},"content":" checkArgument(isValidClassGroup(classGroup), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"kailashgautham"},"content":" this.classGroup \u003d classGroup;","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"kailashgautham"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"kailashgautham"},"content":" * Returns true if a given string is a valid class/group.","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"kailashgautham"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"kailashgautham"},"content":" public static boolean isValidClassGroup(String test) {","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"kailashgautham"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"kailashgautham"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"kailashgautham"},"content":" public String toString() {","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"kailashgautham"},"content":" return classGroup;","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"kailashgautham"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"kailashgautham"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"kailashgautham"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"kailashgautham"},"content":" return true;","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"kailashgautham"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"kailashgautham"},"content":" if (!(other instanceof ClassGroup)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"kailashgautham"},"content":" return false;","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"kailashgautham"},"content":" ClassGroup otherClassGroup \u003d (ClassGroup) other;","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"kailashgautham"},"content":" return classGroup.equals(otherClassGroup.classGroup);","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"kailashgautham"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"kailashgautham"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"kailashgautham"},"content":" return classGroup.hashCode();","lastModifiedDate":"2024-03-11"},{"lineNumber":66,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":68,"author":{"gitId":"kailashgautham"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"kailashgautham":64,"g-tejas":4}},{"path":"src/main/java/seedu/address/model/person/Github.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"kailashgautham"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"kailashgautham"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"kailashgautham"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"kailashgautham"},"content":"/**","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"kailashgautham"},"content":" * Represents a Person\u0027s GitHub ID in the address book.","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"kailashgautham"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidGithub(String)}","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"kailashgautham"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"kailashgautham"},"content":"public class Github {","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"kailashgautham"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"kailashgautham"},"content":" \"GitHub ID should only contain alphanumeric characters and symbols, and it should not be blank\";","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"kailashgautham"},"content":" public static final Github EMPTY \u003d new Github(\"\", true);","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"kailashgautham"},"content":" /*","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"kailashgautham"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"kailashgautham"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"kailashgautham"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"kailashgautham"},"content":" public static final String VALIDATION_REGEX \u003d \"^[a-zA-Z0-9_.-]+$\";","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"kailashgautham"},"content":" public final String githubId;","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"kailashgautham"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"kailashgautham"},"content":" * Constructs a {@code Github}.","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"kailashgautham"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"kailashgautham"},"content":" * @param githubId A valid Github ID.","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"kailashgautham"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"kailashgautham"},"content":" public Github(String githubId) {","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"kailashgautham"},"content":" requireNonNull(githubId);","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"kailashgautham"},"content":" checkArgument(isValidGithub(githubId), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"kailashgautham"},"content":" this.githubId \u003d githubId;","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"kailashgautham"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"kailashgautham"},"content":" * Constructs a {@code Github}.","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"kailashgautham"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"kailashgautham"},"content":" * @param githubId An empty string.","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"kailashgautham"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"kailashgautham"},"content":" private Github(String githubId, boolean isSentinel) {","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"kailashgautham"},"content":" if (!isSentinel) {","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"kailashgautham"},"content":" throw new IllegalArgumentException(\"This constructor is only for creating the EMPTY object\");","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"kailashgautham"},"content":" this.githubId \u003d githubId;","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"kailashgautham"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"kailashgautham"},"content":" * Returns true if a given string is a valid GitHub ID.","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"kailashgautham"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"kailashgautham"},"content":" public static boolean isValidGithub(String test) {","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"kailashgautham"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"teojunda"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":56,"author":{"gitId":"teojunda"},"content":" * Returns true is the Github ID is empty.","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"teojunda"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"teojunda"},"content":" public boolean isEmpty() {","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"teojunda"},"content":" return githubId.isEmpty();","lastModifiedDate":"2024-03-13"},{"lineNumber":60,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":61,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"kailashgautham"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"kailashgautham"},"content":" public String toString() {","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"kailashgautham"},"content":" return githubId;","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":66,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"kailashgautham"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":68,"author":{"gitId":"kailashgautham"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"kailashgautham"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-11"},{"lineNumber":70,"author":{"gitId":"kailashgautham"},"content":" return true;","lastModifiedDate":"2024-03-11"},{"lineNumber":71,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":72,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":73,"author":{"gitId":"kailashgautham"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"kailashgautham"},"content":" if (!(other instanceof Github)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":75,"author":{"gitId":"kailashgautham"},"content":" return false;","lastModifiedDate":"2024-03-11"},{"lineNumber":76,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":77,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":78,"author":{"gitId":"kailashgautham"},"content":" Github otherGithub \u003d (Github) other;","lastModifiedDate":"2024-03-11"},{"lineNumber":79,"author":{"gitId":"kailashgautham"},"content":" return githubId.equals(otherGithub.githubId);","lastModifiedDate":"2024-03-11"},{"lineNumber":80,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":81,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":82,"author":{"gitId":"kailashgautham"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":83,"author":{"gitId":"kailashgautham"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-11"},{"lineNumber":84,"author":{"gitId":"kailashgautham"},"content":" return githubId.hashCode();","lastModifiedDate":"2024-03-11"},{"lineNumber":85,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":86,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":87,"author":{"gitId":"kailashgautham"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"kailashgautham":81,"teojunda":6}},{"path":"src/main/java/seedu/address/model/person/ListCommandPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"g-tejas"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"g-tejas"},"content":"import java.util.List;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"g-tejas"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"g-tejas"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"g-tejas"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"g-tejas"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"g-tejas"},"content":" * Tests that a {@code Person}\u0027s {@code Name} is from any of the classGroups given or all","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"g-tejas"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"g-tejas"},"content":"public class ListCommandPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"g-tejas"},"content":" private final Optional\u003cList\u003cClassGroup\u003e\u003e classGroups;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"g-tejas"},"content":" public ListCommandPredicate(Optional\u003cList\u003cClassGroup\u003e\u003e classGroups) {","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"g-tejas"},"content":" this.classGroups \u003d classGroups;","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"g-tejas"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"g-tejas"},"content":" public Optional\u003cList\u003cClassGroup\u003e\u003e getClassGroups() {","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"g-tejas"},"content":" return classGroups;","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"g-tejas"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"g-tejas"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"g-tejas"},"content":" * If the classGroups is not empty, tests that a {@code Person}\u0027s {@code ClassGroup} matches any of the","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"g-tejas"},"content":" * keywords given. If the classGroups is empty, all persons are shown, so return true.","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"g-tejas"},"content":" * @param person The person to be tested","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"g-tejas"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"g-tejas"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"g-tejas"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"g-tejas"},"content":" return classGroups.map(groups -\u003e groups.stream()","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"g-tejas"},"content":" .anyMatch(keyword -\u003e person.getClassGroup().toString().startsWith(keyword.toString())))","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"g-tejas"},"content":" .orElse(true);","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"g-tejas"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"g-tejas"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"g-tejas"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"g-tejas"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"g-tejas"},"content":" return true;","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"g-tejas"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"g-tejas"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"g-tejas"},"content":" if (!(other instanceof ListCommandPredicate)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"g-tejas"},"content":" return false;","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"g-tejas"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"g-tejas"},"content":" ListCommandPredicate otherPredicate \u003d (ListCommandPredicate) other;","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"g-tejas"},"content":" return classGroups.equals(otherPredicate.classGroups);","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"g-tejas"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"g-tejas"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"g-tejas"},"content":" public String toString() {","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"g-tejas"},"content":" return new ToStringBuilder(this).add(\"classGroups\", classGroups).toString();","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"g-tejas"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"g-tejas"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"g-tejas":55}},{"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":"-"},"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":"-"},"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":"-"},"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":"teojunda"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"teojunda"},"content":" * Compares this Name object with the specified Name object for order based on their full names,","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"teojunda"},"content":" * ignoring case considerations.","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"teojunda"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"teojunda"},"content":" * \u003cp\u003eReturns a negative integer, zero, or a positive integer as this Name object is less than, equal to,","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"teojunda"},"content":" * or greater than the specified Name object.","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"teojunda"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"teojunda"},"content":" * \u003cp\u003eThe comparison is based on lexicographic ordering of the full names of the Names.","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"teojunda"},"content":" * The comparison is case-insensitive.","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"teojunda"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"teojunda"},"content":" * @param other The Name object to be compared.","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"teojunda"},"content":" * @return A negative integer if this Name is less than the specified Name, zero if they are equal, or a","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"teojunda"},"content":" * positive integer if this Name is greater than the specified Name.","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"teojunda"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"teojunda"},"content":" public int compare(Name other) {","lastModifiedDate":"2024-03-13"},{"lineNumber":56,"author":{"gitId":"teojunda"},"content":" return fullName.compareToIgnoreCase(other.toString());","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-03-13"},{"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"}],"authorContributionMap":{"teojunda":17,"-":66}},{"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.Objects;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"kailashgautham"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":19,"author":{"gitId":"kailashgautham"},"content":" private final ClassGroup classGroup;","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":21,"author":{"gitId":"kailashgautham"},"content":" private final Phone phone;","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"kailashgautham"},"content":" private final Optional\u003cTelegram\u003e telegram;","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"kailashgautham"},"content":" private final Optional\u003cGithub\u003e github;","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"kailashgautham"},"content":" public Person(Name name, ClassGroup classGroup, Email email, Phone phone,","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"kailashgautham"},"content":" Optional\u003cTelegram\u003e telegram, Optional\u003cGithub\u003e github) {","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"kailashgautham"},"content":" requireAllNonNull(name, classGroup, email, phone);","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20"},{"lineNumber":32,"author":{"gitId":"kailashgautham"},"content":" this.classGroup \u003d classGroup;","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20"},{"lineNumber":34,"author":{"gitId":"kailashgautham"},"content":" this.phone \u003d phone;","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"kailashgautham"},"content":" this.telegram \u003d telegram;","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"kailashgautham"},"content":" this.github \u003d github;","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"kailashgautham"},"content":" public ClassGroup getClassGroup() {","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"kailashgautham"},"content":" return classGroup;","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":55,"author":{"gitId":"kailashgautham"},"content":" public Optional\u003cTelegram\u003e getTelegram() {","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"kailashgautham"},"content":" return telegram;","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"kailashgautham"},"content":" public Optional\u003cGithub\u003e getGithub() {","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"kailashgautham"},"content":" return github;","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":64,"author":{"gitId":"teojunda"},"content":" * Returns true if both persons have the same Email, Phone, Telegram (optional), or Github (optional).","lastModifiedDate":"2024-03-14"},{"lineNumber":65,"author":{"gitId":"teojunda"},"content":" * Persons are allowed to have the same name.","lastModifiedDate":"2024-03-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":67,"author":{"gitId":"teojunda"},"content":" *","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"teojunda"},"content":" * @param otherPerson The Person object whose fields are to be compared.","lastModifiedDate":"2024-03-14"},{"lineNumber":69,"author":{"gitId":"teojunda"},"content":" * @return True if both persons have either the same Email, Phone, Telegram (optional), or Github (optional).","lastModifiedDate":"2024-03-14"},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":71,"author":{"gitId":"teojunda"},"content":" public boolean checkDuplicateField(Person otherPerson) {","lastModifiedDate":"2024-03-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"teojunda"},"content":" if (otherPerson \u003d\u003d null) {","lastModifiedDate":"2024-03-13"},{"lineNumber":76,"author":{"gitId":"teojunda"},"content":" return false;","lastModifiedDate":"2024-03-13"},{"lineNumber":77,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"teojunda"},"content":" boolean isEmailEqual \u003d otherPerson.getEmail().equals(getEmail());","lastModifiedDate":"2024-03-13"},{"lineNumber":80,"author":{"gitId":"teojunda"},"content":" boolean isPhoneEqual \u003d otherPerson.getPhone().equals(getPhone());","lastModifiedDate":"2024-03-13"},{"lineNumber":81,"author":{"gitId":"teojunda"},"content":" boolean isBothTelegramNonEmpty \u003d !getTelegram().orElse(Telegram.EMPTY).isEmpty()","lastModifiedDate":"2024-03-13"},{"lineNumber":82,"author":{"gitId":"teojunda"},"content":" \u0026\u0026 !otherPerson.getTelegram().orElse(Telegram.EMPTY).isEmpty();","lastModifiedDate":"2024-03-13"},{"lineNumber":83,"author":{"gitId":"teojunda"},"content":" boolean isBothGithubNonEmpty \u003d !getGithub().orElse(Github.EMPTY).isEmpty()","lastModifiedDate":"2024-03-13"},{"lineNumber":84,"author":{"gitId":"teojunda"},"content":" \u0026\u0026 !otherPerson.getGithub().orElse(Github.EMPTY).isEmpty();","lastModifiedDate":"2024-03-13"},{"lineNumber":85,"author":{"gitId":"teojunda"},"content":" boolean isTelegramNonEmptyAndEqual \u003d isBothTelegramNonEmpty \u0026\u0026 otherPerson.getTelegram().equals(getTelegram());","lastModifiedDate":"2024-03-13"},{"lineNumber":86,"author":{"gitId":"teojunda"},"content":" boolean isGithubNonEmptyAndEqual \u003d isBothGithubNonEmpty \u0026\u0026 otherPerson.getGithub().equals(getGithub());","lastModifiedDate":"2024-03-13"},{"lineNumber":87,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":89,"author":{"gitId":"teojunda"},"content":" return (isEmailEqual","lastModifiedDate":"2024-03-13"},{"lineNumber":90,"author":{"gitId":"teojunda"},"content":" || isPhoneEqual","lastModifiedDate":"2024-03-13"},{"lineNumber":91,"author":{"gitId":"teojunda"},"content":" || isTelegramNonEmptyAndEqual","lastModifiedDate":"2024-03-13"},{"lineNumber":92,"author":{"gitId":"teojunda"},"content":" || isGithubNonEmptyAndEqual);","lastModifiedDate":"2024-03-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":95,"author":{"gitId":"teojunda"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":96,"author":{"gitId":"teojunda"},"content":" * Compares this Person\u0027s name with the specified Person\u0027s name for order based on their names, ignoring case","lastModifiedDate":"2024-03-13"},{"lineNumber":97,"author":{"gitId":"teojunda"},"content":" * considerations.","lastModifiedDate":"2024-03-13"},{"lineNumber":98,"author":{"gitId":"teojunda"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":99,"author":{"gitId":"teojunda"},"content":" * \u003cp\u003eReturns a negative integer, zero, or a positive integer as this Person\u0027s name is less than, equal to,","lastModifiedDate":"2024-03-13"},{"lineNumber":100,"author":{"gitId":"teojunda"},"content":" * or greater than the specified Person\u0027s name.","lastModifiedDate":"2024-03-13"},{"lineNumber":101,"author":{"gitId":"teojunda"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":102,"author":{"gitId":"teojunda"},"content":" * \u003cp\u003eThe comparison is based on lexicographic ordering of the names of the Persons.","lastModifiedDate":"2024-03-13"},{"lineNumber":103,"author":{"gitId":"teojunda"},"content":" * The comparison is case-insensitive.","lastModifiedDate":"2024-03-13"},{"lineNumber":104,"author":{"gitId":"teojunda"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":105,"author":{"gitId":"teojunda"},"content":" * @param other The Person object whose name is to be compared.","lastModifiedDate":"2024-03-13"},{"lineNumber":106,"author":{"gitId":"teojunda"},"content":" * @return A negative integer if this Person\u0027s name is less than the specified Person\u0027s name,","lastModifiedDate":"2024-03-13"},{"lineNumber":107,"author":{"gitId":"teojunda"},"content":" * zero if they are equal, or a positive integer if this Person\u0027s name is greater than the other Person\u0027s name.","lastModifiedDate":"2024-03-13"},{"lineNumber":108,"author":{"gitId":"teojunda"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":109,"author":{"gitId":"teojunda"},"content":" public int compareName(Person other) {","lastModifiedDate":"2024-03-13"},{"lineNumber":110,"author":{"gitId":"teojunda"},"content":" return name.compare(other.getName());","lastModifiedDate":"2024-03-13"},{"lineNumber":111,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":115,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":118,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":119,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":122,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10"},{"lineNumber":124,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":127,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10"},{"lineNumber":128,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":129,"author":{"gitId":"kailashgautham"},"content":" \u0026\u0026 classGroup.equals(otherPerson.classGroup)","lastModifiedDate":"2024-03-11"},{"lineNumber":130,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":131,"author":{"gitId":"kailashgautham"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2024-03-11"},{"lineNumber":132,"author":{"gitId":"kailashgautham"},"content":" \u0026\u0026 telegram.equals(otherPerson.telegram)","lastModifiedDate":"2024-03-11"},{"lineNumber":133,"author":{"gitId":"kailashgautham"},"content":" \u0026\u0026 github.equals(otherPerson.github);","lastModifiedDate":"2024-03-11"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":137,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":138,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":139,"author":{"gitId":"kailashgautham"},"content":" return Objects.hash(name, classGroup, email, phone, telegram, github);","lastModifiedDate":"2024-03-11"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":143,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":144,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":146,"author":{"gitId":"kailashgautham"},"content":" .add(\"classGroup\", classGroup)","lastModifiedDate":"2024-03-11"},{"lineNumber":147,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":148,"author":{"gitId":"kailashgautham"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2024-03-11"},{"lineNumber":149,"author":{"gitId":"kailashgautham"},"content":" .add(\"telegram\", telegram.isPresent() ? telegram.get() : \"\")","lastModifiedDate":"2024-03-11"},{"lineNumber":150,"author":{"gitId":"kailashgautham"},"content":" .add(\"github\", github.isPresent() ? github.get() : \"\")","lastModifiedDate":"2024-03-11"},{"lineNumber":151,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":153,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"kailashgautham":30,"teojunda":39,"-":84}},{"path":"src/main/java/seedu/address/model/person/Telegram.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"kailashgautham"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"kailashgautham"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"kailashgautham"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"kailashgautham"},"content":"/**","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"kailashgautham"},"content":" * Represents a Person\u0027s Telegram ID in the address book.","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"kailashgautham"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidTelegram(String)}","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"kailashgautham"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"kailashgautham"},"content":"public class Telegram {","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"kailashgautham"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"kailashgautham"},"content":" \"Telegram ID should only contain alphanumeric characters and symbols, start with an @ symbol,\"","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"kailashgautham"},"content":" + \" and it should not be blank\";","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"kailashgautham"},"content":" public static final Telegram EMPTY \u003d new Telegram(\"\", true);","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"kailashgautham"},"content":" /*","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"kailashgautham"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"kailashgautham"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"kailashgautham"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"kailashgautham"},"content":" public static final String VALIDATION_REGEX \u003d \"^[@][a-zA-Z0-9_.-]+$\";","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"kailashgautham"},"content":" public final String telegramId;","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"kailashgautham"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"kailashgautham"},"content":" * Constructs a {@code Telegram}.","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"kailashgautham"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"kailashgautham"},"content":" * @param telegramId A valid Telegram ID.","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"kailashgautham"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"kailashgautham"},"content":" public Telegram(String telegramId) {","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"kailashgautham"},"content":" requireNonNull(telegramId);","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"kailashgautham"},"content":" checkArgument(isValidTelegram(telegramId), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"kailashgautham"},"content":" this.telegramId \u003d telegramId;","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"kailashgautham"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"kailashgautham"},"content":" * Constructs a {@code Telegram}.","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"kailashgautham"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"kailashgautham"},"content":" * @param telegramId An empty string.","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"kailashgautham"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"kailashgautham"},"content":" private Telegram(String telegramId, boolean isSentinel) {","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"kailashgautham"},"content":" if (!isSentinel) {","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"kailashgautham"},"content":" throw new IllegalArgumentException(\"This constructor is only for creating the EMPTY object\");","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"kailashgautham"},"content":" this.telegramId \u003d telegramId;","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"kailashgautham"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"kailashgautham"},"content":" * Returns true if a given string is a valid Telegram ID.","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"kailashgautham"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"kailashgautham"},"content":" public static boolean isValidTelegram(String test) {","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"kailashgautham"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"teojunda"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"teojunda"},"content":" * Returns true is the Telegram ID is empty.","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"teojunda"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"teojunda"},"content":" public boolean isEmpty() {","lastModifiedDate":"2024-03-13"},{"lineNumber":60,"author":{"gitId":"teojunda"},"content":" return telegramId.isEmpty();","lastModifiedDate":"2024-03-13"},{"lineNumber":61,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":62,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"kailashgautham"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"kailashgautham"},"content":" public String toString() {","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"kailashgautham"},"content":" return telegramId;","lastModifiedDate":"2024-03-11"},{"lineNumber":66,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":68,"author":{"gitId":"kailashgautham"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"kailashgautham"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-11"},{"lineNumber":70,"author":{"gitId":"kailashgautham"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-11"},{"lineNumber":71,"author":{"gitId":"kailashgautham"},"content":" return true;","lastModifiedDate":"2024-03-11"},{"lineNumber":72,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":73,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"kailashgautham"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-11"},{"lineNumber":75,"author":{"gitId":"kailashgautham"},"content":" if (!(other instanceof Telegram)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":76,"author":{"gitId":"kailashgautham"},"content":" return false;","lastModifiedDate":"2024-03-11"},{"lineNumber":77,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":78,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":79,"author":{"gitId":"kailashgautham"},"content":" Telegram otherTelegram \u003d (Telegram) other;","lastModifiedDate":"2024-03-11"},{"lineNumber":80,"author":{"gitId":"kailashgautham"},"content":" return telegramId.equals(otherTelegram.telegramId);","lastModifiedDate":"2024-03-11"},{"lineNumber":81,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":82,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":83,"author":{"gitId":"kailashgautham"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":84,"author":{"gitId":"kailashgautham"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-11"},{"lineNumber":85,"author":{"gitId":"kailashgautham"},"content":" return telegramId.hashCode();","lastModifiedDate":"2024-03-11"},{"lineNumber":86,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":87,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":88,"author":{"gitId":"kailashgautham"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"kailashgautham":82,"teojunda":6}},{"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":"teojunda"},"content":" * The list of persons is always sorted by name by ensuring all inserts are added in the correct index.","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"teojunda"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2016-09-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"teojunda"},"content":" * @see Person#checkDuplicateField(Person)","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class UniquePersonList implements Iterable\u003cPerson\u003e {","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2016-10-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2018-12-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2018-12-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Returns true if the list contains an equivalent person as the given argument.","lastModifiedDate":"2016-09-22"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public boolean contains(Person toCheck) {","lastModifiedDate":"2018-01-10"},{"lineNumber":37,"author":{"gitId":"-"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2017-05-15"},{"lineNumber":38,"author":{"gitId":"teojunda"},"content":" return internalList.stream().anyMatch(toCheck::checkDuplicateField);","lastModifiedDate":"2024-03-14"},{"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":" * Adds a person to the list.","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * The person must not already exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void add(Person toAdd) {","lastModifiedDate":"2018-08-07"},{"lineNumber":46,"author":{"gitId":"-"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2017-05-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"teojunda"},"content":" int insertionIndex \u003d 0;","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"teojunda"},"content":" for (Person person : internalList) {","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"teojunda"},"content":" if (toAdd.compareName(person) \u003c 0) {","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"teojunda"},"content":" break;","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"teojunda"},"content":" insertionIndex++;","lastModifiedDate":"2024-03-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"teojunda"},"content":" internalList.add(insertionIndex, toAdd);","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","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":" * Removes the equivalent person from the list.","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * The person must exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void remove(Person toRemove) {","lastModifiedDate":"2018-08-07"},{"lineNumber":65,"author":{"gitId":"-"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2017-05-15"},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2018-02-28"},{"lineNumber":67,"author":{"gitId":"-"},"content":" throw new PersonNotFoundException();","lastModifiedDate":"2016-08-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","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":" public void setPersons(UniquePersonList replacement) {","lastModifiedDate":"2016-10-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" requireNonNull(replacement);","lastModifiedDate":"2018-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2018-08-14"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Replaces the contents of this list with {@code persons}.","lastModifiedDate":"2018-08-07"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2018-08-07"},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void setPersons(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-08-07"},{"lineNumber":81,"author":{"gitId":"-"},"content":" requireAllNonNull(persons);","lastModifiedDate":"2018-01-10"},{"lineNumber":82,"author":{"gitId":"-"},"content":" if (!personsAreUnique(persons)) {","lastModifiedDate":"2018-04-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2018-01-21"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-21"},{"lineNumber":86,"author":{"gitId":"-"},"content":" internalList.setAll(persons);","lastModifiedDate":"2018-08-14"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-09-01"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2017-09-01"},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-09-01"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2018-04-05"},{"lineNumber":93,"author":{"gitId":"-"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2018-12-09"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public Iterator\u003cPerson\u003e iterator() {","lastModifiedDate":"2016-08-24"},{"lineNumber":98,"author":{"gitId":"-"},"content":" return internalList.iterator();","lastModifiedDate":"2016-08-24"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":102,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"lineNumber":103,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" if (!(other instanceof UniquePersonList)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" UniquePersonList otherUniquePersonList \u003d (UniquePersonList) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" return internalList.equals(otherUniquePersonList.internalList);","lastModifiedDate":"2023-07-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":118,"author":{"gitId":"-"},"content":" return internalList.hashCode();","lastModifiedDate":"2016-09-21"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-24"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-24"},{"lineNumber":123,"author":{"gitId":"-"},"content":" return internalList.toString();","lastModifiedDate":"2019-02-24"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24"},{"lineNumber":126,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":127,"author":{"gitId":"-"},"content":" * Returns true if {@code persons} contains only unique persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":128,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":129,"author":{"gitId":"-"},"content":" private boolean personsAreUnique(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-04-19"},{"lineNumber":130,"author":{"gitId":"-"},"content":" for (int i \u003d 0; i \u003c persons.size() - 1; i++) {","lastModifiedDate":"2018-04-19"},{"lineNumber":131,"author":{"gitId":"-"},"content":" for (int j \u003d i + 1; j \u003c persons.size(); j++) {","lastModifiedDate":"2018-04-19"},{"lineNumber":132,"author":{"gitId":"teojunda"},"content":" if (persons.get(i).checkDuplicateField(persons.get(j))) {","lastModifiedDate":"2024-03-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-04-19"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":137,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":139,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"teojunda":12,"-":127}},{"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":"kailashgautham"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20"},{"lineNumber":7,"author":{"gitId":"kailashgautham"},"content":"import seedu.address.model.person.ClassGroup;","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20"},{"lineNumber":9,"author":{"gitId":"kailashgautham"},"content":"import seedu.address.model.person.Github;","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-20"},{"lineNumber":13,"author":{"gitId":"kailashgautham"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20"},{"lineNumber":21,"author":{"gitId":"kailashgautham"},"content":" new Person(new Name(\"Alex Yeoh\"), new ClassGroup(\"T10-2\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"kailashgautham"},"content":" new Phone(\"87438807\"), Optional.of(new Telegram(\"@alex123\")), Optional.of(new Github(\"alexyeoh\"))),","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"kailashgautham"},"content":" new Person(new Name(\"Bernice Yu\"), new ClassGroup(\"T11-2\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"kailashgautham"},"content":" new Phone(\"99272758\"), Optional.of(new Telegram(\"@bernice123\")),","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"kailashgautham"},"content":" Optional.of(new Github(\"berniceyu123\"))),","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"kailashgautham"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new ClassGroup(\"T11-2\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"kailashgautham"},"content":" new Phone(\"93210283\"), Optional.of(new Telegram(\"@charlotte123\")),","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"kailashgautham"},"content":" Optional.of(new Github(\"charlotte123\"))),","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"kailashgautham"},"content":" new Person(new Name(\"David Li\"), new ClassGroup(\"F14-3\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"kailashgautham"},"content":" new Phone(\"91031282\"), Optional.of(new Telegram(\"@david123\")), Optional.of(new Github(\"david123\"))),","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"kailashgautham"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new ClassGroup(\"A12-3\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"kailashgautham"},"content":" new Phone(\"92492021\"), Optional.of(new Telegram(\"@irfan123\")), Optional.of(new Github(\"irfan123\"))),","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"kailashgautham"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new ClassGroup(\"A05-4\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"kailashgautham"},"content":" new Phone(\"92624417\"), Optional.of(new Telegram(\"@roy123\")), Optional.of(new Github(\"roy123\")))","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07"},{"lineNumber":40,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20"},{"lineNumber":41,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":45,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"kailashgautham":18,"-":27}},{"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":"kailashgautham"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"kailashgautham"},"content":"import seedu.address.model.person.ClassGroup;","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"kailashgautham"},"content":"import seedu.address.model.person.Github;","lastModifiedDate":"2024-03-11"},{"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":"kailashgautham"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"kailashgautham"},"content":" private final String classGroup;","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"kailashgautham"},"content":" private final String telegram;","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"kailashgautham"},"content":" private final String github;","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"kailashgautham"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"classGroup\") String classGroup,","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"kailashgautham"},"content":" @JsonProperty(\"telegram\") String telegram, @JsonProperty(\"github\") String github) {","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"kailashgautham"},"content":" this.classGroup \u003d classGroup;","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"kailashgautham"},"content":" this.telegram \u003d telegram;","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"kailashgautham"},"content":" this.github \u003d github;","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","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":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"kailashgautham"},"content":" classGroup \u003d source.getClassGroup().classGroup;","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"kailashgautham"},"content":" telegram \u003d source.getTelegram().orElse(Telegram.EMPTY).telegramId;","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"kailashgautham"},"content":" github \u003d source.getGithub().orElse(Github.EMPTY).githubId;","lastModifiedDate":"2024-03-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 this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"kailashgautham"},"content":" if (classGroup \u003d\u003d null) {","lastModifiedDate":"2024-03-11"},{"lineNumber":90,"author":{"gitId":"kailashgautham"},"content":" throw new IllegalValueException(","lastModifiedDate":"2024-03-11"},{"lineNumber":91,"author":{"gitId":"kailashgautham"},"content":" String.format(MISSING_FIELD_MESSAGE_FORMAT, ClassGroup.class.getSimpleName()));","lastModifiedDate":"2024-03-11"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"kailashgautham"},"content":" if (!ClassGroup.isValidClassGroup(classGroup)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":94,"author":{"gitId":"kailashgautham"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-11"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"kailashgautham"},"content":" final ClassGroup modelClassGroup \u003d new ClassGroup(classGroup);","lastModifiedDate":"2024-03-11"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"kailashgautham"},"content":" final Optional\u003cTelegram\u003e modelTelegram;","lastModifiedDate":"2024-03-13"},{"lineNumber":99,"author":{"gitId":"g-tejas"},"content":" if (telegram \u003d\u003d null || telegram.isEmpty()) {","lastModifiedDate":"2024-03-14"},{"lineNumber":100,"author":{"gitId":"kailashgautham"},"content":" modelTelegram \u003d Optional.of(Telegram.EMPTY);","lastModifiedDate":"2024-03-13"},{"lineNumber":101,"author":{"gitId":"kailashgautham"},"content":" } else if (!Telegram.isValidTelegram(telegram)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":102,"author":{"gitId":"kailashgautham"},"content":" throw new IllegalValueException(Telegram.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-11"},{"lineNumber":103,"author":{"gitId":"kailashgautham"},"content":" } else {","lastModifiedDate":"2024-03-11"},{"lineNumber":104,"author":{"gitId":"kailashgautham"},"content":" modelTelegram \u003d Optional.of(new Telegram(telegram));","lastModifiedDate":"2024-03-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"kailashgautham"},"content":" final Optional\u003cGithub\u003e modelGithub;","lastModifiedDate":"2024-03-13"},{"lineNumber":108,"author":{"gitId":"g-tejas"},"content":" if (github \u003d\u003d null || github.isEmpty()) {","lastModifiedDate":"2024-03-14"},{"lineNumber":109,"author":{"gitId":"kailashgautham"},"content":" modelGithub \u003d Optional.of(Github.EMPTY);","lastModifiedDate":"2024-03-13"},{"lineNumber":110,"author":{"gitId":"kailashgautham"},"content":" } else if (!Github.isValidGithub(github)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":111,"author":{"gitId":"kailashgautham"},"content":" throw new IllegalValueException(Github.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-11"},{"lineNumber":112,"author":{"gitId":"kailashgautham"},"content":" } else {","lastModifiedDate":"2024-03-11"},{"lineNumber":113,"author":{"gitId":"kailashgautham"},"content":" modelGithub \u003d Optional.of(new Github(github));","lastModifiedDate":"2024-03-13"},{"lineNumber":114,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":116,"author":{"gitId":"kailashgautham"},"content":" return new Person(modelName, modelClassGroup, modelEmail, modelPhone, modelTelegram, modelGithub);","lastModifiedDate":"2024-03-11"},{"lineNumber":117,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":118,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"kailashgautham":36,"g-tejas":2,"-":80}},{"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":"hiivan"},"content":" public static final String USERGUIDE_URL \u003d \"https://ay2324s2-cs2103t-f14-3.github.io/tp/UserGuide.html\";","lastModifiedDate":"2024-03-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":{"hiivan":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":"-"},"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":"hiivan"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * The Main Window. Provides the basic application layout containing","lastModifiedDate":"2016-08-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * a menu bar and space where other JavaFX elements can be placed.","lastModifiedDate":"2016-08-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class MainWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-11-29"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"MainWindow.fxml\";","lastModifiedDate":"2016-08-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(getClass());","lastModifiedDate":"2018-08-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Stage primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":" // Independent Ui parts residing in this Ui container","lastModifiedDate":"2016-08-18"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private PersonListPanel personListPanel;","lastModifiedDate":"2016-08-18"},{"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":"hiivan"},"content":" private SidePanel sidePanel;","lastModifiedDate":"2024-03-21"},{"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":"hiivan"},"content":" @FXML","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"hiivan"},"content":" private StackPane sidePanelPlaceholder;","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":66,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21"},{"lineNumber":69,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21"},{"lineNumber":81,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","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":" /**","lastModifiedDate":"2016-12-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","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":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":107,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18"},{"lineNumber":108,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18"},{"lineNumber":109,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":111,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16"},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":117,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21"},{"lineNumber":118,"author":{"gitId":"-"},"content":" personListPanel \u003d new PersonListPanel(logic.getFilteredPersonList());","lastModifiedDate":"2019-01-25"},{"lineNumber":119,"author":{"gitId":"-"},"content":" personListPanelPlaceholder.getChildren().add(personListPanel.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09"},{"lineNumber":122,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getAddressBookFilePath());","lastModifiedDate":"2019-01-25"},{"lineNumber":125,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25"},{"lineNumber":128,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":129,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":130,"author":{"gitId":"hiivan"},"content":" sidePanel \u003d new SidePanel();","lastModifiedDate":"2024-03-21"},{"lineNumber":131,"author":{"gitId":"hiivan"},"content":" sidePanelPlaceholder.getChildren().add(sidePanel.getRoot());","lastModifiedDate":"2024-03-21"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":134,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":135,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27"},{"lineNumber":136,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":137,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":138,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27"},{"lineNumber":139,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27"},{"lineNumber":140,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27"},{"lineNumber":141,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27"},{"lineNumber":142,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":146,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":147,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15"},{"lineNumber":148,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":149,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":150,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31"},{"lineNumber":151,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15"},{"lineNumber":152,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":153,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15"},{"lineNumber":154,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":158,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15"},{"lineNumber":159,"author":{"gitId":"-"},"content":" primaryStage.show();","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":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":163,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18"},{"lineNumber":164,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":165,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":166,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18"},{"lineNumber":167,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":174,"author":{"gitId":"-"},"content":" public PersonListPanel getPersonListPanel() {","lastModifiedDate":"2016-08-25"},{"lineNumber":175,"author":{"gitId":"-"},"content":" return personListPanel;","lastModifiedDate":"2018-08-14"},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":178,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":179,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":180,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":181,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09"},{"lineNumber":182,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":183,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09"},{"lineNumber":184,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":185,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09"},{"lineNumber":186,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":187,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":189,"author":{"gitId":"hiivan"},"content":" // If it\u0027s a successful view command, display the person in the SidePanel","lastModifiedDate":"2024-03-21"},{"lineNumber":190,"author":{"gitId":"hiivan"},"content":" if (commandResult.getFeedbackToUser().startsWith(\"View Person:\")) {","lastModifiedDate":"2024-03-21"},{"lineNumber":191,"author":{"gitId":"hiivan"},"content":" Person viewedPerson \u003d logic.getLastViewedPerson();","lastModifiedDate":"2024-03-21"},{"lineNumber":192,"author":{"gitId":"hiivan"},"content":" if (viewedPerson !\u003d null) {","lastModifiedDate":"2024-03-21"},{"lineNumber":193,"author":{"gitId":"hiivan"},"content":" sidePanel.displayPerson(viewedPerson);","lastModifiedDate":"2024-03-21"},{"lineNumber":194,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":195,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":196,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-03-21"},{"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":{"hiivan":16,"-":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 javafx.fxml.FXML;","lastModifiedDate":"2016-09-21"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":8,"author":{"gitId":"kailashgautham"},"content":"import seedu.address.model.person.Github;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":10,"author":{"gitId":"kailashgautham"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-03-13"},{"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":"kailashgautham"},"content":" private Label telegram;","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"kailashgautham"},"content":" @FXML","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"kailashgautham"},"content":" private Label github;","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"kailashgautham"},"content":" @FXML","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"kailashgautham"},"content":" private Label classGroup;","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"kailashgautham"},"content":" @FXML","lastModifiedDate":"2024-03-11"},{"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":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private Label address;","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20"},{"lineNumber":58,"author":{"gitId":"kailashgautham"},"content":" classGroup.setText(person.getClassGroup().classGroup);","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"kailashgautham"},"content":" email.setText(\"E-mail: \" + person.getEmail().value);","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"kailashgautham"},"content":" phone.setText(\"Phone Number: \" + person.getPhone().value);","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"kailashgautham"},"content":" telegram.setText(","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"kailashgautham"},"content":" \"Telegram ID: \" + person.getTelegram().orElse(Telegram.EMPTY).telegramId);","lastModifiedDate":"2024-03-13"},{"lineNumber":63,"author":{"gitId":"kailashgautham"},"content":" github.setText(","lastModifiedDate":"2024-03-13"},{"lineNumber":64,"author":{"gitId":"kailashgautham"},"content":" \"GitHub ID: \" + person.getGithub().orElse(Github.EMPTY).githubId);","lastModifiedDate":"2024-03-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"kailashgautham":15,"-":51}},{"path":"src/main/java/seedu/address/ui/SidePanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"hiivan"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"hiivan"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"hiivan"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"hiivan"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"hiivan"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"hiivan"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"hiivan"},"content":"import seedu.address.model.person.Github;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"hiivan"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"hiivan"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"hiivan"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"hiivan"},"content":" * Panel displaying the details of a selected person.","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"hiivan"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"hiivan"},"content":"public class SidePanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"hiivan"},"content":" private static final String FXML \u003d \"SidePanel.fxml\";","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"hiivan"},"content":" private final Logger logger \u003d LogsCenter.getLogger(SidePanel.class);","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"hiivan"},"content":" @FXML","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"hiivan"},"content":" private Label defaultMessageLabel;","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"hiivan"},"content":" @FXML","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"hiivan"},"content":" private Label nameLabel;","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"hiivan"},"content":" @FXML","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"hiivan"},"content":" private Label classGroupLabel;","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"hiivan"},"content":" @FXML","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"hiivan"},"content":" private Label emailLabel;","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"hiivan"},"content":" @FXML","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"hiivan"},"content":" private Label phoneLabel;","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"hiivan"},"content":" @FXML","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"hiivan"},"content":" private Label telegramLabel;","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"hiivan"},"content":" @FXML","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"hiivan"},"content":" private Label githubLabel;","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"hiivan"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"hiivan"},"content":" * Creates a {@code SidePanel}.","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"hiivan"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"hiivan"},"content":" public SidePanel() {","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"hiivan"},"content":" super(FXML);","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"hiivan"},"content":" showDefaultMessage();","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"hiivan"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"hiivan"},"content":" * Shows the default message and hides person details.","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"hiivan"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"hiivan"},"content":" private void showDefaultMessage() {","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"hiivan"},"content":" defaultMessageLabel.setVisible(true);","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"hiivan"},"content":" nameLabel.setVisible(false);","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"hiivan"},"content":" classGroupLabel.setVisible(false);","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"hiivan"},"content":" emailLabel.setVisible(false);","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"hiivan"},"content":" phoneLabel.setVisible(false);","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"hiivan"},"content":" telegramLabel.setVisible(false);","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"hiivan"},"content":" githubLabel.setVisible(false);","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"hiivan"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"hiivan"},"content":" * Displays the details of a {@code Person}.","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"hiivan"},"content":" *","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"hiivan"},"content":" * @param person The person whose details are to be displayed.","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"hiivan"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"hiivan"},"content":" public void displayPerson(Person person) {","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"hiivan"},"content":" if (person !\u003d null) {","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"hiivan"},"content":" nameLabel.setVisible(true);","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"hiivan"},"content":" nameLabel.setText(\"Name: \" + person.getName().fullName);","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"hiivan"},"content":" classGroupLabel.setVisible(true);","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"hiivan"},"content":" classGroupLabel.setText(\"Class Group: \" + person.getClassGroup().toString());","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"hiivan"},"content":" emailLabel.setVisible(true);","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"hiivan"},"content":" emailLabel.setText(\"Email: \" + person.getEmail().toString());","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"hiivan"},"content":" phoneLabel.setVisible(true);","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"hiivan"},"content":" phoneLabel.setText(\"Phone: \" + person.getPhone().toString());","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"hiivan"},"content":" telegramLabel.setVisible(true);","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"hiivan"},"content":" telegramLabel.setText(\"Telegram: \"","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"hiivan"},"content":" + person.getTelegram().map(Telegram::toString).orElse(\"N/A\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"hiivan"},"content":" githubLabel.setVisible(true);","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"hiivan"},"content":" githubLabel.setText(\"GitHub: \"","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"hiivan"},"content":" + person.getGithub().map(Github::toString).orElse(\"N/A\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"hiivan"},"content":" defaultMessageLabel.setVisible(false);","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"hiivan"},"content":" } else {","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"hiivan"},"content":" resetDetails();","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"hiivan"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"hiivan"},"content":" * Clears all the details from the side panel.","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"hiivan"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"hiivan"},"content":" private void resetDetails() {","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"hiivan"},"content":" nameLabel.setText(\"\");","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"hiivan"},"content":" classGroupLabel.setText(\"\");","lastModifiedDate":"2024-03-21"},{"lineNumber":90,"author":{"gitId":"hiivan"},"content":" emailLabel.setText(\"\");","lastModifiedDate":"2024-03-21"},{"lineNumber":91,"author":{"gitId":"hiivan"},"content":" phoneLabel.setText(\"\");","lastModifiedDate":"2024-03-21"},{"lineNumber":92,"author":{"gitId":"hiivan"},"content":" telegramLabel.setText(\"\");","lastModifiedDate":"2024-03-21"},{"lineNumber":93,"author":{"gitId":"hiivan"},"content":" githubLabel.setText(\"\");","lastModifiedDate":"2024-03-21"},{"lineNumber":94,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":95,"author":{"gitId":"hiivan"},"content":" nameLabel.setVisible(false);","lastModifiedDate":"2024-03-21"},{"lineNumber":96,"author":{"gitId":"hiivan"},"content":" classGroupLabel.setVisible(false);","lastModifiedDate":"2024-03-21"},{"lineNumber":97,"author":{"gitId":"hiivan"},"content":" emailLabel.setVisible(false);","lastModifiedDate":"2024-03-21"},{"lineNumber":98,"author":{"gitId":"hiivan"},"content":" phoneLabel.setVisible(false);","lastModifiedDate":"2024-03-21"},{"lineNumber":99,"author":{"gitId":"hiivan"},"content":" telegramLabel.setVisible(false);","lastModifiedDate":"2024-03-21"},{"lineNumber":100,"author":{"gitId":"hiivan"},"content":" githubLabel.setVisible(false);","lastModifiedDate":"2024-03-21"},{"lineNumber":101,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":102,"author":{"gitId":"hiivan"},"content":" showDefaultMessage();","lastModifiedDate":"2024-03-21"},{"lineNumber":103,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":104,"author":{"gitId":"hiivan"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"hiivan":104}},{"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":"hiivan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":354,"author":{"gitId":"hiivan"},"content":".side-panel .label {","lastModifiedDate":"2024-03-21"},{"lineNumber":355,"author":{"gitId":"hiivan"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-21"},{"lineNumber":356,"author":{"gitId":"hiivan"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"hiivan":4,"-":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":"hiivan"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.SplitPane?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"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":"hiivan"},"content":" title\u003d\"TA Toolkit\" minWidth\u003d\"450\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2024-03-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":" \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":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"resultDisplayPlaceholder\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2017-05-15"},{"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":"hiivan"},"content":" \u003cSplitPane dividerPositions\u003d\"0.75\" focusTraversable\u003d\"true\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"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":49,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"personListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2017-06-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":54,"author":{"gitId":"hiivan"},"content":" \u003cStackPane fx:id\u003d\"sidePanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"hiivan"},"content":" \u003c/SplitPane\u003e","lastModifiedDate":"2024-03-21"},{"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":{"hiivan":5,"-":55}},{"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":"kailashgautham"},"content":" \u003cLabel fx:id\u003d\"classGroup\" styleClass\u003d\"cell_big_label\" text\u003d\"\\$classGroup\" /\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"kailashgautham"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"kailashgautham"},"content":" \u003cLabel fx:id\u003d\"telegram\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$telegram\" /\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"kailashgautham"},"content":" \u003cLabel fx:id\u003d\"github\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$github\" /\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"kailashgautham":4,"-":33}},{"path":"src/main/resources/view/SidePanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"hiivan"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"hiivan"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"hiivan"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"hiivan"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"hiivan"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"hiivan"},"content":" styleClass\u003d\"side-panel\" alignment\u003d\"TOP_LEFT\" spacing\u003d\"10\"\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"hiivan"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"hiivan"},"content":" \u003cURL value\u003d\"@DarkTheme.css\" /\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"hiivan"},"content":" \u003cURL value\u003d\"@Extensions.css\" /\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"hiivan"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"hiivan"},"content":" \u003c!-- Default message label --\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"hiivan"},"content":" \u003cLabel fx:id\u003d\"defaultMessageLabel\" text\u003d\"Select a person to view details\" wrapText\u003d\"true\" visible\u003d\"true\" styleClass\u003d\"cell_big_label\"/\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"hiivan"},"content":" \u003c!-- Detail labels --\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"hiivan"},"content":" \u003cLabel fx:id\u003d\"nameLabel\" visible\u003d\"false\" styleClass\u003d\"cell_big_label\"/\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"hiivan"},"content":" \u003cLabel fx:id\u003d\"classGroupLabel\" visible\u003d\"false\" styleClass\u003d\"cell_small_label\"/\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"hiivan"},"content":" \u003cLabel fx:id\u003d\"emailLabel\" visible\u003d\"false\" styleClass\u003d\"cell_small_label\"/\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"hiivan"},"content":" \u003cLabel fx:id\u003d\"phoneLabel\" visible\u003d\"false\" styleClass\u003d\"cell_small_label\"/\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"hiivan"},"content":" \u003cLabel fx:id\u003d\"telegramLabel\" visible\u003d\"false\" styleClass\u003d\"cell_small_label\"/\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"hiivan"},"content":" \u003cLabel fx:id\u003d\"githubLabel\" visible\u003d\"false\" styleClass\u003d\"cell_small_label\"/\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"hiivan"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"hiivan":23}},{"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":"kailashgautham"},"content":"import static seedu.address.logic.commands.CommandTestUtil.CLASS_GROUP_DESC_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":8,"author":{"gitId":"kailashgautham"},"content":"import static seedu.address.logic.commands.CommandTestUtil.GITHUB_DESC_AMY;","lastModifiedDate":"2024-03-11"},{"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":"kailashgautham"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_AMY;","lastModifiedDate":"2024-03-11"},{"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":"-"},"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":"g-tejas"},"content":" String deleteCommand \u003d \"dc 9\";","lastModifiedDate":"2024-03-14"},{"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":"g-tejas"},"content":" String expectedMessage \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"g-tejas"},"content":" String.format(ListCommand.MESSAGE_LIST_ALL_SUCCESS, model.getFilteredPersonList().size());","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"g-tejas"},"content":" assertCommandSuccess(listCommand, expectedMessage, model);","lastModifiedDate":"2024-03-16"},{"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":"2017-09-01"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":101,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":108,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":109,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":110,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":111,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":112,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":116,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":125,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":126,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":128,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14"},{"lineNumber":130,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31"},{"lineNumber":131,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":134,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":135,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":137,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":138,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":139,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":140,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":141,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":142,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31"},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14"},{"lineNumber":144,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19"},{"lineNumber":147,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":148,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13"},{"lineNumber":149,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13"},{"lineNumber":150,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13"},{"lineNumber":151,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":153,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13"},{"lineNumber":154,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":156,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13"},{"lineNumber":157,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13"},{"lineNumber":158,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":159,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13"},{"lineNumber":160,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13"},{"lineNumber":161,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":163,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":165,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":166,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":169,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":171,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13"},{"lineNumber":172,"author":{"gitId":"kailashgautham"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + CLASS_GROUP_DESC_AMY","lastModifiedDate":"2024-03-11"},{"lineNumber":173,"author":{"gitId":"kailashgautham"},"content":" + EMAIL_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2024-03-11"},{"lineNumber":174,"author":{"gitId":"kailashgautham"},"content":" + TELEGRAM_DESC_AMY + GITHUB_DESC_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":175,"author":{"gitId":"kailashgautham"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":176,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13"},{"lineNumber":177,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13"},{"lineNumber":178,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13"},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":180,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"kailashgautham":7,"g-tejas":4,"-":169}},{"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":"-"},"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":"teojunda"},"content":" AddCommand.MESSAGE_DUPLICATE_FIELD);","lastModifiedDate":"2024-03-14"},{"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":{"teojunda":1,"-":47}},{"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":"teojunda"},"content":" assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_FIELD, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2024-03-14"},{"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":"-"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2017-06-22"},{"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":"2024-03-13"},{"lineNumber":127,"author":{"gitId":"teojunda"},"content":" public void addPersonKeepFilter(Person person) {","lastModifiedDate":"2024-03-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":132,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27"},{"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":"2017-05-12"},{"lineNumber":137,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12"},{"lineNumber":138,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06"},{"lineNumber":143,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":146,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":147,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-08"},{"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":"2018-08-06"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"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":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07"},{"lineNumber":164,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":165,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07"},{"lineNumber":166,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":168,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":169,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":170,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":173,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":174,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":175,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":176,"author":{"gitId":"teojunda"},"content":" return this.person.checkDuplicateField(person);","lastModifiedDate":"2024-03-14"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":180,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":181,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12"},{"lineNumber":182,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":183,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12"},{"lineNumber":184,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":186,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07"},{"lineNumber":187,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":188,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":189,"author":{"gitId":"teojunda"},"content":" return personsAdded.stream().anyMatch(person::checkDuplicateField);","lastModifiedDate":"2024-03-14"},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":192,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":193,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08"},{"lineNumber":194,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":195,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":198,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":199,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04"},{"lineNumber":200,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04"},{"lineNumber":201,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":202,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":204,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12"}],"authorContributionMap":{"teojunda":4,"-":200}},{"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":"kailashgautham"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CLASS_GROUP;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"kailashgautham"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GITHUB;","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"kailashgautham"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"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":"-"},"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":"2017-06-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":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":36,"author":{"gitId":"g-tejas"},"content":" public static final String VALID_CLASS_GROUP_AMY \u003d \"A-1\";","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"g-tejas"},"content":" public static final String VALID_CLASS_GROUP_BOB \u003d \"B-2\";","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"kailashgautham"},"content":" public static final String VALID_TELEGRAM_AMY \u003d \"@amybee\";","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"kailashgautham"},"content":" public static final String VALID_TELEGRAM_BOB \u003d \"@bobchoo\";","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"kailashgautham"},"content":" public static final String VALID_GITHUB_AMY \u003d \"amybee\";","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"kailashgautham"},"content":" public static final String VALID_GITHUB_BOB \u003d \"bobchoo\";","lastModifiedDate":"2024-03-11"},{"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":"kailashgautham"},"content":" public static final String CLASS_GROUP_DESC_AMY \u003d \" \" + PREFIX_CLASS_GROUP + VALID_CLASS_GROUP_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"kailashgautham"},"content":" public static final String CLASS_GROUP_DESC_BOB \u003d \" \" + PREFIX_CLASS_GROUP + VALID_CLASS_GROUP_BOB;","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"kailashgautham"},"content":" public static final String TELEGRAM_DESC_AMY \u003d \" \" + PREFIX_TELEGRAM + VALID_TELEGRAM_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"kailashgautham"},"content":" public static final String TELEGRAM_DESC_BOB \u003d \" \" + PREFIX_TELEGRAM + VALID_TELEGRAM_BOB;","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"kailashgautham"},"content":" public static final String GITHUB_DESC_AMY \u003d \" \" + PREFIX_GITHUB + VALID_GITHUB_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"kailashgautham"},"content":" public static final String GITHUB_DESC_BOB \u003d \" \" + PREFIX_GITHUB + VALID_GITHUB_BOB;","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":56,"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":57,"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":58,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05"},{"lineNumber":59,"author":{"gitId":"kailashgautham"},"content":" public static final String INVALID_CLASS_GROUP_DESC \u003d \" \" + PREFIX_CLASS_GROUP; // empty","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"kailashgautham"},"content":" public static final String INVALID_TELEGRAM_DESC \u003d \" \" + PREFIX_TELEGRAM + \"hi\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":70,"author":{"gitId":"kailashgautham"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY)","lastModifiedDate":"2024-03-11"},{"lineNumber":71,"author":{"gitId":"kailashgautham"},"content":" .withClassGroup(VALID_CLASS_GROUP_AMY).withTelegram(VALID_TELEGRAM_AMY).withGithub(VALID_GITHUB_AMY)","lastModifiedDate":"2024-03-11"},{"lineNumber":72,"author":{"gitId":"kailashgautham"},"content":" .build();","lastModifiedDate":"2024-03-11"},{"lineNumber":73,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":74,"author":{"gitId":"kailashgautham"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2024-03-11"},{"lineNumber":75,"author":{"gitId":"kailashgautham"},"content":" .withClassGroup(VALID_CLASS_GROUP_BOB).withTelegram(VALID_TELEGRAM_BOB).withGithub(VALID_GITHUB_BOB)","lastModifiedDate":"2024-03-11"},{"lineNumber":76,"author":{"gitId":"kailashgautham"},"content":" .build();","lastModifiedDate":"2024-03-11"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25"},{"lineNumber":85,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":86,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":95,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25"},{"lineNumber":100,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":101,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":105,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":109,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25"},{"lineNumber":110,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":111,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25"},{"lineNumber":112,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":121,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":122,"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":123,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31"},{"lineNumber":124,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":125,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31"},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":128,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20"},{"lineNumber":130,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":135,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"kailashgautham":21,"g-tejas":2,"-":112}},{"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.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-08"},{"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-04"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-22"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-04"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04"},{"lineNumber":33,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":39,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-26"},{"lineNumber":40,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedPerson).build();","lastModifiedDate":"2017-06-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":43,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":46,"author":{"gitId":"teojunda"},"content":" expectedModel.deletePerson(model.getFilteredPersonList().get(0));","lastModifiedDate":"2024-03-15"},{"lineNumber":47,"author":{"gitId":"teojunda"},"content":" expectedModel.addPerson(editedPerson);","lastModifiedDate":"2024-03-15"},{"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":"kailashgautham"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":60,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-05-18"},{"lineNumber":61,"author":{"gitId":"kailashgautham"},"content":" .withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPerson, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":64,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":67,"author":{"gitId":"teojunda"},"content":" expectedModel.deletePerson(lastPerson);","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"teojunda"},"content":" expectedModel.addPerson(editedPerson);","lastModifiedDate":"2024-03-14"},{"lineNumber":69,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-14"},{"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":"teojunda"},"content":" public void execute_noFieldSpecifiedUnfilteredList_failure() {","lastModifiedDate":"2024-03-13"},{"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":"teojunda"},"content":" String expectedMessage \u003d EditCommand.MESSAGE_NO_CHANGE;","lastModifiedDate":"2024-03-13"},{"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":"teojunda"},"content":" assertCommandFailure(editCommand, model, expectedMessage);","lastModifiedDate":"2024-03-13"},{"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":"teojunda"},"content":" expectedModel.deletePerson(model.getFilteredPersonList().get(0));","lastModifiedDate":"2024-03-14"},{"lineNumber":99,"author":{"gitId":"teojunda"},"content":" expectedModel.addPerson((editedPerson));","lastModifiedDate":"2024-03-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":107,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05"},{"lineNumber":108,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":110,"author":{"gitId":"teojunda"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_FIELD);","lastModifiedDate":"2024-03-14"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":115,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":117,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2017-05-18"},{"lineNumber":118,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":119,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":122,"author":{"gitId":"teojunda"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_FIELD);","lastModifiedDate":"2024-03-14"},{"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_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":127,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18"},{"lineNumber":128,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22"},{"lineNumber":129,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":131,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":134,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18"},{"lineNumber":135,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18"},{"lineNumber":136,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18"},{"lineNumber":137,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":140,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":141,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18"},{"lineNumber":142,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18"},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-05-18"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":145,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08"},{"lineNumber":146,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":151,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":153,"author":{"gitId":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2018-08-08"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":155,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":156,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"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":{"kailashgautham":2,"teojunda":12,"-":172}},{"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":"kailashgautham"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-11"},{"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":"-"},"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":"","lastModifiedDate":"2017-05-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorTest {","lastModifiedDate":"2017-05-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptorWithSameValues \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-05"},{"lineNumber":22,"author":{"gitId":"kailashgautham"},"content":" assertEquals(DESC_AMY, descriptorWithSameValues);","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":25,"author":{"gitId":"kailashgautham"},"content":" assertEquals(DESC_AMY, DESC_AMY);","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":28,"author":{"gitId":"kailashgautham"},"content":" assertNotEquals(null, DESC_AMY);","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":31,"author":{"gitId":"kailashgautham"},"content":" assertNotEquals(5, DESC_AMY);","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":34,"author":{"gitId":"kailashgautham"},"content":" assertNotEquals(DESC_AMY, DESC_BOB);","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" EditPersonDescriptor editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":38,"author":{"gitId":"kailashgautham"},"content":" assertNotEquals(DESC_AMY, editedAmy);","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":42,"author":{"gitId":"kailashgautham"},"content":" assertNotEquals(DESC_AMY, editedAmy);","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":46,"author":{"gitId":"kailashgautham"},"content":" assertNotEquals(DESC_AMY, editedAmy);","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"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 toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"kailashgautham"},"content":" + editPersonDescriptor.getName().orElse(null) + \", classGroup\u003d\"","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"kailashgautham"},"content":" + editPersonDescriptor.getClassGroup().orElse(null) + \", email\u003d\"","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"kailashgautham"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"kailashgautham"},"content":" + editPersonDescriptor.getPhone().orElse(null) + \", telegram\u003d\"","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"kailashgautham"},"content":" + editPersonDescriptor.getTelegram().orElse(null) + \", github\u003d\"","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"kailashgautham"},"content":" + editPersonDescriptor.getGithub().orElse(null) + \"}\";","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"kailashgautham":15,"-":46}},{"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":"g-tejas"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"g-tejas"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":7,"author":{"gitId":"g-tejas"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalPersons;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"g-tejas"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"g-tejas"},"content":"import java.util.List;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"g-tejas"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"g-tejas"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"g-tejas"},"content":"import seedu.address.model.person.ClassGroup;","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"g-tejas"},"content":"import seedu.address.model.person.ListCommandPredicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"g-tejas"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-16"},{"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) and unit tests for ListCommand.","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class ListCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Model expectedModel;","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":32,"author":{"gitId":"g-tejas"},"content":" private final ClassGroup classGroupA1 \u003d new ClassGroup(\"A-1\");","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"g-tejas"},"content":" private final ClassGroup classGroupB1 \u003d new ClassGroup(\"B-1\");","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"g-tejas"},"content":" private final ClassGroup nonExistentClassGroup \u003d new ClassGroup(\"NonExistentClassGroup\");","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"g-tejas"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"g-tejas"},"content":" public void equals() {","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"g-tejas"},"content":" ListCommandPredicate firstPredicate \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"g-tejas"},"content":" new ListCommandPredicate(Optional.of(Collections.singletonList(classGroupA1)));","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"g-tejas"},"content":" ListCommandPredicate secondPredicate \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"g-tejas"},"content":" new ListCommandPredicate(Optional.of(Collections.singletonList(classGroupB1)));","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"g-tejas"},"content":" ListCommand listFirstCommand \u003d new ListCommand(firstPredicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"g-tejas"},"content":" ListCommand listSecondCommand \u003d new ListCommand(secondPredicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"g-tejas"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"g-tejas"},"content":" assertEquals(listFirstCommand, listFirstCommand);","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"g-tejas"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"g-tejas"},"content":" ListCommand listFirstCommandCopy \u003d new ListCommand(firstPredicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"g-tejas"},"content":" assertEquals(listFirstCommand, listFirstCommandCopy);","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"g-tejas"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"g-tejas"},"content":" assertNotEquals(1, listFirstCommand);","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"g-tejas"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"g-tejas"},"content":" assertNotEquals(null, listFirstCommand);","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"g-tejas"},"content":" // different class group -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"g-tejas"},"content":" assertNotEquals(listFirstCommand, listSecondCommand);","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"g-tejas"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-12"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void execute_listIsNotFiltered_showsSameList() {","lastModifiedDate":"2017-08-15"},{"lineNumber":73,"author":{"gitId":"g-tejas"},"content":" int expectedSize \u003d model.getFilteredPersonList().size();","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"g-tejas"},"content":" String expectedMessage \u003d String.format(ListCommand.MESSAGE_LIST_ALL_SUCCESS, expectedSize);","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"g-tejas"},"content":" assertCommandSuccess(new ListCommand(new ListCommandPredicate(Optional.empty())),","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"g-tejas"},"content":" model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"g-tejas"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"g-tejas"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"g-tejas"},"content":" public void execute_singleClassGroup_showsSingleClassGroup() {","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"g-tejas"},"content":" List\u003cPerson\u003e expectedPersons \u003d getTypicalPersons().stream()","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"g-tejas"},"content":" .filter(person -\u003e person.getClassGroup().equals(classGroupA1))","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"g-tejas"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"g-tejas"},"content":" String expectedMessage \u003d String.format(ListCommand.MESSAGE_LIST_CLASS_SUCCESS,","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"g-tejas"},"content":" expectedPersons.size(), classGroupA1);","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"g-tejas"},"content":" ListCommandPredicate predicate \u003d new ListCommandPredicate(Optional.of(List.of(classGroupA1)));","lastModifiedDate":"2024-03-16"},{"lineNumber":87,"author":{"gitId":"g-tejas"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":88,"author":{"gitId":"g-tejas"},"content":" assertCommandSuccess(new ListCommand(predicate), model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-16"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":92,"author":{"gitId":"g-tejas"},"content":" public void execute_multipleClassGroup_showsMultipleClassGroups() {","lastModifiedDate":"2024-03-16"},{"lineNumber":93,"author":{"gitId":"g-tejas"},"content":" List\u003cClassGroup\u003e classGroups \u003d List.of(classGroupA1, classGroupB1);","lastModifiedDate":"2024-03-16"},{"lineNumber":94,"author":{"gitId":"g-tejas"},"content":" ListCommandPredicate predicate \u003d new ListCommandPredicate(Optional.of(classGroups));","lastModifiedDate":"2024-03-16"},{"lineNumber":95,"author":{"gitId":"g-tejas"},"content":" List\u003cPerson\u003e expectedPersons \u003d getTypicalPersons().stream()","lastModifiedDate":"2024-03-16"},{"lineNumber":96,"author":{"gitId":"g-tejas"},"content":" .filter(person -\u003e classGroups.contains(person.getClassGroup()))","lastModifiedDate":"2024-03-16"},{"lineNumber":97,"author":{"gitId":"g-tejas"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2024-03-16"},{"lineNumber":98,"author":{"gitId":"g-tejas"},"content":" String classGroupsString \u003d classGroups.stream()","lastModifiedDate":"2024-03-16"},{"lineNumber":99,"author":{"gitId":"g-tejas"},"content":" .map(Object::toString)","lastModifiedDate":"2024-03-16"},{"lineNumber":100,"author":{"gitId":"g-tejas"},"content":" .collect(Collectors.joining(\", \"));","lastModifiedDate":"2024-03-16"},{"lineNumber":101,"author":{"gitId":"g-tejas"},"content":" String expectedMessage \u003d String.format(ListCommand.MESSAGE_LIST_CLASS_SUCCESS,","lastModifiedDate":"2024-03-16"},{"lineNumber":102,"author":{"gitId":"g-tejas"},"content":" expectedPersons.size(), classGroupsString);","lastModifiedDate":"2024-03-16"},{"lineNumber":103,"author":{"gitId":"g-tejas"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":104,"author":{"gitId":"g-tejas"},"content":" assertCommandSuccess(new ListCommand(predicate), model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-16"},{"lineNumber":105,"author":{"gitId":"g-tejas"},"content":" assertEquals(expectedPersons, model.getFilteredPersonList());","lastModifiedDate":"2024-03-16"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":107,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":108,"author":{"gitId":"g-tejas"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":109,"author":{"gitId":"g-tejas"},"content":" public void execute_nonExistentClassGroup_showsEmptyList() {","lastModifiedDate":"2024-03-16"},{"lineNumber":110,"author":{"gitId":"g-tejas"},"content":" String expectedMessage \u003d String.format(ListCommand.MESSAGE_LIST_CLASS_SUCCESS, 0, nonExistentClassGroup);","lastModifiedDate":"2024-03-16"},{"lineNumber":111,"author":{"gitId":"g-tejas"},"content":" ListCommandPredicate predicate \u003d new ListCommandPredicate(Optional.of(List.of(nonExistentClassGroup)));","lastModifiedDate":"2024-03-16"},{"lineNumber":112,"author":{"gitId":"g-tejas"},"content":" ListCommand command \u003d new ListCommand(predicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":113,"author":{"gitId":"g-tejas"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":114,"author":{"gitId":"g-tejas"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-16"},{"lineNumber":115,"author":{"gitId":"g-tejas"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2024-03-16"},{"lineNumber":116,"author":{"gitId":"g-tejas"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":117,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":118,"author":{"gitId":"g-tejas"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":119,"author":{"gitId":"g-tejas"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-16"},{"lineNumber":120,"author":{"gitId":"g-tejas"},"content":" ListCommandPredicate predicate \u003d new ListCommandPredicate(Optional.of(List.of(classGroupA1)));","lastModifiedDate":"2024-03-16"},{"lineNumber":121,"author":{"gitId":"g-tejas"},"content":" ListCommand listCommand \u003d new ListCommand(predicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":122,"author":{"gitId":"g-tejas"},"content":" String expected \u003d ListCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2024-03-16"},{"lineNumber":123,"author":{"gitId":"g-tejas"},"content":" assertEquals(expected, listCommand.toString());","lastModifiedDate":"2024-03-16"},{"lineNumber":124,"author":{"gitId":"g-tejas"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":125,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":126,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"g-tejas":93,"-":33}},{"path":"src/test/java/seedu/address/logic/commands/ViewCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"YuSoonZ"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"YuSoonZ"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"YuSoonZ"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"YuSoonZ"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"YuSoonZ"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"YuSoonZ"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"YuSoonZ"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"YuSoonZ"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"YuSoonZ"},"content":"import static seedu.address.logic.commands.ViewCommand.MESSAGE_VIEW_PERSON_SUCCESS;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"YuSoonZ"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"YuSoonZ"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"YuSoonZ"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"YuSoonZ"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"YuSoonZ"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"YuSoonZ"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"YuSoonZ"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"YuSoonZ"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"YuSoonZ"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"YuSoonZ"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"YuSoonZ"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"YuSoonZ"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"YuSoonZ"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"YuSoonZ"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"YuSoonZ"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"YuSoonZ"},"content":"public class ViewCommandTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"YuSoonZ"},"content":" private Model model;","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"YuSoonZ"},"content":" @BeforeEach","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"YuSoonZ"},"content":" public void setUp() {","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"YuSoonZ"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"YuSoonZ"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"YuSoonZ"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"YuSoonZ"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"YuSoonZ"},"content":" Person personToView \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"YuSoonZ"},"content":" ViewCommand viewCommand \u003d new ViewCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"YuSoonZ"},"content":" String expectedMessage \u003d String.format(MESSAGE_VIEW_PERSON_SUCCESS,","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"YuSoonZ"},"content":" Messages.format(personToView));","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"YuSoonZ"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"YuSoonZ"},"content":" assertCommandSuccess(viewCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"YuSoonZ"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"YuSoonZ"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"YuSoonZ"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"YuSoonZ"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"YuSoonZ"},"content":" ViewCommand viewCommand \u003d new ViewCommand(outOfBoundIndex);","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"YuSoonZ"},"content":" assertCommandFailure(viewCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"YuSoonZ"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"YuSoonZ"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"YuSoonZ"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"YuSoonZ"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"YuSoonZ"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"YuSoonZ"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"YuSoonZ"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"YuSoonZ"},"content":" ViewCommand viewCommand \u003d new ViewCommand(outOfBoundIndex);","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"YuSoonZ"},"content":" assertCommandFailure(viewCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"YuSoonZ"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"YuSoonZ"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"YuSoonZ"},"content":" public void equals() {","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"YuSoonZ"},"content":" ViewCommand viewFirstCommand \u003d new ViewCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"YuSoonZ"},"content":" ViewCommand viewSecondCommand \u003d new ViewCommand(INDEX_SECOND_PERSON);","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"YuSoonZ"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"YuSoonZ"},"content":" assertEquals(viewFirstCommand, viewFirstCommand);","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"YuSoonZ"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"YuSoonZ"},"content":" ViewCommand viewFirstCommandCopy \u003d new ViewCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"YuSoonZ"},"content":" assertEquals(viewFirstCommand, viewFirstCommandCopy);","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"YuSoonZ"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"YuSoonZ"},"content":" assertNotEquals(1, viewFirstCommand);","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"YuSoonZ"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"YuSoonZ"},"content":" assertNotEquals(null, viewFirstCommand);","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"YuSoonZ"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"YuSoonZ"},"content":" assertNotEquals(viewFirstCommand, viewSecondCommand);","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"YuSoonZ"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"YuSoonZ"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"YuSoonZ"},"content":" public void execute_emptyAddressBook_throwsCommandException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"YuSoonZ"},"content":" // Empty the address book","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"YuSoonZ"},"content":" model \u003d new ModelManager();","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"YuSoonZ"},"content":" ViewCommand viewCommand \u003d new ViewCommand(Index.fromOneBased(1));","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"YuSoonZ"},"content":" assertCommandFailure(viewCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-18"},{"lineNumber":101,"author":{"gitId":"YuSoonZ"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":102,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":103,"author":{"gitId":"YuSoonZ"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":104,"author":{"gitId":"YuSoonZ"},"content":" public void equals_otherObjectNotInstanceOfViewCommand_returnsFalse() {","lastModifiedDate":"2024-03-18"},{"lineNumber":105,"author":{"gitId":"YuSoonZ"},"content":" // Create a ViewCommand object","lastModifiedDate":"2024-03-18"},{"lineNumber":106,"author":{"gitId":"YuSoonZ"},"content":" ViewCommand viewCommand \u003d new ViewCommand(Index.fromOneBased(1));","lastModifiedDate":"2024-03-18"},{"lineNumber":107,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"YuSoonZ"},"content":" // Create another object of a different class","lastModifiedDate":"2024-03-18"},{"lineNumber":109,"author":{"gitId":"YuSoonZ"},"content":" Object otherObject \u003d new Object();","lastModifiedDate":"2024-03-18"},{"lineNumber":110,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"YuSoonZ"},"content":" // Check if they are equal","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"YuSoonZ"},"content":" assertFalse(viewCommand.equals(otherObject));","lastModifiedDate":"2024-03-18"},{"lineNumber":113,"author":{"gitId":"YuSoonZ"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":115,"author":{"gitId":"YuSoonZ"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"YuSoonZ"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"YuSoonZ"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-18"},{"lineNumber":118,"author":{"gitId":"YuSoonZ"},"content":" ViewCommand viewCommand \u003d new ViewCommand(targetIndex);","lastModifiedDate":"2024-03-18"},{"lineNumber":119,"author":{"gitId":"YuSoonZ"},"content":" String expected \u003d ViewCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2024-03-18"},{"lineNumber":120,"author":{"gitId":"YuSoonZ"},"content":" assertEquals(expected, viewCommand.toString());","lastModifiedDate":"2024-03-18"},{"lineNumber":121,"author":{"gitId":"YuSoonZ"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":122,"author":{"gitId":"YuSoonZ"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"YuSoonZ":122}},{"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":"kailashgautham"},"content":"import static seedu.address.logic.commands.CommandTestUtil.CLASS_GROUP_DESC_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"kailashgautham"},"content":"import static seedu.address.logic.commands.CommandTestUtil.CLASS_GROUP_DESC_BOB;","lastModifiedDate":"2024-03-11"},{"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":"kailashgautham"},"content":"import static seedu.address.logic.commands.CommandTestUtil.GITHUB_DESC_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"kailashgautham"},"content":"import static seedu.address.logic.commands.CommandTestUtil.GITHUB_DESC_BOB;","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"kailashgautham"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_CLASS_GROUP_DESC;","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":14,"author":{"gitId":"kailashgautham"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TELEGRAM_DESC;","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2017-12-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23"},{"lineNumber":21,"author":{"gitId":"kailashgautham"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"kailashgautham"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_BOB;","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":26,"author":{"gitId":"kailashgautham"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CLASS_GROUP;","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":28,"author":{"gitId":"kailashgautham"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GITHUB;","lastModifiedDate":"2024-03-11"},{"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":"kailashgautham"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15"},{"lineNumber":41,"author":{"gitId":"kailashgautham"},"content":"import seedu.address.model.person.ClassGroup;","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-06-15"},{"lineNumber":46,"author":{"gitId":"kailashgautham"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":49,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":54,"author":{"gitId":"kailashgautham"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":57,"author":{"gitId":"kailashgautham"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + CLASS_GROUP_DESC_BOB","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"kailashgautham"},"content":" + EMAIL_DESC_BOB + PHONE_DESC_BOB + TELEGRAM_DESC_BOB + GITHUB_DESC_BOB,","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"kailashgautham"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15"},{"lineNumber":63,"author":{"gitId":"kailashgautham"},"content":" Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB)","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":66,"author":{"gitId":"kailashgautham"},"content":" NAME_DESC_BOB + CLASS_GROUP_DESC_BOB + EMAIL_DESC_BOB + PHONE_DESC_BOB","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"kailashgautham"},"content":" + TELEGRAM_DESC_BOB + GITHUB_DESC_BOB,","lastModifiedDate":"2024-03-11"},{"lineNumber":68,"author":{"gitId":"-"},"content":" new AddCommand(expectedPersonMultipleTags));","lastModifiedDate":"2023-07-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":73,"author":{"gitId":"kailashgautham"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + CLASS_GROUP_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"kailashgautham"},"content":" + PHONE_DESC_BOB + TELEGRAM_DESC_BOB + GITHUB_DESC_BOB;","lastModifiedDate":"2024-03-11"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":78,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":80,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":82,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":86,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":90,"author":{"gitId":"kailashgautham"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY","lastModifiedDate":"2024-03-11"},{"lineNumber":91,"author":{"gitId":"-"},"content":" + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":92,"author":{"gitId":"kailashgautham"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_CLASS_GROUP,","lastModifiedDate":"2024-03-11"},{"lineNumber":93,"author":{"gitId":"kailashgautham"},"content":" PREFIX_EMAIL, PREFIX_PHONE, PREFIX_GITHUB, PREFIX_TELEGRAM));","lastModifiedDate":"2024-03-11"},{"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":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":111,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":124,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":125,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":126,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15"},{"lineNumber":127,"author":{"gitId":"kailashgautham"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":128,"author":{"gitId":"kailashgautham"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + CLASS_GROUP_DESC_AMY + EMAIL_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2024-03-11"},{"lineNumber":129,"author":{"gitId":"kailashgautham"},"content":" + TELEGRAM_DESC_AMY + GITHUB_DESC_AMY, new AddCommand(expectedPerson));","lastModifiedDate":"2024-03-11"},{"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_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":134,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":136,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":137,"author":{"gitId":"kailashgautham"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB,","lastModifiedDate":"2024-03-11"},{"lineNumber":138,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":140,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":141,"author":{"gitId":"kailashgautham"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB,","lastModifiedDate":"2024-03-11"},{"lineNumber":142,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":144,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":145,"author":{"gitId":"kailashgautham"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB,","lastModifiedDate":"2024-03-11"},{"lineNumber":146,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":148,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15"},{"lineNumber":149,"author":{"gitId":"kailashgautham"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB,","lastModifiedDate":"2024-03-11"},{"lineNumber":150,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":153,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":154,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":155,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":156,"author":{"gitId":"kailashgautham"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + CLASS_GROUP_DESC_BOB","lastModifiedDate":"2024-03-11"},{"lineNumber":157,"author":{"gitId":"kailashgautham"},"content":" + EMAIL_DESC_BOB + PHONE_DESC_BOB, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-11"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":159,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15"},{"lineNumber":160,"author":{"gitId":"kailashgautham"},"content":" assertParseFailure(parser, NAME_DESC_BOB + CLASS_GROUP_DESC_BOB","lastModifiedDate":"2024-03-11"},{"lineNumber":161,"author":{"gitId":"kailashgautham"},"content":" + EMAIL_DESC_BOB + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-11"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":163,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15"},{"lineNumber":164,"author":{"gitId":"kailashgautham"},"content":" assertParseFailure(parser, NAME_DESC_BOB + CLASS_GROUP_DESC_BOB","lastModifiedDate":"2024-03-11"},{"lineNumber":165,"author":{"gitId":"kailashgautham"},"content":" + INVALID_EMAIL_DESC + PHONE_DESC_BOB, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-11"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":167,"author":{"gitId":"kailashgautham"},"content":" // invalid class group","lastModifiedDate":"2024-03-11"},{"lineNumber":168,"author":{"gitId":"kailashgautham"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_CLASS_GROUP_DESC","lastModifiedDate":"2024-03-11"},{"lineNumber":169,"author":{"gitId":"kailashgautham"},"content":" + INVALID_EMAIL_DESC + PHONE_DESC_BOB, ClassGroup.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-11"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":171,"author":{"gitId":"kailashgautham"},"content":" // invalid telegram","lastModifiedDate":"2024-03-11"},{"lineNumber":172,"author":{"gitId":"kailashgautham"},"content":" assertParseFailure(parser, NAME_DESC_BOB + CLASS_GROUP_DESC_BOB","lastModifiedDate":"2024-03-11"},{"lineNumber":173,"author":{"gitId":"kailashgautham"},"content":" + EMAIL_DESC_BOB + PHONE_DESC_BOB + INVALID_TELEGRAM_DESC, Telegram.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-11"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":176,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":177,"author":{"gitId":"kailashgautham"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + INVALID_CLASS_GROUP_DESC","lastModifiedDate":"2024-03-11"},{"lineNumber":178,"author":{"gitId":"kailashgautham"},"content":" + EMAIL_DESC_BOB + PHONE_DESC_BOB, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-11"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":181,"author":{"gitId":"kailashgautham"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + CLASS_GROUP_DESC_BOB","lastModifiedDate":"2024-03-11"},{"lineNumber":182,"author":{"gitId":"kailashgautham"},"content":" + EMAIL_DESC_BOB + PHONE_DESC_BOB,","lastModifiedDate":"2024-03-11"},{"lineNumber":183,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"kailashgautham":48,"-":137}},{"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":"YuSoonZ"},"content":"import seedu.address.logic.commands.ViewCommand;","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command);","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_edit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2018-03-26"},{"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":"YuSoonZ"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"YuSoonZ"},"content":" public void parseCommand_view() throws Exception {","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"YuSoonZ"},"content":" assertTrue(parser.parseCommand(ViewCommand.COMMAND_WORD + \" 3\") instanceof ViewCommand);","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"YuSoonZ"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23"},{"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_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"YuSoonZ":6,"-":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":"kailashgautham"},"content":"import static seedu.address.logic.commands.CommandTestUtil.CLASS_GROUP_DESC_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"kailashgautham"},"content":"import static seedu.address.logic.commands.CommandTestUtil.GITHUB_DESC_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05"},{"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":"kailashgautham"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"kailashgautham"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_CLASS_GROUP_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":17,"author":{"gitId":"kailashgautham"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GITHUB_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":21,"author":{"gitId":"kailashgautham"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-04"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":41,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":46,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-07-06"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","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_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"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_invalidValue_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2018-09-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2018-09-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2018-09-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":81,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":84,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04"},{"lineNumber":85,"author":{"gitId":"kailashgautham"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_PHONE_AMY,","lastModifiedDate":"2024-03-11"},{"lineNumber":86,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":92,"author":{"gitId":"kailashgautham"},"content":" String userInput \u003d targetIndex.getOneBased() + CLASS_GROUP_DESC_AMY + EMAIL_DESC_AMY + PHONE_DESC_BOB","lastModifiedDate":"2024-03-11"},{"lineNumber":93,"author":{"gitId":"kailashgautham"},"content":" + NAME_DESC_AMY + TELEGRAM_DESC_AMY + GITHUB_DESC_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":95,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-05-04"},{"lineNumber":96,"author":{"gitId":"kailashgautham"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY)","lastModifiedDate":"2024-03-11"},{"lineNumber":97,"author":{"gitId":"kailashgautham"},"content":" .withClassGroup(VALID_CLASS_GROUP_AMY).withTelegram(VALID_TELEGRAM_AMY)","lastModifiedDate":"2024-03-11"},{"lineNumber":98,"author":{"gitId":"kailashgautham"},"content":" .withGithub(VALID_GITHUB_AMY).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":99,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":107,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":109,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-04"},{"lineNumber":110,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":111,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":118,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04"},{"lineNumber":119,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":120,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":121,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":122,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":125,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2017-05-04"},{"lineNumber":126,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":127,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":128,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","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":" // email","lastModifiedDate":"2017-05-04"},{"lineNumber":132,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":133,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":134,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":140,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14"},{"lineNumber":141,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-07-14"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":143,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14"},{"lineNumber":144,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":145,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2023-07-14"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":147,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":149,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14"},{"lineNumber":150,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2023-07-14"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":154,"author":{"gitId":"-"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":155,"author":{"gitId":"kailashgautham"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2024-03-11"},{"lineNumber":156,"author":{"gitId":"kailashgautham"},"content":" + PHONE_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2024-03-11"},{"lineNumber":157,"author":{"gitId":"kailashgautham"},"content":" + PHONE_DESC_BOB + EMAIL_DESC_BOB;","lastModifiedDate":"2024-03-11"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":159,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":160,"author":{"gitId":"kailashgautham"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL));","lastModifiedDate":"2024-03-11"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":162,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14"},{"lineNumber":163,"author":{"gitId":"kailashgautham"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2024-03-11"},{"lineNumber":164,"author":{"gitId":"kailashgautham"},"content":" + INVALID_PHONE_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2024-03-11"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":167,"author":{"gitId":"kailashgautham"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL));","lastModifiedDate":"2024-03-11"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":169,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04"}],"authorContributionMap":{"kailashgautham":19,"-":150}},{"path":"src/test/java/seedu/address/logic/parser/ViewCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"YuSoonZ"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"YuSoonZ"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"YuSoonZ"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"YuSoonZ"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"YuSoonZ"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"YuSoonZ"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"YuSoonZ"},"content":"import seedu.address.logic.commands.ViewCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"YuSoonZ"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"YuSoonZ"},"content":"public class ViewCommandParserTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"YuSoonZ"},"content":" private ViewCommandParser parser;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"YuSoonZ"},"content":" @BeforeEach","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"YuSoonZ"},"content":" public void setUp() {","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"YuSoonZ"},"content":" parser \u003d new ViewCommandParser();","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"YuSoonZ"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"YuSoonZ"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"YuSoonZ"},"content":" public void parse_validInputArguments_success() throws ParseException {","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"YuSoonZ"},"content":" // Define valid input arguments","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"YuSoonZ"},"content":" String validArgs \u003d \"1\";","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"YuSoonZ"},"content":" // Parse the arguments","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"YuSoonZ"},"content":" ViewCommand viewCommand \u003d parser.parse(validArgs);","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"YuSoonZ"},"content":" // Verify the correctness of the parsed command","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"YuSoonZ"},"content":" assertEquals(new ViewCommand(Index.fromOneBased(1)), viewCommand);","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"YuSoonZ"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"YuSoonZ"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"YuSoonZ"},"content":" public void parse_invalidInputArguments_throwsParseException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"YuSoonZ"},"content":" // Define invalid input arguments","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"YuSoonZ"},"content":" String invalidArgs \u003d \"abc\";","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"YuSoonZ"},"content":" // Parsing invalid arguments should throw a ParseException","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"YuSoonZ"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(invalidArgs));","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"YuSoonZ"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"YuSoonZ"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"YuSoonZ"},"content":" public void parse_invalidIndexZero_throwsParseException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"YuSoonZ"},"content":" // Define input arguments with invalid zero-based index","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"YuSoonZ"},"content":" String invalidArgs \u003d \"0\";","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"YuSoonZ"},"content":" // Parsing invalid index should throw a ParseException","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"YuSoonZ"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(invalidArgs));","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"YuSoonZ"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"YuSoonZ"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"YuSoonZ"},"content":" public void parse_invalidIndexNegative_throwsParseException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"YuSoonZ"},"content":" // Define input arguments with invalid negative index","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"YuSoonZ"},"content":" String invalidArgs \u003d \"-1\";","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"YuSoonZ"},"content":" // Parsing invalid index should throw a ParseException","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"YuSoonZ"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(invalidArgs));","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"YuSoonZ"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"YuSoonZ"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"YuSoonZ"},"content":" public void parse_additionalArguments_throwsParseException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"YuSoonZ"},"content":" // Define input arguments with additional arguments beyond the index","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"YuSoonZ"},"content":" String invalidArgs \u003d \"1 additional\";","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"YuSoonZ"},"content":" // Parsing additional arguments should throw a ParseException","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"YuSoonZ"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(invalidArgs));","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"YuSoonZ"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"YuSoonZ"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"YuSoonZ":70}},{"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.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2016-12-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2016-12-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2016-12-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-12-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-12-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2018-08-07"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-04-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class AddressBookTest {","lastModifiedDate":"2016-12-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2016-12-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2016-12-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), addressBook.getPersonList());","lastModifiedDate":"2016-12-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.resetData(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void resetData_withValidReadOnlyAddressBook_replacesData() {","lastModifiedDate":"2016-12-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" AddressBook newData \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" addressBook.resetData(newData);","lastModifiedDate":"2016-12-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertEquals(newData, addressBook);","lastModifiedDate":"2016-12-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void resetData_withDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-07"},{"lineNumber":46,"author":{"gitId":"-"},"content":" // Two persons with the same identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":47,"author":{"gitId":"kailashgautham"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e newPersons \u003d Arrays.asList(ALICE, editedAlice);","lastModifiedDate":"2018-04-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" AddressBookStub newData \u003d new AddressBookStub(newPersons);","lastModifiedDate":"2018-03-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e addressBook.resetData(newData));","lastModifiedDate":"2019-03-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasPerson(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertFalse(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"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_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":66,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public void hasPerson_personWithSameIdentityFieldsInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":72,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":73,"author":{"gitId":"kailashgautham"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(editedAlice));","lastModifiedDate":"2018-08-06"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void getPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e addressBook.getPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"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":" String expected \u003d AddressBook.class.getCanonicalName() + \"{persons\u003d\" + addressBook.getPersonList() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertEquals(expected, addressBook.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":"2016-12-24"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * A stub ReadOnlyAddressBook whose persons list can violate interface constraints.","lastModifiedDate":"2018-03-29"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-24"},{"lineNumber":91,"author":{"gitId":"-"},"content":" private static class AddressBookStub implements ReadOnlyAddressBook {","lastModifiedDate":"2016-12-24"},{"lineNumber":92,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e persons \u003d FXCollections.observableArrayList();","lastModifiedDate":"2018-01-10"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":94,"author":{"gitId":"-"},"content":" AddressBookStub(Collection\u003cPerson\u003e persons) {","lastModifiedDate":"2018-03-29"},{"lineNumber":95,"author":{"gitId":"-"},"content":" this.persons.setAll(persons);","lastModifiedDate":"2016-12-24"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-24"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":100,"author":{"gitId":"-"},"content":" return persons;","lastModifiedDate":"2016-12-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","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"}],"authorContributionMap":{"kailashgautham":2,"-":102}},{"path":"src/test/java/seedu/address/model/person/ClassGroupTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"g-tejas"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"g-tejas"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"g-tejas"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"g-tejas"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"g-tejas"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"g-tejas"},"content":"public class ClassGroupTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"g-tejas"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"g-tejas"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"g-tejas"},"content":" assertThrows(NullPointerException.class, () -\u003e new ClassGroup(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"g-tejas"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"g-tejas"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"g-tejas"},"content":" public void constructor_invalidClassGroup_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"g-tejas"},"content":" String invalidClassGroup \u003d \"\";","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"g-tejas"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new ClassGroup(invalidClassGroup));","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"g-tejas"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"g-tejas"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"g-tejas"},"content":" public void isValidClassGroup() {","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"g-tejas"},"content":" // null ClassGroup","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"g-tejas"},"content":" assertThrows(NullPointerException.class, () -\u003e ClassGroup.isValidClassGroup(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"g-tejas"},"content":" // blank ClassGroup","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"g-tejas"},"content":" assertFalse(ClassGroup.isValidClassGroup(\"\")); // empty string","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"g-tejas"},"content":" assertFalse(ClassGroup.isValidClassGroup(\" \")); // spaces only","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"g-tejas"},"content":" // invalid parts","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"g-tejas"},"content":" assertFalse(ClassGroup.isValidClassGroup(\"-\")); // starts with dash","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"g-tejas"},"content":" assertFalse(ClassGroup.isValidClassGroup(\"F14-\")); // ends with dash","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"g-tejas"},"content":" assertFalse(ClassGroup.isValidClassGroup(\"-F14\")); // begin with dash","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"g-tejas"},"content":" assertFalse(ClassGroup.isValidClassGroup(\"@F14\")); // non alpha-numeric characters","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"g-tejas"},"content":" assertFalse(ClassGroup.isValidClassGroup(\" F14\")); // leading space","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"g-tejas"},"content":" assertFalse(ClassGroup.isValidClassGroup(\"F14 \")); // trailing space","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"g-tejas"},"content":" assertFalse(ClassGroup.isValidClassGroup(\"F143 3\")); // space in middle","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"g-tejas"},"content":" // valid ClassGroup","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"g-tejas"},"content":" assertTrue(ClassGroup.isValidClassGroup(\"A-1\")); // One dash","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"g-tejas"},"content":" assertTrue(ClassGroup.isValidClassGroup(\"A\")); // no dash at all","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"g-tejas"},"content":" assertTrue(ClassGroup.isValidClassGroup(\"CS2103-F14-3\")); // multiple dashes","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"g-tejas"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"g-tejas"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"g-tejas"},"content":" public void equals() {","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"g-tejas"},"content":" ClassGroup classGroup \u003d new ClassGroup(\"A-1\");","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"g-tejas"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"g-tejas"},"content":" assertTrue(classGroup.equals(new ClassGroup(\"A-1\")));","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"g-tejas"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"g-tejas"},"content":" assertTrue(classGroup.equals(classGroup));","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"g-tejas"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"g-tejas"},"content":" assertFalse(classGroup.equals(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"g-tejas"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"g-tejas"},"content":" assertFalse(classGroup.equals(5.0f));","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"g-tejas"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"g-tejas"},"content":" assertFalse(classGroup.equals(new ClassGroup(\"B-2\")));","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"g-tejas"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"g-tejas"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"g-tejas":65}},{"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":"-"},"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":"-"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").withPhone(\"12345\")","lastModifiedDate":"2017-06-12"},{"lineNumber":74,"author":{"gitId":"kailashgautham"},"content":" .withEmail(\"alice@email.com\").withClassGroup(\"B01\").withTelegram(\"@alice\")","lastModifiedDate":"2024-03-11"},{"lineNumber":75,"author":{"gitId":"kailashgautham"},"content":" .withGithub(\"alice\").build()));","lastModifiedDate":"2024-03-11"},{"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":{"kailashgautham":2,"-":84}},{"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":"kailashgautham"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_CLASS_GROUP_BOB;","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":8,"author":{"gitId":"kailashgautham"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GITHUB_BOB;","lastModifiedDate":"2024-03-11"},{"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":"kailashgautham"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_BOB;","lastModifiedDate":"2024-03-11"},{"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":"2018-04-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":24,"author":{"gitId":"teojunda"},"content":" assertTrue(ALICE.checkDuplicateField(ALICE));","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":27,"author":{"gitId":"teojunda"},"content":" assertFalse(ALICE.checkDuplicateField(null));","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":29,"author":{"gitId":"kailashgautham"},"content":" // same name, all other attributes different -\u003e returns false","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2020-12-18"},{"lineNumber":31,"author":{"gitId":"kailashgautham"},"content":" .withClassGroup(VALID_CLASS_GROUP_BOB).withTelegram(VALID_TELEGRAM_BOB)","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"kailashgautham"},"content":" .withGithub(VALID_GITHUB_BOB).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"teojunda"},"content":" assertFalse(ALICE.checkDuplicateField(editedAlice));","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"kailashgautham"},"content":" String expected \u003d Person.class.getCanonicalName()","lastModifiedDate":"2024-03-11"},{"lineNumber":70,"author":{"gitId":"kailashgautham"},"content":" + \"{name\u003d\" + ALICE.getName() + \", classGroup\u003d\" + ALICE.getClassGroup()","lastModifiedDate":"2024-03-11"},{"lineNumber":71,"author":{"gitId":"kailashgautham"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", phone\u003d\" + ALICE.getPhone() + \", telegram\u003d\"","lastModifiedDate":"2024-03-11"},{"lineNumber":72,"author":{"gitId":"kailashgautham"},"content":" + (ALICE.getTelegram().isPresent() ? ALICE.getTelegram().get().telegramId : \"\") + \", github\u003d\"","lastModifiedDate":"2024-03-11"},{"lineNumber":73,"author":{"gitId":"kailashgautham"},"content":" + (ALICE.getGithub().isPresent() ? ALICE.getGithub().get().githubId : \"\") + \"}\";","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"kailashgautham":11,"teojunda":3,"-":62}},{"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 org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"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.Phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"kailashgautham"},"content":" private static final String INVALID_CLASS_GROUP \u003d \" \";","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"kailashgautham"},"content":" private static final String INVALID_TELEGRAM \u003d \"racheljames\";","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"kailashgautham"},"content":" private static final String INVALID_GITHUB \u003d \"github username\";","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","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":"kailashgautham"},"content":" private static final String VALID_CLASS_GROUP \u003d BENSON.getClassGroup().toString();","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"kailashgautham"},"content":" private static final String VALID_TELEGRAM \u003d BENSON.getTelegram().toString();","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"kailashgautham"},"content":" private static final String VALID_GITHUB \u003d BENSON.getGithub().toString();","lastModifiedDate":"2024-03-11"},{"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 toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","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":" @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":"kailashgautham"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE,","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"kailashgautham"},"content":" VALID_EMAIL, VALID_CLASS_GROUP, VALID_TELEGRAM, VALID_GITHUB);","lastModifiedDate":"2024-03-11"},{"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":"2019-03-14"},{"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":"kailashgautham"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_PHONE,","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"kailashgautham"},"content":" VALID_EMAIL, VALID_CLASS_GROUP, VALID_TELEGRAM, VALID_GITHUB);","lastModifiedDate":"2024-03-11"},{"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":"kailashgautham"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE,","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"kailashgautham"},"content":" VALID_EMAIL, VALID_CLASS_GROUP, VALID_TELEGRAM, VALID_GITHUB);","lastModifiedDate":"2024-03-11"},{"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":"kailashgautham"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null,","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"kailashgautham"},"content":" VALID_EMAIL, VALID_CLASS_GROUP, VALID_TELEGRAM, VALID_GITHUB);","lastModifiedDate":"2024-03-11"},{"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":"kailashgautham"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE,","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"kailashgautham"},"content":" INVALID_EMAIL, VALID_CLASS_GROUP, VALID_TELEGRAM, VALID_GITHUB);","lastModifiedDate":"2024-03-11"},{"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":"kailashgautham"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME,","lastModifiedDate":"2024-03-11"},{"lineNumber":82,"author":{"gitId":"kailashgautham"},"content":" VALID_PHONE, null, VALID_CLASS_GROUP, VALID_TELEGRAM, VALID_GITHUB);","lastModifiedDate":"2024-03-11"},{"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"}],"authorContributionMap":{"kailashgautham":18,"-":68}},{"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":"kailashgautham"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":6,"author":{"gitId":"kailashgautham"},"content":"import seedu.address.model.person.ClassGroup;","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-12-23"},{"lineNumber":8,"author":{"gitId":"kailashgautham"},"content":"import seedu.address.model.person.Github;","lastModifiedDate":"2024-03-11"},{"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":"kailashgautham"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-03-11"},{"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":"-"},"content":"public class EditPersonDescriptorBuilder {","lastModifiedDate":"2017-05-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private EditPersonDescriptor descriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder() {","lastModifiedDate":"2017-05-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-05-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(EditPersonDescriptor descriptor) {","lastModifiedDate":"2017-05-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" this.descriptor \u003d new EditPersonDescriptor(descriptor);","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":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Returns an {@code EditPersonDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2017-06-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":33,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-06-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" descriptor.setName(person.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" descriptor.setPhone(person.getPhone());","lastModifiedDate":"2017-06-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":37,"author":{"gitId":"kailashgautham"},"content":" descriptor.setClassGroup(person.getClassGroup());","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"kailashgautham"},"content":" descriptor.setTelegram(person.getTelegram());","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"kailashgautham"},"content":" descriptor.setGithub(person.getGithub());","lastModifiedDate":"2024-03-11"},{"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":"kailashgautham"},"content":" * Sets the {@code ClassGroup} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-11"},{"lineNumber":68,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":69,"author":{"gitId":"kailashgautham"},"content":" public EditPersonDescriptorBuilder withClassGroup(String classGroup) {","lastModifiedDate":"2024-03-11"},{"lineNumber":70,"author":{"gitId":"kailashgautham"},"content":" descriptor.setClassGroup(new ClassGroup(classGroup));","lastModifiedDate":"2024-03-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":"kailashgautham"},"content":" * Sets the {@code Telegram} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-11"},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":77,"author":{"gitId":"kailashgautham"},"content":" public EditPersonDescriptorBuilder withTelegram(String telegram) {","lastModifiedDate":"2024-03-11"},{"lineNumber":78,"author":{"gitId":"kailashgautham"},"content":" descriptor.setTelegram(Optional.of(new Telegram(telegram)));","lastModifiedDate":"2024-03-11"},{"lineNumber":79,"author":{"gitId":"kailashgautham"},"content":" return this;","lastModifiedDate":"2024-03-11"},{"lineNumber":80,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":81,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":82,"author":{"gitId":"kailashgautham"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":83,"author":{"gitId":"kailashgautham"},"content":" * Sets the {@code Github} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-11"},{"lineNumber":84,"author":{"gitId":"kailashgautham"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":85,"author":{"gitId":"kailashgautham"},"content":" public EditPersonDescriptorBuilder withGithub(String github) {","lastModifiedDate":"2024-03-11"},{"lineNumber":86,"author":{"gitId":"kailashgautham"},"content":" descriptor.setGithub(Optional.of(new Github(github)));","lastModifiedDate":"2024-03-11"},{"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":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05"},{"lineNumber":91,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":93,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"kailashgautham":21,"-":72}},{"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":"kailashgautham"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"kailashgautham"},"content":"import seedu.address.model.person.ClassGroup;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18"},{"lineNumber":7,"author":{"gitId":"kailashgautham"},"content":"import seedu.address.model.person.Github;","lastModifiedDate":"2024-03-11"},{"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":"kailashgautham"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18"},{"lineNumber":21,"author":{"gitId":"kailashgautham"},"content":" public static final String DEFAULT_TELEGRAM \u003d \"@amybee\";","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"kailashgautham"},"content":" public static final String DEFAULT_GITHUB \u003d \"amybee\";","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"kailashgautham"},"content":" public static final String DEFAULT_CLASS_GROUP \u003d \"B01\";","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":28,"author":{"gitId":"kailashgautham"},"content":" private ClassGroup classGroup;","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"kailashgautham"},"content":" private Optional\u003cTelegram\u003e telegram;","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"kailashgautham"},"content":" private Optional\u003cGithub\u003e github;","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20"},{"lineNumber":37,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20"},{"lineNumber":38,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20"},{"lineNumber":39,"author":{"gitId":"kailashgautham"},"content":" github \u003d Optional.of(new Github(DEFAULT_GITHUB));","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"kailashgautham"},"content":" telegram \u003d Optional.of(new Telegram(DEFAULT_TELEGRAM));","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"kailashgautham"},"content":" classGroup \u003d new ClassGroup(DEFAULT_CLASS_GROUP);","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10"},{"lineNumber":48,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20"},{"lineNumber":51,"author":{"gitId":"kailashgautham"},"content":" github \u003d personToCopy.getGithub();","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"kailashgautham"},"content":" telegram \u003d personToCopy.getTelegram();","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"kailashgautham"},"content":" classGroup \u003d personToCopy.getClassGroup();","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":68,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20"},{"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":" public Person build() {","lastModifiedDate":"2017-04-05"},{"lineNumber":81,"author":{"gitId":"kailashgautham"},"content":" return new Person(name, classGroup, email, phone, telegram, github);","lastModifiedDate":"2024-03-11"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":85,"author":{"gitId":"kailashgautham"},"content":" * Sets the {@code ClassGroup} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-11"},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":87,"author":{"gitId":"kailashgautham"},"content":" public PersonBuilder withClassGroup(String classGroup) {","lastModifiedDate":"2024-03-11"},{"lineNumber":88,"author":{"gitId":"kailashgautham"},"content":" this.classGroup \u003d new ClassGroup(classGroup);","lastModifiedDate":"2024-03-11"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2024-03-11"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":93,"author":{"gitId":"kailashgautham"},"content":" * Sets the {@code Telegram} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-11"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":95,"author":{"gitId":"kailashgautham"},"content":" public PersonBuilder withTelegram(String telegram) {","lastModifiedDate":"2024-03-11"},{"lineNumber":96,"author":{"gitId":"kailashgautham"},"content":" this.telegram \u003d Optional.of(new Telegram(telegram));","lastModifiedDate":"2024-03-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2024-03-11"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":100,"author":{"gitId":"kailashgautham"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":101,"author":{"gitId":"kailashgautham"},"content":" * Sets the {@code Github} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-11"},{"lineNumber":102,"author":{"gitId":"kailashgautham"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":103,"author":{"gitId":"kailashgautham"},"content":" public PersonBuilder withGithub(String github) {","lastModifiedDate":"2024-03-11"},{"lineNumber":104,"author":{"gitId":"kailashgautham"},"content":" this.github \u003d Optional.of(new Github(github));","lastModifiedDate":"2024-03-13"},{"lineNumber":105,"author":{"gitId":"kailashgautham"},"content":" return this;","lastModifiedDate":"2024-03-11"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":107,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03"}],"authorContributionMap":{"kailashgautham":29,"-":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":"kailashgautham"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CLASS_GROUP;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"kailashgautham"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GITHUB;","lastModifiedDate":"2024-03-11"},{"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":"kailashgautham"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2018-03-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static String getAddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":23,"author":{"gitId":"-"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2017-03-29"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":30,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" sb.append(PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2017-06-06"},{"lineNumber":32,"author":{"gitId":"kailashgautham"},"content":" sb.append(PREFIX_CLASS_GROUP + person.getClassGroup().classGroup + \" \");","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":34,"author":{"gitId":"kailashgautham"},"content":" sb.append(PREFIX_PHONE + person.getPhone().value + \" \");","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"kailashgautham"},"content":" sb.append(PREFIX_TELEGRAM + (person.getTelegram().isPresent()","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"kailashgautham"},"content":" ? person.getTelegram().get().telegramId : \"\") + \" \");","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"kailashgautham"},"content":" sb.append(PREFIX_GITHUB + (person.getGithub().isPresent()","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"kailashgautham"},"content":" ? person.getGithub().get().githubId : \"\") + \" \");","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26"},{"lineNumber":46,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":48,"author":{"gitId":"kailashgautham"},"content":" descriptor.getClassGroup().ifPresent(classGroup -\u003e sb.append(PREFIX_CLASS_GROUP)","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"kailashgautham"},"content":" .append(classGroup.classGroup).append(\" \"));","lastModifiedDate":"2024-03-11"},{"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":"kailashgautham"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"kailashgautham"},"content":" descriptor.getTelegram().ifPresent(telegram -\u003e sb.append(PREFIX_TELEGRAM)","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"kailashgautham"},"content":" .append(telegram.telegramId).append(\" \"));","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"kailashgautham"},"content":" descriptor.getGithub().ifPresent(github -\u003e sb.append(PREFIX_GITHUB).append(github.githubId).append(\" \"));","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05"}],"authorContributionMap":{"kailashgautham":15,"-":42}},{"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":"kailashgautham"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_CLASS_GROUP_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"kailashgautham"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_CLASS_GROUP_BOB;","lastModifiedDate":"2024-03-11"},{"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":"kailashgautham"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GITHUB_BOB;","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":12,"author":{"gitId":"kailashgautham"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"kailashgautham"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_BOB;","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07"},{"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":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final Person ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2018-01-10"},{"lineNumber":28,"author":{"gitId":"g-tejas"},"content":" .withClassGroup(\"A-1\").withEmail(\"alice@example.com\")","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2018-04-19"},{"lineNumber":30,"author":{"gitId":"kailashgautham"},"content":" .withTelegram(\"@alicepauline\").withGithub(\"alicep\").build();","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10"},{"lineNumber":33,"author":{"gitId":"g-tejas"},"content":" .withClassGroup(\"A-1\").withEmail(\"johnd@example.com\")","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"kailashgautham"},"content":" .withPhone(\"98765432\")","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"kailashgautham"},"content":" .withTelegram(\"@bensonmeier\").withGithub(\"meierbenson\").build();","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"kailashgautham"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\")","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"g-tejas"},"content":" .withClassGroup(\"A-2\").withEmail(\"heinz@example.com\")","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"kailashgautham"},"content":" .withPhone(\"95352563\")","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"kailashgautham"},"content":" .withTelegram(\"@carlkurz\").withGithub(\"kurzcarl\").build();","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"kailashgautham"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\")","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"g-tejas"},"content":" .withClassGroup(\"A-2\").withEmail(\"cornelia@example.com\")","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"kailashgautham"},"content":" .withPhone(\"87652533\")","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"kailashgautham"},"content":" .withTelegram(\"@danielmeier\").withGithub(\"meierdaniel\").build();","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"kailashgautham"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\")","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"g-tejas"},"content":" .withClassGroup(\"B-1\").withEmail(\"werner@example.com\")","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"kailashgautham"},"content":" .withPhone(\"9482224\")","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"kailashgautham"},"content":" .withTelegram(\"@ellemeyer\").withGithub(\"meyerelle\").build();","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"kailashgautham"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\")","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"g-tejas"},"content":" .withClassGroup(\"B-1\").withEmail(\"lydia@example.com\")","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"kailashgautham"},"content":" .withPhone(\"9482427\")","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"kailashgautham"},"content":" .withTelegram(\"@fionakunz\").withGithub(\"kunzfiona\").build();","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"kailashgautham"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\")","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"g-tejas"},"content":" .withClassGroup(\"B-2\").withEmail(\"anna@example.com\")","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"kailashgautham"},"content":" .withPhone(\"9482442\")","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"kailashgautham"},"content":" .withTelegram(\"@georgebest\").withGithub(\"bestgeorge\").build();","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":63,"author":{"gitId":"g-tejas"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\")","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"g-tejas"},"content":" .withClassGroup(\"C-1\").withEmail(\"stefan@example.com\")","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"g-tejas"},"content":" .withPhone(\"8482424\")","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"kailashgautham"},"content":" .withTelegram(\"@hoonmeier\").withGithub(\"meierhoon\").build();","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":68,"author":{"gitId":"g-tejas"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\")","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"g-tejas"},"content":" .withClassGroup(\"C-2\").withEmail(\"hans@example.com\")","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"g-tejas"},"content":" .withPhone(\"8482131\")","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"kailashgautham"},"content":" .withTelegram(\"@idamueller\").withGithub(\"muellerida\").build();","lastModifiedDate":"2024-03-11"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22"},{"lineNumber":74,"author":{"gitId":"g-tejas"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"g-tejas"},"content":" .withClassGroup(VALID_CLASS_GROUP_AMY).withEmail(VALID_EMAIL_AMY)","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"g-tejas"},"content":" .withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"g-tejas"},"content":" .withTelegram(VALID_TELEGRAM_AMY).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"g-tejas"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"g-tejas"},"content":" .withClassGroup(VALID_CLASS_GROUP_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"g-tejas"},"content":" .withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"g-tejas"},"content":" .withTelegram(VALID_TELEGRAM_BOB).withGithub(VALID_GITHUB_BOB).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05"},{"lineNumber":92,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05"},{"lineNumber":93,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10"},{"lineNumber":94,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10"},{"lineNumber":100,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04"},{"lineNumber":102,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13"}],"authorContributionMap":{"kailashgautham":32,"g-tejas":22,"-":48}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"kailashgautham"},"content":"[![CI Status](https://github.com/AY2324S2-CS2103T-F14-3/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S2-CS2103T-F14-3/tp/actions)","lastModifiedDate":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"kailashgautham"},"content":"[![codecov](https://codecov.io/gh/AY2324S2-CS2103T-F14-3/tp/graph/badge.svg?token\u003dLJBQBAER31)](https://codecov.io/gh/AY2324S2-CS2103T-F14-3/tp)","lastModifiedDate":"2024-03-12"},{"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":"kailashgautham"},"content":"* This is **a project for Software Engineering (SE) students in CS2103T**.\u003cbr\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":7,"author":{"gitId":"-"},"content":" Example usages:","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"kailashgautham"},"content":" * For a TA to keep track of their students, or","lastModifiedDate":"2024-03-04"},{"lineNumber":9,"author":{"gitId":"kailashgautham"},"content":" * For a personal project to keep track of your contacts.","lastModifiedDate":"2024-03-04"},{"lineNumber":10,"author":{"gitId":"kailashgautham"},"content":"* The project simulates an ongoing software project for a desktop application (called _TA Toolkit_) used for managing contact details.","lastModifiedDate":"2024-03-04"},{"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":"kailashgautham"},"content":"* It is named `TA Toolkit` because it is a toolkit that allows TAs to manage their students\u0027 contacts and other information in a more organised manner.","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"kailashgautham":7,"-":6}},{"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":"g-tejas"},"content":" archiveFileName \u003d \u0027tatoolkit.jar\u0027","lastModifiedDate":"2024-03-21"},{"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":{"g-tejas":1,"-":71}},{"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":"g-tejas"},"content":"### Tejas Garrepally","lastModifiedDate":"2024-02-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"teojunda"},"content":"\u003cimg src\u003d\"images/g-tejas.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"g-tejas"},"content":"[[homepage](http://www.gtejas.com)]","lastModifiedDate":"2024-02-24"},{"lineNumber":19,"author":{"gitId":"g-tejas"},"content":"[[github](https://github.com/g-tejas)]","lastModifiedDate":"2024-02-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"g-tejas"},"content":"* Role:","lastModifiedDate":"2024-02-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"kailashgautham"},"content":"### Gautham Kailash","lastModifiedDate":"2024-02-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"kailashgautham"},"content":"\u003cimg src\u003d\"images/kailashgautham.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-02-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"kailashgautham"},"content":"[[homepage](https://www.kailashgautham.com)]","lastModifiedDate":"2024-02-24"},{"lineNumber":29,"author":{"gitId":"kailashgautham"},"content":"[[github](http://github.com/kailashgautham)]","lastModifiedDate":"2024-02-24"},{"lineNumber":30,"author":{"gitId":"kailashgautham"},"content":"[[portfolio](team/kailashgautham.md)]","lastModifiedDate":"2024-02-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"kailashgautham"},"content":"* Role: TBC","lastModifiedDate":"2024-02-24"},{"lineNumber":33,"author":{"gitId":"kailashgautham"},"content":"* Responsibilities: TBC","lastModifiedDate":"2024-02-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"hiivan"},"content":"### Ivan Ang","lastModifiedDate":"2024-03-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"hiivan"},"content":"\u003cimg src\u003d\"images/hiivan.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"hiivan"},"content":"[[homepage](https://www.ivan-ang.com)]","lastModifiedDate":"2024-03-01"},{"lineNumber":40,"author":{"gitId":"hiivan"},"content":"[[github](https://github.com/hiivan)]","lastModifiedDate":"2024-03-01"},{"lineNumber":41,"author":{"gitId":"hiivan"},"content":"[[portfolio](team/ivan.md)]","lastModifiedDate":"2024-03-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"hiivan"},"content":"* Role: TBC","lastModifiedDate":"2024-03-01"},{"lineNumber":44,"author":{"gitId":"hiivan"},"content":"* Responsibilities: TBC","lastModifiedDate":"2024-03-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"teojunda"},"content":"### Axel Teo","lastModifiedDate":"2024-03-02"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"teojunda"},"content":"\u003cimg src\u003d\"images/teojunda.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"teojunda"},"content":"[[github](http://github.com/teojunda)]","lastModifiedDate":"2024-03-02"},{"lineNumber":51,"author":{"gitId":"teojunda"},"content":"[[portfolio](team/teojunda.md)]","lastModifiedDate":"2024-03-02"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"* Responsibilities: Dev Ops + Threading","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"YuSoonZ"},"content":"### Ng Yu Soon","lastModifiedDate":"2024-03-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"YuSoonZ"},"content":"\u003cimg src\u003d\"images/yusoonz.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"YuSoonZ"},"content":"[[github](http://github.com/yusoonz)]","lastModifiedDate":"2024-03-05"},{"lineNumber":61,"author":{"gitId":"YuSoonZ"},"content":"[[portfolio](team/ngyusoon.md)]","lastModifiedDate":"2024-03-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"YuSoonZ"},"content":"* Responsibilities: TBC","lastModifiedDate":"2024-03-05"}],"authorContributionMap":{"YuSoonZ":5,"kailashgautham":7,"teojunda":5,"hiivan":7,"g-tejas":4,"-":36}},{"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":"teojunda"},"content":"# TA Toolkit Developer Guide","lastModifiedDate":"2024-03-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":"kailashgautham"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureDiagram.puml\" width\u003d\"280\"\u003e\u003c/puml\u003e","lastModifiedDate":"2024-03-24"},{"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":"-"},"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":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":"hiivan"},"content":"The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues the command `dc 1` to delete a person.","lastModifiedDate":"2024-03-20"},{"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":"-"},"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":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":"-"},"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":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":"-"},"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":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":"hiivan"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"dc 1\")` API call as an example.","lastModifiedDate":"2024-03-20"},{"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 continues till 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).\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-02-09"},{"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":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12"},{"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":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"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":"2021-07-31"},{"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":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":133,"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":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":135,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"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":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"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":148,"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":149,"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":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","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":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"teojunda"},"content":"### Edit a `Person`","lastModifiedDate":"2024-03-19"},{"lineNumber":162,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":163,"author":{"gitId":"teojunda"},"content":"Edits the details of an existing `Person` identified by their `INDEX`in the displayed person list.","lastModifiedDate":"2024-03-19"},{"lineNumber":164,"author":{"gitId":"teojunda"},"content":"The commands are implemented in the `EditCommand` class which extend the `Command` class.","lastModifiedDate":"2024-03-19"},{"lineNumber":165,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":166,"author":{"gitId":"teojunda"},"content":"* Step 1. The `EditCommand` object\u0027s `execute()` method is called.","lastModifiedDate":"2024-03-19"},{"lineNumber":167,"author":{"gitId":"teojunda"},"content":"* Step 2. The `INDEX` is checked to be within the valid range of the displayed person list. If the `INDEX` given is invalid (i.e., out of range), a `CommandException` is thrown.","lastModifiedDate":"2024-03-19"},{"lineNumber":168,"author":{"gitId":"teojunda"},"content":"* Step 3. The `Person` at the given `INDEX` is referenced and removed from person list.","lastModifiedDate":"2024-03-19"},{"lineNumber":169,"author":{"gitId":"teojunda"},"content":"* Step 4. The field(s) to be edited are checked.","lastModifiedDate":"2024-03-19"},{"lineNumber":170,"author":{"gitId":"teojunda"},"content":" * If there are no fields to be edited, a `CommandException` is thrown.","lastModifiedDate":"2024-03-19"},{"lineNumber":171,"author":{"gitId":"teojunda"},"content":" * If any of the edited fields are invalid, a `CommandException` is thrown.","lastModifiedDate":"2024-03-19"},{"lineNumber":172,"author":{"gitId":"teojunda"},"content":" * If the edited person is the same as the original person, a `CommandException` is thrown`.","lastModifiedDate":"2024-03-19"},{"lineNumber":173,"author":{"gitId":"teojunda"},"content":" * If any of `Email`, `Phone`, `Telegram`, `Github` fields are duplicates with any existing person in person list, a `CommandException` is thrown.","lastModifiedDate":"2024-03-19"},{"lineNumber":174,"author":{"gitId":"teojunda"},"content":"* Step 5. The model object\u0027s `addPerson()` method is called. The input parameter is the `editedPerson` with the edited details.","lastModifiedDate":"2024-03-19"},{"lineNumber":175,"author":{"gitId":"teojunda"},"content":"* Step 5. The `Person` field(s) are edited.","lastModifiedDate":"2024-03-19"},{"lineNumber":176,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":177,"author":{"gitId":"teojunda"},"content":"The diagram below describes this behaviour concisely. It shows how a user’s command is processed and what message is ultimately shown if they decide to edit a person.","lastModifiedDate":"2024-03-19"},{"lineNumber":178,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":179,"author":{"gitId":"teojunda"},"content":"\u003cpuml src\u003d\"diagrams/EditCommandActivityDiagram.puml\" /\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":180,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":181,"author":{"gitId":"teojunda"},"content":"The sequence diagram below also shows the interaction between the various components during the execution of the `EditCommand`.","lastModifiedDate":"2024-03-19"},{"lineNumber":182,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":183,"author":{"gitId":"teojunda"},"content":"\u003cpuml src\u003d\"diagrams/EditCommandSequenceDiagram.puml\" /\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":184,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":185,"author":{"gitId":"YuSoonZ"},"content":"### View a `Person`","lastModifiedDate":"2024-03-20"},{"lineNumber":186,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":187,"author":{"gitId":"YuSoonZ"},"content":"Views the details of an existing `Person` identified by their `INDEX`in the displayed person list.","lastModifiedDate":"2024-03-20"},{"lineNumber":188,"author":{"gitId":"YuSoonZ"},"content":"The commands are implemented in the `ViewCommand` class which extend the `Command` class.","lastModifiedDate":"2024-03-20"},{"lineNumber":189,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":190,"author":{"gitId":"YuSoonZ"},"content":"* Step 1. The `ViewCommand` object\u0027s `execute()` method is called.","lastModifiedDate":"2024-03-20"},{"lineNumber":191,"author":{"gitId":"YuSoonZ"},"content":"* Step 2. The `INDEX` is checked to be within the valid range of the displayed person list. If the `INDEX` given is invalid (i.e., out of range), a `CommandException` is thrown.","lastModifiedDate":"2024-03-20"},{"lineNumber":192,"author":{"gitId":"YuSoonZ"},"content":"* Step 3. The `Person` at the given `INDEX` is referenced and then displayed to the user.","lastModifiedDate":"2024-03-20"},{"lineNumber":193,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":194,"author":{"gitId":"YuSoonZ"},"content":"The diagram below describes this behaviour concisely. It shows how a user’s command is processed and what message is ultimately shown if they decide to view a person.","lastModifiedDate":"2024-03-20"},{"lineNumber":195,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":196,"author":{"gitId":"YuSoonZ"},"content":"\u003cpuml src\u003d\"diagrams/ViewCommandActivityDiagram.puml\" /\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":197,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":198,"author":{"gitId":"YuSoonZ"},"content":"The sequence diagram below also shows the interaction between the various components during the execution of the `ViewCommand`.","lastModifiedDate":"2024-03-20"},{"lineNumber":199,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":200,"author":{"gitId":"YuSoonZ"},"content":"\u003cpuml src\u003d\"diagrams/ViewCommandSequenceDiagram.puml\" /\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":201,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":202,"author":{"gitId":"teojunda"},"content":"\u003cdiv style\u003d\"page-break-after: always;\"\u003e\u003c/div\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":203,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":204,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"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":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"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":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"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":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"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":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"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":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":226,"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":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"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":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":234,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"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":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":241,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"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":244,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":247,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"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":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":256,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09"},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":260,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":261,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":262,"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":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":264,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":266,"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":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":268,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":269,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":270,"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":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":274,"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":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":278,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":280,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":281,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":282,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":284,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":286,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":287,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":288,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":290,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":291,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":292,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"lineNumber":293,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":294,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":295,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":296,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":297,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":298,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":299,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23"},{"lineNumber":300,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":302,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":303,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":304,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":306,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":307,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":308,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":309,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":310,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":311,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":312,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":313,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":314,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":315,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":316,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":317,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":318,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":320,"author":{"gitId":"teojunda"},"content":"* is a CS2103T TA in NUS School of Computing","lastModifiedDate":"2024-03-05"},{"lineNumber":321,"author":{"gitId":"teojunda"},"content":"* has a need to manage a significant number of contacts over different communication channels","lastModifiedDate":"2024-03-05"},{"lineNumber":322,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23"},{"lineNumber":323,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23"},{"lineNumber":324,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26"},{"lineNumber":325,"author":{"gitId":"teojunda"},"content":"* prefers to use a separate app that is made to manage student contacts efficiently","lastModifiedDate":"2024-03-05"},{"lineNumber":326,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23"},{"lineNumber":327,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":328,"author":{"gitId":"teojunda"},"content":"**Value proposition**:","lastModifiedDate":"2024-03-05"},{"lineNumber":329,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":330,"author":{"gitId":"teojunda"},"content":"* TA Toolkit is a desktop app that helps the user manage a large number of student contacts","lastModifiedDate":"2024-03-05"},{"lineNumber":331,"author":{"gitId":"teojunda"},"content":"across different communication channels efficiently. It is optimised for use via a Command","lastModifiedDate":"2024-03-05"},{"lineNumber":332,"author":{"gitId":"teojunda"},"content":"Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI)","lastModifiedDate":"2024-03-05"},{"lineNumber":333,"author":{"gitId":"teojunda"},"content":"* It categorises contacts into their tutorial group, allowing for easier management of contacts","lastModifiedDate":"2024-03-05"},{"lineNumber":334,"author":{"gitId":"teojunda"},"content":"* It allows the user to add, delete, edit, find and view student contacts","lastModifiedDate":"2024-03-05"},{"lineNumber":335,"author":{"gitId":"teojunda"},"content":"* Users are able to take notes on specific students and keep track of tasks associated to students","lastModifiedDate":"2024-03-05"},{"lineNumber":336,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":337,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":338,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":339,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":340,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":341,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":342,"author":{"gitId":"teojunda"},"content":"|----------|---------|-----------------------------------------------|----------------------------------------------------------|","lastModifiedDate":"2024-03-06"},{"lineNumber":343,"author":{"gitId":"teojunda"},"content":"| `* * *` | TA | add a student contact | keep track of my students when I need to |","lastModifiedDate":"2024-03-05"},{"lineNumber":344,"author":{"gitId":"teojunda"},"content":"| `* * *` | TA | delete a student contact | remove students from the database if they drop the class |","lastModifiedDate":"2024-03-05"},{"lineNumber":345,"author":{"gitId":"teojunda"},"content":"| `* * *` | TA | view all student contacts | see a list of all my students |","lastModifiedDate":"2024-03-05"},{"lineNumber":346,"author":{"gitId":"teojunda"},"content":"| `* *` | TA | view a students\u0027 detailed information | see all the information related to a student |","lastModifiedDate":"2024-03-06"},{"lineNumber":347,"author":{"gitId":"teojunda"},"content":"| `* *` | TA | edit a student contact | update a students’s details should they change |","lastModifiedDate":"2024-03-05"},{"lineNumber":348,"author":{"gitId":"teojunda"},"content":"| `* *` | TA | assign student to project team | organise students according to their project team |","lastModifiedDate":"2024-03-06"},{"lineNumber":349,"author":{"gitId":"teojunda"},"content":"| `* *` | TA | take notes on students | keep track of their strengths and weaknesses |","lastModifiedDate":"2024-03-05"},{"lineNumber":350,"author":{"gitId":"teojunda"},"content":"| `* *` | TA | delete notes on students | remove notes that are no longer relevant |","lastModifiedDate":"2024-03-05"},{"lineNumber":351,"author":{"gitId":"teojunda"},"content":"| `*` | TA | mark student as absent for a specific class | be aware of who is missing lessons |","lastModifiedDate":"2024-03-06"},{"lineNumber":352,"author":{"gitId":"teojunda"},"content":"| `*` | TA | unmark student as absent for a specific class | correct mistakes in attendance marking |","lastModifiedDate":"2024-03-06"},{"lineNumber":353,"author":{"gitId":"teojunda"},"content":"| `* ` | TA | view all student contacts for a project team | see a list of students in a project team |","lastModifiedDate":"2024-03-06"},{"lineNumber":354,"author":{"gitId":"teojunda"},"content":"| `* ` | TA | view summary of all students attendance | get a quick overview of class attendance |","lastModifiedDate":"2024-03-06"},{"lineNumber":355,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":356,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":357,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":358,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":359,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":360,"author":{"gitId":"teojunda"},"content":"(For all use cases below, the **System** is the `TA Toolkit` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2024-03-05"},{"lineNumber":361,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":362,"author":{"gitId":"teojunda"},"content":"**Use case: UC01 - Adding a student**","lastModifiedDate":"2024-03-06"},{"lineNumber":363,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":364,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":365,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":366,"author":{"gitId":"teojunda"},"content":"1. User enters command to add a student","lastModifiedDate":"2024-03-06"},{"lineNumber":367,"author":{"gitId":"teojunda"},"content":"2. TA Toolkit adds the student to the list of students","lastModifiedDate":"2024-03-06"},{"lineNumber":368,"author":{"gitId":"teojunda"},"content":"3. TA Toolkit displays a success message along with the student’s contact details","lastModifiedDate":"2024-03-06"},{"lineNumber":369,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":370,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":371,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":372,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":373,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":374,"author":{"gitId":"teojunda"},"content":"* 1a. The add student command format is invalid.","lastModifiedDate":"2024-03-06"},{"lineNumber":375,"author":{"gitId":"teojunda"},"content":" * 1a1. TA Toolkit shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":376,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":377,"author":{"gitId":"teojunda"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-06"},{"lineNumber":378,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":379,"author":{"gitId":"teojunda"},"content":"* 2a. Student already exists in the list of students.","lastModifiedDate":"2024-03-06"},{"lineNumber":380,"author":{"gitId":"teojunda"},"content":" * 2a1. TA Toolkit shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":381,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":382,"author":{"gitId":"teojunda"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":383,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":384,"author":{"gitId":"teojunda"},"content":"---","lastModifiedDate":"2024-03-06"},{"lineNumber":385,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":386,"author":{"gitId":"teojunda"},"content":"**Use case: UC02 - Deleting a student**","lastModifiedDate":"2024-03-06"},{"lineNumber":387,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":388,"author":{"gitId":"teojunda"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":389,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":390,"author":{"gitId":"teojunda"},"content":"1. User enters command to delete a student","lastModifiedDate":"2024-03-06"},{"lineNumber":391,"author":{"gitId":"teojunda"},"content":"2. TA Toolkit requests for confirmation","lastModifiedDate":"2024-03-06"},{"lineNumber":392,"author":{"gitId":"teojunda"},"content":"3. User confirms","lastModifiedDate":"2024-03-06"},{"lineNumber":393,"author":{"gitId":"teojunda"},"content":"4. TA Toolkit deletes the student’s contact and displays a success message","lastModifiedDate":"2024-03-06"},{"lineNumber":394,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":395,"author":{"gitId":"teojunda"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":396,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":397,"author":{"gitId":"teojunda"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":398,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":399,"author":{"gitId":"teojunda"},"content":"* 1a. TA Toolkit does not contain the student specified","lastModifiedDate":"2024-03-06"},{"lineNumber":400,"author":{"gitId":"teojunda"},"content":" * 1a1. TA Toolkit shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":401,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":402,"author":{"gitId":"teojunda"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-06"},{"lineNumber":403,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":404,"author":{"gitId":"teojunda"},"content":"* 3a. The User chooses to cancel the deletion of the student","lastModifiedDate":"2024-03-06"},{"lineNumber":405,"author":{"gitId":"teojunda"},"content":" * 3a1. TA Toolkit cancels the deletion","lastModifiedDate":"2024-03-06"},{"lineNumber":406,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":407,"author":{"gitId":"teojunda"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":408,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":409,"author":{"gitId":"teojunda"},"content":"---","lastModifiedDate":"2024-03-06"},{"lineNumber":410,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":411,"author":{"gitId":"teojunda"},"content":"**Use case: UC03 - Update a student**","lastModifiedDate":"2024-03-06"},{"lineNumber":412,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":413,"author":{"gitId":"teojunda"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":414,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":415,"author":{"gitId":"teojunda"},"content":"1. User enters the command to update a student’s details","lastModifiedDate":"2024-03-06"},{"lineNumber":416,"author":{"gitId":"teojunda"},"content":"2. TA Toolkit modifies the values that user intended to replace","lastModifiedDate":"2024-03-06"},{"lineNumber":417,"author":{"gitId":"teojunda"},"content":"3. TA Toolkit displays a success message along with the student’s updated contact details","lastModifiedDate":"2024-03-06"},{"lineNumber":418,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":419,"author":{"gitId":"teojunda"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":420,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":421,"author":{"gitId":"teojunda"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":422,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":423,"author":{"gitId":"teojunda"},"content":"* 1a. The update student command format is invalid.","lastModifiedDate":"2024-03-06"},{"lineNumber":424,"author":{"gitId":"teojunda"},"content":" * 1a1. TA Toolkit shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":425,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":426,"author":{"gitId":"teojunda"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-06"},{"lineNumber":427,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":428,"author":{"gitId":"teojunda"},"content":"* 2a. Student does not exist in the list of students.","lastModifiedDate":"2024-03-06"},{"lineNumber":429,"author":{"gitId":"teojunda"},"content":" * 2a1. TA Toolkit shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":430,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":431,"author":{"gitId":"teojunda"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-06"},{"lineNumber":432,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":433,"author":{"gitId":"teojunda"},"content":"---","lastModifiedDate":"2024-03-06"},{"lineNumber":434,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":435,"author":{"gitId":"teojunda"},"content":"**Use case: UC04 - Viewing students overview**","lastModifiedDate":"2024-03-06"},{"lineNumber":436,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":437,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":438,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":439,"author":{"gitId":"teojunda"},"content":"1. User requests to view all student","lastModifiedDate":"2024-03-06"},{"lineNumber":440,"author":{"gitId":"teojunda"},"content":"2. TA Toolkit shows a list of all members","lastModifiedDate":"2024-03-06"},{"lineNumber":441,"author":{"gitId":"teojunda"},"content":"3. TA Toolkit displays a success message","lastModifiedDate":"2024-03-06"},{"lineNumber":442,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":443,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":444,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":445,"author":{"gitId":"teojunda"},"content":"---","lastModifiedDate":"2024-03-06"},{"lineNumber":446,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":447,"author":{"gitId":"teojunda"},"content":"**Use case: UC05 - View a student detailed**","lastModifiedDate":"2024-03-06"},{"lineNumber":448,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":449,"author":{"gitId":"teojunda"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":450,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":451,"author":{"gitId":"teojunda"},"content":"1. User requests to view the detailed information of a student","lastModifiedDate":"2024-03-06"},{"lineNumber":452,"author":{"gitId":"teojunda"},"content":"2. TA Toolkit shows the detailed information of the student","lastModifiedDate":"2024-03-06"},{"lineNumber":453,"author":{"gitId":"teojunda"},"content":"3. TA Toolkit displays a success message","lastModifiedDate":"2024-03-06"},{"lineNumber":454,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":455,"author":{"gitId":"teojunda"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":456,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":457,"author":{"gitId":"teojunda"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":458,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":459,"author":{"gitId":"teojunda"},"content":"* 1a. The view student command format is invalid.","lastModifiedDate":"2024-03-06"},{"lineNumber":460,"author":{"gitId":"teojunda"},"content":" * 1a1. TA Toolkit shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":461,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":462,"author":{"gitId":"teojunda"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-06"},{"lineNumber":463,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":464,"author":{"gitId":"teojunda"},"content":"* 1b. The requested student is invalid.","lastModifiedDate":"2024-03-06"},{"lineNumber":465,"author":{"gitId":"teojunda"},"content":" * 1b1. TA Toolkit shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":466,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":467,"author":{"gitId":"teojunda"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-06"},{"lineNumber":468,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":469,"author":{"gitId":"teojunda"},"content":"---","lastModifiedDate":"2024-03-06"},{"lineNumber":470,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":471,"author":{"gitId":"teojunda"},"content":"**Use case: UC06 - Assign student to project team**","lastModifiedDate":"2024-03-06"},{"lineNumber":472,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":473,"author":{"gitId":"teojunda"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":474,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":475,"author":{"gitId":"teojunda"},"content":"1. User requests to assign student to project team","lastModifiedDate":"2024-03-06"},{"lineNumber":476,"author":{"gitId":"teojunda"},"content":"2. TA Toolkit adds the project team tag to the student","lastModifiedDate":"2024-03-06"},{"lineNumber":477,"author":{"gitId":"teojunda"},"content":"3. TA Toolkit displays a success message","lastModifiedDate":"2024-03-06"},{"lineNumber":478,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":479,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":480,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":481,"author":{"gitId":"teojunda"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":482,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":483,"author":{"gitId":"teojunda"},"content":"* 1a. The group student command format is invalid.","lastModifiedDate":"2024-03-06"},{"lineNumber":484,"author":{"gitId":"teojunda"},"content":" * 1a1. TA Toolkit shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":485,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":486,"author":{"gitId":"teojunda"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-06"},{"lineNumber":487,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":488,"author":{"gitId":"teojunda"},"content":"* 1b. The requested student is invalid.","lastModifiedDate":"2024-03-06"},{"lineNumber":489,"author":{"gitId":"teojunda"},"content":" * 1b1. TA Toolkit shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":490,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":491,"author":{"gitId":"teojunda"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-06"},{"lineNumber":492,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":493,"author":{"gitId":"teojunda"},"content":"* 2b. The student is already assigned a project team tag.","lastModifiedDate":"2024-03-06"},{"lineNumber":494,"author":{"gitId":"teojunda"},"content":" * 2b1. TA Toolkit shows a message asking whether to replace or keep the existing tag.","lastModifiedDate":"2024-03-06"},{"lineNumber":495,"author":{"gitId":"teojunda"},"content":" * 2b1a. User decides to replace the existing tag.","lastModifiedDate":"2024-03-06"},{"lineNumber":496,"author":{"gitId":"teojunda"},"content":" * 2b1a1. TA Toolkit removes the current project team tag from the student.","lastModifiedDate":"2024-03-06"},{"lineNumber":497,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":498,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23"},{"lineNumber":499,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":500,"author":{"gitId":"teojunda"},"content":" * 2b1b. User decides to keep the existing tag.","lastModifiedDate":"2024-03-06"},{"lineNumber":501,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":502,"author":{"gitId":"teojunda"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":503,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":504,"author":{"gitId":"teojunda"},"content":"---","lastModifiedDate":"2024-03-06"},{"lineNumber":505,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":506,"author":{"gitId":"teojunda"},"content":"**Use case: UC07 - Add note on student**","lastModifiedDate":"2024-03-06"},{"lineNumber":507,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":508,"author":{"gitId":"teojunda"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":509,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":510,"author":{"gitId":"teojunda"},"content":"1. User requests to add a note regarding a student","lastModifiedDate":"2024-03-06"},{"lineNumber":511,"author":{"gitId":"teojunda"},"content":"2. TA Toolkit adds the note to the student’s list of notes","lastModifiedDate":"2024-03-06"},{"lineNumber":512,"author":{"gitId":"teojunda"},"content":"3. TA Toolkit displays a success message","lastModifiedDate":"2024-03-06"},{"lineNumber":513,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":514,"author":{"gitId":"teojunda"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":515,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":516,"author":{"gitId":"teojunda"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":517,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":518,"author":{"gitId":"teojunda"},"content":"* 1a. The add note command format is invalid.","lastModifiedDate":"2024-03-06"},{"lineNumber":519,"author":{"gitId":"teojunda"},"content":" * 1a1. TA Toolkit shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":520,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":521,"author":{"gitId":"teojunda"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-06"},{"lineNumber":522,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":523,"author":{"gitId":"teojunda"},"content":"* 1b. The requested student is invalid.","lastModifiedDate":"2024-03-06"},{"lineNumber":524,"author":{"gitId":"teojunda"},"content":" * 1b1. TA Toolkit shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":525,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":526,"author":{"gitId":"teojunda"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-06"},{"lineNumber":527,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":528,"author":{"gitId":"teojunda"},"content":"---","lastModifiedDate":"2024-03-06"},{"lineNumber":529,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":530,"author":{"gitId":"teojunda"},"content":"**Use case: UC08 - Delete note on student**","lastModifiedDate":"2024-03-06"},{"lineNumber":531,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":532,"author":{"gitId":"teojunda"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":533,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":534,"author":{"gitId":"teojunda"},"content":"1. User requests to delete a note regarding a student","lastModifiedDate":"2024-03-06"},{"lineNumber":535,"author":{"gitId":"teojunda"},"content":"2. TA Toolkit removes the note from the student’s list of notes","lastModifiedDate":"2024-03-06"},{"lineNumber":536,"author":{"gitId":"teojunda"},"content":"3. TA Toolkit displays a success message","lastModifiedDate":"2024-03-06"},{"lineNumber":537,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":538,"author":{"gitId":"teojunda"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":539,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":540,"author":{"gitId":"teojunda"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":541,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":542,"author":{"gitId":"teojunda"},"content":"* 1a. The delete note command format is invalid.","lastModifiedDate":"2024-03-06"},{"lineNumber":543,"author":{"gitId":"teojunda"},"content":" * 1a1. TA Toolkit shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":544,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":545,"author":{"gitId":"teojunda"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-06"},{"lineNumber":546,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":547,"author":{"gitId":"teojunda"},"content":"* 1b. The requested student is invalid.","lastModifiedDate":"2024-03-06"},{"lineNumber":548,"author":{"gitId":"teojunda"},"content":" * 1b1. TA Toolkit shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":549,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":550,"author":{"gitId":"teojunda"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-06"},{"lineNumber":551,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":552,"author":{"gitId":"teojunda"},"content":"* 2a. The note requested to be deleted is invalid.","lastModifiedDate":"2024-03-06"},{"lineNumber":553,"author":{"gitId":"teojunda"},"content":" * 2a1. TA Toolkit shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":554,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":555,"author":{"gitId":"teojunda"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-06"},{"lineNumber":556,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":557,"author":{"gitId":"teojunda"},"content":"---","lastModifiedDate":"2024-03-06"},{"lineNumber":558,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":559,"author":{"gitId":"teojunda"},"content":"**Use case: UC09 - Mark student as absent from a specific class**","lastModifiedDate":"2024-03-06"},{"lineNumber":560,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":561,"author":{"gitId":"teojunda"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":562,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":563,"author":{"gitId":"teojunda"},"content":"1. Use requests to mark student as absent for a class","lastModifiedDate":"2024-03-06"},{"lineNumber":564,"author":{"gitId":"teojunda"},"content":"2. TA Toolkit marks the student as absent for that class","lastModifiedDate":"2024-03-06"},{"lineNumber":565,"author":{"gitId":"teojunda"},"content":"3. TA Toolkit displays a success message","lastModifiedDate":"2024-03-06"},{"lineNumber":566,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":567,"author":{"gitId":"teojunda"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":568,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":569,"author":{"gitId":"teojunda"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":570,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":571,"author":{"gitId":"teojunda"},"content":"* 1a. The mark student command format is invalid.","lastModifiedDate":"2024-03-06"},{"lineNumber":572,"author":{"gitId":"teojunda"},"content":" * 1a1. TA Toolkit shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":573,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":574,"author":{"gitId":"teojunda"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-06"},{"lineNumber":575,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":576,"author":{"gitId":"teojunda"},"content":"* 1b. The requested student is invalid.","lastModifiedDate":"2024-03-06"},{"lineNumber":577,"author":{"gitId":"teojunda"},"content":" * 1b1. TA Toolkit shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":578,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":579,"author":{"gitId":"teojunda"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-06"},{"lineNumber":580,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":581,"author":{"gitId":"teojunda"},"content":"---","lastModifiedDate":"2024-03-06"},{"lineNumber":582,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":583,"author":{"gitId":"teojunda"},"content":"**Use case: UC10 - Unmark student as absent for a class**","lastModifiedDate":"2024-03-06"},{"lineNumber":584,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":585,"author":{"gitId":"teojunda"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":586,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":587,"author":{"gitId":"teojunda"},"content":"1. User requests to mark student as absent for a class","lastModifiedDate":"2024-03-06"},{"lineNumber":588,"author":{"gitId":"teojunda"},"content":"2. TA Toolkit marks the student as absent for that class","lastModifiedDate":"2024-03-06"},{"lineNumber":589,"author":{"gitId":"teojunda"},"content":"3. TA Toolkit displays a success message","lastModifiedDate":"2024-03-06"},{"lineNumber":590,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":591,"author":{"gitId":"teojunda"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":592,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":593,"author":{"gitId":"teojunda"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":594,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":595,"author":{"gitId":"teojunda"},"content":"* 1a. The unmark student command format is invalid.","lastModifiedDate":"2024-03-06"},{"lineNumber":596,"author":{"gitId":"teojunda"},"content":" * 1a1. TA Toolkit shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":597,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":598,"author":{"gitId":"teojunda"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-06"},{"lineNumber":599,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":600,"author":{"gitId":"teojunda"},"content":"* 1b. The requested student is invalid.","lastModifiedDate":"2024-03-06"},{"lineNumber":601,"author":{"gitId":"teojunda"},"content":" * 1b1. TA Toolkit shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":602,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":603,"author":{"gitId":"teojunda"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-06"},{"lineNumber":604,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":605,"author":{"gitId":"teojunda"},"content":"* 2a. The requested student is not currently marked as absent for the class.","lastModifiedDate":"2024-03-06"},{"lineNumber":606,"author":{"gitId":"teojunda"},"content":" * 2a1. TA Toolkit shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":607,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":608,"author":{"gitId":"teojunda"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-06"},{"lineNumber":609,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":610,"author":{"gitId":"teojunda"},"content":"---","lastModifiedDate":"2024-03-06"},{"lineNumber":611,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":612,"author":{"gitId":"teojunda"},"content":"**Use case: UC11 - View all students by project team tag**","lastModifiedDate":"2024-03-06"},{"lineNumber":613,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":614,"author":{"gitId":"teojunda"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":615,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":616,"author":{"gitId":"teojunda"},"content":"1. User requests to view all students with a specified project team tag","lastModifiedDate":"2024-03-06"},{"lineNumber":617,"author":{"gitId":"teojunda"},"content":"2. TA Toolkit displays a list of all members with that project team tag","lastModifiedDate":"2024-03-06"},{"lineNumber":618,"author":{"gitId":"teojunda"},"content":"3. TA Toolkit displays a success message","lastModifiedDate":"2024-03-06"},{"lineNumber":619,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":620,"author":{"gitId":"teojunda"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":621,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":622,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":623,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":624,"author":{"gitId":"teojunda"},"content":"* 1a. The view student by tag command format is invalid.","lastModifiedDate":"2024-03-06"},{"lineNumber":625,"author":{"gitId":"teojunda"},"content":" * 1a1. TA Toolkit shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":626,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":627,"author":{"gitId":"teojunda"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-06"},{"lineNumber":628,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":629,"author":{"gitId":"teojunda"},"content":"* 1b. The requested tag is invalid.","lastModifiedDate":"2024-03-06"},{"lineNumber":630,"author":{"gitId":"teojunda"},"content":" * 1b1. TA Toolkit shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":631,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":632,"author":{"gitId":"teojunda"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-06"},{"lineNumber":633,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":634,"author":{"gitId":"teojunda"},"content":"---","lastModifiedDate":"2024-03-06"},{"lineNumber":635,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":636,"author":{"gitId":"teojunda"},"content":"**Use case: UC12 - View summary of students attendance**","lastModifiedDate":"2024-03-06"},{"lineNumber":637,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":638,"author":{"gitId":"teojunda"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":639,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":640,"author":{"gitId":"teojunda"},"content":"1. User requests to view a summary of all students attendance","lastModifiedDate":"2024-03-06"},{"lineNumber":641,"author":{"gitId":"teojunda"},"content":"2. TA Toolkit displays a summary of all students attendance","lastModifiedDate":"2024-03-06"},{"lineNumber":642,"author":{"gitId":"teojunda"},"content":"3. TA Toolkit displays a success message","lastModifiedDate":"2024-03-06"},{"lineNumber":643,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":644,"author":{"gitId":"teojunda"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":645,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":646,"author":{"gitId":"teojunda"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":647,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":648,"author":{"gitId":"teojunda"},"content":"* 1a. There are no students in storage.","lastModifiedDate":"2024-03-06"},{"lineNumber":649,"author":{"gitId":"teojunda"},"content":" * 1a1. TA Toolkit shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":650,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":651,"author":{"gitId":"teojunda"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":652,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":653,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":654,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":655,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":656,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":657,"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":658,"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":659,"author":{"gitId":"teojunda"},"content":"3. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should","lastModifiedDate":"2024-03-05"},{"lineNumber":660,"author":{"gitId":"teojunda"},"content":"be able to accomplish most of the tasks faster using commands than using the mouse.","lastModifiedDate":"2024-03-05"},{"lineNumber":661,"author":{"gitId":"teojunda"},"content":"4. All functions within the application must provide responses to user queries within a timeframe of 2 seconds.","lastModifiedDate":"2024-03-05"},{"lineNumber":662,"author":{"gitId":"teojunda"},"content":"5. The applications does not support concurrent usage by multiple users.","lastModifiedDate":"2024-03-05"},{"lineNumber":663,"author":{"gitId":"teojunda"},"content":"6. The application does not offer support for languages aside from English.","lastModifiedDate":"2024-03-05"},{"lineNumber":664,"author":{"gitId":"teojunda"},"content":"7. The application should be able to handle most common user input errors and provide meaningful error messages.","lastModifiedDate":"2024-03-05"},{"lineNumber":665,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":666,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":667,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":668,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":669,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":670,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09"},{"lineNumber":671,"author":{"gitId":"teojunda"},"content":"* **CLI**: Command Line Interface: A way of interacting with a computer program where the user issues commands to the","lastModifiedDate":"2024-03-05"},{"lineNumber":672,"author":{"gitId":"teojunda"},"content":"program in the form of successive lines of text (command lines). It emphasises text-based user interaction over graphical user interfaces.","lastModifiedDate":"2024-03-05"},{"lineNumber":673,"author":{"gitId":"teojunda"},"content":"* **TA**: Teaching Assistant","lastModifiedDate":"2024-03-05"},{"lineNumber":674,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":675,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":676,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":677,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":678,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":679,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":680,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":681,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":682,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12"},{"lineNumber":683,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":684,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":685,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":686,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":687,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":688,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":689,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":690,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":691,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":692,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":693,"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":694,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":695,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":696,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":697,"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":698,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":699,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":700,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":701,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":702,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":703,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":704,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":705,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":706,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":707,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":708,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":709,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":710,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":711,"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":712,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":713,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":714,"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":715,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":716,"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":717,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":718,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":719,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":720,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":721,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":722,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":723,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":724,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":725,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":726,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":727,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"YuSoonZ":17,"kailashgautham":1,"teojunda":322,"hiivan":2,"-":385}},{"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":"g-tejas"},"content":"# TA Toolkit User Guide","lastModifiedDate":"2024-03-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"g-tejas"},"content":"TA Toolkit is a **desktop app for managing students, optimized for use via a Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, TA Toolkit can get your student management tasks done faster than traditional GUI apps.","lastModifiedDate":"2024-03-05"},{"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":"kailashgautham"},"content":"1. Download the latest `TAToolkit.jar` from [here](https://github.com/AY2324S2-CS2103T-F14-3/tp/releases).","lastModifiedDate":"2024-03-06"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"kailashgautham"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your TA Toolkit.","lastModifiedDate":"2024-03-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"kailashgautham"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar TAToolkit.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":25,"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":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":"-"},"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":29,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"kailashgautham"},"content":" * `ac n/John Doe c/F14-3 p/98765432 e/johnd@example.com t/@johndoe g/johnDoeGithub` : Adds a student named `John Doe` to the TA Toolkit.","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"g-tejas"},"content":" * `dc 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"**Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"kailashgautham"},"content":" e.g. in `ac n/NAME`, `NAME` is a parameter which can be used as `ac n/John Doe`.","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"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":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"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":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"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":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"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":64,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":66,"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":67,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"kailashgautham"},"content":"### Adding a person: `ac`","lastModifiedDate":"2024-03-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"kailashgautham"},"content":"Adds a person to the TA Toolkit.","lastModifiedDate":"2024-03-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"kailashgautham"},"content":"Format: `ac n/NAME c/CLASS_GROUP e/EMAIL p/PHONE_NUMBER [t/TELEGRAM] [g/GITHUB]`","lastModifiedDate":"2024-03-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"kailashgautham"},"content":"* `ac n/John Doe c/F14-3 p/98765432 e/johnd@example.com t/@johndoe g/johnDoeGithub`","lastModifiedDate":"2024-03-13"},{"lineNumber":86,"author":{"gitId":"kailashgautham"},"content":"* `ac n/Betsy Crowe c/T10-2 e/betsycrowe@example.com p/1234567 g/betsycodes`","lastModifiedDate":"2024-03-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"YuSoonZ"},"content":"### Listing all persons : `ls`","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"kailashgautham"},"content":"Shows a list of all persons in the TA Toolkit.","lastModifiedDate":"2024-03-06"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"YuSoonZ"},"content":"Format: `ls`","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"teojunda"},"content":"### Updating a person : `uc`","lastModifiedDate":"2024-03-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"teojunda"},"content":"Updates an existing person in the TA Toolkit.","lastModifiedDate":"2024-03-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"teojunda"},"content":"Format: `uc INDEX [n/NAME] [c/CLASS_GROUP] [e/EMAIL] [p/PHONE] [t/TELEGRAM] [g/GITHUB]…​`","lastModifiedDate":"2024-03-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"teojunda"},"content":"* Updates 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":"2024-03-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"teojunda"},"content":"* The updated person must have a different field compared to the original person.","lastModifiedDate":"2024-03-13"},{"lineNumber":104,"author":{"gitId":"teojunda"},"content":"* When editing any field, EMAIL, PHONE, TELEGRAM, GITHUB must be unique compared to every other person.","lastModifiedDate":"2024-03-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"teojunda"},"content":"* `uc 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":"2024-03-13"},{"lineNumber":108,"author":{"gitId":"teojunda"},"content":"* `uc 2 n/Betsy Crower t/` Edits the name of the 2nd person to be `Betsy Crower` and clears the Telegram field.","lastModifiedDate":"2024-03-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":"### Locating persons by name: `find`","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"Finds persons whose names contain any of the given keywords.","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","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":"-"},"content":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":"* `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"YuSoonZ"},"content":"### Viewing a person : `view`","lastModifiedDate":"2024-03-18"},{"lineNumber":129,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":130,"author":{"gitId":"YuSoonZ"},"content":"View the specified person from the TA Toolkit.","lastModifiedDate":"2024-03-18"},{"lineNumber":131,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":132,"author":{"gitId":"YuSoonZ"},"content":"Format: `view INDEX`","lastModifiedDate":"2024-03-18"},{"lineNumber":133,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":134,"author":{"gitId":"YuSoonZ"},"content":"* View the person at the specified `INDEX`.","lastModifiedDate":"2024-03-18"},{"lineNumber":135,"author":{"gitId":"YuSoonZ"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2024-03-18"},{"lineNumber":136,"author":{"gitId":"YuSoonZ"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-03-18"},{"lineNumber":137,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":138,"author":{"gitId":"YuSoonZ"},"content":"Examples:","lastModifiedDate":"2024-03-18"},{"lineNumber":139,"author":{"gitId":"YuSoonZ"},"content":"* `ls` followed by `view 2` views the 2nd person in the TA Toolkit.","lastModifiedDate":"2024-03-18"},{"lineNumber":140,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":141,"author":{"gitId":"g-tejas"},"content":"### Deleting a person : `dc`","lastModifiedDate":"2024-03-14"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"kailashgautham"},"content":"Deletes the specified person from the TA Toolkit.","lastModifiedDate":"2024-03-06"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"g-tejas"},"content":"Format: `dc INDEX`","lastModifiedDate":"2024-03-14"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"* Deletes the person at the specified `INDEX`.","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"YuSoonZ"},"content":"* `ls` followed by `dc 2` deletes the 2nd person in the TA Toolkit.","lastModifiedDate":"2024-03-18"},{"lineNumber":153,"author":{"gitId":"g-tejas"},"content":"* `find Betsy` followed by `dc 1` deletes the 1st person in the results of the `find` command.","lastModifiedDate":"2024-03-14"},{"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":"kailashgautham"},"content":"Clears all entries from the TA Toolkit.","lastModifiedDate":"2024-03-06"},{"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":"kailashgautham"},"content":"TAToolkit data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.","lastModifiedDate":"2024-03-06"},{"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":"kailashgautham"},"content":"TAToolkit data are saved automatically as a JSON file `[JAR file location]/data/TAToolkit.json`. Advanced users are welcome to update data directly by editing that data file.","lastModifiedDate":"2024-03-06"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":175,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":177,"author":{"gitId":"-"},"content":"**Caution:**","lastModifiedDate":"2023-09-12"},{"lineNumber":178,"author":{"gitId":"kailashgautham"},"content":"If your changes to the data file makes its format invalid, TAToolkit 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.\u003cbr\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":179,"author":{"gitId":"kailashgautham"},"content":"Furthermore, certain edits can cause the TAToolkit to behave in unexpected ways (e.g., if a value entered is outside the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.","lastModifiedDate":"2024-03-06"},{"lineNumber":180,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":182,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"kailashgautham"},"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 TAToolkit home folder.","lastModifiedDate":"2024-03-06"},{"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":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":197,"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":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":199,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":201,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":"-----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-12"},{"lineNumber":205,"author":{"gitId":"kailashgautham"},"content":"**Add** | `ac n/NAME c/CLASS_GROUP e/EMAIL p/PHONE_NUMBER [t/TELEGRAM] [g/GITHUB]` \u003cbr\u003e e.g., `ac c/T10-2 n/James Ho p/22224444 e/jamesho@example.com t/@jamesho g/jameshoGithub`","lastModifiedDate":"2024-03-13"},{"lineNumber":206,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"g-tejas"},"content":"**Delete** | `dc INDEX`\u003cbr\u003e e.g., `dc 3`","lastModifiedDate":"2024-03-14"},{"lineNumber":208,"author":{"gitId":"teojunda"},"content":"**Edit** | `uc INDEX [n/NAME] [c/CLASS_GROUP] [e/EMAIL] [p/PHONE] [t/TELEGRAM] [g/GITHUB]…​`\u003cbr\u003e e.g.,`uc 2 n/James Lee e/jameslee@example.com`","lastModifiedDate":"2024-03-13"},{"lineNumber":209,"author":{"gitId":"-"},"content":"**Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake`","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"YuSoonZ"},"content":"**List** | `ls`","lastModifiedDate":"2024-03-18"},{"lineNumber":211,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"YuSoonZ"},"content":"**View** | `view INDEX`","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"YuSoonZ":18,"kailashgautham":19,"teojunda":9,"g-tejas":7,"-":159}},{"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":"kailashgautham"},"content":"user -[USER_COLOR]\u003e ui : \"dc 1\"","lastModifiedDate":"2024-03-16"},{"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":"kailashgautham"},"content":"ui -[UI_COLOR]\u003e logic : execute(\"dc 1\")","lastModifiedDate":"2024-03-16"},{"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":"-"},"content":"logic -[LOGIC_COLOR]\u003e model : deletePerson(p)","lastModifiedDate":"2019-07-03"},{"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":{"kailashgautham":2,"-":37}},{"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":"-"},"content":"AddressBook *-right-\u003e \"1\" UniquePersonList","lastModifiedDate":"2019-07-30"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"UniquePersonList -right-\u003e Person","lastModifiedDate":"2021-07-31"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":11,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"Person *--\u003e Name","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"kailashgautham"},"content":"Person *--\u003e ClassGroup","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"Person *--\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"kailashgautham"},"content":"Person *--\u003e Phone","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"kailashgautham"},"content":"Person |o--\u003e Telegram","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"kailashgautham"},"content":"Person |o--\u003e Github","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"kailashgautham":5,"-":14}},{"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":"hiivan"},"content":"participant \":AddressBookParser\" as TaToolkitParser LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"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 \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-02-09"},{"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 \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-02-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"hiivan"},"content":"[-\u003e LogicManager : execute(\"dc 1\")","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":"activate LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"hiivan"},"content":"LogicManager -\u003e TaToolkitParser : parseCommand(\"dc 1\")","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"hiivan"},"content":"activate TaToolkitParser","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"create DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"hiivan"},"content":"TaToolkitParser -\u003e DeleteCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":"activate DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"hiivan"},"content":"DeleteCommandParser --\u003e TaToolkitParser","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":"deactivate DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"hiivan"},"content":"TaToolkitParser -\u003e DeleteCommandParser : parse(\"1\")","lastModifiedDate":"2024-03-20"},{"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 :","lastModifiedDate":"2024-02-09"},{"lineNumber":38,"author":{"gitId":"-"},"content":"deactivate DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":40,"author":{"gitId":"hiivan"},"content":"DeleteCommandParser --\u003e TaToolkitParser : d","lastModifiedDate":"2024-03-20"},{"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":"hiivan"},"content":"DeleteCommandParser -[hidden]-\u003e TaToolkitParser","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":"destroy DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"hiivan"},"content":"TaToolkitParser --\u003e LogicManager : d","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"hiivan"},"content":"deactivate TaToolkitParser","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":49,"author":{"gitId":"-"},"content":"LogicManager -\u003e DeleteCommand : execute(m)","lastModifiedDate":"2024-02-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":"activate DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":52,"author":{"gitId":"-"},"content":"DeleteCommand -\u003e Model : deletePerson(1)","lastModifiedDate":"2019-07-03"},{"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 : r","lastModifiedDate":"2024-02-09"},{"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":{"hiivan":11,"-":59}},{"path":"docs/diagrams/EditCommandActivityDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"teojunda"},"content":"@startuml","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"teojunda"},"content":"skin rose","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"teojunda"},"content":"skinparam ActivityFontSize 15","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"teojunda"},"content":"skinparam ArrowFontSize 12","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"teojunda"},"content":"start","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"teojunda"},"content":":User enters command to update a Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"teojunda"},"content":"if () then ([command is invalid])","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"teojunda"},"content":" :Show error message\\nfor invalid command;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"teojunda"},"content":"else ([else])","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"teojunda"},"content":" if () then ([index is invalid])","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"teojunda"},"content":" :Show error message\\nfor invalid index;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"teojunda"},"content":" else ([else])","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"teojunda"},"content":" if () then ([no field is entered])","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"teojunda"},"content":" :Show error message\\nindicating no fields\\nenteredfor editing;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"teojunda"},"content":" else ([else])","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"teojunda"},"content":" if () then ([any field is invalid])","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"teojunda"},"content":" :Show error message\\nindicating invalid field;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"teojunda"},"content":" else ([else])","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"teojunda"},"content":" if () then ([updated person issame as original])","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"teojunda"},"content":" :Show error message indicating\\nupdated person is the same as\\nthe original person;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"teojunda"},"content":" else ([else])","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"teojunda"},"content":" if () then ([edited person contains duplicate\\nfields with another person])","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"teojunda"},"content":" :Show error message indicating\\n duplicated field.;","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"teojunda"},"content":" else ([else])","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"teojunda"},"content":" :Edit the details of the\\npersonin the person list;","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"teojunda"},"content":" :Update the person list\\nin the GUI, retaining\\nthe same filter;","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"teojunda"},"content":" :Show success message\\nwith person\u0027s information;","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"teojunda"},"content":" endif;","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"teojunda"},"content":" endif;","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"teojunda"},"content":" endif;","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"teojunda"},"content":" endif","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"teojunda"},"content":" endif","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"teojunda"},"content":"endif","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"teojunda"},"content":"stop","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"teojunda"},"content":"@enduml","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"teojunda":38}},{"path":"docs/diagrams/EditCommandSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"teojunda"},"content":"@startuml","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"teojunda"},"content":"!include style.puml","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"teojunda"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"teojunda"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"teojunda"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"teojunda"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"teojunda"},"content":"participant \":EditCommandParser\" as EditCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"teojunda"},"content":"participant \"e:EditCommand\" as EditCommand LOGIC_COLOR","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"teojunda"},"content":"participant \":CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"teojunda"},"content":"end box","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"teojunda"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"teojunda"},"content":"participant \":Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"teojunda"},"content":"end box","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"teojunda"},"content":"[-\u003e LogicManager : execute(\"uc 1 n/Harry Potter p/98765432\")","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"teojunda"},"content":"activate LogicManager","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"teojunda"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"uc 1 n/Harry Potter p/98765432\")","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"teojunda"},"content":"activate AddressBookParser","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"teojunda"},"content":"create EditCommandParser","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"teojunda"},"content":"AddressBookParser -\u003e EditCommandParser","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"teojunda"},"content":"activate EditCommandParser","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"teojunda"},"content":"EditCommandParser --\u003e AddressBookParser","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"teojunda"},"content":"deactivate EditCommandParser","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"teojunda"},"content":"AddressBookParser -\u003e EditCommandParser : parse(\"uc 1 n/Harry Potter p/98765432\")","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"teojunda"},"content":"activate EditCommandParser","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"teojunda"},"content":"create EditCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"teojunda"},"content":"EditCommandParser -\u003e EditCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"teojunda"},"content":"activate EditCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"teojunda"},"content":"EditCommand --\u003e EditCommandParser","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"teojunda"},"content":"deactivate EditCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"teojunda"},"content":"EditCommandParser --\u003e AddressBookParser","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"teojunda"},"content":"deactivate EditCommandParser","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"teojunda"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"teojunda"},"content":"EditCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"teojunda"},"content":"destroy EditCommandParser","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"teojunda"},"content":"AddressBookParser --\u003e LogicManager","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"teojunda"},"content":"deactivate AddressBookParser","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"teojunda"},"content":"LogicManager -\u003e EditCommand : execute()","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"teojunda"},"content":"activate EditCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"teojunda"},"content":"EditCommand -\u003e Model : getFilteredPersonList()","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"teojunda"},"content":"activate Model","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"teojunda"},"content":"Model --\u003e EditCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"teojunda"},"content":"deactivate Model","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"teojunda"},"content":"EditCommand -\u003e Model : deletePerson(originalPerson)","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"teojunda"},"content":"activate Model","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"teojunda"},"content":"Model --\u003e EditCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"teojunda"},"content":"deactivate Model","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"teojunda"},"content":"EditCommand -\u003e Model : addPerson(editedPerson)","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"teojunda"},"content":"activate Model","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"teojunda"},"content":"Model --\u003e EditCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"teojunda"},"content":"deactivate Model","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"teojunda"},"content":"create CommandResult","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"teojunda"},"content":"EditCommand -\u003e CommandResult","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"teojunda"},"content":"activate CommandResult","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"teojunda"},"content":"CommandResult --\u003e EditCommand : result","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"teojunda"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"teojunda"},"content":"EditCommand --\u003e LogicManager : result","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"teojunda"},"content":"deactivate EditCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"teojunda"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"teojunda"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"teojunda"},"content":"@enduml","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"teojunda":83}},{"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":"g-tejas"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyTaToolkit\" as ReadOnlyTaToolkit","lastModifiedDate":"2024-03-17"},{"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":"g-tejas"},"content":"Class TaToolkit","lastModifiedDate":"2024-03-17"},{"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":"-"},"content":"Class UniquePersonList","lastModifiedDate":"2021-07-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Class Person","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Class Name","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"g-tejas"},"content":"Class ClassGroup","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"g-tejas"},"content":"Class Email","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Class Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"g-tejas"},"content":"Class Telegram","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"g-tejas"},"content":"Class Github","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":24,"author":{"gitId":"-"},"content":"Class I #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"g-tejas"},"content":"TaToolkit .up.|\u003e ReadOnlyTaToolkit","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"ModelManager .up.|\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"Model .right.\u003e ReadOnlyUserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"g-tejas"},"content":"Model .left.\u003e ReadOnlyTaToolkit","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"g-tejas"},"content":"ModelManager -left-\u003e \"1\" TaToolkit","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"-"},"content":"ModelManager -right-\u003e \"1\" UserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"UserPrefs .up.|\u003e ReadOnlyUserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":39,"author":{"gitId":"g-tejas"},"content":"TaToolkit *--\u003e \"1\" UniquePersonList","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"-"},"content":"UniquePersonList --\u003e \"~* all\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":41,"author":{"gitId":"-"},"content":"Person *--\u003e Name","lastModifiedDate":"2019-07-03"},{"lineNumber":42,"author":{"gitId":"g-tejas"},"content":"Person *--\u003e ClassGroup","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"-"},"content":"Person *--\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":44,"author":{"gitId":"g-tejas"},"content":"Person *--\u003e Phone","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"g-tejas"},"content":"Person |o--\u003e Telegram","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"g-tejas"},"content":"Person |o--\u003e Github","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":48,"author":{"gitId":"-"},"content":"Person -[hidden]up--\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"UniquePersonList -[hidden]right-\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":51,"author":{"gitId":"g-tejas"},"content":"Name -[hidden]right-\u003e ClassGroup","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"g-tejas"},"content":"ClassGroup -[hidden]right-\u003e Email","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"g-tejas"},"content":"Email -[hidden]right-\u003e Phone","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"g-tejas"},"content":"Phone -[hidden]right-\u003e Telegram","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"g-tejas"},"content":"Telegram -[hidden]right-\u003e Github","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":"ModelManager --\u003e \"~* filtered\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":58,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"g-tejas":19,"-":39}},{"path":"docs/diagrams/ViewCommandActivityDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"YuSoonZ"},"content":"@startuml","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"YuSoonZ"},"content":"skin rose","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"YuSoonZ"},"content":"skinparam ActivityFontSize 15","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"YuSoonZ"},"content":"skinparam ArrowFontSize 12","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"YuSoonZ"},"content":"start","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"YuSoonZ"},"content":":User enters command to view a Person;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"YuSoonZ"},"content":"if () then ([command is invalid])","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"YuSoonZ"},"content":" :Show error message\\nfor invalid command;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"YuSoonZ"},"content":"else ([else])","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"YuSoonZ"},"content":" if () then ([no field is entered])","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"YuSoonZ"},"content":" :Show error message\\nindicating no fields\\nenteredfor viewing;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"YuSoonZ"},"content":" else ([else])","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"YuSoonZ"},"content":" if () then ([index given is invalid])","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"YuSoonZ"},"content":" :Show error message indicating\\ninvalid index;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"YuSoonZ"},"content":" else ([else])","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"YuSoonZ"},"content":" :Show success message\\nwith person\u0027s information;","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"YuSoonZ"},"content":" endif;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"YuSoonZ"},"content":" endif;","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"YuSoonZ"},"content":" endif;","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"YuSoonZ"},"content":"stop","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"YuSoonZ"},"content":"@enduml","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"YuSoonZ":23}},{"path":"docs/diagrams/ViewCommandSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"YuSoonZ"},"content":"@startuml","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"YuSoonZ"},"content":"!include style.puml","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"YuSoonZ"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"YuSoonZ"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"YuSoonZ"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"YuSoonZ"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"YuSoonZ"},"content":"participant \":ViewCommandParser\" as ViewCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"YuSoonZ"},"content":"participant \"v:ViewCommand\" as ViewCommand LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"YuSoonZ"},"content":"participant \":CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"YuSoonZ"},"content":"end box","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"YuSoonZ"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"YuSoonZ"},"content":"participant \":Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"YuSoonZ"},"content":"end box","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"YuSoonZ"},"content":"[-\u003e LogicManager : execute(\"view 1\")","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"YuSoonZ"},"content":"activate LogicManager","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"YuSoonZ"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"view 1\")","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"YuSoonZ"},"content":"activate AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"YuSoonZ"},"content":"create ViewCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"YuSoonZ"},"content":"AddressBookParser -\u003e ViewCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"YuSoonZ"},"content":"activate ViewCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"YuSoonZ"},"content":"ViewCommand --\u003e AddressBookParser : v","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"YuSoonZ"},"content":"deactivate ViewCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"YuSoonZ"},"content":"AddressBookParser --\u003e LogicManager : v","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"YuSoonZ"},"content":"deactivate AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"YuSoonZ"},"content":"LogicManager -\u003e ViewCommand : execute()","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"YuSoonZ"},"content":"activate ViewCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"YuSoonZ"},"content":"create CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"YuSoonZ"},"content":"ViewCommand -\u003e CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"YuSoonZ"},"content":"activate CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"YuSoonZ"},"content":"CommandResult --\u003e ViewCommand : result","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"YuSoonZ"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"YuSoonZ"},"content":"ViewCommand --\u003e LogicManager : result","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"YuSoonZ"},"content":"deactivate ViewCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"YuSoonZ"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"YuSoonZ"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"YuSoonZ"},"content":"@enduml@enduml","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"YuSoonZ":48}},{"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":"hiivan"},"content":"# TA Toolkit","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"kailashgautham"},"content":"[![CI Status](https://github.com/AY2324S2-CS2103T-F14-3/tp/workflows/Java%20CI/badge.svg)](https://github.com//AY2324S2-CS2103T-F14-3/tp/actions)","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"kailashgautham"},"content":"[![codecov](https://codecov.io/gh/AY2324S2-CS2103T-F14-3/tp/branch/master/graph/badge.svg)](https://codecov.io/gh/AY2324S2-CS2103T-F14-3/tp)","lastModifiedDate":"2024-03-12"},{"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":"hiivan"},"content":"**TA Toolkit is a desktop app for managing students.** While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface).","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"hiivan"},"content":"* If you are interested in using TA Toolkit, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"hiivan"},"content":"* If you are interested about developing TA Toolkit, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.","lastModifiedDate":"2024-03-20"},{"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":{"kailashgautham":2,"hiivan":4,"-":15}},{"path":"docs/team/ivan.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"hiivan"},"content":"---","lastModifiedDate":"2024-03-01"},{"lineNumber":2,"author":{"gitId":"hiivan"},"content":" layout: default.md","lastModifiedDate":"2024-03-01"},{"lineNumber":3,"author":{"gitId":"hiivan"},"content":" title: \"Ivan\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-03-01"},{"lineNumber":4,"author":{"gitId":"hiivan"},"content":"---","lastModifiedDate":"2024-03-01"},{"lineNumber":5,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":6,"author":{"gitId":"hiivan"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-03-01"},{"lineNumber":7,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":8,"author":{"gitId":"hiivan"},"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":"2024-03-01"},{"lineNumber":9,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":10,"author":{"gitId":"hiivan"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-01"},{"lineNumber":11,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":12,"author":{"gitId":"hiivan"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-03-01"},{"lineNumber":13,"author":{"gitId":"hiivan"},"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":"2024-03-01"},{"lineNumber":14,"author":{"gitId":"hiivan"},"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":"2024-03-01"},{"lineNumber":15,"author":{"gitId":"hiivan"},"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":"2024-03-01"},{"lineNumber":16,"author":{"gitId":"hiivan"},"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":"2024-03-01"},{"lineNumber":17,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":18,"author":{"gitId":"hiivan"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-03-01"},{"lineNumber":19,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":20,"author":{"gitId":"hiivan"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-03-01"},{"lineNumber":21,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":22,"author":{"gitId":"hiivan"},"content":"* **Project management**:","lastModifiedDate":"2024-03-01"},{"lineNumber":23,"author":{"gitId":"hiivan"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-03-01"},{"lineNumber":24,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":25,"author":{"gitId":"hiivan"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-03-01"},{"lineNumber":26,"author":{"gitId":"hiivan"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-03-01"},{"lineNumber":27,"author":{"gitId":"hiivan"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-03-01"},{"lineNumber":28,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":29,"author":{"gitId":"hiivan"},"content":"* **Documentation**:","lastModifiedDate":"2024-03-01"},{"lineNumber":30,"author":{"gitId":"hiivan"},"content":" * User Guide:","lastModifiedDate":"2024-03-01"},{"lineNumber":31,"author":{"gitId":"hiivan"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-03-01"},{"lineNumber":32,"author":{"gitId":"hiivan"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-03-01"},{"lineNumber":33,"author":{"gitId":"hiivan"},"content":" * Developer Guide:","lastModifiedDate":"2024-03-01"},{"lineNumber":34,"author":{"gitId":"hiivan"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-03-01"},{"lineNumber":35,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":36,"author":{"gitId":"hiivan"},"content":"* **Community**:","lastModifiedDate":"2024-03-01"},{"lineNumber":37,"author":{"gitId":"hiivan"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-03-01"},{"lineNumber":38,"author":{"gitId":"hiivan"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-03-01"},{"lineNumber":39,"author":{"gitId":"hiivan"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-03-01"},{"lineNumber":40,"author":{"gitId":"hiivan"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-03-01"},{"lineNumber":41,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":42,"author":{"gitId":"hiivan"},"content":"* **Tools**:","lastModifiedDate":"2024-03-01"},{"lineNumber":43,"author":{"gitId":"hiivan"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-03-01"},{"lineNumber":44,"author":{"gitId":"hiivan"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-03-01"},{"lineNumber":45,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":46,"author":{"gitId":"hiivan"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-03-01"}],"authorContributionMap":{"hiivan":46}},{"path":"docs/team/kailashgautham.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"kailashgautham"},"content":"---","lastModifiedDate":"2024-02-24"},{"lineNumber":2,"author":{"gitId":"kailashgautham"},"content":" layout: default.md","lastModifiedDate":"2024-02-24"},{"lineNumber":3,"author":{"gitId":"kailashgautham"},"content":" title: \"Kailash Gautham\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-02-24"},{"lineNumber":4,"author":{"gitId":"kailashgautham"},"content":"---","lastModifiedDate":"2024-02-24"},{"lineNumber":5,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-02-24"},{"lineNumber":6,"author":{"gitId":"kailashgautham"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-02-24"},{"lineNumber":7,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-02-24"},{"lineNumber":8,"author":{"gitId":"kailashgautham"},"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":"2024-02-24"},{"lineNumber":9,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-02-24"},{"lineNumber":10,"author":{"gitId":"kailashgautham"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-02-24"},{"lineNumber":11,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-02-24"},{"lineNumber":12,"author":{"gitId":"kailashgautham"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-02-24"},{"lineNumber":13,"author":{"gitId":"kailashgautham"},"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":"2024-02-24"},{"lineNumber":14,"author":{"gitId":"kailashgautham"},"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":"2024-02-24"},{"lineNumber":15,"author":{"gitId":"kailashgautham"},"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":"2024-02-24"},{"lineNumber":16,"author":{"gitId":"kailashgautham"},"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":"2024-02-24"},{"lineNumber":17,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-02-24"},{"lineNumber":18,"author":{"gitId":"kailashgautham"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-02-24"},{"lineNumber":19,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-02-24"},{"lineNumber":20,"author":{"gitId":"kailashgautham"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-02-24"},{"lineNumber":21,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-02-24"},{"lineNumber":22,"author":{"gitId":"kailashgautham"},"content":"* **Project management**:","lastModifiedDate":"2024-02-24"},{"lineNumber":23,"author":{"gitId":"kailashgautham"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-02-24"},{"lineNumber":24,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-02-24"},{"lineNumber":25,"author":{"gitId":"kailashgautham"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-02-24"},{"lineNumber":26,"author":{"gitId":"kailashgautham"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-02-24"},{"lineNumber":27,"author":{"gitId":"kailashgautham"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-02-24"},{"lineNumber":28,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-02-24"},{"lineNumber":29,"author":{"gitId":"kailashgautham"},"content":"* **Documentation**:","lastModifiedDate":"2024-02-24"},{"lineNumber":30,"author":{"gitId":"kailashgautham"},"content":" * User Guide:","lastModifiedDate":"2024-02-24"},{"lineNumber":31,"author":{"gitId":"kailashgautham"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-02-24"},{"lineNumber":32,"author":{"gitId":"kailashgautham"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-02-24"},{"lineNumber":33,"author":{"gitId":"kailashgautham"},"content":" * Developer Guide:","lastModifiedDate":"2024-02-24"},{"lineNumber":34,"author":{"gitId":"kailashgautham"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-02-24"},{"lineNumber":35,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-02-24"},{"lineNumber":36,"author":{"gitId":"kailashgautham"},"content":"* **Community**:","lastModifiedDate":"2024-02-24"},{"lineNumber":37,"author":{"gitId":"kailashgautham"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-02-24"},{"lineNumber":38,"author":{"gitId":"kailashgautham"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-02-24"},{"lineNumber":39,"author":{"gitId":"kailashgautham"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-02-24"},{"lineNumber":40,"author":{"gitId":"kailashgautham"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-02-24"},{"lineNumber":41,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-02-24"},{"lineNumber":42,"author":{"gitId":"kailashgautham"},"content":"* **Tools**:","lastModifiedDate":"2024-02-24"},{"lineNumber":43,"author":{"gitId":"kailashgautham"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-02-24"},{"lineNumber":44,"author":{"gitId":"kailashgautham"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-02-24"},{"lineNumber":45,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-02-24"},{"lineNumber":46,"author":{"gitId":"kailashgautham"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-02-24"}],"authorContributionMap":{"kailashgautham":46}},{"path":"docs/team/ngyusoon.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"YuSoonZ"},"content":"---","lastModifiedDate":"2024-03-05"},{"lineNumber":2,"author":{"gitId":"YuSoonZ"},"content":" layout: default.md","lastModifiedDate":"2024-03-05"},{"lineNumber":3,"author":{"gitId":"YuSoonZ"},"content":" title: \"Yu Soon\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-03-05"},{"lineNumber":4,"author":{"gitId":"YuSoonZ"},"content":"---","lastModifiedDate":"2024-03-05"},{"lineNumber":5,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":6,"author":{"gitId":"YuSoonZ"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-03-05"},{"lineNumber":7,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":8,"author":{"gitId":"YuSoonZ"},"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":"2024-03-05"},{"lineNumber":9,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":10,"author":{"gitId":"YuSoonZ"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-05"},{"lineNumber":11,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":12,"author":{"gitId":"YuSoonZ"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-03-05"},{"lineNumber":13,"author":{"gitId":"YuSoonZ"},"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":"2024-03-05"},{"lineNumber":14,"author":{"gitId":"YuSoonZ"},"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":"2024-03-05"},{"lineNumber":15,"author":{"gitId":"YuSoonZ"},"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":"2024-03-05"},{"lineNumber":16,"author":{"gitId":"YuSoonZ"},"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":"2024-03-05"},{"lineNumber":17,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":18,"author":{"gitId":"YuSoonZ"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-03-05"},{"lineNumber":19,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":20,"author":{"gitId":"YuSoonZ"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-03-05"},{"lineNumber":21,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":22,"author":{"gitId":"YuSoonZ"},"content":"* **Project management**:","lastModifiedDate":"2024-03-05"},{"lineNumber":23,"author":{"gitId":"YuSoonZ"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-03-05"},{"lineNumber":24,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":25,"author":{"gitId":"YuSoonZ"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-03-05"},{"lineNumber":26,"author":{"gitId":"YuSoonZ"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-03-05"},{"lineNumber":27,"author":{"gitId":"YuSoonZ"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-03-05"},{"lineNumber":28,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":29,"author":{"gitId":"YuSoonZ"},"content":"* **Documentation**:","lastModifiedDate":"2024-03-05"},{"lineNumber":30,"author":{"gitId":"YuSoonZ"},"content":" * User Guide:","lastModifiedDate":"2024-03-05"},{"lineNumber":31,"author":{"gitId":"YuSoonZ"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-03-05"},{"lineNumber":32,"author":{"gitId":"YuSoonZ"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-03-05"},{"lineNumber":33,"author":{"gitId":"YuSoonZ"},"content":" * Developer Guide:","lastModifiedDate":"2024-03-05"},{"lineNumber":34,"author":{"gitId":"YuSoonZ"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-03-05"},{"lineNumber":35,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":36,"author":{"gitId":"YuSoonZ"},"content":"* **Community**:","lastModifiedDate":"2024-03-05"},{"lineNumber":37,"author":{"gitId":"YuSoonZ"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-03-05"},{"lineNumber":38,"author":{"gitId":"YuSoonZ"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-03-05"},{"lineNumber":39,"author":{"gitId":"YuSoonZ"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-03-05"},{"lineNumber":40,"author":{"gitId":"YuSoonZ"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-03-05"},{"lineNumber":41,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":42,"author":{"gitId":"YuSoonZ"},"content":"* **Tools**:","lastModifiedDate":"2024-03-05"},{"lineNumber":43,"author":{"gitId":"YuSoonZ"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-03-05"},{"lineNumber":44,"author":{"gitId":"YuSoonZ"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-03-05"},{"lineNumber":45,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":46,"author":{"gitId":"YuSoonZ"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-03-05"}],"authorContributionMap":{"YuSoonZ":46}},{"path":"docs/team/tejasgarrepally.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"g-tejas"},"content":"---","lastModifiedDate":"2024-02-27"},{"lineNumber":2,"author":{"gitId":"g-tejas"},"content":" layout: default.md","lastModifiedDate":"2024-02-27"},{"lineNumber":3,"author":{"gitId":"g-tejas"},"content":" title: \"Tejas Garrepally\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-02-27"},{"lineNumber":4,"author":{"gitId":"g-tejas"},"content":"---","lastModifiedDate":"2024-02-27"},{"lineNumber":5,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":6,"author":{"gitId":"g-tejas"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-02-27"},{"lineNumber":7,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":8,"author":{"gitId":"g-tejas"},"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":"2024-02-27"},{"lineNumber":9,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":10,"author":{"gitId":"g-tejas"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-02-27"},{"lineNumber":11,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":12,"author":{"gitId":"g-tejas"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-02-27"},{"lineNumber":13,"author":{"gitId":"g-tejas"},"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":"2024-02-27"},{"lineNumber":14,"author":{"gitId":"g-tejas"},"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":"2024-02-27"},{"lineNumber":15,"author":{"gitId":"g-tejas"},"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":"2024-02-27"},{"lineNumber":16,"author":{"gitId":"g-tejas"},"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":"2024-02-27"},{"lineNumber":17,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":18,"author":{"gitId":"g-tejas"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-02-27"},{"lineNumber":19,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":20,"author":{"gitId":"g-tejas"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-02-27"},{"lineNumber":21,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":22,"author":{"gitId":"g-tejas"},"content":"* **Project management**:","lastModifiedDate":"2024-02-27"},{"lineNumber":23,"author":{"gitId":"g-tejas"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-02-27"},{"lineNumber":24,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":25,"author":{"gitId":"g-tejas"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-02-27"},{"lineNumber":26,"author":{"gitId":"g-tejas"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-02-27"},{"lineNumber":27,"author":{"gitId":"g-tejas"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-02-27"},{"lineNumber":28,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":29,"author":{"gitId":"g-tejas"},"content":"* **Documentation**:","lastModifiedDate":"2024-02-27"},{"lineNumber":30,"author":{"gitId":"g-tejas"},"content":" * User Guide:","lastModifiedDate":"2024-02-27"},{"lineNumber":31,"author":{"gitId":"g-tejas"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-02-27"},{"lineNumber":32,"author":{"gitId":"g-tejas"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-02-27"},{"lineNumber":33,"author":{"gitId":"g-tejas"},"content":" * Developer Guide:","lastModifiedDate":"2024-02-27"},{"lineNumber":34,"author":{"gitId":"g-tejas"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-02-27"},{"lineNumber":35,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":36,"author":{"gitId":"g-tejas"},"content":"* **Community**:","lastModifiedDate":"2024-02-27"},{"lineNumber":37,"author":{"gitId":"g-tejas"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-02-27"},{"lineNumber":38,"author":{"gitId":"g-tejas"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-02-27"},{"lineNumber":39,"author":{"gitId":"g-tejas"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-02-27"},{"lineNumber":40,"author":{"gitId":"g-tejas"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-02-27"},{"lineNumber":41,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":42,"author":{"gitId":"g-tejas"},"content":"* **Tools**:","lastModifiedDate":"2024-02-27"},{"lineNumber":43,"author":{"gitId":"g-tejas"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-02-27"},{"lineNumber":44,"author":{"gitId":"g-tejas"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-02-27"},{"lineNumber":45,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-02-27"},{"lineNumber":46,"author":{"gitId":"g-tejas"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-02-27"}],"authorContributionMap":{"g-tejas":46}},{"path":"docs/team/teojunda.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"teojunda"},"content":"---","lastModifiedDate":"2024-03-02"},{"lineNumber":2,"author":{"gitId":"teojunda"},"content":"layout: default.md","lastModifiedDate":"2024-03-02"},{"lineNumber":3,"author":{"gitId":"teojunda"},"content":"title: \"Axel\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-03-02"},{"lineNumber":4,"author":{"gitId":"teojunda"},"content":"---","lastModifiedDate":"2024-03-02"},{"lineNumber":5,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":6,"author":{"gitId":"teojunda"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-03-02"},{"lineNumber":7,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":8,"author":{"gitId":"teojunda"},"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":"2024-03-02"},{"lineNumber":9,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":10,"author":{"gitId":"teojunda"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-02"},{"lineNumber":11,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":12,"author":{"gitId":"teojunda"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-03-02"},{"lineNumber":13,"author":{"gitId":"teojunda"},"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":"2024-03-02"},{"lineNumber":14,"author":{"gitId":"teojunda"},"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":"2024-03-02"},{"lineNumber":15,"author":{"gitId":"teojunda"},"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":"2024-03-02"},{"lineNumber":16,"author":{"gitId":"teojunda"},"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":"2024-03-02"},{"lineNumber":17,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":18,"author":{"gitId":"teojunda"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-03-02"},{"lineNumber":19,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":20,"author":{"gitId":"teojunda"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-03-02"},{"lineNumber":21,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":22,"author":{"gitId":"teojunda"},"content":"* **Project management**:","lastModifiedDate":"2024-03-02"},{"lineNumber":23,"author":{"gitId":"teojunda"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-03-02"},{"lineNumber":24,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":25,"author":{"gitId":"teojunda"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-03-02"},{"lineNumber":26,"author":{"gitId":"teojunda"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-03-02"},{"lineNumber":27,"author":{"gitId":"teojunda"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-03-02"},{"lineNumber":28,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":29,"author":{"gitId":"teojunda"},"content":"* **Documentation**:","lastModifiedDate":"2024-03-02"},{"lineNumber":30,"author":{"gitId":"teojunda"},"content":" * User Guide:","lastModifiedDate":"2024-03-02"},{"lineNumber":31,"author":{"gitId":"teojunda"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-03-02"},{"lineNumber":32,"author":{"gitId":"teojunda"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-03-02"},{"lineNumber":33,"author":{"gitId":"teojunda"},"content":" * Developer Guide:","lastModifiedDate":"2024-03-02"},{"lineNumber":34,"author":{"gitId":"teojunda"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-03-02"},{"lineNumber":35,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":36,"author":{"gitId":"teojunda"},"content":"* **Community**:","lastModifiedDate":"2024-03-02"},{"lineNumber":37,"author":{"gitId":"teojunda"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-03-02"},{"lineNumber":38,"author":{"gitId":"teojunda"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-03-02"},{"lineNumber":39,"author":{"gitId":"teojunda"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-03-02"},{"lineNumber":40,"author":{"gitId":"teojunda"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-03-02"},{"lineNumber":41,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":42,"author":{"gitId":"teojunda"},"content":"* **Tools**:","lastModifiedDate":"2024-03-02"},{"lineNumber":43,"author":{"gitId":"teojunda"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-03-02"},{"lineNumber":44,"author":{"gitId":"teojunda"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-03-02"},{"lineNumber":45,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":46,"author":{"gitId":"teojunda"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-03-02"}],"authorContributionMap":{"teojunda":46}},{"path":"src/main/java/seedu/address/commons/util/ToStringBuilder.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.commons.util;","lastModifiedDate":"2019-02-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":3,"author":{"gitId":"kailashgautham"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2019-02-23"},{"lineNumber":6,"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":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class ToStringBuilder {","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":" private static final String OBJECT_PREFIX \u003d \"{\";","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":" private static final String OBJECT_SUFFIX \u003d \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":" private static final String FIELD_SEPARATOR \u003d \", \";","lastModifiedDate":"2019-02-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":" private static final String FIELD_NAME_VALUE_SEPARATOR \u003d \"\u003d\";","lastModifiedDate":"2019-02-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private final StringBuilder stringBuilder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":" private boolean hasField;","lastModifiedDate":"2019-02-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Constructs a {@code ToStringBuilder} whose formatted output will be prefixed with {@code objectName}.","lastModifiedDate":"2019-02-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public ToStringBuilder(String objectName) {","lastModifiedDate":"2019-02-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":" stringBuilder.append(objectName).append(OBJECT_PREFIX);","lastModifiedDate":"2019-02-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Constructs a {@code ToStringBuilder} whose formatted output will be prefixed with the","lastModifiedDate":"2019-02-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * canonical class name of {@code object}.","lastModifiedDate":"2019-02-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public ToStringBuilder(Object object) {","lastModifiedDate":"2019-02-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" this(object.getClass().getCanonicalName());","lastModifiedDate":"2019-02-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Adds a field name/value pair to the output string.","lastModifiedDate":"2019-02-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2019-02-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * @param fieldName The name of the field.","lastModifiedDate":"2019-02-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * @param fieldValue The value of the field.","lastModifiedDate":"2019-02-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @return A reference to this {@code ToStringBuilder} object, allowing method calls to be chained.","lastModifiedDate":"2019-02-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public ToStringBuilder add(String fieldName, Object fieldValue) {","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"kailashgautham"},"content":" if (fieldValue instanceof Optional\u003c?\u003e) {","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"kailashgautham"},"content":" fieldValue \u003d ((Optional\u003c?\u003e) fieldValue).orElse(null);","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"-"},"content":" if (hasField) {","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" stringBuilder.append(FIELD_SEPARATOR);","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" stringBuilder.append(fieldName).append(FIELD_NAME_VALUE_SEPARATOR).append(fieldValue);","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" hasField \u003d true;","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Returns the built formatted string representation.","lastModifiedDate":"2019-02-23"},{"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 stringBuilder.toString() + OBJECT_SUFFIX;","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-02-23"}],"authorContributionMap":{"kailashgautham":5,"-":53}},{"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":"teojunda"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-22"},{"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":"-"},"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":"teojunda"},"content":" /**","lastModifiedDate":"2024-03-22"},{"lineNumber":38,"author":{"gitId":"teojunda"},"content":" * Retrieves the last viewed {@link Person} instance.","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"teojunda"},"content":" * \u003cp\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"teojunda"},"content":" * This method returns an {@link Optional} which will be empty if no person has","lastModifiedDate":"2024-03-22"},{"lineNumber":41,"author":{"gitId":"teojunda"},"content":" * been viewed last, or will contain a reference to the {@link Person} object","lastModifiedDate":"2024-03-22"},{"lineNumber":42,"author":{"gitId":"teojunda"},"content":" * that was last viewed.","lastModifiedDate":"2024-03-22"},{"lineNumber":43,"author":{"gitId":"teojunda"},"content":" *","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"teojunda"},"content":" * @return an {@link Optional} containing the last viewed {@link Person} if such","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"teojunda"},"content":" * a person exists, or an empty {@link Optional} if no person has been viewed last.","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"teojunda"},"content":" */","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"teojunda"},"content":" Optional\u003cPerson\u003e getLastViewedPerson();","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","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":" * Set the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"teojunda":13,"-":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":"teojunda"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"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":"teojunda"},"content":" @Override","lastModifiedDate":"2024-03-22"},{"lineNumber":76,"author":{"gitId":"teojunda"},"content":" public Optional\u003cPerson\u003e getLastViewedPerson() {","lastModifiedDate":"2024-03-22"},{"lineNumber":77,"author":{"gitId":"teojunda"},"content":" return model.getLastViewedPerson();","lastModifiedDate":"2024-03-22"},{"lineNumber":78,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":79,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-22"},{"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":{"teojunda":6,"-":88}},{"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":"kailashgautham"},"content":" .append(\"; Class/Group: \")","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"kailashgautham"},"content":" .append(person.getClassGroup())","lastModifiedDate":"2024-03-11"},{"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":"kailashgautham"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"kailashgautham"},"content":" .append(person.getPhone())","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"kailashgautham"},"content":" .append(\"; Telegram: \")","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"kailashgautham"},"content":" .append(person.getTelegram().isPresent() ? person.getTelegram().get().telegramId : \"\")","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"kailashgautham"},"content":" .append(\"; Github: \")","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"kailashgautham"},"content":" .append(person.getGithub().isPresent() ? person.getGithub().get().githubId : \"\");","lastModifiedDate":"2024-03-11"},{"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":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"kailashgautham":8,"-":45}},{"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":"kailashgautham"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CLASS_GROUP;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":6,"author":{"gitId":"kailashgautham"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GITHUB;","lastModifiedDate":"2024-03-11"},{"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":"kailashgautham"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":11,"author":{"gitId":"kailashgautham"},"content":"import java.util.logging.Level;","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"kailashgautham"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"kailashgautham"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-24"},{"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":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-01-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"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":"kailashgautham"},"content":" public static final String COMMAND_WORD \u003d \"ac\";","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"kailashgautham"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a person to the TA Toolkit. \"","lastModifiedDate":"2024-03-11"},{"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":"kailashgautham"},"content":" + PREFIX_CLASS_GROUP + \"CLASS/GROUP \"","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09"},{"lineNumber":33,"author":{"gitId":"kailashgautham"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"kailashgautham"},"content":" + \"[\" + PREFIX_TELEGRAM + \"TELEGRAM ID] \"","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"kailashgautham"},"content":" + \"[\" + PREFIX_GITHUB + \"GITHUB ID]...\\n\"","lastModifiedDate":"2024-03-11"},{"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":"kailashgautham"},"content":" + PREFIX_CLASS_GROUP + \"F14-3 \"","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"kailashgautham"},"content":" + PREFIX_EMAIL + \"johndoe@gmail.com \"","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"kailashgautham"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"kailashgautham"},"content":" + PREFIX_TELEGRAM + \"@johndoe \"","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"kailashgautham"},"content":" + PREFIX_GITHUB + \"johnDoeGithub \";","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: %1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"teojunda"},"content":" public static final String MESSAGE_DUPLICATE_FIELD \u003d \"This person contains duplicate fields\"","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"teojunda"},"content":" + \"(Email, Phone, Telegram, or Github) with another person.\";","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"kailashgautham"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddCommand.class);","lastModifiedDate":"2024-03-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":55,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":56,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10"},{"lineNumber":57,"author":{"gitId":"kailashgautham"},"content":" logger.log(Level.INFO, \"AddCommand created with Person: \" + person.toString());","lastModifiedDate":"2024-03-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":64,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":65,"author":{"gitId":"teojunda"},"content":" throw new CommandException(MESSAGE_DUPLICATE_FIELD);","lastModifiedDate":"2024-03-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"kailashgautham":20,"teojunda":3,"-":70}},{"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":"g-tejas"},"content":" public static final String COMMAND_WORD \u003d \"dc\";","lastModifiedDate":"2024-03-14"},{"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":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Person: %1$s\";","lastModifiedDate":"2016-08-24"},{"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":"teojunda"},"content":" updateLastViewedPersonIfNecessary(personToDelete, model);","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-22"},{"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":"teojunda"},"content":" private void updateLastViewedPersonIfNecessary(Person personToDelete, Model model) {","lastModifiedDate":"2024-03-22"},{"lineNumber":51,"author":{"gitId":"teojunda"},"content":" model.getLastViewedPerson()","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"teojunda"},"content":" .filter(lastViewedPerson -\u003e lastViewedPerson.equals(personToDelete))","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"teojunda"},"content":" .ifPresent(lastViewedPerson -\u003e model.resetLastViewedPerson());","lastModifiedDate":"2024-03-22"},{"lineNumber":54,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":55,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return true;","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":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (!(other instanceof DeleteCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return targetIndex.equals(otherDeleteCommand.targetIndex);","lastModifiedDate":"2023-07-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2019-02-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"teojunda":8,"g-tejas":1,"-":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":"teojunda"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CLASS_GROUP;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":6,"author":{"gitId":"teojunda"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GITHUB;","lastModifiedDate":"2024-03-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":"teojunda"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26"},{"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.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":21,"author":{"gitId":"kailashgautham"},"content":"import seedu.address.model.person.ClassGroup;","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26"},{"lineNumber":23,"author":{"gitId":"kailashgautham"},"content":"import seedu.address.model.person.Github;","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-26"},{"lineNumber":27,"author":{"gitId":"kailashgautham"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":34,"author":{"gitId":"teojunda"},"content":" public static final String COMMAND_WORD \u003d \"uc\";","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":36,"author":{"gitId":"teojunda"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Updates the details of the person identified \"","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01"},{"lineNumber":38,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26"},{"lineNumber":39,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06"},{"lineNumber":40,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06"},{"lineNumber":41,"author":{"gitId":"teojunda"},"content":" + \"[\" + PREFIX_CLASS_GROUP + \"CLASS/GROUP] \"","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":43,"author":{"gitId":"teojunda"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"teojunda"},"content":" + \"[\" + PREFIX_TELEGRAM + \"TELEGRAM ID] \"","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"teojunda"},"content":" + \"[\" + PREFIX_GITHUB + \"GITHUB ID]...\\n\"","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":50,"author":{"gitId":"teojunda"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Updated Person: %1$s\";","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"teojunda"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to update must be provided.\";","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"teojunda"},"content":" public static final String MESSAGE_NO_CHANGE \u003d \"The updated person is the same as the original person\";","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"teojunda"},"content":" public static final String MESSAGE_DUPLICATE_FIELD \u003d \"The updated person contains duplicate fields\"","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"teojunda"},"content":" + \"(Email, Phone, Telegram, or Github) with another person.\";","lastModifiedDate":"2024-03-14"},{"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":"teojunda"},"content":" updatePerson(personToEdit, editedPerson, model);","lastModifiedDate":"2024-03-22"},{"lineNumber":83,"author":{"gitId":"teojunda"},"content":" updateLastViewedPersonIfNecessary(personToEdit, editedPerson, model);","lastModifiedDate":"2024-03-22"},{"lineNumber":84,"author":{"gitId":"teojunda"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2024-03-22"},{"lineNumber":85,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":87,"author":{"gitId":"teojunda"},"content":" private void updatePerson(Person personToEdit, Person editedPerson, Model model) throws CommandException {","lastModifiedDate":"2024-03-22"},{"lineNumber":88,"author":{"gitId":"teojunda"},"content":" if (personToEdit.equals(editedPerson)) {","lastModifiedDate":"2024-03-13"},{"lineNumber":89,"author":{"gitId":"teojunda"},"content":" throw new CommandException(MESSAGE_NO_CHANGE);","lastModifiedDate":"2024-03-13"},{"lineNumber":90,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":91,"author":{"gitId":"teojunda"},"content":" model.deletePerson(personToEdit);","lastModifiedDate":"2024-03-13"},{"lineNumber":92,"author":{"gitId":"teojunda"},"content":" if (model.hasPerson(editedPerson)) {","lastModifiedDate":"2024-03-13"},{"lineNumber":93,"author":{"gitId":"teojunda"},"content":" model.addPersonKeepFilter(personToEdit);","lastModifiedDate":"2024-03-14"},{"lineNumber":94,"author":{"gitId":"teojunda"},"content":" throw new CommandException(MESSAGE_DUPLICATE_FIELD);","lastModifiedDate":"2024-03-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":96,"author":{"gitId":"teojunda"},"content":" model.addPersonKeepFilter(editedPerson);","lastModifiedDate":"2024-03-14"},{"lineNumber":97,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":99,"author":{"gitId":"teojunda"},"content":" private void updateLastViewedPersonIfNecessary(Person personToEdit, Person editedPerson, Model model) {","lastModifiedDate":"2024-03-22"},{"lineNumber":100,"author":{"gitId":"teojunda"},"content":" model.getLastViewedPerson()","lastModifiedDate":"2024-03-22"},{"lineNumber":101,"author":{"gitId":"teojunda"},"content":" .filter(lastViewedPerson -\u003e lastViewedPerson.equals(personToEdit))","lastModifiedDate":"2024-03-22"},{"lineNumber":102,"author":{"gitId":"teojunda"},"content":" .ifPresent(lastViewedPerson -\u003e model.updateLastViewedPerson(editedPerson));","lastModifiedDate":"2024-03-22"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":105,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26"},{"lineNumber":108,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":109,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":112,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":113,"author":{"gitId":"kailashgautham"},"content":" ClassGroup updatedClassGroup \u003d editPersonDescriptor.getClassGroup().orElse(personToEdit.getClassGroup());","lastModifiedDate":"2024-03-11"},{"lineNumber":114,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":115,"author":{"gitId":"kailashgautham"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2024-03-11"},{"lineNumber":116,"author":{"gitId":"kailashgautham"},"content":" Optional\u003cTelegram\u003e updatedTelegram \u003d editPersonDescriptor.getTelegram().isPresent()","lastModifiedDate":"2024-03-11"},{"lineNumber":117,"author":{"gitId":"kailashgautham"},"content":" ? editPersonDescriptor.getTelegram() : personToEdit.getTelegram();","lastModifiedDate":"2024-03-11"},{"lineNumber":118,"author":{"gitId":"kailashgautham"},"content":" Optional\u003cGithub\u003e updatedGithub \u003d editPersonDescriptor.getGithub().isPresent()","lastModifiedDate":"2024-03-11"},{"lineNumber":119,"author":{"gitId":"kailashgautham"},"content":" ? editPersonDescriptor.getGithub() : personToEdit.getGithub();","lastModifiedDate":"2024-03-11"},{"lineNumber":120,"author":{"gitId":"kailashgautham"},"content":" return new Person(updatedName, updatedClassGroup, updatedEmail,","lastModifiedDate":"2024-03-11"},{"lineNumber":121,"author":{"gitId":"kailashgautham"},"content":" updatedPhone, updatedTelegram, updatedGithub);","lastModifiedDate":"2024-03-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":124,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" return true;","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":" // instanceof handles nulls","lastModifiedDate":"2017-05-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":136,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13"},{"lineNumber":137,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":149,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26"},{"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":"kailashgautham"},"content":" private ClassGroup classGroup;","lastModifiedDate":"2024-03-11"},{"lineNumber":155,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":156,"author":{"gitId":"kailashgautham"},"content":" private Phone phone;","lastModifiedDate":"2024-03-11"},{"lineNumber":157,"author":{"gitId":"kailashgautham"},"content":" private Optional\u003cTelegram\u003e telegram;","lastModifiedDate":"2024-03-11"},{"lineNumber":158,"author":{"gitId":"kailashgautham"},"content":" private Optional\u003cGithub\u003e github;","lastModifiedDate":"2024-03-11"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":160,"author":{"gitId":"kailashgautham"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":161,"author":{"gitId":"kailashgautham"},"content":" * Creates a new EditPersonDescriptor with empty fields.","lastModifiedDate":"2024-03-11"},{"lineNumber":162,"author":{"gitId":"kailashgautham"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":163,"author":{"gitId":"kailashgautham"},"content":" public EditPersonDescriptor() {","lastModifiedDate":"2024-03-11"},{"lineNumber":164,"author":{"gitId":"kailashgautham"},"content":" telegram \u003d Optional.empty();","lastModifiedDate":"2024-03-11"},{"lineNumber":165,"author":{"gitId":"kailashgautham"},"content":" github \u003d Optional.empty();","lastModifiedDate":"2024-03-11"},{"lineNumber":166,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":168,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":169,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11"},{"lineNumber":170,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":171,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":172,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26"},{"lineNumber":173,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15"},{"lineNumber":174,"author":{"gitId":"kailashgautham"},"content":" setClassGroup(toCopy.classGroup);","lastModifiedDate":"2024-03-11"},{"lineNumber":175,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15"},{"lineNumber":176,"author":{"gitId":"kailashgautham"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2024-03-11"},{"lineNumber":177,"author":{"gitId":"kailashgautham"},"content":" setTelegram(toCopy.telegram);","lastModifiedDate":"2024-03-11"},{"lineNumber":178,"author":{"gitId":"kailashgautham"},"content":" setGithub(toCopy.github);","lastModifiedDate":"2024-03-11"},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":181,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":182,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26"},{"lineNumber":183,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":184,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26"},{"lineNumber":185,"author":{"gitId":"kailashgautham"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, classGroup)","lastModifiedDate":"2024-03-11"},{"lineNumber":186,"author":{"gitId":"kailashgautham"},"content":" || (github.isPresent() || telegram.isPresent());","lastModifiedDate":"2024-03-11"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":189,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21"},{"lineNumber":190,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21"},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":193,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":194,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":197,"author":{"gitId":"kailashgautham"},"content":" public void setClassGroup(ClassGroup classGroup) {","lastModifiedDate":"2024-03-11"},{"lineNumber":198,"author":{"gitId":"kailashgautham"},"content":" this.classGroup \u003d classGroup;","lastModifiedDate":"2024-03-11"},{"lineNumber":199,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":201,"author":{"gitId":"kailashgautham"},"content":" public Optional\u003cClassGroup\u003e getClassGroup() {","lastModifiedDate":"2024-03-11"},{"lineNumber":202,"author":{"gitId":"kailashgautham"},"content":" return Optional.ofNullable(classGroup);","lastModifiedDate":"2024-03-11"},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":205,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21"},{"lineNumber":206,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21"},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":209,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":210,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21"},{"lineNumber":211,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":213,"author":{"gitId":"kailashgautham"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2024-03-11"},{"lineNumber":214,"author":{"gitId":"kailashgautham"},"content":" this.phone \u003d phone;","lastModifiedDate":"2024-03-11"},{"lineNumber":215,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":217,"author":{"gitId":"kailashgautham"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2024-03-11"},{"lineNumber":218,"author":{"gitId":"kailashgautham"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2024-03-11"},{"lineNumber":219,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":221,"author":{"gitId":"kailashgautham"},"content":" public void setTelegram(Optional\u003cTelegram\u003e telegram) {","lastModifiedDate":"2024-03-11"},{"lineNumber":222,"author":{"gitId":"kailashgautham"},"content":" this.telegram \u003d telegram;","lastModifiedDate":"2024-03-11"},{"lineNumber":223,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":225,"author":{"gitId":"kailashgautham"},"content":" public Optional\u003cTelegram\u003e getTelegram() {","lastModifiedDate":"2024-03-11"},{"lineNumber":226,"author":{"gitId":"kailashgautham"},"content":" return telegram;","lastModifiedDate":"2024-03-11"},{"lineNumber":227,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":228,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":229,"author":{"gitId":"kailashgautham"},"content":" public void setGithub(Optional\u003cGithub\u003e github) {","lastModifiedDate":"2024-03-11"},{"lineNumber":230,"author":{"gitId":"kailashgautham"},"content":" this.github \u003d github;","lastModifiedDate":"2024-03-11"},{"lineNumber":231,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":232,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":233,"author":{"gitId":"kailashgautham"},"content":" public Optional\u003cGithub\u003e getGithub() {","lastModifiedDate":"2024-03-11"},{"lineNumber":234,"author":{"gitId":"kailashgautham"},"content":" return github;","lastModifiedDate":"2024-03-11"},{"lineNumber":235,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":237,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":238,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":239,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":240,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":241,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":243,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":244,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05"},{"lineNumber":245,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":246,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":247,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":248,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":249,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":250,"author":{"gitId":"kailashgautham"},"content":" \u0026\u0026 Objects.equals(classGroup, otherEditPersonDescriptor.classGroup)","lastModifiedDate":"2024-03-11"},{"lineNumber":251,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":252,"author":{"gitId":"kailashgautham"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2024-03-11"},{"lineNumber":253,"author":{"gitId":"kailashgautham"},"content":" \u0026\u0026 Objects.equals(telegram, otherEditPersonDescriptor.telegram)","lastModifiedDate":"2024-03-11"},{"lineNumber":254,"author":{"gitId":"kailashgautham"},"content":" \u0026\u0026 Objects.equals(github, otherEditPersonDescriptor.github);","lastModifiedDate":"2024-03-11"},{"lineNumber":255,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":261,"author":{"gitId":"kailashgautham"},"content":" .add(\"classGroup\", classGroup)","lastModifiedDate":"2024-03-11"},{"lineNumber":262,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":263,"author":{"gitId":"kailashgautham"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2024-03-11"},{"lineNumber":264,"author":{"gitId":"kailashgautham"},"content":" .add(\"telegram\", telegram)","lastModifiedDate":"2024-03-11"},{"lineNumber":265,"author":{"gitId":"kailashgautham"},"content":" .add(\"github\", github)","lastModifiedDate":"2024-03-11"},{"lineNumber":266,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":268,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":269,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"kailashgautham":56,"teojunda":32,"-":181}},{"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":"g-tejas"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"g-tejas"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":9,"author":{"gitId":"g-tejas"},"content":"import seedu.address.model.person.ListCommandPredicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"g-tejas"},"content":" * Lists students in the TA Toolkit to the user.","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2016-09-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"g-tejas"},"content":" public static final String COMMAND_WORD \u003d \"ls\";","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"g-tejas"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": List all students or students from a specific \"","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"g-tejas"},"content":" + \"class group given the class group identifier and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"g-tejas"},"content":" + \"Parameters: [CLASSGROUP_ID] (must be a valid class group identifier)\\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"g-tejas"},"content":" + \"Example: \" + COMMAND_WORD + \" F14-3\";","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"g-tejas"},"content":" public static final String MESSAGE_LIST_ALL_SUCCESS \u003d \"Listed all %1$d students\";","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"g-tejas"},"content":" public static final String MESSAGE_LIST_CLASS_SUCCESS \u003d \"Listed %1$d students from class groups: %2$s\";","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"g-tejas"},"content":" private final ListCommandPredicate predicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"g-tejas"},"content":" public ListCommand(ListCommandPredicate predicate) {","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"g-tejas"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"g-tejas"},"content":" }","lastModifiedDate":"2024-03-16"},{"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) {","lastModifiedDate":"2019-01-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":37,"author":{"gitId":"g-tejas"},"content":" model.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"g-tejas"},"content":" if (predicate.getClassGroups().isEmpty()) {","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"g-tejas"},"content":" return new CommandResult(","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"g-tejas"},"content":" String.format(MESSAGE_LIST_ALL_SUCCESS, model.getFilteredPersonList().size()));","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"g-tejas"},"content":" } else {","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"g-tejas"},"content":" String classGroupsString \u003d predicate.getClassGroups().get()","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"g-tejas"},"content":" .stream()","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"g-tejas"},"content":" .map(Object::toString)","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"g-tejas"},"content":" .collect(Collectors.joining(\", \"));","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"g-tejas"},"content":" return new CommandResult(String.format(MESSAGE_LIST_CLASS_SUCCESS,","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"g-tejas"},"content":" model.getFilteredPersonList().size(), classGroupsString));","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"g-tejas"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"g-tejas"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"g-tejas"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"g-tejas"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"g-tejas"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"g-tejas"},"content":" return true;","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"g-tejas"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"g-tejas"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"g-tejas"},"content":" if (!(other instanceof ListCommand)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"g-tejas"},"content":" return false;","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"g-tejas"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"g-tejas"},"content":" ListCommand otherListCommand \u003d (ListCommand) other;","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"g-tejas"},"content":" return predicate.equals(otherListCommand.predicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"g-tejas"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"g-tejas"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"g-tejas"},"content":" public String toString() {","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"g-tejas"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"g-tejas"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"g-tejas"},"content":" .toString();","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"g-tejas":54,"-":19}},{"path":"src/main/java/seedu/address/logic/commands/ViewCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"YuSoonZ"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"YuSoonZ"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"YuSoonZ"},"content":"import java.util.List;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"YuSoonZ"},"content":"import java.util.logging.Level;","lastModifiedDate":"2024-03-24"},{"lineNumber":7,"author":{"gitId":"YuSoonZ"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-24"},{"lineNumber":8,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"YuSoonZ"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-24"},{"lineNumber":10,"author":{"gitId":"YuSoonZ"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"YuSoonZ"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"YuSoonZ"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"YuSoonZ"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"YuSoonZ"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"YuSoonZ"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"YuSoonZ"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"YuSoonZ"},"content":" * Views details of a person in the address book identified using its displayed index from the address book.","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"YuSoonZ"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"YuSoonZ"},"content":"public class ViewCommand extends Command {","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"YuSoonZ"},"content":" public static final String COMMAND_WORD \u003d \"view\";","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"YuSoonZ"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"YuSoonZ"},"content":" + \": View the person identified by the index number used in the displayed person list.\\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"YuSoonZ"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"YuSoonZ"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"YuSoonZ"},"content":" public static final String MESSAGE_VIEW_PERSON_SUCCESS \u003d \"View Person: %1$s\";","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"YuSoonZ"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ViewCommand.class);","lastModifiedDate":"2024-03-24"},{"lineNumber":31,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":32,"author":{"gitId":"YuSoonZ"},"content":" private final Index targetIndex;","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"YuSoonZ"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"YuSoonZ"},"content":" * Constructs a ViewCommand with the specified index.","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"YuSoonZ"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"YuSoonZ"},"content":" * @param targetIndex Index of the person to view.","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"YuSoonZ"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"YuSoonZ"},"content":" public ViewCommand(Index targetIndex) {","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"YuSoonZ"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"YuSoonZ"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"YuSoonZ"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"YuSoonZ"},"content":" * Executes the view command to display details of the person specified by the index.","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"YuSoonZ"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"YuSoonZ"},"content":" * @param model {@code Model} which the command should operate on.","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"YuSoonZ"},"content":" * @return The command result indicating the success of the execution.","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"YuSoonZ"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"YuSoonZ"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"YuSoonZ"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"YuSoonZ"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"YuSoonZ"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"YuSoonZ"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"YuSoonZ"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"YuSoonZ"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"YuSoonZ"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"YuSoonZ"},"content":" Person personToView \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"YuSoonZ"},"content":" logger.log(Level.INFO, \"View command created with index: \" + targetIndex);","lastModifiedDate":"2024-03-24"},{"lineNumber":60,"author":{"gitId":"teojunda"},"content":" model.updateLastViewedPerson(personToView);","lastModifiedDate":"2024-03-22"},{"lineNumber":61,"author":{"gitId":"YuSoonZ"},"content":" return new CommandResult(String.format(MESSAGE_VIEW_PERSON_SUCCESS, Messages.format(personToView)));","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"YuSoonZ"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"hiivan"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"hiivan"},"content":" * Gets targetIndex.","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"hiivan"},"content":" *","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"hiivan"},"content":" * @return targetIndex","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"hiivan"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"hiivan"},"content":" public Index getTargetIndex() {","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"hiivan"},"content":" return targetIndex;","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"YuSoonZ"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"YuSoonZ"},"content":" * Checks if this ViewCommand is equal to another object.","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"YuSoonZ"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"YuSoonZ"},"content":" * @param other The other object to compare with.","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"YuSoonZ"},"content":" * @return True if the objects are equal, false otherwise.","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"YuSoonZ"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"YuSoonZ"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"YuSoonZ"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"YuSoonZ"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"YuSoonZ"},"content":" return true;","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"YuSoonZ"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"YuSoonZ"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"YuSoonZ"},"content":" if (!(other instanceof ViewCommand)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"YuSoonZ"},"content":" return false;","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"YuSoonZ"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"YuSoonZ"},"content":" ViewCommand otherViewCommand \u003d (ViewCommand) other;","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"YuSoonZ"},"content":" return targetIndex.equals(otherViewCommand.targetIndex);","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"YuSoonZ"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"YuSoonZ"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"YuSoonZ"},"content":" * Generates a string representation of this ViewCommand.","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"YuSoonZ"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"YuSoonZ"},"content":" * @return The string representation of this ViewCommand.","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"YuSoonZ"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"YuSoonZ"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"YuSoonZ"},"content":" public String toString() {","lastModifiedDate":"2024-03-18"},{"lineNumber":101,"author":{"gitId":"YuSoonZ"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-18"},{"lineNumber":102,"author":{"gitId":"YuSoonZ"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2024-03-18"},{"lineNumber":103,"author":{"gitId":"YuSoonZ"},"content":" .toString();","lastModifiedDate":"2024-03-18"},{"lineNumber":104,"author":{"gitId":"YuSoonZ"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":105,"author":{"gitId":"YuSoonZ"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"YuSoonZ":95,"teojunda":1,"hiivan":9}},{"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":"kailashgautham"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CLASS_GROUP;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05"},{"lineNumber":6,"author":{"gitId":"kailashgautham"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GITHUB;","lastModifiedDate":"2024-03-11"},{"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":"kailashgautham"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":11,"author":{"gitId":"kailashgautham"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":16,"author":{"gitId":"kailashgautham"},"content":"import seedu.address.model.person.ClassGroup;","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17"},{"lineNumber":18,"author":{"gitId":"kailashgautham"},"content":"import seedu.address.model.person.Github;","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-03-17"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-03-17"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-03-17"},{"lineNumber":22,"author":{"gitId":"kailashgautham"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05"},{"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-02-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":35,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":36,"author":{"gitId":"kailashgautham"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_CLASS_GROUP, PREFIX_EMAIL,","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"kailashgautham"},"content":" PREFIX_PHONE, PREFIX_TELEGRAM, PREFIX_GITHUB);","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"kailashgautham"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_CLASS_GROUP, PREFIX_EMAIL, PREFIX_PHONE)","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":43,"author":{"gitId":"kailashgautham"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_CLASS_GROUP,","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"kailashgautham"},"content":" PREFIX_EMAIL, PREFIX_PHONE, PREFIX_TELEGRAM, PREFIX_GITHUB);","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":46,"author":{"gitId":"kailashgautham"},"content":" ClassGroup classGroup \u003d ParserUtil.parseClassGroup(argMultimap.getValue(PREFIX_CLASS_GROUP).get());","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":48,"author":{"gitId":"kailashgautham"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"kailashgautham"},"content":" Optional\u003cTelegram\u003e telegram \u003d ParserUtil.parseTelegram(argMultimap.getValue(PREFIX_TELEGRAM).orElse(\"\"));","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"kailashgautham"},"content":" Optional\u003cGithub\u003e github \u003d ParserUtil.parseGithub(argMultimap.getValue(PREFIX_GITHUB).orElse(\"\"));","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":52,"author":{"gitId":"kailashgautham"},"content":" Person person \u003d new Person(name, classGroup, email, phone, telegram, github);","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17"},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":61,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"kailashgautham":17,"-":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":"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":"YuSoonZ"},"content":"import seedu.address.logic.commands.ViewCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24"},{"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":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":50,"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":51,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":73,"author":{"gitId":"g-tejas"},"content":" return new ListCommandParser().parse(arguments);","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":81,"author":{"gitId":"YuSoonZ"},"content":" case ViewCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"YuSoonZ"},"content":" return new ViewCommandParser().parse(arguments);","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26"},{"lineNumber":85,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29"},{"lineNumber":86,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11"},{"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":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"YuSoonZ":4,"g-tejas":1,"-":85}},{"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":"kailashgautham"},"content":" public static final Prefix PREFIX_CLASS_GROUP \u003d new Prefix(\"c/\");","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":12,"author":{"gitId":"kailashgautham"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"kailashgautham"},"content":" public static final Prefix PREFIX_TELEGRAM \u003d new Prefix(\"t/\");","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"kailashgautham"},"content":" public static final Prefix PREFIX_GITHUB \u003d new Prefix(\"g/\");","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"kailashgautham":4,"-":12}},{"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":"kailashgautham"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CLASS_GROUP;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-01-26"},{"lineNumber":7,"author":{"gitId":"kailashgautham"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GITHUB;","lastModifiedDate":"2024-03-11"},{"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":"kailashgautham"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":28,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":31,"author":{"gitId":"kailashgautham"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_CLASS_GROUP,","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"kailashgautham"},"content":" PREFIX_EMAIL, PREFIX_PHONE, PREFIX_TELEGRAM, PREFIX_GITHUB);","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06"},{"lineNumber":38,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10"},{"lineNumber":39,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":42,"author":{"gitId":"teojunda"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_CLASS_GROUP, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"teojunda"},"content":" PREFIX_TELEGRAM, PREFIX_GITHUB);","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":45,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-01-26"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":47,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":48,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":50,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":51,"author":{"gitId":"-"},"content":" editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":56,"author":{"gitId":"kailashgautham"},"content":" if (argMultimap.getValue(PREFIX_CLASS_GROUP).isPresent()) {","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"kailashgautham"},"content":" editPersonDescriptor.setClassGroup(","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"kailashgautham"},"content":" ParserUtil.parseClassGroup(argMultimap.getValue(PREFIX_CLASS_GROUP).get()));","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"kailashgautham"},"content":" if (argMultimap.getValue(PREFIX_TELEGRAM).isPresent()) {","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"kailashgautham"},"content":" editPersonDescriptor.setTelegram(","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"kailashgautham"},"content":" ParserUtil.parseTelegram(argMultimap.getValue(PREFIX_TELEGRAM).orElse(\"\")));","lastModifiedDate":"2024-03-13"},{"lineNumber":63,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"kailashgautham"},"content":" if (argMultimap.getValue(PREFIX_GITHUB).isPresent()) {","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"kailashgautham"},"content":" editPersonDescriptor.setGithub(","lastModifiedDate":"2024-03-11"},{"lineNumber":66,"author":{"gitId":"kailashgautham"},"content":" ParserUtil.parseGithub(argMultimap.getValue(PREFIX_GITHUB).orElse(\"\")));","lastModifiedDate":"2024-03-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"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"}],"authorContributionMap":{"kailashgautham":17,"teojunda":2,"-":56}},{"path":"src/main/java/seedu/address/logic/parser/ListCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"g-tejas"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"g-tejas"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"g-tejas"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"g-tejas"},"content":"import java.util.List;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"g-tejas"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"g-tejas"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"g-tejas"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"g-tejas"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"g-tejas"},"content":"import seedu.address.model.person.ClassGroup;","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"g-tejas"},"content":"import seedu.address.model.person.ListCommandPredicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"g-tejas"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"g-tejas"},"content":" * Parses input arguments and creates a new ListCommand object","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"g-tejas"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"g-tejas"},"content":"public class ListCommandParser implements Parser\u003cListCommand\u003e {","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"g-tejas"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"g-tejas"},"content":" * Parses the given {@code String} of arguments in the context of the ListCommand","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"g-tejas"},"content":" * and returns a ListCommand object for execution.","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"g-tejas"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"g-tejas"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"g-tejas"},"content":" public ListCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"g-tejas"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"g-tejas"},"content":" if (!trimmedArgs.isEmpty()) {","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"g-tejas"},"content":" String[] classGroups \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"g-tejas"},"content":" List\u003cClassGroup\u003e groups;","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"g-tejas"},"content":" try {","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"g-tejas"},"content":" groups \u003d Arrays.stream(classGroups).map(ClassGroup::new).collect(Collectors.toList());","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"g-tejas"},"content":" } catch (IllegalArgumentException err) {","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"g-tejas"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"g-tejas"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, ListCommand.MESSAGE_USAGE)","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"g-tejas"},"content":" );","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"g-tejas"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"g-tejas"},"content":" return new ListCommand(new ListCommandPredicate(Optional.of(groups)));","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"g-tejas"},"content":" } else {","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"g-tejas"},"content":" return new ListCommand(new ListCommandPredicate(Optional.empty()));","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"g-tejas"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"g-tejas"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"g-tejas"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"g-tejas":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":"kailashgautham"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"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.StringUtil;","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-02-11"},{"lineNumber":11,"author":{"gitId":"kailashgautham"},"content":"import seedu.address.model.person.ClassGroup;","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11"},{"lineNumber":13,"author":{"gitId":"kailashgautham"},"content":"import seedu.address.model.person.Github;","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-02-11"},{"lineNumber":16,"author":{"gitId":"kailashgautham"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-03-11"},{"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":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":31,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02"},{"lineNumber":33,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":35,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29"},{"lineNumber":41,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":48,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"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":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":60,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30"},{"lineNumber":61,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":62,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":63,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30"},{"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":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30"},{"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":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":75,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30"},{"lineNumber":76,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":78,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30"},{"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":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30"},{"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":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":90,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":91,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":92,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":93,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":95,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":98,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":99,"author":{"gitId":"kailashgautham"},"content":" * Parses a {@code String classGroup} into an {@code ClassGroup}.","lastModifiedDate":"2024-03-11"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-11"},{"lineNumber":101,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":102,"author":{"gitId":"kailashgautham"},"content":" * @throws ParseException if the given {@code classGroup} is invalid.","lastModifiedDate":"2024-03-11"},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":104,"author":{"gitId":"kailashgautham"},"content":" public static ClassGroup parseClassGroup(String classGroup) throws ParseException {","lastModifiedDate":"2024-03-11"},{"lineNumber":105,"author":{"gitId":"kailashgautham"},"content":" requireNonNull(classGroup);","lastModifiedDate":"2024-03-11"},{"lineNumber":106,"author":{"gitId":"kailashgautham"},"content":" String trimmedClassGroup \u003d classGroup.trim();","lastModifiedDate":"2024-03-11"},{"lineNumber":107,"author":{"gitId":"kailashgautham"},"content":" if (!ClassGroup.isValidClassGroup(trimmedClassGroup)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":108,"author":{"gitId":"kailashgautham"},"content":" throw new ParseException(ClassGroup.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-11"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":110,"author":{"gitId":"kailashgautham"},"content":" return new ClassGroup(trimmedClassGroup);","lastModifiedDate":"2024-03-11"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":113,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":114,"author":{"gitId":"kailashgautham"},"content":" * Parses a {@code String telegram} into an {@code Telegram}.","lastModifiedDate":"2024-03-11"},{"lineNumber":115,"author":{"gitId":"kailashgautham"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-11"},{"lineNumber":116,"author":{"gitId":"kailashgautham"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":117,"author":{"gitId":"kailashgautham"},"content":" * @throws ParseException if the given {@code telegram} is invalid.","lastModifiedDate":"2024-03-11"},{"lineNumber":118,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":119,"author":{"gitId":"kailashgautham"},"content":" public static Optional\u003cTelegram\u003e parseTelegram(String telegram) throws ParseException {","lastModifiedDate":"2024-03-13"},{"lineNumber":120,"author":{"gitId":"kailashgautham"},"content":" if (telegram.isEmpty()) {","lastModifiedDate":"2024-03-11"},{"lineNumber":121,"author":{"gitId":"kailashgautham"},"content":" return Optional.of(Telegram.EMPTY);","lastModifiedDate":"2024-03-13"},{"lineNumber":122,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":123,"author":{"gitId":"kailashgautham"},"content":" String trimmedTelegram \u003d telegram.trim();","lastModifiedDate":"2024-03-11"},{"lineNumber":124,"author":{"gitId":"kailashgautham"},"content":" if (!Telegram.isValidTelegram(trimmedTelegram)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":125,"author":{"gitId":"kailashgautham"},"content":" throw new ParseException(Telegram.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-11"},{"lineNumber":126,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":127,"author":{"gitId":"kailashgautham"},"content":" return Optional.of(new Telegram(trimmedTelegram));","lastModifiedDate":"2024-03-13"},{"lineNumber":128,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":129,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":130,"author":{"gitId":"kailashgautham"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":131,"author":{"gitId":"kailashgautham"},"content":" * Parses a {@code String github} into an {@code Github}.","lastModifiedDate":"2024-03-11"},{"lineNumber":132,"author":{"gitId":"kailashgautham"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-11"},{"lineNumber":133,"author":{"gitId":"kailashgautham"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":134,"author":{"gitId":"kailashgautham"},"content":" * @throws ParseException if the given {@code github} is invalid.","lastModifiedDate":"2024-03-11"},{"lineNumber":135,"author":{"gitId":"kailashgautham"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":136,"author":{"gitId":"kailashgautham"},"content":" public static Optional\u003cGithub\u003e parseGithub(String github) throws ParseException {","lastModifiedDate":"2024-03-13"},{"lineNumber":137,"author":{"gitId":"kailashgautham"},"content":" if (github.isEmpty()) {","lastModifiedDate":"2024-03-11"},{"lineNumber":138,"author":{"gitId":"kailashgautham"},"content":" return Optional.of(Github.EMPTY);","lastModifiedDate":"2024-03-13"},{"lineNumber":139,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":140,"author":{"gitId":"kailashgautham"},"content":" String trimmedGithub \u003d github.trim();","lastModifiedDate":"2024-03-11"},{"lineNumber":141,"author":{"gitId":"kailashgautham"},"content":" if (!Github.isValidGithub(trimmedGithub)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":142,"author":{"gitId":"kailashgautham"},"content":" throw new ParseException(ClassGroup.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-11"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":144,"author":{"gitId":"kailashgautham"},"content":" return Optional.of(new Github(trimmedGithub));","lastModifiedDate":"2024-03-13"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":146,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"kailashgautham":41,"-":105}},{"path":"src/main/java/seedu/address/logic/parser/ViewCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"YuSoonZ"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"YuSoonZ"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"YuSoonZ"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"YuSoonZ"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"YuSoonZ"},"content":"import seedu.address.logic.commands.ViewCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"YuSoonZ"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"YuSoonZ"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"YuSoonZ"},"content":" * Parses input arguments and creates a new ViewCommand object.","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"YuSoonZ"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"YuSoonZ"},"content":"public class ViewCommandParser implements Parser\u003cViewCommand\u003e {","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"YuSoonZ"},"content":" public static final String MESSAGE_ONE_BASED_INDEXING \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"YuSoonZ"},"content":" \"Please input a 1-based index.\";","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"YuSoonZ"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"YuSoonZ"},"content":" * Parses the given {@code String} of arguments in the context of the ViewCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"YuSoonZ"},"content":" * and returns a ViewCommand object for execution.","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"YuSoonZ"},"content":" * @param args The user input arguments.","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"YuSoonZ"},"content":" * @return A ViewCommand object representing the parsed command.","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"YuSoonZ"},"content":" * @throws ParseException if the user input does not conform to the expected format","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"YuSoonZ"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"YuSoonZ"},"content":" public ViewCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"YuSoonZ"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"YuSoonZ"},"content":" Index index;","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"YuSoonZ"},"content":" try {","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"YuSoonZ"},"content":" index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"YuSoonZ"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"YuSoonZ"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"YuSoonZ"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, ViewCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"YuSoonZ"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"YuSoonZ"},"content":" if (index.getOneBased() \u003c\u003d 0) {","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"YuSoonZ"},"content":" throw new ParseException(MESSAGE_ONE_BASED_INDEXING);","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"YuSoonZ"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"YuSoonZ"},"content":" return new ViewCommand(index);","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"YuSoonZ"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"YuSoonZ"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"YuSoonZ":39}},{"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":"teojunda"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"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":"teojunda"},"content":" * Adds the given person and updates the filteredList to show all.","lastModifiedDate":"2024-03-13"},{"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":"2024-03-13"},{"lineNumber":74,"author":{"gitId":"teojunda"},"content":" * Adds the given person without updating the filteredList.","lastModifiedDate":"2024-03-13"},{"lineNumber":75,"author":{"gitId":"teojunda"},"content":" * {@code person} must not already exist in the address book.","lastModifiedDate":"2024-03-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":77,"author":{"gitId":"teojunda"},"content":" void addPersonKeepFilter(Person person);","lastModifiedDate":"2024-03-14"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-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":"teojunda"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":88,"author":{"gitId":"teojunda"},"content":" /**","lastModifiedDate":"2024-03-22"},{"lineNumber":89,"author":{"gitId":"teojunda"},"content":" * Retrieves the last viewed {@link Person} instance.","lastModifiedDate":"2024-03-22"},{"lineNumber":90,"author":{"gitId":"teojunda"},"content":" * \u003cp\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":91,"author":{"gitId":"teojunda"},"content":" * This method returns an {@link Optional} which will be empty if no person has","lastModifiedDate":"2024-03-22"},{"lineNumber":92,"author":{"gitId":"teojunda"},"content":" * been viewed last, or will contain a reference to the {@link Person} object","lastModifiedDate":"2024-03-22"},{"lineNumber":93,"author":{"gitId":"teojunda"},"content":" * that was last viewed.","lastModifiedDate":"2024-03-22"},{"lineNumber":94,"author":{"gitId":"teojunda"},"content":" *","lastModifiedDate":"2024-03-22"},{"lineNumber":95,"author":{"gitId":"teojunda"},"content":" * @return an {@link Optional} containing the last viewed {@link Person} if such","lastModifiedDate":"2024-03-22"},{"lineNumber":96,"author":{"gitId":"teojunda"},"content":" * a person exists, or an empty {@link Optional} if no person has been viewed last.","lastModifiedDate":"2024-03-22"},{"lineNumber":97,"author":{"gitId":"teojunda"},"content":" */","lastModifiedDate":"2024-03-22"},{"lineNumber":98,"author":{"gitId":"teojunda"},"content":" Optional\u003cPerson\u003e getLastViewedPerson();","lastModifiedDate":"2024-03-22"},{"lineNumber":99,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":100,"author":{"gitId":"teojunda"},"content":" /**","lastModifiedDate":"2024-03-22"},{"lineNumber":101,"author":{"gitId":"teojunda"},"content":" * Resets the information about the last viewed person.","lastModifiedDate":"2024-03-22"},{"lineNumber":102,"author":{"gitId":"teojunda"},"content":" */","lastModifiedDate":"2024-03-22"},{"lineNumber":103,"author":{"gitId":"teojunda"},"content":" void resetLastViewedPerson();","lastModifiedDate":"2024-03-22"},{"lineNumber":104,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":105,"author":{"gitId":"teojunda"},"content":" /**","lastModifiedDate":"2024-03-22"},{"lineNumber":106,"author":{"gitId":"teojunda"},"content":" * Updates the record of the last viewed person to the specified {@link Person}.","lastModifiedDate":"2024-03-22"},{"lineNumber":107,"author":{"gitId":"teojunda"},"content":" * \u003cp\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":108,"author":{"gitId":"teojunda"},"content":" * This method sets the internally tracked last viewed person to the provided","lastModifiedDate":"2024-03-22"},{"lineNumber":109,"author":{"gitId":"teojunda"},"content":" * {@link Person} instance.","lastModifiedDate":"2024-03-22"},{"lineNumber":110,"author":{"gitId":"teojunda"},"content":" *","lastModifiedDate":"2024-03-22"},{"lineNumber":111,"author":{"gitId":"teojunda"},"content":" * @param p the {@link Person} instance to set as the last viewed person; cannot be {@code null}.","lastModifiedDate":"2024-03-22"},{"lineNumber":112,"author":{"gitId":"teojunda"},"content":" */","lastModifiedDate":"2024-03-22"},{"lineNumber":113,"author":{"gitId":"teojunda"},"content":" void updateLastViewedPerson(Person p);","lastModifiedDate":"2024-03-22"},{"lineNumber":114,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"teojunda":32,"-":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":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"teojunda"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-22"},{"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":"2017-01-19"},{"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":"teojunda"},"content":" private Optional\u003cPerson\u003e lastViewedPerson;","lastModifiedDate":"2024-03-22"},{"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":"teojunda"},"content":" lastViewedPerson \u003d Optional.empty();","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22"},{"lineNumber":43,"author":{"gitId":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"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":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":50,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","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":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return userPrefs;","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":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return userPrefs.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":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return userPrefs.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":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":81,"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":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21"},{"lineNumber":90,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":95,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":96,"author":{"gitId":"-"},"content":" return addressBook.hasPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15"},{"lineNumber":101,"author":{"gitId":"-"},"content":" addressBook.removePerson(target);","lastModifiedDate":"2019-01-25"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":106,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":107,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26"},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":111,"author":{"gitId":"teojunda"},"content":" public void addPersonKeepFilter(Person person) {","lastModifiedDate":"2024-03-14"},{"lineNumber":112,"author":{"gitId":"teojunda"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2024-03-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":115,"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":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":118,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10"},{"lineNumber":119,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11"},{"lineNumber":120,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":123,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":127,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":128,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05"},{"lineNumber":129,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":132,"author":{"gitId":"teojunda"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Last Viewed Person 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":"2024-03-22"},{"lineNumber":133,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":134,"author":{"gitId":"teojunda"},"content":" @Override","lastModifiedDate":"2024-03-22"},{"lineNumber":135,"author":{"gitId":"teojunda"},"content":" public Optional\u003cPerson\u003e getLastViewedPerson() {","lastModifiedDate":"2024-03-22"},{"lineNumber":136,"author":{"gitId":"teojunda"},"content":" return lastViewedPerson;","lastModifiedDate":"2024-03-22"},{"lineNumber":137,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":138,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":139,"author":{"gitId":"teojunda"},"content":" @Override","lastModifiedDate":"2024-03-22"},{"lineNumber":140,"author":{"gitId":"teojunda"},"content":" public void resetLastViewedPerson() {","lastModifiedDate":"2024-03-22"},{"lineNumber":141,"author":{"gitId":"teojunda"},"content":" lastViewedPerson \u003d Optional.empty();","lastModifiedDate":"2024-03-22"},{"lineNumber":142,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":143,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":144,"author":{"gitId":"teojunda"},"content":" @Override","lastModifiedDate":"2024-03-22"},{"lineNumber":145,"author":{"gitId":"teojunda"},"content":" public void updateLastViewedPerson(Person p) {","lastModifiedDate":"2024-03-22"},{"lineNumber":146,"author":{"gitId":"teojunda"},"content":" requireNonNull(p);","lastModifiedDate":"2024-03-22"},{"lineNumber":147,"author":{"gitId":"teojunda"},"content":" lastViewedPerson \u003d Optional.of(p);","lastModifiedDate":"2024-03-22"},{"lineNumber":148,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":149,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":150,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31"},{"lineNumber":151,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":153,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":156,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31"},{"lineNumber":157,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":158,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":161,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13"},{"lineNumber":163,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13"},{"lineNumber":164,"author":{"gitId":"-"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons);","lastModifiedDate":"2023-07-13"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":166,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"teojunda":23,"-":143}},{"path":"src/main/java/seedu/address/model/person/ClassGroup.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"kailashgautham"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"kailashgautham"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"kailashgautham"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"kailashgautham"},"content":"/**","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"g-tejas"},"content":" * Represents a Person\u0027s class/group in the TA Toolkit.","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"kailashgautham"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidClassGroup(String)}","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"kailashgautham"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"kailashgautham"},"content":"public class ClassGroup {","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"kailashgautham"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"g-tejas"},"content":" \"Class/groups should only contain alphanumeric characters delimited by a dash.\\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"g-tejas"},"content":" + \"It cannot contain symbols, whitespaces and it should not be blank\";","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"kailashgautham"},"content":" /*","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"kailashgautham"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"kailashgautham"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"kailashgautham"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"g-tejas"},"content":" public static final String VALIDATION_REGEX \u003d \"^(?:[\\\\p{Alnum}]+-?)*[\\\\p{Alnum}]+$\";","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"kailashgautham"},"content":" public final String classGroup;","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"kailashgautham"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"kailashgautham"},"content":" * Constructs a {@code ClassGroup}.","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"kailashgautham"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"kailashgautham"},"content":" * @param classGroup A valid classGroup.","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"kailashgautham"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"kailashgautham"},"content":" public ClassGroup(String classGroup) {","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"kailashgautham"},"content":" requireNonNull(classGroup);","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"kailashgautham"},"content":" checkArgument(isValidClassGroup(classGroup), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"kailashgautham"},"content":" this.classGroup \u003d classGroup;","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"kailashgautham"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"kailashgautham"},"content":" * Returns true if a given string is a valid class/group.","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"kailashgautham"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"kailashgautham"},"content":" public static boolean isValidClassGroup(String test) {","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"kailashgautham"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"kailashgautham"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"kailashgautham"},"content":" public String toString() {","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"kailashgautham"},"content":" return classGroup;","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"kailashgautham"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"kailashgautham"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"kailashgautham"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"kailashgautham"},"content":" return true;","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"kailashgautham"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"kailashgautham"},"content":" if (!(other instanceof ClassGroup)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"kailashgautham"},"content":" return false;","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"kailashgautham"},"content":" ClassGroup otherClassGroup \u003d (ClassGroup) other;","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"kailashgautham"},"content":" return classGroup.equals(otherClassGroup.classGroup);","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"kailashgautham"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"kailashgautham"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"kailashgautham"},"content":" return classGroup.hashCode();","lastModifiedDate":"2024-03-11"},{"lineNumber":66,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":68,"author":{"gitId":"kailashgautham"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"kailashgautham":64,"g-tejas":4}},{"path":"src/main/java/seedu/address/model/person/Github.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"kailashgautham"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"kailashgautham"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"kailashgautham"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"kailashgautham"},"content":"/**","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"kailashgautham"},"content":" * Represents a Person\u0027s GitHub ID in the address book.","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"kailashgautham"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidGithub(String)}","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"kailashgautham"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"kailashgautham"},"content":"public class Github {","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"kailashgautham"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"kailashgautham"},"content":" \"GitHub ID should only contain alphanumeric characters and symbols, and it should not be blank\";","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"kailashgautham"},"content":" public static final Github EMPTY \u003d new Github(\"\", true);","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"kailashgautham"},"content":" /*","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"kailashgautham"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"kailashgautham"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"kailashgautham"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"kailashgautham"},"content":" public static final String VALIDATION_REGEX \u003d \"^[a-zA-Z0-9_.-]+$\";","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"kailashgautham"},"content":" public final String githubId;","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"kailashgautham"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"kailashgautham"},"content":" * Constructs a {@code Github}.","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"kailashgautham"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"kailashgautham"},"content":" * @param githubId A valid Github ID.","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"kailashgautham"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"kailashgautham"},"content":" public Github(String githubId) {","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"kailashgautham"},"content":" requireNonNull(githubId);","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"kailashgautham"},"content":" checkArgument(isValidGithub(githubId), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"kailashgautham"},"content":" this.githubId \u003d githubId;","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"kailashgautham"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"kailashgautham"},"content":" * Constructs a {@code Github}.","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"kailashgautham"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"kailashgautham"},"content":" * @param githubId An empty string.","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"kailashgautham"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"kailashgautham"},"content":" private Github(String githubId, boolean isSentinel) {","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"kailashgautham"},"content":" if (!isSentinel) {","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"kailashgautham"},"content":" throw new IllegalArgumentException(\"This constructor is only for creating the EMPTY object\");","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"kailashgautham"},"content":" this.githubId \u003d githubId;","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"kailashgautham"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"kailashgautham"},"content":" * Returns true if a given string is a valid GitHub ID.","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"kailashgautham"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"kailashgautham"},"content":" public static boolean isValidGithub(String test) {","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"kailashgautham"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"teojunda"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":56,"author":{"gitId":"teojunda"},"content":" * Returns true is the Github ID is empty.","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"teojunda"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"teojunda"},"content":" public boolean isEmpty() {","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"teojunda"},"content":" return githubId.isEmpty();","lastModifiedDate":"2024-03-13"},{"lineNumber":60,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":61,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"kailashgautham"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"kailashgautham"},"content":" public String toString() {","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"kailashgautham"},"content":" return githubId;","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":66,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"kailashgautham"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":68,"author":{"gitId":"kailashgautham"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"kailashgautham"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-11"},{"lineNumber":70,"author":{"gitId":"kailashgautham"},"content":" return true;","lastModifiedDate":"2024-03-11"},{"lineNumber":71,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":72,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":73,"author":{"gitId":"kailashgautham"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"kailashgautham"},"content":" if (!(other instanceof Github)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":75,"author":{"gitId":"kailashgautham"},"content":" return false;","lastModifiedDate":"2024-03-11"},{"lineNumber":76,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":77,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":78,"author":{"gitId":"kailashgautham"},"content":" Github otherGithub \u003d (Github) other;","lastModifiedDate":"2024-03-11"},{"lineNumber":79,"author":{"gitId":"kailashgautham"},"content":" return githubId.equals(otherGithub.githubId);","lastModifiedDate":"2024-03-11"},{"lineNumber":80,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":81,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":82,"author":{"gitId":"kailashgautham"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":83,"author":{"gitId":"kailashgautham"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-11"},{"lineNumber":84,"author":{"gitId":"kailashgautham"},"content":" return githubId.hashCode();","lastModifiedDate":"2024-03-11"},{"lineNumber":85,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":86,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":87,"author":{"gitId":"kailashgautham"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"kailashgautham":81,"teojunda":6}},{"path":"src/main/java/seedu/address/model/person/ListCommandPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"g-tejas"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"g-tejas"},"content":"import java.util.List;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"g-tejas"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"g-tejas"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"g-tejas"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"g-tejas"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"g-tejas"},"content":" * Tests that a {@code Person}\u0027s {@code Name} is from any of the classGroups given or all","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"g-tejas"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"g-tejas"},"content":"public class ListCommandPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"g-tejas"},"content":" private final Optional\u003cList\u003cClassGroup\u003e\u003e classGroups;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"g-tejas"},"content":" public ListCommandPredicate(Optional\u003cList\u003cClassGroup\u003e\u003e classGroups) {","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"g-tejas"},"content":" this.classGroups \u003d classGroups;","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"g-tejas"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"g-tejas"},"content":" public Optional\u003cList\u003cClassGroup\u003e\u003e getClassGroups() {","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"g-tejas"},"content":" return classGroups;","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"g-tejas"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"g-tejas"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"g-tejas"},"content":" * If the classGroups is not empty, tests that a {@code Person}\u0027s {@code ClassGroup} matches any of the","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"g-tejas"},"content":" * keywords given. If the classGroups is empty, all persons are shown, so return true.","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"g-tejas"},"content":" * @param person The person to be tested","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"g-tejas"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"g-tejas"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"g-tejas"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"g-tejas"},"content":" return classGroups.map(groups -\u003e groups.stream()","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"g-tejas"},"content":" .anyMatch(keyword -\u003e person.getClassGroup().toString().startsWith(keyword.toString())))","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"g-tejas"},"content":" .orElse(true);","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"g-tejas"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"g-tejas"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"g-tejas"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"g-tejas"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"g-tejas"},"content":" return true;","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"g-tejas"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"g-tejas"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"g-tejas"},"content":" if (!(other instanceof ListCommandPredicate)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"g-tejas"},"content":" return false;","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"g-tejas"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"g-tejas"},"content":" ListCommandPredicate otherPredicate \u003d (ListCommandPredicate) other;","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"g-tejas"},"content":" return classGroups.equals(otherPredicate.classGroups);","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"g-tejas"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"g-tejas"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"g-tejas"},"content":" public String toString() {","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"g-tejas"},"content":" return new ToStringBuilder(this).add(\"classGroups\", classGroups).toString();","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"g-tejas"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"g-tejas"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"g-tejas":55}},{"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":"-"},"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":"-"},"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":"-"},"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":"teojunda"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"teojunda"},"content":" * Compares this Name object with the specified Name object for order based on their full names,","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"teojunda"},"content":" * ignoring case considerations.","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"teojunda"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"teojunda"},"content":" * \u003cp\u003eReturns a negative integer, zero, or a positive integer as this Name object is less than, equal to,","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"teojunda"},"content":" * or greater than the specified Name object.","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"teojunda"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"teojunda"},"content":" * \u003cp\u003eThe comparison is based on lexicographic ordering of the full names of the Names.","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"teojunda"},"content":" * The comparison is case-insensitive.","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"teojunda"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"teojunda"},"content":" * @param other The Name object to be compared.","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"teojunda"},"content":" * @return A negative integer if this Name is less than the specified Name, zero if they are equal, or a","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"teojunda"},"content":" * positive integer if this Name is greater than the specified Name.","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"teojunda"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"teojunda"},"content":" public int compare(Name other) {","lastModifiedDate":"2024-03-13"},{"lineNumber":56,"author":{"gitId":"teojunda"},"content":" return fullName.compareToIgnoreCase(other.toString());","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-03-13"},{"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"}],"authorContributionMap":{"teojunda":17,"-":66}},{"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.Objects;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"kailashgautham"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":19,"author":{"gitId":"kailashgautham"},"content":" private final ClassGroup classGroup;","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":21,"author":{"gitId":"kailashgautham"},"content":" private final Phone phone;","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"kailashgautham"},"content":" private final Optional\u003cTelegram\u003e telegram;","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"kailashgautham"},"content":" private final Optional\u003cGithub\u003e github;","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"kailashgautham"},"content":" public Person(Name name, ClassGroup classGroup, Email email, Phone phone,","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"kailashgautham"},"content":" Optional\u003cTelegram\u003e telegram, Optional\u003cGithub\u003e github) {","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"kailashgautham"},"content":" requireAllNonNull(name, classGroup, email, phone);","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20"},{"lineNumber":32,"author":{"gitId":"kailashgautham"},"content":" this.classGroup \u003d classGroup;","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20"},{"lineNumber":34,"author":{"gitId":"kailashgautham"},"content":" this.phone \u003d phone;","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"kailashgautham"},"content":" this.telegram \u003d telegram;","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"kailashgautham"},"content":" this.github \u003d github;","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"kailashgautham"},"content":" public ClassGroup getClassGroup() {","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"kailashgautham"},"content":" return classGroup;","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":55,"author":{"gitId":"kailashgautham"},"content":" public Optional\u003cTelegram\u003e getTelegram() {","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"kailashgautham"},"content":" return telegram;","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"kailashgautham"},"content":" public Optional\u003cGithub\u003e getGithub() {","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"kailashgautham"},"content":" return github;","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":64,"author":{"gitId":"teojunda"},"content":" * Returns true if both persons have the same Email, Phone, Telegram (optional), or Github (optional).","lastModifiedDate":"2024-03-14"},{"lineNumber":65,"author":{"gitId":"teojunda"},"content":" * Persons are allowed to have the same name.","lastModifiedDate":"2024-03-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":67,"author":{"gitId":"teojunda"},"content":" *","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"teojunda"},"content":" * @param otherPerson The Person object whose fields are to be compared.","lastModifiedDate":"2024-03-14"},{"lineNumber":69,"author":{"gitId":"teojunda"},"content":" * @return True if both persons have either the same Email, Phone, Telegram (optional), or Github (optional).","lastModifiedDate":"2024-03-14"},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":71,"author":{"gitId":"teojunda"},"content":" public boolean checkDuplicateField(Person otherPerson) {","lastModifiedDate":"2024-03-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"teojunda"},"content":" if (otherPerson \u003d\u003d null) {","lastModifiedDate":"2024-03-13"},{"lineNumber":76,"author":{"gitId":"teojunda"},"content":" return false;","lastModifiedDate":"2024-03-13"},{"lineNumber":77,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"teojunda"},"content":" boolean isEmailEqual \u003d otherPerson.getEmail().equals(getEmail());","lastModifiedDate":"2024-03-13"},{"lineNumber":80,"author":{"gitId":"teojunda"},"content":" boolean isPhoneEqual \u003d otherPerson.getPhone().equals(getPhone());","lastModifiedDate":"2024-03-13"},{"lineNumber":81,"author":{"gitId":"teojunda"},"content":" boolean isBothTelegramNonEmpty \u003d !getTelegram().orElse(Telegram.EMPTY).isEmpty()","lastModifiedDate":"2024-03-13"},{"lineNumber":82,"author":{"gitId":"teojunda"},"content":" \u0026\u0026 !otherPerson.getTelegram().orElse(Telegram.EMPTY).isEmpty();","lastModifiedDate":"2024-03-13"},{"lineNumber":83,"author":{"gitId":"teojunda"},"content":" boolean isBothGithubNonEmpty \u003d !getGithub().orElse(Github.EMPTY).isEmpty()","lastModifiedDate":"2024-03-13"},{"lineNumber":84,"author":{"gitId":"teojunda"},"content":" \u0026\u0026 !otherPerson.getGithub().orElse(Github.EMPTY).isEmpty();","lastModifiedDate":"2024-03-13"},{"lineNumber":85,"author":{"gitId":"teojunda"},"content":" boolean isTelegramNonEmptyAndEqual \u003d isBothTelegramNonEmpty \u0026\u0026 otherPerson.getTelegram().equals(getTelegram());","lastModifiedDate":"2024-03-13"},{"lineNumber":86,"author":{"gitId":"teojunda"},"content":" boolean isGithubNonEmptyAndEqual \u003d isBothGithubNonEmpty \u0026\u0026 otherPerson.getGithub().equals(getGithub());","lastModifiedDate":"2024-03-13"},{"lineNumber":87,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":89,"author":{"gitId":"teojunda"},"content":" return (isEmailEqual","lastModifiedDate":"2024-03-13"},{"lineNumber":90,"author":{"gitId":"teojunda"},"content":" || isPhoneEqual","lastModifiedDate":"2024-03-13"},{"lineNumber":91,"author":{"gitId":"teojunda"},"content":" || isTelegramNonEmptyAndEqual","lastModifiedDate":"2024-03-13"},{"lineNumber":92,"author":{"gitId":"teojunda"},"content":" || isGithubNonEmptyAndEqual);","lastModifiedDate":"2024-03-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":95,"author":{"gitId":"teojunda"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":96,"author":{"gitId":"teojunda"},"content":" * Compares this Person\u0027s name with the specified Person\u0027s name for order based on their names, ignoring case","lastModifiedDate":"2024-03-13"},{"lineNumber":97,"author":{"gitId":"teojunda"},"content":" * considerations.","lastModifiedDate":"2024-03-13"},{"lineNumber":98,"author":{"gitId":"teojunda"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":99,"author":{"gitId":"teojunda"},"content":" * \u003cp\u003eReturns a negative integer, zero, or a positive integer as this Person\u0027s name is less than, equal to,","lastModifiedDate":"2024-03-13"},{"lineNumber":100,"author":{"gitId":"teojunda"},"content":" * or greater than the specified Person\u0027s name.","lastModifiedDate":"2024-03-13"},{"lineNumber":101,"author":{"gitId":"teojunda"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":102,"author":{"gitId":"teojunda"},"content":" * \u003cp\u003eThe comparison is based on lexicographic ordering of the names of the Persons.","lastModifiedDate":"2024-03-13"},{"lineNumber":103,"author":{"gitId":"teojunda"},"content":" * The comparison is case-insensitive.","lastModifiedDate":"2024-03-13"},{"lineNumber":104,"author":{"gitId":"teojunda"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":105,"author":{"gitId":"teojunda"},"content":" * @param other The Person object whose name is to be compared.","lastModifiedDate":"2024-03-13"},{"lineNumber":106,"author":{"gitId":"teojunda"},"content":" * @return A negative integer if this Person\u0027s name is less than the specified Person\u0027s name,","lastModifiedDate":"2024-03-13"},{"lineNumber":107,"author":{"gitId":"teojunda"},"content":" * zero if they are equal, or a positive integer if this Person\u0027s name is greater than the other Person\u0027s name.","lastModifiedDate":"2024-03-13"},{"lineNumber":108,"author":{"gitId":"teojunda"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":109,"author":{"gitId":"teojunda"},"content":" public int compareName(Person other) {","lastModifiedDate":"2024-03-13"},{"lineNumber":110,"author":{"gitId":"teojunda"},"content":" return name.compare(other.getName());","lastModifiedDate":"2024-03-13"},{"lineNumber":111,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":115,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":118,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":119,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":122,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10"},{"lineNumber":124,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":127,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10"},{"lineNumber":128,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":129,"author":{"gitId":"kailashgautham"},"content":" \u0026\u0026 classGroup.equals(otherPerson.classGroup)","lastModifiedDate":"2024-03-11"},{"lineNumber":130,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":131,"author":{"gitId":"kailashgautham"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2024-03-11"},{"lineNumber":132,"author":{"gitId":"kailashgautham"},"content":" \u0026\u0026 telegram.equals(otherPerson.telegram)","lastModifiedDate":"2024-03-11"},{"lineNumber":133,"author":{"gitId":"kailashgautham"},"content":" \u0026\u0026 github.equals(otherPerson.github);","lastModifiedDate":"2024-03-11"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":137,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":138,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":139,"author":{"gitId":"kailashgautham"},"content":" return Objects.hash(name, classGroup, email, phone, telegram, github);","lastModifiedDate":"2024-03-11"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":143,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":144,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":146,"author":{"gitId":"kailashgautham"},"content":" .add(\"classGroup\", classGroup)","lastModifiedDate":"2024-03-11"},{"lineNumber":147,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":148,"author":{"gitId":"kailashgautham"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2024-03-11"},{"lineNumber":149,"author":{"gitId":"kailashgautham"},"content":" .add(\"telegram\", telegram.isPresent() ? telegram.get() : \"\")","lastModifiedDate":"2024-03-11"},{"lineNumber":150,"author":{"gitId":"kailashgautham"},"content":" .add(\"github\", github.isPresent() ? github.get() : \"\")","lastModifiedDate":"2024-03-11"},{"lineNumber":151,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":153,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"kailashgautham":30,"teojunda":39,"-":84}},{"path":"src/main/java/seedu/address/model/person/Telegram.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"kailashgautham"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"kailashgautham"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"kailashgautham"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"kailashgautham"},"content":"/**","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"kailashgautham"},"content":" * Represents a Person\u0027s Telegram ID in the address book.","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"kailashgautham"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidTelegram(String)}","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"kailashgautham"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"kailashgautham"},"content":"public class Telegram {","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"kailashgautham"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"kailashgautham"},"content":" \"Telegram ID should only contain alphanumeric characters and symbols, start with an @ symbol,\"","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"kailashgautham"},"content":" + \" and it should not be blank\";","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"kailashgautham"},"content":" public static final Telegram EMPTY \u003d new Telegram(\"\", true);","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"kailashgautham"},"content":" /*","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"kailashgautham"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"kailashgautham"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"kailashgautham"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"kailashgautham"},"content":" public static final String VALIDATION_REGEX \u003d \"^[@][a-zA-Z0-9_.-]+$\";","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"kailashgautham"},"content":" public final String telegramId;","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"kailashgautham"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"kailashgautham"},"content":" * Constructs a {@code Telegram}.","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"kailashgautham"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"kailashgautham"},"content":" * @param telegramId A valid Telegram ID.","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"kailashgautham"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"kailashgautham"},"content":" public Telegram(String telegramId) {","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"kailashgautham"},"content":" requireNonNull(telegramId);","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"kailashgautham"},"content":" checkArgument(isValidTelegram(telegramId), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"kailashgautham"},"content":" this.telegramId \u003d telegramId;","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"kailashgautham"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"kailashgautham"},"content":" * Constructs a {@code Telegram}.","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"kailashgautham"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"kailashgautham"},"content":" * @param telegramId An empty string.","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"kailashgautham"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"kailashgautham"},"content":" private Telegram(String telegramId, boolean isSentinel) {","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"kailashgautham"},"content":" if (!isSentinel) {","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"kailashgautham"},"content":" throw new IllegalArgumentException(\"This constructor is only for creating the EMPTY object\");","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"kailashgautham"},"content":" this.telegramId \u003d telegramId;","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"kailashgautham"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"kailashgautham"},"content":" * Returns true if a given string is a valid Telegram ID.","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"kailashgautham"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"kailashgautham"},"content":" public static boolean isValidTelegram(String test) {","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"kailashgautham"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"teojunda"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"teojunda"},"content":" * Returns true is the Telegram ID is empty.","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"teojunda"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"teojunda"},"content":" public boolean isEmpty() {","lastModifiedDate":"2024-03-13"},{"lineNumber":60,"author":{"gitId":"teojunda"},"content":" return telegramId.isEmpty();","lastModifiedDate":"2024-03-13"},{"lineNumber":61,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":62,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"kailashgautham"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"kailashgautham"},"content":" public String toString() {","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"kailashgautham"},"content":" return telegramId;","lastModifiedDate":"2024-03-11"},{"lineNumber":66,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":68,"author":{"gitId":"kailashgautham"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"kailashgautham"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-11"},{"lineNumber":70,"author":{"gitId":"kailashgautham"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-11"},{"lineNumber":71,"author":{"gitId":"kailashgautham"},"content":" return true;","lastModifiedDate":"2024-03-11"},{"lineNumber":72,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":73,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"kailashgautham"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-11"},{"lineNumber":75,"author":{"gitId":"kailashgautham"},"content":" if (!(other instanceof Telegram)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":76,"author":{"gitId":"kailashgautham"},"content":" return false;","lastModifiedDate":"2024-03-11"},{"lineNumber":77,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":78,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":79,"author":{"gitId":"kailashgautham"},"content":" Telegram otherTelegram \u003d (Telegram) other;","lastModifiedDate":"2024-03-11"},{"lineNumber":80,"author":{"gitId":"kailashgautham"},"content":" return telegramId.equals(otherTelegram.telegramId);","lastModifiedDate":"2024-03-11"},{"lineNumber":81,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":82,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":83,"author":{"gitId":"kailashgautham"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":84,"author":{"gitId":"kailashgautham"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-11"},{"lineNumber":85,"author":{"gitId":"kailashgautham"},"content":" return telegramId.hashCode();","lastModifiedDate":"2024-03-11"},{"lineNumber":86,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":87,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":88,"author":{"gitId":"kailashgautham"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"kailashgautham":82,"teojunda":6}},{"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":"teojunda"},"content":" * The list of persons is always sorted by name by ensuring all inserts are added in the correct index.","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"teojunda"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2016-09-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"teojunda"},"content":" * @see Person#checkDuplicateField(Person)","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class UniquePersonList implements Iterable\u003cPerson\u003e {","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2016-10-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2018-12-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2018-12-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Returns true if the list contains an equivalent person as the given argument.","lastModifiedDate":"2016-09-22"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public boolean contains(Person toCheck) {","lastModifiedDate":"2018-01-10"},{"lineNumber":37,"author":{"gitId":"-"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2017-05-15"},{"lineNumber":38,"author":{"gitId":"teojunda"},"content":" return internalList.stream().anyMatch(toCheck::checkDuplicateField);","lastModifiedDate":"2024-03-14"},{"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":" * Adds a person to the list.","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * The person must not already exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void add(Person toAdd) {","lastModifiedDate":"2018-08-07"},{"lineNumber":46,"author":{"gitId":"-"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2017-05-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"teojunda"},"content":" int insertionIndex \u003d 0;","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"teojunda"},"content":" for (Person person : internalList) {","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"teojunda"},"content":" if (toAdd.compareName(person) \u003c 0) {","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"teojunda"},"content":" break;","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"teojunda"},"content":" insertionIndex++;","lastModifiedDate":"2024-03-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"teojunda"},"content":" internalList.add(insertionIndex, toAdd);","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","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":" * Removes the equivalent person from the list.","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * The person must exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void remove(Person toRemove) {","lastModifiedDate":"2018-08-07"},{"lineNumber":65,"author":{"gitId":"-"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2017-05-15"},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2018-02-28"},{"lineNumber":67,"author":{"gitId":"-"},"content":" throw new PersonNotFoundException();","lastModifiedDate":"2016-08-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","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":" public void setPersons(UniquePersonList replacement) {","lastModifiedDate":"2016-10-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" requireNonNull(replacement);","lastModifiedDate":"2018-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2018-08-14"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Replaces the contents of this list with {@code persons}.","lastModifiedDate":"2018-08-07"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2018-08-07"},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void setPersons(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-08-07"},{"lineNumber":81,"author":{"gitId":"-"},"content":" requireAllNonNull(persons);","lastModifiedDate":"2018-01-10"},{"lineNumber":82,"author":{"gitId":"-"},"content":" if (!personsAreUnique(persons)) {","lastModifiedDate":"2018-04-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2018-01-21"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-21"},{"lineNumber":86,"author":{"gitId":"-"},"content":" internalList.setAll(persons);","lastModifiedDate":"2018-08-14"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-09-01"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2017-09-01"},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-09-01"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2018-04-05"},{"lineNumber":93,"author":{"gitId":"-"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2018-12-09"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public Iterator\u003cPerson\u003e iterator() {","lastModifiedDate":"2016-08-24"},{"lineNumber":98,"author":{"gitId":"-"},"content":" return internalList.iterator();","lastModifiedDate":"2016-08-24"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":102,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"lineNumber":103,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" if (!(other instanceof UniquePersonList)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" UniquePersonList otherUniquePersonList \u003d (UniquePersonList) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" return internalList.equals(otherUniquePersonList.internalList);","lastModifiedDate":"2023-07-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":118,"author":{"gitId":"-"},"content":" return internalList.hashCode();","lastModifiedDate":"2016-09-21"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-24"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-24"},{"lineNumber":123,"author":{"gitId":"-"},"content":" return internalList.toString();","lastModifiedDate":"2019-02-24"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24"},{"lineNumber":126,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":127,"author":{"gitId":"-"},"content":" * Returns true if {@code persons} contains only unique persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":128,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":129,"author":{"gitId":"-"},"content":" private boolean personsAreUnique(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-04-19"},{"lineNumber":130,"author":{"gitId":"-"},"content":" for (int i \u003d 0; i \u003c persons.size() - 1; i++) {","lastModifiedDate":"2018-04-19"},{"lineNumber":131,"author":{"gitId":"-"},"content":" for (int j \u003d i + 1; j \u003c persons.size(); j++) {","lastModifiedDate":"2018-04-19"},{"lineNumber":132,"author":{"gitId":"teojunda"},"content":" if (persons.get(i).checkDuplicateField(persons.get(j))) {","lastModifiedDate":"2024-03-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-04-19"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":137,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":139,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"teojunda":12,"-":127}},{"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":"kailashgautham"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20"},{"lineNumber":7,"author":{"gitId":"kailashgautham"},"content":"import seedu.address.model.person.ClassGroup;","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20"},{"lineNumber":9,"author":{"gitId":"kailashgautham"},"content":"import seedu.address.model.person.Github;","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-20"},{"lineNumber":13,"author":{"gitId":"kailashgautham"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20"},{"lineNumber":21,"author":{"gitId":"kailashgautham"},"content":" new Person(new Name(\"Alex Yeoh\"), new ClassGroup(\"T10-2\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"kailashgautham"},"content":" new Phone(\"87438807\"), Optional.of(new Telegram(\"@alex123\")), Optional.of(new Github(\"alexyeoh\"))),","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"kailashgautham"},"content":" new Person(new Name(\"Bernice Yu\"), new ClassGroup(\"T11-2\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"kailashgautham"},"content":" new Phone(\"99272758\"), Optional.of(new Telegram(\"@bernice123\")),","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"kailashgautham"},"content":" Optional.of(new Github(\"berniceyu123\"))),","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"kailashgautham"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new ClassGroup(\"T11-2\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"kailashgautham"},"content":" new Phone(\"93210283\"), Optional.of(new Telegram(\"@charlotte123\")),","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"kailashgautham"},"content":" Optional.of(new Github(\"charlotte123\"))),","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"kailashgautham"},"content":" new Person(new Name(\"David Li\"), new ClassGroup(\"F14-3\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"kailashgautham"},"content":" new Phone(\"91031282\"), Optional.of(new Telegram(\"@david123\")), Optional.of(new Github(\"david123\"))),","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"kailashgautham"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new ClassGroup(\"A12-3\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"kailashgautham"},"content":" new Phone(\"92492021\"), Optional.of(new Telegram(\"@irfan123\")), Optional.of(new Github(\"irfan123\"))),","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"kailashgautham"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new ClassGroup(\"A05-4\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"kailashgautham"},"content":" new Phone(\"92624417\"), Optional.of(new Telegram(\"@roy123\")), Optional.of(new Github(\"roy123\")))","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07"},{"lineNumber":40,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20"},{"lineNumber":41,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":45,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"kailashgautham":18,"-":27}},{"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":"kailashgautham"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"kailashgautham"},"content":"import seedu.address.model.person.ClassGroup;","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"kailashgautham"},"content":"import seedu.address.model.person.Github;","lastModifiedDate":"2024-03-11"},{"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":"kailashgautham"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"kailashgautham"},"content":" private final String classGroup;","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"kailashgautham"},"content":" private final String telegram;","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"kailashgautham"},"content":" private final String github;","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"kailashgautham"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"classGroup\") String classGroup,","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"kailashgautham"},"content":" @JsonProperty(\"telegram\") String telegram, @JsonProperty(\"github\") String github) {","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"kailashgautham"},"content":" this.classGroup \u003d classGroup;","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"kailashgautham"},"content":" this.telegram \u003d telegram;","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"kailashgautham"},"content":" this.github \u003d github;","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","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":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"kailashgautham"},"content":" classGroup \u003d source.getClassGroup().classGroup;","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"kailashgautham"},"content":" telegram \u003d source.getTelegram().orElse(Telegram.EMPTY).telegramId;","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"kailashgautham"},"content":" github \u003d source.getGithub().orElse(Github.EMPTY).githubId;","lastModifiedDate":"2024-03-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 this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"kailashgautham"},"content":" if (classGroup \u003d\u003d null) {","lastModifiedDate":"2024-03-11"},{"lineNumber":90,"author":{"gitId":"kailashgautham"},"content":" throw new IllegalValueException(","lastModifiedDate":"2024-03-11"},{"lineNumber":91,"author":{"gitId":"kailashgautham"},"content":" String.format(MISSING_FIELD_MESSAGE_FORMAT, ClassGroup.class.getSimpleName()));","lastModifiedDate":"2024-03-11"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"kailashgautham"},"content":" if (!ClassGroup.isValidClassGroup(classGroup)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":94,"author":{"gitId":"kailashgautham"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-11"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"kailashgautham"},"content":" final ClassGroup modelClassGroup \u003d new ClassGroup(classGroup);","lastModifiedDate":"2024-03-11"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"kailashgautham"},"content":" final Optional\u003cTelegram\u003e modelTelegram;","lastModifiedDate":"2024-03-13"},{"lineNumber":99,"author":{"gitId":"g-tejas"},"content":" if (telegram \u003d\u003d null || telegram.isEmpty()) {","lastModifiedDate":"2024-03-14"},{"lineNumber":100,"author":{"gitId":"kailashgautham"},"content":" modelTelegram \u003d Optional.of(Telegram.EMPTY);","lastModifiedDate":"2024-03-13"},{"lineNumber":101,"author":{"gitId":"kailashgautham"},"content":" } else if (!Telegram.isValidTelegram(telegram)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":102,"author":{"gitId":"kailashgautham"},"content":" throw new IllegalValueException(Telegram.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-11"},{"lineNumber":103,"author":{"gitId":"kailashgautham"},"content":" } else {","lastModifiedDate":"2024-03-11"},{"lineNumber":104,"author":{"gitId":"kailashgautham"},"content":" modelTelegram \u003d Optional.of(new Telegram(telegram));","lastModifiedDate":"2024-03-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"kailashgautham"},"content":" final Optional\u003cGithub\u003e modelGithub;","lastModifiedDate":"2024-03-13"},{"lineNumber":108,"author":{"gitId":"g-tejas"},"content":" if (github \u003d\u003d null || github.isEmpty()) {","lastModifiedDate":"2024-03-14"},{"lineNumber":109,"author":{"gitId":"kailashgautham"},"content":" modelGithub \u003d Optional.of(Github.EMPTY);","lastModifiedDate":"2024-03-13"},{"lineNumber":110,"author":{"gitId":"kailashgautham"},"content":" } else if (!Github.isValidGithub(github)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":111,"author":{"gitId":"kailashgautham"},"content":" throw new IllegalValueException(Github.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-11"},{"lineNumber":112,"author":{"gitId":"kailashgautham"},"content":" } else {","lastModifiedDate":"2024-03-11"},{"lineNumber":113,"author":{"gitId":"kailashgautham"},"content":" modelGithub \u003d Optional.of(new Github(github));","lastModifiedDate":"2024-03-13"},{"lineNumber":114,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":116,"author":{"gitId":"kailashgautham"},"content":" return new Person(modelName, modelClassGroup, modelEmail, modelPhone, modelTelegram, modelGithub);","lastModifiedDate":"2024-03-11"},{"lineNumber":117,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":118,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"kailashgautham":36,"g-tejas":2,"-":80}},{"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":"hiivan"},"content":" public static final String USERGUIDE_URL \u003d \"https://ay2324s2-cs2103t-f14-3.github.io/tp/UserGuide.html\";","lastModifiedDate":"2024-03-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":{"hiivan":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":"teojunda"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-22"},{"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":"-"},"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":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2016-09-28"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-06-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"hiivan"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-21"},{"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":"hiivan"},"content":" private SidePanel sidePanel;","lastModifiedDate":"2024-03-21"},{"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":"-"},"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":"hiivan"},"content":" @FXML","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"hiivan"},"content":" private StackPane sidePanelPlaceholder;","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":67,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":72,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21"},{"lineNumber":82,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","lastModifiedDate":"2016-12-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","lastModifiedDate":"2016-12-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-12-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":108,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18"},{"lineNumber":109,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18"},{"lineNumber":110,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":112,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":115,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":116,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16"},{"lineNumber":117,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":118,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21"},{"lineNumber":119,"author":{"gitId":"-"},"content":" personListPanel \u003d new PersonListPanel(logic.getFilteredPersonList());","lastModifiedDate":"2019-01-25"},{"lineNumber":120,"author":{"gitId":"-"},"content":" personListPanelPlaceholder.getChildren().add(personListPanel.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09"},{"lineNumber":123,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getAddressBookFilePath());","lastModifiedDate":"2019-01-25"},{"lineNumber":126,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25"},{"lineNumber":129,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":130,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":131,"author":{"gitId":"hiivan"},"content":" sidePanel \u003d new SidePanel();","lastModifiedDate":"2024-03-21"},{"lineNumber":132,"author":{"gitId":"hiivan"},"content":" sidePanelPlaceholder.getChildren().add(sidePanel.getRoot());","lastModifiedDate":"2024-03-21"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":135,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":136,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27"},{"lineNumber":137,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":138,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":139,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27"},{"lineNumber":140,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27"},{"lineNumber":141,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27"},{"lineNumber":142,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27"},{"lineNumber":143,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27"},{"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":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":148,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15"},{"lineNumber":149,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":150,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":151,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31"},{"lineNumber":152,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15"},{"lineNumber":153,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":154,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15"},{"lineNumber":155,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":159,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15"},{"lineNumber":160,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":163,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":164,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18"},{"lineNumber":165,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":166,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":167,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18"},{"lineNumber":168,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":175,"author":{"gitId":"-"},"content":" public PersonListPanel getPersonListPanel() {","lastModifiedDate":"2016-08-25"},{"lineNumber":176,"author":{"gitId":"-"},"content":" return personListPanel;","lastModifiedDate":"2018-08-14"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":179,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":180,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":181,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":182,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09"},{"lineNumber":183,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":184,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09"},{"lineNumber":185,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":186,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09"},{"lineNumber":187,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":188,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":190,"author":{"gitId":"teojunda"},"content":" Optional\u003cPerson\u003e lastViewedPerson \u003d logic.getLastViewedPerson();","lastModifiedDate":"2024-03-22"},{"lineNumber":191,"author":{"gitId":"teojunda"},"content":" lastViewedPerson.ifPresentOrElse(sidePanel::displayPerson, sidePanel::resetDetails);","lastModifiedDate":"2024-03-22"},{"lineNumber":192,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-03-21"},{"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":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"teojunda":3,"hiivan":9,"-":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 javafx.fxml.FXML;","lastModifiedDate":"2016-09-21"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":8,"author":{"gitId":"kailashgautham"},"content":"import seedu.address.model.person.Github;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":10,"author":{"gitId":"kailashgautham"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-03-13"},{"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":"kailashgautham"},"content":" private Label telegram;","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"kailashgautham"},"content":" @FXML","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"kailashgautham"},"content":" private Label github;","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"kailashgautham"},"content":" @FXML","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"kailashgautham"},"content":" private Label classGroup;","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"kailashgautham"},"content":" @FXML","lastModifiedDate":"2024-03-11"},{"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":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private Label address;","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20"},{"lineNumber":58,"author":{"gitId":"kailashgautham"},"content":" classGroup.setText(person.getClassGroup().classGroup);","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"kailashgautham"},"content":" email.setText(\"E-mail: \" + person.getEmail().value);","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"kailashgautham"},"content":" phone.setText(\"Phone Number: \" + person.getPhone().value);","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"kailashgautham"},"content":" telegram.setText(","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"kailashgautham"},"content":" \"Telegram ID: \" + person.getTelegram().orElse(Telegram.EMPTY).telegramId);","lastModifiedDate":"2024-03-13"},{"lineNumber":63,"author":{"gitId":"kailashgautham"},"content":" github.setText(","lastModifiedDate":"2024-03-13"},{"lineNumber":64,"author":{"gitId":"kailashgautham"},"content":" \"GitHub ID: \" + person.getGithub().orElse(Github.EMPTY).githubId);","lastModifiedDate":"2024-03-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"kailashgautham":15,"-":51}},{"path":"src/main/java/seedu/address/ui/SidePanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"hiivan"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"hiivan"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"hiivan"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"hiivan"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"hiivan"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"hiivan"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"hiivan"},"content":"import seedu.address.model.person.Github;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"hiivan"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"hiivan"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"hiivan"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"hiivan"},"content":" * Panel displaying the details of a selected person.","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"hiivan"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"hiivan"},"content":"public class SidePanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"hiivan"},"content":" private static final String FXML \u003d \"SidePanel.fxml\";","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"hiivan"},"content":" private final Logger logger \u003d LogsCenter.getLogger(SidePanel.class);","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"hiivan"},"content":" @FXML","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"hiivan"},"content":" private Label defaultMessageLabel;","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"hiivan"},"content":" @FXML","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"hiivan"},"content":" private Label nameLabel;","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"hiivan"},"content":" @FXML","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"hiivan"},"content":" private Label classGroupLabel;","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"hiivan"},"content":" @FXML","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"hiivan"},"content":" private Label emailLabel;","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"hiivan"},"content":" @FXML","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"hiivan"},"content":" private Label phoneLabel;","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"hiivan"},"content":" @FXML","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"hiivan"},"content":" private Label telegramLabel;","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"hiivan"},"content":" @FXML","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"hiivan"},"content":" private Label githubLabel;","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"hiivan"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"hiivan"},"content":" * Creates a {@code SidePanel}.","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"hiivan"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"hiivan"},"content":" public SidePanel() {","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"hiivan"},"content":" super(FXML);","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"hiivan"},"content":" showDefaultMessage();","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"hiivan"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"hiivan"},"content":" * Shows the default message and hides person details.","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"hiivan"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"hiivan"},"content":" private void showDefaultMessage() {","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"hiivan"},"content":" defaultMessageLabel.setVisible(true);","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"hiivan"},"content":" nameLabel.setVisible(false);","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"hiivan"},"content":" classGroupLabel.setVisible(false);","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"hiivan"},"content":" emailLabel.setVisible(false);","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"hiivan"},"content":" phoneLabel.setVisible(false);","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"hiivan"},"content":" telegramLabel.setVisible(false);","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"hiivan"},"content":" githubLabel.setVisible(false);","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"hiivan"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"hiivan"},"content":" * Displays the details of a {@code Person}.","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"hiivan"},"content":" *","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"hiivan"},"content":" * @param person The person whose details are to be displayed.","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"hiivan"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"hiivan"},"content":" public void displayPerson(Person person) {","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"hiivan"},"content":" if (person !\u003d null) {","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"hiivan"},"content":" nameLabel.setVisible(true);","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"hiivan"},"content":" nameLabel.setText(\"Name: \" + person.getName().fullName);","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"hiivan"},"content":" classGroupLabel.setVisible(true);","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"hiivan"},"content":" classGroupLabel.setText(\"Class Group: \" + person.getClassGroup().toString());","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"hiivan"},"content":" emailLabel.setVisible(true);","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"hiivan"},"content":" emailLabel.setText(\"Email: \" + person.getEmail().toString());","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"hiivan"},"content":" phoneLabel.setVisible(true);","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"hiivan"},"content":" phoneLabel.setText(\"Phone: \" + person.getPhone().toString());","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"hiivan"},"content":" telegramLabel.setVisible(true);","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"hiivan"},"content":" telegramLabel.setText(\"Telegram: \"","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"hiivan"},"content":" + person.getTelegram().map(Telegram::toString).orElse(\"N/A\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"hiivan"},"content":" githubLabel.setVisible(true);","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"hiivan"},"content":" githubLabel.setText(\"GitHub: \"","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"hiivan"},"content":" + person.getGithub().map(Github::toString).orElse(\"N/A\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"hiivan"},"content":" defaultMessageLabel.setVisible(false);","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"hiivan"},"content":" } else {","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"hiivan"},"content":" resetDetails();","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"hiivan"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"hiivan"},"content":" * Clears all the details from the side panel.","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"hiivan"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"teojunda"},"content":" public void resetDetails() {","lastModifiedDate":"2024-03-22"},{"lineNumber":88,"author":{"gitId":"hiivan"},"content":" nameLabel.setText(\"\");","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"hiivan"},"content":" classGroupLabel.setText(\"\");","lastModifiedDate":"2024-03-21"},{"lineNumber":90,"author":{"gitId":"hiivan"},"content":" emailLabel.setText(\"\");","lastModifiedDate":"2024-03-21"},{"lineNumber":91,"author":{"gitId":"hiivan"},"content":" phoneLabel.setText(\"\");","lastModifiedDate":"2024-03-21"},{"lineNumber":92,"author":{"gitId":"hiivan"},"content":" telegramLabel.setText(\"\");","lastModifiedDate":"2024-03-21"},{"lineNumber":93,"author":{"gitId":"hiivan"},"content":" githubLabel.setText(\"\");","lastModifiedDate":"2024-03-21"},{"lineNumber":94,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":95,"author":{"gitId":"hiivan"},"content":" nameLabel.setVisible(false);","lastModifiedDate":"2024-03-21"},{"lineNumber":96,"author":{"gitId":"hiivan"},"content":" classGroupLabel.setVisible(false);","lastModifiedDate":"2024-03-21"},{"lineNumber":97,"author":{"gitId":"hiivan"},"content":" emailLabel.setVisible(false);","lastModifiedDate":"2024-03-21"},{"lineNumber":98,"author":{"gitId":"hiivan"},"content":" phoneLabel.setVisible(false);","lastModifiedDate":"2024-03-21"},{"lineNumber":99,"author":{"gitId":"hiivan"},"content":" telegramLabel.setVisible(false);","lastModifiedDate":"2024-03-21"},{"lineNumber":100,"author":{"gitId":"hiivan"},"content":" githubLabel.setVisible(false);","lastModifiedDate":"2024-03-21"},{"lineNumber":101,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":102,"author":{"gitId":"hiivan"},"content":" showDefaultMessage();","lastModifiedDate":"2024-03-21"},{"lineNumber":103,"author":{"gitId":"hiivan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":104,"author":{"gitId":"hiivan"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"teojunda":1,"hiivan":103}},{"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":"hiivan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":354,"author":{"gitId":"hiivan"},"content":".side-panel .label {","lastModifiedDate":"2024-03-21"},{"lineNumber":355,"author":{"gitId":"hiivan"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-21"},{"lineNumber":356,"author":{"gitId":"hiivan"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"hiivan":4,"-":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":"hiivan"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.SplitPane?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"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":"hiivan"},"content":" title\u003d\"TA Toolkit\" minWidth\u003d\"450\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2024-03-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":" \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":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"resultDisplayPlaceholder\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2017-05-15"},{"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":"hiivan"},"content":" \u003cSplitPane dividerPositions\u003d\"0.75\" focusTraversable\u003d\"true\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"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":49,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"personListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2017-06-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":54,"author":{"gitId":"hiivan"},"content":" \u003cStackPane fx:id\u003d\"sidePanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"hiivan"},"content":" \u003c/SplitPane\u003e","lastModifiedDate":"2024-03-21"},{"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":{"hiivan":5,"-":55}},{"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":"kailashgautham"},"content":" \u003cLabel fx:id\u003d\"classGroup\" styleClass\u003d\"cell_big_label\" text\u003d\"\\$classGroup\" /\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"kailashgautham"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"kailashgautham"},"content":" \u003cLabel fx:id\u003d\"telegram\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$telegram\" /\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"kailashgautham"},"content":" \u003cLabel fx:id\u003d\"github\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$github\" /\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"kailashgautham":4,"-":33}},{"path":"src/main/resources/view/SidePanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"hiivan"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"hiivan"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"hiivan"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"hiivan"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"hiivan"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"hiivan"},"content":" styleClass\u003d\"side-panel\" alignment\u003d\"TOP_LEFT\" spacing\u003d\"10\"\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"hiivan"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"hiivan"},"content":" \u003cURL value\u003d\"@DarkTheme.css\" /\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"hiivan"},"content":" \u003cURL value\u003d\"@Extensions.css\" /\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"hiivan"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"hiivan"},"content":" \u003c!-- Default message label --\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"hiivan"},"content":" \u003cLabel fx:id\u003d\"defaultMessageLabel\" text\u003d\"Select a person to view details\" wrapText\u003d\"true\" visible\u003d\"true\" styleClass\u003d\"cell_big_label\"/\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"hiivan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"hiivan"},"content":" \u003c!-- Detail labels --\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"hiivan"},"content":" \u003cLabel fx:id\u003d\"nameLabel\" visible\u003d\"false\" styleClass\u003d\"cell_big_label\"/\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"hiivan"},"content":" \u003cLabel fx:id\u003d\"classGroupLabel\" visible\u003d\"false\" styleClass\u003d\"cell_small_label\"/\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"hiivan"},"content":" \u003cLabel fx:id\u003d\"emailLabel\" visible\u003d\"false\" styleClass\u003d\"cell_small_label\"/\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"hiivan"},"content":" \u003cLabel fx:id\u003d\"phoneLabel\" visible\u003d\"false\" styleClass\u003d\"cell_small_label\"/\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"hiivan"},"content":" \u003cLabel fx:id\u003d\"telegramLabel\" visible\u003d\"false\" styleClass\u003d\"cell_small_label\"/\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"hiivan"},"content":" \u003cLabel fx:id\u003d\"githubLabel\" visible\u003d\"false\" styleClass\u003d\"cell_small_label\"/\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"hiivan"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"hiivan":23}},{"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":"kailashgautham"},"content":"import static seedu.address.logic.commands.CommandTestUtil.CLASS_GROUP_DESC_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":8,"author":{"gitId":"kailashgautham"},"content":"import static seedu.address.logic.commands.CommandTestUtil.GITHUB_DESC_AMY;","lastModifiedDate":"2024-03-11"},{"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":"kailashgautham"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_AMY;","lastModifiedDate":"2024-03-11"},{"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":"-"},"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":"g-tejas"},"content":" String deleteCommand \u003d \"dc 9\";","lastModifiedDate":"2024-03-14"},{"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":"g-tejas"},"content":" String expectedMessage \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"g-tejas"},"content":" String.format(ListCommand.MESSAGE_LIST_ALL_SUCCESS, model.getFilteredPersonList().size());","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"g-tejas"},"content":" assertCommandSuccess(listCommand, expectedMessage, model);","lastModifiedDate":"2024-03-16"},{"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":"2017-09-01"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":101,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":108,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":109,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":110,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":111,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":112,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":116,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":125,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":126,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":128,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14"},{"lineNumber":130,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31"},{"lineNumber":131,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":134,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":135,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":137,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":138,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":139,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":140,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":141,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":142,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31"},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14"},{"lineNumber":144,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19"},{"lineNumber":147,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":148,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13"},{"lineNumber":149,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13"},{"lineNumber":150,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13"},{"lineNumber":151,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":153,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13"},{"lineNumber":154,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":156,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13"},{"lineNumber":157,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13"},{"lineNumber":158,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":159,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13"},{"lineNumber":160,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13"},{"lineNumber":161,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":163,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":165,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":166,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":169,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":171,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13"},{"lineNumber":172,"author":{"gitId":"kailashgautham"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + CLASS_GROUP_DESC_AMY","lastModifiedDate":"2024-03-11"},{"lineNumber":173,"author":{"gitId":"kailashgautham"},"content":" + EMAIL_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2024-03-11"},{"lineNumber":174,"author":{"gitId":"kailashgautham"},"content":" + TELEGRAM_DESC_AMY + GITHUB_DESC_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":175,"author":{"gitId":"kailashgautham"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":176,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13"},{"lineNumber":177,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13"},{"lineNumber":178,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13"},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":180,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"kailashgautham":7,"g-tejas":4,"-":169}},{"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":"-"},"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":"teojunda"},"content":" AddCommand.MESSAGE_DUPLICATE_FIELD);","lastModifiedDate":"2024-03-14"},{"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":{"teojunda":1,"-":47}},{"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":"teojunda"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-22"},{"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":"-"},"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":"-"},"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":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15"},{"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":"-"},"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":"-"},"content":" CommandResult commandResult \u003d new AddCommand(validPerson).execute(modelStub);","lastModifiedDate":"2019-01-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23"},{"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":"-"},"content":" AddCommand addCommand \u003d new AddCommand(validPerson);","lastModifiedDate":"2018-08-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":"teojunda"},"content":" assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_FIELD, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2024-03-14"},{"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":"teojunda"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":128,"author":{"gitId":"teojunda"},"content":" public void addPersonKeepFilter(Person person) {","lastModifiedDate":"2024-03-14"},{"lineNumber":129,"author":{"gitId":"teojunda"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":130,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":131,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27"},{"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":"2017-05-12"},{"lineNumber":138,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12"},{"lineNumber":139,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":143,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-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":"2018-08-06"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":147,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":148,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-08"},{"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":"2024-03-22"},{"lineNumber":162,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-03-22"},{"lineNumber":163,"author":{"gitId":"teojunda"},"content":" public Optional\u003cPerson\u003e getLastViewedPerson() {","lastModifiedDate":"2024-03-22"},{"lineNumber":164,"author":{"gitId":"teojunda"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-22"},{"lineNumber":165,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":166,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":167,"author":{"gitId":"teojunda"},"content":" @Override","lastModifiedDate":"2024-03-22"},{"lineNumber":168,"author":{"gitId":"teojunda"},"content":" public void resetLastViewedPerson() {","lastModifiedDate":"2024-03-22"},{"lineNumber":169,"author":{"gitId":"teojunda"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-22"},{"lineNumber":170,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":171,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":172,"author":{"gitId":"teojunda"},"content":" @Override","lastModifiedDate":"2024-03-22"},{"lineNumber":173,"author":{"gitId":"teojunda"},"content":" public void updateLastViewedPerson(Person p) {","lastModifiedDate":"2024-03-22"},{"lineNumber":174,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-22"},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":178,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":179,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07"},{"lineNumber":180,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":181,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07"},{"lineNumber":182,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":184,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":185,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":186,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":189,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":190,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":191,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":192,"author":{"gitId":"teojunda"},"content":" return this.person.checkDuplicateField(person);","lastModifiedDate":"2024-03-14"},{"lineNumber":193,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":194,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":196,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":197,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12"},{"lineNumber":198,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":199,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12"},{"lineNumber":200,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":202,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07"},{"lineNumber":203,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":204,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":205,"author":{"gitId":"teojunda"},"content":" return personsAdded.stream().anyMatch(person::checkDuplicateField);","lastModifiedDate":"2024-03-14"},{"lineNumber":206,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":208,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":209,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08"},{"lineNumber":210,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":211,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":214,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":215,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04"},{"lineNumber":216,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04"},{"lineNumber":217,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":218,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":220,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12"}],"authorContributionMap":{"teojunda":20,"-":200}},{"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":"kailashgautham"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CLASS_GROUP;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"kailashgautham"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GITHUB;","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"kailashgautham"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"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":"-"},"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":"2017-06-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":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":36,"author":{"gitId":"g-tejas"},"content":" public static final String VALID_CLASS_GROUP_AMY \u003d \"A-1\";","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"g-tejas"},"content":" public static final String VALID_CLASS_GROUP_BOB \u003d \"B-2\";","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"kailashgautham"},"content":" public static final String VALID_TELEGRAM_AMY \u003d \"@amybee\";","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"kailashgautham"},"content":" public static final String VALID_TELEGRAM_BOB \u003d \"@bobchoo\";","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"kailashgautham"},"content":" public static final String VALID_GITHUB_AMY \u003d \"amybee\";","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"kailashgautham"},"content":" public static final String VALID_GITHUB_BOB \u003d \"bobchoo\";","lastModifiedDate":"2024-03-11"},{"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":"kailashgautham"},"content":" public static final String CLASS_GROUP_DESC_AMY \u003d \" \" + PREFIX_CLASS_GROUP + VALID_CLASS_GROUP_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"kailashgautham"},"content":" public static final String CLASS_GROUP_DESC_BOB \u003d \" \" + PREFIX_CLASS_GROUP + VALID_CLASS_GROUP_BOB;","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"kailashgautham"},"content":" public static final String TELEGRAM_DESC_AMY \u003d \" \" + PREFIX_TELEGRAM + VALID_TELEGRAM_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"kailashgautham"},"content":" public static final String TELEGRAM_DESC_BOB \u003d \" \" + PREFIX_TELEGRAM + VALID_TELEGRAM_BOB;","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"kailashgautham"},"content":" public static final String GITHUB_DESC_AMY \u003d \" \" + PREFIX_GITHUB + VALID_GITHUB_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"kailashgautham"},"content":" public static final String GITHUB_DESC_BOB \u003d \" \" + PREFIX_GITHUB + VALID_GITHUB_BOB;","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":56,"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":57,"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":58,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05"},{"lineNumber":59,"author":{"gitId":"kailashgautham"},"content":" public static final String INVALID_CLASS_GROUP_DESC \u003d \" \" + PREFIX_CLASS_GROUP; // empty","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"kailashgautham"},"content":" public static final String INVALID_TELEGRAM_DESC \u003d \" \" + PREFIX_TELEGRAM + \"hi\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":70,"author":{"gitId":"kailashgautham"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY)","lastModifiedDate":"2024-03-11"},{"lineNumber":71,"author":{"gitId":"kailashgautham"},"content":" .withClassGroup(VALID_CLASS_GROUP_AMY).withTelegram(VALID_TELEGRAM_AMY).withGithub(VALID_GITHUB_AMY)","lastModifiedDate":"2024-03-11"},{"lineNumber":72,"author":{"gitId":"kailashgautham"},"content":" .build();","lastModifiedDate":"2024-03-11"},{"lineNumber":73,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":74,"author":{"gitId":"kailashgautham"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2024-03-11"},{"lineNumber":75,"author":{"gitId":"kailashgautham"},"content":" .withClassGroup(VALID_CLASS_GROUP_BOB).withTelegram(VALID_TELEGRAM_BOB).withGithub(VALID_GITHUB_BOB)","lastModifiedDate":"2024-03-11"},{"lineNumber":76,"author":{"gitId":"kailashgautham"},"content":" .build();","lastModifiedDate":"2024-03-11"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25"},{"lineNumber":85,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":86,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":95,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25"},{"lineNumber":100,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":101,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":105,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":109,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25"},{"lineNumber":110,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":111,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25"},{"lineNumber":112,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":121,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":122,"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":123,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31"},{"lineNumber":124,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":125,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31"},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":128,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20"},{"lineNumber":130,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":135,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"kailashgautham":21,"g-tejas":2,"-":112}},{"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":"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":"teojunda"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-22"},{"lineNumber":42,"author":{"gitId":"teojunda"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":43,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"teojunda"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"teojunda"},"content":" public void execute_validDeleteLastViewedPerson_success() {","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"teojunda"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"teojunda"},"content":" model.updateLastViewedPerson(personToDelete);","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"teojunda"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-22"},{"lineNumber":49,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":50,"author":{"gitId":"teojunda"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2024-03-22"},{"lineNumber":51,"author":{"gitId":"teojunda"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"teojunda"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-22"},{"lineNumber":54,"author":{"gitId":"teojunda"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2024-03-22"},{"lineNumber":55,"author":{"gitId":"teojunda"},"content":" expectedModel.resetLastViewedPerson();","lastModifiedDate":"2024-03-22"},{"lineNumber":56,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-06-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":72,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":73,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":78,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":79,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05"},{"lineNumber":80,"author":{"gitId":"-"},"content":" showNoPerson(expectedModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":89,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-06-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-06-05"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-06-05"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":93,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":" DeleteCommand deleteFirstCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" DeleteCommand deleteSecondCommand \u003d new DeleteCommand(INDEX_SECOND_PERSON);","lastModifiedDate":"2018-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":" DeleteCommand deleteFirstCommandCopy \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":110,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":113,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":116,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"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":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(targetIndex);","lastModifiedDate":"2019-02-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":" String expected \u003d DeleteCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertEquals(expected, deleteCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":129,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05"},{"lineNumber":130,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":131,"author":{"gitId":"-"},"content":" private void showNoPerson(Model model) {","lastModifiedDate":"2017-06-05"},{"lineNumber":132,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2017-06-12"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertTrue(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2018-02-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":136,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"teojunda":16,"-":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.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-08"},{"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-04"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-22"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-04"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04"},{"lineNumber":33,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":39,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-26"},{"lineNumber":40,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedPerson).build();","lastModifiedDate":"2017-06-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":43,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":46,"author":{"gitId":"teojunda"},"content":" expectedModel.deletePerson(model.getFilteredPersonList().get(0));","lastModifiedDate":"2024-03-15"},{"lineNumber":47,"author":{"gitId":"teojunda"},"content":" expectedModel.addPerson(editedPerson);","lastModifiedDate":"2024-03-15"},{"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":"kailashgautham"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":60,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-05-18"},{"lineNumber":61,"author":{"gitId":"kailashgautham"},"content":" .withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPerson, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":64,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":67,"author":{"gitId":"teojunda"},"content":" expectedModel.deletePerson(lastPerson);","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"teojunda"},"content":" expectedModel.addPerson(editedPerson);","lastModifiedDate":"2024-03-14"},{"lineNumber":69,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-14"},{"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":"teojunda"},"content":" public void execute_noFieldSpecifiedUnfilteredList_failure() {","lastModifiedDate":"2024-03-13"},{"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":"teojunda"},"content":" String expectedMessage \u003d EditCommand.MESSAGE_NO_CHANGE;","lastModifiedDate":"2024-03-13"},{"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":"teojunda"},"content":" assertCommandFailure(editCommand, model, expectedMessage);","lastModifiedDate":"2024-03-13"},{"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":"teojunda"},"content":" showPersonAtIndex(expectedModel, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-22"},{"lineNumber":99,"author":{"gitId":"teojunda"},"content":" expectedModel.deletePerson(model.getFilteredPersonList().get(0));","lastModifiedDate":"2024-03-14"},{"lineNumber":100,"author":{"gitId":"teojunda"},"content":" expectedModel.addPersonKeepFilter(editedPerson);","lastModifiedDate":"2024-03-22"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":105,"author":{"gitId":"teojunda"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":106,"author":{"gitId":"teojunda"},"content":" public void execute_editLastViewedPerson_success() {","lastModifiedDate":"2024-03-22"},{"lineNumber":107,"author":{"gitId":"teojunda"},"content":" Person personToEdit \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-22"},{"lineNumber":108,"author":{"gitId":"teojunda"},"content":" model.updateLastViewedPerson(personToEdit);","lastModifiedDate":"2024-03-22"},{"lineNumber":109,"author":{"gitId":"teojunda"},"content":" Person editedPerson \u003d new PersonBuilder(personToEdit).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":110,"author":{"gitId":"teojunda"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2024-03-22"},{"lineNumber":111,"author":{"gitId":"teojunda"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2024-03-22"},{"lineNumber":112,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":113,"author":{"gitId":"teojunda"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2024-03-22"},{"lineNumber":114,"author":{"gitId":"teojunda"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":115,"author":{"gitId":"teojunda"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-22"},{"lineNumber":116,"author":{"gitId":"teojunda"},"content":" expectedModel.updateLastViewedPerson(editedPerson);","lastModifiedDate":"2024-03-22"},{"lineNumber":117,"author":{"gitId":"teojunda"},"content":" expectedModel.deletePerson(model.getFilteredPersonList().get(0));","lastModifiedDate":"2024-03-22"},{"lineNumber":118,"author":{"gitId":"teojunda"},"content":" expectedModel.addPersonKeepFilter(editedPerson);","lastModifiedDate":"2024-03-22"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-22"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":124,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":125,"author":{"gitId":"-"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":126,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05"},{"lineNumber":127,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":129,"author":{"gitId":"teojunda"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_FIELD);","lastModifiedDate":"2024-03-14"},{"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 execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":134,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":136,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2017-05-18"},{"lineNumber":137,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":138,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":141,"author":{"gitId":"teojunda"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_FIELD);","lastModifiedDate":"2024-03-14"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","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_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":146,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18"},{"lineNumber":147,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22"},{"lineNumber":148,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":150,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":153,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18"},{"lineNumber":154,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18"},{"lineNumber":155,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18"},{"lineNumber":156,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18"},{"lineNumber":157,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":158,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":159,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":160,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18"},{"lineNumber":161,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18"},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-05-18"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":164,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":167,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":170,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2018-08-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":179,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":180,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":182,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":183,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":185,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":186,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":188,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":189,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2017-05-25"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":191,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":192,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2017-05-25"},{"lineNumber":193,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":195,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2019-02-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08"}],"authorContributionMap":{"kailashgautham":2,"teojunda":27,"-":176}},{"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":"kailashgautham"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-11"},{"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":"-"},"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":"","lastModifiedDate":"2017-05-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorTest {","lastModifiedDate":"2017-05-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptorWithSameValues \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-05"},{"lineNumber":22,"author":{"gitId":"kailashgautham"},"content":" assertEquals(DESC_AMY, descriptorWithSameValues);","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":25,"author":{"gitId":"kailashgautham"},"content":" assertEquals(DESC_AMY, DESC_AMY);","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":28,"author":{"gitId":"kailashgautham"},"content":" assertNotEquals(null, DESC_AMY);","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":31,"author":{"gitId":"kailashgautham"},"content":" assertNotEquals(5, DESC_AMY);","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":34,"author":{"gitId":"kailashgautham"},"content":" assertNotEquals(DESC_AMY, DESC_BOB);","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" EditPersonDescriptor editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":38,"author":{"gitId":"kailashgautham"},"content":" assertNotEquals(DESC_AMY, editedAmy);","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":42,"author":{"gitId":"kailashgautham"},"content":" assertNotEquals(DESC_AMY, editedAmy);","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":46,"author":{"gitId":"kailashgautham"},"content":" assertNotEquals(DESC_AMY, editedAmy);","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"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 toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"kailashgautham"},"content":" + editPersonDescriptor.getName().orElse(null) + \", classGroup\u003d\"","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"kailashgautham"},"content":" + editPersonDescriptor.getClassGroup().orElse(null) + \", email\u003d\"","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"kailashgautham"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"kailashgautham"},"content":" + editPersonDescriptor.getPhone().orElse(null) + \", telegram\u003d\"","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"kailashgautham"},"content":" + editPersonDescriptor.getTelegram().orElse(null) + \", github\u003d\"","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"kailashgautham"},"content":" + editPersonDescriptor.getGithub().orElse(null) + \"}\";","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"kailashgautham":15,"-":46}},{"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":"g-tejas"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"g-tejas"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":7,"author":{"gitId":"g-tejas"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalPersons;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"g-tejas"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"g-tejas"},"content":"import java.util.List;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"g-tejas"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"g-tejas"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"g-tejas"},"content":"import seedu.address.model.person.ClassGroup;","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"g-tejas"},"content":"import seedu.address.model.person.ListCommandPredicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"g-tejas"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-16"},{"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) and unit tests for ListCommand.","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class ListCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Model expectedModel;","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":32,"author":{"gitId":"g-tejas"},"content":" private final ClassGroup classGroupA1 \u003d new ClassGroup(\"A-1\");","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"g-tejas"},"content":" private final ClassGroup classGroupB1 \u003d new ClassGroup(\"B-1\");","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"g-tejas"},"content":" private final ClassGroup nonExistentClassGroup \u003d new ClassGroup(\"NonExistentClassGroup\");","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"g-tejas"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"g-tejas"},"content":" public void equals() {","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"g-tejas"},"content":" ListCommandPredicate firstPredicate \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"g-tejas"},"content":" new ListCommandPredicate(Optional.of(Collections.singletonList(classGroupA1)));","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"g-tejas"},"content":" ListCommandPredicate secondPredicate \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"g-tejas"},"content":" new ListCommandPredicate(Optional.of(Collections.singletonList(classGroupB1)));","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"g-tejas"},"content":" ListCommand listFirstCommand \u003d new ListCommand(firstPredicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"g-tejas"},"content":" ListCommand listSecondCommand \u003d new ListCommand(secondPredicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"g-tejas"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"g-tejas"},"content":" assertEquals(listFirstCommand, listFirstCommand);","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"g-tejas"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"g-tejas"},"content":" ListCommand listFirstCommandCopy \u003d new ListCommand(firstPredicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"g-tejas"},"content":" assertEquals(listFirstCommand, listFirstCommandCopy);","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"g-tejas"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"g-tejas"},"content":" assertNotEquals(1, listFirstCommand);","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"g-tejas"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"g-tejas"},"content":" assertNotEquals(null, listFirstCommand);","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"g-tejas"},"content":" // different class group -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"g-tejas"},"content":" assertNotEquals(listFirstCommand, listSecondCommand);","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"g-tejas"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-12"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void execute_listIsNotFiltered_showsSameList() {","lastModifiedDate":"2017-08-15"},{"lineNumber":73,"author":{"gitId":"g-tejas"},"content":" int expectedSize \u003d model.getFilteredPersonList().size();","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"g-tejas"},"content":" String expectedMessage \u003d String.format(ListCommand.MESSAGE_LIST_ALL_SUCCESS, expectedSize);","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"g-tejas"},"content":" assertCommandSuccess(new ListCommand(new ListCommandPredicate(Optional.empty())),","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"g-tejas"},"content":" model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"g-tejas"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"g-tejas"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"g-tejas"},"content":" public void execute_singleClassGroup_showsSingleClassGroup() {","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"g-tejas"},"content":" List\u003cPerson\u003e expectedPersons \u003d getTypicalPersons().stream()","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"g-tejas"},"content":" .filter(person -\u003e person.getClassGroup().equals(classGroupA1))","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"g-tejas"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"g-tejas"},"content":" String expectedMessage \u003d String.format(ListCommand.MESSAGE_LIST_CLASS_SUCCESS,","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"g-tejas"},"content":" expectedPersons.size(), classGroupA1);","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"g-tejas"},"content":" ListCommandPredicate predicate \u003d new ListCommandPredicate(Optional.of(List.of(classGroupA1)));","lastModifiedDate":"2024-03-16"},{"lineNumber":87,"author":{"gitId":"g-tejas"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":88,"author":{"gitId":"g-tejas"},"content":" assertCommandSuccess(new ListCommand(predicate), model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-16"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":92,"author":{"gitId":"g-tejas"},"content":" public void execute_multipleClassGroup_showsMultipleClassGroups() {","lastModifiedDate":"2024-03-16"},{"lineNumber":93,"author":{"gitId":"g-tejas"},"content":" List\u003cClassGroup\u003e classGroups \u003d List.of(classGroupA1, classGroupB1);","lastModifiedDate":"2024-03-16"},{"lineNumber":94,"author":{"gitId":"g-tejas"},"content":" ListCommandPredicate predicate \u003d new ListCommandPredicate(Optional.of(classGroups));","lastModifiedDate":"2024-03-16"},{"lineNumber":95,"author":{"gitId":"g-tejas"},"content":" List\u003cPerson\u003e expectedPersons \u003d getTypicalPersons().stream()","lastModifiedDate":"2024-03-16"},{"lineNumber":96,"author":{"gitId":"g-tejas"},"content":" .filter(person -\u003e classGroups.contains(person.getClassGroup()))","lastModifiedDate":"2024-03-16"},{"lineNumber":97,"author":{"gitId":"g-tejas"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2024-03-16"},{"lineNumber":98,"author":{"gitId":"g-tejas"},"content":" String classGroupsString \u003d classGroups.stream()","lastModifiedDate":"2024-03-16"},{"lineNumber":99,"author":{"gitId":"g-tejas"},"content":" .map(Object::toString)","lastModifiedDate":"2024-03-16"},{"lineNumber":100,"author":{"gitId":"g-tejas"},"content":" .collect(Collectors.joining(\", \"));","lastModifiedDate":"2024-03-16"},{"lineNumber":101,"author":{"gitId":"g-tejas"},"content":" String expectedMessage \u003d String.format(ListCommand.MESSAGE_LIST_CLASS_SUCCESS,","lastModifiedDate":"2024-03-16"},{"lineNumber":102,"author":{"gitId":"g-tejas"},"content":" expectedPersons.size(), classGroupsString);","lastModifiedDate":"2024-03-16"},{"lineNumber":103,"author":{"gitId":"g-tejas"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":104,"author":{"gitId":"g-tejas"},"content":" assertCommandSuccess(new ListCommand(predicate), model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-16"},{"lineNumber":105,"author":{"gitId":"g-tejas"},"content":" assertEquals(expectedPersons, model.getFilteredPersonList());","lastModifiedDate":"2024-03-16"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":107,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":108,"author":{"gitId":"g-tejas"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":109,"author":{"gitId":"g-tejas"},"content":" public void execute_nonExistentClassGroup_showsEmptyList() {","lastModifiedDate":"2024-03-16"},{"lineNumber":110,"author":{"gitId":"g-tejas"},"content":" String expectedMessage \u003d String.format(ListCommand.MESSAGE_LIST_CLASS_SUCCESS, 0, nonExistentClassGroup);","lastModifiedDate":"2024-03-16"},{"lineNumber":111,"author":{"gitId":"g-tejas"},"content":" ListCommandPredicate predicate \u003d new ListCommandPredicate(Optional.of(List.of(nonExistentClassGroup)));","lastModifiedDate":"2024-03-16"},{"lineNumber":112,"author":{"gitId":"g-tejas"},"content":" ListCommand command \u003d new ListCommand(predicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":113,"author":{"gitId":"g-tejas"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":114,"author":{"gitId":"g-tejas"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-16"},{"lineNumber":115,"author":{"gitId":"g-tejas"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2024-03-16"},{"lineNumber":116,"author":{"gitId":"g-tejas"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":117,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":118,"author":{"gitId":"g-tejas"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":119,"author":{"gitId":"g-tejas"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-16"},{"lineNumber":120,"author":{"gitId":"g-tejas"},"content":" ListCommandPredicate predicate \u003d new ListCommandPredicate(Optional.of(List.of(classGroupA1)));","lastModifiedDate":"2024-03-16"},{"lineNumber":121,"author":{"gitId":"g-tejas"},"content":" ListCommand listCommand \u003d new ListCommand(predicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":122,"author":{"gitId":"g-tejas"},"content":" String expected \u003d ListCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2024-03-16"},{"lineNumber":123,"author":{"gitId":"g-tejas"},"content":" assertEquals(expected, listCommand.toString());","lastModifiedDate":"2024-03-16"},{"lineNumber":124,"author":{"gitId":"g-tejas"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":125,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":126,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"g-tejas":93,"-":33}},{"path":"src/test/java/seedu/address/logic/commands/ViewCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"YuSoonZ"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"YuSoonZ"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"YuSoonZ"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"YuSoonZ"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"YuSoonZ"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"YuSoonZ"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"YuSoonZ"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"YuSoonZ"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"YuSoonZ"},"content":"import static seedu.address.logic.commands.ViewCommand.MESSAGE_VIEW_PERSON_SUCCESS;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"YuSoonZ"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"YuSoonZ"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"YuSoonZ"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"YuSoonZ"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"YuSoonZ"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"YuSoonZ"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"YuSoonZ"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"YuSoonZ"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"YuSoonZ"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"YuSoonZ"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"YuSoonZ"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"YuSoonZ"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"YuSoonZ"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"YuSoonZ"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"YuSoonZ"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"YuSoonZ"},"content":"public class ViewCommandTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"YuSoonZ"},"content":" private Model model;","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"YuSoonZ"},"content":" @BeforeEach","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"YuSoonZ"},"content":" public void setUp() {","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"YuSoonZ"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"YuSoonZ"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"YuSoonZ"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"YuSoonZ"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"YuSoonZ"},"content":" Person personToView \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"YuSoonZ"},"content":" ViewCommand viewCommand \u003d new ViewCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"YuSoonZ"},"content":" String expectedMessage \u003d String.format(MESSAGE_VIEW_PERSON_SUCCESS,","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"YuSoonZ"},"content":" Messages.format(personToView));","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"YuSoonZ"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"YuSoonZ"},"content":" assertCommandSuccess(viewCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"YuSoonZ"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"YuSoonZ"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"YuSoonZ"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"YuSoonZ"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"YuSoonZ"},"content":" ViewCommand viewCommand \u003d new ViewCommand(outOfBoundIndex);","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"YuSoonZ"},"content":" assertCommandFailure(viewCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"YuSoonZ"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"YuSoonZ"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"YuSoonZ"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"YuSoonZ"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"YuSoonZ"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"YuSoonZ"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"YuSoonZ"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"YuSoonZ"},"content":" ViewCommand viewCommand \u003d new ViewCommand(outOfBoundIndex);","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"YuSoonZ"},"content":" assertCommandFailure(viewCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"YuSoonZ"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"YuSoonZ"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"YuSoonZ"},"content":" public void equals() {","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"YuSoonZ"},"content":" ViewCommand viewFirstCommand \u003d new ViewCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"YuSoonZ"},"content":" ViewCommand viewSecondCommand \u003d new ViewCommand(INDEX_SECOND_PERSON);","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"YuSoonZ"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"YuSoonZ"},"content":" assertEquals(viewFirstCommand, viewFirstCommand);","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"YuSoonZ"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"YuSoonZ"},"content":" ViewCommand viewFirstCommandCopy \u003d new ViewCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"YuSoonZ"},"content":" assertEquals(viewFirstCommand, viewFirstCommandCopy);","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"YuSoonZ"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"YuSoonZ"},"content":" assertNotEquals(1, viewFirstCommand);","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"YuSoonZ"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"YuSoonZ"},"content":" assertNotEquals(null, viewFirstCommand);","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"YuSoonZ"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"YuSoonZ"},"content":" assertNotEquals(viewFirstCommand, viewSecondCommand);","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"YuSoonZ"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"YuSoonZ"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"YuSoonZ"},"content":" public void execute_emptyAddressBook_throwsCommandException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"YuSoonZ"},"content":" // Empty the address book","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"YuSoonZ"},"content":" model \u003d new ModelManager();","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"YuSoonZ"},"content":" ViewCommand viewCommand \u003d new ViewCommand(Index.fromOneBased(1));","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"YuSoonZ"},"content":" assertCommandFailure(viewCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-18"},{"lineNumber":101,"author":{"gitId":"YuSoonZ"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":102,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":103,"author":{"gitId":"YuSoonZ"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":104,"author":{"gitId":"YuSoonZ"},"content":" public void equals_otherObjectNotInstanceOfViewCommand_returnsFalse() {","lastModifiedDate":"2024-03-18"},{"lineNumber":105,"author":{"gitId":"YuSoonZ"},"content":" // Create a ViewCommand object","lastModifiedDate":"2024-03-18"},{"lineNumber":106,"author":{"gitId":"YuSoonZ"},"content":" ViewCommand viewCommand \u003d new ViewCommand(Index.fromOneBased(1));","lastModifiedDate":"2024-03-18"},{"lineNumber":107,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"YuSoonZ"},"content":" // Create another object of a different class","lastModifiedDate":"2024-03-18"},{"lineNumber":109,"author":{"gitId":"YuSoonZ"},"content":" Object otherObject \u003d new Object();","lastModifiedDate":"2024-03-18"},{"lineNumber":110,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"YuSoonZ"},"content":" // Check if they are equal","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"YuSoonZ"},"content":" assertFalse(viewCommand.equals(otherObject));","lastModifiedDate":"2024-03-18"},{"lineNumber":113,"author":{"gitId":"YuSoonZ"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":115,"author":{"gitId":"YuSoonZ"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"YuSoonZ"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"YuSoonZ"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-18"},{"lineNumber":118,"author":{"gitId":"YuSoonZ"},"content":" ViewCommand viewCommand \u003d new ViewCommand(targetIndex);","lastModifiedDate":"2024-03-18"},{"lineNumber":119,"author":{"gitId":"YuSoonZ"},"content":" String expected \u003d ViewCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2024-03-18"},{"lineNumber":120,"author":{"gitId":"YuSoonZ"},"content":" assertEquals(expected, viewCommand.toString());","lastModifiedDate":"2024-03-18"},{"lineNumber":121,"author":{"gitId":"YuSoonZ"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":122,"author":{"gitId":"YuSoonZ"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"YuSoonZ":122}},{"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":"kailashgautham"},"content":"import static seedu.address.logic.commands.CommandTestUtil.CLASS_GROUP_DESC_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"kailashgautham"},"content":"import static seedu.address.logic.commands.CommandTestUtil.CLASS_GROUP_DESC_BOB;","lastModifiedDate":"2024-03-11"},{"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":"kailashgautham"},"content":"import static seedu.address.logic.commands.CommandTestUtil.GITHUB_DESC_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"kailashgautham"},"content":"import static seedu.address.logic.commands.CommandTestUtil.GITHUB_DESC_BOB;","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"kailashgautham"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_CLASS_GROUP_DESC;","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":14,"author":{"gitId":"kailashgautham"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TELEGRAM_DESC;","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2017-12-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23"},{"lineNumber":21,"author":{"gitId":"kailashgautham"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"kailashgautham"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_BOB;","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":26,"author":{"gitId":"kailashgautham"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CLASS_GROUP;","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":28,"author":{"gitId":"kailashgautham"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GITHUB;","lastModifiedDate":"2024-03-11"},{"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":"kailashgautham"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15"},{"lineNumber":41,"author":{"gitId":"kailashgautham"},"content":"import seedu.address.model.person.ClassGroup;","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-06-15"},{"lineNumber":46,"author":{"gitId":"kailashgautham"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":49,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":54,"author":{"gitId":"kailashgautham"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":57,"author":{"gitId":"kailashgautham"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + CLASS_GROUP_DESC_BOB","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"kailashgautham"},"content":" + EMAIL_DESC_BOB + PHONE_DESC_BOB + TELEGRAM_DESC_BOB + GITHUB_DESC_BOB,","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"kailashgautham"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15"},{"lineNumber":63,"author":{"gitId":"kailashgautham"},"content":" Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB)","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":66,"author":{"gitId":"kailashgautham"},"content":" NAME_DESC_BOB + CLASS_GROUP_DESC_BOB + EMAIL_DESC_BOB + PHONE_DESC_BOB","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"kailashgautham"},"content":" + TELEGRAM_DESC_BOB + GITHUB_DESC_BOB,","lastModifiedDate":"2024-03-11"},{"lineNumber":68,"author":{"gitId":"-"},"content":" new AddCommand(expectedPersonMultipleTags));","lastModifiedDate":"2023-07-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":73,"author":{"gitId":"kailashgautham"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + CLASS_GROUP_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"kailashgautham"},"content":" + PHONE_DESC_BOB + TELEGRAM_DESC_BOB + GITHUB_DESC_BOB;","lastModifiedDate":"2024-03-11"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":78,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":80,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":82,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":86,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":90,"author":{"gitId":"kailashgautham"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY","lastModifiedDate":"2024-03-11"},{"lineNumber":91,"author":{"gitId":"-"},"content":" + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":92,"author":{"gitId":"kailashgautham"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_CLASS_GROUP,","lastModifiedDate":"2024-03-11"},{"lineNumber":93,"author":{"gitId":"kailashgautham"},"content":" PREFIX_EMAIL, PREFIX_PHONE, PREFIX_GITHUB, PREFIX_TELEGRAM));","lastModifiedDate":"2024-03-11"},{"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":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":111,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":124,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":125,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":126,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15"},{"lineNumber":127,"author":{"gitId":"kailashgautham"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":128,"author":{"gitId":"kailashgautham"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + CLASS_GROUP_DESC_AMY + EMAIL_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2024-03-11"},{"lineNumber":129,"author":{"gitId":"kailashgautham"},"content":" + TELEGRAM_DESC_AMY + GITHUB_DESC_AMY, new AddCommand(expectedPerson));","lastModifiedDate":"2024-03-11"},{"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_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":134,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":136,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":137,"author":{"gitId":"kailashgautham"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB,","lastModifiedDate":"2024-03-11"},{"lineNumber":138,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":140,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":141,"author":{"gitId":"kailashgautham"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB,","lastModifiedDate":"2024-03-11"},{"lineNumber":142,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":144,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":145,"author":{"gitId":"kailashgautham"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB,","lastModifiedDate":"2024-03-11"},{"lineNumber":146,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":148,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15"},{"lineNumber":149,"author":{"gitId":"kailashgautham"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB,","lastModifiedDate":"2024-03-11"},{"lineNumber":150,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":153,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":154,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":155,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":156,"author":{"gitId":"kailashgautham"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + CLASS_GROUP_DESC_BOB","lastModifiedDate":"2024-03-11"},{"lineNumber":157,"author":{"gitId":"kailashgautham"},"content":" + EMAIL_DESC_BOB + PHONE_DESC_BOB, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-11"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":159,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15"},{"lineNumber":160,"author":{"gitId":"kailashgautham"},"content":" assertParseFailure(parser, NAME_DESC_BOB + CLASS_GROUP_DESC_BOB","lastModifiedDate":"2024-03-11"},{"lineNumber":161,"author":{"gitId":"kailashgautham"},"content":" + EMAIL_DESC_BOB + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-11"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":163,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15"},{"lineNumber":164,"author":{"gitId":"kailashgautham"},"content":" assertParseFailure(parser, NAME_DESC_BOB + CLASS_GROUP_DESC_BOB","lastModifiedDate":"2024-03-11"},{"lineNumber":165,"author":{"gitId":"kailashgautham"},"content":" + INVALID_EMAIL_DESC + PHONE_DESC_BOB, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-11"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":167,"author":{"gitId":"kailashgautham"},"content":" // invalid class group","lastModifiedDate":"2024-03-11"},{"lineNumber":168,"author":{"gitId":"kailashgautham"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_CLASS_GROUP_DESC","lastModifiedDate":"2024-03-11"},{"lineNumber":169,"author":{"gitId":"kailashgautham"},"content":" + INVALID_EMAIL_DESC + PHONE_DESC_BOB, ClassGroup.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-11"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":171,"author":{"gitId":"kailashgautham"},"content":" // invalid telegram","lastModifiedDate":"2024-03-11"},{"lineNumber":172,"author":{"gitId":"kailashgautham"},"content":" assertParseFailure(parser, NAME_DESC_BOB + CLASS_GROUP_DESC_BOB","lastModifiedDate":"2024-03-11"},{"lineNumber":173,"author":{"gitId":"kailashgautham"},"content":" + EMAIL_DESC_BOB + PHONE_DESC_BOB + INVALID_TELEGRAM_DESC, Telegram.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-11"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":176,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":177,"author":{"gitId":"kailashgautham"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + INVALID_CLASS_GROUP_DESC","lastModifiedDate":"2024-03-11"},{"lineNumber":178,"author":{"gitId":"kailashgautham"},"content":" + EMAIL_DESC_BOB + PHONE_DESC_BOB, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-11"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":181,"author":{"gitId":"kailashgautham"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + CLASS_GROUP_DESC_BOB","lastModifiedDate":"2024-03-11"},{"lineNumber":182,"author":{"gitId":"kailashgautham"},"content":" + EMAIL_DESC_BOB + PHONE_DESC_BOB,","lastModifiedDate":"2024-03-11"},{"lineNumber":183,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"kailashgautham":48,"-":137}},{"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":"YuSoonZ"},"content":"import seedu.address.logic.commands.ViewCommand;","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command);","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_edit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2018-03-26"},{"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":"YuSoonZ"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"YuSoonZ"},"content":" public void parseCommand_view() throws Exception {","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"YuSoonZ"},"content":" assertTrue(parser.parseCommand(ViewCommand.COMMAND_WORD + \" 3\") instanceof ViewCommand);","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"YuSoonZ"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23"},{"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_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"YuSoonZ":6,"-":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":"kailashgautham"},"content":"import static seedu.address.logic.commands.CommandTestUtil.CLASS_GROUP_DESC_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"kailashgautham"},"content":"import static seedu.address.logic.commands.CommandTestUtil.GITHUB_DESC_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05"},{"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":"kailashgautham"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"kailashgautham"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_CLASS_GROUP_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":17,"author":{"gitId":"kailashgautham"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GITHUB_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":21,"author":{"gitId":"kailashgautham"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-04"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":41,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":46,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-07-06"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","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_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"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_invalidValue_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2018-09-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2018-09-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2018-09-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":81,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":84,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04"},{"lineNumber":85,"author":{"gitId":"kailashgautham"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_PHONE_AMY,","lastModifiedDate":"2024-03-11"},{"lineNumber":86,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":92,"author":{"gitId":"kailashgautham"},"content":" String userInput \u003d targetIndex.getOneBased() + CLASS_GROUP_DESC_AMY + EMAIL_DESC_AMY + PHONE_DESC_BOB","lastModifiedDate":"2024-03-11"},{"lineNumber":93,"author":{"gitId":"kailashgautham"},"content":" + NAME_DESC_AMY + TELEGRAM_DESC_AMY + GITHUB_DESC_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":95,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-05-04"},{"lineNumber":96,"author":{"gitId":"kailashgautham"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY)","lastModifiedDate":"2024-03-11"},{"lineNumber":97,"author":{"gitId":"kailashgautham"},"content":" .withClassGroup(VALID_CLASS_GROUP_AMY).withTelegram(VALID_TELEGRAM_AMY)","lastModifiedDate":"2024-03-11"},{"lineNumber":98,"author":{"gitId":"kailashgautham"},"content":" .withGithub(VALID_GITHUB_AMY).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":99,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":107,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":109,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-04"},{"lineNumber":110,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":111,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":118,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04"},{"lineNumber":119,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":120,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":121,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":122,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":125,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2017-05-04"},{"lineNumber":126,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":127,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":128,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","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":" // email","lastModifiedDate":"2017-05-04"},{"lineNumber":132,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":133,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":134,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":140,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14"},{"lineNumber":141,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-07-14"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":143,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14"},{"lineNumber":144,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":145,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2023-07-14"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":147,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":149,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14"},{"lineNumber":150,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2023-07-14"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":154,"author":{"gitId":"-"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":155,"author":{"gitId":"kailashgautham"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2024-03-11"},{"lineNumber":156,"author":{"gitId":"kailashgautham"},"content":" + PHONE_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2024-03-11"},{"lineNumber":157,"author":{"gitId":"kailashgautham"},"content":" + PHONE_DESC_BOB + EMAIL_DESC_BOB;","lastModifiedDate":"2024-03-11"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":159,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":160,"author":{"gitId":"kailashgautham"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL));","lastModifiedDate":"2024-03-11"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":162,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14"},{"lineNumber":163,"author":{"gitId":"kailashgautham"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2024-03-11"},{"lineNumber":164,"author":{"gitId":"kailashgautham"},"content":" + INVALID_PHONE_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2024-03-11"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":167,"author":{"gitId":"kailashgautham"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL));","lastModifiedDate":"2024-03-11"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":169,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04"}],"authorContributionMap":{"kailashgautham":19,"-":150}},{"path":"src/test/java/seedu/address/logic/parser/ViewCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"YuSoonZ"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"YuSoonZ"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"YuSoonZ"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"YuSoonZ"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"YuSoonZ"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"YuSoonZ"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"YuSoonZ"},"content":"import seedu.address.logic.commands.ViewCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"YuSoonZ"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"YuSoonZ"},"content":"public class ViewCommandParserTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"YuSoonZ"},"content":" private ViewCommandParser parser;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"YuSoonZ"},"content":" @BeforeEach","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"YuSoonZ"},"content":" public void setUp() {","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"YuSoonZ"},"content":" parser \u003d new ViewCommandParser();","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"YuSoonZ"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"YuSoonZ"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"YuSoonZ"},"content":" public void parse_validInputArguments_success() throws ParseException {","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"YuSoonZ"},"content":" // Define valid input arguments","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"YuSoonZ"},"content":" String validArgs \u003d \"1\";","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"YuSoonZ"},"content":" // Parse the arguments","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"YuSoonZ"},"content":" ViewCommand viewCommand \u003d parser.parse(validArgs);","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"YuSoonZ"},"content":" // Verify the correctness of the parsed command","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"YuSoonZ"},"content":" assertEquals(new ViewCommand(Index.fromOneBased(1)), viewCommand);","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"YuSoonZ"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"YuSoonZ"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"YuSoonZ"},"content":" public void parse_invalidInputArguments_throwsParseException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"YuSoonZ"},"content":" // Define invalid input arguments","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"YuSoonZ"},"content":" String invalidArgs \u003d \"abc\";","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"YuSoonZ"},"content":" // Parsing invalid arguments should throw a ParseException","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"YuSoonZ"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(invalidArgs));","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"YuSoonZ"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"YuSoonZ"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"YuSoonZ"},"content":" public void parse_invalidIndexZero_throwsParseException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"YuSoonZ"},"content":" // Define input arguments with invalid zero-based index","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"YuSoonZ"},"content":" String invalidArgs \u003d \"0\";","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"YuSoonZ"},"content":" // Parsing invalid index should throw a ParseException","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"YuSoonZ"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(invalidArgs));","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"YuSoonZ"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"YuSoonZ"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"YuSoonZ"},"content":" public void parse_invalidIndexNegative_throwsParseException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"YuSoonZ"},"content":" // Define input arguments with invalid negative index","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"YuSoonZ"},"content":" String invalidArgs \u003d \"-1\";","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"YuSoonZ"},"content":" // Parsing invalid index should throw a ParseException","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"YuSoonZ"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(invalidArgs));","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"YuSoonZ"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"YuSoonZ"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"YuSoonZ"},"content":" public void parse_additionalArguments_throwsParseException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"YuSoonZ"},"content":" // Define input arguments with additional arguments beyond the index","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"YuSoonZ"},"content":" String invalidArgs \u003d \"1 additional\";","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"YuSoonZ"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"YuSoonZ"},"content":" // Parsing additional arguments should throw a ParseException","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"YuSoonZ"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(invalidArgs));","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"YuSoonZ"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"YuSoonZ"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"YuSoonZ":70}},{"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.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2016-12-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2016-12-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2016-12-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-12-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-12-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2018-08-07"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-04-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class AddressBookTest {","lastModifiedDate":"2016-12-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2016-12-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2016-12-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), addressBook.getPersonList());","lastModifiedDate":"2016-12-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.resetData(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void resetData_withValidReadOnlyAddressBook_replacesData() {","lastModifiedDate":"2016-12-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" AddressBook newData \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" addressBook.resetData(newData);","lastModifiedDate":"2016-12-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertEquals(newData, addressBook);","lastModifiedDate":"2016-12-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void resetData_withDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-07"},{"lineNumber":46,"author":{"gitId":"-"},"content":" // Two persons with the same identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":47,"author":{"gitId":"kailashgautham"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e newPersons \u003d Arrays.asList(ALICE, editedAlice);","lastModifiedDate":"2018-04-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" AddressBookStub newData \u003d new AddressBookStub(newPersons);","lastModifiedDate":"2018-03-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e addressBook.resetData(newData));","lastModifiedDate":"2019-03-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasPerson(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertFalse(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"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_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":66,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public void hasPerson_personWithSameIdentityFieldsInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":72,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":73,"author":{"gitId":"kailashgautham"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(editedAlice));","lastModifiedDate":"2018-08-06"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void getPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e addressBook.getPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"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":" String expected \u003d AddressBook.class.getCanonicalName() + \"{persons\u003d\" + addressBook.getPersonList() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertEquals(expected, addressBook.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":"2016-12-24"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * A stub ReadOnlyAddressBook whose persons list can violate interface constraints.","lastModifiedDate":"2018-03-29"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-24"},{"lineNumber":91,"author":{"gitId":"-"},"content":" private static class AddressBookStub implements ReadOnlyAddressBook {","lastModifiedDate":"2016-12-24"},{"lineNumber":92,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e persons \u003d FXCollections.observableArrayList();","lastModifiedDate":"2018-01-10"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":94,"author":{"gitId":"-"},"content":" AddressBookStub(Collection\u003cPerson\u003e persons) {","lastModifiedDate":"2018-03-29"},{"lineNumber":95,"author":{"gitId":"-"},"content":" this.persons.setAll(persons);","lastModifiedDate":"2016-12-24"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-24"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":100,"author":{"gitId":"-"},"content":" return persons;","lastModifiedDate":"2016-12-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","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"}],"authorContributionMap":{"kailashgautham":2,"-":102}},{"path":"src/test/java/seedu/address/model/person/ClassGroupTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"g-tejas"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"g-tejas"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"g-tejas"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"g-tejas"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"g-tejas"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"g-tejas"},"content":"public class ClassGroupTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"g-tejas"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"g-tejas"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"g-tejas"},"content":" assertThrows(NullPointerException.class, () -\u003e new ClassGroup(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"g-tejas"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"g-tejas"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"g-tejas"},"content":" public void constructor_invalidClassGroup_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"g-tejas"},"content":" String invalidClassGroup \u003d \"\";","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"g-tejas"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new ClassGroup(invalidClassGroup));","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"g-tejas"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"g-tejas"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"g-tejas"},"content":" public void isValidClassGroup() {","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"g-tejas"},"content":" // null ClassGroup","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"g-tejas"},"content":" assertThrows(NullPointerException.class, () -\u003e ClassGroup.isValidClassGroup(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"g-tejas"},"content":" // blank ClassGroup","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"g-tejas"},"content":" assertFalse(ClassGroup.isValidClassGroup(\"\")); // empty string","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"g-tejas"},"content":" assertFalse(ClassGroup.isValidClassGroup(\" \")); // spaces only","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"g-tejas"},"content":" // invalid parts","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"g-tejas"},"content":" assertFalse(ClassGroup.isValidClassGroup(\"-\")); // starts with dash","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"g-tejas"},"content":" assertFalse(ClassGroup.isValidClassGroup(\"F14-\")); // ends with dash","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"g-tejas"},"content":" assertFalse(ClassGroup.isValidClassGroup(\"-F14\")); // begin with dash","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"g-tejas"},"content":" assertFalse(ClassGroup.isValidClassGroup(\"@F14\")); // non alpha-numeric characters","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"g-tejas"},"content":" assertFalse(ClassGroup.isValidClassGroup(\" F14\")); // leading space","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"g-tejas"},"content":" assertFalse(ClassGroup.isValidClassGroup(\"F14 \")); // trailing space","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"g-tejas"},"content":" assertFalse(ClassGroup.isValidClassGroup(\"F143 3\")); // space in middle","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"g-tejas"},"content":" // valid ClassGroup","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"g-tejas"},"content":" assertTrue(ClassGroup.isValidClassGroup(\"A-1\")); // One dash","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"g-tejas"},"content":" assertTrue(ClassGroup.isValidClassGroup(\"A\")); // no dash at all","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"g-tejas"},"content":" assertTrue(ClassGroup.isValidClassGroup(\"CS2103-F14-3\")); // multiple dashes","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"g-tejas"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"g-tejas"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"g-tejas"},"content":" public void equals() {","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"g-tejas"},"content":" ClassGroup classGroup \u003d new ClassGroup(\"A-1\");","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"g-tejas"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"g-tejas"},"content":" assertTrue(classGroup.equals(new ClassGroup(\"A-1\")));","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"g-tejas"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"g-tejas"},"content":" assertTrue(classGroup.equals(classGroup));","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"g-tejas"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"g-tejas"},"content":" assertFalse(classGroup.equals(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"g-tejas"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"g-tejas"},"content":" assertFalse(classGroup.equals(5.0f));","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"g-tejas"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"g-tejas"},"content":" assertFalse(classGroup.equals(new ClassGroup(\"B-2\")));","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"g-tejas"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"g-tejas"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"g-tejas":65}},{"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":"-"},"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":"-"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").withPhone(\"12345\")","lastModifiedDate":"2017-06-12"},{"lineNumber":74,"author":{"gitId":"kailashgautham"},"content":" .withEmail(\"alice@email.com\").withClassGroup(\"B01\").withTelegram(\"@alice\")","lastModifiedDate":"2024-03-11"},{"lineNumber":75,"author":{"gitId":"kailashgautham"},"content":" .withGithub(\"alice\").build()));","lastModifiedDate":"2024-03-11"},{"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":{"kailashgautham":2,"-":84}},{"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":"kailashgautham"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_CLASS_GROUP_BOB;","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":8,"author":{"gitId":"kailashgautham"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GITHUB_BOB;","lastModifiedDate":"2024-03-11"},{"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":"kailashgautham"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_BOB;","lastModifiedDate":"2024-03-11"},{"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":"2018-04-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":24,"author":{"gitId":"teojunda"},"content":" assertTrue(ALICE.checkDuplicateField(ALICE));","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":27,"author":{"gitId":"teojunda"},"content":" assertFalse(ALICE.checkDuplicateField(null));","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":29,"author":{"gitId":"kailashgautham"},"content":" // same name, all other attributes different -\u003e returns false","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2020-12-18"},{"lineNumber":31,"author":{"gitId":"kailashgautham"},"content":" .withClassGroup(VALID_CLASS_GROUP_BOB).withTelegram(VALID_TELEGRAM_BOB)","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"kailashgautham"},"content":" .withGithub(VALID_GITHUB_BOB).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"teojunda"},"content":" assertFalse(ALICE.checkDuplicateField(editedAlice));","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"kailashgautham"},"content":" String expected \u003d Person.class.getCanonicalName()","lastModifiedDate":"2024-03-11"},{"lineNumber":70,"author":{"gitId":"kailashgautham"},"content":" + \"{name\u003d\" + ALICE.getName() + \", classGroup\u003d\" + ALICE.getClassGroup()","lastModifiedDate":"2024-03-11"},{"lineNumber":71,"author":{"gitId":"kailashgautham"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", phone\u003d\" + ALICE.getPhone() + \", telegram\u003d\"","lastModifiedDate":"2024-03-11"},{"lineNumber":72,"author":{"gitId":"kailashgautham"},"content":" + (ALICE.getTelegram().isPresent() ? ALICE.getTelegram().get().telegramId : \"\") + \", github\u003d\"","lastModifiedDate":"2024-03-11"},{"lineNumber":73,"author":{"gitId":"kailashgautham"},"content":" + (ALICE.getGithub().isPresent() ? ALICE.getGithub().get().githubId : \"\") + \"}\";","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"kailashgautham":11,"teojunda":3,"-":62}},{"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 org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"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.Phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"kailashgautham"},"content":" private static final String INVALID_CLASS_GROUP \u003d \" \";","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"kailashgautham"},"content":" private static final String INVALID_TELEGRAM \u003d \"racheljames\";","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"kailashgautham"},"content":" private static final String INVALID_GITHUB \u003d \"github username\";","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","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":"kailashgautham"},"content":" private static final String VALID_CLASS_GROUP \u003d BENSON.getClassGroup().toString();","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"kailashgautham"},"content":" private static final String VALID_TELEGRAM \u003d BENSON.getTelegram().toString();","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"kailashgautham"},"content":" private static final String VALID_GITHUB \u003d BENSON.getGithub().toString();","lastModifiedDate":"2024-03-11"},{"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 toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","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":" @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":"kailashgautham"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE,","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"kailashgautham"},"content":" VALID_EMAIL, VALID_CLASS_GROUP, VALID_TELEGRAM, VALID_GITHUB);","lastModifiedDate":"2024-03-11"},{"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":"2019-03-14"},{"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":"kailashgautham"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_PHONE,","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"kailashgautham"},"content":" VALID_EMAIL, VALID_CLASS_GROUP, VALID_TELEGRAM, VALID_GITHUB);","lastModifiedDate":"2024-03-11"},{"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":"kailashgautham"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE,","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"kailashgautham"},"content":" VALID_EMAIL, VALID_CLASS_GROUP, VALID_TELEGRAM, VALID_GITHUB);","lastModifiedDate":"2024-03-11"},{"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":"kailashgautham"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null,","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"kailashgautham"},"content":" VALID_EMAIL, VALID_CLASS_GROUP, VALID_TELEGRAM, VALID_GITHUB);","lastModifiedDate":"2024-03-11"},{"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":"kailashgautham"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE,","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"kailashgautham"},"content":" INVALID_EMAIL, VALID_CLASS_GROUP, VALID_TELEGRAM, VALID_GITHUB);","lastModifiedDate":"2024-03-11"},{"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":"kailashgautham"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME,","lastModifiedDate":"2024-03-11"},{"lineNumber":82,"author":{"gitId":"kailashgautham"},"content":" VALID_PHONE, null, VALID_CLASS_GROUP, VALID_TELEGRAM, VALID_GITHUB);","lastModifiedDate":"2024-03-11"},{"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"}],"authorContributionMap":{"kailashgautham":18,"-":68}},{"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":"kailashgautham"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":6,"author":{"gitId":"kailashgautham"},"content":"import seedu.address.model.person.ClassGroup;","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-12-23"},{"lineNumber":8,"author":{"gitId":"kailashgautham"},"content":"import seedu.address.model.person.Github;","lastModifiedDate":"2024-03-11"},{"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":"kailashgautham"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-03-11"},{"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":"-"},"content":"public class EditPersonDescriptorBuilder {","lastModifiedDate":"2017-05-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private EditPersonDescriptor descriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder() {","lastModifiedDate":"2017-05-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-05-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(EditPersonDescriptor descriptor) {","lastModifiedDate":"2017-05-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" this.descriptor \u003d new EditPersonDescriptor(descriptor);","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":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Returns an {@code EditPersonDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2017-06-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":33,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-06-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" descriptor.setName(person.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" descriptor.setPhone(person.getPhone());","lastModifiedDate":"2017-06-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":37,"author":{"gitId":"kailashgautham"},"content":" descriptor.setClassGroup(person.getClassGroup());","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"kailashgautham"},"content":" descriptor.setTelegram(person.getTelegram());","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"kailashgautham"},"content":" descriptor.setGithub(person.getGithub());","lastModifiedDate":"2024-03-11"},{"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":"kailashgautham"},"content":" * Sets the {@code ClassGroup} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-11"},{"lineNumber":68,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":69,"author":{"gitId":"kailashgautham"},"content":" public EditPersonDescriptorBuilder withClassGroup(String classGroup) {","lastModifiedDate":"2024-03-11"},{"lineNumber":70,"author":{"gitId":"kailashgautham"},"content":" descriptor.setClassGroup(new ClassGroup(classGroup));","lastModifiedDate":"2024-03-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":"kailashgautham"},"content":" * Sets the {@code Telegram} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-11"},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":77,"author":{"gitId":"kailashgautham"},"content":" public EditPersonDescriptorBuilder withTelegram(String telegram) {","lastModifiedDate":"2024-03-11"},{"lineNumber":78,"author":{"gitId":"kailashgautham"},"content":" descriptor.setTelegram(Optional.of(new Telegram(telegram)));","lastModifiedDate":"2024-03-11"},{"lineNumber":79,"author":{"gitId":"kailashgautham"},"content":" return this;","lastModifiedDate":"2024-03-11"},{"lineNumber":80,"author":{"gitId":"kailashgautham"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":81,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":82,"author":{"gitId":"kailashgautham"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":83,"author":{"gitId":"kailashgautham"},"content":" * Sets the {@code Github} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-11"},{"lineNumber":84,"author":{"gitId":"kailashgautham"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":85,"author":{"gitId":"kailashgautham"},"content":" public EditPersonDescriptorBuilder withGithub(String github) {","lastModifiedDate":"2024-03-11"},{"lineNumber":86,"author":{"gitId":"kailashgautham"},"content":" descriptor.setGithub(Optional.of(new Github(github)));","lastModifiedDate":"2024-03-11"},{"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":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05"},{"lineNumber":91,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":93,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"kailashgautham":21,"-":72}},{"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":"kailashgautham"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"kailashgautham"},"content":"import seedu.address.model.person.ClassGroup;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18"},{"lineNumber":7,"author":{"gitId":"kailashgautham"},"content":"import seedu.address.model.person.Github;","lastModifiedDate":"2024-03-11"},{"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":"kailashgautham"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18"},{"lineNumber":21,"author":{"gitId":"kailashgautham"},"content":" public static final String DEFAULT_TELEGRAM \u003d \"@amybee\";","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"kailashgautham"},"content":" public static final String DEFAULT_GITHUB \u003d \"amybee\";","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"kailashgautham"},"content":" public static final String DEFAULT_CLASS_GROUP \u003d \"B01\";","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":28,"author":{"gitId":"kailashgautham"},"content":" private ClassGroup classGroup;","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"kailashgautham"},"content":" private Optional\u003cTelegram\u003e telegram;","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"kailashgautham"},"content":" private Optional\u003cGithub\u003e github;","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20"},{"lineNumber":37,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20"},{"lineNumber":38,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20"},{"lineNumber":39,"author":{"gitId":"kailashgautham"},"content":" github \u003d Optional.of(new Github(DEFAULT_GITHUB));","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"kailashgautham"},"content":" telegram \u003d Optional.of(new Telegram(DEFAULT_TELEGRAM));","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"kailashgautham"},"content":" classGroup \u003d new ClassGroup(DEFAULT_CLASS_GROUP);","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10"},{"lineNumber":48,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20"},{"lineNumber":51,"author":{"gitId":"kailashgautham"},"content":" github \u003d personToCopy.getGithub();","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"kailashgautham"},"content":" telegram \u003d personToCopy.getTelegram();","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"kailashgautham"},"content":" classGroup \u003d personToCopy.getClassGroup();","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":68,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20"},{"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":" public Person build() {","lastModifiedDate":"2017-04-05"},{"lineNumber":81,"author":{"gitId":"kailashgautham"},"content":" return new Person(name, classGroup, email, phone, telegram, github);","lastModifiedDate":"2024-03-11"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":85,"author":{"gitId":"kailashgautham"},"content":" * Sets the {@code ClassGroup} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-11"},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":87,"author":{"gitId":"kailashgautham"},"content":" public PersonBuilder withClassGroup(String classGroup) {","lastModifiedDate":"2024-03-11"},{"lineNumber":88,"author":{"gitId":"kailashgautham"},"content":" this.classGroup \u003d new ClassGroup(classGroup);","lastModifiedDate":"2024-03-11"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2024-03-11"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":93,"author":{"gitId":"kailashgautham"},"content":" * Sets the {@code Telegram} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-11"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":95,"author":{"gitId":"kailashgautham"},"content":" public PersonBuilder withTelegram(String telegram) {","lastModifiedDate":"2024-03-11"},{"lineNumber":96,"author":{"gitId":"kailashgautham"},"content":" this.telegram \u003d Optional.of(new Telegram(telegram));","lastModifiedDate":"2024-03-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2024-03-11"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":100,"author":{"gitId":"kailashgautham"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":101,"author":{"gitId":"kailashgautham"},"content":" * Sets the {@code Github} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-11"},{"lineNumber":102,"author":{"gitId":"kailashgautham"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":103,"author":{"gitId":"kailashgautham"},"content":" public PersonBuilder withGithub(String github) {","lastModifiedDate":"2024-03-11"},{"lineNumber":104,"author":{"gitId":"kailashgautham"},"content":" this.github \u003d Optional.of(new Github(github));","lastModifiedDate":"2024-03-13"},{"lineNumber":105,"author":{"gitId":"kailashgautham"},"content":" return this;","lastModifiedDate":"2024-03-11"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":107,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03"}],"authorContributionMap":{"kailashgautham":29,"-":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":"kailashgautham"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CLASS_GROUP;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"kailashgautham"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GITHUB;","lastModifiedDate":"2024-03-11"},{"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":"kailashgautham"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2018-03-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static String getAddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":23,"author":{"gitId":"-"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2017-03-29"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":30,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" sb.append(PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2017-06-06"},{"lineNumber":32,"author":{"gitId":"kailashgautham"},"content":" sb.append(PREFIX_CLASS_GROUP + person.getClassGroup().classGroup + \" \");","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":34,"author":{"gitId":"kailashgautham"},"content":" sb.append(PREFIX_PHONE + person.getPhone().value + \" \");","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"kailashgautham"},"content":" sb.append(PREFIX_TELEGRAM + (person.getTelegram().isPresent()","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"kailashgautham"},"content":" ? person.getTelegram().get().telegramId : \"\") + \" \");","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"kailashgautham"},"content":" sb.append(PREFIX_GITHUB + (person.getGithub().isPresent()","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"kailashgautham"},"content":" ? person.getGithub().get().githubId : \"\") + \" \");","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26"},{"lineNumber":46,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":48,"author":{"gitId":"kailashgautham"},"content":" descriptor.getClassGroup().ifPresent(classGroup -\u003e sb.append(PREFIX_CLASS_GROUP)","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"kailashgautham"},"content":" .append(classGroup.classGroup).append(\" \"));","lastModifiedDate":"2024-03-11"},{"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":"kailashgautham"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"kailashgautham"},"content":" descriptor.getTelegram().ifPresent(telegram -\u003e sb.append(PREFIX_TELEGRAM)","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"kailashgautham"},"content":" .append(telegram.telegramId).append(\" \"));","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"kailashgautham"},"content":" descriptor.getGithub().ifPresent(github -\u003e sb.append(PREFIX_GITHUB).append(github.githubId).append(\" \"));","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05"}],"authorContributionMap":{"kailashgautham":15,"-":42}},{"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":"kailashgautham"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_CLASS_GROUP_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"kailashgautham"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_CLASS_GROUP_BOB;","lastModifiedDate":"2024-03-11"},{"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":"kailashgautham"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GITHUB_BOB;","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":12,"author":{"gitId":"kailashgautham"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"kailashgautham"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_BOB;","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07"},{"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":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final Person ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2018-01-10"},{"lineNumber":28,"author":{"gitId":"g-tejas"},"content":" .withClassGroup(\"A-1\").withEmail(\"alice@example.com\")","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2018-04-19"},{"lineNumber":30,"author":{"gitId":"kailashgautham"},"content":" .withTelegram(\"@alicepauline\").withGithub(\"alicep\").build();","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10"},{"lineNumber":33,"author":{"gitId":"g-tejas"},"content":" .withClassGroup(\"A-1\").withEmail(\"johnd@example.com\")","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"kailashgautham"},"content":" .withPhone(\"98765432\")","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"kailashgautham"},"content":" .withTelegram(\"@bensonmeier\").withGithub(\"meierbenson\").build();","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"kailashgautham"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\")","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"g-tejas"},"content":" .withClassGroup(\"A-2\").withEmail(\"heinz@example.com\")","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"kailashgautham"},"content":" .withPhone(\"95352563\")","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"kailashgautham"},"content":" .withTelegram(\"@carlkurz\").withGithub(\"kurzcarl\").build();","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"kailashgautham"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\")","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"g-tejas"},"content":" .withClassGroup(\"A-2\").withEmail(\"cornelia@example.com\")","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"kailashgautham"},"content":" .withPhone(\"87652533\")","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"kailashgautham"},"content":" .withTelegram(\"@danielmeier\").withGithub(\"meierdaniel\").build();","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"kailashgautham"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\")","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"g-tejas"},"content":" .withClassGroup(\"B-1\").withEmail(\"werner@example.com\")","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"kailashgautham"},"content":" .withPhone(\"9482224\")","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"kailashgautham"},"content":" .withTelegram(\"@ellemeyer\").withGithub(\"meyerelle\").build();","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"kailashgautham"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\")","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"g-tejas"},"content":" .withClassGroup(\"B-1\").withEmail(\"lydia@example.com\")","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"kailashgautham"},"content":" .withPhone(\"9482427\")","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"kailashgautham"},"content":" .withTelegram(\"@fionakunz\").withGithub(\"kunzfiona\").build();","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"kailashgautham"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\")","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"g-tejas"},"content":" .withClassGroup(\"B-2\").withEmail(\"anna@example.com\")","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"kailashgautham"},"content":" .withPhone(\"9482442\")","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"kailashgautham"},"content":" .withTelegram(\"@georgebest\").withGithub(\"bestgeorge\").build();","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":63,"author":{"gitId":"g-tejas"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\")","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"g-tejas"},"content":" .withClassGroup(\"C-1\").withEmail(\"stefan@example.com\")","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"g-tejas"},"content":" .withPhone(\"8482424\")","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"kailashgautham"},"content":" .withTelegram(\"@hoonmeier\").withGithub(\"meierhoon\").build();","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"kailashgautham"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":68,"author":{"gitId":"g-tejas"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\")","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"g-tejas"},"content":" .withClassGroup(\"C-2\").withEmail(\"hans@example.com\")","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"g-tejas"},"content":" .withPhone(\"8482131\")","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"kailashgautham"},"content":" .withTelegram(\"@idamueller\").withGithub(\"muellerida\").build();","lastModifiedDate":"2024-03-11"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22"},{"lineNumber":74,"author":{"gitId":"g-tejas"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"g-tejas"},"content":" .withClassGroup(VALID_CLASS_GROUP_AMY).withEmail(VALID_EMAIL_AMY)","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"g-tejas"},"content":" .withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"g-tejas"},"content":" .withTelegram(VALID_TELEGRAM_AMY).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"g-tejas"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"g-tejas"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"g-tejas"},"content":" .withClassGroup(VALID_CLASS_GROUP_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"g-tejas"},"content":" .withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"g-tejas"},"content":" .withTelegram(VALID_TELEGRAM_BOB).withGithub(VALID_GITHUB_BOB).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05"},{"lineNumber":92,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05"},{"lineNumber":93,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10"},{"lineNumber":94,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10"},{"lineNumber":100,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04"},{"lineNumber":102,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13"}],"authorContributionMap":{"kailashgautham":32,"g-tejas":22,"-":48}}] diff --git a/AY2324S2-CS2103T-F14-3_tp_master/commits.json b/AY2324S2-CS2103T-F14-3_tp_master/commits.json index 328789ed..d00dd201 100644 --- a/AY2324S2-CS2103T-F14-3_tp_master/commits.json +++ b/AY2324S2-CS2103T-F14-3_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"YuSoonZ":[{"date":"2024-03-05","commitResults":[{"hash":"b9c56c9dda92dd27201d81764616fc60791aa291","isMergeCommit":false,"messageTitle":"Update yu soon\u0027s aboutus page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":51,"deletions":5}}},{"hash":"f1d821810cc1b123fdbf1e4faa1a6eb684b44ee2","isMergeCommit":false,"messageTitle":"Update name of image","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"36ed2c103c058a38ada0600bc1c428ccb74db4df","isMergeCommit":true,"messageTitle":"Merge pull request #29 from YuSoonZ/yusoong-aboutus","messageBody":"Update yu soon\u0027s aboutus page","fileTypesAndContributionMap":{}}]},{"date":"2024-03-18","commitResults":[{"hash":"749f4cd82087c5d98b0523c5ff06dedbf459fdad","isMergeCommit":false,"messageTitle":"Update User Guide to add view command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":13,"deletions":0}}},{"hash":"a03cb6e3348d04f4eee5a670183b6c7e445f069f","isMergeCommit":false,"messageTitle":"Add viewcommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":125,"deletions":0},"test-code":{"insertions":5,"deletions":0}}},{"hash":"ab1b9ca94f28a9ba26e998984919ed236c2beebd","isMergeCommit":false,"messageTitle":"Add viewcommandtest class","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":104,"deletions":0}}},{"hash":"713b329a80590b426b043376cb1e33a646d1f6c9","isMergeCommit":false,"messageTitle":"Update viewcommandtest class","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":6}}},{"hash":"ff073653994c107dad581f0f5a6468540c90698a","isMergeCommit":false,"messageTitle":"Update UG to correct list command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":5}}},{"hash":"d31bb5eae1698133413c9964aa58c0cbd36e5ae1","isMergeCommit":false,"messageTitle":"Add javadocs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":1}}},{"hash":"c5b35bf94ef7b3813a5d4655d5b5d27d692183e5","isMergeCommit":false,"messageTitle":"Add more test for ViewCommand","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":22,"deletions":0}}},{"hash":"5860cfe211e2cdb39d42a7333b5cdd2569144d63","isMergeCommit":false,"messageTitle":"Add ViewCommandParserTest class","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":63,"deletions":0}}},{"hash":"fae4aa8dfaf01c27f2fa37eca454723825f72892","isMergeCommit":false,"messageTitle":"Add view command test case in AddressBookParserTest class","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":1}}}]},{"date":"2024-03-19","commitResults":[{"hash":"e3dc3f5d0731bdeda71f7f21d5e737ae62f72682","isMergeCommit":false,"messageTitle":"Improve View command related codes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":14},"test-code":{"insertions":15,"deletions":17}}},{"hash":"20c0e639ded1a4a7a59fb10d4eb674bf5256dac9","isMergeCommit":true,"messageTitle":"Merge pull request #55 from YuSoonZ/View-Command","messageBody":"Add View Command","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"502d772f4b2bc6510586764bea606747dd3db6a1","isMergeCommit":false,"messageTitle":"Add ViewCommandActivityDiagram for ViewCommand","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":26,"deletions":0}}},{"hash":"19d4db70368f140d4d564ff349a71d84027956af","isMergeCommit":false,"messageTitle":"Update Developer Guide to include View Command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":17,"deletions":0}}},{"hash":"fef58a2a7e2ee5619e88782317b8c5e0b015549e","isMergeCommit":false,"messageTitle":"Fix codestyle issue","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"5604db3e589a781ce015951e4f3615fbc4fca223","isMergeCommit":false,"messageTitle":"Fix filename and extension","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":48,"deletions":0}}},{"hash":"1321727edf2160b8128eec3750cfb3457004c878","isMergeCommit":true,"messageTitle":"Merge pull request #60 from YuSoonZ/View-Command-Developer-Guide","messageBody":"Include view command developer guide","fileTypesAndContributionMap":{}},{"hash":"37f72b3e3f3f701e4c3eb1686789b7da0a0b9da6","isMergeCommit":false,"messageTitle":"Remove extra if block","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":3}}}]},{"date":"2024-03-21","commitResults":[{"hash":"171d0cdfd6afaa735d8c61e1f75dee25df5a7fc5","isMergeCommit":true,"messageTitle":"Merge pull request #62 from YuSoonZ/View-Command-Developer-Guide","messageBody":"Remove extra if block","fileTypesAndContributionMap":{}}]}],"kailashgautham":[{"date":"2024-02-24","commitResults":[{"hash":"5c3f966e18570ab676d5eaa1c48b5ce0e6f42a1b","isMergeCommit":false,"messageTitle":"Update about us details","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":53,"deletions":6}}}]},{"date":"2024-03-01","commitResults":[{"hash":"381274265285826aef7febe42ede6db0debde5c7","isMergeCommit":true,"messageTitle":"Merge pull request #18 from kailashgautham/kailash/about-us","messageBody":"Add Kailash\u0027s AboutUs information","fileTypesAndContributionMap":{}}]},{"date":"2024-03-04","commitResults":[{"hash":"6fafd172e2796fe44ce6b74f9ee51f18cf8c9bec","isMergeCommit":false,"messageTitle":"Adapted readme for current project","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":8}}}]},{"date":"2024-03-05","commitResults":[{"hash":"eaaecee4ee25cbc2cd77ebe5528307520c4b617f","isMergeCommit":true,"messageTitle":"Merge pull request #27 from kailashgautham/kailash/adapt-website","messageBody":"Adapted readme for current project","fileTypesAndContributionMap":{}}]},{"date":"2024-03-06","commitResults":[{"hash":"00e866ac899c0fb90ff47859fcb3fc540b4592c5","isMergeCommit":false,"messageTitle":"Remove ab3 traces","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":15,"deletions":15}}}]},{"date":"2024-03-11","commitResults":[{"hash":"bae8f3267b7f6b374cbef413de700c8fa79a1fd5","isMergeCommit":false,"messageTitle":"Make telegram and github objects","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":248,"deletions":40}}},{"hash":"a7f83fda160a487ae52cab38b346f4ba65bfbdde","isMergeCommit":false,"messageTitle":"Add changes to person class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":20}}},{"hash":"a0c388997af9eb4e944980c1d1f3b16f90eb820e","isMergeCommit":false,"messageTitle":"Implement parser functions","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":56,"deletions":5}}},{"hash":"4117cd63a8b1c10974d1e60735dbcac48184fc83","isMergeCommit":false,"messageTitle":"Clear errors and modify data util","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":126,"deletions":105}}},{"hash":"736654b89e0844e0f3f45286ef8a89f46f311508","isMergeCommit":false,"messageTitle":"Work on fixing test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":31,"deletions":86},"test-code":{"insertions":211,"deletions":330}}},{"hash":"6196e7cc6fb844dc5f6b193618e96690f89171e5","isMergeCommit":false,"messageTitle":"Fix edit parser test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":3},"test-code":{"insertions":13,"deletions":23}}},{"hash":"af36edf36636d58b62cb82c0c4e9bc00c5d6f3c4","isMergeCommit":false,"messageTitle":"Complete add command tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":24,"deletions":21},"test-code":{"insertions":85,"deletions":103}}},{"hash":"6e6e3fa7d9103cdee202a243aa8c4cfbe7c9d2d2","isMergeCommit":false,"messageTitle":"Add tele and gh to duplicate check","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":3,"deletions":1}}},{"hash":"f682a354497b47d2d3430e56d6905b8875d4c7e8","isMergeCommit":false,"messageTitle":"Add checkstyle fixes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}}]},{"date":"2024-03-12","commitResults":[{"hash":"c4e7dabb674c59359014c47ae65b5a8f1aa4cd49","isMergeCommit":false,"messageTitle":"Change badge in readme and index md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}}]},{"date":"2024-03-13","commitResults":[{"hash":"c5da04eac6ba80e793e19e3ff4b3c515f7b37bf5","isMergeCommit":false,"messageTitle":"Make changes to usage of Optional","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":75,"deletions":36},"test-code":{"insertions":10,"deletions":8}}},{"hash":"078aae64f6902d7b7915a5d246748d242fbab6af","isMergeCommit":true,"messageTitle":"Merge pull request #38 from kailashgautham/kailash/add-command","messageBody":"Implement Add Command","fileTypesAndContributionMap":{}},{"hash":"65f0001656c953fd828ad304e64daeeb5264f1e6","isMergeCommit":false,"messageTitle":"Modify user guide for add command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":11}}},{"hash":"560a443578b19860ea943e7b14dfd5d6e5a2e980","isMergeCommit":false,"messageTitle":"Correct command format in UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"872236333708d3011520913bd94a1d1ab358baa1","isMergeCommit":true,"messageTitle":"Merge pull request #39 from kailashgautham/kailash/user-guide-add","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-16","commitResults":[{"hash":"e083f8e6f67cf923ae1aa594adc46d46da0cb38b","isMergeCommit":false,"messageTitle":"Make changes to PUML Diagrams","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":9}}}]},{"date":"2024-03-17","commitResults":[{"hash":"9aadad127cfc60a2b611bc0c7cad97076c472896","isMergeCommit":true,"messageTitle":"Merge pull request #52 from kailashgautham/kailash/uml","messageBody":"Make changes to PUML Diagrams ...","fileTypesAndContributionMap":{}}]}],"teojunda":[{"date":"2024-03-02","commitResults":[{"hash":"fe6c0dfefcffabe9870d9126f8cc9e10883dfd87","isMergeCommit":true,"messageTitle":"Merge pull request #22 from hiivan/ivan/about-us","messageBody":"Add Ivan\u0027s AboutUs information","fileTypesAndContributionMap":{}},{"hash":"512af22a564047de6d830a0bfb28cee6db561bba","isMergeCommit":false,"messageTitle":"Add Axel\u0027s AboutUs information","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":51,"deletions":5}}},{"hash":"fd3acf07937083126958635ebe7a8f68b3d4c8b6","isMergeCommit":false,"messageTitle":"Update Axel\u0027s AboutUs file names","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-04","commitResults":[{"hash":"efa7b2b348157e966fd07ef3066d90e2402f2e61","isMergeCommit":true,"messageTitle":"Merge pull request #25 from teojunda/axel/about-us","messageBody":"Add Axel\u0027s AboutUs information","fileTypesAndContributionMap":{}}]},{"date":"2024-03-05","commitResults":[{"hash":"c3e8aa9a4c2a4130a3c46daa7ba5e33a08fe2f7f","isMergeCommit":false,"messageTitle":"Update Developer Guide","messageBody":"Update information on target user profile, value proposition, user stories, non-functional requirements, glossary\n","fileTypesAndContributionMap":{"docs":{"insertions":34,"deletions":15}}},{"hash":"bf4b62d4e780385a48a469c3d828984ac94eeebf","isMergeCommit":false,"messageTitle":"Update user stories in developer guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":2}}},{"hash":"eff5aaa28b67d32561bafdac77d37f61e00ce609","isMergeCommit":false,"messageTitle":"Update user stories related to attendance taking","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"a0b91e21d2211940d001bb6381c5f910a29ac548","isMergeCommit":true,"messageTitle":"Merge pull request #30 from teojunda/axel/developer-guide","messageBody":"Update Developer Guide","fileTypesAndContributionMap":{}}]},{"date":"2024-03-06","commitResults":[{"hash":"762709b576e80bc340dd077687f0898f504f6f30","isMergeCommit":false,"messageTitle":"Add use cases in developer guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":264,"deletions":17}}},{"hash":"8e18da63f9c99f7e753f51bf63674ed1596158ea","isMergeCommit":false,"messageTitle":"Add use case for student attendance summary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":33,"deletions":13}}},{"hash":"d1f2a9c87d11c6f38ffd4bf82ea7d6617e43b290","isMergeCommit":true,"messageTitle":"Merge pull request #37 from teojunda/axel/developer-guide","messageBody":"Add use cases in developer guide","fileTypesAndContributionMap":{}}]},{"date":"2024-03-13","commitResults":[{"hash":"faee1606289aa8a9571c7b972ee36e0da9372bc1","isMergeCommit":false,"messageTitle":"Fix isSamePerson check","messageBody":"Previously, the check would indicate 2 Persons are the same if both\ntheir Telegrams are empty, or both their Githubs are empty.\n\nWith this fix, the check would not consider factor in the Telegram or\nGithub values if either of the Persons have empty values for those\nfields.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":28,"deletions":5}}},{"hash":"97389d7766282feb0cb17277a2aab188efb04648","isMergeCommit":false,"messageTitle":"refactor code","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":2}}},{"hash":"c7838f10cef46ec0d73dee01454a94a0990176b4","isMergeCommit":false,"messageTitle":"Update response messages","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":8}}},{"hash":"af79a6dba1239437ad60fa8d05be92714c7abef4","isMergeCommit":false,"messageTitle":"Implement edit command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":3}}},{"hash":"d1651fd39257309672ed94e00ca3dda60dbf84be","isMergeCommit":false,"messageTitle":"Verify no duplicate prefixes for edit command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":6}}},{"hash":"8c21ac71296a3ba323439af8a8172250db83a7bd","isMergeCommit":false,"messageTitle":"Ensure sorted order of Persons in UniquePersonList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":44,"deletions":2}}},{"hash":"b34678187f91954f10fb365902942fe91d7f6bce","isMergeCommit":false,"messageTitle":"Check equality of elements in without consideration of order","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":10,"deletions":1}}},{"hash":"94170104d4b0b1a24f3fe528b8b6e410b9f6b54d","isMergeCommit":false,"messageTitle":"Create new add function that does not modify filteredList","messageBody":"Used for edit command\n","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":3},"test-code":{"insertions":5,"deletions":0}}},{"hash":"bf7a3b187c55ad83344bf93b928a5f6af5c49e93","isMergeCommit":false,"messageTitle":"Update test case","messageBody":"Edit command should throw exception when no field is changed from the original\n","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":3}}},{"hash":"5db1399566aa0ed549a2e164db80ea19f118f2c2","isMergeCommit":true,"messageTitle":"Merge pull request #42 from teojunda/axel/fix-isSamePerson","messageBody":"Fix isSamePerson check","fileTypesAndContributionMap":{}},{"hash":"3f37b8ee97e2b9722b08064b9eb62b519ec9e763","isMergeCommit":false,"messageTitle":"Revert \"Check equality of elements in without consideration of order\"","messageBody":"This reverts commit b34678187f91954f10fb365902942fe91d7f6bce.\n\nRevert commit\n","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":10}}},{"hash":"288c191c013fd24c5bb632a8859f331415623832","isMergeCommit":false,"messageTitle":"Update CommandTestUtil to not consider order of UniquePersonList when checking equality","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":1}}},{"hash":"e74539140f095e2c470a3dd5113566b035b24a37","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"a1f6e6ede144975fe481f93d2db5257a0e93a1cd","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-F14-3:master\u0027 into axel/edit-command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9206edc2eae12b88cd3cf751c21dea577a0902e5","isMergeCommit":false,"messageTitle":"Update UserGuide for EditCommand","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":9}}},{"hash":"1849025200a368c8153b6e4757b0777db8c6db54","isMergeCommit":false,"messageTitle":"Update UserGuide for EditCommand","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"090e9da8b631a9898fa60d451bc224d1accb2304","isMergeCommit":false,"messageTitle":"Fix typo in UserGuide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-14","commitResults":[{"hash":"f0e415b93304b8c9df12258e8d93c1640d33a7e1","isMergeCommit":false,"messageTitle":"Rename isSamePerson to checkDuplicateField","messageBody":"UniquePersonList may contain Persons with the same name, but may not contain Persons with either the same Email, Phone, Telegram (non-empty), or Github (non-empty).\n","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":5},"test-code":{"insertions":5,"deletions":5}}},{"hash":"60c14187c968df8bcfa2f3afb7801ed0fc5a69ab","isMergeCommit":false,"messageTitle":"Update message for persons with duplicate field","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"test-code":{"insertions":2,"deletions":2}}},{"hash":"df316fcbaae14d23e94da34e165eb386fc7aa8c4","isMergeCommit":false,"messageTitle":"Update message for adding persons with duplicate field","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":2},"test-code":{"insertions":2,"deletions":2}}},{"hash":"3dc8a4da92e138b06d0075b8b15f62b7b59c8b75","isMergeCommit":false,"messageTitle":"Rename addPersonForEdit to addPersonKeepFilter","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4},"test-code":{"insertions":1,"deletions":1}}},{"hash":"3d04361a8582394096d64c95487c424cd739a3e0","isMergeCommit":false,"messageTitle":"Update JavaDocs for checkDuplicateField","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"875e5566ebfd5530f0b99fb300ed5e45a293feaa","isMergeCommit":false,"messageTitle":"Revert change in assertCommandSuccess CommandTestUtil","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":4}}},{"hash":"b4a748d3cd43d54f6bc5549d787c18e3e1e9d29e","isMergeCommit":false,"messageTitle":"Fix EditCommandTests to follow the implementation of EditCommand","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":2}}},{"hash":"89b0f14942a726eee7de8161dcf5dbc18858a052","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":2}}},{"hash":"311f8de84de030237432ac60acc25da7f8cdf240","isMergeCommit":true,"messageTitle":"Merge pull request #43 from teojunda/axel/edit-command","messageBody":"Axel/edit command","fileTypesAndContributionMap":{}}]},{"date":"2024-03-15","commitResults":[{"hash":"51c216afb05f95953f8ddbbcf0bd9ddf195e6f6c","isMergeCommit":false,"messageTitle":"Remove unused setPerson(originalPerson, editedPerson) and associated test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":44},"test-code":{"insertions":2,"deletions":46}}}]},{"date":"2024-03-16","commitResults":[{"hash":"edfc0fe87c7941b1f8c6185ed8c292faa504ed82","isMergeCommit":true,"messageTitle":"Merge pull request #50 from teojunda/axel/edit-command","messageBody":"Remove unused setPerson(originalPerson, editedPerson) and associated …","fileTypesAndContributionMap":{}}]},{"date":"2024-03-19","commitResults":[{"hash":"19114fc12cbdaa16d9bf30ffd8382b1a79f16a07","isMergeCommit":false,"messageTitle":"Remove unused JsonAdaptedTag class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":48}}},{"hash":"b1853d8a3a2cd095f56f6bf804a9bd6a5816a436","isMergeCommit":false,"messageTitle":"Remove JsonAdaptedTag reference in Storage component diagram","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":2}}},{"hash":"627d66a707b8d8c39fbc4a72ea31c4fce84741da","isMergeCommit":false,"messageTitle":"Create EditCommandActivityDiagram","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":34,"deletions":0}}},{"hash":"286755dbb7718e4eb3117fe5c7d61d57472456ab","isMergeCommit":false,"messageTitle":"Create EditCommandSequenceDiagram","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":83,"deletions":0}}},{"hash":"cd689cfa979b789763e2c6320d4cfd6813e30c14","isMergeCommit":false,"messageTitle":"Update Developer Guide with implementation details of EditCommand","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":34,"deletions":4}}},{"hash":"ed6d77e132aba24de68c92000db11b4a42811170","isMergeCommit":false,"messageTitle":"Edit puml tag","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"76d5cd9f74a22e5f08df4d2ac4f7854aa71fc2b7","isMergeCommit":false,"messageTitle":"Correct checkstyle","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":8}}},{"hash":"4b407d39aed87a63ace9ec475d1ac56fcb1497ce","isMergeCommit":true,"messageTitle":"Merge pull request #57 from teojunda/axel/edit-uml","messageBody":"Include implementation details of Edit Command in Developer Guide","fileTypesAndContributionMap":{}}]}],"hiivan":[{"date":"2024-03-01","commitResults":[{"hash":"5d746669b48fef4d63062ab9730c706a96a70c75","isMergeCommit":false,"messageTitle":"Add Ivan\u0027s AboutUs information","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":53,"deletions":5}}},{"hash":"70ab35da84ca31586c8e9dafe8b0251e17acb473","isMergeCommit":false,"messageTitle":"Add new line to EOF of ivan.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-20","commitResults":[{"hash":"c9cbaa1b5e0c4f41d19e585bddbbf9944ee841f0","isMergeCommit":false,"messageTitle":"Update delete command to dc","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":13,"deletions":13}}},{"hash":"c46182b91f99d64a38464ba80a76840379779f60","isMergeCommit":true,"messageTitle":"Merge pull request #59 from hiivan/ivan/puml-diagram","messageBody":"Make changes to PUML Diagrams","fileTypesAndContributionMap":{}},{"hash":"30a9a4cef9e97981d61832b704ecba85e1b5edbc","isMergeCommit":false,"messageTitle":"Update some documentation","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"docs":{"insertions":4,"deletions":4}}}]},{"date":"2024-03-21","commitResults":[{"hash":"fe3d09e54cc18ba9c2b41ece227367c05529fc8e","isMergeCommit":false,"messageTitle":"Integrate side panel in View","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":29,"deletions":8}}},{"hash":"f792d6fc9eff82c0544da533acfdf4cff2a4ff4b","isMergeCommit":false,"messageTitle":"Implement logic behind side panel","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":174,"deletions":21}}},{"hash":"576dd6c1775d11a329de59e0cb8393085180f274","isMergeCommit":false,"messageTitle":"Add newline at EOF of DarkTheme.css","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"cf05337c0f1e38f4023309fea481bdd0df06366a","isMergeCommit":true,"messageTitle":"Merge pull request #63 from hiivan/ivan/view-panel","messageBody":"Implement Side Panel","tags":["v1.2"],"fileTypesAndContributionMap":{}}]}],"g-tejas":[{"date":"2024-02-24","commitResults":[{"hash":"c1cd4cd89798a08f35de89648804e4544ba9fc96","isMergeCommit":false,"messageTitle":"Add Tejas\u0027s AboutUs information","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}}]},{"date":"2024-02-27","commitResults":[{"hash":"bee3fa36384793b09d5cc30fd5328ba2beb98658","isMergeCommit":false,"messageTitle":"Add personal portfolio page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":46,"deletions":0}}}]},{"date":"2024-03-01","commitResults":[{"hash":"e951423e72c94f181a2eea5f7fcacd396a5c55b3","isMergeCommit":true,"messageTitle":"Merge pull request #15 from g-tejas/tejas/about-us","messageBody":"Add Tejas\u0027s AboutUs information","fileTypesAndContributionMap":{}}]},{"date":"2024-03-02","commitResults":[{"hash":"8ff7903374c7fa64e20b550a25d8d716e3f7ab96","isMergeCommit":true,"messageTitle":"Merge pull request #23 from g-tejas/tejas/about-us","messageBody":"Fix image name","fileTypesAndContributionMap":{}}]},{"date":"2024-03-05","commitResults":[{"hash":"e05aeed7e93e5978748f30a79c1845cdc1790302","isMergeCommit":false,"messageTitle":"Adapt UG to new product","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"bfd5af372285cf928c7bf76673627921cc1db693","isMergeCommit":true,"messageTitle":"Merge pull request #33 from g-tejas/tejas/update-ug","messageBody":"Remove traces of AB3 from UG","fileTypesAndContributionMap":{}}]},{"date":"2024-03-06","commitResults":[{"hash":"2a56d99f96975b8a6e925e6e4a445c7fec1e9d07","isMergeCommit":true,"messageTitle":"Merge pull request #35 from kailashgautham/kailash/userguide","messageBody":"Remove ab3 traces","fileTypesAndContributionMap":{}}]},{"date":"2024-03-14","commitResults":[{"hash":"e8efe7c8afeb3a0f59c77be86a75aded117e7a00","isMergeCommit":false,"messageTitle":"Fix bug where contacts wouldn\u0027t get loaded","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"2eae14f2c38b27c0625d76506de97e7a2cca1a78","isMergeCommit":false,"messageTitle":"Modify delete command word to follow other command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"2ab46153536682062ce96b76c5e9cc9de9c154d2","isMergeCommit":true,"messageTitle":"Merge pull request #45 from g-tejas/tejas/add-command","messageBody":"Fix bug where contacts wouldn\u0027t get loaded","fileTypesAndContributionMap":{}},{"hash":"ffbff0020f299307223de601746654b4deee66e3","isMergeCommit":false,"messageTitle":"Update delete command word in test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"9a7b79fab901fec104447136682636b5cab789e8","isMergeCommit":true,"messageTitle":"Merge pull request #46 from g-tejas/tejas/delete-command","messageBody":"Modify delete command word to follow other command","fileTypesAndContributionMap":{}},{"hash":"8b7024071b9547ae27a77f293df345e8344b1c77","isMergeCommit":false,"messageTitle":"Update user guide with new command word","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}},{"hash":"4c3d34d4d43e1eae18450ce075d636ba49f6a5e9","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into tejas/delete-command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"05f936580c239916eccc609dff3f73c614134c6f","isMergeCommit":true,"messageTitle":"Merge pull request #47 from g-tejas/tejas/delete-command","messageBody":"Update user guide with new command word","fileTypesAndContributionMap":{}}]},{"date":"2024-03-16","commitResults":[{"hash":"822c9651f4dd0efdcb196f38b7ca2974bbef29c0","isMergeCommit":false,"messageTitle":"Change typical persons class group for test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":22,"deletions":18}}},{"hash":"ec715f6c79bde586ae96217359c6b73df9403bce","isMergeCommit":false,"messageTitle":"Add `ListCommandPredicate` for listing by class groups","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":55,"deletions":0}}},{"hash":"5f8507b06cda81e06fe1f4ae8fba4091a1e7daaa","isMergeCommit":false,"messageTitle":"Add ListCommandParser for new updated list command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":46,"deletions":1}}},{"hash":"c4f3215d1fa25be0bac3bd220054dc0949607417","isMergeCommit":false,"messageTitle":"Add list by class groups functionality","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":55,"deletions":6}}},{"hash":"12b793aba936888d4cc8fecc9784891a905091ea","isMergeCommit":false,"messageTitle":"Remove unused prefixes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2}}},{"hash":"6eb24a0d98d4f34a29be99913e7d81c2424a7cd3","isMergeCommit":false,"messageTitle":"Fix broken test case","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":3}}},{"hash":"cd7866f3b91c6c96bcbef547a3391c31fc82b491","isMergeCommit":false,"messageTitle":"Add test cases for updated list command","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":93,"deletions":6}}},{"hash":"21a0602e3532ac78c39a46225c95a51c9103754b","isMergeCommit":false,"messageTitle":"Change address book to TA Toolkit","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"e4c7de57cf18b70c74b5cef484451cba108dbff6","isMergeCommit":false,"messageTitle":"Enforce ClassGroup to not have whitespace","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"test-code":{"insertions":65,"deletions":0}}},{"hash":"bfd3577d454159cc0cd0ac330f3f1ec37c3fbf47","isMergeCommit":false,"messageTitle":"Fix MESSAGE_CONSTRAINTS to say dash instead","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"f5a472ca922ad46c207f415d30505f520922039d","isMergeCommit":true,"messageTitle":"Merge pull request #51 from g-tejas/tejas/list-command","messageBody":"Extend `ListCommand` functionality","fileTypesAndContributionMap":{}}]},{"date":"2024-03-17","commitResults":[{"hash":"aabb52957541e873391743b788b14867db2a6117","isMergeCommit":false,"messageTitle":"Make changes to PUML diagram","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":15}}},{"hash":"4d0efe7d5964fdead5f278cd76814c280b83e1f3","isMergeCommit":false,"messageTitle":"Rename to proper Pascal Case","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}},{"hash":"075d417250b1760e2d91c0da1136c1d6c5d1890b","isMergeCommit":false,"messageTitle":"Rename TaKit to TaToolkit","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}},{"hash":"4d62c8cba623268a4d62e079c2b22ba1045b4974","isMergeCommit":true,"messageTitle":"Merge pull request #53 from g-tejas/tejas/uml","messageBody":"Make changes to PUML diagram","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"fa5a7d9a34f078e6b1181d885461a88e759355e9","isMergeCommit":false,"messageTitle":"Update name of jar file generated by shadowJar","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-22","commitResults":[{"hash":"1d3b3101918c22460faca77169bb2066a70ffe45","isMergeCommit":true,"messageTitle":"Merge pull request #64 from g-tejas/tejas/gradle","messageBody":"Update name of jar file generated by shadowJar","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"YuSoonZ":{"docs":157,"functional-code":132,"test-code":198},"kailashgautham":{"docs":88,"functional-code":492,"test-code":242},"teojunda":{"docs":503,"functional-code":113,"test-code":20},"hiivan":{"docs":70,"functional-code":180,"test-code":0},"g-tejas":{"docs":76,"functional-code":162,"test-code":186,"other":1}},"authorContributionVariance":{"YuSoonZ":5212.853,"kailashgautham":81800.914,"teojunda":6353.1006,"hiivan":1937.836,"g-tejas":5092.1143},"authorDisplayNameMap":{"YuSoonZ":"CS2103T-F14-3 NG Y..SOON","kailashgautham":"CS2103T-F14-3 GAUT..LASH","teojunda":"CS2103T-F14-3 TEO ..AXEL","hiivan":"CS2103T-F14-3 ANG ..IVAN","g-tejas":"CS2103T-F14-3 GARR..EJAS"}} +{"authorDailyContributionsMap":{"YuSoonZ":[{"date":"2024-03-05","commitResults":[{"hash":"b9c56c9dda92dd27201d81764616fc60791aa291","isMergeCommit":false,"messageTitle":"Update yu soon\u0027s aboutus page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":51,"deletions":5}}},{"hash":"f1d821810cc1b123fdbf1e4faa1a6eb684b44ee2","isMergeCommit":false,"messageTitle":"Update name of image","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"36ed2c103c058a38ada0600bc1c428ccb74db4df","isMergeCommit":true,"messageTitle":"Merge pull request #29 from YuSoonZ/yusoong-aboutus","messageBody":"Update yu soon\u0027s aboutus page","fileTypesAndContributionMap":{}}]},{"date":"2024-03-18","commitResults":[{"hash":"749f4cd82087c5d98b0523c5ff06dedbf459fdad","isMergeCommit":false,"messageTitle":"Update User Guide to add view command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":13,"deletions":0}}},{"hash":"a03cb6e3348d04f4eee5a670183b6c7e445f069f","isMergeCommit":false,"messageTitle":"Add viewcommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":125,"deletions":0},"test-code":{"insertions":5,"deletions":0}}},{"hash":"ab1b9ca94f28a9ba26e998984919ed236c2beebd","isMergeCommit":false,"messageTitle":"Add viewcommandtest class","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":104,"deletions":0}}},{"hash":"713b329a80590b426b043376cb1e33a646d1f6c9","isMergeCommit":false,"messageTitle":"Update viewcommandtest class","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":6}}},{"hash":"ff073653994c107dad581f0f5a6468540c90698a","isMergeCommit":false,"messageTitle":"Update UG to correct list command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":5}}},{"hash":"d31bb5eae1698133413c9964aa58c0cbd36e5ae1","isMergeCommit":false,"messageTitle":"Add javadocs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":1}}},{"hash":"c5b35bf94ef7b3813a5d4655d5b5d27d692183e5","isMergeCommit":false,"messageTitle":"Add more test for ViewCommand","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":22,"deletions":0}}},{"hash":"5860cfe211e2cdb39d42a7333b5cdd2569144d63","isMergeCommit":false,"messageTitle":"Add ViewCommandParserTest class","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":63,"deletions":0}}},{"hash":"fae4aa8dfaf01c27f2fa37eca454723825f72892","isMergeCommit":false,"messageTitle":"Add view command test case in AddressBookParserTest class","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":1}}}]},{"date":"2024-03-19","commitResults":[{"hash":"e3dc3f5d0731bdeda71f7f21d5e737ae62f72682","isMergeCommit":false,"messageTitle":"Improve View command related codes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":14},"test-code":{"insertions":15,"deletions":17}}},{"hash":"20c0e639ded1a4a7a59fb10d4eb674bf5256dac9","isMergeCommit":true,"messageTitle":"Merge pull request #55 from YuSoonZ/View-Command","messageBody":"Add View Command","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"502d772f4b2bc6510586764bea606747dd3db6a1","isMergeCommit":false,"messageTitle":"Add ViewCommandActivityDiagram for ViewCommand","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":26,"deletions":0}}},{"hash":"19d4db70368f140d4d564ff349a71d84027956af","isMergeCommit":false,"messageTitle":"Update Developer Guide to include View Command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":17,"deletions":0}}},{"hash":"fef58a2a7e2ee5619e88782317b8c5e0b015549e","isMergeCommit":false,"messageTitle":"Fix codestyle issue","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"5604db3e589a781ce015951e4f3615fbc4fca223","isMergeCommit":false,"messageTitle":"Fix filename and extension","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":48,"deletions":0}}},{"hash":"1321727edf2160b8128eec3750cfb3457004c878","isMergeCommit":true,"messageTitle":"Merge pull request #60 from YuSoonZ/View-Command-Developer-Guide","messageBody":"Include view command developer guide","fileTypesAndContributionMap":{}},{"hash":"37f72b3e3f3f701e4c3eb1686789b7da0a0b9da6","isMergeCommit":false,"messageTitle":"Remove extra if block","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":3}}}]},{"date":"2024-03-21","commitResults":[{"hash":"171d0cdfd6afaa735d8c61e1f75dee25df5a7fc5","isMergeCommit":true,"messageTitle":"Merge pull request #62 from YuSoonZ/View-Command-Developer-Guide","messageBody":"Remove extra if block","fileTypesAndContributionMap":{}}]},{"date":"2024-03-24","commitResults":[{"hash":"696f45cd16c041cec5c525209046c9dba99df832","isMergeCommit":false,"messageTitle":"Add logging to view command code","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":0}}},{"hash":"ad8ced3c130df133b93f89667b14b84dcf03cf29","isMergeCommit":true,"messageTitle":"Merge pull request #70 from YuSoonZ/add-logging-for-viewcommand","messageBody":"Add logging to view command code","fileTypesAndContributionMap":{}}]}],"kailashgautham":[{"date":"2024-02-24","commitResults":[{"hash":"5c3f966e18570ab676d5eaa1c48b5ce0e6f42a1b","isMergeCommit":false,"messageTitle":"Update about us details","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":53,"deletions":6}}}]},{"date":"2024-03-01","commitResults":[{"hash":"381274265285826aef7febe42ede6db0debde5c7","isMergeCommit":true,"messageTitle":"Merge pull request #18 from kailashgautham/kailash/about-us","messageBody":"Add Kailash\u0027s AboutUs information","fileTypesAndContributionMap":{}}]},{"date":"2024-03-04","commitResults":[{"hash":"6fafd172e2796fe44ce6b74f9ee51f18cf8c9bec","isMergeCommit":false,"messageTitle":"Adapted readme for current project","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":8}}}]},{"date":"2024-03-05","commitResults":[{"hash":"eaaecee4ee25cbc2cd77ebe5528307520c4b617f","isMergeCommit":true,"messageTitle":"Merge pull request #27 from kailashgautham/kailash/adapt-website","messageBody":"Adapted readme for current project","fileTypesAndContributionMap":{}}]},{"date":"2024-03-06","commitResults":[{"hash":"00e866ac899c0fb90ff47859fcb3fc540b4592c5","isMergeCommit":false,"messageTitle":"Remove ab3 traces","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":15,"deletions":15}}}]},{"date":"2024-03-11","commitResults":[{"hash":"bae8f3267b7f6b374cbef413de700c8fa79a1fd5","isMergeCommit":false,"messageTitle":"Make telegram and github objects","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":248,"deletions":40}}},{"hash":"a7f83fda160a487ae52cab38b346f4ba65bfbdde","isMergeCommit":false,"messageTitle":"Add changes to person class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":20}}},{"hash":"a0c388997af9eb4e944980c1d1f3b16f90eb820e","isMergeCommit":false,"messageTitle":"Implement parser functions","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":56,"deletions":5}}},{"hash":"4117cd63a8b1c10974d1e60735dbcac48184fc83","isMergeCommit":false,"messageTitle":"Clear errors and modify data util","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":126,"deletions":105}}},{"hash":"736654b89e0844e0f3f45286ef8a89f46f311508","isMergeCommit":false,"messageTitle":"Work on fixing test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":31,"deletions":86},"test-code":{"insertions":211,"deletions":330}}},{"hash":"6196e7cc6fb844dc5f6b193618e96690f89171e5","isMergeCommit":false,"messageTitle":"Fix edit parser test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":3},"test-code":{"insertions":13,"deletions":23}}},{"hash":"af36edf36636d58b62cb82c0c4e9bc00c5d6f3c4","isMergeCommit":false,"messageTitle":"Complete add command tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":24,"deletions":21},"test-code":{"insertions":85,"deletions":103}}},{"hash":"6e6e3fa7d9103cdee202a243aa8c4cfbe7c9d2d2","isMergeCommit":false,"messageTitle":"Add tele and gh to duplicate check","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":3,"deletions":1}}},{"hash":"f682a354497b47d2d3430e56d6905b8875d4c7e8","isMergeCommit":false,"messageTitle":"Add checkstyle fixes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}}]},{"date":"2024-03-12","commitResults":[{"hash":"c4e7dabb674c59359014c47ae65b5a8f1aa4cd49","isMergeCommit":false,"messageTitle":"Change badge in readme and index md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}}]},{"date":"2024-03-13","commitResults":[{"hash":"c5da04eac6ba80e793e19e3ff4b3c515f7b37bf5","isMergeCommit":false,"messageTitle":"Make changes to usage of Optional","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":75,"deletions":36},"test-code":{"insertions":10,"deletions":8}}},{"hash":"078aae64f6902d7b7915a5d246748d242fbab6af","isMergeCommit":true,"messageTitle":"Merge pull request #38 from kailashgautham/kailash/add-command","messageBody":"Implement Add Command","fileTypesAndContributionMap":{}},{"hash":"65f0001656c953fd828ad304e64daeeb5264f1e6","isMergeCommit":false,"messageTitle":"Modify user guide for add command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":11}}},{"hash":"560a443578b19860ea943e7b14dfd5d6e5a2e980","isMergeCommit":false,"messageTitle":"Correct command format in UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"872236333708d3011520913bd94a1d1ab358baa1","isMergeCommit":true,"messageTitle":"Merge pull request #39 from kailashgautham/kailash/user-guide-add","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-16","commitResults":[{"hash":"e083f8e6f67cf923ae1aa594adc46d46da0cb38b","isMergeCommit":false,"messageTitle":"Make changes to PUML Diagrams","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":9}}}]},{"date":"2024-03-17","commitResults":[{"hash":"9aadad127cfc60a2b611bc0c7cad97076c472896","isMergeCommit":true,"messageTitle":"Merge pull request #52 from kailashgautham/kailash/uml","messageBody":"Make changes to PUML Diagrams ...","fileTypesAndContributionMap":{}}]},{"date":"2024-03-23","commitResults":[{"hash":"a94c73ee67105e0c2db8fe1d9d2863b6240d9609","isMergeCommit":false,"messageTitle":"Add logging to add command code","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":0}}},{"hash":"782a4d88a4862bd257e81fed3559bfae0e8a361f","isMergeCommit":false,"messageTitle":"Make stylecheck changes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4}}}]},{"date":"2024-03-24","commitResults":[{"hash":"81238caf7a35d84bf4ceaea302aa85eb9c9310fc","isMergeCommit":false,"messageTitle":"Fix logging issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":3},"docs":{"insertions":1,"deletions":1}}},{"hash":"e5e8bed0d16a8b130d1cb394ab398988a668a46a","isMergeCommit":true,"messageTitle":"Merge pull request #66 from kailashgautham/kailash/logging","messageBody":"Add logging to add command code","fileTypesAndContributionMap":{}}]}],"teojunda":[{"date":"2024-03-02","commitResults":[{"hash":"fe6c0dfefcffabe9870d9126f8cc9e10883dfd87","isMergeCommit":true,"messageTitle":"Merge pull request #22 from hiivan/ivan/about-us","messageBody":"Add Ivan\u0027s AboutUs information","fileTypesAndContributionMap":{}},{"hash":"512af22a564047de6d830a0bfb28cee6db561bba","isMergeCommit":false,"messageTitle":"Add Axel\u0027s AboutUs information","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":51,"deletions":5}}},{"hash":"fd3acf07937083126958635ebe7a8f68b3d4c8b6","isMergeCommit":false,"messageTitle":"Update Axel\u0027s AboutUs file names","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-04","commitResults":[{"hash":"efa7b2b348157e966fd07ef3066d90e2402f2e61","isMergeCommit":true,"messageTitle":"Merge pull request #25 from teojunda/axel/about-us","messageBody":"Add Axel\u0027s AboutUs information","fileTypesAndContributionMap":{}}]},{"date":"2024-03-05","commitResults":[{"hash":"c3e8aa9a4c2a4130a3c46daa7ba5e33a08fe2f7f","isMergeCommit":false,"messageTitle":"Update Developer Guide","messageBody":"Update information on target user profile, value proposition, user stories, non-functional requirements, glossary\n","fileTypesAndContributionMap":{"docs":{"insertions":34,"deletions":15}}},{"hash":"bf4b62d4e780385a48a469c3d828984ac94eeebf","isMergeCommit":false,"messageTitle":"Update user stories in developer guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":2}}},{"hash":"eff5aaa28b67d32561bafdac77d37f61e00ce609","isMergeCommit":false,"messageTitle":"Update user stories related to attendance taking","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"a0b91e21d2211940d001bb6381c5f910a29ac548","isMergeCommit":true,"messageTitle":"Merge pull request #30 from teojunda/axel/developer-guide","messageBody":"Update Developer Guide","fileTypesAndContributionMap":{}}]},{"date":"2024-03-06","commitResults":[{"hash":"762709b576e80bc340dd077687f0898f504f6f30","isMergeCommit":false,"messageTitle":"Add use cases in developer guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":264,"deletions":17}}},{"hash":"8e18da63f9c99f7e753f51bf63674ed1596158ea","isMergeCommit":false,"messageTitle":"Add use case for student attendance summary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":33,"deletions":13}}},{"hash":"d1f2a9c87d11c6f38ffd4bf82ea7d6617e43b290","isMergeCommit":true,"messageTitle":"Merge pull request #37 from teojunda/axel/developer-guide","messageBody":"Add use cases in developer guide","fileTypesAndContributionMap":{}}]},{"date":"2024-03-13","commitResults":[{"hash":"faee1606289aa8a9571c7b972ee36e0da9372bc1","isMergeCommit":false,"messageTitle":"Fix isSamePerson check","messageBody":"Previously, the check would indicate 2 Persons are the same if both\ntheir Telegrams are empty, or both their Githubs are empty.\n\nWith this fix, the check would not consider factor in the Telegram or\nGithub values if either of the Persons have empty values for those\nfields.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":28,"deletions":5}}},{"hash":"97389d7766282feb0cb17277a2aab188efb04648","isMergeCommit":false,"messageTitle":"refactor code","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":2}}},{"hash":"c7838f10cef46ec0d73dee01454a94a0990176b4","isMergeCommit":false,"messageTitle":"Update response messages","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":8}}},{"hash":"af79a6dba1239437ad60fa8d05be92714c7abef4","isMergeCommit":false,"messageTitle":"Implement edit command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":3}}},{"hash":"d1651fd39257309672ed94e00ca3dda60dbf84be","isMergeCommit":false,"messageTitle":"Verify no duplicate prefixes for edit command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":6}}},{"hash":"8c21ac71296a3ba323439af8a8172250db83a7bd","isMergeCommit":false,"messageTitle":"Ensure sorted order of Persons in UniquePersonList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":44,"deletions":2}}},{"hash":"b34678187f91954f10fb365902942fe91d7f6bce","isMergeCommit":false,"messageTitle":"Check equality of elements in without consideration of order","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":10,"deletions":1}}},{"hash":"94170104d4b0b1a24f3fe528b8b6e410b9f6b54d","isMergeCommit":false,"messageTitle":"Create new add function that does not modify filteredList","messageBody":"Used for edit command\n","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":3},"test-code":{"insertions":5,"deletions":0}}},{"hash":"bf7a3b187c55ad83344bf93b928a5f6af5c49e93","isMergeCommit":false,"messageTitle":"Update test case","messageBody":"Edit command should throw exception when no field is changed from the original\n","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":3}}},{"hash":"5db1399566aa0ed549a2e164db80ea19f118f2c2","isMergeCommit":true,"messageTitle":"Merge pull request #42 from teojunda/axel/fix-isSamePerson","messageBody":"Fix isSamePerson check","fileTypesAndContributionMap":{}},{"hash":"3f37b8ee97e2b9722b08064b9eb62b519ec9e763","isMergeCommit":false,"messageTitle":"Revert \"Check equality of elements in without consideration of order\"","messageBody":"This reverts commit b34678187f91954f10fb365902942fe91d7f6bce.\n\nRevert commit\n","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":10}}},{"hash":"288c191c013fd24c5bb632a8859f331415623832","isMergeCommit":false,"messageTitle":"Update CommandTestUtil to not consider order of UniquePersonList when checking equality","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":1}}},{"hash":"e74539140f095e2c470a3dd5113566b035b24a37","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"a1f6e6ede144975fe481f93d2db5257a0e93a1cd","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-F14-3:master\u0027 into axel/edit-command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9206edc2eae12b88cd3cf751c21dea577a0902e5","isMergeCommit":false,"messageTitle":"Update UserGuide for EditCommand","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":9}}},{"hash":"1849025200a368c8153b6e4757b0777db8c6db54","isMergeCommit":false,"messageTitle":"Update UserGuide for EditCommand","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"090e9da8b631a9898fa60d451bc224d1accb2304","isMergeCommit":false,"messageTitle":"Fix typo in UserGuide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-14","commitResults":[{"hash":"f0e415b93304b8c9df12258e8d93c1640d33a7e1","isMergeCommit":false,"messageTitle":"Rename isSamePerson to checkDuplicateField","messageBody":"UniquePersonList may contain Persons with the same name, but may not contain Persons with either the same Email, Phone, Telegram (non-empty), or Github (non-empty).\n","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":5},"test-code":{"insertions":5,"deletions":5}}},{"hash":"60c14187c968df8bcfa2f3afb7801ed0fc5a69ab","isMergeCommit":false,"messageTitle":"Update message for persons with duplicate field","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"test-code":{"insertions":2,"deletions":2}}},{"hash":"df316fcbaae14d23e94da34e165eb386fc7aa8c4","isMergeCommit":false,"messageTitle":"Update message for adding persons with duplicate field","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":2},"test-code":{"insertions":2,"deletions":2}}},{"hash":"3dc8a4da92e138b06d0075b8b15f62b7b59c8b75","isMergeCommit":false,"messageTitle":"Rename addPersonForEdit to addPersonKeepFilter","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4},"test-code":{"insertions":1,"deletions":1}}},{"hash":"3d04361a8582394096d64c95487c424cd739a3e0","isMergeCommit":false,"messageTitle":"Update JavaDocs for checkDuplicateField","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"875e5566ebfd5530f0b99fb300ed5e45a293feaa","isMergeCommit":false,"messageTitle":"Revert change in assertCommandSuccess CommandTestUtil","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":4}}},{"hash":"b4a748d3cd43d54f6bc5549d787c18e3e1e9d29e","isMergeCommit":false,"messageTitle":"Fix EditCommandTests to follow the implementation of EditCommand","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":2}}},{"hash":"89b0f14942a726eee7de8161dcf5dbc18858a052","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":2}}},{"hash":"311f8de84de030237432ac60acc25da7f8cdf240","isMergeCommit":true,"messageTitle":"Merge pull request #43 from teojunda/axel/edit-command","messageBody":"Axel/edit command","fileTypesAndContributionMap":{}}]},{"date":"2024-03-15","commitResults":[{"hash":"51c216afb05f95953f8ddbbcf0bd9ddf195e6f6c","isMergeCommit":false,"messageTitle":"Remove unused setPerson(originalPerson, editedPerson) and associated test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":44},"test-code":{"insertions":2,"deletions":46}}}]},{"date":"2024-03-16","commitResults":[{"hash":"edfc0fe87c7941b1f8c6185ed8c292faa504ed82","isMergeCommit":true,"messageTitle":"Merge pull request #50 from teojunda/axel/edit-command","messageBody":"Remove unused setPerson(originalPerson, editedPerson) and associated …","fileTypesAndContributionMap":{}}]},{"date":"2024-03-19","commitResults":[{"hash":"19114fc12cbdaa16d9bf30ffd8382b1a79f16a07","isMergeCommit":false,"messageTitle":"Remove unused JsonAdaptedTag class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":48}}},{"hash":"b1853d8a3a2cd095f56f6bf804a9bd6a5816a436","isMergeCommit":false,"messageTitle":"Remove JsonAdaptedTag reference in Storage component diagram","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":2}}},{"hash":"627d66a707b8d8c39fbc4a72ea31c4fce84741da","isMergeCommit":false,"messageTitle":"Create EditCommandActivityDiagram","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":34,"deletions":0}}},{"hash":"286755dbb7718e4eb3117fe5c7d61d57472456ab","isMergeCommit":false,"messageTitle":"Create EditCommandSequenceDiagram","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":83,"deletions":0}}},{"hash":"cd689cfa979b789763e2c6320d4cfd6813e30c14","isMergeCommit":false,"messageTitle":"Update Developer Guide with implementation details of EditCommand","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":34,"deletions":4}}},{"hash":"ed6d77e132aba24de68c92000db11b4a42811170","isMergeCommit":false,"messageTitle":"Edit puml tag","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"76d5cd9f74a22e5f08df4d2ac4f7854aa71fc2b7","isMergeCommit":false,"messageTitle":"Correct checkstyle","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":8}}},{"hash":"4b407d39aed87a63ace9ec475d1ac56fcb1497ce","isMergeCommit":true,"messageTitle":"Merge pull request #57 from teojunda/axel/edit-uml","messageBody":"Include implementation details of Edit Command in Developer Guide","fileTypesAndContributionMap":{}}]},{"date":"2024-03-22","commitResults":[{"hash":"44a22fcd3c737201815addeb0fb2bd5c73284700","isMergeCommit":false,"messageTitle":"Fix bug to correctly update side panel","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":95,"deletions":27}}},{"hash":"c6c2e1e9db9ca255356f6ab08cd21785d68c9ab0","isMergeCommit":false,"messageTitle":"Fix test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2},"test-code":{"insertions":18,"deletions":1}}},{"hash":"4bb39e05022f8e556451d2e8f511ff912c3e66f9","isMergeCommit":false,"messageTitle":"Fix DeleteCommand to update side panel when displayed person is deleted","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":4}}},{"hash":"cb0262f2be87349bfb46d2a9dd308433d108ee96","isMergeCommit":false,"messageTitle":"Refactor code","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":5}}},{"hash":"85a467355e5449e03b4725f24ec2dfd6a122836a","isMergeCommit":false,"messageTitle":"Add test case to ensure Update and Delete correctly updates lastViewedPerson","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":34,"deletions":0}}},{"hash":"18b9c45fcf6269fc7296c4cba79815bf5afc93e7","isMergeCommit":false,"messageTitle":"Refactor code","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":15}}},{"hash":"50f62992297903a3abf4b562b6adb64ab3753fc7","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}}]},{"date":"2024-03-24","commitResults":[{"hash":"fa8c35e85f51c4c1aa6b7c0b9b6e4513b20d1cdb","isMergeCommit":true,"messageTitle":"Merge pull request #65 from teojunda/axel/fix-sidepanel","messageBody":"Fix side panel to update correctly after every command execution","fileTypesAndContributionMap":{}}]}],"hiivan":[{"date":"2024-03-01","commitResults":[{"hash":"5d746669b48fef4d63062ab9730c706a96a70c75","isMergeCommit":false,"messageTitle":"Add Ivan\u0027s AboutUs information","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":53,"deletions":5}}},{"hash":"70ab35da84ca31586c8e9dafe8b0251e17acb473","isMergeCommit":false,"messageTitle":"Add new line to EOF of ivan.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-20","commitResults":[{"hash":"c9cbaa1b5e0c4f41d19e585bddbbf9944ee841f0","isMergeCommit":false,"messageTitle":"Update delete command to dc","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":13,"deletions":13}}},{"hash":"c46182b91f99d64a38464ba80a76840379779f60","isMergeCommit":true,"messageTitle":"Merge pull request #59 from hiivan/ivan/puml-diagram","messageBody":"Make changes to PUML Diagrams","fileTypesAndContributionMap":{}},{"hash":"30a9a4cef9e97981d61832b704ecba85e1b5edbc","isMergeCommit":false,"messageTitle":"Update some documentation","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"docs":{"insertions":4,"deletions":4}}}]},{"date":"2024-03-21","commitResults":[{"hash":"fe3d09e54cc18ba9c2b41ece227367c05529fc8e","isMergeCommit":false,"messageTitle":"Integrate side panel in View","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":29,"deletions":8}}},{"hash":"f792d6fc9eff82c0544da533acfdf4cff2a4ff4b","isMergeCommit":false,"messageTitle":"Implement logic behind side panel","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":174,"deletions":21}}},{"hash":"576dd6c1775d11a329de59e0cb8393085180f274","isMergeCommit":false,"messageTitle":"Add newline at EOF of DarkTheme.css","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"cf05337c0f1e38f4023309fea481bdd0df06366a","isMergeCommit":true,"messageTitle":"Merge pull request #63 from hiivan/ivan/view-panel","messageBody":"Implement Side Panel","tags":["v1.2"],"fileTypesAndContributionMap":{}}]}],"g-tejas":[{"date":"2024-02-24","commitResults":[{"hash":"c1cd4cd89798a08f35de89648804e4544ba9fc96","isMergeCommit":false,"messageTitle":"Add Tejas\u0027s AboutUs information","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}}]},{"date":"2024-02-27","commitResults":[{"hash":"bee3fa36384793b09d5cc30fd5328ba2beb98658","isMergeCommit":false,"messageTitle":"Add personal portfolio page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":46,"deletions":0}}}]},{"date":"2024-03-01","commitResults":[{"hash":"e951423e72c94f181a2eea5f7fcacd396a5c55b3","isMergeCommit":true,"messageTitle":"Merge pull request #15 from g-tejas/tejas/about-us","messageBody":"Add Tejas\u0027s AboutUs information","fileTypesAndContributionMap":{}}]},{"date":"2024-03-02","commitResults":[{"hash":"8ff7903374c7fa64e20b550a25d8d716e3f7ab96","isMergeCommit":true,"messageTitle":"Merge pull request #23 from g-tejas/tejas/about-us","messageBody":"Fix image name","fileTypesAndContributionMap":{}}]},{"date":"2024-03-05","commitResults":[{"hash":"e05aeed7e93e5978748f30a79c1845cdc1790302","isMergeCommit":false,"messageTitle":"Adapt UG to new product","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"bfd5af372285cf928c7bf76673627921cc1db693","isMergeCommit":true,"messageTitle":"Merge pull request #33 from g-tejas/tejas/update-ug","messageBody":"Remove traces of AB3 from UG","fileTypesAndContributionMap":{}}]},{"date":"2024-03-06","commitResults":[{"hash":"2a56d99f96975b8a6e925e6e4a445c7fec1e9d07","isMergeCommit":true,"messageTitle":"Merge pull request #35 from kailashgautham/kailash/userguide","messageBody":"Remove ab3 traces","fileTypesAndContributionMap":{}}]},{"date":"2024-03-14","commitResults":[{"hash":"e8efe7c8afeb3a0f59c77be86a75aded117e7a00","isMergeCommit":false,"messageTitle":"Fix bug where contacts wouldn\u0027t get loaded","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"2eae14f2c38b27c0625d76506de97e7a2cca1a78","isMergeCommit":false,"messageTitle":"Modify delete command word to follow other command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"2ab46153536682062ce96b76c5e9cc9de9c154d2","isMergeCommit":true,"messageTitle":"Merge pull request #45 from g-tejas/tejas/add-command","messageBody":"Fix bug where contacts wouldn\u0027t get loaded","fileTypesAndContributionMap":{}},{"hash":"ffbff0020f299307223de601746654b4deee66e3","isMergeCommit":false,"messageTitle":"Update delete command word in test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"9a7b79fab901fec104447136682636b5cab789e8","isMergeCommit":true,"messageTitle":"Merge pull request #46 from g-tejas/tejas/delete-command","messageBody":"Modify delete command word to follow other command","fileTypesAndContributionMap":{}},{"hash":"8b7024071b9547ae27a77f293df345e8344b1c77","isMergeCommit":false,"messageTitle":"Update user guide with new command word","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}},{"hash":"4c3d34d4d43e1eae18450ce075d636ba49f6a5e9","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into tejas/delete-command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"05f936580c239916eccc609dff3f73c614134c6f","isMergeCommit":true,"messageTitle":"Merge pull request #47 from g-tejas/tejas/delete-command","messageBody":"Update user guide with new command word","fileTypesAndContributionMap":{}}]},{"date":"2024-03-16","commitResults":[{"hash":"822c9651f4dd0efdcb196f38b7ca2974bbef29c0","isMergeCommit":false,"messageTitle":"Change typical persons class group for test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":22,"deletions":18}}},{"hash":"ec715f6c79bde586ae96217359c6b73df9403bce","isMergeCommit":false,"messageTitle":"Add `ListCommandPredicate` for listing by class groups","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":55,"deletions":0}}},{"hash":"5f8507b06cda81e06fe1f4ae8fba4091a1e7daaa","isMergeCommit":false,"messageTitle":"Add ListCommandParser for new updated list command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":46,"deletions":1}}},{"hash":"c4f3215d1fa25be0bac3bd220054dc0949607417","isMergeCommit":false,"messageTitle":"Add list by class groups functionality","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":55,"deletions":6}}},{"hash":"12b793aba936888d4cc8fecc9784891a905091ea","isMergeCommit":false,"messageTitle":"Remove unused prefixes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2}}},{"hash":"6eb24a0d98d4f34a29be99913e7d81c2424a7cd3","isMergeCommit":false,"messageTitle":"Fix broken test case","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":3}}},{"hash":"cd7866f3b91c6c96bcbef547a3391c31fc82b491","isMergeCommit":false,"messageTitle":"Add test cases for updated list command","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":93,"deletions":6}}},{"hash":"21a0602e3532ac78c39a46225c95a51c9103754b","isMergeCommit":false,"messageTitle":"Change address book to TA Toolkit","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"e4c7de57cf18b70c74b5cef484451cba108dbff6","isMergeCommit":false,"messageTitle":"Enforce ClassGroup to not have whitespace","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"test-code":{"insertions":65,"deletions":0}}},{"hash":"bfd3577d454159cc0cd0ac330f3f1ec37c3fbf47","isMergeCommit":false,"messageTitle":"Fix MESSAGE_CONSTRAINTS to say dash instead","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"f5a472ca922ad46c207f415d30505f520922039d","isMergeCommit":true,"messageTitle":"Merge pull request #51 from g-tejas/tejas/list-command","messageBody":"Extend `ListCommand` functionality","fileTypesAndContributionMap":{}}]},{"date":"2024-03-17","commitResults":[{"hash":"aabb52957541e873391743b788b14867db2a6117","isMergeCommit":false,"messageTitle":"Make changes to PUML diagram","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":15}}},{"hash":"4d0efe7d5964fdead5f278cd76814c280b83e1f3","isMergeCommit":false,"messageTitle":"Rename to proper Pascal Case","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}},{"hash":"075d417250b1760e2d91c0da1136c1d6c5d1890b","isMergeCommit":false,"messageTitle":"Rename TaKit to TaToolkit","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}},{"hash":"4d62c8cba623268a4d62e079c2b22ba1045b4974","isMergeCommit":true,"messageTitle":"Merge pull request #53 from g-tejas/tejas/uml","messageBody":"Make changes to PUML diagram","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"fa5a7d9a34f078e6b1181d885461a88e759355e9","isMergeCommit":false,"messageTitle":"Update name of jar file generated by shadowJar","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-22","commitResults":[{"hash":"1d3b3101918c22460faca77169bb2066a70ffe45","isMergeCommit":true,"messageTitle":"Merge pull request #64 from g-tejas/tejas/gradle","messageBody":"Update name of jar file generated by shadowJar","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"YuSoonZ":{"docs":157,"functional-code":138,"test-code":198},"kailashgautham":{"docs":89,"functional-code":498,"test-code":242},"teojunda":{"docs":503,"functional-code":204,"test-code":67},"hiivan":{"docs":70,"functional-code":154,"test-code":0},"g-tejas":{"docs":76,"functional-code":162,"test-code":186,"other":1}},"authorContributionVariance":{"YuSoonZ":4894.991,"kailashgautham":76691.8,"teojunda":7078.237,"hiivan":1820.8197,"g-tejas":4783.6743},"authorDisplayNameMap":{"YuSoonZ":"CS2103T-F14-3 NG Y..SOON","kailashgautham":"CS2103T-F14-3 GAUT..LASH","teojunda":"CS2103T-F14-3 TEO ..AXEL","hiivan":"CS2103T-F14-3 ANG ..IVAN","g-tejas":"CS2103T-F14-3 GARR..EJAS"}} diff --git a/AY2324S2-CS2103T-F14-4_tp_master/authorship.json b/AY2324S2-CS2103T-F14-4_tp_master/authorship.json index 22fe8885..57276ee7 100644 --- a/AY2324S2-CS2103T-F14-4_tp_master/authorship.json +++ b/AY2324S2-CS2103T-F14-4_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"sindhurajain"},"content":"[![CI Status](https://github.com/AY2324S2-CS2103T-F14-4/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S2-CS2103T-F14-4/tp/actions)","lastModifiedDate":"2024-03-06"},{"lineNumber":2,"author":{"gitId":"sindhurajain"},"content":"[![codecov](https://codecov.io/gh/AY2324S2-CS2103T-F14-4/tp/graph/badge.svg?token\u003d3BJBAZ63W8)](https://codecov.io/gh/AY2324S2-CS2103T-F14-4/tp)","lastModifiedDate":"2024-02-23"},{"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":"sindhurajain"},"content":"* This is a team project for our CS2103T Software Engineering class.","lastModifiedDate":"2024-03-06"},{"lineNumber":7,"author":{"gitId":"sindhurajain"},"content":"* Tailored specifically for computing students, our team project, Connectify, ","lastModifiedDate":"2024-03-06"},{"lineNumber":8,"author":{"gitId":"sindhurajain"},"content":"optimises networking for future career opportunities. Connectify seamlessly ","lastModifiedDate":"2024-03-06"},{"lineNumber":9,"author":{"gitId":"sindhurajain"},"content":"organises contact details, efficiently manages professional relationships ","lastModifiedDate":"2024-03-06"},{"lineNumber":10,"author":{"gitId":"sindhurajain"},"content":"and simplifies event and meeting planning. Designed for seamless usage via ","lastModifiedDate":"2024-03-06"},{"lineNumber":11,"author":{"gitId":"sindhurajain"},"content":"Command Line Interface (CLI), Connectify’s ease of use sets up computing ","lastModifiedDate":"2024-03-06"},{"lineNumber":12,"author":{"gitId":"sindhurajain"},"content":"students for success.","lastModifiedDate":"2024-03-06"},{"lineNumber":13,"author":{"gitId":"sindhurajain"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"sindhurajain":10,"-":3}},{"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":"sindhurajain"},"content":"### Sindhura Rajiv Jain","lastModifiedDate":"2024-03-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"sindhurajain"},"content":"\u003cimg src\u003d\"images/sindhurajain.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"sindhurajain"},"content":"[[github](https://github.com/sindhurajain)]","lastModifiedDate":"2024-03-07"},{"lineNumber":19,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"sindhurajain"},"content":"* Role: Scheduling and Tracking \u0026 Deliverables and Deadlines","lastModifiedDate":"2024-03-07"},{"lineNumber":22,"author":{"gitId":"sindhurajain"},"content":"* Responsibilities: UI","lastModifiedDate":"2024-03-07"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"tahnya"},"content":"### Neo Tahnya","lastModifiedDate":"2024-03-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"tahnya"},"content":"\u003cimg src\u003d\"images/tahnya.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-07"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"tahnya"},"content":"[[github](http://github.com/tahnya)]","lastModifiedDate":"2024-03-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"tahnya"},"content":"* Role: Documentation \u0026 Code Quality","lastModifiedDate":"2024-03-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":"* Responsibilities: UI","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"yapxuanxuan"},"content":"### Yap Xuan Xuan","lastModifiedDate":"2024-03-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"yapxuanxuan"},"content":"\u003cimg src\u003d\"images/yapxuanxuan.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"yapxuanxuan"},"content":"[[github](http://github.com/yapxuanxuan)] [[portfolio](team/johndoe.md)]","lastModifiedDate":"2024-03-06"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"yapxuanxuan"},"content":"* Role: Team Lead","lastModifiedDate":"2024-03-06"},{"lineNumber":41,"author":{"gitId":"-"},"content":"* Responsibilities: Data","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"FangRuoqing"},"content":"### Fang Ruoqing","lastModifiedDate":"2024-03-07"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"FangRuoqing"},"content":"\u003cimg src\u003d\"images/fangruoqing.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-07"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"FangRuoqing"},"content":"[[github](http://github.com/FangRuoqing)]","lastModifiedDate":"2024-03-07"},{"lineNumber":48,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"FangRuoqing"},"content":"* Role: Testing","lastModifiedDate":"2024-03-07"},{"lineNumber":51,"author":{"gitId":"FangRuoqing"},"content":"* Responsibilities: Test","lastModifiedDate":"2024-03-07"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"SamuelZero1"},"content":"### Zhou Yang","lastModifiedDate":"2024-03-07"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":55,"author":{"gitId":"SamuelZero1"},"content":"\u003cimg src\u003d\"images/samuelzero1.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-07"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":57,"author":{"gitId":"SamuelZero1"},"content":"[[github](http://github.com/SamuelZero1)] [[portfolio](team/johndoe.md)]","lastModifiedDate":"2024-03-07"},{"lineNumber":58,"author":{"gitId":"SamuelZero1"},"content":"* Role: Integration","lastModifiedDate":"2024-03-07"},{"lineNumber":59,"author":{"gitId":"SamuelZero1"},"content":"* Responsibilities: Integrate the software components","lastModifiedDate":"2024-03-07"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-07"}],"authorContributionMap":{"tahnya":4,"yapxuanxuan":4,"SamuelZero1":5,"FangRuoqing":5,"sindhurajain":5,"-":37}},{"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":"-"},"content":"# AB-3 Developer Guide","lastModifiedDate":"2023-09-12"},{"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":"-"},"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":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":"-"},"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":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":"-"},"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":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":"-"},"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":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 continues till 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).\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-02-09"},{"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":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12"},{"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":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"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":"2021-07-31"},{"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":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":133,"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":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":135,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"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":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"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":148,"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":149,"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":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","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":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"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":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"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":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"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":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"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":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"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":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"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":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"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":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":191,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"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":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":198,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"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":201,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"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":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":213,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":217,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":219,"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":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":223,"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":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"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":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"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":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","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":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":264,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":265,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":266,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":267,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"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":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":277,"author":{"gitId":"FangRuoqing"},"content":"* **Manages a Substantial Contact Network:** Connectify\u0027s target users have a need to manage a significant number of contacts within their professional network.","lastModifiedDate":"2024-03-07"},{"lineNumber":278,"author":{"gitId":"FangRuoqing"},"content":"* **Prefers Desktop Applications:** These users prefer desktop applications over other types of software solutions.","lastModifiedDate":"2024-03-07"},{"lineNumber":279,"author":{"gitId":"FangRuoqing"},"content":"* **Proficient Typists:** Connectify\u0027s target users are proficient typists who can type quickly and accurately. They prefer typing over mouse interactions.","lastModifiedDate":"2024-03-07"},{"lineNumber":280,"author":{"gitId":"FangRuoqing"},"content":"* **Comfortable with Command-Line Interfaces (CLI):** While they may not be experts, Connectify\u0027s target users are reasonably comfortable using command-line interfaces (CLI) and appreciate the efficiency and control that CLI applications offer.","lastModifiedDate":"2024-03-07"},{"lineNumber":281,"author":{"gitId":"FangRuoqing"},"content":"* **Value Efficiency and Organization:** Connectify\u0027s target users value efficiency and organization in managing their professional contacts.","lastModifiedDate":"2024-03-07"},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":283,"author":{"gitId":"FangRuoqing"},"content":"**Value proposition**: Tailored specifically for computing students, our team project, Connectify, optimises networking for future career opportunities. Connectify seamlessly organises contact details, efficiently manages professional relationships and simplifies event and meeting planning. Designed for seamless usage via Command Line Interface (CLI), Connectify’s ease of use sets up computing students for success.","lastModifiedDate":"2024-03-07"},{"lineNumber":284,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":286,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":288,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":290,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":291,"author":{"gitId":"FangRuoqing"},"content":"|----------|-------------------|-----------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------|","lastModifiedDate":"2024-03-07"},{"lineNumber":292,"author":{"gitId":"FangRuoqing"},"content":"| `* * *` | user | add a new contact easily | |","lastModifiedDate":"2024-03-07"},{"lineNumber":293,"author":{"gitId":"FangRuoqing"},"content":"| `* * *` | user | edit the details that I’ve added | my application will contain the most updated and accurate information |","lastModifiedDate":"2024-03-07"},{"lineNumber":294,"author":{"gitId":"FangRuoqing"},"content":"| `* * *` | user | list all my contacts | remember whom I’ve met at a glance |","lastModifiedDate":"2024-03-07"},{"lineNumber":295,"author":{"gitId":"FangRuoqing"},"content":"| `* * *` | user | delete a contact | only keep those that are necessary |","lastModifiedDate":"2024-03-07"},{"lineNumber":296,"author":{"gitId":"FangRuoqing"},"content":"| `* *` | computing student | categorise the people I meet into interns, recruiters, alumni, students, professors, employees and others | remember the people whom I’ve met and easily find them again |","lastModifiedDate":"2024-03-07"},{"lineNumber":297,"author":{"gitId":"FangRuoqing"},"content":"| `* *` | computing student | search a contact using key word | find the contact quickly |","lastModifiedDate":"2024-03-07"},{"lineNumber":298,"author":{"gitId":"FangRuoqing"},"content":"| `* *` | user | differentiate which companies my professional contacts are from | know which company I am connecting with |","lastModifiedDate":"2024-03-07"},{"lineNumber":299,"author":{"gitId":"FangRuoqing"},"content":"| `* *` | computing student | assign priority levels to my contacts | prioritise certain contacts in my network who would be more beneficial for my career |","lastModifiedDate":"2024-03-07"},{"lineNumber":300,"author":{"gitId":"FangRuoqing"},"content":"| `*` | computing student | filter my contacts by priority | identify high-priority contacts at a glance |","lastModifiedDate":"2024-03-07"},{"lineNumber":301,"author":{"gitId":"FangRuoqing"},"content":"| `*` | user | have a \"favourites\" or \"star\" feature for important contacts | easily access them without scrolling through the entire list |","lastModifiedDate":"2024-03-07"},{"lineNumber":302,"author":{"gitId":"FangRuoqing"},"content":"| `*` | user | know the number of contacts quickly | get a sensing of how many people are in my network |","lastModifiedDate":"2024-03-07"},{"lineNumber":303,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":304,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":305,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":306,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":307,"author":{"gitId":"yapxuanxuan"},"content":"(For all use cases below, the **System** is the `Connectify` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2024-03-06"},{"lineNumber":308,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":309,"author":{"gitId":"yapxuanxuan"},"content":"**Use case: Add a contact**","lastModifiedDate":"2024-03-06"},{"lineNumber":310,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":311,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":312,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":313,"author":{"gitId":"yapxuanxuan"},"content":"1. User requests to add a contact","lastModifiedDate":"2024-03-06"},{"lineNumber":314,"author":{"gitId":"yapxuanxuan"},"content":"2. Connectify adds the person","lastModifiedDate":"2024-03-06"},{"lineNumber":315,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":316,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":317,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":318,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":320,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":321,"author":{"gitId":"yapxuanxuan"},"content":"* 1a. The given contact name is already in the contact list.","lastModifiedDate":"2024-03-06"},{"lineNumber":322,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":323,"author":{"gitId":"yapxuanxuan"},"content":" * 1a1. Connectify shows an error message and requests for the user to give a different contact name.","lastModifiedDate":"2024-03-06"},{"lineNumber":324,"author":{"gitId":"yapxuanxuan"},"content":" * 1a2. User enters new data.","lastModifiedDate":"2024-03-06"},{"lineNumber":325,"author":{"gitId":"yapxuanxuan"},"content":" * Steps 1a1-1a2 are repeated until the data entered is correct.","lastModifiedDate":"2024-03-06"},{"lineNumber":326,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":327,"author":{"gitId":"yapxuanxuan"},"content":" Use case resumes from step 2.","lastModifiedDate":"2024-03-06"},{"lineNumber":328,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":329,"author":{"gitId":"yapxuanxuan"},"content":"* 1b. Connectify detects an error in the entered data.","lastModifiedDate":"2024-03-06"},{"lineNumber":330,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":331,"author":{"gitId":"yapxuanxuan"},"content":" * 1b1. Connectify requests for the correct data.","lastModifiedDate":"2024-03-06"},{"lineNumber":332,"author":{"gitId":"yapxuanxuan"},"content":" * 1b2. User enters new data","lastModifiedDate":"2024-03-06"},{"lineNumber":333,"author":{"gitId":"yapxuanxuan"},"content":" * Steps 1b1-1b2 are repeated until the data entered is correct.","lastModifiedDate":"2024-03-06"},{"lineNumber":334,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":335,"author":{"gitId":"yapxuanxuan"},"content":" Use case resumes from step 2.","lastModifiedDate":"2024-03-06"},{"lineNumber":336,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":337,"author":{"gitId":"yapxuanxuan"},"content":"**Use case: Delete a contact**","lastModifiedDate":"2024-03-06"},{"lineNumber":338,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":339,"author":{"gitId":"yapxuanxuan"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":340,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":341,"author":{"gitId":"yapxuanxuan"},"content":"1. User requests to delete a specific person from the contact list","lastModifiedDate":"2024-03-06"},{"lineNumber":342,"author":{"gitId":"yapxuanxuan"},"content":"2. Connectify deletes the person","lastModifiedDate":"2024-03-06"},{"lineNumber":343,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":344,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":345,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":346,"author":{"gitId":"yapxuanxuan"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":347,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":348,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":349,"author":{"gitId":"yapxuanxuan"},"content":"* 1a. The given contact name is not in the contact list.","lastModifiedDate":"2024-03-06"},{"lineNumber":350,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":351,"author":{"gitId":"yapxuanxuan"},"content":" * 1a1. Connectify shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":352,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":353,"author":{"gitId":"yapxuanxuan"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-06"},{"lineNumber":354,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":355,"author":{"gitId":"yapxuanxuan"},"content":"**Use case: List contacts**","lastModifiedDate":"2024-03-06"},{"lineNumber":356,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":357,"author":{"gitId":"yapxuanxuan"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":358,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":359,"author":{"gitId":"yapxuanxuan"},"content":"1. User requests to list contacts","lastModifiedDate":"2024-03-06"},{"lineNumber":360,"author":{"gitId":"yapxuanxuan"},"content":"2. Connectify shows a list of contacts","lastModifiedDate":"2024-03-06"},{"lineNumber":361,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":362,"author":{"gitId":"yapxuanxuan"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":363,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":364,"author":{"gitId":"yapxuanxuan"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":365,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":366,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":367,"author":{"gitId":"yapxuanxuan"},"content":"* 1a. The list is empty.","lastModifiedDate":"2024-03-06"},{"lineNumber":368,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":369,"author":{"gitId":"yapxuanxuan"},"content":" * 1a1. Connectify shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":370,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":371,"author":{"gitId":"yapxuanxuan"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":372,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":373,"author":{"gitId":"yapxuanxuan"},"content":"**Use case: Edit contacts**","lastModifiedDate":"2024-03-06"},{"lineNumber":374,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":375,"author":{"gitId":"yapxuanxuan"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":376,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":377,"author":{"gitId":"yapxuanxuan"},"content":"1. User requests to edit a specific contact","lastModifiedDate":"2024-03-06"},{"lineNumber":378,"author":{"gitId":"yapxuanxuan"},"content":"2. Connectify edits the contact information and displays the full updated contact information","lastModifiedDate":"2024-03-06"},{"lineNumber":379,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":380,"author":{"gitId":"yapxuanxuan"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":381,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":382,"author":{"gitId":"yapxuanxuan"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":383,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":384,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":385,"author":{"gitId":"yapxuanxuan"},"content":"* 1a. The given contact name is not in the contact list.","lastModifiedDate":"2024-03-06"},{"lineNumber":386,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":387,"author":{"gitId":"yapxuanxuan"},"content":" * 1a1. Connectify shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":388,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":389,"author":{"gitId":"yapxuanxuan"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-06"},{"lineNumber":390,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":391,"author":{"gitId":"yapxuanxuan"},"content":"* 1b. Connectify detects an error in the entered data.","lastModifiedDate":"2024-03-06"},{"lineNumber":392,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":393,"author":{"gitId":"yapxuanxuan"},"content":" * 1b1. Connectify requests for the correct data.","lastModifiedDate":"2024-03-06"},{"lineNumber":394,"author":{"gitId":"yapxuanxuan"},"content":" * 1b2. User enters new data","lastModifiedDate":"2024-03-06"},{"lineNumber":395,"author":{"gitId":"yapxuanxuan"},"content":" * Steps 1b1-1b2 are repeated until the data entered is correct.","lastModifiedDate":"2024-03-06"},{"lineNumber":396,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":397,"author":{"gitId":"yapxuanxuan"},"content":" Use case resumes from step 2.","lastModifiedDate":"2024-03-06"},{"lineNumber":398,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":399,"author":{"gitId":"yapxuanxuan"},"content":"* 1c. The contact information to be updated is unchanged from the original.","lastModifiedDate":"2024-03-06"},{"lineNumber":400,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":401,"author":{"gitId":"yapxuanxuan"},"content":" * 1c1. Connectify shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":402,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":403,"author":{"gitId":"yapxuanxuan"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":404,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":405,"author":{"gitId":"yapxuanxuan"},"content":"**Use case: Categorize contacts**","lastModifiedDate":"2024-03-06"},{"lineNumber":406,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":407,"author":{"gitId":"yapxuanxuan"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":408,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":409,"author":{"gitId":"yapxuanxuan"},"content":"1. User requests to categorize a specific contact into a specific group name","lastModifiedDate":"2024-03-06"},{"lineNumber":410,"author":{"gitId":"yapxuanxuan"},"content":"2. Connectify adds the given category to the contact and displays the full updated contact information","lastModifiedDate":"2024-03-06"},{"lineNumber":411,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":412,"author":{"gitId":"yapxuanxuan"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":413,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":414,"author":{"gitId":"yapxuanxuan"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":415,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":416,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":417,"author":{"gitId":"yapxuanxuan"},"content":"* 1a. The given contact name is not in the contact list.","lastModifiedDate":"2024-03-06"},{"lineNumber":418,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":419,"author":{"gitId":"yapxuanxuan"},"content":" * 1a1. Connectify shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":420,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":421,"author":{"gitId":"yapxuanxuan"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-06"},{"lineNumber":422,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":423,"author":{"gitId":"yapxuanxuan"},"content":"* 1b. The contact already has an existing category","lastModifiedDate":"2024-03-06"},{"lineNumber":424,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":425,"author":{"gitId":"yapxuanxuan"},"content":" * 1b1. Connectify informs the user the category that the contact currently is under and requests for confirmation","lastModifiedDate":"2024-03-06"},{"lineNumber":426,"author":{"gitId":"yapxuanxuan"},"content":" to update the current category to the newly given one.","lastModifiedDate":"2024-03-06"},{"lineNumber":427,"author":{"gitId":"yapxuanxuan"},"content":" * 1b2a. User confirms the update.","lastModifiedDate":"2024-03-06"},{"lineNumber":428,"author":{"gitId":"yapxuanxuan"},"content":" * 1b2a1. Connectify updates the current category of the given contact to the new one.","lastModifiedDate":"2024-03-06"},{"lineNumber":429,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":430,"author":{"gitId":"yapxuanxuan"},"content":" Use Case ends","lastModifiedDate":"2024-03-06"},{"lineNumber":431,"author":{"gitId":"yapxuanxuan"},"content":" * 1b2b. User cancels the update.","lastModifiedDate":"2024-03-06"},{"lineNumber":432,"author":{"gitId":"yapxuanxuan"},"content":" * 1b2b1. Connectify does not update the information.","lastModifiedDate":"2024-03-06"},{"lineNumber":433,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":434,"author":{"gitId":"yapxuanxuan"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":435,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":436,"author":{"gitId":"yapxuanxuan"},"content":"**Use case: Tag contacts with their company\u0027s name**","lastModifiedDate":"2024-03-06"},{"lineNumber":437,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":438,"author":{"gitId":"yapxuanxuan"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":439,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":440,"author":{"gitId":"yapxuanxuan"},"content":"1. User requests to tag a specific contact with a specific company\u0027s name","lastModifiedDate":"2024-03-06"},{"lineNumber":441,"author":{"gitId":"yapxuanxuan"},"content":"2. Connectify adds the company\u0027s name tag to the contact and displays the full updated contact information","lastModifiedDate":"2024-03-06"},{"lineNumber":442,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":443,"author":{"gitId":"yapxuanxuan"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":444,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":445,"author":{"gitId":"yapxuanxuan"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":446,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":447,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":448,"author":{"gitId":"yapxuanxuan"},"content":"* 1a. The given contact name is not in the contact list.","lastModifiedDate":"2024-03-06"},{"lineNumber":449,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":450,"author":{"gitId":"yapxuanxuan"},"content":" * 1a1. Connectify shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":451,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":452,"author":{"gitId":"yapxuanxuan"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-06"},{"lineNumber":453,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":454,"author":{"gitId":"yapxuanxuan"},"content":"* 1b. The contact already has an existing company tag.","lastModifiedDate":"2024-03-06"},{"lineNumber":455,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":456,"author":{"gitId":"yapxuanxuan"},"content":" * 1b1. Connectify informs the user the company tag that the contact currently has and requests for confirmation","lastModifiedDate":"2024-03-06"},{"lineNumber":457,"author":{"gitId":"yapxuanxuan"},"content":" to update the current company tag to the newly given one.","lastModifiedDate":"2024-03-06"},{"lineNumber":458,"author":{"gitId":"yapxuanxuan"},"content":" * 1b2a. User confirms the update.","lastModifiedDate":"2024-03-06"},{"lineNumber":459,"author":{"gitId":"yapxuanxuan"},"content":" * 1b2a1. Connectify updates the current company tag of the given contact to the new one.","lastModifiedDate":"2024-03-06"},{"lineNumber":460,"author":{"gitId":"yapxuanxuan"},"content":" ","lastModifiedDate":"2024-03-06"},{"lineNumber":461,"author":{"gitId":"yapxuanxuan"},"content":" Use Case ends","lastModifiedDate":"2024-03-06"},{"lineNumber":462,"author":{"gitId":"yapxuanxuan"},"content":" * 1b2b. User cancels the update.","lastModifiedDate":"2024-03-06"},{"lineNumber":463,"author":{"gitId":"yapxuanxuan"},"content":" * 1b2b1. Connectify does not update the information.","lastModifiedDate":"2024-03-06"},{"lineNumber":464,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":465,"author":{"gitId":"yapxuanxuan"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":466,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":467,"author":{"gitId":"yapxuanxuan"},"content":"**Use case: Assign priorities to contacts**","lastModifiedDate":"2024-03-06"},{"lineNumber":468,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":469,"author":{"gitId":"yapxuanxuan"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":470,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":471,"author":{"gitId":"yapxuanxuan"},"content":"1. User requests to assign a specific contact with low/medium/high priority","lastModifiedDate":"2024-03-06"},{"lineNumber":472,"author":{"gitId":"yapxuanxuan"},"content":"2. Connectify adds the given priority to the contact and displays the full updated contact information","lastModifiedDate":"2024-03-06"},{"lineNumber":473,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":474,"author":{"gitId":"yapxuanxuan"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":475,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":476,"author":{"gitId":"yapxuanxuan"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":477,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":478,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":479,"author":{"gitId":"yapxuanxuan"},"content":"* 1a. The given contact name is not in the contact list.","lastModifiedDate":"2024-03-06"},{"lineNumber":480,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":481,"author":{"gitId":"yapxuanxuan"},"content":" * 1a1. Connectify shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":482,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":483,"author":{"gitId":"yapxuanxuan"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-06"},{"lineNumber":484,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":485,"author":{"gitId":"yapxuanxuan"},"content":"* 1b. The contact already has an existing priority label.","lastModifiedDate":"2024-03-06"},{"lineNumber":486,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":487,"author":{"gitId":"yapxuanxuan"},"content":" * 1b1. Connectify informs the user the priority label that the contact currently has and requests for confirmation","lastModifiedDate":"2024-03-06"},{"lineNumber":488,"author":{"gitId":"yapxuanxuan"},"content":" to update the current priority level to the newly given one.","lastModifiedDate":"2024-03-06"},{"lineNumber":489,"author":{"gitId":"yapxuanxuan"},"content":" * 1b2a. User confirms the update.","lastModifiedDate":"2024-03-06"},{"lineNumber":490,"author":{"gitId":"yapxuanxuan"},"content":" * 1b2a1. Connectify updates the current priority label of the given contact to the new one.","lastModifiedDate":"2024-03-06"},{"lineNumber":491,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":492,"author":{"gitId":"yapxuanxuan"},"content":" Use Case ends","lastModifiedDate":"2024-03-06"},{"lineNumber":493,"author":{"gitId":"yapxuanxuan"},"content":" * 1b2b. User cancels the update.","lastModifiedDate":"2024-03-06"},{"lineNumber":494,"author":{"gitId":"yapxuanxuan"},"content":" * 1b2b1. Connectify does not update the information.","lastModifiedDate":"2024-03-06"},{"lineNumber":495,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":496,"author":{"gitId":"yapxuanxuan"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":497,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":498,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":499,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":500,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":501,"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":502,"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":503,"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":504,"author":{"gitId":"SamuelZero1"},"content":"4. The application should implement certain security measures to protect the users\u0027 private contact details from unauthorized access. This includes the encryption of sensitive data and preventing unauthorized access to the application\u0027s database.","lastModifiedDate":"2024-03-07"},{"lineNumber":505,"author":{"gitId":"SamuelZero1"},"content":"5. The application should be convenient enough for the users(including those that are disabled).","lastModifiedDate":"2024-03-07"},{"lineNumber":506,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":507,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":508,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09"},{"lineNumber":509,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23"},{"lineNumber":510,"author":{"gitId":"SamuelZero1"},"content":"* **Favorites**: The users can mark some users as favorites. This will increase the user’s efficiency when finding the people they like to contact","lastModifiedDate":"2024-03-07"},{"lineNumber":511,"author":{"gitId":"SamuelZero1"},"content":"* **Tags**: The users can classify different contacts as from different groupings","lastModifiedDate":"2024-03-07"},{"lineNumber":512,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":513,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":514,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":515,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":516,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":517,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":518,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":519,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":520,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12"},{"lineNumber":521,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":522,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":523,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":524,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":525,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":526,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":527,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":528,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":529,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":530,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":531,"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":532,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":533,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":534,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":535,"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":536,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":537,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":538,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":539,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":540,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":541,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":542,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":543,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":544,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":545,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":546,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":547,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":548,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":549,"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":550,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":551,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":552,"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":553,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":554,"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":555,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":556,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":557,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":558,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":559,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":560,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":561,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":562,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":563,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":564,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":565,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"yapxuanxuan":172,"SamuelZero1":4,"FangRuoqing":18,"-":371}},{"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":"yapxuanxuan"},"content":"# Connectify User Guide","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"yapxuanxuan"},"content":"Connectify is a **desktop app for managing contacts, optimized for use via a Command Line Interface** (CLI) ","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"yapxuanxuan"},"content":"while still having the benefits of a Graphical User Interface (GUI). If you can type fast, Connectify can get your ","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"yapxuanxuan"},"content":"contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12"},{"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":"## Quick start","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"1. Ensure you have Java `11` or above installed in your Computer.","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"1. Download the latest `addressbook.jar` from [here](https://github.com/se-edu/addressbook-level3/releases).","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"yapxuanxuan"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your Connectify application.","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar addressbook.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2023-01-01"},{"lineNumber":27,"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":28,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"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":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":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"yapxuanxuan"},"content":" * `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01` : Adds a contact named `John Doe` ","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"yapxuanxuan"},"content":" to Connectify.","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"yapxuanxuan"},"content":" * `delete John Doe` : Deletes the contact with the specified contact name.","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"yapxuanxuan"},"content":" ","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"yapxuanxuan"},"content":" * `edit John Doe n/John Tan` : edits the name attribute of the contact of `John Doe` to `John Tan`","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","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":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"**Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"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":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"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":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"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":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"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":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"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":69,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":71,"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":72,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"Format: `help`","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":"### Adding a person: `add`","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"Adds a person to the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​`","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":91,"author":{"gitId":"-"},"content":"**Tip:** A person can have any number of tags (including 0)","lastModifiedDate":"2023-09-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"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":96,"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":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"### Listing all persons : `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"Shows a list of all persons in the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":"### Editing a person : `edit`","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":"Edits an existing person in the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"yapxuanxuan"},"content":"Format: `edit NAME [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`","lastModifiedDate":"2024-03-12"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"yapxuanxuan"},"content":"* Edits the contact with the specified `NAME`. The specified `NAME` of the contact to edit is case-insensitive. ","lastModifiedDate":"2024-03-12"},{"lineNumber":111,"author":{"gitId":"yapxuanxuan"},"content":" e.g `edit John Doe n/John` is the same as `edit john doe n/John`","lastModifiedDate":"2024-03-12"},{"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":"yapxuanxuan"},"content":"* `edit John Doe p/91234567 e/johndoe@example.com` Edits the phone number and email address of the contact named ","lastModifiedDate":"2024-03-12"},{"lineNumber":120,"author":{"gitId":"yapxuanxuan"},"content":" `John Doe` to be `91234567` and `johndoe@example.com` respectively.","lastModifiedDate":"2024-03-12"},{"lineNumber":121,"author":{"gitId":"yapxuanxuan"},"content":"* `edit Betsy n/Betsy Crower t/` Edits the name of the contact named `Betsy` to be `Betsy Crower` and clears all ","lastModifiedDate":"2024-03-12"},{"lineNumber":122,"author":{"gitId":"yapxuanxuan"},"content":" existing tags.","lastModifiedDate":"2024-03-12"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"### Locating persons by name: `find`","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"Finds persons whose names contain any of the given keywords.","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"* `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"Deletes the specified person from the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"yapxuanxuan"},"content":"Format: `delete NAME`","lastModifiedDate":"2024-03-12"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":148,"author":{"gitId":"yapxuanxuan"},"content":"* Deletes the contact with the specified `NAME`. The specified `NAME` of the contact to delete is case-insensitive.","lastModifiedDate":"2024-03-12"},{"lineNumber":149,"author":{"gitId":"yapxuanxuan"},"content":" e.g `delete John Doe` is the same as `delete john doe`","lastModifiedDate":"2024-03-12"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":151,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2024-03-12"},{"lineNumber":152,"author":{"gitId":"yapxuanxuan"},"content":"* `delete Betsy` deletes the contact with the contact name `Betsy` in the address book.","lastModifiedDate":"2024-03-12"},{"lineNumber":153,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":154,"author":{"gitId":"yapxuanxuan"},"content":"### Adding a company tag to a person : `co`","lastModifiedDate":"2024-03-21"},{"lineNumber":155,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":156,"author":{"gitId":"yapxuanxuan"},"content":"Adds the specified company tag name to the specified contact.","lastModifiedDate":"2024-03-21"},{"lineNumber":157,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":158,"author":{"gitId":"yapxuanxuan"},"content":"Format: `co NAME c/COMPANY_NAME`","lastModifiedDate":"2024-03-21"},{"lineNumber":159,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":160,"author":{"gitId":"yapxuanxuan"},"content":"* Adds the company tag to the person\u0027s contact. The specified `NAME` of the contact to add the company tag is ","lastModifiedDate":"2024-03-21"},{"lineNumber":161,"author":{"gitId":"yapxuanxuan"},"content":"case-insensitive. e.g `co John Doe c/TikTok` is the same as `co john doe c/TikTok`","lastModifiedDate":"2024-03-21"},{"lineNumber":162,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":163,"author":{"gitId":"yapxuanxuan"},"content":"Examples:","lastModifiedDate":"2024-03-12"},{"lineNumber":164,"author":{"gitId":"yapxuanxuan"},"content":"* `co Betsy c/Google` adds the company tag `Google` to the contact name `Betsy` in the address book.","lastModifiedDate":"2024-03-21"},{"lineNumber":165,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":166,"author":{"gitId":"yapxuanxuan"},"content":"### Assigning priority level to a contact : `pr/PRIORITY_LEVEL`","lastModifiedDate":"2024-03-21"},{"lineNumber":167,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":168,"author":{"gitId":"yapxuanxuan"},"content":"Assigns the specified priority level to the specified contact.","lastModifiedDate":"2024-03-21"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"yapxuanxuan"},"content":"Format: `pr/PRIORITY_LEVEL NAME`","lastModifiedDate":"2024-03-21"},{"lineNumber":171,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":172,"author":{"gitId":"yapxuanxuan"},"content":"* Assigns the specified priority level to the person\u0027s contact. The specified `NAME` of the contact to assign the ","lastModifiedDate":"2024-03-21"},{"lineNumber":173,"author":{"gitId":"yapxuanxuan"},"content":"priority level is case-insensitive. e.g `pr/high Alex Tan` is the same as `pr/high alex tan`","lastModifiedDate":"2024-03-21"},{"lineNumber":174,"author":{"gitId":"yapxuanxuan"},"content":"* Acceptable values for PRIORITY_LEVEL are `high` and `med`.","lastModifiedDate":"2024-03-21"},{"lineNumber":175,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":176,"author":{"gitId":"yapxuanxuan"},"content":"Examples:","lastModifiedDate":"2024-03-21"},{"lineNumber":177,"author":{"gitId":"yapxuanxuan"},"content":"* `pr/high Alex Tan` assigns `HIGH` priority level to the contact name `Alex Tan` in the address book.","lastModifiedDate":"2024-03-21"},{"lineNumber":178,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":179,"author":{"gitId":"yapxuanxuan"},"content":"### Filtering contacts by priority : `filter-PRIORITY_LEVEL`","lastModifiedDate":"2024-03-21"},{"lineNumber":180,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":181,"author":{"gitId":"yapxuanxuan"},"content":"Filters the contacts in the address book by the specified priority level.","lastModifiedDate":"2024-03-12"},{"lineNumber":182,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":183,"author":{"gitId":"yapxuanxuan"},"content":"Format: `filter-PRIORITY_LEVEL`","lastModifiedDate":"2024-03-21"},{"lineNumber":184,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":185,"author":{"gitId":"yapxuanxuan"},"content":"Examples:","lastModifiedDate":"2024-03-12"},{"lineNumber":186,"author":{"gitId":"yapxuanxuan"},"content":"* `filter-high` returns a list of contacts with priority assigned as `high`.","lastModifiedDate":"2024-03-21"},{"lineNumber":187,"author":{"gitId":"yapxuanxuan"},"content":"* `filter-med` returns a list of contacts with priority assigned as `med`.","lastModifiedDate":"2024-03-21"},{"lineNumber":188,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":189,"author":{"gitId":"yapxuanxuan"},"content":"### Getting the number of contacts : `count`","lastModifiedDate":"2024-03-21"},{"lineNumber":190,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":191,"author":{"gitId":"yapxuanxuan"},"content":"Counts the number of contacts in the address book.","lastModifiedDate":"2024-03-21"},{"lineNumber":192,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":193,"author":{"gitId":"yapxuanxuan"},"content":"Format: `count`","lastModifiedDate":"2024-03-21"},{"lineNumber":194,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":195,"author":{"gitId":"yapxuanxuan"},"content":"### Starring a contact : `star`","lastModifiedDate":"2024-03-12"},{"lineNumber":196,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":197,"author":{"gitId":"yapxuanxuan"},"content":"Stars the specified contact in the address book.","lastModifiedDate":"2024-03-12"},{"lineNumber":198,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":199,"author":{"gitId":"yapxuanxuan"},"content":"Format: `star NAME`","lastModifiedDate":"2024-03-12"},{"lineNumber":200,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":201,"author":{"gitId":"yapxuanxuan"},"content":"* Stars the contact with the specified `NAME`. The specified `NAME` of the contact to star is case-insensitive.","lastModifiedDate":"2024-03-12"},{"lineNumber":202,"author":{"gitId":"yapxuanxuan"},"content":" e.g `star John Doe` is the same as `star john doe`","lastModifiedDate":"2024-03-12"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"yapxuanxuan"},"content":"* `star Betsy` stars the contact with the contact name `Betsy` in the address book.","lastModifiedDate":"2024-03-12"},{"lineNumber":206,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":207,"author":{"gitId":"yapxuanxuan"},"content":"### Undoing the last command : `undo`","lastModifiedDate":"2024-03-12"},{"lineNumber":208,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":209,"author":{"gitId":"yapxuanxuan"},"content":"Undoes the most recent add command by removing the most recently added contact.","lastModifiedDate":"2024-03-12"},{"lineNumber":210,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":211,"author":{"gitId":"yapxuanxuan"},"content":"Format: `undo`","lastModifiedDate":"2024-03-12"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"Clears all entries from the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"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":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"yapxuanxuan"},"content":"The address book data is saved in the hard disk automatically after any command that changes the data. There is no need to save manually.","lastModifiedDate":"2024-03-12"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":231,"author":{"gitId":"yapxuanxuan"},"content":"The address book data is 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":"2024-03-12"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":233,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":235,"author":{"gitId":"-"},"content":"**Caution:**","lastModifiedDate":"2023-09-12"},{"lineNumber":236,"author":{"gitId":"yapxuanxuan"},"content":"If your changes to the data file makes its format invalid, Connectify 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.\u003cbr\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":237,"author":{"gitId":"yapxuanxuan"},"content":"Furthermore, certain edits can cause Connectify to behave in unexpected ways (e.g., if a value entered is outside the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.","lastModifiedDate":"2024-03-12"},{"lineNumber":238,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":240,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04"},{"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":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"yapxuanxuan"},"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 Connectify home folder.","lastModifiedDate":"2024-03-12"},{"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":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":255,"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":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":257,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":259,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23"},{"lineNumber":262,"author":{"gitId":"yapxuanxuan"},"content":"-----------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-03-21"},{"lineNumber":263,"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":264,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"yapxuanxuan"},"content":"**Delete** | `delete NAME`\u003cbr\u003e e.g., `delete John Doe`","lastModifiedDate":"2024-03-12"},{"lineNumber":266,"author":{"gitId":"yapxuanxuan"},"content":"**Edit** | `edit NAME [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`\u003cbr\u003e e.g.,`edit James n/James Lee e/jameslee@example.com`","lastModifiedDate":"2024-03-12"},{"lineNumber":267,"author":{"gitId":"-"},"content":"**Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake`","lastModifiedDate":"2020-05-23"},{"lineNumber":268,"author":{"gitId":"yapxuanxuan"},"content":"**Add Company Tag** | `co NAME c/COMPANY_NAME`\u003cbr\u003e e.g., `co James Doe c/TikTok`","lastModifiedDate":"2024-03-21"},{"lineNumber":269,"author":{"gitId":"yapxuanxuan"},"content":"**Assign Priority** | `pr/PRIORITY_LEVEL NAME`\u003cbr\u003e e.g., `pr/high Alex Tan`","lastModifiedDate":"2024-03-21"},{"lineNumber":270,"author":{"gitId":"yapxuanxuan"},"content":"**Filter** | `filter-PRIORITY_LEVEL`\u003cbr\u003e e.g., `filter-high`","lastModifiedDate":"2024-03-21"},{"lineNumber":271,"author":{"gitId":"yapxuanxuan"},"content":"**Count** | `count`","lastModifiedDate":"2024-03-12"},{"lineNumber":272,"author":{"gitId":"yapxuanxuan"},"content":"**Star** | `star NAME`\u003cbr\u003e e.g., `star John Doe`","lastModifiedDate":"2024-03-12"},{"lineNumber":273,"author":{"gitId":"yapxuanxuan"},"content":"**Undo** | `undo`","lastModifiedDate":"2024-03-12"},{"lineNumber":274,"author":{"gitId":"-"},"content":"**List** | `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"yapxuanxuan":91,"-":184}},{"path":"docs/_markbind/layouts/default.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003chead-bottom\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003clink rel\u003d\"stylesheet\" href\u003d\"{{baseUrl}}/stylesheets/main.css\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c/head-bottom\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003cheader sticky\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cnavbar type\u003d\"dark\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"sindhurajain"},"content":" \u003ca slot\u003d\"brand\" href\u003d\"{{baseUrl}}/index.html\" title\u003d\"Home\" class\u003d\"navbar-brand\"\u003eConnectify\u003c/a\u003e","lastModifiedDate":"2024-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/index.html\" class\u003d\"nav-link\"\u003eHome\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/UserGuide.html\" class\u003d\"nav-link\"\u003eUser Guide\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/DeveloperGuide.html\" class\u003d\"nav-link\"\u003eDeveloper Guide\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/AboutUs.html\" class\u003d\"nav-link\"\u003eAbout Us\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"https://github.com/se-edu/addressbook-level3\" target\u003d\"_blank\" class\u003d\"nav-link\"\u003e\u003cmd\u003e:fab-github:\u003c/md\u003e\u003c/a\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cli slot\u003d\"right\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cform class\u003d\"navbar-form\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003csearchbar :data\u003d\"searchData\" placeholder\u003d\"Search\" :on-hit\u003d\"searchCallback\" menu-align-right\u003e\u003c/searchbar\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/form\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/navbar\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"\u003c/header\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"flex-body\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"site-nav\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"site-nav-top\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"fw-bold mb-2\" style\u003d\"font-size: 1.25rem;\"\u003eSite Map\u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003csite-nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"* [Home]({{ baseUrl }}/index.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"* [User Guide]({{ baseUrl }}/UserGuide.html) :expanded:","lastModifiedDate":"2023-09-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * [Quick Start]({{ baseUrl }}/UserGuide.html#quick-start)","lastModifiedDate":"2023-09-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * [Features]({{ baseUrl }}/UserGuide.html#features)","lastModifiedDate":"2023-09-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * [FAQ]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * [Command Summary]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":"* [Developer Guide]({{ baseUrl }}/DeveloperGuide.html) :expanded:","lastModifiedDate":"2023-09-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * [Acknowledgements]({{ baseUrl }}/DeveloperGuide.html#acknowledgements)","lastModifiedDate":"2023-09-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * [Setting Up]({{ baseUrl }}/DeveloperGuide.html#setting-up-getting-started)","lastModifiedDate":"2023-09-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * [Design]({{ baseUrl }}/DeveloperGuide.html#design)","lastModifiedDate":"2023-09-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * [Implementation]({{ baseUrl }}/DeveloperGuide.html#implementation)","lastModifiedDate":"2023-09-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * [Documentation, logging, testing, configuration, dev-ops]({{ baseUrl }}/DeveloperGuide.html#documentation-logging-testing-configuration-dev-ops)","lastModifiedDate":"2023-09-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * [Appendix: Requirements]({{ baseUrl }}/DeveloperGuide.html#appendix-requirements)","lastModifiedDate":"2023-09-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * [Appendix: Instructions for manual testing]({{ baseUrl }}/DeveloperGuide.html#appendix-instructions-for-manual-testing)","lastModifiedDate":"2023-09-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":"* Tutorials","lastModifiedDate":"2023-09-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * [Tracing code]({{ baseUrl }}/tutorials/TracingCode.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * [Adding a command]({{ baseUrl }}/tutorials/AddRemark.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * [Removing Fields]({{ baseUrl }}/tutorials/RemovingFields.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [About Us]({{ baseUrl }}/AboutUs.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/site-nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cdiv id\u003d\"content-wrapper\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" {{ content }}","lastModifiedDate":"2023-09-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"page-nav\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cpage-nav /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003cscroll-top-button\u003e\u003c/scroll-top-button\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":"\u003cfooter\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003c!-- Support MarkBind by including a link to us on your landing page! --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"text-center\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u003csmall\u003e[\u003cmd\u003e**Powered by**\u003c/md\u003e \u003cimg src\u003d\"https://markbind.org/favicon.ico\" width\u003d\"30\"\u003e {{MarkBind}}, generated on {{timestamp}}]\u003c/small\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003c/footer\u003e","lastModifiedDate":"2023-09-12"}],"authorContributionMap":{"sindhurajain":1,"-":66}},{"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":"-"},"content":"AddressBook *-right-\u003e \"1\" UniquePersonList","lastModifiedDate":"2019-07-30"},{"lineNumber":8,"author":{"gitId":"-"},"content":"AddressBook *-right-\u003e \"1\" UniqueTagList","lastModifiedDate":"2019-07-30"},{"lineNumber":9,"author":{"gitId":"-"},"content":"UniqueTagList -[hidden]down- UniquePersonList","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"UniqueTagList -[hidden]down- UniquePersonList","lastModifiedDate":"2019-07-03"},{"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":"-"},"content":"UniquePersonList -right-\u003e Person","lastModifiedDate":"2021-07-31"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"Person -up-\u003e \"*\" Tag","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Person *--\u003e Name","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Person *--\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Person *--\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Person *--\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"yapxuanxuan"},"content":"Person *--\u003e Company","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"yapxuanxuan":1,"-":21}},{"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":"-"},"content":"Class UniquePersonList","lastModifiedDate":"2021-07-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Class Person","lastModifiedDate":"2019-07-03"},{"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":"-"},"content":"Class Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"Class Tag","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"yapxuanxuan"},"content":"Class Company","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":24,"author":{"gitId":"-"},"content":"Class I #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"AddressBook .up.|\u003e ReadOnlyAddressBook","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"ModelManager .up.|\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"Model .right.\u003e ReadOnlyUserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"Model .left.\u003e ReadOnlyAddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":"ModelManager -left-\u003e \"1\" AddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"ModelManager -right-\u003e \"1\" UserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"UserPrefs .up.|\u003e ReadOnlyUserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"AddressBook *--\u003e \"1\" UniquePersonList","lastModifiedDate":"2019-07-30"},{"lineNumber":40,"author":{"gitId":"-"},"content":"UniquePersonList --\u003e \"~* all\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":41,"author":{"gitId":"-"},"content":"Person *--\u003e Name","lastModifiedDate":"2019-07-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"Person *--\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"Person *--\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"Person *--\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"Person *--\u003e \"*\" Tag","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"yapxuanxuan"},"content":"Person *--\u003e Company","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":48,"author":{"gitId":"-"},"content":"Person -[hidden]up--\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"UniquePersonList -[hidden]right-\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"Name -[hidden]right-\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":52,"author":{"gitId":"-"},"content":"Phone -[hidden]right-\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":53,"author":{"gitId":"-"},"content":"Address -[hidden]right-\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":55,"author":{"gitId":"-"},"content":"ModelManager --\u003e \"~* filtered\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":56,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"yapxuanxuan":2,"-":54}},{"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":"2024-03-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":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * containsWordIgnoreCase(\"ABc def\", \"DEF\") \u003d\u003d true","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * containsWordIgnoreCase(\"ABc def\", \"AB\") \u003d\u003d false //not a full word match","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * \u003c/pre\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @param sentence cannot be null","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @param word cannot be null, cannot be empty, must be a single word","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"yapxuanxuan"},"content":" public static boolean containsFullWordIgnoreCase(String sentence, String word) {","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" requireNonNull(sentence);","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":" requireNonNull(word);","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" String preppedWord \u003d word.trim();","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" checkArgument(!preppedWord.isEmpty(), \"Word parameter cannot be empty\");","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" checkArgument(preppedWord.split(\"\\\\s+\").length \u003d\u003d 1, \"Word parameter should be a single word\");","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" String preppedSentence \u003d sentence;","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" String[] wordsInPreppedSentence \u003d preppedSentence.split(\"\\\\s+\");","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return Arrays.stream(wordsInPreppedSentence)","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" .anyMatch(preppedWord::equalsIgnoreCase);","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"yapxuanxuan"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"yapxuanxuan"},"content":" * Returns true if the {@code sentence} contains the {@code word}.","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"yapxuanxuan"},"content":" * Ignores case, allows partial word match.","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"yapxuanxuan"},"content":" * \u003cbr\u003eexamples:\u003cpre\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * containsWordIgnoreCase(\"ABc def\", \"abc\") \u003d\u003d true","lastModifiedDate":"2016-10-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * containsWordIgnoreCase(\"ABc def\", \"DEF\") \u003d\u003d true","lastModifiedDate":"2016-10-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * containsWordIgnoreCase(\"ABc def\", \"AB\") \u003d\u003d false //not a full word match","lastModifiedDate":"2016-10-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * \u003c/pre\u003e","lastModifiedDate":"2016-10-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * @param sentence cannot be null","lastModifiedDate":"2016-10-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * @param word cannot be null, cannot be empty, must be a single word","lastModifiedDate":"2016-10-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static boolean containsWordIgnoreCase(String sentence, String word) {","lastModifiedDate":"2016-10-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" requireNonNull(sentence);","lastModifiedDate":"2017-05-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":" requireNonNull(word);","lastModifiedDate":"2017-05-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":56,"author":{"gitId":"FangRuoqing"},"content":" String preppedWord \u003d word.trim().toLowerCase(); // Convert to lowercase for case-insensitive matching","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" checkArgument(!preppedWord.isEmpty(), \"Word parameter cannot be empty\");","lastModifiedDate":"2017-05-15"},{"lineNumber":58,"author":{"gitId":"FangRuoqing"},"content":" checkArgument(preppedWord.split(\"\\\\s+\").length \u003d\u003d 1, \"Word parameter should be a single word\");","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":60,"author":{"gitId":"FangRuoqing"},"content":" String preppedSentence \u003d sentence.toLowerCase(); // Convert to lowercase for case-insensitive matching","lastModifiedDate":"2024-03-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":62,"author":{"gitId":"FangRuoqing"},"content":" return preppedSentence.contains(preppedWord);","lastModifiedDate":"2024-03-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * Returns a detailed message of the t, including the stack trace.","lastModifiedDate":"2016-09-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public static String getDetails(Throwable t) {","lastModifiedDate":"2016-09-21"},{"lineNumber":69,"author":{"gitId":"-"},"content":" requireNonNull(t);","lastModifiedDate":"2017-05-15"},{"lineNumber":70,"author":{"gitId":"-"},"content":" StringWriter sw \u003d new StringWriter();","lastModifiedDate":"2016-09-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":" t.printStackTrace(new PrintWriter(sw));","lastModifiedDate":"2016-09-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return t.getMessage() + \"\\n\" + sw.toString();","lastModifiedDate":"2016-09-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * Returns true if {@code s} represents a non-zero unsigned integer","lastModifiedDate":"2017-06-02"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * e.g. 1, 2, 3, ..., {@code Integer.MAX_VALUE} \u003cbr\u003e","lastModifiedDate":"2017-06-02"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Will return false for any other non-null string input","lastModifiedDate":"2017-06-02"},{"lineNumber":79,"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":80,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code s} is null.","lastModifiedDate":"2017-06-02"},{"lineNumber":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public static boolean isNonZeroUnsignedInteger(String s) {","lastModifiedDate":"2017-06-02"},{"lineNumber":83,"author":{"gitId":"-"},"content":" requireNonNull(s);","lastModifiedDate":"2017-06-02"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":85,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-06-02"},{"lineNumber":86,"author":{"gitId":"-"},"content":" int value \u003d Integer.parseInt(s);","lastModifiedDate":"2017-06-02"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return value \u003e 0 \u0026\u0026 !s.startsWith(\"+\"); // \"+1\" is successfully parsed by Integer#parseInt(String)","lastModifiedDate":"2017-06-02"},{"lineNumber":88,"author":{"gitId":"-"},"content":" } catch (NumberFormatException nfe) {","lastModifiedDate":"2017-06-02"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-06-02"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-02"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":92,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"yapxuanxuan":5,"FangRuoqing":4,"-":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":"-"},"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":"","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":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2017-05-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09"},{"lineNumber":30,"author":{"gitId":"tahnya"},"content":" + \"EMAIL, ADDRESS and TAGs are optional.\\n\"","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":" + PREFIX_TAG + \"owesMoney\";","lastModifiedDate":"2017-05-09"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: %1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book\";","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":48,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":49,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":57,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":60,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return true;","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":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return false;","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":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"tahnya":1,"-":84}},{"path":"src/main/java/seedu/address/logic/commands/CompanyCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yapxuanxuan"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"yapxuanxuan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"yapxuanxuan"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"yapxuanxuan"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"yapxuanxuan"},"content":"import java.util.List;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.model.person.Company;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"yapxuanxuan"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"yapxuanxuan"},"content":" * Changes the remark of an existing person in the address book.","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"yapxuanxuan"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"yapxuanxuan"},"content":"public class CompanyCommand extends Command {","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"yapxuanxuan"},"content":" public static final String COMMAND_WORD \u003d \"co\";","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"yapxuanxuan"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"yapxuanxuan"},"content":" + \": Adds a company to the person identified by the contact name \"","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"yapxuanxuan"},"content":" + \"Existing company will be overwritten by the input.\\n\"","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"yapxuanxuan"},"content":" + \"c/ [COMPANY_NAME]\\n\"","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"yapxuanxuan"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"yapxuanxuan"},"content":" + \"c/ Friends\";","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"yapxuanxuan"},"content":" public static final String MESSAGE_ADD_COMPANY_SUCCESS \u003d \"Tagged %1$s\u0027s company as %2$s\";","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"yapxuanxuan"},"content":" public static final String MESSAGE_DELETE_COMPANY_SUCCESS \u003d \"Removed the company tag from %1$s\u0027s contact\";","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"yapxuanxuan"},"content":" public static final String MESSAGE_NOT_IMPLEMENTED_YET \u003d","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"yapxuanxuan"},"content":" \"Company command not implemented yet\";","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"yapxuanxuan"},"content":" public static final String MESSAGE_PERSON_NOT_FOUND \u003d \"Oops, %1$s\u0027s contact does not exist. Unable to add \"","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"yapxuanxuan"},"content":" + \"company tag.\";","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"yapxuanxuan"},"content":" public static final String MESSAGE_EMPTY_NAME \u003d \"Oops, please state the name of the contact.\";","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"yapxuanxuan"},"content":" private final String name;","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"yapxuanxuan"},"content":" private final Company company;","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"yapxuanxuan"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"yapxuanxuan"},"content":" * @param name of the person in the filtered person list to edit the remark","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"yapxuanxuan"},"content":" * @param company of the person to be updated to","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"yapxuanxuan"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"yapxuanxuan"},"content":" public CompanyCommand(String name, Company company) {","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"yapxuanxuan"},"content":" requireAllNonNull(name, company);","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"yapxuanxuan"},"content":" this.name \u003d name;","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"yapxuanxuan"},"content":" this.company \u003d company;","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"yapxuanxuan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"yapxuanxuan"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"yapxuanxuan"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"yapxuanxuan"},"content":" if (name.isEmpty()) {","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"yapxuanxuan"},"content":" throw new CommandException(String.format(MESSAGE_EMPTY_NAME, name));","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":58,"author":{"gitId":"yapxuanxuan"},"content":" List\u003cPerson\u003e contactList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"yapxuanxuan"},"content":" Person personToEdit \u003d null;","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"yapxuanxuan"},"content":" for (Person person : contactList) {","lastModifiedDate":"2024-03-14"},{"lineNumber":61,"author":{"gitId":"yapxuanxuan"},"content":" if (person.getName().fullName.equalsIgnoreCase(name)) {","lastModifiedDate":"2024-03-14"},{"lineNumber":62,"author":{"gitId":"yapxuanxuan"},"content":" personToEdit \u003d person;","lastModifiedDate":"2024-03-14"},{"lineNumber":63,"author":{"gitId":"yapxuanxuan"},"content":" break;","lastModifiedDate":"2024-03-14"},{"lineNumber":64,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":65,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":66,"author":{"gitId":"yapxuanxuan"},"content":" if (personToEdit \u003d\u003d null) {","lastModifiedDate":"2024-03-14"},{"lineNumber":67,"author":{"gitId":"yapxuanxuan"},"content":" throw new CommandException(String.format(MESSAGE_PERSON_NOT_FOUND, name));","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":69,"author":{"gitId":"yapxuanxuan"},"content":" Person editedPerson \u003d new Person(","lastModifiedDate":"2024-03-13"},{"lineNumber":70,"author":{"gitId":"yapxuanxuan"},"content":" personToEdit.getName(), personToEdit.getPhone(), personToEdit.getEmail(),","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"FangRuoqing"},"content":" personToEdit.getAddress(), company, personToEdit.getPriority(),","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"FangRuoqing"},"content":" personToEdit.isStarred(), personToEdit.getTags());","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"yapxuanxuan"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2024-03-13"},{"lineNumber":74,"author":{"gitId":"yapxuanxuan"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-13"},{"lineNumber":75,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":76,"author":{"gitId":"yapxuanxuan"},"content":" return new CommandResult(generateSuccessMessage(editedPerson));","lastModifiedDate":"2024-03-13"},{"lineNumber":77,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":78,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":79,"author":{"gitId":"yapxuanxuan"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":80,"author":{"gitId":"yapxuanxuan"},"content":" * Generates a command execution success message based on whether","lastModifiedDate":"2024-03-13"},{"lineNumber":81,"author":{"gitId":"yapxuanxuan"},"content":" * the remark is added to or removed from","lastModifiedDate":"2024-03-13"},{"lineNumber":82,"author":{"gitId":"yapxuanxuan"},"content":" * {@code personToEdit}.","lastModifiedDate":"2024-03-13"},{"lineNumber":83,"author":{"gitId":"yapxuanxuan"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":84,"author":{"gitId":"yapxuanxuan"},"content":" private String generateSuccessMessage(Person personToEdit) {","lastModifiedDate":"2024-03-13"},{"lineNumber":85,"author":{"gitId":"yapxuanxuan"},"content":" String message \u003d !company.value.isEmpty() ? MESSAGE_ADD_COMPANY_SUCCESS : MESSAGE_DELETE_COMPANY_SUCCESS;","lastModifiedDate":"2024-03-13"},{"lineNumber":86,"author":{"gitId":"yapxuanxuan"},"content":" return String.format(message, personToEdit.getName(), company);","lastModifiedDate":"2024-03-13"},{"lineNumber":87,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":88,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":89,"author":{"gitId":"yapxuanxuan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":90,"author":{"gitId":"yapxuanxuan"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-13"},{"lineNumber":91,"author":{"gitId":"yapxuanxuan"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-13"},{"lineNumber":92,"author":{"gitId":"yapxuanxuan"},"content":" return true;","lastModifiedDate":"2024-03-13"},{"lineNumber":93,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":94,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":95,"author":{"gitId":"yapxuanxuan"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-13"},{"lineNumber":96,"author":{"gitId":"yapxuanxuan"},"content":" if (!(other instanceof CompanyCommand)) {","lastModifiedDate":"2024-03-13"},{"lineNumber":97,"author":{"gitId":"yapxuanxuan"},"content":" return false;","lastModifiedDate":"2024-03-13"},{"lineNumber":98,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":99,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":100,"author":{"gitId":"yapxuanxuan"},"content":" CompanyCommand e \u003d (CompanyCommand) other;","lastModifiedDate":"2024-03-13"},{"lineNumber":101,"author":{"gitId":"yapxuanxuan"},"content":" return name.equals(e.name)","lastModifiedDate":"2024-03-13"},{"lineNumber":102,"author":{"gitId":"yapxuanxuan"},"content":" \u0026\u0026 company.equals(e.company);","lastModifiedDate":"2024-03-13"},{"lineNumber":103,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":104,"author":{"gitId":"yapxuanxuan"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"yapxuanxuan":102,"FangRuoqing":2}},{"path":"src/main/java/seedu/address/logic/commands/CountCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yapxuanxuan"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"yapxuanxuan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"yapxuanxuan"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"yapxuanxuan"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"yapxuanxuan"},"content":" * Shows the number of contacts in the address book to the user.","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"yapxuanxuan"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"yapxuanxuan"},"content":"public class CountCommand extends Command {","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"yapxuanxuan"},"content":" public static final String COMMAND_WORD \u003d \"count\";","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"yapxuanxuan"},"content":" public static final String MESSAGE_SUCCESS \u003d \"You currently have %1$d contacts.\";","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"yapxuanxuan"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"yapxuanxuan"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"yapxuanxuan"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"yapxuanxuan"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"yapxuanxuan"},"content":" int count \u003d model.getFilteredPersonList().size();","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"yapxuanxuan"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, count));","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"yapxuanxuan"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"yapxuanxuan":25}},{"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.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"sindhurajain"},"content":" * Deletes a person identified using it\u0027s displayed name from the contact list.","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"sindhurajain"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Deletes the person identified by the \"","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"sindhurajain"},"content":" + \"name used in the contact list.\\n\" + \"Parameters: CONTACT_NAME\\n\"","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"sindhurajain"},"content":" + \"Example: \" + COMMAND_WORD + \" Alex Tan\";","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"sindhurajain"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Okay, %1$s\u0027s contact has been deleted.\";","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"sindhurajain"},"content":" public static final String MESSAGE_PERSON_NOT_FOUND \u003d \"Oops, %1$s\u0027s contact does not exist.\";","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"sindhurajain"},"content":" private final String targetName;","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"sindhurajain"},"content":" public DeleteCommand(String targetName) {","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"sindhurajain"},"content":" this.targetName \u003d targetName;","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"sindhurajain"},"content":" public String getTargetName() {","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"sindhurajain"},"content":" return targetName;","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":34,"author":{"gitId":"sindhurajain"},"content":" List\u003cPerson\u003e contactList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"sindhurajain"},"content":" Person personToDelete \u003d null;","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"sindhurajain"},"content":" for (Person person : contactList) {","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"sindhurajain"},"content":" if (person.getName().fullName.equalsIgnoreCase(targetName)) {","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"sindhurajain"},"content":" personToDelete \u003d person;","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"sindhurajain"},"content":" break;","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"sindhurajain"},"content":" if (personToDelete \u003d\u003d null) {","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"sindhurajain"},"content":" throw new CommandException(String.format(MESSAGE_PERSON_NOT_FOUND, targetName));","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":45,"author":{"gitId":"-"},"content":" model.deletePerson(personToDelete);","lastModifiedDate":"2016-09-25"},{"lineNumber":46,"author":{"gitId":"sindhurajain"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, targetName));","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"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":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (!(other instanceof DeleteCommand)) {","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":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"sindhurajain"},"content":" return targetName.equals(otherDeleteCommand.targetName);","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"sindhurajain"},"content":" return new ToStringBuilder(this).add(\"targetName\", targetName).toString();","lastModifiedDate":"2024-03-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"sindhurajain":26,"-":40}},{"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":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.model.person.Company;","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"sindhurajain"},"content":"import seedu.address.model.person.Priority;","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26"},{"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":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the person identified \"","lastModifiedDate":"2016-12-26"},{"lineNumber":41,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01"},{"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":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06"},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26"},{"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":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26"},{"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":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25"},{"lineNumber":65,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25"},{"lineNumber":66,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"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":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26"},{"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":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19"},{"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":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","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.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":89,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23"},{"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":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26"},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":97,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":100,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":101,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21"},{"lineNumber":102,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":103,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2017-06-21"},{"lineNumber":104,"author":{"gitId":"yapxuanxuan"},"content":" Company updatedCompany \u003d personToEdit.getCompany();","lastModifiedDate":"2024-03-13"},{"lineNumber":105,"author":{"gitId":"FangRuoqing"},"content":" Boolean updatedStar \u003d personToEdit.isStarred();","lastModifiedDate":"2024-03-20"},{"lineNumber":106,"author":{"gitId":"sindhurajain"},"content":" Priority updatedPriority \u003d personToEdit.getPriority();","lastModifiedDate":"2024-03-20"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2017-06-21"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":109,"author":{"gitId":"sindhurajain"},"content":" return new Person(updatedName, updatedPhone, updatedEmail,","lastModifiedDate":"2024-03-20"},{"lineNumber":110,"author":{"gitId":"FangRuoqing"},"content":" updatedAddress, updatedCompany, updatedPriority, updatedStar, updatedTags);","lastModifiedDate":"2024-03-21"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":" return false;","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":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"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(\"index\", index)","lastModifiedDate":"2019-02-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":138,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26"},{"lineNumber":139,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26"},{"lineNumber":140,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":141,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26"},{"lineNumber":142,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21"},{"lineNumber":143,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":144,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":145,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21"},{"lineNumber":146,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21"},{"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":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":162,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":163,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26"},{"lineNumber":164,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":165,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26"},{"lineNumber":166,"author":{"gitId":"-"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, tags);","lastModifiedDate":"2018-08-14"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":169,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21"},{"lineNumber":170,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":173,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":174,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21"},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":177,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21"},{"lineNumber":178,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":181,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26"},{"lineNumber":182,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21"},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":185,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21"},{"lineNumber":186,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":189,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":190,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21"},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":193,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21"},{"lineNumber":194,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":197,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26"},{"lineNumber":198,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21"},{"lineNumber":199,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":201,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":202,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11"},{"lineNumber":203,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":204,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":205,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21"},{"lineNumber":206,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11"},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":209,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":210,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11"},{"lineNumber":211,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11"},{"lineNumber":212,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11"},{"lineNumber":213,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":214,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":215,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11"},{"lineNumber":216,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":218,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":219,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":220,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":221,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":222,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":224,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":225,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05"},{"lineNumber":226,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":227,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":229,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":230,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":231,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":232,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":233,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":234,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags);","lastModifiedDate":"2023-07-13"},{"lineNumber":235,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":248,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"yapxuanxuan":2,"FangRuoqing":2,"sindhurajain":3,"-":241}},{"path":"src/main/java/seedu/address/logic/commands/FilterHighPriorityCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sindhurajain"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"sindhurajain"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"sindhurajain"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"sindhurajain"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"sindhurajain"},"content":" * Finds and lists all persons in address book who are marked as high priority.","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"sindhurajain"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"sindhurajain"},"content":"public class FilterHighPriorityCommand extends Command {","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"sindhurajain"},"content":" public static final String COMMAND_WORD \u003d \"filter-high\";","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"sindhurajain"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all persons whose \"","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"sindhurajain"},"content":" + \"priorities are high and displays them as a list.\\n\"","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"sindhurajain"},"content":" + \"Example: \" + COMMAND_WORD;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"sindhurajain"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed contacts with high priority\";","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"sindhurajain"},"content":" public static final String MESSAGE_NO_CONTACTS_FOUND \u003d \"Oops! No contacts found with high priority level.\";","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"sindhurajain"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"sindhurajain"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"sindhurajain"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"sindhurajain"},"content":" model.updateFilteredPersonList(person -\u003e person.getPriority().value.equals(\"high\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"sindhurajain"},"content":" if (model.getFilteredPersonList().isEmpty()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"sindhurajain"},"content":" return new CommandResult(MESSAGE_NO_CONTACTS_FOUND);","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"sindhurajain"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"sindhurajain"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"sindhurajain":31}},{"path":"src/main/java/seedu/address/logic/commands/FilterMedPriorityCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sindhurajain"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"sindhurajain"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"sindhurajain"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"sindhurajain"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"sindhurajain"},"content":" * Finds and lists all persons in address book who are marked as medium priority.","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"sindhurajain"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"sindhurajain"},"content":"public class FilterMedPriorityCommand extends Command {","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"sindhurajain"},"content":" public static final String COMMAND_WORD \u003d \"filter-med\";","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"sindhurajain"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all persons whose \"","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"sindhurajain"},"content":" + \"priorities are medium and displays them as a list.\\n\"","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"sindhurajain"},"content":" + \"Example: \" + COMMAND_WORD;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"sindhurajain"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed contacts with medium priority\";","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"sindhurajain"},"content":" public static final String MESSAGE_NO_CONTACTS_FOUND \u003d \"Oops! No contacts found with medium priority level.\";","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"sindhurajain"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"sindhurajain"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"sindhurajain"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"sindhurajain"},"content":" model.updateFilteredPersonList(person -\u003e person.getPriority().value.equals(\"med\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"sindhurajain"},"content":" if (model.getFilteredPersonList().isEmpty()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"sindhurajain"},"content":" return new CommandResult(MESSAGE_NO_CONTACTS_FOUND);","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"sindhurajain"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"sindhurajain"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"sindhurajain":31}},{"path":"src/main/java/seedu/address/logic/commands/FindCompanyCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yapxuanxuan"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"yapxuanxuan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.model.person.CompanyContainsKeywordsPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"yapxuanxuan"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"yapxuanxuan"},"content":" * Finds and lists all persons in address book whose company tag contains any of the argument keywords.","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"yapxuanxuan"},"content":" * Keyword matching is case insensitive.","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"yapxuanxuan"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"yapxuanxuan"},"content":"public class FindCompanyCommand extends Command {","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"yapxuanxuan"},"content":" public static final String COMMAND_WORD \u003d \"findco\";","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"yapxuanxuan"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all contacts with company tag containing \"","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"yapxuanxuan"},"content":" + \"the specified keywords (case-insensitive) and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"yapxuanxuan"},"content":" + \"Parameters: KEYWORD [MORE_KEYWORDS]...\\n\"","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"yapxuanxuan"},"content":" + \"Example: \" + COMMAND_WORD + \"TikTok\";","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"yapxuanxuan"},"content":" public static final String MESSAGE_FIND_COMPANY_SUCCESS \u003d \"Found %1$d %2$s with matching company tag(s).\";","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"yapxuanxuan"},"content":" private final CompanyContainsKeywordsPredicate predicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"yapxuanxuan"},"content":" public FindCompanyCommand(CompanyContainsKeywordsPredicate predicate) {","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"yapxuanxuan"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"yapxuanxuan"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"yapxuanxuan"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"yapxuanxuan"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"yapxuanxuan"},"content":" model.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"yapxuanxuan"},"content":" int numContacts \u003d model.getFilteredPersonList().size();","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"yapxuanxuan"},"content":" String contactOrContacts \u003d (numContacts \u003d\u003d 1) ? \"contact\" : \"contacts\";","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"yapxuanxuan"},"content":" return new CommandResult(String.format(MESSAGE_FIND_COMPANY_SUCCESS, numContacts, contactOrContacts));","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"yapxuanxuan"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"yapxuanxuan"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"yapxuanxuan"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"yapxuanxuan"},"content":" return true;","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"yapxuanxuan"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"yapxuanxuan"},"content":" if (!(other instanceof FindCompanyCommand)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"yapxuanxuan"},"content":" return false;","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"yapxuanxuan"},"content":" FindCompanyCommand otherFindCompanyCommand \u003d (FindCompanyCommand) other;","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"yapxuanxuan"},"content":" return predicate.equals(otherFindCompanyCommand.predicate);","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"yapxuanxuan"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"yapxuanxuan"},"content":" public String toString() {","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"yapxuanxuan"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"yapxuanxuan"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"yapxuanxuan"},"content":" .toString();","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"yapxuanxuan"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"yapxuanxuan":60}},{"path":"src/main/java/seedu/address/logic/commands/PriorityCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sindhurajain"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"sindhurajain"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"sindhurajain"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"sindhurajain"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"sindhurajain"},"content":"import java.util.List;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"sindhurajain"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"sindhurajain"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"sindhurajain"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"sindhurajain"},"content":"import seedu.address.model.person.Priority;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"sindhurajain"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"sindhurajain"},"content":" * Changes the priority of an existing person in the address book.","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"sindhurajain"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"sindhurajain"},"content":"public class PriorityCommand extends Command {","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"sindhurajain"},"content":" public static final String COMMAND_WORD_MED \u003d \"pr/med\";","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"sindhurajain"},"content":" public static final String COMMAND_WORD_HIGH \u003d \"pr/high\";","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"sindhurajain"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD_MED + \" or \"","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"sindhurajain"},"content":" + COMMAND_WORD_HIGH + \": Sets the priority of the contact identified \"","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"sindhurajain"},"content":" + \"by the contact name to medium or high respectively.\\n\"","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"sindhurajain"},"content":" + \"Parameters: CONTACT_NAME\\n\"","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"sindhurajain"},"content":" + \"Example: \" + COMMAND_WORD_MED + \" John Doe\";","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"sindhurajain"},"content":" public static final String MESSAGE_PERSON_NOT_FOUND \u003d \"Oops, %1$s\u0027s contact does not exist.\";","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"sindhurajain"},"content":" public static final String MESSAGE_EMPTY_NAME \u003d \"Oops, please state the name of the contact.\";","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"sindhurajain"},"content":" public static final String MESSAGE_ADD_PRIORITY_SUCCESS \u003d \"Added this contact with %1$s priority:\\n\"","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"sindhurajain"},"content":" + \"%2$s\\tName: %3$s | Phone: %4$s | Email: %5$s\";","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"sindhurajain"},"content":" public static final String MESSAGE_DELETE_PRIORITY_SUCCESS \u003d \"Removed the priority level from %1$s\u0027s contact\";","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"sindhurajain"},"content":" private final String name;","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"sindhurajain"},"content":" private final Priority priority;","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"sindhurajain"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"sindhurajain"},"content":" * Constructs a PriorityCommand.","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"sindhurajain"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"sindhurajain"},"content":" * @param name Name of the person in the filtered person list to edit the priority.","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"sindhurajain"},"content":" * @param priority Priority of the person to be updated to.","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"sindhurajain"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"sindhurajain"},"content":" public PriorityCommand(String name, Priority priority) {","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"sindhurajain"},"content":" requireAllNonNull(name, priority);","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"sindhurajain"},"content":" this.name \u003d name;","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"sindhurajain"},"content":" this.priority \u003d priority;","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"sindhurajain"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"sindhurajain"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"sindhurajain"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"sindhurajain"},"content":" if (name.isEmpty()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"sindhurajain"},"content":" throw new CommandException(String.format(MESSAGE_EMPTY_NAME, name));","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"sindhurajain"},"content":" List\u003cPerson\u003e contactList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"sindhurajain"},"content":" Person personToEdit \u003d null;","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"sindhurajain"},"content":" for (Person person : contactList) {","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"sindhurajain"},"content":" if (person.getName().fullName.equalsIgnoreCase(name)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"sindhurajain"},"content":" personToEdit \u003d person;","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"sindhurajain"},"content":" break;","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"sindhurajain"},"content":" if (personToEdit \u003d\u003d null) {","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"sindhurajain"},"content":" throw new CommandException(String.format(MESSAGE_PERSON_NOT_FOUND, name));","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"sindhurajain"},"content":" Person editedPerson \u003d new Person(","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"sindhurajain"},"content":" personToEdit.getName(), personToEdit.getPhone(), personToEdit.getEmail(),","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"FangRuoqing"},"content":" personToEdit.getAddress(), personToEdit.getCompany(), priority,","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"FangRuoqing"},"content":" personToEdit.isStarred(), personToEdit.getTags());","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"sindhurajain"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"sindhurajain"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"sindhurajain"},"content":" return new CommandResult(generateSuccessMessage(editedPerson));","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"sindhurajain"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"sindhurajain"},"content":" * Generates a command execution success message based on whether","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"sindhurajain"},"content":" * the priority is added to or removed from {@code personToEdit}.","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"sindhurajain"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"sindhurajain"},"content":" * @param personToEdit Person whose priority is edited.","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"sindhurajain"},"content":" * @return A success message indicating the priority change.","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"sindhurajain"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"sindhurajain"},"content":" private String generateSuccessMessage(Person personToEdit) {","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"sindhurajain"},"content":" if (priority.value.isEmpty()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"sindhurajain"},"content":" return String.format(MESSAGE_DELETE_PRIORITY_SUCCESS, personToEdit.getName());","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"sindhurajain"},"content":" String priorityMessage \u003d priority.value.equals(\"high\") ? \"high\" : \"medium\";","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"sindhurajain"},"content":" String formattingCharacter \u003d priority.value.equals(\"high\") ? \"**\" : \"*\";","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"sindhurajain"},"content":" return String.format(MESSAGE_ADD_PRIORITY_SUCCESS, priorityMessage, formattingCharacter,","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"sindhurajain"},"content":" personToEdit.getName(), personToEdit.getPhone(), personToEdit.getEmail());","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"sindhurajain"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"sindhurajain"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-20"},{"lineNumber":99,"author":{"gitId":"sindhurajain"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"sindhurajain"},"content":" return true;","lastModifiedDate":"2024-03-20"},{"lineNumber":101,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":102,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":103,"author":{"gitId":"sindhurajain"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"sindhurajain"},"content":" if (!(other instanceof PriorityCommand)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"sindhurajain"},"content":" return false;","lastModifiedDate":"2024-03-20"},{"lineNumber":106,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":107,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":108,"author":{"gitId":"sindhurajain"},"content":" PriorityCommand e \u003d (PriorityCommand) other;","lastModifiedDate":"2024-03-20"},{"lineNumber":109,"author":{"gitId":"sindhurajain"},"content":" return name.equals(e.name)","lastModifiedDate":"2024-03-20"},{"lineNumber":110,"author":{"gitId":"sindhurajain"},"content":" \u0026\u0026 priority.equals(e.priority);","lastModifiedDate":"2024-03-20"},{"lineNumber":111,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":112,"author":{"gitId":"sindhurajain"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"FangRuoqing":2,"sindhurajain":110}},{"path":"src/main/java/seedu/address/logic/commands/StarCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"FangRuoqing"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"FangRuoqing"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"FangRuoqing"},"content":"import java.util.List;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"FangRuoqing"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"FangRuoqing"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"FangRuoqing"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"FangRuoqing"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"FangRuoqing"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"FangRuoqing"},"content":" * Command to star a contact in Connectify.","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"FangRuoqing"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"FangRuoqing"},"content":"public class StarCommand extends Command {","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"FangRuoqing"},"content":" public static final String COMMAND_WORD \u003d \"star\";","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"FangRuoqing"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Stars the contact in Connectify.\\n\"","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"FangRuoqing"},"content":" + \"Parameters: \u003ccontact_name\u003e\\n\"","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"FangRuoqing"},"content":" + \"Example: \" + COMMAND_WORD + \" Alex Tan\";","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"FangRuoqing"},"content":" private final String contactName;","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"FangRuoqing"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"FangRuoqing"},"content":" * Constructs a {@code StarCommand} to star the specified contact.","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"FangRuoqing"},"content":" *","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"FangRuoqing"},"content":" * @param contactName The name of the contact to be starred.","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"FangRuoqing"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"FangRuoqing"},"content":" public StarCommand(String contactName) {","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"FangRuoqing"},"content":" this.contactName \u003d contactName;","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"FangRuoqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"FangRuoqing"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"FangRuoqing"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"FangRuoqing"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"FangRuoqing"},"content":" // Find the person by name","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"FangRuoqing"},"content":" List\u003cPerson\u003e personsFound \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"FangRuoqing"},"content":" Person contactToStar \u003d null;","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"FangRuoqing"},"content":" for (Person person : personsFound) {","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"FangRuoqing"},"content":" if (person.getName().fullName.equalsIgnoreCase(contactName)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"FangRuoqing"},"content":" contactToStar \u003d person;","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"FangRuoqing"},"content":" break;","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"FangRuoqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"FangRuoqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"FangRuoqing"},"content":" if (contactToStar \u003d\u003d null) {","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"FangRuoqing"},"content":" throw new CommandException(\"Error! Contact not found: \" + contactName);","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"FangRuoqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"FangRuoqing"},"content":" // Star the contact","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"FangRuoqing"},"content":" contactToStar.starContact();","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"FangRuoqing"},"content":" Person starredContact \u003d new Person(contactToStar.getName(), contactToStar.getPhone(), contactToStar.getEmail(),","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"FangRuoqing"},"content":" contactToStar.getAddress(), contactToStar.getCompany(),","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"FangRuoqing"},"content":" contactToStar.getPriority(), contactToStar.isStarred(), contactToStar.getTags());","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"FangRuoqing"},"content":" model.setPerson(contactToStar, starredContact);","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"FangRuoqing"},"content":" model.updateFilteredPersonList(Model.PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"FangRuoqing"},"content":" return new CommandResult(\"Nice! I have starred this contact:\\n\" + contactToStar.getName() + \" ★\");","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"FangRuoqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"FangRuoqing"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"FangRuoqing"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"FangRuoqing"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"FangRuoqing"},"content":" return true;","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"FangRuoqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"FangRuoqing"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"FangRuoqing"},"content":" if (!(other instanceof StarCommand)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"FangRuoqing"},"content":" return false;","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"FangRuoqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"FangRuoqing"},"content":" StarCommand e \u003d (StarCommand) other;","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"FangRuoqing"},"content":" return contactName.equals(e.contactName);","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"FangRuoqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"FangRuoqing"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"FangRuoqing"},"content":" public String toString() {","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"FangRuoqing"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"FangRuoqing"},"content":" .add(\"contactName\", this.contactName)","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"FangRuoqing"},"content":" .toString();","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"FangRuoqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"FangRuoqing"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"FangRuoqing":82}},{"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":"-"},"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":"-"},"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":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.model.person.Company;","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"sindhurajain"},"content":"import seedu.address.model.person.Priority;","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05"},{"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-02-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":35,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG);","lastModifiedDate":"2017-06-06"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":38,"author":{"gitId":"tahnya"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_PHONE) // only check for required Name and Phone","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":43,"author":{"gitId":"-"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-07-14"},{"lineNumber":44,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":46,"author":{"gitId":"tahnya"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).orElse(\"\"));","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"tahnya"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).orElse(\"\"));","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"yapxuanxuan"},"content":" Company company \u003d new Company(\"\");","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"sindhurajain"},"content":" Priority priority \u003d new Priority(\"\");","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":52,"author":{"gitId":"FangRuoqing"},"content":" Person person \u003d new Person(name, phone, email, address, company, priority, false, tagList);","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17"},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":61,"author":{"gitId":"FangRuoqing"},"content":" static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"tahnya":3,"yapxuanxuan":2,"FangRuoqing":2,"sindhurajain":2,"-":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":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.logic.commands.CompanyCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.logic.commands.CountCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.logic.commands.FilterHighPriorityCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.logic.commands.FilterMedPriorityCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.logic.commands.FindCompanyCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.logic.commands.PriorityCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"FangRuoqing"},"content":"import seedu.address.logic.commands.StarCommand;","lastModifiedDate":"2024-03-21"},{"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":"sindhurajain"},"content":" case FilterHighPriorityCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"sindhurajain"},"content":" return new FilterHighPriorityCommand();","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"sindhurajain"},"content":" case FilterMedPriorityCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"sindhurajain"},"content":" return new FilterMedPriorityCommand();","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"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":"yapxuanxuan"},"content":" case FindCompanyCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"yapxuanxuan"},"content":" return new FindCompanyCommandParser().parse(arguments);","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"yapxuanxuan"},"content":" case CompanyCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-13"},{"lineNumber":88,"author":{"gitId":"yapxuanxuan"},"content":" return new CompanyCommandParser().parse(arguments);","lastModifiedDate":"2024-03-13"},{"lineNumber":89,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":90,"author":{"gitId":"sindhurajain"},"content":" case PriorityCommand.COMMAND_WORD_HIGH:","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"sindhurajain"},"content":" return new PriorityCommandParser(\"high\").parse(arguments);","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"sindhurajain"},"content":" case PriorityCommand.COMMAND_WORD_MED:","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"sindhurajain"},"content":" return new PriorityCommandParser(\"med\").parse(arguments);","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":97,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":99,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26"},{"lineNumber":103,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":105,"author":{"gitId":"yapxuanxuan"},"content":" case CountCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-19"},{"lineNumber":106,"author":{"gitId":"yapxuanxuan"},"content":" return new CountCommand();","lastModifiedDate":"2024-03-19"},{"lineNumber":107,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":108,"author":{"gitId":"FangRuoqing"},"content":" case StarCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-20"},{"lineNumber":109,"author":{"gitId":"FangRuoqing"},"content":" return new StarCommandParser().parse(arguments);","lastModifiedDate":"2024-03-20"},{"lineNumber":110,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":111,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26"},{"lineNumber":112,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29"},{"lineNumber":113,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11"},{"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"},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"yapxuanxuan":15,"FangRuoqing":4,"sindhurajain":12,"-":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":"yapxuanxuan"},"content":" public static final Prefix PREFIX_COMPANY \u003d new Prefix(\"c/\");","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"yapxuanxuan":1,"-":15}},{"path":"src/main/java/seedu/address/logic/parser/CompanyCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yapxuanxuan"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"yapxuanxuan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"yapxuanxuan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COMPANY;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.logic.commands.CompanyCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.model.person.Company;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"yapxuanxuan"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"yapxuanxuan"},"content":" * Parses input arguments and creates a new {@code CompanyCommand} object","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"yapxuanxuan"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"yapxuanxuan"},"content":"public class CompanyCommandParser implements Parser\u003cCompanyCommand\u003e {","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"yapxuanxuan"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"yapxuanxuan"},"content":" * Parses the given {@code String} of arguments in the context of the CompanyCommand","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"yapxuanxuan"},"content":" * and returns a CompanyCommand object for execution.","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"yapxuanxuan"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"yapxuanxuan"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"yapxuanxuan"},"content":" public CompanyCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"yapxuanxuan"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"yapxuanxuan"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_COMPANY);","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"yapxuanxuan"},"content":" String contactName;","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"yapxuanxuan"},"content":" contactName \u003d argMultimap.getPreamble();","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"yapxuanxuan"},"content":" String company \u003d argMultimap.getValue(PREFIX_COMPANY).orElse(\"\");","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"yapxuanxuan"},"content":" return new CompanyCommand(contactName, new Company(company));","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"yapxuanxuan"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"yapxuanxuan":32}},{"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":"sindhurajain"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new DeleteCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class DeleteCommandParser implements Parser\u003cDeleteCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * and returns a DeleteCommand object for execution.","lastModifiedDate":"2019-05-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"sindhurajain"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public DeleteCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":19,"author":{"gitId":"sindhurajain"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"sindhurajain"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"sindhurajain"},"content":" throw new ParseException(String.format(","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"sindhurajain"},"content":" Messages.MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":24,"author":{"gitId":"sindhurajain"},"content":" return new DeleteCommand(trimmedArgs);","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"sindhurajain":7,"-":19}},{"path":"src/main/java/seedu/address/logic/parser/FindCompanyCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yapxuanxuan"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"yapxuanxuan"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"yapxuanxuan"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.logic.commands.FindCompanyCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.model.person.CompanyContainsKeywordsPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"yapxuanxuan"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"yapxuanxuan"},"content":" * Parses input arguments and creates a new FindCompanyCommand object","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"yapxuanxuan"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"yapxuanxuan"},"content":"public class FindCompanyCommandParser implements Parser\u003cFindCompanyCommand\u003e {","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"yapxuanxuan"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"yapxuanxuan"},"content":" * Parses the given {@code String} of arguments in the context of the FindCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"yapxuanxuan"},"content":" * and returns a FindCommand object for execution.","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"yapxuanxuan"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"yapxuanxuan"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"yapxuanxuan"},"content":" public FindCompanyCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"yapxuanxuan"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"yapxuanxuan"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"yapxuanxuan"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"yapxuanxuan"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCompanyCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"yapxuanxuan"},"content":" String[] nameKeywords \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"yapxuanxuan"},"content":" return new FindCompanyCommand(new CompanyContainsKeywordsPredicate(Arrays.asList(nameKeywords)));","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"yapxuanxuan"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"yapxuanxuan":33}},{"path":"src/main/java/seedu/address/logic/parser/PriorityCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sindhurajain"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"sindhurajain"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"sindhurajain"},"content":"import seedu.address.logic.commands.PriorityCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"sindhurajain"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"sindhurajain"},"content":"import seedu.address.model.person.Priority;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"sindhurajain"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"sindhurajain"},"content":" * Parses input arguments and creates a new {@code PriorityCommand} object","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"sindhurajain"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"sindhurajain"},"content":"public class PriorityCommandParser implements Parser\u003cPriorityCommand\u003e {","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"sindhurajain"},"content":" private final String priority;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"sindhurajain"},"content":" public PriorityCommandParser(String priority) {","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"sindhurajain"},"content":" this.priority \u003d priority;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"sindhurajain"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"sindhurajain"},"content":" * Parses the given {@code String} of arguments in the context of the PriorityCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"sindhurajain"},"content":" * and returns a PriorityCommand object for execution.","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"sindhurajain"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"sindhurajain"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"sindhurajain"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"sindhurajain"},"content":" public PriorityCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"sindhurajain"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"sindhurajain"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"sindhurajain"},"content":" throw new ParseException(String.format(","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"sindhurajain"},"content":" Messages.MESSAGE_INVALID_COMMAND_FORMAT, PriorityCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"sindhurajain"},"content":" return new PriorityCommand(trimmedArgs, new Priority(priority));","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"sindhurajain"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"sindhurajain":32}},{"path":"src/main/java/seedu/address/logic/parser/StarCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"FangRuoqing"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"FangRuoqing"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"FangRuoqing"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"FangRuoqing"},"content":"import seedu.address.logic.commands.StarCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"FangRuoqing"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"FangRuoqing"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"FangRuoqing"},"content":" * Parses input arguments and creates a new StarCommand object.","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"FangRuoqing"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"FangRuoqing"},"content":"public class StarCommandParser implements Parser\u003cStarCommand\u003e {","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"FangRuoqing"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"FangRuoqing"},"content":" * Parses the given {@code userInput} and returns a {@code StarCommand} object.","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"FangRuoqing"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"FangRuoqing"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"FangRuoqing"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"FangRuoqing"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"FangRuoqing"},"content":" public StarCommand parse(String userInput) throws ParseException {","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"FangRuoqing"},"content":" requireNonNull(userInput);","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"FangRuoqing"},"content":" String trimmedArgs \u003d userInput.trim();","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"FangRuoqing"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"FangRuoqing"},"content":" throw new ParseException(String.format(","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"FangRuoqing"},"content":" Messages.MESSAGE_INVALID_COMMAND_FORMAT, StarCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"FangRuoqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"FangRuoqing"},"content":" return new StarCommand(trimmedArgs);","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"FangRuoqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"FangRuoqing"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"FangRuoqing":30}},{"path":"src/main/java/seedu/address/model/person/Address.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":"-"},"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":"tahnya"},"content":" return test \u003d\u003d \"\" || test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-13"},{"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":{"tahnya":1,"-":64}},{"path":"src/main/java/seedu/address/model/person/Company.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yapxuanxuan"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"yapxuanxuan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"yapxuanxuan"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"yapxuanxuan"},"content":" * Represents a Person\u0027s company name in the address book.","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"sindhurajain"},"content":" * Guarantees: immutable; is always valid.","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"yapxuanxuan"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"yapxuanxuan"},"content":"public class Company {","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"yapxuanxuan"},"content":" public final String value;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"yapxuanxuan"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"yapxuanxuan"},"content":" * Constructs a {@code Company}.","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"yapxuanxuan"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"yapxuanxuan"},"content":" * @param companyName A valid name.","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"yapxuanxuan"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"yapxuanxuan"},"content":" public Company(String companyName) {","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"yapxuanxuan"},"content":" requireNonNull(companyName);","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"yapxuanxuan"},"content":" value \u003d companyName;","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"yapxuanxuan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"yapxuanxuan"},"content":" public String toString() {","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"yapxuanxuan"},"content":" return value;","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"yapxuanxuan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"yapxuanxuan"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"yapxuanxuan"},"content":" return other \u003d\u003d this // short circuit if same object","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"yapxuanxuan"},"content":" || (other instanceof Company // instanceof handles nulls","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"yapxuanxuan"},"content":" \u0026\u0026 value.equals(((Company) other).value)); // state check","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"yapxuanxuan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"yapxuanxuan"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"yapxuanxuan"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"yapxuanxuan"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"yapxuanxuan":37,"sindhurajain":1}},{"path":"src/main/java/seedu/address/model/person/CompanyContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yapxuanxuan"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"yapxuanxuan"},"content":"import java.util.List;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"yapxuanxuan"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"yapxuanxuan"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"yapxuanxuan"},"content":" * Tests that a {@code Person}\u0027s {@code Company} matches any of the keywords given.","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"yapxuanxuan"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"yapxuanxuan"},"content":"public class CompanyContainsKeywordsPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"yapxuanxuan"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"yapxuanxuan"},"content":" public CompanyContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"yapxuanxuan"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"yapxuanxuan"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"yapxuanxuan"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"yapxuanxuan"},"content":" return keywords.stream()","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"yapxuanxuan"},"content":" .anyMatch(keyword -\u003e StringUtil.containsFullWordIgnoreCase(person.getCompany().value, keyword));","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"yapxuanxuan"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"yapxuanxuan"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"yapxuanxuan"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"yapxuanxuan"},"content":" return true;","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"yapxuanxuan"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"yapxuanxuan"},"content":" if (!(other instanceof CompanyContainsKeywordsPredicate)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"yapxuanxuan"},"content":" return false;","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"yapxuanxuan"},"content":" CompanyContainsKeywordsPredicate otherCompanyContainsKeywordsPredicate \u003d (CompanyContainsKeywordsPredicate)","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"yapxuanxuan"},"content":" other;","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"yapxuanxuan"},"content":" return keywords.equals(otherCompanyContainsKeywordsPredicate.keywords);","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"yapxuanxuan"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"yapxuanxuan"},"content":" public String toString() {","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"yapxuanxuan"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"yapxuanxuan"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"yapxuanxuan":45}},{"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":"-"},"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":"tahnya"},"content":" return test \u003d\u003d \"\" || test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-13"},{"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":{"tahnya":1,"-":78}},{"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":"-"},"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 Address address;","lastModifiedDate":"2018-04-19"},{"lineNumber":26,"author":{"gitId":"yapxuanxuan"},"content":" private final Company company;","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"sindhurajain"},"content":" private final Priority priority;","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"FangRuoqing"},"content":" private boolean starred;","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"sindhurajain"},"content":" * Name, phone, email, address, tags must be present and not null.","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"FangRuoqing"},"content":" public Person(Name name, Phone phone, Email email, Address address,","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"FangRuoqing"},"content":" Company company, Priority priority, Boolean starred, Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" requireAllNonNull(name, phone, email, address, tags);","lastModifiedDate":"2017-05-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20"},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20"},{"lineNumber":41,"author":{"gitId":"yapxuanxuan"},"content":" this.company \u003d company;","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"sindhurajain"},"content":" this.priority \u003d priority;","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"FangRuoqing"},"content":" this.starred \u003d starred;","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return email;","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":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":63,"author":{"gitId":"yapxuanxuan"},"content":" public Company getCompany() {","lastModifiedDate":"2024-03-13"},{"lineNumber":64,"author":{"gitId":"yapxuanxuan"},"content":" return company;","lastModifiedDate":"2024-03-13"},{"lineNumber":65,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":66,"author":{"gitId":"sindhurajain"},"content":" public Priority getPriority() {","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"sindhurajain"},"content":" return priority;","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":70,"author":{"gitId":"FangRuoqing"},"content":" public void starContact() {","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"FangRuoqing"},"content":" this.starred \u003d true;","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"FangRuoqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"FangRuoqing"},"content":" public boolean isStarred() {","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"FangRuoqing"},"content":" return starred;","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"FangRuoqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19"},{"lineNumber":91,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2020-12-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":105,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":106,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":109,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10"},{"lineNumber":111,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":114,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10"},{"lineNumber":115,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":" \u0026\u0026 tags.equals(otherPerson.tags);","lastModifiedDate":"2023-07-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":124,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":125,"author":{"gitId":"-"},"content":" return Objects.hash(name, phone, email, address, tags);","lastModifiedDate":"2016-08-24"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":130,"author":{"gitId":"FangRuoqing"},"content":" String starSymbol \u003d starred ? \" ★\" : \"\";","lastModifiedDate":"2024-03-20"},{"lineNumber":131,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":132,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":133,"author":{"gitId":"FangRuoqing"},"content":" .add(\"name\", name + starSymbol)","lastModifiedDate":"2024-03-20"},{"lineNumber":134,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":137,"author":{"gitId":"yapxuanxuan"},"content":" .add(\"company\", company)","lastModifiedDate":"2024-03-13"},{"lineNumber":138,"author":{"gitId":"sindhurajain"},"content":" .add(\"priority\", priority)","lastModifiedDate":"2024-03-20"},{"lineNumber":139,"author":{"gitId":"FangRuoqing"},"content":" .add(\"starred\", starred)","lastModifiedDate":"2024-03-21"},{"lineNumber":140,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":143,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"yapxuanxuan":7,"FangRuoqing":16,"sindhurajain":7,"-":113}},{"path":"src/main/java/seedu/address/model/person/Priority.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sindhurajain"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"sindhurajain"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"sindhurajain"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"sindhurajain"},"content":" * Represents a Person\u0027s priority level in the address book.","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"sindhurajain"},"content":" * Guarantees: immutable; is always valid.","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"sindhurajain"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"sindhurajain"},"content":"public class Priority {","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"sindhurajain"},"content":" public final String value;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"sindhurajain"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"sindhurajain"},"content":" * Constructs a {@code Priority}.","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"sindhurajain"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"sindhurajain"},"content":" * @param priorityLevel A valid priority level, which can be \"high\", \"med\", or empty.","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"sindhurajain"},"content":" * @throws IllegalArgumentException if the priority level is not \"high\", \"med\", or empty.","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"sindhurajain"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"sindhurajain"},"content":" public Priority(String priorityLevel) {","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"sindhurajain"},"content":" requireNonNull(priorityLevel);","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"sindhurajain"},"content":" if (!priorityLevel.equals(\"high\") \u0026\u0026 !priorityLevel.equals(\"med\") \u0026\u0026 !priorityLevel.isEmpty()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"sindhurajain"},"content":" throw new IllegalArgumentException(\"Priority level must be \u0027high\u0027, \u0027med\u0027, or empty\");","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"sindhurajain"},"content":" value \u003d priorityLevel;","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"sindhurajain"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"sindhurajain"},"content":" public String toString() {","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"sindhurajain"},"content":" return value;","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"sindhurajain"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"sindhurajain"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"sindhurajain"},"content":" return other \u003d\u003d this // short circuit if same object","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"sindhurajain"},"content":" || (other instanceof Priority // instanceof handles nulls","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"sindhurajain"},"content":" \u0026\u0026 value.equals(((Priority) other).value)); // state check","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"sindhurajain"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"sindhurajain"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"sindhurajain"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"sindhurajain"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"sindhurajain":42}},{"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":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.model.person.Company;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"sindhurajain"},"content":"import seedu.address.model.person.Priority;","lastModifiedDate":"2024-03-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":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"yapxuanxuan"},"content":" public static final Company EMPTY_COMPANY \u003d new Company(\"\");","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"sindhurajain"},"content":" public static final Priority EMPTY_PRIORITY \u003d new Priority(\"\");","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" new Person(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":29,"author":{"gitId":"FangRuoqing"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"), EMPTY_COMPANY, EMPTY_PRIORITY, false,","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" getTagSet(\"friends\")),","lastModifiedDate":"2017-03-14"},{"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":"FangRuoqing"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"), EMPTY_COMPANY, EMPTY_PRIORITY, false,","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" getTagSet(\"colleagues\", \"friends\")),","lastModifiedDate":"2017-03-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":35,"author":{"gitId":"FangRuoqing"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"), EMPTY_COMPANY, EMPTY_PRIORITY, false,","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" getTagSet(\"neighbours\")),","lastModifiedDate":"2017-03-14"},{"lineNumber":37,"author":{"gitId":"-"},"content":" new Person(new Name(\"David Li\"), new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":38,"author":{"gitId":"FangRuoqing"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"), EMPTY_COMPANY, EMPTY_PRIORITY, false,","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" getTagSet(\"family\")),","lastModifiedDate":"2017-03-14"},{"lineNumber":40,"author":{"gitId":"-"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":41,"author":{"gitId":"FangRuoqing"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"), EMPTY_COMPANY, EMPTY_PRIORITY, false,","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" getTagSet(\"classmates\")),","lastModifiedDate":"2017-03-14"},{"lineNumber":43,"author":{"gitId":"-"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":44,"author":{"gitId":"FangRuoqing"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"), EMPTY_COMPANY, EMPTY_PRIORITY, false,","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" getTagSet(\"colleagues\"))","lastModifiedDate":"2017-03-14"},{"lineNumber":46,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20"},{"lineNumber":52,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14"},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"yapxuanxuan":4,"FangRuoqing":6,"sindhurajain":2,"-":53}},{"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":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.model.person.Company;","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"sindhurajain"},"content":"import seedu.address.model.person.Priority;","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13"},{"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":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"yapxuanxuan"},"content":" private final String company;","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"sindhurajain"},"content":" private final String priority;","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"FangRuoqing"},"content":" private Boolean starred;","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09"},{"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":"-"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"sindhurajain"},"content":" @JsonProperty(\"company\") String company, @JsonProperty(\"priority\") String priority,","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"FangRuoqing"},"content":" @JsonProperty(\"starred\") Boolean starred, @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags) {","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"yapxuanxuan"},"content":" this.company \u003d company;","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"sindhurajain"},"content":" this.priority \u003d priority;","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"FangRuoqing"},"content":" this.starred \u003d starred;","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"yapxuanxuan"},"content":" company \u003d source.getCompany().value;","lastModifiedDate":"2024-03-13"},{"lineNumber":67,"author":{"gitId":"sindhurajain"},"content":" priority \u003d source.getPriority().value;","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"FangRuoqing"},"content":" starred \u003d source.isStarred();","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09"},{"lineNumber":70,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09"},{"lineNumber":82,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":117,"author":{"gitId":"yapxuanxuan"},"content":" if (company \u003d\u003d null) {","lastModifiedDate":"2024-03-13"},{"lineNumber":118,"author":{"gitId":"yapxuanxuan"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Company.class.getSimpleName()));","lastModifiedDate":"2024-03-13"},{"lineNumber":119,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":120,"author":{"gitId":"yapxuanxuan"},"content":" final Company modelCompany \u003d new Company(company);","lastModifiedDate":"2024-03-13"},{"lineNumber":121,"author":{"gitId":"sindhurajain"},"content":" if (priority \u003d\u003d null) {","lastModifiedDate":"2024-03-20"},{"lineNumber":122,"author":{"gitId":"sindhurajain"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-20"},{"lineNumber":123,"author":{"gitId":"sindhurajain"},"content":" Priority.class.getSimpleName()));","lastModifiedDate":"2024-03-20"},{"lineNumber":124,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":125,"author":{"gitId":"sindhurajain"},"content":" final Priority modelPriority \u003d new Priority(priority);","lastModifiedDate":"2024-03-20"},{"lineNumber":126,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13"},{"lineNumber":128,"author":{"gitId":"FangRuoqing"},"content":" return new Person(modelName, modelPhone, modelEmail, modelAddress,","lastModifiedDate":"2024-03-21"},{"lineNumber":129,"author":{"gitId":"FangRuoqing"},"content":" modelCompany, modelPriority, starred, modelTags);","lastModifiedDate":"2024-03-21"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"yapxuanxuan":9,"FangRuoqing":6,"sindhurajain":10,"-":106}},{"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":"sindhurajain"},"content":"import javafx.scene.paint.Color;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"sindhurajain"},"content":"import javafx.scene.shape.Circle;","lastModifiedDate":"2024-03-20"},{"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":"-"},"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 address;","lastModifiedDate":"2016-09-21"},{"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":"yapxuanxuan"},"content":" @FXML","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"yapxuanxuan"},"content":" private Label company;","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"sindhurajain"},"content":" @FXML","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"sindhurajain"},"content":" private Circle priorityDot;","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21"},{"lineNumber":57,"author":{"gitId":"FangRuoqing"},"content":" if (person.isStarred()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"FangRuoqing"},"content":" name.setText(person.getName().fullName + \" ★\");","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"FangRuoqing"},"content":" } else {","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20"},{"lineNumber":61,"author":{"gitId":"FangRuoqing"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":64,"author":{"gitId":"-"},"content":" address.setText(person.getAddress().value);","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"yapxuanxuan"},"content":" setCompany();","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"sindhurajain"},"content":" String priorityValue \u003d person.getPriority().value;","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"sindhurajain"},"content":" if (\"high\".equals(priorityValue)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"sindhurajain"},"content":" priorityDot.setFill(Color.RED);","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"sindhurajain"},"content":" } else if (\"med\".equals(priorityValue)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"sindhurajain"},"content":" priorityDot.setFill(Color.ORANGE);","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"sindhurajain"},"content":" } else {","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"sindhurajain"},"content":" priorityDot.setVisible(false);","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"-"},"content":" person.getTags().stream()","lastModifiedDate":"2019-01-02"},{"lineNumber":77,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02"},{"lineNumber":78,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":80,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"yapxuanxuan"},"content":" private void setCompany() {","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"yapxuanxuan"},"content":" if (!person.getCompany().value.equals(\"\")) {","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"yapxuanxuan"},"content":" company.setText(person.getCompany().value);","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"yapxuanxuan"},"content":" company.setVisible(true);","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"yapxuanxuan"},"content":" } else {","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"yapxuanxuan"},"content":" company.setPrefHeight(0.0);","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":90,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"yapxuanxuan":13,"FangRuoqing":5,"sindhurajain":13,"-":59}},{"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":"tahnya"},"content":" -fx-background-color: #b9ecc4;","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"tahnya"},"content":" background-color: #69866F;","lastModifiedDate":"2024-03-21"},{"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":"tahnya"},"content":" -fx-base: #b9ecc4;","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"tahnya"},"content":" -fx-control-inner-background: #b9ecc4;","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"tahnya"},"content":" -fx-background-color: #b9ecc4;","lastModifiedDate":"2024-03-21"},{"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":"tahnya"},"content":" -fx-background-color: #b9ecc4;","lastModifiedDate":"2024-03-21"},{"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":"tahnya"},"content":" -fx-background-color: #b9ecc4;","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"tahnya"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":".list-view {","lastModifiedDate":"2017-03-02"},{"lineNumber":92,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":93,"author":{"gitId":"-"},"content":" -fx-padding: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":94,"author":{"gitId":"tahnya"},"content":" -fx-background-color: #b9ecc4;","lastModifiedDate":"2024-03-21"},{"lineNumber":95,"author":{"gitId":"tahnya"},"content":"","lastModifiedDate":"2024-03-21"},{"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":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":".list-cell:filled:even {","lastModifiedDate":"2017-03-02"},{"lineNumber":105,"author":{"gitId":"tahnya"},"content":" -fx-background-color: #C3F2CD;","lastModifiedDate":"2024-03-21"},{"lineNumber":106,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":108,"author":{"gitId":"-"},"content":".list-cell:filled:odd {","lastModifiedDate":"2017-03-02"},{"lineNumber":109,"author":{"gitId":"tahnya"},"content":" -fx-background-color: #CCF8D6;","lastModifiedDate":"2024-03-21"},{"lineNumber":110,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":112,"author":{"gitId":"-"},"content":".list-cell:filled:selected {","lastModifiedDate":"2017-03-02"},{"lineNumber":113,"author":{"gitId":"tahnya"},"content":" /**-fx-background-color: #424d5f;**/","lastModifiedDate":"2024-03-21"},{"lineNumber":114,"author":{"gitId":"tahnya"},"content":"","lastModifiedDate":"2024-03-21"},{"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":"tahnya"},"content":" -fx-border-color: #69866F;","lastModifiedDate":"2024-03-21"},{"lineNumber":119,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":120,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":122,"author":{"gitId":"-"},"content":".list-cell .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":123,"author":{"gitId":"tahnya"},"content":" -fx-text-fill: #69866F;","lastModifiedDate":"2024-03-21"},{"lineNumber":124,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":".cell_big_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":128,"author":{"gitId":"-"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2016-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","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":".cell_small_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2022-01-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2017-03-02"},{"lineNumber":135,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","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":".stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":139,"author":{"gitId":"tahnya"},"content":" -fx-background-color: #b9ecc4;","lastModifiedDate":"2024-03-21"},{"lineNumber":140,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":142,"author":{"gitId":"-"},"content":".pane-with-border {","lastModifiedDate":"2017-05-15"},{"lineNumber":143,"author":{"gitId":"tahnya"},"content":" -fx-background-color: #b9ecc4;","lastModifiedDate":"2024-03-21"},{"lineNumber":144,"author":{"gitId":"tahnya"},"content":" -fx-border-color: #C0C2C0;","lastModifiedDate":"2024-03-21"},{"lineNumber":145,"author":{"gitId":"-"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2017-05-09"},{"lineNumber":146,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":148,"author":{"gitId":"-"},"content":".status-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":149,"author":{"gitId":"tahnya"},"content":" -fx-background-color: #69866F;","lastModifiedDate":"2024-03-21"},{"lineNumber":150,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":152,"author":{"gitId":"-"},"content":".result-display {","lastModifiedDate":"2016-09-14"},{"lineNumber":153,"author":{"gitId":"tahnya"},"content":" -fx-background-color: #b9ecc4;","lastModifiedDate":"2024-03-21"},{"lineNumber":154,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":155,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":156,"author":{"gitId":"tahnya"},"content":" -fx-text-fill: #69866F;","lastModifiedDate":"2024-03-21"},{"lineNumber":157,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":159,"author":{"gitId":"-"},"content":".result-display .label {","lastModifiedDate":"2016-09-14"},{"lineNumber":160,"author":{"gitId":"-"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2016-09-14"},{"lineNumber":161,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":".status-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":165,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":" -fx-padding: 4px;","lastModifiedDate":"2018-12-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2018-12-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":".status-bar-with-border {","lastModifiedDate":"2016-08-08"},{"lineNumber":171,"author":{"gitId":"tahnya"},"content":" -fx-background-color: #69866F;","lastModifiedDate":"2024-03-21"},{"lineNumber":172,"author":{"gitId":"tahnya"},"content":" /**-fx-border-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2024-03-21"},{"lineNumber":173,"author":{"gitId":"tahnya"},"content":" -fx-border-width: 1px;**/","lastModifiedDate":"2024-03-21"},{"lineNumber":174,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":".status-bar-with-border .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":180,"author":{"gitId":"-"},"content":".grid-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":181,"author":{"gitId":"tahnya"},"content":" -fx-background-color: #b9ecc4;","lastModifiedDate":"2024-03-21"},{"lineNumber":182,"author":{"gitId":"tahnya"},"content":" -fx-border-color: #b9ecc4;","lastModifiedDate":"2024-03-21"},{"lineNumber":183,"author":{"gitId":"tahnya"},"content":"","lastModifiedDate":"2024-03-21"},{"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":".grid-pane .stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":188,"author":{"gitId":"tahnya"},"content":" -fx-background-color: #b9ecc4;","lastModifiedDate":"2024-03-21"},{"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 {","lastModifiedDate":"2016-08-08"},{"lineNumber":192,"author":{"gitId":"tahnya"},"content":" -fx-background-color: #D9D9D9;","lastModifiedDate":"2024-03-21"},{"lineNumber":193,"author":{"gitId":"tahnya"},"content":" /**-fx-background-color: derive(#1d1d1d, 50%);**/","lastModifiedDate":"2024-03-21"},{"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":"tahnya"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-21"},{"lineNumber":198,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":200,"author":{"gitId":"-"},"content":".menu-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":201,"author":{"gitId":"tahnya"},"content":" -fx-background-color: #D9D9D9;","lastModifiedDate":"2024-03-21"},{"lineNumber":202,"author":{"gitId":"tahnya"},"content":" /**-fx-background-color: derive(#1d1d1d, 20%);**/","lastModifiedDate":"2024-03-21"},{"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":"tahnya"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-21"},{"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":"tahnya"},"content":" -fx-background-color: #b9ecc4;","lastModifiedDate":"2024-03-21"},{"lineNumber":227,"author":{"gitId":"tahnya"},"content":" /**-fx-background-color: #1d1d1d;**/","lastModifiedDate":"2024-03-21"},{"lineNumber":228,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2022-01-13"},{"lineNumber":229,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":230,"author":{"gitId":"-"},"content":" -fx-text-fill: #d8d8d8;","lastModifiedDate":"2016-08-08"},{"lineNumber":231,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":232,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":234,"author":{"gitId":"-"},"content":".button:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":235,"author":{"gitId":"-"},"content":" -fx-background-color: #3a3a3a;","lastModifiedDate":"2016-08-08"},{"lineNumber":236,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":238,"author":{"gitId":"-"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2016-08-08"},{"lineNumber":239,"author":{"gitId":"-"},"content":" -fx-background-color: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":240,"author":{"gitId":"tahnya"},"content":" -fx-text-fill: #69866F;","lastModifiedDate":"2024-03-21"},{"lineNumber":241,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":243,"author":{"gitId":"-"},"content":".button:focused {","lastModifiedDate":"2016-08-08"},{"lineNumber":244,"author":{"gitId":"-"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2016-08-08"},{"lineNumber":245,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":246,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08"},{"lineNumber":247,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":248,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":249,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":251,"author":{"gitId":"-"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08"},{"lineNumber":252,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08"},{"lineNumber":253,"author":{"gitId":"tahnya"},"content":" -fx-background-color: #b9ecc4;","lastModifiedDate":"2024-03-21"},{"lineNumber":254,"author":{"gitId":"tahnya"},"content":" /**-fx-background-color: #1d1d1d;**/","lastModifiedDate":"2024-03-21"},{"lineNumber":255,"author":{"gitId":"tahnya"},"content":" -fx-text-fill: #69866F;","lastModifiedDate":"2024-03-21"},{"lineNumber":256,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":258,"author":{"gitId":"-"},"content":".button:default {","lastModifiedDate":"2016-08-08"},{"lineNumber":259,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":260,"author":{"gitId":"tahnya"},"content":" -fx-text-fill: #69866F;","lastModifiedDate":"2024-03-21"},{"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:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":264,"author":{"gitId":"-"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2016-08-08"},{"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 {","lastModifiedDate":"2016-08-08"},{"lineNumber":268,"author":{"gitId":"tahnya"},"content":" -fx-background-color: #b9ecc4;","lastModifiedDate":"2024-03-21"},{"lineNumber":269,"author":{"gitId":"tahnya"},"content":" /**-fx-background-color: #1d1d1d;**/","lastModifiedDate":"2024-03-21"},{"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 \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2016-08-08"},{"lineNumber":273,"author":{"gitId":"tahnya"},"content":" -fx-background-color: #b9ecc4;","lastModifiedDate":"2024-03-21"},{"lineNumber":274,"author":{"gitId":"tahnya"},"content":" /**-fx-background-color: #1d1d1d;**/","lastModifiedDate":"2024-03-21"},{"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 *.label.content {","lastModifiedDate":"2016-08-08"},{"lineNumber":278,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08"},{"lineNumber":279,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2016-08-08"},{"lineNumber":280,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"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 {","lastModifiedDate":"2016-08-08"},{"lineNumber":284,"author":{"gitId":"tahnya"},"content":" -fx-background-color: #b9ecc4;","lastModifiedDate":"2024-03-21"},{"lineNumber":285,"author":{"gitId":"tahnya"},"content":" /**-fx-background-color: derive(#1d1d1d, 25%);**/","lastModifiedDate":"2024-03-21"},{"lineNumber":286,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":288,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2016-08-08"},{"lineNumber":289,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08"},{"lineNumber":290,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08"},{"lineNumber":291,"author":{"gitId":"-"},"content":" -fx-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":292,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":293,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":294,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":295,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02"},{"lineNumber":296,"author":{"gitId":"tahnya"},"content":" -fx-background-color: #b9ecc4;","lastModifiedDate":"2024-03-21"},{"lineNumber":297,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":298,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":299,"author":{"gitId":"-"},"content":".scroll-bar .thumb {","lastModifiedDate":"2016-08-15"},{"lineNumber":300,"author":{"gitId":"tahnya"},"content":" -fx-background-color: #69866F;","lastModifiedDate":"2024-03-21"},{"lineNumber":301,"author":{"gitId":"-"},"content":" -fx-background-insets: 3;","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-button, .scroll-bar .decrement-button {","lastModifiedDate":"2016-08-15"},{"lineNumber":305,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-15"},{"lineNumber":306,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-15"},{"lineNumber":307,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":308,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":309,"author":{"gitId":"-"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2016-08-15"},{"lineNumber":310,"author":{"gitId":"-"},"content":" -fx-shape: \" \";","lastModifiedDate":"2016-08-15"},{"lineNumber":311,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":312,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":313,"author":{"gitId":"-"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":314,"author":{"gitId":"-"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2016-08-15"},{"lineNumber":315,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":316,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":317,"author":{"gitId":"-"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":318,"author":{"gitId":"-"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2016-08-18"},{"lineNumber":319,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":320,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":321,"author":{"gitId":"-"},"content":"#cardPane {","lastModifiedDate":"2016-08-08"},{"lineNumber":322,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":323,"author":{"gitId":"-"},"content":" -fx-border-width: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":324,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":326,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08"},{"lineNumber":327,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08"},{"lineNumber":328,"author":{"gitId":"-"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2016-08-08"},{"lineNumber":329,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":331,"author":{"gitId":"-"},"content":"#commandTextField {","lastModifiedDate":"2017-03-02"},{"lineNumber":332,"author":{"gitId":"-"},"content":" -fx-background-color: transparent #383838 transparent #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":333,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":334,"author":{"gitId":"tahnya"},"content":" -fx-border-color: transparent transparent #69866F transparent;","lastModifiedDate":"2024-03-21"},{"lineNumber":335,"author":{"gitId":"-"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":336,"author":{"gitId":"tahnya"},"content":" -fx-border-width: 2;","lastModifiedDate":"2024-03-21"},{"lineNumber":337,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":338,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":339,"author":{"gitId":"tahnya"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-21"},{"lineNumber":340,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":341,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":342,"author":{"gitId":"-"},"content":"#filterField, #personListPanel, #personWebpage {","lastModifiedDate":"2016-08-15"},{"lineNumber":343,"author":{"gitId":"-"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2016-08-15"},{"lineNumber":344,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":345,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":346,"author":{"gitId":"-"},"content":"#resultDisplay .content {","lastModifiedDate":"2017-03-02"},{"lineNumber":347,"author":{"gitId":"tahnya"},"content":" -fx-background-color: transparent, #b9ecc4, transparent, #b9ecc4;","lastModifiedDate":"2024-03-21"},{"lineNumber":348,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","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":"#tags {","lastModifiedDate":"2016-12-18"},{"lineNumber":352,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2016-12-18"},{"lineNumber":353,"author":{"gitId":"-"},"content":" -fx-vgap: 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":354,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":355,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":356,"author":{"gitId":"-"},"content":"#tags .label {","lastModifiedDate":"2016-12-18"},{"lineNumber":357,"author":{"gitId":"tahnya"},"content":" -fx-text-fill: #69866F;","lastModifiedDate":"2024-03-21"},{"lineNumber":358,"author":{"gitId":"tahnya"},"content":" -fx-background-color: white;","lastModifiedDate":"2024-03-21"},{"lineNumber":359,"author":{"gitId":"tahnya"},"content":" -fx-padding: 1 10 1 10;","lastModifiedDate":"2024-03-21"},{"lineNumber":360,"author":{"gitId":"tahnya"},"content":" -fx-border-radius: 10;","lastModifiedDate":"2024-03-21"},{"lineNumber":361,"author":{"gitId":"tahnya"},"content":" -fx-background-radius: 10;","lastModifiedDate":"2024-03-21"},{"lineNumber":362,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2016-12-18"},{"lineNumber":363,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":364,"author":{"gitId":"yapxuanxuan"},"content":".company {","lastModifiedDate":"2024-03-21"},{"lineNumber":365,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-21"},{"lineNumber":366,"author":{"gitId":"yapxuanxuan"},"content":" -fx-background-color: #FFF8B6;","lastModifiedDate":"2024-03-21"},{"lineNumber":367,"author":{"gitId":"yapxuanxuan"},"content":" -fx-padding: 1 10 1 10;","lastModifiedDate":"2024-03-21"},{"lineNumber":368,"author":{"gitId":"yapxuanxuan"},"content":" -fx-border-radius: 10;","lastModifiedDate":"2024-03-21"},{"lineNumber":369,"author":{"gitId":"yapxuanxuan"},"content":" -fx-background-radius: 10;","lastModifiedDate":"2024-03-21"},{"lineNumber":370,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2024-03-21"},{"lineNumber":371,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"tahnya":59,"yapxuanxuan":5,"-":307}},{"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":"tahnya"},"content":" -fx-background: #b9ecc4;","lastModifiedDate":"2024-03-21"},{"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":{"tahnya":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":"tahnya"},"content":" -fx-text-fill: 69866F;","lastModifiedDate":"2024-03-21"},{"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":"tahnya"},"content":" -fx-background-color: #D9D9D9;","lastModifiedDate":"2024-03-21"},{"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":"tahnya"},"content":" -fx-background-color: #C0C2C0;","lastModifiedDate":"2024-03-21"},{"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":"tahnya"},"content":" -fx-background-color: dimgray;","lastModifiedDate":"2024-03-21"},{"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":"tahnya"},"content":" -fx-background-color: #b9ecc4;","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-08-28"}],"authorContributionMap":{"tahnya":5,"-":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.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":"tahnya"},"content":" title\u003d\"Connectify\" minWidth\u003d\"450\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2024-03-21"},{"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":"2024-03-21"},{"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":"tahnya"},"content":" \u003cInsets top\u003d\"0\" right\u003d\"0\" bottom\u003d\"5\" left\u003d\"0\" /\u003e","lastModifiedDate":"2024-03-21"},{"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":{"tahnya":2,"-":58}},{"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":"sindhurajain"},"content":"\u003c?import javafx.scene.shape.Circle?\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":13,"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":14,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"yapxuanxuan"},"content":" \u003cVBox alignment\u003d\"TOP_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"yapxuanxuan"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"10\" left\u003d\"15\" /\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08"},{"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":"sindhurajain"},"content":" \u003cCircle fx:id\u003d\"priorityDot\" radius\u003d\"5\"/\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03"},{"lineNumber":32,"author":{"gitId":"yapxuanxuan"},"content":" \u003cFlowPane fx:id\u003d\"tags\"\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"yapxuanxuan"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"yapxuanxuan"},"content":" \u003cInsets bottom\u003d\"5\"/\u003e \u003c!-- Padding added between tags and company --\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"yapxuanxuan"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"yapxuanxuan"},"content":" \u003c/FlowPane\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"yapxuanxuan"},"content":" \u003cLabel fx:id\u003d\"company\" styleClass\u003d\"company\" text\u003d\"\\$company\" minHeight\u003d\"-Infinity\" visible\u003d\"false\" /\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"yapxuanxuan":8,"sindhurajain":2,"-":33}},{"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":"yapxuanxuan"},"content":" //---------------- Tests for containsFullWordIgnoreCase --------------------------------------","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"yapxuanxuan"},"content":" /*","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"yapxuanxuan"},"content":" * Invalid equivalence partitions for word: null, empty, multiple words","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"yapxuanxuan"},"content":" * Invalid equivalence partitions for sentence: null","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"yapxuanxuan"},"content":" * The four test cases below test one invalid input at a time.","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"yapxuanxuan"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"yapxuanxuan"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"yapxuanxuan"},"content":" public void containsFullWordIgnoreCase_nullWord_throwsNullPointerException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"yapxuanxuan"},"content":" assertThrows(NullPointerException.class, () -\u003e StringUtil.containsFullWordIgnoreCase(\"typical sentence\",","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"yapxuanxuan"},"content":" null));","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"yapxuanxuan"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"yapxuanxuan"},"content":" public void containsFullWordIgnoreCase_emptyWord_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"yapxuanxuan"},"content":" assertThrows(IllegalArgumentException.class, \"Word parameter cannot be empty\", ()","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"yapxuanxuan"},"content":" -\u003e StringUtil.containsFullWordIgnoreCase(\"typical sentence\", \" \"));","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"yapxuanxuan"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"yapxuanxuan"},"content":" public void containsFullWordIgnoreCase_multipleWords_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"yapxuanxuan"},"content":" assertThrows(IllegalArgumentException.class, \"Word parameter should be a single word\", ()","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"yapxuanxuan"},"content":" -\u003e StringUtil.containsFullWordIgnoreCase(\"typical sentence\", \"aaa BBB\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"yapxuanxuan"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"yapxuanxuan"},"content":" public void containsFullWordIgnoreCase_nullSentence_throwsNullPointerException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"yapxuanxuan"},"content":" assertThrows(NullPointerException.class, () -\u003e StringUtil.containsFullWordIgnoreCase(null, \"abc\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"yapxuanxuan"},"content":" /*","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"yapxuanxuan"},"content":" * Valid equivalence partitions for word:","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"yapxuanxuan"},"content":" * - any word","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"yapxuanxuan"},"content":" * - word containing symbols/numbers","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"yapxuanxuan"},"content":" * - word with leading/trailing spaces","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"yapxuanxuan"},"content":" *","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"yapxuanxuan"},"content":" * Valid equivalence partitions for sentence:","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"yapxuanxuan"},"content":" * - empty string","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"yapxuanxuan"},"content":" * - one word","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"yapxuanxuan"},"content":" * - multiple words","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"yapxuanxuan"},"content":" * - sentence with extra spaces","lastModifiedDate":"2024-03-21"},{"lineNumber":90,"author":{"gitId":"yapxuanxuan"},"content":" *","lastModifiedDate":"2024-03-21"},{"lineNumber":91,"author":{"gitId":"yapxuanxuan"},"content":" * Possible scenarios returning true:","lastModifiedDate":"2024-03-21"},{"lineNumber":92,"author":{"gitId":"yapxuanxuan"},"content":" * - matches first word in sentence","lastModifiedDate":"2024-03-21"},{"lineNumber":93,"author":{"gitId":"yapxuanxuan"},"content":" * - last word in sentence","lastModifiedDate":"2024-03-21"},{"lineNumber":94,"author":{"gitId":"yapxuanxuan"},"content":" * - middle word in sentence","lastModifiedDate":"2024-03-21"},{"lineNumber":95,"author":{"gitId":"yapxuanxuan"},"content":" * - matches multiple words","lastModifiedDate":"2024-03-21"},{"lineNumber":96,"author":{"gitId":"yapxuanxuan"},"content":" *","lastModifiedDate":"2024-03-21"},{"lineNumber":97,"author":{"gitId":"yapxuanxuan"},"content":" * Possible scenarios returning false:","lastModifiedDate":"2024-03-21"},{"lineNumber":98,"author":{"gitId":"yapxuanxuan"},"content":" * - query word matches part of a sentence word","lastModifiedDate":"2024-03-21"},{"lineNumber":99,"author":{"gitId":"yapxuanxuan"},"content":" * - sentence word matches part of the query word","lastModifiedDate":"2024-03-21"},{"lineNumber":100,"author":{"gitId":"yapxuanxuan"},"content":" *","lastModifiedDate":"2024-03-21"},{"lineNumber":101,"author":{"gitId":"yapxuanxuan"},"content":" * The test method below tries to verify all above with a reasonably low number of test cases.","lastModifiedDate":"2024-03-21"},{"lineNumber":102,"author":{"gitId":"yapxuanxuan"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":103,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":104,"author":{"gitId":"yapxuanxuan"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":105,"author":{"gitId":"yapxuanxuan"},"content":" public void containsFullWordIgnoreCase_validInputs_correctResult() {","lastModifiedDate":"2024-03-21"},{"lineNumber":106,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":107,"author":{"gitId":"yapxuanxuan"},"content":" // Empty sentence","lastModifiedDate":"2024-03-21"},{"lineNumber":108,"author":{"gitId":"yapxuanxuan"},"content":" assertFalse(StringUtil.containsFullWordIgnoreCase(\"\", \"abc\")); // Boundary case","lastModifiedDate":"2024-03-21"},{"lineNumber":109,"author":{"gitId":"yapxuanxuan"},"content":" assertFalse(StringUtil.containsFullWordIgnoreCase(\" \", \"123\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":110,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":111,"author":{"gitId":"yapxuanxuan"},"content":" // Matches a partial word only","lastModifiedDate":"2024-03-21"},{"lineNumber":112,"author":{"gitId":"yapxuanxuan"},"content":" assertFalse(StringUtil.containsFullWordIgnoreCase(\"aaa bbb ccc\", \"bb\")); // Sentence word bigger than query word","lastModifiedDate":"2024-03-21"},{"lineNumber":113,"author":{"gitId":"yapxuanxuan"},"content":" // Query word bigger than sentence word","lastModifiedDate":"2024-03-21"},{"lineNumber":114,"author":{"gitId":"yapxuanxuan"},"content":" assertFalse(StringUtil.containsFullWordIgnoreCase(\"aaa bbb ccc\", \"bbbb\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":115,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":116,"author":{"gitId":"yapxuanxuan"},"content":" // Matches word in the sentence, different upper/lower case letters","lastModifiedDate":"2024-03-21"},{"lineNumber":117,"author":{"gitId":"yapxuanxuan"},"content":" assertTrue(StringUtil.containsFullWordIgnoreCase(\"aaa bBb ccc\", \"Bbb\")); // First word (boundary case)","lastModifiedDate":"2024-03-21"},{"lineNumber":118,"author":{"gitId":"yapxuanxuan"},"content":" assertTrue(StringUtil.containsFullWordIgnoreCase(\"aaa bBb ccc@1\", \"CCc@1\")); // Last word (boundary case)","lastModifiedDate":"2024-03-21"},{"lineNumber":119,"author":{"gitId":"yapxuanxuan"},"content":" assertTrue(StringUtil.containsFullWordIgnoreCase(\" AAA bBb ccc \", \"aaa\")); // Sentence has extra spaces","lastModifiedDate":"2024-03-21"},{"lineNumber":120,"author":{"gitId":"yapxuanxuan"},"content":" assertTrue(StringUtil.containsFullWordIgnoreCase(\"Aaa\", \"aaa\")); // Only one word in sentence (boundary case)","lastModifiedDate":"2024-03-21"},{"lineNumber":121,"author":{"gitId":"yapxuanxuan"},"content":" assertTrue(StringUtil.containsFullWordIgnoreCase(\"aaa bbb ccc\", \" ccc \")); // Leading/trailing spaces","lastModifiedDate":"2024-03-21"},{"lineNumber":122,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":123,"author":{"gitId":"yapxuanxuan"},"content":" // Matches multiple words in sentence","lastModifiedDate":"2024-03-21"},{"lineNumber":124,"author":{"gitId":"yapxuanxuan"},"content":" assertTrue(StringUtil.containsFullWordIgnoreCase(\"AAA bBb ccc bbb\", \"bbB\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":125,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":" //---------------- Tests for containsWordIgnoreCase --------------------------------------","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":" * Invalid equivalence partitions for word: null, empty, multiple words","lastModifiedDate":"2016-10-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" * Invalid equivalence partitions for sentence: null","lastModifiedDate":"2016-10-13"},{"lineNumber":132,"author":{"gitId":"-"},"content":" * The four test cases below test one invalid input at a time.","lastModifiedDate":"2016-10-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-13"},{"lineNumber":136,"author":{"gitId":"-"},"content":" public void containsWordIgnoreCase_nullWord_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e StringUtil.containsWordIgnoreCase(\"typical sentence\", null));","lastModifiedDate":"2019-03-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":140,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-13"},{"lineNumber":141,"author":{"gitId":"-"},"content":" public void containsWordIgnoreCase_emptyWord_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, \"Word parameter cannot be empty\", ()","lastModifiedDate":"2019-03-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":" -\u003e StringUtil.containsWordIgnoreCase(\"typical sentence\", \" \"));","lastModifiedDate":"2019-03-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":146,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-13"},{"lineNumber":147,"author":{"gitId":"-"},"content":" public void containsWordIgnoreCase_multipleWords_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, \"Word parameter should be a single word\", ()","lastModifiedDate":"2019-03-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":" -\u003e StringUtil.containsWordIgnoreCase(\"typical sentence\", \"aaa BBB\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-13"},{"lineNumber":153,"author":{"gitId":"-"},"content":" public void containsWordIgnoreCase_nullSentence_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":154,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e StringUtil.containsWordIgnoreCase(null, \"abc\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":157,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-13"},{"lineNumber":158,"author":{"gitId":"-"},"content":" * Valid equivalence partitions for word:","lastModifiedDate":"2016-10-13"},{"lineNumber":159,"author":{"gitId":"-"},"content":" * - any word","lastModifiedDate":"2016-10-13"},{"lineNumber":160,"author":{"gitId":"-"},"content":" * - word containing symbols/numbers","lastModifiedDate":"2016-10-13"},{"lineNumber":161,"author":{"gitId":"-"},"content":" * - word with leading/trailing spaces","lastModifiedDate":"2016-10-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-13"},{"lineNumber":163,"author":{"gitId":"-"},"content":" * Valid equivalence partitions for sentence:","lastModifiedDate":"2016-10-13"},{"lineNumber":164,"author":{"gitId":"-"},"content":" * - empty string","lastModifiedDate":"2016-10-13"},{"lineNumber":165,"author":{"gitId":"-"},"content":" * - one word","lastModifiedDate":"2016-10-13"},{"lineNumber":166,"author":{"gitId":"-"},"content":" * - multiple words","lastModifiedDate":"2016-10-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":" * - sentence with extra spaces","lastModifiedDate":"2016-10-13"},{"lineNumber":168,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-13"},{"lineNumber":169,"author":{"gitId":"-"},"content":" * Possible scenarios returning true:","lastModifiedDate":"2016-10-13"},{"lineNumber":170,"author":{"gitId":"-"},"content":" * - matches first word in sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":171,"author":{"gitId":"-"},"content":" * - last word in sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":172,"author":{"gitId":"-"},"content":" * - middle word in sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":173,"author":{"gitId":"-"},"content":" * - matches multiple words","lastModifiedDate":"2016-10-13"},{"lineNumber":174,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-13"},{"lineNumber":175,"author":{"gitId":"-"},"content":" * Possible scenarios returning false:","lastModifiedDate":"2016-10-13"},{"lineNumber":176,"author":{"gitId":"-"},"content":" * - query word matches part of a sentence word","lastModifiedDate":"2016-10-13"},{"lineNumber":177,"author":{"gitId":"-"},"content":" * - sentence word matches part of the query word","lastModifiedDate":"2016-10-13"},{"lineNumber":178,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-13"},{"lineNumber":179,"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":180,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-13"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":182,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-13"},{"lineNumber":183,"author":{"gitId":"-"},"content":" public void containsWordIgnoreCase_validInputs_correctResult() {","lastModifiedDate":"2016-10-13"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":185,"author":{"gitId":"-"},"content":" // Empty sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":186,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.containsWordIgnoreCase(\"\", \"abc\")); // Boundary case","lastModifiedDate":"2016-10-13"},{"lineNumber":187,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.containsWordIgnoreCase(\" \", \"123\"));","lastModifiedDate":"2016-10-13"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":189,"author":{"gitId":"-"},"content":" // Matches word in the sentence, different upper/lower case letters","lastModifiedDate":"2016-10-13"},{"lineNumber":190,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\"aaa bBb ccc\", \"Bbb\")); // First word (boundary case)","lastModifiedDate":"2016-10-13"},{"lineNumber":191,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\"aaa bBb ccc@1\", \"CCc@1\")); // Last word (boundary case)","lastModifiedDate":"2016-10-13"},{"lineNumber":192,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\" AAA bBb ccc \", \"aaa\")); // Sentence has extra spaces","lastModifiedDate":"2016-10-13"},{"lineNumber":193,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\"Aaa\", \"aaa\")); // Only one word in sentence (boundary case)","lastModifiedDate":"2016-10-13"},{"lineNumber":194,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\"aaa bbb ccc\", \" ccc \")); // Leading/trailing spaces","lastModifiedDate":"2016-10-13"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":196,"author":{"gitId":"-"},"content":" // Matches multiple words in sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":197,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\"AAA bBb ccc bbb\", \"bbB\"));","lastModifiedDate":"2016-10-13"},{"lineNumber":198,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":200,"author":{"gitId":"-"},"content":" //---------------- Tests for getDetails --------------------------------------","lastModifiedDate":"2016-10-13"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":202,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-13"},{"lineNumber":203,"author":{"gitId":"-"},"content":" * Equivalence Partitions: null, valid throwable object","lastModifiedDate":"2016-10-13"},{"lineNumber":204,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-13"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":206,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-30"},{"lineNumber":207,"author":{"gitId":"-"},"content":" public void getDetails_exceptionGiven() {","lastModifiedDate":"2016-09-30"},{"lineNumber":208,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.getDetails(new FileNotFoundException(\"file not found\"))","lastModifiedDate":"2019-03-14"},{"lineNumber":209,"author":{"gitId":"-"},"content":" .contains(\"java.io.FileNotFoundException: file not found\"));","lastModifiedDate":"2019-03-14"},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":212,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-30"},{"lineNumber":213,"author":{"gitId":"-"},"content":" public void getDetails_nullGiven_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":214,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e StringUtil.getDetails(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":217,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"yapxuanxuan":78,"-":139}},{"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":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"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":"sindhurajain"},"content":"import static seedu.address.logic.commands.DeleteCommand.MESSAGE_PERSON_NOT_FOUND;","lastModifiedDate":"2024-03-13"},{"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":"sindhurajain"},"content":" assertCommandException(deleteCommand, String.format(MESSAGE_PERSON_NOT_FOUND, \"9\"));","lastModifiedDate":"2024-03-13"},{"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":"-"},"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":"-"},"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":{"sindhurajain":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_ADDRESS;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05"},{"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":"yapxuanxuan"},"content":" public static final String VALID_COMPANY_AMY \u003d \"TikTok\";","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"yapxuanxuan"},"content":" public static final String VALID_COMPANY_BOB \u003d \"Google\";","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"sindhurajain"},"content":" public static final String VALID_PRIORITY_AMY \u003d \"high\";","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"sindhurajain"},"content":" public static final String VALID_PRIORITY_BOB \u003d \"med\";","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":55,"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":56,"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":57,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05"},{"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":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05"},{"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":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05"},{"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":{"yapxuanxuan":2,"sindhurajain":2,"-":128}},{"path":"src/test/java/seedu/address/logic/commands/CompanyCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yapxuanxuan"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"yapxuanxuan"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"yapxuanxuan"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"yapxuanxuan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_COMPANY_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"yapxuanxuan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_COMPANY_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"yapxuanxuan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"yapxuanxuan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"yapxuanxuan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"yapxuanxuan"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"yapxuanxuan"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"yapxuanxuan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.model.person.Company;","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"yapxuanxuan"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"yapxuanxuan"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"yapxuanxuan"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"yapxuanxuan"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"yapxuanxuan"},"content":"public class CompanyCommandTest {","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"yapxuanxuan"},"content":" private static final String COMPANY_STUB \u003d \"Some company\";","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"yapxuanxuan"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"yapxuanxuan"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"yapxuanxuan"},"content":" public void execute_addCompanyUnfilteredList_success() {","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"yapxuanxuan"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"yapxuanxuan"},"content":" Person editedPerson \u003d new PersonBuilder(firstPerson).withCompany(COMPANY_STUB).build();","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"yapxuanxuan"},"content":" CompanyCommand companyCommand \u003d new CompanyCommand(editedPerson.getName().fullName,","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"yapxuanxuan"},"content":" new Company(editedPerson.getCompany().value));","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"yapxuanxuan"},"content":" String expectedMessage \u003d String.format(CompanyCommand.MESSAGE_ADD_COMPANY_SUCCESS,","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"yapxuanxuan"},"content":" editedPerson.getName().fullName, editedPerson.getCompany().value);","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"yapxuanxuan"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"yapxuanxuan"},"content":" expectedModel.setPerson(firstPerson, editedPerson);","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"yapxuanxuan"},"content":" assertCommandSuccess(companyCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"yapxuanxuan"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"yapxuanxuan"},"content":" public void execute_deleteCompanyUnfilteredList_success() {","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"yapxuanxuan"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"yapxuanxuan"},"content":" Person editedPerson \u003d new PersonBuilder(firstPerson).withCompany(\"\").build();","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"yapxuanxuan"},"content":" CompanyCommand companyCommand \u003d new CompanyCommand(editedPerson.getName().fullName,","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"yapxuanxuan"},"content":" new Company(editedPerson.getCompany().toString()));","lastModifiedDate":"2024-03-13"},{"lineNumber":56,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"yapxuanxuan"},"content":" String expectedMessage \u003d String.format(CompanyCommand.MESSAGE_DELETE_COMPANY_SUCCESS,","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"yapxuanxuan"},"content":" editedPerson.getName().fullName);","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":60,"author":{"gitId":"yapxuanxuan"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"lineNumber":61,"author":{"gitId":"yapxuanxuan"},"content":" expectedModel.setPerson(firstPerson, editedPerson);","lastModifiedDate":"2024-03-13"},{"lineNumber":62,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":63,"author":{"gitId":"yapxuanxuan"},"content":" assertCommandSuccess(companyCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-13"},{"lineNumber":64,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":65,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":66,"author":{"gitId":"yapxuanxuan"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":67,"author":{"gitId":"yapxuanxuan"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2024-03-13"},{"lineNumber":68,"author":{"gitId":"yapxuanxuan"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-13"},{"lineNumber":69,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":70,"author":{"gitId":"yapxuanxuan"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"yapxuanxuan"},"content":" Person editedPerson \u003d new PersonBuilder(model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased()))","lastModifiedDate":"2024-03-13"},{"lineNumber":72,"author":{"gitId":"yapxuanxuan"},"content":" .withCompany(COMPANY_STUB).build();","lastModifiedDate":"2024-03-13"},{"lineNumber":73,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":74,"author":{"gitId":"yapxuanxuan"},"content":" CompanyCommand companyCommand \u003d new CompanyCommand(editedPerson.getName().fullName,","lastModifiedDate":"2024-03-13"},{"lineNumber":75,"author":{"gitId":"yapxuanxuan"},"content":" new Company(editedPerson.getCompany().value));","lastModifiedDate":"2024-03-13"},{"lineNumber":76,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":77,"author":{"gitId":"yapxuanxuan"},"content":" String expectedMessage \u003d String.format(CompanyCommand.MESSAGE_ADD_COMPANY_SUCCESS,","lastModifiedDate":"2024-03-13"},{"lineNumber":78,"author":{"gitId":"yapxuanxuan"},"content":" editedPerson.getName().fullName, editedPerson.getCompany().value);","lastModifiedDate":"2024-03-13"},{"lineNumber":79,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":80,"author":{"gitId":"yapxuanxuan"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"lineNumber":81,"author":{"gitId":"yapxuanxuan"},"content":" expectedModel.setPerson(firstPerson, editedPerson);","lastModifiedDate":"2024-03-13"},{"lineNumber":82,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":83,"author":{"gitId":"yapxuanxuan"},"content":" assertCommandSuccess(companyCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-13"},{"lineNumber":84,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":85,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":86,"author":{"gitId":"yapxuanxuan"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":87,"author":{"gitId":"yapxuanxuan"},"content":" public void execute_invalidPersonName_throwsCommandException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":88,"author":{"gitId":"yapxuanxuan"},"content":" CompanyCommand companyCommand \u003d new CompanyCommand(\"\",","lastModifiedDate":"2024-03-14"},{"lineNumber":89,"author":{"gitId":"yapxuanxuan"},"content":" new Company(VALID_COMPANY_AMY));","lastModifiedDate":"2024-03-14"},{"lineNumber":90,"author":{"gitId":"yapxuanxuan"},"content":" assertCommandFailure(companyCommand, model, CompanyCommand.MESSAGE_EMPTY_NAME);","lastModifiedDate":"2024-03-14"},{"lineNumber":91,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":92,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":93,"author":{"gitId":"yapxuanxuan"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":94,"author":{"gitId":"yapxuanxuan"},"content":" public void execute_invalidPerson_throwsCommandException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":95,"author":{"gitId":"yapxuanxuan"},"content":" CompanyCommand companyCommand \u003d new CompanyCommand(\"ABC\",","lastModifiedDate":"2024-03-14"},{"lineNumber":96,"author":{"gitId":"yapxuanxuan"},"content":" new Company(VALID_COMPANY_AMY));","lastModifiedDate":"2024-03-14"},{"lineNumber":97,"author":{"gitId":"yapxuanxuan"},"content":" assertCommandFailure(companyCommand, model, String.format(CompanyCommand.MESSAGE_PERSON_NOT_FOUND, \"ABC\"));","lastModifiedDate":"2024-03-14"},{"lineNumber":98,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":99,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":100,"author":{"gitId":"yapxuanxuan"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":101,"author":{"gitId":"yapxuanxuan"},"content":" public void equals() {","lastModifiedDate":"2024-03-14"},{"lineNumber":102,"author":{"gitId":"yapxuanxuan"},"content":" final CompanyCommand standardCommand \u003d new CompanyCommand(\"Amy Reale\",","lastModifiedDate":"2024-03-14"},{"lineNumber":103,"author":{"gitId":"yapxuanxuan"},"content":" new Company(VALID_COMPANY_AMY));","lastModifiedDate":"2024-03-14"},{"lineNumber":104,"author":{"gitId":"yapxuanxuan"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-14"},{"lineNumber":105,"author":{"gitId":"yapxuanxuan"},"content":" CompanyCommand commandWithSameValues \u003d new CompanyCommand(\"Amy Reale\",","lastModifiedDate":"2024-03-14"},{"lineNumber":106,"author":{"gitId":"yapxuanxuan"},"content":" new Company(VALID_COMPANY_AMY));","lastModifiedDate":"2024-03-14"},{"lineNumber":107,"author":{"gitId":"yapxuanxuan"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-03-14"},{"lineNumber":108,"author":{"gitId":"yapxuanxuan"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-14"},{"lineNumber":109,"author":{"gitId":"yapxuanxuan"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-03-14"},{"lineNumber":110,"author":{"gitId":"yapxuanxuan"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":111,"author":{"gitId":"yapxuanxuan"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-03-14"},{"lineNumber":112,"author":{"gitId":"yapxuanxuan"},"content":" // different company tag -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":113,"author":{"gitId":"yapxuanxuan"},"content":" assertFalse(standardCommand.equals(new CompanyCommand(\"Bob Tan\",","lastModifiedDate":"2024-03-14"},{"lineNumber":114,"author":{"gitId":"yapxuanxuan"},"content":" new Company(VALID_COMPANY_BOB))));","lastModifiedDate":"2024-03-14"},{"lineNumber":115,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":116,"author":{"gitId":"yapxuanxuan"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"yapxuanxuan":116}},{"path":"src/test/java/seedu/address/logic/commands/CountCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yapxuanxuan"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"yapxuanxuan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"yapxuanxuan"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"yapxuanxuan"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"yapxuanxuan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"yapxuanxuan"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"yapxuanxuan"},"content":" * Contains integration tests (interaction with the Model) and unit tests for ListCommand.","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"yapxuanxuan"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"yapxuanxuan"},"content":"public class CountCommandTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"yapxuanxuan"},"content":" private Model model;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"yapxuanxuan"},"content":" private Model expectedModel;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"yapxuanxuan"},"content":" @BeforeEach","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"yapxuanxuan"},"content":" public void setUp() {","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"yapxuanxuan"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"yapxuanxuan"},"content":" expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"yapxuanxuan"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"yapxuanxuan"},"content":" public void execute_listIsNotEmpty_showsCount() {","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"yapxuanxuan"},"content":" assertCommandSuccess(new CountCommand(), model, String.format(CountCommand.MESSAGE_SUCCESS,","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"yapxuanxuan"},"content":" model.getFilteredPersonList().size()), expectedModel);","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"yapxuanxuan"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"yapxuanxuan":33}},{"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":"sindhurajain"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"sindhurajain"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2018-01-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2017-06-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"sindhurajain"},"content":" public void execute_validNameUnfilteredList_success() {","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"sindhurajain"},"content":" Person personToDelete \u003d ALICE;","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"sindhurajain"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(personToDelete.getName().fullName);","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":34,"author":{"gitId":"sindhurajain"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS, personToDelete.getName());","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":44,"author":{"gitId":"sindhurajain"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(\"Nonexistent Person\");","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"sindhurajain"},"content":" assertCommandFailure(deleteCommand, model,","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"sindhurajain"},"content":" String.format(DeleteCommand.MESSAGE_PERSON_NOT_FOUND, \"Nonexistent Person\"));","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":50,"author":{"gitId":"sindhurajain"},"content":" public void execute_validNameFilteredList_success() {","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":54,"author":{"gitId":"sindhurajain"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(personToDelete.getName().fullName);","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"sindhurajain"},"content":" personToDelete.getName());","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":" showNoPerson(expectedModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":68,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":70,"author":{"gitId":"sindhurajain"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(\"Nonexistent Person\");","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":72,"author":{"gitId":"sindhurajain"},"content":" assertCommandFailure(deleteCommand, model,","lastModifiedDate":"2024-03-13"},{"lineNumber":73,"author":{"gitId":"sindhurajain"},"content":" String.format(DeleteCommand.MESSAGE_PERSON_NOT_FOUND, \"Nonexistent Person\"));","lastModifiedDate":"2024-03-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":78,"author":{"gitId":"sindhurajain"},"content":" DeleteCommand deleteFirstCommand \u003d new DeleteCommand(ALICE.getName().fullName);","lastModifiedDate":"2024-03-13"},{"lineNumber":79,"author":{"gitId":"sindhurajain"},"content":" DeleteCommand deleteSecondCommand \u003d new DeleteCommand(BOB.getName().fullName);","lastModifiedDate":"2024-03-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":85,"author":{"gitId":"sindhurajain"},"content":" DeleteCommand deleteFirstCommandCopy \u003d new DeleteCommand(ALICE.getName().fullName);","lastModifiedDate":"2024-03-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2017-06-27"},{"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":"2019-02-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":100,"author":{"gitId":"sindhurajain"},"content":" String targetName \u003d \"Test Person\";","lastModifiedDate":"2024-03-13"},{"lineNumber":101,"author":{"gitId":"sindhurajain"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(targetName);","lastModifiedDate":"2024-03-13"},{"lineNumber":102,"author":{"gitId":"sindhurajain"},"content":" String expected \u003d DeleteCommand.class.getCanonicalName() + \"{targetName\u003d\" + targetName + \"}\";","lastModifiedDate":"2024-03-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertEquals(expected, deleteCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05"},{"lineNumber":108,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":109,"author":{"gitId":"-"},"content":" private void showNoPerson(Model model) {","lastModifiedDate":"2017-06-05"},{"lineNumber":110,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2017-06-12"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertTrue(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2018-02-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"sindhurajain":21,"-":93}},{"path":"src/test/java/seedu/address/logic/commands/FilterHighPriorityCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sindhurajain"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"sindhurajain"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"sindhurajain"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"sindhurajain"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"sindhurajain"},"content":"import static seedu.address.testutil.TypicalPersons.CARL;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"sindhurajain"},"content":"import static seedu.address.testutil.TypicalPersons.ELLE;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"sindhurajain"},"content":"import static seedu.address.testutil.TypicalPersons.FIONA;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"sindhurajain"},"content":"import static seedu.address.testutil.TypicalPersons.GEORGE;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"sindhurajain"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"sindhurajain"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"sindhurajain"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"sindhurajain"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"sindhurajain"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"sindhurajain"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"sindhurajain"},"content":"public class FilterHighPriorityCommandTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"sindhurajain"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"sindhurajain"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"sindhurajain"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"sindhurajain"},"content":" public void execute_filterHighPriority_success() {","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"sindhurajain"},"content":" expectedModel.updateFilteredPersonList(person -\u003e person.getPriority().value.equals(\"high\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"sindhurajain"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"sindhurajain"},"content":" FilterHighPriorityCommand.MESSAGE_SUCCESS);","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"sindhurajain"},"content":" assertCommandSuccess(new FilterHighPriorityCommand(), model, expectedCommandResult, expectedModel);","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"sindhurajain"},"content":" assertEquals(Arrays.asList(ALICE, CARL, ELLE, FIONA, GEORGE), model.getFilteredPersonList());","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"sindhurajain"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"sindhurajain"},"content":" public void execute_filterHighPriority_noContactsFound() {","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"sindhurajain"},"content":" model.deletePerson(ALICE);","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"sindhurajain"},"content":" model.deletePerson(CARL);","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"sindhurajain"},"content":" model.deletePerson(ELLE);","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"sindhurajain"},"content":" model.deletePerson(FIONA);","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"sindhurajain"},"content":" model.deletePerson(GEORGE);","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"sindhurajain"},"content":" expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"sindhurajain"},"content":" expectedModel.updateFilteredPersonList(person -\u003e person.getPriority().value.equals(\"high\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"sindhurajain"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"sindhurajain"},"content":" FilterHighPriorityCommand.MESSAGE_NO_CONTACTS_FOUND);","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"sindhurajain"},"content":" assertCommandSuccess(new FilterHighPriorityCommand(), model, expectedCommandResult, expectedModel);","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"sindhurajain"},"content":" assertEquals(Arrays.asList(), model.getFilteredPersonList());","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"sindhurajain"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"sindhurajain":50}},{"path":"src/test/java/seedu/address/logic/commands/FilterMedPriorityCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sindhurajain"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"sindhurajain"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"sindhurajain"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"sindhurajain"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"sindhurajain"},"content":"import static seedu.address.testutil.TypicalPersons.DANIEL;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"sindhurajain"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"sindhurajain"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"sindhurajain"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"sindhurajain"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"sindhurajain"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"sindhurajain"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"sindhurajain"},"content":"public class FilterMedPriorityCommandTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"sindhurajain"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"sindhurajain"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"sindhurajain"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"sindhurajain"},"content":" public void execute_filterMedPriority_success() {","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"sindhurajain"},"content":" expectedModel.updateFilteredPersonList(person -\u003e person.getPriority().value.equals(\"med\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"sindhurajain"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"sindhurajain"},"content":" FilterMedPriorityCommand.MESSAGE_SUCCESS);","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"sindhurajain"},"content":" assertCommandSuccess(new FilterMedPriorityCommand(), model, expectedCommandResult, expectedModel);","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"sindhurajain"},"content":" assertEquals(Arrays.asList(BENSON, DANIEL), model.getFilteredPersonList());","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"sindhurajain"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"sindhurajain"},"content":" public void execute_filterMedPriority_noContactsFound() {","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"sindhurajain"},"content":" model.deletePerson(BENSON);","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"sindhurajain"},"content":" model.deletePerson(DANIEL);","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"sindhurajain"},"content":" expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"sindhurajain"},"content":" expectedModel.updateFilteredPersonList(person -\u003e person.getPriority().value.equals(\"med\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"sindhurajain"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"sindhurajain"},"content":" FilterMedPriorityCommand.MESSAGE_NO_CONTACTS_FOUND);","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"sindhurajain"},"content":" assertCommandSuccess(new FilterMedPriorityCommand(), model, expectedCommandResult, expectedModel);","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"sindhurajain"},"content":" assertEquals(Arrays.asList(), model.getFilteredPersonList());","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"sindhurajain"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"sindhurajain":42}},{"path":"src/test/java/seedu/address/logic/commands/FindCompanyCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yapxuanxuan"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"yapxuanxuan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"yapxuanxuan"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"yapxuanxuan"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"yapxuanxuan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"yapxuanxuan"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"yapxuanxuan"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"yapxuanxuan"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"yapxuanxuan"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"yapxuanxuan"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"yapxuanxuan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.model.person.CompanyContainsKeywordsPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"yapxuanxuan"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"yapxuanxuan"},"content":" * Contains integration tests (interaction with the Model) for {@code FindCompanyCommand}.","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"yapxuanxuan"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"yapxuanxuan"},"content":"public class FindCompanyCommandTest {","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"yapxuanxuan"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"yapxuanxuan"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"yapxuanxuan"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"yapxuanxuan"},"content":" public void equals() {","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"yapxuanxuan"},"content":" CompanyContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"yapxuanxuan"},"content":" new CompanyContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"yapxuanxuan"},"content":" CompanyContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"yapxuanxuan"},"content":" new CompanyContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"yapxuanxuan"},"content":" FindCompanyCommand findFirstCommand \u003d new FindCompanyCommand(firstPredicate);","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"yapxuanxuan"},"content":" FindCompanyCommand findSecondCommand \u003d new FindCompanyCommand(secondPredicate);","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"yapxuanxuan"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"yapxuanxuan"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"yapxuanxuan"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"yapxuanxuan"},"content":" FindCompanyCommand findFirstCommandCopy \u003d new FindCompanyCommand(firstPredicate);","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"yapxuanxuan"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"yapxuanxuan"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"yapxuanxuan"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"yapxuanxuan"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"yapxuanxuan"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"yapxuanxuan"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"yapxuanxuan"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"yapxuanxuan"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"yapxuanxuan"},"content":" public void execute_zeroKeywords_noPersonFound() {","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"yapxuanxuan"},"content":" String expectedMessage \u003d String.format(FindCompanyCommand.MESSAGE_FIND_COMPANY_SUCCESS, 0, \"contacts\");","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"yapxuanxuan"},"content":" CompanyContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"yapxuanxuan"},"content":" FindCompanyCommand command \u003d new FindCompanyCommand(predicate);","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"yapxuanxuan"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"yapxuanxuan"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"yapxuanxuan"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"yapxuanxuan"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"yapxuanxuan"},"content":" public void execute_multipleKeywords_multiplePersonsFound() {","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"yapxuanxuan"},"content":" String expectedMessage \u003d String.format(FindCompanyCommand.MESSAGE_FIND_COMPANY_SUCCESS, 2, \"contacts\");","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"yapxuanxuan"},"content":" CompanyContainsKeywordsPredicate predicate \u003d preparePredicate(\"TikTok Google\");","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"yapxuanxuan"},"content":" FindCompanyCommand command \u003d new FindCompanyCommand(predicate);","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"yapxuanxuan"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"yapxuanxuan"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"yapxuanxuan"},"content":" assertEquals(Arrays.asList(ALICE, BENSON), model.getFilteredPersonList());","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"yapxuanxuan"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"yapxuanxuan"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"yapxuanxuan"},"content":" CompanyContainsKeywordsPredicate predicate \u003d new CompanyContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"yapxuanxuan"},"content":" FindCompanyCommand findCommand \u003d new FindCompanyCommand(predicate);","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"yapxuanxuan"},"content":" String expected \u003d FindCompanyCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"yapxuanxuan"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"yapxuanxuan"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"yapxuanxuan"},"content":" * Parses {@code userInput} into a {@code CompanyContainsKeywordsPredicate}.","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"yapxuanxuan"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"yapxuanxuan"},"content":" private CompanyContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"yapxuanxuan"},"content":" return new CompanyContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"yapxuanxuan"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"yapxuanxuan":89}},{"path":"src/test/java/seedu/address/logic/commands/PriorityCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sindhurajain"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"sindhurajain"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"sindhurajain"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"sindhurajain"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PRIORITY_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"sindhurajain"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PRIORITY_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"sindhurajain"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"sindhurajain"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"sindhurajain"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"sindhurajain"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"sindhurajain"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"sindhurajain"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"sindhurajain"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"sindhurajain"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"sindhurajain"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"sindhurajain"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"sindhurajain"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"sindhurajain"},"content":"import seedu.address.model.person.Priority;","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"sindhurajain"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"sindhurajain"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"sindhurajain"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"sindhurajain"},"content":" * {@code PriorityCommand}.","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"sindhurajain"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"sindhurajain"},"content":"public class PriorityCommandTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"sindhurajain"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"sindhurajain"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"sindhurajain"},"content":" public void execute_addPriorityUnfilteredList_success() {","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"sindhurajain"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"sindhurajain"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"sindhurajain"},"content":" Person editedPerson \u003d new PersonBuilder(firstPerson).withPriority(\"high\").build();","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"sindhurajain"},"content":" PriorityCommand priorityCommand \u003d new PriorityCommand(editedPerson.getName().fullName,","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"sindhurajain"},"content":" new Priority(editedPerson.getPriority().value));","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"sindhurajain"},"content":" String expectedMessage \u003d String.format(PriorityCommand.MESSAGE_ADD_PRIORITY_SUCCESS,","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"sindhurajain"},"content":" \"high\", \"**\", editedPerson.getName().fullName, editedPerson.getPhone(), editedPerson.getEmail());","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"sindhurajain"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"sindhurajain"},"content":" expectedModel.setPerson(firstPerson, editedPerson);","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"sindhurajain"},"content":" assertCommandSuccess(priorityCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"sindhurajain"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"sindhurajain"},"content":" public void execute_deletePriorityUnfilteredList_success() {","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"sindhurajain"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"sindhurajain"},"content":" Person editedPerson \u003d new PersonBuilder(firstPerson).withPriority(\"\").build();","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"sindhurajain"},"content":" PriorityCommand priorityCommand \u003d new PriorityCommand(firstPerson.getName().fullName,","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"sindhurajain"},"content":" new Priority(\"\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"sindhurajain"},"content":" String expectedMessage \u003d String.format(PriorityCommand.MESSAGE_DELETE_PRIORITY_SUCCESS,","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"sindhurajain"},"content":" editedPerson.getName().fullName);","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"sindhurajain"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"sindhurajain"},"content":" expectedModel.setPerson(firstPerson, editedPerson);","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"sindhurajain"},"content":" assertCommandSuccess(priorityCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"sindhurajain"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"sindhurajain"},"content":" public void execute_invalidPersonName_throwsCommandException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"sindhurajain"},"content":" PriorityCommand priorityCommand \u003d new PriorityCommand(\"\",","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"sindhurajain"},"content":" new Priority(VALID_PRIORITY_AMY));","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"sindhurajain"},"content":" assertCommandFailure(priorityCommand, model, PriorityCommand.MESSAGE_EMPTY_NAME);","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"sindhurajain"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"sindhurajain"},"content":" public void execute_invalidPerson_throwsCommandException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"sindhurajain"},"content":" PriorityCommand priorityCommand \u003d new PriorityCommand(\"ABC\",","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"sindhurajain"},"content":" new Priority(\"high\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"sindhurajain"},"content":" assertCommandFailure(priorityCommand, model, String.format(PriorityCommand.MESSAGE_PERSON_NOT_FOUND, \"ABC\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"sindhurajain"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"sindhurajain"},"content":" public void equals() {","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"sindhurajain"},"content":" final PriorityCommand standardCommand \u003d new PriorityCommand(\"Amy Reale\",","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"sindhurajain"},"content":" new Priority(VALID_PRIORITY_AMY));","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"sindhurajain"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"sindhurajain"},"content":" PriorityCommand commandWithSameValues \u003d new PriorityCommand(\"Amy Reale\",","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"sindhurajain"},"content":" new Priority(VALID_PRIORITY_AMY));","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"sindhurajain"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"sindhurajain"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"sindhurajain"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"sindhurajain"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"sindhurajain"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"sindhurajain"},"content":" // different remark -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"sindhurajain"},"content":" assertFalse(standardCommand.equals(new PriorityCommand(\"Bob Tan\",","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"sindhurajain"},"content":" new Priority(VALID_PRIORITY_BOB))));","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"sindhurajain"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"sindhurajain":97}},{"path":"src/test/java/seedu/address/logic/commands/StarCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"FangRuoqing"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"FangRuoqing"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"FangRuoqing"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"FangRuoqing"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"FangRuoqing"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"FangRuoqing"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"FangRuoqing"},"content":"import java.util.List;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"FangRuoqing"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"FangRuoqing"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"FangRuoqing"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"FangRuoqing"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"FangRuoqing"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"FangRuoqing"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"FangRuoqing"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"FangRuoqing"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"FangRuoqing"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"FangRuoqing"},"content":"public class StarCommandTest {","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"FangRuoqing"},"content":" private static final String CONTACT_STUB \u003d \"Alex Yeoh\";","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"FangRuoqing"},"content":" private Model model \u003d new ModelManager(SampleDataUtil.getSampleAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"FangRuoqing"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"FangRuoqing"},"content":" public void execute_contactNotFound_throwsCommandException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"FangRuoqing"},"content":" StarCommand starCommand \u003d new StarCommand(\"Nonexistent Contact\");","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"FangRuoqing"},"content":" assertCommandFailure(starCommand, model, \"Error! Contact not found: Nonexistent Contact\");","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"FangRuoqing"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"FangRuoqing"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"FangRuoqing"},"content":" public void execute_contactFoundAndStarred_successful() {","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"FangRuoqing"},"content":" StarCommand starCommand \u003d new StarCommand(CONTACT_STUB);","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"FangRuoqing"},"content":" ReadOnlyAddressBook initialAddressBook \u003d model.getAddressBook();","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"FangRuoqing"},"content":" List\u003cPerson\u003e initialPersonList \u003d initialAddressBook.getPersonList();","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"FangRuoqing"},"content":" Person contactToStar \u003d null;","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"FangRuoqing"},"content":" for (Person person : initialPersonList) {","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"FangRuoqing"},"content":" if (person.getName().fullName.equalsIgnoreCase(CONTACT_STUB)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"FangRuoqing"},"content":" contactToStar \u003d person;","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"FangRuoqing"},"content":" break;","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"FangRuoqing"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"FangRuoqing"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"FangRuoqing"},"content":" assertTrue(contactToStar !\u003d null); // Assert that the contact is found initially","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"FangRuoqing"},"content":" String expectedMessage \u003d \"Nice! I have starred this contact:\\n\" + contactToStar.getName() + \" ★\";","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"FangRuoqing"},"content":" Person expectedStarredContact \u003d new Person(contactToStar.getName(), contactToStar.getPhone(),","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"FangRuoqing"},"content":" contactToStar.getEmail(), contactToStar.getAddress(), contactToStar.getCompany(),","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"FangRuoqing"},"content":" contactToStar.getPriority(), true, contactToStar.getTags());","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"FangRuoqing"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"FangRuoqing"},"content":" expectedModel.setPerson(contactToStar, expectedStarredContact);","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"FangRuoqing"},"content":" expectedModel.updateFilteredPersonList(Model.PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"FangRuoqing"},"content":" assertCommandSuccess(starCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"FangRuoqing"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"FangRuoqing"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"FangRuoqing"},"content":" public void execute_validContactName_starsContact() throws Exception {","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"FangRuoqing"},"content":" // Arrange","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"FangRuoqing"},"content":" String contactName \u003d \"Alex Tan\";","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"FangRuoqing"},"content":" Person personToStar \u003d new PersonBuilder().withName(contactName).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"FangRuoqing"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"FangRuoqing"},"content":" model.addPerson(personToStar);","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"FangRuoqing"},"content":" StarCommand starCommand \u003d new StarCommand(contactName);","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"FangRuoqing"},"content":" // Act","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"FangRuoqing"},"content":" CommandResult commandResult \u003d starCommand.execute(model);","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"FangRuoqing"},"content":" // Assert","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"FangRuoqing"},"content":" Person starredPerson \u003d model.getFilteredPersonList().get(0);","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"FangRuoqing"},"content":" assertEquals(\"Nice! I have starred this contact:\\nAlex Tan ★\", commandResult.getFeedbackToUser());","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"FangRuoqing"},"content":" assertEquals(contactName, starredPerson.getName().fullName);","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"FangRuoqing"},"content":" assertEquals(true, starredPerson.isStarred());","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"FangRuoqing"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"FangRuoqing"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"FangRuoqing"},"content":" public void equals() {","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"FangRuoqing"},"content":" StarCommand starCommand1 \u003d new StarCommand(\"Alex\");","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"FangRuoqing"},"content":" StarCommand starCommand2 \u003d new StarCommand(\"Alex\");","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"FangRuoqing"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"FangRuoqing"},"content":" assertEquals(starCommand1, starCommand1);","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"FangRuoqing"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"FangRuoqing"},"content":" assertEquals(starCommand1, starCommand2);","lastModifiedDate":"2024-03-21"},{"lineNumber":90,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":91,"author":{"gitId":"FangRuoqing"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":92,"author":{"gitId":"FangRuoqing"},"content":" assertNotEquals(starCommand1, 1);","lastModifiedDate":"2024-03-21"},{"lineNumber":93,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":94,"author":{"gitId":"FangRuoqing"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":95,"author":{"gitId":"FangRuoqing"},"content":" assertNotEquals(starCommand1, null);","lastModifiedDate":"2024-03-21"},{"lineNumber":96,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":97,"author":{"gitId":"FangRuoqing"},"content":" // different contactName -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":98,"author":{"gitId":"FangRuoqing"},"content":" StarCommand differentStarCommand \u003d new StarCommand(\"John\");","lastModifiedDate":"2024-03-21"},{"lineNumber":99,"author":{"gitId":"FangRuoqing"},"content":" assertNotEquals(starCommand1, differentStarCommand);","lastModifiedDate":"2024-03-21"},{"lineNumber":100,"author":{"gitId":"FangRuoqing"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":101,"author":{"gitId":"FangRuoqing"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"FangRuoqing":101}},{"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":"-"},"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":"-"},"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":"-"},"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":"-"},"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":"-"},"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":"tahnya"},"content":" // assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-03-13"},{"lineNumber":154,"author":{"gitId":"tahnya"},"content":" // expectedMessage);","lastModifiedDate":"2024-03-13"},{"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":"tahnya"},"content":" // assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2024-03-13"},{"lineNumber":158,"author":{"gitId":"tahnya"},"content":" // expectedMessage);","lastModifiedDate":"2024-03-13"},{"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":"-"},"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":{"tahnya":4,"-":192}},{"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":"sindhurajain"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":19,"author":{"gitId":"FangRuoqing"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.logic.commands.CountCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-06-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":25,"author":{"gitId":"sindhurajain"},"content":"import seedu.address.logic.commands.FilterHighPriorityCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"sindhurajain"},"content":"import seedu.address.logic.commands.FilterMedPriorityCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":28,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.logic.commands.FindCompanyCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":31,"author":{"gitId":"sindhurajain"},"content":"import seedu.address.logic.commands.PriorityCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"FangRuoqing"},"content":"import seedu.address.logic.commands.StarCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24"},{"lineNumber":34,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.model.person.CompanyContainsKeywordsPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27"},{"lineNumber":37,"author":{"gitId":"sindhurajain"},"content":"import seedu.address.model.person.Priority;","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27"},{"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":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":60,"author":{"gitId":"sindhurajain"},"content":" public void parseCommand_delete() throws ParseException {","lastModifiedDate":"2024-03-13"},{"lineNumber":61,"author":{"gitId":"sindhurajain"},"content":" String testName \u003d ALICE.getName().toString();","lastModifiedDate":"2024-03-13"},{"lineNumber":62,"author":{"gitId":"sindhurajain"},"content":" String userInput \u003d DeleteCommand.COMMAND_WORD + \" \" + testName;","lastModifiedDate":"2024-03-13"},{"lineNumber":63,"author":{"gitId":"sindhurajain"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(userInput);","lastModifiedDate":"2024-03-13"},{"lineNumber":64,"author":{"gitId":"sindhurajain"},"content":" assertTrue(command instanceof DeleteCommand);","lastModifiedDate":"2024-03-13"},{"lineNumber":65,"author":{"gitId":"sindhurajain"},"content":" assertEquals(testName, command.getTargetName());","lastModifiedDate":"2024-03-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2018-03-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command);","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":"2017-06-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","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_find() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12"},{"lineNumber":86,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"yapxuanxuan"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":92,"author":{"gitId":"yapxuanxuan"},"content":" public void parseCommand_findCompany() throws Exception {","lastModifiedDate":"2024-03-21"},{"lineNumber":93,"author":{"gitId":"yapxuanxuan"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2024-03-21"},{"lineNumber":94,"author":{"gitId":"yapxuanxuan"},"content":" FindCompanyCommand command \u003d (FindCompanyCommand) parser.parseCommand(","lastModifiedDate":"2024-03-21"},{"lineNumber":95,"author":{"gitId":"yapxuanxuan"},"content":" FindCompanyCommand.COMMAND_WORD + \" \" + keywords.stream().collect(","lastModifiedDate":"2024-03-21"},{"lineNumber":96,"author":{"gitId":"yapxuanxuan"},"content":" Collectors.joining(\" \")));","lastModifiedDate":"2024-03-21"},{"lineNumber":97,"author":{"gitId":"yapxuanxuan"},"content":" assertEquals(new FindCompanyCommand(new CompanyContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2024-03-21"},{"lineNumber":98,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":99,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","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":"yapxuanxuan"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":113,"author":{"gitId":"yapxuanxuan"},"content":" public void parseCommand_count() throws Exception {","lastModifiedDate":"2024-03-21"},{"lineNumber":114,"author":{"gitId":"yapxuanxuan"},"content":" assertTrue(parser.parseCommand(CountCommand.COMMAND_WORD) instanceof CountCommand);","lastModifiedDate":"2024-03-21"},{"lineNumber":115,"author":{"gitId":"yapxuanxuan"},"content":" assertTrue(parser.parseCommand(CountCommand.COMMAND_WORD + \" 3\") instanceof CountCommand);","lastModifiedDate":"2024-03-21"},{"lineNumber":116,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":117,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":118,"author":{"gitId":"sindhurajain"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":119,"author":{"gitId":"sindhurajain"},"content":" public void parseCommand_priorityHigh() throws Exception {","lastModifiedDate":"2024-03-20"},{"lineNumber":120,"author":{"gitId":"sindhurajain"},"content":" String testName \u003d ALICE.getName().toString();","lastModifiedDate":"2024-03-20"},{"lineNumber":121,"author":{"gitId":"sindhurajain"},"content":" String userInput \u003d PriorityCommand.COMMAND_WORD_HIGH + \" Alice Pauline\";","lastModifiedDate":"2024-03-20"},{"lineNumber":122,"author":{"gitId":"sindhurajain"},"content":" PriorityCommand command \u003d (PriorityCommand) parser.parseCommand(userInput);","lastModifiedDate":"2024-03-20"},{"lineNumber":123,"author":{"gitId":"sindhurajain"},"content":" assertEquals(new PriorityCommand(testName, new Priority(\"high\")), command);","lastModifiedDate":"2024-03-20"},{"lineNumber":124,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":125,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":126,"author":{"gitId":"sindhurajain"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":127,"author":{"gitId":"sindhurajain"},"content":" public void parseCommand_priorityMed() throws Exception {","lastModifiedDate":"2024-03-20"},{"lineNumber":128,"author":{"gitId":"sindhurajain"},"content":" String testName \u003d ALICE.getName().toString();","lastModifiedDate":"2024-03-20"},{"lineNumber":129,"author":{"gitId":"sindhurajain"},"content":" String userInput \u003d PriorityCommand.COMMAND_WORD_MED + \" Alice Pauline\";","lastModifiedDate":"2024-03-20"},{"lineNumber":130,"author":{"gitId":"sindhurajain"},"content":" PriorityCommand command \u003d (PriorityCommand) parser.parseCommand(userInput);","lastModifiedDate":"2024-03-20"},{"lineNumber":131,"author":{"gitId":"sindhurajain"},"content":" assertEquals(new PriorityCommand(testName, new Priority(\"med\")), command);","lastModifiedDate":"2024-03-20"},{"lineNumber":132,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":133,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":134,"author":{"gitId":"sindhurajain"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":135,"author":{"gitId":"sindhurajain"},"content":" public void parseCommand_filterHighPriority() throws Exception {","lastModifiedDate":"2024-03-20"},{"lineNumber":136,"author":{"gitId":"sindhurajain"},"content":" assertTrue(parser.parseCommand(FilterHighPriorityCommand.COMMAND_WORD) instanceof FilterHighPriorityCommand);","lastModifiedDate":"2024-03-20"},{"lineNumber":137,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":138,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":139,"author":{"gitId":"sindhurajain"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":140,"author":{"gitId":"sindhurajain"},"content":" public void parseCommand_filterMedPriority() throws Exception {","lastModifiedDate":"2024-03-20"},{"lineNumber":141,"author":{"gitId":"sindhurajain"},"content":" assertTrue(parser.parseCommand(FilterMedPriorityCommand.COMMAND_WORD) instanceof FilterMedPriorityCommand);","lastModifiedDate":"2024-03-20"},{"lineNumber":142,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":143,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":145,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":150,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":151,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":154,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":155,"author":{"gitId":"FangRuoqing"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":156,"author":{"gitId":"FangRuoqing"},"content":" public void parseCommand_validStarCommand_returnsStarCommand() throws Exception {","lastModifiedDate":"2024-03-21"},{"lineNumber":157,"author":{"gitId":"FangRuoqing"},"content":" AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2024-03-21"},{"lineNumber":158,"author":{"gitId":"FangRuoqing"},"content":" String userInput \u003d \"star John Doe\";","lastModifiedDate":"2024-03-21"},{"lineNumber":159,"author":{"gitId":"FangRuoqing"},"content":" Command command \u003d parser.parseCommand(userInput);","lastModifiedDate":"2024-03-21"},{"lineNumber":160,"author":{"gitId":"FangRuoqing"},"content":" assertEquals(StarCommand.class, command.getClass());","lastModifiedDate":"2024-03-21"},{"lineNumber":161,"author":{"gitId":"FangRuoqing"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":162,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":163,"author":{"gitId":"FangRuoqing"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":164,"author":{"gitId":"FangRuoqing"},"content":" public void parseCommand_invalidCommand_throwsParseException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":165,"author":{"gitId":"FangRuoqing"},"content":" AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2024-03-21"},{"lineNumber":166,"author":{"gitId":"FangRuoqing"},"content":" String userInput \u003d \"invalid command\";","lastModifiedDate":"2024-03-21"},{"lineNumber":167,"author":{"gitId":"FangRuoqing"},"content":" assertThrows(ParseException.class, () -\u003e parser.parseCommand(userInput));","lastModifiedDate":"2024-03-21"},{"lineNumber":168,"author":{"gitId":"FangRuoqing"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":169,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"yapxuanxuan":18,"FangRuoqing":17,"sindhurajain":37,"-":97}},{"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":"sindhurajain"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-13"},{"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":"sindhurajain"},"content":" assertParseSuccess(parser, \"Alice Pauline\", new DeleteCommand(ALICE.getName().toString()));","lastModifiedDate":"2024-03-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":"sindhurajain"},"content":" assertParseFailure(parser, \"\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09"}],"authorContributionMap":{"sindhurajain":3,"-":29}},{"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":"-"},"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":"yapxuanxuan"},"content":" assertParseFailure(parser, \" \", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"yapxuanxuan"},"content":" FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsFindCommand() {","lastModifiedDate":"2017-08-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2017-06-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" FindCommand expectedFindCommand \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" new FindCommand(new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\")));","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, \"Alice Bob\", expectedFindCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2017-06-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, \" \\n Alice \\n \\t Bob \\t\", expectedFindCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-27"}],"authorContributionMap":{"yapxuanxuan":2,"-":33}},{"path":"src/test/java/seedu/address/logic/parser/FindCompanyCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yapxuanxuan"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"yapxuanxuan"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"yapxuanxuan"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"yapxuanxuan"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"yapxuanxuan"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"yapxuanxuan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.logic.commands.FindCompanyCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.model.person.CompanyContainsKeywordsPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"yapxuanxuan"},"content":"public class FindCompanyCommandParserTest {","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"yapxuanxuan"},"content":" private FindCompanyCommandParser parser \u003d new FindCompanyCommandParser();","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"yapxuanxuan"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"yapxuanxuan"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"yapxuanxuan"},"content":" assertParseFailure(parser, \" \", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"yapxuanxuan"},"content":" FindCompanyCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"yapxuanxuan"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"yapxuanxuan"},"content":" public void parse_validArgs_returnsFindCommand() {","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"yapxuanxuan"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"yapxuanxuan"},"content":" FindCompanyCommand expectedFindCompanyCommand \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"yapxuanxuan"},"content":" new FindCompanyCommand(new CompanyContainsKeywordsPredicate(Arrays.asList(\"Google\", \"Microsoft\")));","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"yapxuanxuan"},"content":" assertParseSuccess(parser, \"Google Microsoft\", expectedFindCompanyCommand);","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"yapxuanxuan"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"yapxuanxuan"},"content":" assertParseSuccess(parser, \" \\n Google \\n \\t Microsoft \\t\", expectedFindCompanyCommand);","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"yapxuanxuan"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"yapxuanxuan":35}},{"path":"src/test/java/seedu/address/logic/parser/StarCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"FangRuoqing"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"FangRuoqing"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"FangRuoqing"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"FangRuoqing"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"FangRuoqing"},"content":"public class StarCommandParserTest {","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"FangRuoqing"},"content":" private final StarCommandParser parser \u003d new StarCommandParser();","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"FangRuoqing"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"FangRuoqing"},"content":" public void parse_emptyInput_throwsParseException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"FangRuoqing"},"content":" // Arrange","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"FangRuoqing"},"content":" String userInput \u003d \"\";","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"FangRuoqing"},"content":" // Act and Assert","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"FangRuoqing"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(userInput));","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"FangRuoqing"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"FangRuoqing"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"FangRuoqing"},"content":" public void parse_nullInput_throwsNullPointerException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"FangRuoqing"},"content":" // Act and Assert","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"FangRuoqing"},"content":" assertThrows(NullPointerException.class, () -\u003e parser.parse(null));","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"FangRuoqing"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"FangRuoqing"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"FangRuoqing":28}},{"path":"src/test/java/seedu/address/model/person/AddressTest.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 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":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidAddress_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"tahnya"},"content":" String invalidAddress \u003d \" \";","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Address(invalidAddress));","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-13"},{"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":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // invalid addresses","lastModifiedDate":"2017-01-16"},{"lineNumber":28,"author":{"gitId":"tahnya"},"content":" assertFalse(Address.isValidAddress(\" \")); // spaces only","lastModifiedDate":"2024-03-13"},{"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":"tahnya"},"content":" assertTrue(Address.isValidAddress(\"\")); // empty address if not entered","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertTrue(Address.isValidAddress(\"Blk 456, Den Road, #01-355\"));","lastModifiedDate":"2017-01-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertTrue(Address.isValidAddress(\"-\")); // one character","lastModifiedDate":"2017-01-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertTrue(Address.isValidAddress(\"Leng Inc; 1234 Market St; San Francisco CA 2349879; USA\")); // long address","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" Address address \u003d new Address(\"Valid Address\");","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertTrue(address.equals(new Address(\"Valid Address\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(address.equals(address));","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(address.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(address.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertFalse(address.equals(new Address(\"Other Valid Address\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"tahnya":3,"-":54}},{"path":"src/test/java/seedu/address/model/person/CompanyContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yapxuanxuan"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"yapxuanxuan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"yapxuanxuan"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"yapxuanxuan"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"yapxuanxuan"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"yapxuanxuan"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"yapxuanxuan"},"content":"import java.util.List;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"yapxuanxuan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"yapxuanxuan"},"content":"public class CompanyContainsKeywordsPredicateTest {","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"yapxuanxuan"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"yapxuanxuan"},"content":" public void equals() {","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"yapxuanxuan"},"content":" List\u003cString\u003e firstPredicateKeywordList \u003d Collections.singletonList(\"first\");","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"yapxuanxuan"},"content":" List\u003cString\u003e secondPredicateKeywordList \u003d Arrays.asList(\"first\", \"second\");","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"yapxuanxuan"},"content":" CompanyContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"yapxuanxuan"},"content":" new CompanyContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"yapxuanxuan"},"content":" CompanyContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"yapxuanxuan"},"content":" new CompanyContainsKeywordsPredicate(secondPredicateKeywordList);","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"yapxuanxuan"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"yapxuanxuan"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"yapxuanxuan"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"yapxuanxuan"},"content":" CompanyContainsKeywordsPredicate firstPredicateCopy \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"yapxuanxuan"},"content":" new CompanyContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"yapxuanxuan"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"yapxuanxuan"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"yapxuanxuan"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"yapxuanxuan"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"yapxuanxuan"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"yapxuanxuan"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"yapxuanxuan"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"yapxuanxuan"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"yapxuanxuan"},"content":" public void test_nameContainsKeywords_returnsTrue() {","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"yapxuanxuan"},"content":" // One keyword","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"yapxuanxuan"},"content":" CompanyContainsKeywordsPredicate predicate \u003d new CompanyContainsKeywordsPredicate(","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"yapxuanxuan"},"content":" Collections.singletonList(\"TikTok\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"yapxuanxuan"},"content":" assertTrue(predicate.test(new PersonBuilder().withCompany(\"TikTok\").build()));","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"yapxuanxuan"},"content":" // Multiple keywords","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"yapxuanxuan"},"content":" predicate \u003d new CompanyContainsKeywordsPredicate(Arrays.asList(\"OCBC\", \"Bank\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"yapxuanxuan"},"content":" assertTrue(predicate.test(new PersonBuilder().withCompany(\"OCBC Bank\").build()));","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"yapxuanxuan"},"content":" // Only one matching keyword","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"yapxuanxuan"},"content":" predicate \u003d new CompanyContainsKeywordsPredicate(Arrays.asList(\"Microsoft\", \"Facebook\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"yapxuanxuan"},"content":" assertTrue(predicate.test(new PersonBuilder().withCompany(\"Microsoft\").build()));","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"yapxuanxuan"},"content":" // Mixed-case keyword","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"yapxuanxuan"},"content":" predicate \u003d new CompanyContainsKeywordsPredicate(Arrays.asList(\"gOOgle\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"yapxuanxuan"},"content":" assertTrue(predicate.test(new PersonBuilder().withCompany(\"Google\").build()));","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"yapxuanxuan"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"yapxuanxuan"},"content":" public void test_nameDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"yapxuanxuan"},"content":" // Zero keywords","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"yapxuanxuan"},"content":" CompanyContainsKeywordsPredicate predicate \u003d new CompanyContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"yapxuanxuan"},"content":" assertFalse(predicate.test(new PersonBuilder().withCompany(\"TikTok\").build()));","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"yapxuanxuan"},"content":" // Non-matching keyword","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"yapxuanxuan"},"content":" predicate \u003d new CompanyContainsKeywordsPredicate(Arrays.asList(\"Facebook\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"yapxuanxuan"},"content":" assertFalse(predicate.test(new PersonBuilder().withCompany(\"Google\").build()));","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"yapxuanxuan"},"content":" // Keywords match phone, email and address, but does not match name","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"yapxuanxuan"},"content":" predicate \u003d new CompanyContainsKeywordsPredicate(Arrays.asList(\"12345\", \"alice@email.com\", \"Main\", \"Street\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"yapxuanxuan"},"content":" assertFalse(predicate.test(new PersonBuilder().withCompany(\"TikTok\").withPhone(\"12345\")","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"yapxuanxuan"},"content":" .withEmail(\"alice@email.com\").withAddress(\"Main Street\").build()));","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"yapxuanxuan"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"yapxuanxuan"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"yapxuanxuan"},"content":" List\u003cString\u003e keywords \u003d List.of(\"keyword1\", \"keyword2\");","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"yapxuanxuan"},"content":" CompanyContainsKeywordsPredicate predicate \u003d new CompanyContainsKeywordsPredicate(keywords);","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"yapxuanxuan"},"content":" String expected \u003d CompanyContainsKeywordsPredicate.class.getCanonicalName() + \"{keywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"yapxuanxuan"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"yapxuanxuan"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"yapxuanxuan":89}},{"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":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidEmail_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"tahnya"},"content":" String invalidEmail \u003d \"email\";","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Email(invalidEmail));","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-13"},{"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":"tahnya"},"content":" assertFalse(Email.isValidEmail(\"randomtext\")); // not email format","lastModifiedDate":"2024-03-13"},{"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":"tahnya"},"content":" assertTrue(Email.isValidEmail(\"\")); // empty email if not entered","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack_1190@example.com\")); // underscore in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack.1190@example.com\")); // period in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack+1190@example.com\")); // \u0027+\u0027 symbol in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack-1190@example.com\")); // hyphen in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"a@bc\")); // minimal","lastModifiedDate":"2018-02-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"test@localhost\")); // alphabets only","lastModifiedDate":"2017-01-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"123@145\")); // numeric local part and domain name","lastModifiedDate":"2017-01-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"a1+be.d@example1.com\")); // mixture of alphanumeric and special characters","lastModifiedDate":"2021-07-20"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"peter_jack@very-very-very-long-example.com\")); // long domain name","lastModifiedDate":"2018-02-09"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"if.you.dream.it_you.can.do.it@example.com\")); // long local part","lastModifiedDate":"2017-04-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"e1234567@u.nus.edu\")); // more than one period in domain","lastModifiedDate":"2021-07-20"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" Email email \u003d new Email(\"valid@email\");","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertTrue(email.equals(new Email(\"valid@email\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertTrue(email.equals(email));","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertFalse(email.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertFalse(email.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertFalse(email.equals(new Email(\"other.valid@email\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"tahnya":3,"-":86}},{"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":"-"},"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":"-"},"content":" .withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2020-12-18"},{"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":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2018-04-18"},{"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":"-"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2019-02-23"},{"lineNumber":96,"author":{"gitId":"yapxuanxuan"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", address\u003d\" + ALICE.getAddress() + \", company\u003d\" + ALICE.getCompany()","lastModifiedDate":"2024-03-13"},{"lineNumber":97,"author":{"gitId":"FangRuoqing"},"content":" + \", priority\u003d\" + ALICE.getPriority() + \", starred\u003d\" + ALICE.isStarred()","lastModifiedDate":"2024-03-21"},{"lineNumber":98,"author":{"gitId":"FangRuoqing"},"content":" + \", tags\u003d\" + ALICE.getTags() + \"}\";","lastModifiedDate":"2024-03-21"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"yapxuanxuan":1,"FangRuoqing":2,"-":98}},{"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":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"yapxuanxuan"},"content":" private static final String VALID_GROUP \u003d BENSON.getCompany().toString();","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"sindhurajain"},"content":" private static final String VALID_PRIORITY \u003d BENSON.getPriority().toString();","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"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":"FangRuoqing"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"FangRuoqing"},"content":" VALID_GROUP, VALID_PRIORITY, false, VALID_TAGS);","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"yapxuanxuan"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"FangRuoqing"},"content":" VALID_GROUP, VALID_PRIORITY, false, VALID_TAGS);","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-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 toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"FangRuoqing"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"FangRuoqing"},"content":" VALID_GROUP, VALID_PRIORITY, false, VALID_TAGS);","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.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_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"yapxuanxuan"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-13"},{"lineNumber":72,"author":{"gitId":"FangRuoqing"},"content":" VALID_GROUP, VALID_PRIORITY, false, VALID_TAGS);","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"FangRuoqing"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"FangRuoqing"},"content":" VALID_GROUP, VALID_PRIORITY, false, VALID_TAGS);","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"yapxuanxuan"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null, VALID_ADDRESS,","lastModifiedDate":"2024-03-13"},{"lineNumber":89,"author":{"gitId":"FangRuoqing"},"content":" VALID_GROUP, VALID_PRIORITY, false, VALID_TAGS);","lastModifiedDate":"2024-03-21"},{"lineNumber":90,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"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":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"FangRuoqing"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_ADDRESS,","lastModifiedDate":"2024-03-21"},{"lineNumber":98,"author":{"gitId":"FangRuoqing"},"content":" VALID_GROUP, VALID_PRIORITY, false, VALID_TAGS);","lastModifiedDate":"2024-03-21"},{"lineNumber":99,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"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_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"yapxuanxuan"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, null,","lastModifiedDate":"2024-03-13"},{"lineNumber":106,"author":{"gitId":"FangRuoqing"},"content":" VALID_GROUP, VALID_PRIORITY, false, VALID_TAGS);","lastModifiedDate":"2024-03-21"},{"lineNumber":107,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"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 toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":116,"author":{"gitId":"FangRuoqing"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-21"},{"lineNumber":117,"author":{"gitId":"FangRuoqing"},"content":" VALID_GROUP, VALID_PRIORITY, false, invalidTags);","lastModifiedDate":"2024-03-21"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"yapxuanxuan":5,"FangRuoqing":14,"sindhurajain":2,"-":99}},{"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":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.model.person.Company;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"sindhurajain"},"content":"import seedu.address.model.person.Priority;","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05"},{"lineNumber":25,"author":{"gitId":"yapxuanxuan"},"content":" public static final String DEFAULT_COMPANY \u003d \"\";","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"sindhurajain"},"content":" public static final String DEFAULT_PRIORITY \u003d \"high\";","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"FangRuoqing"},"content":" public static final Boolean DEFAULT_STAR \u003d false;","lastModifiedDate":"2024-03-21"},{"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":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20"},{"lineNumber":33,"author":{"gitId":"yapxuanxuan"},"content":" private Company company;","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"sindhurajain"},"content":" private Priority priority;","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"FangRuoqing"},"content":" private Boolean starred;","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20"},{"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":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20"},{"lineNumber":46,"author":{"gitId":"yapxuanxuan"},"content":" company \u003d new Company(DEFAULT_COMPANY);","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"sindhurajain"},"content":" priority \u003d new Priority(DEFAULT_PRIORITY);","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"FangRuoqing"},"content":" starred \u003d DEFAULT_STAR;","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"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":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20"},{"lineNumber":60,"author":{"gitId":"yapxuanxuan"},"content":" company \u003d personToCopy.getCompany();","lastModifiedDate":"2024-03-13"},{"lineNumber":61,"author":{"gitId":"sindhurajain"},"content":" priority \u003d personToCopy.getPriority();","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"FangRuoqing"},"content":" starred \u003d personToCopy.isStarred();","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20"},{"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":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":84,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} 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":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":94,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20"},{"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":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":100,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":102,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20"},{"lineNumber":103,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":106,"author":{"gitId":"yapxuanxuan"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":107,"author":{"gitId":"yapxuanxuan"},"content":" * Sets the {@code Company} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-13"},{"lineNumber":108,"author":{"gitId":"yapxuanxuan"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":109,"author":{"gitId":"yapxuanxuan"},"content":" public PersonBuilder withCompany(String company) {","lastModifiedDate":"2024-03-13"},{"lineNumber":110,"author":{"gitId":"yapxuanxuan"},"content":" this.company \u003d new Company(company);","lastModifiedDate":"2024-03-13"},{"lineNumber":111,"author":{"gitId":"yapxuanxuan"},"content":" return this;","lastModifiedDate":"2024-03-13"},{"lineNumber":112,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":113,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":114,"author":{"gitId":"FangRuoqing"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":115,"author":{"gitId":"FangRuoqing"},"content":" * Sets the {@code Star} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-21"},{"lineNumber":116,"author":{"gitId":"FangRuoqing"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":117,"author":{"gitId":"FangRuoqing"},"content":" public PersonBuilder withStar(Boolean starred) {","lastModifiedDate":"2024-03-21"},{"lineNumber":118,"author":{"gitId":"FangRuoqing"},"content":" this.starred \u003d starred;","lastModifiedDate":"2024-03-21"},{"lineNumber":119,"author":{"gitId":"FangRuoqing"},"content":" return this;","lastModifiedDate":"2024-03-21"},{"lineNumber":120,"author":{"gitId":"FangRuoqing"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":121,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":122,"author":{"gitId":"sindhurajain"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":123,"author":{"gitId":"sindhurajain"},"content":" * Sets the {@code Priority} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-20"},{"lineNumber":124,"author":{"gitId":"sindhurajain"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":125,"author":{"gitId":"sindhurajain"},"content":" public PersonBuilder withPriority(String priority) {","lastModifiedDate":"2024-03-20"},{"lineNumber":126,"author":{"gitId":"sindhurajain"},"content":" this.priority \u003d new Priority(priority);","lastModifiedDate":"2024-03-20"},{"lineNumber":127,"author":{"gitId":"sindhurajain"},"content":" return this;","lastModifiedDate":"2024-03-20"},{"lineNumber":128,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":129,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":130,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05"},{"lineNumber":131,"author":{"gitId":"FangRuoqing"},"content":" return new Person(name, phone, email, address, company, priority, starred, tags);","lastModifiedDate":"2024-03-21"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":134,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03"}],"authorContributionMap":{"yapxuanxuan":13,"FangRuoqing":13,"sindhurajain":13,"-":95}},{"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":"FangRuoqing"},"content":" .withPhone(\"94351253\").withCompany(\"TikTok\").withPriority(\"high\").withStar(false)","lastModifiedDate":"2024-03-21"},{"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":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"FangRuoqing"},"content":" .withCompany(\"Google\").withPriority(\"med\").withStar(false)","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" .withTags(\"owesMoney\", \"friends\").build();","lastModifiedDate":"2016-09-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2018-01-10"},{"lineNumber":36,"author":{"gitId":"FangRuoqing"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\").withStar(false).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2018-01-10"},{"lineNumber":38,"author":{"gitId":"sindhurajain"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\")","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"FangRuoqing"},"content":" .withPriority(\"med\").withStar(false).withTags(\"friends\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2018-01-10"},{"lineNumber":41,"author":{"gitId":"FangRuoqing"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\").withStar(false).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2018-01-10"},{"lineNumber":43,"author":{"gitId":"FangRuoqing"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\").withStar(false).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2018-01-10"},{"lineNumber":45,"author":{"gitId":"FangRuoqing"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\").withStar(false).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2018-01-10"},{"lineNumber":49,"author":{"gitId":"FangRuoqing"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\").withStar(false).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2018-01-10"},{"lineNumber":51,"author":{"gitId":"FangRuoqing"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\").withStar(false).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2018-01-10"},{"lineNumber":55,"author":{"gitId":"FangRuoqing"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withStar(false)","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"FangRuoqing"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2018-01-10"},{"lineNumber":58,"author":{"gitId":"FangRuoqing"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withStar(false)","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"FangRuoqing"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2017-09-21"},{"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":"2017-07-20"},{"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":{"FangRuoqing":13,"sindhurajain":1,"-":66}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"sindhurajain"},"content":"[![CI Status](https://github.com/AY2324S2-CS2103T-F14-4/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S2-CS2103T-F14-4/tp/actions)","lastModifiedDate":"2024-03-06"},{"lineNumber":2,"author":{"gitId":"sindhurajain"},"content":"[![codecov](https://codecov.io/gh/AY2324S2-CS2103T-F14-4/tp/graph/badge.svg?token\u003d3BJBAZ63W8)](https://codecov.io/gh/AY2324S2-CS2103T-F14-4/tp)","lastModifiedDate":"2024-02-23"},{"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":"sindhurajain"},"content":"* This is a team project for our CS2103T Software Engineering class.","lastModifiedDate":"2024-03-06"},{"lineNumber":7,"author":{"gitId":"sindhurajain"},"content":"* Tailored specifically for computing students, our team project, Connectify, ","lastModifiedDate":"2024-03-06"},{"lineNumber":8,"author":{"gitId":"sindhurajain"},"content":"optimises networking for future career opportunities. Connectify seamlessly ","lastModifiedDate":"2024-03-06"},{"lineNumber":9,"author":{"gitId":"sindhurajain"},"content":"organises contact details, efficiently manages professional relationships ","lastModifiedDate":"2024-03-06"},{"lineNumber":10,"author":{"gitId":"sindhurajain"},"content":"and simplifies event and meeting planning. Designed for seamless usage via ","lastModifiedDate":"2024-03-06"},{"lineNumber":11,"author":{"gitId":"sindhurajain"},"content":"Command Line Interface (CLI), Connectify’s ease of use sets up computing ","lastModifiedDate":"2024-03-06"},{"lineNumber":12,"author":{"gitId":"sindhurajain"},"content":"students for success.","lastModifiedDate":"2024-03-06"},{"lineNumber":13,"author":{"gitId":"sindhurajain"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"sindhurajain":10,"-":3}},{"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":"sindhurajain"},"content":"### Sindhura Rajiv Jain","lastModifiedDate":"2024-03-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"sindhurajain"},"content":"\u003cimg src\u003d\"images/sindhurajain.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"sindhurajain"},"content":"[[github](https://github.com/sindhurajain)]","lastModifiedDate":"2024-03-07"},{"lineNumber":19,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"sindhurajain"},"content":"* Role: Scheduling and Tracking \u0026 Deliverables and Deadlines","lastModifiedDate":"2024-03-07"},{"lineNumber":22,"author":{"gitId":"sindhurajain"},"content":"* Responsibilities: UI","lastModifiedDate":"2024-03-07"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"tahnya"},"content":"### Neo Tahnya","lastModifiedDate":"2024-03-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"tahnya"},"content":"\u003cimg src\u003d\"images/tahnya.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-07"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"tahnya"},"content":"[[github](http://github.com/tahnya)]","lastModifiedDate":"2024-03-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"tahnya"},"content":"* Role: Documentation \u0026 Code Quality","lastModifiedDate":"2024-03-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":"* Responsibilities: UI","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"yapxuanxuan"},"content":"### Yap Xuan Xuan","lastModifiedDate":"2024-03-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"yapxuanxuan"},"content":"\u003cimg src\u003d\"images/yapxuanxuan.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"yapxuanxuan"},"content":"[[github](http://github.com/yapxuanxuan)] [[portfolio](team/johndoe.md)]","lastModifiedDate":"2024-03-06"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"yapxuanxuan"},"content":"* Role: Team Lead","lastModifiedDate":"2024-03-06"},{"lineNumber":41,"author":{"gitId":"-"},"content":"* Responsibilities: Data","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"FangRuoqing"},"content":"### Fang Ruoqing","lastModifiedDate":"2024-03-07"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"FangRuoqing"},"content":"\u003cimg src\u003d\"images/fangruoqing.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-07"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"FangRuoqing"},"content":"[[github](http://github.com/FangRuoqing)]","lastModifiedDate":"2024-03-07"},{"lineNumber":48,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"FangRuoqing"},"content":"* Role: Testing","lastModifiedDate":"2024-03-07"},{"lineNumber":51,"author":{"gitId":"FangRuoqing"},"content":"* Responsibilities: Test","lastModifiedDate":"2024-03-07"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"SamuelZero1"},"content":"### Zhou Yang","lastModifiedDate":"2024-03-07"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":55,"author":{"gitId":"SamuelZero1"},"content":"\u003cimg src\u003d\"images/samuelzero1.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-07"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":57,"author":{"gitId":"SamuelZero1"},"content":"[[github](http://github.com/SamuelZero1)] [[portfolio](team/johndoe.md)]","lastModifiedDate":"2024-03-07"},{"lineNumber":58,"author":{"gitId":"SamuelZero1"},"content":"* Role: Integration","lastModifiedDate":"2024-03-07"},{"lineNumber":59,"author":{"gitId":"SamuelZero1"},"content":"* Responsibilities: Integrate the software components","lastModifiedDate":"2024-03-07"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-07"}],"authorContributionMap":{"tahnya":4,"yapxuanxuan":4,"SamuelZero1":5,"FangRuoqing":5,"sindhurajain":5,"-":37}},{"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":"-"},"content":"# AB-3 Developer Guide","lastModifiedDate":"2023-09-12"},{"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":"-"},"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":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":"sindhurajain"},"content":"The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues the command `delete Alex Yeoh`.","lastModifiedDate":"2024-03-24"},{"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":"-"},"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":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":"-"},"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":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":"-"},"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":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":"sindhurajain"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"delete Alex Yeoh\")` API call as an example.","lastModifiedDate":"2024-03-24"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"sindhurajain"},"content":"\u003cpuml src\u003d\"diagrams/DeleteSequenceDiagram.puml\" alt\u003d\"Interactions Inside the Logic Component for the `delete Alex Yeoh` Command\" /\u003e","lastModifiedDate":"2024-03-24"},{"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 continues till 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).\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-02-09"},{"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":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12"},{"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":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"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":"2021-07-31"},{"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":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":133,"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":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":135,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"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":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"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":148,"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":149,"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":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","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":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"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":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"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":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"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":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"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":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"sindhurajain"},"content":"Step 2. The user executes `delete Bernice Yu` command to delete the person with the name \"Bernice Yu\" in the address book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete Bernice Yu` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state.","lastModifiedDate":"2024-03-24"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"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":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"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":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":191,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"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":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":198,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"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":201,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"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":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":213,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":217,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":219,"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":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":223,"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":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"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":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"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":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","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":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":264,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":265,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":266,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":267,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"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":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":277,"author":{"gitId":"FangRuoqing"},"content":"* **Manages a Substantial Contact Network:** Connectify\u0027s target users have a need to manage a significant number of contacts within their professional network.","lastModifiedDate":"2024-03-07"},{"lineNumber":278,"author":{"gitId":"FangRuoqing"},"content":"* **Prefers Desktop Applications:** These users prefer desktop applications over other types of software solutions.","lastModifiedDate":"2024-03-07"},{"lineNumber":279,"author":{"gitId":"FangRuoqing"},"content":"* **Proficient Typists:** Connectify\u0027s target users are proficient typists who can type quickly and accurately. They prefer typing over mouse interactions.","lastModifiedDate":"2024-03-07"},{"lineNumber":280,"author":{"gitId":"FangRuoqing"},"content":"* **Comfortable with Command-Line Interfaces (CLI):** While they may not be experts, Connectify\u0027s target users are reasonably comfortable using command-line interfaces (CLI) and appreciate the efficiency and control that CLI applications offer.","lastModifiedDate":"2024-03-07"},{"lineNumber":281,"author":{"gitId":"FangRuoqing"},"content":"* **Value Efficiency and Organization:** Connectify\u0027s target users value efficiency and organization in managing their professional contacts.","lastModifiedDate":"2024-03-07"},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":283,"author":{"gitId":"FangRuoqing"},"content":"**Value proposition**: Tailored specifically for computing students, our team project, Connectify, optimises networking for future career opportunities. Connectify seamlessly organises contact details, efficiently manages professional relationships and simplifies event and meeting planning. Designed for seamless usage via Command Line Interface (CLI), Connectify’s ease of use sets up computing students for success.","lastModifiedDate":"2024-03-07"},{"lineNumber":284,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":286,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":288,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":290,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":291,"author":{"gitId":"FangRuoqing"},"content":"|----------|-------------------|-----------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------|","lastModifiedDate":"2024-03-07"},{"lineNumber":292,"author":{"gitId":"FangRuoqing"},"content":"| `* * *` | user | add a new contact easily | |","lastModifiedDate":"2024-03-07"},{"lineNumber":293,"author":{"gitId":"FangRuoqing"},"content":"| `* * *` | user | edit the details that I’ve added | my application will contain the most updated and accurate information |","lastModifiedDate":"2024-03-07"},{"lineNumber":294,"author":{"gitId":"FangRuoqing"},"content":"| `* * *` | user | list all my contacts | remember whom I’ve met at a glance |","lastModifiedDate":"2024-03-07"},{"lineNumber":295,"author":{"gitId":"FangRuoqing"},"content":"| `* * *` | user | delete a contact | only keep those that are necessary |","lastModifiedDate":"2024-03-07"},{"lineNumber":296,"author":{"gitId":"FangRuoqing"},"content":"| `* *` | computing student | categorise the people I meet into interns, recruiters, alumni, students, professors, employees and others | remember the people whom I’ve met and easily find them again |","lastModifiedDate":"2024-03-07"},{"lineNumber":297,"author":{"gitId":"FangRuoqing"},"content":"| `* *` | computing student | search a contact using key word | find the contact quickly |","lastModifiedDate":"2024-03-07"},{"lineNumber":298,"author":{"gitId":"FangRuoqing"},"content":"| `* *` | user | differentiate which companies my professional contacts are from | know which company I am connecting with |","lastModifiedDate":"2024-03-07"},{"lineNumber":299,"author":{"gitId":"FangRuoqing"},"content":"| `* *` | computing student | assign priority levels to my contacts | prioritise certain contacts in my network who would be more beneficial for my career |","lastModifiedDate":"2024-03-07"},{"lineNumber":300,"author":{"gitId":"FangRuoqing"},"content":"| `*` | computing student | filter my contacts by priority | identify high-priority contacts at a glance |","lastModifiedDate":"2024-03-07"},{"lineNumber":301,"author":{"gitId":"FangRuoqing"},"content":"| `*` | user | have a \"favourites\" or \"star\" feature for important contacts | easily access them without scrolling through the entire list |","lastModifiedDate":"2024-03-07"},{"lineNumber":302,"author":{"gitId":"FangRuoqing"},"content":"| `*` | user | know the number of contacts quickly | get a sensing of how many people are in my network |","lastModifiedDate":"2024-03-07"},{"lineNumber":303,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":304,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":305,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":306,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":307,"author":{"gitId":"yapxuanxuan"},"content":"(For all use cases below, the **System** is the `Connectify` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2024-03-06"},{"lineNumber":308,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":309,"author":{"gitId":"yapxuanxuan"},"content":"**Use case: Add a contact**","lastModifiedDate":"2024-03-06"},{"lineNumber":310,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":311,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":312,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":313,"author":{"gitId":"yapxuanxuan"},"content":"1. User requests to add a contact","lastModifiedDate":"2024-03-06"},{"lineNumber":314,"author":{"gitId":"yapxuanxuan"},"content":"2. Connectify adds the person","lastModifiedDate":"2024-03-06"},{"lineNumber":315,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":316,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":317,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":318,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":320,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":321,"author":{"gitId":"yapxuanxuan"},"content":"* 1a. The given contact name is already in the contact list.","lastModifiedDate":"2024-03-06"},{"lineNumber":322,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":323,"author":{"gitId":"yapxuanxuan"},"content":" * 1a1. Connectify shows an error message and requests for the user to give a different contact name.","lastModifiedDate":"2024-03-06"},{"lineNumber":324,"author":{"gitId":"yapxuanxuan"},"content":" * 1a2. User enters new data.","lastModifiedDate":"2024-03-06"},{"lineNumber":325,"author":{"gitId":"yapxuanxuan"},"content":" * Steps 1a1-1a2 are repeated until the data entered is correct.","lastModifiedDate":"2024-03-06"},{"lineNumber":326,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":327,"author":{"gitId":"yapxuanxuan"},"content":" Use case resumes from step 2.","lastModifiedDate":"2024-03-06"},{"lineNumber":328,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":329,"author":{"gitId":"yapxuanxuan"},"content":"* 1b. Connectify detects an error in the entered data.","lastModifiedDate":"2024-03-06"},{"lineNumber":330,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":331,"author":{"gitId":"yapxuanxuan"},"content":" * 1b1. Connectify requests for the correct data.","lastModifiedDate":"2024-03-06"},{"lineNumber":332,"author":{"gitId":"yapxuanxuan"},"content":" * 1b2. User enters new data","lastModifiedDate":"2024-03-06"},{"lineNumber":333,"author":{"gitId":"yapxuanxuan"},"content":" * Steps 1b1-1b2 are repeated until the data entered is correct.","lastModifiedDate":"2024-03-06"},{"lineNumber":334,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":335,"author":{"gitId":"yapxuanxuan"},"content":" Use case resumes from step 2.","lastModifiedDate":"2024-03-06"},{"lineNumber":336,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":337,"author":{"gitId":"yapxuanxuan"},"content":"**Use case: Delete a contact**","lastModifiedDate":"2024-03-06"},{"lineNumber":338,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":339,"author":{"gitId":"yapxuanxuan"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":340,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":341,"author":{"gitId":"yapxuanxuan"},"content":"1. User requests to delete a specific person from the contact list","lastModifiedDate":"2024-03-06"},{"lineNumber":342,"author":{"gitId":"yapxuanxuan"},"content":"2. Connectify deletes the person","lastModifiedDate":"2024-03-06"},{"lineNumber":343,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":344,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":345,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":346,"author":{"gitId":"yapxuanxuan"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":347,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":348,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":349,"author":{"gitId":"yapxuanxuan"},"content":"* 1a. The given contact name is not in the contact list.","lastModifiedDate":"2024-03-06"},{"lineNumber":350,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":351,"author":{"gitId":"yapxuanxuan"},"content":" * 1a1. Connectify shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":352,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":353,"author":{"gitId":"yapxuanxuan"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-06"},{"lineNumber":354,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":355,"author":{"gitId":"yapxuanxuan"},"content":"**Use case: List contacts**","lastModifiedDate":"2024-03-06"},{"lineNumber":356,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":357,"author":{"gitId":"yapxuanxuan"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":358,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":359,"author":{"gitId":"yapxuanxuan"},"content":"1. User requests to list contacts","lastModifiedDate":"2024-03-06"},{"lineNumber":360,"author":{"gitId":"yapxuanxuan"},"content":"2. Connectify shows a list of contacts","lastModifiedDate":"2024-03-06"},{"lineNumber":361,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":362,"author":{"gitId":"yapxuanxuan"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":363,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":364,"author":{"gitId":"yapxuanxuan"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":365,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":366,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":367,"author":{"gitId":"yapxuanxuan"},"content":"* 1a. The list is empty.","lastModifiedDate":"2024-03-06"},{"lineNumber":368,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":369,"author":{"gitId":"yapxuanxuan"},"content":" * 1a1. Connectify shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":370,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":371,"author":{"gitId":"yapxuanxuan"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":372,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":373,"author":{"gitId":"yapxuanxuan"},"content":"**Use case: Edit contacts**","lastModifiedDate":"2024-03-06"},{"lineNumber":374,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":375,"author":{"gitId":"yapxuanxuan"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":376,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":377,"author":{"gitId":"yapxuanxuan"},"content":"1. User requests to edit a specific contact","lastModifiedDate":"2024-03-06"},{"lineNumber":378,"author":{"gitId":"yapxuanxuan"},"content":"2. Connectify edits the contact information and displays the full updated contact information","lastModifiedDate":"2024-03-06"},{"lineNumber":379,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":380,"author":{"gitId":"yapxuanxuan"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":381,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":382,"author":{"gitId":"yapxuanxuan"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":383,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":384,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":385,"author":{"gitId":"yapxuanxuan"},"content":"* 1a. The given contact name is not in the contact list.","lastModifiedDate":"2024-03-06"},{"lineNumber":386,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":387,"author":{"gitId":"yapxuanxuan"},"content":" * 1a1. Connectify shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":388,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":389,"author":{"gitId":"yapxuanxuan"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-06"},{"lineNumber":390,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":391,"author":{"gitId":"yapxuanxuan"},"content":"* 1b. Connectify detects an error in the entered data.","lastModifiedDate":"2024-03-06"},{"lineNumber":392,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":393,"author":{"gitId":"yapxuanxuan"},"content":" * 1b1. Connectify requests for the correct data.","lastModifiedDate":"2024-03-06"},{"lineNumber":394,"author":{"gitId":"yapxuanxuan"},"content":" * 1b2. User enters new data","lastModifiedDate":"2024-03-06"},{"lineNumber":395,"author":{"gitId":"yapxuanxuan"},"content":" * Steps 1b1-1b2 are repeated until the data entered is correct.","lastModifiedDate":"2024-03-06"},{"lineNumber":396,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":397,"author":{"gitId":"yapxuanxuan"},"content":" Use case resumes from step 2.","lastModifiedDate":"2024-03-06"},{"lineNumber":398,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":399,"author":{"gitId":"yapxuanxuan"},"content":"* 1c. The contact information to be updated is unchanged from the original.","lastModifiedDate":"2024-03-06"},{"lineNumber":400,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":401,"author":{"gitId":"yapxuanxuan"},"content":" * 1c1. Connectify shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":402,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":403,"author":{"gitId":"yapxuanxuan"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":404,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":405,"author":{"gitId":"yapxuanxuan"},"content":"**Use case: Categorize contacts**","lastModifiedDate":"2024-03-06"},{"lineNumber":406,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":407,"author":{"gitId":"yapxuanxuan"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":408,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":409,"author":{"gitId":"yapxuanxuan"},"content":"1. User requests to categorize a specific contact into a specific group name","lastModifiedDate":"2024-03-06"},{"lineNumber":410,"author":{"gitId":"yapxuanxuan"},"content":"2. Connectify adds the given category to the contact and displays the full updated contact information","lastModifiedDate":"2024-03-06"},{"lineNumber":411,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":412,"author":{"gitId":"yapxuanxuan"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":413,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":414,"author":{"gitId":"yapxuanxuan"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":415,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":416,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":417,"author":{"gitId":"yapxuanxuan"},"content":"* 1a. The given contact name is not in the contact list.","lastModifiedDate":"2024-03-06"},{"lineNumber":418,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":419,"author":{"gitId":"yapxuanxuan"},"content":" * 1a1. Connectify shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":420,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":421,"author":{"gitId":"yapxuanxuan"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-06"},{"lineNumber":422,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":423,"author":{"gitId":"yapxuanxuan"},"content":"* 1b. The contact already has an existing category","lastModifiedDate":"2024-03-06"},{"lineNumber":424,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":425,"author":{"gitId":"yapxuanxuan"},"content":" * 1b1. Connectify informs the user the category that the contact currently is under and requests for confirmation","lastModifiedDate":"2024-03-06"},{"lineNumber":426,"author":{"gitId":"yapxuanxuan"},"content":" to update the current category to the newly given one.","lastModifiedDate":"2024-03-06"},{"lineNumber":427,"author":{"gitId":"yapxuanxuan"},"content":" * 1b2a. User confirms the update.","lastModifiedDate":"2024-03-06"},{"lineNumber":428,"author":{"gitId":"yapxuanxuan"},"content":" * 1b2a1. Connectify updates the current category of the given contact to the new one.","lastModifiedDate":"2024-03-06"},{"lineNumber":429,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":430,"author":{"gitId":"yapxuanxuan"},"content":" Use Case ends","lastModifiedDate":"2024-03-06"},{"lineNumber":431,"author":{"gitId":"yapxuanxuan"},"content":" * 1b2b. User cancels the update.","lastModifiedDate":"2024-03-06"},{"lineNumber":432,"author":{"gitId":"yapxuanxuan"},"content":" * 1b2b1. Connectify does not update the information.","lastModifiedDate":"2024-03-06"},{"lineNumber":433,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":434,"author":{"gitId":"yapxuanxuan"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":435,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":436,"author":{"gitId":"yapxuanxuan"},"content":"**Use case: Tag contacts with their company\u0027s name**","lastModifiedDate":"2024-03-06"},{"lineNumber":437,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":438,"author":{"gitId":"yapxuanxuan"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":439,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":440,"author":{"gitId":"yapxuanxuan"},"content":"1. User requests to tag a specific contact with a specific company\u0027s name","lastModifiedDate":"2024-03-06"},{"lineNumber":441,"author":{"gitId":"yapxuanxuan"},"content":"2. Connectify adds the company\u0027s name tag to the contact and displays the full updated contact information","lastModifiedDate":"2024-03-06"},{"lineNumber":442,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":443,"author":{"gitId":"yapxuanxuan"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":444,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":445,"author":{"gitId":"yapxuanxuan"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":446,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":447,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":448,"author":{"gitId":"yapxuanxuan"},"content":"* 1a. The given contact name is not in the contact list.","lastModifiedDate":"2024-03-06"},{"lineNumber":449,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":450,"author":{"gitId":"yapxuanxuan"},"content":" * 1a1. Connectify shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":451,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":452,"author":{"gitId":"yapxuanxuan"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-06"},{"lineNumber":453,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":454,"author":{"gitId":"yapxuanxuan"},"content":"* 1b. The contact already has an existing company tag.","lastModifiedDate":"2024-03-06"},{"lineNumber":455,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":456,"author":{"gitId":"yapxuanxuan"},"content":" * 1b1. Connectify informs the user the company tag that the contact currently has and requests for confirmation","lastModifiedDate":"2024-03-06"},{"lineNumber":457,"author":{"gitId":"yapxuanxuan"},"content":" to update the current company tag to the newly given one.","lastModifiedDate":"2024-03-06"},{"lineNumber":458,"author":{"gitId":"yapxuanxuan"},"content":" * 1b2a. User confirms the update.","lastModifiedDate":"2024-03-06"},{"lineNumber":459,"author":{"gitId":"yapxuanxuan"},"content":" * 1b2a1. Connectify updates the current company tag of the given contact to the new one.","lastModifiedDate":"2024-03-06"},{"lineNumber":460,"author":{"gitId":"yapxuanxuan"},"content":" ","lastModifiedDate":"2024-03-06"},{"lineNumber":461,"author":{"gitId":"yapxuanxuan"},"content":" Use Case ends","lastModifiedDate":"2024-03-06"},{"lineNumber":462,"author":{"gitId":"yapxuanxuan"},"content":" * 1b2b. User cancels the update.","lastModifiedDate":"2024-03-06"},{"lineNumber":463,"author":{"gitId":"yapxuanxuan"},"content":" * 1b2b1. Connectify does not update the information.","lastModifiedDate":"2024-03-06"},{"lineNumber":464,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":465,"author":{"gitId":"yapxuanxuan"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":466,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":467,"author":{"gitId":"yapxuanxuan"},"content":"**Use case: Assign priorities to contacts**","lastModifiedDate":"2024-03-06"},{"lineNumber":468,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":469,"author":{"gitId":"yapxuanxuan"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":470,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":471,"author":{"gitId":"yapxuanxuan"},"content":"1. User requests to assign a specific contact with low/medium/high priority","lastModifiedDate":"2024-03-06"},{"lineNumber":472,"author":{"gitId":"yapxuanxuan"},"content":"2. Connectify adds the given priority to the contact and displays the full updated contact information","lastModifiedDate":"2024-03-06"},{"lineNumber":473,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":474,"author":{"gitId":"yapxuanxuan"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":475,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":476,"author":{"gitId":"yapxuanxuan"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":477,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":478,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":479,"author":{"gitId":"yapxuanxuan"},"content":"* 1a. The given contact name is not in the contact list.","lastModifiedDate":"2024-03-06"},{"lineNumber":480,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":481,"author":{"gitId":"yapxuanxuan"},"content":" * 1a1. Connectify shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":482,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":483,"author":{"gitId":"yapxuanxuan"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-06"},{"lineNumber":484,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":485,"author":{"gitId":"yapxuanxuan"},"content":"* 1b. The contact already has an existing priority label.","lastModifiedDate":"2024-03-06"},{"lineNumber":486,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":487,"author":{"gitId":"yapxuanxuan"},"content":" * 1b1. Connectify informs the user the priority label that the contact currently has and requests for confirmation","lastModifiedDate":"2024-03-06"},{"lineNumber":488,"author":{"gitId":"yapxuanxuan"},"content":" to update the current priority level to the newly given one.","lastModifiedDate":"2024-03-06"},{"lineNumber":489,"author":{"gitId":"yapxuanxuan"},"content":" * 1b2a. User confirms the update.","lastModifiedDate":"2024-03-06"},{"lineNumber":490,"author":{"gitId":"yapxuanxuan"},"content":" * 1b2a1. Connectify updates the current priority label of the given contact to the new one.","lastModifiedDate":"2024-03-06"},{"lineNumber":491,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":492,"author":{"gitId":"yapxuanxuan"},"content":" Use Case ends","lastModifiedDate":"2024-03-06"},{"lineNumber":493,"author":{"gitId":"yapxuanxuan"},"content":" * 1b2b. User cancels the update.","lastModifiedDate":"2024-03-06"},{"lineNumber":494,"author":{"gitId":"yapxuanxuan"},"content":" * 1b2b1. Connectify does not update the information.","lastModifiedDate":"2024-03-06"},{"lineNumber":495,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":496,"author":{"gitId":"yapxuanxuan"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":497,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":498,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":499,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":500,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":501,"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":502,"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":503,"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":504,"author":{"gitId":"SamuelZero1"},"content":"4. The application should implement certain security measures to protect the users\u0027 private contact details from unauthorized access. This includes the encryption of sensitive data and preventing unauthorized access to the application\u0027s database.","lastModifiedDate":"2024-03-07"},{"lineNumber":505,"author":{"gitId":"SamuelZero1"},"content":"5. The application should be convenient enough for the users(including those that are disabled).","lastModifiedDate":"2024-03-07"},{"lineNumber":506,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":507,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":508,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09"},{"lineNumber":509,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23"},{"lineNumber":510,"author":{"gitId":"SamuelZero1"},"content":"* **Favorites**: The users can mark some users as favorites. This will increase the user’s efficiency when finding the people they like to contact","lastModifiedDate":"2024-03-07"},{"lineNumber":511,"author":{"gitId":"SamuelZero1"},"content":"* **Tags**: The users can classify different contacts as from different groupings","lastModifiedDate":"2024-03-07"},{"lineNumber":512,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":513,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":514,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":515,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":516,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":517,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":518,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":519,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":520,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12"},{"lineNumber":521,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":522,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":523,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":524,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":525,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":526,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":527,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":528,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":529,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":530,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":531,"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":532,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":533,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":534,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":535,"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":536,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":537,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":538,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":539,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":540,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":541,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":542,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":543,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":544,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":545,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":546,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":547,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":548,"author":{"gitId":"sindhurajain"},"content":" 1. Test case: `delete Alex Yeoh`\u003cbr\u003e","lastModifiedDate":"2024-03-24"},{"lineNumber":549,"author":{"gitId":"sindhurajain"},"content":" Expected: Contact with the name \"Alex Yeoh\" is deleted from the list. Details of the deleted contact shown in the status message. Timestamp in the status bar is updated.","lastModifiedDate":"2024-03-24"},{"lineNumber":550,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":551,"author":{"gitId":"sindhurajain"},"content":" 1. Test case: `delete`\u003cbr\u003e","lastModifiedDate":"2024-03-24"},{"lineNumber":552,"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":553,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":554,"author":{"gitId":"sindhurajain"},"content":" 1. Other incorrect delete commands to try: `delete 0`, `delete 1`, `delete x`, `...` (where x is an integer)\u003cbr\u003e","lastModifiedDate":"2024-03-24"},{"lineNumber":555,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":556,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":557,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":558,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":559,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":560,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":561,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":562,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":563,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":564,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":565,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"yapxuanxuan":172,"SamuelZero1":4,"FangRuoqing":18,"sindhurajain":8,"-":363}},{"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":"yapxuanxuan"},"content":"# Connectify User Guide","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"yapxuanxuan"},"content":"Connectify is a **desktop app for managing contacts, optimized for use via a Command Line Interface** (CLI) ","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"yapxuanxuan"},"content":"while still having the benefits of a Graphical User Interface (GUI). If you can type fast, Connectify can get your ","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"yapxuanxuan"},"content":"contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12"},{"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":"## Quick start","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"1. Ensure you have Java `11` or above installed in your Computer.","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"1. Download the latest `addressbook.jar` from [here](https://github.com/se-edu/addressbook-level3/releases).","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"yapxuanxuan"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your Connectify application.","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar addressbook.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2023-01-01"},{"lineNumber":27,"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":28,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"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":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":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"yapxuanxuan"},"content":" * `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01` : Adds a contact named `John Doe` ","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"yapxuanxuan"},"content":" to Connectify.","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"yapxuanxuan"},"content":" * `delete John Doe` : Deletes the contact with the specified contact name.","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"yapxuanxuan"},"content":" ","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"yapxuanxuan"},"content":" * `edit John Doe n/John Tan` : edits the name attribute of the contact of `John Doe` to `John Tan`","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","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":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"**Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"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":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"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":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"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":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"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":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"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":69,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":71,"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":72,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"Format: `help`","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":"### Adding a person: `add`","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"Adds a person to the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​`","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":91,"author":{"gitId":"-"},"content":"**Tip:** A person can have any number of tags (including 0)","lastModifiedDate":"2023-09-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"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":96,"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":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"### Listing all persons : `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"Shows a list of all persons in the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":"### Editing a person : `edit`","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":"Edits an existing person in the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"yapxuanxuan"},"content":"Format: `edit NAME [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`","lastModifiedDate":"2024-03-12"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"yapxuanxuan"},"content":"* Edits the contact with the specified `NAME`. The specified `NAME` of the contact to edit is case-insensitive. ","lastModifiedDate":"2024-03-12"},{"lineNumber":111,"author":{"gitId":"yapxuanxuan"},"content":" e.g `edit John Doe n/John` is the same as `edit john doe n/John`","lastModifiedDate":"2024-03-12"},{"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":"yapxuanxuan"},"content":"* `edit John Doe p/91234567 e/johndoe@example.com` Edits the phone number and email address of the contact named ","lastModifiedDate":"2024-03-12"},{"lineNumber":120,"author":{"gitId":"yapxuanxuan"},"content":" `John Doe` to be `91234567` and `johndoe@example.com` respectively.","lastModifiedDate":"2024-03-12"},{"lineNumber":121,"author":{"gitId":"yapxuanxuan"},"content":"* `edit Betsy n/Betsy Crower t/` Edits the name of the contact named `Betsy` to be `Betsy Crower` and clears all ","lastModifiedDate":"2024-03-12"},{"lineNumber":122,"author":{"gitId":"yapxuanxuan"},"content":" existing tags.","lastModifiedDate":"2024-03-12"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"### Locating persons by name: `find`","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"Finds persons whose names contain any of the given keywords.","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"* `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"Deletes the specified person from the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"yapxuanxuan"},"content":"Format: `delete NAME`","lastModifiedDate":"2024-03-12"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":148,"author":{"gitId":"yapxuanxuan"},"content":"* Deletes the contact with the specified `NAME`. The specified `NAME` of the contact to delete is case-insensitive.","lastModifiedDate":"2024-03-12"},{"lineNumber":149,"author":{"gitId":"yapxuanxuan"},"content":" e.g `delete John Doe` is the same as `delete john doe`","lastModifiedDate":"2024-03-12"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":151,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2024-03-12"},{"lineNumber":152,"author":{"gitId":"yapxuanxuan"},"content":"* `delete Betsy` deletes the contact with the contact name `Betsy` in the address book.","lastModifiedDate":"2024-03-12"},{"lineNumber":153,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":154,"author":{"gitId":"yapxuanxuan"},"content":"### Adding a company tag to a person : `co`","lastModifiedDate":"2024-03-21"},{"lineNumber":155,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":156,"author":{"gitId":"yapxuanxuan"},"content":"Adds the specified company tag name to the specified contact.","lastModifiedDate":"2024-03-21"},{"lineNumber":157,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":158,"author":{"gitId":"yapxuanxuan"},"content":"Format: `co NAME c/COMPANY_NAME`","lastModifiedDate":"2024-03-21"},{"lineNumber":159,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":160,"author":{"gitId":"yapxuanxuan"},"content":"* Adds the company tag to the person\u0027s contact. The specified `NAME` of the contact to add the company tag is ","lastModifiedDate":"2024-03-21"},{"lineNumber":161,"author":{"gitId":"yapxuanxuan"},"content":"case-insensitive. e.g `co John Doe c/TikTok` is the same as `co john doe c/TikTok`","lastModifiedDate":"2024-03-21"},{"lineNumber":162,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":163,"author":{"gitId":"yapxuanxuan"},"content":"Examples:","lastModifiedDate":"2024-03-12"},{"lineNumber":164,"author":{"gitId":"yapxuanxuan"},"content":"* `co Betsy c/Google` adds the company tag `Google` to the contact name `Betsy` in the address book.","lastModifiedDate":"2024-03-21"},{"lineNumber":165,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":166,"author":{"gitId":"yapxuanxuan"},"content":"### Assigning priority level to a contact : `pr/PRIORITY_LEVEL`","lastModifiedDate":"2024-03-21"},{"lineNumber":167,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":168,"author":{"gitId":"yapxuanxuan"},"content":"Assigns the specified priority level to the specified contact.","lastModifiedDate":"2024-03-21"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"yapxuanxuan"},"content":"Format: `pr/PRIORITY_LEVEL NAME`","lastModifiedDate":"2024-03-21"},{"lineNumber":171,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":172,"author":{"gitId":"yapxuanxuan"},"content":"* Assigns the specified priority level to the person\u0027s contact. The specified `NAME` of the contact to assign the ","lastModifiedDate":"2024-03-21"},{"lineNumber":173,"author":{"gitId":"yapxuanxuan"},"content":"priority level is case-insensitive. e.g `pr/high Alex Tan` is the same as `pr/high alex tan`","lastModifiedDate":"2024-03-21"},{"lineNumber":174,"author":{"gitId":"yapxuanxuan"},"content":"* Acceptable values for PRIORITY_LEVEL are `high` and `med`.","lastModifiedDate":"2024-03-21"},{"lineNumber":175,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":176,"author":{"gitId":"yapxuanxuan"},"content":"Examples:","lastModifiedDate":"2024-03-21"},{"lineNumber":177,"author":{"gitId":"yapxuanxuan"},"content":"* `pr/high Alex Tan` assigns `HIGH` priority level to the contact name `Alex Tan` in the address book.","lastModifiedDate":"2024-03-21"},{"lineNumber":178,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":179,"author":{"gitId":"yapxuanxuan"},"content":"### Filtering contacts by priority : `filter-PRIORITY_LEVEL`","lastModifiedDate":"2024-03-21"},{"lineNumber":180,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":181,"author":{"gitId":"yapxuanxuan"},"content":"Filters the contacts in the address book by the specified priority level.","lastModifiedDate":"2024-03-12"},{"lineNumber":182,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":183,"author":{"gitId":"yapxuanxuan"},"content":"Format: `filter-PRIORITY_LEVEL`","lastModifiedDate":"2024-03-21"},{"lineNumber":184,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":185,"author":{"gitId":"yapxuanxuan"},"content":"Examples:","lastModifiedDate":"2024-03-12"},{"lineNumber":186,"author":{"gitId":"yapxuanxuan"},"content":"* `filter-high` returns a list of contacts with priority assigned as `high`.","lastModifiedDate":"2024-03-21"},{"lineNumber":187,"author":{"gitId":"yapxuanxuan"},"content":"* `filter-med` returns a list of contacts with priority assigned as `med`.","lastModifiedDate":"2024-03-21"},{"lineNumber":188,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":189,"author":{"gitId":"yapxuanxuan"},"content":"### Getting the number of contacts : `count`","lastModifiedDate":"2024-03-21"},{"lineNumber":190,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":191,"author":{"gitId":"yapxuanxuan"},"content":"Counts the number of contacts in the address book.","lastModifiedDate":"2024-03-21"},{"lineNumber":192,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":193,"author":{"gitId":"yapxuanxuan"},"content":"Format: `count`","lastModifiedDate":"2024-03-21"},{"lineNumber":194,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":195,"author":{"gitId":"yapxuanxuan"},"content":"### Starring a contact : `star`","lastModifiedDate":"2024-03-12"},{"lineNumber":196,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":197,"author":{"gitId":"yapxuanxuan"},"content":"Stars the specified contact in the address book.","lastModifiedDate":"2024-03-12"},{"lineNumber":198,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":199,"author":{"gitId":"yapxuanxuan"},"content":"Format: `star NAME`","lastModifiedDate":"2024-03-12"},{"lineNumber":200,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":201,"author":{"gitId":"yapxuanxuan"},"content":"* Stars the contact with the specified `NAME`. The specified `NAME` of the contact to star is case-insensitive.","lastModifiedDate":"2024-03-12"},{"lineNumber":202,"author":{"gitId":"yapxuanxuan"},"content":" e.g `star John Doe` is the same as `star john doe`","lastModifiedDate":"2024-03-12"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"yapxuanxuan"},"content":"* `star Betsy` stars the contact with the contact name `Betsy` in the address book.","lastModifiedDate":"2024-03-12"},{"lineNumber":206,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":207,"author":{"gitId":"yapxuanxuan"},"content":"### Undoing the last command : `undo`","lastModifiedDate":"2024-03-12"},{"lineNumber":208,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":209,"author":{"gitId":"yapxuanxuan"},"content":"Undoes the most recent add command by removing the most recently added contact.","lastModifiedDate":"2024-03-12"},{"lineNumber":210,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":211,"author":{"gitId":"yapxuanxuan"},"content":"Format: `undo`","lastModifiedDate":"2024-03-12"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"Clears all entries from the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"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":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"yapxuanxuan"},"content":"The address book data is saved in the hard disk automatically after any command that changes the data. There is no need to save manually.","lastModifiedDate":"2024-03-12"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":231,"author":{"gitId":"yapxuanxuan"},"content":"The address book data is 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":"2024-03-12"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":233,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":235,"author":{"gitId":"-"},"content":"**Caution:**","lastModifiedDate":"2023-09-12"},{"lineNumber":236,"author":{"gitId":"yapxuanxuan"},"content":"If your changes to the data file makes its format invalid, Connectify 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.\u003cbr\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":237,"author":{"gitId":"yapxuanxuan"},"content":"Furthermore, certain edits can cause Connectify to behave in unexpected ways (e.g., if a value entered is outside the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.","lastModifiedDate":"2024-03-12"},{"lineNumber":238,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":240,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04"},{"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":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"yapxuanxuan"},"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 Connectify home folder.","lastModifiedDate":"2024-03-12"},{"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":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":255,"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":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":257,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":259,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23"},{"lineNumber":262,"author":{"gitId":"yapxuanxuan"},"content":"-----------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-03-21"},{"lineNumber":263,"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":264,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"yapxuanxuan"},"content":"**Delete** | `delete NAME`\u003cbr\u003e e.g., `delete John Doe`","lastModifiedDate":"2024-03-12"},{"lineNumber":266,"author":{"gitId":"yapxuanxuan"},"content":"**Edit** | `edit NAME [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`\u003cbr\u003e e.g.,`edit James n/James Lee e/jameslee@example.com`","lastModifiedDate":"2024-03-12"},{"lineNumber":267,"author":{"gitId":"-"},"content":"**Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake`","lastModifiedDate":"2020-05-23"},{"lineNumber":268,"author":{"gitId":"yapxuanxuan"},"content":"**Add Company Tag** | `co NAME c/COMPANY_NAME`\u003cbr\u003e e.g., `co James Doe c/TikTok`","lastModifiedDate":"2024-03-21"},{"lineNumber":269,"author":{"gitId":"yapxuanxuan"},"content":"**Assign Priority** | `pr/PRIORITY_LEVEL NAME`\u003cbr\u003e e.g., `pr/high Alex Tan`","lastModifiedDate":"2024-03-21"},{"lineNumber":270,"author":{"gitId":"yapxuanxuan"},"content":"**Filter** | `filter-PRIORITY_LEVEL`\u003cbr\u003e e.g., `filter-high`","lastModifiedDate":"2024-03-21"},{"lineNumber":271,"author":{"gitId":"yapxuanxuan"},"content":"**Count** | `count`","lastModifiedDate":"2024-03-12"},{"lineNumber":272,"author":{"gitId":"yapxuanxuan"},"content":"**Star** | `star NAME`\u003cbr\u003e e.g., `star John Doe`","lastModifiedDate":"2024-03-12"},{"lineNumber":273,"author":{"gitId":"yapxuanxuan"},"content":"**Undo** | `undo`","lastModifiedDate":"2024-03-12"},{"lineNumber":274,"author":{"gitId":"-"},"content":"**List** | `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"yapxuanxuan":91,"-":184}},{"path":"docs/_markbind/layouts/default.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003chead-bottom\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003clink rel\u003d\"stylesheet\" href\u003d\"{{baseUrl}}/stylesheets/main.css\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c/head-bottom\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003cheader sticky\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cnavbar type\u003d\"dark\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"sindhurajain"},"content":" \u003ca slot\u003d\"brand\" href\u003d\"{{baseUrl}}/index.html\" title\u003d\"Home\" class\u003d\"navbar-brand\"\u003eConnectify\u003c/a\u003e","lastModifiedDate":"2024-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/index.html\" class\u003d\"nav-link\"\u003eHome\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/UserGuide.html\" class\u003d\"nav-link\"\u003eUser Guide\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/DeveloperGuide.html\" class\u003d\"nav-link\"\u003eDeveloper Guide\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/AboutUs.html\" class\u003d\"nav-link\"\u003eAbout Us\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"https://github.com/se-edu/addressbook-level3\" target\u003d\"_blank\" class\u003d\"nav-link\"\u003e\u003cmd\u003e:fab-github:\u003c/md\u003e\u003c/a\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cli slot\u003d\"right\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cform class\u003d\"navbar-form\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003csearchbar :data\u003d\"searchData\" placeholder\u003d\"Search\" :on-hit\u003d\"searchCallback\" menu-align-right\u003e\u003c/searchbar\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/form\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/navbar\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"\u003c/header\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"flex-body\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"site-nav\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"site-nav-top\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"fw-bold mb-2\" style\u003d\"font-size: 1.25rem;\"\u003eSite Map\u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003csite-nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"* [Home]({{ baseUrl }}/index.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"* [User Guide]({{ baseUrl }}/UserGuide.html) :expanded:","lastModifiedDate":"2023-09-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * [Quick Start]({{ baseUrl }}/UserGuide.html#quick-start)","lastModifiedDate":"2023-09-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * [Features]({{ baseUrl }}/UserGuide.html#features)","lastModifiedDate":"2023-09-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * [FAQ]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * [Command Summary]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":"* [Developer Guide]({{ baseUrl }}/DeveloperGuide.html) :expanded:","lastModifiedDate":"2023-09-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * [Acknowledgements]({{ baseUrl }}/DeveloperGuide.html#acknowledgements)","lastModifiedDate":"2023-09-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * [Setting Up]({{ baseUrl }}/DeveloperGuide.html#setting-up-getting-started)","lastModifiedDate":"2023-09-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * [Design]({{ baseUrl }}/DeveloperGuide.html#design)","lastModifiedDate":"2023-09-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * [Implementation]({{ baseUrl }}/DeveloperGuide.html#implementation)","lastModifiedDate":"2023-09-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * [Documentation, logging, testing, configuration, dev-ops]({{ baseUrl }}/DeveloperGuide.html#documentation-logging-testing-configuration-dev-ops)","lastModifiedDate":"2023-09-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * [Appendix: Requirements]({{ baseUrl }}/DeveloperGuide.html#appendix-requirements)","lastModifiedDate":"2023-09-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * [Appendix: Instructions for manual testing]({{ baseUrl }}/DeveloperGuide.html#appendix-instructions-for-manual-testing)","lastModifiedDate":"2023-09-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":"* Tutorials","lastModifiedDate":"2023-09-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * [Tracing code]({{ baseUrl }}/tutorials/TracingCode.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * [Adding a command]({{ baseUrl }}/tutorials/AddRemark.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * [Removing Fields]({{ baseUrl }}/tutorials/RemovingFields.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [About Us]({{ baseUrl }}/AboutUs.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/site-nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cdiv id\u003d\"content-wrapper\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" {{ content }}","lastModifiedDate":"2023-09-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"page-nav\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cpage-nav /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003cscroll-top-button\u003e\u003c/scroll-top-button\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":"\u003cfooter\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003c!-- Support MarkBind by including a link to us on your landing page! --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"text-center\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u003csmall\u003e[\u003cmd\u003e**Powered by**\u003c/md\u003e \u003cimg src\u003d\"https://markbind.org/favicon.ico\" width\u003d\"30\"\u003e {{MarkBind}}, generated on {{timestamp}}]\u003c/small\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003c/footer\u003e","lastModifiedDate":"2023-09-12"}],"authorContributionMap":{"sindhurajain":1,"-":66}},{"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":"sindhurajain"},"content":"user -[USER_COLOR]\u003e ui : \"delete Alex Yeoh\"","lastModifiedDate":"2024-03-24"},{"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":"sindhurajain"},"content":"ui -[UI_COLOR]\u003e logic : execute(\"delete Alex Yeoh\")","lastModifiedDate":"2024-03-24"},{"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":"-"},"content":"logic -[LOGIC_COLOR]\u003e model : deletePerson(p)","lastModifiedDate":"2019-07-03"},{"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":{"sindhurajain":2,"-":37}},{"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":"-"},"content":"AddressBook *-right-\u003e \"1\" UniquePersonList","lastModifiedDate":"2019-07-30"},{"lineNumber":8,"author":{"gitId":"-"},"content":"AddressBook *-right-\u003e \"1\" UniqueTagList","lastModifiedDate":"2019-07-30"},{"lineNumber":9,"author":{"gitId":"-"},"content":"UniqueTagList -[hidden]down- UniquePersonList","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"UniqueTagList -[hidden]down- UniquePersonList","lastModifiedDate":"2019-07-03"},{"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":"-"},"content":"UniquePersonList -right-\u003e Person","lastModifiedDate":"2021-07-31"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"Person -up-\u003e \"*\" Tag","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Person *--\u003e Name","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Person *--\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Person *--\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Person *--\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"yapxuanxuan"},"content":"Person *--\u003e Company","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"sindhurajain"},"content":"Person *--\u003e Priority","lastModifiedDate":"2024-03-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"yapxuanxuan":1,"sindhurajain":1,"-":21}},{"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 \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-02-09"},{"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 \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-02-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"sindhurajain"},"content":"[-\u003e LogicManager : execute(\"delete Alex Yeoh\")","lastModifiedDate":"2024-03-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"activate LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"sindhurajain"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"delete Alex Yeoh\")","lastModifiedDate":"2024-03-24"},{"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":"sindhurajain"},"content":"AddressBookParser -\u003e DeleteCommandParser : parse(\"Alex Yeoh\")","lastModifiedDate":"2024-03-24"},{"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 :","lastModifiedDate":"2024-02-09"},{"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(m)","lastModifiedDate":"2024-02-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":"activate DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":52,"author":{"gitId":"sindhurajain"},"content":"DeleteCommand -\u003e Model : deletePerson(\"Alex Yeoh\")","lastModifiedDate":"2024-03-24"},{"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 : r","lastModifiedDate":"2024-02-09"},{"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":{"sindhurajain":4,"-":66}},{"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":"-"},"content":"Class UniquePersonList","lastModifiedDate":"2021-07-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Class Person","lastModifiedDate":"2019-07-03"},{"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":"-"},"content":"Class Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"yapxuanxuan"},"content":"Class Company","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"sindhurajain"},"content":"Class Priority","lastModifiedDate":"2024-03-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":"Class Tag","lastModifiedDate":"2024-03-24"},{"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":"-"},"content":"AddressBook *--\u003e \"1\" UniquePersonList","lastModifiedDate":"2019-07-30"},{"lineNumber":41,"author":{"gitId":"-"},"content":"UniquePersonList --\u003e \"~* all\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":42,"author":{"gitId":"-"},"content":"Person *--\u003e Name","lastModifiedDate":"2019-07-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"Person *--\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"Person *--\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"Person *--\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"yapxuanxuan"},"content":"Person *--\u003e Company","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"sindhurajain"},"content":"Person *--\u003e Priority","lastModifiedDate":"2024-03-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":"Person *--\u003e \"*\" Tag","lastModifiedDate":"2024-03-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":50,"author":{"gitId":"-"},"content":"Person -[hidden]up--\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"UniquePersonList -[hidden]right-\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":"Name -[hidden]right-\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":54,"author":{"gitId":"-"},"content":"Phone -[hidden]right-\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":55,"author":{"gitId":"-"},"content":"Address -[hidden]right-\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":"ModelManager --\u003e \"~* filtered\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":58,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"yapxuanxuan":2,"sindhurajain":2,"-":54}},{"path":"docs/diagrams/UndoRedoState1.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 ClassFontColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam ClassBorderColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam ClassBackgroundColor #FFFFAA","lastModifiedDate":"2023-07-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"sindhurajain"},"content":"title After command \"delete Bernice Yu\"","lastModifiedDate":"2024-03-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"package States \u003c\u003crectangle\u003e\u003e {","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":" class State1 as \"\u003cu\u003eab0:AddressBook\u003c/u\u003e\"","lastModifiedDate":"2023-07-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":" class State2 as \"\u003cu\u003eab1:AddressBook\u003c/u\u003e\"","lastModifiedDate":"2023-07-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":" class State3 as \"\u003cu\u003eab2:AddressBook\u003c/u\u003e\"","lastModifiedDate":"2023-07-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"State1 -[hidden]right-\u003e State2","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"State2 -[hidden]right-\u003e State3","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"hide State3","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"class Pointer as \"Current State\" #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Pointer -up-\u003e State2","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"@end","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"sindhurajain":1,"-":22}},{"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":"2024-03-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":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * containsWordIgnoreCase(\"ABc def\", \"DEF\") \u003d\u003d true","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * containsWordIgnoreCase(\"ABc def\", \"AB\") \u003d\u003d false //not a full word match","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * \u003c/pre\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @param sentence cannot be null","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @param word cannot be null, cannot be empty, must be a single word","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"yapxuanxuan"},"content":" public static boolean containsFullWordIgnoreCase(String sentence, String word) {","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" requireNonNull(sentence);","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":" requireNonNull(word);","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" String preppedWord \u003d word.trim();","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" checkArgument(!preppedWord.isEmpty(), \"Word parameter cannot be empty\");","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" checkArgument(preppedWord.split(\"\\\\s+\").length \u003d\u003d 1, \"Word parameter should be a single word\");","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" String preppedSentence \u003d sentence;","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" String[] wordsInPreppedSentence \u003d preppedSentence.split(\"\\\\s+\");","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return Arrays.stream(wordsInPreppedSentence)","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" .anyMatch(preppedWord::equalsIgnoreCase);","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"yapxuanxuan"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"yapxuanxuan"},"content":" * Returns true if the {@code sentence} contains the {@code word}.","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"yapxuanxuan"},"content":" * Ignores case, allows partial word match.","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"yapxuanxuan"},"content":" * \u003cbr\u003eexamples:\u003cpre\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * containsWordIgnoreCase(\"ABc def\", \"abc\") \u003d\u003d true","lastModifiedDate":"2016-10-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * containsWordIgnoreCase(\"ABc def\", \"DEF\") \u003d\u003d true","lastModifiedDate":"2016-10-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * containsWordIgnoreCase(\"ABc def\", \"AB\") \u003d\u003d false //not a full word match","lastModifiedDate":"2016-10-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * \u003c/pre\u003e","lastModifiedDate":"2016-10-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * @param sentence cannot be null","lastModifiedDate":"2016-10-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * @param word cannot be null, cannot be empty, must be a single word","lastModifiedDate":"2016-10-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static boolean containsWordIgnoreCase(String sentence, String word) {","lastModifiedDate":"2016-10-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" requireNonNull(sentence);","lastModifiedDate":"2017-05-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":" requireNonNull(word);","lastModifiedDate":"2017-05-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":56,"author":{"gitId":"FangRuoqing"},"content":" String preppedWord \u003d word.trim().toLowerCase(); // Convert to lowercase for case-insensitive matching","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" checkArgument(!preppedWord.isEmpty(), \"Word parameter cannot be empty\");","lastModifiedDate":"2017-05-15"},{"lineNumber":58,"author":{"gitId":"FangRuoqing"},"content":" checkArgument(preppedWord.split(\"\\\\s+\").length \u003d\u003d 1, \"Word parameter should be a single word\");","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":60,"author":{"gitId":"FangRuoqing"},"content":" String preppedSentence \u003d sentence.toLowerCase(); // Convert to lowercase for case-insensitive matching","lastModifiedDate":"2024-03-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":62,"author":{"gitId":"FangRuoqing"},"content":" return preppedSentence.contains(preppedWord);","lastModifiedDate":"2024-03-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * Returns a detailed message of the t, including the stack trace.","lastModifiedDate":"2016-09-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public static String getDetails(Throwable t) {","lastModifiedDate":"2016-09-21"},{"lineNumber":69,"author":{"gitId":"-"},"content":" requireNonNull(t);","lastModifiedDate":"2017-05-15"},{"lineNumber":70,"author":{"gitId":"-"},"content":" StringWriter sw \u003d new StringWriter();","lastModifiedDate":"2016-09-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":" t.printStackTrace(new PrintWriter(sw));","lastModifiedDate":"2016-09-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return t.getMessage() + \"\\n\" + sw.toString();","lastModifiedDate":"2016-09-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * Returns true if {@code s} represents a non-zero unsigned integer","lastModifiedDate":"2017-06-02"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * e.g. 1, 2, 3, ..., {@code Integer.MAX_VALUE} \u003cbr\u003e","lastModifiedDate":"2017-06-02"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Will return false for any other non-null string input","lastModifiedDate":"2017-06-02"},{"lineNumber":79,"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":80,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code s} is null.","lastModifiedDate":"2017-06-02"},{"lineNumber":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public static boolean isNonZeroUnsignedInteger(String s) {","lastModifiedDate":"2017-06-02"},{"lineNumber":83,"author":{"gitId":"-"},"content":" requireNonNull(s);","lastModifiedDate":"2017-06-02"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":85,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-06-02"},{"lineNumber":86,"author":{"gitId":"-"},"content":" int value \u003d Integer.parseInt(s);","lastModifiedDate":"2017-06-02"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return value \u003e 0 \u0026\u0026 !s.startsWith(\"+\"); // \"+1\" is successfully parsed by Integer#parseInt(String)","lastModifiedDate":"2017-06-02"},{"lineNumber":88,"author":{"gitId":"-"},"content":" } catch (NumberFormatException nfe) {","lastModifiedDate":"2017-06-02"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-06-02"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-02"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":92,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"yapxuanxuan":5,"FangRuoqing":4,"-":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":"-"},"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":"","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":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2017-05-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09"},{"lineNumber":30,"author":{"gitId":"tahnya"},"content":" + \"EMAIL, ADDRESS and TAGs are optional.\\n\"","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":" + PREFIX_TAG + \"owesMoney\";","lastModifiedDate":"2017-05-09"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: %1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book\";","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":48,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":49,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":57,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":60,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return true;","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":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return false;","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":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"tahnya":1,"-":84}},{"path":"src/main/java/seedu/address/logic/commands/CompanyCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yapxuanxuan"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"yapxuanxuan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"yapxuanxuan"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"yapxuanxuan"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"yapxuanxuan"},"content":"import java.util.List;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.model.person.Company;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"yapxuanxuan"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"sindhurajain"},"content":" * Changes the company of an existing person in the address book.","lastModifiedDate":"2024-03-24"},{"lineNumber":17,"author":{"gitId":"yapxuanxuan"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"yapxuanxuan"},"content":"public class CompanyCommand extends Command {","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"yapxuanxuan"},"content":" public static final String COMMAND_WORD \u003d \"co\";","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"yapxuanxuan"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"yapxuanxuan"},"content":" + \": Adds a company to the person identified by the contact name \"","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"yapxuanxuan"},"content":" + \"Existing company will be overwritten by the input.\\n\"","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"yapxuanxuan"},"content":" + \"c/ [COMPANY_NAME]\\n\"","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"yapxuanxuan"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"yapxuanxuan"},"content":" + \"c/ Friends\";","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"yapxuanxuan"},"content":" public static final String MESSAGE_ADD_COMPANY_SUCCESS \u003d \"Tagged %1$s\u0027s company as %2$s\";","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"yapxuanxuan"},"content":" public static final String MESSAGE_DELETE_COMPANY_SUCCESS \u003d \"Removed the company tag from %1$s\u0027s contact\";","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"yapxuanxuan"},"content":" public static final String MESSAGE_NOT_IMPLEMENTED_YET \u003d","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"yapxuanxuan"},"content":" \"Company command not implemented yet\";","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"yapxuanxuan"},"content":" public static final String MESSAGE_PERSON_NOT_FOUND \u003d \"Oops, %1$s\u0027s contact does not exist. Unable to add \"","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"yapxuanxuan"},"content":" + \"company tag.\";","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"yapxuanxuan"},"content":" public static final String MESSAGE_EMPTY_NAME \u003d \"Oops, please state the name of the contact.\";","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"yapxuanxuan"},"content":" private final String name;","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"yapxuanxuan"},"content":" private final Company company;","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"yapxuanxuan"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"sindhurajain"},"content":" * @param name of the person in the filtered person list to edit the company","lastModifiedDate":"2024-03-24"},{"lineNumber":43,"author":{"gitId":"yapxuanxuan"},"content":" * @param company of the person to be updated to","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"yapxuanxuan"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"yapxuanxuan"},"content":" public CompanyCommand(String name, Company company) {","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"yapxuanxuan"},"content":" requireAllNonNull(name, company);","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"yapxuanxuan"},"content":" this.name \u003d name;","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"yapxuanxuan"},"content":" this.company \u003d company;","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"yapxuanxuan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"yapxuanxuan"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"yapxuanxuan"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"yapxuanxuan"},"content":" if (name.isEmpty()) {","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"yapxuanxuan"},"content":" throw new CommandException(String.format(MESSAGE_EMPTY_NAME, name));","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":58,"author":{"gitId":"yapxuanxuan"},"content":" List\u003cPerson\u003e contactList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"yapxuanxuan"},"content":" Person personToEdit \u003d null;","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"yapxuanxuan"},"content":" for (Person person : contactList) {","lastModifiedDate":"2024-03-14"},{"lineNumber":61,"author":{"gitId":"yapxuanxuan"},"content":" if (person.getName().fullName.equalsIgnoreCase(name)) {","lastModifiedDate":"2024-03-14"},{"lineNumber":62,"author":{"gitId":"yapxuanxuan"},"content":" personToEdit \u003d person;","lastModifiedDate":"2024-03-14"},{"lineNumber":63,"author":{"gitId":"yapxuanxuan"},"content":" break;","lastModifiedDate":"2024-03-14"},{"lineNumber":64,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":65,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":66,"author":{"gitId":"yapxuanxuan"},"content":" if (personToEdit \u003d\u003d null) {","lastModifiedDate":"2024-03-14"},{"lineNumber":67,"author":{"gitId":"yapxuanxuan"},"content":" throw new CommandException(String.format(MESSAGE_PERSON_NOT_FOUND, name));","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":69,"author":{"gitId":"yapxuanxuan"},"content":" Person editedPerson \u003d new Person(","lastModifiedDate":"2024-03-13"},{"lineNumber":70,"author":{"gitId":"yapxuanxuan"},"content":" personToEdit.getName(), personToEdit.getPhone(), personToEdit.getEmail(),","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"FangRuoqing"},"content":" personToEdit.getAddress(), company, personToEdit.getPriority(),","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"FangRuoqing"},"content":" personToEdit.isStarred(), personToEdit.getTags());","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"yapxuanxuan"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2024-03-13"},{"lineNumber":74,"author":{"gitId":"yapxuanxuan"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-13"},{"lineNumber":75,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":76,"author":{"gitId":"yapxuanxuan"},"content":" return new CommandResult(generateSuccessMessage(editedPerson));","lastModifiedDate":"2024-03-13"},{"lineNumber":77,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":78,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":79,"author":{"gitId":"yapxuanxuan"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":80,"author":{"gitId":"yapxuanxuan"},"content":" * Generates a command execution success message based on whether","lastModifiedDate":"2024-03-13"},{"lineNumber":81,"author":{"gitId":"sindhurajain"},"content":" * the company is added to or removed from","lastModifiedDate":"2024-03-24"},{"lineNumber":82,"author":{"gitId":"yapxuanxuan"},"content":" * {@code personToEdit}.","lastModifiedDate":"2024-03-13"},{"lineNumber":83,"author":{"gitId":"yapxuanxuan"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":84,"author":{"gitId":"yapxuanxuan"},"content":" private String generateSuccessMessage(Person personToEdit) {","lastModifiedDate":"2024-03-13"},{"lineNumber":85,"author":{"gitId":"yapxuanxuan"},"content":" String message \u003d !company.value.isEmpty() ? MESSAGE_ADD_COMPANY_SUCCESS : MESSAGE_DELETE_COMPANY_SUCCESS;","lastModifiedDate":"2024-03-13"},{"lineNumber":86,"author":{"gitId":"yapxuanxuan"},"content":" return String.format(message, personToEdit.getName(), company);","lastModifiedDate":"2024-03-13"},{"lineNumber":87,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":88,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":89,"author":{"gitId":"yapxuanxuan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":90,"author":{"gitId":"yapxuanxuan"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-13"},{"lineNumber":91,"author":{"gitId":"yapxuanxuan"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-13"},{"lineNumber":92,"author":{"gitId":"yapxuanxuan"},"content":" return true;","lastModifiedDate":"2024-03-13"},{"lineNumber":93,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":94,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":95,"author":{"gitId":"yapxuanxuan"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-13"},{"lineNumber":96,"author":{"gitId":"yapxuanxuan"},"content":" if (!(other instanceof CompanyCommand)) {","lastModifiedDate":"2024-03-13"},{"lineNumber":97,"author":{"gitId":"yapxuanxuan"},"content":" return false;","lastModifiedDate":"2024-03-13"},{"lineNumber":98,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":99,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":100,"author":{"gitId":"yapxuanxuan"},"content":" CompanyCommand e \u003d (CompanyCommand) other;","lastModifiedDate":"2024-03-13"},{"lineNumber":101,"author":{"gitId":"yapxuanxuan"},"content":" return name.equals(e.name)","lastModifiedDate":"2024-03-13"},{"lineNumber":102,"author":{"gitId":"yapxuanxuan"},"content":" \u0026\u0026 company.equals(e.company);","lastModifiedDate":"2024-03-13"},{"lineNumber":103,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":104,"author":{"gitId":"yapxuanxuan"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"yapxuanxuan":99,"FangRuoqing":2,"sindhurajain":3}},{"path":"src/main/java/seedu/address/logic/commands/CountCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yapxuanxuan"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"yapxuanxuan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"yapxuanxuan"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"yapxuanxuan"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"yapxuanxuan"},"content":" * Shows the number of contacts in the address book to the user.","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"yapxuanxuan"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"yapxuanxuan"},"content":"public class CountCommand extends Command {","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"yapxuanxuan"},"content":" public static final String COMMAND_WORD \u003d \"count\";","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"yapxuanxuan"},"content":" public static final String MESSAGE_SUCCESS \u003d \"You currently have %1$d contacts.\";","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"yapxuanxuan"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"yapxuanxuan"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"yapxuanxuan"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"yapxuanxuan"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"yapxuanxuan"},"content":" int count \u003d model.getFilteredPersonList().size();","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"yapxuanxuan"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, count));","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"yapxuanxuan"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"yapxuanxuan":25}},{"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.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"sindhurajain"},"content":" * Deletes a person identified using it\u0027s displayed name from the contact list.","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"sindhurajain"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Deletes the person identified by the \"","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"sindhurajain"},"content":" + \"name used in the contact list.\\n\" + \"Parameters: CONTACT_NAME\\n\"","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"sindhurajain"},"content":" + \"Example: \" + COMMAND_WORD + \" Alex Tan\";","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"sindhurajain"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Okay, %1$s\u0027s contact has been deleted.\";","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"sindhurajain"},"content":" public static final String MESSAGE_PERSON_NOT_FOUND \u003d \"Oops, %1$s\u0027s contact does not exist.\";","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"sindhurajain"},"content":" private final String targetName;","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"sindhurajain"},"content":" public DeleteCommand(String targetName) {","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"sindhurajain"},"content":" this.targetName \u003d targetName;","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"sindhurajain"},"content":" public String getTargetName() {","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"sindhurajain"},"content":" return targetName;","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":34,"author":{"gitId":"sindhurajain"},"content":" List\u003cPerson\u003e contactList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"sindhurajain"},"content":" Person personToDelete \u003d null;","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"sindhurajain"},"content":" for (Person person : contactList) {","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"sindhurajain"},"content":" if (person.getName().fullName.equalsIgnoreCase(targetName)) {","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"sindhurajain"},"content":" personToDelete \u003d person;","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"sindhurajain"},"content":" break;","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"sindhurajain"},"content":" if (personToDelete \u003d\u003d null) {","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"sindhurajain"},"content":" throw new CommandException(String.format(MESSAGE_PERSON_NOT_FOUND, targetName));","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":45,"author":{"gitId":"-"},"content":" model.deletePerson(personToDelete);","lastModifiedDate":"2016-09-25"},{"lineNumber":46,"author":{"gitId":"sindhurajain"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, targetName));","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"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":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (!(other instanceof DeleteCommand)) {","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":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"sindhurajain"},"content":" return targetName.equals(otherDeleteCommand.targetName);","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"sindhurajain"},"content":" return new ToStringBuilder(this).add(\"targetName\", targetName).toString();","lastModifiedDate":"2024-03-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"sindhurajain":26,"-":40}},{"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":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.model.person.Company;","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"sindhurajain"},"content":"import seedu.address.model.person.Priority;","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26"},{"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":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the person identified \"","lastModifiedDate":"2016-12-26"},{"lineNumber":41,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01"},{"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":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06"},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26"},{"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":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26"},{"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":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25"},{"lineNumber":65,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25"},{"lineNumber":66,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"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":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26"},{"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":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19"},{"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":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","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.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":89,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23"},{"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":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26"},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":97,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":100,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":101,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21"},{"lineNumber":102,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":103,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2017-06-21"},{"lineNumber":104,"author":{"gitId":"yapxuanxuan"},"content":" Company updatedCompany \u003d personToEdit.getCompany();","lastModifiedDate":"2024-03-13"},{"lineNumber":105,"author":{"gitId":"FangRuoqing"},"content":" Boolean updatedStar \u003d personToEdit.isStarred();","lastModifiedDate":"2024-03-20"},{"lineNumber":106,"author":{"gitId":"sindhurajain"},"content":" Priority updatedPriority \u003d personToEdit.getPriority();","lastModifiedDate":"2024-03-20"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2017-06-21"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":109,"author":{"gitId":"sindhurajain"},"content":" return new Person(updatedName, updatedPhone, updatedEmail,","lastModifiedDate":"2024-03-20"},{"lineNumber":110,"author":{"gitId":"FangRuoqing"},"content":" updatedAddress, updatedCompany, updatedPriority, updatedStar, updatedTags);","lastModifiedDate":"2024-03-21"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":" return false;","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":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"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(\"index\", index)","lastModifiedDate":"2019-02-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":138,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26"},{"lineNumber":139,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26"},{"lineNumber":140,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":141,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26"},{"lineNumber":142,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21"},{"lineNumber":143,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":144,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":145,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21"},{"lineNumber":146,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21"},{"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":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":162,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":163,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26"},{"lineNumber":164,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":165,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26"},{"lineNumber":166,"author":{"gitId":"-"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, tags);","lastModifiedDate":"2018-08-14"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":169,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21"},{"lineNumber":170,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":173,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":174,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21"},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":177,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21"},{"lineNumber":178,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":181,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26"},{"lineNumber":182,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21"},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":185,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21"},{"lineNumber":186,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":189,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":190,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21"},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":193,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21"},{"lineNumber":194,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":197,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26"},{"lineNumber":198,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21"},{"lineNumber":199,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":201,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":202,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11"},{"lineNumber":203,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":204,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":205,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21"},{"lineNumber":206,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11"},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":209,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":210,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11"},{"lineNumber":211,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11"},{"lineNumber":212,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11"},{"lineNumber":213,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":214,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":215,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11"},{"lineNumber":216,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":218,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":219,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":220,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":221,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":222,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":224,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":225,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05"},{"lineNumber":226,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":227,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":229,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":230,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":231,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":232,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":233,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":234,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags);","lastModifiedDate":"2023-07-13"},{"lineNumber":235,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":248,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"yapxuanxuan":2,"FangRuoqing":2,"sindhurajain":3,"-":241}},{"path":"src/main/java/seedu/address/logic/commands/FilterHighPriorityCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sindhurajain"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"sindhurajain"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"sindhurajain"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"sindhurajain"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"sindhurajain"},"content":" * Finds and lists all persons in address book who are marked as high priority.","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"sindhurajain"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"sindhurajain"},"content":"public class FilterHighPriorityCommand extends Command {","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"sindhurajain"},"content":" public static final String COMMAND_WORD \u003d \"filter-high\";","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"sindhurajain"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all persons whose \"","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"sindhurajain"},"content":" + \"priorities are high and displays them as a list.\\n\"","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"sindhurajain"},"content":" + \"Example: \" + COMMAND_WORD;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"sindhurajain"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed contacts with high priority\";","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"sindhurajain"},"content":" public static final String MESSAGE_NO_CONTACTS_FOUND \u003d \"Oops! No contacts found with high priority level.\";","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"sindhurajain"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"sindhurajain"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"sindhurajain"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"sindhurajain"},"content":" model.updateFilteredPersonList(person -\u003e person.getPriority().value.equals(\"high\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"sindhurajain"},"content":" if (model.getFilteredPersonList().isEmpty()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"sindhurajain"},"content":" return new CommandResult(MESSAGE_NO_CONTACTS_FOUND);","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"sindhurajain"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"sindhurajain"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"sindhurajain":31}},{"path":"src/main/java/seedu/address/logic/commands/FilterMedPriorityCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sindhurajain"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"sindhurajain"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"sindhurajain"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"sindhurajain"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"sindhurajain"},"content":" * Finds and lists all persons in address book who are marked as medium priority.","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"sindhurajain"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"sindhurajain"},"content":"public class FilterMedPriorityCommand extends Command {","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"sindhurajain"},"content":" public static final String COMMAND_WORD \u003d \"filter-med\";","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"sindhurajain"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all persons whose \"","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"sindhurajain"},"content":" + \"priorities are medium and displays them as a list.\\n\"","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"sindhurajain"},"content":" + \"Example: \" + COMMAND_WORD;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"sindhurajain"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed contacts with medium priority\";","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"sindhurajain"},"content":" public static final String MESSAGE_NO_CONTACTS_FOUND \u003d \"Oops! No contacts found with medium priority level.\";","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"sindhurajain"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"sindhurajain"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"sindhurajain"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"sindhurajain"},"content":" model.updateFilteredPersonList(person -\u003e person.getPriority().value.equals(\"med\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"sindhurajain"},"content":" if (model.getFilteredPersonList().isEmpty()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"sindhurajain"},"content":" return new CommandResult(MESSAGE_NO_CONTACTS_FOUND);","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"sindhurajain"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"sindhurajain"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"sindhurajain":31}},{"path":"src/main/java/seedu/address/logic/commands/FindCompanyCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yapxuanxuan"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"yapxuanxuan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.model.person.CompanyContainsKeywordsPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"yapxuanxuan"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"yapxuanxuan"},"content":" * Finds and lists all persons in address book whose company tag contains any of the argument keywords.","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"yapxuanxuan"},"content":" * Keyword matching is case insensitive.","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"yapxuanxuan"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"yapxuanxuan"},"content":"public class FindCompanyCommand extends Command {","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"yapxuanxuan"},"content":" public static final String COMMAND_WORD \u003d \"findco\";","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"yapxuanxuan"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all contacts with company tag containing \"","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"yapxuanxuan"},"content":" + \"the specified keywords (case-insensitive) and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"yapxuanxuan"},"content":" + \"Parameters: KEYWORD [MORE_KEYWORDS]...\\n\"","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"yapxuanxuan"},"content":" + \"Example: \" + COMMAND_WORD + \"TikTok\";","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"yapxuanxuan"},"content":" public static final String MESSAGE_FIND_COMPANY_SUCCESS \u003d \"Found %1$d %2$s with matching company tag(s).\";","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"yapxuanxuan"},"content":" private final CompanyContainsKeywordsPredicate predicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"yapxuanxuan"},"content":" public FindCompanyCommand(CompanyContainsKeywordsPredicate predicate) {","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"yapxuanxuan"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"yapxuanxuan"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"yapxuanxuan"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"yapxuanxuan"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"yapxuanxuan"},"content":" model.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"yapxuanxuan"},"content":" int numContacts \u003d model.getFilteredPersonList().size();","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"yapxuanxuan"},"content":" String contactOrContacts \u003d (numContacts \u003d\u003d 1) ? \"contact\" : \"contacts\";","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"yapxuanxuan"},"content":" return new CommandResult(String.format(MESSAGE_FIND_COMPANY_SUCCESS, numContacts, contactOrContacts));","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"yapxuanxuan"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"yapxuanxuan"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"yapxuanxuan"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"yapxuanxuan"},"content":" return true;","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"yapxuanxuan"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"yapxuanxuan"},"content":" if (!(other instanceof FindCompanyCommand)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"yapxuanxuan"},"content":" return false;","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"yapxuanxuan"},"content":" FindCompanyCommand otherFindCompanyCommand \u003d (FindCompanyCommand) other;","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"yapxuanxuan"},"content":" return predicate.equals(otherFindCompanyCommand.predicate);","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"yapxuanxuan"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"yapxuanxuan"},"content":" public String toString() {","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"yapxuanxuan"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"yapxuanxuan"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"yapxuanxuan"},"content":" .toString();","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"yapxuanxuan"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"yapxuanxuan":60}},{"path":"src/main/java/seedu/address/logic/commands/PriorityCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sindhurajain"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"sindhurajain"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"sindhurajain"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"sindhurajain"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"sindhurajain"},"content":"import java.util.List;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"sindhurajain"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"sindhurajain"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"sindhurajain"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"sindhurajain"},"content":"import seedu.address.model.person.Priority;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"sindhurajain"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"sindhurajain"},"content":" * Changes the priority of an existing person in the address book.","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"sindhurajain"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"sindhurajain"},"content":"public class PriorityCommand extends Command {","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"sindhurajain"},"content":" public static final String COMMAND_WORD_MED \u003d \"pr/med\";","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"sindhurajain"},"content":" public static final String COMMAND_WORD_HIGH \u003d \"pr/high\";","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"sindhurajain"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD_MED + \" or \"","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"sindhurajain"},"content":" + COMMAND_WORD_HIGH + \": Sets the priority of the contact identified \"","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"sindhurajain"},"content":" + \"by the contact name to medium or high respectively.\\n\"","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"sindhurajain"},"content":" + \"Parameters: CONTACT_NAME\\n\"","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"sindhurajain"},"content":" + \"Example: \" + COMMAND_WORD_MED + \" John Doe\";","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"sindhurajain"},"content":" public static final String MESSAGE_PERSON_NOT_FOUND \u003d \"Oops, %1$s\u0027s contact does not exist.\";","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"sindhurajain"},"content":" public static final String MESSAGE_EMPTY_NAME \u003d \"Oops, please state the name of the contact.\";","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"sindhurajain"},"content":" public static final String MESSAGE_ADD_PRIORITY_SUCCESS \u003d \"Added this contact with %1$s priority:\\n\"","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"sindhurajain"},"content":" + \"%2$s\\tName: %3$s | Phone: %4$s | Email: %5$s\";","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"sindhurajain"},"content":" public static final String MESSAGE_DELETE_PRIORITY_SUCCESS \u003d \"Removed the priority level from %1$s\u0027s contact\";","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"sindhurajain"},"content":" private final String name;","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"sindhurajain"},"content":" private final Priority priority;","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"sindhurajain"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"sindhurajain"},"content":" * Constructs a PriorityCommand.","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"sindhurajain"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"sindhurajain"},"content":" * @param name Name of the person in the filtered person list to edit the priority.","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"sindhurajain"},"content":" * @param priority Priority of the person to be updated to.","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"sindhurajain"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"sindhurajain"},"content":" public PriorityCommand(String name, Priority priority) {","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"sindhurajain"},"content":" requireAllNonNull(name, priority);","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"sindhurajain"},"content":" this.name \u003d name;","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"sindhurajain"},"content":" this.priority \u003d priority;","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"sindhurajain"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"sindhurajain"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"sindhurajain"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"sindhurajain"},"content":" if (name.isEmpty()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"sindhurajain"},"content":" throw new CommandException(String.format(MESSAGE_EMPTY_NAME, name));","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"sindhurajain"},"content":" List\u003cPerson\u003e contactList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"sindhurajain"},"content":" Person personToEdit \u003d null;","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"sindhurajain"},"content":" for (Person person : contactList) {","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"sindhurajain"},"content":" if (person.getName().fullName.equalsIgnoreCase(name)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"sindhurajain"},"content":" personToEdit \u003d person;","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"sindhurajain"},"content":" break;","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"sindhurajain"},"content":" if (personToEdit \u003d\u003d null) {","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"sindhurajain"},"content":" throw new CommandException(String.format(MESSAGE_PERSON_NOT_FOUND, name));","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"sindhurajain"},"content":" Person editedPerson \u003d new Person(","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"sindhurajain"},"content":" personToEdit.getName(), personToEdit.getPhone(), personToEdit.getEmail(),","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"FangRuoqing"},"content":" personToEdit.getAddress(), personToEdit.getCompany(), priority,","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"FangRuoqing"},"content":" personToEdit.isStarred(), personToEdit.getTags());","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"sindhurajain"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"sindhurajain"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"sindhurajain"},"content":" return new CommandResult(generateSuccessMessage(editedPerson));","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"sindhurajain"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"sindhurajain"},"content":" * Generates a command execution success message based on whether","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"sindhurajain"},"content":" * the priority is added to or removed from {@code personToEdit}.","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"sindhurajain"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"sindhurajain"},"content":" * @param personToEdit Person whose priority is edited.","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"sindhurajain"},"content":" * @return A success message indicating the priority change.","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"sindhurajain"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"sindhurajain"},"content":" private String generateSuccessMessage(Person personToEdit) {","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"sindhurajain"},"content":" if (priority.value.isEmpty()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"sindhurajain"},"content":" return String.format(MESSAGE_DELETE_PRIORITY_SUCCESS, personToEdit.getName());","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"sindhurajain"},"content":" String priorityMessage \u003d priority.value.equals(\"high\") ? \"high\" : \"medium\";","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"sindhurajain"},"content":" String formattingCharacter \u003d priority.value.equals(\"high\") ? \"**\" : \"*\";","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"sindhurajain"},"content":" return String.format(MESSAGE_ADD_PRIORITY_SUCCESS, priorityMessage, formattingCharacter,","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"sindhurajain"},"content":" personToEdit.getName(), personToEdit.getPhone(), personToEdit.getEmail());","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"sindhurajain"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"sindhurajain"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-20"},{"lineNumber":99,"author":{"gitId":"sindhurajain"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"sindhurajain"},"content":" return true;","lastModifiedDate":"2024-03-20"},{"lineNumber":101,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":102,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":103,"author":{"gitId":"sindhurajain"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"sindhurajain"},"content":" if (!(other instanceof PriorityCommand)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"sindhurajain"},"content":" return false;","lastModifiedDate":"2024-03-20"},{"lineNumber":106,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":107,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":108,"author":{"gitId":"sindhurajain"},"content":" PriorityCommand e \u003d (PriorityCommand) other;","lastModifiedDate":"2024-03-20"},{"lineNumber":109,"author":{"gitId":"sindhurajain"},"content":" return name.equals(e.name)","lastModifiedDate":"2024-03-20"},{"lineNumber":110,"author":{"gitId":"sindhurajain"},"content":" \u0026\u0026 priority.equals(e.priority);","lastModifiedDate":"2024-03-20"},{"lineNumber":111,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":112,"author":{"gitId":"sindhurajain"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"FangRuoqing":2,"sindhurajain":110}},{"path":"src/main/java/seedu/address/logic/commands/StarCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"FangRuoqing"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"FangRuoqing"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"FangRuoqing"},"content":"import java.util.List;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"FangRuoqing"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"FangRuoqing"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"FangRuoqing"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"FangRuoqing"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"FangRuoqing"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"FangRuoqing"},"content":" * Command to star a contact in Connectify.","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"FangRuoqing"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"FangRuoqing"},"content":"public class StarCommand extends Command {","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"FangRuoqing"},"content":" public static final String COMMAND_WORD \u003d \"star\";","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"FangRuoqing"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Stars the contact in Connectify.\\n\"","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"FangRuoqing"},"content":" + \"Parameters: \u003ccontact_name\u003e\\n\"","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"FangRuoqing"},"content":" + \"Example: \" + COMMAND_WORD + \" Alex Tan\";","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"FangRuoqing"},"content":" private final String contactName;","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"FangRuoqing"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"FangRuoqing"},"content":" * Constructs a {@code StarCommand} to star the specified contact.","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"FangRuoqing"},"content":" *","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"FangRuoqing"},"content":" * @param contactName The name of the contact to be starred.","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"FangRuoqing"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"FangRuoqing"},"content":" public StarCommand(String contactName) {","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"FangRuoqing"},"content":" this.contactName \u003d contactName;","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"FangRuoqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"FangRuoqing"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"FangRuoqing"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"FangRuoqing"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"FangRuoqing"},"content":" // Find the person by name","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"FangRuoqing"},"content":" List\u003cPerson\u003e personsFound \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"FangRuoqing"},"content":" Person contactToStar \u003d null;","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"FangRuoqing"},"content":" for (Person person : personsFound) {","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"FangRuoqing"},"content":" if (person.getName().fullName.equalsIgnoreCase(contactName)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"FangRuoqing"},"content":" contactToStar \u003d person;","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"FangRuoqing"},"content":" break;","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"FangRuoqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"FangRuoqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"FangRuoqing"},"content":" if (contactToStar \u003d\u003d null) {","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"FangRuoqing"},"content":" throw new CommandException(\"Error! Contact not found: \" + contactName);","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"FangRuoqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"FangRuoqing"},"content":" // Star the contact","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"FangRuoqing"},"content":" contactToStar.starContact();","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"FangRuoqing"},"content":" Person starredContact \u003d new Person(contactToStar.getName(), contactToStar.getPhone(), contactToStar.getEmail(),","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"FangRuoqing"},"content":" contactToStar.getAddress(), contactToStar.getCompany(),","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"FangRuoqing"},"content":" contactToStar.getPriority(), contactToStar.isStarred(), contactToStar.getTags());","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"FangRuoqing"},"content":" model.setPerson(contactToStar, starredContact);","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"FangRuoqing"},"content":" model.updateFilteredPersonList(Model.PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"FangRuoqing"},"content":" return new CommandResult(\"Nice! I have starred this contact:\\n\" + contactToStar.getName() + \" ★\");","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"FangRuoqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"FangRuoqing"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"FangRuoqing"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"FangRuoqing"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"FangRuoqing"},"content":" return true;","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"FangRuoqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"FangRuoqing"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"FangRuoqing"},"content":" if (!(other instanceof StarCommand)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"FangRuoqing"},"content":" return false;","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"FangRuoqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"FangRuoqing"},"content":" StarCommand e \u003d (StarCommand) other;","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"FangRuoqing"},"content":" return contactName.equals(e.contactName);","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"FangRuoqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"FangRuoqing"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"FangRuoqing"},"content":" public String toString() {","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"FangRuoqing"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"FangRuoqing"},"content":" .add(\"contactName\", this.contactName)","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"FangRuoqing"},"content":" .toString();","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"FangRuoqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"FangRuoqing"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"FangRuoqing":82}},{"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":"-"},"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":"-"},"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":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.model.person.Company;","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"sindhurajain"},"content":"import seedu.address.model.person.Priority;","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05"},{"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-02-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":35,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG);","lastModifiedDate":"2017-06-06"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":38,"author":{"gitId":"tahnya"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_PHONE) // only check for required Name and Phone","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":43,"author":{"gitId":"-"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-07-14"},{"lineNumber":44,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":46,"author":{"gitId":"tahnya"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).orElse(\"\"));","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"tahnya"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).orElse(\"\"));","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"yapxuanxuan"},"content":" Company company \u003d new Company(\"\");","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"sindhurajain"},"content":" Priority priority \u003d new Priority(\"\");","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":52,"author":{"gitId":"FangRuoqing"},"content":" Person person \u003d new Person(name, phone, email, address, company, priority, false, tagList);","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17"},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":61,"author":{"gitId":"FangRuoqing"},"content":" static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"tahnya":3,"yapxuanxuan":2,"FangRuoqing":2,"sindhurajain":2,"-":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":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.logic.commands.CompanyCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.logic.commands.CountCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.logic.commands.FilterHighPriorityCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.logic.commands.FilterMedPriorityCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.logic.commands.FindCompanyCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.logic.commands.PriorityCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"FangRuoqing"},"content":"import seedu.address.logic.commands.StarCommand;","lastModifiedDate":"2024-03-21"},{"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":"sindhurajain"},"content":" case FilterHighPriorityCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"sindhurajain"},"content":" return new FilterHighPriorityCommand();","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"sindhurajain"},"content":" case FilterMedPriorityCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"sindhurajain"},"content":" return new FilterMedPriorityCommand();","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"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":"yapxuanxuan"},"content":" case FindCompanyCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"yapxuanxuan"},"content":" return new FindCompanyCommandParser().parse(arguments);","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"yapxuanxuan"},"content":" case CompanyCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-13"},{"lineNumber":88,"author":{"gitId":"yapxuanxuan"},"content":" return new CompanyCommandParser().parse(arguments);","lastModifiedDate":"2024-03-13"},{"lineNumber":89,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":90,"author":{"gitId":"sindhurajain"},"content":" case PriorityCommand.COMMAND_WORD_HIGH:","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"sindhurajain"},"content":" return new PriorityCommandParser(\"high\").parse(arguments);","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"sindhurajain"},"content":" case PriorityCommand.COMMAND_WORD_MED:","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"sindhurajain"},"content":" return new PriorityCommandParser(\"med\").parse(arguments);","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":97,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":99,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26"},{"lineNumber":103,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":105,"author":{"gitId":"yapxuanxuan"},"content":" case CountCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-19"},{"lineNumber":106,"author":{"gitId":"yapxuanxuan"},"content":" return new CountCommand();","lastModifiedDate":"2024-03-19"},{"lineNumber":107,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":108,"author":{"gitId":"FangRuoqing"},"content":" case StarCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-20"},{"lineNumber":109,"author":{"gitId":"FangRuoqing"},"content":" return new StarCommandParser().parse(arguments);","lastModifiedDate":"2024-03-20"},{"lineNumber":110,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":111,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26"},{"lineNumber":112,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29"},{"lineNumber":113,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11"},{"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"},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"yapxuanxuan":15,"FangRuoqing":4,"sindhurajain":12,"-":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":"yapxuanxuan"},"content":" public static final Prefix PREFIX_COMPANY \u003d new Prefix(\"c/\");","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"yapxuanxuan":1,"-":15}},{"path":"src/main/java/seedu/address/logic/parser/CompanyCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yapxuanxuan"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"yapxuanxuan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"yapxuanxuan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COMPANY;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.logic.commands.CompanyCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.model.person.Company;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"yapxuanxuan"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"yapxuanxuan"},"content":" * Parses input arguments and creates a new {@code CompanyCommand} object","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"yapxuanxuan"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"yapxuanxuan"},"content":"public class CompanyCommandParser implements Parser\u003cCompanyCommand\u003e {","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"yapxuanxuan"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"yapxuanxuan"},"content":" * Parses the given {@code String} of arguments in the context of the CompanyCommand","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"yapxuanxuan"},"content":" * and returns a CompanyCommand object for execution.","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"yapxuanxuan"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"yapxuanxuan"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"yapxuanxuan"},"content":" public CompanyCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"yapxuanxuan"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"yapxuanxuan"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_COMPANY);","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"yapxuanxuan"},"content":" String contactName;","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"yapxuanxuan"},"content":" contactName \u003d argMultimap.getPreamble();","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"yapxuanxuan"},"content":" String company \u003d argMultimap.getValue(PREFIX_COMPANY).orElse(\"\");","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"yapxuanxuan"},"content":" return new CompanyCommand(contactName, new Company(company));","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"yapxuanxuan"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"yapxuanxuan":32}},{"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":"sindhurajain"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new DeleteCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class DeleteCommandParser implements Parser\u003cDeleteCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * and returns a DeleteCommand object for execution.","lastModifiedDate":"2019-05-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"sindhurajain"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public DeleteCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":19,"author":{"gitId":"sindhurajain"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"sindhurajain"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"sindhurajain"},"content":" throw new ParseException(String.format(","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"sindhurajain"},"content":" Messages.MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":24,"author":{"gitId":"sindhurajain"},"content":" return new DeleteCommand(trimmedArgs);","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"sindhurajain":7,"-":19}},{"path":"src/main/java/seedu/address/logic/parser/FindCompanyCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yapxuanxuan"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"yapxuanxuan"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"yapxuanxuan"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.logic.commands.FindCompanyCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.model.person.CompanyContainsKeywordsPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"yapxuanxuan"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"yapxuanxuan"},"content":" * Parses input arguments and creates a new FindCompanyCommand object","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"yapxuanxuan"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"yapxuanxuan"},"content":"public class FindCompanyCommandParser implements Parser\u003cFindCompanyCommand\u003e {","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"yapxuanxuan"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"yapxuanxuan"},"content":" * Parses the given {@code String} of arguments in the context of the FindCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"yapxuanxuan"},"content":" * and returns a FindCommand object for execution.","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"yapxuanxuan"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"yapxuanxuan"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"yapxuanxuan"},"content":" public FindCompanyCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"yapxuanxuan"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"yapxuanxuan"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"yapxuanxuan"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"yapxuanxuan"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCompanyCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"yapxuanxuan"},"content":" String[] nameKeywords \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"yapxuanxuan"},"content":" return new FindCompanyCommand(new CompanyContainsKeywordsPredicate(Arrays.asList(nameKeywords)));","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"yapxuanxuan"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"yapxuanxuan":33}},{"path":"src/main/java/seedu/address/logic/parser/PriorityCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sindhurajain"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"sindhurajain"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"sindhurajain"},"content":"import seedu.address.logic.commands.PriorityCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"sindhurajain"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"sindhurajain"},"content":"import seedu.address.model.person.Priority;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"sindhurajain"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"sindhurajain"},"content":" * Parses input arguments and creates a new {@code PriorityCommand} object","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"sindhurajain"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"sindhurajain"},"content":"public class PriorityCommandParser implements Parser\u003cPriorityCommand\u003e {","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"sindhurajain"},"content":" private final String priority;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"sindhurajain"},"content":" public PriorityCommandParser(String priority) {","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"sindhurajain"},"content":" this.priority \u003d priority;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"sindhurajain"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"sindhurajain"},"content":" * Parses the given {@code String} of arguments in the context of the PriorityCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"sindhurajain"},"content":" * and returns a PriorityCommand object for execution.","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"sindhurajain"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"sindhurajain"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"sindhurajain"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"sindhurajain"},"content":" public PriorityCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"sindhurajain"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"sindhurajain"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"sindhurajain"},"content":" throw new ParseException(String.format(","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"sindhurajain"},"content":" Messages.MESSAGE_INVALID_COMMAND_FORMAT, PriorityCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"sindhurajain"},"content":" return new PriorityCommand(trimmedArgs, new Priority(priority));","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"sindhurajain"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"sindhurajain":32}},{"path":"src/main/java/seedu/address/logic/parser/StarCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"FangRuoqing"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"FangRuoqing"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"FangRuoqing"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"FangRuoqing"},"content":"import seedu.address.logic.commands.StarCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"FangRuoqing"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"FangRuoqing"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"FangRuoqing"},"content":" * Parses input arguments and creates a new StarCommand object.","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"FangRuoqing"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"FangRuoqing"},"content":"public class StarCommandParser implements Parser\u003cStarCommand\u003e {","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"FangRuoqing"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"FangRuoqing"},"content":" * Parses the given {@code userInput} and returns a {@code StarCommand} object.","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"FangRuoqing"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"FangRuoqing"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"FangRuoqing"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"FangRuoqing"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"FangRuoqing"},"content":" public StarCommand parse(String userInput) throws ParseException {","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"FangRuoqing"},"content":" requireNonNull(userInput);","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"FangRuoqing"},"content":" String trimmedArgs \u003d userInput.trim();","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"FangRuoqing"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"FangRuoqing"},"content":" throw new ParseException(String.format(","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"FangRuoqing"},"content":" Messages.MESSAGE_INVALID_COMMAND_FORMAT, StarCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"FangRuoqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"FangRuoqing"},"content":" return new StarCommand(trimmedArgs);","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"FangRuoqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"FangRuoqing"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"FangRuoqing":30}},{"path":"src/main/java/seedu/address/model/person/Address.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":"-"},"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":"tahnya"},"content":" return test \u003d\u003d \"\" || test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-13"},{"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":{"tahnya":1,"-":64}},{"path":"src/main/java/seedu/address/model/person/Company.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yapxuanxuan"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"yapxuanxuan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"yapxuanxuan"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"yapxuanxuan"},"content":" * Represents a Person\u0027s company name in the address book.","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"sindhurajain"},"content":" * Guarantees: immutable; is always valid.","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"yapxuanxuan"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"yapxuanxuan"},"content":"public class Company {","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"yapxuanxuan"},"content":" public final String value;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"yapxuanxuan"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"yapxuanxuan"},"content":" * Constructs a {@code Company}.","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"yapxuanxuan"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"yapxuanxuan"},"content":" * @param companyName A valid name.","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"yapxuanxuan"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"yapxuanxuan"},"content":" public Company(String companyName) {","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"yapxuanxuan"},"content":" requireNonNull(companyName);","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"yapxuanxuan"},"content":" value \u003d companyName;","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"yapxuanxuan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"yapxuanxuan"},"content":" public String toString() {","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"yapxuanxuan"},"content":" return value;","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"yapxuanxuan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"yapxuanxuan"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"yapxuanxuan"},"content":" return other \u003d\u003d this // short circuit if same object","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"yapxuanxuan"},"content":" || (other instanceof Company // instanceof handles nulls","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"yapxuanxuan"},"content":" \u0026\u0026 value.equals(((Company) other).value)); // state check","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"yapxuanxuan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"yapxuanxuan"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"yapxuanxuan"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"yapxuanxuan"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"yapxuanxuan":37,"sindhurajain":1}},{"path":"src/main/java/seedu/address/model/person/CompanyContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yapxuanxuan"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"yapxuanxuan"},"content":"import java.util.List;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"yapxuanxuan"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"yapxuanxuan"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"yapxuanxuan"},"content":" * Tests that a {@code Person}\u0027s {@code Company} matches any of the keywords given.","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"yapxuanxuan"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"yapxuanxuan"},"content":"public class CompanyContainsKeywordsPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"yapxuanxuan"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"yapxuanxuan"},"content":" public CompanyContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"yapxuanxuan"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"yapxuanxuan"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"yapxuanxuan"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"yapxuanxuan"},"content":" return keywords.stream()","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"yapxuanxuan"},"content":" .anyMatch(keyword -\u003e StringUtil.containsFullWordIgnoreCase(person.getCompany().value, keyword));","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"yapxuanxuan"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"yapxuanxuan"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"yapxuanxuan"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"yapxuanxuan"},"content":" return true;","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"yapxuanxuan"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"yapxuanxuan"},"content":" if (!(other instanceof CompanyContainsKeywordsPredicate)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"yapxuanxuan"},"content":" return false;","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"yapxuanxuan"},"content":" CompanyContainsKeywordsPredicate otherCompanyContainsKeywordsPredicate \u003d (CompanyContainsKeywordsPredicate)","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"yapxuanxuan"},"content":" other;","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"yapxuanxuan"},"content":" return keywords.equals(otherCompanyContainsKeywordsPredicate.keywords);","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"yapxuanxuan"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"yapxuanxuan"},"content":" public String toString() {","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"yapxuanxuan"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"yapxuanxuan"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"yapxuanxuan":45}},{"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":"-"},"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":"tahnya"},"content":" return test \u003d\u003d \"\" || test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-13"},{"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":{"tahnya":1,"-":78}},{"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":"-"},"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 Address address;","lastModifiedDate":"2018-04-19"},{"lineNumber":26,"author":{"gitId":"yapxuanxuan"},"content":" private final Company company;","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"sindhurajain"},"content":" private final Priority priority;","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"FangRuoqing"},"content":" private boolean starred;","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"sindhurajain"},"content":" * Name, phone, email, address, tags must be present and not null.","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"FangRuoqing"},"content":" public Person(Name name, Phone phone, Email email, Address address,","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"FangRuoqing"},"content":" Company company, Priority priority, Boolean starred, Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" requireAllNonNull(name, phone, email, address, tags);","lastModifiedDate":"2017-05-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20"},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20"},{"lineNumber":41,"author":{"gitId":"yapxuanxuan"},"content":" this.company \u003d company;","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"sindhurajain"},"content":" this.priority \u003d priority;","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"FangRuoqing"},"content":" this.starred \u003d starred;","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return email;","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":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":63,"author":{"gitId":"yapxuanxuan"},"content":" public Company getCompany() {","lastModifiedDate":"2024-03-13"},{"lineNumber":64,"author":{"gitId":"yapxuanxuan"},"content":" return company;","lastModifiedDate":"2024-03-13"},{"lineNumber":65,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":66,"author":{"gitId":"sindhurajain"},"content":" public Priority getPriority() {","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"sindhurajain"},"content":" return priority;","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":70,"author":{"gitId":"FangRuoqing"},"content":" public void starContact() {","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"FangRuoqing"},"content":" this.starred \u003d true;","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"FangRuoqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"FangRuoqing"},"content":" public boolean isStarred() {","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"FangRuoqing"},"content":" return starred;","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"FangRuoqing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19"},{"lineNumber":91,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2020-12-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":105,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":106,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":109,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10"},{"lineNumber":111,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":114,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10"},{"lineNumber":115,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":" \u0026\u0026 tags.equals(otherPerson.tags);","lastModifiedDate":"2023-07-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":124,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":125,"author":{"gitId":"-"},"content":" return Objects.hash(name, phone, email, address, tags);","lastModifiedDate":"2016-08-24"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":130,"author":{"gitId":"FangRuoqing"},"content":" String starSymbol \u003d starred ? \" ★\" : \"\";","lastModifiedDate":"2024-03-20"},{"lineNumber":131,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":132,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":133,"author":{"gitId":"FangRuoqing"},"content":" .add(\"name\", name + starSymbol)","lastModifiedDate":"2024-03-20"},{"lineNumber":134,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":137,"author":{"gitId":"yapxuanxuan"},"content":" .add(\"company\", company)","lastModifiedDate":"2024-03-13"},{"lineNumber":138,"author":{"gitId":"sindhurajain"},"content":" .add(\"priority\", priority)","lastModifiedDate":"2024-03-20"},{"lineNumber":139,"author":{"gitId":"FangRuoqing"},"content":" .add(\"starred\", starred)","lastModifiedDate":"2024-03-21"},{"lineNumber":140,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":143,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"yapxuanxuan":7,"FangRuoqing":16,"sindhurajain":7,"-":113}},{"path":"src/main/java/seedu/address/model/person/Priority.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"sindhurajain"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"sindhurajain"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"sindhurajain"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"sindhurajain"},"content":" * Represents a Person\u0027s priority level in the address book.","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"sindhurajain"},"content":" * Guarantees: immutable; is always valid.","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"sindhurajain"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"sindhurajain"},"content":"public class Priority {","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"sindhurajain"},"content":" public final String value;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"sindhurajain"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"sindhurajain"},"content":" * Constructs a {@code Priority}.","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"sindhurajain"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"sindhurajain"},"content":" * @param priorityLevel A valid priority level, which can be \"high\", \"med\", or empty.","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"sindhurajain"},"content":" * @throws IllegalArgumentException if the priority level is not \"high\", \"med\", or empty.","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"sindhurajain"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"sindhurajain"},"content":" public Priority(String priorityLevel) {","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"sindhurajain"},"content":" requireNonNull(priorityLevel);","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"sindhurajain"},"content":" if (!priorityLevel.equals(\"high\") \u0026\u0026 !priorityLevel.equals(\"med\") \u0026\u0026 !priorityLevel.isEmpty()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"sindhurajain"},"content":" throw new IllegalArgumentException(\"Priority level must be \u0027high\u0027, \u0027med\u0027, or empty\");","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"sindhurajain"},"content":" value \u003d priorityLevel;","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"sindhurajain"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"sindhurajain"},"content":" public String toString() {","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"sindhurajain"},"content":" return value;","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"sindhurajain"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"sindhurajain"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"sindhurajain"},"content":" return other \u003d\u003d this // short circuit if same object","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"sindhurajain"},"content":" || (other instanceof Priority // instanceof handles nulls","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"sindhurajain"},"content":" \u0026\u0026 value.equals(((Priority) other).value)); // state check","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"sindhurajain"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"sindhurajain"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"sindhurajain"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"sindhurajain"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"sindhurajain":42}},{"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":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.model.person.Company;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"sindhurajain"},"content":"import seedu.address.model.person.Priority;","lastModifiedDate":"2024-03-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":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"yapxuanxuan"},"content":" public static final Company EMPTY_COMPANY \u003d new Company(\"\");","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"sindhurajain"},"content":" public static final Priority EMPTY_PRIORITY \u003d new Priority(\"\");","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" new Person(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":29,"author":{"gitId":"FangRuoqing"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"), EMPTY_COMPANY, EMPTY_PRIORITY, false,","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" getTagSet(\"friends\")),","lastModifiedDate":"2017-03-14"},{"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":"FangRuoqing"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"), EMPTY_COMPANY, EMPTY_PRIORITY, false,","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" getTagSet(\"colleagues\", \"friends\")),","lastModifiedDate":"2017-03-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":35,"author":{"gitId":"FangRuoqing"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"), EMPTY_COMPANY, EMPTY_PRIORITY, false,","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" getTagSet(\"neighbours\")),","lastModifiedDate":"2017-03-14"},{"lineNumber":37,"author":{"gitId":"-"},"content":" new Person(new Name(\"David Li\"), new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":38,"author":{"gitId":"FangRuoqing"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"), EMPTY_COMPANY, EMPTY_PRIORITY, false,","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" getTagSet(\"family\")),","lastModifiedDate":"2017-03-14"},{"lineNumber":40,"author":{"gitId":"-"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":41,"author":{"gitId":"FangRuoqing"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"), EMPTY_COMPANY, EMPTY_PRIORITY, false,","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" getTagSet(\"classmates\")),","lastModifiedDate":"2017-03-14"},{"lineNumber":43,"author":{"gitId":"-"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":44,"author":{"gitId":"FangRuoqing"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"), EMPTY_COMPANY, EMPTY_PRIORITY, false,","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" getTagSet(\"colleagues\"))","lastModifiedDate":"2017-03-14"},{"lineNumber":46,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20"},{"lineNumber":52,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14"},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"yapxuanxuan":4,"FangRuoqing":6,"sindhurajain":2,"-":53}},{"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":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.model.person.Company;","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"sindhurajain"},"content":"import seedu.address.model.person.Priority;","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13"},{"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":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"yapxuanxuan"},"content":" private final String company;","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"sindhurajain"},"content":" private final String priority;","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"FangRuoqing"},"content":" private Boolean starred;","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09"},{"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":"-"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"sindhurajain"},"content":" @JsonProperty(\"company\") String company, @JsonProperty(\"priority\") String priority,","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"FangRuoqing"},"content":" @JsonProperty(\"starred\") Boolean starred, @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags) {","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"yapxuanxuan"},"content":" this.company \u003d company;","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"sindhurajain"},"content":" this.priority \u003d priority;","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"FangRuoqing"},"content":" this.starred \u003d starred;","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"yapxuanxuan"},"content":" company \u003d source.getCompany().value;","lastModifiedDate":"2024-03-13"},{"lineNumber":67,"author":{"gitId":"sindhurajain"},"content":" priority \u003d source.getPriority().value;","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"FangRuoqing"},"content":" starred \u003d source.isStarred();","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09"},{"lineNumber":70,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09"},{"lineNumber":82,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":117,"author":{"gitId":"yapxuanxuan"},"content":" if (company \u003d\u003d null) {","lastModifiedDate":"2024-03-13"},{"lineNumber":118,"author":{"gitId":"yapxuanxuan"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Company.class.getSimpleName()));","lastModifiedDate":"2024-03-13"},{"lineNumber":119,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":120,"author":{"gitId":"yapxuanxuan"},"content":" final Company modelCompany \u003d new Company(company);","lastModifiedDate":"2024-03-13"},{"lineNumber":121,"author":{"gitId":"sindhurajain"},"content":" if (priority \u003d\u003d null) {","lastModifiedDate":"2024-03-20"},{"lineNumber":122,"author":{"gitId":"sindhurajain"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-20"},{"lineNumber":123,"author":{"gitId":"sindhurajain"},"content":" Priority.class.getSimpleName()));","lastModifiedDate":"2024-03-20"},{"lineNumber":124,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":125,"author":{"gitId":"sindhurajain"},"content":" final Priority modelPriority \u003d new Priority(priority);","lastModifiedDate":"2024-03-20"},{"lineNumber":126,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13"},{"lineNumber":128,"author":{"gitId":"FangRuoqing"},"content":" return new Person(modelName, modelPhone, modelEmail, modelAddress,","lastModifiedDate":"2024-03-21"},{"lineNumber":129,"author":{"gitId":"FangRuoqing"},"content":" modelCompany, modelPriority, starred, modelTags);","lastModifiedDate":"2024-03-21"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"yapxuanxuan":9,"FangRuoqing":6,"sindhurajain":10,"-":106}},{"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":"sindhurajain"},"content":"import javafx.scene.paint.Color;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"sindhurajain"},"content":"import javafx.scene.shape.Circle;","lastModifiedDate":"2024-03-20"},{"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":"-"},"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 address;","lastModifiedDate":"2016-09-21"},{"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":"yapxuanxuan"},"content":" @FXML","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"yapxuanxuan"},"content":" private Label company;","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"sindhurajain"},"content":" @FXML","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"sindhurajain"},"content":" private Circle priorityDot;","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21"},{"lineNumber":57,"author":{"gitId":"FangRuoqing"},"content":" if (person.isStarred()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"FangRuoqing"},"content":" name.setText(person.getName().fullName + \" ★\");","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"FangRuoqing"},"content":" } else {","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20"},{"lineNumber":61,"author":{"gitId":"FangRuoqing"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":64,"author":{"gitId":"-"},"content":" address.setText(person.getAddress().value);","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"yapxuanxuan"},"content":" setCompany();","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"sindhurajain"},"content":" String priorityValue \u003d person.getPriority().value;","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"sindhurajain"},"content":" if (\"high\".equals(priorityValue)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"sindhurajain"},"content":" priorityDot.setFill(Color.RED);","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"sindhurajain"},"content":" } else if (\"med\".equals(priorityValue)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"sindhurajain"},"content":" priorityDot.setFill(Color.ORANGE);","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"sindhurajain"},"content":" } else {","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"sindhurajain"},"content":" priorityDot.setVisible(false);","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"-"},"content":" person.getTags().stream()","lastModifiedDate":"2019-01-02"},{"lineNumber":77,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02"},{"lineNumber":78,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":80,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"yapxuanxuan"},"content":" private void setCompany() {","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"yapxuanxuan"},"content":" if (!person.getCompany().value.equals(\"\")) {","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"yapxuanxuan"},"content":" company.setText(person.getCompany().value);","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"yapxuanxuan"},"content":" company.setVisible(true);","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"yapxuanxuan"},"content":" } else {","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"yapxuanxuan"},"content":" company.setPrefHeight(0.0);","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":90,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"yapxuanxuan":13,"FangRuoqing":5,"sindhurajain":13,"-":59}},{"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":"tahnya"},"content":" -fx-background-color: #b9ecc4;","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"tahnya"},"content":" background-color: #69866F;","lastModifiedDate":"2024-03-21"},{"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":"tahnya"},"content":" -fx-base: #b9ecc4;","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"tahnya"},"content":" -fx-control-inner-background: #b9ecc4;","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"tahnya"},"content":" -fx-background-color: #b9ecc4;","lastModifiedDate":"2024-03-21"},{"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":"tahnya"},"content":" -fx-background-color: #b9ecc4;","lastModifiedDate":"2024-03-21"},{"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":"tahnya"},"content":" -fx-background-color: #b9ecc4;","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"tahnya"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":".list-view {","lastModifiedDate":"2017-03-02"},{"lineNumber":92,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":93,"author":{"gitId":"-"},"content":" -fx-padding: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":94,"author":{"gitId":"tahnya"},"content":" -fx-background-color: #b9ecc4;","lastModifiedDate":"2024-03-21"},{"lineNumber":95,"author":{"gitId":"tahnya"},"content":"","lastModifiedDate":"2024-03-21"},{"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":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":".list-cell:filled:even {","lastModifiedDate":"2017-03-02"},{"lineNumber":105,"author":{"gitId":"tahnya"},"content":" -fx-background-color: #C3F2CD;","lastModifiedDate":"2024-03-21"},{"lineNumber":106,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":108,"author":{"gitId":"-"},"content":".list-cell:filled:odd {","lastModifiedDate":"2017-03-02"},{"lineNumber":109,"author":{"gitId":"tahnya"},"content":" -fx-background-color: #CCF8D6;","lastModifiedDate":"2024-03-21"},{"lineNumber":110,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":112,"author":{"gitId":"-"},"content":".list-cell:filled:selected {","lastModifiedDate":"2017-03-02"},{"lineNumber":113,"author":{"gitId":"tahnya"},"content":" /**-fx-background-color: #424d5f;**/","lastModifiedDate":"2024-03-21"},{"lineNumber":114,"author":{"gitId":"tahnya"},"content":"","lastModifiedDate":"2024-03-21"},{"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":"tahnya"},"content":" -fx-border-color: #69866F;","lastModifiedDate":"2024-03-21"},{"lineNumber":119,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":120,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":122,"author":{"gitId":"-"},"content":".list-cell .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":123,"author":{"gitId":"tahnya"},"content":" -fx-text-fill: #69866F;","lastModifiedDate":"2024-03-21"},{"lineNumber":124,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":".cell_big_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":128,"author":{"gitId":"-"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2016-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","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":".cell_small_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2022-01-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2017-03-02"},{"lineNumber":135,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","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":".stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":139,"author":{"gitId":"tahnya"},"content":" -fx-background-color: #b9ecc4;","lastModifiedDate":"2024-03-21"},{"lineNumber":140,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":142,"author":{"gitId":"-"},"content":".pane-with-border {","lastModifiedDate":"2017-05-15"},{"lineNumber":143,"author":{"gitId":"tahnya"},"content":" -fx-background-color: #b9ecc4;","lastModifiedDate":"2024-03-21"},{"lineNumber":144,"author":{"gitId":"tahnya"},"content":" -fx-border-color: #C0C2C0;","lastModifiedDate":"2024-03-21"},{"lineNumber":145,"author":{"gitId":"-"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2017-05-09"},{"lineNumber":146,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":148,"author":{"gitId":"-"},"content":".status-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":149,"author":{"gitId":"tahnya"},"content":" -fx-background-color: #69866F;","lastModifiedDate":"2024-03-21"},{"lineNumber":150,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":152,"author":{"gitId":"-"},"content":".result-display {","lastModifiedDate":"2016-09-14"},{"lineNumber":153,"author":{"gitId":"tahnya"},"content":" -fx-background-color: #b9ecc4;","lastModifiedDate":"2024-03-21"},{"lineNumber":154,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":155,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":156,"author":{"gitId":"tahnya"},"content":" -fx-text-fill: #69866F;","lastModifiedDate":"2024-03-21"},{"lineNumber":157,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":159,"author":{"gitId":"-"},"content":".result-display .label {","lastModifiedDate":"2016-09-14"},{"lineNumber":160,"author":{"gitId":"-"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2016-09-14"},{"lineNumber":161,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":".status-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":165,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":" -fx-padding: 4px;","lastModifiedDate":"2018-12-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2018-12-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":".status-bar-with-border {","lastModifiedDate":"2016-08-08"},{"lineNumber":171,"author":{"gitId":"tahnya"},"content":" -fx-background-color: #69866F;","lastModifiedDate":"2024-03-21"},{"lineNumber":172,"author":{"gitId":"tahnya"},"content":" /**-fx-border-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2024-03-21"},{"lineNumber":173,"author":{"gitId":"tahnya"},"content":" -fx-border-width: 1px;**/","lastModifiedDate":"2024-03-21"},{"lineNumber":174,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":".status-bar-with-border .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":180,"author":{"gitId":"-"},"content":".grid-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":181,"author":{"gitId":"tahnya"},"content":" -fx-background-color: #b9ecc4;","lastModifiedDate":"2024-03-21"},{"lineNumber":182,"author":{"gitId":"tahnya"},"content":" -fx-border-color: #b9ecc4;","lastModifiedDate":"2024-03-21"},{"lineNumber":183,"author":{"gitId":"tahnya"},"content":"","lastModifiedDate":"2024-03-21"},{"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":".grid-pane .stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":188,"author":{"gitId":"tahnya"},"content":" -fx-background-color: #b9ecc4;","lastModifiedDate":"2024-03-21"},{"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 {","lastModifiedDate":"2016-08-08"},{"lineNumber":192,"author":{"gitId":"tahnya"},"content":" -fx-background-color: #D9D9D9;","lastModifiedDate":"2024-03-21"},{"lineNumber":193,"author":{"gitId":"tahnya"},"content":" /**-fx-background-color: derive(#1d1d1d, 50%);**/","lastModifiedDate":"2024-03-21"},{"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":"tahnya"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-21"},{"lineNumber":198,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":200,"author":{"gitId":"-"},"content":".menu-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":201,"author":{"gitId":"tahnya"},"content":" -fx-background-color: #D9D9D9;","lastModifiedDate":"2024-03-21"},{"lineNumber":202,"author":{"gitId":"tahnya"},"content":" /**-fx-background-color: derive(#1d1d1d, 20%);**/","lastModifiedDate":"2024-03-21"},{"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":"tahnya"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-21"},{"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":"tahnya"},"content":" -fx-background-color: #b9ecc4;","lastModifiedDate":"2024-03-21"},{"lineNumber":227,"author":{"gitId":"tahnya"},"content":" /**-fx-background-color: #1d1d1d;**/","lastModifiedDate":"2024-03-21"},{"lineNumber":228,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2022-01-13"},{"lineNumber":229,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":230,"author":{"gitId":"-"},"content":" -fx-text-fill: #d8d8d8;","lastModifiedDate":"2016-08-08"},{"lineNumber":231,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":232,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":234,"author":{"gitId":"-"},"content":".button:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":235,"author":{"gitId":"-"},"content":" -fx-background-color: #3a3a3a;","lastModifiedDate":"2016-08-08"},{"lineNumber":236,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":238,"author":{"gitId":"-"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2016-08-08"},{"lineNumber":239,"author":{"gitId":"-"},"content":" -fx-background-color: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":240,"author":{"gitId":"tahnya"},"content":" -fx-text-fill: #69866F;","lastModifiedDate":"2024-03-21"},{"lineNumber":241,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":243,"author":{"gitId":"-"},"content":".button:focused {","lastModifiedDate":"2016-08-08"},{"lineNumber":244,"author":{"gitId":"-"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2016-08-08"},{"lineNumber":245,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":246,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08"},{"lineNumber":247,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":248,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":249,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":251,"author":{"gitId":"-"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08"},{"lineNumber":252,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08"},{"lineNumber":253,"author":{"gitId":"tahnya"},"content":" -fx-background-color: #b9ecc4;","lastModifiedDate":"2024-03-21"},{"lineNumber":254,"author":{"gitId":"tahnya"},"content":" /**-fx-background-color: #1d1d1d;**/","lastModifiedDate":"2024-03-21"},{"lineNumber":255,"author":{"gitId":"tahnya"},"content":" -fx-text-fill: #69866F;","lastModifiedDate":"2024-03-21"},{"lineNumber":256,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":258,"author":{"gitId":"-"},"content":".button:default {","lastModifiedDate":"2016-08-08"},{"lineNumber":259,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":260,"author":{"gitId":"tahnya"},"content":" -fx-text-fill: #69866F;","lastModifiedDate":"2024-03-21"},{"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:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":264,"author":{"gitId":"-"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2016-08-08"},{"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 {","lastModifiedDate":"2016-08-08"},{"lineNumber":268,"author":{"gitId":"tahnya"},"content":" -fx-background-color: #b9ecc4;","lastModifiedDate":"2024-03-21"},{"lineNumber":269,"author":{"gitId":"tahnya"},"content":" /**-fx-background-color: #1d1d1d;**/","lastModifiedDate":"2024-03-21"},{"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 \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2016-08-08"},{"lineNumber":273,"author":{"gitId":"tahnya"},"content":" -fx-background-color: #b9ecc4;","lastModifiedDate":"2024-03-21"},{"lineNumber":274,"author":{"gitId":"tahnya"},"content":" /**-fx-background-color: #1d1d1d;**/","lastModifiedDate":"2024-03-21"},{"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 *.label.content {","lastModifiedDate":"2016-08-08"},{"lineNumber":278,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08"},{"lineNumber":279,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2016-08-08"},{"lineNumber":280,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"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 {","lastModifiedDate":"2016-08-08"},{"lineNumber":284,"author":{"gitId":"tahnya"},"content":" -fx-background-color: #b9ecc4;","lastModifiedDate":"2024-03-21"},{"lineNumber":285,"author":{"gitId":"tahnya"},"content":" /**-fx-background-color: derive(#1d1d1d, 25%);**/","lastModifiedDate":"2024-03-21"},{"lineNumber":286,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":288,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2016-08-08"},{"lineNumber":289,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08"},{"lineNumber":290,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08"},{"lineNumber":291,"author":{"gitId":"-"},"content":" -fx-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":292,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":293,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":294,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":295,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02"},{"lineNumber":296,"author":{"gitId":"tahnya"},"content":" -fx-background-color: #b9ecc4;","lastModifiedDate":"2024-03-21"},{"lineNumber":297,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":298,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":299,"author":{"gitId":"-"},"content":".scroll-bar .thumb {","lastModifiedDate":"2016-08-15"},{"lineNumber":300,"author":{"gitId":"tahnya"},"content":" -fx-background-color: #69866F;","lastModifiedDate":"2024-03-21"},{"lineNumber":301,"author":{"gitId":"-"},"content":" -fx-background-insets: 3;","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-button, .scroll-bar .decrement-button {","lastModifiedDate":"2016-08-15"},{"lineNumber":305,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-15"},{"lineNumber":306,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-15"},{"lineNumber":307,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":308,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":309,"author":{"gitId":"-"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2016-08-15"},{"lineNumber":310,"author":{"gitId":"-"},"content":" -fx-shape: \" \";","lastModifiedDate":"2016-08-15"},{"lineNumber":311,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":312,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":313,"author":{"gitId":"-"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":314,"author":{"gitId":"-"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2016-08-15"},{"lineNumber":315,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":316,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":317,"author":{"gitId":"-"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":318,"author":{"gitId":"-"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2016-08-18"},{"lineNumber":319,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":320,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":321,"author":{"gitId":"-"},"content":"#cardPane {","lastModifiedDate":"2016-08-08"},{"lineNumber":322,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":323,"author":{"gitId":"-"},"content":" -fx-border-width: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":324,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":326,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08"},{"lineNumber":327,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08"},{"lineNumber":328,"author":{"gitId":"-"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2016-08-08"},{"lineNumber":329,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":331,"author":{"gitId":"-"},"content":"#commandTextField {","lastModifiedDate":"2017-03-02"},{"lineNumber":332,"author":{"gitId":"-"},"content":" -fx-background-color: transparent #383838 transparent #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":333,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":334,"author":{"gitId":"tahnya"},"content":" -fx-border-color: transparent transparent #69866F transparent;","lastModifiedDate":"2024-03-21"},{"lineNumber":335,"author":{"gitId":"-"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":336,"author":{"gitId":"tahnya"},"content":" -fx-border-width: 2;","lastModifiedDate":"2024-03-21"},{"lineNumber":337,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":338,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":339,"author":{"gitId":"tahnya"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-21"},{"lineNumber":340,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":341,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":342,"author":{"gitId":"-"},"content":"#filterField, #personListPanel, #personWebpage {","lastModifiedDate":"2016-08-15"},{"lineNumber":343,"author":{"gitId":"-"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2016-08-15"},{"lineNumber":344,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":345,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":346,"author":{"gitId":"-"},"content":"#resultDisplay .content {","lastModifiedDate":"2017-03-02"},{"lineNumber":347,"author":{"gitId":"tahnya"},"content":" -fx-background-color: transparent, #b9ecc4, transparent, #b9ecc4;","lastModifiedDate":"2024-03-21"},{"lineNumber":348,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","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":"#tags {","lastModifiedDate":"2016-12-18"},{"lineNumber":352,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2016-12-18"},{"lineNumber":353,"author":{"gitId":"-"},"content":" -fx-vgap: 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":354,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":355,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":356,"author":{"gitId":"-"},"content":"#tags .label {","lastModifiedDate":"2016-12-18"},{"lineNumber":357,"author":{"gitId":"tahnya"},"content":" -fx-text-fill: #69866F;","lastModifiedDate":"2024-03-21"},{"lineNumber":358,"author":{"gitId":"tahnya"},"content":" -fx-background-color: white;","lastModifiedDate":"2024-03-21"},{"lineNumber":359,"author":{"gitId":"tahnya"},"content":" -fx-padding: 1 10 1 10;","lastModifiedDate":"2024-03-21"},{"lineNumber":360,"author":{"gitId":"tahnya"},"content":" -fx-border-radius: 10;","lastModifiedDate":"2024-03-21"},{"lineNumber":361,"author":{"gitId":"tahnya"},"content":" -fx-background-radius: 10;","lastModifiedDate":"2024-03-21"},{"lineNumber":362,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2016-12-18"},{"lineNumber":363,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":364,"author":{"gitId":"yapxuanxuan"},"content":".company {","lastModifiedDate":"2024-03-21"},{"lineNumber":365,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-21"},{"lineNumber":366,"author":{"gitId":"yapxuanxuan"},"content":" -fx-background-color: #FFF8B6;","lastModifiedDate":"2024-03-21"},{"lineNumber":367,"author":{"gitId":"yapxuanxuan"},"content":" -fx-padding: 1 10 1 10;","lastModifiedDate":"2024-03-21"},{"lineNumber":368,"author":{"gitId":"yapxuanxuan"},"content":" -fx-border-radius: 10;","lastModifiedDate":"2024-03-21"},{"lineNumber":369,"author":{"gitId":"yapxuanxuan"},"content":" -fx-background-radius: 10;","lastModifiedDate":"2024-03-21"},{"lineNumber":370,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2024-03-21"},{"lineNumber":371,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"tahnya":59,"yapxuanxuan":5,"-":307}},{"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":"tahnya"},"content":" -fx-background: #b9ecc4;","lastModifiedDate":"2024-03-21"},{"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":{"tahnya":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":"tahnya"},"content":" -fx-text-fill: 69866F;","lastModifiedDate":"2024-03-21"},{"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":"tahnya"},"content":" -fx-background-color: #D9D9D9;","lastModifiedDate":"2024-03-21"},{"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":"tahnya"},"content":" -fx-background-color: #C0C2C0;","lastModifiedDate":"2024-03-21"},{"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":"tahnya"},"content":" -fx-background-color: dimgray;","lastModifiedDate":"2024-03-21"},{"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":"tahnya"},"content":" -fx-background-color: #b9ecc4;","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-08-28"}],"authorContributionMap":{"tahnya":5,"-":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.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":"tahnya"},"content":" title\u003d\"Connectify\" minWidth\u003d\"450\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2024-03-21"},{"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":"2024-03-21"},{"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":"tahnya"},"content":" \u003cInsets top\u003d\"0\" right\u003d\"0\" bottom\u003d\"5\" left\u003d\"0\" /\u003e","lastModifiedDate":"2024-03-21"},{"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":{"tahnya":2,"-":58}},{"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":"sindhurajain"},"content":"\u003c?import javafx.scene.shape.Circle?\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":13,"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":14,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"yapxuanxuan"},"content":" \u003cVBox alignment\u003d\"TOP_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"yapxuanxuan"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"10\" left\u003d\"15\" /\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08"},{"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":"sindhurajain"},"content":" \u003cCircle fx:id\u003d\"priorityDot\" radius\u003d\"5\"/\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03"},{"lineNumber":32,"author":{"gitId":"yapxuanxuan"},"content":" \u003cFlowPane fx:id\u003d\"tags\"\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"yapxuanxuan"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"yapxuanxuan"},"content":" \u003cInsets bottom\u003d\"5\"/\u003e \u003c!-- Padding added between tags and company --\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"yapxuanxuan"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"yapxuanxuan"},"content":" \u003c/FlowPane\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"yapxuanxuan"},"content":" \u003cLabel fx:id\u003d\"company\" styleClass\u003d\"company\" text\u003d\"\\$company\" minHeight\u003d\"-Infinity\" visible\u003d\"false\" /\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"yapxuanxuan":8,"sindhurajain":2,"-":33}},{"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":"yapxuanxuan"},"content":" //---------------- Tests for containsFullWordIgnoreCase --------------------------------------","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"yapxuanxuan"},"content":" /*","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"yapxuanxuan"},"content":" * Invalid equivalence partitions for word: null, empty, multiple words","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"yapxuanxuan"},"content":" * Invalid equivalence partitions for sentence: null","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"yapxuanxuan"},"content":" * The four test cases below test one invalid input at a time.","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"yapxuanxuan"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"yapxuanxuan"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"yapxuanxuan"},"content":" public void containsFullWordIgnoreCase_nullWord_throwsNullPointerException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"yapxuanxuan"},"content":" assertThrows(NullPointerException.class, () -\u003e StringUtil.containsFullWordIgnoreCase(\"typical sentence\",","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"yapxuanxuan"},"content":" null));","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"yapxuanxuan"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"yapxuanxuan"},"content":" public void containsFullWordIgnoreCase_emptyWord_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"yapxuanxuan"},"content":" assertThrows(IllegalArgumentException.class, \"Word parameter cannot be empty\", ()","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"yapxuanxuan"},"content":" -\u003e StringUtil.containsFullWordIgnoreCase(\"typical sentence\", \" \"));","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"yapxuanxuan"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"yapxuanxuan"},"content":" public void containsFullWordIgnoreCase_multipleWords_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"yapxuanxuan"},"content":" assertThrows(IllegalArgumentException.class, \"Word parameter should be a single word\", ()","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"yapxuanxuan"},"content":" -\u003e StringUtil.containsFullWordIgnoreCase(\"typical sentence\", \"aaa BBB\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"yapxuanxuan"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"yapxuanxuan"},"content":" public void containsFullWordIgnoreCase_nullSentence_throwsNullPointerException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"yapxuanxuan"},"content":" assertThrows(NullPointerException.class, () -\u003e StringUtil.containsFullWordIgnoreCase(null, \"abc\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"yapxuanxuan"},"content":" /*","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"yapxuanxuan"},"content":" * Valid equivalence partitions for word:","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"yapxuanxuan"},"content":" * - any word","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"yapxuanxuan"},"content":" * - word containing symbols/numbers","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"yapxuanxuan"},"content":" * - word with leading/trailing spaces","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"yapxuanxuan"},"content":" *","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"yapxuanxuan"},"content":" * Valid equivalence partitions for sentence:","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"yapxuanxuan"},"content":" * - empty string","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"yapxuanxuan"},"content":" * - one word","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"yapxuanxuan"},"content":" * - multiple words","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"yapxuanxuan"},"content":" * - sentence with extra spaces","lastModifiedDate":"2024-03-21"},{"lineNumber":90,"author":{"gitId":"yapxuanxuan"},"content":" *","lastModifiedDate":"2024-03-21"},{"lineNumber":91,"author":{"gitId":"yapxuanxuan"},"content":" * Possible scenarios returning true:","lastModifiedDate":"2024-03-21"},{"lineNumber":92,"author":{"gitId":"yapxuanxuan"},"content":" * - matches first word in sentence","lastModifiedDate":"2024-03-21"},{"lineNumber":93,"author":{"gitId":"yapxuanxuan"},"content":" * - last word in sentence","lastModifiedDate":"2024-03-21"},{"lineNumber":94,"author":{"gitId":"yapxuanxuan"},"content":" * - middle word in sentence","lastModifiedDate":"2024-03-21"},{"lineNumber":95,"author":{"gitId":"yapxuanxuan"},"content":" * - matches multiple words","lastModifiedDate":"2024-03-21"},{"lineNumber":96,"author":{"gitId":"yapxuanxuan"},"content":" *","lastModifiedDate":"2024-03-21"},{"lineNumber":97,"author":{"gitId":"yapxuanxuan"},"content":" * Possible scenarios returning false:","lastModifiedDate":"2024-03-21"},{"lineNumber":98,"author":{"gitId":"yapxuanxuan"},"content":" * - query word matches part of a sentence word","lastModifiedDate":"2024-03-21"},{"lineNumber":99,"author":{"gitId":"yapxuanxuan"},"content":" * - sentence word matches part of the query word","lastModifiedDate":"2024-03-21"},{"lineNumber":100,"author":{"gitId":"yapxuanxuan"},"content":" *","lastModifiedDate":"2024-03-21"},{"lineNumber":101,"author":{"gitId":"yapxuanxuan"},"content":" * The test method below tries to verify all above with a reasonably low number of test cases.","lastModifiedDate":"2024-03-21"},{"lineNumber":102,"author":{"gitId":"yapxuanxuan"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":103,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":104,"author":{"gitId":"yapxuanxuan"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":105,"author":{"gitId":"yapxuanxuan"},"content":" public void containsFullWordIgnoreCase_validInputs_correctResult() {","lastModifiedDate":"2024-03-21"},{"lineNumber":106,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":107,"author":{"gitId":"yapxuanxuan"},"content":" // Empty sentence","lastModifiedDate":"2024-03-21"},{"lineNumber":108,"author":{"gitId":"yapxuanxuan"},"content":" assertFalse(StringUtil.containsFullWordIgnoreCase(\"\", \"abc\")); // Boundary case","lastModifiedDate":"2024-03-21"},{"lineNumber":109,"author":{"gitId":"yapxuanxuan"},"content":" assertFalse(StringUtil.containsFullWordIgnoreCase(\" \", \"123\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":110,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":111,"author":{"gitId":"yapxuanxuan"},"content":" // Matches a partial word only","lastModifiedDate":"2024-03-21"},{"lineNumber":112,"author":{"gitId":"yapxuanxuan"},"content":" assertFalse(StringUtil.containsFullWordIgnoreCase(\"aaa bbb ccc\", \"bb\")); // Sentence word bigger than query word","lastModifiedDate":"2024-03-21"},{"lineNumber":113,"author":{"gitId":"yapxuanxuan"},"content":" // Query word bigger than sentence word","lastModifiedDate":"2024-03-21"},{"lineNumber":114,"author":{"gitId":"yapxuanxuan"},"content":" assertFalse(StringUtil.containsFullWordIgnoreCase(\"aaa bbb ccc\", \"bbbb\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":115,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":116,"author":{"gitId":"yapxuanxuan"},"content":" // Matches word in the sentence, different upper/lower case letters","lastModifiedDate":"2024-03-21"},{"lineNumber":117,"author":{"gitId":"yapxuanxuan"},"content":" assertTrue(StringUtil.containsFullWordIgnoreCase(\"aaa bBb ccc\", \"Bbb\")); // First word (boundary case)","lastModifiedDate":"2024-03-21"},{"lineNumber":118,"author":{"gitId":"yapxuanxuan"},"content":" assertTrue(StringUtil.containsFullWordIgnoreCase(\"aaa bBb ccc@1\", \"CCc@1\")); // Last word (boundary case)","lastModifiedDate":"2024-03-21"},{"lineNumber":119,"author":{"gitId":"yapxuanxuan"},"content":" assertTrue(StringUtil.containsFullWordIgnoreCase(\" AAA bBb ccc \", \"aaa\")); // Sentence has extra spaces","lastModifiedDate":"2024-03-21"},{"lineNumber":120,"author":{"gitId":"yapxuanxuan"},"content":" assertTrue(StringUtil.containsFullWordIgnoreCase(\"Aaa\", \"aaa\")); // Only one word in sentence (boundary case)","lastModifiedDate":"2024-03-21"},{"lineNumber":121,"author":{"gitId":"yapxuanxuan"},"content":" assertTrue(StringUtil.containsFullWordIgnoreCase(\"aaa bbb ccc\", \" ccc \")); // Leading/trailing spaces","lastModifiedDate":"2024-03-21"},{"lineNumber":122,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":123,"author":{"gitId":"yapxuanxuan"},"content":" // Matches multiple words in sentence","lastModifiedDate":"2024-03-21"},{"lineNumber":124,"author":{"gitId":"yapxuanxuan"},"content":" assertTrue(StringUtil.containsFullWordIgnoreCase(\"AAA bBb ccc bbb\", \"bbB\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":125,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":" //---------------- Tests for containsWordIgnoreCase --------------------------------------","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":" * Invalid equivalence partitions for word: null, empty, multiple words","lastModifiedDate":"2016-10-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" * Invalid equivalence partitions for sentence: null","lastModifiedDate":"2016-10-13"},{"lineNumber":132,"author":{"gitId":"-"},"content":" * The four test cases below test one invalid input at a time.","lastModifiedDate":"2016-10-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-13"},{"lineNumber":136,"author":{"gitId":"-"},"content":" public void containsWordIgnoreCase_nullWord_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e StringUtil.containsWordIgnoreCase(\"typical sentence\", null));","lastModifiedDate":"2019-03-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":140,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-13"},{"lineNumber":141,"author":{"gitId":"-"},"content":" public void containsWordIgnoreCase_emptyWord_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, \"Word parameter cannot be empty\", ()","lastModifiedDate":"2019-03-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":" -\u003e StringUtil.containsWordIgnoreCase(\"typical sentence\", \" \"));","lastModifiedDate":"2019-03-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":146,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-13"},{"lineNumber":147,"author":{"gitId":"-"},"content":" public void containsWordIgnoreCase_multipleWords_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, \"Word parameter should be a single word\", ()","lastModifiedDate":"2019-03-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":" -\u003e StringUtil.containsWordIgnoreCase(\"typical sentence\", \"aaa BBB\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-13"},{"lineNumber":153,"author":{"gitId":"-"},"content":" public void containsWordIgnoreCase_nullSentence_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":154,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e StringUtil.containsWordIgnoreCase(null, \"abc\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":157,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-13"},{"lineNumber":158,"author":{"gitId":"-"},"content":" * Valid equivalence partitions for word:","lastModifiedDate":"2016-10-13"},{"lineNumber":159,"author":{"gitId":"-"},"content":" * - any word","lastModifiedDate":"2016-10-13"},{"lineNumber":160,"author":{"gitId":"-"},"content":" * - word containing symbols/numbers","lastModifiedDate":"2016-10-13"},{"lineNumber":161,"author":{"gitId":"-"},"content":" * - word with leading/trailing spaces","lastModifiedDate":"2016-10-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-13"},{"lineNumber":163,"author":{"gitId":"-"},"content":" * Valid equivalence partitions for sentence:","lastModifiedDate":"2016-10-13"},{"lineNumber":164,"author":{"gitId":"-"},"content":" * - empty string","lastModifiedDate":"2016-10-13"},{"lineNumber":165,"author":{"gitId":"-"},"content":" * - one word","lastModifiedDate":"2016-10-13"},{"lineNumber":166,"author":{"gitId":"-"},"content":" * - multiple words","lastModifiedDate":"2016-10-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":" * - sentence with extra spaces","lastModifiedDate":"2016-10-13"},{"lineNumber":168,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-13"},{"lineNumber":169,"author":{"gitId":"-"},"content":" * Possible scenarios returning true:","lastModifiedDate":"2016-10-13"},{"lineNumber":170,"author":{"gitId":"-"},"content":" * - matches first word in sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":171,"author":{"gitId":"-"},"content":" * - last word in sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":172,"author":{"gitId":"-"},"content":" * - middle word in sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":173,"author":{"gitId":"-"},"content":" * - matches multiple words","lastModifiedDate":"2016-10-13"},{"lineNumber":174,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-13"},{"lineNumber":175,"author":{"gitId":"-"},"content":" * Possible scenarios returning false:","lastModifiedDate":"2016-10-13"},{"lineNumber":176,"author":{"gitId":"-"},"content":" * - query word matches part of a sentence word","lastModifiedDate":"2016-10-13"},{"lineNumber":177,"author":{"gitId":"-"},"content":" * - sentence word matches part of the query word","lastModifiedDate":"2016-10-13"},{"lineNumber":178,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-13"},{"lineNumber":179,"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":180,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-13"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":182,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-13"},{"lineNumber":183,"author":{"gitId":"-"},"content":" public void containsWordIgnoreCase_validInputs_correctResult() {","lastModifiedDate":"2016-10-13"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":185,"author":{"gitId":"-"},"content":" // Empty sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":186,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.containsWordIgnoreCase(\"\", \"abc\")); // Boundary case","lastModifiedDate":"2016-10-13"},{"lineNumber":187,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.containsWordIgnoreCase(\" \", \"123\"));","lastModifiedDate":"2016-10-13"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":189,"author":{"gitId":"-"},"content":" // Matches word in the sentence, different upper/lower case letters","lastModifiedDate":"2016-10-13"},{"lineNumber":190,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\"aaa bBb ccc\", \"Bbb\")); // First word (boundary case)","lastModifiedDate":"2016-10-13"},{"lineNumber":191,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\"aaa bBb ccc@1\", \"CCc@1\")); // Last word (boundary case)","lastModifiedDate":"2016-10-13"},{"lineNumber":192,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\" AAA bBb ccc \", \"aaa\")); // Sentence has extra spaces","lastModifiedDate":"2016-10-13"},{"lineNumber":193,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\"Aaa\", \"aaa\")); // Only one word in sentence (boundary case)","lastModifiedDate":"2016-10-13"},{"lineNumber":194,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\"aaa bbb ccc\", \" ccc \")); // Leading/trailing spaces","lastModifiedDate":"2016-10-13"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":196,"author":{"gitId":"-"},"content":" // Matches multiple words in sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":197,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\"AAA bBb ccc bbb\", \"bbB\"));","lastModifiedDate":"2016-10-13"},{"lineNumber":198,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":200,"author":{"gitId":"-"},"content":" //---------------- Tests for getDetails --------------------------------------","lastModifiedDate":"2016-10-13"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":202,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-13"},{"lineNumber":203,"author":{"gitId":"-"},"content":" * Equivalence Partitions: null, valid throwable object","lastModifiedDate":"2016-10-13"},{"lineNumber":204,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-13"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":206,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-30"},{"lineNumber":207,"author":{"gitId":"-"},"content":" public void getDetails_exceptionGiven() {","lastModifiedDate":"2016-09-30"},{"lineNumber":208,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.getDetails(new FileNotFoundException(\"file not found\"))","lastModifiedDate":"2019-03-14"},{"lineNumber":209,"author":{"gitId":"-"},"content":" .contains(\"java.io.FileNotFoundException: file not found\"));","lastModifiedDate":"2019-03-14"},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":212,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-30"},{"lineNumber":213,"author":{"gitId":"-"},"content":" public void getDetails_nullGiven_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":214,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e StringUtil.getDetails(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":217,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"yapxuanxuan":78,"-":139}},{"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":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"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":"sindhurajain"},"content":"import static seedu.address.logic.commands.DeleteCommand.MESSAGE_PERSON_NOT_FOUND;","lastModifiedDate":"2024-03-13"},{"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":"sindhurajain"},"content":" assertCommandException(deleteCommand, String.format(MESSAGE_PERSON_NOT_FOUND, \"9\"));","lastModifiedDate":"2024-03-13"},{"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":"-"},"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":"-"},"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":{"sindhurajain":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_ADDRESS;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05"},{"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":"yapxuanxuan"},"content":" public static final String VALID_COMPANY_AMY \u003d \"TikTok\";","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"yapxuanxuan"},"content":" public static final String VALID_COMPANY_BOB \u003d \"Google\";","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"sindhurajain"},"content":" public static final String VALID_PRIORITY_AMY \u003d \"high\";","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"sindhurajain"},"content":" public static final String VALID_PRIORITY_BOB \u003d \"med\";","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":55,"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":56,"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":57,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05"},{"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":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05"},{"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":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05"},{"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":{"yapxuanxuan":2,"sindhurajain":2,"-":128}},{"path":"src/test/java/seedu/address/logic/commands/CompanyCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yapxuanxuan"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"yapxuanxuan"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"yapxuanxuan"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"yapxuanxuan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_COMPANY_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"yapxuanxuan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_COMPANY_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"yapxuanxuan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"yapxuanxuan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"yapxuanxuan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"yapxuanxuan"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"yapxuanxuan"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"yapxuanxuan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.model.person.Company;","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"yapxuanxuan"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"yapxuanxuan"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"yapxuanxuan"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"yapxuanxuan"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"yapxuanxuan"},"content":"public class CompanyCommandTest {","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"yapxuanxuan"},"content":" private static final String COMPANY_STUB \u003d \"Some company\";","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"yapxuanxuan"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"yapxuanxuan"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"yapxuanxuan"},"content":" public void execute_addCompanyUnfilteredList_success() {","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"yapxuanxuan"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"yapxuanxuan"},"content":" Person editedPerson \u003d new PersonBuilder(firstPerson).withCompany(COMPANY_STUB).build();","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"yapxuanxuan"},"content":" CompanyCommand companyCommand \u003d new CompanyCommand(editedPerson.getName().fullName,","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"yapxuanxuan"},"content":" new Company(editedPerson.getCompany().value));","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"yapxuanxuan"},"content":" String expectedMessage \u003d String.format(CompanyCommand.MESSAGE_ADD_COMPANY_SUCCESS,","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"yapxuanxuan"},"content":" editedPerson.getName().fullName, editedPerson.getCompany().value);","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"yapxuanxuan"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"yapxuanxuan"},"content":" expectedModel.setPerson(firstPerson, editedPerson);","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"yapxuanxuan"},"content":" assertCommandSuccess(companyCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"yapxuanxuan"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"yapxuanxuan"},"content":" public void execute_deleteCompanyUnfilteredList_success() {","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"yapxuanxuan"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"yapxuanxuan"},"content":" Person editedPerson \u003d new PersonBuilder(firstPerson).withCompany(\"\").build();","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"yapxuanxuan"},"content":" CompanyCommand companyCommand \u003d new CompanyCommand(editedPerson.getName().fullName,","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"yapxuanxuan"},"content":" new Company(editedPerson.getCompany().toString()));","lastModifiedDate":"2024-03-13"},{"lineNumber":56,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"yapxuanxuan"},"content":" String expectedMessage \u003d String.format(CompanyCommand.MESSAGE_DELETE_COMPANY_SUCCESS,","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"yapxuanxuan"},"content":" editedPerson.getName().fullName);","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":60,"author":{"gitId":"yapxuanxuan"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"lineNumber":61,"author":{"gitId":"yapxuanxuan"},"content":" expectedModel.setPerson(firstPerson, editedPerson);","lastModifiedDate":"2024-03-13"},{"lineNumber":62,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":63,"author":{"gitId":"yapxuanxuan"},"content":" assertCommandSuccess(companyCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-13"},{"lineNumber":64,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":65,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":66,"author":{"gitId":"yapxuanxuan"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":67,"author":{"gitId":"yapxuanxuan"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2024-03-13"},{"lineNumber":68,"author":{"gitId":"yapxuanxuan"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-13"},{"lineNumber":69,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":70,"author":{"gitId":"yapxuanxuan"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"yapxuanxuan"},"content":" Person editedPerson \u003d new PersonBuilder(model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased()))","lastModifiedDate":"2024-03-13"},{"lineNumber":72,"author":{"gitId":"yapxuanxuan"},"content":" .withCompany(COMPANY_STUB).build();","lastModifiedDate":"2024-03-13"},{"lineNumber":73,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":74,"author":{"gitId":"yapxuanxuan"},"content":" CompanyCommand companyCommand \u003d new CompanyCommand(editedPerson.getName().fullName,","lastModifiedDate":"2024-03-13"},{"lineNumber":75,"author":{"gitId":"yapxuanxuan"},"content":" new Company(editedPerson.getCompany().value));","lastModifiedDate":"2024-03-13"},{"lineNumber":76,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":77,"author":{"gitId":"yapxuanxuan"},"content":" String expectedMessage \u003d String.format(CompanyCommand.MESSAGE_ADD_COMPANY_SUCCESS,","lastModifiedDate":"2024-03-13"},{"lineNumber":78,"author":{"gitId":"yapxuanxuan"},"content":" editedPerson.getName().fullName, editedPerson.getCompany().value);","lastModifiedDate":"2024-03-13"},{"lineNumber":79,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":80,"author":{"gitId":"yapxuanxuan"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"lineNumber":81,"author":{"gitId":"yapxuanxuan"},"content":" expectedModel.setPerson(firstPerson, editedPerson);","lastModifiedDate":"2024-03-13"},{"lineNumber":82,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":83,"author":{"gitId":"yapxuanxuan"},"content":" assertCommandSuccess(companyCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-13"},{"lineNumber":84,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":85,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":86,"author":{"gitId":"yapxuanxuan"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":87,"author":{"gitId":"yapxuanxuan"},"content":" public void execute_invalidPersonName_throwsCommandException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":88,"author":{"gitId":"yapxuanxuan"},"content":" CompanyCommand companyCommand \u003d new CompanyCommand(\"\",","lastModifiedDate":"2024-03-14"},{"lineNumber":89,"author":{"gitId":"yapxuanxuan"},"content":" new Company(VALID_COMPANY_AMY));","lastModifiedDate":"2024-03-14"},{"lineNumber":90,"author":{"gitId":"yapxuanxuan"},"content":" assertCommandFailure(companyCommand, model, CompanyCommand.MESSAGE_EMPTY_NAME);","lastModifiedDate":"2024-03-14"},{"lineNumber":91,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":92,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":93,"author":{"gitId":"yapxuanxuan"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":94,"author":{"gitId":"yapxuanxuan"},"content":" public void execute_invalidPerson_throwsCommandException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":95,"author":{"gitId":"yapxuanxuan"},"content":" CompanyCommand companyCommand \u003d new CompanyCommand(\"ABC\",","lastModifiedDate":"2024-03-14"},{"lineNumber":96,"author":{"gitId":"yapxuanxuan"},"content":" new Company(VALID_COMPANY_AMY));","lastModifiedDate":"2024-03-14"},{"lineNumber":97,"author":{"gitId":"yapxuanxuan"},"content":" assertCommandFailure(companyCommand, model, String.format(CompanyCommand.MESSAGE_PERSON_NOT_FOUND, \"ABC\"));","lastModifiedDate":"2024-03-14"},{"lineNumber":98,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":99,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":100,"author":{"gitId":"yapxuanxuan"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":101,"author":{"gitId":"yapxuanxuan"},"content":" public void equals() {","lastModifiedDate":"2024-03-14"},{"lineNumber":102,"author":{"gitId":"yapxuanxuan"},"content":" final CompanyCommand standardCommand \u003d new CompanyCommand(\"Amy Reale\",","lastModifiedDate":"2024-03-14"},{"lineNumber":103,"author":{"gitId":"yapxuanxuan"},"content":" new Company(VALID_COMPANY_AMY));","lastModifiedDate":"2024-03-14"},{"lineNumber":104,"author":{"gitId":"yapxuanxuan"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-14"},{"lineNumber":105,"author":{"gitId":"yapxuanxuan"},"content":" CompanyCommand commandWithSameValues \u003d new CompanyCommand(\"Amy Reale\",","lastModifiedDate":"2024-03-14"},{"lineNumber":106,"author":{"gitId":"yapxuanxuan"},"content":" new Company(VALID_COMPANY_AMY));","lastModifiedDate":"2024-03-14"},{"lineNumber":107,"author":{"gitId":"yapxuanxuan"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-03-14"},{"lineNumber":108,"author":{"gitId":"yapxuanxuan"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-14"},{"lineNumber":109,"author":{"gitId":"yapxuanxuan"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-03-14"},{"lineNumber":110,"author":{"gitId":"yapxuanxuan"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":111,"author":{"gitId":"yapxuanxuan"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-03-14"},{"lineNumber":112,"author":{"gitId":"yapxuanxuan"},"content":" // different company tag -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":113,"author":{"gitId":"yapxuanxuan"},"content":" assertFalse(standardCommand.equals(new CompanyCommand(\"Bob Tan\",","lastModifiedDate":"2024-03-14"},{"lineNumber":114,"author":{"gitId":"yapxuanxuan"},"content":" new Company(VALID_COMPANY_BOB))));","lastModifiedDate":"2024-03-14"},{"lineNumber":115,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":116,"author":{"gitId":"yapxuanxuan"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"yapxuanxuan":116}},{"path":"src/test/java/seedu/address/logic/commands/CountCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yapxuanxuan"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"yapxuanxuan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"yapxuanxuan"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"yapxuanxuan"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"yapxuanxuan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"yapxuanxuan"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"yapxuanxuan"},"content":" * Contains integration tests (interaction with the Model) and unit tests for ListCommand.","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"yapxuanxuan"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"yapxuanxuan"},"content":"public class CountCommandTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"yapxuanxuan"},"content":" private Model model;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"yapxuanxuan"},"content":" private Model expectedModel;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"yapxuanxuan"},"content":" @BeforeEach","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"yapxuanxuan"},"content":" public void setUp() {","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"yapxuanxuan"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"yapxuanxuan"},"content":" expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"yapxuanxuan"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"yapxuanxuan"},"content":" public void execute_listIsNotEmpty_showsCount() {","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"yapxuanxuan"},"content":" assertCommandSuccess(new CountCommand(), model, String.format(CountCommand.MESSAGE_SUCCESS,","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"yapxuanxuan"},"content":" model.getFilteredPersonList().size()), expectedModel);","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"yapxuanxuan"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"yapxuanxuan":33}},{"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":"sindhurajain"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"sindhurajain"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2018-01-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2017-06-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"sindhurajain"},"content":" public void execute_validNameUnfilteredList_success() {","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"sindhurajain"},"content":" Person personToDelete \u003d ALICE;","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"sindhurajain"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(personToDelete.getName().fullName);","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":34,"author":{"gitId":"sindhurajain"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS, personToDelete.getName());","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":44,"author":{"gitId":"sindhurajain"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(\"Nonexistent Person\");","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"sindhurajain"},"content":" assertCommandFailure(deleteCommand, model,","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"sindhurajain"},"content":" String.format(DeleteCommand.MESSAGE_PERSON_NOT_FOUND, \"Nonexistent Person\"));","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":50,"author":{"gitId":"sindhurajain"},"content":" public void execute_validNameFilteredList_success() {","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":54,"author":{"gitId":"sindhurajain"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(personToDelete.getName().fullName);","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"sindhurajain"},"content":" personToDelete.getName());","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":" showNoPerson(expectedModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":68,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":70,"author":{"gitId":"sindhurajain"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(\"Nonexistent Person\");","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":72,"author":{"gitId":"sindhurajain"},"content":" assertCommandFailure(deleteCommand, model,","lastModifiedDate":"2024-03-13"},{"lineNumber":73,"author":{"gitId":"sindhurajain"},"content":" String.format(DeleteCommand.MESSAGE_PERSON_NOT_FOUND, \"Nonexistent Person\"));","lastModifiedDate":"2024-03-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":78,"author":{"gitId":"sindhurajain"},"content":" DeleteCommand deleteFirstCommand \u003d new DeleteCommand(ALICE.getName().fullName);","lastModifiedDate":"2024-03-13"},{"lineNumber":79,"author":{"gitId":"sindhurajain"},"content":" DeleteCommand deleteSecondCommand \u003d new DeleteCommand(BOB.getName().fullName);","lastModifiedDate":"2024-03-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":85,"author":{"gitId":"sindhurajain"},"content":" DeleteCommand deleteFirstCommandCopy \u003d new DeleteCommand(ALICE.getName().fullName);","lastModifiedDate":"2024-03-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2017-06-27"},{"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":"2019-02-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":100,"author":{"gitId":"sindhurajain"},"content":" String targetName \u003d \"Test Person\";","lastModifiedDate":"2024-03-13"},{"lineNumber":101,"author":{"gitId":"sindhurajain"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(targetName);","lastModifiedDate":"2024-03-13"},{"lineNumber":102,"author":{"gitId":"sindhurajain"},"content":" String expected \u003d DeleteCommand.class.getCanonicalName() + \"{targetName\u003d\" + targetName + \"}\";","lastModifiedDate":"2024-03-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertEquals(expected, deleteCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05"},{"lineNumber":108,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":109,"author":{"gitId":"-"},"content":" private void showNoPerson(Model model) {","lastModifiedDate":"2017-06-05"},{"lineNumber":110,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2017-06-12"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertTrue(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2018-02-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"sindhurajain":21,"-":93}},{"path":"src/test/java/seedu/address/logic/commands/FilterHighPriorityCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sindhurajain"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"sindhurajain"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"sindhurajain"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"sindhurajain"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"sindhurajain"},"content":"import static seedu.address.testutil.TypicalPersons.CARL;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"sindhurajain"},"content":"import static seedu.address.testutil.TypicalPersons.ELLE;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"sindhurajain"},"content":"import static seedu.address.testutil.TypicalPersons.FIONA;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"sindhurajain"},"content":"import static seedu.address.testutil.TypicalPersons.GEORGE;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"sindhurajain"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"sindhurajain"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"sindhurajain"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"sindhurajain"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"sindhurajain"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"sindhurajain"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"sindhurajain"},"content":"public class FilterHighPriorityCommandTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"sindhurajain"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"sindhurajain"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"sindhurajain"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"sindhurajain"},"content":" public void execute_filterHighPriority_success() {","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"sindhurajain"},"content":" expectedModel.updateFilteredPersonList(person -\u003e person.getPriority().value.equals(\"high\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"sindhurajain"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"sindhurajain"},"content":" FilterHighPriorityCommand.MESSAGE_SUCCESS);","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"sindhurajain"},"content":" assertCommandSuccess(new FilterHighPriorityCommand(), model, expectedCommandResult, expectedModel);","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"sindhurajain"},"content":" assertEquals(Arrays.asList(ALICE, CARL, ELLE, FIONA, GEORGE), model.getFilteredPersonList());","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"sindhurajain"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"sindhurajain"},"content":" public void execute_filterHighPriority_noContactsFound() {","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"sindhurajain"},"content":" model.deletePerson(ALICE);","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"sindhurajain"},"content":" model.deletePerson(CARL);","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"sindhurajain"},"content":" model.deletePerson(ELLE);","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"sindhurajain"},"content":" model.deletePerson(FIONA);","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"sindhurajain"},"content":" model.deletePerson(GEORGE);","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"sindhurajain"},"content":" expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"sindhurajain"},"content":" expectedModel.updateFilteredPersonList(person -\u003e person.getPriority().value.equals(\"high\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"sindhurajain"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"sindhurajain"},"content":" FilterHighPriorityCommand.MESSAGE_NO_CONTACTS_FOUND);","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"sindhurajain"},"content":" assertCommandSuccess(new FilterHighPriorityCommand(), model, expectedCommandResult, expectedModel);","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"sindhurajain"},"content":" assertEquals(Arrays.asList(), model.getFilteredPersonList());","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"sindhurajain"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"sindhurajain":48}},{"path":"src/test/java/seedu/address/logic/commands/FilterMedPriorityCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sindhurajain"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"sindhurajain"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"sindhurajain"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"sindhurajain"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"sindhurajain"},"content":"import static seedu.address.testutil.TypicalPersons.DANIEL;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"sindhurajain"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"sindhurajain"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"sindhurajain"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"sindhurajain"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"sindhurajain"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"sindhurajain"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"sindhurajain"},"content":"public class FilterMedPriorityCommandTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"sindhurajain"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"sindhurajain"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"sindhurajain"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"sindhurajain"},"content":" public void execute_filterMedPriority_success() {","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"sindhurajain"},"content":" expectedModel.updateFilteredPersonList(person -\u003e person.getPriority().value.equals(\"med\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"sindhurajain"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"sindhurajain"},"content":" FilterMedPriorityCommand.MESSAGE_SUCCESS);","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"sindhurajain"},"content":" assertCommandSuccess(new FilterMedPriorityCommand(), model, expectedCommandResult, expectedModel);","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"sindhurajain"},"content":" assertEquals(Arrays.asList(BENSON, DANIEL), model.getFilteredPersonList());","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"sindhurajain"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"sindhurajain"},"content":" public void execute_filterMedPriority_noContactsFound() {","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"sindhurajain"},"content":" model.deletePerson(BENSON);","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"sindhurajain"},"content":" model.deletePerson(DANIEL);","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"sindhurajain"},"content":" expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"sindhurajain"},"content":" expectedModel.updateFilteredPersonList(person -\u003e person.getPriority().value.equals(\"med\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"sindhurajain"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"sindhurajain"},"content":" FilterMedPriorityCommand.MESSAGE_NO_CONTACTS_FOUND);","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"sindhurajain"},"content":" assertCommandSuccess(new FilterMedPriorityCommand(), model, expectedCommandResult, expectedModel);","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"sindhurajain"},"content":" assertEquals(Arrays.asList(), model.getFilteredPersonList());","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"sindhurajain"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"sindhurajain":40}},{"path":"src/test/java/seedu/address/logic/commands/FindCompanyCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yapxuanxuan"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"yapxuanxuan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"yapxuanxuan"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"yapxuanxuan"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"yapxuanxuan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"yapxuanxuan"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"yapxuanxuan"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"yapxuanxuan"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"yapxuanxuan"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"yapxuanxuan"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"yapxuanxuan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.model.person.CompanyContainsKeywordsPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"yapxuanxuan"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"yapxuanxuan"},"content":" * Contains integration tests (interaction with the Model) for {@code FindCompanyCommand}.","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"yapxuanxuan"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"yapxuanxuan"},"content":"public class FindCompanyCommandTest {","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"yapxuanxuan"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"yapxuanxuan"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"yapxuanxuan"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"yapxuanxuan"},"content":" public void equals() {","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"yapxuanxuan"},"content":" CompanyContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"yapxuanxuan"},"content":" new CompanyContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"yapxuanxuan"},"content":" CompanyContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"yapxuanxuan"},"content":" new CompanyContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"yapxuanxuan"},"content":" FindCompanyCommand findFirstCommand \u003d new FindCompanyCommand(firstPredicate);","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"yapxuanxuan"},"content":" FindCompanyCommand findSecondCommand \u003d new FindCompanyCommand(secondPredicate);","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"yapxuanxuan"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"yapxuanxuan"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"yapxuanxuan"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"yapxuanxuan"},"content":" FindCompanyCommand findFirstCommandCopy \u003d new FindCompanyCommand(firstPredicate);","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"yapxuanxuan"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"yapxuanxuan"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"yapxuanxuan"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"yapxuanxuan"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"yapxuanxuan"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"yapxuanxuan"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"yapxuanxuan"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"yapxuanxuan"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"yapxuanxuan"},"content":" public void execute_zeroKeywords_noPersonFound() {","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"yapxuanxuan"},"content":" String expectedMessage \u003d String.format(FindCompanyCommand.MESSAGE_FIND_COMPANY_SUCCESS, 0, \"contacts\");","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"yapxuanxuan"},"content":" CompanyContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"yapxuanxuan"},"content":" FindCompanyCommand command \u003d new FindCompanyCommand(predicate);","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"yapxuanxuan"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"yapxuanxuan"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"yapxuanxuan"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"yapxuanxuan"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"yapxuanxuan"},"content":" public void execute_multipleKeywords_multiplePersonsFound() {","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"yapxuanxuan"},"content":" String expectedMessage \u003d String.format(FindCompanyCommand.MESSAGE_FIND_COMPANY_SUCCESS, 2, \"contacts\");","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"yapxuanxuan"},"content":" CompanyContainsKeywordsPredicate predicate \u003d preparePredicate(\"TikTok Google\");","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"yapxuanxuan"},"content":" FindCompanyCommand command \u003d new FindCompanyCommand(predicate);","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"yapxuanxuan"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"yapxuanxuan"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"yapxuanxuan"},"content":" assertEquals(Arrays.asList(ALICE, BENSON), model.getFilteredPersonList());","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"yapxuanxuan"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"yapxuanxuan"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"yapxuanxuan"},"content":" CompanyContainsKeywordsPredicate predicate \u003d new CompanyContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"yapxuanxuan"},"content":" FindCompanyCommand findCommand \u003d new FindCompanyCommand(predicate);","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"yapxuanxuan"},"content":" String expected \u003d FindCompanyCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"yapxuanxuan"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"yapxuanxuan"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"yapxuanxuan"},"content":" * Parses {@code userInput} into a {@code CompanyContainsKeywordsPredicate}.","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"yapxuanxuan"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"yapxuanxuan"},"content":" private CompanyContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"yapxuanxuan"},"content":" return new CompanyContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"yapxuanxuan"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"yapxuanxuan":89}},{"path":"src/test/java/seedu/address/logic/commands/PriorityCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"sindhurajain"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"sindhurajain"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"sindhurajain"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"sindhurajain"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PRIORITY_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"sindhurajain"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PRIORITY_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"sindhurajain"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"sindhurajain"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"sindhurajain"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"sindhurajain"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"sindhurajain"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"sindhurajain"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"sindhurajain"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"sindhurajain"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"sindhurajain"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"sindhurajain"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"sindhurajain"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"sindhurajain"},"content":"import seedu.address.model.person.Priority;","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"sindhurajain"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"sindhurajain"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"sindhurajain"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"sindhurajain"},"content":" * {@code PriorityCommand}.","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"sindhurajain"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"sindhurajain"},"content":"public class PriorityCommandTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"sindhurajain"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"sindhurajain"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"sindhurajain"},"content":" public void execute_addPriorityUnfilteredList_success() {","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"sindhurajain"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"sindhurajain"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"sindhurajain"},"content":" Person editedPerson \u003d new PersonBuilder(firstPerson).withPriority(\"high\").build();","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"sindhurajain"},"content":" PriorityCommand priorityCommand \u003d new PriorityCommand(editedPerson.getName().fullName,","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"sindhurajain"},"content":" new Priority(editedPerson.getPriority().value));","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"sindhurajain"},"content":" String expectedMessage \u003d String.format(PriorityCommand.MESSAGE_ADD_PRIORITY_SUCCESS,","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"sindhurajain"},"content":" \"high\", \"**\", editedPerson.getName().fullName, editedPerson.getPhone(), editedPerson.getEmail());","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"sindhurajain"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"sindhurajain"},"content":" expectedModel.setPerson(firstPerson, editedPerson);","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"sindhurajain"},"content":" assertCommandSuccess(priorityCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"sindhurajain"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"sindhurajain"},"content":" public void execute_deletePriorityUnfilteredList_success() {","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"sindhurajain"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"sindhurajain"},"content":" Person editedPerson \u003d new PersonBuilder(firstPerson).withPriority(\"\").build();","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"sindhurajain"},"content":" PriorityCommand priorityCommand \u003d new PriorityCommand(firstPerson.getName().fullName,","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"sindhurajain"},"content":" new Priority(\"\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"sindhurajain"},"content":" String expectedMessage \u003d String.format(PriorityCommand.MESSAGE_DELETE_PRIORITY_SUCCESS,","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"sindhurajain"},"content":" editedPerson.getName().fullName);","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"sindhurajain"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"sindhurajain"},"content":" expectedModel.setPerson(firstPerson, editedPerson);","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"sindhurajain"},"content":" assertCommandSuccess(priorityCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"sindhurajain"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"sindhurajain"},"content":" public void execute_invalidPersonName_throwsCommandException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"sindhurajain"},"content":" PriorityCommand priorityCommand \u003d new PriorityCommand(\"\",","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"sindhurajain"},"content":" new Priority(VALID_PRIORITY_AMY));","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"sindhurajain"},"content":" assertCommandFailure(priorityCommand, model, PriorityCommand.MESSAGE_EMPTY_NAME);","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"sindhurajain"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"sindhurajain"},"content":" public void execute_invalidPerson_throwsCommandException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"sindhurajain"},"content":" PriorityCommand priorityCommand \u003d new PriorityCommand(\"ABC\",","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"sindhurajain"},"content":" new Priority(\"high\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"sindhurajain"},"content":" assertCommandFailure(priorityCommand, model, String.format(PriorityCommand.MESSAGE_PERSON_NOT_FOUND, \"ABC\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"sindhurajain"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"sindhurajain"},"content":" public void equals() {","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"sindhurajain"},"content":" final PriorityCommand standardCommand \u003d new PriorityCommand(\"Amy Reale\",","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"sindhurajain"},"content":" new Priority(VALID_PRIORITY_AMY));","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"sindhurajain"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"sindhurajain"},"content":" PriorityCommand commandWithSameValues \u003d new PriorityCommand(\"Amy Reale\",","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"sindhurajain"},"content":" new Priority(VALID_PRIORITY_AMY));","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"sindhurajain"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"sindhurajain"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"sindhurajain"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"sindhurajain"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"sindhurajain"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"sindhurajain"},"content":" // different priority -\u003e returns false","lastModifiedDate":"2024-03-24"},{"lineNumber":94,"author":{"gitId":"sindhurajain"},"content":" assertFalse(standardCommand.equals(new PriorityCommand(\"Bob Tan\",","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"sindhurajain"},"content":" new Priority(VALID_PRIORITY_BOB))));","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"sindhurajain"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"sindhurajain":97}},{"path":"src/test/java/seedu/address/logic/commands/StarCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"FangRuoqing"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"FangRuoqing"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"FangRuoqing"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"FangRuoqing"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"FangRuoqing"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"FangRuoqing"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"FangRuoqing"},"content":"import java.util.List;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"FangRuoqing"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"FangRuoqing"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"FangRuoqing"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"FangRuoqing"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"FangRuoqing"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"FangRuoqing"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"FangRuoqing"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"FangRuoqing"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"FangRuoqing"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"FangRuoqing"},"content":"public class StarCommandTest {","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"FangRuoqing"},"content":" private static final String CONTACT_STUB \u003d \"Alex Yeoh\";","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"FangRuoqing"},"content":" private Model model \u003d new ModelManager(SampleDataUtil.getSampleAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"FangRuoqing"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"FangRuoqing"},"content":" public void execute_contactNotFound_throwsCommandException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"FangRuoqing"},"content":" StarCommand starCommand \u003d new StarCommand(\"Nonexistent Contact\");","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"FangRuoqing"},"content":" assertCommandFailure(starCommand, model, \"Error! Contact not found: Nonexistent Contact\");","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"FangRuoqing"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"FangRuoqing"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"FangRuoqing"},"content":" public void execute_contactFoundAndStarred_successful() {","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"FangRuoqing"},"content":" StarCommand starCommand \u003d new StarCommand(CONTACT_STUB);","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"FangRuoqing"},"content":" ReadOnlyAddressBook initialAddressBook \u003d model.getAddressBook();","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"FangRuoqing"},"content":" List\u003cPerson\u003e initialPersonList \u003d initialAddressBook.getPersonList();","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"FangRuoqing"},"content":" Person contactToStar \u003d null;","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"FangRuoqing"},"content":" for (Person person : initialPersonList) {","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"FangRuoqing"},"content":" if (person.getName().fullName.equalsIgnoreCase(CONTACT_STUB)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"FangRuoqing"},"content":" contactToStar \u003d person;","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"FangRuoqing"},"content":" break;","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"FangRuoqing"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"FangRuoqing"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"FangRuoqing"},"content":" assertTrue(contactToStar !\u003d null); // Assert that the contact is found initially","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"FangRuoqing"},"content":" String expectedMessage \u003d \"Nice! I have starred this contact:\\n\" + contactToStar.getName() + \" ★\";","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"FangRuoqing"},"content":" Person expectedStarredContact \u003d new Person(contactToStar.getName(), contactToStar.getPhone(),","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"FangRuoqing"},"content":" contactToStar.getEmail(), contactToStar.getAddress(), contactToStar.getCompany(),","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"FangRuoqing"},"content":" contactToStar.getPriority(), true, contactToStar.getTags());","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"FangRuoqing"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"FangRuoqing"},"content":" expectedModel.setPerson(contactToStar, expectedStarredContact);","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"FangRuoqing"},"content":" expectedModel.updateFilteredPersonList(Model.PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"FangRuoqing"},"content":" assertCommandSuccess(starCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"FangRuoqing"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"FangRuoqing"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"FangRuoqing"},"content":" public void execute_validContactName_starsContact() throws Exception {","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"FangRuoqing"},"content":" // Arrange","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"FangRuoqing"},"content":" String contactName \u003d \"Alex Tan\";","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"FangRuoqing"},"content":" Person personToStar \u003d new PersonBuilder().withName(contactName).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"FangRuoqing"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"FangRuoqing"},"content":" model.addPerson(personToStar);","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"FangRuoqing"},"content":" StarCommand starCommand \u003d new StarCommand(contactName);","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"FangRuoqing"},"content":" // Act","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"FangRuoqing"},"content":" CommandResult commandResult \u003d starCommand.execute(model);","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"FangRuoqing"},"content":" // Assert","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"FangRuoqing"},"content":" Person starredPerson \u003d model.getFilteredPersonList().get(0);","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"FangRuoqing"},"content":" assertEquals(\"Nice! I have starred this contact:\\nAlex Tan ★\", commandResult.getFeedbackToUser());","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"FangRuoqing"},"content":" assertEquals(contactName, starredPerson.getName().fullName);","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"FangRuoqing"},"content":" assertEquals(true, starredPerson.isStarred());","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"FangRuoqing"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"FangRuoqing"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"FangRuoqing"},"content":" public void equals() {","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"FangRuoqing"},"content":" StarCommand starCommand1 \u003d new StarCommand(\"Alex\");","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"FangRuoqing"},"content":" StarCommand starCommand2 \u003d new StarCommand(\"Alex\");","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"FangRuoqing"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"FangRuoqing"},"content":" assertEquals(starCommand1, starCommand1);","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"FangRuoqing"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"FangRuoqing"},"content":" assertEquals(starCommand1, starCommand2);","lastModifiedDate":"2024-03-21"},{"lineNumber":90,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":91,"author":{"gitId":"FangRuoqing"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":92,"author":{"gitId":"FangRuoqing"},"content":" assertNotEquals(starCommand1, 1);","lastModifiedDate":"2024-03-21"},{"lineNumber":93,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":94,"author":{"gitId":"FangRuoqing"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":95,"author":{"gitId":"FangRuoqing"},"content":" assertNotEquals(starCommand1, null);","lastModifiedDate":"2024-03-21"},{"lineNumber":96,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":97,"author":{"gitId":"FangRuoqing"},"content":" // different contactName -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":98,"author":{"gitId":"FangRuoqing"},"content":" StarCommand differentStarCommand \u003d new StarCommand(\"John\");","lastModifiedDate":"2024-03-21"},{"lineNumber":99,"author":{"gitId":"FangRuoqing"},"content":" assertNotEquals(starCommand1, differentStarCommand);","lastModifiedDate":"2024-03-21"},{"lineNumber":100,"author":{"gitId":"FangRuoqing"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":101,"author":{"gitId":"FangRuoqing"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"FangRuoqing":101}},{"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":"-"},"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":"-"},"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":"-"},"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":"-"},"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":"-"},"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":"tahnya"},"content":" // assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-03-13"},{"lineNumber":154,"author":{"gitId":"tahnya"},"content":" // expectedMessage);","lastModifiedDate":"2024-03-13"},{"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":"tahnya"},"content":" // assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2024-03-13"},{"lineNumber":158,"author":{"gitId":"tahnya"},"content":" // expectedMessage);","lastModifiedDate":"2024-03-13"},{"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":"-"},"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":{"tahnya":4,"-":192}},{"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":"sindhurajain"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":19,"author":{"gitId":"FangRuoqing"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.logic.commands.CountCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-06-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":25,"author":{"gitId":"sindhurajain"},"content":"import seedu.address.logic.commands.FilterHighPriorityCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"sindhurajain"},"content":"import seedu.address.logic.commands.FilterMedPriorityCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":28,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.logic.commands.FindCompanyCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":31,"author":{"gitId":"sindhurajain"},"content":"import seedu.address.logic.commands.PriorityCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"FangRuoqing"},"content":"import seedu.address.logic.commands.StarCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24"},{"lineNumber":34,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.model.person.CompanyContainsKeywordsPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27"},{"lineNumber":37,"author":{"gitId":"sindhurajain"},"content":"import seedu.address.model.person.Priority;","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27"},{"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":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":60,"author":{"gitId":"sindhurajain"},"content":" public void parseCommand_delete() throws ParseException {","lastModifiedDate":"2024-03-13"},{"lineNumber":61,"author":{"gitId":"sindhurajain"},"content":" String testName \u003d ALICE.getName().toString();","lastModifiedDate":"2024-03-13"},{"lineNumber":62,"author":{"gitId":"sindhurajain"},"content":" String userInput \u003d DeleteCommand.COMMAND_WORD + \" \" + testName;","lastModifiedDate":"2024-03-13"},{"lineNumber":63,"author":{"gitId":"sindhurajain"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(userInput);","lastModifiedDate":"2024-03-13"},{"lineNumber":64,"author":{"gitId":"sindhurajain"},"content":" assertTrue(command instanceof DeleteCommand);","lastModifiedDate":"2024-03-13"},{"lineNumber":65,"author":{"gitId":"sindhurajain"},"content":" assertEquals(testName, command.getTargetName());","lastModifiedDate":"2024-03-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2018-03-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command);","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":"2017-06-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","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_find() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12"},{"lineNumber":86,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"yapxuanxuan"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":92,"author":{"gitId":"yapxuanxuan"},"content":" public void parseCommand_findCompany() throws Exception {","lastModifiedDate":"2024-03-21"},{"lineNumber":93,"author":{"gitId":"yapxuanxuan"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2024-03-21"},{"lineNumber":94,"author":{"gitId":"yapxuanxuan"},"content":" FindCompanyCommand command \u003d (FindCompanyCommand) parser.parseCommand(","lastModifiedDate":"2024-03-21"},{"lineNumber":95,"author":{"gitId":"yapxuanxuan"},"content":" FindCompanyCommand.COMMAND_WORD + \" \" + keywords.stream().collect(","lastModifiedDate":"2024-03-21"},{"lineNumber":96,"author":{"gitId":"yapxuanxuan"},"content":" Collectors.joining(\" \")));","lastModifiedDate":"2024-03-21"},{"lineNumber":97,"author":{"gitId":"yapxuanxuan"},"content":" assertEquals(new FindCompanyCommand(new CompanyContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2024-03-21"},{"lineNumber":98,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":99,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","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":"yapxuanxuan"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":113,"author":{"gitId":"yapxuanxuan"},"content":" public void parseCommand_count() throws Exception {","lastModifiedDate":"2024-03-21"},{"lineNumber":114,"author":{"gitId":"yapxuanxuan"},"content":" assertTrue(parser.parseCommand(CountCommand.COMMAND_WORD) instanceof CountCommand);","lastModifiedDate":"2024-03-21"},{"lineNumber":115,"author":{"gitId":"yapxuanxuan"},"content":" assertTrue(parser.parseCommand(CountCommand.COMMAND_WORD + \" 3\") instanceof CountCommand);","lastModifiedDate":"2024-03-21"},{"lineNumber":116,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":117,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":118,"author":{"gitId":"sindhurajain"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":119,"author":{"gitId":"sindhurajain"},"content":" public void parseCommand_priorityHigh() throws Exception {","lastModifiedDate":"2024-03-20"},{"lineNumber":120,"author":{"gitId":"sindhurajain"},"content":" String testName \u003d ALICE.getName().toString();","lastModifiedDate":"2024-03-20"},{"lineNumber":121,"author":{"gitId":"sindhurajain"},"content":" String userInput \u003d PriorityCommand.COMMAND_WORD_HIGH + \" Alice Pauline\";","lastModifiedDate":"2024-03-20"},{"lineNumber":122,"author":{"gitId":"sindhurajain"},"content":" PriorityCommand command \u003d (PriorityCommand) parser.parseCommand(userInput);","lastModifiedDate":"2024-03-20"},{"lineNumber":123,"author":{"gitId":"sindhurajain"},"content":" assertEquals(new PriorityCommand(testName, new Priority(\"high\")), command);","lastModifiedDate":"2024-03-20"},{"lineNumber":124,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":125,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":126,"author":{"gitId":"sindhurajain"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":127,"author":{"gitId":"sindhurajain"},"content":" public void parseCommand_priorityMed() throws Exception {","lastModifiedDate":"2024-03-20"},{"lineNumber":128,"author":{"gitId":"sindhurajain"},"content":" String testName \u003d ALICE.getName().toString();","lastModifiedDate":"2024-03-20"},{"lineNumber":129,"author":{"gitId":"sindhurajain"},"content":" String userInput \u003d PriorityCommand.COMMAND_WORD_MED + \" Alice Pauline\";","lastModifiedDate":"2024-03-20"},{"lineNumber":130,"author":{"gitId":"sindhurajain"},"content":" PriorityCommand command \u003d (PriorityCommand) parser.parseCommand(userInput);","lastModifiedDate":"2024-03-20"},{"lineNumber":131,"author":{"gitId":"sindhurajain"},"content":" assertEquals(new PriorityCommand(testName, new Priority(\"med\")), command);","lastModifiedDate":"2024-03-20"},{"lineNumber":132,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":133,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":134,"author":{"gitId":"sindhurajain"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":135,"author":{"gitId":"sindhurajain"},"content":" public void parseCommand_filterHighPriority() throws Exception {","lastModifiedDate":"2024-03-20"},{"lineNumber":136,"author":{"gitId":"sindhurajain"},"content":" assertTrue(parser.parseCommand(FilterHighPriorityCommand.COMMAND_WORD) instanceof FilterHighPriorityCommand);","lastModifiedDate":"2024-03-20"},{"lineNumber":137,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":138,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":139,"author":{"gitId":"sindhurajain"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":140,"author":{"gitId":"sindhurajain"},"content":" public void parseCommand_filterMedPriority() throws Exception {","lastModifiedDate":"2024-03-20"},{"lineNumber":141,"author":{"gitId":"sindhurajain"},"content":" assertTrue(parser.parseCommand(FilterMedPriorityCommand.COMMAND_WORD) instanceof FilterMedPriorityCommand);","lastModifiedDate":"2024-03-20"},{"lineNumber":142,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":143,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":145,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":150,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":151,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":154,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":155,"author":{"gitId":"FangRuoqing"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":156,"author":{"gitId":"FangRuoqing"},"content":" public void parseCommand_validStarCommand_returnsStarCommand() throws Exception {","lastModifiedDate":"2024-03-21"},{"lineNumber":157,"author":{"gitId":"FangRuoqing"},"content":" AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2024-03-21"},{"lineNumber":158,"author":{"gitId":"FangRuoqing"},"content":" String userInput \u003d \"star John Doe\";","lastModifiedDate":"2024-03-21"},{"lineNumber":159,"author":{"gitId":"FangRuoqing"},"content":" Command command \u003d parser.parseCommand(userInput);","lastModifiedDate":"2024-03-21"},{"lineNumber":160,"author":{"gitId":"FangRuoqing"},"content":" assertEquals(StarCommand.class, command.getClass());","lastModifiedDate":"2024-03-21"},{"lineNumber":161,"author":{"gitId":"FangRuoqing"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":162,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":163,"author":{"gitId":"FangRuoqing"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":164,"author":{"gitId":"FangRuoqing"},"content":" public void parseCommand_invalidCommand_throwsParseException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":165,"author":{"gitId":"FangRuoqing"},"content":" AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2024-03-21"},{"lineNumber":166,"author":{"gitId":"FangRuoqing"},"content":" String userInput \u003d \"invalid command\";","lastModifiedDate":"2024-03-21"},{"lineNumber":167,"author":{"gitId":"FangRuoqing"},"content":" assertThrows(ParseException.class, () -\u003e parser.parseCommand(userInput));","lastModifiedDate":"2024-03-21"},{"lineNumber":168,"author":{"gitId":"FangRuoqing"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":169,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"yapxuanxuan":18,"FangRuoqing":17,"sindhurajain":37,"-":97}},{"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":"sindhurajain"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-13"},{"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":"sindhurajain"},"content":" assertParseSuccess(parser, \"Alice Pauline\", new DeleteCommand(ALICE.getName().toString()));","lastModifiedDate":"2024-03-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":"sindhurajain"},"content":" assertParseFailure(parser, \"\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09"}],"authorContributionMap":{"sindhurajain":3,"-":29}},{"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":"-"},"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":"yapxuanxuan"},"content":" assertParseFailure(parser, \" \", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"yapxuanxuan"},"content":" FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsFindCommand() {","lastModifiedDate":"2017-08-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2017-06-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" FindCommand expectedFindCommand \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" new FindCommand(new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\")));","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, \"Alice Bob\", expectedFindCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2017-06-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, \" \\n Alice \\n \\t Bob \\t\", expectedFindCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-27"}],"authorContributionMap":{"yapxuanxuan":2,"-":33}},{"path":"src/test/java/seedu/address/logic/parser/FindCompanyCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yapxuanxuan"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"yapxuanxuan"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"yapxuanxuan"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"yapxuanxuan"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"yapxuanxuan"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"yapxuanxuan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.logic.commands.FindCompanyCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.model.person.CompanyContainsKeywordsPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"yapxuanxuan"},"content":"public class FindCompanyCommandParserTest {","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"yapxuanxuan"},"content":" private FindCompanyCommandParser parser \u003d new FindCompanyCommandParser();","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"yapxuanxuan"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"yapxuanxuan"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"yapxuanxuan"},"content":" assertParseFailure(parser, \" \", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"yapxuanxuan"},"content":" FindCompanyCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"yapxuanxuan"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"yapxuanxuan"},"content":" public void parse_validArgs_returnsFindCommand() {","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"yapxuanxuan"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"yapxuanxuan"},"content":" FindCompanyCommand expectedFindCompanyCommand \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"yapxuanxuan"},"content":" new FindCompanyCommand(new CompanyContainsKeywordsPredicate(Arrays.asList(\"Google\", \"Microsoft\")));","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"yapxuanxuan"},"content":" assertParseSuccess(parser, \"Google Microsoft\", expectedFindCompanyCommand);","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"yapxuanxuan"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"yapxuanxuan"},"content":" assertParseSuccess(parser, \" \\n Google \\n \\t Microsoft \\t\", expectedFindCompanyCommand);","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"yapxuanxuan"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"yapxuanxuan":35}},{"path":"src/test/java/seedu/address/logic/parser/StarCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"FangRuoqing"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"FangRuoqing"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"FangRuoqing"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"FangRuoqing"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"FangRuoqing"},"content":"public class StarCommandParserTest {","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"FangRuoqing"},"content":" private final StarCommandParser parser \u003d new StarCommandParser();","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"FangRuoqing"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"FangRuoqing"},"content":" public void parse_emptyInput_throwsParseException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"FangRuoqing"},"content":" // Arrange","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"FangRuoqing"},"content":" String userInput \u003d \"\";","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"FangRuoqing"},"content":" // Act and Assert","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"FangRuoqing"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(userInput));","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"FangRuoqing"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"FangRuoqing"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"FangRuoqing"},"content":" public void parse_nullInput_throwsNullPointerException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"FangRuoqing"},"content":" // Act and Assert","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"FangRuoqing"},"content":" assertThrows(NullPointerException.class, () -\u003e parser.parse(null));","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"FangRuoqing"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"FangRuoqing"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"FangRuoqing":28}},{"path":"src/test/java/seedu/address/model/person/AddressTest.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 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":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidAddress_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"tahnya"},"content":" String invalidAddress \u003d \" \";","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Address(invalidAddress));","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-13"},{"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":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // invalid addresses","lastModifiedDate":"2017-01-16"},{"lineNumber":28,"author":{"gitId":"tahnya"},"content":" assertFalse(Address.isValidAddress(\" \")); // spaces only","lastModifiedDate":"2024-03-13"},{"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":"tahnya"},"content":" assertTrue(Address.isValidAddress(\"\")); // empty address if not entered","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertTrue(Address.isValidAddress(\"Blk 456, Den Road, #01-355\"));","lastModifiedDate":"2017-01-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertTrue(Address.isValidAddress(\"-\")); // one character","lastModifiedDate":"2017-01-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertTrue(Address.isValidAddress(\"Leng Inc; 1234 Market St; San Francisco CA 2349879; USA\")); // long address","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" Address address \u003d new Address(\"Valid Address\");","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertTrue(address.equals(new Address(\"Valid Address\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(address.equals(address));","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(address.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(address.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertFalse(address.equals(new Address(\"Other Valid Address\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"tahnya":3,"-":54}},{"path":"src/test/java/seedu/address/model/person/CompanyContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yapxuanxuan"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"yapxuanxuan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"yapxuanxuan"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"yapxuanxuan"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"yapxuanxuan"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"yapxuanxuan"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"yapxuanxuan"},"content":"import java.util.List;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"yapxuanxuan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"yapxuanxuan"},"content":"public class CompanyContainsKeywordsPredicateTest {","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"yapxuanxuan"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"yapxuanxuan"},"content":" public void equals() {","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"yapxuanxuan"},"content":" List\u003cString\u003e firstPredicateKeywordList \u003d Collections.singletonList(\"first\");","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"yapxuanxuan"},"content":" List\u003cString\u003e secondPredicateKeywordList \u003d Arrays.asList(\"first\", \"second\");","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"yapxuanxuan"},"content":" CompanyContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"yapxuanxuan"},"content":" new CompanyContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"yapxuanxuan"},"content":" CompanyContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"yapxuanxuan"},"content":" new CompanyContainsKeywordsPredicate(secondPredicateKeywordList);","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"yapxuanxuan"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"yapxuanxuan"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"yapxuanxuan"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"yapxuanxuan"},"content":" CompanyContainsKeywordsPredicate firstPredicateCopy \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"yapxuanxuan"},"content":" new CompanyContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"yapxuanxuan"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"yapxuanxuan"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"yapxuanxuan"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"yapxuanxuan"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"yapxuanxuan"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"yapxuanxuan"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"yapxuanxuan"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"yapxuanxuan"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"yapxuanxuan"},"content":" public void test_nameContainsKeywords_returnsTrue() {","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"yapxuanxuan"},"content":" // One keyword","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"yapxuanxuan"},"content":" CompanyContainsKeywordsPredicate predicate \u003d new CompanyContainsKeywordsPredicate(","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"yapxuanxuan"},"content":" Collections.singletonList(\"TikTok\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"yapxuanxuan"},"content":" assertTrue(predicate.test(new PersonBuilder().withCompany(\"TikTok\").build()));","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"yapxuanxuan"},"content":" // Multiple keywords","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"yapxuanxuan"},"content":" predicate \u003d new CompanyContainsKeywordsPredicate(Arrays.asList(\"OCBC\", \"Bank\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"yapxuanxuan"},"content":" assertTrue(predicate.test(new PersonBuilder().withCompany(\"OCBC Bank\").build()));","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"yapxuanxuan"},"content":" // Only one matching keyword","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"yapxuanxuan"},"content":" predicate \u003d new CompanyContainsKeywordsPredicate(Arrays.asList(\"Microsoft\", \"Facebook\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"yapxuanxuan"},"content":" assertTrue(predicate.test(new PersonBuilder().withCompany(\"Microsoft\").build()));","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"yapxuanxuan"},"content":" // Mixed-case keyword","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"yapxuanxuan"},"content":" predicate \u003d new CompanyContainsKeywordsPredicate(Arrays.asList(\"gOOgle\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"yapxuanxuan"},"content":" assertTrue(predicate.test(new PersonBuilder().withCompany(\"Google\").build()));","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"yapxuanxuan"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"yapxuanxuan"},"content":" public void test_nameDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"yapxuanxuan"},"content":" // Zero keywords","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"yapxuanxuan"},"content":" CompanyContainsKeywordsPredicate predicate \u003d new CompanyContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"yapxuanxuan"},"content":" assertFalse(predicate.test(new PersonBuilder().withCompany(\"TikTok\").build()));","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"yapxuanxuan"},"content":" // Non-matching keyword","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"yapxuanxuan"},"content":" predicate \u003d new CompanyContainsKeywordsPredicate(Arrays.asList(\"Facebook\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"yapxuanxuan"},"content":" assertFalse(predicate.test(new PersonBuilder().withCompany(\"Google\").build()));","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"yapxuanxuan"},"content":" // Keywords match phone, email and address, but does not match name","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"yapxuanxuan"},"content":" predicate \u003d new CompanyContainsKeywordsPredicate(Arrays.asList(\"12345\", \"alice@email.com\", \"Main\", \"Street\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"yapxuanxuan"},"content":" assertFalse(predicate.test(new PersonBuilder().withCompany(\"TikTok\").withPhone(\"12345\")","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"yapxuanxuan"},"content":" .withEmail(\"alice@email.com\").withAddress(\"Main Street\").build()));","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"yapxuanxuan"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"yapxuanxuan"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"yapxuanxuan"},"content":" List\u003cString\u003e keywords \u003d List.of(\"keyword1\", \"keyword2\");","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"yapxuanxuan"},"content":" CompanyContainsKeywordsPredicate predicate \u003d new CompanyContainsKeywordsPredicate(keywords);","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"yapxuanxuan"},"content":" String expected \u003d CompanyContainsKeywordsPredicate.class.getCanonicalName() + \"{keywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"yapxuanxuan"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"yapxuanxuan"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"yapxuanxuan":89}},{"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":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidEmail_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"tahnya"},"content":" String invalidEmail \u003d \"email\";","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Email(invalidEmail));","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-13"},{"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":"tahnya"},"content":" assertFalse(Email.isValidEmail(\"randomtext\")); // not email format","lastModifiedDate":"2024-03-13"},{"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":"tahnya"},"content":" assertTrue(Email.isValidEmail(\"\")); // empty email if not entered","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack_1190@example.com\")); // underscore in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack.1190@example.com\")); // period in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack+1190@example.com\")); // \u0027+\u0027 symbol in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack-1190@example.com\")); // hyphen in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"a@bc\")); // minimal","lastModifiedDate":"2018-02-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"test@localhost\")); // alphabets only","lastModifiedDate":"2017-01-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"123@145\")); // numeric local part and domain name","lastModifiedDate":"2017-01-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"a1+be.d@example1.com\")); // mixture of alphanumeric and special characters","lastModifiedDate":"2021-07-20"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"peter_jack@very-very-very-long-example.com\")); // long domain name","lastModifiedDate":"2018-02-09"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"if.you.dream.it_you.can.do.it@example.com\")); // long local part","lastModifiedDate":"2017-04-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"e1234567@u.nus.edu\")); // more than one period in domain","lastModifiedDate":"2021-07-20"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" Email email \u003d new Email(\"valid@email\");","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertTrue(email.equals(new Email(\"valid@email\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertTrue(email.equals(email));","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertFalse(email.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertFalse(email.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertFalse(email.equals(new Email(\"other.valid@email\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"tahnya":3,"-":86}},{"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":"-"},"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":"-"},"content":" .withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2020-12-18"},{"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":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2018-04-18"},{"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":"-"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2019-02-23"},{"lineNumber":96,"author":{"gitId":"yapxuanxuan"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", address\u003d\" + ALICE.getAddress() + \", company\u003d\" + ALICE.getCompany()","lastModifiedDate":"2024-03-13"},{"lineNumber":97,"author":{"gitId":"FangRuoqing"},"content":" + \", priority\u003d\" + ALICE.getPriority() + \", starred\u003d\" + ALICE.isStarred()","lastModifiedDate":"2024-03-21"},{"lineNumber":98,"author":{"gitId":"FangRuoqing"},"content":" + \", tags\u003d\" + ALICE.getTags() + \"}\";","lastModifiedDate":"2024-03-21"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"yapxuanxuan":1,"FangRuoqing":2,"-":98}},{"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":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"yapxuanxuan"},"content":" private static final String VALID_GROUP \u003d BENSON.getCompany().toString();","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"sindhurajain"},"content":" private static final String VALID_PRIORITY \u003d BENSON.getPriority().toString();","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"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":"FangRuoqing"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"FangRuoqing"},"content":" VALID_GROUP, VALID_PRIORITY, false, VALID_TAGS);","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"yapxuanxuan"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"FangRuoqing"},"content":" VALID_GROUP, VALID_PRIORITY, false, VALID_TAGS);","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-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 toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"FangRuoqing"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"FangRuoqing"},"content":" VALID_GROUP, VALID_PRIORITY, false, VALID_TAGS);","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.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_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"yapxuanxuan"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-13"},{"lineNumber":72,"author":{"gitId":"FangRuoqing"},"content":" VALID_GROUP, VALID_PRIORITY, false, VALID_TAGS);","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"FangRuoqing"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"FangRuoqing"},"content":" VALID_GROUP, VALID_PRIORITY, false, VALID_TAGS);","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"yapxuanxuan"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null, VALID_ADDRESS,","lastModifiedDate":"2024-03-13"},{"lineNumber":89,"author":{"gitId":"FangRuoqing"},"content":" VALID_GROUP, VALID_PRIORITY, false, VALID_TAGS);","lastModifiedDate":"2024-03-21"},{"lineNumber":90,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"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":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"FangRuoqing"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_ADDRESS,","lastModifiedDate":"2024-03-21"},{"lineNumber":98,"author":{"gitId":"FangRuoqing"},"content":" VALID_GROUP, VALID_PRIORITY, false, VALID_TAGS);","lastModifiedDate":"2024-03-21"},{"lineNumber":99,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"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_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"yapxuanxuan"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, null,","lastModifiedDate":"2024-03-13"},{"lineNumber":106,"author":{"gitId":"FangRuoqing"},"content":" VALID_GROUP, VALID_PRIORITY, false, VALID_TAGS);","lastModifiedDate":"2024-03-21"},{"lineNumber":107,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"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 toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":116,"author":{"gitId":"FangRuoqing"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-21"},{"lineNumber":117,"author":{"gitId":"FangRuoqing"},"content":" VALID_GROUP, VALID_PRIORITY, false, invalidTags);","lastModifiedDate":"2024-03-21"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"yapxuanxuan":5,"FangRuoqing":14,"sindhurajain":2,"-":99}},{"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":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"yapxuanxuan"},"content":"import seedu.address.model.person.Company;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"sindhurajain"},"content":"import seedu.address.model.person.Priority;","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05"},{"lineNumber":25,"author":{"gitId":"yapxuanxuan"},"content":" public static final String DEFAULT_COMPANY \u003d \"\";","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"sindhurajain"},"content":" public static final String DEFAULT_PRIORITY \u003d \"high\";","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"FangRuoqing"},"content":" public static final Boolean DEFAULT_STAR \u003d false;","lastModifiedDate":"2024-03-21"},{"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":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20"},{"lineNumber":33,"author":{"gitId":"yapxuanxuan"},"content":" private Company company;","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"sindhurajain"},"content":" private Priority priority;","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"FangRuoqing"},"content":" private Boolean starred;","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20"},{"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":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20"},{"lineNumber":46,"author":{"gitId":"yapxuanxuan"},"content":" company \u003d new Company(DEFAULT_COMPANY);","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"sindhurajain"},"content":" priority \u003d new Priority(DEFAULT_PRIORITY);","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"FangRuoqing"},"content":" starred \u003d DEFAULT_STAR;","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"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":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20"},{"lineNumber":60,"author":{"gitId":"yapxuanxuan"},"content":" company \u003d personToCopy.getCompany();","lastModifiedDate":"2024-03-13"},{"lineNumber":61,"author":{"gitId":"sindhurajain"},"content":" priority \u003d personToCopy.getPriority();","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"FangRuoqing"},"content":" starred \u003d personToCopy.isStarred();","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20"},{"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":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":84,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} 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":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":94,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20"},{"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":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":100,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":102,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20"},{"lineNumber":103,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":106,"author":{"gitId":"yapxuanxuan"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":107,"author":{"gitId":"yapxuanxuan"},"content":" * Sets the {@code Company} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-13"},{"lineNumber":108,"author":{"gitId":"yapxuanxuan"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":109,"author":{"gitId":"yapxuanxuan"},"content":" public PersonBuilder withCompany(String company) {","lastModifiedDate":"2024-03-13"},{"lineNumber":110,"author":{"gitId":"yapxuanxuan"},"content":" this.company \u003d new Company(company);","lastModifiedDate":"2024-03-13"},{"lineNumber":111,"author":{"gitId":"yapxuanxuan"},"content":" return this;","lastModifiedDate":"2024-03-13"},{"lineNumber":112,"author":{"gitId":"yapxuanxuan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":113,"author":{"gitId":"yapxuanxuan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":114,"author":{"gitId":"FangRuoqing"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":115,"author":{"gitId":"FangRuoqing"},"content":" * Sets the {@code Star} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-21"},{"lineNumber":116,"author":{"gitId":"FangRuoqing"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":117,"author":{"gitId":"FangRuoqing"},"content":" public PersonBuilder withStar(Boolean starred) {","lastModifiedDate":"2024-03-21"},{"lineNumber":118,"author":{"gitId":"FangRuoqing"},"content":" this.starred \u003d starred;","lastModifiedDate":"2024-03-21"},{"lineNumber":119,"author":{"gitId":"FangRuoqing"},"content":" return this;","lastModifiedDate":"2024-03-21"},{"lineNumber":120,"author":{"gitId":"FangRuoqing"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":121,"author":{"gitId":"FangRuoqing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":122,"author":{"gitId":"sindhurajain"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":123,"author":{"gitId":"sindhurajain"},"content":" * Sets the {@code Priority} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-20"},{"lineNumber":124,"author":{"gitId":"sindhurajain"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":125,"author":{"gitId":"sindhurajain"},"content":" public PersonBuilder withPriority(String priority) {","lastModifiedDate":"2024-03-20"},{"lineNumber":126,"author":{"gitId":"sindhurajain"},"content":" this.priority \u003d new Priority(priority);","lastModifiedDate":"2024-03-20"},{"lineNumber":127,"author":{"gitId":"sindhurajain"},"content":" return this;","lastModifiedDate":"2024-03-20"},{"lineNumber":128,"author":{"gitId":"sindhurajain"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":129,"author":{"gitId":"sindhurajain"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":130,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05"},{"lineNumber":131,"author":{"gitId":"FangRuoqing"},"content":" return new Person(name, phone, email, address, company, priority, starred, tags);","lastModifiedDate":"2024-03-21"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":134,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03"}],"authorContributionMap":{"yapxuanxuan":13,"FangRuoqing":13,"sindhurajain":13,"-":95}},{"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":"FangRuoqing"},"content":" .withPhone(\"94351253\").withCompany(\"TikTok\").withPriority(\"high\").withStar(false)","lastModifiedDate":"2024-03-21"},{"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":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"FangRuoqing"},"content":" .withCompany(\"Google\").withPriority(\"med\").withStar(false)","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" .withTags(\"owesMoney\", \"friends\").build();","lastModifiedDate":"2016-09-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2018-01-10"},{"lineNumber":36,"author":{"gitId":"FangRuoqing"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\").withStar(false).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2018-01-10"},{"lineNumber":38,"author":{"gitId":"sindhurajain"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\")","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"FangRuoqing"},"content":" .withPriority(\"med\").withStar(false).withTags(\"friends\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2018-01-10"},{"lineNumber":41,"author":{"gitId":"FangRuoqing"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\").withStar(false).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2018-01-10"},{"lineNumber":43,"author":{"gitId":"FangRuoqing"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\").withStar(false).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2018-01-10"},{"lineNumber":45,"author":{"gitId":"FangRuoqing"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\").withStar(false).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2018-01-10"},{"lineNumber":49,"author":{"gitId":"FangRuoqing"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\").withStar(false).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2018-01-10"},{"lineNumber":51,"author":{"gitId":"FangRuoqing"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\").withStar(false).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2018-01-10"},{"lineNumber":55,"author":{"gitId":"FangRuoqing"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withStar(false)","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"FangRuoqing"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2018-01-10"},{"lineNumber":58,"author":{"gitId":"FangRuoqing"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withStar(false)","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"FangRuoqing"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2017-09-21"},{"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":"2017-07-20"},{"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":{"FangRuoqing":13,"sindhurajain":1,"-":66}}] diff --git a/AY2324S2-CS2103T-F14-4_tp_master/commits.json b/AY2324S2-CS2103T-F14-4_tp_master/commits.json index f7cb2971..e4b64a38 100644 --- a/AY2324S2-CS2103T-F14-4_tp_master/commits.json +++ b/AY2324S2-CS2103T-F14-4_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"tahnya":[{"date":"2024-03-06","commitResults":[{"hash":"3e56eb55784764c3cb88ffa172ab80e93fcfea8b","isMergeCommit":false,"messageTitle":"Update AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"468c1c0b06d0d93294dad4c633eb8913237a2d98","isMergeCommit":false,"messageTitle":"Update AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"9bee186001c39783b82661ce7ad3bb352ffa530e","isMergeCommit":true,"messageTitle":"Merge pull request #17 from tahnya/branch-ui-image","messageBody":"Update UI image","fileTypesAndContributionMap":{}}]},{"date":"2024-03-07","commitResults":[{"hash":"e5b2a74efd06c0b522f17b41d3ee3c82aaf7747a","isMergeCommit":false,"messageTitle":"Update AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"0fc3862118b28cc5cedbfdf966aac731b2be93a1","isMergeCommit":true,"messageTitle":"Merge pull request #18 from tahnya/branch-aboutus","messageBody":"Update AboutUs","fileTypesAndContributionMap":{}}]},{"date":"2024-03-13","commitResults":[{"hash":"75a5d58961e10af79ff75cf7e91ef426e4984cd1","isMergeCommit":false,"messageTitle":"Modify AddCommand","messageBody":"Make Email and Address parameters optional\n","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":5}}},{"hash":"c61d4a74ee2028e03036a7c3cd802e4a095fa2e9","isMergeCommit":false,"messageTitle":"Update Tests address, email","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":16,"deletions":16}}},{"hash":"9521425fcaad6a1af2f9b62efc9a3bb3831ef881","isMergeCommit":false,"messageTitle":"Update tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":6}}},{"hash":"21ca396b1fe02912ef6ef6c6a600d2aca6d2a1a8","isMergeCommit":false,"messageTitle":"Update tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":10,"deletions":10}}},{"hash":"e883fe3012998701cd04af0bef28b19e45ed2d01","isMergeCommit":false,"messageTitle":"Update tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"20526b0af8663b9bdc4577a6c832ce8f3a3685bd","isMergeCommit":false,"messageTitle":"Update tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":10,"deletions":10}}},{"hash":"7198df01918363d2a1e125b889f8bf82dc828e94","isMergeCommit":false,"messageTitle":"Update tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"a10a82e5ab773bef2fb1b9cafa16b652165f44e9","isMergeCommit":false,"messageTitle":"Update tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"48ab760aa2e87bc90e797174c81d6f9873a8b340","isMergeCommit":false,"messageTitle":"Update tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":1}}}]},{"date":"2024-03-21","commitResults":[{"hash":"f5fd4bf0b7d04da74b86918d32cc74f3a81cc4be","isMergeCommit":false,"messageTitle":"Update GUI","messageBody":"Changed to green theme\n","fileTypesAndContributionMap":{"functional-code":{"insertions":66,"deletions":54}}},{"hash":"a8447c1fa86a6bff668eb0467a58990002baec05","isMergeCommit":false,"messageTitle":"Refactor DarkTheme to GreenTheme","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"other":{"insertions":0,"deletions":0}}},{"hash":"ffbaa847d798c532ab297be2772f58cddc993886","isMergeCommit":false,"messageTitle":"Update theme","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":3}}},{"hash":"63a98cb47fa70df4b9156004a242c353f0559efb","isMergeCommit":false,"messageTitle":"Update green theme","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"4bd3c71bc2f3940b63bb5ede79dc9d37922bad78","isMergeCommit":false,"messageTitle":"Refactor theme","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"other":{"insertions":0,"deletions":0}}},{"hash":"9a1596b6ea7be7d6fd8ba8d70494822ff892eb57","isMergeCommit":true,"messageTitle":"Merge pull request #57 from tahnya/update-gui","messageBody":"Update GUI","fileTypesAndContributionMap":{}}]}],"yapxuanxuan":[{"date":"2024-03-06","commitResults":[{"hash":"cbbfce938b5fd4387140c3ff47698115ff1c3f93","isMergeCommit":false,"messageTitle":"Updated AboutUs and Use Cases in Developer Guide.","messageBody":"Updated AboutUs with my details. Added use cases for Adding,\nDeleting, Listing, Editing, Categorizing and Tagging.\n","fileTypesAndContributionMap":{"docs":{"insertions":181,"deletions":16}}}]},{"date":"2024-03-07","commitResults":[{"hash":"bdd274c0b90402c187351bf15d8860249d49152f","isMergeCommit":true,"messageTitle":"Merge pull request #19 from yapxuanxuan/UseCases","messageBody":"Updated AboutUs and Use Cases in Developer Guide.","fileTypesAndContributionMap":{}},{"hash":"c61d735b0c6badf84cdbcd01b96df45034586d4f","isMergeCommit":true,"messageTitle":"Merge pull request #2 from AY2324S2-CS2103T-F14-4/master","messageBody":"Merge team repo to my fork (Week 7 tP completed)","fileTypesAndContributionMap":{}}]},{"date":"2024-03-12","commitResults":[{"hash":"3854d4bf9121120b9e2380fde930e4f45c7429e1","isMergeCommit":false,"messageTitle":"Updated User Guide to reflect our planned v1.2 features.","messageBody":"Did not include the assign priority feature and add company tag feature.\nI was not sure about how to go about it since both features are related\nto the add command. To be further discussed and planned.\n\nUser Guide to be edited in the future when implementation of v1.2\nfeatures is completed to ensure an accurate User Guide.\n","fileTypesAndContributionMap":{"docs":{"insertions":79,"deletions":22}}}]},{"date":"2024-03-13","commitResults":[{"hash":"e336ed4cdaf64a2d59c63a784b2ada37fadecbf3","isMergeCommit":false,"messageTitle":"Created CompanyCommand class for the add company tag feature.","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":164,"deletions":0}}},{"hash":"6d86c947c4dfd14ddfa1bb2c632fe89f572723fc","isMergeCommit":false,"messageTitle":"Created CompanyCommand class for the add the company tag feature.","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":140,"deletions":83},"test-code":{"insertions":30,"deletions":17}}},{"hash":"2dc943a0707ffac17a3f67be8051eb34c7253634","isMergeCommit":false,"messageTitle":"Updated code to pass CI tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":0}}},{"hash":"b91993cec12976ccc77bc090df807d4b68faf002","isMergeCommit":false,"messageTitle":"Update","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0}}},{"hash":"cd67cd354f945176b9febafd5a3eb5eed82d7cbd","isMergeCommit":false,"messageTitle":"Update Code","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":6}}},{"hash":"b13f52ff93d593e87210c51934e8b2bec4af5f59","isMergeCommit":false,"messageTitle":"Update to resolve checkstyle problems","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":60,"deletions":17}}},{"hash":"fd03754f7a4fcac280f915033ae707ce61dd0c61","isMergeCommit":false,"messageTitle":"Update","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":10}}},{"hash":"cf43147345e4ceb7620382af7092ba1b95f57280","isMergeCommit":false,"messageTitle":"Update","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":5}}},{"hash":"fc29e5e8ec43b19749b4ec56eabd0c7bc5e6f04e","isMergeCommit":false,"messageTitle":"Update","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":5}}},{"hash":"fa67d43b988e334ce9b6329a4c60d22ed9f522ae","isMergeCommit":false,"messageTitle":"Resolve checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":5}}},{"hash":"8a56167b13ea6fb312eae15b7c898eecf78bbe06","isMergeCommit":false,"messageTitle":"Update","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"7de8295da741d084bcf9dd093e9a374666a999fa","isMergeCommit":false,"messageTitle":"Update","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":1}}},{"hash":"ac2ee2fd3350f79a327ad0f5149cdaa48c42a61a","isMergeCommit":false,"messageTitle":"Resolved Test issues","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":1}}},{"hash":"fdb7168b08502f1dcb8b44a2b19e6159e344fd3c","isMergeCommit":false,"messageTitle":"Added CompanyCommandTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":4},"test-code":{"insertions":85,"deletions":0}}},{"hash":"f507348a1f2ca577ad5c1299efe4e4d78d555f3b","isMergeCommit":false,"messageTitle":"Updated CompanyCommandTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":3}}}]},{"date":"2024-03-14","commitResults":[{"hash":"9969855d6238a18c149a34f0670e840a85233fe2","isMergeCommit":false,"messageTitle":"Updated CompanyCommandTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4},"test-code":{"insertions":22,"deletions":6}}},{"hash":"0690f2e9a388be5187d297a1dfcfe90ca030f537","isMergeCommit":false,"messageTitle":"Minor update","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"50deaf50fe4a6960b08430689710aedb4c5c212a","isMergeCommit":false,"messageTitle":"Update","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}},{"hash":"f2bf14aa1a29794fcf8be9f04c077a7b26c0e4b3","isMergeCommit":false,"messageTitle":"Updated Code Logic to be simpler and consistent.","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":42}}},{"hash":"d7460782f1c488c154ec83d9839f1d70cddca507","isMergeCommit":false,"messageTitle":"Update","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":24}}},{"hash":"3e205e4d71700c03f2b70b490603317469bb18dd","isMergeCommit":false,"messageTitle":"Added more test cases to CompanyCommandTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":2},"test-code":{"insertions":15,"deletions":0}}},{"hash":"321443aa195c79f011e113106daef23f2cb83ebc","isMergeCommit":true,"messageTitle":"Merge pull request #38 from yapxuanxuan/CompanyCommand","messageBody":"Added Company command to add company tags to the contacts","fileTypesAndContributionMap":{}}]},{"date":"2024-03-19","commitResults":[{"hash":"ee87939c98b225fc0c818105d925f630b168b062","isMergeCommit":false,"messageTitle":"Created CountCommand Class to handle count command.","messageBody":"Users can now check the number of contacts they have by using the new\n\u0027count\u0027 command\n","fileTypesAndContributionMap":{"functional-code":{"insertions":29,"deletions":0},"test-code":{"insertions":34,"deletions":1}}},{"hash":"65c6521472829a6be50cfe6f16432700674376a7","isMergeCommit":false,"messageTitle":"Resolved Checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"022278e4cce9b39b4c6b11384110268310fe9d5b","isMergeCommit":false,"messageTitle":"Updated the format of the command result to match feature specifications.","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":2}}}]},{"date":"2024-03-20","commitResults":[{"hash":"1a54f5b104ff69da8b533ceec3bedefadcbc26d3","isMergeCommit":false,"messageTitle":"Edited BetterModelClassDiagram and ModelClassDiagram to include the new attribute of a person, company.","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":0}}},{"hash":"8302e31eeda88e29ca19f0172185661463e1d397","isMergeCommit":false,"messageTitle":"Revert \"Edited BetterModelClassDiagram and ModelClassDiagram to include the new\"","messageBody":"This reverts commit 1a54f5b104ff69da8b533ceec3bedefadcbc26d3.\n","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":3}}},{"hash":"b1e2a04f435220e68d563b5c604c849590868fac","isMergeCommit":true,"messageTitle":"Merge commit \u00271a54f5b104ff69da8b533ceec3bedefadcbc26d3\u0027 into CountCommand","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b20effb72052a50ee4ffa7f6d72d9b7cee00c8a0","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into quick-add","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"47bcb09a0e7d85b534dbf2ea35d15e96c0094753","isMergeCommit":true,"messageTitle":"Merge pull request #35 from tahnya/quick-add","messageBody":"Modify AddCommand","fileTypesAndContributionMap":{}},{"hash":"ab518395a46fca028804ccf2562efa22520ca27b","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-F14-4:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"55aa3fab7f2643fa7b648977ad3946a0be3fb947","isMergeCommit":true,"messageTitle":"Merge pull request #49 from yapxuanxuan/CountCommand","messageBody":"Created CountCommand Class to handle count command.","fileTypesAndContributionMap":{}},{"hash":"1aa72af0e0f1eb423526900c93aa78804d913b37","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-F14-4:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"529e23003778ed2cc194d7b6103e6f3fdfe3e796","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into UserGuide","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"5aa1f9990db50c5a5e32144553be85f0a09a22dd","isMergeCommit":false,"messageTitle":"Updated User Guide to match our v1.2 features","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":30,"deletions":16}}},{"hash":"e696d957d81268e3db21138e5138f68f5af0f0dc","isMergeCommit":true,"messageTitle":"Merge pull request #34 from yapxuanxuan/UserGuide","messageBody":"Updated User guide to reflect features for v1.2 and adapt UG to Connectify","fileTypesAndContributionMap":{}},{"hash":"bfe3b56913724c84d59358ca3f0489ea8637b571","isMergeCommit":false,"messageTitle":"Created FindCompanyCommand class.","messageBody":"Users can now find contacts by their company tag name.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":143,"deletions":15}}},{"hash":"d06e093d817a476841f6f4a6524df22789565a08","isMergeCommit":false,"messageTitle":"Created FindCompanyCommand class and updated GUI.","messageBody":"Users can now find contacts by their company tags. Company tag GUI\nhas been updated to look different from other contact information.\n\nEmpty email, address and company GUI details updated such that\nthere won\u0027t be any gaps shown if these attributes do not exist for\nthe contact\n","fileTypesAndContributionMap":{"functional-code":{"insertions":71,"deletions":9},"test-code":{"insertions":289,"deletions":1}}},{"hash":"6ea68699296d531cdb61b31b05bb49baf9423cf1","isMergeCommit":false,"messageTitle":"Resolved Checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":17,"deletions":3}}},{"hash":"0f3a55a34c4bee6de808cac5e5e3b90aaa1b7ef2","isMergeCommit":false,"messageTitle":"Update","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":3}}},{"hash":"5c5089dff39ffd2230084874096632fb8544ae2f","isMergeCommit":false,"messageTitle":"Final update for checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":2}}},{"hash":"4e8fb0f53aa159084523eda2a72ba362fb8efcb1","isMergeCommit":false,"messageTitle":"Added test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":23},"test-code":{"insertions":18,"deletions":0}}},{"hash":"ac02d66ef307fb005b079caeb0155eae995d9a4a","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into FindCompany","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4cac51d6310cf02ed730d5804c210a0f030874bb","isMergeCommit":true,"messageTitle":"Merge pull request #54 from yapxuanxuan/FindCompany","messageBody":"Find Company command","fileTypesAndContributionMap":{}},{"hash":"bd9585392f4aa1f173649e7a680e3013e8a263f7","isMergeCommit":false,"messageTitle":"Resolve checkstyle issues from resolving merge conflict","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}},{"hash":"ff34082bcaeca8590b31aa74424ef5bcc2513076","isMergeCommit":true,"messageTitle":"Merge pull request #58 from yapxuanxuan/FindCompany","messageBody":"Resolve checkstyle issues from resolving merge conflict","fileTypesAndContributionMap":{}},{"hash":"3fc8088bb95d3b296a5f6aa356784a7aac78df00","isMergeCommit":false,"messageTitle":"Fixed GUI for company tag.","messageBody":"Also added code to ensure that there is no empty gaps if contact\ndoes not have optional email and address.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":33,"deletions":11}}},{"hash":"0aec1e59cc7096b4c7d2591806c7020848eb89d3","isMergeCommit":false,"messageTitle":"Revoked changes to fix GUI because of lack of time to create tests to match coverage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":22}}},{"hash":"c234e1db7c2b67f40bc6985238c732f2cabea840","isMergeCommit":true,"messageTitle":"Merge pull request #59 from yapxuanxuan/master","messageBody":"Fixed GUI for company tag.","tags":["v1.2"],"fileTypesAndContributionMap":{}}]}],"SamuelZero1":[{"date":"2024-03-07","commitResults":[{"hash":"83cddd963e06c57b974c8e80639e4fd8eb3db9c3","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"1624d3e36bca3a9ebd0f90db18685b5201f3748d","isMergeCommit":true,"messageTitle":"Merge pull request #24 from SamuelZero1/master","messageBody":"Update DeveloperGuide.md","fileTypesAndContributionMap":{}},{"hash":"6c7ab7706c170f7d7e2a8177cb6170bd19c3226a","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":0}}},{"hash":"1748957077645d0873915878f08aa11575b89cb2","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":9}}},{"hash":"44ae91993a0c66c5b71a800f778729e927b8a8e3","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"a8ce61e4a43ac7be41fdc60811f527fdad4cbaff","isMergeCommit":true,"messageTitle":"Merge pull request #26 from SamuelZero1/AboutUs","messageBody":"About us","fileTypesAndContributionMap":{}}]}],"FangRuoqing":[{"date":"2024-03-07","commitResults":[{"hash":"213014594f5bfc50bba3981e83daf17f97dca76e","isMergeCommit":false,"messageTitle":"Update AboutUs and DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":24,"deletions":20}}},{"hash":"6c92befa3008b461596c8fdecc58d0cb6d5ec721","isMergeCommit":true,"messageTitle":"Merge pull request #22 from FangRuoqing/branch-AboutUs","messageBody":"Update AboutUs and target user profile and user stories in DG","fileTypesAndContributionMap":{}}]},{"date":"2024-03-13","commitResults":[{"hash":"9371c774655b8c720d95156c102c41693b344edc","isMergeCommit":false,"messageTitle":"Modify the find command so that partial words will also be matched","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":6}}},{"hash":"36fc390d996510bb02d4318e177321f5e033dbbc","isMergeCommit":false,"messageTitle":"Modify the find command and update the StringUtilTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":0,"deletions":4}}},{"hash":"549b72df117973f43ee742f8da3d35423c64876f","isMergeCommit":true,"messageTitle":"Merge pull request #39 from FangRuoqing/branch-command-find","messageBody":"Modify the find command so that partial words will also be matched","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"0f6f521d0b15d5de38cba08f4325d47a84bf40b7","isMergeCommit":false,"messageTitle":"Add StarCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":145,"deletions":14},"test-code":{"insertions":9,"deletions":9}}},{"hash":"15dfc6e8967ff386078d3a5c99840e4005f26671","isMergeCommit":false,"messageTitle":"Update StarCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":10}}}]},{"date":"2024-03-21","commitResults":[{"hash":"617c6c671473600bde787d387f40e33c6d9c33d7","isMergeCommit":false,"messageTitle":"Update star shape","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":35,"deletions":0}}},{"hash":"7597b25c2cd194df90cf8bc87fd915ad9d9ee6d4","isMergeCommit":false,"messageTitle":"Update star","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":2}}},{"hash":"8cdc9a7d558df2e255dac12b17ed7a0486dfb18b","isMergeCommit":false,"messageTitle":"Update test code for star command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":4},"test-code":{"insertions":119,"deletions":12}}},{"hash":"fd0161c54f74b247a13b4d2d0d9d5565c77865f0","isMergeCommit":false,"messageTitle":"Update check style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":44},"test-code":{"insertions":18,"deletions":10}}},{"hash":"985482bfaa84ad5e0ec247fdca37930555f1e280","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-star","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9d8c4eeddacccb431078e5546a8499a9b6a34b7c","isMergeCommit":false,"messageTitle":"Update checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2}}},{"hash":"258a1754f1f84b8678241b0983ddf921d785df3e","isMergeCommit":false,"messageTitle":"Update StarCommand and PriorityCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":2}}},{"hash":"ee0cb1982f9d4f471bfedd5c7e50db6de2ede95b","isMergeCommit":false,"messageTitle":"Update CheckStyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"f5cac4f65f94f8f2d5015c8917d7171d1ebec1b3","isMergeCommit":false,"messageTitle":"Update test code","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"7e425e4e0915e3750e62bfffae55c22ac95a00ec","isMergeCommit":false,"messageTitle":"Update test code","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0},"test-code":{"insertions":19,"deletions":1}}},{"hash":"dc47f03f8ff5942bdbcff6b7a3fc7464e4010be2","isMergeCommit":false,"messageTitle":"Update test code","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":4},"test-code":{"insertions":46,"deletions":13}}},{"hash":"bd6aa41e4a4f7b7e47edec811d600041fc42c69b","isMergeCommit":true,"messageTitle":"Merge pull request #56 from FangRuoqing/branch-star","messageBody":"Create Star Command","fileTypesAndContributionMap":{}}]}],"sindhurajain":[{"date":"2024-02-23","commitResults":[{"hash":"8c6b31b16faafcd28c89212822f5f89ab36eccb7","isMergeCommit":true,"messageTitle":"Merge branch \u0027switch-docs-to-markbind\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"7d99f1690e895b90573aa0d70ac1bfacaf9df9a5","isMergeCommit":false,"messageTitle":"Set up MarkBind","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"854bcc21e4b5793ed9974d351fbdfeea560c7a4c","isMergeCommit":false,"messageTitle":"Add codecov badge to index.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"3cc5d4522176c73994cd939413500c5843a6e792","isMergeCommit":false,"messageTitle":"Revert index.md and add codecov badge to README.md, the correct file","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":1}}}]},{"date":"2024-03-06","commitResults":[{"hash":"d46468baf93ff45bfb29c235567cd24663808ff0","isMergeCommit":false,"messageTitle":"Update contents, GitHub Actions build status badge and acknowledgement in README file","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":11}}},{"hash":"1aa59f1dc23beddd2f3a85f5fcc92b20059a7d41","isMergeCommit":true,"messageTitle":"Merge pull request #16 from sindhurajain/Update-README","messageBody":"Update contents, GitHub Actions build status badge and acknowledgemen…","fileTypesAndContributionMap":{}}]},{"date":"2024-03-07","commitResults":[{"hash":"c69b9cd79415da9d54d327f3c15fb9390670b71a","isMergeCommit":false,"messageTitle":"Update AboutUs with my information","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}},{"hash":"5e34819c4ac7fb6d53f93d13e8374eada3f7e2f8","isMergeCommit":true,"messageTitle":"Merge pull request #20 from sindhurajain/Update-AboutUs","messageBody":"Update AboutUs with my information","fileTypesAndContributionMap":{}},{"hash":"9839b0251b79d338f9ba33b95e9c1d3ffafecfce","isMergeCommit":false,"messageTitle":"Rename image for AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"ff352a751df8316d2ee43557d53d52d67b89d31c","isMergeCommit":true,"messageTitle":"Merge pull request #21 from sindhurajain/Update-AboutUs","messageBody":"Rename image for AboutUs","fileTypesAndContributionMap":{}},{"hash":"22f01ddf53af008f072f77080e82eb33970f8fa8","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-F14-4/tp","messageBody":"","tags":["v1.1"],"fileTypesAndContributionMap":{}}]},{"date":"2024-03-08","commitResults":[{"hash":"ea2ee99583f0da5aff34c7b5f03aa5161178fe4f","isMergeCommit":true,"messageTitle":"Merge pull request #1 from AY2324S2-CS2103T-F14-4/master","messageBody":"Pull from team repo","fileTypesAndContributionMap":{}}]},{"date":"2024-03-13","commitResults":[{"hash":"3165e7c85f1dfb0637787532bede6760afcfba1a","isMergeCommit":false,"messageTitle":"Update code for delete feature and test cases to adhere to delete \u003ccontact_name\u003e format instead of delete \u003cindex\u003e","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":33,"deletions":39},"test-code":{"insertions":34,"deletions":36}}},{"hash":"6bd6fc6c64a539e85947a0f9f896828fbc70918e","isMergeCommit":true,"messageTitle":"Merge pull request #36 from sindhurajain/Update-Delete-Contact","messageBody":"Update delete contact","fileTypesAndContributionMap":{}}]},{"date":"2024-03-19","commitResults":[{"hash":"1f2af1a06edc3a27765d5bd34d7a4b7eb3538763","isMergeCommit":true,"messageTitle":"Merge pull request #2 from AY2324S2-CS2103T-F14-4/master","messageBody":"Sync with main tp","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"990867960e70fdfb3e7b1689d72012672d2de7f3","isMergeCommit":false,"messageTitle":"Add priority and filter by priority features","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":315,"deletions":19},"test-code":{"insertions":226,"deletions":16}}},{"hash":"a9f984b918ee3346db63f652b97990ef1ac1d631","isMergeCommit":false,"messageTitle":"Update AddressBookParserTest test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":30,"deletions":0}}},{"hash":"6c51ca0ae14aa54253b90606d455e545a7177c3e","isMergeCommit":true,"messageTitle":"Merge pull request #50 from sindhurajain/Add-Priority","messageBody":"Priority feature","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"tahnya":{"docs":4,"functional-code":73,"test-code":10},"yapxuanxuan":{"docs":270,"functional-code":405,"test-code":481},"SamuelZero1":{"docs":9,"functional-code":0,"test-code":0},"FangRuoqing":{"docs":23,"functional-code":161,"test-code":188},"sindhurajain":{"docs":16,"functional-code":331,"test-code":270}},"authorContributionVariance":{"tahnya":1046.597,"yapxuanxuan":33415.668,"SamuelZero1":25.10588,"FangRuoqing":5877.6577,"sindhurajain":13066.882},"authorDisplayNameMap":{"tahnya":"CS2103T-F14-4 NEO ..HNYA","yapxuanxuan":"CS2103T-F14-4 YAP ..XUAN","SamuelZero1":"CS2103T-F14-4 ZHOU..YANG","FangRuoqing":"CS2103T-F14-4 FANG..QING","sindhurajain":"CS2103T-F14-4 SIND..JAIN"}} +{"authorDailyContributionsMap":{"tahnya":[{"date":"2024-03-06","commitResults":[{"hash":"3e56eb55784764c3cb88ffa172ab80e93fcfea8b","isMergeCommit":false,"messageTitle":"Update AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"468c1c0b06d0d93294dad4c633eb8913237a2d98","isMergeCommit":false,"messageTitle":"Update AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"9bee186001c39783b82661ce7ad3bb352ffa530e","isMergeCommit":true,"messageTitle":"Merge pull request #17 from tahnya/branch-ui-image","messageBody":"Update UI image","fileTypesAndContributionMap":{}}]},{"date":"2024-03-07","commitResults":[{"hash":"e5b2a74efd06c0b522f17b41d3ee3c82aaf7747a","isMergeCommit":false,"messageTitle":"Update AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"0fc3862118b28cc5cedbfdf966aac731b2be93a1","isMergeCommit":true,"messageTitle":"Merge pull request #18 from tahnya/branch-aboutus","messageBody":"Update AboutUs","fileTypesAndContributionMap":{}}]},{"date":"2024-03-13","commitResults":[{"hash":"75a5d58961e10af79ff75cf7e91ef426e4984cd1","isMergeCommit":false,"messageTitle":"Modify AddCommand","messageBody":"Make Email and Address parameters optional\n","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":5}}},{"hash":"c61d4a74ee2028e03036a7c3cd802e4a095fa2e9","isMergeCommit":false,"messageTitle":"Update Tests address, email","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":16,"deletions":16}}},{"hash":"9521425fcaad6a1af2f9b62efc9a3bb3831ef881","isMergeCommit":false,"messageTitle":"Update tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":6}}},{"hash":"21ca396b1fe02912ef6ef6c6a600d2aca6d2a1a8","isMergeCommit":false,"messageTitle":"Update tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":10,"deletions":10}}},{"hash":"e883fe3012998701cd04af0bef28b19e45ed2d01","isMergeCommit":false,"messageTitle":"Update tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"20526b0af8663b9bdc4577a6c832ce8f3a3685bd","isMergeCommit":false,"messageTitle":"Update tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":10,"deletions":10}}},{"hash":"7198df01918363d2a1e125b889f8bf82dc828e94","isMergeCommit":false,"messageTitle":"Update tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"a10a82e5ab773bef2fb1b9cafa16b652165f44e9","isMergeCommit":false,"messageTitle":"Update tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"48ab760aa2e87bc90e797174c81d6f9873a8b340","isMergeCommit":false,"messageTitle":"Update tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":1}}}]},{"date":"2024-03-21","commitResults":[{"hash":"f5fd4bf0b7d04da74b86918d32cc74f3a81cc4be","isMergeCommit":false,"messageTitle":"Update GUI","messageBody":"Changed to green theme\n","fileTypesAndContributionMap":{"functional-code":{"insertions":66,"deletions":54}}},{"hash":"a8447c1fa86a6bff668eb0467a58990002baec05","isMergeCommit":false,"messageTitle":"Refactor DarkTheme to GreenTheme","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"other":{"insertions":0,"deletions":0}}},{"hash":"ffbaa847d798c532ab297be2772f58cddc993886","isMergeCommit":false,"messageTitle":"Update theme","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":3}}},{"hash":"63a98cb47fa70df4b9156004a242c353f0559efb","isMergeCommit":false,"messageTitle":"Update green theme","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"4bd3c71bc2f3940b63bb5ede79dc9d37922bad78","isMergeCommit":false,"messageTitle":"Refactor theme","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"other":{"insertions":0,"deletions":0}}},{"hash":"9a1596b6ea7be7d6fd8ba8d70494822ff892eb57","isMergeCommit":true,"messageTitle":"Merge pull request #57 from tahnya/update-gui","messageBody":"Update GUI","fileTypesAndContributionMap":{}}]}],"yapxuanxuan":[{"date":"2024-03-06","commitResults":[{"hash":"cbbfce938b5fd4387140c3ff47698115ff1c3f93","isMergeCommit":false,"messageTitle":"Updated AboutUs and Use Cases in Developer Guide.","messageBody":"Updated AboutUs with my details. Added use cases for Adding,\nDeleting, Listing, Editing, Categorizing and Tagging.\n","fileTypesAndContributionMap":{"docs":{"insertions":181,"deletions":16}}}]},{"date":"2024-03-07","commitResults":[{"hash":"bdd274c0b90402c187351bf15d8860249d49152f","isMergeCommit":true,"messageTitle":"Merge pull request #19 from yapxuanxuan/UseCases","messageBody":"Updated AboutUs and Use Cases in Developer Guide.","fileTypesAndContributionMap":{}},{"hash":"c61d735b0c6badf84cdbcd01b96df45034586d4f","isMergeCommit":true,"messageTitle":"Merge pull request #2 from AY2324S2-CS2103T-F14-4/master","messageBody":"Merge team repo to my fork (Week 7 tP completed)","fileTypesAndContributionMap":{}}]},{"date":"2024-03-12","commitResults":[{"hash":"3854d4bf9121120b9e2380fde930e4f45c7429e1","isMergeCommit":false,"messageTitle":"Updated User Guide to reflect our planned v1.2 features.","messageBody":"Did not include the assign priority feature and add company tag feature.\nI was not sure about how to go about it since both features are related\nto the add command. To be further discussed and planned.\n\nUser Guide to be edited in the future when implementation of v1.2\nfeatures is completed to ensure an accurate User Guide.\n","fileTypesAndContributionMap":{"docs":{"insertions":79,"deletions":22}}}]},{"date":"2024-03-13","commitResults":[{"hash":"e336ed4cdaf64a2d59c63a784b2ada37fadecbf3","isMergeCommit":false,"messageTitle":"Created CompanyCommand class for the add company tag feature.","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":164,"deletions":0}}},{"hash":"6d86c947c4dfd14ddfa1bb2c632fe89f572723fc","isMergeCommit":false,"messageTitle":"Created CompanyCommand class for the add the company tag feature.","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":140,"deletions":83},"test-code":{"insertions":30,"deletions":17}}},{"hash":"2dc943a0707ffac17a3f67be8051eb34c7253634","isMergeCommit":false,"messageTitle":"Updated code to pass CI tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":0}}},{"hash":"b91993cec12976ccc77bc090df807d4b68faf002","isMergeCommit":false,"messageTitle":"Update","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0}}},{"hash":"cd67cd354f945176b9febafd5a3eb5eed82d7cbd","isMergeCommit":false,"messageTitle":"Update Code","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":6}}},{"hash":"b13f52ff93d593e87210c51934e8b2bec4af5f59","isMergeCommit":false,"messageTitle":"Update to resolve checkstyle problems","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":60,"deletions":17}}},{"hash":"fd03754f7a4fcac280f915033ae707ce61dd0c61","isMergeCommit":false,"messageTitle":"Update","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":10}}},{"hash":"cf43147345e4ceb7620382af7092ba1b95f57280","isMergeCommit":false,"messageTitle":"Update","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":5}}},{"hash":"fc29e5e8ec43b19749b4ec56eabd0c7bc5e6f04e","isMergeCommit":false,"messageTitle":"Update","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":5}}},{"hash":"fa67d43b988e334ce9b6329a4c60d22ed9f522ae","isMergeCommit":false,"messageTitle":"Resolve checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":5}}},{"hash":"8a56167b13ea6fb312eae15b7c898eecf78bbe06","isMergeCommit":false,"messageTitle":"Update","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"7de8295da741d084bcf9dd093e9a374666a999fa","isMergeCommit":false,"messageTitle":"Update","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":1}}},{"hash":"ac2ee2fd3350f79a327ad0f5149cdaa48c42a61a","isMergeCommit":false,"messageTitle":"Resolved Test issues","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":1}}},{"hash":"fdb7168b08502f1dcb8b44a2b19e6159e344fd3c","isMergeCommit":false,"messageTitle":"Added CompanyCommandTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":4},"test-code":{"insertions":85,"deletions":0}}},{"hash":"f507348a1f2ca577ad5c1299efe4e4d78d555f3b","isMergeCommit":false,"messageTitle":"Updated CompanyCommandTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":3}}}]},{"date":"2024-03-14","commitResults":[{"hash":"9969855d6238a18c149a34f0670e840a85233fe2","isMergeCommit":false,"messageTitle":"Updated CompanyCommandTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4},"test-code":{"insertions":22,"deletions":6}}},{"hash":"0690f2e9a388be5187d297a1dfcfe90ca030f537","isMergeCommit":false,"messageTitle":"Minor update","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"50deaf50fe4a6960b08430689710aedb4c5c212a","isMergeCommit":false,"messageTitle":"Update","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}},{"hash":"f2bf14aa1a29794fcf8be9f04c077a7b26c0e4b3","isMergeCommit":false,"messageTitle":"Updated Code Logic to be simpler and consistent.","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":42}}},{"hash":"d7460782f1c488c154ec83d9839f1d70cddca507","isMergeCommit":false,"messageTitle":"Update","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":24}}},{"hash":"3e205e4d71700c03f2b70b490603317469bb18dd","isMergeCommit":false,"messageTitle":"Added more test cases to CompanyCommandTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":2},"test-code":{"insertions":15,"deletions":0}}},{"hash":"321443aa195c79f011e113106daef23f2cb83ebc","isMergeCommit":true,"messageTitle":"Merge pull request #38 from yapxuanxuan/CompanyCommand","messageBody":"Added Company command to add company tags to the contacts","fileTypesAndContributionMap":{}}]},{"date":"2024-03-19","commitResults":[{"hash":"ee87939c98b225fc0c818105d925f630b168b062","isMergeCommit":false,"messageTitle":"Created CountCommand Class to handle count command.","messageBody":"Users can now check the number of contacts they have by using the new\n\u0027count\u0027 command\n","fileTypesAndContributionMap":{"functional-code":{"insertions":29,"deletions":0},"test-code":{"insertions":34,"deletions":1}}},{"hash":"65c6521472829a6be50cfe6f16432700674376a7","isMergeCommit":false,"messageTitle":"Resolved Checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"022278e4cce9b39b4c6b11384110268310fe9d5b","isMergeCommit":false,"messageTitle":"Updated the format of the command result to match feature specifications.","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":2}}}]},{"date":"2024-03-20","commitResults":[{"hash":"1a54f5b104ff69da8b533ceec3bedefadcbc26d3","isMergeCommit":false,"messageTitle":"Edited BetterModelClassDiagram and ModelClassDiagram to include the new attribute of a person, company.","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":0}}},{"hash":"8302e31eeda88e29ca19f0172185661463e1d397","isMergeCommit":false,"messageTitle":"Revert \"Edited BetterModelClassDiagram and ModelClassDiagram to include the new\"","messageBody":"This reverts commit 1a54f5b104ff69da8b533ceec3bedefadcbc26d3.\n","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":3}}},{"hash":"b1e2a04f435220e68d563b5c604c849590868fac","isMergeCommit":true,"messageTitle":"Merge commit \u00271a54f5b104ff69da8b533ceec3bedefadcbc26d3\u0027 into CountCommand","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b20effb72052a50ee4ffa7f6d72d9b7cee00c8a0","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into quick-add","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"47bcb09a0e7d85b534dbf2ea35d15e96c0094753","isMergeCommit":true,"messageTitle":"Merge pull request #35 from tahnya/quick-add","messageBody":"Modify AddCommand","fileTypesAndContributionMap":{}},{"hash":"ab518395a46fca028804ccf2562efa22520ca27b","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-F14-4:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"55aa3fab7f2643fa7b648977ad3946a0be3fb947","isMergeCommit":true,"messageTitle":"Merge pull request #49 from yapxuanxuan/CountCommand","messageBody":"Created CountCommand Class to handle count command.","fileTypesAndContributionMap":{}},{"hash":"1aa72af0e0f1eb423526900c93aa78804d913b37","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-F14-4:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"529e23003778ed2cc194d7b6103e6f3fdfe3e796","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into UserGuide","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"5aa1f9990db50c5a5e32144553be85f0a09a22dd","isMergeCommit":false,"messageTitle":"Updated User Guide to match our v1.2 features","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":30,"deletions":16}}},{"hash":"e696d957d81268e3db21138e5138f68f5af0f0dc","isMergeCommit":true,"messageTitle":"Merge pull request #34 from yapxuanxuan/UserGuide","messageBody":"Updated User guide to reflect features for v1.2 and adapt UG to Connectify","fileTypesAndContributionMap":{}},{"hash":"bfe3b56913724c84d59358ca3f0489ea8637b571","isMergeCommit":false,"messageTitle":"Created FindCompanyCommand class.","messageBody":"Users can now find contacts by their company tag name.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":143,"deletions":15}}},{"hash":"d06e093d817a476841f6f4a6524df22789565a08","isMergeCommit":false,"messageTitle":"Created FindCompanyCommand class and updated GUI.","messageBody":"Users can now find contacts by their company tags. Company tag GUI\nhas been updated to look different from other contact information.\n\nEmpty email, address and company GUI details updated such that\nthere won\u0027t be any gaps shown if these attributes do not exist for\nthe contact\n","fileTypesAndContributionMap":{"functional-code":{"insertions":71,"deletions":9},"test-code":{"insertions":289,"deletions":1}}},{"hash":"6ea68699296d531cdb61b31b05bb49baf9423cf1","isMergeCommit":false,"messageTitle":"Resolved Checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":17,"deletions":3}}},{"hash":"0f3a55a34c4bee6de808cac5e5e3b90aaa1b7ef2","isMergeCommit":false,"messageTitle":"Update","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":3}}},{"hash":"5c5089dff39ffd2230084874096632fb8544ae2f","isMergeCommit":false,"messageTitle":"Final update for checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":2}}},{"hash":"4e8fb0f53aa159084523eda2a72ba362fb8efcb1","isMergeCommit":false,"messageTitle":"Added test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":23},"test-code":{"insertions":18,"deletions":0}}},{"hash":"ac02d66ef307fb005b079caeb0155eae995d9a4a","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into FindCompany","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4cac51d6310cf02ed730d5804c210a0f030874bb","isMergeCommit":true,"messageTitle":"Merge pull request #54 from yapxuanxuan/FindCompany","messageBody":"Find Company command","fileTypesAndContributionMap":{}},{"hash":"bd9585392f4aa1f173649e7a680e3013e8a263f7","isMergeCommit":false,"messageTitle":"Resolve checkstyle issues from resolving merge conflict","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}},{"hash":"ff34082bcaeca8590b31aa74424ef5bcc2513076","isMergeCommit":true,"messageTitle":"Merge pull request #58 from yapxuanxuan/FindCompany","messageBody":"Resolve checkstyle issues from resolving merge conflict","fileTypesAndContributionMap":{}},{"hash":"3fc8088bb95d3b296a5f6aa356784a7aac78df00","isMergeCommit":false,"messageTitle":"Fixed GUI for company tag.","messageBody":"Also added code to ensure that there is no empty gaps if contact\ndoes not have optional email and address.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":33,"deletions":11}}},{"hash":"0aec1e59cc7096b4c7d2591806c7020848eb89d3","isMergeCommit":false,"messageTitle":"Revoked changes to fix GUI because of lack of time to create tests to match coverage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":22}}},{"hash":"c234e1db7c2b67f40bc6985238c732f2cabea840","isMergeCommit":true,"messageTitle":"Merge pull request #59 from yapxuanxuan/master","messageBody":"Fixed GUI for company tag.","tags":["v1.2"],"fileTypesAndContributionMap":{}}]}],"SamuelZero1":[{"date":"2024-03-07","commitResults":[{"hash":"83cddd963e06c57b974c8e80639e4fd8eb3db9c3","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"1624d3e36bca3a9ebd0f90db18685b5201f3748d","isMergeCommit":true,"messageTitle":"Merge pull request #24 from SamuelZero1/master","messageBody":"Update DeveloperGuide.md","fileTypesAndContributionMap":{}},{"hash":"6c7ab7706c170f7d7e2a8177cb6170bd19c3226a","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":0}}},{"hash":"1748957077645d0873915878f08aa11575b89cb2","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":9}}},{"hash":"44ae91993a0c66c5b71a800f778729e927b8a8e3","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"a8ce61e4a43ac7be41fdc60811f527fdad4cbaff","isMergeCommit":true,"messageTitle":"Merge pull request #26 from SamuelZero1/AboutUs","messageBody":"About us","fileTypesAndContributionMap":{}}]}],"FangRuoqing":[{"date":"2024-03-07","commitResults":[{"hash":"213014594f5bfc50bba3981e83daf17f97dca76e","isMergeCommit":false,"messageTitle":"Update AboutUs and DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":24,"deletions":20}}},{"hash":"6c92befa3008b461596c8fdecc58d0cb6d5ec721","isMergeCommit":true,"messageTitle":"Merge pull request #22 from FangRuoqing/branch-AboutUs","messageBody":"Update AboutUs and target user profile and user stories in DG","fileTypesAndContributionMap":{}}]},{"date":"2024-03-13","commitResults":[{"hash":"9371c774655b8c720d95156c102c41693b344edc","isMergeCommit":false,"messageTitle":"Modify the find command so that partial words will also be matched","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":6}}},{"hash":"36fc390d996510bb02d4318e177321f5e033dbbc","isMergeCommit":false,"messageTitle":"Modify the find command and update the StringUtilTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":0,"deletions":4}}},{"hash":"549b72df117973f43ee742f8da3d35423c64876f","isMergeCommit":true,"messageTitle":"Merge pull request #39 from FangRuoqing/branch-command-find","messageBody":"Modify the find command so that partial words will also be matched","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"0f6f521d0b15d5de38cba08f4325d47a84bf40b7","isMergeCommit":false,"messageTitle":"Add StarCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":145,"deletions":14},"test-code":{"insertions":9,"deletions":9}}},{"hash":"15dfc6e8967ff386078d3a5c99840e4005f26671","isMergeCommit":false,"messageTitle":"Update StarCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":10}}}]},{"date":"2024-03-21","commitResults":[{"hash":"617c6c671473600bde787d387f40e33c6d9c33d7","isMergeCommit":false,"messageTitle":"Update star shape","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":35,"deletions":0}}},{"hash":"7597b25c2cd194df90cf8bc87fd915ad9d9ee6d4","isMergeCommit":false,"messageTitle":"Update star","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":2}}},{"hash":"8cdc9a7d558df2e255dac12b17ed7a0486dfb18b","isMergeCommit":false,"messageTitle":"Update test code for star command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":4},"test-code":{"insertions":119,"deletions":12}}},{"hash":"fd0161c54f74b247a13b4d2d0d9d5565c77865f0","isMergeCommit":false,"messageTitle":"Update check style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":44},"test-code":{"insertions":18,"deletions":10}}},{"hash":"985482bfaa84ad5e0ec247fdca37930555f1e280","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-star","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9d8c4eeddacccb431078e5546a8499a9b6a34b7c","isMergeCommit":false,"messageTitle":"Update checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2}}},{"hash":"258a1754f1f84b8678241b0983ddf921d785df3e","isMergeCommit":false,"messageTitle":"Update StarCommand and PriorityCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":2}}},{"hash":"ee0cb1982f9d4f471bfedd5c7e50db6de2ede95b","isMergeCommit":false,"messageTitle":"Update CheckStyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"f5cac4f65f94f8f2d5015c8917d7171d1ebec1b3","isMergeCommit":false,"messageTitle":"Update test code","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"7e425e4e0915e3750e62bfffae55c22ac95a00ec","isMergeCommit":false,"messageTitle":"Update test code","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0},"test-code":{"insertions":19,"deletions":1}}},{"hash":"dc47f03f8ff5942bdbcff6b7a3fc7464e4010be2","isMergeCommit":false,"messageTitle":"Update test code","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":4},"test-code":{"insertions":46,"deletions":13}}},{"hash":"bd6aa41e4a4f7b7e47edec811d600041fc42c69b","isMergeCommit":true,"messageTitle":"Merge pull request #56 from FangRuoqing/branch-star","messageBody":"Create Star Command","fileTypesAndContributionMap":{}}]}],"sindhurajain":[{"date":"2024-02-23","commitResults":[{"hash":"8c6b31b16faafcd28c89212822f5f89ab36eccb7","isMergeCommit":true,"messageTitle":"Merge branch \u0027switch-docs-to-markbind\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"7d99f1690e895b90573aa0d70ac1bfacaf9df9a5","isMergeCommit":false,"messageTitle":"Set up MarkBind","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"854bcc21e4b5793ed9974d351fbdfeea560c7a4c","isMergeCommit":false,"messageTitle":"Add codecov badge to index.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"3cc5d4522176c73994cd939413500c5843a6e792","isMergeCommit":false,"messageTitle":"Revert index.md and add codecov badge to README.md, the correct file","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":1}}}]},{"date":"2024-03-06","commitResults":[{"hash":"d46468baf93ff45bfb29c235567cd24663808ff0","isMergeCommit":false,"messageTitle":"Update contents, GitHub Actions build status badge and acknowledgement in README file","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":11}}},{"hash":"1aa59f1dc23beddd2f3a85f5fcc92b20059a7d41","isMergeCommit":true,"messageTitle":"Merge pull request #16 from sindhurajain/Update-README","messageBody":"Update contents, GitHub Actions build status badge and acknowledgemen…","fileTypesAndContributionMap":{}}]},{"date":"2024-03-07","commitResults":[{"hash":"c69b9cd79415da9d54d327f3c15fb9390670b71a","isMergeCommit":false,"messageTitle":"Update AboutUs with my information","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}},{"hash":"5e34819c4ac7fb6d53f93d13e8374eada3f7e2f8","isMergeCommit":true,"messageTitle":"Merge pull request #20 from sindhurajain/Update-AboutUs","messageBody":"Update AboutUs with my information","fileTypesAndContributionMap":{}},{"hash":"9839b0251b79d338f9ba33b95e9c1d3ffafecfce","isMergeCommit":false,"messageTitle":"Rename image for AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"ff352a751df8316d2ee43557d53d52d67b89d31c","isMergeCommit":true,"messageTitle":"Merge pull request #21 from sindhurajain/Update-AboutUs","messageBody":"Rename image for AboutUs","fileTypesAndContributionMap":{}},{"hash":"22f01ddf53af008f072f77080e82eb33970f8fa8","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-F14-4/tp","messageBody":"","tags":["v1.1"],"fileTypesAndContributionMap":{}}]},{"date":"2024-03-08","commitResults":[{"hash":"ea2ee99583f0da5aff34c7b5f03aa5161178fe4f","isMergeCommit":true,"messageTitle":"Merge pull request #1 from AY2324S2-CS2103T-F14-4/master","messageBody":"Pull from team repo","fileTypesAndContributionMap":{}}]},{"date":"2024-03-13","commitResults":[{"hash":"3165e7c85f1dfb0637787532bede6760afcfba1a","isMergeCommit":false,"messageTitle":"Update code for delete feature and test cases to adhere to delete \u003ccontact_name\u003e format instead of delete \u003cindex\u003e","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":33,"deletions":39},"test-code":{"insertions":34,"deletions":36}}},{"hash":"6bd6fc6c64a539e85947a0f9f896828fbc70918e","isMergeCommit":true,"messageTitle":"Merge pull request #36 from sindhurajain/Update-Delete-Contact","messageBody":"Update delete contact","fileTypesAndContributionMap":{}}]},{"date":"2024-03-19","commitResults":[{"hash":"1f2af1a06edc3a27765d5bd34d7a4b7eb3538763","isMergeCommit":true,"messageTitle":"Merge pull request #2 from AY2324S2-CS2103T-F14-4/master","messageBody":"Sync with main tp","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"990867960e70fdfb3e7b1689d72012672d2de7f3","isMergeCommit":false,"messageTitle":"Add priority and filter by priority features","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":315,"deletions":19},"test-code":{"insertions":226,"deletions":16}}},{"hash":"a9f984b918ee3346db63f652b97990ef1ac1d631","isMergeCommit":false,"messageTitle":"Update AddressBookParserTest test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":30,"deletions":0}}},{"hash":"6c51ca0ae14aa54253b90606d455e545a7177c3e","isMergeCommit":true,"messageTitle":"Merge pull request #50 from sindhurajain/Add-Priority","messageBody":"Priority feature","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"fed766592d928894a6655ec7008acd621e513c01","isMergeCommit":true,"messageTitle":"Merge pull request #3 from AY2324S2-CS2103T-F14-4/master","messageBody":"Sync with team tp","fileTypesAndContributionMap":{}}]},{"date":"2024-03-22","commitResults":[{"hash":"898ad722841d5c1e6742a85f3004294b84537152","isMergeCommit":true,"messageTitle":"Merge pull request #4 from AY2324S2-CS2103T-F14-4/master","messageBody":"Sync with team repo","fileTypesAndContributionMap":{}}]},{"date":"2024-03-24","commitResults":[{"hash":"f9f6c05e59fab8151666a6ae62c5be04a96d7d6f","isMergeCommit":false,"messageTitle":"Update UML diagrams for updated delete command and priority command and make minor changes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"docs":{"insertions":20,"deletions":17},"test-code":{"insertions":1,"deletions":5}}},{"hash":"8342c89ea78a85f5ca7c0f35d657bdac2557f94b","isMergeCommit":true,"messageTitle":"Merge pull request #71 from sindhurajain/Update-UML","messageBody":"Update UML Diagrams","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"tahnya":{"docs":4,"functional-code":73,"test-code":10},"yapxuanxuan":{"docs":270,"functional-code":402,"test-code":481},"SamuelZero1":{"docs":9,"functional-code":0,"test-code":0},"FangRuoqing":{"docs":23,"functional-code":161,"test-code":188},"sindhurajain":{"docs":34,"functional-code":334,"test-code":266}},"authorContributionVariance":{"tahnya":952.7347,"yapxuanxuan":30593.318,"SamuelZero1":22.757557,"FangRuoqing":5352.5435,"sindhurajain":11866.096},"authorDisplayNameMap":{"tahnya":"CS2103T-F14-4 NEO ..HNYA","yapxuanxuan":"CS2103T-F14-4 YAP ..XUAN","SamuelZero1":"CS2103T-F14-4 ZHOU..YANG","FangRuoqing":"CS2103T-F14-4 FANG..QING","sindhurajain":"CS2103T-F14-4 SIND..JAIN"}} diff --git a/AY2324S2-CS2103T-T08-1_tp_master/authorship.json b/AY2324S2-CS2103T-T08-1_tp_master/authorship.json index 27050e69..663eb14b 100644 --- a/AY2324S2-CS2103T-T08-1_tp_master/authorship.json +++ b/AY2324S2-CS2103T-T08-1_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"jovantanyk"},"content":"[![CI Status](https://github.com/AY2324S2-CS2103T-T08-1/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S2-CS2103T-T08-1/tp/actions)","lastModifiedDate":"2024-03-12"},{"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":"jovantanyk"},"content":"* **ImmuniMate** is a JavaFX application with a GUI, aimed at helping General Practitioners and Healthcare Professionals better keep track of Patient Information.\u003cbr\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"jovantanyk"},"content":" Main Features:","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"jovantanyk"},"content":" * Easily add and update patient information to Immunimate","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"jovantanyk"},"content":" * Keep track of infected patients and clusters of information","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"jovantanyk"},"content":" * Search for patients and patient history with a breeze","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"* It is named `AddressBook Level 3` (`AB3` for short) because it was initially created as a part of a series of `AddressBook` projects (`Level 1`, `Level 2`, `Level 3` ...).","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"jovantanyk"},"content":"* For the detailed documentation and information on ImmuniMate, please visit our **[website](https://ay2324s2-cs2103t-t08-1.github.io/tp/)**.","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"jovantanyk"},"content":"* This project is currently being developed by a student team in NUS. Our Source code for the project can be found **[here on github.](https://github.com/AY2324S2-CS2103T-T08-1/tp)**","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"jovantanyk":8,"-":4}},{"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":"jovantanyk"},"content":"We are a NUS based software development team.","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"jovantanyk"},"content":"You can contact us individually through our portfolios","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17"},{"lineNumber":10,"author":{"gitId":"jovantanyk"},"content":"## ImmuniMate Project Team","lastModifiedDate":"2024-02-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"jovantanyk"},"content":"### Alex Setyawan","lastModifiedDate":"2024-02-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"alex-setyawan"},"content":"\u003cimg src\u003d\"images/alex-setyawan.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"alex-setyawan"},"content":"[[github](https://github.com/alex-setyawan)]","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"* Role: Team Lead","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"jovantanyk"},"content":"* Responsibilities: Project Manager, Back-end","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"jovantanyk"},"content":"### Tan Jovan","lastModifiedDate":"2024-02-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"jovantanyk"},"content":"\u003cimg src\u003d\"images/jovantanyk.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"jovantanyk"},"content":"[[homepage](http:/jovantanyk.dev)]","lastModifiedDate":"2024-02-25"},{"lineNumber":28,"author":{"gitId":"jovantanyk"},"content":"[[github](https://github.com/jovantanyk)]","lastModifiedDate":"2024-02-25"},{"lineNumber":29,"author":{"gitId":"jovantanyk"},"content":"[[portfolio](team/jovantanyk.md)]","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"jovantanyk"},"content":"* Responsibilities: Back-end, Documentation","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":35,"author":{"gitId":"laney0808"},"content":"### Zhang Lanyu","lastModifiedDate":"2024-02-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"jovantanyk"},"content":"\u003cimg src\u003d\"images/laney0808.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"laney0808"},"content":"[[github](http://github.com/laney0808)] [[portfolio](team/laney0808.md)]","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"jovantanyk"},"content":"* Responsibilities: Front-end, Documentation, UI Designer","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"jovantanyk"},"content":"### Natalie Leong","lastModifiedDate":"2024-02-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"NatLeong"},"content":"\u003cimg src\u003d\"images/natleong.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"NatLeong"},"content":"[[github](http://github.com/NatLeong)]","lastModifiedDate":"2024-03-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"jovantanyk"},"content":"* Responsibilities: Front-end, Documentation","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"alex-setyawan":2,"jovantanyk":15,"laney0808":2,"-":31,"NatLeong":2}},{"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 continues till the end of diagram.","lastModifiedDate":"2024-02-09"},{"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).\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-02-09"},{"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 an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Logic.png)","lastModifiedDate":"2024-02-09"},{"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":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":207,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Model.png)","lastModifiedDate":"2024-02-09"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"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":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"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":"laney0808"},"content":"* has a need to manage a significant number of patient information","lastModifiedDate":"2024-03-17"},{"lineNumber":266,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23"},{"lineNumber":268,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26"},{"lineNumber":269,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23"},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"laney0808"},"content":"**Value proposition**: As the number of patients a General Practitioner grows, information management might prove complex, especially so for personal data. ImmuniMate offers a way to record comprehensive information about every patient, while ensuring timely updates and avoiding duplications/contradictions. It also seeks to establish links between patient for contact tracing and finding potential infectious clusters.","lastModifiedDate":"2024-03-17"},{"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":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","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":"laney0808"},"content":"|----------|----------------------------------|-------------------------------------------------|------------------------------------------------------------------------|","lastModifiedDate":"2024-03-17"},{"lineNumber":279,"author":{"gitId":"laney0808"},"content":"| `* * *` | New user | see usage instructions | refer to instructions when I forget how to use the App |","lastModifiedDate":"2024-03-17"},{"lineNumber":280,"author":{"gitId":"laney0808"},"content":"| `* * *` | Healthcare Worker | add a new patient | |","lastModifiedDate":"2024-03-17"},{"lineNumber":281,"author":{"gitId":"laney0808"},"content":"| `* * *` | Healthcare Worker | delete a patient | emove wrong or obselete information of a patient from the database |","lastModifiedDate":"2024-03-17"},{"lineNumber":282,"author":{"gitId":"laney0808"},"content":"| `* * *` | Healthcare Worker | find a person by NRIC | locate details of persons without having to go through the entire list |","lastModifiedDate":"2024-03-17"},{"lineNumber":283,"author":{"gitId":"laney0808"},"content":"| `* * *` | Healthcare Worker | update a person\u0027s details | keep the details up to date |","lastModifiedDate":"2024-03-17"},{"lineNumber":284,"author":{"gitId":"laney0808"},"content":"| `* * *` | Healthcare Worker | find a patient by matching criteria | Find a list of patients who I need |","lastModifiedDate":"2024-03-17"},{"lineNumber":285,"author":{"gitId":"laney0808"},"content":"| `* * *` | Healthcare Worker | Delete patient\u0027s information | remove patient information that is no longer correct |","lastModifiedDate":"2024-03-17"},{"lineNumber":286,"author":{"gitId":"laney0808"},"content":"| `* *` | Healthcare Worker | hide private contact details | minimize chance of someone else seeing them by accident |","lastModifiedDate":"2024-03-17"},{"lineNumber":287,"author":{"gitId":"laney0808"},"content":"| `* *` | Healthcare Worker | highlight contradicting information and entries | minimize the mistakes in entries |","lastModifiedDate":"2024-03-17"},{"lineNumber":288,"author":{"gitId":"laney0808"},"content":"| `* *` | Healthcare Worker | be able to resolve duplicate information | correct wrong inputs |","lastModifiedDate":"2024-03-17"},{"lineNumber":289,"author":{"gitId":"laney0808"},"content":"| `* *` | Healthcare Worker | see the history of changes made to a patient | understand the changes made to a patient |","lastModifiedDate":"2024-03-17"},{"lineNumber":290,"author":{"gitId":"laney0808"},"content":"| `* *` | Healthcare Worker | be able to tap different contact methods | make sure important information is sent |","lastModifiedDate":"2024-03-17"},{"lineNumber":291,"author":{"gitId":"laney0808"},"content":"| `* *` | Healthcare Worker | see the close contacts of a patient | see the links between infected patients |","lastModifiedDate":"2024-03-17"},{"lineNumber":292,"author":{"gitId":"laney0808"},"content":"| `* *` | Healthcare Worker | status of infection of a patient | take follow-up actions |","lastModifiedDate":"2024-03-17"},{"lineNumber":293,"author":{"gitId":"laney0808"},"content":"| `* *` | Healthcare Worker | see clusters of infected patients | understand which areas are at high risk of infection |","lastModifiedDate":"2024-03-17"},{"lineNumber":294,"author":{"gitId":"laney0808"},"content":"| `*` | Healthcare Worker | find the person who first spread the disease | better understand the disease |","lastModifiedDate":"2024-03-17"},{"lineNumber":295,"author":{"gitId":"laney0808"},"content":"| `*` | Healthcare Worker | sort persons by name | locate a person easily |","lastModifiedDate":"2024-03-17"},{"lineNumber":296,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":297,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":298,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":299,"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":300,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":301,"author":{"gitId":"laney0808"},"content":"**Use Case: UC01 - Create Patient Record**","lastModifiedDate":"2024-03-17"},{"lineNumber":302,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":303,"author":{"gitId":"laney0808"},"content":"- **Actor:** Healthcare Worker","lastModifiedDate":"2024-03-17"},{"lineNumber":304,"author":{"gitId":"laney0808"},"content":"- **Description:** Healthcare worker creates a new patient record in the ImmuniMate Address Book System.","lastModifiedDate":"2024-03-17"},{"lineNumber":305,"author":{"gitId":"laney0808"},"content":"- **Preconditions:** Healthcare worker has logged into the system.","lastModifiedDate":"2024-03-17"},{"lineNumber":306,"author":{"gitId":"laney0808"},"content":"- **Guarantees:** New patient record is successfully created in the ImmuniMate Address Book System.","lastModifiedDate":"2024-03-17"},{"lineNumber":307,"author":{"gitId":"laney0808"},"content":"- **MSS:**","lastModifiedDate":"2024-03-17"},{"lineNumber":308,"author":{"gitId":"laney0808"},"content":" 1. Healthcare worker choose to create a new patient record.","lastModifiedDate":"2024-03-17"},{"lineNumber":309,"author":{"gitId":"laney0808"},"content":" 2. IABS requests the necessary details for the new patient record (name, NRIC, date of birth, sex, phone number, address, email, country of nationality, date of admission, blood type, allergies).","lastModifiedDate":"2024-03-17"},{"lineNumber":310,"author":{"gitId":"laney0808"},"content":" 3. Healthcare worker enters the patient\u0027s details.","lastModifiedDate":"2024-03-17"},{"lineNumber":311,"author":{"gitId":"laney0808"},"content":" 4. IABS validates the entered data.","lastModifiedDate":"2024-03-17"},{"lineNumber":312,"author":{"gitId":"laney0808"},"content":" 5. IABS adds the new patient record to the database.","lastModifiedDate":"2024-03-17"},{"lineNumber":313,"author":{"gitId":"laney0808"},"content":"- **Extensions:**","lastModifiedDate":"2024-03-17"},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":315,"author":{"gitId":"laney0808"},"content":" 3a. IABS detects a conflict in the entered data (user existing).","lastModifiedDate":"2024-03-17"},{"lineNumber":316,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":317,"author":{"gitId":"laney0808"},"content":" 3a1. IABS shows the conflicting existing entry","lastModifiedDate":"2024-03-17"},{"lineNumber":318,"author":{"gitId":"laney0808"},"content":" 3a2. IABS requests for the correct data.","lastModifiedDate":"2024-03-17"},{"lineNumber":319,"author":{"gitId":"laney0808"},"content":" 3a3. Healthcare Worker enters new data.","lastModifiedDate":"2024-03-17"},{"lineNumber":320,"author":{"gitId":"laney0808"},"content":" Steps 3a1-3a3 are repeated until the data entered are correct, or the user cancels the action.","lastModifiedDate":"2024-03-17"},{"lineNumber":321,"author":{"gitId":"laney0808"},"content":" Use case resumes from step 4.","lastModifiedDate":"2024-03-17"},{"lineNumber":322,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":323,"author":{"gitId":"laney0808"},"content":" 3b. IABS detects an error in the entered data.","lastModifiedDate":"2024-03-17"},{"lineNumber":324,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":325,"author":{"gitId":"laney0808"},"content":" 3b1. IABS requests for the correct data.","lastModifiedDate":"2024-03-17"},{"lineNumber":326,"author":{"gitId":"laney0808"},"content":" 3b2. Healthcare Worker enters new data.","lastModifiedDate":"2024-03-17"},{"lineNumber":327,"author":{"gitId":"laney0808"},"content":" Steps 3b1-3b2 are repeated until the data entered are correct.","lastModifiedDate":"2024-03-17"},{"lineNumber":328,"author":{"gitId":"laney0808"},"content":" Use case resumes from step 4.","lastModifiedDate":"2024-03-17"},{"lineNumber":329,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":330,"author":{"gitId":"laney0808"},"content":" *a. At any time, Healthcare Worker chooses to cancel creating the patient record.","lastModifiedDate":"2024-03-17"},{"lineNumber":331,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":332,"author":{"gitId":"laney0808"},"content":" *a1. IABS requests confirmation to cancel.","lastModifiedDate":"2024-03-17"},{"lineNumber":333,"author":{"gitId":"laney0808"},"content":" *a2. Healthcare Worker confirms the cancellation.","lastModifiedDate":"2024-03-17"},{"lineNumber":334,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2024-03-17"},{"lineNumber":335,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":336,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":337,"author":{"gitId":"laney0808"},"content":"---","lastModifiedDate":"2024-03-17"},{"lineNumber":338,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":339,"author":{"gitId":"laney0808"},"content":"### **Use Case: UC02 - Find Patient Information**","lastModifiedDate":"2024-03-17"},{"lineNumber":340,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":341,"author":{"gitId":"laney0808"},"content":"- **Actor:** Healthcare Worker","lastModifiedDate":"2024-03-17"},{"lineNumber":342,"author":{"gitId":"laney0808"},"content":"- **Description:** Healthcare worker searches for specific patient information in the ImmuniMate Address Book System.","lastModifiedDate":"2024-03-17"},{"lineNumber":343,"author":{"gitId":"laney0808"},"content":"- **Preconditions:** Healthcare worker has logged into the system.","lastModifiedDate":"2024-03-17"},{"lineNumber":344,"author":{"gitId":"laney0808"},"content":"- **Guarantees:** Relevant patient information is displayed for the healthcare worker to view.","lastModifiedDate":"2024-03-17"},{"lineNumber":345,"author":{"gitId":"laney0808"},"content":"- **Basic Flow:**","lastModifiedDate":"2024-03-17"},{"lineNumber":346,"author":{"gitId":"laney0808"},"content":" 1. Healthcare worker chooses to find patient information meeting specified criteria.","lastModifiedDate":"2024-03-17"},{"lineNumber":347,"author":{"gitId":"laney0808"},"content":" 2. IABS searches for and displays the relevant patients.","lastModifiedDate":"2024-03-17"},{"lineNumber":348,"author":{"gitId":"laney0808"},"content":"- **Extensions:**","lastModifiedDate":"2024-03-17"},{"lineNumber":349,"author":{"gitId":"laney0808"},"content":" 2a. IABS detects an error in the entered data.","lastModifiedDate":"2024-03-17"},{"lineNumber":350,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":351,"author":{"gitId":"laney0808"},"content":" - 2a1. IABS requests for the correct data.","lastModifiedDate":"2024-03-17"},{"lineNumber":352,"author":{"gitId":"laney0808"},"content":" - 2a2. Healthcare Worker enters new data. ","lastModifiedDate":"2024-03-17"},{"lineNumber":353,"author":{"gitId":"laney0808"},"content":" - Steps 2a1-2a2 are repeated until the data entered are correct. Use case resumes from step 3.","lastModifiedDate":"2024-03-17"},{"lineNumber":354,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":355,"author":{"gitId":"laney0808"},"content":"---","lastModifiedDate":"2024-03-17"},{"lineNumber":356,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":357,"author":{"gitId":"laney0808"},"content":"**Use Case: UC03 - Update Patient Information**","lastModifiedDate":"2024-03-17"},{"lineNumber":358,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":359,"author":{"gitId":"laney0808"},"content":"- **Actor:** Healthcare Worker","lastModifiedDate":"2024-03-17"},{"lineNumber":360,"author":{"gitId":"laney0808"},"content":"- **Description:** Healthcare worker updates a patient\u0027s information in the ImmuniMate Address Book System.","lastModifiedDate":"2024-03-17"},{"lineNumber":361,"author":{"gitId":"laney0808"},"content":"- **Preconditions:** Healthcare worker has logged into the system and has selected the patient whose information needs to be updated.","lastModifiedDate":"2024-03-17"},{"lineNumber":362,"author":{"gitId":"laney0808"},"content":"- **Guarantees:** Patient\u0027s information is successfully updated in the ImmuniMate Address Book System.","lastModifiedDate":"2024-03-17"},{"lineNumber":363,"author":{"gitId":"laney0808"},"content":"- **Basic Flow:**","lastModifiedDate":"2024-03-17"},{"lineNumber":364,"author":{"gitId":"laney0808"},"content":" 1. Healthcare worker chooses to update a certain patient’s certain information.","lastModifiedDate":"2024-03-17"},{"lineNumber":365,"author":{"gitId":"laney0808"},"content":" 2. IABS validates the new content.","lastModifiedDate":"2024-03-17"},{"lineNumber":366,"author":{"gitId":"laney0808"},"content":" 3. IABS updates the patient\u0027s information in the database.","lastModifiedDate":"2024-03-17"},{"lineNumber":367,"author":{"gitId":"laney0808"},"content":"- **Extensions:**","lastModifiedDate":"2024-03-17"},{"lineNumber":368,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":369,"author":{"gitId":"laney0808"},"content":" 2a. IABS detects an error in the entered data.","lastModifiedDate":"2024-03-17"},{"lineNumber":370,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":371,"author":{"gitId":"laney0808"},"content":" 2a1. IABS requests for the correct data.","lastModifiedDate":"2024-03-17"},{"lineNumber":372,"author":{"gitId":"laney0808"},"content":" 2a2. Healthcare Worker enters new data.","lastModifiedDate":"2024-03-17"},{"lineNumber":373,"author":{"gitId":"laney0808"},"content":" Steps 2a1-2a2 are repeated until the data entered are correct.","lastModifiedDate":"2024-03-17"},{"lineNumber":374,"author":{"gitId":"laney0808"},"content":" Use case resumes from step 3.","lastModifiedDate":"2024-03-17"},{"lineNumber":375,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":376,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":377,"author":{"gitId":"laney0808"},"content":"---","lastModifiedDate":"2024-03-17"},{"lineNumber":378,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":379,"author":{"gitId":"laney0808"},"content":"**Use Case: UC04 - Delete Patient Record**","lastModifiedDate":"2024-03-17"},{"lineNumber":380,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":381,"author":{"gitId":"laney0808"},"content":"- **Actor:** Healthcare worker","lastModifiedDate":"2024-03-17"},{"lineNumber":382,"author":{"gitId":"laney0808"},"content":"- **Description:** Healthcare worker deletes a patient\u0027s record from the ImmuniMate Address Book System.","lastModifiedDate":"2024-03-17"},{"lineNumber":383,"author":{"gitId":"alex-setyawan"},"content":"- **Preconditions:** Healthcare worker has opened the app and has selected the patient whose record needs to be deleted.","lastModifiedDate":"2024-03-16"},{"lineNumber":384,"author":{"gitId":"laney0808"},"content":"- **Guarantees:** Patient\u0027s record is successfully deleted from the ImmuniMate Address Book System.","lastModifiedDate":"2024-03-17"},{"lineNumber":385,"author":{"gitId":"alex-setyawan"},"content":"- **MSS:**","lastModifiedDate":"2024-03-16"},{"lineNumber":386,"author":{"gitId":"laney0808"},"content":" 1. Healthcare worker choose to delete a specified patient’s record.","lastModifiedDate":"2024-03-17"},{"lineNumber":387,"author":{"gitId":"alex-setyawan"},"content":" 2. IABS validates the NRIC and deletes the patient\u0027s record from the database.","lastModifiedDate":"2024-03-16"},{"lineNumber":388,"author":{"gitId":"laney0808"},"content":"- **Extensions:**","lastModifiedDate":"2024-03-17"},{"lineNumber":389,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":390,"author":{"gitId":"laney0808"},"content":" 2a. IABS cannot find the patient specified.","lastModifiedDate":"2024-03-17"},{"lineNumber":391,"author":{"gitId":"alex-setyawan"},"content":" - 2a1. IABS requests for the correct NRIC.","lastModifiedDate":"2024-03-16"},{"lineNumber":392,"author":{"gitId":"alex-setyawan"},"content":" - 2a2. Healthcare worker enters new NRIC. ","lastModifiedDate":"2024-03-16"},{"lineNumber":393,"author":{"gitId":"alex-setyawan"},"content":" - Steps 2a1-2a2 are repeated until the data entered are correct or Healthcare worker cancels the action. Use case resumes from step 3.","lastModifiedDate":"2024-03-16"},{"lineNumber":394,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":395,"author":{"gitId":"laney0808"},"content":"**Use Case: UC05 - Delete Patient Information**","lastModifiedDate":"2024-03-17"},{"lineNumber":396,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":397,"author":{"gitId":"laney0808"},"content":"- **Actor:** Healthcare Worker","lastModifiedDate":"2024-03-17"},{"lineNumber":398,"author":{"gitId":"laney0808"},"content":"- **Description:** Healthcare worker deletes specific information from a patient\u0027s record in the ImmuniMate Address Book System.","lastModifiedDate":"2024-03-17"},{"lineNumber":399,"author":{"gitId":"laney0808"},"content":"- **Preconditions:** Healthcare worker has logged into the system and has selected the patient whose information needs to be deleted.","lastModifiedDate":"2024-03-17"},{"lineNumber":400,"author":{"gitId":"laney0808"},"content":"- **Guarantees:** Specified information is successfully deleted from the patient\u0027s record in the ImmuniMate Address Book System.","lastModifiedDate":"2024-03-17"},{"lineNumber":401,"author":{"gitId":"alex-setyawan"},"content":"- **MSS:**","lastModifiedDate":"2024-03-16"},{"lineNumber":402,"author":{"gitId":"alex-setyawan"},"content":" 1. Healthcare worker chooses to delete certain fields of a certain patient\u0027s profile.","lastModifiedDate":"2024-03-16"},{"lineNumber":403,"author":{"gitId":"alex-setyawan"},"content":" 2. IABS validates the information to be deleted and deletes the specified information from the patient\u0027s record in the database.","lastModifiedDate":"2024-03-16"},{"lineNumber":404,"author":{"gitId":"laney0808"},"content":"- **Extensions:**","lastModifiedDate":"2024-03-17"},{"lineNumber":405,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":406,"author":{"gitId":"laney0808"},"content":" 2a. IABS cannot find the patient specified.","lastModifiedDate":"2024-03-17"},{"lineNumber":407,"author":{"gitId":"alex-setyawan"},"content":" - 2a1. IABS requests for the correct NRIC.","lastModifiedDate":"2024-03-16"},{"lineNumber":408,"author":{"gitId":"alex-setyawan"},"content":" - 2a2. Healthcare worker enters new NRIC. ","lastModifiedDate":"2024-03-16"},{"lineNumber":409,"author":{"gitId":"alex-setyawan"},"content":" - Steps 2a1-2a2 are repeated until the data entered are correct or Healthcare worker cancels the action. Use case resumes from step 3.","lastModifiedDate":"2024-03-16"},{"lineNumber":410,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":411,"author":{"gitId":"laney0808"},"content":" 2b. IABS cannot find the specified information.","lastModifiedDate":"2024-03-17"},{"lineNumber":412,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":413,"author":{"gitId":"alex-setyawan"},"content":" - 2b1. IABS alerts healthcare worker that the specified information is not found.","lastModifiedDate":"2024-03-16"},{"lineNumber":414,"author":{"gitId":"alex-setyawan"},"content":" - 2b2. Healthcare worker enters new field.","lastModifiedDate":"2024-03-16"},{"lineNumber":415,"author":{"gitId":"alex-setyawan"},"content":" - Steps 2b1-2b2 are repeated until the data entered are correct or Healthcare worker cancels the action. Use case resumes from step 3.","lastModifiedDate":"2024-03-16"},{"lineNumber":416,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":417,"author":{"gitId":"laney0808"},"content":" 2c. Healthcare worker chooses to delete a mandatory field.","lastModifiedDate":"2024-03-17"},{"lineNumber":418,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":419,"author":{"gitId":"alex-setyawan"},"content":" - 2c1. IABS alerts healthcare worker that mandatory field cannot be deleted.","lastModifiedDate":"2024-03-16"},{"lineNumber":420,"author":{"gitId":"alex-setyawan"},"content":" - 2c2. Healthcare worker enters new field.","lastModifiedDate":"2024-03-16"},{"lineNumber":421,"author":{"gitId":"alex-setyawan"},"content":" - Steps 2c1-2c2 are repeated until the data entered are correct or Healthcare worker cancels the action. Use case resumes from step 3.","lastModifiedDate":"2024-03-16"},{"lineNumber":422,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":423,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":424,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":425,"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":426,"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":427,"author":{"gitId":"alex-setyawan"},"content":"3. ","lastModifiedDate":"2024-03-16"},{"lineNumber":428,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":429,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":430,"author":{"gitId":"alex-setyawan"},"content":"Data Requirements:","lastModifiedDate":"2024-03-16"},{"lineNumber":431,"author":{"gitId":"alex-setyawan"},"content":"* the app should have high data persistency","lastModifiedDate":"2024-03-16"},{"lineNumber":432,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":433,"author":{"gitId":"alex-setyawan"},"content":"Environment Requirements:","lastModifiedDate":"2024-03-16"},{"lineNumber":434,"author":{"gitId":"alex-setyawan"},"content":"* the app should work on both 32-bit and 64-bit environments","lastModifiedDate":"2024-03-16"},{"lineNumber":435,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":436,"author":{"gitId":"alex-setyawan"},"content":"Accessibility:","lastModifiedDate":"2024-03-16"},{"lineNumber":437,"author":{"gitId":"alex-setyawan"},"content":"* the app should be easily downloaded from websites/app stores, and need no prior setup","lastModifiedDate":"2024-03-16"},{"lineNumber":438,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":439,"author":{"gitId":"alex-setyawan"},"content":"Capacity:","lastModifiedDate":"2024-03-16"},{"lineNumber":440,"author":{"gitId":"alex-setyawan"},"content":"* the app should be able to store 10000 profiles ","lastModifiedDate":"2024-03-16"},{"lineNumber":441,"author":{"gitId":"alex-setyawan"},"content":"* the app should not exceed 10GB in storage space","lastModifiedDate":"2024-03-16"},{"lineNumber":442,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":443,"author":{"gitId":"alex-setyawan"},"content":"Compliance with regulations:","lastModifiedDate":"2024-03-16"},{"lineNumber":444,"author":{"gitId":"alex-setyawan"},"content":"* personal data collection on the app should adhere to the Personal Data Protection Act (PDPA)","lastModifiedDate":"2024-03-16"},{"lineNumber":445,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":446,"author":{"gitId":"alex-setyawan"},"content":"Extensibility:","lastModifiedDate":"2024-03-16"},{"lineNumber":447,"author":{"gitId":"alex-setyawan"},"content":"* the app should enable new profile fields to be added easily","lastModifiedDate":"2024-03-16"},{"lineNumber":448,"author":{"gitId":"alex-setyawan"},"content":"* the app should be convenient to expand its capacity when needed","lastModifiedDate":"2024-03-16"},{"lineNumber":449,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":450,"author":{"gitId":"alex-setyawan"},"content":"Interoperability:","lastModifiedDate":"2024-03-16"},{"lineNumber":451,"author":{"gitId":"alex-setyawan"},"content":"* the app should be compatible with Windows, MacOS, Linux platforms","lastModifiedDate":"2024-03-16"},{"lineNumber":452,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":453,"author":{"gitId":"alex-setyawan"},"content":"Maintainability:","lastModifiedDate":"2024-03-16"},{"lineNumber":454,"author":{"gitId":"alex-setyawan"},"content":"* the app should use automated testing","lastModifiedDate":"2024-03-16"},{"lineNumber":455,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":456,"author":{"gitId":"alex-setyawan"},"content":"Performance requirements:","lastModifiedDate":"2024-03-16"},{"lineNumber":457,"author":{"gitId":"alex-setyawan"},"content":"* the app should respond to queries within 1 second","lastModifiedDate":"2024-03-16"},{"lineNumber":458,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":459,"author":{"gitId":"alex-setyawan"},"content":"Process requirements:","lastModifiedDate":"2024-03-16"},{"lineNumber":460,"author":{"gitId":"alex-setyawan"},"content":"* the project should adhere to a schedule to deliver new features fortnightly","lastModifiedDate":"2024-03-16"},{"lineNumber":461,"author":{"gitId":"alex-setyawan"},"content":"* the project should aim to solve bugs found in one version by the next version","lastModifiedDate":"2024-03-16"},{"lineNumber":462,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":463,"author":{"gitId":"alex-setyawan"},"content":"Quality requirements:","lastModifiedDate":"2024-03-16"},{"lineNumber":464,"author":{"gitId":"alex-setyawan"},"content":"* the app should be usable by doctors/nurses/receptionists with limited guidance","lastModifiedDate":"2024-03-16"},{"lineNumber":465,"author":{"gitId":"alex-setyawan"},"content":"* the app should be faster to use by typing queries than using the mouse","lastModifiedDate":"2024-03-16"},{"lineNumber":466,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":467,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":468,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":469,"author":{"gitId":"alex-setyawan"},"content":"1. **Patient Name**: The name of the patient. Case insensitive alphabetical characters with spaces, capped at 30 characters.","lastModifiedDate":"2024-03-16"},{"lineNumber":470,"author":{"gitId":"alex-setyawan"},"content":"2. **NRIC**: National Registration Identity Card number, follows Singapore NRIC format.","lastModifiedDate":"2024-03-16"},{"lineNumber":471,"author":{"gitId":"alex-setyawan"},"content":"3. **Date of Birth (DOB)**: The patient\u0027s date of birth, in the format `yyyy-MM-dd`.","lastModifiedDate":"2024-03-16"},{"lineNumber":472,"author":{"gitId":"alex-setyawan"},"content":"4. **Sex**: The biological sex of the patient, limited to Male/Female.","lastModifiedDate":"2024-03-16"},{"lineNumber":473,"author":{"gitId":"alex-setyawan"},"content":"5. **Phone Number**: The contact number of the patient, numbers with a plus sign.","lastModifiedDate":"2024-03-16"},{"lineNumber":474,"author":{"gitId":"alex-setyawan"},"content":"6. **Address**: The home address of the patient, alphanumerical characters with spaces.","lastModifiedDate":"2024-03-16"},{"lineNumber":475,"author":{"gitId":"alex-setyawan"},"content":"7. **Email**: The email address of the patient, follows a valid format: `\u003ca-zA-Z0-9\u003e@\u003ca-zA-Z0-9\u003e.com`.","lastModifiedDate":"2024-03-16"},{"lineNumber":476,"author":{"gitId":"alex-setyawan"},"content":"8. **Country of Nationality**: The country name of the patient\u0027s nationality, alphabetical characters with spaces.","lastModifiedDate":"2024-03-16"},{"lineNumber":477,"author":{"gitId":"alex-setyawan"},"content":"9. **Date of Admission (DOA)**: The date when the patient was admitted for the current visit, in the format `yyyy-MM-dd`.","lastModifiedDate":"2024-03-16"},{"lineNumber":478,"author":{"gitId":"alex-setyawan"},"content":"10. **Blood Type**: The blood type of the patient, accepts A/B/AB/O (+ or -).","lastModifiedDate":"2024-03-16"},{"lineNumber":479,"author":{"gitId":"alex-setyawan"},"content":"11. **Allergies**: Any allergies the patient may have, alphanumerical characters with spaces.","lastModifiedDate":"2024-03-16"},{"lineNumber":480,"author":{"gitId":"alex-setyawan"},"content":"12. **Conditions**: Any prior medical conditions of the patient.","lastModifiedDate":"2024-03-16"},{"lineNumber":481,"author":{"gitId":"alex-setyawan"},"content":"13. **Symptoms**: The latest symptoms experienced by the patient.","lastModifiedDate":"2024-03-16"},{"lineNumber":482,"author":{"gitId":"alex-setyawan"},"content":"14. **Diagnosis**: The latest diagnosis of the patient\u0027s condition.","lastModifiedDate":"2024-03-16"},{"lineNumber":483,"author":{"gitId":"alex-setyawan"},"content":"15. **Status**: The current infectious status of the patient, can be healthy (green), at risk (yellow), or infected (red).","lastModifiedDate":"2024-03-16"},{"lineNumber":484,"author":{"gitId":"alex-setyawan"},"content":"16. **Location**: A specific area or zone, which can be a neighbourhood or an institution (school).","lastModifiedDate":"2024-03-16"},{"lineNumber":485,"author":{"gitId":"alex-setyawan"},"content":"17. **Cluster ID**: Unique identifier for a cluster of related cases.","lastModifiedDate":"2024-03-16"},{"lineNumber":486,"author":{"gitId":"alex-setyawan"},"content":"18. **Fields**: The fields of the patient\u0027s information, such as name, status, contact.","lastModifiedDate":"2024-03-16"},{"lineNumber":487,"author":{"gitId":"alex-setyawan"},"content":"19. **Infection Source**: The source of infection if known.","lastModifiedDate":"2024-03-16"},{"lineNumber":488,"author":{"gitId":"alex-setyawan"},"content":"20. **Cluster Members**: Patients who are part of the cluster.","lastModifiedDate":"2024-03-16"},{"lineNumber":489,"author":{"gitId":"alex-setyawan"},"content":"21. **Cluster Location**: Location associated with the cluster.","lastModifiedDate":"2024-03-16"},{"lineNumber":490,"author":{"gitId":"alex-setyawan"},"content":"22. **Date of First Infection**: The date when the first infection within the cluster occurred.","lastModifiedDate":"2024-03-16"},{"lineNumber":491,"author":{"gitId":"alex-setyawan"},"content":"23. **Cluster Status**: The current status of the cluster, such as active, under observation, resolved, etc.","lastModifiedDate":"2024-03-16"},{"lineNumber":492,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":493,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":494,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":495,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":496,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":497,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":498,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":499,"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":500,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":501,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":502,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":503,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":504,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":505,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":506,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":507,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":508,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":509,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":510,"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":511,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":512,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":513,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":514,"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":515,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":516,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":517,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":518,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":519,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":520,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":521,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":522,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":523,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":524,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":525,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":526,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":527,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":528,"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":529,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":530,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":531,"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":532,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":533,"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":534,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":535,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":536,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":537,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":538,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":539,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":540,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":541,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":542,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":543,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":544,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"alex-setyawan":79,"laney0808":112,"-":353}},{"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":"jovantanyk"},"content":"## Introduction","lastModifiedDate":"2024-02-25"},{"lineNumber":6,"author":{"gitId":"jovantanyk"},"content":"As government databases grow, information management might prove complex for civil servants, especially so for personal data. **ImmuniMate** offers a way to record comprehensive information about every contact, while ensuring timely updates and avoiding duplications/contradictions. It also seeks to establish links between contacts for speedier information retrieval.","lastModifiedDate":"2024-02-25"},{"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":"-"},"content":"1. Download the latest `addressbook.jar` from [here](https://github.com/se-edu/addressbook-level3/releases).","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your AddressBook.","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar addressbook.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2023-01-01"},{"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":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"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":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2023-01-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01"},{"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":"-"},"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":"-"},"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":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":"jovantanyk"},"content":" e.g. `[t/TAG]…​` can be used as ` ` (i.e. 0 times), `t/friend`, `t/friend t/family` etc.","lastModifiedDate":"2024-02-25"},{"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":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23"},{"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":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"### Adding a person: `add`","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"Adds a person to the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​`","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Tip:**","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"A person can have any number of tags (including 0)","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"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":87,"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":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"### Listing all persons : `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"Shows a list of all persons in the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"### Editing a person : `edit`","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"Edits an existing person in the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"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":102,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"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":105,"author":{"gitId":"-"},"content":"* You can remove all the person’s tags by typing `t/` without","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" specifying any tags after it.","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"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":110,"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":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"### Locating persons by name: `find`","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"Finds persons whose names contain any of the given keywords.","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":"* `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":"Deletes the specified person from the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"* Deletes the person at the specified `INDEX`.","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"* `list` followed by `delete 2` deletes the 2nd person in the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"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":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":"Clears all entries from the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"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":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":162,"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":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":164,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e:exclamation: **Caution:**","lastModifiedDate":"2021-02-04"},{"lineNumber":165,"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.\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":166,"author":{"gitId":"-"},"content":"Furthermore, certain edits can cause the AddressBook to behave in unexpected ways (e.g., if a value entered is outside of the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.","lastModifiedDate":"2024-02-09"},{"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":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04"},{"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":"## 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":"-"},"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":193,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"**Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3`","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"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":196,"author":{"gitId":"-"},"content":"**Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake`","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":"**List** | `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"jovantanyk":3,"-":195}},{"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":"-"},"content":"Class UniquePersonList","lastModifiedDate":"2021-07-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Class Person","lastModifiedDate":"2019-07-03"},{"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":"-"},"content":"Class Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"Class Tag","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":23,"author":{"gitId":"-"},"content":"Class I #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"AddressBook .up.|\u003e ReadOnlyAddressBook","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"ModelManager .up.|\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"Model .right.\u003e ReadOnlyUserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":33,"author":{"gitId":"-"},"content":"Model .left.\u003e ReadOnlyAddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"ModelManager -left-\u003e \"1\" AddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":"ModelManager -right-\u003e \"1\" UserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"UserPrefs .up.|\u003e ReadOnlyUserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"AddressBook *--\u003e \"1\" UniquePersonList","lastModifiedDate":"2019-07-30"},{"lineNumber":39,"author":{"gitId":"-"},"content":"UniquePersonList --\u003e \"~* all\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":40,"author":{"gitId":"jovantanyk"},"content":"Person *--\u003e \"1\" Nric","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"jovantanyk"},"content":"Person *--\u003e \"1\" Name","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"jovantanyk"},"content":"Person *--\u003e \"1\" Phone","lastModifiedDate":"2024-03-23"},{"lineNumber":43,"author":{"gitId":"jovantanyk"},"content":"Person *--\u003e \"1\" Address","lastModifiedDate":"2024-03-23"},{"lineNumber":44,"author":{"gitId":"jovantanyk"},"content":"Person *--\u003e \"1\" DateOfBirth","lastModifiedDate":"2024-03-23"},{"lineNumber":45,"author":{"gitId":"jovantanyk"},"content":"Person *--\u003e \"1\" Sex","lastModifiedDate":"2024-03-23"},{"lineNumber":46,"author":{"gitId":"jovantanyk"},"content":"Person *--\u003e \"1\" Status","lastModifiedDate":"2024-03-23"},{"lineNumber":47,"author":{"gitId":"jovantanyk"},"content":"Person *--\u003e \"0..*\" Tags","lastModifiedDate":"2024-03-23"},{"lineNumber":48,"author":{"gitId":"jovantanyk"},"content":"Person *--\u003e \"0..1\" Email","lastModifiedDate":"2024-03-23"},{"lineNumber":49,"author":{"gitId":"jovantanyk"},"content":"Person *--\u003e \"0..1\" Country","lastModifiedDate":"2024-03-23"},{"lineNumber":50,"author":{"gitId":"jovantanyk"},"content":"Person *--\u003e \"0..1\" Allergies","lastModifiedDate":"2024-03-23"},{"lineNumber":51,"author":{"gitId":"jovantanyk"},"content":"Person *--\u003e \"0..1\" BloodType","lastModifiedDate":"2024-03-23"},{"lineNumber":52,"author":{"gitId":"jovantanyk"},"content":"Person *--\u003e \"0..1\" Condition","lastModifiedDate":"2024-03-23"},{"lineNumber":53,"author":{"gitId":"jovantanyk"},"content":"Person *--\u003e \"0..1\" DateOfAdmission","lastModifiedDate":"2024-03-23"},{"lineNumber":54,"author":{"gitId":"jovantanyk"},"content":"Person *--\u003e \"0..1\" Diagnosis","lastModifiedDate":"2024-03-23"},{"lineNumber":55,"author":{"gitId":"jovantanyk"},"content":"Person *--\u003e \"0..1\" Symptom","lastModifiedDate":"2024-03-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":"Person -[hidden]up--\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":"UniquePersonList -[hidden]right-\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":"Name -[hidden]right-\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":61,"author":{"gitId":"-"},"content":"Phone -[hidden]right-\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":62,"author":{"gitId":"-"},"content":"Address -[hidden]right-\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":64,"author":{"gitId":"-"},"content":"ModelManager --\u003e \"~* filtered\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":65,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"jovantanyk":16,"-":49}},{"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":"jovantanyk"},"content":"title: ImmuniMate","lastModifiedDate":"2024-02-25"},{"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":"jovantanyk"},"content":"**ImmuniMate is a desktop application aimed at General Practitioners and Healthcare Professionals**. The application intends to assist users in managing patient information, and tracking potential infectious.","lastModifiedDate":"2024-02-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"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":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"* If you are interested about developing AddressBook, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.","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":"**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":{"jovantanyk":2,"-":17}},{"path":"docs/team/jovantanyk.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"jovantanyk"},"content":"---","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"jovantanyk"},"content":"layout: page","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"jovantanyk"},"content":"title: Jovan Tan\u0027s Project Portfolio Page","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"jovantanyk"},"content":"---","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"jovantanyk"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"jovantanyk"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"jovantanyk"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"jovantanyk"},"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":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"jovantanyk"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"jovantanyk"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"jovantanyk"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"jovantanyk"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"jovantanyk"},"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":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"jovantanyk"},"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":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"jovantanyk"},"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":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"jovantanyk"},"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":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"jovantanyk"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"jovantanyk"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"jovantanyk"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"jovantanyk"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"jovantanyk"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"jovantanyk"},"content":"* **Project management**:","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"jovantanyk"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"jovantanyk"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"jovantanyk"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"jovantanyk"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"jovantanyk"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"jovantanyk"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"jovantanyk"},"content":"* **Documentation**:","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"jovantanyk"},"content":" * User Guide:","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"jovantanyk"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"jovantanyk"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"jovantanyk"},"content":" * Developer Guide:","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"jovantanyk"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"jovantanyk"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"jovantanyk"},"content":"* **Community**:","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"jovantanyk"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"jovantanyk"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"jovantanyk"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"jovantanyk"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"jovantanyk"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"jovantanyk"},"content":"* **Tools**:","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"jovantanyk"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"jovantanyk"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"jovantanyk"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"jovantanyk"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"jovantanyk":46}},{"path":"docs/team/laney0808.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"laney0808"},"content":"---","lastModifiedDate":"2024-02-26"},{"lineNumber":2,"author":{"gitId":"laney0808"},"content":"layout: page","lastModifiedDate":"2024-02-26"},{"lineNumber":3,"author":{"gitId":"laney0808"},"content":"title: Zhang Lanyu\u0027s Project Portfolio Page","lastModifiedDate":"2024-02-26"},{"lineNumber":4,"author":{"gitId":"laney0808"},"content":"---","lastModifiedDate":"2024-02-26"},{"lineNumber":5,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":6,"author":{"gitId":"laney0808"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-02-26"},{"lineNumber":7,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":8,"author":{"gitId":"laney0808"},"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":"2024-02-26"},{"lineNumber":9,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":10,"author":{"gitId":"laney0808"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-02-26"},{"lineNumber":11,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":12,"author":{"gitId":"laney0808"},"content":"* **New Feature**: Added the ability to update patient\u0027s information in feature list.","lastModifiedDate":"2024-02-26"},{"lineNumber":13,"author":{"gitId":"laney0808"},"content":" * What it does: Allows user to update any field of any specified patient.","lastModifiedDate":"2024-02-26"},{"lineNumber":14,"author":{"gitId":"laney0808"},"content":" * Justification: This feature allows the user to update the patient\u0027s health condition and keep track of their contact information in a timely manner.","lastModifiedDate":"2024-02-26"},{"lineNumber":15,"author":{"gitId":"laney0808"},"content":" * Highlights: This feature enhances the convenience of usage as the user no longer need to delete the old record and key in new record with most of the information to be repeated.","lastModifiedDate":"2024-02-26"},{"lineNumber":16,"author":{"gitId":"laney0808"},"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":"2024-02-26"},{"lineNumber":17,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":18,"author":{"gitId":"laney0808"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-02-26"},{"lineNumber":19,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":20,"author":{"gitId":"laney0808"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-02-26"},{"lineNumber":21,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":22,"author":{"gitId":"laney0808"},"content":"* **Project management**:","lastModifiedDate":"2024-02-26"},{"lineNumber":23,"author":{"gitId":"laney0808"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-02-26"},{"lineNumber":24,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":25,"author":{"gitId":"laney0808"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-02-26"},{"lineNumber":26,"author":{"gitId":"laney0808"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-02-26"},{"lineNumber":27,"author":{"gitId":"laney0808"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-02-26"},{"lineNumber":28,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":29,"author":{"gitId":"laney0808"},"content":"* **Documentation**:","lastModifiedDate":"2024-02-26"},{"lineNumber":30,"author":{"gitId":"laney0808"},"content":" * User Guide:","lastModifiedDate":"2024-02-26"},{"lineNumber":31,"author":{"gitId":"laney0808"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-02-26"},{"lineNumber":32,"author":{"gitId":"laney0808"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-02-26"},{"lineNumber":33,"author":{"gitId":"laney0808"},"content":" * Developer Guide:","lastModifiedDate":"2024-02-26"},{"lineNumber":34,"author":{"gitId":"laney0808"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-02-26"},{"lineNumber":35,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":36,"author":{"gitId":"laney0808"},"content":"* **Community**:","lastModifiedDate":"2024-02-26"},{"lineNumber":37,"author":{"gitId":"laney0808"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-02-26"},{"lineNumber":38,"author":{"gitId":"laney0808"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-02-26"},{"lineNumber":39,"author":{"gitId":"laney0808"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-02-26"},{"lineNumber":40,"author":{"gitId":"laney0808"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-02-26"},{"lineNumber":41,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":42,"author":{"gitId":"laney0808"},"content":"* **Tools**:","lastModifiedDate":"2024-02-26"},{"lineNumber":43,"author":{"gitId":"laney0808"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-02-26"},{"lineNumber":44,"author":{"gitId":"laney0808"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-02-26"},{"lineNumber":45,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":46,"author":{"gitId":"laney0808"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-02-26"}],"authorContributionMap":{"laney0808":46}},{"path":"docs/team/natleong.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"NatLeong"},"content":"---","lastModifiedDate":"2024-03-09"},{"lineNumber":2,"author":{"gitId":"NatLeong"},"content":"layout: page","lastModifiedDate":"2024-03-09"},{"lineNumber":3,"author":{"gitId":"NatLeong"},"content":"title: Natalie Leong\u0027s Project Portfolio Page","lastModifiedDate":"2024-03-09"},{"lineNumber":4,"author":{"gitId":"NatLeong"},"content":"---","lastModifiedDate":"2024-03-09"},{"lineNumber":5,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":6,"author":{"gitId":"NatLeong"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-03-09"},{"lineNumber":7,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":8,"author":{"gitId":"NatLeong"},"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":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"NatLeong"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-09"},{"lineNumber":11,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":12,"author":{"gitId":"NatLeong"},"content":"* **New Feature**: Added the ability to update patient\u0027s information in feature list.","lastModifiedDate":"2024-03-09"},{"lineNumber":13,"author":{"gitId":"NatLeong"},"content":" * What it does: Allows user to update any field of any specified patient.","lastModifiedDate":"2024-03-09"},{"lineNumber":14,"author":{"gitId":"NatLeong"},"content":" * Justification: This feature allows the user to update the patient\u0027s health condition and keep track of their contact information in a timely manner.","lastModifiedDate":"2024-03-09"},{"lineNumber":15,"author":{"gitId":"NatLeong"},"content":" * Highlights: This feature enhances the convenience of usage as the user no longer need to delete the old record and key in new record with most of the information to be repeated.","lastModifiedDate":"2024-03-09"},{"lineNumber":16,"author":{"gitId":"NatLeong"},"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":"2024-03-09"},{"lineNumber":17,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":18,"author":{"gitId":"NatLeong"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-03-09"},{"lineNumber":19,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":20,"author":{"gitId":"NatLeong"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-03-09"},{"lineNumber":21,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":22,"author":{"gitId":"NatLeong"},"content":"* **Project management**:","lastModifiedDate":"2024-03-09"},{"lineNumber":23,"author":{"gitId":"NatLeong"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-03-09"},{"lineNumber":24,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":25,"author":{"gitId":"NatLeong"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-03-09"},{"lineNumber":26,"author":{"gitId":"NatLeong"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-03-09"},{"lineNumber":27,"author":{"gitId":"NatLeong"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-03-09"},{"lineNumber":28,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":29,"author":{"gitId":"NatLeong"},"content":"* **Documentation**:","lastModifiedDate":"2024-03-09"},{"lineNumber":30,"author":{"gitId":"NatLeong"},"content":" * User Guide:","lastModifiedDate":"2024-03-09"},{"lineNumber":31,"author":{"gitId":"NatLeong"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-03-09"},{"lineNumber":32,"author":{"gitId":"NatLeong"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-03-09"},{"lineNumber":33,"author":{"gitId":"NatLeong"},"content":" * Developer Guide:","lastModifiedDate":"2024-03-09"},{"lineNumber":34,"author":{"gitId":"NatLeong"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-03-09"},{"lineNumber":35,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":36,"author":{"gitId":"NatLeong"},"content":"* **Community**:","lastModifiedDate":"2024-03-09"},{"lineNumber":37,"author":{"gitId":"NatLeong"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-03-09"},{"lineNumber":38,"author":{"gitId":"NatLeong"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-03-09"},{"lineNumber":39,"author":{"gitId":"NatLeong"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-03-09"},{"lineNumber":40,"author":{"gitId":"NatLeong"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-03-09"},{"lineNumber":41,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":42,"author":{"gitId":"NatLeong"},"content":"* **Tools**:","lastModifiedDate":"2024-03-09"},{"lineNumber":43,"author":{"gitId":"NatLeong"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-03-09"},{"lineNumber":44,"author":{"gitId":"NatLeong"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-03-09"},{"lineNumber":45,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":46,"author":{"gitId":"NatLeong"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-03-09"}],"authorContributionMap":{"NatLeong":46}},{"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":"laney0808"},"content":"import seedu.address.model.ImmuniMate;","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":"import seedu.address.model.ReadOnlyImmuniMate;","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":" public static final Version VERSION \u003d new Version(0, 2, 2, true);","lastModifiedDate":"2023-08-21"},{"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":"laney0808"},"content":" Optional\u003cReadOnlyImmuniMate\u003e addressBookOptional;","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"laney0808"},"content":" ReadOnlyImmuniMate initialData;","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" initialData \u003d new ImmuniMate();","lastModifiedDate":"2024-03-20"},{"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":{"laney0808":5,"-":181}},{"path":"src/main/java/seedu/address/commons/util/JsonUtil.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":"","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":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-10-07"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"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":"jovantanyk"},"content":" .addDeserializer(Level.class, new LevelDeserializer(Level.class))","lastModifiedDate":"2024-03-24"},{"lineNumber":41,"author":{"gitId":"jovantanyk"},"content":" .addSerializer(new OptionalSerializer()));","lastModifiedDate":"2024-03-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" static \u003cT\u003e void serializeObjectToJsonFile(Path jsonFile, T objectToSerialize) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":" FileUtil.writeToFile(jsonFile, toJsonString(objectToSerialize));","lastModifiedDate":"2016-10-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":" static \u003cT\u003e T deserializeObjectFromJsonFile(Path jsonFile, Class\u003cT\u003e classOfObjectToDeserialize)","lastModifiedDate":"2018-04-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2016-10-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return fromJsonString(FileUtil.readFromFile(jsonFile), classOfObjectToDeserialize);","lastModifiedDate":"2016-10-07"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-07"},{"lineNumber":53,"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":54,"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":55,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * @param filePath cannot be null.","lastModifiedDate":"2016-10-07"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * @param classOfObjectToDeserialize JSON file has to correspond to the structure in the class given here.","lastModifiedDate":"2023-06-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * @throws DataLoadingException if loading of the JSON file failed.","lastModifiedDate":"2023-06-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-07"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static \u003cT\u003e Optional\u003cT\u003e readJsonFile(","lastModifiedDate":"2016-10-07"},{"lineNumber":61,"author":{"gitId":"-"},"content":" Path filePath, Class\u003cT\u003e classOfObjectToDeserialize) throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":62,"author":{"gitId":"-"},"content":" requireNonNull(filePath);","lastModifiedDate":"2017-05-15"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":64,"author":{"gitId":"-"},"content":" if (!Files.exists(filePath)) {","lastModifiedDate":"2018-04-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2016-10-07"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":67,"author":{"gitId":"-"},"content":" logger.info(\"JSON file \" + filePath + \" found.\");","lastModifiedDate":"2023-01-03"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":" T jsonFile;","lastModifiedDate":"2016-10-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":71,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-10-07"},{"lineNumber":72,"author":{"gitId":"-"},"content":" jsonFile \u003d deserializeObjectFromJsonFile(filePath, classOfObjectToDeserialize);","lastModifiedDate":"2018-04-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-10-07"},{"lineNumber":74,"author":{"gitId":"-"},"content":" logger.warning(\"Error reading from jsonFile file \" + filePath + \": \" + e);","lastModifiedDate":"2018-04-21"},{"lineNumber":75,"author":{"gitId":"-"},"content":" throw new DataLoadingException(e);","lastModifiedDate":"2023-06-14"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return Optional.of(jsonFile);","lastModifiedDate":"2016-10-07"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":81,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-07"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * Saves the Json object to the specified file.","lastModifiedDate":"2016-10-07"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * Overwrites existing file if it exists, creates a new file if it doesn\u0027t.","lastModifiedDate":"2016-10-07"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * @param jsonFile cannot be null","lastModifiedDate":"2016-10-07"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * @param filePath cannot be null","lastModifiedDate":"2016-10-07"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * @throws IOException if there was an error during writing to the file","lastModifiedDate":"2016-10-07"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-07"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public static \u003cT\u003e void saveJsonFile(T jsonFile, Path filePath) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":" requireNonNull(filePath);","lastModifiedDate":"2017-05-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" requireNonNull(jsonFile);","lastModifiedDate":"2017-05-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":92,"author":{"gitId":"-"},"content":" serializeObjectToJsonFile(filePath, jsonFile);","lastModifiedDate":"2018-04-21"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * Converts a given string representation of a JSON data to instance of a class","lastModifiedDate":"2016-10-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * @param \u003cT\u003e The generic type to create an instance of","lastModifiedDate":"2016-10-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * @return The instance of T with the specified values in the JSON string","lastModifiedDate":"2016-10-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public static \u003cT\u003e T fromJsonString(String json, Class\u003cT\u003e instanceClass) throws IOException {","lastModifiedDate":"2016-10-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":" return objectMapper.readValue(json, instanceClass);","lastModifiedDate":"2016-10-19"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":105,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-19"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * Converts a given instance of a class into its JSON data string representation","lastModifiedDate":"2016-10-19"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * @param instance The T object to be converted into the JSON string","lastModifiedDate":"2016-10-19"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * @param \u003cT\u003e The generic type to create an instance of","lastModifiedDate":"2016-10-19"},{"lineNumber":109,"author":{"gitId":"-"},"content":" * @return JSON data representation of the given class instance, in string","lastModifiedDate":"2016-10-19"},{"lineNumber":110,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":111,"author":{"gitId":"-"},"content":" public static \u003cT\u003e String toJsonString(T instance) throws JsonProcessingException {","lastModifiedDate":"2016-10-19"},{"lineNumber":112,"author":{"gitId":"-"},"content":" return objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(instance);","lastModifiedDate":"2016-10-19"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":115,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":116,"author":{"gitId":"-"},"content":" * Contains methods that retrieve logging level from serialized string.","lastModifiedDate":"2017-08-16"},{"lineNumber":117,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":118,"author":{"gitId":"-"},"content":" private static class LevelDeserializer extends FromStringDeserializer\u003cLevel\u003e {","lastModifiedDate":"2016-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" protected LevelDeserializer(Class\u003c?\u003e vc) {","lastModifiedDate":"2016-08-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":" super(vc);","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" protected Level _deserialize(String value, DeserializationContext ctxt) {","lastModifiedDate":"2018-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" return getLoggingLevel(value);","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":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" * Gets the logging level that matches loggingLevelString","lastModifiedDate":"2016-08-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":" * \u003cp\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":" * Returns null if there are no matches","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":" private Level getLoggingLevel(String loggingLevelString) {","lastModifiedDate":"2016-08-08"},{"lineNumber":136,"author":{"gitId":"-"},"content":" return Level.parse(loggingLevelString);","lastModifiedDate":"2016-09-09"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":" public Class\u003cLevel\u003e handledType() {","lastModifiedDate":"2016-08-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":" return Level.class;","lastModifiedDate":"2016-08-08"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"jovantanyk":2,"-":143}},{"path":"src/main/java/seedu/address/commons/util/OptionalSerializer.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jovantanyk"},"content":"package seedu.address.commons.util;","lastModifiedDate":"2024-03-24"},{"lineNumber":2,"author":{"gitId":"jovantanyk"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":3,"author":{"gitId":"jovantanyk"},"content":"import java.io.IOException;","lastModifiedDate":"2024-03-24"},{"lineNumber":4,"author":{"gitId":"jovantanyk"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-24"},{"lineNumber":5,"author":{"gitId":"jovantanyk"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":6,"author":{"gitId":"jovantanyk"},"content":"import com.fasterxml.jackson.core.JsonGenerator;","lastModifiedDate":"2024-03-24"},{"lineNumber":7,"author":{"gitId":"jovantanyk"},"content":"import com.fasterxml.jackson.databind.JsonSerializer;","lastModifiedDate":"2024-03-24"},{"lineNumber":8,"author":{"gitId":"jovantanyk"},"content":"import com.fasterxml.jackson.databind.SerializerProvider;","lastModifiedDate":"2024-03-24"},{"lineNumber":9,"author":{"gitId":"jovantanyk"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":10,"author":{"gitId":"jovantanyk"},"content":"/**","lastModifiedDate":"2024-03-24"},{"lineNumber":11,"author":{"gitId":"jovantanyk"},"content":" * A Serializer for handling Optional values and converting them into","lastModifiedDate":"2024-03-24"},{"lineNumber":12,"author":{"gitId":"jovantanyk"},"content":" * proper JSON strings with correct null formatting.","lastModifiedDate":"2024-03-24"},{"lineNumber":13,"author":{"gitId":"jovantanyk"},"content":" */","lastModifiedDate":"2024-03-24"},{"lineNumber":14,"author":{"gitId":"jovantanyk"},"content":"public class OptionalSerializer extends JsonSerializer\u003cOptional\u003c?\u003e\u003e {","lastModifiedDate":"2024-03-24"},{"lineNumber":15,"author":{"gitId":"jovantanyk"},"content":" @Override","lastModifiedDate":"2024-03-24"},{"lineNumber":16,"author":{"gitId":"jovantanyk"},"content":" public void serialize(Optional\u003c?\u003e optional, JsonGenerator jsonGenerator, SerializerProvider serializerProvider)","lastModifiedDate":"2024-03-24"},{"lineNumber":17,"author":{"gitId":"jovantanyk"},"content":" throws IOException {","lastModifiedDate":"2024-03-24"},{"lineNumber":18,"author":{"gitId":"jovantanyk"},"content":" if (optional.isPresent()) {","lastModifiedDate":"2024-03-24"},{"lineNumber":19,"author":{"gitId":"jovantanyk"},"content":" jsonGenerator.writeObject(optional.get());","lastModifiedDate":"2024-03-24"},{"lineNumber":20,"author":{"gitId":"jovantanyk"},"content":" } else {","lastModifiedDate":"2024-03-24"},{"lineNumber":21,"author":{"gitId":"jovantanyk"},"content":" jsonGenerator.writeNull();","lastModifiedDate":"2024-03-24"},{"lineNumber":22,"author":{"gitId":"jovantanyk"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":23,"author":{"gitId":"jovantanyk"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":24,"author":{"gitId":"jovantanyk"},"content":" /**","lastModifiedDate":"2024-03-24"},{"lineNumber":25,"author":{"gitId":"jovantanyk"},"content":" * Avoids directly specifying Optional.class with generics","lastModifiedDate":"2024-03-24"},{"lineNumber":26,"author":{"gitId":"jovantanyk"},"content":" */","lastModifiedDate":"2024-03-24"},{"lineNumber":27,"author":{"gitId":"jovantanyk"},"content":" public Class\u003cOptional\u003c?\u003e\u003e handledType() {","lastModifiedDate":"2024-03-24"},{"lineNumber":28,"author":{"gitId":"jovantanyk"},"content":" return (Class\u003cOptional\u003c?\u003e\u003e) (Class\u003c?\u003e) Optional.class;","lastModifiedDate":"2024-03-24"},{"lineNumber":29,"author":{"gitId":"jovantanyk"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":30,"author":{"gitId":"jovantanyk"},"content":"}","lastModifiedDate":"2024-03-24"}],"authorContributionMap":{"jovantanyk":30}},{"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":"laney0808"},"content":"import seedu.address.model.ReadOnlyImmuniMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"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":"laney0808"},"content":" * @see seedu.address.model.Model#getImmuniMate()","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-03"},{"lineNumber":31,"author":{"gitId":"laney0808"},"content":" ReadOnlyImmuniMate getAddressBook();","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered list of persons */","lastModifiedDate":"2017-09-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10"},{"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":{"laney0808":3,"-":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":"laney0808"},"content":"import seedu.address.logic.parser.ImmuniMateParser;","lastModifiedDate":"2024-03-21"},{"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":"laney0808"},"content":"import seedu.address.model.ReadOnlyImmuniMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"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":"laney0808"},"content":" private final ImmuniMateParser immuniMateParser;","lastModifiedDate":"2024-03-21"},{"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":"laney0808"},"content":" immuniMateParser \u003d new ImmuniMateParser();","lastModifiedDate":"2024-03-21"},{"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":"laney0808"},"content":" Command command \u003d immuniMateParser.parseCommand(commandText);","lastModifiedDate":"2024-03-21"},{"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":"laney0808"},"content":" storage.saveAddressBook(model.getImmuniMate());","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" public ReadOnlyImmuniMate getAddressBook() {","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"laney0808"},"content":" return model.getImmuniMate();","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList();","lastModifiedDate":"2016-09-25"},{"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":"laney0808"},"content":" return model.getImmunimateFilePath();","lastModifiedDate":"2024-03-20"},{"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":{"laney0808":9,"-":79}},{"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":"laney0808"},"content":" public static final String MESSAGE_NRIC_NOT_FOUND \u003d \"The NRIC provided is not found in the system\";","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"alex-setyawan"},"content":" public static final String MESSAGE_PERSON_NOT_FOUND \u003d \"The person provided was not found\";","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"alex-setyawan"},"content":" .append(\"; NRIC: \")","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"alex-setyawan"},"content":" .append(person.getNric())","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"alex-setyawan"},"content":" .append(\"; DOB: \")","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"alex-setyawan"},"content":" .append(person.getDateOfBirth())","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"alex-setyawan"},"content":" .append(\"; Sex: \")","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"alex-setyawan"},"content":" .append(person.getSex())","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"alex-setyawan"},"content":" .append(\"; Status: \")","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"alex-setyawan"},"content":" .append(person.getStatus())","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"alex-setyawan"},"content":" .append(\"; Email: \")","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"alex-setyawan"},"content":" .append(person.getEmail().orElse(\"-\"))","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"alex-setyawan"},"content":" .append(\"; Country: \")","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"alex-setyawan"},"content":" .append(person.getCountry().orElse(\"-\"))","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"alex-setyawan"},"content":" .append(\"; Allergies: \")","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"alex-setyawan"},"content":" .append(person.getAllergies().orElse(\"-\"))","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"alex-setyawan"},"content":" .append(\"; Blood Type: \")","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"alex-setyawan"},"content":" .append(person.getBloodType().orElse(\"-\"))","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"alex-setyawan"},"content":" .append(\"; Condition: \")","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"alex-setyawan"},"content":" .append(person.getCondition().orElse(\"-\"))","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"alex-setyawan"},"content":" .append(\"; DOA: \")","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"alex-setyawan"},"content":" .append(person.getDateOfAdmission().orElse(\"-\"))","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"alex-setyawan"},"content":" .append(\"; Diagnosis: \")","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"alex-setyawan"},"content":" .append(person.getDiagnosis().orElse(\"-\"))","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"alex-setyawan"},"content":" .append(\"; Symptom: \")","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"alex-setyawan"},"content":" .append(person.getSymptom().orElse(\"-\"))","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" person.getTags().forEach(builder::append);","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"alex-setyawan":25,"laney0808":1,"-":48}},{"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":"laney0808"},"content":"import seedu.address.model.ImmuniMate;","lastModifiedDate":"2024-03-20"},{"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":"-"},"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":"laney0808"},"content":" model.setImmuniMate(new ImmuniMate());","lastModifiedDate":"2024-03-20"},{"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":{"laney0808":2,"-":21}},{"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":"laney0808"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ALLERGIES;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"laney0808"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_BLOODTYPE;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"laney0808"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONDITION;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"laney0808"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DATEOFBIRTH;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"laney0808"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DIAGNOSIS;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":12,"author":{"gitId":"laney0808"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NRIC;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":14,"author":{"gitId":"laney0808"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SEX;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"laney0808"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STATUS;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"laney0808"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SYMPTOM;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"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-02-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-01-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"laney0808"},"content":"public class CreateCommand extends Command {","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"laney0808"},"content":" public static final String COMMAND_WORD \u003d \"create\";","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"laney0808"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Creates a patient to the Immunimate System. \"","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06"},{"lineNumber":33,"author":{"gitId":"laney0808"},"content":" + PREFIX_NRIC + \"NRIC \"","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2017-05-09"},{"lineNumber":37,"author":{"gitId":"laney0808"},"content":" + PREFIX_DATEOFBIRTH + \"DATEOFBIRTH \"","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"laney0808"},"content":" + PREFIX_SEX + \"SEX \"","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"laney0808"},"content":" + PREFIX_STATUS + \"STATUS \"","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"laney0808"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09"},{"lineNumber":42,"author":{"gitId":"laney0808"},"content":" + PREFIX_ALLERGIES + \"ALLERGIES \"","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"laney0808"},"content":" + PREFIX_BLOODTYPE + \"BLOODTYPE \"","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"laney0808"},"content":" + PREFIX_CONDITION + \"CONDITION \"","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"laney0808"},"content":" + PREFIX_SYMPTOM + \"SYMPTOM \"","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"laney0808"},"content":" + PREFIX_DIAGNOSIS + \"DIAGNOSIS \"","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06"},{"lineNumber":48,"author":{"gitId":"laney0808"},"content":" + PREFIX_NRIC + \"S1234567A \"","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06"},{"lineNumber":50,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":53,"author":{"gitId":"laney0808"},"content":" + PREFIX_DATEOFBIRTH + \"01-01-1990 \"","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"laney0808"},"content":" + PREFIX_SEX + \"M \"","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"laney0808"},"content":" + PREFIX_STATUS + \"PENDING \"","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"laney0808"},"content":" + PREFIX_TAG + \"Long term medication \"","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"laney0808"},"content":" + PREFIX_TAG + \"High blood pressure \";","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"laney0808"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New patient added: %1$s\";","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"laney0808"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the system\";","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10"},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":67,"author":{"gitId":"laney0808"},"content":" public CreateCommand(Person person) {","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":69,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":72,"author":{"gitId":"laney0808"},"content":" //TODO test cases","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":75,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":78,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":81,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22"},{"lineNumber":87,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":92,"author":{"gitId":"laney0808"},"content":" if (!(other instanceof CreateCommand)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":96,"author":{"gitId":"laney0808"},"content":" CreateCommand otherCreateCommand \u003d (CreateCommand) other;","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"laney0808"},"content":" return toAdd.equals(otherCreateCommand.toAdd);","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"laney0808":35,"-":71}},{"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":"laney0808"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-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.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":10,"author":{"gitId":"laney0808"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Deletes a person identified using it\u0027s displayed index from the address book.","lastModifiedDate":"2018-04-01"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"laney0808"},"content":" + \": Deletes the person identified by the NRIC.\\n\"","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"laney0808"},"content":" + \"Parameters: NRIC\\n\"","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"laney0808"},"content":" + \"Example: \" + COMMAND_WORD + \" S1234567B\";","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"laney0808"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Patient: %1$s\";","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"laney0808"},"content":" private final Nric targetNric;","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"laney0808"},"content":" //TODO test cases","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"laney0808"},"content":" public DeleteCommand(Nric targetNric) {","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"laney0808"},"content":" this.targetNric \u003d targetNric;","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"laney0808"},"content":" //TODO test cases","lastModifiedDate":"2024-03-21"},{"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":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"laney0808"},"content":" ObservableList\u003cPerson\u003e persons \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"laney0808"},"content":" if (!model.hasPerson(Person.createPersonWithNric(targetNric))) {","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"laney0808"},"content":" throw new CommandException(Messages.MESSAGE_NRIC_NOT_FOUND);","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":42,"author":{"gitId":"laney0808"},"content":" //Difference between filteredPersons.contains and model.hasPerson: first checks if the instance is in the list,","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"laney0808"},"content":" //second checks if the NRIC is in the list","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"laney0808"},"content":" Person personToDelete \u003d persons.filtered(person -\u003e person.getNric().equals(targetNric)).get(0);","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" model.deletePerson(personToDelete);","lastModifiedDate":"2016-09-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete)));","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (!(other instanceof DeleteCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":61,"author":{"gitId":"laney0808"},"content":" return targetNric.equals(otherDeleteCommand.targetNric);","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"laney0808"},"content":" //TODO test cases","lastModifiedDate":"2024-03-21"},{"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":"laney0808"},"content":" .add(\"targetNric\", targetNric)","lastModifiedDate":"2024-03-21"},{"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":{"laney0808":20,"-":51}},{"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":"-"},"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":"laney0808"},"content":" //TODO: add nric contains keywords","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public FindCommand(NameContainsKeywordsPredicate predicate) {","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(predicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" return new CommandResult(","lastModifiedDate":"2018-04-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":" String.format(Messages.MESSAGE_PERSONS_LISTED_OVERVIEW, model.getFilteredPersonList().size()));","lastModifiedDate":"2018-04-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" if (!(other instanceof FindCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" FindCommand otherFindCommand \u003d (FindCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return predicate.equals(otherFindCommand.predicate);","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"laney0808":1,"-":58}},{"path":"src/main/java/seedu/address/logic/commands/ReadCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NatLeong"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"NatLeong"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"NatLeong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NRIC;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"NatLeong"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"NatLeong"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"NatLeong"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"NatLeong"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"NatLeong"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"NatLeong"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"NatLeong"},"content":"import seedu.address.model.person.NricContainsKeywordsPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"NatLeong"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"NatLeong"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"NatLeong"},"content":" * Reads the details of an existing person in the address book.","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"NatLeong"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"NatLeong"},"content":"public class ReadCommand extends Command {","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"NatLeong"},"content":" public static final String COMMAND_WORD \u003d \"read\";","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"NatLeong"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Reads the details of the person identified \"","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"NatLeong"},"content":" + \"by the NRIC specified. \"","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"NatLeong"},"content":" + \"Example: \" + COMMAND_WORD","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"NatLeong"},"content":" + PREFIX_NRIC + \"T0123456A\";","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"NatLeong"},"content":" public static final String MESSAGE_READ_PERSON_SUCCESS \u003d \"Read Person: %1$s\";","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"NatLeong"},"content":" public static final String MESSAGE_NO_PERSON \u003d \"There is no such person with this NRIC.\";","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"NatLeong"},"content":" public static final String MESSAGE_NOT_READ \u003d \"NRIC to be specified.\";","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"NatLeong"},"content":" private final Nric nric;","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"NatLeong"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"NatLeong"},"content":" * @param nric of the person to read","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"NatLeong"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"NatLeong"},"content":" public ReadCommand(Nric nric) {","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"NatLeong"},"content":" requireNonNull(nric);","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"NatLeong"},"content":" this.nric \u003d nric;","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"NatLeong"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"NatLeong"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"NatLeong"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"NatLeong"},"content":" if (model.hasPerson(Person.createPersonWithNric(nric))) {","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"NatLeong"},"content":" throw new CommandException(MESSAGE_NO_PERSON);","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"NatLeong"},"content":" model.updateFilteredPersonList(new NricContainsKeywordsPredicate(nric.toString()));","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"NatLeong"},"content":" Person readPerson \u003d model.getFilteredPersonList().get(0);","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"NatLeong"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"NatLeong"},"content":" return new CommandResult(String.format(MESSAGE_READ_PERSON_SUCCESS, Messages.format(readPerson)));","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"NatLeong"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"NatLeong"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"NatLeong"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"NatLeong"},"content":" return true;","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"NatLeong"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"NatLeong"},"content":" if (!(other instanceof ReadCommand)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"NatLeong"},"content":" return false;","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"NatLeong"},"content":" ReadCommand otherReadCommand \u003d (ReadCommand) other;","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"NatLeong"},"content":" return this.nric.equals(otherReadCommand.nric);","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"NatLeong"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"NatLeong"},"content":" public String toString() {","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"NatLeong"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"NatLeong"},"content":" .add(\"nric\", nric)","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"NatLeong"},"content":" .toString();","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"NatLeong"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"NatLeong":76}},{"path":"src/main/java/seedu/address/logic/commands/UpdateCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"alex-setyawan"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"alex-setyawan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"alex-setyawan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"alex-setyawan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"alex-setyawan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"alex-setyawan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"alex-setyawan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"alex-setyawan"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"alex-setyawan"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"alex-setyawan"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"alex-setyawan"},"content":"import java.util.List;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"alex-setyawan"},"content":"import java.util.Objects;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"alex-setyawan"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"alex-setyawan"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.model.person.Allergies;","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.model.person.BloodType;","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.model.person.Condition;","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.model.person.Country;","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.model.person.DateOfAdmission;","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.model.person.DateOfBirth;","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.model.person.Diagnosis;","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"laney0808"},"content":"import seedu.address.model.person.NricContainsKeywordsPredicate;","lastModifiedDate":"2024-03-22"},{"lineNumber":35,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.model.person.Sex;","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.model.person.Status;","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.model.person.Symptom;","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"alex-setyawan"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"alex-setyawan"},"content":" * Updates the details of an existing person in the address book.","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"alex-setyawan"},"content":"public class UpdateCommand extends Command {","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"alex-setyawan"},"content":" public static final String COMMAND_WORD \u003d \"update\";","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"alex-setyawan"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Updates the details of the person identified \"","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"alex-setyawan"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"alex-setyawan"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"alex-setyawan"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"alex-setyawan"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"alex-setyawan"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"alex-setyawan"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"alex-setyawan"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"alex-setyawan"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"alex-setyawan"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"alex-setyawan"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"alex-setyawan"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"alex-setyawan"},"content":" public static final String MESSAGE_UPDATE_PERSON_SUCCESS \u003d \"Updated Person: %1$s\";","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"alex-setyawan"},"content":" public static final String MESSAGE_NOT_UPDATED \u003d \"At least one field to update must be provided.\";","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"alex-setyawan"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"alex-setyawan"},"content":" private final Nric nric;","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"alex-setyawan"},"content":" private final UpdatePersonDescriptor updatePersonDescriptor;","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"alex-setyawan"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"alex-setyawan"},"content":" * @param nric of the person in the filtered person list to update","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"alex-setyawan"},"content":" * @param updatePersonDescriptor details to update the person with","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"alex-setyawan"},"content":" public UpdateCommand(Nric nric, UpdatePersonDescriptor updatePersonDescriptor) {","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"alex-setyawan"},"content":" requireNonNull(nric);","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"alex-setyawan"},"content":" requireNonNull(updatePersonDescriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"alex-setyawan"},"content":" this.nric \u003d nric;","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"alex-setyawan"},"content":" this.updatePersonDescriptor \u003d new UpdatePersonDescriptor(updatePersonDescriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"alex-setyawan"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"alex-setyawan"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"alex-setyawan"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"alex-setyawan"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"alex-setyawan"},"content":" Person personToUpdate \u003d null;","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"laney0808"},"content":" if (!model.hasPerson(Person.createPersonWithNric(nric))) {","lastModifiedDate":"2024-03-22"},{"lineNumber":89,"author":{"gitId":"alex-setyawan"},"content":" throw new CommandException(Messages.MESSAGE_PERSON_NOT_FOUND);","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"laney0808"},"content":" personToUpdate \u003d lastShownList.stream().filter(new NricContainsKeywordsPredicate(nric.toString()))","lastModifiedDate":"2024-03-22"},{"lineNumber":92,"author":{"gitId":"laney0808"},"content":" .findFirst().get();","lastModifiedDate":"2024-03-22"},{"lineNumber":93,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"alex-setyawan"},"content":" Person updatedPerson \u003d createUpdatedPerson(personToUpdate, updatePersonDescriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"alex-setyawan"},"content":" if (!personToUpdate.isSamePerson(updatedPerson) \u0026\u0026 model.hasPerson(updatedPerson)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"alex-setyawan"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":99,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"alex-setyawan"},"content":" model.setPerson(personToUpdate, updatedPerson);","lastModifiedDate":"2024-03-20"},{"lineNumber":101,"author":{"gitId":"alex-setyawan"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-20"},{"lineNumber":102,"author":{"gitId":"alex-setyawan"},"content":" return new CommandResult(String.format(MESSAGE_UPDATE_PERSON_SUCCESS, Messages.format(updatedPerson)));","lastModifiedDate":"2024-03-20"},{"lineNumber":103,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"alex-setyawan"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":106,"author":{"gitId":"alex-setyawan"},"content":" * Creates and returns a {@code Person} with the details of {@code personToUpdate}","lastModifiedDate":"2024-03-20"},{"lineNumber":107,"author":{"gitId":"alex-setyawan"},"content":" * updated with {@code updatePersonDescriptor}.","lastModifiedDate":"2024-03-20"},{"lineNumber":108,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":109,"author":{"gitId":"alex-setyawan"},"content":" private static Person createUpdatedPerson(Person personToUpdate, UpdatePersonDescriptor updatePersonDescriptor) {","lastModifiedDate":"2024-03-20"},{"lineNumber":110,"author":{"gitId":"alex-setyawan"},"content":" assert personToUpdate !\u003d null;","lastModifiedDate":"2024-03-20"},{"lineNumber":111,"author":{"gitId":"alex-setyawan"},"content":" Nric nric \u003d personToUpdate.getNric();","lastModifiedDate":"2024-03-20"},{"lineNumber":112,"author":{"gitId":"alex-setyawan"},"content":" Name updatedName \u003d updatePersonDescriptor.getName().orElse(personToUpdate.getName());","lastModifiedDate":"2024-03-20"},{"lineNumber":113,"author":{"gitId":"alex-setyawan"},"content":" Phone updatedPhone \u003d updatePersonDescriptor.getPhone().orElse(personToUpdate.getPhone());","lastModifiedDate":"2024-03-20"},{"lineNumber":114,"author":{"gitId":"alex-setyawan"},"content":" Address updatedAddress \u003d updatePersonDescriptor.getAddress().orElse(personToUpdate.getAddress());","lastModifiedDate":"2024-03-20"},{"lineNumber":115,"author":{"gitId":"alex-setyawan"},"content":" DateOfBirth updatedDob \u003d updatePersonDescriptor.getDateOfBirth().orElse(personToUpdate.getDateOfBirth());","lastModifiedDate":"2024-03-21"},{"lineNumber":116,"author":{"gitId":"alex-setyawan"},"content":" Sex updatedSex \u003d updatePersonDescriptor.getSex().orElse(personToUpdate.getSex());","lastModifiedDate":"2024-03-21"},{"lineNumber":117,"author":{"gitId":"alex-setyawan"},"content":" Status updatedStatus \u003d updatePersonDescriptor.getStatus().orElse(personToUpdate.getStatus());","lastModifiedDate":"2024-03-21"},{"lineNumber":118,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":119,"author":{"gitId":"alex-setyawan"},"content":" Email updatedEmail \u003d updatePersonDescriptor.getEmail().orElse(personToUpdate.getEmail());","lastModifiedDate":"2024-03-21"},{"lineNumber":120,"author":{"gitId":"alex-setyawan"},"content":" Country updatedCountry \u003d updatePersonDescriptor.getCountry().orElse(personToUpdate.getCountry());","lastModifiedDate":"2024-03-21"},{"lineNumber":121,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":122,"author":{"gitId":"alex-setyawan"},"content":" Allergies updatedAllergies \u003d updatePersonDescriptor.getAllergies().orElse(personToUpdate.getAllergies());","lastModifiedDate":"2024-03-21"},{"lineNumber":123,"author":{"gitId":"alex-setyawan"},"content":" BloodType updatedBloodType \u003d updatePersonDescriptor.getBloodType().orElse(personToUpdate.getBloodType());","lastModifiedDate":"2024-03-21"},{"lineNumber":124,"author":{"gitId":"alex-setyawan"},"content":" Condition updatedCondition \u003d updatePersonDescriptor.getCondition().orElse(personToUpdate.getCondition());","lastModifiedDate":"2024-03-21"},{"lineNumber":125,"author":{"gitId":"alex-setyawan"},"content":" DateOfAdmission updatedDateOfAdmission \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":126,"author":{"gitId":"alex-setyawan"},"content":" updatePersonDescriptor.getDateOfAdmission().orElse(personToUpdate.getDateOfAdmission());","lastModifiedDate":"2024-03-21"},{"lineNumber":127,"author":{"gitId":"alex-setyawan"},"content":" Diagnosis updatedDiagnosis \u003d updatePersonDescriptor.getDiagnosis().orElse(personToUpdate.getDiagnosis());","lastModifiedDate":"2024-03-21"},{"lineNumber":128,"author":{"gitId":"alex-setyawan"},"content":" Symptom updatedSymptom \u003d updatePersonDescriptor.getSymptom().orElse(personToUpdate.getSymptom());","lastModifiedDate":"2024-03-21"},{"lineNumber":129,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":130,"author":{"gitId":"alex-setyawan"},"content":" Person p \u003d new Person(nric, updatedName, updatedPhone, updatedAddress, updatedDob, updatedSex, updatedStatus);","lastModifiedDate":"2024-03-21"},{"lineNumber":131,"author":{"gitId":"alex-setyawan"},"content":" p.setEmail(updatedEmail);","lastModifiedDate":"2024-03-21"},{"lineNumber":132,"author":{"gitId":"alex-setyawan"},"content":" p.setCountry(updatedCountry);","lastModifiedDate":"2024-03-21"},{"lineNumber":133,"author":{"gitId":"alex-setyawan"},"content":" p.setAllergies(updatedAllergies);","lastModifiedDate":"2024-03-21"},{"lineNumber":134,"author":{"gitId":"alex-setyawan"},"content":" p.setBloodType(updatedBloodType);","lastModifiedDate":"2024-03-21"},{"lineNumber":135,"author":{"gitId":"alex-setyawan"},"content":" p.setCondition(updatedCondition);","lastModifiedDate":"2024-03-21"},{"lineNumber":136,"author":{"gitId":"alex-setyawan"},"content":" p.setDateOfAdmission(updatedDateOfAdmission);","lastModifiedDate":"2024-03-21"},{"lineNumber":137,"author":{"gitId":"alex-setyawan"},"content":" p.setDiagnosis(updatedDiagnosis);","lastModifiedDate":"2024-03-21"},{"lineNumber":138,"author":{"gitId":"alex-setyawan"},"content":" p.setSymptom(updatedSymptom);","lastModifiedDate":"2024-03-21"},{"lineNumber":139,"author":{"gitId":"alex-setyawan"},"content":" return p;","lastModifiedDate":"2024-03-21"},{"lineNumber":140,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":141,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":142,"author":{"gitId":"alex-setyawan"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":143,"author":{"gitId":"alex-setyawan"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-20"},{"lineNumber":144,"author":{"gitId":"alex-setyawan"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-20"},{"lineNumber":145,"author":{"gitId":"alex-setyawan"},"content":" return true;","lastModifiedDate":"2024-03-20"},{"lineNumber":146,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":147,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":148,"author":{"gitId":"alex-setyawan"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-20"},{"lineNumber":149,"author":{"gitId":"alex-setyawan"},"content":" if (!(other instanceof UpdateCommand)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":150,"author":{"gitId":"alex-setyawan"},"content":" return false;","lastModifiedDate":"2024-03-20"},{"lineNumber":151,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":152,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":153,"author":{"gitId":"alex-setyawan"},"content":" UpdateCommand otherUpdateCommand \u003d (UpdateCommand) other;","lastModifiedDate":"2024-03-20"},{"lineNumber":154,"author":{"gitId":"alex-setyawan"},"content":" return updatePersonDescriptor.equals(otherUpdateCommand.updatePersonDescriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":155,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":156,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":157,"author":{"gitId":"alex-setyawan"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":158,"author":{"gitId":"alex-setyawan"},"content":" public String toString() {","lastModifiedDate":"2024-03-20"},{"lineNumber":159,"author":{"gitId":"alex-setyawan"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-20"},{"lineNumber":160,"author":{"gitId":"alex-setyawan"},"content":" .add(\"updatePersonDescriptor\", updatePersonDescriptor)","lastModifiedDate":"2024-03-20"},{"lineNumber":161,"author":{"gitId":"alex-setyawan"},"content":" .toString();","lastModifiedDate":"2024-03-20"},{"lineNumber":162,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":163,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":164,"author":{"gitId":"alex-setyawan"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":165,"author":{"gitId":"alex-setyawan"},"content":" * Stores the details to update the person with. Each non-empty field value will replace the","lastModifiedDate":"2024-03-20"},{"lineNumber":166,"author":{"gitId":"alex-setyawan"},"content":" * corresponding field value of the person.","lastModifiedDate":"2024-03-20"},{"lineNumber":167,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":168,"author":{"gitId":"alex-setyawan"},"content":" public static class UpdatePersonDescriptor {","lastModifiedDate":"2024-03-20"},{"lineNumber":169,"author":{"gitId":"alex-setyawan"},"content":" private Nric nric;","lastModifiedDate":"2024-03-20"},{"lineNumber":170,"author":{"gitId":"alex-setyawan"},"content":" private Name name;","lastModifiedDate":"2024-03-20"},{"lineNumber":171,"author":{"gitId":"alex-setyawan"},"content":" private Phone phone;","lastModifiedDate":"2024-03-20"},{"lineNumber":172,"author":{"gitId":"alex-setyawan"},"content":" private Address address;","lastModifiedDate":"2024-03-20"},{"lineNumber":173,"author":{"gitId":"alex-setyawan"},"content":" private DateOfBirth dateOfBirth;","lastModifiedDate":"2024-03-20"},{"lineNumber":174,"author":{"gitId":"alex-setyawan"},"content":" private Sex sex;","lastModifiedDate":"2024-03-20"},{"lineNumber":175,"author":{"gitId":"alex-setyawan"},"content":" private Status status;","lastModifiedDate":"2024-03-20"},{"lineNumber":176,"author":{"gitId":"alex-setyawan"},"content":" // Optional fields","lastModifiedDate":"2024-03-20"},{"lineNumber":177,"author":{"gitId":"alex-setyawan"},"content":" // Data fields","lastModifiedDate":"2024-03-20"},{"lineNumber":178,"author":{"gitId":"alex-setyawan"},"content":" private Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-20"},{"lineNumber":179,"author":{"gitId":"alex-setyawan"},"content":" private Email email;","lastModifiedDate":"2024-03-20"},{"lineNumber":180,"author":{"gitId":"alex-setyawan"},"content":" private Country country;","lastModifiedDate":"2024-03-20"},{"lineNumber":181,"author":{"gitId":"alex-setyawan"},"content":" //Medical information","lastModifiedDate":"2024-03-20"},{"lineNumber":182,"author":{"gitId":"alex-setyawan"},"content":" private Allergies allergies;","lastModifiedDate":"2024-03-20"},{"lineNumber":183,"author":{"gitId":"alex-setyawan"},"content":" private BloodType bloodType;","lastModifiedDate":"2024-03-20"},{"lineNumber":184,"author":{"gitId":"alex-setyawan"},"content":" private Condition condition;","lastModifiedDate":"2024-03-20"},{"lineNumber":185,"author":{"gitId":"alex-setyawan"},"content":" private DateOfAdmission dateOfAdmission;","lastModifiedDate":"2024-03-20"},{"lineNumber":186,"author":{"gitId":"alex-setyawan"},"content":" private Diagnosis diagnosis;","lastModifiedDate":"2024-03-20"},{"lineNumber":187,"author":{"gitId":"alex-setyawan"},"content":" private Symptom symptom;","lastModifiedDate":"2024-03-20"},{"lineNumber":188,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":189,"author":{"gitId":"alex-setyawan"},"content":" public UpdatePersonDescriptor() {}","lastModifiedDate":"2024-03-20"},{"lineNumber":190,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":191,"author":{"gitId":"alex-setyawan"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":192,"author":{"gitId":"alex-setyawan"},"content":" * Copy constructor.","lastModifiedDate":"2024-03-20"},{"lineNumber":193,"author":{"gitId":"alex-setyawan"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2024-03-20"},{"lineNumber":194,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":195,"author":{"gitId":"alex-setyawan"},"content":" public UpdatePersonDescriptor(UpdatePersonDescriptor toCopy) {","lastModifiedDate":"2024-03-20"},{"lineNumber":196,"author":{"gitId":"alex-setyawan"},"content":" setNric(toCopy.nric);","lastModifiedDate":"2024-03-21"},{"lineNumber":197,"author":{"gitId":"alex-setyawan"},"content":" setName(toCopy.name);","lastModifiedDate":"2024-03-20"},{"lineNumber":198,"author":{"gitId":"alex-setyawan"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2024-03-20"},{"lineNumber":199,"author":{"gitId":"alex-setyawan"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2024-03-20"},{"lineNumber":200,"author":{"gitId":"alex-setyawan"},"content":" setDateOfBirth(toCopy.dateOfBirth);","lastModifiedDate":"2024-03-21"},{"lineNumber":201,"author":{"gitId":"alex-setyawan"},"content":" setSex(toCopy.sex);","lastModifiedDate":"2024-03-21"},{"lineNumber":202,"author":{"gitId":"alex-setyawan"},"content":" setStatus(toCopy.status);","lastModifiedDate":"2024-03-21"},{"lineNumber":203,"author":{"gitId":"alex-setyawan"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2024-03-20"},{"lineNumber":204,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":205,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":206,"author":{"gitId":"alex-setyawan"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":207,"author":{"gitId":"alex-setyawan"},"content":" * Returns true if at least one field is updated.","lastModifiedDate":"2024-03-20"},{"lineNumber":208,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":209,"author":{"gitId":"alex-setyawan"},"content":" public boolean isAnyFieldUpdated() {","lastModifiedDate":"2024-03-20"},{"lineNumber":210,"author":{"gitId":"alex-setyawan"},"content":" return CollectionUtil.isAnyNonNull(name, phone, address, sex, status, email, country,","lastModifiedDate":"2024-03-21"},{"lineNumber":211,"author":{"gitId":"alex-setyawan"},"content":" allergies, bloodType, condition, dateOfAdmission, diagnosis, symptom, tags);","lastModifiedDate":"2024-03-21"},{"lineNumber":212,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":213,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":214,"author":{"gitId":"alex-setyawan"},"content":" public void setNric(Nric nric) {","lastModifiedDate":"2024-03-20"},{"lineNumber":215,"author":{"gitId":"alex-setyawan"},"content":" this.nric \u003d nric;","lastModifiedDate":"2024-03-20"},{"lineNumber":216,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":217,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":218,"author":{"gitId":"alex-setyawan"},"content":" public Nric getNric() {","lastModifiedDate":"2024-03-20"},{"lineNumber":219,"author":{"gitId":"alex-setyawan"},"content":" return nric;","lastModifiedDate":"2024-03-20"},{"lineNumber":220,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":221,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":222,"author":{"gitId":"alex-setyawan"},"content":" public void setName(Name name) {","lastModifiedDate":"2024-03-20"},{"lineNumber":223,"author":{"gitId":"alex-setyawan"},"content":" this.name \u003d name;","lastModifiedDate":"2024-03-20"},{"lineNumber":224,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":225,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":226,"author":{"gitId":"alex-setyawan"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2024-03-20"},{"lineNumber":227,"author":{"gitId":"alex-setyawan"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2024-03-20"},{"lineNumber":228,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":229,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":230,"author":{"gitId":"alex-setyawan"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2024-03-20"},{"lineNumber":231,"author":{"gitId":"alex-setyawan"},"content":" this.phone \u003d phone;","lastModifiedDate":"2024-03-20"},{"lineNumber":232,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":233,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":234,"author":{"gitId":"alex-setyawan"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2024-03-20"},{"lineNumber":235,"author":{"gitId":"alex-setyawan"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2024-03-20"},{"lineNumber":236,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":237,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":238,"author":{"gitId":"alex-setyawan"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2024-03-20"},{"lineNumber":239,"author":{"gitId":"alex-setyawan"},"content":" this.address \u003d address;","lastModifiedDate":"2024-03-20"},{"lineNumber":240,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":241,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":242,"author":{"gitId":"alex-setyawan"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2024-03-20"},{"lineNumber":243,"author":{"gitId":"alex-setyawan"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2024-03-20"},{"lineNumber":244,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":245,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":246,"author":{"gitId":"alex-setyawan"},"content":" public void setDateOfBirth(DateOfBirth dateOfBirth) {","lastModifiedDate":"2024-03-20"},{"lineNumber":247,"author":{"gitId":"alex-setyawan"},"content":" this.dateOfBirth \u003d dateOfBirth;","lastModifiedDate":"2024-03-20"},{"lineNumber":248,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":249,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":250,"author":{"gitId":"alex-setyawan"},"content":" public Optional\u003cDateOfBirth\u003e getDateOfBirth() {","lastModifiedDate":"2024-03-20"},{"lineNumber":251,"author":{"gitId":"alex-setyawan"},"content":" return Optional.ofNullable(dateOfBirth);","lastModifiedDate":"2024-03-20"},{"lineNumber":252,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":253,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":254,"author":{"gitId":"alex-setyawan"},"content":" public void setSex(Sex sex) {","lastModifiedDate":"2024-03-20"},{"lineNumber":255,"author":{"gitId":"alex-setyawan"},"content":" this.sex \u003d sex;","lastModifiedDate":"2024-03-20"},{"lineNumber":256,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":257,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":258,"author":{"gitId":"alex-setyawan"},"content":" public Optional\u003cSex\u003e getSex() {","lastModifiedDate":"2024-03-20"},{"lineNumber":259,"author":{"gitId":"alex-setyawan"},"content":" return Optional.ofNullable(sex);","lastModifiedDate":"2024-03-20"},{"lineNumber":260,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":261,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":262,"author":{"gitId":"alex-setyawan"},"content":" public void setStatus(Status status) {","lastModifiedDate":"2024-03-20"},{"lineNumber":263,"author":{"gitId":"alex-setyawan"},"content":" this.status \u003d status;","lastModifiedDate":"2024-03-20"},{"lineNumber":264,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":265,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":266,"author":{"gitId":"alex-setyawan"},"content":" public Optional\u003cStatus\u003e getStatus() {","lastModifiedDate":"2024-03-20"},{"lineNumber":267,"author":{"gitId":"alex-setyawan"},"content":" return Optional.ofNullable(status);","lastModifiedDate":"2024-03-20"},{"lineNumber":268,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":269,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":270,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":271,"author":{"gitId":"alex-setyawan"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2024-03-20"},{"lineNumber":272,"author":{"gitId":"alex-setyawan"},"content":" this.email \u003d email;","lastModifiedDate":"2024-03-20"},{"lineNumber":273,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":274,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":275,"author":{"gitId":"alex-setyawan"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2024-03-20"},{"lineNumber":276,"author":{"gitId":"alex-setyawan"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2024-03-20"},{"lineNumber":277,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":278,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":279,"author":{"gitId":"alex-setyawan"},"content":" public void setCountry(Country country) {","lastModifiedDate":"2024-03-20"},{"lineNumber":280,"author":{"gitId":"alex-setyawan"},"content":" this.country \u003d country;","lastModifiedDate":"2024-03-20"},{"lineNumber":281,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":282,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":283,"author":{"gitId":"alex-setyawan"},"content":" public Optional\u003cCountry\u003e getCountry() {","lastModifiedDate":"2024-03-20"},{"lineNumber":284,"author":{"gitId":"alex-setyawan"},"content":" return Optional.ofNullable(country);","lastModifiedDate":"2024-03-20"},{"lineNumber":285,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":286,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":287,"author":{"gitId":"alex-setyawan"},"content":" public void setAllergies(Allergies allergies) {","lastModifiedDate":"2024-03-20"},{"lineNumber":288,"author":{"gitId":"alex-setyawan"},"content":" this.allergies \u003d allergies;","lastModifiedDate":"2024-03-20"},{"lineNumber":289,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":290,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":291,"author":{"gitId":"alex-setyawan"},"content":" public Optional\u003cAllergies\u003e getAllergies() {","lastModifiedDate":"2024-03-20"},{"lineNumber":292,"author":{"gitId":"alex-setyawan"},"content":" return Optional.ofNullable(allergies);","lastModifiedDate":"2024-03-20"},{"lineNumber":293,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":294,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":295,"author":{"gitId":"alex-setyawan"},"content":" public void setBloodType(BloodType bloodType) {","lastModifiedDate":"2024-03-20"},{"lineNumber":296,"author":{"gitId":"alex-setyawan"},"content":" this.bloodType \u003d bloodType;","lastModifiedDate":"2024-03-20"},{"lineNumber":297,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":298,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":299,"author":{"gitId":"alex-setyawan"},"content":" public Optional\u003cBloodType\u003e getBloodType() {","lastModifiedDate":"2024-03-20"},{"lineNumber":300,"author":{"gitId":"alex-setyawan"},"content":" return Optional.ofNullable(bloodType);","lastModifiedDate":"2024-03-20"},{"lineNumber":301,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":302,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":303,"author":{"gitId":"alex-setyawan"},"content":" public void setCondition(Condition condition) {","lastModifiedDate":"2024-03-20"},{"lineNumber":304,"author":{"gitId":"alex-setyawan"},"content":" this.condition \u003d condition;","lastModifiedDate":"2024-03-20"},{"lineNumber":305,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":306,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":307,"author":{"gitId":"alex-setyawan"},"content":" public Optional\u003cCondition\u003e getCondition() {","lastModifiedDate":"2024-03-20"},{"lineNumber":308,"author":{"gitId":"alex-setyawan"},"content":" return Optional.ofNullable(condition);","lastModifiedDate":"2024-03-20"},{"lineNumber":309,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":310,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":311,"author":{"gitId":"alex-setyawan"},"content":" public void setDateOfAdmission(DateOfAdmission dateOfAdmission) {","lastModifiedDate":"2024-03-20"},{"lineNumber":312,"author":{"gitId":"alex-setyawan"},"content":" this.dateOfAdmission \u003d dateOfAdmission;","lastModifiedDate":"2024-03-20"},{"lineNumber":313,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":314,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":315,"author":{"gitId":"alex-setyawan"},"content":" public Optional\u003cDateOfAdmission\u003e getDateOfAdmission() {","lastModifiedDate":"2024-03-20"},{"lineNumber":316,"author":{"gitId":"alex-setyawan"},"content":" return Optional.ofNullable(dateOfAdmission);","lastModifiedDate":"2024-03-20"},{"lineNumber":317,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":318,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":319,"author":{"gitId":"alex-setyawan"},"content":" public void setDiagnosis(Diagnosis diagnosis) {","lastModifiedDate":"2024-03-20"},{"lineNumber":320,"author":{"gitId":"alex-setyawan"},"content":" this.diagnosis \u003d diagnosis;","lastModifiedDate":"2024-03-20"},{"lineNumber":321,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":322,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":323,"author":{"gitId":"alex-setyawan"},"content":" public Optional\u003cDiagnosis\u003e getDiagnosis() {","lastModifiedDate":"2024-03-20"},{"lineNumber":324,"author":{"gitId":"alex-setyawan"},"content":" return Optional.ofNullable(diagnosis);","lastModifiedDate":"2024-03-20"},{"lineNumber":325,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":326,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":327,"author":{"gitId":"alex-setyawan"},"content":" public void setSymptom(Symptom symptom) {","lastModifiedDate":"2024-03-20"},{"lineNumber":328,"author":{"gitId":"alex-setyawan"},"content":" this.symptom \u003d symptom;","lastModifiedDate":"2024-03-20"},{"lineNumber":329,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":330,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":331,"author":{"gitId":"alex-setyawan"},"content":" public Optional\u003cSymptom\u003e getSymptom() {","lastModifiedDate":"2024-03-20"},{"lineNumber":332,"author":{"gitId":"alex-setyawan"},"content":" return Optional.ofNullable(symptom);","lastModifiedDate":"2024-03-20"},{"lineNumber":333,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":334,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":335,"author":{"gitId":"alex-setyawan"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":336,"author":{"gitId":"alex-setyawan"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2024-03-20"},{"lineNumber":337,"author":{"gitId":"alex-setyawan"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2024-03-20"},{"lineNumber":338,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":339,"author":{"gitId":"alex-setyawan"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-03-20"},{"lineNumber":340,"author":{"gitId":"alex-setyawan"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2024-03-20"},{"lineNumber":341,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":342,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":343,"author":{"gitId":"alex-setyawan"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":344,"author":{"gitId":"alex-setyawan"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2024-03-20"},{"lineNumber":345,"author":{"gitId":"alex-setyawan"},"content":" * if modification is attempted.","lastModifiedDate":"2024-03-20"},{"lineNumber":346,"author":{"gitId":"alex-setyawan"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2024-03-20"},{"lineNumber":347,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":348,"author":{"gitId":"alex-setyawan"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2024-03-20"},{"lineNumber":349,"author":{"gitId":"alex-setyawan"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2024-03-20"},{"lineNumber":350,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":351,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":352,"author":{"gitId":"alex-setyawan"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":353,"author":{"gitId":"alex-setyawan"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-20"},{"lineNumber":354,"author":{"gitId":"alex-setyawan"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-20"},{"lineNumber":355,"author":{"gitId":"alex-setyawan"},"content":" return true;","lastModifiedDate":"2024-03-20"},{"lineNumber":356,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":357,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":358,"author":{"gitId":"alex-setyawan"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-20"},{"lineNumber":359,"author":{"gitId":"alex-setyawan"},"content":" if (!(other instanceof UpdatePersonDescriptor)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":360,"author":{"gitId":"alex-setyawan"},"content":" return false;","lastModifiedDate":"2024-03-20"},{"lineNumber":361,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":362,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":363,"author":{"gitId":"alex-setyawan"},"content":" UpdatePersonDescriptor otherUpdatePersonDescriptor \u003d (UpdatePersonDescriptor) other;","lastModifiedDate":"2024-03-20"},{"lineNumber":364,"author":{"gitId":"alex-setyawan"},"content":" return Objects.equals(nric, otherUpdatePersonDescriptor.nric)","lastModifiedDate":"2024-03-20"},{"lineNumber":365,"author":{"gitId":"alex-setyawan"},"content":" \u0026\u0026 Objects.equals(name, otherUpdatePersonDescriptor.name)","lastModifiedDate":"2024-03-20"},{"lineNumber":366,"author":{"gitId":"alex-setyawan"},"content":" \u0026\u0026 Objects.equals(phone, otherUpdatePersonDescriptor.phone)","lastModifiedDate":"2024-03-20"},{"lineNumber":367,"author":{"gitId":"alex-setyawan"},"content":" \u0026\u0026 Objects.equals(address, otherUpdatePersonDescriptor.address)","lastModifiedDate":"2024-03-20"},{"lineNumber":368,"author":{"gitId":"alex-setyawan"},"content":" \u0026\u0026 Objects.equals(dateOfBirth, otherUpdatePersonDescriptor.dateOfBirth)","lastModifiedDate":"2024-03-20"},{"lineNumber":369,"author":{"gitId":"alex-setyawan"},"content":" \u0026\u0026 Objects.equals(sex, otherUpdatePersonDescriptor.sex)","lastModifiedDate":"2024-03-20"},{"lineNumber":370,"author":{"gitId":"alex-setyawan"},"content":" \u0026\u0026 Objects.equals(status, otherUpdatePersonDescriptor.status)","lastModifiedDate":"2024-03-20"},{"lineNumber":371,"author":{"gitId":"alex-setyawan"},"content":" \u0026\u0026 Objects.equals(email, otherUpdatePersonDescriptor.email)","lastModifiedDate":"2024-03-20"},{"lineNumber":372,"author":{"gitId":"alex-setyawan"},"content":" \u0026\u0026 Objects.equals(country, otherUpdatePersonDescriptor.country)","lastModifiedDate":"2024-03-20"},{"lineNumber":373,"author":{"gitId":"alex-setyawan"},"content":" \u0026\u0026 Objects.equals(allergies, otherUpdatePersonDescriptor.allergies)","lastModifiedDate":"2024-03-20"},{"lineNumber":374,"author":{"gitId":"alex-setyawan"},"content":" \u0026\u0026 Objects.equals(bloodType, otherUpdatePersonDescriptor.bloodType)","lastModifiedDate":"2024-03-20"},{"lineNumber":375,"author":{"gitId":"alex-setyawan"},"content":" \u0026\u0026 Objects.equals(condition, otherUpdatePersonDescriptor.condition)","lastModifiedDate":"2024-03-20"},{"lineNumber":376,"author":{"gitId":"alex-setyawan"},"content":" \u0026\u0026 Objects.equals(dateOfAdmission, otherUpdatePersonDescriptor.dateOfAdmission)","lastModifiedDate":"2024-03-20"},{"lineNumber":377,"author":{"gitId":"alex-setyawan"},"content":" \u0026\u0026 Objects.equals(diagnosis, otherUpdatePersonDescriptor.diagnosis)","lastModifiedDate":"2024-03-20"},{"lineNumber":378,"author":{"gitId":"alex-setyawan"},"content":" \u0026\u0026 Objects.equals(symptom, otherUpdatePersonDescriptor.symptom)","lastModifiedDate":"2024-03-20"},{"lineNumber":379,"author":{"gitId":"alex-setyawan"},"content":" \u0026\u0026 Objects.equals(tags, otherUpdatePersonDescriptor.tags);","lastModifiedDate":"2024-03-20"},{"lineNumber":380,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":381,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":382,"author":{"gitId":"alex-setyawan"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":383,"author":{"gitId":"alex-setyawan"},"content":" public String toString() {","lastModifiedDate":"2024-03-20"},{"lineNumber":384,"author":{"gitId":"alex-setyawan"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-20"},{"lineNumber":385,"author":{"gitId":"alex-setyawan"},"content":" .add(\"nric\", nric)","lastModifiedDate":"2024-03-20"},{"lineNumber":386,"author":{"gitId":"alex-setyawan"},"content":" .add(\"name\", name)","lastModifiedDate":"2024-03-20"},{"lineNumber":387,"author":{"gitId":"alex-setyawan"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2024-03-20"},{"lineNumber":388,"author":{"gitId":"alex-setyawan"},"content":" .add(\"address\", address)","lastModifiedDate":"2024-03-20"},{"lineNumber":389,"author":{"gitId":"alex-setyawan"},"content":" .add(\"date of birth\", dateOfBirth)","lastModifiedDate":"2024-03-20"},{"lineNumber":390,"author":{"gitId":"alex-setyawan"},"content":" .add(\"sex\", sex)","lastModifiedDate":"2024-03-20"},{"lineNumber":391,"author":{"gitId":"alex-setyawan"},"content":" .add(\"status\", status)","lastModifiedDate":"2024-03-20"},{"lineNumber":392,"author":{"gitId":"alex-setyawan"},"content":" .toString();","lastModifiedDate":"2024-03-20"},{"lineNumber":393,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":394,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":395,"author":{"gitId":"alex-setyawan"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"alex-setyawan":391,"laney0808":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":"laney0808"},"content":" public static final Prefix PREFIX_NRIC \u003d new Prefix(\"ic/\");","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"laney0808"},"content":" public static final Prefix PREFIX_DATEOFBIRTH \u003d new Prefix(\"dob/\");","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"laney0808"},"content":" public static final Prefix PREFIX_SEX \u003d new Prefix(\"s/\");","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"laney0808"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"hp/\");","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":15,"author":{"gitId":"laney0808"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"laney0808"},"content":" public static final Prefix PREFIX_COUNTRY \u003d new Prefix(\"c/\");","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"laney0808"},"content":" public static final Prefix PREFIX_DATEOFADMISSION \u003d new Prefix(\"doa/\");","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"laney0808"},"content":" public static final Prefix PREFIX_BLOODTYPE \u003d new Prefix(\"bt/\");","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"laney0808"},"content":" public static final Prefix PREFIX_ALLERGIES \u003d new Prefix(\"al/\");","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"laney0808"},"content":" public static final Prefix PREFIX_CONDITION \u003d new Prefix(\"con/\");","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"laney0808"},"content":" public static final Prefix PREFIX_SYMPTOM \u003d new Prefix(\"sym/\");","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"laney0808"},"content":" public static final Prefix PREFIX_DIAGNOSIS \u003d new Prefix(\"d/\");","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":24,"author":{"gitId":"jovantanyk"},"content":" public static final Prefix PREFIX_STATUS \u003d new Prefix(\"st/\");","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"jovantanyk":1,"laney0808":12,"-":13}},{"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":"laney0808"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ALLERGIES;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"laney0808"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_BLOODTYPE;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"laney0808"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONDITION;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"laney0808"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COUNTRY;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"laney0808"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DATEOFADMISSION;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"laney0808"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DATEOFBIRTH;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"laney0808"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DIAGNOSIS;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":14,"author":{"gitId":"laney0808"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NRIC;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-02-05"},{"lineNumber":16,"author":{"gitId":"laney0808"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SEX;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"jovantanyk"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STATUS;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"laney0808"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SYMPTOM;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-02-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":23,"author":{"gitId":"laney0808"},"content":"import seedu.address.logic.commands.CreateCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-03-17"},{"lineNumber":26,"author":{"gitId":"laney0808"},"content":"import seedu.address.model.person.DateOfBirth;","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"laney0808"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-03-17"},{"lineNumber":29,"author":{"gitId":"laney0808"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-03-17"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-03-17"},{"lineNumber":32,"author":{"gitId":"jovantanyk"},"content":"import seedu.address.model.person.Sex;","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"jovantanyk"},"content":"import seedu.address.model.person.Status;","lastModifiedDate":"2024-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":"laney0808"},"content":"public class CreateCommandParser implements Parser\u003cCreateCommand\u003e {","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":45,"author":{"gitId":"laney0808"},"content":" //TODO test cases","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"laney0808"},"content":" public CreateCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":48,"author":{"gitId":"laney0808"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NRIC, PREFIX_NAME, PREFIX_PHONE, PREFIX_ADDRESS,","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"laney0808"},"content":" PREFIX_DATEOFBIRTH, PREFIX_SEX, PREFIX_STATUS, PREFIX_TAG, PREFIX_EMAIL, PREFIX_COUNTRY,","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"laney0808"},"content":" PREFIX_DATEOFADMISSION, PREFIX_ALLERGIES, PREFIX_BLOODTYPE, PREFIX_CONDITION, PREFIX_SYMPTOM,","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"laney0808"},"content":" PREFIX_DIAGNOSIS);","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"laney0808"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NRIC, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_DATEOFBIRTH,","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"laney0808"},"content":" PREFIX_SEX, PREFIX_STATUS) || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"laney0808"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, CreateCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":57,"author":{"gitId":"laney0808"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NRIC, PREFIX_NAME, PREFIX_PHONE, PREFIX_ADDRESS,","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"laney0808"},"content":" PREFIX_DATEOFBIRTH, PREFIX_SEX);","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"laney0808"},"content":" Nric nric \u003d ParserUtil.parseNric(argMultimap.getValue(PREFIX_NRIC).get());","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":61,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":62,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":63,"author":{"gitId":"laney0808"},"content":" DateOfBirth dob \u003d ParserUtil.parseDateOfBirth(argMultimap.getValue(PREFIX_DATEOFBIRTH).get());","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"jovantanyk"},"content":" Sex sex \u003d ParserUtil.parseSex(argMultimap.getValue(PREFIX_SEX).get());","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"jovantanyk"},"content":" Status status \u003d ParserUtil.parseStatus(argMultimap.getValue(PREFIX_STATUS).get());","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"laney0808"},"content":" //TODO (later): assersion to make sure optinal values don\u0027t generate errors","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"jovantanyk"},"content":" Person person \u003d new Person(nric, name, phone, address, dob, sex, status);","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"laney0808"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"laney0808"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"laney0808"},"content":" person.setEmail(email);","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"laney0808"},"content":" if (argMultimap.getValue(PREFIX_COUNTRY).isPresent()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"laney0808"},"content":" person.setCountry(ParserUtil.parseCountry(argMultimap.getValue(PREFIX_COUNTRY).get()));","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"laney0808"},"content":" if (argMultimap.getValue(PREFIX_DATEOFADMISSION).isPresent()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"laney0808"},"content":" person.setDateOfAdmission(ParserUtil.parseDateOfAdmission(argMultimap","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"laney0808"},"content":" .getValue(PREFIX_DATEOFADMISSION).get()));","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"laney0808"},"content":" if (argMultimap.getValue(PREFIX_ALLERGIES).isPresent()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"laney0808"},"content":" person.setAllergies(ParserUtil.parseAllergies(argMultimap.getValue(PREFIX_ALLERGIES).get()));","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"laney0808"},"content":" if (argMultimap.getValue(PREFIX_BLOODTYPE).isPresent()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"laney0808"},"content":" person.setBloodType(ParserUtil.parseBloodType(argMultimap.getValue(PREFIX_BLOODTYPE).get()));","lastModifiedDate":"2024-03-19"},{"lineNumber":84,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"laney0808"},"content":" if (argMultimap.getValue(PREFIX_CONDITION).isPresent()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"laney0808"},"content":" person.setCondition(ParserUtil.parseCondition(argMultimap.getValue(PREFIX_CONDITION).get()));","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"laney0808"},"content":" if (argMultimap.getValue(PREFIX_SYMPTOM).isPresent()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"laney0808"},"content":" person.setSymptom(ParserUtil.parseSymptom(argMultimap.getValue(PREFIX_SYMPTOM).get()));","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":91,"author":{"gitId":"laney0808"},"content":" if (argMultimap.getValue(PREFIX_DIAGNOSIS).isPresent()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":92,"author":{"gitId":"laney0808"},"content":" person.setDiagnosis(ParserUtil.parseDiagnosis(argMultimap.getValue(PREFIX_DIAGNOSIS).get()));","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":95,"author":{"gitId":"laney0808"},"content":" return new CreateCommand(person);","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":98,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17"},{"lineNumber":101,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":102,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17"},{"lineNumber":103,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":106,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"jovantanyk":6,"laney0808":56,"-":44}},{"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.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":"laney0808"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-03-20"},{"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":"-"},"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":"2017-03-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":21,"author":{"gitId":"laney0808"},"content":" Nric nric \u003d ParserUtil.parseNric(args);","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"laney0808"},"content":" return new DeleteCommand(nric);","lastModifiedDate":"2024-03-20"},{"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":{"laney0808":3,"-":26}},{"path":"src/main/java/seedu/address/logic/parser/ImmuniMateParser.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":"2017-01-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18"},{"lineNumber":13,"author":{"gitId":"laney0808"},"content":"import seedu.address.logic.commands.CreateCommand;","lastModifiedDate":"2024-03-20"},{"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.ExitCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":19,"author":{"gitId":"NatLeong"},"content":"import seedu.address.logic.commands.ReadCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.logic.commands.UpdateCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"laney0808"},"content":"public class ImmuniMateParser {","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22"},{"lineNumber":32,"author":{"gitId":"laney0808"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ImmuniMateParser.class);","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24"},{"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":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"laney0808"},"content":" //TODO test cases","lastModifiedDate":"2024-03-21"},{"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":"laney0808"},"content":" case CreateCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"laney0808"},"content":" return new CreateCommandParser().parse(arguments);","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"alex-setyawan"},"content":" case UpdateCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"alex-setyawan"},"content":" return new UpdateCommandParser().parse(arguments);","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":82,"author":{"gitId":"NatLeong"},"content":" case ReadCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"NatLeong"},"content":" return new ReadCommandParser().parse(arguments);","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26"},{"lineNumber":86,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29"},{"lineNumber":87,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"alex-setyawan":3,"laney0808":6,"-":78,"NatLeong":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":"-"},"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":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-02-11"},{"lineNumber":13,"author":{"gitId":"laney0808"},"content":"import seedu.address.model.person.Allergies;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"jovantanyk"},"content":"import seedu.address.model.person.BloodType;","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"laney0808"},"content":"import seedu.address.model.person.Condition;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"laney0808"},"content":"import seedu.address.model.person.Country;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"laney0808"},"content":"import seedu.address.model.person.DateOfAdmission;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"laney0808"},"content":"import seedu.address.model.person.DateOfBirth;","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"laney0808"},"content":"import seedu.address.model.person.Diagnosis;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11"},{"lineNumber":22,"author":{"gitId":"laney0808"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-02-11"},{"lineNumber":24,"author":{"gitId":"jovantanyk"},"content":"import seedu.address.model.person.Sex;","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"jovantanyk"},"content":"import seedu.address.model.person.Status;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"laney0808"},"content":"import seedu.address.model.person.Symptom;","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":29,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":32,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11"},{"lineNumber":33,"author":{"gitId":"laney0808"},"content":" //TODO: add parser for new fields","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25"},{"lineNumber":40,"author":{"gitId":"jovantanyk"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":44,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02"},{"lineNumber":46,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"laney0808"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"laney0808"},"content":" * Parses a {@code String nric} into a {@code Nric}.","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"laney0808"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"laney0808"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"laney0808"},"content":" * @throws ParseException if the given {@code nric} is invalid.","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"laney0808"},"content":" //TODO test cases","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"laney0808"},"content":" public static Nric parseNric(String nric) throws ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"laney0808"},"content":" requireNonNull(nric);","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"laney0808"},"content":" String trimmedNric \u003d nric.trim();","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"laney0808"},"content":" if (!Nric.isValidNric(trimmedNric)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"laney0808"},"content":" throw new ParseException(Nric.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"laney0808"},"content":" return new Nric(trimmedNric);","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29"},{"lineNumber":70,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":74,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29"},{"lineNumber":75,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":77,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":82,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":85,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":88,"author":{"gitId":"laney0808"},"content":" //TODO test cases","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":90,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30"},{"lineNumber":91,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":92,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":93,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":95,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","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":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":101,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":105,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30"},{"lineNumber":106,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":107,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":108,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":110,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","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":"laney0808"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"laney0808"},"content":" * Parses a {@code String dob} into an {@code DateOfBirth}.","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"laney0808"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"laney0808"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"laney0808"},"content":" * @throws ParseException if the given {@code dob} is invalid.","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"laney0808"},"content":" //TODO test cases","lastModifiedDate":"2024-03-21"},{"lineNumber":120,"author":{"gitId":"laney0808"},"content":" public static DateOfBirth parseDateOfBirth(String dob) throws ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"laney0808"},"content":" requireNonNull(dob);","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"laney0808"},"content":" String trimmedDob \u003d dob.trim();","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"laney0808"},"content":" if (!DateOfBirth.isValidDateOfBirth(trimmedDob)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"laney0808"},"content":" throw new ParseException(DateOfBirth.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"laney0808"},"content":" return new DateOfBirth(trimmedDob);","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":129,"author":{"gitId":"laney0808"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":130,"author":{"gitId":"jovantanyk"},"content":" * Parses a {@code String sex} into an {@code Sex sex}.","lastModifiedDate":"2024-03-18"},{"lineNumber":131,"author":{"gitId":"laney0808"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"laney0808"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"laney0808"},"content":" * @throws ParseException if the given {@code sex} is invalid.","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":135,"author":{"gitId":"laney0808"},"content":" //TODO test cases","lastModifiedDate":"2024-03-21"},{"lineNumber":136,"author":{"gitId":"jovantanyk"},"content":" public static Sex parseSex(String sex) throws ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"laney0808"},"content":" requireNonNull(sex);","lastModifiedDate":"2024-03-17"},{"lineNumber":138,"author":{"gitId":"laney0808"},"content":" String trimmedSex \u003d sex.trim();","lastModifiedDate":"2024-03-17"},{"lineNumber":139,"author":{"gitId":"jovantanyk"},"content":" if (!Sex.isValidSex(trimmedSex)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":140,"author":{"gitId":"jovantanyk"},"content":" throw new ParseException(Sex.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":141,"author":{"gitId":"jovantanyk"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"jovantanyk"},"content":" return new Sex(sex);","lastModifiedDate":"2024-03-18"},{"lineNumber":143,"author":{"gitId":"jovantanyk"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":144,"author":{"gitId":"jovantanyk"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":145,"author":{"gitId":"jovantanyk"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"jovantanyk"},"content":" * Parses a {@code String status} into an {@code Status status}.","lastModifiedDate":"2024-03-18"},{"lineNumber":147,"author":{"gitId":"jovantanyk"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-17"},{"lineNumber":148,"author":{"gitId":"jovantanyk"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":149,"author":{"gitId":"jovantanyk"},"content":" * @throws ParseException if the given {@code sex} is invalid.","lastModifiedDate":"2024-03-17"},{"lineNumber":150,"author":{"gitId":"jovantanyk"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":151,"author":{"gitId":"laney0808"},"content":" //TODO test cases","lastModifiedDate":"2024-03-21"},{"lineNumber":152,"author":{"gitId":"jovantanyk"},"content":" public static Status parseStatus(String status) throws ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":153,"author":{"gitId":"jovantanyk"},"content":" requireNonNull(status);","lastModifiedDate":"2024-03-17"},{"lineNumber":154,"author":{"gitId":"jovantanyk"},"content":" String trimmedStatus \u003d status.trim().toUpperCase();","lastModifiedDate":"2024-03-18"},{"lineNumber":155,"author":{"gitId":"jovantanyk"},"content":" if (!Status.isValidStatus(trimmedStatus)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":156,"author":{"gitId":"jovantanyk"},"content":" throw new ParseException(Status.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":157,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":158,"author":{"gitId":"jovantanyk"},"content":" return new Status(status);","lastModifiedDate":"2024-03-18"},{"lineNumber":159,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":160,"author":{"gitId":"laney0808"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":161,"author":{"gitId":"laney0808"},"content":" * Parses a {@code String country} into an {@code Country country}.","lastModifiedDate":"2024-03-19"},{"lineNumber":162,"author":{"gitId":"laney0808"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-19"},{"lineNumber":163,"author":{"gitId":"laney0808"},"content":" * @throws ParseException if the given {@code country} is invalid.","lastModifiedDate":"2024-03-19"},{"lineNumber":164,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":165,"author":{"gitId":"laney0808"},"content":" //TODO test cases","lastModifiedDate":"2024-03-21"},{"lineNumber":166,"author":{"gitId":"laney0808"},"content":" public static Country parseCountry(String country) throws ParseException {","lastModifiedDate":"2024-03-19"},{"lineNumber":167,"author":{"gitId":"laney0808"},"content":" requireNonNull(country);","lastModifiedDate":"2024-03-19"},{"lineNumber":168,"author":{"gitId":"laney0808"},"content":" //TODO: Implement country validation \u0026 standardisation","lastModifiedDate":"2024-03-19"},{"lineNumber":169,"author":{"gitId":"laney0808"},"content":" String trimmedCountry \u003d country.trim();","lastModifiedDate":"2024-03-19"},{"lineNumber":170,"author":{"gitId":"laney0808"},"content":" return new Country(trimmedCountry);","lastModifiedDate":"2024-03-19"},{"lineNumber":171,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":172,"author":{"gitId":"laney0808"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":173,"author":{"gitId":"laney0808"},"content":" * Parses a {@code String dateOfAdmission} into an {@code DateOfAdmission dateOfAdmission}.","lastModifiedDate":"2024-03-19"},{"lineNumber":174,"author":{"gitId":"laney0808"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-19"},{"lineNumber":175,"author":{"gitId":"laney0808"},"content":" * @throws ParseException if the given {@code dateOfAdmission} is invalid.","lastModifiedDate":"2024-03-19"},{"lineNumber":176,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":177,"author":{"gitId":"laney0808"},"content":" //TODO test cases","lastModifiedDate":"2024-03-21"},{"lineNumber":178,"author":{"gitId":"laney0808"},"content":" public static DateOfAdmission parseDateOfAdmission(String dateOfAdmission) throws ParseException {","lastModifiedDate":"2024-03-19"},{"lineNumber":179,"author":{"gitId":"laney0808"},"content":" requireNonNull(dateOfAdmission);","lastModifiedDate":"2024-03-19"},{"lineNumber":180,"author":{"gitId":"laney0808"},"content":" String trimmedDateOfAdmission \u003d dateOfAdmission.trim();","lastModifiedDate":"2024-03-19"},{"lineNumber":181,"author":{"gitId":"laney0808"},"content":" if (!DateOfAdmission.isValidDateOfAdmission(trimmedDateOfAdmission)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":182,"author":{"gitId":"jovantanyk"},"content":" throw new ParseException(DateOfAdmission.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":183,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":184,"author":{"gitId":"laney0808"},"content":" return new DateOfAdmission(trimmedDateOfAdmission);","lastModifiedDate":"2024-03-19"},{"lineNumber":185,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":186,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":187,"author":{"gitId":"jovantanyk"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":188,"author":{"gitId":"jovantanyk"},"content":" * Parses a {@code String status} into an {@code Status status}.","lastModifiedDate":"2024-03-18"},{"lineNumber":189,"author":{"gitId":"jovantanyk"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-18"},{"lineNumber":190,"author":{"gitId":"laney0808"},"content":" *","lastModifiedDate":"2024-03-19"},{"lineNumber":191,"author":{"gitId":"jovantanyk"},"content":" * @throws ParseException if the given {@code sex} is invalid.","lastModifiedDate":"2024-03-18"},{"lineNumber":192,"author":{"gitId":"jovantanyk"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":193,"author":{"gitId":"laney0808"},"content":" //TODO test cases","lastModifiedDate":"2024-03-21"},{"lineNumber":194,"author":{"gitId":"jovantanyk"},"content":" public static BloodType parseBloodType(String bloodType) throws ParseException {","lastModifiedDate":"2024-03-18"},{"lineNumber":195,"author":{"gitId":"jovantanyk"},"content":" requireNonNull(bloodType);","lastModifiedDate":"2024-03-18"},{"lineNumber":196,"author":{"gitId":"laney0808"},"content":" String trimmedBloodType \u003d bloodType.trim();","lastModifiedDate":"2024-03-19"},{"lineNumber":197,"author":{"gitId":"jovantanyk"},"content":" if (!BloodType.isValidBloodType(trimmedBloodType)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":198,"author":{"gitId":"laney0808"},"content":" throw new ParseException(BloodType.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-19"},{"lineNumber":199,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":200,"author":{"gitId":"jovantanyk"},"content":" return new BloodType(trimmedBloodType);","lastModifiedDate":"2024-03-21"},{"lineNumber":201,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":202,"author":{"gitId":"laney0808"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":203,"author":{"gitId":"laney0808"},"content":" * Parses a {@code String allergies} into an {@code Set\u003cAllergies\u003e}.","lastModifiedDate":"2024-03-19"},{"lineNumber":204,"author":{"gitId":"laney0808"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-19"},{"lineNumber":205,"author":{"gitId":"laney0808"},"content":" * @throws ParseException if the given {@code allergies} is invalid.","lastModifiedDate":"2024-03-19"},{"lineNumber":206,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":207,"author":{"gitId":"laney0808"},"content":" //TODO test cases","lastModifiedDate":"2024-03-21"},{"lineNumber":208,"author":{"gitId":"laney0808"},"content":" public static Allergies parseAllergies(String allergies) throws ParseException {","lastModifiedDate":"2024-03-19"},{"lineNumber":209,"author":{"gitId":"laney0808"},"content":" requireNonNull(allergies);","lastModifiedDate":"2024-03-19"},{"lineNumber":210,"author":{"gitId":"laney0808"},"content":" String trimmedAllergies \u003d allergies.trim();","lastModifiedDate":"2024-03-19"},{"lineNumber":211,"author":{"gitId":"laney0808"},"content":" return new Allergies(trimmedAllergies);","lastModifiedDate":"2024-03-19"},{"lineNumber":212,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":213,"author":{"gitId":"laney0808"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":214,"author":{"gitId":"laney0808"},"content":" * Parses a {@code String condition} into an {@code Condition}.","lastModifiedDate":"2024-03-19"},{"lineNumber":215,"author":{"gitId":"laney0808"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-19"},{"lineNumber":216,"author":{"gitId":"laney0808"},"content":" *","lastModifiedDate":"2024-03-19"},{"lineNumber":217,"author":{"gitId":"laney0808"},"content":" * @throws ParseException if the given {@code condition} is invalid.","lastModifiedDate":"2024-03-19"},{"lineNumber":218,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":219,"author":{"gitId":"laney0808"},"content":" //TODO test cases","lastModifiedDate":"2024-03-21"},{"lineNumber":220,"author":{"gitId":"laney0808"},"content":" public static Condition parseCondition(String condition) throws ParseException {","lastModifiedDate":"2024-03-19"},{"lineNumber":221,"author":{"gitId":"laney0808"},"content":" requireNonNull(condition);","lastModifiedDate":"2024-03-19"},{"lineNumber":222,"author":{"gitId":"laney0808"},"content":" String trimmedCondition \u003d condition.trim();","lastModifiedDate":"2024-03-19"},{"lineNumber":223,"author":{"gitId":"laney0808"},"content":" //TODO: Implement condition validation \u0026 standardisation","lastModifiedDate":"2024-03-19"},{"lineNumber":224,"author":{"gitId":"laney0808"},"content":" return new Condition(trimmedCondition);","lastModifiedDate":"2024-03-19"},{"lineNumber":225,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":226,"author":{"gitId":"laney0808"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":227,"author":{"gitId":"laney0808"},"content":" * Parses a {@code String symptom} into an {@code Symptom}.","lastModifiedDate":"2024-03-19"},{"lineNumber":228,"author":{"gitId":"laney0808"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-19"},{"lineNumber":229,"author":{"gitId":"laney0808"},"content":" *","lastModifiedDate":"2024-03-19"},{"lineNumber":230,"author":{"gitId":"laney0808"},"content":" * @throws ParseException if the given {@code symptom} is invalid.","lastModifiedDate":"2024-03-19"},{"lineNumber":231,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":232,"author":{"gitId":"laney0808"},"content":" //TODO test cases","lastModifiedDate":"2024-03-21"},{"lineNumber":233,"author":{"gitId":"laney0808"},"content":" public static Symptom parseSymptom(String symptom) throws ParseException {","lastModifiedDate":"2024-03-19"},{"lineNumber":234,"author":{"gitId":"laney0808"},"content":" requireNonNull(symptom);","lastModifiedDate":"2024-03-19"},{"lineNumber":235,"author":{"gitId":"laney0808"},"content":" String trimmedSymptom \u003d symptom.trim();","lastModifiedDate":"2024-03-19"},{"lineNumber":236,"author":{"gitId":"laney0808"},"content":" return new Symptom(trimmedSymptom);","lastModifiedDate":"2024-03-19"},{"lineNumber":237,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":238,"author":{"gitId":"laney0808"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":239,"author":{"gitId":"laney0808"},"content":" * Parses a {@code String diagnosis} into an {@code Diagnosis}.","lastModifiedDate":"2024-03-19"},{"lineNumber":240,"author":{"gitId":"laney0808"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-19"},{"lineNumber":241,"author":{"gitId":"laney0808"},"content":" *","lastModifiedDate":"2024-03-19"},{"lineNumber":242,"author":{"gitId":"laney0808"},"content":" * @throws ParseException if the given {@code diagnosis} is invalid.","lastModifiedDate":"2024-03-19"},{"lineNumber":243,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":244,"author":{"gitId":"laney0808"},"content":" //TODO test cases","lastModifiedDate":"2024-03-21"},{"lineNumber":245,"author":{"gitId":"laney0808"},"content":" public static Diagnosis parseDiagnosis(String diagnosis) throws ParseException {","lastModifiedDate":"2024-03-19"},{"lineNumber":246,"author":{"gitId":"laney0808"},"content":" requireNonNull(diagnosis);","lastModifiedDate":"2024-03-19"},{"lineNumber":247,"author":{"gitId":"laney0808"},"content":" String trimmedDiagnosis \u003d diagnosis.trim();","lastModifiedDate":"2024-03-19"},{"lineNumber":248,"author":{"gitId":"laney0808"},"content":" return new Diagnosis(trimmedDiagnosis);","lastModifiedDate":"2024-03-19"},{"lineNumber":249,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":250,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":251,"author":{"gitId":"jovantanyk"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":252,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":253,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30"},{"lineNumber":254,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":255,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":256,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":257,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":258,"author":{"gitId":"laney0808"},"content":" //TODO test cases","lastModifiedDate":"2024-03-21"},{"lineNumber":259,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":260,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":261,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":262,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":263,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":264,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":265,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30"},{"lineNumber":266,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":268,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":269,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":270,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":271,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":272,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":273,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":274,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":275,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30"},{"lineNumber":276,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":277,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":278,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":279,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":280,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30"},{"lineNumber":281,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":283,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":284,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07"},{"lineNumber":285,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":286,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":287,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15"},{"lineNumber":288,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11"},{"lineNumber":289,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11"},{"lineNumber":290,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30"},{"lineNumber":291,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":292,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07"},{"lineNumber":293,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":294,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"jovantanyk":35,"laney0808":134,"-":125}},{"path":"src/main/java/seedu/address/logic/parser/ReadCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NatLeong"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"NatLeong"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"NatLeong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NRIC;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"NatLeong"},"content":"import seedu.address.logic.commands.ReadCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"NatLeong"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"NatLeong"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"NatLeong"},"content":" * Parses input arguments and creates a new ReadCommand object","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"NatLeong"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"NatLeong"},"content":"public class ReadCommandParser implements Parser\u003cReadCommand\u003e {","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"NatLeong"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"NatLeong"},"content":" * Parses the given {@code String} of argument in the context of the ReadCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"NatLeong"},"content":" * and returns an ReadCommand object for execution.","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"NatLeong"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"NatLeong"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"NatLeong"},"content":" public ReadCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"NatLeong"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"NatLeong"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_NRIC);","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"NatLeong"},"content":" if (argMultimap.getValue(PREFIX_NRIC).isEmpty()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"NatLeong"},"content":" throw new ParseException(ReadCommand.MESSAGE_NOT_READ);","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"NatLeong"},"content":" return new ReadCommand(ParserUtil.parseNric(argMultimap.getValue(PREFIX_NRIC).get()));","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"NatLeong"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-22"}],"authorContributionMap":{"NatLeong":29}},{"path":"src/main/java/seedu/address/logic/parser/UpdateCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"alex-setyawan"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"alex-setyawan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"alex-setyawan"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"alex-setyawan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"alex-setyawan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ALLERGIES;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"alex-setyawan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_BLOODTYPE;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"alex-setyawan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONDITION;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"alex-setyawan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COUNTRY;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"alex-setyawan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DATEOFADMISSION;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"alex-setyawan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DATEOFBIRTH;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"alex-setyawan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DIAGNOSIS;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"alex-setyawan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"alex-setyawan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"alex-setyawan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NRIC;","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"alex-setyawan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"alex-setyawan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SEX;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"alex-setyawan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STATUS;","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"alex-setyawan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SYMPTOM;","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"alex-setyawan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"alex-setyawan"},"content":"import java.util.Collection;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"alex-setyawan"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"alex-setyawan"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"alex-setyawan"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.logic.commands.UpdateCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.logic.commands.UpdateCommand.UpdatePersonDescriptor;","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"alex-setyawan"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"alex-setyawan"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"alex-setyawan"},"content":"public class UpdateCommandParser implements Parser\u003cUpdateCommand\u003e {","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"alex-setyawan"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"alex-setyawan"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"alex-setyawan"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"alex-setyawan"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"alex-setyawan"},"content":" public UpdateCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"alex-setyawan"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"alex-setyawan"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"alex-setyawan"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NRIC, PREFIX_NAME, PREFIX_PHONE, PREFIX_ADDRESS,","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"alex-setyawan"},"content":" PREFIX_DATEOFBIRTH, PREFIX_SEX, PREFIX_STATUS, PREFIX_TAG, PREFIX_EMAIL, PREFIX_COUNTRY,","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"alex-setyawan"},"content":" PREFIX_DATEOFADMISSION, PREFIX_ALLERGIES, PREFIX_BLOODTYPE, PREFIX_CONDITION, PREFIX_SYMPTOM,","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"alex-setyawan"},"content":" PREFIX_DIAGNOSIS);","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"alex-setyawan"},"content":" Nric nric;","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"alex-setyawan"},"content":" try {","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"alex-setyawan"},"content":" nric \u003d ParserUtil.parseNric(argMultimap.getPreamble());","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"alex-setyawan"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"alex-setyawan"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, UpdateCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"alex-setyawan"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NRIC, PREFIX_NAME, PREFIX_PHONE, PREFIX_ADDRESS,","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"alex-setyawan"},"content":" PREFIX_DATEOFBIRTH, PREFIX_SEX, PREFIX_STATUS, PREFIX_TAG, PREFIX_EMAIL, PREFIX_COUNTRY,","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"alex-setyawan"},"content":" PREFIX_DATEOFADMISSION, PREFIX_ALLERGIES, PREFIX_BLOODTYPE, PREFIX_CONDITION, PREFIX_SYMPTOM,","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"alex-setyawan"},"content":" PREFIX_DIAGNOSIS);","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"alex-setyawan"},"content":" UpdatePersonDescriptor updatePersonDescriptor \u003d new UpdatePersonDescriptor();","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"alex-setyawan"},"content":" // Mandatory fields","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"alex-setyawan"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"alex-setyawan"},"content":" updatePersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"alex-setyawan"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"alex-setyawan"},"content":" updatePersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"alex-setyawan"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"alex-setyawan"},"content":" updatePersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"alex-setyawan"},"content":" if (argMultimap.getValue(PREFIX_SEX).isPresent()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"alex-setyawan"},"content":" updatePersonDescriptor.setSex(ParserUtil.parseSex(argMultimap.getValue(PREFIX_SEX).get()));","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"alex-setyawan"},"content":" if (argMultimap.getValue(PREFIX_STATUS).isPresent()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"alex-setyawan"},"content":" updatePersonDescriptor.setStatus(ParserUtil.parseStatus(argMultimap.getValue(PREFIX_STATUS).get()));","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"alex-setyawan"},"content":" // Data fields","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"alex-setyawan"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"alex-setyawan"},"content":" updatePersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"alex-setyawan"},"content":" if (argMultimap.getValue(PREFIX_COUNTRY).isPresent()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"alex-setyawan"},"content":" updatePersonDescriptor.setCountry(ParserUtil.parseCountry(argMultimap.getValue(PREFIX_COUNTRY).get()));","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"alex-setyawan"},"content":" // Medical information","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"alex-setyawan"},"content":" if (argMultimap.getValue(PREFIX_ALLERGIES).isPresent()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"alex-setyawan"},"content":" updatePersonDescriptor.setAllergies(","lastModifiedDate":"2024-03-21"},{"lineNumber":94,"author":{"gitId":"alex-setyawan"},"content":" ParserUtil.parseAllergies(argMultimap.getValue(PREFIX_ALLERGIES).get()));","lastModifiedDate":"2024-03-21"},{"lineNumber":95,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"alex-setyawan"},"content":" if (argMultimap.getValue(PREFIX_BLOODTYPE).isPresent()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"alex-setyawan"},"content":" updatePersonDescriptor.setBloodType(","lastModifiedDate":"2024-03-21"},{"lineNumber":98,"author":{"gitId":"alex-setyawan"},"content":" ParserUtil.parseBloodType(argMultimap.getValue(PREFIX_BLOODTYPE).get()));","lastModifiedDate":"2024-03-21"},{"lineNumber":99,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"alex-setyawan"},"content":" if (argMultimap.getValue(PREFIX_CONDITION).isPresent()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":101,"author":{"gitId":"alex-setyawan"},"content":" updatePersonDescriptor.setCondition(","lastModifiedDate":"2024-03-21"},{"lineNumber":102,"author":{"gitId":"alex-setyawan"},"content":" ParserUtil.parseCondition(argMultimap.getValue(PREFIX_CONDITION).get()));","lastModifiedDate":"2024-03-21"},{"lineNumber":103,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"alex-setyawan"},"content":" if (argMultimap.getValue(PREFIX_DATEOFADMISSION).isPresent()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"alex-setyawan"},"content":" updatePersonDescriptor.setDateOfAdmission(","lastModifiedDate":"2024-03-21"},{"lineNumber":106,"author":{"gitId":"alex-setyawan"},"content":" ParserUtil.parseDateOfAdmission(argMultimap.getValue(PREFIX_DATEOFADMISSION).get()));","lastModifiedDate":"2024-03-21"},{"lineNumber":107,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":108,"author":{"gitId":"alex-setyawan"},"content":" if (argMultimap.getValue(PREFIX_DIAGNOSIS).isPresent()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":109,"author":{"gitId":"alex-setyawan"},"content":" updatePersonDescriptor.setDiagnosis(","lastModifiedDate":"2024-03-21"},{"lineNumber":110,"author":{"gitId":"alex-setyawan"},"content":" ParserUtil.parseDiagnosis(argMultimap.getValue(PREFIX_DIAGNOSIS).get()));","lastModifiedDate":"2024-03-21"},{"lineNumber":111,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":112,"author":{"gitId":"alex-setyawan"},"content":" if (argMultimap.getValue(PREFIX_SYMPTOM).isPresent()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":113,"author":{"gitId":"alex-setyawan"},"content":" updatePersonDescriptor.setSymptom(ParserUtil.parseSymptom(argMultimap.getValue(PREFIX_SYMPTOM).get()));","lastModifiedDate":"2024-03-20"},{"lineNumber":114,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":115,"author":{"gitId":"alex-setyawan"},"content":" parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(updatePersonDescriptor::setTags);","lastModifiedDate":"2024-03-20"},{"lineNumber":116,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":117,"author":{"gitId":"alex-setyawan"},"content":" if (!updatePersonDescriptor.isAnyFieldUpdated()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":118,"author":{"gitId":"alex-setyawan"},"content":" throw new ParseException(UpdateCommand.MESSAGE_NOT_UPDATED);","lastModifiedDate":"2024-03-20"},{"lineNumber":119,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":120,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":121,"author":{"gitId":"alex-setyawan"},"content":" return new UpdateCommand(nric, updatePersonDescriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":122,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":123,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":124,"author":{"gitId":"alex-setyawan"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":125,"author":{"gitId":"alex-setyawan"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e} if {@code tags} is non-empty.","lastModifiedDate":"2024-03-20"},{"lineNumber":126,"author":{"gitId":"alex-setyawan"},"content":" * If {@code tags} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2024-03-20"},{"lineNumber":127,"author":{"gitId":"alex-setyawan"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2024-03-20"},{"lineNumber":128,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":129,"author":{"gitId":"alex-setyawan"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2024-03-20"},{"lineNumber":130,"author":{"gitId":"alex-setyawan"},"content":" assert tags !\u003d null;","lastModifiedDate":"2024-03-20"},{"lineNumber":131,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":132,"author":{"gitId":"alex-setyawan"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":133,"author":{"gitId":"alex-setyawan"},"content":" return Optional.empty();","lastModifiedDate":"2024-03-20"},{"lineNumber":134,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":135,"author":{"gitId":"alex-setyawan"},"content":" Collection\u003cString\u003e tagSet \u003d tags.size() \u003d\u003d 1 \u0026\u0026 tags.contains(\"\") ? Collections.emptySet() : tags;","lastModifiedDate":"2024-03-20"},{"lineNumber":136,"author":{"gitId":"alex-setyawan"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2024-03-20"},{"lineNumber":137,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":138,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":139,"author":{"gitId":"alex-setyawan"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"alex-setyawan":139}},{"path":"src/main/java/seedu/address/model/ImmuniMate.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":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.UniquePersonList;","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Wraps all data at the address-book level","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Duplicates are not allowed (by .isSamePerson comparison)","lastModifiedDate":"2018-04-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"laney0808"},"content":"public class ImmuniMate implements ReadOnlyImmuniMate {","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"laney0808"},"content":" //TODO test cases","lastModifiedDate":"2024-03-21"},{"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":"laney0808"},"content":" public ImmuniMate() {}","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" public ImmuniMate(ReadOnlyImmuniMate toBeCopied) {","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":" * Replaces the contents of the person list with {@code persons}.","lastModifiedDate":"2018-08-07"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2018-08-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void setPersons(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-08-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.persons.setPersons(persons);","lastModifiedDate":"2016-10-19"},{"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":"laney0808"},"content":" public void resetData(ReadOnlyImmuniMate newData) {","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-09-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * The person must not already exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void addPerson(Person p) {","lastModifiedDate":"2018-08-07"},{"lineNumber":76,"author":{"gitId":"-"},"content":" persons.add(p);","lastModifiedDate":"2018-03-29"},{"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":"-"},"content":" * Replaces the given person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2018-01-10"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":82,"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":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":85,"author":{"gitId":"-"},"content":" requireNonNull(editedPerson);","lastModifiedDate":"2018-01-10"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" persons.setPerson(target, editedPerson);","lastModifiedDate":"2018-03-29"},{"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":"-"},"content":" public void removePerson(Person key) {","lastModifiedDate":"2018-08-07"},{"lineNumber":95,"author":{"gitId":"-"},"content":" persons.remove(key);","lastModifiedDate":"2018-02-28"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" //// util methods","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":" .add(\"persons\", persons)","lastModifiedDate":"2019-02-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"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-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":108,"author":{"gitId":"-"},"content":" return persons.asUnmodifiableObservableList();","lastModifiedDate":"2018-04-05"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-01"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-01"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"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":"laney0808"},"content":" if (!(other instanceof ImmuniMate)) {","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" ImmuniMate otherAddressBook \u003d (ImmuniMate) other;","lastModifiedDate":"2024-03-20"},{"lineNumber":123,"author":{"gitId":"-"},"content":" return persons.equals(otherAddressBook.persons);","lastModifiedDate":"2023-07-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":127,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":128,"author":{"gitId":"-"},"content":" return persons.hashCode();","lastModifiedDate":"2018-03-29"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":130,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"laney0808":7,"-":123}},{"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":"-"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2017-08-05"},{"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":"laney0808"},"content":" Path getImmunimateFilePath();","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" void setImmunimateFilePath(Path immuniMateFilePath);","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" void setImmuniMate(ReadOnlyImmuniMate immuniMate);","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" ReadOnlyImmuniMate getImmuniMate();","lastModifiedDate":"2024-03-20"},{"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":{"laney0808":4,"-":83}},{"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":"-"},"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":"laney0808"},"content":" private final ImmuniMate immuniMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2018-01-10"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"laney0808"},"content":" * Initializes a ModelManager with the given system and userPrefs.","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"laney0808"},"content":" public ModelManager(ReadOnlyImmuniMate immuniMate, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"laney0808"},"content":" requireAllNonNull(immuniMate, userPrefs);","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":32,"author":{"gitId":"laney0808"},"content":" logger.fine(\"Initializing with Immunimate: \" + immuniMate + \" and user prefs \" + userPrefs);","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"laney0808"},"content":" this.immuniMate \u003d new ImmuniMate(immuniMate);","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":36,"author":{"gitId":"laney0808"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(this.immuniMate.getPersonList());","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" this(new ImmuniMate(), new UserPrefs());","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"laney0808"},"content":" public Path getImmunimateFilePath() {","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","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":"laney0808"},"content":" public void setImmunimateFilePath(Path immuniMateFilePath) {","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"laney0808"},"content":" requireNonNull(immuniMateFilePath);","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"laney0808"},"content":" userPrefs.setAddressBookFilePath(immuniMateFilePath);","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"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":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":81,"author":{"gitId":"laney0808"},"content":" public void setImmuniMate(ReadOnlyImmuniMate immuniMate) {","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"laney0808"},"content":" this.immuniMate.resetData(immuniMate);","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":86,"author":{"gitId":"laney0808"},"content":" public ReadOnlyImmuniMate getImmuniMate() {","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"laney0808"},"content":" return immuniMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":90,"author":{"gitId":"laney0808"},"content":" //TODO test cases","lastModifiedDate":"2024-03-21"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":93,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":94,"author":{"gitId":"laney0808"},"content":" return immuniMate.hasPerson(person);","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":96,"author":{"gitId":"laney0808"},"content":" //TODO test cases","lastModifiedDate":"2024-03-21"},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15"},{"lineNumber":99,"author":{"gitId":"laney0808"},"content":" immuniMate.removePerson(target);","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":104,"author":{"gitId":"laney0808"},"content":" immuniMate.addPerson(person);","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"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":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":110,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":112,"author":{"gitId":"laney0808"},"content":" immuniMate.setPerson(target, editedPerson);","lastModifiedDate":"2024-03-20"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":115,"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":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":118,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10"},{"lineNumber":119,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11"},{"lineNumber":120,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":123,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":127,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":128,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05"},{"lineNumber":129,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":135,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":138,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31"},{"lineNumber":139,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":140,"author":{"gitId":"-"},"content":" return false;","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":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":144,"author":{"gitId":"laney0808"},"content":" return immuniMate.equals(otherModelManager.immuniMate)","lastModifiedDate":"2024-03-20"},{"lineNumber":145,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13"},{"lineNumber":146,"author":{"gitId":"-"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons);","lastModifiedDate":"2023-07-13"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":149,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"laney0808":23,"-":126}},{"path":"src/main/java/seedu/address/model/ReadOnlyImmuniMate.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":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"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":"laney0808"},"content":"public interface ReadOnlyImmuniMate {","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the persons list.","lastModifiedDate":"2016-12-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * This list will not contain any duplicate persons.","lastModifiedDate":"2016-12-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"laney0808":1,"-":16}},{"path":"src/main/java/seedu/address/model/person/Address.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":"-"},"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":"jovantanyk"},"content":" private final String value;","lastModifiedDate":"2024-03-18"},{"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":{"jovantanyk":1,"-":64}},{"path":"src/main/java/seedu/address/model/person/Allergies.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"laney0808"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"laney0808"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"laney0808"},"content":" * Represents a Person\u0027s allergies in the address book.","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"jovantanyk"},"content":" * Guarantees: immutable;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"laney0808"},"content":"public class Allergies {","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"laney0808"},"content":" private final String allergies;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"laney0808"},"content":" public Allergies(String allergies) {","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"laney0808"},"content":" this.allergies \u003d allergies;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"laney0808"},"content":" public String getAllergies() {","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"laney0808"},"content":" return allergies;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"alex-setyawan"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"alex-setyawan"},"content":" * Returns given placeholder string if value field is not initialised","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"alex-setyawan"},"content":" * @param alt","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"alex-setyawan"},"content":" * @return placeholder string","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"alex-setyawan"},"content":" public String orElse(String alt) {","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"alex-setyawan"},"content":" return allergies \u003d\u003d null ? alt : allergies;","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"laney0808"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"laney0808"},"content":" public String toString() {","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"laney0808"},"content":" return this.allergies;","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"laney0808"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"laney0808"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"jovantanyk"},"content":" return allergies.hashCode();","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"laney0808"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"laney0808"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"laney0808"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"laney0808"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"laney0808"},"content":" if (!(other instanceof Allergies)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"laney0808"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"laney0808"},"content":" Allergies otherAllergies \u003d (Allergies) other;","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"laney0808"},"content":" return allergies.equals(otherAllergies.allergies);","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"laney0808"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"alex-setyawan":10,"jovantanyk":2,"laney0808":39}},{"path":"src/main/java/seedu/address/model/person/BloodType.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"laney0808"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"jovantanyk"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"jovantanyk"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"jovantanyk"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"jovantanyk"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"laney0808"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"laney0808"},"content":" * Represents a Person\u0027s blood type in the address book.","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"laney0808"},"content":" * Guarantees: immutable;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"laney0808"},"content":"public class BloodType {","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"jovantanyk"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"BloodType should be either A+, A-, B+, B-, AB+, AB-, O+, O-\";","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"jovantanyk"},"content":" public static final String VALIDATION_REGEX \u003d \"^(A\\\\+|A-|B\\\\+|B-|AB\\\\+|AB-|O\\\\+|O-)$\";","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"jovantanyk"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"jovantanyk"},"content":" private final String bloodType;","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"laney0808"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"laney0808"},"content":" * Constructs a {@code BloodType}.","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"laney0808"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"jovantanyk"},"content":" * @param bloodType A valid blood type in String format","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"jovantanyk"},"content":" public BloodType(String bloodType) {","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"jovantanyk"},"content":" requireNonNull(bloodType);","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"jovantanyk"},"content":" checkArgument(isValidBloodType(bloodType), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"jovantanyk"},"content":" this.bloodType \u003d bloodType;","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"jovantanyk"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"jovantanyk"},"content":" * A method for testing if string forms a valid blood group","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"jovantanyk"},"content":" *","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"jovantanyk"},"content":" * @param test String for storing testing type","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"jovantanyk"},"content":" * @return Boolean whether test passes or fails","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"jovantanyk"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"jovantanyk"},"content":" public static boolean isValidBloodType(String test) {","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"jovantanyk"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"alex-setyawan"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"alex-setyawan"},"content":" * Returns given placeholder string if value field is not initialised","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"jovantanyk"},"content":" *","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"jovantanyk"},"content":" * @param alt An alternate return value","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"alex-setyawan"},"content":" * @return placeholder string","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"alex-setyawan"},"content":" public String orElse(String alt) {","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"jovantanyk"},"content":" return this.bloodType \u003d\u003d null ? alt : this.toString();","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"laney0808"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"laney0808"},"content":" public String toString() {","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"jovantanyk"},"content":" return this.bloodType;","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"laney0808"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"laney0808"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"jovantanyk"},"content":" return this.bloodType.hashCode();","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"laney0808"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"laney0808"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"laney0808"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"laney0808"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"laney0808"},"content":" if (!(other instanceof BloodType)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"laney0808"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"laney0808"},"content":" BloodType otherBloodType \u003d (BloodType) other;","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"jovantanyk"},"content":" return this.bloodType.equals(otherBloodType.bloodType);","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"laney0808"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"alex-setyawan":11,"jovantanyk":27,"laney0808":31}},{"path":"src/main/java/seedu/address/model/person/Condition.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"laney0808"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"laney0808"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"laney0808"},"content":" * Represents a Person\u0027s condition in the address book.","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"laney0808"},"content":" * Guarantees: immutable;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"laney0808"},"content":"public class Condition {","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"laney0808"},"content":" private final String condition;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"laney0808"},"content":" public Condition(String condition) {","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"laney0808"},"content":" this.condition \u003d condition;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"laney0808"},"content":" public String getCondition() {","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"laney0808"},"content":" return condition;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"alex-setyawan"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"alex-setyawan"},"content":" * Returns given placeholder string if value field is not initialised","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"alex-setyawan"},"content":" * @param alt","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"alex-setyawan"},"content":" * @return placeholder string","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"alex-setyawan"},"content":" public String orElse(String alt) {","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"alex-setyawan"},"content":" return condition \u003d\u003d null ? alt : condition;","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"laney0808"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"laney0808"},"content":" public String toString() {","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"laney0808"},"content":" return this.condition;","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"laney0808"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"laney0808"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"jovantanyk"},"content":" return condition.hashCode();","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"laney0808"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"laney0808"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"laney0808"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"laney0808"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"laney0808"},"content":" if (!(other instanceof Condition)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"laney0808"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"laney0808"},"content":" Condition otherCondition \u003d (Condition) other;","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"laney0808"},"content":" return condition.equals(otherCondition.condition);","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"laney0808"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"alex-setyawan":10,"jovantanyk":1,"laney0808":40}},{"path":"src/main/java/seedu/address/model/person/Country.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"laney0808"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"laney0808"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"laney0808"},"content":" * Represents a Person\u0027s condition in the address book.","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"laney0808"},"content":" * Guarantees: immutable;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"laney0808"},"content":"public class Country {","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"laney0808"},"content":" private final String country;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"jovantanyk"},"content":" //Todo: map input country to a standard country name","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"laney0808"},"content":" public Country(String country) {","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"laney0808"},"content":" this.country \u003d country;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"alex-setyawan"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"alex-setyawan"},"content":" * Returns given placeholder string if value field is not initialised","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"alex-setyawan"},"content":" * @param alt","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"alex-setyawan"},"content":" * @return placeholder string","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"alex-setyawan"},"content":" public String orElse(String alt) {","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"alex-setyawan"},"content":" return country \u003d\u003d null ? alt : country;","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"laney0808"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"laney0808"},"content":" public String toString() {","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"laney0808"},"content":" return this.country;","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"laney0808"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"laney0808"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"jovantanyk"},"content":" return country.hashCode();","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"laney0808"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"laney0808"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"laney0808"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"laney0808"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"laney0808"},"content":" if (!(other instanceof Country)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"laney0808"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"laney0808"},"content":" Country otherCountry \u003d (Country) other;","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"laney0808"},"content":" return country.equals(otherCountry.country);","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"laney0808"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"alex-setyawan":13,"jovantanyk":2,"laney0808":30}},{"path":"src/main/java/seedu/address/model/person/DateOfAdmission.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"laney0808"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"laney0808"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"laney0808"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"laney0808"},"content":" * Represents a Person\u0027s date of admission in the address book.","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"laney0808"},"content":" * Guarantees: immutable;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"laney0808"},"content":"public class DateOfAdmission {","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"laney0808"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"alex-setyawan"},"content":" \"Date of admission should be in the format of YYYY-MM-DD, and it should not be blank.\";","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"alex-setyawan"},"content":" public static final String VALIDATION_REGEX \u003d \"^\\\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$\";","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"jovantanyk"},"content":" private final LocalDate dateOfAdmission;","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"laney0808"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"laney0808"},"content":" * Constructs a {@code DateOfAdmission}.","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"laney0808"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"laney0808"},"content":" * @param dateOfAdmission A valid date of admission.","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"laney0808"},"content":" public DateOfAdmission(String dateOfAdmission) {","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"laney0808"},"content":" this.dateOfAdmission \u003d LocalDate.parse(dateOfAdmission);","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"laney0808"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"laney0808"},"content":" * Returns true if a given string is a valid date of admission.","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"laney0808"},"content":" public static boolean isValidDateOfAdmission(String test) {","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"laney0808"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"alex-setyawan"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"alex-setyawan"},"content":" * Returns given placeholder string if value field is not initialised","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"alex-setyawan"},"content":" * @param alt","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"alex-setyawan"},"content":" * @return placeholder string","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"alex-setyawan"},"content":" public String orElse(String alt) {","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"alex-setyawan"},"content":" return dateOfAdmission \u003d\u003d null ? alt : dateOfAdmission.toString();","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"laney0808"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"laney0808"},"content":" public String toString() {","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"laney0808"},"content":" return this.dateOfAdmission.toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"jovantanyk"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"laney0808"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"laney0808"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"jovantanyk"},"content":" return dateOfAdmission.hashCode();","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"jovantanyk"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"laney0808"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"laney0808"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"laney0808"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"laney0808"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"laney0808"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"laney0808"},"content":" if (!(other instanceof DateOfAdmission)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"laney0808"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"laney0808"},"content":" DateOfAdmission otherDateOfAdmission \u003d (DateOfAdmission) other;","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"laney0808"},"content":" return dateOfAdmission.equals(otherDateOfAdmission.dateOfAdmission);","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"laney0808"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"alex-setyawan":11,"jovantanyk":4,"laney0808":51}},{"path":"src/main/java/seedu/address/model/person/DateOfBirth.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"laney0808"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"laney0808"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"laney0808"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"laney0808"},"content":" * Represents a Person\u0027s date of admission in the address book.","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"laney0808"},"content":" * Guarantees: immutable;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"laney0808"},"content":"public class DateOfBirth {","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"laney0808"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"laney0808"},"content":" \"Date of birth should be in the format of YYYY-MM-DD, and it should not be blank.\";","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"jovantanyk"},"content":" public static final String VALIDATION_REGEX \u003d \"^\\\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])\";","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"jovantanyk"},"content":" private final LocalDate dateOfBirth;","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"laney0808"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"laney0808"},"content":" * Constructs a {@code DateOfBirth}.","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"laney0808"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"laney0808"},"content":" * @param dateOfBirth A valid date of birth.","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"laney0808"},"content":" public DateOfBirth(String dateOfBirth) {","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"laney0808"},"content":" if (!isValidDateOfBirth(dateOfBirth)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"laney0808"},"content":" throw new IllegalArgumentException(MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"laney0808"},"content":" this.dateOfBirth \u003d LocalDate.parse(dateOfBirth);","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"laney0808"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"laney0808"},"content":" * Returns true if a given string is a valid date of birth.","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"laney0808"},"content":" public static boolean isValidDateOfBirth(String test) {","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"laney0808"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"laney0808"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"laney0808"},"content":" public String toString() {","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"laney0808"},"content":" return this.dateOfBirth.toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"laney0808"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"laney0808"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"laney0808"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"laney0808"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"laney0808"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"laney0808"},"content":" if (!(other instanceof DateOfBirth)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"laney0808"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"laney0808"},"content":" DateOfBirth otherDateOfBirth \u003d (DateOfBirth) other;","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"laney0808"},"content":" return dateOfBirth.equals(otherDateOfBirth.dateOfBirth);","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"laney0808"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"laney0808"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"jovantanyk"},"content":" return dateOfBirth.hashCode();","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"laney0808"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"jovantanyk":3,"laney0808":57}},{"path":"src/main/java/seedu/address/model/person/Diagnosis.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"laney0808"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"laney0808"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"laney0808"},"content":" * Represents a Person\u0027s diagnosis in the address book.","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"laney0808"},"content":" * Guarantees: immutable;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"laney0808"},"content":"public class Diagnosis {","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"laney0808"},"content":" private final String diagnosis;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"laney0808"},"content":" public Diagnosis(String diagnosis) {","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"laney0808"},"content":" this.diagnosis \u003d diagnosis;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"laney0808"},"content":" public String getDiagnosis() {","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"laney0808"},"content":" return diagnosis;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"alex-setyawan"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"alex-setyawan"},"content":" * Returns given placeholder string if value field is not initialised","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"alex-setyawan"},"content":" * @param alt","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"alex-setyawan"},"content":" * @return placeholder string","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"alex-setyawan"},"content":" public String orElse(String alt) {","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"alex-setyawan"},"content":" return diagnosis \u003d\u003d null ? alt : diagnosis;","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"laney0808"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"laney0808"},"content":" public String toString() {","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"laney0808"},"content":" return this.diagnosis;","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"laney0808"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"laney0808"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"laney0808"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"laney0808"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"laney0808"},"content":" if (!(other instanceof Diagnosis)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"laney0808"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"laney0808"},"content":" Diagnosis otherDiagnosis \u003d (Diagnosis) other;","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"laney0808"},"content":" return diagnosis.equals(otherDiagnosis.diagnosis);","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"laney0808"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"laney0808"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"jovantanyk"},"content":" return diagnosis.hashCode();","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"laney0808"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"alex-setyawan":9,"jovantanyk":1,"laney0808":41}},{"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":"-"},"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":"jovantanyk"},"content":" private final String value;","lastModifiedDate":"2024-03-18"},{"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":"alex-setyawan"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"alex-setyawan"},"content":" * Returns given placeholder string if value field is not initialised","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"alex-setyawan"},"content":" * @param alt","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"alex-setyawan"},"content":" * @return placeholder string","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"alex-setyawan"},"content":" public String orElse(String alt) {","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"alex-setyawan"},"content":" return value \u003d\u003d null ? alt : value;","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return value;","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":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return true;","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":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" if (!(other instanceof Email)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" Email otherEmail \u003d (Email) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return value.equals(otherEmail.value);","lastModifiedDate":"2023-07-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"alex-setyawan":9,"jovantanyk":1,"-":78}},{"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":"-"},"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":"-"},"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":"-"},"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":"jovantanyk"},"content":" private final String fullName;","lastModifiedDate":"2024-03-18"},{"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":{"jovantanyk":1,"-":66}},{"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":"jovantanyk"},"content":" .anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(person.getName().toString(), keyword));","lastModifiedDate":"2024-03-18"},{"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":{"jovantanyk":1,"-":43}},{"path":"src/main/java/seedu/address/model/person/Nric.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"laney0808"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"laney0808"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"laney0808"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"laney0808"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"laney0808"},"content":" * Represents a Person\u0027s NRIC in the address book.","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"laney0808"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidNric(String)}","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"laney0808"},"content":"public class Nric {","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"laney0808"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"laney0808"},"content":" \"NRIC number should contain a prefix of S or T, followed by 7 digits, and end with a letter. \"","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"laney0808"},"content":" + \"There should not be blank.\";","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"laney0808"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"laney0808"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"laney0808"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"jovantanyk"},"content":" public static final String VALIDATION_REGEX \u003d \"^[ST]\\\\d{7}[A-Z]$\";","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"jovantanyk"},"content":" private final String nric;","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"laney0808"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"laney0808"},"content":" * Constructs a {@code NRIC}.","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"laney0808"},"content":" *","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"laney0808"},"content":" * @param nric A valid NRIC.","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"laney0808"},"content":" public Nric(String nric) {","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"laney0808"},"content":" requireNonNull(nric);","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"laney0808"},"content":" checkArgument(isValidNric(nric), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"laney0808"},"content":" this.nric \u003d nric;","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"laney0808"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"laney0808"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"laney0808"},"content":" public static boolean isValidNric(String test) {","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"laney0808"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"laney0808"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"laney0808"},"content":" public String toString() {","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"laney0808"},"content":" return this.nric;","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"laney0808"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"laney0808"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"laney0808"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"laney0808"},"content":" return true;","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"laney0808"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"laney0808"},"content":" if (!(other instanceof Nric)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"laney0808"},"content":" return false;","lastModifiedDate":"2024-03-14"},{"lineNumber":58,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"laney0808"},"content":" Nric otherNric \u003d (Nric) other;","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"laney0808"},"content":" return nric.equals(otherNric.nric);","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":63,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":64,"author":{"gitId":"laney0808"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":65,"author":{"gitId":"laney0808"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-14"},{"lineNumber":66,"author":{"gitId":"jovantanyk"},"content":" return nric.hashCode();","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"laney0808"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"jovantanyk":3,"laney0808":65}},{"path":"src/main/java/seedu/address/model/person/NricContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NatLeong"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"NatLeong"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"NatLeong"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"NatLeong"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"NatLeong"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"NatLeong"},"content":" * Tests that a {@code Person}\u0027s {@code Nric} matches any of the keywords given.","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"NatLeong"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"NatLeong"},"content":"public class NricContainsKeywordsPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"NatLeong"},"content":" private final String keywords;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"NatLeong"},"content":" public NricContainsKeywordsPredicate(String keywords) {","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"NatLeong"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"NatLeong"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"NatLeong"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"NatLeong"},"content":" return StringUtil.containsWordIgnoreCase(person.getNric().toString(), keywords);","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"NatLeong"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"NatLeong"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"NatLeong"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"NatLeong"},"content":" return true;","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"NatLeong"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"NatLeong"},"content":" if (!(other instanceof NricContainsKeywordsPredicate)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"NatLeong"},"content":" return false;","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"NatLeong"},"content":" NricContainsKeywordsPredicate otherNricContainsKeywordsPredicate \u003d (NricContainsKeywordsPredicate) other;","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"NatLeong"},"content":" return keywords.equals(otherNricContainsKeywordsPredicate.keywords);","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"NatLeong"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"NatLeong"},"content":" public String toString() {","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"NatLeong"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"NatLeong"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"NatLeong":42}},{"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":"laney0808"},"content":" //Mandatory fields","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"laney0808"},"content":" //Identity fields","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"laney0808"},"content":" private final Nric nric;","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"laney0808"},"content":" private Name name;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"alex-setyawan"},"content":" private Phone phone;","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"laney0808"},"content":" private Address address;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"laney0808"},"content":" private final DateOfBirth dateOfBirth;","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"alex-setyawan"},"content":" private Sex sex;","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"laney0808"},"content":" private Status status;","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"laney0808"},"content":" // Optional fields","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"laney0808"},"content":" private Email email \u003d null;","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"laney0808"},"content":" private Country country \u003d null;","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"laney0808"},"content":" //Medical information","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"jovantanyk"},"content":" private Allergies allergies \u003d null;","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"jovantanyk"},"content":" private BloodType bloodType \u003d null;","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"jovantanyk"},"content":" private Condition condition \u003d null;","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"jovantanyk"},"content":" private DateOfAdmission dateOfAdmission \u003d null;","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"jovantanyk"},"content":" private Diagnosis diagnosis \u003d null;","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"jovantanyk"},"content":" private Symptom symptom \u003d null;","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"laney0808"},"content":" * Every mandatory field must be present and not null.","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"jovantanyk"},"content":" public Person(Nric nric, Name name, Phone phone, Address address, DateOfBirth dateOfBirth, Sex sex, Status status) {","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"laney0808"},"content":" //Only the fields that are mandatory are included down here","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"laney0808"},"content":" requireAllNonNull(nric, name, phone, address, dateOfBirth, sex);","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"laney0808"},"content":" this.nric \u003d nric;","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20"},{"lineNumber":49,"author":{"gitId":"laney0808"},"content":" this.dateOfBirth \u003d dateOfBirth;","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"jovantanyk"},"content":" this.sex \u003d sex;","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"jovantanyk"},"content":" this.status \u003d status;","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"laney0808"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"laney0808"},"content":" * Constructor for Person with only Nric.","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"laney0808"},"content":" private Person(Nric nric) {","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"laney0808"},"content":" this.nric \u003d nric;","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"laney0808"},"content":" this.name \u003d null;","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"laney0808"},"content":" this.phone \u003d null;","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"laney0808"},"content":" this.address \u003d null;","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"laney0808"},"content":" this.dateOfBirth \u003d null;","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"laney0808"},"content":" this.sex \u003d null;","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"laney0808"},"content":" this.status \u003d null;","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"laney0808"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"laney0808"},"content":" * Constructor for Person with only Nric.","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"laney0808"},"content":" public static Person createPersonWithNric(Nric nric) {","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"laney0808"},"content":" return new Person(nric);","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"laney0808"},"content":" public Nric getNric() {","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"laney0808"},"content":" return nric;","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":87,"author":{"gitId":"alex-setyawan"},"content":" public Sex getSex() {","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"alex-setyawan"},"content":" return this.sex;","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":95,"author":{"gitId":"alex-setyawan"},"content":" public Allergies getAllergies() {","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"alex-setyawan"},"content":" return allergies;","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"alex-setyawan"},"content":" public BloodType getBloodType() {","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"alex-setyawan"},"content":" return bloodType;","lastModifiedDate":"2024-03-18"},{"lineNumber":101,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":102,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":103,"author":{"gitId":"alex-setyawan"},"content":" public Country getCountry() {","lastModifiedDate":"2024-03-18"},{"lineNumber":104,"author":{"gitId":"alex-setyawan"},"content":" return country;","lastModifiedDate":"2024-03-18"},{"lineNumber":105,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":106,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":107,"author":{"gitId":"laney0808"},"content":" public DateOfBirth getDateOfBirth() {","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"laney0808"},"content":" return dateOfBirth;","lastModifiedDate":"2024-03-17"},{"lineNumber":109,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"jovantanyk"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"alex-setyawan"},"content":" public Condition getCondition() {","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"alex-setyawan"},"content":" return condition;","lastModifiedDate":"2024-03-18"},{"lineNumber":113,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":115,"author":{"gitId":"alex-setyawan"},"content":" public DateOfAdmission getDateOfAdmission() {","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"alex-setyawan"},"content":" return dateOfAdmission;","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":118,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":119,"author":{"gitId":"alex-setyawan"},"content":" public Diagnosis getDiagnosis() {","lastModifiedDate":"2024-03-18"},{"lineNumber":120,"author":{"gitId":"alex-setyawan"},"content":" return diagnosis;","lastModifiedDate":"2024-03-18"},{"lineNumber":121,"author":{"gitId":"jovantanyk"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"jovantanyk"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"jovantanyk"},"content":" public Status getStatus() {","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"jovantanyk"},"content":" return this.status;","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"alex-setyawan"},"content":" public Symptom getSymptom() {","lastModifiedDate":"2024-03-18"},{"lineNumber":128,"author":{"gitId":"alex-setyawan"},"content":" return symptom;","lastModifiedDate":"2024-03-18"},{"lineNumber":129,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":130,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07"},{"lineNumber":132,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07"},{"lineNumber":134,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07"},{"lineNumber":135,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":136,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":138,"author":{"gitId":"laney0808"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":139,"author":{"gitId":"laney0808"},"content":" * Sets the name of the person to input value.","lastModifiedDate":"2024-03-19"},{"lineNumber":140,"author":{"gitId":"laney0808"},"content":" * @param name the new name.","lastModifiedDate":"2024-03-19"},{"lineNumber":141,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":142,"author":{"gitId":"laney0808"},"content":" public void setName(Name name) {","lastModifiedDate":"2024-03-19"},{"lineNumber":143,"author":{"gitId":"laney0808"},"content":" this.name \u003d name;","lastModifiedDate":"2024-03-19"},{"lineNumber":144,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":146,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":147,"author":{"gitId":"laney0808"},"content":" * Sets the phone of the person to input value.","lastModifiedDate":"2024-03-19"},{"lineNumber":148,"author":{"gitId":"laney0808"},"content":" * @param phone the new phone.","lastModifiedDate":"2024-03-19"},{"lineNumber":149,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":150,"author":{"gitId":"laney0808"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2024-03-19"},{"lineNumber":151,"author":{"gitId":"laney0808"},"content":" this.phone \u003d phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":152,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":153,"author":{"gitId":"laney0808"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":154,"author":{"gitId":"laney0808"},"content":" * Sets the address of the person to input value.","lastModifiedDate":"2024-03-19"},{"lineNumber":155,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":156,"author":{"gitId":"laney0808"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2024-03-19"},{"lineNumber":157,"author":{"gitId":"laney0808"},"content":" this.address \u003d address;","lastModifiedDate":"2024-03-19"},{"lineNumber":158,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":159,"author":{"gitId":"laney0808"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":160,"author":{"gitId":"laney0808"},"content":" * Sets the sex of the person to input value.","lastModifiedDate":"2024-03-19"},{"lineNumber":161,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":162,"author":{"gitId":"laney0808"},"content":" public void setSex(Sex sex) {","lastModifiedDate":"2024-03-19"},{"lineNumber":163,"author":{"gitId":"laney0808"},"content":" this.sex \u003d sex;","lastModifiedDate":"2024-03-19"},{"lineNumber":164,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":165,"author":{"gitId":"laney0808"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":166,"author":{"gitId":"laney0808"},"content":" * Sets the status of the person to input value.","lastModifiedDate":"2024-03-19"},{"lineNumber":167,"author":{"gitId":"laney0808"},"content":" * @param status the new status.","lastModifiedDate":"2024-03-19"},{"lineNumber":168,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":169,"author":{"gitId":"laney0808"},"content":" public void setStatus(Status status) {","lastModifiedDate":"2024-03-19"},{"lineNumber":170,"author":{"gitId":"laney0808"},"content":" this.status \u003d status;","lastModifiedDate":"2024-03-19"},{"lineNumber":171,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":172,"author":{"gitId":"laney0808"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":173,"author":{"gitId":"laney0808"},"content":" * Sets the email of the person to input value.","lastModifiedDate":"2024-03-19"},{"lineNumber":174,"author":{"gitId":"laney0808"},"content":" * @param email the new email.","lastModifiedDate":"2024-03-19"},{"lineNumber":175,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":176,"author":{"gitId":"laney0808"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2024-03-19"},{"lineNumber":177,"author":{"gitId":"laney0808"},"content":" this.email \u003d email;","lastModifiedDate":"2024-03-19"},{"lineNumber":178,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":179,"author":{"gitId":"laney0808"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":180,"author":{"gitId":"laney0808"},"content":" * Sets the allergies of the person to input value.","lastModifiedDate":"2024-03-19"},{"lineNumber":181,"author":{"gitId":"laney0808"},"content":" * @param allergies the new allergies.","lastModifiedDate":"2024-03-19"},{"lineNumber":182,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":183,"author":{"gitId":"laney0808"},"content":" public void setAllergies(Allergies allergies) {","lastModifiedDate":"2024-03-19"},{"lineNumber":184,"author":{"gitId":"laney0808"},"content":" this.allergies \u003d allergies;","lastModifiedDate":"2024-03-19"},{"lineNumber":185,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":186,"author":{"gitId":"laney0808"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":187,"author":{"gitId":"laney0808"},"content":" * Sets the blood type of the person to input value.","lastModifiedDate":"2024-03-19"},{"lineNumber":188,"author":{"gitId":"laney0808"},"content":" * @param bloodType the new blood type.","lastModifiedDate":"2024-03-19"},{"lineNumber":189,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":190,"author":{"gitId":"laney0808"},"content":" public void setBloodType(BloodType bloodType) {","lastModifiedDate":"2024-03-19"},{"lineNumber":191,"author":{"gitId":"laney0808"},"content":" this.bloodType \u003d bloodType;","lastModifiedDate":"2024-03-19"},{"lineNumber":192,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":193,"author":{"gitId":"laney0808"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":194,"author":{"gitId":"laney0808"},"content":" * Sets the country of the person to input value.","lastModifiedDate":"2024-03-19"},{"lineNumber":195,"author":{"gitId":"laney0808"},"content":" * @param country the new country.","lastModifiedDate":"2024-03-19"},{"lineNumber":196,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":197,"author":{"gitId":"laney0808"},"content":" public void setCountry(Country country) {","lastModifiedDate":"2024-03-19"},{"lineNumber":198,"author":{"gitId":"laney0808"},"content":" this.country \u003d country;","lastModifiedDate":"2024-03-19"},{"lineNumber":199,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":200,"author":{"gitId":"laney0808"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":201,"author":{"gitId":"laney0808"},"content":" * Sets the condition of the person to input value.","lastModifiedDate":"2024-03-19"},{"lineNumber":202,"author":{"gitId":"laney0808"},"content":" * @param condition the new condition.","lastModifiedDate":"2024-03-19"},{"lineNumber":203,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":204,"author":{"gitId":"laney0808"},"content":" public void setCondition(Condition condition) {","lastModifiedDate":"2024-03-19"},{"lineNumber":205,"author":{"gitId":"laney0808"},"content":" this.condition \u003d condition;","lastModifiedDate":"2024-03-19"},{"lineNumber":206,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":207,"author":{"gitId":"laney0808"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":208,"author":{"gitId":"laney0808"},"content":" * Sets the date of admission of the person to input value.","lastModifiedDate":"2024-03-19"},{"lineNumber":209,"author":{"gitId":"laney0808"},"content":" * @param dateOfAdmission the new date of admission.","lastModifiedDate":"2024-03-19"},{"lineNumber":210,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":211,"author":{"gitId":"laney0808"},"content":" public void setDateOfAdmission(DateOfAdmission dateOfAdmission) {","lastModifiedDate":"2024-03-19"},{"lineNumber":212,"author":{"gitId":"laney0808"},"content":" this.dateOfAdmission \u003d dateOfAdmission;","lastModifiedDate":"2024-03-19"},{"lineNumber":213,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":214,"author":{"gitId":"laney0808"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":215,"author":{"gitId":"laney0808"},"content":" * Sets the diagnosis of the person to input value.","lastModifiedDate":"2024-03-19"},{"lineNumber":216,"author":{"gitId":"laney0808"},"content":" * @param diagnosis the new diagnosis.","lastModifiedDate":"2024-03-19"},{"lineNumber":217,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":218,"author":{"gitId":"laney0808"},"content":" public void setDiagnosis(Diagnosis diagnosis) {","lastModifiedDate":"2024-03-19"},{"lineNumber":219,"author":{"gitId":"laney0808"},"content":" this.diagnosis \u003d diagnosis;","lastModifiedDate":"2024-03-19"},{"lineNumber":220,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":221,"author":{"gitId":"laney0808"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":222,"author":{"gitId":"laney0808"},"content":" * Sets the symptom of the person to input value.","lastModifiedDate":"2024-03-19"},{"lineNumber":223,"author":{"gitId":"laney0808"},"content":" * @param symptom the new symptom.","lastModifiedDate":"2024-03-19"},{"lineNumber":224,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":225,"author":{"gitId":"laney0808"},"content":" public void setSymptom(Symptom symptom) {","lastModifiedDate":"2024-03-19"},{"lineNumber":226,"author":{"gitId":"laney0808"},"content":" this.symptom \u003d symptom;","lastModifiedDate":"2024-03-19"},{"lineNumber":227,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":229,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":230,"author":{"gitId":"laney0808"},"content":" * Returns true if both persons have the same nric.","lastModifiedDate":"2024-03-17"},{"lineNumber":231,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":232,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":233,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19"},{"lineNumber":234,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19"},{"lineNumber":235,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":236,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":238,"author":{"gitId":"jovantanyk"},"content":" return otherPerson !\u003d null \u0026\u0026 otherPerson.getNric().equals(getNric());","lastModifiedDate":"2024-03-17"},{"lineNumber":239,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":241,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":242,"author":{"gitId":"laney0808"},"content":" * Returns true if both persons have the same identity and all data fields.","lastModifiedDate":"2024-03-21"},{"lineNumber":243,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":244,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":245,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":246,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":247,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":248,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10"},{"lineNumber":249,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":251,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":252,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10"},{"lineNumber":253,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":254,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":255,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10"},{"lineNumber":256,"author":{"gitId":"alex-setyawan"},"content":" return nric.equals(otherPerson.nric)","lastModifiedDate":"2024-03-18"},{"lineNumber":257,"author":{"gitId":"alex-setyawan"},"content":" \u0026\u0026 name.equals(otherPerson.name)","lastModifiedDate":"2024-03-18"},{"lineNumber":258,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2024-03-18"},{"lineNumber":259,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2024-03-18"},{"lineNumber":260,"author":{"gitId":"alex-setyawan"},"content":" \u0026\u0026 dateOfBirth.equals(otherPerson.dateOfBirth)","lastModifiedDate":"2024-03-18"},{"lineNumber":261,"author":{"gitId":"laney0808"},"content":" \u0026\u0026 sex.equals(otherPerson.sex)","lastModifiedDate":"2024-03-20"},{"lineNumber":262,"author":{"gitId":"jovantanyk"},"content":" \u0026\u0026 status.equals(otherPerson.status);","lastModifiedDate":"2024-03-22"},{"lineNumber":263,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":265,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":266,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":267,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":268,"author":{"gitId":"jovantanyk"},"content":" return Objects.hash(nric, name, phone, address, dateOfBirth, sex, status);","lastModifiedDate":"2024-03-22"},{"lineNumber":269,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":271,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":272,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":273,"author":{"gitId":"alex-setyawan"},"content":" // list view","lastModifiedDate":"2024-03-18"},{"lineNumber":274,"author":{"gitId":"laney0808"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-21"},{"lineNumber":275,"author":{"gitId":"laney0808"},"content":" .add(\"nric\", nric)","lastModifiedDate":"2024-03-21"},{"lineNumber":276,"author":{"gitId":"laney0808"},"content":" .add(\"name\", name)","lastModifiedDate":"2024-03-21"},{"lineNumber":277,"author":{"gitId":"laney0808"},"content":" .add(\"status\", status).toString();","lastModifiedDate":"2024-03-21"},{"lineNumber":278,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":279,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":280,"author":{"gitId":"jovantanyk"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":281,"author":{"gitId":"jovantanyk"},"content":" * @return Detailed String of Person","lastModifiedDate":"2024-03-18"},{"lineNumber":282,"author":{"gitId":"jovantanyk"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":283,"author":{"gitId":"alex-setyawan"},"content":" public String toDetailedString() {","lastModifiedDate":"2024-03-18"},{"lineNumber":284,"author":{"gitId":"alex-setyawan"},"content":" // detailed view","lastModifiedDate":"2024-03-18"},{"lineNumber":285,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-18"},{"lineNumber":286,"author":{"gitId":"alex-setyawan"},"content":" .add(\"nric\", nric)","lastModifiedDate":"2024-03-18"},{"lineNumber":287,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2024-03-18"},{"lineNumber":288,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2024-03-18"},{"lineNumber":289,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2024-03-18"},{"lineNumber":290,"author":{"gitId":"laney0808"},"content":" .add(\"birthday\", dateOfBirth)","lastModifiedDate":"2024-03-21"},{"lineNumber":291,"author":{"gitId":"laney0808"},"content":" .add(\"sex\", sex)","lastModifiedDate":"2024-03-21"},{"lineNumber":292,"author":{"gitId":"laney0808"},"content":" .add(\"status\", status)","lastModifiedDate":"2024-03-21"},{"lineNumber":293,"author":{"gitId":"laney0808"},"content":" .add(\"email\", email)","lastModifiedDate":"2024-03-21"},{"lineNumber":294,"author":{"gitId":"laney0808"},"content":" .add(\"admission\", dateOfAdmission)","lastModifiedDate":"2024-03-21"},{"lineNumber":295,"author":{"gitId":"alex-setyawan"},"content":" .add(\"allergies\", allergies)","lastModifiedDate":"2024-03-18"},{"lineNumber":296,"author":{"gitId":"alex-setyawan"},"content":" .add(\"blood type\", bloodType)","lastModifiedDate":"2024-03-18"},{"lineNumber":297,"author":{"gitId":"alex-setyawan"},"content":" .add(\"country\", country)","lastModifiedDate":"2024-03-18"},{"lineNumber":298,"author":{"gitId":"laney0808"},"content":" .add(\"condition\", condition)","lastModifiedDate":"2024-03-21"},{"lineNumber":299,"author":{"gitId":"alex-setyawan"},"content":" .add(\"diagnosis\", diagnosis)","lastModifiedDate":"2024-03-18"},{"lineNumber":300,"author":{"gitId":"alex-setyawan"},"content":" .add(\"symptom\", symptom)","lastModifiedDate":"2024-03-18"},{"lineNumber":301,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2024-03-21"},{"lineNumber":302,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2024-03-18"},{"lineNumber":303,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":304,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"alex-setyawan":44,"jovantanyk":20,"laney0808":145,"-":95}},{"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":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"jovantanyk"},"content":" \"Phone numbers should only contain numbers, and it should be at least 8 digits long\";","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"laney0808"},"content":" //TODO: change REGEX to give correct results","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"laney0808"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\d{8}\";","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"jovantanyk"},"content":" private final String value;","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"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":{"jovantanyk":2,"laney0808":2,"-":58}},{"path":"src/main/java/seedu/address/model/person/Sex.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"laney0808"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"laney0808"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"laney0808"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"laney0808"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"laney0808"},"content":" * Represents a Person\u0027s status in the address book.","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"laney0808"},"content":" * Guarantees: immutable;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"laney0808"},"content":"public class Sex {","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"jovantanyk"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Sex should be either F or M.\";","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"alex-setyawan"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"alex-setyawan"},"content":" * Represents sex of a person.","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"jovantanyk"},"content":" private enum SexType { F, M }","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"laney0808"},"content":" private final SexType sex;","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"laney0808"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"laney0808"},"content":" * Constructs a Sex instance.","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"jovantanyk"},"content":" public Sex(String sex) {","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"jovantanyk"},"content":" requireNonNull(sex);","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"jovantanyk"},"content":" checkArgument(isValidSex(sex), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"jovantanyk"},"content":" this.sex \u003d SexType.valueOf(sex);","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"jovantanyk"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"jovantanyk"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"jovantanyk"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"jovantanyk"},"content":" * Checks if a String matches the Enum","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"jovantanyk"},"content":" * @param testString String of input","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"jovantanyk"},"content":" * @return Boolean","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"jovantanyk"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"jovantanyk"},"content":" public static boolean isValidSex(String testString) {","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"jovantanyk"},"content":" try {","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"jovantanyk"},"content":" SexType sexType \u003d SexType.valueOf(testString);","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"jovantanyk"},"content":" return true;","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"jovantanyk"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"jovantanyk"},"content":" return false;","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"jovantanyk"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"laney0808"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"laney0808"},"content":" public String toString() {","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"laney0808"},"content":" return this.sex.toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"laney0808"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"laney0808"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"laney0808"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"laney0808"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"laney0808"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"laney0808"},"content":" if (!(other instanceof Sex)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"laney0808"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"laney0808"},"content":" Sex otherSex \u003d (Sex) other;","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"laney0808"},"content":" return sex.equals(otherSex.sex);","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"laney0808"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"laney0808"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"jovantanyk"},"content":" return sex.hashCode();","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"laney0808"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"alex-setyawan":5,"jovantanyk":21,"laney0808":41}},{"path":"src/main/java/seedu/address/model/person/Status.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"laney0808"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"jovantanyk"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"jovantanyk"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"jovantanyk"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"laney0808"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"laney0808"},"content":" * Represents a Person\u0027s status in the address book.","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"laney0808"},"content":" * Guarantees: immutable;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"laney0808"},"content":"public class Status {","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"jovantanyk"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"jovantanyk"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"jovantanyk"},"content":" \"Status should only be one of the following: HEALTHY, UNWELL, PENDING.\";","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"alex-setyawan"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"alex-setyawan"},"content":" * Represents status of a person.","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"alex-setyawan"},"content":" public enum StatusType { HEALTHY, UNWELL, PENDING }","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"laney0808"},"content":" private final StatusType status;","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"laney0808"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"laney0808"},"content":" * Constructs a Status instance.","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"laney0808"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"jovantanyk"},"content":" * @param status Status of a person","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"jovantanyk"},"content":" public Status(String status) {","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"jovantanyk"},"content":" requireNonNull(status);","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"jovantanyk"},"content":" checkArgument(isValidStatus(status), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"jovantanyk"},"content":" this.status \u003d StatusType.valueOf(status);","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"NatLeong"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"NatLeong"},"content":" * Gets status type","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"NatLeong"},"content":" *","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"NatLeong"},"content":" * @return Status type of this status","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"NatLeong"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"NatLeong"},"content":" public StatusType getStatusType() {","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"NatLeong"},"content":" return this.status;","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"jovantanyk"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"jovantanyk"},"content":" * Checks if a String matches the Enum","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"jovantanyk"},"content":" * @param testString String of input","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"jovantanyk"},"content":" * @return Boolean","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"jovantanyk"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"jovantanyk"},"content":" public static boolean isValidStatus(String testString) {","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"jovantanyk"},"content":" try {","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"jovantanyk"},"content":" StatusType statusType \u003d StatusType.valueOf(testString);","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"jovantanyk"},"content":" return true;","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"jovantanyk"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"jovantanyk"},"content":" return false;","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"jovantanyk"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"jovantanyk"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"laney0808"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"laney0808"},"content":" public String toString() {","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"jovantanyk"},"content":" // TODO Implement Custom toString format","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"laney0808"},"content":" return this.status.toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"laney0808"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"laney0808"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"laney0808"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"laney0808"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"laney0808"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"laney0808"},"content":" if (!(other instanceof Status)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"laney0808"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"laney0808"},"content":" Status otherSex \u003d (Status) other;","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"laney0808"},"content":" return status.equals(otherSex.status);","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"laney0808"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"laney0808"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"jovantanyk"},"content":" return status.hashCode();","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"laney0808"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"alex-setyawan":5,"jovantanyk":26,"laney0808":39,"NatLeong":9}},{"path":"src/main/java/seedu/address/model/person/Symptom.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"laney0808"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"laney0808"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"laney0808"},"content":" * Represents a Person\u0027s symptom in the address book.","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"laney0808"},"content":" * Guarantees: immutable;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"laney0808"},"content":"public class Symptom {","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"laney0808"},"content":" private final String symptom;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"laney0808"},"content":" public Symptom(String symptom) {","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"laney0808"},"content":" this.symptom \u003d symptom;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"laney0808"},"content":" public String getSymptom() {","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"laney0808"},"content":" return symptom;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"alex-setyawan"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"alex-setyawan"},"content":" * Returns given placeholder string if value field is not initialised","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"alex-setyawan"},"content":" * @param alt","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"alex-setyawan"},"content":" * @return placeholder string","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"alex-setyawan"},"content":" public String orElse(String alt) {","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"alex-setyawan"},"content":" return symptom \u003d\u003d null ? alt : symptom;","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"laney0808"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"laney0808"},"content":" public String toString() {","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"laney0808"},"content":" return this.symptom;","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"alex-setyawan"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"alex-setyawan"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"alex-setyawan"},"content":" return symptom.hashCode();","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"laney0808"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"laney0808"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"laney0808"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"laney0808"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"laney0808"},"content":" if (!(other instanceof Symptom)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"laney0808"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"laney0808"},"content":" Symptom otherSymptom \u003d (Symptom) other;","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"laney0808"},"content":" return symptom.equals(otherSymptom.symptom);","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"laney0808"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"alex-setyawan":14,"laney0808":36}},{"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":"laney0808"},"content":"","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"laney0808"},"content":" * Returns true if the list contains a person with the given NRIC.","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"laney0808"},"content":" public boolean containsNric(Nric nric) {","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"laney0808"},"content":" requireNonNull(nric);","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"laney0808"},"content":" return internalList.stream().anyMatch(person -\u003e person.getNric().equals(nric));","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Adds a person to the list.","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * The person must not already exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void add(Person toAdd) {","lastModifiedDate":"2018-08-07"},{"lineNumber":53,"author":{"gitId":"-"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2017-05-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" internalList.add(toAdd);","lastModifiedDate":"2018-01-10"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Replaces the person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2017-06-07"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":63,"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":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-07"},{"lineNumber":66,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2018-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2017-06-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2017-06-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":" throw new PersonNotFoundException();","lastModifiedDate":"2017-06-07"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-07"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-07"},{"lineNumber":73,"author":{"gitId":"-"},"content":" if (!target.isSamePerson(editedPerson) \u0026\u0026 contains(editedPerson)) {","lastModifiedDate":"2018-04-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2016-12-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" internalList.set(index, editedPerson);","lastModifiedDate":"2018-01-10"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * Removes the equivalent person from the list.","lastModifiedDate":"2016-08-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * The person must exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void remove(Person toRemove) {","lastModifiedDate":"2018-08-07"},{"lineNumber":85,"author":{"gitId":"-"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2017-05-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2018-02-28"},{"lineNumber":87,"author":{"gitId":"-"},"content":" throw new PersonNotFoundException();","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":"","lastModifiedDate":"2016-08-24"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void setPersons(UniquePersonList replacement) {","lastModifiedDate":"2016-10-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" requireNonNull(replacement);","lastModifiedDate":"2018-08-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2018-08-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * Replaces the contents of this list with {@code persons}.","lastModifiedDate":"2018-08-07"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2018-08-07"},{"lineNumber":99,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void setPersons(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-08-07"},{"lineNumber":101,"author":{"gitId":"-"},"content":" requireAllNonNull(persons);","lastModifiedDate":"2018-01-10"},{"lineNumber":102,"author":{"gitId":"-"},"content":" if (!personsAreUnique(persons)) {","lastModifiedDate":"2018-04-19"},{"lineNumber":103,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2018-01-21"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-21"},{"lineNumber":106,"author":{"gitId":"-"},"content":" internalList.setAll(persons);","lastModifiedDate":"2018-08-14"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":109,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-09-01"},{"lineNumber":110,"author":{"gitId":"-"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2017-09-01"},{"lineNumber":111,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-09-01"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2018-04-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2018-12-09"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public Iterator\u003cPerson\u003e iterator() {","lastModifiedDate":"2016-08-24"},{"lineNumber":118,"author":{"gitId":"-"},"content":" return internalList.iterator();","lastModifiedDate":"2016-08-24"},{"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-09-21"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"lineNumber":123,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":128,"author":{"gitId":"-"},"content":" if (!(other instanceof UniquePersonList)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":129,"author":{"gitId":"-"},"content":" return false;","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":" UniquePersonList otherUniquePersonList \u003d (UniquePersonList) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":" return internalList.equals(otherUniquePersonList.internalList);","lastModifiedDate":"2023-07-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":137,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":138,"author":{"gitId":"-"},"content":" return internalList.hashCode();","lastModifiedDate":"2016-09-21"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-24"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-24"},{"lineNumber":143,"author":{"gitId":"-"},"content":" return internalList.toString();","lastModifiedDate":"2019-02-24"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24"},{"lineNumber":146,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":147,"author":{"gitId":"-"},"content":" * Returns true if {@code persons} contains only unique persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":148,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":149,"author":{"gitId":"-"},"content":" private boolean personsAreUnique(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-04-19"},{"lineNumber":150,"author":{"gitId":"-"},"content":" for (int i \u003d 0; i \u003c persons.size() - 1; i++) {","lastModifiedDate":"2018-04-19"},{"lineNumber":151,"author":{"gitId":"-"},"content":" for (int j \u003d i + 1; j \u003c persons.size(); j++) {","lastModifiedDate":"2018-04-19"},{"lineNumber":152,"author":{"gitId":"-"},"content":" if (persons.get(i).isSamePerson(persons.get(j))) {","lastModifiedDate":"2018-04-19"},{"lineNumber":153,"author":{"gitId":"-"},"content":" return false;","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":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":157,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":159,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"laney0808":9,"-":150}},{"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":"laney0808"},"content":"import seedu.address.model.ImmuniMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"laney0808"},"content":"import seedu.address.model.ReadOnlyImmuniMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-20"},{"lineNumber":6,"author":{"gitId":"laney0808"},"content":"import seedu.address.model.person.DateOfBirth;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20"},{"lineNumber":8,"author":{"gitId":"laney0808"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-20"},{"lineNumber":11,"author":{"gitId":"jovantanyk"},"content":"import seedu.address.model.person.Sex;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"jovantanyk"},"content":"import seedu.address.model.person.Status;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20"},{"lineNumber":20,"author":{"gitId":"jovantanyk"},"content":" new Person(new Nric(\"T0234567C\"), new Name(\"Alex Yeoh\"), new Phone(\"87438807\"),","lastModifiedDate":"2024-03-24"},{"lineNumber":21,"author":{"gitId":"jovantanyk"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"), new DateOfBirth(\"1977-04-03\"),","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"jovantanyk"},"content":" new Sex(\"M\"), new Status(\"HEALTHY\")),","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"jovantanyk"},"content":" new Person(new Nric(\"S9234568N\"), new Name(\"Bernice Yu\"), new Phone(\"99272758\"),","lastModifiedDate":"2024-03-24"},{"lineNumber":24,"author":{"gitId":"jovantanyk"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"), new DateOfBirth(\"1977-04-03\"),","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"jovantanyk"},"content":" new Sex(\"F\"), new Status(\"UNWELL\")),","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"jovantanyk"},"content":" new Person(new Nric(\"S8934569Z\"), new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"),","lastModifiedDate":"2024-03-24"},{"lineNumber":27,"author":{"gitId":"jovantanyk"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"), new DateOfBirth(\"2001-04-03\"),","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"jovantanyk"},"content":" new Sex(\"F\"), new Status(\"HEALTHY\")),","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"jovantanyk"},"content":" new Person(new Nric(\"T0134560A\"), new Name(\"David Li\"), new Phone(\"91031282\"),","lastModifiedDate":"2024-03-24"},{"lineNumber":30,"author":{"gitId":"jovantanyk"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"), new DateOfBirth(\"1987-11-03\"),","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"jovantanyk"},"content":" new Sex(\"M\"), new Status(\"PENDING\")),","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"jovantanyk"},"content":" new Person(new Nric(\"T0534161B\"), new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"),","lastModifiedDate":"2024-03-24"},{"lineNumber":33,"author":{"gitId":"jovantanyk"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"), new DateOfBirth(\"1970-12-03\"),","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"jovantanyk"},"content":" new Sex(\"M\"), new Status(\"UNWELL\")),","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"jovantanyk"},"content":" new Person(new Nric(\"S9781662B\"), new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"),","lastModifiedDate":"2024-03-24"},{"lineNumber":36,"author":{"gitId":"jovantanyk"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"), new DateOfBirth(\"1987-04-03\"),","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"jovantanyk"},"content":" new Sex(\"M\"), new Status(\"PENDING\"))","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":41,"author":{"gitId":"laney0808"},"content":" public static ReadOnlyImmuniMate getSampleAddressBook() {","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"laney0808"},"content":" ImmuniMate sampleAb \u003d new ImmuniMate();","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"jovantanyk":20,"laney0808":6,"-":23}},{"path":"src/main/java/seedu/address/storage/AddressBookStorage.java","fileType":"functional-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 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":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":8,"author":{"gitId":"laney0808"},"content":"import seedu.address.model.ImmuniMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"laney0808"},"content":"import seedu.address.model.ReadOnlyImmuniMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-24"},{"lineNumber":12,"author":{"gitId":"laney0808"},"content":" * Represents a storage for {@link ImmuniMate}.","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public interface AddressBookStorage {","lastModifiedDate":"2016-09-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Returns the file path of the data file.","lastModifiedDate":"2016-09-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-04-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-24"},{"lineNumber":22,"author":{"gitId":"laney0808"},"content":" * Returns AddressBook data as a {@link ReadOnlyImmuniMate}.","lastModifiedDate":"2024-03-20"},{"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 loading the data from storage failed.","lastModifiedDate":"2023-06-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":27,"author":{"gitId":"laney0808"},"content":" Optional\u003cReadOnlyImmuniMate\u003e readAddressBook() throws DataLoadingException;","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-01"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @see #getAddressBookFilePath()","lastModifiedDate":"2016-10-01"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-01"},{"lineNumber":32,"author":{"gitId":"laney0808"},"content":" Optional\u003cReadOnlyImmuniMate\u003e readAddressBook(Path filePath) throws DataLoadingException;","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-24"},{"lineNumber":35,"author":{"gitId":"laney0808"},"content":" * Saves the given {@link ReadOnlyImmuniMate} to the storage.","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * @param addressBook cannot be null.","lastModifiedDate":"2016-09-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @throws IOException if there was any problem writing to the file.","lastModifiedDate":"2016-09-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":39,"author":{"gitId":"laney0808"},"content":" void saveAddressBook(ReadOnlyImmuniMate addressBook) throws IOException;","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-01"},{"lineNumber":42,"author":{"gitId":"laney0808"},"content":" * @see #saveAddressBook(ReadOnlyImmuniMate)","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-01"},{"lineNumber":44,"author":{"gitId":"laney0808"},"content":" void saveAddressBook(ReadOnlyImmuniMate addressBook, Path filePath) throws IOException;","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-24"}],"authorContributionMap":{"laney0808":10,"-":36}},{"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":"NatLeong"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"NatLeong"},"content":"import seedu.address.model.person.Allergies;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"NatLeong"},"content":"import seedu.address.model.person.BloodType;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"NatLeong"},"content":"import seedu.address.model.person.Condition;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"NatLeong"},"content":"import seedu.address.model.person.Country;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"NatLeong"},"content":"import seedu.address.model.person.DateOfAdmission;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"laney0808"},"content":"import seedu.address.model.person.DateOfBirth;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"NatLeong"},"content":"import seedu.address.model.person.Diagnosis;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"laney0808"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-03-17"},{"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":"jovantanyk"},"content":"import seedu.address.model.person.Sex;","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"jovantanyk"},"content":"import seedu.address.model.person.Status;","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"NatLeong"},"content":"import seedu.address.model.person.Symptom;","lastModifiedDate":"2024-03-20"},{"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":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","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":"jovantanyk"},"content":" private final String nric;","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"jovantanyk"},"content":" private final String sex;","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"jovantanyk"},"content":" private final String status;","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"jovantanyk"},"content":" private final String dateOfBirth;","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"NatLeong"},"content":" private final Optional\u003cString\u003e email;","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"NatLeong"},"content":" private final Optional\u003cString\u003e country;","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"NatLeong"},"content":" private final Optional\u003cString\u003e allergies;","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"NatLeong"},"content":" private final Optional\u003cString\u003e bloodType;","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"NatLeong"},"content":" private final Optional\u003cString\u003e condition;","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"NatLeong"},"content":" private final Optional\u003cString\u003e dateOfAdmission;","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"NatLeong"},"content":" private final Optional\u003cString\u003e diagnosis;","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"NatLeong"},"content":" private final Optional\u003cString\u003e symptom;","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"laney0808"},"content":" public JsonAdaptedPerson(@JsonProperty(\"nric\") String nric, @JsonProperty(\"name\") String name,","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"NatLeong"},"content":" @JsonProperty(\"phone\") String phone, @JsonProperty(\"address\") String address,","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"NatLeong"},"content":" @JsonProperty(\"dateOfBirth\") String dob, @JsonProperty(\"sex\") String sex,","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"NatLeong"},"content":" @JsonProperty(\"status\") String status, @JsonProperty(\"email\") String email,","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"NatLeong"},"content":" @JsonProperty(\"country\") String country, @JsonProperty(\"allergies\") String allergies,","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"NatLeong"},"content":" @JsonProperty(\"bloodType\") String bloodType, @JsonProperty(\"condition\") String condition,","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"jovantanyk"},"content":" @JsonProperty(\"dateOfAdmission\") String doa, @JsonProperty(\"diagnosis\") String diagnosis,","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"NatLeong"},"content":" @JsonProperty(\"symptom\") String symptom) {","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"laney0808"},"content":" this.nric \u003d nric;","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"laney0808"},"content":" this.dateOfBirth \u003d dob;","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"laney0808"},"content":" this.sex \u003d sex;","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"jovantanyk"},"content":" this.status \u003d status;","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"NatLeong"},"content":" this.email \u003d Optional.ofNullable(email);","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"NatLeong"},"content":" this.country \u003d Optional.ofNullable(country);","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"NatLeong"},"content":" this.allergies \u003d Optional.ofNullable(allergies);","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"NatLeong"},"content":" this.bloodType \u003d Optional.ofNullable(bloodType);","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"NatLeong"},"content":" this.condition \u003d Optional.ofNullable(condition);","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"NatLeong"},"content":" this.dateOfAdmission \u003d Optional.ofNullable(doa);","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"NatLeong"},"content":" this.diagnosis \u003d Optional.ofNullable(diagnosis);","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"NatLeong"},"content":" this.symptom \u003d Optional.ofNullable(symptom);","lastModifiedDate":"2024-03-20"},{"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"},{"lineNumber":77,"author":{"gitId":"jovantanyk"},"content":" * Converts a given {@code Person} into this class for Json use.","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"jovantanyk"},"content":" this.nric \u003d source.getNric().toString();","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"jovantanyk"},"content":" this.name \u003d source.getName().toString();","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"jovantanyk"},"content":" this.phone \u003d source.getPhone().toString();","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"jovantanyk"},"content":" this.address \u003d source.getAddress().toString();","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"jovantanyk"},"content":" this.dateOfBirth \u003d source.getDateOfBirth().toString();","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"jovantanyk"},"content":" this.sex \u003d source.getSex().toString();","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"jovantanyk"},"content":" this.status \u003d source.getStatus().toString();","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"jovantanyk"},"content":" this.email \u003d Optional.ofNullable(source.getEmail()).map(Email::toString);","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"jovantanyk"},"content":" this.country \u003d Optional.ofNullable(source.getCountry()).map(Country::toString);","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"jovantanyk"},"content":" this.allergies \u003d Optional.ofNullable(source.getAllergies()).map(Allergies::toString);","lastModifiedDate":"2024-03-21"},{"lineNumber":90,"author":{"gitId":"jovantanyk"},"content":" this.bloodType \u003d Optional.ofNullable(source.getBloodType()).map(BloodType::toString);","lastModifiedDate":"2024-03-21"},{"lineNumber":91,"author":{"gitId":"jovantanyk"},"content":" this.condition \u003d Optional.ofNullable(source.getCondition()).map(Condition::toString);","lastModifiedDate":"2024-03-21"},{"lineNumber":92,"author":{"gitId":"jovantanyk"},"content":" this.dateOfAdmission \u003d Optional.ofNullable(source.getDateOfAdmission()).map(DateOfAdmission::toString);","lastModifiedDate":"2024-03-21"},{"lineNumber":93,"author":{"gitId":"jovantanyk"},"content":" this.diagnosis \u003d Optional.ofNullable(source.getDiagnosis()).map(Diagnosis::toString);","lastModifiedDate":"2024-03-21"},{"lineNumber":94,"author":{"gitId":"jovantanyk"},"content":" this.symptom \u003d Optional.ofNullable(source.getSymptom()).map(Symptom::toString);","lastModifiedDate":"2024-03-21"},{"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"},{"lineNumber":98,"author":{"gitId":"jovantanyk"},"content":" * Converts this Json-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"NatLeong"},"content":" Person person;","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":106,"author":{"gitId":"jovantanyk"},"content":" // NRIC Check","lastModifiedDate":"2024-03-18"},{"lineNumber":107,"author":{"gitId":"jovantanyk"},"content":" if (nric \u003d\u003d null) {","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"jovantanyk"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Nric.class.getSimpleName()));","lastModifiedDate":"2024-03-18"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"jovantanyk"},"content":" if (!Nric.isValidNric(nric)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"jovantanyk"},"content":" throw new IllegalValueException(Nric.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"jovantanyk"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":113,"author":{"gitId":"jovantanyk"},"content":" final Nric modelNric \u003d new Nric(nric);","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"jovantanyk"},"content":" // Name Check","lastModifiedDate":"2024-03-18"},{"lineNumber":115,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":122,"author":{"gitId":"jovantanyk"},"content":" // Phone Check","lastModifiedDate":"2024-03-18"},{"lineNumber":123,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":129,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13"},{"lineNumber":130,"author":{"gitId":"jovantanyk"},"content":" // Address Check","lastModifiedDate":"2024-03-18"},{"lineNumber":131,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2024-03-18"},{"lineNumber":132,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2024-03-18"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":135,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2024-03-18"},{"lineNumber":138,"author":{"gitId":"jovantanyk"},"content":" // Date of Birth Check","lastModifiedDate":"2024-03-18"},{"lineNumber":139,"author":{"gitId":"laney0808"},"content":" if (dateOfBirth \u003d\u003d null) {","lastModifiedDate":"2024-03-17"},{"lineNumber":140,"author":{"gitId":"jovantanyk"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-21"},{"lineNumber":141,"author":{"gitId":"jovantanyk"},"content":" DateOfBirth.class.getSimpleName()));","lastModifiedDate":"2024-03-21"},{"lineNumber":142,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":143,"author":{"gitId":"laney0808"},"content":" if (!DateOfBirth.isValidDateOfBirth(dateOfBirth)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":144,"author":{"gitId":"jovantanyk"},"content":" throw new IllegalValueException(DateOfBirth.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":145,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"laney0808"},"content":" final DateOfBirth modelDateOfBirth \u003d new DateOfBirth(dateOfBirth);","lastModifiedDate":"2024-03-17"},{"lineNumber":147,"author":{"gitId":"jovantanyk"},"content":" // Sex Check","lastModifiedDate":"2024-03-18"},{"lineNumber":148,"author":{"gitId":"jovantanyk"},"content":" if (sex \u003d\u003d null) {","lastModifiedDate":"2024-03-18"},{"lineNumber":149,"author":{"gitId":"jovantanyk"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Sex.class.getSimpleName()));","lastModifiedDate":"2024-03-18"},{"lineNumber":150,"author":{"gitId":"jovantanyk"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":151,"author":{"gitId":"jovantanyk"},"content":" if (!Sex.isValidSex(sex)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":152,"author":{"gitId":"jovantanyk"},"content":" throw new IllegalValueException(Sex.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":153,"author":{"gitId":"jovantanyk"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":154,"author":{"gitId":"jovantanyk"},"content":" final Sex modelSex \u003d new Sex(sex);","lastModifiedDate":"2024-03-18"},{"lineNumber":155,"author":{"gitId":"jovantanyk"},"content":" // Status Check","lastModifiedDate":"2024-03-18"},{"lineNumber":156,"author":{"gitId":"jovantanyk"},"content":" if (status \u003d\u003d null) {","lastModifiedDate":"2024-03-18"},{"lineNumber":157,"author":{"gitId":"jovantanyk"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Status.class.getSimpleName()));","lastModifiedDate":"2024-03-18"},{"lineNumber":158,"author":{"gitId":"jovantanyk"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":159,"author":{"gitId":"jovantanyk"},"content":" if (!Status.isValidStatus(status)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":160,"author":{"gitId":"jovantanyk"},"content":" throw new IllegalValueException(Status.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":161,"author":{"gitId":"jovantanyk"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":162,"author":{"gitId":"jovantanyk"},"content":" final Status modelStatus \u003d new Status(status);","lastModifiedDate":"2024-03-18"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":164,"author":{"gitId":"NatLeong"},"content":" person \u003d new Person(modelNric, modelName, modelPhone, modelAddress, modelDateOfBirth, modelSex, modelStatus);","lastModifiedDate":"2024-03-20"},{"lineNumber":165,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":166,"author":{"gitId":"NatLeong"},"content":" // Email check","lastModifiedDate":"2024-03-20"},{"lineNumber":167,"author":{"gitId":"NatLeong"},"content":" if (email.isPresent()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":168,"author":{"gitId":"NatLeong"},"content":" final Email modelEmail \u003d new Email(email.get());","lastModifiedDate":"2024-03-20"},{"lineNumber":169,"author":{"gitId":"NatLeong"},"content":" person.setEmail(modelEmail);","lastModifiedDate":"2024-03-20"},{"lineNumber":170,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":171,"author":{"gitId":"NatLeong"},"content":" // Country check","lastModifiedDate":"2024-03-20"},{"lineNumber":172,"author":{"gitId":"NatLeong"},"content":" if (country.isPresent()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":173,"author":{"gitId":"NatLeong"},"content":" final Country modelCountry \u003d new Country(country.get());","lastModifiedDate":"2024-03-20"},{"lineNumber":174,"author":{"gitId":"NatLeong"},"content":" person.setCountry(modelCountry);","lastModifiedDate":"2024-03-20"},{"lineNumber":175,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":176,"author":{"gitId":"NatLeong"},"content":" // Allergies check","lastModifiedDate":"2024-03-20"},{"lineNumber":177,"author":{"gitId":"NatLeong"},"content":" if (allergies.isPresent()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":178,"author":{"gitId":"NatLeong"},"content":" final Allergies modelAllergies \u003d new Allergies(allergies.get());","lastModifiedDate":"2024-03-20"},{"lineNumber":179,"author":{"gitId":"NatLeong"},"content":" person.setAllergies(modelAllergies);","lastModifiedDate":"2024-03-20"},{"lineNumber":180,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":181,"author":{"gitId":"NatLeong"},"content":" // BloodType check","lastModifiedDate":"2024-03-20"},{"lineNumber":182,"author":{"gitId":"NatLeong"},"content":" if (bloodType.isPresent()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":183,"author":{"gitId":"jovantanyk"},"content":" final BloodType modelBloodType \u003d new BloodType(bloodType.get());","lastModifiedDate":"2024-03-21"},{"lineNumber":184,"author":{"gitId":"NatLeong"},"content":" person.setBloodType(modelBloodType);","lastModifiedDate":"2024-03-20"},{"lineNumber":185,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":186,"author":{"gitId":"NatLeong"},"content":" //Condition check","lastModifiedDate":"2024-03-20"},{"lineNumber":187,"author":{"gitId":"NatLeong"},"content":" if (condition.isPresent()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":188,"author":{"gitId":"NatLeong"},"content":" final Condition modelCondition \u003d new Condition(condition.get());","lastModifiedDate":"2024-03-20"},{"lineNumber":189,"author":{"gitId":"NatLeong"},"content":" person.setCondition(modelCondition);","lastModifiedDate":"2024-03-20"},{"lineNumber":190,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":191,"author":{"gitId":"NatLeong"},"content":" //Date of Admission check","lastModifiedDate":"2024-03-20"},{"lineNumber":192,"author":{"gitId":"NatLeong"},"content":" if (dateOfAdmission.isPresent()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":193,"author":{"gitId":"NatLeong"},"content":" final DateOfAdmission modelDoa \u003d new DateOfAdmission(dateOfAdmission.get());","lastModifiedDate":"2024-03-20"},{"lineNumber":194,"author":{"gitId":"NatLeong"},"content":" person.setDateOfAdmission(modelDoa);","lastModifiedDate":"2024-03-20"},{"lineNumber":195,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":196,"author":{"gitId":"NatLeong"},"content":" //Diagnosis check","lastModifiedDate":"2024-03-20"},{"lineNumber":197,"author":{"gitId":"NatLeong"},"content":" if (diagnosis.isPresent()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":198,"author":{"gitId":"NatLeong"},"content":" final Diagnosis modelDiagnosis \u003d new Diagnosis(diagnosis.get());","lastModifiedDate":"2024-03-20"},{"lineNumber":199,"author":{"gitId":"NatLeong"},"content":" person.setDiagnosis(modelDiagnosis);","lastModifiedDate":"2024-03-20"},{"lineNumber":200,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":201,"author":{"gitId":"NatLeong"},"content":" //Symptom check","lastModifiedDate":"2024-03-20"},{"lineNumber":202,"author":{"gitId":"NatLeong"},"content":" if (symptom.isPresent()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":203,"author":{"gitId":"NatLeong"},"content":" final Symptom modelSymptom \u003d new Symptom(symptom.get());","lastModifiedDate":"2024-03-20"},{"lineNumber":204,"author":{"gitId":"NatLeong"},"content":" person.setSymptom(modelSymptom);","lastModifiedDate":"2024-03-20"},{"lineNumber":205,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":206,"author":{"gitId":"NatLeong"},"content":" return person;","lastModifiedDate":"2024-03-20"},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":209,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"jovantanyk":56,"laney0808":11,"-":68,"NatLeong":74}},{"path":"src/main/java/seedu/address/storage/JsonAddressBookStorage.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 static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.io.IOException;","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.util.Optional;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.FileUtil;","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"laney0808"},"content":"import seedu.address.model.ReadOnlyImmuniMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * A class to access AddressBook data stored as a json file on the hard disk.","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class JsonAddressBookStorage implements AddressBookStorage {","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(JsonAddressBookStorage.class);","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private Path filePath;","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public JsonAddressBookStorage(Path filePath) {","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" return filePath;","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":" @Override","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"laney0808"},"content":" public Optional\u003cReadOnlyImmuniMate\u003e readAddressBook() throws DataLoadingException {","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" return readAddressBook(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":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Similar to {@link #readAddressBook()}.","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2023-06-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"laney0808"},"content":" public Optional\u003cReadOnlyImmuniMate\u003e readAddressBook(Path filePath) throws DataLoadingException {","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" requireNonNull(filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" Optional\u003cJsonSerializableAddressBook\u003e jsonAddressBook \u003d JsonUtil.readJsonFile(","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" filePath, JsonSerializableAddressBook.class);","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" if (!jsonAddressBook.isPresent()) {","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return Optional.of(jsonAddressBook.get().toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" logger.info(\"Illegal values found in \" + filePath + \": \" + ive.getMessage());","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" throw new DataLoadingException(ive);","lastModifiedDate":"2023-06-14"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"laney0808"},"content":" public void saveAddressBook(ReadOnlyImmuniMate addressBook) throws IOException {","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"-"},"content":" saveAddressBook(addressBook, filePath);","lastModifiedDate":"2018-08-13"},{"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":"laney0808"},"content":" * Similar to {@link #saveAddressBook(ReadOnlyImmuniMate)}.","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"laney0808"},"content":" public void saveAddressBook(ReadOnlyImmuniMate addressBook, Path filePath) throws IOException {","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"-"},"content":" requireNonNull(addressBook);","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" requireNonNull(filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" FileUtil.createIfMissing(filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" JsonUtil.saveJsonFile(new JsonSerializableAddressBook(addressBook), filePath);","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":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"laney0808":6,"-":74}},{"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":"laney0808"},"content":"import seedu.address.model.ImmuniMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"laney0808"},"content":"import seedu.address.model.ReadOnlyImmuniMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","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":" * 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":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"Persons list contains duplicate person(s).\";","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedPerson\u003e persons \u003d new ArrayList\u003c\u003e();","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":" * 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":"-"},"content":" public JsonSerializableAddressBook(@JsonProperty(\"persons\") List\u003cJsonAdaptedPerson\u003e persons) {","lastModifiedDate":"2018-08-13"},{"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":"laney0808"},"content":" public JsonSerializableAddressBook(ReadOnlyImmuniMate source) {","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":" persons.addAll(source.getPersonList().stream().map(JsonAdaptedPerson::new).collect(Collectors.toList()));","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 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":"laney0808"},"content":" public ImmuniMate toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"laney0808"},"content":" ImmuniMate addressBook \u003d new ImmuniMate();","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":" for (JsonAdaptedPerson jsonAdaptedPerson : persons) {","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" Person person \u003d jsonAdaptedPerson.toModelType();","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (addressBook.hasPerson(person)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2018-08-13"},{"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":{"laney0808":5,"-":55}},{"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":"laney0808"},"content":"import seedu.address.model.ReadOnlyImmuniMate;","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":" * API of the Storage component","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public interface Storage extends AddressBookStorage, UserPrefsStorage {","lastModifiedDate":"2016-09-25"},{"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":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-04-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":27,"author":{"gitId":"laney0808"},"content":" Optional\u003cReadOnlyImmuniMate\u003e readAddressBook() throws DataLoadingException;","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":30,"author":{"gitId":"laney0808"},"content":" void saveAddressBook(ReadOnlyImmuniMate addressBook) throws IOException;","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"laney0808":3,"-":29}},{"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":"laney0808"},"content":"import seedu.address.model.ReadOnlyImmuniMate;","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":" * Manages storage of AddressBook data in local storage.","lastModifiedDate":"2016-09-24"},{"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":"-"},"content":" private AddressBookStorage addressBookStorage;","lastModifiedDate":"2016-10-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private UserPrefsStorage userPrefsStorage;","lastModifiedDate":"2016-10-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Creates a {@code StorageManager} with the given {@code AddressBookStorage} and {@code UserPrefStorage}.","lastModifiedDate":"2020-05-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public StorageManager(AddressBookStorage addressBookStorage, UserPrefsStorage userPrefsStorage) {","lastModifiedDate":"2016-10-01"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.addressBookStorage \u003d addressBookStorage;","lastModifiedDate":"2016-10-01"},{"lineNumber":28,"author":{"gitId":"-"},"content":" this.userPrefsStorage \u003d userPrefsStorage;","lastModifiedDate":"2016-10-01"},{"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":"-"},"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":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return addressBookStorage.getAddressBookFilePath();","lastModifiedDate":"2016-09-24"},{"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":"laney0808"},"content":" public Optional\u003cReadOnlyImmuniMate\u003e readAddressBook() throws DataLoadingException {","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return readAddressBook(addressBookStorage.getAddressBookFilePath());","lastModifiedDate":"2016-10-01"},{"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":"laney0808"},"content":" public Optional\u003cReadOnlyImmuniMate\u003e readAddressBook(Path filePath) throws DataLoadingException {","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":" logger.fine(\"Attempting to read data from file: \" + filePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return addressBookStorage.readAddressBook(filePath);","lastModifiedDate":"2016-10-01"},{"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":"laney0808"},"content":" public void saveAddressBook(ReadOnlyImmuniMate addressBook) throws IOException {","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"-"},"content":" saveAddressBook(addressBook, addressBookStorage.getAddressBookFilePath());","lastModifiedDate":"2016-10-01"},{"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":"laney0808"},"content":" public void saveAddressBook(ReadOnlyImmuniMate addressBook, Path filePath) throws IOException {","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"-"},"content":" logger.fine(\"Attempting to write to data file: \" + filePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":75,"author":{"gitId":"-"},"content":" addressBookStorage.saveAddressBook(addressBook, filePath);","lastModifiedDate":"2016-10-01"},{"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":{"laney0808":5,"-":73}},{"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":"NatLeong"},"content":" public static final String USERGUIDE_URL \u003d \"https://ay2324s2-cs2103t-t08-1.github.io/tp/UserGuide.html\";","lastModifiedDate":"2024-03-15"},{"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,"NatLeong":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":"jovantanyk"},"content":" private final Stage primaryStage;","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"jovantanyk"},"content":" private final Logic logic;","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"jovantanyk"},"content":" private final HelpWindow helpWindow;","lastModifiedDate":"2024-03-17"},{"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":"jovantanyk"},"content":" private ResultPanel resultPanel;","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private StackPane commandBoxPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private MenuItem helpMenuItem;","lastModifiedDate":"2016-08-18"},{"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 personListPanelPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":46,"author":{"gitId":"jovantanyk"},"content":" private StackPane resultPanelPlaceholder;","lastModifiedDate":"2024-03-17"},{"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 statusbarPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":59,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":64,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":66,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","lastModifiedDate":"2016-12-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-18"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18"},{"lineNumber":79,"author":{"gitId":"jovantanyk"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","lastModifiedDate":"2016-12-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-12-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":108,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":109,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16"},{"lineNumber":110,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":111,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21"},{"lineNumber":112,"author":{"gitId":"-"},"content":" personListPanel \u003d new PersonListPanel(logic.getFilteredPersonList());","lastModifiedDate":"2019-01-25"},{"lineNumber":113,"author":{"gitId":"-"},"content":" personListPanelPlaceholder.getChildren().add(personListPanel.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":115,"author":{"gitId":"jovantanyk"},"content":" // Result Panel","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"jovantanyk"},"content":" resultPanel \u003d new ResultPanel();","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"jovantanyk"},"content":" resultPanelPlaceholder.getChildren().add(resultPanel.getRoot());","lastModifiedDate":"2024-03-17"},{"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":"2024-03-17"},{"lineNumber":160,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2024-03-17"},{"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":" public PersonListPanel getPersonListPanel() {","lastModifiedDate":"2016-08-25"},{"lineNumber":167,"author":{"gitId":"-"},"content":" return personListPanel;","lastModifiedDate":"2018-08-14"},{"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":"jovantanyk"},"content":" resultPanel.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2024-03-17"},{"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":"jovantanyk"},"content":" resultPanel.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2024-03-17"},{"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":{"jovantanyk":11,"-":185}},{"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 javafx.fxml.FXML;","lastModifiedDate":"2016-09-21"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":7,"author":{"gitId":"NatLeong"},"content":"import javafx.scene.paint.Color;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"NatLeong"},"content":"import javafx.scene.shape.Circle;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"NatLeong"},"content":"import seedu.address.model.person.Status;","lastModifiedDate":"2024-03-19"},{"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":"NatLeong"},"content":" private Label nric;","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"NatLeong"},"content":" private Circle statusCircle;","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10"},{"lineNumber":44,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"NatLeong"},"content":" name.setText(person.getName().toString() + \" (\" + person.getSex().toString() + \")\");","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"NatLeong"},"content":" nric.setText(person.getNric().toString());","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"NatLeong"},"content":" updateStatusCircle(person.getStatus());","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"NatLeong"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"NatLeong"},"content":" * Set colour of status circle to represent status","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"NatLeong"},"content":" *","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"NatLeong"},"content":" * @param status Status of the person","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"NatLeong"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"NatLeong"},"content":" public void updateStatusCircle(Status status) {","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"NatLeong"},"content":" switch (status.getStatusType()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"NatLeong"},"content":" case HEALTHY:","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"NatLeong"},"content":" statusCircle.setFill(Color.GREEN);","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"NatLeong"},"content":" break;","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"NatLeong"},"content":" case UNWELL:","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"NatLeong"},"content":" statusCircle.setFill(Color.RED);","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"NatLeong"},"content":" break;","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"NatLeong"},"content":" case PENDING:","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"NatLeong"},"content":" statusCircle.setFill(Color.YELLOW);","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"NatLeong"},"content":" break;","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"NatLeong"},"content":" default:","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"NatLeong"},"content":" statusCircle.setFill(Color.GREY);","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"NatLeong"},"content":" break;","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"-":43,"NatLeong":30}},{"path":"src/main/java/seedu/address/ui/ResultPanel.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 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":"jovantanyk"},"content":"public class ResultPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":14,"author":{"gitId":"jovantanyk"},"content":" private static final String FXML \u003d \"ResultPanel.fxml\";","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-10-15"},{"lineNumber":17,"author":{"gitId":"jovantanyk"},"content":" private TextArea resultPanel;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-15"},{"lineNumber":19,"author":{"gitId":"jovantanyk"},"content":" public ResultPanel() {","lastModifiedDate":"2024-03-17"},{"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":"jovantanyk"},"content":" resultPanel.setText(feedbackToUser);","lastModifiedDate":"2024-03-17"},{"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":{"jovantanyk":5,"-":23}},{"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":"jovantanyk"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"jovantanyk"},"content":"\u003c?import javafx.scene.image.ImageView?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"jovantanyk"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"jovantanyk"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"jovantanyk"},"content":"\u003cStackPane styleClass\u003d\"pane-with-border\" prefHeight\u003d\"60\" xmlns\u003d\"http://javafx.com/javafx/17\"","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"NatLeong"},"content":" xmlns:fx\u003d\"http://javafx.com/fxml/1\" style\u003d\"-fx-background-color: #818589;\"\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"jovantanyk"},"content":" \u003cHBox alignment\u003d\"CENTER_LEFT\" spacing\u003d\"5\"\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"jovantanyk"},"content":" \u003cImageView fitWidth\u003d\"25\" fitHeight\u003d\"25\"\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"jovantanyk"},"content":" \u003cImage url\u003d\"@/images/search_icon.png\"/\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"jovantanyk"},"content":" \u003c/ImageView\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"jovantanyk"},"content":" \u003cTextField fx:id\u003d\"commandTextField\" prefHeight\u003d\"45\" HBox.hgrow\u003d\"ALWAYS\" onAction\u003d\"#handleCommandEntered\"","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"NatLeong"},"content":" promptText\u003d\"Input command here...\" style\u003d\"-fx-background-color: transparent; -fx-border-color: #818589;\" /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"jovantanyk"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"jovantanyk"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"jovantanyk"},"content":" \u003cInsets bottom\u003d\"5\" left\u003d\"10\" right\u003d\"10\" top\u003d\"5\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"jovantanyk"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003c/StackPane\u003e","lastModifiedDate":"2017-06-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":24,"author":{"gitId":"jovantanyk"},"content":"","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"jovantanyk":15,"-":7,"NatLeong":2}},{"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":"jovantanyk"},"content":".result-panel {","lastModifiedDate":"2024-03-17"},{"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":"jovantanyk"},"content":".result-panel .label {","lastModifiedDate":"2024-03-17"},{"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":"jovantanyk"},"content":" -fx-border-color: #383838 #383838 #383838 #383838;","lastModifiedDate":"2024-03-17"},{"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":"jovantanyk"},"content":" -fx-font-family: \"Roboto\";","lastModifiedDate":"2024-03-17"},{"lineNumber":327,"author":{"gitId":"jovantanyk"},"content":" -fx-font-size: 16pt;","lastModifiedDate":"2024-03-17"},{"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":"jovantanyk"},"content":"#resultPanel .content {","lastModifiedDate":"2024-03-17"},{"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"}],"authorContributionMap":{"jovantanyk":6,"-":346}},{"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":"NatLeong"},"content":" \u003cImage url\u003d\"@/images/question.png\" /\u003e","lastModifiedDate":"2024-03-15"},{"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":{"-":43,"NatLeong":1}},{"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":"jovantanyk"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-03-17"},{"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":"NatLeong"},"content":"\u003c?import javafx.stage.Stage?\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":15,"author":{"gitId":"jovantanyk"},"content":"\u003cfx:root minHeight\u003d\"800\" minWidth\u003d\"1290\" onCloseRequest\u003d\"#handleExit\" title\u003d\"Address App\" type\u003d\"javafx.stage.Stage\"","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"jovantanyk"},"content":" xmlns\u003d\"http://javafx.com/javafx/21\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":18,"author":{"gitId":"NatLeong"},"content":" \u003cImage url\u003d\"@/images/stethoscope.png\"/\u003e","lastModifiedDate":"2024-03-17"},{"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":"NatLeong"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" style\u003d\"-fx-background-color: #2FAD66;\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"NatLeong"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\" style\u003d\"-fx-font-family: Arial; -fx-font-size: 14px;\"\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"NatLeong"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\" style\u003d\"-fx-font-family: Arial; -fx-font-size: 14px;\" /\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"NatLeong"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"ImmuniMate\" style\u003d\"-fx-font-family: Arial; -fx-font-size: 14px; -fx-font-weight: bold;\" /\u003e","lastModifiedDate":"2024-03-15"},{"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":"jovantanyk"},"content":" \u003cStackPane fx:id\u003d\"commandBoxPlaceholder\" minHeight\u003d\"75\" prefHeight\u003d\"75\" prefWidth\u003d\"1290\" styleClass\u003d\"pane-with-border\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":37,"author":{"gitId":"jovantanyk"},"content":" \u003cInsets bottom\u003d\"10\" left\u003d\"10\" right\u003d\"10\" top\u003d\"10\" /\u003e","lastModifiedDate":"2024-03-17"},{"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":"jovantanyk"},"content":" \u003cVBox minWidth\u003d\"1290\" prefWidth\u003d\"1290\" styleClass\u003d\"pane-with-border\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"jovantanyk"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"jovantanyk"},"content":" \u003cHBox prefHeight\u003d\"400.0\" styleClass\u003d\"pane-with-border\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"jovantanyk"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"jovantanyk"},"content":" \u003cVBox fx:id\u003d\"personList\" minWidth\u003d\"450\" prefWidth\u003d\"450\" styleClass\u003d\"pane-with-border\" VBox.vgrow\u003d\"ALWAYS\" HBox.hgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":47,"author":{"gitId":"jovantanyk"},"content":" \u003cInsets bottom\u003d\"10\" left\u003d\"10\" right\u003d\"10\" top\u003d\"10\"/\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":49,"author":{"gitId":"jovantanyk"},"content":" \u003cStackPane fx:id\u003d\"personListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"jovantanyk"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"jovantanyk"},"content":" \u003cStackPane fx:id\u003d\"resultPanelPlaceholder\" minWidth\u003d\"800\" prefWidth\u003d\"800\"","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"jovantanyk"},"content":" styleClass\u003d\"pane-with-border\" VBox.vgrow\u003d\"ALWAYS\" HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":54,"author":{"gitId":"NatLeong"},"content":" \u003cInsets bottom\u003d\"10\" left\u003d\"10\" right\u003d\"10\" top\u003d\"10\"/\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":56,"author":{"gitId":"jovantanyk"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"jovantanyk"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"jovantanyk"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"jovantanyk"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"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"}],"authorContributionMap":{"jovantanyk":19,"-":40,"NatLeong":7}},{"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":"NatLeong"},"content":"\u003c?import javafx.scene.layout.RowConstraints?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":12,"author":{"gitId":"NatLeong"},"content":"\u003c?import javafx.scene.shape.Circle?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"NatLeong"},"content":"\u003c?import javafx.scene.text.Font?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":15,"author":{"gitId":"NatLeong"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/21\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"NatLeong"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" maxWidth\u003d\"248.0\" minWidth\u003d\"10.0\" prefWidth\u003d\"233.0\" /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"NatLeong"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" maxWidth\u003d\"176.0\" minWidth\u003d\"10.0\" prefWidth\u003d\"127.0\" /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"NatLeong"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"80\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"NatLeong"},"content":" \u003cInsets bottom\u003d\"3\" left\u003d\"10\" right\u003d\"3\" top\u003d\"3\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"NatLeong"},"content":" \u003cHBox alignment\u003d\"CENTER_LEFT\" spacing\u003d\"3\"\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":31,"author":{"gitId":"NatLeong"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"NatLeong"},"content":" \u003cInsets left\u003d\"10.0\" /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"NatLeong"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":35,"author":{"gitId":"NatLeong"},"content":" \u003cLabel fx:id\u003d\"nric\" styleClass\u003d\"cell_big_label\" text\u003d\"\\$nric\"\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"NatLeong"},"content":" \u003cfont\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"NatLeong"},"content":" \u003cFont size\u003d\"14.0\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"NatLeong"},"content":" \u003c/font\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"NatLeong"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":42,"author":{"gitId":"NatLeong"},"content":" \u003cLabel fx:id\u003d\"name\" styleClass\u003d\"cell_big_label\" text\u003d\"\\$name\"\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"NatLeong"},"content":" \u003cfont\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"NatLeong"},"content":" \u003cFont size\u003d\"14.0\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"NatLeong"},"content":" \u003c/font\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"NatLeong"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"NatLeong"},"content":" \u003cInsets left\u003d\"10.0\" /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"NatLeong"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"NatLeong"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"NatLeong"},"content":" \u003cCircle fx:id\u003d\"statusCircle\" fill\u003d\"#3ea435\" radius\u003d\"17.0\" stroke\u003d\"#3ea435\" strokeType\u003d\"INSIDE\" strokeWidth\u003d\"4.0\" GridPane.columnIndex\u003d\"1\" GridPane.halignment\u003d\"RIGHT\"\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"NatLeong"},"content":" \u003cGridPane.margin\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"NatLeong"},"content":" \u003cInsets right\u003d\"20.0\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"NatLeong"},"content":" \u003c/GridPane.margin\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"NatLeong"},"content":" \u003c/Circle\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"NatLeong"},"content":" \u003crowConstraints\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"NatLeong"},"content":" \u003cRowConstraints /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"NatLeong"},"content":" \u003c/rowConstraints\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"-":27,"NatLeong":33}},{"path":"src/main/resources/view/ResultPanel.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":"jovantanyk"},"content":"\u003cStackPane fx:id\u003d\"placeHolder\" styleClass\u003d\"pane-with-border\" minWidth\u003d\"780\" prefWidth\u003d\"780\" xmlns\u003d\"http://javafx.com/javafx/17\"","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2016-12-24"},{"lineNumber":8,"author":{"gitId":"jovantanyk"},"content":" \u003cTextArea fx:id\u003d\"resultPanel\" editable\u003d\"false\" styleClass\u003d\"result-panel\"/\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c/StackPane\u003e","lastModifiedDate":"2017-06-22"}],"authorContributionMap":{"jovantanyk":2,"-":7}},{"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":"alex-setyawan"},"content":"import static seedu.address.logic.Messages.MESSAGE_PERSON_NOT_FOUND;","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":"import seedu.address.logic.commands.CreateCommand;","lastModifiedDate":"2024-03-21"},{"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":"laney0808"},"content":"import seedu.address.model.ReadOnlyImmuniMate;","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" String deleteCommand \u003d \"delete S1234567M\";","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"alex-setyawan"},"content":" assertCommandException(deleteCommand, MESSAGE_PERSON_NOT_FOUND);","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" //TODO after jsonadaptedperson","lastModifiedDate":"2024-03-21"},{"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":"laney0808"},"content":" Model expectedModel \u003d new ModelManager(model.getImmuniMate(), new UserPrefs());","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" public void saveAddressBook(ReadOnlyImmuniMate addressBook, Path filePath)","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" String addCommand \u003d CreateCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2024-03-20"},{"lineNumber":170,"author":{"gitId":"-"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY;","lastModifiedDate":"2023-06-13"},{"lineNumber":171,"author":{"gitId":"jovantanyk"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).build();","lastModifiedDate":"2024-03-18"},{"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":{"alex-setyawan":2,"jovantanyk":1,"laney0808":7,"-":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":"-"},"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":"laney0808"},"content":"import seedu.address.model.ImmuniMate;","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" expectedModel.setImmuniMate(new ImmuniMate());","lastModifiedDate":"2024-03-20"},{"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":{"laney0808":2,"-":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":"alex-setyawan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ALLERGIES;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"alex-setyawan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COUNTRY;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"alex-setyawan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DATEOFBIRTH;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"alex-setyawan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SEX;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"alex-setyawan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STATUS;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05"},{"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":"laney0808"},"content":"import seedu.address.model.ImmuniMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20"},{"lineNumber":26,"author":{"gitId":"laney0808"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"laney0808"},"content":"import seedu.address.model.person.NricContainsKeywordsPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":29,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.testutil.UpdatePersonDescriptorBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05"},{"lineNumber":35,"author":{"gitId":"jovantanyk"},"content":" public static final String VALID_NRIC_AMY \u003d \"T0182991C\";","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"jovantanyk"},"content":" public static final String VALID_NRIC_BOB \u003d \"S9518552M\";","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05"},{"lineNumber":43,"author":{"gitId":"alex-setyawan"},"content":" public static final String VALID_DATEOFBIRTH_AMY \u003d \"2001-01-01\";","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"alex-setyawan"},"content":" public static final String VALID_DATEOFBIRTH_BOB \u003d \"2002-02-02\";","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"jovantanyk"},"content":" public static final String VALID_SEX_AMY \u003d \"F\";","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"jovantanyk"},"content":" public static final String VALID_SEX_BOB \u003d \"M\";","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"jovantanyk"},"content":" public static final String VALID_STATUS_AMY \u003d \"HEALTHY\";","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"jovantanyk"},"content":" public static final String VALID_STATUS_BOB \u003d \"UNWELL\";","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"alex-setyawan"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"alex-setyawan"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"alex-setyawan"},"content":" public static final String VALID_COUNTRY_AMY \u003d \"Norway\";","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"alex-setyawan"},"content":" public static final String VALID_COUNTRY_BOB \u003d \"Indonesia\";","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"alex-setyawan"},"content":" public static final String VALID_ALLERGIES_AMY \u003d \"peanuts\";","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"alex-setyawan"},"content":" public static final String VALID_ALLERGIES_BOB \u003d \"pollen\";","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"laney0808"},"content":" public static final String VALID_BLOODTYPE_AMY \u003d \"B+\";","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"laney0808"},"content":" public static final String VALID_BLOODTYPE_BOB \u003d \"B+\";","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"alex-setyawan"},"content":" public static final String VALID_CONDITION_AMY \u003d \"diabetes\";","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"alex-setyawan"},"content":" public static final String VALID_CONDITION_BOB \u003d \"high blood pressure\";","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"alex-setyawan"},"content":" public static final String VALID_DATEOFADMISSION_AMY \u003d \"2023-01-01\";","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"alex-setyawan"},"content":" public static final String VALID_DATEOFADMISSION_BOB \u003d \"2023-02-02\";","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"alex-setyawan"},"content":" public static final String VALID_DIAGNOSIS_AMY \u003d \"good\";","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"alex-setyawan"},"content":" public static final String VALID_DIAGNOSIS_BOB \u003d \"not good\";","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"alex-setyawan"},"content":" public static final String VALID_SYMPTOM_AMY \u003d \"runny nose\";","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"alex-setyawan"},"content":" public static final String VALID_SYMPTOM_BOB \u003d \"sore throat\";","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":74,"author":{"gitId":"alex-setyawan"},"content":" public static final String DATEOFBIRTH_DESC_AMY \u003d \" \" + PREFIX_DATEOFBIRTH + VALID_DATEOFBIRTH_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"alex-setyawan"},"content":" public static final String DATEOFBIRTH_DESC_BOB \u003d \" \" + PREFIX_DATEOFBIRTH + VALID_DATEOFBIRTH_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"alex-setyawan"},"content":" public static final String SEX_DESC_AMY \u003d \" \" + PREFIX_SEX + VALID_SEX_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"alex-setyawan"},"content":" public static final String SEX_DESC_BOB \u003d \" \" + PREFIX_SEX + VALID_SEX_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"alex-setyawan"},"content":" public static final String STATUS_DESC_AMY \u003d \" \" + PREFIX_STATUS + VALID_STATUS_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"alex-setyawan"},"content":" public static final String STATUS_DESC_BOB \u003d \" \" + PREFIX_STATUS + VALID_STATUS_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"alex-setyawan"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"alex-setyawan"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"alex-setyawan"},"content":" public static final String COUNTRY_DESC_AMY \u003d \" \" + PREFIX_COUNTRY + VALID_COUNTRY_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"alex-setyawan"},"content":" public static final String COUNTRY_DESC_BOB \u003d \" \" + PREFIX_COUNTRY + VALID_COUNTRY_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"alex-setyawan"},"content":" public static final String ALLERGIES_DESC_AMY \u003d \" \" + PREFIX_ALLERGIES + VALID_ALLERGIES_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"alex-setyawan"},"content":" public static final String ALLERGIES_DESC_BOB \u003d \" \" + PREFIX_ALLERGIES + VALID_ALLERGIES_BOB;","lastModifiedDate":"2024-03-21"},{"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":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":89,"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":90,"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":91,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05"},{"lineNumber":93,"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":94,"author":{"gitId":"laney0808"},"content":" public static final String NON_EXISTENT_NRIC \u003d \"S1234576A\";","lastModifiedDate":"2024-03-21"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":99,"author":{"gitId":"alex-setyawan"},"content":" public static final UpdateCommand.UpdatePersonDescriptor DESC_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"alex-setyawan"},"content":" public static final UpdateCommand.UpdatePersonDescriptor DESC_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":102,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":103,"author":{"gitId":"alex-setyawan"},"content":" DESC_AMY \u003d new UpdatePersonDescriptorBuilder().withNric(VALID_NRIC_AMY).withName(VALID_NAME_AMY)","lastModifiedDate":"2024-03-21"},{"lineNumber":104,"author":{"gitId":"alex-setyawan"},"content":" .withPhone(VALID_PHONE_AMY).withAddress(VALID_ADDRESS_AMY).withDateOfBirth(VALID_DATEOFBIRTH_AMY)","lastModifiedDate":"2024-03-21"},{"lineNumber":105,"author":{"gitId":"alex-setyawan"},"content":" .withSex(VALID_SEX_AMY).withStatus(VALID_STATUS_AMY).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":106,"author":{"gitId":"alex-setyawan"},"content":" DESC_BOB \u003d new UpdatePersonDescriptorBuilder().withNric(VALID_NRIC_BOB).withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-21"},{"lineNumber":107,"author":{"gitId":"alex-setyawan"},"content":" .withPhone(VALID_PHONE_BOB).withAddress(VALID_ADDRESS_BOB).withDateOfBirth(VALID_DATEOFBIRTH_BOB)","lastModifiedDate":"2024-03-21"},{"lineNumber":108,"author":{"gitId":"alex-setyawan"},"content":" .withSex(VALID_SEX_BOB).withStatus(VALID_STATUS_BOB).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"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":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":115,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25"},{"lineNumber":117,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":118,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":119,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":122,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":123,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":127,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":128,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25"},{"lineNumber":129,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":130,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":131,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25"},{"lineNumber":132,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":133,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":137,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":138,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":139,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":140,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":141,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25"},{"lineNumber":142,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":143,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25"},{"lineNumber":144,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":145,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":146,"author":{"gitId":"laney0808"},"content":" ImmuniMate expectedAddressBook \u003d new ImmuniMate(actualModel.getImmuniMate());","lastModifiedDate":"2024-03-20"},{"lineNumber":147,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03"},{"lineNumber":150,"author":{"gitId":"laney0808"},"content":" assertEquals(expectedAddressBook, actualModel.getImmuniMate());","lastModifiedDate":"2024-03-20"},{"lineNumber":151,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05"},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":153,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":154,"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":155,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31"},{"lineNumber":156,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":157,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31"},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":160,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31"},{"lineNumber":161,"author":{"gitId":"jovantanyk"},"content":" final String[] splitName \u003d person.getName().toString().split(\"\\\\s+\");","lastModifiedDate":"2024-03-18"},{"lineNumber":162,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":167,"author":{"gitId":"laney0808"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":168,"author":{"gitId":"laney0808"},"content":" * Updates {@code model}\u0027s filtered list to show only the person at the given {@code Nric} in the","lastModifiedDate":"2024-03-21"},{"lineNumber":169,"author":{"gitId":"laney0808"},"content":" * {@code model}\u0027s system.","lastModifiedDate":"2024-03-21"},{"lineNumber":170,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":171,"author":{"gitId":"laney0808"},"content":" public static void showPersonWithNric(Model model, Nric nric) {","lastModifiedDate":"2024-03-21"},{"lineNumber":172,"author":{"gitId":"laney0808"},"content":" assertTrue(model.hasPerson(Person.createPersonWithNric(nric)));","lastModifiedDate":"2024-03-21"},{"lineNumber":173,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":174,"author":{"gitId":"laney0808"},"content":" Person person \u003d model.getFilteredPersonList().filtered(p -\u003e p.getNric().equals(nric)).get(0);","lastModifiedDate":"2024-03-21"},{"lineNumber":175,"author":{"gitId":"laney0808"},"content":" model.updateFilteredPersonList(new NricContainsKeywordsPredicate(nric.toString()));","lastModifiedDate":"2024-03-21"},{"lineNumber":176,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":177,"author":{"gitId":"laney0808"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2024-03-21"},{"lineNumber":178,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":179,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":180,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"alex-setyawan":42,"jovantanyk":7,"laney0808":21,"-":110}},{"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":"laney0808"},"content":"public class CreateCommandIntegrationTest {","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" Model expectedModel \u003d new ModelManager(model.getImmuniMate(), new UserPrefs());","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" assertCommandSuccess(new CreateCommand(validPerson), model,","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"laney0808"},"content":" String.format(CreateCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" Person personInList \u003d model.getImmuniMate().getPersonList().get(0);","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"laney0808"},"content":" assertCommandFailure(new CreateCommand(personInList), model,","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"laney0808"},"content":" CreateCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2024-03-20"},{"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":{"laney0808":7,"-":41}},{"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":"-"},"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":"laney0808"},"content":"import seedu.address.model.ImmuniMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12"},{"lineNumber":23,"author":{"gitId":"laney0808"},"content":"import seedu.address.model.ReadOnlyImmuniMate;","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":"public class CreateCommandTest {","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" assertThrows(NullPointerException.class, () -\u003e new CreateCommand(null));","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" CommandResult commandResult \u003d new CreateCommand(validPerson).execute(modelStub);","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":42,"author":{"gitId":"laney0808"},"content":" assertEquals(String.format(CreateCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" CreateCommand createCommand \u003d new CreateCommand(validPerson);","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" assertThrows(CommandException.class,","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"laney0808"},"content":" CreateCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e createCommand.execute(modelStub));","lastModifiedDate":"2024-03-21"},{"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":"laney0808"},"content":" CreateCommand addAliceCommand \u003d new CreateCommand(alice);","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"laney0808"},"content":" CreateCommand addBobCommand \u003d new CreateCommand(bob);","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" CreateCommand addAliceCommandCopy \u003d new CreateCommand(alice);","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" CreateCommand createCommand \u003d new CreateCommand(ALICE);","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"laney0808"},"content":" String expected \u003d CreateCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"laney0808"},"content":" assertEquals(expected, createCommand.toString());","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" public Path getImmunimateFilePath() {","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" public void setImmunimateFilePath(Path immuniMateFilePath) {","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" public void setImmuniMate(ReadOnlyImmuniMate immuniMate) {","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" public ReadOnlyImmuniMate getImmuniMate() {","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" public ReadOnlyImmuniMate getImmuniMate() {","lastModifiedDate":"2024-03-20"},{"lineNumber":201,"author":{"gitId":"laney0808"},"content":" return new ImmuniMate();","lastModifiedDate":"2024-03-20"},{"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":{"laney0808":21,"-":184}},{"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":"laney0808"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NON_EXISTENT_NRIC;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"laney0808"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonWithNric;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"laney0808"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"laney0808"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","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":"laney0808"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2018-01-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":32,"author":{"gitId":"laney0808"},"content":" public void execute_validNricUnfilteredList_success() {","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"laney0808"},"content":" Person personToDelete \u003d model.getFilteredPersonList().filtered(p -\u003e p.getNric().equals(ALICE.getNric())).get(0);","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"laney0808"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(ALICE.getNric());","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":39,"author":{"gitId":"laney0808"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getImmuniMate(), new UserPrefs());","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":46,"author":{"gitId":"laney0808"},"content":" public void execute_invalidNricUnfilteredList_throwsCommandException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"laney0808"},"content":" Nric nonExistingNric \u003d new Nric(NON_EXISTENT_NRIC);","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"laney0808"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(nonExistingNric);","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":50,"author":{"gitId":"alex-setyawan"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_PERSON_NOT_FOUND);","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":53,"author":{"gitId":"laney0808"},"content":" //TODO: figure out why the og version has filtered adn unfilered separated and edit accordingly","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":56,"author":{"gitId":"laney0808"},"content":" showPersonWithNric(model, ALICE.getNric());","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"laney0808"},"content":" Person personToDelete \u003d model.getFilteredPersonList().filtered(p -\u003e p.getNric().equals(ALICE.getNric())).get(0);","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"laney0808"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(ALICE.getNric());","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":63,"author":{"gitId":"laney0808"},"content":" Model expectedModel \u003d new ModelManager(model.getImmuniMate(), new UserPrefs());","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":" showNoPerson(expectedModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-06-05"},{"lineNumber":73,"author":{"gitId":"laney0808"},"content":" assertTrue(Nric.isValidNric(NON_EXISTENT_NRIC));","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":75,"author":{"gitId":"laney0808"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(new Nric(NON_EXISTENT_NRIC));","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":77,"author":{"gitId":"alex-setyawan"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_PERSON_NOT_FOUND);","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":82,"author":{"gitId":"laney0808"},"content":" DeleteCommand deleteFirstCommand \u003d new DeleteCommand(BOB.getNric());","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"laney0808"},"content":" DeleteCommand deleteSecondCommand \u003d new DeleteCommand(new Nric(NON_EXISTENT_NRIC));","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":89,"author":{"gitId":"laney0808"},"content":" DeleteCommand deleteFirstCommandCopy \u003d new DeleteCommand(BOB.getNric());","lastModifiedDate":"2024-03-21"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","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":"2019-02-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":104,"author":{"gitId":"laney0808"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(BOB.getNric());","lastModifiedDate":"2024-03-21"},{"lineNumber":105,"author":{"gitId":"laney0808"},"content":" String expected \u003d DeleteCommand.class.getCanonicalName() + \"{targetNric\u003d\" + BOB.getNric() + \"}\";","lastModifiedDate":"2024-03-21"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertEquals(expected, deleteCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":110,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05"},{"lineNumber":111,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":112,"author":{"gitId":"-"},"content":" private void showNoPerson(Model model) {","lastModifiedDate":"2017-06-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2017-06-12"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertTrue(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2018-02-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"alex-setyawan":2,"laney0808":24,"-":91}},{"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":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"jovantanyk"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_PERSONS_LISTED_OVERVIEW;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.CARL;","lastModifiedDate":"2017-07-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ELLE;","lastModifiedDate":"2017-07-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.FIONA;","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":"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":"jovantanyk"},"content":"import java.util.List;","lastModifiedDate":"2024-03-21"},{"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":"2024-03-21"},{"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":"jovantanyk"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"jovantanyk"},"content":" private final Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"jovantanyk"},"content":" private final Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"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":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2017-06-12"},{"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":"jovantanyk"},"content":" assertEquals(findFirstCommand, findFirstCommand);","lastModifiedDate":"2024-03-21"},{"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":"jovantanyk"},"content":" assertEquals(findFirstCommand, findFirstCommandCopy);","lastModifiedDate":"2024-03-21"},{"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":"jovantanyk"},"content":" assertNotEquals(1, findFirstCommand);","lastModifiedDate":"2024-03-21"},{"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":"jovantanyk"},"content":" assertNotEquals(null, findFirstCommand);","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"jovantanyk"},"content":" assertNotEquals(findFirstCommand, findSecondCommand);","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void execute_zeroKeywords_noPersonFound() {","lastModifiedDate":"2017-08-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2017-06-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2018-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08"},{"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 execute_multipleKeywords_multiplePersonsFound() {","lastModifiedDate":"2017-08-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2017-06-12"},{"lineNumber":72,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\"Kurz Elle Kunz\");","lastModifiedDate":"2018-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"jovantanyk"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(List.of(\"keyword\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"-"},"content":" FindCommand findCommand \u003d new FindCommand(predicate);","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.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":"jovantanyk"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2018-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":91,"author":{"gitId":"-"},"content":" private NameContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2018-08-08"},{"lineNumber":92,"author":{"gitId":"-"},"content":" return new NameContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2018-08-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":94,"author":{"gitId":"jovantanyk"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":95,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"jovantanyk":13,"-":82}},{"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":"-"},"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":"laney0808"},"content":" expectedModel \u003d new ModelManager(model.getImmuniMate(), new UserPrefs());","lastModifiedDate":"2024-03-20"},{"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":{"laney0808":1,"-":38}},{"path":"src/test/java/seedu/address/logic/commands/ReadCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"NatLeong"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":3,"author":{"gitId":"NatLeong"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"NatLeong"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"NatLeong"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-22"},{"lineNumber":6,"author":{"gitId":"NatLeong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NON_EXISTENT_NRIC;","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"NatLeong"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"NatLeong"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"NatLeong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"NatLeong"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"NatLeong"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"NatLeong"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"NatLeong"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"NatLeong"},"content":"public class ReadCommandTest {","lastModifiedDate":"2024-03-23"},{"lineNumber":18,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"NatLeong"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"NatLeong"},"content":" /*@Test","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"NatLeong"},"content":" void execute_validNric_success() {","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"NatLeong"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"NatLeong"},"content":" void execute_invalidNric_failure() {","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"NatLeong"},"content":" }*/","lastModifiedDate":"2024-03-22"},{"lineNumber":30,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"NatLeong"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":32,"author":{"gitId":"NatLeong"},"content":" void equals() {","lastModifiedDate":"2024-03-22"},{"lineNumber":33,"author":{"gitId":"NatLeong"},"content":" ReadCommand readFirstCommand \u003d new ReadCommand(BOB.getNric());","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"NatLeong"},"content":" ReadCommand readSecondCommand \u003d new ReadCommand(new Nric(NON_EXISTENT_NRIC));","lastModifiedDate":"2024-03-22"},{"lineNumber":35,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":36,"author":{"gitId":"NatLeong"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-22"},{"lineNumber":37,"author":{"gitId":"NatLeong"},"content":" assertTrue(readFirstCommand.equals(readFirstCommand));","lastModifiedDate":"2024-03-22"},{"lineNumber":38,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"NatLeong"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"NatLeong"},"content":" ReadCommand readFirstCommandCopy \u003d new ReadCommand(BOB.getNric());","lastModifiedDate":"2024-03-22"},{"lineNumber":41,"author":{"gitId":"NatLeong"},"content":" assertTrue(readFirstCommand.equals(readFirstCommandCopy));","lastModifiedDate":"2024-03-22"},{"lineNumber":42,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":43,"author":{"gitId":"NatLeong"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"NatLeong"},"content":" assertFalse(readFirstCommand.equals(1));","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"NatLeong"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"NatLeong"},"content":" assertFalse(readFirstCommand.equals(null));","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":49,"author":{"gitId":"NatLeong"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-22"},{"lineNumber":50,"author":{"gitId":"NatLeong"},"content":" assertFalse(readFirstCommand.equals(readSecondCommand));","lastModifiedDate":"2024-03-22"},{"lineNumber":51,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"NatLeong"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":54,"author":{"gitId":"NatLeong"},"content":" void testToString() {","lastModifiedDate":"2024-03-22"},{"lineNumber":55,"author":{"gitId":"NatLeong"},"content":" ReadCommand readCommand \u003d new ReadCommand(BOB.getNric());","lastModifiedDate":"2024-03-22"},{"lineNumber":56,"author":{"gitId":"NatLeong"},"content":" String expected \u003d ReadCommand.class.getCanonicalName() + \"{nric\u003d\" + BOB.getNric() + \"}\";","lastModifiedDate":"2024-03-22"},{"lineNumber":57,"author":{"gitId":"NatLeong"},"content":" assertEquals(expected, readCommand.toString());","lastModifiedDate":"2024-03-22"},{"lineNumber":58,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":59,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":60,"author":{"gitId":"NatLeong"},"content":"}","lastModifiedDate":"2024-03-22"}],"authorContributionMap":{"NatLeong":60}},{"path":"src/test/java/seedu/address/logic/commands/UpdateCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-08"},{"lineNumber":2,"author":{"gitId":"alex-setyawan"},"content":"/*","lastModifiedDate":"2024-03-21"},{"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":"alex-setyawan"},"content":"import seedu.address.logic.commands.UpdateCommand.UpdatePersonDescriptor;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"laney0808"},"content":"import seedu.address.model.ImmuniMate;","lastModifiedDate":"2024-03-20"},{"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.PersonBuilder;","lastModifiedDate":"2017-05-04"},{"lineNumber":29,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.testutil.UpdatePersonDescriptorBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":31,"author":{"gitId":"alex-setyawan"},"content":"/*","lastModifiedDate":"2024-03-21"},{"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":"alex-setyawan"},"content":"public class UpdateCommandTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"alex-setyawan"},"content":" /*","lastModifiedDate":"2024-03-21"},{"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":"alex-setyawan"},"content":" UpdatePersonDescriptor descriptor \u003d new UpdatePersonDescriptorBuilder(editedPerson).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"alex-setyawan"},"content":" UpdateCommand updateCommand \u003d new UpdateCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":45,"author":{"gitId":"alex-setyawan"},"content":" String expectedMessage \u003d String.format(","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"alex-setyawan"},"content":" UpdateCommand.MESSAGE_UPDATE_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":48,"author":{"gitId":"laney0808"},"content":" Model expectedModel \u003d new ModelManager(new ImmuniMate(model.getImmuniMate()), new UserPrefs());","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":51,"author":{"gitId":"alex-setyawan"},"content":" assertCommandSuccess(updateCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":56,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2017-05-18"},{"lineNumber":57,"author":{"gitId":"-"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":59,"author":{"gitId":"-"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2017-05-18"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-18"},{"lineNumber":61,"author":{"gitId":"jovantanyk"},"content":" .build();","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":63,"author":{"gitId":"alex-setyawan"},"content":" UpdatePersonDescriptor descriptor \u003d new UpdatePersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":65,"author":{"gitId":"alex-setyawan"},"content":" UpdateCommand updateCommand \u003d new UpdateCommand(indexLastPerson, descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":67,"author":{"gitId":"alex-setyawan"},"content":" String expectedMessage \u003d String.format(","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"alex-setyawan"},"content":" UpdateCommand.MESSAGE_UPDATE_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":70,"author":{"gitId":"laney0808"},"content":" Model expectedModel \u003d new ModelManager(new ImmuniMate(model.getImmuniMate()), new UserPrefs());","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"-"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":73,"author":{"gitId":"alex-setyawan"},"content":" assertCommandSuccess(updateCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":78,"author":{"gitId":"alex-setyawan"},"content":" UpdateCommand updateCommand \u003d new UpdateCommand(INDEX_FIRST_PERSON, new UpdatePersonDescriptor());","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"-"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":81,"author":{"gitId":"alex-setyawan"},"content":" String expectedMessage \u003d String.format(","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"alex-setyawan"},"content":" UpdateCommand.MESSAGE_UPDATE_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":84,"author":{"gitId":"laney0808"},"content":" Model expectedModel \u003d new ModelManager(new ImmuniMate(model.getImmuniMate()), new UserPrefs());","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":86,"author":{"gitId":"alex-setyawan"},"content":" assertCommandSuccess(updateCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":91,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":94,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder(personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":95,"author":{"gitId":"alex-setyawan"},"content":" UpdateCommand updateCommand \u003d new UpdateCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"alex-setyawan"},"content":" new UpdatePersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":98,"author":{"gitId":"alex-setyawan"},"content":" String expectedMessage \u003d String.format(","lastModifiedDate":"2024-03-21"},{"lineNumber":99,"author":{"gitId":"alex-setyawan"},"content":" UpdateCommand.MESSAGE_UPDATE_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2024-03-21"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":101,"author":{"gitId":"laney0808"},"content":" Model expectedModel \u003d new ModelManager(new ImmuniMate(model.getImmuniMate()), new UserPrefs());","lastModifiedDate":"2024-03-20"},{"lineNumber":102,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":104,"author":{"gitId":"alex-setyawan"},"content":" assertCommandSuccess(updateCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":109,"author":{"gitId":"-"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":110,"author":{"gitId":"alex-setyawan"},"content":" UpdatePersonDescriptor descriptor \u003d new UpdatePersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":111,"author":{"gitId":"alex-setyawan"},"content":" UpdateCommand updateCommand \u003d new UpdateCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":113,"author":{"gitId":"alex-setyawan"},"content":" assertCommandFailure(updateCommand, model, UpdateCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2024-03-20"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":118,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":120,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2017-05-18"},{"lineNumber":121,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2024-03-20"},{"lineNumber":122,"author":{"gitId":"alex-setyawan"},"content":" UpdateCommand updateCommand \u003d new UpdateCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2024-03-20"},{"lineNumber":123,"author":{"gitId":"alex-setyawan"},"content":" new UpdatePersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2024-03-20"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":125,"author":{"gitId":"alex-setyawan"},"content":" assertCommandFailure(updateCommand, model, UpdateCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2024-03-20"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":130,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18"},{"lineNumber":131,"author":{"gitId":"alex-setyawan"},"content":" UpdatePersonDescriptor descriptor \u003d new UpdatePersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":132,"author":{"gitId":"alex-setyawan"},"content":" UpdateCommand updateCommand \u003d new UpdateCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":133,"author":{"gitId":"alex-setyawan"},"content":" assertCommandFailure(updateCommand, model, Messages.MESSAGE_PERSON_NOT_FOUND);","lastModifiedDate":"2024-03-20"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":135,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":137,"author":{"gitId":"alex-setyawan"},"content":" /*","lastModifiedDate":"2024-03-21"},{"lineNumber":138,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18"},{"lineNumber":139,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18"},{"lineNumber":140,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18"},{"lineNumber":141,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18"},{"lineNumber":142,"author":{"gitId":"alex-setyawan"},"content":" /*","lastModifiedDate":"2024-03-21"},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":144,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":145,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18"},{"lineNumber":147,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18"},{"lineNumber":148,"author":{"gitId":"laney0808"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getImmuniMate().getPersonList().size());","lastModifiedDate":"2024-03-20"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":150,"author":{"gitId":"alex-setyawan"},"content":" UpdateCommand updateCommand \u003d new UpdateCommand(outOfBoundIndex,","lastModifiedDate":"2024-03-20"},{"lineNumber":151,"author":{"gitId":"alex-setyawan"},"content":" new UpdatePersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2024-03-20"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":153,"author":{"gitId":"alex-setyawan"},"content":" assertCommandFailure(updateCommand, model, Messages.MESSAGE_PERSON_NOT_FOUND);","lastModifiedDate":"2024-03-20"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":158,"author":{"gitId":"alex-setyawan"},"content":" final UpdateCommand standardCommand \u003d new UpdateCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2024-03-20"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":161,"author":{"gitId":"alex-setyawan"},"content":" UpdatePersonDescriptor copyDescriptor \u003d new UpdatePersonDescriptor(DESC_AMY);","lastModifiedDate":"2024-03-20"},{"lineNumber":162,"author":{"gitId":"alex-setyawan"},"content":" UpdateCommand commandWithSameValues \u003d new UpdateCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":163,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":175,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(standardCommand.equals(new UpdateCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2024-03-20"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":178,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(standardCommand.equals(new UpdateCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2024-03-20"},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":181,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":184,"author":{"gitId":"alex-setyawan"},"content":" UpdatePersonDescriptor editPersonDescriptor \u003d new UpdatePersonDescriptor();","lastModifiedDate":"2024-03-20"},{"lineNumber":185,"author":{"gitId":"alex-setyawan"},"content":" UpdateCommand updateCommand \u003d new UpdateCommand(index, editPersonDescriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":186,"author":{"gitId":"alex-setyawan"},"content":" String expected \u003d UpdateCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2024-03-20"},{"lineNumber":187,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":188,"author":{"gitId":"alex-setyawan"},"content":" assertEquals(expected, updateCommand.toString());","lastModifiedDate":"2024-03-20"},{"lineNumber":189,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":190,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":191,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08"}],"authorContributionMap":{"alex-setyawan":50,"jovantanyk":1,"laney0808":6,"-":134}},{"path":"src/test/java/seedu/address/logic/commands/UpdatePersonDescriptorTest.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_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":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":15,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.logic.commands.UpdateCommand.UpdatePersonDescriptor;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.testutil.UpdatePersonDescriptorBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":18,"author":{"gitId":"alex-setyawan"},"content":"public class UpdatePersonDescriptorTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":23,"author":{"gitId":"alex-setyawan"},"content":" UpdatePersonDescriptor descriptorWithSameValues \u003d new UpdatePersonDescriptor(DESC_AMY);","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":39,"author":{"gitId":"alex-setyawan"},"content":" UpdatePersonDescriptor updatedAmy \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"alex-setyawan"},"content":" new UpdatePersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(DESC_AMY.equals(updatedAmy));","lastModifiedDate":"2024-03-20"},{"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":"alex-setyawan"},"content":" updatedAmy \u003d new UpdatePersonDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(DESC_AMY.equals(updatedAmy));","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":48,"author":{"gitId":"alex-setyawan"},"content":" updatedAmy \u003d new UpdatePersonDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(DESC_AMY.equals(updatedAmy));","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":52,"author":{"gitId":"alex-setyawan"},"content":" updatedAmy \u003d new UpdatePersonDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(DESC_AMY.equals(updatedAmy));","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"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":"alex-setyawan"},"content":" UpdatePersonDescriptor updatePersonDescriptor \u003d new UpdatePersonDescriptor();","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"alex-setyawan"},"content":" String expected \u003d UpdatePersonDescriptor.class.getCanonicalName() + \"{nric\u003d\"","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"alex-setyawan"},"content":" + updatePersonDescriptor.getNric() + \", name\u003d\"","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"alex-setyawan"},"content":" + updatePersonDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"alex-setyawan"},"content":" + updatePersonDescriptor.getPhone().orElse(null) + \", address\u003d\"","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"alex-setyawan"},"content":" + updatePersonDescriptor.getAddress().orElse(null) + \", date of birth\u003d\"","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"alex-setyawan"},"content":" + updatePersonDescriptor.getDateOfBirth().orElse(null) + \", sex\u003d\"","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"alex-setyawan"},"content":" + updatePersonDescriptor.getSex().orElse(null) + \", status\u003d\"","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"alex-setyawan"},"content":" + updatePersonDescriptor.getStatus().orElse(null) + \"}\";","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"alex-setyawan"},"content":" assertEquals(expected, updatePersonDescriptor.toString());","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"alex-setyawan":23,"-":46}},{"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.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14"},{"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":"-"},"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.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":38,"author":{"gitId":"laney0808"},"content":"import seedu.address.logic.commands.CreateCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-06-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-06-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":47,"author":{"gitId":"laney0808"},"content":"public class CreateCommandParserTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"laney0808"},"content":" private CreateCommandParser parser \u003d new CreateCommandParser();","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":52,"author":{"gitId":"jovantanyk"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":56,"author":{"gitId":"laney0808"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND, new CreateCommand(expectedPerson));","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15"},{"lineNumber":60,"author":{"gitId":"jovantanyk"},"content":" Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB)","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":63,"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":64,"author":{"gitId":"laney0808"},"content":" new CreateCommand(expectedPersonMultipleTags));","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-07-14"},{"lineNumber":70,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND;","lastModifiedDate":"2023-07-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":74,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":78,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":80,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":82,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":86,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2023-07-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":" + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_ADDRESS, PREFIX_EMAIL, PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":110,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":112,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","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":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":132,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":133,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15"},{"lineNumber":134,"author":{"gitId":"jovantanyk"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + ADDRESS_DESC_AMY,","lastModifiedDate":"2017-12-23"},{"lineNumber":136,"author":{"gitId":"laney0808"},"content":" new CreateCommand(expectedPerson));","lastModifiedDate":"2024-03-20"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":139,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":140,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":141,"author":{"gitId":"laney0808"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, CreateCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-20"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":143,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":144,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":147,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":151,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":155,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":156,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":159,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15"},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":164,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":165,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":166,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":167,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":170,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15"},{"lineNumber":171,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":174,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15"},{"lineNumber":175,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":178,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15"},{"lineNumber":179,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2017-12-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":182,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15"},{"lineNumber":183,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":" + INVALID_TAG_DESC + VALID_TAG_FRIEND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":186,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":187,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC,","lastModifiedDate":"2017-12-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2017-12-23"},{"lineNumber":193,"author":{"gitId":"laney0808"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, CreateCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-20"},{"lineNumber":194,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":195,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"jovantanyk":3,"laney0808":8,"-":184}},{"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":"laney0808"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2024-03-21"},{"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":"laney0808"},"content":" assertParseSuccess(parser, BOB.getNric().toString(), new DeleteCommand(BOB.getNric()));","lastModifiedDate":"2024-03-21"},{"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":{"laney0808":2,"-":30}},{"path":"src/test/java/seedu/address/logic/parser/ImmuniMateParserTest.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":"laney0808"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2024-03-21"},{"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":"laney0808"},"content":"import seedu.address.logic.commands.CreateCommand;","lastModifiedDate":"2024-03-21"},{"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.ExitCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":23,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.logic.commands.UpdateCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.logic.commands.UpdateCommand.UpdatePersonDescriptor;","lastModifiedDate":"2024-03-21"},{"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.PersonBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27"},{"lineNumber":30,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.testutil.UpdatePersonDescriptorBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":32,"author":{"gitId":"laney0808"},"content":"public class ImmuniMateParserTest {","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":34,"author":{"gitId":"laney0808"},"content":" private final ImmuniMateParser parser \u003d new ImmuniMateParser();","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":37,"author":{"gitId":"laney0808"},"content":" public void parseCommand_create() throws Exception {","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"jovantanyk"},"content":" // TODO: Only tests for person created with mandatory values, update for optional values @laney0808","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"laney0808"},"content":" CreateCommand command \u003d (CreateCommand) parser.parseCommand(PersonUtil.getCreateCommand(person));","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"laney0808"},"content":" assertEquals(new CreateCommand(person), command);","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"laney0808"},"content":" DeleteCommand.COMMAND_WORD + \" \" + BOB.getNric());","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"laney0808"},"content":" assertEquals(new DeleteCommand(BOB.getNric()), command);","lastModifiedDate":"2024-03-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_edit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":60,"author":{"gitId":"alex-setyawan"},"content":" UpdatePersonDescriptor descriptor \u003d new UpdatePersonDescriptorBuilder(person).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"alex-setyawan"},"content":" UpdateCommand command \u003d (UpdateCommand) parser.parseCommand(UpdateCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"alex-setyawan"},"content":" + person.getNric() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"alex-setyawan"},"content":" assertEquals(new UpdateCommand(person.getNric(), descriptor), command);","lastModifiedDate":"2024-03-21"},{"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":{"alex-setyawan":7,"jovantanyk":1,"laney0808":9,"-":85}},{"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.Address;","lastModifiedDate":"2017-05-22"},{"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":"-"},"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":"alex-setyawan"},"content":" private static final String VALID_PHONE \u003d \"91234567\";","lastModifiedDate":"2024-03-21"},{"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":"-"},"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":{"alex-setyawan":1,"-":195}},{"path":"src/test/java/seedu/address/logic/parser/ReadCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"NatLeong"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":3,"author":{"gitId":"NatLeong"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"NatLeong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-22"},{"lineNumber":6,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"NatLeong"},"content":"import seedu.address.logic.commands.ReadCommand;","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"NatLeong"},"content":"public class ReadCommandParserTest {","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"NatLeong"},"content":" private ReadCommandParser parser \u003d new ReadCommandParser();","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"NatLeong"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"NatLeong"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"NatLeong"},"content":" assertParseFailure(parser, \" \", String.format(ReadCommand.MESSAGE_NOT_READ));","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"NatLeong"},"content":" /*@Test","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"NatLeong"},"content":" public void parse_validArgs_returnsReadCommand() {","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"NatLeong"},"content":" }*/","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"NatLeong"},"content":"}","lastModifiedDate":"2024-03-22"}],"authorContributionMap":{"NatLeong":20}},{"path":"src/test/java/seedu/address/logic/parser/UpdateCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"alex-setyawan"},"content":"/*","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.logic.commands.UpdateCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.logic.commands.UpdateCommand.UpdatePersonDescriptor;","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.testutil.UpdatePersonDescriptorBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"alex-setyawan"},"content":"*/","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"alex-setyawan"},"content":"public class UpdateCommandParserTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"alex-setyawan"},"content":" /*","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" private static final String TAG_EMPTY \u003d \" \" + PREFIX_TAG;","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"alex-setyawan"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, UpdateCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"alex-setyawan"},"content":" private UpdateCommandParser parser \u003d new UpdateCommandParser();","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"alex-setyawan"},"content":" assertParseFailure(parser, \"1\", UpdateCommand.MESSAGE_NOT_UPDATED);","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_ADDRESS_DESC, Address.MESSAGE_CONSTRAINTS); // invalid address","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"-"},"content":" // while parsing {@code PREFIX_TAG} alone will reset the tags of the {@code Person} being edited,","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"-"},"content":" // parsing it together with a valid tag results in error","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_DESC_HUSBAND + TAG_EMPTY, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_EMPTY + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-20"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_EMPTY + TAG_DESC_FRIEND + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":101,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2024-03-20"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_ADDRESS_AMY + VALID_PHONE_AMY,","lastModifiedDate":"2024-03-20"},{"lineNumber":103,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2024-03-20"},{"lineNumber":108,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-20"},{"lineNumber":109,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2024-03-20"},{"lineNumber":110,"author":{"gitId":"-"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + NAME_DESC_AMY + TAG_DESC_FRIEND;","lastModifiedDate":"2024-03-20"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":112,"author":{"gitId":"alex-setyawan"},"content":" UpdatePersonDescriptor descriptor \u003d new UpdatePersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-03-20"},{"lineNumber":113,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2024-03-20"},{"lineNumber":114,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":115,"author":{"gitId":"alex-setyawan"},"content":" UpdateCommand expectedCommand \u003d new UpdateCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-20"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":121,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2024-03-20"},{"lineNumber":122,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-20"},{"lineNumber":123,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":125,"author":{"gitId":"alex-setyawan"},"content":" UpdatePersonDescriptor descriptor \u003d new UpdatePersonDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-20"},{"lineNumber":126,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":127,"author":{"gitId":"alex-setyawan"},"content":" UpdateCommand expectedCommand \u003d new UpdateCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-20"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2024-03-20"},{"lineNumber":134,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2024-03-20"},{"lineNumber":135,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2024-03-20"},{"lineNumber":136,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":137,"author":{"gitId":"alex-setyawan"},"content":" UpdatePersonDescriptor descriptor \u003d new UpdatePersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":138,"author":{"gitId":"alex-setyawan"},"content":" UpdateCommand expectedCommand \u003d new UpdateCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-20"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":141,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2024-03-20"},{"lineNumber":142,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":143,"author":{"gitId":"alex-setyawan"},"content":" descriptor \u003d new UpdatePersonDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":144,"author":{"gitId":"alex-setyawan"},"content":" expectedCommand \u003d new UpdateCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-20"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":147,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2024-03-20"},{"lineNumber":148,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":149,"author":{"gitId":"alex-setyawan"},"content":" descriptor \u003d new UpdatePersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":150,"author":{"gitId":"alex-setyawan"},"content":" expectedCommand \u003d new UpdateCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":151,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-20"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":153,"author":{"gitId":"-"},"content":" // address","lastModifiedDate":"2024-03-20"},{"lineNumber":154,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + ADDRESS_DESC_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":155,"author":{"gitId":"alex-setyawan"},"content":" descriptor \u003d new UpdatePersonDescriptorBuilder().withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":156,"author":{"gitId":"alex-setyawan"},"content":" expectedCommand \u003d new UpdateCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-20"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":159,"author":{"gitId":"-"},"content":" // tags","lastModifiedDate":"2024-03-20"},{"lineNumber":160,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + TAG_DESC_FRIEND;","lastModifiedDate":"2024-03-20"},{"lineNumber":161,"author":{"gitId":"alex-setyawan"},"content":" descriptor \u003d new UpdatePersonDescriptorBuilder().withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":162,"author":{"gitId":"alex-setyawan"},"content":" expectedCommand \u003d new UpdateCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":163,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-20"},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":166,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":167,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2024-03-20"},{"lineNumber":168,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2024-03-20"},{"lineNumber":169,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2024-03-20"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":171,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2024-03-20"},{"lineNumber":172,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-20"},{"lineNumber":173,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":175,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2024-03-20"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":177,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2024-03-20"},{"lineNumber":178,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2024-03-20"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":180,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2024-03-20"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":182,"author":{"gitId":"-"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2024-03-20"},{"lineNumber":183,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2024-03-20"},{"lineNumber":184,"author":{"gitId":"-"},"content":" + TAG_DESC_FRIEND + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + TAG_DESC_FRIEND","lastModifiedDate":"2024-03-20"},{"lineNumber":185,"author":{"gitId":"-"},"content":" + PHONE_DESC_BOB + ADDRESS_DESC_BOB + EMAIL_DESC_BOB + TAG_DESC_HUSBAND;","lastModifiedDate":"2024-03-20"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":187,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2024-03-20"},{"lineNumber":188,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2024-03-20"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":190,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2024-03-20"},{"lineNumber":191,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2024-03-20"},{"lineNumber":192,"author":{"gitId":"-"},"content":" + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2024-03-20"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":194,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2024-03-20"},{"lineNumber":195,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2024-03-20"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":198,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":199,"author":{"gitId":"-"},"content":" public void parse_resetTags_success() {","lastModifiedDate":"2024-03-20"},{"lineNumber":200,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2024-03-20"},{"lineNumber":201,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_EMPTY;","lastModifiedDate":"2024-03-20"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":203,"author":{"gitId":"alex-setyawan"},"content":" UpdatePersonDescriptor descriptor \u003d new UpdatePersonDescriptorBuilder().withTags().build();","lastModifiedDate":"2024-03-20"},{"lineNumber":204,"author":{"gitId":"alex-setyawan"},"content":" UpdateCommand expectedCommand \u003d new UpdateCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":206,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-20"},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":208,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":209,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"alex-setyawan":27,"-":182}},{"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.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":"-"},"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":"laney0808"},"content":" private final ImmuniMate addressBook \u003d new ImmuniMate();","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" ImmuniMate newData \u003d getTypicalAddressBook();","lastModifiedDate":"2024-03-20"},{"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":"jovantanyk"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-03-18"},{"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":"laney0808"},"content":" ImmuniMateStub newData \u003d new ImmuniMateStub(newPersons);","lastModifiedDate":"2024-03-20"},{"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":"jovantanyk"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-03-18"},{"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":"laney0808"},"content":" String expected \u003d ImmuniMate.class.getCanonicalName() + \"{persons\u003d\" + addressBook.getPersonList() + \"}\";","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" private static class ImmuniMateStub implements ReadOnlyImmuniMate {","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" ImmuniMateStub(Collection\u003cPerson\u003e persons) {","lastModifiedDate":"2024-03-20"},{"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":{"jovantanyk":2,"laney0808":6,"-":99}},{"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":"-"},"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":"laney0808"},"content":" assertEquals(new ImmuniMate(), new ImmuniMate(modelManager.getImmuniMate()));","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setImmunimateFilePath(null));","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" modelManager.setImmunimateFilePath(path);","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"laney0808"},"content":" assertEquals(path, modelManager.getImmunimateFilePath());","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" ImmuniMate addressBook \u003d new AddressBookBuilder().withPerson(ALICE).withPerson(BENSON).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":99,"author":{"gitId":"laney0808"},"content":" ImmuniMate differentAddressBook \u003d new ImmuniMate();","lastModifiedDate":"2024-03-20"},{"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":"jovantanyk"},"content":" String[] keywords \u003d ALICE.getName().toString().split(\"\\\\s+\");","lastModifiedDate":"2024-03-18"},{"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":{"jovantanyk":1,"laney0808":6,"-":125}},{"path":"src/test/java/seedu/address/model/person/AllergiesTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"alex-setyawan"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"alex-setyawan"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"alex-setyawan"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"alex-setyawan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"alex-setyawan"},"content":"public class AllergiesTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"alex-setyawan"},"content":" /* commented as Allergies can be null, and doesn\u0027t have regex","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"alex-setyawan"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"alex-setyawan"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"alex-setyawan"},"content":" assertThrows(NullPointerException.class, () -\u003e new Allergies(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"alex-setyawan"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"alex-setyawan"},"content":" public void constructor_invalidAllergies_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"alex-setyawan"},"content":" String invalidAllergies \u003d \"\";","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"alex-setyawan"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Allergies(invalidAllergies));","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"alex-setyawan"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"alex-setyawan"},"content":" public void equals() {","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"alex-setyawan"},"content":" Allergies allergies \u003d new Allergies(\"Valid Allergy\");","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"alex-setyawan"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"alex-setyawan"},"content":" assertTrue(allergies.equals(new Allergies(\"Valid Allergy\")));","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"alex-setyawan"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"alex-setyawan"},"content":" assertTrue(allergies.equals(allergies));","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"alex-setyawan"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(allergies.equals(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"alex-setyawan"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(allergies.equals(5.0f));","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"alex-setyawan"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(allergies.equals(new Allergies(\"Other Valid Allergy\")));","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"alex-setyawan"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"alex-setyawan":42}},{"path":"src/test/java/seedu/address/model/person/BloodTypeTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"alex-setyawan"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"jovantanyk"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"alex-setyawan"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"jovantanyk"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"alex-setyawan"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"alex-setyawan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"alex-setyawan"},"content":"public class BloodTypeTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"alex-setyawan"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"alex-setyawan"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"jovantanyk"},"content":" assertThrows(NullPointerException.class, () -\u003e new BloodType(null));","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"alex-setyawan"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"alex-setyawan"},"content":" public void constructor_invalidAddress_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"jovantanyk"},"content":" String invalidBloodType \u003d \"ABB-\";","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"jovantanyk"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new BloodType(invalidBloodType));","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"alex-setyawan"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"alex-setyawan"},"content":" public void equals() {","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"jovantanyk"},"content":" BloodType bloodType \u003d new BloodType(\"A+\");","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"alex-setyawan"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"jovantanyk"},"content":" assertEquals(bloodType, new BloodType(\"A+\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"alex-setyawan"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"jovantanyk"},"content":" assertEquals(bloodType, bloodType);","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"alex-setyawan"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"jovantanyk"},"content":" assertNotEquals(null, bloodType);","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"alex-setyawan"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"jovantanyk"},"content":" assertNotEquals(5.0f, bloodType);","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"jovantanyk"},"content":" // different rh type -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"jovantanyk"},"content":" assertNotEquals(bloodType, new BloodType(\"A-\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"jovantanyk"},"content":" // different letter type -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"jovantanyk"},"content":" assertFalse(bloodType.equals(new BloodType(\"B+\")));","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"alex-setyawan"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"alex-setyawan":31,"jovantanyk":14}},{"path":"src/test/java/seedu/address/model/person/ConditionTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"alex-setyawan"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"alex-setyawan"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"alex-setyawan"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"alex-setyawan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"alex-setyawan"},"content":"public class ConditionTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"alex-setyawan"},"content":" /* commented as Condition can be null, and doesn\u0027t have regex","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"alex-setyawan"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"alex-setyawan"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"alex-setyawan"},"content":" assertThrows(NullPointerException.class, () -\u003e new Condition(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"alex-setyawan"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"alex-setyawan"},"content":" public void constructor_invalidAddress_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"alex-setyawan"},"content":" String invalidCondition \u003d \"\";","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"alex-setyawan"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Condition(invalidCondition));","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"alex-setyawan"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"alex-setyawan"},"content":" public void equals() {","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"alex-setyawan"},"content":" Condition condition \u003d new Condition(\"Valid Condition\");","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"alex-setyawan"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"alex-setyawan"},"content":" assertTrue(condition.equals(new Condition(\"Valid Condition\")));","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"alex-setyawan"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"alex-setyawan"},"content":" assertTrue(condition.equals(condition));","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"alex-setyawan"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(condition.equals(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"alex-setyawan"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(condition.equals(5.0f));","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"alex-setyawan"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(condition.equals(new Condition(\"Other Valid Condition\")));","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"alex-setyawan"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"alex-setyawan":42}},{"path":"src/test/java/seedu/address/model/person/CountryTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"alex-setyawan"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"alex-setyawan"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"alex-setyawan"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"alex-setyawan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"alex-setyawan"},"content":"public class CountryTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"alex-setyawan"},"content":" /* commented as Allergies can be null, and doesn\u0027t have regex","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"alex-setyawan"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"alex-setyawan"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"alex-setyawan"},"content":" assertThrows(NullPointerException.class, () -\u003e new Country(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"alex-setyawan"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"alex-setyawan"},"content":" public void constructor_invalidAddress_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"alex-setyawan"},"content":" String invalidCountry \u003d \"\";","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"alex-setyawan"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Condition(invalidCountry));","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"alex-setyawan"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"alex-setyawan"},"content":" public void equals() {","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"alex-setyawan"},"content":" Country country \u003d new Country(\"Valid Country\");","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"alex-setyawan"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"alex-setyawan"},"content":" assertTrue(country.equals(new Country(\"Valid Country\")));","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"alex-setyawan"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"alex-setyawan"},"content":" assertTrue(country.equals(country));","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"alex-setyawan"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(country.equals(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"alex-setyawan"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(country.equals(5.0f));","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"alex-setyawan"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(country.equals(new Country(\"Other Valid Country\")));","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"alex-setyawan"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"alex-setyawan":42}},{"path":"src/test/java/seedu/address/model/person/DateOfAdmissionTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"alex-setyawan"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"alex-setyawan"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"alex-setyawan"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"alex-setyawan"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"alex-setyawan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"alex-setyawan"},"content":"public class DateOfAdmissionTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"alex-setyawan"},"content":" /* commented as DateOfAdmission can be null, and doesn\u0027t have regex","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"alex-setyawan"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"alex-setyawan"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"alex-setyawan"},"content":" assertThrows(NullPointerException.class, () -\u003e new DateOfAdmission(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"alex-setyawan"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"alex-setyawan"},"content":" public void constructor_invalidAddress_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"alex-setyawan"},"content":" String invalidDate \u003d \"\";","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"alex-setyawan"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new DateOfAdmission(invalidDate));","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"alex-setyawan"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"alex-setyawan"},"content":" public void isValidAddress() {","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"alex-setyawan"},"content":" // null address","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"alex-setyawan"},"content":" assertThrows(NullPointerException.class, () -\u003e DateOfAdmission.isValidDateOfAdmission(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"alex-setyawan"},"content":" // invalid addresses","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(DateOfAdmission.isValidDateOfAdmission(\"\")); // empty string","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(DateOfAdmission.isValidDateOfAdmission(\" \")); // spaces only","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(DateOfAdmission.isValidDateOfAdmission(\"20231213\")); // numbers only","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(DateOfAdmission.isValidDateOfAdmission(\"2023-1213\")); // one slash","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(DateOfAdmission.isValidDateOfAdmission(\"202312-13\")); // one slash","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(DateOfAdmission.isValidDateOfAdmission(\"2023-1-3\")); // shortened date and month","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(DateOfAdmission.isValidDateOfAdmission(\"13-12-2023\")); // reverse format","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"alex-setyawan"},"content":" // valid addresses","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"alex-setyawan"},"content":" assertTrue(DateOfAdmission.isValidDateOfAdmission(\"2023-12-13\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"alex-setyawan"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"alex-setyawan"},"content":" public void equals() {","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"alex-setyawan"},"content":" DateOfAdmission date \u003d new DateOfAdmission(\"2020-12-05\");","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"alex-setyawan"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"alex-setyawan"},"content":" assertTrue(date.equals(new DateOfAdmission(\"2020-12-05\")));","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"alex-setyawan"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"alex-setyawan"},"content":" assertTrue(date.equals(date));","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"alex-setyawan"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(date.equals(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"alex-setyawan"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(date.equals(5.0f));","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"alex-setyawan"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(date.equals(new DateOfAdmission(\"2023-12-13\")));","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"alex-setyawan"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"alex-setyawan":61}},{"path":"src/test/java/seedu/address/model/person/DateOfBirthTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"alex-setyawan"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"alex-setyawan"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"alex-setyawan"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"alex-setyawan"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"alex-setyawan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"alex-setyawan"},"content":"public class DateOfBirthTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"alex-setyawan"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"alex-setyawan"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"alex-setyawan"},"content":" assertThrows(NullPointerException.class, () -\u003e new DateOfBirth(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"alex-setyawan"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"alex-setyawan"},"content":" public void constructor_invalidAddress_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"alex-setyawan"},"content":" String invalidDate \u003d \"\";","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"alex-setyawan"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new DateOfBirth(invalidDate));","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"alex-setyawan"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"alex-setyawan"},"content":" public void isValidAddress() {","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"alex-setyawan"},"content":" // null address","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"alex-setyawan"},"content":" assertThrows(NullPointerException.class, () -\u003e DateOfAdmission.isValidDateOfAdmission(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"alex-setyawan"},"content":" // invalid addresses","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(DateOfAdmission.isValidDateOfAdmission(\"\")); // empty string","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(DateOfAdmission.isValidDateOfAdmission(\" \")); // spaces only","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(DateOfAdmission.isValidDateOfAdmission(\"20231213\")); // numbers only","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(DateOfAdmission.isValidDateOfAdmission(\"2023-1213\")); // one slash","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(DateOfAdmission.isValidDateOfAdmission(\"202312-13\")); // one slash","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(DateOfAdmission.isValidDateOfAdmission(\"2023-1-3\")); // shortened date and month","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(DateOfAdmission.isValidDateOfAdmission(\"13-12-2023\")); // reverse format","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"alex-setyawan"},"content":" // valid addresses","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"alex-setyawan"},"content":" assertTrue(DateOfAdmission.isValidDateOfAdmission(\"2023-12-13\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"alex-setyawan"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"alex-setyawan"},"content":" public void equals() {","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"alex-setyawan"},"content":" DateOfBirth date \u003d new DateOfBirth(\"2020-12-13\");","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"alex-setyawan"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"alex-setyawan"},"content":" assertTrue(date.equals(new DateOfBirth(\"2020-12-13\")));","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"alex-setyawan"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"alex-setyawan"},"content":" assertTrue(date.equals(date));","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"alex-setyawan"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(date.equals(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"alex-setyawan"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(date.equals(5.0f));","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"alex-setyawan"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(date.equals(new DateOfBirth(\"2023-12-13\")));","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"alex-setyawan"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"alex-setyawan":59}},{"path":"src/test/java/seedu/address/model/person/DiagnosisTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"alex-setyawan"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"alex-setyawan"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"alex-setyawan"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"alex-setyawan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"alex-setyawan"},"content":"public class DiagnosisTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"alex-setyawan"},"content":" /* commented as DateOfAdmission can be null, and doesn\u0027t have regex","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"alex-setyawan"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"alex-setyawan"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"alex-setyawan"},"content":" assertThrows(NullPointerException.class, () -\u003e new Diagnosis(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"alex-setyawan"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"alex-setyawan"},"content":" public void constructor_invalidAddress_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"alex-setyawan"},"content":" String invalidDiagnosis \u003d \"\";","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"alex-setyawan"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Diagnosis(invalidDiagnosis));","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"alex-setyawan"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"alex-setyawan"},"content":" public void equals() {","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"alex-setyawan"},"content":" Diagnosis diagnosis \u003d new Diagnosis(\"Valid Diagnosis\");","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"alex-setyawan"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"alex-setyawan"},"content":" assertTrue(diagnosis.equals(new Diagnosis(\"Valid Diagnosis\")));","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"alex-setyawan"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"alex-setyawan"},"content":" assertTrue(diagnosis.equals(diagnosis));","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"alex-setyawan"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(diagnosis.equals(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"alex-setyawan"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(diagnosis.equals(5.0f));","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"alex-setyawan"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(diagnosis.equals(new Diagnosis(\"Other Valid Diagnosis\")));","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"alex-setyawan"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"alex-setyawan":42}},{"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":"-"},"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":"-"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").withPhone(\"12345\")","lastModifiedDate":"2017-06-12"},{"lineNumber":74,"author":{"gitId":"jovantanyk"},"content":" .withAddress(\"Main Street\").build()));","lastModifiedDate":"2024-03-18"},{"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":{"jovantanyk":1,"-":84}},{"path":"src/test/java/seedu/address/model/person/NricTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"alex-setyawan"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"alex-setyawan"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"alex-setyawan"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"alex-setyawan"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"alex-setyawan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"alex-setyawan"},"content":"public class NricTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"alex-setyawan"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"alex-setyawan"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"alex-setyawan"},"content":" assertThrows(NullPointerException.class, () -\u003e new Nric(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"alex-setyawan"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"alex-setyawan"},"content":" public void constructor_invalidAddress_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"alex-setyawan"},"content":" String invalidNric \u003d \"\";","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"alex-setyawan"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Nric(invalidNric));","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"alex-setyawan"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"alex-setyawan"},"content":" public void isValidAddress() {","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"alex-setyawan"},"content":" // null address","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"alex-setyawan"},"content":" assertThrows(NullPointerException.class, () -\u003e Nric.isValidNric(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"alex-setyawan"},"content":" // invalid addresses","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(Nric.isValidNric(\"\")); // empty string","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(Nric.isValidNric(\" \")); // spaces only","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(Nric.isValidNric(\"0312345\")); // numbers only","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(Nric.isValidNric(\"S0312345\")); // without first letter","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(Nric.isValidNric(\"0312345A\")); // without last letter","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(Nric.isValidNric(\"T03123425A\")); // too many numbers","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(Nric.isValidNric(\"T031234A\")); // too few numbers","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(Nric.isValidNric(\"D03123452S\")); // invalid first number","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"alex-setyawan"},"content":" // valid addresses","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"alex-setyawan"},"content":" assertTrue(Nric.isValidNric(\"T0912345A\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"alex-setyawan"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"alex-setyawan"},"content":" public void equals() {","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"alex-setyawan"},"content":" Nric nric \u003d new Nric(\"T0412345G\");","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"alex-setyawan"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"alex-setyawan"},"content":" assertTrue(nric.equals(new Nric(\"T0412345G\")));","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"alex-setyawan"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"alex-setyawan"},"content":" assertTrue(nric.equals(nric));","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"alex-setyawan"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(nric.equals(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"alex-setyawan"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(nric.equals(5.0f));","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"alex-setyawan"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(nric.equals(new Nric(\"T0412345H\")));","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"alex-setyawan"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"alex-setyawan":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.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_ADDRESS_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"laney0808"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NRIC_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"laney0808"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SEX_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"laney0808"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_STATUS_BOB;","lastModifiedDate":"2024-03-21"},{"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":"laney0808"},"content":" // same nric, all other attributes different -\u003e returns true","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"jovantanyk"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"laney0808"},"content":" .withAddress(VALID_ADDRESS_BOB).withName(VALID_NAME_BOB).withSex(VALID_SEX_BOB)","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"laney0808"},"content":" .withStatus(VALID_STATUS_BOB).build();","lastModifiedDate":"2024-03-21"},{"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":"laney0808"},"content":" // different NRIC, all other attributes same -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"jovantanyk"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withNric(VALID_NRIC_BOB).build();","lastModifiedDate":"2024-03-22"},{"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":"laney0808"},"content":" // NRIC differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"laney0808"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withNric(VALID_NRIC_BOB.toLowerCase()).build();","lastModifiedDate":"2024-03-21"},{"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":"laney0808"},"content":" // NRIC has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"laney0808"},"content":" String nricWithTrailingSpaces \u003d VALID_NRIC_BOB + \" \";","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"laney0808"},"content":" editedBob \u003d new PersonBuilder(BOB).withNric(nricWithTrailingSpaces).build();","lastModifiedDate":"2024-03-21"},{"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":"laney0808"},"content":" // different nric -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"laney0808"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withNric(VALID_NRIC_BOB).build();","lastModifiedDate":"2024-03-21"},{"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 address -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_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":"laney0808"},"content":" //TODO: edit both test case and code","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"alex-setyawan"},"content":" /*","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"laney0808"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{nric\u003d\" + ALICE.getNric() + \", name\u003d\" + ALICE.getName()","lastModifiedDate":"2024-03-21"},{"lineNumber":91,"author":{"gitId":"laney0808"},"content":" + \", status\u003d\" + ALICE.getStatus() + \"}\";","lastModifiedDate":"2024-03-21"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":94,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":95,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"alex-setyawan":2,"jovantanyk":2,"laney0808":17,"-":74}},{"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(\"93121534\"));","lastModifiedDate":"2017-01-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertTrue(Phone.isValidPhone(\"124293842033123\")); // long phone numbers","lastModifiedDate":"2017-01-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"alex-setyawan"},"content":" Phone phone \u003d new Phone(\"98765432\");","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"alex-setyawan"},"content":" assertTrue(phone.equals(new Phone(\"98765432\")));","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertTrue(phone.equals(phone));","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(phone.equals(new Phone(\"92345678\")));","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"alex-setyawan":3,"-":56}},{"path":"src/test/java/seedu/address/model/person/SexTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"alex-setyawan"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"alex-setyawan"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"alex-setyawan"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"alex-setyawan"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"alex-setyawan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"alex-setyawan"},"content":"public class SexTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"alex-setyawan"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"alex-setyawan"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"alex-setyawan"},"content":" assertThrows(NullPointerException.class, () -\u003e new Sex(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"alex-setyawan"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"alex-setyawan"},"content":" public void constructor_invalidAddress_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"alex-setyawan"},"content":" String invalidSex \u003d \"\";","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"alex-setyawan"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Sex(invalidSex));","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"alex-setyawan"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"alex-setyawan"},"content":" public void equals() {","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"alex-setyawan"},"content":" Sex sex \u003d new Sex(\"M\");","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"alex-setyawan"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"alex-setyawan"},"content":" assertTrue(sex.equals(new Sex(\"M\")));","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"alex-setyawan"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"alex-setyawan"},"content":" assertTrue(sex.equals(sex));","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"alex-setyawan"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(sex.equals(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"alex-setyawan"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(sex.equals(5.0f));","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"alex-setyawan"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(sex.equals(new Sex(\"F\")));","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"alex-setyawan"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"alex-setyawan":41}},{"path":"src/test/java/seedu/address/model/person/StatusTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"alex-setyawan"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"alex-setyawan"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"alex-setyawan"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"alex-setyawan"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"alex-setyawan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"alex-setyawan"},"content":"public class StatusTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"alex-setyawan"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"alex-setyawan"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"alex-setyawan"},"content":" assertThrows(NullPointerException.class, () -\u003e new Status(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"alex-setyawan"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"alex-setyawan"},"content":" public void constructor_invalidAddress_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"alex-setyawan"},"content":" String invalidStatus \u003d \"\";","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"alex-setyawan"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Sex(invalidStatus));","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"alex-setyawan"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"alex-setyawan"},"content":" public void equals() {","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"alex-setyawan"},"content":" Status status \u003d new Status(\"HEALTHY\");","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"alex-setyawan"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"alex-setyawan"},"content":" assertTrue(status.equals(new Status(\"HEALTHY\")));","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"alex-setyawan"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"alex-setyawan"},"content":" assertTrue(status.equals(status));","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"alex-setyawan"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(status.equals(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"alex-setyawan"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(status.equals(5.0f));","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"alex-setyawan"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(status.equals(new Status(\"UNWELL\")));","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"alex-setyawan"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"alex-setyawan":41}},{"path":"src/test/java/seedu/address/model/person/SymptomTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"alex-setyawan"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"alex-setyawan"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"alex-setyawan"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"alex-setyawan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"alex-setyawan"},"content":"public class SymptomTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"alex-setyawan"},"content":" /* commented as DateOfAdmission can be null, and doesn\u0027t have regex","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"alex-setyawan"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"alex-setyawan"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"alex-setyawan"},"content":" assertThrows(NullPointerException.class, () -\u003e new Symptom(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"alex-setyawan"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"alex-setyawan"},"content":" public void constructor_invalidAddress_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"alex-setyawan"},"content":" String invalidSymptom \u003d \"\";","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"alex-setyawan"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Sex(invalidSymptom));","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"alex-setyawan"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"alex-setyawan"},"content":" public void equals() {","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"alex-setyawan"},"content":" Symptom symptom \u003d new Symptom(\"Valid Symptom\");","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"alex-setyawan"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"alex-setyawan"},"content":" assertTrue(symptom.equals(new Symptom(\"Valid Symptom\")));","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"alex-setyawan"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"alex-setyawan"},"content":" assertTrue(symptom.equals(symptom));","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"alex-setyawan"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(symptom.equals(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"alex-setyawan"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(symptom.equals(5.0f));","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"alex-setyawan"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(symptom.equals(new Symptom(\"Other Valid Symptom\")));","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"alex-setyawan"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"alex-setyawan":42}},{"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.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":"-"},"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":"-"},"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":"jovantanyk"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-03-18"},{"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":"jovantanyk"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-03-18"},{"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":{"jovantanyk":2,"-":172}},{"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 org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"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.Address;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"NatLeong"},"content":"import seedu.address.model.person.DateOfBirth;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"NatLeong"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"NatLeong"},"content":"import seedu.address.model.person.Sex;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"NatLeong"},"content":"import seedu.address.model.person.Status;","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"jovantanyk"},"content":" private static final String INVALID_NRIC \u003d \"T-1\";","lastModifiedDate":"2024-03-18"},{"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":"jovantanyk"},"content":" private static final String INVALID_DOB \u003d \"MARCH 10th 2021\";","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"jovantanyk"},"content":" private static final String INVALID_SEX \u003d \"Male\";","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"jovantanyk"},"content":" private static final String INVALID_STATUS \u003d \"DYING\";","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"jovantanyk"},"content":" private static final String VALID_NRIC \u003d BENSON.getNric().toString();","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().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":"jovantanyk"},"content":" private static final String VALID_DOB \u003d \"2022-01-01\";","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"jovantanyk"},"content":" private static final String VALID_SEX \u003d BENSON.getSex().toString();","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"jovantanyk"},"content":" private static final String VALID_STATUS \u003d BENSON.getStatus().toString();","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"NatLeong"},"content":" private static final String VALID_EMAIL \u003d \"benson123@gmail.com\";","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"NatLeong"},"content":" private static final String VALID_COUNTRY \u003d \"Singapore\";","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"NatLeong"},"content":" private static final String VALID_ALLERGIES \u003d \"Peanuts\";","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"NatLeong"},"content":" private static final String VALID_BLOODTYPE \u003d \"A+\";","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"NatLeong"},"content":" private static final String VALID_CONDITION \u003d \"Diabetes\";","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"NatLeong"},"content":" private static final String VALID_DOA \u003d \"2024-01-01\";","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"NatLeong"},"content":" private static final String VALID_DIAGNOSIS \u003d \"Covid\";","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"NatLeong"},"content":" private static final String VALID_SYMPTOM \u003d \"Cough\";","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","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":"jovantanyk"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"jovantanyk"},"content":" public void toModelType_invalidNric_throwsIllegalValueException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"jovantanyk"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"jovantanyk"},"content":" new JsonAdaptedPerson(INVALID_NRIC, VALID_NAME, VALID_PHONE,","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"NatLeong"},"content":" VALID_ADDRESS, VALID_DOB, VALID_SEX, VALID_STATUS, VALID_EMAIL, VALID_COUNTRY,","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"NatLeong"},"content":" VALID_ALLERGIES, VALID_BLOODTYPE, VALID_CONDITION, VALID_DOA, VALID_DIAGNOSIS,","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"NatLeong"},"content":" VALID_SYMPTOM);","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"jovantanyk"},"content":" String expectedMessage \u003d Nric.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"jovantanyk"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"jovantanyk"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"jovantanyk"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"jovantanyk"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"jovantanyk"},"content":" public void toModelType_nullNric_throwsIllegalValueException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"jovantanyk"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"jovantanyk"},"content":" new JsonAdaptedPerson(null, VALID_NAME, VALID_PHONE,","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"NatLeong"},"content":" VALID_ADDRESS, VALID_DOB, VALID_SEX, VALID_STATUS, VALID_EMAIL, VALID_COUNTRY,","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"NatLeong"},"content":" VALID_ALLERGIES, VALID_BLOODTYPE, VALID_CONDITION, VALID_DOA, VALID_DIAGNOSIS,","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"NatLeong"},"content":" VALID_SYMPTOM);","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"jovantanyk"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Nric.class.getSimpleName());","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"jovantanyk"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"jovantanyk"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"jovantanyk"},"content":" new JsonAdaptedPerson(VALID_NRIC, INVALID_NAME, VALID_PHONE,","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"NatLeong"},"content":" VALID_ADDRESS, VALID_DOB, VALID_SEX, VALID_STATUS, VALID_EMAIL, VALID_COUNTRY,","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"NatLeong"},"content":" VALID_ALLERGIES, VALID_BLOODTYPE, VALID_CONDITION, VALID_DOA, VALID_DIAGNOSIS,","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"NatLeong"},"content":" VALID_SYMPTOM);","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.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_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"jovantanyk"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"jovantanyk"},"content":" new JsonAdaptedPerson(VALID_NRIC, null, VALID_PHONE,","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"NatLeong"},"content":" VALID_ADDRESS, VALID_DOB, VALID_SEX, VALID_STATUS, VALID_EMAIL, VALID_COUNTRY,","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"NatLeong"},"content":" VALID_ALLERGIES, VALID_BLOODTYPE, VALID_CONDITION, VALID_DOA, VALID_DIAGNOSIS,","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"NatLeong"},"content":" VALID_SYMPTOM);","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.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_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"jovantanyk"},"content":" new JsonAdaptedPerson(VALID_NRIC, VALID_NAME, INVALID_PHONE,","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"NatLeong"},"content":" VALID_ADDRESS, VALID_DOB, VALID_SEX, VALID_STATUS, VALID_EMAIL, VALID_COUNTRY,","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"NatLeong"},"content":" VALID_ALLERGIES, VALID_BLOODTYPE, VALID_CONDITION, VALID_DOA, VALID_DIAGNOSIS,","lastModifiedDate":"2024-03-20"},{"lineNumber":99,"author":{"gitId":"NatLeong"},"content":" VALID_SYMPTOM);","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.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":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"jovantanyk"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":107,"author":{"gitId":"jovantanyk"},"content":" new JsonAdaptedPerson(VALID_NRIC, VALID_NAME, null,","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"NatLeong"},"content":" VALID_ADDRESS, VALID_DOB, VALID_SEX, VALID_STATUS, VALID_EMAIL, VALID_COUNTRY,","lastModifiedDate":"2024-03-20"},{"lineNumber":109,"author":{"gitId":"NatLeong"},"content":" VALID_ALLERGIES, VALID_BLOODTYPE, VALID_CONDITION, VALID_DOA, VALID_DIAGNOSIS,","lastModifiedDate":"2024-03-20"},{"lineNumber":110,"author":{"gitId":"NatLeong"},"content":" VALID_SYMPTOM);","lastModifiedDate":"2024-03-20"},{"lineNumber":111,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-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":"2018-08-13"},{"lineNumber":116,"author":{"gitId":"jovantanyk"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":118,"author":{"gitId":"jovantanyk"},"content":" new JsonAdaptedPerson(VALID_NRIC, VALID_NAME, VALID_PHONE,","lastModifiedDate":"2024-03-18"},{"lineNumber":119,"author":{"gitId":"NatLeong"},"content":" INVALID_ADDRESS, VALID_DOB, VALID_SEX, VALID_STATUS, VALID_EMAIL, VALID_COUNTRY,","lastModifiedDate":"2024-03-20"},{"lineNumber":120,"author":{"gitId":"NatLeong"},"content":" VALID_ALLERGIES, VALID_BLOODTYPE, VALID_CONDITION, VALID_DOA, VALID_DIAGNOSIS,","lastModifiedDate":"2024-03-20"},{"lineNumber":121,"author":{"gitId":"NatLeong"},"content":" VALID_SYMPTOM);","lastModifiedDate":"2024-03-20"},{"lineNumber":122,"author":{"gitId":"jovantanyk"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-18"},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":127,"author":{"gitId":"jovantanyk"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":128,"author":{"gitId":"jovantanyk"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":129,"author":{"gitId":"jovantanyk"},"content":" new JsonAdaptedPerson(VALID_NRIC, VALID_NAME, VALID_PHONE,","lastModifiedDate":"2024-03-18"},{"lineNumber":130,"author":{"gitId":"NatLeong"},"content":" null, VALID_DOB, VALID_SEX, VALID_STATUS, VALID_EMAIL, VALID_COUNTRY,","lastModifiedDate":"2024-03-20"},{"lineNumber":131,"author":{"gitId":"NatLeong"},"content":" VALID_ALLERGIES, VALID_BLOODTYPE, VALID_CONDITION, VALID_DOA, VALID_DIAGNOSIS,","lastModifiedDate":"2024-03-20"},{"lineNumber":132,"author":{"gitId":"NatLeong"},"content":" VALID_SYMPTOM);","lastModifiedDate":"2024-03-20"},{"lineNumber":133,"author":{"gitId":"jovantanyk"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2024-03-18"},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-18"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":137,"author":{"gitId":"jovantanyk"},"content":" public void toModelType_invalidDob_throwsIllegalValueException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":138,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":139,"author":{"gitId":"jovantanyk"},"content":" new JsonAdaptedPerson(VALID_NRIC, VALID_NAME, VALID_PHONE,","lastModifiedDate":"2024-03-18"},{"lineNumber":140,"author":{"gitId":"NatLeong"},"content":" VALID_ADDRESS, INVALID_DOB, VALID_SEX, VALID_STATUS, VALID_EMAIL, VALID_COUNTRY,","lastModifiedDate":"2024-03-20"},{"lineNumber":141,"author":{"gitId":"NatLeong"},"content":" VALID_ALLERGIES, VALID_BLOODTYPE, VALID_CONDITION, VALID_DOA, VALID_DIAGNOSIS,","lastModifiedDate":"2024-03-20"},{"lineNumber":142,"author":{"gitId":"NatLeong"},"content":" VALID_SYMPTOM);","lastModifiedDate":"2024-03-20"},{"lineNumber":143,"author":{"gitId":"jovantanyk"},"content":" String expectedMessage \u003d DateOfBirth.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-18"},{"lineNumber":144,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":147,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":148,"author":{"gitId":"jovantanyk"},"content":" public void toModelType_nullDob_throwsIllegalValueException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":149,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":150,"author":{"gitId":"jovantanyk"},"content":" new JsonAdaptedPerson(VALID_NRIC, VALID_NAME, VALID_PHONE,","lastModifiedDate":"2024-03-18"},{"lineNumber":151,"author":{"gitId":"NatLeong"},"content":" VALID_ADDRESS, null, VALID_SEX, VALID_STATUS, VALID_EMAIL, VALID_COUNTRY,","lastModifiedDate":"2024-03-20"},{"lineNumber":152,"author":{"gitId":"NatLeong"},"content":" VALID_ALLERGIES, VALID_BLOODTYPE, VALID_CONDITION, VALID_DOA, VALID_DIAGNOSIS,","lastModifiedDate":"2024-03-20"},{"lineNumber":153,"author":{"gitId":"NatLeong"},"content":" VALID_SYMPTOM);","lastModifiedDate":"2024-03-20"},{"lineNumber":154,"author":{"gitId":"jovantanyk"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, DateOfBirth.class.getSimpleName());","lastModifiedDate":"2024-03-21"},{"lineNumber":155,"author":{"gitId":"jovantanyk"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-18"},{"lineNumber":156,"author":{"gitId":"jovantanyk"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":157,"author":{"gitId":"jovantanyk"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":158,"author":{"gitId":"jovantanyk"},"content":" public void toModelType_invalidSex_throwsIllegalValueException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":159,"author":{"gitId":"jovantanyk"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":160,"author":{"gitId":"jovantanyk"},"content":" new JsonAdaptedPerson(VALID_NRIC, VALID_NAME, VALID_PHONE,","lastModifiedDate":"2024-03-18"},{"lineNumber":161,"author":{"gitId":"NatLeong"},"content":" VALID_ADDRESS, VALID_DOB, INVALID_SEX, VALID_STATUS, VALID_EMAIL, VALID_COUNTRY,","lastModifiedDate":"2024-03-20"},{"lineNumber":162,"author":{"gitId":"NatLeong"},"content":" VALID_ALLERGIES, VALID_BLOODTYPE, VALID_CONDITION, VALID_DOA, VALID_DIAGNOSIS,","lastModifiedDate":"2024-03-20"},{"lineNumber":163,"author":{"gitId":"NatLeong"},"content":" VALID_SYMPTOM);","lastModifiedDate":"2024-03-20"},{"lineNumber":164,"author":{"gitId":"jovantanyk"},"content":" String expectedMessage \u003d Sex.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-18"},{"lineNumber":165,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":168,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":169,"author":{"gitId":"jovantanyk"},"content":" public void toModelType_nullSex_throwsIllegalValueException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":170,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":171,"author":{"gitId":"jovantanyk"},"content":" new JsonAdaptedPerson(VALID_NRIC, VALID_NAME, VALID_PHONE,","lastModifiedDate":"2024-03-18"},{"lineNumber":172,"author":{"gitId":"NatLeong"},"content":" VALID_ADDRESS, VALID_DOB, null, VALID_STATUS, VALID_EMAIL, VALID_COUNTRY,","lastModifiedDate":"2024-03-20"},{"lineNumber":173,"author":{"gitId":"NatLeong"},"content":" VALID_ALLERGIES, VALID_BLOODTYPE, VALID_CONDITION, VALID_DOA, VALID_DIAGNOSIS,","lastModifiedDate":"2024-03-20"},{"lineNumber":174,"author":{"gitId":"NatLeong"},"content":" VALID_SYMPTOM);","lastModifiedDate":"2024-03-20"},{"lineNumber":175,"author":{"gitId":"jovantanyk"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Sex.class.getSimpleName());","lastModifiedDate":"2024-03-21"},{"lineNumber":176,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":178,"author":{"gitId":"jovantanyk"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":179,"author":{"gitId":"jovantanyk"},"content":" public void toModelType_invalidStatus_throwsIllegalValueException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":180,"author":{"gitId":"jovantanyk"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":181,"author":{"gitId":"jovantanyk"},"content":" new JsonAdaptedPerson(VALID_NRIC, VALID_NAME, VALID_PHONE,","lastModifiedDate":"2024-03-18"},{"lineNumber":182,"author":{"gitId":"NatLeong"},"content":" VALID_ADDRESS, VALID_DOB, VALID_SEX, INVALID_STATUS, VALID_EMAIL, VALID_COUNTRY,","lastModifiedDate":"2024-03-20"},{"lineNumber":183,"author":{"gitId":"NatLeong"},"content":" VALID_ALLERGIES, VALID_BLOODTYPE, VALID_CONDITION, VALID_DOA, VALID_DIAGNOSIS,","lastModifiedDate":"2024-03-20"},{"lineNumber":184,"author":{"gitId":"NatLeong"},"content":" VALID_SYMPTOM);","lastModifiedDate":"2024-03-20"},{"lineNumber":185,"author":{"gitId":"jovantanyk"},"content":" String expectedMessage \u003d Status.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-18"},{"lineNumber":186,"author":{"gitId":"jovantanyk"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-18"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":189,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":190,"author":{"gitId":"jovantanyk"},"content":" public void toModelType_nullStatus_throwsIllegalValueException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":191,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":192,"author":{"gitId":"jovantanyk"},"content":" new JsonAdaptedPerson(VALID_NRIC, VALID_NAME, VALID_PHONE,","lastModifiedDate":"2024-03-18"},{"lineNumber":193,"author":{"gitId":"NatLeong"},"content":" VALID_ADDRESS, VALID_DOB, VALID_SEX, null, VALID_EMAIL, VALID_COUNTRY,","lastModifiedDate":"2024-03-20"},{"lineNumber":194,"author":{"gitId":"NatLeong"},"content":" VALID_ALLERGIES, VALID_BLOODTYPE, VALID_CONDITION, VALID_DOA, VALID_DIAGNOSIS,","lastModifiedDate":"2024-03-20"},{"lineNumber":195,"author":{"gitId":"NatLeong"},"content":" VALID_SYMPTOM);","lastModifiedDate":"2024-03-20"},{"lineNumber":196,"author":{"gitId":"jovantanyk"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Status.class.getSimpleName());","lastModifiedDate":"2024-03-21"},{"lineNumber":197,"author":{"gitId":"jovantanyk"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-18"},{"lineNumber":198,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":199,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"jovantanyk":62,"-":83,"NatLeong":54}},{"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":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.HOON;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.IDA;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2018-08-13"},{"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":"laney0808"},"content":"import seedu.address.model.ImmuniMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"laney0808"},"content":"import seedu.address.model.ReadOnlyImmuniMate;","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" private java.util.Optional\u003cReadOnlyImmuniMate\u003e readAddressBook(String filePath) throws Exception {","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":" public void readAddressBook_invalidPersonAddressBook_throwDataLoadingException() {","lastModifiedDate":"2023-06-14"},{"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":"-"},"content":" public void readAddressBook_invalidAndValidPersonAddressBook_throwDataLoadingException() {","lastModifiedDate":"2023-06-14"},{"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":"laney0808"},"content":" ImmuniMate original \u003d getTypicalAddressBook();","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" ReadOnlyImmuniMate readBack \u003d jsonAddressBookStorage.readAddressBook(filePath).get();","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"laney0808"},"content":" assertEquals(original, new ImmuniMate(readBack));","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":" original.addPerson(HOON);","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" original.removePerson(ALICE);","lastModifiedDate":"2018-08-13"},{"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":"laney0808"},"content":" assertEquals(original, new ImmuniMate(readBack));","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":" original.addPerson(IDA);","lastModifiedDate":"2018-08-13"},{"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":"laney0808"},"content":" assertEquals(original, new ImmuniMate(readBack));","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" private void saveAddressBook(ReadOnlyImmuniMate addressBook, String filePath) {","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" assertThrows(NullPointerException.class, () -\u003e saveAddressBook(new ImmuniMate(), null));","lastModifiedDate":"2024-03-20"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"laney0808":10,"-":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":"laney0808"},"content":"import seedu.address.model.ImmuniMate;","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" ImmuniMate addressBookFromFile \u003d dataFromFile.toModelType();","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"laney0808"},"content":" ImmuniMate typicalPersonsAddressBook \u003d TypicalPersons.getTypicalAddressBook();","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertEquals(addressBookFromFile, typicalPersonsAddressBook);","lastModifiedDate":"2018-08-13"},{"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":"-"},"content":" public void toModelType_invalidPersonFile_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2018-08-13"},{"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":"-"},"content":" public void toModelType_duplicatePersons_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2018-08-13"},{"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":"-"},"content":" assertThrows(IllegalValueException.class, JsonSerializableAddressBook.MESSAGE_DUPLICATE_PERSON,","lastModifiedDate":"2019-03-23"},{"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":{"laney0808":3,"-":44}},{"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":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"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":"laney0808"},"content":"import seedu.address.model.ImmuniMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"laney0808"},"content":"import seedu.address.model.ReadOnlyImmuniMate;","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" ImmuniMate original \u003d getTypicalAddressBook();","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" storageManager.saveAddressBook(original);","lastModifiedDate":"2016-09-28"},{"lineNumber":59,"author":{"gitId":"laney0808"},"content":" ReadOnlyImmuniMate retrieved \u003d storageManager.readAddressBook().get();","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"laney0808"},"content":" assertEquals(original, new ImmuniMate(retrieved));","lastModifiedDate":"2024-03-20"},{"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":{"laney0808":5,"-":63}},{"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":"laney0808"},"content":"import seedu.address.model.ImmuniMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"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":"-"},"content":" * {@code AddressBook ab \u003d new AddressBookBuilder().withPerson(\"John\", \"Doe\").build();}","lastModifiedDate":"2018-03-29"},{"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":"laney0808"},"content":" private ImmuniMate addressBook;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public AddressBookBuilder() {","lastModifiedDate":"2017-05-31"},{"lineNumber":16,"author":{"gitId":"laney0808"},"content":" addressBook \u003d new ImmuniMate();","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":19,"author":{"gitId":"laney0808"},"content":" public AddressBookBuilder(ImmuniMate addressBook) {","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":" * Adds a new {@code Person} to the {@code AddressBook} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public AddressBookBuilder withPerson(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":27,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2016-09-01"},{"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":"laney0808"},"content":" public ImmuniMate build() {","lastModifiedDate":"2024-03-20"},{"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":{"laney0808":5,"-":29}},{"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 seedu.address.model.person.Address;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.model.person.Allergies;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.model.person.BloodType;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.model.person.Condition;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.model.person.Country;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.model.person.DateOfAdmission;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.model.person.DateOfBirth;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.model.person.Diagnosis;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.model.person.Sex;","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.model.person.Status;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.model.person.Symptom;","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03"},{"lineNumber":24,"author":{"gitId":"alex-setyawan"},"content":" // Mandatory fields","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"laney0808"},"content":" public static final String DEFAULT_NRIC \u003d \"T1234567B\";","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05"},{"lineNumber":28,"author":{"gitId":"laney0808"},"content":" public static final String DEFAULT_DOB \u003d \"1998-07-03\";","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"jovantanyk"},"content":" public static final String DEFAULT_SEX \u003d \"M\";","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"alex-setyawan"},"content":" // Data fields","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05"},{"lineNumber":32,"author":{"gitId":"jovantanyk"},"content":" public static final String DEFAULT_STATUS \u003d \"HEALTHY\";","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"jovantanyk"},"content":" /*","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"jovantanyk"},"content":" public static final String DEFAULT_EMAIL \u003d \"test@email.com\";","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"alex-setyawan"},"content":" public static final String DEFAULT_ALLERGIES \u003d \"Peanuts\";","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"alex-setyawan"},"content":" public static final String[] DEFAULT_BLOODTYPE \u003d {\"A\", \"POSITIVE\"};","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"alex-setyawan"},"content":" public static final String DEFAULT_COUNTRY \u003d \"Singapore\";","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"alex-setyawan"},"content":" // Medical history","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"alex-setyawan"},"content":" public static final String DEFAULT_CONDITION \u003d \"High blood pressure\";","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"alex-setyawan"},"content":" public static final String DEFAULT_DOA \u003d \"2024-01-01\";","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"alex-setyawan"},"content":" public static final String DEFAULT_DIAGNOSIS \u003d \"Runny nose\";","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"alex-setyawan"},"content":" public static final String DEFAULT_SYMPTOM \u003d \"Sneezing, sniffing\";","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"jovantanyk"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"alex-setyawan"},"content":" // Mandatory fields","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"laney0808"},"content":" private Nric nric;","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":48,"author":{"gitId":"jovantanyk"},"content":" private DateOfBirth dateOfBirth;","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"jovantanyk"},"content":" private Sex sex;","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"alex-setyawan"},"content":" // Data fields","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"alex-setyawan"},"content":" private Allergies allergies;","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"alex-setyawan"},"content":" private BloodType bloodType;","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"alex-setyawan"},"content":" private Country country;","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"alex-setyawan"},"content":" private Email email;","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"alex-setyawan"},"content":" //Medical history","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"alex-setyawan"},"content":" private Condition condition;","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"alex-setyawan"},"content":" private DateOfAdmission dateOfAdmission;","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"alex-setyawan"},"content":" private Diagnosis diagnosis;","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"jovantanyk"},"content":" private Status status;","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"alex-setyawan"},"content":" private Symptom symptom;","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15"},{"lineNumber":67,"author":{"gitId":"laney0808"},"content":" nric \u003d new Nric(DEFAULT_NRIC);","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20"},{"lineNumber":69,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20"},{"lineNumber":70,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20"},{"lineNumber":71,"author":{"gitId":"jovantanyk"},"content":" dateOfBirth \u003d new DateOfBirth(DEFAULT_DOB);","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"jovantanyk"},"content":" sex \u003d new Sex(DEFAULT_SEX);","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"jovantanyk"},"content":" status \u003d new Status(DEFAULT_STATUS);","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"jovantanyk"},"content":" /*","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"alex-setyawan"},"content":" allergies \u003d new Allergies(DEFAULT_ALLERGIES);","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"alex-setyawan"},"content":" bloodType \u003d new BloodType(DEFAULT_BLOODTYPE[0], DEFAULT_BLOODTYPE[1]);","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"alex-setyawan"},"content":" country \u003d new Country(DEFAULT_COUNTRY);","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"alex-setyawan"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"alex-setyawan"},"content":" condition \u003d new Condition(DEFAULT_CONDITION);","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"alex-setyawan"},"content":" dateOfAdmission \u003d new DateOfAdmission(DEFAULT_DOA);","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"alex-setyawan"},"content":" diagnosis \u003d new Diagnosis(DEFAULT_DIAGNOSIS);","lastModifiedDate":"2024-03-19"},{"lineNumber":84,"author":{"gitId":"alex-setyawan"},"content":" symptom \u003d new Symptom(DEFAULT_SYMPTOM);","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"jovantanyk"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10"},{"lineNumber":92,"author":{"gitId":"alex-setyawan"},"content":" nric \u003d personToCopy.getNric();","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20"},{"lineNumber":94,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20"},{"lineNumber":95,"author":{"gitId":"jovantanyk"},"content":" dateOfBirth \u003d personToCopy.getDateOfBirth();","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"jovantanyk"},"content":" sex \u003d personToCopy.getSex();","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"alex-setyawan"},"content":" /*","lastModifiedDate":"2024-03-21"},{"lineNumber":99,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"alex-setyawan"},"content":" allergies \u003d personToCopy.getAllergies();","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"alex-setyawan"},"content":" bloodType \u003d personToCopy.getBloodType();","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"alex-setyawan"},"content":" country \u003d personToCopy.getCountry();","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"alex-setyawan"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"alex-setyawan"},"content":" condition \u003d personToCopy.getCondition();","lastModifiedDate":"2024-03-19"},{"lineNumber":106,"author":{"gitId":"alex-setyawan"},"content":" dateOfAdmission \u003d personToCopy.getDateOfAdmission();","lastModifiedDate":"2024-03-19"},{"lineNumber":107,"author":{"gitId":"alex-setyawan"},"content":" diagnosis \u003d personToCopy.getDiagnosis();","lastModifiedDate":"2024-03-19"},{"lineNumber":108,"author":{"gitId":"jovantanyk"},"content":" status \u003d personToCopy.getStatus();","lastModifiedDate":"2024-03-18"},{"lineNumber":109,"author":{"gitId":"alex-setyawan"},"content":" symptom \u003d personToCopy.getSymptom();","lastModifiedDate":"2024-03-19"},{"lineNumber":110,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11"},{"lineNumber":113,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":114,"author":{"gitId":"jovantanyk"},"content":" * Sets the {@code Nric} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-18"},{"lineNumber":115,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":116,"author":{"gitId":"jovantanyk"},"content":" public PersonBuilder withNric(String nric) {","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"jovantanyk"},"content":" this.nric \u003d new Nric(nric);","lastModifiedDate":"2024-03-18"},{"lineNumber":118,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":121,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":122,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-18"},{"lineNumber":123,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":124,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2024-03-18"},{"lineNumber":125,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2024-03-18"},{"lineNumber":126,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":129,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":130,"author":{"gitId":"alex-setyawan"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":131,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":132,"author":{"gitId":"alex-setyawan"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2024-03-19"},{"lineNumber":133,"author":{"gitId":"alex-setyawan"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2024-03-19"},{"lineNumber":134,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2024-03-19"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":137,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":138,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":140,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":141,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20"},{"lineNumber":142,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":145,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":146,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":147,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":148,"author":{"gitId":"alex-setyawan"},"content":" public PersonBuilder withDateOfBirth(String dateOfBirth) {","lastModifiedDate":"2024-03-19"},{"lineNumber":149,"author":{"gitId":"alex-setyawan"},"content":" this.dateOfBirth \u003d new DateOfBirth(dateOfBirth);","lastModifiedDate":"2024-03-19"},{"lineNumber":150,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":153,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":154,"author":{"gitId":"jovantanyk"},"content":" * Sets the {@code Sex} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-18"},{"lineNumber":155,"author":{"gitId":"jovantanyk"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":156,"author":{"gitId":"jovantanyk"},"content":" public PersonBuilder withSex(String sex) {","lastModifiedDate":"2024-03-18"},{"lineNumber":157,"author":{"gitId":"jovantanyk"},"content":" this.sex \u003d new Sex(sex);","lastModifiedDate":"2024-03-18"},{"lineNumber":158,"author":{"gitId":"jovantanyk"},"content":" return this;","lastModifiedDate":"2024-03-18"},{"lineNumber":159,"author":{"gitId":"jovantanyk"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":160,"author":{"gitId":"jovantanyk"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":161,"author":{"gitId":"jovantanyk"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":162,"author":{"gitId":"jovantanyk"},"content":" * Sets the {@code Status} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-18"},{"lineNumber":163,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":164,"author":{"gitId":"jovantanyk"},"content":" public PersonBuilder withStatus(String status) {","lastModifiedDate":"2024-03-18"},{"lineNumber":165,"author":{"gitId":"jovantanyk"},"content":" this.status \u003d new Status(status);","lastModifiedDate":"2024-03-18"},{"lineNumber":166,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":169,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":170,"author":{"gitId":"alex-setyawan"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":171,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":172,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2024-03-19"},{"lineNumber":173,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2024-03-19"},{"lineNumber":174,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2024-03-19"},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":177,"author":{"gitId":"alex-setyawan"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":178,"author":{"gitId":"alex-setyawan"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":179,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":180,"author":{"gitId":"alex-setyawan"},"content":" public PersonBuilder withCountry(String country) {","lastModifiedDate":"2024-03-19"},{"lineNumber":181,"author":{"gitId":"alex-setyawan"},"content":" this.country \u003d new Country(country);","lastModifiedDate":"2024-03-19"},{"lineNumber":182,"author":{"gitId":"alex-setyawan"},"content":" return this;","lastModifiedDate":"2024-03-19"},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":185,"author":{"gitId":"alex-setyawan"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":186,"author":{"gitId":"alex-setyawan"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":187,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":188,"author":{"gitId":"alex-setyawan"},"content":" public PersonBuilder withAllergies(String allergies) {","lastModifiedDate":"2024-03-19"},{"lineNumber":189,"author":{"gitId":"alex-setyawan"},"content":" this.allergies \u003d new Allergies(allergies);","lastModifiedDate":"2024-03-19"},{"lineNumber":190,"author":{"gitId":"alex-setyawan"},"content":" return this;","lastModifiedDate":"2024-03-19"},{"lineNumber":191,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":192,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":193,"author":{"gitId":"alex-setyawan"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":194,"author":{"gitId":"alex-setyawan"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":195,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":196,"author":{"gitId":"jovantanyk"},"content":" public PersonBuilder withBloodType(String bloodType) {","lastModifiedDate":"2024-03-21"},{"lineNumber":197,"author":{"gitId":"jovantanyk"},"content":" this.bloodType \u003d new BloodType(bloodType);","lastModifiedDate":"2024-03-21"},{"lineNumber":198,"author":{"gitId":"alex-setyawan"},"content":" return this;","lastModifiedDate":"2024-03-19"},{"lineNumber":199,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":200,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":201,"author":{"gitId":"alex-setyawan"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":202,"author":{"gitId":"alex-setyawan"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":203,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":204,"author":{"gitId":"alex-setyawan"},"content":" public PersonBuilder withCondition(String condition) {","lastModifiedDate":"2024-03-19"},{"lineNumber":205,"author":{"gitId":"alex-setyawan"},"content":" this.condition \u003d new Condition(condition);","lastModifiedDate":"2024-03-19"},{"lineNumber":206,"author":{"gitId":"alex-setyawan"},"content":" return this;","lastModifiedDate":"2024-03-19"},{"lineNumber":207,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":208,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":209,"author":{"gitId":"alex-setyawan"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":210,"author":{"gitId":"alex-setyawan"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":211,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":212,"author":{"gitId":"alex-setyawan"},"content":" public PersonBuilder withDateOfAdmission(String dateOfAdmission) {","lastModifiedDate":"2024-03-19"},{"lineNumber":213,"author":{"gitId":"alex-setyawan"},"content":" this.dateOfAdmission \u003d new DateOfAdmission(dateOfAdmission);","lastModifiedDate":"2024-03-19"},{"lineNumber":214,"author":{"gitId":"alex-setyawan"},"content":" return this;","lastModifiedDate":"2024-03-19"},{"lineNumber":215,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":216,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":217,"author":{"gitId":"alex-setyawan"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":218,"author":{"gitId":"alex-setyawan"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":219,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":220,"author":{"gitId":"alex-setyawan"},"content":" public PersonBuilder withDiagnosis(String diagnosis) {","lastModifiedDate":"2024-03-19"},{"lineNumber":221,"author":{"gitId":"alex-setyawan"},"content":" this.diagnosis \u003d new Diagnosis(diagnosis);","lastModifiedDate":"2024-03-19"},{"lineNumber":222,"author":{"gitId":"alex-setyawan"},"content":" return this;","lastModifiedDate":"2024-03-19"},{"lineNumber":223,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":224,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":225,"author":{"gitId":"alex-setyawan"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":226,"author":{"gitId":"alex-setyawan"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":227,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":228,"author":{"gitId":"alex-setyawan"},"content":" public PersonBuilder withSymptom(String symptom) {","lastModifiedDate":"2024-03-19"},{"lineNumber":229,"author":{"gitId":"alex-setyawan"},"content":" this.symptom \u003d new Symptom(symptom);","lastModifiedDate":"2024-03-19"},{"lineNumber":230,"author":{"gitId":"alex-setyawan"},"content":" return this;","lastModifiedDate":"2024-03-19"},{"lineNumber":231,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":232,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":233,"author":{"gitId":"alex-setyawan"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":234,"author":{"gitId":"alex-setyawan"},"content":" * Returns a Person object with fields initialised to that of PersonBuilder object.","lastModifiedDate":"2024-03-21"},{"lineNumber":235,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":236,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05"},{"lineNumber":237,"author":{"gitId":"alex-setyawan"},"content":" Person p \u003d new Person(nric, name, phone, address, dateOfBirth, sex, status);","lastModifiedDate":"2024-03-20"},{"lineNumber":238,"author":{"gitId":"alex-setyawan"},"content":" p.setEmail(email);","lastModifiedDate":"2024-03-20"},{"lineNumber":239,"author":{"gitId":"alex-setyawan"},"content":" p.setCountry(country);","lastModifiedDate":"2024-03-20"},{"lineNumber":240,"author":{"gitId":"alex-setyawan"},"content":" p.setAllergies(allergies);","lastModifiedDate":"2024-03-20"},{"lineNumber":241,"author":{"gitId":"alex-setyawan"},"content":" p.setBloodType(bloodType);","lastModifiedDate":"2024-03-20"},{"lineNumber":242,"author":{"gitId":"alex-setyawan"},"content":" p.setCondition(condition);","lastModifiedDate":"2024-03-20"},{"lineNumber":243,"author":{"gitId":"alex-setyawan"},"content":" p.setDateOfAdmission(dateOfAdmission);","lastModifiedDate":"2024-03-20"},{"lineNumber":244,"author":{"gitId":"alex-setyawan"},"content":" p.setDiagnosis(diagnosis);","lastModifiedDate":"2024-03-20"},{"lineNumber":245,"author":{"gitId":"alex-setyawan"},"content":" p.setSymptom(symptom);","lastModifiedDate":"2024-03-20"},{"lineNumber":246,"author":{"gitId":"alex-setyawan"},"content":" return p;","lastModifiedDate":"2024-03-20"},{"lineNumber":247,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":248,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03"}],"authorContributionMap":{"alex-setyawan":126,"jovantanyk":32,"laney0808":4,"-":86}},{"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":"laney0808"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DATEOFBIRTH;","lastModifiedDate":"2024-03-21"},{"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":"laney0808"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NRIC;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":9,"author":{"gitId":"laney0808"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SEX;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"laney0808"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STATUS;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"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":"laney0808"},"content":"import seedu.address.logic.commands.CreateCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.logic.commands.UpdateCommand.UpdatePersonDescriptor;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-03-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":28,"author":{"gitId":"laney0808"},"content":" public static String getCreateCommand(Person person) {","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"laney0808"},"content":" return CreateCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":36,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05"},{"lineNumber":37,"author":{"gitId":"laney0808"},"content":" sb.append(PREFIX_NRIC + person.getNric().toString() + \" \");","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"jovantanyk"},"content":" sb.append(PREFIX_NAME + person.getName().toString() + \" \");","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"jovantanyk"},"content":" sb.append(PREFIX_PHONE + person.getPhone().toString() + \" \");","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"jovantanyk"},"content":" sb.append(PREFIX_ADDRESS + person.getAddress().toString() + \" \");","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"laney0808"},"content":" sb.append(PREFIX_DATEOFBIRTH + person.getDateOfBirth().toString() + \" \");","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"laney0808"},"content":" sb.append(PREFIX_SEX + person.getSex().toString() + \" \");","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"laney0808"},"content":" sb.append(PREFIX_STATUS + person.getStatus().toString() + \" \");","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":" person.getTags().stream().forEach(","lastModifiedDate":"2017-05-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2017-05-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26"},{"lineNumber":53,"author":{"gitId":"alex-setyawan"},"content":" public static String getEditPersonDescriptorDetails(UpdatePersonDescriptor descriptor) {","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26"},{"lineNumber":55,"author":{"gitId":"jovantanyk"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.toString()).append(\" \"));","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"jovantanyk"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.toString()).append(\" \"));","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"jovantanyk"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.toString()).append(\" \"));","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"jovantanyk"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address.toString()).append(\" \"));","lastModifiedDate":"2024-03-18"},{"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":{"alex-setyawan":2,"jovantanyk":7,"laney0808":11,"-":49}},{"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":"2024-03-21"},{"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":"alex-setyawan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_DATEOFBIRTH_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"alex-setyawan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_DATEOFBIRTH_BOB;","lastModifiedDate":"2024-03-21"},{"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":"jovantanyk"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NRIC_AMY;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"jovantanyk"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NRIC_BOB;","lastModifiedDate":"2024-03-18"},{"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":"jovantanyk"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SEX_AMY;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"jovantanyk"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SEX_BOB;","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"jovantanyk"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_STATUS_AMY;","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"jovantanyk"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_STATUS_BOB;","lastModifiedDate":"2024-03-18"},{"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":"laney0808"},"content":"import seedu.address.model.ImmuniMate;","lastModifiedDate":"2024-03-20"},{"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":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":29,"author":{"gitId":"jovantanyk"},"content":" public static final Person ALICE \u003d new PersonBuilder().withNric(\"T0139571B\").withName(\"Alice Pauline\")","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"alex-setyawan"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withPhone(\"94351253\").withDateOfBirth(\"2001-01-01\")","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"jovantanyk"},"content":" .withSex(\"F\").withStatus(\"HEALTHY\").build();","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"jovantanyk"},"content":" public static final Person BENSON \u003d new PersonBuilder().withNric(\"T0439571C\").withName(\"Benson Meier\")","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"alex-setyawan"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\").withPhone(\"98765432\").withDateOfBirth(\"2001-01-01\")","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"jovantanyk"},"content":" .withSex(\"M\").withStatus(\"UNWELL\").build();","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"jovantanyk"},"content":" public static final Person CARL \u003d new PersonBuilder().withNric(\"T0284994B\").withName(\"Carl Kurz\")","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"alex-setyawan"},"content":" .withPhone(\"95352563\").withAddress(\"wall street\").withDateOfBirth(\"2001-01-01\")","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"jovantanyk"},"content":" .withSex(\"M\").withStatus(\"PENDING\").build();","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"jovantanyk"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withNric(\"S9839571A\")","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"alex-setyawan"},"content":" .withName(\"Daniel Meier\").withPhone(\"87652533\").withDateOfBirth(\"2001-01-01\")","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"jovantanyk"},"content":" .withAddress(\"10th street\").withSex(\"M\").withStatus(\"HEALTHY\").build();","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"jovantanyk"},"content":" public static final Person ELLE \u003d new PersonBuilder().withNric(\"S8913957B\")","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"alex-setyawan"},"content":" .withName(\"Elle Meyer\").withPhone(\"94821224\").withDateOfBirth(\"2001-01-01\")","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"jovantanyk"},"content":" .withAddress(\"michegan ave\").withSex(\"F\").withStatus(\"UNWELL\").build();","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"jovantanyk"},"content":" public static final Person FIONA \u003d new PersonBuilder().withNric(\"T0536171Z\")","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"alex-setyawan"},"content":" .withName(\"Fiona Kunz\").withPhone(\"94820427\").withDateOfBirth(\"2001-01-01\")","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"jovantanyk"},"content":" .withAddress(\"little tokyo\").withSex(\"F\").withStatus(\"PENDING\").build();","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"jovantanyk"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withNric(\"T0829102Z\")","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"alex-setyawan"},"content":" .withName(\"George Best\").withPhone(\"94824421\").withDateOfBirth(\"2001-01-01\")","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"jovantanyk"},"content":" .withAddress(\"4th street\").withSex(\"M\").withStatus(\"HEALTHY\").build();","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"laney0808"},"content":" //TODO add date of birth and some other optional fields","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":53,"author":{"gitId":"jovantanyk"},"content":" public static final Person HOON \u003d new PersonBuilder().withNric(\"T0123071C\").withName(\"Hoon Meier\")","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"alex-setyawan"},"content":" .withPhone(\"81482424\").withAddress(\"little india\").withDateOfBirth(\"2001-01-01\")","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"jovantanyk"},"content":" .withSex(\"M\").withStatus(\"HEALTHY\").build();","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"jovantanyk"},"content":" public static final Person IDA \u003d new PersonBuilder().withNric(\"T0239521A\").withName(\"Ida Mueller\")","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"alex-setyawan"},"content":" .withPhone(\"84820131\").withAddress(\"chicago ave\").withDateOfBirth(\"2001-01-01\")","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"jovantanyk"},"content":" .withSex(\"F\").withStatus(\"PENDING\").build();","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22"},{"lineNumber":61,"author":{"gitId":"jovantanyk"},"content":" public static final Person AMY \u003d new PersonBuilder().withNric(VALID_NRIC_AMY).withName(VALID_NAME_AMY)","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"alex-setyawan"},"content":" .withPhone(VALID_PHONE_AMY).withAddress(VALID_ADDRESS_AMY).withDateOfBirth(VALID_DATEOFBIRTH_AMY)","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"jovantanyk"},"content":" .withSex(VALID_SEX_AMY).withStatus(VALID_STATUS_AMY).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"jovantanyk"},"content":" public static final Person BOB \u003d new PersonBuilder().withNric(VALID_NRIC_BOB).withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"alex-setyawan"},"content":" .withPhone(VALID_PHONE_BOB).withAddress(VALID_ADDRESS_BOB).withDateOfBirth(VALID_DATEOFBIRTH_BOB)","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"jovantanyk"},"content":" .withSex(VALID_SEX_BOB).withStatus(VALID_STATUS_BOB).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":75,"author":{"gitId":"laney0808"},"content":" public static ImmuniMate getTypicalAddressBook() {","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"laney0808"},"content":" ImmuniMate ab \u003d new ImmuniMate();","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10"},{"lineNumber":78,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04"},{"lineNumber":86,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13"}],"authorContributionMap":{"alex-setyawan":13,"jovantanyk":28,"laney0808":4,"-":41}},{"path":"src/test/java/seedu/address/testutil/UpdatePersonDescriptorBuilder.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":"alex-setyawan"},"content":"import seedu.address.logic.commands.UpdateCommand.UpdatePersonDescriptor;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-12-23"},{"lineNumber":9,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.model.person.DateOfBirth;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-12-23"},{"lineNumber":11,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-12-23"},{"lineNumber":14,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.model.person.Sex;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.model.person.Status;","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-12-23"},{"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":"alex-setyawan"},"content":"public class UpdatePersonDescriptorBuilder {","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":23,"author":{"gitId":"alex-setyawan"},"content":" private UpdatePersonDescriptor descriptor;","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":25,"author":{"gitId":"alex-setyawan"},"content":" public UpdatePersonDescriptorBuilder() {","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"alex-setyawan"},"content":" descriptor \u003d new UpdatePersonDescriptor();","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":29,"author":{"gitId":"alex-setyawan"},"content":" public UpdatePersonDescriptorBuilder(UpdatePersonDescriptor descriptor) {","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"alex-setyawan"},"content":" this.descriptor \u003d new UpdatePersonDescriptor(descriptor);","lastModifiedDate":"2024-03-20"},{"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":"alex-setyawan"},"content":" public UpdatePersonDescriptorBuilder(Person person) {","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"alex-setyawan"},"content":" descriptor \u003d new UpdatePersonDescriptor();","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"alex-setyawan"},"content":" descriptor.setNric(person.getNric());","lastModifiedDate":"2024-03-20"},{"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.setAddress(person.getAddress());","lastModifiedDate":"2017-06-21"},{"lineNumber":42,"author":{"gitId":"alex-setyawan"},"content":" descriptor.setDateOfBirth(person.getDateOfBirth());","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"alex-setyawan"},"content":" descriptor.setSex(person.getSex());","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"alex-setyawan"},"content":" descriptor.setStatus(person.getStatus());","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"alex-setyawan"},"content":" /*","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":" descriptor.setTags(person.getTags());","lastModifiedDate":"2017-06-21"},{"lineNumber":47,"author":{"gitId":"alex-setyawan"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"alex-setyawan"},"content":" descriptor.setCountry(person.getCountry());","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"alex-setyawan"},"content":" descriptor.setAllergies(person.getAllergies());","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"alex-setyawan"},"content":" descriptor.setBloodType(person.getBloodType());","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"alex-setyawan"},"content":" descriptor.setCondition(person.getCondition());","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"alex-setyawan"},"content":" descriptor.setDateOfAdmission(person.getDateOfAdmission());","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"alex-setyawan"},"content":" descriptor.setDiagnosis(person.getDiagnosis());","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"alex-setyawan"},"content":" descriptor.setSymptom(person.getSymptom());","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"alex-setyawan"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"alex-setyawan"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"alex-setyawan"},"content":" public UpdatePersonDescriptorBuilder withNric(String nric) {","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"alex-setyawan"},"content":" descriptor.setNric(new Nric(nric));","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"alex-setyawan"},"content":" return this;","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":70,"author":{"gitId":"alex-setyawan"},"content":" public UpdatePersonDescriptorBuilder withName(String name) {","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","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":"-"},"content":" * Sets the {@code Phone} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":78,"author":{"gitId":"alex-setyawan"},"content":" public UpdatePersonDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"-"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2017-12-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":86,"author":{"gitId":"alex-setyawan"},"content":" public UpdatePersonDescriptorBuilder withDateOfBirth(String dateOfBirth) {","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"alex-setyawan"},"content":" descriptor.setDateOfBirth(new DateOfBirth(dateOfBirth));","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":94,"author":{"gitId":"alex-setyawan"},"content":" public UpdatePersonDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"-"},"content":" descriptor.setAddress(new Address(address));","lastModifiedDate":"2017-12-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":99,"author":{"gitId":"alex-setyawan"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":100,"author":{"gitId":"alex-setyawan"},"content":" * Sets the {@code Address} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-21"},{"lineNumber":101,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":102,"author":{"gitId":"alex-setyawan"},"content":" public UpdatePersonDescriptorBuilder withSex(String sex) {","lastModifiedDate":"2024-03-21"},{"lineNumber":103,"author":{"gitId":"alex-setyawan"},"content":" descriptor.setSex(new Sex(sex));","lastModifiedDate":"2024-03-21"},{"lineNumber":104,"author":{"gitId":"alex-setyawan"},"content":" return this;","lastModifiedDate":"2024-03-21"},{"lineNumber":105,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":106,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":107,"author":{"gitId":"alex-setyawan"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":108,"author":{"gitId":"alex-setyawan"},"content":" * Sets the {@code Address} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-21"},{"lineNumber":109,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":110,"author":{"gitId":"alex-setyawan"},"content":" public UpdatePersonDescriptorBuilder withStatus(String status) {","lastModifiedDate":"2024-03-21"},{"lineNumber":111,"author":{"gitId":"alex-setyawan"},"content":" descriptor.setStatus(new Status(status));","lastModifiedDate":"2024-03-21"},{"lineNumber":112,"author":{"gitId":"alex-setyawan"},"content":" return this;","lastModifiedDate":"2024-03-21"},{"lineNumber":113,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":114,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":115,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":116,"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":117,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":118,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":119,"author":{"gitId":"alex-setyawan"},"content":" public UpdatePersonDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2024-03-20"},{"lineNumber":120,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2017-12-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2017-12-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":125,"author":{"gitId":"alex-setyawan"},"content":" public UpdatePersonDescriptor build() {","lastModifiedDate":"2024-03-20"},{"lineNumber":126,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":128,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"alex-setyawan":59,"-":69}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"jovantanyk"},"content":"[![CI Status](https://github.com/AY2324S2-CS2103T-T08-1/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S2-CS2103T-T08-1/tp/actions)","lastModifiedDate":"2024-03-12"},{"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":"jovantanyk"},"content":"* **ImmuniMate** is a JavaFX application with a GUI, aimed at helping General Practitioners and Healthcare Professionals better keep track of Patient Information.\u003cbr\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"jovantanyk"},"content":" Main Features:","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"jovantanyk"},"content":" * Easily add and update patient information to Immunimate","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"jovantanyk"},"content":" * Keep track of infected patients and clusters of information","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"jovantanyk"},"content":" * Search for patients and patient history with a breeze","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"* It is named `AddressBook Level 3` (`AB3` for short) because it was initially created as a part of a series of `AddressBook` projects (`Level 1`, `Level 2`, `Level 3` ...).","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"jovantanyk"},"content":"* For the detailed documentation and information on ImmuniMate, please visit our **[website](https://ay2324s2-cs2103t-t08-1.github.io/tp/)**.","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"jovantanyk"},"content":"* This project is currently being developed by a student team in NUS. Our Source code for the project can be found **[here on github.](https://github.com/AY2324S2-CS2103T-T08-1/tp)**","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"jovantanyk":8,"-":4}},{"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":"NatLeong"},"content":" archiveFileName \u003d \u0027immuniMate.jar\u0027","lastModifiedDate":"2024-03-24"},{"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":{"-":71,"NatLeong":1}},{"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":"jovantanyk"},"content":"We are a NUS based software development team.","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"jovantanyk"},"content":"You can contact us individually through our portfolios","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17"},{"lineNumber":10,"author":{"gitId":"jovantanyk"},"content":"## ImmuniMate Project Team","lastModifiedDate":"2024-02-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"jovantanyk"},"content":"### Alex Setyawan","lastModifiedDate":"2024-02-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"alex-setyawan"},"content":"\u003cimg src\u003d\"images/alex-setyawan.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"alex-setyawan"},"content":"[[github](https://github.com/alex-setyawan)]","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"* Role: Team Lead","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"jovantanyk"},"content":"* Responsibilities: Project Manager, Back-end","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"jovantanyk"},"content":"### Tan Jovan","lastModifiedDate":"2024-02-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"jovantanyk"},"content":"\u003cimg src\u003d\"images/jovantanyk.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"jovantanyk"},"content":"[[homepage](http:/jovantanyk.dev)]","lastModifiedDate":"2024-02-25"},{"lineNumber":28,"author":{"gitId":"jovantanyk"},"content":"[[github](https://github.com/jovantanyk)]","lastModifiedDate":"2024-02-25"},{"lineNumber":29,"author":{"gitId":"jovantanyk"},"content":"[[portfolio](team/jovantanyk.md)]","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"jovantanyk"},"content":"* Responsibilities: Back-end, Documentation","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":35,"author":{"gitId":"laney0808"},"content":"### Zhang Lanyu","lastModifiedDate":"2024-02-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"jovantanyk"},"content":"\u003cimg src\u003d\"images/laney0808.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"laney0808"},"content":"[[github](http://github.com/laney0808)] [[portfolio](team/laney0808.md)]","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"jovantanyk"},"content":"* Responsibilities: Front-end, Documentation, UI Designer","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"jovantanyk"},"content":"### Natalie Leong","lastModifiedDate":"2024-02-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"NatLeong"},"content":"\u003cimg src\u003d\"images/natleong.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"NatLeong"},"content":"[[github](http://github.com/NatLeong)]","lastModifiedDate":"2024-03-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"jovantanyk"},"content":"* Responsibilities: Front-end, Documentation","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"alex-setyawan":2,"jovantanyk":15,"laney0808":2,"-":31,"NatLeong":2}},{"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 continues till the end of diagram.","lastModifiedDate":"2024-02-09"},{"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).\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-02-09"},{"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 an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Logic.png)","lastModifiedDate":"2024-02-09"},{"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":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":207,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Model.png)","lastModifiedDate":"2024-02-09"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"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":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"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":"laney0808"},"content":"### \\[Proposed\\] Create a new patient","lastModifiedDate":"2024-03-24"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"laney0808"},"content":"Create new patient feature allows the healthcare workers to add a new patient to ImmuniMate.","lastModifiedDate":"2024-03-24"},{"lineNumber":245,"author":{"gitId":"laney0808"},"content":"The healthcare worker must specify the patient\u0027s name, NRIC, phone, address, date of birth, sex, and status.","lastModifiedDate":"2024-03-24"},{"lineNumber":246,"author":{"gitId":"laney0808"},"content":"The process of creating a new patient in Model is as follows:","lastModifiedDate":"2024-03-24"},{"lineNumber":247,"author":{"gitId":"laney0808"},"content":"![CreateState1](images/CreateCommand.png)","lastModifiedDate":"2024-03-24"},{"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":"","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":255,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":256,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":257,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":258,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":262,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":264,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":268,"author":{"gitId":"laney0808"},"content":"* has a need to manage a significant number of patient information","lastModifiedDate":"2024-03-17"},{"lineNumber":269,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23"},{"lineNumber":270,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26"},{"lineNumber":272,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":274,"author":{"gitId":"laney0808"},"content":"**Value proposition**: As the number of patients a General Practitioner grows, information management might prove complex, especially so for personal data. ImmuniMate offers a way to record comprehensive information about every patient, while ensuring timely updates and avoiding duplications/contradictions. It also seeks to establish links between patient for contact tracing and finding potential infectious clusters.","lastModifiedDate":"2024-03-17"},{"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":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":281,"author":{"gitId":"laney0808"},"content":"|----------|----------------------------------|-------------------------------------------------|------------------------------------------------------------------------|","lastModifiedDate":"2024-03-17"},{"lineNumber":282,"author":{"gitId":"laney0808"},"content":"| `* * *` | New user | see usage instructions | refer to instructions when I forget how to use the App |","lastModifiedDate":"2024-03-17"},{"lineNumber":283,"author":{"gitId":"laney0808"},"content":"| `* * *` | Healthcare Worker | add a new patient | |","lastModifiedDate":"2024-03-17"},{"lineNumber":284,"author":{"gitId":"laney0808"},"content":"| `* * *` | Healthcare Worker | delete a patient | emove wrong or obselete information of a patient from the database |","lastModifiedDate":"2024-03-17"},{"lineNumber":285,"author":{"gitId":"laney0808"},"content":"| `* * *` | Healthcare Worker | find a person by NRIC | locate details of persons without having to go through the entire list |","lastModifiedDate":"2024-03-17"},{"lineNumber":286,"author":{"gitId":"laney0808"},"content":"| `* * *` | Healthcare Worker | update a person\u0027s details | keep the details up to date |","lastModifiedDate":"2024-03-17"},{"lineNumber":287,"author":{"gitId":"laney0808"},"content":"| `* * *` | Healthcare Worker | find a patient by matching criteria | Find a list of patients who I need |","lastModifiedDate":"2024-03-17"},{"lineNumber":288,"author":{"gitId":"laney0808"},"content":"| `* * *` | Healthcare Worker | Delete patient\u0027s information | remove patient information that is no longer correct |","lastModifiedDate":"2024-03-17"},{"lineNumber":289,"author":{"gitId":"laney0808"},"content":"| `* *` | Healthcare Worker | hide private contact details | minimize chance of someone else seeing them by accident |","lastModifiedDate":"2024-03-17"},{"lineNumber":290,"author":{"gitId":"laney0808"},"content":"| `* *` | Healthcare Worker | highlight contradicting information and entries | minimize the mistakes in entries |","lastModifiedDate":"2024-03-17"},{"lineNumber":291,"author":{"gitId":"laney0808"},"content":"| `* *` | Healthcare Worker | be able to resolve duplicate information | correct wrong inputs |","lastModifiedDate":"2024-03-17"},{"lineNumber":292,"author":{"gitId":"laney0808"},"content":"| `* *` | Healthcare Worker | see the history of changes made to a patient | understand the changes made to a patient |","lastModifiedDate":"2024-03-17"},{"lineNumber":293,"author":{"gitId":"laney0808"},"content":"| `* *` | Healthcare Worker | be able to tap different contact methods | make sure important information is sent |","lastModifiedDate":"2024-03-17"},{"lineNumber":294,"author":{"gitId":"laney0808"},"content":"| `* *` | Healthcare Worker | see the close contacts of a patient | see the links between infected patients |","lastModifiedDate":"2024-03-17"},{"lineNumber":295,"author":{"gitId":"laney0808"},"content":"| `* *` | Healthcare Worker | status of infection of a patient | take follow-up actions |","lastModifiedDate":"2024-03-17"},{"lineNumber":296,"author":{"gitId":"laney0808"},"content":"| `* *` | Healthcare Worker | see clusters of infected patients | understand which areas are at high risk of infection |","lastModifiedDate":"2024-03-17"},{"lineNumber":297,"author":{"gitId":"laney0808"},"content":"| `*` | Healthcare Worker | find the person who first spread the disease | better understand the disease |","lastModifiedDate":"2024-03-17"},{"lineNumber":298,"author":{"gitId":"laney0808"},"content":"| `*` | Healthcare Worker | sort persons by name | locate a person easily |","lastModifiedDate":"2024-03-17"},{"lineNumber":299,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":300,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":302,"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":303,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":304,"author":{"gitId":"laney0808"},"content":"**Use Case: UC01 - Create Patient Record**","lastModifiedDate":"2024-03-17"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":306,"author":{"gitId":"laney0808"},"content":"- **Actor:** Healthcare Worker","lastModifiedDate":"2024-03-17"},{"lineNumber":307,"author":{"gitId":"laney0808"},"content":"- **Description:** Healthcare worker creates a new patient record in the ImmuniMate Address Book System.","lastModifiedDate":"2024-03-17"},{"lineNumber":308,"author":{"gitId":"laney0808"},"content":"- **Preconditions:** Healthcare worker has logged into the system.","lastModifiedDate":"2024-03-17"},{"lineNumber":309,"author":{"gitId":"laney0808"},"content":"- **Guarantees:** New patient record is successfully created in the ImmuniMate Address Book System.","lastModifiedDate":"2024-03-17"},{"lineNumber":310,"author":{"gitId":"laney0808"},"content":"- **MSS:**","lastModifiedDate":"2024-03-17"},{"lineNumber":311,"author":{"gitId":"laney0808"},"content":" 1. Healthcare worker choose to create a new patient record.","lastModifiedDate":"2024-03-17"},{"lineNumber":312,"author":{"gitId":"laney0808"},"content":" 2. IABS requests the necessary details for the new patient record (name, NRIC, date of birth, sex, phone number, address, email, country of nationality, date of admission, blood type, allergies).","lastModifiedDate":"2024-03-17"},{"lineNumber":313,"author":{"gitId":"laney0808"},"content":" 3. Healthcare worker enters the patient\u0027s details.","lastModifiedDate":"2024-03-17"},{"lineNumber":314,"author":{"gitId":"laney0808"},"content":" 4. IABS validates the entered data.","lastModifiedDate":"2024-03-17"},{"lineNumber":315,"author":{"gitId":"laney0808"},"content":" 5. IABS adds the new patient record to the database.","lastModifiedDate":"2024-03-17"},{"lineNumber":316,"author":{"gitId":"laney0808"},"content":"- **Extensions:**","lastModifiedDate":"2024-03-17"},{"lineNumber":317,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":318,"author":{"gitId":"laney0808"},"content":" 3a. IABS detects a conflict in the entered data (user existing).","lastModifiedDate":"2024-03-17"},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":320,"author":{"gitId":"laney0808"},"content":" 3a1. IABS shows the conflicting existing entry","lastModifiedDate":"2024-03-17"},{"lineNumber":321,"author":{"gitId":"laney0808"},"content":" 3a2. IABS requests for the correct data.","lastModifiedDate":"2024-03-17"},{"lineNumber":322,"author":{"gitId":"laney0808"},"content":" 3a3. Healthcare Worker enters new data.","lastModifiedDate":"2024-03-17"},{"lineNumber":323,"author":{"gitId":"laney0808"},"content":" Steps 3a1-3a3 are repeated until the data entered are correct, or the user cancels the action.","lastModifiedDate":"2024-03-17"},{"lineNumber":324,"author":{"gitId":"laney0808"},"content":" Use case resumes from step 4.","lastModifiedDate":"2024-03-17"},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":326,"author":{"gitId":"laney0808"},"content":" 3b. IABS detects an error in the entered data.","lastModifiedDate":"2024-03-17"},{"lineNumber":327,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":328,"author":{"gitId":"laney0808"},"content":" 3b1. IABS requests for the correct data.","lastModifiedDate":"2024-03-17"},{"lineNumber":329,"author":{"gitId":"laney0808"},"content":" 3b2. Healthcare Worker enters new data.","lastModifiedDate":"2024-03-17"},{"lineNumber":330,"author":{"gitId":"laney0808"},"content":" Steps 3b1-3b2 are repeated until the data entered are correct.","lastModifiedDate":"2024-03-17"},{"lineNumber":331,"author":{"gitId":"laney0808"},"content":" Use case resumes from step 4.","lastModifiedDate":"2024-03-17"},{"lineNumber":332,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":333,"author":{"gitId":"laney0808"},"content":" *a. At any time, Healthcare Worker chooses to cancel creating the patient record.","lastModifiedDate":"2024-03-17"},{"lineNumber":334,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":335,"author":{"gitId":"laney0808"},"content":" *a1. IABS requests confirmation to cancel.","lastModifiedDate":"2024-03-17"},{"lineNumber":336,"author":{"gitId":"laney0808"},"content":" *a2. Healthcare Worker confirms the cancellation.","lastModifiedDate":"2024-03-17"},{"lineNumber":337,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2024-03-17"},{"lineNumber":338,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":340,"author":{"gitId":"laney0808"},"content":"---","lastModifiedDate":"2024-03-17"},{"lineNumber":341,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":342,"author":{"gitId":"laney0808"},"content":"### **Use Case: UC02 - Find Patient Information**","lastModifiedDate":"2024-03-17"},{"lineNumber":343,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":344,"author":{"gitId":"laney0808"},"content":"- **Actor:** Healthcare Worker","lastModifiedDate":"2024-03-17"},{"lineNumber":345,"author":{"gitId":"laney0808"},"content":"- **Description:** Healthcare worker searches for specific patient information in the ImmuniMate Address Book System.","lastModifiedDate":"2024-03-17"},{"lineNumber":346,"author":{"gitId":"laney0808"},"content":"- **Preconditions:** Healthcare worker has logged into the system.","lastModifiedDate":"2024-03-17"},{"lineNumber":347,"author":{"gitId":"laney0808"},"content":"- **Guarantees:** Relevant patient information is displayed for the healthcare worker to view.","lastModifiedDate":"2024-03-17"},{"lineNumber":348,"author":{"gitId":"laney0808"},"content":"- **Basic Flow:**","lastModifiedDate":"2024-03-17"},{"lineNumber":349,"author":{"gitId":"laney0808"},"content":" 1. Healthcare worker chooses to find patient information meeting specified criteria.","lastModifiedDate":"2024-03-17"},{"lineNumber":350,"author":{"gitId":"laney0808"},"content":" 2. IABS searches for and displays the relevant patients.","lastModifiedDate":"2024-03-17"},{"lineNumber":351,"author":{"gitId":"laney0808"},"content":"- **Extensions:**","lastModifiedDate":"2024-03-17"},{"lineNumber":352,"author":{"gitId":"laney0808"},"content":" 2a. IABS detects an error in the entered data.","lastModifiedDate":"2024-03-17"},{"lineNumber":353,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":354,"author":{"gitId":"laney0808"},"content":" - 2a1. IABS requests for the correct data.","lastModifiedDate":"2024-03-17"},{"lineNumber":355,"author":{"gitId":"laney0808"},"content":" - 2a2. Healthcare Worker enters new data.","lastModifiedDate":"2024-03-17"},{"lineNumber":356,"author":{"gitId":"laney0808"},"content":" - Steps 2a1-2a2 are repeated until the data entered are correct. Use case resumes from step 3.","lastModifiedDate":"2024-03-17"},{"lineNumber":357,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":358,"author":{"gitId":"laney0808"},"content":"---","lastModifiedDate":"2024-03-17"},{"lineNumber":359,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":360,"author":{"gitId":"laney0808"},"content":"**Use Case: UC03 - Update Patient Information**","lastModifiedDate":"2024-03-17"},{"lineNumber":361,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":362,"author":{"gitId":"laney0808"},"content":"- **Actor:** Healthcare Worker","lastModifiedDate":"2024-03-17"},{"lineNumber":363,"author":{"gitId":"laney0808"},"content":"- **Description:** Healthcare worker updates a patient\u0027s information in the ImmuniMate Address Book System.","lastModifiedDate":"2024-03-17"},{"lineNumber":364,"author":{"gitId":"laney0808"},"content":"- **Preconditions:** Healthcare worker has logged into the system and has selected the patient whose information needs to be updated.","lastModifiedDate":"2024-03-17"},{"lineNumber":365,"author":{"gitId":"laney0808"},"content":"- **Guarantees:** Patient\u0027s information is successfully updated in the ImmuniMate Address Book System.","lastModifiedDate":"2024-03-17"},{"lineNumber":366,"author":{"gitId":"laney0808"},"content":"- **Basic Flow:**","lastModifiedDate":"2024-03-17"},{"lineNumber":367,"author":{"gitId":"laney0808"},"content":" 1. Healthcare worker chooses to update a certain patient’s certain information.","lastModifiedDate":"2024-03-17"},{"lineNumber":368,"author":{"gitId":"laney0808"},"content":" 2. IABS validates the new content.","lastModifiedDate":"2024-03-17"},{"lineNumber":369,"author":{"gitId":"laney0808"},"content":" 3. IABS updates the patient\u0027s information in the database.","lastModifiedDate":"2024-03-17"},{"lineNumber":370,"author":{"gitId":"laney0808"},"content":"- **Extensions:**","lastModifiedDate":"2024-03-17"},{"lineNumber":371,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":372,"author":{"gitId":"laney0808"},"content":" 2a. IABS detects an error in the entered data.","lastModifiedDate":"2024-03-17"},{"lineNumber":373,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":374,"author":{"gitId":"laney0808"},"content":" 2a1. IABS requests for the correct data.","lastModifiedDate":"2024-03-17"},{"lineNumber":375,"author":{"gitId":"laney0808"},"content":" 2a2. Healthcare Worker enters new data.","lastModifiedDate":"2024-03-17"},{"lineNumber":376,"author":{"gitId":"laney0808"},"content":" Steps 2a1-2a2 are repeated until the data entered are correct.","lastModifiedDate":"2024-03-17"},{"lineNumber":377,"author":{"gitId":"laney0808"},"content":" Use case resumes from step 3.","lastModifiedDate":"2024-03-17"},{"lineNumber":378,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":379,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":380,"author":{"gitId":"laney0808"},"content":"---","lastModifiedDate":"2024-03-17"},{"lineNumber":381,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":382,"author":{"gitId":"laney0808"},"content":"**Use Case: UC04 - Delete Patient Record**","lastModifiedDate":"2024-03-17"},{"lineNumber":383,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":384,"author":{"gitId":"laney0808"},"content":"- **Actor:** Healthcare worker","lastModifiedDate":"2024-03-17"},{"lineNumber":385,"author":{"gitId":"laney0808"},"content":"- **Description:** Healthcare worker deletes a patient\u0027s record from the ImmuniMate Address Book System.","lastModifiedDate":"2024-03-17"},{"lineNumber":386,"author":{"gitId":"alex-setyawan"},"content":"- **Preconditions:** Healthcare worker has opened the app and has selected the patient whose record needs to be deleted.","lastModifiedDate":"2024-03-16"},{"lineNumber":387,"author":{"gitId":"laney0808"},"content":"- **Guarantees:** Patient\u0027s record is successfully deleted from the ImmuniMate Address Book System.","lastModifiedDate":"2024-03-17"},{"lineNumber":388,"author":{"gitId":"alex-setyawan"},"content":"- **MSS:**","lastModifiedDate":"2024-03-16"},{"lineNumber":389,"author":{"gitId":"laney0808"},"content":" 1. Healthcare worker choose to delete a specified patient’s record.","lastModifiedDate":"2024-03-17"},{"lineNumber":390,"author":{"gitId":"alex-setyawan"},"content":" 2. IABS validates the NRIC and deletes the patient\u0027s record from the database.","lastModifiedDate":"2024-03-16"},{"lineNumber":391,"author":{"gitId":"laney0808"},"content":"- **Extensions:**","lastModifiedDate":"2024-03-17"},{"lineNumber":392,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":393,"author":{"gitId":"laney0808"},"content":" 2a. IABS cannot find the patient specified.","lastModifiedDate":"2024-03-17"},{"lineNumber":394,"author":{"gitId":"alex-setyawan"},"content":" - 2a1. IABS requests for the correct NRIC.","lastModifiedDate":"2024-03-16"},{"lineNumber":395,"author":{"gitId":"alex-setyawan"},"content":" - 2a2. Healthcare worker enters new NRIC.","lastModifiedDate":"2024-03-16"},{"lineNumber":396,"author":{"gitId":"alex-setyawan"},"content":" - Steps 2a1-2a2 are repeated until the data entered are correct or Healthcare worker cancels the action. Use case resumes from step 3.","lastModifiedDate":"2024-03-16"},{"lineNumber":397,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":398,"author":{"gitId":"laney0808"},"content":"**Use Case: UC05 - Delete Patient Information**","lastModifiedDate":"2024-03-17"},{"lineNumber":399,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":400,"author":{"gitId":"laney0808"},"content":"- **Actor:** Healthcare Worker","lastModifiedDate":"2024-03-17"},{"lineNumber":401,"author":{"gitId":"laney0808"},"content":"- **Description:** Healthcare worker deletes specific information from a patient\u0027s record in the ImmuniMate Address Book System.","lastModifiedDate":"2024-03-17"},{"lineNumber":402,"author":{"gitId":"laney0808"},"content":"- **Preconditions:** Healthcare worker has logged into the system and has selected the patient whose information needs to be deleted.","lastModifiedDate":"2024-03-17"},{"lineNumber":403,"author":{"gitId":"laney0808"},"content":"- **Guarantees:** Specified information is successfully deleted from the patient\u0027s record in the ImmuniMate Address Book System.","lastModifiedDate":"2024-03-17"},{"lineNumber":404,"author":{"gitId":"alex-setyawan"},"content":"- **MSS:**","lastModifiedDate":"2024-03-16"},{"lineNumber":405,"author":{"gitId":"alex-setyawan"},"content":" 1. Healthcare worker chooses to delete certain fields of a certain patient\u0027s profile.","lastModifiedDate":"2024-03-16"},{"lineNumber":406,"author":{"gitId":"alex-setyawan"},"content":" 2. IABS validates the information to be deleted and deletes the specified information from the patient\u0027s record in the database.","lastModifiedDate":"2024-03-16"},{"lineNumber":407,"author":{"gitId":"laney0808"},"content":"- **Extensions:**","lastModifiedDate":"2024-03-17"},{"lineNumber":408,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":409,"author":{"gitId":"laney0808"},"content":" 2a. IABS cannot find the patient specified.","lastModifiedDate":"2024-03-17"},{"lineNumber":410,"author":{"gitId":"alex-setyawan"},"content":" - 2a1. IABS requests for the correct NRIC.","lastModifiedDate":"2024-03-16"},{"lineNumber":411,"author":{"gitId":"alex-setyawan"},"content":" - 2a2. Healthcare worker enters new NRIC.","lastModifiedDate":"2024-03-16"},{"lineNumber":412,"author":{"gitId":"alex-setyawan"},"content":" - Steps 2a1-2a2 are repeated until the data entered are correct or Healthcare worker cancels the action. Use case resumes from step 3.","lastModifiedDate":"2024-03-16"},{"lineNumber":413,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":414,"author":{"gitId":"laney0808"},"content":" 2b. IABS cannot find the specified information.","lastModifiedDate":"2024-03-17"},{"lineNumber":415,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":416,"author":{"gitId":"alex-setyawan"},"content":" - 2b1. IABS alerts healthcare worker that the specified information is not found.","lastModifiedDate":"2024-03-16"},{"lineNumber":417,"author":{"gitId":"alex-setyawan"},"content":" - 2b2. Healthcare worker enters new field.","lastModifiedDate":"2024-03-16"},{"lineNumber":418,"author":{"gitId":"alex-setyawan"},"content":" - Steps 2b1-2b2 are repeated until the data entered are correct or Healthcare worker cancels the action. Use case resumes from step 3.","lastModifiedDate":"2024-03-16"},{"lineNumber":419,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":420,"author":{"gitId":"laney0808"},"content":" 2c. Healthcare worker chooses to delete a mandatory field.","lastModifiedDate":"2024-03-17"},{"lineNumber":421,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":422,"author":{"gitId":"alex-setyawan"},"content":" - 2c1. IABS alerts healthcare worker that mandatory field cannot be deleted.","lastModifiedDate":"2024-03-16"},{"lineNumber":423,"author":{"gitId":"alex-setyawan"},"content":" - 2c2. Healthcare worker enters new field.","lastModifiedDate":"2024-03-16"},{"lineNumber":424,"author":{"gitId":"alex-setyawan"},"content":" - Steps 2c1-2c2 are repeated until the data entered are correct or Healthcare worker cancels the action. Use case resumes from step 3.","lastModifiedDate":"2024-03-16"},{"lineNumber":425,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":426,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":427,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":428,"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":429,"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":430,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":431,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":432,"author":{"gitId":"alex-setyawan"},"content":"Data Requirements:","lastModifiedDate":"2024-03-16"},{"lineNumber":433,"author":{"gitId":"alex-setyawan"},"content":"* the app should have high data persistency","lastModifiedDate":"2024-03-16"},{"lineNumber":434,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":435,"author":{"gitId":"alex-setyawan"},"content":"Environment Requirements:","lastModifiedDate":"2024-03-16"},{"lineNumber":436,"author":{"gitId":"alex-setyawan"},"content":"* the app should work on both 32-bit and 64-bit environments","lastModifiedDate":"2024-03-16"},{"lineNumber":437,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":438,"author":{"gitId":"alex-setyawan"},"content":"Accessibility:","lastModifiedDate":"2024-03-16"},{"lineNumber":439,"author":{"gitId":"alex-setyawan"},"content":"* the app should be easily downloaded from websites/app stores, and need no prior setup","lastModifiedDate":"2024-03-16"},{"lineNumber":440,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":441,"author":{"gitId":"alex-setyawan"},"content":"Capacity:","lastModifiedDate":"2024-03-16"},{"lineNumber":442,"author":{"gitId":"alex-setyawan"},"content":"* the app should be able to store 10000 profiles ","lastModifiedDate":"2024-03-16"},{"lineNumber":443,"author":{"gitId":"alex-setyawan"},"content":"* the app should not exceed 10GB in storage space","lastModifiedDate":"2024-03-16"},{"lineNumber":444,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":445,"author":{"gitId":"alex-setyawan"},"content":"Compliance with regulations:","lastModifiedDate":"2024-03-16"},{"lineNumber":446,"author":{"gitId":"alex-setyawan"},"content":"* personal data collection on the app should adhere to the Personal Data Protection Act (PDPA)","lastModifiedDate":"2024-03-16"},{"lineNumber":447,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":448,"author":{"gitId":"alex-setyawan"},"content":"Extensibility:","lastModifiedDate":"2024-03-16"},{"lineNumber":449,"author":{"gitId":"alex-setyawan"},"content":"* the app should enable new profile fields to be added easily","lastModifiedDate":"2024-03-16"},{"lineNumber":450,"author":{"gitId":"alex-setyawan"},"content":"* the app should be convenient to expand its capacity when needed","lastModifiedDate":"2024-03-16"},{"lineNumber":451,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":452,"author":{"gitId":"alex-setyawan"},"content":"Interoperability:","lastModifiedDate":"2024-03-16"},{"lineNumber":453,"author":{"gitId":"alex-setyawan"},"content":"* the app should be compatible with Windows, MacOS, Linux platforms","lastModifiedDate":"2024-03-16"},{"lineNumber":454,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":455,"author":{"gitId":"alex-setyawan"},"content":"Maintainability:","lastModifiedDate":"2024-03-16"},{"lineNumber":456,"author":{"gitId":"alex-setyawan"},"content":"* the app should use automated testing","lastModifiedDate":"2024-03-16"},{"lineNumber":457,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":458,"author":{"gitId":"alex-setyawan"},"content":"Performance requirements:","lastModifiedDate":"2024-03-16"},{"lineNumber":459,"author":{"gitId":"alex-setyawan"},"content":"* the app should respond to queries within 1 second","lastModifiedDate":"2024-03-16"},{"lineNumber":460,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":461,"author":{"gitId":"alex-setyawan"},"content":"Process requirements:","lastModifiedDate":"2024-03-16"},{"lineNumber":462,"author":{"gitId":"alex-setyawan"},"content":"* the project should adhere to a schedule to deliver new features fortnightly","lastModifiedDate":"2024-03-16"},{"lineNumber":463,"author":{"gitId":"alex-setyawan"},"content":"* the project should aim to solve bugs found in one version by the next version","lastModifiedDate":"2024-03-16"},{"lineNumber":464,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":465,"author":{"gitId":"alex-setyawan"},"content":"Quality requirements:","lastModifiedDate":"2024-03-16"},{"lineNumber":466,"author":{"gitId":"alex-setyawan"},"content":"* the app should be usable by doctors/nurses/receptionists with limited guidance","lastModifiedDate":"2024-03-16"},{"lineNumber":467,"author":{"gitId":"alex-setyawan"},"content":"* the app should be faster to use by typing queries than using the mouse","lastModifiedDate":"2024-03-16"},{"lineNumber":468,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":469,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":470,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":471,"author":{"gitId":"alex-setyawan"},"content":"1. **Patient Name**: The name of the patient. Case insensitive alphabetical characters with spaces, capped at 30 characters.","lastModifiedDate":"2024-03-16"},{"lineNumber":472,"author":{"gitId":"alex-setyawan"},"content":"2. **NRIC**: National Registration Identity Card number, follows Singapore NRIC format.","lastModifiedDate":"2024-03-16"},{"lineNumber":473,"author":{"gitId":"alex-setyawan"},"content":"3. **Date of Birth (DOB)**: The patient\u0027s date of birth, in the format `yyyy-MM-dd`.","lastModifiedDate":"2024-03-16"},{"lineNumber":474,"author":{"gitId":"alex-setyawan"},"content":"4. **Sex**: The biological sex of the patient, limited to Male/Female.","lastModifiedDate":"2024-03-16"},{"lineNumber":475,"author":{"gitId":"alex-setyawan"},"content":"5. **Phone Number**: The contact number of the patient, numbers with a plus sign.","lastModifiedDate":"2024-03-16"},{"lineNumber":476,"author":{"gitId":"alex-setyawan"},"content":"6. **Address**: The home address of the patient, alphanumerical characters with spaces.","lastModifiedDate":"2024-03-16"},{"lineNumber":477,"author":{"gitId":"alex-setyawan"},"content":"7. **Email**: The email address of the patient, follows a valid format: `\u003ca-zA-Z0-9\u003e@\u003ca-zA-Z0-9\u003e.com`.","lastModifiedDate":"2024-03-16"},{"lineNumber":478,"author":{"gitId":"alex-setyawan"},"content":"8. **Country of Nationality**: The country name of the patient\u0027s nationality, alphabetical characters with spaces.","lastModifiedDate":"2024-03-16"},{"lineNumber":479,"author":{"gitId":"alex-setyawan"},"content":"9. **Date of Admission (DOA)**: The date when the patient was admitted for the current visit, in the format `yyyy-MM-dd`.","lastModifiedDate":"2024-03-16"},{"lineNumber":480,"author":{"gitId":"alex-setyawan"},"content":"10. **Blood Type**: The blood type of the patient, accepts A/B/AB/O (+ or -).","lastModifiedDate":"2024-03-16"},{"lineNumber":481,"author":{"gitId":"alex-setyawan"},"content":"11. **Allergies**: Any allergies the patient may have, alphanumerical characters with spaces.","lastModifiedDate":"2024-03-16"},{"lineNumber":482,"author":{"gitId":"alex-setyawan"},"content":"12. **Conditions**: Any prior medical conditions of the patient.","lastModifiedDate":"2024-03-16"},{"lineNumber":483,"author":{"gitId":"alex-setyawan"},"content":"13. **Symptoms**: The latest symptoms experienced by the patient.","lastModifiedDate":"2024-03-16"},{"lineNumber":484,"author":{"gitId":"alex-setyawan"},"content":"14. **Diagnosis**: The latest diagnosis of the patient\u0027s condition.","lastModifiedDate":"2024-03-16"},{"lineNumber":485,"author":{"gitId":"alex-setyawan"},"content":"15. **Status**: The current infectious status of the patient, can be healthy (green), at risk (yellow), or infected (red).","lastModifiedDate":"2024-03-16"},{"lineNumber":486,"author":{"gitId":"alex-setyawan"},"content":"16. **Location**: A specific area or zone, which can be a neighbourhood or an institution (school).","lastModifiedDate":"2024-03-16"},{"lineNumber":487,"author":{"gitId":"alex-setyawan"},"content":"17. **Cluster ID**: Unique identifier for a cluster of related cases.","lastModifiedDate":"2024-03-16"},{"lineNumber":488,"author":{"gitId":"alex-setyawan"},"content":"18. **Fields**: The fields of the patient\u0027s information, such as name, status, contact.","lastModifiedDate":"2024-03-16"},{"lineNumber":489,"author":{"gitId":"alex-setyawan"},"content":"19. **Infection Source**: The source of infection if known.","lastModifiedDate":"2024-03-16"},{"lineNumber":490,"author":{"gitId":"alex-setyawan"},"content":"20. **Cluster Members**: Patients who are part of the cluster.","lastModifiedDate":"2024-03-16"},{"lineNumber":491,"author":{"gitId":"alex-setyawan"},"content":"21. **Cluster Location**: Location associated with the cluster.","lastModifiedDate":"2024-03-16"},{"lineNumber":492,"author":{"gitId":"alex-setyawan"},"content":"22. **Date of First Infection**: The date when the first infection within the cluster occurred.","lastModifiedDate":"2024-03-16"},{"lineNumber":493,"author":{"gitId":"alex-setyawan"},"content":"23. **Cluster Status**: The current status of the cluster, such as active, under observation, resolved, etc.","lastModifiedDate":"2024-03-16"},{"lineNumber":494,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":495,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":496,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":497,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":498,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":499,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":500,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":501,"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":502,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":503,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":504,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":505,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":506,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":507,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":508,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":509,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":510,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":511,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":512,"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":513,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":514,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":515,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":516,"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":517,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":518,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":519,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":520,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":521,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":522,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":523,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":524,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":525,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":526,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":527,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":528,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":529,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":530,"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":531,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":532,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":533,"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":534,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":535,"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":536,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":537,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":538,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":539,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":540,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":541,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":542,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":543,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":544,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":545,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":546,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":547,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-24"}],"authorContributionMap":{"alex-setyawan":78,"laney0808":118,"-":351}},{"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":"jovantanyk"},"content":"## Introduction","lastModifiedDate":"2024-02-25"},{"lineNumber":6,"author":{"gitId":"jovantanyk"},"content":"As government databases grow, information management might prove complex for civil servants, especially so for personal data. **ImmuniMate** offers a way to record comprehensive information about every contact, while ensuring timely updates and avoiding duplications/contradictions. It also seeks to establish links between contacts for speedier information retrieval.","lastModifiedDate":"2024-02-25"},{"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":"-"},"content":"1. Download the latest `addressbook.jar` from [here](https://github.com/se-edu/addressbook-level3/releases).","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your AddressBook.","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar addressbook.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2023-01-01"},{"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":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"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":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2023-01-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01"},{"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":"-"},"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":"-"},"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":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":"jovantanyk"},"content":" e.g. `[t/TAG]…​` can be used as ` ` (i.e. 0 times), `t/friend`, `t/friend t/family` etc.","lastModifiedDate":"2024-02-25"},{"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":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23"},{"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":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"### Adding a person: `add`","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"Adds a person to the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​`","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Tip:**","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"A person can have any number of tags (including 0)","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"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":87,"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":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"### Listing all persons : `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"Shows a list of all persons in the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"### Editing a person : `edit`","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"Edits an existing person in the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"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":102,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"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":105,"author":{"gitId":"-"},"content":"* You can remove all the person’s tags by typing `t/` without","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" specifying any tags after it.","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"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":110,"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":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"### Locating persons by name: `find`","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"Finds persons whose names contain any of the given keywords.","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":"* `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":"Deletes the specified person from the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"* Deletes the person at the specified `INDEX`.","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"* `list` followed by `delete 2` deletes the 2nd person in the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"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":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":"Clears all entries from the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"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":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":162,"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":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":164,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e:exclamation: **Caution:**","lastModifiedDate":"2021-02-04"},{"lineNumber":165,"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.\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":166,"author":{"gitId":"-"},"content":"Furthermore, certain edits can cause the AddressBook to behave in unexpected ways (e.g., if a value entered is outside of the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.","lastModifiedDate":"2024-02-09"},{"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":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04"},{"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":"## 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":"-"},"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":193,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"**Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3`","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"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":196,"author":{"gitId":"-"},"content":"**Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake`","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":"**List** | `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"jovantanyk":3,"-":195}},{"path":"docs/diagrams/CreateCommand.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"laney0808"},"content":"@startuml","lastModifiedDate":"2024-03-23"},{"lineNumber":2,"author":{"gitId":"laney0808"},"content":"!include style.puml","lastModifiedDate":"2024-03-23"},{"lineNumber":3,"author":{"gitId":"laney0808"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-23"},{"lineNumber":4,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"laney0808"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"laney0808"},"content":"participant \":CreateCommand\" as CreateCommand MODEL_COLOR","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"laney0808"},"content":"participant \":ModelManager\" as ModelManager MODEL_COLOR","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"laney0808"},"content":"participant \":ImmuniMate\" as ImmuniMate MODEL_COLOR","lastModifiedDate":"2024-03-23"},{"lineNumber":9,"author":{"gitId":"laney0808"},"content":"participant \":UniquePersonList\" as UniquePersonList MODEL_COLOR","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"laney0808"},"content":"participant \"internalList: ObservableList\u003cPerson\u003e\" as internalList MODEL_COLOR","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"laney0808"},"content":"participant \"p:Person\" as p MODEL_COLOR","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"laney0808"},"content":"end box","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"laney0808"},"content":"[-\u003e CreateCommand : execute()","lastModifiedDate":"2024-03-23"},{"lineNumber":15,"author":{"gitId":"laney0808"},"content":"activate CreateCommand","lastModifiedDate":"2024-03-23"},{"lineNumber":16,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"laney0808"},"content":"CreateCommand -\u003e ModelManager : hasPerson(p)","lastModifiedDate":"2024-03-23"},{"lineNumber":18,"author":{"gitId":"laney0808"},"content":"activate ModelManager","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"laney0808"},"content":"ModelManager -\u003e ImmuniMate: hasPerson(p)","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"laney0808"},"content":"activate ImmuniMate","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"laney0808"},"content":"ImmuniMate --\u003e UniquePersonList : contains(p)","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"laney0808"},"content":"activate UniquePersonList","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"laney0808"},"content":"UniquePersonList -\u003e internalList : stream().anyMatch(p::isSamePerson)","lastModifiedDate":"2024-03-23"},{"lineNumber":27,"author":{"gitId":"laney0808"},"content":"activate internalList","lastModifiedDate":"2024-03-23"},{"lineNumber":28,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":29,"author":{"gitId":"laney0808"},"content":"internalList -\u003e p : isSamePerson(p)","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"laney0808"},"content":"activate p","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"laney0808"},"content":"p --\u003e internalList","lastModifiedDate":"2024-03-23"},{"lineNumber":33,"author":{"gitId":"laney0808"},"content":"deactivate p","lastModifiedDate":"2024-03-23"},{"lineNumber":34,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":35,"author":{"gitId":"laney0808"},"content":"internalList --\u003e UniquePersonList","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"laney0808"},"content":"deactivate internalList","lastModifiedDate":"2024-03-23"},{"lineNumber":37,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"laney0808"},"content":"UniquePersonList --\u003e ImmuniMate","lastModifiedDate":"2024-03-23"},{"lineNumber":39,"author":{"gitId":"laney0808"},"content":"deactivate UniquePersonList","lastModifiedDate":"2024-03-23"},{"lineNumber":40,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"laney0808"},"content":"ImmuniMate --\u003e ModelManager","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"laney0808"},"content":"deactivate ImmuniMate","lastModifiedDate":"2024-03-23"},{"lineNumber":43,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":44,"author":{"gitId":"laney0808"},"content":"ModelManager --\u003e CreateCommand","lastModifiedDate":"2024-03-23"},{"lineNumber":45,"author":{"gitId":"laney0808"},"content":"deactivate ModelManager","lastModifiedDate":"2024-03-23"},{"lineNumber":46,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":47,"author":{"gitId":"laney0808"},"content":"[\u003c--CreateCommand","lastModifiedDate":"2024-03-23"},{"lineNumber":48,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":49,"author":{"gitId":"laney0808"},"content":"@enduml","lastModifiedDate":"2024-03-23"}],"authorContributionMap":{"laney0808":49}},{"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":"-"},"content":"Class UniquePersonList","lastModifiedDate":"2021-07-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Class Person","lastModifiedDate":"2019-07-03"},{"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":"-"},"content":"Class Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"Class Tag","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":23,"author":{"gitId":"-"},"content":"Class I #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"AddressBook .up.|\u003e ReadOnlyAddressBook","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"ModelManager .up.|\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"Model .right.\u003e ReadOnlyUserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":33,"author":{"gitId":"-"},"content":"Model .left.\u003e ReadOnlyAddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"ModelManager -left-\u003e \"1\" AddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":"ModelManager -right-\u003e \"1\" UserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"UserPrefs .up.|\u003e ReadOnlyUserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"AddressBook *--\u003e \"1\" UniquePersonList","lastModifiedDate":"2019-07-30"},{"lineNumber":39,"author":{"gitId":"-"},"content":"UniquePersonList --\u003e \"~* all\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":40,"author":{"gitId":"jovantanyk"},"content":"Person *--\u003e \"1\" Nric","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"jovantanyk"},"content":"Person *--\u003e \"1\" Name","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"jovantanyk"},"content":"Person *--\u003e \"1\" Phone","lastModifiedDate":"2024-03-23"},{"lineNumber":43,"author":{"gitId":"jovantanyk"},"content":"Person *--\u003e \"1\" Address","lastModifiedDate":"2024-03-23"},{"lineNumber":44,"author":{"gitId":"jovantanyk"},"content":"Person *--\u003e \"1\" DateOfBirth","lastModifiedDate":"2024-03-23"},{"lineNumber":45,"author":{"gitId":"jovantanyk"},"content":"Person *--\u003e \"1\" Sex","lastModifiedDate":"2024-03-23"},{"lineNumber":46,"author":{"gitId":"jovantanyk"},"content":"Person *--\u003e \"1\" Status","lastModifiedDate":"2024-03-23"},{"lineNumber":47,"author":{"gitId":"jovantanyk"},"content":"Person *--\u003e \"0..*\" Tags","lastModifiedDate":"2024-03-23"},{"lineNumber":48,"author":{"gitId":"jovantanyk"},"content":"Person *--\u003e \"0..1\" Email","lastModifiedDate":"2024-03-23"},{"lineNumber":49,"author":{"gitId":"jovantanyk"},"content":"Person *--\u003e \"0..1\" Country","lastModifiedDate":"2024-03-23"},{"lineNumber":50,"author":{"gitId":"jovantanyk"},"content":"Person *--\u003e \"0..1\" Allergies","lastModifiedDate":"2024-03-23"},{"lineNumber":51,"author":{"gitId":"jovantanyk"},"content":"Person *--\u003e \"0..1\" BloodType","lastModifiedDate":"2024-03-23"},{"lineNumber":52,"author":{"gitId":"jovantanyk"},"content":"Person *--\u003e \"0..1\" Condition","lastModifiedDate":"2024-03-23"},{"lineNumber":53,"author":{"gitId":"jovantanyk"},"content":"Person *--\u003e \"0..1\" DateOfAdmission","lastModifiedDate":"2024-03-23"},{"lineNumber":54,"author":{"gitId":"jovantanyk"},"content":"Person *--\u003e \"0..1\" Diagnosis","lastModifiedDate":"2024-03-23"},{"lineNumber":55,"author":{"gitId":"jovantanyk"},"content":"Person *--\u003e \"0..1\" Symptom","lastModifiedDate":"2024-03-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":"Person -[hidden]up--\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":"UniquePersonList -[hidden]right-\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":"Name -[hidden]right-\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":61,"author":{"gitId":"-"},"content":"Phone -[hidden]right-\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":62,"author":{"gitId":"-"},"content":"Address -[hidden]right-\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":64,"author":{"gitId":"-"},"content":"ModelManager --\u003e \"~* filtered\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":65,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"jovantanyk":16,"-":49}},{"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":"jovantanyk"},"content":"title: ImmuniMate","lastModifiedDate":"2024-02-25"},{"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":"jovantanyk"},"content":"**ImmuniMate is a desktop application aimed at General Practitioners and Healthcare Professionals**. The application intends to assist users in managing patient information, and tracking potential infectious.","lastModifiedDate":"2024-02-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"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":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"* If you are interested about developing AddressBook, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.","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":"**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":{"jovantanyk":2,"-":17}},{"path":"docs/team/jovantanyk.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"jovantanyk"},"content":"---","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"jovantanyk"},"content":"layout: page","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"jovantanyk"},"content":"title: Jovan Tan\u0027s Project Portfolio Page","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"jovantanyk"},"content":"---","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"jovantanyk"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"jovantanyk"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"jovantanyk"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"jovantanyk"},"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":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"jovantanyk"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"jovantanyk"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"jovantanyk"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"jovantanyk"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"jovantanyk"},"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":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"jovantanyk"},"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":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"jovantanyk"},"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":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"jovantanyk"},"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":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"jovantanyk"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"jovantanyk"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"jovantanyk"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"jovantanyk"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"jovantanyk"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"jovantanyk"},"content":"* **Project management**:","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"jovantanyk"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"jovantanyk"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"jovantanyk"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"jovantanyk"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"jovantanyk"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"jovantanyk"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"jovantanyk"},"content":"* **Documentation**:","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"jovantanyk"},"content":" * User Guide:","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"jovantanyk"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"jovantanyk"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"jovantanyk"},"content":" * Developer Guide:","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"jovantanyk"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"jovantanyk"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"jovantanyk"},"content":"* **Community**:","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"jovantanyk"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"jovantanyk"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"jovantanyk"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"jovantanyk"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"jovantanyk"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"jovantanyk"},"content":"* **Tools**:","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"jovantanyk"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"jovantanyk"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"jovantanyk"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"jovantanyk"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"jovantanyk":46}},{"path":"docs/team/laney0808.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"laney0808"},"content":"---","lastModifiedDate":"2024-02-26"},{"lineNumber":2,"author":{"gitId":"laney0808"},"content":"layout: page","lastModifiedDate":"2024-02-26"},{"lineNumber":3,"author":{"gitId":"laney0808"},"content":"title: Zhang Lanyu\u0027s Project Portfolio Page","lastModifiedDate":"2024-02-26"},{"lineNumber":4,"author":{"gitId":"laney0808"},"content":"---","lastModifiedDate":"2024-02-26"},{"lineNumber":5,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":6,"author":{"gitId":"laney0808"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-02-26"},{"lineNumber":7,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":8,"author":{"gitId":"laney0808"},"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":"2024-02-26"},{"lineNumber":9,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":10,"author":{"gitId":"laney0808"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-02-26"},{"lineNumber":11,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":12,"author":{"gitId":"laney0808"},"content":"* **New Feature**: Added the ability to update patient\u0027s information in feature list.","lastModifiedDate":"2024-02-26"},{"lineNumber":13,"author":{"gitId":"laney0808"},"content":" * What it does: Allows user to update any field of any specified patient.","lastModifiedDate":"2024-02-26"},{"lineNumber":14,"author":{"gitId":"laney0808"},"content":" * Justification: This feature allows the user to update the patient\u0027s health condition and keep track of their contact information in a timely manner.","lastModifiedDate":"2024-02-26"},{"lineNumber":15,"author":{"gitId":"laney0808"},"content":" * Highlights: This feature enhances the convenience of usage as the user no longer need to delete the old record and key in new record with most of the information to be repeated.","lastModifiedDate":"2024-02-26"},{"lineNumber":16,"author":{"gitId":"laney0808"},"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":"2024-02-26"},{"lineNumber":17,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":18,"author":{"gitId":"laney0808"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-02-26"},{"lineNumber":19,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":20,"author":{"gitId":"laney0808"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-02-26"},{"lineNumber":21,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":22,"author":{"gitId":"laney0808"},"content":"* **Project management**:","lastModifiedDate":"2024-02-26"},{"lineNumber":23,"author":{"gitId":"laney0808"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-02-26"},{"lineNumber":24,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":25,"author":{"gitId":"laney0808"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-02-26"},{"lineNumber":26,"author":{"gitId":"laney0808"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-02-26"},{"lineNumber":27,"author":{"gitId":"laney0808"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-02-26"},{"lineNumber":28,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":29,"author":{"gitId":"laney0808"},"content":"* **Documentation**:","lastModifiedDate":"2024-02-26"},{"lineNumber":30,"author":{"gitId":"laney0808"},"content":" * User Guide:","lastModifiedDate":"2024-02-26"},{"lineNumber":31,"author":{"gitId":"laney0808"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-02-26"},{"lineNumber":32,"author":{"gitId":"laney0808"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-02-26"},{"lineNumber":33,"author":{"gitId":"laney0808"},"content":" * Developer Guide:","lastModifiedDate":"2024-02-26"},{"lineNumber":34,"author":{"gitId":"laney0808"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-02-26"},{"lineNumber":35,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":36,"author":{"gitId":"laney0808"},"content":"* **Community**:","lastModifiedDate":"2024-02-26"},{"lineNumber":37,"author":{"gitId":"laney0808"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-02-26"},{"lineNumber":38,"author":{"gitId":"laney0808"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-02-26"},{"lineNumber":39,"author":{"gitId":"laney0808"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-02-26"},{"lineNumber":40,"author":{"gitId":"laney0808"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-02-26"},{"lineNumber":41,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":42,"author":{"gitId":"laney0808"},"content":"* **Tools**:","lastModifiedDate":"2024-02-26"},{"lineNumber":43,"author":{"gitId":"laney0808"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-02-26"},{"lineNumber":44,"author":{"gitId":"laney0808"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-02-26"},{"lineNumber":45,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-02-26"},{"lineNumber":46,"author":{"gitId":"laney0808"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-02-26"}],"authorContributionMap":{"laney0808":46}},{"path":"docs/team/natleong.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"NatLeong"},"content":"---","lastModifiedDate":"2024-03-09"},{"lineNumber":2,"author":{"gitId":"NatLeong"},"content":"layout: page","lastModifiedDate":"2024-03-09"},{"lineNumber":3,"author":{"gitId":"NatLeong"},"content":"title: Natalie Leong\u0027s Project Portfolio Page","lastModifiedDate":"2024-03-09"},{"lineNumber":4,"author":{"gitId":"NatLeong"},"content":"---","lastModifiedDate":"2024-03-09"},{"lineNumber":5,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":6,"author":{"gitId":"NatLeong"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-03-09"},{"lineNumber":7,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":8,"author":{"gitId":"NatLeong"},"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":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"NatLeong"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-09"},{"lineNumber":11,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":12,"author":{"gitId":"NatLeong"},"content":"* **New Feature**: Added the ability to update patient\u0027s information in feature list.","lastModifiedDate":"2024-03-09"},{"lineNumber":13,"author":{"gitId":"NatLeong"},"content":" * What it does: Allows user to update any field of any specified patient.","lastModifiedDate":"2024-03-09"},{"lineNumber":14,"author":{"gitId":"NatLeong"},"content":" * Justification: This feature allows the user to update the patient\u0027s health condition and keep track of their contact information in a timely manner.","lastModifiedDate":"2024-03-09"},{"lineNumber":15,"author":{"gitId":"NatLeong"},"content":" * Highlights: This feature enhances the convenience of usage as the user no longer need to delete the old record and key in new record with most of the information to be repeated.","lastModifiedDate":"2024-03-09"},{"lineNumber":16,"author":{"gitId":"NatLeong"},"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":"2024-03-09"},{"lineNumber":17,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":18,"author":{"gitId":"NatLeong"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-03-09"},{"lineNumber":19,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":20,"author":{"gitId":"NatLeong"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-03-09"},{"lineNumber":21,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":22,"author":{"gitId":"NatLeong"},"content":"* **Project management**:","lastModifiedDate":"2024-03-09"},{"lineNumber":23,"author":{"gitId":"NatLeong"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-03-09"},{"lineNumber":24,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":25,"author":{"gitId":"NatLeong"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-03-09"},{"lineNumber":26,"author":{"gitId":"NatLeong"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-03-09"},{"lineNumber":27,"author":{"gitId":"NatLeong"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-03-09"},{"lineNumber":28,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":29,"author":{"gitId":"NatLeong"},"content":"* **Documentation**:","lastModifiedDate":"2024-03-09"},{"lineNumber":30,"author":{"gitId":"NatLeong"},"content":" * User Guide:","lastModifiedDate":"2024-03-09"},{"lineNumber":31,"author":{"gitId":"NatLeong"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-03-09"},{"lineNumber":32,"author":{"gitId":"NatLeong"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-03-09"},{"lineNumber":33,"author":{"gitId":"NatLeong"},"content":" * Developer Guide:","lastModifiedDate":"2024-03-09"},{"lineNumber":34,"author":{"gitId":"NatLeong"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-03-09"},{"lineNumber":35,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":36,"author":{"gitId":"NatLeong"},"content":"* **Community**:","lastModifiedDate":"2024-03-09"},{"lineNumber":37,"author":{"gitId":"NatLeong"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-03-09"},{"lineNumber":38,"author":{"gitId":"NatLeong"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-03-09"},{"lineNumber":39,"author":{"gitId":"NatLeong"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-03-09"},{"lineNumber":40,"author":{"gitId":"NatLeong"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-03-09"},{"lineNumber":41,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":42,"author":{"gitId":"NatLeong"},"content":"* **Tools**:","lastModifiedDate":"2024-03-09"},{"lineNumber":43,"author":{"gitId":"NatLeong"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-03-09"},{"lineNumber":44,"author":{"gitId":"NatLeong"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-03-09"},{"lineNumber":45,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":46,"author":{"gitId":"NatLeong"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-03-09"}],"authorContributionMap":{"NatLeong":46}},{"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":"laney0808"},"content":"import seedu.address.model.ImmuniMate;","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":"import seedu.address.model.ReadOnlyImmuniMate;","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":" public static final Version VERSION \u003d new Version(0, 2, 2, true);","lastModifiedDate":"2023-08-21"},{"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":"laney0808"},"content":" Optional\u003cReadOnlyImmuniMate\u003e addressBookOptional;","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"laney0808"},"content":" ReadOnlyImmuniMate initialData;","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" initialData \u003d new ImmuniMate();","lastModifiedDate":"2024-03-20"},{"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":{"laney0808":5,"-":181}},{"path":"src/main/java/seedu/address/commons/util/JsonUtil.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":"","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":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-10-07"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"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":"jovantanyk"},"content":" .addDeserializer(Level.class, new LevelDeserializer(Level.class))","lastModifiedDate":"2024-03-24"},{"lineNumber":41,"author":{"gitId":"jovantanyk"},"content":" .addSerializer(new OptionalSerializer()));","lastModifiedDate":"2024-03-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" static \u003cT\u003e void serializeObjectToJsonFile(Path jsonFile, T objectToSerialize) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":" FileUtil.writeToFile(jsonFile, toJsonString(objectToSerialize));","lastModifiedDate":"2016-10-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":" static \u003cT\u003e T deserializeObjectFromJsonFile(Path jsonFile, Class\u003cT\u003e classOfObjectToDeserialize)","lastModifiedDate":"2018-04-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2016-10-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return fromJsonString(FileUtil.readFromFile(jsonFile), classOfObjectToDeserialize);","lastModifiedDate":"2016-10-07"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-07"},{"lineNumber":53,"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":54,"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":55,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * @param filePath cannot be null.","lastModifiedDate":"2016-10-07"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * @param classOfObjectToDeserialize JSON file has to correspond to the structure in the class given here.","lastModifiedDate":"2023-06-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * @throws DataLoadingException if loading of the JSON file failed.","lastModifiedDate":"2023-06-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-07"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static \u003cT\u003e Optional\u003cT\u003e readJsonFile(","lastModifiedDate":"2016-10-07"},{"lineNumber":61,"author":{"gitId":"-"},"content":" Path filePath, Class\u003cT\u003e classOfObjectToDeserialize) throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":62,"author":{"gitId":"-"},"content":" requireNonNull(filePath);","lastModifiedDate":"2017-05-15"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":64,"author":{"gitId":"-"},"content":" if (!Files.exists(filePath)) {","lastModifiedDate":"2018-04-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2016-10-07"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":67,"author":{"gitId":"-"},"content":" logger.info(\"JSON file \" + filePath + \" found.\");","lastModifiedDate":"2023-01-03"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":" T jsonFile;","lastModifiedDate":"2016-10-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":71,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-10-07"},{"lineNumber":72,"author":{"gitId":"-"},"content":" jsonFile \u003d deserializeObjectFromJsonFile(filePath, classOfObjectToDeserialize);","lastModifiedDate":"2018-04-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-10-07"},{"lineNumber":74,"author":{"gitId":"-"},"content":" logger.warning(\"Error reading from jsonFile file \" + filePath + \": \" + e);","lastModifiedDate":"2018-04-21"},{"lineNumber":75,"author":{"gitId":"-"},"content":" throw new DataLoadingException(e);","lastModifiedDate":"2023-06-14"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return Optional.of(jsonFile);","lastModifiedDate":"2016-10-07"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":81,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-07"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * Saves the Json object to the specified file.","lastModifiedDate":"2016-10-07"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * Overwrites existing file if it exists, creates a new file if it doesn\u0027t.","lastModifiedDate":"2016-10-07"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * @param jsonFile cannot be null","lastModifiedDate":"2016-10-07"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * @param filePath cannot be null","lastModifiedDate":"2016-10-07"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * @throws IOException if there was an error during writing to the file","lastModifiedDate":"2016-10-07"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-07"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public static \u003cT\u003e void saveJsonFile(T jsonFile, Path filePath) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":" requireNonNull(filePath);","lastModifiedDate":"2017-05-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" requireNonNull(jsonFile);","lastModifiedDate":"2017-05-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":92,"author":{"gitId":"-"},"content":" serializeObjectToJsonFile(filePath, jsonFile);","lastModifiedDate":"2018-04-21"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * Converts a given string representation of a JSON data to instance of a class","lastModifiedDate":"2016-10-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * @param \u003cT\u003e The generic type to create an instance of","lastModifiedDate":"2016-10-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * @return The instance of T with the specified values in the JSON string","lastModifiedDate":"2016-10-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public static \u003cT\u003e T fromJsonString(String json, Class\u003cT\u003e instanceClass) throws IOException {","lastModifiedDate":"2016-10-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":" return objectMapper.readValue(json, instanceClass);","lastModifiedDate":"2016-10-19"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":105,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-19"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * Converts a given instance of a class into its JSON data string representation","lastModifiedDate":"2016-10-19"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * @param instance The T object to be converted into the JSON string","lastModifiedDate":"2016-10-19"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * @param \u003cT\u003e The generic type to create an instance of","lastModifiedDate":"2016-10-19"},{"lineNumber":109,"author":{"gitId":"-"},"content":" * @return JSON data representation of the given class instance, in string","lastModifiedDate":"2016-10-19"},{"lineNumber":110,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":111,"author":{"gitId":"-"},"content":" public static \u003cT\u003e String toJsonString(T instance) throws JsonProcessingException {","lastModifiedDate":"2016-10-19"},{"lineNumber":112,"author":{"gitId":"-"},"content":" return objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(instance);","lastModifiedDate":"2016-10-19"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":115,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":116,"author":{"gitId":"-"},"content":" * Contains methods that retrieve logging level from serialized string.","lastModifiedDate":"2017-08-16"},{"lineNumber":117,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":118,"author":{"gitId":"-"},"content":" private static class LevelDeserializer extends FromStringDeserializer\u003cLevel\u003e {","lastModifiedDate":"2016-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" protected LevelDeserializer(Class\u003c?\u003e vc) {","lastModifiedDate":"2016-08-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":" super(vc);","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" protected Level _deserialize(String value, DeserializationContext ctxt) {","lastModifiedDate":"2018-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" return getLoggingLevel(value);","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":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" * Gets the logging level that matches loggingLevelString","lastModifiedDate":"2016-08-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":" * \u003cp\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":" * Returns null if there are no matches","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":" private Level getLoggingLevel(String loggingLevelString) {","lastModifiedDate":"2016-08-08"},{"lineNumber":136,"author":{"gitId":"-"},"content":" return Level.parse(loggingLevelString);","lastModifiedDate":"2016-09-09"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":" public Class\u003cLevel\u003e handledType() {","lastModifiedDate":"2016-08-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":" return Level.class;","lastModifiedDate":"2016-08-08"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"jovantanyk":2,"-":143}},{"path":"src/main/java/seedu/address/commons/util/OptionalSerializer.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jovantanyk"},"content":"package seedu.address.commons.util;","lastModifiedDate":"2024-03-24"},{"lineNumber":2,"author":{"gitId":"jovantanyk"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":3,"author":{"gitId":"jovantanyk"},"content":"import java.io.IOException;","lastModifiedDate":"2024-03-24"},{"lineNumber":4,"author":{"gitId":"jovantanyk"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-24"},{"lineNumber":5,"author":{"gitId":"jovantanyk"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":6,"author":{"gitId":"jovantanyk"},"content":"import com.fasterxml.jackson.core.JsonGenerator;","lastModifiedDate":"2024-03-24"},{"lineNumber":7,"author":{"gitId":"jovantanyk"},"content":"import com.fasterxml.jackson.databind.JsonSerializer;","lastModifiedDate":"2024-03-24"},{"lineNumber":8,"author":{"gitId":"jovantanyk"},"content":"import com.fasterxml.jackson.databind.SerializerProvider;","lastModifiedDate":"2024-03-24"},{"lineNumber":9,"author":{"gitId":"jovantanyk"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":10,"author":{"gitId":"jovantanyk"},"content":"/**","lastModifiedDate":"2024-03-24"},{"lineNumber":11,"author":{"gitId":"jovantanyk"},"content":" * A Serializer for handling Optional values and converting them into","lastModifiedDate":"2024-03-24"},{"lineNumber":12,"author":{"gitId":"jovantanyk"},"content":" * proper JSON strings with correct null formatting.","lastModifiedDate":"2024-03-24"},{"lineNumber":13,"author":{"gitId":"jovantanyk"},"content":" */","lastModifiedDate":"2024-03-24"},{"lineNumber":14,"author":{"gitId":"jovantanyk"},"content":"public class OptionalSerializer extends JsonSerializer\u003cOptional\u003c?\u003e\u003e {","lastModifiedDate":"2024-03-24"},{"lineNumber":15,"author":{"gitId":"jovantanyk"},"content":" @Override","lastModifiedDate":"2024-03-24"},{"lineNumber":16,"author":{"gitId":"jovantanyk"},"content":" public void serialize(Optional\u003c?\u003e optional, JsonGenerator jsonGenerator, SerializerProvider serializerProvider)","lastModifiedDate":"2024-03-24"},{"lineNumber":17,"author":{"gitId":"jovantanyk"},"content":" throws IOException {","lastModifiedDate":"2024-03-24"},{"lineNumber":18,"author":{"gitId":"jovantanyk"},"content":" if (optional.isPresent()) {","lastModifiedDate":"2024-03-24"},{"lineNumber":19,"author":{"gitId":"jovantanyk"},"content":" jsonGenerator.writeObject(optional.get());","lastModifiedDate":"2024-03-24"},{"lineNumber":20,"author":{"gitId":"jovantanyk"},"content":" } else {","lastModifiedDate":"2024-03-24"},{"lineNumber":21,"author":{"gitId":"jovantanyk"},"content":" jsonGenerator.writeNull();","lastModifiedDate":"2024-03-24"},{"lineNumber":22,"author":{"gitId":"jovantanyk"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":23,"author":{"gitId":"jovantanyk"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":24,"author":{"gitId":"jovantanyk"},"content":" /**","lastModifiedDate":"2024-03-24"},{"lineNumber":25,"author":{"gitId":"jovantanyk"},"content":" * Avoids directly specifying Optional.class with generics","lastModifiedDate":"2024-03-24"},{"lineNumber":26,"author":{"gitId":"jovantanyk"},"content":" */","lastModifiedDate":"2024-03-24"},{"lineNumber":27,"author":{"gitId":"jovantanyk"},"content":" public Class\u003cOptional\u003c?\u003e\u003e handledType() {","lastModifiedDate":"2024-03-24"},{"lineNumber":28,"author":{"gitId":"jovantanyk"},"content":" return (Class\u003cOptional\u003c?\u003e\u003e) (Class\u003c?\u003e) Optional.class;","lastModifiedDate":"2024-03-24"},{"lineNumber":29,"author":{"gitId":"jovantanyk"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":30,"author":{"gitId":"jovantanyk"},"content":"}","lastModifiedDate":"2024-03-24"}],"authorContributionMap":{"jovantanyk":30}},{"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":"laney0808"},"content":"import seedu.address.model.ReadOnlyImmuniMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"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":"laney0808"},"content":" * @see seedu.address.model.Model#getImmuniMate()","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-03"},{"lineNumber":31,"author":{"gitId":"laney0808"},"content":" ReadOnlyImmuniMate getAddressBook();","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered list of persons */","lastModifiedDate":"2017-09-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10"},{"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":{"laney0808":3,"-":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":"laney0808"},"content":"import seedu.address.logic.parser.ImmuniMateParser;","lastModifiedDate":"2024-03-21"},{"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":"laney0808"},"content":"import seedu.address.model.ReadOnlyImmuniMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"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":"laney0808"},"content":" private final ImmuniMateParser immuniMateParser;","lastModifiedDate":"2024-03-21"},{"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":"laney0808"},"content":" immuniMateParser \u003d new ImmuniMateParser();","lastModifiedDate":"2024-03-21"},{"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":"laney0808"},"content":" Command command \u003d immuniMateParser.parseCommand(commandText);","lastModifiedDate":"2024-03-21"},{"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":"laney0808"},"content":" storage.saveAddressBook(model.getImmuniMate());","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" public ReadOnlyImmuniMate getAddressBook() {","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"laney0808"},"content":" return model.getImmuniMate();","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList();","lastModifiedDate":"2016-09-25"},{"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":"laney0808"},"content":" return model.getImmunimateFilePath();","lastModifiedDate":"2024-03-20"},{"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":{"laney0808":9,"-":79}},{"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":"laney0808"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14"},{"lineNumber":9,"author":{"gitId":"laney0808"},"content":"import seedu.address.model.person.Allergies;","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"laney0808"},"content":"import seedu.address.model.person.BloodType;","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"laney0808"},"content":"import seedu.address.model.person.Condition;","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"laney0808"},"content":"import seedu.address.model.person.Country;","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"laney0808"},"content":"import seedu.address.model.person.DateOfAdmission;","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"laney0808"},"content":"import seedu.address.model.person.Diagnosis;","lastModifiedDate":"2024-03-23"},{"lineNumber":15,"author":{"gitId":"laney0808"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23"},{"lineNumber":17,"author":{"gitId":"laney0808"},"content":"import seedu.address.model.person.Symptom;","lastModifiedDate":"2024-03-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"alex-setyawan"},"content":" public static final String MESSAGE_PERSON_NOT_FOUND \u003d \"The person provided was not found\";","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":37,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"laney0808"},"content":" Optional\u003cEmail\u003e email \u003d Optional.ofNullable(person.getEmail());","lastModifiedDate":"2024-03-23"},{"lineNumber":49,"author":{"gitId":"laney0808"},"content":" Optional\u003cCountry\u003e country \u003d Optional.ofNullable(person.getCountry());","lastModifiedDate":"2024-03-23"},{"lineNumber":50,"author":{"gitId":"laney0808"},"content":" Optional\u003cAllergies\u003e allergies \u003d Optional.ofNullable(person.getAllergies());","lastModifiedDate":"2024-03-23"},{"lineNumber":51,"author":{"gitId":"laney0808"},"content":" Optional\u003cBloodType\u003e bloodType \u003d Optional.ofNullable(person.getBloodType());","lastModifiedDate":"2024-03-23"},{"lineNumber":52,"author":{"gitId":"laney0808"},"content":" Optional\u003cCondition\u003e condition \u003d Optional.ofNullable(person.getCondition());","lastModifiedDate":"2024-03-23"},{"lineNumber":53,"author":{"gitId":"laney0808"},"content":" Optional\u003cDateOfAdmission\u003e dateOfAdmission \u003d Optional.ofNullable(person.getDateOfAdmission());","lastModifiedDate":"2024-03-23"},{"lineNumber":54,"author":{"gitId":"laney0808"},"content":" Optional\u003cDiagnosis\u003e diagnosis \u003d Optional.ofNullable(person.getDiagnosis());","lastModifiedDate":"2024-03-23"},{"lineNumber":55,"author":{"gitId":"laney0808"},"content":" Optional\u003cSymptom\u003e symptom \u003d Optional.ofNullable(person.getSymptom());","lastModifiedDate":"2024-03-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"alex-setyawan"},"content":" .append(\"; NRIC: \")","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"alex-setyawan"},"content":" .append(person.getNric())","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"alex-setyawan"},"content":" .append(\"; DOB: \")","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"alex-setyawan"},"content":" .append(person.getDateOfBirth())","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"alex-setyawan"},"content":" .append(\"; Sex: \")","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"alex-setyawan"},"content":" .append(person.getSex())","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"alex-setyawan"},"content":" .append(\"; Status: \")","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"alex-setyawan"},"content":" .append(person.getStatus())","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"alex-setyawan"},"content":" .append(\"; Email: \")","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"laney0808"},"content":" .append(Optional.ofNullable(person.getEmail()).map(Object::toString).orElse(\"-\"))","lastModifiedDate":"2024-03-23"},{"lineNumber":71,"author":{"gitId":"alex-setyawan"},"content":" .append(\"; Country: \")","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"laney0808"},"content":" .append(Optional.ofNullable(person.getCountry()).map(Object::toString).orElse(\"-\"))","lastModifiedDate":"2024-03-23"},{"lineNumber":73,"author":{"gitId":"alex-setyawan"},"content":" .append(\"; Allergies: \")","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"laney0808"},"content":" .append(Optional.ofNullable(person.getAllergies()).map(Object::toString).orElse(\"-\"))","lastModifiedDate":"2024-03-23"},{"lineNumber":75,"author":{"gitId":"alex-setyawan"},"content":" .append(\"; Blood Type: \")","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"laney0808"},"content":" .append(Optional.ofNullable(person.getBloodType()).map(Object::toString).orElse(\"-\"))","lastModifiedDate":"2024-03-23"},{"lineNumber":77,"author":{"gitId":"alex-setyawan"},"content":" .append(\"; Condition: \")","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"laney0808"},"content":" .append(Optional.ofNullable(person.getCondition()).map(Object::toString).orElse(\"-\"))","lastModifiedDate":"2024-03-23"},{"lineNumber":79,"author":{"gitId":"alex-setyawan"},"content":" .append(\"; DOA: \")","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"laney0808"},"content":" .append(Optional.ofNullable(person.getDateOfAdmission()).map(Object::toString).orElse(\"-\"))","lastModifiedDate":"2024-03-23"},{"lineNumber":81,"author":{"gitId":"alex-setyawan"},"content":" .append(\"; Diagnosis: \")","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"laney0808"},"content":" .append(Optional.ofNullable(person.getDiagnosis()).map(Object::toString).orElse(\"-\"))","lastModifiedDate":"2024-03-23"},{"lineNumber":83,"author":{"gitId":"alex-setyawan"},"content":" .append(\"; Symptom: \")","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"laney0808"},"content":" .append(Optional.ofNullable(person.getSymptom()).map(Object::toString).orElse(\"-\"))","lastModifiedDate":"2024-03-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" person.getTags().forEach(builder::append);","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return builder.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":"2016-08-24"}],"authorContributionMap":{"alex-setyawan":17,"laney0808":25,"-":48}},{"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":"laney0808"},"content":"import seedu.address.model.ImmuniMate;","lastModifiedDate":"2024-03-20"},{"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":"-"},"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":"laney0808"},"content":" model.setImmuniMate(new ImmuniMate());","lastModifiedDate":"2024-03-20"},{"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":{"laney0808":2,"-":21}},{"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":"laney0808"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ALLERGIES;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"laney0808"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_BLOODTYPE;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"laney0808"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONDITION;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"laney0808"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DATEOFBIRTH;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"laney0808"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DIAGNOSIS;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":12,"author":{"gitId":"laney0808"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NRIC;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":14,"author":{"gitId":"laney0808"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SEX;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"laney0808"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STATUS;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"laney0808"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SYMPTOM;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"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-02-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-01-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"laney0808"},"content":"public class CreateCommand extends Command {","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"laney0808"},"content":" public static final String COMMAND_WORD \u003d \"create\";","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"laney0808"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Creates a patient to the Immunimate System. \"","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06"},{"lineNumber":33,"author":{"gitId":"laney0808"},"content":" + PREFIX_NRIC + \"NRIC \"","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2017-05-09"},{"lineNumber":37,"author":{"gitId":"laney0808"},"content":" + PREFIX_DATEOFBIRTH + \"DATEOFBIRTH \"","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"laney0808"},"content":" + PREFIX_SEX + \"SEX \"","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"laney0808"},"content":" + PREFIX_STATUS + \"STATUS \"","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"laney0808"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09"},{"lineNumber":42,"author":{"gitId":"laney0808"},"content":" + PREFIX_ALLERGIES + \"ALLERGIES \"","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"laney0808"},"content":" + PREFIX_BLOODTYPE + \"BLOODTYPE \"","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"laney0808"},"content":" + PREFIX_CONDITION + \"CONDITION \"","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"laney0808"},"content":" + PREFIX_SYMPTOM + \"SYMPTOM \"","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"laney0808"},"content":" + PREFIX_DIAGNOSIS + \"DIAGNOSIS \"","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06"},{"lineNumber":48,"author":{"gitId":"laney0808"},"content":" + PREFIX_NRIC + \"S1234567A \"","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06"},{"lineNumber":50,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":53,"author":{"gitId":"laney0808"},"content":" + PREFIX_DATEOFBIRTH + \"01-01-1990 \"","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"laney0808"},"content":" + PREFIX_SEX + \"M \"","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"laney0808"},"content":" + PREFIX_STATUS + \"PENDING \"","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"laney0808"},"content":" + PREFIX_TAG + \"Long term medication \"","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"laney0808"},"content":" + PREFIX_TAG + \"High blood pressure \";","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"laney0808"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New patient added: %1$s\";","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"laney0808"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the system\";","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10"},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":67,"author":{"gitId":"laney0808"},"content":" public CreateCommand(Person person) {","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":69,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":72,"author":{"gitId":"laney0808"},"content":" //TODO test cases","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":75,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":78,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":81,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22"},{"lineNumber":87,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":92,"author":{"gitId":"laney0808"},"content":" if (!(other instanceof CreateCommand)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":96,"author":{"gitId":"laney0808"},"content":" CreateCommand otherCreateCommand \u003d (CreateCommand) other;","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"laney0808"},"content":" return toAdd.equals(otherCreateCommand.toAdd);","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"laney0808":35,"-":71}},{"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":"laney0808"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-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.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":10,"author":{"gitId":"laney0808"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Deletes a person identified using it\u0027s displayed index from the address book.","lastModifiedDate":"2018-04-01"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"laney0808"},"content":" + \": Deletes the person identified by the NRIC.\\n\"","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"laney0808"},"content":" + \"Parameters: NRIC\\n\"","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"laney0808"},"content":" + \"Example: \" + COMMAND_WORD + \" S1234567B\";","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"laney0808"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Patient: %1$s\";","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"laney0808"},"content":" private final Nric targetNric;","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"laney0808"},"content":" //TODO test cases","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"laney0808"},"content":" public DeleteCommand(Nric targetNric) {","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"laney0808"},"content":" this.targetNric \u003d targetNric;","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"laney0808"},"content":" //TODO test cases","lastModifiedDate":"2024-03-21"},{"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":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"laney0808"},"content":" ObservableList\u003cPerson\u003e persons \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"laney0808"},"content":" if (!model.hasPerson(Person.createPersonWithNric(targetNric))) {","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"laney0808"},"content":" throw new CommandException(Messages.MESSAGE_PERSON_NOT_FOUND);","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":42,"author":{"gitId":"laney0808"},"content":" //Difference between filteredPersons.contains and model.hasPerson: first checks if the instance is in the list,","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"laney0808"},"content":" //second checks if the NRIC is in the list","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"laney0808"},"content":" Person personToDelete \u003d persons.filtered(person -\u003e person.getNric().equals(targetNric)).get(0);","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" model.deletePerson(personToDelete);","lastModifiedDate":"2016-09-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete)));","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (!(other instanceof DeleteCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":61,"author":{"gitId":"laney0808"},"content":" return targetNric.equals(otherDeleteCommand.targetNric);","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"laney0808"},"content":" //TODO test cases","lastModifiedDate":"2024-03-21"},{"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":"laney0808"},"content":" .add(\"targetNric\", targetNric)","lastModifiedDate":"2024-03-21"},{"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":{"laney0808":20,"-":51}},{"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":"-"},"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":"laney0808"},"content":" //TODO: add nric contains keywords","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public FindCommand(NameContainsKeywordsPredicate predicate) {","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(predicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" return new CommandResult(","lastModifiedDate":"2018-04-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":" String.format(Messages.MESSAGE_PERSONS_LISTED_OVERVIEW, model.getFilteredPersonList().size()));","lastModifiedDate":"2018-04-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" if (!(other instanceof FindCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" FindCommand otherFindCommand \u003d (FindCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return predicate.equals(otherFindCommand.predicate);","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"laney0808":1,"-":58}},{"path":"src/main/java/seedu/address/logic/commands/ReadCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NatLeong"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"NatLeong"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"NatLeong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NRIC;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"NatLeong"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"NatLeong"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"NatLeong"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"NatLeong"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"NatLeong"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"NatLeong"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"NatLeong"},"content":"import seedu.address.model.person.NricContainsKeywordsPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"NatLeong"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"NatLeong"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"NatLeong"},"content":" * Reads the details of an existing person in the address book.","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"NatLeong"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"NatLeong"},"content":"public class ReadCommand extends Command {","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"NatLeong"},"content":" public static final String COMMAND_WORD \u003d \"read\";","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"NatLeong"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Reads the details of the person identified \"","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"NatLeong"},"content":" + \"by the NRIC specified. \"","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"NatLeong"},"content":" + \"Example: \" + COMMAND_WORD","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"NatLeong"},"content":" + PREFIX_NRIC + \"T0123456A\";","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"NatLeong"},"content":" public static final String MESSAGE_READ_PERSON_SUCCESS \u003d \"Read Person: %1$s\";","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"NatLeong"},"content":" public static final String MESSAGE_NOT_READ \u003d \"NRIC to be specified.\";","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"NatLeong"},"content":" private final Nric nric;","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"NatLeong"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"NatLeong"},"content":" * @param nric of the person to read","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"NatLeong"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"NatLeong"},"content":" public ReadCommand(Nric nric) {","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"NatLeong"},"content":" requireNonNull(nric);","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"NatLeong"},"content":" this.nric \u003d nric;","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"NatLeong"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"NatLeong"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"NatLeong"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":44,"author":{"gitId":"NatLeong"},"content":" if (!model.hasPerson(Person.createPersonWithNric(nric))) {","lastModifiedDate":"2024-03-24"},{"lineNumber":45,"author":{"gitId":"NatLeong"},"content":" throw new CommandException(Messages.MESSAGE_PERSON_NOT_FOUND);","lastModifiedDate":"2024-03-24"},{"lineNumber":46,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"NatLeong"},"content":" model.updateFilteredPersonList(new NricContainsKeywordsPredicate(nric.toString()));","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"NatLeong"},"content":" Person readPerson \u003d model.getFilteredPersonList().get(0);","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"NatLeong"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"NatLeong"},"content":" return new CommandResult(String.format(MESSAGE_READ_PERSON_SUCCESS, Messages.format(readPerson)));","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"NatLeong"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"NatLeong"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"NatLeong"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"NatLeong"},"content":" return true;","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"NatLeong"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"NatLeong"},"content":" if (!(other instanceof ReadCommand)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"NatLeong"},"content":" return false;","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"NatLeong"},"content":" ReadCommand otherReadCommand \u003d (ReadCommand) other;","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"NatLeong"},"content":" return this.nric.equals(otherReadCommand.nric);","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"NatLeong"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"NatLeong"},"content":" public String toString() {","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"NatLeong"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"NatLeong"},"content":" .add(\"nric\", nric)","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"NatLeong"},"content":" .toString();","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"NatLeong"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"NatLeong":76}},{"path":"src/main/java/seedu/address/logic/commands/UpdateCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"alex-setyawan"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"alex-setyawan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"alex-setyawan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"alex-setyawan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"alex-setyawan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"alex-setyawan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"alex-setyawan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"alex-setyawan"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"alex-setyawan"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"alex-setyawan"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"alex-setyawan"},"content":"import java.util.List;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"alex-setyawan"},"content":"import java.util.Objects;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"alex-setyawan"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"alex-setyawan"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.model.person.Allergies;","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.model.person.BloodType;","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.model.person.Condition;","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.model.person.Country;","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.model.person.DateOfAdmission;","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.model.person.DateOfBirth;","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.model.person.Diagnosis;","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"laney0808"},"content":"import seedu.address.model.person.NricContainsKeywordsPredicate;","lastModifiedDate":"2024-03-22"},{"lineNumber":35,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.model.person.Sex;","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.model.person.Status;","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.model.person.Symptom;","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"alex-setyawan"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"alex-setyawan"},"content":" * Updates the details of an existing person in the address book.","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"alex-setyawan"},"content":"public class UpdateCommand extends Command {","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"alex-setyawan"},"content":" public static final String COMMAND_WORD \u003d \"update\";","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"alex-setyawan"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Updates the details of the person identified \"","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"alex-setyawan"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"alex-setyawan"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"alex-setyawan"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"alex-setyawan"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"alex-setyawan"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"alex-setyawan"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"alex-setyawan"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"alex-setyawan"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"alex-setyawan"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"alex-setyawan"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"alex-setyawan"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"alex-setyawan"},"content":" public static final String MESSAGE_UPDATE_PERSON_SUCCESS \u003d \"Updated Person: %1$s\";","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"alex-setyawan"},"content":" public static final String MESSAGE_NOT_UPDATED \u003d \"At least one field to update must be provided.\";","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"alex-setyawan"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"alex-setyawan"},"content":" private final Nric nric;","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"alex-setyawan"},"content":" private final UpdatePersonDescriptor updatePersonDescriptor;","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"alex-setyawan"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"alex-setyawan"},"content":" * @param nric of the person in the filtered person list to update","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"alex-setyawan"},"content":" * @param updatePersonDescriptor details to update the person with","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"alex-setyawan"},"content":" public UpdateCommand(Nric nric, UpdatePersonDescriptor updatePersonDescriptor) {","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"alex-setyawan"},"content":" requireNonNull(nric);","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"alex-setyawan"},"content":" requireNonNull(updatePersonDescriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"alex-setyawan"},"content":" this.nric \u003d nric;","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"alex-setyawan"},"content":" this.updatePersonDescriptor \u003d new UpdatePersonDescriptor(updatePersonDescriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"alex-setyawan"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"alex-setyawan"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"alex-setyawan"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"alex-setyawan"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"alex-setyawan"},"content":" Person personToUpdate \u003d null;","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"laney0808"},"content":" if (!model.hasPerson(Person.createPersonWithNric(nric))) {","lastModifiedDate":"2024-03-22"},{"lineNumber":89,"author":{"gitId":"alex-setyawan"},"content":" throw new CommandException(Messages.MESSAGE_PERSON_NOT_FOUND);","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"laney0808"},"content":" personToUpdate \u003d lastShownList.stream().filter(new NricContainsKeywordsPredicate(nric.toString()))","lastModifiedDate":"2024-03-22"},{"lineNumber":92,"author":{"gitId":"laney0808"},"content":" .findFirst().get();","lastModifiedDate":"2024-03-22"},{"lineNumber":93,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"alex-setyawan"},"content":" Person updatedPerson \u003d createUpdatedPerson(personToUpdate, updatePersonDescriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"alex-setyawan"},"content":" if (!personToUpdate.isSamePerson(updatedPerson) \u0026\u0026 model.hasPerson(updatedPerson)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"alex-setyawan"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":99,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"alex-setyawan"},"content":" model.setPerson(personToUpdate, updatedPerson);","lastModifiedDate":"2024-03-20"},{"lineNumber":101,"author":{"gitId":"alex-setyawan"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-20"},{"lineNumber":102,"author":{"gitId":"alex-setyawan"},"content":" return new CommandResult(String.format(MESSAGE_UPDATE_PERSON_SUCCESS, Messages.format(updatedPerson)));","lastModifiedDate":"2024-03-20"},{"lineNumber":103,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"alex-setyawan"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":106,"author":{"gitId":"alex-setyawan"},"content":" * Creates and returns a {@code Person} with the details of {@code personToUpdate}","lastModifiedDate":"2024-03-20"},{"lineNumber":107,"author":{"gitId":"alex-setyawan"},"content":" * updated with {@code updatePersonDescriptor}.","lastModifiedDate":"2024-03-20"},{"lineNumber":108,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":109,"author":{"gitId":"alex-setyawan"},"content":" private static Person createUpdatedPerson(Person personToUpdate, UpdatePersonDescriptor updatePersonDescriptor) {","lastModifiedDate":"2024-03-20"},{"lineNumber":110,"author":{"gitId":"alex-setyawan"},"content":" assert personToUpdate !\u003d null;","lastModifiedDate":"2024-03-20"},{"lineNumber":111,"author":{"gitId":"alex-setyawan"},"content":" Nric nric \u003d personToUpdate.getNric();","lastModifiedDate":"2024-03-20"},{"lineNumber":112,"author":{"gitId":"alex-setyawan"},"content":" Name updatedName \u003d updatePersonDescriptor.getName().orElse(personToUpdate.getName());","lastModifiedDate":"2024-03-20"},{"lineNumber":113,"author":{"gitId":"alex-setyawan"},"content":" Phone updatedPhone \u003d updatePersonDescriptor.getPhone().orElse(personToUpdate.getPhone());","lastModifiedDate":"2024-03-20"},{"lineNumber":114,"author":{"gitId":"alex-setyawan"},"content":" Address updatedAddress \u003d updatePersonDescriptor.getAddress().orElse(personToUpdate.getAddress());","lastModifiedDate":"2024-03-20"},{"lineNumber":115,"author":{"gitId":"alex-setyawan"},"content":" DateOfBirth updatedDob \u003d updatePersonDescriptor.getDateOfBirth().orElse(personToUpdate.getDateOfBirth());","lastModifiedDate":"2024-03-21"},{"lineNumber":116,"author":{"gitId":"alex-setyawan"},"content":" Sex updatedSex \u003d updatePersonDescriptor.getSex().orElse(personToUpdate.getSex());","lastModifiedDate":"2024-03-21"},{"lineNumber":117,"author":{"gitId":"alex-setyawan"},"content":" Status updatedStatus \u003d updatePersonDescriptor.getStatus().orElse(personToUpdate.getStatus());","lastModifiedDate":"2024-03-21"},{"lineNumber":118,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":119,"author":{"gitId":"alex-setyawan"},"content":" Email updatedEmail \u003d updatePersonDescriptor.getEmail().orElse(personToUpdate.getEmail());","lastModifiedDate":"2024-03-21"},{"lineNumber":120,"author":{"gitId":"alex-setyawan"},"content":" Country updatedCountry \u003d updatePersonDescriptor.getCountry().orElse(personToUpdate.getCountry());","lastModifiedDate":"2024-03-21"},{"lineNumber":121,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":122,"author":{"gitId":"alex-setyawan"},"content":" Allergies updatedAllergies \u003d updatePersonDescriptor.getAllergies().orElse(personToUpdate.getAllergies());","lastModifiedDate":"2024-03-21"},{"lineNumber":123,"author":{"gitId":"alex-setyawan"},"content":" BloodType updatedBloodType \u003d updatePersonDescriptor.getBloodType().orElse(personToUpdate.getBloodType());","lastModifiedDate":"2024-03-21"},{"lineNumber":124,"author":{"gitId":"alex-setyawan"},"content":" Condition updatedCondition \u003d updatePersonDescriptor.getCondition().orElse(personToUpdate.getCondition());","lastModifiedDate":"2024-03-21"},{"lineNumber":125,"author":{"gitId":"alex-setyawan"},"content":" DateOfAdmission updatedDateOfAdmission \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":126,"author":{"gitId":"alex-setyawan"},"content":" updatePersonDescriptor.getDateOfAdmission().orElse(personToUpdate.getDateOfAdmission());","lastModifiedDate":"2024-03-21"},{"lineNumber":127,"author":{"gitId":"alex-setyawan"},"content":" Diagnosis updatedDiagnosis \u003d updatePersonDescriptor.getDiagnosis().orElse(personToUpdate.getDiagnosis());","lastModifiedDate":"2024-03-21"},{"lineNumber":128,"author":{"gitId":"alex-setyawan"},"content":" Symptom updatedSymptom \u003d updatePersonDescriptor.getSymptom().orElse(personToUpdate.getSymptom());","lastModifiedDate":"2024-03-21"},{"lineNumber":129,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":130,"author":{"gitId":"alex-setyawan"},"content":" Person p \u003d new Person(nric, updatedName, updatedPhone, updatedAddress, updatedDob, updatedSex, updatedStatus);","lastModifiedDate":"2024-03-21"},{"lineNumber":131,"author":{"gitId":"alex-setyawan"},"content":" p.setEmail(updatedEmail);","lastModifiedDate":"2024-03-21"},{"lineNumber":132,"author":{"gitId":"alex-setyawan"},"content":" p.setCountry(updatedCountry);","lastModifiedDate":"2024-03-21"},{"lineNumber":133,"author":{"gitId":"alex-setyawan"},"content":" p.setAllergies(updatedAllergies);","lastModifiedDate":"2024-03-21"},{"lineNumber":134,"author":{"gitId":"alex-setyawan"},"content":" p.setBloodType(updatedBloodType);","lastModifiedDate":"2024-03-21"},{"lineNumber":135,"author":{"gitId":"alex-setyawan"},"content":" p.setCondition(updatedCondition);","lastModifiedDate":"2024-03-21"},{"lineNumber":136,"author":{"gitId":"alex-setyawan"},"content":" p.setDateOfAdmission(updatedDateOfAdmission);","lastModifiedDate":"2024-03-21"},{"lineNumber":137,"author":{"gitId":"alex-setyawan"},"content":" p.setDiagnosis(updatedDiagnosis);","lastModifiedDate":"2024-03-21"},{"lineNumber":138,"author":{"gitId":"alex-setyawan"},"content":" p.setSymptom(updatedSymptom);","lastModifiedDate":"2024-03-21"},{"lineNumber":139,"author":{"gitId":"alex-setyawan"},"content":" return p;","lastModifiedDate":"2024-03-21"},{"lineNumber":140,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":141,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":142,"author":{"gitId":"alex-setyawan"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":143,"author":{"gitId":"alex-setyawan"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-20"},{"lineNumber":144,"author":{"gitId":"alex-setyawan"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-20"},{"lineNumber":145,"author":{"gitId":"alex-setyawan"},"content":" return true;","lastModifiedDate":"2024-03-20"},{"lineNumber":146,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":147,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":148,"author":{"gitId":"alex-setyawan"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-20"},{"lineNumber":149,"author":{"gitId":"alex-setyawan"},"content":" if (!(other instanceof UpdateCommand)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":150,"author":{"gitId":"alex-setyawan"},"content":" return false;","lastModifiedDate":"2024-03-20"},{"lineNumber":151,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":152,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":153,"author":{"gitId":"alex-setyawan"},"content":" UpdateCommand otherUpdateCommand \u003d (UpdateCommand) other;","lastModifiedDate":"2024-03-20"},{"lineNumber":154,"author":{"gitId":"alex-setyawan"},"content":" return updatePersonDescriptor.equals(otherUpdateCommand.updatePersonDescriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":155,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":156,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":157,"author":{"gitId":"alex-setyawan"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":158,"author":{"gitId":"alex-setyawan"},"content":" public String toString() {","lastModifiedDate":"2024-03-20"},{"lineNumber":159,"author":{"gitId":"alex-setyawan"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-20"},{"lineNumber":160,"author":{"gitId":"alex-setyawan"},"content":" .add(\"updatePersonDescriptor\", updatePersonDescriptor)","lastModifiedDate":"2024-03-20"},{"lineNumber":161,"author":{"gitId":"alex-setyawan"},"content":" .toString();","lastModifiedDate":"2024-03-20"},{"lineNumber":162,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":163,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":164,"author":{"gitId":"alex-setyawan"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":165,"author":{"gitId":"alex-setyawan"},"content":" * Stores the details to update the person with. Each non-empty field value will replace the","lastModifiedDate":"2024-03-20"},{"lineNumber":166,"author":{"gitId":"alex-setyawan"},"content":" * corresponding field value of the person.","lastModifiedDate":"2024-03-20"},{"lineNumber":167,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":168,"author":{"gitId":"alex-setyawan"},"content":" public static class UpdatePersonDescriptor {","lastModifiedDate":"2024-03-20"},{"lineNumber":169,"author":{"gitId":"alex-setyawan"},"content":" private Nric nric;","lastModifiedDate":"2024-03-20"},{"lineNumber":170,"author":{"gitId":"alex-setyawan"},"content":" private Name name;","lastModifiedDate":"2024-03-20"},{"lineNumber":171,"author":{"gitId":"alex-setyawan"},"content":" private Phone phone;","lastModifiedDate":"2024-03-20"},{"lineNumber":172,"author":{"gitId":"alex-setyawan"},"content":" private Address address;","lastModifiedDate":"2024-03-20"},{"lineNumber":173,"author":{"gitId":"alex-setyawan"},"content":" private DateOfBirth dateOfBirth;","lastModifiedDate":"2024-03-20"},{"lineNumber":174,"author":{"gitId":"alex-setyawan"},"content":" private Sex sex;","lastModifiedDate":"2024-03-20"},{"lineNumber":175,"author":{"gitId":"alex-setyawan"},"content":" private Status status;","lastModifiedDate":"2024-03-20"},{"lineNumber":176,"author":{"gitId":"alex-setyawan"},"content":" // Optional fields","lastModifiedDate":"2024-03-20"},{"lineNumber":177,"author":{"gitId":"alex-setyawan"},"content":" // Data fields","lastModifiedDate":"2024-03-20"},{"lineNumber":178,"author":{"gitId":"alex-setyawan"},"content":" private Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-20"},{"lineNumber":179,"author":{"gitId":"alex-setyawan"},"content":" private Email email;","lastModifiedDate":"2024-03-20"},{"lineNumber":180,"author":{"gitId":"alex-setyawan"},"content":" private Country country;","lastModifiedDate":"2024-03-20"},{"lineNumber":181,"author":{"gitId":"alex-setyawan"},"content":" //Medical information","lastModifiedDate":"2024-03-20"},{"lineNumber":182,"author":{"gitId":"alex-setyawan"},"content":" private Allergies allergies;","lastModifiedDate":"2024-03-20"},{"lineNumber":183,"author":{"gitId":"alex-setyawan"},"content":" private BloodType bloodType;","lastModifiedDate":"2024-03-20"},{"lineNumber":184,"author":{"gitId":"alex-setyawan"},"content":" private Condition condition;","lastModifiedDate":"2024-03-20"},{"lineNumber":185,"author":{"gitId":"alex-setyawan"},"content":" private DateOfAdmission dateOfAdmission;","lastModifiedDate":"2024-03-20"},{"lineNumber":186,"author":{"gitId":"alex-setyawan"},"content":" private Diagnosis diagnosis;","lastModifiedDate":"2024-03-20"},{"lineNumber":187,"author":{"gitId":"alex-setyawan"},"content":" private Symptom symptom;","lastModifiedDate":"2024-03-20"},{"lineNumber":188,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":189,"author":{"gitId":"alex-setyawan"},"content":" public UpdatePersonDescriptor() {}","lastModifiedDate":"2024-03-20"},{"lineNumber":190,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":191,"author":{"gitId":"alex-setyawan"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":192,"author":{"gitId":"alex-setyawan"},"content":" * Copy constructor.","lastModifiedDate":"2024-03-20"},{"lineNumber":193,"author":{"gitId":"alex-setyawan"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2024-03-20"},{"lineNumber":194,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":195,"author":{"gitId":"alex-setyawan"},"content":" public UpdatePersonDescriptor(UpdatePersonDescriptor toCopy) {","lastModifiedDate":"2024-03-20"},{"lineNumber":196,"author":{"gitId":"alex-setyawan"},"content":" setNric(toCopy.nric);","lastModifiedDate":"2024-03-21"},{"lineNumber":197,"author":{"gitId":"alex-setyawan"},"content":" setName(toCopy.name);","lastModifiedDate":"2024-03-20"},{"lineNumber":198,"author":{"gitId":"alex-setyawan"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2024-03-20"},{"lineNumber":199,"author":{"gitId":"alex-setyawan"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2024-03-20"},{"lineNumber":200,"author":{"gitId":"alex-setyawan"},"content":" setDateOfBirth(toCopy.dateOfBirth);","lastModifiedDate":"2024-03-21"},{"lineNumber":201,"author":{"gitId":"alex-setyawan"},"content":" setSex(toCopy.sex);","lastModifiedDate":"2024-03-21"},{"lineNumber":202,"author":{"gitId":"alex-setyawan"},"content":" setStatus(toCopy.status);","lastModifiedDate":"2024-03-21"},{"lineNumber":203,"author":{"gitId":"alex-setyawan"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2024-03-20"},{"lineNumber":204,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":205,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":206,"author":{"gitId":"alex-setyawan"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":207,"author":{"gitId":"alex-setyawan"},"content":" * Returns true if at least one field is updated.","lastModifiedDate":"2024-03-20"},{"lineNumber":208,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":209,"author":{"gitId":"alex-setyawan"},"content":" public boolean isAnyFieldUpdated() {","lastModifiedDate":"2024-03-20"},{"lineNumber":210,"author":{"gitId":"alex-setyawan"},"content":" return CollectionUtil.isAnyNonNull(name, phone, address, sex, status, email, country,","lastModifiedDate":"2024-03-21"},{"lineNumber":211,"author":{"gitId":"alex-setyawan"},"content":" allergies, bloodType, condition, dateOfAdmission, diagnosis, symptom, tags);","lastModifiedDate":"2024-03-21"},{"lineNumber":212,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":213,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":214,"author":{"gitId":"alex-setyawan"},"content":" public void setNric(Nric nric) {","lastModifiedDate":"2024-03-20"},{"lineNumber":215,"author":{"gitId":"alex-setyawan"},"content":" this.nric \u003d nric;","lastModifiedDate":"2024-03-20"},{"lineNumber":216,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":217,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":218,"author":{"gitId":"alex-setyawan"},"content":" public Nric getNric() {","lastModifiedDate":"2024-03-20"},{"lineNumber":219,"author":{"gitId":"alex-setyawan"},"content":" return nric;","lastModifiedDate":"2024-03-20"},{"lineNumber":220,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":221,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":222,"author":{"gitId":"alex-setyawan"},"content":" public void setName(Name name) {","lastModifiedDate":"2024-03-20"},{"lineNumber":223,"author":{"gitId":"alex-setyawan"},"content":" this.name \u003d name;","lastModifiedDate":"2024-03-20"},{"lineNumber":224,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":225,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":226,"author":{"gitId":"alex-setyawan"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2024-03-20"},{"lineNumber":227,"author":{"gitId":"alex-setyawan"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2024-03-20"},{"lineNumber":228,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":229,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":230,"author":{"gitId":"alex-setyawan"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2024-03-20"},{"lineNumber":231,"author":{"gitId":"alex-setyawan"},"content":" this.phone \u003d phone;","lastModifiedDate":"2024-03-20"},{"lineNumber":232,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":233,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":234,"author":{"gitId":"alex-setyawan"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2024-03-20"},{"lineNumber":235,"author":{"gitId":"alex-setyawan"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2024-03-20"},{"lineNumber":236,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":237,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":238,"author":{"gitId":"alex-setyawan"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2024-03-20"},{"lineNumber":239,"author":{"gitId":"alex-setyawan"},"content":" this.address \u003d address;","lastModifiedDate":"2024-03-20"},{"lineNumber":240,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":241,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":242,"author":{"gitId":"alex-setyawan"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2024-03-20"},{"lineNumber":243,"author":{"gitId":"alex-setyawan"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2024-03-20"},{"lineNumber":244,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":245,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":246,"author":{"gitId":"alex-setyawan"},"content":" public void setDateOfBirth(DateOfBirth dateOfBirth) {","lastModifiedDate":"2024-03-20"},{"lineNumber":247,"author":{"gitId":"alex-setyawan"},"content":" this.dateOfBirth \u003d dateOfBirth;","lastModifiedDate":"2024-03-20"},{"lineNumber":248,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":249,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":250,"author":{"gitId":"alex-setyawan"},"content":" public Optional\u003cDateOfBirth\u003e getDateOfBirth() {","lastModifiedDate":"2024-03-20"},{"lineNumber":251,"author":{"gitId":"alex-setyawan"},"content":" return Optional.ofNullable(dateOfBirth);","lastModifiedDate":"2024-03-20"},{"lineNumber":252,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":253,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":254,"author":{"gitId":"alex-setyawan"},"content":" public void setSex(Sex sex) {","lastModifiedDate":"2024-03-20"},{"lineNumber":255,"author":{"gitId":"alex-setyawan"},"content":" this.sex \u003d sex;","lastModifiedDate":"2024-03-20"},{"lineNumber":256,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":257,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":258,"author":{"gitId":"alex-setyawan"},"content":" public Optional\u003cSex\u003e getSex() {","lastModifiedDate":"2024-03-20"},{"lineNumber":259,"author":{"gitId":"alex-setyawan"},"content":" return Optional.ofNullable(sex);","lastModifiedDate":"2024-03-20"},{"lineNumber":260,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":261,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":262,"author":{"gitId":"alex-setyawan"},"content":" public void setStatus(Status status) {","lastModifiedDate":"2024-03-20"},{"lineNumber":263,"author":{"gitId":"alex-setyawan"},"content":" this.status \u003d status;","lastModifiedDate":"2024-03-20"},{"lineNumber":264,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":265,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":266,"author":{"gitId":"alex-setyawan"},"content":" public Optional\u003cStatus\u003e getStatus() {","lastModifiedDate":"2024-03-20"},{"lineNumber":267,"author":{"gitId":"alex-setyawan"},"content":" return Optional.ofNullable(status);","lastModifiedDate":"2024-03-20"},{"lineNumber":268,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":269,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":270,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":271,"author":{"gitId":"alex-setyawan"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2024-03-20"},{"lineNumber":272,"author":{"gitId":"alex-setyawan"},"content":" this.email \u003d email;","lastModifiedDate":"2024-03-20"},{"lineNumber":273,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":274,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":275,"author":{"gitId":"alex-setyawan"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2024-03-20"},{"lineNumber":276,"author":{"gitId":"alex-setyawan"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2024-03-20"},{"lineNumber":277,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":278,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":279,"author":{"gitId":"alex-setyawan"},"content":" public void setCountry(Country country) {","lastModifiedDate":"2024-03-20"},{"lineNumber":280,"author":{"gitId":"alex-setyawan"},"content":" this.country \u003d country;","lastModifiedDate":"2024-03-20"},{"lineNumber":281,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":282,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":283,"author":{"gitId":"alex-setyawan"},"content":" public Optional\u003cCountry\u003e getCountry() {","lastModifiedDate":"2024-03-20"},{"lineNumber":284,"author":{"gitId":"alex-setyawan"},"content":" return Optional.ofNullable(country);","lastModifiedDate":"2024-03-20"},{"lineNumber":285,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":286,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":287,"author":{"gitId":"alex-setyawan"},"content":" public void setAllergies(Allergies allergies) {","lastModifiedDate":"2024-03-20"},{"lineNumber":288,"author":{"gitId":"alex-setyawan"},"content":" this.allergies \u003d allergies;","lastModifiedDate":"2024-03-20"},{"lineNumber":289,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":290,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":291,"author":{"gitId":"alex-setyawan"},"content":" public Optional\u003cAllergies\u003e getAllergies() {","lastModifiedDate":"2024-03-20"},{"lineNumber":292,"author":{"gitId":"alex-setyawan"},"content":" return Optional.ofNullable(allergies);","lastModifiedDate":"2024-03-20"},{"lineNumber":293,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":294,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":295,"author":{"gitId":"alex-setyawan"},"content":" public void setBloodType(BloodType bloodType) {","lastModifiedDate":"2024-03-20"},{"lineNumber":296,"author":{"gitId":"alex-setyawan"},"content":" this.bloodType \u003d bloodType;","lastModifiedDate":"2024-03-20"},{"lineNumber":297,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":298,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":299,"author":{"gitId":"alex-setyawan"},"content":" public Optional\u003cBloodType\u003e getBloodType() {","lastModifiedDate":"2024-03-20"},{"lineNumber":300,"author":{"gitId":"alex-setyawan"},"content":" return Optional.ofNullable(bloodType);","lastModifiedDate":"2024-03-20"},{"lineNumber":301,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":302,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":303,"author":{"gitId":"alex-setyawan"},"content":" public void setCondition(Condition condition) {","lastModifiedDate":"2024-03-20"},{"lineNumber":304,"author":{"gitId":"alex-setyawan"},"content":" this.condition \u003d condition;","lastModifiedDate":"2024-03-20"},{"lineNumber":305,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":306,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":307,"author":{"gitId":"alex-setyawan"},"content":" public Optional\u003cCondition\u003e getCondition() {","lastModifiedDate":"2024-03-20"},{"lineNumber":308,"author":{"gitId":"alex-setyawan"},"content":" return Optional.ofNullable(condition);","lastModifiedDate":"2024-03-20"},{"lineNumber":309,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":310,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":311,"author":{"gitId":"alex-setyawan"},"content":" public void setDateOfAdmission(DateOfAdmission dateOfAdmission) {","lastModifiedDate":"2024-03-20"},{"lineNumber":312,"author":{"gitId":"alex-setyawan"},"content":" this.dateOfAdmission \u003d dateOfAdmission;","lastModifiedDate":"2024-03-20"},{"lineNumber":313,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":314,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":315,"author":{"gitId":"alex-setyawan"},"content":" public Optional\u003cDateOfAdmission\u003e getDateOfAdmission() {","lastModifiedDate":"2024-03-20"},{"lineNumber":316,"author":{"gitId":"alex-setyawan"},"content":" return Optional.ofNullable(dateOfAdmission);","lastModifiedDate":"2024-03-20"},{"lineNumber":317,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":318,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":319,"author":{"gitId":"alex-setyawan"},"content":" public void setDiagnosis(Diagnosis diagnosis) {","lastModifiedDate":"2024-03-20"},{"lineNumber":320,"author":{"gitId":"alex-setyawan"},"content":" this.diagnosis \u003d diagnosis;","lastModifiedDate":"2024-03-20"},{"lineNumber":321,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":322,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":323,"author":{"gitId":"alex-setyawan"},"content":" public Optional\u003cDiagnosis\u003e getDiagnosis() {","lastModifiedDate":"2024-03-20"},{"lineNumber":324,"author":{"gitId":"alex-setyawan"},"content":" return Optional.ofNullable(diagnosis);","lastModifiedDate":"2024-03-20"},{"lineNumber":325,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":326,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":327,"author":{"gitId":"alex-setyawan"},"content":" public void setSymptom(Symptom symptom) {","lastModifiedDate":"2024-03-20"},{"lineNumber":328,"author":{"gitId":"alex-setyawan"},"content":" this.symptom \u003d symptom;","lastModifiedDate":"2024-03-20"},{"lineNumber":329,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":330,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":331,"author":{"gitId":"alex-setyawan"},"content":" public Optional\u003cSymptom\u003e getSymptom() {","lastModifiedDate":"2024-03-20"},{"lineNumber":332,"author":{"gitId":"alex-setyawan"},"content":" return Optional.ofNullable(symptom);","lastModifiedDate":"2024-03-20"},{"lineNumber":333,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":334,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":335,"author":{"gitId":"alex-setyawan"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":336,"author":{"gitId":"alex-setyawan"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2024-03-20"},{"lineNumber":337,"author":{"gitId":"alex-setyawan"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2024-03-20"},{"lineNumber":338,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":339,"author":{"gitId":"alex-setyawan"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-03-20"},{"lineNumber":340,"author":{"gitId":"alex-setyawan"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2024-03-20"},{"lineNumber":341,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":342,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":343,"author":{"gitId":"alex-setyawan"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":344,"author":{"gitId":"alex-setyawan"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2024-03-20"},{"lineNumber":345,"author":{"gitId":"alex-setyawan"},"content":" * if modification is attempted.","lastModifiedDate":"2024-03-20"},{"lineNumber":346,"author":{"gitId":"alex-setyawan"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2024-03-20"},{"lineNumber":347,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":348,"author":{"gitId":"alex-setyawan"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2024-03-20"},{"lineNumber":349,"author":{"gitId":"alex-setyawan"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2024-03-20"},{"lineNumber":350,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":351,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":352,"author":{"gitId":"alex-setyawan"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":353,"author":{"gitId":"alex-setyawan"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-20"},{"lineNumber":354,"author":{"gitId":"alex-setyawan"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-20"},{"lineNumber":355,"author":{"gitId":"alex-setyawan"},"content":" return true;","lastModifiedDate":"2024-03-20"},{"lineNumber":356,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":357,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":358,"author":{"gitId":"alex-setyawan"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-20"},{"lineNumber":359,"author":{"gitId":"alex-setyawan"},"content":" if (!(other instanceof UpdatePersonDescriptor)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":360,"author":{"gitId":"alex-setyawan"},"content":" return false;","lastModifiedDate":"2024-03-20"},{"lineNumber":361,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":362,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":363,"author":{"gitId":"alex-setyawan"},"content":" UpdatePersonDescriptor otherUpdatePersonDescriptor \u003d (UpdatePersonDescriptor) other;","lastModifiedDate":"2024-03-20"},{"lineNumber":364,"author":{"gitId":"alex-setyawan"},"content":" return Objects.equals(nric, otherUpdatePersonDescriptor.nric)","lastModifiedDate":"2024-03-20"},{"lineNumber":365,"author":{"gitId":"alex-setyawan"},"content":" \u0026\u0026 Objects.equals(name, otherUpdatePersonDescriptor.name)","lastModifiedDate":"2024-03-20"},{"lineNumber":366,"author":{"gitId":"alex-setyawan"},"content":" \u0026\u0026 Objects.equals(phone, otherUpdatePersonDescriptor.phone)","lastModifiedDate":"2024-03-20"},{"lineNumber":367,"author":{"gitId":"alex-setyawan"},"content":" \u0026\u0026 Objects.equals(address, otherUpdatePersonDescriptor.address)","lastModifiedDate":"2024-03-20"},{"lineNumber":368,"author":{"gitId":"alex-setyawan"},"content":" \u0026\u0026 Objects.equals(dateOfBirth, otherUpdatePersonDescriptor.dateOfBirth)","lastModifiedDate":"2024-03-20"},{"lineNumber":369,"author":{"gitId":"alex-setyawan"},"content":" \u0026\u0026 Objects.equals(sex, otherUpdatePersonDescriptor.sex)","lastModifiedDate":"2024-03-20"},{"lineNumber":370,"author":{"gitId":"alex-setyawan"},"content":" \u0026\u0026 Objects.equals(status, otherUpdatePersonDescriptor.status)","lastModifiedDate":"2024-03-20"},{"lineNumber":371,"author":{"gitId":"alex-setyawan"},"content":" \u0026\u0026 Objects.equals(email, otherUpdatePersonDescriptor.email)","lastModifiedDate":"2024-03-20"},{"lineNumber":372,"author":{"gitId":"alex-setyawan"},"content":" \u0026\u0026 Objects.equals(country, otherUpdatePersonDescriptor.country)","lastModifiedDate":"2024-03-20"},{"lineNumber":373,"author":{"gitId":"alex-setyawan"},"content":" \u0026\u0026 Objects.equals(allergies, otherUpdatePersonDescriptor.allergies)","lastModifiedDate":"2024-03-20"},{"lineNumber":374,"author":{"gitId":"alex-setyawan"},"content":" \u0026\u0026 Objects.equals(bloodType, otherUpdatePersonDescriptor.bloodType)","lastModifiedDate":"2024-03-20"},{"lineNumber":375,"author":{"gitId":"alex-setyawan"},"content":" \u0026\u0026 Objects.equals(condition, otherUpdatePersonDescriptor.condition)","lastModifiedDate":"2024-03-20"},{"lineNumber":376,"author":{"gitId":"alex-setyawan"},"content":" \u0026\u0026 Objects.equals(dateOfAdmission, otherUpdatePersonDescriptor.dateOfAdmission)","lastModifiedDate":"2024-03-20"},{"lineNumber":377,"author":{"gitId":"alex-setyawan"},"content":" \u0026\u0026 Objects.equals(diagnosis, otherUpdatePersonDescriptor.diagnosis)","lastModifiedDate":"2024-03-20"},{"lineNumber":378,"author":{"gitId":"alex-setyawan"},"content":" \u0026\u0026 Objects.equals(symptom, otherUpdatePersonDescriptor.symptom)","lastModifiedDate":"2024-03-20"},{"lineNumber":379,"author":{"gitId":"alex-setyawan"},"content":" \u0026\u0026 Objects.equals(tags, otherUpdatePersonDescriptor.tags);","lastModifiedDate":"2024-03-20"},{"lineNumber":380,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":381,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":382,"author":{"gitId":"alex-setyawan"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":383,"author":{"gitId":"alex-setyawan"},"content":" public String toString() {","lastModifiedDate":"2024-03-20"},{"lineNumber":384,"author":{"gitId":"alex-setyawan"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-20"},{"lineNumber":385,"author":{"gitId":"alex-setyawan"},"content":" .add(\"nric\", nric)","lastModifiedDate":"2024-03-20"},{"lineNumber":386,"author":{"gitId":"alex-setyawan"},"content":" .add(\"name\", name)","lastModifiedDate":"2024-03-20"},{"lineNumber":387,"author":{"gitId":"alex-setyawan"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2024-03-20"},{"lineNumber":388,"author":{"gitId":"alex-setyawan"},"content":" .add(\"address\", address)","lastModifiedDate":"2024-03-20"},{"lineNumber":389,"author":{"gitId":"alex-setyawan"},"content":" .add(\"date of birth\", dateOfBirth)","lastModifiedDate":"2024-03-20"},{"lineNumber":390,"author":{"gitId":"alex-setyawan"},"content":" .add(\"sex\", sex)","lastModifiedDate":"2024-03-20"},{"lineNumber":391,"author":{"gitId":"alex-setyawan"},"content":" .add(\"status\", status)","lastModifiedDate":"2024-03-20"},{"lineNumber":392,"author":{"gitId":"alex-setyawan"},"content":" .toString();","lastModifiedDate":"2024-03-20"},{"lineNumber":393,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":394,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":395,"author":{"gitId":"alex-setyawan"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"alex-setyawan":391,"laney0808":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":"laney0808"},"content":" public static final Prefix PREFIX_NRIC \u003d new Prefix(\"ic/\");","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"laney0808"},"content":" public static final Prefix PREFIX_DATEOFBIRTH \u003d new Prefix(\"dob/\");","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"laney0808"},"content":" public static final Prefix PREFIX_SEX \u003d new Prefix(\"s/\");","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"laney0808"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"hp/\");","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":15,"author":{"gitId":"laney0808"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"laney0808"},"content":" public static final Prefix PREFIX_COUNTRY \u003d new Prefix(\"c/\");","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"laney0808"},"content":" public static final Prefix PREFIX_DATEOFADMISSION \u003d new Prefix(\"doa/\");","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"laney0808"},"content":" public static final Prefix PREFIX_BLOODTYPE \u003d new Prefix(\"bt/\");","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"laney0808"},"content":" public static final Prefix PREFIX_ALLERGIES \u003d new Prefix(\"al/\");","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"laney0808"},"content":" public static final Prefix PREFIX_CONDITION \u003d new Prefix(\"con/\");","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"laney0808"},"content":" public static final Prefix PREFIX_SYMPTOM \u003d new Prefix(\"sym/\");","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"laney0808"},"content":" public static final Prefix PREFIX_DIAGNOSIS \u003d new Prefix(\"d/\");","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":24,"author":{"gitId":"jovantanyk"},"content":" public static final Prefix PREFIX_STATUS \u003d new Prefix(\"st/\");","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"jovantanyk":1,"laney0808":12,"-":13}},{"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":"laney0808"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ALLERGIES;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"laney0808"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_BLOODTYPE;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"laney0808"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONDITION;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"laney0808"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COUNTRY;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"laney0808"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DATEOFADMISSION;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"laney0808"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DATEOFBIRTH;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"laney0808"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DIAGNOSIS;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":14,"author":{"gitId":"laney0808"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NRIC;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-02-05"},{"lineNumber":16,"author":{"gitId":"laney0808"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SEX;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"jovantanyk"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STATUS;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"laney0808"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SYMPTOM;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-02-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":23,"author":{"gitId":"laney0808"},"content":"import seedu.address.logic.commands.CreateCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-03-17"},{"lineNumber":26,"author":{"gitId":"laney0808"},"content":"import seedu.address.model.person.DateOfBirth;","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"laney0808"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-03-17"},{"lineNumber":29,"author":{"gitId":"laney0808"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-03-17"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-03-17"},{"lineNumber":32,"author":{"gitId":"jovantanyk"},"content":"import seedu.address.model.person.Sex;","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"jovantanyk"},"content":"import seedu.address.model.person.Status;","lastModifiedDate":"2024-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":"laney0808"},"content":"public class CreateCommandParser implements Parser\u003cCreateCommand\u003e {","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":45,"author":{"gitId":"laney0808"},"content":" //TODO test cases","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"laney0808"},"content":" public CreateCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":48,"author":{"gitId":"laney0808"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NRIC, PREFIX_NAME, PREFIX_PHONE, PREFIX_ADDRESS,","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"laney0808"},"content":" PREFIX_DATEOFBIRTH, PREFIX_SEX, PREFIX_STATUS, PREFIX_TAG, PREFIX_EMAIL, PREFIX_COUNTRY,","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"laney0808"},"content":" PREFIX_DATEOFADMISSION, PREFIX_ALLERGIES, PREFIX_BLOODTYPE, PREFIX_CONDITION, PREFIX_SYMPTOM,","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"laney0808"},"content":" PREFIX_DIAGNOSIS);","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"laney0808"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NRIC, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_DATEOFBIRTH,","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"laney0808"},"content":" PREFIX_SEX, PREFIX_STATUS) || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"laney0808"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, CreateCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":57,"author":{"gitId":"laney0808"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NRIC, PREFIX_NAME, PREFIX_PHONE, PREFIX_ADDRESS,","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"laney0808"},"content":" PREFIX_DATEOFBIRTH, PREFIX_SEX, PREFIX_STATUS);","lastModifiedDate":"2024-03-23"},{"lineNumber":59,"author":{"gitId":"laney0808"},"content":" Nric nric \u003d ParserUtil.parseNric(argMultimap.getValue(PREFIX_NRIC).get());","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":61,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":62,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":63,"author":{"gitId":"laney0808"},"content":" DateOfBirth dob \u003d ParserUtil.parseDateOfBirth(argMultimap.getValue(PREFIX_DATEOFBIRTH).get());","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"jovantanyk"},"content":" Sex sex \u003d ParserUtil.parseSex(argMultimap.getValue(PREFIX_SEX).get());","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"jovantanyk"},"content":" Status status \u003d ParserUtil.parseStatus(argMultimap.getValue(PREFIX_STATUS).get());","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"laney0808"},"content":" //TODO (later): assersion to make sure optional values don\u0027t generate errors","lastModifiedDate":"2024-03-23"},{"lineNumber":67,"author":{"gitId":"jovantanyk"},"content":" Person person \u003d new Person(nric, name, phone, address, dob, sex, status);","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"laney0808"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"laney0808"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"laney0808"},"content":" person.setEmail(email);","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"laney0808"},"content":" if (argMultimap.getValue(PREFIX_COUNTRY).isPresent()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"laney0808"},"content":" person.setCountry(ParserUtil.parseCountry(argMultimap.getValue(PREFIX_COUNTRY).get()));","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"laney0808"},"content":" if (argMultimap.getValue(PREFIX_DATEOFADMISSION).isPresent()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"laney0808"},"content":" person.setDateOfAdmission(ParserUtil.parseDateOfAdmission(argMultimap","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"laney0808"},"content":" .getValue(PREFIX_DATEOFADMISSION).get()));","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"laney0808"},"content":" if (argMultimap.getValue(PREFIX_ALLERGIES).isPresent()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"laney0808"},"content":" person.setAllergies(ParserUtil.parseAllergies(argMultimap.getValue(PREFIX_ALLERGIES).get()));","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"laney0808"},"content":" if (argMultimap.getValue(PREFIX_BLOODTYPE).isPresent()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"laney0808"},"content":" person.setBloodType(ParserUtil.parseBloodType(argMultimap.getValue(PREFIX_BLOODTYPE).get()));","lastModifiedDate":"2024-03-19"},{"lineNumber":84,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"laney0808"},"content":" if (argMultimap.getValue(PREFIX_CONDITION).isPresent()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"laney0808"},"content":" person.setCondition(ParserUtil.parseCondition(argMultimap.getValue(PREFIX_CONDITION).get()));","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"laney0808"},"content":" if (argMultimap.getValue(PREFIX_SYMPTOM).isPresent()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"laney0808"},"content":" person.setSymptom(ParserUtil.parseSymptom(argMultimap.getValue(PREFIX_SYMPTOM).get()));","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":91,"author":{"gitId":"laney0808"},"content":" if (argMultimap.getValue(PREFIX_DIAGNOSIS).isPresent()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":92,"author":{"gitId":"laney0808"},"content":" person.setDiagnosis(ParserUtil.parseDiagnosis(argMultimap.getValue(PREFIX_DIAGNOSIS).get()));","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":95,"author":{"gitId":"laney0808"},"content":" return new CreateCommand(person);","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":98,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17"},{"lineNumber":101,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":102,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17"},{"lineNumber":103,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":106,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"jovantanyk":6,"laney0808":56,"-":44}},{"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.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":"laney0808"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-03-20"},{"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":"-"},"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":"2017-03-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":21,"author":{"gitId":"laney0808"},"content":" Nric nric \u003d ParserUtil.parseNric(args);","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"laney0808"},"content":" return new DeleteCommand(nric);","lastModifiedDate":"2024-03-20"},{"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":{"laney0808":3,"-":26}},{"path":"src/main/java/seedu/address/logic/parser/ImmuniMateParser.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":"2017-01-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18"},{"lineNumber":13,"author":{"gitId":"laney0808"},"content":"import seedu.address.logic.commands.CreateCommand;","lastModifiedDate":"2024-03-20"},{"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.ExitCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":19,"author":{"gitId":"NatLeong"},"content":"import seedu.address.logic.commands.ReadCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.logic.commands.UpdateCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"laney0808"},"content":"public class ImmuniMateParser {","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22"},{"lineNumber":32,"author":{"gitId":"laney0808"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ImmuniMateParser.class);","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24"},{"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":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"laney0808"},"content":" //TODO test cases","lastModifiedDate":"2024-03-21"},{"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":"laney0808"},"content":" case CreateCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"laney0808"},"content":" return new CreateCommandParser().parse(arguments);","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"alex-setyawan"},"content":" case UpdateCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"alex-setyawan"},"content":" return new UpdateCommandParser().parse(arguments);","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":82,"author":{"gitId":"NatLeong"},"content":" case ReadCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"NatLeong"},"content":" return new ReadCommandParser().parse(arguments);","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26"},{"lineNumber":86,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29"},{"lineNumber":87,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"alex-setyawan":3,"laney0808":6,"-":78,"NatLeong":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":"-"},"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":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-02-11"},{"lineNumber":13,"author":{"gitId":"laney0808"},"content":"import seedu.address.model.person.Allergies;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"jovantanyk"},"content":"import seedu.address.model.person.BloodType;","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"laney0808"},"content":"import seedu.address.model.person.Condition;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"laney0808"},"content":"import seedu.address.model.person.Country;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"laney0808"},"content":"import seedu.address.model.person.DateOfAdmission;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"laney0808"},"content":"import seedu.address.model.person.DateOfBirth;","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"laney0808"},"content":"import seedu.address.model.person.Diagnosis;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11"},{"lineNumber":22,"author":{"gitId":"laney0808"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-02-11"},{"lineNumber":24,"author":{"gitId":"jovantanyk"},"content":"import seedu.address.model.person.Sex;","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"jovantanyk"},"content":"import seedu.address.model.person.Status;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"laney0808"},"content":"import seedu.address.model.person.Symptom;","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":29,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":32,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11"},{"lineNumber":33,"author":{"gitId":"laney0808"},"content":" //TODO: add parser for new fields","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25"},{"lineNumber":40,"author":{"gitId":"jovantanyk"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":44,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02"},{"lineNumber":46,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"laney0808"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"laney0808"},"content":" * Parses a {@code String nric} into a {@code Nric}.","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"laney0808"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"laney0808"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"laney0808"},"content":" * @throws ParseException if the given {@code nric} is invalid.","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"laney0808"},"content":" //TODO test cases","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"laney0808"},"content":" public static Nric parseNric(String nric) throws ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"laney0808"},"content":" requireNonNull(nric);","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"laney0808"},"content":" String trimmedNric \u003d nric.trim();","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"laney0808"},"content":" if (!Nric.isValidNric(trimmedNric)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"laney0808"},"content":" throw new ParseException(Nric.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"laney0808"},"content":" return new Nric(trimmedNric);","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29"},{"lineNumber":70,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":74,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29"},{"lineNumber":75,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":77,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":82,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":85,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":88,"author":{"gitId":"laney0808"},"content":" //TODO test cases","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":90,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30"},{"lineNumber":91,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":92,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":93,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":95,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","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":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":101,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":105,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30"},{"lineNumber":106,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":107,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":108,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":110,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","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":"laney0808"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"laney0808"},"content":" * Parses a {@code String dob} into an {@code DateOfBirth}.","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"laney0808"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"laney0808"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"laney0808"},"content":" * @throws ParseException if the given {@code dob} is invalid.","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"laney0808"},"content":" //TODO test cases","lastModifiedDate":"2024-03-21"},{"lineNumber":120,"author":{"gitId":"laney0808"},"content":" public static DateOfBirth parseDateOfBirth(String dob) throws ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"laney0808"},"content":" requireNonNull(dob);","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"laney0808"},"content":" String trimmedDob \u003d dob.trim();","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"laney0808"},"content":" if (!DateOfBirth.isValidDateOfBirth(trimmedDob)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"laney0808"},"content":" throw new ParseException(DateOfBirth.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"laney0808"},"content":" return new DateOfBirth(trimmedDob);","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":129,"author":{"gitId":"laney0808"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":130,"author":{"gitId":"jovantanyk"},"content":" * Parses a {@code String sex} into an {@code Sex sex}.","lastModifiedDate":"2024-03-18"},{"lineNumber":131,"author":{"gitId":"laney0808"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"laney0808"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"laney0808"},"content":" * @throws ParseException if the given {@code sex} is invalid.","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":135,"author":{"gitId":"laney0808"},"content":" //TODO test cases","lastModifiedDate":"2024-03-21"},{"lineNumber":136,"author":{"gitId":"jovantanyk"},"content":" public static Sex parseSex(String sex) throws ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"laney0808"},"content":" requireNonNull(sex);","lastModifiedDate":"2024-03-17"},{"lineNumber":138,"author":{"gitId":"laney0808"},"content":" String trimmedSex \u003d sex.trim();","lastModifiedDate":"2024-03-17"},{"lineNumber":139,"author":{"gitId":"jovantanyk"},"content":" if (!Sex.isValidSex(trimmedSex)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":140,"author":{"gitId":"jovantanyk"},"content":" throw new ParseException(Sex.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":141,"author":{"gitId":"jovantanyk"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"jovantanyk"},"content":" return new Sex(sex);","lastModifiedDate":"2024-03-18"},{"lineNumber":143,"author":{"gitId":"jovantanyk"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":144,"author":{"gitId":"jovantanyk"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":145,"author":{"gitId":"jovantanyk"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"jovantanyk"},"content":" * Parses a {@code String status} into an {@code Status status}.","lastModifiedDate":"2024-03-18"},{"lineNumber":147,"author":{"gitId":"jovantanyk"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-17"},{"lineNumber":148,"author":{"gitId":"jovantanyk"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":149,"author":{"gitId":"jovantanyk"},"content":" * @throws ParseException if the given {@code sex} is invalid.","lastModifiedDate":"2024-03-17"},{"lineNumber":150,"author":{"gitId":"jovantanyk"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":151,"author":{"gitId":"laney0808"},"content":" //TODO test cases","lastModifiedDate":"2024-03-21"},{"lineNumber":152,"author":{"gitId":"jovantanyk"},"content":" public static Status parseStatus(String status) throws ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":153,"author":{"gitId":"jovantanyk"},"content":" requireNonNull(status);","lastModifiedDate":"2024-03-17"},{"lineNumber":154,"author":{"gitId":"jovantanyk"},"content":" String trimmedStatus \u003d status.trim().toUpperCase();","lastModifiedDate":"2024-03-18"},{"lineNumber":155,"author":{"gitId":"jovantanyk"},"content":" if (!Status.isValidStatus(trimmedStatus)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":156,"author":{"gitId":"jovantanyk"},"content":" throw new ParseException(Status.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":157,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":158,"author":{"gitId":"jovantanyk"},"content":" return new Status(status);","lastModifiedDate":"2024-03-18"},{"lineNumber":159,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":160,"author":{"gitId":"laney0808"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":161,"author":{"gitId":"laney0808"},"content":" * Parses a {@code String country} into an {@code Country country}.","lastModifiedDate":"2024-03-19"},{"lineNumber":162,"author":{"gitId":"laney0808"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-19"},{"lineNumber":163,"author":{"gitId":"laney0808"},"content":" * @throws ParseException if the given {@code country} is invalid.","lastModifiedDate":"2024-03-19"},{"lineNumber":164,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":165,"author":{"gitId":"laney0808"},"content":" //TODO test cases","lastModifiedDate":"2024-03-21"},{"lineNumber":166,"author":{"gitId":"laney0808"},"content":" public static Country parseCountry(String country) throws ParseException {","lastModifiedDate":"2024-03-19"},{"lineNumber":167,"author":{"gitId":"laney0808"},"content":" requireNonNull(country);","lastModifiedDate":"2024-03-19"},{"lineNumber":168,"author":{"gitId":"laney0808"},"content":" //TODO: Implement country validation \u0026 standardisation","lastModifiedDate":"2024-03-19"},{"lineNumber":169,"author":{"gitId":"laney0808"},"content":" String trimmedCountry \u003d country.trim();","lastModifiedDate":"2024-03-19"},{"lineNumber":170,"author":{"gitId":"laney0808"},"content":" return new Country(trimmedCountry);","lastModifiedDate":"2024-03-19"},{"lineNumber":171,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":172,"author":{"gitId":"laney0808"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":173,"author":{"gitId":"laney0808"},"content":" * Parses a {@code String dateOfAdmission} into an {@code DateOfAdmission dateOfAdmission}.","lastModifiedDate":"2024-03-19"},{"lineNumber":174,"author":{"gitId":"laney0808"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-19"},{"lineNumber":175,"author":{"gitId":"laney0808"},"content":" * @throws ParseException if the given {@code dateOfAdmission} is invalid.","lastModifiedDate":"2024-03-19"},{"lineNumber":176,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":177,"author":{"gitId":"laney0808"},"content":" //TODO test cases","lastModifiedDate":"2024-03-21"},{"lineNumber":178,"author":{"gitId":"laney0808"},"content":" public static DateOfAdmission parseDateOfAdmission(String dateOfAdmission) throws ParseException {","lastModifiedDate":"2024-03-19"},{"lineNumber":179,"author":{"gitId":"laney0808"},"content":" requireNonNull(dateOfAdmission);","lastModifiedDate":"2024-03-19"},{"lineNumber":180,"author":{"gitId":"laney0808"},"content":" String trimmedDateOfAdmission \u003d dateOfAdmission.trim();","lastModifiedDate":"2024-03-19"},{"lineNumber":181,"author":{"gitId":"laney0808"},"content":" if (!DateOfAdmission.isValidDateOfAdmission(trimmedDateOfAdmission)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":182,"author":{"gitId":"jovantanyk"},"content":" throw new ParseException(DateOfAdmission.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":183,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":184,"author":{"gitId":"laney0808"},"content":" return new DateOfAdmission(trimmedDateOfAdmission);","lastModifiedDate":"2024-03-19"},{"lineNumber":185,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":186,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":187,"author":{"gitId":"jovantanyk"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":188,"author":{"gitId":"jovantanyk"},"content":" * Parses a {@code String status} into an {@code Status status}.","lastModifiedDate":"2024-03-18"},{"lineNumber":189,"author":{"gitId":"jovantanyk"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-18"},{"lineNumber":190,"author":{"gitId":"laney0808"},"content":" *","lastModifiedDate":"2024-03-19"},{"lineNumber":191,"author":{"gitId":"jovantanyk"},"content":" * @throws ParseException if the given {@code sex} is invalid.","lastModifiedDate":"2024-03-18"},{"lineNumber":192,"author":{"gitId":"jovantanyk"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":193,"author":{"gitId":"laney0808"},"content":" //TODO test cases","lastModifiedDate":"2024-03-21"},{"lineNumber":194,"author":{"gitId":"jovantanyk"},"content":" public static BloodType parseBloodType(String bloodType) throws ParseException {","lastModifiedDate":"2024-03-18"},{"lineNumber":195,"author":{"gitId":"jovantanyk"},"content":" requireNonNull(bloodType);","lastModifiedDate":"2024-03-18"},{"lineNumber":196,"author":{"gitId":"laney0808"},"content":" String trimmedBloodType \u003d bloodType.trim();","lastModifiedDate":"2024-03-19"},{"lineNumber":197,"author":{"gitId":"jovantanyk"},"content":" if (!BloodType.isValidBloodType(trimmedBloodType)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":198,"author":{"gitId":"laney0808"},"content":" throw new ParseException(BloodType.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-19"},{"lineNumber":199,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":200,"author":{"gitId":"jovantanyk"},"content":" return new BloodType(trimmedBloodType);","lastModifiedDate":"2024-03-21"},{"lineNumber":201,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":202,"author":{"gitId":"laney0808"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":203,"author":{"gitId":"laney0808"},"content":" * Parses a {@code String allergies} into an {@code Set\u003cAllergies\u003e}.","lastModifiedDate":"2024-03-19"},{"lineNumber":204,"author":{"gitId":"laney0808"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-19"},{"lineNumber":205,"author":{"gitId":"laney0808"},"content":" * @throws ParseException if the given {@code allergies} is invalid.","lastModifiedDate":"2024-03-19"},{"lineNumber":206,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":207,"author":{"gitId":"laney0808"},"content":" //TODO test cases","lastModifiedDate":"2024-03-21"},{"lineNumber":208,"author":{"gitId":"laney0808"},"content":" public static Allergies parseAllergies(String allergies) throws ParseException {","lastModifiedDate":"2024-03-19"},{"lineNumber":209,"author":{"gitId":"laney0808"},"content":" requireNonNull(allergies);","lastModifiedDate":"2024-03-19"},{"lineNumber":210,"author":{"gitId":"laney0808"},"content":" String trimmedAllergies \u003d allergies.trim();","lastModifiedDate":"2024-03-19"},{"lineNumber":211,"author":{"gitId":"laney0808"},"content":" return new Allergies(trimmedAllergies);","lastModifiedDate":"2024-03-19"},{"lineNumber":212,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":213,"author":{"gitId":"laney0808"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":214,"author":{"gitId":"laney0808"},"content":" * Parses a {@code String condition} into an {@code Condition}.","lastModifiedDate":"2024-03-19"},{"lineNumber":215,"author":{"gitId":"laney0808"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-19"},{"lineNumber":216,"author":{"gitId":"laney0808"},"content":" *","lastModifiedDate":"2024-03-19"},{"lineNumber":217,"author":{"gitId":"laney0808"},"content":" * @throws ParseException if the given {@code condition} is invalid.","lastModifiedDate":"2024-03-19"},{"lineNumber":218,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":219,"author":{"gitId":"laney0808"},"content":" //TODO test cases","lastModifiedDate":"2024-03-21"},{"lineNumber":220,"author":{"gitId":"laney0808"},"content":" public static Condition parseCondition(String condition) throws ParseException {","lastModifiedDate":"2024-03-19"},{"lineNumber":221,"author":{"gitId":"laney0808"},"content":" requireNonNull(condition);","lastModifiedDate":"2024-03-19"},{"lineNumber":222,"author":{"gitId":"laney0808"},"content":" String trimmedCondition \u003d condition.trim();","lastModifiedDate":"2024-03-19"},{"lineNumber":223,"author":{"gitId":"laney0808"},"content":" //TODO: Implement condition validation \u0026 standardisation","lastModifiedDate":"2024-03-19"},{"lineNumber":224,"author":{"gitId":"laney0808"},"content":" return new Condition(trimmedCondition);","lastModifiedDate":"2024-03-19"},{"lineNumber":225,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":226,"author":{"gitId":"laney0808"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":227,"author":{"gitId":"laney0808"},"content":" * Parses a {@code String symptom} into an {@code Symptom}.","lastModifiedDate":"2024-03-19"},{"lineNumber":228,"author":{"gitId":"laney0808"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-19"},{"lineNumber":229,"author":{"gitId":"laney0808"},"content":" *","lastModifiedDate":"2024-03-19"},{"lineNumber":230,"author":{"gitId":"laney0808"},"content":" * @throws ParseException if the given {@code symptom} is invalid.","lastModifiedDate":"2024-03-19"},{"lineNumber":231,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":232,"author":{"gitId":"laney0808"},"content":" //TODO test cases","lastModifiedDate":"2024-03-21"},{"lineNumber":233,"author":{"gitId":"laney0808"},"content":" public static Symptom parseSymptom(String symptom) throws ParseException {","lastModifiedDate":"2024-03-19"},{"lineNumber":234,"author":{"gitId":"laney0808"},"content":" requireNonNull(symptom);","lastModifiedDate":"2024-03-19"},{"lineNumber":235,"author":{"gitId":"laney0808"},"content":" String trimmedSymptom \u003d symptom.trim();","lastModifiedDate":"2024-03-19"},{"lineNumber":236,"author":{"gitId":"laney0808"},"content":" return new Symptom(trimmedSymptom);","lastModifiedDate":"2024-03-19"},{"lineNumber":237,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":238,"author":{"gitId":"laney0808"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":239,"author":{"gitId":"laney0808"},"content":" * Parses a {@code String diagnosis} into an {@code Diagnosis}.","lastModifiedDate":"2024-03-19"},{"lineNumber":240,"author":{"gitId":"laney0808"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-19"},{"lineNumber":241,"author":{"gitId":"laney0808"},"content":" *","lastModifiedDate":"2024-03-19"},{"lineNumber":242,"author":{"gitId":"laney0808"},"content":" * @throws ParseException if the given {@code diagnosis} is invalid.","lastModifiedDate":"2024-03-19"},{"lineNumber":243,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":244,"author":{"gitId":"laney0808"},"content":" //TODO test cases","lastModifiedDate":"2024-03-21"},{"lineNumber":245,"author":{"gitId":"laney0808"},"content":" public static Diagnosis parseDiagnosis(String diagnosis) throws ParseException {","lastModifiedDate":"2024-03-19"},{"lineNumber":246,"author":{"gitId":"laney0808"},"content":" requireNonNull(diagnosis);","lastModifiedDate":"2024-03-19"},{"lineNumber":247,"author":{"gitId":"laney0808"},"content":" String trimmedDiagnosis \u003d diagnosis.trim();","lastModifiedDate":"2024-03-19"},{"lineNumber":248,"author":{"gitId":"laney0808"},"content":" return new Diagnosis(trimmedDiagnosis);","lastModifiedDate":"2024-03-19"},{"lineNumber":249,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":250,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":251,"author":{"gitId":"jovantanyk"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":252,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":253,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30"},{"lineNumber":254,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":255,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":256,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":257,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":258,"author":{"gitId":"laney0808"},"content":" //TODO test cases","lastModifiedDate":"2024-03-21"},{"lineNumber":259,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":260,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":261,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":262,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":263,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":264,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":265,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30"},{"lineNumber":266,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":268,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":269,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":270,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":271,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":272,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":273,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":274,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":275,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30"},{"lineNumber":276,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":277,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":278,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":279,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":280,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30"},{"lineNumber":281,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":283,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":284,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07"},{"lineNumber":285,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":286,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":287,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15"},{"lineNumber":288,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11"},{"lineNumber":289,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11"},{"lineNumber":290,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30"},{"lineNumber":291,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":292,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07"},{"lineNumber":293,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":294,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"jovantanyk":35,"laney0808":134,"-":125}},{"path":"src/main/java/seedu/address/logic/parser/ReadCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NatLeong"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"NatLeong"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"NatLeong"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-24"},{"lineNumber":5,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"NatLeong"},"content":"import seedu.address.logic.commands.ReadCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"NatLeong"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"NatLeong"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-03-24"},{"lineNumber":9,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"NatLeong"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"NatLeong"},"content":" * Parses input arguments and creates a new ReadCommand object","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"NatLeong"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"NatLeong"},"content":"public class ReadCommandParser implements Parser\u003cReadCommand\u003e {","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"NatLeong"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"NatLeong"},"content":" * Parses the given {@code String} of argument in the context of the ReadCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"NatLeong"},"content":" * and returns an ReadCommand object for execution.","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"NatLeong"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"NatLeong"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"NatLeong"},"content":" public ReadCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"NatLeong"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"NatLeong"},"content":" String trimmed_Args \u003d args.trim();","lastModifiedDate":"2024-03-24"},{"lineNumber":22,"author":{"gitId":"NatLeong"},"content":" if (trimmed_Args.isEmpty()) {","lastModifiedDate":"2024-03-24"},{"lineNumber":23,"author":{"gitId":"NatLeong"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-24"},{"lineNumber":24,"author":{"gitId":"NatLeong"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, ReadCommand.MESSAGE_NOT_READ));","lastModifiedDate":"2024-03-24"},{"lineNumber":25,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":27,"author":{"gitId":"NatLeong"},"content":" return new ReadCommand(new Nric(trimmed_Args));","lastModifiedDate":"2024-03-24"},{"lineNumber":28,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"NatLeong"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-22"}],"authorContributionMap":{"NatLeong":30}},{"path":"src/main/java/seedu/address/logic/parser/UpdateCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"alex-setyawan"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"alex-setyawan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"alex-setyawan"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"alex-setyawan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"alex-setyawan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ALLERGIES;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"alex-setyawan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_BLOODTYPE;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"alex-setyawan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CONDITION;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"alex-setyawan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COUNTRY;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"alex-setyawan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DATEOFADMISSION;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"alex-setyawan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DATEOFBIRTH;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"alex-setyawan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DIAGNOSIS;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"alex-setyawan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"alex-setyawan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"alex-setyawan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NRIC;","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"alex-setyawan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"alex-setyawan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SEX;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"alex-setyawan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STATUS;","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"alex-setyawan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SYMPTOM;","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"alex-setyawan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"alex-setyawan"},"content":"import java.util.Collection;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"alex-setyawan"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"alex-setyawan"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"alex-setyawan"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.logic.commands.UpdateCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.logic.commands.UpdateCommand.UpdatePersonDescriptor;","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"alex-setyawan"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"alex-setyawan"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"alex-setyawan"},"content":"public class UpdateCommandParser implements Parser\u003cUpdateCommand\u003e {","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"alex-setyawan"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"alex-setyawan"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"alex-setyawan"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"alex-setyawan"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"alex-setyawan"},"content":" public UpdateCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"alex-setyawan"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"alex-setyawan"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"alex-setyawan"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NRIC, PREFIX_NAME, PREFIX_PHONE, PREFIX_ADDRESS,","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"alex-setyawan"},"content":" PREFIX_DATEOFBIRTH, PREFIX_SEX, PREFIX_STATUS, PREFIX_TAG, PREFIX_EMAIL, PREFIX_COUNTRY,","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"alex-setyawan"},"content":" PREFIX_DATEOFADMISSION, PREFIX_ALLERGIES, PREFIX_BLOODTYPE, PREFIX_CONDITION, PREFIX_SYMPTOM,","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"alex-setyawan"},"content":" PREFIX_DIAGNOSIS);","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"alex-setyawan"},"content":" Nric nric;","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"alex-setyawan"},"content":" try {","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"alex-setyawan"},"content":" nric \u003d ParserUtil.parseNric(argMultimap.getPreamble());","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"alex-setyawan"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"alex-setyawan"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, UpdateCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"alex-setyawan"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NRIC, PREFIX_NAME, PREFIX_PHONE, PREFIX_ADDRESS,","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"alex-setyawan"},"content":" PREFIX_DATEOFBIRTH, PREFIX_SEX, PREFIX_STATUS, PREFIX_TAG, PREFIX_EMAIL, PREFIX_COUNTRY,","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"alex-setyawan"},"content":" PREFIX_DATEOFADMISSION, PREFIX_ALLERGIES, PREFIX_BLOODTYPE, PREFIX_CONDITION, PREFIX_SYMPTOM,","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"alex-setyawan"},"content":" PREFIX_DIAGNOSIS);","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"alex-setyawan"},"content":" UpdatePersonDescriptor updatePersonDescriptor \u003d new UpdatePersonDescriptor();","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"alex-setyawan"},"content":" // Mandatory fields","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"alex-setyawan"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"alex-setyawan"},"content":" updatePersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"alex-setyawan"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"alex-setyawan"},"content":" updatePersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"alex-setyawan"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"alex-setyawan"},"content":" updatePersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"alex-setyawan"},"content":" if (argMultimap.getValue(PREFIX_SEX).isPresent()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"alex-setyawan"},"content":" updatePersonDescriptor.setSex(ParserUtil.parseSex(argMultimap.getValue(PREFIX_SEX).get()));","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"alex-setyawan"},"content":" if (argMultimap.getValue(PREFIX_STATUS).isPresent()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"alex-setyawan"},"content":" updatePersonDescriptor.setStatus(ParserUtil.parseStatus(argMultimap.getValue(PREFIX_STATUS).get()));","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"alex-setyawan"},"content":" // Data fields","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"alex-setyawan"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"alex-setyawan"},"content":" updatePersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"alex-setyawan"},"content":" if (argMultimap.getValue(PREFIX_COUNTRY).isPresent()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"alex-setyawan"},"content":" updatePersonDescriptor.setCountry(ParserUtil.parseCountry(argMultimap.getValue(PREFIX_COUNTRY).get()));","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"alex-setyawan"},"content":" // Medical information","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"alex-setyawan"},"content":" if (argMultimap.getValue(PREFIX_ALLERGIES).isPresent()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"alex-setyawan"},"content":" updatePersonDescriptor.setAllergies(","lastModifiedDate":"2024-03-21"},{"lineNumber":94,"author":{"gitId":"alex-setyawan"},"content":" ParserUtil.parseAllergies(argMultimap.getValue(PREFIX_ALLERGIES).get()));","lastModifiedDate":"2024-03-21"},{"lineNumber":95,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"alex-setyawan"},"content":" if (argMultimap.getValue(PREFIX_BLOODTYPE).isPresent()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"alex-setyawan"},"content":" updatePersonDescriptor.setBloodType(","lastModifiedDate":"2024-03-21"},{"lineNumber":98,"author":{"gitId":"alex-setyawan"},"content":" ParserUtil.parseBloodType(argMultimap.getValue(PREFIX_BLOODTYPE).get()));","lastModifiedDate":"2024-03-21"},{"lineNumber":99,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"alex-setyawan"},"content":" if (argMultimap.getValue(PREFIX_CONDITION).isPresent()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":101,"author":{"gitId":"alex-setyawan"},"content":" updatePersonDescriptor.setCondition(","lastModifiedDate":"2024-03-21"},{"lineNumber":102,"author":{"gitId":"alex-setyawan"},"content":" ParserUtil.parseCondition(argMultimap.getValue(PREFIX_CONDITION).get()));","lastModifiedDate":"2024-03-21"},{"lineNumber":103,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"alex-setyawan"},"content":" if (argMultimap.getValue(PREFIX_DATEOFADMISSION).isPresent()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"alex-setyawan"},"content":" updatePersonDescriptor.setDateOfAdmission(","lastModifiedDate":"2024-03-21"},{"lineNumber":106,"author":{"gitId":"alex-setyawan"},"content":" ParserUtil.parseDateOfAdmission(argMultimap.getValue(PREFIX_DATEOFADMISSION).get()));","lastModifiedDate":"2024-03-21"},{"lineNumber":107,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":108,"author":{"gitId":"alex-setyawan"},"content":" if (argMultimap.getValue(PREFIX_DIAGNOSIS).isPresent()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":109,"author":{"gitId":"alex-setyawan"},"content":" updatePersonDescriptor.setDiagnosis(","lastModifiedDate":"2024-03-21"},{"lineNumber":110,"author":{"gitId":"alex-setyawan"},"content":" ParserUtil.parseDiagnosis(argMultimap.getValue(PREFIX_DIAGNOSIS).get()));","lastModifiedDate":"2024-03-21"},{"lineNumber":111,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":112,"author":{"gitId":"alex-setyawan"},"content":" if (argMultimap.getValue(PREFIX_SYMPTOM).isPresent()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":113,"author":{"gitId":"alex-setyawan"},"content":" updatePersonDescriptor.setSymptom(ParserUtil.parseSymptom(argMultimap.getValue(PREFIX_SYMPTOM).get()));","lastModifiedDate":"2024-03-20"},{"lineNumber":114,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":115,"author":{"gitId":"alex-setyawan"},"content":" parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(updatePersonDescriptor::setTags);","lastModifiedDate":"2024-03-20"},{"lineNumber":116,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":117,"author":{"gitId":"alex-setyawan"},"content":" if (!updatePersonDescriptor.isAnyFieldUpdated()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":118,"author":{"gitId":"alex-setyawan"},"content":" throw new ParseException(UpdateCommand.MESSAGE_NOT_UPDATED);","lastModifiedDate":"2024-03-20"},{"lineNumber":119,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":120,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":121,"author":{"gitId":"alex-setyawan"},"content":" return new UpdateCommand(nric, updatePersonDescriptor);","lastModifiedDate":"2024-03-21"},{"lineNumber":122,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":123,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":124,"author":{"gitId":"alex-setyawan"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":125,"author":{"gitId":"alex-setyawan"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e} if {@code tags} is non-empty.","lastModifiedDate":"2024-03-20"},{"lineNumber":126,"author":{"gitId":"alex-setyawan"},"content":" * If {@code tags} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2024-03-20"},{"lineNumber":127,"author":{"gitId":"alex-setyawan"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2024-03-20"},{"lineNumber":128,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":129,"author":{"gitId":"alex-setyawan"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2024-03-20"},{"lineNumber":130,"author":{"gitId":"alex-setyawan"},"content":" assert tags !\u003d null;","lastModifiedDate":"2024-03-20"},{"lineNumber":131,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":132,"author":{"gitId":"alex-setyawan"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":133,"author":{"gitId":"alex-setyawan"},"content":" return Optional.empty();","lastModifiedDate":"2024-03-20"},{"lineNumber":134,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":135,"author":{"gitId":"alex-setyawan"},"content":" Collection\u003cString\u003e tagSet \u003d tags.size() \u003d\u003d 1 \u0026\u0026 tags.contains(\"\") ? Collections.emptySet() : tags;","lastModifiedDate":"2024-03-20"},{"lineNumber":136,"author":{"gitId":"alex-setyawan"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2024-03-20"},{"lineNumber":137,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":138,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":139,"author":{"gitId":"alex-setyawan"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"alex-setyawan":139}},{"path":"src/main/java/seedu/address/model/ImmuniMate.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":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.UniquePersonList;","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Wraps all data at the address-book level","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Duplicates are not allowed (by .isSamePerson comparison)","lastModifiedDate":"2018-04-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"laney0808"},"content":"public class ImmuniMate implements ReadOnlyImmuniMate {","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"laney0808"},"content":" //TODO test cases","lastModifiedDate":"2024-03-21"},{"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":"laney0808"},"content":" public ImmuniMate() {}","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" public ImmuniMate(ReadOnlyImmuniMate toBeCopied) {","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":" * Replaces the contents of the person list with {@code persons}.","lastModifiedDate":"2018-08-07"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2018-08-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void setPersons(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-08-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.persons.setPersons(persons);","lastModifiedDate":"2016-10-19"},{"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":"laney0808"},"content":" public void resetData(ReadOnlyImmuniMate newData) {","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-09-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * The person must not already exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void addPerson(Person p) {","lastModifiedDate":"2018-08-07"},{"lineNumber":76,"author":{"gitId":"-"},"content":" persons.add(p);","lastModifiedDate":"2018-03-29"},{"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":"-"},"content":" * Replaces the given person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2018-01-10"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":82,"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":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":85,"author":{"gitId":"-"},"content":" requireNonNull(editedPerson);","lastModifiedDate":"2018-01-10"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" persons.setPerson(target, editedPerson);","lastModifiedDate":"2018-03-29"},{"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":"-"},"content":" public void removePerson(Person key) {","lastModifiedDate":"2018-08-07"},{"lineNumber":95,"author":{"gitId":"-"},"content":" persons.remove(key);","lastModifiedDate":"2018-02-28"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" //// util methods","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":" .add(\"persons\", persons)","lastModifiedDate":"2019-02-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"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-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":108,"author":{"gitId":"-"},"content":" return persons.asUnmodifiableObservableList();","lastModifiedDate":"2018-04-05"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-01"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-01"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"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":"laney0808"},"content":" if (!(other instanceof ImmuniMate)) {","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" ImmuniMate otherAddressBook \u003d (ImmuniMate) other;","lastModifiedDate":"2024-03-20"},{"lineNumber":123,"author":{"gitId":"-"},"content":" return persons.equals(otherAddressBook.persons);","lastModifiedDate":"2023-07-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":127,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":128,"author":{"gitId":"-"},"content":" return persons.hashCode();","lastModifiedDate":"2018-03-29"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":130,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"laney0808":7,"-":123}},{"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":"-"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2017-08-05"},{"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":"laney0808"},"content":" Path getImmunimateFilePath();","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" void setImmunimateFilePath(Path immuniMateFilePath);","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" void setImmuniMate(ReadOnlyImmuniMate immuniMate);","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" ReadOnlyImmuniMate getImmuniMate();","lastModifiedDate":"2024-03-20"},{"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":{"laney0808":4,"-":83}},{"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":"-"},"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":"laney0808"},"content":" private final ImmuniMate immuniMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2018-01-10"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"laney0808"},"content":" * Initializes a ModelManager with the given system and userPrefs.","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"laney0808"},"content":" public ModelManager(ReadOnlyImmuniMate immuniMate, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"laney0808"},"content":" requireAllNonNull(immuniMate, userPrefs);","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":32,"author":{"gitId":"laney0808"},"content":" logger.fine(\"Initializing with Immunimate: \" + immuniMate + \" and user prefs \" + userPrefs);","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"laney0808"},"content":" this.immuniMate \u003d new ImmuniMate(immuniMate);","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":36,"author":{"gitId":"laney0808"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(this.immuniMate.getPersonList());","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" this(new ImmuniMate(), new UserPrefs());","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"laney0808"},"content":" public Path getImmunimateFilePath() {","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","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":"laney0808"},"content":" public void setImmunimateFilePath(Path immuniMateFilePath) {","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"laney0808"},"content":" requireNonNull(immuniMateFilePath);","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"laney0808"},"content":" userPrefs.setAddressBookFilePath(immuniMateFilePath);","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"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":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":81,"author":{"gitId":"laney0808"},"content":" public void setImmuniMate(ReadOnlyImmuniMate immuniMate) {","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"laney0808"},"content":" this.immuniMate.resetData(immuniMate);","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":86,"author":{"gitId":"laney0808"},"content":" public ReadOnlyImmuniMate getImmuniMate() {","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"laney0808"},"content":" return immuniMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":90,"author":{"gitId":"laney0808"},"content":" //TODO test cases","lastModifiedDate":"2024-03-21"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":93,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":94,"author":{"gitId":"laney0808"},"content":" return immuniMate.hasPerson(person);","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":96,"author":{"gitId":"laney0808"},"content":" //TODO test cases","lastModifiedDate":"2024-03-21"},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15"},{"lineNumber":99,"author":{"gitId":"laney0808"},"content":" immuniMate.removePerson(target);","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":104,"author":{"gitId":"laney0808"},"content":" immuniMate.addPerson(person);","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"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":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":110,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":112,"author":{"gitId":"laney0808"},"content":" immuniMate.setPerson(target, editedPerson);","lastModifiedDate":"2024-03-20"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":115,"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":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":118,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10"},{"lineNumber":119,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11"},{"lineNumber":120,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":123,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":127,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":128,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05"},{"lineNumber":129,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":135,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":138,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31"},{"lineNumber":139,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":140,"author":{"gitId":"-"},"content":" return false;","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":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":144,"author":{"gitId":"laney0808"},"content":" return immuniMate.equals(otherModelManager.immuniMate)","lastModifiedDate":"2024-03-20"},{"lineNumber":145,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13"},{"lineNumber":146,"author":{"gitId":"-"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons);","lastModifiedDate":"2023-07-13"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":149,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"laney0808":23,"-":126}},{"path":"src/main/java/seedu/address/model/ReadOnlyImmuniMate.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":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"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":"laney0808"},"content":"public interface ReadOnlyImmuniMate {","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the persons list.","lastModifiedDate":"2016-12-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * This list will not contain any duplicate persons.","lastModifiedDate":"2016-12-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"laney0808":1,"-":16}},{"path":"src/main/java/seedu/address/model/person/Address.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":"-"},"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":"jovantanyk"},"content":" private final String value;","lastModifiedDate":"2024-03-18"},{"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":{"jovantanyk":1,"-":64}},{"path":"src/main/java/seedu/address/model/person/Allergies.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"laney0808"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"laney0808"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"laney0808"},"content":" * Represents a Person\u0027s allergies in the address book.","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"jovantanyk"},"content":" * Guarantees: immutable;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"laney0808"},"content":"public class Allergies {","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"laney0808"},"content":" private final String allergies;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"laney0808"},"content":" public Allergies(String allergies) {","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"laney0808"},"content":" this.allergies \u003d allergies;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"laney0808"},"content":" public String getAllergies() {","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"laney0808"},"content":" return allergies;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"alex-setyawan"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"alex-setyawan"},"content":" * Returns given placeholder string if value field is not initialised","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"alex-setyawan"},"content":" * @param alt","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"alex-setyawan"},"content":" * @return placeholder string","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"alex-setyawan"},"content":" public String orElse(String alt) {","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"alex-setyawan"},"content":" return allergies \u003d\u003d null ? alt : allergies;","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"laney0808"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"laney0808"},"content":" public String toString() {","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"laney0808"},"content":" return this.allergies;","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"laney0808"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"laney0808"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"jovantanyk"},"content":" return allergies.hashCode();","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"laney0808"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"laney0808"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"laney0808"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"laney0808"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"laney0808"},"content":" if (!(other instanceof Allergies)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"laney0808"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"laney0808"},"content":" Allergies otherAllergies \u003d (Allergies) other;","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"laney0808"},"content":" return allergies.equals(otherAllergies.allergies);","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"laney0808"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"alex-setyawan":10,"jovantanyk":2,"laney0808":39}},{"path":"src/main/java/seedu/address/model/person/BloodType.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"laney0808"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"jovantanyk"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"jovantanyk"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"jovantanyk"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"jovantanyk"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"laney0808"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"laney0808"},"content":" * Represents a Person\u0027s blood type in the address book.","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"laney0808"},"content":" * Guarantees: immutable;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"laney0808"},"content":"public class BloodType {","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"jovantanyk"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"BloodType should be either A+, A-, B+, B-, AB+, AB-, O+, O-\";","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"jovantanyk"},"content":" public static final String VALIDATION_REGEX \u003d \"^(A\\\\+|A-|B\\\\+|B-|AB\\\\+|AB-|O\\\\+|O-)$\";","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"jovantanyk"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"jovantanyk"},"content":" private final String bloodType;","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"laney0808"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"laney0808"},"content":" * Constructs a {@code BloodType}.","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"laney0808"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"jovantanyk"},"content":" * @param bloodType A valid blood type in String format","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"jovantanyk"},"content":" public BloodType(String bloodType) {","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"jovantanyk"},"content":" requireNonNull(bloodType);","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"jovantanyk"},"content":" checkArgument(isValidBloodType(bloodType), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"jovantanyk"},"content":" this.bloodType \u003d bloodType;","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"jovantanyk"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"jovantanyk"},"content":" * A method for testing if string forms a valid blood group","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"jovantanyk"},"content":" *","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"jovantanyk"},"content":" * @param test String for storing testing type","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"jovantanyk"},"content":" * @return Boolean whether test passes or fails","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"jovantanyk"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"jovantanyk"},"content":" public static boolean isValidBloodType(String test) {","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"jovantanyk"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"alex-setyawan"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"alex-setyawan"},"content":" * Returns given placeholder string if value field is not initialised","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"jovantanyk"},"content":" *","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"jovantanyk"},"content":" * @param alt An alternate return value","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"alex-setyawan"},"content":" * @return placeholder string","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"alex-setyawan"},"content":" public String orElse(String alt) {","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"jovantanyk"},"content":" return this.bloodType \u003d\u003d null ? alt : this.toString();","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"laney0808"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"laney0808"},"content":" public String toString() {","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"jovantanyk"},"content":" return this.bloodType;","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"laney0808"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"laney0808"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"jovantanyk"},"content":" return this.bloodType.hashCode();","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"laney0808"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"laney0808"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"laney0808"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"laney0808"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"laney0808"},"content":" if (!(other instanceof BloodType)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"laney0808"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"laney0808"},"content":" BloodType otherBloodType \u003d (BloodType) other;","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"jovantanyk"},"content":" return this.bloodType.equals(otherBloodType.bloodType);","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"laney0808"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"alex-setyawan":11,"jovantanyk":27,"laney0808":31}},{"path":"src/main/java/seedu/address/model/person/Condition.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"laney0808"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"laney0808"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"laney0808"},"content":" * Represents a Person\u0027s condition in the address book.","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"laney0808"},"content":" * Guarantees: immutable;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"laney0808"},"content":"public class Condition {","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"laney0808"},"content":" private final String condition;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"laney0808"},"content":" public Condition(String condition) {","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"laney0808"},"content":" this.condition \u003d condition;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"laney0808"},"content":" public String getCondition() {","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"laney0808"},"content":" return condition;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"alex-setyawan"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"alex-setyawan"},"content":" * Returns given placeholder string if value field is not initialised","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"alex-setyawan"},"content":" * @param alt","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"alex-setyawan"},"content":" * @return placeholder string","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"alex-setyawan"},"content":" public String orElse(String alt) {","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"alex-setyawan"},"content":" return condition \u003d\u003d null ? alt : condition;","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"laney0808"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"laney0808"},"content":" public String toString() {","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"laney0808"},"content":" return this.condition;","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"laney0808"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"laney0808"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"jovantanyk"},"content":" return condition.hashCode();","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"laney0808"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"laney0808"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"laney0808"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"laney0808"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"laney0808"},"content":" if (!(other instanceof Condition)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"laney0808"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"laney0808"},"content":" Condition otherCondition \u003d (Condition) other;","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"laney0808"},"content":" return condition.equals(otherCondition.condition);","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"laney0808"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"alex-setyawan":10,"jovantanyk":1,"laney0808":40}},{"path":"src/main/java/seedu/address/model/person/Country.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"laney0808"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"laney0808"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"laney0808"},"content":" * Represents a Person\u0027s condition in the address book.","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"laney0808"},"content":" * Guarantees: immutable;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"laney0808"},"content":"public class Country {","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"laney0808"},"content":" private final String country;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"jovantanyk"},"content":" //Todo: map input country to a standard country name","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"laney0808"},"content":" public Country(String country) {","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"laney0808"},"content":" this.country \u003d country;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"alex-setyawan"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"alex-setyawan"},"content":" * Returns given placeholder string if value field is not initialised","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"alex-setyawan"},"content":" * @param alt","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"alex-setyawan"},"content":" * @return placeholder string","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"alex-setyawan"},"content":" public String orElse(String alt) {","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"alex-setyawan"},"content":" return country \u003d\u003d null ? alt : country;","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"laney0808"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"laney0808"},"content":" public String toString() {","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"laney0808"},"content":" return this.country;","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"laney0808"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"laney0808"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"jovantanyk"},"content":" return country.hashCode();","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"laney0808"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"laney0808"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"laney0808"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"laney0808"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"laney0808"},"content":" if (!(other instanceof Country)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"laney0808"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"laney0808"},"content":" Country otherCountry \u003d (Country) other;","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"laney0808"},"content":" return country.equals(otherCountry.country);","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"laney0808"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"alex-setyawan":13,"jovantanyk":2,"laney0808":30}},{"path":"src/main/java/seedu/address/model/person/DateOfAdmission.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"laney0808"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"laney0808"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"laney0808"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"laney0808"},"content":" * Represents a Person\u0027s date of admission in the address book.","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"laney0808"},"content":" * Guarantees: immutable;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"laney0808"},"content":"public class DateOfAdmission {","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"laney0808"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"alex-setyawan"},"content":" \"Date of admission should be in the format of YYYY-MM-DD, and it should not be blank.\";","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"alex-setyawan"},"content":" public static final String VALIDATION_REGEX \u003d \"^\\\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$\";","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"jovantanyk"},"content":" private final LocalDate dateOfAdmission;","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"laney0808"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"laney0808"},"content":" * Constructs a {@code DateOfAdmission}.","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"laney0808"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"laney0808"},"content":" * @param dateOfAdmission A valid date of admission.","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"laney0808"},"content":" public DateOfAdmission(String dateOfAdmission) {","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"laney0808"},"content":" this.dateOfAdmission \u003d LocalDate.parse(dateOfAdmission);","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"laney0808"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"laney0808"},"content":" * Returns true if a given string is a valid date of admission.","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"laney0808"},"content":" public static boolean isValidDateOfAdmission(String test) {","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"laney0808"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"alex-setyawan"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"alex-setyawan"},"content":" * Returns given placeholder string if value field is not initialised","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"alex-setyawan"},"content":" * @param alt","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"alex-setyawan"},"content":" * @return placeholder string","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"alex-setyawan"},"content":" public String orElse(String alt) {","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"alex-setyawan"},"content":" return dateOfAdmission \u003d\u003d null ? alt : dateOfAdmission.toString();","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"laney0808"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"laney0808"},"content":" public String toString() {","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"laney0808"},"content":" return this.dateOfAdmission.toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"jovantanyk"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"laney0808"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"laney0808"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"jovantanyk"},"content":" return dateOfAdmission.hashCode();","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"jovantanyk"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"laney0808"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"laney0808"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"laney0808"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"laney0808"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"laney0808"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"laney0808"},"content":" if (!(other instanceof DateOfAdmission)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"laney0808"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"laney0808"},"content":" DateOfAdmission otherDateOfAdmission \u003d (DateOfAdmission) other;","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"laney0808"},"content":" return dateOfAdmission.equals(otherDateOfAdmission.dateOfAdmission);","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"laney0808"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"alex-setyawan":11,"jovantanyk":4,"laney0808":51}},{"path":"src/main/java/seedu/address/model/person/DateOfBirth.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"laney0808"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"laney0808"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"laney0808"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"laney0808"},"content":" * Represents a Person\u0027s date of admission in the address book.","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"laney0808"},"content":" * Guarantees: immutable;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"laney0808"},"content":"public class DateOfBirth {","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"laney0808"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"laney0808"},"content":" \"Date of birth should be in the format of YYYY-MM-DD, and it should not be blank.\";","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"jovantanyk"},"content":" public static final String VALIDATION_REGEX \u003d \"^\\\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])\";","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"jovantanyk"},"content":" private final LocalDate dateOfBirth;","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"laney0808"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"laney0808"},"content":" * Constructs a {@code DateOfBirth}.","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"laney0808"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"laney0808"},"content":" * @param dateOfBirth A valid date of birth.","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"laney0808"},"content":" public DateOfBirth(String dateOfBirth) {","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"laney0808"},"content":" if (!isValidDateOfBirth(dateOfBirth)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"laney0808"},"content":" throw new IllegalArgumentException(MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"laney0808"},"content":" this.dateOfBirth \u003d LocalDate.parse(dateOfBirth);","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"laney0808"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"laney0808"},"content":" * Returns true if a given string is a valid date of birth.","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"laney0808"},"content":" public static boolean isValidDateOfBirth(String test) {","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"laney0808"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"laney0808"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"laney0808"},"content":" public String toString() {","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"laney0808"},"content":" return this.dateOfBirth.toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"laney0808"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"laney0808"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"laney0808"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"laney0808"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"laney0808"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"laney0808"},"content":" if (!(other instanceof DateOfBirth)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"laney0808"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"laney0808"},"content":" DateOfBirth otherDateOfBirth \u003d (DateOfBirth) other;","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"laney0808"},"content":" return dateOfBirth.equals(otherDateOfBirth.dateOfBirth);","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"laney0808"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"laney0808"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"jovantanyk"},"content":" return dateOfBirth.hashCode();","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"laney0808"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"jovantanyk":3,"laney0808":57}},{"path":"src/main/java/seedu/address/model/person/Diagnosis.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"laney0808"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"laney0808"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"laney0808"},"content":" * Represents a Person\u0027s diagnosis in the address book.","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"laney0808"},"content":" * Guarantees: immutable;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"laney0808"},"content":"public class Diagnosis {","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"laney0808"},"content":" private final String diagnosis;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"laney0808"},"content":" public Diagnosis(String diagnosis) {","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"laney0808"},"content":" this.diagnosis \u003d diagnosis;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"laney0808"},"content":" public String getDiagnosis() {","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"laney0808"},"content":" return diagnosis;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"alex-setyawan"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"alex-setyawan"},"content":" * Returns given placeholder string if value field is not initialised","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"alex-setyawan"},"content":" * @param alt","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"alex-setyawan"},"content":" * @return placeholder string","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"alex-setyawan"},"content":" public String orElse(String alt) {","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"alex-setyawan"},"content":" return diagnosis \u003d\u003d null ? alt : diagnosis;","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"laney0808"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"laney0808"},"content":" public String toString() {","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"laney0808"},"content":" return this.diagnosis;","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"laney0808"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"laney0808"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"laney0808"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"laney0808"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"laney0808"},"content":" if (!(other instanceof Diagnosis)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"laney0808"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"laney0808"},"content":" Diagnosis otherDiagnosis \u003d (Diagnosis) other;","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"laney0808"},"content":" return diagnosis.equals(otherDiagnosis.diagnosis);","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"laney0808"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"laney0808"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"jovantanyk"},"content":" return diagnosis.hashCode();","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"laney0808"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"alex-setyawan":9,"jovantanyk":1,"laney0808":41}},{"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":"-"},"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":"jovantanyk"},"content":" private final String value;","lastModifiedDate":"2024-03-18"},{"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":"alex-setyawan"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"alex-setyawan"},"content":" * Returns given placeholder string if value field is not initialised","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"alex-setyawan"},"content":" * @param alt","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"alex-setyawan"},"content":" * @return placeholder string","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"alex-setyawan"},"content":" public String orElse(String alt) {","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"alex-setyawan"},"content":" return value \u003d\u003d null ? alt : value;","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return value;","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":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return true;","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":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" if (!(other instanceof Email)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" Email otherEmail \u003d (Email) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return value.equals(otherEmail.value);","lastModifiedDate":"2023-07-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"alex-setyawan":9,"jovantanyk":1,"-":78}},{"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":"-"},"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":"-"},"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":"-"},"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":"jovantanyk"},"content":" private final String fullName;","lastModifiedDate":"2024-03-18"},{"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":{"jovantanyk":1,"-":66}},{"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":"jovantanyk"},"content":" .anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(person.getName().toString(), keyword));","lastModifiedDate":"2024-03-18"},{"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":{"jovantanyk":1,"-":43}},{"path":"src/main/java/seedu/address/model/person/Nric.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"laney0808"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"laney0808"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"laney0808"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"laney0808"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"laney0808"},"content":" * Represents a Person\u0027s NRIC in the address book.","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"laney0808"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidNric(String)}","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"laney0808"},"content":"public class Nric {","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"laney0808"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"laney0808"},"content":" \"NRIC number should contain a prefix of S or T, followed by 7 digits, and end with a letter. \"","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"laney0808"},"content":" + \"There should not be blank.\";","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"laney0808"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"laney0808"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"laney0808"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"jovantanyk"},"content":" public static final String VALIDATION_REGEX \u003d \"^[ST]\\\\d{7}[A-Z]$\";","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"jovantanyk"},"content":" private final String nric;","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"laney0808"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"laney0808"},"content":" * Constructs a {@code NRIC}.","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"laney0808"},"content":" *","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"laney0808"},"content":" * @param nric A valid NRIC.","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"laney0808"},"content":" public Nric(String nric) {","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"laney0808"},"content":" requireNonNull(nric);","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"laney0808"},"content":" checkArgument(isValidNric(nric), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"laney0808"},"content":" this.nric \u003d nric;","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"laney0808"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"laney0808"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"laney0808"},"content":" public static boolean isValidNric(String test) {","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"laney0808"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"laney0808"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"laney0808"},"content":" public String toString() {","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"laney0808"},"content":" return this.nric;","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"laney0808"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"laney0808"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"laney0808"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"laney0808"},"content":" return true;","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"laney0808"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"laney0808"},"content":" if (!(other instanceof Nric)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"laney0808"},"content":" return false;","lastModifiedDate":"2024-03-14"},{"lineNumber":58,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"laney0808"},"content":" Nric otherNric \u003d (Nric) other;","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"laney0808"},"content":" return nric.equals(otherNric.nric);","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":63,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":64,"author":{"gitId":"laney0808"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":65,"author":{"gitId":"laney0808"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-14"},{"lineNumber":66,"author":{"gitId":"jovantanyk"},"content":" return nric.hashCode();","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"laney0808"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"jovantanyk":3,"laney0808":65}},{"path":"src/main/java/seedu/address/model/person/NricContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NatLeong"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"NatLeong"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"NatLeong"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"NatLeong"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"NatLeong"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"NatLeong"},"content":" * Tests that a {@code Person}\u0027s {@code Nric} matches any of the keywords given.","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"NatLeong"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"NatLeong"},"content":"public class NricContainsKeywordsPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"NatLeong"},"content":" private final String keywords;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"NatLeong"},"content":" public NricContainsKeywordsPredicate(String keywords) {","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"NatLeong"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"NatLeong"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"NatLeong"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"NatLeong"},"content":" return StringUtil.containsWordIgnoreCase(person.getNric().toString(), keywords);","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"NatLeong"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"NatLeong"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"NatLeong"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"NatLeong"},"content":" return true;","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"NatLeong"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"NatLeong"},"content":" if (!(other instanceof NricContainsKeywordsPredicate)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"NatLeong"},"content":" return false;","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"NatLeong"},"content":" NricContainsKeywordsPredicate otherNricContainsKeywordsPredicate \u003d (NricContainsKeywordsPredicate) other;","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"NatLeong"},"content":" return keywords.equals(otherNricContainsKeywordsPredicate.keywords);","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"NatLeong"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"NatLeong"},"content":" public String toString() {","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"NatLeong"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"NatLeong"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"NatLeong":42}},{"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":"laney0808"},"content":" //Mandatory fields","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"laney0808"},"content":" //Identity fields","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"laney0808"},"content":" private final Nric nric;","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"laney0808"},"content":" private Name name;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"alex-setyawan"},"content":" private Phone phone;","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"laney0808"},"content":" private Address address;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"laney0808"},"content":" private final DateOfBirth dateOfBirth;","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"alex-setyawan"},"content":" private Sex sex;","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"laney0808"},"content":" private Status status;","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"laney0808"},"content":" // Optional fields","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"laney0808"},"content":" private Email email \u003d null;","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"laney0808"},"content":" private Country country \u003d null;","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"laney0808"},"content":" //Medical information","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"jovantanyk"},"content":" private Allergies allergies \u003d null;","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"jovantanyk"},"content":" private BloodType bloodType \u003d null;","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"jovantanyk"},"content":" private Condition condition \u003d null;","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"jovantanyk"},"content":" private DateOfAdmission dateOfAdmission \u003d null;","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"jovantanyk"},"content":" private Diagnosis diagnosis \u003d null;","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"jovantanyk"},"content":" private Symptom symptom \u003d null;","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"laney0808"},"content":" * Every mandatory field must be present and not null.","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"jovantanyk"},"content":" public Person(Nric nric, Name name, Phone phone, Address address, DateOfBirth dateOfBirth, Sex sex, Status status) {","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"laney0808"},"content":" //Only the fields that are mandatory are included down here","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"laney0808"},"content":" requireAllNonNull(nric, name, phone, address, dateOfBirth, sex);","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"laney0808"},"content":" this.nric \u003d nric;","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20"},{"lineNumber":49,"author":{"gitId":"laney0808"},"content":" this.dateOfBirth \u003d dateOfBirth;","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"jovantanyk"},"content":" this.sex \u003d sex;","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"jovantanyk"},"content":" this.status \u003d status;","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"laney0808"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"laney0808"},"content":" * Constructor for Person with only Nric.","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"laney0808"},"content":" private Person(Nric nric) {","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"laney0808"},"content":" this.nric \u003d nric;","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"laney0808"},"content":" this.name \u003d null;","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"laney0808"},"content":" this.phone \u003d null;","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"laney0808"},"content":" this.address \u003d null;","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"laney0808"},"content":" this.dateOfBirth \u003d null;","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"laney0808"},"content":" this.sex \u003d null;","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"laney0808"},"content":" this.status \u003d null;","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"laney0808"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"laney0808"},"content":" * Constructor for Person with only Nric.","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"laney0808"},"content":" public static Person createPersonWithNric(Nric nric) {","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"laney0808"},"content":" return new Person(nric);","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"laney0808"},"content":" public Nric getNric() {","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"laney0808"},"content":" return nric;","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":87,"author":{"gitId":"alex-setyawan"},"content":" public Sex getSex() {","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"alex-setyawan"},"content":" return this.sex;","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":95,"author":{"gitId":"alex-setyawan"},"content":" public Allergies getAllergies() {","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"alex-setyawan"},"content":" return allergies;","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"alex-setyawan"},"content":" public BloodType getBloodType() {","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"alex-setyawan"},"content":" return bloodType;","lastModifiedDate":"2024-03-18"},{"lineNumber":101,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":102,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":103,"author":{"gitId":"alex-setyawan"},"content":" public Country getCountry() {","lastModifiedDate":"2024-03-18"},{"lineNumber":104,"author":{"gitId":"alex-setyawan"},"content":" return country;","lastModifiedDate":"2024-03-18"},{"lineNumber":105,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":106,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":107,"author":{"gitId":"laney0808"},"content":" public DateOfBirth getDateOfBirth() {","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"laney0808"},"content":" return dateOfBirth;","lastModifiedDate":"2024-03-17"},{"lineNumber":109,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"jovantanyk"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"alex-setyawan"},"content":" public Condition getCondition() {","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"alex-setyawan"},"content":" return condition;","lastModifiedDate":"2024-03-18"},{"lineNumber":113,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":115,"author":{"gitId":"alex-setyawan"},"content":" public DateOfAdmission getDateOfAdmission() {","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"alex-setyawan"},"content":" return dateOfAdmission;","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":118,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":119,"author":{"gitId":"alex-setyawan"},"content":" public Diagnosis getDiagnosis() {","lastModifiedDate":"2024-03-18"},{"lineNumber":120,"author":{"gitId":"alex-setyawan"},"content":" return diagnosis;","lastModifiedDate":"2024-03-18"},{"lineNumber":121,"author":{"gitId":"jovantanyk"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"jovantanyk"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"jovantanyk"},"content":" public Status getStatus() {","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"jovantanyk"},"content":" return this.status;","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"alex-setyawan"},"content":" public Symptom getSymptom() {","lastModifiedDate":"2024-03-18"},{"lineNumber":128,"author":{"gitId":"alex-setyawan"},"content":" return symptom;","lastModifiedDate":"2024-03-18"},{"lineNumber":129,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":130,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07"},{"lineNumber":132,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07"},{"lineNumber":134,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07"},{"lineNumber":135,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":136,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":138,"author":{"gitId":"laney0808"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":139,"author":{"gitId":"laney0808"},"content":" * Sets the name of the person to input value.","lastModifiedDate":"2024-03-19"},{"lineNumber":140,"author":{"gitId":"laney0808"},"content":" * @param name the new name.","lastModifiedDate":"2024-03-19"},{"lineNumber":141,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":142,"author":{"gitId":"laney0808"},"content":" public void setName(Name name) {","lastModifiedDate":"2024-03-19"},{"lineNumber":143,"author":{"gitId":"laney0808"},"content":" this.name \u003d name;","lastModifiedDate":"2024-03-19"},{"lineNumber":144,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":146,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":147,"author":{"gitId":"laney0808"},"content":" * Sets the phone of the person to input value.","lastModifiedDate":"2024-03-19"},{"lineNumber":148,"author":{"gitId":"laney0808"},"content":" * @param phone the new phone.","lastModifiedDate":"2024-03-19"},{"lineNumber":149,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":150,"author":{"gitId":"laney0808"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2024-03-19"},{"lineNumber":151,"author":{"gitId":"laney0808"},"content":" this.phone \u003d phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":152,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":153,"author":{"gitId":"laney0808"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":154,"author":{"gitId":"laney0808"},"content":" * Sets the address of the person to input value.","lastModifiedDate":"2024-03-19"},{"lineNumber":155,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":156,"author":{"gitId":"laney0808"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2024-03-19"},{"lineNumber":157,"author":{"gitId":"laney0808"},"content":" this.address \u003d address;","lastModifiedDate":"2024-03-19"},{"lineNumber":158,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":159,"author":{"gitId":"laney0808"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":160,"author":{"gitId":"laney0808"},"content":" * Sets the sex of the person to input value.","lastModifiedDate":"2024-03-19"},{"lineNumber":161,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":162,"author":{"gitId":"laney0808"},"content":" public void setSex(Sex sex) {","lastModifiedDate":"2024-03-19"},{"lineNumber":163,"author":{"gitId":"laney0808"},"content":" this.sex \u003d sex;","lastModifiedDate":"2024-03-19"},{"lineNumber":164,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":165,"author":{"gitId":"laney0808"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":166,"author":{"gitId":"laney0808"},"content":" * Sets the status of the person to input value.","lastModifiedDate":"2024-03-19"},{"lineNumber":167,"author":{"gitId":"laney0808"},"content":" * @param status the new status.","lastModifiedDate":"2024-03-19"},{"lineNumber":168,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":169,"author":{"gitId":"laney0808"},"content":" public void setStatus(Status status) {","lastModifiedDate":"2024-03-19"},{"lineNumber":170,"author":{"gitId":"laney0808"},"content":" this.status \u003d status;","lastModifiedDate":"2024-03-19"},{"lineNumber":171,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":172,"author":{"gitId":"laney0808"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":173,"author":{"gitId":"laney0808"},"content":" * Sets the email of the person to input value.","lastModifiedDate":"2024-03-19"},{"lineNumber":174,"author":{"gitId":"laney0808"},"content":" * @param email the new email.","lastModifiedDate":"2024-03-19"},{"lineNumber":175,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":176,"author":{"gitId":"laney0808"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2024-03-19"},{"lineNumber":177,"author":{"gitId":"laney0808"},"content":" this.email \u003d email;","lastModifiedDate":"2024-03-19"},{"lineNumber":178,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":179,"author":{"gitId":"laney0808"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":180,"author":{"gitId":"laney0808"},"content":" * Sets the allergies of the person to input value.","lastModifiedDate":"2024-03-19"},{"lineNumber":181,"author":{"gitId":"laney0808"},"content":" * @param allergies the new allergies.","lastModifiedDate":"2024-03-19"},{"lineNumber":182,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":183,"author":{"gitId":"laney0808"},"content":" public void setAllergies(Allergies allergies) {","lastModifiedDate":"2024-03-19"},{"lineNumber":184,"author":{"gitId":"laney0808"},"content":" this.allergies \u003d allergies;","lastModifiedDate":"2024-03-19"},{"lineNumber":185,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":186,"author":{"gitId":"laney0808"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":187,"author":{"gitId":"laney0808"},"content":" * Sets the blood type of the person to input value.","lastModifiedDate":"2024-03-19"},{"lineNumber":188,"author":{"gitId":"laney0808"},"content":" * @param bloodType the new blood type.","lastModifiedDate":"2024-03-19"},{"lineNumber":189,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":190,"author":{"gitId":"laney0808"},"content":" public void setBloodType(BloodType bloodType) {","lastModifiedDate":"2024-03-19"},{"lineNumber":191,"author":{"gitId":"laney0808"},"content":" this.bloodType \u003d bloodType;","lastModifiedDate":"2024-03-19"},{"lineNumber":192,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":193,"author":{"gitId":"laney0808"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":194,"author":{"gitId":"laney0808"},"content":" * Sets the country of the person to input value.","lastModifiedDate":"2024-03-19"},{"lineNumber":195,"author":{"gitId":"laney0808"},"content":" * @param country the new country.","lastModifiedDate":"2024-03-19"},{"lineNumber":196,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":197,"author":{"gitId":"laney0808"},"content":" public void setCountry(Country country) {","lastModifiedDate":"2024-03-19"},{"lineNumber":198,"author":{"gitId":"laney0808"},"content":" this.country \u003d country;","lastModifiedDate":"2024-03-19"},{"lineNumber":199,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":200,"author":{"gitId":"laney0808"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":201,"author":{"gitId":"laney0808"},"content":" * Sets the condition of the person to input value.","lastModifiedDate":"2024-03-19"},{"lineNumber":202,"author":{"gitId":"laney0808"},"content":" * @param condition the new condition.","lastModifiedDate":"2024-03-19"},{"lineNumber":203,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":204,"author":{"gitId":"laney0808"},"content":" public void setCondition(Condition condition) {","lastModifiedDate":"2024-03-19"},{"lineNumber":205,"author":{"gitId":"laney0808"},"content":" this.condition \u003d condition;","lastModifiedDate":"2024-03-19"},{"lineNumber":206,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":207,"author":{"gitId":"laney0808"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":208,"author":{"gitId":"laney0808"},"content":" * Sets the date of admission of the person to input value.","lastModifiedDate":"2024-03-19"},{"lineNumber":209,"author":{"gitId":"laney0808"},"content":" * @param dateOfAdmission the new date of admission.","lastModifiedDate":"2024-03-19"},{"lineNumber":210,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":211,"author":{"gitId":"laney0808"},"content":" public void setDateOfAdmission(DateOfAdmission dateOfAdmission) {","lastModifiedDate":"2024-03-19"},{"lineNumber":212,"author":{"gitId":"laney0808"},"content":" this.dateOfAdmission \u003d dateOfAdmission;","lastModifiedDate":"2024-03-19"},{"lineNumber":213,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":214,"author":{"gitId":"laney0808"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":215,"author":{"gitId":"laney0808"},"content":" * Sets the diagnosis of the person to input value.","lastModifiedDate":"2024-03-19"},{"lineNumber":216,"author":{"gitId":"laney0808"},"content":" * @param diagnosis the new diagnosis.","lastModifiedDate":"2024-03-19"},{"lineNumber":217,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":218,"author":{"gitId":"laney0808"},"content":" public void setDiagnosis(Diagnosis diagnosis) {","lastModifiedDate":"2024-03-19"},{"lineNumber":219,"author":{"gitId":"laney0808"},"content":" this.diagnosis \u003d diagnosis;","lastModifiedDate":"2024-03-19"},{"lineNumber":220,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":221,"author":{"gitId":"laney0808"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":222,"author":{"gitId":"laney0808"},"content":" * Sets the symptom of the person to input value.","lastModifiedDate":"2024-03-19"},{"lineNumber":223,"author":{"gitId":"laney0808"},"content":" * @param symptom the new symptom.","lastModifiedDate":"2024-03-19"},{"lineNumber":224,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":225,"author":{"gitId":"laney0808"},"content":" public void setSymptom(Symptom symptom) {","lastModifiedDate":"2024-03-19"},{"lineNumber":226,"author":{"gitId":"laney0808"},"content":" this.symptom \u003d symptom;","lastModifiedDate":"2024-03-19"},{"lineNumber":227,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":229,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":230,"author":{"gitId":"laney0808"},"content":" * Returns true if both persons have the same nric.","lastModifiedDate":"2024-03-17"},{"lineNumber":231,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":232,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":233,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19"},{"lineNumber":234,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19"},{"lineNumber":235,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":236,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":238,"author":{"gitId":"jovantanyk"},"content":" return otherPerson !\u003d null \u0026\u0026 otherPerson.getNric().equals(getNric());","lastModifiedDate":"2024-03-17"},{"lineNumber":239,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":241,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":242,"author":{"gitId":"laney0808"},"content":" * Returns true if the person has all mandatory fields.","lastModifiedDate":"2024-03-23"},{"lineNumber":243,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":244,"author":{"gitId":"laney0808"},"content":" public static boolean isValidPerson(Person person) {","lastModifiedDate":"2024-03-23"},{"lineNumber":245,"author":{"gitId":"laney0808"},"content":" return person.nric !\u003d null","lastModifiedDate":"2024-03-23"},{"lineNumber":246,"author":{"gitId":"laney0808"},"content":" \u0026\u0026 person.name !\u003d null","lastModifiedDate":"2024-03-23"},{"lineNumber":247,"author":{"gitId":"laney0808"},"content":" \u0026\u0026 person.phone !\u003d null","lastModifiedDate":"2024-03-23"},{"lineNumber":248,"author":{"gitId":"laney0808"},"content":" \u0026\u0026 person.address !\u003d null","lastModifiedDate":"2024-03-23"},{"lineNumber":249,"author":{"gitId":"laney0808"},"content":" \u0026\u0026 person.dateOfBirth !\u003d null","lastModifiedDate":"2024-03-23"},{"lineNumber":250,"author":{"gitId":"laney0808"},"content":" \u0026\u0026 person.sex !\u003d null","lastModifiedDate":"2024-03-23"},{"lineNumber":251,"author":{"gitId":"laney0808"},"content":" \u0026\u0026 person.status !\u003d null;","lastModifiedDate":"2024-03-23"},{"lineNumber":252,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":253,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":255,"author":{"gitId":"laney0808"},"content":" * Returns true if both persons have the same identity and all data fields.","lastModifiedDate":"2024-03-21"},{"lineNumber":256,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":257,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":258,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":259,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":260,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":261,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10"},{"lineNumber":262,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":264,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":265,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10"},{"lineNumber":266,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":267,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":268,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10"},{"lineNumber":269,"author":{"gitId":"laney0808"},"content":" if (!(isValidPerson(this) \u0026\u0026 isValidPerson(otherPerson))) {","lastModifiedDate":"2024-03-23"},{"lineNumber":270,"author":{"gitId":"laney0808"},"content":" return false;","lastModifiedDate":"2024-03-23"},{"lineNumber":271,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":272,"author":{"gitId":"alex-setyawan"},"content":" return nric.equals(otherPerson.nric)","lastModifiedDate":"2024-03-18"},{"lineNumber":273,"author":{"gitId":"alex-setyawan"},"content":" \u0026\u0026 name.equals(otherPerson.name)","lastModifiedDate":"2024-03-18"},{"lineNumber":274,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2024-03-18"},{"lineNumber":275,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2024-03-18"},{"lineNumber":276,"author":{"gitId":"alex-setyawan"},"content":" \u0026\u0026 dateOfBirth.equals(otherPerson.dateOfBirth)","lastModifiedDate":"2024-03-18"},{"lineNumber":277,"author":{"gitId":"laney0808"},"content":" \u0026\u0026 sex.equals(otherPerson.sex)","lastModifiedDate":"2024-03-20"},{"lineNumber":278,"author":{"gitId":"laney0808"},"content":" \u0026\u0026 status.equals(otherPerson.status)","lastModifiedDate":"2024-03-21"},{"lineNumber":279,"author":{"gitId":"laney0808"},"content":" \u0026\u0026 tags.equals(otherPerson.tags)","lastModifiedDate":"2024-03-21"},{"lineNumber":280,"author":{"gitId":"laney0808"},"content":" \u0026\u0026 Objects.equals(email, otherPerson.email)","lastModifiedDate":"2024-03-23"},{"lineNumber":281,"author":{"gitId":"laney0808"},"content":" \u0026\u0026 Objects.equals(country, otherPerson.country)","lastModifiedDate":"2024-03-23"},{"lineNumber":282,"author":{"gitId":"laney0808"},"content":" \u0026\u0026 Objects.equals(allergies, otherPerson.allergies)","lastModifiedDate":"2024-03-23"},{"lineNumber":283,"author":{"gitId":"laney0808"},"content":" \u0026\u0026 Objects.equals(bloodType, otherPerson.bloodType)","lastModifiedDate":"2024-03-23"},{"lineNumber":284,"author":{"gitId":"laney0808"},"content":" \u0026\u0026 Objects.equals(condition, otherPerson.condition)","lastModifiedDate":"2024-03-23"},{"lineNumber":285,"author":{"gitId":"laney0808"},"content":" \u0026\u0026 Objects.equals(dateOfAdmission, otherPerson.dateOfAdmission)","lastModifiedDate":"2024-03-23"},{"lineNumber":286,"author":{"gitId":"laney0808"},"content":" \u0026\u0026 Objects.equals(diagnosis, otherPerson.diagnosis)","lastModifiedDate":"2024-03-23"},{"lineNumber":287,"author":{"gitId":"laney0808"},"content":" \u0026\u0026 Objects.equals(symptom, otherPerson.symptom);","lastModifiedDate":"2024-03-23"},{"lineNumber":288,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":290,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":291,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":292,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":293,"author":{"gitId":"jovantanyk"},"content":" return Objects.hash(nric, name, phone, address, dateOfBirth, sex, status);","lastModifiedDate":"2024-03-22"},{"lineNumber":294,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":296,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":297,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":298,"author":{"gitId":"alex-setyawan"},"content":" // list view","lastModifiedDate":"2024-03-18"},{"lineNumber":299,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-21"},{"lineNumber":300,"author":{"gitId":"laney0808"},"content":" .add(\"nric\", nric)","lastModifiedDate":"2024-03-21"},{"lineNumber":301,"author":{"gitId":"laney0808"},"content":" .add(\"name\", name)","lastModifiedDate":"2024-03-21"},{"lineNumber":302,"author":{"gitId":"laney0808"},"content":" .add(\"status\", status).toString();","lastModifiedDate":"2024-03-21"},{"lineNumber":303,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":304,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":305,"author":{"gitId":"jovantanyk"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":306,"author":{"gitId":"jovantanyk"},"content":" * @return Detailed String of Person","lastModifiedDate":"2024-03-18"},{"lineNumber":307,"author":{"gitId":"jovantanyk"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":308,"author":{"gitId":"alex-setyawan"},"content":" public String toDetailedString() {","lastModifiedDate":"2024-03-18"},{"lineNumber":309,"author":{"gitId":"alex-setyawan"},"content":" // detailed view","lastModifiedDate":"2024-03-18"},{"lineNumber":310,"author":{"gitId":"alex-setyawan"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-18"},{"lineNumber":311,"author":{"gitId":"alex-setyawan"},"content":" .add(\"nric\", nric)","lastModifiedDate":"2024-03-18"},{"lineNumber":312,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2024-03-18"},{"lineNumber":313,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2024-03-18"},{"lineNumber":314,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2024-03-18"},{"lineNumber":315,"author":{"gitId":"laney0808"},"content":" .add(\"birthday\", dateOfBirth)","lastModifiedDate":"2024-03-21"},{"lineNumber":316,"author":{"gitId":"laney0808"},"content":" .add(\"sex\", sex)","lastModifiedDate":"2024-03-21"},{"lineNumber":317,"author":{"gitId":"laney0808"},"content":" .add(\"status\", status)","lastModifiedDate":"2024-03-21"},{"lineNumber":318,"author":{"gitId":"laney0808"},"content":" .add(\"email\", email)","lastModifiedDate":"2024-03-21"},{"lineNumber":319,"author":{"gitId":"laney0808"},"content":" .add(\"admission\", dateOfAdmission)","lastModifiedDate":"2024-03-21"},{"lineNumber":320,"author":{"gitId":"alex-setyawan"},"content":" .add(\"allergies\", allergies)","lastModifiedDate":"2024-03-18"},{"lineNumber":321,"author":{"gitId":"alex-setyawan"},"content":" .add(\"blood type\", bloodType)","lastModifiedDate":"2024-03-18"},{"lineNumber":322,"author":{"gitId":"alex-setyawan"},"content":" .add(\"country\", country)","lastModifiedDate":"2024-03-18"},{"lineNumber":323,"author":{"gitId":"laney0808"},"content":" .add(\"condition\", condition)","lastModifiedDate":"2024-03-21"},{"lineNumber":324,"author":{"gitId":"alex-setyawan"},"content":" .add(\"diagnosis\", diagnosis)","lastModifiedDate":"2024-03-18"},{"lineNumber":325,"author":{"gitId":"alex-setyawan"},"content":" .add(\"symptom\", symptom)","lastModifiedDate":"2024-03-18"},{"lineNumber":326,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2024-03-21"},{"lineNumber":327,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2024-03-18"},{"lineNumber":328,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":329,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"alex-setyawan":45,"jovantanyk":19,"laney0808":169,"-":96}},{"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":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"jovantanyk"},"content":" \"Phone numbers should only contain numbers, and it should be at least 8 digits long\";","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"laney0808"},"content":" //TODO: change REGEX to give correct results","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"laney0808"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\d{8}\";","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"jovantanyk"},"content":" private final String value;","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"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":{"jovantanyk":2,"laney0808":2,"-":58}},{"path":"src/main/java/seedu/address/model/person/Sex.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"laney0808"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"laney0808"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"laney0808"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"laney0808"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"laney0808"},"content":" * Represents a Person\u0027s status in the address book.","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"laney0808"},"content":" * Guarantees: immutable;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"laney0808"},"content":"public class Sex {","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"jovantanyk"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Sex should be either F or M.\";","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"alex-setyawan"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"alex-setyawan"},"content":" * Represents sex of a person.","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"jovantanyk"},"content":" private enum SexType { F, M }","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"laney0808"},"content":" private final SexType sex;","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"laney0808"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"laney0808"},"content":" * Constructs a Sex instance.","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"jovantanyk"},"content":" public Sex(String sex) {","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"jovantanyk"},"content":" requireNonNull(sex);","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"jovantanyk"},"content":" checkArgument(isValidSex(sex), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"jovantanyk"},"content":" this.sex \u003d SexType.valueOf(sex);","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"jovantanyk"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"jovantanyk"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"jovantanyk"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"jovantanyk"},"content":" * Checks if a String matches the Enum","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"jovantanyk"},"content":" * @param testString String of input","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"jovantanyk"},"content":" * @return Boolean","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"jovantanyk"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"jovantanyk"},"content":" public static boolean isValidSex(String testString) {","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"jovantanyk"},"content":" try {","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"jovantanyk"},"content":" SexType sexType \u003d SexType.valueOf(testString);","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"jovantanyk"},"content":" return true;","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"jovantanyk"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"jovantanyk"},"content":" return false;","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"jovantanyk"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"laney0808"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"laney0808"},"content":" public String toString() {","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"laney0808"},"content":" return this.sex.toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"laney0808"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"laney0808"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"laney0808"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"laney0808"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"laney0808"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"laney0808"},"content":" if (!(other instanceof Sex)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"laney0808"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"laney0808"},"content":" Sex otherSex \u003d (Sex) other;","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"laney0808"},"content":" return sex.equals(otherSex.sex);","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"laney0808"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"laney0808"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"jovantanyk"},"content":" return sex.hashCode();","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"laney0808"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"alex-setyawan":5,"jovantanyk":21,"laney0808":41}},{"path":"src/main/java/seedu/address/model/person/Status.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"laney0808"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"jovantanyk"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"jovantanyk"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"jovantanyk"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"laney0808"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"laney0808"},"content":" * Represents a Person\u0027s status in the address book.","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"laney0808"},"content":" * Guarantees: immutable;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"laney0808"},"content":"public class Status {","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"jovantanyk"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"jovantanyk"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"jovantanyk"},"content":" \"Status should only be one of the following: HEALTHY, UNWELL, PENDING.\";","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"alex-setyawan"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"alex-setyawan"},"content":" * Represents status of a person.","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"alex-setyawan"},"content":" public enum StatusType { HEALTHY, UNWELL, PENDING }","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"laney0808"},"content":" private final StatusType status;","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"laney0808"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"laney0808"},"content":" * Constructs a Status instance.","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"laney0808"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"jovantanyk"},"content":" * @param status Status of a person","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"jovantanyk"},"content":" public Status(String status) {","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"jovantanyk"},"content":" requireNonNull(status);","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"jovantanyk"},"content":" checkArgument(isValidStatus(status), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"jovantanyk"},"content":" this.status \u003d StatusType.valueOf(status);","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"NatLeong"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"NatLeong"},"content":" * Gets status type","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"NatLeong"},"content":" *","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"NatLeong"},"content":" * @return Status type of this status","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"NatLeong"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"NatLeong"},"content":" public StatusType getStatusType() {","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"NatLeong"},"content":" return this.status;","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"jovantanyk"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"jovantanyk"},"content":" * Checks if a String matches the Enum","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"jovantanyk"},"content":" * @param testString String of input","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"jovantanyk"},"content":" * @return Boolean","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"jovantanyk"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"jovantanyk"},"content":" public static boolean isValidStatus(String testString) {","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"jovantanyk"},"content":" try {","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"jovantanyk"},"content":" StatusType statusType \u003d StatusType.valueOf(testString);","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"jovantanyk"},"content":" return true;","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"jovantanyk"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"jovantanyk"},"content":" return false;","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"jovantanyk"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"jovantanyk"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"laney0808"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"laney0808"},"content":" public String toString() {","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"jovantanyk"},"content":" // TODO Implement Custom toString format","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"laney0808"},"content":" return this.status.toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"laney0808"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"laney0808"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"laney0808"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"laney0808"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"laney0808"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"laney0808"},"content":" if (!(other instanceof Status)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"laney0808"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"laney0808"},"content":" Status otherSex \u003d (Status) other;","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"laney0808"},"content":" return status.equals(otherSex.status);","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"laney0808"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"laney0808"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"jovantanyk"},"content":" return status.hashCode();","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"laney0808"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"alex-setyawan":5,"jovantanyk":26,"laney0808":39,"NatLeong":9}},{"path":"src/main/java/seedu/address/model/person/Symptom.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"laney0808"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"laney0808"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"laney0808"},"content":" * Represents a Person\u0027s symptom in the address book.","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"laney0808"},"content":" * Guarantees: immutable;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"laney0808"},"content":"public class Symptom {","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"laney0808"},"content":" private final String symptom;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"laney0808"},"content":" public Symptom(String symptom) {","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"laney0808"},"content":" this.symptom \u003d symptom;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"laney0808"},"content":" public String getSymptom() {","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"laney0808"},"content":" return symptom;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"alex-setyawan"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"alex-setyawan"},"content":" * Returns given placeholder string if value field is not initialised","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"alex-setyawan"},"content":" * @param alt","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"alex-setyawan"},"content":" * @return placeholder string","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"alex-setyawan"},"content":" public String orElse(String alt) {","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"alex-setyawan"},"content":" return symptom \u003d\u003d null ? alt : symptom;","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"laney0808"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"laney0808"},"content":" public String toString() {","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"laney0808"},"content":" return this.symptom;","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"alex-setyawan"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"alex-setyawan"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"alex-setyawan"},"content":" return symptom.hashCode();","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"laney0808"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"laney0808"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"laney0808"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"laney0808"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"laney0808"},"content":" if (!(other instanceof Symptom)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"laney0808"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"laney0808"},"content":" Symptom otherSymptom \u003d (Symptom) other;","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"laney0808"},"content":" return symptom.equals(otherSymptom.symptom);","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"laney0808"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"alex-setyawan":14,"laney0808":36}},{"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":"laney0808"},"content":"","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"laney0808"},"content":" * Returns true if the list contains a person with the given NRIC.","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"laney0808"},"content":" public boolean containsNric(Nric nric) {","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"laney0808"},"content":" requireNonNull(nric);","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"laney0808"},"content":" return internalList.stream().anyMatch(person -\u003e person.getNric().equals(nric));","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Adds a person to the list.","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * The person must not already exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void add(Person toAdd) {","lastModifiedDate":"2018-08-07"},{"lineNumber":53,"author":{"gitId":"-"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2017-05-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" internalList.add(toAdd);","lastModifiedDate":"2018-01-10"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Replaces the person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2017-06-07"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":63,"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":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-07"},{"lineNumber":66,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2018-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2017-06-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2017-06-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":" throw new PersonNotFoundException();","lastModifiedDate":"2017-06-07"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-07"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-07"},{"lineNumber":73,"author":{"gitId":"-"},"content":" if (!target.isSamePerson(editedPerson) \u0026\u0026 contains(editedPerson)) {","lastModifiedDate":"2018-04-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2016-12-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" internalList.set(index, editedPerson);","lastModifiedDate":"2018-01-10"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * Removes the equivalent person from the list.","lastModifiedDate":"2016-08-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * The person must exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void remove(Person toRemove) {","lastModifiedDate":"2018-08-07"},{"lineNumber":85,"author":{"gitId":"-"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2017-05-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2018-02-28"},{"lineNumber":87,"author":{"gitId":"-"},"content":" throw new PersonNotFoundException();","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":"","lastModifiedDate":"2016-08-24"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void setPersons(UniquePersonList replacement) {","lastModifiedDate":"2016-10-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" requireNonNull(replacement);","lastModifiedDate":"2018-08-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2018-08-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * Replaces the contents of this list with {@code persons}.","lastModifiedDate":"2018-08-07"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2018-08-07"},{"lineNumber":99,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void setPersons(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-08-07"},{"lineNumber":101,"author":{"gitId":"-"},"content":" requireAllNonNull(persons);","lastModifiedDate":"2018-01-10"},{"lineNumber":102,"author":{"gitId":"-"},"content":" if (!personsAreUnique(persons)) {","lastModifiedDate":"2018-04-19"},{"lineNumber":103,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2018-01-21"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-21"},{"lineNumber":106,"author":{"gitId":"-"},"content":" internalList.setAll(persons);","lastModifiedDate":"2018-08-14"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":109,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-09-01"},{"lineNumber":110,"author":{"gitId":"-"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2017-09-01"},{"lineNumber":111,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-09-01"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2018-04-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2018-12-09"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public Iterator\u003cPerson\u003e iterator() {","lastModifiedDate":"2016-08-24"},{"lineNumber":118,"author":{"gitId":"-"},"content":" return internalList.iterator();","lastModifiedDate":"2016-08-24"},{"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-09-21"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"lineNumber":123,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":128,"author":{"gitId":"-"},"content":" if (!(other instanceof UniquePersonList)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":129,"author":{"gitId":"-"},"content":" return false;","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":" UniquePersonList otherUniquePersonList \u003d (UniquePersonList) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":" return internalList.equals(otherUniquePersonList.internalList);","lastModifiedDate":"2023-07-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":137,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":138,"author":{"gitId":"-"},"content":" return internalList.hashCode();","lastModifiedDate":"2016-09-21"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-24"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-24"},{"lineNumber":143,"author":{"gitId":"-"},"content":" return internalList.toString();","lastModifiedDate":"2019-02-24"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24"},{"lineNumber":146,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":147,"author":{"gitId":"-"},"content":" * Returns true if {@code persons} contains only unique persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":148,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":149,"author":{"gitId":"-"},"content":" private boolean personsAreUnique(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-04-19"},{"lineNumber":150,"author":{"gitId":"-"},"content":" for (int i \u003d 0; i \u003c persons.size() - 1; i++) {","lastModifiedDate":"2018-04-19"},{"lineNumber":151,"author":{"gitId":"-"},"content":" for (int j \u003d i + 1; j \u003c persons.size(); j++) {","lastModifiedDate":"2018-04-19"},{"lineNumber":152,"author":{"gitId":"-"},"content":" if (persons.get(i).isSamePerson(persons.get(j))) {","lastModifiedDate":"2018-04-19"},{"lineNumber":153,"author":{"gitId":"-"},"content":" return false;","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":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":157,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":159,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"laney0808":9,"-":150}},{"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":"laney0808"},"content":"import seedu.address.model.ImmuniMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"laney0808"},"content":"import seedu.address.model.ReadOnlyImmuniMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-20"},{"lineNumber":6,"author":{"gitId":"laney0808"},"content":"import seedu.address.model.person.DateOfBirth;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20"},{"lineNumber":8,"author":{"gitId":"laney0808"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-20"},{"lineNumber":11,"author":{"gitId":"jovantanyk"},"content":"import seedu.address.model.person.Sex;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"jovantanyk"},"content":"import seedu.address.model.person.Status;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20"},{"lineNumber":20,"author":{"gitId":"jovantanyk"},"content":" new Person(new Nric(\"T0234567C\"), new Name(\"Alex Yeoh\"), new Phone(\"87438807\"),","lastModifiedDate":"2024-03-24"},{"lineNumber":21,"author":{"gitId":"jovantanyk"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"), new DateOfBirth(\"1977-04-03\"),","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"jovantanyk"},"content":" new Sex(\"M\"), new Status(\"HEALTHY\")),","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"jovantanyk"},"content":" new Person(new Nric(\"S9234568N\"), new Name(\"Bernice Yu\"), new Phone(\"99272758\"),","lastModifiedDate":"2024-03-24"},{"lineNumber":24,"author":{"gitId":"jovantanyk"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"), new DateOfBirth(\"1977-04-03\"),","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"jovantanyk"},"content":" new Sex(\"F\"), new Status(\"UNWELL\")),","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"jovantanyk"},"content":" new Person(new Nric(\"S8934569Z\"), new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"),","lastModifiedDate":"2024-03-24"},{"lineNumber":27,"author":{"gitId":"jovantanyk"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"), new DateOfBirth(\"2001-04-03\"),","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"jovantanyk"},"content":" new Sex(\"F\"), new Status(\"HEALTHY\")),","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"jovantanyk"},"content":" new Person(new Nric(\"T0134560A\"), new Name(\"David Li\"), new Phone(\"91031282\"),","lastModifiedDate":"2024-03-24"},{"lineNumber":30,"author":{"gitId":"jovantanyk"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"), new DateOfBirth(\"1987-11-03\"),","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"jovantanyk"},"content":" new Sex(\"M\"), new Status(\"PENDING\")),","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"jovantanyk"},"content":" new Person(new Nric(\"T0534161B\"), new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"),","lastModifiedDate":"2024-03-24"},{"lineNumber":33,"author":{"gitId":"jovantanyk"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"), new DateOfBirth(\"1970-12-03\"),","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"jovantanyk"},"content":" new Sex(\"M\"), new Status(\"UNWELL\")),","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"jovantanyk"},"content":" new Person(new Nric(\"S9781662B\"), new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"),","lastModifiedDate":"2024-03-24"},{"lineNumber":36,"author":{"gitId":"jovantanyk"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"), new DateOfBirth(\"1987-04-03\"),","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"jovantanyk"},"content":" new Sex(\"M\"), new Status(\"PENDING\"))","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":41,"author":{"gitId":"laney0808"},"content":" public static ReadOnlyImmuniMate getSampleAddressBook() {","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"laney0808"},"content":" ImmuniMate sampleAb \u003d new ImmuniMate();","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"jovantanyk":20,"laney0808":6,"-":23}},{"path":"src/main/java/seedu/address/storage/AddressBookStorage.java","fileType":"functional-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 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":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":8,"author":{"gitId":"laney0808"},"content":"import seedu.address.model.ImmuniMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"laney0808"},"content":"import seedu.address.model.ReadOnlyImmuniMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-24"},{"lineNumber":12,"author":{"gitId":"laney0808"},"content":" * Represents a storage for {@link ImmuniMate}.","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public interface AddressBookStorage {","lastModifiedDate":"2016-09-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Returns the file path of the data file.","lastModifiedDate":"2016-09-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-04-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-24"},{"lineNumber":22,"author":{"gitId":"laney0808"},"content":" * Returns AddressBook data as a {@link ReadOnlyImmuniMate}.","lastModifiedDate":"2024-03-20"},{"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 loading the data from storage failed.","lastModifiedDate":"2023-06-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":27,"author":{"gitId":"laney0808"},"content":" Optional\u003cReadOnlyImmuniMate\u003e readAddressBook() throws DataLoadingException;","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-01"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @see #getAddressBookFilePath()","lastModifiedDate":"2016-10-01"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-01"},{"lineNumber":32,"author":{"gitId":"laney0808"},"content":" Optional\u003cReadOnlyImmuniMate\u003e readAddressBook(Path filePath) throws DataLoadingException;","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-24"},{"lineNumber":35,"author":{"gitId":"laney0808"},"content":" * Saves the given {@link ReadOnlyImmuniMate} to the storage.","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * @param addressBook cannot be null.","lastModifiedDate":"2016-09-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @throws IOException if there was any problem writing to the file.","lastModifiedDate":"2016-09-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":39,"author":{"gitId":"laney0808"},"content":" void saveAddressBook(ReadOnlyImmuniMate addressBook) throws IOException;","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-01"},{"lineNumber":42,"author":{"gitId":"laney0808"},"content":" * @see #saveAddressBook(ReadOnlyImmuniMate)","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-01"},{"lineNumber":44,"author":{"gitId":"laney0808"},"content":" void saveAddressBook(ReadOnlyImmuniMate addressBook, Path filePath) throws IOException;","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-24"}],"authorContributionMap":{"laney0808":10,"-":36}},{"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":"NatLeong"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"NatLeong"},"content":"import seedu.address.model.person.Allergies;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"NatLeong"},"content":"import seedu.address.model.person.BloodType;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"NatLeong"},"content":"import seedu.address.model.person.Condition;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"NatLeong"},"content":"import seedu.address.model.person.Country;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"NatLeong"},"content":"import seedu.address.model.person.DateOfAdmission;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"laney0808"},"content":"import seedu.address.model.person.DateOfBirth;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"NatLeong"},"content":"import seedu.address.model.person.Diagnosis;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"laney0808"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-03-17"},{"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":"jovantanyk"},"content":"import seedu.address.model.person.Sex;","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"jovantanyk"},"content":"import seedu.address.model.person.Status;","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"NatLeong"},"content":"import seedu.address.model.person.Symptom;","lastModifiedDate":"2024-03-20"},{"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":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","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":"jovantanyk"},"content":" private final String nric;","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"jovantanyk"},"content":" private final String sex;","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"jovantanyk"},"content":" private final String status;","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"jovantanyk"},"content":" private final String dateOfBirth;","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"NatLeong"},"content":" private final Optional\u003cString\u003e email;","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"NatLeong"},"content":" private final Optional\u003cString\u003e country;","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"NatLeong"},"content":" private final Optional\u003cString\u003e allergies;","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"NatLeong"},"content":" private final Optional\u003cString\u003e bloodType;","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"NatLeong"},"content":" private final Optional\u003cString\u003e condition;","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"NatLeong"},"content":" private final Optional\u003cString\u003e dateOfAdmission;","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"NatLeong"},"content":" private final Optional\u003cString\u003e diagnosis;","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"NatLeong"},"content":" private final Optional\u003cString\u003e symptom;","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"laney0808"},"content":" public JsonAdaptedPerson(@JsonProperty(\"nric\") String nric, @JsonProperty(\"name\") String name,","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"NatLeong"},"content":" @JsonProperty(\"phone\") String phone, @JsonProperty(\"address\") String address,","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"NatLeong"},"content":" @JsonProperty(\"dateOfBirth\") String dob, @JsonProperty(\"sex\") String sex,","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"NatLeong"},"content":" @JsonProperty(\"status\") String status, @JsonProperty(\"email\") String email,","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"NatLeong"},"content":" @JsonProperty(\"country\") String country, @JsonProperty(\"allergies\") String allergies,","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"NatLeong"},"content":" @JsonProperty(\"bloodType\") String bloodType, @JsonProperty(\"condition\") String condition,","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"jovantanyk"},"content":" @JsonProperty(\"dateOfAdmission\") String doa, @JsonProperty(\"diagnosis\") String diagnosis,","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"NatLeong"},"content":" @JsonProperty(\"symptom\") String symptom) {","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"laney0808"},"content":" this.nric \u003d nric;","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"laney0808"},"content":" this.dateOfBirth \u003d dob;","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"laney0808"},"content":" this.sex \u003d sex;","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"jovantanyk"},"content":" this.status \u003d status;","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"NatLeong"},"content":" this.email \u003d Optional.ofNullable(email);","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"NatLeong"},"content":" this.country \u003d Optional.ofNullable(country);","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"NatLeong"},"content":" this.allergies \u003d Optional.ofNullable(allergies);","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"NatLeong"},"content":" this.bloodType \u003d Optional.ofNullable(bloodType);","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"NatLeong"},"content":" this.condition \u003d Optional.ofNullable(condition);","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"NatLeong"},"content":" this.dateOfAdmission \u003d Optional.ofNullable(doa);","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"NatLeong"},"content":" this.diagnosis \u003d Optional.ofNullable(diagnosis);","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"NatLeong"},"content":" this.symptom \u003d Optional.ofNullable(symptom);","lastModifiedDate":"2024-03-20"},{"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"},{"lineNumber":77,"author":{"gitId":"jovantanyk"},"content":" * Converts a given {@code Person} into this class for Json use.","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"jovantanyk"},"content":" this.nric \u003d source.getNric().toString();","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"jovantanyk"},"content":" this.name \u003d source.getName().toString();","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"jovantanyk"},"content":" this.phone \u003d source.getPhone().toString();","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"jovantanyk"},"content":" this.address \u003d source.getAddress().toString();","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"jovantanyk"},"content":" this.dateOfBirth \u003d source.getDateOfBirth().toString();","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"jovantanyk"},"content":" this.sex \u003d source.getSex().toString();","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"jovantanyk"},"content":" this.status \u003d source.getStatus().toString();","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"jovantanyk"},"content":" this.email \u003d Optional.ofNullable(source.getEmail()).map(Email::toString);","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"jovantanyk"},"content":" this.country \u003d Optional.ofNullable(source.getCountry()).map(Country::toString);","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"jovantanyk"},"content":" this.allergies \u003d Optional.ofNullable(source.getAllergies()).map(Allergies::toString);","lastModifiedDate":"2024-03-21"},{"lineNumber":90,"author":{"gitId":"jovantanyk"},"content":" this.bloodType \u003d Optional.ofNullable(source.getBloodType()).map(BloodType::toString);","lastModifiedDate":"2024-03-21"},{"lineNumber":91,"author":{"gitId":"jovantanyk"},"content":" this.condition \u003d Optional.ofNullable(source.getCondition()).map(Condition::toString);","lastModifiedDate":"2024-03-21"},{"lineNumber":92,"author":{"gitId":"jovantanyk"},"content":" this.dateOfAdmission \u003d Optional.ofNullable(source.getDateOfAdmission()).map(DateOfAdmission::toString);","lastModifiedDate":"2024-03-21"},{"lineNumber":93,"author":{"gitId":"jovantanyk"},"content":" this.diagnosis \u003d Optional.ofNullable(source.getDiagnosis()).map(Diagnosis::toString);","lastModifiedDate":"2024-03-21"},{"lineNumber":94,"author":{"gitId":"jovantanyk"},"content":" this.symptom \u003d Optional.ofNullable(source.getSymptom()).map(Symptom::toString);","lastModifiedDate":"2024-03-21"},{"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"},{"lineNumber":98,"author":{"gitId":"jovantanyk"},"content":" * Converts this Json-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"NatLeong"},"content":" Person person;","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":106,"author":{"gitId":"jovantanyk"},"content":" // NRIC Check","lastModifiedDate":"2024-03-18"},{"lineNumber":107,"author":{"gitId":"jovantanyk"},"content":" if (nric \u003d\u003d null) {","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"jovantanyk"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Nric.class.getSimpleName()));","lastModifiedDate":"2024-03-18"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"jovantanyk"},"content":" if (!Nric.isValidNric(nric)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"jovantanyk"},"content":" throw new IllegalValueException(Nric.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"jovantanyk"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":113,"author":{"gitId":"jovantanyk"},"content":" final Nric modelNric \u003d new Nric(nric);","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"jovantanyk"},"content":" // Name Check","lastModifiedDate":"2024-03-18"},{"lineNumber":115,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":122,"author":{"gitId":"jovantanyk"},"content":" // Phone Check","lastModifiedDate":"2024-03-18"},{"lineNumber":123,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":129,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13"},{"lineNumber":130,"author":{"gitId":"jovantanyk"},"content":" // Address Check","lastModifiedDate":"2024-03-18"},{"lineNumber":131,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2024-03-18"},{"lineNumber":132,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2024-03-18"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":135,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2024-03-18"},{"lineNumber":138,"author":{"gitId":"jovantanyk"},"content":" // Date of Birth Check","lastModifiedDate":"2024-03-18"},{"lineNumber":139,"author":{"gitId":"laney0808"},"content":" if (dateOfBirth \u003d\u003d null) {","lastModifiedDate":"2024-03-17"},{"lineNumber":140,"author":{"gitId":"jovantanyk"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-21"},{"lineNumber":141,"author":{"gitId":"jovantanyk"},"content":" DateOfBirth.class.getSimpleName()));","lastModifiedDate":"2024-03-21"},{"lineNumber":142,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":143,"author":{"gitId":"laney0808"},"content":" if (!DateOfBirth.isValidDateOfBirth(dateOfBirth)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":144,"author":{"gitId":"jovantanyk"},"content":" throw new IllegalValueException(DateOfBirth.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":145,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"laney0808"},"content":" final DateOfBirth modelDateOfBirth \u003d new DateOfBirth(dateOfBirth);","lastModifiedDate":"2024-03-17"},{"lineNumber":147,"author":{"gitId":"jovantanyk"},"content":" // Sex Check","lastModifiedDate":"2024-03-18"},{"lineNumber":148,"author":{"gitId":"jovantanyk"},"content":" if (sex \u003d\u003d null) {","lastModifiedDate":"2024-03-18"},{"lineNumber":149,"author":{"gitId":"jovantanyk"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Sex.class.getSimpleName()));","lastModifiedDate":"2024-03-18"},{"lineNumber":150,"author":{"gitId":"jovantanyk"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":151,"author":{"gitId":"jovantanyk"},"content":" if (!Sex.isValidSex(sex)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":152,"author":{"gitId":"jovantanyk"},"content":" throw new IllegalValueException(Sex.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":153,"author":{"gitId":"jovantanyk"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":154,"author":{"gitId":"jovantanyk"},"content":" final Sex modelSex \u003d new Sex(sex);","lastModifiedDate":"2024-03-18"},{"lineNumber":155,"author":{"gitId":"jovantanyk"},"content":" // Status Check","lastModifiedDate":"2024-03-18"},{"lineNumber":156,"author":{"gitId":"jovantanyk"},"content":" if (status \u003d\u003d null) {","lastModifiedDate":"2024-03-18"},{"lineNumber":157,"author":{"gitId":"jovantanyk"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Status.class.getSimpleName()));","lastModifiedDate":"2024-03-18"},{"lineNumber":158,"author":{"gitId":"jovantanyk"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":159,"author":{"gitId":"jovantanyk"},"content":" if (!Status.isValidStatus(status)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":160,"author":{"gitId":"jovantanyk"},"content":" throw new IllegalValueException(Status.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":161,"author":{"gitId":"jovantanyk"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":162,"author":{"gitId":"jovantanyk"},"content":" final Status modelStatus \u003d new Status(status);","lastModifiedDate":"2024-03-18"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":164,"author":{"gitId":"NatLeong"},"content":" person \u003d new Person(modelNric, modelName, modelPhone, modelAddress, modelDateOfBirth, modelSex, modelStatus);","lastModifiedDate":"2024-03-20"},{"lineNumber":165,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":166,"author":{"gitId":"NatLeong"},"content":" // Email check","lastModifiedDate":"2024-03-20"},{"lineNumber":167,"author":{"gitId":"NatLeong"},"content":" if (email.isPresent()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":168,"author":{"gitId":"NatLeong"},"content":" final Email modelEmail \u003d new Email(email.get());","lastModifiedDate":"2024-03-20"},{"lineNumber":169,"author":{"gitId":"NatLeong"},"content":" person.setEmail(modelEmail);","lastModifiedDate":"2024-03-20"},{"lineNumber":170,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":171,"author":{"gitId":"NatLeong"},"content":" // Country check","lastModifiedDate":"2024-03-20"},{"lineNumber":172,"author":{"gitId":"NatLeong"},"content":" if (country.isPresent()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":173,"author":{"gitId":"NatLeong"},"content":" final Country modelCountry \u003d new Country(country.get());","lastModifiedDate":"2024-03-20"},{"lineNumber":174,"author":{"gitId":"NatLeong"},"content":" person.setCountry(modelCountry);","lastModifiedDate":"2024-03-20"},{"lineNumber":175,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":176,"author":{"gitId":"NatLeong"},"content":" // Allergies check","lastModifiedDate":"2024-03-20"},{"lineNumber":177,"author":{"gitId":"NatLeong"},"content":" if (allergies.isPresent()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":178,"author":{"gitId":"NatLeong"},"content":" final Allergies modelAllergies \u003d new Allergies(allergies.get());","lastModifiedDate":"2024-03-20"},{"lineNumber":179,"author":{"gitId":"NatLeong"},"content":" person.setAllergies(modelAllergies);","lastModifiedDate":"2024-03-20"},{"lineNumber":180,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":181,"author":{"gitId":"NatLeong"},"content":" // BloodType check","lastModifiedDate":"2024-03-20"},{"lineNumber":182,"author":{"gitId":"NatLeong"},"content":" if (bloodType.isPresent()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":183,"author":{"gitId":"jovantanyk"},"content":" final BloodType modelBloodType \u003d new BloodType(bloodType.get());","lastModifiedDate":"2024-03-21"},{"lineNumber":184,"author":{"gitId":"NatLeong"},"content":" person.setBloodType(modelBloodType);","lastModifiedDate":"2024-03-20"},{"lineNumber":185,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":186,"author":{"gitId":"NatLeong"},"content":" //Condition check","lastModifiedDate":"2024-03-20"},{"lineNumber":187,"author":{"gitId":"NatLeong"},"content":" if (condition.isPresent()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":188,"author":{"gitId":"NatLeong"},"content":" final Condition modelCondition \u003d new Condition(condition.get());","lastModifiedDate":"2024-03-20"},{"lineNumber":189,"author":{"gitId":"NatLeong"},"content":" person.setCondition(modelCondition);","lastModifiedDate":"2024-03-20"},{"lineNumber":190,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":191,"author":{"gitId":"NatLeong"},"content":" //Date of Admission check","lastModifiedDate":"2024-03-20"},{"lineNumber":192,"author":{"gitId":"NatLeong"},"content":" if (dateOfAdmission.isPresent()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":193,"author":{"gitId":"NatLeong"},"content":" final DateOfAdmission modelDoa \u003d new DateOfAdmission(dateOfAdmission.get());","lastModifiedDate":"2024-03-20"},{"lineNumber":194,"author":{"gitId":"NatLeong"},"content":" person.setDateOfAdmission(modelDoa);","lastModifiedDate":"2024-03-20"},{"lineNumber":195,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":196,"author":{"gitId":"NatLeong"},"content":" //Diagnosis check","lastModifiedDate":"2024-03-20"},{"lineNumber":197,"author":{"gitId":"NatLeong"},"content":" if (diagnosis.isPresent()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":198,"author":{"gitId":"NatLeong"},"content":" final Diagnosis modelDiagnosis \u003d new Diagnosis(diagnosis.get());","lastModifiedDate":"2024-03-20"},{"lineNumber":199,"author":{"gitId":"NatLeong"},"content":" person.setDiagnosis(modelDiagnosis);","lastModifiedDate":"2024-03-20"},{"lineNumber":200,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":201,"author":{"gitId":"NatLeong"},"content":" //Symptom check","lastModifiedDate":"2024-03-20"},{"lineNumber":202,"author":{"gitId":"NatLeong"},"content":" if (symptom.isPresent()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":203,"author":{"gitId":"NatLeong"},"content":" final Symptom modelSymptom \u003d new Symptom(symptom.get());","lastModifiedDate":"2024-03-20"},{"lineNumber":204,"author":{"gitId":"NatLeong"},"content":" person.setSymptom(modelSymptom);","lastModifiedDate":"2024-03-20"},{"lineNumber":205,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":206,"author":{"gitId":"NatLeong"},"content":" return person;","lastModifiedDate":"2024-03-20"},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":209,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"jovantanyk":56,"laney0808":11,"-":68,"NatLeong":74}},{"path":"src/main/java/seedu/address/storage/JsonAddressBookStorage.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 static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.io.IOException;","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.util.Optional;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.FileUtil;","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"laney0808"},"content":"import seedu.address.model.ReadOnlyImmuniMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * A class to access AddressBook data stored as a json file on the hard disk.","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class JsonAddressBookStorage implements AddressBookStorage {","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(JsonAddressBookStorage.class);","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private Path filePath;","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public JsonAddressBookStorage(Path filePath) {","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" return filePath;","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":" @Override","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"laney0808"},"content":" public Optional\u003cReadOnlyImmuniMate\u003e readAddressBook() throws DataLoadingException {","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" return readAddressBook(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":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Similar to {@link #readAddressBook()}.","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2023-06-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"laney0808"},"content":" public Optional\u003cReadOnlyImmuniMate\u003e readAddressBook(Path filePath) throws DataLoadingException {","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" requireNonNull(filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" Optional\u003cJsonSerializableAddressBook\u003e jsonAddressBook \u003d JsonUtil.readJsonFile(","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" filePath, JsonSerializableAddressBook.class);","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" if (!jsonAddressBook.isPresent()) {","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return Optional.of(jsonAddressBook.get().toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" logger.info(\"Illegal values found in \" + filePath + \": \" + ive.getMessage());","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" throw new DataLoadingException(ive);","lastModifiedDate":"2023-06-14"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"laney0808"},"content":" public void saveAddressBook(ReadOnlyImmuniMate addressBook) throws IOException {","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"-"},"content":" saveAddressBook(addressBook, filePath);","lastModifiedDate":"2018-08-13"},{"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":"laney0808"},"content":" * Similar to {@link #saveAddressBook(ReadOnlyImmuniMate)}.","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"laney0808"},"content":" public void saveAddressBook(ReadOnlyImmuniMate addressBook, Path filePath) throws IOException {","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"-"},"content":" requireNonNull(addressBook);","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" requireNonNull(filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" FileUtil.createIfMissing(filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" JsonUtil.saveJsonFile(new JsonSerializableAddressBook(addressBook), filePath);","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":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"laney0808":6,"-":74}},{"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":"laney0808"},"content":"import seedu.address.model.ImmuniMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"laney0808"},"content":"import seedu.address.model.ReadOnlyImmuniMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","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":" * 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":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"Persons list contains duplicate person(s).\";","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedPerson\u003e persons \u003d new ArrayList\u003c\u003e();","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":" * 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":"-"},"content":" public JsonSerializableAddressBook(@JsonProperty(\"persons\") List\u003cJsonAdaptedPerson\u003e persons) {","lastModifiedDate":"2018-08-13"},{"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":"laney0808"},"content":" public JsonSerializableAddressBook(ReadOnlyImmuniMate source) {","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":" persons.addAll(source.getPersonList().stream().map(JsonAdaptedPerson::new).collect(Collectors.toList()));","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 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":"laney0808"},"content":" public ImmuniMate toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"laney0808"},"content":" ImmuniMate addressBook \u003d new ImmuniMate();","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":" for (JsonAdaptedPerson jsonAdaptedPerson : persons) {","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" Person person \u003d jsonAdaptedPerson.toModelType();","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (addressBook.hasPerson(person)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2018-08-13"},{"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":{"laney0808":5,"-":55}},{"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":"laney0808"},"content":"import seedu.address.model.ReadOnlyImmuniMate;","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":" * API of the Storage component","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public interface Storage extends AddressBookStorage, UserPrefsStorage {","lastModifiedDate":"2016-09-25"},{"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":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-04-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":27,"author":{"gitId":"laney0808"},"content":" Optional\u003cReadOnlyImmuniMate\u003e readAddressBook() throws DataLoadingException;","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":30,"author":{"gitId":"laney0808"},"content":" void saveAddressBook(ReadOnlyImmuniMate addressBook) throws IOException;","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"laney0808":3,"-":29}},{"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":"laney0808"},"content":"import seedu.address.model.ReadOnlyImmuniMate;","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":" * Manages storage of AddressBook data in local storage.","lastModifiedDate":"2016-09-24"},{"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":"-"},"content":" private AddressBookStorage addressBookStorage;","lastModifiedDate":"2016-10-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private UserPrefsStorage userPrefsStorage;","lastModifiedDate":"2016-10-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Creates a {@code StorageManager} with the given {@code AddressBookStorage} and {@code UserPrefStorage}.","lastModifiedDate":"2020-05-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public StorageManager(AddressBookStorage addressBookStorage, UserPrefsStorage userPrefsStorage) {","lastModifiedDate":"2016-10-01"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.addressBookStorage \u003d addressBookStorage;","lastModifiedDate":"2016-10-01"},{"lineNumber":28,"author":{"gitId":"-"},"content":" this.userPrefsStorage \u003d userPrefsStorage;","lastModifiedDate":"2016-10-01"},{"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":"-"},"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":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return addressBookStorage.getAddressBookFilePath();","lastModifiedDate":"2016-09-24"},{"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":"laney0808"},"content":" public Optional\u003cReadOnlyImmuniMate\u003e readAddressBook() throws DataLoadingException {","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return readAddressBook(addressBookStorage.getAddressBookFilePath());","lastModifiedDate":"2016-10-01"},{"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":"laney0808"},"content":" public Optional\u003cReadOnlyImmuniMate\u003e readAddressBook(Path filePath) throws DataLoadingException {","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":" logger.fine(\"Attempting to read data from file: \" + filePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return addressBookStorage.readAddressBook(filePath);","lastModifiedDate":"2016-10-01"},{"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":"laney0808"},"content":" public void saveAddressBook(ReadOnlyImmuniMate addressBook) throws IOException {","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"-"},"content":" saveAddressBook(addressBook, addressBookStorage.getAddressBookFilePath());","lastModifiedDate":"2016-10-01"},{"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":"laney0808"},"content":" public void saveAddressBook(ReadOnlyImmuniMate addressBook, Path filePath) throws IOException {","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"-"},"content":" logger.fine(\"Attempting to write to data file: \" + filePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":75,"author":{"gitId":"-"},"content":" addressBookStorage.saveAddressBook(addressBook, filePath);","lastModifiedDate":"2016-10-01"},{"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":{"laney0808":5,"-":73}},{"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":"NatLeong"},"content":" public static final String USERGUIDE_URL \u003d \"https://ay2324s2-cs2103t-t08-1.github.io/tp/UserGuide.html\";","lastModifiedDate":"2024-03-15"},{"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,"NatLeong":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":"jovantanyk"},"content":" private final Stage primaryStage;","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"jovantanyk"},"content":" private final Logic logic;","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"jovantanyk"},"content":" private final HelpWindow helpWindow;","lastModifiedDate":"2024-03-17"},{"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":"jovantanyk"},"content":" private ResultPanel resultPanel;","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private StackPane commandBoxPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private MenuItem helpMenuItem;","lastModifiedDate":"2016-08-18"},{"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 personListPanelPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":46,"author":{"gitId":"jovantanyk"},"content":" private StackPane resultPanelPlaceholder;","lastModifiedDate":"2024-03-17"},{"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 statusbarPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":59,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":64,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":66,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","lastModifiedDate":"2016-12-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-18"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18"},{"lineNumber":79,"author":{"gitId":"jovantanyk"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","lastModifiedDate":"2016-12-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-12-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":108,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":109,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16"},{"lineNumber":110,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":111,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21"},{"lineNumber":112,"author":{"gitId":"-"},"content":" personListPanel \u003d new PersonListPanel(logic.getFilteredPersonList());","lastModifiedDate":"2019-01-25"},{"lineNumber":113,"author":{"gitId":"-"},"content":" personListPanelPlaceholder.getChildren().add(personListPanel.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":115,"author":{"gitId":"jovantanyk"},"content":" // Result Panel","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"jovantanyk"},"content":" resultPanel \u003d new ResultPanel();","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"jovantanyk"},"content":" resultPanelPlaceholder.getChildren().add(resultPanel.getRoot());","lastModifiedDate":"2024-03-17"},{"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":"2024-03-17"},{"lineNumber":160,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2024-03-17"},{"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":" public PersonListPanel getPersonListPanel() {","lastModifiedDate":"2016-08-25"},{"lineNumber":167,"author":{"gitId":"-"},"content":" return personListPanel;","lastModifiedDate":"2018-08-14"},{"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":"jovantanyk"},"content":" resultPanel.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2024-03-17"},{"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":"jovantanyk"},"content":" resultPanel.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2024-03-17"},{"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":{"jovantanyk":11,"-":185}},{"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 javafx.fxml.FXML;","lastModifiedDate":"2016-09-21"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":7,"author":{"gitId":"NatLeong"},"content":"import javafx.scene.paint.Color;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"NatLeong"},"content":"import javafx.scene.shape.Circle;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"NatLeong"},"content":"import seedu.address.model.person.Status;","lastModifiedDate":"2024-03-19"},{"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":"NatLeong"},"content":" private Label nric;","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"NatLeong"},"content":" private Circle statusCircle;","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10"},{"lineNumber":44,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"NatLeong"},"content":" name.setText(person.getName().toString() + \" (\" + person.getSex().toString() + \")\");","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"NatLeong"},"content":" nric.setText(person.getNric().toString());","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"NatLeong"},"content":" updateStatusCircle(person.getStatus());","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"NatLeong"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"NatLeong"},"content":" * Set colour of status circle to represent status","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"NatLeong"},"content":" *","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"NatLeong"},"content":" * @param status Status of the person","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"NatLeong"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"NatLeong"},"content":" public void updateStatusCircle(Status status) {","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"NatLeong"},"content":" switch (status.getStatusType()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"NatLeong"},"content":" case HEALTHY:","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"NatLeong"},"content":" statusCircle.setFill(Color.GREEN);","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"NatLeong"},"content":" statusCircle.setStroke(Color.GREEN);","lastModifiedDate":"2024-03-24"},{"lineNumber":62,"author":{"gitId":"NatLeong"},"content":" break;","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"NatLeong"},"content":" case UNWELL:","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"NatLeong"},"content":" statusCircle.setFill(Color.RED);","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"NatLeong"},"content":" statusCircle.setStroke(Color.RED);","lastModifiedDate":"2024-03-24"},{"lineNumber":66,"author":{"gitId":"NatLeong"},"content":" break;","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"NatLeong"},"content":" case PENDING:","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"NatLeong"},"content":" statusCircle.setFill(Color.YELLOW);","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"NatLeong"},"content":" statusCircle.setStroke(Color.YELLOW);","lastModifiedDate":"2024-03-24"},{"lineNumber":70,"author":{"gitId":"NatLeong"},"content":" break;","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"NatLeong"},"content":" default:","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"NatLeong"},"content":" statusCircle.setFill(Color.GREY);","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"NatLeong"},"content":" statusCircle.setStroke(Color.GREY);","lastModifiedDate":"2024-03-24"},{"lineNumber":74,"author":{"gitId":"NatLeong"},"content":" break;","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"-":43,"NatLeong":34}},{"path":"src/main/java/seedu/address/ui/ResultPanel.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 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":"jovantanyk"},"content":"public class ResultPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":14,"author":{"gitId":"jovantanyk"},"content":" private static final String FXML \u003d \"ResultPanel.fxml\";","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-10-15"},{"lineNumber":17,"author":{"gitId":"jovantanyk"},"content":" private TextArea resultPanel;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-15"},{"lineNumber":19,"author":{"gitId":"jovantanyk"},"content":" public ResultPanel() {","lastModifiedDate":"2024-03-17"},{"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":"jovantanyk"},"content":" resultPanel.setText(feedbackToUser);","lastModifiedDate":"2024-03-17"},{"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":{"jovantanyk":5,"-":23}},{"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":"jovantanyk"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"jovantanyk"},"content":"\u003c?import javafx.scene.image.ImageView?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"jovantanyk"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"jovantanyk"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"jovantanyk"},"content":"\u003cStackPane styleClass\u003d\"pane-with-border\" prefHeight\u003d\"60\" xmlns\u003d\"http://javafx.com/javafx/17\"","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"NatLeong"},"content":" xmlns:fx\u003d\"http://javafx.com/fxml/1\" style\u003d\"-fx-background-color: #818589;\"\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"jovantanyk"},"content":" \u003cHBox alignment\u003d\"CENTER_LEFT\" spacing\u003d\"5\"\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"jovantanyk"},"content":" \u003cImageView fitWidth\u003d\"25\" fitHeight\u003d\"25\"\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"jovantanyk"},"content":" \u003cImage url\u003d\"@/images/search_icon.png\"/\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"jovantanyk"},"content":" \u003c/ImageView\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"jovantanyk"},"content":" \u003cTextField fx:id\u003d\"commandTextField\" prefHeight\u003d\"45\" HBox.hgrow\u003d\"ALWAYS\" onAction\u003d\"#handleCommandEntered\"","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"NatLeong"},"content":" promptText\u003d\"Input command here...\" style\u003d\"-fx-background-color: transparent; -fx-border-color: #818589;\" /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"jovantanyk"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"jovantanyk"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"jovantanyk"},"content":" \u003cInsets bottom\u003d\"5\" left\u003d\"10\" right\u003d\"10\" top\u003d\"5\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"jovantanyk"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003c/StackPane\u003e","lastModifiedDate":"2017-06-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":24,"author":{"gitId":"jovantanyk"},"content":"","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"jovantanyk":15,"-":7,"NatLeong":2}},{"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":"jovantanyk"},"content":".result-panel {","lastModifiedDate":"2024-03-17"},{"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":"jovantanyk"},"content":".result-panel .label {","lastModifiedDate":"2024-03-17"},{"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":"jovantanyk"},"content":" -fx-border-color: #383838 #383838 #383838 #383838;","lastModifiedDate":"2024-03-17"},{"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":"jovantanyk"},"content":" -fx-font-family: \"Roboto\";","lastModifiedDate":"2024-03-17"},{"lineNumber":327,"author":{"gitId":"jovantanyk"},"content":" -fx-font-size: 16pt;","lastModifiedDate":"2024-03-17"},{"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":"jovantanyk"},"content":"#resultPanel .content {","lastModifiedDate":"2024-03-17"},{"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"}],"authorContributionMap":{"jovantanyk":6,"-":346}},{"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":"NatLeong"},"content":" \u003cImage url\u003d\"@/images/question.png\" /\u003e","lastModifiedDate":"2024-03-15"},{"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":{"-":43,"NatLeong":1}},{"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":"jovantanyk"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-03-17"},{"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":"NatLeong"},"content":"\u003c?import javafx.stage.Stage?\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":15,"author":{"gitId":"jovantanyk"},"content":"\u003cfx:root minHeight\u003d\"800\" minWidth\u003d\"1290\" onCloseRequest\u003d\"#handleExit\" title\u003d\"Address App\" type\u003d\"javafx.stage.Stage\"","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"jovantanyk"},"content":" xmlns\u003d\"http://javafx.com/javafx/21\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":18,"author":{"gitId":"NatLeong"},"content":" \u003cImage url\u003d\"@/images/stethoscope.png\"/\u003e","lastModifiedDate":"2024-03-17"},{"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":"NatLeong"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" style\u003d\"-fx-background-color: #2FAD66;\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"NatLeong"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\" style\u003d\"-fx-font-family: Arial; -fx-font-size: 14px;\"\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"NatLeong"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\" style\u003d\"-fx-font-family: Arial; -fx-font-size: 14px;\" /\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"NatLeong"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"ImmuniMate\" style\u003d\"-fx-font-family: Arial; -fx-font-size: 14px; -fx-font-weight: bold;\" /\u003e","lastModifiedDate":"2024-03-15"},{"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":"jovantanyk"},"content":" \u003cStackPane fx:id\u003d\"commandBoxPlaceholder\" minHeight\u003d\"75\" prefHeight\u003d\"75\" prefWidth\u003d\"1290\" styleClass\u003d\"pane-with-border\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":37,"author":{"gitId":"jovantanyk"},"content":" \u003cInsets bottom\u003d\"10\" left\u003d\"10\" right\u003d\"10\" top\u003d\"10\" /\u003e","lastModifiedDate":"2024-03-17"},{"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":"jovantanyk"},"content":" \u003cVBox minWidth\u003d\"1290\" prefWidth\u003d\"1290\" styleClass\u003d\"pane-with-border\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"jovantanyk"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"jovantanyk"},"content":" \u003cHBox prefHeight\u003d\"400.0\" styleClass\u003d\"pane-with-border\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"jovantanyk"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"jovantanyk"},"content":" \u003cVBox fx:id\u003d\"personList\" minWidth\u003d\"450\" prefWidth\u003d\"450\" styleClass\u003d\"pane-with-border\" VBox.vgrow\u003d\"ALWAYS\" HBox.hgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":47,"author":{"gitId":"jovantanyk"},"content":" \u003cInsets bottom\u003d\"10\" left\u003d\"10\" right\u003d\"10\" top\u003d\"10\"/\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":49,"author":{"gitId":"jovantanyk"},"content":" \u003cStackPane fx:id\u003d\"personListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"jovantanyk"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"jovantanyk"},"content":" \u003cStackPane fx:id\u003d\"resultPanelPlaceholder\" minWidth\u003d\"800\" prefWidth\u003d\"800\"","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"jovantanyk"},"content":" styleClass\u003d\"pane-with-border\" VBox.vgrow\u003d\"ALWAYS\" HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":54,"author":{"gitId":"NatLeong"},"content":" \u003cInsets bottom\u003d\"10\" left\u003d\"10\" right\u003d\"10\" top\u003d\"10\"/\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":56,"author":{"gitId":"jovantanyk"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"jovantanyk"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"jovantanyk"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"jovantanyk"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"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"}],"authorContributionMap":{"jovantanyk":19,"-":40,"NatLeong":7}},{"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":"NatLeong"},"content":"\u003c?import javafx.scene.layout.RowConstraints?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":12,"author":{"gitId":"NatLeong"},"content":"\u003c?import javafx.scene.shape.Circle?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"NatLeong"},"content":"\u003c?import javafx.scene.text.Font?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":15,"author":{"gitId":"NatLeong"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/21\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"NatLeong"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" maxWidth\u003d\"248.0\" minWidth\u003d\"10.0\" prefWidth\u003d\"233.0\" /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"NatLeong"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" maxWidth\u003d\"176.0\" minWidth\u003d\"10.0\" prefWidth\u003d\"127.0\" /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"NatLeong"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"80\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"NatLeong"},"content":" \u003cInsets bottom\u003d\"3\" left\u003d\"10\" right\u003d\"3\" top\u003d\"3\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"NatLeong"},"content":" \u003cHBox alignment\u003d\"CENTER_LEFT\" spacing\u003d\"3\"\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":31,"author":{"gitId":"NatLeong"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"NatLeong"},"content":" \u003cInsets left\u003d\"10.0\" /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"NatLeong"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":35,"author":{"gitId":"NatLeong"},"content":" \u003cLabel fx:id\u003d\"nric\" styleClass\u003d\"cell_big_label\" text\u003d\"\\$nric\"\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"NatLeong"},"content":" \u003cfont\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"NatLeong"},"content":" \u003cFont size\u003d\"14.0\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"NatLeong"},"content":" \u003c/font\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"NatLeong"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":42,"author":{"gitId":"NatLeong"},"content":" \u003cLabel fx:id\u003d\"name\" styleClass\u003d\"cell_big_label\" text\u003d\"\\$name\"\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"NatLeong"},"content":" \u003cfont\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"NatLeong"},"content":" \u003cFont size\u003d\"14.0\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"NatLeong"},"content":" \u003c/font\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"NatLeong"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"NatLeong"},"content":" \u003cInsets left\u003d\"10.0\" /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"NatLeong"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"NatLeong"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"NatLeong"},"content":" \u003cCircle fx:id\u003d\"statusCircle\" fill\u003d\"#3ea435\" radius\u003d\"17.0\" stroke\u003d\"#3ea435\" strokeType\u003d\"INSIDE\" strokeWidth\u003d\"4.0\" GridPane.columnIndex\u003d\"1\" GridPane.halignment\u003d\"RIGHT\"\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"NatLeong"},"content":" \u003cGridPane.margin\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"NatLeong"},"content":" \u003cInsets right\u003d\"20.0\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"NatLeong"},"content":" \u003c/GridPane.margin\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"NatLeong"},"content":" \u003c/Circle\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"NatLeong"},"content":" \u003crowConstraints\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"NatLeong"},"content":" \u003cRowConstraints /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"NatLeong"},"content":" \u003c/rowConstraints\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"-":27,"NatLeong":33}},{"path":"src/main/resources/view/ResultPanel.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":"jovantanyk"},"content":"\u003cStackPane fx:id\u003d\"placeHolder\" styleClass\u003d\"pane-with-border\" minWidth\u003d\"780\" prefWidth\u003d\"780\" xmlns\u003d\"http://javafx.com/javafx/17\"","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2016-12-24"},{"lineNumber":8,"author":{"gitId":"jovantanyk"},"content":" \u003cTextArea fx:id\u003d\"resultPanel\" editable\u003d\"false\" styleClass\u003d\"result-panel\"/\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c/StackPane\u003e","lastModifiedDate":"2017-06-22"}],"authorContributionMap":{"jovantanyk":2,"-":7}},{"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":"alex-setyawan"},"content":"import static seedu.address.logic.Messages.MESSAGE_PERSON_NOT_FOUND;","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":"import seedu.address.logic.commands.CreateCommand;","lastModifiedDate":"2024-03-21"},{"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":"laney0808"},"content":"import seedu.address.model.ReadOnlyImmuniMate;","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" String deleteCommand \u003d \"delete S1234567M\";","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"alex-setyawan"},"content":" assertCommandException(deleteCommand, MESSAGE_PERSON_NOT_FOUND);","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" //TODO after jsonadaptedperson","lastModifiedDate":"2024-03-21"},{"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":"laney0808"},"content":" Model expectedModel \u003d new ModelManager(model.getImmuniMate(), new UserPrefs());","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" public void saveAddressBook(ReadOnlyImmuniMate addressBook, Path filePath)","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" String addCommand \u003d CreateCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2024-03-20"},{"lineNumber":170,"author":{"gitId":"-"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY;","lastModifiedDate":"2023-06-13"},{"lineNumber":171,"author":{"gitId":"jovantanyk"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).build();","lastModifiedDate":"2024-03-18"},{"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":{"alex-setyawan":2,"jovantanyk":1,"laney0808":7,"-":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":"-"},"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":"laney0808"},"content":"import seedu.address.model.ImmuniMate;","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" expectedModel.setImmuniMate(new ImmuniMate());","lastModifiedDate":"2024-03-20"},{"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":{"laney0808":2,"-":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":"alex-setyawan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ALLERGIES;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"alex-setyawan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COUNTRY;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"alex-setyawan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DATEOFBIRTH;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"laney0808"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NRIC;","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"alex-setyawan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SEX;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"alex-setyawan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STATUS;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05"},{"lineNumber":24,"author":{"gitId":"laney0808"},"content":"import seedu.address.model.ImmuniMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20"},{"lineNumber":27,"author":{"gitId":"laney0808"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"laney0808"},"content":"import seedu.address.model.person.NricContainsKeywordsPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":30,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.testutil.UpdatePersonDescriptorBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05"},{"lineNumber":36,"author":{"gitId":"jovantanyk"},"content":" public static final String VALID_NRIC_AMY \u003d \"T0182991C\";","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"jovantanyk"},"content":" public static final String VALID_NRIC_BOB \u003d \"S9518552M\";","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05"},{"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":"alex-setyawan"},"content":" public static final String VALID_DATEOFBIRTH_AMY \u003d \"2001-01-01\";","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"alex-setyawan"},"content":" public static final String VALID_DATEOFBIRTH_BOB \u003d \"2002-02-02\";","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"jovantanyk"},"content":" public static final String VALID_SEX_AMY \u003d \"F\";","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"jovantanyk"},"content":" public static final String VALID_SEX_BOB \u003d \"M\";","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"jovantanyk"},"content":" public static final String VALID_STATUS_AMY \u003d \"HEALTHY\";","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"jovantanyk"},"content":" public static final String VALID_STATUS_BOB \u003d \"UNWELL\";","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"alex-setyawan"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"alex-setyawan"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"alex-setyawan"},"content":" public static final String VALID_COUNTRY_AMY \u003d \"Norway\";","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"alex-setyawan"},"content":" public static final String VALID_COUNTRY_BOB \u003d \"Indonesia\";","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"alex-setyawan"},"content":" public static final String VALID_ALLERGIES_AMY \u003d \"peanuts\";","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"alex-setyawan"},"content":" public static final String VALID_ALLERGIES_BOB \u003d \"pollen\";","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"laney0808"},"content":" public static final String VALID_BLOODTYPE_AMY \u003d \"B+\";","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"laney0808"},"content":" public static final String VALID_BLOODTYPE_BOB \u003d \"B+\";","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"alex-setyawan"},"content":" public static final String VALID_CONDITION_AMY \u003d \"diabetes\";","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"alex-setyawan"},"content":" public static final String VALID_CONDITION_BOB \u003d \"high blood pressure\";","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"alex-setyawan"},"content":" public static final String VALID_DATEOFADMISSION_AMY \u003d \"2023-01-01\";","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"alex-setyawan"},"content":" public static final String VALID_DATEOFADMISSION_BOB \u003d \"2023-02-02\";","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"alex-setyawan"},"content":" public static final String VALID_DIAGNOSIS_AMY \u003d \"good\";","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"alex-setyawan"},"content":" public static final String VALID_DIAGNOSIS_BOB \u003d \"not good\";","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"alex-setyawan"},"content":" public static final String VALID_SYMPTOM_AMY \u003d \"runny nose\";","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"alex-setyawan"},"content":" public static final String VALID_SYMPTOM_BOB \u003d \"sore throat\";","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":69,"author":{"gitId":"laney0808"},"content":" public static final String NRIC_DESC_AMY \u003d \" \" + PREFIX_NRIC + VALID_NRIC_AMY;","lastModifiedDate":"2024-03-23"},{"lineNumber":70,"author":{"gitId":"laney0808"},"content":" public static final String NRIC_DESC_BOB \u003d \" \" + PREFIX_NRIC + VALID_NRIC_BOB;","lastModifiedDate":"2024-03-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":77,"author":{"gitId":"alex-setyawan"},"content":" public static final String DATEOFBIRTH_DESC_AMY \u003d \" \" + PREFIX_DATEOFBIRTH + VALID_DATEOFBIRTH_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"alex-setyawan"},"content":" public static final String DATEOFBIRTH_DESC_BOB \u003d \" \" + PREFIX_DATEOFBIRTH + VALID_DATEOFBIRTH_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"alex-setyawan"},"content":" public static final String SEX_DESC_AMY \u003d \" \" + PREFIX_SEX + VALID_SEX_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"alex-setyawan"},"content":" public static final String SEX_DESC_BOB \u003d \" \" + PREFIX_SEX + VALID_SEX_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"alex-setyawan"},"content":" public static final String STATUS_DESC_AMY \u003d \" \" + PREFIX_STATUS + VALID_STATUS_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"alex-setyawan"},"content":" public static final String STATUS_DESC_BOB \u003d \" \" + PREFIX_STATUS + VALID_STATUS_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"alex-setyawan"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"alex-setyawan"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"alex-setyawan"},"content":" public static final String COUNTRY_DESC_AMY \u003d \" \" + PREFIX_COUNTRY + VALID_COUNTRY_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"alex-setyawan"},"content":" public static final String COUNTRY_DESC_BOB \u003d \" \" + PREFIX_COUNTRY + VALID_COUNTRY_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"alex-setyawan"},"content":" public static final String ALLERGIES_DESC_AMY \u003d \" \" + PREFIX_ALLERGIES + VALID_ALLERGIES_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"alex-setyawan"},"content":" public static final String ALLERGIES_DESC_BOB \u003d \" \" + PREFIX_ALLERGIES + VALID_ALLERGIES_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":92,"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":93,"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":94,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05"},{"lineNumber":95,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05"},{"lineNumber":96,"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":97,"author":{"gitId":"laney0808"},"content":" public static final String NON_EXISTENT_NRIC \u003d \"S1234576A\";","lastModifiedDate":"2024-03-21"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":102,"author":{"gitId":"alex-setyawan"},"content":" public static final UpdateCommand.UpdatePersonDescriptor DESC_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":103,"author":{"gitId":"alex-setyawan"},"content":" public static final UpdateCommand.UpdatePersonDescriptor DESC_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":105,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":106,"author":{"gitId":"alex-setyawan"},"content":" DESC_AMY \u003d new UpdatePersonDescriptorBuilder().withNric(VALID_NRIC_AMY).withName(VALID_NAME_AMY)","lastModifiedDate":"2024-03-21"},{"lineNumber":107,"author":{"gitId":"alex-setyawan"},"content":" .withPhone(VALID_PHONE_AMY).withAddress(VALID_ADDRESS_AMY).withDateOfBirth(VALID_DATEOFBIRTH_AMY)","lastModifiedDate":"2024-03-21"},{"lineNumber":108,"author":{"gitId":"alex-setyawan"},"content":" .withSex(VALID_SEX_AMY).withStatus(VALID_STATUS_AMY).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":109,"author":{"gitId":"alex-setyawan"},"content":" DESC_BOB \u003d new UpdatePersonDescriptorBuilder().withNric(VALID_NRIC_BOB).withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-21"},{"lineNumber":110,"author":{"gitId":"alex-setyawan"},"content":" .withPhone(VALID_PHONE_BOB).withAddress(VALID_ADDRESS_BOB).withDateOfBirth(VALID_DATEOFBIRTH_BOB)","lastModifiedDate":"2024-03-21"},{"lineNumber":111,"author":{"gitId":"alex-setyawan"},"content":" .withSex(VALID_SEX_BOB).withStatus(VALID_STATUS_BOB).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"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":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":117,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":118,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25"},{"lineNumber":120,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":121,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":122,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":125,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":126,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":130,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":131,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25"},{"lineNumber":132,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":133,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":134,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25"},{"lineNumber":135,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":136,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":140,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":141,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":142,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":143,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":144,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25"},{"lineNumber":145,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":146,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25"},{"lineNumber":147,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":148,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":149,"author":{"gitId":"laney0808"},"content":" ImmuniMate expectedAddressBook \u003d new ImmuniMate(actualModel.getImmuniMate());","lastModifiedDate":"2024-03-20"},{"lineNumber":150,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03"},{"lineNumber":153,"author":{"gitId":"laney0808"},"content":" assertEquals(expectedAddressBook, actualModel.getImmuniMate());","lastModifiedDate":"2024-03-20"},{"lineNumber":154,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":156,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":157,"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":158,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31"},{"lineNumber":159,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":160,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31"},{"lineNumber":161,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":163,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31"},{"lineNumber":164,"author":{"gitId":"jovantanyk"},"content":" final String[] splitName \u003d person.getName().toString().split(\"\\\\s+\");","lastModifiedDate":"2024-03-18"},{"lineNumber":165,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":167,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":170,"author":{"gitId":"laney0808"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":171,"author":{"gitId":"laney0808"},"content":" * Updates {@code model}\u0027s filtered list to show only the person at the given {@code Nric} in the","lastModifiedDate":"2024-03-21"},{"lineNumber":172,"author":{"gitId":"laney0808"},"content":" * {@code model}\u0027s system.","lastModifiedDate":"2024-03-21"},{"lineNumber":173,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":174,"author":{"gitId":"laney0808"},"content":" public static void showPersonWithNric(Model model, Nric nric) {","lastModifiedDate":"2024-03-21"},{"lineNumber":175,"author":{"gitId":"laney0808"},"content":" assertTrue(model.hasPerson(Person.createPersonWithNric(nric)));","lastModifiedDate":"2024-03-21"},{"lineNumber":176,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":177,"author":{"gitId":"laney0808"},"content":" Person person \u003d model.getFilteredPersonList().filtered(p -\u003e p.getNric().equals(nric)).get(0);","lastModifiedDate":"2024-03-21"},{"lineNumber":178,"author":{"gitId":"laney0808"},"content":" model.updateFilteredPersonList(new NricContainsKeywordsPredicate(nric.toString()));","lastModifiedDate":"2024-03-21"},{"lineNumber":179,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":180,"author":{"gitId":"laney0808"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2024-03-21"},{"lineNumber":181,"author":{"gitId":"laney0808"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":182,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":183,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"alex-setyawan":42,"jovantanyk":7,"laney0808":24,"-":110}},{"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":"laney0808"},"content":"public class CreateCommandIntegrationTest {","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" Model expectedModel \u003d new ModelManager(model.getImmuniMate(), new UserPrefs());","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" assertCommandSuccess(new CreateCommand(validPerson), model,","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"laney0808"},"content":" String.format(CreateCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" Person personInList \u003d model.getImmuniMate().getPersonList().get(0);","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"laney0808"},"content":" assertCommandFailure(new CreateCommand(personInList), model,","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"laney0808"},"content":" CreateCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2024-03-20"},{"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":{"laney0808":7,"-":41}},{"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":"-"},"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":"laney0808"},"content":"import seedu.address.model.ImmuniMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12"},{"lineNumber":23,"author":{"gitId":"laney0808"},"content":"import seedu.address.model.ReadOnlyImmuniMate;","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":"public class CreateCommandTest {","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" assertThrows(NullPointerException.class, () -\u003e new CreateCommand(null));","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" CommandResult commandResult \u003d new CreateCommand(validPerson).execute(modelStub);","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":42,"author":{"gitId":"laney0808"},"content":" assertEquals(String.format(CreateCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" CreateCommand createCommand \u003d new CreateCommand(validPerson);","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" assertThrows(CommandException.class,","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"laney0808"},"content":" CreateCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e createCommand.execute(modelStub));","lastModifiedDate":"2024-03-21"},{"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":"laney0808"},"content":" CreateCommand addAliceCommand \u003d new CreateCommand(alice);","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"laney0808"},"content":" CreateCommand addBobCommand \u003d new CreateCommand(bob);","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" CreateCommand addAliceCommandCopy \u003d new CreateCommand(alice);","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" CreateCommand createCommand \u003d new CreateCommand(ALICE);","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"laney0808"},"content":" String expected \u003d CreateCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"laney0808"},"content":" assertEquals(expected, createCommand.toString());","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" public Path getImmunimateFilePath() {","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" public void setImmunimateFilePath(Path immuniMateFilePath) {","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" public void setImmuniMate(ReadOnlyImmuniMate immuniMate) {","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" public ReadOnlyImmuniMate getImmuniMate() {","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" public ReadOnlyImmuniMate getImmuniMate() {","lastModifiedDate":"2024-03-20"},{"lineNumber":201,"author":{"gitId":"laney0808"},"content":" return new ImmuniMate();","lastModifiedDate":"2024-03-20"},{"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":{"laney0808":21,"-":184}},{"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":"laney0808"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NON_EXISTENT_NRIC;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"laney0808"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonWithNric;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"laney0808"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"laney0808"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","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":"laney0808"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2018-01-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":32,"author":{"gitId":"laney0808"},"content":" public void execute_validNricUnfilteredList_success() {","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"laney0808"},"content":" Person personToDelete \u003d model.getFilteredPersonList().filtered(p -\u003e p.getNric().equals(ALICE.getNric())).get(0);","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"laney0808"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(ALICE.getNric());","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":39,"author":{"gitId":"laney0808"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getImmuniMate(), new UserPrefs());","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":46,"author":{"gitId":"laney0808"},"content":" public void execute_invalidNricUnfilteredList_throwsCommandException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"laney0808"},"content":" Nric nonExistingNric \u003d new Nric(NON_EXISTENT_NRIC);","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"laney0808"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(nonExistingNric);","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":50,"author":{"gitId":"alex-setyawan"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_PERSON_NOT_FOUND);","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":53,"author":{"gitId":"laney0808"},"content":" //TODO: figure out why the og version has filtered adn unfilered separated and edit accordingly","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":56,"author":{"gitId":"laney0808"},"content":" showPersonWithNric(model, ALICE.getNric());","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"laney0808"},"content":" Person personToDelete \u003d model.getFilteredPersonList().filtered(p -\u003e p.getNric().equals(ALICE.getNric())).get(0);","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"laney0808"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(ALICE.getNric());","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":63,"author":{"gitId":"laney0808"},"content":" Model expectedModel \u003d new ModelManager(model.getImmuniMate(), new UserPrefs());","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":" showNoPerson(expectedModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-06-05"},{"lineNumber":73,"author":{"gitId":"laney0808"},"content":" assertTrue(Nric.isValidNric(NON_EXISTENT_NRIC));","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":75,"author":{"gitId":"laney0808"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(new Nric(NON_EXISTENT_NRIC));","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":77,"author":{"gitId":"alex-setyawan"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_PERSON_NOT_FOUND);","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":82,"author":{"gitId":"laney0808"},"content":" DeleteCommand deleteFirstCommand \u003d new DeleteCommand(BOB.getNric());","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"laney0808"},"content":" DeleteCommand deleteSecondCommand \u003d new DeleteCommand(new Nric(NON_EXISTENT_NRIC));","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":89,"author":{"gitId":"laney0808"},"content":" DeleteCommand deleteFirstCommandCopy \u003d new DeleteCommand(BOB.getNric());","lastModifiedDate":"2024-03-21"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","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":"2019-02-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":104,"author":{"gitId":"laney0808"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(BOB.getNric());","lastModifiedDate":"2024-03-21"},{"lineNumber":105,"author":{"gitId":"laney0808"},"content":" String expected \u003d DeleteCommand.class.getCanonicalName() + \"{targetNric\u003d\" + BOB.getNric() + \"}\";","lastModifiedDate":"2024-03-21"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertEquals(expected, deleteCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":110,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05"},{"lineNumber":111,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":112,"author":{"gitId":"-"},"content":" private void showNoPerson(Model model) {","lastModifiedDate":"2017-06-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2017-06-12"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertTrue(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2018-02-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"alex-setyawan":2,"laney0808":24,"-":91}},{"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":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"jovantanyk"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_PERSONS_LISTED_OVERVIEW;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.CARL;","lastModifiedDate":"2017-07-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ELLE;","lastModifiedDate":"2017-07-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.FIONA;","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":"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":"jovantanyk"},"content":"import java.util.List;","lastModifiedDate":"2024-03-21"},{"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":"2024-03-21"},{"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":"jovantanyk"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"jovantanyk"},"content":" private final Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"jovantanyk"},"content":" private final Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"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":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2017-06-12"},{"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":"jovantanyk"},"content":" assertEquals(findFirstCommand, findFirstCommand);","lastModifiedDate":"2024-03-21"},{"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":"jovantanyk"},"content":" assertEquals(findFirstCommand, findFirstCommandCopy);","lastModifiedDate":"2024-03-21"},{"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":"jovantanyk"},"content":" assertNotEquals(1, findFirstCommand);","lastModifiedDate":"2024-03-21"},{"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":"jovantanyk"},"content":" assertNotEquals(null, findFirstCommand);","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"jovantanyk"},"content":" assertNotEquals(findFirstCommand, findSecondCommand);","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void execute_zeroKeywords_noPersonFound() {","lastModifiedDate":"2017-08-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2017-06-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2018-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08"},{"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 execute_multipleKeywords_multiplePersonsFound() {","lastModifiedDate":"2017-08-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2017-06-12"},{"lineNumber":72,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\"Kurz Elle Kunz\");","lastModifiedDate":"2018-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"jovantanyk"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(List.of(\"keyword\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"-"},"content":" FindCommand findCommand \u003d new FindCommand(predicate);","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.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":"jovantanyk"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2018-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":91,"author":{"gitId":"-"},"content":" private NameContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2018-08-08"},{"lineNumber":92,"author":{"gitId":"-"},"content":" return new NameContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2018-08-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":94,"author":{"gitId":"jovantanyk"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":95,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"jovantanyk":13,"-":82}},{"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":"-"},"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":"laney0808"},"content":" expectedModel \u003d new ModelManager(model.getImmuniMate(), new UserPrefs());","lastModifiedDate":"2024-03-20"},{"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":{"laney0808":1,"-":38}},{"path":"src/test/java/seedu/address/logic/commands/ReadCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"NatLeong"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":3,"author":{"gitId":"NatLeong"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"NatLeong"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"NatLeong"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-22"},{"lineNumber":6,"author":{"gitId":"NatLeong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NON_EXISTENT_NRIC;","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"NatLeong"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"NatLeong"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"NatLeong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"NatLeong"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"NatLeong"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"NatLeong"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"NatLeong"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"NatLeong"},"content":"public class ReadCommandTest {","lastModifiedDate":"2024-03-23"},{"lineNumber":18,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"NatLeong"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"NatLeong"},"content":" /*@Test","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"NatLeong"},"content":" void execute_validNric_success() {","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"NatLeong"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"NatLeong"},"content":" void execute_invalidNric_failure() {","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"NatLeong"},"content":" }*/","lastModifiedDate":"2024-03-22"},{"lineNumber":30,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"NatLeong"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":32,"author":{"gitId":"NatLeong"},"content":" void equals() {","lastModifiedDate":"2024-03-22"},{"lineNumber":33,"author":{"gitId":"NatLeong"},"content":" ReadCommand readFirstCommand \u003d new ReadCommand(BOB.getNric());","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"NatLeong"},"content":" ReadCommand readSecondCommand \u003d new ReadCommand(new Nric(NON_EXISTENT_NRIC));","lastModifiedDate":"2024-03-22"},{"lineNumber":35,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":36,"author":{"gitId":"NatLeong"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-22"},{"lineNumber":37,"author":{"gitId":"NatLeong"},"content":" assertTrue(readFirstCommand.equals(readFirstCommand));","lastModifiedDate":"2024-03-22"},{"lineNumber":38,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"NatLeong"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"NatLeong"},"content":" ReadCommand readFirstCommandCopy \u003d new ReadCommand(BOB.getNric());","lastModifiedDate":"2024-03-22"},{"lineNumber":41,"author":{"gitId":"NatLeong"},"content":" assertTrue(readFirstCommand.equals(readFirstCommandCopy));","lastModifiedDate":"2024-03-22"},{"lineNumber":42,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":43,"author":{"gitId":"NatLeong"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"NatLeong"},"content":" assertFalse(readFirstCommand.equals(1));","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"NatLeong"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"NatLeong"},"content":" assertFalse(readFirstCommand.equals(null));","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":49,"author":{"gitId":"NatLeong"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-22"},{"lineNumber":50,"author":{"gitId":"NatLeong"},"content":" assertFalse(readFirstCommand.equals(readSecondCommand));","lastModifiedDate":"2024-03-22"},{"lineNumber":51,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"NatLeong"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":54,"author":{"gitId":"NatLeong"},"content":" void testToString() {","lastModifiedDate":"2024-03-22"},{"lineNumber":55,"author":{"gitId":"NatLeong"},"content":" ReadCommand readCommand \u003d new ReadCommand(BOB.getNric());","lastModifiedDate":"2024-03-22"},{"lineNumber":56,"author":{"gitId":"NatLeong"},"content":" String expected \u003d ReadCommand.class.getCanonicalName() + \"{nric\u003d\" + BOB.getNric() + \"}\";","lastModifiedDate":"2024-03-22"},{"lineNumber":57,"author":{"gitId":"NatLeong"},"content":" assertEquals(expected, readCommand.toString());","lastModifiedDate":"2024-03-22"},{"lineNumber":58,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":59,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":60,"author":{"gitId":"NatLeong"},"content":"}","lastModifiedDate":"2024-03-22"}],"authorContributionMap":{"NatLeong":60}},{"path":"src/test/java/seedu/address/logic/commands/UpdateCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-08"},{"lineNumber":2,"author":{"gitId":"alex-setyawan"},"content":"/*","lastModifiedDate":"2024-03-21"},{"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":"alex-setyawan"},"content":"import seedu.address.logic.commands.UpdateCommand.UpdatePersonDescriptor;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"laney0808"},"content":"import seedu.address.model.ImmuniMate;","lastModifiedDate":"2024-03-20"},{"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.PersonBuilder;","lastModifiedDate":"2017-05-04"},{"lineNumber":29,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.testutil.UpdatePersonDescriptorBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":31,"author":{"gitId":"alex-setyawan"},"content":"/*","lastModifiedDate":"2024-03-21"},{"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":"alex-setyawan"},"content":"public class UpdateCommandTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"alex-setyawan"},"content":" /*","lastModifiedDate":"2024-03-21"},{"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":"alex-setyawan"},"content":" UpdatePersonDescriptor descriptor \u003d new UpdatePersonDescriptorBuilder(editedPerson).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"alex-setyawan"},"content":" UpdateCommand updateCommand \u003d new UpdateCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":45,"author":{"gitId":"alex-setyawan"},"content":" String expectedMessage \u003d String.format(","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"alex-setyawan"},"content":" UpdateCommand.MESSAGE_UPDATE_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":48,"author":{"gitId":"laney0808"},"content":" Model expectedModel \u003d new ModelManager(new ImmuniMate(model.getImmuniMate()), new UserPrefs());","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":51,"author":{"gitId":"alex-setyawan"},"content":" assertCommandSuccess(updateCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":56,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2017-05-18"},{"lineNumber":57,"author":{"gitId":"-"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":59,"author":{"gitId":"-"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2017-05-18"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-18"},{"lineNumber":61,"author":{"gitId":"jovantanyk"},"content":" .build();","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":63,"author":{"gitId":"alex-setyawan"},"content":" UpdatePersonDescriptor descriptor \u003d new UpdatePersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":65,"author":{"gitId":"alex-setyawan"},"content":" UpdateCommand updateCommand \u003d new UpdateCommand(indexLastPerson, descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":67,"author":{"gitId":"alex-setyawan"},"content":" String expectedMessage \u003d String.format(","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"alex-setyawan"},"content":" UpdateCommand.MESSAGE_UPDATE_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":70,"author":{"gitId":"laney0808"},"content":" Model expectedModel \u003d new ModelManager(new ImmuniMate(model.getImmuniMate()), new UserPrefs());","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"-"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":73,"author":{"gitId":"alex-setyawan"},"content":" assertCommandSuccess(updateCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":78,"author":{"gitId":"alex-setyawan"},"content":" UpdateCommand updateCommand \u003d new UpdateCommand(INDEX_FIRST_PERSON, new UpdatePersonDescriptor());","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"-"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":81,"author":{"gitId":"alex-setyawan"},"content":" String expectedMessage \u003d String.format(","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"alex-setyawan"},"content":" UpdateCommand.MESSAGE_UPDATE_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":84,"author":{"gitId":"laney0808"},"content":" Model expectedModel \u003d new ModelManager(new ImmuniMate(model.getImmuniMate()), new UserPrefs());","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":86,"author":{"gitId":"alex-setyawan"},"content":" assertCommandSuccess(updateCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":91,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":94,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder(personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":95,"author":{"gitId":"alex-setyawan"},"content":" UpdateCommand updateCommand \u003d new UpdateCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"alex-setyawan"},"content":" new UpdatePersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":98,"author":{"gitId":"alex-setyawan"},"content":" String expectedMessage \u003d String.format(","lastModifiedDate":"2024-03-21"},{"lineNumber":99,"author":{"gitId":"alex-setyawan"},"content":" UpdateCommand.MESSAGE_UPDATE_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2024-03-21"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":101,"author":{"gitId":"laney0808"},"content":" Model expectedModel \u003d new ModelManager(new ImmuniMate(model.getImmuniMate()), new UserPrefs());","lastModifiedDate":"2024-03-20"},{"lineNumber":102,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":104,"author":{"gitId":"alex-setyawan"},"content":" assertCommandSuccess(updateCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":109,"author":{"gitId":"-"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":110,"author":{"gitId":"alex-setyawan"},"content":" UpdatePersonDescriptor descriptor \u003d new UpdatePersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":111,"author":{"gitId":"alex-setyawan"},"content":" UpdateCommand updateCommand \u003d new UpdateCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":113,"author":{"gitId":"alex-setyawan"},"content":" assertCommandFailure(updateCommand, model, UpdateCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2024-03-20"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":118,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":120,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2017-05-18"},{"lineNumber":121,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2024-03-20"},{"lineNumber":122,"author":{"gitId":"alex-setyawan"},"content":" UpdateCommand updateCommand \u003d new UpdateCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2024-03-20"},{"lineNumber":123,"author":{"gitId":"alex-setyawan"},"content":" new UpdatePersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2024-03-20"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":125,"author":{"gitId":"alex-setyawan"},"content":" assertCommandFailure(updateCommand, model, UpdateCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2024-03-20"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":130,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18"},{"lineNumber":131,"author":{"gitId":"alex-setyawan"},"content":" UpdatePersonDescriptor descriptor \u003d new UpdatePersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":132,"author":{"gitId":"alex-setyawan"},"content":" UpdateCommand updateCommand \u003d new UpdateCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":133,"author":{"gitId":"alex-setyawan"},"content":" assertCommandFailure(updateCommand, model, Messages.MESSAGE_PERSON_NOT_FOUND);","lastModifiedDate":"2024-03-20"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":135,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":137,"author":{"gitId":"alex-setyawan"},"content":" /*","lastModifiedDate":"2024-03-21"},{"lineNumber":138,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18"},{"lineNumber":139,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18"},{"lineNumber":140,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18"},{"lineNumber":141,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18"},{"lineNumber":142,"author":{"gitId":"alex-setyawan"},"content":" /*","lastModifiedDate":"2024-03-21"},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":144,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":145,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18"},{"lineNumber":147,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18"},{"lineNumber":148,"author":{"gitId":"laney0808"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getImmuniMate().getPersonList().size());","lastModifiedDate":"2024-03-20"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":150,"author":{"gitId":"alex-setyawan"},"content":" UpdateCommand updateCommand \u003d new UpdateCommand(outOfBoundIndex,","lastModifiedDate":"2024-03-20"},{"lineNumber":151,"author":{"gitId":"alex-setyawan"},"content":" new UpdatePersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2024-03-20"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":153,"author":{"gitId":"alex-setyawan"},"content":" assertCommandFailure(updateCommand, model, Messages.MESSAGE_PERSON_NOT_FOUND);","lastModifiedDate":"2024-03-20"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":158,"author":{"gitId":"alex-setyawan"},"content":" final UpdateCommand standardCommand \u003d new UpdateCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2024-03-20"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":161,"author":{"gitId":"alex-setyawan"},"content":" UpdatePersonDescriptor copyDescriptor \u003d new UpdatePersonDescriptor(DESC_AMY);","lastModifiedDate":"2024-03-20"},{"lineNumber":162,"author":{"gitId":"alex-setyawan"},"content":" UpdateCommand commandWithSameValues \u003d new UpdateCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":163,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":175,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(standardCommand.equals(new UpdateCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2024-03-20"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":178,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(standardCommand.equals(new UpdateCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2024-03-20"},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":181,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":184,"author":{"gitId":"alex-setyawan"},"content":" UpdatePersonDescriptor editPersonDescriptor \u003d new UpdatePersonDescriptor();","lastModifiedDate":"2024-03-20"},{"lineNumber":185,"author":{"gitId":"alex-setyawan"},"content":" UpdateCommand updateCommand \u003d new UpdateCommand(index, editPersonDescriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":186,"author":{"gitId":"alex-setyawan"},"content":" String expected \u003d UpdateCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2024-03-20"},{"lineNumber":187,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":188,"author":{"gitId":"alex-setyawan"},"content":" assertEquals(expected, updateCommand.toString());","lastModifiedDate":"2024-03-20"},{"lineNumber":189,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":190,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":191,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08"}],"authorContributionMap":{"alex-setyawan":50,"jovantanyk":1,"laney0808":6,"-":134}},{"path":"src/test/java/seedu/address/logic/commands/UpdatePersonDescriptorTest.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_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":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":15,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.logic.commands.UpdateCommand.UpdatePersonDescriptor;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.testutil.UpdatePersonDescriptorBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":18,"author":{"gitId":"alex-setyawan"},"content":"public class UpdatePersonDescriptorTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":23,"author":{"gitId":"alex-setyawan"},"content":" UpdatePersonDescriptor descriptorWithSameValues \u003d new UpdatePersonDescriptor(DESC_AMY);","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":39,"author":{"gitId":"alex-setyawan"},"content":" UpdatePersonDescriptor updatedAmy \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"alex-setyawan"},"content":" new UpdatePersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(DESC_AMY.equals(updatedAmy));","lastModifiedDate":"2024-03-20"},{"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":"alex-setyawan"},"content":" updatedAmy \u003d new UpdatePersonDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(DESC_AMY.equals(updatedAmy));","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":48,"author":{"gitId":"alex-setyawan"},"content":" updatedAmy \u003d new UpdatePersonDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(DESC_AMY.equals(updatedAmy));","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":52,"author":{"gitId":"alex-setyawan"},"content":" updatedAmy \u003d new UpdatePersonDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(DESC_AMY.equals(updatedAmy));","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"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":"alex-setyawan"},"content":" UpdatePersonDescriptor updatePersonDescriptor \u003d new UpdatePersonDescriptor();","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"alex-setyawan"},"content":" String expected \u003d UpdatePersonDescriptor.class.getCanonicalName() + \"{nric\u003d\"","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"alex-setyawan"},"content":" + updatePersonDescriptor.getNric() + \", name\u003d\"","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"alex-setyawan"},"content":" + updatePersonDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"alex-setyawan"},"content":" + updatePersonDescriptor.getPhone().orElse(null) + \", address\u003d\"","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"alex-setyawan"},"content":" + updatePersonDescriptor.getAddress().orElse(null) + \", date of birth\u003d\"","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"alex-setyawan"},"content":" + updatePersonDescriptor.getDateOfBirth().orElse(null) + \", sex\u003d\"","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"alex-setyawan"},"content":" + updatePersonDescriptor.getSex().orElse(null) + \", status\u003d\"","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"alex-setyawan"},"content":" + updatePersonDescriptor.getStatus().orElse(null) + \"}\";","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"alex-setyawan"},"content":" assertEquals(expected, updatePersonDescriptor.toString());","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"alex-setyawan":23,"-":46}},{"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":"laney0808"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DATEOFBIRTH_DESC_AMY;","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"laney0808"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DATEOFBIRTH_DESC_BOB;","lastModifiedDate":"2024-03-23"},{"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_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05"},{"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":"laney0808"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NRIC_DESC_AMY;","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"laney0808"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NRIC_DESC_BOB;","lastModifiedDate":"2024-03-23"},{"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":"laney0808"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SEX_DESC_AMY;","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"laney0808"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SEX_DESC_BOB;","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"laney0808"},"content":"import static seedu.address.logic.commands.CommandTestUtil.STATUS_DESC_AMY;","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"laney0808"},"content":"import static seedu.address.logic.commands.CommandTestUtil.STATUS_DESC_BOB;","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":25,"author":{"gitId":"laney0808"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NRIC_BOB;","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","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":"laney0808"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DATEOFBIRTH;","lastModifiedDate":"2024-03-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14"},{"lineNumber":30,"author":{"gitId":"laney0808"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NRIC;","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"laney0808"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SEX;","lastModifiedDate":"2024-03-23"},{"lineNumber":33,"author":{"gitId":"laney0808"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STATUS;","lastModifiedDate":"2024-03-23"},{"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":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25"},{"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":"laney0808"},"content":"import seedu.address.logic.commands.CreateCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-06-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-06-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":49,"author":{"gitId":"laney0808"},"content":"public class CreateCommandParserTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"laney0808"},"content":" private CreateCommandParser parser \u003d new CreateCommandParser();","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":54,"author":{"gitId":"jovantanyk"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":57,"author":{"gitId":"laney0808"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NRIC_DESC_BOB + NAME_DESC_BOB + PHONE_DESC_BOB","lastModifiedDate":"2024-03-23"},{"lineNumber":58,"author":{"gitId":"laney0808"},"content":" + ADDRESS_DESC_BOB + DATEOFBIRTH_DESC_BOB + SEX_DESC_BOB + STATUS_DESC_BOB,","lastModifiedDate":"2024-03-23"},{"lineNumber":59,"author":{"gitId":"laney0808"},"content":" new CreateCommand(expectedPerson));","lastModifiedDate":"2024-03-23"},{"lineNumber":60,"author":{"gitId":"laney0808"},"content":" //TODO: after implementing optional fields for person builder","lastModifiedDate":"2024-03-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15"},{"lineNumber":62,"author":{"gitId":"jovantanyk"},"content":" Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB)","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":65,"author":{"gitId":"laney0808"},"content":" NRIC_DESC_BOB + NAME_DESC_BOB + PHONE_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-23"},{"lineNumber":66,"author":{"gitId":"laney0808"},"content":" + DATEOFBIRTH_DESC_BOB + SEX_DESC_BOB + STATUS_DESC_BOB,","lastModifiedDate":"2024-03-23"},{"lineNumber":67,"author":{"gitId":"laney0808"},"content":" new CreateCommand(expectedPersonMultipleTags));","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":70,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":73,"author":{"gitId":"laney0808"},"content":" //TODO: add in optional fields (after person builder)","lastModifiedDate":"2024-03-23"},{"lineNumber":74,"author":{"gitId":"laney0808"},"content":" String validExpectedPersonString \u003d NRIC_DESC_BOB + NAME_DESC_BOB + PHONE_DESC_BOB","lastModifiedDate":"2024-03-23"},{"lineNumber":75,"author":{"gitId":"laney0808"},"content":" + ADDRESS_DESC_BOB + DATEOFBIRTH_DESC_BOB + SEX_DESC_BOB + STATUS_DESC_BOB;","lastModifiedDate":"2024-03-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":77,"author":{"gitId":"laney0808"},"content":" //multiple nrics","lastModifiedDate":"2024-03-23"},{"lineNumber":78,"author":{"gitId":"laney0808"},"content":" assertParseFailure(parser, NRIC_DESC_BOB + validExpectedPersonString,","lastModifiedDate":"2024-03-23"},{"lineNumber":79,"author":{"gitId":"laney0808"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NRIC));","lastModifiedDate":"2024-03-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":82,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":86,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":88,"author":{"gitId":"laney0808"},"content":" //TODO: after implementing optional fields for person builder","lastModifiedDate":"2024-03-23"},{"lineNumber":89,"author":{"gitId":"laney0808"},"content":" /*","lastModifiedDate":"2024-03-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":93,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":99,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":101,"author":{"gitId":"laney0808"},"content":" validExpectedPersonString + PHONE_DESC_AMY + NAME_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2024-03-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":" + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":103,"author":{"gitId":"laney0808"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_NRIC, PREFIX_DATEOFBIRTH, PREFIX_SEX,","lastModifiedDate":"2024-03-23"},{"lineNumber":104,"author":{"gitId":"laney0808"},"content":" PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_STATUS));","lastModifiedDate":"2024-03-23"},{"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":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":110,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":111,"author":{"gitId":"laney0808"},"content":" /*","lastModifiedDate":"2024-03-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":116,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":117,"author":{"gitId":"laney0808"},"content":"","lastModifiedDate":"2024-03-23"},{"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":"laney0808"},"content":" /*","lastModifiedDate":"2024-03-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":136,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":139,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":141,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":143,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":146,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":147,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":148,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15"},{"lineNumber":149,"author":{"gitId":"jovantanyk"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":150,"author":{"gitId":"laney0808"},"content":" assertParseSuccess(parser, NRIC_DESC_AMY + NAME_DESC_AMY + PHONE_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2024-03-23"},{"lineNumber":151,"author":{"gitId":"laney0808"},"content":" + DATEOFBIRTH_DESC_AMY + SEX_DESC_AMY + STATUS_DESC_AMY,","lastModifiedDate":"2024-03-23"},{"lineNumber":152,"author":{"gitId":"laney0808"},"content":" new CreateCommand(expectedPerson));","lastModifiedDate":"2024-03-20"},{"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_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":157,"author":{"gitId":"laney0808"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, CreateCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-20"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":159,"author":{"gitId":"laney0808"},"content":" // missing nric prefix","lastModifiedDate":"2024-03-23"},{"lineNumber":160,"author":{"gitId":"laney0808"},"content":" assertParseFailure(parser, VALID_NRIC_BOB + NAME_DESC_BOB + PHONE_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-23"},{"lineNumber":161,"author":{"gitId":"laney0808"},"content":" + DATEOFBIRTH_DESC_BOB + SEX_DESC_BOB + STATUS_DESC_BOB,","lastModifiedDate":"2024-03-23"},{"lineNumber":162,"author":{"gitId":"laney0808"},"content":" expectedMessage);","lastModifiedDate":"2024-03-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":164,"author":{"gitId":"laney0808"},"content":" assertParseFailure(parser, NRIC_DESC_BOB + VALID_NAME_BOB + PHONE_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-23"},{"lineNumber":165,"author":{"gitId":"laney0808"},"content":" + DATEOFBIRTH_DESC_BOB + SEX_DESC_BOB + STATUS_DESC_BOB,","lastModifiedDate":"2024-03-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":168,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":169,"author":{"gitId":"laney0808"},"content":" assertParseFailure(parser, NRIC_DESC_BOB + NAME_DESC_BOB + VALID_PHONE_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-23"},{"lineNumber":170,"author":{"gitId":"laney0808"},"content":" + DATEOFBIRTH_DESC_BOB + SEX_DESC_BOB + STATUS_DESC_BOB,","lastModifiedDate":"2024-03-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":173,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":174,"author":{"gitId":"laney0808"},"content":" assertParseFailure(parser, NRIC_DESC_BOB + NAME_DESC_BOB + PHONE_DESC_BOB + VALID_ADDRESS_BOB","lastModifiedDate":"2024-03-23"},{"lineNumber":175,"author":{"gitId":"laney0808"},"content":" + DATEOFBIRTH_DESC_BOB + SEX_DESC_BOB + STATUS_DESC_BOB,","lastModifiedDate":"2024-03-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":" // all prefixes missing","lastModifiedDate":"2017-06-15"},{"lineNumber":179,"author":{"gitId":"laney0808"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2024-03-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":183,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":184,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":185,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":186,"author":{"gitId":"laney0808"},"content":" assertParseFailure(parser, NRIC_DESC_BOB + INVALID_NAME_DESC + PHONE_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-23"},{"lineNumber":187,"author":{"gitId":"laney0808"},"content":" + DATEOFBIRTH_DESC_BOB + SEX_DESC_BOB + STATUS_DESC_BOB, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":189,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15"},{"lineNumber":190,"author":{"gitId":"laney0808"},"content":" assertParseFailure(parser, NRIC_DESC_BOB + NAME_DESC_BOB + INVALID_PHONE_DESC + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-23"},{"lineNumber":191,"author":{"gitId":"laney0808"},"content":" + DATEOFBIRTH_DESC_BOB + SEX_DESC_BOB + STATUS_DESC_BOB, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-23"},{"lineNumber":192,"author":{"gitId":"laney0808"},"content":" //TODO: optional fields","lastModifiedDate":"2024-03-23"},{"lineNumber":193,"author":{"gitId":"laney0808"},"content":" /*","lastModifiedDate":"2024-03-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15"},{"lineNumber":195,"author":{"gitId":"laney0808"},"content":" assertParseFailure(parser, NRIC_DESC_BOB + NAME_DESC_BOB + PHONE_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-23"},{"lineNumber":196,"author":{"gitId":"laney0808"},"content":" + DATEOFBIRTH_DESC_BOB + SEX_DESC_BOB + STATUS_DESC_BOB, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-23"},{"lineNumber":197,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15"},{"lineNumber":199,"author":{"gitId":"laney0808"},"content":" assertParseFailure(parser, NRIC_DESC_BOB + NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2024-03-23"},{"lineNumber":200,"author":{"gitId":"laney0808"},"content":" + DATEOFBIRTH_DESC_BOB + SEX_DESC_BOB + STATUS_DESC_BOB, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-23"},{"lineNumber":201,"author":{"gitId":"laney0808"},"content":" /*","lastModifiedDate":"2024-03-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15"},{"lineNumber":203,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":" + INVALID_TAG_DESC + VALID_TAG_FRIEND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":205,"author":{"gitId":"laney0808"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":207,"author":{"gitId":"laney0808"},"content":" assertParseFailure(parser, NRIC_DESC_BOB + INVALID_NAME_DESC + PHONE_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2024-03-23"},{"lineNumber":208,"author":{"gitId":"laney0808"},"content":" + DATEOFBIRTH_DESC_BOB + SEX_DESC_BOB + STATUS_DESC_BOB,","lastModifiedDate":"2024-03-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":212,"author":{"gitId":"laney0808"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NRIC_DESC_BOB + NAME_DESC_BOB","lastModifiedDate":"2024-03-23"},{"lineNumber":213,"author":{"gitId":"laney0808"},"content":" + PHONE_DESC_BOB + ADDRESS_DESC_BOB + DATEOFBIRTH_DESC_BOB + SEX_DESC_BOB + STATUS_DESC_BOB,","lastModifiedDate":"2024-03-23"},{"lineNumber":214,"author":{"gitId":"laney0808"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, CreateCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-20"},{"lineNumber":215,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":216,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"jovantanyk":3,"laney0808":74,"-":139}},{"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":"laney0808"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2024-03-21"},{"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":"laney0808"},"content":" assertParseSuccess(parser, BOB.getNric().toString(), new DeleteCommand(BOB.getNric()));","lastModifiedDate":"2024-03-21"},{"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":{"laney0808":2,"-":30}},{"path":"src/test/java/seedu/address/logic/parser/ImmuniMateParserTest.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":"laney0808"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2024-03-21"},{"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":"laney0808"},"content":"import seedu.address.logic.commands.CreateCommand;","lastModifiedDate":"2024-03-21"},{"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.ExitCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":23,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.logic.commands.UpdateCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.logic.commands.UpdateCommand.UpdatePersonDescriptor;","lastModifiedDate":"2024-03-21"},{"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.PersonBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27"},{"lineNumber":30,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.testutil.UpdatePersonDescriptorBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":32,"author":{"gitId":"laney0808"},"content":"public class ImmuniMateParserTest {","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":34,"author":{"gitId":"laney0808"},"content":" private final ImmuniMateParser parser \u003d new ImmuniMateParser();","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":37,"author":{"gitId":"laney0808"},"content":" public void parseCommand_create() throws Exception {","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"jovantanyk"},"content":" // TODO: Only tests for person created with mandatory values, update for optional values @laney0808","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"laney0808"},"content":" CreateCommand command \u003d (CreateCommand) parser.parseCommand(PersonUtil.getCreateCommand(person));","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"laney0808"},"content":" assertEquals(new CreateCommand(person), command);","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"laney0808"},"content":" DeleteCommand.COMMAND_WORD + \" \" + BOB.getNric());","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"laney0808"},"content":" assertEquals(new DeleteCommand(BOB.getNric()), command);","lastModifiedDate":"2024-03-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_edit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":60,"author":{"gitId":"alex-setyawan"},"content":" UpdatePersonDescriptor descriptor \u003d new UpdatePersonDescriptorBuilder(person).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"alex-setyawan"},"content":" UpdateCommand command \u003d (UpdateCommand) parser.parseCommand(UpdateCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"alex-setyawan"},"content":" + person.getNric() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"alex-setyawan"},"content":" assertEquals(new UpdateCommand(person.getNric(), descriptor), command);","lastModifiedDate":"2024-03-21"},{"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":{"alex-setyawan":7,"jovantanyk":1,"laney0808":9,"-":85}},{"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.Address;","lastModifiedDate":"2017-05-22"},{"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":"-"},"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":"alex-setyawan"},"content":" private static final String VALID_PHONE \u003d \"91234567\";","lastModifiedDate":"2024-03-21"},{"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":"-"},"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":{"alex-setyawan":1,"-":195}},{"path":"src/test/java/seedu/address/logic/parser/ReadCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"NatLeong"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":3,"author":{"gitId":"NatLeong"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"NatLeong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-22"},{"lineNumber":6,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"NatLeong"},"content":"import seedu.address.logic.commands.ReadCommand;","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"NatLeong"},"content":"public class ReadCommandParserTest {","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"NatLeong"},"content":" private ReadCommandParser parser \u003d new ReadCommandParser();","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"NatLeong"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"NatLeong"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"NatLeong"},"content":" assertParseFailure(parser, \" \", String.format(ReadCommand.MESSAGE_NOT_READ));","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"NatLeong"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"NatLeong"},"content":" /*@Test","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"NatLeong"},"content":" public void parse_validArgs_returnsReadCommand() {","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"NatLeong"},"content":" }*/","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"NatLeong"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"NatLeong"},"content":"}","lastModifiedDate":"2024-03-22"}],"authorContributionMap":{"NatLeong":20}},{"path":"src/test/java/seedu/address/logic/parser/UpdateCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"alex-setyawan"},"content":"/*","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.logic.commands.UpdateCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.logic.commands.UpdateCommand.UpdatePersonDescriptor;","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.testutil.UpdatePersonDescriptorBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"alex-setyawan"},"content":"*/","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"alex-setyawan"},"content":"public class UpdateCommandParserTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"alex-setyawan"},"content":" /*","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" private static final String TAG_EMPTY \u003d \" \" + PREFIX_TAG;","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"alex-setyawan"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, UpdateCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"alex-setyawan"},"content":" private UpdateCommandParser parser \u003d new UpdateCommandParser();","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"alex-setyawan"},"content":" assertParseFailure(parser, \"1\", UpdateCommand.MESSAGE_NOT_UPDATED);","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_ADDRESS_DESC, Address.MESSAGE_CONSTRAINTS); // invalid address","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"-"},"content":" // while parsing {@code PREFIX_TAG} alone will reset the tags of the {@code Person} being edited,","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"-"},"content":" // parsing it together with a valid tag results in error","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_DESC_HUSBAND + TAG_EMPTY, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_EMPTY + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-20"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_EMPTY + TAG_DESC_FRIEND + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":101,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2024-03-20"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_ADDRESS_AMY + VALID_PHONE_AMY,","lastModifiedDate":"2024-03-20"},{"lineNumber":103,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2024-03-20"},{"lineNumber":108,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-20"},{"lineNumber":109,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2024-03-20"},{"lineNumber":110,"author":{"gitId":"-"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + NAME_DESC_AMY + TAG_DESC_FRIEND;","lastModifiedDate":"2024-03-20"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":112,"author":{"gitId":"alex-setyawan"},"content":" UpdatePersonDescriptor descriptor \u003d new UpdatePersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-03-20"},{"lineNumber":113,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2024-03-20"},{"lineNumber":114,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":115,"author":{"gitId":"alex-setyawan"},"content":" UpdateCommand expectedCommand \u003d new UpdateCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-20"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":121,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2024-03-20"},{"lineNumber":122,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-20"},{"lineNumber":123,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":125,"author":{"gitId":"alex-setyawan"},"content":" UpdatePersonDescriptor descriptor \u003d new UpdatePersonDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-20"},{"lineNumber":126,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":127,"author":{"gitId":"alex-setyawan"},"content":" UpdateCommand expectedCommand \u003d new UpdateCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-20"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2024-03-20"},{"lineNumber":134,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2024-03-20"},{"lineNumber":135,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2024-03-20"},{"lineNumber":136,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":137,"author":{"gitId":"alex-setyawan"},"content":" UpdatePersonDescriptor descriptor \u003d new UpdatePersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":138,"author":{"gitId":"alex-setyawan"},"content":" UpdateCommand expectedCommand \u003d new UpdateCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-20"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":141,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2024-03-20"},{"lineNumber":142,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":143,"author":{"gitId":"alex-setyawan"},"content":" descriptor \u003d new UpdatePersonDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":144,"author":{"gitId":"alex-setyawan"},"content":" expectedCommand \u003d new UpdateCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-20"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":147,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2024-03-20"},{"lineNumber":148,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":149,"author":{"gitId":"alex-setyawan"},"content":" descriptor \u003d new UpdatePersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":150,"author":{"gitId":"alex-setyawan"},"content":" expectedCommand \u003d new UpdateCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":151,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-20"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":153,"author":{"gitId":"-"},"content":" // address","lastModifiedDate":"2024-03-20"},{"lineNumber":154,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + ADDRESS_DESC_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":155,"author":{"gitId":"alex-setyawan"},"content":" descriptor \u003d new UpdatePersonDescriptorBuilder().withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":156,"author":{"gitId":"alex-setyawan"},"content":" expectedCommand \u003d new UpdateCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-20"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":159,"author":{"gitId":"-"},"content":" // tags","lastModifiedDate":"2024-03-20"},{"lineNumber":160,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + TAG_DESC_FRIEND;","lastModifiedDate":"2024-03-20"},{"lineNumber":161,"author":{"gitId":"alex-setyawan"},"content":" descriptor \u003d new UpdatePersonDescriptorBuilder().withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":162,"author":{"gitId":"alex-setyawan"},"content":" expectedCommand \u003d new UpdateCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":163,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-20"},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":166,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":167,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2024-03-20"},{"lineNumber":168,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2024-03-20"},{"lineNumber":169,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2024-03-20"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":171,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2024-03-20"},{"lineNumber":172,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-20"},{"lineNumber":173,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":175,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2024-03-20"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":177,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2024-03-20"},{"lineNumber":178,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2024-03-20"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":180,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2024-03-20"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":182,"author":{"gitId":"-"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2024-03-20"},{"lineNumber":183,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2024-03-20"},{"lineNumber":184,"author":{"gitId":"-"},"content":" + TAG_DESC_FRIEND + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + TAG_DESC_FRIEND","lastModifiedDate":"2024-03-20"},{"lineNumber":185,"author":{"gitId":"-"},"content":" + PHONE_DESC_BOB + ADDRESS_DESC_BOB + EMAIL_DESC_BOB + TAG_DESC_HUSBAND;","lastModifiedDate":"2024-03-20"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":187,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2024-03-20"},{"lineNumber":188,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2024-03-20"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":190,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2024-03-20"},{"lineNumber":191,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2024-03-20"},{"lineNumber":192,"author":{"gitId":"-"},"content":" + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2024-03-20"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":194,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2024-03-20"},{"lineNumber":195,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2024-03-20"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":198,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":199,"author":{"gitId":"-"},"content":" public void parse_resetTags_success() {","lastModifiedDate":"2024-03-20"},{"lineNumber":200,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2024-03-20"},{"lineNumber":201,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_EMPTY;","lastModifiedDate":"2024-03-20"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":203,"author":{"gitId":"alex-setyawan"},"content":" UpdatePersonDescriptor descriptor \u003d new UpdatePersonDescriptorBuilder().withTags().build();","lastModifiedDate":"2024-03-20"},{"lineNumber":204,"author":{"gitId":"alex-setyawan"},"content":" UpdateCommand expectedCommand \u003d new UpdateCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":206,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-20"},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":208,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":209,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"alex-setyawan":27,"-":182}},{"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.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":"-"},"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":"laney0808"},"content":" private final ImmuniMate addressBook \u003d new ImmuniMate();","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" ImmuniMate newData \u003d getTypicalAddressBook();","lastModifiedDate":"2024-03-20"},{"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":"jovantanyk"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-03-18"},{"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":"laney0808"},"content":" ImmuniMateStub newData \u003d new ImmuniMateStub(newPersons);","lastModifiedDate":"2024-03-20"},{"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":"jovantanyk"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-03-18"},{"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":"laney0808"},"content":" String expected \u003d ImmuniMate.class.getCanonicalName() + \"{persons\u003d\" + addressBook.getPersonList() + \"}\";","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" private static class ImmuniMateStub implements ReadOnlyImmuniMate {","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" ImmuniMateStub(Collection\u003cPerson\u003e persons) {","lastModifiedDate":"2024-03-20"},{"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":{"jovantanyk":2,"laney0808":6,"-":99}},{"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":"-"},"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":"laney0808"},"content":" assertEquals(new ImmuniMate(), new ImmuniMate(modelManager.getImmuniMate()));","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setImmunimateFilePath(null));","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" modelManager.setImmunimateFilePath(path);","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"laney0808"},"content":" assertEquals(path, modelManager.getImmunimateFilePath());","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" ImmuniMate addressBook \u003d new AddressBookBuilder().withPerson(ALICE).withPerson(BENSON).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":99,"author":{"gitId":"laney0808"},"content":" ImmuniMate differentAddressBook \u003d new ImmuniMate();","lastModifiedDate":"2024-03-20"},{"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":"jovantanyk"},"content":" String[] keywords \u003d ALICE.getName().toString().split(\"\\\\s+\");","lastModifiedDate":"2024-03-18"},{"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":{"jovantanyk":1,"laney0808":6,"-":125}},{"path":"src/test/java/seedu/address/model/person/AllergiesTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"alex-setyawan"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"alex-setyawan"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"alex-setyawan"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"alex-setyawan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"alex-setyawan"},"content":"public class AllergiesTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"alex-setyawan"},"content":" /* commented as Allergies can be null, and doesn\u0027t have regex","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"alex-setyawan"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"alex-setyawan"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"alex-setyawan"},"content":" assertThrows(NullPointerException.class, () -\u003e new Allergies(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"alex-setyawan"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"alex-setyawan"},"content":" public void constructor_invalidAllergies_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"alex-setyawan"},"content":" String invalidAllergies \u003d \"\";","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"alex-setyawan"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Allergies(invalidAllergies));","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"alex-setyawan"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"alex-setyawan"},"content":" public void equals() {","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"alex-setyawan"},"content":" Allergies allergies \u003d new Allergies(\"Valid Allergy\");","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"alex-setyawan"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"alex-setyawan"},"content":" assertTrue(allergies.equals(new Allergies(\"Valid Allergy\")));","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"alex-setyawan"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"alex-setyawan"},"content":" assertTrue(allergies.equals(allergies));","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"alex-setyawan"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(allergies.equals(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"alex-setyawan"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(allergies.equals(5.0f));","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"alex-setyawan"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(allergies.equals(new Allergies(\"Other Valid Allergy\")));","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"alex-setyawan"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"alex-setyawan":42}},{"path":"src/test/java/seedu/address/model/person/BloodTypeTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"alex-setyawan"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"jovantanyk"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"alex-setyawan"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"jovantanyk"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"alex-setyawan"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"alex-setyawan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"alex-setyawan"},"content":"public class BloodTypeTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"alex-setyawan"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"alex-setyawan"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"jovantanyk"},"content":" assertThrows(NullPointerException.class, () -\u003e new BloodType(null));","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"alex-setyawan"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"alex-setyawan"},"content":" public void constructor_invalidAddress_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"jovantanyk"},"content":" String invalidBloodType \u003d \"ABB-\";","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"jovantanyk"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new BloodType(invalidBloodType));","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"alex-setyawan"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"alex-setyawan"},"content":" public void equals() {","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"jovantanyk"},"content":" BloodType bloodType \u003d new BloodType(\"A+\");","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"alex-setyawan"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"jovantanyk"},"content":" assertEquals(bloodType, new BloodType(\"A+\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"alex-setyawan"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"jovantanyk"},"content":" assertEquals(bloodType, bloodType);","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"alex-setyawan"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"jovantanyk"},"content":" assertNotEquals(null, bloodType);","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"alex-setyawan"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"jovantanyk"},"content":" assertNotEquals(5.0f, bloodType);","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"jovantanyk"},"content":" // different rh type -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"jovantanyk"},"content":" assertNotEquals(bloodType, new BloodType(\"A-\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"jovantanyk"},"content":" // different letter type -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"jovantanyk"},"content":" assertFalse(bloodType.equals(new BloodType(\"B+\")));","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"alex-setyawan"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"alex-setyawan":31,"jovantanyk":14}},{"path":"src/test/java/seedu/address/model/person/ConditionTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"alex-setyawan"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"alex-setyawan"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"alex-setyawan"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"alex-setyawan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"alex-setyawan"},"content":"public class ConditionTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"alex-setyawan"},"content":" /* commented as Condition can be null, and doesn\u0027t have regex","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"alex-setyawan"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"alex-setyawan"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"alex-setyawan"},"content":" assertThrows(NullPointerException.class, () -\u003e new Condition(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"alex-setyawan"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"alex-setyawan"},"content":" public void constructor_invalidAddress_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"alex-setyawan"},"content":" String invalidCondition \u003d \"\";","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"alex-setyawan"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Condition(invalidCondition));","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"alex-setyawan"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"alex-setyawan"},"content":" public void equals() {","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"alex-setyawan"},"content":" Condition condition \u003d new Condition(\"Valid Condition\");","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"alex-setyawan"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"alex-setyawan"},"content":" assertTrue(condition.equals(new Condition(\"Valid Condition\")));","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"alex-setyawan"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"alex-setyawan"},"content":" assertTrue(condition.equals(condition));","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"alex-setyawan"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(condition.equals(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"alex-setyawan"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(condition.equals(5.0f));","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"alex-setyawan"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(condition.equals(new Condition(\"Other Valid Condition\")));","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"alex-setyawan"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"alex-setyawan":42}},{"path":"src/test/java/seedu/address/model/person/CountryTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"alex-setyawan"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"alex-setyawan"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"alex-setyawan"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"alex-setyawan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"alex-setyawan"},"content":"public class CountryTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"alex-setyawan"},"content":" /* commented as Allergies can be null, and doesn\u0027t have regex","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"alex-setyawan"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"alex-setyawan"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"alex-setyawan"},"content":" assertThrows(NullPointerException.class, () -\u003e new Country(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"alex-setyawan"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"alex-setyawan"},"content":" public void constructor_invalidAddress_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"alex-setyawan"},"content":" String invalidCountry \u003d \"\";","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"alex-setyawan"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Condition(invalidCountry));","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"alex-setyawan"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"alex-setyawan"},"content":" public void equals() {","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"alex-setyawan"},"content":" Country country \u003d new Country(\"Valid Country\");","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"alex-setyawan"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"alex-setyawan"},"content":" assertTrue(country.equals(new Country(\"Valid Country\")));","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"alex-setyawan"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"alex-setyawan"},"content":" assertTrue(country.equals(country));","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"alex-setyawan"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(country.equals(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"alex-setyawan"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(country.equals(5.0f));","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"alex-setyawan"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(country.equals(new Country(\"Other Valid Country\")));","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"alex-setyawan"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"alex-setyawan":42}},{"path":"src/test/java/seedu/address/model/person/DateOfAdmissionTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"alex-setyawan"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"alex-setyawan"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"alex-setyawan"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"alex-setyawan"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"alex-setyawan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"alex-setyawan"},"content":"public class DateOfAdmissionTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"alex-setyawan"},"content":" /* commented as DateOfAdmission can be null, and doesn\u0027t have regex","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"alex-setyawan"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"alex-setyawan"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"alex-setyawan"},"content":" assertThrows(NullPointerException.class, () -\u003e new DateOfAdmission(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"alex-setyawan"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"alex-setyawan"},"content":" public void constructor_invalidAddress_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"alex-setyawan"},"content":" String invalidDate \u003d \"\";","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"alex-setyawan"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new DateOfAdmission(invalidDate));","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"alex-setyawan"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"alex-setyawan"},"content":" public void isValidAddress() {","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"alex-setyawan"},"content":" // null address","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"alex-setyawan"},"content":" assertThrows(NullPointerException.class, () -\u003e DateOfAdmission.isValidDateOfAdmission(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"alex-setyawan"},"content":" // invalid addresses","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(DateOfAdmission.isValidDateOfAdmission(\"\")); // empty string","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(DateOfAdmission.isValidDateOfAdmission(\" \")); // spaces only","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(DateOfAdmission.isValidDateOfAdmission(\"20231213\")); // numbers only","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(DateOfAdmission.isValidDateOfAdmission(\"2023-1213\")); // one slash","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(DateOfAdmission.isValidDateOfAdmission(\"202312-13\")); // one slash","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(DateOfAdmission.isValidDateOfAdmission(\"2023-1-3\")); // shortened date and month","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(DateOfAdmission.isValidDateOfAdmission(\"13-12-2023\")); // reverse format","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"alex-setyawan"},"content":" // valid addresses","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"alex-setyawan"},"content":" assertTrue(DateOfAdmission.isValidDateOfAdmission(\"2023-12-13\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"alex-setyawan"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"alex-setyawan"},"content":" public void equals() {","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"alex-setyawan"},"content":" DateOfAdmission date \u003d new DateOfAdmission(\"2020-12-05\");","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"alex-setyawan"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"alex-setyawan"},"content":" assertTrue(date.equals(new DateOfAdmission(\"2020-12-05\")));","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"alex-setyawan"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"alex-setyawan"},"content":" assertTrue(date.equals(date));","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"alex-setyawan"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(date.equals(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"alex-setyawan"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(date.equals(5.0f));","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"alex-setyawan"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(date.equals(new DateOfAdmission(\"2023-12-13\")));","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"alex-setyawan"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"alex-setyawan":61}},{"path":"src/test/java/seedu/address/model/person/DateOfBirthTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"alex-setyawan"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"alex-setyawan"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"alex-setyawan"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"alex-setyawan"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"alex-setyawan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"alex-setyawan"},"content":"public class DateOfBirthTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"alex-setyawan"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"alex-setyawan"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"alex-setyawan"},"content":" assertThrows(NullPointerException.class, () -\u003e new DateOfBirth(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"alex-setyawan"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"alex-setyawan"},"content":" public void constructor_invalidAddress_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"alex-setyawan"},"content":" String invalidDate \u003d \"\";","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"alex-setyawan"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new DateOfBirth(invalidDate));","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"alex-setyawan"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"alex-setyawan"},"content":" public void isValidAddress() {","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"alex-setyawan"},"content":" // null address","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"alex-setyawan"},"content":" assertThrows(NullPointerException.class, () -\u003e DateOfAdmission.isValidDateOfAdmission(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"alex-setyawan"},"content":" // invalid addresses","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(DateOfAdmission.isValidDateOfAdmission(\"\")); // empty string","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(DateOfAdmission.isValidDateOfAdmission(\" \")); // spaces only","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(DateOfAdmission.isValidDateOfAdmission(\"20231213\")); // numbers only","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(DateOfAdmission.isValidDateOfAdmission(\"2023-1213\")); // one slash","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(DateOfAdmission.isValidDateOfAdmission(\"202312-13\")); // one slash","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(DateOfAdmission.isValidDateOfAdmission(\"2023-1-3\")); // shortened date and month","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(DateOfAdmission.isValidDateOfAdmission(\"13-12-2023\")); // reverse format","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"alex-setyawan"},"content":" // valid addresses","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"alex-setyawan"},"content":" assertTrue(DateOfAdmission.isValidDateOfAdmission(\"2023-12-13\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"alex-setyawan"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"alex-setyawan"},"content":" public void equals() {","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"alex-setyawan"},"content":" DateOfBirth date \u003d new DateOfBirth(\"2020-12-13\");","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"alex-setyawan"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"alex-setyawan"},"content":" assertTrue(date.equals(new DateOfBirth(\"2020-12-13\")));","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"alex-setyawan"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"alex-setyawan"},"content":" assertTrue(date.equals(date));","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"alex-setyawan"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(date.equals(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"alex-setyawan"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(date.equals(5.0f));","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"alex-setyawan"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(date.equals(new DateOfBirth(\"2023-12-13\")));","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"alex-setyawan"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"alex-setyawan":59}},{"path":"src/test/java/seedu/address/model/person/DiagnosisTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"alex-setyawan"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"alex-setyawan"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"alex-setyawan"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"alex-setyawan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"alex-setyawan"},"content":"public class DiagnosisTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"alex-setyawan"},"content":" /* commented as DateOfAdmission can be null, and doesn\u0027t have regex","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"alex-setyawan"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"alex-setyawan"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"alex-setyawan"},"content":" assertThrows(NullPointerException.class, () -\u003e new Diagnosis(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"alex-setyawan"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"alex-setyawan"},"content":" public void constructor_invalidAddress_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"alex-setyawan"},"content":" String invalidDiagnosis \u003d \"\";","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"alex-setyawan"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Diagnosis(invalidDiagnosis));","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"alex-setyawan"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"alex-setyawan"},"content":" public void equals() {","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"alex-setyawan"},"content":" Diagnosis diagnosis \u003d new Diagnosis(\"Valid Diagnosis\");","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"alex-setyawan"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"alex-setyawan"},"content":" assertTrue(diagnosis.equals(new Diagnosis(\"Valid Diagnosis\")));","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"alex-setyawan"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"alex-setyawan"},"content":" assertTrue(diagnosis.equals(diagnosis));","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"alex-setyawan"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(diagnosis.equals(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"alex-setyawan"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(diagnosis.equals(5.0f));","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"alex-setyawan"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(diagnosis.equals(new Diagnosis(\"Other Valid Diagnosis\")));","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"alex-setyawan"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"alex-setyawan":42}},{"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":"-"},"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":"-"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").withPhone(\"12345\")","lastModifiedDate":"2017-06-12"},{"lineNumber":74,"author":{"gitId":"jovantanyk"},"content":" .withAddress(\"Main Street\").build()));","lastModifiedDate":"2024-03-18"},{"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":{"jovantanyk":1,"-":84}},{"path":"src/test/java/seedu/address/model/person/NricTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"alex-setyawan"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"alex-setyawan"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"alex-setyawan"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"alex-setyawan"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"alex-setyawan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"alex-setyawan"},"content":"public class NricTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"alex-setyawan"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"alex-setyawan"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"alex-setyawan"},"content":" assertThrows(NullPointerException.class, () -\u003e new Nric(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"alex-setyawan"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"alex-setyawan"},"content":" public void constructor_invalidAddress_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"alex-setyawan"},"content":" String invalidNric \u003d \"\";","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"alex-setyawan"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Nric(invalidNric));","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"alex-setyawan"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"alex-setyawan"},"content":" public void isValidAddress() {","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"alex-setyawan"},"content":" // null address","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"alex-setyawan"},"content":" assertThrows(NullPointerException.class, () -\u003e Nric.isValidNric(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"alex-setyawan"},"content":" // invalid addresses","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(Nric.isValidNric(\"\")); // empty string","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(Nric.isValidNric(\" \")); // spaces only","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(Nric.isValidNric(\"0312345\")); // numbers only","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(Nric.isValidNric(\"S0312345\")); // without first letter","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(Nric.isValidNric(\"0312345A\")); // without last letter","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(Nric.isValidNric(\"T03123425A\")); // too many numbers","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(Nric.isValidNric(\"T031234A\")); // too few numbers","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(Nric.isValidNric(\"D03123452S\")); // invalid first number","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"alex-setyawan"},"content":" // valid addresses","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"alex-setyawan"},"content":" assertTrue(Nric.isValidNric(\"T0912345A\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"alex-setyawan"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"alex-setyawan"},"content":" public void equals() {","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"alex-setyawan"},"content":" Nric nric \u003d new Nric(\"T0412345G\");","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"alex-setyawan"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"alex-setyawan"},"content":" assertTrue(nric.equals(new Nric(\"T0412345G\")));","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"alex-setyawan"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"alex-setyawan"},"content":" assertTrue(nric.equals(nric));","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"alex-setyawan"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(nric.equals(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"alex-setyawan"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(nric.equals(5.0f));","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"alex-setyawan"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(nric.equals(new Nric(\"T0412345H\")));","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"alex-setyawan"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"alex-setyawan":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.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_ADDRESS_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"laney0808"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NRIC_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"laney0808"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SEX_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"laney0808"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_STATUS_BOB;","lastModifiedDate":"2024-03-21"},{"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":"laney0808"},"content":" // same nric, all other attributes different -\u003e returns true","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"jovantanyk"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"laney0808"},"content":" .withAddress(VALID_ADDRESS_BOB).withName(VALID_NAME_BOB).withSex(VALID_SEX_BOB)","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"laney0808"},"content":" .withStatus(VALID_STATUS_BOB).build();","lastModifiedDate":"2024-03-21"},{"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":"laney0808"},"content":" // different NRIC, all other attributes same -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"jovantanyk"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withNric(VALID_NRIC_BOB).build();","lastModifiedDate":"2024-03-22"},{"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":"laney0808"},"content":" // NRIC differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"laney0808"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withNric(VALID_NRIC_BOB.toLowerCase()).build();","lastModifiedDate":"2024-03-21"},{"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":"laney0808"},"content":" // NRIC has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"laney0808"},"content":" String nricWithTrailingSpaces \u003d VALID_NRIC_BOB + \" \";","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"laney0808"},"content":" editedBob \u003d new PersonBuilder(BOB).withNric(nricWithTrailingSpaces).build();","lastModifiedDate":"2024-03-21"},{"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":"laney0808"},"content":" // different nric -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"laney0808"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withNric(VALID_NRIC_BOB).build();","lastModifiedDate":"2024-03-21"},{"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 address -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_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":"laney0808"},"content":" //TODO: edit both test case and code","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"alex-setyawan"},"content":" /*","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"laney0808"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{nric\u003d\" + ALICE.getNric() + \", name\u003d\" + ALICE.getName()","lastModifiedDate":"2024-03-21"},{"lineNumber":91,"author":{"gitId":"laney0808"},"content":" + \", status\u003d\" + ALICE.getStatus() + \"}\";","lastModifiedDate":"2024-03-21"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":94,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":95,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"alex-setyawan":2,"jovantanyk":2,"laney0808":17,"-":74}},{"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(\"93121534\"));","lastModifiedDate":"2017-01-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertTrue(Phone.isValidPhone(\"124293842033123\")); // long phone numbers","lastModifiedDate":"2017-01-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"alex-setyawan"},"content":" Phone phone \u003d new Phone(\"98765432\");","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"alex-setyawan"},"content":" assertTrue(phone.equals(new Phone(\"98765432\")));","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertTrue(phone.equals(phone));","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(phone.equals(new Phone(\"92345678\")));","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"alex-setyawan":3,"-":56}},{"path":"src/test/java/seedu/address/model/person/SexTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"alex-setyawan"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"alex-setyawan"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"alex-setyawan"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"alex-setyawan"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"alex-setyawan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"alex-setyawan"},"content":"public class SexTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"alex-setyawan"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"alex-setyawan"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"alex-setyawan"},"content":" assertThrows(NullPointerException.class, () -\u003e new Sex(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"alex-setyawan"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"alex-setyawan"},"content":" public void constructor_invalidAddress_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"alex-setyawan"},"content":" String invalidSex \u003d \"\";","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"alex-setyawan"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Sex(invalidSex));","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"alex-setyawan"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"alex-setyawan"},"content":" public void equals() {","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"alex-setyawan"},"content":" Sex sex \u003d new Sex(\"M\");","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"alex-setyawan"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"alex-setyawan"},"content":" assertTrue(sex.equals(new Sex(\"M\")));","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"alex-setyawan"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"alex-setyawan"},"content":" assertTrue(sex.equals(sex));","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"alex-setyawan"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(sex.equals(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"alex-setyawan"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(sex.equals(5.0f));","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"alex-setyawan"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(sex.equals(new Sex(\"F\")));","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"alex-setyawan"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"alex-setyawan":41}},{"path":"src/test/java/seedu/address/model/person/StatusTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"alex-setyawan"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"alex-setyawan"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"alex-setyawan"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"alex-setyawan"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"alex-setyawan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"alex-setyawan"},"content":"public class StatusTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"alex-setyawan"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"alex-setyawan"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"alex-setyawan"},"content":" assertThrows(NullPointerException.class, () -\u003e new Status(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"alex-setyawan"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"alex-setyawan"},"content":" public void constructor_invalidAddress_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"alex-setyawan"},"content":" String invalidStatus \u003d \"\";","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"alex-setyawan"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Sex(invalidStatus));","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"alex-setyawan"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"alex-setyawan"},"content":" public void equals() {","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"alex-setyawan"},"content":" Status status \u003d new Status(\"HEALTHY\");","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"alex-setyawan"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"alex-setyawan"},"content":" assertTrue(status.equals(new Status(\"HEALTHY\")));","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"alex-setyawan"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"alex-setyawan"},"content":" assertTrue(status.equals(status));","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"alex-setyawan"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(status.equals(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"alex-setyawan"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(status.equals(5.0f));","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"alex-setyawan"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(status.equals(new Status(\"UNWELL\")));","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"alex-setyawan"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"alex-setyawan":41}},{"path":"src/test/java/seedu/address/model/person/SymptomTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"alex-setyawan"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"alex-setyawan"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"alex-setyawan"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"alex-setyawan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"alex-setyawan"},"content":"public class SymptomTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"alex-setyawan"},"content":" /* commented as DateOfAdmission can be null, and doesn\u0027t have regex","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"alex-setyawan"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"alex-setyawan"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"alex-setyawan"},"content":" assertThrows(NullPointerException.class, () -\u003e new Symptom(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"alex-setyawan"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"alex-setyawan"},"content":" public void constructor_invalidAddress_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"alex-setyawan"},"content":" String invalidSymptom \u003d \"\";","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"alex-setyawan"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Sex(invalidSymptom));","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"alex-setyawan"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"alex-setyawan"},"content":" public void equals() {","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"alex-setyawan"},"content":" Symptom symptom \u003d new Symptom(\"Valid Symptom\");","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"alex-setyawan"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"alex-setyawan"},"content":" assertTrue(symptom.equals(new Symptom(\"Valid Symptom\")));","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"alex-setyawan"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"alex-setyawan"},"content":" assertTrue(symptom.equals(symptom));","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"alex-setyawan"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(symptom.equals(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"alex-setyawan"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(symptom.equals(5.0f));","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"alex-setyawan"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"alex-setyawan"},"content":" assertFalse(symptom.equals(new Symptom(\"Other Valid Symptom\")));","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"alex-setyawan"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"alex-setyawan":42}},{"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.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":"-"},"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":"-"},"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":"jovantanyk"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-03-18"},{"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":"jovantanyk"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-03-18"},{"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":{"jovantanyk":2,"-":172}},{"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 org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"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.Address;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"NatLeong"},"content":"import seedu.address.model.person.DateOfBirth;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"NatLeong"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"NatLeong"},"content":"import seedu.address.model.person.Sex;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"NatLeong"},"content":"import seedu.address.model.person.Status;","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"jovantanyk"},"content":" private static final String INVALID_NRIC \u003d \"T-1\";","lastModifiedDate":"2024-03-18"},{"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":"jovantanyk"},"content":" private static final String INVALID_DOB \u003d \"MARCH 10th 2021\";","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"jovantanyk"},"content":" private static final String INVALID_SEX \u003d \"Male\";","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"jovantanyk"},"content":" private static final String INVALID_STATUS \u003d \"DYING\";","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"jovantanyk"},"content":" private static final String VALID_NRIC \u003d BENSON.getNric().toString();","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().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":"jovantanyk"},"content":" private static final String VALID_DOB \u003d \"2022-01-01\";","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"jovantanyk"},"content":" private static final String VALID_SEX \u003d BENSON.getSex().toString();","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"jovantanyk"},"content":" private static final String VALID_STATUS \u003d BENSON.getStatus().toString();","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"NatLeong"},"content":" private static final String VALID_EMAIL \u003d \"benson123@gmail.com\";","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"NatLeong"},"content":" private static final String VALID_COUNTRY \u003d \"Singapore\";","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"NatLeong"},"content":" private static final String VALID_ALLERGIES \u003d \"Peanuts\";","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"NatLeong"},"content":" private static final String VALID_BLOODTYPE \u003d \"A+\";","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"NatLeong"},"content":" private static final String VALID_CONDITION \u003d \"Diabetes\";","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"NatLeong"},"content":" private static final String VALID_DOA \u003d \"2024-01-01\";","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"NatLeong"},"content":" private static final String VALID_DIAGNOSIS \u003d \"Covid\";","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"NatLeong"},"content":" private static final String VALID_SYMPTOM \u003d \"Cough\";","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","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":"jovantanyk"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"jovantanyk"},"content":" public void toModelType_invalidNric_throwsIllegalValueException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"jovantanyk"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"jovantanyk"},"content":" new JsonAdaptedPerson(INVALID_NRIC, VALID_NAME, VALID_PHONE,","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"NatLeong"},"content":" VALID_ADDRESS, VALID_DOB, VALID_SEX, VALID_STATUS, VALID_EMAIL, VALID_COUNTRY,","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"NatLeong"},"content":" VALID_ALLERGIES, VALID_BLOODTYPE, VALID_CONDITION, VALID_DOA, VALID_DIAGNOSIS,","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"NatLeong"},"content":" VALID_SYMPTOM);","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"jovantanyk"},"content":" String expectedMessage \u003d Nric.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"jovantanyk"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"jovantanyk"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"jovantanyk"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"jovantanyk"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"jovantanyk"},"content":" public void toModelType_nullNric_throwsIllegalValueException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"jovantanyk"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"jovantanyk"},"content":" new JsonAdaptedPerson(null, VALID_NAME, VALID_PHONE,","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"NatLeong"},"content":" VALID_ADDRESS, VALID_DOB, VALID_SEX, VALID_STATUS, VALID_EMAIL, VALID_COUNTRY,","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"NatLeong"},"content":" VALID_ALLERGIES, VALID_BLOODTYPE, VALID_CONDITION, VALID_DOA, VALID_DIAGNOSIS,","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"NatLeong"},"content":" VALID_SYMPTOM);","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"jovantanyk"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Nric.class.getSimpleName());","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"jovantanyk"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"jovantanyk"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"jovantanyk"},"content":" new JsonAdaptedPerson(VALID_NRIC, INVALID_NAME, VALID_PHONE,","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"NatLeong"},"content":" VALID_ADDRESS, VALID_DOB, VALID_SEX, VALID_STATUS, VALID_EMAIL, VALID_COUNTRY,","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"NatLeong"},"content":" VALID_ALLERGIES, VALID_BLOODTYPE, VALID_CONDITION, VALID_DOA, VALID_DIAGNOSIS,","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"NatLeong"},"content":" VALID_SYMPTOM);","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.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_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"jovantanyk"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"jovantanyk"},"content":" new JsonAdaptedPerson(VALID_NRIC, null, VALID_PHONE,","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"NatLeong"},"content":" VALID_ADDRESS, VALID_DOB, VALID_SEX, VALID_STATUS, VALID_EMAIL, VALID_COUNTRY,","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"NatLeong"},"content":" VALID_ALLERGIES, VALID_BLOODTYPE, VALID_CONDITION, VALID_DOA, VALID_DIAGNOSIS,","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"NatLeong"},"content":" VALID_SYMPTOM);","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.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_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"jovantanyk"},"content":" new JsonAdaptedPerson(VALID_NRIC, VALID_NAME, INVALID_PHONE,","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"NatLeong"},"content":" VALID_ADDRESS, VALID_DOB, VALID_SEX, VALID_STATUS, VALID_EMAIL, VALID_COUNTRY,","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"NatLeong"},"content":" VALID_ALLERGIES, VALID_BLOODTYPE, VALID_CONDITION, VALID_DOA, VALID_DIAGNOSIS,","lastModifiedDate":"2024-03-20"},{"lineNumber":99,"author":{"gitId":"NatLeong"},"content":" VALID_SYMPTOM);","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.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":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"jovantanyk"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":107,"author":{"gitId":"jovantanyk"},"content":" new JsonAdaptedPerson(VALID_NRIC, VALID_NAME, null,","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"NatLeong"},"content":" VALID_ADDRESS, VALID_DOB, VALID_SEX, VALID_STATUS, VALID_EMAIL, VALID_COUNTRY,","lastModifiedDate":"2024-03-20"},{"lineNumber":109,"author":{"gitId":"NatLeong"},"content":" VALID_ALLERGIES, VALID_BLOODTYPE, VALID_CONDITION, VALID_DOA, VALID_DIAGNOSIS,","lastModifiedDate":"2024-03-20"},{"lineNumber":110,"author":{"gitId":"NatLeong"},"content":" VALID_SYMPTOM);","lastModifiedDate":"2024-03-20"},{"lineNumber":111,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-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":"2018-08-13"},{"lineNumber":116,"author":{"gitId":"jovantanyk"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":118,"author":{"gitId":"jovantanyk"},"content":" new JsonAdaptedPerson(VALID_NRIC, VALID_NAME, VALID_PHONE,","lastModifiedDate":"2024-03-18"},{"lineNumber":119,"author":{"gitId":"NatLeong"},"content":" INVALID_ADDRESS, VALID_DOB, VALID_SEX, VALID_STATUS, VALID_EMAIL, VALID_COUNTRY,","lastModifiedDate":"2024-03-20"},{"lineNumber":120,"author":{"gitId":"NatLeong"},"content":" VALID_ALLERGIES, VALID_BLOODTYPE, VALID_CONDITION, VALID_DOA, VALID_DIAGNOSIS,","lastModifiedDate":"2024-03-20"},{"lineNumber":121,"author":{"gitId":"NatLeong"},"content":" VALID_SYMPTOM);","lastModifiedDate":"2024-03-20"},{"lineNumber":122,"author":{"gitId":"jovantanyk"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-18"},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":127,"author":{"gitId":"jovantanyk"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":128,"author":{"gitId":"jovantanyk"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":129,"author":{"gitId":"jovantanyk"},"content":" new JsonAdaptedPerson(VALID_NRIC, VALID_NAME, VALID_PHONE,","lastModifiedDate":"2024-03-18"},{"lineNumber":130,"author":{"gitId":"NatLeong"},"content":" null, VALID_DOB, VALID_SEX, VALID_STATUS, VALID_EMAIL, VALID_COUNTRY,","lastModifiedDate":"2024-03-20"},{"lineNumber":131,"author":{"gitId":"NatLeong"},"content":" VALID_ALLERGIES, VALID_BLOODTYPE, VALID_CONDITION, VALID_DOA, VALID_DIAGNOSIS,","lastModifiedDate":"2024-03-20"},{"lineNumber":132,"author":{"gitId":"NatLeong"},"content":" VALID_SYMPTOM);","lastModifiedDate":"2024-03-20"},{"lineNumber":133,"author":{"gitId":"jovantanyk"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2024-03-18"},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-18"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":137,"author":{"gitId":"jovantanyk"},"content":" public void toModelType_invalidDob_throwsIllegalValueException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":138,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":139,"author":{"gitId":"jovantanyk"},"content":" new JsonAdaptedPerson(VALID_NRIC, VALID_NAME, VALID_PHONE,","lastModifiedDate":"2024-03-18"},{"lineNumber":140,"author":{"gitId":"NatLeong"},"content":" VALID_ADDRESS, INVALID_DOB, VALID_SEX, VALID_STATUS, VALID_EMAIL, VALID_COUNTRY,","lastModifiedDate":"2024-03-20"},{"lineNumber":141,"author":{"gitId":"NatLeong"},"content":" VALID_ALLERGIES, VALID_BLOODTYPE, VALID_CONDITION, VALID_DOA, VALID_DIAGNOSIS,","lastModifiedDate":"2024-03-20"},{"lineNumber":142,"author":{"gitId":"NatLeong"},"content":" VALID_SYMPTOM);","lastModifiedDate":"2024-03-20"},{"lineNumber":143,"author":{"gitId":"jovantanyk"},"content":" String expectedMessage \u003d DateOfBirth.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-18"},{"lineNumber":144,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":147,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":148,"author":{"gitId":"jovantanyk"},"content":" public void toModelType_nullDob_throwsIllegalValueException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":149,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":150,"author":{"gitId":"jovantanyk"},"content":" new JsonAdaptedPerson(VALID_NRIC, VALID_NAME, VALID_PHONE,","lastModifiedDate":"2024-03-18"},{"lineNumber":151,"author":{"gitId":"NatLeong"},"content":" VALID_ADDRESS, null, VALID_SEX, VALID_STATUS, VALID_EMAIL, VALID_COUNTRY,","lastModifiedDate":"2024-03-20"},{"lineNumber":152,"author":{"gitId":"NatLeong"},"content":" VALID_ALLERGIES, VALID_BLOODTYPE, VALID_CONDITION, VALID_DOA, VALID_DIAGNOSIS,","lastModifiedDate":"2024-03-20"},{"lineNumber":153,"author":{"gitId":"NatLeong"},"content":" VALID_SYMPTOM);","lastModifiedDate":"2024-03-20"},{"lineNumber":154,"author":{"gitId":"jovantanyk"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, DateOfBirth.class.getSimpleName());","lastModifiedDate":"2024-03-21"},{"lineNumber":155,"author":{"gitId":"jovantanyk"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-18"},{"lineNumber":156,"author":{"gitId":"jovantanyk"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":157,"author":{"gitId":"jovantanyk"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":158,"author":{"gitId":"jovantanyk"},"content":" public void toModelType_invalidSex_throwsIllegalValueException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":159,"author":{"gitId":"jovantanyk"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":160,"author":{"gitId":"jovantanyk"},"content":" new JsonAdaptedPerson(VALID_NRIC, VALID_NAME, VALID_PHONE,","lastModifiedDate":"2024-03-18"},{"lineNumber":161,"author":{"gitId":"NatLeong"},"content":" VALID_ADDRESS, VALID_DOB, INVALID_SEX, VALID_STATUS, VALID_EMAIL, VALID_COUNTRY,","lastModifiedDate":"2024-03-20"},{"lineNumber":162,"author":{"gitId":"NatLeong"},"content":" VALID_ALLERGIES, VALID_BLOODTYPE, VALID_CONDITION, VALID_DOA, VALID_DIAGNOSIS,","lastModifiedDate":"2024-03-20"},{"lineNumber":163,"author":{"gitId":"NatLeong"},"content":" VALID_SYMPTOM);","lastModifiedDate":"2024-03-20"},{"lineNumber":164,"author":{"gitId":"jovantanyk"},"content":" String expectedMessage \u003d Sex.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-18"},{"lineNumber":165,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":168,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":169,"author":{"gitId":"jovantanyk"},"content":" public void toModelType_nullSex_throwsIllegalValueException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":170,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":171,"author":{"gitId":"jovantanyk"},"content":" new JsonAdaptedPerson(VALID_NRIC, VALID_NAME, VALID_PHONE,","lastModifiedDate":"2024-03-18"},{"lineNumber":172,"author":{"gitId":"NatLeong"},"content":" VALID_ADDRESS, VALID_DOB, null, VALID_STATUS, VALID_EMAIL, VALID_COUNTRY,","lastModifiedDate":"2024-03-20"},{"lineNumber":173,"author":{"gitId":"NatLeong"},"content":" VALID_ALLERGIES, VALID_BLOODTYPE, VALID_CONDITION, VALID_DOA, VALID_DIAGNOSIS,","lastModifiedDate":"2024-03-20"},{"lineNumber":174,"author":{"gitId":"NatLeong"},"content":" VALID_SYMPTOM);","lastModifiedDate":"2024-03-20"},{"lineNumber":175,"author":{"gitId":"jovantanyk"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Sex.class.getSimpleName());","lastModifiedDate":"2024-03-21"},{"lineNumber":176,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":178,"author":{"gitId":"jovantanyk"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":179,"author":{"gitId":"jovantanyk"},"content":" public void toModelType_invalidStatus_throwsIllegalValueException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":180,"author":{"gitId":"jovantanyk"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":181,"author":{"gitId":"jovantanyk"},"content":" new JsonAdaptedPerson(VALID_NRIC, VALID_NAME, VALID_PHONE,","lastModifiedDate":"2024-03-18"},{"lineNumber":182,"author":{"gitId":"NatLeong"},"content":" VALID_ADDRESS, VALID_DOB, VALID_SEX, INVALID_STATUS, VALID_EMAIL, VALID_COUNTRY,","lastModifiedDate":"2024-03-20"},{"lineNumber":183,"author":{"gitId":"NatLeong"},"content":" VALID_ALLERGIES, VALID_BLOODTYPE, VALID_CONDITION, VALID_DOA, VALID_DIAGNOSIS,","lastModifiedDate":"2024-03-20"},{"lineNumber":184,"author":{"gitId":"NatLeong"},"content":" VALID_SYMPTOM);","lastModifiedDate":"2024-03-20"},{"lineNumber":185,"author":{"gitId":"jovantanyk"},"content":" String expectedMessage \u003d Status.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-18"},{"lineNumber":186,"author":{"gitId":"jovantanyk"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-18"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":189,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":190,"author":{"gitId":"jovantanyk"},"content":" public void toModelType_nullStatus_throwsIllegalValueException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":191,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":192,"author":{"gitId":"jovantanyk"},"content":" new JsonAdaptedPerson(VALID_NRIC, VALID_NAME, VALID_PHONE,","lastModifiedDate":"2024-03-18"},{"lineNumber":193,"author":{"gitId":"NatLeong"},"content":" VALID_ADDRESS, VALID_DOB, VALID_SEX, null, VALID_EMAIL, VALID_COUNTRY,","lastModifiedDate":"2024-03-20"},{"lineNumber":194,"author":{"gitId":"NatLeong"},"content":" VALID_ALLERGIES, VALID_BLOODTYPE, VALID_CONDITION, VALID_DOA, VALID_DIAGNOSIS,","lastModifiedDate":"2024-03-20"},{"lineNumber":195,"author":{"gitId":"NatLeong"},"content":" VALID_SYMPTOM);","lastModifiedDate":"2024-03-20"},{"lineNumber":196,"author":{"gitId":"jovantanyk"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Status.class.getSimpleName());","lastModifiedDate":"2024-03-21"},{"lineNumber":197,"author":{"gitId":"jovantanyk"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-18"},{"lineNumber":198,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":199,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"jovantanyk":62,"-":83,"NatLeong":54}},{"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":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.HOON;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.IDA;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2018-08-13"},{"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":"laney0808"},"content":"import seedu.address.model.ImmuniMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"laney0808"},"content":"import seedu.address.model.ReadOnlyImmuniMate;","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" private java.util.Optional\u003cReadOnlyImmuniMate\u003e readAddressBook(String filePath) throws Exception {","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":" public void readAddressBook_invalidPersonAddressBook_throwDataLoadingException() {","lastModifiedDate":"2023-06-14"},{"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":"-"},"content":" public void readAddressBook_invalidAndValidPersonAddressBook_throwDataLoadingException() {","lastModifiedDate":"2023-06-14"},{"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":"laney0808"},"content":" ImmuniMate original \u003d getTypicalAddressBook();","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" ReadOnlyImmuniMate readBack \u003d jsonAddressBookStorage.readAddressBook(filePath).get();","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"laney0808"},"content":" assertEquals(original, new ImmuniMate(readBack));","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":" original.addPerson(HOON);","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" original.removePerson(ALICE);","lastModifiedDate":"2018-08-13"},{"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":"laney0808"},"content":" assertEquals(original, new ImmuniMate(readBack));","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":" original.addPerson(IDA);","lastModifiedDate":"2018-08-13"},{"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":"laney0808"},"content":" assertEquals(original, new ImmuniMate(readBack));","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" private void saveAddressBook(ReadOnlyImmuniMate addressBook, String filePath) {","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" assertThrows(NullPointerException.class, () -\u003e saveAddressBook(new ImmuniMate(), null));","lastModifiedDate":"2024-03-20"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"laney0808":10,"-":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":"laney0808"},"content":"import seedu.address.model.ImmuniMate;","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" ImmuniMate addressBookFromFile \u003d dataFromFile.toModelType();","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"laney0808"},"content":" ImmuniMate typicalPersonsAddressBook \u003d TypicalPersons.getTypicalAddressBook();","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertEquals(addressBookFromFile, typicalPersonsAddressBook);","lastModifiedDate":"2018-08-13"},{"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":"-"},"content":" public void toModelType_invalidPersonFile_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2018-08-13"},{"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":"-"},"content":" public void toModelType_duplicatePersons_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2018-08-13"},{"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":"-"},"content":" assertThrows(IllegalValueException.class, JsonSerializableAddressBook.MESSAGE_DUPLICATE_PERSON,","lastModifiedDate":"2019-03-23"},{"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":{"laney0808":3,"-":44}},{"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":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"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":"laney0808"},"content":"import seedu.address.model.ImmuniMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"laney0808"},"content":"import seedu.address.model.ReadOnlyImmuniMate;","lastModifiedDate":"2024-03-20"},{"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":"laney0808"},"content":" ImmuniMate original \u003d getTypicalAddressBook();","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" storageManager.saveAddressBook(original);","lastModifiedDate":"2016-09-28"},{"lineNumber":59,"author":{"gitId":"laney0808"},"content":" ReadOnlyImmuniMate retrieved \u003d storageManager.readAddressBook().get();","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"laney0808"},"content":" assertEquals(original, new ImmuniMate(retrieved));","lastModifiedDate":"2024-03-20"},{"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":{"laney0808":5,"-":63}},{"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":"laney0808"},"content":"import seedu.address.model.ImmuniMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"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":"-"},"content":" * {@code AddressBook ab \u003d new AddressBookBuilder().withPerson(\"John\", \"Doe\").build();}","lastModifiedDate":"2018-03-29"},{"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":"laney0808"},"content":" private ImmuniMate addressBook;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public AddressBookBuilder() {","lastModifiedDate":"2017-05-31"},{"lineNumber":16,"author":{"gitId":"laney0808"},"content":" addressBook \u003d new ImmuniMate();","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":19,"author":{"gitId":"laney0808"},"content":" public AddressBookBuilder(ImmuniMate addressBook) {","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":" * Adds a new {@code Person} to the {@code AddressBook} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public AddressBookBuilder withPerson(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":27,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2016-09-01"},{"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":"laney0808"},"content":" public ImmuniMate build() {","lastModifiedDate":"2024-03-20"},{"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":{"laney0808":5,"-":29}},{"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 seedu.address.model.person.Address;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.model.person.Allergies;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.model.person.BloodType;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.model.person.Condition;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.model.person.Country;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.model.person.DateOfAdmission;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.model.person.DateOfBirth;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.model.person.Diagnosis;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.model.person.Sex;","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.model.person.Status;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.model.person.Symptom;","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03"},{"lineNumber":24,"author":{"gitId":"alex-setyawan"},"content":" // Mandatory fields","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"laney0808"},"content":" public static final String DEFAULT_NRIC \u003d \"T1234567B\";","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05"},{"lineNumber":28,"author":{"gitId":"laney0808"},"content":" public static final String DEFAULT_DOB \u003d \"1998-07-03\";","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"jovantanyk"},"content":" public static final String DEFAULT_SEX \u003d \"M\";","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"alex-setyawan"},"content":" // Data fields","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05"},{"lineNumber":32,"author":{"gitId":"jovantanyk"},"content":" public static final String DEFAULT_STATUS \u003d \"HEALTHY\";","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"jovantanyk"},"content":" /*","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"jovantanyk"},"content":" public static final String DEFAULT_EMAIL \u003d \"test@email.com\";","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"alex-setyawan"},"content":" public static final String DEFAULT_ALLERGIES \u003d \"Peanuts\";","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"alex-setyawan"},"content":" public static final String[] DEFAULT_BLOODTYPE \u003d {\"A\", \"POSITIVE\"};","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"alex-setyawan"},"content":" public static final String DEFAULT_COUNTRY \u003d \"Singapore\";","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"alex-setyawan"},"content":" // Medical history","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"alex-setyawan"},"content":" public static final String DEFAULT_CONDITION \u003d \"High blood pressure\";","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"alex-setyawan"},"content":" public static final String DEFAULT_DOA \u003d \"2024-01-01\";","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"alex-setyawan"},"content":" public static final String DEFAULT_DIAGNOSIS \u003d \"Runny nose\";","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"alex-setyawan"},"content":" public static final String DEFAULT_SYMPTOM \u003d \"Sneezing, sniffing\";","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"jovantanyk"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"alex-setyawan"},"content":" // Mandatory fields","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"laney0808"},"content":" private Nric nric;","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":48,"author":{"gitId":"jovantanyk"},"content":" private DateOfBirth dateOfBirth;","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"jovantanyk"},"content":" private Sex sex;","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"alex-setyawan"},"content":" // Data fields","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"alex-setyawan"},"content":" private Allergies allergies;","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"alex-setyawan"},"content":" private BloodType bloodType;","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"alex-setyawan"},"content":" private Country country;","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"alex-setyawan"},"content":" private Email email;","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"alex-setyawan"},"content":" //Medical history","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"alex-setyawan"},"content":" private Condition condition;","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"alex-setyawan"},"content":" private DateOfAdmission dateOfAdmission;","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"alex-setyawan"},"content":" private Diagnosis diagnosis;","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"jovantanyk"},"content":" private Status status;","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"alex-setyawan"},"content":" private Symptom symptom;","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15"},{"lineNumber":67,"author":{"gitId":"laney0808"},"content":" nric \u003d new Nric(DEFAULT_NRIC);","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20"},{"lineNumber":69,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20"},{"lineNumber":70,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20"},{"lineNumber":71,"author":{"gitId":"jovantanyk"},"content":" dateOfBirth \u003d new DateOfBirth(DEFAULT_DOB);","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"jovantanyk"},"content":" sex \u003d new Sex(DEFAULT_SEX);","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"jovantanyk"},"content":" status \u003d new Status(DEFAULT_STATUS);","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"jovantanyk"},"content":" /*","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"alex-setyawan"},"content":" allergies \u003d new Allergies(DEFAULT_ALLERGIES);","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"alex-setyawan"},"content":" bloodType \u003d new BloodType(DEFAULT_BLOODTYPE[0], DEFAULT_BLOODTYPE[1]);","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"alex-setyawan"},"content":" country \u003d new Country(DEFAULT_COUNTRY);","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"alex-setyawan"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"alex-setyawan"},"content":" condition \u003d new Condition(DEFAULT_CONDITION);","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"alex-setyawan"},"content":" dateOfAdmission \u003d new DateOfAdmission(DEFAULT_DOA);","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"alex-setyawan"},"content":" diagnosis \u003d new Diagnosis(DEFAULT_DIAGNOSIS);","lastModifiedDate":"2024-03-19"},{"lineNumber":84,"author":{"gitId":"alex-setyawan"},"content":" symptom \u003d new Symptom(DEFAULT_SYMPTOM);","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"jovantanyk"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10"},{"lineNumber":92,"author":{"gitId":"alex-setyawan"},"content":" nric \u003d personToCopy.getNric();","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20"},{"lineNumber":94,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20"},{"lineNumber":95,"author":{"gitId":"jovantanyk"},"content":" dateOfBirth \u003d personToCopy.getDateOfBirth();","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"jovantanyk"},"content":" sex \u003d personToCopy.getSex();","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2024-03-23"},{"lineNumber":98,"author":{"gitId":"laney0808"},"content":" status \u003d personToCopy.getStatus();","lastModifiedDate":"2024-03-23"},{"lineNumber":99,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"alex-setyawan"},"content":" /*","lastModifiedDate":"2024-03-21"},{"lineNumber":101,"author":{"gitId":"alex-setyawan"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"alex-setyawan"},"content":" allergies \u003d personToCopy.getAllergies();","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"alex-setyawan"},"content":" bloodType \u003d personToCopy.getBloodType();","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"alex-setyawan"},"content":" country \u003d personToCopy.getCountry();","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"alex-setyawan"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2024-03-19"},{"lineNumber":106,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":107,"author":{"gitId":"alex-setyawan"},"content":" condition \u003d personToCopy.getCondition();","lastModifiedDate":"2024-03-19"},{"lineNumber":108,"author":{"gitId":"alex-setyawan"},"content":" dateOfAdmission \u003d personToCopy.getDateOfAdmission();","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"alex-setyawan"},"content":" diagnosis \u003d personToCopy.getDiagnosis();","lastModifiedDate":"2024-03-19"},{"lineNumber":110,"author":{"gitId":"alex-setyawan"},"content":" symptom \u003d personToCopy.getSymptom();","lastModifiedDate":"2024-03-19"},{"lineNumber":111,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11"},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":115,"author":{"gitId":"jovantanyk"},"content":" * Sets the {@code Nric} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":117,"author":{"gitId":"jovantanyk"},"content":" public PersonBuilder withNric(String nric) {","lastModifiedDate":"2024-03-18"},{"lineNumber":118,"author":{"gitId":"jovantanyk"},"content":" this.nric \u003d new Nric(nric);","lastModifiedDate":"2024-03-18"},{"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":"2024-03-19"},{"lineNumber":122,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":123,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-18"},{"lineNumber":124,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":125,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2024-03-18"},{"lineNumber":126,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":131,"author":{"gitId":"alex-setyawan"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":132,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":133,"author":{"gitId":"alex-setyawan"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2024-03-19"},{"lineNumber":134,"author":{"gitId":"alex-setyawan"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2024-03-19"},{"lineNumber":135,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2024-03-19"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":138,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":139,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":140,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":141,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":142,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20"},{"lineNumber":143,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":146,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":147,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":148,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":149,"author":{"gitId":"alex-setyawan"},"content":" public PersonBuilder withDateOfBirth(String dateOfBirth) {","lastModifiedDate":"2024-03-19"},{"lineNumber":150,"author":{"gitId":"alex-setyawan"},"content":" this.dateOfBirth \u003d new DateOfBirth(dateOfBirth);","lastModifiedDate":"2024-03-19"},{"lineNumber":151,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":154,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":155,"author":{"gitId":"jovantanyk"},"content":" * Sets the {@code Sex} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-18"},{"lineNumber":156,"author":{"gitId":"jovantanyk"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":157,"author":{"gitId":"jovantanyk"},"content":" public PersonBuilder withSex(String sex) {","lastModifiedDate":"2024-03-18"},{"lineNumber":158,"author":{"gitId":"jovantanyk"},"content":" this.sex \u003d new Sex(sex);","lastModifiedDate":"2024-03-18"},{"lineNumber":159,"author":{"gitId":"jovantanyk"},"content":" return this;","lastModifiedDate":"2024-03-18"},{"lineNumber":160,"author":{"gitId":"jovantanyk"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":161,"author":{"gitId":"jovantanyk"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":162,"author":{"gitId":"jovantanyk"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":163,"author":{"gitId":"jovantanyk"},"content":" * Sets the {@code Status} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-18"},{"lineNumber":164,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":165,"author":{"gitId":"jovantanyk"},"content":" public PersonBuilder withStatus(String status) {","lastModifiedDate":"2024-03-18"},{"lineNumber":166,"author":{"gitId":"jovantanyk"},"content":" this.status \u003d new Status(status);","lastModifiedDate":"2024-03-18"},{"lineNumber":167,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":170,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":171,"author":{"gitId":"alex-setyawan"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":172,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":173,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2024-03-19"},{"lineNumber":174,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2024-03-19"},{"lineNumber":175,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2024-03-19"},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":178,"author":{"gitId":"alex-setyawan"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":179,"author":{"gitId":"alex-setyawan"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":180,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":181,"author":{"gitId":"alex-setyawan"},"content":" public PersonBuilder withCountry(String country) {","lastModifiedDate":"2024-03-19"},{"lineNumber":182,"author":{"gitId":"alex-setyawan"},"content":" this.country \u003d new Country(country);","lastModifiedDate":"2024-03-19"},{"lineNumber":183,"author":{"gitId":"alex-setyawan"},"content":" return this;","lastModifiedDate":"2024-03-19"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":186,"author":{"gitId":"alex-setyawan"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":187,"author":{"gitId":"alex-setyawan"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":188,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":189,"author":{"gitId":"alex-setyawan"},"content":" public PersonBuilder withAllergies(String allergies) {","lastModifiedDate":"2024-03-19"},{"lineNumber":190,"author":{"gitId":"alex-setyawan"},"content":" this.allergies \u003d new Allergies(allergies);","lastModifiedDate":"2024-03-19"},{"lineNumber":191,"author":{"gitId":"alex-setyawan"},"content":" return this;","lastModifiedDate":"2024-03-19"},{"lineNumber":192,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":193,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":194,"author":{"gitId":"alex-setyawan"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":195,"author":{"gitId":"alex-setyawan"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":196,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":197,"author":{"gitId":"jovantanyk"},"content":" public PersonBuilder withBloodType(String bloodType) {","lastModifiedDate":"2024-03-21"},{"lineNumber":198,"author":{"gitId":"jovantanyk"},"content":" this.bloodType \u003d new BloodType(bloodType);","lastModifiedDate":"2024-03-21"},{"lineNumber":199,"author":{"gitId":"alex-setyawan"},"content":" return this;","lastModifiedDate":"2024-03-19"},{"lineNumber":200,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":201,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":202,"author":{"gitId":"alex-setyawan"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":203,"author":{"gitId":"alex-setyawan"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":204,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":205,"author":{"gitId":"alex-setyawan"},"content":" public PersonBuilder withCondition(String condition) {","lastModifiedDate":"2024-03-19"},{"lineNumber":206,"author":{"gitId":"alex-setyawan"},"content":" this.condition \u003d new Condition(condition);","lastModifiedDate":"2024-03-19"},{"lineNumber":207,"author":{"gitId":"alex-setyawan"},"content":" return this;","lastModifiedDate":"2024-03-19"},{"lineNumber":208,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":209,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":210,"author":{"gitId":"alex-setyawan"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":211,"author":{"gitId":"alex-setyawan"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":212,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":213,"author":{"gitId":"alex-setyawan"},"content":" public PersonBuilder withDateOfAdmission(String dateOfAdmission) {","lastModifiedDate":"2024-03-19"},{"lineNumber":214,"author":{"gitId":"alex-setyawan"},"content":" this.dateOfAdmission \u003d new DateOfAdmission(dateOfAdmission);","lastModifiedDate":"2024-03-19"},{"lineNumber":215,"author":{"gitId":"alex-setyawan"},"content":" return this;","lastModifiedDate":"2024-03-19"},{"lineNumber":216,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":217,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":218,"author":{"gitId":"alex-setyawan"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":219,"author":{"gitId":"alex-setyawan"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":220,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":221,"author":{"gitId":"alex-setyawan"},"content":" public PersonBuilder withDiagnosis(String diagnosis) {","lastModifiedDate":"2024-03-19"},{"lineNumber":222,"author":{"gitId":"alex-setyawan"},"content":" this.diagnosis \u003d new Diagnosis(diagnosis);","lastModifiedDate":"2024-03-19"},{"lineNumber":223,"author":{"gitId":"alex-setyawan"},"content":" return this;","lastModifiedDate":"2024-03-19"},{"lineNumber":224,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":225,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":226,"author":{"gitId":"alex-setyawan"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":227,"author":{"gitId":"alex-setyawan"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":228,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":229,"author":{"gitId":"alex-setyawan"},"content":" public PersonBuilder withSymptom(String symptom) {","lastModifiedDate":"2024-03-19"},{"lineNumber":230,"author":{"gitId":"alex-setyawan"},"content":" this.symptom \u003d new Symptom(symptom);","lastModifiedDate":"2024-03-19"},{"lineNumber":231,"author":{"gitId":"alex-setyawan"},"content":" return this;","lastModifiedDate":"2024-03-19"},{"lineNumber":232,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":233,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":234,"author":{"gitId":"alex-setyawan"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":235,"author":{"gitId":"alex-setyawan"},"content":" * Returns a Person object with fields initialised to that of PersonBuilder object.","lastModifiedDate":"2024-03-21"},{"lineNumber":236,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":237,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05"},{"lineNumber":238,"author":{"gitId":"alex-setyawan"},"content":" Person p \u003d new Person(nric, name, phone, address, dateOfBirth, sex, status);","lastModifiedDate":"2024-03-20"},{"lineNumber":239,"author":{"gitId":"alex-setyawan"},"content":" p.setEmail(email);","lastModifiedDate":"2024-03-20"},{"lineNumber":240,"author":{"gitId":"alex-setyawan"},"content":" p.setCountry(country);","lastModifiedDate":"2024-03-20"},{"lineNumber":241,"author":{"gitId":"alex-setyawan"},"content":" p.setAllergies(allergies);","lastModifiedDate":"2024-03-20"},{"lineNumber":242,"author":{"gitId":"alex-setyawan"},"content":" p.setBloodType(bloodType);","lastModifiedDate":"2024-03-20"},{"lineNumber":243,"author":{"gitId":"alex-setyawan"},"content":" p.setCondition(condition);","lastModifiedDate":"2024-03-20"},{"lineNumber":244,"author":{"gitId":"alex-setyawan"},"content":" p.setDateOfAdmission(dateOfAdmission);","lastModifiedDate":"2024-03-20"},{"lineNumber":245,"author":{"gitId":"alex-setyawan"},"content":" p.setDiagnosis(diagnosis);","lastModifiedDate":"2024-03-20"},{"lineNumber":246,"author":{"gitId":"alex-setyawan"},"content":" p.setSymptom(symptom);","lastModifiedDate":"2024-03-20"},{"lineNumber":247,"author":{"gitId":"alex-setyawan"},"content":" return p;","lastModifiedDate":"2024-03-20"},{"lineNumber":248,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":249,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03"}],"authorContributionMap":{"alex-setyawan":127,"jovantanyk":31,"laney0808":5,"-":86}},{"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":"laney0808"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DATEOFBIRTH;","lastModifiedDate":"2024-03-21"},{"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":"laney0808"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NRIC;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":9,"author":{"gitId":"laney0808"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SEX;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"laney0808"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STATUS;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"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":"laney0808"},"content":"import seedu.address.logic.commands.CreateCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.logic.commands.UpdateCommand.UpdatePersonDescriptor;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-03-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":28,"author":{"gitId":"laney0808"},"content":" public static String getCreateCommand(Person person) {","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"laney0808"},"content":" return CreateCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":36,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05"},{"lineNumber":37,"author":{"gitId":"laney0808"},"content":" sb.append(PREFIX_NRIC + person.getNric().toString() + \" \");","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"jovantanyk"},"content":" sb.append(PREFIX_NAME + person.getName().toString() + \" \");","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"jovantanyk"},"content":" sb.append(PREFIX_PHONE + person.getPhone().toString() + \" \");","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"jovantanyk"},"content":" sb.append(PREFIX_ADDRESS + person.getAddress().toString() + \" \");","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"laney0808"},"content":" sb.append(PREFIX_DATEOFBIRTH + person.getDateOfBirth().toString() + \" \");","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"laney0808"},"content":" sb.append(PREFIX_SEX + person.getSex().toString() + \" \");","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"laney0808"},"content":" sb.append(PREFIX_STATUS + person.getStatus().toString() + \" \");","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":" person.getTags().stream().forEach(","lastModifiedDate":"2017-05-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2017-05-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26"},{"lineNumber":53,"author":{"gitId":"alex-setyawan"},"content":" public static String getEditPersonDescriptorDetails(UpdatePersonDescriptor descriptor) {","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26"},{"lineNumber":55,"author":{"gitId":"jovantanyk"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.toString()).append(\" \"));","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"jovantanyk"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.toString()).append(\" \"));","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"jovantanyk"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.toString()).append(\" \"));","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"jovantanyk"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address.toString()).append(\" \"));","lastModifiedDate":"2024-03-18"},{"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":{"alex-setyawan":2,"jovantanyk":7,"laney0808":11,"-":49}},{"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":"2024-03-21"},{"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":"alex-setyawan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_DATEOFBIRTH_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"alex-setyawan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_DATEOFBIRTH_BOB;","lastModifiedDate":"2024-03-21"},{"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":"jovantanyk"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NRIC_AMY;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"jovantanyk"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NRIC_BOB;","lastModifiedDate":"2024-03-18"},{"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":"jovantanyk"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SEX_AMY;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"jovantanyk"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SEX_BOB;","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"jovantanyk"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_STATUS_AMY;","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"jovantanyk"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_STATUS_BOB;","lastModifiedDate":"2024-03-18"},{"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":"laney0808"},"content":"import seedu.address.model.ImmuniMate;","lastModifiedDate":"2024-03-20"},{"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":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":29,"author":{"gitId":"jovantanyk"},"content":" public static final Person ALICE \u003d new PersonBuilder().withNric(\"T0139571B\").withName(\"Alice Pauline\")","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"alex-setyawan"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withPhone(\"94351253\").withDateOfBirth(\"2001-01-01\")","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"jovantanyk"},"content":" .withSex(\"F\").withStatus(\"HEALTHY\").build();","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"jovantanyk"},"content":" public static final Person BENSON \u003d new PersonBuilder().withNric(\"T0439571C\").withName(\"Benson Meier\")","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"alex-setyawan"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\").withPhone(\"98765432\").withDateOfBirth(\"2001-01-01\")","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"jovantanyk"},"content":" .withSex(\"M\").withStatus(\"UNWELL\").build();","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"jovantanyk"},"content":" public static final Person CARL \u003d new PersonBuilder().withNric(\"T0284994B\").withName(\"Carl Kurz\")","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"alex-setyawan"},"content":" .withPhone(\"95352563\").withAddress(\"wall street\").withDateOfBirth(\"2001-01-01\")","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"jovantanyk"},"content":" .withSex(\"M\").withStatus(\"PENDING\").build();","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"jovantanyk"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withNric(\"S9839571A\")","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"alex-setyawan"},"content":" .withName(\"Daniel Meier\").withPhone(\"87652533\").withDateOfBirth(\"2001-01-01\")","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"jovantanyk"},"content":" .withAddress(\"10th street\").withSex(\"M\").withStatus(\"HEALTHY\").build();","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"jovantanyk"},"content":" public static final Person ELLE \u003d new PersonBuilder().withNric(\"S8913957B\")","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"alex-setyawan"},"content":" .withName(\"Elle Meyer\").withPhone(\"94821224\").withDateOfBirth(\"2001-01-01\")","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"jovantanyk"},"content":" .withAddress(\"michegan ave\").withSex(\"F\").withStatus(\"UNWELL\").build();","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"jovantanyk"},"content":" public static final Person FIONA \u003d new PersonBuilder().withNric(\"T0536171Z\")","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"alex-setyawan"},"content":" .withName(\"Fiona Kunz\").withPhone(\"94820427\").withDateOfBirth(\"2001-01-01\")","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"jovantanyk"},"content":" .withAddress(\"little tokyo\").withSex(\"F\").withStatus(\"PENDING\").build();","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"jovantanyk"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withNric(\"T0829102Z\")","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"alex-setyawan"},"content":" .withName(\"George Best\").withPhone(\"94824421\").withDateOfBirth(\"2001-01-01\")","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"jovantanyk"},"content":" .withAddress(\"4th street\").withSex(\"M\").withStatus(\"HEALTHY\").build();","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"laney0808"},"content":" //TODO add date of birth and some other optional fields","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":53,"author":{"gitId":"jovantanyk"},"content":" public static final Person HOON \u003d new PersonBuilder().withNric(\"T0123071C\").withName(\"Hoon Meier\")","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"alex-setyawan"},"content":" .withPhone(\"81482424\").withAddress(\"little india\").withDateOfBirth(\"2001-01-01\")","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"jovantanyk"},"content":" .withSex(\"M\").withStatus(\"HEALTHY\").build();","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"jovantanyk"},"content":" public static final Person IDA \u003d new PersonBuilder().withNric(\"T0239521A\").withName(\"Ida Mueller\")","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"alex-setyawan"},"content":" .withPhone(\"84820131\").withAddress(\"chicago ave\").withDateOfBirth(\"2001-01-01\")","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"jovantanyk"},"content":" .withSex(\"F\").withStatus(\"PENDING\").build();","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22"},{"lineNumber":61,"author":{"gitId":"jovantanyk"},"content":" public static final Person AMY \u003d new PersonBuilder().withNric(VALID_NRIC_AMY).withName(VALID_NAME_AMY)","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"alex-setyawan"},"content":" .withPhone(VALID_PHONE_AMY).withAddress(VALID_ADDRESS_AMY).withDateOfBirth(VALID_DATEOFBIRTH_AMY)","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"jovantanyk"},"content":" .withSex(VALID_SEX_AMY).withStatus(VALID_STATUS_AMY).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"jovantanyk"},"content":" public static final Person BOB \u003d new PersonBuilder().withNric(VALID_NRIC_BOB).withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"alex-setyawan"},"content":" .withPhone(VALID_PHONE_BOB).withAddress(VALID_ADDRESS_BOB).withDateOfBirth(VALID_DATEOFBIRTH_BOB)","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"jovantanyk"},"content":" .withSex(VALID_SEX_BOB).withStatus(VALID_STATUS_BOB).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"laney0808"},"content":" //TODO: person builder should be able to build a person with all fields (status)","lastModifiedDate":"2024-03-23"},{"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":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":73,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":76,"author":{"gitId":"laney0808"},"content":" public static ImmuniMate getTypicalAddressBook() {","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"laney0808"},"content":" ImmuniMate ab \u003d new ImmuniMate();","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10"},{"lineNumber":79,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04"},{"lineNumber":87,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13"}],"authorContributionMap":{"alex-setyawan":13,"jovantanyk":28,"laney0808":5,"-":41}},{"path":"src/test/java/seedu/address/testutil/UpdatePersonDescriptorBuilder.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":"alex-setyawan"},"content":"import seedu.address.logic.commands.UpdateCommand.UpdatePersonDescriptor;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-12-23"},{"lineNumber":9,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.model.person.DateOfBirth;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-12-23"},{"lineNumber":11,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-12-23"},{"lineNumber":14,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.model.person.Sex;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"alex-setyawan"},"content":"import seedu.address.model.person.Status;","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-12-23"},{"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":"alex-setyawan"},"content":"public class UpdatePersonDescriptorBuilder {","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":23,"author":{"gitId":"alex-setyawan"},"content":" private UpdatePersonDescriptor descriptor;","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":25,"author":{"gitId":"alex-setyawan"},"content":" public UpdatePersonDescriptorBuilder() {","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"alex-setyawan"},"content":" descriptor \u003d new UpdatePersonDescriptor();","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":29,"author":{"gitId":"alex-setyawan"},"content":" public UpdatePersonDescriptorBuilder(UpdatePersonDescriptor descriptor) {","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"alex-setyawan"},"content":" this.descriptor \u003d new UpdatePersonDescriptor(descriptor);","lastModifiedDate":"2024-03-20"},{"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":"alex-setyawan"},"content":" public UpdatePersonDescriptorBuilder(Person person) {","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"alex-setyawan"},"content":" descriptor \u003d new UpdatePersonDescriptor();","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"alex-setyawan"},"content":" descriptor.setNric(person.getNric());","lastModifiedDate":"2024-03-20"},{"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.setAddress(person.getAddress());","lastModifiedDate":"2017-06-21"},{"lineNumber":42,"author":{"gitId":"alex-setyawan"},"content":" descriptor.setDateOfBirth(person.getDateOfBirth());","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"alex-setyawan"},"content":" descriptor.setSex(person.getSex());","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"alex-setyawan"},"content":" descriptor.setStatus(person.getStatus());","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"alex-setyawan"},"content":" /*","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":" descriptor.setTags(person.getTags());","lastModifiedDate":"2017-06-21"},{"lineNumber":47,"author":{"gitId":"alex-setyawan"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"alex-setyawan"},"content":" descriptor.setCountry(person.getCountry());","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"alex-setyawan"},"content":" descriptor.setAllergies(person.getAllergies());","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"alex-setyawan"},"content":" descriptor.setBloodType(person.getBloodType());","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"alex-setyawan"},"content":" descriptor.setCondition(person.getCondition());","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"alex-setyawan"},"content":" descriptor.setDateOfAdmission(person.getDateOfAdmission());","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"alex-setyawan"},"content":" descriptor.setDiagnosis(person.getDiagnosis());","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"alex-setyawan"},"content":" descriptor.setSymptom(person.getSymptom());","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"alex-setyawan"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"alex-setyawan"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"alex-setyawan"},"content":" public UpdatePersonDescriptorBuilder withNric(String nric) {","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"alex-setyawan"},"content":" descriptor.setNric(new Nric(nric));","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"alex-setyawan"},"content":" return this;","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":70,"author":{"gitId":"alex-setyawan"},"content":" public UpdatePersonDescriptorBuilder withName(String name) {","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","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":"-"},"content":" * Sets the {@code Phone} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":78,"author":{"gitId":"alex-setyawan"},"content":" public UpdatePersonDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"-"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2017-12-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":86,"author":{"gitId":"alex-setyawan"},"content":" public UpdatePersonDescriptorBuilder withDateOfBirth(String dateOfBirth) {","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"alex-setyawan"},"content":" descriptor.setDateOfBirth(new DateOfBirth(dateOfBirth));","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":94,"author":{"gitId":"alex-setyawan"},"content":" public UpdatePersonDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"-"},"content":" descriptor.setAddress(new Address(address));","lastModifiedDate":"2017-12-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":99,"author":{"gitId":"alex-setyawan"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":100,"author":{"gitId":"alex-setyawan"},"content":" * Sets the {@code Address} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-21"},{"lineNumber":101,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":102,"author":{"gitId":"alex-setyawan"},"content":" public UpdatePersonDescriptorBuilder withSex(String sex) {","lastModifiedDate":"2024-03-21"},{"lineNumber":103,"author":{"gitId":"alex-setyawan"},"content":" descriptor.setSex(new Sex(sex));","lastModifiedDate":"2024-03-21"},{"lineNumber":104,"author":{"gitId":"alex-setyawan"},"content":" return this;","lastModifiedDate":"2024-03-21"},{"lineNumber":105,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":106,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":107,"author":{"gitId":"alex-setyawan"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":108,"author":{"gitId":"alex-setyawan"},"content":" * Sets the {@code Address} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-21"},{"lineNumber":109,"author":{"gitId":"alex-setyawan"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":110,"author":{"gitId":"alex-setyawan"},"content":" public UpdatePersonDescriptorBuilder withStatus(String status) {","lastModifiedDate":"2024-03-21"},{"lineNumber":111,"author":{"gitId":"alex-setyawan"},"content":" descriptor.setStatus(new Status(status));","lastModifiedDate":"2024-03-21"},{"lineNumber":112,"author":{"gitId":"alex-setyawan"},"content":" return this;","lastModifiedDate":"2024-03-21"},{"lineNumber":113,"author":{"gitId":"alex-setyawan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":114,"author":{"gitId":"alex-setyawan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":115,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":116,"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":117,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":118,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":119,"author":{"gitId":"alex-setyawan"},"content":" public UpdatePersonDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2024-03-20"},{"lineNumber":120,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2017-12-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2017-12-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":125,"author":{"gitId":"alex-setyawan"},"content":" public UpdatePersonDescriptor build() {","lastModifiedDate":"2024-03-20"},{"lineNumber":126,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":128,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"alex-setyawan":59,"-":69}}] diff --git a/AY2324S2-CS2103T-T08-1_tp_master/commits.json b/AY2324S2-CS2103T-T08-1_tp_master/commits.json index da44ff5a..9c42a07f 100644 --- a/AY2324S2-CS2103T-T08-1_tp_master/commits.json +++ b/AY2324S2-CS2103T-T08-1_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"alex-setyawan":[{"date":"2024-03-11","commitResults":[{"hash":"fd4c3c90aae18fa24d38d3ca1c3b857010a931a1","isMergeCommit":false,"messageTitle":"Add alex-setyawan.png.jpg, update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":4}}}]},{"date":"2024-03-12","commitResults":[{"hash":"bb29c5df635918608c2f2250f17ff1f9650116c6","isMergeCommit":false,"messageTitle":"Rename alex-setyawan.png","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-16","commitResults":[{"hash":"d8f9b201a5435b8fb206d8ddada825a8ba8b854b","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":164,"deletions":28}}}]},{"date":"2024-03-18","commitResults":[{"hash":"5e8c4097538f5a4743cb40a397411ebc3531f4c6","isMergeCommit":false,"messageTitle":"Edit existing model classes and add unit tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":113,"deletions":42},"test-code":{"insertions":513,"deletions":5}}},{"hash":"b7a5925fddb5131748d260a6ed61518cc5272a5f","isMergeCommit":false,"messageTitle":"Add JavaDocs for Person.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":0}}}]},{"date":"2024-03-19","commitResults":[{"hash":"32cdd461c71bdfdb6591ce54e507cbd6cd1ef833","isMergeCommit":false,"messageTitle":"Edit PersonBuilder.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":104,"deletions":19},"test-code":{"insertions":126,"deletions":14}}},{"hash":"1e7aa85cc9c8d94628293994ccdfef150a012016","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into edit-PersonBuilder","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"50392e0e0699b6368d3e8a845f68cc38eb826004","isMergeCommit":true,"messageTitle":"Merge branch \u0027temp\u0027 into edit-PersonBuilder","messageBody":"# Conflicts:\n#\tsrc/main/java/seedu/address/logic/parser/ParserUtil.java\n#\tsrc/main/java/seedu/address/model/person/Person.java\n","fileTypesAndContributionMap":{}},{"hash":"d0fb8149f1ff6d32fe9a97ed474d46213c907f5a","isMergeCommit":false,"messageTitle":"Edit UpdateCommand.java and related classes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":347},"test-code":{"insertions":9,"deletions":401}}},{"hash":"98e57fa73682a08a3ee29f37f409983687043f98","isMergeCommit":false,"messageTitle":"Edit import statements in PersonBuilder.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":16,"deletions":6}}}]},{"date":"2024-03-20","commitResults":[{"hash":"0f2184b4b2e8e12fecdab1e8433f73efd672ca0a","isMergeCommit":false,"messageTitle":"Edit classes relevant to updating patient profiles","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":582,"deletions":3},"test-code":{"insertions":392,"deletions":0}}},{"hash":"616f519e1b28d37fe8ae9d7bbc01b0b9f8ba2cc6","isMergeCommit":true,"messageTitle":"Merge branch \u0027update-fields\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"34ad41606de003e1b54500d699a5d0105ed04d5b","isMergeCommit":false,"messageTitle":"Edit classes related to finding patient profiles","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":119,"deletions":6}}},{"hash":"6e63d27ea910e77e574220cbbc9b5b1c0a06d584","isMergeCommit":true,"messageTitle":"Merge branch \u0027find-profiles\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"01c5cf56ddcfada3d189ba2cd11f9af6d19e75aa","isMergeCommit":true,"messageTitle":"Merge branch \u0027find-profiles\u0027 into update-fields","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"2362e895a436231f076bc852e59f1d75d57e5c15","isMergeCommit":false,"messageTitle":"Revert \"Merge branch \u0027find-profiles\u0027 into update-fields\"","messageBody":"This reverts commit 01c5cf56ddcfada3d189ba2cd11f9af6d19e75aa, reversing\nchanges made to 0f2184b4b2e8e12fecdab1e8433f73efd672ca0a.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":119}}},{"hash":"17e9717168bb6038a7c22f6d739b40b7bcaee51d","isMergeCommit":false,"messageTitle":"Changed most other instances of \u0027edit\u0027 to \u0027update\u0027 for files relevant to updating profiles","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":2},"other":{"insertions":45,"deletions":32},"test-code":{"insertions":54,"deletions":45}}},{"hash":"1581a9f4813864eb955ac91c383bb249f241b01e","isMergeCommit":true,"messageTitle":"Merge branch \u0027update-fields\u0027 into find-profiles","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"3bda0eb7e702efdf785a947811658a32b4fc4313","isMergeCommit":false,"messageTitle":"Edit test classes for finding profiles","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":43,"deletions":8},"test-code":{"insertions":90,"deletions":41}}},{"hash":"7af08c7d0a62f5268c386e53654ca04c34889b93","isMergeCommit":true,"messageTitle":"Merge branch \u0027backup\u0027 into update-fields","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"1ad22dc0b3631c21c856e32cddae6730adab9006","isMergeCommit":true,"messageTitle":"Merge branch \u0027backup\u0027 into find-profiles","messageBody":"# Conflicts:\n#\tsrc/test/java/seedu/address/testutil/TypicalPersons.java\n","fileTypesAndContributionMap":{}},{"hash":"920022aaf1250b09b840dc8efcc4c45da45fa401","isMergeCommit":false,"messageTitle":"Edit DeleteCommand.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"75ef99b162755365e11221203008b4691548dd9d","isMergeCommit":false,"messageTitle":"Edit import statements for UpdateCommand.java and UpdateCommandParser.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":32,"deletions":2}}},{"hash":"068eb72314a7debb005f80d36c8c1c584e52cf82","isMergeCommit":false,"messageTitle":"Reduce line length for UpdateCommandParser.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":5}}},{"hash":"c83fba88b7067b00e7f32d7976a9c7b272abaebf","isMergeCommit":false,"messageTitle":"Resolved some more checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":17,"deletions":9}}},{"hash":"eba52e59583e8444d2cab7f3fec8e4767f976b20","isMergeCommit":false,"messageTitle":"Edit TypicalPersons.java and CommandTestUtil.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":106,"deletions":34}}},{"hash":"bfbbd2aa7da4c6a2b2f176b54c7b765611ff551e","isMergeCommit":false,"messageTitle":"Edit UpdateCommand.java, UpdateCommandParser.java and CommandTestUtil.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":41,"deletions":23},"test-code":{"insertions":2,"deletions":2}}},{"hash":"6c7331677acbe839c6701e0374ab2dc574dfd61c","isMergeCommit":false,"messageTitle":"Revert TypicalPersons.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":28,"deletions":71}}},{"hash":"a9c1668f2b66fc3cf1c8f047643c76bc993194aa","isMergeCommit":false,"messageTitle":"Revert TypicalPersons.java again","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":14}}},{"hash":"fe05621186e1acf6bf587cbc45abef9081d72021","isMergeCommit":true,"messageTitle":"Merge branch \u0027backup\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"56b58bd5888d022568bd688a849a54d8e8f94ec5","isMergeCommit":false,"messageTitle":"Fix checkstyle for AddressBookParser.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"e089a3a6ceaaf2220734b0dbf691ebf91c080bb3","isMergeCommit":true,"messageTitle":"Merge branch \u0027update-fields\u0027 into backup","messageBody":"# Conflicts:\n#\tsrc/test/java/seedu/address/logic/commands/UpdateCommandTest.java\n#\tsrc/test/java/seedu/address/testutil/TypicalPersons.java\n","fileTypesAndContributionMap":{}},{"hash":"17bbce95b694d8b60c0fb222e1346f42ba16e953","isMergeCommit":false,"messageTitle":"Edited files failing testcases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":11},"test-code":{"insertions":94,"deletions":57}}},{"hash":"a3076ae5fd40e91853c56d789f0e15589274109a","isMergeCommit":true,"messageTitle":"Merge pull request #67 from laney0808/fix-non-compilling-code","messageBody":"Remove duplicated `BloodType.orElse()` method","fileTypesAndContributionMap":{}}]},{"date":"2024-03-23","commitResults":[{"hash":"f6bf6041ea825134144ca9302ba9264c3525ed95","isMergeCommit":true,"messageTitle":"Merge pull request #77 from laney0808/update-create-commands","messageBody":"Change hasPerson() implementation in UpdateCommand.execute()","fileTypesAndContributionMap":{}},{"hash":"3378d4248a3c457a247600ea85fb4759d2974a46","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into find-profiles-tests","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a432afac5dd9c0a9e2e16fbdfb645a59b7b0e488","isMergeCommit":false,"messageTitle":"Fix classes failing gradle tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":5},"test-code":{"insertions":9,"deletions":6}}},{"hash":"21c816b397bce2887dba2e3c31ec6dc9cbd2255f","isMergeCommit":false,"messageTitle":"Fix failing ImmuniMateParserTests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":0},"test-code":{"insertions":11,"deletions":9}}},{"hash":"6a74f1047643e828980763cbdd685b836cfa3786","isMergeCommit":false,"messageTitle":"Edit UpdateCommandParserTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":71,"deletions":75}}}]}],"jovantanyk":[{"date":"2024-02-25","commitResults":[{"hash":"733a435bf841b82ab36468dade45930c71c94aaf","isMergeCommit":false,"messageTitle":"docs: init documentation","messageBody":"Update AboutUs, UserGuide, Index.md to reflect team\n","fileTypesAndContributionMap":{"docs":{"insertions":18,"deletions":26}}},{"hash":"caf9d2762e8a08a111cdc5ceac922605e121b66f","isMergeCommit":true,"messageTitle":"Merge pull request #1 from jovantanyk/master","messageBody":"docs: init documentation\r\nUpdate initial AboutUs and UserGuide documentation","fileTypesAndContributionMap":{}}]},{"date":"2024-02-27","commitResults":[{"hash":"4ebc8dcdb515de3c47e73952446c90d026a88bbb","isMergeCommit":true,"messageTitle":"Merge pull request #2 from laney0808/master","messageBody":"Add to AboutUs.md in related section","fileTypesAndContributionMap":{}}]},{"date":"2024-03-11","commitResults":[{"hash":"d8be1a7ad1be7c907d59927efd84ecf70410a54f","isMergeCommit":true,"messageTitle":"Merge pull request #5 from NatLeong/add-NatLeong-info","messageBody":"Add to AboutUs.md in related section","fileTypesAndContributionMap":{}}]},{"date":"2024-03-12","commitResults":[{"hash":"7528d33c820748d28b3e7b97fa43560a36d5fa62","isMergeCommit":false,"messageTitle":"fix: removed EchoCommand","messageBody":"Removed EchoCommand from Add-UI Branch\n","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":14}}},{"hash":"ea8ebe81ee14c14c6f5a4045779f833ecb5f14f1","isMergeCommit":false,"messageTitle":"fix: removed old EchoCommand.java","messageBody":"Removed Old EchoCommand.java\n","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":28}}},{"hash":"012da1c7e7420850ffc14b719af9c1cba54edffd","isMergeCommit":true,"messageTitle":"Merge pull request #10 from laney0808/add-ui","messageBody":"Add Ui.Png to ReadMe.md\r\nThis change improves visibility and understanding of our application\r\nthrough the use of a mockup diagram","fileTypesAndContributionMap":{}},{"hash":"1bec6f66882cf095696b180e943a0bdc04233863","isMergeCommit":false,"messageTitle":"fix: update AboutUs.md","messageBody":"Update AboutUs.md to reflect roles and images of team members\n","fileTypesAndContributionMap":{"docs":{"insertions":56,"deletions":10}}},{"hash":"c63e62c7f3aefd273e32589599a3a36c37313b1e","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-fix-about_us","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f18ae1b2bc571b7105269c42acc948e3971a6663","isMergeCommit":true,"messageTitle":"Merge pull request #7 from alex-setyawan/AboutUs","messageBody":"Add alex-setyawan info and image\r\nUpdate AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"9db87673b075290638dae85c3ee0cc782cb3ee42","isMergeCommit":false,"messageTitle":"docs: update README.md","messageBody":"Update README.md information to better convey the details of the app to potential contributors and users\n","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":9}}},{"hash":"89ea52913568a7b3cd87f39aa9e2dfb3dd962f42","isMergeCommit":false,"messageTitle":"fix: update ci banner","messageBody":"Update CI Banner to point to team repo\n","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"9ef6b5ce86e8ab9f1d6b99a95daf48ac4d64bb47","isMergeCommit":true,"messageTitle":"Merge pull request #13 from NatLeong/branch-update-GUI","messageBody":"Update UI.png in Readme.md to reflect updated UI mockup","fileTypesAndContributionMap":{}}]},{"date":"2024-03-17","commitResults":[{"hash":"708d8981d3c9575f2069d37b491569248c693a5c","isMergeCommit":true,"messageTitle":"Merge pull request #28 from alex-setyawan/developer-guide","messageBody":"Update DeveloperGuide.md","fileTypesAndContributionMap":{}},{"hash":"8343f68f564c7de3a604082df71b5680d881f8b1","isMergeCommit":true,"messageTitle":"Merge pull request #29 from NatLeong/branch-update-MenuBar","messageBody":"Update Menu Bar colour and content","fileTypesAndContributionMap":{}},{"hash":"21db447346f4c4b7c53ced902d10a1db16f8f2c6","isMergeCommit":false,"messageTitle":"feat: update ResultDisplay to ResultPanel","messageBody":"Update ResultDisplay to ResultPanel\nResultPanel has more space for future command output, including support for lists and images.\nThis Version of ResultPanel is only a foundation and supports Text Based outputs\n","fileTypesAndContributionMap":{"functional-code":{"insertions":66,"deletions":57},"other":{"insertions":7,"deletions":7}}},{"hash":"6e17be848d208c7a75e19c98a0b9a082e1dea15b","isMergeCommit":false,"messageTitle":"feat: update CommandBox with search icon","messageBody":"Update CommandBox with new Search Icon. CommandBox is now a HBox with an ImageView and TextField children\n","fileTypesAndContributionMap":{"functional-code":{"insertions":18,"deletions":3}}},{"hash":"4be5d7dad589bc11f044f088e9db33dff70aa605","isMergeCommit":false,"messageTitle":"feat: update font in TextField","messageBody":"Update font-family and font-size in TextField.\nRemove underline in TextField to blend with background\n","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4}}},{"hash":"f6a8d893ced97c5398d6eae007118fdd095f9209","isMergeCommit":false,"messageTitle":"feat: update Status and Sex","messageBody":"Update Status.java and Sex.java.\nUpdate ParserUtils and Person.java to fit new fields\n","fileTypesAndContributionMap":{"functional-code":{"insertions":99,"deletions":90}}},{"hash":"350fb7fdd0d12080318d004e577480e27aa8447f","isMergeCommit":true,"messageTitle":"Merge pull request #32 from laney0808/add-dg","messageBody":"Add user stories and use cases","fileTypesAndContributionMap":{}},{"hash":"a56821916aeb57ace542eed51c2eb547a35229ad","isMergeCommit":false,"messageTitle":"fix: update for checkstyle","messageBody":"Update MainWindow.java to fix checkstyle errors\n","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":4}}},{"hash":"cab9d9c6d4dfd629000839fd1f12f661d035827f","isMergeCommit":true,"messageTitle":"Merge pull request #35 from NatLeong/branch-update-personcard","messageBody":"Update Person Card","fileTypesAndContributionMap":{}}]},{"date":"2024-03-18","commitResults":[{"hash":"2fa97f45ebcacfd07ff13ce195b1688d662efc60","isMergeCommit":false,"messageTitle":"fix: update size of Person and Result Panel","messageBody":"Update padding and width of Person Panel to avoid truncation.\nUpdate MainWindow minimum sizes to account for adjusted children sizes\n","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":6}}},{"hash":"ec3900b7fa2c782327e23970ec8e5f335decc808","isMergeCommit":true,"messageTitle":"Merge pull request #37 from NatLeong/branch-update-window","messageBody":"Updated window title","fileTypesAndContributionMap":{}},{"hash":"81534381c26b13a61c78970bf5662f53935d212b","isMergeCommit":true,"messageTitle":"Merge pull request #39 from NatLeong/fix-personcard-grid","messageBody":"Fix: person card grid ratio for more space for the name","fileTypesAndContributionMap":{}},{"hash":"7f5e7412457d877ed85f73a1a02356c2548b217d","isMergeCommit":false,"messageTitle":"fix: revert Status and Sex Enums","messageBody":"Update Status.java and Sex.java to use Enums as per previous commit.\nUpdate SampleDataUtil to reflect new fields\n","fileTypesAndContributionMap":{"functional-code":{"insertions":46,"deletions":36}}},{"hash":"1d2af9ab8f9653931a0ab9a4c6f1fa98e52341ec","isMergeCommit":false,"messageTitle":"fix: update models and JsonAdaptedPerson","messageBody":"Change public variables in Person Field classes to private.\nUpdate JsonAdaptedPerson to account for new fields\n","fileTypesAndContributionMap":{"functional-code":{"insertions":88,"deletions":94}}},{"hash":"c2554d74309d70cd717acce38b50cdcaf9ee1083","isMergeCommit":false,"messageTitle":"fix: remove old fields and format test cases","messageBody":"Update Test Cases to reflect new fields, and remove old email and tags fields.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":109,"deletions":100},"test-code":{"insertions":197,"deletions":140}}},{"hash":"079895d5a8e0f1bef9fb26ed7f416337a1152ff1","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-fields","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"66d00075ac99b8104a8c9bec26e1edf8d2fb8e16","isMergeCommit":true,"messageTitle":"Merge pull request #33 from laney0808/add-fields","messageBody":"Add new Fields and Model Classes based on User Stories.\r\nUpdate Model and Logic to reflect new variables","fileTypesAndContributionMap":{}},{"hash":"638b04c1edfeb4ca114388f028c6f9eeb0182b8f","isMergeCommit":false,"messageTitle":"fix: remove unnecessary PersonCard fields","messageBody":"Remove old PersonCard fields to resolve compile time errors\n","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":6}}},{"hash":"583d38e66d3868153195a8cbcde2a8c18497c74d","isMergeCommit":true,"messageTitle":"Merge pull request #43 from jovantanyk/bug-person-ui","messageBody":"fix: remove unnecessary PersonCard fields","fileTypesAndContributionMap":{}},{"hash":"e18610632338bab41a327524c698effbc3841980","isMergeCommit":true,"messageTitle":"Merge pull request #41 from NatLeong/fix-commandbox-colour","messageBody":"Update CommandBox Color to fit MockUp design better","fileTypesAndContributionMap":{}}]},{"date":"2024-03-19","commitResults":[{"hash":"983fc0ee435c729bc54f1892728042bc42e5a8b8","isMergeCommit":true,"messageTitle":"Merge pull request #45 from laney0808/add-new-parsers","messageBody":"Add optional field setters, key words and parsers","fileTypesAndContributionMap":{}},{"hash":"cbb7cc544d72815a4502b9e77f363189dc4309ea","isMergeCommit":true,"messageTitle":"Merge pull request #49 from alex-setyawan/edit-PersonBuilder","messageBody":"Edit PersonBuilder.java","fileTypesAndContributionMap":{}},{"hash":"03498c409dc9aad6a1ad88c6591d415b4bbf0922","isMergeCommit":true,"messageTitle":"Merge pull request #51 from NatLeong/update-statuscircle-colour","messageBody":"Update nric, sex and status circle","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"de86e72c96af9a4cc83646088ff4708c96797cc0","isMergeCommit":false,"messageTitle":"fix: update BloodType.java","messageBody":"Update BloodType.java to match JsonAdaptedPerson expected output\n","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":13}}},{"hash":"99b2bb7651ec7c7136d7c24f60aa016d480968ee","isMergeCommit":false,"messageTitle":"fix: update TypicalPersons to fix Test errors","messageBody":"TypicalPersons had invalid values which caused Test Cases to fail.\nUpdate TypicalPersons and Default Values to pass test cases.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":7},"test-code":{"insertions":6,"deletions":6}}},{"hash":"9436d09533c81812487b9079bbbb10f26a5d7cfd","isMergeCommit":false,"messageTitle":"fix: update DateOfBirth regex","messageBody":"Update DateOfBirth Regex and solve Null Test Cases\n","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":3,"deletions":3}}},{"hash":"20dee78f8daa706d594933afad86d612ce5c3eae","isMergeCommit":false,"messageTitle":"bug: fix NullPointerException in optional fields","messageBody":"Source.getEmail() returns a null, using toString() on a null causes the Exception.\nSince Optional.ofNullable only handles the null cases within its parameters, to handle null pointer safely, convert it to string outside of ofNullable()\nRemove Optional Values in Person.equals() to avoid null pointer\n","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":9}}},{"hash":"e743c02050654eaf3f530aa287e6614ed92494b7","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-jsonadaptedperson-optional","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b274fc518988bb8291a568b5c0defc9e45e0720f","isMergeCommit":true,"messageTitle":"Merge pull request #52 from NatLeong/update-jsonadaptedperson-optional","messageBody":"Update JsonAdaptedPerson for optional fields","fileTypesAndContributionMap":{}},{"hash":"3b05263d2e1116e09a4938366681f720f5703c2e","isMergeCommit":false,"messageTitle":"fix: Remove optional fields from Test","messageBody":"Removed Optional Fields from Test Cases.\n","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":5}}},{"hash":"bf9c2e066960564e87a1837a5f28acb4f0b3da13","isMergeCommit":false,"messageTitle":"fix: clean up ParserUtil.java","messageBody":"Changed ParserUtil.java parser methods that have incorrect Class messages\n","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":6}}},{"hash":"f4c17959b137d1af4795335f7c8344a79dbbf7a2","isMergeCommit":false,"messageTitle":"fix: update test cases and change BloodType to String","messageBody":"Add FindCommandTest and fix test case errors.\nUpdate BloodType to be a String instead of an Enum\n","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":46},"test-code":{"insertions":47,"deletions":49}}},{"hash":"07059716f551fd250bbded08586fc40f3fc9e3f4","isMergeCommit":true,"messageTitle":"Merge pull request #59 from NatLeong/add-read-command","messageBody":"Init Read Command ","fileTypesAndContributionMap":{}}]},{"date":"2024-03-22","commitResults":[{"hash":"066d15b6de2aa74ea75b50667f1aa203f5d66b1f","isMergeCommit":true,"messageTitle":"Merge pull request #57 from laney0808/update-create-commands","messageBody":"Update create command and delete command","fileTypesAndContributionMap":{}},{"hash":"ef3ff3c81dc7663f44717bd39a2a9205b3e7148f","isMergeCommit":false,"messageTitle":"fix: update Person equals method","messageBody":"Update Person::equals to only include mandatory values\n","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":11}}},{"hash":"f150eff90351920d1fdd2db144b2528b3505c1bc","isMergeCommit":false,"messageTitle":"fix: update PersonUtil::getPersonDetails","messageBody":"Update getPersonDetails to only return mandatory values. This solves the ImmuniMateParser error of test persons only using mandatory values\n","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":3}}}]},{"date":"2024-03-23","commitResults":[{"hash":"dbe6fa5808860ef0a1d4994ffc31e3948ca3da84","isMergeCommit":true,"messageTitle":"Merge pull request #76 from NatLeong/add-readCommand-tests","messageBody":"Add tests for some methods in ReadCommand and ReadCommandParser","fileTypesAndContributionMap":{}},{"hash":"5cf86ae08ed210c0259c94952622e0558b425106","isMergeCommit":false,"messageTitle":"docs: update ModelClass diagram","messageBody":"Update ModelClass diagram to Include new Optional Variables\n","fileTypesAndContributionMap":{"docs":{"insertions":16,"deletions":5}}},{"hash":"2c44441c67cd32d8eabe25f62ffbc03345ceb907","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-uml-diagram","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ba7b05a8519caf2f7131d1a2ba36ac7fc6ce65b1","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into fix-storage","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"92cd80f46d438ac4d8f417358f8809840e0fcc7c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-create-commands","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a1b2dc1b2bd615de0d93ca3d23c0b9ae52579060","isMergeCommit":true,"messageTitle":"Merge pull request #82 from laney0808/update-create-commands","messageBody":"Fix test cases and test cases fails related to create and delete","fileTypesAndContributionMap":{}},{"hash":"19c140492acfb0ae1e493277a2277dc69f8db99f","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027 into fix-storage","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-24","commitResults":[{"hash":"db359dd8eda4b0697a881e997680562a4d40a450","isMergeCommit":false,"messageTitle":"feat: update Storage files","messageBody":"Update Json Classes to accept new format.\nUpdate data json files to account for new format.\nCreate OptionalSerializer to force null values to be formatted properly\n","fileTypesAndContributionMap":{"functional-code":{"insertions":38,"deletions":7}}},{"hash":"500287901a9707b43bf345acb7c804941cb637a5","isMergeCommit":true,"messageTitle":"Merge pull request #78 from jovantanyk/update-uml-diagram","messageBody":"docs: update ModelClass diagram","tags":["v1.2"],"fileTypesAndContributionMap":{}}]}],"laney0808":[{"date":"2024-02-26","commitResults":[{"hash":"c3744696b026b0a03dc79c4054a6a80230e0df2f","isMergeCommit":false,"messageTitle":"Add to AboutUs.md in related section Add zhang_lanyu.md file","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":48,"deletions":2}}}]},{"date":"2024-02-29","commitResults":[{"hash":"95fb477481e4a491a7c2a98021246491feca1f8e","isMergeCommit":false,"messageTitle":"AboutUs.md: adjust the size of profile photo","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"93319d6899b149c8bfa6ad813f7c2ff96b262ccc","isMergeCommit":true,"messageTitle":"Merge pull request #3 from laney0808/master","messageBody":"AboutUs.md: adjust the size of profile photo","fileTypesAndContributionMap":{}}]},{"date":"2024-03-11","commitResults":[{"hash":"9baccdce3cabbfc3669f15615fa8a73975384768","isMergeCommit":false,"messageTitle":"Add new command EchoCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":42,"deletions":0},"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-12","commitResults":[{"hash":"ca5fc2834ce3190f9f77ff6a54d60d6490082c34","isMergeCommit":false,"messageTitle":"Add Ui.png and JohnDoeUi.png in docs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-14","commitResults":[{"hash":"aa4cc314c5b7762ed9914d61ed63a4fc08a0c86e","isMergeCommit":false,"messageTitle":"Add class NRIC","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":62,"deletions":0}}},{"hash":"3dfd4586b8b81fb6cc329209c54f6f36b4189f9e","isMergeCommit":false,"messageTitle":"Add to do for adding fields","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":3}}}]},{"date":"2024-03-17","commitResults":[{"hash":"d63b4403b0800cc4326478c515d2df4a8836ad89","isMergeCommit":false,"messageTitle":"Add Allergies, BloodType, Condition, Country, DateOfAdmission, DateOfBirth, Diagnosis, NRIC, Status, Symptom classes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":308,"deletions":0}}},{"hash":"a335c16f4e95e39adc652e54cefc48bf47192510","isMergeCommit":false,"messageTitle":"Add user stories and use cases","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":147,"deletions":11}}},{"hash":"ce7f559f8ff4d4071505a66049cc4daa269bdc41","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-dg","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"487c0e6b714c8616c941b0e09f4dd111cfad79a2","isMergeCommit":false,"messageTitle":"Add checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":69,"deletions":28},"other":{"insertions":14,"deletions":10}}},{"hash":"f938a4c6e657b76b5d7a163f79ff57610366ddb2","isMergeCommit":false,"messageTitle":"Change names to follow checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":6}}},{"hash":"582ac7f2f31a8235a321b7650acdc58684b20ba1","isMergeCommit":false,"messageTitle":"Add fields in Person","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":8}}},{"hash":"e011d5c7ba4c20822746f1c63290998372836e1d","isMergeCommit":false,"messageTitle":"Add new fields in parser and json adapted person","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":248,"deletions":97}}},{"hash":"154fde92eb574616906fc2598de3ba07eb225cbf","isMergeCommit":false,"messageTitle":"Revert back the Sex and Status classes Change PersonBuilder class with new fields","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":116,"deletions":0},"test-code":{"insertions":13,"deletions":1}}}]},{"date":"2024-03-19","commitResults":[{"hash":"93c67733abb54eda9b0414708d38742af37c5091","isMergeCommit":false,"messageTitle":"Add optional field setters, key words and and parsers","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":244,"deletions":31}}},{"hash":"2bd9a96d9bf6eee5ec09c4fc6cd5241b64ac70b1","isMergeCommit":false,"messageTitle":"Add PREFIX_STATUS to Guard Clause in AddCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-20","commitResults":[{"hash":"9cfd178c5b23b5db712141e7572f46c83de5b2ff","isMergeCommit":false,"messageTitle":"AddCommand: Rename AddCommand to CreateCommand ModelManager: refactor \"addressbook\" to \"immunimate\" DeleteCommand: implement DeleteCommand using NRIC to identify delete target","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":127,"deletions":100},"other":{"insertions":84,"deletions":61},"test-code":{"insertions":70,"deletions":70}}}]},{"date":"2024-03-21","commitResults":[{"hash":"1ff80e430524d630ddb8c4b4acfa3cb97214c2ca","isMergeCommit":false,"messageTitle":"Implement DeleteCommandTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":47,"deletions":15},"test-code":{"insertions":64,"deletions":50}}},{"hash":"1f9fb797c25384553b53d970d50d2d4ba8169650","isMergeCommit":false,"messageTitle":"Add Person.createPersonWithNric() method to create person instance with only NRIC Add NricContainsKeywords class under Person Pass all test cases for DeleteCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":47,"deletions":4},"test-code":{"insertions":21,"deletions":14}}},{"hash":"1ec624d796d27b98cb9529f4c3e9c35e2320b3ff","isMergeCommit":false,"messageTitle":"Pass DeleteCommandParserTest Rename AddressBookParser to ImmuniMateParser Pass ImmuniMateParserTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":5},"other":{"insertions":7,"deletions":7},"test-code":{"insertions":12,"deletions":3}}},{"hash":"3e190a3ae658f2e0983c5adc8eb0fde7d78a2645","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into find-profiles","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b5da2ef98bad0cb0a7875076c3e3daeb16b0a41e","isMergeCommit":true,"messageTitle":"Merge pull request #56 from alex-setyawan/find-profiles","messageBody":"Find profiles","fileTypesAndContributionMap":{}},{"hash":"029dc7f89461e9c0262fd2c673e7440ff371a8e2","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-fields","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a3308b7e03942cc69dc225900ed769e964c85f7f","isMergeCommit":true,"messageTitle":"Merge pull request #55 from alex-setyawan/update-fields","messageBody":"Update fields\r\nfix #18 ","fileTypesAndContributionMap":{}},{"hash":"4c4b96909469675c097835b56fe30985012e6633","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into checkstyle","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9c496e83fd1d4b46756fe9cabde13116a8e948e8","isMergeCommit":true,"messageTitle":"Merge pull request #63 from alex-setyawan/checkstyle","messageBody":"Fix checkstyle for AddressBookParser.java","fileTypesAndContributionMap":{}},{"hash":"26b58660b50fecb4b1363f09b6fe1d17459ee8c7","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into backup","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"5a20a8f79fa87da06a2d20f4e61f5806c36f6cf7","isMergeCommit":true,"messageTitle":"Merge pull request #66 from alex-setyawan/backup","messageBody":"Comment off some test cases to reduce error","fileTypesAndContributionMap":{}},{"hash":"a2555518edc16aba798281a491000d5b599049f9","isMergeCommit":false,"messageTitle":"Remove duplicated `BloodType.orElse()` method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":10}}},{"hash":"57780e2c0e7b82ec781ae7fd091d4479df364e4b","isMergeCommit":false,"messageTitle":"CommandTestUtil: Change blood type to single string","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0},"test-code":{"insertions":2,"deletions":2}}},{"hash":"2221cf37206f7ea7093bf30b347908be883536dd","isMergeCommit":false,"messageTitle":"Person.java: fix equal() to include all fields to make sure equal() implies identical copies","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":2}}},{"hash":"4fcc8f81f5add70087d36a87690e76e3cde5d020","isMergeCommit":true,"messageTitle":"Merge pull request #71 from laney0808/fix-non-compilling-code","messageBody":"Fix miscellaneous details","fileTypesAndContributionMap":{}},{"hash":"723ce738428e0557021b318a4892cc3e99723973","isMergeCommit":false,"messageTitle":"Fix DateOfBirth constructor","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":0}}}]},{"date":"2024-03-22","commitResults":[{"hash":"4efc4217dea1a128ce7f852c05da2410f45a13ae","isMergeCommit":true,"messageTitle":"Merge branch \u0027fix-merge-conflicts\u0027 into update-create-commands","messageBody":"# Conflicts:\n#\tsrc/main/java/seedu/address/logic/Messages.java\n#\tsrc/main/java/seedu/address/logic/commands/DeleteCommand.java\n#\tsrc/main/java/seedu/address/logic/commands/EditCommand.java\n#\tsrc/main/java/seedu/address/model/person/Person.java\n#\tsrc/test/java/seedu/address/logic/LogicManagerTest.java\n#\tsrc/test/java/seedu/address/logic/commands/DeleteCommandTest.java\n#\tsrc/test/java/seedu/address/logic/commands/UpdateCommandTest.java\n#\tsrc/test/java/seedu/address/model/person/PersonTest.java\n#\tsrc/test/java/seedu/address/testutil/PersonUtil.java\n#\tsrc/test/java/seedu/address/testutil/TypicalPersons.java\n","fileTypesAndContributionMap":{}},{"hash":"e1ea532ac8ba847b7c5b844cd0e2c7d1de23b2cf","isMergeCommit":false,"messageTitle":"Change argument to hasPerson to Person.createPersonWithNric","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":4}}},{"hash":"276e7951ae937427c4dbd457d102a2c6e8cce1f8","isMergeCommit":true,"messageTitle":"Merge pull request #75 from laney0808/update-create-commands","messageBody":"Change argument to hasPerson to Person.createPersonWithNric","fileTypesAndContributionMap":{}},{"hash":"e99bb38b6975dd4236992b034d490570203952a9","isMergeCommit":false,"messageTitle":"Change hasPerson() implementation in UpdateCommand.execute()","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":17}}}]},{"date":"2024-03-23","commitResults":[{"hash":"d83c2849d29ab2ce5844b9f125054d70a82a8861","isMergeCommit":false,"messageTitle":"Fix test cases and test cases fails related to create command and delete command","messageBody":"Message: Standardize Person Not Found message\nConsider optional fields\n\nDeleteCommand: use MESSAGE_PERSON_NOT_FOUND instead\n\nCreateCommandParser: Check duplicates for PREFIX_STATUS\n\nPerson: Add isValidPerson() method; Adjust equals() to account for null optional fields\n\nCommandTestUtil: Add all necessary DESC\n\nCreateCommandParserTest: Make compatible to current structure\n\nPersonBuilder: Consider all mandatory fields only\n","fileTypesAndContributionMap":{"functional-code":{"insertions":52,"deletions":20},"test-code":{"insertions":73,"deletions":48}}},{"hash":"f15b505f991d0e929336895ecd4f2937365c9eaf","isMergeCommit":true,"messageTitle":"Merge pull request #79 from alex-setyawan/fix-tests","messageBody":"Fix tests","fileTypesAndContributionMap":{}}]}],"NatLeong":[{"date":"2024-03-09","commitResults":[{"hash":"c386c3bcdae04d4e821aea1ae88d746dc67e551d","isMergeCommit":false,"messageTitle":"Add to AboutUs.md in related section","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":48,"deletions":2}}}]},{"date":"2024-03-12","commitResults":[{"hash":"b94ef15921b71a0eb45824bf9f8c7566d631f677","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-fix-about_us","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"221305492efe1a94676da610a1d9633a6abb8c27","isMergeCommit":true,"messageTitle":"Merge pull request #11 from jovantanyk/branch-fix-about_us","messageBody":"fix: update AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"16a7c32abfc1e4cabdeb5d4619281b63c8f473b2","isMergeCommit":true,"messageTitle":"Merge pull request #12 from jovantanyk/branch-update-docs","messageBody":"docs: update user documentation","fileTypesAndContributionMap":{}}]},{"date":"2024-03-15","commitResults":[{"hash":"9fa48173c8c18c76c69385fcd357b24ad84c85ad","isMergeCommit":false,"messageTitle":"Update Menu Bar colour and content","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":19}}}]},{"date":"2024-03-17","commitResults":[{"hash":"22c3442d76ce73d53ae9eb12072e8fcce66466c4","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into feature-update-results-box","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"21b0a0daa8e64bf604950a005fcb0bfc87c534dd","isMergeCommit":true,"messageTitle":"Merge pull request #30 from jovantanyk/feature-update-results-box","messageBody":"feat: update ResultDisplay to ResultPanel","fileTypesAndContributionMap":{}},{"hash":"3a671fec3f02977c2aa7349b00682178b5fe52aa","isMergeCommit":false,"messageTitle":"Updated person card to include name, sex and nric. Initial set up for status icon.","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":47,"deletions":38}}},{"hash":"34e4e49129a2ac1c15ffe539937689187f7d75b5","isMergeCommit":false,"messageTitle":"Removed unused imports","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":3}}},{"hash":"e044eee786e7080e48acf88600316c2879215db0","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into feature-update-command-box","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8e2967d96f58b15442caf38d02d2e43f2bf894b8","isMergeCommit":true,"messageTitle":"Merge pull request #34 from jovantanyk/feature-update-command-box","messageBody":"Update Command Box UI","fileTypesAndContributionMap":{}},{"hash":"9b3df03e780ee0cfdcf14a381779456ccdab58a4","isMergeCommit":false,"messageTitle":"Updated window title","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-18","commitResults":[{"hash":"66ee6eede9fafc0f76f160a8c13027a4ae6f2a80","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into fix-update-person-panel","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"7935e3a778d62897a288497facd7903f29fe111a","isMergeCommit":true,"messageTitle":"Merge pull request #38 from jovantanyk/fix-update-person-panel","messageBody":"fix: update size of Person and Result Panel","fileTypesAndContributionMap":{}},{"hash":"122cb9ae67c2638f596f11f41d55c2887186d5f2","isMergeCommit":false,"messageTitle":"Fix: person card grid ratio for more space for the name","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"5846f45058a9e060f53c0a772f34ecd3d4d6298d","isMergeCommit":false,"messageTitle":"Fix person card size to fit new main window size","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":2}}},{"hash":"bb057979e2b118ec2018aa51192d6a51f966b7f1","isMergeCommit":false,"messageTitle":"Changed command box colour","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-19","commitResults":[{"hash":"93814162e4f677974278b643fd0d70860b99fcbb","isMergeCommit":false,"messageTitle":"Update nric, sex and status circle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":39,"deletions":6}}},{"hash":"c95e15fa8f1be01895074de422d17253b8a1d2ca","isMergeCommit":false,"messageTitle":"Fix indentation error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":13}}},{"hash":"e8dbe8fc699b9935e8ef48e1914a412a115dc40b","isMergeCommit":false,"messageTitle":"Fix checkstyle error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"9341aeaea3c264397f4c4d6115a9b7482e0e09a0","isMergeCommit":false,"messageTitle":"Fix Javadoc error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}}]},{"date":"2024-03-20","commitResults":[{"hash":"f1a2618f38787662635693cbad3bdb54081e85fd","isMergeCommit":false,"messageTitle":"Update for email only","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":3},"test-code":{"insertions":17,"deletions":22}}},{"hash":"81cee060e6e1d30b67495251a5a09a6c62e903f6","isMergeCommit":false,"messageTitle":"Update for country only","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":3},"test-code":{"insertions":22,"deletions":16}}},{"hash":"daf346b59a3d98a6e54b8bea73539d72417a6bf8","isMergeCommit":false,"messageTitle":"Update for allergies only","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":1},"test-code":{"insertions":29,"deletions":15}}},{"hash":"28cd69dd2683ff799729f85f9f9339b83d88e672","isMergeCommit":false,"messageTitle":"Update for blood type only","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":1},"test-code":{"insertions":15,"deletions":14}}},{"hash":"99255106071c1a51e5c3fe244c593ba238193619","isMergeCommit":false,"messageTitle":"Update for condition only","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":2},"test-code":{"insertions":17,"deletions":14}}},{"hash":"024864e06eaddc640e020a97ae251d6feea48892","isMergeCommit":false,"messageTitle":"Update for date of admission only","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":4},"test-code":{"insertions":15,"deletions":15}}},{"hash":"6d750fed1d7281783707b572226c5388066a1772","isMergeCommit":false,"messageTitle":"Update for diagnosis only","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":1},"test-code":{"insertions":16,"deletions":15}}},{"hash":"b9911944498fa1e7397b8ef0918b7d53e8e8c382","isMergeCommit":false,"messageTitle":"Update for symptom only","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":1},"test-code":{"insertions":29,"deletions":14}}},{"hash":"fa47bdc3292ee825da534abda93884bfc4d1465f","isMergeCommit":false,"messageTitle":"Fix split for blood type string","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-21","commitResults":[{"hash":"b582a4ec14f8717784b388391018acbd449d5cc6","isMergeCommit":true,"messageTitle":"Merge pull request #54 from jovantanyk/fix-json-testcases","messageBody":"fix: Remove optional fields from Test","fileTypesAndContributionMap":{}},{"hash":"bc41f3ed65ac7f663c7fcf5bf492a270bdb34332","isMergeCommit":false,"messageTitle":"Add read command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":158,"deletions":0}}},{"hash":"76abd3a6844f9065a740f6ebce538b4b984076ac","isMergeCommit":true,"messageTitle":"Merge pull request #72 from laney0808/fix-non-compilling-code","messageBody":"Fix DateOfBirth constructor","fileTypesAndContributionMap":{}}]},{"date":"2024-03-22","commitResults":[{"hash":"9e8deffacb8080ac1bd0db95c5dccc06a6a731b1","isMergeCommit":false,"messageTitle":"Add tests for some methods in ReadCommand and ReadCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":2},"test-code":{"insertions":80,"deletions":0}}},{"hash":"d4108b7ea75c1875b49bee9f4e8d04432c3f49e6","isMergeCommit":false,"messageTitle":"Remove unused imports","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":10}}}]},{"date":"2024-03-23","commitResults":[{"hash":"ceff0cca9902c7b35ae590d491b625e4a0c60e00","isMergeCommit":false,"messageTitle":"Fix to public class","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-24","commitResults":[{"hash":"05860706cd63706eccc71f7153224c00b2bd0984","isMergeCommit":true,"messageTitle":"Merge pull request #85 from jovantanyk/fix-storage","messageBody":"Fix storage","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"alex-setyawan":{"docs":81,"functional-code":699,"test-code":862},"jovantanyk":{"docs":90,"functional-code":324,"test-code":177},"laney0808":{"docs":160,"functional-code":998,"test-code":179},"NatLeong":{"docs":48,"functional-code":308,"test-code":134}},"authorContributionVariance":{"alex-setyawan":116350.87,"jovantanyk":26206.578,"laney0808":48193.645,"NatLeong":6081.971},"authorDisplayNameMap":{"alex-setyawan":"CS2103T-T08-1 ALEX..AWAN","jovantanyk":"CS2103T-T08-1 TAN ..OVAN","laney0808":"CS2103T-T08-1 ZHAN..ANYU","NatLeong":"CS2103T-T08-1 LEON..ALIE"}} +{"authorDailyContributionsMap":{"alex-setyawan":[{"date":"2024-03-11","commitResults":[{"hash":"fd4c3c90aae18fa24d38d3ca1c3b857010a931a1","isMergeCommit":false,"messageTitle":"Add alex-setyawan.png.jpg, update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":4}}}]},{"date":"2024-03-12","commitResults":[{"hash":"bb29c5df635918608c2f2250f17ff1f9650116c6","isMergeCommit":false,"messageTitle":"Rename alex-setyawan.png","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-16","commitResults":[{"hash":"d8f9b201a5435b8fb206d8ddada825a8ba8b854b","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":164,"deletions":28}}}]},{"date":"2024-03-18","commitResults":[{"hash":"5e8c4097538f5a4743cb40a397411ebc3531f4c6","isMergeCommit":false,"messageTitle":"Edit existing model classes and add unit tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":113,"deletions":42},"test-code":{"insertions":513,"deletions":5}}},{"hash":"b7a5925fddb5131748d260a6ed61518cc5272a5f","isMergeCommit":false,"messageTitle":"Add JavaDocs for Person.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":0}}}]},{"date":"2024-03-19","commitResults":[{"hash":"32cdd461c71bdfdb6591ce54e507cbd6cd1ef833","isMergeCommit":false,"messageTitle":"Edit PersonBuilder.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":104,"deletions":19},"test-code":{"insertions":126,"deletions":14}}},{"hash":"1e7aa85cc9c8d94628293994ccdfef150a012016","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into edit-PersonBuilder","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"50392e0e0699b6368d3e8a845f68cc38eb826004","isMergeCommit":true,"messageTitle":"Merge branch \u0027temp\u0027 into edit-PersonBuilder","messageBody":"# Conflicts:\n#\tsrc/main/java/seedu/address/logic/parser/ParserUtil.java\n#\tsrc/main/java/seedu/address/model/person/Person.java\n","fileTypesAndContributionMap":{}},{"hash":"d0fb8149f1ff6d32fe9a97ed474d46213c907f5a","isMergeCommit":false,"messageTitle":"Edit UpdateCommand.java and related classes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":347},"test-code":{"insertions":9,"deletions":401}}},{"hash":"98e57fa73682a08a3ee29f37f409983687043f98","isMergeCommit":false,"messageTitle":"Edit import statements in PersonBuilder.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":16,"deletions":6}}}]},{"date":"2024-03-20","commitResults":[{"hash":"0f2184b4b2e8e12fecdab1e8433f73efd672ca0a","isMergeCommit":false,"messageTitle":"Edit classes relevant to updating patient profiles","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":582,"deletions":3},"test-code":{"insertions":392,"deletions":0}}},{"hash":"616f519e1b28d37fe8ae9d7bbc01b0b9f8ba2cc6","isMergeCommit":true,"messageTitle":"Merge branch \u0027update-fields\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"34ad41606de003e1b54500d699a5d0105ed04d5b","isMergeCommit":false,"messageTitle":"Edit classes related to finding patient profiles","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":119,"deletions":6}}},{"hash":"6e63d27ea910e77e574220cbbc9b5b1c0a06d584","isMergeCommit":true,"messageTitle":"Merge branch \u0027find-profiles\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"01c5cf56ddcfada3d189ba2cd11f9af6d19e75aa","isMergeCommit":true,"messageTitle":"Merge branch \u0027find-profiles\u0027 into update-fields","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"2362e895a436231f076bc852e59f1d75d57e5c15","isMergeCommit":false,"messageTitle":"Revert \"Merge branch \u0027find-profiles\u0027 into update-fields\"","messageBody":"This reverts commit 01c5cf56ddcfada3d189ba2cd11f9af6d19e75aa, reversing\nchanges made to 0f2184b4b2e8e12fecdab1e8433f73efd672ca0a.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":119}}},{"hash":"17e9717168bb6038a7c22f6d739b40b7bcaee51d","isMergeCommit":false,"messageTitle":"Changed most other instances of \u0027edit\u0027 to \u0027update\u0027 for files relevant to updating profiles","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":2},"other":{"insertions":45,"deletions":32},"test-code":{"insertions":54,"deletions":45}}},{"hash":"1581a9f4813864eb955ac91c383bb249f241b01e","isMergeCommit":true,"messageTitle":"Merge branch \u0027update-fields\u0027 into find-profiles","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"3bda0eb7e702efdf785a947811658a32b4fc4313","isMergeCommit":false,"messageTitle":"Edit test classes for finding profiles","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":43,"deletions":8},"test-code":{"insertions":90,"deletions":41}}},{"hash":"7af08c7d0a62f5268c386e53654ca04c34889b93","isMergeCommit":true,"messageTitle":"Merge branch \u0027backup\u0027 into update-fields","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"1ad22dc0b3631c21c856e32cddae6730adab9006","isMergeCommit":true,"messageTitle":"Merge branch \u0027backup\u0027 into find-profiles","messageBody":"# Conflicts:\n#\tsrc/test/java/seedu/address/testutil/TypicalPersons.java\n","fileTypesAndContributionMap":{}},{"hash":"920022aaf1250b09b840dc8efcc4c45da45fa401","isMergeCommit":false,"messageTitle":"Edit DeleteCommand.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"75ef99b162755365e11221203008b4691548dd9d","isMergeCommit":false,"messageTitle":"Edit import statements for UpdateCommand.java and UpdateCommandParser.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":32,"deletions":2}}},{"hash":"068eb72314a7debb005f80d36c8c1c584e52cf82","isMergeCommit":false,"messageTitle":"Reduce line length for UpdateCommandParser.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":5}}},{"hash":"c83fba88b7067b00e7f32d7976a9c7b272abaebf","isMergeCommit":false,"messageTitle":"Resolved some more checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":17,"deletions":9}}},{"hash":"eba52e59583e8444d2cab7f3fec8e4767f976b20","isMergeCommit":false,"messageTitle":"Edit TypicalPersons.java and CommandTestUtil.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":106,"deletions":34}}},{"hash":"bfbbd2aa7da4c6a2b2f176b54c7b765611ff551e","isMergeCommit":false,"messageTitle":"Edit UpdateCommand.java, UpdateCommandParser.java and CommandTestUtil.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":41,"deletions":23},"test-code":{"insertions":2,"deletions":2}}},{"hash":"6c7331677acbe839c6701e0374ab2dc574dfd61c","isMergeCommit":false,"messageTitle":"Revert TypicalPersons.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":28,"deletions":71}}},{"hash":"a9c1668f2b66fc3cf1c8f047643c76bc993194aa","isMergeCommit":false,"messageTitle":"Revert TypicalPersons.java again","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":14}}},{"hash":"fe05621186e1acf6bf587cbc45abef9081d72021","isMergeCommit":true,"messageTitle":"Merge branch \u0027backup\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"56b58bd5888d022568bd688a849a54d8e8f94ec5","isMergeCommit":false,"messageTitle":"Fix checkstyle for AddressBookParser.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"e089a3a6ceaaf2220734b0dbf691ebf91c080bb3","isMergeCommit":true,"messageTitle":"Merge branch \u0027update-fields\u0027 into backup","messageBody":"# Conflicts:\n#\tsrc/test/java/seedu/address/logic/commands/UpdateCommandTest.java\n#\tsrc/test/java/seedu/address/testutil/TypicalPersons.java\n","fileTypesAndContributionMap":{}},{"hash":"17bbce95b694d8b60c0fb222e1346f42ba16e953","isMergeCommit":false,"messageTitle":"Edited files failing testcases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":11},"test-code":{"insertions":94,"deletions":57}}},{"hash":"a3076ae5fd40e91853c56d789f0e15589274109a","isMergeCommit":true,"messageTitle":"Merge pull request #67 from laney0808/fix-non-compilling-code","messageBody":"Remove duplicated `BloodType.orElse()` method","fileTypesAndContributionMap":{}}]},{"date":"2024-03-23","commitResults":[{"hash":"f6bf6041ea825134144ca9302ba9264c3525ed95","isMergeCommit":true,"messageTitle":"Merge pull request #77 from laney0808/update-create-commands","messageBody":"Change hasPerson() implementation in UpdateCommand.execute()","fileTypesAndContributionMap":{}},{"hash":"3378d4248a3c457a247600ea85fb4759d2974a46","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into find-profiles-tests","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a432afac5dd9c0a9e2e16fbdfb645a59b7b0e488","isMergeCommit":false,"messageTitle":"Fix classes failing gradle tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":5},"test-code":{"insertions":9,"deletions":6}}},{"hash":"21c816b397bce2887dba2e3c31ec6dc9cbd2255f","isMergeCommit":false,"messageTitle":"Fix failing ImmuniMateParserTests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":0},"test-code":{"insertions":11,"deletions":9}}},{"hash":"6a74f1047643e828980763cbdd685b836cfa3786","isMergeCommit":false,"messageTitle":"Edit UpdateCommandParserTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":71,"deletions":75}}}]}],"jovantanyk":[{"date":"2024-02-25","commitResults":[{"hash":"733a435bf841b82ab36468dade45930c71c94aaf","isMergeCommit":false,"messageTitle":"docs: init documentation","messageBody":"Update AboutUs, UserGuide, Index.md to reflect team\n","fileTypesAndContributionMap":{"docs":{"insertions":18,"deletions":26}}},{"hash":"caf9d2762e8a08a111cdc5ceac922605e121b66f","isMergeCommit":true,"messageTitle":"Merge pull request #1 from jovantanyk/master","messageBody":"docs: init documentation\r\nUpdate initial AboutUs and UserGuide documentation","fileTypesAndContributionMap":{}}]},{"date":"2024-02-27","commitResults":[{"hash":"4ebc8dcdb515de3c47e73952446c90d026a88bbb","isMergeCommit":true,"messageTitle":"Merge pull request #2 from laney0808/master","messageBody":"Add to AboutUs.md in related section","fileTypesAndContributionMap":{}}]},{"date":"2024-03-11","commitResults":[{"hash":"d8be1a7ad1be7c907d59927efd84ecf70410a54f","isMergeCommit":true,"messageTitle":"Merge pull request #5 from NatLeong/add-NatLeong-info","messageBody":"Add to AboutUs.md in related section","fileTypesAndContributionMap":{}}]},{"date":"2024-03-12","commitResults":[{"hash":"7528d33c820748d28b3e7b97fa43560a36d5fa62","isMergeCommit":false,"messageTitle":"fix: removed EchoCommand","messageBody":"Removed EchoCommand from Add-UI Branch\n","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":14}}},{"hash":"ea8ebe81ee14c14c6f5a4045779f833ecb5f14f1","isMergeCommit":false,"messageTitle":"fix: removed old EchoCommand.java","messageBody":"Removed Old EchoCommand.java\n","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":28}}},{"hash":"012da1c7e7420850ffc14b719af9c1cba54edffd","isMergeCommit":true,"messageTitle":"Merge pull request #10 from laney0808/add-ui","messageBody":"Add Ui.Png to ReadMe.md\r\nThis change improves visibility and understanding of our application\r\nthrough the use of a mockup diagram","fileTypesAndContributionMap":{}},{"hash":"1bec6f66882cf095696b180e943a0bdc04233863","isMergeCommit":false,"messageTitle":"fix: update AboutUs.md","messageBody":"Update AboutUs.md to reflect roles and images of team members\n","fileTypesAndContributionMap":{"docs":{"insertions":56,"deletions":10}}},{"hash":"c63e62c7f3aefd273e32589599a3a36c37313b1e","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-fix-about_us","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f18ae1b2bc571b7105269c42acc948e3971a6663","isMergeCommit":true,"messageTitle":"Merge pull request #7 from alex-setyawan/AboutUs","messageBody":"Add alex-setyawan info and image\r\nUpdate AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"9db87673b075290638dae85c3ee0cc782cb3ee42","isMergeCommit":false,"messageTitle":"docs: update README.md","messageBody":"Update README.md information to better convey the details of the app to potential contributors and users\n","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":9}}},{"hash":"89ea52913568a7b3cd87f39aa9e2dfb3dd962f42","isMergeCommit":false,"messageTitle":"fix: update ci banner","messageBody":"Update CI Banner to point to team repo\n","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"9ef6b5ce86e8ab9f1d6b99a95daf48ac4d64bb47","isMergeCommit":true,"messageTitle":"Merge pull request #13 from NatLeong/branch-update-GUI","messageBody":"Update UI.png in Readme.md to reflect updated UI mockup","fileTypesAndContributionMap":{}}]},{"date":"2024-03-17","commitResults":[{"hash":"708d8981d3c9575f2069d37b491569248c693a5c","isMergeCommit":true,"messageTitle":"Merge pull request #28 from alex-setyawan/developer-guide","messageBody":"Update DeveloperGuide.md","fileTypesAndContributionMap":{}},{"hash":"8343f68f564c7de3a604082df71b5680d881f8b1","isMergeCommit":true,"messageTitle":"Merge pull request #29 from NatLeong/branch-update-MenuBar","messageBody":"Update Menu Bar colour and content","fileTypesAndContributionMap":{}},{"hash":"21db447346f4c4b7c53ced902d10a1db16f8f2c6","isMergeCommit":false,"messageTitle":"feat: update ResultDisplay to ResultPanel","messageBody":"Update ResultDisplay to ResultPanel\nResultPanel has more space for future command output, including support for lists and images.\nThis Version of ResultPanel is only a foundation and supports Text Based outputs\n","fileTypesAndContributionMap":{"functional-code":{"insertions":66,"deletions":57},"other":{"insertions":7,"deletions":7}}},{"hash":"6e17be848d208c7a75e19c98a0b9a082e1dea15b","isMergeCommit":false,"messageTitle":"feat: update CommandBox with search icon","messageBody":"Update CommandBox with new Search Icon. CommandBox is now a HBox with an ImageView and TextField children\n","fileTypesAndContributionMap":{"functional-code":{"insertions":18,"deletions":3}}},{"hash":"4be5d7dad589bc11f044f088e9db33dff70aa605","isMergeCommit":false,"messageTitle":"feat: update font in TextField","messageBody":"Update font-family and font-size in TextField.\nRemove underline in TextField to blend with background\n","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4}}},{"hash":"f6a8d893ced97c5398d6eae007118fdd095f9209","isMergeCommit":false,"messageTitle":"feat: update Status and Sex","messageBody":"Update Status.java and Sex.java.\nUpdate ParserUtils and Person.java to fit new fields\n","fileTypesAndContributionMap":{"functional-code":{"insertions":99,"deletions":90}}},{"hash":"350fb7fdd0d12080318d004e577480e27aa8447f","isMergeCommit":true,"messageTitle":"Merge pull request #32 from laney0808/add-dg","messageBody":"Add user stories and use cases","fileTypesAndContributionMap":{}},{"hash":"a56821916aeb57ace542eed51c2eb547a35229ad","isMergeCommit":false,"messageTitle":"fix: update for checkstyle","messageBody":"Update MainWindow.java to fix checkstyle errors\n","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":4}}},{"hash":"cab9d9c6d4dfd629000839fd1f12f661d035827f","isMergeCommit":true,"messageTitle":"Merge pull request #35 from NatLeong/branch-update-personcard","messageBody":"Update Person Card","fileTypesAndContributionMap":{}}]},{"date":"2024-03-18","commitResults":[{"hash":"2fa97f45ebcacfd07ff13ce195b1688d662efc60","isMergeCommit":false,"messageTitle":"fix: update size of Person and Result Panel","messageBody":"Update padding and width of Person Panel to avoid truncation.\nUpdate MainWindow minimum sizes to account for adjusted children sizes\n","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":6}}},{"hash":"ec3900b7fa2c782327e23970ec8e5f335decc808","isMergeCommit":true,"messageTitle":"Merge pull request #37 from NatLeong/branch-update-window","messageBody":"Updated window title","fileTypesAndContributionMap":{}},{"hash":"81534381c26b13a61c78970bf5662f53935d212b","isMergeCommit":true,"messageTitle":"Merge pull request #39 from NatLeong/fix-personcard-grid","messageBody":"Fix: person card grid ratio for more space for the name","fileTypesAndContributionMap":{}},{"hash":"7f5e7412457d877ed85f73a1a02356c2548b217d","isMergeCommit":false,"messageTitle":"fix: revert Status and Sex Enums","messageBody":"Update Status.java and Sex.java to use Enums as per previous commit.\nUpdate SampleDataUtil to reflect new fields\n","fileTypesAndContributionMap":{"functional-code":{"insertions":46,"deletions":36}}},{"hash":"1d2af9ab8f9653931a0ab9a4c6f1fa98e52341ec","isMergeCommit":false,"messageTitle":"fix: update models and JsonAdaptedPerson","messageBody":"Change public variables in Person Field classes to private.\nUpdate JsonAdaptedPerson to account for new fields\n","fileTypesAndContributionMap":{"functional-code":{"insertions":88,"deletions":94}}},{"hash":"c2554d74309d70cd717acce38b50cdcaf9ee1083","isMergeCommit":false,"messageTitle":"fix: remove old fields and format test cases","messageBody":"Update Test Cases to reflect new fields, and remove old email and tags fields.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":109,"deletions":100},"test-code":{"insertions":197,"deletions":140}}},{"hash":"079895d5a8e0f1bef9fb26ed7f416337a1152ff1","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-fields","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"66d00075ac99b8104a8c9bec26e1edf8d2fb8e16","isMergeCommit":true,"messageTitle":"Merge pull request #33 from laney0808/add-fields","messageBody":"Add new Fields and Model Classes based on User Stories.\r\nUpdate Model and Logic to reflect new variables","fileTypesAndContributionMap":{}},{"hash":"638b04c1edfeb4ca114388f028c6f9eeb0182b8f","isMergeCommit":false,"messageTitle":"fix: remove unnecessary PersonCard fields","messageBody":"Remove old PersonCard fields to resolve compile time errors\n","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":6}}},{"hash":"583d38e66d3868153195a8cbcde2a8c18497c74d","isMergeCommit":true,"messageTitle":"Merge pull request #43 from jovantanyk/bug-person-ui","messageBody":"fix: remove unnecessary PersonCard fields","fileTypesAndContributionMap":{}},{"hash":"e18610632338bab41a327524c698effbc3841980","isMergeCommit":true,"messageTitle":"Merge pull request #41 from NatLeong/fix-commandbox-colour","messageBody":"Update CommandBox Color to fit MockUp design better","fileTypesAndContributionMap":{}}]},{"date":"2024-03-19","commitResults":[{"hash":"983fc0ee435c729bc54f1892728042bc42e5a8b8","isMergeCommit":true,"messageTitle":"Merge pull request #45 from laney0808/add-new-parsers","messageBody":"Add optional field setters, key words and parsers","fileTypesAndContributionMap":{}},{"hash":"cbb7cc544d72815a4502b9e77f363189dc4309ea","isMergeCommit":true,"messageTitle":"Merge pull request #49 from alex-setyawan/edit-PersonBuilder","messageBody":"Edit PersonBuilder.java","fileTypesAndContributionMap":{}},{"hash":"03498c409dc9aad6a1ad88c6591d415b4bbf0922","isMergeCommit":true,"messageTitle":"Merge pull request #51 from NatLeong/update-statuscircle-colour","messageBody":"Update nric, sex and status circle","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"de86e72c96af9a4cc83646088ff4708c96797cc0","isMergeCommit":false,"messageTitle":"fix: update BloodType.java","messageBody":"Update BloodType.java to match JsonAdaptedPerson expected output\n","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":13}}},{"hash":"99b2bb7651ec7c7136d7c24f60aa016d480968ee","isMergeCommit":false,"messageTitle":"fix: update TypicalPersons to fix Test errors","messageBody":"TypicalPersons had invalid values which caused Test Cases to fail.\nUpdate TypicalPersons and Default Values to pass test cases.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":7},"test-code":{"insertions":6,"deletions":6}}},{"hash":"9436d09533c81812487b9079bbbb10f26a5d7cfd","isMergeCommit":false,"messageTitle":"fix: update DateOfBirth regex","messageBody":"Update DateOfBirth Regex and solve Null Test Cases\n","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":3,"deletions":3}}},{"hash":"20dee78f8daa706d594933afad86d612ce5c3eae","isMergeCommit":false,"messageTitle":"bug: fix NullPointerException in optional fields","messageBody":"Source.getEmail() returns a null, using toString() on a null causes the Exception.\nSince Optional.ofNullable only handles the null cases within its parameters, to handle null pointer safely, convert it to string outside of ofNullable()\nRemove Optional Values in Person.equals() to avoid null pointer\n","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":9}}},{"hash":"e743c02050654eaf3f530aa287e6614ed92494b7","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-jsonadaptedperson-optional","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b274fc518988bb8291a568b5c0defc9e45e0720f","isMergeCommit":true,"messageTitle":"Merge pull request #52 from NatLeong/update-jsonadaptedperson-optional","messageBody":"Update JsonAdaptedPerson for optional fields","fileTypesAndContributionMap":{}},{"hash":"3b05263d2e1116e09a4938366681f720f5703c2e","isMergeCommit":false,"messageTitle":"fix: Remove optional fields from Test","messageBody":"Removed Optional Fields from Test Cases.\n","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":5}}},{"hash":"bf9c2e066960564e87a1837a5f28acb4f0b3da13","isMergeCommit":false,"messageTitle":"fix: clean up ParserUtil.java","messageBody":"Changed ParserUtil.java parser methods that have incorrect Class messages\n","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":6}}},{"hash":"f4c17959b137d1af4795335f7c8344a79dbbf7a2","isMergeCommit":false,"messageTitle":"fix: update test cases and change BloodType to String","messageBody":"Add FindCommandTest and fix test case errors.\nUpdate BloodType to be a String instead of an Enum\n","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":46},"test-code":{"insertions":47,"deletions":49}}},{"hash":"07059716f551fd250bbded08586fc40f3fc9e3f4","isMergeCommit":true,"messageTitle":"Merge pull request #59 from NatLeong/add-read-command","messageBody":"Init Read Command ","fileTypesAndContributionMap":{}}]},{"date":"2024-03-22","commitResults":[{"hash":"066d15b6de2aa74ea75b50667f1aa203f5d66b1f","isMergeCommit":true,"messageTitle":"Merge pull request #57 from laney0808/update-create-commands","messageBody":"Update create command and delete command","fileTypesAndContributionMap":{}},{"hash":"ef3ff3c81dc7663f44717bd39a2a9205b3e7148f","isMergeCommit":false,"messageTitle":"fix: update Person equals method","messageBody":"Update Person::equals to only include mandatory values\n","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":11}}},{"hash":"f150eff90351920d1fdd2db144b2528b3505c1bc","isMergeCommit":false,"messageTitle":"fix: update PersonUtil::getPersonDetails","messageBody":"Update getPersonDetails to only return mandatory values. This solves the ImmuniMateParser error of test persons only using mandatory values\n","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":3}}}]},{"date":"2024-03-23","commitResults":[{"hash":"dbe6fa5808860ef0a1d4994ffc31e3948ca3da84","isMergeCommit":true,"messageTitle":"Merge pull request #76 from NatLeong/add-readCommand-tests","messageBody":"Add tests for some methods in ReadCommand and ReadCommandParser","fileTypesAndContributionMap":{}},{"hash":"5cf86ae08ed210c0259c94952622e0558b425106","isMergeCommit":false,"messageTitle":"docs: update ModelClass diagram","messageBody":"Update ModelClass diagram to Include new Optional Variables\n","fileTypesAndContributionMap":{"docs":{"insertions":16,"deletions":5}}},{"hash":"2c44441c67cd32d8eabe25f62ffbc03345ceb907","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-uml-diagram","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ba7b05a8519caf2f7131d1a2ba36ac7fc6ce65b1","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into fix-storage","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"92cd80f46d438ac4d8f417358f8809840e0fcc7c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-create-commands","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a1b2dc1b2bd615de0d93ca3d23c0b9ae52579060","isMergeCommit":true,"messageTitle":"Merge pull request #82 from laney0808/update-create-commands","messageBody":"Fix test cases and test cases fails related to create and delete","fileTypesAndContributionMap":{}},{"hash":"19c140492acfb0ae1e493277a2277dc69f8db99f","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027 into fix-storage","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-24","commitResults":[{"hash":"db359dd8eda4b0697a881e997680562a4d40a450","isMergeCommit":false,"messageTitle":"feat: update Storage files","messageBody":"Update Json Classes to accept new format.\nUpdate data json files to account for new format.\nCreate OptionalSerializer to force null values to be formatted properly\n","fileTypesAndContributionMap":{"functional-code":{"insertions":38,"deletions":7}}},{"hash":"500287901a9707b43bf345acb7c804941cb637a5","isMergeCommit":true,"messageTitle":"Merge pull request #78 from jovantanyk/update-uml-diagram","messageBody":"docs: update ModelClass diagram","tags":["v1.2"],"fileTypesAndContributionMap":{}}]}],"laney0808":[{"date":"2024-02-26","commitResults":[{"hash":"c3744696b026b0a03dc79c4054a6a80230e0df2f","isMergeCommit":false,"messageTitle":"Add to AboutUs.md in related section Add zhang_lanyu.md file","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":48,"deletions":2}}}]},{"date":"2024-02-29","commitResults":[{"hash":"95fb477481e4a491a7c2a98021246491feca1f8e","isMergeCommit":false,"messageTitle":"AboutUs.md: adjust the size of profile photo","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"93319d6899b149c8bfa6ad813f7c2ff96b262ccc","isMergeCommit":true,"messageTitle":"Merge pull request #3 from laney0808/master","messageBody":"AboutUs.md: adjust the size of profile photo","fileTypesAndContributionMap":{}}]},{"date":"2024-03-11","commitResults":[{"hash":"9baccdce3cabbfc3669f15615fa8a73975384768","isMergeCommit":false,"messageTitle":"Add new command EchoCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":42,"deletions":0},"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-12","commitResults":[{"hash":"ca5fc2834ce3190f9f77ff6a54d60d6490082c34","isMergeCommit":false,"messageTitle":"Add Ui.png and JohnDoeUi.png in docs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-14","commitResults":[{"hash":"aa4cc314c5b7762ed9914d61ed63a4fc08a0c86e","isMergeCommit":false,"messageTitle":"Add class NRIC","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":62,"deletions":0}}},{"hash":"3dfd4586b8b81fb6cc329209c54f6f36b4189f9e","isMergeCommit":false,"messageTitle":"Add to do for adding fields","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":3}}}]},{"date":"2024-03-17","commitResults":[{"hash":"d63b4403b0800cc4326478c515d2df4a8836ad89","isMergeCommit":false,"messageTitle":"Add Allergies, BloodType, Condition, Country, DateOfAdmission, DateOfBirth, Diagnosis, NRIC, Status, Symptom classes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":308,"deletions":0}}},{"hash":"a335c16f4e95e39adc652e54cefc48bf47192510","isMergeCommit":false,"messageTitle":"Add user stories and use cases","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":147,"deletions":11}}},{"hash":"ce7f559f8ff4d4071505a66049cc4daa269bdc41","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-dg","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"487c0e6b714c8616c941b0e09f4dd111cfad79a2","isMergeCommit":false,"messageTitle":"Add checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":69,"deletions":28},"other":{"insertions":14,"deletions":10}}},{"hash":"f938a4c6e657b76b5d7a163f79ff57610366ddb2","isMergeCommit":false,"messageTitle":"Change names to follow checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":6}}},{"hash":"582ac7f2f31a8235a321b7650acdc58684b20ba1","isMergeCommit":false,"messageTitle":"Add fields in Person","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":8}}},{"hash":"e011d5c7ba4c20822746f1c63290998372836e1d","isMergeCommit":false,"messageTitle":"Add new fields in parser and json adapted person","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":248,"deletions":97}}},{"hash":"154fde92eb574616906fc2598de3ba07eb225cbf","isMergeCommit":false,"messageTitle":"Revert back the Sex and Status classes Change PersonBuilder class with new fields","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":116,"deletions":0},"test-code":{"insertions":13,"deletions":1}}}]},{"date":"2024-03-19","commitResults":[{"hash":"93c67733abb54eda9b0414708d38742af37c5091","isMergeCommit":false,"messageTitle":"Add optional field setters, key words and and parsers","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":244,"deletions":31}}},{"hash":"2bd9a96d9bf6eee5ec09c4fc6cd5241b64ac70b1","isMergeCommit":false,"messageTitle":"Add PREFIX_STATUS to Guard Clause in AddCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-20","commitResults":[{"hash":"9cfd178c5b23b5db712141e7572f46c83de5b2ff","isMergeCommit":false,"messageTitle":"AddCommand: Rename AddCommand to CreateCommand ModelManager: refactor \"addressbook\" to \"immunimate\" DeleteCommand: implement DeleteCommand using NRIC to identify delete target","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":127,"deletions":100},"other":{"insertions":84,"deletions":61},"test-code":{"insertions":70,"deletions":70}}}]},{"date":"2024-03-21","commitResults":[{"hash":"1ff80e430524d630ddb8c4b4acfa3cb97214c2ca","isMergeCommit":false,"messageTitle":"Implement DeleteCommandTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":47,"deletions":15},"test-code":{"insertions":64,"deletions":50}}},{"hash":"1f9fb797c25384553b53d970d50d2d4ba8169650","isMergeCommit":false,"messageTitle":"Add Person.createPersonWithNric() method to create person instance with only NRIC Add NricContainsKeywords class under Person Pass all test cases for DeleteCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":47,"deletions":4},"test-code":{"insertions":21,"deletions":14}}},{"hash":"1ec624d796d27b98cb9529f4c3e9c35e2320b3ff","isMergeCommit":false,"messageTitle":"Pass DeleteCommandParserTest Rename AddressBookParser to ImmuniMateParser Pass ImmuniMateParserTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":5},"other":{"insertions":7,"deletions":7},"test-code":{"insertions":12,"deletions":3}}},{"hash":"3e190a3ae658f2e0983c5adc8eb0fde7d78a2645","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into find-profiles","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b5da2ef98bad0cb0a7875076c3e3daeb16b0a41e","isMergeCommit":true,"messageTitle":"Merge pull request #56 from alex-setyawan/find-profiles","messageBody":"Find profiles","fileTypesAndContributionMap":{}},{"hash":"029dc7f89461e9c0262fd2c673e7440ff371a8e2","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-fields","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a3308b7e03942cc69dc225900ed769e964c85f7f","isMergeCommit":true,"messageTitle":"Merge pull request #55 from alex-setyawan/update-fields","messageBody":"Update fields\r\nfix #18 ","fileTypesAndContributionMap":{}},{"hash":"4c4b96909469675c097835b56fe30985012e6633","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into checkstyle","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9c496e83fd1d4b46756fe9cabde13116a8e948e8","isMergeCommit":true,"messageTitle":"Merge pull request #63 from alex-setyawan/checkstyle","messageBody":"Fix checkstyle for AddressBookParser.java","fileTypesAndContributionMap":{}},{"hash":"26b58660b50fecb4b1363f09b6fe1d17459ee8c7","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into backup","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"5a20a8f79fa87da06a2d20f4e61f5806c36f6cf7","isMergeCommit":true,"messageTitle":"Merge pull request #66 from alex-setyawan/backup","messageBody":"Comment off some test cases to reduce error","fileTypesAndContributionMap":{}},{"hash":"a2555518edc16aba798281a491000d5b599049f9","isMergeCommit":false,"messageTitle":"Remove duplicated `BloodType.orElse()` method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":10}}},{"hash":"57780e2c0e7b82ec781ae7fd091d4479df364e4b","isMergeCommit":false,"messageTitle":"CommandTestUtil: Change blood type to single string","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0},"test-code":{"insertions":2,"deletions":2}}},{"hash":"2221cf37206f7ea7093bf30b347908be883536dd","isMergeCommit":false,"messageTitle":"Person.java: fix equal() to include all fields to make sure equal() implies identical copies","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":2}}},{"hash":"4fcc8f81f5add70087d36a87690e76e3cde5d020","isMergeCommit":true,"messageTitle":"Merge pull request #71 from laney0808/fix-non-compilling-code","messageBody":"Fix miscellaneous details","fileTypesAndContributionMap":{}},{"hash":"723ce738428e0557021b318a4892cc3e99723973","isMergeCommit":false,"messageTitle":"Fix DateOfBirth constructor","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":0}}}]},{"date":"2024-03-22","commitResults":[{"hash":"4efc4217dea1a128ce7f852c05da2410f45a13ae","isMergeCommit":true,"messageTitle":"Merge branch \u0027fix-merge-conflicts\u0027 into update-create-commands","messageBody":"# Conflicts:\n#\tsrc/main/java/seedu/address/logic/Messages.java\n#\tsrc/main/java/seedu/address/logic/commands/DeleteCommand.java\n#\tsrc/main/java/seedu/address/logic/commands/EditCommand.java\n#\tsrc/main/java/seedu/address/model/person/Person.java\n#\tsrc/test/java/seedu/address/logic/LogicManagerTest.java\n#\tsrc/test/java/seedu/address/logic/commands/DeleteCommandTest.java\n#\tsrc/test/java/seedu/address/logic/commands/UpdateCommandTest.java\n#\tsrc/test/java/seedu/address/model/person/PersonTest.java\n#\tsrc/test/java/seedu/address/testutil/PersonUtil.java\n#\tsrc/test/java/seedu/address/testutil/TypicalPersons.java\n","fileTypesAndContributionMap":{}},{"hash":"e1ea532ac8ba847b7c5b844cd0e2c7d1de23b2cf","isMergeCommit":false,"messageTitle":"Change argument to hasPerson to Person.createPersonWithNric","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":4}}},{"hash":"276e7951ae937427c4dbd457d102a2c6e8cce1f8","isMergeCommit":true,"messageTitle":"Merge pull request #75 from laney0808/update-create-commands","messageBody":"Change argument to hasPerson to Person.createPersonWithNric","fileTypesAndContributionMap":{}},{"hash":"e99bb38b6975dd4236992b034d490570203952a9","isMergeCommit":false,"messageTitle":"Change hasPerson() implementation in UpdateCommand.execute()","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":17}}}]},{"date":"2024-03-23","commitResults":[{"hash":"d83c2849d29ab2ce5844b9f125054d70a82a8861","isMergeCommit":false,"messageTitle":"Fix test cases and test cases fails related to create command and delete command","messageBody":"Message: Standardize Person Not Found message\nConsider optional fields\n\nDeleteCommand: use MESSAGE_PERSON_NOT_FOUND instead\n\nCreateCommandParser: Check duplicates for PREFIX_STATUS\n\nPerson: Add isValidPerson() method; Adjust equals() to account for null optional fields\n\nCommandTestUtil: Add all necessary DESC\n\nCreateCommandParserTest: Make compatible to current structure\n\nPersonBuilder: Consider all mandatory fields only\n","fileTypesAndContributionMap":{"functional-code":{"insertions":52,"deletions":20},"test-code":{"insertions":73,"deletions":48}}},{"hash":"f15b505f991d0e929336895ecd4f2937365c9eaf","isMergeCommit":true,"messageTitle":"Merge pull request #79 from alex-setyawan/fix-tests","messageBody":"Fix tests","fileTypesAndContributionMap":{}},{"hash":"88de2edc33ed8310a34e2d62806d67543c832973","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of team repository into new-update-tests","messageBody":"# Conflicts:\n#\tsrc/main/java/seedu/address/model/person/Person.java\n#\tsrc/test/java/seedu/address/testutil/PersonBuilder.java\n","fileTypesAndContributionMap":{}},{"hash":"36199671795d44e88e3c022c7f33dbca7727a6d5","isMergeCommit":false,"messageTitle":"Add CreateCommand Model Sequence Diagram","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":49,"deletions":0}}}]},{"date":"2024-03-24","commitResults":[{"hash":"d0d6248a22d59b110ec784a4c6c923da218e1c4a","isMergeCommit":false,"messageTitle":"DeveloperGuide.md: Add new line at EOF","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}},{"hash":"6be64247ae6bf4a06049e5f3343704bb9aae3927","isMergeCommit":false,"messageTitle":"Fix DG and CreateCommand.puml","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":5}}},{"hash":"a8fb79fd3f8c10277c1f5c411bb40b58438e54ed","isMergeCommit":false,"messageTitle":"Add uml diagram to DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":2}}},{"hash":"c81d989ee6f6df186ccf89a105f0b6e8b9020cdf","isMergeCommit":true,"messageTitle":"Merge pull request #86 from NatLeong/fix-read-command","messageBody":"Fix read command parser and read command exceptions ","fileTypesAndContributionMap":{}},{"hash":"1fb1f0fd9bc10211ce50e5e77964bd5859464d8a","isMergeCommit":true,"messageTitle":"Merge pull request #87 from NatLeong/fix-personcard-status","messageBody":"Fix stroke colour for status icon","fileTypesAndContributionMap":{}},{"hash":"ba0bab518c0f57e4a3d9d3dda6552bf1828b431b","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-uml","messageBody":"","fileTypesAndContributionMap":{}}]}],"NatLeong":[{"date":"2024-03-09","commitResults":[{"hash":"c386c3bcdae04d4e821aea1ae88d746dc67e551d","isMergeCommit":false,"messageTitle":"Add to AboutUs.md in related section","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":48,"deletions":2}}}]},{"date":"2024-03-12","commitResults":[{"hash":"b94ef15921b71a0eb45824bf9f8c7566d631f677","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-fix-about_us","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"221305492efe1a94676da610a1d9633a6abb8c27","isMergeCommit":true,"messageTitle":"Merge pull request #11 from jovantanyk/branch-fix-about_us","messageBody":"fix: update AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"16a7c32abfc1e4cabdeb5d4619281b63c8f473b2","isMergeCommit":true,"messageTitle":"Merge pull request #12 from jovantanyk/branch-update-docs","messageBody":"docs: update user documentation","fileTypesAndContributionMap":{}}]},{"date":"2024-03-15","commitResults":[{"hash":"9fa48173c8c18c76c69385fcd357b24ad84c85ad","isMergeCommit":false,"messageTitle":"Update Menu Bar colour and content","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":19}}}]},{"date":"2024-03-17","commitResults":[{"hash":"22c3442d76ce73d53ae9eb12072e8fcce66466c4","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into feature-update-results-box","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"21b0a0daa8e64bf604950a005fcb0bfc87c534dd","isMergeCommit":true,"messageTitle":"Merge pull request #30 from jovantanyk/feature-update-results-box","messageBody":"feat: update ResultDisplay to ResultPanel","fileTypesAndContributionMap":{}},{"hash":"3a671fec3f02977c2aa7349b00682178b5fe52aa","isMergeCommit":false,"messageTitle":"Updated person card to include name, sex and nric. Initial set up for status icon.","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":47,"deletions":38}}},{"hash":"34e4e49129a2ac1c15ffe539937689187f7d75b5","isMergeCommit":false,"messageTitle":"Removed unused imports","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":3}}},{"hash":"e044eee786e7080e48acf88600316c2879215db0","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into feature-update-command-box","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8e2967d96f58b15442caf38d02d2e43f2bf894b8","isMergeCommit":true,"messageTitle":"Merge pull request #34 from jovantanyk/feature-update-command-box","messageBody":"Update Command Box UI","fileTypesAndContributionMap":{}},{"hash":"9b3df03e780ee0cfdcf14a381779456ccdab58a4","isMergeCommit":false,"messageTitle":"Updated window title","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-18","commitResults":[{"hash":"66ee6eede9fafc0f76f160a8c13027a4ae6f2a80","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into fix-update-person-panel","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"7935e3a778d62897a288497facd7903f29fe111a","isMergeCommit":true,"messageTitle":"Merge pull request #38 from jovantanyk/fix-update-person-panel","messageBody":"fix: update size of Person and Result Panel","fileTypesAndContributionMap":{}},{"hash":"122cb9ae67c2638f596f11f41d55c2887186d5f2","isMergeCommit":false,"messageTitle":"Fix: person card grid ratio for more space for the name","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"5846f45058a9e060f53c0a772f34ecd3d4d6298d","isMergeCommit":false,"messageTitle":"Fix person card size to fit new main window size","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":2}}},{"hash":"bb057979e2b118ec2018aa51192d6a51f966b7f1","isMergeCommit":false,"messageTitle":"Changed command box colour","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-19","commitResults":[{"hash":"93814162e4f677974278b643fd0d70860b99fcbb","isMergeCommit":false,"messageTitle":"Update nric, sex and status circle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":39,"deletions":6}}},{"hash":"c95e15fa8f1be01895074de422d17253b8a1d2ca","isMergeCommit":false,"messageTitle":"Fix indentation error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":13}}},{"hash":"e8dbe8fc699b9935e8ef48e1914a412a115dc40b","isMergeCommit":false,"messageTitle":"Fix checkstyle error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"9341aeaea3c264397f4c4d6115a9b7482e0e09a0","isMergeCommit":false,"messageTitle":"Fix Javadoc error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}}]},{"date":"2024-03-20","commitResults":[{"hash":"f1a2618f38787662635693cbad3bdb54081e85fd","isMergeCommit":false,"messageTitle":"Update for email only","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":3},"test-code":{"insertions":17,"deletions":22}}},{"hash":"81cee060e6e1d30b67495251a5a09a6c62e903f6","isMergeCommit":false,"messageTitle":"Update for country only","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":3},"test-code":{"insertions":22,"deletions":16}}},{"hash":"daf346b59a3d98a6e54b8bea73539d72417a6bf8","isMergeCommit":false,"messageTitle":"Update for allergies only","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":1},"test-code":{"insertions":29,"deletions":15}}},{"hash":"28cd69dd2683ff799729f85f9f9339b83d88e672","isMergeCommit":false,"messageTitle":"Update for blood type only","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":1},"test-code":{"insertions":15,"deletions":14}}},{"hash":"99255106071c1a51e5c3fe244c593ba238193619","isMergeCommit":false,"messageTitle":"Update for condition only","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":2},"test-code":{"insertions":17,"deletions":14}}},{"hash":"024864e06eaddc640e020a97ae251d6feea48892","isMergeCommit":false,"messageTitle":"Update for date of admission only","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":4},"test-code":{"insertions":15,"deletions":15}}},{"hash":"6d750fed1d7281783707b572226c5388066a1772","isMergeCommit":false,"messageTitle":"Update for diagnosis only","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":1},"test-code":{"insertions":16,"deletions":15}}},{"hash":"b9911944498fa1e7397b8ef0918b7d53e8e8c382","isMergeCommit":false,"messageTitle":"Update for symptom only","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":1},"test-code":{"insertions":29,"deletions":14}}},{"hash":"fa47bdc3292ee825da534abda93884bfc4d1465f","isMergeCommit":false,"messageTitle":"Fix split for blood type string","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-21","commitResults":[{"hash":"b582a4ec14f8717784b388391018acbd449d5cc6","isMergeCommit":true,"messageTitle":"Merge pull request #54 from jovantanyk/fix-json-testcases","messageBody":"fix: Remove optional fields from Test","fileTypesAndContributionMap":{}},{"hash":"bc41f3ed65ac7f663c7fcf5bf492a270bdb34332","isMergeCommit":false,"messageTitle":"Add read command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":158,"deletions":0}}},{"hash":"76abd3a6844f9065a740f6ebce538b4b984076ac","isMergeCommit":true,"messageTitle":"Merge pull request #72 from laney0808/fix-non-compilling-code","messageBody":"Fix DateOfBirth constructor","fileTypesAndContributionMap":{}}]},{"date":"2024-03-22","commitResults":[{"hash":"9e8deffacb8080ac1bd0db95c5dccc06a6a731b1","isMergeCommit":false,"messageTitle":"Add tests for some methods in ReadCommand and ReadCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":2},"test-code":{"insertions":80,"deletions":0}}},{"hash":"d4108b7ea75c1875b49bee9f4e8d04432c3f49e6","isMergeCommit":false,"messageTitle":"Remove unused imports","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":10}}}]},{"date":"2024-03-23","commitResults":[{"hash":"ceff0cca9902c7b35ae590d491b625e4a0c60e00","isMergeCommit":false,"messageTitle":"Fix to public class","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-24","commitResults":[{"hash":"05860706cd63706eccc71f7153224c00b2bd0984","isMergeCommit":true,"messageTitle":"Merge pull request #85 from jovantanyk/fix-storage","messageBody":"Fix storage","fileTypesAndContributionMap":{}},{"hash":"46cd2632d16ca414f36f9847d8f9799b1ed4074a","isMergeCommit":false,"messageTitle":"Fix read command parser and read command exceptions and update shadow jar file name","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":17,"deletions":8},"other":{"insertions":1,"deletions":1}}},{"hash":"cdc3539a6fb537a669f29223cf2c1d0514b71934","isMergeCommit":false,"messageTitle":"Fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":11}}},{"hash":"b00f05eff5466fbfae3e2a864f2f353f39082942","isMergeCommit":false,"messageTitle":"Fix stroke colour for status icon","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":0}}},{"hash":"5a6422bbc78831aff5d35eaa6307c3a75636158a","isMergeCommit":true,"messageTitle":"Merge pull request #83 from laney0808/add-uml","messageBody":"Add uml for create command","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"alex-setyawan":{"docs":80,"functional-code":692,"test-code":863},"jovantanyk":{"docs":90,"functional-code":323,"test-code":176},"laney0808":{"docs":215,"functional-code":1046,"test-code":250},"NatLeong":{"docs":48,"functional-code":313,"test-code":134,"other":1}},"authorContributionVariance":{"alex-setyawan":116350.87,"jovantanyk":26206.578,"laney0808":48526.832,"NatLeong":6057.059},"authorDisplayNameMap":{"alex-setyawan":"CS2103T-T08-1 ALEX..AWAN","jovantanyk":"CS2103T-T08-1 TAN ..OVAN","laney0808":"CS2103T-T08-1 ZHAN..ANYU","NatLeong":"CS2103T-T08-1 LEON..ALIE"}} diff --git a/AY2324S2-CS2103T-T13-3_tp_master/authorship.json b/AY2324S2-CS2103T-T13-3_tp_master/authorship.json index 8db10dc2..64b09e58 100644 --- a/AY2324S2-CS2103T-T13-3_tp_master/authorship.json +++ b/AY2324S2-CS2103T-T13-3_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"ibnu2651"},"content":"[![CI Status](https://github.com/AY2324S2-CS2103T-T13-3/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S2-CS2103T-T13-3/tp/actions)","lastModifiedDate":"2024-03-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":"ibnu2651"},"content":"* Insura-Connect is an enhanced version of the AddressBook-Level3 project, which serves as a personal contact management tool for insurance agents.","lastModifiedDate":"2024-03-06"},{"lineNumber":6,"author":{"gitId":"ibnu2651"},"content":"* It provides fast access to client contact details, easily manage client relationships, collaborate with industry partners, and stay organised in a fast-paced industry","lastModifiedDate":"2024-03-06"},{"lineNumber":7,"author":{"gitId":"ibnu2651"},"content":"* For the detailed documentation of this project, see the **[Insura-Connect Product Website](https://ay2324s2-cs2103t-t13-3.github.io/tp/)**.","lastModifiedDate":"2024-03-06"},{"lineNumber":8,"author":{"gitId":"ibnu2651"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-03-03"}],"authorContributionMap":{"ibnu2651":5,"-":3}},{"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":"[[homepage](http://www.comp.nus.edu.sg/~damithch)]","lastModifiedDate":"2024-03-07"},{"lineNumber":13,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"kaiyi27"},"content":"### Teoh Kai Yi","lastModifiedDate":"2024-03-02"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"kaiyi27"},"content":"\u003cimg src\u003d\"images/kaiyi27.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":20,"author":{"gitId":"kaiyi27"},"content":"[[github](https://github.com/kaiyi27)]","lastModifiedDate":"2024-03-02"},{"lineNumber":21,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"kaiyi27"},"content":"* Role: Developer","lastModifiedDate":"2024-03-02"},{"lineNumber":24,"author":{"gitId":"kaiyi27"},"content":"* Responsibilities: ","lastModifiedDate":"2024-03-02"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"ibnu2651"},"content":"### Ibnu Taimiyyah Bin Adam","lastModifiedDate":"2024-03-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"ibnu2651"},"content":"\u003cimg src\u003d\"images/ibnu2651.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"ibnu2651"},"content":"[[github](https://github.com/ibnu2651)]","lastModifiedDate":"2024-03-03"},{"lineNumber":31,"author":{"gitId":"justincred"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2024-03-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"ibnu2651"},"content":"* Responsibilities:","lastModifiedDate":"2024-03-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"Shauryan123"},"content":"### Shauryan Agrawal","lastModifiedDate":"2024-03-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"justincred"},"content":"\u003cimg src\u003d\"images/shauryan123.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-07"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"justincred"},"content":"[[github](http://github.com/Shauryan123)]","lastModifiedDate":"2024-03-07"},{"lineNumber":40,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2024-03-05"},{"lineNumber":43,"author":{"gitId":"Shauryan123"},"content":"* Responsibilities:","lastModifiedDate":"2024-03-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":45,"author":{"gitId":"justincred"},"content":"### Justin Lim Chong Hwei","lastModifiedDate":"2024-03-07"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":47,"author":{"gitId":"justincred"},"content":"\u003cimg src\u003d\"images/justincred.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-07"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":49,"author":{"gitId":"justincred"},"content":"[[github](http://github.com/justincred)]","lastModifiedDate":"2024-03-07"},{"lineNumber":50,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2024-03-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2024-03-07"},{"lineNumber":52,"author":{"gitId":"justincred"},"content":"* Responsibilities:","lastModifiedDate":"2024-03-07"}],"authorContributionMap":{"Shauryan123":2,"kaiyi27":5,"ibnu2651":4,"justincred":7,"-":34}},{"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":"ibnu2651"},"content":"# Insura-Connect Developer Guide","lastModifiedDate":"2024-03-03"},{"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":"-"},"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":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":"-"},"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":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":"-"},"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":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":"-"},"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":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 continues till 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).\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-02-09"},{"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":"ibnu2651"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"policy 1 po/Policy XYZ\")` API call as an example.","lastModifiedDate":"2024-03-21"},{"lineNumber":111,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":112,"author":{"gitId":"ibnu2651"},"content":"\u003cpuml src\u003d\"diagrams/PolicySequenceDiagram.puml\" alt\u003d\"Interactions Inside the Logic Component for the `policy 1 po/Policy XYZ` Command\" /\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":113,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":114,"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":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":116,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31"},{"lineNumber":119,"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":120,"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":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31"},{"lineNumber":123,"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":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"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":131,"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":132,"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":133,"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":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":135,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":137,"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":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":139,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"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":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":150,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"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":152,"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":153,"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":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","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":"","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"justincred"},"content":"### Undo/redo feature","lastModifiedDate":"2024-03-21"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"justincred"},"content":"#### Implementation","lastModifiedDate":"2024-03-21"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"justincred"},"content":"The 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":"2024-03-21"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"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":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"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":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"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":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"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":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"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":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"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":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":195,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"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":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":202,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"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":205,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"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":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":217,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":219,"author":{"gitId":"justincred"},"content":"The following sequence diagram shows how a redo operation goes through the `Logic` component instead:","lastModifiedDate":"2024-03-21"},{"lineNumber":220,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":221,"author":{"gitId":"justincred"},"content":"\u003cpuml src\u003d\"diagrams/RedoSequenceDiagram-Logic.puml\" alt\u003d\"Interactions Inside the Logic Component for the `redo` Command\" /\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":222,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":223,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":225,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":227,"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":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":231,"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":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"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":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"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":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":248,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":249,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":252,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":262,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":264,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":"","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":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":274,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":275,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":276,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":277,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":281,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":283,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":284,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":285,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":286,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":287,"author":{"gitId":"ibnu2651"},"content":"* insurance agents","lastModifiedDate":"2024-03-06"},{"lineNumber":288,"author":{"gitId":"-"},"content":"* has a need to manage a significant number of contacts","lastModifiedDate":"2020-05-23"},{"lineNumber":289,"author":{"gitId":"ibnu2651"},"content":"* needs to differentiate between different types of contacts","lastModifiedDate":"2024-03-06"},{"lineNumber":290,"author":{"gitId":"ibnu2651"},"content":"* track the status of contacts","lastModifiedDate":"2024-03-06"},{"lineNumber":291,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23"},{"lineNumber":292,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23"},{"lineNumber":293,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26"},{"lineNumber":294,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23"},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":296,"author":{"gitId":"ibnu2651"},"content":"**Value proposition**: Provides fast access to client contact details, easily manage client relationships, collaborate with industry partners, and stay organised in a fast-paced industry.","lastModifiedDate":"2024-03-06"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":298,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":299,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":300,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":301,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":302,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":303,"author":{"gitId":"-"},"content":"| Priority | As a…​ | I want to…​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":304,"author":{"gitId":"kaiyi27"},"content":"|----------|-------------------------------------------|---------------------------------|-------------------------------------------------------------------------|","lastModifiedDate":"2024-03-02"},{"lineNumber":305,"author":{"gitId":"kaiyi27"},"content":"| `* * *` | fast typing user | have a CLI | use the app more efficiently |","lastModifiedDate":"2024-03-02"},{"lineNumber":306,"author":{"gitId":"kaiyi27"},"content":"| `* * *` | busy user | clear all my data quickly | quickly restart a new list of contacts |","lastModifiedDate":"2024-03-02"},{"lineNumber":307,"author":{"gitId":"kaiyi27"},"content":"| `* * *` | intermediate user | see my relationship with my contacts | know who they are |","lastModifiedDate":"2024-03-02"},{"lineNumber":308,"author":{"gitId":"kaiyi27"},"content":"| `* * *` | intermediate user | find a certain client based on a keyword | easier to find the client |","lastModifiedDate":"2024-03-02"},{"lineNumber":309,"author":{"gitId":"kaiyi27"},"content":"| `* * *` | intermediate user | save and retrieve information | use the app in multiple sessions |","lastModifiedDate":"2024-03-02"},{"lineNumber":310,"author":{"gitId":"kaiyi27"},"content":"| `* * *` | intermediate user | add data about clients to the application | record information about my client |","lastModifiedDate":"2024-03-02"},{"lineNumber":311,"author":{"gitId":"kaiyi27"},"content":"| `* *` | exploring the app | see what the app will look like with sample data | more easily understand the potential features |","lastModifiedDate":"2024-03-02"},{"lineNumber":312,"author":{"gitId":"kaiyi27"},"content":"| `* *` | exploring the app | have a tutorial of the basic features | get started with using the app |","lastModifiedDate":"2024-03-02"},{"lineNumber":313,"author":{"gitId":"kaiyi27"},"content":"| `* *` | exploring the app | access a help page with basic commands | familiarize myself with how to use the app |","lastModifiedDate":"2024-03-02"},{"lineNumber":314,"author":{"gitId":"kaiyi27"},"content":"| `* *` | exploring the app | track my client information | manage my work using the app more efficiently |","lastModifiedDate":"2024-03-02"},{"lineNumber":315,"author":{"gitId":"kaiyi27"},"content":"| `* *` | exploring the app | access past activity since app installation | see my current progress |","lastModifiedDate":"2024-03-02"},{"lineNumber":316,"author":{"gitId":"kaiyi27"},"content":"| `* *` | intermediate user | save similar client information data into a group | manage them easily |","lastModifiedDate":"2024-03-02"},{"lineNumber":317,"author":{"gitId":"kaiyi27"},"content":"| `* *` | intermediate user | reorganize my list of contacts | access them more clearly and efficiently |","lastModifiedDate":"2024-03-02"},{"lineNumber":318,"author":{"gitId":"kaiyi27"},"content":"| `* *` | intermediate user | edit my contacts as a group | easier to implement changes if something in common in the group changes |","lastModifiedDate":"2024-03-02"},{"lineNumber":319,"author":{"gitId":"kaiyi27"},"content":"| `* *` | careless user | have an undo command | prevent doing some mistake |","lastModifiedDate":"2024-03-02"},{"lineNumber":320,"author":{"gitId":"kaiyi27"},"content":"| `* *` | intermediate user | filter client information | sort my client information according to some condition |","lastModifiedDate":"2024-03-02"},{"lineNumber":321,"author":{"gitId":"kaiyi27"},"content":"| `*` | intermediate user | record if I am successful in securing an agreement | know I have succeeded at my job |","lastModifiedDate":"2024-03-02"},{"lineNumber":322,"author":{"gitId":"kaiyi27"},"content":"| `*` | busy user | autocomplete my commands | type commands faster |","lastModifiedDate":"2024-03-02"},{"lineNumber":323,"author":{"gitId":"kaiyi27"},"content":"| `*` | intermediate user | tag my clients | classify common groups |","lastModifiedDate":"2024-03-02"},{"lineNumber":324,"author":{"gitId":"kaiyi27"},"content":"| `*` | intermediate user | have common use shortcut keys command | access the app more efficiently |","lastModifiedDate":"2024-03-02"},{"lineNumber":325,"author":{"gitId":"kaiyi27"},"content":"| `*` | intermediate user | track progress of engagements via tags | monitor the progress of different engagements with clients |","lastModifiedDate":"2024-03-02"},{"lineNumber":326,"author":{"gitId":"kaiyi27"},"content":"| `*` | intermediate user | copy information/features to another client | reduce the time used |","lastModifiedDate":"2024-03-02"},{"lineNumber":327,"author":{"gitId":"kaiyi27"},"content":"| `*` | intermediate user | quickly differentiate between clients and business partners | differentiate between them |","lastModifiedDate":"2024-03-02"},{"lineNumber":328,"author":{"gitId":"kaiyi27"},"content":"| `*` | intermediate user | rate clients for effective feedback | provide feedback efficiently |","lastModifiedDate":"2024-03-02"},{"lineNumber":329,"author":{"gitId":"kaiyi27"},"content":"| `*` | intermediate user | customize the app’s theme | better suits my preferences |","lastModifiedDate":"2024-03-02"},{"lineNumber":330,"author":{"gitId":"kaiyi27"},"content":"| `*` | expert user | create shortcuts for tasks | save time on frequently performed tasks |","lastModifiedDate":"2024-03-02"},{"lineNumber":331,"author":{"gitId":"kaiyi27"},"content":"| `*` | long-time user | archive/hide unused data | not distracted by irrelevant data |","lastModifiedDate":"2024-03-02"},{"lineNumber":332,"author":{"gitId":"kaiyi27"},"content":"| `*` | frequent user | have templates for adding contacts | contacts are standardized and easier to read |","lastModifiedDate":"2024-03-02"},{"lineNumber":333,"author":{"gitId":"kaiyi27"},"content":"| `*` | frequent user | schedule weekly check-ins with clients | do not forget about them |","lastModifiedDate":"2024-03-02"},{"lineNumber":334,"author":{"gitId":"kaiyi27"},"content":"| `*` | expert user | have reminders for meetings with clients | organize and plan my time well |","lastModifiedDate":"2024-03-02"},{"lineNumber":335,"author":{"gitId":"kaiyi27"},"content":"| `*` | expert user | create automated task workflows | save time on performing repeated tasks |","lastModifiedDate":"2024-03-02"},{"lineNumber":336,"author":{"gitId":"kaiyi27"},"content":"| `*` | expert user | see a competency rating based on past successes | know if I need to improve |","lastModifiedDate":"2024-03-02"},{"lineNumber":337,"author":{"gitId":"kaiyi27"},"content":"| `*` | expert user | find clients based on different filters | better focus on one particular group |","lastModifiedDate":"2024-03-02"},{"lineNumber":338,"author":{"gitId":"kaiyi27"},"content":"| `*` | expert user | disable unnecessary features | the application is more customized and simpler to use |","lastModifiedDate":"2024-03-02"},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":340,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":341,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":342,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":343,"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":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":345,"author":{"gitId":"-"},"content":"**Use case: Delete a person**","lastModifiedDate":"2020-05-23"},{"lineNumber":346,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":347,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":348,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":349,"author":{"gitId":"-"},"content":"1. User requests to list persons","lastModifiedDate":"2020-05-23"},{"lineNumber":350,"author":{"gitId":"-"},"content":"2. AddressBook shows a list of persons","lastModifiedDate":"2020-05-23"},{"lineNumber":351,"author":{"gitId":"-"},"content":"3. User requests to delete a specific person in the list","lastModifiedDate":"2020-05-23"},{"lineNumber":352,"author":{"gitId":"-"},"content":"4. AddressBook deletes the person","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":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":357,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":358,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2020-05-23"},{"lineNumber":359,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":360,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":361,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":362,"author":{"gitId":"-"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2020-05-23"},{"lineNumber":363,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":364,"author":{"gitId":"-"},"content":" * 3a1. AddressBook shows an error message.","lastModifiedDate":"2020-05-23"},{"lineNumber":365,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":366,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23"},{"lineNumber":367,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":368,"author":{"gitId":"kaiyi27"},"content":"**Use case: List out the contact information**","lastModifiedDate":"2024-03-03"},{"lineNumber":369,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":370,"author":{"gitId":"kaiyi27"},"content":"**MSS**","lastModifiedDate":"2024-03-03"},{"lineNumber":371,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":372,"author":{"gitId":"kaiyi27"},"content":"1. User requests to list persons","lastModifiedDate":"2024-03-03"},{"lineNumber":373,"author":{"gitId":"kaiyi27"},"content":"2. AddressBook shows a list of persons","lastModifiedDate":"2024-03-03"},{"lineNumber":374,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":375,"author":{"gitId":"kaiyi27"},"content":" Use case ends.","lastModifiedDate":"2024-03-03"},{"lineNumber":376,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":377,"author":{"gitId":"kaiyi27"},"content":"**Extensions**","lastModifiedDate":"2024-03-03"},{"lineNumber":378,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":379,"author":{"gitId":"ibnu2651"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-03-03"},{"lineNumber":380,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":381,"author":{"gitId":"ibnu2651"},"content":" Use case ends.","lastModifiedDate":"2024-03-03"},{"lineNumber":382,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":383,"author":{"gitId":"ibnu2651"},"content":"**Use case: Filter the list of clients**","lastModifiedDate":"2024-03-03"},{"lineNumber":384,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":385,"author":{"gitId":"ibnu2651"},"content":"**MSS**","lastModifiedDate":"2024-03-03"},{"lineNumber":386,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":387,"author":{"gitId":"ibnu2651"},"content":"1. User requests to filter list of persons","lastModifiedDate":"2024-03-03"},{"lineNumber":388,"author":{"gitId":"ibnu2651"},"content":"2. AddressBook shows a list of persons that satisfy the filter","lastModifiedDate":"2024-03-03"},{"lineNumber":389,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":390,"author":{"gitId":"ibnu2651"},"content":" Use case ends.","lastModifiedDate":"2024-03-03"},{"lineNumber":391,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":392,"author":{"gitId":"ibnu2651"},"content":"**Extensions**","lastModifiedDate":"2024-03-03"},{"lineNumber":393,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":394,"author":{"gitId":"kaiyi27"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-03-03"},{"lineNumber":395,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":396,"author":{"gitId":"kaiyi27"},"content":" Use case ends.","lastModifiedDate":"2024-03-03"},{"lineNumber":397,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":398,"author":{"gitId":"Shauryan123"},"content":"**Use case: Add a new person**","lastModifiedDate":"2024-03-05"},{"lineNumber":399,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":400,"author":{"gitId":"Shauryan123"},"content":"**MSS**","lastModifiedDate":"2024-03-05"},{"lineNumber":401,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":402,"author":{"gitId":"Shauryan123"},"content":"1. User requests to add a new person.","lastModifiedDate":"2024-03-05"},{"lineNumber":403,"author":{"gitId":"Shauryan123"},"content":"2. AddressBook prompts the user to enter the details of the person.","lastModifiedDate":"2024-03-05"},{"lineNumber":404,"author":{"gitId":"Shauryan123"},"content":"3. User enters the details of the person.","lastModifiedDate":"2024-03-05"},{"lineNumber":405,"author":{"gitId":"Shauryan123"},"content":"4. AddressBook adds the new person to the list.","lastModifiedDate":"2024-03-05"},{"lineNumber":406,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":407,"author":{"gitId":"Shauryan123"},"content":" Use case ends.","lastModifiedDate":"2024-03-05"},{"lineNumber":408,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":409,"author":{"gitId":"Shauryan123"},"content":"**Extensions**","lastModifiedDate":"2024-03-05"},{"lineNumber":410,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":411,"author":{"gitId":"Shauryan123"},"content":"* 3a. The user enters invalid details.","lastModifiedDate":"2024-03-05"},{"lineNumber":412,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":413,"author":{"gitId":"Shauryan123"},"content":" * 3a1. AddressBook shows an error message.","lastModifiedDate":"2024-03-05"},{"lineNumber":414,"author":{"gitId":"Shauryan123"},"content":" * 3a2. AddressBook prompts the user to enter the details again.","lastModifiedDate":"2024-03-05"},{"lineNumber":415,"author":{"gitId":"Shauryan123"},"content":" ","lastModifiedDate":"2024-03-05"},{"lineNumber":416,"author":{"gitId":"Shauryan123"},"content":" Use case resumes at step 3.","lastModifiedDate":"2024-03-05"},{"lineNumber":417,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":418,"author":{"gitId":"Shauryan123"},"content":"**Use case: Update a person\u0027s details**","lastModifiedDate":"2024-03-05"},{"lineNumber":419,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":420,"author":{"gitId":"Shauryan123"},"content":"**MSS**","lastModifiedDate":"2024-03-05"},{"lineNumber":421,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":422,"author":{"gitId":"Shauryan123"},"content":"1. User requests to list persons..","lastModifiedDate":"2024-03-05"},{"lineNumber":423,"author":{"gitId":"Shauryan123"},"content":"2. AddressBook shows a list of persons.","lastModifiedDate":"2024-03-05"},{"lineNumber":424,"author":{"gitId":"Shauryan123"},"content":"3. User requests to update the details of a specific person in the list.","lastModifiedDate":"2024-03-05"},{"lineNumber":425,"author":{"gitId":"Shauryan123"},"content":"4. AddressBook prompts the user to enter the new details.","lastModifiedDate":"2024-03-05"},{"lineNumber":426,"author":{"gitId":"Shauryan123"},"content":"5. User enters the new details.","lastModifiedDate":"2024-03-05"},{"lineNumber":427,"author":{"gitId":"Shauryan123"},"content":"6. AddressBook updates the person\u0027s details.","lastModifiedDate":"2024-03-05"},{"lineNumber":428,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":429,"author":{"gitId":"Shauryan123"},"content":" Use case ends.","lastModifiedDate":"2024-03-05"},{"lineNumber":430,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":431,"author":{"gitId":"Shauryan123"},"content":"**Extensions**","lastModifiedDate":"2024-03-05"},{"lineNumber":432,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":433,"author":{"gitId":"Shauryan123"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-03-05"},{"lineNumber":434,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":435,"author":{"gitId":"Shauryan123"},"content":" Use case ends.","lastModifiedDate":"2024-03-05"},{"lineNumber":436,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":437,"author":{"gitId":"Shauryan123"},"content":"* 3a. The given index is invalid..","lastModifiedDate":"2024-03-05"},{"lineNumber":438,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":439,"author":{"gitId":"Shauryan123"},"content":" * 3a1. AddressBook shows an error message.","lastModifiedDate":"2024-03-05"},{"lineNumber":440,"author":{"gitId":"Shauryan123"},"content":" ","lastModifiedDate":"2024-03-05"},{"lineNumber":441,"author":{"gitId":"Shauryan123"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-05"},{"lineNumber":442,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":443,"author":{"gitId":"Shauryan123"},"content":"* 5a. The user enters invalid details.","lastModifiedDate":"2024-03-05"},{"lineNumber":444,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":445,"author":{"gitId":"Shauryan123"},"content":" * 5a1. AddressBook shows an error message.","lastModifiedDate":"2024-03-05"},{"lineNumber":446,"author":{"gitId":"Shauryan123"},"content":" * 5a2. AddressBook prompts the user to enter the details again.","lastModifiedDate":"2024-03-05"},{"lineNumber":447,"author":{"gitId":"Shauryan123"},"content":" ","lastModifiedDate":"2024-03-05"},{"lineNumber":448,"author":{"gitId":"Shauryan123"},"content":" Use case resumes at step 4.","lastModifiedDate":"2024-03-05"},{"lineNumber":449,"author":{"gitId":"Shauryan123"},"content":" ","lastModifiedDate":"2024-03-05"},{"lineNumber":450,"author":{"gitId":"justincred"},"content":"**Use case: Clear AddressBook**","lastModifiedDate":"2024-03-07"},{"lineNumber":451,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":452,"author":{"gitId":"justincred"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":453,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":454,"author":{"gitId":"justincred"},"content":"1. User requests to clear the AddressBook","lastModifiedDate":"2024-03-07"},{"lineNumber":455,"author":{"gitId":"justincred"},"content":"2. AddressBook shows the empty AddressBook","lastModifiedDate":"2024-03-07"},{"lineNumber":456,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":457,"author":{"gitId":"justincred"},"content":" use case ends","lastModifiedDate":"2024-03-07"},{"lineNumber":458,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":459,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":460,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":461,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":462,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":463,"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":464,"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":465,"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":466,"author":{"gitId":"ibnu2651"},"content":"4. The response to any use action should become visible within 5 seconds.","lastModifiedDate":"2024-03-03"},{"lineNumber":467,"author":{"gitId":"ibnu2651"},"content":"5. Should have a user-friendly interface that is easy to navigate and understand.","lastModifiedDate":"2024-03-03"},{"lineNumber":468,"author":{"gitId":"ibnu2651"},"content":"6. Should be stable and not crash or lose data under normal use.","lastModifiedDate":"2024-03-03"},{"lineNumber":469,"author":{"gitId":"Shauryan123"},"content":"7. Should be able to handle increasing amounts of data and users without significant degradation in performance (Scalability).","lastModifiedDate":"2024-03-05"},{"lineNumber":470,"author":{"gitId":"Shauryan123"},"content":"8. Should protect sensitive data and prevent unauthorized access, ensuring data integrity and confidentiality (Security).","lastModifiedDate":"2024-03-05"},{"lineNumber":471,"author":{"gitId":"Shauryan123"},"content":"9. Should be easy to maintain, with clear documentation and a modular design that allows for easy updates and fixes .","lastModifiedDate":"2024-03-05"},{"lineNumber":472,"author":{"gitId":"Shauryan123"},"content":"10. Should be accessible to users with disabilities, following guidelines such as the Web Content Accessibility Guidelines (WCAG).","lastModifiedDate":"2024-03-05"},{"lineNumber":473,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":474,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":475,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":476,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":477,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":478,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":479,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09"},{"lineNumber":480,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23"},{"lineNumber":481,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":482,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":483,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":484,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":485,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":486,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":487,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":488,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":489,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":490,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12"},{"lineNumber":491,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":492,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":493,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":494,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":495,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":496,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":497,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":498,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":499,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":500,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":501,"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":502,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":503,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":504,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":505,"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":506,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":507,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":508,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":509,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":510,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":511,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":512,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":513,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":514,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":515,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":516,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":517,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":518,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":519,"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":520,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":521,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":522,"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":523,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":524,"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":525,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":526,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":527,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":528,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":529,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":530,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":531,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":532,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":533,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":534,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":535,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"Shauryan123":59,"kaiyi27":49,"ibnu2651":28,"justincred":16,"-":383}},{"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":"ibnu2651"},"content":"# InsuraConnect User Guide","lastModifiedDate":"2024-03-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":9,"author":{"gitId":"ibnu2651"},"content":"InsuraConnect is an enhanced version of the AddressBook-Level3 project, which serves as a **personal contact management tool for insurance agents**.","lastModifiedDate":"2024-03-24"},{"lineNumber":10,"author":{"gitId":"ibnu2651"},"content":"It provides fast access to client contact details, easily manage client relationships, collaborate with industry partners, and stay organised in a fast-paced industry.","lastModifiedDate":"2024-03-24"},{"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":"ibnu2651"},"content":"1. Download the latest `Insura-Connect.jar` from [here](https://github.com/AY2324S2-CS2103T-T13-3/tp/releases).","lastModifiedDate":"2024-03-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your AddressBook.","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"ibnu2651"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar Insura-Connect.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2024-03-24"},{"lineNumber":25,"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":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":"-"},"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":29,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"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":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2023-01-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"**Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"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":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"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":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"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":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"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":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"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":64,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":66,"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":67,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"### Adding a person: `add`","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"Adds a person to the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​`","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":86,"author":{"gitId":"-"},"content":"**Tip:** A person can have any number of tags (including 0)","lastModifiedDate":"2023-09-12"},{"lineNumber":87,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"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":91,"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":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"### Listing all persons : `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"Shows a list of all persons in the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"### Editing a person : `edit`","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"Edits an existing person in the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":"Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"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":106,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"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":109,"author":{"gitId":"-"},"content":"* You can remove all the person’s tags by typing `t/` without","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":" specifying any tags after it.","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"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":114,"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":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":"### Locating persons by name: `find`","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"Finds persons whose names contain any of the given keywords.","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":"* `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"Deletes the specified person from the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"* Deletes the person at the specified `INDEX`.","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":"* `list` followed by `delete 2` deletes the 2nd person in the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"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":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"ibnu2651"},"content":"### Assigning a policy : `policy`","lastModifiedDate":"2024-03-24"},{"lineNumber":149,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":150,"author":{"gitId":"ibnu2651"},"content":"Assigns a policy to a client.","lastModifiedDate":"2024-03-24"},{"lineNumber":151,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":152,"author":{"gitId":"ibnu2651"},"content":"Format: `policy INDEX po/POLICY_NAME`","lastModifiedDate":"2024-03-24"},{"lineNumber":153,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":154,"author":{"gitId":"ibnu2651"},"content":"* Assigns a policy to the client 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":"2024-03-24"},{"lineNumber":155,"author":{"gitId":"ibnu2651"},"content":"* Only clients can be assigned a policy. Attempts to assign a policy to a partner will be denied.","lastModifiedDate":"2024-03-24"},{"lineNumber":156,"author":{"gitId":"ibnu2651"},"content":"* Upon creating a new client, the initial policy will be empty.","lastModifiedDate":"2024-03-24"},{"lineNumber":157,"author":{"gitId":"ibnu2651"},"content":"* Policies cannot be changed with the `edit`command. They can only be changed with `policy`.","lastModifiedDate":"2024-03-24"},{"lineNumber":158,"author":{"gitId":"ibnu2651"},"content":"* Leaving `POLICY_NAME` blank will remove the policy from the client. Each client can only have one policy (for now). If the client is already assigned a policy, the current policy will be overwritten with the new one.","lastModifiedDate":"2024-03-24"},{"lineNumber":159,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":160,"author":{"gitId":"ibnu2651"},"content":"Examples:","lastModifiedDate":"2024-03-24"},{"lineNumber":161,"author":{"gitId":"ibnu2651"},"content":"* `policy 1 po/Policy ABC` Assigns the policy of the 1st person if it is a client to be `Policy ABC`","lastModifiedDate":"2024-03-24"},{"lineNumber":162,"author":{"gitId":"ibnu2651"},"content":"* `policy 2 po/` Removes the existing policy of the 2nd person if it is a client.","lastModifiedDate":"2024-03-24"},{"lineNumber":163,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":164,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"Clears all entries from the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"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":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":182,"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":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":184,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":186,"author":{"gitId":"-"},"content":"**Caution:**","lastModifiedDate":"2023-09-12"},{"lineNumber":187,"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.\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":188,"author":{"gitId":"-"},"content":"Furthermore, certain edits can cause the AddressBook to behave in unexpected ways (e.g., if a value entered is outside the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.","lastModifiedDate":"2023-09-12"},{"lineNumber":189,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":191,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04"},{"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":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"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":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":206,"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":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":208,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":210,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":"-----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-12"},{"lineNumber":214,"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":215,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"author":{"gitId":"-"},"content":"**Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3`","lastModifiedDate":"2020-05-23"},{"lineNumber":217,"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":218,"author":{"gitId":"-"},"content":"**Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake`","lastModifiedDate":"2020-05-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":"**List** | `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"ibnu2651"},"content":"**Policy** | `policy INDEX po/POLICY_NAME`","lastModifiedDate":"2024-03-24"}],"authorContributionMap":{"ibnu2651":22,"-":199}},{"path":"docs/_markbind/layouts/default.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003chead-bottom\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003clink rel\u003d\"stylesheet\" href\u003d\"{{baseUrl}}/stylesheets/main.css\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c/head-bottom\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003cheader sticky\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cnavbar type\u003d\"dark\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":" \u003ca slot\u003d\"brand\" href\u003d\"{{baseUrl}}/index.html\" title\u003d\"Home\" class\u003d\"navbar-brand\"\u003eInsura-Connect\u003c/a\u003e","lastModifiedDate":"2024-02-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/index.html\" class\u003d\"nav-link\"\u003eHome\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/UserGuide.html\" class\u003d\"nav-link\"\u003eUser Guide\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/DeveloperGuide.html\" class\u003d\"nav-link\"\u003eDeveloper Guide\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/AboutUs.html\" class\u003d\"nav-link\"\u003eAbout Us\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":12,"author":{"gitId":"ibnu2651"},"content":" \u003cli\u003e\u003ca href\u003d\"https://github.com/AY2324S2-CS2103T-T13-3/tp\" target\u003d\"_blank\" class\u003d\"nav-link\"\u003e\u003cmd\u003e:fab-github:\u003c/md\u003e\u003c/a\u003e","lastModifiedDate":"2024-03-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cli slot\u003d\"right\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cform class\u003d\"navbar-form\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003csearchbar :data\u003d\"searchData\" placeholder\u003d\"Search\" :on-hit\u003d\"searchCallback\" menu-align-right\u003e\u003c/searchbar\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/form\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/navbar\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"\u003c/header\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"flex-body\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"site-nav\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"site-nav-top\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"fw-bold mb-2\" style\u003d\"font-size: 1.25rem;\"\u003eSite Map\u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003csite-nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"* [Home]({{ baseUrl }}/index.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"* [User Guide]({{ baseUrl }}/UserGuide.html) :expanded:","lastModifiedDate":"2023-09-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * [Quick Start]({{ baseUrl }}/UserGuide.html#quick-start)","lastModifiedDate":"2023-09-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * [Features]({{ baseUrl }}/UserGuide.html#features)","lastModifiedDate":"2023-09-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * [FAQ]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * [Command Summary]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":"* [Developer Guide]({{ baseUrl }}/DeveloperGuide.html) :expanded:","lastModifiedDate":"2023-09-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * [Acknowledgements]({{ baseUrl }}/DeveloperGuide.html#acknowledgements)","lastModifiedDate":"2023-09-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * [Setting Up]({{ baseUrl }}/DeveloperGuide.html#setting-up-getting-started)","lastModifiedDate":"2023-09-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * [Design]({{ baseUrl }}/DeveloperGuide.html#design)","lastModifiedDate":"2023-09-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * [Implementation]({{ baseUrl }}/DeveloperGuide.html#implementation)","lastModifiedDate":"2023-09-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * [Documentation, logging, testing, configuration, dev-ops]({{ baseUrl }}/DeveloperGuide.html#documentation-logging-testing-configuration-dev-ops)","lastModifiedDate":"2023-09-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * [Appendix: Requirements]({{ baseUrl }}/DeveloperGuide.html#appendix-requirements)","lastModifiedDate":"2023-09-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * [Appendix: Instructions for manual testing]({{ baseUrl }}/DeveloperGuide.html#appendix-instructions-for-manual-testing)","lastModifiedDate":"2023-09-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":"* Tutorials","lastModifiedDate":"2023-09-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * [Tracing code]({{ baseUrl }}/tutorials/TracingCode.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * [Adding a command]({{ baseUrl }}/tutorials/AddRemark.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * [Removing Fields]({{ baseUrl }}/tutorials/RemovingFields.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [About Us]({{ baseUrl }}/AboutUs.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/site-nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cdiv id\u003d\"content-wrapper\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" {{ content }}","lastModifiedDate":"2023-09-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"page-nav\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cpage-nav /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003cscroll-top-button\u003e\u003c/scroll-top-button\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":"\u003cfooter\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003c!-- Support MarkBind by including a link to us on your landing page! --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"text-center\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u003csmall\u003e[\u003cmd\u003e**Powered by**\u003c/md\u003e \u003cimg src\u003d\"https://markbind.org/favicon.ico\" width\u003d\"30\"\u003e {{MarkBind}}, generated on {{timestamp}}]\u003c/small\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003c/footer\u003e","lastModifiedDate":"2023-09-12"}],"authorContributionMap":{"ibnu2651":1,"-":66}},{"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":"-"},"content":"AddressBook *-right-\u003e \"1\" UniquePersonList","lastModifiedDate":"2019-07-30"},{"lineNumber":8,"author":{"gitId":"-"},"content":"AddressBook *-right-\u003e \"1\" UniqueTagList","lastModifiedDate":"2019-07-30"},{"lineNumber":9,"author":{"gitId":"-"},"content":"UniqueTagList -[hidden]down- UniquePersonList","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"UniqueTagList -[hidden]down- UniquePersonList","lastModifiedDate":"2019-07-03"},{"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":"-"},"content":"UniquePersonList -right-\u003e Person","lastModifiedDate":"2021-07-31"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"Person -up-\u003e \"*\" Tag","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Person *--\u003e Name","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Person *--\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Person *--\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Person *--\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"kaiyi27"},"content":"Person *--\u003e Policy","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"kaiyi27"},"content":"Person *--\u003e Relationship","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"kaiyi27":2,"-":21}},{"path":"docs/diagrams/EditSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"kaiyi27"},"content":"@startuml","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"kaiyi27"},"content":"!include style.puml","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"kaiyi27"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"kaiyi27"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"kaiyi27"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"kaiyi27"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"kaiyi27"},"content":"participant \":EditCommandParser\" as EditCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"kaiyi27"},"content":"participant \"e:EditCommand\" as EditCommand LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"kaiyi27"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"kaiyi27"},"content":"participant \"editedPerson:Person\" as Person LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"kaiyi27"},"content":"end box","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"kaiyi27"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"kaiyi27"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"kaiyi27"},"content":"end box","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"kaiyi27"},"content":"[-\u003e LogicManager : execute(\"edit 1 n/Kevin\")","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"kaiyi27"},"content":"activate LogicManager","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"kaiyi27"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"edit 1 n/Kevin\")","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"kaiyi27"},"content":"activate AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"kaiyi27"},"content":"create EditCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"kaiyi27"},"content":"AddressBookParser -\u003e EditCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"kaiyi27"},"content":"activate EditCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"kaiyi27"},"content":"EditCommandParser --\u003e AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"kaiyi27"},"content":"deactivate EditCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"kaiyi27"},"content":"AddressBookParser -\u003e EditCommandParser : parse(\"1 n/Kevin\")","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"kaiyi27"},"content":"activate EditCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"kaiyi27"},"content":"create EditCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"kaiyi27"},"content":"EditCommandParser -\u003e EditCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"kaiyi27"},"content":"activate EditCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"kaiyi27"},"content":"EditCommand --\u003e EditCommandParser :","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"kaiyi27"},"content":"deactivate EditCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"kaiyi27"},"content":"EditCommandParser --\u003e AddressBookParser : e","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"kaiyi27"},"content":"deactivate EditCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"kaiyi27"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"kaiyi27"},"content":"EditCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"kaiyi27"},"content":"destroy EditCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"kaiyi27"},"content":"AddressBookParser --\u003e LogicManager : e","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"kaiyi27"},"content":"deactivate AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"kaiyi27"},"content":"LogicManager -\u003e EditCommand : execute(m)","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"kaiyi27"},"content":"activate EditCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"kaiyi27"},"content":"create Person","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"kaiyi27"},"content":"EditCommand -\u003e Person :","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"kaiyi27"},"content":"activate Person","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"kaiyi27"},"content":"Person --\u003e EditCommand :","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"kaiyi27"},"content":"deactivate Person","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"kaiyi27"},"content":"EditCommand -\u003e Model : setPerson(1, editedPerson)","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"kaiyi27"},"content":"activate Model","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"kaiyi27"},"content":"Model --\u003e EditCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"kaiyi27"},"content":"deactivate Model","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"kaiyi27"},"content":"create CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"kaiyi27"},"content":"EditCommand -\u003e CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"kaiyi27"},"content":"activate CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"kaiyi27"},"content":"destroy Person","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"kaiyi27"},"content":"CommandResult --\u003e EditCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"kaiyi27"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"kaiyi27"},"content":"EditCommand --\u003e LogicManager : r","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"kaiyi27"},"content":"deactivate EditCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"kaiyi27"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"kaiyi27"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"kaiyi27"},"content":"@enduml","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"kaiyi27":80}},{"path":"docs/diagrams/FindSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Shauryan123"},"content":"@startuml","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"Shauryan123"},"content":"!include style.puml","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"Shauryan123"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"Shauryan123"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"Shauryan123"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"Shauryan123"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"Shauryan123"},"content":"participant \":FindCommandParser\" as FindCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"Shauryan123"},"content":"participant \"d:FindCommand\" as FindCommand LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"Shauryan123"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"Shauryan123"},"content":"end box","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"Shauryan123"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"Shauryan123"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"Shauryan123"},"content":"end box","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"Shauryan123"},"content":"[-\u003e LogicManager : execute(\"find n/Alice r/Client t/friend\")","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"Shauryan123"},"content":"activate LogicManager","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"Shauryan123"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"find n/Alice r/Client t/friend\")","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"Shauryan123"},"content":"activate AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"Shauryan123"},"content":"create FindCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"Shauryan123"},"content":"AddressBookParser -\u003e FindCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"Shauryan123"},"content":"activate FindCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"Shauryan123"},"content":"FindCommandParser --\u003e AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"Shauryan123"},"content":"deactivate FindCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"Shauryan123"},"content":"AddressBookParser -\u003e FindCommandParser : parse(\"n/Alice r/Client t/friend\")","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"Shauryan123"},"content":"activate FindCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"Shauryan123"},"content":"create FindCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"Shauryan123"},"content":"FindCommandParser -\u003e FindCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"Shauryan123"},"content":"activate FindCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"Shauryan123"},"content":"FindCommand --\u003e FindCommandParser :","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"Shauryan123"},"content":"deactivate FindCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"Shauryan123"},"content":"FindCommandParser --\u003e AddressBookParser : d","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"Shauryan123"},"content":"deactivate FindCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"Shauryan123"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"Shauryan123"},"content":"FindCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"Shauryan123"},"content":"destroy FindCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"Shauryan123"},"content":"AddressBookParser --\u003e LogicManager : d","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"Shauryan123"},"content":"deactivate AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"Shauryan123"},"content":"LogicManager -\u003e FindCommand : execute(m)","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"Shauryan123"},"content":"activate FindCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"Shauryan123"},"content":"FindCommand -\u003e Model : updateFilteredPersonList(p)","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"Shauryan123"},"content":"activate Model","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"Shauryan123"},"content":"Model --\u003e FindCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"Shauryan123"},"content":"deactivate Model","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"Shauryan123"},"content":"create CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"Shauryan123"},"content":"FindCommand -\u003e CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"Shauryan123"},"content":"activate CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"Shauryan123"},"content":"CommandResult --\u003e FindCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"Shauryan123"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"Shauryan123"},"content":"FindCommand --\u003e LogicManager : r","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"Shauryan123"},"content":"deactivate FindCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"Shauryan123"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"Shauryan123"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"Shauryan123"},"content":"@enduml","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"Shauryan123":70}},{"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":"-"},"content":"Class UniquePersonList","lastModifiedDate":"2021-07-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Class Person","lastModifiedDate":"2019-07-03"},{"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":"-"},"content":"Class Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"Class Tag","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"kaiyi27"},"content":"Class Policy","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"kaiyi27"},"content":"Class Relationship","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":"AddressBook *--\u003e \"1\" UniquePersonList","lastModifiedDate":"2019-07-30"},{"lineNumber":41,"author":{"gitId":"-"},"content":"UniquePersonList --\u003e \"~* all\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":42,"author":{"gitId":"-"},"content":"Person *--\u003e Name","lastModifiedDate":"2019-07-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"Person *--\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"Person *--\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"Person *--\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"kaiyi27"},"content":"Person *--\u003e Policy","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"kaiyi27"},"content":"Person *--\u003e Relationship","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":"Person *--\u003e \"*\" Tag","lastModifiedDate":"2019-07-03"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":50,"author":{"gitId":"-"},"content":"Person -[hidden]up--\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"UniquePersonList -[hidden]right-\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":"Name -[hidden]right-\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":54,"author":{"gitId":"-"},"content":"Phone -[hidden]right-\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":55,"author":{"gitId":"-"},"content":"Address -[hidden]right-\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":"ModelManager --\u003e \"~* filtered\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":58,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"kaiyi27":4,"-":54}},{"path":"docs/diagrams/PolicySequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"ibnu2651"},"content":"@startuml","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"ibnu2651"},"content":"!include style.puml","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"ibnu2651"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"ibnu2651"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"ibnu2651"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"ibnu2651"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"ibnu2651"},"content":"participant \":PolicyCommandParser\" as PolicyCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"ibnu2651"},"content":"participant \"po:PolicyCommand\" as PolicyCommand LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"ibnu2651"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"ibnu2651"},"content":"participant \"p:Person\" as Person LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"ibnu2651"},"content":"end box","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"ibnu2651"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"ibnu2651"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"ibnu2651"},"content":"end box","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"ibnu2651"},"content":"[-\u003e LogicManager : execute(\"policy 1 po/Policy XYZ\")","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"ibnu2651"},"content":"activate LogicManager","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"ibnu2651"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"policy 1 po/Policy XYZ\")","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"ibnu2651"},"content":"activate AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"ibnu2651"},"content":"create PolicyCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"ibnu2651"},"content":"AddressBookParser -\u003e PolicyCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"ibnu2651"},"content":"activate PolicyCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"ibnu2651"},"content":"PolicyCommandParser --\u003e AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"ibnu2651"},"content":"deactivate PolicyCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"ibnu2651"},"content":"AddressBookParser -\u003e PolicyCommandParser : parse(\"1 po/Policy XYZ\")","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"ibnu2651"},"content":"activate PolicyCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"ibnu2651"},"content":"create PolicyCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"ibnu2651"},"content":"PolicyCommandParser -\u003e PolicyCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"ibnu2651"},"content":"activate PolicyCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"ibnu2651"},"content":"PolicyCommand --\u003e PolicyCommandParser :","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"ibnu2651"},"content":"deactivate PolicyCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"ibnu2651"},"content":"PolicyCommandParser --\u003e AddressBookParser : po","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"ibnu2651"},"content":"deactivate PolicyCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"ibnu2651"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"ibnu2651"},"content":"PolicyCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"ibnu2651"},"content":"destroy PolicyCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"ibnu2651"},"content":"AddressBookParser --\u003e LogicManager : po","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"ibnu2651"},"content":"deactivate AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"ibnu2651"},"content":"LogicManager -\u003e PolicyCommand : execute(m)","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"ibnu2651"},"content":"activate PolicyCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"ibnu2651"},"content":"create Person","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"ibnu2651"},"content":"PolicyCommand -\u003e Person :","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"ibnu2651"},"content":"activate Person","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"ibnu2651"},"content":"Person --\u003e PolicyCommand :","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"ibnu2651"},"content":"deactivate Person","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"ibnu2651"},"content":"PolicyCommand -\u003e Model : setPerson(1, p)","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"ibnu2651"},"content":"activate Model","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"ibnu2651"},"content":"Model --\u003e PolicyCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"ibnu2651"},"content":"deactivate Model","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"ibnu2651"},"content":"create CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"ibnu2651"},"content":"PolicyCommand -\u003e CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"ibnu2651"},"content":"activate CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"ibnu2651"},"content":"destroy Person","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"ibnu2651"},"content":"CommandResult --\u003e PolicyCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"ibnu2651"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"ibnu2651"},"content":"PolicyCommand --\u003e LogicManager : r","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"ibnu2651"},"content":"deactivate PolicyCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"ibnu2651"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"ibnu2651"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"ibnu2651"},"content":"@enduml","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"ibnu2651":79}},{"path":"docs/diagrams/RedoSequenceDiagram-Logic.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"justincred"},"content":"@startuml","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"justincred"},"content":"!include style.puml","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"justincred"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"justincred"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"justincred"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"justincred"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"justincred"},"content":"participant \"r:RedoCommand\" as RedoCommand LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"justincred"},"content":"end box","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"justincred"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"justincred"},"content":"participant \":Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"justincred"},"content":"end box","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"justincred"},"content":"[-\u003e LogicManager : execute(redo)","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"justincred"},"content":"activate LogicManager","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"justincred"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(redo)","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"justincred"},"content":"activate AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"justincred"},"content":"create RedoCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"justincred"},"content":"AddressBookParser -\u003e RedoCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"justincred"},"content":"activate RedoCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"justincred"},"content":"RedoCommand --\u003e AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"justincred"},"content":"deactivate RedoCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"justincred"},"content":"AddressBookParser --\u003e LogicManager : r","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"justincred"},"content":"deactivate AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"justincred"},"content":"LogicManager -\u003e RedoCommand : execute(model)","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"justincred"},"content":"activate RedoCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"justincred"},"content":"RedoCommand -\u003e Model : redoAddressBook()","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"justincred"},"content":"activate Model","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"justincred"},"content":"Model --\u003e RedoCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"justincred"},"content":"deactivate Model","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"justincred"},"content":"RedoCommand -\u003e Model : updateFilteredPersonList(show_all)","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"justincred"},"content":"activate Model","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"justincred"},"content":"Model --\u003e RedoCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"justincred"},"content":"deactivate Model","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"justincred"},"content":"RedoCommand --\u003e LogicManager : result","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"justincred"},"content":"deactivate RedoCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"justincred"},"content":"RedoCommand -[hidden]-\u003e LogicManager : result","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"justincred"},"content":"destroy RedoCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"justincred"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"justincred"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"justincred"},"content":"@enduml","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"justincred":52}},{"path":"docs/diagrams/UndoRedoState4.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam ClassFontColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam ClassBorderColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"skinparam ClassBackgroundColor #FFFFAA","lastModifiedDate":"2023-07-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"title After command \"list\"","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"package States \u003c\u003crectangle\u003e\u003e {","lastModifiedDate":"2019-07-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":" class State1 as \"\u003cu\u003eab0:AddressBook\u003c/u\u003e\"","lastModifiedDate":"2023-07-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":" class State2 as \"\u003cu\u003eab1:AddressBook\u003c/u\u003e\"","lastModifiedDate":"2023-07-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":" class State3 as \"\u003cu\u003eab2:AddressBook\u003c/u\u003e\"","lastModifiedDate":"2023-07-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"State1 -[hidden]right-\u003e State2","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"State2 -[hidden]right-\u003e State3","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"class Pointer as \"Current State\" #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"Pointer -up-\u003e State2","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"@end","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"kaiyi27":1,"-":21}},{"path":"docs/diagrams/UndoSequenceDiagram-Logic.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 \"u:UndoCommand\" as UndoCommand LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"participant \":Model\" as Model MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"[-\u003e LogicManager : execute(undo)","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"activate LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(undo)","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"activate AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"create UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"AddressBookParser -\u003e UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"activate UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"UndoCommand --\u003e AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":"deactivate UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"AddressBookParser --\u003e LogicManager : u","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"deactivate AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"LogicManager -\u003e UndoCommand : execute()","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"activate UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"UndoCommand -\u003e Model : undoAddressBook()","lastModifiedDate":"2019-07-03"},{"lineNumber":34,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":"activate Model","lastModifiedDate":"2019-07-03"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":37,"author":{"gitId":"-"},"content":"Model --\u003e UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"deactivate Model","lastModifiedDate":"2019-07-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":40,"author":{"gitId":"justincred"},"content":"UndoCommand -\u003e Model : updateFilteredPersonList(show_all)","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"justincred"},"content":"activate Model","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"justincred"},"content":"Model --\u003e UndoCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"justincred"},"content":"deactivate Model","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":"UndoCommand --\u003e LogicManager : result","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"deactivate UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":47,"author":{"gitId":"-"},"content":"UndoCommand -[hidden]-\u003e LogicManager : result","lastModifiedDate":"2019-07-03"},{"lineNumber":48,"author":{"gitId":"-"},"content":"destroy UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":50,"author":{"gitId":"-"},"content":"[\u003c--LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"deactivate LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":52,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"justincred":6,"-":46}},{"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":"2024-03-17"},{"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":"2024-03-17"},{"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":"Shauryan123"},"content":"import seedu.address.storage.InsuraConnectBookStorage;","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"Shauryan123"},"content":"import seedu.address.storage.JsonInsuraConnectBookStorage;","lastModifiedDate":"2024-03-16"},{"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":"-"},"content":" public static final Version VERSION \u003d new Version(0, 2, 2, true);","lastModifiedDate":"2023-08-21"},{"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":"ibnu2651"},"content":" InsuraConnectBookStorage insuraConnectBookStorage \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"ibnu2651"},"content":" new JsonInsuraConnectBookStorage(userPrefs.getAddressBookFilePath());","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"Shauryan123"},"content":" storage \u003d new StorageManager(insuraConnectBookStorage, userPrefsStorage);","lastModifiedDate":"2024-03-16"},{"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":"-"},"content":" logger.info(\"Using data file : \" + storage.getAddressBookFilePath());","lastModifiedDate":"2023-07-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":79,"author":{"gitId":"-"},"content":" Optional\u003cReadOnlyAddressBook\u003e addressBookOptional;","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook initialData;","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":" addressBookOptional \u003d storage.readAddressBook();","lastModifiedDate":"2016-09-25"},{"lineNumber":83,"author":{"gitId":"-"},"content":" if (!addressBookOptional.isPresent()) {","lastModifiedDate":"2016-09-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":" logger.info(\"Creating a new data file \" + storage.getAddressBookFilePath()","lastModifiedDate":"2023-05-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":" + \" populated with a sample AddressBook.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":87,"author":{"gitId":"-"},"content":" initialData \u003d addressBookOptional.orElseGet(SampleDataUtil::getSampleAddressBook);","lastModifiedDate":"2016-12-20"},{"lineNumber":88,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":" logger.warning(\"Data file at \" + storage.getAddressBookFilePath() + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" + \" Will be starting with an empty AddressBook.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":" initialData \u003d new AddressBook();","lastModifiedDate":"2024-03-17"},{"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":"2016-09-25"},{"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":"-"},"content":" if (!configOptional.isPresent()) {","lastModifiedDate":"2023-01-03"},{"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":"-"},"content":" if (!prefsOptional.isPresent()) {","lastModifiedDate":"2023-01-03"},{"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":"-"},"content":" logger.info(\"Starting AddressBook \" + MainApp.VERSION);","lastModifiedDate":"2016-09-29"},{"lineNumber":175,"author":{"gitId":"-"},"content":" ui.start(primaryStage);","lastModifiedDate":"2016-09-25"},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":179,"author":{"gitId":"-"},"content":" public void stop() {","lastModifiedDate":"2016-08-08"},{"lineNumber":180,"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":181,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":182,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(model.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":183,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":184,"author":{"gitId":"-"},"content":" logger.severe(\"Failed to save preferences \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":187,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"Shauryan123":3,"ibnu2651":2,"-":182}},{"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":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":23,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"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":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"kaiyi27"},"content":" .append(\"; Relationship: \")","lastModifiedDate":"2024-03-10"},{"lineNumber":49,"author":{"gitId":"kaiyi27"},"content":" .append(person.getRelationship())","lastModifiedDate":"2024-03-10"},{"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":"-"},"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":{"Shauryan123":2,"kaiyi27":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":"-"},"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":"kaiyi27"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_RELATIONSHIP;","lastModifiedDate":"2024-03-10"},{"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":"Shauryan123"},"content":" + PREFIX_RELATIONSHIP + \"RELATIONSHIP \"","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":37,"author":{"gitId":"Shauryan123"},"content":" + PREFIX_RELATIONSHIP + \"client \"","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2017-05-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"owesMoney\";","lastModifiedDate":"2017-05-09"},{"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":"justincred"},"content":" model.commitAddressBook();","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return true;","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":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"Shauryan123":2,"kaiyi27":1,"justincred":1,"-":84}},{"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":"-"},"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":"justincred"},"content":" model.commitAddressBook();","lastModifiedDate":"2024-03-16"},{"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":{"justincred":1,"-":23}},{"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":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Person: %1$s\";","lastModifiedDate":"2016-08-24"},{"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":"justincred"},"content":" model.commitAddressBook();","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete)));","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (!(other instanceof DeleteCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return targetIndex.equals(otherDeleteCommand.targetIndex);","lastModifiedDate":"2023-07-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"justincred":1,"-":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":"-"},"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":"kaiyi27"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_RELATIONSHIP;","lastModifiedDate":"2024-03-10"},{"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":"-"},"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":"ibnu2651"},"content":"import seedu.address.model.person.Policy;","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"ibnu2651"},"content":"import seedu.address.model.person.Relationship;","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26"},{"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":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the person identified \"","lastModifiedDate":"2016-12-26"},{"lineNumber":42,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06"},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06"},{"lineNumber":46,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":49,"author":{"gitId":"kaiyi27"},"content":" + \"[\" + PREFIX_RELATIONSHIP + \"RELATIONSHIP] \"","lastModifiedDate":"2024-03-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":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":59,"author":{"gitId":"kaiyi27"},"content":" public static final String MESSAGE_CANNOT_BE_EDIT \u003d \"Relationship is not allowed to be edited.\";","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25"},{"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":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25"},{"lineNumber":69,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25"},{"lineNumber":70,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25"},{"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":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","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":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":89,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":92,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":93,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":94,"author":{"gitId":"justincred"},"content":" model.commitAddressBook();","lastModifiedDate":"2024-03-16"},{"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":"ibnu2651"},"content":" Policy updatedPolicy \u003d personToEdit.getPolicy();","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"kaiyi27"},"content":" Relationship updatedRelationship \u003d personToEdit.getRelationship();","lastModifiedDate":"2024-03-21"},{"lineNumber":111,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2017-06-21"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":113,"author":{"gitId":"ibnu2651"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedRelationship,","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"ibnu2651"},"content":" updatedPolicy, updatedTags);","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-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":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13"},{"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":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23"},{"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":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26"},{"lineNumber":144,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26"},{"lineNumber":145,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":146,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26"},{"lineNumber":147,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21"},{"lineNumber":148,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":149,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":150,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21"},{"lineNumber":151,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":153,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":155,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":156,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11"},{"lineNumber":157,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":158,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":159,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26"},{"lineNumber":160,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15"},{"lineNumber":161,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15"},{"lineNumber":162,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15"},{"lineNumber":163,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15"},{"lineNumber":164,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":167,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":168,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26"},{"lineNumber":169,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":170,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26"},{"lineNumber":171,"author":{"gitId":"-"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, tags);","lastModifiedDate":"2024-03-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 void setName(Name name) {","lastModifiedDate":"2017-06-21"},{"lineNumber":175,"author":{"gitId":"-"},"content":" this.name \u003d 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 Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":179,"author":{"gitId":"-"},"content":" return Optional.ofNullable(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 void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21"},{"lineNumber":183,"author":{"gitId":"-"},"content":" this.phone \u003d 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 Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26"},{"lineNumber":187,"author":{"gitId":"-"},"content":" return Optional.ofNullable(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 void setEmail(Email email) {","lastModifiedDate":"2017-06-21"},{"lineNumber":191,"author":{"gitId":"-"},"content":" this.email \u003d 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 Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":195,"author":{"gitId":"-"},"content":" return Optional.ofNullable(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 void setAddress(Address address) {","lastModifiedDate":"2017-06-21"},{"lineNumber":199,"author":{"gitId":"-"},"content":" this.address \u003d 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":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26"},{"lineNumber":203,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21"},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":205,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":206,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11"},{"lineNumber":207,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":208,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":209,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21"},{"lineNumber":210,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11"},{"lineNumber":211,"author":{"gitId":"-"},"content":" }","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":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11"},{"lineNumber":215,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11"},{"lineNumber":216,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11"},{"lineNumber":217,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":218,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":219,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11"},{"lineNumber":220,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":222,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":223,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":224,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":225,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":226,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":228,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":229,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05"},{"lineNumber":230,"author":{"gitId":"-"},"content":" return false;","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":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":234,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":235,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":236,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":237,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":238,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags);","lastModifiedDate":"2023-07-13"},{"lineNumber":239,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":252,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"kaiyi27":5,"ibnu2651":6,"justincred":1,"-":240}},{"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":"ibnu2651"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-18"},{"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-07-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":10,"author":{"gitId":"Shauryan123"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-16"},{"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":"ibnu2651"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all persons whose names, relationships, \"","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"ibnu2651"},"content":" + \"or tags contain any of \"","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \"the specified keywords (case-insensitive) and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2018-04-01"},{"lineNumber":23,"author":{"gitId":"ibnu2651"},"content":" + \"Parameters: KEYWORD_TYPE/KEYWORD [MORE_KEYWORDS]...\\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"ibnu2651"},"content":" + \"Example: \" + COMMAND_WORD + \" n/alice n/bob\";","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":26,"author":{"gitId":"Shauryan123"},"content":" private final Predicate\u003cPerson\u003e predicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"Shauryan123"},"content":" public FindCommand(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(predicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" return new CommandResult(","lastModifiedDate":"2018-04-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":" String.format(Messages.MESSAGE_PERSONS_LISTED_OVERVIEW, model.getFilteredPersonList().size()));","lastModifiedDate":"2018-04-01"},{"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":"Shauryan123"},"content":" public Predicate\u003cPerson\u003e getPredicate() {","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"Shauryan123"},"content":" return predicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"Shauryan123":7,"ibnu2651":6,"-":52}},{"path":"src/main/java/seedu/address/logic/commands/PolicyCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ibnu2651"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"ibnu2651"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"ibnu2651"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_POLICY;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"ibnu2651"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"ibnu2651"},"content":"import java.util.List;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"ibnu2651"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"ibnu2651"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"ibnu2651"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"ibnu2651"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"ibnu2651"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"ibnu2651"},"content":"import seedu.address.model.person.Policy;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"ibnu2651"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"ibnu2651"},"content":" * Changes the policy of an existing person in the address book.","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"ibnu2651"},"content":"public class PolicyCommand extends Command {","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"ibnu2651"},"content":" public static final String COMMAND_WORD \u003d \"policy\";","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"ibnu2651"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the policy of the person identified \"","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"ibnu2651"},"content":" + \"by the index number used in the last person listing. \"","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"ibnu2651"},"content":" + \"Existing policy will be overwritten by the input.\\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"ibnu2651"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"ibnu2651"},"content":" + PREFIX_POLICY + \"[POLICY]\\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"ibnu2651"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"ibnu2651"},"content":" + PREFIX_POLICY + \"Policy XYZ\";","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"ibnu2651"},"content":" public static final String MESSAGE_ADD_POLICY_SUCCESS \u003d \"Added policy to Person: %1$s\";","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"ibnu2651"},"content":" public static final String MESSAGE_DELETE_POLICY_SUCCESS \u003d \"Removed policy from Person: %1$s\";","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"ibnu2651"},"content":" public static final String MESSAGE_PERSON_NOT_CLIENT_FAILURE \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"ibnu2651"},"content":" \"Invalid person. Only clients can be assigned a policy\";","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"ibnu2651"},"content":" private final Index index;","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"ibnu2651"},"content":" private final Policy policy;","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"ibnu2651"},"content":" * @param index of the person in the filtered person list to edit the policy","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"ibnu2651"},"content":" * @param policy of the person to be updated to","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"ibnu2651"},"content":" public PolicyCommand(Index index, Policy policy) {","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"ibnu2651"},"content":" requireAllNonNull(index, policy);","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"ibnu2651"},"content":" this.index \u003d index;","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"ibnu2651"},"content":" this.policy \u003d policy;","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"ibnu2651"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"ibnu2651"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"ibnu2651"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"ibnu2651"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"ibnu2651"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"ibnu2651"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"ibnu2651"},"content":" if (!personToEdit.isClient()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"ibnu2651"},"content":" throw new CommandException(MESSAGE_PERSON_NOT_CLIENT_FAILURE);","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"ibnu2651"},"content":" Person editedPerson \u003d new Person(personToEdit.getName(), personToEdit.getPhone(), personToEdit.getEmail(),","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"ibnu2651"},"content":" personToEdit.getAddress(), personToEdit.getRelationship(), policy, personToEdit.getTags());","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"ibnu2651"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"ibnu2651"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"ibnu2651"},"content":" model.commitAddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"ibnu2651"},"content":" return new CommandResult(generateSuccessMessage(editedPerson));","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"ibnu2651"},"content":" * Generates a command execution success message based on whether the policy is added to or removed from","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"ibnu2651"},"content":" * {@code personToEdit}.","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"ibnu2651"},"content":" private String generateSuccessMessage(Person personToEdit) {","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"ibnu2651"},"content":" String message \u003d !policy.value.isEmpty() ? MESSAGE_ADD_POLICY_SUCCESS : MESSAGE_DELETE_POLICY_SUCCESS;","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"ibnu2651"},"content":" return String.format(message, Messages.format(personToEdit));","lastModifiedDate":"2024-03-23"},{"lineNumber":81,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"ibnu2651"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"ibnu2651"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"ibnu2651"},"content":" // short circuit if same object","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"ibnu2651"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-16"},{"lineNumber":87,"author":{"gitId":"ibnu2651"},"content":" return true;","lastModifiedDate":"2024-03-16"},{"lineNumber":88,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":89,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":90,"author":{"gitId":"ibnu2651"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-16"},{"lineNumber":91,"author":{"gitId":"ibnu2651"},"content":" if (!(other instanceof PolicyCommand)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":92,"author":{"gitId":"ibnu2651"},"content":" return false;","lastModifiedDate":"2024-03-16"},{"lineNumber":93,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":94,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":95,"author":{"gitId":"ibnu2651"},"content":" // state check","lastModifiedDate":"2024-03-16"},{"lineNumber":96,"author":{"gitId":"ibnu2651"},"content":" PolicyCommand e \u003d (PolicyCommand) other;","lastModifiedDate":"2024-03-16"},{"lineNumber":97,"author":{"gitId":"ibnu2651"},"content":" return index.equals(e.index)","lastModifiedDate":"2024-03-16"},{"lineNumber":98,"author":{"gitId":"ibnu2651"},"content":" \u0026\u0026 policy.equals(e.policy);","lastModifiedDate":"2024-03-16"},{"lineNumber":99,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":100,"author":{"gitId":"ibnu2651"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"ibnu2651":100}},{"path":"src/main/java/seedu/address/logic/commands/RedoCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"justincred"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"justincred"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"justincred"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"justincred"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"justincred"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"justincred"},"content":"import seedu.address.model.VersionedAddressBook;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"justincred"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"justincred"},"content":" * Reverts the {@code model}\u0027s address book to its previously undone state.","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"justincred"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"justincred"},"content":"public class RedoCommand extends Command {","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"justincred"},"content":" public static final String COMMAND_WORD \u003d \"redo\";","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"justincred"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Redo success!\";","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"justincred"},"content":" public static final String MESSAGE_FAILURE \u003d \"No more commands to redo!\";","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"justincred"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"justincred"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"justincred"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"justincred"},"content":" try {","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"justincred"},"content":" model.redoAddressBook();","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"justincred"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"justincred"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"justincred"},"content":" } catch (VersionedAddressBook.NoRedoableStateException e) {","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"justincred"},"content":" throw new CommandException(MESSAGE_FAILURE);","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"justincred"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"justincred"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"justincred"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"justincred":30}},{"path":"src/main/java/seedu/address/logic/commands/ScheduleMeetingCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Shauryan123"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-23"},{"lineNumber":2,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":3,"author":{"gitId":"Shauryan123"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-23"},{"lineNumber":4,"author":{"gitId":"Shauryan123"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MEETING_DATE;","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"Shauryan123"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MEETING_TIME;","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"Shauryan123"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MEETING_DURATION;","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"Shauryan123"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MEETING_AGENDA;","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"Shauryan123"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MEETING_NOTES;","lastModifiedDate":"2024-03-23"},{"lineNumber":9,"author":{"gitId":"Shauryan123"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"Shauryan123"},"content":"import java.time.Duration;","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"Shauryan123"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"Shauryan123"},"content":"import java.time.LocalTime;","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"Shauryan123"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-03-23"},{"lineNumber":15,"author":{"gitId":"Shauryan123"},"content":"import java.util.List;","lastModifiedDate":"2024-03-23"},{"lineNumber":16,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"Shauryan123"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-23"},{"lineNumber":18,"author":{"gitId":"Shauryan123"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"Shauryan123"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"Shauryan123"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"Shauryan123"},"content":"import seedu.address.model.person.Meeting;","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"Shauryan123"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"Shauryan123"},"content":"/**","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"Shauryan123"},"content":" * Schedules a meeting with an existing person in the address book.","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"Shauryan123"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":27,"author":{"gitId":"Shauryan123"},"content":"public class ScheduleMeetingCommand extends Command {","lastModifiedDate":"2024-03-23"},{"lineNumber":28,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":29,"author":{"gitId":"Shauryan123"},"content":" public static final String COMMAND_WORD \u003d \"schedule\";","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"Shauryan123"},"content":" public static final String MESSAGE_MEETING_SCHEDULED_SUCCESS \u003d \"Meeting scheduled successfully: %1$s\";","lastModifiedDate":"2024-03-24"},{"lineNumber":32,"author":{"gitId":"Shauryan123"},"content":" public static final String MESSAGE_MEETING_RESCHEDULED_SUCCESS \u003d \"Meeting rescheduled successfully: %1$s\";","lastModifiedDate":"2024-03-24"},{"lineNumber":33,"author":{"gitId":"Shauryan123"},"content":" public static final String MESSAGE_MEETING_CANCELED_SUCCESS \u003d \"Meeting canceled successfully: %1$s\";","lastModifiedDate":"2024-03-24"},{"lineNumber":34,"author":{"gitId":"Shauryan123"},"content":" public static final String MESSAGE_MEETING_OVERLAP \u003d \"Meeting cannot be scheduled due to overlapping times\";","lastModifiedDate":"2024-03-24"},{"lineNumber":35,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":36,"author":{"gitId":"Shauryan123"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Schedules a meeting with the person identified \"","lastModifiedDate":"2024-03-23"},{"lineNumber":37,"author":{"gitId":"Shauryan123"},"content":" + \"by the index number used in the last person listing. \"","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"Shauryan123"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2024-03-23"},{"lineNumber":39,"author":{"gitId":"Shauryan123"},"content":" + PREFIX_MEETING_DATE + \"[DATE] \"","lastModifiedDate":"2024-03-23"},{"lineNumber":40,"author":{"gitId":"Shauryan123"},"content":" + PREFIX_MEETING_TIME + \"[TIME] \"","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"Shauryan123"},"content":" + PREFIX_MEETING_DURATION + \"[DURATION in minutes] \"","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"Shauryan123"},"content":" + PREFIX_MEETING_AGENDA + \"[AGENDA] \"","lastModifiedDate":"2024-03-23"},{"lineNumber":43,"author":{"gitId":"Shauryan123"},"content":" + PREFIX_MEETING_NOTES + \"[NOTES]\\n\"","lastModifiedDate":"2024-03-23"},{"lineNumber":44,"author":{"gitId":"Shauryan123"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2024-03-23"},{"lineNumber":45,"author":{"gitId":"Shauryan123"},"content":" + PREFIX_MEETING_DATE + \"2023-03-20 \"","lastModifiedDate":"2024-03-23"},{"lineNumber":46,"author":{"gitId":"Shauryan123"},"content":" + PREFIX_MEETING_TIME + \"14:00 \"","lastModifiedDate":"2024-03-23"},{"lineNumber":47,"author":{"gitId":"Shauryan123"},"content":" + PREFIX_MEETING_DURATION + \"60 \"","lastModifiedDate":"2024-03-23"},{"lineNumber":48,"author":{"gitId":"Shauryan123"},"content":" + PREFIX_MEETING_AGENDA + \"Discuss new policy \"","lastModifiedDate":"2024-03-23"},{"lineNumber":49,"author":{"gitId":"Shauryan123"},"content":" + PREFIX_MEETING_NOTES + \"Bring all necessary documents\";","lastModifiedDate":"2024-03-23"},{"lineNumber":50,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":51,"author":{"gitId":"Shauryan123"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Meeting scheduled with Person: %1$s\";","lastModifiedDate":"2024-03-23"},{"lineNumber":52,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":53,"author":{"gitId":"Shauryan123"},"content":" private final Index index;","lastModifiedDate":"2024-03-23"},{"lineNumber":54,"author":{"gitId":"Shauryan123"},"content":" private final Meeting meeting;","lastModifiedDate":"2024-03-23"},{"lineNumber":55,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":56,"author":{"gitId":"Shauryan123"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":57,"author":{"gitId":"Shauryan123"},"content":" * @param index of the person in the filtered person list to schedule the meeting with","lastModifiedDate":"2024-03-23"},{"lineNumber":58,"author":{"gitId":"Shauryan123"},"content":" * @param meeting details of the meeting to be scheduled","lastModifiedDate":"2024-03-23"},{"lineNumber":59,"author":{"gitId":"Shauryan123"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":60,"author":{"gitId":"Shauryan123"},"content":" public ScheduleMeetingCommand(Index index, Meeting meeting) {","lastModifiedDate":"2024-03-23"},{"lineNumber":61,"author":{"gitId":"Shauryan123"},"content":" requireAllNonNull(index, meeting);","lastModifiedDate":"2024-03-23"},{"lineNumber":62,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":63,"author":{"gitId":"Shauryan123"},"content":" this.index \u003d index;","lastModifiedDate":"2024-03-23"},{"lineNumber":64,"author":{"gitId":"Shauryan123"},"content":" this.meeting \u003d meeting;","lastModifiedDate":"2024-03-23"},{"lineNumber":65,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":66,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":67,"author":{"gitId":"Shauryan123"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":68,"author":{"gitId":"Shauryan123"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-23"},{"lineNumber":69,"author":{"gitId":"Shauryan123"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-23"},{"lineNumber":70,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":71,"author":{"gitId":"Shauryan123"},"content":" if (model.hasMeetingOverlap(this.meeting)) {","lastModifiedDate":"2024-03-24"},{"lineNumber":72,"author":{"gitId":"Shauryan123"},"content":" throw new CommandException(\"Meeting overlaps with existing meetings.\");","lastModifiedDate":"2024-03-24"},{"lineNumber":73,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":74,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":75,"author":{"gitId":"Shauryan123"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-23"},{"lineNumber":76,"author":{"gitId":"Shauryan123"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-23"},{"lineNumber":77,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":78,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":79,"author":{"gitId":"Shauryan123"},"content":" Person personToMeetOriginal \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-03-24"},{"lineNumber":80,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":81,"author":{"gitId":"Shauryan123"},"content":" // Create a copy of the original person and add the meeting to the copy","lastModifiedDate":"2024-03-24"},{"lineNumber":82,"author":{"gitId":"Shauryan123"},"content":" Person personToMeetUpdated \u003d personToMeetOriginal.getCopy();","lastModifiedDate":"2024-03-24"},{"lineNumber":83,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":84,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":85,"author":{"gitId":"Shauryan123"},"content":" System.out.println(personToMeetUpdated.getMeetings());","lastModifiedDate":"2024-03-24"},{"lineNumber":86,"author":{"gitId":"Shauryan123"},"content":" try {","lastModifiedDate":"2024-03-23"},{"lineNumber":87,"author":{"gitId":"Shauryan123"},"content":" personToMeetUpdated.addMeeting(this.meeting);","lastModifiedDate":"2024-03-24"},{"lineNumber":88,"author":{"gitId":"Shauryan123"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-03-23"},{"lineNumber":89,"author":{"gitId":"Shauryan123"},"content":" throw new CommandException(e.getMessage());","lastModifiedDate":"2024-03-23"},{"lineNumber":90,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":91,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":92,"author":{"gitId":"Shauryan123"},"content":" // Check for global meeting overlap","lastModifiedDate":"2024-03-24"},{"lineNumber":93,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":94,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":95,"author":{"gitId":"Shauryan123"},"content":" // Update the person in the model","lastModifiedDate":"2024-03-24"},{"lineNumber":96,"author":{"gitId":"Shauryan123"},"content":" model.setPerson(personToMeetOriginal, personToMeetUpdated);","lastModifiedDate":"2024-03-24"},{"lineNumber":97,"author":{"gitId":"Shauryan123"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-23"},{"lineNumber":98,"author":{"gitId":"Shauryan123"},"content":" model.commitAddressBook();","lastModifiedDate":"2024-03-23"},{"lineNumber":99,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":100,"author":{"gitId":"Shauryan123"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, personToMeetUpdated));","lastModifiedDate":"2024-03-24"},{"lineNumber":101,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":102,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":103,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":104,"author":{"gitId":"Shauryan123"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":105,"author":{"gitId":"Shauryan123"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-23"},{"lineNumber":106,"author":{"gitId":"Shauryan123"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-23"},{"lineNumber":107,"author":{"gitId":"Shauryan123"},"content":" return true;","lastModifiedDate":"2024-03-23"},{"lineNumber":108,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":109,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":110,"author":{"gitId":"Shauryan123"},"content":" if (!(other instanceof ScheduleMeetingCommand)) {","lastModifiedDate":"2024-03-23"},{"lineNumber":111,"author":{"gitId":"Shauryan123"},"content":" return false;","lastModifiedDate":"2024-03-23"},{"lineNumber":112,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":113,"author":{"gitId":"Shauryan123"},"content":" //to dist","lastModifiedDate":"2024-03-23"},{"lineNumber":114,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":115,"author":{"gitId":"Shauryan123"},"content":" ScheduleMeetingCommand e \u003d (ScheduleMeetingCommand) other;","lastModifiedDate":"2024-03-23"},{"lineNumber":116,"author":{"gitId":"Shauryan123"},"content":" return index.equals(e.index)","lastModifiedDate":"2024-03-23"},{"lineNumber":117,"author":{"gitId":"Shauryan123"},"content":" \u0026\u0026 meeting.equals(e.meeting);","lastModifiedDate":"2024-03-23"},{"lineNumber":118,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":119,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":120,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"}],"authorContributionMap":{"Shauryan123":120}},{"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":"-"},"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":"kaiyi27"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_RELATIONSHIP;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05"},{"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.person.Address;","lastModifiedDate":"2017-03-17"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-03-17"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-03-17"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-03-17"},{"lineNumber":21,"author":{"gitId":"ibnu2651"},"content":"import seedu.address.model.person.Policy;","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"ibnu2651"},"content":"import seedu.address.model.person.Relationship;","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":36,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":37,"author":{"gitId":"kaiyi27"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-03-10"},{"lineNumber":38,"author":{"gitId":"kaiyi27"},"content":" PREFIX_RELATIONSHIP, PREFIX_TAG);","lastModifiedDate":"2024-03-10"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":40,"author":{"gitId":"kaiyi27"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-03-10"},{"lineNumber":41,"author":{"gitId":"kaiyi27"},"content":" PREFIX_RELATIONSHIP) || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-03-10"},{"lineNumber":42,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":45,"author":{"gitId":"kaiyi27"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-03-10"},{"lineNumber":46,"author":{"gitId":"kaiyi27"},"content":" PREFIX_RELATIONSHIP);","lastModifiedDate":"2024-03-10"},{"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":"kaiyi27"},"content":" Relationship relationship \u003d ParserUtil.parseRelationship((argMultimap.getValue(PREFIX_RELATIONSHIP).get()));","lastModifiedDate":"2024-03-10"},{"lineNumber":52,"author":{"gitId":"ibnu2651"},"content":" Policy policy \u003d new Policy(\"\");","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":55,"author":{"gitId":"ibnu2651"},"content":" Person person \u003d new Person(name, phone, email, address, relationship, policy, tagList);","lastModifiedDate":"2024-03-17"},{"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":{"kaiyi27":8,"ibnu2651":4,"-":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":"Shauryan123"},"content":"import seedu.address.logic.commands.*;","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24"},{"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":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":33,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":41,"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":42,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29"},{"lineNumber":44,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":72,"author":{"gitId":"ibnu2651"},"content":" case PolicyCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"ibnu2651"},"content":" return new PolicyCommandParser().parse(arguments);","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"justincred"},"content":" case UndoCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"justincred"},"content":" return new UndoCommand();","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"justincred"},"content":" case RedoCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"justincred"},"content":" return new RedoCommand();","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"Shauryan123"},"content":" case ScheduleMeetingCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-23"},{"lineNumber":82,"author":{"gitId":"Shauryan123"},"content":" return new ScheduleMeetingCommandParser().parse(arguments);","lastModifiedDate":"2024-03-23"},{"lineNumber":83,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":84,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":85,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29"},{"lineNumber":88,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":92,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"Shauryan123":6,"ibnu2651":3,"justincred":6,"-":77}},{"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":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":79,"author":{"gitId":"Shauryan123"},"content":" /**","lastModifiedDate":"2024-03-24"},{"lineNumber":80,"author":{"gitId":"Shauryan123"},"content":" * Returns true if all the specified prefixes are present in the argument map.","lastModifiedDate":"2024-03-24"},{"lineNumber":81,"author":{"gitId":"Shauryan123"},"content":" *","lastModifiedDate":"2024-03-24"},{"lineNumber":82,"author":{"gitId":"Shauryan123"},"content":" * @param prefixes The prefixes to check for presence.","lastModifiedDate":"2024-03-24"},{"lineNumber":83,"author":{"gitId":"Shauryan123"},"content":" * @return True if all specified prefixes are present, otherwise false.","lastModifiedDate":"2024-03-24"},{"lineNumber":84,"author":{"gitId":"Shauryan123"},"content":" */","lastModifiedDate":"2024-03-24"},{"lineNumber":85,"author":{"gitId":"Shauryan123"},"content":" public boolean arePrefixesPresent(Prefix... prefixes) {","lastModifiedDate":"2024-03-24"},{"lineNumber":86,"author":{"gitId":"Shauryan123"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argMultimap.containsKey(prefix) \u0026\u0026 !getAllValues(prefix).isEmpty());","lastModifiedDate":"2024-03-24"},{"lineNumber":87,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-08"}],"authorContributionMap":{"Shauryan123":10,"-":78}},{"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":"-"},"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":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-16"},{"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":"-"},"content":" * Finds all zero-based prefix positions in the given arguments string.","lastModifiedDate":"2017-03-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * @param argsString Arguments string of the form: {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2017-03-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * @param prefixes Prefixes to find in the arguments string","lastModifiedDate":"2017-03-20"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @return List of zero-based prefix positions in the given arguments string","lastModifiedDate":"2017-03-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static List\u003cPrefixPosition\u003e findAllPrefixPositions(String argsString, Prefix... prefixes) {","lastModifiedDate":"2017-03-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return Arrays.stream(prefixes)","lastModifiedDate":"2018-01-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" .flatMap(prefix -\u003e findPrefixPositions(argsString, prefix).stream())","lastModifiedDate":"2018-01-21"},{"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":"-"},"content":" * {@see findAllPrefixPositions}","lastModifiedDate":"2017-03-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":48,"author":{"gitId":"-"},"content":" private static List\u003cPrefixPosition\u003e findPrefixPositions(String argsString, Prefix prefix) {","lastModifiedDate":"2017-03-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" List\u003cPrefixPosition\u003e positions \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2016-10-16"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":51,"author":{"gitId":"-"},"content":" int prefixPosition \u003d findPrefixPosition(argsString, prefix.getPrefix(), 0);","lastModifiedDate":"2017-05-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" while (prefixPosition !\u003d -1) {","lastModifiedDate":"2017-05-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" PrefixPosition extendedPrefix \u003d new PrefixPosition(prefix, prefixPosition);","lastModifiedDate":"2017-05-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" positions.add(extendedPrefix);","lastModifiedDate":"2016-10-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" prefixPosition \u003d findPrefixPosition(argsString, prefix.getPrefix(), prefixPosition);","lastModifiedDate":"2017-05-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return positions;","lastModifiedDate":"2016-10-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Returns the index of the first occurrence of {@code prefix} in","lastModifiedDate":"2017-05-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * {@code argsString} starting from index {@code fromIndex}. An occurrence","lastModifiedDate":"2017-05-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * is valid if there is a whitespace before {@code prefix}. Returns -1 if no","lastModifiedDate":"2017-05-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * such occurrence can be found.","lastModifiedDate":"2017-05-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * E.g if {@code argsString} \u003d \"e/hip/900\", {@code prefix} \u003d \"p/\" and","lastModifiedDate":"2017-05-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * {@code fromIndex} \u003d 0, this method returns -1 as there are no valid","lastModifiedDate":"2017-05-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * occurrences of \"p/\" with whitespace before it. However, if","lastModifiedDate":"2017-05-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * {@code argsString} \u003d \"e/hi p/900\", {@code prefix} \u003d \"p/\" and","lastModifiedDate":"2017-05-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * {@code fromIndex} \u003d 0, this method returns 5.","lastModifiedDate":"2017-05-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" private static int findPrefixPosition(String argsString, String prefix, int fromIndex) {","lastModifiedDate":"2017-05-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" int prefixIndex \u003d argsString.indexOf(\" \" + prefix, fromIndex);","lastModifiedDate":"2017-05-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return prefixIndex \u003d\u003d -1 ? -1","lastModifiedDate":"2017-05-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" : prefixIndex + 1; // +1 as offset for whitespace","lastModifiedDate":"2017-05-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Extracts prefixes and their argument values, and returns an {@code ArgumentMultimap} object that maps the","lastModifiedDate":"2017-03-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * extracted prefixes to their respective arguments. Prefixes are extracted based on their zero-based positions in","lastModifiedDate":"2017-03-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * {@code argsString}.","lastModifiedDate":"2017-03-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * @param argsString Arguments string of the form: {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2017-03-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * @param prefixPositions Zero-based positions of all prefixes in {@code argsString}","lastModifiedDate":"2017-03-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * @return ArgumentMultimap object that maps prefixes to their arguments","lastModifiedDate":"2017-03-08"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":88,"author":{"gitId":"-"},"content":" private static ArgumentMultimap extractArguments(String argsString, List\u003cPrefixPosition\u003e prefixPositions) {","lastModifiedDate":"2017-03-20"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":90,"author":{"gitId":"-"},"content":" // Sort by start position","lastModifiedDate":"2016-10-16"},{"lineNumber":91,"author":{"gitId":"-"},"content":" prefixPositions.sort((prefix1, prefix2) -\u003e prefix1.getStartPosition() - prefix2.getStartPosition());","lastModifiedDate":"2016-10-16"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":93,"author":{"gitId":"-"},"content":" // Insert a PrefixPosition to represent the preamble","lastModifiedDate":"2016-10-16"},{"lineNumber":94,"author":{"gitId":"-"},"content":" PrefixPosition preambleMarker \u003d new PrefixPosition(new Prefix(\"\"), 0);","lastModifiedDate":"2016-10-16"},{"lineNumber":95,"author":{"gitId":"-"},"content":" prefixPositions.add(0, preambleMarker);","lastModifiedDate":"2016-10-16"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":97,"author":{"gitId":"-"},"content":" // Add a dummy PrefixPosition to represent the end of the string","lastModifiedDate":"2016-10-16"},{"lineNumber":98,"author":{"gitId":"-"},"content":" PrefixPosition endPositionMarker \u003d new PrefixPosition(new Prefix(\"\"), argsString.length());","lastModifiedDate":"2016-10-16"},{"lineNumber":99,"author":{"gitId":"-"},"content":" prefixPositions.add(endPositionMarker);","lastModifiedDate":"2016-10-16"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":101,"author":{"gitId":"-"},"content":" // Map prefixes to their argument values (if any)","lastModifiedDate":"2017-03-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d new ArgumentMultimap();","lastModifiedDate":"2017-03-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" for (int i \u003d 0; i \u003c prefixPositions.size() - 1; i++) {","lastModifiedDate":"2016-10-16"},{"lineNumber":104,"author":{"gitId":"-"},"content":" // Extract and store prefixes and their arguments","lastModifiedDate":"2017-03-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Prefix argPrefix \u003d prefixPositions.get(i).getPrefix();","lastModifiedDate":"2017-03-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":" String argValue \u003d extractArgumentValue(argsString, prefixPositions.get(i), prefixPositions.get(i + 1));","lastModifiedDate":"2016-10-16"},{"lineNumber":107,"author":{"gitId":"-"},"content":" argMultimap.put(argPrefix, argValue);","lastModifiedDate":"2017-03-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":110,"author":{"gitId":"-"},"content":" return argMultimap;","lastModifiedDate":"2017-03-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":113,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * Returns the trimmed value of the argument in the arguments string specified by {@code currentPrefixPosition}.","lastModifiedDate":"2017-03-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * The end position of the value is determined by {@code nextPrefixPosition}.","lastModifiedDate":"2017-03-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":117,"author":{"gitId":"-"},"content":" private static String extractArgumentValue(String argsString,","lastModifiedDate":"2017-03-20"},{"lineNumber":118,"author":{"gitId":"-"},"content":" PrefixPosition currentPrefixPosition,","lastModifiedDate":"2016-10-16"},{"lineNumber":119,"author":{"gitId":"-"},"content":" PrefixPosition nextPrefixPosition) {","lastModifiedDate":"2016-10-16"},{"lineNumber":120,"author":{"gitId":"-"},"content":" Prefix prefix \u003d currentPrefixPosition.getPrefix();","lastModifiedDate":"2016-10-16"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":122,"author":{"gitId":"-"},"content":" int valueStartPos \u003d currentPrefixPosition.getStartPosition() + prefix.getPrefix().length();","lastModifiedDate":"2016-10-16"},{"lineNumber":123,"author":{"gitId":"-"},"content":" String value \u003d argsString.substring(valueStartPos, nextPrefixPosition.getStartPosition());","lastModifiedDate":"2016-10-16"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":125,"author":{"gitId":"-"},"content":" return value.trim();","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":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":129,"author":{"gitId":"-"},"content":" * Represents a prefix\u0027s position in an arguments string.","lastModifiedDate":"2017-03-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":131,"author":{"gitId":"-"},"content":" private static class PrefixPosition {","lastModifiedDate":"2017-03-20"},{"lineNumber":132,"author":{"gitId":"-"},"content":" private int startPosition;","lastModifiedDate":"2016-10-19"},{"lineNumber":133,"author":{"gitId":"-"},"content":" private final Prefix prefix;","lastModifiedDate":"2016-10-19"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":135,"author":{"gitId":"-"},"content":" PrefixPosition(Prefix prefix, int startPosition) {","lastModifiedDate":"2016-10-19"},{"lineNumber":136,"author":{"gitId":"-"},"content":" this.prefix \u003d prefix;","lastModifiedDate":"2016-10-19"},{"lineNumber":137,"author":{"gitId":"-"},"content":" this.startPosition \u003d startPosition;","lastModifiedDate":"2016-10-19"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":140,"author":{"gitId":"-"},"content":" int getStartPosition() {","lastModifiedDate":"2016-10-19"},{"lineNumber":141,"author":{"gitId":"-"},"content":" return startPosition;","lastModifiedDate":"2018-08-14"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":144,"author":{"gitId":"-"},"content":" Prefix getPrefix() {","lastModifiedDate":"2016-10-19"},{"lineNumber":145,"author":{"gitId":"-"},"content":" return prefix;","lastModifiedDate":"2018-08-14"},{"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-19"},{"lineNumber":149,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-16"}],"authorContributionMap":{"Shauryan123":1,"-":148}},{"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":"ibnu2651"},"content":" public static final Prefix PREFIX_POLICY \u003d new Prefix(\"po/\");","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":15,"author":{"gitId":"Shauryan123"},"content":" public static final Prefix PREFIX_RELATIONSHIP \u003d new Prefix(\"r/\"); // Add this line","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"Shauryan123"},"content":" public static final Prefix PREFIX_MEETING_DATE \u003d new Prefix(\"md/\");","lastModifiedDate":"2024-03-23"},{"lineNumber":18,"author":{"gitId":"Shauryan123"},"content":" public static final Prefix PREFIX_MEETING_TIME \u003d new Prefix(\"mt/\");","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"Shauryan123"},"content":" public static final Prefix PREFIX_MEETING_AGENDA \u003d new Prefix(\"ma/\");","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"Shauryan123"},"content":" public static final Prefix PREFIX_MEETING_NOTES \u003d new Prefix(\"mn/\");","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"Shauryan123"},"content":" public static final Prefix PREFIX_MEETING_DURATION \u003d new Prefix(\"mdur/\");","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"Shauryan123":8,"ibnu2651":1,"-":15}},{"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":"-"},"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":"kaiyi27"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_RELATIONSHIP;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":36,"author":{"gitId":"kaiyi27"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-03-10"},{"lineNumber":37,"author":{"gitId":"kaiyi27"},"content":" PREFIX_RELATIONSHIP, PREFIX_TAG);","lastModifiedDate":"2024-03-10"},{"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":"kaiyi27"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-03-10"},{"lineNumber":48,"author":{"gitId":"kaiyi27"},"content":" PREFIX_RELATIONSHIP);","lastModifiedDate":"2024-03-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":"-"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":62,"author":{"gitId":"-"},"content":" editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":64,"author":{"gitId":"kaiyi27"},"content":" if (argMultimap.getValue(PREFIX_RELATIONSHIP).isPresent()) {","lastModifiedDate":"2024-03-10"},{"lineNumber":65,"author":{"gitId":"kaiyi27"},"content":" throw new ParseException(EditCommand.MESSAGE_CANNOT_BE_EDIT);","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"kaiyi27"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":67,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":" parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPersonDescriptor::setTags);","lastModifiedDate":"2017-06-21"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":78,"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":79,"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":80,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07"},{"lineNumber":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":85,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":88,"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":89,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":92,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"kaiyi27":9,"-":83}},{"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":"ibnu2651"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"ibnu2651"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_RELATIONSHIP;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"ibnu2651"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":8,"author":{"gitId":"ibnu2651"},"content":"import java.util.List;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":12,"author":{"gitId":"ibnu2651"},"content":"import seedu.address.model.person.CombinedPredicate;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"Shauryan123"},"content":"import seedu.address.model.person.RelationshipContainsKeywordsPredicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"Shauryan123"},"content":"import seedu.address.model.person.TagContainsKeywordsPredicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new FindCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class FindCommandParser implements Parser\u003cFindCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the FindCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * and returns a FindCommand object for execution.","lastModifiedDate":"2019-05-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":27,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"Shauryan123"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public FindCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":31,"author":{"gitId":"Shauryan123"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_RELATIONSHIP, PREFIX_TAG);","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"Shauryan123"},"content":" if (args.trim().isEmpty()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"Shauryan123"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"Shauryan123"},"content":" List\u003cString\u003e nameKeywords \u003d argMultimap.getAllValues(PREFIX_NAME);","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"Shauryan123"},"content":" List\u003cString\u003e relationshipKeywords \u003d argMultimap.getAllValues(PREFIX_RELATIONSHIP);","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"Shauryan123"},"content":" List\u003cString\u003e tagKeywords \u003d argMultimap.getAllValues(PREFIX_TAG);","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"ibnu2651"},"content":" CombinedPredicate combinedPredicate \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"ibnu2651"},"content":" new CombinedPredicate(","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"ibnu2651"},"content":" new NameContainsKeywordsPredicate(nameKeywords),","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"ibnu2651"},"content":" new RelationshipContainsKeywordsPredicate(relationshipKeywords),","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"ibnu2651"},"content":" new TagContainsKeywordsPredicate(tagKeywords));","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"Shauryan123"},"content":" return new FindCommand(combinedPredicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"Shauryan123":14,"ibnu2651":10,"-":28}},{"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":"Shauryan123"},"content":"import java.time.Duration;","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"Shauryan123"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"Shauryan123"},"content":"import java.time.LocalTime;","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"Shauryan123"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-03-23"},{"lineNumber":9,"author":{"gitId":"Shauryan123"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11"},{"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.Address;","lastModifiedDate":"2017-02-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-02-11"},{"lineNumber":21,"author":{"gitId":"Shauryan123"},"content":"import seedu.address.model.person.Relationship;","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10"},{"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":"Shauryan123"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":107,"author":{"gitId":"Shauryan123"},"content":" * Parses a {@code String relationship} into a {@code Relationship}.","lastModifiedDate":"2024-03-16"},{"lineNumber":108,"author":{"gitId":"Shauryan123"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-16"},{"lineNumber":109,"author":{"gitId":"Shauryan123"},"content":" *","lastModifiedDate":"2024-03-16"},{"lineNumber":110,"author":{"gitId":"Shauryan123"},"content":" * @throws ParseException if the given {@code relationship} is invalid.","lastModifiedDate":"2024-03-16"},{"lineNumber":111,"author":{"gitId":"Shauryan123"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":112,"author":{"gitId":"Shauryan123"},"content":" public static Relationship parseRelationship(String relationship) throws ParseException {","lastModifiedDate":"2024-03-16"},{"lineNumber":113,"author":{"gitId":"Shauryan123"},"content":" requireNonNull(relationship);","lastModifiedDate":"2024-03-16"},{"lineNumber":114,"author":{"gitId":"Shauryan123"},"content":" String trimmedRelationship \u003d relationship.trim();","lastModifiedDate":"2024-03-16"},{"lineNumber":115,"author":{"gitId":"Shauryan123"},"content":" if (!Relationship.isValidRelationship(trimmedRelationship)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":116,"author":{"gitId":"Shauryan123"},"content":" throw new ParseException(Relationship.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":117,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":118,"author":{"gitId":"Shauryan123"},"content":" return new Relationship(trimmedRelationship);","lastModifiedDate":"2024-03-16"},{"lineNumber":119,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":120,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":121,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":122,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":123,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":124,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":125,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":126,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":127,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":128,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":129,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30"},{"lineNumber":130,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":131,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":132,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":134,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":137,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":138,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07"},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":140,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":141,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15"},{"lineNumber":142,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11"},{"lineNumber":143,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11"},{"lineNumber":144,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":146,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":148,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":149,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":150,"author":{"gitId":"Shauryan123"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":151,"author":{"gitId":"Shauryan123"},"content":" * Parses a {@code String date} into a {@code LocalDate}.","lastModifiedDate":"2024-03-23"},{"lineNumber":152,"author":{"gitId":"Shauryan123"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-23"},{"lineNumber":153,"author":{"gitId":"Shauryan123"},"content":" *","lastModifiedDate":"2024-03-23"},{"lineNumber":154,"author":{"gitId":"Shauryan123"},"content":" * @throws ParseException if the given {@code date} is invalid.","lastModifiedDate":"2024-03-23"},{"lineNumber":155,"author":{"gitId":"Shauryan123"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":156,"author":{"gitId":"Shauryan123"},"content":" public static LocalDate parseDate(String date) throws ParseException {","lastModifiedDate":"2024-03-23"},{"lineNumber":157,"author":{"gitId":"Shauryan123"},"content":" requireNonNull(date);","lastModifiedDate":"2024-03-23"},{"lineNumber":158,"author":{"gitId":"Shauryan123"},"content":" String trimmedDate \u003d date.trim();","lastModifiedDate":"2024-03-23"},{"lineNumber":159,"author":{"gitId":"Shauryan123"},"content":" try {","lastModifiedDate":"2024-03-23"},{"lineNumber":160,"author":{"gitId":"Shauryan123"},"content":" return LocalDate.parse(trimmedDate, DateTimeFormatter.ISO_LOCAL_DATE);","lastModifiedDate":"2024-03-23"},{"lineNumber":161,"author":{"gitId":"Shauryan123"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-03-23"},{"lineNumber":162,"author":{"gitId":"Shauryan123"},"content":" throw new ParseException(\"Invalid date format. Use YYYY-MM-DD.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":163,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":164,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":165,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":166,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":167,"author":{"gitId":"Shauryan123"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":168,"author":{"gitId":"Shauryan123"},"content":" * Parses a {@code String time} into a {@code LocalTime}.","lastModifiedDate":"2024-03-23"},{"lineNumber":169,"author":{"gitId":"Shauryan123"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-23"},{"lineNumber":170,"author":{"gitId":"Shauryan123"},"content":" *","lastModifiedDate":"2024-03-23"},{"lineNumber":171,"author":{"gitId":"Shauryan123"},"content":" * @throws ParseException if the given {@code time} is invalid.","lastModifiedDate":"2024-03-23"},{"lineNumber":172,"author":{"gitId":"Shauryan123"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":173,"author":{"gitId":"Shauryan123"},"content":" public static LocalTime parseTime(String time) throws ParseException {","lastModifiedDate":"2024-03-23"},{"lineNumber":174,"author":{"gitId":"Shauryan123"},"content":" requireNonNull(time);","lastModifiedDate":"2024-03-23"},{"lineNumber":175,"author":{"gitId":"Shauryan123"},"content":" String trimmedTime \u003d time.trim();","lastModifiedDate":"2024-03-23"},{"lineNumber":176,"author":{"gitId":"Shauryan123"},"content":" try {","lastModifiedDate":"2024-03-23"},{"lineNumber":177,"author":{"gitId":"Shauryan123"},"content":" return LocalTime.parse(trimmedTime, DateTimeFormatter.ISO_LOCAL_TIME);","lastModifiedDate":"2024-03-23"},{"lineNumber":178,"author":{"gitId":"Shauryan123"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-03-23"},{"lineNumber":179,"author":{"gitId":"Shauryan123"},"content":" throw new ParseException(\"Invalid time format. Use HH:MM.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":180,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":181,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":182,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":183,"author":{"gitId":"Shauryan123"},"content":" public static Duration parseDuration(String durationStr) throws ParseException {","lastModifiedDate":"2024-03-23"},{"lineNumber":184,"author":{"gitId":"Shauryan123"},"content":" requireNonNull(durationStr);","lastModifiedDate":"2024-03-23"},{"lineNumber":185,"author":{"gitId":"Shauryan123"},"content":" try {","lastModifiedDate":"2024-03-23"},{"lineNumber":186,"author":{"gitId":"Shauryan123"},"content":" long minutes \u003d Long.parseLong(durationStr);","lastModifiedDate":"2024-03-23"},{"lineNumber":187,"author":{"gitId":"Shauryan123"},"content":" return Duration.ofMinutes(minutes);","lastModifiedDate":"2024-03-23"},{"lineNumber":188,"author":{"gitId":"Shauryan123"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-03-23"},{"lineNumber":189,"author":{"gitId":"Shauryan123"},"content":" throw new ParseException(\"Invalid duration format. Use minutes as an integer.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":190,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":191,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":192,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"Shauryan123":68,"-":125}},{"path":"src/main/java/seedu/address/logic/parser/PolicyCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ibnu2651"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"ibnu2651"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"ibnu2651"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"ibnu2651"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_POLICY;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"ibnu2651"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"ibnu2651"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"ibnu2651"},"content":"import seedu.address.logic.commands.PolicyCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"ibnu2651"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"ibnu2651"},"content":"import seedu.address.model.person.Policy;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"ibnu2651"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"ibnu2651"},"content":" * Parses input arguments and creates a new {@code PolicyCommand} object","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"ibnu2651"},"content":"public class PolicyCommandParser implements Parser\u003cPolicyCommand\u003e {","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"ibnu2651"},"content":" * Parses the given {@code String} of arguments in the context of the {@code PolicyCommand}","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"ibnu2651"},"content":" * and returns a {@code PolicyCommand} object for execution.","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"ibnu2651"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"ibnu2651"},"content":" public PolicyCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"ibnu2651"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"ibnu2651"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_POLICY);","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"ibnu2651"},"content":" Index index;","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"ibnu2651"},"content":" try {","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"ibnu2651"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"ibnu2651"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"ibnu2651"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, PolicyCommand.MESSAGE_USAGE), ive);","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"ibnu2651"},"content":" String policy \u003d argMultimap.getValue(PREFIX_POLICY).orElse(\"\");","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"ibnu2651"},"content":" return new PolicyCommand(index, new Policy(policy));","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"ibnu2651"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"ibnu2651":37}},{"path":"src/main/java/seedu/address/logic/parser/ScheduleMeetingCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Shauryan123"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-23"},{"lineNumber":2,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":3,"author":{"gitId":"Shauryan123"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-23"},{"lineNumber":4,"author":{"gitId":"Shauryan123"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"Shauryan123"},"content":"import static seedu.address.logic.parser.CliSyntax.*;","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"Shauryan123"},"content":"import java.time.Duration;","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"Shauryan123"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-03-23"},{"lineNumber":9,"author":{"gitId":"Shauryan123"},"content":"import java.time.LocalTime;","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"Shauryan123"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"Shauryan123"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"Shauryan123"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"Shauryan123"},"content":"import seedu.address.logic.commands.ScheduleMeetingCommand;","lastModifiedDate":"2024-03-23"},{"lineNumber":15,"author":{"gitId":"Shauryan123"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-23"},{"lineNumber":16,"author":{"gitId":"Shauryan123"},"content":"import seedu.address.model.person.Meeting;","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":18,"author":{"gitId":"Shauryan123"},"content":"/**","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"Shauryan123"},"content":" * Parses input arguments and creates a new {@code ScheduleMeetingCommand} object","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"Shauryan123"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"Shauryan123"},"content":"public class ScheduleMeetingCommandParser implements Parser\u003cScheduleMeetingCommand\u003e {","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"Shauryan123"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"Shauryan123"},"content":" * Parses the given {@code String} of arguments in the context of the {@code ScheduleMeetingCommand}","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"Shauryan123"},"content":" * and returns a {@code ScheduleMeetingCommand} object for execution.","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"Shauryan123"},"content":" * @throws ParseException if the user input does not conform to the expected format","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"Shauryan123"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":27,"author":{"gitId":"Shauryan123"},"content":" public ScheduleMeetingCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-23"},{"lineNumber":28,"author":{"gitId":"Shauryan123"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-23"},{"lineNumber":29,"author":{"gitId":"Shauryan123"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"Shauryan123"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_MEETING_DATE, PREFIX_MEETING_TIME, PREFIX_MEETING_DURATION, PREFIX_MEETING_AGENDA, PREFIX_MEETING_NOTES);","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"Shauryan123"},"content":" Index index;","lastModifiedDate":"2024-03-23"},{"lineNumber":33,"author":{"gitId":"Shauryan123"},"content":" try {","lastModifiedDate":"2024-03-23"},{"lineNumber":34,"author":{"gitId":"Shauryan123"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-03-23"},{"lineNumber":35,"author":{"gitId":"Shauryan123"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"Shauryan123"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, ScheduleMeetingCommand.MESSAGE_USAGE), ive);","lastModifiedDate":"2024-03-23"},{"lineNumber":37,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":39,"author":{"gitId":"Shauryan123"},"content":" if (!argMultimap.arePrefixesPresent(PREFIX_MEETING_DATE, PREFIX_MEETING_TIME, PREFIX_MEETING_DURATION, PREFIX_MEETING_AGENDA)) {","lastModifiedDate":"2024-03-24"},{"lineNumber":40,"author":{"gitId":"Shauryan123"},"content":" throw new ParseException(\"Date, time, duration, and agenda are required for scheduling a meeting.\");","lastModifiedDate":"2024-03-24"},{"lineNumber":41,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":42,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":43,"author":{"gitId":"Shauryan123"},"content":" LocalDate meetingDate;","lastModifiedDate":"2024-03-23"},{"lineNumber":44,"author":{"gitId":"Shauryan123"},"content":" LocalTime meetingTime;","lastModifiedDate":"2024-03-23"},{"lineNumber":45,"author":{"gitId":"Shauryan123"},"content":" Duration duration;","lastModifiedDate":"2024-03-23"},{"lineNumber":46,"author":{"gitId":"Shauryan123"},"content":" try {","lastModifiedDate":"2024-03-23"},{"lineNumber":47,"author":{"gitId":"Shauryan123"},"content":" meetingDate \u003d ParserUtil.parseDate(argMultimap.getValue(PREFIX_MEETING_DATE).orElse(\"\"));","lastModifiedDate":"2024-03-23"},{"lineNumber":48,"author":{"gitId":"Shauryan123"},"content":" meetingTime \u003d ParserUtil.parseTime(argMultimap.getValue(PREFIX_MEETING_TIME).orElse(\"\"));","lastModifiedDate":"2024-03-23"},{"lineNumber":49,"author":{"gitId":"Shauryan123"},"content":" duration \u003d ParserUtil.parseDuration(argMultimap.getValue(PREFIX_MEETING_DURATION).orElse(\"\"));","lastModifiedDate":"2024-03-23"},{"lineNumber":50,"author":{"gitId":"Shauryan123"},"content":" } catch (DateTimeParseException dtpe) {","lastModifiedDate":"2024-03-23"},{"lineNumber":51,"author":{"gitId":"Shauryan123"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, ScheduleMeetingCommand.MESSAGE_USAGE), dtpe);","lastModifiedDate":"2024-03-23"},{"lineNumber":52,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":53,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":54,"author":{"gitId":"Shauryan123"},"content":" String agenda \u003d argMultimap.getValue(PREFIX_MEETING_AGENDA).orElseThrow(() -\u003e new ParseException(\"Agenda is required.\"));","lastModifiedDate":"2024-03-24"},{"lineNumber":55,"author":{"gitId":"Shauryan123"},"content":" String notes \u003d argMultimap.getValue(PREFIX_MEETING_NOTES).orElse(\"\");","lastModifiedDate":"2024-03-23"},{"lineNumber":56,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":57,"author":{"gitId":"Shauryan123"},"content":" Meeting meeting \u003d new Meeting(meetingDate, meetingTime, duration, agenda, notes);","lastModifiedDate":"2024-03-23"},{"lineNumber":58,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":59,"author":{"gitId":"Shauryan123"},"content":" return new ScheduleMeetingCommand(index, meeting);","lastModifiedDate":"2024-03-23"},{"lineNumber":60,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":61,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-23"}],"authorContributionMap":{"Shauryan123":61}},{"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":"Shauryan123"},"content":"import seedu.address.model.person.Meeting;","lastModifiedDate":"2024-03-23"},{"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":"justincred"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":89,"author":{"gitId":"justincred"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":90,"author":{"gitId":"justincred"},"content":" * Returns true if the model has previous address book states to restore.","lastModifiedDate":"2024-03-16"},{"lineNumber":91,"author":{"gitId":"justincred"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":92,"author":{"gitId":"justincred"},"content":" boolean canUndoAddressBook();","lastModifiedDate":"2024-03-16"},{"lineNumber":93,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":94,"author":{"gitId":"justincred"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":95,"author":{"gitId":"justincred"},"content":" * Returns true if the model has undone address book states to restore.","lastModifiedDate":"2024-03-16"},{"lineNumber":96,"author":{"gitId":"justincred"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":97,"author":{"gitId":"justincred"},"content":" boolean canRedoAddressBook();","lastModifiedDate":"2024-03-16"},{"lineNumber":98,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":99,"author":{"gitId":"justincred"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":100,"author":{"gitId":"justincred"},"content":" * Restores the model\u0027s address book to its previous state.","lastModifiedDate":"2024-03-16"},{"lineNumber":101,"author":{"gitId":"justincred"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":102,"author":{"gitId":"justincred"},"content":" void undoAddressBook();","lastModifiedDate":"2024-03-16"},{"lineNumber":103,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":104,"author":{"gitId":"justincred"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":105,"author":{"gitId":"justincred"},"content":" * Restores the model\u0027s address book to its previously undone state.","lastModifiedDate":"2024-03-16"},{"lineNumber":106,"author":{"gitId":"justincred"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":107,"author":{"gitId":"justincred"},"content":" void redoAddressBook();","lastModifiedDate":"2024-03-16"},{"lineNumber":108,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":109,"author":{"gitId":"justincred"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":110,"author":{"gitId":"justincred"},"content":" * Saves the current address book state for undo/redo.","lastModifiedDate":"2024-03-16"},{"lineNumber":111,"author":{"gitId":"justincred"},"content":" * Execute this function whenever there\u0027s changes to the address book","lastModifiedDate":"2024-03-16"},{"lineNumber":112,"author":{"gitId":"justincred"},"content":" * during the execution of the various commands","lastModifiedDate":"2024-03-16"},{"lineNumber":113,"author":{"gitId":"justincred"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":114,"author":{"gitId":"justincred"},"content":" void commitAddressBook();","lastModifiedDate":"2024-03-16"},{"lineNumber":115,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":116,"author":{"gitId":"Shauryan123"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":117,"author":{"gitId":"Shauryan123"},"content":" * Checks if the given meeting overlaps with any existing meetings across all persons in the address book.","lastModifiedDate":"2024-03-23"},{"lineNumber":118,"author":{"gitId":"Shauryan123"},"content":" * @param meeting The meeting to check.","lastModifiedDate":"2024-03-23"},{"lineNumber":119,"author":{"gitId":"Shauryan123"},"content":" * @return true if there is an overlap, false otherwise.","lastModifiedDate":"2024-03-23"},{"lineNumber":120,"author":{"gitId":"Shauryan123"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":121,"author":{"gitId":"Shauryan123"},"content":" boolean hasMeetingOverlap(Meeting meeting);","lastModifiedDate":"2024-03-23"},{"lineNumber":122,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":123,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"Shauryan123":9,"justincred":28,"-":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":"-"},"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":"Shauryan123"},"content":"import seedu.address.model.person.Meeting;","lastModifiedDate":"2024-03-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":"justincred"},"content":" private final VersionedAddressBook versionedAddressBook;","lastModifiedDate":"2024-03-16"},{"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":"justincred"},"content":" this.versionedAddressBook \u003d new VersionedAddressBook(addressBook);","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":37,"author":{"gitId":"justincred"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(this.versionedAddressBook.getPersonList());","lastModifiedDate":"2024-03-16"},{"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":"justincred"},"content":" this.versionedAddressBook.resetData(addressBook);","lastModifiedDate":"2024-03-16"},{"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":"justincred"},"content":" return versionedAddressBook;","lastModifiedDate":"2024-03-16"},{"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":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":93,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":94,"author":{"gitId":"justincred"},"content":" return versionedAddressBook.hasPerson(person);","lastModifiedDate":"2024-03-16"},{"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":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15"},{"lineNumber":99,"author":{"gitId":"justincred"},"content":" versionedAddressBook.removePerson(target);","lastModifiedDate":"2024-03-16"},{"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":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":104,"author":{"gitId":"justincred"},"content":" versionedAddressBook.addPerson(person);","lastModifiedDate":"2024-03-16"},{"lineNumber":105,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"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":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":110,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":112,"author":{"gitId":"justincred"},"content":" versionedAddressBook.setPerson(target, editedPerson);","lastModifiedDate":"2024-03-16"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":115,"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":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":118,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10"},{"lineNumber":119,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11"},{"lineNumber":120,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":123,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":127,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":128,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05"},{"lineNumber":129,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":131,"author":{"gitId":"justincred"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":132,"author":{"gitId":"justincred"},"content":" public boolean canUndoAddressBook() {","lastModifiedDate":"2024-03-16"},{"lineNumber":133,"author":{"gitId":"justincred"},"content":" return versionedAddressBook.canUndo();","lastModifiedDate":"2024-03-16"},{"lineNumber":134,"author":{"gitId":"justincred"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":135,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":136,"author":{"gitId":"justincred"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":137,"author":{"gitId":"justincred"},"content":" public boolean canRedoAddressBook() {","lastModifiedDate":"2024-03-16"},{"lineNumber":138,"author":{"gitId":"justincred"},"content":" return versionedAddressBook.canRedo();","lastModifiedDate":"2024-03-16"},{"lineNumber":139,"author":{"gitId":"justincred"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":140,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":141,"author":{"gitId":"justincred"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":142,"author":{"gitId":"justincred"},"content":" public void undoAddressBook() {","lastModifiedDate":"2024-03-16"},{"lineNumber":143,"author":{"gitId":"justincred"},"content":" versionedAddressBook.undo();","lastModifiedDate":"2024-03-16"},{"lineNumber":144,"author":{"gitId":"justincred"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":145,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":146,"author":{"gitId":"justincred"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":147,"author":{"gitId":"justincred"},"content":" public void redoAddressBook() {","lastModifiedDate":"2024-03-16"},{"lineNumber":148,"author":{"gitId":"justincred"},"content":" versionedAddressBook.redo();","lastModifiedDate":"2024-03-16"},{"lineNumber":149,"author":{"gitId":"justincred"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":150,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":151,"author":{"gitId":"justincred"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":152,"author":{"gitId":"justincred"},"content":" public void commitAddressBook() {","lastModifiedDate":"2024-03-16"},{"lineNumber":153,"author":{"gitId":"justincred"},"content":" versionedAddressBook.commit();","lastModifiedDate":"2024-03-16"},{"lineNumber":154,"author":{"gitId":"justincred"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31"},{"lineNumber":157,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":158,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":159,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":162,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31"},{"lineNumber":163,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":164,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":167,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":168,"author":{"gitId":"justincred"},"content":" return versionedAddressBook.equals(otherModelManager.versionedAddressBook)","lastModifiedDate":"2024-03-16"},{"lineNumber":169,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13"},{"lineNumber":170,"author":{"gitId":"-"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons);","lastModifiedDate":"2023-07-13"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":173,"author":{"gitId":"Shauryan123"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":174,"author":{"gitId":"Shauryan123"},"content":" public boolean hasMeetingOverlap(Meeting meeting) {","lastModifiedDate":"2024-03-23"},{"lineNumber":175,"author":{"gitId":"Shauryan123"},"content":" return versionedAddressBook.getPersonList().stream()","lastModifiedDate":"2024-03-23"},{"lineNumber":176,"author":{"gitId":"Shauryan123"},"content":" .flatMap(person -\u003e person.getMeetings().stream())","lastModifiedDate":"2024-03-23"},{"lineNumber":177,"author":{"gitId":"Shauryan123"},"content":" .anyMatch(existingMeeting -\u003e existingMeeting.overlapsWith(meeting));","lastModifiedDate":"2024-03-23"},{"lineNumber":178,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":179,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":180,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"Shauryan123":9,"justincred":34,"-":138}},{"path":"src/main/java/seedu/address/model/VersionedAddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"justincred"},"content":"package seedu.address.model;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"justincred"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"justincred"},"content":"import java.util.List;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"justincred"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"justincred"},"content":" * {@code AddressBook} that keeps track of its own history.","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"justincred"},"content":" * Adapted from AB4","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"justincred"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"justincred"},"content":"public class VersionedAddressBook extends AddressBook {","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"justincred"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"justincred"},"content":" * The list containing the states of the address book","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"justincred"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"justincred"},"content":" private final List\u003cReadOnlyAddressBook\u003e addressBookStateList;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"justincred"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"justincred"},"content":" * The pointer to the current state in the state list","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"justincred"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"justincred"},"content":" private int currentStatePointer;","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"justincred"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"justincred"},"content":" * Initialises the address book state list","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"justincred"},"content":" * @param initialState the pointer that points to the current state","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"justincred"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"justincred"},"content":" public VersionedAddressBook(ReadOnlyAddressBook initialState) {","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"justincred"},"content":" super(initialState);","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"justincred"},"content":" addressBookStateList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"justincred"},"content":" addressBookStateList.add(new AddressBook(initialState));","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"justincred"},"content":" currentStatePointer \u003d 0;","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"justincred"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"justincred"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"justincred"},"content":" * Saves a copy of the current {@code AddressBook} state at the end of the state list","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"justincred"},"content":" * Undone states are removed from the state list","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"justincred"},"content":" * This means that executing commands after undoing a state will remove that state","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"justincred"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"justincred"},"content":" public void commit() {","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"justincred"},"content":" removeStatesAfterCurrentPointer();","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"justincred"},"content":" addressBookStateList.add(new AddressBook(this));","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"justincred"},"content":" currentStatePointer++;","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"justincred"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"justincred"},"content":" private void removeStatesAfterCurrentPointer() {","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"justincred"},"content":" addressBookStateList.subList(currentStatePointer + 1, addressBookStateList.size()).clear();","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"justincred"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"justincred"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"justincred"},"content":" * Restores the address book to its previous state","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"justincred"},"content":" * Shifts the state pointer back by 1 unless there is no more state to undo","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"justincred"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"justincred"},"content":" public void undo() {","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"justincred"},"content":" if (!canUndo()) {","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"justincred"},"content":" throw new NoUndoableStateException();","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"justincred"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"justincred"},"content":" currentStatePointer--;","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"justincred"},"content":" resetData(addressBookStateList.get(currentStatePointer));","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"justincred"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"justincred"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"justincred"},"content":" * Restores the address book to its previously undone state which only works","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"justincred"},"content":" * if commit has not been done after undoing","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"justincred"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"justincred"},"content":" public void redo() {","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"justincred"},"content":" if (!canRedo()) {","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"justincred"},"content":" throw new NoRedoableStateException();","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"justincred"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"justincred"},"content":" currentStatePointer++;","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"justincred"},"content":" resetData(addressBookStateList.get(currentStatePointer));","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"justincred"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"justincred"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"justincred"},"content":" * Returns true if {@code undo()} has address book states to undo.","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"justincred"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"justincred"},"content":" public boolean canUndo() {","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":76,"author":{"gitId":"Shauryan123"},"content":" System.out.println(\"Current state pointer\");","lastModifiedDate":"2024-03-23"},{"lineNumber":77,"author":{"gitId":"Shauryan123"},"content":" System.out.println(currentStatePointer);","lastModifiedDate":"2024-03-23"},{"lineNumber":78,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":79,"author":{"gitId":"justincred"},"content":" return currentStatePointer \u003e 0;","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"justincred"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"justincred"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"justincred"},"content":" * Returns true if {@code redo()} has address book states to redo.","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"justincred"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"justincred"},"content":" public boolean canRedo() {","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"justincred"},"content":" return currentStatePointer \u003c addressBookStateList.size() - 1;","lastModifiedDate":"2024-03-16"},{"lineNumber":87,"author":{"gitId":"justincred"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":88,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":89,"author":{"gitId":"justincred"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":90,"author":{"gitId":"justincred"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-16"},{"lineNumber":91,"author":{"gitId":"justincred"},"content":" // short circuit if same object","lastModifiedDate":"2024-03-16"},{"lineNumber":92,"author":{"gitId":"justincred"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-16"},{"lineNumber":93,"author":{"gitId":"justincred"},"content":" return true;","lastModifiedDate":"2024-03-16"},{"lineNumber":94,"author":{"gitId":"justincred"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":95,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":96,"author":{"gitId":"justincred"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-16"},{"lineNumber":97,"author":{"gitId":"justincred"},"content":" if (!(other instanceof VersionedAddressBook)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":98,"author":{"gitId":"justincred"},"content":" return false;","lastModifiedDate":"2024-03-16"},{"lineNumber":99,"author":{"gitId":"justincred"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":100,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":101,"author":{"gitId":"justincred"},"content":" VersionedAddressBook otherVersionedAddressBook \u003d (VersionedAddressBook) other;","lastModifiedDate":"2024-03-16"},{"lineNumber":102,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":103,"author":{"gitId":"justincred"},"content":" // state check","lastModifiedDate":"2024-03-16"},{"lineNumber":104,"author":{"gitId":"justincred"},"content":" return super.equals(otherVersionedAddressBook)","lastModifiedDate":"2024-03-16"},{"lineNumber":105,"author":{"gitId":"justincred"},"content":" \u0026\u0026 addressBookStateList.equals(otherVersionedAddressBook.addressBookStateList)","lastModifiedDate":"2024-03-16"},{"lineNumber":106,"author":{"gitId":"justincred"},"content":" \u0026\u0026 currentStatePointer \u003d\u003d otherVersionedAddressBook.currentStatePointer;","lastModifiedDate":"2024-03-16"},{"lineNumber":107,"author":{"gitId":"justincred"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":108,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":109,"author":{"gitId":"justincred"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":110,"author":{"gitId":"justincred"},"content":" * Thrown when trying to {@code undo()} but can\u0027t.","lastModifiedDate":"2024-03-16"},{"lineNumber":111,"author":{"gitId":"justincred"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":112,"author":{"gitId":"justincred"},"content":" public static class NoUndoableStateException extends RuntimeException {","lastModifiedDate":"2024-03-16"},{"lineNumber":113,"author":{"gitId":"justincred"},"content":" private NoUndoableStateException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":114,"author":{"gitId":"justincred"},"content":" super(\"Current state pointer at start of addressBookState list, unable to undo.\");","lastModifiedDate":"2024-03-16"},{"lineNumber":115,"author":{"gitId":"justincred"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":116,"author":{"gitId":"justincred"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":117,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":118,"author":{"gitId":"justincred"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":119,"author":{"gitId":"justincred"},"content":" * Thrown when trying to {@code redo()} but can\u0027t.","lastModifiedDate":"2024-03-16"},{"lineNumber":120,"author":{"gitId":"justincred"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":121,"author":{"gitId":"justincred"},"content":" public static class NoRedoableStateException extends RuntimeException {","lastModifiedDate":"2024-03-16"},{"lineNumber":122,"author":{"gitId":"justincred"},"content":" private NoRedoableStateException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":123,"author":{"gitId":"justincred"},"content":" super(\"Current state pointer at end of addressBookState list, unable to redo.\");","lastModifiedDate":"2024-03-16"},{"lineNumber":124,"author":{"gitId":"justincred"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":125,"author":{"gitId":"justincred"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":126,"author":{"gitId":"justincred"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"Shauryan123":4,"justincred":122}},{"path":"src/main/java/seedu/address/model/person/CombinedPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ibnu2651"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"ibnu2651"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"ibnu2651"},"content":"import java.util.List;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"ibnu2651"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"ibnu2651"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"ibnu2651"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"ibnu2651"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"ibnu2651"},"content":" * Predicate that combines all the different predicates.","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"ibnu2651"},"content":"public class CombinedPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"ibnu2651"},"content":" private final Predicate\u003cPerson\u003e combinedPredicate;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"ibnu2651"},"content":" private final List\u003cPredicate\u003cPerson\u003e\u003e predicateList;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"ibnu2651"},"content":" * Constructs a {@code CombinedPredicate}.","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"ibnu2651"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"ibnu2651"},"content":" * @param predicates The list of predicates.","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"ibnu2651"},"content":" public CombinedPredicate(Predicate\u003cPerson\u003e... predicates) {","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"ibnu2651"},"content":" combinedPredicate \u003d Arrays.stream(predicates).reduce(p -\u003e false, Predicate::or);","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"ibnu2651"},"content":" predicateList \u003d Arrays.asList(predicates);","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"ibnu2651"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"ibnu2651"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"ibnu2651"},"content":" return combinedPredicate.test(person);","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"ibnu2651"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"ibnu2651"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"ibnu2651"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"ibnu2651"},"content":" return true;","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"ibnu2651"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"ibnu2651"},"content":" if (!(other instanceof CombinedPredicate)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"ibnu2651"},"content":" return false;","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"ibnu2651"},"content":" CombinedPredicate otherCombinedPredicate \u003d (CombinedPredicate) other;","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"ibnu2651"},"content":" return predicateList.equals(otherCombinedPredicate.predicateList);","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"ibnu2651"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"ibnu2651"},"content":" public String toString() {","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"ibnu2651"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"ibnu2651"},"content":" .add(\"predicateList\",","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"ibnu2651"},"content":" predicateList.stream().map(Predicate::toString).collect(Collectors.joining()))","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"ibnu2651"},"content":" .toString();","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"ibnu2651"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"ibnu2651":54}},{"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":"-"},"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":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Returns if a given string is a valid email.","lastModifiedDate":"2018-04-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static boolean isValidEmail(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"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 String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return value;","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":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" if (!(other instanceof Email)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return false;","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":" Email otherEmail \u003d (Email) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return value.equals(otherEmail.value);","lastModifiedDate":"2023-07-13"},{"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":"2016-08-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return value.hashCode();","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"}],"authorContributionMap":{"Shauryan123":2,"-":79}},{"path":"src/main/java/seedu/address/model/person/Meeting.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Shauryan123"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-23"},{"lineNumber":2,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":3,"author":{"gitId":"Shauryan123"},"content":"import java.time.Duration;","lastModifiedDate":"2024-03-23"},{"lineNumber":4,"author":{"gitId":"Shauryan123"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"Shauryan123"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"Shauryan123"},"content":"import java.time.LocalTime;","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"Shauryan123"},"content":"import java.util.Objects;","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":9,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":10,"author":{"gitId":"Shauryan123"},"content":"public class Meeting {","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"Shauryan123"},"content":" private LocalDate meetingDate;","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"Shauryan123"},"content":" private LocalTime meetingTime;","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":14,"author":{"gitId":"Shauryan123"},"content":" private LocalDateTime startDateTime; // New field","lastModifiedDate":"2024-03-24"},{"lineNumber":15,"author":{"gitId":"Shauryan123"},"content":" private Duration duration;","lastModifiedDate":"2024-03-23"},{"lineNumber":16,"author":{"gitId":"Shauryan123"},"content":" private String agenda;","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"Shauryan123"},"content":" private String notes; //make it optional","lastModifiedDate":"2024-03-24"},{"lineNumber":18,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"Shauryan123"},"content":" public Meeting(LocalDate meetingDate, LocalTime meetingTime, Duration duration, String agenda, String notes) {","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"Shauryan123"},"content":" this.meetingDate \u003d meetingDate;","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"Shauryan123"},"content":" this.meetingTime \u003d meetingTime;","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"Shauryan123"},"content":" this.duration \u003d duration;","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"Shauryan123"},"content":" this.agenda \u003d agenda;","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"Shauryan123"},"content":" this.notes \u003d notes;","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"Shauryan123"},"content":" this.startDateTime \u003d LocalDateTime.of(meetingDate, meetingTime); // Initialize new field","lastModifiedDate":"2024-03-24"},{"lineNumber":26,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":27,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":28,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":29,"author":{"gitId":"Shauryan123"},"content":" public LocalDate getMeetingDate() {","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"Shauryan123"},"content":" return meetingDate;","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":33,"author":{"gitId":"Shauryan123"},"content":" public void setMeetingDate(LocalDate meetingDate) {","lastModifiedDate":"2024-03-23"},{"lineNumber":34,"author":{"gitId":"Shauryan123"},"content":" this.meetingDate \u003d meetingDate;","lastModifiedDate":"2024-03-23"},{"lineNumber":35,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":37,"author":{"gitId":"Shauryan123"},"content":" public LocalTime getMeetingTime() {","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"Shauryan123"},"content":" return meetingTime;","lastModifiedDate":"2024-03-23"},{"lineNumber":39,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":40,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"Shauryan123"},"content":" public void setMeetingTime(LocalTime meetingTime) {","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"Shauryan123"},"content":" this.meetingTime \u003d meetingTime;","lastModifiedDate":"2024-03-23"},{"lineNumber":43,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":44,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":45,"author":{"gitId":"Shauryan123"},"content":" public Duration getDuration() {","lastModifiedDate":"2024-03-23"},{"lineNumber":46,"author":{"gitId":"Shauryan123"},"content":" return duration;","lastModifiedDate":"2024-03-23"},{"lineNumber":47,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":48,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":49,"author":{"gitId":"Shauryan123"},"content":" public void setDuration(Duration duration) {","lastModifiedDate":"2024-03-23"},{"lineNumber":50,"author":{"gitId":"Shauryan123"},"content":" this.duration \u003d duration;","lastModifiedDate":"2024-03-23"},{"lineNumber":51,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":52,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":53,"author":{"gitId":"Shauryan123"},"content":" public String getAgenda() {","lastModifiedDate":"2024-03-23"},{"lineNumber":54,"author":{"gitId":"Shauryan123"},"content":" return agenda;","lastModifiedDate":"2024-03-23"},{"lineNumber":55,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":56,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":57,"author":{"gitId":"Shauryan123"},"content":" public void setAgenda(String agenda) {","lastModifiedDate":"2024-03-23"},{"lineNumber":58,"author":{"gitId":"Shauryan123"},"content":" this.agenda \u003d agenda;","lastModifiedDate":"2024-03-23"},{"lineNumber":59,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":60,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":61,"author":{"gitId":"Shauryan123"},"content":" public String getNotes() {","lastModifiedDate":"2024-03-23"},{"lineNumber":62,"author":{"gitId":"Shauryan123"},"content":" return notes;","lastModifiedDate":"2024-03-23"},{"lineNumber":63,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":64,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":65,"author":{"gitId":"Shauryan123"},"content":" public void setNotes(String notes) {","lastModifiedDate":"2024-03-23"},{"lineNumber":66,"author":{"gitId":"Shauryan123"},"content":" this.notes \u003d notes;","lastModifiedDate":"2024-03-23"},{"lineNumber":67,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":68,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":69,"author":{"gitId":"Shauryan123"},"content":" public LocalDateTime getStartDateTime() {","lastModifiedDate":"2024-03-24"},{"lineNumber":70,"author":{"gitId":"Shauryan123"},"content":" return startDateTime;","lastModifiedDate":"2024-03-24"},{"lineNumber":71,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":72,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":73,"author":{"gitId":"Shauryan123"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":74,"author":{"gitId":"Shauryan123"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-23"},{"lineNumber":75,"author":{"gitId":"Shauryan123"},"content":" return Objects.hash(meetingDate, meetingTime, duration, agenda, notes);","lastModifiedDate":"2024-03-23"},{"lineNumber":76,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":77,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":78,"author":{"gitId":"Shauryan123"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":79,"author":{"gitId":"Shauryan123"},"content":" public String toString() {","lastModifiedDate":"2024-03-23"},{"lineNumber":80,"author":{"gitId":"Shauryan123"},"content":" return \"Meeting{\" +","lastModifiedDate":"2024-03-23"},{"lineNumber":81,"author":{"gitId":"Shauryan123"},"content":" \"meetingDate\u003d\" + meetingDate +","lastModifiedDate":"2024-03-23"},{"lineNumber":82,"author":{"gitId":"Shauryan123"},"content":" \", meetingTime\u003d\" + meetingTime +","lastModifiedDate":"2024-03-23"},{"lineNumber":83,"author":{"gitId":"Shauryan123"},"content":" \", duration\u003d\" + duration +","lastModifiedDate":"2024-03-23"},{"lineNumber":84,"author":{"gitId":"Shauryan123"},"content":" \", agenda\u003d\u0027\" + agenda + \u0027\\\u0027\u0027 +","lastModifiedDate":"2024-03-23"},{"lineNumber":85,"author":{"gitId":"Shauryan123"},"content":" \", notes\u003d\u0027\" + notes + \u0027\\\u0027\u0027 +","lastModifiedDate":"2024-03-23"},{"lineNumber":86,"author":{"gitId":"Shauryan123"},"content":" \u0027}\u0027;","lastModifiedDate":"2024-03-23"},{"lineNumber":87,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":88,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":89,"author":{"gitId":"Shauryan123"},"content":" // In Meeting class","lastModifiedDate":"2024-03-23"},{"lineNumber":90,"author":{"gitId":"Shauryan123"},"content":" public boolean overlapsWith(Meeting other) {","lastModifiedDate":"2024-03-23"},{"lineNumber":91,"author":{"gitId":"Shauryan123"},"content":" LocalDateTime start \u003d LocalDateTime.of(this.getMeetingDate(), this.getMeetingTime());","lastModifiedDate":"2024-03-23"},{"lineNumber":92,"author":{"gitId":"Shauryan123"},"content":" LocalDateTime end \u003d start.plus(this.getDuration());","lastModifiedDate":"2024-03-23"},{"lineNumber":93,"author":{"gitId":"Shauryan123"},"content":" LocalDateTime otherStart \u003d LocalDateTime.of(other.getMeetingDate(), other.getMeetingTime());","lastModifiedDate":"2024-03-23"},{"lineNumber":94,"author":{"gitId":"Shauryan123"},"content":" LocalDateTime otherEnd \u003d otherStart.plus(other.getDuration());","lastModifiedDate":"2024-03-23"},{"lineNumber":95,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":96,"author":{"gitId":"Shauryan123"},"content":" return start.isBefore(otherEnd) \u0026\u0026 otherStart.isBefore(end);","lastModifiedDate":"2024-03-23"},{"lineNumber":97,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":98,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":99,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":100,"author":{"gitId":"Shauryan123"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":101,"author":{"gitId":"Shauryan123"},"content":" public boolean equals(Object obj) {","lastModifiedDate":"2024-03-23"},{"lineNumber":102,"author":{"gitId":"Shauryan123"},"content":" if (this \u003d\u003d obj) {","lastModifiedDate":"2024-03-23"},{"lineNumber":103,"author":{"gitId":"Shauryan123"},"content":" return true;","lastModifiedDate":"2024-03-23"},{"lineNumber":104,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":105,"author":{"gitId":"Shauryan123"},"content":" if (obj \u003d\u003d null || getClass() !\u003d obj.getClass()) {","lastModifiedDate":"2024-03-23"},{"lineNumber":106,"author":{"gitId":"Shauryan123"},"content":" return false;","lastModifiedDate":"2024-03-23"},{"lineNumber":107,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":108,"author":{"gitId":"Shauryan123"},"content":" Meeting meeting \u003d (Meeting) obj;","lastModifiedDate":"2024-03-23"},{"lineNumber":109,"author":{"gitId":"Shauryan123"},"content":" return Objects.equals(meetingDate, meeting.meetingDate) \u0026\u0026","lastModifiedDate":"2024-03-23"},{"lineNumber":110,"author":{"gitId":"Shauryan123"},"content":" Objects.equals(meetingTime, meeting.meetingTime) \u0026\u0026","lastModifiedDate":"2024-03-23"},{"lineNumber":111,"author":{"gitId":"Shauryan123"},"content":" Objects.equals(duration, meeting.duration) \u0026\u0026","lastModifiedDate":"2024-03-23"},{"lineNumber":112,"author":{"gitId":"Shauryan123"},"content":" Objects.equals(agenda, meeting.agenda) \u0026\u0026","lastModifiedDate":"2024-03-23"},{"lineNumber":113,"author":{"gitId":"Shauryan123"},"content":" Objects.equals(notes, meeting.notes);","lastModifiedDate":"2024-03-23"},{"lineNumber":114,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":115,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":116,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"}],"authorContributionMap":{"Shauryan123":116}},{"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":"Shauryan123"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"Shauryan123"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"Shauryan123"},"content":"import java.util.*;","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19"},{"lineNumber":25,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"ibnu2651"},"content":" private final Policy policy;","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"kaiyi27"},"content":" private final Relationship relationship;","lastModifiedDate":"2024-03-10"},{"lineNumber":29,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":33,"author":{"gitId":"Shauryan123"},"content":" private List\u003cMeeting\u003e meetings;","lastModifiedDate":"2024-03-23"},{"lineNumber":34,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":35,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"ibnu2651"},"content":" public Person(Name name, Phone phone, Email email, Address address, Relationship relationship,","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"ibnu2651"},"content":" Policy policy, Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"kaiyi27"},"content":" requireAllNonNull(name, phone, email, address, relationship, tags);","lastModifiedDate":"2024-03-10"},{"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":"ibnu2651"},"content":" this.policy \u003d policy;","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"kaiyi27"},"content":" this.relationship \u003d relationship;","lastModifiedDate":"2024-03-10"},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":49,"author":{"gitId":"Shauryan123"},"content":" this.meetings \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return name;","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 Phone getPhone() {","lastModifiedDate":"2017-07-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return phone;","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":"-"},"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":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":68,"author":{"gitId":"ibnu2651"},"content":" public Policy getPolicy() {","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"ibnu2651"},"content":" return policy;","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"kaiyi27"},"content":" public Relationship getRelationship() {","lastModifiedDate":"2024-03-10"},{"lineNumber":73,"author":{"gitId":"kaiyi27"},"content":" return relationship;","lastModifiedDate":"2024-03-10"},{"lineNumber":74,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"ibnu2651"},"content":" public boolean isClient() {","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"ibnu2651"},"content":" return relationship.value.equals(\"client\");","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"ibnu2651"},"content":" public boolean isPartner() {","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"ibnu2651"},"content":" return relationship.value.equals(\"partner\");","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"kaiyi27"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":83,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":92,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":93,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":103,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19"},{"lineNumber":104,"author":{"gitId":"-"},"content":" \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2020-12-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":107,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19"},{"lineNumber":109,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":110,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":113,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":114,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":117,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10"},{"lineNumber":119,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":122,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10"},{"lineNumber":123,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":127,"author":{"gitId":"kaiyi27"},"content":" \u0026\u0026 relationship.equals(otherPerson.relationship)","lastModifiedDate":"2024-03-10"},{"lineNumber":128,"author":{"gitId":"ibnu2651"},"content":" \u0026\u0026 policy.equals(otherPerson.policy)","lastModifiedDate":"2024-03-17"},{"lineNumber":129,"author":{"gitId":"-"},"content":" \u0026\u0026 tags.equals(otherPerson.tags);","lastModifiedDate":"2023-07-13"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":134,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":135,"author":{"gitId":"ibnu2651"},"content":" return Objects.hash(name, phone, email, address, policy, relationship, tags);","lastModifiedDate":"2024-03-17"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":140,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":145,"author":{"gitId":"kaiyi27"},"content":" .add(\"relationship\", relationship)","lastModifiedDate":"2024-03-10"},{"lineNumber":146,"author":{"gitId":"ibnu2651"},"content":" .add(\"policy\", policy)","lastModifiedDate":"2024-03-16"},{"lineNumber":147,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":151,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":152,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":153,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":154,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":155,"author":{"gitId":"Shauryan123"},"content":" //Meetings composition methods","lastModifiedDate":"2024-03-23"},{"lineNumber":156,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":157,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":158,"author":{"gitId":"Shauryan123"},"content":" public List\u003cMeeting\u003e getMeetings() {","lastModifiedDate":"2024-03-23"},{"lineNumber":159,"author":{"gitId":"Shauryan123"},"content":" return this.meetings;","lastModifiedDate":"2024-03-24"},{"lineNumber":160,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":161,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":162,"author":{"gitId":"Shauryan123"},"content":" public void addMeeting(Meeting meeting) {","lastModifiedDate":"2024-03-23"},{"lineNumber":163,"author":{"gitId":"Shauryan123"},"content":" LocalDate today \u003d LocalDate.now();","lastModifiedDate":"2024-03-23"},{"lineNumber":164,"author":{"gitId":"Shauryan123"},"content":" LocalDate meetingDate \u003d meeting.getMeetingDate();","lastModifiedDate":"2024-03-23"},{"lineNumber":165,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":166,"author":{"gitId":"Shauryan123"},"content":" if (meetings.size() \u003e\u003d 5) {","lastModifiedDate":"2024-03-24"},{"lineNumber":167,"author":{"gitId":"Shauryan123"},"content":" throw new IllegalArgumentException(\"Cannot have more than 5 meetings.\");","lastModifiedDate":"2024-03-24"},{"lineNumber":168,"author":{"gitId":"Shauryan123"},"content":" } else if (meetingDate.isBefore(today)) {","lastModifiedDate":"2024-03-24"},{"lineNumber":169,"author":{"gitId":"Shauryan123"},"content":" throw new IllegalArgumentException(\"Cannot schedule a meeting in the past.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":170,"author":{"gitId":"Shauryan123"},"content":" } else if (meetingDate.isAfter(today.plusYears(1))) { // Assuming 1 year is too far in the future","lastModifiedDate":"2024-03-23"},{"lineNumber":171,"author":{"gitId":"Shauryan123"},"content":" throw new IllegalArgumentException(\"Cannot schedule a meeting more than a year in the future.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":172,"author":{"gitId":"Shauryan123"},"content":" } else if (isOverlapWithOtherMeetings(meeting)) {","lastModifiedDate":"2024-03-23"},{"lineNumber":173,"author":{"gitId":"Shauryan123"},"content":" throw new IllegalArgumentException(\"Meeting overlaps with existing meetings with this client.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":174,"author":{"gitId":"Shauryan123"},"content":" } else {","lastModifiedDate":"2024-03-23"},{"lineNumber":175,"author":{"gitId":"Shauryan123"},"content":" meetings.add(meeting);","lastModifiedDate":"2024-03-23"},{"lineNumber":176,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":177,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":178,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":179,"author":{"gitId":"Shauryan123"},"content":" public void setMeetings(List\u003cMeeting\u003e meetings) {","lastModifiedDate":"2024-03-23"},{"lineNumber":180,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":181,"author":{"gitId":"Shauryan123"},"content":" this.meetings \u003d meetings;","lastModifiedDate":"2024-03-23"},{"lineNumber":182,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":183,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":184,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":185,"author":{"gitId":"Shauryan123"},"content":" public void rescheduleMeeting(int index, LocalDateTime newDateTime) {","lastModifiedDate":"2024-03-23"},{"lineNumber":186,"author":{"gitId":"Shauryan123"},"content":" Meeting meetingToReschedule \u003d meetings.get(index);","lastModifiedDate":"2024-03-23"},{"lineNumber":187,"author":{"gitId":"Shauryan123"},"content":" Meeting rescheduledMeeting \u003d new Meeting(","lastModifiedDate":"2024-03-23"},{"lineNumber":188,"author":{"gitId":"Shauryan123"},"content":" newDateTime.toLocalDate(),","lastModifiedDate":"2024-03-23"},{"lineNumber":189,"author":{"gitId":"Shauryan123"},"content":" newDateTime.toLocalTime(),","lastModifiedDate":"2024-03-23"},{"lineNumber":190,"author":{"gitId":"Shauryan123"},"content":" meetingToReschedule.getDuration(),","lastModifiedDate":"2024-03-23"},{"lineNumber":191,"author":{"gitId":"Shauryan123"},"content":" meetingToReschedule.getAgenda(),","lastModifiedDate":"2024-03-23"},{"lineNumber":192,"author":{"gitId":"Shauryan123"},"content":" meetingToReschedule.getNotes()","lastModifiedDate":"2024-03-23"},{"lineNumber":193,"author":{"gitId":"Shauryan123"},"content":" );","lastModifiedDate":"2024-03-23"},{"lineNumber":194,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":195,"author":{"gitId":"Shauryan123"},"content":" // Remove the old meeting and try adding the rescheduled one","lastModifiedDate":"2024-03-23"},{"lineNumber":196,"author":{"gitId":"Shauryan123"},"content":" meetings.remove(index);","lastModifiedDate":"2024-03-23"},{"lineNumber":197,"author":{"gitId":"Shauryan123"},"content":" if (!isOverlapWithOtherMeetings(rescheduledMeeting)) {","lastModifiedDate":"2024-03-23"},{"lineNumber":198,"author":{"gitId":"Shauryan123"},"content":" meetings.add(rescheduledMeeting);","lastModifiedDate":"2024-03-23"},{"lineNumber":199,"author":{"gitId":"Shauryan123"},"content":" } else {","lastModifiedDate":"2024-03-23"},{"lineNumber":200,"author":{"gitId":"Shauryan123"},"content":" // If there\u0027s an overlap, add the old meeting back and throw an exception","lastModifiedDate":"2024-03-23"},{"lineNumber":201,"author":{"gitId":"Shauryan123"},"content":" meetings.add(index, meetingToReschedule);","lastModifiedDate":"2024-03-23"},{"lineNumber":202,"author":{"gitId":"Shauryan123"},"content":" throw new IllegalArgumentException(\"Rescheduled meeting overlaps with existing meetings.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":203,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":204,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":205,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":206,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":207,"author":{"gitId":"Shauryan123"},"content":" public void cancelMeeting(int index) {","lastModifiedDate":"2024-03-23"},{"lineNumber":208,"author":{"gitId":"Shauryan123"},"content":" meetings.remove(index);","lastModifiedDate":"2024-03-23"},{"lineNumber":209,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":210,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":211,"author":{"gitId":"Shauryan123"},"content":" private boolean isOverlapWithOtherMeetings(Meeting meetingToCheck) {","lastModifiedDate":"2024-03-23"},{"lineNumber":212,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":213,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":214,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":215,"author":{"gitId":"Shauryan123"},"content":" LocalDateTime startDateTimeToCheck \u003d LocalDateTime.of(meetingToCheck.getMeetingDate(), meetingToCheck.getMeetingTime());","lastModifiedDate":"2024-03-23"},{"lineNumber":216,"author":{"gitId":"Shauryan123"},"content":" LocalDateTime endDateTimeToCheck \u003d startDateTimeToCheck.plus(meetingToCheck.getDuration());","lastModifiedDate":"2024-03-23"},{"lineNumber":217,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":218,"author":{"gitId":"Shauryan123"},"content":" for (Meeting meeting : meetings) {","lastModifiedDate":"2024-03-23"},{"lineNumber":219,"author":{"gitId":"Shauryan123"},"content":" LocalDateTime startDateTime \u003d LocalDateTime.of(meeting.getMeetingDate(), meeting.getMeetingTime());","lastModifiedDate":"2024-03-23"},{"lineNumber":220,"author":{"gitId":"Shauryan123"},"content":" LocalDateTime endDateTime \u003d startDateTime.plus(meeting.getDuration());","lastModifiedDate":"2024-03-23"},{"lineNumber":221,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":222,"author":{"gitId":"Shauryan123"},"content":" if (startDateTimeToCheck.isBefore(endDateTime) \u0026\u0026 endDateTimeToCheck.isAfter(startDateTime)) {","lastModifiedDate":"2024-03-23"},{"lineNumber":223,"author":{"gitId":"Shauryan123"},"content":" return true;","lastModifiedDate":"2024-03-23"},{"lineNumber":224,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":225,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":226,"author":{"gitId":"Shauryan123"},"content":" return false;","lastModifiedDate":"2024-03-23"},{"lineNumber":227,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":228,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":229,"author":{"gitId":"Shauryan123"},"content":" public Person getCopy() {","lastModifiedDate":"2024-03-24"},{"lineNumber":230,"author":{"gitId":"Shauryan123"},"content":" Person p \u003d new Person(this.name, this.phone, this.email, this.address, this.relationship, this.getPolicy(), this.getTags());","lastModifiedDate":"2024-03-24"},{"lineNumber":231,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":232,"author":{"gitId":"Shauryan123"},"content":" // Create a deep copy of the meetings","lastModifiedDate":"2024-03-24"},{"lineNumber":233,"author":{"gitId":"Shauryan123"},"content":" List\u003cMeeting\u003e copiedMeetings \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-24"},{"lineNumber":234,"author":{"gitId":"Shauryan123"},"content":" for (Meeting meeting : this.getMeetings()) {","lastModifiedDate":"2024-03-24"},{"lineNumber":235,"author":{"gitId":"Shauryan123"},"content":" Meeting copiedMeeting \u003d new Meeting(","lastModifiedDate":"2024-03-24"},{"lineNumber":236,"author":{"gitId":"Shauryan123"},"content":" meeting.getMeetingDate(),","lastModifiedDate":"2024-03-24"},{"lineNumber":237,"author":{"gitId":"Shauryan123"},"content":" meeting.getMeetingTime(),","lastModifiedDate":"2024-03-24"},{"lineNumber":238,"author":{"gitId":"Shauryan123"},"content":" meeting.getDuration(),","lastModifiedDate":"2024-03-24"},{"lineNumber":239,"author":{"gitId":"Shauryan123"},"content":" meeting.getAgenda(),","lastModifiedDate":"2024-03-24"},{"lineNumber":240,"author":{"gitId":"Shauryan123"},"content":" meeting.getNotes()","lastModifiedDate":"2024-03-24"},{"lineNumber":241,"author":{"gitId":"Shauryan123"},"content":" );","lastModifiedDate":"2024-03-24"},{"lineNumber":242,"author":{"gitId":"Shauryan123"},"content":" copiedMeetings.add(copiedMeeting);","lastModifiedDate":"2024-03-24"},{"lineNumber":243,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":244,"author":{"gitId":"Shauryan123"},"content":" p.setMeetings(copiedMeetings);","lastModifiedDate":"2024-03-24"},{"lineNumber":245,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":246,"author":{"gitId":"Shauryan123"},"content":" return p;","lastModifiedDate":"2024-03-24"},{"lineNumber":247,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":248,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":249,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":250,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"Shauryan123":109,"kaiyi27":9,"ibnu2651":22,"-":110}},{"path":"src/main/java/seedu/address/model/person/Policy.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ibnu2651"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"ibnu2651"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"ibnu2651"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"ibnu2651"},"content":" * Represents a Person\u0027s policy in the address book.","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"ibnu2651"},"content":" * Guarantees: immutable; is always valid","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"ibnu2651"},"content":"public class Policy {","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"ibnu2651"},"content":" public final String value;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"ibnu2651"},"content":" * Constructs a {@code Policy}.","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"ibnu2651"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"ibnu2651"},"content":" * @param policy A valid policy.","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"ibnu2651"},"content":" public Policy(String policy) {","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"ibnu2651"},"content":" requireNonNull(policy);","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"ibnu2651"},"content":" value \u003d policy;","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"ibnu2651"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"ibnu2651"},"content":" public String toString() {","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"ibnu2651"},"content":" return value;","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"ibnu2651"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"ibnu2651"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"ibnu2651"},"content":" return other \u003d\u003d this // short circuit if same object","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"ibnu2651"},"content":" || (other instanceof Policy // instanceof handles nulls","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"ibnu2651"},"content":" \u0026\u0026 value.equals(((Policy) other).value)); // state check","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"ibnu2651"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"ibnu2651"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"ibnu2651"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"ibnu2651"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"ibnu2651":38}},{"path":"src/main/java/seedu/address/model/person/Relationship.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"kaiyi27"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":3,"author":{"gitId":"kaiyi27"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-10"},{"lineNumber":4,"author":{"gitId":"kaiyi27"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-10"},{"lineNumber":5,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":6,"author":{"gitId":"kaiyi27"},"content":"/**","lastModifiedDate":"2024-03-10"},{"lineNumber":7,"author":{"gitId":"kaiyi27"},"content":" * Represents a Person\u0027s relationship in the address book.","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"kaiyi27"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidRelationship(String)}","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"kaiyi27"},"content":" */","lastModifiedDate":"2024-03-10"},{"lineNumber":10,"author":{"gitId":"kaiyi27"},"content":"public class Relationship {","lastModifiedDate":"2024-03-10"},{"lineNumber":11,"author":{"gitId":"kaiyi27"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Relationship should only be client or partner\";","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":13,"author":{"gitId":"kaiyi27"},"content":" public final String value;","lastModifiedDate":"2024-03-10"},{"lineNumber":14,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":15,"author":{"gitId":"kaiyi27"},"content":" /**","lastModifiedDate":"2024-03-10"},{"lineNumber":16,"author":{"gitId":"kaiyi27"},"content":" * Constructs a {@code Name}.","lastModifiedDate":"2024-03-10"},{"lineNumber":17,"author":{"gitId":"kaiyi27"},"content":" *","lastModifiedDate":"2024-03-10"},{"lineNumber":18,"author":{"gitId":"kaiyi27"},"content":" * @param relationship A valid relationship.","lastModifiedDate":"2024-03-10"},{"lineNumber":19,"author":{"gitId":"kaiyi27"},"content":" */","lastModifiedDate":"2024-03-10"},{"lineNumber":20,"author":{"gitId":"kaiyi27"},"content":" public Relationship(String relationship) {","lastModifiedDate":"2024-03-10"},{"lineNumber":21,"author":{"gitId":"kaiyi27"},"content":" requireNonNull(relationship);","lastModifiedDate":"2024-03-10"},{"lineNumber":22,"author":{"gitId":"kaiyi27"},"content":" checkArgument(isValidRelationship(relationship), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-10"},{"lineNumber":23,"author":{"gitId":"kaiyi27"},"content":" value \u003d relationship;","lastModifiedDate":"2024-03-10"},{"lineNumber":24,"author":{"gitId":"kaiyi27"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":25,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":26,"author":{"gitId":"kaiyi27"},"content":" /**","lastModifiedDate":"2024-03-10"},{"lineNumber":27,"author":{"gitId":"kaiyi27"},"content":" * Returns true if a given string is a valid relationship.","lastModifiedDate":"2024-03-10"},{"lineNumber":28,"author":{"gitId":"kaiyi27"},"content":" */","lastModifiedDate":"2024-03-10"},{"lineNumber":29,"author":{"gitId":"kaiyi27"},"content":" public static boolean isValidRelationship(String test) {","lastModifiedDate":"2024-03-10"},{"lineNumber":30,"author":{"gitId":"kaiyi27"},"content":" return test.equalsIgnoreCase(\"client\") || test.equalsIgnoreCase(\"partner\");","lastModifiedDate":"2024-03-10"},{"lineNumber":31,"author":{"gitId":"kaiyi27"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":32,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":33,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":34,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":35,"author":{"gitId":"kaiyi27"},"content":" @Override","lastModifiedDate":"2024-03-10"},{"lineNumber":36,"author":{"gitId":"kaiyi27"},"content":" public String toString() {","lastModifiedDate":"2024-03-10"},{"lineNumber":37,"author":{"gitId":"kaiyi27"},"content":" return value;","lastModifiedDate":"2024-03-10"},{"lineNumber":38,"author":{"gitId":"kaiyi27"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":39,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":40,"author":{"gitId":"kaiyi27"},"content":" @Override","lastModifiedDate":"2024-03-10"},{"lineNumber":41,"author":{"gitId":"kaiyi27"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-10"},{"lineNumber":42,"author":{"gitId":"kaiyi27"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-10"},{"lineNumber":43,"author":{"gitId":"kaiyi27"},"content":" return true;","lastModifiedDate":"2024-03-10"},{"lineNumber":44,"author":{"gitId":"kaiyi27"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":45,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":46,"author":{"gitId":"kaiyi27"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-10"},{"lineNumber":47,"author":{"gitId":"kaiyi27"},"content":" if (!(other instanceof Relationship)) {","lastModifiedDate":"2024-03-10"},{"lineNumber":48,"author":{"gitId":"kaiyi27"},"content":" return false;","lastModifiedDate":"2024-03-10"},{"lineNumber":49,"author":{"gitId":"kaiyi27"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":50,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":51,"author":{"gitId":"kaiyi27"},"content":" Relationship otherRelationship \u003d (Relationship) other;","lastModifiedDate":"2024-03-10"},{"lineNumber":52,"author":{"gitId":"kaiyi27"},"content":" return value.equals(otherRelationship.value);","lastModifiedDate":"2024-03-10"},{"lineNumber":53,"author":{"gitId":"kaiyi27"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":54,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":55,"author":{"gitId":"kaiyi27"},"content":" @Override","lastModifiedDate":"2024-03-10"},{"lineNumber":56,"author":{"gitId":"kaiyi27"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-10"},{"lineNumber":57,"author":{"gitId":"kaiyi27"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-10"},{"lineNumber":58,"author":{"gitId":"kaiyi27"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":59,"author":{"gitId":"kaiyi27"},"content":"}","lastModifiedDate":"2024-03-10"}],"authorContributionMap":{"kaiyi27":59}},{"path":"src/main/java/seedu/address/model/person/RelationshipContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Shauryan123"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"Shauryan123"},"content":"import java.util.List;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"Shauryan123"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"Shauryan123"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"Shauryan123"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"ibnu2651"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"ibnu2651"},"content":" * Tests that a {@code Person}\u0027s {@code Relationship} matches any of the keywords given.","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"Shauryan123"},"content":"public class RelationshipContainsKeywordsPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"Shauryan123"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"Shauryan123"},"content":" public RelationshipContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"Shauryan123"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"Shauryan123"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"Shauryan123"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"Shauryan123"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"Shauryan123"},"content":" return true;","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"Shauryan123"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"Shauryan123"},"content":" if (!(other instanceof RelationshipContainsKeywordsPredicate)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"Shauryan123"},"content":" return false;","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"ibnu2651"},"content":" RelationshipContainsKeywordsPredicate otherRelationshipContainsKeywordsPredicate \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"ibnu2651"},"content":" (RelationshipContainsKeywordsPredicate) other;","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"Shauryan123"},"content":" return keywords.equals(otherRelationshipContainsKeywordsPredicate.keywords);","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"Shauryan123"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"Shauryan123"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"Shauryan123"},"content":" return keywords.stream()","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"Shauryan123"},"content":" .anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(person.getRelationship().value, keyword));","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"Shauryan123"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"Shauryan123"},"content":" public String toString() {","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"Shauryan123"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"Shauryan123":40,"ibnu2651":5}},{"path":"src/main/java/seedu/address/model/person/TagContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Shauryan123"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"Shauryan123"},"content":"import java.util.List;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"Shauryan123"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"Shauryan123"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"Shauryan123"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"ibnu2651"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"ibnu2651"},"content":" * Tests that a {@code Person}\u0027s {@code Tag} matches any of the keywords given.","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"Shauryan123"},"content":"public class TagContainsKeywordsPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"Shauryan123"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"Shauryan123"},"content":" public TagContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"Shauryan123"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"Shauryan123"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"Shauryan123"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"Shauryan123"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"Shauryan123"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"Shauryan123"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"Shauryan123"},"content":" if (!(other instanceof TagContainsKeywordsPredicate)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"Shauryan123"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"Shauryan123"},"content":" TagContainsKeywordsPredicate otherTagContainsKeywordsPredicate \u003d (TagContainsKeywordsPredicate) other;","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"Shauryan123"},"content":" return keywords.equals(otherTagContainsKeywordsPredicate.keywords);","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"Shauryan123"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"Shauryan123"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"Shauryan123"},"content":" return person.getTags().stream()","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"Shauryan123"},"content":" .anyMatch(tag -\u003e keywords.stream()","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"Shauryan123"},"content":" .anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(tag.tagName, keyword)));","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"Shauryan123"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"Shauryan123"},"content":" public String toString() {","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"Shauryan123"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"Shauryan123":43,"ibnu2651":3}},{"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":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Adds a person to the list.","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * The person must not already exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void add(Person toAdd) {","lastModifiedDate":"2018-08-07"},{"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":"-"},"content":" * Replaces the person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2017-06-07"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":54,"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":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-07"},{"lineNumber":57,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2018-08-08"},{"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":"-"},"content":" if (!target.isSamePerson(editedPerson) \u0026\u0026 contains(editedPerson)) {","lastModifiedDate":"2018-04-19"},{"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":"-"},"content":" internalList.set(index, editedPerson);","lastModifiedDate":"2018-01-10"},{"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":"-"},"content":" * Removes the equivalent person from the list.","lastModifiedDate":"2016-08-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * The person must exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void remove(Person toRemove) {","lastModifiedDate":"2018-08-07"},{"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":"-"},"content":" public void setPersons(UniquePersonList replacement) {","lastModifiedDate":"2016-10-19"},{"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":"-"},"content":" * Replaces the contents of this list with {@code persons}.","lastModifiedDate":"2018-08-07"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2018-08-07"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void setPersons(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-08-07"},{"lineNumber":92,"author":{"gitId":"-"},"content":" requireAllNonNull(persons);","lastModifiedDate":"2018-01-10"},{"lineNumber":93,"author":{"gitId":"-"},"content":" if (!personsAreUnique(persons)) {","lastModifiedDate":"2018-04-19"},{"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":"-"},"content":" internalList.setAll(persons);","lastModifiedDate":"2018-08-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":100,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-09-01"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2017-09-01"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-09-01"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2018-04-05"},{"lineNumber":106,"author":{"gitId":"-"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2018-12-09"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public Iterator\u003cPerson\u003e iterator() {","lastModifiedDate":"2016-08-24"},{"lineNumber":111,"author":{"gitId":"-"},"content":" return internalList.iterator();","lastModifiedDate":"2016-08-24"},{"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":"2016-09-21"},{"lineNumber":115,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"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 UniquePersonList)) {","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":" UniquePersonList otherUniquePersonList \u003d (UniquePersonList) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" return internalList.equals(otherUniquePersonList.internalList);","lastModifiedDate":"2023-07-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":130,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":131,"author":{"gitId":"-"},"content":" return internalList.hashCode();","lastModifiedDate":"2016-09-21"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-24"},{"lineNumber":135,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-24"},{"lineNumber":136,"author":{"gitId":"-"},"content":" return internalList.toString();","lastModifiedDate":"2019-02-24"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24"},{"lineNumber":139,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":140,"author":{"gitId":"-"},"content":" * Returns true if {@code persons} contains only unique persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":141,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":142,"author":{"gitId":"-"},"content":" private boolean personsAreUnique(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-04-19"},{"lineNumber":143,"author":{"gitId":"-"},"content":" for (int i \u003d 0; i \u003c persons.size() - 1; i++) {","lastModifiedDate":"2018-04-19"},{"lineNumber":144,"author":{"gitId":"-"},"content":" for (int j \u003d i + 1; j \u003c persons.size(); j++) {","lastModifiedDate":"2018-04-19"},{"lineNumber":145,"author":{"gitId":"-"},"content":" if (persons.get(i).isSamePerson(persons.get(j))) {","lastModifiedDate":"2018-04-19"},{"lineNumber":146,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-04-19"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":150,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":152,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"Shauryan123":2,"-":150}},{"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":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-20"},{"lineNumber":14,"author":{"gitId":"ibnu2651"},"content":"import seedu.address.model.person.Policy;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"ibnu2651"},"content":"import seedu.address.model.person.Relationship;","lastModifiedDate":"2024-03-17"},{"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":"ibnu2651"},"content":" public static final Policy EMPTY_POLICY \u003d new Policy(\"\");","lastModifiedDate":"2024-03-16"},{"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":"-"},"content":" new Person(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":26,"author":{"gitId":"ibnu2651"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"), new Relationship(\"client\"), EMPTY_POLICY,","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"-"},"content":" getTagSet(\"friends\")),","lastModifiedDate":"2017-03-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":" new Person(new Name(\"Bernice Yu\"), new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":29,"author":{"gitId":"ibnu2651"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"), new Relationship(\"client\"), EMPTY_POLICY,","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"-"},"content":" getTagSet(\"colleagues\", \"friends\")),","lastModifiedDate":"2017-03-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":32,"author":{"gitId":"ibnu2651"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"), new Relationship(\"partner\"), EMPTY_POLICY,","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"-"},"content":" getTagSet(\"neighbours\")),","lastModifiedDate":"2017-03-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":" new Person(new Name(\"David Li\"), new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":35,"author":{"gitId":"ibnu2651"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"), new Relationship(\"client\"), EMPTY_POLICY,","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"-"},"content":" getTagSet(\"family\")),","lastModifiedDate":"2017-03-14"},{"lineNumber":37,"author":{"gitId":"-"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":38,"author":{"gitId":"ibnu2651"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"), new Relationship(\"partner\"), EMPTY_POLICY,","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":" getTagSet(\"classmates\")),","lastModifiedDate":"2017-03-14"},{"lineNumber":40,"author":{"gitId":"-"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":41,"author":{"gitId":"ibnu2651"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"), new Relationship(\"client\"), EMPTY_POLICY,","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"-"},"content":" getTagSet(\"colleagues\"))","lastModifiedDate":"2017-03-14"},{"lineNumber":43,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07"},{"lineNumber":48,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":63,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"ibnu2651":9,"-":54}},{"path":"src/main/java/seedu/address/storage/InsuraConnectBookStorage.java","fileType":"functional-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 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":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":8,"author":{"gitId":"Shauryan123"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-24"},{"lineNumber":12,"author":{"gitId":"Shauryan123"},"content":" * Represents a storage for {@link AddressBook}.","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":14,"author":{"gitId":"Shauryan123"},"content":"public interface InsuraConnectBookStorage {","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Returns the file path of the data file.","lastModifiedDate":"2016-09-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-04-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Returns AddressBook data as a {@link ReadOnlyAddressBook}.","lastModifiedDate":"2024-03-17"},{"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 loading the data from storage failed.","lastModifiedDate":"2023-06-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" Optional\u003cReadOnlyAddressBook\u003e readAddressBook() throws DataLoadingException;","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-01"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @see #getAddressBookFilePath()","lastModifiedDate":"2016-10-01"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":" Optional\u003cReadOnlyAddressBook\u003e readAddressBook(Path filePath) throws DataLoadingException;","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Saves the given {@link ReadOnlyAddressBook} to the storage.","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * @param addressBook cannot be null.","lastModifiedDate":"2016-09-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @throws IOException if there was any problem writing to the file.","lastModifiedDate":"2016-09-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" void saveAddressBook(ReadOnlyAddressBook addressBook) throws IOException;","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * @see #saveAddressBook(ReadOnlyAddressBook)","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":" void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath) throws IOException;","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-24"}],"authorContributionMap":{"Shauryan123":3,"-":43}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedMeeting.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Shauryan123"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-23"},{"lineNumber":2,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":3,"author":{"gitId":"Shauryan123"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-03-23"},{"lineNumber":4,"author":{"gitId":"Shauryan123"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"Shauryan123"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"Shauryan123"},"content":"import seedu.address.model.person.Meeting;","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"Shauryan123"},"content":"import java.time.Duration;","lastModifiedDate":"2024-03-23"},{"lineNumber":9,"author":{"gitId":"Shauryan123"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"Shauryan123"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-03-24"},{"lineNumber":11,"author":{"gitId":"Shauryan123"},"content":"import java.time.LocalTime;","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"Shauryan123"},"content":"/**","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"Shauryan123"},"content":" * Jackson-friendly version of {@link Meeting}.","lastModifiedDate":"2024-03-23"},{"lineNumber":15,"author":{"gitId":"Shauryan123"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":16,"author":{"gitId":"Shauryan123"},"content":"class JsonAdaptedMeeting {","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":18,"author":{"gitId":"Shauryan123"},"content":" private final LocalDate meetingDate;","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"Shauryan123"},"content":" private final LocalTime meetingTime;","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":21,"author":{"gitId":"Shauryan123"},"content":" private final LocalDateTime startDateTime;","lastModifiedDate":"2024-03-24"},{"lineNumber":22,"author":{"gitId":"Shauryan123"},"content":" private final Duration duration;","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"Shauryan123"},"content":" private final String agenda;","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"Shauryan123"},"content":" private final String notes;","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"Shauryan123"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":27,"author":{"gitId":"Shauryan123"},"content":" * Constructs a {@code JsonAdaptedMeeting} with the given meeting details.","lastModifiedDate":"2024-03-23"},{"lineNumber":28,"author":{"gitId":"Shauryan123"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":29,"author":{"gitId":"Shauryan123"},"content":" @JsonCreator","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"Shauryan123"},"content":" public JsonAdaptedMeeting(@JsonProperty(\"meetingDate\") LocalDate meetingDate,","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"Shauryan123"},"content":" @JsonProperty(\"meetingTime\") LocalTime meetingTime,","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"Shauryan123"},"content":" @JsonProperty(\"duration\") Duration duration,","lastModifiedDate":"2024-03-23"},{"lineNumber":33,"author":{"gitId":"Shauryan123"},"content":" @JsonProperty(\"agenda\") String agenda,","lastModifiedDate":"2024-03-23"},{"lineNumber":34,"author":{"gitId":"Shauryan123"},"content":" @JsonProperty(\"notes\") String notes) {","lastModifiedDate":"2024-03-23"},{"lineNumber":35,"author":{"gitId":"Shauryan123"},"content":" this.meetingDate \u003d meetingDate;","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"Shauryan123"},"content":" this.meetingTime \u003d meetingTime;","lastModifiedDate":"2024-03-23"},{"lineNumber":37,"author":{"gitId":"Shauryan123"},"content":" this.startDateTime \u003d LocalDateTime.of(meetingDate, meetingTime); // Initialize new field","lastModifiedDate":"2024-03-24"},{"lineNumber":38,"author":{"gitId":"Shauryan123"},"content":" this.duration \u003d duration;","lastModifiedDate":"2024-03-23"},{"lineNumber":39,"author":{"gitId":"Shauryan123"},"content":" this.agenda \u003d agenda;","lastModifiedDate":"2024-03-23"},{"lineNumber":40,"author":{"gitId":"Shauryan123"},"content":" this.notes \u003d notes;","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":43,"author":{"gitId":"Shauryan123"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":44,"author":{"gitId":"Shauryan123"},"content":" * Converts a given {@code Meeting} into this class for Jackson use.","lastModifiedDate":"2024-03-23"},{"lineNumber":45,"author":{"gitId":"Shauryan123"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":46,"author":{"gitId":"Shauryan123"},"content":" public JsonAdaptedMeeting(Meeting source) {","lastModifiedDate":"2024-03-23"},{"lineNumber":47,"author":{"gitId":"Shauryan123"},"content":" meetingDate \u003d source.getMeetingDate();","lastModifiedDate":"2024-03-23"},{"lineNumber":48,"author":{"gitId":"Shauryan123"},"content":" meetingTime \u003d source.getMeetingTime();","lastModifiedDate":"2024-03-23"},{"lineNumber":49,"author":{"gitId":"Shauryan123"},"content":" startDateTime \u003d source.getStartDateTime(); // Get the new field","lastModifiedDate":"2024-03-24"},{"lineNumber":50,"author":{"gitId":"Shauryan123"},"content":" duration \u003d source.getDuration();","lastModifiedDate":"2024-03-23"},{"lineNumber":51,"author":{"gitId":"Shauryan123"},"content":" agenda \u003d source.getAgenda();","lastModifiedDate":"2024-03-23"},{"lineNumber":52,"author":{"gitId":"Shauryan123"},"content":" notes \u003d source.getNotes();","lastModifiedDate":"2024-03-23"},{"lineNumber":53,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":54,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":55,"author":{"gitId":"Shauryan123"},"content":" @JsonProperty(\"meetingDate\")","lastModifiedDate":"2024-03-23"},{"lineNumber":56,"author":{"gitId":"Shauryan123"},"content":" public LocalDate getMeetingDate() {","lastModifiedDate":"2024-03-23"},{"lineNumber":57,"author":{"gitId":"Shauryan123"},"content":" return meetingDate;","lastModifiedDate":"2024-03-23"},{"lineNumber":58,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":59,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":60,"author":{"gitId":"Shauryan123"},"content":" @JsonProperty(\"meetingTime\")","lastModifiedDate":"2024-03-23"},{"lineNumber":61,"author":{"gitId":"Shauryan123"},"content":" public LocalTime getMeetingTime() {","lastModifiedDate":"2024-03-23"},{"lineNumber":62,"author":{"gitId":"Shauryan123"},"content":" return meetingTime;","lastModifiedDate":"2024-03-23"},{"lineNumber":63,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":64,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":65,"author":{"gitId":"Shauryan123"},"content":" @JsonProperty(\"duration\")","lastModifiedDate":"2024-03-23"},{"lineNumber":66,"author":{"gitId":"Shauryan123"},"content":" public Duration getDuration() {","lastModifiedDate":"2024-03-23"},{"lineNumber":67,"author":{"gitId":"Shauryan123"},"content":" return duration;","lastModifiedDate":"2024-03-23"},{"lineNumber":68,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":69,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":70,"author":{"gitId":"Shauryan123"},"content":" @JsonProperty(\"agenda\")","lastModifiedDate":"2024-03-23"},{"lineNumber":71,"author":{"gitId":"Shauryan123"},"content":" public String getAgenda() {","lastModifiedDate":"2024-03-23"},{"lineNumber":72,"author":{"gitId":"Shauryan123"},"content":" return agenda;","lastModifiedDate":"2024-03-23"},{"lineNumber":73,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":74,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":75,"author":{"gitId":"Shauryan123"},"content":" @JsonProperty(\"notes\")","lastModifiedDate":"2024-03-23"},{"lineNumber":76,"author":{"gitId":"Shauryan123"},"content":" public String getNotes() {","lastModifiedDate":"2024-03-23"},{"lineNumber":77,"author":{"gitId":"Shauryan123"},"content":" return notes;","lastModifiedDate":"2024-03-23"},{"lineNumber":78,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":79,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":80,"author":{"gitId":"Shauryan123"},"content":" @JsonProperty(\"startDateTime\")","lastModifiedDate":"2024-03-24"},{"lineNumber":81,"author":{"gitId":"Shauryan123"},"content":" public LocalDateTime getStartDateTime() {","lastModifiedDate":"2024-03-24"},{"lineNumber":82,"author":{"gitId":"Shauryan123"},"content":" return startDateTime;","lastModifiedDate":"2024-03-24"},{"lineNumber":83,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":84,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":85,"author":{"gitId":"Shauryan123"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":86,"author":{"gitId":"Shauryan123"},"content":" * Converts this Jackson-friendly adapted meeting object into the model\u0027s {@code Meeting} object.","lastModifiedDate":"2024-03-23"},{"lineNumber":87,"author":{"gitId":"Shauryan123"},"content":" *","lastModifiedDate":"2024-03-23"},{"lineNumber":88,"author":{"gitId":"Shauryan123"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted meeting.","lastModifiedDate":"2024-03-23"},{"lineNumber":89,"author":{"gitId":"Shauryan123"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":90,"author":{"gitId":"Shauryan123"},"content":" public Meeting toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-23"},{"lineNumber":91,"author":{"gitId":"Shauryan123"},"content":" // Additional validation can be performed here","lastModifiedDate":"2024-03-23"},{"lineNumber":92,"author":{"gitId":"Shauryan123"},"content":" return new Meeting(meetingDate, meetingTime, duration, agenda, notes);","lastModifiedDate":"2024-03-23"},{"lineNumber":93,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":94,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-23"}],"authorContributionMap":{"Shauryan123":94}},{"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":"Shauryan123"},"content":"import seedu.address.model.person.*;","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"Shauryan123"},"content":"/**","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"Shauryan123"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2024-03-23"},{"lineNumber":18,"author":{"gitId":"Shauryan123"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"Shauryan123"},"content":"//class JsonAdaptedPerson {","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"Shauryan123"},"content":"//","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"Shauryan123"},"content":"// public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"Shauryan123"},"content":"//","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"Shauryan123"},"content":"// private final String name;","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"Shauryan123"},"content":"// private final String phone;","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"Shauryan123"},"content":"// private final String email;","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"Shauryan123"},"content":"// private final String address;","lastModifiedDate":"2024-03-23"},{"lineNumber":27,"author":{"gitId":"Shauryan123"},"content":"// private final String policy;","lastModifiedDate":"2024-03-23"},{"lineNumber":28,"author":{"gitId":"Shauryan123"},"content":"// private final String relationship;","lastModifiedDate":"2024-03-23"},{"lineNumber":29,"author":{"gitId":"Shauryan123"},"content":"// private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"Shauryan123"},"content":"//","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"Shauryan123"},"content":"// private final List\u003cJsonAdaptedMeeting\u003e meetings \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"Shauryan123"},"content":"//","lastModifiedDate":"2024-03-23"},{"lineNumber":33,"author":{"gitId":"Shauryan123"},"content":"// /**","lastModifiedDate":"2024-03-23"},{"lineNumber":34,"author":{"gitId":"Shauryan123"},"content":"// * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2024-03-23"},{"lineNumber":35,"author":{"gitId":"Shauryan123"},"content":"// */","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"Shauryan123"},"content":"// @JsonCreator","lastModifiedDate":"2024-03-23"},{"lineNumber":37,"author":{"gitId":"Shauryan123"},"content":"// public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"Shauryan123"},"content":"// @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2024-03-23"},{"lineNumber":39,"author":{"gitId":"Shauryan123"},"content":"// @JsonProperty(\"relationship\") String relationship, @JsonProperty(\"policy\") String policy,","lastModifiedDate":"2024-03-23"},{"lineNumber":40,"author":{"gitId":"Shauryan123"},"content":"// @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags) {","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"Shauryan123"},"content":"//","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"Shauryan123"},"content":"// this.name \u003d name;","lastModifiedDate":"2024-03-23"},{"lineNumber":43,"author":{"gitId":"Shauryan123"},"content":"// this.phone \u003d phone;","lastModifiedDate":"2024-03-23"},{"lineNumber":44,"author":{"gitId":"Shauryan123"},"content":"// this.email \u003d email;","lastModifiedDate":"2024-03-23"},{"lineNumber":45,"author":{"gitId":"Shauryan123"},"content":"// this.address \u003d address;","lastModifiedDate":"2024-03-23"},{"lineNumber":46,"author":{"gitId":"Shauryan123"},"content":"// this.policy \u003d policy;","lastModifiedDate":"2024-03-23"},{"lineNumber":47,"author":{"gitId":"Shauryan123"},"content":"// this.relationship \u003d relationship;","lastModifiedDate":"2024-03-23"},{"lineNumber":48,"author":{"gitId":"Shauryan123"},"content":"//","lastModifiedDate":"2024-03-23"},{"lineNumber":49,"author":{"gitId":"Shauryan123"},"content":"// if (tags !\u003d null) {","lastModifiedDate":"2024-03-23"},{"lineNumber":50,"author":{"gitId":"Shauryan123"},"content":"// this.tags.addAll(tags);","lastModifiedDate":"2024-03-23"},{"lineNumber":51,"author":{"gitId":"Shauryan123"},"content":"// }","lastModifiedDate":"2024-03-23"},{"lineNumber":52,"author":{"gitId":"Shauryan123"},"content":"//","lastModifiedDate":"2024-03-23"},{"lineNumber":53,"author":{"gitId":"Shauryan123"},"content":"//","lastModifiedDate":"2024-03-23"},{"lineNumber":54,"author":{"gitId":"Shauryan123"},"content":"// }","lastModifiedDate":"2024-03-23"},{"lineNumber":55,"author":{"gitId":"Shauryan123"},"content":"//","lastModifiedDate":"2024-03-23"},{"lineNumber":56,"author":{"gitId":"Shauryan123"},"content":"// /**","lastModifiedDate":"2024-03-23"},{"lineNumber":57,"author":{"gitId":"Shauryan123"},"content":"// * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2024-03-23"},{"lineNumber":58,"author":{"gitId":"Shauryan123"},"content":"// */","lastModifiedDate":"2024-03-23"},{"lineNumber":59,"author":{"gitId":"Shauryan123"},"content":"// public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2024-03-23"},{"lineNumber":60,"author":{"gitId":"Shauryan123"},"content":"// name \u003d source.getName().fullName;","lastModifiedDate":"2024-03-23"},{"lineNumber":61,"author":{"gitId":"Shauryan123"},"content":"// phone \u003d source.getPhone().value;","lastModifiedDate":"2024-03-23"},{"lineNumber":62,"author":{"gitId":"Shauryan123"},"content":"// email \u003d source.getEmail().value;","lastModifiedDate":"2024-03-23"},{"lineNumber":63,"author":{"gitId":"Shauryan123"},"content":"// address \u003d source.getAddress().value;","lastModifiedDate":"2024-03-23"},{"lineNumber":64,"author":{"gitId":"Shauryan123"},"content":"// policy \u003d source.getPolicy().value;","lastModifiedDate":"2024-03-23"},{"lineNumber":65,"author":{"gitId":"Shauryan123"},"content":"// relationship \u003d source.getRelationship().value;","lastModifiedDate":"2024-03-23"},{"lineNumber":66,"author":{"gitId":"Shauryan123"},"content":"// tags.addAll(source.getTags().stream()","lastModifiedDate":"2024-03-23"},{"lineNumber":67,"author":{"gitId":"Shauryan123"},"content":"// .map(JsonAdaptedTag::new)","lastModifiedDate":"2024-03-23"},{"lineNumber":68,"author":{"gitId":"Shauryan123"},"content":"// .collect(Collectors.toList()));","lastModifiedDate":"2024-03-23"},{"lineNumber":69,"author":{"gitId":"Shauryan123"},"content":"// }","lastModifiedDate":"2024-03-23"},{"lineNumber":70,"author":{"gitId":"Shauryan123"},"content":"//","lastModifiedDate":"2024-03-23"},{"lineNumber":71,"author":{"gitId":"Shauryan123"},"content":"// /**","lastModifiedDate":"2024-03-23"},{"lineNumber":72,"author":{"gitId":"Shauryan123"},"content":"// * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2024-03-23"},{"lineNumber":73,"author":{"gitId":"Shauryan123"},"content":"// *","lastModifiedDate":"2024-03-23"},{"lineNumber":74,"author":{"gitId":"Shauryan123"},"content":"// * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2024-03-23"},{"lineNumber":75,"author":{"gitId":"Shauryan123"},"content":"// */","lastModifiedDate":"2024-03-23"},{"lineNumber":76,"author":{"gitId":"Shauryan123"},"content":"// public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-23"},{"lineNumber":77,"author":{"gitId":"Shauryan123"},"content":"// final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-23"},{"lineNumber":78,"author":{"gitId":"Shauryan123"},"content":"// for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2024-03-23"},{"lineNumber":79,"author":{"gitId":"Shauryan123"},"content":"// personTags.add(tag.toModelType());","lastModifiedDate":"2024-03-23"},{"lineNumber":80,"author":{"gitId":"Shauryan123"},"content":"// }","lastModifiedDate":"2024-03-23"},{"lineNumber":81,"author":{"gitId":"Shauryan123"},"content":"//","lastModifiedDate":"2024-03-23"},{"lineNumber":82,"author":{"gitId":"Shauryan123"},"content":"// if (name \u003d\u003d null) {","lastModifiedDate":"2024-03-23"},{"lineNumber":83,"author":{"gitId":"Shauryan123"},"content":"// throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2024-03-23"},{"lineNumber":84,"author":{"gitId":"Shauryan123"},"content":"// }","lastModifiedDate":"2024-03-23"},{"lineNumber":85,"author":{"gitId":"Shauryan123"},"content":"// if (!Name.isValidName(name)) {","lastModifiedDate":"2024-03-23"},{"lineNumber":86,"author":{"gitId":"Shauryan123"},"content":"// throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-23"},{"lineNumber":87,"author":{"gitId":"Shauryan123"},"content":"// }","lastModifiedDate":"2024-03-23"},{"lineNumber":88,"author":{"gitId":"Shauryan123"},"content":"// final Name modelName \u003d new Name(name);","lastModifiedDate":"2024-03-23"},{"lineNumber":89,"author":{"gitId":"Shauryan123"},"content":"//","lastModifiedDate":"2024-03-23"},{"lineNumber":90,"author":{"gitId":"Shauryan123"},"content":"// if (phone \u003d\u003d null) {","lastModifiedDate":"2024-03-23"},{"lineNumber":91,"author":{"gitId":"Shauryan123"},"content":"// throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2024-03-23"},{"lineNumber":92,"author":{"gitId":"Shauryan123"},"content":"// }","lastModifiedDate":"2024-03-23"},{"lineNumber":93,"author":{"gitId":"Shauryan123"},"content":"// if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2024-03-23"},{"lineNumber":94,"author":{"gitId":"Shauryan123"},"content":"// throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-23"},{"lineNumber":95,"author":{"gitId":"Shauryan123"},"content":"// }","lastModifiedDate":"2024-03-23"},{"lineNumber":96,"author":{"gitId":"Shauryan123"},"content":"// final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2024-03-23"},{"lineNumber":97,"author":{"gitId":"Shauryan123"},"content":"//","lastModifiedDate":"2024-03-23"},{"lineNumber":98,"author":{"gitId":"Shauryan123"},"content":"// if (email \u003d\u003d null) {","lastModifiedDate":"2024-03-23"},{"lineNumber":99,"author":{"gitId":"Shauryan123"},"content":"// throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2024-03-23"},{"lineNumber":100,"author":{"gitId":"Shauryan123"},"content":"// }","lastModifiedDate":"2024-03-23"},{"lineNumber":101,"author":{"gitId":"Shauryan123"},"content":"// if (!Email.isValidEmail(email)) {","lastModifiedDate":"2024-03-23"},{"lineNumber":102,"author":{"gitId":"Shauryan123"},"content":"// throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-23"},{"lineNumber":103,"author":{"gitId":"Shauryan123"},"content":"// }","lastModifiedDate":"2024-03-23"},{"lineNumber":104,"author":{"gitId":"Shauryan123"},"content":"// final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2024-03-23"},{"lineNumber":105,"author":{"gitId":"Shauryan123"},"content":"//","lastModifiedDate":"2024-03-23"},{"lineNumber":106,"author":{"gitId":"Shauryan123"},"content":"// if (address \u003d\u003d null) {","lastModifiedDate":"2024-03-23"},{"lineNumber":107,"author":{"gitId":"Shauryan123"},"content":"// throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2024-03-23"},{"lineNumber":108,"author":{"gitId":"Shauryan123"},"content":"// }","lastModifiedDate":"2024-03-23"},{"lineNumber":109,"author":{"gitId":"Shauryan123"},"content":"// if (!Address.isValidAddress(address)) {","lastModifiedDate":"2024-03-23"},{"lineNumber":110,"author":{"gitId":"Shauryan123"},"content":"// throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-23"},{"lineNumber":111,"author":{"gitId":"Shauryan123"},"content":"// }","lastModifiedDate":"2024-03-23"},{"lineNumber":112,"author":{"gitId":"Shauryan123"},"content":"// final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2024-03-23"},{"lineNumber":113,"author":{"gitId":"Shauryan123"},"content":"//","lastModifiedDate":"2024-03-23"},{"lineNumber":114,"author":{"gitId":"Shauryan123"},"content":"// if (relationship \u003d\u003d null) {","lastModifiedDate":"2024-03-23"},{"lineNumber":115,"author":{"gitId":"Shauryan123"},"content":"// throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-23"},{"lineNumber":116,"author":{"gitId":"Shauryan123"},"content":"// Relationship.class.getSimpleName()));","lastModifiedDate":"2024-03-23"},{"lineNumber":117,"author":{"gitId":"Shauryan123"},"content":"// }","lastModifiedDate":"2024-03-23"},{"lineNumber":118,"author":{"gitId":"Shauryan123"},"content":"// if (!Relationship.isValidRelationship(relationship)) {","lastModifiedDate":"2024-03-23"},{"lineNumber":119,"author":{"gitId":"Shauryan123"},"content":"// throw new IllegalValueException(Relationship.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-23"},{"lineNumber":120,"author":{"gitId":"Shauryan123"},"content":"// }","lastModifiedDate":"2024-03-23"},{"lineNumber":121,"author":{"gitId":"Shauryan123"},"content":"// final Relationship modelRelationship \u003d new Relationship(relationship);","lastModifiedDate":"2024-03-23"},{"lineNumber":122,"author":{"gitId":"Shauryan123"},"content":"//","lastModifiedDate":"2024-03-23"},{"lineNumber":123,"author":{"gitId":"Shauryan123"},"content":"// if (policy \u003d\u003d null) {","lastModifiedDate":"2024-03-23"},{"lineNumber":124,"author":{"gitId":"Shauryan123"},"content":"// throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Policy.class.getSimpleName()));","lastModifiedDate":"2024-03-23"},{"lineNumber":125,"author":{"gitId":"Shauryan123"},"content":"// }","lastModifiedDate":"2024-03-23"},{"lineNumber":126,"author":{"gitId":"Shauryan123"},"content":"// final Policy modelPolicy \u003d new Policy(policy);","lastModifiedDate":"2024-03-23"},{"lineNumber":127,"author":{"gitId":"Shauryan123"},"content":"//","lastModifiedDate":"2024-03-23"},{"lineNumber":128,"author":{"gitId":"Shauryan123"},"content":"// final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2024-03-23"},{"lineNumber":129,"author":{"gitId":"Shauryan123"},"content":"//","lastModifiedDate":"2024-03-23"},{"lineNumber":130,"author":{"gitId":"Shauryan123"},"content":"// return new Person(modelName, modelPhone, modelEmail, modelAddress, modelRelationship, modelPolicy, modelTags);","lastModifiedDate":"2024-03-23"},{"lineNumber":131,"author":{"gitId":"Shauryan123"},"content":"//","lastModifiedDate":"2024-03-23"},{"lineNumber":132,"author":{"gitId":"Shauryan123"},"content":"// }","lastModifiedDate":"2024-03-23"},{"lineNumber":133,"author":{"gitId":"Shauryan123"},"content":"//","lastModifiedDate":"2024-03-23"},{"lineNumber":134,"author":{"gitId":"Shauryan123"},"content":"//}","lastModifiedDate":"2024-03-23"},{"lineNumber":135,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":136,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":137,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":138,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":140,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13"},{"lineNumber":141,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":142,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":144,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":146,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13"},{"lineNumber":147,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":148,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13"},{"lineNumber":149,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13"},{"lineNumber":150,"author":{"gitId":"ibnu2651"},"content":" private final String policy;","lastModifiedDate":"2024-03-16"},{"lineNumber":151,"author":{"gitId":"kaiyi27"},"content":" private final String relationship;","lastModifiedDate":"2024-03-10"},{"lineNumber":152,"author":{"gitId":"Shauryan123"},"content":" private final List\u003cJsonAdaptedTag\u003e adaptedTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-23"},{"lineNumber":153,"author":{"gitId":"Shauryan123"},"content":" private final List\u003cJsonAdaptedMeeting\u003e adaptedMeetings \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":155,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":156,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13"},{"lineNumber":157,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":158,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":159,"author":{"gitId":"Shauryan123"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name,","lastModifiedDate":"2024-03-23"},{"lineNumber":160,"author":{"gitId":"Shauryan123"},"content":" @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2024-03-23"},{"lineNumber":161,"author":{"gitId":"Shauryan123"},"content":" @JsonProperty(\"email\") String email,","lastModifiedDate":"2024-03-23"},{"lineNumber":162,"author":{"gitId":"Shauryan123"},"content":" @JsonProperty(\"address\") String address,","lastModifiedDate":"2024-03-23"},{"lineNumber":163,"author":{"gitId":"Shauryan123"},"content":" @JsonProperty(\"relationship\") String relationship,","lastModifiedDate":"2024-03-23"},{"lineNumber":164,"author":{"gitId":"Shauryan123"},"content":" @JsonProperty(\"policy\") String policy,","lastModifiedDate":"2024-03-23"},{"lineNumber":165,"author":{"gitId":"Shauryan123"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e adaptedTags,","lastModifiedDate":"2024-03-23"},{"lineNumber":166,"author":{"gitId":"Shauryan123"},"content":" @JsonProperty(\"meetings\") List\u003cJsonAdaptedMeeting\u003e adaptedMeetings) {","lastModifiedDate":"2024-03-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13"},{"lineNumber":168,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":169,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13"},{"lineNumber":170,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13"},{"lineNumber":171,"author":{"gitId":"ibnu2651"},"content":" this.policy \u003d policy;","lastModifiedDate":"2024-03-16"},{"lineNumber":172,"author":{"gitId":"kaiyi27"},"content":" this.relationship \u003d relationship;","lastModifiedDate":"2024-03-10"},{"lineNumber":173,"author":{"gitId":"Shauryan123"},"content":" if (adaptedTags !\u003d null) {","lastModifiedDate":"2024-03-23"},{"lineNumber":174,"author":{"gitId":"Shauryan123"},"content":" this.adaptedTags.addAll(adaptedTags);","lastModifiedDate":"2024-03-23"},{"lineNumber":175,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":176,"author":{"gitId":"Shauryan123"},"content":" if (adaptedMeetings !\u003d null) {","lastModifiedDate":"2024-03-23"},{"lineNumber":177,"author":{"gitId":"Shauryan123"},"content":" this.adaptedMeetings.addAll(adaptedMeetings);","lastModifiedDate":"2024-03-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":181,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":182,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":183,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":184,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":185,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13"},{"lineNumber":186,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":187,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":188,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":189,"author":{"gitId":"ibnu2651"},"content":" policy \u003d source.getPolicy().value;","lastModifiedDate":"2024-03-16"},{"lineNumber":190,"author":{"gitId":"kaiyi27"},"content":" relationship \u003d source.getRelationship().value;","lastModifiedDate":"2024-03-10"},{"lineNumber":191,"author":{"gitId":"Shauryan123"},"content":" adaptedTags.addAll(source.getTags().stream()","lastModifiedDate":"2024-03-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":193,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13"},{"lineNumber":194,"author":{"gitId":"Shauryan123"},"content":" adaptedMeetings.addAll(source.getMeetings().stream()","lastModifiedDate":"2024-03-23"},{"lineNumber":195,"author":{"gitId":"Shauryan123"},"content":" .map(JsonAdaptedMeeting::new)","lastModifiedDate":"2024-03-23"},{"lineNumber":196,"author":{"gitId":"Shauryan123"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2024-03-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":199,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":200,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":201,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":202,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13"},{"lineNumber":203,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":204,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":205,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13"},{"lineNumber":206,"author":{"gitId":"Shauryan123"},"content":" for (JsonAdaptedTag tag : adaptedTags) {","lastModifiedDate":"2024-03-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":208,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":210,"author":{"gitId":"Shauryan123"},"content":" final List\u003cMeeting\u003e personMeetings \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-23"},{"lineNumber":211,"author":{"gitId":"Shauryan123"},"content":" for (JsonAdaptedMeeting meeting : adaptedMeetings) {","lastModifiedDate":"2024-03-23"},{"lineNumber":212,"author":{"gitId":"Shauryan123"},"content":" personMeetings.add(meeting.toModelType());","lastModifiedDate":"2024-03-23"},{"lineNumber":213,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":214,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":216,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":217,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":218,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":219,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":220,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":221,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":223,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":224,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":225,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":226,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":227,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":228,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":229,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":231,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":232,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":233,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":234,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":235,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":236,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":237,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":239,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":240,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":241,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":242,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":243,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":244,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":245,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":247,"author":{"gitId":"kaiyi27"},"content":" if (relationship \u003d\u003d null) {","lastModifiedDate":"2024-03-10"},{"lineNumber":248,"author":{"gitId":"kaiyi27"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-10"},{"lineNumber":249,"author":{"gitId":"kaiyi27"},"content":" Relationship.class.getSimpleName()));","lastModifiedDate":"2024-03-10"},{"lineNumber":250,"author":{"gitId":"kaiyi27"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":251,"author":{"gitId":"kaiyi27"},"content":" if (!Relationship.isValidRelationship(relationship)) {","lastModifiedDate":"2024-03-10"},{"lineNumber":252,"author":{"gitId":"kaiyi27"},"content":" throw new IllegalValueException(Relationship.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-10"},{"lineNumber":253,"author":{"gitId":"kaiyi27"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":254,"author":{"gitId":"kaiyi27"},"content":" final Relationship modelRelationship \u003d new Relationship(relationship);","lastModifiedDate":"2024-03-10"},{"lineNumber":255,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":256,"author":{"gitId":"ibnu2651"},"content":" if (policy \u003d\u003d null) {","lastModifiedDate":"2024-03-16"},{"lineNumber":257,"author":{"gitId":"ibnu2651"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Policy.class.getSimpleName()));","lastModifiedDate":"2024-03-16"},{"lineNumber":258,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":259,"author":{"gitId":"ibnu2651"},"content":" final Policy modelPolicy \u003d new Policy(policy);","lastModifiedDate":"2024-03-16"},{"lineNumber":260,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":261,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13"},{"lineNumber":262,"author":{"gitId":"Shauryan123"},"content":" final Person person \u003d new Person(modelName, modelPhone, modelEmail, modelAddress, modelRelationship, modelPolicy, modelTags);","lastModifiedDate":"2024-03-23"},{"lineNumber":263,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":264,"author":{"gitId":"Shauryan123"},"content":" // Add meetings to the person","lastModifiedDate":"2024-03-23"},{"lineNumber":265,"author":{"gitId":"Shauryan123"},"content":" for (Meeting meeting : personMeetings) {","lastModifiedDate":"2024-03-23"},{"lineNumber":266,"author":{"gitId":"Shauryan123"},"content":" person.addMeeting(meeting);","lastModifiedDate":"2024-03-23"},{"lineNumber":267,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":268,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":269,"author":{"gitId":"Shauryan123"},"content":" return person;","lastModifiedDate":"2024-03-23"},{"lineNumber":270,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":272,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"},{"lineNumber":273,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":274,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":275,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":276,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":277,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"}],"authorContributionMap":{"Shauryan123":160,"kaiyi27":12,"ibnu2651":10,"-":95}},{"path":"src/main/java/seedu/address/storage/JsonInsuraConnectBookStorage.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 static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.io.IOException;","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.util.Optional;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.FileUtil;","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * A class to access AddressBook data stored as a json file on the hard disk.","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"Shauryan123"},"content":"public class JsonInsuraConnectBookStorage implements InsuraConnectBookStorage {","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"Shauryan123"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(JsonInsuraConnectBookStorage.class);","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private Path filePath;","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"Shauryan123"},"content":" public JsonInsuraConnectBookStorage(Path filePath) {","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" return filePath;","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":" @Override","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public Optional\u003cReadOnlyAddressBook\u003e readAddressBook() throws DataLoadingException {","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"-"},"content":" return readAddressBook(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":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Similar to {@link #readAddressBook()}.","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2023-06-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public Optional\u003cReadOnlyAddressBook\u003e readAddressBook(Path filePath) throws DataLoadingException {","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"-"},"content":" requireNonNull(filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" Optional\u003cJsonSerializableAddressBook\u003e jsonAddressBook \u003d JsonUtil.readJsonFile(","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" filePath, JsonSerializableAddressBook.class);","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" if (!jsonAddressBook.isPresent()) {","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return Optional.of(jsonAddressBook.get().toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" logger.info(\"Illegal values found in \" + filePath + \": \" + ive.getMessage());","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" throw new DataLoadingException(ive);","lastModifiedDate":"2023-06-14"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook) throws IOException {","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"-"},"content":" saveAddressBook(addressBook, filePath);","lastModifiedDate":"2018-08-13"},{"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":" * Similar to {@link #saveAddressBook(ReadOnlyAddressBook)}.","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath) throws IOException {","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"-"},"content":" requireNonNull(addressBook);","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" requireNonNull(filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" FileUtil.createIfMissing(filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" JsonUtil.saveJsonFile(new JsonSerializableAddressBook(addressBook), filePath);","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":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"Shauryan123":3,"-":77}},{"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":"2024-03-17"},{"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":"-"},"content":" * API of the Storage component","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"Shauryan123"},"content":"public interface Storage extends InsuraConnectBookStorage, UserPrefsStorage {","lastModifiedDate":"2024-03-17"},{"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":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-04-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" Optional\u003cReadOnlyAddressBook\u003e readAddressBook() throws DataLoadingException;","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" void saveAddressBook(ReadOnlyAddressBook addressBook) throws IOException;","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"Shauryan123":1,"-":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":"2024-03-17"},{"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":"-"},"content":" * Manages storage of AddressBook data in local storage.","lastModifiedDate":"2016-09-24"},{"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":"Shauryan123"},"content":" private InsuraConnectBookStorage insuraConnectBookStorage;","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private UserPrefsStorage userPrefsStorage;","lastModifiedDate":"2016-10-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Creates a {@code StorageManager} with the given {@code AddressBookStorage} and {@code UserPrefStorage}.","lastModifiedDate":"2020-05-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":26,"author":{"gitId":"Shauryan123"},"content":" public StorageManager(InsuraConnectBookStorage insuraConnectBookStorage, UserPrefsStorage userPrefsStorage) {","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"Shauryan123"},"content":" this.insuraConnectBookStorage \u003d insuraConnectBookStorage;","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"-"},"content":" this.userPrefsStorage \u003d userPrefsStorage;","lastModifiedDate":"2016-10-01"},{"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":"-"},"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":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":53,"author":{"gitId":"Shauryan123"},"content":" return insuraConnectBookStorage.getAddressBookFilePath();","lastModifiedDate":"2024-03-17"},{"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":"-"},"content":" public Optional\u003cReadOnlyAddressBook\u003e readAddressBook() throws DataLoadingException {","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"Shauryan123"},"content":" return readAddressBook(insuraConnectBookStorage.getAddressBookFilePath());","lastModifiedDate":"2024-03-17"},{"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":"-"},"content":" public Optional\u003cReadOnlyAddressBook\u003e readAddressBook(Path filePath) throws DataLoadingException {","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"-"},"content":" logger.fine(\"Attempting to read data from file: \" + filePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":64,"author":{"gitId":"Shauryan123"},"content":" return insuraConnectBookStorage.readAddressBook(filePath);","lastModifiedDate":"2024-03-17"},{"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":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook) throws IOException {","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"Shauryan123"},"content":" saveAddressBook(addressBook, insuraConnectBookStorage.getAddressBookFilePath());","lastModifiedDate":"2024-03-17"},{"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":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath) throws IOException {","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"-"},"content":" logger.fine(\"Attempting to write to data file: \" + filePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":75,"author":{"gitId":"Shauryan123"},"content":" insuraConnectBookStorage.saveAddressBook(addressBook, filePath);","lastModifiedDate":"2024-03-17"},{"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":{"Shauryan123":8,"-":70}},{"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":"Shauryan123"},"content":"import java.awt.*;","lastModifiedDate":"2024-03-23"},{"lineNumber":4,"author":{"gitId":"Shauryan123"},"content":"import java.time.Duration;","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21"},{"lineNumber":7,"author":{"gitId":"Shauryan123"},"content":"import javafx.scene.Node;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21"},{"lineNumber":9,"author":{"gitId":"Shauryan123"},"content":"import javafx.scene.control.ScrollPane;","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"Shauryan123"},"content":"import javafx.scene.control.TitledPane;","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"Shauryan123"},"content":"import javafx.scene.effect.DropShadow;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"Shauryan123"},"content":"import javafx.scene.input.MouseEvent;","lastModifiedDate":"2024-03-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":"Shauryan123"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"Shauryan123"},"content":"import javafx.scene.paint.Color;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"Shauryan123"},"content":"import seedu.address.model.person.Meeting;","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":20,"author":{"gitId":"Shauryan123"},"content":"import javafx.scene.control.Accordion;","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2017-08-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2016-09-21"},{"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 address;","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":"kaiyi27"},"content":" private Label relationship;","lastModifiedDate":"2024-03-10"},{"lineNumber":43,"author":{"gitId":"kaiyi27"},"content":" @FXML","lastModifiedDate":"2024-03-10"},{"lineNumber":44,"author":{"gitId":"ibnu2651"},"content":" private Label policy;","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"ibnu2651"},"content":" @FXML","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18"},{"lineNumber":47,"author":{"gitId":"Shauryan123"},"content":" @FXML","lastModifiedDate":"2024-03-23"},{"lineNumber":48,"author":{"gitId":"Shauryan123"},"content":" private Accordion meetingsAccordion;","lastModifiedDate":"2024-03-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":51,"author":{"gitId":"Shauryan123"},"content":" * Creates a {@code PersonCard} with the given {@code Person} and index to display.","lastModifiedDate":"2024-03-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" address.setText(person.getAddress().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":61,"author":{"gitId":"kaiyi27"},"content":" relationship.setText(person.getRelationship().value);","lastModifiedDate":"2024-03-10"},{"lineNumber":62,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":63,"author":{"gitId":"Shauryan123"},"content":" policy.setText(person.getPolicy().value.isEmpty() ? \"No policy assigned\" : \"Policy: \" + person.getPolicy().value);","lastModifiedDate":"2024-03-23"},{"lineNumber":64,"author":{"gitId":"Shauryan123"},"content":" policy.setStyle(person.getPolicy().value.isEmpty() ? \"-fx-background-color: #f54242\" : \"-fx-background-color: #1fab2f\");","lastModifiedDate":"2024-03-23"},{"lineNumber":65,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":66,"author":{"gitId":"Shauryan123"},"content":" if (!person.isClient()) {","lastModifiedDate":"2024-03-23"},{"lineNumber":67,"author":{"gitId":"Shauryan123"},"content":" policy.setVisible(false);","lastModifiedDate":"2024-03-23"},{"lineNumber":68,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":69,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":70,"author":{"gitId":"Shauryan123"},"content":" tags.getChildren().clear();","lastModifiedDate":"2024-03-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" person.getTags().stream()","lastModifiedDate":"2019-01-02"},{"lineNumber":72,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02"},{"lineNumber":73,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02"},{"lineNumber":74,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"Shauryan123"},"content":" meetingsAccordion.getPanes().clear();","lastModifiedDate":"2024-03-23"},{"lineNumber":76,"author":{"gitId":"Shauryan123"},"content":" if (!person.getMeetings().isEmpty()) {","lastModifiedDate":"2024-03-23"},{"lineNumber":77,"author":{"gitId":"Shauryan123"},"content":" for (Meeting meeting : person.getMeetings()) {","lastModifiedDate":"2024-03-23"},{"lineNumber":78,"author":{"gitId":"Shauryan123"},"content":" TitledPane meetingPane \u003d createMeetingEntry(meeting);","lastModifiedDate":"2024-03-23"},{"lineNumber":79,"author":{"gitId":"Shauryan123"},"content":" meetingsAccordion.getPanes().add(meetingPane);","lastModifiedDate":"2024-03-23"},{"lineNumber":80,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":81,"author":{"gitId":"Shauryan123"},"content":" } else {","lastModifiedDate":"2024-03-23"},{"lineNumber":82,"author":{"gitId":"Shauryan123"},"content":" TitledPane noMeetingsPane \u003d new TitledPane(\"No meetings scheduled\", new Label(\"No scheduled meetings\"));","lastModifiedDate":"2024-03-23"},{"lineNumber":83,"author":{"gitId":"Shauryan123"},"content":" noMeetingsPane.setDisable(true);","lastModifiedDate":"2024-03-23"},{"lineNumber":84,"author":{"gitId":"Shauryan123"},"content":" meetingsAccordion.getPanes().add(noMeetingsPane);","lastModifiedDate":"2024-03-23"},{"lineNumber":85,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"Shauryan123"},"content":" applyHoverEffect(cardPane);","lastModifiedDate":"2024-03-23"},{"lineNumber":88,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":89,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":90,"author":{"gitId":"Shauryan123"},"content":" private TitledPane createMeetingEntry(Meeting meeting) {","lastModifiedDate":"2024-03-23"},{"lineNumber":91,"author":{"gitId":"Shauryan123"},"content":" VBox meetingDetails \u003d new VBox(5); // Padding around the VBox content","lastModifiedDate":"2024-03-23"},{"lineNumber":92,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":93,"author":{"gitId":"Shauryan123"},"content":" // Create styled labels for the headings","lastModifiedDate":"2024-03-23"},{"lineNumber":94,"author":{"gitId":"Shauryan123"},"content":" Label dateHeading \u003d new Label(\"Date: \");","lastModifiedDate":"2024-03-23"},{"lineNumber":95,"author":{"gitId":"Shauryan123"},"content":" dateHeading.setStyle(\"-fx-font-weight: bold !important; -fx-text-fill: #2a2a2a !important;\");","lastModifiedDate":"2024-03-23"},{"lineNumber":96,"author":{"gitId":"Shauryan123"},"content":" Label dateLabel \u003d new Label(meeting.getMeetingDate().toString());","lastModifiedDate":"2024-03-23"},{"lineNumber":97,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":98,"author":{"gitId":"Shauryan123"},"content":" Label timeHeading \u003d new Label(\"Time: \");","lastModifiedDate":"2024-03-23"},{"lineNumber":99,"author":{"gitId":"Shauryan123"},"content":" timeHeading.setStyle(\"-fx-font-weight: bold !important; -fx-text-fill: #2a2a2a !important;\");","lastModifiedDate":"2024-03-23"},{"lineNumber":100,"author":{"gitId":"Shauryan123"},"content":" Label timeLabel \u003d new Label(meeting.getMeetingTime().toString());","lastModifiedDate":"2024-03-23"},{"lineNumber":101,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":102,"author":{"gitId":"Shauryan123"},"content":" Label agendaHeading \u003d new Label(\"Agenda: \");","lastModifiedDate":"2024-03-23"},{"lineNumber":103,"author":{"gitId":"Shauryan123"},"content":" agendaHeading.setStyle(\"-fx-font-weight: bold !important; -fx-text-fill: #2a2a2a !important;\");","lastModifiedDate":"2024-03-23"},{"lineNumber":104,"author":{"gitId":"Shauryan123"},"content":" Label agendaLabel \u003d new Label(meeting.getAgenda());","lastModifiedDate":"2024-03-23"},{"lineNumber":105,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":106,"author":{"gitId":"Shauryan123"},"content":" Label notesHeading \u003d new Label(\"Notes: \");","lastModifiedDate":"2024-03-23"},{"lineNumber":107,"author":{"gitId":"Shauryan123"},"content":" notesHeading.setStyle(\"-fx-font-weight: bold !important; -fx-text-fill: #2a2a2a !important;\");","lastModifiedDate":"2024-03-23"},{"lineNumber":108,"author":{"gitId":"Shauryan123"},"content":" Label notesLabel \u003d new Label(meeting.getNotes());","lastModifiedDate":"2024-03-23"},{"lineNumber":109,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":110,"author":{"gitId":"Shauryan123"},"content":" Label durationHeading \u003d new Label(\"Duration: \");","lastModifiedDate":"2024-03-23"},{"lineNumber":111,"author":{"gitId":"Shauryan123"},"content":" durationHeading.setStyle(\"-fx-font-weight: bold !important; -fx-text-fill: #2a2a2a !important;\");","lastModifiedDate":"2024-03-23"},{"lineNumber":112,"author":{"gitId":"Shauryan123"},"content":" Label durationLabel \u003d new Label(formatDuration(meeting.getDuration()));","lastModifiedDate":"2024-03-23"},{"lineNumber":113,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":114,"author":{"gitId":"Shauryan123"},"content":" // Combine the headings and content into horizontal layouts","lastModifiedDate":"2024-03-23"},{"lineNumber":115,"author":{"gitId":"Shauryan123"},"content":" HBox dateBox \u003d new HBox(dateHeading, dateLabel);","lastModifiedDate":"2024-03-23"},{"lineNumber":116,"author":{"gitId":"Shauryan123"},"content":" HBox timeBox \u003d new HBox(timeHeading, timeLabel);","lastModifiedDate":"2024-03-23"},{"lineNumber":117,"author":{"gitId":"Shauryan123"},"content":" HBox agendaBox \u003d new HBox(agendaHeading, agendaLabel);","lastModifiedDate":"2024-03-23"},{"lineNumber":118,"author":{"gitId":"Shauryan123"},"content":" HBox notesBox \u003d new HBox(notesHeading, notesLabel);","lastModifiedDate":"2024-03-23"},{"lineNumber":119,"author":{"gitId":"Shauryan123"},"content":" HBox durationBox \u003d new HBox(durationHeading, durationLabel);","lastModifiedDate":"2024-03-23"},{"lineNumber":120,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":121,"author":{"gitId":"Shauryan123"},"content":" // Add some spacing between the heading and content","lastModifiedDate":"2024-03-23"},{"lineNumber":122,"author":{"gitId":"Shauryan123"},"content":" dateBox.setSpacing(5);","lastModifiedDate":"2024-03-23"},{"lineNumber":123,"author":{"gitId":"Shauryan123"},"content":" timeBox.setSpacing(5);","lastModifiedDate":"2024-03-23"},{"lineNumber":124,"author":{"gitId":"Shauryan123"},"content":" agendaBox.setSpacing(5);","lastModifiedDate":"2024-03-23"},{"lineNumber":125,"author":{"gitId":"Shauryan123"},"content":" notesBox.setSpacing(5);","lastModifiedDate":"2024-03-23"},{"lineNumber":126,"author":{"gitId":"Shauryan123"},"content":" durationBox.setSpacing(5);","lastModifiedDate":"2024-03-23"},{"lineNumber":127,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":128,"author":{"gitId":"Shauryan123"},"content":" // Add all HBoxes to the VBox","lastModifiedDate":"2024-03-23"},{"lineNumber":129,"author":{"gitId":"Shauryan123"},"content":" meetingDetails.getChildren().addAll(dateBox, timeBox,durationBox, agendaBox, notesBox);","lastModifiedDate":"2024-03-23"},{"lineNumber":130,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":131,"author":{"gitId":"Shauryan123"},"content":" // Wrap the VBox in a ScrollPane","lastModifiedDate":"2024-03-23"},{"lineNumber":132,"author":{"gitId":"Shauryan123"},"content":" ScrollPane scrollPane \u003d new ScrollPane(meetingDetails);","lastModifiedDate":"2024-03-23"},{"lineNumber":133,"author":{"gitId":"Shauryan123"},"content":" scrollPane.setFitToHeight(true); // Ensures the scroll pane fits the height of VBox","lastModifiedDate":"2024-03-23"},{"lineNumber":134,"author":{"gitId":"Shauryan123"},"content":" scrollPane.setHbarPolicy(ScrollPane.ScrollBarPolicy.AS_NEEDED); // Only show the horizontal bar when needed","lastModifiedDate":"2024-03-23"},{"lineNumber":135,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":136,"author":{"gitId":"Shauryan123"},"content":" // Create the TitledPane","lastModifiedDate":"2024-03-23"},{"lineNumber":137,"author":{"gitId":"Shauryan123"},"content":" TitledPane meetingPane \u003d new TitledPane(\"Meeting on \" + meeting.getMeetingDate().toString(), scrollPane);","lastModifiedDate":"2024-03-23"},{"lineNumber":138,"author":{"gitId":"Shauryan123"},"content":" meetingPane.setAnimated(true); // Enable animation","lastModifiedDate":"2024-03-23"},{"lineNumber":139,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":140,"author":{"gitId":"Shauryan123"},"content":" return meetingPane;","lastModifiedDate":"2024-03-23"},{"lineNumber":141,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":142,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":143,"author":{"gitId":"Shauryan123"},"content":" private String formatDuration(Duration duration) {","lastModifiedDate":"2024-03-23"},{"lineNumber":144,"author":{"gitId":"Shauryan123"},"content":" long seconds \u003d duration.getSeconds();","lastModifiedDate":"2024-03-23"},{"lineNumber":145,"author":{"gitId":"Shauryan123"},"content":" long absSeconds \u003d Math.abs(seconds);","lastModifiedDate":"2024-03-23"},{"lineNumber":146,"author":{"gitId":"Shauryan123"},"content":" String positive \u003d String.format(","lastModifiedDate":"2024-03-23"},{"lineNumber":147,"author":{"gitId":"Shauryan123"},"content":" \"%d:%02d:%02d\",","lastModifiedDate":"2024-03-23"},{"lineNumber":148,"author":{"gitId":"Shauryan123"},"content":" absSeconds / 3600,","lastModifiedDate":"2024-03-23"},{"lineNumber":149,"author":{"gitId":"Shauryan123"},"content":" (absSeconds % 3600) / 60,","lastModifiedDate":"2024-03-23"},{"lineNumber":150,"author":{"gitId":"Shauryan123"},"content":" absSeconds % 60);","lastModifiedDate":"2024-03-23"},{"lineNumber":151,"author":{"gitId":"Shauryan123"},"content":" return seconds \u003c 0 ? \"-\" + positive : positive;","lastModifiedDate":"2024-03-23"},{"lineNumber":152,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":153,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":154,"author":{"gitId":"Shauryan123"},"content":" private void applyHoverEffect(Node node) {","lastModifiedDate":"2024-03-21"},{"lineNumber":155,"author":{"gitId":"Shauryan123"},"content":" DropShadow hoverShadow \u003d new DropShadow();","lastModifiedDate":"2024-03-21"},{"lineNumber":156,"author":{"gitId":"Shauryan123"},"content":" hoverShadow.setColor(Color.PLUM);","lastModifiedDate":"2024-03-23"},{"lineNumber":157,"author":{"gitId":"Shauryan123"},"content":" hoverShadow.setRadius(30);","lastModifiedDate":"2024-03-21"},{"lineNumber":158,"author":{"gitId":"Shauryan123"},"content":" hoverShadow.setSpread(0.5);","lastModifiedDate":"2024-03-21"},{"lineNumber":159,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":160,"author":{"gitId":"Shauryan123"},"content":" node.addEventHandler(MouseEvent.MOUSE_ENTERED, e -\u003e node.setEffect(hoverShadow));","lastModifiedDate":"2024-03-23"},{"lineNumber":161,"author":{"gitId":"Shauryan123"},"content":" node.addEventHandler(MouseEvent.MOUSE_EXITED, e -\u003e node.setEffect(null));","lastModifiedDate":"2024-03-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":163,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"Shauryan123":111,"kaiyi27":3,"ibnu2651":2,"-":47}},{"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":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-17"},{"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":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":".label-header {","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":".text-field {","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":".tab-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" -fx-min-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" -fx-max-height: 0;","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":".table-view {","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" -fx-base: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" -fx-control-inner-background: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"Shauryan123"},"content":" -fx-padding: 10;","lastModifiedDate":"2024-03-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"-"},"content":".table-view .column-header-background {","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: #44106B;","lastModifiedDate":"2024-03-20"},{"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":"Shauryan123"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2024-03-20"},{"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":"Shauryan123"},"content":".table-view:focused .table-row-cell.list-cell {","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: #DC4247;","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"-"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2016-08-08"},{"lineNumber":82,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"Shauryan123"},"content":".table-view .table-row-cell:focused {","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":89,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"-"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2016-08-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":92,"author":{"gitId":"-"},"content":" -fx-border-color: transparent transparent transparent #4d4d4d;","lastModifiedDate":"2017-03-02"},{"lineNumber":93,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":95,"author":{"gitId":"-"},"content":".split-pane {","lastModifiedDate":"2016-08-15"},{"lineNumber":96,"author":{"gitId":"-"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":97,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":99,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"Shauryan123"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2024-03-23"},{"lineNumber":102,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2024-03-23"},{"lineNumber":103,"author":{"gitId":"Shauryan123"},"content":" -fx-border-color: transparent transparent transparent #4d4d4d;","lastModifiedDate":"2024-03-23"},{"lineNumber":104,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":105,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":106,"author":{"gitId":"Shauryan123"},"content":".split-pane {","lastModifiedDate":"2024-03-23"},{"lineNumber":107,"author":{"gitId":"Shauryan123"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2024-03-23"},{"lineNumber":108,"author":{"gitId":"Shauryan123"},"content":" -fx-border-width: 1;","lastModifiedDate":"2024-03-23"},{"lineNumber":109,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: derive(#222831, 20%);","lastModifiedDate":"2024-03-23"},{"lineNumber":110,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":111,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":112,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":113,"author":{"gitId":"Shauryan123"},"content":"/* TableView styling */","lastModifiedDate":"2024-03-23"},{"lineNumber":114,"author":{"gitId":"Shauryan123"},"content":".table-view {","lastModifiedDate":"2024-03-23"},{"lineNumber":115,"author":{"gitId":"Shauryan123"},"content":" -fx-base: #23272A; /* Base color for table */","lastModifiedDate":"2024-03-23"},{"lineNumber":116,"author":{"gitId":"Shauryan123"},"content":" -fx-control-inner-background: #23272A; /* Background color of table rows */","lastModifiedDate":"2024-03-23"},{"lineNumber":117,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: #23272A;","lastModifiedDate":"2024-03-23"},{"lineNumber":118,"author":{"gitId":"Shauryan123"},"content":" -fx-table-cell-border-color: #2C2F33; /* Border color for cells */","lastModifiedDate":"2024-03-23"},{"lineNumber":119,"author":{"gitId":"Shauryan123"},"content":" -fx-table-header-border-color: #2C2F33; /* Border color for header */","lastModifiedDate":"2024-03-23"},{"lineNumber":120,"author":{"gitId":"Shauryan123"},"content":" -fx-padding: 5;","lastModifiedDate":"2024-03-23"},{"lineNumber":121,"author":{"gitId":"Shauryan123"},"content":" -fx-border-radius: 5; /* Rounded corners for the table */","lastModifiedDate":"2024-03-23"},{"lineNumber":122,"author":{"gitId":"Shauryan123"},"content":" -fx-background-radius: 5;","lastModifiedDate":"2024-03-23"},{"lineNumber":123,"author":{"gitId":"Shauryan123"},"content":" -fx-effect: dropshadow(three-pass-box, rgba(0, 0, 0, 0.75), 5, 0, 0, 1); /* Subtle shadow around table */","lastModifiedDate":"2024-03-23"},{"lineNumber":124,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":125,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":126,"author":{"gitId":"Shauryan123"},"content":".table-view .column-header-background {","lastModifiedDate":"2024-03-23"},{"lineNumber":127,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: #23272A; /* Background of the header */","lastModifiedDate":"2024-03-23"},{"lineNumber":128,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":129,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":130,"author":{"gitId":"Shauryan123"},"content":".table-view .column-header {","lastModifiedDate":"2024-03-23"},{"lineNumber":131,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-23"},{"lineNumber":132,"author":{"gitId":"Shauryan123"},"content":" -fx-border-color: transparent transparent #4C4F52 transparent; /* Color of the separator line */","lastModifiedDate":"2024-03-23"},{"lineNumber":133,"author":{"gitId":"Shauryan123"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2024-03-23"},{"lineNumber":134,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":135,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":136,"author":{"gitId":"Shauryan123"},"content":".table-view .column-header .label {","lastModifiedDate":"2024-03-23"},{"lineNumber":137,"author":{"gitId":"Shauryan123"},"content":" -fx-font-size: 14pt; /* Reduced font size for better table header */","lastModifiedDate":"2024-03-23"},{"lineNumber":138,"author":{"gitId":"Shauryan123"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2024-03-23"},{"lineNumber":139,"author":{"gitId":"Shauryan123"},"content":" -fx-text-fill: #FFFFFF;","lastModifiedDate":"2024-03-23"},{"lineNumber":140,"author":{"gitId":"Shauryan123"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2024-03-23"},{"lineNumber":141,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":142,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":143,"author":{"gitId":"Shauryan123"},"content":".table-view .table-row-cell {","lastModifiedDate":"2024-03-23"},{"lineNumber":144,"author":{"gitId":"Shauryan123"},"content":" -fx-border-color: #2C2F33;","lastModifiedDate":"2024-03-23"},{"lineNumber":145,"author":{"gitId":"Shauryan123"},"content":" -fx-border-width: 0;","lastModifiedDate":"2024-03-23"},{"lineNumber":146,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: #23272A; /* Background color for table cells */","lastModifiedDate":"2024-03-23"},{"lineNumber":147,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":148,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":149,"author":{"gitId":"Shauryan123"},"content":".table-view .table-row-cell:hover {","lastModifiedDate":"2024-03-23"},{"lineNumber":150,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: #2C2F33; /* Slightly lighter on hover */","lastModifiedDate":"2024-03-23"},{"lineNumber":151,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":152,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":153,"author":{"gitId":"Shauryan123"},"content":".table-view:focused .table-row-cell:focused:selected, .table-view:focused .table-row-cell:selected {","lastModifiedDate":"2024-03-23"},{"lineNumber":154,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: #40444B; /* Selection color */","lastModifiedDate":"2024-03-23"},{"lineNumber":155,"author":{"gitId":"Shauryan123"},"content":" -fx-text-fill: #FFFFFF; /* Text color when row is selected */","lastModifiedDate":"2024-03-23"},{"lineNumber":156,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":157,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":158,"author":{"gitId":"Shauryan123"},"content":"/* Scroll bar styles for a clean and modern look */","lastModifiedDate":"2024-03-23"},{"lineNumber":159,"author":{"gitId":"Shauryan123"},"content":".scroll-bar {","lastModifiedDate":"2024-03-23"},{"lineNumber":160,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-23"},{"lineNumber":161,"author":{"gitId":"Shauryan123"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2024-03-23"},{"lineNumber":162,"author":{"gitId":"Shauryan123"},"content":" -fx-background-radius: 3;","lastModifiedDate":"2024-03-23"},{"lineNumber":163,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":164,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":165,"author":{"gitId":"Shauryan123"},"content":".scroll-bar:vertical .thumb, .scroll-bar:horizontal .thumb {","lastModifiedDate":"2024-03-23"},{"lineNumber":166,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: #4C4F52;","lastModifiedDate":"2024-03-23"},{"lineNumber":167,"author":{"gitId":"Shauryan123"},"content":" -fx-background-radius: 3em;","lastModifiedDate":"2024-03-23"},{"lineNumber":168,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":169,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":170,"author":{"gitId":"Shauryan123"},"content":".scroll-bar:vertical .thumb:hover, .scroll-bar:horizontal .thumb:hover {","lastModifiedDate":"2024-03-23"},{"lineNumber":171,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: #686D70;","lastModifiedDate":"2024-03-23"},{"lineNumber":172,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":173,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":174,"author":{"gitId":"Shauryan123"},"content":".scroll-bar:vertical .increment-button, .scroll-bar:vertical .decrement-button,","lastModifiedDate":"2024-03-23"},{"lineNumber":175,"author":{"gitId":"Shauryan123"},"content":".scroll-bar:horizontal .increment-button, .scroll-bar:horizontal .decrement-button {","lastModifiedDate":"2024-03-23"},{"lineNumber":176,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-23"},{"lineNumber":177,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":178,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":".list-view {","lastModifiedDate":"2017-03-02"},{"lineNumber":180,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":181,"author":{"gitId":"-"},"content":" -fx-padding: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":182,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2018-01-10"},{"lineNumber":183,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":185,"author":{"gitId":"-"},"content":".list-cell {","lastModifiedDate":"2016-08-08"},{"lineNumber":186,"author":{"gitId":"-"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":187,"author":{"gitId":"-"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":188,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":189,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":191,"author":{"gitId":"-"},"content":".list-cell:filled:even {","lastModifiedDate":"2017-03-02"},{"lineNumber":192,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: #32337D;","lastModifiedDate":"2024-03-20"},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":195,"author":{"gitId":"-"},"content":".list-cell:filled:odd {","lastModifiedDate":"2017-03-02"},{"lineNumber":196,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: #4C3C78;","lastModifiedDate":"2024-03-20"},{"lineNumber":197,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":199,"author":{"gitId":"-"},"content":".list-cell:filled:selected {","lastModifiedDate":"2017-03-02"},{"lineNumber":200,"author":{"gitId":"-"},"content":" -fx-background-color: #424d5f;","lastModifiedDate":"2017-03-02"},{"lineNumber":201,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":203,"author":{"gitId":"-"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2017-03-02"},{"lineNumber":204,"author":{"gitId":"-"},"content":" -fx-border-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":205,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":206,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":208,"author":{"gitId":"-"},"content":".list-cell .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":209,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":210,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":212,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":213,"author":{"gitId":"Shauryan123"},"content":"/* Override the default JavaFX behavior for list view cells when clicked/focused */","lastModifiedDate":"2024-03-23"},{"lineNumber":214,"author":{"gitId":"Shauryan123"},"content":".list-cell, .list-cell:filled:focused {","lastModifiedDate":"2024-03-23"},{"lineNumber":215,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-23"},{"lineNumber":216,"author":{"gitId":"Shauryan123"},"content":" -fx-border-color: transparent;","lastModifiedDate":"2024-03-23"},{"lineNumber":217,"author":{"gitId":"Shauryan123"},"content":" -fx-outline: none;","lastModifiedDate":"2024-03-23"},{"lineNumber":218,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":219,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":".cell_big_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":221,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":222,"author":{"gitId":"-"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2016-08-08"},{"lineNumber":223,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":224,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":226,"author":{"gitId":"-"},"content":".cell_small_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":227,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2022-01-13"},{"lineNumber":228,"author":{"gitId":"-"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2017-03-02"},{"lineNumber":229,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":230,"author":{"gitId":"Shauryan123"},"content":" -fx-padding: 3px;","lastModifiedDate":"2024-03-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-03-17"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":233,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":234,"author":{"gitId":"-"},"content":".stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":235,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: derive(#222831, 20%);","lastModifiedDate":"2024-03-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":238,"author":{"gitId":"-"},"content":".pane-with-border {","lastModifiedDate":"2017-05-15"},{"lineNumber":239,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: derive(#222831, 20%);","lastModifiedDate":"2024-03-23"},{"lineNumber":240,"author":{"gitId":"Shauryan123"},"content":" -fx-border-color: #222831;","lastModifiedDate":"2024-03-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2017-05-09"},{"lineNumber":242,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":244,"author":{"gitId":"-"},"content":".status-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":245,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: derive(#222831, 30%);","lastModifiedDate":"2024-03-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":247,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":248,"author":{"gitId":"-"},"content":".result-display {","lastModifiedDate":"2016-09-14"},{"lineNumber":249,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: #3c3e3f;","lastModifiedDate":"2024-03-20"},{"lineNumber":250,"author":{"gitId":"Shauryan123"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2024-03-20"},{"lineNumber":251,"author":{"gitId":"Shauryan123"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2024-03-20"},{"lineNumber":252,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":253,"author":{"gitId":"Shauryan123"},"content":" -fx-opacity: 1;","lastModifiedDate":"2024-03-20"},{"lineNumber":254,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":256,"author":{"gitId":"Shauryan123"},"content":"#resultDisplay {","lastModifiedDate":"2024-03-23"},{"lineNumber":257,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":258,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":259,"author":{"gitId":"Shauryan123"},"content":"#resultDisplay .content {","lastModifiedDate":"2024-03-23"},{"lineNumber":260,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: FBF3D5;","lastModifiedDate":"2024-03-23"},{"lineNumber":261,"author":{"gitId":"Shauryan123"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2024-03-23"},{"lineNumber":262,"author":{"gitId":"Shauryan123"},"content":" -fx-border-width: 3;","lastModifiedDate":"2024-03-23"},{"lineNumber":263,"author":{"gitId":"Shauryan123"},"content":" -fx-border-color: black;","lastModifiedDate":"2024-03-23"},{"lineNumber":264,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":266,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":267,"author":{"gitId":"-"},"content":".result-display .label {","lastModifiedDate":"2016-09-14"},{"lineNumber":268,"author":{"gitId":"Shauryan123"},"content":" -fx-text-fill: white !important;","lastModifiedDate":"2024-03-20"},{"lineNumber":269,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":271,"author":{"gitId":"-"},"content":".status-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":272,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":273,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":274,"author":{"gitId":"-"},"content":" -fx-padding: 4px;","lastModifiedDate":"2018-12-08"},{"lineNumber":275,"author":{"gitId":"-"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2018-12-08"},{"lineNumber":276,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":278,"author":{"gitId":"-"},"content":".status-bar-with-border {","lastModifiedDate":"2016-08-08"},{"lineNumber":279,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: derive(#222831, 30%);","lastModifiedDate":"2024-03-23"},{"lineNumber":280,"author":{"gitId":"Shauryan123"},"content":" -fx-border-color: derive(#222831, 25%);","lastModifiedDate":"2024-03-23"},{"lineNumber":281,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","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":".status-bar-with-border .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":285,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":286,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":288,"author":{"gitId":"-"},"content":".grid-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":289,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":290,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":291,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":292,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":293,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":294,"author":{"gitId":"-"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":295,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: derive(#222831, 30%);","lastModifiedDate":"2024-03-23"},{"lineNumber":296,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":298,"author":{"gitId":"-"},"content":".context-menu {","lastModifiedDate":"2016-08-08"},{"lineNumber":299,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: derive(#222831, 50%);","lastModifiedDate":"2024-03-23"},{"lineNumber":300,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":302,"author":{"gitId":"-"},"content":".context-menu .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":303,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":304,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":306,"author":{"gitId":"-"},"content":".menu-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":307,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: derive(#222831, 20%);","lastModifiedDate":"2024-03-23"},{"lineNumber":308,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":310,"author":{"gitId":"-"},"content":".menu-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":311,"author":{"gitId":"-"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":312,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":313,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":314,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":315,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":316,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":317,"author":{"gitId":"-"},"content":".menu .left-container {","lastModifiedDate":"2016-08-08"},{"lineNumber":318,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: #222831;","lastModifiedDate":"2024-03-23"},{"lineNumber":319,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":320,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":321,"author":{"gitId":"-"},"content":"/*","lastModifiedDate":"2016-08-08"},{"lineNumber":322,"author":{"gitId":"-"},"content":" * Metro style Push Button","lastModifiedDate":"2016-08-08"},{"lineNumber":323,"author":{"gitId":"-"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2016-08-08"},{"lineNumber":324,"author":{"gitId":"-"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2016-08-08"},{"lineNumber":325,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":326,"author":{"gitId":"-"},"content":".button {","lastModifiedDate":"2016-08-08"},{"lineNumber":327,"author":{"gitId":"-"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2016-08-08"},{"lineNumber":328,"author":{"gitId":"-"},"content":" -fx-border-color: #e2e2e2;","lastModifiedDate":"2016-08-08"},{"lineNumber":329,"author":{"gitId":"-"},"content":" -fx-border-width: 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":330,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":331,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":332,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2022-01-13"},{"lineNumber":333,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":334,"author":{"gitId":"-"},"content":" -fx-text-fill: #d8d8d8;","lastModifiedDate":"2016-08-08"},{"lineNumber":335,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","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":".button:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":339,"author":{"gitId":"-"},"content":" -fx-background-color: #3a3a3a;","lastModifiedDate":"2016-08-08"},{"lineNumber":340,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":341,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":342,"author":{"gitId":"-"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2016-08-08"},{"lineNumber":343,"author":{"gitId":"-"},"content":" -fx-background-color: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":344,"author":{"gitId":"-"},"content":" -fx-text-fill: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":345,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":346,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":347,"author":{"gitId":"-"},"content":".button:focused {","lastModifiedDate":"2016-08-08"},{"lineNumber":348,"author":{"gitId":"-"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2016-08-08"},{"lineNumber":349,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":350,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08"},{"lineNumber":351,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":352,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":353,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":355,"author":{"gitId":"-"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08"},{"lineNumber":356,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08"},{"lineNumber":357,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":358,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":359,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":360,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":361,"author":{"gitId":"-"},"content":".button:default {","lastModifiedDate":"2016-08-08"},{"lineNumber":362,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":363,"author":{"gitId":"-"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2016-08-08"},{"lineNumber":364,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":365,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":366,"author":{"gitId":"-"},"content":".button:default:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":367,"author":{"gitId":"-"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2016-08-08"},{"lineNumber":368,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":369,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":370,"author":{"gitId":"-"},"content":".dialog-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":371,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":372,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":373,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":374,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2016-08-08"},{"lineNumber":375,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":376,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":377,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":378,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2016-08-08"},{"lineNumber":379,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08"},{"lineNumber":380,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2016-08-08"},{"lineNumber":381,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":382,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":383,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":384,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2016-08-08"},{"lineNumber":385,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":386,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":387,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":388,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2016-08-08"},{"lineNumber":389,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08"},{"lineNumber":390,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08"},{"lineNumber":391,"author":{"gitId":"-"},"content":" -fx-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":392,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":393,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":394,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":395,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02"},{"lineNumber":396,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":397,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":398,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":399,"author":{"gitId":"-"},"content":".scroll-bar .thumb {","lastModifiedDate":"2016-08-15"},{"lineNumber":400,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":401,"author":{"gitId":"-"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2016-08-15"},{"lineNumber":402,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":403,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":404,"author":{"gitId":"-"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2016-08-15"},{"lineNumber":405,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-15"},{"lineNumber":406,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-15"},{"lineNumber":407,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":408,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":409,"author":{"gitId":"-"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2016-08-15"},{"lineNumber":410,"author":{"gitId":"-"},"content":" -fx-shape: \" \";","lastModifiedDate":"2016-08-15"},{"lineNumber":411,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":412,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":413,"author":{"gitId":"-"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":414,"author":{"gitId":"-"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2016-08-15"},{"lineNumber":415,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":416,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":417,"author":{"gitId":"-"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":418,"author":{"gitId":"-"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2016-08-18"},{"lineNumber":419,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":420,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":421,"author":{"gitId":"-"},"content":"#cardPane {","lastModifiedDate":"2016-08-08"},{"lineNumber":422,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":423,"author":{"gitId":"-"},"content":" -fx-border-width: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":424,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":425,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":426,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08"},{"lineNumber":427,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08"},{"lineNumber":428,"author":{"gitId":"-"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2016-08-08"},{"lineNumber":429,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":430,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":431,"author":{"gitId":"-"},"content":"#commandTextField {","lastModifiedDate":"2017-03-02"},{"lineNumber":432,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: #ADDBB6;","lastModifiedDate":"2024-03-20"},{"lineNumber":433,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":434,"author":{"gitId":"Shauryan123"},"content":" -fx-border-color: #383838 #383838 #50AB64 #383838;","lastModifiedDate":"2024-03-20"},{"lineNumber":435,"author":{"gitId":"-"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":436,"author":{"gitId":"Shauryan123"},"content":" -fx-border-width: 2;","lastModifiedDate":"2024-03-23"},{"lineNumber":437,"author":{"gitId":"Shauryan123"},"content":" -fx-font-family: \"Segoe UI Bold\";","lastModifiedDate":"2024-03-20"},{"lineNumber":438,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":439,"author":{"gitId":"Shauryan123"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-20"},{"lineNumber":440,"author":{"gitId":"Shauryan123"},"content":" -fx-prompt-text-fill: #545454;","lastModifiedDate":"2024-03-20"},{"lineNumber":441,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":442,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":443,"author":{"gitId":"-"},"content":"#filterField, #personListPanel, #personWebpage {","lastModifiedDate":"2016-08-15"},{"lineNumber":444,"author":{"gitId":"-"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2016-08-15"},{"lineNumber":445,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":446,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":447,"author":{"gitId":"-"},"content":"#resultDisplay .content {","lastModifiedDate":"2017-03-02"},{"lineNumber":448,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: black;","lastModifiedDate":"2024-03-20"},{"lineNumber":449,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":450,"author":{"gitId":"Shauryan123"},"content":" -fx-border-width: 3;","lastModifiedDate":"2024-03-20"},{"lineNumber":451,"author":{"gitId":"Shauryan123"},"content":" -fx-border-color: white;","lastModifiedDate":"2024-03-23"},{"lineNumber":452,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":453,"author":{"gitId":"-"},"content":"#tags {","lastModifiedDate":"2016-12-18"},{"lineNumber":454,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2016-12-18"},{"lineNumber":455,"author":{"gitId":"-"},"content":" -fx-vgap: 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":456,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":457,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":458,"author":{"gitId":"-"},"content":"#tags .label {","lastModifiedDate":"2016-12-18"},{"lineNumber":459,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-12-18"},{"lineNumber":460,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: #D97930;","lastModifiedDate":"2024-03-20"},{"lineNumber":461,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":462,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":463,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":464,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2016-12-18"},{"lineNumber":465,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":466,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":467,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":468,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":469,"author":{"gitId":"Shauryan123"},"content":"/* Scroll pane styles */","lastModifiedDate":"2024-03-23"},{"lineNumber":470,"author":{"gitId":"Shauryan123"},"content":".scroll-pane {","lastModifiedDate":"2024-03-23"},{"lineNumber":471,"author":{"gitId":"Shauryan123"},"content":" -fx-background: transparent;","lastModifiedDate":"2024-03-23"},{"lineNumber":472,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-23"},{"lineNumber":473,"author":{"gitId":"Shauryan123"},"content":" -fx-background-radius: 5 !important; /* Rounded corners for the content box */","lastModifiedDate":"2024-03-23"},{"lineNumber":474,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":475,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":476,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":477,"author":{"gitId":"Shauryan123"},"content":"/* Accordion styles for both collapsed and expanded */","lastModifiedDate":"2024-03-23"},{"lineNumber":478,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":479,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":480,"author":{"gitId":"Shauryan123"},"content":".accordion .titled-pane .content * {","lastModifiedDate":"2024-03-23"},{"lineNumber":481,"author":{"gitId":"Shauryan123"},"content":" -fx-text-fill: black !important; /* Or any color that is visible against the content background */","lastModifiedDate":"2024-03-23"},{"lineNumber":482,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":483,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":484,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":485,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":486,"author":{"gitId":"Shauryan123"},"content":".accordion .titled-pane:expanded {","lastModifiedDate":"2024-03-23"},{"lineNumber":487,"author":{"gitId":"Shauryan123"},"content":" -fx-transition-type: slide-vertical !important;","lastModifiedDate":"2024-03-23"},{"lineNumber":488,"author":{"gitId":"Shauryan123"},"content":" -fx-transition-duration: 2s !important;","lastModifiedDate":"2024-03-23"},{"lineNumber":489,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":490,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":491,"author":{"gitId":"Shauryan123"},"content":".accordion .titled-pane:expanded \u003e .content {","lastModifiedDate":"2024-03-23"},{"lineNumber":492,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: #D6DAC8; /* Color of the content when expanded */","lastModifiedDate":"2024-03-23"},{"lineNumber":493,"author":{"gitId":"Shauryan123"},"content":" -fx-padding: 10px !important;","lastModifiedDate":"2024-03-23"},{"lineNumber":494,"author":{"gitId":"Shauryan123"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2024-03-23"},{"lineNumber":495,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":496,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":497,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":498,"author":{"gitId":"Shauryan123"},"content":"/* Apply shadow effect on hover */","lastModifiedDate":"2024-03-23"},{"lineNumber":499,"author":{"gitId":"Shauryan123"},"content":".accordion .titled-pane:hover {","lastModifiedDate":"2024-03-23"},{"lineNumber":500,"author":{"gitId":"Shauryan123"},"content":" -fx-effect: dropshadow(gaussian, rgba(255, 255, 255, 0.8), 10, 0, 0, 0) !important;","lastModifiedDate":"2024-03-23"},{"lineNumber":501,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":502,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":503,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":504,"author":{"gitId":"Shauryan123"},"content":"/* TitledPane styling when collapsed */","lastModifiedDate":"2024-03-23"},{"lineNumber":505,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":506,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":507,"author":{"gitId":"Shauryan123"},"content":"/* Subtle shadow for the collapsed titled pane for depth */","lastModifiedDate":"2024-03-23"},{"lineNumber":508,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":509,"author":{"gitId":"Shauryan123"},"content":"/* Enhance the overall accordion appearance */","lastModifiedDate":"2024-03-23"},{"lineNumber":510,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":511,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":512,"author":{"gitId":"Shauryan123"},"content":".meeting-details-container {","lastModifiedDate":"2024-03-23"},{"lineNumber":513,"author":{"gitId":"Shauryan123"},"content":" -fx-background-radius: 5 !important;","lastModifiedDate":"2024-03-23"},{"lineNumber":514,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":515,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":516,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":517,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":518,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":519,"author":{"gitId":"Shauryan123"},"content":"/* Person card styles */","lastModifiedDate":"2024-03-23"},{"lineNumber":520,"author":{"gitId":"Shauryan123"},"content":".person-card {","lastModifiedDate":"2024-03-23"},{"lineNumber":521,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: #f9f9f9;","lastModifiedDate":"2024-03-23"},{"lineNumber":522,"author":{"gitId":"Shauryan123"},"content":" -fx-background-radius: 5;","lastModifiedDate":"2024-03-23"},{"lineNumber":523,"author":{"gitId":"Shauryan123"},"content":" -fx-padding: 10;","lastModifiedDate":"2024-03-23"},{"lineNumber":524,"author":{"gitId":"Shauryan123"},"content":" -fx-border-width: 0;","lastModifiedDate":"2024-03-23"},{"lineNumber":525,"author":{"gitId":"Shauryan123"},"content":" -fx-border-color: transparent;","lastModifiedDate":"2024-03-23"},{"lineNumber":526,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":527,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":528,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":529,"author":{"gitId":"Shauryan123"},"content":"/* Tags styling */","lastModifiedDate":"2024-03-23"},{"lineNumber":530,"author":{"gitId":"Shauryan123"},"content":".tags-container .label {","lastModifiedDate":"2024-03-23"},{"lineNumber":531,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: #a3a3a3;","lastModifiedDate":"2024-03-23"},{"lineNumber":532,"author":{"gitId":"Shauryan123"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-23"},{"lineNumber":533,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":534,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":535,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":536,"author":{"gitId":"Shauryan123"},"content":".relationship-label {","lastModifiedDate":"2024-03-23"},{"lineNumber":537,"author":{"gitId":"Shauryan123"},"content":" -fx-text-fill: #EFBC9B !important; /* A soft pink color */","lastModifiedDate":"2024-03-23"},{"lineNumber":538,"author":{"gitId":"Shauryan123"},"content":" -fx-font-size: 14px !important;","lastModifiedDate":"2024-03-23"},{"lineNumber":539,"author":{"gitId":"Shauryan123"},"content":" -fx-padding: 3 !important;","lastModifiedDate":"2024-03-23"},{"lineNumber":540,"author":{"gitId":"Shauryan123"},"content":" -fx-font-weight: bold !important;","lastModifiedDate":"2024-03-23"},{"lineNumber":541,"author":{"gitId":"Shauryan123"},"content":" -fx-text-transform: uppercase !important; /* Transform text to uppercase */","lastModifiedDate":"2024-03-23"},{"lineNumber":542,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":543,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":544,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":545,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":546,"author":{"gitId":"Shauryan123"},"content":".policy-label {","lastModifiedDate":"2024-03-23"},{"lineNumber":547,"author":{"gitId":"Shauryan123"},"content":" -fx-font-family: \"Segoe UI\" !important;","lastModifiedDate":"2024-03-23"},{"lineNumber":548,"author":{"gitId":"Shauryan123"},"content":" -fx-font-size: 13px !important;","lastModifiedDate":"2024-03-23"},{"lineNumber":549,"author":{"gitId":"Shauryan123"},"content":" -fx-text-fill: #010504 !important;","lastModifiedDate":"2024-03-23"},{"lineNumber":550,"author":{"gitId":"Shauryan123"},"content":" -fx-background-radius: 3px !important;","lastModifiedDate":"2024-03-23"},{"lineNumber":551,"author":{"gitId":"Shauryan123"},"content":" -fx-padding: 1 3 1 3 !important;","lastModifiedDate":"2024-03-23"},{"lineNumber":552,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":553,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":554,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":555,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":556,"author":{"gitId":"Shauryan123"},"content":"/* Accordion panel styling */","lastModifiedDate":"2024-03-23"},{"lineNumber":557,"author":{"gitId":"Shauryan123"},"content":".accordion {","lastModifiedDate":"2024-03-23"},{"lineNumber":558,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: #F3CCF3 !important; /* Light grey background */","lastModifiedDate":"2024-03-23"},{"lineNumber":559,"author":{"gitId":"Shauryan123"},"content":" -fx-border-color: #646464; /* Grey border */","lastModifiedDate":"2024-03-23"},{"lineNumber":560,"author":{"gitId":"Shauryan123"},"content":" -fx-border-radius: 10px; /* Rounded corners for the accordion */","lastModifiedDate":"2024-03-23"},{"lineNumber":561,"author":{"gitId":"Shauryan123"},"content":" -fx-background-radius: 10px; /* Rounded corners for the accordion background */","lastModifiedDate":"2024-03-23"},{"lineNumber":562,"author":{"gitId":"Shauryan123"},"content":" -fx-border-width: 2px; /* Width of the border */","lastModifiedDate":"2024-03-23"},{"lineNumber":563,"author":{"gitId":"Shauryan123"},"content":" -fx-padding: 5px; /* Padding inside the accordion */","lastModifiedDate":"2024-03-23"},{"lineNumber":564,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":565,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":566,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":567,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":568,"author":{"gitId":"Shauryan123"},"content":"/* TitledPane styling when collapsed */","lastModifiedDate":"2024-03-23"},{"lineNumber":569,"author":{"gitId":"Shauryan123"},"content":".accordion .titled-pane:collapsed {","lastModifiedDate":"2024-03-23"},{"lineNumber":570,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: #e7e7e7; /* A slightly darker grey for collapsed panes */","lastModifiedDate":"2024-03-23"},{"lineNumber":571,"author":{"gitId":"Shauryan123"},"content":" -fx-background-radius: 8px; /* Slightly less rounded corners for collapsed panes */","lastModifiedDate":"2024-03-23"},{"lineNumber":572,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":573,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":574,"author":{"gitId":"Shauryan123"},"content":"/* TitledPane styling when expanded */","lastModifiedDate":"2024-03-23"},{"lineNumber":575,"author":{"gitId":"Shauryan123"},"content":".accordion .titled-pane:expanded {","lastModifiedDate":"2024-03-23"},{"lineNumber":576,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: #F3CCF3 !important; /* White background for expanded pane */","lastModifiedDate":"2024-03-23"},{"lineNumber":577,"author":{"gitId":"Shauryan123"},"content":" -fx-background-radius: 8px; /* Slightly less rounded corners for expanded panes */","lastModifiedDate":"2024-03-23"},{"lineNumber":578,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":579,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":580,"author":{"gitId":"Shauryan123"},"content":"/* Content area inside each TitledPane */","lastModifiedDate":"2024-03-23"},{"lineNumber":581,"author":{"gitId":"Shauryan123"},"content":".accordion .titled-pane \u003e .content {","lastModifiedDate":"2024-03-23"},{"lineNumber":582,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: #F3CCF3 !important; /* White background for content */","lastModifiedDate":"2024-03-23"},{"lineNumber":583,"author":{"gitId":"Shauryan123"},"content":" -fx-background-radius: 8px; /* Rounded corners for content */","lastModifiedDate":"2024-03-23"},{"lineNumber":584,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":585,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":586,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":587,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":588,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":589,"author":{"gitId":"Shauryan123"},"content":".titled-pane \u003e .title","lastModifiedDate":"2024-03-23"},{"lineNumber":590,"author":{"gitId":"Shauryan123"},"content":"{","lastModifiedDate":"2024-03-23"},{"lineNumber":591,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: #EED3D9;","lastModifiedDate":"2024-03-23"},{"lineNumber":592,"author":{"gitId":"Shauryan123"},"content":" -fx-border-color: rgba(0, 60, 136, 0.8);","lastModifiedDate":"2024-03-23"},{"lineNumber":593,"author":{"gitId":"Shauryan123"},"content":" -fx-font-family: \u0027Lucida Grande\u0027,Verdana,Geneva,Lucida,Arial,Helvetica,sans-serif;","lastModifiedDate":"2024-03-23"},{"lineNumber":594,"author":{"gitId":"Shauryan123"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2024-03-23"},{"lineNumber":595,"author":{"gitId":"Shauryan123"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2024-03-23"},{"lineNumber":596,"author":{"gitId":"Shauryan123"},"content":" -fx-text-fill: WHITE;","lastModifiedDate":"2024-03-23"},{"lineNumber":597,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":598,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-23"}],"authorContributionMap":{"Shauryan123":270,"-":328}},{"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":"Shauryan123"},"content":" -fx-border-color: #EEA5A6;","lastModifiedDate":"2024-03-20"},{"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":{"Shauryan123":1,"-":19}},{"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":"ibnu2651"},"content":" title\u003d\"InsuraConnect\" minWidth\u003d\"450\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2024-03-20"},{"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":"Shauryan123"},"content":" \u003cVBox fx:id\u003d\"personList\" styleClass\u003d\"content-area\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-23"},{"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":"Shauryan123"},"content":" \u003cStackPane fx:id\u003d\"personListPanelPlaceholder\" styleClass\u003d\"shadow-pane\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2024-03-23"},{"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":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29"}],"authorContributionMap":{"Shauryan123":3,"ibnu2651":1,"-":57}},{"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":"Shauryan123"},"content":"\u003c?import javafx.scene.control.ScrollPane?\u003e","lastModifiedDate":"2024-03-23"},{"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":"Shauryan123"},"content":"\u003c?import javafx.scene.layout.Priority?\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":13,"author":{"gitId":"Shauryan123"},"content":"\u003c?import javafx.scene.control.Accordion?\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":15,"author":{"gitId":"Shauryan123"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\" styleClass\u003d\"person-card\"\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"Shauryan123"},"content":" \u003cColumnConstraints minWidth\u003d\"10\" prefWidth\u003d\"300\" maxWidth\u003d\"Infinity\" hgrow\u003d\"SOMETIMES\"/\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"Shauryan123"},"content":" \u003cColumnConstraints minWidth\u003d\"10\" prefWidth\u003d\"100\" hgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"Shauryan123"},"content":" \u003cVBox alignment\u003d\"TOP_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\"/\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"Shauryan123"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_small_label\"/\u003e","lastModifiedDate":"2024-03-23"},{"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":"Shauryan123"},"content":" \u003cFlowPane fx:id\u003d\"tags\" styleClass\u003d\"tags-container\"/\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"Shauryan123"},"content":" \u003cLabel fx:id\u003d\"relationship\" styleClass\u003d\"relationship-label\"/\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"Shauryan123"},"content":" \u003cLabel fx:id\u003d\"policy\" styleClass\u003d\"policy-label\"/\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"Shauryan123"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\"/\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":33,"author":{"gitId":"Shauryan123"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\"/\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":34,"author":{"gitId":"Shauryan123"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\"/\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":37,"author":{"gitId":"Shauryan123"},"content":" \u003c!-- ScrollPane to contain the meetings --\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"Shauryan123"},"content":" \u003cScrollPane fx:id\u003d\"scrollPane\" GridPane.columnIndex\u003d\"1\" hbarPolicy\u003d\"AS_NEEDED\" vbarPolicy\u003d\"AS_NEEDED\" fitToHeight\u003d\"true\" fitToWidth\u003d\"true\" styleClass\u003d\"meeting-scroll-pane\"\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":39,"author":{"gitId":"Shauryan123"},"content":" \u003cVBox fx:id\u003d\"meetingsVBox\" alignment\u003d\"TOP_RIGHT\" fillWidth\u003d\"true\" styleClass\u003d\"meeting-details-container\"\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":40,"author":{"gitId":"Shauryan123"},"content":" \u003c!-- Wrap Accordion in a VBox and set alignment to TOP_RIGHT --\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"Shauryan123"},"content":" \u003cAccordion fx:id\u003d\"meetingsAccordion\" minWidth\u003d\"200\" maxWidth\u003d\"300\" VBox.vgrow\u003d\"ALWAYS\" styleClass\u003d\"accordion\"\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"Shauryan123"},"content":" \u003c!-- Meeting TitledPanes will be added here in the controller code --\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":43,"author":{"gitId":"Shauryan123"},"content":" \u003c/Accordion\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":44,"author":{"gitId":"Shauryan123"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":45,"author":{"gitId":"Shauryan123"},"content":" \u003c/ScrollPane\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"Shauryan123":24,"-":23}},{"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":"Shauryan123"},"content":"import static seedu.address.logic.commands.CommandTestUtil.RELATIONSHIP_DESC_AMY;","lastModifiedDate":"2024-03-17"},{"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":"2024-03-17"},{"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":"Shauryan123"},"content":"import seedu.address.storage.JsonInsuraConnectBookStorage;","lastModifiedDate":"2024-03-17"},{"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":"Shauryan123"},"content":" JsonInsuraConnectBookStorage addressBookStorage \u003d","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"Shauryan123"},"content":" new JsonInsuraConnectBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2024-03-17"},{"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":"Shauryan123"},"content":" JsonInsuraConnectBookStorage addressBookStorage \u003d new JsonInsuraConnectBookStorage(prefPath) {","lastModifiedDate":"2024-03-17"},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":156,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2024-03-17"},{"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":"kaiyi27"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + RELATIONSHIP_DESC_AMY;","lastModifiedDate":"2024-03-10"},{"lineNumber":171,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2023-06-13"},{"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":"justincred"},"content":" expectedModel.commitAddressBook();","lastModifiedDate":"2024-03-19"},{"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":{"Shauryan123":5,"kaiyi27":1,"justincred":1,"-":170}},{"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":"-"},"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":"justincred"},"content":" expectedModel.commitAddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertCommandSuccess(new AddCommand(validPerson), model,","lastModifiedDate":"2019-01-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" expectedModel);","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","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 execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(0);","lastModifiedDate":"2018-01-10"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertCommandFailure(new AddCommand(personInList), model,","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" AddCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"justincred":2,"-":48}},{"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":"-"},"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":"-"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2017-06-22"},{"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":"2018-08-06"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":160,"author":{"gitId":"justincred"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":161,"author":{"gitId":"justincred"},"content":" public boolean canUndoAddressBook() {","lastModifiedDate":"2024-03-16"},{"lineNumber":162,"author":{"gitId":"justincred"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-16"},{"lineNumber":163,"author":{"gitId":"justincred"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":164,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":165,"author":{"gitId":"justincred"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":166,"author":{"gitId":"justincred"},"content":" public boolean canRedoAddressBook() {","lastModifiedDate":"2024-03-16"},{"lineNumber":167,"author":{"gitId":"justincred"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-16"},{"lineNumber":168,"author":{"gitId":"justincred"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":169,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":170,"author":{"gitId":"justincred"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":171,"author":{"gitId":"justincred"},"content":" public void undoAddressBook() {","lastModifiedDate":"2024-03-16"},{"lineNumber":172,"author":{"gitId":"justincred"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-16"},{"lineNumber":173,"author":{"gitId":"justincred"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":174,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":175,"author":{"gitId":"justincred"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":176,"author":{"gitId":"justincred"},"content":" public void redoAddressBook() {","lastModifiedDate":"2024-03-16"},{"lineNumber":177,"author":{"gitId":"justincred"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-16"},{"lineNumber":178,"author":{"gitId":"justincred"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":179,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":180,"author":{"gitId":"justincred"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":181,"author":{"gitId":"justincred"},"content":" public void commitAddressBook() {","lastModifiedDate":"2024-03-16"},{"lineNumber":182,"author":{"gitId":"justincred"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-16"},{"lineNumber":183,"author":{"gitId":"justincred"},"content":" }","lastModifiedDate":"2024-03-16"},{"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":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07"},{"lineNumber":188,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":189,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07"},{"lineNumber":190,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":192,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":193,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":194,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":197,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":198,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":199,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":200,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":201,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":202,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":204,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":205,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12"},{"lineNumber":206,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":207,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12"},{"lineNumber":208,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":210,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07"},{"lineNumber":211,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":212,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":213,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":214,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":215,"author":{"gitId":"justincred"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":216,"author":{"gitId":"justincred"},"content":" public void commitAddressBook() {","lastModifiedDate":"2024-03-19"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":218,"author":{"gitId":"justincred"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":219,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":220,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08"},{"lineNumber":221,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":222,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":223,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":225,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":226,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04"},{"lineNumber":227,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04"},{"lineNumber":228,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":229,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":231,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12"}],"authorContributionMap":{"justincred":27,"-":204}},{"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":"-"},"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":"justincred"},"content":" expectedModel.commitAddressBook();","lastModifiedDate":"2024-03-19"},{"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":"justincred"},"content":" expectedModel.commitAddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ClearCommand(), model, ClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08"}],"authorContributionMap":{"justincred":2,"-":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":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"Shauryan123"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_RELATIONSHIP;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"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":"-"},"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":"2017-06-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":"2024-03-17"},{"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":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":36,"author":{"gitId":"Shauryan123"},"content":" public static final String VALID_RELATIONSHIP_AMY \u003d \"client\";","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"Shauryan123"},"content":" public static final String VALID_RELATIONSHIP_BOB \u003d \"partner\";","lastModifiedDate":"2024-03-17"},{"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":"ibnu2651"},"content":" public static final String VALID_POLICY_AMY \u003d \"\";","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"ibnu2651"},"content":" public static final String VALID_POLICY_BOB \u003d \"\";","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05"},{"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":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":53,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"Shauryan123"},"content":" public static final String RELATIONSHIP_DESC_AMY \u003d \" \" + PREFIX_RELATIONSHIP + VALID_RELATIONSHIP_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"Shauryan123"},"content":" public static final String RELATIONSHIP_DESC_BOB \u003d \" \" + PREFIX_RELATIONSHIP + VALID_RELATIONSHIP_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":59,"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":60,"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":61,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05"},{"lineNumber":63,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"Shauryan123"},"content":" public static final String INVALID_RELATIONSHIP_DESC \u003d \" \" + PREFIX_RELATIONSHIP + \"agent\";","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"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":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":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":78,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":79,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":82,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25"},{"lineNumber":88,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":89,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":91,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":94,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":99,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":102,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25"},{"lineNumber":104,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":105,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":109,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":110,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":111,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":112,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25"},{"lineNumber":114,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25"},{"lineNumber":116,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":117,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":118,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":125,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":126,"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":127,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31"},{"lineNumber":128,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":132,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31"},{"lineNumber":133,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20"},{"lineNumber":134,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":139,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"Shauryan123":8,"ibnu2651":2,"justincred":1,"-":128}},{"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":"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":"justincred"},"content":" expectedModel.commitAddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-06-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":55,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":58,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05"},{"lineNumber":65,"author":{"gitId":"justincred"},"content":" expectedModel.commitAddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" showNoPerson(expectedModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-06-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-06-05"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-06-05"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":79,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":" DeleteCommand deleteFirstCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08"},{"lineNumber":87,"author":{"gitId":"-"},"content":" DeleteCommand deleteSecondCommand \u003d new DeleteCommand(INDEX_SECOND_PERSON);","lastModifiedDate":"2018-08-08"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":" DeleteCommand deleteFirstCommandCopy \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(targetIndex);","lastModifiedDate":"2019-02-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":" String expected \u003d DeleteCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertEquals(expected, deleteCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05"},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":117,"author":{"gitId":"-"},"content":" private void showNoPerson(Model model) {","lastModifiedDate":"2017-06-05"},{"lineNumber":118,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2017-06-12"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertTrue(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2018-02-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":122,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"justincred":2,"-":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":"ibnu2651"},"content":" Person editedPerson \u003d new PersonBuilder()","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"ibnu2651"},"content":" .withPolicy(model.getFilteredPersonList().get(0).getPolicy().value)","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"ibnu2651"},"content":" .build();","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedPerson).build();","lastModifiedDate":"2017-06-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":46,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":50,"author":{"gitId":"justincred"},"content":" expectedModel.commitAddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":57,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2017-05-18"},{"lineNumber":58,"author":{"gitId":"-"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":60,"author":{"gitId":"-"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2017-05-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":64,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-05-18"},{"lineNumber":65,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPerson, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":68,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":72,"author":{"gitId":"justincred"},"content":" expectedModel.commitAddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":79,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, new EditPersonDescriptor());","lastModifiedDate":"2018-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":85,"author":{"gitId":"justincred"},"content":" expectedModel.commitAddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":92,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":95,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder(personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":103,"author":{"gitId":"justincred"},"content":" expectedModel.commitAddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":109,"author":{"gitId":"-"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":110,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05"},{"lineNumber":111,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":118,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":120,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2017-05-18"},{"lineNumber":121,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":122,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":130,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18"},{"lineNumber":131,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22"},{"lineNumber":132,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":137,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18"},{"lineNumber":138,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18"},{"lineNumber":139,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18"},{"lineNumber":140,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18"},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":143,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":144,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18"},{"lineNumber":145,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18"},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-05-18"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":148,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08"},{"lineNumber":149,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":151,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":154,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":156,"author":{"gitId":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2018-08-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":158,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2017-05-25"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2017-05-25"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":179,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2019-02-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08"}],"authorContributionMap":{"ibnu2651":3,"justincred":4,"-":182}},{"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.getTypicalAddressBook;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"ibnu2651"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalPersons;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"Shauryan123"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"Shauryan123"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"Shauryan123"},"content":"import seedu.address.model.person.RelationshipContainsKeywordsPredicate;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"Shauryan123"},"content":"import seedu.address.model.person.TagContainsKeywordsPredicate;","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code FindCommand}.","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class FindCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"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":"Shauryan123"},"content":" Predicate\u003cPerson\u003e firstPredicate \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"Shauryan123"},"content":" Predicate\u003cPerson\u003e secondPredicate \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2017-06-12"},{"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":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2017-06-27"},{"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":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"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":"-"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"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":"-"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"Shauryan123"},"content":" public void execute_nameKeywords_noPersonFound() {","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"Shauryan123"},"content":" Predicate\u003cPerson\u003e predicate \u003d new NameContainsKeywordsPredicate(Collections.singletonList(\"NoSuchName\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":70,"author":{"gitId":"Shauryan123"},"content":" public void execute_relationshipKeywords_noPersonFound() {","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2017-06-12"},{"lineNumber":72,"author":{"gitId":"ibnu2651"},"content":" Predicate\u003cPerson\u003e predicate \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"ibnu2651"},"content":" new RelationshipContainsKeywordsPredicate(Collections.singletonList(\"NoSuchRelationship\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":81,"author":{"gitId":"Shauryan123"},"content":" public void execute_tagKeywords_noPersonFound() {","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"Shauryan123"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"Shauryan123"},"content":" Predicate\u003cPerson\u003e predicate \u003d new TagContainsKeywordsPredicate(Collections.singletonList(\"NoSuchTag\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":87,"author":{"gitId":"Shauryan123"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":90,"author":{"gitId":"Shauryan123"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"Shauryan123"},"content":" public void execute_combinedKeywords_multiplePersonsFound() {","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"Shauryan123"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 7);","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"Shauryan123"},"content":" Predicate\u003cPerson\u003e predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Carl\", \"Elle\"))","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"Shauryan123"},"content":" .or(new RelationshipContainsKeywordsPredicate(Arrays.asList(\"client\", \"partner\")))","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"Shauryan123"},"content":" .or(new TagContainsKeywordsPredicate(Arrays.asList(\"friends\")));","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-20"},{"lineNumber":99,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"Shauryan123"},"content":" // Print the actual and expected lists","lastModifiedDate":"2024-03-20"},{"lineNumber":101,"author":{"gitId":"Shauryan123"},"content":" System.out.println(\"Expected: \" + getTypicalPersons());","lastModifiedDate":"2024-03-20"},{"lineNumber":102,"author":{"gitId":"Shauryan123"},"content":" System.out.println(\"Actual: \" + model.getFilteredPersonList());","lastModifiedDate":"2024-03-20"},{"lineNumber":103,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"Shauryan123"},"content":" assertEquals(getTypicalPersons(), model.getFilteredPersonList());","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":111,"author":{"gitId":"Shauryan123"},"content":" Predicate\u003cPerson\u003e predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":112,"author":{"gitId":"-"},"content":" FindCommand findCommand \u003d new FindCommand(predicate);","lastModifiedDate":"2019-02-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"Shauryan123":28,"ibnu2651":3,"-":85}},{"path":"src/test/java/seedu/address/logic/commands/PolicyCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ibnu2651"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"ibnu2651"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"ibnu2651"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"ibnu2651"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_POLICY_AMY;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"ibnu2651"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_POLICY_BOB;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"ibnu2651"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"ibnu2651"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"ibnu2651"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"ibnu2651"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"ibnu2651"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"ibnu2651"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"ibnu2651"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"ibnu2651"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"ibnu2651"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"ibnu2651"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"ibnu2651"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"ibnu2651"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"ibnu2651"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"ibnu2651"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"ibnu2651"},"content":"import seedu.address.model.person.Policy;","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"ibnu2651"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"ibnu2651"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"ibnu2651"},"content":" * Contains integration tests (interaction with the Model) and unit tests for PolicyCommand.","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"ibnu2651"},"content":"public class PolicyCommandTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"ibnu2651"},"content":" private static final String POLICY_STUB \u003d \"Some policy\";","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"ibnu2651"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"ibnu2651"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"ibnu2651"},"content":" public void execute_addPolicyUnfilteredList_success() {","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"ibnu2651"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"ibnu2651"},"content":" Person editedPerson \u003d new PersonBuilder(firstPerson).withPolicy(POLICY_STUB).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"ibnu2651"},"content":" PolicyCommand policyCommand \u003d new PolicyCommand(INDEX_FIRST_PERSON, new Policy(editedPerson.getPolicy().value));","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"ibnu2651"},"content":" String expectedMessage \u003d String.format(PolicyCommand.MESSAGE_ADD_POLICY_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2024-03-23"},{"lineNumber":43,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"ibnu2651"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"ibnu2651"},"content":" expectedModel.setPerson(firstPerson, editedPerson);","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"ibnu2651"},"content":" expectedModel.commitAddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"ibnu2651"},"content":" assertCommandSuccess(policyCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"ibnu2651"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"ibnu2651"},"content":" public void execute_deletePolicyUnfilteredList_success() {","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"ibnu2651"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"ibnu2651"},"content":" Person editedPerson \u003d new PersonBuilder(firstPerson).withPolicy(\"\").build();","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"ibnu2651"},"content":" PolicyCommand remarkCommand \u003d new PolicyCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"ibnu2651"},"content":" new Policy(editedPerson.getPolicy().toString()));","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"ibnu2651"},"content":" String expectedMessage \u003d","lastModifiedDate":"2024-03-23"},{"lineNumber":60,"author":{"gitId":"ibnu2651"},"content":" String.format(PolicyCommand.MESSAGE_DELETE_POLICY_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2024-03-23"},{"lineNumber":61,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"ibnu2651"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"ibnu2651"},"content":" expectedModel.setPerson(firstPerson, editedPerson);","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"ibnu2651"},"content":" expectedModel.commitAddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"ibnu2651"},"content":" assertCommandSuccess(remarkCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"ibnu2651"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"ibnu2651"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"ibnu2651"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"ibnu2651"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"ibnu2651"},"content":" Person editedPerson \u003d new PersonBuilder(model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased()))","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"ibnu2651"},"content":" .withPolicy(POLICY_STUB).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"ibnu2651"},"content":" PolicyCommand policyCommand \u003d new PolicyCommand(INDEX_FIRST_PERSON, new Policy(editedPerson.getPolicy().value));","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"ibnu2651"},"content":" String expectedMessage \u003d String.format(PolicyCommand.MESSAGE_ADD_POLICY_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2024-03-23"},{"lineNumber":80,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"ibnu2651"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"ibnu2651"},"content":" expectedModel.setPerson(firstPerson, editedPerson);","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"ibnu2651"},"content":" expectedModel.commitAddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":84,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"ibnu2651"},"content":" assertCommandSuccess(policyCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":87,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":88,"author":{"gitId":"ibnu2651"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":89,"author":{"gitId":"ibnu2651"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2024-03-16"},{"lineNumber":90,"author":{"gitId":"ibnu2651"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2024-03-16"},{"lineNumber":91,"author":{"gitId":"ibnu2651"},"content":" PolicyCommand policyCommand \u003d new PolicyCommand(outOfBoundIndex, new Policy(VALID_POLICY_BOB));","lastModifiedDate":"2024-03-16"},{"lineNumber":92,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":93,"author":{"gitId":"ibnu2651"},"content":" assertCommandFailure(policyCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-16"},{"lineNumber":94,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":95,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":96,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":97,"author":{"gitId":"ibnu2651"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2024-03-16"},{"lineNumber":98,"author":{"gitId":"ibnu2651"},"content":" * but smaller than size of address book","lastModifiedDate":"2024-03-16"},{"lineNumber":99,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":100,"author":{"gitId":"ibnu2651"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":101,"author":{"gitId":"ibnu2651"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2024-03-16"},{"lineNumber":102,"author":{"gitId":"ibnu2651"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-16"},{"lineNumber":103,"author":{"gitId":"ibnu2651"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-16"},{"lineNumber":104,"author":{"gitId":"ibnu2651"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2024-03-16"},{"lineNumber":105,"author":{"gitId":"ibnu2651"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2024-03-16"},{"lineNumber":106,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":107,"author":{"gitId":"ibnu2651"},"content":" PolicyCommand policyCommand \u003d new PolicyCommand(outOfBoundIndex, new Policy(VALID_POLICY_BOB));","lastModifiedDate":"2024-03-16"},{"lineNumber":108,"author":{"gitId":"ibnu2651"},"content":" assertCommandFailure(policyCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-16"},{"lineNumber":109,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":110,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":111,"author":{"gitId":"ibnu2651"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":112,"author":{"gitId":"ibnu2651"},"content":" public void equals() {","lastModifiedDate":"2024-03-16"},{"lineNumber":113,"author":{"gitId":"ibnu2651"},"content":" final PolicyCommand standardCommand \u003d new PolicyCommand(INDEX_FIRST_PERSON, new Policy(VALID_POLICY_AMY));","lastModifiedDate":"2024-03-16"},{"lineNumber":114,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":115,"author":{"gitId":"ibnu2651"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":116,"author":{"gitId":"ibnu2651"},"content":" PolicyCommand commandWithSameValues \u003d new PolicyCommand(INDEX_FIRST_PERSON, new Policy(VALID_POLICY_AMY));","lastModifiedDate":"2024-03-16"},{"lineNumber":117,"author":{"gitId":"ibnu2651"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-03-16"},{"lineNumber":118,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":119,"author":{"gitId":"ibnu2651"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":120,"author":{"gitId":"ibnu2651"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-03-16"},{"lineNumber":121,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":122,"author":{"gitId":"ibnu2651"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":123,"author":{"gitId":"ibnu2651"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":124,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":125,"author":{"gitId":"ibnu2651"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":126,"author":{"gitId":"ibnu2651"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2024-03-16"},{"lineNumber":127,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":128,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":129,"author":{"gitId":"ibnu2651"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"ibnu2651":129}},{"path":"src/test/java/seedu/address/logic/commands/RedoCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"justincred"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"justincred"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"justincred"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"justincred"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"justincred"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"justincred"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"justincred"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"justincred"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"justincred"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"justincred"},"content":"public class RedoCommandTest {","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"justincred"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"justincred"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"justincred"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"justincred"},"content":" public void execute_redoAfterSuccessfulUndo_success() {","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"justincred"},"content":" RedoCommand command \u003d new RedoCommand();","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"justincred"},"content":" String expectedMessage \u003d command.MESSAGE_SUCCESS;","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"justincred"},"content":" model.addPerson(AMY);","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"justincred"},"content":" model.commitAddressBook();","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"justincred"},"content":" model.undoAddressBook();","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"justincred"},"content":" expectedModel.addPerson(AMY);","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"justincred"},"content":" expectedModel.commitAddressBook();","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"justincred"},"content":" expectedModel.undoAddressBook();","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"justincred"},"content":" expectedModel.redoAddressBook();","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"justincred"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"justincred"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"justincred"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"justincred"},"content":" public void execute_redoWithoutPreviousUndo_failure() {","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"justincred"},"content":" RedoCommand command \u003d new RedoCommand();","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"justincred"},"content":" String expectedMessage \u003d command.MESSAGE_FAILURE;","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"justincred"},"content":" assertCommandFailure(command, model, expectedMessage);","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"justincred"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"justincred"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"justincred":39}},{"path":"src/test/java/seedu/address/logic/commands/UndoCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"justincred"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"justincred"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"justincred"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"justincred"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"justincred"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"justincred"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"justincred"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"justincred"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"justincred"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"justincred"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"justincred"},"content":"public class UndoCommandTest {","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"justincred"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"justincred"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"justincred"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"justincred"},"content":" public void execute_undoAfterAddingPersons_success() {","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"justincred"},"content":" UndoCommand command \u003d new UndoCommand();","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"justincred"},"content":" String expectedMessage \u003d command.MESSAGE_SUCCESS;","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"justincred"},"content":" model.addPerson(AMY);","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"justincred"},"content":" model.commitAddressBook();","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"justincred"},"content":" expectedModel.addPerson(AMY);","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"justincred"},"content":" expectedModel.commitAddressBook();","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"justincred"},"content":" expectedModel.undoAddressBook();","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"justincred"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"justincred"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"justincred"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"justincred"},"content":" public void execute_undoWithoutCommandsToUndo_failure() {","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"justincred"},"content":" UndoCommand command \u003d new UndoCommand();","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"justincred"},"content":" String expectedMessage \u003d command.MESSAGE_FAILURE;","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"justincred"},"content":" assertCommandFailure(command, model, expectedMessage);","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"justincred"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"justincred"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"justincred"},"content":" public void execute_undoAfterExecutingCommandsThatDoNotAffectAddressBook_failure() {","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"justincred"},"content":" UndoCommand command \u003d new UndoCommand();","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"justincred"},"content":" String expectedMessage \u003d command.MESSAGE_FAILURE;","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"justincred"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"justincred"},"content":" assertCommandFailure(command, model, expectedMessage);","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"justincred"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"justincred"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"justincred":45}},{"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":"kaiyi27"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_RELATIONSHIP_DESC;","lastModifiedDate":"2024-03-10"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_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":"kaiyi27"},"content":"import static seedu.address.logic.commands.CommandTestUtil.RELATIONSHIP_DESC_AMY;","lastModifiedDate":"2024-03-10"},{"lineNumber":21,"author":{"gitId":"kaiyi27"},"content":"import static seedu.address.logic.commands.CommandTestUtil.RELATIONSHIP_DESC_BOB;","lastModifiedDate":"2024-03-10"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"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_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":28,"author":{"gitId":"kaiyi27"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_RELATIONSHIP_BOB;","lastModifiedDate":"2024-03-10"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":35,"author":{"gitId":"kaiyi27"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_RELATIONSHIP;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-06-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15"},{"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":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-06-15"},{"lineNumber":50,"author":{"gitId":"kaiyi27"},"content":"import seedu.address.model.person.Relationship;","lastModifiedDate":"2024-03-10"},{"lineNumber":51,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2018-07-25"},{"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":"-"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":63,"author":{"gitId":"kaiyi27"},"content":" + ADDRESS_DESC_BOB + RELATIONSHIP_DESC_BOB + TAG_DESC_FRIEND, new AddCommand(expectedPerson));","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND)","lastModifiedDate":"2018-07-25"},{"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":"kaiyi27"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB + RELATIONSHIP_DESC_BOB","lastModifiedDate":"2024-03-10"},{"lineNumber":71,"author":{"gitId":"kaiyi27"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, new AddCommand(expectedPersonMultipleTags));","lastModifiedDate":"2024-03-10"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":76,"author":{"gitId":"-"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-07-14"},{"lineNumber":77,"author":{"gitId":"kaiyi27"},"content":" + ADDRESS_DESC_BOB + RELATIONSHIP_DESC_BOB + TAG_DESC_FRIEND;","lastModifiedDate":"2024-03-10"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":79,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":81,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":83,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":95,"author":{"gitId":"kaiyi27"},"content":" // multiple relationship","lastModifiedDate":"2024-03-10"},{"lineNumber":96,"author":{"gitId":"kaiyi27"},"content":" assertParseFailure(parser, RELATIONSHIP_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-10"},{"lineNumber":97,"author":{"gitId":"kaiyi27"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_RELATIONSHIP));","lastModifiedDate":"2024-03-10"},{"lineNumber":98,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":99,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2023-07-14"},{"lineNumber":102,"author":{"gitId":"kaiyi27"},"content":" + RELATIONSHIP_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-10"},{"lineNumber":103,"author":{"gitId":"kaiyi27"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_ADDRESS, PREFIX_EMAIL, PREFIX_PHONE,","lastModifiedDate":"2024-03-10"},{"lineNumber":104,"author":{"gitId":"kaiyi27"},"content":" PREFIX_RELATIONSHIP));","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":110,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":112,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":124,"author":{"gitId":"kaiyi27"},"content":" // invalid relationship","lastModifiedDate":"2024-03-10"},{"lineNumber":125,"author":{"gitId":"kaiyi27"},"content":" assertParseFailure(parser, INVALID_RELATIONSHIP_DESC + validExpectedPersonString,","lastModifiedDate":"2024-03-10"},{"lineNumber":126,"author":{"gitId":"kaiyi27"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_RELATIONSHIP));","lastModifiedDate":"2024-03-10"},{"lineNumber":127,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":132,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":138,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":140,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":142,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":144,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":145,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":146,"author":{"gitId":"kaiyi27"},"content":" // invalid relationship","lastModifiedDate":"2024-03-10"},{"lineNumber":147,"author":{"gitId":"kaiyi27"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_RELATIONSHIP_DESC,","lastModifiedDate":"2024-03-10"},{"lineNumber":148,"author":{"gitId":"kaiyi27"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_RELATIONSHIP));","lastModifiedDate":"2024-03-10"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":151,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":152,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":153,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15"},{"lineNumber":154,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2018-07-25"},{"lineNumber":155,"author":{"gitId":"kaiyi27"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2024-03-10"},{"lineNumber":156,"author":{"gitId":"kaiyi27"},"content":" + RELATIONSHIP_DESC_AMY, new AddCommand(expectedPerson));","lastModifiedDate":"2024-03-10"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":159,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":160,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":161,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":163,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":164,"author":{"gitId":"kaiyi27"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-10"},{"lineNumber":165,"author":{"gitId":"kaiyi27"},"content":" + RELATIONSHIP_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-03-10"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":167,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":168,"author":{"gitId":"kaiyi27"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-10"},{"lineNumber":169,"author":{"gitId":"kaiyi27"},"content":" + RELATIONSHIP_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-03-10"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":171,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":172,"author":{"gitId":"kaiyi27"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-10"},{"lineNumber":173,"author":{"gitId":"kaiyi27"},"content":" + RELATIONSHIP_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-03-10"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":175,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":176,"author":{"gitId":"kaiyi27"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB","lastModifiedDate":"2024-03-10"},{"lineNumber":177,"author":{"gitId":"kaiyi27"},"content":" + RELATIONSHIP_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-03-10"},{"lineNumber":178,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":179,"author":{"gitId":"kaiyi27"},"content":" // missing relationship prefix","lastModifiedDate":"2024-03-10"},{"lineNumber":180,"author":{"gitId":"kaiyi27"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-10"},{"lineNumber":181,"author":{"gitId":"kaiyi27"},"content":" + VALID_RELATIONSHIP_BOB, expectedMessage);","lastModifiedDate":"2024-03-10"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":183,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15"},{"lineNumber":184,"author":{"gitId":"kaiyi27"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_ADDRESS_BOB","lastModifiedDate":"2024-03-10"},{"lineNumber":185,"author":{"gitId":"kaiyi27"},"content":" + VALID_RELATIONSHIP_BOB, expectedMessage);","lastModifiedDate":"2024-03-10"},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":188,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":189,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":190,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":191,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":192,"author":{"gitId":"kaiyi27"},"content":" + RELATIONSHIP_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-10"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":194,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15"},{"lineNumber":195,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":196,"author":{"gitId":"kaiyi27"},"content":" + RELATIONSHIP_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-10"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":198,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15"},{"lineNumber":199,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":200,"author":{"gitId":"kaiyi27"},"content":" + RELATIONSHIP_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-10"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":202,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15"},{"lineNumber":203,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2017-12-23"},{"lineNumber":204,"author":{"gitId":"kaiyi27"},"content":" + RELATIONSHIP_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-10"},{"lineNumber":205,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":206,"author":{"gitId":"kaiyi27"},"content":" //invalid relationship","lastModifiedDate":"2024-03-10"},{"lineNumber":207,"author":{"gitId":"kaiyi27"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-10"},{"lineNumber":208,"author":{"gitId":"kaiyi27"},"content":" + INVALID_RELATIONSHIP_DESC + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Relationship.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-10"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":210,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15"},{"lineNumber":211,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":212,"author":{"gitId":"kaiyi27"},"content":" + RELATIONSHIP_DESC_BOB + INVALID_TAG_DESC + VALID_TAG_FRIEND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-10"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":214,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":215,"author":{"gitId":"kaiyi27"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2024-03-10"},{"lineNumber":216,"author":{"gitId":"kaiyi27"},"content":" + RELATIONSHIP_DESC_BOB, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-10"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":220,"author":{"gitId":"kaiyi27"},"content":" + ADDRESS_DESC_BOB + RELATIONSHIP_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2024-03-10"},{"lineNumber":221,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":223,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"kaiyi27":53,"-":170}},{"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":"ibnu2651"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_POLICY;","lastModifiedDate":"2024-03-16"},{"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.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-06-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"ibnu2651"},"content":"import seedu.address.logic.commands.PolicyCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24"},{"lineNumber":28,"author":{"gitId":"ibnu2651"},"content":"import seedu.address.model.person.CombinedPredicate;","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27"},{"lineNumber":31,"author":{"gitId":"ibnu2651"},"content":"import seedu.address.model.person.Policy;","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"ibnu2651"},"content":"import seedu.address.model.person.RelationshipContainsKeywordsPredicate;","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"ibnu2651"},"content":"import seedu.address.model.person.TagContainsKeywordsPredicate;","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","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_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2017-06-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command);","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":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2018-03-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), 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_exit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","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":"2017-06-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":79,"author":{"gitId":"ibnu2651"},"content":" List\u003cString\u003e nameKeywords \u003d Arrays.asList(\"foo\");","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"ibnu2651"},"content":" List\u003cString\u003e relationshipKeywords \u003d Arrays.asList(\"bar\");","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"ibnu2651"},"content":" List\u003cString\u003e tagKeywords \u003d Arrays.asList(\"baz\");","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"ibnu2651"},"content":" List\u003cString\u003e formattedKeywords \u003d Arrays.asList(\"n/foo\", \"r/bar\", \"t/baz\");","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":84,"author":{"gitId":"ibnu2651"},"content":" FindCommand.COMMAND_WORD + \" \" + formattedKeywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"ibnu2651"},"content":" CombinedPredicate combinedPredicate \u003d new CombinedPredicate(","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"ibnu2651"},"content":" new NameContainsKeywordsPredicate(nameKeywords),","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"ibnu2651"},"content":" new RelationshipContainsKeywordsPredicate(relationshipKeywords),","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"ibnu2651"},"content":" new TagContainsKeywordsPredicate(tagKeywords));","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"ibnu2651"},"content":" assertEquals(new FindCommand(combinedPredicate), command);","lastModifiedDate":"2024-03-20"},{"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_help() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"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_list() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","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":"ibnu2651"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":105,"author":{"gitId":"ibnu2651"},"content":" public void parseCommand_policy() throws Exception {","lastModifiedDate":"2024-03-16"},{"lineNumber":106,"author":{"gitId":"ibnu2651"},"content":" final Policy policy \u003d new Policy(\"Some policy\");","lastModifiedDate":"2024-03-16"},{"lineNumber":107,"author":{"gitId":"ibnu2651"},"content":" PolicyCommand command \u003d (PolicyCommand) parser.parseCommand(PolicyCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2024-03-16"},{"lineNumber":108,"author":{"gitId":"ibnu2651"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PREFIX_POLICY + policy.value);","lastModifiedDate":"2024-03-16"},{"lineNumber":109,"author":{"gitId":"ibnu2651"},"content":" assertEquals(new PolicyCommand(INDEX_FIRST_PERSON, policy), command);","lastModifiedDate":"2024-03-16"},{"lineNumber":110,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":111,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":122,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"ibnu2651":24,"-":98}},{"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":"kaiyi27"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_RELATIONSHIP_DESC;","lastModifiedDate":"2024-03-10"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","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":"kaiyi27"},"content":"import static seedu.address.logic.commands.CommandTestUtil.RELATIONSHIP_DESC_AMY;","lastModifiedDate":"2024-03-10"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","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":"kaiyi27"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_RELATIONSHIP_AMY;","lastModifiedDate":"2024-03-10"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":28,"author":{"gitId":"kaiyi27"},"content":"import static seedu.address.logic.commands.EditCommand.MESSAGE_CANNOT_BE_EDIT;","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"kaiyi27"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_RELATIONSHIP;","lastModifiedDate":"2024-03-10"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-04"},{"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":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-04"},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-04"},{"lineNumber":49,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":55,"author":{"gitId":"-"},"content":" private static final String TAG_EMPTY \u003d \" \" + PREFIX_TAG;","lastModifiedDate":"2017-05-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04"},{"lineNumber":58,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":60,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":64,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-07-06"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":70,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":79,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":82,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":85,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":87,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"kaiyi27"},"content":" assertParseFailure(parser, \"1 r/partner\", MESSAGE_CANNOT_BE_EDIT);","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2018-09-22"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2018-09-22"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2018-09-22"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_ADDRESS_DESC, Address.MESSAGE_CONSTRAINTS); // invalid address","lastModifiedDate":"2018-09-22"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2018-09-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":99,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":102,"author":{"gitId":"-"},"content":" // while parsing {@code PREFIX_TAG} alone will reset the tags of the {@code Person} being edited,","lastModifiedDate":"2017-05-04"},{"lineNumber":103,"author":{"gitId":"-"},"content":" // parsing it together with a valid tag results in error","lastModifiedDate":"2017-05-04"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_DESC_HUSBAND + TAG_EMPTY, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_EMPTY + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_EMPTY + TAG_DESC_FRIEND + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":108,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04"},{"lineNumber":109,"author":{"gitId":"kaiyi27"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_ADDRESS_AMY + VALID_PHONE_AMY","lastModifiedDate":"2024-03-10"},{"lineNumber":110,"author":{"gitId":"kaiyi27"},"content":" + VALID_RELATIONSHIP_AMY, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-10"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":115,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":116,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2017-06-06"},{"lineNumber":117,"author":{"gitId":"-"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + NAME_DESC_AMY + TAG_DESC_FRIEND;","lastModifiedDate":"2017-06-06"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":119,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-05-04"},{"lineNumber":120,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-05-04"},{"lineNumber":121,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":122,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":128,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":129,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":130,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":132,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-04"},{"lineNumber":133,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":134,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"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":"2017-05-04"},{"lineNumber":140,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":141,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04"},{"lineNumber":142,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":143,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":144,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":145,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":148,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2017-05-04"},{"lineNumber":149,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":150,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":151,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":154,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04"},{"lineNumber":155,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":156,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":157,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":160,"author":{"gitId":"-"},"content":" // address","lastModifiedDate":"2017-05-04"},{"lineNumber":161,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + ADDRESS_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":162,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":163,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":166,"author":{"gitId":"-"},"content":" // tags","lastModifiedDate":"2017-05-04"},{"lineNumber":167,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + TAG_DESC_FRIEND;","lastModifiedDate":"2017-05-25"},{"lineNumber":168,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":169,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":170,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":173,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":174,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":175,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14"},{"lineNumber":176,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-07-14"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":178,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14"},{"lineNumber":179,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":180,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2023-07-14"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":182,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":184,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14"},{"lineNumber":185,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2023-07-14"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":187,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":189,"author":{"gitId":"kaiyi27"},"content":" // multiple valid fields repeated","lastModifiedDate":"2024-03-21"},{"lineNumber":190,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2023-07-14"},{"lineNumber":191,"author":{"gitId":"kaiyi27"},"content":" + RELATIONSHIP_DESC_AMY + TAG_DESC_FRIEND + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2024-03-10"},{"lineNumber":192,"author":{"gitId":"kaiyi27"},"content":" + RELATIONSHIP_DESC_AMY + TAG_DESC_FRIEND + PHONE_DESC_BOB + ADDRESS_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-10"},{"lineNumber":193,"author":{"gitId":"kaiyi27"},"content":" + RELATIONSHIP_DESC_AMY + TAG_DESC_HUSBAND;","lastModifiedDate":"2024-03-10"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":195,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":196,"author":{"gitId":"kaiyi27"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-03-10"},{"lineNumber":197,"author":{"gitId":"kaiyi27"},"content":" PREFIX_RELATIONSHIP));","lastModifiedDate":"2024-03-10"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":199,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14"},{"lineNumber":200,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2023-07-14"},{"lineNumber":201,"author":{"gitId":"kaiyi27"},"content":" + INVALID_RELATIONSHIP_DESC + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2024-03-10"},{"lineNumber":202,"author":{"gitId":"kaiyi27"},"content":" + INVALID_RELATIONSHIP_DESC;","lastModifiedDate":"2024-03-10"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":204,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":205,"author":{"gitId":"kaiyi27"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-03-10"},{"lineNumber":206,"author":{"gitId":"kaiyi27"},"content":" PREFIX_RELATIONSHIP));","lastModifiedDate":"2024-03-10"},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":209,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":210,"author":{"gitId":"-"},"content":" public void parse_resetTags_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":211,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":212,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_EMPTY;","lastModifiedDate":"2017-05-25"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":214,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withTags().build();","lastModifiedDate":"2017-05-04"},{"lineNumber":215,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":217,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":218,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":219,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04"}],"authorContributionMap":{"kaiyi27":19,"-":200}},{"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":"ibnu2651"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"Shauryan123"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-20"},{"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":"Shauryan123"},"content":"import java.util.List;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"Shauryan123"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":14,"author":{"gitId":"Shauryan123"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"Shauryan123"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"Shauryan123"},"content":"import seedu.address.model.person.RelationshipContainsKeywordsPredicate;","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"Shauryan123"},"content":"import seedu.address.model.person.TagContainsKeywordsPredicate;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"Shauryan123"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class FindCommandParserTest {","lastModifiedDate":"2017-06-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private FindCommandParser parser \u003d new FindCommandParser();","lastModifiedDate":"2017-06-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2017-06-27"},{"lineNumber":27,"author":{"gitId":"ibnu2651"},"content":" assertThrows(ParseException.class,","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"ibnu2651"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"ibnu2651"},"content":" -\u003e parser.parse(\" \"));","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"Shauryan123"},"content":" public void parse_validNameKeywords_returnsFindCommand() throws ParseException {","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"Shauryan123"},"content":" Predicate\u003cPerson\u003e combinedPredicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"Shauryan123"},"content":" FindCommand command \u003d parser.parse(\" n/Alice n/Bob\");","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"Shauryan123"},"content":" // Create a list of test persons","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"Shauryan123"},"content":" List\u003cPerson\u003e testPersons \u003d Arrays.asList(","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"Shauryan123"},"content":" new PersonBuilder().withName(\"Alice\").build(),","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"Shauryan123"},"content":" new PersonBuilder().withName(\"Bob\").build(),","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"Shauryan123"},"content":" new PersonBuilder().withName(\"Charlie\").build()","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"Shauryan123"},"content":" );","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"Shauryan123"},"content":" // Check if the command\u0027s predicate matches the expected predicate for each test person","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"Shauryan123"},"content":" for (Person person : testPersons) {","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"Shauryan123"},"content":" assertEquals(combinedPredicate.test(person), command.getPredicate().test(person),","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"Shauryan123"},"content":" \"Predicate mismatch for person: \" + person);","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"Shauryan123"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"Shauryan123"},"content":" public void parse_validRelationshipKeywords_returnsFindCommand() throws ParseException {","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"ibnu2651"},"content":" Predicate\u003cPerson\u003e combinedPredicate \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"ibnu2651"},"content":" new RelationshipContainsKeywordsPredicate(Arrays.asList(\"client\", \"partner\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"Shauryan123"},"content":" FindCommand command \u003d parser.parse(\" r/client r/partner\");","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"Shauryan123"},"content":" List\u003cPerson\u003e testPersons \u003d Arrays.asList(","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"Shauryan123"},"content":" new PersonBuilder().withRelationship(\"client\").build(),","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"Shauryan123"},"content":" new PersonBuilder().withRelationship(\"partner\").build()","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"Shauryan123"},"content":" );","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"Shauryan123"},"content":" for (Person person : testPersons) {","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"Shauryan123"},"content":" assertEquals(combinedPredicate.test(person), command.getPredicate().test(person),","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"Shauryan123"},"content":" \"Predicate mismatch for person: \" + person);","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"Shauryan123"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"Shauryan123"},"content":" public void parse_validTagKeywords_returnsFindCommand() throws ParseException {","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"ibnu2651"},"content":" Predicate\u003cPerson\u003e combinedPredicate \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"ibnu2651"},"content":" new TagContainsKeywordsPredicate(Arrays.asList(\"friends\", \"colleagues\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"Shauryan123"},"content":" FindCommand command \u003d parser.parse(\" t/friends t/colleagues\");","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"Shauryan123"},"content":" List\u003cPerson\u003e testPersons \u003d Arrays.asList(","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"Shauryan123"},"content":" new PersonBuilder().withTags(\"friends\").build(),","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"Shauryan123"},"content":" new PersonBuilder().withTags(\"colleagues\").build(),","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"Shauryan123"},"content":" new PersonBuilder().withTags(\"family\").build()","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"Shauryan123"},"content":" );","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"Shauryan123"},"content":" for (Person person : testPersons) {","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"Shauryan123"},"content":" assertEquals(combinedPredicate.test(person), command.getPredicate().test(person),","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"Shauryan123"},"content":" \"Predicate mismatch for person: \" + person);","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"Shauryan123"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"Shauryan123"},"content":" public void parse_combinedKeywords_returnsFindCommand() throws ParseException {","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"Shauryan123"},"content":" Predicate\u003cPerson\u003e combinedPredicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\"))","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"Shauryan123"},"content":" .or(new RelationshipContainsKeywordsPredicate(Arrays.asList(\"client\", \"partner\")))","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"Shauryan123"},"content":" .or(new TagContainsKeywordsPredicate(Arrays.asList(\"friends\", \"colleagues\")));","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"Shauryan123"},"content":" FindCommand command \u003d parser.parse(\" n/Alice n/Bob r/client r/partner t/friends t/colleagues\");","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"Shauryan123"},"content":" List\u003cPerson\u003e testPersons \u003d Arrays.asList(","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"Shauryan123"},"content":" new PersonBuilder().withName(\"Alice\").withRelationship(\"client\").withTags(\"friends\").build(),","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"Shauryan123"},"content":" new PersonBuilder().withName(\"Bob\").withRelationship(\"partner\").withTags(\"colleagues\").build(),","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"Shauryan123"},"content":" new PersonBuilder().withName(\"Charlie\").withRelationship(\"client\").withTags(\"friends\").build()","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"Shauryan123"},"content":" );","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":99,"author":{"gitId":"Shauryan123"},"content":" for (Person person : testPersons) {","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"Shauryan123"},"content":" assertEquals(combinedPredicate.test(person), command.getPredicate().test(person),","lastModifiedDate":"2024-03-20"},{"lineNumber":101,"author":{"gitId":"Shauryan123"},"content":" \"Predicate mismatch for person: \" + person);","lastModifiedDate":"2024-03-20"},{"lineNumber":102,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-20"},{"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":"Shauryan123"},"content":" public void parse_multipleWhitespaces_returnsFindCommand() throws ParseException {","lastModifiedDate":"2024-03-20"},{"lineNumber":107,"author":{"gitId":"Shauryan123"},"content":" Predicate\u003cPerson\u003e combinedPredicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\"))","lastModifiedDate":"2024-03-20"},{"lineNumber":108,"author":{"gitId":"Shauryan123"},"content":" .or(new RelationshipContainsKeywordsPredicate(Arrays.asList(\"client\", \"partner\")))","lastModifiedDate":"2024-03-20"},{"lineNumber":109,"author":{"gitId":"Shauryan123"},"content":" .or(new TagContainsKeywordsPredicate(Arrays.asList(\"friends\", \"colleagues\")));","lastModifiedDate":"2024-03-20"},{"lineNumber":110,"author":{"gitId":"ibnu2651"},"content":" FindCommand command \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":111,"author":{"gitId":"ibnu2651"},"content":" parser.parse(\" \\n n/Alice \\n \\t n/Bob \\t r/client \\n r/partner \\t t/friends \\n t/colleagues\");","lastModifiedDate":"2024-03-20"},{"lineNumber":112,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":113,"author":{"gitId":"Shauryan123"},"content":" List\u003cPerson\u003e testPersons \u003d Arrays.asList(","lastModifiedDate":"2024-03-20"},{"lineNumber":114,"author":{"gitId":"Shauryan123"},"content":" new PersonBuilder().withName(\"Alice\").withRelationship(\"client\").withTags(\"friends\").build(),","lastModifiedDate":"2024-03-20"},{"lineNumber":115,"author":{"gitId":"Shauryan123"},"content":" new PersonBuilder().withName(\"Bob\").withRelationship(\"partner\").withTags(\"colleagues\").build(),","lastModifiedDate":"2024-03-20"},{"lineNumber":116,"author":{"gitId":"Shauryan123"},"content":" new PersonBuilder().withName(\"Charlie\").withRelationship(\"client\").withTags(\"friends\").build()","lastModifiedDate":"2024-03-20"},{"lineNumber":117,"author":{"gitId":"Shauryan123"},"content":" );","lastModifiedDate":"2024-03-20"},{"lineNumber":118,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":119,"author":{"gitId":"Shauryan123"},"content":" for (Person person : testPersons) {","lastModifiedDate":"2024-03-20"},{"lineNumber":120,"author":{"gitId":"Shauryan123"},"content":" assertEquals(combinedPredicate.test(person), command.getPredicate().test(person),","lastModifiedDate":"2024-03-20"},{"lineNumber":121,"author":{"gitId":"Shauryan123"},"content":" \"Predicate mismatch for person: \" + person);","lastModifiedDate":"2024-03-20"},{"lineNumber":122,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":124,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-27"}],"authorContributionMap":{"Shauryan123":87,"ibnu2651":10,"-":27}},{"path":"src/test/java/seedu/address/logic/parser/PolicyCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ibnu2651"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"ibnu2651"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"ibnu2651"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_POLICY;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"ibnu2651"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"ibnu2651"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"ibnu2651"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"ibnu2651"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"ibnu2651"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"ibnu2651"},"content":"import seedu.address.logic.commands.PolicyCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"ibnu2651"},"content":"import seedu.address.model.person.Policy;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"ibnu2651"},"content":"public class PolicyCommandParserTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"ibnu2651"},"content":" private PolicyCommandParser parser \u003d new PolicyCommandParser();","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"ibnu2651"},"content":" private final String nonEmptyPolicy \u003d \"Some policy.\";","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"ibnu2651"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"ibnu2651"},"content":" public void parse_indexSpecified_success() {","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"ibnu2651"},"content":" // have policy","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"ibnu2651"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"ibnu2651"},"content":" String userInput \u003d targetIndex.getOneBased() + \" \" + PREFIX_POLICY + nonEmptyPolicy;","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"ibnu2651"},"content":" PolicyCommand expectedCommand \u003d new PolicyCommand(INDEX_FIRST_PERSON, new Policy(nonEmptyPolicy));","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"ibnu2651"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"ibnu2651"},"content":" // no policy","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"ibnu2651"},"content":" userInput \u003d targetIndex.getOneBased() + \" \" + PREFIX_POLICY;","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"ibnu2651"},"content":" expectedCommand \u003d new PolicyCommand(INDEX_FIRST_PERSON, new Policy(\"\"));","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"ibnu2651"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"ibnu2651"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"ibnu2651"},"content":" public void parse_missingCompulsoryField_failure() {","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"ibnu2651"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, PolicyCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"ibnu2651"},"content":" // no parameters","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"ibnu2651"},"content":" assertParseFailure(parser, PolicyCommand.COMMAND_WORD, expectedMessage);","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"ibnu2651"},"content":" // no index","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"ibnu2651"},"content":" assertParseFailure(parser, PolicyCommand.COMMAND_WORD + \" \" + nonEmptyPolicy, expectedMessage);","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"ibnu2651"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"ibnu2651":43}},{"path":"src/test/java/seedu/address/model/person/CombinedPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ibnu2651"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"ibnu2651"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"ibnu2651"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"ibnu2651"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"ibnu2651"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"ibnu2651"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"ibnu2651"},"content":"import java.util.List;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"ibnu2651"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"ibnu2651"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"ibnu2651"},"content":"public class CombinedPredicateTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"ibnu2651"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"ibnu2651"},"content":" public void equals() {","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"ibnu2651"},"content":" List\u003cString\u003e firstPredicateKeywordList \u003d Collections.singletonList(\"friend\");","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"ibnu2651"},"content":" List\u003cString\u003e secondPredicateKeywordList \u003d Arrays.asList(\"friend\", \"colleague\");","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"ibnu2651"},"content":" CombinedPredicate firstPredicate \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"ibnu2651"},"content":" new CombinedPredicate(new TagContainsKeywordsPredicate(firstPredicateKeywordList));","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"ibnu2651"},"content":" CombinedPredicate secondPredicate \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"ibnu2651"},"content":" new CombinedPredicate(new TagContainsKeywordsPredicate(secondPredicateKeywordList));","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"ibnu2651"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"ibnu2651"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"ibnu2651"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"ibnu2651"},"content":" CombinedPredicate firstPredicateCopy \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"ibnu2651"},"content":" new CombinedPredicate(new TagContainsKeywordsPredicate(firstPredicateKeywordList));","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"ibnu2651"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"ibnu2651"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"ibnu2651"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"ibnu2651"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"ibnu2651"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"ibnu2651"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"ibnu2651"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"ibnu2651"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"ibnu2651"},"content":" public void test_combinedPredicateContainsKeywords_returnsTrue() {","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"ibnu2651"},"content":" // One keyword","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"ibnu2651"},"content":" NameContainsKeywordsPredicate namePredicate \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"ibnu2651"},"content":" new NameContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"ibnu2651"},"content":" RelationshipContainsKeywordsPredicate relationshipPredicate \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"ibnu2651"},"content":" new RelationshipContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"ibnu2651"},"content":" TagContainsKeywordsPredicate tagPredicate \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"ibnu2651"},"content":" new TagContainsKeywordsPredicate(Collections.singletonList(\"friend\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"ibnu2651"},"content":" CombinedPredicate combinedPredicate \u003d new CombinedPredicate(namePredicate, relationshipPredicate, tagPredicate);","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"ibnu2651"},"content":" assertTrue(combinedPredicate.test(new PersonBuilder().withTags(\"friend\").build()));","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"ibnu2651"},"content":" // Multiple keywords","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"ibnu2651"},"content":" namePredicate \u003d new NameContainsKeywordsPredicate(Collections.singletonList(\"Bob\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"ibnu2651"},"content":" relationshipPredicate \u003d new RelationshipContainsKeywordsPredicate(Collections.singletonList(\"client\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"ibnu2651"},"content":" tagPredicate \u003d new TagContainsKeywordsPredicate(Arrays.asList(\"friend\", \"colleague\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"ibnu2651"},"content":" combinedPredicate \u003d new CombinedPredicate(namePredicate, relationshipPredicate, tagPredicate);","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"ibnu2651"},"content":" assertTrue(combinedPredicate.test(new PersonBuilder().withName(\"Bob\").build()));","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"ibnu2651"},"content":" assertTrue(combinedPredicate.test(new PersonBuilder().withRelationship(\"client\").build()));","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"ibnu2651"},"content":" assertTrue(combinedPredicate.test(new PersonBuilder().withTags(\"friend\").build()));","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"ibnu2651"},"content":" assertTrue(combinedPredicate.test(new PersonBuilder().withTags(\"colleague\").build()));","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"ibnu2651"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"ibnu2651"},"content":" public void test_combinedPredicateDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"ibnu2651"},"content":" // Zero keywords","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"ibnu2651"},"content":" TagContainsKeywordsPredicate tagPredicate \u003d new TagContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"ibnu2651"},"content":" CombinedPredicate combinedPredicate \u003d new CombinedPredicate(tagPredicate);","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"ibnu2651"},"content":" assertFalse(combinedPredicate.test(new PersonBuilder().withTags(\"friend\").build()));","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"ibnu2651"},"content":" // Non-matching keyword","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"ibnu2651"},"content":" tagPredicate \u003d new TagContainsKeywordsPredicate(Arrays.asList(\"associate\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"ibnu2651"},"content":" combinedPredicate \u003d new CombinedPredicate(tagPredicate);","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"ibnu2651"},"content":" assertFalse(combinedPredicate.test(new PersonBuilder().withTags(\"friend\").build()));","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"ibnu2651"},"content":" assertFalse(combinedPredicate.test(new PersonBuilder().withTags(\"colleague\").build()));","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"ibnu2651"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"ibnu2651"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"ibnu2651"},"content":" List\u003cString\u003e keywords \u003d List.of(\"friend\", \"colleague\");","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"ibnu2651"},"content":" TagContainsKeywordsPredicate predicate \u003d new TagContainsKeywordsPredicate(keywords);","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"ibnu2651"},"content":" CombinedPredicate combinedPredicate \u003d new CombinedPredicate(predicate);","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"ibnu2651"},"content":" String expected \u003d CombinedPredicate.class.getCanonicalName()","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"ibnu2651"},"content":" + \"{predicateList\u003d\"","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"ibnu2651"},"content":" + TagContainsKeywordsPredicate.class.getCanonicalName() + \"{keywords\u003d\" + keywords + \"}\"","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"ibnu2651"},"content":" + \"}\";","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"ibnu2651"},"content":" assertEquals(expected, combinedPredicate.toString());","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"ibnu2651"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"ibnu2651":94}},{"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":"-"},"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":"-"},"content":" .withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2020-12-18"},{"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":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2018-04-18"},{"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":"-"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2019-02-23"},{"lineNumber":96,"author":{"gitId":"kaiyi27"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", address\u003d\" + ALICE.getAddress()","lastModifiedDate":"2024-03-10"},{"lineNumber":97,"author":{"gitId":"ibnu2651"},"content":" + \", relationship\u003d\" + ALICE.getRelationship() + \", policy\u003d\" + ALICE.getPolicy()","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"ibnu2651"},"content":" + \", tags\u003d\" + ALICE.getTags() + \"}\";","lastModifiedDate":"2024-03-16"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"kaiyi27":1,"ibnu2651":2,"-":98}},{"path":"src/test/java/seedu/address/model/person/PolicyTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ibnu2651"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"ibnu2651"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"ibnu2651"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"ibnu2651"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"ibnu2651"},"content":"public class PolicyTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"ibnu2651"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"ibnu2651"},"content":" public void equals() {","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"ibnu2651"},"content":" Policy policy \u003d new Policy(\"Hello\");","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"ibnu2651"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"ibnu2651"},"content":" assertTrue(policy.equals(policy));","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"ibnu2651"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"ibnu2651"},"content":" Policy policyCopy \u003d new Policy(policy.value);","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"ibnu2651"},"content":" assertTrue(policy.equals(policyCopy));","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"ibnu2651"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"ibnu2651"},"content":" assertFalse(policy.equals(1));","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"ibnu2651"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"ibnu2651"},"content":" assertFalse(policy.equals(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"ibnu2651"},"content":" // different policy -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"ibnu2651"},"content":" Policy differentPolicy \u003d new Policy(\"Bye\");","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"ibnu2651"},"content":" assertFalse(policy.equals(differentPolicy));","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"ibnu2651"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"ibnu2651":31}},{"path":"src/test/java/seedu/address/model/person/RelationshipContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Shauryan123"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"Shauryan123"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"Shauryan123"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"Shauryan123"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"Shauryan123"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"Shauryan123"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"Shauryan123"},"content":"import java.util.List;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"Shauryan123"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"Shauryan123"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"Shauryan123"},"content":"public class RelationshipContainsKeywordsPredicateTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"Shauryan123"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"Shauryan123"},"content":" public void equals() {","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"Shauryan123"},"content":" List\u003cString\u003e firstPredicateKeywordList \u003d Collections.singletonList(\"Client\");","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"Shauryan123"},"content":" List\u003cString\u003e secondPredicateKeywordList \u003d Arrays.asList(\"Client\", \"Partner\");","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"ibnu2651"},"content":" RelationshipContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"ibnu2651"},"content":" new RelationshipContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"ibnu2651"},"content":" RelationshipContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"ibnu2651"},"content":" new RelationshipContainsKeywordsPredicate(secondPredicateKeywordList);","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"Shauryan123"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"Shauryan123"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"Shauryan123"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"ibnu2651"},"content":" RelationshipContainsKeywordsPredicate firstPredicateCopy \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"ibnu2651"},"content":" new RelationshipContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"Shauryan123"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"Shauryan123"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"Shauryan123"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"Shauryan123"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"Shauryan123"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"Shauryan123"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"Shauryan123"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"Shauryan123"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"Shauryan123"},"content":" public void test_relationshipContainsKeywords_returnsTrue() {","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"Shauryan123"},"content":" // One keyword","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"ibnu2651"},"content":" RelationshipContainsKeywordsPredicate predicate \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"ibnu2651"},"content":" new RelationshipContainsKeywordsPredicate(Collections.singletonList(\"Client\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"Shauryan123"},"content":" assertTrue(predicate.test(new PersonBuilder().withRelationship(\"Client\").build()));","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"Shauryan123"},"content":" // Multiple keywords","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"Shauryan123"},"content":" predicate \u003d new RelationshipContainsKeywordsPredicate(Arrays.asList(\"Client\", \"Partner\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"Shauryan123"},"content":" assertTrue(predicate.test(new PersonBuilder().withRelationship(\"Client\").build()));","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"Shauryan123"},"content":" assertTrue(predicate.test(new PersonBuilder().withRelationship(\"Partner\").build()));","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"Shauryan123"},"content":" // Mixed-case keywords","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"Shauryan123"},"content":" predicate \u003d new RelationshipContainsKeywordsPredicate(Arrays.asList(\"cLiEnt\", \"pArTnEr\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"Shauryan123"},"content":" assertTrue(predicate.test(new PersonBuilder().withRelationship(\"Client\").build()));","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"Shauryan123"},"content":" assertTrue(predicate.test(new PersonBuilder().withRelationship(\"Partner\").build()));","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"Shauryan123"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"Shauryan123"},"content":" public void test_relationshipDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"Shauryan123"},"content":" // Zero keywords","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"ibnu2651"},"content":" RelationshipContainsKeywordsPredicate predicate \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"ibnu2651"},"content":" new RelationshipContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"Shauryan123"},"content":" assertFalse(predicate.test(new PersonBuilder().withRelationship(\"Client\").build()));","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"Shauryan123"},"content":" // Non-matching keyword","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"Shauryan123"},"content":" predicate \u003d new RelationshipContainsKeywordsPredicate(Arrays.asList(\"Associate\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"Shauryan123"},"content":" assertFalse(predicate.test(new PersonBuilder().withRelationship(\"Client\").build()));","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"Shauryan123"},"content":" assertFalse(predicate.test(new PersonBuilder().withRelationship(\"Partner\").build()));","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"Shauryan123"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"Shauryan123"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"Shauryan123"},"content":" List\u003cString\u003e keywords \u003d List.of(\"Client\", \"Partner\");","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"Shauryan123"},"content":" RelationshipContainsKeywordsPredicate predicate \u003d new RelationshipContainsKeywordsPredicate(keywords);","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"ibnu2651"},"content":" String expected \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"ibnu2651"},"content":" RelationshipContainsKeywordsPredicate.class.getCanonicalName() + \"{keywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"Shauryan123"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"Shauryan123":75,"ibnu2651":12}},{"path":"src/test/java/seedu/address/model/person/RelationshipTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"kaiyi27"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":3,"author":{"gitId":"kaiyi27"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-10"},{"lineNumber":4,"author":{"gitId":"kaiyi27"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-10"},{"lineNumber":5,"author":{"gitId":"kaiyi27"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-10"},{"lineNumber":6,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":7,"author":{"gitId":"kaiyi27"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"kaiyi27"},"content":"public class RelationshipTest {","lastModifiedDate":"2024-03-10"},{"lineNumber":10,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":11,"author":{"gitId":"kaiyi27"},"content":" @Test","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"kaiyi27"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-10"},{"lineNumber":13,"author":{"gitId":"kaiyi27"},"content":" assertThrows(NullPointerException.class, () -\u003e new Relationship(null));","lastModifiedDate":"2024-03-10"},{"lineNumber":14,"author":{"gitId":"kaiyi27"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":15,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":16,"author":{"gitId":"kaiyi27"},"content":" @Test","lastModifiedDate":"2024-03-10"},{"lineNumber":17,"author":{"gitId":"kaiyi27"},"content":" public void constructor_invalidAddress_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-10"},{"lineNumber":18,"author":{"gitId":"kaiyi27"},"content":" String invalidRelationship \u003d \"\";","lastModifiedDate":"2024-03-10"},{"lineNumber":19,"author":{"gitId":"kaiyi27"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Address(invalidRelationship));","lastModifiedDate":"2024-03-10"},{"lineNumber":20,"author":{"gitId":"kaiyi27"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":21,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":22,"author":{"gitId":"kaiyi27"},"content":" @Test","lastModifiedDate":"2024-03-10"},{"lineNumber":23,"author":{"gitId":"kaiyi27"},"content":" public void isValidRelationship() {","lastModifiedDate":"2024-03-10"},{"lineNumber":24,"author":{"gitId":"kaiyi27"},"content":" // null address","lastModifiedDate":"2024-03-10"},{"lineNumber":25,"author":{"gitId":"kaiyi27"},"content":" assertThrows(NullPointerException.class, () -\u003e Relationship.isValidRelationship(null));","lastModifiedDate":"2024-03-10"},{"lineNumber":26,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":27,"author":{"gitId":"kaiyi27"},"content":" // invalid addresses","lastModifiedDate":"2024-03-10"},{"lineNumber":28,"author":{"gitId":"kaiyi27"},"content":" assertFalse(Relationship.isValidRelationship(\"\")); // empty string","lastModifiedDate":"2024-03-10"},{"lineNumber":29,"author":{"gitId":"kaiyi27"},"content":" assertFalse(Relationship.isValidRelationship(\" \")); // spaces only","lastModifiedDate":"2024-03-10"},{"lineNumber":30,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":31,"author":{"gitId":"kaiyi27"},"content":" // valid addresses","lastModifiedDate":"2024-03-10"},{"lineNumber":32,"author":{"gitId":"kaiyi27"},"content":" assertTrue(Relationship.isValidRelationship(\"client\"));","lastModifiedDate":"2024-03-10"},{"lineNumber":33,"author":{"gitId":"kaiyi27"},"content":" assertTrue(Relationship.isValidRelationship(\"partner\"));","lastModifiedDate":"2024-03-10"},{"lineNumber":34,"author":{"gitId":"kaiyi27"},"content":" assertTrue(Relationship.isValidRelationship(\"Client\")); // uppercase","lastModifiedDate":"2024-03-10"},{"lineNumber":35,"author":{"gitId":"kaiyi27"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":36,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":37,"author":{"gitId":"kaiyi27"},"content":" @Test","lastModifiedDate":"2024-03-10"},{"lineNumber":38,"author":{"gitId":"kaiyi27"},"content":" public void equals() {","lastModifiedDate":"2024-03-10"},{"lineNumber":39,"author":{"gitId":"kaiyi27"},"content":" Relationship relationship \u003d new Relationship(\"client\");","lastModifiedDate":"2024-03-10"},{"lineNumber":40,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":41,"author":{"gitId":"kaiyi27"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-10"},{"lineNumber":42,"author":{"gitId":"kaiyi27"},"content":" assertTrue(relationship.equals(new Relationship(\"client\")));","lastModifiedDate":"2024-03-10"},{"lineNumber":43,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":44,"author":{"gitId":"kaiyi27"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-10"},{"lineNumber":45,"author":{"gitId":"kaiyi27"},"content":" assertTrue(relationship.equals(relationship));","lastModifiedDate":"2024-03-10"},{"lineNumber":46,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":47,"author":{"gitId":"kaiyi27"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-10"},{"lineNumber":48,"author":{"gitId":"kaiyi27"},"content":" assertFalse(relationship.equals(null));","lastModifiedDate":"2024-03-10"},{"lineNumber":49,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":50,"author":{"gitId":"kaiyi27"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-10"},{"lineNumber":51,"author":{"gitId":"kaiyi27"},"content":" assertFalse(relationship.equals(5.0f));","lastModifiedDate":"2024-03-10"},{"lineNumber":52,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":53,"author":{"gitId":"kaiyi27"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-10"},{"lineNumber":54,"author":{"gitId":"kaiyi27"},"content":" assertFalse(relationship.equals(new Address(\"partner\")));","lastModifiedDate":"2024-03-10"},{"lineNumber":55,"author":{"gitId":"kaiyi27"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":56,"author":{"gitId":"kaiyi27"},"content":"}","lastModifiedDate":"2024-03-10"}],"authorContributionMap":{"kaiyi27":56}},{"path":"src/test/java/seedu/address/model/person/TagContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Shauryan123"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"Shauryan123"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"Shauryan123"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"Shauryan123"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"Shauryan123"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"Shauryan123"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"Shauryan123"},"content":"import java.util.List;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"Shauryan123"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"Shauryan123"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"Shauryan123"},"content":"public class TagContainsKeywordsPredicateTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"Shauryan123"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"Shauryan123"},"content":" public void equals() {","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"Shauryan123"},"content":" List\u003cString\u003e firstPredicateKeywordList \u003d Collections.singletonList(\"friend\");","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"Shauryan123"},"content":" List\u003cString\u003e secondPredicateKeywordList \u003d Arrays.asList(\"friend\", \"colleague\");","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"Shauryan123"},"content":" TagContainsKeywordsPredicate firstPredicate \u003d new TagContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"Shauryan123"},"content":" TagContainsKeywordsPredicate secondPredicate \u003d new TagContainsKeywordsPredicate(secondPredicateKeywordList);","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"Shauryan123"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"Shauryan123"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"Shauryan123"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"Shauryan123"},"content":" TagContainsKeywordsPredicate firstPredicateCopy \u003d new TagContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"Shauryan123"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"Shauryan123"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"Shauryan123"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"Shauryan123"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"Shauryan123"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"Shauryan123"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"Shauryan123"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"Shauryan123"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"Shauryan123"},"content":" public void test_tagContainsKeywords_returnsTrue() {","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"Shauryan123"},"content":" // One keyword","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"Shauryan123"},"content":" TagContainsKeywordsPredicate predicate \u003d new TagContainsKeywordsPredicate(Collections.singletonList(\"friend\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"Shauryan123"},"content":" assertTrue(predicate.test(new PersonBuilder().withTags(\"friend\").build()));","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"Shauryan123"},"content":" // Multiple keywords","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"Shauryan123"},"content":" predicate \u003d new TagContainsKeywordsPredicate(Arrays.asList(\"friend\", \"colleague\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"Shauryan123"},"content":" assertTrue(predicate.test(new PersonBuilder().withTags(\"friend\").build()));","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"Shauryan123"},"content":" assertTrue(predicate.test(new PersonBuilder().withTags(\"colleague\").build()));","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"Shauryan123"},"content":" // Mixed-case keywords","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"Shauryan123"},"content":" predicate \u003d new TagContainsKeywordsPredicate(Arrays.asList(\"fRiEnd\", \"cOlLeAgUe\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"Shauryan123"},"content":" assertTrue(predicate.test(new PersonBuilder().withTags(\"friend\").build()));","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"Shauryan123"},"content":" assertTrue(predicate.test(new PersonBuilder().withTags(\"colleague\").build()));","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"Shauryan123"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"Shauryan123"},"content":" public void test_tagDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"Shauryan123"},"content":" // Zero keywords","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"Shauryan123"},"content":" TagContainsKeywordsPredicate predicate \u003d new TagContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"Shauryan123"},"content":" assertFalse(predicate.test(new PersonBuilder().withTags(\"friend\").build()));","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"Shauryan123"},"content":" // Non-matching keyword","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"Shauryan123"},"content":" predicate \u003d new TagContainsKeywordsPredicate(Arrays.asList(\"associate\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"Shauryan123"},"content":" assertFalse(predicate.test(new PersonBuilder().withTags(\"friend\").build()));","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"Shauryan123"},"content":" assertFalse(predicate.test(new PersonBuilder().withTags(\"colleague\").build()));","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"Shauryan123"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"Shauryan123"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"Shauryan123"},"content":" List\u003cString\u003e keywords \u003d List.of(\"friend\", \"colleague\");","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"Shauryan123"},"content":" TagContainsKeywordsPredicate predicate \u003d new TagContainsKeywordsPredicate(keywords);","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"Shauryan123"},"content":" String expected \u003d TagContainsKeywordsPredicate.class.getCanonicalName() + \"{keywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"Shauryan123"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"Shauryan123":79}},{"path":"src/test/java/seedu/address/model/person/TagTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Shauryan123"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"Shauryan123"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"Shauryan123"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"Shauryan123"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"Shauryan123"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"Shauryan123"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"Shauryan123"},"content":"public class TagTest {","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"Shauryan123"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"Shauryan123"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"Shauryan123"},"content":" assertThrows(NullPointerException.class, () -\u003e new Tag(null));","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"Shauryan123"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"Shauryan123"},"content":" public void constructor_invalidTagName_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"Shauryan123"},"content":" String invalidTagName \u003d \"\";","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"Shauryan123"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Tag(invalidTagName));","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"Shauryan123"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"Shauryan123"},"content":" public void isValidTagName() {","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"Shauryan123"},"content":" // null tag name","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"Shauryan123"},"content":" assertThrows(NullPointerException.class, () -\u003e Tag.isValidTagName(null));","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"Shauryan123"},"content":" // invalid tag name","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"Shauryan123"},"content":" assertFalse(Tag.isValidTagName(\"\")); // empty string","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"Shauryan123"},"content":" assertFalse(Tag.isValidTagName(\" \")); // spaces only","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"Shauryan123"},"content":" assertFalse(Tag.isValidTagName(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"Shauryan123"},"content":" assertFalse(Tag.isValidTagName(\"peter*\")); // contains non-alphanumeric characters","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"Shauryan123"},"content":" // valid tag name","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"Shauryan123"},"content":" assertTrue(Tag.isValidTagName(\"friends\")); // alphabets only","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"Shauryan123"},"content":" assertTrue(Tag.isValidTagName(\"12345\")); // numbers only","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"Shauryan123"},"content":" assertTrue(Tag.isValidTagName(\"family\")); // alphanumeric characters","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"Shauryan123"},"content":" assertTrue(Tag.isValidTagName(\"neighbours\")); // with capital letters","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"Shauryan123"},"content":" assertTrue(Tag.isValidTagName(\"Classmates\")); // long tag names","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"Shauryan123"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"Shauryan123"},"content":" public void equals() {","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"Shauryan123"},"content":" Tag tag \u003d new Tag(\"friends\");","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"Shauryan123"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"Shauryan123"},"content":" assertTrue(tag.equals(new Tag(\"friends\")));","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"Shauryan123"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"Shauryan123"},"content":" assertTrue(tag.equals(tag));","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"Shauryan123"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"Shauryan123"},"content":" assertFalse(tag.equals(null));","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"Shauryan123"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"Shauryan123"},"content":" assertFalse(tag.equals(5.0f));","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"Shauryan123"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"Shauryan123"},"content":" assertFalse(tag.equals(new Tag(\"family\")));","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"Shauryan123":61,"ibnu2651":1}},{"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":"kaiyi27"},"content":"import seedu.address.model.person.Relationship;","lastModifiedDate":"2024-03-10"},{"lineNumber":20,"author":{"gitId":"Shauryan123"},"content":"import seedu.address.model.person.Meeting;","lastModifiedDate":"2024-03-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":"-"},"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":"kaiyi27"},"content":" private static final String INVALID_RELATIONSHIP \u003d \"family\";","lastModifiedDate":"2024-03-10"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"ibnu2651"},"content":" private static final String VALID_POLICY \u003d BENSON.getPolicy().toString();","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"kaiyi27"},"content":" private static final String VALID_RELATIONSHIP \u003d BENSON.getRelationship().toString();","lastModifiedDate":"2024-03-10"},{"lineNumber":36,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":37,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"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":"Shauryan123"},"content":" private static final List\u003cJsonAdaptedMeeting\u003e VALID_MEETINGS \u003d BENSON.getMeetings().stream()","lastModifiedDate":"2024-03-23"},{"lineNumber":44,"author":{"gitId":"Shauryan123"},"content":" .map(JsonAdaptedMeeting::new)","lastModifiedDate":"2024-03-23"},{"lineNumber":45,"author":{"gitId":"Shauryan123"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2024-03-23"},{"lineNumber":46,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","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":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"kaiyi27"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_RELATIONSHIP,","lastModifiedDate":"2024-03-10"},{"lineNumber":57,"author":{"gitId":"Shauryan123"},"content":" VALID_POLICY, VALID_TAGS, VALID_MEETINGS);","lastModifiedDate":"2024-03-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.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_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"kaiyi27"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-10"},{"lineNumber":65,"author":{"gitId":"Shauryan123"},"content":" VALID_RELATIONSHIP, VALID_POLICY, VALID_TAGS, VALID_MEETINGS);","lastModifiedDate":"2024-03-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.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_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"kaiyi27"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_RELATIONSHIP,","lastModifiedDate":"2024-03-10"},{"lineNumber":74,"author":{"gitId":"Shauryan123"},"content":" VALID_POLICY, VALID_TAGS, VALID_MEETINGS);","lastModifiedDate":"2024-03-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.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_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"kaiyi27"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-10"},{"lineNumber":82,"author":{"gitId":"Shauryan123"},"content":" VALID_RELATIONSHIP, VALID_POLICY, VALID_TAGS, VALID_MEETINGS);","lastModifiedDate":"2024-03-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.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_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"kaiyi27"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_ADDRESS, VALID_RELATIONSHIP,","lastModifiedDate":"2024-03-10"},{"lineNumber":91,"author":{"gitId":"Shauryan123"},"content":" VALID_POLICY, VALID_TAGS, VALID_MEETINGS);","lastModifiedDate":"2024-03-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"kaiyi27"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null, VALID_ADDRESS,","lastModifiedDate":"2024-03-10"},{"lineNumber":99,"author":{"gitId":"Shauryan123"},"content":" VALID_RELATIONSHIP, VALID_POLICY, VALID_TAGS, VALID_MEETINGS);","lastModifiedDate":"2024-03-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","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":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"kaiyi27"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_ADDRESS, VALID_RELATIONSHIP,","lastModifiedDate":"2024-03-10"},{"lineNumber":108,"author":{"gitId":"Shauryan123"},"content":" VALID_POLICY, VALID_TAGS, VALID_MEETINGS);","lastModifiedDate":"2024-03-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":115,"author":{"gitId":"kaiyi27"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, null,","lastModifiedDate":"2024-03-10"},{"lineNumber":116,"author":{"gitId":"Shauryan123"},"content":" VALID_RELATIONSHIP, VALID_POLICY, VALID_TAGS, VALID_MEETINGS);","lastModifiedDate":"2024-03-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.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":"kaiyi27"},"content":" @Test","lastModifiedDate":"2024-03-10"},{"lineNumber":122,"author":{"gitId":"kaiyi27"},"content":" public void toModelType_invalidRelationship_throwsIllegalValueException() {","lastModifiedDate":"2024-03-10"},{"lineNumber":123,"author":{"gitId":"kaiyi27"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-10"},{"lineNumber":124,"author":{"gitId":"kaiyi27"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, INVALID_RELATIONSHIP,","lastModifiedDate":"2024-03-10"},{"lineNumber":125,"author":{"gitId":"Shauryan123"},"content":" VALID_POLICY, VALID_TAGS, VALID_MEETINGS);","lastModifiedDate":"2024-03-23"},{"lineNumber":126,"author":{"gitId":"kaiyi27"},"content":" String expectedMessage \u003d Relationship.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-10"},{"lineNumber":127,"author":{"gitId":"kaiyi27"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-10"},{"lineNumber":128,"author":{"gitId":"kaiyi27"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":129,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":130,"author":{"gitId":"kaiyi27"},"content":" @Test","lastModifiedDate":"2024-03-10"},{"lineNumber":131,"author":{"gitId":"kaiyi27"},"content":" public void toModelType_nullRelationship_throwsIllegalValueException() {","lastModifiedDate":"2024-03-10"},{"lineNumber":132,"author":{"gitId":"kaiyi27"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-10"},{"lineNumber":133,"author":{"gitId":"Shauryan123"},"content":" null, VALID_POLICY, VALID_TAGS, VALID_MEETINGS);","lastModifiedDate":"2024-03-23"},{"lineNumber":134,"author":{"gitId":"kaiyi27"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Relationship.class.getSimpleName());","lastModifiedDate":"2024-03-10"},{"lineNumber":135,"author":{"gitId":"kaiyi27"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-10"},{"lineNumber":136,"author":{"gitId":"kaiyi27"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":137,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":140,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13"},{"lineNumber":141,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13"},{"lineNumber":142,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":143,"author":{"gitId":"kaiyi27"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_RELATIONSHIP,","lastModifiedDate":"2024-03-10"},{"lineNumber":144,"author":{"gitId":"Shauryan123"},"content":" VALID_POLICY, invalidTags, VALID_MEETINGS);","lastModifiedDate":"2024-03-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":148,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"Shauryan123":19,"kaiyi27":27,"ibnu2651":1,"-":101}},{"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":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-08-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.HOON;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.IDA;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2018-08-13"},{"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":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class JsonAddressBookStorageTest {","lastModifiedDate":"2024-03-17"},{"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":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"ibnu2651"},"content":" return new JsonInsuraConnectBookStorage(Paths.get(filePath))","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"ibnu2651"},"content":" .readAddressBook(addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private Path addToTestDataPathIfNotNull(String prefsFileInTestDataFolder) {","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return prefsFileInTestDataFolder !\u003d null","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" ? TEST_DATA_FOLDER.resolve(prefsFileInTestDataFolder)","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" : null;","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":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void read_missingFile_emptyResult() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertFalse(readAddressBook(\"NonExistentFile.json\").isPresent());","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 read_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2019-03-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"notJsonFormatAddressBook.json\"));","lastModifiedDate":"2023-06-14"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void readAddressBook_invalidPersonAddressBook_throwDataLoadingException() {","lastModifiedDate":"2023-06-14"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"invalidPersonAddressBook.json\"));","lastModifiedDate":"2023-06-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 readAddressBook_invalidAndValidPersonAddressBook_throwDataLoadingException() {","lastModifiedDate":"2023-06-14"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"invalidAndValidPersonAddressBook.json\"));","lastModifiedDate":"2023-06-14"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void readAndSaveAddressBook_allInOrder_success() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" Path filePath \u003d testFolder.resolve(\"TempAddressBook.json\");","lastModifiedDate":"2019-04-25"},{"lineNumber":67,"author":{"gitId":"-"},"content":" AddressBook original \u003d getTypicalAddressBook();","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"Shauryan123"},"content":" JsonInsuraConnectBookStorage jsonAddressBookStorage \u003d new JsonInsuraConnectBookStorage(filePath);","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" // Save in new file and read back","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original, filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook readBack \u003d jsonAddressBookStorage.readAddressBook(filePath).get();","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" // Modify data, overwrite exiting file, and read back","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" original.addPerson(HOON);","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" original.removePerson(ALICE);","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original, filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" readBack \u003d jsonAddressBookStorage.readAddressBook(filePath).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" // Save and read without specifying file path","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" original.addPerson(IDA);","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original); // file path not specified","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" readBack \u003d jsonAddressBookStorage.readAddressBook().get(); // file path not specified","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"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 saveAddressBook_nullAddressBook_throwsNullPointerException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveAddressBook(null, \"SomeFile.json\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * Saves {@code addressBook} at the specified {@code filePath}.","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" private void saveAddressBook(ReadOnlyAddressBook addressBook, String filePath) {","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"Shauryan123"},"content":" new JsonInsuraConnectBookStorage(Paths.get(filePath))","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"-"},"content":" .saveAddressBook(addressBook, addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" throw new AssertionError(\"There should not be an error writing to the file.\", ioe);","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":"","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void saveAddressBook_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveAddressBook(new AddressBook(), null));","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"Shauryan123":2,"ibnu2651":2,"-":107}},{"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":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"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":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-17"},{"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":"Shauryan123"},"content":" JsonInsuraConnectBookStorage addressBookStorage \u003d new JsonInsuraConnectBookStorage(getTempFilePath(\"ab\"));","lastModifiedDate":"2024-03-16"},{"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":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"-"},"content":" storageManager.saveAddressBook(original);","lastModifiedDate":"2016-09-28"},{"lineNumber":59,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook retrieved \u003d storageManager.readAddressBook().get();","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(retrieved));","lastModifiedDate":"2024-03-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":"-"},"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":{"Shauryan123":1,"-":67}},{"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.Address;","lastModifiedDate":"2017-12-23"},{"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":"-"},"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":"-"},"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":"-"},"content":" descriptor.setAddress(person.getAddress());","lastModifiedDate":"2017-06-21"},{"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":"-"},"content":" public EditPersonDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"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":"-"},"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":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"Shauryan123":1,"-":87}},{"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":"Shauryan123"},"content":"import java.time.Duration;","lastModifiedDate":"2024-03-23"},{"lineNumber":4,"author":{"gitId":"Shauryan123"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"Shauryan123"},"content":"import java.time.LocalTime;","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"Shauryan123"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20"},{"lineNumber":8,"author":{"gitId":"Shauryan123"},"content":"import java.util.List;","lastModifiedDate":"2024-03-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":11,"author":{"gitId":"Shauryan123"},"content":"import seedu.address.model.person.*;","lastModifiedDate":"2024-03-23"},{"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":"ibnu2651"},"content":" public static final String DEFAULT_POLICY \u003d \"\";","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"kaiyi27"},"content":" public static final String DEFAULT_RELATIONSHIP \u003d \"client\";","lastModifiedDate":"2024-03-10"},{"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":"ibnu2651"},"content":" private Policy policy;","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"kaiyi27"},"content":" private Relationship relationship;","lastModifiedDate":"2024-03-10"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":35,"author":{"gitId":"Shauryan123"},"content":" private List\u003cMeeting\u003e meetings;","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":37,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"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":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20"},{"lineNumber":46,"author":{"gitId":"ibnu2651"},"content":" policy \u003d new Policy(DEFAULT_POLICY);","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"kaiyi27"},"content":" relationship \u003d new Relationship(DEFAULT_RELATIONSHIP);","lastModifiedDate":"2024-03-10"},{"lineNumber":48,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":49,"author":{"gitId":"Shauryan123"},"content":" meetings \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-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":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20"},{"lineNumber":60,"author":{"gitId":"ibnu2651"},"content":" policy \u003d personToCopy.getPolicy();","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"kaiyi27"},"content":" relationship \u003d personToCopy.getRelationship();","lastModifiedDate":"2024-03-10"},{"lineNumber":62,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20"},{"lineNumber":63,"author":{"gitId":"Shauryan123"},"content":" meetings \u003d new ArrayList\u003c\u003e(personToCopy.getMeetings());","lastModifiedDate":"2024-03-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":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":84,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} 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":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":94,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20"},{"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":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":100,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":102,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20"},{"lineNumber":103,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":106,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":107,"author":{"gitId":"ibnu2651"},"content":" * Sets the {@code Policy} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-16"},{"lineNumber":108,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":109,"author":{"gitId":"ibnu2651"},"content":" public PersonBuilder withPolicy(String policy) {","lastModifiedDate":"2024-03-16"},{"lineNumber":110,"author":{"gitId":"ibnu2651"},"content":" this.policy \u003d new Policy(policy);","lastModifiedDate":"2024-03-16"},{"lineNumber":111,"author":{"gitId":"ibnu2651"},"content":" return this;","lastModifiedDate":"2024-03-16"},{"lineNumber":112,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":113,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":114,"author":{"gitId":"kaiyi27"},"content":" /**","lastModifiedDate":"2024-03-10"},{"lineNumber":115,"author":{"gitId":"kaiyi27"},"content":" * Sets the {@code Relationship} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-10"},{"lineNumber":116,"author":{"gitId":"kaiyi27"},"content":" */","lastModifiedDate":"2024-03-10"},{"lineNumber":117,"author":{"gitId":"kaiyi27"},"content":" public PersonBuilder withRelationship(String relationship) {","lastModifiedDate":"2024-03-10"},{"lineNumber":118,"author":{"gitId":"kaiyi27"},"content":" this.relationship \u003d new Relationship(relationship);","lastModifiedDate":"2024-03-10"},{"lineNumber":119,"author":{"gitId":"kaiyi27"},"content":" return this;","lastModifiedDate":"2024-03-10"},{"lineNumber":120,"author":{"gitId":"kaiyi27"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":121,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":122,"author":{"gitId":"Shauryan123"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":123,"author":{"gitId":"Shauryan123"},"content":" * Adds a {@code Meeting} to the {@code Person} that we are building.","lastModifiedDate":"2024-03-23"},{"lineNumber":124,"author":{"gitId":"Shauryan123"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":125,"author":{"gitId":"Shauryan123"},"content":" public PersonBuilder withMeeting(Meeting meeting) {","lastModifiedDate":"2024-03-23"},{"lineNumber":126,"author":{"gitId":"Shauryan123"},"content":" this.meetings.add(meeting);","lastModifiedDate":"2024-03-23"},{"lineNumber":127,"author":{"gitId":"Shauryan123"},"content":" return this;","lastModifiedDate":"2024-03-23"},{"lineNumber":128,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":129,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05"},{"lineNumber":131,"author":{"gitId":"Shauryan123"},"content":" Person p \u003d new Person(name, phone, email, address, relationship, policy, tags);","lastModifiedDate":"2024-03-23"},{"lineNumber":132,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":133,"author":{"gitId":"Shauryan123"},"content":" p.setMeetings(this.meetings);","lastModifiedDate":"2024-03-23"},{"lineNumber":134,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":135,"author":{"gitId":"Shauryan123"},"content":" return p;","lastModifiedDate":"2024-03-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":{"Shauryan123":24,"kaiyi27":12,"ibnu2651":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_ADDRESS;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"ibnu2651"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_RELATIONSHIP;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"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":"Shauryan123"},"content":" sb.append(PREFIX_RELATIONSHIP + person.getRelationship().value + \" \");","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" person.getTags().stream().forEach(","lastModifiedDate":"2017-05-09"},{"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":"-"},"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":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":54,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" sb.append(PREFIX_TAG);","lastModifiedDate":"2018-03-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05"}],"authorContributionMap":{"Shauryan123":2,"ibnu2651":1,"-":62}},{"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":"ibnu2651"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_POLICY_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"ibnu2651"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_POLICY_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"kaiyi27"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_RELATIONSHIP_AMY;","lastModifiedDate":"2024-03-10"},{"lineNumber":14,"author":{"gitId":"kaiyi27"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_RELATIONSHIP_BOB;","lastModifiedDate":"2024-03-10"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-08-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-08-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":18,"author":{"gitId":"Shauryan123"},"content":"import java.time.Duration;","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"Shauryan123"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"Shauryan123"},"content":"import java.time.LocalTime;","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":26,"author":{"gitId":"Shauryan123"},"content":"import seedu.address.model.person.Meeting;","lastModifiedDate":"2024-03-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":34,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":35,"author":{"gitId":"Shauryan123"},"content":" public static final Meeting MEETING_1 \u003d new Meeting(LocalDate.of(2023, 3, 20), LocalTime.of(14, 0), Duration.ofHours(1), \"Discuss new policy\", \"Bring all necessary documents\");","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"Shauryan123"},"content":" public static final Meeting MEETING_2 \u003d new Meeting(LocalDate.of(2023, 4, 5), LocalTime.of(10, 30), Duration.ofHours(2), \"Review quarterly results\", \"Prepare presentation slides\");","lastModifiedDate":"2024-03-23"},{"lineNumber":37,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final Person ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2018-01-10"},{"lineNumber":39,"author":{"gitId":"-"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2017-04-05"},{"lineNumber":40,"author":{"gitId":"ibnu2651"},"content":" .withPhone(\"94351253\").withRelationship(\"client\").withPolicy(\"Policy 1\")","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"Shauryan123"},"content":" .withTags(\"friends\").withMeeting(MEETING_1).build();","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10"},{"lineNumber":43,"author":{"gitId":"-"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2017-09-21"},{"lineNumber":44,"author":{"gitId":"ibnu2651"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\").withRelationship(\"client\").withPolicy(\"Policy 1\")","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"Shauryan123"},"content":" .withTags(\"owesMoney\", \"friends\").withMeeting(MEETING_2).build();","lastModifiedDate":"2024-03-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2018-01-10"},{"lineNumber":47,"author":{"gitId":"kaiyi27"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\").withRelationship(\"client\").build();","lastModifiedDate":"2024-03-10"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2018-01-10"},{"lineNumber":49,"author":{"gitId":"kaiyi27"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\").withRelationship(\"client\")","lastModifiedDate":"2024-03-10"},{"lineNumber":50,"author":{"gitId":"kaiyi27"},"content":" .withTags(\"friends\").build();","lastModifiedDate":"2024-03-10"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2018-01-10"},{"lineNumber":52,"author":{"gitId":"kaiyi27"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\").withRelationship(\"partner\").build();","lastModifiedDate":"2024-03-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2018-01-10"},{"lineNumber":54,"author":{"gitId":"kaiyi27"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\").withRelationship(\"partner\").build();","lastModifiedDate":"2024-03-10"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2018-01-10"},{"lineNumber":56,"author":{"gitId":"kaiyi27"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\").withRelationship(\"partner\").build();","lastModifiedDate":"2024-03-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2018-01-10"},{"lineNumber":60,"author":{"gitId":"kaiyi27"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\").withRelationship(\"client\").build();","lastModifiedDate":"2024-03-10"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2018-01-10"},{"lineNumber":62,"author":{"gitId":"kaiyi27"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\").withRelationship(\"partner\").build();","lastModifiedDate":"2024-03-10"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2018-01-10"},{"lineNumber":66,"author":{"gitId":"kaiyi27"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withRelationship(VALID_RELATIONSHIP_AMY)","lastModifiedDate":"2024-03-10"},{"lineNumber":67,"author":{"gitId":"ibnu2651"},"content":" .withPolicy(VALID_POLICY_AMY).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2018-01-10"},{"lineNumber":69,"author":{"gitId":"kaiyi27"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withRelationship(VALID_RELATIONSHIP_BOB)","lastModifiedDate":"2024-03-10"},{"lineNumber":70,"author":{"gitId":"ibnu2651"},"content":" .withPolicy(VALID_POLICY_BOB).withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20"},{"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":{"Shauryan123":10,"kaiyi27":12,"ibnu2651":6,"-":62}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"ibnu2651"},"content":"[![CI Status](https://github.com/AY2324S2-CS2103T-T13-3/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S2-CS2103T-T13-3/tp/actions)","lastModifiedDate":"2024-03-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":"ibnu2651"},"content":"* Insura-Connect is an enhanced version of the AddressBook-Level3 project, which serves as a personal contact management tool for insurance agents.","lastModifiedDate":"2024-03-06"},{"lineNumber":6,"author":{"gitId":"ibnu2651"},"content":"* It provides fast access to client contact details, easily manage client relationships, collaborate with industry partners, and stay organised in a fast-paced industry","lastModifiedDate":"2024-03-06"},{"lineNumber":7,"author":{"gitId":"ibnu2651"},"content":"* For the detailed documentation of this project, see the **[Insura-Connect Product Website](https://ay2324s2-cs2103t-t13-3.github.io/tp/)**.","lastModifiedDate":"2024-03-06"},{"lineNumber":8,"author":{"gitId":"ibnu2651"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-03-03"}],"authorContributionMap":{"ibnu2651":5,"-":3}},{"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":"[[homepage](http://www.comp.nus.edu.sg/~damithch)]","lastModifiedDate":"2024-03-07"},{"lineNumber":13,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"kaiyi27"},"content":"### Teoh Kai Yi","lastModifiedDate":"2024-03-02"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"kaiyi27"},"content":"\u003cimg src\u003d\"images/kaiyi27.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-02"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":20,"author":{"gitId":"kaiyi27"},"content":"[[github](https://github.com/kaiyi27)]","lastModifiedDate":"2024-03-02"},{"lineNumber":21,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"kaiyi27"},"content":"* Role: Developer","lastModifiedDate":"2024-03-02"},{"lineNumber":24,"author":{"gitId":"kaiyi27"},"content":"* Responsibilities: ","lastModifiedDate":"2024-03-02"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"ibnu2651"},"content":"### Ibnu Taimiyyah Bin Adam","lastModifiedDate":"2024-03-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"ibnu2651"},"content":"\u003cimg src\u003d\"images/ibnu2651.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"ibnu2651"},"content":"[[github](https://github.com/ibnu2651)]","lastModifiedDate":"2024-03-03"},{"lineNumber":31,"author":{"gitId":"justincred"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2024-03-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"ibnu2651"},"content":"* Responsibilities:","lastModifiedDate":"2024-03-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"Shauryan123"},"content":"### Shauryan Agrawal","lastModifiedDate":"2024-03-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"justincred"},"content":"\u003cimg src\u003d\"images/shauryan123.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-07"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"justincred"},"content":"[[github](http://github.com/Shauryan123)]","lastModifiedDate":"2024-03-07"},{"lineNumber":40,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2024-03-05"},{"lineNumber":43,"author":{"gitId":"Shauryan123"},"content":"* Responsibilities:","lastModifiedDate":"2024-03-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":45,"author":{"gitId":"justincred"},"content":"### Justin Lim Chong Hwei","lastModifiedDate":"2024-03-07"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":47,"author":{"gitId":"justincred"},"content":"\u003cimg src\u003d\"images/justincred.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-07"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":49,"author":{"gitId":"justincred"},"content":"[[github](http://github.com/justincred)]","lastModifiedDate":"2024-03-07"},{"lineNumber":50,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2024-03-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2024-03-07"},{"lineNumber":52,"author":{"gitId":"justincred"},"content":"* Responsibilities:","lastModifiedDate":"2024-03-07"}],"authorContributionMap":{"Shauryan123":2,"kaiyi27":5,"ibnu2651":4,"justincred":7,"-":34}},{"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":"ibnu2651"},"content":"# Insura-Connect Developer Guide","lastModifiedDate":"2024-03-03"},{"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":"-"},"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":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":"-"},"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":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":"-"},"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":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":"-"},"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":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 continues till 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).\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-02-09"},{"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":"ibnu2651"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"policy 1 po/Policy XYZ\")` API call as an example.","lastModifiedDate":"2024-03-21"},{"lineNumber":111,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":112,"author":{"gitId":"ibnu2651"},"content":"\u003cpuml src\u003d\"diagrams/PolicySequenceDiagram.puml\" alt\u003d\"Interactions Inside the Logic Component for the `policy 1 po/Policy XYZ` Command\" /\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":113,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":114,"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":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":116,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31"},{"lineNumber":119,"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":120,"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":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31"},{"lineNumber":123,"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":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"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":131,"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":132,"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":133,"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":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":135,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":137,"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":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":139,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"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":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":150,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"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":152,"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":153,"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":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","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":"","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"justincred"},"content":"### Undo/redo feature","lastModifiedDate":"2024-03-21"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"justincred"},"content":"#### Implementation","lastModifiedDate":"2024-03-21"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"justincred"},"content":"The 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":"2024-03-21"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"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":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"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":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"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":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"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":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"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":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"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":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":195,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"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":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":202,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"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":205,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"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":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":217,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":219,"author":{"gitId":"justincred"},"content":"The following sequence diagram shows how a redo operation goes through the `Logic` component instead:","lastModifiedDate":"2024-03-21"},{"lineNumber":220,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":221,"author":{"gitId":"justincred"},"content":"\u003cpuml src\u003d\"diagrams/RedoSequenceDiagram-Logic.puml\" alt\u003d\"Interactions Inside the Logic Component for the `redo` Command\" /\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":222,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":223,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":225,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":227,"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":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":231,"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":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"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":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"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":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":248,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":249,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":252,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":262,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":264,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":"","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":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":274,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":275,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":276,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":277,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":281,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":283,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":284,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":285,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":286,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":287,"author":{"gitId":"ibnu2651"},"content":"* insurance agents","lastModifiedDate":"2024-03-06"},{"lineNumber":288,"author":{"gitId":"-"},"content":"* has a need to manage a significant number of contacts","lastModifiedDate":"2020-05-23"},{"lineNumber":289,"author":{"gitId":"ibnu2651"},"content":"* needs to differentiate between different types of contacts","lastModifiedDate":"2024-03-06"},{"lineNumber":290,"author":{"gitId":"ibnu2651"},"content":"* track the status of contacts","lastModifiedDate":"2024-03-06"},{"lineNumber":291,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23"},{"lineNumber":292,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23"},{"lineNumber":293,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26"},{"lineNumber":294,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23"},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":296,"author":{"gitId":"ibnu2651"},"content":"**Value proposition**: Provides fast access to client contact details, easily manage client relationships, collaborate with industry partners, and stay organised in a fast-paced industry.","lastModifiedDate":"2024-03-06"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":298,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":299,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":300,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":301,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":302,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":303,"author":{"gitId":"-"},"content":"| Priority | As a…​ | I want to…​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":304,"author":{"gitId":"kaiyi27"},"content":"|----------|-------------------------------------------|---------------------------------|-------------------------------------------------------------------------|","lastModifiedDate":"2024-03-02"},{"lineNumber":305,"author":{"gitId":"kaiyi27"},"content":"| `* * *` | fast typing user | have a CLI | use the app more efficiently |","lastModifiedDate":"2024-03-02"},{"lineNumber":306,"author":{"gitId":"kaiyi27"},"content":"| `* * *` | busy user | clear all my data quickly | quickly restart a new list of contacts |","lastModifiedDate":"2024-03-02"},{"lineNumber":307,"author":{"gitId":"kaiyi27"},"content":"| `* * *` | intermediate user | see my relationship with my contacts | know who they are |","lastModifiedDate":"2024-03-02"},{"lineNumber":308,"author":{"gitId":"kaiyi27"},"content":"| `* * *` | intermediate user | find a certain client based on a keyword | easier to find the client |","lastModifiedDate":"2024-03-02"},{"lineNumber":309,"author":{"gitId":"kaiyi27"},"content":"| `* * *` | intermediate user | save and retrieve information | use the app in multiple sessions |","lastModifiedDate":"2024-03-02"},{"lineNumber":310,"author":{"gitId":"kaiyi27"},"content":"| `* * *` | intermediate user | add data about clients to the application | record information about my client |","lastModifiedDate":"2024-03-02"},{"lineNumber":311,"author":{"gitId":"kaiyi27"},"content":"| `* *` | exploring the app | see what the app will look like with sample data | more easily understand the potential features |","lastModifiedDate":"2024-03-02"},{"lineNumber":312,"author":{"gitId":"kaiyi27"},"content":"| `* *` | exploring the app | have a tutorial of the basic features | get started with using the app |","lastModifiedDate":"2024-03-02"},{"lineNumber":313,"author":{"gitId":"kaiyi27"},"content":"| `* *` | exploring the app | access a help page with basic commands | familiarize myself with how to use the app |","lastModifiedDate":"2024-03-02"},{"lineNumber":314,"author":{"gitId":"kaiyi27"},"content":"| `* *` | exploring the app | track my client information | manage my work using the app more efficiently |","lastModifiedDate":"2024-03-02"},{"lineNumber":315,"author":{"gitId":"kaiyi27"},"content":"| `* *` | exploring the app | access past activity since app installation | see my current progress |","lastModifiedDate":"2024-03-02"},{"lineNumber":316,"author":{"gitId":"kaiyi27"},"content":"| `* *` | intermediate user | save similar client information data into a group | manage them easily |","lastModifiedDate":"2024-03-02"},{"lineNumber":317,"author":{"gitId":"kaiyi27"},"content":"| `* *` | intermediate user | reorganize my list of contacts | access them more clearly and efficiently |","lastModifiedDate":"2024-03-02"},{"lineNumber":318,"author":{"gitId":"kaiyi27"},"content":"| `* *` | intermediate user | edit my contacts as a group | easier to implement changes if something in common in the group changes |","lastModifiedDate":"2024-03-02"},{"lineNumber":319,"author":{"gitId":"kaiyi27"},"content":"| `* *` | careless user | have an undo command | prevent doing some mistake |","lastModifiedDate":"2024-03-02"},{"lineNumber":320,"author":{"gitId":"kaiyi27"},"content":"| `* *` | intermediate user | filter client information | sort my client information according to some condition |","lastModifiedDate":"2024-03-02"},{"lineNumber":321,"author":{"gitId":"kaiyi27"},"content":"| `*` | intermediate user | record if I am successful in securing an agreement | know I have succeeded at my job |","lastModifiedDate":"2024-03-02"},{"lineNumber":322,"author":{"gitId":"kaiyi27"},"content":"| `*` | busy user | autocomplete my commands | type commands faster |","lastModifiedDate":"2024-03-02"},{"lineNumber":323,"author":{"gitId":"kaiyi27"},"content":"| `*` | intermediate user | tag my clients | classify common groups |","lastModifiedDate":"2024-03-02"},{"lineNumber":324,"author":{"gitId":"kaiyi27"},"content":"| `*` | intermediate user | have common use shortcut keys command | access the app more efficiently |","lastModifiedDate":"2024-03-02"},{"lineNumber":325,"author":{"gitId":"kaiyi27"},"content":"| `*` | intermediate user | track progress of engagements via tags | monitor the progress of different engagements with clients |","lastModifiedDate":"2024-03-02"},{"lineNumber":326,"author":{"gitId":"kaiyi27"},"content":"| `*` | intermediate user | copy information/features to another client | reduce the time used |","lastModifiedDate":"2024-03-02"},{"lineNumber":327,"author":{"gitId":"kaiyi27"},"content":"| `*` | intermediate user | quickly differentiate between clients and business partners | differentiate between them |","lastModifiedDate":"2024-03-02"},{"lineNumber":328,"author":{"gitId":"kaiyi27"},"content":"| `*` | intermediate user | rate clients for effective feedback | provide feedback efficiently |","lastModifiedDate":"2024-03-02"},{"lineNumber":329,"author":{"gitId":"kaiyi27"},"content":"| `*` | intermediate user | customize the app’s theme | better suits my preferences |","lastModifiedDate":"2024-03-02"},{"lineNumber":330,"author":{"gitId":"kaiyi27"},"content":"| `*` | expert user | create shortcuts for tasks | save time on frequently performed tasks |","lastModifiedDate":"2024-03-02"},{"lineNumber":331,"author":{"gitId":"kaiyi27"},"content":"| `*` | long-time user | archive/hide unused data | not distracted by irrelevant data |","lastModifiedDate":"2024-03-02"},{"lineNumber":332,"author":{"gitId":"kaiyi27"},"content":"| `*` | frequent user | have templates for adding contacts | contacts are standardized and easier to read |","lastModifiedDate":"2024-03-02"},{"lineNumber":333,"author":{"gitId":"kaiyi27"},"content":"| `*` | frequent user | schedule weekly check-ins with clients | do not forget about them |","lastModifiedDate":"2024-03-02"},{"lineNumber":334,"author":{"gitId":"kaiyi27"},"content":"| `*` | expert user | have reminders for meetings with clients | organize and plan my time well |","lastModifiedDate":"2024-03-02"},{"lineNumber":335,"author":{"gitId":"kaiyi27"},"content":"| `*` | expert user | create automated task workflows | save time on performing repeated tasks |","lastModifiedDate":"2024-03-02"},{"lineNumber":336,"author":{"gitId":"kaiyi27"},"content":"| `*` | expert user | see a competency rating based on past successes | know if I need to improve |","lastModifiedDate":"2024-03-02"},{"lineNumber":337,"author":{"gitId":"kaiyi27"},"content":"| `*` | expert user | find clients based on different filters | better focus on one particular group |","lastModifiedDate":"2024-03-02"},{"lineNumber":338,"author":{"gitId":"kaiyi27"},"content":"| `*` | expert user | disable unnecessary features | the application is more customized and simpler to use |","lastModifiedDate":"2024-03-02"},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":340,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":341,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":342,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":343,"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":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":345,"author":{"gitId":"-"},"content":"**Use case: Delete a person**","lastModifiedDate":"2020-05-23"},{"lineNumber":346,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":347,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":348,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":349,"author":{"gitId":"-"},"content":"1. User requests to list persons","lastModifiedDate":"2020-05-23"},{"lineNumber":350,"author":{"gitId":"-"},"content":"2. AddressBook shows a list of persons","lastModifiedDate":"2020-05-23"},{"lineNumber":351,"author":{"gitId":"-"},"content":"3. User requests to delete a specific person in the list","lastModifiedDate":"2020-05-23"},{"lineNumber":352,"author":{"gitId":"-"},"content":"4. AddressBook deletes the person","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":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":357,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":358,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2020-05-23"},{"lineNumber":359,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":360,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":361,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":362,"author":{"gitId":"-"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2020-05-23"},{"lineNumber":363,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":364,"author":{"gitId":"-"},"content":" * 3a1. AddressBook shows an error message.","lastModifiedDate":"2020-05-23"},{"lineNumber":365,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":366,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23"},{"lineNumber":367,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":368,"author":{"gitId":"kaiyi27"},"content":"**Use case: List out the contact information**","lastModifiedDate":"2024-03-03"},{"lineNumber":369,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":370,"author":{"gitId":"kaiyi27"},"content":"**MSS**","lastModifiedDate":"2024-03-03"},{"lineNumber":371,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":372,"author":{"gitId":"kaiyi27"},"content":"1. User requests to list persons","lastModifiedDate":"2024-03-03"},{"lineNumber":373,"author":{"gitId":"kaiyi27"},"content":"2. AddressBook shows a list of persons","lastModifiedDate":"2024-03-03"},{"lineNumber":374,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":375,"author":{"gitId":"kaiyi27"},"content":" Use case ends.","lastModifiedDate":"2024-03-03"},{"lineNumber":376,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":377,"author":{"gitId":"kaiyi27"},"content":"**Extensions**","lastModifiedDate":"2024-03-03"},{"lineNumber":378,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":379,"author":{"gitId":"ibnu2651"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-03-03"},{"lineNumber":380,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":381,"author":{"gitId":"ibnu2651"},"content":" Use case ends.","lastModifiedDate":"2024-03-03"},{"lineNumber":382,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":383,"author":{"gitId":"ibnu2651"},"content":"**Use case: Filter the list of clients**","lastModifiedDate":"2024-03-03"},{"lineNumber":384,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":385,"author":{"gitId":"ibnu2651"},"content":"**MSS**","lastModifiedDate":"2024-03-03"},{"lineNumber":386,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":387,"author":{"gitId":"ibnu2651"},"content":"1. User requests to filter list of persons","lastModifiedDate":"2024-03-03"},{"lineNumber":388,"author":{"gitId":"ibnu2651"},"content":"2. AddressBook shows a list of persons that satisfy the filter","lastModifiedDate":"2024-03-03"},{"lineNumber":389,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":390,"author":{"gitId":"ibnu2651"},"content":" Use case ends.","lastModifiedDate":"2024-03-03"},{"lineNumber":391,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":392,"author":{"gitId":"ibnu2651"},"content":"**Extensions**","lastModifiedDate":"2024-03-03"},{"lineNumber":393,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":394,"author":{"gitId":"kaiyi27"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-03-03"},{"lineNumber":395,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":396,"author":{"gitId":"kaiyi27"},"content":" Use case ends.","lastModifiedDate":"2024-03-03"},{"lineNumber":397,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":398,"author":{"gitId":"Shauryan123"},"content":"**Use case: Add a new person**","lastModifiedDate":"2024-03-05"},{"lineNumber":399,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":400,"author":{"gitId":"Shauryan123"},"content":"**MSS**","lastModifiedDate":"2024-03-05"},{"lineNumber":401,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":402,"author":{"gitId":"Shauryan123"},"content":"1. User requests to add a new person.","lastModifiedDate":"2024-03-05"},{"lineNumber":403,"author":{"gitId":"Shauryan123"},"content":"2. AddressBook prompts the user to enter the details of the person.","lastModifiedDate":"2024-03-05"},{"lineNumber":404,"author":{"gitId":"Shauryan123"},"content":"3. User enters the details of the person.","lastModifiedDate":"2024-03-05"},{"lineNumber":405,"author":{"gitId":"Shauryan123"},"content":"4. AddressBook adds the new person to the list.","lastModifiedDate":"2024-03-05"},{"lineNumber":406,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":407,"author":{"gitId":"Shauryan123"},"content":" Use case ends.","lastModifiedDate":"2024-03-05"},{"lineNumber":408,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":409,"author":{"gitId":"Shauryan123"},"content":"**Extensions**","lastModifiedDate":"2024-03-05"},{"lineNumber":410,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":411,"author":{"gitId":"Shauryan123"},"content":"* 3a. The user enters invalid details.","lastModifiedDate":"2024-03-05"},{"lineNumber":412,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":413,"author":{"gitId":"Shauryan123"},"content":" * 3a1. AddressBook shows an error message.","lastModifiedDate":"2024-03-05"},{"lineNumber":414,"author":{"gitId":"Shauryan123"},"content":" * 3a2. AddressBook prompts the user to enter the details again.","lastModifiedDate":"2024-03-05"},{"lineNumber":415,"author":{"gitId":"Shauryan123"},"content":" ","lastModifiedDate":"2024-03-05"},{"lineNumber":416,"author":{"gitId":"Shauryan123"},"content":" Use case resumes at step 3.","lastModifiedDate":"2024-03-05"},{"lineNumber":417,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":418,"author":{"gitId":"Shauryan123"},"content":"**Use case: Update a person\u0027s details**","lastModifiedDate":"2024-03-05"},{"lineNumber":419,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":420,"author":{"gitId":"Shauryan123"},"content":"**MSS**","lastModifiedDate":"2024-03-05"},{"lineNumber":421,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":422,"author":{"gitId":"Shauryan123"},"content":"1. User requests to list persons..","lastModifiedDate":"2024-03-05"},{"lineNumber":423,"author":{"gitId":"Shauryan123"},"content":"2. AddressBook shows a list of persons.","lastModifiedDate":"2024-03-05"},{"lineNumber":424,"author":{"gitId":"Shauryan123"},"content":"3. User requests to update the details of a specific person in the list.","lastModifiedDate":"2024-03-05"},{"lineNumber":425,"author":{"gitId":"Shauryan123"},"content":"4. AddressBook prompts the user to enter the new details.","lastModifiedDate":"2024-03-05"},{"lineNumber":426,"author":{"gitId":"Shauryan123"},"content":"5. User enters the new details.","lastModifiedDate":"2024-03-05"},{"lineNumber":427,"author":{"gitId":"Shauryan123"},"content":"6. AddressBook updates the person\u0027s details.","lastModifiedDate":"2024-03-05"},{"lineNumber":428,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":429,"author":{"gitId":"Shauryan123"},"content":" Use case ends.","lastModifiedDate":"2024-03-05"},{"lineNumber":430,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":431,"author":{"gitId":"Shauryan123"},"content":"**Extensions**","lastModifiedDate":"2024-03-05"},{"lineNumber":432,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":433,"author":{"gitId":"Shauryan123"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-03-05"},{"lineNumber":434,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":435,"author":{"gitId":"Shauryan123"},"content":" Use case ends.","lastModifiedDate":"2024-03-05"},{"lineNumber":436,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":437,"author":{"gitId":"Shauryan123"},"content":"* 3a. The given index is invalid..","lastModifiedDate":"2024-03-05"},{"lineNumber":438,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":439,"author":{"gitId":"Shauryan123"},"content":" * 3a1. AddressBook shows an error message.","lastModifiedDate":"2024-03-05"},{"lineNumber":440,"author":{"gitId":"Shauryan123"},"content":" ","lastModifiedDate":"2024-03-05"},{"lineNumber":441,"author":{"gitId":"Shauryan123"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-05"},{"lineNumber":442,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":443,"author":{"gitId":"Shauryan123"},"content":"* 5a. The user enters invalid details.","lastModifiedDate":"2024-03-05"},{"lineNumber":444,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":445,"author":{"gitId":"Shauryan123"},"content":" * 5a1. AddressBook shows an error message.","lastModifiedDate":"2024-03-05"},{"lineNumber":446,"author":{"gitId":"Shauryan123"},"content":" * 5a2. AddressBook prompts the user to enter the details again.","lastModifiedDate":"2024-03-05"},{"lineNumber":447,"author":{"gitId":"Shauryan123"},"content":" ","lastModifiedDate":"2024-03-05"},{"lineNumber":448,"author":{"gitId":"Shauryan123"},"content":" Use case resumes at step 4.","lastModifiedDate":"2024-03-05"},{"lineNumber":449,"author":{"gitId":"Shauryan123"},"content":" ","lastModifiedDate":"2024-03-05"},{"lineNumber":450,"author":{"gitId":"justincred"},"content":"**Use case: Clear AddressBook**","lastModifiedDate":"2024-03-07"},{"lineNumber":451,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":452,"author":{"gitId":"justincred"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":453,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":454,"author":{"gitId":"justincred"},"content":"1. User requests to clear the AddressBook","lastModifiedDate":"2024-03-07"},{"lineNumber":455,"author":{"gitId":"justincred"},"content":"2. AddressBook shows the empty AddressBook","lastModifiedDate":"2024-03-07"},{"lineNumber":456,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":457,"author":{"gitId":"justincred"},"content":" use case ends","lastModifiedDate":"2024-03-07"},{"lineNumber":458,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":459,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":460,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":461,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":462,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":463,"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":464,"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":465,"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":466,"author":{"gitId":"ibnu2651"},"content":"4. The response to any use action should become visible within 5 seconds.","lastModifiedDate":"2024-03-03"},{"lineNumber":467,"author":{"gitId":"ibnu2651"},"content":"5. Should have a user-friendly interface that is easy to navigate and understand.","lastModifiedDate":"2024-03-03"},{"lineNumber":468,"author":{"gitId":"ibnu2651"},"content":"6. Should be stable and not crash or lose data under normal use.","lastModifiedDate":"2024-03-03"},{"lineNumber":469,"author":{"gitId":"Shauryan123"},"content":"7. Should be able to handle increasing amounts of data and users without significant degradation in performance (Scalability).","lastModifiedDate":"2024-03-05"},{"lineNumber":470,"author":{"gitId":"Shauryan123"},"content":"8. Should protect sensitive data and prevent unauthorized access, ensuring data integrity and confidentiality (Security).","lastModifiedDate":"2024-03-05"},{"lineNumber":471,"author":{"gitId":"Shauryan123"},"content":"9. Should be easy to maintain, with clear documentation and a modular design that allows for easy updates and fixes .","lastModifiedDate":"2024-03-05"},{"lineNumber":472,"author":{"gitId":"Shauryan123"},"content":"10. Should be accessible to users with disabilities, following guidelines such as the Web Content Accessibility Guidelines (WCAG).","lastModifiedDate":"2024-03-05"},{"lineNumber":473,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":474,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":475,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":476,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":477,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":478,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":479,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09"},{"lineNumber":480,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23"},{"lineNumber":481,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":482,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":483,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":484,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":485,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":486,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":487,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":488,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":489,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":490,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12"},{"lineNumber":491,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":492,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":493,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":494,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":495,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":496,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":497,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":498,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":499,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":500,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":501,"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":502,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":503,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":504,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":505,"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":506,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":507,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":508,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":509,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":510,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":511,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":512,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":513,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":514,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":515,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":516,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":517,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":518,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":519,"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":520,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":521,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":522,"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":523,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":524,"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":525,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":526,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":527,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":528,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":529,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":530,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":531,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":532,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":533,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":534,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":535,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"Shauryan123":59,"kaiyi27":49,"ibnu2651":28,"justincred":16,"-":383}},{"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":"ibnu2651"},"content":"# InsuraConnect User Guide","lastModifiedDate":"2024-03-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":9,"author":{"gitId":"ibnu2651"},"content":"InsuraConnect is an enhanced version of the AddressBook-Level3 project, which serves as a **personal contact management tool for insurance agents**.","lastModifiedDate":"2024-03-24"},{"lineNumber":10,"author":{"gitId":"ibnu2651"},"content":"It provides fast access to client contact details, easily manage client relationships, collaborate with industry partners, and stay organised in a fast-paced industry.","lastModifiedDate":"2024-03-24"},{"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":"ibnu2651"},"content":"1. Download the latest `Insura-Connect.jar` from [here](https://github.com/AY2324S2-CS2103T-T13-3/tp/releases).","lastModifiedDate":"2024-03-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your AddressBook.","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"ibnu2651"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar Insura-Connect.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2024-03-24"},{"lineNumber":25,"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":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":"-"},"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":29,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"kaiyi27"},"content":" * `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01 r/client` : Adds a contact named `John Doe` to the Address Book.","lastModifiedDate":"2024-03-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2023-01-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"**Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"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":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"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":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"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":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"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":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"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":64,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":66,"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":67,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"### Adding a person: `add`","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"Adds a person to the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"kaiyi27"},"content":"Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS r/RELATIONSHIP [t/TAG]…​`","lastModifiedDate":"2024-03-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":86,"author":{"gitId":"-"},"content":"**Tip:** A person can have any number of tags (including 0)","lastModifiedDate":"2023-09-12"},{"lineNumber":87,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":88,"author":{"gitId":"kaiyi27"},"content":"**Note:** The relationship field can only be `client` or `partner`.","lastModifiedDate":"2024-03-24"},{"lineNumber":89,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"kaiyi27"},"content":"* `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01 r/client`","lastModifiedDate":"2024-03-24"},{"lineNumber":93,"author":{"gitId":"kaiyi27"},"content":"* `add n/Betsy Crowe t/friend e/betsycrowe@example.com a/Kent Ridge p/1234567 r/partner t/owe money`","lastModifiedDate":"2024-03-24"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"### Listing all persons : `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"Shows a list of all persons in the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"### Editing a person : `edit`","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":"Edits an existing person in the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":"Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"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":108,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"kaiyi27"},"content":"* The relationship field is not allowed to edit.","lastModifiedDate":"2024-03-24"},{"lineNumber":111,"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":112,"author":{"gitId":"-"},"content":"* You can remove all the person’s tags by typing `t/` without","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":" specifying any tags after it.","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"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":117,"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":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":"### Locating persons by name: `find`","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"Finds persons whose names contain any of the given keywords.","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"* `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"Deletes the specified person from the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"* Deletes the person at the specified `INDEX`.","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":"* `list` followed by `delete 2` deletes the 2nd person in the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"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":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"ibnu2651"},"content":"### Assigning a policy : `policy`","lastModifiedDate":"2024-03-24"},{"lineNumber":152,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":153,"author":{"gitId":"ibnu2651"},"content":"Assigns a policy to a client.","lastModifiedDate":"2024-03-24"},{"lineNumber":154,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":155,"author":{"gitId":"ibnu2651"},"content":"Format: `policy INDEX po/POLICY_NAME`","lastModifiedDate":"2024-03-24"},{"lineNumber":156,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":157,"author":{"gitId":"ibnu2651"},"content":"* Assigns a policy to the client 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":"2024-03-24"},{"lineNumber":158,"author":{"gitId":"ibnu2651"},"content":"* Only clients can be assigned a policy. Attempts to assign a policy to a partner will be denied.","lastModifiedDate":"2024-03-24"},{"lineNumber":159,"author":{"gitId":"ibnu2651"},"content":"* Upon creating a new client, the initial policy will be empty.","lastModifiedDate":"2024-03-24"},{"lineNumber":160,"author":{"gitId":"ibnu2651"},"content":"* Policies cannot be changed with the `edit`command. They can only be changed with `policy`.","lastModifiedDate":"2024-03-24"},{"lineNumber":161,"author":{"gitId":"ibnu2651"},"content":"* Leaving `POLICY_NAME` blank will remove the policy from the client. Each client can only have one policy (for now). If the client is already assigned a policy, the current policy will be overwritten with the new one.","lastModifiedDate":"2024-03-24"},{"lineNumber":162,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":163,"author":{"gitId":"ibnu2651"},"content":"Examples:","lastModifiedDate":"2024-03-24"},{"lineNumber":164,"author":{"gitId":"ibnu2651"},"content":"* `policy 1 po/Policy ABC` Assigns the policy of the 1st person if it is a client to be `Policy ABC`","lastModifiedDate":"2024-03-24"},{"lineNumber":165,"author":{"gitId":"ibnu2651"},"content":"* `policy 2 po/` Removes the existing policy of the 2nd person if it is a client.","lastModifiedDate":"2024-03-24"},{"lineNumber":166,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":167,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"Clears all entries from the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"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":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":185,"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":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":187,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":189,"author":{"gitId":"-"},"content":"**Caution:**","lastModifiedDate":"2023-09-12"},{"lineNumber":190,"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.\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":191,"author":{"gitId":"-"},"content":"Furthermore, certain edits can cause the AddressBook to behave in unexpected ways (e.g., if a value entered is outside the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.","lastModifiedDate":"2023-09-12"},{"lineNumber":192,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":194,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"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":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08"},{"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":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"author":{"gitId":"-"},"content":"-----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-12"},{"lineNumber":217,"author":{"gitId":"kaiyi27"},"content":"**Add** | `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS r/RELATIONSHIP [t/TAG]…​` \u003cbr\u003e e.g., `add n/James Ho p/22224444 e/jamesho@example.com a/123, Clementi Rd, 1234665 r/client t/friend`","lastModifiedDate":"2024-03-24"},{"lineNumber":218,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":"**Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3`","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"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":221,"author":{"gitId":"-"},"content":"**Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake`","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":"**List** | `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"ibnu2651"},"content":"**Policy** | `policy INDEX po/POLICY_NAME`","lastModifiedDate":"2024-03-24"}],"authorContributionMap":{"kaiyi27":8,"ibnu2651":22,"-":194}},{"path":"docs/_markbind/layouts/default.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003chead-bottom\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003clink rel\u003d\"stylesheet\" href\u003d\"{{baseUrl}}/stylesheets/main.css\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c/head-bottom\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003cheader sticky\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cnavbar type\u003d\"dark\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":" \u003ca slot\u003d\"brand\" href\u003d\"{{baseUrl}}/index.html\" title\u003d\"Home\" class\u003d\"navbar-brand\"\u003eInsura-Connect\u003c/a\u003e","lastModifiedDate":"2024-02-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/index.html\" class\u003d\"nav-link\"\u003eHome\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/UserGuide.html\" class\u003d\"nav-link\"\u003eUser Guide\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/DeveloperGuide.html\" class\u003d\"nav-link\"\u003eDeveloper Guide\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/AboutUs.html\" class\u003d\"nav-link\"\u003eAbout Us\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":12,"author":{"gitId":"ibnu2651"},"content":" \u003cli\u003e\u003ca href\u003d\"https://github.com/AY2324S2-CS2103T-T13-3/tp\" target\u003d\"_blank\" class\u003d\"nav-link\"\u003e\u003cmd\u003e:fab-github:\u003c/md\u003e\u003c/a\u003e","lastModifiedDate":"2024-03-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cli slot\u003d\"right\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cform class\u003d\"navbar-form\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003csearchbar :data\u003d\"searchData\" placeholder\u003d\"Search\" :on-hit\u003d\"searchCallback\" menu-align-right\u003e\u003c/searchbar\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/form\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/navbar\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"\u003c/header\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"flex-body\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"site-nav\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"site-nav-top\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"fw-bold mb-2\" style\u003d\"font-size: 1.25rem;\"\u003eSite Map\u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003csite-nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"* [Home]({{ baseUrl }}/index.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"* [User Guide]({{ baseUrl }}/UserGuide.html) :expanded:","lastModifiedDate":"2023-09-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * [Quick Start]({{ baseUrl }}/UserGuide.html#quick-start)","lastModifiedDate":"2023-09-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * [Features]({{ baseUrl }}/UserGuide.html#features)","lastModifiedDate":"2023-09-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * [FAQ]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * [Command Summary]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":"* [Developer Guide]({{ baseUrl }}/DeveloperGuide.html) :expanded:","lastModifiedDate":"2023-09-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * [Acknowledgements]({{ baseUrl }}/DeveloperGuide.html#acknowledgements)","lastModifiedDate":"2023-09-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * [Setting Up]({{ baseUrl }}/DeveloperGuide.html#setting-up-getting-started)","lastModifiedDate":"2023-09-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * [Design]({{ baseUrl }}/DeveloperGuide.html#design)","lastModifiedDate":"2023-09-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * [Implementation]({{ baseUrl }}/DeveloperGuide.html#implementation)","lastModifiedDate":"2023-09-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * [Documentation, logging, testing, configuration, dev-ops]({{ baseUrl }}/DeveloperGuide.html#documentation-logging-testing-configuration-dev-ops)","lastModifiedDate":"2023-09-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * [Appendix: Requirements]({{ baseUrl }}/DeveloperGuide.html#appendix-requirements)","lastModifiedDate":"2023-09-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * [Appendix: Instructions for manual testing]({{ baseUrl }}/DeveloperGuide.html#appendix-instructions-for-manual-testing)","lastModifiedDate":"2023-09-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":"* Tutorials","lastModifiedDate":"2023-09-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * [Tracing code]({{ baseUrl }}/tutorials/TracingCode.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * [Adding a command]({{ baseUrl }}/tutorials/AddRemark.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * [Removing Fields]({{ baseUrl }}/tutorials/RemovingFields.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [About Us]({{ baseUrl }}/AboutUs.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/site-nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cdiv id\u003d\"content-wrapper\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" {{ content }}","lastModifiedDate":"2023-09-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"page-nav\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cpage-nav /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003cscroll-top-button\u003e\u003c/scroll-top-button\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":"\u003cfooter\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003c!-- Support MarkBind by including a link to us on your landing page! --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"text-center\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u003csmall\u003e[\u003cmd\u003e**Powered by**\u003c/md\u003e \u003cimg src\u003d\"https://markbind.org/favicon.ico\" width\u003d\"30\"\u003e {{MarkBind}}, generated on {{timestamp}}]\u003c/small\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003c/footer\u003e","lastModifiedDate":"2023-09-12"}],"authorContributionMap":{"ibnu2651":1,"-":66}},{"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":"-"},"content":"AddressBook *-right-\u003e \"1\" UniquePersonList","lastModifiedDate":"2019-07-30"},{"lineNumber":8,"author":{"gitId":"-"},"content":"AddressBook *-right-\u003e \"1\" UniqueTagList","lastModifiedDate":"2019-07-30"},{"lineNumber":9,"author":{"gitId":"-"},"content":"UniqueTagList -[hidden]down- UniquePersonList","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"UniqueTagList -[hidden]down- UniquePersonList","lastModifiedDate":"2019-07-03"},{"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":"-"},"content":"UniquePersonList -right-\u003e Person","lastModifiedDate":"2021-07-31"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"Person -up-\u003e \"*\" Tag","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Person *--\u003e Name","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Person *--\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Person *--\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Person *--\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"kaiyi27"},"content":"Person *--\u003e Policy","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"kaiyi27"},"content":"Person *--\u003e Relationship","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"kaiyi27":2,"-":21}},{"path":"docs/diagrams/EditSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"kaiyi27"},"content":"@startuml","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"kaiyi27"},"content":"!include style.puml","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"kaiyi27"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"kaiyi27"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"kaiyi27"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"kaiyi27"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"kaiyi27"},"content":"participant \":EditCommandParser\" as EditCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"kaiyi27"},"content":"participant \"e:EditCommand\" as EditCommand LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"kaiyi27"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"kaiyi27"},"content":"participant \"editedPerson:Person\" as Person LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"kaiyi27"},"content":"end box","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"kaiyi27"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"kaiyi27"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"kaiyi27"},"content":"end box","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"kaiyi27"},"content":"[-\u003e LogicManager : execute(\"edit 1 n/Kevin\")","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"kaiyi27"},"content":"activate LogicManager","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"kaiyi27"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"edit 1 n/Kevin\")","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"kaiyi27"},"content":"activate AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"kaiyi27"},"content":"create EditCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"kaiyi27"},"content":"AddressBookParser -\u003e EditCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"kaiyi27"},"content":"activate EditCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"kaiyi27"},"content":"EditCommandParser --\u003e AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"kaiyi27"},"content":"deactivate EditCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"kaiyi27"},"content":"AddressBookParser -\u003e EditCommandParser : parse(\"1 n/Kevin\")","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"kaiyi27"},"content":"activate EditCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"kaiyi27"},"content":"create EditCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"kaiyi27"},"content":"EditCommandParser -\u003e EditCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"kaiyi27"},"content":"activate EditCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"kaiyi27"},"content":"EditCommand --\u003e EditCommandParser :","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"kaiyi27"},"content":"deactivate EditCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"kaiyi27"},"content":"EditCommandParser --\u003e AddressBookParser : e","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"kaiyi27"},"content":"deactivate EditCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"kaiyi27"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"kaiyi27"},"content":"EditCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"kaiyi27"},"content":"destroy EditCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"kaiyi27"},"content":"AddressBookParser --\u003e LogicManager : e","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"kaiyi27"},"content":"deactivate AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"kaiyi27"},"content":"LogicManager -\u003e EditCommand : execute(m)","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"kaiyi27"},"content":"activate EditCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"kaiyi27"},"content":"create Person","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"kaiyi27"},"content":"EditCommand -\u003e Person :","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"kaiyi27"},"content":"activate Person","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"kaiyi27"},"content":"Person --\u003e EditCommand :","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"kaiyi27"},"content":"deactivate Person","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"kaiyi27"},"content":"EditCommand -\u003e Model : setPerson(1, editedPerson)","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"kaiyi27"},"content":"activate Model","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"kaiyi27"},"content":"Model --\u003e EditCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"kaiyi27"},"content":"deactivate Model","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"kaiyi27"},"content":"create CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"kaiyi27"},"content":"EditCommand -\u003e CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"kaiyi27"},"content":"activate CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"kaiyi27"},"content":"destroy Person","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"kaiyi27"},"content":"CommandResult --\u003e EditCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"kaiyi27"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"kaiyi27"},"content":"EditCommand --\u003e LogicManager : r","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"kaiyi27"},"content":"deactivate EditCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"kaiyi27"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"kaiyi27"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"kaiyi27"},"content":"@enduml","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"kaiyi27":80}},{"path":"docs/diagrams/FindSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Shauryan123"},"content":"@startuml","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"Shauryan123"},"content":"!include style.puml","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"Shauryan123"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"Shauryan123"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"Shauryan123"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"Shauryan123"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"Shauryan123"},"content":"participant \":FindCommandParser\" as FindCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"Shauryan123"},"content":"participant \"d:FindCommand\" as FindCommand LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"Shauryan123"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"Shauryan123"},"content":"end box","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"Shauryan123"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"Shauryan123"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"Shauryan123"},"content":"end box","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"Shauryan123"},"content":"[-\u003e LogicManager : execute(\"find n/Alice r/Client t/friend\")","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"Shauryan123"},"content":"activate LogicManager","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"Shauryan123"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"find n/Alice r/Client t/friend\")","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"Shauryan123"},"content":"activate AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"Shauryan123"},"content":"create FindCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"Shauryan123"},"content":"AddressBookParser -\u003e FindCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"Shauryan123"},"content":"activate FindCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"Shauryan123"},"content":"FindCommandParser --\u003e AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"Shauryan123"},"content":"deactivate FindCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"Shauryan123"},"content":"AddressBookParser -\u003e FindCommandParser : parse(\"n/Alice r/Client t/friend\")","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"Shauryan123"},"content":"activate FindCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"Shauryan123"},"content":"create FindCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"Shauryan123"},"content":"FindCommandParser -\u003e FindCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"Shauryan123"},"content":"activate FindCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"Shauryan123"},"content":"FindCommand --\u003e FindCommandParser :","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"Shauryan123"},"content":"deactivate FindCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"Shauryan123"},"content":"FindCommandParser --\u003e AddressBookParser : d","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"Shauryan123"},"content":"deactivate FindCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"Shauryan123"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"Shauryan123"},"content":"FindCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"Shauryan123"},"content":"destroy FindCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"Shauryan123"},"content":"AddressBookParser --\u003e LogicManager : d","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"Shauryan123"},"content":"deactivate AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"Shauryan123"},"content":"LogicManager -\u003e FindCommand : execute(m)","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"Shauryan123"},"content":"activate FindCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"Shauryan123"},"content":"FindCommand -\u003e Model : updateFilteredPersonList(p)","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"Shauryan123"},"content":"activate Model","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"Shauryan123"},"content":"Model --\u003e FindCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"Shauryan123"},"content":"deactivate Model","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"Shauryan123"},"content":"create CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"Shauryan123"},"content":"FindCommand -\u003e CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"Shauryan123"},"content":"activate CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"Shauryan123"},"content":"CommandResult --\u003e FindCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"Shauryan123"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"Shauryan123"},"content":"FindCommand --\u003e LogicManager : r","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"Shauryan123"},"content":"deactivate FindCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"Shauryan123"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"Shauryan123"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"Shauryan123"},"content":"@enduml","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"Shauryan123":70}},{"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":"-"},"content":"Class UniquePersonList","lastModifiedDate":"2021-07-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Class Person","lastModifiedDate":"2019-07-03"},{"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":"-"},"content":"Class Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"Class Tag","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"kaiyi27"},"content":"Class Policy","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"kaiyi27"},"content":"Class Relationship","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":"AddressBook *--\u003e \"1\" UniquePersonList","lastModifiedDate":"2019-07-30"},{"lineNumber":41,"author":{"gitId":"-"},"content":"UniquePersonList --\u003e \"~* all\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":42,"author":{"gitId":"-"},"content":"Person *--\u003e Name","lastModifiedDate":"2019-07-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"Person *--\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"Person *--\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"Person *--\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"kaiyi27"},"content":"Person *--\u003e Policy","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"kaiyi27"},"content":"Person *--\u003e Relationship","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":"Person *--\u003e \"*\" Tag","lastModifiedDate":"2019-07-03"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":50,"author":{"gitId":"-"},"content":"Person -[hidden]up--\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"UniquePersonList -[hidden]right-\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":"Name -[hidden]right-\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":54,"author":{"gitId":"-"},"content":"Phone -[hidden]right-\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":55,"author":{"gitId":"-"},"content":"Address -[hidden]right-\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":"ModelManager --\u003e \"~* filtered\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":58,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"kaiyi27":4,"-":54}},{"path":"docs/diagrams/PolicySequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"ibnu2651"},"content":"@startuml","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"ibnu2651"},"content":"!include style.puml","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"ibnu2651"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"ibnu2651"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"ibnu2651"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"ibnu2651"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"ibnu2651"},"content":"participant \":PolicyCommandParser\" as PolicyCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"ibnu2651"},"content":"participant \"po:PolicyCommand\" as PolicyCommand LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"ibnu2651"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"ibnu2651"},"content":"participant \"p:Person\" as Person LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"ibnu2651"},"content":"end box","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"ibnu2651"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"ibnu2651"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"ibnu2651"},"content":"end box","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"ibnu2651"},"content":"[-\u003e LogicManager : execute(\"policy 1 po/Policy XYZ\")","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"ibnu2651"},"content":"activate LogicManager","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"ibnu2651"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"policy 1 po/Policy XYZ\")","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"ibnu2651"},"content":"activate AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"ibnu2651"},"content":"create PolicyCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"ibnu2651"},"content":"AddressBookParser -\u003e PolicyCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"ibnu2651"},"content":"activate PolicyCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"ibnu2651"},"content":"PolicyCommandParser --\u003e AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"ibnu2651"},"content":"deactivate PolicyCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"ibnu2651"},"content":"AddressBookParser -\u003e PolicyCommandParser : parse(\"1 po/Policy XYZ\")","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"ibnu2651"},"content":"activate PolicyCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"ibnu2651"},"content":"create PolicyCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"ibnu2651"},"content":"PolicyCommandParser -\u003e PolicyCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"ibnu2651"},"content":"activate PolicyCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"ibnu2651"},"content":"PolicyCommand --\u003e PolicyCommandParser :","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"ibnu2651"},"content":"deactivate PolicyCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"ibnu2651"},"content":"PolicyCommandParser --\u003e AddressBookParser : po","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"ibnu2651"},"content":"deactivate PolicyCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"ibnu2651"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"ibnu2651"},"content":"PolicyCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"ibnu2651"},"content":"destroy PolicyCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"ibnu2651"},"content":"AddressBookParser --\u003e LogicManager : po","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"ibnu2651"},"content":"deactivate AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"ibnu2651"},"content":"LogicManager -\u003e PolicyCommand : execute(m)","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"ibnu2651"},"content":"activate PolicyCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"ibnu2651"},"content":"create Person","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"ibnu2651"},"content":"PolicyCommand -\u003e Person :","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"ibnu2651"},"content":"activate Person","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"ibnu2651"},"content":"Person --\u003e PolicyCommand :","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"ibnu2651"},"content":"deactivate Person","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"ibnu2651"},"content":"PolicyCommand -\u003e Model : setPerson(1, p)","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"ibnu2651"},"content":"activate Model","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"ibnu2651"},"content":"Model --\u003e PolicyCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"ibnu2651"},"content":"deactivate Model","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"ibnu2651"},"content":"create CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"ibnu2651"},"content":"PolicyCommand -\u003e CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"ibnu2651"},"content":"activate CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"ibnu2651"},"content":"destroy Person","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"ibnu2651"},"content":"CommandResult --\u003e PolicyCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"ibnu2651"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"ibnu2651"},"content":"PolicyCommand --\u003e LogicManager : r","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"ibnu2651"},"content":"deactivate PolicyCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"ibnu2651"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"ibnu2651"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"ibnu2651"},"content":"@enduml","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"ibnu2651":79}},{"path":"docs/diagrams/RedoSequenceDiagram-Logic.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"justincred"},"content":"@startuml","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"justincred"},"content":"!include style.puml","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"justincred"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"justincred"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"justincred"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"justincred"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"justincred"},"content":"participant \"r:RedoCommand\" as RedoCommand LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"justincred"},"content":"end box","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"justincred"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"justincred"},"content":"participant \":Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"justincred"},"content":"end box","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"justincred"},"content":"[-\u003e LogicManager : execute(redo)","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"justincred"},"content":"activate LogicManager","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"justincred"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(redo)","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"justincred"},"content":"activate AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"justincred"},"content":"create RedoCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"justincred"},"content":"AddressBookParser -\u003e RedoCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"justincred"},"content":"activate RedoCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"justincred"},"content":"RedoCommand --\u003e AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"justincred"},"content":"deactivate RedoCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"justincred"},"content":"AddressBookParser --\u003e LogicManager : r","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"justincred"},"content":"deactivate AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"justincred"},"content":"LogicManager -\u003e RedoCommand : execute(model)","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"justincred"},"content":"activate RedoCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"justincred"},"content":"RedoCommand -\u003e Model : redoAddressBook()","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"justincred"},"content":"activate Model","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"justincred"},"content":"Model --\u003e RedoCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"justincred"},"content":"deactivate Model","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"justincred"},"content":"RedoCommand -\u003e Model : updateFilteredPersonList(show_all)","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"justincred"},"content":"activate Model","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"justincred"},"content":"Model --\u003e RedoCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"justincred"},"content":"deactivate Model","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"justincred"},"content":"RedoCommand --\u003e LogicManager : result","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"justincred"},"content":"deactivate RedoCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"justincred"},"content":"RedoCommand -[hidden]-\u003e LogicManager : result","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"justincred"},"content":"destroy RedoCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"justincred"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"justincred"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"justincred"},"content":"@enduml","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"justincred":52}},{"path":"docs/diagrams/UndoRedoState4.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam ClassFontColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam ClassBorderColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"skinparam ClassBackgroundColor #FFFFAA","lastModifiedDate":"2023-07-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"title After command \"list\"","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"package States \u003c\u003crectangle\u003e\u003e {","lastModifiedDate":"2019-07-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":" class State1 as \"\u003cu\u003eab0:AddressBook\u003c/u\u003e\"","lastModifiedDate":"2023-07-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":" class State2 as \"\u003cu\u003eab1:AddressBook\u003c/u\u003e\"","lastModifiedDate":"2023-07-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":" class State3 as \"\u003cu\u003eab2:AddressBook\u003c/u\u003e\"","lastModifiedDate":"2023-07-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"State1 -[hidden]right-\u003e State2","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"State2 -[hidden]right-\u003e State3","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"class Pointer as \"Current State\" #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"Pointer -up-\u003e State2","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"@end","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"kaiyi27":1,"-":21}},{"path":"docs/diagrams/UndoSequenceDiagram-Logic.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 \"u:UndoCommand\" as UndoCommand LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"participant \":Model\" as Model MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"[-\u003e LogicManager : execute(undo)","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"activate LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(undo)","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"activate AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"create UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"AddressBookParser -\u003e UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"activate UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"UndoCommand --\u003e AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":"deactivate UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"AddressBookParser --\u003e LogicManager : u","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"deactivate AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"LogicManager -\u003e UndoCommand : execute()","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"activate UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"UndoCommand -\u003e Model : undoAddressBook()","lastModifiedDate":"2019-07-03"},{"lineNumber":34,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":"activate Model","lastModifiedDate":"2019-07-03"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":37,"author":{"gitId":"-"},"content":"Model --\u003e UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"deactivate Model","lastModifiedDate":"2019-07-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":40,"author":{"gitId":"justincred"},"content":"UndoCommand -\u003e Model : updateFilteredPersonList(show_all)","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"justincred"},"content":"activate Model","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"justincred"},"content":"Model --\u003e UndoCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"justincred"},"content":"deactivate Model","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":"UndoCommand --\u003e LogicManager : result","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"deactivate UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":47,"author":{"gitId":"-"},"content":"UndoCommand -[hidden]-\u003e LogicManager : result","lastModifiedDate":"2019-07-03"},{"lineNumber":48,"author":{"gitId":"-"},"content":"destroy UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":50,"author":{"gitId":"-"},"content":"[\u003c--LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"deactivate LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":52,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"justincred":6,"-":46}},{"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":"2024-03-17"},{"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":"2024-03-17"},{"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":"Shauryan123"},"content":"import seedu.address.storage.InsuraConnectBookStorage;","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"Shauryan123"},"content":"import seedu.address.storage.JsonInsuraConnectBookStorage;","lastModifiedDate":"2024-03-16"},{"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":"-"},"content":" public static final Version VERSION \u003d new Version(0, 2, 2, true);","lastModifiedDate":"2023-08-21"},{"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":"ibnu2651"},"content":" InsuraConnectBookStorage insuraConnectBookStorage \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"ibnu2651"},"content":" new JsonInsuraConnectBookStorage(userPrefs.getAddressBookFilePath());","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"Shauryan123"},"content":" storage \u003d new StorageManager(insuraConnectBookStorage, userPrefsStorage);","lastModifiedDate":"2024-03-16"},{"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":"-"},"content":" logger.info(\"Using data file : \" + storage.getAddressBookFilePath());","lastModifiedDate":"2023-07-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":79,"author":{"gitId":"-"},"content":" Optional\u003cReadOnlyAddressBook\u003e addressBookOptional;","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook initialData;","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":" addressBookOptional \u003d storage.readAddressBook();","lastModifiedDate":"2016-09-25"},{"lineNumber":83,"author":{"gitId":"-"},"content":" if (!addressBookOptional.isPresent()) {","lastModifiedDate":"2016-09-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":" logger.info(\"Creating a new data file \" + storage.getAddressBookFilePath()","lastModifiedDate":"2023-05-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":" + \" populated with a sample AddressBook.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":87,"author":{"gitId":"-"},"content":" initialData \u003d addressBookOptional.orElseGet(SampleDataUtil::getSampleAddressBook);","lastModifiedDate":"2016-12-20"},{"lineNumber":88,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":" logger.warning(\"Data file at \" + storage.getAddressBookFilePath() + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" + \" Will be starting with an empty AddressBook.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":" initialData \u003d new AddressBook();","lastModifiedDate":"2024-03-17"},{"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":"2016-09-25"},{"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":"-"},"content":" if (!configOptional.isPresent()) {","lastModifiedDate":"2023-01-03"},{"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":"-"},"content":" if (!prefsOptional.isPresent()) {","lastModifiedDate":"2023-01-03"},{"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":"-"},"content":" logger.info(\"Starting AddressBook \" + MainApp.VERSION);","lastModifiedDate":"2016-09-29"},{"lineNumber":175,"author":{"gitId":"-"},"content":" ui.start(primaryStage);","lastModifiedDate":"2016-09-25"},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":179,"author":{"gitId":"-"},"content":" public void stop() {","lastModifiedDate":"2016-08-08"},{"lineNumber":180,"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":181,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":182,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(model.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":183,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":184,"author":{"gitId":"-"},"content":" logger.severe(\"Failed to save preferences \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":187,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"Shauryan123":3,"ibnu2651":2,"-":182}},{"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":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":23,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"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":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"kaiyi27"},"content":" .append(\"; Relationship: \")","lastModifiedDate":"2024-03-10"},{"lineNumber":49,"author":{"gitId":"kaiyi27"},"content":" .append(person.getRelationship())","lastModifiedDate":"2024-03-10"},{"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":"-"},"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":{"Shauryan123":2,"kaiyi27":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":"-"},"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":"kaiyi27"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_RELATIONSHIP;","lastModifiedDate":"2024-03-10"},{"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":"Shauryan123"},"content":" + PREFIX_RELATIONSHIP + \"RELATIONSHIP \"","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":37,"author":{"gitId":"Shauryan123"},"content":" + PREFIX_RELATIONSHIP + \"client \"","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2017-05-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"owesMoney\";","lastModifiedDate":"2017-05-09"},{"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":"justincred"},"content":" model.commitAddressBook();","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return true;","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":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"Shauryan123":2,"kaiyi27":1,"justincred":1,"-":84}},{"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":"-"},"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":"justincred"},"content":" model.commitAddressBook();","lastModifiedDate":"2024-03-16"},{"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":{"justincred":1,"-":23}},{"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":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Person: %1$s\";","lastModifiedDate":"2016-08-24"},{"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":"justincred"},"content":" model.commitAddressBook();","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete)));","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (!(other instanceof DeleteCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return targetIndex.equals(otherDeleteCommand.targetIndex);","lastModifiedDate":"2023-07-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"justincred":1,"-":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":"-"},"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":"kaiyi27"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_RELATIONSHIP;","lastModifiedDate":"2024-03-10"},{"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":"-"},"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":"ibnu2651"},"content":"import seedu.address.model.person.Policy;","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"ibnu2651"},"content":"import seedu.address.model.person.Relationship;","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26"},{"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":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the person identified \"","lastModifiedDate":"2016-12-26"},{"lineNumber":42,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06"},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06"},{"lineNumber":46,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":49,"author":{"gitId":"kaiyi27"},"content":" + \"[\" + PREFIX_RELATIONSHIP + \"RELATIONSHIP] \"","lastModifiedDate":"2024-03-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":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":59,"author":{"gitId":"kaiyi27"},"content":" public static final String MESSAGE_CANNOT_BE_EDIT \u003d \"Relationship is not allowed to be edited.\";","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25"},{"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":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25"},{"lineNumber":69,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25"},{"lineNumber":70,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25"},{"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":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","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":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":89,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":92,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":93,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":94,"author":{"gitId":"justincred"},"content":" model.commitAddressBook();","lastModifiedDate":"2024-03-16"},{"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":"ibnu2651"},"content":" Policy updatedPolicy \u003d personToEdit.getPolicy();","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"kaiyi27"},"content":" Relationship updatedRelationship \u003d personToEdit.getRelationship();","lastModifiedDate":"2024-03-21"},{"lineNumber":111,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2017-06-21"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":113,"author":{"gitId":"ibnu2651"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedRelationship,","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"ibnu2651"},"content":" updatedPolicy, updatedTags);","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-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":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13"},{"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":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23"},{"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":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26"},{"lineNumber":144,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26"},{"lineNumber":145,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":146,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26"},{"lineNumber":147,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21"},{"lineNumber":148,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":149,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":150,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21"},{"lineNumber":151,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":153,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":155,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":156,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11"},{"lineNumber":157,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":158,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":159,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26"},{"lineNumber":160,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15"},{"lineNumber":161,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15"},{"lineNumber":162,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15"},{"lineNumber":163,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15"},{"lineNumber":164,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":167,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":168,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26"},{"lineNumber":169,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":170,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26"},{"lineNumber":171,"author":{"gitId":"-"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, tags);","lastModifiedDate":"2024-03-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 void setName(Name name) {","lastModifiedDate":"2017-06-21"},{"lineNumber":175,"author":{"gitId":"-"},"content":" this.name \u003d 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 Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":179,"author":{"gitId":"-"},"content":" return Optional.ofNullable(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 void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21"},{"lineNumber":183,"author":{"gitId":"-"},"content":" this.phone \u003d 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 Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26"},{"lineNumber":187,"author":{"gitId":"-"},"content":" return Optional.ofNullable(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 void setEmail(Email email) {","lastModifiedDate":"2017-06-21"},{"lineNumber":191,"author":{"gitId":"-"},"content":" this.email \u003d 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 Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":195,"author":{"gitId":"-"},"content":" return Optional.ofNullable(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 void setAddress(Address address) {","lastModifiedDate":"2017-06-21"},{"lineNumber":199,"author":{"gitId":"-"},"content":" this.address \u003d 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":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26"},{"lineNumber":203,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21"},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":205,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":206,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11"},{"lineNumber":207,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":208,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":209,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21"},{"lineNumber":210,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11"},{"lineNumber":211,"author":{"gitId":"-"},"content":" }","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":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11"},{"lineNumber":215,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11"},{"lineNumber":216,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11"},{"lineNumber":217,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":218,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":219,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11"},{"lineNumber":220,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":222,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":223,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":224,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":225,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":226,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":228,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":229,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05"},{"lineNumber":230,"author":{"gitId":"-"},"content":" return false;","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":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":234,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":235,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":236,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":237,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":238,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags);","lastModifiedDate":"2023-07-13"},{"lineNumber":239,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":252,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"kaiyi27":5,"ibnu2651":6,"justincred":1,"-":240}},{"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":"ibnu2651"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-18"},{"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-07-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":10,"author":{"gitId":"Shauryan123"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-16"},{"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":"kaiyi27"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all persons whose names, relationships, policy \"","lastModifiedDate":"2024-03-24"},{"lineNumber":21,"author":{"gitId":"ibnu2651"},"content":" + \"or tags contain any of \"","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \"the specified keywords (case-insensitive) and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2018-04-01"},{"lineNumber":23,"author":{"gitId":"ibnu2651"},"content":" + \"Parameters: KEYWORD_TYPE/KEYWORD [MORE_KEYWORDS]...\\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"ibnu2651"},"content":" + \"Example: \" + COMMAND_WORD + \" n/alice n/bob\";","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":26,"author":{"gitId":"Shauryan123"},"content":" private final Predicate\u003cPerson\u003e predicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"Shauryan123"},"content":" public FindCommand(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(predicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" return new CommandResult(","lastModifiedDate":"2018-04-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":" String.format(Messages.MESSAGE_PERSONS_LISTED_OVERVIEW, model.getFilteredPersonList().size()));","lastModifiedDate":"2018-04-01"},{"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":"Shauryan123"},"content":" public Predicate\u003cPerson\u003e getPredicate() {","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"Shauryan123"},"content":" return predicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"Shauryan123":7,"kaiyi27":1,"ibnu2651":5,"-":52}},{"path":"src/main/java/seedu/address/logic/commands/PolicyCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ibnu2651"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"ibnu2651"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"ibnu2651"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_POLICY;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"ibnu2651"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"ibnu2651"},"content":"import java.util.List;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"ibnu2651"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"ibnu2651"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"ibnu2651"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"ibnu2651"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"ibnu2651"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"ibnu2651"},"content":"import seedu.address.model.person.Policy;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"ibnu2651"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"ibnu2651"},"content":" * Changes the policy of an existing person in the address book.","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"ibnu2651"},"content":"public class PolicyCommand extends Command {","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"ibnu2651"},"content":" public static final String COMMAND_WORD \u003d \"policy\";","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"ibnu2651"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the policy of the person identified \"","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"ibnu2651"},"content":" + \"by the index number used in the last person listing. \"","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"ibnu2651"},"content":" + \"Existing policy will be overwritten by the input.\\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"ibnu2651"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"ibnu2651"},"content":" + PREFIX_POLICY + \"[POLICY]\\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"ibnu2651"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"ibnu2651"},"content":" + PREFIX_POLICY + \"Policy XYZ\";","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"ibnu2651"},"content":" public static final String MESSAGE_ADD_POLICY_SUCCESS \u003d \"Added policy to Person: %1$s\";","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"ibnu2651"},"content":" public static final String MESSAGE_DELETE_POLICY_SUCCESS \u003d \"Removed policy from Person: %1$s\";","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"ibnu2651"},"content":" public static final String MESSAGE_PERSON_NOT_CLIENT_FAILURE \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"ibnu2651"},"content":" \"Invalid person. Only clients can be assigned a policy\";","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"ibnu2651"},"content":" private final Index index;","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"ibnu2651"},"content":" private final Policy policy;","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"ibnu2651"},"content":" * @param index of the person in the filtered person list to edit the policy","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"ibnu2651"},"content":" * @param policy of the person to be updated to","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"ibnu2651"},"content":" public PolicyCommand(Index index, Policy policy) {","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"ibnu2651"},"content":" requireAllNonNull(index, policy);","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"ibnu2651"},"content":" this.index \u003d index;","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"ibnu2651"},"content":" this.policy \u003d policy;","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"ibnu2651"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"ibnu2651"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"ibnu2651"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"ibnu2651"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"ibnu2651"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"ibnu2651"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"ibnu2651"},"content":" if (!personToEdit.isClient()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"ibnu2651"},"content":" throw new CommandException(MESSAGE_PERSON_NOT_CLIENT_FAILURE);","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"ibnu2651"},"content":" Person editedPerson \u003d new Person(personToEdit.getName(), personToEdit.getPhone(), personToEdit.getEmail(),","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"ibnu2651"},"content":" personToEdit.getAddress(), personToEdit.getRelationship(), policy, personToEdit.getTags());","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"ibnu2651"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"ibnu2651"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"ibnu2651"},"content":" model.commitAddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"ibnu2651"},"content":" return new CommandResult(generateSuccessMessage(editedPerson));","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"ibnu2651"},"content":" * Generates a command execution success message based on whether the policy is added to or removed from","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"ibnu2651"},"content":" * {@code personToEdit}.","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"ibnu2651"},"content":" private String generateSuccessMessage(Person personToEdit) {","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"ibnu2651"},"content":" String message \u003d !policy.value.isEmpty() ? MESSAGE_ADD_POLICY_SUCCESS : MESSAGE_DELETE_POLICY_SUCCESS;","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"ibnu2651"},"content":" return String.format(message, Messages.format(personToEdit));","lastModifiedDate":"2024-03-23"},{"lineNumber":81,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"ibnu2651"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"ibnu2651"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"ibnu2651"},"content":" // short circuit if same object","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"ibnu2651"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-16"},{"lineNumber":87,"author":{"gitId":"ibnu2651"},"content":" return true;","lastModifiedDate":"2024-03-16"},{"lineNumber":88,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":89,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":90,"author":{"gitId":"ibnu2651"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-16"},{"lineNumber":91,"author":{"gitId":"ibnu2651"},"content":" if (!(other instanceof PolicyCommand)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":92,"author":{"gitId":"ibnu2651"},"content":" return false;","lastModifiedDate":"2024-03-16"},{"lineNumber":93,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":94,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":95,"author":{"gitId":"ibnu2651"},"content":" // state check","lastModifiedDate":"2024-03-16"},{"lineNumber":96,"author":{"gitId":"ibnu2651"},"content":" PolicyCommand e \u003d (PolicyCommand) other;","lastModifiedDate":"2024-03-16"},{"lineNumber":97,"author":{"gitId":"ibnu2651"},"content":" return index.equals(e.index)","lastModifiedDate":"2024-03-16"},{"lineNumber":98,"author":{"gitId":"ibnu2651"},"content":" \u0026\u0026 policy.equals(e.policy);","lastModifiedDate":"2024-03-16"},{"lineNumber":99,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":100,"author":{"gitId":"ibnu2651"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"ibnu2651":100}},{"path":"src/main/java/seedu/address/logic/commands/RedoCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"justincred"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"justincred"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"justincred"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"justincred"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"justincred"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"justincred"},"content":"import seedu.address.model.VersionedAddressBook;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"justincred"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"justincred"},"content":" * Reverts the {@code model}\u0027s address book to its previously undone state.","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"justincred"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"justincred"},"content":"public class RedoCommand extends Command {","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"justincred"},"content":" public static final String COMMAND_WORD \u003d \"redo\";","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"justincred"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Redo success!\";","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"justincred"},"content":" public static final String MESSAGE_FAILURE \u003d \"No more commands to redo!\";","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"justincred"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"justincred"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"justincred"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"justincred"},"content":" try {","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"justincred"},"content":" model.redoAddressBook();","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"justincred"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"justincred"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"justincred"},"content":" } catch (VersionedAddressBook.NoRedoableStateException e) {","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"justincred"},"content":" throw new CommandException(MESSAGE_FAILURE);","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"justincred"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"justincred"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"justincred"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"justincred":30}},{"path":"src/main/java/seedu/address/logic/commands/ScheduleMeetingCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Shauryan123"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-23"},{"lineNumber":2,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":3,"author":{"gitId":"Shauryan123"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-23"},{"lineNumber":4,"author":{"gitId":"kaiyi27"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MEETING_AGENDA;","lastModifiedDate":"2024-03-24"},{"lineNumber":5,"author":{"gitId":"Shauryan123"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MEETING_DATE;","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"Shauryan123"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MEETING_DURATION;","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"Shauryan123"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MEETING_NOTES;","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"kaiyi27"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MEETING_TIME;","lastModifiedDate":"2024-03-24"},{"lineNumber":9,"author":{"gitId":"Shauryan123"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"Shauryan123"},"content":"import java.util.List;","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"Shauryan123"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"Shauryan123"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-23"},{"lineNumber":15,"author":{"gitId":"Shauryan123"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-23"},{"lineNumber":16,"author":{"gitId":"Shauryan123"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"Shauryan123"},"content":"import seedu.address.model.person.Meeting;","lastModifiedDate":"2024-03-23"},{"lineNumber":18,"author":{"gitId":"Shauryan123"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"Shauryan123"},"content":"/**","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"Shauryan123"},"content":" * Schedules a meeting with an existing person in the address book.","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"Shauryan123"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"Shauryan123"},"content":"public class ScheduleMeetingCommand extends Command {","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"Shauryan123"},"content":" public static final String COMMAND_WORD \u003d \"schedule\";","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":27,"author":{"gitId":"Shauryan123"},"content":" public static final String MESSAGE_MEETING_SCHEDULED_SUCCESS \u003d \"Meeting scheduled successfully: %1$s\";","lastModifiedDate":"2024-03-24"},{"lineNumber":28,"author":{"gitId":"Shauryan123"},"content":" public static final String MESSAGE_MEETING_RESCHEDULED_SUCCESS \u003d \"Meeting rescheduled successfully: %1$s\";","lastModifiedDate":"2024-03-24"},{"lineNumber":29,"author":{"gitId":"Shauryan123"},"content":" public static final String MESSAGE_MEETING_CANCELED_SUCCESS \u003d \"Meeting canceled successfully: %1$s\";","lastModifiedDate":"2024-03-24"},{"lineNumber":30,"author":{"gitId":"Shauryan123"},"content":" public static final String MESSAGE_MEETING_OVERLAP \u003d \"Meeting cannot be scheduled due to overlapping times\";","lastModifiedDate":"2024-03-24"},{"lineNumber":31,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":32,"author":{"gitId":"Shauryan123"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Schedules a meeting with the person identified \"","lastModifiedDate":"2024-03-23"},{"lineNumber":33,"author":{"gitId":"Shauryan123"},"content":" + \"by the index number used in the last person listing. \"","lastModifiedDate":"2024-03-23"},{"lineNumber":34,"author":{"gitId":"Shauryan123"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2024-03-23"},{"lineNumber":35,"author":{"gitId":"Shauryan123"},"content":" + PREFIX_MEETING_DATE + \"[DATE] \"","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"Shauryan123"},"content":" + PREFIX_MEETING_TIME + \"[TIME] \"","lastModifiedDate":"2024-03-23"},{"lineNumber":37,"author":{"gitId":"Shauryan123"},"content":" + PREFIX_MEETING_DURATION + \"[DURATION in minutes] \"","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"Shauryan123"},"content":" + PREFIX_MEETING_AGENDA + \"[AGENDA] \"","lastModifiedDate":"2024-03-23"},{"lineNumber":39,"author":{"gitId":"Shauryan123"},"content":" + PREFIX_MEETING_NOTES + \"[NOTES]\\n\"","lastModifiedDate":"2024-03-23"},{"lineNumber":40,"author":{"gitId":"Shauryan123"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"Shauryan123"},"content":" + PREFIX_MEETING_DATE + \"2023-03-20 \"","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"Shauryan123"},"content":" + PREFIX_MEETING_TIME + \"14:00 \"","lastModifiedDate":"2024-03-23"},{"lineNumber":43,"author":{"gitId":"Shauryan123"},"content":" + PREFIX_MEETING_DURATION + \"60 \"","lastModifiedDate":"2024-03-23"},{"lineNumber":44,"author":{"gitId":"Shauryan123"},"content":" + PREFIX_MEETING_AGENDA + \"Discuss new policy \"","lastModifiedDate":"2024-03-23"},{"lineNumber":45,"author":{"gitId":"Shauryan123"},"content":" + PREFIX_MEETING_NOTES + \"Bring all necessary documents\";","lastModifiedDate":"2024-03-23"},{"lineNumber":46,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":47,"author":{"gitId":"Shauryan123"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Meeting scheduled with Person: %1$s\";","lastModifiedDate":"2024-03-23"},{"lineNumber":48,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":49,"author":{"gitId":"Shauryan123"},"content":" private final Index index;","lastModifiedDate":"2024-03-23"},{"lineNumber":50,"author":{"gitId":"Shauryan123"},"content":" private final Meeting meeting;","lastModifiedDate":"2024-03-23"},{"lineNumber":51,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":52,"author":{"gitId":"Shauryan123"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":53,"author":{"gitId":"Shauryan123"},"content":" * @param index of the person in the filtered person list to schedule the meeting with","lastModifiedDate":"2024-03-23"},{"lineNumber":54,"author":{"gitId":"Shauryan123"},"content":" * @param meeting details of the meeting to be scheduled","lastModifiedDate":"2024-03-23"},{"lineNumber":55,"author":{"gitId":"Shauryan123"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":56,"author":{"gitId":"Shauryan123"},"content":" public ScheduleMeetingCommand(Index index, Meeting meeting) {","lastModifiedDate":"2024-03-23"},{"lineNumber":57,"author":{"gitId":"Shauryan123"},"content":" requireAllNonNull(index, meeting);","lastModifiedDate":"2024-03-23"},{"lineNumber":58,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":59,"author":{"gitId":"Shauryan123"},"content":" this.index \u003d index;","lastModifiedDate":"2024-03-23"},{"lineNumber":60,"author":{"gitId":"Shauryan123"},"content":" this.meeting \u003d meeting;","lastModifiedDate":"2024-03-23"},{"lineNumber":61,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":62,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":63,"author":{"gitId":"Shauryan123"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":64,"author":{"gitId":"Shauryan123"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-23"},{"lineNumber":65,"author":{"gitId":"Shauryan123"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-23"},{"lineNumber":66,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":67,"author":{"gitId":"Shauryan123"},"content":" if (model.hasMeetingOverlap(this.meeting)) {","lastModifiedDate":"2024-03-24"},{"lineNumber":68,"author":{"gitId":"Shauryan123"},"content":" throw new CommandException(\"Meeting overlaps with existing meetings.\");","lastModifiedDate":"2024-03-24"},{"lineNumber":69,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":70,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":71,"author":{"gitId":"Shauryan123"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-23"},{"lineNumber":72,"author":{"gitId":"Shauryan123"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-23"},{"lineNumber":73,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":74,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":75,"author":{"gitId":"Shauryan123"},"content":" Person personToMeetOriginal \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-03-24"},{"lineNumber":76,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":77,"author":{"gitId":"Shauryan123"},"content":" // Create a copy of the original person and add the meeting to the copy","lastModifiedDate":"2024-03-24"},{"lineNumber":78,"author":{"gitId":"Shauryan123"},"content":" Person personToMeetUpdated \u003d personToMeetOriginal.getCopy();","lastModifiedDate":"2024-03-24"},{"lineNumber":79,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":80,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":81,"author":{"gitId":"Shauryan123"},"content":" System.out.println(personToMeetUpdated.getMeetings());","lastModifiedDate":"2024-03-24"},{"lineNumber":82,"author":{"gitId":"Shauryan123"},"content":" try {","lastModifiedDate":"2024-03-23"},{"lineNumber":83,"author":{"gitId":"Shauryan123"},"content":" personToMeetUpdated.addMeeting(this.meeting);","lastModifiedDate":"2024-03-24"},{"lineNumber":84,"author":{"gitId":"Shauryan123"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-03-23"},{"lineNumber":85,"author":{"gitId":"Shauryan123"},"content":" throw new CommandException(e.getMessage());","lastModifiedDate":"2024-03-23"},{"lineNumber":86,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":87,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":88,"author":{"gitId":"Shauryan123"},"content":" // Check for global meeting overlap","lastModifiedDate":"2024-03-24"},{"lineNumber":89,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":90,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":91,"author":{"gitId":"Shauryan123"},"content":" // Update the person in the model","lastModifiedDate":"2024-03-24"},{"lineNumber":92,"author":{"gitId":"Shauryan123"},"content":" model.setPerson(personToMeetOriginal, personToMeetUpdated);","lastModifiedDate":"2024-03-24"},{"lineNumber":93,"author":{"gitId":"Shauryan123"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-23"},{"lineNumber":94,"author":{"gitId":"Shauryan123"},"content":" model.commitAddressBook();","lastModifiedDate":"2024-03-23"},{"lineNumber":95,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":96,"author":{"gitId":"Shauryan123"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, personToMeetUpdated));","lastModifiedDate":"2024-03-24"},{"lineNumber":97,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":98,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":99,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":100,"author":{"gitId":"Shauryan123"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":101,"author":{"gitId":"Shauryan123"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-23"},{"lineNumber":102,"author":{"gitId":"Shauryan123"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-23"},{"lineNumber":103,"author":{"gitId":"Shauryan123"},"content":" return true;","lastModifiedDate":"2024-03-23"},{"lineNumber":104,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":105,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":106,"author":{"gitId":"Shauryan123"},"content":" if (!(other instanceof ScheduleMeetingCommand)) {","lastModifiedDate":"2024-03-23"},{"lineNumber":107,"author":{"gitId":"Shauryan123"},"content":" return false;","lastModifiedDate":"2024-03-23"},{"lineNumber":108,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":109,"author":{"gitId":"Shauryan123"},"content":" //to dist","lastModifiedDate":"2024-03-23"},{"lineNumber":110,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":111,"author":{"gitId":"Shauryan123"},"content":" ScheduleMeetingCommand e \u003d (ScheduleMeetingCommand) other;","lastModifiedDate":"2024-03-23"},{"lineNumber":112,"author":{"gitId":"Shauryan123"},"content":" return index.equals(e.index)","lastModifiedDate":"2024-03-23"},{"lineNumber":113,"author":{"gitId":"Shauryan123"},"content":" \u0026\u0026 meeting.equals(e.meeting);","lastModifiedDate":"2024-03-23"},{"lineNumber":114,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":115,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":116,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"}],"authorContributionMap":{"Shauryan123":114,"kaiyi27":2}},{"path":"src/main/java/seedu/address/logic/commands/UndoCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"kaiyi27"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-24"},{"lineNumber":2,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":3,"author":{"gitId":"kaiyi27"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-24"},{"lineNumber":4,"author":{"gitId":"kaiyi27"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-24"},{"lineNumber":5,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":6,"author":{"gitId":"kaiyi27"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-24"},{"lineNumber":7,"author":{"gitId":"kaiyi27"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-24"},{"lineNumber":8,"author":{"gitId":"kaiyi27"},"content":"import seedu.address.model.VersionedAddressBook;","lastModifiedDate":"2024-03-24"},{"lineNumber":9,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":10,"author":{"gitId":"kaiyi27"},"content":"/**","lastModifiedDate":"2024-03-24"},{"lineNumber":11,"author":{"gitId":"kaiyi27"},"content":" * Reverts the {@code model}\u0027s address book to its previous state.","lastModifiedDate":"2024-03-24"},{"lineNumber":12,"author":{"gitId":"kaiyi27"},"content":" */","lastModifiedDate":"2024-03-24"},{"lineNumber":13,"author":{"gitId":"kaiyi27"},"content":"public class UndoCommand extends Command {","lastModifiedDate":"2024-03-24"},{"lineNumber":14,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":15,"author":{"gitId":"kaiyi27"},"content":" public static final String COMMAND_WORD \u003d \"undo\";","lastModifiedDate":"2024-03-24"},{"lineNumber":16,"author":{"gitId":"kaiyi27"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Undo success!\";","lastModifiedDate":"2024-03-24"},{"lineNumber":17,"author":{"gitId":"kaiyi27"},"content":" public static final String MESSAGE_FAILURE \u003d \"Unable to undo!\";","lastModifiedDate":"2024-03-24"},{"lineNumber":18,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":19,"author":{"gitId":"kaiyi27"},"content":" @Override","lastModifiedDate":"2024-03-24"},{"lineNumber":20,"author":{"gitId":"kaiyi27"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-24"},{"lineNumber":21,"author":{"gitId":"kaiyi27"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-24"},{"lineNumber":22,"author":{"gitId":"kaiyi27"},"content":" try {","lastModifiedDate":"2024-03-24"},{"lineNumber":23,"author":{"gitId":"kaiyi27"},"content":" model.undoAddressBook();","lastModifiedDate":"2024-03-24"},{"lineNumber":24,"author":{"gitId":"kaiyi27"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-24"},{"lineNumber":25,"author":{"gitId":"kaiyi27"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2024-03-24"},{"lineNumber":26,"author":{"gitId":"kaiyi27"},"content":" } catch (VersionedAddressBook.NoUndoableStateException e) {","lastModifiedDate":"2024-03-24"},{"lineNumber":27,"author":{"gitId":"kaiyi27"},"content":" throw new CommandException(MESSAGE_FAILURE);","lastModifiedDate":"2024-03-24"},{"lineNumber":28,"author":{"gitId":"kaiyi27"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":29,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":30,"author":{"gitId":"kaiyi27"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":31,"author":{"gitId":"kaiyi27"},"content":"}","lastModifiedDate":"2024-03-24"}],"authorContributionMap":{"kaiyi27":31}},{"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":"-"},"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":"kaiyi27"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_RELATIONSHIP;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05"},{"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.person.Address;","lastModifiedDate":"2017-03-17"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-03-17"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-03-17"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-03-17"},{"lineNumber":21,"author":{"gitId":"ibnu2651"},"content":"import seedu.address.model.person.Policy;","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"ibnu2651"},"content":"import seedu.address.model.person.Relationship;","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":36,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":37,"author":{"gitId":"kaiyi27"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-03-10"},{"lineNumber":38,"author":{"gitId":"kaiyi27"},"content":" PREFIX_RELATIONSHIP, PREFIX_TAG);","lastModifiedDate":"2024-03-10"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":40,"author":{"gitId":"kaiyi27"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-03-10"},{"lineNumber":41,"author":{"gitId":"kaiyi27"},"content":" PREFIX_RELATIONSHIP) || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-03-10"},{"lineNumber":42,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":45,"author":{"gitId":"kaiyi27"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-03-10"},{"lineNumber":46,"author":{"gitId":"kaiyi27"},"content":" PREFIX_RELATIONSHIP);","lastModifiedDate":"2024-03-10"},{"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":"kaiyi27"},"content":" Relationship relationship \u003d ParserUtil.parseRelationship((argMultimap.getValue(PREFIX_RELATIONSHIP).get()));","lastModifiedDate":"2024-03-10"},{"lineNumber":52,"author":{"gitId":"ibnu2651"},"content":" Policy policy \u003d new Policy(\"\");","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":55,"author":{"gitId":"ibnu2651"},"content":" Person person \u003d new Person(name, phone, email, address, relationship, policy, tagList);","lastModifiedDate":"2024-03-17"},{"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":{"kaiyi27":8,"ibnu2651":4,"-":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":"2024-03-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2024-03-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2024-03-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-03-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2024-03-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2024-03-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2024-03-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-03-24"},{"lineNumber":20,"author":{"gitId":"kaiyi27"},"content":"import seedu.address.logic.commands.PolicyCommand;","lastModifiedDate":"2024-03-24"},{"lineNumber":21,"author":{"gitId":"kaiyi27"},"content":"import seedu.address.logic.commands.RedoCommand;","lastModifiedDate":"2024-03-24"},{"lineNumber":22,"author":{"gitId":"kaiyi27"},"content":"import seedu.address.logic.commands.ScheduleMeetingCommand;","lastModifiedDate":"2024-03-24"},{"lineNumber":23,"author":{"gitId":"kaiyi27"},"content":"import seedu.address.logic.commands.UndoCommand;","lastModifiedDate":"2024-03-24"},{"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":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":84,"author":{"gitId":"ibnu2651"},"content":" case PolicyCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"ibnu2651"},"content":" return new PolicyCommandParser().parse(arguments);","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":87,"author":{"gitId":"justincred"},"content":" case UndoCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-16"},{"lineNumber":88,"author":{"gitId":"justincred"},"content":" return new UndoCommand();","lastModifiedDate":"2024-03-16"},{"lineNumber":89,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":90,"author":{"gitId":"justincred"},"content":" case RedoCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-16"},{"lineNumber":91,"author":{"gitId":"justincred"},"content":" return new RedoCommand();","lastModifiedDate":"2024-03-16"},{"lineNumber":92,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":93,"author":{"gitId":"Shauryan123"},"content":" case ScheduleMeetingCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-23"},{"lineNumber":94,"author":{"gitId":"Shauryan123"},"content":" return new ScheduleMeetingCommandParser().parse(arguments);","lastModifiedDate":"2024-03-23"},{"lineNumber":95,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":96,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":97,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26"},{"lineNumber":99,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29"},{"lineNumber":100,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":104,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"Shauryan123":5,"kaiyi27":4,"ibnu2651":3,"justincred":6,"-":86}},{"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":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":79,"author":{"gitId":"Shauryan123"},"content":" /**","lastModifiedDate":"2024-03-24"},{"lineNumber":80,"author":{"gitId":"Shauryan123"},"content":" * Returns true if all the specified prefixes are present in the argument map.","lastModifiedDate":"2024-03-24"},{"lineNumber":81,"author":{"gitId":"Shauryan123"},"content":" *","lastModifiedDate":"2024-03-24"},{"lineNumber":82,"author":{"gitId":"Shauryan123"},"content":" * @param prefixes The prefixes to check for presence.","lastModifiedDate":"2024-03-24"},{"lineNumber":83,"author":{"gitId":"Shauryan123"},"content":" * @return True if all specified prefixes are present, otherwise false.","lastModifiedDate":"2024-03-24"},{"lineNumber":84,"author":{"gitId":"Shauryan123"},"content":" */","lastModifiedDate":"2024-03-24"},{"lineNumber":85,"author":{"gitId":"Shauryan123"},"content":" public boolean arePrefixesPresent(Prefix... prefixes) {","lastModifiedDate":"2024-03-24"},{"lineNumber":86,"author":{"gitId":"kaiyi27"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e","lastModifiedDate":"2024-03-24"},{"lineNumber":87,"author":{"gitId":"kaiyi27"},"content":" argMultimap.containsKey(prefix) \u0026\u0026 !getAllValues(prefix).isEmpty());","lastModifiedDate":"2024-03-24"},{"lineNumber":88,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":89,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-08"}],"authorContributionMap":{"Shauryan123":9,"kaiyi27":2,"-":78}},{"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":"-"},"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":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-16"},{"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":"-"},"content":" * Finds all zero-based prefix positions in the given arguments string.","lastModifiedDate":"2017-03-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * @param argsString Arguments string of the form: {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2017-03-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * @param prefixes Prefixes to find in the arguments string","lastModifiedDate":"2017-03-20"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @return List of zero-based prefix positions in the given arguments string","lastModifiedDate":"2017-03-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static List\u003cPrefixPosition\u003e findAllPrefixPositions(String argsString, Prefix... prefixes) {","lastModifiedDate":"2017-03-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return Arrays.stream(prefixes)","lastModifiedDate":"2018-01-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" .flatMap(prefix -\u003e findPrefixPositions(argsString, prefix).stream())","lastModifiedDate":"2018-01-21"},{"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":"-"},"content":" * {@see findAllPrefixPositions}","lastModifiedDate":"2017-03-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":48,"author":{"gitId":"-"},"content":" private static List\u003cPrefixPosition\u003e findPrefixPositions(String argsString, Prefix prefix) {","lastModifiedDate":"2017-03-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" List\u003cPrefixPosition\u003e positions \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2016-10-16"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":51,"author":{"gitId":"-"},"content":" int prefixPosition \u003d findPrefixPosition(argsString, prefix.getPrefix(), 0);","lastModifiedDate":"2017-05-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" while (prefixPosition !\u003d -1) {","lastModifiedDate":"2017-05-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" PrefixPosition extendedPrefix \u003d new PrefixPosition(prefix, prefixPosition);","lastModifiedDate":"2017-05-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" positions.add(extendedPrefix);","lastModifiedDate":"2016-10-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" prefixPosition \u003d findPrefixPosition(argsString, prefix.getPrefix(), prefixPosition);","lastModifiedDate":"2017-05-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return positions;","lastModifiedDate":"2016-10-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Returns the index of the first occurrence of {@code prefix} in","lastModifiedDate":"2017-05-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * {@code argsString} starting from index {@code fromIndex}. An occurrence","lastModifiedDate":"2017-05-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * is valid if there is a whitespace before {@code prefix}. Returns -1 if no","lastModifiedDate":"2017-05-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * such occurrence can be found.","lastModifiedDate":"2017-05-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * E.g if {@code argsString} \u003d \"e/hip/900\", {@code prefix} \u003d \"p/\" and","lastModifiedDate":"2017-05-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * {@code fromIndex} \u003d 0, this method returns -1 as there are no valid","lastModifiedDate":"2017-05-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * occurrences of \"p/\" with whitespace before it. However, if","lastModifiedDate":"2017-05-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * {@code argsString} \u003d \"e/hi p/900\", {@code prefix} \u003d \"p/\" and","lastModifiedDate":"2017-05-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * {@code fromIndex} \u003d 0, this method returns 5.","lastModifiedDate":"2017-05-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" private static int findPrefixPosition(String argsString, String prefix, int fromIndex) {","lastModifiedDate":"2017-05-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" int prefixIndex \u003d argsString.indexOf(\" \" + prefix, fromIndex);","lastModifiedDate":"2017-05-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return prefixIndex \u003d\u003d -1 ? -1","lastModifiedDate":"2017-05-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" : prefixIndex + 1; // +1 as offset for whitespace","lastModifiedDate":"2017-05-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Extracts prefixes and their argument values, and returns an {@code ArgumentMultimap} object that maps the","lastModifiedDate":"2017-03-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * extracted prefixes to their respective arguments. Prefixes are extracted based on their zero-based positions in","lastModifiedDate":"2017-03-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * {@code argsString}.","lastModifiedDate":"2017-03-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * @param argsString Arguments string of the form: {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2017-03-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * @param prefixPositions Zero-based positions of all prefixes in {@code argsString}","lastModifiedDate":"2017-03-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * @return ArgumentMultimap object that maps prefixes to their arguments","lastModifiedDate":"2017-03-08"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":88,"author":{"gitId":"-"},"content":" private static ArgumentMultimap extractArguments(String argsString, List\u003cPrefixPosition\u003e prefixPositions) {","lastModifiedDate":"2017-03-20"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":90,"author":{"gitId":"-"},"content":" // Sort by start position","lastModifiedDate":"2016-10-16"},{"lineNumber":91,"author":{"gitId":"-"},"content":" prefixPositions.sort((prefix1, prefix2) -\u003e prefix1.getStartPosition() - prefix2.getStartPosition());","lastModifiedDate":"2016-10-16"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":93,"author":{"gitId":"-"},"content":" // Insert a PrefixPosition to represent the preamble","lastModifiedDate":"2016-10-16"},{"lineNumber":94,"author":{"gitId":"-"},"content":" PrefixPosition preambleMarker \u003d new PrefixPosition(new Prefix(\"\"), 0);","lastModifiedDate":"2016-10-16"},{"lineNumber":95,"author":{"gitId":"-"},"content":" prefixPositions.add(0, preambleMarker);","lastModifiedDate":"2016-10-16"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":97,"author":{"gitId":"-"},"content":" // Add a dummy PrefixPosition to represent the end of the string","lastModifiedDate":"2016-10-16"},{"lineNumber":98,"author":{"gitId":"-"},"content":" PrefixPosition endPositionMarker \u003d new PrefixPosition(new Prefix(\"\"), argsString.length());","lastModifiedDate":"2016-10-16"},{"lineNumber":99,"author":{"gitId":"-"},"content":" prefixPositions.add(endPositionMarker);","lastModifiedDate":"2016-10-16"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":101,"author":{"gitId":"-"},"content":" // Map prefixes to their argument values (if any)","lastModifiedDate":"2017-03-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d new ArgumentMultimap();","lastModifiedDate":"2017-03-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" for (int i \u003d 0; i \u003c prefixPositions.size() - 1; i++) {","lastModifiedDate":"2016-10-16"},{"lineNumber":104,"author":{"gitId":"-"},"content":" // Extract and store prefixes and their arguments","lastModifiedDate":"2017-03-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Prefix argPrefix \u003d prefixPositions.get(i).getPrefix();","lastModifiedDate":"2017-03-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":" String argValue \u003d extractArgumentValue(argsString, prefixPositions.get(i), prefixPositions.get(i + 1));","lastModifiedDate":"2016-10-16"},{"lineNumber":107,"author":{"gitId":"-"},"content":" argMultimap.put(argPrefix, argValue);","lastModifiedDate":"2017-03-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":110,"author":{"gitId":"-"},"content":" return argMultimap;","lastModifiedDate":"2017-03-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":113,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * Returns the trimmed value of the argument in the arguments string specified by {@code currentPrefixPosition}.","lastModifiedDate":"2017-03-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * The end position of the value is determined by {@code nextPrefixPosition}.","lastModifiedDate":"2017-03-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":117,"author":{"gitId":"-"},"content":" private static String extractArgumentValue(String argsString,","lastModifiedDate":"2017-03-20"},{"lineNumber":118,"author":{"gitId":"-"},"content":" PrefixPosition currentPrefixPosition,","lastModifiedDate":"2016-10-16"},{"lineNumber":119,"author":{"gitId":"-"},"content":" PrefixPosition nextPrefixPosition) {","lastModifiedDate":"2016-10-16"},{"lineNumber":120,"author":{"gitId":"-"},"content":" Prefix prefix \u003d currentPrefixPosition.getPrefix();","lastModifiedDate":"2016-10-16"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":122,"author":{"gitId":"-"},"content":" int valueStartPos \u003d currentPrefixPosition.getStartPosition() + prefix.getPrefix().length();","lastModifiedDate":"2016-10-16"},{"lineNumber":123,"author":{"gitId":"-"},"content":" String value \u003d argsString.substring(valueStartPos, nextPrefixPosition.getStartPosition());","lastModifiedDate":"2016-10-16"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":125,"author":{"gitId":"-"},"content":" return value.trim();","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":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":129,"author":{"gitId":"-"},"content":" * Represents a prefix\u0027s position in an arguments string.","lastModifiedDate":"2017-03-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":131,"author":{"gitId":"-"},"content":" private static class PrefixPosition {","lastModifiedDate":"2017-03-20"},{"lineNumber":132,"author":{"gitId":"-"},"content":" private int startPosition;","lastModifiedDate":"2016-10-19"},{"lineNumber":133,"author":{"gitId":"-"},"content":" private final Prefix prefix;","lastModifiedDate":"2016-10-19"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":135,"author":{"gitId":"-"},"content":" PrefixPosition(Prefix prefix, int startPosition) {","lastModifiedDate":"2016-10-19"},{"lineNumber":136,"author":{"gitId":"-"},"content":" this.prefix \u003d prefix;","lastModifiedDate":"2016-10-19"},{"lineNumber":137,"author":{"gitId":"-"},"content":" this.startPosition \u003d startPosition;","lastModifiedDate":"2016-10-19"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":140,"author":{"gitId":"-"},"content":" int getStartPosition() {","lastModifiedDate":"2016-10-19"},{"lineNumber":141,"author":{"gitId":"-"},"content":" return startPosition;","lastModifiedDate":"2018-08-14"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":144,"author":{"gitId":"-"},"content":" Prefix getPrefix() {","lastModifiedDate":"2016-10-19"},{"lineNumber":145,"author":{"gitId":"-"},"content":" return prefix;","lastModifiedDate":"2018-08-14"},{"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-19"},{"lineNumber":149,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-16"}],"authorContributionMap":{"Shauryan123":1,"-":148}},{"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":"ibnu2651"},"content":" public static final Prefix PREFIX_POLICY \u003d new Prefix(\"po/\");","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":15,"author":{"gitId":"Shauryan123"},"content":" public static final Prefix PREFIX_RELATIONSHIP \u003d new Prefix(\"r/\"); // Add this line","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"Shauryan123"},"content":" public static final Prefix PREFIX_MEETING_DATE \u003d new Prefix(\"md/\");","lastModifiedDate":"2024-03-23"},{"lineNumber":18,"author":{"gitId":"Shauryan123"},"content":" public static final Prefix PREFIX_MEETING_TIME \u003d new Prefix(\"mt/\");","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"Shauryan123"},"content":" public static final Prefix PREFIX_MEETING_AGENDA \u003d new Prefix(\"ma/\");","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"Shauryan123"},"content":" public static final Prefix PREFIX_MEETING_NOTES \u003d new Prefix(\"mn/\");","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"Shauryan123"},"content":" public static final Prefix PREFIX_MEETING_DURATION \u003d new Prefix(\"mdur/\");","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"Shauryan123":8,"ibnu2651":1,"-":15}},{"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":"-"},"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":"kaiyi27"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_RELATIONSHIP;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":36,"author":{"gitId":"kaiyi27"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-03-10"},{"lineNumber":37,"author":{"gitId":"kaiyi27"},"content":" PREFIX_RELATIONSHIP, PREFIX_TAG);","lastModifiedDate":"2024-03-10"},{"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":"kaiyi27"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-03-10"},{"lineNumber":48,"author":{"gitId":"kaiyi27"},"content":" PREFIX_RELATIONSHIP);","lastModifiedDate":"2024-03-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":"-"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":62,"author":{"gitId":"-"},"content":" editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":64,"author":{"gitId":"kaiyi27"},"content":" if (argMultimap.getValue(PREFIX_RELATIONSHIP).isPresent()) {","lastModifiedDate":"2024-03-10"},{"lineNumber":65,"author":{"gitId":"kaiyi27"},"content":" throw new ParseException(EditCommand.MESSAGE_CANNOT_BE_EDIT);","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"kaiyi27"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":67,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":" parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPersonDescriptor::setTags);","lastModifiedDate":"2017-06-21"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":78,"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":79,"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":80,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07"},{"lineNumber":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":85,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":88,"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":89,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":92,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"kaiyi27":9,"-":83}},{"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":"ibnu2651"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"kaiyi27"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_POLICY;","lastModifiedDate":"2024-03-24"},{"lineNumber":6,"author":{"gitId":"ibnu2651"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_RELATIONSHIP;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"ibnu2651"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":9,"author":{"gitId":"ibnu2651"},"content":"import java.util.List;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":13,"author":{"gitId":"ibnu2651"},"content":"import seedu.address.model.person.CombinedPredicate;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"kaiyi27"},"content":"import seedu.address.model.person.PolicyContainsKeywordsPredicate;","lastModifiedDate":"2024-03-24"},{"lineNumber":16,"author":{"gitId":"Shauryan123"},"content":"import seedu.address.model.person.RelationshipContainsKeywordsPredicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"Shauryan123"},"content":"import seedu.address.model.person.TagContainsKeywordsPredicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new FindCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class FindCommandParser implements Parser\u003cFindCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the FindCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * and returns a FindCommand object for execution.","lastModifiedDate":"2019-05-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":29,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"Shauryan123"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public FindCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":33,"author":{"gitId":"kaiyi27"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_RELATIONSHIP,","lastModifiedDate":"2024-03-24"},{"lineNumber":34,"author":{"gitId":"kaiyi27"},"content":" PREFIX_TAG, PREFIX_POLICY);","lastModifiedDate":"2024-03-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":37,"author":{"gitId":"Shauryan123"},"content":" if (args.trim().isEmpty()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"Shauryan123"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"Shauryan123"},"content":" List\u003cString\u003e nameKeywords \u003d argMultimap.getAllValues(PREFIX_NAME);","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"Shauryan123"},"content":" List\u003cString\u003e relationshipKeywords \u003d argMultimap.getAllValues(PREFIX_RELATIONSHIP);","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"Shauryan123"},"content":" List\u003cString\u003e tagKeywords \u003d argMultimap.getAllValues(PREFIX_TAG);","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"kaiyi27"},"content":" List\u003cString\u003e policyKeywords \u003d argMultimap.getAllValues(PREFIX_POLICY);","lastModifiedDate":"2024-03-24"},{"lineNumber":46,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"ibnu2651"},"content":" CombinedPredicate combinedPredicate \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"ibnu2651"},"content":" new CombinedPredicate(","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"ibnu2651"},"content":" new NameContainsKeywordsPredicate(nameKeywords),","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"ibnu2651"},"content":" new RelationshipContainsKeywordsPredicate(relationshipKeywords),","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"kaiyi27"},"content":" new TagContainsKeywordsPredicate(tagKeywords),","lastModifiedDate":"2024-03-24"},{"lineNumber":52,"author":{"gitId":"kaiyi27"},"content":" new PolicyContainsKeywordsPredicate(policyKeywords));","lastModifiedDate":"2024-03-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"Shauryan123"},"content":" return new FindCommand(combinedPredicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"Shauryan123":13,"kaiyi27":7,"ibnu2651":9,"-":28}},{"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":"Shauryan123"},"content":"import java.time.Duration;","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"Shauryan123"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"Shauryan123"},"content":"import java.time.LocalTime;","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"Shauryan123"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-03-23"},{"lineNumber":9,"author":{"gitId":"Shauryan123"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11"},{"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.Address;","lastModifiedDate":"2017-02-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-02-11"},{"lineNumber":21,"author":{"gitId":"Shauryan123"},"content":"import seedu.address.model.person.Relationship;","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10"},{"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":"Shauryan123"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":107,"author":{"gitId":"Shauryan123"},"content":" * Parses a {@code String relationship} into a {@code Relationship}.","lastModifiedDate":"2024-03-16"},{"lineNumber":108,"author":{"gitId":"Shauryan123"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-16"},{"lineNumber":109,"author":{"gitId":"Shauryan123"},"content":" *","lastModifiedDate":"2024-03-16"},{"lineNumber":110,"author":{"gitId":"Shauryan123"},"content":" * @throws ParseException if the given {@code relationship} is invalid.","lastModifiedDate":"2024-03-16"},{"lineNumber":111,"author":{"gitId":"Shauryan123"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":112,"author":{"gitId":"Shauryan123"},"content":" public static Relationship parseRelationship(String relationship) throws ParseException {","lastModifiedDate":"2024-03-16"},{"lineNumber":113,"author":{"gitId":"Shauryan123"},"content":" requireNonNull(relationship);","lastModifiedDate":"2024-03-16"},{"lineNumber":114,"author":{"gitId":"Shauryan123"},"content":" String trimmedRelationship \u003d relationship.trim();","lastModifiedDate":"2024-03-16"},{"lineNumber":115,"author":{"gitId":"Shauryan123"},"content":" if (!Relationship.isValidRelationship(trimmedRelationship)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":116,"author":{"gitId":"Shauryan123"},"content":" throw new ParseException(Relationship.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":117,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":118,"author":{"gitId":"Shauryan123"},"content":" return new Relationship(trimmedRelationship);","lastModifiedDate":"2024-03-16"},{"lineNumber":119,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":120,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":121,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":122,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":123,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":124,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":125,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":126,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":127,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":128,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":129,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30"},{"lineNumber":130,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":131,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":132,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":134,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":137,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":138,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07"},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":140,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":141,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15"},{"lineNumber":142,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11"},{"lineNumber":143,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11"},{"lineNumber":144,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":146,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":148,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":149,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":150,"author":{"gitId":"Shauryan123"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":151,"author":{"gitId":"Shauryan123"},"content":" * Parses a {@code String date} into a {@code LocalDate}.","lastModifiedDate":"2024-03-23"},{"lineNumber":152,"author":{"gitId":"Shauryan123"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-23"},{"lineNumber":153,"author":{"gitId":"Shauryan123"},"content":" *","lastModifiedDate":"2024-03-23"},{"lineNumber":154,"author":{"gitId":"Shauryan123"},"content":" * @throws ParseException if the given {@code date} is invalid.","lastModifiedDate":"2024-03-23"},{"lineNumber":155,"author":{"gitId":"Shauryan123"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":156,"author":{"gitId":"Shauryan123"},"content":" public static LocalDate parseDate(String date) throws ParseException {","lastModifiedDate":"2024-03-23"},{"lineNumber":157,"author":{"gitId":"Shauryan123"},"content":" requireNonNull(date);","lastModifiedDate":"2024-03-23"},{"lineNumber":158,"author":{"gitId":"Shauryan123"},"content":" String trimmedDate \u003d date.trim();","lastModifiedDate":"2024-03-23"},{"lineNumber":159,"author":{"gitId":"Shauryan123"},"content":" try {","lastModifiedDate":"2024-03-23"},{"lineNumber":160,"author":{"gitId":"Shauryan123"},"content":" return LocalDate.parse(trimmedDate, DateTimeFormatter.ISO_LOCAL_DATE);","lastModifiedDate":"2024-03-23"},{"lineNumber":161,"author":{"gitId":"Shauryan123"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-03-23"},{"lineNumber":162,"author":{"gitId":"Shauryan123"},"content":" throw new ParseException(\"Invalid date format. Use YYYY-MM-DD.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":163,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":164,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":165,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":166,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":167,"author":{"gitId":"Shauryan123"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":168,"author":{"gitId":"Shauryan123"},"content":" * Parses a {@code String time} into a {@code LocalTime}.","lastModifiedDate":"2024-03-23"},{"lineNumber":169,"author":{"gitId":"Shauryan123"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-23"},{"lineNumber":170,"author":{"gitId":"Shauryan123"},"content":" *","lastModifiedDate":"2024-03-23"},{"lineNumber":171,"author":{"gitId":"Shauryan123"},"content":" * @throws ParseException if the given {@code time} is invalid.","lastModifiedDate":"2024-03-23"},{"lineNumber":172,"author":{"gitId":"Shauryan123"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":173,"author":{"gitId":"Shauryan123"},"content":" public static LocalTime parseTime(String time) throws ParseException {","lastModifiedDate":"2024-03-23"},{"lineNumber":174,"author":{"gitId":"Shauryan123"},"content":" requireNonNull(time);","lastModifiedDate":"2024-03-23"},{"lineNumber":175,"author":{"gitId":"Shauryan123"},"content":" String trimmedTime \u003d time.trim();","lastModifiedDate":"2024-03-23"},{"lineNumber":176,"author":{"gitId":"Shauryan123"},"content":" try {","lastModifiedDate":"2024-03-23"},{"lineNumber":177,"author":{"gitId":"Shauryan123"},"content":" return LocalTime.parse(trimmedTime, DateTimeFormatter.ISO_LOCAL_TIME);","lastModifiedDate":"2024-03-23"},{"lineNumber":178,"author":{"gitId":"Shauryan123"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-03-23"},{"lineNumber":179,"author":{"gitId":"Shauryan123"},"content":" throw new ParseException(\"Invalid time format. Use HH:MM.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":180,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":181,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":182,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":183,"author":{"gitId":"kaiyi27"},"content":" /**","lastModifiedDate":"2024-03-24"},{"lineNumber":184,"author":{"gitId":"kaiyi27"},"content":" * Parses a {@code String durationStr} into a {@code Duration}.","lastModifiedDate":"2024-03-24"},{"lineNumber":185,"author":{"gitId":"kaiyi27"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-24"},{"lineNumber":186,"author":{"gitId":"kaiyi27"},"content":" *","lastModifiedDate":"2024-03-24"},{"lineNumber":187,"author":{"gitId":"kaiyi27"},"content":" * @throws ParseException if the given {@code durationStr} is invalid.","lastModifiedDate":"2024-03-24"},{"lineNumber":188,"author":{"gitId":"kaiyi27"},"content":" */","lastModifiedDate":"2024-03-24"},{"lineNumber":189,"author":{"gitId":"Shauryan123"},"content":" public static Duration parseDuration(String durationStr) throws ParseException {","lastModifiedDate":"2024-03-23"},{"lineNumber":190,"author":{"gitId":"Shauryan123"},"content":" requireNonNull(durationStr);","lastModifiedDate":"2024-03-23"},{"lineNumber":191,"author":{"gitId":"Shauryan123"},"content":" try {","lastModifiedDate":"2024-03-23"},{"lineNumber":192,"author":{"gitId":"Shauryan123"},"content":" long minutes \u003d Long.parseLong(durationStr);","lastModifiedDate":"2024-03-23"},{"lineNumber":193,"author":{"gitId":"Shauryan123"},"content":" return Duration.ofMinutes(minutes);","lastModifiedDate":"2024-03-23"},{"lineNumber":194,"author":{"gitId":"Shauryan123"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-03-23"},{"lineNumber":195,"author":{"gitId":"Shauryan123"},"content":" throw new ParseException(\"Invalid duration format. Use minutes as an integer.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":196,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":197,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":198,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"Shauryan123":68,"kaiyi27":6,"-":125}},{"path":"src/main/java/seedu/address/logic/parser/PolicyCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ibnu2651"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"ibnu2651"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"ibnu2651"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"ibnu2651"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_POLICY;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"ibnu2651"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"ibnu2651"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"ibnu2651"},"content":"import seedu.address.logic.commands.PolicyCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"ibnu2651"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"ibnu2651"},"content":"import seedu.address.model.person.Policy;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"ibnu2651"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"ibnu2651"},"content":" * Parses input arguments and creates a new {@code PolicyCommand} object","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"ibnu2651"},"content":"public class PolicyCommandParser implements Parser\u003cPolicyCommand\u003e {","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"ibnu2651"},"content":" * Parses the given {@code String} of arguments in the context of the {@code PolicyCommand}","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"ibnu2651"},"content":" * and returns a {@code PolicyCommand} object for execution.","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"ibnu2651"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"ibnu2651"},"content":" public PolicyCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"ibnu2651"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"ibnu2651"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_POLICY);","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"ibnu2651"},"content":" Index index;","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"ibnu2651"},"content":" try {","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"ibnu2651"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"ibnu2651"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"ibnu2651"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, PolicyCommand.MESSAGE_USAGE), ive);","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"ibnu2651"},"content":" String policy \u003d argMultimap.getValue(PREFIX_POLICY).orElse(\"\");","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"ibnu2651"},"content":" return new PolicyCommand(index, new Policy(policy));","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"ibnu2651"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"ibnu2651":37}},{"path":"src/main/java/seedu/address/logic/parser/ScheduleMeetingCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Shauryan123"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-23"},{"lineNumber":2,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":3,"author":{"gitId":"Shauryan123"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-23"},{"lineNumber":4,"author":{"gitId":"Shauryan123"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"kaiyi27"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MEETING_AGENDA;","lastModifiedDate":"2024-03-24"},{"lineNumber":6,"author":{"gitId":"kaiyi27"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MEETING_DATE;","lastModifiedDate":"2024-03-24"},{"lineNumber":7,"author":{"gitId":"kaiyi27"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MEETING_DURATION;","lastModifiedDate":"2024-03-24"},{"lineNumber":8,"author":{"gitId":"kaiyi27"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MEETING_NOTES;","lastModifiedDate":"2024-03-24"},{"lineNumber":9,"author":{"gitId":"kaiyi27"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MEETING_TIME;","lastModifiedDate":"2024-03-24"},{"lineNumber":10,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"Shauryan123"},"content":"import java.time.Duration;","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"Shauryan123"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"Shauryan123"},"content":"import java.time.LocalTime;","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"Shauryan123"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-03-23"},{"lineNumber":15,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":16,"author":{"gitId":"Shauryan123"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"Shauryan123"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-23"},{"lineNumber":18,"author":{"gitId":"Shauryan123"},"content":"import seedu.address.logic.commands.ScheduleMeetingCommand;","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"Shauryan123"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"Shauryan123"},"content":"import seedu.address.model.person.Meeting;","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"Shauryan123"},"content":"/**","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"Shauryan123"},"content":" * Parses input arguments and creates a new {@code ScheduleMeetingCommand} object","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"Shauryan123"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"Shauryan123"},"content":"public class ScheduleMeetingCommandParser implements Parser\u003cScheduleMeetingCommand\u003e {","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"Shauryan123"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":27,"author":{"gitId":"Shauryan123"},"content":" * Parses the given {@code String} of arguments in the context of the {@code ScheduleMeetingCommand}","lastModifiedDate":"2024-03-23"},{"lineNumber":28,"author":{"gitId":"Shauryan123"},"content":" * and returns a {@code ScheduleMeetingCommand} object for execution.","lastModifiedDate":"2024-03-23"},{"lineNumber":29,"author":{"gitId":"Shauryan123"},"content":" * @throws ParseException if the user input does not conform to the expected format","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"Shauryan123"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"Shauryan123"},"content":" public ScheduleMeetingCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"Shauryan123"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-23"},{"lineNumber":33,"author":{"gitId":"Shauryan123"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-03-23"},{"lineNumber":34,"author":{"gitId":"kaiyi27"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_MEETING_DATE, PREFIX_MEETING_TIME, PREFIX_MEETING_DURATION,","lastModifiedDate":"2024-03-24"},{"lineNumber":35,"author":{"gitId":"kaiyi27"},"content":" PREFIX_MEETING_AGENDA, PREFIX_MEETING_NOTES);","lastModifiedDate":"2024-03-24"},{"lineNumber":36,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":37,"author":{"gitId":"Shauryan123"},"content":" Index index;","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"Shauryan123"},"content":" try {","lastModifiedDate":"2024-03-23"},{"lineNumber":39,"author":{"gitId":"Shauryan123"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-03-23"},{"lineNumber":40,"author":{"gitId":"Shauryan123"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"kaiyi27"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-24"},{"lineNumber":42,"author":{"gitId":"kaiyi27"},"content":" ScheduleMeetingCommand.MESSAGE_USAGE), ive);","lastModifiedDate":"2024-03-24"},{"lineNumber":43,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":44,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":45,"author":{"gitId":"kaiyi27"},"content":" if (!argMultimap.arePrefixesPresent(PREFIX_MEETING_DATE, PREFIX_MEETING_TIME, PREFIX_MEETING_DURATION,","lastModifiedDate":"2024-03-24"},{"lineNumber":46,"author":{"gitId":"kaiyi27"},"content":" PREFIX_MEETING_AGENDA)) {","lastModifiedDate":"2024-03-24"},{"lineNumber":47,"author":{"gitId":"Shauryan123"},"content":" throw new ParseException(\"Date, time, duration, and agenda are required for scheduling a meeting.\");","lastModifiedDate":"2024-03-24"},{"lineNumber":48,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":49,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":50,"author":{"gitId":"Shauryan123"},"content":" LocalDate meetingDate;","lastModifiedDate":"2024-03-23"},{"lineNumber":51,"author":{"gitId":"Shauryan123"},"content":" LocalTime meetingTime;","lastModifiedDate":"2024-03-23"},{"lineNumber":52,"author":{"gitId":"Shauryan123"},"content":" Duration duration;","lastModifiedDate":"2024-03-23"},{"lineNumber":53,"author":{"gitId":"Shauryan123"},"content":" try {","lastModifiedDate":"2024-03-23"},{"lineNumber":54,"author":{"gitId":"Shauryan123"},"content":" meetingDate \u003d ParserUtil.parseDate(argMultimap.getValue(PREFIX_MEETING_DATE).orElse(\"\"));","lastModifiedDate":"2024-03-23"},{"lineNumber":55,"author":{"gitId":"Shauryan123"},"content":" meetingTime \u003d ParserUtil.parseTime(argMultimap.getValue(PREFIX_MEETING_TIME).orElse(\"\"));","lastModifiedDate":"2024-03-23"},{"lineNumber":56,"author":{"gitId":"Shauryan123"},"content":" duration \u003d ParserUtil.parseDuration(argMultimap.getValue(PREFIX_MEETING_DURATION).orElse(\"\"));","lastModifiedDate":"2024-03-23"},{"lineNumber":57,"author":{"gitId":"Shauryan123"},"content":" } catch (DateTimeParseException dtpe) {","lastModifiedDate":"2024-03-23"},{"lineNumber":58,"author":{"gitId":"kaiyi27"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-24"},{"lineNumber":59,"author":{"gitId":"kaiyi27"},"content":" ScheduleMeetingCommand.MESSAGE_USAGE), dtpe);","lastModifiedDate":"2024-03-24"},{"lineNumber":60,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":61,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":62,"author":{"gitId":"kaiyi27"},"content":" String agenda \u003d argMultimap.getValue(PREFIX_MEETING_AGENDA)","lastModifiedDate":"2024-03-24"},{"lineNumber":63,"author":{"gitId":"kaiyi27"},"content":" .orElseThrow(() -\u003e new ParseException(\"Agenda is required.\"));","lastModifiedDate":"2024-03-24"},{"lineNumber":64,"author":{"gitId":"Shauryan123"},"content":" String notes \u003d argMultimap.getValue(PREFIX_MEETING_NOTES).orElse(\"\");","lastModifiedDate":"2024-03-23"},{"lineNumber":65,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":66,"author":{"gitId":"Shauryan123"},"content":" Meeting meeting \u003d new Meeting(meetingDate, meetingTime, duration, agenda, notes);","lastModifiedDate":"2024-03-23"},{"lineNumber":67,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":68,"author":{"gitId":"Shauryan123"},"content":" return new ScheduleMeetingCommand(index, meeting);","lastModifiedDate":"2024-03-23"},{"lineNumber":69,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":70,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-23"}],"authorContributionMap":{"Shauryan123":55,"kaiyi27":15}},{"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":"Shauryan123"},"content":"import seedu.address.model.person.Meeting;","lastModifiedDate":"2024-03-23"},{"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":"justincred"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":89,"author":{"gitId":"justincred"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":90,"author":{"gitId":"justincred"},"content":" * Returns true if the model has previous address book states to restore.","lastModifiedDate":"2024-03-16"},{"lineNumber":91,"author":{"gitId":"justincred"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":92,"author":{"gitId":"justincred"},"content":" boolean canUndoAddressBook();","lastModifiedDate":"2024-03-16"},{"lineNumber":93,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":94,"author":{"gitId":"justincred"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":95,"author":{"gitId":"justincred"},"content":" * Returns true if the model has undone address book states to restore.","lastModifiedDate":"2024-03-16"},{"lineNumber":96,"author":{"gitId":"justincred"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":97,"author":{"gitId":"justincred"},"content":" boolean canRedoAddressBook();","lastModifiedDate":"2024-03-16"},{"lineNumber":98,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":99,"author":{"gitId":"justincred"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":100,"author":{"gitId":"justincred"},"content":" * Restores the model\u0027s address book to its previous state.","lastModifiedDate":"2024-03-16"},{"lineNumber":101,"author":{"gitId":"justincred"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":102,"author":{"gitId":"justincred"},"content":" void undoAddressBook();","lastModifiedDate":"2024-03-16"},{"lineNumber":103,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":104,"author":{"gitId":"justincred"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":105,"author":{"gitId":"justincred"},"content":" * Restores the model\u0027s address book to its previously undone state.","lastModifiedDate":"2024-03-16"},{"lineNumber":106,"author":{"gitId":"justincred"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":107,"author":{"gitId":"justincred"},"content":" void redoAddressBook();","lastModifiedDate":"2024-03-16"},{"lineNumber":108,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":109,"author":{"gitId":"justincred"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":110,"author":{"gitId":"justincred"},"content":" * Saves the current address book state for undo/redo.","lastModifiedDate":"2024-03-16"},{"lineNumber":111,"author":{"gitId":"justincred"},"content":" * Execute this function whenever there\u0027s changes to the address book","lastModifiedDate":"2024-03-16"},{"lineNumber":112,"author":{"gitId":"justincred"},"content":" * during the execution of the various commands","lastModifiedDate":"2024-03-16"},{"lineNumber":113,"author":{"gitId":"justincred"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":114,"author":{"gitId":"justincred"},"content":" void commitAddressBook();","lastModifiedDate":"2024-03-16"},{"lineNumber":115,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":116,"author":{"gitId":"Shauryan123"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":117,"author":{"gitId":"Shauryan123"},"content":" * Checks if the given meeting overlaps with any existing meetings across all persons in the address book.","lastModifiedDate":"2024-03-23"},{"lineNumber":118,"author":{"gitId":"Shauryan123"},"content":" * @param meeting The meeting to check.","lastModifiedDate":"2024-03-23"},{"lineNumber":119,"author":{"gitId":"Shauryan123"},"content":" * @return true if there is an overlap, false otherwise.","lastModifiedDate":"2024-03-23"},{"lineNumber":120,"author":{"gitId":"Shauryan123"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":121,"author":{"gitId":"Shauryan123"},"content":" boolean hasMeetingOverlap(Meeting meeting);","lastModifiedDate":"2024-03-23"},{"lineNumber":122,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":123,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"Shauryan123":9,"justincred":28,"-":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":"-"},"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":"Shauryan123"},"content":"import seedu.address.model.person.Meeting;","lastModifiedDate":"2024-03-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":"justincred"},"content":" private final VersionedAddressBook versionedAddressBook;","lastModifiedDate":"2024-03-16"},{"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":"justincred"},"content":" this.versionedAddressBook \u003d new VersionedAddressBook(addressBook);","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":37,"author":{"gitId":"justincred"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(this.versionedAddressBook.getPersonList());","lastModifiedDate":"2024-03-16"},{"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":"justincred"},"content":" this.versionedAddressBook.resetData(addressBook);","lastModifiedDate":"2024-03-16"},{"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":"justincred"},"content":" return versionedAddressBook;","lastModifiedDate":"2024-03-16"},{"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":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":93,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":94,"author":{"gitId":"justincred"},"content":" return versionedAddressBook.hasPerson(person);","lastModifiedDate":"2024-03-16"},{"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":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15"},{"lineNumber":99,"author":{"gitId":"justincred"},"content":" versionedAddressBook.removePerson(target);","lastModifiedDate":"2024-03-16"},{"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":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":104,"author":{"gitId":"justincred"},"content":" versionedAddressBook.addPerson(person);","lastModifiedDate":"2024-03-16"},{"lineNumber":105,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"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":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":110,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":112,"author":{"gitId":"justincred"},"content":" versionedAddressBook.setPerson(target, editedPerson);","lastModifiedDate":"2024-03-16"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":115,"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":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":118,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10"},{"lineNumber":119,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11"},{"lineNumber":120,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":123,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":127,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":128,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05"},{"lineNumber":129,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":131,"author":{"gitId":"justincred"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":132,"author":{"gitId":"justincred"},"content":" public boolean canUndoAddressBook() {","lastModifiedDate":"2024-03-16"},{"lineNumber":133,"author":{"gitId":"justincred"},"content":" return versionedAddressBook.canUndo();","lastModifiedDate":"2024-03-16"},{"lineNumber":134,"author":{"gitId":"justincred"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":135,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":136,"author":{"gitId":"justincred"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":137,"author":{"gitId":"justincred"},"content":" public boolean canRedoAddressBook() {","lastModifiedDate":"2024-03-16"},{"lineNumber":138,"author":{"gitId":"justincred"},"content":" return versionedAddressBook.canRedo();","lastModifiedDate":"2024-03-16"},{"lineNumber":139,"author":{"gitId":"justincred"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":140,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":141,"author":{"gitId":"justincred"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":142,"author":{"gitId":"justincred"},"content":" public void undoAddressBook() {","lastModifiedDate":"2024-03-16"},{"lineNumber":143,"author":{"gitId":"justincred"},"content":" versionedAddressBook.undo();","lastModifiedDate":"2024-03-16"},{"lineNumber":144,"author":{"gitId":"justincred"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":145,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":146,"author":{"gitId":"justincred"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":147,"author":{"gitId":"justincred"},"content":" public void redoAddressBook() {","lastModifiedDate":"2024-03-16"},{"lineNumber":148,"author":{"gitId":"justincred"},"content":" versionedAddressBook.redo();","lastModifiedDate":"2024-03-16"},{"lineNumber":149,"author":{"gitId":"justincred"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":150,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":151,"author":{"gitId":"justincred"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":152,"author":{"gitId":"justincred"},"content":" public void commitAddressBook() {","lastModifiedDate":"2024-03-16"},{"lineNumber":153,"author":{"gitId":"justincred"},"content":" versionedAddressBook.commit();","lastModifiedDate":"2024-03-16"},{"lineNumber":154,"author":{"gitId":"justincred"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31"},{"lineNumber":157,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":158,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":159,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":162,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31"},{"lineNumber":163,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":164,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":167,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":168,"author":{"gitId":"justincred"},"content":" return versionedAddressBook.equals(otherModelManager.versionedAddressBook)","lastModifiedDate":"2024-03-16"},{"lineNumber":169,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13"},{"lineNumber":170,"author":{"gitId":"-"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons);","lastModifiedDate":"2023-07-13"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":173,"author":{"gitId":"Shauryan123"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":174,"author":{"gitId":"Shauryan123"},"content":" public boolean hasMeetingOverlap(Meeting meeting) {","lastModifiedDate":"2024-03-23"},{"lineNumber":175,"author":{"gitId":"Shauryan123"},"content":" return versionedAddressBook.getPersonList().stream()","lastModifiedDate":"2024-03-23"},{"lineNumber":176,"author":{"gitId":"Shauryan123"},"content":" .flatMap(person -\u003e person.getMeetings().stream())","lastModifiedDate":"2024-03-23"},{"lineNumber":177,"author":{"gitId":"Shauryan123"},"content":" .anyMatch(existingMeeting -\u003e existingMeeting.overlapsWith(meeting));","lastModifiedDate":"2024-03-23"},{"lineNumber":178,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":179,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":180,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"Shauryan123":9,"justincred":34,"-":138}},{"path":"src/main/java/seedu/address/model/VersionedAddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"justincred"},"content":"package seedu.address.model;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"justincred"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"justincred"},"content":"import java.util.List;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"justincred"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"justincred"},"content":" * {@code AddressBook} that keeps track of its own history.","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"justincred"},"content":" * Adapted from AB4","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"justincred"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"justincred"},"content":"public class VersionedAddressBook extends AddressBook {","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"justincred"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"justincred"},"content":" * The list containing the states of the address book","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"justincred"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"justincred"},"content":" private final List\u003cReadOnlyAddressBook\u003e addressBookStateList;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"justincred"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"justincred"},"content":" * The pointer to the current state in the state list","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"justincred"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"justincred"},"content":" private int currentStatePointer;","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"justincred"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"justincred"},"content":" * Initialises the address book state list","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"justincred"},"content":" * @param initialState the pointer that points to the current state","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"justincred"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"justincred"},"content":" public VersionedAddressBook(ReadOnlyAddressBook initialState) {","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"justincred"},"content":" super(initialState);","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"justincred"},"content":" addressBookStateList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"justincred"},"content":" addressBookStateList.add(new AddressBook(initialState));","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"justincred"},"content":" currentStatePointer \u003d 0;","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"justincred"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"justincred"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"justincred"},"content":" * Saves a copy of the current {@code AddressBook} state at the end of the state list","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"justincred"},"content":" * Undone states are removed from the state list","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"justincred"},"content":" * This means that executing commands after undoing a state will remove that state","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"justincred"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"justincred"},"content":" public void commit() {","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"justincred"},"content":" removeStatesAfterCurrentPointer();","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"justincred"},"content":" addressBookStateList.add(new AddressBook(this));","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"justincred"},"content":" currentStatePointer++;","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"justincred"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"justincred"},"content":" private void removeStatesAfterCurrentPointer() {","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"justincred"},"content":" addressBookStateList.subList(currentStatePointer + 1, addressBookStateList.size()).clear();","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"justincred"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"justincred"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"justincred"},"content":" * Restores the address book to its previous state","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"justincred"},"content":" * Shifts the state pointer back by 1 unless there is no more state to undo","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"justincred"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"justincred"},"content":" public void undo() {","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"justincred"},"content":" if (!canUndo()) {","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"justincred"},"content":" throw new NoUndoableStateException();","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"justincred"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"justincred"},"content":" currentStatePointer--;","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"justincred"},"content":" resetData(addressBookStateList.get(currentStatePointer));","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"justincred"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"justincred"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"justincred"},"content":" * Restores the address book to its previously undone state which only works","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"justincred"},"content":" * if commit has not been done after undoing","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"justincred"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"justincred"},"content":" public void redo() {","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"justincred"},"content":" if (!canRedo()) {","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"justincred"},"content":" throw new NoRedoableStateException();","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"justincred"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"justincred"},"content":" currentStatePointer++;","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"justincred"},"content":" resetData(addressBookStateList.get(currentStatePointer));","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"justincred"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"justincred"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"justincred"},"content":" * Returns true if {@code undo()} has address book states to undo.","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"justincred"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"justincred"},"content":" public boolean canUndo() {","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":76,"author":{"gitId":"Shauryan123"},"content":" System.out.println(\"Current state pointer\");","lastModifiedDate":"2024-03-23"},{"lineNumber":77,"author":{"gitId":"Shauryan123"},"content":" System.out.println(currentStatePointer);","lastModifiedDate":"2024-03-23"},{"lineNumber":78,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":79,"author":{"gitId":"justincred"},"content":" return currentStatePointer \u003e 0;","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"justincred"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"justincred"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"justincred"},"content":" * Returns true if {@code redo()} has address book states to redo.","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"justincred"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"justincred"},"content":" public boolean canRedo() {","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"justincred"},"content":" return currentStatePointer \u003c addressBookStateList.size() - 1;","lastModifiedDate":"2024-03-16"},{"lineNumber":87,"author":{"gitId":"justincred"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":88,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":89,"author":{"gitId":"justincred"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":90,"author":{"gitId":"justincred"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-16"},{"lineNumber":91,"author":{"gitId":"justincred"},"content":" // short circuit if same object","lastModifiedDate":"2024-03-16"},{"lineNumber":92,"author":{"gitId":"justincred"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-16"},{"lineNumber":93,"author":{"gitId":"justincred"},"content":" return true;","lastModifiedDate":"2024-03-16"},{"lineNumber":94,"author":{"gitId":"justincred"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":95,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":96,"author":{"gitId":"justincred"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-16"},{"lineNumber":97,"author":{"gitId":"justincred"},"content":" if (!(other instanceof VersionedAddressBook)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":98,"author":{"gitId":"justincred"},"content":" return false;","lastModifiedDate":"2024-03-16"},{"lineNumber":99,"author":{"gitId":"justincred"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":100,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":101,"author":{"gitId":"justincred"},"content":" VersionedAddressBook otherVersionedAddressBook \u003d (VersionedAddressBook) other;","lastModifiedDate":"2024-03-16"},{"lineNumber":102,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":103,"author":{"gitId":"justincred"},"content":" // state check","lastModifiedDate":"2024-03-16"},{"lineNumber":104,"author":{"gitId":"justincred"},"content":" return super.equals(otherVersionedAddressBook)","lastModifiedDate":"2024-03-16"},{"lineNumber":105,"author":{"gitId":"justincred"},"content":" \u0026\u0026 addressBookStateList.equals(otherVersionedAddressBook.addressBookStateList)","lastModifiedDate":"2024-03-16"},{"lineNumber":106,"author":{"gitId":"justincred"},"content":" \u0026\u0026 currentStatePointer \u003d\u003d otherVersionedAddressBook.currentStatePointer;","lastModifiedDate":"2024-03-16"},{"lineNumber":107,"author":{"gitId":"justincred"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":108,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":109,"author":{"gitId":"justincred"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":110,"author":{"gitId":"justincred"},"content":" * Thrown when trying to {@code undo()} but can\u0027t.","lastModifiedDate":"2024-03-16"},{"lineNumber":111,"author":{"gitId":"justincred"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":112,"author":{"gitId":"justincred"},"content":" public static class NoUndoableStateException extends RuntimeException {","lastModifiedDate":"2024-03-16"},{"lineNumber":113,"author":{"gitId":"justincred"},"content":" private NoUndoableStateException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":114,"author":{"gitId":"justincred"},"content":" super(\"Current state pointer at start of addressBookState list, unable to undo.\");","lastModifiedDate":"2024-03-16"},{"lineNumber":115,"author":{"gitId":"justincred"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":116,"author":{"gitId":"justincred"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":117,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":118,"author":{"gitId":"justincred"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":119,"author":{"gitId":"justincred"},"content":" * Thrown when trying to {@code redo()} but can\u0027t.","lastModifiedDate":"2024-03-16"},{"lineNumber":120,"author":{"gitId":"justincred"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":121,"author":{"gitId":"justincred"},"content":" public static class NoRedoableStateException extends RuntimeException {","lastModifiedDate":"2024-03-16"},{"lineNumber":122,"author":{"gitId":"justincred"},"content":" private NoRedoableStateException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":123,"author":{"gitId":"justincred"},"content":" super(\"Current state pointer at end of addressBookState list, unable to redo.\");","lastModifiedDate":"2024-03-16"},{"lineNumber":124,"author":{"gitId":"justincred"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":125,"author":{"gitId":"justincred"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":126,"author":{"gitId":"justincred"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"Shauryan123":4,"justincred":122}},{"path":"src/main/java/seedu/address/model/person/CombinedPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ibnu2651"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"ibnu2651"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"ibnu2651"},"content":"import java.util.List;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"ibnu2651"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"ibnu2651"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"ibnu2651"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"ibnu2651"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"ibnu2651"},"content":" * Predicate that combines all the different predicates.","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"ibnu2651"},"content":"public class CombinedPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"ibnu2651"},"content":" private final Predicate\u003cPerson\u003e combinedPredicate;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"ibnu2651"},"content":" private final List\u003cPredicate\u003cPerson\u003e\u003e predicateList;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"ibnu2651"},"content":" * Constructs a {@code CombinedPredicate}.","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"ibnu2651"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"ibnu2651"},"content":" * @param predicates The list of predicates.","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"ibnu2651"},"content":" public CombinedPredicate(Predicate\u003cPerson\u003e... predicates) {","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"ibnu2651"},"content":" combinedPredicate \u003d Arrays.stream(predicates).reduce(p -\u003e false, Predicate::or);","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"ibnu2651"},"content":" predicateList \u003d Arrays.asList(predicates);","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"ibnu2651"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"ibnu2651"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"ibnu2651"},"content":" return combinedPredicate.test(person);","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"ibnu2651"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"ibnu2651"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"ibnu2651"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"ibnu2651"},"content":" return true;","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"ibnu2651"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"ibnu2651"},"content":" if (!(other instanceof CombinedPredicate)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"ibnu2651"},"content":" return false;","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"ibnu2651"},"content":" CombinedPredicate otherCombinedPredicate \u003d (CombinedPredicate) other;","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"ibnu2651"},"content":" return predicateList.equals(otherCombinedPredicate.predicateList);","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"ibnu2651"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"ibnu2651"},"content":" public String toString() {","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"ibnu2651"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"ibnu2651"},"content":" .add(\"predicateList\",","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"ibnu2651"},"content":" predicateList.stream().map(Predicate::toString).collect(Collectors.joining()))","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"ibnu2651"},"content":" .toString();","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"ibnu2651"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"ibnu2651":54}},{"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":"-"},"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":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Returns if a given string is a valid email.","lastModifiedDate":"2018-04-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static boolean isValidEmail(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"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 String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return value;","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":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" if (!(other instanceof Email)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return false;","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":" Email otherEmail \u003d (Email) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return value.equals(otherEmail.value);","lastModifiedDate":"2023-07-13"},{"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":"2016-08-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return value.hashCode();","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"}],"authorContributionMap":{"Shauryan123":2,"-":79}},{"path":"src/main/java/seedu/address/model/person/Meeting.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Shauryan123"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-23"},{"lineNumber":2,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":3,"author":{"gitId":"Shauryan123"},"content":"import java.time.Duration;","lastModifiedDate":"2024-03-23"},{"lineNumber":4,"author":{"gitId":"Shauryan123"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"Shauryan123"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"Shauryan123"},"content":"import java.time.LocalTime;","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"Shauryan123"},"content":"import java.util.Objects;","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":9,"author":{"gitId":"kaiyi27"},"content":"/**","lastModifiedDate":"2024-03-24"},{"lineNumber":10,"author":{"gitId":"kaiyi27"},"content":" * Represents a meeting with a specific date, time, duration, agenda, and optional notes.","lastModifiedDate":"2024-03-24"},{"lineNumber":11,"author":{"gitId":"kaiyi27"},"content":" */","lastModifiedDate":"2024-03-24"},{"lineNumber":12,"author":{"gitId":"Shauryan123"},"content":"public class Meeting {","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"Shauryan123"},"content":" private LocalDate meetingDate;","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"Shauryan123"},"content":" private LocalTime meetingTime;","lastModifiedDate":"2024-03-23"},{"lineNumber":15,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":16,"author":{"gitId":"Shauryan123"},"content":" private LocalDateTime startDateTime; // New field","lastModifiedDate":"2024-03-24"},{"lineNumber":17,"author":{"gitId":"Shauryan123"},"content":" private Duration duration;","lastModifiedDate":"2024-03-23"},{"lineNumber":18,"author":{"gitId":"Shauryan123"},"content":" private String agenda;","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"Shauryan123"},"content":" private String notes; //make it optional","lastModifiedDate":"2024-03-24"},{"lineNumber":20,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"kaiyi27"},"content":" /**","lastModifiedDate":"2024-03-24"},{"lineNumber":22,"author":{"gitId":"kaiyi27"},"content":" * Constructs a new Meeting object with the specified details.","lastModifiedDate":"2024-03-24"},{"lineNumber":23,"author":{"gitId":"kaiyi27"},"content":" *","lastModifiedDate":"2024-03-24"},{"lineNumber":24,"author":{"gitId":"kaiyi27"},"content":" * @param meetingDate The date of the meeting.","lastModifiedDate":"2024-03-24"},{"lineNumber":25,"author":{"gitId":"kaiyi27"},"content":" * @param meetingTime The time of the meeting.","lastModifiedDate":"2024-03-24"},{"lineNumber":26,"author":{"gitId":"kaiyi27"},"content":" * @param duration The duration of the meeting.","lastModifiedDate":"2024-03-24"},{"lineNumber":27,"author":{"gitId":"kaiyi27"},"content":" * @param agenda The agenda of the meeting.","lastModifiedDate":"2024-03-24"},{"lineNumber":28,"author":{"gitId":"kaiyi27"},"content":" * @param notes Optional notes for the meeting.","lastModifiedDate":"2024-03-24"},{"lineNumber":29,"author":{"gitId":"kaiyi27"},"content":" */","lastModifiedDate":"2024-03-24"},{"lineNumber":30,"author":{"gitId":"Shauryan123"},"content":" public Meeting(LocalDate meetingDate, LocalTime meetingTime, Duration duration, String agenda, String notes) {","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"Shauryan123"},"content":" this.meetingDate \u003d meetingDate;","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"Shauryan123"},"content":" this.meetingTime \u003d meetingTime;","lastModifiedDate":"2024-03-23"},{"lineNumber":33,"author":{"gitId":"Shauryan123"},"content":" this.duration \u003d duration;","lastModifiedDate":"2024-03-23"},{"lineNumber":34,"author":{"gitId":"Shauryan123"},"content":" this.agenda \u003d agenda;","lastModifiedDate":"2024-03-23"},{"lineNumber":35,"author":{"gitId":"Shauryan123"},"content":" this.notes \u003d notes;","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"Shauryan123"},"content":" this.startDateTime \u003d LocalDateTime.of(meetingDate, meetingTime); // Initialize new field","lastModifiedDate":"2024-03-24"},{"lineNumber":37,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":39,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":40,"author":{"gitId":"Shauryan123"},"content":" public LocalDate getMeetingDate() {","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"Shauryan123"},"content":" return meetingDate;","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":43,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":44,"author":{"gitId":"Shauryan123"},"content":" public void setMeetingDate(LocalDate meetingDate) {","lastModifiedDate":"2024-03-23"},{"lineNumber":45,"author":{"gitId":"Shauryan123"},"content":" this.meetingDate \u003d meetingDate;","lastModifiedDate":"2024-03-23"},{"lineNumber":46,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":47,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":48,"author":{"gitId":"Shauryan123"},"content":" public LocalTime getMeetingTime() {","lastModifiedDate":"2024-03-23"},{"lineNumber":49,"author":{"gitId":"Shauryan123"},"content":" return meetingTime;","lastModifiedDate":"2024-03-23"},{"lineNumber":50,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":51,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":52,"author":{"gitId":"Shauryan123"},"content":" public void setMeetingTime(LocalTime meetingTime) {","lastModifiedDate":"2024-03-23"},{"lineNumber":53,"author":{"gitId":"Shauryan123"},"content":" this.meetingTime \u003d meetingTime;","lastModifiedDate":"2024-03-23"},{"lineNumber":54,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":55,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":56,"author":{"gitId":"Shauryan123"},"content":" public Duration getDuration() {","lastModifiedDate":"2024-03-23"},{"lineNumber":57,"author":{"gitId":"Shauryan123"},"content":" return duration;","lastModifiedDate":"2024-03-23"},{"lineNumber":58,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":59,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":60,"author":{"gitId":"Shauryan123"},"content":" public void setDuration(Duration duration) {","lastModifiedDate":"2024-03-23"},{"lineNumber":61,"author":{"gitId":"Shauryan123"},"content":" this.duration \u003d duration;","lastModifiedDate":"2024-03-23"},{"lineNumber":62,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":63,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":64,"author":{"gitId":"Shauryan123"},"content":" public String getAgenda() {","lastModifiedDate":"2024-03-23"},{"lineNumber":65,"author":{"gitId":"Shauryan123"},"content":" return agenda;","lastModifiedDate":"2024-03-23"},{"lineNumber":66,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":67,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":68,"author":{"gitId":"Shauryan123"},"content":" public void setAgenda(String agenda) {","lastModifiedDate":"2024-03-23"},{"lineNumber":69,"author":{"gitId":"Shauryan123"},"content":" this.agenda \u003d agenda;","lastModifiedDate":"2024-03-23"},{"lineNumber":70,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":71,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":72,"author":{"gitId":"Shauryan123"},"content":" public String getNotes() {","lastModifiedDate":"2024-03-23"},{"lineNumber":73,"author":{"gitId":"Shauryan123"},"content":" return notes;","lastModifiedDate":"2024-03-23"},{"lineNumber":74,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":75,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":76,"author":{"gitId":"Shauryan123"},"content":" public void setNotes(String notes) {","lastModifiedDate":"2024-03-23"},{"lineNumber":77,"author":{"gitId":"Shauryan123"},"content":" this.notes \u003d notes;","lastModifiedDate":"2024-03-23"},{"lineNumber":78,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":79,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":80,"author":{"gitId":"Shauryan123"},"content":" public LocalDateTime getStartDateTime() {","lastModifiedDate":"2024-03-24"},{"lineNumber":81,"author":{"gitId":"Shauryan123"},"content":" return startDateTime;","lastModifiedDate":"2024-03-24"},{"lineNumber":82,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":83,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":84,"author":{"gitId":"Shauryan123"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":85,"author":{"gitId":"Shauryan123"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-23"},{"lineNumber":86,"author":{"gitId":"Shauryan123"},"content":" return Objects.hash(meetingDate, meetingTime, duration, agenda, notes);","lastModifiedDate":"2024-03-23"},{"lineNumber":87,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":88,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":89,"author":{"gitId":"Shauryan123"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":90,"author":{"gitId":"Shauryan123"},"content":" public String toString() {","lastModifiedDate":"2024-03-23"},{"lineNumber":91,"author":{"gitId":"kaiyi27"},"content":" return \"Meeting{\"","lastModifiedDate":"2024-03-24"},{"lineNumber":92,"author":{"gitId":"kaiyi27"},"content":" + \"meetingDate\u003d\" + meetingDate","lastModifiedDate":"2024-03-24"},{"lineNumber":93,"author":{"gitId":"kaiyi27"},"content":" + \", meetingTime\u003d\" + meetingTime","lastModifiedDate":"2024-03-24"},{"lineNumber":94,"author":{"gitId":"kaiyi27"},"content":" + \", duration\u003d\" + duration","lastModifiedDate":"2024-03-24"},{"lineNumber":95,"author":{"gitId":"kaiyi27"},"content":" + \", agenda\u003d\u0027\" + agenda + \u0027\\\u0027\u0027","lastModifiedDate":"2024-03-24"},{"lineNumber":96,"author":{"gitId":"kaiyi27"},"content":" + \", notes\u003d\u0027\" + notes + \u0027\\\u0027\u0027","lastModifiedDate":"2024-03-24"},{"lineNumber":97,"author":{"gitId":"kaiyi27"},"content":" + \u0027}\u0027;","lastModifiedDate":"2024-03-24"},{"lineNumber":98,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":99,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":100,"author":{"gitId":"Shauryan123"},"content":" // In Meeting class","lastModifiedDate":"2024-03-23"},{"lineNumber":101,"author":{"gitId":"kaiyi27"},"content":" /**","lastModifiedDate":"2024-03-24"},{"lineNumber":102,"author":{"gitId":"kaiyi27"},"content":" * Checks if this meeting overlaps with another meeting.","lastModifiedDate":"2024-03-24"},{"lineNumber":103,"author":{"gitId":"kaiyi27"},"content":" *","lastModifiedDate":"2024-03-24"},{"lineNumber":104,"author":{"gitId":"kaiyi27"},"content":" * @param other The other meeting to check for overlap.","lastModifiedDate":"2024-03-24"},{"lineNumber":105,"author":{"gitId":"kaiyi27"},"content":" * @return True if there is an overlap, false otherwise.","lastModifiedDate":"2024-03-24"},{"lineNumber":106,"author":{"gitId":"kaiyi27"},"content":" */","lastModifiedDate":"2024-03-24"},{"lineNumber":107,"author":{"gitId":"Shauryan123"},"content":" public boolean overlapsWith(Meeting other) {","lastModifiedDate":"2024-03-23"},{"lineNumber":108,"author":{"gitId":"Shauryan123"},"content":" LocalDateTime start \u003d LocalDateTime.of(this.getMeetingDate(), this.getMeetingTime());","lastModifiedDate":"2024-03-23"},{"lineNumber":109,"author":{"gitId":"Shauryan123"},"content":" LocalDateTime end \u003d start.plus(this.getDuration());","lastModifiedDate":"2024-03-23"},{"lineNumber":110,"author":{"gitId":"Shauryan123"},"content":" LocalDateTime otherStart \u003d LocalDateTime.of(other.getMeetingDate(), other.getMeetingTime());","lastModifiedDate":"2024-03-23"},{"lineNumber":111,"author":{"gitId":"Shauryan123"},"content":" LocalDateTime otherEnd \u003d otherStart.plus(other.getDuration());","lastModifiedDate":"2024-03-23"},{"lineNumber":112,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":113,"author":{"gitId":"Shauryan123"},"content":" return start.isBefore(otherEnd) \u0026\u0026 otherStart.isBefore(end);","lastModifiedDate":"2024-03-23"},{"lineNumber":114,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":115,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":116,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":117,"author":{"gitId":"Shauryan123"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":118,"author":{"gitId":"Shauryan123"},"content":" public boolean equals(Object obj) {","lastModifiedDate":"2024-03-23"},{"lineNumber":119,"author":{"gitId":"Shauryan123"},"content":" if (this \u003d\u003d obj) {","lastModifiedDate":"2024-03-23"},{"lineNumber":120,"author":{"gitId":"Shauryan123"},"content":" return true;","lastModifiedDate":"2024-03-23"},{"lineNumber":121,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":122,"author":{"gitId":"Shauryan123"},"content":" if (obj \u003d\u003d null || getClass() !\u003d obj.getClass()) {","lastModifiedDate":"2024-03-23"},{"lineNumber":123,"author":{"gitId":"Shauryan123"},"content":" return false;","lastModifiedDate":"2024-03-23"},{"lineNumber":124,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":125,"author":{"gitId":"Shauryan123"},"content":" Meeting meeting \u003d (Meeting) obj;","lastModifiedDate":"2024-03-23"},{"lineNumber":126,"author":{"gitId":"kaiyi27"},"content":" return Objects.equals(meetingDate, meeting.meetingDate)","lastModifiedDate":"2024-03-24"},{"lineNumber":127,"author":{"gitId":"kaiyi27"},"content":" \u0026\u0026 Objects.equals(meetingTime, meeting.meetingTime)","lastModifiedDate":"2024-03-24"},{"lineNumber":128,"author":{"gitId":"kaiyi27"},"content":" \u0026\u0026 Objects.equals(duration, meeting.duration)","lastModifiedDate":"2024-03-24"},{"lineNumber":129,"author":{"gitId":"kaiyi27"},"content":" \u0026\u0026 Objects.equals(agenda, meeting.agenda)","lastModifiedDate":"2024-03-24"},{"lineNumber":130,"author":{"gitId":"kaiyi27"},"content":" \u0026\u0026 Objects.equals(notes, meeting.notes);","lastModifiedDate":"2024-03-24"},{"lineNumber":131,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":132,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-23"}],"authorContributionMap":{"Shauryan123":102,"kaiyi27":30}},{"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":"Shauryan123"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"Shauryan123"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"kaiyi27"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-24"},{"lineNumber":10,"author":{"gitId":"kaiyi27"},"content":"import java.util.List;","lastModifiedDate":"2024-03-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2024-03-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"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":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19"},{"lineNumber":30,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"ibnu2651"},"content":" private final Policy policy;","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"kaiyi27"},"content":" private final Relationship relationship;","lastModifiedDate":"2024-03-10"},{"lineNumber":34,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"Shauryan123"},"content":" private List\u003cMeeting\u003e meetings;","lastModifiedDate":"2024-03-23"},{"lineNumber":39,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":40,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"ibnu2651"},"content":" public Person(Name name, Phone phone, Email email, Address address, Relationship relationship,","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"ibnu2651"},"content":" Policy policy, Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"kaiyi27"},"content":" requireAllNonNull(name, phone, email, address, relationship, tags);","lastModifiedDate":"2024-03-10"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20"},{"lineNumber":51,"author":{"gitId":"ibnu2651"},"content":" this.policy \u003d policy;","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"kaiyi27"},"content":" this.relationship \u003d relationship;","lastModifiedDate":"2024-03-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":54,"author":{"gitId":"Shauryan123"},"content":" this.meetings \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return name;","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 Phone getPhone() {","lastModifiedDate":"2017-07-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return phone;","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 Email getEmail() {","lastModifiedDate":"2017-07-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return email;","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 Address getAddress() {","lastModifiedDate":"2017-07-12"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":73,"author":{"gitId":"ibnu2651"},"content":" public Policy getPolicy() {","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"ibnu2651"},"content":" return policy;","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"kaiyi27"},"content":" public Relationship getRelationship() {","lastModifiedDate":"2024-03-10"},{"lineNumber":78,"author":{"gitId":"kaiyi27"},"content":" return relationship;","lastModifiedDate":"2024-03-10"},{"lineNumber":79,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"ibnu2651"},"content":" public boolean isClient() {","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"ibnu2651"},"content":" return relationship.value.equals(\"client\");","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"ibnu2651"},"content":" public boolean isPartner() {","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"ibnu2651"},"content":" return relationship.value.equals(\"partner\");","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"kaiyi27"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":88,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07"},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":94,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":97,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":98,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19"},{"lineNumber":104,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19"},{"lineNumber":105,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":108,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19"},{"lineNumber":109,"author":{"gitId":"-"},"content":" \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2020-12-18"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":112,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":115,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":118,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":119,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":122,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10"},{"lineNumber":124,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":127,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10"},{"lineNumber":128,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":129,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":130,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":132,"author":{"gitId":"kaiyi27"},"content":" \u0026\u0026 relationship.equals(otherPerson.relationship)","lastModifiedDate":"2024-03-10"},{"lineNumber":133,"author":{"gitId":"ibnu2651"},"content":" \u0026\u0026 policy.equals(otherPerson.policy)","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"-"},"content":" \u0026\u0026 tags.equals(otherPerson.tags);","lastModifiedDate":"2023-07-13"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":138,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":139,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":140,"author":{"gitId":"ibnu2651"},"content":" return Objects.hash(name, phone, email, address, policy, relationship, tags);","lastModifiedDate":"2024-03-17"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":144,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":145,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":150,"author":{"gitId":"kaiyi27"},"content":" .add(\"relationship\", relationship)","lastModifiedDate":"2024-03-10"},{"lineNumber":151,"author":{"gitId":"ibnu2651"},"content":" .add(\"policy\", policy)","lastModifiedDate":"2024-03-16"},{"lineNumber":152,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":156,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":157,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":158,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":159,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":160,"author":{"gitId":"Shauryan123"},"content":" //Meetings composition methods","lastModifiedDate":"2024-03-23"},{"lineNumber":161,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":162,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":163,"author":{"gitId":"Shauryan123"},"content":" public List\u003cMeeting\u003e getMeetings() {","lastModifiedDate":"2024-03-23"},{"lineNumber":164,"author":{"gitId":"Shauryan123"},"content":" return this.meetings;","lastModifiedDate":"2024-03-24"},{"lineNumber":165,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":166,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":167,"author":{"gitId":"kaiyi27"},"content":" /**","lastModifiedDate":"2024-03-24"},{"lineNumber":168,"author":{"gitId":"kaiyi27"},"content":" * Adds a meeting to the list of meetings associated with this person.","lastModifiedDate":"2024-03-24"},{"lineNumber":169,"author":{"gitId":"kaiyi27"},"content":" *","lastModifiedDate":"2024-03-24"},{"lineNumber":170,"author":{"gitId":"kaiyi27"},"content":" * @param meeting The meeting to be added.","lastModifiedDate":"2024-03-24"},{"lineNumber":171,"author":{"gitId":"kaiyi27"},"content":" * @throws IllegalArgumentException if the meeting overlaps with existing meetings or","lastModifiedDate":"2024-03-24"},{"lineNumber":172,"author":{"gitId":"kaiyi27"},"content":" * if scheduling constraints are violated.","lastModifiedDate":"2024-03-24"},{"lineNumber":173,"author":{"gitId":"kaiyi27"},"content":" */","lastModifiedDate":"2024-03-24"},{"lineNumber":174,"author":{"gitId":"Shauryan123"},"content":" public void addMeeting(Meeting meeting) {","lastModifiedDate":"2024-03-23"},{"lineNumber":175,"author":{"gitId":"Shauryan123"},"content":" LocalDate today \u003d LocalDate.now();","lastModifiedDate":"2024-03-23"},{"lineNumber":176,"author":{"gitId":"Shauryan123"},"content":" LocalDate meetingDate \u003d meeting.getMeetingDate();","lastModifiedDate":"2024-03-23"},{"lineNumber":177,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":178,"author":{"gitId":"Shauryan123"},"content":" if (meetings.size() \u003e\u003d 5) {","lastModifiedDate":"2024-03-24"},{"lineNumber":179,"author":{"gitId":"Shauryan123"},"content":" throw new IllegalArgumentException(\"Cannot have more than 5 meetings.\");","lastModifiedDate":"2024-03-24"},{"lineNumber":180,"author":{"gitId":"Shauryan123"},"content":" } else if (meetingDate.isBefore(today)) {","lastModifiedDate":"2024-03-24"},{"lineNumber":181,"author":{"gitId":"Shauryan123"},"content":" throw new IllegalArgumentException(\"Cannot schedule a meeting in the past.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":182,"author":{"gitId":"Shauryan123"},"content":" } else if (meetingDate.isAfter(today.plusYears(1))) { // Assuming 1 year is too far in the future","lastModifiedDate":"2024-03-23"},{"lineNumber":183,"author":{"gitId":"Shauryan123"},"content":" throw new IllegalArgumentException(\"Cannot schedule a meeting more than a year in the future.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":184,"author":{"gitId":"Shauryan123"},"content":" } else if (isOverlapWithOtherMeetings(meeting)) {","lastModifiedDate":"2024-03-23"},{"lineNumber":185,"author":{"gitId":"Shauryan123"},"content":" throw new IllegalArgumentException(\"Meeting overlaps with existing meetings with this client.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":186,"author":{"gitId":"Shauryan123"},"content":" } else {","lastModifiedDate":"2024-03-23"},{"lineNumber":187,"author":{"gitId":"Shauryan123"},"content":" meetings.add(meeting);","lastModifiedDate":"2024-03-23"},{"lineNumber":188,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":189,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":190,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":191,"author":{"gitId":"kaiyi27"},"content":" /**","lastModifiedDate":"2024-03-24"},{"lineNumber":192,"author":{"gitId":"kaiyi27"},"content":" * Sets the list of meetings associated with this person.","lastModifiedDate":"2024-03-24"},{"lineNumber":193,"author":{"gitId":"kaiyi27"},"content":" *","lastModifiedDate":"2024-03-24"},{"lineNumber":194,"author":{"gitId":"kaiyi27"},"content":" * @param meetings The list of meetings to be set.","lastModifiedDate":"2024-03-24"},{"lineNumber":195,"author":{"gitId":"kaiyi27"},"content":" */","lastModifiedDate":"2024-03-24"},{"lineNumber":196,"author":{"gitId":"Shauryan123"},"content":" public void setMeetings(List\u003cMeeting\u003e meetings) {","lastModifiedDate":"2024-03-23"},{"lineNumber":197,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":198,"author":{"gitId":"Shauryan123"},"content":" this.meetings \u003d meetings;","lastModifiedDate":"2024-03-23"},{"lineNumber":199,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":200,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":201,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":202,"author":{"gitId":"kaiyi27"},"content":" /**","lastModifiedDate":"2024-03-24"},{"lineNumber":203,"author":{"gitId":"kaiyi27"},"content":" * Reschedules a meeting associated with this person.","lastModifiedDate":"2024-03-24"},{"lineNumber":204,"author":{"gitId":"kaiyi27"},"content":" *","lastModifiedDate":"2024-03-24"},{"lineNumber":205,"author":{"gitId":"kaiyi27"},"content":" * @param index The index of the meeting to be rescheduled.","lastModifiedDate":"2024-03-24"},{"lineNumber":206,"author":{"gitId":"kaiyi27"},"content":" * @param newDateTime The new date and time for the meeting.","lastModifiedDate":"2024-03-24"},{"lineNumber":207,"author":{"gitId":"kaiyi27"},"content":" * @throws IllegalArgumentException if the rescheduled meeting overlaps with existing meetings.","lastModifiedDate":"2024-03-24"},{"lineNumber":208,"author":{"gitId":"kaiyi27"},"content":" */","lastModifiedDate":"2024-03-24"},{"lineNumber":209,"author":{"gitId":"Shauryan123"},"content":" public void rescheduleMeeting(int index, LocalDateTime newDateTime) {","lastModifiedDate":"2024-03-23"},{"lineNumber":210,"author":{"gitId":"Shauryan123"},"content":" Meeting meetingToReschedule \u003d meetings.get(index);","lastModifiedDate":"2024-03-23"},{"lineNumber":211,"author":{"gitId":"Shauryan123"},"content":" Meeting rescheduledMeeting \u003d new Meeting(","lastModifiedDate":"2024-03-23"},{"lineNumber":212,"author":{"gitId":"Shauryan123"},"content":" newDateTime.toLocalDate(),","lastModifiedDate":"2024-03-23"},{"lineNumber":213,"author":{"gitId":"Shauryan123"},"content":" newDateTime.toLocalTime(),","lastModifiedDate":"2024-03-23"},{"lineNumber":214,"author":{"gitId":"Shauryan123"},"content":" meetingToReschedule.getDuration(),","lastModifiedDate":"2024-03-23"},{"lineNumber":215,"author":{"gitId":"Shauryan123"},"content":" meetingToReschedule.getAgenda(),","lastModifiedDate":"2024-03-23"},{"lineNumber":216,"author":{"gitId":"Shauryan123"},"content":" meetingToReschedule.getNotes()","lastModifiedDate":"2024-03-23"},{"lineNumber":217,"author":{"gitId":"Shauryan123"},"content":" );","lastModifiedDate":"2024-03-23"},{"lineNumber":218,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":219,"author":{"gitId":"Shauryan123"},"content":" // Remove the old meeting and try adding the rescheduled one","lastModifiedDate":"2024-03-23"},{"lineNumber":220,"author":{"gitId":"Shauryan123"},"content":" meetings.remove(index);","lastModifiedDate":"2024-03-23"},{"lineNumber":221,"author":{"gitId":"Shauryan123"},"content":" if (!isOverlapWithOtherMeetings(rescheduledMeeting)) {","lastModifiedDate":"2024-03-23"},{"lineNumber":222,"author":{"gitId":"Shauryan123"},"content":" meetings.add(rescheduledMeeting);","lastModifiedDate":"2024-03-23"},{"lineNumber":223,"author":{"gitId":"Shauryan123"},"content":" } else {","lastModifiedDate":"2024-03-23"},{"lineNumber":224,"author":{"gitId":"Shauryan123"},"content":" // If there\u0027s an overlap, add the old meeting back and throw an exception","lastModifiedDate":"2024-03-23"},{"lineNumber":225,"author":{"gitId":"Shauryan123"},"content":" meetings.add(index, meetingToReschedule);","lastModifiedDate":"2024-03-23"},{"lineNumber":226,"author":{"gitId":"Shauryan123"},"content":" throw new IllegalArgumentException(\"Rescheduled meeting overlaps with existing meetings.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":227,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":228,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":229,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":230,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":231,"author":{"gitId":"Shauryan123"},"content":" public void cancelMeeting(int index) {","lastModifiedDate":"2024-03-23"},{"lineNumber":232,"author":{"gitId":"Shauryan123"},"content":" meetings.remove(index);","lastModifiedDate":"2024-03-23"},{"lineNumber":233,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":234,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":235,"author":{"gitId":"Shauryan123"},"content":" private boolean isOverlapWithOtherMeetings(Meeting meetingToCheck) {","lastModifiedDate":"2024-03-23"},{"lineNumber":236,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":237,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":238,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":239,"author":{"gitId":"kaiyi27"},"content":" LocalDateTime startDateTimeToCheck \u003d LocalDateTime.of(meetingToCheck.getMeetingDate(),","lastModifiedDate":"2024-03-24"},{"lineNumber":240,"author":{"gitId":"kaiyi27"},"content":" meetingToCheck.getMeetingTime());","lastModifiedDate":"2024-03-24"},{"lineNumber":241,"author":{"gitId":"Shauryan123"},"content":" LocalDateTime endDateTimeToCheck \u003d startDateTimeToCheck.plus(meetingToCheck.getDuration());","lastModifiedDate":"2024-03-23"},{"lineNumber":242,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":243,"author":{"gitId":"Shauryan123"},"content":" for (Meeting meeting : meetings) {","lastModifiedDate":"2024-03-23"},{"lineNumber":244,"author":{"gitId":"Shauryan123"},"content":" LocalDateTime startDateTime \u003d LocalDateTime.of(meeting.getMeetingDate(), meeting.getMeetingTime());","lastModifiedDate":"2024-03-23"},{"lineNumber":245,"author":{"gitId":"Shauryan123"},"content":" LocalDateTime endDateTime \u003d startDateTime.plus(meeting.getDuration());","lastModifiedDate":"2024-03-23"},{"lineNumber":246,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":247,"author":{"gitId":"Shauryan123"},"content":" if (startDateTimeToCheck.isBefore(endDateTime) \u0026\u0026 endDateTimeToCheck.isAfter(startDateTime)) {","lastModifiedDate":"2024-03-23"},{"lineNumber":248,"author":{"gitId":"Shauryan123"},"content":" return true;","lastModifiedDate":"2024-03-23"},{"lineNumber":249,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":250,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":251,"author":{"gitId":"Shauryan123"},"content":" return false;","lastModifiedDate":"2024-03-23"},{"lineNumber":252,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":253,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":254,"author":{"gitId":"Shauryan123"},"content":" public Person getCopy() {","lastModifiedDate":"2024-03-24"},{"lineNumber":255,"author":{"gitId":"kaiyi27"},"content":" Person p \u003d new Person(this.name, this.phone, this.email, this.address, this.relationship,","lastModifiedDate":"2024-03-24"},{"lineNumber":256,"author":{"gitId":"kaiyi27"},"content":" this.getPolicy(), this.getTags());","lastModifiedDate":"2024-03-24"},{"lineNumber":257,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":258,"author":{"gitId":"Shauryan123"},"content":" // Create a deep copy of the meetings","lastModifiedDate":"2024-03-24"},{"lineNumber":259,"author":{"gitId":"Shauryan123"},"content":" List\u003cMeeting\u003e copiedMeetings \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-24"},{"lineNumber":260,"author":{"gitId":"Shauryan123"},"content":" for (Meeting meeting : this.getMeetings()) {","lastModifiedDate":"2024-03-24"},{"lineNumber":261,"author":{"gitId":"Shauryan123"},"content":" Meeting copiedMeeting \u003d new Meeting(","lastModifiedDate":"2024-03-24"},{"lineNumber":262,"author":{"gitId":"Shauryan123"},"content":" meeting.getMeetingDate(),","lastModifiedDate":"2024-03-24"},{"lineNumber":263,"author":{"gitId":"Shauryan123"},"content":" meeting.getMeetingTime(),","lastModifiedDate":"2024-03-24"},{"lineNumber":264,"author":{"gitId":"Shauryan123"},"content":" meeting.getDuration(),","lastModifiedDate":"2024-03-24"},{"lineNumber":265,"author":{"gitId":"Shauryan123"},"content":" meeting.getAgenda(),","lastModifiedDate":"2024-03-24"},{"lineNumber":266,"author":{"gitId":"Shauryan123"},"content":" meeting.getNotes()","lastModifiedDate":"2024-03-24"},{"lineNumber":267,"author":{"gitId":"Shauryan123"},"content":" );","lastModifiedDate":"2024-03-24"},{"lineNumber":268,"author":{"gitId":"Shauryan123"},"content":" copiedMeetings.add(copiedMeeting);","lastModifiedDate":"2024-03-24"},{"lineNumber":269,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":270,"author":{"gitId":"Shauryan123"},"content":" p.setMeetings(copiedMeetings);","lastModifiedDate":"2024-03-24"},{"lineNumber":271,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":272,"author":{"gitId":"Shauryan123"},"content":" return p;","lastModifiedDate":"2024-03-24"},{"lineNumber":273,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":274,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"Shauryan123":104,"kaiyi27":34,"ibnu2651":22,"-":114}},{"path":"src/main/java/seedu/address/model/person/Policy.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ibnu2651"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"ibnu2651"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"ibnu2651"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"ibnu2651"},"content":" * Represents a Person\u0027s policy in the address book.","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"ibnu2651"},"content":" * Guarantees: immutable; is always valid","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"ibnu2651"},"content":"public class Policy {","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"ibnu2651"},"content":" public final String value;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"ibnu2651"},"content":" * Constructs a {@code Policy}.","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"ibnu2651"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"ibnu2651"},"content":" * @param policy A valid policy.","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"ibnu2651"},"content":" public Policy(String policy) {","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"ibnu2651"},"content":" requireNonNull(policy);","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"ibnu2651"},"content":" value \u003d policy;","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"ibnu2651"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"ibnu2651"},"content":" public String toString() {","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"ibnu2651"},"content":" return value;","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"ibnu2651"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"ibnu2651"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"ibnu2651"},"content":" return other \u003d\u003d this // short circuit if same object","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"ibnu2651"},"content":" || (other instanceof Policy // instanceof handles nulls","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"ibnu2651"},"content":" \u0026\u0026 value.equals(((Policy) other).value)); // state check","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"ibnu2651"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"ibnu2651"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"ibnu2651"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"ibnu2651"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"ibnu2651":38}},{"path":"src/main/java/seedu/address/model/person/PolicyContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"kaiyi27"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-24"},{"lineNumber":2,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":3,"author":{"gitId":"kaiyi27"},"content":"import java.util.List;","lastModifiedDate":"2024-03-24"},{"lineNumber":4,"author":{"gitId":"kaiyi27"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-24"},{"lineNumber":5,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":6,"author":{"gitId":"kaiyi27"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2024-03-24"},{"lineNumber":7,"author":{"gitId":"kaiyi27"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-24"},{"lineNumber":8,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":9,"author":{"gitId":"kaiyi27"},"content":"/**","lastModifiedDate":"2024-03-24"},{"lineNumber":10,"author":{"gitId":"kaiyi27"},"content":" * Tests that a {@code Person}\u0027s {@code Policy} matches any of the keywords given.","lastModifiedDate":"2024-03-24"},{"lineNumber":11,"author":{"gitId":"kaiyi27"},"content":" */","lastModifiedDate":"2024-03-24"},{"lineNumber":12,"author":{"gitId":"kaiyi27"},"content":"public class PolicyContainsKeywordsPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-03-24"},{"lineNumber":13,"author":{"gitId":"kaiyi27"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2024-03-24"},{"lineNumber":14,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":15,"author":{"gitId":"kaiyi27"},"content":" public PolicyContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2024-03-24"},{"lineNumber":16,"author":{"gitId":"kaiyi27"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2024-03-24"},{"lineNumber":17,"author":{"gitId":"kaiyi27"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":18,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":19,"author":{"gitId":"kaiyi27"},"content":" @Override","lastModifiedDate":"2024-03-24"},{"lineNumber":20,"author":{"gitId":"kaiyi27"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-24"},{"lineNumber":21,"author":{"gitId":"kaiyi27"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-24"},{"lineNumber":22,"author":{"gitId":"kaiyi27"},"content":" return true;","lastModifiedDate":"2024-03-24"},{"lineNumber":23,"author":{"gitId":"kaiyi27"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":24,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":25,"author":{"gitId":"kaiyi27"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-24"},{"lineNumber":26,"author":{"gitId":"kaiyi27"},"content":" if (!(other instanceof PolicyContainsKeywordsPredicate)) {","lastModifiedDate":"2024-03-24"},{"lineNumber":27,"author":{"gitId":"kaiyi27"},"content":" return false;","lastModifiedDate":"2024-03-24"},{"lineNumber":28,"author":{"gitId":"kaiyi27"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":29,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":30,"author":{"gitId":"kaiyi27"},"content":" PolicyContainsKeywordsPredicate otherPolicyContainsKeywordsPredicate \u003d","lastModifiedDate":"2024-03-24"},{"lineNumber":31,"author":{"gitId":"kaiyi27"},"content":" (PolicyContainsKeywordsPredicate) other;","lastModifiedDate":"2024-03-24"},{"lineNumber":32,"author":{"gitId":"kaiyi27"},"content":" return keywords.equals(otherPolicyContainsKeywordsPredicate.keywords);","lastModifiedDate":"2024-03-24"},{"lineNumber":33,"author":{"gitId":"kaiyi27"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":34,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":35,"author":{"gitId":"kaiyi27"},"content":" @Override","lastModifiedDate":"2024-03-24"},{"lineNumber":36,"author":{"gitId":"kaiyi27"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-03-24"},{"lineNumber":37,"author":{"gitId":"kaiyi27"},"content":" return keywords.stream()","lastModifiedDate":"2024-03-24"},{"lineNumber":38,"author":{"gitId":"kaiyi27"},"content":" .anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(person.getPolicy().value, keyword));","lastModifiedDate":"2024-03-24"},{"lineNumber":39,"author":{"gitId":"kaiyi27"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":40,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":41,"author":{"gitId":"kaiyi27"},"content":" @Override","lastModifiedDate":"2024-03-24"},{"lineNumber":42,"author":{"gitId":"kaiyi27"},"content":" public String toString() {","lastModifiedDate":"2024-03-24"},{"lineNumber":43,"author":{"gitId":"kaiyi27"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2024-03-24"},{"lineNumber":44,"author":{"gitId":"kaiyi27"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":45,"author":{"gitId":"kaiyi27"},"content":"}","lastModifiedDate":"2024-03-24"}],"authorContributionMap":{"kaiyi27":45}},{"path":"src/main/java/seedu/address/model/person/Relationship.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"kaiyi27"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":3,"author":{"gitId":"kaiyi27"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-10"},{"lineNumber":4,"author":{"gitId":"kaiyi27"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-10"},{"lineNumber":5,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":6,"author":{"gitId":"kaiyi27"},"content":"/**","lastModifiedDate":"2024-03-10"},{"lineNumber":7,"author":{"gitId":"kaiyi27"},"content":" * Represents a Person\u0027s relationship in the address book.","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"kaiyi27"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidRelationship(String)}","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"kaiyi27"},"content":" */","lastModifiedDate":"2024-03-10"},{"lineNumber":10,"author":{"gitId":"kaiyi27"},"content":"public class Relationship {","lastModifiedDate":"2024-03-10"},{"lineNumber":11,"author":{"gitId":"kaiyi27"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Relationship should only be client or partner\";","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":13,"author":{"gitId":"kaiyi27"},"content":" public final String value;","lastModifiedDate":"2024-03-10"},{"lineNumber":14,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":15,"author":{"gitId":"kaiyi27"},"content":" /**","lastModifiedDate":"2024-03-10"},{"lineNumber":16,"author":{"gitId":"kaiyi27"},"content":" * Constructs a {@code Name}.","lastModifiedDate":"2024-03-10"},{"lineNumber":17,"author":{"gitId":"kaiyi27"},"content":" *","lastModifiedDate":"2024-03-10"},{"lineNumber":18,"author":{"gitId":"kaiyi27"},"content":" * @param relationship A valid relationship.","lastModifiedDate":"2024-03-10"},{"lineNumber":19,"author":{"gitId":"kaiyi27"},"content":" */","lastModifiedDate":"2024-03-10"},{"lineNumber":20,"author":{"gitId":"kaiyi27"},"content":" public Relationship(String relationship) {","lastModifiedDate":"2024-03-10"},{"lineNumber":21,"author":{"gitId":"kaiyi27"},"content":" requireNonNull(relationship);","lastModifiedDate":"2024-03-10"},{"lineNumber":22,"author":{"gitId":"kaiyi27"},"content":" checkArgument(isValidRelationship(relationship), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-10"},{"lineNumber":23,"author":{"gitId":"kaiyi27"},"content":" value \u003d relationship;","lastModifiedDate":"2024-03-10"},{"lineNumber":24,"author":{"gitId":"kaiyi27"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":25,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":26,"author":{"gitId":"kaiyi27"},"content":" /**","lastModifiedDate":"2024-03-10"},{"lineNumber":27,"author":{"gitId":"kaiyi27"},"content":" * Returns true if a given string is a valid relationship.","lastModifiedDate":"2024-03-10"},{"lineNumber":28,"author":{"gitId":"kaiyi27"},"content":" */","lastModifiedDate":"2024-03-10"},{"lineNumber":29,"author":{"gitId":"kaiyi27"},"content":" public static boolean isValidRelationship(String test) {","lastModifiedDate":"2024-03-10"},{"lineNumber":30,"author":{"gitId":"kaiyi27"},"content":" return test.equalsIgnoreCase(\"client\") || test.equalsIgnoreCase(\"partner\");","lastModifiedDate":"2024-03-10"},{"lineNumber":31,"author":{"gitId":"kaiyi27"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":32,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":33,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":34,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":35,"author":{"gitId":"kaiyi27"},"content":" @Override","lastModifiedDate":"2024-03-10"},{"lineNumber":36,"author":{"gitId":"kaiyi27"},"content":" public String toString() {","lastModifiedDate":"2024-03-10"},{"lineNumber":37,"author":{"gitId":"kaiyi27"},"content":" return value;","lastModifiedDate":"2024-03-10"},{"lineNumber":38,"author":{"gitId":"kaiyi27"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":39,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":40,"author":{"gitId":"kaiyi27"},"content":" @Override","lastModifiedDate":"2024-03-10"},{"lineNumber":41,"author":{"gitId":"kaiyi27"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-10"},{"lineNumber":42,"author":{"gitId":"kaiyi27"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-10"},{"lineNumber":43,"author":{"gitId":"kaiyi27"},"content":" return true;","lastModifiedDate":"2024-03-10"},{"lineNumber":44,"author":{"gitId":"kaiyi27"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":45,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":46,"author":{"gitId":"kaiyi27"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-10"},{"lineNumber":47,"author":{"gitId":"kaiyi27"},"content":" if (!(other instanceof Relationship)) {","lastModifiedDate":"2024-03-10"},{"lineNumber":48,"author":{"gitId":"kaiyi27"},"content":" return false;","lastModifiedDate":"2024-03-10"},{"lineNumber":49,"author":{"gitId":"kaiyi27"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":50,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":51,"author":{"gitId":"kaiyi27"},"content":" Relationship otherRelationship \u003d (Relationship) other;","lastModifiedDate":"2024-03-10"},{"lineNumber":52,"author":{"gitId":"kaiyi27"},"content":" return value.equals(otherRelationship.value);","lastModifiedDate":"2024-03-10"},{"lineNumber":53,"author":{"gitId":"kaiyi27"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":54,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":55,"author":{"gitId":"kaiyi27"},"content":" @Override","lastModifiedDate":"2024-03-10"},{"lineNumber":56,"author":{"gitId":"kaiyi27"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-10"},{"lineNumber":57,"author":{"gitId":"kaiyi27"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-10"},{"lineNumber":58,"author":{"gitId":"kaiyi27"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":59,"author":{"gitId":"kaiyi27"},"content":"}","lastModifiedDate":"2024-03-10"}],"authorContributionMap":{"kaiyi27":59}},{"path":"src/main/java/seedu/address/model/person/RelationshipContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Shauryan123"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"Shauryan123"},"content":"import java.util.List;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"Shauryan123"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"Shauryan123"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"Shauryan123"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"ibnu2651"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"ibnu2651"},"content":" * Tests that a {@code Person}\u0027s {@code Relationship} matches any of the keywords given.","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"Shauryan123"},"content":"public class RelationshipContainsKeywordsPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"Shauryan123"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"Shauryan123"},"content":" public RelationshipContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"Shauryan123"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"Shauryan123"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"Shauryan123"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"Shauryan123"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"Shauryan123"},"content":" return true;","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"Shauryan123"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"Shauryan123"},"content":" if (!(other instanceof RelationshipContainsKeywordsPredicate)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"Shauryan123"},"content":" return false;","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"ibnu2651"},"content":" RelationshipContainsKeywordsPredicate otherRelationshipContainsKeywordsPredicate \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"ibnu2651"},"content":" (RelationshipContainsKeywordsPredicate) other;","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"Shauryan123"},"content":" return keywords.equals(otherRelationshipContainsKeywordsPredicate.keywords);","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"Shauryan123"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"Shauryan123"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"Shauryan123"},"content":" return keywords.stream()","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"Shauryan123"},"content":" .anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(person.getRelationship().value, keyword));","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"Shauryan123"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"Shauryan123"},"content":" public String toString() {","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"Shauryan123"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"Shauryan123":40,"ibnu2651":5}},{"path":"src/main/java/seedu/address/model/person/TagContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Shauryan123"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"Shauryan123"},"content":"import java.util.List;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"Shauryan123"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"Shauryan123"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"Shauryan123"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"ibnu2651"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"ibnu2651"},"content":" * Tests that a {@code Person}\u0027s {@code Tag} matches any of the keywords given.","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"Shauryan123"},"content":"public class TagContainsKeywordsPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"Shauryan123"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"Shauryan123"},"content":" public TagContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"Shauryan123"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"Shauryan123"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"Shauryan123"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"Shauryan123"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"Shauryan123"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"Shauryan123"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"Shauryan123"},"content":" if (!(other instanceof TagContainsKeywordsPredicate)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"Shauryan123"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"Shauryan123"},"content":" TagContainsKeywordsPredicate otherTagContainsKeywordsPredicate \u003d (TagContainsKeywordsPredicate) other;","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"Shauryan123"},"content":" return keywords.equals(otherTagContainsKeywordsPredicate.keywords);","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"Shauryan123"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"Shauryan123"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"Shauryan123"},"content":" return person.getTags().stream()","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"Shauryan123"},"content":" .anyMatch(tag -\u003e keywords.stream()","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"Shauryan123"},"content":" .anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(tag.tagName, keyword)));","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"Shauryan123"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"Shauryan123"},"content":" public String toString() {","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"Shauryan123"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"Shauryan123":43,"ibnu2651":3}},{"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":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Adds a person to the list.","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * The person must not already exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void add(Person toAdd) {","lastModifiedDate":"2018-08-07"},{"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":"-"},"content":" * Replaces the person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2017-06-07"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":54,"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":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-07"},{"lineNumber":57,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2018-08-08"},{"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":"-"},"content":" if (!target.isSamePerson(editedPerson) \u0026\u0026 contains(editedPerson)) {","lastModifiedDate":"2018-04-19"},{"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":"-"},"content":" internalList.set(index, editedPerson);","lastModifiedDate":"2018-01-10"},{"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":"-"},"content":" * Removes the equivalent person from the list.","lastModifiedDate":"2016-08-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * The person must exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void remove(Person toRemove) {","lastModifiedDate":"2018-08-07"},{"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":"-"},"content":" public void setPersons(UniquePersonList replacement) {","lastModifiedDate":"2016-10-19"},{"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":"-"},"content":" * Replaces the contents of this list with {@code persons}.","lastModifiedDate":"2018-08-07"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2018-08-07"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void setPersons(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-08-07"},{"lineNumber":92,"author":{"gitId":"-"},"content":" requireAllNonNull(persons);","lastModifiedDate":"2018-01-10"},{"lineNumber":93,"author":{"gitId":"-"},"content":" if (!personsAreUnique(persons)) {","lastModifiedDate":"2018-04-19"},{"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":"-"},"content":" internalList.setAll(persons);","lastModifiedDate":"2018-08-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":100,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-09-01"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2017-09-01"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-09-01"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2018-04-05"},{"lineNumber":106,"author":{"gitId":"-"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2018-12-09"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public Iterator\u003cPerson\u003e iterator() {","lastModifiedDate":"2016-08-24"},{"lineNumber":111,"author":{"gitId":"-"},"content":" return internalList.iterator();","lastModifiedDate":"2016-08-24"},{"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":"2016-09-21"},{"lineNumber":115,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"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 UniquePersonList)) {","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":" UniquePersonList otherUniquePersonList \u003d (UniquePersonList) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" return internalList.equals(otherUniquePersonList.internalList);","lastModifiedDate":"2023-07-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":130,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":131,"author":{"gitId":"-"},"content":" return internalList.hashCode();","lastModifiedDate":"2016-09-21"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-24"},{"lineNumber":135,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-24"},{"lineNumber":136,"author":{"gitId":"-"},"content":" return internalList.toString();","lastModifiedDate":"2019-02-24"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24"},{"lineNumber":139,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":140,"author":{"gitId":"-"},"content":" * Returns true if {@code persons} contains only unique persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":141,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":142,"author":{"gitId":"-"},"content":" private boolean personsAreUnique(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-04-19"},{"lineNumber":143,"author":{"gitId":"-"},"content":" for (int i \u003d 0; i \u003c persons.size() - 1; i++) {","lastModifiedDate":"2018-04-19"},{"lineNumber":144,"author":{"gitId":"-"},"content":" for (int j \u003d i + 1; j \u003c persons.size(); j++) {","lastModifiedDate":"2018-04-19"},{"lineNumber":145,"author":{"gitId":"-"},"content":" if (persons.get(i).isSamePerson(persons.get(j))) {","lastModifiedDate":"2018-04-19"},{"lineNumber":146,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-04-19"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":150,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":152,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"Shauryan123":2,"-":150}},{"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":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-20"},{"lineNumber":14,"author":{"gitId":"ibnu2651"},"content":"import seedu.address.model.person.Policy;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"ibnu2651"},"content":"import seedu.address.model.person.Relationship;","lastModifiedDate":"2024-03-17"},{"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":"ibnu2651"},"content":" public static final Policy EMPTY_POLICY \u003d new Policy(\"\");","lastModifiedDate":"2024-03-16"},{"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":"-"},"content":" new Person(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":26,"author":{"gitId":"ibnu2651"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"), new Relationship(\"client\"), EMPTY_POLICY,","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"-"},"content":" getTagSet(\"friends\")),","lastModifiedDate":"2017-03-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":" new Person(new Name(\"Bernice Yu\"), new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":29,"author":{"gitId":"ibnu2651"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"), new Relationship(\"client\"), EMPTY_POLICY,","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"-"},"content":" getTagSet(\"colleagues\", \"friends\")),","lastModifiedDate":"2017-03-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":32,"author":{"gitId":"ibnu2651"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"), new Relationship(\"partner\"), EMPTY_POLICY,","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"-"},"content":" getTagSet(\"neighbours\")),","lastModifiedDate":"2017-03-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":" new Person(new Name(\"David Li\"), new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":35,"author":{"gitId":"ibnu2651"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"), new Relationship(\"client\"), EMPTY_POLICY,","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"-"},"content":" getTagSet(\"family\")),","lastModifiedDate":"2017-03-14"},{"lineNumber":37,"author":{"gitId":"-"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":38,"author":{"gitId":"ibnu2651"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"), new Relationship(\"partner\"), EMPTY_POLICY,","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":" getTagSet(\"classmates\")),","lastModifiedDate":"2017-03-14"},{"lineNumber":40,"author":{"gitId":"-"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":41,"author":{"gitId":"ibnu2651"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"), new Relationship(\"client\"), EMPTY_POLICY,","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"-"},"content":" getTagSet(\"colleagues\"))","lastModifiedDate":"2017-03-14"},{"lineNumber":43,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07"},{"lineNumber":48,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":63,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"ibnu2651":9,"-":54}},{"path":"src/main/java/seedu/address/storage/InsuraConnectBookStorage.java","fileType":"functional-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 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":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":8,"author":{"gitId":"Shauryan123"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-24"},{"lineNumber":12,"author":{"gitId":"Shauryan123"},"content":" * Represents a storage for {@link AddressBook}.","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":14,"author":{"gitId":"Shauryan123"},"content":"public interface InsuraConnectBookStorage {","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Returns the file path of the data file.","lastModifiedDate":"2016-09-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-04-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Returns AddressBook data as a {@link ReadOnlyAddressBook}.","lastModifiedDate":"2024-03-17"},{"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 loading the data from storage failed.","lastModifiedDate":"2023-06-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" Optional\u003cReadOnlyAddressBook\u003e readAddressBook() throws DataLoadingException;","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-01"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @see #getAddressBookFilePath()","lastModifiedDate":"2016-10-01"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":" Optional\u003cReadOnlyAddressBook\u003e readAddressBook(Path filePath) throws DataLoadingException;","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Saves the given {@link ReadOnlyAddressBook} to the storage.","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * @param addressBook cannot be null.","lastModifiedDate":"2016-09-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @throws IOException if there was any problem writing to the file.","lastModifiedDate":"2016-09-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" void saveAddressBook(ReadOnlyAddressBook addressBook) throws IOException;","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * @see #saveAddressBook(ReadOnlyAddressBook)","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":" void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath) throws IOException;","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-24"}],"authorContributionMap":{"Shauryan123":3,"-":43}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedMeeting.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Shauryan123"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-23"},{"lineNumber":2,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":3,"author":{"gitId":"Shauryan123"},"content":"import java.time.Duration;","lastModifiedDate":"2024-03-23"},{"lineNumber":4,"author":{"gitId":"Shauryan123"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"Shauryan123"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-03-24"},{"lineNumber":6,"author":{"gitId":"Shauryan123"},"content":"import java.time.LocalTime;","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"kaiyi27"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-03-24"},{"lineNumber":9,"author":{"gitId":"kaiyi27"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2024-03-24"},{"lineNumber":10,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":11,"author":{"gitId":"kaiyi27"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-24"},{"lineNumber":12,"author":{"gitId":"kaiyi27"},"content":"import seedu.address.model.person.Meeting;","lastModifiedDate":"2024-03-24"},{"lineNumber":13,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":14,"author":{"gitId":"Shauryan123"},"content":"/**","lastModifiedDate":"2024-03-23"},{"lineNumber":15,"author":{"gitId":"Shauryan123"},"content":" * Jackson-friendly version of {@link Meeting}.","lastModifiedDate":"2024-03-23"},{"lineNumber":16,"author":{"gitId":"Shauryan123"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"Shauryan123"},"content":"class JsonAdaptedMeeting {","lastModifiedDate":"2024-03-23"},{"lineNumber":18,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"Shauryan123"},"content":" private final LocalDate meetingDate;","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"Shauryan123"},"content":" private final LocalTime meetingTime;","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":22,"author":{"gitId":"Shauryan123"},"content":" private final LocalDateTime startDateTime;","lastModifiedDate":"2024-03-24"},{"lineNumber":23,"author":{"gitId":"Shauryan123"},"content":" private final Duration duration;","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"Shauryan123"},"content":" private final String agenda;","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"Shauryan123"},"content":" private final String notes;","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":27,"author":{"gitId":"Shauryan123"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":28,"author":{"gitId":"Shauryan123"},"content":" * Constructs a {@code JsonAdaptedMeeting} with the given meeting details.","lastModifiedDate":"2024-03-23"},{"lineNumber":29,"author":{"gitId":"Shauryan123"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"Shauryan123"},"content":" @JsonCreator","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"Shauryan123"},"content":" public JsonAdaptedMeeting(@JsonProperty(\"meetingDate\") LocalDate meetingDate,","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"Shauryan123"},"content":" @JsonProperty(\"meetingTime\") LocalTime meetingTime,","lastModifiedDate":"2024-03-23"},{"lineNumber":33,"author":{"gitId":"Shauryan123"},"content":" @JsonProperty(\"duration\") Duration duration,","lastModifiedDate":"2024-03-23"},{"lineNumber":34,"author":{"gitId":"Shauryan123"},"content":" @JsonProperty(\"agenda\") String agenda,","lastModifiedDate":"2024-03-23"},{"lineNumber":35,"author":{"gitId":"Shauryan123"},"content":" @JsonProperty(\"notes\") String notes) {","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"Shauryan123"},"content":" this.meetingDate \u003d meetingDate;","lastModifiedDate":"2024-03-23"},{"lineNumber":37,"author":{"gitId":"Shauryan123"},"content":" this.meetingTime \u003d meetingTime;","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"Shauryan123"},"content":" this.startDateTime \u003d LocalDateTime.of(meetingDate, meetingTime); // Initialize new field","lastModifiedDate":"2024-03-24"},{"lineNumber":39,"author":{"gitId":"Shauryan123"},"content":" this.duration \u003d duration;","lastModifiedDate":"2024-03-23"},{"lineNumber":40,"author":{"gitId":"Shauryan123"},"content":" this.agenda \u003d agenda;","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"Shauryan123"},"content":" this.notes \u003d notes;","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":43,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":44,"author":{"gitId":"Shauryan123"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":45,"author":{"gitId":"Shauryan123"},"content":" * Converts a given {@code Meeting} into this class for Jackson use.","lastModifiedDate":"2024-03-23"},{"lineNumber":46,"author":{"gitId":"Shauryan123"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":47,"author":{"gitId":"Shauryan123"},"content":" public JsonAdaptedMeeting(Meeting source) {","lastModifiedDate":"2024-03-23"},{"lineNumber":48,"author":{"gitId":"Shauryan123"},"content":" meetingDate \u003d source.getMeetingDate();","lastModifiedDate":"2024-03-23"},{"lineNumber":49,"author":{"gitId":"Shauryan123"},"content":" meetingTime \u003d source.getMeetingTime();","lastModifiedDate":"2024-03-23"},{"lineNumber":50,"author":{"gitId":"Shauryan123"},"content":" startDateTime \u003d source.getStartDateTime(); // Get the new field","lastModifiedDate":"2024-03-24"},{"lineNumber":51,"author":{"gitId":"Shauryan123"},"content":" duration \u003d source.getDuration();","lastModifiedDate":"2024-03-23"},{"lineNumber":52,"author":{"gitId":"Shauryan123"},"content":" agenda \u003d source.getAgenda();","lastModifiedDate":"2024-03-23"},{"lineNumber":53,"author":{"gitId":"Shauryan123"},"content":" notes \u003d source.getNotes();","lastModifiedDate":"2024-03-23"},{"lineNumber":54,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":55,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":56,"author":{"gitId":"Shauryan123"},"content":" @JsonProperty(\"meetingDate\")","lastModifiedDate":"2024-03-23"},{"lineNumber":57,"author":{"gitId":"Shauryan123"},"content":" public LocalDate getMeetingDate() {","lastModifiedDate":"2024-03-23"},{"lineNumber":58,"author":{"gitId":"Shauryan123"},"content":" return meetingDate;","lastModifiedDate":"2024-03-23"},{"lineNumber":59,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":60,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":61,"author":{"gitId":"Shauryan123"},"content":" @JsonProperty(\"meetingTime\")","lastModifiedDate":"2024-03-23"},{"lineNumber":62,"author":{"gitId":"Shauryan123"},"content":" public LocalTime getMeetingTime() {","lastModifiedDate":"2024-03-23"},{"lineNumber":63,"author":{"gitId":"Shauryan123"},"content":" return meetingTime;","lastModifiedDate":"2024-03-23"},{"lineNumber":64,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":65,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":66,"author":{"gitId":"Shauryan123"},"content":" @JsonProperty(\"duration\")","lastModifiedDate":"2024-03-23"},{"lineNumber":67,"author":{"gitId":"Shauryan123"},"content":" public Duration getDuration() {","lastModifiedDate":"2024-03-23"},{"lineNumber":68,"author":{"gitId":"Shauryan123"},"content":" return duration;","lastModifiedDate":"2024-03-23"},{"lineNumber":69,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":70,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":71,"author":{"gitId":"Shauryan123"},"content":" @JsonProperty(\"agenda\")","lastModifiedDate":"2024-03-23"},{"lineNumber":72,"author":{"gitId":"Shauryan123"},"content":" public String getAgenda() {","lastModifiedDate":"2024-03-23"},{"lineNumber":73,"author":{"gitId":"Shauryan123"},"content":" return agenda;","lastModifiedDate":"2024-03-23"},{"lineNumber":74,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":75,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":76,"author":{"gitId":"Shauryan123"},"content":" @JsonProperty(\"notes\")","lastModifiedDate":"2024-03-23"},{"lineNumber":77,"author":{"gitId":"Shauryan123"},"content":" public String getNotes() {","lastModifiedDate":"2024-03-23"},{"lineNumber":78,"author":{"gitId":"Shauryan123"},"content":" return notes;","lastModifiedDate":"2024-03-23"},{"lineNumber":79,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":80,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":81,"author":{"gitId":"Shauryan123"},"content":" @JsonProperty(\"startDateTime\")","lastModifiedDate":"2024-03-24"},{"lineNumber":82,"author":{"gitId":"Shauryan123"},"content":" public LocalDateTime getStartDateTime() {","lastModifiedDate":"2024-03-24"},{"lineNumber":83,"author":{"gitId":"Shauryan123"},"content":" return startDateTime;","lastModifiedDate":"2024-03-24"},{"lineNumber":84,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":85,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":86,"author":{"gitId":"Shauryan123"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":87,"author":{"gitId":"Shauryan123"},"content":" * Converts this Jackson-friendly adapted meeting object into the model\u0027s {@code Meeting} object.","lastModifiedDate":"2024-03-23"},{"lineNumber":88,"author":{"gitId":"Shauryan123"},"content":" *","lastModifiedDate":"2024-03-23"},{"lineNumber":89,"author":{"gitId":"Shauryan123"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted meeting.","lastModifiedDate":"2024-03-23"},{"lineNumber":90,"author":{"gitId":"Shauryan123"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":91,"author":{"gitId":"Shauryan123"},"content":" public Meeting toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-23"},{"lineNumber":92,"author":{"gitId":"Shauryan123"},"content":" // Additional validation can be performed here","lastModifiedDate":"2024-03-23"},{"lineNumber":93,"author":{"gitId":"Shauryan123"},"content":" return new Meeting(meetingDate, meetingTime, duration, agenda, notes);","lastModifiedDate":"2024-03-23"},{"lineNumber":94,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":95,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-23"}],"authorContributionMap":{"Shauryan123":89,"kaiyi27":6}},{"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":"2024-03-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-24"},{"lineNumber":15,"author":{"gitId":"kaiyi27"},"content":"import seedu.address.model.person.Meeting;","lastModifiedDate":"2024-03-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-24"},{"lineNumber":19,"author":{"gitId":"kaiyi27"},"content":"import seedu.address.model.person.Policy;","lastModifiedDate":"2024-03-24"},{"lineNumber":20,"author":{"gitId":"kaiyi27"},"content":"import seedu.address.model.person.Relationship;","lastModifiedDate":"2024-03-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"Shauryan123"},"content":"//class JsonAdaptedPerson {","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"Shauryan123"},"content":"//","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"Shauryan123"},"content":"// public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"Shauryan123"},"content":"//","lastModifiedDate":"2024-03-23"},{"lineNumber":27,"author":{"gitId":"Shauryan123"},"content":"// private final String name;","lastModifiedDate":"2024-03-23"},{"lineNumber":28,"author":{"gitId":"Shauryan123"},"content":"// private final String phone;","lastModifiedDate":"2024-03-23"},{"lineNumber":29,"author":{"gitId":"Shauryan123"},"content":"// private final String email;","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"Shauryan123"},"content":"// private final String address;","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"Shauryan123"},"content":"// private final String policy;","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"Shauryan123"},"content":"// private final String relationship;","lastModifiedDate":"2024-03-23"},{"lineNumber":33,"author":{"gitId":"Shauryan123"},"content":"// private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-23"},{"lineNumber":34,"author":{"gitId":"Shauryan123"},"content":"//","lastModifiedDate":"2024-03-23"},{"lineNumber":35,"author":{"gitId":"Shauryan123"},"content":"// private final List\u003cJsonAdaptedMeeting\u003e meetings \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"Shauryan123"},"content":"//","lastModifiedDate":"2024-03-23"},{"lineNumber":37,"author":{"gitId":"Shauryan123"},"content":"// /**","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"Shauryan123"},"content":"// * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2024-03-23"},{"lineNumber":39,"author":{"gitId":"Shauryan123"},"content":"// */","lastModifiedDate":"2024-03-23"},{"lineNumber":40,"author":{"gitId":"Shauryan123"},"content":"// @JsonCreator","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"Shauryan123"},"content":"// public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"Shauryan123"},"content":"// @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2024-03-23"},{"lineNumber":43,"author":{"gitId":"Shauryan123"},"content":"// @JsonProperty(\"relationship\") String relationship, @JsonProperty(\"policy\") String policy,","lastModifiedDate":"2024-03-23"},{"lineNumber":44,"author":{"gitId":"Shauryan123"},"content":"// @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags) {","lastModifiedDate":"2024-03-23"},{"lineNumber":45,"author":{"gitId":"Shauryan123"},"content":"//","lastModifiedDate":"2024-03-23"},{"lineNumber":46,"author":{"gitId":"Shauryan123"},"content":"// this.name \u003d name;","lastModifiedDate":"2024-03-23"},{"lineNumber":47,"author":{"gitId":"Shauryan123"},"content":"// this.phone \u003d phone;","lastModifiedDate":"2024-03-23"},{"lineNumber":48,"author":{"gitId":"Shauryan123"},"content":"// this.email \u003d email;","lastModifiedDate":"2024-03-23"},{"lineNumber":49,"author":{"gitId":"Shauryan123"},"content":"// this.address \u003d address;","lastModifiedDate":"2024-03-23"},{"lineNumber":50,"author":{"gitId":"Shauryan123"},"content":"// this.policy \u003d policy;","lastModifiedDate":"2024-03-23"},{"lineNumber":51,"author":{"gitId":"Shauryan123"},"content":"// this.relationship \u003d relationship;","lastModifiedDate":"2024-03-23"},{"lineNumber":52,"author":{"gitId":"Shauryan123"},"content":"//","lastModifiedDate":"2024-03-23"},{"lineNumber":53,"author":{"gitId":"Shauryan123"},"content":"// if (tags !\u003d null) {","lastModifiedDate":"2024-03-23"},{"lineNumber":54,"author":{"gitId":"Shauryan123"},"content":"// this.tags.addAll(tags);","lastModifiedDate":"2024-03-23"},{"lineNumber":55,"author":{"gitId":"Shauryan123"},"content":"// }","lastModifiedDate":"2024-03-23"},{"lineNumber":56,"author":{"gitId":"Shauryan123"},"content":"//","lastModifiedDate":"2024-03-23"},{"lineNumber":57,"author":{"gitId":"Shauryan123"},"content":"//","lastModifiedDate":"2024-03-23"},{"lineNumber":58,"author":{"gitId":"Shauryan123"},"content":"// }","lastModifiedDate":"2024-03-23"},{"lineNumber":59,"author":{"gitId":"Shauryan123"},"content":"//","lastModifiedDate":"2024-03-23"},{"lineNumber":60,"author":{"gitId":"Shauryan123"},"content":"// /**","lastModifiedDate":"2024-03-23"},{"lineNumber":61,"author":{"gitId":"Shauryan123"},"content":"// * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2024-03-23"},{"lineNumber":62,"author":{"gitId":"Shauryan123"},"content":"// */","lastModifiedDate":"2024-03-23"},{"lineNumber":63,"author":{"gitId":"Shauryan123"},"content":"// public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2024-03-23"},{"lineNumber":64,"author":{"gitId":"Shauryan123"},"content":"// name \u003d source.getName().fullName;","lastModifiedDate":"2024-03-23"},{"lineNumber":65,"author":{"gitId":"Shauryan123"},"content":"// phone \u003d source.getPhone().value;","lastModifiedDate":"2024-03-23"},{"lineNumber":66,"author":{"gitId":"Shauryan123"},"content":"// email \u003d source.getEmail().value;","lastModifiedDate":"2024-03-23"},{"lineNumber":67,"author":{"gitId":"Shauryan123"},"content":"// address \u003d source.getAddress().value;","lastModifiedDate":"2024-03-23"},{"lineNumber":68,"author":{"gitId":"Shauryan123"},"content":"// policy \u003d source.getPolicy().value;","lastModifiedDate":"2024-03-23"},{"lineNumber":69,"author":{"gitId":"Shauryan123"},"content":"// relationship \u003d source.getRelationship().value;","lastModifiedDate":"2024-03-23"},{"lineNumber":70,"author":{"gitId":"Shauryan123"},"content":"// tags.addAll(source.getTags().stream()","lastModifiedDate":"2024-03-23"},{"lineNumber":71,"author":{"gitId":"Shauryan123"},"content":"// .map(JsonAdaptedTag::new)","lastModifiedDate":"2024-03-23"},{"lineNumber":72,"author":{"gitId":"Shauryan123"},"content":"// .collect(Collectors.toList()));","lastModifiedDate":"2024-03-23"},{"lineNumber":73,"author":{"gitId":"Shauryan123"},"content":"// }","lastModifiedDate":"2024-03-23"},{"lineNumber":74,"author":{"gitId":"Shauryan123"},"content":"//","lastModifiedDate":"2024-03-23"},{"lineNumber":75,"author":{"gitId":"Shauryan123"},"content":"// /**","lastModifiedDate":"2024-03-23"},{"lineNumber":76,"author":{"gitId":"Shauryan123"},"content":"// * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2024-03-23"},{"lineNumber":77,"author":{"gitId":"Shauryan123"},"content":"// *","lastModifiedDate":"2024-03-23"},{"lineNumber":78,"author":{"gitId":"Shauryan123"},"content":"// * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2024-03-23"},{"lineNumber":79,"author":{"gitId":"Shauryan123"},"content":"// */","lastModifiedDate":"2024-03-23"},{"lineNumber":80,"author":{"gitId":"Shauryan123"},"content":"// public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-23"},{"lineNumber":81,"author":{"gitId":"Shauryan123"},"content":"// final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-23"},{"lineNumber":82,"author":{"gitId":"Shauryan123"},"content":"// for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2024-03-23"},{"lineNumber":83,"author":{"gitId":"Shauryan123"},"content":"// personTags.add(tag.toModelType());","lastModifiedDate":"2024-03-23"},{"lineNumber":84,"author":{"gitId":"Shauryan123"},"content":"// }","lastModifiedDate":"2024-03-23"},{"lineNumber":85,"author":{"gitId":"Shauryan123"},"content":"//","lastModifiedDate":"2024-03-23"},{"lineNumber":86,"author":{"gitId":"Shauryan123"},"content":"// if (name \u003d\u003d null) {","lastModifiedDate":"2024-03-23"},{"lineNumber":87,"author":{"gitId":"Shauryan123"},"content":"// throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2024-03-23"},{"lineNumber":88,"author":{"gitId":"Shauryan123"},"content":"// }","lastModifiedDate":"2024-03-23"},{"lineNumber":89,"author":{"gitId":"Shauryan123"},"content":"// if (!Name.isValidName(name)) {","lastModifiedDate":"2024-03-23"},{"lineNumber":90,"author":{"gitId":"Shauryan123"},"content":"// throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-23"},{"lineNumber":91,"author":{"gitId":"Shauryan123"},"content":"// }","lastModifiedDate":"2024-03-23"},{"lineNumber":92,"author":{"gitId":"Shauryan123"},"content":"// final Name modelName \u003d new Name(name);","lastModifiedDate":"2024-03-23"},{"lineNumber":93,"author":{"gitId":"Shauryan123"},"content":"//","lastModifiedDate":"2024-03-23"},{"lineNumber":94,"author":{"gitId":"Shauryan123"},"content":"// if (phone \u003d\u003d null) {","lastModifiedDate":"2024-03-23"},{"lineNumber":95,"author":{"gitId":"Shauryan123"},"content":"// throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2024-03-23"},{"lineNumber":96,"author":{"gitId":"Shauryan123"},"content":"// }","lastModifiedDate":"2024-03-23"},{"lineNumber":97,"author":{"gitId":"Shauryan123"},"content":"// if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2024-03-23"},{"lineNumber":98,"author":{"gitId":"Shauryan123"},"content":"// throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-23"},{"lineNumber":99,"author":{"gitId":"Shauryan123"},"content":"// }","lastModifiedDate":"2024-03-23"},{"lineNumber":100,"author":{"gitId":"Shauryan123"},"content":"// final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2024-03-23"},{"lineNumber":101,"author":{"gitId":"Shauryan123"},"content":"//","lastModifiedDate":"2024-03-23"},{"lineNumber":102,"author":{"gitId":"Shauryan123"},"content":"// if (email \u003d\u003d null) {","lastModifiedDate":"2024-03-23"},{"lineNumber":103,"author":{"gitId":"Shauryan123"},"content":"// throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2024-03-23"},{"lineNumber":104,"author":{"gitId":"Shauryan123"},"content":"// }","lastModifiedDate":"2024-03-23"},{"lineNumber":105,"author":{"gitId":"Shauryan123"},"content":"// if (!Email.isValidEmail(email)) {","lastModifiedDate":"2024-03-23"},{"lineNumber":106,"author":{"gitId":"Shauryan123"},"content":"// throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-23"},{"lineNumber":107,"author":{"gitId":"Shauryan123"},"content":"// }","lastModifiedDate":"2024-03-23"},{"lineNumber":108,"author":{"gitId":"Shauryan123"},"content":"// final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2024-03-23"},{"lineNumber":109,"author":{"gitId":"Shauryan123"},"content":"//","lastModifiedDate":"2024-03-23"},{"lineNumber":110,"author":{"gitId":"Shauryan123"},"content":"// if (address \u003d\u003d null) {","lastModifiedDate":"2024-03-23"},{"lineNumber":111,"author":{"gitId":"kaiyi27"},"content":"// throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-24"},{"lineNumber":112,"author":{"gitId":"kaiyi27"},"content":"// Address.class.getSimpleName()));","lastModifiedDate":"2024-03-24"},{"lineNumber":113,"author":{"gitId":"Shauryan123"},"content":"// }","lastModifiedDate":"2024-03-23"},{"lineNumber":114,"author":{"gitId":"Shauryan123"},"content":"// if (!Address.isValidAddress(address)) {","lastModifiedDate":"2024-03-23"},{"lineNumber":115,"author":{"gitId":"Shauryan123"},"content":"// throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-23"},{"lineNumber":116,"author":{"gitId":"Shauryan123"},"content":"// }","lastModifiedDate":"2024-03-23"},{"lineNumber":117,"author":{"gitId":"Shauryan123"},"content":"// final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2024-03-23"},{"lineNumber":118,"author":{"gitId":"Shauryan123"},"content":"//","lastModifiedDate":"2024-03-23"},{"lineNumber":119,"author":{"gitId":"Shauryan123"},"content":"// if (relationship \u003d\u003d null) {","lastModifiedDate":"2024-03-23"},{"lineNumber":120,"author":{"gitId":"Shauryan123"},"content":"// throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-23"},{"lineNumber":121,"author":{"gitId":"Shauryan123"},"content":"// Relationship.class.getSimpleName()));","lastModifiedDate":"2024-03-23"},{"lineNumber":122,"author":{"gitId":"Shauryan123"},"content":"// }","lastModifiedDate":"2024-03-23"},{"lineNumber":123,"author":{"gitId":"Shauryan123"},"content":"// if (!Relationship.isValidRelationship(relationship)) {","lastModifiedDate":"2024-03-23"},{"lineNumber":124,"author":{"gitId":"Shauryan123"},"content":"// throw new IllegalValueException(Relationship.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-23"},{"lineNumber":125,"author":{"gitId":"Shauryan123"},"content":"// }","lastModifiedDate":"2024-03-23"},{"lineNumber":126,"author":{"gitId":"Shauryan123"},"content":"// final Relationship modelRelationship \u003d new Relationship(relationship);","lastModifiedDate":"2024-03-23"},{"lineNumber":127,"author":{"gitId":"Shauryan123"},"content":"//","lastModifiedDate":"2024-03-23"},{"lineNumber":128,"author":{"gitId":"Shauryan123"},"content":"// if (policy \u003d\u003d null) {","lastModifiedDate":"2024-03-23"},{"lineNumber":129,"author":{"gitId":"kaiyi27"},"content":"// throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-24"},{"lineNumber":130,"author":{"gitId":"kaiyi27"},"content":"// Policy.class.getSimpleName()));","lastModifiedDate":"2024-03-24"},{"lineNumber":131,"author":{"gitId":"Shauryan123"},"content":"// }","lastModifiedDate":"2024-03-23"},{"lineNumber":132,"author":{"gitId":"Shauryan123"},"content":"// final Policy modelPolicy \u003d new Policy(policy);","lastModifiedDate":"2024-03-23"},{"lineNumber":133,"author":{"gitId":"Shauryan123"},"content":"//","lastModifiedDate":"2024-03-23"},{"lineNumber":134,"author":{"gitId":"Shauryan123"},"content":"// final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2024-03-23"},{"lineNumber":135,"author":{"gitId":"Shauryan123"},"content":"//","lastModifiedDate":"2024-03-23"},{"lineNumber":136,"author":{"gitId":"Shauryan123"},"content":"// return new Person(modelName, modelPhone, modelEmail, modelAddress, modelRelationship, modelPolicy, modelTags);","lastModifiedDate":"2024-03-23"},{"lineNumber":137,"author":{"gitId":"Shauryan123"},"content":"//","lastModifiedDate":"2024-03-23"},{"lineNumber":138,"author":{"gitId":"Shauryan123"},"content":"// }","lastModifiedDate":"2024-03-23"},{"lineNumber":139,"author":{"gitId":"Shauryan123"},"content":"//","lastModifiedDate":"2024-03-23"},{"lineNumber":140,"author":{"gitId":"Shauryan123"},"content":"//}","lastModifiedDate":"2024-03-23"},{"lineNumber":141,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":142,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":143,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":144,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":146,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13"},{"lineNumber":147,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":148,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":150,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13"},{"lineNumber":153,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":154,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13"},{"lineNumber":155,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13"},{"lineNumber":156,"author":{"gitId":"ibnu2651"},"content":" private final String policy;","lastModifiedDate":"2024-03-16"},{"lineNumber":157,"author":{"gitId":"kaiyi27"},"content":" private final String relationship;","lastModifiedDate":"2024-03-10"},{"lineNumber":158,"author":{"gitId":"Shauryan123"},"content":" private final List\u003cJsonAdaptedTag\u003e adaptedTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-23"},{"lineNumber":159,"author":{"gitId":"Shauryan123"},"content":" private final List\u003cJsonAdaptedMeeting\u003e adaptedMeetings \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":161,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13"},{"lineNumber":163,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":164,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":165,"author":{"gitId":"Shauryan123"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name,","lastModifiedDate":"2024-03-23"},{"lineNumber":166,"author":{"gitId":"Shauryan123"},"content":" @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2024-03-23"},{"lineNumber":167,"author":{"gitId":"Shauryan123"},"content":" @JsonProperty(\"email\") String email,","lastModifiedDate":"2024-03-23"},{"lineNumber":168,"author":{"gitId":"Shauryan123"},"content":" @JsonProperty(\"address\") String address,","lastModifiedDate":"2024-03-23"},{"lineNumber":169,"author":{"gitId":"Shauryan123"},"content":" @JsonProperty(\"relationship\") String relationship,","lastModifiedDate":"2024-03-23"},{"lineNumber":170,"author":{"gitId":"Shauryan123"},"content":" @JsonProperty(\"policy\") String policy,","lastModifiedDate":"2024-03-23"},{"lineNumber":171,"author":{"gitId":"Shauryan123"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e adaptedTags,","lastModifiedDate":"2024-03-23"},{"lineNumber":172,"author":{"gitId":"Shauryan123"},"content":" @JsonProperty(\"meetings\") List\u003cJsonAdaptedMeeting\u003e adaptedMeetings) {","lastModifiedDate":"2024-03-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13"},{"lineNumber":174,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":175,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13"},{"lineNumber":176,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13"},{"lineNumber":177,"author":{"gitId":"ibnu2651"},"content":" this.policy \u003d policy;","lastModifiedDate":"2024-03-16"},{"lineNumber":178,"author":{"gitId":"kaiyi27"},"content":" this.relationship \u003d relationship;","lastModifiedDate":"2024-03-10"},{"lineNumber":179,"author":{"gitId":"Shauryan123"},"content":" if (adaptedTags !\u003d null) {","lastModifiedDate":"2024-03-23"},{"lineNumber":180,"author":{"gitId":"Shauryan123"},"content":" this.adaptedTags.addAll(adaptedTags);","lastModifiedDate":"2024-03-23"},{"lineNumber":181,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":182,"author":{"gitId":"Shauryan123"},"content":" if (adaptedMeetings !\u003d null) {","lastModifiedDate":"2024-03-23"},{"lineNumber":183,"author":{"gitId":"Shauryan123"},"content":" this.adaptedMeetings.addAll(adaptedMeetings);","lastModifiedDate":"2024-03-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":187,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":188,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":189,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":190,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":191,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13"},{"lineNumber":192,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":193,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":194,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":195,"author":{"gitId":"ibnu2651"},"content":" policy \u003d source.getPolicy().value;","lastModifiedDate":"2024-03-16"},{"lineNumber":196,"author":{"gitId":"kaiyi27"},"content":" relationship \u003d source.getRelationship().value;","lastModifiedDate":"2024-03-10"},{"lineNumber":197,"author":{"gitId":"Shauryan123"},"content":" adaptedTags.addAll(source.getTags().stream()","lastModifiedDate":"2024-03-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":199,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13"},{"lineNumber":200,"author":{"gitId":"Shauryan123"},"content":" adaptedMeetings.addAll(source.getMeetings().stream()","lastModifiedDate":"2024-03-23"},{"lineNumber":201,"author":{"gitId":"Shauryan123"},"content":" .map(JsonAdaptedMeeting::new)","lastModifiedDate":"2024-03-23"},{"lineNumber":202,"author":{"gitId":"Shauryan123"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2024-03-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":205,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":206,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":207,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":208,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13"},{"lineNumber":209,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":210,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":211,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13"},{"lineNumber":212,"author":{"gitId":"Shauryan123"},"content":" for (JsonAdaptedTag tag : adaptedTags) {","lastModifiedDate":"2024-03-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":214,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":216,"author":{"gitId":"Shauryan123"},"content":" final List\u003cMeeting\u003e personMeetings \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-23"},{"lineNumber":217,"author":{"gitId":"Shauryan123"},"content":" for (JsonAdaptedMeeting meeting : adaptedMeetings) {","lastModifiedDate":"2024-03-23"},{"lineNumber":218,"author":{"gitId":"Shauryan123"},"content":" personMeetings.add(meeting.toModelType());","lastModifiedDate":"2024-03-23"},{"lineNumber":219,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":220,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":222,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":223,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":224,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":225,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":226,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":227,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":229,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":230,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":231,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":232,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":233,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":234,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":235,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":237,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":238,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":239,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":240,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":241,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":242,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":243,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13"},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":245,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":246,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":247,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":248,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":249,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":250,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":251,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13"},{"lineNumber":252,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":253,"author":{"gitId":"kaiyi27"},"content":" if (relationship \u003d\u003d null) {","lastModifiedDate":"2024-03-10"},{"lineNumber":254,"author":{"gitId":"kaiyi27"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-10"},{"lineNumber":255,"author":{"gitId":"kaiyi27"},"content":" Relationship.class.getSimpleName()));","lastModifiedDate":"2024-03-10"},{"lineNumber":256,"author":{"gitId":"kaiyi27"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":257,"author":{"gitId":"kaiyi27"},"content":" if (!Relationship.isValidRelationship(relationship)) {","lastModifiedDate":"2024-03-10"},{"lineNumber":258,"author":{"gitId":"kaiyi27"},"content":" throw new IllegalValueException(Relationship.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-10"},{"lineNumber":259,"author":{"gitId":"kaiyi27"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":260,"author":{"gitId":"kaiyi27"},"content":" final Relationship modelRelationship \u003d new Relationship(relationship);","lastModifiedDate":"2024-03-10"},{"lineNumber":261,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":262,"author":{"gitId":"ibnu2651"},"content":" if (policy \u003d\u003d null) {","lastModifiedDate":"2024-03-16"},{"lineNumber":263,"author":{"gitId":"ibnu2651"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Policy.class.getSimpleName()));","lastModifiedDate":"2024-03-16"},{"lineNumber":264,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":265,"author":{"gitId":"ibnu2651"},"content":" final Policy modelPolicy \u003d new Policy(policy);","lastModifiedDate":"2024-03-16"},{"lineNumber":266,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":267,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13"},{"lineNumber":268,"author":{"gitId":"kaiyi27"},"content":" final Person person \u003d new Person(modelName, modelPhone, modelEmail, modelAddress, modelRelationship,","lastModifiedDate":"2024-03-24"},{"lineNumber":269,"author":{"gitId":"kaiyi27"},"content":" modelPolicy, modelTags);","lastModifiedDate":"2024-03-24"},{"lineNumber":270,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":271,"author":{"gitId":"Shauryan123"},"content":" // Add meetings to the person","lastModifiedDate":"2024-03-23"},{"lineNumber":272,"author":{"gitId":"Shauryan123"},"content":" for (Meeting meeting : personMeetings) {","lastModifiedDate":"2024-03-23"},{"lineNumber":273,"author":{"gitId":"Shauryan123"},"content":" person.addMeeting(meeting);","lastModifiedDate":"2024-03-23"},{"lineNumber":274,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":275,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":276,"author":{"gitId":"Shauryan123"},"content":" return person;","lastModifiedDate":"2024-03-23"},{"lineNumber":277,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":279,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"},{"lineNumber":280,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":281,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":282,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":283,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":284,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"}],"authorContributionMap":{"Shauryan123":153,"kaiyi27":21,"ibnu2651":10,"-":100}},{"path":"src/main/java/seedu/address/storage/JsonInsuraConnectBookStorage.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 static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.io.IOException;","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.util.Optional;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.FileUtil;","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * A class to access AddressBook data stored as a json file on the hard disk.","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"Shauryan123"},"content":"public class JsonInsuraConnectBookStorage implements InsuraConnectBookStorage {","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"Shauryan123"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(JsonInsuraConnectBookStorage.class);","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private Path filePath;","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"Shauryan123"},"content":" public JsonInsuraConnectBookStorage(Path filePath) {","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" return filePath;","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":" @Override","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public Optional\u003cReadOnlyAddressBook\u003e readAddressBook() throws DataLoadingException {","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"-"},"content":" return readAddressBook(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":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Similar to {@link #readAddressBook()}.","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2023-06-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public Optional\u003cReadOnlyAddressBook\u003e readAddressBook(Path filePath) throws DataLoadingException {","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"-"},"content":" requireNonNull(filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" Optional\u003cJsonSerializableAddressBook\u003e jsonAddressBook \u003d JsonUtil.readJsonFile(","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" filePath, JsonSerializableAddressBook.class);","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" if (!jsonAddressBook.isPresent()) {","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return Optional.of(jsonAddressBook.get().toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" logger.info(\"Illegal values found in \" + filePath + \": \" + ive.getMessage());","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" throw new DataLoadingException(ive);","lastModifiedDate":"2023-06-14"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook) throws IOException {","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"-"},"content":" saveAddressBook(addressBook, filePath);","lastModifiedDate":"2018-08-13"},{"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":" * Similar to {@link #saveAddressBook(ReadOnlyAddressBook)}.","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath) throws IOException {","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"-"},"content":" requireNonNull(addressBook);","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" requireNonNull(filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" FileUtil.createIfMissing(filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" JsonUtil.saveJsonFile(new JsonSerializableAddressBook(addressBook), filePath);","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":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"Shauryan123":3,"-":77}},{"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":"2024-03-17"},{"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":"-"},"content":" * API of the Storage component","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"Shauryan123"},"content":"public interface Storage extends InsuraConnectBookStorage, UserPrefsStorage {","lastModifiedDate":"2024-03-17"},{"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":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-04-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" Optional\u003cReadOnlyAddressBook\u003e readAddressBook() throws DataLoadingException;","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" void saveAddressBook(ReadOnlyAddressBook addressBook) throws IOException;","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"Shauryan123":1,"-":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":"2024-03-17"},{"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":"-"},"content":" * Manages storage of AddressBook data in local storage.","lastModifiedDate":"2016-09-24"},{"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":"Shauryan123"},"content":" private InsuraConnectBookStorage insuraConnectBookStorage;","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private UserPrefsStorage userPrefsStorage;","lastModifiedDate":"2016-10-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Creates a {@code StorageManager} with the given {@code AddressBookStorage} and {@code UserPrefStorage}.","lastModifiedDate":"2020-05-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":26,"author":{"gitId":"Shauryan123"},"content":" public StorageManager(InsuraConnectBookStorage insuraConnectBookStorage, UserPrefsStorage userPrefsStorage) {","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"Shauryan123"},"content":" this.insuraConnectBookStorage \u003d insuraConnectBookStorage;","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"-"},"content":" this.userPrefsStorage \u003d userPrefsStorage;","lastModifiedDate":"2016-10-01"},{"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":"-"},"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":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":53,"author":{"gitId":"Shauryan123"},"content":" return insuraConnectBookStorage.getAddressBookFilePath();","lastModifiedDate":"2024-03-17"},{"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":"-"},"content":" public Optional\u003cReadOnlyAddressBook\u003e readAddressBook() throws DataLoadingException {","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"Shauryan123"},"content":" return readAddressBook(insuraConnectBookStorage.getAddressBookFilePath());","lastModifiedDate":"2024-03-17"},{"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":"-"},"content":" public Optional\u003cReadOnlyAddressBook\u003e readAddressBook(Path filePath) throws DataLoadingException {","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"-"},"content":" logger.fine(\"Attempting to read data from file: \" + filePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":64,"author":{"gitId":"Shauryan123"},"content":" return insuraConnectBookStorage.readAddressBook(filePath);","lastModifiedDate":"2024-03-17"},{"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":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook) throws IOException {","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"Shauryan123"},"content":" saveAddressBook(addressBook, insuraConnectBookStorage.getAddressBookFilePath());","lastModifiedDate":"2024-03-17"},{"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":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath) throws IOException {","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"-"},"content":" logger.fine(\"Attempting to write to data file: \" + filePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":75,"author":{"gitId":"Shauryan123"},"content":" insuraConnectBookStorage.saveAddressBook(addressBook, filePath);","lastModifiedDate":"2024-03-17"},{"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":{"Shauryan123":8,"-":70}},{"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":"Shauryan123"},"content":"import java.time.Duration;","lastModifiedDate":"2024-03-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21"},{"lineNumber":7,"author":{"gitId":"Shauryan123"},"content":"import javafx.scene.Node;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"kaiyi27"},"content":"import javafx.scene.control.Accordion;","lastModifiedDate":"2024-03-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21"},{"lineNumber":10,"author":{"gitId":"Shauryan123"},"content":"import javafx.scene.control.ScrollPane;","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"Shauryan123"},"content":"import javafx.scene.control.TitledPane;","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"Shauryan123"},"content":"import javafx.scene.effect.DropShadow;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"Shauryan123"},"content":"import javafx.scene.input.MouseEvent;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":17,"author":{"gitId":"Shauryan123"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2024-03-23"},{"lineNumber":18,"author":{"gitId":"Shauryan123"},"content":"import javafx.scene.paint.Color;","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"Shauryan123"},"content":"import seedu.address.model.person.Meeting;","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2017-08-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2016-09-21"},{"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 address;","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":"kaiyi27"},"content":" private Label relationship;","lastModifiedDate":"2024-03-10"},{"lineNumber":43,"author":{"gitId":"kaiyi27"},"content":" @FXML","lastModifiedDate":"2024-03-10"},{"lineNumber":44,"author":{"gitId":"ibnu2651"},"content":" private Label policy;","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"ibnu2651"},"content":" @FXML","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18"},{"lineNumber":47,"author":{"gitId":"Shauryan123"},"content":" @FXML","lastModifiedDate":"2024-03-23"},{"lineNumber":48,"author":{"gitId":"Shauryan123"},"content":" private Accordion meetingsAccordion;","lastModifiedDate":"2024-03-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":51,"author":{"gitId":"Shauryan123"},"content":" * Creates a {@code PersonCard} with the given {@code Person} and index to display.","lastModifiedDate":"2024-03-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" address.setText(person.getAddress().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":61,"author":{"gitId":"kaiyi27"},"content":" relationship.setText(person.getRelationship().value);","lastModifiedDate":"2024-03-10"},{"lineNumber":62,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":63,"author":{"gitId":"kaiyi27"},"content":" policy.setText(person.getPolicy().value.isEmpty() ? \"No policy assigned\" : \"Policy: \"","lastModifiedDate":"2024-03-24"},{"lineNumber":64,"author":{"gitId":"kaiyi27"},"content":" + person.getPolicy().value);","lastModifiedDate":"2024-03-24"},{"lineNumber":65,"author":{"gitId":"kaiyi27"},"content":" policy.setStyle(person.getPolicy().value.isEmpty() ? \"-fx-background-color: #f54242\"","lastModifiedDate":"2024-03-24"},{"lineNumber":66,"author":{"gitId":"kaiyi27"},"content":" : \"-fx-background-color: #1fab2f\");","lastModifiedDate":"2024-03-24"},{"lineNumber":67,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":68,"author":{"gitId":"Shauryan123"},"content":" if (!person.isClient()) {","lastModifiedDate":"2024-03-23"},{"lineNumber":69,"author":{"gitId":"Shauryan123"},"content":" policy.setVisible(false);","lastModifiedDate":"2024-03-23"},{"lineNumber":70,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":71,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":72,"author":{"gitId":"Shauryan123"},"content":" tags.getChildren().clear();","lastModifiedDate":"2024-03-23"},{"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":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"Shauryan123"},"content":" meetingsAccordion.getPanes().clear();","lastModifiedDate":"2024-03-23"},{"lineNumber":78,"author":{"gitId":"Shauryan123"},"content":" if (!person.getMeetings().isEmpty()) {","lastModifiedDate":"2024-03-23"},{"lineNumber":79,"author":{"gitId":"Shauryan123"},"content":" for (Meeting meeting : person.getMeetings()) {","lastModifiedDate":"2024-03-23"},{"lineNumber":80,"author":{"gitId":"Shauryan123"},"content":" TitledPane meetingPane \u003d createMeetingEntry(meeting);","lastModifiedDate":"2024-03-23"},{"lineNumber":81,"author":{"gitId":"Shauryan123"},"content":" meetingsAccordion.getPanes().add(meetingPane);","lastModifiedDate":"2024-03-23"},{"lineNumber":82,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":83,"author":{"gitId":"Shauryan123"},"content":" } else {","lastModifiedDate":"2024-03-23"},{"lineNumber":84,"author":{"gitId":"kaiyi27"},"content":" TitledPane noMeetingsPane \u003d new TitledPane(\"No meetings scheduled\",","lastModifiedDate":"2024-03-24"},{"lineNumber":85,"author":{"gitId":"kaiyi27"},"content":" new Label(\"No scheduled meetings\"));","lastModifiedDate":"2024-03-24"},{"lineNumber":86,"author":{"gitId":"Shauryan123"},"content":" noMeetingsPane.setDisable(true);","lastModifiedDate":"2024-03-23"},{"lineNumber":87,"author":{"gitId":"Shauryan123"},"content":" meetingsAccordion.getPanes().add(noMeetingsPane);","lastModifiedDate":"2024-03-23"},{"lineNumber":88,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":90,"author":{"gitId":"Shauryan123"},"content":" applyHoverEffect(cardPane);","lastModifiedDate":"2024-03-23"},{"lineNumber":91,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":92,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":93,"author":{"gitId":"Shauryan123"},"content":" private TitledPane createMeetingEntry(Meeting meeting) {","lastModifiedDate":"2024-03-23"},{"lineNumber":94,"author":{"gitId":"Shauryan123"},"content":" VBox meetingDetails \u003d new VBox(5); // Padding around the VBox content","lastModifiedDate":"2024-03-23"},{"lineNumber":95,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":96,"author":{"gitId":"Shauryan123"},"content":" // Create styled labels for the headings","lastModifiedDate":"2024-03-23"},{"lineNumber":97,"author":{"gitId":"Shauryan123"},"content":" Label dateHeading \u003d new Label(\"Date: \");","lastModifiedDate":"2024-03-23"},{"lineNumber":98,"author":{"gitId":"Shauryan123"},"content":" dateHeading.setStyle(\"-fx-font-weight: bold !important; -fx-text-fill: #2a2a2a !important;\");","lastModifiedDate":"2024-03-23"},{"lineNumber":99,"author":{"gitId":"Shauryan123"},"content":" Label dateLabel \u003d new Label(meeting.getMeetingDate().toString());","lastModifiedDate":"2024-03-23"},{"lineNumber":100,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":101,"author":{"gitId":"Shauryan123"},"content":" Label timeHeading \u003d new Label(\"Time: \");","lastModifiedDate":"2024-03-23"},{"lineNumber":102,"author":{"gitId":"Shauryan123"},"content":" timeHeading.setStyle(\"-fx-font-weight: bold !important; -fx-text-fill: #2a2a2a !important;\");","lastModifiedDate":"2024-03-23"},{"lineNumber":103,"author":{"gitId":"Shauryan123"},"content":" Label timeLabel \u003d new Label(meeting.getMeetingTime().toString());","lastModifiedDate":"2024-03-23"},{"lineNumber":104,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":105,"author":{"gitId":"Shauryan123"},"content":" Label agendaHeading \u003d new Label(\"Agenda: \");","lastModifiedDate":"2024-03-23"},{"lineNumber":106,"author":{"gitId":"Shauryan123"},"content":" agendaHeading.setStyle(\"-fx-font-weight: bold !important; -fx-text-fill: #2a2a2a !important;\");","lastModifiedDate":"2024-03-23"},{"lineNumber":107,"author":{"gitId":"Shauryan123"},"content":" Label agendaLabel \u003d new Label(meeting.getAgenda());","lastModifiedDate":"2024-03-23"},{"lineNumber":108,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":109,"author":{"gitId":"Shauryan123"},"content":" Label notesHeading \u003d new Label(\"Notes: \");","lastModifiedDate":"2024-03-23"},{"lineNumber":110,"author":{"gitId":"Shauryan123"},"content":" notesHeading.setStyle(\"-fx-font-weight: bold !important; -fx-text-fill: #2a2a2a !important;\");","lastModifiedDate":"2024-03-23"},{"lineNumber":111,"author":{"gitId":"Shauryan123"},"content":" Label notesLabel \u003d new Label(meeting.getNotes());","lastModifiedDate":"2024-03-23"},{"lineNumber":112,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":113,"author":{"gitId":"Shauryan123"},"content":" Label durationHeading \u003d new Label(\"Duration: \");","lastModifiedDate":"2024-03-23"},{"lineNumber":114,"author":{"gitId":"Shauryan123"},"content":" durationHeading.setStyle(\"-fx-font-weight: bold !important; -fx-text-fill: #2a2a2a !important;\");","lastModifiedDate":"2024-03-23"},{"lineNumber":115,"author":{"gitId":"Shauryan123"},"content":" Label durationLabel \u003d new Label(formatDuration(meeting.getDuration()));","lastModifiedDate":"2024-03-23"},{"lineNumber":116,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":117,"author":{"gitId":"Shauryan123"},"content":" // Combine the headings and content into horizontal layouts","lastModifiedDate":"2024-03-23"},{"lineNumber":118,"author":{"gitId":"Shauryan123"},"content":" HBox dateBox \u003d new HBox(dateHeading, dateLabel);","lastModifiedDate":"2024-03-23"},{"lineNumber":119,"author":{"gitId":"Shauryan123"},"content":" HBox timeBox \u003d new HBox(timeHeading, timeLabel);","lastModifiedDate":"2024-03-23"},{"lineNumber":120,"author":{"gitId":"Shauryan123"},"content":" HBox agendaBox \u003d new HBox(agendaHeading, agendaLabel);","lastModifiedDate":"2024-03-23"},{"lineNumber":121,"author":{"gitId":"Shauryan123"},"content":" HBox notesBox \u003d new HBox(notesHeading, notesLabel);","lastModifiedDate":"2024-03-23"},{"lineNumber":122,"author":{"gitId":"Shauryan123"},"content":" HBox durationBox \u003d new HBox(durationHeading, durationLabel);","lastModifiedDate":"2024-03-23"},{"lineNumber":123,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":124,"author":{"gitId":"Shauryan123"},"content":" // Add some spacing between the heading and content","lastModifiedDate":"2024-03-23"},{"lineNumber":125,"author":{"gitId":"Shauryan123"},"content":" dateBox.setSpacing(5);","lastModifiedDate":"2024-03-23"},{"lineNumber":126,"author":{"gitId":"Shauryan123"},"content":" timeBox.setSpacing(5);","lastModifiedDate":"2024-03-23"},{"lineNumber":127,"author":{"gitId":"Shauryan123"},"content":" agendaBox.setSpacing(5);","lastModifiedDate":"2024-03-23"},{"lineNumber":128,"author":{"gitId":"Shauryan123"},"content":" notesBox.setSpacing(5);","lastModifiedDate":"2024-03-23"},{"lineNumber":129,"author":{"gitId":"Shauryan123"},"content":" durationBox.setSpacing(5);","lastModifiedDate":"2024-03-23"},{"lineNumber":130,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":131,"author":{"gitId":"Shauryan123"},"content":" // Add all HBoxes to the VBox","lastModifiedDate":"2024-03-23"},{"lineNumber":132,"author":{"gitId":"Shauryan123"},"content":" meetingDetails.getChildren().addAll(dateBox, timeBox, durationBox, agendaBox, notesBox);","lastModifiedDate":"2024-03-23"},{"lineNumber":133,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":134,"author":{"gitId":"Shauryan123"},"content":" // Wrap the VBox in a ScrollPane","lastModifiedDate":"2024-03-23"},{"lineNumber":135,"author":{"gitId":"Shauryan123"},"content":" ScrollPane scrollPane \u003d new ScrollPane(meetingDetails);","lastModifiedDate":"2024-03-23"},{"lineNumber":136,"author":{"gitId":"Shauryan123"},"content":" scrollPane.setFitToHeight(true); // Ensures the scroll pane fits the height of VBox","lastModifiedDate":"2024-03-23"},{"lineNumber":137,"author":{"gitId":"Shauryan123"},"content":" scrollPane.setHbarPolicy(ScrollPane.ScrollBarPolicy.AS_NEEDED); // Only show the horizontal bar when needed","lastModifiedDate":"2024-03-23"},{"lineNumber":138,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":139,"author":{"gitId":"Shauryan123"},"content":" // Create the TitledPane","lastModifiedDate":"2024-03-23"},{"lineNumber":140,"author":{"gitId":"Shauryan123"},"content":" TitledPane meetingPane \u003d new TitledPane(\"Meeting on \" + meeting.getMeetingDate().toString(), scrollPane);","lastModifiedDate":"2024-03-23"},{"lineNumber":141,"author":{"gitId":"Shauryan123"},"content":" meetingPane.setAnimated(true); // Enable animation","lastModifiedDate":"2024-03-23"},{"lineNumber":142,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":143,"author":{"gitId":"Shauryan123"},"content":" return meetingPane;","lastModifiedDate":"2024-03-23"},{"lineNumber":144,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":145,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":146,"author":{"gitId":"Shauryan123"},"content":" private String formatDuration(Duration duration) {","lastModifiedDate":"2024-03-23"},{"lineNumber":147,"author":{"gitId":"Shauryan123"},"content":" long seconds \u003d duration.getSeconds();","lastModifiedDate":"2024-03-23"},{"lineNumber":148,"author":{"gitId":"Shauryan123"},"content":" long absSeconds \u003d Math.abs(seconds);","lastModifiedDate":"2024-03-23"},{"lineNumber":149,"author":{"gitId":"Shauryan123"},"content":" String positive \u003d String.format(","lastModifiedDate":"2024-03-23"},{"lineNumber":150,"author":{"gitId":"Shauryan123"},"content":" \"%d:%02d:%02d\",","lastModifiedDate":"2024-03-23"},{"lineNumber":151,"author":{"gitId":"kaiyi27"},"content":" absSeconds / 3600, (","lastModifiedDate":"2024-03-24"},{"lineNumber":152,"author":{"gitId":"kaiyi27"},"content":" absSeconds % 3600) / 60,","lastModifiedDate":"2024-03-24"},{"lineNumber":153,"author":{"gitId":"Shauryan123"},"content":" absSeconds % 60);","lastModifiedDate":"2024-03-23"},{"lineNumber":154,"author":{"gitId":"Shauryan123"},"content":" return seconds \u003c 0 ? \"-\" + positive : positive;","lastModifiedDate":"2024-03-23"},{"lineNumber":155,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":156,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":157,"author":{"gitId":"Shauryan123"},"content":" private void applyHoverEffect(Node node) {","lastModifiedDate":"2024-03-21"},{"lineNumber":158,"author":{"gitId":"Shauryan123"},"content":" DropShadow hoverShadow \u003d new DropShadow();","lastModifiedDate":"2024-03-21"},{"lineNumber":159,"author":{"gitId":"Shauryan123"},"content":" hoverShadow.setColor(Color.PLUM);","lastModifiedDate":"2024-03-23"},{"lineNumber":160,"author":{"gitId":"Shauryan123"},"content":" hoverShadow.setRadius(30);","lastModifiedDate":"2024-03-21"},{"lineNumber":161,"author":{"gitId":"Shauryan123"},"content":" hoverShadow.setSpread(0.5);","lastModifiedDate":"2024-03-21"},{"lineNumber":162,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":163,"author":{"gitId":"Shauryan123"},"content":" node.addEventHandler(MouseEvent.MOUSE_ENTERED, e -\u003e node.setEffect(hoverShadow));","lastModifiedDate":"2024-03-23"},{"lineNumber":164,"author":{"gitId":"Shauryan123"},"content":" node.addEventHandler(MouseEvent.MOUSE_EXITED, e -\u003e node.setEffect(null));","lastModifiedDate":"2024-03-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":166,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"Shauryan123":104,"kaiyi27":12,"ibnu2651":2,"-":48}},{"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":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-17"},{"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":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":".label-header {","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":".text-field {","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":".tab-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" -fx-min-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" -fx-max-height: 0;","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":".table-view {","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" -fx-base: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" -fx-control-inner-background: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"Shauryan123"},"content":" -fx-padding: 10;","lastModifiedDate":"2024-03-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"-"},"content":".table-view .column-header-background {","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: #44106B;","lastModifiedDate":"2024-03-20"},{"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":"Shauryan123"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2024-03-20"},{"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":"Shauryan123"},"content":".table-view:focused .table-row-cell.list-cell {","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: #DC4247;","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"-"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2016-08-08"},{"lineNumber":82,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"Shauryan123"},"content":".table-view .table-row-cell:focused {","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":89,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"-"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2016-08-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":92,"author":{"gitId":"-"},"content":" -fx-border-color: transparent transparent transparent #4d4d4d;","lastModifiedDate":"2017-03-02"},{"lineNumber":93,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":95,"author":{"gitId":"-"},"content":".split-pane {","lastModifiedDate":"2016-08-15"},{"lineNumber":96,"author":{"gitId":"-"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":97,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":99,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"Shauryan123"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2024-03-23"},{"lineNumber":102,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2024-03-23"},{"lineNumber":103,"author":{"gitId":"Shauryan123"},"content":" -fx-border-color: transparent transparent transparent #4d4d4d;","lastModifiedDate":"2024-03-23"},{"lineNumber":104,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":105,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":106,"author":{"gitId":"Shauryan123"},"content":".split-pane {","lastModifiedDate":"2024-03-23"},{"lineNumber":107,"author":{"gitId":"Shauryan123"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2024-03-23"},{"lineNumber":108,"author":{"gitId":"Shauryan123"},"content":" -fx-border-width: 1;","lastModifiedDate":"2024-03-23"},{"lineNumber":109,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: derive(#222831, 20%);","lastModifiedDate":"2024-03-23"},{"lineNumber":110,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":111,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":112,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":113,"author":{"gitId":"Shauryan123"},"content":"/* TableView styling */","lastModifiedDate":"2024-03-23"},{"lineNumber":114,"author":{"gitId":"Shauryan123"},"content":".table-view {","lastModifiedDate":"2024-03-23"},{"lineNumber":115,"author":{"gitId":"Shauryan123"},"content":" -fx-base: #23272A; /* Base color for table */","lastModifiedDate":"2024-03-23"},{"lineNumber":116,"author":{"gitId":"Shauryan123"},"content":" -fx-control-inner-background: #23272A; /* Background color of table rows */","lastModifiedDate":"2024-03-23"},{"lineNumber":117,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: #23272A;","lastModifiedDate":"2024-03-23"},{"lineNumber":118,"author":{"gitId":"Shauryan123"},"content":" -fx-table-cell-border-color: #2C2F33; /* Border color for cells */","lastModifiedDate":"2024-03-23"},{"lineNumber":119,"author":{"gitId":"Shauryan123"},"content":" -fx-table-header-border-color: #2C2F33; /* Border color for header */","lastModifiedDate":"2024-03-23"},{"lineNumber":120,"author":{"gitId":"Shauryan123"},"content":" -fx-padding: 5;","lastModifiedDate":"2024-03-23"},{"lineNumber":121,"author":{"gitId":"Shauryan123"},"content":" -fx-border-radius: 5; /* Rounded corners for the table */","lastModifiedDate":"2024-03-23"},{"lineNumber":122,"author":{"gitId":"Shauryan123"},"content":" -fx-background-radius: 5;","lastModifiedDate":"2024-03-23"},{"lineNumber":123,"author":{"gitId":"Shauryan123"},"content":" -fx-effect: dropshadow(three-pass-box, rgba(0, 0, 0, 0.75), 5, 0, 0, 1); /* Subtle shadow around table */","lastModifiedDate":"2024-03-23"},{"lineNumber":124,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":125,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":126,"author":{"gitId":"Shauryan123"},"content":".table-view .column-header-background {","lastModifiedDate":"2024-03-23"},{"lineNumber":127,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: #23272A; /* Background of the header */","lastModifiedDate":"2024-03-23"},{"lineNumber":128,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":129,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":130,"author":{"gitId":"Shauryan123"},"content":".table-view .column-header {","lastModifiedDate":"2024-03-23"},{"lineNumber":131,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-23"},{"lineNumber":132,"author":{"gitId":"Shauryan123"},"content":" -fx-border-color: transparent transparent #4C4F52 transparent; /* Color of the separator line */","lastModifiedDate":"2024-03-23"},{"lineNumber":133,"author":{"gitId":"Shauryan123"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2024-03-23"},{"lineNumber":134,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":135,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":136,"author":{"gitId":"Shauryan123"},"content":".table-view .column-header .label {","lastModifiedDate":"2024-03-23"},{"lineNumber":137,"author":{"gitId":"Shauryan123"},"content":" -fx-font-size: 14pt; /* Reduced font size for better table header */","lastModifiedDate":"2024-03-23"},{"lineNumber":138,"author":{"gitId":"Shauryan123"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2024-03-23"},{"lineNumber":139,"author":{"gitId":"Shauryan123"},"content":" -fx-text-fill: #FFFFFF;","lastModifiedDate":"2024-03-23"},{"lineNumber":140,"author":{"gitId":"Shauryan123"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2024-03-23"},{"lineNumber":141,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":142,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":143,"author":{"gitId":"Shauryan123"},"content":".table-view .table-row-cell {","lastModifiedDate":"2024-03-23"},{"lineNumber":144,"author":{"gitId":"Shauryan123"},"content":" -fx-border-color: #2C2F33;","lastModifiedDate":"2024-03-23"},{"lineNumber":145,"author":{"gitId":"Shauryan123"},"content":" -fx-border-width: 0;","lastModifiedDate":"2024-03-23"},{"lineNumber":146,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: #23272A; /* Background color for table cells */","lastModifiedDate":"2024-03-23"},{"lineNumber":147,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":148,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":149,"author":{"gitId":"Shauryan123"},"content":".table-view .table-row-cell:hover {","lastModifiedDate":"2024-03-23"},{"lineNumber":150,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: #2C2F33; /* Slightly lighter on hover */","lastModifiedDate":"2024-03-23"},{"lineNumber":151,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":152,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":153,"author":{"gitId":"Shauryan123"},"content":".table-view:focused .table-row-cell:focused:selected, .table-view:focused .table-row-cell:selected {","lastModifiedDate":"2024-03-23"},{"lineNumber":154,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: #40444B; /* Selection color */","lastModifiedDate":"2024-03-23"},{"lineNumber":155,"author":{"gitId":"Shauryan123"},"content":" -fx-text-fill: #FFFFFF; /* Text color when row is selected */","lastModifiedDate":"2024-03-23"},{"lineNumber":156,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":157,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":158,"author":{"gitId":"Shauryan123"},"content":"/* Scroll bar styles for a clean and modern look */","lastModifiedDate":"2024-03-23"},{"lineNumber":159,"author":{"gitId":"Shauryan123"},"content":".scroll-bar {","lastModifiedDate":"2024-03-23"},{"lineNumber":160,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-23"},{"lineNumber":161,"author":{"gitId":"Shauryan123"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2024-03-23"},{"lineNumber":162,"author":{"gitId":"Shauryan123"},"content":" -fx-background-radius: 3;","lastModifiedDate":"2024-03-23"},{"lineNumber":163,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":164,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":165,"author":{"gitId":"Shauryan123"},"content":".scroll-bar:vertical .thumb, .scroll-bar:horizontal .thumb {","lastModifiedDate":"2024-03-23"},{"lineNumber":166,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: #4C4F52;","lastModifiedDate":"2024-03-23"},{"lineNumber":167,"author":{"gitId":"Shauryan123"},"content":" -fx-background-radius: 3em;","lastModifiedDate":"2024-03-23"},{"lineNumber":168,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":169,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":170,"author":{"gitId":"Shauryan123"},"content":".scroll-bar:vertical .thumb:hover, .scroll-bar:horizontal .thumb:hover {","lastModifiedDate":"2024-03-23"},{"lineNumber":171,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: #686D70;","lastModifiedDate":"2024-03-23"},{"lineNumber":172,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":173,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":174,"author":{"gitId":"Shauryan123"},"content":".scroll-bar:vertical .increment-button, .scroll-bar:vertical .decrement-button,","lastModifiedDate":"2024-03-23"},{"lineNumber":175,"author":{"gitId":"Shauryan123"},"content":".scroll-bar:horizontal .increment-button, .scroll-bar:horizontal .decrement-button {","lastModifiedDate":"2024-03-23"},{"lineNumber":176,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-23"},{"lineNumber":177,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":178,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":".list-view {","lastModifiedDate":"2017-03-02"},{"lineNumber":180,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":181,"author":{"gitId":"-"},"content":" -fx-padding: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":182,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2018-01-10"},{"lineNumber":183,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":185,"author":{"gitId":"-"},"content":".list-cell {","lastModifiedDate":"2016-08-08"},{"lineNumber":186,"author":{"gitId":"-"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":187,"author":{"gitId":"-"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":188,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":189,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":191,"author":{"gitId":"-"},"content":".list-cell:filled:even {","lastModifiedDate":"2017-03-02"},{"lineNumber":192,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: #32337D;","lastModifiedDate":"2024-03-20"},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":195,"author":{"gitId":"-"},"content":".list-cell:filled:odd {","lastModifiedDate":"2017-03-02"},{"lineNumber":196,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: #4C3C78;","lastModifiedDate":"2024-03-20"},{"lineNumber":197,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":199,"author":{"gitId":"-"},"content":".list-cell:filled:selected {","lastModifiedDate":"2017-03-02"},{"lineNumber":200,"author":{"gitId":"-"},"content":" -fx-background-color: #424d5f;","lastModifiedDate":"2017-03-02"},{"lineNumber":201,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":203,"author":{"gitId":"-"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2017-03-02"},{"lineNumber":204,"author":{"gitId":"-"},"content":" -fx-border-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":205,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":206,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":208,"author":{"gitId":"-"},"content":".list-cell .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":209,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":210,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":212,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":213,"author":{"gitId":"Shauryan123"},"content":"/* Override the default JavaFX behavior for list view cells when clicked/focused */","lastModifiedDate":"2024-03-23"},{"lineNumber":214,"author":{"gitId":"Shauryan123"},"content":".list-cell, .list-cell:filled:focused {","lastModifiedDate":"2024-03-23"},{"lineNumber":215,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-23"},{"lineNumber":216,"author":{"gitId":"Shauryan123"},"content":" -fx-border-color: transparent;","lastModifiedDate":"2024-03-23"},{"lineNumber":217,"author":{"gitId":"Shauryan123"},"content":" -fx-outline: none;","lastModifiedDate":"2024-03-23"},{"lineNumber":218,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":219,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":".cell_big_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":221,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":222,"author":{"gitId":"-"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2016-08-08"},{"lineNumber":223,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":224,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":226,"author":{"gitId":"-"},"content":".cell_small_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":227,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2022-01-13"},{"lineNumber":228,"author":{"gitId":"-"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2017-03-02"},{"lineNumber":229,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":230,"author":{"gitId":"Shauryan123"},"content":" -fx-padding: 3px;","lastModifiedDate":"2024-03-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-03-17"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":233,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":234,"author":{"gitId":"-"},"content":".stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":235,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: derive(#222831, 20%);","lastModifiedDate":"2024-03-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":238,"author":{"gitId":"-"},"content":".pane-with-border {","lastModifiedDate":"2017-05-15"},{"lineNumber":239,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: derive(#222831, 20%);","lastModifiedDate":"2024-03-23"},{"lineNumber":240,"author":{"gitId":"Shauryan123"},"content":" -fx-border-color: #222831;","lastModifiedDate":"2024-03-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2017-05-09"},{"lineNumber":242,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":244,"author":{"gitId":"-"},"content":".status-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":245,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: derive(#222831, 30%);","lastModifiedDate":"2024-03-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":247,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":248,"author":{"gitId":"-"},"content":".result-display {","lastModifiedDate":"2016-09-14"},{"lineNumber":249,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: #3c3e3f;","lastModifiedDate":"2024-03-20"},{"lineNumber":250,"author":{"gitId":"Shauryan123"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2024-03-20"},{"lineNumber":251,"author":{"gitId":"Shauryan123"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2024-03-20"},{"lineNumber":252,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":253,"author":{"gitId":"Shauryan123"},"content":" -fx-opacity: 1;","lastModifiedDate":"2024-03-20"},{"lineNumber":254,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":256,"author":{"gitId":"Shauryan123"},"content":"#resultDisplay {","lastModifiedDate":"2024-03-23"},{"lineNumber":257,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":258,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":259,"author":{"gitId":"Shauryan123"},"content":"#resultDisplay .content {","lastModifiedDate":"2024-03-23"},{"lineNumber":260,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: FBF3D5;","lastModifiedDate":"2024-03-23"},{"lineNumber":261,"author":{"gitId":"Shauryan123"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2024-03-23"},{"lineNumber":262,"author":{"gitId":"Shauryan123"},"content":" -fx-border-width: 3;","lastModifiedDate":"2024-03-23"},{"lineNumber":263,"author":{"gitId":"Shauryan123"},"content":" -fx-border-color: black;","lastModifiedDate":"2024-03-23"},{"lineNumber":264,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":266,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":267,"author":{"gitId":"-"},"content":".result-display .label {","lastModifiedDate":"2016-09-14"},{"lineNumber":268,"author":{"gitId":"Shauryan123"},"content":" -fx-text-fill: white !important;","lastModifiedDate":"2024-03-20"},{"lineNumber":269,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":271,"author":{"gitId":"-"},"content":".status-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":272,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":273,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":274,"author":{"gitId":"-"},"content":" -fx-padding: 4px;","lastModifiedDate":"2018-12-08"},{"lineNumber":275,"author":{"gitId":"-"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2018-12-08"},{"lineNumber":276,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":278,"author":{"gitId":"-"},"content":".status-bar-with-border {","lastModifiedDate":"2016-08-08"},{"lineNumber":279,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: derive(#222831, 30%);","lastModifiedDate":"2024-03-23"},{"lineNumber":280,"author":{"gitId":"Shauryan123"},"content":" -fx-border-color: derive(#222831, 25%);","lastModifiedDate":"2024-03-23"},{"lineNumber":281,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","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":".status-bar-with-border .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":285,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":286,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":288,"author":{"gitId":"-"},"content":".grid-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":289,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":290,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":291,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":292,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":293,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":294,"author":{"gitId":"-"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":295,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: derive(#222831, 30%);","lastModifiedDate":"2024-03-23"},{"lineNumber":296,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":298,"author":{"gitId":"-"},"content":".context-menu {","lastModifiedDate":"2016-08-08"},{"lineNumber":299,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: derive(#222831, 50%);","lastModifiedDate":"2024-03-23"},{"lineNumber":300,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":302,"author":{"gitId":"-"},"content":".context-menu .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":303,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":304,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":306,"author":{"gitId":"-"},"content":".menu-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":307,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: derive(#222831, 20%);","lastModifiedDate":"2024-03-23"},{"lineNumber":308,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":310,"author":{"gitId":"-"},"content":".menu-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":311,"author":{"gitId":"-"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":312,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":313,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":314,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":315,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":316,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":317,"author":{"gitId":"-"},"content":".menu .left-container {","lastModifiedDate":"2016-08-08"},{"lineNumber":318,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: #222831;","lastModifiedDate":"2024-03-23"},{"lineNumber":319,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":320,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":321,"author":{"gitId":"-"},"content":"/*","lastModifiedDate":"2016-08-08"},{"lineNumber":322,"author":{"gitId":"-"},"content":" * Metro style Push Button","lastModifiedDate":"2016-08-08"},{"lineNumber":323,"author":{"gitId":"-"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2016-08-08"},{"lineNumber":324,"author":{"gitId":"-"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2016-08-08"},{"lineNumber":325,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":326,"author":{"gitId":"-"},"content":".button {","lastModifiedDate":"2016-08-08"},{"lineNumber":327,"author":{"gitId":"-"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2016-08-08"},{"lineNumber":328,"author":{"gitId":"-"},"content":" -fx-border-color: #e2e2e2;","lastModifiedDate":"2016-08-08"},{"lineNumber":329,"author":{"gitId":"-"},"content":" -fx-border-width: 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":330,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":331,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":332,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2022-01-13"},{"lineNumber":333,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":334,"author":{"gitId":"-"},"content":" -fx-text-fill: #d8d8d8;","lastModifiedDate":"2016-08-08"},{"lineNumber":335,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","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":".button:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":339,"author":{"gitId":"-"},"content":" -fx-background-color: #3a3a3a;","lastModifiedDate":"2016-08-08"},{"lineNumber":340,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":341,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":342,"author":{"gitId":"-"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2016-08-08"},{"lineNumber":343,"author":{"gitId":"-"},"content":" -fx-background-color: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":344,"author":{"gitId":"-"},"content":" -fx-text-fill: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":345,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":346,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":347,"author":{"gitId":"-"},"content":".button:focused {","lastModifiedDate":"2016-08-08"},{"lineNumber":348,"author":{"gitId":"-"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2016-08-08"},{"lineNumber":349,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":350,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08"},{"lineNumber":351,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":352,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":353,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":355,"author":{"gitId":"-"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08"},{"lineNumber":356,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08"},{"lineNumber":357,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":358,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":359,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":360,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":361,"author":{"gitId":"-"},"content":".button:default {","lastModifiedDate":"2016-08-08"},{"lineNumber":362,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":363,"author":{"gitId":"-"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2016-08-08"},{"lineNumber":364,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":365,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":366,"author":{"gitId":"-"},"content":".button:default:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":367,"author":{"gitId":"-"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2016-08-08"},{"lineNumber":368,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":369,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":370,"author":{"gitId":"-"},"content":".dialog-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":371,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":372,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":373,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":374,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2016-08-08"},{"lineNumber":375,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":376,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":377,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":378,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2016-08-08"},{"lineNumber":379,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08"},{"lineNumber":380,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2016-08-08"},{"lineNumber":381,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":382,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":383,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":384,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2016-08-08"},{"lineNumber":385,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":386,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":387,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":388,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2016-08-08"},{"lineNumber":389,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08"},{"lineNumber":390,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08"},{"lineNumber":391,"author":{"gitId":"-"},"content":" -fx-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":392,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":393,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":394,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":395,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02"},{"lineNumber":396,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":397,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":398,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":399,"author":{"gitId":"-"},"content":".scroll-bar .thumb {","lastModifiedDate":"2016-08-15"},{"lineNumber":400,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":401,"author":{"gitId":"-"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2016-08-15"},{"lineNumber":402,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":403,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":404,"author":{"gitId":"-"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2016-08-15"},{"lineNumber":405,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-15"},{"lineNumber":406,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-15"},{"lineNumber":407,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":408,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":409,"author":{"gitId":"-"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2016-08-15"},{"lineNumber":410,"author":{"gitId":"-"},"content":" -fx-shape: \" \";","lastModifiedDate":"2016-08-15"},{"lineNumber":411,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":412,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":413,"author":{"gitId":"-"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":414,"author":{"gitId":"-"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2016-08-15"},{"lineNumber":415,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":416,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":417,"author":{"gitId":"-"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":418,"author":{"gitId":"-"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2016-08-18"},{"lineNumber":419,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":420,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":421,"author":{"gitId":"-"},"content":"#cardPane {","lastModifiedDate":"2016-08-08"},{"lineNumber":422,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":423,"author":{"gitId":"-"},"content":" -fx-border-width: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":424,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":425,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":426,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08"},{"lineNumber":427,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08"},{"lineNumber":428,"author":{"gitId":"-"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2016-08-08"},{"lineNumber":429,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":430,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":431,"author":{"gitId":"-"},"content":"#commandTextField {","lastModifiedDate":"2017-03-02"},{"lineNumber":432,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: #ADDBB6;","lastModifiedDate":"2024-03-20"},{"lineNumber":433,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":434,"author":{"gitId":"Shauryan123"},"content":" -fx-border-color: #383838 #383838 #50AB64 #383838;","lastModifiedDate":"2024-03-20"},{"lineNumber":435,"author":{"gitId":"-"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":436,"author":{"gitId":"Shauryan123"},"content":" -fx-border-width: 2;","lastModifiedDate":"2024-03-23"},{"lineNumber":437,"author":{"gitId":"Shauryan123"},"content":" -fx-font-family: \"Segoe UI Bold\";","lastModifiedDate":"2024-03-20"},{"lineNumber":438,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":439,"author":{"gitId":"Shauryan123"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-20"},{"lineNumber":440,"author":{"gitId":"Shauryan123"},"content":" -fx-prompt-text-fill: #545454;","lastModifiedDate":"2024-03-20"},{"lineNumber":441,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":442,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":443,"author":{"gitId":"-"},"content":"#filterField, #personListPanel, #personWebpage {","lastModifiedDate":"2016-08-15"},{"lineNumber":444,"author":{"gitId":"-"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2016-08-15"},{"lineNumber":445,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":446,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":447,"author":{"gitId":"-"},"content":"#resultDisplay .content {","lastModifiedDate":"2017-03-02"},{"lineNumber":448,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: black;","lastModifiedDate":"2024-03-20"},{"lineNumber":449,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":450,"author":{"gitId":"Shauryan123"},"content":" -fx-border-width: 3;","lastModifiedDate":"2024-03-20"},{"lineNumber":451,"author":{"gitId":"Shauryan123"},"content":" -fx-border-color: white;","lastModifiedDate":"2024-03-23"},{"lineNumber":452,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":453,"author":{"gitId":"-"},"content":"#tags {","lastModifiedDate":"2016-12-18"},{"lineNumber":454,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2016-12-18"},{"lineNumber":455,"author":{"gitId":"-"},"content":" -fx-vgap: 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":456,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":457,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":458,"author":{"gitId":"-"},"content":"#tags .label {","lastModifiedDate":"2016-12-18"},{"lineNumber":459,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-12-18"},{"lineNumber":460,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: #D97930;","lastModifiedDate":"2024-03-20"},{"lineNumber":461,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":462,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":463,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":464,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2016-12-18"},{"lineNumber":465,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":466,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":467,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":468,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":469,"author":{"gitId":"Shauryan123"},"content":"/* Scroll pane styles */","lastModifiedDate":"2024-03-23"},{"lineNumber":470,"author":{"gitId":"Shauryan123"},"content":".scroll-pane {","lastModifiedDate":"2024-03-23"},{"lineNumber":471,"author":{"gitId":"Shauryan123"},"content":" -fx-background: transparent;","lastModifiedDate":"2024-03-23"},{"lineNumber":472,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-23"},{"lineNumber":473,"author":{"gitId":"Shauryan123"},"content":" -fx-background-radius: 5 !important; /* Rounded corners for the content box */","lastModifiedDate":"2024-03-23"},{"lineNumber":474,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":475,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":476,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":477,"author":{"gitId":"Shauryan123"},"content":"/* Accordion styles for both collapsed and expanded */","lastModifiedDate":"2024-03-23"},{"lineNumber":478,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":479,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":480,"author":{"gitId":"Shauryan123"},"content":".accordion .titled-pane .content * {","lastModifiedDate":"2024-03-23"},{"lineNumber":481,"author":{"gitId":"Shauryan123"},"content":" -fx-text-fill: black !important; /* Or any color that is visible against the content background */","lastModifiedDate":"2024-03-23"},{"lineNumber":482,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":483,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":484,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":485,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":486,"author":{"gitId":"Shauryan123"},"content":".accordion .titled-pane:expanded {","lastModifiedDate":"2024-03-23"},{"lineNumber":487,"author":{"gitId":"Shauryan123"},"content":" -fx-transition-type: slide-vertical !important;","lastModifiedDate":"2024-03-23"},{"lineNumber":488,"author":{"gitId":"Shauryan123"},"content":" -fx-transition-duration: 2s !important;","lastModifiedDate":"2024-03-23"},{"lineNumber":489,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":490,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":491,"author":{"gitId":"Shauryan123"},"content":".accordion .titled-pane:expanded \u003e .content {","lastModifiedDate":"2024-03-23"},{"lineNumber":492,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: #D6DAC8; /* Color of the content when expanded */","lastModifiedDate":"2024-03-23"},{"lineNumber":493,"author":{"gitId":"Shauryan123"},"content":" -fx-padding: 10px !important;","lastModifiedDate":"2024-03-23"},{"lineNumber":494,"author":{"gitId":"Shauryan123"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2024-03-23"},{"lineNumber":495,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":496,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":497,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":498,"author":{"gitId":"Shauryan123"},"content":"/* Apply shadow effect on hover */","lastModifiedDate":"2024-03-23"},{"lineNumber":499,"author":{"gitId":"Shauryan123"},"content":".accordion .titled-pane:hover {","lastModifiedDate":"2024-03-23"},{"lineNumber":500,"author":{"gitId":"Shauryan123"},"content":" -fx-effect: dropshadow(gaussian, rgba(255, 255, 255, 0.8), 10, 0, 0, 0) !important;","lastModifiedDate":"2024-03-23"},{"lineNumber":501,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":502,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":503,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":504,"author":{"gitId":"Shauryan123"},"content":"/* TitledPane styling when collapsed */","lastModifiedDate":"2024-03-23"},{"lineNumber":505,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":506,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":507,"author":{"gitId":"Shauryan123"},"content":"/* Subtle shadow for the collapsed titled pane for depth */","lastModifiedDate":"2024-03-23"},{"lineNumber":508,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":509,"author":{"gitId":"Shauryan123"},"content":"/* Enhance the overall accordion appearance */","lastModifiedDate":"2024-03-23"},{"lineNumber":510,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":511,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":512,"author":{"gitId":"Shauryan123"},"content":".meeting-details-container {","lastModifiedDate":"2024-03-23"},{"lineNumber":513,"author":{"gitId":"Shauryan123"},"content":" -fx-background-radius: 5 !important;","lastModifiedDate":"2024-03-23"},{"lineNumber":514,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":515,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":516,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":517,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":518,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":519,"author":{"gitId":"Shauryan123"},"content":"/* Person card styles */","lastModifiedDate":"2024-03-23"},{"lineNumber":520,"author":{"gitId":"Shauryan123"},"content":".person-card {","lastModifiedDate":"2024-03-23"},{"lineNumber":521,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: #f9f9f9;","lastModifiedDate":"2024-03-23"},{"lineNumber":522,"author":{"gitId":"Shauryan123"},"content":" -fx-background-radius: 5;","lastModifiedDate":"2024-03-23"},{"lineNumber":523,"author":{"gitId":"Shauryan123"},"content":" -fx-padding: 10;","lastModifiedDate":"2024-03-23"},{"lineNumber":524,"author":{"gitId":"Shauryan123"},"content":" -fx-border-width: 0;","lastModifiedDate":"2024-03-23"},{"lineNumber":525,"author":{"gitId":"Shauryan123"},"content":" -fx-border-color: transparent;","lastModifiedDate":"2024-03-23"},{"lineNumber":526,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":527,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":528,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":529,"author":{"gitId":"Shauryan123"},"content":"/* Tags styling */","lastModifiedDate":"2024-03-23"},{"lineNumber":530,"author":{"gitId":"Shauryan123"},"content":".tags-container .label {","lastModifiedDate":"2024-03-23"},{"lineNumber":531,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: #a3a3a3;","lastModifiedDate":"2024-03-23"},{"lineNumber":532,"author":{"gitId":"Shauryan123"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-23"},{"lineNumber":533,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":534,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":535,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":536,"author":{"gitId":"Shauryan123"},"content":".relationship-label {","lastModifiedDate":"2024-03-23"},{"lineNumber":537,"author":{"gitId":"Shauryan123"},"content":" -fx-text-fill: #EFBC9B !important; /* A soft pink color */","lastModifiedDate":"2024-03-23"},{"lineNumber":538,"author":{"gitId":"Shauryan123"},"content":" -fx-font-size: 14px !important;","lastModifiedDate":"2024-03-23"},{"lineNumber":539,"author":{"gitId":"Shauryan123"},"content":" -fx-padding: 3 !important;","lastModifiedDate":"2024-03-23"},{"lineNumber":540,"author":{"gitId":"Shauryan123"},"content":" -fx-font-weight: bold !important;","lastModifiedDate":"2024-03-23"},{"lineNumber":541,"author":{"gitId":"Shauryan123"},"content":" -fx-text-transform: uppercase !important; /* Transform text to uppercase */","lastModifiedDate":"2024-03-23"},{"lineNumber":542,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":543,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":544,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":545,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":546,"author":{"gitId":"Shauryan123"},"content":".policy-label {","lastModifiedDate":"2024-03-23"},{"lineNumber":547,"author":{"gitId":"Shauryan123"},"content":" -fx-font-family: \"Segoe UI\" !important;","lastModifiedDate":"2024-03-23"},{"lineNumber":548,"author":{"gitId":"Shauryan123"},"content":" -fx-font-size: 13px !important;","lastModifiedDate":"2024-03-23"},{"lineNumber":549,"author":{"gitId":"Shauryan123"},"content":" -fx-text-fill: #010504 !important;","lastModifiedDate":"2024-03-23"},{"lineNumber":550,"author":{"gitId":"Shauryan123"},"content":" -fx-background-radius: 3px !important;","lastModifiedDate":"2024-03-23"},{"lineNumber":551,"author":{"gitId":"Shauryan123"},"content":" -fx-padding: 1 3 1 3 !important;","lastModifiedDate":"2024-03-23"},{"lineNumber":552,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":553,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":554,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":555,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":556,"author":{"gitId":"Shauryan123"},"content":"/* Accordion panel styling */","lastModifiedDate":"2024-03-23"},{"lineNumber":557,"author":{"gitId":"Shauryan123"},"content":".accordion {","lastModifiedDate":"2024-03-23"},{"lineNumber":558,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: #F3CCF3 !important; /* Light grey background */","lastModifiedDate":"2024-03-23"},{"lineNumber":559,"author":{"gitId":"Shauryan123"},"content":" -fx-border-color: #646464; /* Grey border */","lastModifiedDate":"2024-03-23"},{"lineNumber":560,"author":{"gitId":"Shauryan123"},"content":" -fx-border-radius: 10px; /* Rounded corners for the accordion */","lastModifiedDate":"2024-03-23"},{"lineNumber":561,"author":{"gitId":"Shauryan123"},"content":" -fx-background-radius: 10px; /* Rounded corners for the accordion background */","lastModifiedDate":"2024-03-23"},{"lineNumber":562,"author":{"gitId":"Shauryan123"},"content":" -fx-border-width: 2px; /* Width of the border */","lastModifiedDate":"2024-03-23"},{"lineNumber":563,"author":{"gitId":"Shauryan123"},"content":" -fx-padding: 5px; /* Padding inside the accordion */","lastModifiedDate":"2024-03-23"},{"lineNumber":564,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":565,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":566,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":567,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":568,"author":{"gitId":"Shauryan123"},"content":"/* TitledPane styling when collapsed */","lastModifiedDate":"2024-03-23"},{"lineNumber":569,"author":{"gitId":"Shauryan123"},"content":".accordion .titled-pane:collapsed {","lastModifiedDate":"2024-03-23"},{"lineNumber":570,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: #e7e7e7; /* A slightly darker grey for collapsed panes */","lastModifiedDate":"2024-03-23"},{"lineNumber":571,"author":{"gitId":"Shauryan123"},"content":" -fx-background-radius: 8px; /* Slightly less rounded corners for collapsed panes */","lastModifiedDate":"2024-03-23"},{"lineNumber":572,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":573,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":574,"author":{"gitId":"Shauryan123"},"content":"/* TitledPane styling when expanded */","lastModifiedDate":"2024-03-23"},{"lineNumber":575,"author":{"gitId":"Shauryan123"},"content":".accordion .titled-pane:expanded {","lastModifiedDate":"2024-03-23"},{"lineNumber":576,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: #F3CCF3 !important; /* White background for expanded pane */","lastModifiedDate":"2024-03-23"},{"lineNumber":577,"author":{"gitId":"Shauryan123"},"content":" -fx-background-radius: 8px; /* Slightly less rounded corners for expanded panes */","lastModifiedDate":"2024-03-23"},{"lineNumber":578,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":579,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":580,"author":{"gitId":"Shauryan123"},"content":"/* Content area inside each TitledPane */","lastModifiedDate":"2024-03-23"},{"lineNumber":581,"author":{"gitId":"Shauryan123"},"content":".accordion .titled-pane \u003e .content {","lastModifiedDate":"2024-03-23"},{"lineNumber":582,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: #F3CCF3 !important; /* White background for content */","lastModifiedDate":"2024-03-23"},{"lineNumber":583,"author":{"gitId":"Shauryan123"},"content":" -fx-background-radius: 8px; /* Rounded corners for content */","lastModifiedDate":"2024-03-23"},{"lineNumber":584,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":585,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":586,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":587,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":588,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":589,"author":{"gitId":"Shauryan123"},"content":".titled-pane \u003e .title","lastModifiedDate":"2024-03-23"},{"lineNumber":590,"author":{"gitId":"Shauryan123"},"content":"{","lastModifiedDate":"2024-03-23"},{"lineNumber":591,"author":{"gitId":"Shauryan123"},"content":" -fx-background-color: #EED3D9;","lastModifiedDate":"2024-03-23"},{"lineNumber":592,"author":{"gitId":"Shauryan123"},"content":" -fx-border-color: rgba(0, 60, 136, 0.8);","lastModifiedDate":"2024-03-23"},{"lineNumber":593,"author":{"gitId":"Shauryan123"},"content":" -fx-font-family: \u0027Lucida Grande\u0027,Verdana,Geneva,Lucida,Arial,Helvetica,sans-serif;","lastModifiedDate":"2024-03-23"},{"lineNumber":594,"author":{"gitId":"Shauryan123"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2024-03-23"},{"lineNumber":595,"author":{"gitId":"Shauryan123"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2024-03-23"},{"lineNumber":596,"author":{"gitId":"Shauryan123"},"content":" -fx-text-fill: WHITE;","lastModifiedDate":"2024-03-23"},{"lineNumber":597,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":598,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-23"}],"authorContributionMap":{"Shauryan123":270,"-":328}},{"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":"Shauryan123"},"content":" -fx-border-color: #EEA5A6;","lastModifiedDate":"2024-03-20"},{"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":{"Shauryan123":1,"-":19}},{"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":"ibnu2651"},"content":" title\u003d\"InsuraConnect\" minWidth\u003d\"450\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2024-03-20"},{"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":"Shauryan123"},"content":" \u003cVBox fx:id\u003d\"personList\" styleClass\u003d\"content-area\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-23"},{"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":"Shauryan123"},"content":" \u003cStackPane fx:id\u003d\"personListPanelPlaceholder\" styleClass\u003d\"shadow-pane\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2024-03-23"},{"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":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29"}],"authorContributionMap":{"Shauryan123":3,"ibnu2651":1,"-":57}},{"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":"Shauryan123"},"content":"\u003c?import javafx.scene.control.ScrollPane?\u003e","lastModifiedDate":"2024-03-23"},{"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":"Shauryan123"},"content":"\u003c?import javafx.scene.layout.Priority?\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":13,"author":{"gitId":"Shauryan123"},"content":"\u003c?import javafx.scene.control.Accordion?\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":15,"author":{"gitId":"Shauryan123"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\" styleClass\u003d\"person-card\"\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"Shauryan123"},"content":" \u003cColumnConstraints minWidth\u003d\"10\" prefWidth\u003d\"300\" maxWidth\u003d\"Infinity\" hgrow\u003d\"SOMETIMES\"/\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"Shauryan123"},"content":" \u003cColumnConstraints minWidth\u003d\"10\" prefWidth\u003d\"100\" hgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"Shauryan123"},"content":" \u003cVBox alignment\u003d\"TOP_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\"/\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"Shauryan123"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_small_label\"/\u003e","lastModifiedDate":"2024-03-23"},{"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":"Shauryan123"},"content":" \u003cFlowPane fx:id\u003d\"tags\" styleClass\u003d\"tags-container\"/\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"Shauryan123"},"content":" \u003cLabel fx:id\u003d\"relationship\" styleClass\u003d\"relationship-label\"/\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"Shauryan123"},"content":" \u003cLabel fx:id\u003d\"policy\" styleClass\u003d\"policy-label\"/\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"Shauryan123"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\"/\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":33,"author":{"gitId":"Shauryan123"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\"/\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":34,"author":{"gitId":"Shauryan123"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\"/\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":37,"author":{"gitId":"Shauryan123"},"content":" \u003c!-- ScrollPane to contain the meetings --\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"Shauryan123"},"content":" \u003cScrollPane fx:id\u003d\"scrollPane\" GridPane.columnIndex\u003d\"1\" hbarPolicy\u003d\"AS_NEEDED\" vbarPolicy\u003d\"AS_NEEDED\" fitToHeight\u003d\"true\" fitToWidth\u003d\"true\" styleClass\u003d\"meeting-scroll-pane\"\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":39,"author":{"gitId":"Shauryan123"},"content":" \u003cVBox fx:id\u003d\"meetingsVBox\" alignment\u003d\"TOP_RIGHT\" fillWidth\u003d\"true\" styleClass\u003d\"meeting-details-container\"\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":40,"author":{"gitId":"Shauryan123"},"content":" \u003c!-- Wrap Accordion in a VBox and set alignment to TOP_RIGHT --\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"Shauryan123"},"content":" \u003cAccordion fx:id\u003d\"meetingsAccordion\" minWidth\u003d\"200\" maxWidth\u003d\"300\" VBox.vgrow\u003d\"ALWAYS\" styleClass\u003d\"accordion\"\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"Shauryan123"},"content":" \u003c!-- Meeting TitledPanes will be added here in the controller code --\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":43,"author":{"gitId":"Shauryan123"},"content":" \u003c/Accordion\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":44,"author":{"gitId":"Shauryan123"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":45,"author":{"gitId":"Shauryan123"},"content":" \u003c/ScrollPane\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"Shauryan123":24,"-":23}},{"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":"Shauryan123"},"content":"import static seedu.address.logic.commands.CommandTestUtil.RELATIONSHIP_DESC_AMY;","lastModifiedDate":"2024-03-17"},{"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":"2024-03-17"},{"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":"Shauryan123"},"content":"import seedu.address.storage.JsonInsuraConnectBookStorage;","lastModifiedDate":"2024-03-17"},{"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":"Shauryan123"},"content":" JsonInsuraConnectBookStorage addressBookStorage \u003d","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"Shauryan123"},"content":" new JsonInsuraConnectBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2024-03-17"},{"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":"Shauryan123"},"content":" JsonInsuraConnectBookStorage addressBookStorage \u003d new JsonInsuraConnectBookStorage(prefPath) {","lastModifiedDate":"2024-03-17"},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":156,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2024-03-17"},{"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":"kaiyi27"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + RELATIONSHIP_DESC_AMY;","lastModifiedDate":"2024-03-10"},{"lineNumber":171,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2023-06-13"},{"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":"justincred"},"content":" expectedModel.commitAddressBook();","lastModifiedDate":"2024-03-19"},{"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":{"Shauryan123":5,"kaiyi27":1,"justincred":1,"-":170}},{"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":"-"},"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":"justincred"},"content":" expectedModel.commitAddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertCommandSuccess(new AddCommand(validPerson), model,","lastModifiedDate":"2019-01-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" expectedModel);","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","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 execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(0);","lastModifiedDate":"2018-01-10"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertCommandFailure(new AddCommand(personInList), model,","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" AddCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"justincred":2,"-":48}},{"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":"kaiyi27"},"content":"import seedu.address.model.person.Meeting;","lastModifiedDate":"2024-03-24"},{"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":"-"},"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":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15"},{"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":"-"},"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":"-"},"content":" CommandResult commandResult \u003d new AddCommand(validPerson).execute(modelStub);","lastModifiedDate":"2019-01-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23"},{"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":"-"},"content":" AddCommand addCommand \u003d new AddCommand(validPerson);","lastModifiedDate":"2018-08-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":"-"},"content":" assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2019-05-03"},{"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":"justincred"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":162,"author":{"gitId":"justincred"},"content":" public boolean canUndoAddressBook() {","lastModifiedDate":"2024-03-16"},{"lineNumber":163,"author":{"gitId":"justincred"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-16"},{"lineNumber":164,"author":{"gitId":"justincred"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":165,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":166,"author":{"gitId":"justincred"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":167,"author":{"gitId":"justincred"},"content":" public boolean canRedoAddressBook() {","lastModifiedDate":"2024-03-16"},{"lineNumber":168,"author":{"gitId":"justincred"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-16"},{"lineNumber":169,"author":{"gitId":"justincred"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":170,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":171,"author":{"gitId":"justincred"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":172,"author":{"gitId":"justincred"},"content":" public void undoAddressBook() {","lastModifiedDate":"2024-03-16"},{"lineNumber":173,"author":{"gitId":"justincred"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-16"},{"lineNumber":174,"author":{"gitId":"justincred"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":175,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":176,"author":{"gitId":"justincred"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":177,"author":{"gitId":"justincred"},"content":" public void redoAddressBook() {","lastModifiedDate":"2024-03-16"},{"lineNumber":178,"author":{"gitId":"justincred"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-16"},{"lineNumber":179,"author":{"gitId":"justincred"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":180,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":181,"author":{"gitId":"justincred"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":182,"author":{"gitId":"justincred"},"content":" public void commitAddressBook() {","lastModifiedDate":"2024-03-16"},{"lineNumber":183,"author":{"gitId":"justincred"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-16"},{"lineNumber":184,"author":{"gitId":"justincred"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":185,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":186,"author":{"gitId":"kaiyi27"},"content":" @Override","lastModifiedDate":"2024-03-24"},{"lineNumber":187,"author":{"gitId":"kaiyi27"},"content":" public boolean hasMeetingOverlap(Meeting meeting) {","lastModifiedDate":"2024-03-24"},{"lineNumber":188,"author":{"gitId":"kaiyi27"},"content":" throw new AssertionError(\"Meeting should not be overlapped.\");","lastModifiedDate":"2024-03-24"},{"lineNumber":189,"author":{"gitId":"kaiyi27"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":192,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":193,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07"},{"lineNumber":194,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":195,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07"},{"lineNumber":196,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":198,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":199,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":200,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07"},{"lineNumber":201,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":203,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":204,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":205,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":206,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07"},{"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"},{"lineNumber":211,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12"},{"lineNumber":212,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":213,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12"},{"lineNumber":214,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":216,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07"},{"lineNumber":217,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":218,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":219,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":220,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":221,"author":{"gitId":"justincred"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":222,"author":{"gitId":"justincred"},"content":" public void commitAddressBook() {","lastModifiedDate":"2024-03-19"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":224,"author":{"gitId":"justincred"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":225,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":226,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08"},{"lineNumber":227,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":228,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":229,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":231,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":232,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04"},{"lineNumber":233,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04"},{"lineNumber":234,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":235,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":237,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12"}],"authorContributionMap":{"kaiyi27":6,"justincred":27,"-":204}},{"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":"-"},"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":"justincred"},"content":" expectedModel.commitAddressBook();","lastModifiedDate":"2024-03-19"},{"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":"justincred"},"content":" expectedModel.commitAddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ClearCommand(), model, ClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08"}],"authorContributionMap":{"justincred":2,"-":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":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"Shauryan123"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_RELATIONSHIP;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"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":"-"},"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":"2017-06-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":"2024-03-17"},{"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":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":36,"author":{"gitId":"Shauryan123"},"content":" public static final String VALID_RELATIONSHIP_AMY \u003d \"client\";","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"Shauryan123"},"content":" public static final String VALID_RELATIONSHIP_BOB \u003d \"partner\";","lastModifiedDate":"2024-03-17"},{"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":"ibnu2651"},"content":" public static final String VALID_POLICY_AMY \u003d \"\";","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"ibnu2651"},"content":" public static final String VALID_POLICY_BOB \u003d \"\";","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05"},{"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":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":53,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"Shauryan123"},"content":" public static final String RELATIONSHIP_DESC_AMY \u003d \" \" + PREFIX_RELATIONSHIP + VALID_RELATIONSHIP_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"Shauryan123"},"content":" public static final String RELATIONSHIP_DESC_BOB \u003d \" \" + PREFIX_RELATIONSHIP + VALID_RELATIONSHIP_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":59,"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":60,"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":61,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05"},{"lineNumber":63,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"Shauryan123"},"content":" public static final String INVALID_RELATIONSHIP_DESC \u003d \" \" + PREFIX_RELATIONSHIP + \"agent\";","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"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":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":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":78,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":79,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":82,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25"},{"lineNumber":88,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":89,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":91,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":94,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":99,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":102,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25"},{"lineNumber":104,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":105,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":109,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":110,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":111,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":112,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25"},{"lineNumber":114,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25"},{"lineNumber":116,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":117,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":118,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":125,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":126,"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":127,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31"},{"lineNumber":128,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":132,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31"},{"lineNumber":133,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20"},{"lineNumber":134,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":139,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"Shauryan123":8,"ibnu2651":2,"justincred":1,"-":128}},{"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":"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":"justincred"},"content":" expectedModel.commitAddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-06-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":55,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":58,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05"},{"lineNumber":65,"author":{"gitId":"justincred"},"content":" expectedModel.commitAddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" showNoPerson(expectedModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-06-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-06-05"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-06-05"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":79,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":" DeleteCommand deleteFirstCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08"},{"lineNumber":87,"author":{"gitId":"-"},"content":" DeleteCommand deleteSecondCommand \u003d new DeleteCommand(INDEX_SECOND_PERSON);","lastModifiedDate":"2018-08-08"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":" DeleteCommand deleteFirstCommandCopy \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(targetIndex);","lastModifiedDate":"2019-02-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":" String expected \u003d DeleteCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertEquals(expected, deleteCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05"},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":117,"author":{"gitId":"-"},"content":" private void showNoPerson(Model model) {","lastModifiedDate":"2017-06-05"},{"lineNumber":118,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2017-06-12"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertTrue(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2018-02-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":122,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"justincred":2,"-":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":"ibnu2651"},"content":" Person editedPerson \u003d new PersonBuilder()","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"ibnu2651"},"content":" .withPolicy(model.getFilteredPersonList().get(0).getPolicy().value)","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"ibnu2651"},"content":" .build();","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedPerson).build();","lastModifiedDate":"2017-06-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":46,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":50,"author":{"gitId":"justincred"},"content":" expectedModel.commitAddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":57,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2017-05-18"},{"lineNumber":58,"author":{"gitId":"-"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":60,"author":{"gitId":"-"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2017-05-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":64,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-05-18"},{"lineNumber":65,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPerson, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":68,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":72,"author":{"gitId":"justincred"},"content":" expectedModel.commitAddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":79,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, new EditPersonDescriptor());","lastModifiedDate":"2018-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":85,"author":{"gitId":"justincred"},"content":" expectedModel.commitAddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":92,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":95,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder(personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":103,"author":{"gitId":"justincred"},"content":" expectedModel.commitAddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":109,"author":{"gitId":"-"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":110,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05"},{"lineNumber":111,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":118,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":120,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2017-05-18"},{"lineNumber":121,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":122,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":130,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18"},{"lineNumber":131,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22"},{"lineNumber":132,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":137,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18"},{"lineNumber":138,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18"},{"lineNumber":139,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18"},{"lineNumber":140,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18"},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":143,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":144,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18"},{"lineNumber":145,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18"},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-05-18"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":148,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08"},{"lineNumber":149,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":151,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":154,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":156,"author":{"gitId":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2018-08-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":158,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2017-05-25"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2017-05-25"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":179,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2019-02-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08"}],"authorContributionMap":{"ibnu2651":3,"justincred":4,"-":182}},{"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.getTypicalAddressBook;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"ibnu2651"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalPersons;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"Shauryan123"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"Shauryan123"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"kaiyi27"},"content":"import seedu.address.model.person.PolicyContainsKeywordsPredicate;","lastModifiedDate":"2024-03-24"},{"lineNumber":23,"author":{"gitId":"Shauryan123"},"content":"import seedu.address.model.person.RelationshipContainsKeywordsPredicate;","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"Shauryan123"},"content":"import seedu.address.model.person.TagContainsKeywordsPredicate;","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code FindCommand}.","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class FindCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-27"},{"lineNumber":35,"author":{"gitId":"Shauryan123"},"content":" Predicate\u003cPerson\u003e firstPredicate \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":37,"author":{"gitId":"Shauryan123"},"content":" Predicate\u003cPerson\u003e secondPredicate \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" FindCommand findFirstCommand \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" FindCommand findSecondCommand \u003d new FindCommand(secondPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" FindCommand findFirstCommandCopy \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"Shauryan123"},"content":" public void execute_nameKeywords_noPersonFound() {","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"Shauryan123"},"content":" Predicate\u003cPerson\u003e predicate \u003d new NameContainsKeywordsPredicate(Collections.singletonList(\"NoSuchName\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":71,"author":{"gitId":"Shauryan123"},"content":" public void execute_relationshipKeywords_noPersonFound() {","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2017-06-12"},{"lineNumber":73,"author":{"gitId":"ibnu2651"},"content":" Predicate\u003cPerson\u003e predicate \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"ibnu2651"},"content":" new RelationshipContainsKeywordsPredicate(Collections.singletonList(\"NoSuchRelationship\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":82,"author":{"gitId":"Shauryan123"},"content":" public void execute_tagKeywords_noPersonFound() {","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"Shauryan123"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"Shauryan123"},"content":" Predicate\u003cPerson\u003e predicate \u003d new TagContainsKeywordsPredicate(Collections.singletonList(\"NoSuchTag\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":88,"author":{"gitId":"Shauryan123"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":91,"author":{"gitId":"kaiyi27"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":92,"author":{"gitId":"kaiyi27"},"content":" public void execute_policyKeywords_noPolicyFound() {","lastModifiedDate":"2024-03-24"},{"lineNumber":93,"author":{"gitId":"kaiyi27"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2024-03-24"},{"lineNumber":94,"author":{"gitId":"kaiyi27"},"content":" Predicate\u003cPerson\u003e predicate \u003d new PolicyContainsKeywordsPredicate(Collections.singletonList(\"NoSuchPolicy\"));","lastModifiedDate":"2024-03-24"},{"lineNumber":95,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2024-03-24"},{"lineNumber":96,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-24"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-24"},{"lineNumber":98,"author":{"gitId":"kaiyi27"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2024-03-24"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":101,"author":{"gitId":"Shauryan123"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":102,"author":{"gitId":"Shauryan123"},"content":" public void execute_combinedKeywords_multiplePersonsFound() {","lastModifiedDate":"2024-03-20"},{"lineNumber":103,"author":{"gitId":"Shauryan123"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 7);","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"Shauryan123"},"content":" Predicate\u003cPerson\u003e predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Carl\", \"Elle\"))","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"Shauryan123"},"content":" .or(new RelationshipContainsKeywordsPredicate(Arrays.asList(\"client\", \"partner\")))","lastModifiedDate":"2024-03-20"},{"lineNumber":106,"author":{"gitId":"Shauryan123"},"content":" .or(new TagContainsKeywordsPredicate(Arrays.asList(\"friends\")));","lastModifiedDate":"2024-03-20"},{"lineNumber":107,"author":{"gitId":"Shauryan123"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2024-03-20"},{"lineNumber":108,"author":{"gitId":"Shauryan123"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-20"},{"lineNumber":109,"author":{"gitId":"Shauryan123"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-20"},{"lineNumber":110,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":111,"author":{"gitId":"Shauryan123"},"content":" // Print the actual and expected lists","lastModifiedDate":"2024-03-20"},{"lineNumber":112,"author":{"gitId":"Shauryan123"},"content":" System.out.println(\"Expected: \" + getTypicalPersons());","lastModifiedDate":"2024-03-20"},{"lineNumber":113,"author":{"gitId":"Shauryan123"},"content":" System.out.println(\"Actual: \" + model.getFilteredPersonList());","lastModifiedDate":"2024-03-20"},{"lineNumber":114,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"Shauryan123"},"content":" assertEquals(getTypicalPersons(), model.getFilteredPersonList());","lastModifiedDate":"2024-03-20"},{"lineNumber":116,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":117,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-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":"Shauryan123"},"content":" Predicate\u003cPerson\u003e predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":123,"author":{"gitId":"-"},"content":" FindCommand findCommand \u003d new FindCommand(predicate);","lastModifiedDate":"2019-02-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"Shauryan123":33,"kaiyi27":6,"ibnu2651":3,"-":85}},{"path":"src/test/java/seedu/address/logic/commands/PolicyCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ibnu2651"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"ibnu2651"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"ibnu2651"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"ibnu2651"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_POLICY_AMY;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"ibnu2651"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_POLICY_BOB;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"ibnu2651"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"ibnu2651"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"ibnu2651"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"ibnu2651"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"ibnu2651"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"ibnu2651"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"ibnu2651"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"ibnu2651"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"ibnu2651"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"ibnu2651"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"ibnu2651"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"ibnu2651"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"ibnu2651"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"ibnu2651"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"ibnu2651"},"content":"import seedu.address.model.person.Policy;","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"ibnu2651"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"ibnu2651"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"ibnu2651"},"content":" * Contains integration tests (interaction with the Model) and unit tests for PolicyCommand.","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"ibnu2651"},"content":"public class PolicyCommandTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"ibnu2651"},"content":" private static final String POLICY_STUB \u003d \"Some policy\";","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"ibnu2651"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"ibnu2651"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"ibnu2651"},"content":" public void execute_addPolicyUnfilteredList_success() {","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"ibnu2651"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"ibnu2651"},"content":" Person editedPerson \u003d new PersonBuilder(firstPerson).withPolicy(POLICY_STUB).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"ibnu2651"},"content":" PolicyCommand policyCommand \u003d new PolicyCommand(INDEX_FIRST_PERSON, new Policy(editedPerson.getPolicy().value));","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"ibnu2651"},"content":" String expectedMessage \u003d String.format(PolicyCommand.MESSAGE_ADD_POLICY_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2024-03-23"},{"lineNumber":43,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"ibnu2651"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"ibnu2651"},"content":" expectedModel.setPerson(firstPerson, editedPerson);","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"ibnu2651"},"content":" expectedModel.commitAddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"ibnu2651"},"content":" assertCommandSuccess(policyCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"ibnu2651"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"ibnu2651"},"content":" public void execute_deletePolicyUnfilteredList_success() {","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"ibnu2651"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"ibnu2651"},"content":" Person editedPerson \u003d new PersonBuilder(firstPerson).withPolicy(\"\").build();","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"ibnu2651"},"content":" PolicyCommand remarkCommand \u003d new PolicyCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"ibnu2651"},"content":" new Policy(editedPerson.getPolicy().toString()));","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"ibnu2651"},"content":" String expectedMessage \u003d","lastModifiedDate":"2024-03-23"},{"lineNumber":60,"author":{"gitId":"ibnu2651"},"content":" String.format(PolicyCommand.MESSAGE_DELETE_POLICY_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2024-03-23"},{"lineNumber":61,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"ibnu2651"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"ibnu2651"},"content":" expectedModel.setPerson(firstPerson, editedPerson);","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"ibnu2651"},"content":" expectedModel.commitAddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"ibnu2651"},"content":" assertCommandSuccess(remarkCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"ibnu2651"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"ibnu2651"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"ibnu2651"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"ibnu2651"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"ibnu2651"},"content":" Person editedPerson \u003d new PersonBuilder(model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased()))","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"ibnu2651"},"content":" .withPolicy(POLICY_STUB).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"ibnu2651"},"content":" PolicyCommand policyCommand \u003d new PolicyCommand(INDEX_FIRST_PERSON, new Policy(editedPerson.getPolicy().value));","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"ibnu2651"},"content":" String expectedMessage \u003d String.format(PolicyCommand.MESSAGE_ADD_POLICY_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2024-03-23"},{"lineNumber":80,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"ibnu2651"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"ibnu2651"},"content":" expectedModel.setPerson(firstPerson, editedPerson);","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"ibnu2651"},"content":" expectedModel.commitAddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":84,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"ibnu2651"},"content":" assertCommandSuccess(policyCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":87,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":88,"author":{"gitId":"ibnu2651"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":89,"author":{"gitId":"ibnu2651"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2024-03-16"},{"lineNumber":90,"author":{"gitId":"ibnu2651"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2024-03-16"},{"lineNumber":91,"author":{"gitId":"ibnu2651"},"content":" PolicyCommand policyCommand \u003d new PolicyCommand(outOfBoundIndex, new Policy(VALID_POLICY_BOB));","lastModifiedDate":"2024-03-16"},{"lineNumber":92,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":93,"author":{"gitId":"ibnu2651"},"content":" assertCommandFailure(policyCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-16"},{"lineNumber":94,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":95,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":96,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":97,"author":{"gitId":"ibnu2651"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2024-03-16"},{"lineNumber":98,"author":{"gitId":"ibnu2651"},"content":" * but smaller than size of address book","lastModifiedDate":"2024-03-16"},{"lineNumber":99,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":100,"author":{"gitId":"ibnu2651"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":101,"author":{"gitId":"ibnu2651"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2024-03-16"},{"lineNumber":102,"author":{"gitId":"ibnu2651"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-16"},{"lineNumber":103,"author":{"gitId":"ibnu2651"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-16"},{"lineNumber":104,"author":{"gitId":"ibnu2651"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2024-03-16"},{"lineNumber":105,"author":{"gitId":"ibnu2651"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2024-03-16"},{"lineNumber":106,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":107,"author":{"gitId":"ibnu2651"},"content":" PolicyCommand policyCommand \u003d new PolicyCommand(outOfBoundIndex, new Policy(VALID_POLICY_BOB));","lastModifiedDate":"2024-03-16"},{"lineNumber":108,"author":{"gitId":"ibnu2651"},"content":" assertCommandFailure(policyCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-16"},{"lineNumber":109,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":110,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":111,"author":{"gitId":"ibnu2651"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":112,"author":{"gitId":"ibnu2651"},"content":" public void equals() {","lastModifiedDate":"2024-03-16"},{"lineNumber":113,"author":{"gitId":"ibnu2651"},"content":" final PolicyCommand standardCommand \u003d new PolicyCommand(INDEX_FIRST_PERSON, new Policy(VALID_POLICY_AMY));","lastModifiedDate":"2024-03-16"},{"lineNumber":114,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":115,"author":{"gitId":"ibnu2651"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":116,"author":{"gitId":"ibnu2651"},"content":" PolicyCommand commandWithSameValues \u003d new PolicyCommand(INDEX_FIRST_PERSON, new Policy(VALID_POLICY_AMY));","lastModifiedDate":"2024-03-16"},{"lineNumber":117,"author":{"gitId":"ibnu2651"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-03-16"},{"lineNumber":118,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":119,"author":{"gitId":"ibnu2651"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":120,"author":{"gitId":"ibnu2651"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-03-16"},{"lineNumber":121,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":122,"author":{"gitId":"ibnu2651"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":123,"author":{"gitId":"ibnu2651"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":124,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":125,"author":{"gitId":"ibnu2651"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":126,"author":{"gitId":"ibnu2651"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2024-03-16"},{"lineNumber":127,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":128,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":129,"author":{"gitId":"ibnu2651"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"ibnu2651":129}},{"path":"src/test/java/seedu/address/logic/commands/RedoCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"justincred"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"justincred"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"justincred"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"justincred"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"justincred"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"justincred"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"justincred"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"justincred"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"justincred"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"justincred"},"content":"public class RedoCommandTest {","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"justincred"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"justincred"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"justincred"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"justincred"},"content":" public void execute_redoAfterSuccessfulUndo_success() {","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"justincred"},"content":" RedoCommand command \u003d new RedoCommand();","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"justincred"},"content":" String expectedMessage \u003d command.MESSAGE_SUCCESS;","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"justincred"},"content":" model.addPerson(AMY);","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"justincred"},"content":" model.commitAddressBook();","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"justincred"},"content":" model.undoAddressBook();","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"justincred"},"content":" expectedModel.addPerson(AMY);","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"justincred"},"content":" expectedModel.commitAddressBook();","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"justincred"},"content":" expectedModel.undoAddressBook();","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"justincred"},"content":" expectedModel.redoAddressBook();","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"justincred"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"justincred"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"justincred"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"justincred"},"content":" public void execute_redoWithoutPreviousUndo_failure() {","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"justincred"},"content":" RedoCommand command \u003d new RedoCommand();","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"justincred"},"content":" String expectedMessage \u003d command.MESSAGE_FAILURE;","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"justincred"},"content":" assertCommandFailure(command, model, expectedMessage);","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"justincred"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"justincred"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"justincred":39}},{"path":"src/test/java/seedu/address/logic/commands/UndoCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"justincred"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"justincred"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"justincred"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"justincred"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"justincred"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"justincred"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"justincred"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"justincred"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"justincred"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"justincred"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"justincred"},"content":"public class UndoCommandTest {","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"justincred"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"justincred"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"justincred"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"justincred"},"content":" public void execute_undoAfterAddingPersons_success() {","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"justincred"},"content":" UndoCommand command \u003d new UndoCommand();","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"justincred"},"content":" String expectedMessage \u003d command.MESSAGE_SUCCESS;","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"justincred"},"content":" model.addPerson(AMY);","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"justincred"},"content":" model.commitAddressBook();","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"justincred"},"content":" expectedModel.addPerson(AMY);","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"justincred"},"content":" expectedModel.commitAddressBook();","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"justincred"},"content":" expectedModel.undoAddressBook();","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"justincred"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"justincred"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"justincred"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"justincred"},"content":" public void execute_undoWithoutCommandsToUndo_failure() {","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"justincred"},"content":" UndoCommand command \u003d new UndoCommand();","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"justincred"},"content":" String expectedMessage \u003d command.MESSAGE_FAILURE;","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"justincred"},"content":" assertCommandFailure(command, model, expectedMessage);","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"justincred"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"justincred"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"justincred"},"content":" public void execute_undoAfterExecutingCommandsThatDoNotAffectAddressBook_failure() {","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"justincred"},"content":" UndoCommand command \u003d new UndoCommand();","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"justincred"},"content":" String expectedMessage \u003d command.MESSAGE_FAILURE;","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"justincred"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"justincred"},"content":" assertCommandFailure(command, model, expectedMessage);","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"justincred"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"justincred"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"justincred"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"justincred":45}},{"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":"kaiyi27"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_RELATIONSHIP_DESC;","lastModifiedDate":"2024-03-10"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_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":"kaiyi27"},"content":"import static seedu.address.logic.commands.CommandTestUtil.RELATIONSHIP_DESC_AMY;","lastModifiedDate":"2024-03-10"},{"lineNumber":21,"author":{"gitId":"kaiyi27"},"content":"import static seedu.address.logic.commands.CommandTestUtil.RELATIONSHIP_DESC_BOB;","lastModifiedDate":"2024-03-10"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"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_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":28,"author":{"gitId":"kaiyi27"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_RELATIONSHIP_BOB;","lastModifiedDate":"2024-03-10"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":35,"author":{"gitId":"kaiyi27"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_RELATIONSHIP;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-06-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15"},{"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":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-06-15"},{"lineNumber":50,"author":{"gitId":"kaiyi27"},"content":"import seedu.address.model.person.Relationship;","lastModifiedDate":"2024-03-10"},{"lineNumber":51,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2018-07-25"},{"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":"-"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":63,"author":{"gitId":"kaiyi27"},"content":" + ADDRESS_DESC_BOB + RELATIONSHIP_DESC_BOB + TAG_DESC_FRIEND, new AddCommand(expectedPerson));","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND)","lastModifiedDate":"2018-07-25"},{"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":"kaiyi27"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB + RELATIONSHIP_DESC_BOB","lastModifiedDate":"2024-03-10"},{"lineNumber":71,"author":{"gitId":"kaiyi27"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, new AddCommand(expectedPersonMultipleTags));","lastModifiedDate":"2024-03-10"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":76,"author":{"gitId":"-"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-07-14"},{"lineNumber":77,"author":{"gitId":"kaiyi27"},"content":" + ADDRESS_DESC_BOB + RELATIONSHIP_DESC_BOB + TAG_DESC_FRIEND;","lastModifiedDate":"2024-03-10"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":79,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":81,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":83,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":95,"author":{"gitId":"kaiyi27"},"content":" // multiple relationship","lastModifiedDate":"2024-03-10"},{"lineNumber":96,"author":{"gitId":"kaiyi27"},"content":" assertParseFailure(parser, RELATIONSHIP_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-10"},{"lineNumber":97,"author":{"gitId":"kaiyi27"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_RELATIONSHIP));","lastModifiedDate":"2024-03-10"},{"lineNumber":98,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":99,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2023-07-14"},{"lineNumber":102,"author":{"gitId":"kaiyi27"},"content":" + RELATIONSHIP_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-10"},{"lineNumber":103,"author":{"gitId":"kaiyi27"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_ADDRESS, PREFIX_EMAIL, PREFIX_PHONE,","lastModifiedDate":"2024-03-10"},{"lineNumber":104,"author":{"gitId":"kaiyi27"},"content":" PREFIX_RELATIONSHIP));","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":110,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":112,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":124,"author":{"gitId":"kaiyi27"},"content":" // invalid relationship","lastModifiedDate":"2024-03-10"},{"lineNumber":125,"author":{"gitId":"kaiyi27"},"content":" assertParseFailure(parser, INVALID_RELATIONSHIP_DESC + validExpectedPersonString,","lastModifiedDate":"2024-03-10"},{"lineNumber":126,"author":{"gitId":"kaiyi27"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_RELATIONSHIP));","lastModifiedDate":"2024-03-10"},{"lineNumber":127,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":132,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":138,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":140,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":142,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":144,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":145,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":146,"author":{"gitId":"kaiyi27"},"content":" // invalid relationship","lastModifiedDate":"2024-03-10"},{"lineNumber":147,"author":{"gitId":"kaiyi27"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_RELATIONSHIP_DESC,","lastModifiedDate":"2024-03-10"},{"lineNumber":148,"author":{"gitId":"kaiyi27"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_RELATIONSHIP));","lastModifiedDate":"2024-03-10"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":151,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":152,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":153,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15"},{"lineNumber":154,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2018-07-25"},{"lineNumber":155,"author":{"gitId":"kaiyi27"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2024-03-10"},{"lineNumber":156,"author":{"gitId":"kaiyi27"},"content":" + RELATIONSHIP_DESC_AMY, new AddCommand(expectedPerson));","lastModifiedDate":"2024-03-10"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":159,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":160,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":161,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":163,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":164,"author":{"gitId":"kaiyi27"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-10"},{"lineNumber":165,"author":{"gitId":"kaiyi27"},"content":" + RELATIONSHIP_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-03-10"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":167,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":168,"author":{"gitId":"kaiyi27"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-10"},{"lineNumber":169,"author":{"gitId":"kaiyi27"},"content":" + RELATIONSHIP_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-03-10"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":171,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":172,"author":{"gitId":"kaiyi27"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-10"},{"lineNumber":173,"author":{"gitId":"kaiyi27"},"content":" + RELATIONSHIP_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-03-10"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":175,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":176,"author":{"gitId":"kaiyi27"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB","lastModifiedDate":"2024-03-10"},{"lineNumber":177,"author":{"gitId":"kaiyi27"},"content":" + RELATIONSHIP_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-03-10"},{"lineNumber":178,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":179,"author":{"gitId":"kaiyi27"},"content":" // missing relationship prefix","lastModifiedDate":"2024-03-10"},{"lineNumber":180,"author":{"gitId":"kaiyi27"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-10"},{"lineNumber":181,"author":{"gitId":"kaiyi27"},"content":" + VALID_RELATIONSHIP_BOB, expectedMessage);","lastModifiedDate":"2024-03-10"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":183,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15"},{"lineNumber":184,"author":{"gitId":"kaiyi27"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_ADDRESS_BOB","lastModifiedDate":"2024-03-10"},{"lineNumber":185,"author":{"gitId":"kaiyi27"},"content":" + VALID_RELATIONSHIP_BOB, expectedMessage);","lastModifiedDate":"2024-03-10"},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":188,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":189,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":190,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":191,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":192,"author":{"gitId":"kaiyi27"},"content":" + RELATIONSHIP_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-10"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":194,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15"},{"lineNumber":195,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":196,"author":{"gitId":"kaiyi27"},"content":" + RELATIONSHIP_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-10"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":198,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15"},{"lineNumber":199,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":200,"author":{"gitId":"kaiyi27"},"content":" + RELATIONSHIP_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-10"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":202,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15"},{"lineNumber":203,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2017-12-23"},{"lineNumber":204,"author":{"gitId":"kaiyi27"},"content":" + RELATIONSHIP_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-10"},{"lineNumber":205,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":206,"author":{"gitId":"kaiyi27"},"content":" //invalid relationship","lastModifiedDate":"2024-03-10"},{"lineNumber":207,"author":{"gitId":"kaiyi27"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-10"},{"lineNumber":208,"author":{"gitId":"kaiyi27"},"content":" + INVALID_RELATIONSHIP_DESC + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Relationship.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-10"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":210,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15"},{"lineNumber":211,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":212,"author":{"gitId":"kaiyi27"},"content":" + RELATIONSHIP_DESC_BOB + INVALID_TAG_DESC + VALID_TAG_FRIEND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-10"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":214,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":215,"author":{"gitId":"kaiyi27"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2024-03-10"},{"lineNumber":216,"author":{"gitId":"kaiyi27"},"content":" + RELATIONSHIP_DESC_BOB, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-10"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":220,"author":{"gitId":"kaiyi27"},"content":" + ADDRESS_DESC_BOB + RELATIONSHIP_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2024-03-10"},{"lineNumber":221,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":223,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"kaiyi27":53,"-":170}},{"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":"ibnu2651"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_POLICY;","lastModifiedDate":"2024-03-16"},{"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.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-06-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"ibnu2651"},"content":"import seedu.address.logic.commands.PolicyCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24"},{"lineNumber":28,"author":{"gitId":"ibnu2651"},"content":"import seedu.address.model.person.CombinedPredicate;","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27"},{"lineNumber":31,"author":{"gitId":"ibnu2651"},"content":"import seedu.address.model.person.Policy;","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"kaiyi27"},"content":"import seedu.address.model.person.PolicyContainsKeywordsPredicate;","lastModifiedDate":"2024-03-24"},{"lineNumber":33,"author":{"gitId":"ibnu2651"},"content":"import seedu.address.model.person.RelationshipContainsKeywordsPredicate;","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"ibnu2651"},"content":"import seedu.address.model.person.TagContainsKeywordsPredicate;","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","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_delete() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2017-06-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command);","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-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2018-03-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command);","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_exit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"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":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":80,"author":{"gitId":"ibnu2651"},"content":" List\u003cString\u003e nameKeywords \u003d Arrays.asList(\"foo\");","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"ibnu2651"},"content":" List\u003cString\u003e relationshipKeywords \u003d Arrays.asList(\"bar\");","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"ibnu2651"},"content":" List\u003cString\u003e tagKeywords \u003d Arrays.asList(\"baz\");","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"kaiyi27"},"content":" List\u003cString\u003e policyKeywords \u003d Arrays.asList(\"abc\");","lastModifiedDate":"2024-03-24"},{"lineNumber":84,"author":{"gitId":"kaiyi27"},"content":" List\u003cString\u003e formattedKeywords \u003d Arrays.asList(\"n/foo\", \"r/bar\", \"po/abc\", \"t/baz\");","lastModifiedDate":"2024-03-24"},{"lineNumber":85,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":86,"author":{"gitId":"ibnu2651"},"content":" FindCommand.COMMAND_WORD + \" \" + formattedKeywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"ibnu2651"},"content":" CombinedPredicate combinedPredicate \u003d new CombinedPredicate(","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"ibnu2651"},"content":" new NameContainsKeywordsPredicate(nameKeywords),","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"ibnu2651"},"content":" new RelationshipContainsKeywordsPredicate(relationshipKeywords),","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"kaiyi27"},"content":" new TagContainsKeywordsPredicate(tagKeywords),","lastModifiedDate":"2024-03-24"},{"lineNumber":91,"author":{"gitId":"kaiyi27"},"content":" new PolicyContainsKeywordsPredicate(policyKeywords));","lastModifiedDate":"2024-03-24"},{"lineNumber":92,"author":{"gitId":"ibnu2651"},"content":" assertEquals(new FindCommand(combinedPredicate), command);","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":107,"author":{"gitId":"ibnu2651"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":108,"author":{"gitId":"ibnu2651"},"content":" public void parseCommand_policy() throws Exception {","lastModifiedDate":"2024-03-16"},{"lineNumber":109,"author":{"gitId":"ibnu2651"},"content":" final Policy policy \u003d new Policy(\"Some policy\");","lastModifiedDate":"2024-03-16"},{"lineNumber":110,"author":{"gitId":"ibnu2651"},"content":" PolicyCommand command \u003d (PolicyCommand) parser.parseCommand(PolicyCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2024-03-16"},{"lineNumber":111,"author":{"gitId":"ibnu2651"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PREFIX_POLICY + policy.value);","lastModifiedDate":"2024-03-16"},{"lineNumber":112,"author":{"gitId":"ibnu2651"},"content":" assertEquals(new PolicyCommand(INDEX_FIRST_PERSON, policy), command);","lastModifiedDate":"2024-03-16"},{"lineNumber":113,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":114,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":125,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"kaiyi27":5,"ibnu2651":22,"-":98}},{"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":"kaiyi27"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_RELATIONSHIP_DESC;","lastModifiedDate":"2024-03-10"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","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":"kaiyi27"},"content":"import static seedu.address.logic.commands.CommandTestUtil.RELATIONSHIP_DESC_AMY;","lastModifiedDate":"2024-03-10"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","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":"kaiyi27"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_RELATIONSHIP_AMY;","lastModifiedDate":"2024-03-10"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":28,"author":{"gitId":"kaiyi27"},"content":"import static seedu.address.logic.commands.EditCommand.MESSAGE_CANNOT_BE_EDIT;","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"kaiyi27"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_RELATIONSHIP;","lastModifiedDate":"2024-03-10"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-04"},{"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":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-04"},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-04"},{"lineNumber":49,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":55,"author":{"gitId":"-"},"content":" private static final String TAG_EMPTY \u003d \" \" + PREFIX_TAG;","lastModifiedDate":"2017-05-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04"},{"lineNumber":58,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":60,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":64,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-07-06"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":70,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":79,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":82,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":85,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":87,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"kaiyi27"},"content":" assertParseFailure(parser, \"1 r/partner\", MESSAGE_CANNOT_BE_EDIT);","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2018-09-22"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2018-09-22"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2018-09-22"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_ADDRESS_DESC, Address.MESSAGE_CONSTRAINTS); // invalid address","lastModifiedDate":"2018-09-22"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2018-09-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":99,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":102,"author":{"gitId":"-"},"content":" // while parsing {@code PREFIX_TAG} alone will reset the tags of the {@code Person} being edited,","lastModifiedDate":"2017-05-04"},{"lineNumber":103,"author":{"gitId":"-"},"content":" // parsing it together with a valid tag results in error","lastModifiedDate":"2017-05-04"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_DESC_HUSBAND + TAG_EMPTY, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_EMPTY + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_EMPTY + TAG_DESC_FRIEND + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":108,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04"},{"lineNumber":109,"author":{"gitId":"kaiyi27"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_ADDRESS_AMY + VALID_PHONE_AMY","lastModifiedDate":"2024-03-10"},{"lineNumber":110,"author":{"gitId":"kaiyi27"},"content":" + VALID_RELATIONSHIP_AMY, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-10"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":115,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":116,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2017-06-06"},{"lineNumber":117,"author":{"gitId":"-"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + NAME_DESC_AMY + TAG_DESC_FRIEND;","lastModifiedDate":"2017-06-06"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":119,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-05-04"},{"lineNumber":120,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-05-04"},{"lineNumber":121,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":122,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":128,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":129,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":130,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":132,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-04"},{"lineNumber":133,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":134,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"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":"2017-05-04"},{"lineNumber":140,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":141,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04"},{"lineNumber":142,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":143,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":144,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":145,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":148,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2017-05-04"},{"lineNumber":149,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":150,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":151,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":154,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04"},{"lineNumber":155,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":156,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":157,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":160,"author":{"gitId":"-"},"content":" // address","lastModifiedDate":"2017-05-04"},{"lineNumber":161,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + ADDRESS_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":162,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":163,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":166,"author":{"gitId":"-"},"content":" // tags","lastModifiedDate":"2017-05-04"},{"lineNumber":167,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + TAG_DESC_FRIEND;","lastModifiedDate":"2017-05-25"},{"lineNumber":168,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":169,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":170,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":173,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":174,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":175,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14"},{"lineNumber":176,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-07-14"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":178,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14"},{"lineNumber":179,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":180,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2023-07-14"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":182,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":184,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14"},{"lineNumber":185,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2023-07-14"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":187,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":189,"author":{"gitId":"kaiyi27"},"content":" // multiple valid fields repeated","lastModifiedDate":"2024-03-21"},{"lineNumber":190,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2023-07-14"},{"lineNumber":191,"author":{"gitId":"kaiyi27"},"content":" + RELATIONSHIP_DESC_AMY + TAG_DESC_FRIEND + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2024-03-10"},{"lineNumber":192,"author":{"gitId":"kaiyi27"},"content":" + RELATIONSHIP_DESC_AMY + TAG_DESC_FRIEND + PHONE_DESC_BOB + ADDRESS_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-10"},{"lineNumber":193,"author":{"gitId":"kaiyi27"},"content":" + RELATIONSHIP_DESC_AMY + TAG_DESC_HUSBAND;","lastModifiedDate":"2024-03-10"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":195,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":196,"author":{"gitId":"kaiyi27"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-03-10"},{"lineNumber":197,"author":{"gitId":"kaiyi27"},"content":" PREFIX_RELATIONSHIP));","lastModifiedDate":"2024-03-10"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":199,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14"},{"lineNumber":200,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2023-07-14"},{"lineNumber":201,"author":{"gitId":"kaiyi27"},"content":" + INVALID_RELATIONSHIP_DESC + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2024-03-10"},{"lineNumber":202,"author":{"gitId":"kaiyi27"},"content":" + INVALID_RELATIONSHIP_DESC;","lastModifiedDate":"2024-03-10"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":204,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":205,"author":{"gitId":"kaiyi27"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-03-10"},{"lineNumber":206,"author":{"gitId":"kaiyi27"},"content":" PREFIX_RELATIONSHIP));","lastModifiedDate":"2024-03-10"},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":209,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":210,"author":{"gitId":"-"},"content":" public void parse_resetTags_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":211,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":212,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_EMPTY;","lastModifiedDate":"2017-05-25"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":214,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withTags().build();","lastModifiedDate":"2017-05-04"},{"lineNumber":215,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":217,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":218,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":219,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04"}],"authorContributionMap":{"kaiyi27":19,"-":200}},{"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":"ibnu2651"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"Shauryan123"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-20"},{"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":"Shauryan123"},"content":"import java.util.List;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"Shauryan123"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":14,"author":{"gitId":"Shauryan123"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"Shauryan123"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"kaiyi27"},"content":"import seedu.address.model.person.PolicyContainsKeywordsPredicate;","lastModifiedDate":"2024-03-24"},{"lineNumber":18,"author":{"gitId":"Shauryan123"},"content":"import seedu.address.model.person.RelationshipContainsKeywordsPredicate;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"Shauryan123"},"content":"import seedu.address.model.person.TagContainsKeywordsPredicate;","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"Shauryan123"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class FindCommandParserTest {","lastModifiedDate":"2017-06-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private FindCommandParser parser \u003d new FindCommandParser();","lastModifiedDate":"2017-06-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2017-06-27"},{"lineNumber":28,"author":{"gitId":"ibnu2651"},"content":" assertThrows(ParseException.class,","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"ibnu2651"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"ibnu2651"},"content":" -\u003e parser.parse(\" \"));","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"Shauryan123"},"content":" public void parse_validNameKeywords_returnsFindCommand() throws ParseException {","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"Shauryan123"},"content":" Predicate\u003cPerson\u003e combinedPredicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"Shauryan123"},"content":" FindCommand command \u003d parser.parse(\" n/Alice n/Bob\");","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"Shauryan123"},"content":" // Create a list of test persons","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"Shauryan123"},"content":" List\u003cPerson\u003e testPersons \u003d Arrays.asList(","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"Shauryan123"},"content":" new PersonBuilder().withName(\"Alice\").build(),","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"Shauryan123"},"content":" new PersonBuilder().withName(\"Bob\").build(),","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"Shauryan123"},"content":" new PersonBuilder().withName(\"Charlie\").build()","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"Shauryan123"},"content":" );","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"Shauryan123"},"content":" // Check if the command\u0027s predicate matches the expected predicate for each test person","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"Shauryan123"},"content":" for (Person person : testPersons) {","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"Shauryan123"},"content":" assertEquals(combinedPredicate.test(person), command.getPredicate().test(person),","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"Shauryan123"},"content":" \"Predicate mismatch for person: \" + person);","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"Shauryan123"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"Shauryan123"},"content":" public void parse_validRelationshipKeywords_returnsFindCommand() throws ParseException {","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"ibnu2651"},"content":" Predicate\u003cPerson\u003e combinedPredicate \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"ibnu2651"},"content":" new RelationshipContainsKeywordsPredicate(Arrays.asList(\"client\", \"partner\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"Shauryan123"},"content":" FindCommand command \u003d parser.parse(\" r/client r/partner\");","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"Shauryan123"},"content":" List\u003cPerson\u003e testPersons \u003d Arrays.asList(","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"Shauryan123"},"content":" new PersonBuilder().withRelationship(\"client\").build(),","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"Shauryan123"},"content":" new PersonBuilder().withRelationship(\"partner\").build()","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"Shauryan123"},"content":" );","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"Shauryan123"},"content":" for (Person person : testPersons) {","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"Shauryan123"},"content":" assertEquals(combinedPredicate.test(person), command.getPredicate().test(person),","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"Shauryan123"},"content":" \"Predicate mismatch for person: \" + person);","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"Shauryan123"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"Shauryan123"},"content":" public void parse_validTagKeywords_returnsFindCommand() throws ParseException {","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"ibnu2651"},"content":" Predicate\u003cPerson\u003e combinedPredicate \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"ibnu2651"},"content":" new TagContainsKeywordsPredicate(Arrays.asList(\"friends\", \"colleagues\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"Shauryan123"},"content":" FindCommand command \u003d parser.parse(\" t/friends t/colleagues\");","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"Shauryan123"},"content":" List\u003cPerson\u003e testPersons \u003d Arrays.asList(","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"Shauryan123"},"content":" new PersonBuilder().withTags(\"friends\").build(),","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"Shauryan123"},"content":" new PersonBuilder().withTags(\"colleagues\").build(),","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"Shauryan123"},"content":" new PersonBuilder().withTags(\"family\").build()","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"Shauryan123"},"content":" );","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"Shauryan123"},"content":" for (Person person : testPersons) {","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"Shauryan123"},"content":" assertEquals(combinedPredicate.test(person), command.getPredicate().test(person),","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"Shauryan123"},"content":" \"Predicate mismatch for person: \" + person);","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"kaiyi27"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":88,"author":{"gitId":"kaiyi27"},"content":" public void parse_validPolicyKeywords_returnsFindCommand() throws ParseException {","lastModifiedDate":"2024-03-24"},{"lineNumber":89,"author":{"gitId":"kaiyi27"},"content":" Predicate\u003cPerson\u003e combinedPredicate \u003d","lastModifiedDate":"2024-03-24"},{"lineNumber":90,"author":{"gitId":"kaiyi27"},"content":" new PolicyContainsKeywordsPredicate(Arrays.asList(\"life\", \"car\"));","lastModifiedDate":"2024-03-24"},{"lineNumber":91,"author":{"gitId":"kaiyi27"},"content":" FindCommand command \u003d parser.parse(\" po/life po/car\");","lastModifiedDate":"2024-03-24"},{"lineNumber":92,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":93,"author":{"gitId":"kaiyi27"},"content":" List\u003cPerson\u003e testPersons \u003d Arrays.asList(","lastModifiedDate":"2024-03-24"},{"lineNumber":94,"author":{"gitId":"kaiyi27"},"content":" new PersonBuilder().withPolicy(\"life insurance\").build(),","lastModifiedDate":"2024-03-24"},{"lineNumber":95,"author":{"gitId":"kaiyi27"},"content":" new PersonBuilder().withPolicy(\"car insurance\").build(),","lastModifiedDate":"2024-03-24"},{"lineNumber":96,"author":{"gitId":"kaiyi27"},"content":" new PersonBuilder().withPolicy(\"dummy value\").build()","lastModifiedDate":"2024-03-24"},{"lineNumber":97,"author":{"gitId":"kaiyi27"},"content":" );","lastModifiedDate":"2024-03-24"},{"lineNumber":98,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":99,"author":{"gitId":"kaiyi27"},"content":" for (Person person : testPersons) {","lastModifiedDate":"2024-03-24"},{"lineNumber":100,"author":{"gitId":"kaiyi27"},"content":" assertEquals(combinedPredicate.test(person), command.getPredicate().test(person),","lastModifiedDate":"2024-03-24"},{"lineNumber":101,"author":{"gitId":"kaiyi27"},"content":" \"Predicate mismatch for person: \" + person);","lastModifiedDate":"2024-03-24"},{"lineNumber":102,"author":{"gitId":"kaiyi27"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":105,"author":{"gitId":"Shauryan123"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":106,"author":{"gitId":"Shauryan123"},"content":" public void parse_combinedKeywords_returnsFindCommand() throws ParseException {","lastModifiedDate":"2024-03-20"},{"lineNumber":107,"author":{"gitId":"Shauryan123"},"content":" Predicate\u003cPerson\u003e combinedPredicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\"))","lastModifiedDate":"2024-03-20"},{"lineNumber":108,"author":{"gitId":"Shauryan123"},"content":" .or(new RelationshipContainsKeywordsPredicate(Arrays.asList(\"client\", \"partner\")))","lastModifiedDate":"2024-03-20"},{"lineNumber":109,"author":{"gitId":"kaiyi27"},"content":" .or(new TagContainsKeywordsPredicate(Arrays.asList(\"friends\", \"colleagues\")))","lastModifiedDate":"2024-03-24"},{"lineNumber":110,"author":{"gitId":"kaiyi27"},"content":" .or(new PolicyContainsKeywordsPredicate((Arrays.asList(\"life\", \"car\"))));","lastModifiedDate":"2024-03-24"},{"lineNumber":111,"author":{"gitId":"kaiyi27"},"content":" FindCommand command \u003d parser.parse(\" n/Alice n/Bob r/client r/partner t/friends t/colleagues \"","lastModifiedDate":"2024-03-24"},{"lineNumber":112,"author":{"gitId":"kaiyi27"},"content":" + \"po/car po/life\");","lastModifiedDate":"2024-03-24"},{"lineNumber":113,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":114,"author":{"gitId":"Shauryan123"},"content":" List\u003cPerson\u003e testPersons \u003d Arrays.asList(","lastModifiedDate":"2024-03-20"},{"lineNumber":115,"author":{"gitId":"kaiyi27"},"content":" new PersonBuilder().withName(\"Alice\").withRelationship(\"client\")","lastModifiedDate":"2024-03-24"},{"lineNumber":116,"author":{"gitId":"kaiyi27"},"content":" .withTags(\"friends\").withPolicy(\"life insurance\").build(),","lastModifiedDate":"2024-03-24"},{"lineNumber":117,"author":{"gitId":"kaiyi27"},"content":" new PersonBuilder().withName(\"Bob\").withRelationship(\"partner\")","lastModifiedDate":"2024-03-24"},{"lineNumber":118,"author":{"gitId":"kaiyi27"},"content":" .withTags(\"colleagues\").withPolicy(\"car insurance\").build(),","lastModifiedDate":"2024-03-24"},{"lineNumber":119,"author":{"gitId":"kaiyi27"},"content":" new PersonBuilder().withName(\"Charlie\").withRelationship(\"client\")","lastModifiedDate":"2024-03-24"},{"lineNumber":120,"author":{"gitId":"kaiyi27"},"content":" .withTags(\"friends\").withPolicy(\"dummy insurance\").build()","lastModifiedDate":"2024-03-24"},{"lineNumber":121,"author":{"gitId":"Shauryan123"},"content":" );","lastModifiedDate":"2024-03-20"},{"lineNumber":122,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":123,"author":{"gitId":"Shauryan123"},"content":" for (Person person : testPersons) {","lastModifiedDate":"2024-03-20"},{"lineNumber":124,"author":{"gitId":"Shauryan123"},"content":" assertEquals(combinedPredicate.test(person), command.getPredicate().test(person),","lastModifiedDate":"2024-03-20"},{"lineNumber":125,"author":{"gitId":"Shauryan123"},"content":" \"Predicate mismatch for person: \" + person);","lastModifiedDate":"2024-03-20"},{"lineNumber":126,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":130,"author":{"gitId":"Shauryan123"},"content":" public void parse_multipleWhitespaces_returnsFindCommand() throws ParseException {","lastModifiedDate":"2024-03-20"},{"lineNumber":131,"author":{"gitId":"Shauryan123"},"content":" Predicate\u003cPerson\u003e combinedPredicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\"))","lastModifiedDate":"2024-03-20"},{"lineNumber":132,"author":{"gitId":"Shauryan123"},"content":" .or(new RelationshipContainsKeywordsPredicate(Arrays.asList(\"client\", \"partner\")))","lastModifiedDate":"2024-03-20"},{"lineNumber":133,"author":{"gitId":"kaiyi27"},"content":" .or(new TagContainsKeywordsPredicate(Arrays.asList(\"friends\", \"colleagues\")))","lastModifiedDate":"2024-03-24"},{"lineNumber":134,"author":{"gitId":"kaiyi27"},"content":" .or(new PolicyContainsKeywordsPredicate((Arrays.asList(\"life\", \"car\"))));","lastModifiedDate":"2024-03-24"},{"lineNumber":135,"author":{"gitId":"ibnu2651"},"content":" FindCommand command \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":136,"author":{"gitId":"kaiyi27"},"content":" parser.parse(\" \\n n/Alice \\n \\t n/Bob \\t r/client \\n r/partner \\t t/friends\"","lastModifiedDate":"2024-03-24"},{"lineNumber":137,"author":{"gitId":"kaiyi27"},"content":" + \" \\n t/colleagues \\n po/car \\n \\t po/life\");","lastModifiedDate":"2024-03-24"},{"lineNumber":138,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":139,"author":{"gitId":"Shauryan123"},"content":" List\u003cPerson\u003e testPersons \u003d Arrays.asList(","lastModifiedDate":"2024-03-20"},{"lineNumber":140,"author":{"gitId":"kaiyi27"},"content":" new PersonBuilder().withName(\"Alice\").withRelationship(\"client\")","lastModifiedDate":"2024-03-24"},{"lineNumber":141,"author":{"gitId":"kaiyi27"},"content":" .withTags(\"friends\").withPolicy(\"life insurance\").build(),","lastModifiedDate":"2024-03-24"},{"lineNumber":142,"author":{"gitId":"kaiyi27"},"content":" new PersonBuilder().withName(\"Bob\").withRelationship(\"partner\")","lastModifiedDate":"2024-03-24"},{"lineNumber":143,"author":{"gitId":"kaiyi27"},"content":" .withTags(\"colleagues\").withPolicy(\"car insurance\").build(),","lastModifiedDate":"2024-03-24"},{"lineNumber":144,"author":{"gitId":"kaiyi27"},"content":" new PersonBuilder().withName(\"Charlie\").withRelationship(\"client\")","lastModifiedDate":"2024-03-24"},{"lineNumber":145,"author":{"gitId":"kaiyi27"},"content":" .withTags(\"friends\").withPolicy(\"dummy insurance\").build()","lastModifiedDate":"2024-03-24"},{"lineNumber":146,"author":{"gitId":"Shauryan123"},"content":" );","lastModifiedDate":"2024-03-20"},{"lineNumber":147,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":148,"author":{"gitId":"Shauryan123"},"content":" for (Person person : testPersons) {","lastModifiedDate":"2024-03-20"},{"lineNumber":149,"author":{"gitId":"Shauryan123"},"content":" assertEquals(combinedPredicate.test(person), command.getPredicate().test(person),","lastModifiedDate":"2024-03-20"},{"lineNumber":150,"author":{"gitId":"Shauryan123"},"content":" \"Predicate mismatch for person: \" + person);","lastModifiedDate":"2024-03-20"},{"lineNumber":151,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":153,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-27"}],"authorContributionMap":{"Shauryan123":80,"kaiyi27":37,"ibnu2651":9,"-":27}},{"path":"src/test/java/seedu/address/logic/parser/PolicyCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ibnu2651"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"ibnu2651"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"ibnu2651"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_POLICY;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"ibnu2651"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"ibnu2651"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"ibnu2651"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"ibnu2651"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"ibnu2651"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"ibnu2651"},"content":"import seedu.address.logic.commands.PolicyCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"ibnu2651"},"content":"import seedu.address.model.person.Policy;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"ibnu2651"},"content":"public class PolicyCommandParserTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"ibnu2651"},"content":" private PolicyCommandParser parser \u003d new PolicyCommandParser();","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"ibnu2651"},"content":" private final String nonEmptyPolicy \u003d \"Some policy.\";","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"ibnu2651"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"ibnu2651"},"content":" public void parse_indexSpecified_success() {","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"ibnu2651"},"content":" // have policy","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"ibnu2651"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"ibnu2651"},"content":" String userInput \u003d targetIndex.getOneBased() + \" \" + PREFIX_POLICY + nonEmptyPolicy;","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"ibnu2651"},"content":" PolicyCommand expectedCommand \u003d new PolicyCommand(INDEX_FIRST_PERSON, new Policy(nonEmptyPolicy));","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"ibnu2651"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"ibnu2651"},"content":" // no policy","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"ibnu2651"},"content":" userInput \u003d targetIndex.getOneBased() + \" \" + PREFIX_POLICY;","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"ibnu2651"},"content":" expectedCommand \u003d new PolicyCommand(INDEX_FIRST_PERSON, new Policy(\"\"));","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"ibnu2651"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"ibnu2651"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"ibnu2651"},"content":" public void parse_missingCompulsoryField_failure() {","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"ibnu2651"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, PolicyCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"ibnu2651"},"content":" // no parameters","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"ibnu2651"},"content":" assertParseFailure(parser, PolicyCommand.COMMAND_WORD, expectedMessage);","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"ibnu2651"},"content":" // no index","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"ibnu2651"},"content":" assertParseFailure(parser, PolicyCommand.COMMAND_WORD + \" \" + nonEmptyPolicy, expectedMessage);","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"ibnu2651"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"ibnu2651":43}},{"path":"src/test/java/seedu/address/model/person/CombinedPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ibnu2651"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"ibnu2651"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"ibnu2651"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"ibnu2651"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"ibnu2651"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"ibnu2651"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"ibnu2651"},"content":"import java.util.List;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"ibnu2651"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"ibnu2651"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"ibnu2651"},"content":"public class CombinedPredicateTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"ibnu2651"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"ibnu2651"},"content":" public void equals() {","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"ibnu2651"},"content":" List\u003cString\u003e firstPredicateKeywordList \u003d Collections.singletonList(\"friend\");","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"ibnu2651"},"content":" List\u003cString\u003e secondPredicateKeywordList \u003d Arrays.asList(\"friend\", \"colleague\");","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"ibnu2651"},"content":" CombinedPredicate firstPredicate \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"ibnu2651"},"content":" new CombinedPredicate(new TagContainsKeywordsPredicate(firstPredicateKeywordList));","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"ibnu2651"},"content":" CombinedPredicate secondPredicate \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"ibnu2651"},"content":" new CombinedPredicate(new TagContainsKeywordsPredicate(secondPredicateKeywordList));","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"ibnu2651"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"ibnu2651"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"ibnu2651"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"ibnu2651"},"content":" CombinedPredicate firstPredicateCopy \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"ibnu2651"},"content":" new CombinedPredicate(new TagContainsKeywordsPredicate(firstPredicateKeywordList));","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"ibnu2651"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"ibnu2651"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"ibnu2651"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"ibnu2651"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"ibnu2651"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"ibnu2651"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"ibnu2651"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"ibnu2651"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"ibnu2651"},"content":" public void test_combinedPredicateContainsKeywords_returnsTrue() {","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"ibnu2651"},"content":" // One keyword","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"ibnu2651"},"content":" NameContainsKeywordsPredicate namePredicate \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"ibnu2651"},"content":" new NameContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"ibnu2651"},"content":" RelationshipContainsKeywordsPredicate relationshipPredicate \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"ibnu2651"},"content":" new RelationshipContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"ibnu2651"},"content":" TagContainsKeywordsPredicate tagPredicate \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"ibnu2651"},"content":" new TagContainsKeywordsPredicate(Collections.singletonList(\"friend\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"ibnu2651"},"content":" CombinedPredicate combinedPredicate \u003d new CombinedPredicate(namePredicate, relationshipPredicate, tagPredicate);","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"ibnu2651"},"content":" assertTrue(combinedPredicate.test(new PersonBuilder().withTags(\"friend\").build()));","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"ibnu2651"},"content":" // Multiple keywords","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"ibnu2651"},"content":" namePredicate \u003d new NameContainsKeywordsPredicate(Collections.singletonList(\"Bob\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"ibnu2651"},"content":" relationshipPredicate \u003d new RelationshipContainsKeywordsPredicate(Collections.singletonList(\"client\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"ibnu2651"},"content":" tagPredicate \u003d new TagContainsKeywordsPredicate(Arrays.asList(\"friend\", \"colleague\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"ibnu2651"},"content":" combinedPredicate \u003d new CombinedPredicate(namePredicate, relationshipPredicate, tagPredicate);","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"ibnu2651"},"content":" assertTrue(combinedPredicate.test(new PersonBuilder().withName(\"Bob\").build()));","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"ibnu2651"},"content":" assertTrue(combinedPredicate.test(new PersonBuilder().withRelationship(\"client\").build()));","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"ibnu2651"},"content":" assertTrue(combinedPredicate.test(new PersonBuilder().withTags(\"friend\").build()));","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"ibnu2651"},"content":" assertTrue(combinedPredicate.test(new PersonBuilder().withTags(\"colleague\").build()));","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"ibnu2651"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"ibnu2651"},"content":" public void test_combinedPredicateDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"ibnu2651"},"content":" // Zero keywords","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"ibnu2651"},"content":" TagContainsKeywordsPredicate tagPredicate \u003d new TagContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"ibnu2651"},"content":" CombinedPredicate combinedPredicate \u003d new CombinedPredicate(tagPredicate);","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"ibnu2651"},"content":" assertFalse(combinedPredicate.test(new PersonBuilder().withTags(\"friend\").build()));","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"ibnu2651"},"content":" // Non-matching keyword","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"ibnu2651"},"content":" tagPredicate \u003d new TagContainsKeywordsPredicate(Arrays.asList(\"associate\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"ibnu2651"},"content":" combinedPredicate \u003d new CombinedPredicate(tagPredicate);","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"ibnu2651"},"content":" assertFalse(combinedPredicate.test(new PersonBuilder().withTags(\"friend\").build()));","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"ibnu2651"},"content":" assertFalse(combinedPredicate.test(new PersonBuilder().withTags(\"colleague\").build()));","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"ibnu2651"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"ibnu2651"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"ibnu2651"},"content":" List\u003cString\u003e keywords \u003d List.of(\"friend\", \"colleague\");","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"ibnu2651"},"content":" TagContainsKeywordsPredicate predicate \u003d new TagContainsKeywordsPredicate(keywords);","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"ibnu2651"},"content":" CombinedPredicate combinedPredicate \u003d new CombinedPredicate(predicate);","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"ibnu2651"},"content":" String expected \u003d CombinedPredicate.class.getCanonicalName()","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"ibnu2651"},"content":" + \"{predicateList\u003d\"","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"ibnu2651"},"content":" + TagContainsKeywordsPredicate.class.getCanonicalName() + \"{keywords\u003d\" + keywords + \"}\"","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"ibnu2651"},"content":" + \"}\";","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"ibnu2651"},"content":" assertEquals(expected, combinedPredicate.toString());","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"ibnu2651"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"ibnu2651":94}},{"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":"-"},"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":"-"},"content":" .withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2020-12-18"},{"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":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2018-04-18"},{"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":"-"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2019-02-23"},{"lineNumber":96,"author":{"gitId":"kaiyi27"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", address\u003d\" + ALICE.getAddress()","lastModifiedDate":"2024-03-10"},{"lineNumber":97,"author":{"gitId":"ibnu2651"},"content":" + \", relationship\u003d\" + ALICE.getRelationship() + \", policy\u003d\" + ALICE.getPolicy()","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"ibnu2651"},"content":" + \", tags\u003d\" + ALICE.getTags() + \"}\";","lastModifiedDate":"2024-03-16"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"kaiyi27":1,"ibnu2651":2,"-":98}},{"path":"src/test/java/seedu/address/model/person/PolicyContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"kaiyi27"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-24"},{"lineNumber":2,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":3,"author":{"gitId":"kaiyi27"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-24"},{"lineNumber":4,"author":{"gitId":"kaiyi27"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-24"},{"lineNumber":5,"author":{"gitId":"kaiyi27"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-24"},{"lineNumber":6,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":7,"author":{"gitId":"kaiyi27"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-24"},{"lineNumber":8,"author":{"gitId":"kaiyi27"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-24"},{"lineNumber":9,"author":{"gitId":"kaiyi27"},"content":"import java.util.List;","lastModifiedDate":"2024-03-24"},{"lineNumber":10,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":11,"author":{"gitId":"kaiyi27"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-24"},{"lineNumber":12,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":13,"author":{"gitId":"kaiyi27"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-24"},{"lineNumber":14,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":15,"author":{"gitId":"kaiyi27"},"content":"public class PolicyContainsKeywordsPredicateTest {","lastModifiedDate":"2024-03-24"},{"lineNumber":16,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":17,"author":{"gitId":"kaiyi27"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":18,"author":{"gitId":"kaiyi27"},"content":" public void equals() {","lastModifiedDate":"2024-03-24"},{"lineNumber":19,"author":{"gitId":"kaiyi27"},"content":" List\u003cString\u003e firstPredicateKeywordList \u003d Collections.singletonList(\"life_insurance\");","lastModifiedDate":"2024-03-24"},{"lineNumber":20,"author":{"gitId":"kaiyi27"},"content":" List\u003cString\u003e secondPredicateKeywordList \u003d Arrays.asList(\"life_insurance\", \"car_insurance\");","lastModifiedDate":"2024-03-24"},{"lineNumber":21,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":22,"author":{"gitId":"kaiyi27"},"content":" PolicyContainsKeywordsPredicate firstPredicate \u003d new PolicyContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2024-03-24"},{"lineNumber":23,"author":{"gitId":"kaiyi27"},"content":" PolicyContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2024-03-24"},{"lineNumber":24,"author":{"gitId":"kaiyi27"},"content":" new PolicyContainsKeywordsPredicate(secondPredicateKeywordList);","lastModifiedDate":"2024-03-24"},{"lineNumber":25,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":26,"author":{"gitId":"kaiyi27"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-24"},{"lineNumber":27,"author":{"gitId":"kaiyi27"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2024-03-24"},{"lineNumber":28,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":29,"author":{"gitId":"kaiyi27"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-24"},{"lineNumber":30,"author":{"gitId":"kaiyi27"},"content":" PolicyContainsKeywordsPredicate firstPredicateCopy \u003d","lastModifiedDate":"2024-03-24"},{"lineNumber":31,"author":{"gitId":"kaiyi27"},"content":" new PolicyContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2024-03-24"},{"lineNumber":32,"author":{"gitId":"kaiyi27"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2024-03-24"},{"lineNumber":33,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":34,"author":{"gitId":"kaiyi27"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-24"},{"lineNumber":35,"author":{"gitId":"kaiyi27"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2024-03-24"},{"lineNumber":36,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":37,"author":{"gitId":"kaiyi27"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-24"},{"lineNumber":38,"author":{"gitId":"kaiyi27"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2024-03-24"},{"lineNumber":39,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":40,"author":{"gitId":"kaiyi27"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-24"},{"lineNumber":41,"author":{"gitId":"kaiyi27"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2024-03-24"},{"lineNumber":42,"author":{"gitId":"kaiyi27"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":43,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":44,"author":{"gitId":"kaiyi27"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":45,"author":{"gitId":"kaiyi27"},"content":" public void test_policyContainsKeywords_returnsTrue() {","lastModifiedDate":"2024-03-24"},{"lineNumber":46,"author":{"gitId":"kaiyi27"},"content":" // One keyword","lastModifiedDate":"2024-03-24"},{"lineNumber":47,"author":{"gitId":"kaiyi27"},"content":" PolicyContainsKeywordsPredicate predicate \u003d","lastModifiedDate":"2024-03-24"},{"lineNumber":48,"author":{"gitId":"kaiyi27"},"content":" new PolicyContainsKeywordsPredicate(Collections.singletonList(\"life_insurance\"));","lastModifiedDate":"2024-03-24"},{"lineNumber":49,"author":{"gitId":"kaiyi27"},"content":" assertTrue(predicate.test(new PersonBuilder().withPolicy(\"life_insurance\").build()));","lastModifiedDate":"2024-03-24"},{"lineNumber":50,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":51,"author":{"gitId":"kaiyi27"},"content":" // Multiple keywords","lastModifiedDate":"2024-03-24"},{"lineNumber":52,"author":{"gitId":"kaiyi27"},"content":" predicate \u003d new PolicyContainsKeywordsPredicate(Arrays.asList(\"life_insurance\", \"car_insurance\"));","lastModifiedDate":"2024-03-24"},{"lineNumber":53,"author":{"gitId":"kaiyi27"},"content":" assertTrue(predicate.test(new PersonBuilder().withPolicy(\"life_insurance\").build()));","lastModifiedDate":"2024-03-24"},{"lineNumber":54,"author":{"gitId":"kaiyi27"},"content":" assertTrue(predicate.test(new PersonBuilder().withPolicy(\"car_insurance\").build()));","lastModifiedDate":"2024-03-24"},{"lineNumber":55,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":56,"author":{"gitId":"kaiyi27"},"content":" // Mixed-case keywords","lastModifiedDate":"2024-03-24"},{"lineNumber":57,"author":{"gitId":"kaiyi27"},"content":" predicate \u003d new PolicyContainsKeywordsPredicate(Arrays.asList(\"liFe_InsUrAnCE\", \"cAR_INsuRAnCE\"));","lastModifiedDate":"2024-03-24"},{"lineNumber":58,"author":{"gitId":"kaiyi27"},"content":" assertTrue(predicate.test(new PersonBuilder().withPolicy(\"life_insurance\").build()));","lastModifiedDate":"2024-03-24"},{"lineNumber":59,"author":{"gitId":"kaiyi27"},"content":" assertTrue(predicate.test(new PersonBuilder().withPolicy(\"car_insurance\").build()));","lastModifiedDate":"2024-03-24"},{"lineNumber":60,"author":{"gitId":"kaiyi27"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":61,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":62,"author":{"gitId":"kaiyi27"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":63,"author":{"gitId":"kaiyi27"},"content":" public void test_policyDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2024-03-24"},{"lineNumber":64,"author":{"gitId":"kaiyi27"},"content":" // Zero keywords","lastModifiedDate":"2024-03-24"},{"lineNumber":65,"author":{"gitId":"kaiyi27"},"content":" PolicyContainsKeywordsPredicate predicate \u003d new PolicyContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2024-03-24"},{"lineNumber":66,"author":{"gitId":"kaiyi27"},"content":" assertFalse(predicate.test(new PersonBuilder().withPolicy(\"life_insurance\").build()));","lastModifiedDate":"2024-03-24"},{"lineNumber":67,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":68,"author":{"gitId":"kaiyi27"},"content":" // Non-matching keyword","lastModifiedDate":"2024-03-24"},{"lineNumber":69,"author":{"gitId":"kaiyi27"},"content":" predicate \u003d new PolicyContainsKeywordsPredicate(Arrays.asList(\"Associate\"));","lastModifiedDate":"2024-03-24"},{"lineNumber":70,"author":{"gitId":"kaiyi27"},"content":" assertFalse(predicate.test(new PersonBuilder().withPolicy(\"life_insurance\").build()));","lastModifiedDate":"2024-03-24"},{"lineNumber":71,"author":{"gitId":"kaiyi27"},"content":" assertFalse(predicate.test(new PersonBuilder().withPolicy(\"car_insurance\").build()));","lastModifiedDate":"2024-03-24"},{"lineNumber":72,"author":{"gitId":"kaiyi27"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":73,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":74,"author":{"gitId":"kaiyi27"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":75,"author":{"gitId":"kaiyi27"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-24"},{"lineNumber":76,"author":{"gitId":"kaiyi27"},"content":" List\u003cString\u003e keywords \u003d List.of(\"life_insurance\", \"car_insurance\");","lastModifiedDate":"2024-03-24"},{"lineNumber":77,"author":{"gitId":"kaiyi27"},"content":" PolicyContainsKeywordsPredicate predicate \u003d new PolicyContainsKeywordsPredicate(keywords);","lastModifiedDate":"2024-03-24"},{"lineNumber":78,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":79,"author":{"gitId":"kaiyi27"},"content":" String expected \u003d PolicyContainsKeywordsPredicate.class.getCanonicalName() + \"{keywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2024-03-24"},{"lineNumber":80,"author":{"gitId":"kaiyi27"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2024-03-24"},{"lineNumber":81,"author":{"gitId":"kaiyi27"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":82,"author":{"gitId":"kaiyi27"},"content":"}","lastModifiedDate":"2024-03-24"},{"lineNumber":83,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-24"}],"authorContributionMap":{"kaiyi27":83}},{"path":"src/test/java/seedu/address/model/person/PolicyTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ibnu2651"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"ibnu2651"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"ibnu2651"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"ibnu2651"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"ibnu2651"},"content":"public class PolicyTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"ibnu2651"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"ibnu2651"},"content":" public void equals() {","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"ibnu2651"},"content":" Policy policy \u003d new Policy(\"Hello\");","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"ibnu2651"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"ibnu2651"},"content":" assertTrue(policy.equals(policy));","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"ibnu2651"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"ibnu2651"},"content":" Policy policyCopy \u003d new Policy(policy.value);","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"ibnu2651"},"content":" assertTrue(policy.equals(policyCopy));","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"ibnu2651"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"ibnu2651"},"content":" assertFalse(policy.equals(1));","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"ibnu2651"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"ibnu2651"},"content":" assertFalse(policy.equals(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"ibnu2651"},"content":" // different policy -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"ibnu2651"},"content":" Policy differentPolicy \u003d new Policy(\"Bye\");","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"ibnu2651"},"content":" assertFalse(policy.equals(differentPolicy));","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"ibnu2651"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"ibnu2651":31}},{"path":"src/test/java/seedu/address/model/person/RelationshipContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Shauryan123"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"Shauryan123"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"Shauryan123"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"Shauryan123"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"Shauryan123"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"Shauryan123"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"Shauryan123"},"content":"import java.util.List;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"Shauryan123"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"Shauryan123"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"Shauryan123"},"content":"public class RelationshipContainsKeywordsPredicateTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"Shauryan123"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"Shauryan123"},"content":" public void equals() {","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"Shauryan123"},"content":" List\u003cString\u003e firstPredicateKeywordList \u003d Collections.singletonList(\"Client\");","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"Shauryan123"},"content":" List\u003cString\u003e secondPredicateKeywordList \u003d Arrays.asList(\"Client\", \"Partner\");","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"ibnu2651"},"content":" RelationshipContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"ibnu2651"},"content":" new RelationshipContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"ibnu2651"},"content":" RelationshipContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"ibnu2651"},"content":" new RelationshipContainsKeywordsPredicate(secondPredicateKeywordList);","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"Shauryan123"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"Shauryan123"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"Shauryan123"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"ibnu2651"},"content":" RelationshipContainsKeywordsPredicate firstPredicateCopy \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"ibnu2651"},"content":" new RelationshipContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"Shauryan123"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"Shauryan123"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"Shauryan123"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"Shauryan123"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"Shauryan123"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"Shauryan123"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"Shauryan123"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"Shauryan123"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"Shauryan123"},"content":" public void test_relationshipContainsKeywords_returnsTrue() {","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"Shauryan123"},"content":" // One keyword","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"ibnu2651"},"content":" RelationshipContainsKeywordsPredicate predicate \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"ibnu2651"},"content":" new RelationshipContainsKeywordsPredicate(Collections.singletonList(\"Client\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"Shauryan123"},"content":" assertTrue(predicate.test(new PersonBuilder().withRelationship(\"Client\").build()));","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"Shauryan123"},"content":" // Multiple keywords","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"Shauryan123"},"content":" predicate \u003d new RelationshipContainsKeywordsPredicate(Arrays.asList(\"Client\", \"Partner\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"Shauryan123"},"content":" assertTrue(predicate.test(new PersonBuilder().withRelationship(\"Client\").build()));","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"Shauryan123"},"content":" assertTrue(predicate.test(new PersonBuilder().withRelationship(\"Partner\").build()));","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"Shauryan123"},"content":" // Mixed-case keywords","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"Shauryan123"},"content":" predicate \u003d new RelationshipContainsKeywordsPredicate(Arrays.asList(\"cLiEnt\", \"pArTnEr\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"Shauryan123"},"content":" assertTrue(predicate.test(new PersonBuilder().withRelationship(\"Client\").build()));","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"Shauryan123"},"content":" assertTrue(predicate.test(new PersonBuilder().withRelationship(\"Partner\").build()));","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"Shauryan123"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"Shauryan123"},"content":" public void test_relationshipDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"Shauryan123"},"content":" // Zero keywords","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"ibnu2651"},"content":" RelationshipContainsKeywordsPredicate predicate \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"ibnu2651"},"content":" new RelationshipContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"Shauryan123"},"content":" assertFalse(predicate.test(new PersonBuilder().withRelationship(\"Client\").build()));","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"Shauryan123"},"content":" // Non-matching keyword","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"Shauryan123"},"content":" predicate \u003d new RelationshipContainsKeywordsPredicate(Arrays.asList(\"Associate\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"Shauryan123"},"content":" assertFalse(predicate.test(new PersonBuilder().withRelationship(\"Client\").build()));","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"Shauryan123"},"content":" assertFalse(predicate.test(new PersonBuilder().withRelationship(\"Partner\").build()));","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"Shauryan123"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"Shauryan123"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"Shauryan123"},"content":" List\u003cString\u003e keywords \u003d List.of(\"Client\", \"Partner\");","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"Shauryan123"},"content":" RelationshipContainsKeywordsPredicate predicate \u003d new RelationshipContainsKeywordsPredicate(keywords);","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"ibnu2651"},"content":" String expected \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"ibnu2651"},"content":" RelationshipContainsKeywordsPredicate.class.getCanonicalName() + \"{keywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"Shauryan123"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"Shauryan123":75,"ibnu2651":12}},{"path":"src/test/java/seedu/address/model/person/RelationshipTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"kaiyi27"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":3,"author":{"gitId":"kaiyi27"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-10"},{"lineNumber":4,"author":{"gitId":"kaiyi27"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-10"},{"lineNumber":5,"author":{"gitId":"kaiyi27"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-10"},{"lineNumber":6,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":7,"author":{"gitId":"kaiyi27"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"kaiyi27"},"content":"public class RelationshipTest {","lastModifiedDate":"2024-03-10"},{"lineNumber":10,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":11,"author":{"gitId":"kaiyi27"},"content":" @Test","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"kaiyi27"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-10"},{"lineNumber":13,"author":{"gitId":"kaiyi27"},"content":" assertThrows(NullPointerException.class, () -\u003e new Relationship(null));","lastModifiedDate":"2024-03-10"},{"lineNumber":14,"author":{"gitId":"kaiyi27"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":15,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":16,"author":{"gitId":"kaiyi27"},"content":" @Test","lastModifiedDate":"2024-03-10"},{"lineNumber":17,"author":{"gitId":"kaiyi27"},"content":" public void constructor_invalidAddress_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-10"},{"lineNumber":18,"author":{"gitId":"kaiyi27"},"content":" String invalidRelationship \u003d \"\";","lastModifiedDate":"2024-03-10"},{"lineNumber":19,"author":{"gitId":"kaiyi27"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Address(invalidRelationship));","lastModifiedDate":"2024-03-10"},{"lineNumber":20,"author":{"gitId":"kaiyi27"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":21,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":22,"author":{"gitId":"kaiyi27"},"content":" @Test","lastModifiedDate":"2024-03-10"},{"lineNumber":23,"author":{"gitId":"kaiyi27"},"content":" public void isValidRelationship() {","lastModifiedDate":"2024-03-10"},{"lineNumber":24,"author":{"gitId":"kaiyi27"},"content":" // null address","lastModifiedDate":"2024-03-10"},{"lineNumber":25,"author":{"gitId":"kaiyi27"},"content":" assertThrows(NullPointerException.class, () -\u003e Relationship.isValidRelationship(null));","lastModifiedDate":"2024-03-10"},{"lineNumber":26,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":27,"author":{"gitId":"kaiyi27"},"content":" // invalid addresses","lastModifiedDate":"2024-03-10"},{"lineNumber":28,"author":{"gitId":"kaiyi27"},"content":" assertFalse(Relationship.isValidRelationship(\"\")); // empty string","lastModifiedDate":"2024-03-10"},{"lineNumber":29,"author":{"gitId":"kaiyi27"},"content":" assertFalse(Relationship.isValidRelationship(\" \")); // spaces only","lastModifiedDate":"2024-03-10"},{"lineNumber":30,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":31,"author":{"gitId":"kaiyi27"},"content":" // valid addresses","lastModifiedDate":"2024-03-10"},{"lineNumber":32,"author":{"gitId":"kaiyi27"},"content":" assertTrue(Relationship.isValidRelationship(\"client\"));","lastModifiedDate":"2024-03-10"},{"lineNumber":33,"author":{"gitId":"kaiyi27"},"content":" assertTrue(Relationship.isValidRelationship(\"partner\"));","lastModifiedDate":"2024-03-10"},{"lineNumber":34,"author":{"gitId":"kaiyi27"},"content":" assertTrue(Relationship.isValidRelationship(\"Client\")); // uppercase","lastModifiedDate":"2024-03-10"},{"lineNumber":35,"author":{"gitId":"kaiyi27"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":36,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":37,"author":{"gitId":"kaiyi27"},"content":" @Test","lastModifiedDate":"2024-03-10"},{"lineNumber":38,"author":{"gitId":"kaiyi27"},"content":" public void equals() {","lastModifiedDate":"2024-03-10"},{"lineNumber":39,"author":{"gitId":"kaiyi27"},"content":" Relationship relationship \u003d new Relationship(\"client\");","lastModifiedDate":"2024-03-10"},{"lineNumber":40,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":41,"author":{"gitId":"kaiyi27"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-10"},{"lineNumber":42,"author":{"gitId":"kaiyi27"},"content":" assertTrue(relationship.equals(new Relationship(\"client\")));","lastModifiedDate":"2024-03-10"},{"lineNumber":43,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":44,"author":{"gitId":"kaiyi27"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-10"},{"lineNumber":45,"author":{"gitId":"kaiyi27"},"content":" assertTrue(relationship.equals(relationship));","lastModifiedDate":"2024-03-10"},{"lineNumber":46,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":47,"author":{"gitId":"kaiyi27"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-10"},{"lineNumber":48,"author":{"gitId":"kaiyi27"},"content":" assertFalse(relationship.equals(null));","lastModifiedDate":"2024-03-10"},{"lineNumber":49,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":50,"author":{"gitId":"kaiyi27"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-10"},{"lineNumber":51,"author":{"gitId":"kaiyi27"},"content":" assertFalse(relationship.equals(5.0f));","lastModifiedDate":"2024-03-10"},{"lineNumber":52,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":53,"author":{"gitId":"kaiyi27"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-10"},{"lineNumber":54,"author":{"gitId":"kaiyi27"},"content":" assertFalse(relationship.equals(new Address(\"partner\")));","lastModifiedDate":"2024-03-10"},{"lineNumber":55,"author":{"gitId":"kaiyi27"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":56,"author":{"gitId":"kaiyi27"},"content":"}","lastModifiedDate":"2024-03-10"}],"authorContributionMap":{"kaiyi27":56}},{"path":"src/test/java/seedu/address/model/person/TagContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Shauryan123"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"Shauryan123"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"Shauryan123"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"Shauryan123"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"Shauryan123"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"Shauryan123"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"Shauryan123"},"content":"import java.util.List;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"Shauryan123"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"Shauryan123"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"Shauryan123"},"content":"public class TagContainsKeywordsPredicateTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"Shauryan123"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"Shauryan123"},"content":" public void equals() {","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"Shauryan123"},"content":" List\u003cString\u003e firstPredicateKeywordList \u003d Collections.singletonList(\"friend\");","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"Shauryan123"},"content":" List\u003cString\u003e secondPredicateKeywordList \u003d Arrays.asList(\"friend\", \"colleague\");","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"Shauryan123"},"content":" TagContainsKeywordsPredicate firstPredicate \u003d new TagContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"Shauryan123"},"content":" TagContainsKeywordsPredicate secondPredicate \u003d new TagContainsKeywordsPredicate(secondPredicateKeywordList);","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"Shauryan123"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"Shauryan123"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"Shauryan123"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"Shauryan123"},"content":" TagContainsKeywordsPredicate firstPredicateCopy \u003d new TagContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"Shauryan123"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"Shauryan123"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"Shauryan123"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"Shauryan123"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"Shauryan123"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"Shauryan123"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"Shauryan123"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"Shauryan123"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"Shauryan123"},"content":" public void test_tagContainsKeywords_returnsTrue() {","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"Shauryan123"},"content":" // One keyword","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"Shauryan123"},"content":" TagContainsKeywordsPredicate predicate \u003d new TagContainsKeywordsPredicate(Collections.singletonList(\"friend\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"Shauryan123"},"content":" assertTrue(predicate.test(new PersonBuilder().withTags(\"friend\").build()));","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"Shauryan123"},"content":" // Multiple keywords","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"Shauryan123"},"content":" predicate \u003d new TagContainsKeywordsPredicate(Arrays.asList(\"friend\", \"colleague\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"Shauryan123"},"content":" assertTrue(predicate.test(new PersonBuilder().withTags(\"friend\").build()));","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"Shauryan123"},"content":" assertTrue(predicate.test(new PersonBuilder().withTags(\"colleague\").build()));","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"Shauryan123"},"content":" // Mixed-case keywords","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"Shauryan123"},"content":" predicate \u003d new TagContainsKeywordsPredicate(Arrays.asList(\"fRiEnd\", \"cOlLeAgUe\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"Shauryan123"},"content":" assertTrue(predicate.test(new PersonBuilder().withTags(\"friend\").build()));","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"Shauryan123"},"content":" assertTrue(predicate.test(new PersonBuilder().withTags(\"colleague\").build()));","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"Shauryan123"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"Shauryan123"},"content":" public void test_tagDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"Shauryan123"},"content":" // Zero keywords","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"Shauryan123"},"content":" TagContainsKeywordsPredicate predicate \u003d new TagContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"Shauryan123"},"content":" assertFalse(predicate.test(new PersonBuilder().withTags(\"friend\").build()));","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"Shauryan123"},"content":" // Non-matching keyword","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"Shauryan123"},"content":" predicate \u003d new TagContainsKeywordsPredicate(Arrays.asList(\"associate\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"Shauryan123"},"content":" assertFalse(predicate.test(new PersonBuilder().withTags(\"friend\").build()));","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"Shauryan123"},"content":" assertFalse(predicate.test(new PersonBuilder().withTags(\"colleague\").build()));","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"Shauryan123"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"Shauryan123"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"Shauryan123"},"content":" List\u003cString\u003e keywords \u003d List.of(\"friend\", \"colleague\");","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"Shauryan123"},"content":" TagContainsKeywordsPredicate predicate \u003d new TagContainsKeywordsPredicate(keywords);","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"Shauryan123"},"content":" String expected \u003d TagContainsKeywordsPredicate.class.getCanonicalName() + \"{keywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"Shauryan123"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"Shauryan123":79}},{"path":"src/test/java/seedu/address/model/person/TagTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Shauryan123"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"Shauryan123"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"Shauryan123"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"Shauryan123"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"Shauryan123"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"Shauryan123"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"Shauryan123"},"content":"public class TagTest {","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"Shauryan123"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"Shauryan123"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"Shauryan123"},"content":" assertThrows(NullPointerException.class, () -\u003e new Tag(null));","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"Shauryan123"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"Shauryan123"},"content":" public void constructor_invalidTagName_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"Shauryan123"},"content":" String invalidTagName \u003d \"\";","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"Shauryan123"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Tag(invalidTagName));","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"Shauryan123"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"Shauryan123"},"content":" public void isValidTagName() {","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"Shauryan123"},"content":" // null tag name","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"Shauryan123"},"content":" assertThrows(NullPointerException.class, () -\u003e Tag.isValidTagName(null));","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"Shauryan123"},"content":" // invalid tag name","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"Shauryan123"},"content":" assertFalse(Tag.isValidTagName(\"\")); // empty string","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"Shauryan123"},"content":" assertFalse(Tag.isValidTagName(\" \")); // spaces only","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"Shauryan123"},"content":" assertFalse(Tag.isValidTagName(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"Shauryan123"},"content":" assertFalse(Tag.isValidTagName(\"peter*\")); // contains non-alphanumeric characters","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"Shauryan123"},"content":" // valid tag name","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"Shauryan123"},"content":" assertTrue(Tag.isValidTagName(\"friends\")); // alphabets only","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"Shauryan123"},"content":" assertTrue(Tag.isValidTagName(\"12345\")); // numbers only","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"Shauryan123"},"content":" assertTrue(Tag.isValidTagName(\"family\")); // alphanumeric characters","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"Shauryan123"},"content":" assertTrue(Tag.isValidTagName(\"neighbours\")); // with capital letters","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"Shauryan123"},"content":" assertTrue(Tag.isValidTagName(\"Classmates\")); // long tag names","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"Shauryan123"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"Shauryan123"},"content":" public void equals() {","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"Shauryan123"},"content":" Tag tag \u003d new Tag(\"friends\");","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"Shauryan123"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"Shauryan123"},"content":" assertTrue(tag.equals(new Tag(\"friends\")));","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"Shauryan123"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"Shauryan123"},"content":" assertTrue(tag.equals(tag));","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"Shauryan123"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"Shauryan123"},"content":" assertFalse(tag.equals(null));","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"Shauryan123"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"Shauryan123"},"content":" assertFalse(tag.equals(5.0f));","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"Shauryan123"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"Shauryan123"},"content":" assertFalse(tag.equals(new Tag(\"family\")));","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"Shauryan123"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"Shauryan123":61,"ibnu2651":1}},{"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.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.Phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"kaiyi27"},"content":"import seedu.address.model.person.Relationship;","lastModifiedDate":"2024-03-10"},{"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":"kaiyi27"},"content":" private static final String INVALID_RELATIONSHIP \u003d \"family\";","lastModifiedDate":"2024-03-10"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13"},{"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":"ibnu2651"},"content":" private static final String VALID_POLICY \u003d BENSON.getPolicy().toString();","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"kaiyi27"},"content":" private static final String VALID_RELATIONSHIP \u003d BENSON.getRelationship().toString();","lastModifiedDate":"2024-03-10"},{"lineNumber":34,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":35,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"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":"Shauryan123"},"content":" private static final List\u003cJsonAdaptedMeeting\u003e VALID_MEETINGS \u003d BENSON.getMeetings().stream()","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"Shauryan123"},"content":" .map(JsonAdaptedMeeting::new)","lastModifiedDate":"2024-03-23"},{"lineNumber":43,"author":{"gitId":"Shauryan123"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2024-03-23"},{"lineNumber":44,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"kaiyi27"},"content":" //assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2024-03-24"},{"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_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"kaiyi27"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_RELATIONSHIP,","lastModifiedDate":"2024-03-10"},{"lineNumber":55,"author":{"gitId":"Shauryan123"},"content":" VALID_POLICY, VALID_TAGS, VALID_MEETINGS);","lastModifiedDate":"2024-03-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-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 toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"kaiyi27"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-10"},{"lineNumber":63,"author":{"gitId":"Shauryan123"},"content":" VALID_RELATIONSHIP, VALID_POLICY, VALID_TAGS, VALID_MEETINGS);","lastModifiedDate":"2024-03-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","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_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"kaiyi27"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_RELATIONSHIP,","lastModifiedDate":"2024-03-10"},{"lineNumber":72,"author":{"gitId":"Shauryan123"},"content":" VALID_POLICY, VALID_TAGS, VALID_MEETINGS);","lastModifiedDate":"2024-03-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"kaiyi27"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-10"},{"lineNumber":80,"author":{"gitId":"Shauryan123"},"content":" VALID_RELATIONSHIP, VALID_POLICY, VALID_TAGS, VALID_MEETINGS);","lastModifiedDate":"2024-03-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","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_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"kaiyi27"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_ADDRESS, VALID_RELATIONSHIP,","lastModifiedDate":"2024-03-10"},{"lineNumber":89,"author":{"gitId":"Shauryan123"},"content":" VALID_POLICY, VALID_TAGS, VALID_MEETINGS);","lastModifiedDate":"2024-03-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"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":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"kaiyi27"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null, VALID_ADDRESS,","lastModifiedDate":"2024-03-10"},{"lineNumber":97,"author":{"gitId":"Shauryan123"},"content":" VALID_RELATIONSHIP, VALID_POLICY, VALID_TAGS, VALID_MEETINGS);","lastModifiedDate":"2024-03-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"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":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"kaiyi27"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_ADDRESS, VALID_RELATIONSHIP,","lastModifiedDate":"2024-03-10"},{"lineNumber":106,"author":{"gitId":"Shauryan123"},"content":" VALID_POLICY, VALID_TAGS, VALID_MEETINGS);","lastModifiedDate":"2024-03-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"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 toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"kaiyi27"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, null,","lastModifiedDate":"2024-03-10"},{"lineNumber":114,"author":{"gitId":"Shauryan123"},"content":" VALID_RELATIONSHIP, VALID_POLICY, VALID_TAGS, VALID_MEETINGS);","lastModifiedDate":"2024-03-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":119,"author":{"gitId":"kaiyi27"},"content":" @Test","lastModifiedDate":"2024-03-10"},{"lineNumber":120,"author":{"gitId":"kaiyi27"},"content":" public void toModelType_invalidRelationship_throwsIllegalValueException() {","lastModifiedDate":"2024-03-10"},{"lineNumber":121,"author":{"gitId":"kaiyi27"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-10"},{"lineNumber":122,"author":{"gitId":"kaiyi27"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, INVALID_RELATIONSHIP,","lastModifiedDate":"2024-03-10"},{"lineNumber":123,"author":{"gitId":"Shauryan123"},"content":" VALID_POLICY, VALID_TAGS, VALID_MEETINGS);","lastModifiedDate":"2024-03-23"},{"lineNumber":124,"author":{"gitId":"kaiyi27"},"content":" String expectedMessage \u003d Relationship.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-10"},{"lineNumber":125,"author":{"gitId":"kaiyi27"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-10"},{"lineNumber":126,"author":{"gitId":"kaiyi27"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":127,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":128,"author":{"gitId":"kaiyi27"},"content":" @Test","lastModifiedDate":"2024-03-10"},{"lineNumber":129,"author":{"gitId":"kaiyi27"},"content":" public void toModelType_nullRelationship_throwsIllegalValueException() {","lastModifiedDate":"2024-03-10"},{"lineNumber":130,"author":{"gitId":"kaiyi27"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-10"},{"lineNumber":131,"author":{"gitId":"Shauryan123"},"content":" null, VALID_POLICY, VALID_TAGS, VALID_MEETINGS);","lastModifiedDate":"2024-03-23"},{"lineNumber":132,"author":{"gitId":"kaiyi27"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Relationship.class.getSimpleName());","lastModifiedDate":"2024-03-10"},{"lineNumber":133,"author":{"gitId":"kaiyi27"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-10"},{"lineNumber":134,"author":{"gitId":"kaiyi27"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":135,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":137,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":138,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13"},{"lineNumber":139,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13"},{"lineNumber":140,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":141,"author":{"gitId":"kaiyi27"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_RELATIONSHIP,","lastModifiedDate":"2024-03-10"},{"lineNumber":142,"author":{"gitId":"Shauryan123"},"content":" VALID_POLICY, invalidTags, VALID_MEETINGS);","lastModifiedDate":"2024-03-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":146,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"Shauryan123":18,"kaiyi27":28,"ibnu2651":1,"-":99}},{"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":"kaiyi27"},"content":"//import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-24"},{"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":"kaiyi27"},"content":"//import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-24"},{"lineNumber":7,"author":{"gitId":"kaiyi27"},"content":"//import static seedu.address.testutil.TypicalPersons.HOON;","lastModifiedDate":"2024-03-24"},{"lineNumber":8,"author":{"gitId":"kaiyi27"},"content":"//import static seedu.address.testutil.TypicalPersons.IDA;","lastModifiedDate":"2024-03-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2018-08-13"},{"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":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class JsonAddressBookStorageTest {","lastModifiedDate":"2024-03-17"},{"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":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"ibnu2651"},"content":" return new JsonInsuraConnectBookStorage(Paths.get(filePath))","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"ibnu2651"},"content":" .readAddressBook(addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private Path addToTestDataPathIfNotNull(String prefsFileInTestDataFolder) {","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return prefsFileInTestDataFolder !\u003d null","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" ? TEST_DATA_FOLDER.resolve(prefsFileInTestDataFolder)","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" : null;","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":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void read_missingFile_emptyResult() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertFalse(readAddressBook(\"NonExistentFile.json\").isPresent());","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 read_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2019-03-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"notJsonFormatAddressBook.json\"));","lastModifiedDate":"2023-06-14"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void readAddressBook_invalidPersonAddressBook_throwDataLoadingException() {","lastModifiedDate":"2023-06-14"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"invalidPersonAddressBook.json\"));","lastModifiedDate":"2023-06-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 readAddressBook_invalidAndValidPersonAddressBook_throwDataLoadingException() {","lastModifiedDate":"2023-06-14"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"invalidAndValidPersonAddressBook.json\"));","lastModifiedDate":"2023-06-14"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void readAndSaveAddressBook_allInOrder_success() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" Path filePath \u003d testFolder.resolve(\"TempAddressBook.json\");","lastModifiedDate":"2019-04-25"},{"lineNumber":67,"author":{"gitId":"-"},"content":" AddressBook original \u003d getTypicalAddressBook();","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"Shauryan123"},"content":" JsonInsuraConnectBookStorage jsonAddressBookStorage \u003d new JsonInsuraConnectBookStorage(filePath);","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" // Save in new file and read back","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"kaiyi27"},"content":" //jsonAddressBookStorage.saveAddressBook(original, filePath);","lastModifiedDate":"2024-03-24"},{"lineNumber":72,"author":{"gitId":"kaiyi27"},"content":" //ReadOnlyAddressBook readBack \u003d jsonAddressBookStorage.readAddressBook(filePath).get();","lastModifiedDate":"2024-03-24"},{"lineNumber":73,"author":{"gitId":"kaiyi27"},"content":" //assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2024-03-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" // Modify data, overwrite exiting file, and read back","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"kaiyi27"},"content":" //original.addPerson(HOON);","lastModifiedDate":"2024-03-24"},{"lineNumber":77,"author":{"gitId":"kaiyi27"},"content":" //original.removePerson(ALICE);","lastModifiedDate":"2024-03-24"},{"lineNumber":78,"author":{"gitId":"kaiyi27"},"content":" //jsonAddressBookStorage.saveAddressBook(original, filePath);","lastModifiedDate":"2024-03-24"},{"lineNumber":79,"author":{"gitId":"kaiyi27"},"content":" //readBack \u003d jsonAddressBookStorage.readAddressBook(filePath).get();","lastModifiedDate":"2024-03-24"},{"lineNumber":80,"author":{"gitId":"kaiyi27"},"content":" //assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2024-03-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" // Save and read without specifying file path","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"kaiyi27"},"content":" //original.addPerson(IDA);","lastModifiedDate":"2024-03-24"},{"lineNumber":84,"author":{"gitId":"kaiyi27"},"content":" //jsonAddressBookStorage.saveAddressBook(original); // file path not specified","lastModifiedDate":"2024-03-24"},{"lineNumber":85,"author":{"gitId":"kaiyi27"},"content":" //readBack \u003d jsonAddressBookStorage.readAddressBook().get(); // file path not specified","lastModifiedDate":"2024-03-24"},{"lineNumber":86,"author":{"gitId":"kaiyi27"},"content":" //assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2024-03-24"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"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 saveAddressBook_nullAddressBook_throwsNullPointerException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveAddressBook(null, \"SomeFile.json\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * Saves {@code addressBook} at the specified {@code filePath}.","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" private void saveAddressBook(ReadOnlyAddressBook addressBook, String filePath) {","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"Shauryan123"},"content":" new JsonInsuraConnectBookStorage(Paths.get(filePath))","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"-"},"content":" .saveAddressBook(addressBook, addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" throw new AssertionError(\"There should not be an error writing to the file.\", ioe);","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":"","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void saveAddressBook_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveAddressBook(new AddressBook(), null));","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"Shauryan123":2,"kaiyi27":16,"ibnu2651":2,"-":91}},{"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":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"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":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"kaiyi27"},"content":"//import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-24"},{"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":"Shauryan123"},"content":" JsonInsuraConnectBookStorage addressBookStorage \u003d new JsonInsuraConnectBookStorage(getTempFilePath(\"ab\"));","lastModifiedDate":"2024-03-16"},{"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":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"-"},"content":" storageManager.saveAddressBook(original);","lastModifiedDate":"2016-09-28"},{"lineNumber":59,"author":{"gitId":"kaiyi27"},"content":" //ReadOnlyAddressBook retrieved \u003d storageManager.readAddressBook().get();","lastModifiedDate":"2024-03-24"},{"lineNumber":60,"author":{"gitId":"kaiyi27"},"content":" //assertEquals(original, new AddressBook(retrieved));","lastModifiedDate":"2024-03-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":{"Shauryan123":1,"kaiyi27":3,"-":64}},{"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.Address;","lastModifiedDate":"2017-12-23"},{"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":"-"},"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":"-"},"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":"-"},"content":" descriptor.setAddress(person.getAddress());","lastModifiedDate":"2017-06-21"},{"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":"-"},"content":" public EditPersonDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"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":"-"},"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":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"Shauryan123":1,"-":87}},{"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":"Shauryan123"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20"},{"lineNumber":5,"author":{"gitId":"Shauryan123"},"content":"import java.util.List;","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-24"},{"lineNumber":10,"author":{"gitId":"kaiyi27"},"content":"import seedu.address.model.person.Meeting;","lastModifiedDate":"2024-03-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-24"},{"lineNumber":14,"author":{"gitId":"kaiyi27"},"content":"import seedu.address.model.person.Policy;","lastModifiedDate":"2024-03-24"},{"lineNumber":15,"author":{"gitId":"kaiyi27"},"content":"import seedu.address.model.person.Relationship;","lastModifiedDate":"2024-03-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-04-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2017-04-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05"},{"lineNumber":28,"author":{"gitId":"ibnu2651"},"content":" public static final String DEFAULT_POLICY \u003d \"\";","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"kaiyi27"},"content":" public static final String DEFAULT_RELATIONSHIP \u003d \"client\";","lastModifiedDate":"2024-03-10"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20"},{"lineNumber":35,"author":{"gitId":"ibnu2651"},"content":" private Policy policy;","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"kaiyi27"},"content":" private Relationship relationship;","lastModifiedDate":"2024-03-10"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":39,"author":{"gitId":"Shauryan123"},"content":" private List\u003cMeeting\u003e meetings;","lastModifiedDate":"2024-03-23"},{"lineNumber":40,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20"},{"lineNumber":50,"author":{"gitId":"ibnu2651"},"content":" policy \u003d new Policy(DEFAULT_POLICY);","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"kaiyi27"},"content":" relationship \u003d new Relationship(DEFAULT_RELATIONSHIP);","lastModifiedDate":"2024-03-10"},{"lineNumber":52,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":53,"author":{"gitId":"Shauryan123"},"content":" meetings \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10"},{"lineNumber":60,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20"},{"lineNumber":64,"author":{"gitId":"ibnu2651"},"content":" policy \u003d personToCopy.getPolicy();","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"kaiyi27"},"content":" relationship \u003d personToCopy.getRelationship();","lastModifiedDate":"2024-03-10"},{"lineNumber":66,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20"},{"lineNumber":67,"author":{"gitId":"Shauryan123"},"content":" meetings \u003d new ArrayList\u003c\u003e(personToCopy.getMeetings());","lastModifiedDate":"2024-03-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20"},{"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":"2017-07-26"},{"lineNumber":79,"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":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String ... tags) {","lastModifiedDate":"2017-08-15"},{"lineNumber":82,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2017-12-20"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of 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 withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","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 Phone} 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 withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","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 Email} 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 withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":106,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","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":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":111,"author":{"gitId":"ibnu2651"},"content":" * Sets the {@code Policy} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-16"},{"lineNumber":112,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":113,"author":{"gitId":"ibnu2651"},"content":" public PersonBuilder withPolicy(String policy) {","lastModifiedDate":"2024-03-16"},{"lineNumber":114,"author":{"gitId":"ibnu2651"},"content":" this.policy \u003d new Policy(policy);","lastModifiedDate":"2024-03-16"},{"lineNumber":115,"author":{"gitId":"ibnu2651"},"content":" return this;","lastModifiedDate":"2024-03-16"},{"lineNumber":116,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":117,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":118,"author":{"gitId":"kaiyi27"},"content":" /**","lastModifiedDate":"2024-03-10"},{"lineNumber":119,"author":{"gitId":"kaiyi27"},"content":" * Sets the {@code Relationship} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-10"},{"lineNumber":120,"author":{"gitId":"kaiyi27"},"content":" */","lastModifiedDate":"2024-03-10"},{"lineNumber":121,"author":{"gitId":"kaiyi27"},"content":" public PersonBuilder withRelationship(String relationship) {","lastModifiedDate":"2024-03-10"},{"lineNumber":122,"author":{"gitId":"kaiyi27"},"content":" this.relationship \u003d new Relationship(relationship);","lastModifiedDate":"2024-03-10"},{"lineNumber":123,"author":{"gitId":"kaiyi27"},"content":" return this;","lastModifiedDate":"2024-03-10"},{"lineNumber":124,"author":{"gitId":"kaiyi27"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":125,"author":{"gitId":"kaiyi27"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":126,"author":{"gitId":"Shauryan123"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":127,"author":{"gitId":"Shauryan123"},"content":" * Adds a {@code Meeting} to the {@code Person} that we are building.","lastModifiedDate":"2024-03-23"},{"lineNumber":128,"author":{"gitId":"Shauryan123"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":129,"author":{"gitId":"Shauryan123"},"content":" public PersonBuilder withMeeting(Meeting meeting) {","lastModifiedDate":"2024-03-23"},{"lineNumber":130,"author":{"gitId":"Shauryan123"},"content":" this.meetings.add(meeting);","lastModifiedDate":"2024-03-23"},{"lineNumber":131,"author":{"gitId":"Shauryan123"},"content":" return this;","lastModifiedDate":"2024-03-23"},{"lineNumber":132,"author":{"gitId":"Shauryan123"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":133,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":134,"author":{"gitId":"kaiyi27"},"content":" /**","lastModifiedDate":"2024-03-24"},{"lineNumber":135,"author":{"gitId":"kaiyi27"},"content":" * Builds and returns a new Person object with the specified details.","lastModifiedDate":"2024-03-24"},{"lineNumber":136,"author":{"gitId":"kaiyi27"},"content":" *","lastModifiedDate":"2024-03-24"},{"lineNumber":137,"author":{"gitId":"kaiyi27"},"content":" * @return A new Person object with the specified details.","lastModifiedDate":"2024-03-24"},{"lineNumber":138,"author":{"gitId":"kaiyi27"},"content":" */","lastModifiedDate":"2024-03-24"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05"},{"lineNumber":140,"author":{"gitId":"Shauryan123"},"content":" Person p \u003d new Person(name, phone, email, address, relationship, policy, tags);","lastModifiedDate":"2024-03-23"},{"lineNumber":141,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":142,"author":{"gitId":"Shauryan123"},"content":" p.setMeetings(this.meetings);","lastModifiedDate":"2024-03-23"},{"lineNumber":143,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":144,"author":{"gitId":"Shauryan123"},"content":" return p;","lastModifiedDate":"2024-03-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":147,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03"}],"authorContributionMap":{"Shauryan123":20,"kaiyi27":20,"ibnu2651":12,"-":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":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"ibnu2651"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_RELATIONSHIP;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"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":"Shauryan123"},"content":" sb.append(PREFIX_RELATIONSHIP + person.getRelationship().value + \" \");","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" person.getTags().stream().forEach(","lastModifiedDate":"2017-05-09"},{"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":"-"},"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":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":54,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" sb.append(PREFIX_TAG);","lastModifiedDate":"2018-03-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05"}],"authorContributionMap":{"Shauryan123":2,"ibnu2651":1,"-":62}},{"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":"ibnu2651"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_POLICY_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"ibnu2651"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_POLICY_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"kaiyi27"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_RELATIONSHIP_AMY;","lastModifiedDate":"2024-03-10"},{"lineNumber":14,"author":{"gitId":"kaiyi27"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_RELATIONSHIP_BOB;","lastModifiedDate":"2024-03-10"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-08-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-08-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":18,"author":{"gitId":"Shauryan123"},"content":"import java.time.Duration;","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"Shauryan123"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"Shauryan123"},"content":"import java.time.LocalTime;","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":26,"author":{"gitId":"Shauryan123"},"content":"import seedu.address.model.person.Meeting;","lastModifiedDate":"2024-03-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":34,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":35,"author":{"gitId":"kaiyi27"},"content":" public static final Meeting MEETING_1 \u003d new Meeting(LocalDate.of(2023, 3, 20),","lastModifiedDate":"2024-03-24"},{"lineNumber":36,"author":{"gitId":"kaiyi27"},"content":" LocalTime.of(14, 0), Duration.ofHours(1), \"Discuss new policy\",","lastModifiedDate":"2024-03-24"},{"lineNumber":37,"author":{"gitId":"kaiyi27"},"content":" \"Bring all necessary documents\");","lastModifiedDate":"2024-03-24"},{"lineNumber":38,"author":{"gitId":"kaiyi27"},"content":" public static final Meeting MEETING_2 \u003d new Meeting(LocalDate.of(2023, 4, 5),","lastModifiedDate":"2024-03-24"},{"lineNumber":39,"author":{"gitId":"kaiyi27"},"content":" LocalTime.of(10, 30), Duration.ofHours(2), \"Review quarterly results\",","lastModifiedDate":"2024-03-24"},{"lineNumber":40,"author":{"gitId":"kaiyi27"},"content":" \"Prepare presentation slides\");","lastModifiedDate":"2024-03-24"},{"lineNumber":41,"author":{"gitId":"Shauryan123"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final Person ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2018-01-10"},{"lineNumber":43,"author":{"gitId":"-"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2017-04-05"},{"lineNumber":44,"author":{"gitId":"ibnu2651"},"content":" .withPhone(\"94351253\").withRelationship(\"client\").withPolicy(\"Policy 1\")","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"Shauryan123"},"content":" .withTags(\"friends\").withMeeting(MEETING_1).build();","lastModifiedDate":"2024-03-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10"},{"lineNumber":47,"author":{"gitId":"-"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2017-09-21"},{"lineNumber":48,"author":{"gitId":"ibnu2651"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\").withRelationship(\"client\").withPolicy(\"Policy 1\")","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"Shauryan123"},"content":" .withTags(\"owesMoney\", \"friends\").withMeeting(MEETING_2).build();","lastModifiedDate":"2024-03-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2018-01-10"},{"lineNumber":51,"author":{"gitId":"kaiyi27"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\").withRelationship(\"client\").build();","lastModifiedDate":"2024-03-10"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2018-01-10"},{"lineNumber":53,"author":{"gitId":"kaiyi27"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\").withRelationship(\"client\")","lastModifiedDate":"2024-03-10"},{"lineNumber":54,"author":{"gitId":"kaiyi27"},"content":" .withTags(\"friends\").build();","lastModifiedDate":"2024-03-10"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2018-01-10"},{"lineNumber":56,"author":{"gitId":"kaiyi27"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\").withRelationship(\"partner\").build();","lastModifiedDate":"2024-03-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2018-01-10"},{"lineNumber":58,"author":{"gitId":"kaiyi27"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\").withRelationship(\"partner\").build();","lastModifiedDate":"2024-03-10"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2018-01-10"},{"lineNumber":60,"author":{"gitId":"kaiyi27"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\").withRelationship(\"partner\").build();","lastModifiedDate":"2024-03-10"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2018-01-10"},{"lineNumber":64,"author":{"gitId":"kaiyi27"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\").withRelationship(\"client\").build();","lastModifiedDate":"2024-03-10"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2018-01-10"},{"lineNumber":66,"author":{"gitId":"kaiyi27"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\").withRelationship(\"partner\").build();","lastModifiedDate":"2024-03-10"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2018-01-10"},{"lineNumber":70,"author":{"gitId":"kaiyi27"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withRelationship(VALID_RELATIONSHIP_AMY)","lastModifiedDate":"2024-03-10"},{"lineNumber":71,"author":{"gitId":"ibnu2651"},"content":" .withPolicy(VALID_POLICY_AMY).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2018-01-10"},{"lineNumber":73,"author":{"gitId":"kaiyi27"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withRelationship(VALID_RELATIONSHIP_BOB)","lastModifiedDate":"2024-03-10"},{"lineNumber":74,"author":{"gitId":"ibnu2651"},"content":" .withPolicy(VALID_POLICY_BOB).withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":80,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05"},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05"},{"lineNumber":85,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10"},{"lineNumber":86,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10"},{"lineNumber":92,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13"}],"authorContributionMap":{"Shauryan123":8,"kaiyi27":18,"ibnu2651":6,"-":62}}] diff --git a/AY2324S2-CS2103T-T13-3_tp_master/commits.json b/AY2324S2-CS2103T-T13-3_tp_master/commits.json index 6d570787..f29b6603 100644 --- a/AY2324S2-CS2103T-T13-3_tp_master/commits.json +++ b/AY2324S2-CS2103T-T13-3_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Shauryan123":[{"date":"2024-03-05","commitResults":[{"hash":"e1a2a39cacb0e720e3ad334bbe26deeadb1a70f0","isMergeCommit":false,"messageTitle":"Update Shauryan\u0027s Details in AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"1d05c2fda6e1f6be4af0cc0a8f4952f56d6a778b","isMergeCommit":false,"messageTitle":"Update NFRs for DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":0}}},{"hash":"ccaff0de905fee27e17894e4f65c41522ab4dbcc","isMergeCommit":false,"messageTitle":"Add use cases for DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":56,"deletions":0}}}]},{"date":"2024-03-07","commitResults":[{"hash":"b2f430995a59cfc2b9834122a2ad365371d77e1d","isMergeCommit":true,"messageTitle":"Merge pull request #17 from Shauryan123/branch-v1.1","messageBody":"Change name to shauryan.png","fileTypesAndContributionMap":{}},{"hash":"605e0cf8c55ab414f82c15b3eb337ea38c36e4f9","isMergeCommit":false,"messageTitle":"Update image file name for Shauryan","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-16","commitResults":[{"hash":"fadaeeaed2cd75aaf41ec03035e667d2b38c72a2","isMergeCommit":false,"messageTitle":"Create Relationship class and relationship keyword class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":98,"deletions":0},"other":{"insertions":8,"deletions":7}}},{"hash":"23bc46508e59f9596de2a546202293af50d47b9f","isMergeCommit":false,"messageTitle":"Rename variables as per our InsuraConnect app","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":14,"deletions":14}}},{"hash":"0a89c5ce788b4126ba9bde9242afd271c034b88c","isMergeCommit":false,"messageTitle":"Rename variables as per our app","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":13}}},{"hash":"67adebf58a848712cc6a3d9b4761bab8c6bf4a89","isMergeCommit":false,"messageTitle":"Integrate relationship class into ArgumentTokeniser, CliSyntax etc","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":61,"deletions":17}}},{"hash":"3a89e95848677c4be4a280d63973b59fa876a119","isMergeCommit":false,"messageTitle":"Add relationship into person, person card, JsonAdaptedPerson","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":87,"deletions":24}}},{"hash":"1bd2f3b4c2181126c91084681f77404752b0b6d8","isMergeCommit":false,"messageTitle":"Update test files PersonBuilder and PersonUitl by adding default relationship","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":25,"deletions":7}}},{"hash":"0961f0bc7b806efb9f654b739faa39aa7a1ad5fd","isMergeCommit":true,"messageTitle":"Merge pull request #27 from kaiyi27/branch-AddRelationship","messageBody":"Branch add relationship into contact information","fileTypesAndContributionMap":{}}]},{"date":"2024-03-17","commitResults":[{"hash":"5372980dce5d58f94d6e64d38750da9d16c20aae","isMergeCommit":false,"messageTitle":"Refactor relationship class in person package","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":169,"deletions":79},"other":{"insertions":1,"deletions":1},"test-code":{"insertions":166,"deletions":72}}},{"hash":"52bdf1b404e43941a91ea405fc686ee27bea2022","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of github.com:Shauryan123/tp into branch-v1.1Add_Find_Feature_Based_On_Relationship_And_Tag","messageBody":"# Conflicts:\n#\tsrc/main/java/seedu/address/logic/Messages.java\n#\tsrc/main/java/seedu/address/logic/commands/ClearCommand.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/ModelManager.java\n#\tsrc/main/java/seedu/address/model/person/Person.java\n#\tsrc/main/java/seedu/address/model/person/Relationship.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/duplicatePersonAddressBook.json\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/EditCommandParserTest.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/PersonBuilder.java\n#\tsrc/test/java/seedu/address/testutil/PersonUtil.java\n#\tsrc/test/java/seedu/address/testutil/TypicalPersons.java\n","fileTypesAndContributionMap":{}},{"hash":"eb9dcc4ba8c3b06afdcb5f95e09cd5ca01551a1d","isMergeCommit":false,"messageTitle":"Resolve merge conflicts with master branch from team repo","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":50,"deletions":51},"test-code":{"insertions":50,"deletions":50}}},{"hash":"f5825c0ff19453b3ef9bdc716697c860f459d3cc","isMergeCommit":false,"messageTitle":"Add commitAddressBook function call in execute method of Clear Command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0}}}]},{"date":"2024-03-20","commitResults":[{"hash":"2cd0047e43eba16bd0624d0e1ada27fded94988d","isMergeCommit":false,"messageTitle":"Add RelationshipContainsKeywordsPredicateTest and TagContainsKeywordsPredicateTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":0}}},{"hash":"df9d82ddb802ebafef5f93e239b7a8db4bc08d89","isMergeCommit":false,"messageTitle":"Add toString Method in RelationshipContainsKeywrodsPredicate and TagContainsKeywordsPredicate Class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":0}}},{"hash":"f1ece53b372007a23bb01c34554572bf1ac71174","isMergeCommit":false,"messageTitle":"Update tests for FindCommand to include find based on relationship and tag","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":37,"deletions":22}}},{"hash":"e7c03e4ed98ec669b17ec8b9438e419a72d10773","isMergeCommit":false,"messageTitle":"Update FindCommanParserTest to update tests for relationship, tag and combined predicates","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"fc8af566b12128c1be43c2bc80dc85afaa325ba4","isMergeCommit":false,"messageTitle":"Change UI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":38,"deletions":27}}},{"hash":"425a140cc41c8b91541772865d37c8280e3c4253","isMergeCommit":false,"messageTitle":"Fix tests for RelationshipContainsKeywordsPredicateTest, TagContainsKeywordsPredicateTest, FindCommandParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":256,"deletions":12}}},{"hash":"65bead4de25190ada28aa403dbcd049553dfac30","isMergeCommit":true,"messageTitle":"Merge pull request #38 from Shauryan123/Fixing-Tests_Change-UI-v1.2-Branch","messageBody":"Fixing tests change UI v1.2 branch","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"169df88f8241fdcca8b4cc1178103d37f4203f5d","isMergeCommit":false,"messageTitle":"Add Hover Effect for PersonCard","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":30,"deletions":0}}},{"hash":"b9e8d507c102b702210751fbcd022cf845fadac8","isMergeCommit":false,"messageTitle":"Add sequence diagram for enhanced find feature","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":70,"deletions":0}}},{"hash":"0f7d0774a10a7993307ae483aa10fce6d988b9f9","isMergeCommit":false,"messageTitle":"Add TagTest class","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":61,"deletions":0}}},{"hash":"3612ea5b89ba8750bf4a2f89dfbf2c3c04fcacf6","isMergeCommit":true,"messageTitle":"Merge pull request #50 from Shauryan123/master","messageBody":"Add UML sequence diagram for enhanced find feature, add hover effect for PersonCard, add TagTest Class","fileTypesAndContributionMap":{}}]},{"date":"2024-03-23","commitResults":[{"hash":"ff79ce42f4630956ee900ac6644dd2fc78c727e9","isMergeCommit":false,"messageTitle":"Add the meeting class to keep track of meetings","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":468,"deletions":22}}},{"hash":"cb08efa4d167946c8695484e275f636c64eb06ad","isMergeCommit":false,"messageTitle":"Add ScheduleMeetingCommand , ScheduleMeetingCommandParser class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":0}}},{"hash":"bbcb13dde46affb694ba4b32b1d6138bfa60cb29","isMergeCommit":false,"messageTitle":"Add hasOverlapMeeting method to check for meetings overlap with clients and partners","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":18,"deletions":0}}},{"hash":"8964b918327d2f8c9bd2ab77c964eebd16f593db","isMergeCommit":false,"messageTitle":"Add addMeetings function to Person class to create a list of meetings for clients and partners","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":3}}},{"hash":"faaf7e8cb63b19cc31d79ef5b9f508df4cd1f7db","isMergeCommit":false,"messageTitle":"Add meetings attribute for Person","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":24,"deletions":8}}},{"hash":"85a2b8b7cd32270b687cb6a105be54d1af5d9c4b","isMergeCommit":false,"messageTitle":"Add JsonAdaptedMeeting Class for storing in addressbook","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":81,"deletions":1}}},{"hash":"e8af5ec0085a037f2d6872781c5cd691106a73b9","isMergeCommit":false,"messageTitle":"Add meetings property to person in addressbook","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":160,"deletions":19}}},{"hash":"4c0728934bd85094d73f8289660da1731af62db1","isMergeCommit":false,"messageTitle":"Change UI to incorporate list of meetings in person card","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":271,"deletions":62}}},{"hash":"56c504876e920503120e24de9bc53ad550c12042","isMergeCommit":false,"messageTitle":"Change TypicalPersons to incorporate meetings parameter for Person","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":10,"deletions":2}}},{"hash":"6c98a8cfad5438a008b0a99c2f1af2495d0ced72","isMergeCommit":false,"messageTitle":"Add meetings for person in PersonCard UI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":91,"deletions":62}}},{"hash":"d293e2c8a37a6d9dfe39770cda0fb1352f60f6ed","isMergeCommit":false,"messageTitle":"Change JsonAdaptedPersonTest for including valid meetings for person","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":19,"deletions":11}}}]},{"date":"2024-03-24","commitResults":[{"hash":"b992502b02b359f2678751e232a1ad8ba85c7455","isMergeCommit":false,"messageTitle":"Delete src/main/java/seedu/address/logic/commands/UndoCommand.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":37}}},{"hash":"0138bd64cba8c154fb851ab2c9ca747001f78a4b","isMergeCommit":false,"messageTitle":"Move meeting related messages from Messages to ScheduleMeetingCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":4}}},{"hash":"c7e52a6803d0d7764b29fcdddba0930ce3dd37d0","isMergeCommit":false,"messageTitle":"Add arePrefixesPresent method in ArgumentMultimap","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":0}}},{"hash":"3d7d34cbb14b92c0532bba9baf599e5a91e8ceff","isMergeCommit":false,"messageTitle":"Fix undo bug for scheduling meetings","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":7}}},{"hash":"0a1c72d85c54c195a9b4bb4e1b94821c19bd8240","isMergeCommit":false,"messageTitle":"Make notes as optional parameter for meeting and other parameters as compulsory","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":2}}},{"hash":"d20f16adffbbe7a3f76b64ec0666ee61d001b108","isMergeCommit":false,"messageTitle":"Add startDateTime in Meeting class to combine meetingDate and meetingTime fields","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":1}}},{"hash":"6f7c7c4ec618d67edd7e3dd12ebb911e6b190c7d","isMergeCommit":false,"messageTitle":"Add getCopy method in Person Class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":26,"deletions":2}}},{"hash":"2c1df0ab3282ea5dc87449e9c114cbcf1eb5d50d","isMergeCommit":false,"messageTitle":"Add startDateTime field in JsonAdaptedMeeting class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":0}}},{"hash":"98700bed861c5d76201ee0ad7d4d3446a214cfaa","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Meeting\u0027 of https://github.com/Shauryan123/tp into branch-Meeting","messageBody":"","fileTypesAndContributionMap":{}}]}],"kaiyi27":[{"date":"2024-03-02","commitResults":[{"hash":"2b709c27cdc0e467935fab1c304ae051db9460b4","isMergeCommit":false,"messageTitle":"Update the information in AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"684854fd649bd41c769dac772c157a435c64aa3c","isMergeCommit":false,"messageTitle":"Update the role in AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":1}}},{"hash":"33ba8c517ca9bf95e514edd7bff76ee59ec3fdea","isMergeCommit":false,"messageTitle":"Update User Stories in DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":36,"deletions":9}}}]},{"date":"2024-03-03","commitResults":[{"hash":"ba193c6471d9428566087a7aa3533551937a708c","isMergeCommit":false,"messageTitle":"Add list use case into DeveloperGuide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":14,"deletions":1}}},{"hash":"b04a341e576cd86c11fb4433f4d1be8a301f8eee","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-v1.1\u0027 into master","messageBody":"* branch-v1.1:\n Add list use case into DeveloperGuide\n Update User Stories in DeveloperGuide.md\n Update the role in AboutUs\n Update the information in AboutUs.md\n Add profile photo into docs folder\n","fileTypesAndContributionMap":{}},{"hash":"8cab7ca2a32c8f2a049f6d0546caf879c318fb4d","isMergeCommit":true,"messageTitle":"Merge pull request #11 from ibnu2651/branch-v1.1","messageBody":"Branch v1.1","fileTypesAndContributionMap":{}},{"hash":"4fb134a687cccbe0a286065d04fa9fa5f5220476","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-T13-3/tp","messageBody":"* \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-T13-3/tp:\n Add use case for DG\n Update NFR for DG\n Update site-wide settings\n Update README\n Add Ibnu\u0027s details to AboutUs.md\n","fileTypesAndContributionMap":{}}]},{"date":"2024-03-06","commitResults":[{"hash":"d23177206affb4837bc6ea4486b0ce55655bc301","isMergeCommit":true,"messageTitle":"Merge pull request #14 from ibnu2651/branch-v1.1","messageBody":"Branch v1.1","fileTypesAndContributionMap":{}},{"hash":"f1047f9235623e1cae8f89a98cadcac35aa3927c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-T13-3/tp","messageBody":"* \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-T13-3/tp:\n Update README contents\n Replace Ui image\n Add use cases for DG\n Update NFRs for DG\n Add Shauryan\u0027s Details in AboutUs.md\n Update Shauryan\u0027s Details in AboutUs.md\n","fileTypesAndContributionMap":{}},{"hash":"ad6071ea69e3052d69a0afdd1ccbbf29fbd2f429","isMergeCommit":true,"messageTitle":"Merge pull request #15 from ibnu2651/branch-v1.1","messageBody":"Update product scope in DG","fileTypesAndContributionMap":{}}]},{"date":"2024-03-07","commitResults":[{"hash":"111a592b6919248df1e4803be165f269bed8a24c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-T13-3/tp","messageBody":"* \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-T13-3/tp:\n Update product scope in DG\n","fileTypesAndContributionMap":{}},{"hash":"e2af7557350d42bb360ed1f6e1a856c7dda465dc","isMergeCommit":true,"messageTitle":"Merge pull request #16 from justincred/Add-About-Us-Branch","messageBody":"Add picture and github link","fileTypesAndContributionMap":{}}]},{"date":"2024-03-09","commitResults":[{"hash":"62c9da9c2ef71265d2ec8d9200dbf7bc83ab5d88","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-T13-3/tp","messageBody":"* \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-T13-3/tp:\n Delete docs/images/shauryan.png\n Add use case for clear\n Change name to shauryan.png\n Change shauryan github name\n Change shauryan image file name\n Move homepage link to top\n Add portfolio to Ibnu\n Add porfolio to Justin\n Rename file name to match github\n Add newline after EOF\n Add picture and github link\n","fileTypesAndContributionMap":{}}]},{"date":"2024-03-10","commitResults":[{"hash":"00d868a40497689e7ffc0e1f27a27c6c08bab4f8","isMergeCommit":false,"messageTitle":"Create Relationship class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":55,"deletions":0}}},{"hash":"cf38e0c469ba0b0330818133cef9cfb1af16c3d5","isMergeCommit":false,"messageTitle":"Add relationship prefix and relationtest class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":2},"test-code":{"insertions":58,"deletions":0}}},{"hash":"26036f130b4d84ffec2474a95045a2775b506d65","isMergeCommit":false,"messageTitle":"Modify edit command and Person class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":33,"deletions":3}}},{"hash":"234452b25199dff80a5a722d8186179170bc5881","isMergeCommit":false,"messageTitle":"Modify EditCommandParser according to EditCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":24,"deletions":2}}},{"hash":"c2e0ab065707df118dbab0673a726d774fc6124a","isMergeCommit":false,"messageTitle":"Add relationship function into AddCommand and AddCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":5}}},{"hash":"cc52d18141396c9ab96231bd8cd97c102a1b3965","isMergeCommit":false,"messageTitle":"Improve the javacodestyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":6}}},{"hash":"c046cc96bbf906f47fa0567d26f296730c70962c","isMergeCommit":false,"messageTitle":"Add relationship to the sample data and PersonBuilder","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":8},"test-code":{"insertions":13,"deletions":1}}},{"hash":"2ae6d7ebe4f511b9da43e48ae527cac52e58534d","isMergeCommit":false,"messageTitle":"Add relationship into data and storage","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":54,"deletions":21}}},{"hash":"898bace7149d246dedd7bf85ca392574fdea98b0","isMergeCommit":false,"messageTitle":"Modify minor issue in editcommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"133887f2fb063722307f4233d41f001f98860ea4","isMergeCommit":false,"messageTitle":"Add relationship into personcard","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0}}},{"hash":"5e8a0b043bda1b162ecab55b09c0b69c96ff8d90","isMergeCommit":false,"messageTitle":"Add relationship into all test class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":0},"test-code":{"insertions":90,"deletions":34}}},{"hash":"16753c5f09aa7993fe60eec66ce2d9c9b6845bff","isMergeCommit":false,"messageTitle":"Add relationship feature into CommandParserTest class","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":33,"deletions":16}}},{"hash":"b5c00699915a7faf722fc0fa0cf97637ea486a5c","isMergeCommit":false,"messageTitle":"Modify minor bug in Person class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-16","commitResults":[{"hash":"651ed6b6d9902ca99fef8ccda4a1cd3ec4c2997f","isMergeCommit":true,"messageTitle":"Merge pull request #28 from justincred/Undo-Branch","messageBody":"Undo branch","fileTypesAndContributionMap":{}}]},{"date":"2024-03-17","commitResults":[{"hash":"8700969469afe835b2dc29c71f2ca02a5f789776","isMergeCommit":true,"messageTitle":"Merge pull request #32 from ibnu2651/branch-Policy","messageBody":"Branch policy","fileTypesAndContributionMap":{}},{"hash":"aa56862a2c5e435ddf73488f36cc3214cf630a52","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-AddRelationship\u0027","messageBody":"* branch-AddRelationship:\n Modify minor bug in Person class\n Add relationship feature into CommandParserTest class\n Add relationship into all test class\n Add relationship into personcard\n Modify minor issue in editcommand\n Add relationship into data and storage\n Add relationship to the sample data and PersonBuilder\n Improve the javacodestyle\n Add relationship function into AddCommand and AddCommandParser\n Modify EditCommandParser according to EditCommand\n Modify edit command and Person class\n Add relationship prefix and relationtest class\n Create Relationship class\n","fileTypesAndContributionMap":{}},{"hash":"90c8b0fbdc59a1a45522d2a443694ecc7fac7c58","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-T13-3/tp","messageBody":"* \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-T13-3/tp: (28 commits)\n Add commitAddressBook function call in execute method of Clear Command\n Resolve merge conflicts with master branch from team repo\n Refactor relationship class in person package\n Fix checkstyle errors\n Remove trailing whitespace in PolicyCommandTest\n Change line separators to \\n\n Add functions to model stub\n Fix code checks\n Add end of file whitespace\n Update test files PersonBuilder and PersonUitl by adding default relationship\n Add relationship into person, person card, JsonAdaptedPerson\n Integrate relationship class into ArgumentTokeniser, CliSyntax etc\n Rename variables as per our app\n Rename variables as per our InsuraConnect app\n Create Relationship class and relationship keyword class\n Add explicit import statements\n Add undo and redo features\n Update person card with policy\n Update storage\n Modify person to support policy\n ...\n","fileTypesAndContributionMap":{}}]},{"date":"2024-03-18","commitResults":[{"hash":"45c6c6812b0529e8b9a7ba7ad0db4a5299c744aa","isMergeCommit":false,"messageTitle":"Fix the issue in test class","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":5}}}]},{"date":"2024-03-19","commitResults":[{"hash":"3f9a3b690496f9912406b3008684d8c9850c9e7a","isMergeCommit":true,"messageTitle":"Merge pull request #33 from ibnu2651/branch-Policy","messageBody":"Update policy to only work for clients","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"279fbb5ad513d6da9ee154dbaadc5cb30d4edc91","isMergeCommit":true,"messageTitle":"Merge pull request #37 from ibnu2651/branch-Policy","messageBody":"Enable undo/redo for policy command","fileTypesAndContributionMap":{}},{"hash":"84ab4924c3da7f6e286480410e8e8025a29c62af","isMergeCommit":false,"messageTitle":"Update the UML diagram","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":0}}},{"hash":"7e06eb92ffa84b6d722bd2da95f4d218af634fe9","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-T13-3/tp","messageBody":"* \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-T13-3/tp: (22 commits)\n Update Ui image in Readme\n Create test cases for combined predicate\n Change line separator format\n Fix find command test case bug\n Fix tests for RelationshipContainsKeywordsPredicateTest, TagContainsKeywordsPredicateTest, FindCommandParserTest\n Change UI\n Update FindCommanParserTest to update tests for relationship, tag and combined predicates\n Update tests for FindCommand to include find based on relationship and tag\n Add toString Method in RelationshipContainsKeywrodsPredicate and TagContainsKeywordsPredicate Class\n Add RelationshipContainsKeywordsPredicateTest and TagContainsKeywordsPredicateTest\n Enable undo/redo for policy command\n Uncomment failing test cases\n Comment out failing test cases\n Change test case to copy over policy when editing\n Fix tests error due to not commiting after action\n Update Policy UI\n Update policy UI\n Update policy UI\n Update UI for policy label\n Fix checkstyle errors\n ...\n\n# Conflicts:\n#\tsrc/test/java/seedu/address/testutil/EditPersonDescriptorBuilder.java\n","fileTypesAndContributionMap":{}},{"hash":"1e57188996ae9d7847b50142aac339a2390584ac","isMergeCommit":true,"messageTitle":"Merge pull request #43 from kaiyi27/master","messageBody":"Update the UML diagram in puml files","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"c12bf45aa5b2cfd6b27b02b3c8d7217d185c5cd5","isMergeCommit":false,"messageTitle":"Add edit uml sequence diagram","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":80,"deletions":0}}},{"hash":"3574aec43ad22588c9c41892d8269facd6d7be0f","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-T13-3/tp","messageBody":"* \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-T13-3/tp:\n Remove unused import\n Fix Checkstyle\n Remove commented code for redo and undo command\n Add tests for redo and undo command\n Modify undo and redo for more abstraction\n","fileTypesAndContributionMap":{}},{"hash":"d668b3e8cb624bb16f624a74273524dddf8f6e6a","isMergeCommit":true,"messageTitle":"Merge pull request #48 from kaiyi27/master","messageBody":"Add uml sequence diagram for edit","fileTypesAndContributionMap":{}},{"hash":"f0d3ff05aaf55ba34a758bb6b44d08329b69f223","isMergeCommit":false,"messageTitle":"Modify the relationship to make it immutable","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":17},"test-code":{"insertions":4,"deletions":28}}},{"hash":"5fda85259547862fdd340d5bcfe1936b3e735bce","isMergeCommit":false,"messageTitle":"Remove unused import statement","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":3}}},{"hash":"9ab22cbcd4edccce660ed5cb3d99c2de0330bd76","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-T13-3/tp","messageBody":"* \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-T13-3/tp:\n","fileTypesAndContributionMap":{}},{"hash":"a43d0a3313fbf473f6f38da4a8e7068ac5c988fb","isMergeCommit":false,"messageTitle":"Add empty line at the end of the file","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"92a07383b7cdfb59e55552237dc67b5e757b1134","isMergeCommit":false,"messageTitle":"Add test case for edit Relationship situation","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1},"test-code":{"insertions":3,"deletions":0}}}]}],"ibnu2651":[{"date":"2024-03-03","commitResults":[{"hash":"332f64d287ee64b1cebb86e021ce954e3020482d","isMergeCommit":true,"messageTitle":"Merge pull request #8 from kaiyi27/branch-v1.1","messageBody":"Merge Branch v1.1","fileTypesAndContributionMap":{}},{"hash":"c084f1ee4ed2c7f1ceba0373852f3e3de87e8b1c","isMergeCommit":false,"messageTitle":"Add Ibnu\u0027s details to AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":26}}},{"hash":"a7908bdb075a4686c142535b04ea8ae0121044f3","isMergeCommit":false,"messageTitle":"Update README","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":1}}},{"hash":"66a785617d6e30c9c5ca2be74f9f242324f5ba89","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-README\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"5d069e37e88e4930db97f644654f6157ee0b6884","isMergeCommit":false,"messageTitle":"Update site-wide settings","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"47a6255e56b86124d2b3ebd9d38b904fb6478ed9","isMergeCommit":false,"messageTitle":"Update NFR for DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":1}}},{"hash":"743be88c300f7b9de1589b26cc814d63d42ae318","isMergeCommit":false,"messageTitle":"Add use case for DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":16,"deletions":1}}}]},{"date":"2024-03-05","commitResults":[{"hash":"02649cf841f03825e98dd4a6a87a0d38f74c9881","isMergeCommit":true,"messageTitle":"Merge pull request #13 from Shauryan123/branch-v1.1","messageBody":"Merge Branch v1.1","fileTypesAndContributionMap":{}}]},{"date":"2024-03-06","commitResults":[{"hash":"2c69811450922ebed9c6bee757926198580729f6","isMergeCommit":false,"messageTitle":"Update README contents","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":10}}},{"hash":"cd51f599422e90badc604585cfe433ed5341a7f4","isMergeCommit":false,"messageTitle":"Update product scope in DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":1}}}]},{"date":"2024-03-12","commitResults":[{"hash":"9cf66ecadd048b35b64ba8d6bb7b621be5a9f8a4","isMergeCommit":false,"messageTitle":"Add Policy and ClientStatus classes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":106,"deletions":0}}}]},{"date":"2024-03-16","commitResults":[{"hash":"226e655a119e51b628e87069ed0269b712f28c33","isMergeCommit":false,"messageTitle":"Delete ClientStatus class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":57}}},{"hash":"23142487eb5096c25ad5c820434672712a3c2751","isMergeCommit":false,"messageTitle":"Add policy command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":34,"deletions":9},"test-code":{"insertions":30,"deletions":8}}},{"hash":"5a49bb7d5e3ff33711d84dd70c26b00c856d26e0","isMergeCommit":false,"messageTitle":"Add policy command parser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":0},"test-code":{"insertions":4,"deletions":0}}},{"hash":"a76ed1da1b14409ce505275369123eda94ddbc3a","isMergeCommit":false,"messageTitle":"Add policy command parser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":73,"deletions":4},"test-code":{"insertions":83,"deletions":5}}},{"hash":"3ae032bf3c537adb707f30a7ee566c2c0b4fadf2","isMergeCommit":false,"messageTitle":"Add policy class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":41,"deletions":53},"test-code":{"insertions":43,"deletions":9}}},{"hash":"161e4421fb5485721383f6295c47bcfb21ca42ab","isMergeCommit":false,"messageTitle":"Modify person to support policy","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":26,"deletions":30},"test-code":{"insertions":14,"deletions":6}}},{"hash":"db5a9d2c4f3b04759be74f846bc6c5849e95b363","isMergeCommit":false,"messageTitle":"Update storage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":2},"test-code":{"insertions":16,"deletions":13}}},{"hash":"6075839d4d39d4cf340a532e928a215df0ea7a97","isMergeCommit":false,"messageTitle":"Update person card with policy","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":32,"deletions":3},"test-code":{"insertions":79,"deletions":6}}}]},{"date":"2024-03-17","commitResults":[{"hash":"9786790084c8cf1647c2d173718a4ed38564bf2a","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-Policy","messageBody":"# Conflicts:\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/AddressBookParser.java\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/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/duplicatePersonAddressBook.json\n#\tsrc/test/data/JsonSerializableAddressBookTest/typicalPersonsAddressBook.json\n#\tsrc/test/java/seedu/address/logic/commands/CommandTestUtil.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/PersonBuilder.java\n#\tsrc/test/java/seedu/address/testutil/TypicalPersons.java\n","fileTypesAndContributionMap":{}},{"hash":"fcf5d14c165f34c80aa0c911abaa705aa91a47a6","isMergeCommit":false,"messageTitle":"Change line separators to \\n","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":162,"deletions":162},"test-code":{"insertions":204,"deletions":204}}},{"hash":"f6b54a861a7f27edf95e5486a471e2291836ad40","isMergeCommit":false,"messageTitle":"Remove trailing whitespace in PolicyCommandTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}},{"hash":"b62ece1a52996c301a1b871be759a5aa4a05fba7","isMergeCommit":false,"messageTitle":"Fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":17},"test-code":{"insertions":12,"deletions":6}}},{"hash":"5da0089e859dfe499c9902ece7ad792b93b737cd","isMergeCommit":false,"messageTitle":"Update policy to only work for clients","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":0}}}]},{"date":"2024-03-18","commitResults":[{"hash":"9f80be0c994e96f42e387b8458956127fb505812","isMergeCommit":false,"messageTitle":"Fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1},"test-code":{"insertions":0,"deletions":1}}},{"hash":"f22e04331b61b4de8c50ebd1c72c3dead4c70c2e","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-Policy","messageBody":"# Conflicts:\n#\tsrc/test/java/seedu/address/logic/parser/FindCommandParserTest.java\n","fileTypesAndContributionMap":{}},{"hash":"aadbbaff60eebb41b1993d83a9dce7dfcff5387d","isMergeCommit":false,"messageTitle":"Fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":26,"deletions":36},"test-code":{"insertions":15,"deletions":21}}}]},{"date":"2024-03-19","commitResults":[{"hash":"b2159f5ff2e334434169527e77de738c24c5c83f","isMergeCommit":false,"messageTitle":"Update UI for policy label","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":11}}},{"hash":"61f975da8eddb1deb1c40410743adfda76b7176a","isMergeCommit":false,"messageTitle":"Update policy UI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":18,"deletions":6}}},{"hash":"4f3f3e2eb8feb4e22fbf5bdb15828e2629744564","isMergeCommit":false,"messageTitle":"Update policy UI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"75d2e08afd2ba0a0a9311ad1eb384241251b8ed2","isMergeCommit":false,"messageTitle":"Update Policy UI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"3afaeb5e62947b7e15d4a91cca4b74b7ce543d67","isMergeCommit":true,"messageTitle":"Merge pull request #35 from justincred/Fixing-Tests-v1.2-Branch","messageBody":"Fix tests error due to not committing after action","fileTypesAndContributionMap":{}},{"hash":"622462b82ccc4c5797ab7ca97003b6b0d9fb2da6","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-Policy","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"befcfb02c1750b61272239c1207d28c212cce1c3","isMergeCommit":false,"messageTitle":"Change test case to copy over policy when editing","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":6}}},{"hash":"7465f5be2338b41a64e2bd762b13d3a6ce1fe5f9","isMergeCommit":false,"messageTitle":"Comment out failing test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":22,"deletions":22}}},{"hash":"4c0690a7aef1d9de7f58c656a582eb6045704e7b","isMergeCommit":false,"messageTitle":"Uncomment failing test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":22,"deletions":22}}},{"hash":"a2539cd6e289ab61e87e7884cbe093823f70d1b3","isMergeCommit":true,"messageTitle":"Merge pull request #34 from ibnu2651/branch-Policy","messageBody":"Update policy UI and fix policy test case","fileTypesAndContributionMap":{}},{"hash":"8a2c00fadb48c6e9de3a530d3fc13366a6043bdb","isMergeCommit":false,"messageTitle":"Enable undo/redo for policy command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0},"test-code":{"insertions":5,"deletions":2}}}]},{"date":"2024-03-20","commitResults":[{"hash":"a7f6ae70fb83f35202a01e94f52d0121078e0dd9","isMergeCommit":false,"messageTitle":"Fix find command test case bug","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":60,"deletions":5},"test-code":{"insertions":39,"deletions":19}}},{"hash":"635fa0c7b3658560273d6d1808385de4c08f46b6","isMergeCommit":false,"messageTitle":"Change line separator format","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":54,"deletions":54}}},{"hash":"d829c4bdeba0ab5cab4b10bc129d94621606e291","isMergeCommit":false,"messageTitle":"Create test cases for combined predicate","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":94,"deletions":0}}},{"hash":"7678a1f9c72564382c5d014ddd4834f841583190","isMergeCommit":true,"messageTitle":"Merge pull request #39 from ibnu2651/branch-BugFixes","messageBody":"Fix find command test case bug","fileTypesAndContributionMap":{}},{"hash":"d584d77b895253a58fab9469fb50b9035f586379","isMergeCommit":false,"messageTitle":"Update Ui image in Readme","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"2a5757acf8b0e0325355ae20c648c8654a0f6a90","isMergeCommit":true,"messageTitle":"Merge pull request #41 from ibnu2651/branch-BugFixes","messageBody":"Update Ui image in Readme","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"c4c1132f137caf044e19f6ff918ce5c7025868f2","isMergeCommit":false,"messageTitle":"Add sequence diagram for policy into developer guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":84,"deletions":1}}},{"hash":"e7d161a3243d5ec8018cb3467acc814ef6631acc","isMergeCommit":false,"messageTitle":"Change file separator format","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":79,"deletions":79}}},{"hash":"f5203b793f2b67723872a7ba90b2a07a0a13afc6","isMergeCommit":false,"messageTitle":"Fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2},"test-code":{"insertions":1,"deletions":0}}},{"hash":"1a6ab620a4e0b67b39ef25b65aa51c76c431b07a","isMergeCommit":true,"messageTitle":"Merge pull request #51 from ibnu2651/branch-UML","messageBody":"Add sequence diagram for policy into developer guide","fileTypesAndContributionMap":{}}]},{"date":"2024-03-23","commitResults":[{"hash":"624e8c7a3663a3e8a49730b248e8c990379d5e5c","isMergeCommit":true,"messageTitle":"Merge pull request #49 from kaiyi27/master","messageBody":"Make relationship immutable","fileTypesAndContributionMap":{}},{"hash":"580ec5715f6804263d6a292dc0280f0f24372398","isMergeCommit":false,"messageTitle":"Fix policy display message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"7344eaca35ba726879d355e6bd3908536bf1b51f","isMergeCommit":false,"messageTitle":"Update policy unit tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":3}}}]},{"date":"2024-03-24","commitResults":[{"hash":"c3e1394b4320b53bdef5b4b3e18a9b9d8a031605","isMergeCommit":false,"messageTitle":"Add policy command to user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":22,"deletions":5}}}]}],"justincred":[{"date":"2024-03-07","commitResults":[{"hash":"f0c9e72d3d52f0b065acd526e00702e446eee855","isMergeCommit":false,"messageTitle":"Add picture and github link","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":0}}},{"hash":"5367c751fda7d9e083fb037f1e971e3ed1dd079a","isMergeCommit":false,"messageTitle":"Add newline after EOF","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"c20b6cdac923275fefae26b0ea868a3d7ca215d6","isMergeCommit":false,"messageTitle":"Rename file name to match github","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"4facad54598f105cf2afe4ddfb39f4d7a826ea07","isMergeCommit":false,"messageTitle":"Add porfolio to Justin","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}},{"hash":"e74455b3403bcf5ddf031984163230090dbc9b3b","isMergeCommit":false,"messageTitle":"Add portfolio to Ibnu","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"b94001b9eb471387f3ed6c0eab27057a54d4733e","isMergeCommit":false,"messageTitle":"Move homepage link to top","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":1}}},{"hash":"75b5140aeee2b5bf68eb7d545b8607cc3e2cb075","isMergeCommit":false,"messageTitle":"Change shauryan github name","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"ed256abf1e26cae51d374cfd0a27998ac5d4e616","isMergeCommit":false,"messageTitle":"Add use case for clear","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":0}}},{"hash":"28c3381442527cf09c4bd17a26fe250104d0582c","isMergeCommit":true,"messageTitle":"Merge pull request #18 from justincred/Use-Cases-Branch","messageBody":"Add use case for clear","fileTypesAndContributionMap":{}}]},{"date":"2024-03-16","commitResults":[{"hash":"cef98676f250ae3d36e2e104d06d6cdb06105d2b","isMergeCommit":false,"messageTitle":"Add undo and redo features","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":256,"deletions":20}}},{"hash":"7f8c364b0c97a9a2ff917658f4c7906db0465eaf","isMergeCommit":false,"messageTitle":"Add explicit import statements","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":1}}},{"hash":"7ff2021c2d1ecab1fe302e408481d07da40471e9","isMergeCommit":false,"messageTitle":"Add end of file whitespace","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"d81d2a8deded8c5fbd6efaf2845061930758f09e","isMergeCommit":false,"messageTitle":"Fix code checks","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":3}}},{"hash":"9d5238d7206fa89fd8b9c2b78775ad2ad1889ab4","isMergeCommit":false,"messageTitle":"Add functions to model stub","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":24,"deletions":0}}}]},{"date":"2024-03-17","commitResults":[{"hash":"b5121c94158c94d349b78a174863b2cae2dc4dcb","isMergeCommit":true,"messageTitle":"Merge pull request #31 from Shauryan123/branch-v1.1Add_Find_Feature_Based_On_Relationship_And_Tag","messageBody":"Branch add find feature based on relationship and tag","fileTypesAndContributionMap":{}}]},{"date":"2024-03-19","commitResults":[{"hash":"c83f03cc5455a05399e6c60d2dbc74591ca07669","isMergeCommit":false,"messageTitle":"Fix tests error due to not commiting after action","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":20,"deletions":2}}}]},{"date":"2024-03-21","commitResults":[{"hash":"ef300d0cd4fc86b9704c94140ee7e0f09300b5e6","isMergeCommit":false,"messageTitle":"Modify undo and redo for more abstraction","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":11},"test-code":{"insertions":6,"deletions":0}}},{"hash":"9d4e24aae954e421f4a2fd139c58dcffcf4ca754","isMergeCommit":false,"messageTitle":"Add tests for redo and undo command","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":84,"deletions":4}}},{"hash":"d1d489be0f024d4819b00103b6f971c53cdff211","isMergeCommit":false,"messageTitle":"Remove commented code for redo and undo command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":10}}},{"hash":"5eb335cc3846d630ec55244875eb4bca589c4c3d","isMergeCommit":false,"messageTitle":"Fix Checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":17,"deletions":18}}},{"hash":"7497908dff25f52712c51df76d0b8af809ec5178","isMergeCommit":false,"messageTitle":"Remove unused import","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}},{"hash":"d713bc63639a095c6656f4b1f6d16c9232b6a2c1","isMergeCommit":true,"messageTitle":"Merge pull request #44 from justincred/Add-Tests-Undo-Redo-Branch","messageBody":"Add tests for undo and redo features","fileTypesAndContributionMap":{}},{"hash":"a4de56d9f46983548e5edff8b8a0748b9cfbc36a","isMergeCommit":false,"messageTitle":"Add redo sequence diagram","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":58,"deletions":0}}},{"hash":"5207e341770dac33f242ffb6667184494b7aa2f6","isMergeCommit":false,"messageTitle":"Add redo sequence diagram to DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":3}}},{"hash":"d70a02b811793e7391a5401a3a9cd12ccd483204","isMergeCommit":true,"messageTitle":"Merge pull request #52 from justincred/UML-Redo-Branch","messageBody":"Add redo sequence diagram","tags":["v1.2"],"fileTypesAndContributionMap":{}}]},{"date":"2024-03-23","commitResults":[{"hash":"3169043f090b98a8af8f8997eb28077187f67b2f","isMergeCommit":true,"messageTitle":"Merge pull request #63 from ibnu2651/branch-Policy","messageBody":"Fix policy display message","fileTypesAndContributionMap":{}}]},{"date":"2024-03-24","commitResults":[{"hash":"8d0ac3f10cf7a77cea723019600ccd03a3361090","isMergeCommit":true,"messageTitle":"Merge pull request #64 from ibnu2651/branch-UG","messageBody":"Add policy command to user guide","fileTypesAndContributionMap":{}},{"hash":"4a8826be886ef65455ef3de3df8af496027dde7a","isMergeCommit":true,"messageTitle":"Merge pull request #62 from Shauryan123/branch-Meeting","messageBody":"Add new feature - scheduling meeting","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Shauryan123":{"docs":131,"functional-code":1314,"test-code":402},"kaiyi27":{"docs":141,"functional-code":108,"test-code":181},"ibnu2651":{"docs":139,"functional-code":313,"test-code":376},"justincred":{"docs":81,"functional-code":224,"test-code":123}},"authorContributionVariance":{"Shauryan123":75983.586,"kaiyi27":8637.683,"ibnu2651":36069.668,"justincred":4858.479},"authorDisplayNameMap":{"Shauryan123":"CS2103T-T13-3 AGRA..RYAN","kaiyi27":"CS2103T-T13-3 TEOH..I YI","ibnu2651":"CS2103T-T13-3 IBNU..ADAM","justincred":"CS2103T-T13-3 JUST..HWEI"}} +{"authorDailyContributionsMap":{"Shauryan123":[{"date":"2024-03-05","commitResults":[{"hash":"e1a2a39cacb0e720e3ad334bbe26deeadb1a70f0","isMergeCommit":false,"messageTitle":"Update Shauryan\u0027s Details in AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"1d05c2fda6e1f6be4af0cc0a8f4952f56d6a778b","isMergeCommit":false,"messageTitle":"Update NFRs for DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":0}}},{"hash":"ccaff0de905fee27e17894e4f65c41522ab4dbcc","isMergeCommit":false,"messageTitle":"Add use cases for DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":56,"deletions":0}}}]},{"date":"2024-03-07","commitResults":[{"hash":"b2f430995a59cfc2b9834122a2ad365371d77e1d","isMergeCommit":true,"messageTitle":"Merge pull request #17 from Shauryan123/branch-v1.1","messageBody":"Change name to shauryan.png","fileTypesAndContributionMap":{}},{"hash":"605e0cf8c55ab414f82c15b3eb337ea38c36e4f9","isMergeCommit":false,"messageTitle":"Update image file name for Shauryan","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-16","commitResults":[{"hash":"fadaeeaed2cd75aaf41ec03035e667d2b38c72a2","isMergeCommit":false,"messageTitle":"Create Relationship class and relationship keyword class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":98,"deletions":0},"other":{"insertions":8,"deletions":7}}},{"hash":"23bc46508e59f9596de2a546202293af50d47b9f","isMergeCommit":false,"messageTitle":"Rename variables as per our InsuraConnect app","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":14,"deletions":14}}},{"hash":"0a89c5ce788b4126ba9bde9242afd271c034b88c","isMergeCommit":false,"messageTitle":"Rename variables as per our app","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":13}}},{"hash":"67adebf58a848712cc6a3d9b4761bab8c6bf4a89","isMergeCommit":false,"messageTitle":"Integrate relationship class into ArgumentTokeniser, CliSyntax etc","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":61,"deletions":17}}},{"hash":"3a89e95848677c4be4a280d63973b59fa876a119","isMergeCommit":false,"messageTitle":"Add relationship into person, person card, JsonAdaptedPerson","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":87,"deletions":24}}},{"hash":"1bd2f3b4c2181126c91084681f77404752b0b6d8","isMergeCommit":false,"messageTitle":"Update test files PersonBuilder and PersonUitl by adding default relationship","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":25,"deletions":7}}},{"hash":"0961f0bc7b806efb9f654b739faa39aa7a1ad5fd","isMergeCommit":true,"messageTitle":"Merge pull request #27 from kaiyi27/branch-AddRelationship","messageBody":"Branch add relationship into contact information","fileTypesAndContributionMap":{}}]},{"date":"2024-03-17","commitResults":[{"hash":"5372980dce5d58f94d6e64d38750da9d16c20aae","isMergeCommit":false,"messageTitle":"Refactor relationship class in person package","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":169,"deletions":79},"other":{"insertions":1,"deletions":1},"test-code":{"insertions":166,"deletions":72}}},{"hash":"52bdf1b404e43941a91ea405fc686ee27bea2022","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of github.com:Shauryan123/tp into branch-v1.1Add_Find_Feature_Based_On_Relationship_And_Tag","messageBody":"# Conflicts:\n#\tsrc/main/java/seedu/address/logic/Messages.java\n#\tsrc/main/java/seedu/address/logic/commands/ClearCommand.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/ModelManager.java\n#\tsrc/main/java/seedu/address/model/person/Person.java\n#\tsrc/main/java/seedu/address/model/person/Relationship.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/duplicatePersonAddressBook.json\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/EditCommandParserTest.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/PersonBuilder.java\n#\tsrc/test/java/seedu/address/testutil/PersonUtil.java\n#\tsrc/test/java/seedu/address/testutil/TypicalPersons.java\n","fileTypesAndContributionMap":{}},{"hash":"eb9dcc4ba8c3b06afdcb5f95e09cd5ca01551a1d","isMergeCommit":false,"messageTitle":"Resolve merge conflicts with master branch from team repo","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":50,"deletions":51},"test-code":{"insertions":50,"deletions":50}}},{"hash":"f5825c0ff19453b3ef9bdc716697c860f459d3cc","isMergeCommit":false,"messageTitle":"Add commitAddressBook function call in execute method of Clear Command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0}}}]},{"date":"2024-03-20","commitResults":[{"hash":"2cd0047e43eba16bd0624d0e1ada27fded94988d","isMergeCommit":false,"messageTitle":"Add RelationshipContainsKeywordsPredicateTest and TagContainsKeywordsPredicateTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":0}}},{"hash":"df9d82ddb802ebafef5f93e239b7a8db4bc08d89","isMergeCommit":false,"messageTitle":"Add toString Method in RelationshipContainsKeywrodsPredicate and TagContainsKeywordsPredicate Class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":0}}},{"hash":"f1ece53b372007a23bb01c34554572bf1ac71174","isMergeCommit":false,"messageTitle":"Update tests for FindCommand to include find based on relationship and tag","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":37,"deletions":22}}},{"hash":"e7c03e4ed98ec669b17ec8b9438e419a72d10773","isMergeCommit":false,"messageTitle":"Update FindCommanParserTest to update tests for relationship, tag and combined predicates","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"fc8af566b12128c1be43c2bc80dc85afaa325ba4","isMergeCommit":false,"messageTitle":"Change UI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":38,"deletions":27}}},{"hash":"425a140cc41c8b91541772865d37c8280e3c4253","isMergeCommit":false,"messageTitle":"Fix tests for RelationshipContainsKeywordsPredicateTest, TagContainsKeywordsPredicateTest, FindCommandParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":256,"deletions":12}}},{"hash":"65bead4de25190ada28aa403dbcd049553dfac30","isMergeCommit":true,"messageTitle":"Merge pull request #38 from Shauryan123/Fixing-Tests_Change-UI-v1.2-Branch","messageBody":"Fixing tests change UI v1.2 branch","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"169df88f8241fdcca8b4cc1178103d37f4203f5d","isMergeCommit":false,"messageTitle":"Add Hover Effect for PersonCard","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":30,"deletions":0}}},{"hash":"b9e8d507c102b702210751fbcd022cf845fadac8","isMergeCommit":false,"messageTitle":"Add sequence diagram for enhanced find feature","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":70,"deletions":0}}},{"hash":"0f7d0774a10a7993307ae483aa10fce6d988b9f9","isMergeCommit":false,"messageTitle":"Add TagTest class","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":61,"deletions":0}}},{"hash":"3612ea5b89ba8750bf4a2f89dfbf2c3c04fcacf6","isMergeCommit":true,"messageTitle":"Merge pull request #50 from Shauryan123/master","messageBody":"Add UML sequence diagram for enhanced find feature, add hover effect for PersonCard, add TagTest Class","fileTypesAndContributionMap":{}}]},{"date":"2024-03-23","commitResults":[{"hash":"ff79ce42f4630956ee900ac6644dd2fc78c727e9","isMergeCommit":false,"messageTitle":"Add the meeting class to keep track of meetings","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":468,"deletions":22}}},{"hash":"cb08efa4d167946c8695484e275f636c64eb06ad","isMergeCommit":false,"messageTitle":"Add ScheduleMeetingCommand , ScheduleMeetingCommandParser class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":0}}},{"hash":"bbcb13dde46affb694ba4b32b1d6138bfa60cb29","isMergeCommit":false,"messageTitle":"Add hasOverlapMeeting method to check for meetings overlap with clients and partners","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":18,"deletions":0}}},{"hash":"8964b918327d2f8c9bd2ab77c964eebd16f593db","isMergeCommit":false,"messageTitle":"Add addMeetings function to Person class to create a list of meetings for clients and partners","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":3}}},{"hash":"faaf7e8cb63b19cc31d79ef5b9f508df4cd1f7db","isMergeCommit":false,"messageTitle":"Add meetings attribute for Person","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":24,"deletions":8}}},{"hash":"85a2b8b7cd32270b687cb6a105be54d1af5d9c4b","isMergeCommit":false,"messageTitle":"Add JsonAdaptedMeeting Class for storing in addressbook","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":81,"deletions":1}}},{"hash":"e8af5ec0085a037f2d6872781c5cd691106a73b9","isMergeCommit":false,"messageTitle":"Add meetings property to person in addressbook","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":160,"deletions":19}}},{"hash":"4c0728934bd85094d73f8289660da1731af62db1","isMergeCommit":false,"messageTitle":"Change UI to incorporate list of meetings in person card","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":271,"deletions":62}}},{"hash":"56c504876e920503120e24de9bc53ad550c12042","isMergeCommit":false,"messageTitle":"Change TypicalPersons to incorporate meetings parameter for Person","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":10,"deletions":2}}},{"hash":"6c98a8cfad5438a008b0a99c2f1af2495d0ced72","isMergeCommit":false,"messageTitle":"Add meetings for person in PersonCard UI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":91,"deletions":62}}},{"hash":"d293e2c8a37a6d9dfe39770cda0fb1352f60f6ed","isMergeCommit":false,"messageTitle":"Change JsonAdaptedPersonTest for including valid meetings for person","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":19,"deletions":11}}}]},{"date":"2024-03-24","commitResults":[{"hash":"b992502b02b359f2678751e232a1ad8ba85c7455","isMergeCommit":false,"messageTitle":"Delete src/main/java/seedu/address/logic/commands/UndoCommand.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":37}}},{"hash":"0138bd64cba8c154fb851ab2c9ca747001f78a4b","isMergeCommit":false,"messageTitle":"Move meeting related messages from Messages to ScheduleMeetingCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":4}}},{"hash":"c7e52a6803d0d7764b29fcdddba0930ce3dd37d0","isMergeCommit":false,"messageTitle":"Add arePrefixesPresent method in ArgumentMultimap","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":0}}},{"hash":"3d7d34cbb14b92c0532bba9baf599e5a91e8ceff","isMergeCommit":false,"messageTitle":"Fix undo bug for scheduling meetings","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":7}}},{"hash":"0a1c72d85c54c195a9b4bb4e1b94821c19bd8240","isMergeCommit":false,"messageTitle":"Make notes as optional parameter for meeting and other parameters as compulsory","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":2}}},{"hash":"d20f16adffbbe7a3f76b64ec0666ee61d001b108","isMergeCommit":false,"messageTitle":"Add startDateTime in Meeting class to combine meetingDate and meetingTime fields","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":1}}},{"hash":"6f7c7c4ec618d67edd7e3dd12ebb911e6b190c7d","isMergeCommit":false,"messageTitle":"Add getCopy method in Person Class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":26,"deletions":2}}},{"hash":"2c1df0ab3282ea5dc87449e9c114cbcf1eb5d50d","isMergeCommit":false,"messageTitle":"Add startDateTime field in JsonAdaptedMeeting class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":0}}},{"hash":"98700bed861c5d76201ee0ad7d4d3446a214cfaa","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Meeting\u0027 of https://github.com/Shauryan123/tp into branch-Meeting","messageBody":"","fileTypesAndContributionMap":{}}]}],"kaiyi27":[{"date":"2024-03-02","commitResults":[{"hash":"2b709c27cdc0e467935fab1c304ae051db9460b4","isMergeCommit":false,"messageTitle":"Update the information in AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"684854fd649bd41c769dac772c157a435c64aa3c","isMergeCommit":false,"messageTitle":"Update the role in AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":1}}},{"hash":"33ba8c517ca9bf95e514edd7bff76ee59ec3fdea","isMergeCommit":false,"messageTitle":"Update User Stories in DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":36,"deletions":9}}}]},{"date":"2024-03-03","commitResults":[{"hash":"ba193c6471d9428566087a7aa3533551937a708c","isMergeCommit":false,"messageTitle":"Add list use case into DeveloperGuide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":14,"deletions":1}}},{"hash":"b04a341e576cd86c11fb4433f4d1be8a301f8eee","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-v1.1\u0027 into master","messageBody":"* branch-v1.1:\n Add list use case into DeveloperGuide\n Update User Stories in DeveloperGuide.md\n Update the role in AboutUs\n Update the information in AboutUs.md\n Add profile photo into docs folder\n","fileTypesAndContributionMap":{}},{"hash":"8cab7ca2a32c8f2a049f6d0546caf879c318fb4d","isMergeCommit":true,"messageTitle":"Merge pull request #11 from ibnu2651/branch-v1.1","messageBody":"Branch v1.1","fileTypesAndContributionMap":{}},{"hash":"4fb134a687cccbe0a286065d04fa9fa5f5220476","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-T13-3/tp","messageBody":"* \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-T13-3/tp:\n Add use case for DG\n Update NFR for DG\n Update site-wide settings\n Update README\n Add Ibnu\u0027s details to AboutUs.md\n","fileTypesAndContributionMap":{}}]},{"date":"2024-03-06","commitResults":[{"hash":"d23177206affb4837bc6ea4486b0ce55655bc301","isMergeCommit":true,"messageTitle":"Merge pull request #14 from ibnu2651/branch-v1.1","messageBody":"Branch v1.1","fileTypesAndContributionMap":{}},{"hash":"f1047f9235623e1cae8f89a98cadcac35aa3927c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-T13-3/tp","messageBody":"* \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-T13-3/tp:\n Update README contents\n Replace Ui image\n Add use cases for DG\n Update NFRs for DG\n Add Shauryan\u0027s Details in AboutUs.md\n Update Shauryan\u0027s Details in AboutUs.md\n","fileTypesAndContributionMap":{}},{"hash":"ad6071ea69e3052d69a0afdd1ccbbf29fbd2f429","isMergeCommit":true,"messageTitle":"Merge pull request #15 from ibnu2651/branch-v1.1","messageBody":"Update product scope in DG","fileTypesAndContributionMap":{}}]},{"date":"2024-03-07","commitResults":[{"hash":"111a592b6919248df1e4803be165f269bed8a24c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-T13-3/tp","messageBody":"* \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-T13-3/tp:\n Update product scope in DG\n","fileTypesAndContributionMap":{}},{"hash":"e2af7557350d42bb360ed1f6e1a856c7dda465dc","isMergeCommit":true,"messageTitle":"Merge pull request #16 from justincred/Add-About-Us-Branch","messageBody":"Add picture and github link","fileTypesAndContributionMap":{}}]},{"date":"2024-03-09","commitResults":[{"hash":"62c9da9c2ef71265d2ec8d9200dbf7bc83ab5d88","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-T13-3/tp","messageBody":"* \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-T13-3/tp:\n Delete docs/images/shauryan.png\n Add use case for clear\n Change name to shauryan.png\n Change shauryan github name\n Change shauryan image file name\n Move homepage link to top\n Add portfolio to Ibnu\n Add porfolio to Justin\n Rename file name to match github\n Add newline after EOF\n Add picture and github link\n","fileTypesAndContributionMap":{}}]},{"date":"2024-03-10","commitResults":[{"hash":"00d868a40497689e7ffc0e1f27a27c6c08bab4f8","isMergeCommit":false,"messageTitle":"Create Relationship class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":55,"deletions":0}}},{"hash":"cf38e0c469ba0b0330818133cef9cfb1af16c3d5","isMergeCommit":false,"messageTitle":"Add relationship prefix and relationtest class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":2},"test-code":{"insertions":58,"deletions":0}}},{"hash":"26036f130b4d84ffec2474a95045a2775b506d65","isMergeCommit":false,"messageTitle":"Modify edit command and Person class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":33,"deletions":3}}},{"hash":"234452b25199dff80a5a722d8186179170bc5881","isMergeCommit":false,"messageTitle":"Modify EditCommandParser according to EditCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":24,"deletions":2}}},{"hash":"c2e0ab065707df118dbab0673a726d774fc6124a","isMergeCommit":false,"messageTitle":"Add relationship function into AddCommand and AddCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":5}}},{"hash":"cc52d18141396c9ab96231bd8cd97c102a1b3965","isMergeCommit":false,"messageTitle":"Improve the javacodestyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":6}}},{"hash":"c046cc96bbf906f47fa0567d26f296730c70962c","isMergeCommit":false,"messageTitle":"Add relationship to the sample data and PersonBuilder","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":8},"test-code":{"insertions":13,"deletions":1}}},{"hash":"2ae6d7ebe4f511b9da43e48ae527cac52e58534d","isMergeCommit":false,"messageTitle":"Add relationship into data and storage","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":54,"deletions":21}}},{"hash":"898bace7149d246dedd7bf85ca392574fdea98b0","isMergeCommit":false,"messageTitle":"Modify minor issue in editcommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"133887f2fb063722307f4233d41f001f98860ea4","isMergeCommit":false,"messageTitle":"Add relationship into personcard","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0}}},{"hash":"5e8a0b043bda1b162ecab55b09c0b69c96ff8d90","isMergeCommit":false,"messageTitle":"Add relationship into all test class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":0},"test-code":{"insertions":90,"deletions":34}}},{"hash":"16753c5f09aa7993fe60eec66ce2d9c9b6845bff","isMergeCommit":false,"messageTitle":"Add relationship feature into CommandParserTest class","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":33,"deletions":16}}},{"hash":"b5c00699915a7faf722fc0fa0cf97637ea486a5c","isMergeCommit":false,"messageTitle":"Modify minor bug in Person class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-16","commitResults":[{"hash":"651ed6b6d9902ca99fef8ccda4a1cd3ec4c2997f","isMergeCommit":true,"messageTitle":"Merge pull request #28 from justincred/Undo-Branch","messageBody":"Undo branch","fileTypesAndContributionMap":{}}]},{"date":"2024-03-17","commitResults":[{"hash":"8700969469afe835b2dc29c71f2ca02a5f789776","isMergeCommit":true,"messageTitle":"Merge pull request #32 from ibnu2651/branch-Policy","messageBody":"Branch policy","fileTypesAndContributionMap":{}},{"hash":"aa56862a2c5e435ddf73488f36cc3214cf630a52","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-AddRelationship\u0027","messageBody":"* branch-AddRelationship:\n Modify minor bug in Person class\n Add relationship feature into CommandParserTest class\n Add relationship into all test class\n Add relationship into personcard\n Modify minor issue in editcommand\n Add relationship into data and storage\n Add relationship to the sample data and PersonBuilder\n Improve the javacodestyle\n Add relationship function into AddCommand and AddCommandParser\n Modify EditCommandParser according to EditCommand\n Modify edit command and Person class\n Add relationship prefix and relationtest class\n Create Relationship class\n","fileTypesAndContributionMap":{}},{"hash":"90c8b0fbdc59a1a45522d2a443694ecc7fac7c58","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-T13-3/tp","messageBody":"* \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-T13-3/tp: (28 commits)\n Add commitAddressBook function call in execute method of Clear Command\n Resolve merge conflicts with master branch from team repo\n Refactor relationship class in person package\n Fix checkstyle errors\n Remove trailing whitespace in PolicyCommandTest\n Change line separators to \\n\n Add functions to model stub\n Fix code checks\n Add end of file whitespace\n Update test files PersonBuilder and PersonUitl by adding default relationship\n Add relationship into person, person card, JsonAdaptedPerson\n Integrate relationship class into ArgumentTokeniser, CliSyntax etc\n Rename variables as per our app\n Rename variables as per our InsuraConnect app\n Create Relationship class and relationship keyword class\n Add explicit import statements\n Add undo and redo features\n Update person card with policy\n Update storage\n Modify person to support policy\n ...\n","fileTypesAndContributionMap":{}}]},{"date":"2024-03-18","commitResults":[{"hash":"45c6c6812b0529e8b9a7ba7ad0db4a5299c744aa","isMergeCommit":false,"messageTitle":"Fix the issue in test class","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":5}}}]},{"date":"2024-03-19","commitResults":[{"hash":"3f9a3b690496f9912406b3008684d8c9850c9e7a","isMergeCommit":true,"messageTitle":"Merge pull request #33 from ibnu2651/branch-Policy","messageBody":"Update policy to only work for clients","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"279fbb5ad513d6da9ee154dbaadc5cb30d4edc91","isMergeCommit":true,"messageTitle":"Merge pull request #37 from ibnu2651/branch-Policy","messageBody":"Enable undo/redo for policy command","fileTypesAndContributionMap":{}},{"hash":"84ab4924c3da7f6e286480410e8e8025a29c62af","isMergeCommit":false,"messageTitle":"Update the UML diagram","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":0}}},{"hash":"7e06eb92ffa84b6d722bd2da95f4d218af634fe9","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-T13-3/tp","messageBody":"* \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-T13-3/tp: (22 commits)\n Update Ui image in Readme\n Create test cases for combined predicate\n Change line separator format\n Fix find command test case bug\n Fix tests for RelationshipContainsKeywordsPredicateTest, TagContainsKeywordsPredicateTest, FindCommandParserTest\n Change UI\n Update FindCommanParserTest to update tests for relationship, tag and combined predicates\n Update tests for FindCommand to include find based on relationship and tag\n Add toString Method in RelationshipContainsKeywrodsPredicate and TagContainsKeywordsPredicate Class\n Add RelationshipContainsKeywordsPredicateTest and TagContainsKeywordsPredicateTest\n Enable undo/redo for policy command\n Uncomment failing test cases\n Comment out failing test cases\n Change test case to copy over policy when editing\n Fix tests error due to not commiting after action\n Update Policy UI\n Update policy UI\n Update policy UI\n Update UI for policy label\n Fix checkstyle errors\n ...\n\n# Conflicts:\n#\tsrc/test/java/seedu/address/testutil/EditPersonDescriptorBuilder.java\n","fileTypesAndContributionMap":{}},{"hash":"1e57188996ae9d7847b50142aac339a2390584ac","isMergeCommit":true,"messageTitle":"Merge pull request #43 from kaiyi27/master","messageBody":"Update the UML diagram in puml files","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"c12bf45aa5b2cfd6b27b02b3c8d7217d185c5cd5","isMergeCommit":false,"messageTitle":"Add edit uml sequence diagram","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":80,"deletions":0}}},{"hash":"3574aec43ad22588c9c41892d8269facd6d7be0f","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-T13-3/tp","messageBody":"* \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-T13-3/tp:\n Remove unused import\n Fix Checkstyle\n Remove commented code for redo and undo command\n Add tests for redo and undo command\n Modify undo and redo for more abstraction\n","fileTypesAndContributionMap":{}},{"hash":"d668b3e8cb624bb16f624a74273524dddf8f6e6a","isMergeCommit":true,"messageTitle":"Merge pull request #48 from kaiyi27/master","messageBody":"Add uml sequence diagram for edit","fileTypesAndContributionMap":{}},{"hash":"f0d3ff05aaf55ba34a758bb6b44d08329b69f223","isMergeCommit":false,"messageTitle":"Modify the relationship to make it immutable","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":17},"test-code":{"insertions":4,"deletions":28}}},{"hash":"5fda85259547862fdd340d5bcfe1936b3e735bce","isMergeCommit":false,"messageTitle":"Remove unused import statement","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":3}}},{"hash":"9ab22cbcd4edccce660ed5cb3d99c2de0330bd76","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-T13-3/tp","messageBody":"* \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-T13-3/tp:\n","fileTypesAndContributionMap":{}},{"hash":"a43d0a3313fbf473f6f38da4a8e7068ac5c988fb","isMergeCommit":false,"messageTitle":"Add empty line at the end of the file","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"92a07383b7cdfb59e55552237dc67b5e757b1134","isMergeCommit":false,"messageTitle":"Add test case for edit Relationship situation","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1},"test-code":{"insertions":3,"deletions":0}}}]},{"date":"2024-03-24","commitResults":[{"hash":"6abf3a0445205ab1240f081cf9eb506de9eb3d22","isMergeCommit":false,"messageTitle":"Update the UserGuide to fit v1.2","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":5}}},{"hash":"c5eb311f5e50756dd6dd63135dbdc7b57fa962f7","isMergeCommit":false,"messageTitle":"Add a line at the end of file","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"59eeb4ba4b2b69e9f6ff0f06f070bc1ef982d429","isMergeCommit":false,"messageTitle":"Add policy into FindCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":51,"deletions":2}}},{"hash":"5293a54eeb37d610e6b0ae758d0941a45e551273","isMergeCommit":false,"messageTitle":"Update policy to FindCommand and other class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"855a50f1e6a818c1a69a1540da615bc4bbe93421","isMergeCommit":false,"messageTitle":"Create test cases for updated find command with policy","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":132,"deletions":10}}},{"hash":"8494779152e2cfdaf9be5c631b7cfe8fa6ab0419","isMergeCommit":false,"messageTitle":"Add back the undo command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":31,"deletions":0}}},{"hash":"1b32f4a64b9958c60a63f838042b604526eac543","isMergeCommit":false,"messageTitle":"Fix the issues inside AddCommandTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":0}}},{"hash":"f74f540b332db3f91d5ce06507d5d3b70ae172b6","isMergeCommit":false,"messageTitle":"Fix policy test case for find command","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":38,"deletions":34}}},{"hash":"109464207a7fb7750270032e9d1ef070ea710acc","isMergeCommit":false,"messageTitle":"Fix the java code style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":24,"deletions":5}}},{"hash":"e00fbae6718049961138aba457bbf7c4bf920876","isMergeCommit":false,"messageTitle":"Modify the test cases for FindCommandParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":15,"deletions":15}}},{"hash":"ac0e2303a450c9a08a4ec86532f5301e3b2e1fb0","isMergeCommit":true,"messageTitle":"Merge pull request #69 from kaiyi27/branch-UserGuide","messageBody":"Update the UserGuide to fit v1.2","fileTypesAndContributionMap":{}},{"hash":"95ffc269a256e1eada4cad8cc534be70624bca79","isMergeCommit":false,"messageTitle":"Fix java code style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":107,"deletions":50},"test-code":{"insertions":43,"deletions":32}}}]}],"ibnu2651":[{"date":"2024-03-03","commitResults":[{"hash":"332f64d287ee64b1cebb86e021ce954e3020482d","isMergeCommit":true,"messageTitle":"Merge pull request #8 from kaiyi27/branch-v1.1","messageBody":"Merge Branch v1.1","fileTypesAndContributionMap":{}},{"hash":"c084f1ee4ed2c7f1ceba0373852f3e3de87e8b1c","isMergeCommit":false,"messageTitle":"Add Ibnu\u0027s details to AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":26}}},{"hash":"a7908bdb075a4686c142535b04ea8ae0121044f3","isMergeCommit":false,"messageTitle":"Update README","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":1}}},{"hash":"66a785617d6e30c9c5ca2be74f9f242324f5ba89","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-README\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"5d069e37e88e4930db97f644654f6157ee0b6884","isMergeCommit":false,"messageTitle":"Update site-wide settings","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"47a6255e56b86124d2b3ebd9d38b904fb6478ed9","isMergeCommit":false,"messageTitle":"Update NFR for DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":1}}},{"hash":"743be88c300f7b9de1589b26cc814d63d42ae318","isMergeCommit":false,"messageTitle":"Add use case for DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":16,"deletions":1}}}]},{"date":"2024-03-05","commitResults":[{"hash":"02649cf841f03825e98dd4a6a87a0d38f74c9881","isMergeCommit":true,"messageTitle":"Merge pull request #13 from Shauryan123/branch-v1.1","messageBody":"Merge Branch v1.1","fileTypesAndContributionMap":{}}]},{"date":"2024-03-06","commitResults":[{"hash":"2c69811450922ebed9c6bee757926198580729f6","isMergeCommit":false,"messageTitle":"Update README contents","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":10}}},{"hash":"cd51f599422e90badc604585cfe433ed5341a7f4","isMergeCommit":false,"messageTitle":"Update product scope in DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":1}}}]},{"date":"2024-03-12","commitResults":[{"hash":"9cf66ecadd048b35b64ba8d6bb7b621be5a9f8a4","isMergeCommit":false,"messageTitle":"Add Policy and ClientStatus classes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":106,"deletions":0}}}]},{"date":"2024-03-16","commitResults":[{"hash":"226e655a119e51b628e87069ed0269b712f28c33","isMergeCommit":false,"messageTitle":"Delete ClientStatus class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":57}}},{"hash":"23142487eb5096c25ad5c820434672712a3c2751","isMergeCommit":false,"messageTitle":"Add policy command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":34,"deletions":9},"test-code":{"insertions":30,"deletions":8}}},{"hash":"5a49bb7d5e3ff33711d84dd70c26b00c856d26e0","isMergeCommit":false,"messageTitle":"Add policy command parser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":0},"test-code":{"insertions":4,"deletions":0}}},{"hash":"a76ed1da1b14409ce505275369123eda94ddbc3a","isMergeCommit":false,"messageTitle":"Add policy command parser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":73,"deletions":4},"test-code":{"insertions":83,"deletions":5}}},{"hash":"3ae032bf3c537adb707f30a7ee566c2c0b4fadf2","isMergeCommit":false,"messageTitle":"Add policy class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":41,"deletions":53},"test-code":{"insertions":43,"deletions":9}}},{"hash":"161e4421fb5485721383f6295c47bcfb21ca42ab","isMergeCommit":false,"messageTitle":"Modify person to support policy","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":26,"deletions":30},"test-code":{"insertions":14,"deletions":6}}},{"hash":"db5a9d2c4f3b04759be74f846bc6c5849e95b363","isMergeCommit":false,"messageTitle":"Update storage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":2},"test-code":{"insertions":16,"deletions":13}}},{"hash":"6075839d4d39d4cf340a532e928a215df0ea7a97","isMergeCommit":false,"messageTitle":"Update person card with policy","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":32,"deletions":3},"test-code":{"insertions":79,"deletions":6}}}]},{"date":"2024-03-17","commitResults":[{"hash":"9786790084c8cf1647c2d173718a4ed38564bf2a","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-Policy","messageBody":"# Conflicts:\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/AddressBookParser.java\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/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/duplicatePersonAddressBook.json\n#\tsrc/test/data/JsonSerializableAddressBookTest/typicalPersonsAddressBook.json\n#\tsrc/test/java/seedu/address/logic/commands/CommandTestUtil.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/PersonBuilder.java\n#\tsrc/test/java/seedu/address/testutil/TypicalPersons.java\n","fileTypesAndContributionMap":{}},{"hash":"fcf5d14c165f34c80aa0c911abaa705aa91a47a6","isMergeCommit":false,"messageTitle":"Change line separators to \\n","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":162,"deletions":162},"test-code":{"insertions":204,"deletions":204}}},{"hash":"f6b54a861a7f27edf95e5486a471e2291836ad40","isMergeCommit":false,"messageTitle":"Remove trailing whitespace in PolicyCommandTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}},{"hash":"b62ece1a52996c301a1b871be759a5aa4a05fba7","isMergeCommit":false,"messageTitle":"Fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":17},"test-code":{"insertions":12,"deletions":6}}},{"hash":"5da0089e859dfe499c9902ece7ad792b93b737cd","isMergeCommit":false,"messageTitle":"Update policy to only work for clients","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":0}}}]},{"date":"2024-03-18","commitResults":[{"hash":"9f80be0c994e96f42e387b8458956127fb505812","isMergeCommit":false,"messageTitle":"Fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1},"test-code":{"insertions":0,"deletions":1}}},{"hash":"f22e04331b61b4de8c50ebd1c72c3dead4c70c2e","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-Policy","messageBody":"# Conflicts:\n#\tsrc/test/java/seedu/address/logic/parser/FindCommandParserTest.java\n","fileTypesAndContributionMap":{}},{"hash":"aadbbaff60eebb41b1993d83a9dce7dfcff5387d","isMergeCommit":false,"messageTitle":"Fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":26,"deletions":36},"test-code":{"insertions":15,"deletions":21}}}]},{"date":"2024-03-19","commitResults":[{"hash":"b2159f5ff2e334434169527e77de738c24c5c83f","isMergeCommit":false,"messageTitle":"Update UI for policy label","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":11}}},{"hash":"61f975da8eddb1deb1c40410743adfda76b7176a","isMergeCommit":false,"messageTitle":"Update policy UI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":18,"deletions":6}}},{"hash":"4f3f3e2eb8feb4e22fbf5bdb15828e2629744564","isMergeCommit":false,"messageTitle":"Update policy UI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"75d2e08afd2ba0a0a9311ad1eb384241251b8ed2","isMergeCommit":false,"messageTitle":"Update Policy UI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"3afaeb5e62947b7e15d4a91cca4b74b7ce543d67","isMergeCommit":true,"messageTitle":"Merge pull request #35 from justincred/Fixing-Tests-v1.2-Branch","messageBody":"Fix tests error due to not committing after action","fileTypesAndContributionMap":{}},{"hash":"622462b82ccc4c5797ab7ca97003b6b0d9fb2da6","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-Policy","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"befcfb02c1750b61272239c1207d28c212cce1c3","isMergeCommit":false,"messageTitle":"Change test case to copy over policy when editing","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":6}}},{"hash":"7465f5be2338b41a64e2bd762b13d3a6ce1fe5f9","isMergeCommit":false,"messageTitle":"Comment out failing test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":22,"deletions":22}}},{"hash":"4c0690a7aef1d9de7f58c656a582eb6045704e7b","isMergeCommit":false,"messageTitle":"Uncomment failing test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":22,"deletions":22}}},{"hash":"a2539cd6e289ab61e87e7884cbe093823f70d1b3","isMergeCommit":true,"messageTitle":"Merge pull request #34 from ibnu2651/branch-Policy","messageBody":"Update policy UI and fix policy test case","fileTypesAndContributionMap":{}},{"hash":"8a2c00fadb48c6e9de3a530d3fc13366a6043bdb","isMergeCommit":false,"messageTitle":"Enable undo/redo for policy command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0},"test-code":{"insertions":5,"deletions":2}}}]},{"date":"2024-03-20","commitResults":[{"hash":"a7f6ae70fb83f35202a01e94f52d0121078e0dd9","isMergeCommit":false,"messageTitle":"Fix find command test case bug","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":60,"deletions":5},"test-code":{"insertions":39,"deletions":19}}},{"hash":"635fa0c7b3658560273d6d1808385de4c08f46b6","isMergeCommit":false,"messageTitle":"Change line separator format","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":54,"deletions":54}}},{"hash":"d829c4bdeba0ab5cab4b10bc129d94621606e291","isMergeCommit":false,"messageTitle":"Create test cases for combined predicate","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":94,"deletions":0}}},{"hash":"7678a1f9c72564382c5d014ddd4834f841583190","isMergeCommit":true,"messageTitle":"Merge pull request #39 from ibnu2651/branch-BugFixes","messageBody":"Fix find command test case bug","fileTypesAndContributionMap":{}},{"hash":"d584d77b895253a58fab9469fb50b9035f586379","isMergeCommit":false,"messageTitle":"Update Ui image in Readme","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"2a5757acf8b0e0325355ae20c648c8654a0f6a90","isMergeCommit":true,"messageTitle":"Merge pull request #41 from ibnu2651/branch-BugFixes","messageBody":"Update Ui image in Readme","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"c4c1132f137caf044e19f6ff918ce5c7025868f2","isMergeCommit":false,"messageTitle":"Add sequence diagram for policy into developer guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":84,"deletions":1}}},{"hash":"e7d161a3243d5ec8018cb3467acc814ef6631acc","isMergeCommit":false,"messageTitle":"Change file separator format","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":79,"deletions":79}}},{"hash":"f5203b793f2b67723872a7ba90b2a07a0a13afc6","isMergeCommit":false,"messageTitle":"Fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2},"test-code":{"insertions":1,"deletions":0}}},{"hash":"1a6ab620a4e0b67b39ef25b65aa51c76c431b07a","isMergeCommit":true,"messageTitle":"Merge pull request #51 from ibnu2651/branch-UML","messageBody":"Add sequence diagram for policy into developer guide","fileTypesAndContributionMap":{}}]},{"date":"2024-03-23","commitResults":[{"hash":"624e8c7a3663a3e8a49730b248e8c990379d5e5c","isMergeCommit":true,"messageTitle":"Merge pull request #49 from kaiyi27/master","messageBody":"Make relationship immutable","fileTypesAndContributionMap":{}},{"hash":"580ec5715f6804263d6a292dc0280f0f24372398","isMergeCommit":false,"messageTitle":"Fix policy display message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"7344eaca35ba726879d355e6bd3908536bf1b51f","isMergeCommit":false,"messageTitle":"Update policy unit tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":3}}}]},{"date":"2024-03-24","commitResults":[{"hash":"c3e1394b4320b53bdef5b4b3e18a9b9d8a031605","isMergeCommit":false,"messageTitle":"Add policy command to user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":22,"deletions":5}}},{"hash":"146e8a0a1d77c37cc4fec70442c59ce0a6494af4","isMergeCommit":true,"messageTitle":"Merge pull request #70 from kaiyi27/branch-findPolicy","messageBody":"Branch find policy","fileTypesAndContributionMap":{}}]}],"justincred":[{"date":"2024-03-07","commitResults":[{"hash":"f0c9e72d3d52f0b065acd526e00702e446eee855","isMergeCommit":false,"messageTitle":"Add picture and github link","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":0}}},{"hash":"5367c751fda7d9e083fb037f1e971e3ed1dd079a","isMergeCommit":false,"messageTitle":"Add newline after EOF","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"c20b6cdac923275fefae26b0ea868a3d7ca215d6","isMergeCommit":false,"messageTitle":"Rename file name to match github","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"4facad54598f105cf2afe4ddfb39f4d7a826ea07","isMergeCommit":false,"messageTitle":"Add porfolio to Justin","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}},{"hash":"e74455b3403bcf5ddf031984163230090dbc9b3b","isMergeCommit":false,"messageTitle":"Add portfolio to Ibnu","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"b94001b9eb471387f3ed6c0eab27057a54d4733e","isMergeCommit":false,"messageTitle":"Move homepage link to top","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":1}}},{"hash":"75b5140aeee2b5bf68eb7d545b8607cc3e2cb075","isMergeCommit":false,"messageTitle":"Change shauryan github name","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"ed256abf1e26cae51d374cfd0a27998ac5d4e616","isMergeCommit":false,"messageTitle":"Add use case for clear","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":0}}},{"hash":"28c3381442527cf09c4bd17a26fe250104d0582c","isMergeCommit":true,"messageTitle":"Merge pull request #18 from justincred/Use-Cases-Branch","messageBody":"Add use case for clear","fileTypesAndContributionMap":{}}]},{"date":"2024-03-16","commitResults":[{"hash":"cef98676f250ae3d36e2e104d06d6cdb06105d2b","isMergeCommit":false,"messageTitle":"Add undo and redo features","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":256,"deletions":20}}},{"hash":"7f8c364b0c97a9a2ff917658f4c7906db0465eaf","isMergeCommit":false,"messageTitle":"Add explicit import statements","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":1}}},{"hash":"7ff2021c2d1ecab1fe302e408481d07da40471e9","isMergeCommit":false,"messageTitle":"Add end of file whitespace","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"d81d2a8deded8c5fbd6efaf2845061930758f09e","isMergeCommit":false,"messageTitle":"Fix code checks","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":3}}},{"hash":"9d5238d7206fa89fd8b9c2b78775ad2ad1889ab4","isMergeCommit":false,"messageTitle":"Add functions to model stub","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":24,"deletions":0}}}]},{"date":"2024-03-17","commitResults":[{"hash":"b5121c94158c94d349b78a174863b2cae2dc4dcb","isMergeCommit":true,"messageTitle":"Merge pull request #31 from Shauryan123/branch-v1.1Add_Find_Feature_Based_On_Relationship_And_Tag","messageBody":"Branch add find feature based on relationship and tag","fileTypesAndContributionMap":{}}]},{"date":"2024-03-19","commitResults":[{"hash":"c83f03cc5455a05399e6c60d2dbc74591ca07669","isMergeCommit":false,"messageTitle":"Fix tests error due to not commiting after action","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":20,"deletions":2}}}]},{"date":"2024-03-21","commitResults":[{"hash":"ef300d0cd4fc86b9704c94140ee7e0f09300b5e6","isMergeCommit":false,"messageTitle":"Modify undo and redo for more abstraction","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":11},"test-code":{"insertions":6,"deletions":0}}},{"hash":"9d4e24aae954e421f4a2fd139c58dcffcf4ca754","isMergeCommit":false,"messageTitle":"Add tests for redo and undo command","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":84,"deletions":4}}},{"hash":"d1d489be0f024d4819b00103b6f971c53cdff211","isMergeCommit":false,"messageTitle":"Remove commented code for redo and undo command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":10}}},{"hash":"5eb335cc3846d630ec55244875eb4bca589c4c3d","isMergeCommit":false,"messageTitle":"Fix Checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":17,"deletions":18}}},{"hash":"7497908dff25f52712c51df76d0b8af809ec5178","isMergeCommit":false,"messageTitle":"Remove unused import","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}},{"hash":"d713bc63639a095c6656f4b1f6d16c9232b6a2c1","isMergeCommit":true,"messageTitle":"Merge pull request #44 from justincred/Add-Tests-Undo-Redo-Branch","messageBody":"Add tests for undo and redo features","fileTypesAndContributionMap":{}},{"hash":"a4de56d9f46983548e5edff8b8a0748b9cfbc36a","isMergeCommit":false,"messageTitle":"Add redo sequence diagram","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":58,"deletions":0}}},{"hash":"5207e341770dac33f242ffb6667184494b7aa2f6","isMergeCommit":false,"messageTitle":"Add redo sequence diagram to DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":3}}},{"hash":"d70a02b811793e7391a5401a3a9cd12ccd483204","isMergeCommit":true,"messageTitle":"Merge pull request #52 from justincred/UML-Redo-Branch","messageBody":"Add redo sequence diagram","tags":["v1.2"],"fileTypesAndContributionMap":{}}]},{"date":"2024-03-23","commitResults":[{"hash":"3169043f090b98a8af8f8997eb28077187f67b2f","isMergeCommit":true,"messageTitle":"Merge pull request #63 from ibnu2651/branch-Policy","messageBody":"Fix policy display message","fileTypesAndContributionMap":{}}]},{"date":"2024-03-24","commitResults":[{"hash":"8d0ac3f10cf7a77cea723019600ccd03a3361090","isMergeCommit":true,"messageTitle":"Merge pull request #64 from ibnu2651/branch-UG","messageBody":"Add policy command to user guide","fileTypesAndContributionMap":{}},{"hash":"4a8826be886ef65455ef3de3df8af496027dde7a","isMergeCommit":true,"messageTitle":"Merge pull request #62 from Shauryan123/branch-Meeting","messageBody":"Add new feature - scheduling meeting","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Shauryan123":{"docs":131,"functional-code":1261,"test-code":393},"kaiyi27":{"docs":149,"functional-code":300,"test-code":352},"ibnu2651":{"docs":139,"functional-code":311,"test-code":373},"justincred":{"docs":81,"functional-code":224,"test-code":123}},"authorContributionVariance":{"Shauryan123":75983.586,"kaiyi27":19462.232,"ibnu2651":36069.668,"justincred":4858.479},"authorDisplayNameMap":{"Shauryan123":"CS2103T-T13-3 AGRA..RYAN","kaiyi27":"CS2103T-T13-3 TEOH..I YI","ibnu2651":"CS2103T-T13-3 IBNU..ADAM","justincred":"CS2103T-T13-3 JUST..HWEI"}} diff --git a/AY2324S2-CS2103T-T15-2_tp_master/authorship.json b/AY2324S2-CS2103T-T15-2_tp_master/authorship.json index ff894f13..487da42d 100644 --- a/AY2324S2-CS2103T-T15-2_tp_master/authorship.json +++ b/AY2324S2-CS2103T-T15-2_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"hjuntan"},"content":"[![CI Status](https://github.com/AY2324S2-CS2103T-T15-2/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S2-CS2103T-T15-2/tp/actions)","lastModifiedDate":"2024-03-07"},{"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":"cheahTJ"},"content":"## Arona Pro","lastModifiedDate":"2024-03-05"},{"lineNumber":6,"author":{"gitId":"cheahTJ"},"content":"* This is **a sample project given to Software Engineering (SE) students**.\u003cbr\u003e","lastModifiedDate":"2024-03-05"},{"lineNumber":7,"author":{"gitId":"cheahTJ"},"content":"* The project simulates an ongoing software project for a desktop application (called _AronaPro_) catered for","lastModifiedDate":"2024-03-05"},{"lineNumber":8,"author":{"gitId":"cheahTJ"},"content":" Computer Science teaching assistants who appreciate an organised and vibrant approach to query,","lastModifiedDate":"2024-03-05"},{"lineNumber":9,"author":{"gitId":"cheahTJ"},"content":" and manage an array of students and professors’ contacts with CLI.","lastModifiedDate":"2024-03-05"},{"lineNumber":10,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":11,"author":{"gitId":"cheahTJ"},"content":" * It is **written in OOP fashion**.","lastModifiedDate":"2024-03-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * It comes with a **reasonable level of user and developer documentation**.","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":14,"author":{"gitId":"cheahTJ"},"content":"### Main features include:","lastModifiedDate":"2024-03-05"},{"lineNumber":15,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":16,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":17,"author":{"gitId":"cheahTJ"},"content":"#### View Contact Information","lastModifiedDate":"2024-03-05"},{"lineNumber":18,"author":{"gitId":"cheahTJ"},"content":"Description: `View` command allows you to see all the existing contacts of your students","lastModifiedDate":"2024-03-07"},{"lineNumber":19,"author":{"gitId":"cheahTJ"},"content":"\u003eFormat: `view`","lastModifiedDate":"2024-03-05"},{"lineNumber":20,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":21,"author":{"gitId":"cheahTJ"},"content":"#### Add New Contacts","lastModifiedDate":"2024-03-05"},{"lineNumber":22,"author":{"gitId":"cheahTJ"},"content":"Description: `Add` command allows you to add new contacts of your students into the address book","lastModifiedDate":"2024-03-07"},{"lineNumber":23,"author":{"gitId":"cheahTJ"},"content":"\u003eFormat: `id/NUSID n/NAME p/PHONE [e/EMAIL] [t/TAG]`","lastModifiedDate":"2024-03-06"},{"lineNumber":24,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":25,"author":{"gitId":"cheahTJ"},"content":"#### Edit Existing Contacts","lastModifiedDate":"2024-03-05"},{"lineNumber":26,"author":{"gitId":"cheahTJ"},"content":"Description: `Edit` command allows you to edit existing contacts of your students in the address book","lastModifiedDate":"2024-03-07"},{"lineNumber":27,"author":{"gitId":"cheahTJ"},"content":"\u003eFormat: `edit id/NUSID [n/NEWNAME] [p/NEWPHONE] [e/NEWEMAIL]`","lastModifiedDate":"2024-03-06"},{"lineNumber":28,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":29,"author":{"gitId":"cheahTJ"},"content":"#### Delete Existing Contacts","lastModifiedDate":"2024-03-05"},{"lineNumber":30,"author":{"gitId":"cheahTJ"},"content":"Description: `Delete` command allows you to delete existing contacts in the address book","lastModifiedDate":"2024-03-07"},{"lineNumber":31,"author":{"gitId":"cheahTJ"},"content":"\u003eFormat: `delete id/NUSID`","lastModifiedDate":"2024-03-06"},{"lineNumber":32,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":33,"author":{"gitId":"cheahTJ"},"content":"#### Filtering Existing Contacts","lastModifiedDate":"2024-03-05"},{"lineNumber":34,"author":{"gitId":"cheahTJ"},"content":"Description: `Filter` command allows you to filter desired contacts in the address book based on group","lastModifiedDate":"2024-03-07"},{"lineNumber":35,"author":{"gitId":"cheahTJ"},"content":"and tag specified","lastModifiedDate":"2024-03-07"},{"lineNumber":36,"author":{"gitId":"cheahTJ"},"content":"\u003eFormat: `filter [n/NAME] [p/PHONE] [e/EMAIL] [g/GROUP] [t/TAG]`","lastModifiedDate":"2024-03-06"},{"lineNumber":37,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":38,"author":{"gitId":"cheahTJ"},"content":"#### Assign contacts a tutorial group","lastModifiedDate":"2024-03-05"},{"lineNumber":39,"author":{"gitId":"cheahTJ"},"content":"Description: `Assign` command allows you to assign students into their respective tutorial groups in the","lastModifiedDate":"2024-03-07"},{"lineNumber":40,"author":{"gitId":"cheahTJ"},"content":"address book","lastModifiedDate":"2024-03-07"},{"lineNumber":41,"author":{"gitId":"cheahTJ"},"content":"\u003eFormat: `assign id/NUSID [g/GROUP] [t/TAG]`","lastModifiedDate":"2024-03-06"},{"lineNumber":42,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":43,"author":{"gitId":"cheahTJ"},"content":"#### Add Schedule","lastModifiedDate":"2024-03-06"},{"lineNumber":44,"author":{"gitId":"cheahTJ"},"content":"Description: `Schedyle` command allows you to schedule an appointment with students","lastModifiedDate":"2024-03-07"},{"lineNumber":45,"author":{"gitId":"cheahTJ"},"content":"\u003eFormat: `schedule id/NUSID d/DATE from/FROM [to/TO] [t/TAG] [r/REMARK]`","lastModifiedDate":"2024-03-06"},{"lineNumber":46,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* For the detailed documentation of this project, see the **[Address Book Product Website](https://se-education.org/addressbook-level3)**.","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"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":"2020-05-23"}],"authorContributionMap":{"cheahTJ":41,"hjuntan":1,"-":6}},{"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":"","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":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"cheahTJ"},"content":"### Cheah Tze Juen","lastModifiedDate":"2024-03-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"cheahTJ"},"content":"\u003cimg src\u003d\"images/cheahtj.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"cheahTJ"},"content":"[[github](https://github.com/cheahTJ)]","lastModifiedDate":"2024-03-05"},{"lineNumber":19,"author":{"gitId":"cheahTJ"},"content":"[[portfolio](team/cheahtj.md)]","lastModifiedDate":"2024-03-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"cheahTJ"},"content":"* Roles: Team Lead","lastModifiedDate":"2024-03-05"},{"lineNumber":22,"author":{"gitId":"cheahTJ"},"content":"* Responsibilities:","lastModifiedDate":"2024-03-05"},{"lineNumber":23,"author":{"gitId":"cheahTJ"},"content":" * Dedicates tasks among team and facilitate coordination among team members","lastModifiedDate":"2024-03-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"cheahTJ"},"content":"### Tan Hong Jun","lastModifiedDate":"2024-03-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"cheahTJ"},"content":"\u003cimg src\u003d\"images/hjuntan.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"cheahTJ"},"content":"[[github](http://github.com/hjuntan)]","lastModifiedDate":"2024-03-05"},{"lineNumber":31,"author":{"gitId":"cheahTJ"},"content":"[[portfolio](team/hjuntan.md)]","lastModifiedDate":"2024-03-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"cheahTJ"},"content":"* Role: Documentation","lastModifiedDate":"2024-03-05"},{"lineNumber":34,"author":{"gitId":"cheahTJ"},"content":"* Responsibilities: Ensures that all documentation are up-to-date and are specific to the user","lastModifiedDate":"2024-03-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"cheahTJ"},"content":"### Loh Jin Hun","lastModifiedDate":"2024-03-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"hjuntan"},"content":"\u003cimg src\u003d\"images/ragnapop.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-07"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"cheahTJ"},"content":"[[github](http://github.com/Ragnapop)] [[portfolio](team/ragnapop.md)]","lastModifiedDate":"2024-03-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"cheahTJ"},"content":"* Role: Testing","lastModifiedDate":"2024-03-05"},{"lineNumber":43,"author":{"gitId":"cheahTJ"},"content":"* Responsibilities: Ensures that all features are properly tested, even on edge cases","lastModifiedDate":"2024-03-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"cheahTJ"},"content":"### Chen Kuan Min","lastModifiedDate":"2024-03-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"hjuntan"},"content":"\u003cimg src\u003d\"images/rikko1204.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-07"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"cheahTJ"},"content":"[[github](http://github.com/Rikko1204)]","lastModifiedDate":"2024-03-05"},{"lineNumber":50,"author":{"gitId":"cheahTJ"},"content":"[[portfolio](team/rikko1204.md)]","lastModifiedDate":"2024-03-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"cheahTJ"},"content":"* Role: Scheduling and tracking","lastModifiedDate":"2024-03-05"},{"lineNumber":53,"author":{"gitId":"cheahTJ"},"content":"* Responsibilities: Ensures that the team is on pace with the 2 weeks sprint and helps assign","lastModifiedDate":"2024-03-05"},{"lineNumber":54,"author":{"gitId":"cheahTJ"},"content":" task equally to members","lastModifiedDate":"2024-03-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"cheahTJ"},"content":"### Guo Yuhao","lastModifiedDate":"2024-03-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"cheahTJ"},"content":"\u003cimg src\u003d\"images/ringoftheking.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-05"},{"lineNumber":59,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":60,"author":{"gitId":"cheahTJ"},"content":"[[github](http://github.com/RingoftheKing)]","lastModifiedDate":"2024-03-05"},{"lineNumber":61,"author":{"gitId":"cheahTJ"},"content":"[[portfolio](team/ringoftheking.md)]","lastModifiedDate":"2024-03-05"},{"lineNumber":62,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":63,"author":{"gitId":"cheahTJ"},"content":"* Role: Deliverables and deadlines","lastModifiedDate":"2024-03-05"},{"lineNumber":64,"author":{"gitId":"cheahTJ"},"content":"* Responsibilities: Ensures that the team is focussed on the individual task and is able to deliver the intended feature","lastModifiedDate":"2024-03-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-05"}],"authorContributionMap":{"cheahTJ":31,"hjuntan":2,"-":32}},{"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":"-"},"content":"# AB-3 Developer Guide","lastModifiedDate":"2023-09-12"},{"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":"cheahTJ"},"content":"## **Setting up, getting started**f","lastModifiedDate":"2024-03-21"},{"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":"-"},"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":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":"cheahTJ"},"content":"The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues the command `delete E0123456`.","lastModifiedDate":"2024-03-21"},{"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":"-"},"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":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":"-"},"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":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":"-"},"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":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":"cheahTJ"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"delete E0123456\")` API call as an example.","lastModifiedDate":"2024-03-21"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"cheahTJ"},"content":"\u003cpuml src\u003d\"diagrams/DeleteSequenceDiagram.puml\" alt\u003d\"Interactions Inside the Logic Component for the `delete E0123456` Command\" /\u003e","lastModifiedDate":"2024-03-21"},{"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 continues till 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).\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-02-09"},{"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":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12"},{"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":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"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":"2021-07-31"},{"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":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":133,"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":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":135,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"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":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"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":148,"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":149,"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":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","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":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"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":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"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":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"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":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"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":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"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":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"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":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"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":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":191,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"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":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":198,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"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":201,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"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":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":213,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":217,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":219,"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":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":223,"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":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"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":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"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":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","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":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":264,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":265,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":266,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":267,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"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":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":277,"author":{"gitId":"hjuntan"},"content":"* Tech-savvy university Computer Science teaching assistants","lastModifiedDate":"2024-03-07"},{"lineNumber":278,"author":{"gitId":"hjuntan"},"content":"* manages an array of students and professors’ contacts","lastModifiedDate":"2024-03-07"},{"lineNumber":279,"author":{"gitId":"hjuntan"},"content":"* appreciates an organized and vibrant approach to query, and manage contacts with CLI","lastModifiedDate":"2024-03-07"},{"lineNumber":280,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23"},{"lineNumber":281,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23"},{"lineNumber":282,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26"},{"lineNumber":283,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23"},{"lineNumber":284,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":285,"author":{"gitId":"-"},"content":"**Value proposition**: manage contacts faster than a typical mouse/GUI driven app","lastModifiedDate":"2020-05-23"},{"lineNumber":286,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":288,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":290,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":292,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":293,"author":{"gitId":"RingoftheKing"},"content":"|----------|-------------------------------------------------------------------------------|--------------------------------------------------------------|------------------------------------------------------------------------|","lastModifiedDate":"2024-03-04"},{"lineNumber":294,"author":{"gitId":"-"},"content":"| `* * *` | new user | see usage instructions | refer to instructions when I forget how to use the App |","lastModifiedDate":"2020-05-23"},{"lineNumber":295,"author":{"gitId":"RingoftheKing"},"content":"| `* * *` | Teaching Assistant | add a new student, prof, TA | know how to contact them |","lastModifiedDate":"2024-03-04"},{"lineNumber":296,"author":{"gitId":"-"},"content":"| `* * *` | user | delete a person | remove entries that I no longer need |","lastModifiedDate":"2020-05-23"},{"lineNumber":297,"author":{"gitId":"RingoftheKing"},"content":"| `* * *` | Teaching Assistant | find a student by name or class | locate details of persons without having to go through the entire list |","lastModifiedDate":"2024-03-04"},{"lineNumber":298,"author":{"gitId":"RingoftheKing"},"content":"| `* * *` | Teaching Assistant | Group students into classes | know which class my student is in |","lastModifiedDate":"2024-03-04"},{"lineNumber":299,"author":{"gitId":"RingoftheKing"},"content":"| `* * *` | Teaching assistant | find my supervisor(s) | Report any admin issues my students would raise |","lastModifiedDate":"2024-03-04"},{"lineNumber":300,"author":{"gitId":"RingoftheKing"},"content":"| `* * *` | University student with different friend groups | Tag or categorize my contacts | Search by the friend groups I\u0027m concerned with |","lastModifiedDate":"2024-03-04"},{"lineNumber":301,"author":{"gitId":"RingoftheKing"},"content":"| `* * *` | Teaching Assistant who wants to meet up with Profs and students | Schedule events to do so | remind myself to meet up or know my free times. |","lastModifiedDate":"2024-03-04"},{"lineNumber":302,"author":{"gitId":"RingoftheKing"},"content":"| `* * *` | Teaching Assistant with important people to report to or stay in contact with | pin important contacts | |","lastModifiedDate":"2024-03-04"},{"lineNumber":303,"author":{"gitId":"RingoftheKing"},"content":"| `* * *` | Teaching Assistant who needs to announce information to his students | copy a (group of) student(s)\u0027 contact info onto my clipboard | announce a message efficiently to many students |","lastModifiedDate":"2024-03-04"},{"lineNumber":304,"author":{"gitId":"RingoftheKing"},"content":"| `* *` | Forgetful Teaching Assistant | A check for addition of duplicate contacts | can reduce clutter of my list |","lastModifiedDate":"2024-03-04"},{"lineNumber":305,"author":{"gitId":"RingoftheKing"},"content":"| `* *` | Teaching assistant who might mistype | Have a Confirm Delete warning when doing deletions | Provide a safety net in case I accidentally delete important info |","lastModifiedDate":"2024-03-04"},{"lineNumber":306,"author":{"gitId":"RingoftheKing"},"content":"| `* *` | Teaching assistant with many students | Personalize contacts with photos | Attribute names to faces and distinguish similar names. |","lastModifiedDate":"2024-03-04"},{"lineNumber":307,"author":{"gitId":"-"},"content":"| `* *` | user | hide private contact details | minimize chance of someone else seeing them by accident |","lastModifiedDate":"2020-05-23"},{"lineNumber":308,"author":{"gitId":"-"},"content":"| `*` | user with many persons in the address book | sort persons by name | locate a person easily |","lastModifiedDate":"2020-05-23"},{"lineNumber":309,"author":{"gitId":"RingoftheKing"},"content":"| `*` | detail-oriented Teaching Assistant | Add a note with additional information about the contact | remind myself of things I may need to follow up on |","lastModifiedDate":"2024-03-04"},{"lineNumber":310,"author":{"gitId":"RingoftheKing"},"content":"| `*` | Teaching assistant who tires from work | use an app with a cheerful interface | feel encouraged / at peace |","lastModifiedDate":"2024-03-04"},{"lineNumber":311,"author":{"gitId":"RingoftheKing"},"content":"| `*` | Teaching assistant | import and export contact details to/from the app | can easily shift to using this app, or another |","lastModifiedDate":"2024-03-04"},{"lineNumber":312,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":313,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":315,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":316,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":317,"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":318,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":319,"author":{"gitId":"Ragnapop"},"content":"**Use case: View all contacts**","lastModifiedDate":"2024-03-04"},{"lineNumber":320,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":321,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":322,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":323,"author":{"gitId":"Ragnapop"},"content":"1. User requests to view all contacts.","lastModifiedDate":"2024-03-04"},{"lineNumber":324,"author":{"gitId":"Ragnapop"},"content":"2. AddressBook shows a list of contacts added.","lastModifiedDate":"2024-03-04"},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":326,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":327,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":328,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":329,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":330,"author":{"gitId":"Ragnapop"},"content":"* 1a. User uses the wrong format in his request.","lastModifiedDate":"2024-03-04"},{"lineNumber":331,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":332,"author":{"gitId":"Ragnapop"},"content":" * 1a1. AddressBook shows an error message.","lastModifiedDate":"2024-03-04"},{"lineNumber":333,"author":{"gitId":"Ragnapop"},"content":" * 1a2. User uses the correct format as shown in the error message for his request.","lastModifiedDate":"2024-03-04"},{"lineNumber":334,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":335,"author":{"gitId":"Ragnapop"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-04"},{"lineNumber":336,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":337,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":338,"author":{"gitId":"Ragnapop"},"content":"**Use case: Add a contact**","lastModifiedDate":"2024-03-04"},{"lineNumber":339,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":340,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":341,"author":{"gitId":"Ragnapop"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":342,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":343,"author":{"gitId":"Ragnapop"},"content":"1. User requests to add a contact.","lastModifiedDate":"2024-03-04"},{"lineNumber":344,"author":{"gitId":"Ragnapop"},"content":"2. User inputs all information required to add a contact into AddressBook.","lastModifiedDate":"2024-03-04"},{"lineNumber":345,"author":{"gitId":"Ragnapop"},"content":"3. AddressBook adds the contact with all relevant information into a list.","lastModifiedDate":"2024-03-04"},{"lineNumber":346,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":347,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":348,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":349,"author":{"gitId":"Ragnapop"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":350,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":351,"author":{"gitId":"Ragnapop"},"content":"* 2a. The given information is in an incorrect format.","lastModifiedDate":"2024-03-04"},{"lineNumber":352,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":353,"author":{"gitId":"Ragnapop"},"content":" * 2a1. AddressBook shows an error message.","lastModifiedDate":"2024-03-04"},{"lineNumber":354,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":355,"author":{"gitId":"Ragnapop"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":356,"author":{"gitId":"Ragnapop"},"content":" ","lastModifiedDate":"2024-03-07"},{"lineNumber":357,"author":{"gitId":"Ragnapop"},"content":"* 2b. The given information is insufficient to form a contact.","lastModifiedDate":"2024-03-04"},{"lineNumber":358,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":359,"author":{"gitId":"Ragnapop"},"content":" * 2b1. AddressBook shows an error message.","lastModifiedDate":"2024-03-04"},{"lineNumber":360,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":361,"author":{"gitId":"Ragnapop"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":362,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":363,"author":{"gitId":"Ragnapop"},"content":"**Use case: Edit a contact\u0027s particulars**","lastModifiedDate":"2024-03-04"},{"lineNumber":364,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":365,"author":{"gitId":"Ragnapop"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":366,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":367,"author":{"gitId":"Ragnapop"},"content":"1. User requests to edit a contact.","lastModifiedDate":"2024-03-04"},{"lineNumber":368,"author":{"gitId":"Ragnapop"},"content":"2. User inputs all fields he wishes to edit about said contact,as well as the information required to edit a contact into AddressBook.","lastModifiedDate":"2024-03-04"},{"lineNumber":369,"author":{"gitId":"Ragnapop"},"content":"3. AddressBook edits the contact by changing all the specified fields into the newly inputted information.","lastModifiedDate":"2024-03-04"},{"lineNumber":370,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":371,"author":{"gitId":"Ragnapop"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":372,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":373,"author":{"gitId":"Ragnapop"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":374,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":375,"author":{"gitId":"Ragnapop"},"content":"* 2a. The given information is in an incorrect format.","lastModifiedDate":"2024-03-04"},{"lineNumber":376,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":377,"author":{"gitId":"Ragnapop"},"content":" * 2a1. AddressBook shows an error message.","lastModifiedDate":"2024-03-04"},{"lineNumber":378,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":379,"author":{"gitId":"Ragnapop"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":380,"author":{"gitId":"Ragnapop"},"content":" ","lastModifiedDate":"2024-03-04"},{"lineNumber":381,"author":{"gitId":"Ragnapop"},"content":"* 2a. The contact does not exist.","lastModifiedDate":"2024-03-04"},{"lineNumber":382,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":383,"author":{"gitId":"Ragnapop"},"content":" * 2a1. AddressBook shows an error message.","lastModifiedDate":"2024-03-04"},{"lineNumber":384,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":385,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":386,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":387,"author":{"gitId":"Ragnapop"},"content":"**Use case: Delete a contact**","lastModifiedDate":"2024-03-04"},{"lineNumber":388,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":389,"author":{"gitId":"Ragnapop"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":390,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":391,"author":{"gitId":"Ragnapop"},"content":"1. User requests to delete a specific contact.","lastModifiedDate":"2024-03-04"},{"lineNumber":392,"author":{"gitId":"Ragnapop"},"content":"2. AddressBook deletes the specified contact.","lastModifiedDate":"2024-03-04"},{"lineNumber":393,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":394,"author":{"gitId":"Ragnapop"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":395,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":396,"author":{"gitId":"Ragnapop"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":397,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":398,"author":{"gitId":"Ragnapop"},"content":"* 1a. User uses the wrong format in his request.","lastModifiedDate":"2024-03-04"},{"lineNumber":399,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":400,"author":{"gitId":"Ragnapop"},"content":" * 1a1. AddressBook shows an error message.","lastModifiedDate":"2024-03-04"},{"lineNumber":401,"author":{"gitId":"Ragnapop"},"content":" * 1a2. User uses the correct format as shown in the error message for his request.","lastModifiedDate":"2024-03-04"},{"lineNumber":402,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":403,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23"},{"lineNumber":404,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":405,"author":{"gitId":"Ragnapop"},"content":"* 2a. The contact does not exist.","lastModifiedDate":"2024-03-04"},{"lineNumber":406,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":407,"author":{"gitId":"Ragnapop"},"content":" * 2a1. AddressBook shows an error message.","lastModifiedDate":"2024-03-04"},{"lineNumber":408,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":409,"author":{"gitId":"Ragnapop"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":410,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":411,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":412,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":413,"author":{"gitId":"Ragnapop"},"content":"**Use case: Find a specific existing contact**","lastModifiedDate":"2024-03-04"},{"lineNumber":414,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":415,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":416,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":417,"author":{"gitId":"Ragnapop"},"content":"1. User requests to find a specific contact.","lastModifiedDate":"2024-03-04"},{"lineNumber":418,"author":{"gitId":"Ragnapop"},"content":"2. AddressBook outputs the contact with all relevant information about the contact.","lastModifiedDate":"2024-03-04"},{"lineNumber":419,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":420,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":421,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":422,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":423,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":424,"author":{"gitId":"Ragnapop"},"content":"* 1a. User uses the wrong format in his request.","lastModifiedDate":"2024-03-04"},{"lineNumber":425,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":426,"author":{"gitId":"Ragnapop"},"content":" * 1a1. AddressBook shows an error message.","lastModifiedDate":"2024-03-04"},{"lineNumber":427,"author":{"gitId":"Ragnapop"},"content":" * 1a2. User uses the correct format as shown in the error message for his request.","lastModifiedDate":"2024-03-04"},{"lineNumber":428,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":429,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23"},{"lineNumber":430,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":431,"author":{"gitId":"Ragnapop"},"content":"* 2a. The contact does not exist.","lastModifiedDate":"2024-03-04"},{"lineNumber":432,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":433,"author":{"gitId":"Ragnapop"},"content":" * 2a1. AddressBook shows an error message.","lastModifiedDate":"2024-03-04"},{"lineNumber":434,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":435,"author":{"gitId":"Ragnapop"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":436,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":437,"author":{"gitId":"Ragnapop"},"content":"**Use case: Assign an existing contact to a tutorial group**","lastModifiedDate":"2024-03-04"},{"lineNumber":438,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":439,"author":{"gitId":"Ragnapop"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":440,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":441,"author":{"gitId":"Ragnapop"},"content":"1. User requests to tag a specific contact to a tutorial group.","lastModifiedDate":"2024-03-04"},{"lineNumber":442,"author":{"gitId":"Ragnapop"},"content":"2. AddressBook tags the contact to the tutorial group.","lastModifiedDate":"2024-03-04"},{"lineNumber":443,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":444,"author":{"gitId":"Ragnapop"},"content":" Use case ends.","lastModifiedDate":"2024-03-14"},{"lineNumber":445,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":446,"author":{"gitId":"Ragnapop"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":447,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":448,"author":{"gitId":"Ragnapop"},"content":"* 1a. User uses the wrong format in his request.","lastModifiedDate":"2024-03-04"},{"lineNumber":449,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":450,"author":{"gitId":"Ragnapop"},"content":" * 1a1. AddressBook shows an error message.","lastModifiedDate":"2024-03-04"},{"lineNumber":451,"author":{"gitId":"Ragnapop"},"content":" * 1a2. User uses the correct format as shown in the error message for his request.","lastModifiedDate":"2024-03-04"},{"lineNumber":452,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":453,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-04"},{"lineNumber":454,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":455,"author":{"gitId":"Ragnapop"},"content":"* 2a. The contact does not exist.","lastModifiedDate":"2024-03-04"},{"lineNumber":456,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":457,"author":{"gitId":"Ragnapop"},"content":" * 2a1. AddressBook shows an error message.","lastModifiedDate":"2024-03-04"},{"lineNumber":458,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":459,"author":{"gitId":"Ragnapop"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":460,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":461,"author":{"gitId":"Ragnapop"},"content":"* 2a. The tutorial group does not yet exist.","lastModifiedDate":"2024-03-04"},{"lineNumber":462,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":463,"author":{"gitId":"Ragnapop"},"content":" * 2a1. AddressBook creates a new tag with the name of the tutorial group.","lastModifiedDate":"2024-03-04"},{"lineNumber":464,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":465,"author":{"gitId":"Ragnapop"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-04"},{"lineNumber":466,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":467,"author":{"gitId":"Ragnapop"},"content":"**Use case: Classify an existing contact (Prof, TA, Student)**","lastModifiedDate":"2024-03-04"},{"lineNumber":468,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":469,"author":{"gitId":"Ragnapop"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":470,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":471,"author":{"gitId":"Ragnapop"},"content":"1. User requests to classify a specific contact.","lastModifiedDate":"2024-03-04"},{"lineNumber":472,"author":{"gitId":"Ragnapop"},"content":"2. AddressBook classifies the contact as either a Professor, TA or Student.","lastModifiedDate":"2024-03-04"},{"lineNumber":473,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":474,"author":{"gitId":"Ragnapop"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":475,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":476,"author":{"gitId":"Ragnapop"},"content":"* 1a. User uses the wrong format in his request.","lastModifiedDate":"2024-03-04"},{"lineNumber":477,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":478,"author":{"gitId":"Ragnapop"},"content":" * 1a1. AddressBook shows an error message.","lastModifiedDate":"2024-03-04"},{"lineNumber":479,"author":{"gitId":"Ragnapop"},"content":" * 1a2. User uses the correct format as shown in the error message for his request.","lastModifiedDate":"2024-03-04"},{"lineNumber":480,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":481,"author":{"gitId":"Ragnapop"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-04"},{"lineNumber":482,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":483,"author":{"gitId":"Ragnapop"},"content":"* 2a. The contact does not exist.","lastModifiedDate":"2024-03-04"},{"lineNumber":484,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":485,"author":{"gitId":"Ragnapop"},"content":" * 2a1. AddressBook shows an error message.","lastModifiedDate":"2024-03-04"},{"lineNumber":486,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":487,"author":{"gitId":"Ragnapop"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":488,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":489,"author":{"gitId":"Ragnapop"},"content":"* 2a. The tag does not exist.","lastModifiedDate":"2024-03-04"},{"lineNumber":490,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":491,"author":{"gitId":"Ragnapop"},"content":" * 2a1. AddressBook shows an error message.","lastModifiedDate":"2024-03-04"},{"lineNumber":492,"author":{"gitId":"Ragnapop"},"content":" * 2a2. User has to request the classification again using a correct classifier","lastModifiedDate":"2024-03-04"},{"lineNumber":493,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":494,"author":{"gitId":"Ragnapop"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":495,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":496,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":497,"author":{"gitId":"Ragnapop"},"content":"**Use case: schedules an event with a contact**","lastModifiedDate":"2024-03-06"},{"lineNumber":498,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":499,"author":{"gitId":"Ragnapop"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":500,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":501,"author":{"gitId":"Ragnapop"},"content":"1. User requests to schedule an event with a specific contact.","lastModifiedDate":"2024-03-06"},{"lineNumber":502,"author":{"gitId":"Ragnapop"},"content":"2. User inputs all necessary information into AddressBook in order for the event to be scheduled.","lastModifiedDate":"2024-03-06"},{"lineNumber":503,"author":{"gitId":"Ragnapop"},"content":"3. AddressBook creates the event and classifies it under the contact.","lastModifiedDate":"2024-03-06"},{"lineNumber":504,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":505,"author":{"gitId":"Ragnapop"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":506,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":507,"author":{"gitId":"Ragnapop"},"content":"* 1a. User uses the wrong format in his request.","lastModifiedDate":"2024-03-06"},{"lineNumber":508,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":509,"author":{"gitId":"Ragnapop"},"content":" * 1a1. AddressBook shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":510,"author":{"gitId":"Ragnapop"},"content":" * 1a2. User uses the correct format as shown in the error message for his request.","lastModifiedDate":"2024-03-06"},{"lineNumber":511,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":512,"author":{"gitId":"Ragnapop"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-06"},{"lineNumber":513,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":514,"author":{"gitId":"Ragnapop"},"content":"* 2a. The contact does not exist.","lastModifiedDate":"2024-03-06"},{"lineNumber":515,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":516,"author":{"gitId":"Ragnapop"},"content":" * 2a1. AddressBook shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":517,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":518,"author":{"gitId":"Ragnapop"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":519,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":520,"author":{"gitId":"Ragnapop"},"content":"* 2a. The information required is not sufficiently inputted.","lastModifiedDate":"2024-03-06"},{"lineNumber":521,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":522,"author":{"gitId":"Ragnapop"},"content":" * 2a1. AddressBook shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":523,"author":{"gitId":"Ragnapop"},"content":" * 2a2. User has to request the classification again using a correct classifier","lastModifiedDate":"2024-03-06"},{"lineNumber":524,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":525,"author":{"gitId":"Ragnapop"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-06"},{"lineNumber":526,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":527,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":528,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":529,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":530,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":531,"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":532,"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":533,"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":534,"author":{"gitId":"hjuntan"},"content":"4. A novice user should be able to learn basic operations (add, delete, search entries) within 30 minutes of using the documentation.","lastModifiedDate":"2024-03-05"},{"lineNumber":535,"author":{"gitId":"hjuntan"},"content":"5. The system should respond within two seconds.","lastModifiedDate":"2024-03-05"},{"lineNumber":536,"author":{"gitId":"hjuntan"},"content":"6. The system should be backward compatible with data produced by earlier versions of the system","lastModifiedDate":"2024-03-05"},{"lineNumber":537,"author":{"gitId":"hjuntan"},"content":"7. The system should smoothly handle user input errors and system issues, providing meaningful error messages without crashing.","lastModifiedDate":"2024-03-05"},{"lineNumber":538,"author":{"gitId":"hjuntan"},"content":"8. Comply with relevant data protection regulations, Personal Data Protection Act (PDPA) in handling personal information.","lastModifiedDate":"2024-03-05"},{"lineNumber":539,"author":{"gitId":"hjuntan"},"content":"9. Adhere to recommended coding standards, such as readability, modularity, and application of design patterns, to make upgrades and maintenance simpler.","lastModifiedDate":"2024-03-05"},{"lineNumber":540,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":541,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":542,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":543,"author":{"gitId":"Rikko1204"},"content":"* **Teaching Assistant (TA)**: A student-tutor hired by NUS. TAs are responsible for conducting tutorial lessons and assist in the students\u0027 learning whenever required.","lastModifiedDate":"2024-03-06"},{"lineNumber":544,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":545,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":546,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":547,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":548,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":549,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":550,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":551,"author":{"gitId":"-"},"content":"\u003cboxtype\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":552,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":553,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12"},{"lineNumber":554,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":555,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":556,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":557,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":558,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":559,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":560,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":561,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":562,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":563,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":564,"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":565,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":566,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":567,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":568,"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":569,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":570,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":571,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":572,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":573,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":574,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":575,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":576,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":577,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":578,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":579,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":580,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":581,"author":{"gitId":"cheahTJ"},"content":" 1. Test case: `delete E0123456`\u003cbr\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":582,"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":583,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":584,"author":{"gitId":"cheahTJ"},"content":" 1. Test case: `delete E0000000`\u003cbr\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":585,"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":586,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":587,"author":{"gitId":"cheahTJ"},"content":" 1. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is NusId which does not exist currently in the address book)\u003cbr\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":588,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":589,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":590,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":591,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":592,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":593,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":594,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":595,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":596,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":597,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":598,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"cheahTJ":7,"Rikko1204":1,"RingoftheKing":16,"Ragnapop":172,"hjuntan":9,"-":393}},{"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":"-"},"content":"# AB-3 User Guide","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"AddressBook Level 3 (AB3) is a **desktop app for managing contacts, optimized for use via a Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, AB3 can get your contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2023-09-12"},{"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":"-"},"content":"1. Download the latest `addressbook.jar` from [here](https://github.com/se-edu/addressbook-level3/releases).","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your AddressBook.","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar addressbook.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2023-01-01"},{"lineNumber":25,"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":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":"-"},"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":29,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"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":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2023-01-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"**Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"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":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"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":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"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":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"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":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"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":64,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":66,"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":67,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"### Adding a person: `add`","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"Adds a person to the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"Rikko1204"},"content":"Format: `add id/ID n/NAME p/PHONE_NUMBER e/EMAIL [t/TAG]…​`","lastModifiedDate":"2024-03-06"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":86,"author":{"gitId":"Rikko1204"},"content":"**Tip:** A person can have 0 or 1 tag","lastModifiedDate":"2024-03-06"},{"lineNumber":87,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"Rikko1204"},"content":"* `add id/E1234567 n/John Doe p/98765432 e/johnd@example.com`","lastModifiedDate":"2024-03-06"},{"lineNumber":91,"author":{"gitId":"Rikko1204"},"content":"* `add id/E7654321 n/Betsy Crowe t/student e/betsycrowe@example.com p/1234567`","lastModifiedDate":"2024-03-06"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"### Listing all persons : `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"Shows a list of all persons in the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"### Editing a person : `edit`","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"Edits an existing person in the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"cheahTJ"},"content":"Format: `edit nusId [n/NAME] [p/PHONE] [e/EMAIL] [t/TAG] [g/GROUP]` ","lastModifiedDate":"2024-03-21"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"cheahTJ"},"content":"* Edits the person with a specified `nusId`. The nusId refers to the nusId shown in the displayed person list. The nusId **must be a 7-digit number following an \u0027E\u0027**","lastModifiedDate":"2024-03-21"},{"lineNumber":106,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"cheahTJ"},"content":"* When editing tags, the valid forms have to be either 1 of these: Professor, TA, Student, None ","lastModifiedDate":"2024-03-21"},{"lineNumber":109,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"cheahTJ"},"content":"* `edit E0123456 p/91234567 e/johndoe@example.com` Edits the phone number and email address of the person with `nusId` E0123456 to be `91234567` and `johndoe@example.com` respectively.","lastModifiedDate":"2024-03-21"},{"lineNumber":113,"author":{"gitId":"cheahTJ"},"content":"* `edit E1234567 n/Betsy t/Professor` Edits the name and the tag of the person with `nusId` E1234567 to be `Betsy` and `Professor` respectively.","lastModifiedDate":"2024-03-21"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":"### Locating persons by name: `find`","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"Finds persons whose names contain any of the given keywords.","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"RingoftheKing"},"content":"Format: `find [n/NAME] [p/PHONE] [e/EMAIL] [t/TAG] [g/GROUP] [g/MORE GROUPS]`","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":121,"author":{"gitId":"RingoftheKing"},"content":"* The NAME search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2024-03-10"},{"lineNumber":122,"author":{"gitId":"RingoftheKing"},"content":"* The order of NAME keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2024-03-10"},{"lineNumber":123,"author":{"gitId":"RingoftheKing"},"content":"* Only full words will be matched for NAME e.g. `Han` will not match `Hans`","lastModifiedDate":"2024-03-10"},{"lineNumber":124,"author":{"gitId":"RingoftheKing"},"content":"* Persons matching ANY word will be selected for NAME (e.g. `Hans Bo` will fetch `Hans Gruber`, `Bo Yang`)","lastModifiedDate":"2024-03-10"},{"lineNumber":125,"author":{"gitId":"RingoftheKing"},"content":"* The PHONE search matches people that has a number that STARTS WITH the query (e.g `9123` fetches `91237654`)","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"RingoftheKing"},"content":"* The EMAIL search uses a PARTIAL, case-insensitive match. (e.g. `charles` matches `PrinceCharles@kingston.com`)","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"RingoftheKing"},"content":"* The TAG search uses an EXACT case-sensitive match. ","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"RingoftheKing"},"content":"* The GROUP search fetches people with ALL specified groups (e.g `g/CS2101 g/CS2103T` matches a person who minimally has BOTH these Groups)","lastModifiedDate":"2024-03-17"},{"lineNumber":129,"author":{"gitId":"RingoftheKing"},"content":"* Persons matching all parameters will be returned (i.e. `AND` search).","lastModifiedDate":"2024-03-10"},{"lineNumber":130,"author":{"gitId":"hjuntan"},"content":" ","lastModifiedDate":"2024-03-15"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"* `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"Deletes the specified person from the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"cheahTJ"},"content":"Format: `delete nusId`","lastModifiedDate":"2024-03-21"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"cheahTJ"},"content":"* Deletes the person of a specified `nusId`.","lastModifiedDate":"2024-03-21"},{"lineNumber":144,"author":{"gitId":"cheahTJ"},"content":"* The nusId refers to the nusId shown in the displayed person list.","lastModifiedDate":"2024-03-21"},{"lineNumber":145,"author":{"gitId":"cheahTJ"},"content":"* The nusId **must be a 7-digit number following an \u0027E\u0027** ","lastModifiedDate":"2024-03-21"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"cheahTJ"},"content":"* `delete E0123456` will delete an existing person with `nusId` of \"E0123456\".","lastModifiedDate":"2024-03-21"},{"lineNumber":149,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"Clears all entries from the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"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":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":169,"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":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":171,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":173,"author":{"gitId":"-"},"content":"**Caution:**","lastModifiedDate":"2023-09-12"},{"lineNumber":174,"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.\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":175,"author":{"gitId":"-"},"content":"Furthermore, certain edits can cause the AddressBook to behave in unexpected ways (e.g., if a value entered is outside the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.","lastModifiedDate":"2023-09-12"},{"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":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"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":188,"author":{"gitId":"-"},"content":"","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":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":193,"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":194,"author":{"gitId":"-"},"content":"","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":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"RingoftheKing"},"content":"| Action | Format, Examples |","lastModifiedDate":"2024-03-17"},{"lineNumber":200,"author":{"gitId":"RingoftheKing"},"content":"|------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------|","lastModifiedDate":"2024-03-17"},{"lineNumber":201,"author":{"gitId":"RingoftheKing"},"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":"2024-03-17"},{"lineNumber":202,"author":{"gitId":"RingoftheKing"},"content":"| **Clear** | `clear` |","lastModifiedDate":"2024-03-17"},{"lineNumber":203,"author":{"gitId":"RingoftheKing"},"content":"| **Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3` |","lastModifiedDate":"2024-03-17"},{"lineNumber":204,"author":{"gitId":"RingoftheKing"},"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":"2024-03-17"},{"lineNumber":205,"author":{"gitId":"RingoftheKing"},"content":"| **Find** | `find [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [t/TAG] [g/GROUP]`\u003cbr\u003e e.g., `find n/James g/CS2103T` |","lastModifiedDate":"2024-03-17"},{"lineNumber":206,"author":{"gitId":"RingoftheKing"},"content":"| **List** | `list` |","lastModifiedDate":"2024-03-17"},{"lineNumber":207,"author":{"gitId":"RingoftheKing"},"content":"| **Help** | `help` |","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"cheahTJ":12,"Rikko1204":4,"RingoftheKing":19,"hjuntan":1,"-":171}},{"path":"docs/_markbind/layouts/default.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003chead-bottom\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003clink rel\u003d\"stylesheet\" href\u003d\"{{baseUrl}}/stylesheets/main.css\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c/head-bottom\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003cheader sticky\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cnavbar type\u003d\"dark\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"Rikko1204"},"content":" \u003ca slot\u003d\"brand\" href\u003d\"{{baseUrl}}/index.html\" title\u003d\"Home\" class\u003d\"navbar-brand\"\u003eAronaPro\u003c/a\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/index.html\" class\u003d\"nav-link\"\u003eHome\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/UserGuide.html\" class\u003d\"nav-link\"\u003eUser Guide\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/DeveloperGuide.html\" class\u003d\"nav-link\"\u003eDeveloper Guide\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/AboutUs.html\" class\u003d\"nav-link\"\u003eAbout Us\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"https://github.com/se-edu/addressbook-level3\" target\u003d\"_blank\" class\u003d\"nav-link\"\u003e\u003cmd\u003e:fab-github:\u003c/md\u003e\u003c/a\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cli slot\u003d\"right\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cform class\u003d\"navbar-form\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003csearchbar :data\u003d\"searchData\" placeholder\u003d\"Search\" :on-hit\u003d\"searchCallback\" menu-align-right\u003e\u003c/searchbar\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/form\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/navbar\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"\u003c/header\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"flex-body\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"site-nav\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"site-nav-top\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"fw-bold mb-2\" style\u003d\"font-size: 1.25rem;\"\u003eSite Map\u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003csite-nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"* [Home]({{ baseUrl }}/index.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"* [User Guide]({{ baseUrl }}/UserGuide.html) :expanded:","lastModifiedDate":"2023-09-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * [Quick Start]({{ baseUrl }}/UserGuide.html#quick-start)","lastModifiedDate":"2023-09-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * [Features]({{ baseUrl }}/UserGuide.html#features)","lastModifiedDate":"2023-09-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * [FAQ]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * [Command Summary]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":"* [Developer Guide]({{ baseUrl }}/DeveloperGuide.html) :expanded:","lastModifiedDate":"2023-09-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * [Acknowledgements]({{ baseUrl }}/DeveloperGuide.html#acknowledgements)","lastModifiedDate":"2023-09-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * [Setting Up]({{ baseUrl }}/DeveloperGuide.html#setting-up-getting-started)","lastModifiedDate":"2023-09-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * [Design]({{ baseUrl }}/DeveloperGuide.html#design)","lastModifiedDate":"2023-09-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * [Implementation]({{ baseUrl }}/DeveloperGuide.html#implementation)","lastModifiedDate":"2023-09-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * [Documentation, logging, testing, configuration, dev-ops]({{ baseUrl }}/DeveloperGuide.html#documentation-logging-testing-configuration-dev-ops)","lastModifiedDate":"2023-09-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * [Appendix: Requirements]({{ baseUrl }}/DeveloperGuide.html#appendix-requirements)","lastModifiedDate":"2023-09-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * [Appendix: Instructions for manual testing]({{ baseUrl }}/DeveloperGuide.html#appendix-instructions-for-manual-testing)","lastModifiedDate":"2023-09-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":"* Tutorials","lastModifiedDate":"2023-09-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * [Tracing code]({{ baseUrl }}/tutorials/TracingCode.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * [Adding a command]({{ baseUrl }}/tutorials/AddRemark.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * [Removing Fields]({{ baseUrl }}/tutorials/RemovingFields.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [About Us]({{ baseUrl }}/AboutUs.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/site-nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cdiv id\u003d\"content-wrapper\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" {{ content }}","lastModifiedDate":"2023-09-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"page-nav\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cpage-nav /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003cscroll-top-button\u003e\u003c/scroll-top-button\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":"\u003cfooter\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003c!-- Support MarkBind by including a link to us on your landing page! --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"text-center\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u003csmall\u003e[\u003cmd\u003e**Powered by**\u003c/md\u003e \u003cimg src\u003d\"https://markbind.org/favicon.ico\" width\u003d\"30\"\u003e {{MarkBind}}, generated on {{timestamp}}]\u003c/small\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003c/footer\u003e","lastModifiedDate":"2023-09-12"}],"authorContributionMap":{"Rikko1204":1,"-":66}},{"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":"cheahTJ"},"content":"participant \":ParserUtil\" as ParserUtil LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"participant \"d:DeleteCommand\" as DeleteCommand LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-02-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-02-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"cheahTJ"},"content":"[-\u003e LogicManager : execute(\"delete E01234567\")","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":"activate LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"cheahTJ"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"delete E01234567\")","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":"activate AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"create DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":"AddressBookParser -\u003e DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"activate DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"DeleteCommandParser --\u003e AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"deactivate DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"cheahTJ"},"content":"AddressBookParser -\u003e DeleteCommandParser : parse(\"E01234567\")","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":"activate DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":34,"author":{"gitId":"cheahTJ"},"content":"create ParserUtil","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"cheahTJ"},"content":"DeleteCommandParser -\u003e ParserUtil : parseNusId(\"E01234567\")","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"cheahTJ"},"content":"activate ParserUtil","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"cheahTJ"},"content":"ParserUtil -\u003e DeleteCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"cheahTJ"},"content":"deactivate ParserUtil","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":"create DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":42,"author":{"gitId":"cheahTJ"},"content":"DeleteCommandParser -\u003e DeleteCommand : DeleteCommand(nusId)","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":"activate DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"DeleteCommand --\u003e DeleteCommandParser :","lastModifiedDate":"2024-02-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":"deactivate DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":48,"author":{"gitId":"-"},"content":"DeleteCommandParser --\u003e AddressBookParser : d","lastModifiedDate":"2019-07-03"},{"lineNumber":49,"author":{"gitId":"-"},"content":"deactivate DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":50,"author":{"gitId":"-"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2019-07-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"DeleteCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":52,"author":{"gitId":"-"},"content":"destroy DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":54,"author":{"gitId":"-"},"content":"AddressBookParser --\u003e LogicManager : d","lastModifiedDate":"2019-07-03"},{"lineNumber":55,"author":{"gitId":"-"},"content":"deactivate AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":"LogicManager -\u003e DeleteCommand : execute(m)","lastModifiedDate":"2024-02-09"},{"lineNumber":58,"author":{"gitId":"-"},"content":"activate DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":60,"author":{"gitId":"cheahTJ"},"content":"DeleteCommand -\u003e Model : deletePerson(personToDelete)","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":"activate Model","lastModifiedDate":"2019-07-03"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":63,"author":{"gitId":"-"},"content":"Model --\u003e DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":64,"author":{"gitId":"-"},"content":"deactivate Model","lastModifiedDate":"2019-07-03"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":66,"author":{"gitId":"-"},"content":"create CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":67,"author":{"gitId":"-"},"content":"DeleteCommand -\u003e CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":68,"author":{"gitId":"-"},"content":"activate CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":70,"author":{"gitId":"-"},"content":"CommandResult --\u003e DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":71,"author":{"gitId":"-"},"content":"deactivate CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":73,"author":{"gitId":"-"},"content":"DeleteCommand --\u003e LogicManager : r","lastModifiedDate":"2024-02-09"},{"lineNumber":74,"author":{"gitId":"-"},"content":"deactivate DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":76,"author":{"gitId":"-"},"content":"[\u003c--LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":77,"author":{"gitId":"-"},"content":"deactivate LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":78,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"cheahTJ":13,"-":65}},{"path":"docs/diagrams/EditSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"cheahTJ"},"content":"@startuml","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"cheahTJ"},"content":"!include style.puml","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"cheahTJ"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"cheahTJ"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"cheahTJ"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"cheahTJ"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"cheahTJ"},"content":"participant \":EditCommandParser\" as EditCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"cheahTJ"},"content":"participant \":ArgumentTokenizer\" as ArgumentTokenizer LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"cheahTJ"},"content":"participant \":EditPersonDescriptor\" as EditPersonDescriptor LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"cheahTJ"},"content":"participant \":ParserUtil\" as ParserUtil LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"cheahTJ"},"content":"participant \"d:EditCommand\" as EditCommand LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"cheahTJ"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"cheahTJ"},"content":"end box","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"cheahTJ"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"cheahTJ"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"cheahTJ"},"content":"end box","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"cheahTJ"},"content":"[-\u003e LogicManager : execute(\"edit E01234567 n/John p/90000001\")","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"cheahTJ"},"content":"activate LogicManager","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"cheahTJ"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"edit E01234567 n/John p/90000001\")","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"cheahTJ"},"content":"activate AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"cheahTJ"},"content":"create EditCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"cheahTJ"},"content":"AddressBookParser -\u003e EditCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"cheahTJ"},"content":"activate EditCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"cheahTJ"},"content":"EditCommandParser --\u003e AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"cheahTJ"},"content":"deactivate EditCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"cheahTJ"},"content":"AddressBookParser -\u003e EditCommandParser : parse(\"n/John p/90000001\")","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"cheahTJ"},"content":"activate EditCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"cheahTJ"},"content":"create ArgumentTokenizer","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"cheahTJ"},"content":"EditCommandParser -\u003e ArgumentTokenizer : tokenize((args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_TAG, PREFIX_GROUP))","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"cheahTJ"},"content":"activate ArgumentTokenizer","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"cheahTJ"},"content":"ArgumentTokenizer -\u003e EditCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"cheahTJ"},"content":"deactivate ArgumentTokenizer","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"cheahTJ"},"content":"create ParserUtil","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"cheahTJ"},"content":"EditCommandParser -\u003e ParserUtil : parseNusId(\"E01234567\")","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"cheahTJ"},"content":"activate ParserUtil","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"cheahTJ"},"content":"ParserUtil -\u003e EditCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"cheahTJ"},"content":"deactivate ParserUtil","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"cheahTJ"},"content":"create EditPersonDescriptor","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"cheahTJ"},"content":"EditCommandParser -\u003e EditPersonDescriptor","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"cheahTJ"},"content":"activate EditPersonDescriptor","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"cheahTJ"},"content":"EditPersonDescriptor -\u003e EditCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"cheahTJ"},"content":"deactivate EditPersonDescriptor","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"cheahTJ"},"content":"EditCommandParser -\u003e EditPersonDescriptor","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"cheahTJ"},"content":"activate EditPersonDescriptor","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"cheahTJ"},"content":"create EditCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"cheahTJ"},"content":"EditPersonDescriptor -\u003e EditCommand : setName(name)","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"cheahTJ"},"content":"activate EditCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"cheahTJ"},"content":"EditCommand -\u003e EditPersonDescriptor","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"cheahTJ"},"content":"deactivate EditCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"cheahTJ"},"content":"EditPersonDescriptor -\u003e EditCommand : setPhone(phone)","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"cheahTJ"},"content":"activate EditCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"cheahTJ"},"content":"EditCommand -\u003e EditPersonDescriptor","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"cheahTJ"},"content":"deactivate EditCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"cheahTJ"},"content":"EditPersonDescriptor -\u003e EditCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"cheahTJ"},"content":"deactivate EditPersonDescriptor","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"cheahTJ"},"content":"EditCommandParser -\u003e EditCommand : EditCommand(nusId)","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"cheahTJ"},"content":"activate EditCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"cheahTJ"},"content":"EditCommand --\u003e EditCommandParser :","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"cheahTJ"},"content":"deactivate EditCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"cheahTJ"},"content":"EditCommandParser --\u003e AddressBookParser : d","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"cheahTJ"},"content":"deactivate EditCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"cheahTJ"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"cheahTJ"},"content":"EditCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"cheahTJ"},"content":"destroy EditCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"cheahTJ"},"content":"AddressBookParser --\u003e LogicManager : d","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"cheahTJ"},"content":"deactivate AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":90,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":91,"author":{"gitId":"cheahTJ"},"content":"LogicManager -\u003e EditCommand : execute(m)","lastModifiedDate":"2024-03-21"},{"lineNumber":92,"author":{"gitId":"cheahTJ"},"content":"activate EditCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":93,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":94,"author":{"gitId":"cheahTJ"},"content":"EditCommand -\u003e Model : setPerson(personToEdit, editedPerson);","lastModifiedDate":"2024-03-21"},{"lineNumber":95,"author":{"gitId":"cheahTJ"},"content":"activate Model","lastModifiedDate":"2024-03-21"},{"lineNumber":96,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":97,"author":{"gitId":"cheahTJ"},"content":"Model --\u003e EditCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":98,"author":{"gitId":"cheahTJ"},"content":"deactivate Model","lastModifiedDate":"2024-03-21"},{"lineNumber":99,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":100,"author":{"gitId":"cheahTJ"},"content":"create CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":101,"author":{"gitId":"cheahTJ"},"content":"EditCommand -\u003e CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":102,"author":{"gitId":"cheahTJ"},"content":"activate CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":103,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":104,"author":{"gitId":"cheahTJ"},"content":"CommandResult --\u003e EditCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":105,"author":{"gitId":"cheahTJ"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":106,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":107,"author":{"gitId":"cheahTJ"},"content":"EditCommand --\u003e LogicManager : r","lastModifiedDate":"2024-03-21"},{"lineNumber":108,"author":{"gitId":"cheahTJ"},"content":"deactivate EditCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":109,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":110,"author":{"gitId":"cheahTJ"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-21"},{"lineNumber":111,"author":{"gitId":"cheahTJ"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-21"},{"lineNumber":112,"author":{"gitId":"cheahTJ"},"content":"@enduml","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"cheahTJ":112}},{"path":"docs/diagrams/FindSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"RingoftheKing"},"content":"@startuml","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"RingoftheKing"},"content":"!include style.puml","lastModifiedDate":"2024-03-22"},{"lineNumber":3,"author":{"gitId":"RingoftheKing"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"RingoftheKing"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-22"},{"lineNumber":6,"author":{"gitId":"RingoftheKing"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"RingoftheKing"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"RingoftheKing"},"content":"participant \":FindCommandParser\" as FindCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"RingoftheKing"},"content":"participant \":ArgumentTokenizer\" as Tokenizer LOGIC_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"RingoftheKing"},"content":"participant \":ArgumentMultimap\" as ArgMap LOGIC_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"RingoftheKing"},"content":"participant \"f:FindCommand\" as FindCommand LOGIC_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"RingoftheKing"},"content":"participant \"r:CommandResult\" as Result LOGIC_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"RingoftheKing"},"content":"end box","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"RingoftheKing"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"RingoftheKing"},"content":"participant \":ModelManager\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"RingoftheKing"},"content":"end box","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"RingoftheKing"},"content":"[-\u003e LogicManager : Find","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"RingoftheKing"},"content":"activate LogicManager","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"RingoftheKing"},"content":"LogicManager -\u003e AddressBookParser : parseCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"RingoftheKing"},"content":"activate AddressBookParser","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"RingoftheKing"},"content":"create FindCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"RingoftheKing"},"content":"AddressBookParser -\u003e FindCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"RingoftheKing"},"content":"activate FindCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"RingoftheKing"},"content":"FindCommandParser --\u003e AddressBookParser","lastModifiedDate":"2024-03-22"},{"lineNumber":30,"author":{"gitId":"RingoftheKing"},"content":"deactivate FindCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":32,"author":{"gitId":"RingoftheKing"},"content":"AddressBookParser -\u003e FindCommandParser : parse","lastModifiedDate":"2024-03-22"},{"lineNumber":33,"author":{"gitId":"RingoftheKing"},"content":"activate FindCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":35,"author":{"gitId":"RingoftheKing"},"content":"FindCommandParser -\u003e Tokenizer : tokenize","lastModifiedDate":"2024-03-22"},{"lineNumber":36,"author":{"gitId":"RingoftheKing"},"content":"activate Tokenizer","lastModifiedDate":"2024-03-22"},{"lineNumber":37,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":38,"author":{"gitId":"RingoftheKing"},"content":"Tokenizer -\u003e Tokenizer : extractArguments","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"RingoftheKing"},"content":"activate Tokenizer","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"RingoftheKing"},"content":"deactivate Tokenizer","lastModifiedDate":"2024-03-22"},{"lineNumber":41,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":42,"author":{"gitId":"RingoftheKing"},"content":"Tokenizer --\u003e FindCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":43,"author":{"gitId":"RingoftheKing"},"content":"deactivate Tokenizer","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"RingoftheKing"},"content":"FindCommandParser -\u003e ArgMap : verifyNoDuplicatePrefixes","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"RingoftheKing"},"content":"activate ArgMap","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"RingoftheKing"},"content":"deactivate","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":49,"author":{"gitId":"RingoftheKing"},"content":"FindCommandParser -\u003e ArgMap : verifyAtLeastOnePrefixExists","lastModifiedDate":"2024-03-22"},{"lineNumber":50,"author":{"gitId":"RingoftheKing"},"content":"activate ArgMap","lastModifiedDate":"2024-03-22"},{"lineNumber":51,"author":{"gitId":"RingoftheKing"},"content":"deactivate","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"RingoftheKing"},"content":"FindCommandParser -\u003e ArgMap : getValue(PREFIX_NAME)","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"RingoftheKing"},"content":"activate ArgMap","lastModifiedDate":"2024-03-22"},{"lineNumber":54,"author":{"gitId":"RingoftheKing"},"content":"deactivate","lastModifiedDate":"2024-03-22"},{"lineNumber":55,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":56,"author":{"gitId":"RingoftheKing"},"content":"FindCommandParser -\u003e ArgMap : getValue(PREFIX_EMAIL)","lastModifiedDate":"2024-03-22"},{"lineNumber":57,"author":{"gitId":"RingoftheKing"},"content":"activate ArgMap","lastModifiedDate":"2024-03-22"},{"lineNumber":58,"author":{"gitId":"RingoftheKing"},"content":"deactivate","lastModifiedDate":"2024-03-22"},{"lineNumber":59,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":60,"author":{"gitId":"RingoftheKing"},"content":"FindCommandParser -\u003e ArgMap : getValue(PREFIX_PHONE)","lastModifiedDate":"2024-03-22"},{"lineNumber":61,"author":{"gitId":"RingoftheKing"},"content":"activate ArgMap","lastModifiedDate":"2024-03-22"},{"lineNumber":62,"author":{"gitId":"RingoftheKing"},"content":"deactivate","lastModifiedDate":"2024-03-22"},{"lineNumber":63,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":64,"author":{"gitId":"RingoftheKing"},"content":"FindCommandParser -\u003e ArgMap : getValue(PREFIX_TAG)","lastModifiedDate":"2024-03-22"},{"lineNumber":65,"author":{"gitId":"RingoftheKing"},"content":"activate ArgMap","lastModifiedDate":"2024-03-22"},{"lineNumber":66,"author":{"gitId":"RingoftheKing"},"content":"deactivate","lastModifiedDate":"2024-03-22"},{"lineNumber":67,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":68,"author":{"gitId":"RingoftheKing"},"content":"FindCommandParser -\u003e ArgMap : getAllValues(PREFIX_GROUP)","lastModifiedDate":"2024-03-22"},{"lineNumber":69,"author":{"gitId":"RingoftheKing"},"content":"activate ArgMap","lastModifiedDate":"2024-03-22"},{"lineNumber":70,"author":{"gitId":"RingoftheKing"},"content":"deactivate","lastModifiedDate":"2024-03-22"},{"lineNumber":71,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":72,"author":{"gitId":"RingoftheKing"},"content":"create FindCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":73,"author":{"gitId":"RingoftheKing"},"content":"FindCommandParser -\u003e FindCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":74,"author":{"gitId":"RingoftheKing"},"content":"activate FindCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":75,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":76,"author":{"gitId":"RingoftheKing"},"content":"FindCommand --\u003e FindCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":77,"author":{"gitId":"RingoftheKing"},"content":"deactivate FindCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":78,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":79,"author":{"gitId":"RingoftheKing"},"content":"FindCommandParser --\u003e AddressBookParser : f","lastModifiedDate":"2024-03-22"},{"lineNumber":80,"author":{"gitId":"RingoftheKing"},"content":"deactivate","lastModifiedDate":"2024-03-22"},{"lineNumber":81,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":82,"author":{"gitId":"RingoftheKing"},"content":"FindCommandParser -[hidden]\u003e AddressBookParser","lastModifiedDate":"2024-03-22"},{"lineNumber":83,"author":{"gitId":"RingoftheKing"},"content":"destroy FindCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":84,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":85,"author":{"gitId":"RingoftheKing"},"content":"AddressBookParser --\u003e LogicManager : f","lastModifiedDate":"2024-03-22"},{"lineNumber":86,"author":{"gitId":"RingoftheKing"},"content":"deactivate AddressBookParser","lastModifiedDate":"2024-03-22"},{"lineNumber":87,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":88,"author":{"gitId":"RingoftheKing"},"content":"LogicManager -\u003e FindCommand : execute","lastModifiedDate":"2024-03-22"},{"lineNumber":89,"author":{"gitId":"RingoftheKing"},"content":"activate FindCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":90,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":91,"author":{"gitId":"RingoftheKing"},"content":"FindCommand -\u003e Model : updateFilteredPersonList","lastModifiedDate":"2024-03-22"},{"lineNumber":92,"author":{"gitId":"RingoftheKing"},"content":"activate Model","lastModifiedDate":"2024-03-22"},{"lineNumber":93,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":94,"author":{"gitId":"RingoftheKing"},"content":"Model --\u003e FindCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":95,"author":{"gitId":"RingoftheKing"},"content":"deactivate","lastModifiedDate":"2024-03-22"},{"lineNumber":96,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":97,"author":{"gitId":"RingoftheKing"},"content":"create Result","lastModifiedDate":"2024-03-22"},{"lineNumber":98,"author":{"gitId":"RingoftheKing"},"content":"FindCommand -\u003e Result","lastModifiedDate":"2024-03-22"},{"lineNumber":99,"author":{"gitId":"RingoftheKing"},"content":"activate Result","lastModifiedDate":"2024-03-22"},{"lineNumber":100,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":101,"author":{"gitId":"RingoftheKing"},"content":"Result --\u003e FindCommand : r","lastModifiedDate":"2024-03-22"},{"lineNumber":102,"author":{"gitId":"RingoftheKing"},"content":"deactivate","lastModifiedDate":"2024-03-22"},{"lineNumber":103,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":104,"author":{"gitId":"RingoftheKing"},"content":"FindCommand --\u003e LogicManager : r","lastModifiedDate":"2024-03-22"},{"lineNumber":105,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":106,"author":{"gitId":"RingoftheKing"},"content":"@enduml","lastModifiedDate":"2024-03-22"}],"authorContributionMap":{"RingoftheKing":106}},{"path":"docs/team/cheahtj.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"cheahTJ"},"content":"---","lastModifiedDate":"2024-03-05"},{"lineNumber":2,"author":{"gitId":"cheahTJ"},"content":" layout: default.md","lastModifiedDate":"2024-03-05"},{"lineNumber":3,"author":{"gitId":"cheahTJ"},"content":" title: \"Cheah Tze Juen\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-03-05"},{"lineNumber":4,"author":{"gitId":"cheahTJ"},"content":"---","lastModifiedDate":"2024-03-05"},{"lineNumber":5,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":6,"author":{"gitId":"cheahTJ"},"content":"### Project: AronaPro","lastModifiedDate":"2024-03-05"},{"lineNumber":7,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":8,"author":{"gitId":"cheahTJ"},"content":"AronaPro is a desktop application designed for tech-savvy university Computer Science teaching assistants,","lastModifiedDate":"2024-03-05"},{"lineNumber":9,"author":{"gitId":"cheahTJ"},"content":"enabling them to enjoy an organised and vibrant approach to query, and manage an array of students and professors’","lastModifiedDate":"2024-03-05"},{"lineNumber":10,"author":{"gitId":"cheahTJ"},"content":"contacts via the Command Line Interface (CLI).","lastModifiedDate":"2024-03-05"},{"lineNumber":11,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":12,"author":{"gitId":"cheahTJ"},"content":"My contributions to the project are listed below","lastModifiedDate":"2024-03-05"},{"lineNumber":13,"author":{"gitId":"cheahTJ"},"content":"* **Modify delete feature**: Edited to allow the deletion of an existing contact by NusId. (Pull request #63) ","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"cheahTJ"},"content":" * What it does: Allows the user to delete an existing contact via the NusId instead of the index of contact.","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"cheahTJ"},"content":" * Justification: This allows user to delete their student quickly with their NusId rather than having to find the index.","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"cheahTJ"},"content":"* **Modify edit feature**: Edited to allow the edit of an existing contact in terms of name, phone, email, group and tag. (Pull request #73)","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"cheahTJ"},"content":" * What it does: Allows the user to edit the name, phone, email, group and tag of an existing contact.","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"cheahTJ"},"content":" * Justification: This gives users more flexibility to change their contact information.","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":21,"author":{"gitId":"cheahTJ"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-03-05"},{"lineNumber":22,"author":{"gitId":"cheahTJ"},"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":"2024-03-05"},{"lineNumber":23,"author":{"gitId":"cheahTJ"},"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":"2024-03-05"},{"lineNumber":24,"author":{"gitId":"cheahTJ"},"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":"2024-03-05"},{"lineNumber":25,"author":{"gitId":"cheahTJ"},"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":"2024-03-05"},{"lineNumber":26,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":27,"author":{"gitId":"cheahTJ"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-03-05"},{"lineNumber":28,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":29,"author":{"gitId":"cheahTJ"},"content":"* **Project management**:","lastModifiedDate":"2024-03-05"},{"lineNumber":30,"author":{"gitId":"cheahTJ"},"content":" * Managed milestone `v1.1` deliverables on GitHub","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"cheahTJ"},"content":" * Managed milestone `v1.2` deliverables on GitHub","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"cheahTJ"},"content":" * Contributed issues ","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"cheahTJ"},"content":" * Reviewed and merged PRs","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":35,"author":{"gitId":"cheahTJ"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-03-05"},{"lineNumber":36,"author":{"gitId":"cheahTJ"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-03-05"},{"lineNumber":37,"author":{"gitId":"cheahTJ"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-03-05"},{"lineNumber":38,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":39,"author":{"gitId":"cheahTJ"},"content":"* **Documentation**:","lastModifiedDate":"2024-03-05"},{"lineNumber":40,"author":{"gitId":"cheahTJ"},"content":" * User Guide:","lastModifiedDate":"2024-03-05"},{"lineNumber":41,"author":{"gitId":"cheahTJ"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-03-05"},{"lineNumber":42,"author":{"gitId":"cheahTJ"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-03-05"},{"lineNumber":43,"author":{"gitId":"cheahTJ"},"content":" * Developer Guide:","lastModifiedDate":"2024-03-05"},{"lineNumber":44,"author":{"gitId":"cheahTJ"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-03-05"},{"lineNumber":45,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":46,"author":{"gitId":"cheahTJ"},"content":"* **Community**:","lastModifiedDate":"2024-03-05"},{"lineNumber":47,"author":{"gitId":"cheahTJ"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-03-05"},{"lineNumber":48,"author":{"gitId":"cheahTJ"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-03-05"},{"lineNumber":49,"author":{"gitId":"cheahTJ"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-03-05"},{"lineNumber":50,"author":{"gitId":"cheahTJ"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-03-05"},{"lineNumber":51,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":52,"author":{"gitId":"cheahTJ"},"content":"* **Tools**:","lastModifiedDate":"2024-03-05"},{"lineNumber":53,"author":{"gitId":"cheahTJ"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-03-05"},{"lineNumber":54,"author":{"gitId":"cheahTJ"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-03-05"},{"lineNumber":55,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":56,"author":{"gitId":"cheahTJ"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-03-05"}],"authorContributionMap":{"cheahTJ":56}},{"path":"docs/team/hjuntan.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"cheahTJ"},"content":"---","lastModifiedDate":"2024-03-05"},{"lineNumber":2,"author":{"gitId":"cheahTJ"},"content":" layout: default.md","lastModifiedDate":"2024-03-05"},{"lineNumber":3,"author":{"gitId":"cheahTJ"},"content":" title: \"Tan Hong Jun\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-03-05"},{"lineNumber":4,"author":{"gitId":"cheahTJ"},"content":"---","lastModifiedDate":"2024-03-05"},{"lineNumber":5,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":6,"author":{"gitId":"cheahTJ"},"content":"### Project: AronaPro","lastModifiedDate":"2024-03-05"},{"lineNumber":7,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":8,"author":{"gitId":"cheahTJ"},"content":"AronaPro is a desktop application designed for tech-savvy university Computer Science teaching assistants,","lastModifiedDate":"2024-03-05"},{"lineNumber":9,"author":{"gitId":"cheahTJ"},"content":"enabling them to enjoy an organised and vibrant approach to query, and manage an array of students and professors’","lastModifiedDate":"2024-03-05"},{"lineNumber":10,"author":{"gitId":"cheahTJ"},"content":"contacts via the Command Line Interface (CLI).","lastModifiedDate":"2024-03-05"},{"lineNumber":11,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":12,"author":{"gitId":"cheahTJ"},"content":"My contributions to the project are listed below","lastModifiedDate":"2024-03-05"},{"lineNumber":13,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":14,"author":{"gitId":"cheahTJ"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-03-05"},{"lineNumber":15,"author":{"gitId":"cheahTJ"},"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":"2024-03-05"},{"lineNumber":16,"author":{"gitId":"cheahTJ"},"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":"2024-03-05"},{"lineNumber":17,"author":{"gitId":"cheahTJ"},"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":"2024-03-05"},{"lineNumber":18,"author":{"gitId":"cheahTJ"},"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":"2024-03-05"},{"lineNumber":19,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":20,"author":{"gitId":"cheahTJ"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-03-05"},{"lineNumber":21,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":22,"author":{"gitId":"cheahTJ"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-03-05"},{"lineNumber":23,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":24,"author":{"gitId":"cheahTJ"},"content":"* **Project management**:","lastModifiedDate":"2024-03-05"},{"lineNumber":25,"author":{"gitId":"cheahTJ"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-03-05"},{"lineNumber":26,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":27,"author":{"gitId":"cheahTJ"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-03-05"},{"lineNumber":28,"author":{"gitId":"cheahTJ"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-03-05"},{"lineNumber":29,"author":{"gitId":"cheahTJ"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-03-05"},{"lineNumber":30,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":31,"author":{"gitId":"cheahTJ"},"content":"* **Documentation**:","lastModifiedDate":"2024-03-05"},{"lineNumber":32,"author":{"gitId":"cheahTJ"},"content":" * User Guide:","lastModifiedDate":"2024-03-05"},{"lineNumber":33,"author":{"gitId":"cheahTJ"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-03-05"},{"lineNumber":34,"author":{"gitId":"cheahTJ"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-03-05"},{"lineNumber":35,"author":{"gitId":"cheahTJ"},"content":" * Developer Guide:","lastModifiedDate":"2024-03-05"},{"lineNumber":36,"author":{"gitId":"cheahTJ"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-03-05"},{"lineNumber":37,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":38,"author":{"gitId":"cheahTJ"},"content":"* **Community**:","lastModifiedDate":"2024-03-05"},{"lineNumber":39,"author":{"gitId":"cheahTJ"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-03-05"},{"lineNumber":40,"author":{"gitId":"cheahTJ"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-03-05"},{"lineNumber":41,"author":{"gitId":"cheahTJ"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-03-05"},{"lineNumber":42,"author":{"gitId":"cheahTJ"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-03-05"},{"lineNumber":43,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":44,"author":{"gitId":"cheahTJ"},"content":"* **Tools**:","lastModifiedDate":"2024-03-05"},{"lineNumber":45,"author":{"gitId":"cheahTJ"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-03-05"},{"lineNumber":46,"author":{"gitId":"cheahTJ"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-03-05"},{"lineNumber":47,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":48,"author":{"gitId":"cheahTJ"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-03-05"}],"authorContributionMap":{"cheahTJ":48}},{"path":"docs/team/ragnapop.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"cheahTJ"},"content":"---","lastModifiedDate":"2024-03-05"},{"lineNumber":2,"author":{"gitId":"cheahTJ"},"content":" layout: default.md","lastModifiedDate":"2024-03-05"},{"lineNumber":3,"author":{"gitId":"cheahTJ"},"content":" title: \"Loh Jin Hun\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-03-05"},{"lineNumber":4,"author":{"gitId":"cheahTJ"},"content":"---","lastModifiedDate":"2024-03-05"},{"lineNumber":5,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":6,"author":{"gitId":"cheahTJ"},"content":"### Project: AronaPro","lastModifiedDate":"2024-03-05"},{"lineNumber":7,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":8,"author":{"gitId":"cheahTJ"},"content":"AronaPro is a desktop application designed for tech-savvy university Computer Science teaching assistants,","lastModifiedDate":"2024-03-05"},{"lineNumber":9,"author":{"gitId":"cheahTJ"},"content":"enabling them to enjoy an organised and vibrant approach to query, and manage an array of students and professors’","lastModifiedDate":"2024-03-05"},{"lineNumber":10,"author":{"gitId":"cheahTJ"},"content":"contacts via the Command Line Interface (CLI).","lastModifiedDate":"2024-03-05"},{"lineNumber":11,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":12,"author":{"gitId":"cheahTJ"},"content":"My contributions to the project are listed below","lastModifiedDate":"2024-03-05"},{"lineNumber":13,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":14,"author":{"gitId":"cheahTJ"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-03-05"},{"lineNumber":15,"author":{"gitId":"cheahTJ"},"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":"2024-03-05"},{"lineNumber":16,"author":{"gitId":"cheahTJ"},"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":"2024-03-05"},{"lineNumber":17,"author":{"gitId":"cheahTJ"},"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":"2024-03-05"},{"lineNumber":18,"author":{"gitId":"cheahTJ"},"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":"2024-03-05"},{"lineNumber":19,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":20,"author":{"gitId":"cheahTJ"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-03-05"},{"lineNumber":21,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":22,"author":{"gitId":"cheahTJ"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-03-05"},{"lineNumber":23,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":24,"author":{"gitId":"cheahTJ"},"content":"* **Project management**:","lastModifiedDate":"2024-03-05"},{"lineNumber":25,"author":{"gitId":"cheahTJ"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-03-05"},{"lineNumber":26,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":27,"author":{"gitId":"cheahTJ"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-03-05"},{"lineNumber":28,"author":{"gitId":"cheahTJ"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-03-05"},{"lineNumber":29,"author":{"gitId":"cheahTJ"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-03-05"},{"lineNumber":30,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":31,"author":{"gitId":"cheahTJ"},"content":"* **Documentation**:","lastModifiedDate":"2024-03-05"},{"lineNumber":32,"author":{"gitId":"cheahTJ"},"content":" * User Guide:","lastModifiedDate":"2024-03-05"},{"lineNumber":33,"author":{"gitId":"cheahTJ"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-03-05"},{"lineNumber":34,"author":{"gitId":"cheahTJ"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-03-05"},{"lineNumber":35,"author":{"gitId":"cheahTJ"},"content":" * Developer Guide:","lastModifiedDate":"2024-03-05"},{"lineNumber":36,"author":{"gitId":"cheahTJ"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-03-05"},{"lineNumber":37,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":38,"author":{"gitId":"cheahTJ"},"content":"* **Community**:","lastModifiedDate":"2024-03-05"},{"lineNumber":39,"author":{"gitId":"cheahTJ"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-03-05"},{"lineNumber":40,"author":{"gitId":"cheahTJ"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-03-05"},{"lineNumber":41,"author":{"gitId":"cheahTJ"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-03-05"},{"lineNumber":42,"author":{"gitId":"cheahTJ"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-03-05"},{"lineNumber":43,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":44,"author":{"gitId":"cheahTJ"},"content":"* **Tools**:","lastModifiedDate":"2024-03-05"},{"lineNumber":45,"author":{"gitId":"cheahTJ"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-03-05"},{"lineNumber":46,"author":{"gitId":"cheahTJ"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-03-05"},{"lineNumber":47,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":48,"author":{"gitId":"cheahTJ"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-03-05"}],"authorContributionMap":{"cheahTJ":48}},{"path":"docs/team/rikko1204.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"cheahTJ"},"content":"---","lastModifiedDate":"2024-03-05"},{"lineNumber":2,"author":{"gitId":"cheahTJ"},"content":" layout: default.md","lastModifiedDate":"2024-03-05"},{"lineNumber":3,"author":{"gitId":"cheahTJ"},"content":" title: \"Chen Kuan Min\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-03-05"},{"lineNumber":4,"author":{"gitId":"cheahTJ"},"content":"---","lastModifiedDate":"2024-03-05"},{"lineNumber":5,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":6,"author":{"gitId":"cheahTJ"},"content":"### Project: AronaPro","lastModifiedDate":"2024-03-05"},{"lineNumber":7,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":8,"author":{"gitId":"cheahTJ"},"content":"AronaPro is a desktop application designed for tech-savvy university Computer Science teaching assistants,","lastModifiedDate":"2024-03-05"},{"lineNumber":9,"author":{"gitId":"cheahTJ"},"content":"enabling them to enjoy an organised and vibrant approach to query, and manage an array of students and professors’","lastModifiedDate":"2024-03-05"},{"lineNumber":10,"author":{"gitId":"cheahTJ"},"content":"contacts via the Command Line Interface (CLI).","lastModifiedDate":"2024-03-05"},{"lineNumber":11,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":12,"author":{"gitId":"cheahTJ"},"content":"My contributions to the project are listed below","lastModifiedDate":"2024-03-05"},{"lineNumber":13,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":14,"author":{"gitId":"cheahTJ"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-03-05"},{"lineNumber":15,"author":{"gitId":"cheahTJ"},"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":"2024-03-05"},{"lineNumber":16,"author":{"gitId":"cheahTJ"},"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":"2024-03-05"},{"lineNumber":17,"author":{"gitId":"cheahTJ"},"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":"2024-03-05"},{"lineNumber":18,"author":{"gitId":"cheahTJ"},"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":"2024-03-05"},{"lineNumber":19,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":20,"author":{"gitId":"cheahTJ"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-03-05"},{"lineNumber":21,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":22,"author":{"gitId":"cheahTJ"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-03-05"},{"lineNumber":23,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":24,"author":{"gitId":"cheahTJ"},"content":"* **Project management**:","lastModifiedDate":"2024-03-05"},{"lineNumber":25,"author":{"gitId":"cheahTJ"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-03-05"},{"lineNumber":26,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":27,"author":{"gitId":"cheahTJ"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-03-05"},{"lineNumber":28,"author":{"gitId":"cheahTJ"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-03-05"},{"lineNumber":29,"author":{"gitId":"cheahTJ"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-03-05"},{"lineNumber":30,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":31,"author":{"gitId":"cheahTJ"},"content":"* **Documentation**:","lastModifiedDate":"2024-03-05"},{"lineNumber":32,"author":{"gitId":"cheahTJ"},"content":" * User Guide:","lastModifiedDate":"2024-03-05"},{"lineNumber":33,"author":{"gitId":"cheahTJ"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-03-05"},{"lineNumber":34,"author":{"gitId":"cheahTJ"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-03-05"},{"lineNumber":35,"author":{"gitId":"cheahTJ"},"content":" * Developer Guide:","lastModifiedDate":"2024-03-05"},{"lineNumber":36,"author":{"gitId":"cheahTJ"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-03-05"},{"lineNumber":37,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":38,"author":{"gitId":"cheahTJ"},"content":"* **Community**:","lastModifiedDate":"2024-03-05"},{"lineNumber":39,"author":{"gitId":"cheahTJ"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-03-05"},{"lineNumber":40,"author":{"gitId":"cheahTJ"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-03-05"},{"lineNumber":41,"author":{"gitId":"cheahTJ"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-03-05"},{"lineNumber":42,"author":{"gitId":"cheahTJ"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-03-05"},{"lineNumber":43,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":44,"author":{"gitId":"cheahTJ"},"content":"* **Tools**:","lastModifiedDate":"2024-03-05"},{"lineNumber":45,"author":{"gitId":"cheahTJ"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-03-05"},{"lineNumber":46,"author":{"gitId":"cheahTJ"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-03-05"},{"lineNumber":47,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":48,"author":{"gitId":"cheahTJ"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-03-05"}],"authorContributionMap":{"cheahTJ":48}},{"path":"docs/team/ringoftheking.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"cheahTJ"},"content":"---","lastModifiedDate":"2024-03-05"},{"lineNumber":2,"author":{"gitId":"cheahTJ"},"content":" layout: default.md","lastModifiedDate":"2024-03-05"},{"lineNumber":3,"author":{"gitId":"cheahTJ"},"content":" title: \"Guo YuHao Project Portfolio Page\"","lastModifiedDate":"2024-03-05"},{"lineNumber":4,"author":{"gitId":"cheahTJ"},"content":"---","lastModifiedDate":"2024-03-05"},{"lineNumber":5,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":6,"author":{"gitId":"cheahTJ"},"content":"### Project: AronaPro","lastModifiedDate":"2024-03-05"},{"lineNumber":7,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":8,"author":{"gitId":"cheahTJ"},"content":"AronaPro is a desktop application designed for tech-savvy university Computer Science teaching assistants,","lastModifiedDate":"2024-03-05"},{"lineNumber":9,"author":{"gitId":"cheahTJ"},"content":"enabling them to enjoy an organised and vibrant approach to query, and manage an array of students and professors’","lastModifiedDate":"2024-03-05"},{"lineNumber":10,"author":{"gitId":"cheahTJ"},"content":"contacts via the Command Line Interface (CLI).","lastModifiedDate":"2024-03-05"},{"lineNumber":11,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":12,"author":{"gitId":"cheahTJ"},"content":"My contributions to the project are listed below","lastModifiedDate":"2024-03-05"},{"lineNumber":13,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":14,"author":{"gitId":"cheahTJ"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-03-05"},{"lineNumber":15,"author":{"gitId":"cheahTJ"},"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":"2024-03-05"},{"lineNumber":16,"author":{"gitId":"cheahTJ"},"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":"2024-03-05"},{"lineNumber":17,"author":{"gitId":"cheahTJ"},"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":"2024-03-05"},{"lineNumber":18,"author":{"gitId":"cheahTJ"},"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":"2024-03-05"},{"lineNumber":19,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":20,"author":{"gitId":"cheahTJ"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-03-05"},{"lineNumber":21,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":22,"author":{"gitId":"cheahTJ"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-03-05"},{"lineNumber":23,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":24,"author":{"gitId":"cheahTJ"},"content":"* **Project management**:","lastModifiedDate":"2024-03-05"},{"lineNumber":25,"author":{"gitId":"cheahTJ"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-03-05"},{"lineNumber":26,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":27,"author":{"gitId":"cheahTJ"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-03-05"},{"lineNumber":28,"author":{"gitId":"cheahTJ"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-03-05"},{"lineNumber":29,"author":{"gitId":"cheahTJ"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-03-05"},{"lineNumber":30,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":31,"author":{"gitId":"cheahTJ"},"content":"* **Documentation**:","lastModifiedDate":"2024-03-05"},{"lineNumber":32,"author":{"gitId":"cheahTJ"},"content":" * User Guide:","lastModifiedDate":"2024-03-05"},{"lineNumber":33,"author":{"gitId":"cheahTJ"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-03-05"},{"lineNumber":34,"author":{"gitId":"cheahTJ"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-03-05"},{"lineNumber":35,"author":{"gitId":"cheahTJ"},"content":" * Developer Guide:","lastModifiedDate":"2024-03-05"},{"lineNumber":36,"author":{"gitId":"cheahTJ"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-03-05"},{"lineNumber":37,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":38,"author":{"gitId":"cheahTJ"},"content":"* **Community**:","lastModifiedDate":"2024-03-05"},{"lineNumber":39,"author":{"gitId":"cheahTJ"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-03-05"},{"lineNumber":40,"author":{"gitId":"cheahTJ"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-03-05"},{"lineNumber":41,"author":{"gitId":"cheahTJ"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-03-05"},{"lineNumber":42,"author":{"gitId":"cheahTJ"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-03-05"},{"lineNumber":43,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":44,"author":{"gitId":"cheahTJ"},"content":"* **Tools**:","lastModifiedDate":"2024-03-05"},{"lineNumber":45,"author":{"gitId":"cheahTJ"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-03-05"},{"lineNumber":46,"author":{"gitId":"cheahTJ"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-03-05"},{"lineNumber":47,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":48,"author":{"gitId":"cheahTJ"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-03-05"}],"authorContributionMap":{"cheahTJ":48}},{"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":"Rikko1204"},"content":" public static final String MESSAGE_UNKNOWN_NUSID \u003d \"The NUSID provided does not exist!\";","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"cheahTJ"},"content":" public static final String MESSAGE_NON_EXISTENT_PERSON \u003d \"This person does not exist in the address book\";","lastModifiedDate":"2024-03-13"},{"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":"Ragnapop"},"content":" public static final String MESSAGE_GROUP_PERSON \u003d \"Group has been assigned!\";","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"Ragnapop"},"content":" public static final String MESSAGE_GROUP_PERSON_INVALID \u003d \"This person does not exist in the address book\";","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":25,"author":{"gitId":"RingoftheKing"},"content":" public static final String MESSAGE_AT_LEAST_ONE_FIELD_REQUIRED \u003d","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"RingoftheKing"},"content":" \"Please input at least one identifier (e.g. n/) into the command \\n\";","lastModifiedDate":"2024-03-19"},{"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":"Rikko1204"},"content":" .append(\"; NusId: \")","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"Rikko1204"},"content":" .append(person.getNusId())","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"Rikko1204"},"content":" .append(\"; Schedule: \")","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"Rikko1204"},"content":" .append(person.getSchedule())","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"Rikko1204"},"content":" .append(\"; Remark: \")","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"Rikko1204"},"content":" .append(person.getRemark())","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"hjuntan"},"content":" .append(\"; Tag: \")","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"hjuntan"},"content":" .append(person.getTag())","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"hjuntan"},"content":" .append(\"; Groups: \");","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"hjuntan"},"content":" person.getGroups().forEach(builder::append);","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"cheahTJ":1,"Rikko1204":7,"RingoftheKing":2,"Ragnapop":2,"hjuntan":4,"-":46}},{"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":"hjuntan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GROUP;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":7,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NUSID;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-12"},{"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":"Rikko1204"},"content":" + PREFIX_NUSID + \"NUSID \"","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09"},{"lineNumber":30,"author":{"gitId":"hjuntan"},"content":" + PREFIX_TAG + \"TAG \"","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"hjuntan"},"content":" + \"[\" + PREFIX_GROUP + \"GROUP]...\\n\"","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06"},{"lineNumber":33,"author":{"gitId":"Rikko1204"},"content":" + PREFIX_NUSID + \"E1234567 \"","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09"},{"lineNumber":37,"author":{"gitId":"hjuntan"},"content":" + PREFIX_TAG + \"Student \"","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"hjuntan"},"content":" + PREFIX_GROUP + \"friends \"","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"hjuntan"},"content":" + PREFIX_GROUP + \"owesMoney\";","lastModifiedDate":"2024-03-11"},{"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":{"Rikko1204":3,"hjuntan":6,"-":78}},{"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.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"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":"cheahTJ"},"content":"import seedu.address.model.person.NusId;","lastModifiedDate":"2024-03-13"},{"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":"cheahTJ"},"content":" + \": Deletes the person identified by the NusId used in the displayed person list.\\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"cheahTJ"},"content":" + \"Parameters: NusId (8 digits long, starting with an \u0027E\u0027). \\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"cheahTJ"},"content":" + \"Example: \" + COMMAND_WORD + \" E0123456\";","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Person: %1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"cheahTJ"},"content":" private final NusId nusId;","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"cheahTJ"},"content":" public DeleteCommand(NusId nusId) {","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"cheahTJ"},"content":" this.nusId \u003d nusId;","lastModifiedDate":"2024-03-13"},{"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":"cheahTJ"},"content":" Person personToDelete \u003d lastShownList.stream().filter(person -\u003e person.getNusId().equals(nusId))","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"cheahTJ"},"content":" .findFirst().orElse(null);","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":41,"author":{"gitId":"cheahTJ"},"content":" if (personToDelete \u003d\u003d null) {","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"cheahTJ"},"content":" throw new CommandException(Messages.MESSAGE_NON_EXISTENT_PERSON);","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" model.deletePerson(personToDelete);","lastModifiedDate":"2016-09-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete)));","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (!(other instanceof DeleteCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":61,"author":{"gitId":"cheahTJ"},"content":" return nusId.equals(otherDeleteCommand.nusId);","lastModifiedDate":"2024-03-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"cheahTJ"},"content":" .add(\"targetnusId\", nusId.toString())","lastModifiedDate":"2024-03-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"cheahTJ":13,"-":57}},{"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":"hjuntan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GROUP;","lastModifiedDate":"2024-03-11"},{"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":"2024-03-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.util.CollectionUtil;","lastModifiedDate":"2016-12-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"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-02-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":23,"author":{"gitId":"hjuntan"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26"},{"lineNumber":26,"author":{"gitId":"hjuntan"},"content":"import seedu.address.model.person.NusId;","lastModifiedDate":"2024-03-11"},{"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":"Rikko1204"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"Rikko1204"},"content":"import seedu.address.model.person.Schedule;","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"hjuntan"},"content":"import seedu.address.model.person.Tag;","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26"},{"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":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the person identified \"","lastModifiedDate":"2016-12-26"},{"lineNumber":42,"author":{"gitId":"cheahTJ"},"content":" + \"by the NusId used in the displayed person list. \"","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26"},{"lineNumber":44,"author":{"gitId":"cheahTJ"},"content":" + \"Parameters: NusId (8 digits long, starting with an \u0027E\u0027). \\n \"","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06"},{"lineNumber":46,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":48,"author":{"gitId":"hjuntan"},"content":" + \"[\" + PREFIX_TAG + \"TAG] \"","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"cheahTJ"},"content":" + \"[\" + PREFIX_GROUP + \"GROUP] \\n\"","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"cheahTJ"},"content":" + \"Example: \" + COMMAND_WORD + \" E1234567 \"","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26"},{"lineNumber":55,"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":56,"author":{"gitId":"cheahTJ"},"content":" private final NusId nusId;","lastModifiedDate":"2024-03-19"},{"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":"cheahTJ"},"content":" * @param nusId of the person in the filtered person list to edit","lastModifiedDate":"2024-03-19"},{"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":"cheahTJ"},"content":" public EditCommand(NusId nusId, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"cheahTJ"},"content":" requireNonNull(nusId);","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":67,"author":{"gitId":"cheahTJ"},"content":" this.nusId \u003d nusId;","lastModifiedDate":"2024-03-19"},{"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":"cheahTJ"},"content":" Person personToEdit \u003d lastShownList.stream().filter(person -\u003e person.getNusId().equals(nusId))","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"cheahTJ"},"content":" .findFirst().orElse(null);","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"cheahTJ"},"content":" if (personToEdit \u003d\u003d null) {","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"cheahTJ"},"content":" throw new CommandException(Messages.MESSAGE_NON_EXISTENT_PERSON);","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":84,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26"},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":92,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":95,"author":{"gitId":"hjuntan"},"content":" NusId nusId \u003d personToEdit.getNusId(); // nusId is immutable","lastModifiedDate":"2024-03-11"},{"lineNumber":96,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":97,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21"},{"lineNumber":98,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":99,"author":{"gitId":"cheahTJ"},"content":" Schedule updatedSchedule \u003d editPersonDescriptor.getSchedule()","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"cheahTJ"},"content":" .orElse(personToEdit.getSchedule());; // Edit does not allow editing schedule","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"cheahTJ"},"content":" Remark updatedRemark \u003d editPersonDescriptor.getRemark()","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"cheahTJ"},"content":" .orElse(personToEdit.getRemark()); // Edit does not allow editing remark","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"hjuntan"},"content":" Tag updatedTag \u003d editPersonDescriptor.getTag().orElse(personToEdit.getTag());","lastModifiedDate":"2024-03-11"},{"lineNumber":104,"author":{"gitId":"hjuntan"},"content":" Set\u003cGroup\u003e updatedGroups \u003d editPersonDescriptor.getGroups().orElse(personToEdit.getGroups());","lastModifiedDate":"2024-03-11"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":106,"author":{"gitId":"Rikko1204"},"content":" return new Person(nusId, updatedName, updatedPhone, updatedEmail,","lastModifiedDate":"2024-03-16"},{"lineNumber":107,"author":{"gitId":"Rikko1204"},"content":" updatedTag, updatedGroups, updatedSchedule, updatedRemark);","lastModifiedDate":"2024-03-16"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" return false;","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":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":122,"author":{"gitId":"cheahTJ"},"content":" return nusId.equals(otherEditCommand.nusId)","lastModifiedDate":"2024-03-19"},{"lineNumber":123,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"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":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":129,"author":{"gitId":"cheahTJ"},"content":" .add(\"targetnusId\", nusId.toString())","lastModifiedDate":"2024-03-19"},{"lineNumber":130,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":135,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26"},{"lineNumber":136,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26"},{"lineNumber":137,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":138,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26"},{"lineNumber":139,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21"},{"lineNumber":140,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":141,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":142,"author":{"gitId":"hjuntan"},"content":" private Tag tag;","lastModifiedDate":"2024-03-11"},{"lineNumber":143,"author":{"gitId":"hjuntan"},"content":" private Set\u003cGroup\u003e groups;","lastModifiedDate":"2024-03-11"},{"lineNumber":144,"author":{"gitId":"cheahTJ"},"content":" private Schedule schedule;","lastModifiedDate":"2024-03-19"},{"lineNumber":145,"author":{"gitId":"cheahTJ"},"content":" private Remark remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":147,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":149,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":150,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11"},{"lineNumber":151,"author":{"gitId":"hjuntan"},"content":" * A defensive copy of {@code groups} is used internally.","lastModifiedDate":"2024-03-11"},{"lineNumber":152,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":153,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26"},{"lineNumber":154,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15"},{"lineNumber":155,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15"},{"lineNumber":156,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15"},{"lineNumber":157,"author":{"gitId":"cheahTJ"},"content":" setSchedule(toCopy.schedule);","lastModifiedDate":"2024-03-19"},{"lineNumber":158,"author":{"gitId":"cheahTJ"},"content":" setRemark(toCopy.remark);","lastModifiedDate":"2024-03-19"},{"lineNumber":159,"author":{"gitId":"hjuntan"},"content":" setTag(toCopy.tag);","lastModifiedDate":"2024-03-11"},{"lineNumber":160,"author":{"gitId":"hjuntan"},"content":" setGroups(toCopy.groups);","lastModifiedDate":"2024-03-11"},{"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":"hjuntan"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, tag, groups);","lastModifiedDate":"2024-03-11"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":170,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":171,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21"},{"lineNumber":172,"author":{"gitId":"-"},"content":" this.name \u003d name;","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":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":176,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":177,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21"},{"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 setPhone(Phone phone) {","lastModifiedDate":"2017-06-21"},{"lineNumber":181,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","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\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26"},{"lineNumber":185,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","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 void setEmail(Email email) {","lastModifiedDate":"2017-06-21"},{"lineNumber":189,"author":{"gitId":"-"},"content":" this.email \u003d email;","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 Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":193,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","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":"cheahTJ"},"content":" public void setSchedule(Schedule schedule) {","lastModifiedDate":"2024-03-19"},{"lineNumber":197,"author":{"gitId":"cheahTJ"},"content":" this.schedule \u003d schedule;","lastModifiedDate":"2024-03-19"},{"lineNumber":198,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":199,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":200,"author":{"gitId":"cheahTJ"},"content":" public Optional\u003cSchedule\u003e getSchedule() {","lastModifiedDate":"2024-03-19"},{"lineNumber":201,"author":{"gitId":"cheahTJ"},"content":" return Optional.ofNullable(schedule);","lastModifiedDate":"2024-03-19"},{"lineNumber":202,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":203,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":204,"author":{"gitId":"cheahTJ"},"content":" public void setRemark(Remark remark) {","lastModifiedDate":"2024-03-19"},{"lineNumber":205,"author":{"gitId":"cheahTJ"},"content":" this.remark \u003d remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":206,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":207,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":208,"author":{"gitId":"cheahTJ"},"content":" public Optional\u003cRemark\u003e getRemark() {","lastModifiedDate":"2024-03-19"},{"lineNumber":209,"author":{"gitId":"cheahTJ"},"content":" return Optional.ofNullable(remark);","lastModifiedDate":"2024-03-19"},{"lineNumber":210,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":211,"author":{"gitId":"hjuntan"},"content":" public void setTag(Tag tag) {","lastModifiedDate":"2024-03-11"},{"lineNumber":212,"author":{"gitId":"hjuntan"},"content":" this.tag \u003d tag;","lastModifiedDate":"2024-03-11"},{"lineNumber":213,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":215,"author":{"gitId":"hjuntan"},"content":" public Optional\u003cTag\u003e getTag() {","lastModifiedDate":"2024-03-11"},{"lineNumber":216,"author":{"gitId":"hjuntan"},"content":" return Optional.ofNullable(tag);","lastModifiedDate":"2024-03-11"},{"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":"hjuntan"},"content":" * Sets {@code groups} to this object\u0027s {@code groups}.","lastModifiedDate":"2024-03-11"},{"lineNumber":221,"author":{"gitId":"hjuntan"},"content":" * A defensive copy of {@code groups} is used internally.","lastModifiedDate":"2024-03-11"},{"lineNumber":222,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":223,"author":{"gitId":"hjuntan"},"content":" public void setGroups(Set\u003cGroup\u003e groups) {","lastModifiedDate":"2024-03-11"},{"lineNumber":224,"author":{"gitId":"hjuntan"},"content":" this.groups \u003d (groups !\u003d null) ? new HashSet\u003c\u003e(groups) : null;","lastModifiedDate":"2024-03-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":"hjuntan"},"content":" * Returns an unmodifiable group set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2024-03-11"},{"lineNumber":229,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11"},{"lineNumber":230,"author":{"gitId":"hjuntan"},"content":" * Returns {@code Optional#empty()} if {@code groups} is null.","lastModifiedDate":"2024-03-11"},{"lineNumber":231,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":232,"author":{"gitId":"hjuntan"},"content":" public Optional\u003cSet\u003cGroup\u003e\u003e getGroups() {","lastModifiedDate":"2024-03-11"},{"lineNumber":233,"author":{"gitId":"hjuntan"},"content":" return (groups !\u003d null) ? Optional.of(Collections.unmodifiableSet(groups)) : Optional.empty();","lastModifiedDate":"2024-03-11"},{"lineNumber":234,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":236,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":237,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":238,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":239,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":240,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":242,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":243,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05"},{"lineNumber":244,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":245,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":247,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":248,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":249,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":250,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":251,"author":{"gitId":"hjuntan"},"content":" \u0026\u0026 Objects.equals(tag, otherEditPersonDescriptor.tag)","lastModifiedDate":"2024-03-11"},{"lineNumber":252,"author":{"gitId":"hjuntan"},"content":" \u0026\u0026 Objects.equals(groups, otherEditPersonDescriptor.groups);","lastModifiedDate":"2024-03-11"},{"lineNumber":253,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":261,"author":{"gitId":"hjuntan"},"content":" .add(\"tag\", tag)","lastModifiedDate":"2024-03-11"},{"lineNumber":262,"author":{"gitId":"hjuntan"},"content":" .add(\"groups\", groups)","lastModifiedDate":"2024-03-11"},{"lineNumber":263,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":264,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":266,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"cheahTJ":40,"Rikko1204":4,"hjuntan":30,"-":192}},{"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":"RingoftheKing"},"content":"import seedu.address.model.person.EmailMatchesPredicate;","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"RingoftheKing"},"content":"import seedu.address.model.person.GroupMatchesPredicate;","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"RingoftheKing"},"content":"import seedu.address.model.person.PhoneMatchesPredicate;","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"RingoftheKing"},"content":"import seedu.address.model.person.TagMatchesPredicate;","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Finds and lists all persons in address book whose name contains any of the argument keywords.","lastModifiedDate":"2016-09-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Keyword matching is case insensitive.","lastModifiedDate":"2018-04-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2016-09-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"find\";","lastModifiedDate":"2016-09-22"},{"lineNumber":21,"author":{"gitId":"RingoftheKing"},"content":" // This string is used by Predicates to help them know when a parameter isn\u0027t required.","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"RingoftheKing"},"content":" public static final String NOT_REQUIRED_VALUE \u003d \"$$NOT_REQUIRED$$\";","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":24,"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":25,"author":{"gitId":"-"},"content":" + \"the specified keywords (case-insensitive) and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2018-04-01"},{"lineNumber":26,"author":{"gitId":"-"},"content":" + \"Parameters: KEYWORD [MORE_KEYWORDS]...\\n\"","lastModifiedDate":"2016-09-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" alice bob charlie\";","lastModifiedDate":"2016-09-22"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":29,"author":{"gitId":"RingoftheKing"},"content":" private final NameContainsKeywordsPredicate namePredicate;","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"RingoftheKing"},"content":" private final EmailMatchesPredicate emailPredicate;","lastModifiedDate":"2024-03-15"},{"lineNumber":31,"author":{"gitId":"RingoftheKing"},"content":" private final GroupMatchesPredicate groupPredicate;","lastModifiedDate":"2024-03-15"},{"lineNumber":32,"author":{"gitId":"RingoftheKing"},"content":" private final PhoneMatchesPredicate phonePredicate;","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"RingoftheKing"},"content":" private final TagMatchesPredicate tagPredicate;","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":35,"author":{"gitId":"RingoftheKing"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"RingoftheKing"},"content":" * Creates a FindCommand with predicates initialized with the provided predicates","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"RingoftheKing"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"RingoftheKing"},"content":" * @param n name","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"RingoftheKing"},"content":" * @param e email","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"RingoftheKing"},"content":" * @param g group","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"RingoftheKing"},"content":" * @param p phone","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"RingoftheKing"},"content":" * @param t tag","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"RingoftheKing"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"RingoftheKing"},"content":" public FindCommand(NameContainsKeywordsPredicate n,","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"RingoftheKing"},"content":" EmailMatchesPredicate e,","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"RingoftheKing"},"content":" GroupMatchesPredicate g,","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"RingoftheKing"},"content":" PhoneMatchesPredicate p,","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"RingoftheKing"},"content":" TagMatchesPredicate t) {","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"RingoftheKing"},"content":" namePredicate \u003d n;","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"RingoftheKing"},"content":" emailPredicate \u003d e;","lastModifiedDate":"2024-03-15"},{"lineNumber":51,"author":{"gitId":"RingoftheKing"},"content":" groupPredicate \u003d g;","lastModifiedDate":"2024-03-15"},{"lineNumber":52,"author":{"gitId":"RingoftheKing"},"content":" phonePredicate \u003d p;","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"RingoftheKing"},"content":" tagPredicate \u003d t;","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":59,"author":{"gitId":"RingoftheKing"},"content":" model.updateFilteredPersonList(namePredicate","lastModifiedDate":"2024-03-15"},{"lineNumber":60,"author":{"gitId":"RingoftheKing"},"content":" .and(emailPredicate)","lastModifiedDate":"2024-03-15"},{"lineNumber":61,"author":{"gitId":"RingoftheKing"},"content":" .and(groupPredicate)","lastModifiedDate":"2024-03-15"},{"lineNumber":62,"author":{"gitId":"RingoftheKing"},"content":" .and(phonePredicate)","lastModifiedDate":"2024-03-15"},{"lineNumber":63,"author":{"gitId":"RingoftheKing"},"content":" .and(tagPredicate));","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return new CommandResult(","lastModifiedDate":"2018-04-01"},{"lineNumber":65,"author":{"gitId":"-"},"content":" String.format(Messages.MESSAGE_PERSONS_LISTED_OVERVIEW, model.getFilteredPersonList().size()));","lastModifiedDate":"2018-04-01"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return true;","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":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" if (!(other instanceof FindCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" FindCommand otherFindCommand \u003d (FindCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":80,"author":{"gitId":"RingoftheKing"},"content":" boolean x \u003d namePredicate.equals(otherFindCommand.namePredicate);","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"RingoftheKing"},"content":" boolean y \u003d emailPredicate.equals(otherFindCommand.emailPredicate);","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"RingoftheKing"},"content":" boolean z \u003d groupPredicate.equals(otherFindCommand.groupPredicate);","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"RingoftheKing"},"content":" boolean a \u003d phonePredicate.equals(otherFindCommand.phonePredicate);","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"RingoftheKing"},"content":" boolean b \u003d tagPredicate.equals(otherFindCommand.tagPredicate);","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"RingoftheKing"},"content":" return a \u0026\u0026 b \u0026\u0026 x \u0026\u0026 y \u0026\u0026 z;","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"RingoftheKing"},"content":" .add(\"namePredicate\", namePredicate)","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"RingoftheKing"},"content":" .add(\"phonePredicate\", phonePredicate)","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"RingoftheKing"},"content":" .add(\"emailPredicate\", emailPredicate)","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"RingoftheKing"},"content":" .add(\"tagPredicate\", tagPredicate)","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"RingoftheKing"},"content":" .add(\"groupPredicate\", groupPredicate)","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"RingoftheKing":46,"-":52}},{"path":"src/main/java/seedu/address/logic/commands/GroupCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Ragnapop"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"Ragnapop"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"Ragnapop"},"content":"import static seedu.address.logic.Messages.MESSAGE_GROUP_PERSON_INVALID;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"Ragnapop"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GROUP;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"Ragnapop"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NUSID;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"Ragnapop"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"Ragnapop"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"Ragnapop"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"Ragnapop"},"content":"import java.util.List;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"Ragnapop"},"content":"import java.util.Objects;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"Ragnapop"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"Ragnapop"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"Ragnapop"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"Ragnapop"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"Ragnapop"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"Ragnapop"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"Ragnapop"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"Ragnapop"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"Ragnapop"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"Ragnapop"},"content":"import seedu.address.model.person.NusId;","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"Ragnapop"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"Ragnapop"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"Ragnapop"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"Ragnapop"},"content":"import seedu.address.model.person.Schedule;","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"Ragnapop"},"content":"import seedu.address.model.person.Tag;","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"Ragnapop"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"Ragnapop"},"content":" * assigns a group to an existing person in the address book.","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"Ragnapop"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"Ragnapop"},"content":"public class GroupCommand extends Command {","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"Ragnapop"},"content":" public static final String MESSAGE_GROUP_PERSON_SUCCESS \u003d \"Grouped Person: %1$s\";","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"Ragnapop"},"content":" public static final String COMMAND_WORD \u003d \"group\";","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"Ragnapop"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": assigns the person identified a group\\n\"","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"Ragnapop"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"Ragnapop"},"content":" + \"[\" + PREFIX_NUSID + \"NUSID] \"","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"Ragnapop"},"content":" + \"[\" + PREFIX_GROUP + \"GROUP] \"","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"Ragnapop"},"content":" + \"[\" + PREFIX_TAG + \"TAG] \\n\"","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"Ragnapop"},"content":" + \"Example: \" + COMMAND_WORD + PREFIX_NUSID + \"EXXXXXXX \"","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"Ragnapop"},"content":" + PREFIX_GROUP + \"Class T15 \"","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"Ragnapop"},"content":" + PREFIX_TAG + \"TA\";","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"Ragnapop"},"content":" private final NusId toGroup;","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"Ragnapop"},"content":" private final GroupPersonDescriptor groupPersonDescriptor;","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":56,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"Ragnapop"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"Ragnapop"},"content":" * @param nusid of the person in the filtered person list to group","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"Ragnapop"},"content":" * @param groupPersonDescriptor details to group the person with","lastModifiedDate":"2024-03-13"},{"lineNumber":60,"author":{"gitId":"Ragnapop"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":61,"author":{"gitId":"Ragnapop"},"content":" public GroupCommand(NusId nusid, GroupPersonDescriptor groupPersonDescriptor) {","lastModifiedDate":"2024-03-13"},{"lineNumber":62,"author":{"gitId":"Ragnapop"},"content":" requireNonNull(nusid);","lastModifiedDate":"2024-03-13"},{"lineNumber":63,"author":{"gitId":"Ragnapop"},"content":" toGroup \u003d nusid;","lastModifiedDate":"2024-03-13"},{"lineNumber":64,"author":{"gitId":"Ragnapop"},"content":" this.groupPersonDescriptor \u003d new GroupPersonDescriptor(groupPersonDescriptor);","lastModifiedDate":"2024-03-13"},{"lineNumber":65,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":66,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":67,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":68,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":69,"author":{"gitId":"Ragnapop"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":70,"author":{"gitId":"Ragnapop"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"Ragnapop"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-13"},{"lineNumber":72,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":73,"author":{"gitId":"Ragnapop"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-13"},{"lineNumber":74,"author":{"gitId":"Ragnapop"},"content":" Person personToGroup \u003d lastShownList.stream().filter(person -\u003e person.getNusId().equals(toGroup))","lastModifiedDate":"2024-03-13"},{"lineNumber":75,"author":{"gitId":"Ragnapop"},"content":" .findFirst().orElse(null);","lastModifiedDate":"2024-03-13"},{"lineNumber":76,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":77,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"Ragnapop"},"content":" if (personToGroup \u003d\u003d null) {","lastModifiedDate":"2024-03-13"},{"lineNumber":79,"author":{"gitId":"Ragnapop"},"content":" throw new CommandException(MESSAGE_GROUP_PERSON_INVALID);","lastModifiedDate":"2024-03-13"},{"lineNumber":80,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":81,"author":{"gitId":"Ragnapop"},"content":" Person groupedPerson \u003d createGroupedPerson(personToGroup, groupPersonDescriptor);","lastModifiedDate":"2024-03-13"},{"lineNumber":82,"author":{"gitId":"Ragnapop"},"content":" model.setPerson(personToGroup, groupedPerson);","lastModifiedDate":"2024-03-13"},{"lineNumber":83,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":84,"author":{"gitId":"Ragnapop"},"content":" return new CommandResult(String.format(MESSAGE_GROUP_PERSON_SUCCESS, Messages.format(groupedPerson)));","lastModifiedDate":"2024-03-14"},{"lineNumber":85,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":86,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":87,"author":{"gitId":"Ragnapop"},"content":" private static Person createGroupedPerson(Person personToGroup, GroupPersonDescriptor GroupPersonDescriptor) {","lastModifiedDate":"2024-03-13"},{"lineNumber":88,"author":{"gitId":"Ragnapop"},"content":" assert personToGroup !\u003d null;","lastModifiedDate":"2024-03-13"},{"lineNumber":89,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":90,"author":{"gitId":"Ragnapop"},"content":" NusId nusId \u003d personToGroup.getNusId();","lastModifiedDate":"2024-03-13"},{"lineNumber":91,"author":{"gitId":"Ragnapop"},"content":" Name name \u003d personToGroup.getName();","lastModifiedDate":"2024-03-13"},{"lineNumber":92,"author":{"gitId":"Ragnapop"},"content":" Phone phone \u003d personToGroup.getPhone();","lastModifiedDate":"2024-03-13"},{"lineNumber":93,"author":{"gitId":"Ragnapop"},"content":" Email email \u003d personToGroup.getEmail();","lastModifiedDate":"2024-03-13"},{"lineNumber":94,"author":{"gitId":"Ragnapop"},"content":" Tag updatedTag \u003d GroupPersonDescriptor.getTag().orElse(personToGroup.getTag());","lastModifiedDate":"2024-03-13"},{"lineNumber":95,"author":{"gitId":"Ragnapop"},"content":" Set\u003cGroup\u003e updatedGroups \u003d GroupPersonDescriptor.getGroups().orElse(personToGroup.getGroups());","lastModifiedDate":"2024-03-13"},{"lineNumber":96,"author":{"gitId":"Ragnapop"},"content":" Schedule schedule \u003d personToGroup.getSchedule();","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"Ragnapop"},"content":" Remark remark \u003d personToGroup.getRemark();","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":99,"author":{"gitId":"Ragnapop"},"content":" return new Person(nusId, name, phone, email, updatedTag, updatedGroups, schedule, remark);","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":101,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":102,"author":{"gitId":"Ragnapop"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":103,"author":{"gitId":"Ragnapop"},"content":" public String toString() {","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"Ragnapop"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"Ragnapop"},"content":" .add(\"nusid\", toGroup)","lastModifiedDate":"2024-03-20"},{"lineNumber":106,"author":{"gitId":"Ragnapop"},"content":" .add(\"groupPersonDescriptor\", groupPersonDescriptor)","lastModifiedDate":"2024-03-20"},{"lineNumber":107,"author":{"gitId":"Ragnapop"},"content":" .toString();","lastModifiedDate":"2024-03-20"},{"lineNumber":108,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":109,"author":{"gitId":"Ragnapop"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":110,"author":{"gitId":"Ragnapop"},"content":" * Sets {@code group} to this object\u0027s {@code groups}.","lastModifiedDate":"2024-03-13"},{"lineNumber":111,"author":{"gitId":"Ragnapop"},"content":" * A defensive copy of {@code groups} is used internally.","lastModifiedDate":"2024-03-13"},{"lineNumber":112,"author":{"gitId":"Ragnapop"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":113,"author":{"gitId":"Ragnapop"},"content":" public static class GroupPersonDescriptor {","lastModifiedDate":"2024-03-13"},{"lineNumber":114,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":115,"author":{"gitId":"Ragnapop"},"content":" private NusId nusid;","lastModifiedDate":"2024-03-13"},{"lineNumber":116,"author":{"gitId":"Ragnapop"},"content":" private Set\u003cGroup\u003e groups;","lastModifiedDate":"2024-03-13"},{"lineNumber":117,"author":{"gitId":"Ragnapop"},"content":" private Tag tag;","lastModifiedDate":"2024-03-13"},{"lineNumber":118,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":119,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":120,"author":{"gitId":"Ragnapop"},"content":" public GroupPersonDescriptor() {}","lastModifiedDate":"2024-03-13"},{"lineNumber":121,"author":{"gitId":"Ragnapop"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":122,"author":{"gitId":"Ragnapop"},"content":" * Copy constructor.","lastModifiedDate":"2024-03-13"},{"lineNumber":123,"author":{"gitId":"Ragnapop"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2024-03-13"},{"lineNumber":124,"author":{"gitId":"Ragnapop"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":125,"author":{"gitId":"Ragnapop"},"content":" public GroupPersonDescriptor(GroupPersonDescriptor toCopy) {","lastModifiedDate":"2024-03-13"},{"lineNumber":126,"author":{"gitId":"Ragnapop"},"content":" //setNusId(toCopy.nusid);","lastModifiedDate":"2024-03-13"},{"lineNumber":127,"author":{"gitId":"Ragnapop"},"content":" this.nusid \u003d toCopy.nusid;","lastModifiedDate":"2024-03-13"},{"lineNumber":128,"author":{"gitId":"Ragnapop"},"content":" setGroups(toCopy.groups);","lastModifiedDate":"2024-03-13"},{"lineNumber":129,"author":{"gitId":"Ragnapop"},"content":" setTag(toCopy.tag);","lastModifiedDate":"2024-03-13"},{"lineNumber":130,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":131,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":132,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":133,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":134,"author":{"gitId":"Ragnapop"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":135,"author":{"gitId":"Ragnapop"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2024-03-13"},{"lineNumber":136,"author":{"gitId":"Ragnapop"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":137,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":138,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":139,"author":{"gitId":"Ragnapop"},"content":" public void setNusId(NusId nusid) {","lastModifiedDate":"2024-03-13"},{"lineNumber":140,"author":{"gitId":"Ragnapop"},"content":" this.nusid \u003d nusid;","lastModifiedDate":"2024-03-13"},{"lineNumber":141,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":142,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":143,"author":{"gitId":"Ragnapop"},"content":" public Optional\u003cNusId\u003e getNusId() {","lastModifiedDate":"2024-03-13"},{"lineNumber":144,"author":{"gitId":"Ragnapop"},"content":" return Optional.ofNullable(nusid);","lastModifiedDate":"2024-03-13"},{"lineNumber":145,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":146,"author":{"gitId":"Ragnapop"},"content":" public void setTag(Tag tag) {","lastModifiedDate":"2024-03-13"},{"lineNumber":147,"author":{"gitId":"Ragnapop"},"content":" this.tag \u003d tag;","lastModifiedDate":"2024-03-13"},{"lineNumber":148,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":149,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":150,"author":{"gitId":"Ragnapop"},"content":" public Optional\u003cTag\u003e getTag() {","lastModifiedDate":"2024-03-13"},{"lineNumber":151,"author":{"gitId":"Ragnapop"},"content":" return Optional.ofNullable(tag);","lastModifiedDate":"2024-03-13"},{"lineNumber":152,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":153,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":154,"author":{"gitId":"Ragnapop"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":155,"author":{"gitId":"Ragnapop"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2024-03-13"},{"lineNumber":156,"author":{"gitId":"Ragnapop"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2024-03-13"},{"lineNumber":157,"author":{"gitId":"Ragnapop"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":158,"author":{"gitId":"Ragnapop"},"content":" public void setGroups(Set\u003cGroup\u003e groups) {","lastModifiedDate":"2024-03-13"},{"lineNumber":159,"author":{"gitId":"Ragnapop"},"content":" this.groups \u003d (groups !\u003d null) ? new HashSet\u003c\u003e(groups) : null;","lastModifiedDate":"2024-03-13"},{"lineNumber":160,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":161,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":162,"author":{"gitId":"Ragnapop"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":163,"author":{"gitId":"Ragnapop"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2024-03-13"},{"lineNumber":164,"author":{"gitId":"Ragnapop"},"content":" * if modification is attempted.","lastModifiedDate":"2024-03-13"},{"lineNumber":165,"author":{"gitId":"Ragnapop"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2024-03-13"},{"lineNumber":166,"author":{"gitId":"Ragnapop"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":167,"author":{"gitId":"Ragnapop"},"content":" public Optional\u003cSet\u003cGroup\u003e\u003e getGroups() {","lastModifiedDate":"2024-03-13"},{"lineNumber":168,"author":{"gitId":"Ragnapop"},"content":" return (groups !\u003d null) ? Optional.of(Collections.unmodifiableSet(groups)) : Optional.empty();","lastModifiedDate":"2024-03-13"},{"lineNumber":169,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":170,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":171,"author":{"gitId":"Ragnapop"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":172,"author":{"gitId":"Ragnapop"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-13"},{"lineNumber":173,"author":{"gitId":"Ragnapop"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-13"},{"lineNumber":174,"author":{"gitId":"Ragnapop"},"content":" return true;","lastModifiedDate":"2024-03-13"},{"lineNumber":175,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":176,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":177,"author":{"gitId":"Ragnapop"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-13"},{"lineNumber":178,"author":{"gitId":"Ragnapop"},"content":" if (!(other instanceof GroupCommand.GroupPersonDescriptor)) {","lastModifiedDate":"2024-03-13"},{"lineNumber":179,"author":{"gitId":"Ragnapop"},"content":" return false;","lastModifiedDate":"2024-03-13"},{"lineNumber":180,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":181,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":182,"author":{"gitId":"Ragnapop"},"content":" GroupPersonDescriptor otherGroupPersonDescriptor \u003d (GroupPersonDescriptor) other;","lastModifiedDate":"2024-03-13"},{"lineNumber":183,"author":{"gitId":"Ragnapop"},"content":" return Objects.equals(nusid, otherGroupPersonDescriptor.nusid)","lastModifiedDate":"2024-03-13"},{"lineNumber":184,"author":{"gitId":"Ragnapop"},"content":" \u0026\u0026 Objects.equals(groups, otherGroupPersonDescriptor.groups)","lastModifiedDate":"2024-03-13"},{"lineNumber":185,"author":{"gitId":"Ragnapop"},"content":" \u0026\u0026 Objects.equals(tag, otherGroupPersonDescriptor.tag);","lastModifiedDate":"2024-03-13"},{"lineNumber":186,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":187,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":188,"author":{"gitId":"Ragnapop"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":189,"author":{"gitId":"Ragnapop"},"content":" public String toString() {","lastModifiedDate":"2024-03-13"},{"lineNumber":190,"author":{"gitId":"Ragnapop"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-13"},{"lineNumber":191,"author":{"gitId":"Ragnapop"},"content":" .add(\"nusId\", nusid)","lastModifiedDate":"2024-03-20"},{"lineNumber":192,"author":{"gitId":"Ragnapop"},"content":" .add(\"groups\", groups)","lastModifiedDate":"2024-03-20"},{"lineNumber":193,"author":{"gitId":"Ragnapop"},"content":" .add(\"tag\", tag)","lastModifiedDate":"2024-03-20"},{"lineNumber":194,"author":{"gitId":"Ragnapop"},"content":" .toString();","lastModifiedDate":"2024-03-13"},{"lineNumber":195,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":196,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":197,"author":{"gitId":"Ragnapop"},"content":"}","lastModifiedDate":"2024-03-13"},{"lineNumber":198,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":199,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"Ragnapop":199}},{"path":"src/main/java/seedu/address/logic/commands/ScheduleCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Rikko1204"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"Rikko1204"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_NUSID;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NUSID;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SCHEDULE;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"Rikko1204"},"content":"import java.util.List;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"Rikko1204"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"Rikko1204"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"Rikko1204"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"Rikko1204"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"Rikko1204"},"content":"import seedu.address.model.person.NusId;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"Rikko1204"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"Rikko1204"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"Rikko1204"},"content":"import seedu.address.model.person.Schedule;","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"Rikko1204"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"Rikko1204"},"content":" * Adds a person to the address book.","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"Rikko1204"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"Rikko1204"},"content":"public class ScheduleCommand extends Command {","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"Rikko1204"},"content":" public static final String COMMAND_WORD \u003d \"schedule\";","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"Rikko1204"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Schedule a meeting with a student. \\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"Rikko1204"},"content":" + \"Note: SCHEDULE must be present if REMARK is present. \\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"Rikko1204"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"Rikko1204"},"content":" + PREFIX_NUSID + \"NUSID \"","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"Rikko1204"},"content":" + \"[\" + PREFIX_SCHEDULE + \"SCHEDULE] \"","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"Rikko1204"},"content":" + \"[\" + PREFIX_REMARK + \"REMARK] \\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"Rikko1204"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"Rikko1204"},"content":" + PREFIX_NUSID + \"E1234567 \"","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"Rikko1204"},"content":" + PREFIX_SCHEDULE + \"01-12-2021 \"","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"Rikko1204"},"content":" + PREFIX_REMARK + \"Consultation at 3pm at ComSci 1\";","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"Rikko1204"},"content":" public static final String MESSAGE_ADD_SUCCESS \u003d \"New schedule added with person: %1$s\";","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"Rikko1204"},"content":" public static final String MESSAGE_DELETE_SUCCESS \u003d \"Removed schedule from person: %1$s\";","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"Rikko1204"},"content":" private final NusId nusId;","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"Rikko1204"},"content":" private final Schedule schedule;","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"Rikko1204"},"content":" private final Remark remark;","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"Rikko1204"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"Rikko1204"},"content":" * Creates a ScheduleCommand to schedule a meeting with Person with {@code NusId}","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"Rikko1204"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"Rikko1204"},"content":" public ScheduleCommand(NusId nusId, Schedule schedule, Remark remark) {","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"Rikko1204"},"content":" requireAllNonNull(nusId, schedule, remark);","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"Rikko1204"},"content":" this.nusId \u003d nusId;","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"Rikko1204"},"content":" this.schedule \u003d schedule;","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"Rikko1204"},"content":" this.remark \u003d remark;","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"Rikko1204"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"Rikko1204"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"Rikko1204"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"Rikko1204"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"Rikko1204"},"content":" Person personToEdit \u003d lastShownList.stream().filter(person -\u003e person.getNusId().equals(nusId))","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"Rikko1204"},"content":" .findFirst().orElse(null);","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"Rikko1204"},"content":" if (personToEdit \u003d\u003d null) {","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"Rikko1204"},"content":" throw new CommandException(MESSAGE_UNKNOWN_NUSID);","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"Rikko1204"},"content":" Person editedPerson \u003d new Person(personToEdit.getNusId(), personToEdit.getName(), personToEdit.getPhone(),","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"Rikko1204"},"content":" personToEdit.getEmail(), personToEdit.getTag(), personToEdit.getGroups(), schedule, remark);","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"Rikko1204"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"Rikko1204"},"content":" return new CommandResult(generateSuccessMessage(editedPerson));","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"Rikko1204"},"content":" private String generateSuccessMessage(Person editedPerson) {","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"Rikko1204"},"content":" String message \u003d !schedule.date.isEmpty() ? MESSAGE_ADD_SUCCESS : MESSAGE_DELETE_SUCCESS;","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"Rikko1204"},"content":" return String.format(message, Messages.format(editedPerson));","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"Rikko1204"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"Rikko1204"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"Rikko1204"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"Rikko1204"},"content":" return true;","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":87,"author":{"gitId":"Rikko1204"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-16"},{"lineNumber":88,"author":{"gitId":"Rikko1204"},"content":" if (!(other instanceof ScheduleCommand)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":89,"author":{"gitId":"Rikko1204"},"content":" return false;","lastModifiedDate":"2024-03-16"},{"lineNumber":90,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":91,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":92,"author":{"gitId":"Rikko1204"},"content":" ScheduleCommand otherScheduleCommand \u003d (ScheduleCommand) other;","lastModifiedDate":"2024-03-16"},{"lineNumber":93,"author":{"gitId":"Rikko1204"},"content":" return nusId.equals(otherScheduleCommand.nusId)","lastModifiedDate":"2024-03-16"},{"lineNumber":94,"author":{"gitId":"Rikko1204"},"content":" \u0026\u0026 schedule.equals(otherScheduleCommand.schedule)","lastModifiedDate":"2024-03-16"},{"lineNumber":95,"author":{"gitId":"Rikko1204"},"content":" \u0026\u0026 remark.equals(otherScheduleCommand.remark);","lastModifiedDate":"2024-03-16"},{"lineNumber":96,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":97,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":98,"author":{"gitId":"Rikko1204"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":99,"author":{"gitId":"Rikko1204"},"content":" public String toString() {","lastModifiedDate":"2024-03-16"},{"lineNumber":100,"author":{"gitId":"Rikko1204"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-16"},{"lineNumber":101,"author":{"gitId":"Rikko1204"},"content":" .add(\"nusId\", nusId)","lastModifiedDate":"2024-03-16"},{"lineNumber":102,"author":{"gitId":"Rikko1204"},"content":" .add(\"schedule\", schedule)","lastModifiedDate":"2024-03-16"},{"lineNumber":103,"author":{"gitId":"Rikko1204"},"content":" .add(\"remark\", remark)","lastModifiedDate":"2024-03-16"},{"lineNumber":104,"author":{"gitId":"Rikko1204"},"content":" .toString();","lastModifiedDate":"2024-03-16"},{"lineNumber":105,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":106,"author":{"gitId":"Rikko1204"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"Rikko1204":106}},{"path":"src/main/java/seedu/address/logic/commands/ViewCommand.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":"hjuntan"},"content":"public class ViewCommand extends Command {","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"hjuntan"},"content":" public static final String COMMAND_WORD \u003d \"view\";","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"hjuntan"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Here are all your contacts!\";","lastModifiedDate":"2024-03-20"},{"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":{"hjuntan":3,"-":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":"hjuntan"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"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":{"hjuntan":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":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05"},{"lineNumber":5,"author":{"gitId":"hjuntan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GROUP;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":7,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NUSID;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":16,"author":{"gitId":"hjuntan"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-03-17"},{"lineNumber":19,"author":{"gitId":"hjuntan"},"content":"import seedu.address.model.person.NusId;","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-03-17"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-03-17"},{"lineNumber":22,"author":{"gitId":"Rikko1204"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"Rikko1204"},"content":"import seedu.address.model.person.Schedule;","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"hjuntan"},"content":"import seedu.address.model.person.Tag;","lastModifiedDate":"2024-03-11"},{"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":"Rikko1204"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NUSID, PREFIX_NAME, PREFIX_PHONE,","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"Rikko1204"},"content":" PREFIX_EMAIL, PREFIX_TAG, PREFIX_GROUP);","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":41,"author":{"gitId":"Rikko1204"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NUSID, PREFIX_NAME, PREFIX_TAG, PREFIX_PHONE, PREFIX_EMAIL)","lastModifiedDate":"2024-03-12"},{"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":"Rikko1204"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NUSID, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_TAG);","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"Rikko1204"},"content":" NusId nusId \u003d ParserUtil.parseNusId(argMultimap.getValue(PREFIX_NUSID).get());","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":49,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":50,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":51,"author":{"gitId":"hjuntan"},"content":" Tag tag \u003d ParserUtil.parseTag(argMultimap.getValue(PREFIX_TAG).get());","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"Rikko1204"},"content":" Schedule schedule \u003d new Schedule(\"\");","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"Rikko1204"},"content":" Remark remark \u003d new Remark(\"\");","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"hjuntan"},"content":" Set\u003cGroup\u003e groupList \u003d ParserUtil.parseGroups(argMultimap.getAllValues(PREFIX_GROUP));","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":58,"author":{"gitId":"Rikko1204"},"content":" Person person \u003d new Person(nusId, name, phone, email, tag, groupList, schedule, remark);","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17"},{"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":"2017-03-17"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17"},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":67,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17"},{"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":{"Rikko1204":12,"hjuntan":6,"-":53}},{"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":"Ragnapop"},"content":"import seedu.address.logic.commands.GroupCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":20,"author":{"gitId":"Rikko1204"},"content":"import seedu.address.logic.commands.ScheduleCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"hjuntan"},"content":"import seedu.address.logic.commands.ViewCommand;","lastModifiedDate":"2024-03-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":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":73,"author":{"gitId":"Ragnapop"},"content":" case GroupCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-13"},{"lineNumber":74,"author":{"gitId":"Ragnapop"},"content":" return new GroupCommandParser().parse(arguments);","lastModifiedDate":"2024-03-13"},{"lineNumber":75,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":76,"author":{"gitId":"hjuntan"},"content":" case ViewCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"hjuntan"},"content":" return new ViewCommand();","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":85,"author":{"gitId":"Rikko1204"},"content":" case ScheduleCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"Rikko1204"},"content":" return new ScheduleCommandParser().parse(arguments);","lastModifiedDate":"2024-03-16"},{"lineNumber":87,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"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":{"Rikko1204":4,"Ragnapop":4,"hjuntan":3,"-":83}},{"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":"RingoftheKing"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-07-14"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-03-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Stores mapping of prefixes to their respective arguments.","lastModifiedDate":"2017-03-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Each key may be associated with multiple argument values.","lastModifiedDate":"2017-03-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Values for a given key are stored in a list, and the insertion ordering is maintained.","lastModifiedDate":"2017-03-08"},{"lineNumber":18,"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":19,"author":{"gitId":"-"},"content":" * can be inserted multiple times for the same prefix.","lastModifiedDate":"2017-03-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class ArgumentMultimap {","lastModifiedDate":"2017-03-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /** Prefixes mapped to their respective arguments**/","lastModifiedDate":"2017-03-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final Map\u003cPrefix, List\u003cString\u003e\u003e argMultimap \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2017-03-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Associates the specified argument value with {@code prefix} key in this map.","lastModifiedDate":"2017-03-08"},{"lineNumber":28,"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":29,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @param prefix Prefix key with which the specified argument value is to be associated","lastModifiedDate":"2017-03-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * @param argValue Argument value to be associated with the specified prefix key","lastModifiedDate":"2017-03-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void put(Prefix prefix, String argValue) {","lastModifiedDate":"2017-03-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" List\u003cString\u003e argValues \u003d getAllValues(prefix);","lastModifiedDate":"2017-03-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" argValues.add(argValue);","lastModifiedDate":"2017-03-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" argMultimap.put(prefix, argValues);","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":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Returns the last value of {@code prefix}.","lastModifiedDate":"2017-03-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public Optional\u003cString\u003e getValue(Prefix prefix) {","lastModifiedDate":"2017-03-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" List\u003cString\u003e values \u003d getAllValues(prefix);","lastModifiedDate":"2017-03-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return values.isEmpty() ? Optional.empty() : Optional.of(values.get(values.size() - 1));","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":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Returns all values of {@code prefix}.","lastModifiedDate":"2017-03-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * If the prefix does not exist or has no values, this will return an empty list.","lastModifiedDate":"2017-03-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Modifying the returned list will not affect the underlying data structure of the ArgumentMultimap.","lastModifiedDate":"2017-03-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public List\u003cString\u003e getAllValues(Prefix prefix) {","lastModifiedDate":"2017-03-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" if (!argMultimap.containsKey(prefix)) {","lastModifiedDate":"2017-03-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e();","lastModifiedDate":"2017-03-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(argMultimap.get(prefix));","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":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Returns the preamble (text before the first valid prefix). Trims any leading/trailing spaces.","lastModifiedDate":"2017-03-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public String getPreamble() {","lastModifiedDate":"2017-03-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return getValue(new Prefix(\"\")).orElse(\"\");","lastModifiedDate":"2017-03-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * Throws a {@code ParseException} if any of the prefixes given in {@code prefixes} appeared more than","lastModifiedDate":"2023-07-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * once among the arguments.","lastModifiedDate":"2023-07-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void verifyNoDuplicatePrefixesFor(Prefix... prefixes) throws ParseException {","lastModifiedDate":"2023-07-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":" Prefix[] duplicatedPrefixes \u003d Stream.of(prefixes).distinct()","lastModifiedDate":"2023-07-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":" .filter(prefix -\u003e argMultimap.containsKey(prefix) \u0026\u0026 argMultimap.get(prefix).size() \u003e 1)","lastModifiedDate":"2023-07-14"},{"lineNumber":73,"author":{"gitId":"-"},"content":" .toArray(Prefix[]::new);","lastModifiedDate":"2023-07-14"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":" if (duplicatedPrefixes.length \u003e 0) {","lastModifiedDate":"2023-07-14"},{"lineNumber":76,"author":{"gitId":"-"},"content":" throw new ParseException(Messages.getErrorMessageForDuplicatePrefixes(duplicatedPrefixes));","lastModifiedDate":"2023-07-14"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":79,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"RingoftheKing"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"RingoftheKing"},"content":" * Throws a {@code ParseException} if none of the {@code prefixes} to be checked against has appeared","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"RingoftheKing"},"content":" * in the arguments","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"RingoftheKing"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"RingoftheKing"},"content":" public void verifyAtLeastOnePrefixExists(Prefix... prefixes) throws ParseException {","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"RingoftheKing"},"content":" Prefix[] identifiedPrefixes \u003d Stream.of(prefixes)","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"RingoftheKing"},"content":" .filter(argMultimap::containsKey)","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"RingoftheKing"},"content":" .toArray(Prefix[]::new);","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"RingoftheKing"},"content":" if (identifiedPrefixes.length \u003d\u003d 0) {","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"RingoftheKing"},"content":" throw new ParseException(Messages.MESSAGE_AT_LEAST_ONE_FIELD_REQUIRED + FindCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-19"},{"lineNumber":91,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":92,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-08"}],"authorContributionMap":{"RingoftheKing":15,"-":78}},{"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":"-"},"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":"RingoftheKing"},"content":" .flatMap(","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"RingoftheKing"},"content":" prefix -\u003e findPrefixPositions(argsString, prefix).stream())","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":" * {@see findAllPrefixPositions}","lastModifiedDate":"2017-03-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":48,"author":{"gitId":"-"},"content":" private static List\u003cPrefixPosition\u003e findPrefixPositions(String argsString, Prefix prefix) {","lastModifiedDate":"2017-03-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" List\u003cPrefixPosition\u003e positions \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2016-10-16"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":51,"author":{"gitId":"-"},"content":" int prefixPosition \u003d findPrefixPosition(argsString, prefix.getPrefix(), 0);","lastModifiedDate":"2017-05-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" while (prefixPosition !\u003d -1) {","lastModifiedDate":"2017-05-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" PrefixPosition extendedPrefix \u003d new PrefixPosition(prefix, prefixPosition);","lastModifiedDate":"2017-05-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" positions.add(extendedPrefix);","lastModifiedDate":"2016-10-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" prefixPosition \u003d findPrefixPosition(argsString, prefix.getPrefix(), prefixPosition);","lastModifiedDate":"2017-05-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return positions;","lastModifiedDate":"2016-10-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Returns the index of the first occurrence of {@code prefix} in","lastModifiedDate":"2017-05-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * {@code argsString} starting from index {@code fromIndex}. An occurrence","lastModifiedDate":"2017-05-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * is valid if there is a whitespace before {@code prefix}. Returns -1 if no","lastModifiedDate":"2017-05-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * such occurrence can be found.","lastModifiedDate":"2017-05-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * E.g if {@code argsString} \u003d \"e/hip/900\", {@code prefix} \u003d \"p/\" and","lastModifiedDate":"2017-05-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * {@code fromIndex} \u003d 0, this method returns -1 as there are no valid","lastModifiedDate":"2017-05-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * occurrences of \"p/\" with whitespace before it. However, if","lastModifiedDate":"2017-05-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * {@code argsString} \u003d \"e/hi p/900\", {@code prefix} \u003d \"p/\" and","lastModifiedDate":"2017-05-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * {@code fromIndex} \u003d 0, this method returns 5.","lastModifiedDate":"2017-05-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" private static int findPrefixPosition(String argsString, String prefix, int fromIndex) {","lastModifiedDate":"2017-05-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" int prefixIndex \u003d argsString.indexOf(\" \" + prefix, fromIndex);","lastModifiedDate":"2017-05-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return prefixIndex \u003d\u003d -1 ? -1","lastModifiedDate":"2017-05-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" : prefixIndex + 1; // +1 as offset for whitespace","lastModifiedDate":"2017-05-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Extracts prefixes and their argument values, and returns an {@code ArgumentMultimap} object that maps the","lastModifiedDate":"2017-03-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * extracted prefixes to their respective arguments. Prefixes are extracted based on their zero-based positions in","lastModifiedDate":"2017-03-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * {@code argsString}.","lastModifiedDate":"2017-03-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * @param argsString Arguments string of the form: {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2017-03-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * @param prefixPositions Zero-based positions of all prefixes in {@code argsString}","lastModifiedDate":"2017-03-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * @return ArgumentMultimap object that maps prefixes to their arguments","lastModifiedDate":"2017-03-08"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":88,"author":{"gitId":"-"},"content":" private static ArgumentMultimap extractArguments(String argsString, List\u003cPrefixPosition\u003e prefixPositions) {","lastModifiedDate":"2017-03-20"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":90,"author":{"gitId":"-"},"content":" // Sort by start position","lastModifiedDate":"2016-10-16"},{"lineNumber":91,"author":{"gitId":"-"},"content":" prefixPositions.sort((prefix1, prefix2) -\u003e prefix1.getStartPosition() - prefix2.getStartPosition());","lastModifiedDate":"2016-10-16"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":93,"author":{"gitId":"-"},"content":" // Insert a PrefixPosition to represent the preamble","lastModifiedDate":"2016-10-16"},{"lineNumber":94,"author":{"gitId":"-"},"content":" PrefixPosition preambleMarker \u003d new PrefixPosition(new Prefix(\"\"), 0);","lastModifiedDate":"2016-10-16"},{"lineNumber":95,"author":{"gitId":"-"},"content":" prefixPositions.add(0, preambleMarker);","lastModifiedDate":"2016-10-16"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":97,"author":{"gitId":"-"},"content":" // Add a dummy PrefixPosition to represent the end of the string","lastModifiedDate":"2016-10-16"},{"lineNumber":98,"author":{"gitId":"-"},"content":" PrefixPosition endPositionMarker \u003d new PrefixPosition(new Prefix(\"\"), argsString.length());","lastModifiedDate":"2016-10-16"},{"lineNumber":99,"author":{"gitId":"-"},"content":" prefixPositions.add(endPositionMarker);","lastModifiedDate":"2016-10-16"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":101,"author":{"gitId":"-"},"content":" // Map prefixes to their argument values (if any)","lastModifiedDate":"2017-03-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d new ArgumentMultimap();","lastModifiedDate":"2017-03-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" for (int i \u003d 0; i \u003c prefixPositions.size() - 1; i++) {","lastModifiedDate":"2016-10-16"},{"lineNumber":104,"author":{"gitId":"-"},"content":" // Extract and store prefixes and their arguments","lastModifiedDate":"2017-03-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Prefix argPrefix \u003d prefixPositions.get(i).getPrefix();","lastModifiedDate":"2017-03-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":" String argValue \u003d extractArgumentValue(argsString, prefixPositions.get(i), prefixPositions.get(i + 1));","lastModifiedDate":"2016-10-16"},{"lineNumber":107,"author":{"gitId":"-"},"content":" argMultimap.put(argPrefix, argValue);","lastModifiedDate":"2017-03-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":110,"author":{"gitId":"-"},"content":" return argMultimap;","lastModifiedDate":"2017-03-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":113,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * Returns the trimmed value of the argument in the arguments string specified by {@code currentPrefixPosition}.","lastModifiedDate":"2017-03-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * The end position of the value is determined by {@code nextPrefixPosition}.","lastModifiedDate":"2017-03-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":117,"author":{"gitId":"-"},"content":" private static String extractArgumentValue(String argsString,","lastModifiedDate":"2017-03-20"},{"lineNumber":118,"author":{"gitId":"-"},"content":" PrefixPosition currentPrefixPosition,","lastModifiedDate":"2016-10-16"},{"lineNumber":119,"author":{"gitId":"-"},"content":" PrefixPosition nextPrefixPosition) {","lastModifiedDate":"2016-10-16"},{"lineNumber":120,"author":{"gitId":"-"},"content":" Prefix prefix \u003d currentPrefixPosition.getPrefix();","lastModifiedDate":"2016-10-16"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":122,"author":{"gitId":"-"},"content":" int valueStartPos \u003d currentPrefixPosition.getStartPosition() + prefix.getPrefix().length();","lastModifiedDate":"2016-10-16"},{"lineNumber":123,"author":{"gitId":"-"},"content":" String value \u003d argsString.substring(valueStartPos, nextPrefixPosition.getStartPosition());","lastModifiedDate":"2016-10-16"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":125,"author":{"gitId":"-"},"content":" return value.trim();","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":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":129,"author":{"gitId":"-"},"content":" * Represents a prefix\u0027s position in an arguments string.","lastModifiedDate":"2017-03-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":131,"author":{"gitId":"-"},"content":" private static class PrefixPosition {","lastModifiedDate":"2017-03-20"},{"lineNumber":132,"author":{"gitId":"-"},"content":" private int startPosition;","lastModifiedDate":"2016-10-19"},{"lineNumber":133,"author":{"gitId":"-"},"content":" private final Prefix prefix;","lastModifiedDate":"2016-10-19"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":135,"author":{"gitId":"-"},"content":" PrefixPosition(Prefix prefix, int startPosition) {","lastModifiedDate":"2016-10-19"},{"lineNumber":136,"author":{"gitId":"-"},"content":" this.prefix \u003d prefix;","lastModifiedDate":"2016-10-19"},{"lineNumber":137,"author":{"gitId":"-"},"content":" this.startPosition \u003d startPosition;","lastModifiedDate":"2016-10-19"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":140,"author":{"gitId":"-"},"content":" int getStartPosition() {","lastModifiedDate":"2016-10-19"},{"lineNumber":141,"author":{"gitId":"-"},"content":" return startPosition;","lastModifiedDate":"2018-08-14"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":144,"author":{"gitId":"-"},"content":" Prefix getPrefix() {","lastModifiedDate":"2016-10-19"},{"lineNumber":145,"author":{"gitId":"-"},"content":" return prefix;","lastModifiedDate":"2018-08-14"},{"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-19"},{"lineNumber":149,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-16"}],"authorContributionMap":{"RingoftheKing":2,"-":147}},{"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":"Rikko1204"},"content":" public static final Prefix PREFIX_NUSID \u003d new Prefix(\"id/\");","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"hjuntan"},"content":" public static final Prefix PREFIX_GROUP \u003d new Prefix(\"g/\");","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"Rikko1204"},"content":" public static final Prefix PREFIX_SCHEDULE \u003d new Prefix(\"s/\");","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"Rikko1204"},"content":" public static final Prefix PREFIX_REMARK \u003d new Prefix(\"r/\");","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"Rikko1204":3,"hjuntan":1,"-":15}},{"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.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":"cheahTJ"},"content":"import seedu.address.model.person.NusId;","lastModifiedDate":"2024-03-13"},{"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":"-"},"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":"2017-03-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":21,"author":{"gitId":"cheahTJ"},"content":" NusId nusId \u003d ParserUtil.parseNusId(args);","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"cheahTJ"},"content":" return new DeleteCommand(nusId);","lastModifiedDate":"2024-03-13"},{"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":{"cheahTJ":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":"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":"hjuntan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GROUP;","lastModifiedDate":"2024-03-11"},{"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":"2024-03-11"},{"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.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-01-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":19,"author":{"gitId":"hjuntan"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"cheahTJ"},"content":"import seedu.address.model.person.NusId;","lastModifiedDate":"2024-03-19"},{"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":"hjuntan"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_TAG, PREFIX_GROUP);","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":37,"author":{"gitId":"cheahTJ"},"content":" //Index index;","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"cheahTJ"},"content":" NusId nusId;","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":41,"author":{"gitId":"cheahTJ"},"content":" nusId \u003d ParserUtil.parseNusId(argMultimap.getPreamble());","lastModifiedDate":"2024-03-19"},{"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":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"hjuntan"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_TAG);","lastModifiedDate":"2024-03-11"},{"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":"hjuntan"},"content":" if (argMultimap.getValue(PREFIX_TAG).isPresent()) {","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"hjuntan"},"content":" editPersonDescriptor.setTag(ParserUtil.parseTag(argMultimap.getValue(PREFIX_TAG).get()));","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":63,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":64,"author":{"gitId":"hjuntan"},"content":" parseGroupsForEdit(argMultimap.getAllValues(PREFIX_GROUP)).ifPresent(editPersonDescriptor::setGroups);","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":70,"author":{"gitId":"cheahTJ"},"content":" return new EditCommand(nusId, editPersonDescriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":74,"author":{"gitId":"hjuntan"},"content":" * Parses {@code Collection\u003cString\u003e groups} into a {@code Set\u003cGroup\u003e} if {@code groups} is non-empty.","lastModifiedDate":"2024-03-11"},{"lineNumber":75,"author":{"gitId":"hjuntan"},"content":" * If {@code groups} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2024-03-11"},{"lineNumber":76,"author":{"gitId":"hjuntan"},"content":" * {@code Set\u003cGroup\u003e} containing zero groups.","lastModifiedDate":"2024-03-11"},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":78,"author":{"gitId":"hjuntan"},"content":" private Optional\u003cSet\u003cGroup\u003e\u003e parseGroupsForEdit(Collection\u003cString\u003e groups) throws ParseException {","lastModifiedDate":"2024-03-11"},{"lineNumber":79,"author":{"gitId":"hjuntan"},"content":" assert groups !\u003d null;","lastModifiedDate":"2024-03-11"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":81,"author":{"gitId":"hjuntan"},"content":" if (groups.isEmpty()) {","lastModifiedDate":"2024-03-11"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":84,"author":{"gitId":"hjuntan"},"content":" Collection\u003cString\u003e groupSet \u003d groups.size() \u003d\u003d 1 \u0026\u0026 groups.contains(\"\") ? Collections.emptySet() : groups;","lastModifiedDate":"2024-03-11"},{"lineNumber":85,"author":{"gitId":"hjuntan"},"content":" return Optional.of(ParserUtil.parseGroups(groupSet));","lastModifiedDate":"2024-03-11"},{"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"}],"authorContributionMap":{"cheahTJ":6,"Ragnapop":1,"hjuntan":15,"-":66}},{"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":"RingoftheKing"},"content":"import static seedu.address.logic.commands.FindCommand.NOT_REQUIRED_VALUE;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"RingoftheKing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"RingoftheKing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GROUP;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"RingoftheKing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"RingoftheKing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"RingoftheKing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-01-26"},{"lineNumber":11,"author":{"gitId":"RingoftheKing"},"content":"import java.util.List;","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":15,"author":{"gitId":"RingoftheKing"},"content":"import seedu.address.model.person.EmailMatchesPredicate;","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"RingoftheKing"},"content":"import seedu.address.model.person.GroupMatchesPredicate;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"RingoftheKing"},"content":"import seedu.address.model.person.PhoneMatchesPredicate;","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"RingoftheKing"},"content":"import seedu.address.model.person.TagMatchesPredicate;","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new FindCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class FindCommandParser implements Parser\u003cFindCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the FindCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * and returns a FindCommand object for execution.","lastModifiedDate":"2019-05-11"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public FindCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":32,"author":{"gitId":"RingoftheKing"},"content":" ArgumentMultimap argumentMultimap \u003d","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"RingoftheKing"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_TAG, PREFIX_GROUP);","lastModifiedDate":"2024-03-15"},{"lineNumber":34,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"RingoftheKing"},"content":" argumentMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_TAG);","lastModifiedDate":"2024-03-15"},{"lineNumber":36,"author":{"gitId":"RingoftheKing"},"content":" argumentMultimap.verifyAtLeastOnePrefixExists(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_TAG,","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"RingoftheKing"},"content":" PREFIX_GROUP);","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"RingoftheKing"},"content":" // Problems: Can\u0027t create Objects unless proper regex used.","lastModifiedDate":"2024-03-15"},{"lineNumber":39,"author":{"gitId":"RingoftheKing"},"content":" // Solution: Don\u0027t create objects","lastModifiedDate":"2024-03-15"},{"lineNumber":40,"author":{"gitId":"RingoftheKing"},"content":" String nameToMatch \u003d argumentMultimap.getValue(PREFIX_NAME).orElse(NOT_REQUIRED_VALUE);","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"RingoftheKing"},"content":" String phoneToMatch \u003d argumentMultimap.getValue(PREFIX_PHONE).orElse(NOT_REQUIRED_VALUE);","lastModifiedDate":"2024-03-15"},{"lineNumber":42,"author":{"gitId":"RingoftheKing"},"content":" String emailToMatch \u003d argumentMultimap.getValue(PREFIX_EMAIL).orElse(NOT_REQUIRED_VALUE);","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"RingoftheKing"},"content":" String tagToMatch \u003d argumentMultimap.getValue(PREFIX_TAG).orElse(NOT_REQUIRED_VALUE);","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"RingoftheKing"},"content":" List\u003cString\u003e groupToMatch \u003d argumentMultimap.getAllValues(PREFIX_GROUP);","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":47,"author":{"gitId":"RingoftheKing"},"content":" String[] nameKeywords \u003d nameToMatch.split(\"\\\\s+\");","lastModifiedDate":"2024-03-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":49,"author":{"gitId":"RingoftheKing"},"content":" return new FindCommand(new NameContainsKeywordsPredicate(Arrays.asList(nameKeywords)),","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"RingoftheKing"},"content":" new EmailMatchesPredicate(emailToMatch),","lastModifiedDate":"2024-03-15"},{"lineNumber":51,"author":{"gitId":"RingoftheKing"},"content":" new GroupMatchesPredicate(groupToMatch),","lastModifiedDate":"2024-03-15"},{"lineNumber":52,"author":{"gitId":"RingoftheKing"},"content":" new PhoneMatchesPredicate(phoneToMatch),","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"RingoftheKing"},"content":" new TagMatchesPredicate(tagToMatch));","lastModifiedDate":"2024-03-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"RingoftheKing":31,"-":25}},{"path":"src/main/java/seedu/address/logic/parser/GroupCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Ragnapop"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"Ragnapop"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"Ragnapop"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"Ragnapop"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GROUP;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"Ragnapop"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NUSID;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"Ragnapop"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"Ragnapop"},"content":"import java.util.Collection;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"Ragnapop"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"Ragnapop"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"Ragnapop"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"Ragnapop"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"Ragnapop"},"content":"import seedu.address.logic.commands.GroupCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"Ragnapop"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"Ragnapop"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"Ragnapop"},"content":"import seedu.address.model.person.NusId;","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"Ragnapop"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"Ragnapop"},"content":" * Parses input arguments and creates a new GroupCommand object","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"Ragnapop"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"Ragnapop"},"content":"public class GroupCommandParser implements Parser\u003cGroupCommand\u003e {","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"Ragnapop"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"Ragnapop"},"content":" * Parses the given {@code String} of arguments in the context of the GroupCommand","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"Ragnapop"},"content":" * and returns an GroupCommand object for execution.","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"Ragnapop"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"Ragnapop"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"Ragnapop"},"content":" public GroupCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"Ragnapop"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"Ragnapop"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"Ragnapop"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NUSID, PREFIX_GROUP, PREFIX_TAG);","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"Ragnapop"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NUSID)","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"Ragnapop"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"Ragnapop"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, GroupCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"Ragnapop"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NUSID, PREFIX_GROUP, PREFIX_TAG);","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"Ragnapop"},"content":" NusId nusid \u003d ParserUtil.parseNusId(argMultimap.getValue(PREFIX_NUSID).get());","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"Ragnapop"},"content":" GroupCommand.GroupPersonDescriptor groupPersonDescriptor \u003d new GroupCommand.GroupPersonDescriptor();","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"Ragnapop"},"content":" if (argMultimap.getValue(PREFIX_NUSID).isPresent()) {","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"Ragnapop"},"content":" groupPersonDescriptor.setNusId(ParserUtil.parseNusId(argMultimap.getValue(PREFIX_NUSID).get()));","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"Ragnapop"},"content":" if (argMultimap.getValue(PREFIX_TAG).isPresent()) {","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"Ragnapop"},"content":" groupPersonDescriptor.setTag(ParserUtil.parseTag(argMultimap.getValue(PREFIX_TAG).get()));","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":56,"author":{"gitId":"Ragnapop"},"content":" parseGroupsForGroup(argMultimap.getAllValues(PREFIX_GROUP)).ifPresent(groupPersonDescriptor::setGroups);","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"Ragnapop"},"content":" return new GroupCommand(nusid, groupPersonDescriptor);","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":60,"author":{"gitId":"Ragnapop"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-03-13"},{"lineNumber":61,"author":{"gitId":"Ragnapop"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-03-13"},{"lineNumber":62,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":63,"author":{"gitId":"Ragnapop"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":64,"author":{"gitId":"Ragnapop"},"content":" * Parses {@code Collection\u003cString\u003e groups} into a {@code Set\u003cGroup\u003e} if {@code groups} is non-empty.","lastModifiedDate":"2024-03-13"},{"lineNumber":65,"author":{"gitId":"Ragnapop"},"content":" * If {@code groups} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2024-03-13"},{"lineNumber":66,"author":{"gitId":"Ragnapop"},"content":" * {@code Set\u003cGroup\u003e} containing zero groups.","lastModifiedDate":"2024-03-13"},{"lineNumber":67,"author":{"gitId":"Ragnapop"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":68,"author":{"gitId":"Ragnapop"},"content":" private Optional\u003cSet\u003cGroup\u003e\u003e parseGroupsForGroup(Collection\u003cString\u003e groups) throws ParseException {","lastModifiedDate":"2024-03-13"},{"lineNumber":69,"author":{"gitId":"Ragnapop"},"content":" assert groups !\u003d null;","lastModifiedDate":"2024-03-13"},{"lineNumber":70,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"Ragnapop"},"content":" if (groups.isEmpty()) {","lastModifiedDate":"2024-03-13"},{"lineNumber":72,"author":{"gitId":"Ragnapop"},"content":" return Optional.empty();","lastModifiedDate":"2024-03-13"},{"lineNumber":73,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":74,"author":{"gitId":"Ragnapop"},"content":" Collection\u003cString\u003e groupSet \u003d groups.size() \u003d\u003d 1 \u0026\u0026 groups.contains(\"\") ? Collections.emptySet() : groups;","lastModifiedDate":"2024-03-13"},{"lineNumber":75,"author":{"gitId":"Ragnapop"},"content":" return Optional.of(ParserUtil.parseGroups(groupSet));","lastModifiedDate":"2024-03-13"},{"lineNumber":76,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":77,"author":{"gitId":"Ragnapop"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"Ragnapop":77}},{"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":"hjuntan"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11"},{"lineNumber":15,"author":{"gitId":"Rikko1204"},"content":"import seedu.address.model.person.NusId;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-02-11"},{"lineNumber":17,"author":{"gitId":"Rikko1204"},"content":"import seedu.address.model.person.Schedule;","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"hjuntan"},"content":"import seedu.address.model.person.Tag;","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":20,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02"},{"lineNumber":37,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":42,"author":{"gitId":"Rikko1204"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"Rikko1204"},"content":" * Parses a {@code String nusId} into a {@code NusId}.","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"Rikko1204"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"Rikko1204"},"content":" *","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"Rikko1204"},"content":" * @throws ParseException if the given {@code nusId} is invalid.","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"Rikko1204"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"Rikko1204"},"content":" public static NusId parseNusId(String nusId) throws ParseException {","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"Rikko1204"},"content":" requireNonNull(nusId);","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"Rikko1204"},"content":" String trimmedNusId \u003d nusId.trim();","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"Rikko1204"},"content":" if (!NusId.isValidNusId(trimmedNusId)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"Rikko1204"},"content":" throw new ParseException(NusId.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"Rikko1204"},"content":" return new NusId(trimmedNusId);","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":64,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29"},{"lineNumber":65,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29"},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":67,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":75,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":79,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30"},{"lineNumber":80,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":81,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":82,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":88,"author":{"gitId":"hjuntan"},"content":" * Parses a {@code String tag} into an {@code Tag}.","lastModifiedDate":"2024-03-11"},{"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":"hjuntan"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2024-03-11"},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":93,"author":{"gitId":"hjuntan"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2024-03-11"},{"lineNumber":94,"author":{"gitId":"hjuntan"},"content":" requireNonNull(tag);","lastModifiedDate":"2024-03-11"},{"lineNumber":95,"author":{"gitId":"hjuntan"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2024-03-11"},{"lineNumber":96,"author":{"gitId":"hjuntan"},"content":" if (!Tag.isValidTag(trimmedTag)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":97,"author":{"gitId":"hjuntan"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-11"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":99,"author":{"gitId":"hjuntan"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2024-03-11"},{"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 email} into an {@code Email}.","lastModifiedDate":"2017-05-30"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":105,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":107,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":109,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":110,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":111,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":112,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":114,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","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":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":118,"author":{"gitId":"hjuntan"},"content":" * Parses a {@code String group} into a {@code Group}.","lastModifiedDate":"2024-03-11"},{"lineNumber":119,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":120,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":121,"author":{"gitId":"hjuntan"},"content":" * @throws ParseException if the given {@code group} is invalid.","lastModifiedDate":"2024-03-11"},{"lineNumber":122,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":123,"author":{"gitId":"hjuntan"},"content":" public static Group parseGroup(String group) throws ParseException {","lastModifiedDate":"2024-03-11"},{"lineNumber":124,"author":{"gitId":"hjuntan"},"content":" requireNonNull(group);","lastModifiedDate":"2024-03-11"},{"lineNumber":125,"author":{"gitId":"hjuntan"},"content":" String trimmedGroup \u003d group.trim();","lastModifiedDate":"2024-03-11"},{"lineNumber":126,"author":{"gitId":"hjuntan"},"content":" if (!Group.isValidGroupName(trimmedGroup)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":127,"author":{"gitId":"hjuntan"},"content":" throw new ParseException(Group.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-11"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":129,"author":{"gitId":"hjuntan"},"content":" return new Group(trimmedGroup);","lastModifiedDate":"2024-03-11"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":133,"author":{"gitId":"hjuntan"},"content":" * Parses {@code Collection\u003cString\u003e groups} into a {@code Set\u003cGroup\u003e}.","lastModifiedDate":"2024-03-11"},{"lineNumber":134,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":135,"author":{"gitId":"hjuntan"},"content":" public static Set\u003cGroup\u003e parseGroups(Collection\u003cString\u003e groups) throws ParseException {","lastModifiedDate":"2024-03-11"},{"lineNumber":136,"author":{"gitId":"hjuntan"},"content":" requireNonNull(groups);","lastModifiedDate":"2024-03-11"},{"lineNumber":137,"author":{"gitId":"hjuntan"},"content":" final Set\u003cGroup\u003e groupSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-11"},{"lineNumber":138,"author":{"gitId":"hjuntan"},"content":" for (String groupName : groups) {","lastModifiedDate":"2024-03-11"},{"lineNumber":139,"author":{"gitId":"hjuntan"},"content":" groupSet.add(parseGroup(groupName));","lastModifiedDate":"2024-03-11"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":141,"author":{"gitId":"hjuntan"},"content":" return groupSet;","lastModifiedDate":"2024-03-11"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":143,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":144,"author":{"gitId":"Rikko1204"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":145,"author":{"gitId":"Rikko1204"},"content":" * Parses a {@code String schedule} into a {@code Schedule}.","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"Rikko1204"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":147,"author":{"gitId":"Rikko1204"},"content":" * @throws ParseException if the given {@code schedule} is invalid.","lastModifiedDate":"2024-03-17"},{"lineNumber":148,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":149,"author":{"gitId":"Rikko1204"},"content":" public static Schedule parseSchedule(String schedule) throws ParseException {","lastModifiedDate":"2024-03-16"},{"lineNumber":150,"author":{"gitId":"Rikko1204"},"content":" if (schedule \u003d\u003d \"\") {","lastModifiedDate":"2024-03-16"},{"lineNumber":151,"author":{"gitId":"Rikko1204"},"content":" return new Schedule(schedule);","lastModifiedDate":"2024-03-16"},{"lineNumber":152,"author":{"gitId":"Rikko1204"},"content":" } else if (!Schedule.isValidSchedule(schedule)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":153,"author":{"gitId":"Rikko1204"},"content":" throw new ParseException(Schedule.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":154,"author":{"gitId":"Rikko1204"},"content":" } else {","lastModifiedDate":"2024-03-16"},{"lineNumber":155,"author":{"gitId":"Rikko1204"},"content":" return new Schedule(schedule);","lastModifiedDate":"2024-03-16"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":158,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"Rikko1204":29,"Ragnapop":1,"hjuntan":25,"-":103}},{"path":"src/main/java/seedu/address/logic/parser/ScheduleCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Rikko1204"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"Rikko1204"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NUSID;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SCHEDULE;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"Rikko1204"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"Rikko1204"},"content":"import seedu.address.logic.commands.ScheduleCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"Rikko1204"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"Rikko1204"},"content":"import seedu.address.model.person.NusId;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"Rikko1204"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"Rikko1204"},"content":"import seedu.address.model.person.Schedule;","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"Rikko1204"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"Rikko1204"},"content":" * Parses input arguments and creates a new ScheduleCommand object","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"Rikko1204"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"Rikko1204"},"content":"public class ScheduleCommandParser implements Parser\u003cScheduleCommand\u003e {","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"Rikko1204"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"Rikko1204"},"content":" * Parses the given {@code String} of arguments in the context of the ScheduleCommand","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"Rikko1204"},"content":" * and returns an ScheduleCommand object for execution.","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"Rikko1204"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"Rikko1204"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"Rikko1204"},"content":" public ScheduleCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"Rikko1204"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"Rikko1204"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args,","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"Rikko1204"},"content":" PREFIX_NUSID, PREFIX_SCHEDULE, PREFIX_REMARK);","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"Rikko1204"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NUSID)","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"Rikko1204"},"content":" || !argMultimap.getPreamble().isEmpty()","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"Rikko1204"},"content":" || (arePrefixesPresent(argMultimap, PREFIX_REMARK)","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"Rikko1204"},"content":" \u0026\u0026 !arePrefixesPresent(argMultimap, PREFIX_SCHEDULE))) {","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"Rikko1204"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, ScheduleCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"Rikko1204"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NUSID, PREFIX_SCHEDULE, PREFIX_REMARK);","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"Rikko1204"},"content":" NusId nusId \u003d ParserUtil.parseNusId(argMultimap.getValue(PREFIX_NUSID).get());","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"Rikko1204"},"content":" Schedule schedule \u003d ParserUtil.parseSchedule(argMultimap.getValue(PREFIX_SCHEDULE).orElse(\"\"));","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"Rikko1204"},"content":" String remark \u003d argMultimap.getValue(PREFIX_REMARK).orElse(\"\");","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"Rikko1204"},"content":" return new ScheduleCommand(nusId, schedule, new Remark(remark));","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"Rikko1204"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"Rikko1204"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"Rikko1204"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"Rikko1204":49}},{"path":"src/main/java/seedu/address/model/group/Group.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"hjuntan"},"content":"package seedu.address.model.group;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"hjuntan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"hjuntan"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"hjuntan"},"content":"/**","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"hjuntan"},"content":" * Represents a Group in the address book.","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"hjuntan"},"content":" * Guarantees: immutable; name is valid as declared in {@link #isValidGroupName(String)}","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"hjuntan"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"hjuntan"},"content":"public class Group {","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"Ragnapop"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Names should only contain alphanumeric characters and spaces,\"","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"Ragnapop"},"content":" + \" and it should not be blank\";","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"hjuntan"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\p{Alnum}+\";","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"hjuntan"},"content":" public final String groupName;","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"hjuntan"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"hjuntan"},"content":" * Constructs a {@code Group}.","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"hjuntan"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"hjuntan"},"content":" * @param groupName A valid group name.","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"hjuntan"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"hjuntan"},"content":" public Group(String groupName) {","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"hjuntan"},"content":" requireNonNull(groupName);","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"hjuntan"},"content":" checkArgument(isValidGroupName(groupName), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"hjuntan"},"content":" this.groupName \u003d groupName;","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"hjuntan"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"hjuntan"},"content":" * Returns true if a given string is a valid group name.","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"hjuntan"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"hjuntan"},"content":" public static boolean isValidGroupName(String test) {","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"hjuntan"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"hjuntan"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"hjuntan"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"hjuntan"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"hjuntan"},"content":" return true;","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"hjuntan"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"hjuntan"},"content":" if (!(other instanceof Group)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"hjuntan"},"content":" return false;","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"hjuntan"},"content":" Group otherGroup \u003d (Group) other;","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"hjuntan"},"content":" return groupName.equals(otherGroup.groupName);","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"hjuntan"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"hjuntan"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"hjuntan"},"content":" return groupName.hashCode();","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"hjuntan"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"hjuntan"},"content":" * Format state as text for viewing.","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"hjuntan"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"hjuntan"},"content":" public String toString() {","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"hjuntan"},"content":" return \u0027[\u0027 + groupName + \u0027]\u0027;","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"hjuntan"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"Ragnapop":2,"hjuntan":61}},{"path":"src/main/java/seedu/address/model/person/EmailMatchesPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"RingoftheKing"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"RingoftheKing"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"RingoftheKing"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"RingoftheKing"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"RingoftheKing"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"RingoftheKing"},"content":" * Tests that a {@code Person}\u0027s {@code Email} matches the keyword given","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"RingoftheKing"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"RingoftheKing"},"content":"public class EmailMatchesPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"RingoftheKing"},"content":" private final String keyword;","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"RingoftheKing"},"content":" public EmailMatchesPredicate(String keyword) {","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"RingoftheKing"},"content":" this.keyword \u003d keyword;","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"RingoftheKing"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"RingoftheKing"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"RingoftheKing"},"content":" if (keyword.equals(FindCommand.NOT_REQUIRED_VALUE)) {","lastModifiedDate":"2024-03-15"},{"lineNumber":21,"author":{"gitId":"RingoftheKing"},"content":" return true;","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"RingoftheKing"},"content":" } else {","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"RingoftheKing"},"content":" return person.getEmail().value.toLowerCase().contains(keyword.trim().toLowerCase());","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"RingoftheKing"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"RingoftheKing"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"RingoftheKing"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"RingoftheKing"},"content":" return true;","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"RingoftheKing"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"RingoftheKing"},"content":" if (!(other instanceof EmailMatchesPredicate)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"RingoftheKing"},"content":" return false;","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"RingoftheKing"},"content":" EmailMatchesPredicate e \u003d (EmailMatchesPredicate) other;","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"RingoftheKing"},"content":" return keyword.equals(e.keyword);","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"RingoftheKing"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"RingoftheKing"},"content":" public String toString() {","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"RingoftheKing"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"RingoftheKing"},"content":" .add(\"emailKeyword\", keyword)","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"RingoftheKing"},"content":" .toString();","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"RingoftheKing"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"RingoftheKing":48}},{"path":"src/main/java/seedu/address/model/person/GroupMatchesPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"RingoftheKing"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"RingoftheKing"},"content":"import java.util.List;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"RingoftheKing"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"RingoftheKing"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"RingoftheKing"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"RingoftheKing"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"RingoftheKing"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"RingoftheKing"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"RingoftheKing"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"RingoftheKing"},"content":" * Tests if a keyword matches any {@code Person}\u0027s {@code Groups}","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"RingoftheKing"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"RingoftheKing"},"content":"public class GroupMatchesPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"RingoftheKing"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"RingoftheKing"},"content":" public GroupMatchesPredicate(List\u003cString\u003e s) {","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"RingoftheKing"},"content":" keywords \u003d s;","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"RingoftheKing"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"RingoftheKing"},"content":" * Returns if the person is in ALL the groups provided","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"RingoftheKing"},"content":" * in the keywords based on an EXACT match.","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"RingoftheKing"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"RingoftheKing"},"content":" * @param person the person we are concerned with","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"RingoftheKing"},"content":" * @return if this person has the groups we are searching for","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"RingoftheKing"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"RingoftheKing"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"RingoftheKing"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"RingoftheKing"},"content":" // Empty set of keywords means we accept any person regardless of their group","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"RingoftheKing"},"content":" if (keywords.isEmpty() || keywords.contains(FindCommand.NOT_REQUIRED_VALUE)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"RingoftheKing"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"RingoftheKing"},"content":" Set\u003cGroup\u003e groups \u003d person.getGroups();","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"RingoftheKing"},"content":" Set\u003cString\u003e groupNames \u003d groups.stream().map(x -\u003e x.groupName).collect(Collectors.toSet());","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"RingoftheKing"},"content":" boolean containsAllKeywords \u003d true;","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"RingoftheKing"},"content":" for (String k : keywords) {","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"RingoftheKing"},"content":" if (!groupNames.contains(k)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"RingoftheKing"},"content":" containsAllKeywords \u003d false;","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"RingoftheKing"},"content":" break;","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"RingoftheKing"},"content":" return containsAllKeywords;","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"RingoftheKing"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"RingoftheKing"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"RingoftheKing"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"RingoftheKing"},"content":" return true;","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"RingoftheKing"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"RingoftheKing"},"content":" if (!(other instanceof GroupMatchesPredicate)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"RingoftheKing"},"content":" return false;","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"RingoftheKing"},"content":" GroupMatchesPredicate e \u003d (GroupMatchesPredicate) other;","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"RingoftheKing"},"content":" return keywords.equals(e.keywords);","lastModifiedDate":"2024-03-15"},{"lineNumber":63,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"RingoftheKing"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"RingoftheKing"},"content":" public String toString() {","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"RingoftheKing"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"RingoftheKing"},"content":" .add(\"groupKeywords\", keywords)","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"RingoftheKing"},"content":" .toString();","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"RingoftheKing"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"RingoftheKing":71}},{"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":"RingoftheKing"},"content":"import static seedu.address.logic.commands.FindCommand.NOT_REQUIRED_VALUE;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-06-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Tests that a {@code Person}\u0027s {@code Name} matches any of the keywords given.","lastModifiedDate":"2018-01-10"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class NameContainsKeywordsPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2018-01-10"},{"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":"-"},"content":" public NameContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2017-06-12"},{"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":"RingoftheKing"},"content":" if (keywords.contains(NOT_REQUIRED_VALUE)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"RingoftheKing"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"-"},"content":" return keywords.stream()","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" .anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(person.getName().fullName, keyword));","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-12"},{"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 NameContainsKeywordsPredicate)) {","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":" NameContainsKeywordsPredicate otherNameContainsKeywordsPredicate \u003d (NameContainsKeywordsPredicate) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return keywords.equals(otherNameContainsKeywordsPredicate.keywords);","lastModifiedDate":"2023-07-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"RingoftheKing"},"content":" return new ToStringBuilder(this).add(\"nameKeywords\", keywords).toString();","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"RingoftheKing":6,"-":43}},{"path":"src/main/java/seedu/address/model/person/NusId.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"cheahTJ"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-06"},{"lineNumber":2,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":3,"author":{"gitId":"cheahTJ"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-06"},{"lineNumber":4,"author":{"gitId":"cheahTJ"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-06"},{"lineNumber":5,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":6,"author":{"gitId":"cheahTJ"},"content":"/**","lastModifiedDate":"2024-03-06"},{"lineNumber":7,"author":{"gitId":"cheahTJ"},"content":" * Represents a Person\u0027s Nusid in the address book.","lastModifiedDate":"2024-03-06"},{"lineNumber":8,"author":{"gitId":"cheahTJ"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidNusId(String)}","lastModifiedDate":"2024-03-06"},{"lineNumber":9,"author":{"gitId":"cheahTJ"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":10,"author":{"gitId":"cheahTJ"},"content":"public class NusId {","lastModifiedDate":"2024-03-06"},{"lineNumber":11,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":12,"author":{"gitId":"cheahTJ"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"NusID is of the form EXXXXXXX, and it should not be blank\";","lastModifiedDate":"2024-03-06"},{"lineNumber":13,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":14,"author":{"gitId":"cheahTJ"},"content":" /*","lastModifiedDate":"2024-03-06"},{"lineNumber":15,"author":{"gitId":"cheahTJ"},"content":" * Ensures that the input nusid is of the form: EXXXXXXX","lastModifiedDate":"2024-03-06"},{"lineNumber":16,"author":{"gitId":"cheahTJ"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":17,"author":{"gitId":"hjuntan"},"content":" public static final String VALIDATION_REGEX \u003d \"^E\\\\d{7}\";","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":19,"author":{"gitId":"cheahTJ"},"content":" public final String value;","lastModifiedDate":"2024-03-06"},{"lineNumber":20,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":21,"author":{"gitId":"cheahTJ"},"content":" /**","lastModifiedDate":"2024-03-06"},{"lineNumber":22,"author":{"gitId":"cheahTJ"},"content":" * Constructs an {@code Nusid}.","lastModifiedDate":"2024-03-06"},{"lineNumber":23,"author":{"gitId":"cheahTJ"},"content":" *","lastModifiedDate":"2024-03-06"},{"lineNumber":24,"author":{"gitId":"cheahTJ"},"content":" * @param nusid A valid nusid.","lastModifiedDate":"2024-03-06"},{"lineNumber":25,"author":{"gitId":"cheahTJ"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":26,"author":{"gitId":"cheahTJ"},"content":" public NusId(String nusid) {","lastModifiedDate":"2024-03-06"},{"lineNumber":27,"author":{"gitId":"cheahTJ"},"content":" requireNonNull(nusid);","lastModifiedDate":"2024-03-06"},{"lineNumber":28,"author":{"gitId":"cheahTJ"},"content":" checkArgument(isValidNusId(nusid), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-06"},{"lineNumber":29,"author":{"gitId":"cheahTJ"},"content":" value \u003d nusid;","lastModifiedDate":"2024-03-06"},{"lineNumber":30,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":31,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":32,"author":{"gitId":"cheahTJ"},"content":" /**","lastModifiedDate":"2024-03-06"},{"lineNumber":33,"author":{"gitId":"cheahTJ"},"content":" * Returns true if a given string is a valid nusid.","lastModifiedDate":"2024-03-06"},{"lineNumber":34,"author":{"gitId":"cheahTJ"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":35,"author":{"gitId":"cheahTJ"},"content":" public static boolean isValidNusId(String test) {","lastModifiedDate":"2024-03-06"},{"lineNumber":36,"author":{"gitId":"cheahTJ"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-06"},{"lineNumber":37,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":38,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":39,"author":{"gitId":"cheahTJ"},"content":" @Override","lastModifiedDate":"2024-03-06"},{"lineNumber":40,"author":{"gitId":"cheahTJ"},"content":" public String toString() {","lastModifiedDate":"2024-03-06"},{"lineNumber":41,"author":{"gitId":"cheahTJ"},"content":" return value;","lastModifiedDate":"2024-03-06"},{"lineNumber":42,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":43,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":44,"author":{"gitId":"cheahTJ"},"content":" @Override","lastModifiedDate":"2024-03-06"},{"lineNumber":45,"author":{"gitId":"cheahTJ"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-06"},{"lineNumber":46,"author":{"gitId":"cheahTJ"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-06"},{"lineNumber":47,"author":{"gitId":"cheahTJ"},"content":" return true;","lastModifiedDate":"2024-03-06"},{"lineNumber":48,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":49,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":50,"author":{"gitId":"cheahTJ"},"content":" if (!(other instanceof NusId)) {","lastModifiedDate":"2024-03-06"},{"lineNumber":51,"author":{"gitId":"cheahTJ"},"content":" return false;","lastModifiedDate":"2024-03-06"},{"lineNumber":52,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":53,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":54,"author":{"gitId":"cheahTJ"},"content":" NusId otherNusid \u003d (NusId) other;","lastModifiedDate":"2024-03-06"},{"lineNumber":55,"author":{"gitId":"cheahTJ"},"content":" return value.equals(otherNusid.value);","lastModifiedDate":"2024-03-06"},{"lineNumber":56,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":57,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":58,"author":{"gitId":"cheahTJ"},"content":" @Override","lastModifiedDate":"2024-03-06"},{"lineNumber":59,"author":{"gitId":"cheahTJ"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-06"},{"lineNumber":60,"author":{"gitId":"cheahTJ"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-06"},{"lineNumber":61,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":62,"author":{"gitId":"cheahTJ"},"content":"}","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"cheahTJ":61,"hjuntan":1}},{"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":"hjuntan"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-11"},{"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":"hjuntan"},"content":" private final NusId nusId;","lastModifiedDate":"2024-03-11"},{"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":"hjuntan"},"content":" private final Tag tag;","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"hjuntan"},"content":" private final Set\u003cGroup\u003e groups \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"Rikko1204"},"content":" private final Schedule schedule;","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"Rikko1204"},"content":" private final Remark remark;","lastModifiedDate":"2024-03-16"},{"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":"Rikko1204"},"content":" public Person(NusId nusId, Name name, Phone phone, Email email, Tag tag, Set\u003cGroup\u003e groups,","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"Rikko1204"},"content":" Schedule schedule, Remark remark) {","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"Rikko1204"},"content":" requireAllNonNull(nusId, name, phone, email, tag, groups, schedule, remark);","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"hjuntan"},"content":" this.nusId \u003d nusId;","lastModifiedDate":"2024-03-11"},{"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":"hjuntan"},"content":" this.tag \u003d tag;","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"hjuntan"},"content":" this.groups.addAll(groups);","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"Rikko1204"},"content":" this.schedule \u003d schedule;","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"Rikko1204"},"content":" this.remark \u003d remark;","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return email;","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":"hjuntan"},"content":" public Tag getTag() {","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"hjuntan"},"content":" return tag;","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":63,"author":{"gitId":"hjuntan"},"content":" public NusId getNusId() {","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"hjuntan"},"content":" return nusId;","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":66,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"Rikko1204"},"content":" public Schedule getSchedule() {","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"Rikko1204"},"content":" return schedule;","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"Rikko1204"},"content":" public Remark getRemark() {","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"Rikko1204"},"content":" return remark;","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07"},{"lineNumber":76,"author":{"gitId":"hjuntan"},"content":" * Returns an immutable group set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2024-03-11"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07"},{"lineNumber":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07"},{"lineNumber":79,"author":{"gitId":"hjuntan"},"content":" public Set\u003cGroup\u003e getGroups() {","lastModifiedDate":"2024-03-11"},{"lineNumber":80,"author":{"gitId":"hjuntan"},"content":" return Collections.unmodifiableSet(groups);","lastModifiedDate":"2024-03-11"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":84,"author":{"gitId":"Rikko1204"},"content":" * Returns true if both persons have the same nusId.","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19"},{"lineNumber":93,"author":{"gitId":"Rikko1204"},"content":" \u0026\u0026 otherPerson.getNusId().equals(getNusId());","lastModifiedDate":"2024-03-12"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","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":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":103,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":106,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10"},{"lineNumber":108,"author":{"gitId":"-"},"content":" return false;","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":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10"},{"lineNumber":112,"author":{"gitId":"Rikko1204"},"content":" // A person\u0027s identity does not depend on schedule or remark","lastModifiedDate":"2024-03-16"},{"lineNumber":113,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":114,"author":{"gitId":"Rikko1204"},"content":" \u0026\u0026 nusId.equals(otherPerson.nusId)","lastModifiedDate":"2024-03-12"},{"lineNumber":115,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":117,"author":{"gitId":"hjuntan"},"content":" \u0026\u0026 tag.equals(otherPerson.tag)","lastModifiedDate":"2024-03-11"},{"lineNumber":118,"author":{"gitId":"hjuntan"},"content":" \u0026\u0026 groups.equals(otherPerson.groups);","lastModifiedDate":"2024-03-11"},{"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 int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":123,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":124,"author":{"gitId":"Rikko1204"},"content":" return Objects.hash(nusId, name, phone, email, tag, groups, schedule, remark);","lastModifiedDate":"2024-03-16"},{"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 String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":129,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":130,"author":{"gitId":"hjuntan"},"content":" .add(\"nusId\", nusId)","lastModifiedDate":"2024-03-11"},{"lineNumber":131,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":134,"author":{"gitId":"hjuntan"},"content":" .add(\"tag\", tag)","lastModifiedDate":"2024-03-11"},{"lineNumber":135,"author":{"gitId":"hjuntan"},"content":" .add(\"groups\", groups)","lastModifiedDate":"2024-03-11"},{"lineNumber":136,"author":{"gitId":"Rikko1204"},"content":" .add(\"schedule\", schedule)","lastModifiedDate":"2024-03-16"},{"lineNumber":137,"author":{"gitId":"Rikko1204"},"content":" .add(\"remark\", remark)","lastModifiedDate":"2024-03-16"},{"lineNumber":138,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":141,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"Rikko1204":20,"hjuntan":21,"-":100}},{"path":"src/main/java/seedu/address/model/person/PhoneMatchesPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"RingoftheKing"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"RingoftheKing"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"RingoftheKing"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"RingoftheKing"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"RingoftheKing"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"RingoftheKing"},"content":" * Tests if a {@code Person}\u0027s {@code Phone} matches with the number given","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"RingoftheKing"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"RingoftheKing"},"content":"public class PhoneMatchesPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"RingoftheKing"},"content":" private final String numToMatch;","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"RingoftheKing"},"content":" public PhoneMatchesPredicate(String s) {","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"RingoftheKing"},"content":" numToMatch \u003d s;","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"RingoftheKing"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"RingoftheKing"},"content":" * Returns true if a person\u0027s {@code Phone} starts with or matches the given number.","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"RingoftheKing"},"content":" * False otherwise","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"RingoftheKing"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"RingoftheKing"},"content":" * @param person the person to check against","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"RingoftheKing"},"content":" * @return if a person\u0027s phone starts with or fully matches the given number","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"RingoftheKing"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"RingoftheKing"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"RingoftheKing"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"RingoftheKing"},"content":" if (numToMatch.equals(FindCommand.NOT_REQUIRED_VALUE)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"RingoftheKing"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"RingoftheKing"},"content":" } else {","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"RingoftheKing"},"content":" return person.getPhone().value.startsWith(numToMatch.trim());","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"RingoftheKing"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"RingoftheKing"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"RingoftheKing"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"RingoftheKing"},"content":" return true;","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"RingoftheKing"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"RingoftheKing"},"content":" if (!(other instanceof PhoneMatchesPredicate)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"RingoftheKing"},"content":" return false;","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"RingoftheKing"},"content":" PhoneMatchesPredicate predicate \u003d (PhoneMatchesPredicate) other;","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"RingoftheKing"},"content":" return numToMatch.equals(predicate.numToMatch);","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"RingoftheKing"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"RingoftheKing"},"content":" public String toString() {","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"RingoftheKing"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"RingoftheKing"},"content":" .add(\"phoneNumToMatch\", numToMatch)","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"RingoftheKing"},"content":" .toString();","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"RingoftheKing"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"RingoftheKing":55}},{"path":"src/main/java/seedu/address/model/person/Remark.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Rikko1204"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"Rikko1204"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"Rikko1204"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"Rikko1204"},"content":" * Represents a Person\u0027s remark in the address book.","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"Rikko1204"},"content":" * Guarantees: immutable; is always valid","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"Rikko1204"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"Rikko1204"},"content":"public class Remark {","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"Rikko1204"},"content":" public final String value;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"Rikko1204"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"Rikko1204"},"content":" * Create a Remark","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"Rikko1204"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"Rikko1204"},"content":" * @param remark to be added","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"Rikko1204"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"Rikko1204"},"content":" public Remark(String remark) {","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"Rikko1204"},"content":" requireNonNull(remark);","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"Rikko1204"},"content":" value \u003d remark;","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"Rikko1204"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"Rikko1204"},"content":" public String toString() {","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"Rikko1204"},"content":" return value;","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"Rikko1204"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"Rikko1204"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"Rikko1204"},"content":" return other \u003d\u003d this // short circuit if same object","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"Rikko1204"},"content":" || (other instanceof Remark // instanceof handles nulls","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"Rikko1204"},"content":" \u0026\u0026 value.equals(((Remark) other).value)); // state check","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"Rikko1204"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"Rikko1204"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"Rikko1204"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"Rikko1204"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"Rikko1204":39}},{"path":"src/main/java/seedu/address/model/person/Schedule.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Rikko1204"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"Rikko1204"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"Rikko1204"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"Rikko1204"},"content":" * Represents a Person\u0027s schedule in the address book with the user.","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"Rikko1204"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidSchedule(String)}","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"Rikko1204"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"Rikko1204"},"content":"public class Schedule {","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"Rikko1204"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"Rikko1204"},"content":" \"Schedule should contain only dates formatted as DD/MM/YYYY or DD-MM-YYYY\";","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"Rikko1204"},"content":" /*","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"Rikko1204"},"content":" * Date should be formatted as DD/MM/YYYY or DD-MM-YYYY","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"Rikko1204"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"hjuntan"},"content":" public static final String VALIDATION_REGEX_WITH_DATA \u003d","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"Rikko1204"},"content":" \"^([0]?[1-9]|[1|2][0-9]|[3][0|1])[./-]([0]?[1-9]|[1][0-2])[./-]([0-9]{4}|[0-9]{2})$\";","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"hjuntan"},"content":" public static final String VALIDATION_REGEX_WITHOUT_DATA \u003d \"^$\";","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"Rikko1204"},"content":" public final String date;","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"Rikko1204"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"Rikko1204"},"content":" * Constructs a {@code Date}.","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"Rikko1204"},"content":" *","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"Rikko1204"},"content":" * @param date A valid date.","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"Rikko1204"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"Rikko1204"},"content":" public Schedule(String date) {","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"Rikko1204"},"content":" requireNonNull(date);","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"Rikko1204"},"content":" if (date !\u003d \"\") {","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"Rikko1204"},"content":" checkArgument(isValidSchedule(date), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"Rikko1204"},"content":" this.date \u003d date;","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"Rikko1204"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"Rikko1204"},"content":" * Returns true if a given string is a valid date.","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"Rikko1204"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"Rikko1204"},"content":" public static boolean isValidSchedule(String test) {","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"hjuntan"},"content":" return test.matches(VALIDATION_REGEX_WITH_DATA) || test.matches(VALIDATION_REGEX_WITHOUT_DATA);","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"Rikko1204"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"Rikko1204"},"content":" public String toString() {","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"Rikko1204"},"content":" return date;","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"Rikko1204"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"Rikko1204"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"Rikko1204"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"Rikko1204"},"content":" return true;","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"Rikko1204"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"Rikko1204"},"content":" if (!(other instanceof Schedule)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"Rikko1204"},"content":" return false;","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"Rikko1204"},"content":" Schedule otherSchedule \u003d (Schedule) other;","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"Rikko1204"},"content":" return date.equals(otherSchedule.date);","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"Rikko1204"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"Rikko1204"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"Rikko1204"},"content":" return date.hashCode();","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"Rikko1204"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"Rikko1204":66,"hjuntan":4}},{"path":"src/main/java/seedu/address/model/person/Tag.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"hjuntan"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"hjuntan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"hjuntan"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"hjuntan"},"content":"/**","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"hjuntan"},"content":" * Represents a Person\u0027s tag in the address book.","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"hjuntan"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidTag(String)}","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"hjuntan"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"hjuntan"},"content":"public class Tag {","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"hjuntan"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"hjuntan"},"content":" * Represents the type of tag.","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"hjuntan"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"hjuntan"},"content":" public enum TagType {","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"hjuntan"},"content":" Professor, TA, Student, None;","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"hjuntan"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"hjuntan"},"content":" * Returns the string representation of the tag type.","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"hjuntan"},"content":" * @param tagType","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"hjuntan"},"content":" * @return","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"hjuntan"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"hjuntan"},"content":" public static String toString(TagType tagType) {","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"hjuntan"},"content":" switch (tagType) {","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"hjuntan"},"content":" case Professor:","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"hjuntan"},"content":" return \"Professor\";","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"hjuntan"},"content":" case TA:","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"hjuntan"},"content":" return \"TA\";","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"hjuntan"},"content":" case Student:","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"hjuntan"},"content":" return \"Student\";","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"hjuntan"},"content":" default:","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"hjuntan"},"content":" return \"None\";","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"hjuntan"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Tag can only these values: Professor, TA, Student, None\";","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"hjuntan"},"content":" public final TagType value;","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"hjuntan"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"hjuntan"},"content":" * Constructs an {@code Tag}.","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"hjuntan"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"hjuntan"},"content":" * @param tag A valid tag.","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"hjuntan"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"hjuntan"},"content":" public Tag(String tag) {","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"hjuntan"},"content":" requireNonNull(tag);","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"hjuntan"},"content":" checkArgument(isValidTag(tag), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"hjuntan"},"content":" value \u003d parseTag(tag);","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"hjuntan"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"hjuntan"},"content":" * Parses a tag and returns the corresponding TagType.","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"hjuntan"},"content":" * @param tag","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"hjuntan"},"content":" * @return","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"hjuntan"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"hjuntan"},"content":" public static TagType parseTag(String tag) {","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"hjuntan"},"content":" switch (tag) {","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"hjuntan"},"content":" case \"Professor\":","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"hjuntan"},"content":" return TagType.Professor;","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"hjuntan"},"content":" case \"TA\":","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"hjuntan"},"content":" return TagType.TA;","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"hjuntan"},"content":" case \"Student\":","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"hjuntan"},"content":" return TagType.Student;","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"hjuntan"},"content":" default:","lastModifiedDate":"2024-03-11"},{"lineNumber":66,"author":{"gitId":"hjuntan"},"content":" return TagType.None;","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":68,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":70,"author":{"gitId":"hjuntan"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":71,"author":{"gitId":"hjuntan"},"content":" * Returns true if a given string is a valid tag.","lastModifiedDate":"2024-03-11"},{"lineNumber":72,"author":{"gitId":"hjuntan"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":73,"author":{"gitId":"hjuntan"},"content":" public static boolean isValidTag(String test) {","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"hjuntan"},"content":" switch (test) {","lastModifiedDate":"2024-03-11"},{"lineNumber":75,"author":{"gitId":"hjuntan"},"content":" case \"Professor\":","lastModifiedDate":"2024-03-11"},{"lineNumber":76,"author":{"gitId":"hjuntan"},"content":" case \"TA\":","lastModifiedDate":"2024-03-11"},{"lineNumber":77,"author":{"gitId":"hjuntan"},"content":" case \"Student\":","lastModifiedDate":"2024-03-11"},{"lineNumber":78,"author":{"gitId":"hjuntan"},"content":" case \"None\":","lastModifiedDate":"2024-03-11"},{"lineNumber":79,"author":{"gitId":"hjuntan"},"content":" return true;","lastModifiedDate":"2024-03-11"},{"lineNumber":80,"author":{"gitId":"hjuntan"},"content":" default:","lastModifiedDate":"2024-03-11"},{"lineNumber":81,"author":{"gitId":"hjuntan"},"content":" return false;","lastModifiedDate":"2024-03-11"},{"lineNumber":82,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":83,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":84,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":85,"author":{"gitId":"hjuntan"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":86,"author":{"gitId":"hjuntan"},"content":" public String toString() {","lastModifiedDate":"2024-03-11"},{"lineNumber":87,"author":{"gitId":"hjuntan"},"content":" switch (value) {","lastModifiedDate":"2024-03-11"},{"lineNumber":88,"author":{"gitId":"hjuntan"},"content":" case Professor:","lastModifiedDate":"2024-03-11"},{"lineNumber":89,"author":{"gitId":"hjuntan"},"content":" return \"Professor\";","lastModifiedDate":"2024-03-11"},{"lineNumber":90,"author":{"gitId":"hjuntan"},"content":" case TA:","lastModifiedDate":"2024-03-11"},{"lineNumber":91,"author":{"gitId":"hjuntan"},"content":" return \"TA\";","lastModifiedDate":"2024-03-11"},{"lineNumber":92,"author":{"gitId":"hjuntan"},"content":" case Student:","lastModifiedDate":"2024-03-11"},{"lineNumber":93,"author":{"gitId":"hjuntan"},"content":" return \"Student\";","lastModifiedDate":"2024-03-11"},{"lineNumber":94,"author":{"gitId":"hjuntan"},"content":" default:","lastModifiedDate":"2024-03-11"},{"lineNumber":95,"author":{"gitId":"hjuntan"},"content":" return \"None\";","lastModifiedDate":"2024-03-11"},{"lineNumber":96,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":97,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":98,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":99,"author":{"gitId":"hjuntan"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":100,"author":{"gitId":"hjuntan"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-11"},{"lineNumber":101,"author":{"gitId":"hjuntan"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-11"},{"lineNumber":102,"author":{"gitId":"hjuntan"},"content":" return true;","lastModifiedDate":"2024-03-11"},{"lineNumber":103,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":104,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":105,"author":{"gitId":"hjuntan"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-11"},{"lineNumber":106,"author":{"gitId":"hjuntan"},"content":" if (!(other instanceof Tag)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":107,"author":{"gitId":"hjuntan"},"content":" return false;","lastModifiedDate":"2024-03-11"},{"lineNumber":108,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":109,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":110,"author":{"gitId":"hjuntan"},"content":" Tag otherTag \u003d (Tag) other;","lastModifiedDate":"2024-03-11"},{"lineNumber":111,"author":{"gitId":"hjuntan"},"content":" return value.equals(otherTag.value);","lastModifiedDate":"2024-03-11"},{"lineNumber":112,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":113,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":114,"author":{"gitId":"hjuntan"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":115,"author":{"gitId":"hjuntan"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-11"},{"lineNumber":116,"author":{"gitId":"hjuntan"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-11"},{"lineNumber":117,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":118,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":119,"author":{"gitId":"hjuntan"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"hjuntan":119}},{"path":"src/main/java/seedu/address/model/person/TagMatchesPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"RingoftheKing"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-15"},{"lineNumber":2,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"RingoftheKing"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"RingoftheKing"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"RingoftheKing"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"RingoftheKing"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"RingoftheKing"},"content":" * Tests if a {@code Person}\u0027s {@code Tag} matches the Enum given","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"RingoftheKing"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"RingoftheKing"},"content":"public class TagMatchesPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"RingoftheKing"},"content":" private final String keyword;","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"RingoftheKing"},"content":" public TagMatchesPredicate(String keyword) {","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"RingoftheKing"},"content":" this.keyword \u003d keyword;","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"RingoftheKing"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"RingoftheKing"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"RingoftheKing"},"content":" if (keyword.equals(FindCommand.NOT_REQUIRED_VALUE)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"RingoftheKing"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"RingoftheKing"},"content":" } else if (!Tag.isValidTag(keyword)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"RingoftheKing"},"content":" return false;","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"RingoftheKing"},"content":" } else {","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"RingoftheKing"},"content":" return person.getTag().equals(new Tag(keyword));","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"RingoftheKing"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"RingoftheKing"},"content":" public String toString() {","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"RingoftheKing"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"RingoftheKing"},"content":" .add(\"tagKeyword\", keyword)","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"RingoftheKing"},"content":" .toString();","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"RingoftheKing"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"RingoftheKing"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"RingoftheKing"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"RingoftheKing"},"content":" return true;","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"RingoftheKing"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"RingoftheKing"},"content":" if (!(other instanceof TagMatchesPredicate)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"RingoftheKing"},"content":" return false;","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"RingoftheKing"},"content":" TagMatchesPredicate predicate \u003d (TagMatchesPredicate) other;","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"RingoftheKing"},"content":" return keyword.equals(predicate.keyword);","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"RingoftheKing"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"RingoftheKing":51}},{"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":"hjuntan"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20"},{"lineNumber":12,"author":{"gitId":"hjuntan"},"content":"import seedu.address.model.person.NusId;","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-20"},{"lineNumber":15,"author":{"gitId":"Rikko1204"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"Rikko1204"},"content":"import seedu.address.model.person.Schedule;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"hjuntan"},"content":"import seedu.address.model.person.Tag;","lastModifiedDate":"2024-03-11"},{"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":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"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":"hjuntan"},"content":" new Person(new NusId(\"E1234567\"), new Name(\"Alex Yeoh\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"hjuntan"},"content":" new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"hjuntan"},"content":" new Tag(\"Student\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"Rikko1204"},"content":" getGroupSet(\"friends\"),","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"Rikko1204"},"content":" new Schedule(\"21-12-2024\"), new Remark(\"Consultation with Alex\")),","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"hjuntan"},"content":" new Person(new NusId(\"E2345678\"), new Name(\"Bernice Yu\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"hjuntan"},"content":" new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"hjuntan"},"content":" new Tag(\"Student\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"Rikko1204"},"content":" getGroupSet(\"colleagues\", \"friends\"),","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"Rikko1204"},"content":" new Schedule(\"22-12-2024\"), new Remark(\"Consultation with Bernice\")),","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"hjuntan"},"content":" new Person(new NusId(\"E0987654\"), new Name(\"Charlotte Oliveiro\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"hjuntan"},"content":" new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"hjuntan"},"content":" new Tag(\"TA\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"Rikko1204"},"content":" getGroupSet(\"neighbours\"),","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"hjuntan"},"content":" new Schedule(\"21-12-2024\"), new Remark(\"Consultation with Charlotte\")),","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"hjuntan"},"content":" new Person(new NusId(\"E9876543\"), new Name(\"David Li\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"hjuntan"},"content":" new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"hjuntan"},"content":" new Tag(\"Professor\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"Rikko1204"},"content":" getGroupSet(\"family\"),","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"Rikko1204"},"content":" new Schedule(\"23-12-2024\"), new Remark(\"Consultation with David\")),","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"hjuntan"},"content":" new Person(new NusId(\"E0123456\"), new Name(\"Irfan Ibrahim\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"hjuntan"},"content":" new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"hjuntan"},"content":" new Tag(\"TA\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"Rikko1204"},"content":" getGroupSet(\"classmates\"),","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"Rikko1204"},"content":" new Schedule(\"24-12-2024\"), new Remark(\"Consultation with Irfan\")),","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"hjuntan"},"content":" new Person(new NusId(\"E1029384\"), new Name(\"Roy Balakrishnan\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"hjuntan"},"content":" new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"hjuntan"},"content":" new Tag(\"None\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"Rikko1204"},"content":" getGroupSet(\"colleagues\"),","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"Rikko1204"},"content":" new Schedule(\"25-12-2024\"), new Remark(\"Consultation with Roy\"))","lastModifiedDate":"2024-03-16"},{"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":"hjuntan"},"content":" * Returns a group set containing the list of strings given.","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14"},{"lineNumber":70,"author":{"gitId":"hjuntan"},"content":" public static Set\u003cGroup\u003e getGroupSet(String... strings) {","lastModifiedDate":"2024-03-11"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21"},{"lineNumber":72,"author":{"gitId":"hjuntan"},"content":" .map(Group::new)","lastModifiedDate":"2024-03-11"},{"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":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"Rikko1204":14,"hjuntan":25,"-":37}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedGroup.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"hjuntan"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"hjuntan"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"hjuntan"},"content":"import com.fasterxml.jackson.annotation.JsonValue;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"hjuntan"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"hjuntan"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"hjuntan"},"content":"/**","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"hjuntan"},"content":" * Jackson-friendly version of {@link Group}.","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"hjuntan"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"hjuntan"},"content":"class JsonAdaptedGroup {","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"hjuntan"},"content":" private final String groupName;","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"hjuntan"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"hjuntan"},"content":" * Constructs a {@code JsonAdaptedGroup} with the given {@code groupName}.","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"hjuntan"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"hjuntan"},"content":" @JsonCreator","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"hjuntan"},"content":" public JsonAdaptedGroup(String groupName) {","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"hjuntan"},"content":" this.groupName \u003d groupName;","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"hjuntan"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"hjuntan"},"content":" * Converts a given {@code Group} into this class for Jackson use.","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"hjuntan"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"hjuntan"},"content":" public JsonAdaptedGroup(Group source) {","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"hjuntan"},"content":" groupName \u003d source.groupName;","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"hjuntan"},"content":" @JsonValue","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"hjuntan"},"content":" public String getGroupName() {","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"hjuntan"},"content":" return groupName;","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"hjuntan"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"hjuntan"},"content":" * Converts this Jackson-friendly adapted group object into the model\u0027s {@code Group} object.","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"hjuntan"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"hjuntan"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted group.","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"hjuntan"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"hjuntan"},"content":" public Group toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"hjuntan"},"content":" if (!Group.isValidGroupName(groupName)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"hjuntan"},"content":" throw new IllegalValueException(Group.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"hjuntan"},"content":" return new Group(groupName);","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"hjuntan"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"hjuntan":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":"-"},"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":"hjuntan"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-11"},{"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":"hjuntan"},"content":"import seedu.address.model.person.NusId;","lastModifiedDate":"2024-03-11"},{"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":"Rikko1204"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"Rikko1204"},"content":"import seedu.address.model.person.Schedule;","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"hjuntan"},"content":"import seedu.address.model.person.Tag;","lastModifiedDate":"2024-03-11"},{"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":"hjuntan"},"content":" private final String nusId;","lastModifiedDate":"2024-03-11"},{"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":"hjuntan"},"content":" private final String tag;","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"Rikko1204"},"content":" private final String schedule;","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"Rikko1204"},"content":" private final String remark;","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"hjuntan"},"content":" private final List\u003cJsonAdaptedGroup\u003e groups \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"hjuntan"},"content":" public JsonAdaptedPerson(@JsonProperty(\"nusId\") String nusId,","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"hjuntan"},"content":" @JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"hjuntan"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"tag\") String tag,","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"Rikko1204"},"content":" @JsonProperty(\"groups\") List\u003cJsonAdaptedGroup\u003e groups,","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"Rikko1204"},"content":" @JsonProperty(\"schedule\") String schedule, @JsonProperty(\"remark\") String remark) {","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"hjuntan"},"content":" this.nusId \u003d nusId;","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"hjuntan"},"content":" this.tag \u003d tag;","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"Rikko1204"},"content":" this.schedule \u003d schedule;","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"Rikko1204"},"content":" this.remark \u003d remark;","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"hjuntan"},"content":" if (groups !\u003d null) {","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"hjuntan"},"content":" this.groups.addAll(groups);","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","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"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"hjuntan"},"content":" nusId \u003d source.getNusId().value;","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"hjuntan"},"content":" tag \u003d source.getTag().value.toString();","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"Rikko1204"},"content":" schedule \u003d source.getSchedule().date.toString();","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"Rikko1204"},"content":" remark \u003d source.getRemark().value.toString();","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"hjuntan"},"content":" groups.addAll(source.getGroups().stream()","lastModifiedDate":"2024-03-11"},{"lineNumber":72,"author":{"gitId":"hjuntan"},"content":" .map(JsonAdaptedGroup::new)","lastModifiedDate":"2024-03-11"},{"lineNumber":73,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","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"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"hjuntan"},"content":" final List\u003cGroup\u003e personGroups \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-11"},{"lineNumber":83,"author":{"gitId":"hjuntan"},"content":" for (JsonAdaptedGroup group : groups) {","lastModifiedDate":"2024-03-11"},{"lineNumber":84,"author":{"gitId":"hjuntan"},"content":" personGroups.add(group.toModelType());","lastModifiedDate":"2024-03-11"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"hjuntan"},"content":" if (tag \u003d\u003d null) {","lastModifiedDate":"2024-03-11"},{"lineNumber":112,"author":{"gitId":"hjuntan"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Tag.class.getSimpleName()));","lastModifiedDate":"2024-03-11"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"hjuntan"},"content":" if (!Tag.isValidTag(tag)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":115,"author":{"gitId":"hjuntan"},"content":" throw new IllegalValueException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-11"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":117,"author":{"gitId":"hjuntan"},"content":" final Tag modelTag \u003d new Tag(tag);","lastModifiedDate":"2024-03-11"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":119,"author":{"gitId":"hjuntan"},"content":" if (nusId \u003d\u003d null) {","lastModifiedDate":"2024-03-11"},{"lineNumber":120,"author":{"gitId":"hjuntan"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, NusId.class.getSimpleName()));","lastModifiedDate":"2024-03-11"},{"lineNumber":121,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":122,"author":{"gitId":"hjuntan"},"content":" if (!NusId.isValidNusId(nusId)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":123,"author":{"gitId":"hjuntan"},"content":" throw new IllegalValueException(NusId.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-11"},{"lineNumber":124,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":125,"author":{"gitId":"hjuntan"},"content":" final NusId modelNusId \u003d new NusId(nusId);","lastModifiedDate":"2024-03-11"},{"lineNumber":126,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":127,"author":{"gitId":"Rikko1204"},"content":" if (schedule \u003d\u003d null) {","lastModifiedDate":"2024-03-16"},{"lineNumber":128,"author":{"gitId":"Rikko1204"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-16"},{"lineNumber":129,"author":{"gitId":"Rikko1204"},"content":" Schedule.class.getSimpleName()));","lastModifiedDate":"2024-03-16"},{"lineNumber":130,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":131,"author":{"gitId":"Rikko1204"},"content":" if (!Schedule.isValidSchedule(schedule)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":132,"author":{"gitId":"Rikko1204"},"content":" throw new IllegalValueException(Schedule.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":133,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":134,"author":{"gitId":"Rikko1204"},"content":" final Schedule modelSchedule \u003d new Schedule(schedule);","lastModifiedDate":"2024-03-16"},{"lineNumber":135,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":136,"author":{"gitId":"Rikko1204"},"content":" if (remark \u003d\u003d null) {","lastModifiedDate":"2024-03-16"},{"lineNumber":137,"author":{"gitId":"Rikko1204"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Remark.class.getSimpleName()));","lastModifiedDate":"2024-03-16"},{"lineNumber":138,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":139,"author":{"gitId":"Rikko1204"},"content":" final Remark modelRemark \u003d new Remark(remark);","lastModifiedDate":"2024-03-16"},{"lineNumber":140,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":141,"author":{"gitId":"hjuntan"},"content":" final Set\u003cGroup\u003e modelGroups \u003d new HashSet\u003c\u003e(personGroups);","lastModifiedDate":"2024-03-11"},{"lineNumber":142,"author":{"gitId":"Rikko1204"},"content":" return new Person(modelNusId, modelName, modelPhone, modelEmail,","lastModifiedDate":"2024-03-16"},{"lineNumber":143,"author":{"gitId":"Rikko1204"},"content":" modelTag, modelGroups, modelSchedule, modelRemark);","lastModifiedDate":"2024-03-16"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":146,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"Rikko1204":26,"hjuntan":34,"-":86}},{"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":"hjuntan"},"content":" private Label tag;","lastModifiedDate":"2024-03-11"},{"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":"hjuntan"},"content":" private Label nusId;","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"hjuntan"},"content":" @FXML","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"Rikko1204"},"content":" private Label schedule;","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"Rikko1204"},"content":" @FXML","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"Rikko1204"},"content":" private Label remark;","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"Rikko1204"},"content":" @FXML","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"hjuntan"},"content":" private FlowPane groups;","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21"},{"lineNumber":57,"author":{"gitId":"hjuntan"},"content":" nusId.setText(person.getNusId().value);","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":60,"author":{"gitId":"hjuntan"},"content":" tag.setText(person.getTag().value.toString());","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":62,"author":{"gitId":"Rikko1204"},"content":" schedule.setText(person.getSchedule().date);","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"Rikko1204"},"content":" remark.setText(person.getRemark().value);","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"hjuntan"},"content":" person.getGroups().stream()","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"hjuntan"},"content":" .sorted(Comparator.comparing(group -\u003e group.groupName))","lastModifiedDate":"2024-03-11"},{"lineNumber":66,"author":{"gitId":"hjuntan"},"content":" .forEach(group -\u003e groups.getChildren().add(new Label(group.groupName)));","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"Rikko1204":6,"hjuntan":9,"-":53}},{"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":"hjuntan"},"content":" \u003cLabel fx:id\u003d\"nusId\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2024-03-11"},{"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":"hjuntan"},"content":" \u003cFlowPane fx:id\u003d\"groups\" /\u003e","lastModifiedDate":"2024-03-11"},{"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":"hjuntan"},"content":" \u003cLabel fx:id\u003d\"tag\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$tag\" /\u003e","lastModifiedDate":"2024-03-11"},{"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":"Rikko1204"},"content":" \u003cLabel fx:id\u003d\"schedule\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$schedule\" /\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"Rikko1204"},"content":" \u003cLabel fx:id\u003d\"remark\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$remark\" /\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"Rikko1204":2,"hjuntan":3,"-":34}},{"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":"cheahTJ"},"content":"import static seedu.address.logic.Messages.MESSAGE_NON_EXISTENT_PERSON;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2024-03-16"},{"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":"Rikko1204"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NUSID_DESC_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":10,"author":{"gitId":"hjuntan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_AMY;","lastModifiedDate":"2024-03-11"},{"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":"hjuntan"},"content":"import seedu.address.logic.commands.ViewCommand;","lastModifiedDate":"2024-03-20"},{"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":"cheahTJ"},"content":" String deleteCommand \u003d \"delete E1234567\";","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"cheahTJ"},"content":" assertCommandException(deleteCommand, MESSAGE_NON_EXISTENT_PERSON);","lastModifiedDate":"2024-03-16"},{"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":"hjuntan"},"content":" String listCommand \u003d ViewCommand.COMMAND_WORD;","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"hjuntan"},"content":" assertCommandSuccess(listCommand, ViewCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2024-03-20"},{"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":"Rikko1204"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NUSID_DESC_AMY + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2024-03-12"},{"lineNumber":170,"author":{"gitId":"hjuntan"},"content":" + EMAIL_DESC_AMY + TAG_DESC_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":171,"author":{"gitId":"hjuntan"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withGroups().build();","lastModifiedDate":"2024-03-11"},{"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":{"cheahTJ":3,"Rikko1204":2,"hjuntan":6,"-":165}},{"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":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GROUP;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NUSID;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SCHEDULE;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05"},{"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":"Ragnapop"},"content":"import seedu.address.testutil.GroupPersonDescriptorBuilder;","lastModifiedDate":"2024-03-14"},{"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":"hjuntan"},"content":" public static final String VALID_NUSID_AMY \u003d \"E1234567\";","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"hjuntan"},"content":" public static final String VALID_NUSID_BOB \u003d \"E7654321\";","lastModifiedDate":"2024-03-11"},{"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":"hjuntan"},"content":" public static final String VALID_TAG_AMY \u003d \"Student\";","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"hjuntan"},"content":" public static final String VALID_TAG_BOB \u003d \"Professor\";","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"hjuntan"},"content":" public static final String VALID_GROUP_HUSBAND \u003d \"husband\";","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"hjuntan"},"content":" public static final String VALID_GROUP_FRIEND \u003d \"friend\";","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"Rikko1204"},"content":" public static final String VALID_SCHEDULE_AMY \u003d \"10-10-2020\";","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"Rikko1204"},"content":" public static final String VALID_SCHEDULE_BOB \u003d \"11/11/2020\";","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"Rikko1204"},"content":" public static final String VALID_REMARK_AMY \u003d \"Meeting at 3pm\";","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"Rikko1204"},"content":" public static final String VALID_REMARK_BOB \u003d \"Lunch with Amy\";","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":50,"author":{"gitId":"Rikko1204"},"content":" public static final String NUSID_DESC_AMY \u003d \" \" + PREFIX_NUSID + VALID_NUSID_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"Rikko1204"},"content":" public static final String NUSID_DESC_BOB \u003d \" \" + PREFIX_NUSID + VALID_NUSID_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":58,"author":{"gitId":"hjuntan"},"content":" public static final String TAG_DESC_AMY \u003d \" \" + PREFIX_TAG + VALID_TAG_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"hjuntan"},"content":" public static final String TAG_DESC_BOB \u003d \" \" + PREFIX_TAG + VALID_TAG_BOB;","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"hjuntan"},"content":" public static final String GROUP_DESC_FRIEND \u003d \" \" + PREFIX_GROUP + VALID_GROUP_FRIEND;","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"hjuntan"},"content":" public static final String GROUP_DESC_HUSBAND \u003d \" \" + PREFIX_GROUP + VALID_GROUP_HUSBAND;","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"Rikko1204"},"content":" public static final String SCHEDULE_DESC_AMY \u003d \" \" + PREFIX_SCHEDULE + VALID_SCHEDULE_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"Rikko1204"},"content":" public static final String SCHEDULE_DESC_BOB \u003d \" \" + PREFIX_SCHEDULE + VALID_SCHEDULE_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"Rikko1204"},"content":" public static final String REMARK_DESC_AMY \u003d \" \" + PREFIX_REMARK + VALID_REMARK_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"Rikko1204"},"content":" public static final String REMARK_DESC_BOB \u003d \" \" + PREFIX_REMARK + VALID_REMARK_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"Rikko1204"},"content":" public static final String INVALID_NUSID_DESC \u003d \" \" + PREFIX_NUSID + \"e1234567\"; // \u0027e\u0027 not allowed in id","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"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":68,"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":69,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05"},{"lineNumber":70,"author":{"gitId":"hjuntan"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG; // empty string not allowed for tags","lastModifiedDate":"2024-03-11"},{"lineNumber":71,"author":{"gitId":"hjuntan"},"content":" public static final String INVALID_GROUP_DESC \u003d \" \" + PREFIX_GROUP + \"hubby*\"; // \u0027*\u0027 not allowed in groups","lastModifiedDate":"2024-03-11"},{"lineNumber":72,"author":{"gitId":"Rikko1204"},"content":" public static final String INVALID_SCHEDULE_DESC \u003d \" \" + PREFIX_SCHEDULE + \"2024-12-12\"; // wrong date format","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"Rikko1204"},"content":" public static final String INVALID_NUSID \u003d \"e1234567\"; // lowercase not accepted","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"Rikko1204"},"content":" public static final String INVALID_SCHEDULE \u003d \"12-31-2020\"; // Incorrect month","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":82,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":85,"author":{"gitId":"Ragnapop"},"content":" public static final GroupCommand.GroupPersonDescriptor DESC_AMY_GROUP;","lastModifiedDate":"2024-03-14"},{"lineNumber":86,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":87,"author":{"gitId":"Ragnapop"},"content":" public static final GroupCommand.GroupPersonDescriptor DESC_BOB_GROUP;","lastModifiedDate":"2024-03-14"},{"lineNumber":88,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":91,"author":{"gitId":"hjuntan"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withTag(VALID_TAG_AMY)","lastModifiedDate":"2024-03-11"},{"lineNumber":92,"author":{"gitId":"hjuntan"},"content":" .withGroups(VALID_GROUP_FRIEND).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":93,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":94,"author":{"gitId":"hjuntan"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withTag(VALID_TAG_BOB)","lastModifiedDate":"2024-03-11"},{"lineNumber":95,"author":{"gitId":"hjuntan"},"content":" .withGroups(VALID_GROUP_HUSBAND, VALID_GROUP_FRIEND).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":96,"author":{"gitId":"Ragnapop"},"content":" DESC_AMY_GROUP \u003d new GroupPersonDescriptorBuilder().withNusId(VALID_NUSID_AMY).withTag(VALID_TAG_AMY)","lastModifiedDate":"2024-03-14"},{"lineNumber":97,"author":{"gitId":"Ragnapop"},"content":" .withGroups(VALID_GROUP_HUSBAND).build();","lastModifiedDate":"2024-03-14"},{"lineNumber":98,"author":{"gitId":"Ragnapop"},"content":" DESC_BOB_GROUP \u003d new GroupPersonDescriptorBuilder().withNusId(VALID_NUSID_BOB).withTag(VALID_TAG_BOB)","lastModifiedDate":"2024-03-14"},{"lineNumber":99,"author":{"gitId":"Ragnapop"},"content":" .withGroups(VALID_GROUP_FRIEND).build();","lastModifiedDate":"2024-03-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"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":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25"},{"lineNumber":108,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":109,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":110,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":114,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":118,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":119,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":120,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":121,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25"},{"lineNumber":122,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":123,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":124,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25"},{"lineNumber":125,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":126,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":130,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":131,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":132,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":134,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25"},{"lineNumber":135,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":136,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25"},{"lineNumber":137,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":138,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":139,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":140,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03"},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":145,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":146,"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":147,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31"},{"lineNumber":148,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":149,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31"},{"lineNumber":150,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":152,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31"},{"lineNumber":153,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20"},{"lineNumber":154,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":156,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":159,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"Rikko1204":20,"Ragnapop":12,"hjuntan":16,"-":111}},{"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.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-05"},{"lineNumber":17,"author":{"gitId":"cheahTJ"},"content":"import seedu.address.model.person.NusId;","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2018-01-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2017-06-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":29,"author":{"gitId":"cheahTJ"},"content":" public void execute_validNusIdUnfilteredList_success() {","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":31,"author":{"gitId":"cheahTJ"},"content":" NusId nusId \u003d new NusId(\"E0123456\"); // This is the supposed NusId of the first person in the address list","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"cheahTJ"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(nusId);","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":44,"author":{"gitId":"cheahTJ"},"content":" public void execute_invalidNusIdUnfilteredList_throwsCommandException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"cheahTJ"},"content":" NusId testNusId \u003d new NusId(\"E1234567\");","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"cheahTJ"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(testNusId);","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":48,"author":{"gitId":"cheahTJ"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_NON_EXISTENT_PERSON);","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":52,"author":{"gitId":"cheahTJ"},"content":" public void execute_validNusIdFilteredList_success() {","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":54,"author":{"gitId":"cheahTJ"},"content":" NusId nusId \u003d new NusId(\"E0123456\");","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"cheahTJ"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(nusId);","lastModifiedDate":"2024-03-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":67,"author":{"gitId":"cheahTJ"},"content":" public void execute_invalidNusIdFilteredList_throwsCommandException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"cheahTJ"},"content":" NusId testNusId \u003d new NusId(\"E1234567\");","lastModifiedDate":"2024-03-13"},{"lineNumber":69,"author":{"gitId":"cheahTJ"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(testNusId);","lastModifiedDate":"2024-03-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":71,"author":{"gitId":"cheahTJ"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_NON_EXISTENT_PERSON);","lastModifiedDate":"2024-03-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":76,"author":{"gitId":"cheahTJ"},"content":" NusId nusIdForFirstDeleteCommand \u003d new NusId(\"E1234567\");","lastModifiedDate":"2024-03-13"},{"lineNumber":77,"author":{"gitId":"cheahTJ"},"content":" NusId nusIdForSecondDeleteCommand \u003d new NusId(\"E2345678\");","lastModifiedDate":"2024-03-13"},{"lineNumber":78,"author":{"gitId":"cheahTJ"},"content":" DeleteCommand deleteFirstCommand \u003d new DeleteCommand(nusIdForFirstDeleteCommand);","lastModifiedDate":"2024-03-13"},{"lineNumber":79,"author":{"gitId":"cheahTJ"},"content":" DeleteCommand deleteSecondCommand \u003d new DeleteCommand(nusIdForSecondDeleteCommand);","lastModifiedDate":"2024-03-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":85,"author":{"gitId":"cheahTJ"},"content":" DeleteCommand deleteFirstCommandCopy \u003d new DeleteCommand(new NusId(\"E1234567\"));","lastModifiedDate":"2024-03-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2017-06-27"},{"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":"2019-02-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":100,"author":{"gitId":"cheahTJ"},"content":" //Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-13"},{"lineNumber":101,"author":{"gitId":"cheahTJ"},"content":" //DeleteCommand deleteCommand \u003d new DeleteCommand(targetIndex);","lastModifiedDate":"2024-03-13"},{"lineNumber":102,"author":{"gitId":"cheahTJ"},"content":" NusId testNusId \u003d new NusId(\"E1234567\");","lastModifiedDate":"2024-03-13"},{"lineNumber":103,"author":{"gitId":"cheahTJ"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(testNusId);","lastModifiedDate":"2024-03-13"},{"lineNumber":104,"author":{"gitId":"cheahTJ"},"content":" String expected \u003d DeleteCommand.class.getCanonicalName() + \"{targetnusId\u003d\" + testNusId.toString() + \"}\";","lastModifiedDate":"2024-03-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertEquals(expected, deleteCommand.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":"2017-06-05"},{"lineNumber":109,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05"},{"lineNumber":110,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":111,"author":{"gitId":"-"},"content":" private void showNoPerson(Model model) {","lastModifiedDate":"2017-06-05"},{"lineNumber":112,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2017-06-12"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertTrue(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2018-02-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":116,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"cheahTJ":25,"-":91}},{"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":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"cheahTJ"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"cheahTJ"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GROUP_HUSBAND;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"cheahTJ"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_REMARK_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"cheahTJ"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SCHEDULE_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_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":"2024-03-12"},{"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":"-"},"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":"cheahTJ"},"content":"import seedu.address.model.person.NusId;","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-04"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":43,"author":{"gitId":"cheahTJ"},"content":" Person originalPerson \u003d model.getFilteredPersonList().get(0);","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"cheahTJ"},"content":" PersonBuilder personInList \u003d new PersonBuilder(originalPerson);","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"cheahTJ"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"cheahTJ"},"content":" .withGroups(VALID_GROUP_HUSBAND).withEmail(VALID_EMAIL_BOB).withRemark(VALID_REMARK_BOB)","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"cheahTJ"},"content":" .withSchedule(VALID_SCHEDULE_BOB).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedPerson).build();","lastModifiedDate":"2017-06-05"},{"lineNumber":50,"author":{"gitId":"cheahTJ"},"content":" EditCommand editCommand \u003d new EditCommand(originalPerson.getNusId(), descriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":55,"author":{"gitId":"cheahTJ"},"content":" expectedModel.setPerson(originalPerson, editedPerson);","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","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 execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":62,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2017-05-18"},{"lineNumber":63,"author":{"gitId":"-"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":65,"author":{"gitId":"-"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2017-05-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-18"},{"lineNumber":67,"author":{"gitId":"hjuntan"},"content":" .withGroups(VALID_GROUP_HUSBAND).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":68,"author":{"gitId":"cheahTJ"},"content":" NusId nusIdOfLastPerson \u003d lastPerson.getNusId();","lastModifiedDate":"2024-03-19"},{"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":"hjuntan"},"content":" .withPhone(VALID_PHONE_BOB).withGroups(VALID_GROUP_HUSBAND).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":72,"author":{"gitId":"cheahTJ"},"content":" EditCommand editCommand \u003d new EditCommand(nusIdOfLastPerson, descriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":74,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":76,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":77,"author":{"gitId":"-"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":84,"author":{"gitId":"cheahTJ"},"content":" String defaultNusId \u003d \"E0123456\"; // This is the default NUS id of a person","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"cheahTJ"},"content":" NusId nusId \u003d new NusId(defaultNusId);","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"cheahTJ"},"content":" EditCommand editCommand \u003d new EditCommand(nusId, new EditPersonDescriptor());","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":99,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":101,"author":{"gitId":"cheahTJ"},"content":" String defaultNusId \u003d \"E0123456\"; // This is the default NUS id of a person","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"cheahTJ"},"content":" NusId nusId \u003d new NusId(defaultNusId);","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"-"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder(personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":106,"author":{"gitId":"cheahTJ"},"content":" EditCommand editCommand \u003d new EditCommand(nusId,","lastModifiedDate":"2024-03-19"},{"lineNumber":107,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":109,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":111,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":112,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":119,"author":{"gitId":"cheahTJ"},"content":" NusId nusId \u003d new NusId(\"E0000000\"); // NusId does not exist","lastModifiedDate":"2024-03-19"},{"lineNumber":120,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22"},{"lineNumber":121,"author":{"gitId":"cheahTJ"},"content":" EditCommand editCommand \u003d new EditCommand(nusId, descriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":123,"author":{"gitId":"cheahTJ"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_NON_EXISTENT_PERSON);","lastModifiedDate":"2024-03-19"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":126,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18"},{"lineNumber":127,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18"},{"lineNumber":128,"author":{"gitId":"-"},"content":" * but smaller than size of address book","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":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":132,"author":{"gitId":"cheahTJ"},"content":" NusId nusId \u003d new NusId(\"E0000000\"); // NusId does not exist","lastModifiedDate":"2024-03-19"},{"lineNumber":133,"author":{"gitId":"cheahTJ"},"content":" EditCommand editCommand \u003d new EditCommand(nusId,","lastModifiedDate":"2024-03-19"},{"lineNumber":134,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":135,"author":{"gitId":"cheahTJ"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_NON_EXISTENT_PERSON);","lastModifiedDate":"2024-03-19"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":140,"author":{"gitId":"cheahTJ"},"content":" final EditCommand standardCommand \u003d new EditCommand(new NusId(\"E1234567\"), DESC_AMY);","lastModifiedDate":"2024-03-19"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":142,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08"},{"lineNumber":144,"author":{"gitId":"cheahTJ"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(new NusId(\"E1234567\"), copyDescriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":147,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":150,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":151,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":153,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":154,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":156,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":157,"author":{"gitId":"cheahTJ"},"content":" assertFalse(standardCommand.equals(new EditCommand(new NusId(\"E7654321\"), DESC_AMY)));","lastModifiedDate":"2024-03-19"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":160,"author":{"gitId":"cheahTJ"},"content":" assertFalse(standardCommand.equals(new EditCommand(new NusId(\"E1234567\"), DESC_BOB)));","lastModifiedDate":"2024-03-19"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":163,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":165,"author":{"gitId":"cheahTJ"},"content":" String defaultNusId \u003d \"E1234567\"; // This is the default NUS id of a person","lastModifiedDate":"2024-03-19"},{"lineNumber":166,"author":{"gitId":"cheahTJ"},"content":" NusId nusId \u003d new NusId(defaultNusId);","lastModifiedDate":"2024-03-19"},{"lineNumber":167,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":168,"author":{"gitId":"cheahTJ"},"content":" EditCommand editCommand \u003d new EditCommand(nusId, editPersonDescriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":169,"author":{"gitId":"cheahTJ"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{targetnusId\u003d\" + nusId.toString()","lastModifiedDate":"2024-03-19"},{"lineNumber":170,"author":{"gitId":"cheahTJ"},"content":" + \", editPersonDescriptor\u003d\" + editPersonDescriptor + \"}\";","lastModifiedDate":"2024-03-19"},{"lineNumber":171,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08"}],"authorContributionMap":{"cheahTJ":38,"hjuntan":2,"-":134}},{"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":"hjuntan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GROUP_HUSBAND;","lastModifiedDate":"2024-03-11"},{"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":"hjuntan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_BOB;","lastModifiedDate":"2024-03-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":"hjuntan"},"content":" // different tag -\u003e returns false","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"hjuntan"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withTag(VALID_TAG_BOB).build();","lastModifiedDate":"2024-03-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":"hjuntan"},"content":" // different groups -\u003e returns false","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"hjuntan"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withGroups(VALID_GROUP_HUSBAND).build();","lastModifiedDate":"2024-03-11"},{"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":"hjuntan"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", tag\u003d\"","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"hjuntan"},"content":" + editPersonDescriptor.getTag().orElse(null) + \", groups\u003d\"","lastModifiedDate":"2024-03-11"},{"lineNumber":68,"author":{"gitId":"hjuntan"},"content":" + editPersonDescriptor.getGroups().orElse(null) + \"}\";","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"hjuntan":9,"-":62}},{"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":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"RingoftheKing"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_PERSONS_LISTED_OVERVIEW;","lastModifiedDate":"2023-07-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.CARL;","lastModifiedDate":"2017-07-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ELLE;","lastModifiedDate":"2017-07-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.FIONA;","lastModifiedDate":"2017-07-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"RingoftheKing"},"content":"import java.util.List;","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"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":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"RingoftheKing"},"content":"import seedu.address.model.person.EmailMatchesPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"RingoftheKing"},"content":"import seedu.address.model.person.GroupMatchesPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"RingoftheKing"},"content":"import seedu.address.model.person.PhoneMatchesPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"RingoftheKing"},"content":"import seedu.address.model.person.Tag;","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"RingoftheKing"},"content":"import seedu.address.model.person.TagMatchesPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"RingoftheKing"},"content":"import seedu.address.testutil.FindCommandBuilder;","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code FindCommand}.","lastModifiedDate":"2017-06-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":"public class FindCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":39,"author":{"gitId":"RingoftheKing"},"content":" public void test_equals_withNameVariations() {","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"RingoftheKing"},"content":" // Check that the Builder is first functioning as normal","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"RingoftheKing"},"content":" assertEquals(new FindCommandBuilder().build(), new FindCommandBuilder().build());","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"RingoftheKing"},"content":" /* -----------------------------------NAME PRED VARIES------------------------------------------*/","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"RingoftheKing"},"content":" NameContainsKeywordsPredicate firstNamePredicate \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":45,"author":{"gitId":"RingoftheKing"},"content":" NameContainsKeywordsPredicate secondNamePredicate \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"RingoftheKing"},"content":" FindCommand findFirstCommand \u003d new FindCommandBuilder().withNamePred(firstNamePredicate).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"RingoftheKing"},"content":" FindCommand findSecondCommand \u003d new FindCommandBuilder().withNamePred(secondNamePredicate).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"RingoftheKing"},"content":" FindCommand findFirstCommandCopy \u003d new FindCommandBuilder().withNamePred(firstNamePredicate).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"RingoftheKing"},"content":" // different types -\u003e returns false. Tested ONCE.","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":61,"author":{"gitId":"RingoftheKing"},"content":" // null -\u003e returns false TEST ONCE","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":64,"author":{"gitId":"RingoftheKing"},"content":" // different names -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"RingoftheKing"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"RingoftheKing"},"content":" public void test_equals_withPhoneVariations() {","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"RingoftheKing"},"content":" /* vv --------------------------- PHONE PRED VARIES ------------------------------------ */","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"RingoftheKing"},"content":" PhoneMatchesPredicate firstPhonePredicate \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"RingoftheKing"},"content":" new PhoneMatchesPredicate(\"123\");","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"RingoftheKing"},"content":" PhoneMatchesPredicate secondPhonePredicate \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"RingoftheKing"},"content":" new PhoneMatchesPredicate(\"789\");","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"RingoftheKing"},"content":" FindCommand findPhoneFirstCommand \u003d new FindCommandBuilder().withPhone(firstPhonePredicate).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"RingoftheKing"},"content":" FindCommand findPhoneFirstCopy \u003d new FindCommandBuilder().withPhone(firstPhonePredicate).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"RingoftheKing"},"content":" FindCommand findPhoneSecondCommand \u003d new FindCommandBuilder().withPhone(secondPhonePredicate).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"RingoftheKing"},"content":" // Same object returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"RingoftheKing"},"content":" assertEquals(findPhoneFirstCommand, findPhoneFirstCommand);","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"RingoftheKing"},"content":" // Same values returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"RingoftheKing"},"content":" assertEquals(findPhoneFirstCommand, findPhoneFirstCopy);","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"RingoftheKing"},"content":" // Different phones returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"RingoftheKing"},"content":" assertNotEquals(findPhoneFirstCommand, findPhoneSecondCommand);","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"RingoftheKing"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"RingoftheKing"},"content":" public void test_equals_withEmailVariations() {","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"RingoftheKing"},"content":" /* vv --------------------------- EMAIL PRED VARIES ------------------------------ */","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"RingoftheKing"},"content":" EmailMatchesPredicate firstEmailPredicate \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"RingoftheKing"},"content":" new EmailMatchesPredicate(\"arona@arhive.com\");","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"RingoftheKing"},"content":" EmailMatchesPredicate secondEmailPredicate \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"RingoftheKing"},"content":" new EmailMatchesPredicate(\"shiroko@blue.com\");","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"RingoftheKing"},"content":" FindCommand findEmailFirstCommand \u003d new FindCommandBuilder().withEmail(firstEmailPredicate).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"RingoftheKing"},"content":" FindCommand firstEmailCopy \u003d new FindCommandBuilder().withEmail(firstEmailPredicate).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"RingoftheKing"},"content":" FindCommand findEmailSecondCommand \u003d new FindCommandBuilder().withEmail(secondEmailPredicate).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":101,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":102,"author":{"gitId":"RingoftheKing"},"content":" // Same values returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":103,"author":{"gitId":"RingoftheKing"},"content":" assertEquals(findEmailFirstCommand, firstEmailCopy);","lastModifiedDate":"2024-03-18"},{"lineNumber":104,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":105,"author":{"gitId":"RingoftheKing"},"content":" // Different values returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":106,"author":{"gitId":"RingoftheKing"},"content":" assertNotEquals(findEmailFirstCommand, findEmailSecondCommand);","lastModifiedDate":"2024-03-18"},{"lineNumber":107,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":109,"author":{"gitId":"RingoftheKing"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":110,"author":{"gitId":"RingoftheKing"},"content":" public void test_equals_withTagVariations() {","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"RingoftheKing"},"content":" /* vv --------------------------- TAG PRED VARIES ----------------------------------- */","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"RingoftheKing"},"content":" TagMatchesPredicate tagFirstPredicate \u003d new TagMatchesPredicate(Tag.TagType.Student.name());","lastModifiedDate":"2024-03-18"},{"lineNumber":113,"author":{"gitId":"RingoftheKing"},"content":" TagMatchesPredicate tagSecondPredicate \u003d new TagMatchesPredicate(Tag.TagType.TA.name());","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":115,"author":{"gitId":"RingoftheKing"},"content":" // Same values returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"RingoftheKing"},"content":" FindCommand firstFindTagCommand \u003d new FindCommandBuilder().withTag(tagFirstPredicate).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"RingoftheKing"},"content":" FindCommand tagCommandCopy \u003d new FindCommandBuilder().withTag(tagFirstPredicate).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":118,"author":{"gitId":"RingoftheKing"},"content":" FindCommand secondFindTagCommand \u003d new FindCommandBuilder().withTag(tagSecondPredicate).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":119,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":120,"author":{"gitId":"RingoftheKing"},"content":" assertEquals(firstFindTagCommand, tagCommandCopy);","lastModifiedDate":"2024-03-18"},{"lineNumber":121,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":122,"author":{"gitId":"RingoftheKing"},"content":" assertNotEquals(firstFindTagCommand, secondFindTagCommand);","lastModifiedDate":"2024-03-18"},{"lineNumber":123,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":124,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":125,"author":{"gitId":"RingoftheKing"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":126,"author":{"gitId":"RingoftheKing"},"content":" public void test_equals_withGroupVariations() {","lastModifiedDate":"2024-03-18"},{"lineNumber":127,"author":{"gitId":"RingoftheKing"},"content":" GroupMatchesPredicate singleGroupPredicate1 \u003d new GroupMatchesPredicate(List.of(\"CS2103T\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":128,"author":{"gitId":"RingoftheKing"},"content":" GroupMatchesPredicate singleGroupPredicate2 \u003d new GroupMatchesPredicate(List.of(\"CS2101\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":129,"author":{"gitId":"RingoftheKing"},"content":" GroupMatchesPredicate multiGroupPredicate1 \u003d new GroupMatchesPredicate(List.of(\"CS2101\", \"CS2103T\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":130,"author":{"gitId":"RingoftheKing"},"content":" GroupMatchesPredicate multiGroupPredicate2 \u003d new GroupMatchesPredicate(List.of(\"CS2101\", \"CS2109S\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":131,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":132,"author":{"gitId":"RingoftheKing"},"content":" FindCommand singleGroupCommand1 \u003d new FindCommandBuilder().withGroups(singleGroupPredicate1).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":133,"author":{"gitId":"RingoftheKing"},"content":" FindCommand singleGroupCommand2 \u003d new FindCommandBuilder().withGroups(singleGroupPredicate2).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":134,"author":{"gitId":"RingoftheKing"},"content":" assertNotEquals(singleGroupCommand1, singleGroupCommand2);","lastModifiedDate":"2024-03-18"},{"lineNumber":135,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":136,"author":{"gitId":"RingoftheKing"},"content":" FindCommand multiGroupCommand1 \u003d new FindCommandBuilder().withGroups(multiGroupPredicate1).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":137,"author":{"gitId":"RingoftheKing"},"content":" FindCommand multiGroupCommand2 \u003d new FindCommandBuilder().withGroups(multiGroupPredicate2).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":138,"author":{"gitId":"RingoftheKing"},"content":" assertNotEquals(multiGroupCommand1, multiGroupCommand2);","lastModifiedDate":"2024-03-18"},{"lineNumber":139,"author":{"gitId":"RingoftheKing"},"content":" assertNotEquals(singleGroupCommand1, multiGroupCommand1);","lastModifiedDate":"2024-03-18"},{"lineNumber":140,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":141,"author":{"gitId":"RingoftheKing"},"content":" FindCommand multiGroupCopy \u003d new FindCommandBuilder().withGroups(multiGroupPredicate1).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":142,"author":{"gitId":"RingoftheKing"},"content":" assertEquals(multiGroupCommand1, multiGroupCopy);","lastModifiedDate":"2024-03-18"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":145,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":146,"author":{"gitId":"-"},"content":" public void execute_zeroKeywords_noPersonFound() {","lastModifiedDate":"2017-08-15"},{"lineNumber":147,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2017-06-12"},{"lineNumber":148,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2018-08-08"},{"lineNumber":149,"author":{"gitId":"RingoftheKing"},"content":" FindCommand command \u003d new FindCommandBuilder().withNamePred(predicate).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":150,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":151,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":156,"author":{"gitId":"-"},"content":" public void execute_multipleKeywords_multiplePersonsFound() {","lastModifiedDate":"2017-08-15"},{"lineNumber":157,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2017-06-12"},{"lineNumber":158,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\"Kurz Elle Kunz\");","lastModifiedDate":"2018-08-08"},{"lineNumber":159,"author":{"gitId":"RingoftheKing"},"content":" FindCommand command \u003d new FindCommandBuilder().withNamePred(predicate).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":160,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":165,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":166,"author":{"gitId":"RingoftheKing"},"content":" public void test_toStringMethod_withNameChange() {","lastModifiedDate":"2024-03-19"},{"lineNumber":167,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2019-02-23"},{"lineNumber":168,"author":{"gitId":"RingoftheKing"},"content":" FindCommand findCommand \u003d new FindCommandBuilder().withNamePred(predicate).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":169,"author":{"gitId":"RingoftheKing"},"content":" String expected \u003d FindCommand.class.getCanonicalName()","lastModifiedDate":"2024-03-19"},{"lineNumber":170,"author":{"gitId":"RingoftheKing"},"content":" + \"{\"","lastModifiedDate":"2024-03-19"},{"lineNumber":171,"author":{"gitId":"RingoftheKing"},"content":" + \"namePredicate\u003d\" + predicate + \", \"","lastModifiedDate":"2024-03-19"},{"lineNumber":172,"author":{"gitId":"RingoftheKing"},"content":" + \"phonePredicate\u003d\" + FindCommandBuilder.DEFAULT_PHONE_PRED + \", \"","lastModifiedDate":"2024-03-19"},{"lineNumber":173,"author":{"gitId":"RingoftheKing"},"content":" + \"emailPredicate\u003d\" + FindCommandBuilder.DEFAULT_EMAIL_PRED + \", \"","lastModifiedDate":"2024-03-19"},{"lineNumber":174,"author":{"gitId":"RingoftheKing"},"content":" + \"tagPredicate\u003d\" + FindCommandBuilder.DEFAULT_TAG_PRED + \", \"","lastModifiedDate":"2024-03-19"},{"lineNumber":175,"author":{"gitId":"RingoftheKing"},"content":" + \"groupPredicate\u003d\" + FindCommandBuilder.DEFAULT_GROUPS_PRED","lastModifiedDate":"2024-03-19"},{"lineNumber":176,"author":{"gitId":"RingoftheKing"},"content":" + \"}\";","lastModifiedDate":"2024-03-19"},{"lineNumber":177,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":180,"author":{"gitId":"RingoftheKing"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":181,"author":{"gitId":"RingoftheKing"},"content":" public void test_toStringMethod_withPhoneChange() {","lastModifiedDate":"2024-03-19"},{"lineNumber":182,"author":{"gitId":"RingoftheKing"},"content":" PhoneMatchesPredicate phoneMatchesPredicate \u003d new PhoneMatchesPredicate(\"123\");","lastModifiedDate":"2024-03-19"},{"lineNumber":183,"author":{"gitId":"RingoftheKing"},"content":" FindCommand findPhoneCommand \u003d new FindCommandBuilder().withPhone(phoneMatchesPredicate).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":184,"author":{"gitId":"RingoftheKing"},"content":" String expectedPhoneChange \u003d FindCommand.class.getCanonicalName()","lastModifiedDate":"2024-03-19"},{"lineNumber":185,"author":{"gitId":"RingoftheKing"},"content":" + \"{\"","lastModifiedDate":"2024-03-19"},{"lineNumber":186,"author":{"gitId":"RingoftheKing"},"content":" + \"namePredicate\u003d\" + FindCommandBuilder.DEFAULT_NAME_PRED + \", \"","lastModifiedDate":"2024-03-19"},{"lineNumber":187,"author":{"gitId":"RingoftheKing"},"content":" + \"phonePredicate\u003d\" + phoneMatchesPredicate + \", \"","lastModifiedDate":"2024-03-19"},{"lineNumber":188,"author":{"gitId":"RingoftheKing"},"content":" + \"emailPredicate\u003d\" + FindCommandBuilder.DEFAULT_EMAIL_PRED + \", \"","lastModifiedDate":"2024-03-19"},{"lineNumber":189,"author":{"gitId":"RingoftheKing"},"content":" + \"tagPredicate\u003d\" + FindCommandBuilder.DEFAULT_TAG_PRED + \", \"","lastModifiedDate":"2024-03-19"},{"lineNumber":190,"author":{"gitId":"RingoftheKing"},"content":" + \"groupPredicate\u003d\" + FindCommandBuilder.DEFAULT_GROUPS_PRED","lastModifiedDate":"2024-03-19"},{"lineNumber":191,"author":{"gitId":"RingoftheKing"},"content":" + \"}\";","lastModifiedDate":"2024-03-19"},{"lineNumber":192,"author":{"gitId":"RingoftheKing"},"content":" assertEquals(findPhoneCommand.toString(), expectedPhoneChange);","lastModifiedDate":"2024-03-19"},{"lineNumber":193,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":194,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":195,"author":{"gitId":"RingoftheKing"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":196,"author":{"gitId":"RingoftheKing"},"content":" public void test_toStringMethod_withEmailChange() {","lastModifiedDate":"2024-03-19"},{"lineNumber":197,"author":{"gitId":"RingoftheKing"},"content":" EmailMatchesPredicate emailMatchesPredicate \u003d new EmailMatchesPredicate(\"bobby\");","lastModifiedDate":"2024-03-19"},{"lineNumber":198,"author":{"gitId":"RingoftheKing"},"content":" FindCommand findPhoneCommand \u003d new FindCommandBuilder().withEmail(emailMatchesPredicate).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":199,"author":{"gitId":"RingoftheKing"},"content":" String expectedPhoneChange \u003d FindCommand.class.getCanonicalName()","lastModifiedDate":"2024-03-19"},{"lineNumber":200,"author":{"gitId":"RingoftheKing"},"content":" + \"{\"","lastModifiedDate":"2024-03-19"},{"lineNumber":201,"author":{"gitId":"RingoftheKing"},"content":" + \"namePredicate\u003d\" + FindCommandBuilder.DEFAULT_NAME_PRED + \", \"","lastModifiedDate":"2024-03-19"},{"lineNumber":202,"author":{"gitId":"RingoftheKing"},"content":" + \"phonePredicate\u003d\" + FindCommandBuilder.DEFAULT_PHONE_PRED + \", \"","lastModifiedDate":"2024-03-19"},{"lineNumber":203,"author":{"gitId":"RingoftheKing"},"content":" + \"emailPredicate\u003d\" + emailMatchesPredicate + \", \"","lastModifiedDate":"2024-03-19"},{"lineNumber":204,"author":{"gitId":"RingoftheKing"},"content":" + \"tagPredicate\u003d\" + FindCommandBuilder.DEFAULT_TAG_PRED + \", \"","lastModifiedDate":"2024-03-19"},{"lineNumber":205,"author":{"gitId":"RingoftheKing"},"content":" + \"groupPredicate\u003d\" + FindCommandBuilder.DEFAULT_GROUPS_PRED","lastModifiedDate":"2024-03-19"},{"lineNumber":206,"author":{"gitId":"RingoftheKing"},"content":" + \"}\";","lastModifiedDate":"2024-03-19"},{"lineNumber":207,"author":{"gitId":"RingoftheKing"},"content":" assertEquals(findPhoneCommand.toString(), expectedPhoneChange);","lastModifiedDate":"2024-03-19"},{"lineNumber":208,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":209,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":210,"author":{"gitId":"RingoftheKing"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":211,"author":{"gitId":"RingoftheKing"},"content":" public void test_toStringMethod_withTagChange() {","lastModifiedDate":"2024-03-19"},{"lineNumber":212,"author":{"gitId":"RingoftheKing"},"content":" TagMatchesPredicate tagMatchesPredicate \u003d new TagMatchesPredicate(\"TA\");","lastModifiedDate":"2024-03-19"},{"lineNumber":213,"author":{"gitId":"RingoftheKing"},"content":" FindCommand findPhoneCommand \u003d new FindCommandBuilder().withTag(tagMatchesPredicate).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":214,"author":{"gitId":"RingoftheKing"},"content":" String expectedPhoneChange \u003d FindCommand.class.getCanonicalName()","lastModifiedDate":"2024-03-19"},{"lineNumber":215,"author":{"gitId":"RingoftheKing"},"content":" + \"{\"","lastModifiedDate":"2024-03-19"},{"lineNumber":216,"author":{"gitId":"RingoftheKing"},"content":" + \"namePredicate\u003d\" + FindCommandBuilder.DEFAULT_NAME_PRED + \", \"","lastModifiedDate":"2024-03-19"},{"lineNumber":217,"author":{"gitId":"RingoftheKing"},"content":" + \"phonePredicate\u003d\" + FindCommandBuilder.DEFAULT_PHONE_PRED + \", \"","lastModifiedDate":"2024-03-19"},{"lineNumber":218,"author":{"gitId":"RingoftheKing"},"content":" + \"emailPredicate\u003d\" + FindCommandBuilder.DEFAULT_EMAIL_PRED + \", \"","lastModifiedDate":"2024-03-19"},{"lineNumber":219,"author":{"gitId":"RingoftheKing"},"content":" + \"tagPredicate\u003d\" + tagMatchesPredicate + \", \"","lastModifiedDate":"2024-03-19"},{"lineNumber":220,"author":{"gitId":"RingoftheKing"},"content":" + \"groupPredicate\u003d\" + FindCommandBuilder.DEFAULT_GROUPS_PRED","lastModifiedDate":"2024-03-19"},{"lineNumber":221,"author":{"gitId":"RingoftheKing"},"content":" + \"}\";","lastModifiedDate":"2024-03-19"},{"lineNumber":222,"author":{"gitId":"RingoftheKing"},"content":" assertEquals(findPhoneCommand.toString(), expectedPhoneChange);","lastModifiedDate":"2024-03-19"},{"lineNumber":223,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":224,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":225,"author":{"gitId":"RingoftheKing"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":226,"author":{"gitId":"RingoftheKing"},"content":" public void test_toStringMethod_withGroupChange() {","lastModifiedDate":"2024-03-19"},{"lineNumber":227,"author":{"gitId":"RingoftheKing"},"content":" GroupMatchesPredicate groupMatchesPredicate \u003d new GroupMatchesPredicate(List.of(\"CS2103T\"));","lastModifiedDate":"2024-03-19"},{"lineNumber":228,"author":{"gitId":"RingoftheKing"},"content":" FindCommand findPhoneCommand \u003d new FindCommandBuilder().withGroups(groupMatchesPredicate).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":229,"author":{"gitId":"RingoftheKing"},"content":" String expectedPhoneChange \u003d FindCommand.class.getCanonicalName()","lastModifiedDate":"2024-03-19"},{"lineNumber":230,"author":{"gitId":"RingoftheKing"},"content":" + \"{\"","lastModifiedDate":"2024-03-19"},{"lineNumber":231,"author":{"gitId":"RingoftheKing"},"content":" + \"namePredicate\u003d\" + FindCommandBuilder.DEFAULT_NAME_PRED + \", \"","lastModifiedDate":"2024-03-19"},{"lineNumber":232,"author":{"gitId":"RingoftheKing"},"content":" + \"phonePredicate\u003d\" + FindCommandBuilder.DEFAULT_PHONE_PRED + \", \"","lastModifiedDate":"2024-03-19"},{"lineNumber":233,"author":{"gitId":"RingoftheKing"},"content":" + \"emailPredicate\u003d\" + FindCommandBuilder.DEFAULT_EMAIL_PRED + \", \"","lastModifiedDate":"2024-03-19"},{"lineNumber":234,"author":{"gitId":"RingoftheKing"},"content":" + \"tagPredicate\u003d\" + FindCommandBuilder.DEFAULT_TAG_PRED + \", \"","lastModifiedDate":"2024-03-19"},{"lineNumber":235,"author":{"gitId":"RingoftheKing"},"content":" + \"groupPredicate\u003d\" + groupMatchesPredicate","lastModifiedDate":"2024-03-19"},{"lineNumber":236,"author":{"gitId":"RingoftheKing"},"content":" + \"}\";","lastModifiedDate":"2024-03-19"},{"lineNumber":237,"author":{"gitId":"RingoftheKing"},"content":" assertEquals(findPhoneCommand.toString(), expectedPhoneChange);","lastModifiedDate":"2024-03-19"},{"lineNumber":238,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":239,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":240,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12"},{"lineNumber":241,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2018-08-08"},{"lineNumber":242,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":243,"author":{"gitId":"-"},"content":" private NameContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2018-08-08"},{"lineNumber":244,"author":{"gitId":"-"},"content":" return new NameContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2018-08-08"},{"lineNumber":245,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":246,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"RingoftheKing":167,"-":79}},{"path":"src/test/java/seedu/address/logic/commands/GroupCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Ragnapop"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"Ragnapop"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"Ragnapop"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"Ragnapop"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"Ragnapop"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY_GROUP;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"Ragnapop"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB_GROUP;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"Ragnapop"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GROUP_HUSBAND;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"Ragnapop"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NUSID_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"Ragnapop"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NUSID_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"Ragnapop"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"Ragnapop"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"Ragnapop"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"Ragnapop"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"Ragnapop"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"Ragnapop"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"Ragnapop"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"Ragnapop"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"Ragnapop"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"Ragnapop"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"Ragnapop"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"Ragnapop"},"content":"import seedu.address.model.person.NusId;","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"Ragnapop"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"Ragnapop"},"content":"import seedu.address.testutil.GroupPersonDescriptorBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"Ragnapop"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"Ragnapop"},"content":"class GroupCommandTest {","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"Ragnapop"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"Ragnapop"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"Ragnapop"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"Ragnapop"},"content":" Person groupedPerson \u003d model.getFilteredPersonList().get(0);","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"Ragnapop"},"content":" PersonBuilder personInList \u003d new PersonBuilder(groupedPerson);","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"Ragnapop"},"content":" GroupCommand.GroupPersonDescriptor descriptor \u003d new GroupPersonDescriptorBuilder(groupedPerson)","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"Ragnapop"},"content":" .build();","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"Ragnapop"},"content":" GroupCommand groupCommand \u003d new GroupCommand(groupedPerson.getNusId(), descriptor);","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"Ragnapop"},"content":" String expectedMessage \u003d String.format(GroupCommand.MESSAGE_GROUP_PERSON_SUCCESS,","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"Ragnapop"},"content":" Messages.format(groupedPerson));","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"Ragnapop"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"Ragnapop"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), groupedPerson);","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"Ragnapop"},"content":" assertCommandSuccess(groupCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"Ragnapop"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"Ragnapop"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"Ragnapop"},"content":" NusId nusId \u003d new NusId(\"E0000000\"); // NusId does not exist","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"Ragnapop"},"content":" GroupCommand groupCommand \u003d new GroupCommand(nusId, new GroupCommand.GroupPersonDescriptor());","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"Ragnapop"},"content":" assertCommandFailure(groupCommand, model, Messages.MESSAGE_NON_EXISTENT_PERSON);","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"Ragnapop"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"Ragnapop"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"Ragnapop"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"Ragnapop"},"content":" NusId nusId \u003d new NusId(\"E0000000\"); // NusId does not exist","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"Ragnapop"},"content":" GroupCommand.GroupPersonDescriptor descriptor \u003d new GroupPersonDescriptorBuilder().withNusId(\"E0000000\")","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"Ragnapop"},"content":" .build();","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"Ragnapop"},"content":" GroupCommand editCommand \u003d new GroupCommand(nusId, descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"Ragnapop"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_NON_EXISTENT_PERSON);","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"Ragnapop"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":72,"author":{"gitId":"Ragnapop"},"content":" public void equals() {","lastModifiedDate":"2024-03-14"},{"lineNumber":73,"author":{"gitId":"Ragnapop"},"content":" final GroupCommand standardCommand \u003d","lastModifiedDate":"2024-03-14"},{"lineNumber":74,"author":{"gitId":"Ragnapop"},"content":" new GroupCommand(new NusId(VALID_NUSID_AMY), DESC_AMY_GROUP);","lastModifiedDate":"2024-03-14"},{"lineNumber":75,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":76,"author":{"gitId":"Ragnapop"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-14"},{"lineNumber":77,"author":{"gitId":"Ragnapop"},"content":" GroupCommand.GroupPersonDescriptor copyDescriptor \u003d","lastModifiedDate":"2024-03-14"},{"lineNumber":78,"author":{"gitId":"Ragnapop"},"content":" new GroupPersonDescriptorBuilder().withNusId(VALID_NUSID_AMY).withTag(VALID_TAG_AMY)","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"Ragnapop"},"content":" .withGroups(VALID_GROUP_HUSBAND).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":81,"author":{"gitId":"Ragnapop"},"content":" GroupCommand commandWithSameValues \u003d new GroupCommand(new NusId(VALID_NUSID_AMY), copyDescriptor);","lastModifiedDate":"2024-03-14"},{"lineNumber":82,"author":{"gitId":"Ragnapop"},"content":" //assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":84,"author":{"gitId":"Ragnapop"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-14"},{"lineNumber":85,"author":{"gitId":"Ragnapop"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-03-14"},{"lineNumber":86,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":87,"author":{"gitId":"Ragnapop"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":88,"author":{"gitId":"Ragnapop"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-03-14"},{"lineNumber":89,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":90,"author":{"gitId":"Ragnapop"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":91,"author":{"gitId":"Ragnapop"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2024-03-14"},{"lineNumber":92,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":93,"author":{"gitId":"Ragnapop"},"content":" // different index -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":94,"author":{"gitId":"Ragnapop"},"content":" assertFalse(standardCommand.equals(new GroupCommand(new NusId(VALID_NUSID_AMY), DESC_AMY_GROUP)));","lastModifiedDate":"2024-03-14"},{"lineNumber":95,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":96,"author":{"gitId":"Ragnapop"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":97,"author":{"gitId":"Ragnapop"},"content":" assertFalse(standardCommand.equals(new GroupCommand(new NusId(VALID_NUSID_BOB), DESC_BOB_GROUP)));","lastModifiedDate":"2024-03-14"},{"lineNumber":98,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":99,"author":{"gitId":"Ragnapop"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":100,"author":{"gitId":"Ragnapop"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-14"},{"lineNumber":101,"author":{"gitId":"Ragnapop"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-14"},{"lineNumber":102,"author":{"gitId":"Ragnapop"},"content":" GroupCommand.GroupPersonDescriptor groupPersonDescriptor \u003d new GroupCommand.GroupPersonDescriptor();","lastModifiedDate":"2024-03-14"},{"lineNumber":103,"author":{"gitId":"Ragnapop"},"content":" GroupCommand groupCommand \u003d new GroupCommand(new NusId(VALID_NUSID_BOB),","lastModifiedDate":"2024-03-14"},{"lineNumber":104,"author":{"gitId":"Ragnapop"},"content":" groupPersonDescriptor);","lastModifiedDate":"2024-03-14"},{"lineNumber":105,"author":{"gitId":"Ragnapop"},"content":" String expected \u003d GroupCommand.class.getCanonicalName() + \"{nusid\u003d\" + VALID_NUSID_BOB","lastModifiedDate":"2024-03-20"},{"lineNumber":106,"author":{"gitId":"Ragnapop"},"content":" + \", groupPersonDescriptor\u003d\"","lastModifiedDate":"2024-03-19"},{"lineNumber":107,"author":{"gitId":"Ragnapop"},"content":" + groupPersonDescriptor + \"}\";","lastModifiedDate":"2024-03-14"},{"lineNumber":108,"author":{"gitId":"Ragnapop"},"content":" assertEquals(expected, groupCommand.toString());","lastModifiedDate":"2024-03-14"},{"lineNumber":109,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":110,"author":{"gitId":"Ragnapop"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"Ragnapop":110}},{"path":"src/test/java/seedu/address/logic/commands/ScheduleCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Rikko1204"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"Rikko1204"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"Rikko1204"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_REMARK_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SCHEDULE_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"Rikko1204"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"Rikko1204"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"Rikko1204"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"Rikko1204"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"Rikko1204"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"Rikko1204"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"Rikko1204"},"content":"import seedu.address.model.person.Schedule;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"Rikko1204"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"Rikko1204"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"Rikko1204"},"content":" * Contains integration tests (interaction with the Model) and unit tests for ScheduleCommand.","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"Rikko1204"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"Rikko1204"},"content":"public class ScheduleCommandTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"Rikko1204"},"content":" private static final String SCHEDULE_STUB \u003d \"12-12-2012\";","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"Rikko1204"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"Rikko1204"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"Rikko1204"},"content":" public void equals() {","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"Rikko1204"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"Rikko1204"},"content":" final ScheduleCommand standardCommand \u003d","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"Rikko1204"},"content":" new ScheduleCommand(person.getNusId(), person.getSchedule(), person.getRemark());","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"Rikko1204"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"Rikko1204"},"content":" ScheduleCommand commandWithSameValues \u003d","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"Rikko1204"},"content":" new ScheduleCommand(person.getNusId(), person.getSchedule(), person.getRemark());","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"Rikko1204"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"Rikko1204"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"Rikko1204"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"Rikko1204"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"Rikko1204"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"Rikko1204"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"Rikko1204"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"Rikko1204"},"content":" // different schedule -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"Rikko1204"},"content":" assertFalse(standardCommand.equals(new ScheduleCommand(person.getNusId(),","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"Rikko1204"},"content":" new Schedule(VALID_SCHEDULE_AMY), person.getRemark())));","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"Rikko1204"},"content":" // different remark -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"Rikko1204"},"content":" assertFalse(standardCommand.equals(new ScheduleCommand(person.getNusId(),","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"Rikko1204"},"content":" person.getSchedule(), new Remark(VALID_REMARK_AMY))));","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"Rikko1204"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"Rikko1204":49}},{"path":"src/test/java/seedu/address/logic/commands/ViewCommandTest.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":"-"},"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":"hjuntan"},"content":" * Contains integration tests (interaction with the Model) and unit tests for ViewCommand.","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"hjuntan"},"content":"public class ViewCommandTest {","lastModifiedDate":"2024-03-20"},{"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":"hjuntan"},"content":" assertCommandSuccess(new ViewCommand(), model, ViewCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-03-20"},{"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":"hjuntan"},"content":" assertCommandSuccess(new ViewCommand(), model, ViewCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"hjuntan":4,"-":35}},{"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":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.logic.commands.CommandTestUtil.GROUP_DESC_FRIEND;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.logic.commands.CommandTestUtil.GROUP_DESC_HUSBAND;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_GROUP_DESC;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NUSID_DESC;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NUSID_DESC_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NUSID_DESC_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GROUP_FRIEND;","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GROUP_HUSBAND;","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NUSID_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NUSID;","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":35,"author":{"gitId":"hjuntan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-11"},{"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":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15"},{"lineNumber":45,"author":{"gitId":"hjuntan"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15"},{"lineNumber":48,"author":{"gitId":"Rikko1204"},"content":"import seedu.address.model.person.NusId;","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-06-15"},{"lineNumber":51,"author":{"gitId":"hjuntan"},"content":"import seedu.address.model.person.Tag;","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":59,"author":{"gitId":"hjuntan"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withGroups(VALID_GROUP_FRIEND).build();","lastModifiedDate":"2024-03-11"},{"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":"Rikko1204"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NUSID_DESC_BOB + NAME_DESC_BOB + PHONE_DESC_BOB","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"Rikko1204"},"content":" + EMAIL_DESC_BOB + TAG_DESC_BOB + GROUP_DESC_FRIEND, new AddCommand(expectedPerson));","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":66,"author":{"gitId":"hjuntan"},"content":" // multiple groups - all accepted","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"hjuntan"},"content":" Person expectedPersonMultipleGroups \u003d new PersonBuilder(BOB).withGroups(VALID_GROUP_FRIEND, VALID_GROUP_HUSBAND)","lastModifiedDate":"2024-03-11"},{"lineNumber":68,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25"},{"lineNumber":69,"author":{"gitId":"Rikko1204"},"content":" assertParseSuccess(parser, NUSID_DESC_BOB + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"Rikko1204"},"content":" + TAG_DESC_BOB + GROUP_DESC_HUSBAND + GROUP_DESC_FRIEND,","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"hjuntan"},"content":" new AddCommand(expectedPersonMultipleGroups));","lastModifiedDate":"2024-03-11"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14"},{"lineNumber":75,"author":{"gitId":"hjuntan"},"content":" public void parse_repeatedNonGroupValue_failure() {","lastModifiedDate":"2024-03-11"},{"lineNumber":76,"author":{"gitId":"Rikko1204"},"content":" String validExpectedPersonString \u003d NUSID_DESC_BOB + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"hjuntan"},"content":" + TAG_DESC_BOB + GROUP_DESC_FRIEND;","lastModifiedDate":"2024-03-11"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":79,"author":{"gitId":"Rikko1204"},"content":" // multiple nusIds","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"Rikko1204"},"content":" assertParseFailure(parser, NUSID_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-12"},{"lineNumber":81,"author":{"gitId":"Rikko1204"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NUSID));","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":95,"author":{"gitId":"hjuntan"},"content":" // multiple tags","lastModifiedDate":"2024-03-11"},{"lineNumber":96,"author":{"gitId":"hjuntan"},"content":" assertParseFailure(parser, TAG_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-11"},{"lineNumber":97,"author":{"gitId":"hjuntan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TAG));","lastModifiedDate":"2024-03-11"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":99,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":101,"author":{"gitId":"hjuntan"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY + TAG_DESC_AMY","lastModifiedDate":"2024-03-11"},{"lineNumber":102,"author":{"gitId":"-"},"content":" + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":103,"author":{"gitId":"Rikko1204"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NUSID, PREFIX_NAME, PREFIX_TAG,","lastModifiedDate":"2024-03-12"},{"lineNumber":104,"author":{"gitId":"Rikko1204"},"content":" PREFIX_EMAIL, PREFIX_PHONE));","lastModifiedDate":"2024-03-12"},{"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":"Rikko1204"},"content":" // invalid nusId","lastModifiedDate":"2024-03-12"},{"lineNumber":109,"author":{"gitId":"Rikko1204"},"content":" assertParseFailure(parser, INVALID_NUSID_DESC + validExpectedPersonString,","lastModifiedDate":"2024-03-12"},{"lineNumber":110,"author":{"gitId":"Rikko1204"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NUSID));","lastModifiedDate":"2024-03-12"},{"lineNumber":111,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":112,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":124,"author":{"gitId":"hjuntan"},"content":" // invalid tag","lastModifiedDate":"2024-03-11"},{"lineNumber":125,"author":{"gitId":"hjuntan"},"content":" assertParseFailure(parser, INVALID_TAG_DESC + validExpectedPersonString,","lastModifiedDate":"2024-03-11"},{"lineNumber":126,"author":{"gitId":"hjuntan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TAG));","lastModifiedDate":"2024-03-11"},{"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":"Rikko1204"},"content":" // invalid nusId","lastModifiedDate":"2024-03-12"},{"lineNumber":131,"author":{"gitId":"Rikko1204"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NUSID_DESC,","lastModifiedDate":"2024-03-12"},{"lineNumber":132,"author":{"gitId":"Rikko1204"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NUSID));","lastModifiedDate":"2024-03-12"},{"lineNumber":133,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":134,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":138,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":140,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":142,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":144,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":146,"author":{"gitId":"hjuntan"},"content":" // invalid tag","lastModifiedDate":"2024-03-11"},{"lineNumber":147,"author":{"gitId":"hjuntan"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_TAG_DESC,","lastModifiedDate":"2024-03-11"},{"lineNumber":148,"author":{"gitId":"hjuntan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TAG));","lastModifiedDate":"2024-03-11"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":151,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":152,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":153,"author":{"gitId":"hjuntan"},"content":" // zero groups","lastModifiedDate":"2024-03-11"},{"lineNumber":154,"author":{"gitId":"hjuntan"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withGroups().build();","lastModifiedDate":"2024-03-11"},{"lineNumber":155,"author":{"gitId":"Rikko1204"},"content":" assertParseSuccess(parser, NUSID_DESC_AMY + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2024-03-12"},{"lineNumber":156,"author":{"gitId":"Rikko1204"},"content":" + EMAIL_DESC_AMY + TAG_DESC_AMY, new AddCommand(expectedPerson));","lastModifiedDate":"2024-03-12"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":159,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":160,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":161,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":163,"author":{"gitId":"Rikko1204"},"content":" // missing nusId prefix","lastModifiedDate":"2024-03-12"},{"lineNumber":164,"author":{"gitId":"Rikko1204"},"content":" assertParseFailure(parser, VALID_NUSID_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + TAG_DESC_BOB,","lastModifiedDate":"2024-03-12"},{"lineNumber":165,"author":{"gitId":"Rikko1204"},"content":" expectedMessage);","lastModifiedDate":"2024-03-12"},{"lineNumber":166,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":167,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":168,"author":{"gitId":"hjuntan"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + TAG_DESC_BOB,","lastModifiedDate":"2024-03-11"},{"lineNumber":169,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":171,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":172,"author":{"gitId":"hjuntan"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB + TAG_DESC_BOB,","lastModifiedDate":"2024-03-11"},{"lineNumber":173,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":175,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":176,"author":{"gitId":"hjuntan"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + TAG_DESC_BOB,","lastModifiedDate":"2024-03-11"},{"lineNumber":177,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":179,"author":{"gitId":"hjuntan"},"content":" // missing tag prefix","lastModifiedDate":"2024-03-11"},{"lineNumber":180,"author":{"gitId":"hjuntan"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_TAG_BOB,","lastModifiedDate":"2024-03-11"},{"lineNumber":181,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":183,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15"},{"lineNumber":184,"author":{"gitId":"hjuntan"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_TAG_BOB,","lastModifiedDate":"2024-03-11"},{"lineNumber":185,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":188,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":189,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":190,"author":{"gitId":"Rikko1204"},"content":" // invalid nusId","lastModifiedDate":"2024-03-12"},{"lineNumber":191,"author":{"gitId":"Rikko1204"},"content":" assertParseFailure(parser, INVALID_NUSID_DESC + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-12"},{"lineNumber":192,"author":{"gitId":"Rikko1204"},"content":" + TAG_DESC_BOB + GROUP_DESC_HUSBAND + GROUP_DESC_FRIEND, NusId.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":193,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":194,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":195,"author":{"gitId":"Rikko1204"},"content":" assertParseFailure(parser, NUSID_DESC_BOB + INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-12"},{"lineNumber":196,"author":{"gitId":"Rikko1204"},"content":" + TAG_DESC_BOB + GROUP_DESC_HUSBAND + GROUP_DESC_FRIEND, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":198,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15"},{"lineNumber":199,"author":{"gitId":"Rikko1204"},"content":" assertParseFailure(parser, NUSID_DESC_BOB + NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-12"},{"lineNumber":200,"author":{"gitId":"Rikko1204"},"content":" + TAG_DESC_BOB + GROUP_DESC_HUSBAND + GROUP_DESC_FRIEND, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":202,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15"},{"lineNumber":203,"author":{"gitId":"Rikko1204"},"content":" assertParseFailure(parser, NUSID_DESC_BOB + NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC","lastModifiedDate":"2024-03-12"},{"lineNumber":204,"author":{"gitId":"Rikko1204"},"content":" + TAG_DESC_BOB + GROUP_DESC_HUSBAND + GROUP_DESC_FRIEND, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":206,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2024-03-11"},{"lineNumber":207,"author":{"gitId":"Rikko1204"},"content":" assertParseFailure(parser, NUSID_DESC_BOB + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-12"},{"lineNumber":208,"author":{"gitId":"Rikko1204"},"content":" + INVALID_TAG_DESC + GROUP_DESC_HUSBAND + GROUP_DESC_FRIEND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":210,"author":{"gitId":"hjuntan"},"content":" // invalid group","lastModifiedDate":"2024-03-11"},{"lineNumber":211,"author":{"gitId":"Rikko1204"},"content":" assertParseFailure(parser, NUSID_DESC_BOB + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-12"},{"lineNumber":212,"author":{"gitId":"Rikko1204"},"content":" + TAG_DESC_BOB + INVALID_GROUP_DESC + VALID_GROUP_FRIEND, Group.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":214,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":215,"author":{"gitId":"Rikko1204"},"content":" assertParseFailure(parser, NUSID_DESC_BOB + INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-12"},{"lineNumber":216,"author":{"gitId":"Rikko1204"},"content":" + INVALID_TAG_DESC, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":219,"author":{"gitId":"Rikko1204"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NUSID_DESC_BOB + NAME_DESC_BOB + PHONE_DESC_BOB","lastModifiedDate":"2024-03-12"},{"lineNumber":220,"author":{"gitId":"Rikko1204"},"content":" + EMAIL_DESC_BOB + TAG_DESC_BOB + GROUP_DESC_HUSBAND + GROUP_DESC_FRIEND,","lastModifiedDate":"2024-03-12"},{"lineNumber":221,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":223,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"Rikko1204":56,"hjuntan":28,"-":139}},{"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":"","lastModifiedDate":"2017-05-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-06-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":22,"author":{"gitId":"Rikko1204"},"content":"import seedu.address.logic.commands.ScheduleCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"hjuntan"},"content":"import seedu.address.logic.commands.ViewCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"cheahTJ"},"content":"import seedu.address.model.person.NusId;","lastModifiedDate":"2024-03-13"},{"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":"RingoftheKing"},"content":"import seedu.address.testutil.FindCommandBuilder;","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"cheahTJ"},"content":" NusId testNusId \u003d new NusId(\"E1234567\");","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"cheahTJ"},"content":" DeleteCommand.COMMAND_WORD + \" \" + testNusId);","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"cheahTJ"},"content":" assertEquals(new DeleteCommand(testNusId), command);","lastModifiedDate":"2024-03-13"},{"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_edit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":60,"author":{"gitId":"cheahTJ"},"content":" String defaultNusId \u003d \"E1234567\";","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"cheahTJ"},"content":" NusId nusId \u003d new NusId(defaultNusId);","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27"},{"lineNumber":66,"author":{"gitId":"cheahTJ"},"content":" + defaultNusId + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"cheahTJ"},"content":" assertEquals(new EditCommand(nusId, descriptor), command);","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":77,"author":{"gitId":"RingoftheKing"},"content":" public void parseCommand_findName() throws Exception {","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12"},{"lineNumber":79,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":80,"author":{"gitId":"RingoftheKing"},"content":" FindCommand.COMMAND_WORD + \" \" + CliSyntax.PREFIX_NAME + String.join(\" \", keywords));","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"RingoftheKing"},"content":" assertEquals(new FindCommandBuilder().withNamePred(","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"RingoftheKing"},"content":" new NameContainsKeywordsPredicate(keywords)).build(), command);","lastModifiedDate":"2024-03-21"},{"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_help() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","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":"Rikko1204"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"Rikko1204"},"content":" public void parseCommand_schedule() throws Exception {","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"Rikko1204"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"Rikko1204"},"content":" ScheduleCommand command \u003d (ScheduleCommand) parser.parseCommand(","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"Rikko1204"},"content":" ScheduleCommand.COMMAND_WORD + \" \" + PersonUtil.getPersonScheduleDetails(person));","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"Rikko1204"},"content":" assertEquals(new ScheduleCommand(person.getNusId(), person.getSchedule(), person.getRemark()), command);","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":101,"author":{"gitId":"hjuntan"},"content":" assertTrue(parser.parseCommand(ViewCommand.COMMAND_WORD) instanceof ViewCommand);","lastModifiedDate":"2024-03-20"},{"lineNumber":102,"author":{"gitId":"hjuntan"},"content":" assertTrue(parser.parseCommand(ViewCommand.COMMAND_WORD + \" 3\") instanceof ViewCommand);","lastModifiedDate":"2024-03-20"},{"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_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":115,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"cheahTJ":9,"Rikko1204":9,"RingoftheKing":5,"hjuntan":3,"-":89}},{"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":"-"},"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":"hjuntan"},"content":" String argsString \u003d \" some random string /t group with leading and trailing spaces \";","lastModifiedDate":"2024-03-11"},{"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":{"hjuntan":1,"-":149}},{"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":"Ragnapop"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"Ragnapop"},"content":" * Asserts that the parsing of {@code userInput} by {@code parser} is successful and the command created","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"Ragnapop"},"content":" * equals to {@code expectedCommand}.Specialised for group command.","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"Ragnapop"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"Ragnapop"},"content":" public static void assertParseSuccessGroup(Parser\u003c? extends Command\u003e parser, String userInput,","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"Ragnapop"},"content":" Command expectedCommand) {","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"Ragnapop"},"content":" try {","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"Ragnapop"},"content":" Command command \u003d parser.parse(userInput);","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"Ragnapop"},"content":" assertEquals(expectedCommand.toString(), command.toString());","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"Ragnapop"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"Ragnapop"},"content":" throw new IllegalArgumentException(\"Invalid userInput.\", pe);","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-06"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Asserts that the parsing of {@code userInput} by {@code parser} is unsuccessful and the error message","lastModifiedDate":"2017-07-06"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * equals to {@code expectedMessage}.","lastModifiedDate":"2017-07-06"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-06"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static void assertParseFailure(Parser\u003c? extends Command\u003e parser, String userInput, String expectedMessage) {","lastModifiedDate":"2022-02-20"},{"lineNumber":45,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-07-06"},{"lineNumber":46,"author":{"gitId":"-"},"content":" parser.parse(userInput);","lastModifiedDate":"2017-07-06"},{"lineNumber":47,"author":{"gitId":"-"},"content":" throw new AssertionError(\"The expected ParseException was not thrown.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":48,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2017-07-06"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, pe.getMessage());","lastModifiedDate":"2017-07-06"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-06"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-06"},{"lineNumber":52,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-07-06"}],"authorContributionMap":{"Ragnapop":13,"-":39}},{"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":"2017-06-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-09"},{"lineNumber":10,"author":{"gitId":"cheahTJ"},"content":"import seedu.address.model.person.NusId;","lastModifiedDate":"2024-03-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":"cheahTJ"},"content":" NusId testNusId \u003d new NusId(\"E1234567\");","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"cheahTJ"},"content":" assertParseSuccess(parser, \"E1234567\", new DeleteCommand(testNusId));","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"a\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-07-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09"}],"authorContributionMap":{"cheahTJ":3,"-":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.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":"hjuntan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.GROUP_DESC_FRIEND;","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"hjuntan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.GROUP_DESC_HUSBAND;","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"hjuntan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_GROUP_DESC;","lastModifiedDate":"2024-03-11"},{"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":"2024-03-11"},{"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":"hjuntan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"hjuntan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_BOB;","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":19,"author":{"gitId":"hjuntan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GROUP_FRIEND;","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"hjuntan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GROUP_HUSBAND;","lastModifiedDate":"2024-03-11"},{"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":"hjuntan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":26,"author":{"gitId":"hjuntan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GROUP;","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-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":"","lastModifiedDate":"2017-05-04"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-04"},{"lineNumber":37,"author":{"gitId":"hjuntan"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"cheahTJ"},"content":"import seedu.address.model.person.NusId;","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"cheahTJ"},"content":"import seedu.address.model.person.Tag;","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":47,"author":{"gitId":"hjuntan"},"content":" private static final String GROUP_EMPTY \u003d \" \" + PREFIX_GROUP;","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":49,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":60,"author":{"gitId":"cheahTJ"},"content":" assertParseFailure(parser, \"E0123456\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":69,"author":{"gitId":"cheahTJ"},"content":" assertParseFailure(parser, \"E0123456 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":72,"author":{"gitId":"cheahTJ"},"content":" assertParseFailure(parser, \"E0123456 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-19"},{"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_invalidValue_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":77,"author":{"gitId":"cheahTJ"},"content":" assertParseFailure(parser, \"E0123456\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"cheahTJ"},"content":" assertParseFailure(parser, \"E0123456\" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"cheahTJ"},"content":" assertParseFailure(parser, \"E0123456\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"cheahTJ"},"content":" assertParseFailure(parser, \"E0123456\" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"cheahTJ"},"content":" assertParseFailure(parser, \"E0123456\" + INVALID_GROUP_DESC, Group.MESSAGE_CONSTRAINTS); // invalid group","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":83,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04"},{"lineNumber":84,"author":{"gitId":"cheahTJ"},"content":" assertParseFailure(parser, \"E0123456\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":86,"author":{"gitId":"hjuntan"},"content":" // while parsing {@code PREFIX_GROUP} alone will reset the groups of the {@code Person} being edited,","lastModifiedDate":"2024-03-11"},{"lineNumber":87,"author":{"gitId":"hjuntan"},"content":" // parsing it together with a valid group results in error","lastModifiedDate":"2024-03-11"},{"lineNumber":88,"author":{"gitId":"cheahTJ"},"content":" assertParseFailure(parser, \"E0123456\" + GROUP_DESC_FRIEND + GROUP_DESC_HUSBAND","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"hjuntan"},"content":" + GROUP_EMPTY, Group.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-11"},{"lineNumber":90,"author":{"gitId":"cheahTJ"},"content":" assertParseFailure(parser, \"E0123456\" + GROUP_DESC_FRIEND + GROUP_EMPTY","lastModifiedDate":"2024-03-19"},{"lineNumber":91,"author":{"gitId":"hjuntan"},"content":" + GROUP_DESC_HUSBAND, Group.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-11"},{"lineNumber":92,"author":{"gitId":"cheahTJ"},"content":" assertParseFailure(parser, \"E0123456\" + GROUP_EMPTY + GROUP_DESC_FRIEND","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"hjuntan"},"content":" + GROUP_DESC_HUSBAND, Group.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-11"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":95,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04"},{"lineNumber":96,"author":{"gitId":"cheahTJ"},"content":" assertParseFailure(parser, \"E0123456\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"hjuntan"},"content":" + VALID_TAG_AMY + VALID_PHONE_AMY,","lastModifiedDate":"2024-03-11"},{"lineNumber":98,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":102,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":103,"author":{"gitId":"cheahTJ"},"content":" //Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"cheahTJ"},"content":" String defaultNusId \u003d \"E1234567\";","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"cheahTJ"},"content":" NusId nusId \u003d new NusId(defaultNusId);","lastModifiedDate":"2024-03-19"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":107,"author":{"gitId":"cheahTJ"},"content":" String userInput \u003d defaultNusId + PHONE_DESC_BOB + GROUP_DESC_HUSBAND","lastModifiedDate":"2024-03-19"},{"lineNumber":108,"author":{"gitId":"hjuntan"},"content":" + EMAIL_DESC_AMY + TAG_DESC_AMY + NAME_DESC_AMY + GROUP_DESC_FRIEND;","lastModifiedDate":"2024-03-11"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":110,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-05-04"},{"lineNumber":111,"author":{"gitId":"hjuntan"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withTag(VALID_TAG_AMY)","lastModifiedDate":"2024-03-11"},{"lineNumber":112,"author":{"gitId":"hjuntan"},"content":" .withGroups(VALID_GROUP_HUSBAND, VALID_GROUP_FRIEND).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":113,"author":{"gitId":"cheahTJ"},"content":" EditCommand expectedCommand \u003d new EditCommand(nusId, descriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":119,"author":{"gitId":"cheahTJ"},"content":" //Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-19"},{"lineNumber":120,"author":{"gitId":"cheahTJ"},"content":" String defaultNusId \u003d \"E1234567\";","lastModifiedDate":"2024-03-19"},{"lineNumber":121,"author":{"gitId":"cheahTJ"},"content":" NusId nusId \u003d new NusId(defaultNusId);","lastModifiedDate":"2024-03-19"},{"lineNumber":122,"author":{"gitId":"cheahTJ"},"content":" String userInput \u003d defaultNusId + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":124,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-04"},{"lineNumber":125,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":126,"author":{"gitId":"cheahTJ"},"content":" EditCommand expectedCommand \u003d new EditCommand(nusId, descriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":132,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":133,"author":{"gitId":"cheahTJ"},"content":" String defaultNusId \u003d \"E1234567\";","lastModifiedDate":"2024-03-19"},{"lineNumber":134,"author":{"gitId":"cheahTJ"},"content":" NusId nusId \u003d new NusId(defaultNusId);","lastModifiedDate":"2024-03-19"},{"lineNumber":135,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":136,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04"},{"lineNumber":137,"author":{"gitId":"cheahTJ"},"content":" //Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2024-03-19"},{"lineNumber":138,"author":{"gitId":"cheahTJ"},"content":" String userInput \u003d defaultNusId + NAME_DESC_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":139,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":140,"author":{"gitId":"cheahTJ"},"content":" EditCommand expectedCommand \u003d new EditCommand(nusId, descriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":143,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2017-05-04"},{"lineNumber":144,"author":{"gitId":"cheahTJ"},"content":" userInput \u003d defaultNusId + PHONE_DESC_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":145,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":146,"author":{"gitId":"cheahTJ"},"content":" expectedCommand \u003d new EditCommand(nusId, descriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":147,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":149,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04"},{"lineNumber":150,"author":{"gitId":"cheahTJ"},"content":" userInput \u003d defaultNusId + EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":151,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":152,"author":{"gitId":"cheahTJ"},"content":" expectedCommand \u003d new EditCommand(nusId, descriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":153,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":155,"author":{"gitId":"hjuntan"},"content":" // tag","lastModifiedDate":"2024-03-11"},{"lineNumber":156,"author":{"gitId":"cheahTJ"},"content":" userInput \u003d defaultNusId + TAG_DESC_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":157,"author":{"gitId":"hjuntan"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withTag(VALID_TAG_AMY).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":158,"author":{"gitId":"cheahTJ"},"content":" expectedCommand \u003d new EditCommand(nusId, descriptor);","lastModifiedDate":"2024-03-19"},{"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":"hjuntan"},"content":" // groups","lastModifiedDate":"2024-03-11"},{"lineNumber":162,"author":{"gitId":"cheahTJ"},"content":" userInput \u003d defaultNusId + GROUP_DESC_FRIEND;","lastModifiedDate":"2024-03-19"},{"lineNumber":163,"author":{"gitId":"hjuntan"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withGroups(VALID_GROUP_FRIEND).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":164,"author":{"gitId":"cheahTJ"},"content":" expectedCommand \u003d new EditCommand(nusId, descriptor);","lastModifiedDate":"2024-03-19"},{"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":"","lastModifiedDate":"2017-05-04"},{"lineNumber":168,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":169,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":170,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14"},{"lineNumber":171,"author":{"gitId":"hjuntan"},"content":" // AddCommandParserTest#parse_repeatedNonGroupValue_failure()","lastModifiedDate":"2024-03-11"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":173,"author":{"gitId":"cheahTJ"},"content":" String defaultNusId \u003d \"E1234567\";","lastModifiedDate":"2024-03-19"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":175,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14"},{"lineNumber":176,"author":{"gitId":"cheahTJ"},"content":" //Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-19"},{"lineNumber":177,"author":{"gitId":"cheahTJ"},"content":" String userInput \u003d defaultNusId + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":179,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":181,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14"},{"lineNumber":182,"author":{"gitId":"cheahTJ"},"content":" userInput \u003d defaultNusId + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2024-03-19"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":184,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":186,"author":{"gitId":"hjuntan"},"content":" // multiple valid fields repeated","lastModifiedDate":"2024-03-11"},{"lineNumber":187,"author":{"gitId":"cheahTJ"},"content":" userInput \u003d defaultNusId + PHONE_DESC_AMY + TAG_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2024-03-19"},{"lineNumber":188,"author":{"gitId":"hjuntan"},"content":" + GROUP_DESC_FRIEND + PHONE_DESC_AMY + TAG_DESC_AMY + EMAIL_DESC_AMY + GROUP_DESC_FRIEND","lastModifiedDate":"2024-03-11"},{"lineNumber":189,"author":{"gitId":"hjuntan"},"content":" + PHONE_DESC_BOB + TAG_DESC_BOB + EMAIL_DESC_BOB + GROUP_DESC_HUSBAND;","lastModifiedDate":"2024-03-11"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":191,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":192,"author":{"gitId":"hjuntan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_TAG));","lastModifiedDate":"2024-03-11"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":194,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14"},{"lineNumber":195,"author":{"gitId":"cheahTJ"},"content":" userInput \u003d defaultNusId + INVALID_PHONE_DESC + INVALID_TAG_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2024-03-19"},{"lineNumber":196,"author":{"gitId":"hjuntan"},"content":" + INVALID_PHONE_DESC + INVALID_TAG_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2024-03-11"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":198,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":199,"author":{"gitId":"hjuntan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_TAG));","lastModifiedDate":"2024-03-11"},{"lineNumber":200,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":202,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":203,"author":{"gitId":"hjuntan"},"content":" public void parse_resetGroups_success() {","lastModifiedDate":"2024-03-11"},{"lineNumber":204,"author":{"gitId":"cheahTJ"},"content":" String defaultNusId \u003d \"E1234567\";","lastModifiedDate":"2024-03-19"},{"lineNumber":205,"author":{"gitId":"cheahTJ"},"content":" NusId nusId \u003d new NusId(defaultNusId);","lastModifiedDate":"2024-03-19"},{"lineNumber":206,"author":{"gitId":"cheahTJ"},"content":" //Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2024-03-19"},{"lineNumber":207,"author":{"gitId":"cheahTJ"},"content":" String userInput \u003d defaultNusId + GROUP_EMPTY;","lastModifiedDate":"2024-03-19"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":209,"author":{"gitId":"hjuntan"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withGroups().build();","lastModifiedDate":"2024-03-11"},{"lineNumber":210,"author":{"gitId":"cheahTJ"},"content":" EditCommand expectedCommand \u003d new EditCommand(nusId, descriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":212,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":213,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":214,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04"}],"authorContributionMap":{"cheahTJ":50,"hjuntan":33,"-":131}},{"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":"RingoftheKing"},"content":"import static seedu.address.logic.Messages.MESSAGE_AT_LEAST_ONE_FIELD_REQUIRED;","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"RingoftheKing"},"content":"import seedu.address.testutil.FindCommandBuilder;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"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":"-"},"content":" private FindCommandParser parser \u003d new FindCommandParser();","lastModifiedDate":"2017-06-27"},{"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":"RingoftheKing"},"content":" assertParseFailure(parser, \" \",","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"RingoftheKing"},"content":" String.format(MESSAGE_AT_LEAST_ONE_FIELD_REQUIRED + FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsFindCommand() {","lastModifiedDate":"2017-08-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2017-06-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" FindCommand expectedFindCommand \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"RingoftheKing"},"content":" new FindCommandBuilder().withNamePred(new NameContainsKeywordsPredicate(Arrays","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"RingoftheKing"},"content":" .asList(\"Alice\", \"Bob\"))).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"RingoftheKing"},"content":" assertParseSuccess(parser, \" n/Alice Bob\", expectedFindCommand);","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2017-06-27"},{"lineNumber":34,"author":{"gitId":"RingoftheKing"},"content":" assertParseSuccess(parser, \" n/ \\n Alice \\n \\t Bob \\t\", expectedFindCommand);","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-27"}],"authorContributionMap":{"RingoftheKing":8,"-":29}},{"path":"src/test/java/seedu/address/logic/parser/GroupCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Ragnapop"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"Ragnapop"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"Ragnapop"},"content":"import static seedu.address.logic.commands.CommandTestUtil.GROUP_DESC_HUSBAND;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"Ragnapop"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_GROUP_DESC;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"Ragnapop"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"Ragnapop"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"Ragnapop"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GROUP_HUSBAND;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"Ragnapop"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NUSID_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"Ragnapop"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"Ragnapop"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"Ragnapop"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccessGroup;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"Ragnapop"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"Ragnapop"},"content":"import seedu.address.logic.commands.GroupCommand;","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"Ragnapop"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"Ragnapop"},"content":"import seedu.address.model.person.NusId;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"Ragnapop"},"content":"import seedu.address.model.person.Tag;","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"Ragnapop"},"content":"import seedu.address.testutil.GroupPersonDescriptorBuilder;","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"Ragnapop"},"content":"class GroupCommandParserTest {","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"Ragnapop"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"Ragnapop"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, GroupCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"Ragnapop"},"content":" private GroupCommandParser parser \u003d new GroupCommandParser();","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"Ragnapop"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"Ragnapop"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"Ragnapop"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"Ragnapop"},"content":" assertParseFailure(parser, \"E0123456 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"Ragnapop"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"Ragnapop"},"content":" assertParseFailure(parser, \"E0123456 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"Ragnapop"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"Ragnapop"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"Ragnapop"},"content":" //Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"Ragnapop"},"content":" NusId nusid \u003d new NusId(VALID_NUSID_AMY);","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"Ragnapop"},"content":" String userInput \u003d \" id/\" + nusid + GROUP_DESC_HUSBAND","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"Ragnapop"},"content":" + TAG_DESC_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"Ragnapop"},"content":" GroupCommand.GroupPersonDescriptor descriptor \u003d new GroupPersonDescriptorBuilder()","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"Ragnapop"},"content":" .withNusId(VALID_NUSID_AMY)","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"Ragnapop"},"content":" .withGroups(VALID_GROUP_HUSBAND)","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"Ragnapop"},"content":" .withTag(VALID_TAG_AMY)","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"Ragnapop"},"content":" .build();","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"Ragnapop"},"content":" GroupCommand expectedCommand \u003d new GroupCommand(nusid, descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"Ragnapop"},"content":" //System.out.println(userInput);","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"Ragnapop"},"content":" assertParseSuccessGroup(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"Ragnapop"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"Ragnapop"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"Ragnapop"},"content":" String defaultNusId \u003d \"E1234567\";","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"Ragnapop"},"content":" NusId nusid \u003d new NusId((defaultNusId));","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"Ragnapop"},"content":" // tag","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"Ragnapop"},"content":" String userInput \u003d \" id/\" + defaultNusId + TAG_DESC_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"Ragnapop"},"content":" GroupCommand.GroupPersonDescriptor descriptor \u003d new GroupPersonDescriptorBuilder()","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"Ragnapop"},"content":" .withNusId(defaultNusId)","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"Ragnapop"},"content":" .withTag(VALID_TAG_AMY).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"Ragnapop"},"content":" GroupCommand expectedCommand \u003d new GroupCommand(nusid, descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"Ragnapop"},"content":" assertParseSuccessGroup(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"Ragnapop"},"content":" // group","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"Ragnapop"},"content":" userInput \u003d \" id/\" + defaultNusId + GROUP_DESC_HUSBAND;","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"Ragnapop"},"content":" descriptor \u003d new GroupPersonDescriptorBuilder()","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"Ragnapop"},"content":" .withNusId(defaultNusId)","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"Ragnapop"},"content":" .withGroups(VALID_GROUP_HUSBAND).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"Ragnapop"},"content":" expectedCommand \u003d new GroupCommand(nusid, descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"Ragnapop"},"content":" assertParseSuccessGroup(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"Ragnapop"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"Ragnapop"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"Ragnapop"},"content":" assertParseFailure(parser, \" id/E0123456\" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"Ragnapop"},"content":" assertParseFailure(parser, \" id/E0123456\" + INVALID_GROUP_DESC, Group.MESSAGE_CONSTRAINTS); // invalid group","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"Ragnapop"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"Ragnapop":89}},{"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":"hjuntan"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-11"},{"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":"Rikko1204"},"content":"import seedu.address.model.person.NusId;","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-22"},{"lineNumber":22,"author":{"gitId":"Rikko1204"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"Rikko1204"},"content":"import seedu.address.model.person.Schedule;","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"hjuntan"},"content":"import seedu.address.model.person.Tag;","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22"},{"lineNumber":28,"author":{"gitId":"Rikko1204"},"content":" private static final String INVALID_NUSID \u003d \"e1234567\";","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2017-05-22"},{"lineNumber":30,"author":{"gitId":"hjuntan"},"content":" private static final String INVALID_TAG \u003d \" \";","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":32,"author":{"gitId":"hjuntan"},"content":" private static final String INVALID_GROUP \u003d \"#friend\";","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"Rikko1204"},"content":" private static final String INVALID_SCHEDULE \u003d \"2024-12-12\";","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22"},{"lineNumber":36,"author":{"gitId":"Rikko1204"},"content":" private static final String VALID_NUSID \u003d \"E1234567\";","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d \"123456\";","lastModifiedDate":"2017-05-22"},{"lineNumber":38,"author":{"gitId":"hjuntan"},"content":" private static final String VALID_TAG \u003d \"Student\";","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":40,"author":{"gitId":"hjuntan"},"content":" private static final String VALID_GROUP_1 \u003d \"friend\";","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"hjuntan"},"content":" private static final String VALID_GROUP_2 \u003d \"neighbour\";","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"Rikko1204"},"content":" private static final String VALID_SCHEDULE \u003d \"12-12-2020\";","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"Rikko1204"},"content":" private static final String VALID_REMARK \u003d \"I love Hong Jun\";","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":45,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2017-05-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2017-05-25"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":67,"author":{"gitId":"Rikko1204"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":68,"author":{"gitId":"Rikko1204"},"content":" public void parseNusId_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-13"},{"lineNumber":69,"author":{"gitId":"Rikko1204"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseNusId((String) null));","lastModifiedDate":"2024-03-13"},{"lineNumber":70,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":72,"author":{"gitId":"Rikko1204"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":73,"author":{"gitId":"Rikko1204"},"content":" public void parseNusId_invalidValue_throwsParseException() {","lastModifiedDate":"2024-03-13"},{"lineNumber":74,"author":{"gitId":"Rikko1204"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseNusId(INVALID_NUSID));","lastModifiedDate":"2024-03-13"},{"lineNumber":75,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":76,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":77,"author":{"gitId":"Rikko1204"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":78,"author":{"gitId":"Rikko1204"},"content":" public void parseNusId_validValueWithoutWhitespace_returnsNusId() throws Exception {","lastModifiedDate":"2024-03-13"},{"lineNumber":79,"author":{"gitId":"Rikko1204"},"content":" NusId expectedNusId \u003d new NusId(VALID_NUSID);","lastModifiedDate":"2024-03-13"},{"lineNumber":80,"author":{"gitId":"Rikko1204"},"content":" assertEquals(expectedNusId, ParserUtil.parseNusId(VALID_NUSID));","lastModifiedDate":"2024-03-13"},{"lineNumber":81,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":82,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":95,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":101,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29"},{"lineNumber":102,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void parsePhone_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePhone((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void parsePhone_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhone(INVALID_PHONE));","lastModifiedDate":"2019-03-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":118,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-22"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(VALID_PHONE));","lastModifiedDate":"2017-05-30"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithWhitespace_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":124,"author":{"gitId":"-"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":125,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-30"},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(phoneWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":130,"author":{"gitId":"hjuntan"},"content":" public void parseTag_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":131,"author":{"gitId":"hjuntan"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag((String) null));","lastModifiedDate":"2024-03-11"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":135,"author":{"gitId":"hjuntan"},"content":" public void parseTag_invalidValue_throwsParseException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":136,"author":{"gitId":"hjuntan"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTag(INVALID_TAG));","lastModifiedDate":"2024-03-11"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":139,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":140,"author":{"gitId":"hjuntan"},"content":" public void parseTag_validValueWithoutWhitespace_returnsTag() throws Exception {","lastModifiedDate":"2024-03-11"},{"lineNumber":141,"author":{"gitId":"hjuntan"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG);","lastModifiedDate":"2024-03-11"},{"lineNumber":142,"author":{"gitId":"hjuntan"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(VALID_TAG));","lastModifiedDate":"2024-03-11"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":145,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":146,"author":{"gitId":"hjuntan"},"content":" public void parseTag_validValueWithWhitespace_returnsTrimmedTag() throws Exception {","lastModifiedDate":"2024-03-11"},{"lineNumber":147,"author":{"gitId":"hjuntan"},"content":" String tagWithWhitespace \u003d WHITESPACE + VALID_TAG + WHITESPACE;","lastModifiedDate":"2024-03-11"},{"lineNumber":148,"author":{"gitId":"hjuntan"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG);","lastModifiedDate":"2024-03-11"},{"lineNumber":149,"author":{"gitId":"hjuntan"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(tagWithWhitespace));","lastModifiedDate":"2024-03-11"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":152,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":153,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":154,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":157,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":158,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":159,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":162,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":163,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":164,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22"},{"lineNumber":165,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30"},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":168,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":169,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":170,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":171,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30"},{"lineNumber":172,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":175,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":176,"author":{"gitId":"hjuntan"},"content":" public void parseGroup_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":177,"author":{"gitId":"hjuntan"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseGroup(null));","lastModifiedDate":"2024-03-11"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":180,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":181,"author":{"gitId":"hjuntan"},"content":" public void parseGroup_invalidValue_throwsParseException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":182,"author":{"gitId":"hjuntan"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseGroup(INVALID_GROUP));","lastModifiedDate":"2024-03-11"},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":185,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":186,"author":{"gitId":"hjuntan"},"content":" public void parseGroup_validValueWithoutWhitespace_returnsGroup() throws Exception {","lastModifiedDate":"2024-03-11"},{"lineNumber":187,"author":{"gitId":"hjuntan"},"content":" Group expectedGroup \u003d new Group(VALID_GROUP_1);","lastModifiedDate":"2024-03-11"},{"lineNumber":188,"author":{"gitId":"hjuntan"},"content":" assertEquals(expectedGroup, ParserUtil.parseGroup(VALID_GROUP_1));","lastModifiedDate":"2024-03-11"},{"lineNumber":189,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":191,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":192,"author":{"gitId":"hjuntan"},"content":" public void parseGroup_validValueWithWhitespace_returnsTrimmedGroup() throws Exception {","lastModifiedDate":"2024-03-11"},{"lineNumber":193,"author":{"gitId":"hjuntan"},"content":" String groupWithWhitespace \u003d WHITESPACE + VALID_GROUP_1 + WHITESPACE;","lastModifiedDate":"2024-03-11"},{"lineNumber":194,"author":{"gitId":"hjuntan"},"content":" Group expectedGroup \u003d new Group(VALID_GROUP_1);","lastModifiedDate":"2024-03-11"},{"lineNumber":195,"author":{"gitId":"hjuntan"},"content":" assertEquals(expectedGroup, ParserUtil.parseGroup(groupWithWhitespace));","lastModifiedDate":"2024-03-11"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":198,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":199,"author":{"gitId":"hjuntan"},"content":" public void parseGroups_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":200,"author":{"gitId":"hjuntan"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseGroups(null));","lastModifiedDate":"2024-03-11"},{"lineNumber":201,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":203,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":204,"author":{"gitId":"hjuntan"},"content":" public void parseGroups_collectionWithInvalidGroups_throwsParseException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":205,"author":{"gitId":"hjuntan"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseGroups(Arrays.asList(VALID_GROUP_1,","lastModifiedDate":"2024-03-11"},{"lineNumber":206,"author":{"gitId":"hjuntan"},"content":" INVALID_GROUP)));","lastModifiedDate":"2024-03-11"},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":209,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":210,"author":{"gitId":"hjuntan"},"content":" public void parseGroups_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2024-03-11"},{"lineNumber":211,"author":{"gitId":"hjuntan"},"content":" assertTrue(ParserUtil.parseGroups(Collections.emptyList()).isEmpty());","lastModifiedDate":"2024-03-11"},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":214,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":215,"author":{"gitId":"hjuntan"},"content":" public void parseGroups_collectionWithValidGroups_returnsGroupSet() throws Exception {","lastModifiedDate":"2024-03-11"},{"lineNumber":216,"author":{"gitId":"hjuntan"},"content":" Set\u003cGroup\u003e actualGroupSet \u003d ParserUtil.parseGroups(Arrays.asList(VALID_GROUP_1,","lastModifiedDate":"2024-03-11"},{"lineNumber":217,"author":{"gitId":"hjuntan"},"content":" VALID_GROUP_2));","lastModifiedDate":"2024-03-11"},{"lineNumber":218,"author":{"gitId":"hjuntan"},"content":" Set\u003cGroup\u003e expectedGroupSet \u003d new HashSet\u003cGroup\u003e(Arrays.asList(new Group(VALID_GROUP_1),","lastModifiedDate":"2024-03-11"},{"lineNumber":219,"author":{"gitId":"hjuntan"},"content":" new Group(VALID_GROUP_2)));","lastModifiedDate":"2024-03-11"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":221,"author":{"gitId":"hjuntan"},"content":" assertEquals(expectedGroupSet, actualGroupSet);","lastModifiedDate":"2024-03-11"},{"lineNumber":222,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":224,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":225,"author":{"gitId":"Rikko1204"},"content":" public void parseSchedule_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":226,"author":{"gitId":"Rikko1204"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseSchedule((String) null));","lastModifiedDate":"2024-03-17"},{"lineNumber":227,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":229,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":230,"author":{"gitId":"Rikko1204"},"content":" public void parseSchedule_invalidValue_throwsParseException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":231,"author":{"gitId":"Rikko1204"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseSchedule(INVALID_SCHEDULE));","lastModifiedDate":"2024-03-17"},{"lineNumber":232,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":234,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":235,"author":{"gitId":"Rikko1204"},"content":" public void parseSchedule_validValueWithoutWhitespace_returnsSchedule() throws Exception {","lastModifiedDate":"2024-03-17"},{"lineNumber":236,"author":{"gitId":"Rikko1204"},"content":" Schedule expectedSchedule \u003d new Schedule(VALID_SCHEDULE);","lastModifiedDate":"2024-03-17"},{"lineNumber":237,"author":{"gitId":"Rikko1204"},"content":" assertEquals(expectedSchedule, ParserUtil.parseSchedule(VALID_SCHEDULE));","lastModifiedDate":"2024-03-17"},{"lineNumber":238,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":240,"author":{"gitId":"Rikko1204"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":241,"author":{"gitId":"Rikko1204"},"content":" public void parseRemark_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":242,"author":{"gitId":"Rikko1204"},"content":" assertThrows(NullPointerException.class, () -\u003e new Remark(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":243,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":244,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22"}],"authorContributionMap":{"Rikko1204":35,"hjuntan":42,"-":167}},{"path":"src/test/java/seedu/address/logic/parser/ScheduleCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Rikko1204"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"Rikko1204"},"content":"public class ScheduleCommandParserTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"Rikko1204"},"content":" // TODO: Create test cases","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"Rikko1204"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"Rikko1204":5}},{"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":"hjuntan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GROUP_HUSBAND;","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"hjuntan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_BOB;","lastModifiedDate":"2024-03-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":"hjuntan"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withTag(VALID_TAG_BOB).withGroups(VALID_GROUP_HUSBAND)","lastModifiedDate":"2024-03-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":"hjuntan"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withTag(VALID_TAG_BOB).withGroups(VALID_GROUP_HUSBAND)","lastModifiedDate":"2024-03-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":"-"},"content":"}","lastModifiedDate":"2016-12-24"}],"authorContributionMap":{"hjuntan":4,"-":104}},{"path":"src/test/java/seedu/address/model/group/GroupTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"hjuntan"},"content":"package seedu.address.model.group;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"hjuntan"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"hjuntan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"hjuntan"},"content":"public class GroupTest {","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"hjuntan"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"hjuntan"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"hjuntan"},"content":" assertThrows(NullPointerException.class, () -\u003e new Group(null));","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"hjuntan"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"hjuntan"},"content":" public void constructor_invalidGroupName_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"hjuntan"},"content":" String invalidGroupName \u003d \"\";","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"hjuntan"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Group(invalidGroupName));","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"hjuntan"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"hjuntan"},"content":" public void isValidGroupName() {","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"hjuntan"},"content":" // null group name","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"hjuntan"},"content":" assertThrows(NullPointerException.class, () -\u003e Group.isValidGroupName(null));","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"hjuntan"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"hjuntan":26}},{"path":"src/test/java/seedu/address/model/person/EmailMatchesPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"RingoftheKing"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"RingoftheKing"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"RingoftheKing"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"RingoftheKing"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"RingoftheKing"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"RingoftheKing"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"RingoftheKing"},"content":"public class EmailMatchesPredicateTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"RingoftheKing"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"RingoftheKing"},"content":" public void test_emailMatches_returnsTrue() {","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"RingoftheKing"},"content":" EmailMatchesPredicate fullMatch \u003d new EmailMatchesPredicate(\"bobbyApples@gmail.com\");","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"RingoftheKing"},"content":" Person person \u003d new PersonBuilder().withEmail(\"bobbyApples@gmail.com\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"RingoftheKing"},"content":" assertTrue(fullMatch.test(person));","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"RingoftheKing"},"content":" EmailMatchesPredicate partialMatch \u003d new EmailMatchesPredicate(\"Apples\");","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"RingoftheKing"},"content":" assertTrue(partialMatch.test(person));","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"RingoftheKing"},"content":" EmailMatchesPredicate diffCaseMatch \u003d new EmailMatchesPredicate(\"aPPleS\");","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"RingoftheKing"},"content":" assertTrue(diffCaseMatch.test(person));","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"RingoftheKing"},"content":" EmailMatchesPredicate extraSpaces \u003d new EmailMatchesPredicate(\" apples \");","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"RingoftheKing"},"content":" assertTrue(extraSpaces.test(person));","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"RingoftheKing"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"RingoftheKing"},"content":" public void test_emailNoMatch_returnsFalse() {","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"RingoftheKing"},"content":" Person person \u003d new PersonBuilder().withEmail(\"bobbyApples@gmail.com\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"RingoftheKing"},"content":" EmailMatchesPredicate noPartialMatch \u003d new EmailMatchesPredicate(\"WobblyApples\");","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"RingoftheKing"},"content":" assertFalse(noPartialMatch.test(person));","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"RingoftheKing"},"content":" EmailMatchesPredicate spacesInBetween \u003d new EmailMatchesPredicate(\"bobby apples \");","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"RingoftheKing"},"content":" assertFalse(spacesInBetween.test(person));","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"RingoftheKing"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"RingoftheKing"},"content":" public void test_toString() {","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"RingoftheKing"},"content":" String keyword \u003d \"bobby\";","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"RingoftheKing"},"content":" EmailMatchesPredicate e \u003d new EmailMatchesPredicate(keyword);","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"RingoftheKing"},"content":" String expected \u003d EmailMatchesPredicate.class.getCanonicalName() + \"{emailKeyword\u003d\" + keyword + \"}\";","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"RingoftheKing"},"content":" assertEquals(e.toString(), expected);","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"RingoftheKing"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"RingoftheKing":46}},{"path":"src/test/java/seedu/address/model/person/GroupMatchesPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"RingoftheKing"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"RingoftheKing"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"RingoftheKing"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"RingoftheKing"},"content":"import java.util.List;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"RingoftheKing"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"RingoftheKing"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"RingoftheKing"},"content":"public class GroupMatchesPredicateTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"RingoftheKing"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"RingoftheKing"},"content":" public void test_oneGroupOneKeyword() {","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"RingoftheKing"},"content":" GroupMatchesPredicate predicateWithOneKeyword \u003d new GroupMatchesPredicate(List.of(\"CS2103T\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"RingoftheKing"},"content":" Person personWithOneGroup \u003d new PersonBuilder().withGroups(\"CS2103T\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"RingoftheKing"},"content":" assertTrue(predicateWithOneKeyword.test(personWithOneGroup));","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"RingoftheKing"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"RingoftheKing"},"content":" public void test_multipleGroupsOneKeyword() {","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"RingoftheKing"},"content":" GroupMatchesPredicate predicateWithOneKeyword \u003d new GroupMatchesPredicate(List.of(\"CS2103T\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"RingoftheKing"},"content":" Person personWithManyGroups \u003d new PersonBuilder().withGroups(\"CS2100\", \"CS2101\", \"CS2103T\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"RingoftheKing"},"content":" assertTrue(predicateWithOneKeyword.test(personWithManyGroups));","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"RingoftheKing"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"RingoftheKing"},"content":" public void test_multipleGroupsManyKeywords() {","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"RingoftheKing"},"content":" GroupMatchesPredicate predicateWithManyKeywords \u003d new GroupMatchesPredicate(List.of(\"CS2101\", \"CS2103T\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"RingoftheKing"},"content":" Person personWithManyGroups \u003d new PersonBuilder().withGroups(\"CS2100\", \"CS2101\", \"CS2103T\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"RingoftheKing"},"content":" assertTrue(predicateWithManyKeywords.test(personWithManyGroups));","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"RingoftheKing"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"RingoftheKing"},"content":" public void test_toString() {","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"RingoftheKing"},"content":" List\u003cString\u003e keywords \u003d List.of(\"CS2101\", \"CS2103T\");","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"RingoftheKing"},"content":" GroupMatchesPredicate g \u003d new GroupMatchesPredicate(keywords);","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"RingoftheKing"},"content":" String expected \u003d GroupMatchesPredicate.class.getCanonicalName() + \"{groupKeywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"RingoftheKing"},"content":" assertEquals(g.toString(), expected);","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"RingoftheKing"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"RingoftheKing":41}},{"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":"RingoftheKing"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2024-03-17"},{"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":"-"},"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":"RingoftheKing"},"content":" // Successfully skips checking when not required to by the FindCommand class","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"RingoftheKing"},"content":" NameContainsKeywordsPredicate optionalParameterNotFilled \u003d","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"RingoftheKing"},"content":" new NameContainsKeywordsPredicate(List.of(FindCommand.NOT_REQUIRED_VALUE));","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"RingoftheKing"},"content":" assertTrue(optionalParameterNotFilled.test(new PersonBuilder().build()));","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // One keyword","lastModifiedDate":"2017-06-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.singletonList(\"Alice\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // Multiple keywords","lastModifiedDate":"2017-06-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // Only one matching keyword","lastModifiedDate":"2017-06-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Bob\", \"Carol\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Carol\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // Mixed-case keywords","lastModifiedDate":"2017-06-12"},{"lineNumber":63,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"aLIce\", \"bOB\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12"},{"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 test_nameDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2017-08-15"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // Zero keywords","lastModifiedDate":"2017-06-12"},{"lineNumber":70,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2017-06-12"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // Non-matching keyword","lastModifiedDate":"2017-06-12"},{"lineNumber":74,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Carol\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":77,"author":{"gitId":"hjuntan"},"content":" // Keywords match phone, email and tag, but does not match name","lastModifiedDate":"2024-03-11"},{"lineNumber":78,"author":{"gitId":"hjuntan"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"12345\", \"alice@email.com\", \"Student\"));","lastModifiedDate":"2024-03-11"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").withPhone(\"12345\")","lastModifiedDate":"2017-06-12"},{"lineNumber":80,"author":{"gitId":"hjuntan"},"content":" .withEmail(\"alice@email.com\").withTag(\"Student\").build()));","lastModifiedDate":"2024-03-11"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"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":" List\u003cString\u003e keywords \u003d List.of(\"keyword1\", \"keyword2\");","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(keywords);","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"RingoftheKing"},"content":" String expected \u003d NameContainsKeywordsPredicate.class.getCanonicalName() + \"{nameKeywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"RingoftheKing":7,"hjuntan":3,"-":81}},{"path":"src/test/java/seedu/address/model/person/NusIdTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Rikko1204"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"Rikko1204"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"Rikko1204"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"Rikko1204"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"Rikko1204"},"content":"public class NusIdTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"Rikko1204"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"Rikko1204"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"Rikko1204"},"content":" assertThrows(NullPointerException.class, () -\u003e new NusId(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"Rikko1204"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"Rikko1204"},"content":" public void constructor_invalidName_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"Rikko1204"},"content":" String invalidNusId \u003d \"\";","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"Rikko1204"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new NusId(invalidNusId));","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"Rikko1204"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"Rikko1204"},"content":" public void isValidNusId() {","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"Rikko1204"},"content":" // null name","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"Rikko1204"},"content":" assertThrows(NullPointerException.class, () -\u003e NusId.isValidNusId(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"Rikko1204"},"content":" // invalid nusId","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"Rikko1204"},"content":" assertFalse(NusId.isValidNusId(\"\")); // empty string","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"Rikko1204"},"content":" assertFalse(NusId.isValidNusId(\" \")); // spaces only","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"Rikko1204"},"content":" assertFalse(NusId.isValidNusId(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"Rikko1204"},"content":" assertFalse(NusId.isValidNusId(\"peter*\")); // contains non-alphanumeric characters","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"Rikko1204"},"content":" assertFalse(NusId.isValidNusId(\"E\")); // letters only","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"Rikko1204"},"content":" assertFalse(NusId.isValidNusId(\"1234567\")); // numbers only","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"Rikko1204"},"content":" assertFalse(NusId.isValidNusId(\"e1234567\")); // Lower case letter","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"Rikko1204"},"content":" assertFalse(NusId.isValidNusId(\"e123456\")); // Less digits","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"Rikko1204"},"content":" assertFalse(NusId.isValidNusId(\"e12345678\")); // More digits","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"Rikko1204"},"content":" // valid nusId","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"Rikko1204"},"content":" assertTrue(NusId.isValidNusId(\"E0951501\")); // Correct format","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"Rikko1204"},"content":" assertTrue(NusId.isValidNusId(\"E0000000\")); // All 0","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"Rikko1204"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"Rikko1204"},"content":" public void equals() {","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"Rikko1204"},"content":" NusId nusId \u003d new NusId(\"E1234567\");","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"Rikko1204"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"Rikko1204"},"content":" assertTrue(nusId.equals(new NusId(\"E1234567\")));","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"Rikko1204"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"Rikko1204"},"content":" assertTrue(nusId.equals(nusId));","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"Rikko1204"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"Rikko1204"},"content":" assertFalse(nusId.equals(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"Rikko1204"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"Rikko1204"},"content":" assertFalse(nusId.equals(5.0f));","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"Rikko1204"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"Rikko1204"},"content":" assertFalse(nusId.equals(new Name(\"E7654321\")));","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"Rikko1204"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"Rikko1204":62}},{"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":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GROUP_HUSBAND;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NUSID_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_BOB;","lastModifiedDate":"2024-03-12"},{"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":"hjuntan"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getGroups().remove(0));","lastModifiedDate":"2024-03-11"},{"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":"Rikko1204"},"content":" // same id, all other attributes different -\u003e returns true","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"Rikko1204"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"Rikko1204"},"content":" .withEmail(VALID_EMAIL_BOB).withTag(VALID_TAG_BOB).withGroups(VALID_GROUP_HUSBAND).build();","lastModifiedDate":"2024-03-12"},{"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":"Rikko1204"},"content":" // different id, all other attributes same -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"Rikko1204"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withNusId(VALID_NUSID_BOB).build();","lastModifiedDate":"2024-03-12"},{"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":"","lastModifiedDate":"2018-04-19"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":64,"author":{"gitId":"Rikko1204"},"content":" // different nusId -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"Rikko1204"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withNusId(VALID_NUSID_BOB).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"Rikko1204"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":69,"author":{"gitId":"Rikko1204"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-12"},{"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":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_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 email -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_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":"hjuntan"},"content":" // different tag -\u003e returns false","lastModifiedDate":"2024-03-11"},{"lineNumber":81,"author":{"gitId":"hjuntan"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTag(VALID_TAG_BOB).build();","lastModifiedDate":"2024-03-11"},{"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":"hjuntan"},"content":" // different groups -\u003e returns false","lastModifiedDate":"2024-03-11"},{"lineNumber":85,"author":{"gitId":"hjuntan"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withGroups(VALID_GROUP_HUSBAND).build();","lastModifiedDate":"2024-03-11"},{"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":"hjuntan"},"content":" String expected \u003d Person.class.getCanonicalName()","lastModifiedDate":"2024-03-12"},{"lineNumber":92,"author":{"gitId":"hjuntan"},"content":" + \"{nusId\u003d\" + ALICE.getNusId() + \", name\u003d\" + ALICE.getName()","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"hjuntan"},"content":" + \", phone\u003d\" + ALICE.getPhone() + \", email\u003d\" + ALICE.getEmail()","lastModifiedDate":"2024-03-12"},{"lineNumber":94,"author":{"gitId":"Rikko1204"},"content":" + \", tag\u003d\" + ALICE.getTag() + \", groups\u003d\" + ALICE.getGroups()","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"Rikko1204"},"content":" + \", schedule\u003d\" + ALICE.getSchedule() + \", remark\u003d\" + ALICE.getRemark() + \"}\";","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"Rikko1204":15,"hjuntan":8,"-":75}},{"path":"src/test/java/seedu/address/model/person/PhoneMatchesPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"RingoftheKing"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"RingoftheKing"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"RingoftheKing"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"RingoftheKing"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"RingoftheKing"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"RingoftheKing"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"RingoftheKing"},"content":"public class PhoneMatchesPredicateTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"RingoftheKing"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"RingoftheKing"},"content":" public void test_matchingPhone_returnsTrue() {","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"RingoftheKing"},"content":" Person person \u003d new PersonBuilder().withPhone(\"91237654\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"RingoftheKing"},"content":" PhoneMatchesPredicate fullMatch \u003d new PhoneMatchesPredicate(\"91237654\");","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"RingoftheKing"},"content":" assertTrue(fullMatch.test(person));","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"RingoftheKing"},"content":" PhoneMatchesPredicate partialPrefixMatch \u003d new PhoneMatchesPredicate(\"9123\");","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"RingoftheKing"},"content":" assertTrue(partialPrefixMatch.test(person));","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"RingoftheKing"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"RingoftheKing"},"content":" public void test_noMatchingPhone_returnsFalse() {","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"RingoftheKing"},"content":" Person person \u003d new PersonBuilder().withPhone(\"91237654\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"RingoftheKing"},"content":" PhoneMatchesPredicate noMatch \u003d new PhoneMatchesPredicate(\"98761234\");","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"RingoftheKing"},"content":" assertFalse(noMatch.test(person));","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"RingoftheKing"},"content":" PhoneMatchesPredicate partialMiddleMatch \u003d new PhoneMatchesPredicate(\"123\");","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"RingoftheKing"},"content":" assertFalse(partialMiddleMatch.test(person));","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"RingoftheKing"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"RingoftheKing"},"content":" public void test_toString() {","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"RingoftheKing"},"content":" String numToMatch \u003d \"91234567\";","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"RingoftheKing"},"content":" PhoneMatchesPredicate p \u003d new PhoneMatchesPredicate(numToMatch);","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"RingoftheKing"},"content":" String expected \u003d PhoneMatchesPredicate.class.getCanonicalName() + \"{phoneNumToMatch\u003d\" + numToMatch + \"}\";","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"RingoftheKing"},"content":" assertEquals(p.toString(), expected);","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"RingoftheKing"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"RingoftheKing":41}},{"path":"src/test/java/seedu/address/model/person/RemarkTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Rikko1204"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"Rikko1204"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"Rikko1204"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"Rikko1204"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"Rikko1204"},"content":"public class RemarkTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"Rikko1204"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"Rikko1204"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"Rikko1204"},"content":" assertThrows(NullPointerException.class, () -\u003e new Remark(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"Rikko1204"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"Rikko1204"},"content":" public void equals() {","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"Rikko1204"},"content":" Remark remark \u003d new Remark(\"Hong Jun is my daddy\");","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"Rikko1204"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"Rikko1204"},"content":" assertTrue(remark.equals(new Remark(\"Hong Jun is my daddy\")));","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"Rikko1204"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"Rikko1204"},"content":" assertTrue(remark.equals(remark));","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"Rikko1204"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"Rikko1204"},"content":" assertFalse(remark.equals(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"Rikko1204"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"Rikko1204"},"content":" assertFalse(remark.equals(5.0f));","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"Rikko1204"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"Rikko1204"},"content":" assertFalse(remark.equals(new Remark(\"Hong Jun is still my daddy\")));","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"Rikko1204"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"Rikko1204":35}},{"path":"src/test/java/seedu/address/model/person/ScheduleTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Rikko1204"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"Rikko1204"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"Rikko1204"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"Rikko1204"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"Rikko1204"},"content":"public class ScheduleTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"Rikko1204"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"Rikko1204"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"Rikko1204"},"content":" assertThrows(NullPointerException.class, () -\u003e new Schedule(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"Rikko1204"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"Rikko1204"},"content":" public void constructor_invalidSchedule_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"Rikko1204"},"content":" String invalidSchedule \u003d \"2020-12-12\";","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"Rikko1204"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Schedule(invalidSchedule));","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"Rikko1204"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"Rikko1204"},"content":" public void isValidSchedule() {","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"Rikko1204"},"content":" // null schedule","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"Rikko1204"},"content":" assertThrows(NullPointerException.class, () -\u003e Schedule.isValidSchedule(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"Rikko1204"},"content":" // invalid Schedule","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"Rikko1204"},"content":" assertFalse(Schedule.isValidSchedule(\"31-31-2020\")); // Non-existent month","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"Rikko1204"},"content":" assertFalse(Schedule.isValidSchedule(\"12~12~2020\")); // ~ incorrectly used","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"Rikko1204"},"content":" assertFalse(Schedule.isValidSchedule(\"2020-12-12\")); // Incorrect format","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"Rikko1204"},"content":" assertFalse(Schedule.isValidSchedule(\"12-2020-12\")); // Incorrect format","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"Rikko1204"},"content":" assertFalse(Schedule.isValidSchedule(\"12-12-2020 12pm\")); // Extra strings","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"Rikko1204"},"content":" // valid schedule","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"Rikko1204"},"content":" assertTrue(Schedule.isValidSchedule(\"12-12-2020\")); // Correct format","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"Rikko1204"},"content":" assertTrue(Schedule.isValidSchedule(\"12/12/2020\")); // Correct format","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"hjuntan"},"content":" assertTrue(Schedule.isValidSchedule(\"\")); // Empty string","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"Rikko1204"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"Rikko1204"},"content":" public void equals() {","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"Rikko1204"},"content":" Schedule schedule \u003d new Schedule(\"10-10-2020\");","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"Rikko1204"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"Rikko1204"},"content":" assertTrue(schedule.equals(new Schedule(\"10-10-2020\")));","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"Rikko1204"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"Rikko1204"},"content":" assertTrue(schedule.equals(schedule));","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"Rikko1204"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"Rikko1204"},"content":" assertFalse(schedule.equals(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"Rikko1204"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"Rikko1204"},"content":" assertFalse(schedule.equals(5.0f));","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"Rikko1204"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"Rikko1204"},"content":" assertFalse(schedule.equals(new Schedule(\"01-01-2010\")));","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"Rikko1204"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"Rikko1204":58,"hjuntan":2}},{"path":"src/test/java/seedu/address/model/person/TagMatchesPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"RingoftheKing"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"RingoftheKing"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"RingoftheKing"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"RingoftheKing"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"RingoftheKing"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"RingoftheKing"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"RingoftheKing"},"content":"public class TagMatchesPredicateTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"RingoftheKing"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"RingoftheKing"},"content":" public void test_tagMatches_returnsTrue() {","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"RingoftheKing"},"content":" Person person \u003d new PersonBuilder().withTag(Tag.TagType.TA.toString()).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"RingoftheKing"},"content":" TagMatchesPredicate validTagPredicate \u003d new TagMatchesPredicate(Tag.TagType.TA.toString());","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"RingoftheKing"},"content":" assertTrue(validTagPredicate.test(person));","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"RingoftheKing"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"RingoftheKing"},"content":" public void test_tagNoMatch_returnsFalse() {","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"RingoftheKing"},"content":" Person person \u003d new PersonBuilder().withTag(Tag.TagType.Professor.toString()).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"RingoftheKing"},"content":" TagMatchesPredicate noMatchPredicate \u003d new TagMatchesPredicate(Tag.TagType.TA.toString());","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"RingoftheKing"},"content":" assertFalse(noMatchPredicate.test(person));","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"RingoftheKing"},"content":" TagMatchesPredicate gibberishPredicate \u003d new TagMatchesPredicate(\"GARBAGE_VALUE\");","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"RingoftheKing"},"content":" assertFalse(gibberishPredicate.test(person));","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"RingoftheKing"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"RingoftheKing"},"content":" public void test_toString() {","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"RingoftheKing"},"content":" String keyword \u003d Tag.TagType.TA.name();","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"RingoftheKing"},"content":" TagMatchesPredicate tagMatchesPredicate \u003d new TagMatchesPredicate(keyword);","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"RingoftheKing"},"content":" String expected \u003d TagMatchesPredicate.class.getCanonicalName() + \"{tagKeyword\u003d\" + keyword + \"}\";","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"RingoftheKing"},"content":" assertEquals(tagMatchesPredicate.toString(), expected);","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"RingoftheKing"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"RingoftheKing":38}},{"path":"src/test/java/seedu/address/model/person/TagTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"hjuntan"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"hjuntan"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"hjuntan"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"hjuntan"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"hjuntan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"hjuntan"},"content":"public class TagTest {","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"hjuntan"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"hjuntan"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"hjuntan"},"content":" assertThrows(NullPointerException.class, () -\u003e new Tag(null));","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"hjuntan"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"hjuntan"},"content":" public void constructor_invalidTag_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"hjuntan"},"content":" String invalidTag \u003d \"\";","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"hjuntan"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Tag(invalidTag));","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"hjuntan"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"hjuntan"},"content":" public void isValidTag() {","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"hjuntan"},"content":" // null tag","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"hjuntan"},"content":" assertThrows(NullPointerException.class, () -\u003e Tag.isValidTag(null));","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"hjuntan"},"content":" // invalid tags","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"hjuntan"},"content":" assertFalse(Tag.isValidTag(\"\")); // empty string","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"hjuntan"},"content":" assertFalse(Tag.isValidTag(\" \")); // spaces only","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"hjuntan"},"content":" // valid tags","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"hjuntan"},"content":" assertTrue(Tag.isValidTag(\"Student\"));","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"hjuntan"},"content":" assertTrue(Tag.isValidTag(\"Professor\"));","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"hjuntan"},"content":" assertTrue(Tag.isValidTag(\"TA\"));","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"hjuntan"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"hjuntan"},"content":" public void equals() {","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"hjuntan"},"content":" Tag tag \u003d new Tag(\"Student\");","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"hjuntan"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"hjuntan"},"content":" assertTrue(tag.equals(new Tag(\"Student\")));","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"hjuntan"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"hjuntan"},"content":" assertTrue(tag.equals(tag));","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"hjuntan"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"hjuntan"},"content":" assertFalse(tag.equals(null));","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"hjuntan"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"hjuntan"},"content":" assertFalse(tag.equals(5.0f));","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"hjuntan"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"hjuntan"},"content":" assertFalse(tag.equals(new Tag(\"Professor\")));","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"hjuntan"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"hjuntan":56}},{"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":"hjuntan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GROUP_HUSBAND;","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"hjuntan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_BOB;","lastModifiedDate":"2024-03-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":"hjuntan"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withTag(VALID_TAG_BOB).withGroups(VALID_GROUP_HUSBAND)","lastModifiedDate":"2024-03-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":"hjuntan"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withTag(VALID_TAG_BOB).withGroups(VALID_GROUP_HUSBAND)","lastModifiedDate":"2024-03-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":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"hjuntan":4,"-":171}},{"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":"Rikko1204"},"content":"import seedu.address.model.person.NusId;","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"Rikko1204"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"Rikko1204"},"content":"import seedu.address.model.person.Schedule;","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"hjuntan"},"content":"import seedu.address.model.person.Tag;","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"Rikko1204"},"content":" private static final String INVALID_NUSID \u003d \"e1234567\";","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"hjuntan"},"content":" private static final String INVALID_TAG \u003d \" \";","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"hjuntan"},"content":" private static final String INVALID_GROUP \u003d \"#friend\";","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"Rikko1204"},"content":" private static final String INVALID_SCHEDULE \u003d \"2024-12-12\";","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"hjuntan"},"content":" private static final String VALID_NUSID \u003d BENSON.getNusId().toString();","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"hjuntan"},"content":" private static final String VALID_TAG \u003d BENSON.getTag().toString();","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"Rikko1204"},"content":" private static final String VALID_SCHEDULE \u003d BENSON.getSchedule().toString();","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"Rikko1204"},"content":" private static final String VALID_REMARK \u003d BENSON.getRemark().toString();","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"hjuntan"},"content":" private static final List\u003cJsonAdaptedGroup\u003e VALID_GROUPS \u003d BENSON.getGroups().stream()","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"hjuntan"},"content":" .map(JsonAdaptedGroup::new)","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","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":"Rikko1204"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"Rikko1204"},"content":" public void toModelType_invalidNusId_throwsIllegalValueException() {","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"Rikko1204"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"Rikko1204"},"content":" new JsonAdaptedPerson(INVALID_NUSID, VALID_NAME, VALID_PHONE,","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"Rikko1204"},"content":" VALID_EMAIL, VALID_TAG, VALID_GROUPS, VALID_SCHEDULE, VALID_REMARK);","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"Rikko1204"},"content":" String expectedMessage \u003d NusId.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-13"},{"lineNumber":56,"author":{"gitId":"Rikko1204"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"Rikko1204"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":60,"author":{"gitId":"Rikko1204"},"content":" public void toModelType_nullNusId_throwsIllegalValueException() {","lastModifiedDate":"2024-03-13"},{"lineNumber":61,"author":{"gitId":"Rikko1204"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-13"},{"lineNumber":62,"author":{"gitId":"Rikko1204"},"content":" new JsonAdaptedPerson(null, VALID_NAME, VALID_PHONE,","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"Rikko1204"},"content":" VALID_EMAIL, VALID_TAG, VALID_GROUPS, VALID_SCHEDULE, VALID_REMARK);","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"Rikko1204"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, NusId.class.getSimpleName());","lastModifiedDate":"2024-03-13"},{"lineNumber":65,"author":{"gitId":"Rikko1204"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-13"},{"lineNumber":66,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":67,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"Rikko1204"},"content":" new JsonAdaptedPerson(VALID_NUSID, INVALID_NAME, VALID_PHONE,","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"Rikko1204"},"content":" VALID_EMAIL, VALID_TAG, VALID_GROUPS, VALID_SCHEDULE, VALID_REMARK);","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"hjuntan"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-11"},{"lineNumber":80,"author":{"gitId":"Rikko1204"},"content":" new JsonAdaptedPerson(VALID_NUSID, null, VALID_PHONE,","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"Rikko1204"},"content":" VALID_EMAIL, VALID_TAG, VALID_GROUPS, VALID_SCHEDULE, VALID_REMARK);","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"Rikko1204"},"content":" new JsonAdaptedPerson(VALID_NUSID, VALID_NAME, INVALID_PHONE,","lastModifiedDate":"2024-03-16"},{"lineNumber":90,"author":{"gitId":"Rikko1204"},"content":" VALID_EMAIL, VALID_TAG, VALID_GROUPS, VALID_SCHEDULE, VALID_REMARK);","lastModifiedDate":"2024-03-16"},{"lineNumber":91,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"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_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"hjuntan"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-11"},{"lineNumber":98,"author":{"gitId":"Rikko1204"},"content":" new JsonAdaptedPerson(VALID_NUSID, VALID_NAME, null,","lastModifiedDate":"2024-03-16"},{"lineNumber":99,"author":{"gitId":"Rikko1204"},"content":" VALID_EMAIL, VALID_TAG, VALID_GROUPS, VALID_SCHEDULE, VALID_REMARK);","lastModifiedDate":"2024-03-16"},{"lineNumber":100,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","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":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"Rikko1204"},"content":" new JsonAdaptedPerson(VALID_NUSID, VALID_NAME, VALID_PHONE,","lastModifiedDate":"2024-03-16"},{"lineNumber":108,"author":{"gitId":"Rikko1204"},"content":" INVALID_EMAIL, VALID_TAG, VALID_GROUPS, VALID_SCHEDULE, VALID_REMARK);","lastModifiedDate":"2024-03-16"},{"lineNumber":109,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":115,"author":{"gitId":"hjuntan"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-11"},{"lineNumber":116,"author":{"gitId":"Rikko1204"},"content":" new JsonAdaptedPerson(VALID_NUSID, VALID_NAME, VALID_PHONE,","lastModifiedDate":"2024-03-16"},{"lineNumber":117,"author":{"gitId":"Rikko1204"},"content":" null, VALID_TAG, VALID_GROUPS, VALID_SCHEDULE, VALID_REMARK);","lastModifiedDate":"2024-03-16"},{"lineNumber":118,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":123,"author":{"gitId":"hjuntan"},"content":" public void toModelType_invalidTag_throwsIllegalValueException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":124,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":125,"author":{"gitId":"Rikko1204"},"content":" new JsonAdaptedPerson(VALID_NUSID, VALID_NAME, VALID_PHONE,","lastModifiedDate":"2024-03-16"},{"lineNumber":126,"author":{"gitId":"Rikko1204"},"content":" VALID_EMAIL, INVALID_TAG, VALID_GROUPS, VALID_SCHEDULE, VALID_REMARK);","lastModifiedDate":"2024-03-16"},{"lineNumber":127,"author":{"gitId":"hjuntan"},"content":" String expectedMessage \u003d Tag.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-11"},{"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":"hjuntan"},"content":" public void toModelType_nullTag_throwsIllegalValueException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":133,"author":{"gitId":"hjuntan"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-11"},{"lineNumber":134,"author":{"gitId":"Rikko1204"},"content":" new JsonAdaptedPerson(VALID_NUSID, VALID_NAME, VALID_PHONE,","lastModifiedDate":"2024-03-16"},{"lineNumber":135,"author":{"gitId":"Rikko1204"},"content":" VALID_EMAIL, null, VALID_GROUPS, VALID_SCHEDULE, VALID_REMARK);","lastModifiedDate":"2024-03-16"},{"lineNumber":136,"author":{"gitId":"hjuntan"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Tag.class.getSimpleName());","lastModifiedDate":"2024-03-11"},{"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":"hjuntan"},"content":" public void toModelType_invalidGroups_throwsIllegalValueException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":142,"author":{"gitId":"hjuntan"},"content":" List\u003cJsonAdaptedGroup\u003e invalidGroups \u003d new ArrayList\u003c\u003e(VALID_GROUPS);","lastModifiedDate":"2024-03-11"},{"lineNumber":143,"author":{"gitId":"hjuntan"},"content":" invalidGroups.add(new JsonAdaptedGroup(INVALID_GROUP));","lastModifiedDate":"2024-03-11"},{"lineNumber":144,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":145,"author":{"gitId":"Rikko1204"},"content":" new JsonAdaptedPerson(VALID_NUSID, VALID_NAME, VALID_PHONE,","lastModifiedDate":"2024-03-16"},{"lineNumber":146,"author":{"gitId":"Rikko1204"},"content":" VALID_EMAIL, VALID_TAG, invalidGroups, VALID_SCHEDULE, VALID_REMARK);","lastModifiedDate":"2024-03-16"},{"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":"Rikko1204"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":151,"author":{"gitId":"Rikko1204"},"content":" public void toModelType_invalidSchedule_throwsIllegalValueException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":152,"author":{"gitId":"Rikko1204"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-17"},{"lineNumber":153,"author":{"gitId":"Rikko1204"},"content":" new JsonAdaptedPerson(VALID_NUSID, VALID_NAME, VALID_PHONE,","lastModifiedDate":"2024-03-17"},{"lineNumber":154,"author":{"gitId":"Rikko1204"},"content":" VALID_EMAIL, VALID_TAG, VALID_GROUPS, INVALID_SCHEDULE, VALID_REMARK);","lastModifiedDate":"2024-03-17"},{"lineNumber":155,"author":{"gitId":"Rikko1204"},"content":" String expectedMessage \u003d Schedule.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-17"},{"lineNumber":156,"author":{"gitId":"Rikko1204"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-17"},{"lineNumber":157,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":158,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":159,"author":{"gitId":"Rikko1204"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":160,"author":{"gitId":"Rikko1204"},"content":" public void toModelType_nullSchedule_throwsIllegalValueException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":161,"author":{"gitId":"Rikko1204"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-17"},{"lineNumber":162,"author":{"gitId":"Rikko1204"},"content":" new JsonAdaptedPerson(VALID_NUSID, VALID_NAME, VALID_PHONE,","lastModifiedDate":"2024-03-17"},{"lineNumber":163,"author":{"gitId":"Rikko1204"},"content":" VALID_EMAIL, VALID_TAG, VALID_GROUPS, null, VALID_REMARK);","lastModifiedDate":"2024-03-17"},{"lineNumber":164,"author":{"gitId":"Rikko1204"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Schedule.class.getSimpleName());","lastModifiedDate":"2024-03-17"},{"lineNumber":165,"author":{"gitId":"Rikko1204"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-17"},{"lineNumber":166,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":167,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":168,"author":{"gitId":"Rikko1204"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":169,"author":{"gitId":"Rikko1204"},"content":" public void toModelType_nullRemark_throwsIllegalValueException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":170,"author":{"gitId":"Rikko1204"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-17"},{"lineNumber":171,"author":{"gitId":"Rikko1204"},"content":" new JsonAdaptedPerson(VALID_NUSID, VALID_NAME, VALID_PHONE,","lastModifiedDate":"2024-03-17"},{"lineNumber":172,"author":{"gitId":"Rikko1204"},"content":" VALID_EMAIL, VALID_TAG, VALID_GROUPS, VALID_SCHEDULE, null);","lastModifiedDate":"2024-03-17"},{"lineNumber":173,"author":{"gitId":"Rikko1204"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Remark.class.getSimpleName());","lastModifiedDate":"2024-03-17"},{"lineNumber":174,"author":{"gitId":"Rikko1204"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-17"},{"lineNumber":175,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":176,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"Rikko1204":70,"hjuntan":18,"-":88}},{"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":"hjuntan"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"cheahTJ"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"cheahTJ"},"content":"import seedu.address.model.person.Schedule;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"cheahTJ"},"content":"import seedu.address.model.person.Tag;","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":" descriptor.setPhone(person.getPhone());","lastModifiedDate":"2017-06-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":40,"author":{"gitId":"cheahTJ"},"content":" descriptor.setSchedule(person.getSchedule());","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"cheahTJ"},"content":" descriptor.setRemark(person.getRemark());","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"hjuntan"},"content":" descriptor.setTag(person.getTag());","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"hjuntan"},"content":" descriptor.setGroups(person.getGroups());","lastModifiedDate":"2024-03-11"},{"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":"-"},"content":" * Sets the {@code Phone} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2017-12-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Sets the {@code Email} 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 withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":66,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","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":"hjuntan"},"content":" * Sets the {@code Tag} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-11"},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":73,"author":{"gitId":"hjuntan"},"content":" public EditPersonDescriptorBuilder withTag(String tag) {","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"hjuntan"},"content":" descriptor.setTag(new Tag(tag));","lastModifiedDate":"2024-03-11"},{"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":"hjuntan"},"content":" * Parses the {@code groups} into a {@code Set\u003cGroup\u003e} and set it to the {@code EditPersonDescriptor}","lastModifiedDate":"2024-03-11"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":82,"author":{"gitId":"hjuntan"},"content":" public EditPersonDescriptorBuilder withGroups(String... groups) {","lastModifiedDate":"2024-03-11"},{"lineNumber":83,"author":{"gitId":"hjuntan"},"content":" Set\u003cGroup\u003e groupSet \u003d Stream.of(groups).map(Group::new).collect(Collectors.toSet());","lastModifiedDate":"2024-03-11"},{"lineNumber":84,"author":{"gitId":"hjuntan"},"content":" descriptor.setGroups(groupSet);","lastModifiedDate":"2024-03-11"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":88,"author":{"gitId":"cheahTJ"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"cheahTJ"},"content":" * Sets the {@code Schedule} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"cheahTJ"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":91,"author":{"gitId":"cheahTJ"},"content":" public EditPersonDescriptorBuilder withSchedule(String schedule) {","lastModifiedDate":"2024-03-19"},{"lineNumber":92,"author":{"gitId":"cheahTJ"},"content":" descriptor.setSchedule(new Schedule(schedule));","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"cheahTJ"},"content":" return this;","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":95,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"cheahTJ"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"cheahTJ"},"content":" * Sets the {@code Remark} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"cheahTJ"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"cheahTJ"},"content":" public EditPersonDescriptorBuilder withRemark(String remark) {","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"cheahTJ"},"content":" descriptor.setRemark(new Remark(remark));","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"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":{"cheahTJ":18,"hjuntan":10,"-":79}},{"path":"src/test/java/seedu/address/testutil/FindCommandBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"RingoftheKing"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"RingoftheKing"},"content":"import java.util.List;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"RingoftheKing"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"RingoftheKing"},"content":"import seedu.address.model.person.EmailMatchesPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"RingoftheKing"},"content":"import seedu.address.model.person.GroupMatchesPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"RingoftheKing"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"RingoftheKing"},"content":"import seedu.address.model.person.PhoneMatchesPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"RingoftheKing"},"content":"import seedu.address.model.person.TagMatchesPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"RingoftheKing"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"RingoftheKing"},"content":" * A class that aids in creating {@code FindCommand} instances for testing","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"RingoftheKing"},"content":" * The default {@code FindCommand} created results in no filtering","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"RingoftheKing"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"RingoftheKing"},"content":"public class FindCommandBuilder {","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"RingoftheKing"},"content":" public static final NameContainsKeywordsPredicate DEFAULT_NAME_PRED \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"RingoftheKing"},"content":" new NameContainsKeywordsPredicate(List.of(FindCommand.NOT_REQUIRED_VALUE));","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"RingoftheKing"},"content":" public static final EmailMatchesPredicate DEFAULT_EMAIL_PRED \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"RingoftheKing"},"content":" new EmailMatchesPredicate(FindCommand.NOT_REQUIRED_VALUE);","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"RingoftheKing"},"content":" public static final GroupMatchesPredicate DEFAULT_GROUPS_PRED \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"RingoftheKing"},"content":" new GroupMatchesPredicate(List.of());","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"RingoftheKing"},"content":" public static final PhoneMatchesPredicate DEFAULT_PHONE_PRED \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"RingoftheKing"},"content":" new PhoneMatchesPredicate(FindCommand.NOT_REQUIRED_VALUE);","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"RingoftheKing"},"content":" public static final TagMatchesPredicate DEFAULT_TAG_PRED \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"RingoftheKing"},"content":" new TagMatchesPredicate(FindCommand.NOT_REQUIRED_VALUE);","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"RingoftheKing"},"content":" private NameContainsKeywordsPredicate n;","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"RingoftheKing"},"content":" private EmailMatchesPredicate e;","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"RingoftheKing"},"content":" private GroupMatchesPredicate g;","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"RingoftheKing"},"content":" private PhoneMatchesPredicate p;","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"RingoftheKing"},"content":" private TagMatchesPredicate t;","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"RingoftheKing"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"RingoftheKing"},"content":" * Constructs a Utility class to help build a FindCommand.","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"RingoftheKing"},"content":" * All fields are initially set to be optional.","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"RingoftheKing"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"RingoftheKing"},"content":" public FindCommandBuilder() {","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"RingoftheKing"},"content":" n \u003d DEFAULT_NAME_PRED;","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"RingoftheKing"},"content":" e \u003d DEFAULT_EMAIL_PRED;","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"RingoftheKing"},"content":" g \u003d DEFAULT_GROUPS_PRED;","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"RingoftheKing"},"content":" p \u003d DEFAULT_PHONE_PRED;","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"RingoftheKing"},"content":" t \u003d DEFAULT_TAG_PRED;","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"RingoftheKing"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"RingoftheKing"},"content":" * Changes the {@code FindCommand}\u0027s NameMatchesPredicate we are building.","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"RingoftheKing"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"RingoftheKing"},"content":" public FindCommandBuilder withNamePred(NameContainsKeywordsPredicate namePred) {","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"RingoftheKing"},"content":" n \u003d namePred;","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"RingoftheKing"},"content":" return this;","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"RingoftheKing"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"RingoftheKing"},"content":" * Changes the {@code FindCommand\u0027s} {@code EmailMatchesPredicate} we are building.","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"RingoftheKing"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"RingoftheKing"},"content":" public FindCommandBuilder withEmail(EmailMatchesPredicate emailPred) {","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"RingoftheKing"},"content":" e \u003d emailPred;","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"RingoftheKing"},"content":" return this;","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"RingoftheKing"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"RingoftheKing"},"content":" * Changes the {@code FindCommand\u0027s} {@code GroupMatchesPredicate} we are building.","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"RingoftheKing"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"RingoftheKing"},"content":" public FindCommandBuilder withGroups(GroupMatchesPredicate groupsPred) {","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"RingoftheKing"},"content":" g \u003d groupsPred;","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"RingoftheKing"},"content":" return this;","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"RingoftheKing"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"RingoftheKing"},"content":" * Changes the {@code FindCommand\u0027s} {@code PhoneMatchesPredicate} we are building.","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"RingoftheKing"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"RingoftheKing"},"content":" public FindCommandBuilder withPhone(PhoneMatchesPredicate phonePred) {","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"RingoftheKing"},"content":" p \u003d phonePred;","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"RingoftheKing"},"content":" return this;","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"RingoftheKing"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"RingoftheKing"},"content":" * Changes the {@code FindCommand\u0027s} {@code TagMatchesPredicate} we are building.","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"RingoftheKing"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"RingoftheKing"},"content":" public FindCommandBuilder withTag(TagMatchesPredicate tagPred) {","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"RingoftheKing"},"content":" t \u003d tagPred;","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"RingoftheKing"},"content":" return this;","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"RingoftheKing"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"RingoftheKing"},"content":" * Build the {@code FindCommand} we have customised.","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"RingoftheKing"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"RingoftheKing"},"content":" public FindCommand build() {","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"RingoftheKing"},"content":" return new FindCommand(n, e, g, p, t);","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"RingoftheKing"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"RingoftheKing":92}},{"path":"src/test/java/seedu/address/testutil/GroupPersonDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Ragnapop"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"Ragnapop"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"Ragnapop"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"Ragnapop"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"Ragnapop"},"content":"import seedu.address.logic.commands.GroupCommand;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"Ragnapop"},"content":"import seedu.address.logic.commands.GroupCommand.GroupPersonDescriptor;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"Ragnapop"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"Ragnapop"},"content":"import seedu.address.model.person.NusId;","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"Ragnapop"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"Ragnapop"},"content":"import seedu.address.model.person.Tag;","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"Ragnapop"},"content":"/**","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"Ragnapop"},"content":" * A utility class to help with building GroupPersonDescriptor objects.","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"Ragnapop"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"Ragnapop"},"content":"public class GroupPersonDescriptorBuilder {","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"Ragnapop"},"content":" private GroupPersonDescriptor descriptor;","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"Ragnapop"},"content":" public GroupPersonDescriptorBuilder() {","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"Ragnapop"},"content":" descriptor \u003d new GroupCommand.GroupPersonDescriptor();","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"Ragnapop"},"content":" public GroupPersonDescriptorBuilder(GroupPersonDescriptor descriptor) {","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"Ragnapop"},"content":" this.descriptor \u003d new GroupPersonDescriptor(descriptor);","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"Ragnapop"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"Ragnapop"},"content":" * Returns an {@code GroupPersonDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"Ragnapop"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"Ragnapop"},"content":" public GroupPersonDescriptorBuilder(Person person) {","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"Ragnapop"},"content":" descriptor \u003d new GroupPersonDescriptor();","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"Ragnapop"},"content":" descriptor.setNusId(person.getNusId());","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"Ragnapop"},"content":" descriptor.setTag(person.getTag());","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"Ragnapop"},"content":" descriptor.setGroups(person.getGroups());","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"Ragnapop"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"Ragnapop"},"content":" * Sets the {@code Name} of the {@code GroupPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"Ragnapop"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"Ragnapop"},"content":" public GroupPersonDescriptorBuilder withNusId(String nusId) {","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"Ragnapop"},"content":" descriptor.setNusId(new NusId(nusId));","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"Ragnapop"},"content":" return this;","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"Ragnapop"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"Ragnapop"},"content":" * Sets the {@code Tag} of the {@code GroupPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"Ragnapop"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"Ragnapop"},"content":" public GroupPersonDescriptorBuilder withTag(String tag) {","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"Ragnapop"},"content":" descriptor.setTag(new Tag(tag));","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"Ragnapop"},"content":" return this;","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"Ragnapop"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":58,"author":{"gitId":"Ragnapop"},"content":" * Parses the {@code groups} into a {@code Set\u003cGroup\u003e} and set it to the {@code GroupPersonDescriptor}","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"Ragnapop"},"content":" * that we are building.","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"Ragnapop"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":61,"author":{"gitId":"Ragnapop"},"content":" public GroupPersonDescriptorBuilder withGroups(String... groups) {","lastModifiedDate":"2024-03-14"},{"lineNumber":62,"author":{"gitId":"Ragnapop"},"content":" Set\u003cGroup\u003e groupSet \u003d Stream.of(groups).map(Group::new).collect(Collectors.toSet());","lastModifiedDate":"2024-03-14"},{"lineNumber":63,"author":{"gitId":"Ragnapop"},"content":" descriptor.setGroups(groupSet);","lastModifiedDate":"2024-03-14"},{"lineNumber":64,"author":{"gitId":"Ragnapop"},"content":" return this;","lastModifiedDate":"2024-03-14"},{"lineNumber":65,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":66,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":67,"author":{"gitId":"Ragnapop"},"content":" public GroupPersonDescriptor build() {","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"Ragnapop"},"content":" return descriptor;","lastModifiedDate":"2024-03-14"},{"lineNumber":69,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":70,"author":{"gitId":"Ragnapop"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"Ragnapop":70}},{"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":"hjuntan"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-01-18"},{"lineNumber":9,"author":{"gitId":"hjuntan"},"content":"import seedu.address.model.person.NusId;","lastModifiedDate":"2024-03-11"},{"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":"Rikko1204"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"Rikko1204"},"content":"import seedu.address.model.person.Schedule;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"hjuntan"},"content":"import seedu.address.model.person.Tag;","lastModifiedDate":"2024-03-11"},{"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":"hjuntan"},"content":" public static final String DEFAULT_NUSID \u003d \"E1234567\";","lastModifiedDate":"2024-03-11"},{"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":"hjuntan"},"content":" public static final String DEFAULT_TAG \u003d \"Student\";","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"Rikko1204"},"content":" public static final String DEFAULT_SCHEDULE \u003d \"12-12-2024\";","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"Rikko1204"},"content":" public static final String DEFAULT_REMARK \u003d \"Consultation at COM3\";","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":31,"author":{"gitId":"hjuntan"},"content":" private NusId nusId;","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":35,"author":{"gitId":"hjuntan"},"content":" private Tag tag;","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"hjuntan"},"content":" private Set\u003cGroup\u003e groups;","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"Rikko1204"},"content":" private Schedule schedule;","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"Rikko1204"},"content":" private Remark remark;","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15"},{"lineNumber":44,"author":{"gitId":"hjuntan"},"content":" nusId \u003d new NusId(DEFAULT_NUSID);","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20"},{"lineNumber":48,"author":{"gitId":"hjuntan"},"content":" tag \u003d new Tag(DEFAULT_TAG);","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"hjuntan"},"content":" groups \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"Rikko1204"},"content":" schedule \u003d new Schedule(DEFAULT_SCHEDULE);","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"Rikko1204"},"content":" remark \u003d new Remark(DEFAULT_REMARK);","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10"},{"lineNumber":58,"author":{"gitId":"hjuntan"},"content":" nusId \u003d personToCopy.getNusId();","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20"},{"lineNumber":62,"author":{"gitId":"hjuntan"},"content":" tag \u003d personToCopy.getTag();","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"hjuntan"},"content":" groups \u003d new HashSet\u003c\u003e(personToCopy.getGroups());","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"Rikko1204"},"content":" schedule \u003d personToCopy.getSchedule();","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"Rikko1204"},"content":" remark \u003d personToCopy.getRemark();","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11"},{"lineNumber":68,"author":{"gitId":"hjuntan"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"hjuntan"},"content":" * Sets the {@code NusId} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-11"},{"lineNumber":70,"author":{"gitId":"hjuntan"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":71,"author":{"gitId":"hjuntan"},"content":" public PersonBuilder withNusId(String nusId) {","lastModifiedDate":"2024-03-11"},{"lineNumber":72,"author":{"gitId":"hjuntan"},"content":" this.nusId \u003d new NusId(nusId);","lastModifiedDate":"2024-03-11"},{"lineNumber":73,"author":{"gitId":"hjuntan"},"content":" return this;","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":80,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":85,"author":{"gitId":"hjuntan"},"content":" * Parses the {@code groups} into a {@code Set\u003cGroup\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2024-03-11"},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":87,"author":{"gitId":"hjuntan"},"content":" public PersonBuilder withGroups(String ... groups) {","lastModifiedDate":"2024-03-11"},{"lineNumber":88,"author":{"gitId":"hjuntan"},"content":" this.groups \u003d SampleDataUtil.getGroupSet(groups);","lastModifiedDate":"2024-03-11"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":93,"author":{"gitId":"hjuntan"},"content":" * Sets the {@code Tag} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-11"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":95,"author":{"gitId":"hjuntan"},"content":" public PersonBuilder withTag(String tag) {","lastModifiedDate":"2024-03-11"},{"lineNumber":96,"author":{"gitId":"hjuntan"},"content":" this.tag \u003d new Tag(tag);","lastModifiedDate":"2024-03-11"},{"lineNumber":97,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":102,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":104,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20"},{"lineNumber":105,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":108,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":109,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":110,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":111,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":112,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20"},{"lineNumber":113,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":116,"author":{"gitId":"Rikko1204"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"Rikko1204"},"content":" * Sets the {@code Schedule} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"Rikko1204"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"Rikko1204"},"content":" public PersonBuilder withSchedule(String schedule) {","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"Rikko1204"},"content":" this.schedule \u003d new Schedule(schedule);","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"Rikko1204"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"Rikko1204"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"Rikko1204"},"content":" * Sets the {@code Remark} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"Rikko1204"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"Rikko1204"},"content":" public PersonBuilder withRemark(String remark) {","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"Rikko1204"},"content":" this.remark \u003d new Remark(remark);","lastModifiedDate":"2024-03-17"},{"lineNumber":129,"author":{"gitId":"Rikko1204"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":130,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05"},{"lineNumber":133,"author":{"gitId":"Rikko1204"},"content":" return new Person(nusId, name, phone, email, tag, groups, schedule, remark);","lastModifiedDate":"2024-03-17"},{"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":{"Rikko1204":27,"hjuntan":26,"-":83}},{"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":"hjuntan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GROUP;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":6,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NUSID;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":8,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SCHEDULE;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2018-03-26"},{"lineNumber":16,"author":{"gitId":"hjuntan"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static String getAddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":28,"author":{"gitId":"-"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2017-03-29"},{"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":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05"},{"lineNumber":36,"author":{"gitId":"Rikko1204"},"content":" sb.append(PREFIX_NUSID + person.getNusId().value + \" \");","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" sb.append(PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2017-06-06"},{"lineNumber":38,"author":{"gitId":"-"},"content":" sb.append(PREFIX_PHONE + person.getPhone().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":40,"author":{"gitId":"hjuntan"},"content":" sb.append(PREFIX_TAG + person.getTag().value.toString() + \" \");","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"hjuntan"},"content":" person.getGroups().stream().forEach(","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"hjuntan"},"content":" s -\u003e sb.append(PREFIX_GROUP + s.groupName + \" \")","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09"},{"lineNumber":44,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"Rikko1204"},"content":" return sb.toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"Rikko1204"},"content":" public static String getPersonScheduleDetails(Person person) {","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"Rikko1204"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"Rikko1204"},"content":" sb.append(PREFIX_NUSID + person.getNusId().value + \" \");","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"Rikko1204"},"content":" sb.append(PREFIX_SCHEDULE + person.getSchedule().date + \" \");","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"Rikko1204"},"content":" sb.append(PREFIX_REMARK + person.getRemark().value + \" \");","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":64,"author":{"gitId":"hjuntan"},"content":" descriptor.getTag().ifPresent(tag -\u003e sb.append(PREFIX_TAG).append(tag.value).append(\" \"));","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"hjuntan"},"content":" if (descriptor.getGroups().isPresent()) {","lastModifiedDate":"2024-03-11"},{"lineNumber":66,"author":{"gitId":"hjuntan"},"content":" Set\u003cGroup\u003e groups \u003d descriptor.getGroups().get();","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"hjuntan"},"content":" if (groups.isEmpty()) {","lastModifiedDate":"2024-03-11"},{"lineNumber":68,"author":{"gitId":"hjuntan"},"content":" sb.append(PREFIX_GROUP);","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26"},{"lineNumber":70,"author":{"gitId":"hjuntan"},"content":" groups.forEach(s -\u003e sb.append(PREFIX_GROUP).append(s.groupName).append(\" \"));","lastModifiedDate":"2024-03-11"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05"}],"authorContributionMap":{"Rikko1204":13,"hjuntan":11,"-":51}},{"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":"2017-08-22"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":5,"author":{"gitId":"hjuntan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GROUP_FRIEND;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"hjuntan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GROUP_HUSBAND;","lastModifiedDate":"2024-03-11"},{"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":"hjuntan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NUSID_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"hjuntan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NUSID_BOB;","lastModifiedDate":"2024-03-11"},{"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":"Rikko1204"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_REMARK_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_REMARK_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SCHEDULE_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SCHEDULE_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"hjuntan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"hjuntan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_BOB;","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07"},{"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":"Rikko1204"},"content":" public static final Person ALICE \u003d new PersonBuilder().withNusId(\"E0123456\").withName(\"Alice Pauline\")","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"hjuntan"},"content":" .withTag(\"Student\").withEmail(\"alice@example.com\")","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"Rikko1204"},"content":" .withPhone(\"94351253\").withGroups(\"friends\")","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"Rikko1204"},"content":" .withSchedule(\"10-09-2020\").withRemark(\"\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"hjuntan"},"content":" public static final Person BENSON \u003d new PersonBuilder().withNusId(\"E9682156\").withName(\"Benson Meier\")","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"-"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2017-04-05"},{"lineNumber":38,"author":{"gitId":"Rikko1204"},"content":" .withTag(\"Student\").withGroups(\"owesMoney\", \"friends\")","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"Rikko1204"},"content":" .withSchedule(\"01-01-2020\").withRemark(\"Consultation at 3pm\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"hjuntan"},"content":" public static final Person CARL \u003d new PersonBuilder().withNusId(\"E0358435\").withName(\"Carl Kurz\")","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"hjuntan"},"content":" .withPhone(\"95352563\").withEmail(\"heinz@example.com\")","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"Rikko1204"},"content":" .withTag(\"TA\").withSchedule(\"02-01-2020\").withRemark(\"\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"hjuntan"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withNusId(\"E1237864\").withName(\"Daniel Meier\")","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"hjuntan"},"content":" .withPhone(\"87652533\").withEmail(\"cornelia@example.com\")","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"Rikko1204"},"content":" .withTag(\"Professor\").withGroups(\"friends\")","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"Rikko1204"},"content":" .withSchedule(\"03/01/2020\").withRemark(\"Lunch\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"hjuntan"},"content":" public static final Person ELLE \u003d new PersonBuilder().withNusId(\"E6546506\").withName(\"Elle Meyer\")","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"hjuntan"},"content":" .withPhone(\"9482224\").withEmail(\"werner@example.com\")","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"Rikko1204"},"content":" .withTag(\"TA\").withSchedule(\"09/09/2020\").withRemark(\"\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"hjuntan"},"content":" public static final Person FIONA \u003d new PersonBuilder().withNusId(\"E5419832\").withName(\"Fiona Kunz\")","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"Rikko1204"},"content":" .withPhone(\"9482427\").withEmail(\"lydia@example.com\").withTag(\"None\")","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"Rikko1204"},"content":" .withSchedule(\"04/01/2020\").withRemark(\"Meet at MRT\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"hjuntan"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withNusId(\"E3548135\").withName(\"George Best\")","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"Rikko1204"},"content":" .withPhone(\"9482442\").withEmail(\"anna@example.com\").withTag(\"Student\")","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"Rikko1204"},"content":" .withSchedule(\"01-01-2020\").withRemark(\"\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":58,"author":{"gitId":"hjuntan"},"content":" public static final Person HOON \u003d new PersonBuilder().withNusId(\"E3518132\").withName(\"Hoon Meier\")","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"Rikko1204"},"content":" .withPhone(\"8482424\").withEmail(\"stefan@example.com\").withTag(\"Student\")","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"Rikko1204"},"content":" .withSchedule(\"08-08-2020\").withRemark(\"\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"hjuntan"},"content":" public static final Person IDA \u003d new PersonBuilder().withNusId(\"E9842465\").withName(\"Ida Mueller\")","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"Rikko1204"},"content":" .withPhone(\"8482131\").withEmail(\"hans@example.com\").withTag(\"None\")","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"Rikko1204"},"content":" .withSchedule(\"05-01-2024\").withRemark(\"Project meeting\").build();","lastModifiedDate":"2024-03-17"},{"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":"hjuntan"},"content":" public static final Person AMY \u003d new PersonBuilder().withNusId(VALID_NUSID_AMY).withName(VALID_NAME_AMY)","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"hjuntan"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY)","lastModifiedDate":"2024-03-11"},{"lineNumber":68,"author":{"gitId":"Rikko1204"},"content":" .withTag(VALID_TAG_AMY).withGroups(VALID_GROUP_FRIEND)","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"Rikko1204"},"content":" .withSchedule(VALID_SCHEDULE_AMY).withRemark(VALID_REMARK_AMY).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"hjuntan"},"content":" public static final Person BOB \u003d new PersonBuilder().withNusId(VALID_NUSID_BOB).withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-11"},{"lineNumber":71,"author":{"gitId":"hjuntan"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2024-03-11"},{"lineNumber":72,"author":{"gitId":"hjuntan"},"content":" .withTag(VALID_TAG_BOB).withGroups(VALID_GROUP_HUSBAND, VALID_GROUP_FRIEND)","lastModifiedDate":"2024-03-11"},{"lineNumber":73,"author":{"gitId":"Rikko1204"},"content":" .withSchedule(VALID_SCHEDULE_BOB).withRemark(VALID_REMARK_BOB).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05"},{"lineNumber":83,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10"},{"lineNumber":85,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10"},{"lineNumber":91,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04"},{"lineNumber":93,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13"}],"authorContributionMap":{"Rikko1204":24,"hjuntan":23,"-":46}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"hjuntan"},"content":"[![CI Status](https://github.com/AY2324S2-CS2103T-T15-2/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S2-CS2103T-T15-2/tp/actions)","lastModifiedDate":"2024-03-07"},{"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":"cheahTJ"},"content":"## Arona Pro","lastModifiedDate":"2024-03-05"},{"lineNumber":6,"author":{"gitId":"cheahTJ"},"content":"* This is **a sample project given to Software Engineering (SE) students**.\u003cbr\u003e","lastModifiedDate":"2024-03-05"},{"lineNumber":7,"author":{"gitId":"cheahTJ"},"content":"* The project simulates an ongoing software project for a desktop application (called _AronaPro_) catered for","lastModifiedDate":"2024-03-05"},{"lineNumber":8,"author":{"gitId":"cheahTJ"},"content":" Computer Science teaching assistants who appreciate an organised and vibrant approach to query,","lastModifiedDate":"2024-03-05"},{"lineNumber":9,"author":{"gitId":"cheahTJ"},"content":" and manage an array of students and professors’ contacts with CLI.","lastModifiedDate":"2024-03-05"},{"lineNumber":10,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":11,"author":{"gitId":"cheahTJ"},"content":" * It is **written in OOP fashion**.","lastModifiedDate":"2024-03-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * It comes with a **reasonable level of user and developer documentation**.","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":14,"author":{"gitId":"cheahTJ"},"content":"### Main features include:","lastModifiedDate":"2024-03-05"},{"lineNumber":15,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":16,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":17,"author":{"gitId":"cheahTJ"},"content":"#### View Contact Information","lastModifiedDate":"2024-03-05"},{"lineNumber":18,"author":{"gitId":"cheahTJ"},"content":"Description: `View` command allows you to see all the existing contacts of your students","lastModifiedDate":"2024-03-07"},{"lineNumber":19,"author":{"gitId":"cheahTJ"},"content":"\u003eFormat: `view`","lastModifiedDate":"2024-03-05"},{"lineNumber":20,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":21,"author":{"gitId":"cheahTJ"},"content":"#### Add New Contacts","lastModifiedDate":"2024-03-05"},{"lineNumber":22,"author":{"gitId":"cheahTJ"},"content":"Description: `Add` command allows you to add new contacts of your students into the address book","lastModifiedDate":"2024-03-07"},{"lineNumber":23,"author":{"gitId":"cheahTJ"},"content":"\u003eFormat: `id/NUSID n/NAME p/PHONE [e/EMAIL] [t/TAG]`","lastModifiedDate":"2024-03-06"},{"lineNumber":24,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":25,"author":{"gitId":"cheahTJ"},"content":"#### Edit Existing Contacts","lastModifiedDate":"2024-03-05"},{"lineNumber":26,"author":{"gitId":"cheahTJ"},"content":"Description: `Edit` command allows you to edit existing contacts of your students in the address book","lastModifiedDate":"2024-03-07"},{"lineNumber":27,"author":{"gitId":"cheahTJ"},"content":"\u003eFormat: `edit id/NUSID [n/NEWNAME] [p/NEWPHONE] [e/NEWEMAIL]`","lastModifiedDate":"2024-03-06"},{"lineNumber":28,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":29,"author":{"gitId":"cheahTJ"},"content":"#### Delete Existing Contacts","lastModifiedDate":"2024-03-05"},{"lineNumber":30,"author":{"gitId":"cheahTJ"},"content":"Description: `Delete` command allows you to delete existing contacts in the address book","lastModifiedDate":"2024-03-07"},{"lineNumber":31,"author":{"gitId":"cheahTJ"},"content":"\u003eFormat: `delete id/NUSID`","lastModifiedDate":"2024-03-06"},{"lineNumber":32,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":33,"author":{"gitId":"cheahTJ"},"content":"#### Filtering Existing Contacts","lastModifiedDate":"2024-03-05"},{"lineNumber":34,"author":{"gitId":"cheahTJ"},"content":"Description: `Filter` command allows you to filter desired contacts in the address book based on group","lastModifiedDate":"2024-03-07"},{"lineNumber":35,"author":{"gitId":"cheahTJ"},"content":"and tag specified","lastModifiedDate":"2024-03-07"},{"lineNumber":36,"author":{"gitId":"cheahTJ"},"content":"\u003eFormat: `filter [n/NAME] [p/PHONE] [e/EMAIL] [g/GROUP] [t/TAG]`","lastModifiedDate":"2024-03-06"},{"lineNumber":37,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":38,"author":{"gitId":"cheahTJ"},"content":"#### Assign contacts a tutorial group","lastModifiedDate":"2024-03-05"},{"lineNumber":39,"author":{"gitId":"cheahTJ"},"content":"Description: `Assign` command allows you to assign students into their respective tutorial groups in the","lastModifiedDate":"2024-03-07"},{"lineNumber":40,"author":{"gitId":"cheahTJ"},"content":"address book","lastModifiedDate":"2024-03-07"},{"lineNumber":41,"author":{"gitId":"cheahTJ"},"content":"\u003eFormat: `assign id/NUSID [g/GROUP] [t/TAG]`","lastModifiedDate":"2024-03-06"},{"lineNumber":42,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":43,"author":{"gitId":"cheahTJ"},"content":"#### Add Schedule","lastModifiedDate":"2024-03-06"},{"lineNumber":44,"author":{"gitId":"cheahTJ"},"content":"Description: `Schedyle` command allows you to schedule an appointment with students","lastModifiedDate":"2024-03-07"},{"lineNumber":45,"author":{"gitId":"cheahTJ"},"content":"\u003eFormat: `schedule id/NUSID d/DATE from/FROM [to/TO] [t/TAG] [r/REMARK]`","lastModifiedDate":"2024-03-06"},{"lineNumber":46,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* For the detailed documentation of this project, see the **[Address Book Product Website](https://se-education.org/addressbook-level3)**.","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"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":"2020-05-23"}],"authorContributionMap":{"cheahTJ":41,"hjuntan":1,"-":6}},{"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":"","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":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"cheahTJ"},"content":"### Cheah Tze Juen","lastModifiedDate":"2024-03-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"cheahTJ"},"content":"\u003cimg src\u003d\"images/cheahtj.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"cheahTJ"},"content":"[[github](https://github.com/cheahTJ)]","lastModifiedDate":"2024-03-05"},{"lineNumber":19,"author":{"gitId":"cheahTJ"},"content":"[[portfolio](team/cheahtj.md)]","lastModifiedDate":"2024-03-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"cheahTJ"},"content":"* Roles: Team Lead","lastModifiedDate":"2024-03-05"},{"lineNumber":22,"author":{"gitId":"cheahTJ"},"content":"* Responsibilities:","lastModifiedDate":"2024-03-05"},{"lineNumber":23,"author":{"gitId":"cheahTJ"},"content":" * Dedicates tasks among team and facilitate coordination among team members","lastModifiedDate":"2024-03-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"cheahTJ"},"content":"### Tan Hong Jun","lastModifiedDate":"2024-03-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"cheahTJ"},"content":"\u003cimg src\u003d\"images/hjuntan.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"cheahTJ"},"content":"[[github](http://github.com/hjuntan)]","lastModifiedDate":"2024-03-05"},{"lineNumber":31,"author":{"gitId":"cheahTJ"},"content":"[[portfolio](team/hjuntan.md)]","lastModifiedDate":"2024-03-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"cheahTJ"},"content":"* Role: Documentation","lastModifiedDate":"2024-03-05"},{"lineNumber":34,"author":{"gitId":"cheahTJ"},"content":"* Responsibilities: Ensures that all documentation are up-to-date and are specific to the user","lastModifiedDate":"2024-03-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"cheahTJ"},"content":"### Loh Jin Hun","lastModifiedDate":"2024-03-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"hjuntan"},"content":"\u003cimg src\u003d\"images/ragnapop.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-07"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"cheahTJ"},"content":"[[github](http://github.com/Ragnapop)] [[portfolio](team/ragnapop.md)]","lastModifiedDate":"2024-03-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"cheahTJ"},"content":"* Role: Testing","lastModifiedDate":"2024-03-05"},{"lineNumber":43,"author":{"gitId":"cheahTJ"},"content":"* Responsibilities: Ensures that all features are properly tested, even on edge cases","lastModifiedDate":"2024-03-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"cheahTJ"},"content":"### Chen Kuan Min","lastModifiedDate":"2024-03-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"hjuntan"},"content":"\u003cimg src\u003d\"images/rikko1204.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-07"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"cheahTJ"},"content":"[[github](http://github.com/Rikko1204)]","lastModifiedDate":"2024-03-05"},{"lineNumber":50,"author":{"gitId":"cheahTJ"},"content":"[[portfolio](team/rikko1204.md)]","lastModifiedDate":"2024-03-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"cheahTJ"},"content":"* Role: Scheduling and tracking","lastModifiedDate":"2024-03-05"},{"lineNumber":53,"author":{"gitId":"cheahTJ"},"content":"* Responsibilities: Ensures that the team is on pace with the 2 weeks sprint and helps assign","lastModifiedDate":"2024-03-05"},{"lineNumber":54,"author":{"gitId":"cheahTJ"},"content":" task equally to members","lastModifiedDate":"2024-03-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"cheahTJ"},"content":"### Guo Yuhao","lastModifiedDate":"2024-03-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"cheahTJ"},"content":"\u003cimg src\u003d\"images/ringoftheking.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-05"},{"lineNumber":59,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":60,"author":{"gitId":"cheahTJ"},"content":"[[github](http://github.com/RingoftheKing)]","lastModifiedDate":"2024-03-05"},{"lineNumber":61,"author":{"gitId":"cheahTJ"},"content":"[[portfolio](team/ringoftheking.md)]","lastModifiedDate":"2024-03-05"},{"lineNumber":62,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":63,"author":{"gitId":"cheahTJ"},"content":"* Role: Deliverables and deadlines","lastModifiedDate":"2024-03-05"},{"lineNumber":64,"author":{"gitId":"cheahTJ"},"content":"* Responsibilities: Ensures that the team is focussed on the individual task and is able to deliver the intended feature","lastModifiedDate":"2024-03-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-05"}],"authorContributionMap":{"cheahTJ":31,"hjuntan":2,"-":32}},{"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":"-"},"content":"# AB-3 Developer Guide","lastModifiedDate":"2023-09-12"},{"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":"cheahTJ"},"content":"## **Setting up, getting started**f","lastModifiedDate":"2024-03-21"},{"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":"-"},"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":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":"cheahTJ"},"content":"The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues the command `delete E0123456`.","lastModifiedDate":"2024-03-21"},{"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":"-"},"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":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":"-"},"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":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":"-"},"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":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":"cheahTJ"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"delete E0123456\")` API call as an example.","lastModifiedDate":"2024-03-21"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"cheahTJ"},"content":"\u003cpuml src\u003d\"diagrams/DeleteSequenceDiagram.puml\" alt\u003d\"Interactions Inside the Logic Component for the `delete E0123456` Command\" /\u003e","lastModifiedDate":"2024-03-21"},{"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 continues till 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).\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-02-09"},{"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":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12"},{"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":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"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":"2021-07-31"},{"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":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":133,"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":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":135,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"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":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"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":148,"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":149,"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":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","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":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"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":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"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":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"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":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"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":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"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":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"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":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"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":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":191,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"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":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":198,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"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":201,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"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":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":213,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":217,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":219,"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":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":223,"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":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"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":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"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":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","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":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":264,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":265,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":266,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":267,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"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":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":277,"author":{"gitId":"hjuntan"},"content":"* Tech-savvy university Computer Science teaching assistants","lastModifiedDate":"2024-03-07"},{"lineNumber":278,"author":{"gitId":"hjuntan"},"content":"* manages an array of students and professors’ contacts","lastModifiedDate":"2024-03-07"},{"lineNumber":279,"author":{"gitId":"hjuntan"},"content":"* appreciates an organized and vibrant approach to query, and manage contacts with CLI","lastModifiedDate":"2024-03-07"},{"lineNumber":280,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23"},{"lineNumber":281,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23"},{"lineNumber":282,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26"},{"lineNumber":283,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23"},{"lineNumber":284,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":285,"author":{"gitId":"-"},"content":"**Value proposition**: manage contacts faster than a typical mouse/GUI driven app","lastModifiedDate":"2020-05-23"},{"lineNumber":286,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":288,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":290,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":292,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":293,"author":{"gitId":"RingoftheKing"},"content":"|----------|-------------------------------------------------------------------------------|--------------------------------------------------------------|------------------------------------------------------------------------|","lastModifiedDate":"2024-03-04"},{"lineNumber":294,"author":{"gitId":"-"},"content":"| `* * *` | new user | see usage instructions | refer to instructions when I forget how to use the App |","lastModifiedDate":"2020-05-23"},{"lineNumber":295,"author":{"gitId":"RingoftheKing"},"content":"| `* * *` | Teaching Assistant | add a new student, prof, TA | know how to contact them |","lastModifiedDate":"2024-03-04"},{"lineNumber":296,"author":{"gitId":"-"},"content":"| `* * *` | user | delete a person | remove entries that I no longer need |","lastModifiedDate":"2020-05-23"},{"lineNumber":297,"author":{"gitId":"RingoftheKing"},"content":"| `* * *` | Teaching Assistant | find a student by name or class | locate details of persons without having to go through the entire list |","lastModifiedDate":"2024-03-04"},{"lineNumber":298,"author":{"gitId":"RingoftheKing"},"content":"| `* * *` | Teaching Assistant | Group students into classes | know which class my student is in |","lastModifiedDate":"2024-03-04"},{"lineNumber":299,"author":{"gitId":"RingoftheKing"},"content":"| `* * *` | Teaching assistant | find my supervisor(s) | Report any admin issues my students would raise |","lastModifiedDate":"2024-03-04"},{"lineNumber":300,"author":{"gitId":"RingoftheKing"},"content":"| `* * *` | University student with different friend groups | Tag or categorize my contacts | Search by the friend groups I\u0027m concerned with |","lastModifiedDate":"2024-03-04"},{"lineNumber":301,"author":{"gitId":"RingoftheKing"},"content":"| `* * *` | Teaching Assistant who wants to meet up with Profs and students | Schedule events to do so | remind myself to meet up or know my free times. |","lastModifiedDate":"2024-03-04"},{"lineNumber":302,"author":{"gitId":"RingoftheKing"},"content":"| `* * *` | Teaching Assistant with important people to report to or stay in contact with | pin important contacts | |","lastModifiedDate":"2024-03-04"},{"lineNumber":303,"author":{"gitId":"RingoftheKing"},"content":"| `* * *` | Teaching Assistant who needs to announce information to his students | copy a (group of) student(s)\u0027 contact info onto my clipboard | announce a message efficiently to many students |","lastModifiedDate":"2024-03-04"},{"lineNumber":304,"author":{"gitId":"RingoftheKing"},"content":"| `* *` | Forgetful Teaching Assistant | A check for addition of duplicate contacts | can reduce clutter of my list |","lastModifiedDate":"2024-03-04"},{"lineNumber":305,"author":{"gitId":"RingoftheKing"},"content":"| `* *` | Teaching assistant who might mistype | Have a Confirm Delete warning when doing deletions | Provide a safety net in case I accidentally delete important info |","lastModifiedDate":"2024-03-04"},{"lineNumber":306,"author":{"gitId":"RingoftheKing"},"content":"| `* *` | Teaching assistant with many students | Personalize contacts with photos | Attribute names to faces and distinguish similar names. |","lastModifiedDate":"2024-03-04"},{"lineNumber":307,"author":{"gitId":"-"},"content":"| `* *` | user | hide private contact details | minimize chance of someone else seeing them by accident |","lastModifiedDate":"2020-05-23"},{"lineNumber":308,"author":{"gitId":"-"},"content":"| `*` | user with many persons in the address book | sort persons by name | locate a person easily |","lastModifiedDate":"2020-05-23"},{"lineNumber":309,"author":{"gitId":"RingoftheKing"},"content":"| `*` | detail-oriented Teaching Assistant | Add a note with additional information about the contact | remind myself of things I may need to follow up on |","lastModifiedDate":"2024-03-04"},{"lineNumber":310,"author":{"gitId":"RingoftheKing"},"content":"| `*` | Teaching assistant who tires from work | use an app with a cheerful interface | feel encouraged / at peace |","lastModifiedDate":"2024-03-04"},{"lineNumber":311,"author":{"gitId":"RingoftheKing"},"content":"| `*` | Teaching assistant | import and export contact details to/from the app | can easily shift to using this app, or another |","lastModifiedDate":"2024-03-04"},{"lineNumber":312,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":313,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":315,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":316,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":317,"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":318,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":319,"author":{"gitId":"Ragnapop"},"content":"**Use case: View all contacts**","lastModifiedDate":"2024-03-04"},{"lineNumber":320,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":321,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":322,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":323,"author":{"gitId":"Ragnapop"},"content":"1. User requests to view all contacts.","lastModifiedDate":"2024-03-04"},{"lineNumber":324,"author":{"gitId":"Ragnapop"},"content":"2. AddressBook shows a list of contacts added.","lastModifiedDate":"2024-03-04"},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":326,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":327,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":328,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":329,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":330,"author":{"gitId":"Ragnapop"},"content":"* 1a. User uses the wrong format in his request.","lastModifiedDate":"2024-03-04"},{"lineNumber":331,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":332,"author":{"gitId":"Ragnapop"},"content":" * 1a1. AddressBook shows an error message.","lastModifiedDate":"2024-03-04"},{"lineNumber":333,"author":{"gitId":"Ragnapop"},"content":" * 1a2. User uses the correct format as shown in the error message for his request.","lastModifiedDate":"2024-03-04"},{"lineNumber":334,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":335,"author":{"gitId":"Ragnapop"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-04"},{"lineNumber":336,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":337,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":338,"author":{"gitId":"Ragnapop"},"content":"**Use case: Add a contact**","lastModifiedDate":"2024-03-04"},{"lineNumber":339,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":340,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":341,"author":{"gitId":"Ragnapop"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":342,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":343,"author":{"gitId":"Ragnapop"},"content":"1. User requests to add a contact.","lastModifiedDate":"2024-03-04"},{"lineNumber":344,"author":{"gitId":"Ragnapop"},"content":"2. User inputs all information required to add a contact into AddressBook.","lastModifiedDate":"2024-03-04"},{"lineNumber":345,"author":{"gitId":"Ragnapop"},"content":"3. AddressBook adds the contact with all relevant information into a list.","lastModifiedDate":"2024-03-04"},{"lineNumber":346,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":347,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":348,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":349,"author":{"gitId":"Ragnapop"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":350,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":351,"author":{"gitId":"Ragnapop"},"content":"* 2a. The given information is in an incorrect format.","lastModifiedDate":"2024-03-04"},{"lineNumber":352,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":353,"author":{"gitId":"Ragnapop"},"content":" * 2a1. AddressBook shows an error message.","lastModifiedDate":"2024-03-04"},{"lineNumber":354,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":355,"author":{"gitId":"Ragnapop"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":356,"author":{"gitId":"Ragnapop"},"content":" ","lastModifiedDate":"2024-03-07"},{"lineNumber":357,"author":{"gitId":"Ragnapop"},"content":"* 2b. The given information is insufficient to form a contact.","lastModifiedDate":"2024-03-04"},{"lineNumber":358,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":359,"author":{"gitId":"Ragnapop"},"content":" * 2b1. AddressBook shows an error message.","lastModifiedDate":"2024-03-04"},{"lineNumber":360,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":361,"author":{"gitId":"Ragnapop"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":362,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":363,"author":{"gitId":"Ragnapop"},"content":"**Use case: Edit a contact\u0027s particulars**","lastModifiedDate":"2024-03-04"},{"lineNumber":364,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":365,"author":{"gitId":"Ragnapop"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":366,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":367,"author":{"gitId":"Ragnapop"},"content":"1. User requests to edit a contact.","lastModifiedDate":"2024-03-04"},{"lineNumber":368,"author":{"gitId":"Ragnapop"},"content":"2. User inputs all fields he wishes to edit about said contact,as well as the information required to edit a contact into AddressBook.","lastModifiedDate":"2024-03-04"},{"lineNumber":369,"author":{"gitId":"Ragnapop"},"content":"3. AddressBook edits the contact by changing all the specified fields into the newly inputted information.","lastModifiedDate":"2024-03-04"},{"lineNumber":370,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":371,"author":{"gitId":"Ragnapop"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":372,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":373,"author":{"gitId":"Ragnapop"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":374,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":375,"author":{"gitId":"Ragnapop"},"content":"* 2a. The given information is in an incorrect format.","lastModifiedDate":"2024-03-04"},{"lineNumber":376,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":377,"author":{"gitId":"Ragnapop"},"content":" * 2a1. AddressBook shows an error message.","lastModifiedDate":"2024-03-04"},{"lineNumber":378,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":379,"author":{"gitId":"Ragnapop"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":380,"author":{"gitId":"Ragnapop"},"content":" ","lastModifiedDate":"2024-03-04"},{"lineNumber":381,"author":{"gitId":"Ragnapop"},"content":"* 2a. The contact does not exist.","lastModifiedDate":"2024-03-04"},{"lineNumber":382,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":383,"author":{"gitId":"Ragnapop"},"content":" * 2a1. AddressBook shows an error message.","lastModifiedDate":"2024-03-04"},{"lineNumber":384,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":385,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":386,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":387,"author":{"gitId":"Ragnapop"},"content":"**Use case: Delete a contact**","lastModifiedDate":"2024-03-04"},{"lineNumber":388,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":389,"author":{"gitId":"Ragnapop"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":390,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":391,"author":{"gitId":"Ragnapop"},"content":"1. User requests to delete a specific contact.","lastModifiedDate":"2024-03-04"},{"lineNumber":392,"author":{"gitId":"Ragnapop"},"content":"2. AddressBook deletes the specified contact.","lastModifiedDate":"2024-03-04"},{"lineNumber":393,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":394,"author":{"gitId":"Ragnapop"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":395,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":396,"author":{"gitId":"Ragnapop"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":397,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":398,"author":{"gitId":"Ragnapop"},"content":"* 1a. User uses the wrong format in his request.","lastModifiedDate":"2024-03-04"},{"lineNumber":399,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":400,"author":{"gitId":"Ragnapop"},"content":" * 1a1. AddressBook shows an error message.","lastModifiedDate":"2024-03-04"},{"lineNumber":401,"author":{"gitId":"Ragnapop"},"content":" * 1a2. User uses the correct format as shown in the error message for his request.","lastModifiedDate":"2024-03-04"},{"lineNumber":402,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":403,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23"},{"lineNumber":404,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":405,"author":{"gitId":"Ragnapop"},"content":"* 2a. The contact does not exist.","lastModifiedDate":"2024-03-04"},{"lineNumber":406,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":407,"author":{"gitId":"Ragnapop"},"content":" * 2a1. AddressBook shows an error message.","lastModifiedDate":"2024-03-04"},{"lineNumber":408,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":409,"author":{"gitId":"Ragnapop"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":410,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":411,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":412,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":413,"author":{"gitId":"Ragnapop"},"content":"**Use case: Find a specific existing contact**","lastModifiedDate":"2024-03-04"},{"lineNumber":414,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":415,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":416,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":417,"author":{"gitId":"Ragnapop"},"content":"1. User requests to find a specific contact.","lastModifiedDate":"2024-03-04"},{"lineNumber":418,"author":{"gitId":"Ragnapop"},"content":"2. AddressBook outputs the contact with all relevant information about the contact.","lastModifiedDate":"2024-03-04"},{"lineNumber":419,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":420,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":421,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":422,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":423,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":424,"author":{"gitId":"Ragnapop"},"content":"* 1a. User uses the wrong format in his request.","lastModifiedDate":"2024-03-04"},{"lineNumber":425,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":426,"author":{"gitId":"Ragnapop"},"content":" * 1a1. AddressBook shows an error message.","lastModifiedDate":"2024-03-04"},{"lineNumber":427,"author":{"gitId":"Ragnapop"},"content":" * 1a2. User uses the correct format as shown in the error message for his request.","lastModifiedDate":"2024-03-04"},{"lineNumber":428,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":429,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23"},{"lineNumber":430,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":431,"author":{"gitId":"Ragnapop"},"content":"* 2a. The contact does not exist.","lastModifiedDate":"2024-03-04"},{"lineNumber":432,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":433,"author":{"gitId":"Ragnapop"},"content":" * 2a1. AddressBook shows an error message.","lastModifiedDate":"2024-03-04"},{"lineNumber":434,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":435,"author":{"gitId":"Ragnapop"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":436,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":437,"author":{"gitId":"Ragnapop"},"content":"**Use case: Assign an existing contact to a tutorial group**","lastModifiedDate":"2024-03-04"},{"lineNumber":438,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":439,"author":{"gitId":"Ragnapop"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":440,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":441,"author":{"gitId":"Ragnapop"},"content":"1. User requests to tag a specific contact to a tutorial group.","lastModifiedDate":"2024-03-04"},{"lineNumber":442,"author":{"gitId":"Ragnapop"},"content":"2. AddressBook tags the contact to the tutorial group.","lastModifiedDate":"2024-03-04"},{"lineNumber":443,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":444,"author":{"gitId":"Ragnapop"},"content":" Use case ends.","lastModifiedDate":"2024-03-14"},{"lineNumber":445,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":446,"author":{"gitId":"Ragnapop"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":447,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":448,"author":{"gitId":"Ragnapop"},"content":"* 1a. User uses the wrong format in his request.","lastModifiedDate":"2024-03-04"},{"lineNumber":449,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":450,"author":{"gitId":"Ragnapop"},"content":" * 1a1. AddressBook shows an error message.","lastModifiedDate":"2024-03-04"},{"lineNumber":451,"author":{"gitId":"Ragnapop"},"content":" * 1a2. User uses the correct format as shown in the error message for his request.","lastModifiedDate":"2024-03-04"},{"lineNumber":452,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":453,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-04"},{"lineNumber":454,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":455,"author":{"gitId":"Ragnapop"},"content":"* 2a. The contact does not exist.","lastModifiedDate":"2024-03-04"},{"lineNumber":456,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":457,"author":{"gitId":"Ragnapop"},"content":" * 2a1. AddressBook shows an error message.","lastModifiedDate":"2024-03-04"},{"lineNumber":458,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":459,"author":{"gitId":"Ragnapop"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":460,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":461,"author":{"gitId":"Ragnapop"},"content":"* 2a. The tutorial group does not yet exist.","lastModifiedDate":"2024-03-04"},{"lineNumber":462,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":463,"author":{"gitId":"Ragnapop"},"content":" * 2a1. AddressBook creates a new tag with the name of the tutorial group.","lastModifiedDate":"2024-03-04"},{"lineNumber":464,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":465,"author":{"gitId":"Ragnapop"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-04"},{"lineNumber":466,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":467,"author":{"gitId":"Ragnapop"},"content":"**Use case: Classify an existing contact (Prof, TA, Student)**","lastModifiedDate":"2024-03-04"},{"lineNumber":468,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":469,"author":{"gitId":"Ragnapop"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":470,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":471,"author":{"gitId":"Ragnapop"},"content":"1. User requests to classify a specific contact.","lastModifiedDate":"2024-03-04"},{"lineNumber":472,"author":{"gitId":"Ragnapop"},"content":"2. AddressBook classifies the contact as either a Professor, TA or Student.","lastModifiedDate":"2024-03-04"},{"lineNumber":473,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":474,"author":{"gitId":"Ragnapop"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":475,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":476,"author":{"gitId":"Ragnapop"},"content":"* 1a. User uses the wrong format in his request.","lastModifiedDate":"2024-03-04"},{"lineNumber":477,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":478,"author":{"gitId":"Ragnapop"},"content":" * 1a1. AddressBook shows an error message.","lastModifiedDate":"2024-03-04"},{"lineNumber":479,"author":{"gitId":"Ragnapop"},"content":" * 1a2. User uses the correct format as shown in the error message for his request.","lastModifiedDate":"2024-03-04"},{"lineNumber":480,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":481,"author":{"gitId":"Ragnapop"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-04"},{"lineNumber":482,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":483,"author":{"gitId":"Ragnapop"},"content":"* 2a. The contact does not exist.","lastModifiedDate":"2024-03-04"},{"lineNumber":484,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":485,"author":{"gitId":"Ragnapop"},"content":" * 2a1. AddressBook shows an error message.","lastModifiedDate":"2024-03-04"},{"lineNumber":486,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":487,"author":{"gitId":"Ragnapop"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":488,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":489,"author":{"gitId":"Ragnapop"},"content":"* 2a. The tag does not exist.","lastModifiedDate":"2024-03-04"},{"lineNumber":490,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":491,"author":{"gitId":"Ragnapop"},"content":" * 2a1. AddressBook shows an error message.","lastModifiedDate":"2024-03-04"},{"lineNumber":492,"author":{"gitId":"Ragnapop"},"content":" * 2a2. User has to request the classification again using a correct classifier","lastModifiedDate":"2024-03-04"},{"lineNumber":493,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":494,"author":{"gitId":"Ragnapop"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":495,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":496,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":497,"author":{"gitId":"Ragnapop"},"content":"**Use case: schedules an event with a contact**","lastModifiedDate":"2024-03-06"},{"lineNumber":498,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":499,"author":{"gitId":"Ragnapop"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":500,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":501,"author":{"gitId":"Ragnapop"},"content":"1. User requests to schedule an event with a specific contact.","lastModifiedDate":"2024-03-06"},{"lineNumber":502,"author":{"gitId":"Ragnapop"},"content":"2. User inputs all necessary information into AddressBook in order for the event to be scheduled.","lastModifiedDate":"2024-03-06"},{"lineNumber":503,"author":{"gitId":"Ragnapop"},"content":"3. AddressBook creates the event and classifies it under the contact.","lastModifiedDate":"2024-03-06"},{"lineNumber":504,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":505,"author":{"gitId":"Ragnapop"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":506,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":507,"author":{"gitId":"Ragnapop"},"content":"* 1a. User uses the wrong format in his request.","lastModifiedDate":"2024-03-06"},{"lineNumber":508,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":509,"author":{"gitId":"Ragnapop"},"content":" * 1a1. AddressBook shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":510,"author":{"gitId":"Ragnapop"},"content":" * 1a2. User uses the correct format as shown in the error message for his request.","lastModifiedDate":"2024-03-06"},{"lineNumber":511,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":512,"author":{"gitId":"Ragnapop"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-06"},{"lineNumber":513,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":514,"author":{"gitId":"Ragnapop"},"content":"* 2a. The contact does not exist.","lastModifiedDate":"2024-03-06"},{"lineNumber":515,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":516,"author":{"gitId":"Ragnapop"},"content":" * 2a1. AddressBook shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":517,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":518,"author":{"gitId":"Ragnapop"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":519,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":520,"author":{"gitId":"Ragnapop"},"content":"* 2a. The information required is not sufficiently inputted.","lastModifiedDate":"2024-03-06"},{"lineNumber":521,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":522,"author":{"gitId":"Ragnapop"},"content":" * 2a1. AddressBook shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":523,"author":{"gitId":"Ragnapop"},"content":" * 2a2. User has to request the classification again using a correct classifier","lastModifiedDate":"2024-03-06"},{"lineNumber":524,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":525,"author":{"gitId":"Ragnapop"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-06"},{"lineNumber":526,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":527,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":528,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":529,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":530,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":531,"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":532,"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":533,"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":534,"author":{"gitId":"hjuntan"},"content":"4. A novice user should be able to learn basic operations (add, delete, search entries) within 30 minutes of using the documentation.","lastModifiedDate":"2024-03-05"},{"lineNumber":535,"author":{"gitId":"hjuntan"},"content":"5. The system should respond within two seconds.","lastModifiedDate":"2024-03-05"},{"lineNumber":536,"author":{"gitId":"hjuntan"},"content":"6. The system should be backward compatible with data produced by earlier versions of the system","lastModifiedDate":"2024-03-05"},{"lineNumber":537,"author":{"gitId":"hjuntan"},"content":"7. The system should smoothly handle user input errors and system issues, providing meaningful error messages without crashing.","lastModifiedDate":"2024-03-05"},{"lineNumber":538,"author":{"gitId":"hjuntan"},"content":"8. Comply with relevant data protection regulations, Personal Data Protection Act (PDPA) in handling personal information.","lastModifiedDate":"2024-03-05"},{"lineNumber":539,"author":{"gitId":"hjuntan"},"content":"9. Adhere to recommended coding standards, such as readability, modularity, and application of design patterns, to make upgrades and maintenance simpler.","lastModifiedDate":"2024-03-05"},{"lineNumber":540,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":541,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":542,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":543,"author":{"gitId":"Rikko1204"},"content":"* **Teaching Assistant (TA)**: A student-tutor hired by NUS. TAs are responsible for conducting tutorial lessons and assist in the students\u0027 learning whenever required.","lastModifiedDate":"2024-03-06"},{"lineNumber":544,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":545,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":546,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":547,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":548,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":549,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":550,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":551,"author":{"gitId":"-"},"content":"\u003cboxtype\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":552,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":553,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12"},{"lineNumber":554,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":555,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":556,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":557,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":558,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":559,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":560,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":561,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":562,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":563,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":564,"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":565,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":566,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":567,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":568,"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":569,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":570,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":571,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":572,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":573,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":574,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":575,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":576,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":577,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":578,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":579,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":580,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":581,"author":{"gitId":"cheahTJ"},"content":" 1. Test case: `delete E0123456`\u003cbr\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":582,"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":583,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":584,"author":{"gitId":"cheahTJ"},"content":" 1. Test case: `delete E0000000`\u003cbr\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":585,"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":586,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":587,"author":{"gitId":"cheahTJ"},"content":" 1. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is NusId which does not exist currently in the address book)\u003cbr\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":588,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":589,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":590,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":591,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":592,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":593,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":594,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":595,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":596,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":597,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":598,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"cheahTJ":7,"Rikko1204":1,"RingoftheKing":16,"Ragnapop":172,"hjuntan":9,"-":393}},{"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":"-"},"content":"# AB-3 User Guide","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"AddressBook Level 3 (AB3) is a **desktop app for managing contacts, optimized for use via a Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, AB3 can get your contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2023-09-12"},{"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":"-"},"content":"1. Download the latest `addressbook.jar` from [here](https://github.com/se-edu/addressbook-level3/releases).","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your AddressBook.","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar addressbook.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2023-01-01"},{"lineNumber":25,"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":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":"-"},"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":29,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"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":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2023-01-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"**Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"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":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"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":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"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":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"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":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"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":64,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":66,"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":67,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"### Adding a person: `add`","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"Adds a person to the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"Rikko1204"},"content":"Format: `add id/ID n/NAME p/PHONE_NUMBER e/EMAIL [t/TAG]…​`","lastModifiedDate":"2024-03-06"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":86,"author":{"gitId":"Rikko1204"},"content":"**Tip:** A person can have 0 or 1 tag","lastModifiedDate":"2024-03-06"},{"lineNumber":87,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"Rikko1204"},"content":"* `add id/E1234567 n/John Doe p/98765432 e/johnd@example.com`","lastModifiedDate":"2024-03-06"},{"lineNumber":91,"author":{"gitId":"Rikko1204"},"content":"* `add id/E7654321 n/Betsy Crowe t/student e/betsycrowe@example.com p/1234567`","lastModifiedDate":"2024-03-06"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"### Listing all persons : `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"Shows a list of all persons in the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"### Editing a person : `edit`","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"Edits an existing person in the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"cheahTJ"},"content":"Format: `edit nusId [n/NAME] [p/PHONE] [e/EMAIL] [t/TAG] [g/GROUP]` ","lastModifiedDate":"2024-03-21"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"cheahTJ"},"content":"* Edits the person with a specified `nusId`. The nusId refers to the nusId shown in the displayed person list. The nusId **must be a 7-digit number following an \u0027E\u0027**","lastModifiedDate":"2024-03-21"},{"lineNumber":106,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"cheahTJ"},"content":"* When editing tags, the valid forms have to be either 1 of these: Professor, TA, Student, None ","lastModifiedDate":"2024-03-21"},{"lineNumber":109,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"cheahTJ"},"content":"* `edit E0123456 p/91234567 e/johndoe@example.com` Edits the phone number and email address of the person with `nusId` E0123456 to be `91234567` and `johndoe@example.com` respectively.","lastModifiedDate":"2024-03-21"},{"lineNumber":113,"author":{"gitId":"cheahTJ"},"content":"* `edit E1234567 n/Betsy t/Professor` Edits the name and the tag of the person with `nusId` E1234567 to be `Betsy` and `Professor` respectively.","lastModifiedDate":"2024-03-21"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":"### Locating persons by name: `find`","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"Finds persons whose names contain any of the given keywords.","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"RingoftheKing"},"content":"Format: `find [n/NAME] [p/PHONE] [e/EMAIL] [t/TAG] [g/GROUP] [g/MORE GROUPS]`","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":121,"author":{"gitId":"RingoftheKing"},"content":"* The NAME search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2024-03-10"},{"lineNumber":122,"author":{"gitId":"RingoftheKing"},"content":"* The order of NAME keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2024-03-10"},{"lineNumber":123,"author":{"gitId":"RingoftheKing"},"content":"* Only full words will be matched for NAME e.g. `Han` will not match `Hans`","lastModifiedDate":"2024-03-10"},{"lineNumber":124,"author":{"gitId":"RingoftheKing"},"content":"* Persons matching ANY word will be selected for NAME (e.g. `Hans Bo` will fetch `Hans Gruber`, `Bo Yang`)","lastModifiedDate":"2024-03-10"},{"lineNumber":125,"author":{"gitId":"RingoftheKing"},"content":"* The PHONE search matches people that has a number that STARTS WITH the query (e.g `9123` fetches `91237654`)","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"RingoftheKing"},"content":"* The EMAIL search uses a PARTIAL, case-insensitive match. (e.g. `charles` matches `PrinceCharles@kingston.com`)","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"RingoftheKing"},"content":"* The TAG search uses an EXACT case-sensitive match. ","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"RingoftheKing"},"content":"* The GROUP search fetches people with ALL specified groups (e.g `g/CS2101 g/CS2103T` matches a person who minimally has BOTH these Groups)","lastModifiedDate":"2024-03-17"},{"lineNumber":129,"author":{"gitId":"RingoftheKing"},"content":"* Persons matching all parameters will be returned (i.e. `AND` search).","lastModifiedDate":"2024-03-10"},{"lineNumber":130,"author":{"gitId":"hjuntan"},"content":" ","lastModifiedDate":"2024-03-15"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"* `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"Deletes the specified person from the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"cheahTJ"},"content":"Format: `delete nusId`","lastModifiedDate":"2024-03-21"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"cheahTJ"},"content":"* Deletes the person of a specified `nusId`.","lastModifiedDate":"2024-03-21"},{"lineNumber":144,"author":{"gitId":"cheahTJ"},"content":"* The nusId refers to the nusId shown in the displayed person list.","lastModifiedDate":"2024-03-21"},{"lineNumber":145,"author":{"gitId":"cheahTJ"},"content":"* The nusId **must be a 7-digit number following an \u0027E\u0027** ","lastModifiedDate":"2024-03-21"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"cheahTJ"},"content":"* `delete E0123456` will delete an existing person with `nusId` of \"E0123456\".","lastModifiedDate":"2024-03-21"},{"lineNumber":149,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"Clears all entries from the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"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":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":169,"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":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":171,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":173,"author":{"gitId":"-"},"content":"**Caution:**","lastModifiedDate":"2023-09-12"},{"lineNumber":174,"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.\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":175,"author":{"gitId":"-"},"content":"Furthermore, certain edits can cause the AddressBook to behave in unexpected ways (e.g., if a value entered is outside the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.","lastModifiedDate":"2023-09-12"},{"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":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"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":188,"author":{"gitId":"-"},"content":"","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":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":193,"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":194,"author":{"gitId":"-"},"content":"","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":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"RingoftheKing"},"content":"| Action | Format, Examples |","lastModifiedDate":"2024-03-17"},{"lineNumber":200,"author":{"gitId":"RingoftheKing"},"content":"|------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------|","lastModifiedDate":"2024-03-17"},{"lineNumber":201,"author":{"gitId":"RingoftheKing"},"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":"2024-03-17"},{"lineNumber":202,"author":{"gitId":"RingoftheKing"},"content":"| **Clear** | `clear` |","lastModifiedDate":"2024-03-17"},{"lineNumber":203,"author":{"gitId":"RingoftheKing"},"content":"| **Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3` |","lastModifiedDate":"2024-03-17"},{"lineNumber":204,"author":{"gitId":"RingoftheKing"},"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":"2024-03-17"},{"lineNumber":205,"author":{"gitId":"RingoftheKing"},"content":"| **Find** | `find [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [t/TAG] [g/GROUP]`\u003cbr\u003e e.g., `find n/James g/CS2103T` |","lastModifiedDate":"2024-03-17"},{"lineNumber":206,"author":{"gitId":"RingoftheKing"},"content":"| **List** | `list` |","lastModifiedDate":"2024-03-17"},{"lineNumber":207,"author":{"gitId":"RingoftheKing"},"content":"| **Help** | `help` |","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"cheahTJ":12,"Rikko1204":4,"RingoftheKing":19,"hjuntan":1,"-":171}},{"path":"docs/_markbind/layouts/default.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003chead-bottom\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003clink rel\u003d\"stylesheet\" href\u003d\"{{baseUrl}}/stylesheets/main.css\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c/head-bottom\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003cheader sticky\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cnavbar type\u003d\"dark\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"Rikko1204"},"content":" \u003ca slot\u003d\"brand\" href\u003d\"{{baseUrl}}/index.html\" title\u003d\"Home\" class\u003d\"navbar-brand\"\u003eAronaPro\u003c/a\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/index.html\" class\u003d\"nav-link\"\u003eHome\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/UserGuide.html\" class\u003d\"nav-link\"\u003eUser Guide\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/DeveloperGuide.html\" class\u003d\"nav-link\"\u003eDeveloper Guide\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/AboutUs.html\" class\u003d\"nav-link\"\u003eAbout Us\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"https://github.com/se-edu/addressbook-level3\" target\u003d\"_blank\" class\u003d\"nav-link\"\u003e\u003cmd\u003e:fab-github:\u003c/md\u003e\u003c/a\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cli slot\u003d\"right\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cform class\u003d\"navbar-form\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003csearchbar :data\u003d\"searchData\" placeholder\u003d\"Search\" :on-hit\u003d\"searchCallback\" menu-align-right\u003e\u003c/searchbar\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/form\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/navbar\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"\u003c/header\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"flex-body\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"site-nav\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"site-nav-top\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"fw-bold mb-2\" style\u003d\"font-size: 1.25rem;\"\u003eSite Map\u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003csite-nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"* [Home]({{ baseUrl }}/index.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"* [User Guide]({{ baseUrl }}/UserGuide.html) :expanded:","lastModifiedDate":"2023-09-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * [Quick Start]({{ baseUrl }}/UserGuide.html#quick-start)","lastModifiedDate":"2023-09-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * [Features]({{ baseUrl }}/UserGuide.html#features)","lastModifiedDate":"2023-09-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * [FAQ]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * [Command Summary]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":"* [Developer Guide]({{ baseUrl }}/DeveloperGuide.html) :expanded:","lastModifiedDate":"2023-09-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * [Acknowledgements]({{ baseUrl }}/DeveloperGuide.html#acknowledgements)","lastModifiedDate":"2023-09-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * [Setting Up]({{ baseUrl }}/DeveloperGuide.html#setting-up-getting-started)","lastModifiedDate":"2023-09-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * [Design]({{ baseUrl }}/DeveloperGuide.html#design)","lastModifiedDate":"2023-09-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * [Implementation]({{ baseUrl }}/DeveloperGuide.html#implementation)","lastModifiedDate":"2023-09-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * [Documentation, logging, testing, configuration, dev-ops]({{ baseUrl }}/DeveloperGuide.html#documentation-logging-testing-configuration-dev-ops)","lastModifiedDate":"2023-09-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * [Appendix: Requirements]({{ baseUrl }}/DeveloperGuide.html#appendix-requirements)","lastModifiedDate":"2023-09-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * [Appendix: Instructions for manual testing]({{ baseUrl }}/DeveloperGuide.html#appendix-instructions-for-manual-testing)","lastModifiedDate":"2023-09-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":"* Tutorials","lastModifiedDate":"2023-09-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * [Tracing code]({{ baseUrl }}/tutorials/TracingCode.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * [Adding a command]({{ baseUrl }}/tutorials/AddRemark.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * [Removing Fields]({{ baseUrl }}/tutorials/RemovingFields.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [About Us]({{ baseUrl }}/AboutUs.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/site-nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cdiv id\u003d\"content-wrapper\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" {{ content }}","lastModifiedDate":"2023-09-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"page-nav\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cpage-nav /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003cscroll-top-button\u003e\u003c/scroll-top-button\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":"\u003cfooter\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003c!-- Support MarkBind by including a link to us on your landing page! --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"text-center\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u003csmall\u003e[\u003cmd\u003e**Powered by**\u003c/md\u003e \u003cimg src\u003d\"https://markbind.org/favicon.ico\" width\u003d\"30\"\u003e {{MarkBind}}, generated on {{timestamp}}]\u003c/small\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003c/footer\u003e","lastModifiedDate":"2023-09-12"}],"authorContributionMap":{"Rikko1204":1,"-":66}},{"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":"cheahTJ"},"content":"participant \":ParserUtil\" as ParserUtil LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"participant \"d:DeleteCommand\" as DeleteCommand LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-02-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-02-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"cheahTJ"},"content":"[-\u003e LogicManager : execute(\"delete E01234567\")","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":"activate LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"cheahTJ"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"delete E01234567\")","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":"activate AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"create DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":"AddressBookParser -\u003e DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"activate DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"DeleteCommandParser --\u003e AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"deactivate DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"cheahTJ"},"content":"AddressBookParser -\u003e DeleteCommandParser : parse(\"E01234567\")","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":"activate DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":34,"author":{"gitId":"cheahTJ"},"content":"create ParserUtil","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"cheahTJ"},"content":"DeleteCommandParser -\u003e ParserUtil : parseNusId(\"E01234567\")","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"cheahTJ"},"content":"activate ParserUtil","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"cheahTJ"},"content":"ParserUtil -\u003e DeleteCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"cheahTJ"},"content":"deactivate ParserUtil","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":"create DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":42,"author":{"gitId":"cheahTJ"},"content":"DeleteCommandParser -\u003e DeleteCommand : DeleteCommand(nusId)","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":"activate DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"DeleteCommand --\u003e DeleteCommandParser :","lastModifiedDate":"2024-02-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":"deactivate DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":48,"author":{"gitId":"Ragnapop"},"content":"DeleteCommandParser --\u003e AddressBookParser : D","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":"deactivate DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":50,"author":{"gitId":"-"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2019-07-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"DeleteCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":52,"author":{"gitId":"-"},"content":"destroy DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":54,"author":{"gitId":"-"},"content":"AddressBookParser --\u003e LogicManager : d","lastModifiedDate":"2019-07-03"},{"lineNumber":55,"author":{"gitId":"-"},"content":"deactivate AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":"LogicManager -\u003e DeleteCommand : execute(m)","lastModifiedDate":"2024-02-09"},{"lineNumber":58,"author":{"gitId":"-"},"content":"activate DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":60,"author":{"gitId":"cheahTJ"},"content":"DeleteCommand -\u003e Model : deletePerson(personToDelete)","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":"activate Model","lastModifiedDate":"2019-07-03"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":63,"author":{"gitId":"-"},"content":"Model --\u003e DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":64,"author":{"gitId":"-"},"content":"deactivate Model","lastModifiedDate":"2019-07-03"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":66,"author":{"gitId":"-"},"content":"create CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":67,"author":{"gitId":"-"},"content":"DeleteCommand -\u003e CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":68,"author":{"gitId":"-"},"content":"activate CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":70,"author":{"gitId":"-"},"content":"CommandResult --\u003e DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":71,"author":{"gitId":"-"},"content":"deactivate CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":73,"author":{"gitId":"-"},"content":"DeleteCommand --\u003e LogicManager : r","lastModifiedDate":"2024-02-09"},{"lineNumber":74,"author":{"gitId":"-"},"content":"deactivate DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":76,"author":{"gitId":"-"},"content":"[\u003c--LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":77,"author":{"gitId":"-"},"content":"deactivate LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":78,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"cheahTJ":13,"Ragnapop":1,"-":64}},{"path":"docs/diagrams/EditSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"cheahTJ"},"content":"@startuml","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"cheahTJ"},"content":"!include style.puml","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"cheahTJ"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"cheahTJ"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"cheahTJ"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"cheahTJ"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"cheahTJ"},"content":"participant \":EditCommandParser\" as EditCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"cheahTJ"},"content":"participant \":ArgumentTokenizer\" as ArgumentTokenizer LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"Ragnapop"},"content":"participant \"editPersonDescriptor:EditPersonDescriptor\" as EditPersonDescriptor LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"Ragnapop"},"content":"participant \"\u003c\u003cclass\u003e\u003e\\nParserUtil\" as ParserUtil LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"Ragnapop"},"content":"participant \"e:EditCommand\" as EditCommand LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"cheahTJ"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"cheahTJ"},"content":"end box","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"cheahTJ"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"cheahTJ"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"cheahTJ"},"content":"end box","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"cheahTJ"},"content":"[-\u003e LogicManager : execute(\"edit E01234567 n/John p/90000001\")","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"cheahTJ"},"content":"activate LogicManager","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"cheahTJ"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"edit E01234567 n/John p/90000001\")","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"cheahTJ"},"content":"activate AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"cheahTJ"},"content":"create EditCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"cheahTJ"},"content":"AddressBookParser -\u003e EditCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"cheahTJ"},"content":"activate EditCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"cheahTJ"},"content":"EditCommandParser --\u003e AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"cheahTJ"},"content":"deactivate EditCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"cheahTJ"},"content":"AddressBookParser -\u003e EditCommandParser : parse(\"n/John p/90000001\")","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"cheahTJ"},"content":"activate EditCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"cheahTJ"},"content":"create ArgumentTokenizer","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"cheahTJ"},"content":"EditCommandParser -\u003e ArgumentTokenizer : tokenize((args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_TAG, PREFIX_GROUP))","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"cheahTJ"},"content":"activate ArgumentTokenizer","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"cheahTJ"},"content":"ArgumentTokenizer -\u003e EditCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"cheahTJ"},"content":"deactivate ArgumentTokenizer","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"cheahTJ"},"content":"EditCommandParser -\u003e ParserUtil : parseNusId(\"E01234567\")","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"cheahTJ"},"content":"activate ParserUtil","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"Ragnapop"},"content":"ParserUtil --\u003e EditCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"Ragnapop"},"content":"deactivate ParserUtil","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"Ragnapop"},"content":"EditCommandParser -\u003e ParserUtil : parseName(\"John\")","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"Ragnapop"},"content":"activate ParserUtil","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"Ragnapop"},"content":"ParserUtil --\u003e EditCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"Ragnapop"},"content":"deactivate ParserUtil","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"Ragnapop"},"content":"EditCommandParser -\u003e ParserUtil : parsePhone(\"90000001\")","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"Ragnapop"},"content":"activate ParserUtil","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"Ragnapop"},"content":"ParserUtil --\u003e EditCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"cheahTJ"},"content":"deactivate ParserUtil","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"cheahTJ"},"content":"create EditPersonDescriptor","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"cheahTJ"},"content":"EditCommandParser -\u003e EditPersonDescriptor","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"cheahTJ"},"content":"activate EditPersonDescriptor","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"Ragnapop"},"content":"EditPersonDescriptor --\u003e EditCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"cheahTJ"},"content":"deactivate EditPersonDescriptor","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"Ragnapop"},"content":"EditCommandParser -\u003e EditPersonDescriptor : setName(name)","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"cheahTJ"},"content":"activate EditPersonDescriptor","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"Ragnapop"},"content":"EditPersonDescriptor --\u003e EditCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"Ragnapop"},"content":"deactivate EditPersonDescriptor","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"Ragnapop"},"content":"EditCommandParser -\u003e EditPersonDescriptor : setPhone(phone)","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"Ragnapop"},"content":"activate EditPersonDescriptor","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"Ragnapop"},"content":"EditPersonDescriptor --\u003e EditCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"Ragnapop"},"content":"deactivate EditPersonDescriptor","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"Ragnapop"},"content":"EditCommandParser -\u003e EditPersonDescriptor : setGroups(groups)","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"Ragnapop"},"content":"activate EditPersonDescriptor","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"Ragnapop"},"content":"EditPersonDescriptor --\u003e EditCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"cheahTJ"},"content":"deactivate EditPersonDescriptor","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"Ragnapop"},"content":"create EditCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"Ragnapop"},"content":"EditCommandParser -\u003e EditCommand : EditCommand(nusId, editPersonDescriptor)","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"cheahTJ"},"content":"activate EditCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":90,"author":{"gitId":"cheahTJ"},"content":"EditCommand --\u003e EditCommandParser :","lastModifiedDate":"2024-03-21"},{"lineNumber":91,"author":{"gitId":"cheahTJ"},"content":"deactivate EditCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":92,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":93,"author":{"gitId":"Ragnapop"},"content":"EditCommandParser --\u003e AddressBookParser : e","lastModifiedDate":"2024-03-21"},{"lineNumber":94,"author":{"gitId":"cheahTJ"},"content":"deactivate EditCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":95,"author":{"gitId":"cheahTJ"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2024-03-21"},{"lineNumber":96,"author":{"gitId":"cheahTJ"},"content":"EditCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":97,"author":{"gitId":"cheahTJ"},"content":"destroy EditCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":98,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":99,"author":{"gitId":"Ragnapop"},"content":"AddressBookParser --\u003e LogicManager : e","lastModifiedDate":"2024-03-21"},{"lineNumber":100,"author":{"gitId":"cheahTJ"},"content":"deactivate AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":101,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":102,"author":{"gitId":"cheahTJ"},"content":"LogicManager -\u003e EditCommand : execute(m)","lastModifiedDate":"2024-03-21"},{"lineNumber":103,"author":{"gitId":"cheahTJ"},"content":"activate EditCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":104,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":105,"author":{"gitId":"cheahTJ"},"content":"EditCommand -\u003e Model : setPerson(personToEdit, editedPerson);","lastModifiedDate":"2024-03-21"},{"lineNumber":106,"author":{"gitId":"cheahTJ"},"content":"activate Model","lastModifiedDate":"2024-03-21"},{"lineNumber":107,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":108,"author":{"gitId":"cheahTJ"},"content":"Model --\u003e EditCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":109,"author":{"gitId":"cheahTJ"},"content":"deactivate Model","lastModifiedDate":"2024-03-21"},{"lineNumber":110,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":111,"author":{"gitId":"cheahTJ"},"content":"create CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":112,"author":{"gitId":"cheahTJ"},"content":"EditCommand -\u003e CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":113,"author":{"gitId":"cheahTJ"},"content":"activate CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":114,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":115,"author":{"gitId":"cheahTJ"},"content":"CommandResult --\u003e EditCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":116,"author":{"gitId":"cheahTJ"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":117,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":118,"author":{"gitId":"cheahTJ"},"content":"EditCommand --\u003e LogicManager : r","lastModifiedDate":"2024-03-21"},{"lineNumber":119,"author":{"gitId":"Ragnapop"},"content":"destroy EditCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":120,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":121,"author":{"gitId":"cheahTJ"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-21"},{"lineNumber":122,"author":{"gitId":"cheahTJ"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-21"},{"lineNumber":123,"author":{"gitId":"cheahTJ"},"content":"@enduml","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"cheahTJ":91,"Ragnapop":32}},{"path":"docs/diagrams/FindSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"RingoftheKing"},"content":"@startuml","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"RingoftheKing"},"content":"!include style.puml","lastModifiedDate":"2024-03-22"},{"lineNumber":3,"author":{"gitId":"RingoftheKing"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"RingoftheKing"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-22"},{"lineNumber":6,"author":{"gitId":"RingoftheKing"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"RingoftheKing"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"RingoftheKing"},"content":"participant \":FindCommandParser\" as FindCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"RingoftheKing"},"content":"participant \":ArgumentTokenizer\" as Tokenizer LOGIC_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"RingoftheKing"},"content":"participant \":ArgumentMultimap\" as ArgMap LOGIC_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"RingoftheKing"},"content":"participant \"f:FindCommand\" as FindCommand LOGIC_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"RingoftheKing"},"content":"participant \"r:CommandResult\" as Result LOGIC_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"RingoftheKing"},"content":"end box","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"RingoftheKing"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"RingoftheKing"},"content":"participant \":ModelManager\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"RingoftheKing"},"content":"end box","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"RingoftheKing"},"content":"[-\u003e LogicManager : Find","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"RingoftheKing"},"content":"activate LogicManager","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"RingoftheKing"},"content":"LogicManager -\u003e AddressBookParser : parseCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"RingoftheKing"},"content":"activate AddressBookParser","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"RingoftheKing"},"content":"create FindCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"RingoftheKing"},"content":"AddressBookParser -\u003e FindCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"RingoftheKing"},"content":"activate FindCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"RingoftheKing"},"content":"FindCommandParser --\u003e AddressBookParser","lastModifiedDate":"2024-03-22"},{"lineNumber":30,"author":{"gitId":"RingoftheKing"},"content":"deactivate FindCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":32,"author":{"gitId":"RingoftheKing"},"content":"AddressBookParser -\u003e FindCommandParser : parse","lastModifiedDate":"2024-03-22"},{"lineNumber":33,"author":{"gitId":"RingoftheKing"},"content":"activate FindCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":35,"author":{"gitId":"RingoftheKing"},"content":"FindCommandParser -\u003e Tokenizer : tokenize","lastModifiedDate":"2024-03-22"},{"lineNumber":36,"author":{"gitId":"RingoftheKing"},"content":"activate Tokenizer","lastModifiedDate":"2024-03-22"},{"lineNumber":37,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":38,"author":{"gitId":"RingoftheKing"},"content":"Tokenizer -\u003e Tokenizer : extractArguments","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"RingoftheKing"},"content":"activate Tokenizer","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"RingoftheKing"},"content":"deactivate Tokenizer","lastModifiedDate":"2024-03-22"},{"lineNumber":41,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":42,"author":{"gitId":"RingoftheKing"},"content":"Tokenizer --\u003e FindCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":43,"author":{"gitId":"RingoftheKing"},"content":"deactivate Tokenizer","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"RingoftheKing"},"content":"FindCommandParser -\u003e ArgMap : verifyNoDuplicatePrefixes","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"RingoftheKing"},"content":"activate ArgMap","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"RingoftheKing"},"content":"deactivate","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":49,"author":{"gitId":"RingoftheKing"},"content":"FindCommandParser -\u003e ArgMap : verifyAtLeastOnePrefixExists","lastModifiedDate":"2024-03-22"},{"lineNumber":50,"author":{"gitId":"RingoftheKing"},"content":"activate ArgMap","lastModifiedDate":"2024-03-22"},{"lineNumber":51,"author":{"gitId":"RingoftheKing"},"content":"deactivate","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"RingoftheKing"},"content":"FindCommandParser -\u003e ArgMap : getValue(PREFIX_NAME)","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"RingoftheKing"},"content":"activate ArgMap","lastModifiedDate":"2024-03-22"},{"lineNumber":54,"author":{"gitId":"RingoftheKing"},"content":"deactivate","lastModifiedDate":"2024-03-22"},{"lineNumber":55,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":56,"author":{"gitId":"RingoftheKing"},"content":"FindCommandParser -\u003e ArgMap : getValue(PREFIX_EMAIL)","lastModifiedDate":"2024-03-22"},{"lineNumber":57,"author":{"gitId":"RingoftheKing"},"content":"activate ArgMap","lastModifiedDate":"2024-03-22"},{"lineNumber":58,"author":{"gitId":"RingoftheKing"},"content":"deactivate","lastModifiedDate":"2024-03-22"},{"lineNumber":59,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":60,"author":{"gitId":"RingoftheKing"},"content":"FindCommandParser -\u003e ArgMap : getValue(PREFIX_PHONE)","lastModifiedDate":"2024-03-22"},{"lineNumber":61,"author":{"gitId":"RingoftheKing"},"content":"activate ArgMap","lastModifiedDate":"2024-03-22"},{"lineNumber":62,"author":{"gitId":"RingoftheKing"},"content":"deactivate","lastModifiedDate":"2024-03-22"},{"lineNumber":63,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":64,"author":{"gitId":"RingoftheKing"},"content":"FindCommandParser -\u003e ArgMap : getValue(PREFIX_TAG)","lastModifiedDate":"2024-03-22"},{"lineNumber":65,"author":{"gitId":"RingoftheKing"},"content":"activate ArgMap","lastModifiedDate":"2024-03-22"},{"lineNumber":66,"author":{"gitId":"RingoftheKing"},"content":"deactivate","lastModifiedDate":"2024-03-22"},{"lineNumber":67,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":68,"author":{"gitId":"RingoftheKing"},"content":"FindCommandParser -\u003e ArgMap : getAllValues(PREFIX_GROUP)","lastModifiedDate":"2024-03-22"},{"lineNumber":69,"author":{"gitId":"RingoftheKing"},"content":"activate ArgMap","lastModifiedDate":"2024-03-22"},{"lineNumber":70,"author":{"gitId":"RingoftheKing"},"content":"deactivate","lastModifiedDate":"2024-03-22"},{"lineNumber":71,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":72,"author":{"gitId":"RingoftheKing"},"content":"create FindCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":73,"author":{"gitId":"RingoftheKing"},"content":"FindCommandParser -\u003e FindCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":74,"author":{"gitId":"RingoftheKing"},"content":"activate FindCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":75,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":76,"author":{"gitId":"RingoftheKing"},"content":"FindCommand --\u003e FindCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":77,"author":{"gitId":"RingoftheKing"},"content":"deactivate FindCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":78,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":79,"author":{"gitId":"RingoftheKing"},"content":"FindCommandParser --\u003e AddressBookParser : f","lastModifiedDate":"2024-03-22"},{"lineNumber":80,"author":{"gitId":"RingoftheKing"},"content":"deactivate","lastModifiedDate":"2024-03-22"},{"lineNumber":81,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":82,"author":{"gitId":"RingoftheKing"},"content":"FindCommandParser -[hidden]\u003e AddressBookParser","lastModifiedDate":"2024-03-22"},{"lineNumber":83,"author":{"gitId":"RingoftheKing"},"content":"destroy FindCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":84,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":85,"author":{"gitId":"RingoftheKing"},"content":"AddressBookParser --\u003e LogicManager : f","lastModifiedDate":"2024-03-22"},{"lineNumber":86,"author":{"gitId":"RingoftheKing"},"content":"deactivate AddressBookParser","lastModifiedDate":"2024-03-22"},{"lineNumber":87,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":88,"author":{"gitId":"RingoftheKing"},"content":"LogicManager -\u003e FindCommand : execute","lastModifiedDate":"2024-03-22"},{"lineNumber":89,"author":{"gitId":"RingoftheKing"},"content":"activate FindCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":90,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":91,"author":{"gitId":"RingoftheKing"},"content":"FindCommand -\u003e Model : updateFilteredPersonList","lastModifiedDate":"2024-03-22"},{"lineNumber":92,"author":{"gitId":"RingoftheKing"},"content":"activate Model","lastModifiedDate":"2024-03-22"},{"lineNumber":93,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":94,"author":{"gitId":"RingoftheKing"},"content":"Model --\u003e FindCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":95,"author":{"gitId":"RingoftheKing"},"content":"deactivate","lastModifiedDate":"2024-03-22"},{"lineNumber":96,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":97,"author":{"gitId":"RingoftheKing"},"content":"create Result","lastModifiedDate":"2024-03-22"},{"lineNumber":98,"author":{"gitId":"RingoftheKing"},"content":"FindCommand -\u003e Result","lastModifiedDate":"2024-03-22"},{"lineNumber":99,"author":{"gitId":"RingoftheKing"},"content":"activate Result","lastModifiedDate":"2024-03-22"},{"lineNumber":100,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":101,"author":{"gitId":"RingoftheKing"},"content":"Result --\u003e FindCommand : r","lastModifiedDate":"2024-03-22"},{"lineNumber":102,"author":{"gitId":"RingoftheKing"},"content":"deactivate","lastModifiedDate":"2024-03-22"},{"lineNumber":103,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":104,"author":{"gitId":"RingoftheKing"},"content":"FindCommand --\u003e LogicManager : r","lastModifiedDate":"2024-03-22"},{"lineNumber":105,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":106,"author":{"gitId":"RingoftheKing"},"content":"@enduml","lastModifiedDate":"2024-03-22"}],"authorContributionMap":{"RingoftheKing":106}},{"path":"docs/diagrams/GroupSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Ragnapop"},"content":"@startuml","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"Ragnapop"},"content":"!include style.puml","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"Ragnapop"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"Ragnapop"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"Ragnapop"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"Ragnapop"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"Ragnapop"},"content":"participant \":GroupCommandParser\" as GroupCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"Ragnapop"},"content":"participant \"argMultimap:ArgumentTokenizer\" as ArgumentTokenizer LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"Ragnapop"},"content":"participant \"groupPersonDescriptor:GroupPersonDescriptor\" as GroupPersonDescriptor LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"Ragnapop"},"content":"participant \"\u003c\u003cclass\u003e\u003e\\nParserUtil\" as ParserUtil LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"Ragnapop"},"content":"participant \"g:GroupCommand\" as GroupCommand LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"Ragnapop"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"Ragnapop"},"content":"end box","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"Ragnapop"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"Ragnapop"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"Ragnapop"},"content":"end box","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"Ragnapop"},"content":"[-\u003e LogicManager : execute(\"group id/E01234567 g/T15 t/TA\")","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"Ragnapop"},"content":"activate LogicManager","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"Ragnapop"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"group id/E01234567 g/T15 t/TA\")","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"Ragnapop"},"content":"activate AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"Ragnapop"},"content":"create GroupCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"Ragnapop"},"content":"AddressBookParser -\u003e GroupCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"Ragnapop"},"content":"activate GroupCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"Ragnapop"},"content":"GroupCommandParser --\u003e AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"Ragnapop"},"content":"deactivate GroupCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"Ragnapop"},"content":"AddressBookParser -\u003e GroupCommandParser : parse(\"id/E01234567 g/T15 t/TA\")","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"Ragnapop"},"content":"activate GroupCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"Ragnapop"},"content":"create ArgumentTokenizer","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"Ragnapop"},"content":"GroupCommandParser -\u003e ArgumentTokenizer : tokenize((args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_TAG, PREFIX_GROUP))","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"Ragnapop"},"content":"activate ArgumentTokenizer","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"Ragnapop"},"content":"ArgumentTokenizer --\u003e GroupCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"Ragnapop"},"content":"deactivate ArgumentTokenizer","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"Ragnapop"},"content":"GroupCommandParser -\u003e ParserUtil : parseNusId(\"E01234567\")","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"Ragnapop"},"content":"activate ParserUtil","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"Ragnapop"},"content":"ParserUtil --\u003e GroupCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"Ragnapop"},"content":"deactivate ParserUtil","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"Ragnapop"},"content":"GroupCommandParser -\u003e ParserUtil : parseTag(\"TA\")","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"Ragnapop"},"content":"activate ParserUtil","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"Ragnapop"},"content":"ParserUtil --\u003e GroupCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"Ragnapop"},"content":"deactivate ParserUtil","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"Ragnapop"},"content":"GroupCommandParser -\u003e ParserUtil : parseGroups(\"T15\")","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"Ragnapop"},"content":"activate ParserUtil","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"Ragnapop"},"content":"ParserUtil --\u003e GroupCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"Ragnapop"},"content":"deactivate ParserUtil","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"Ragnapop"},"content":"create GroupPersonDescriptor","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"Ragnapop"},"content":"GroupCommandParser -\u003e GroupPersonDescriptor","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"Ragnapop"},"content":"activate GroupPersonDescriptor","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"Ragnapop"},"content":"GroupPersonDescriptor --\u003e GroupCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"Ragnapop"},"content":"deactivate GroupPersonDescriptor","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"Ragnapop"},"content":"GroupCommandParser -\u003e GroupPersonDescriptor : setGroups(groups)","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"Ragnapop"},"content":"activate GroupPersonDescriptor","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"Ragnapop"},"content":"GroupPersonDescriptor --\u003e GroupCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"Ragnapop"},"content":"deactivate GroupPersonDescriptor","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"Ragnapop"},"content":"GroupCommandParser -\u003e GroupPersonDescriptor : setTag(tag)","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"Ragnapop"},"content":"activate GroupPersonDescriptor","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"Ragnapop"},"content":"GroupPersonDescriptor --\u003e GroupCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"Ragnapop"},"content":"deactivate GroupPersonDescriptor","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"Ragnapop"},"content":"create GroupCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"Ragnapop"},"content":"GroupCommandParser -\u003e GroupCommand : GroupCommand(nusId, GroupPersonDescriptor)","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"Ragnapop"},"content":"activate GroupCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"Ragnapop"},"content":"GroupCommand --\u003e GroupCommandParser :","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"Ragnapop"},"content":"deactivate GroupCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"Ragnapop"},"content":"GroupCommandParser --\u003e AddressBookParser : g","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"Ragnapop"},"content":"deactivate GroupCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"Ragnapop"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2024-03-21"},{"lineNumber":90,"author":{"gitId":"Ragnapop"},"content":"GroupCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":91,"author":{"gitId":"Ragnapop"},"content":"destroy GroupCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":92,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":93,"author":{"gitId":"Ragnapop"},"content":"AddressBookParser --\u003e LogicManager : g","lastModifiedDate":"2024-03-21"},{"lineNumber":94,"author":{"gitId":"Ragnapop"},"content":"deactivate AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":95,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":96,"author":{"gitId":"Ragnapop"},"content":"LogicManager -\u003e GroupCommand : execute(m)","lastModifiedDate":"2024-03-21"},{"lineNumber":97,"author":{"gitId":"Ragnapop"},"content":"activate GroupCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":98,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":99,"author":{"gitId":"Ragnapop"},"content":"GroupCommand -\u003e Model : setPerson(personToGroup, groupedPerson);","lastModifiedDate":"2024-03-21"},{"lineNumber":100,"author":{"gitId":"Ragnapop"},"content":"activate Model","lastModifiedDate":"2024-03-21"},{"lineNumber":101,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":102,"author":{"gitId":"Ragnapop"},"content":"Model --\u003e GroupCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":103,"author":{"gitId":"Ragnapop"},"content":"deactivate Model","lastModifiedDate":"2024-03-21"},{"lineNumber":104,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":105,"author":{"gitId":"Ragnapop"},"content":"create CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":106,"author":{"gitId":"Ragnapop"},"content":"GroupCommand -\u003e CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":107,"author":{"gitId":"Ragnapop"},"content":"activate CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":108,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":109,"author":{"gitId":"Ragnapop"},"content":"CommandResult --\u003e GroupCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":110,"author":{"gitId":"Ragnapop"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":111,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":112,"author":{"gitId":"Ragnapop"},"content":"GroupCommand --\u003e LogicManager : r","lastModifiedDate":"2024-03-21"},{"lineNumber":113,"author":{"gitId":"Ragnapop"},"content":"destroy GroupCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":114,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":115,"author":{"gitId":"Ragnapop"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-21"},{"lineNumber":116,"author":{"gitId":"Ragnapop"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-21"},{"lineNumber":117,"author":{"gitId":"Ragnapop"},"content":"@enduml","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"Ragnapop":117}},{"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":"-"},"content":"Class UniquePersonList","lastModifiedDate":"2021-07-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Class Person","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"hjuntan"},"content":"Class Tag","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"hjuntan"},"content":"Class \"\u003c\u003cenumeration\u003e\u003e\\nTagType\" as TagType","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Class Email","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Class Name","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"Class Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"hjuntan"},"content":"Class Group","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":24,"author":{"gitId":"-"},"content":"Class I #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"AddressBook .up.|\u003e ReadOnlyAddressBook","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"ModelManager .up.|\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"Model .right.\u003e ReadOnlyUserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"Model .left.\u003e ReadOnlyAddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":"ModelManager -left-\u003e \"1\" AddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"ModelManager -right-\u003e \"1\" UserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"UserPrefs .up.|\u003e ReadOnlyUserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"AddressBook *--\u003e \"1\" UniquePersonList","lastModifiedDate":"2019-07-30"},{"lineNumber":40,"author":{"gitId":"-"},"content":"UniquePersonList --\u003e \"~* all\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":41,"author":{"gitId":"-"},"content":"Person *--\u003e Name","lastModifiedDate":"2019-07-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"Person *--\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"Person *--\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":44,"author":{"gitId":"hjuntan"},"content":"Person *--\u003e Tag","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"hjuntan"},"content":"Person *--\u003e \"*\" Group","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":47,"author":{"gitId":"-"},"content":"Person -[hidden]up--\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":"UniquePersonList -[hidden]right-\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"Name -[hidden]right-\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":51,"author":{"gitId":"hjuntan"},"content":"Phone -[hidden]right-\u003e Tag","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"hjuntan"},"content":"Tag -[hidden]right-\u003e Email","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":54,"author":{"gitId":"-"},"content":"ModelManager --\u003e \"~* filtered\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":55,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"hjuntan":7,"-":48}},{"path":"docs/diagrams/ScheduleSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Rikko1204"},"content":"@startuml","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"Rikko1204"},"content":"!include style.puml","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"Rikko1204"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"Rikko1204"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"Rikko1204"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"Rikko1204"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"Rikko1204"},"content":"participant \":ScheduleCommandParser\" as ScheduleCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"Rikko1204"},"content":"participant \":ParserUtil\" as ParserUtil LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"Rikko1204"},"content":"participant \"s:ScheduleCommand\" as ScheduleCommand LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"Rikko1204"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"Rikko1204"},"content":"end box","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"Rikko1204"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"Rikko1204"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"Rikko1204"},"content":"end box","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"Rikko1204"},"content":"[-\u003e LogicManager : execute(\"schedule id/E1234567 s/15-10-2024\")","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"Rikko1204"},"content":"activate LogicManager","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"Rikko1204"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"schedule id/E1234567 s/15-10-2024\")","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"Rikko1204"},"content":"activate AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"Rikko1204"},"content":"create ScheduleCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"Rikko1204"},"content":"AddressBookParser -\u003e ScheduleCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"Rikko1204"},"content":"activate ScheduleCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"Rikko1204"},"content":"ScheduleCommandParser --\u003e AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"Rikko1204"},"content":"deactivate ScheduleCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"Rikko1204"},"content":"AddressBookParser -\u003e ScheduleCommandParser : parse(\"id/E1234567 s/15-10-2024\")","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"Rikko1204"},"content":"activate ScheduleCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"Rikko1204"},"content":"create ParserUtil","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"Rikko1204"},"content":"ScheduleCommandParser -\u003e ParserUtil","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"Rikko1204"},"content":"activate ParserUtil","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"Rikko1204"},"content":"ParserUtil ---\u003e ScheduleCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"Rikko1204"},"content":"deactivate ParserUtil","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"Rikko1204"},"content":"ScheduleCommandParser -\u003e ParserUtil : parseNusId(\"E01234567\")","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"Rikko1204"},"content":"activate ParserUtil","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"Rikko1204"},"content":"ParserUtil ---\u003e ScheduleCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"Rikko1204"},"content":"deactivate ParserUtil","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"Rikko1204"},"content":"ScheduleCommandParser -\u003e ParserUtil : parseSchedule(\"15-10-2024\")","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"Rikko1204"},"content":"activate ParserUtil","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"Rikko1204"},"content":"ParserUtil ---\u003e ScheduleCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"Rikko1204"},"content":"deactivate ParserUtil","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"Rikko1204"},"content":"create ScheduleCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"Rikko1204"},"content":"ScheduleCommandParser -\u003e ScheduleCommand : ScheduleCommand(nusId, schedule, remark)","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"Rikko1204"},"content":"activate ScheduleCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"Rikko1204"},"content":"ScheduleCommand --\u003e ScheduleCommandParser :","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"Rikko1204"},"content":"deactivate ScheduleCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"Rikko1204"},"content":"ScheduleCommandParser --\u003e AddressBookParser : s","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"Rikko1204"},"content":"deactivate ScheduleCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"Rikko1204"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"Rikko1204"},"content":"ScheduleCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"Rikko1204"},"content":"destroy ScheduleCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"Rikko1204"},"content":"AddressBookParser --\u003e LogicManager : s","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"Rikko1204"},"content":"deactivate AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"Rikko1204"},"content":"LogicManager -\u003e ScheduleCommand : execute(m)","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"Rikko1204"},"content":"activate ScheduleCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"Rikko1204"},"content":"ScheduleCommand -\u003e Model : setPerson(personToEdit, editedPerson)","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"Rikko1204"},"content":"activate Model","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"Rikko1204"},"content":"Model --\u003e ScheduleCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"Rikko1204"},"content":"deactivate Model","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"Rikko1204"},"content":"create CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"Rikko1204"},"content":"ScheduleCommand -\u003e CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"Rikko1204"},"content":"activate CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"Rikko1204"},"content":"CommandResult --\u003e ScheduleCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"Rikko1204"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"Rikko1204"},"content":"ScheduleCommand --\u003e LogicManager : r","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"Rikko1204"},"content":"deactivate ScheduleCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"Rikko1204"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"Rikko1204"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"Rikko1204"},"content":"@enduml","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"Rikko1204":88}},{"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":"-"},"content":"Class JsonAdaptedPerson","lastModifiedDate":"2021-07-31"},{"lineNumber":22,"author":{"gitId":"hjuntan"},"content":"Class JsonAdaptedGroup","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":"JsonSerializableAddressBook --\u003e \"*\" JsonAdaptedPerson","lastModifiedDate":"2021-07-31"},{"lineNumber":41,"author":{"gitId":"hjuntan"},"content":"JsonAdaptedPerson --\u003e \"*\" JsonAdaptedGroup","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-03-31"},{"lineNumber":43,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"hjuntan":2,"-":41}},{"path":"docs/team/cheahtj.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"cheahTJ"},"content":"---","lastModifiedDate":"2024-03-05"},{"lineNumber":2,"author":{"gitId":"cheahTJ"},"content":" layout: default.md","lastModifiedDate":"2024-03-05"},{"lineNumber":3,"author":{"gitId":"cheahTJ"},"content":" title: \"Cheah Tze Juen\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-03-05"},{"lineNumber":4,"author":{"gitId":"cheahTJ"},"content":"---","lastModifiedDate":"2024-03-05"},{"lineNumber":5,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":6,"author":{"gitId":"cheahTJ"},"content":"### Project: AronaPro","lastModifiedDate":"2024-03-05"},{"lineNumber":7,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":8,"author":{"gitId":"cheahTJ"},"content":"AronaPro is a desktop application designed for tech-savvy university Computer Science teaching assistants,","lastModifiedDate":"2024-03-05"},{"lineNumber":9,"author":{"gitId":"cheahTJ"},"content":"enabling them to enjoy an organised and vibrant approach to query, and manage an array of students and professors’","lastModifiedDate":"2024-03-05"},{"lineNumber":10,"author":{"gitId":"cheahTJ"},"content":"contacts via the Command Line Interface (CLI).","lastModifiedDate":"2024-03-05"},{"lineNumber":11,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":12,"author":{"gitId":"cheahTJ"},"content":"My contributions to the project are listed below","lastModifiedDate":"2024-03-05"},{"lineNumber":13,"author":{"gitId":"cheahTJ"},"content":"* **Modify delete feature**: Edited to allow the deletion of an existing contact by NusId. (Pull request #63) ","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"cheahTJ"},"content":" * What it does: Allows the user to delete an existing contact via the NusId instead of the index of contact.","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"cheahTJ"},"content":" * Justification: This allows user to delete their student quickly with their NusId rather than having to find the index.","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"cheahTJ"},"content":"* **Modify edit feature**: Edited to allow the edit of an existing contact in terms of name, phone, email, group and tag. (Pull request #73)","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"cheahTJ"},"content":" * What it does: Allows the user to edit the name, phone, email, group and tag of an existing contact.","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"cheahTJ"},"content":" * Justification: This gives users more flexibility to change their contact information.","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":21,"author":{"gitId":"cheahTJ"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-03-05"},{"lineNumber":22,"author":{"gitId":"cheahTJ"},"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":"2024-03-05"},{"lineNumber":23,"author":{"gitId":"cheahTJ"},"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":"2024-03-05"},{"lineNumber":24,"author":{"gitId":"cheahTJ"},"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":"2024-03-05"},{"lineNumber":25,"author":{"gitId":"cheahTJ"},"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":"2024-03-05"},{"lineNumber":26,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":27,"author":{"gitId":"cheahTJ"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-03-05"},{"lineNumber":28,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":29,"author":{"gitId":"cheahTJ"},"content":"* **Project management**:","lastModifiedDate":"2024-03-05"},{"lineNumber":30,"author":{"gitId":"cheahTJ"},"content":" * Managed milestone `v1.1` deliverables on GitHub","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"cheahTJ"},"content":" * Managed milestone `v1.2` deliverables on GitHub","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"cheahTJ"},"content":" * Contributed issues ","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"cheahTJ"},"content":" * Reviewed and merged PRs","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":35,"author":{"gitId":"cheahTJ"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-03-05"},{"lineNumber":36,"author":{"gitId":"cheahTJ"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-03-05"},{"lineNumber":37,"author":{"gitId":"cheahTJ"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-03-05"},{"lineNumber":38,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":39,"author":{"gitId":"cheahTJ"},"content":"* **Documentation**:","lastModifiedDate":"2024-03-05"},{"lineNumber":40,"author":{"gitId":"cheahTJ"},"content":" * User Guide:","lastModifiedDate":"2024-03-05"},{"lineNumber":41,"author":{"gitId":"cheahTJ"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-03-05"},{"lineNumber":42,"author":{"gitId":"cheahTJ"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-03-05"},{"lineNumber":43,"author":{"gitId":"cheahTJ"},"content":" * Developer Guide:","lastModifiedDate":"2024-03-05"},{"lineNumber":44,"author":{"gitId":"cheahTJ"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-03-05"},{"lineNumber":45,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":46,"author":{"gitId":"cheahTJ"},"content":"* **Community**:","lastModifiedDate":"2024-03-05"},{"lineNumber":47,"author":{"gitId":"cheahTJ"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-03-05"},{"lineNumber":48,"author":{"gitId":"cheahTJ"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-03-05"},{"lineNumber":49,"author":{"gitId":"cheahTJ"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-03-05"},{"lineNumber":50,"author":{"gitId":"cheahTJ"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-03-05"},{"lineNumber":51,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":52,"author":{"gitId":"cheahTJ"},"content":"* **Tools**:","lastModifiedDate":"2024-03-05"},{"lineNumber":53,"author":{"gitId":"cheahTJ"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-03-05"},{"lineNumber":54,"author":{"gitId":"cheahTJ"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-03-05"},{"lineNumber":55,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":56,"author":{"gitId":"cheahTJ"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-03-05"}],"authorContributionMap":{"cheahTJ":56}},{"path":"docs/team/hjuntan.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"cheahTJ"},"content":"---","lastModifiedDate":"2024-03-05"},{"lineNumber":2,"author":{"gitId":"cheahTJ"},"content":" layout: default.md","lastModifiedDate":"2024-03-05"},{"lineNumber":3,"author":{"gitId":"cheahTJ"},"content":" title: \"Tan Hong Jun\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-03-05"},{"lineNumber":4,"author":{"gitId":"cheahTJ"},"content":"---","lastModifiedDate":"2024-03-05"},{"lineNumber":5,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":6,"author":{"gitId":"cheahTJ"},"content":"### Project: AronaPro","lastModifiedDate":"2024-03-05"},{"lineNumber":7,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":8,"author":{"gitId":"cheahTJ"},"content":"AronaPro is a desktop application designed for tech-savvy university Computer Science teaching assistants,","lastModifiedDate":"2024-03-05"},{"lineNumber":9,"author":{"gitId":"cheahTJ"},"content":"enabling them to enjoy an organised and vibrant approach to query, and manage an array of students and professors’","lastModifiedDate":"2024-03-05"},{"lineNumber":10,"author":{"gitId":"cheahTJ"},"content":"contacts via the Command Line Interface (CLI).","lastModifiedDate":"2024-03-05"},{"lineNumber":11,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":12,"author":{"gitId":"cheahTJ"},"content":"My contributions to the project are listed below","lastModifiedDate":"2024-03-05"},{"lineNumber":13,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":14,"author":{"gitId":"cheahTJ"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-03-05"},{"lineNumber":15,"author":{"gitId":"cheahTJ"},"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":"2024-03-05"},{"lineNumber":16,"author":{"gitId":"cheahTJ"},"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":"2024-03-05"},{"lineNumber":17,"author":{"gitId":"cheahTJ"},"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":"2024-03-05"},{"lineNumber":18,"author":{"gitId":"cheahTJ"},"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":"2024-03-05"},{"lineNumber":19,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":20,"author":{"gitId":"cheahTJ"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-03-05"},{"lineNumber":21,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":22,"author":{"gitId":"cheahTJ"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-03-05"},{"lineNumber":23,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":24,"author":{"gitId":"cheahTJ"},"content":"* **Project management**:","lastModifiedDate":"2024-03-05"},{"lineNumber":25,"author":{"gitId":"cheahTJ"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-03-05"},{"lineNumber":26,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":27,"author":{"gitId":"cheahTJ"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-03-05"},{"lineNumber":28,"author":{"gitId":"cheahTJ"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-03-05"},{"lineNumber":29,"author":{"gitId":"cheahTJ"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-03-05"},{"lineNumber":30,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":31,"author":{"gitId":"cheahTJ"},"content":"* **Documentation**:","lastModifiedDate":"2024-03-05"},{"lineNumber":32,"author":{"gitId":"cheahTJ"},"content":" * User Guide:","lastModifiedDate":"2024-03-05"},{"lineNumber":33,"author":{"gitId":"cheahTJ"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-03-05"},{"lineNumber":34,"author":{"gitId":"cheahTJ"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-03-05"},{"lineNumber":35,"author":{"gitId":"cheahTJ"},"content":" * Developer Guide:","lastModifiedDate":"2024-03-05"},{"lineNumber":36,"author":{"gitId":"cheahTJ"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-03-05"},{"lineNumber":37,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":38,"author":{"gitId":"cheahTJ"},"content":"* **Community**:","lastModifiedDate":"2024-03-05"},{"lineNumber":39,"author":{"gitId":"cheahTJ"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-03-05"},{"lineNumber":40,"author":{"gitId":"cheahTJ"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-03-05"},{"lineNumber":41,"author":{"gitId":"cheahTJ"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-03-05"},{"lineNumber":42,"author":{"gitId":"cheahTJ"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-03-05"},{"lineNumber":43,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":44,"author":{"gitId":"cheahTJ"},"content":"* **Tools**:","lastModifiedDate":"2024-03-05"},{"lineNumber":45,"author":{"gitId":"cheahTJ"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-03-05"},{"lineNumber":46,"author":{"gitId":"cheahTJ"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-03-05"},{"lineNumber":47,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":48,"author":{"gitId":"cheahTJ"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-03-05"}],"authorContributionMap":{"cheahTJ":48}},{"path":"docs/team/ragnapop.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"cheahTJ"},"content":"---","lastModifiedDate":"2024-03-05"},{"lineNumber":2,"author":{"gitId":"cheahTJ"},"content":" layout: default.md","lastModifiedDate":"2024-03-05"},{"lineNumber":3,"author":{"gitId":"cheahTJ"},"content":" title: \"Loh Jin Hun\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-03-05"},{"lineNumber":4,"author":{"gitId":"cheahTJ"},"content":"---","lastModifiedDate":"2024-03-05"},{"lineNumber":5,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":6,"author":{"gitId":"cheahTJ"},"content":"### Project: AronaPro","lastModifiedDate":"2024-03-05"},{"lineNumber":7,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":8,"author":{"gitId":"cheahTJ"},"content":"AronaPro is a desktop application designed for tech-savvy university Computer Science teaching assistants,","lastModifiedDate":"2024-03-05"},{"lineNumber":9,"author":{"gitId":"cheahTJ"},"content":"enabling them to enjoy an organised and vibrant approach to query, and manage an array of students and professors’","lastModifiedDate":"2024-03-05"},{"lineNumber":10,"author":{"gitId":"cheahTJ"},"content":"contacts via the Command Line Interface (CLI).","lastModifiedDate":"2024-03-05"},{"lineNumber":11,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":12,"author":{"gitId":"cheahTJ"},"content":"My contributions to the project are listed below","lastModifiedDate":"2024-03-05"},{"lineNumber":13,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":14,"author":{"gitId":"cheahTJ"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-03-05"},{"lineNumber":15,"author":{"gitId":"cheahTJ"},"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":"2024-03-05"},{"lineNumber":16,"author":{"gitId":"cheahTJ"},"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":"2024-03-05"},{"lineNumber":17,"author":{"gitId":"cheahTJ"},"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":"2024-03-05"},{"lineNumber":18,"author":{"gitId":"cheahTJ"},"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":"2024-03-05"},{"lineNumber":19,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":20,"author":{"gitId":"cheahTJ"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-03-05"},{"lineNumber":21,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":22,"author":{"gitId":"cheahTJ"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-03-05"},{"lineNumber":23,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":24,"author":{"gitId":"cheahTJ"},"content":"* **Project management**:","lastModifiedDate":"2024-03-05"},{"lineNumber":25,"author":{"gitId":"cheahTJ"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-03-05"},{"lineNumber":26,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":27,"author":{"gitId":"cheahTJ"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-03-05"},{"lineNumber":28,"author":{"gitId":"cheahTJ"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-03-05"},{"lineNumber":29,"author":{"gitId":"cheahTJ"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-03-05"},{"lineNumber":30,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":31,"author":{"gitId":"cheahTJ"},"content":"* **Documentation**:","lastModifiedDate":"2024-03-05"},{"lineNumber":32,"author":{"gitId":"cheahTJ"},"content":" * User Guide:","lastModifiedDate":"2024-03-05"},{"lineNumber":33,"author":{"gitId":"cheahTJ"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-03-05"},{"lineNumber":34,"author":{"gitId":"cheahTJ"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-03-05"},{"lineNumber":35,"author":{"gitId":"cheahTJ"},"content":" * Developer Guide:","lastModifiedDate":"2024-03-05"},{"lineNumber":36,"author":{"gitId":"cheahTJ"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-03-05"},{"lineNumber":37,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":38,"author":{"gitId":"cheahTJ"},"content":"* **Community**:","lastModifiedDate":"2024-03-05"},{"lineNumber":39,"author":{"gitId":"cheahTJ"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-03-05"},{"lineNumber":40,"author":{"gitId":"cheahTJ"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-03-05"},{"lineNumber":41,"author":{"gitId":"cheahTJ"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-03-05"},{"lineNumber":42,"author":{"gitId":"cheahTJ"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-03-05"},{"lineNumber":43,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":44,"author":{"gitId":"cheahTJ"},"content":"* **Tools**:","lastModifiedDate":"2024-03-05"},{"lineNumber":45,"author":{"gitId":"cheahTJ"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-03-05"},{"lineNumber":46,"author":{"gitId":"cheahTJ"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-03-05"},{"lineNumber":47,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":48,"author":{"gitId":"cheahTJ"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-03-05"}],"authorContributionMap":{"cheahTJ":48}},{"path":"docs/team/rikko1204.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"cheahTJ"},"content":"---","lastModifiedDate":"2024-03-05"},{"lineNumber":2,"author":{"gitId":"cheahTJ"},"content":" layout: default.md","lastModifiedDate":"2024-03-05"},{"lineNumber":3,"author":{"gitId":"cheahTJ"},"content":" title: \"Chen Kuan Min\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-03-05"},{"lineNumber":4,"author":{"gitId":"cheahTJ"},"content":"---","lastModifiedDate":"2024-03-05"},{"lineNumber":5,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":6,"author":{"gitId":"cheahTJ"},"content":"### Project: AronaPro","lastModifiedDate":"2024-03-05"},{"lineNumber":7,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":8,"author":{"gitId":"cheahTJ"},"content":"AronaPro is a desktop application designed for tech-savvy university Computer Science teaching assistants,","lastModifiedDate":"2024-03-05"},{"lineNumber":9,"author":{"gitId":"cheahTJ"},"content":"enabling them to enjoy an organised and vibrant approach to query, and manage an array of students and professors’","lastModifiedDate":"2024-03-05"},{"lineNumber":10,"author":{"gitId":"cheahTJ"},"content":"contacts via the Command Line Interface (CLI).","lastModifiedDate":"2024-03-05"},{"lineNumber":11,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":12,"author":{"gitId":"cheahTJ"},"content":"My contributions to the project are listed below","lastModifiedDate":"2024-03-05"},{"lineNumber":13,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":14,"author":{"gitId":"cheahTJ"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-03-05"},{"lineNumber":15,"author":{"gitId":"cheahTJ"},"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":"2024-03-05"},{"lineNumber":16,"author":{"gitId":"cheahTJ"},"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":"2024-03-05"},{"lineNumber":17,"author":{"gitId":"cheahTJ"},"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":"2024-03-05"},{"lineNumber":18,"author":{"gitId":"cheahTJ"},"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":"2024-03-05"},{"lineNumber":19,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":20,"author":{"gitId":"cheahTJ"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-03-05"},{"lineNumber":21,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":22,"author":{"gitId":"cheahTJ"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-03-05"},{"lineNumber":23,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":24,"author":{"gitId":"cheahTJ"},"content":"* **Project management**:","lastModifiedDate":"2024-03-05"},{"lineNumber":25,"author":{"gitId":"cheahTJ"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-03-05"},{"lineNumber":26,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":27,"author":{"gitId":"cheahTJ"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-03-05"},{"lineNumber":28,"author":{"gitId":"cheahTJ"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-03-05"},{"lineNumber":29,"author":{"gitId":"cheahTJ"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-03-05"},{"lineNumber":30,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":31,"author":{"gitId":"cheahTJ"},"content":"* **Documentation**:","lastModifiedDate":"2024-03-05"},{"lineNumber":32,"author":{"gitId":"cheahTJ"},"content":" * User Guide:","lastModifiedDate":"2024-03-05"},{"lineNumber":33,"author":{"gitId":"cheahTJ"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-03-05"},{"lineNumber":34,"author":{"gitId":"cheahTJ"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-03-05"},{"lineNumber":35,"author":{"gitId":"cheahTJ"},"content":" * Developer Guide:","lastModifiedDate":"2024-03-05"},{"lineNumber":36,"author":{"gitId":"cheahTJ"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-03-05"},{"lineNumber":37,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":38,"author":{"gitId":"cheahTJ"},"content":"* **Community**:","lastModifiedDate":"2024-03-05"},{"lineNumber":39,"author":{"gitId":"cheahTJ"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-03-05"},{"lineNumber":40,"author":{"gitId":"cheahTJ"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-03-05"},{"lineNumber":41,"author":{"gitId":"cheahTJ"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-03-05"},{"lineNumber":42,"author":{"gitId":"cheahTJ"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-03-05"},{"lineNumber":43,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":44,"author":{"gitId":"cheahTJ"},"content":"* **Tools**:","lastModifiedDate":"2024-03-05"},{"lineNumber":45,"author":{"gitId":"cheahTJ"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-03-05"},{"lineNumber":46,"author":{"gitId":"cheahTJ"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-03-05"},{"lineNumber":47,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":48,"author":{"gitId":"cheahTJ"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-03-05"}],"authorContributionMap":{"cheahTJ":48}},{"path":"docs/team/ringoftheking.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"cheahTJ"},"content":"---","lastModifiedDate":"2024-03-05"},{"lineNumber":2,"author":{"gitId":"cheahTJ"},"content":" layout: default.md","lastModifiedDate":"2024-03-05"},{"lineNumber":3,"author":{"gitId":"cheahTJ"},"content":" title: \"Guo YuHao Project Portfolio Page\"","lastModifiedDate":"2024-03-05"},{"lineNumber":4,"author":{"gitId":"cheahTJ"},"content":"---","lastModifiedDate":"2024-03-05"},{"lineNumber":5,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":6,"author":{"gitId":"cheahTJ"},"content":"### Project: AronaPro","lastModifiedDate":"2024-03-05"},{"lineNumber":7,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":8,"author":{"gitId":"cheahTJ"},"content":"AronaPro is a desktop application designed for tech-savvy university Computer Science teaching assistants,","lastModifiedDate":"2024-03-05"},{"lineNumber":9,"author":{"gitId":"cheahTJ"},"content":"enabling them to enjoy an organised and vibrant approach to query, and manage an array of students and professors’","lastModifiedDate":"2024-03-05"},{"lineNumber":10,"author":{"gitId":"cheahTJ"},"content":"contacts via the Command Line Interface (CLI).","lastModifiedDate":"2024-03-05"},{"lineNumber":11,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":12,"author":{"gitId":"cheahTJ"},"content":"My contributions to the project are listed below","lastModifiedDate":"2024-03-05"},{"lineNumber":13,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":14,"author":{"gitId":"cheahTJ"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-03-05"},{"lineNumber":15,"author":{"gitId":"cheahTJ"},"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":"2024-03-05"},{"lineNumber":16,"author":{"gitId":"cheahTJ"},"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":"2024-03-05"},{"lineNumber":17,"author":{"gitId":"cheahTJ"},"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":"2024-03-05"},{"lineNumber":18,"author":{"gitId":"cheahTJ"},"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":"2024-03-05"},{"lineNumber":19,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":20,"author":{"gitId":"cheahTJ"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-03-05"},{"lineNumber":21,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":22,"author":{"gitId":"cheahTJ"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-03-05"},{"lineNumber":23,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":24,"author":{"gitId":"cheahTJ"},"content":"* **Project management**:","lastModifiedDate":"2024-03-05"},{"lineNumber":25,"author":{"gitId":"cheahTJ"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-03-05"},{"lineNumber":26,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":27,"author":{"gitId":"cheahTJ"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-03-05"},{"lineNumber":28,"author":{"gitId":"cheahTJ"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-03-05"},{"lineNumber":29,"author":{"gitId":"cheahTJ"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-03-05"},{"lineNumber":30,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":31,"author":{"gitId":"cheahTJ"},"content":"* **Documentation**:","lastModifiedDate":"2024-03-05"},{"lineNumber":32,"author":{"gitId":"cheahTJ"},"content":" * User Guide:","lastModifiedDate":"2024-03-05"},{"lineNumber":33,"author":{"gitId":"cheahTJ"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-03-05"},{"lineNumber":34,"author":{"gitId":"cheahTJ"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-03-05"},{"lineNumber":35,"author":{"gitId":"cheahTJ"},"content":" * Developer Guide:","lastModifiedDate":"2024-03-05"},{"lineNumber":36,"author":{"gitId":"cheahTJ"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-03-05"},{"lineNumber":37,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":38,"author":{"gitId":"cheahTJ"},"content":"* **Community**:","lastModifiedDate":"2024-03-05"},{"lineNumber":39,"author":{"gitId":"cheahTJ"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-03-05"},{"lineNumber":40,"author":{"gitId":"cheahTJ"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-03-05"},{"lineNumber":41,"author":{"gitId":"cheahTJ"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-03-05"},{"lineNumber":42,"author":{"gitId":"cheahTJ"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-03-05"},{"lineNumber":43,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":44,"author":{"gitId":"cheahTJ"},"content":"* **Tools**:","lastModifiedDate":"2024-03-05"},{"lineNumber":45,"author":{"gitId":"cheahTJ"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-03-05"},{"lineNumber":46,"author":{"gitId":"cheahTJ"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-03-05"},{"lineNumber":47,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":48,"author":{"gitId":"cheahTJ"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-03-05"}],"authorContributionMap":{"cheahTJ":48}},{"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":"Rikko1204"},"content":" public static final String MESSAGE_UNKNOWN_NUSID \u003d \"The NUSID provided does not exist!\";","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"cheahTJ"},"content":" public static final String MESSAGE_NON_EXISTENT_PERSON \u003d \"This person does not exist in the address book\";","lastModifiedDate":"2024-03-13"},{"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":"Ragnapop"},"content":" public static final String MESSAGE_GROUP_PERSON \u003d \"Group has been assigned!\";","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"Ragnapop"},"content":" public static final String MESSAGE_GROUP_PERSON_INVALID \u003d \"This person does not exist in the address book\";","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":25,"author":{"gitId":"RingoftheKing"},"content":" public static final String MESSAGE_AT_LEAST_ONE_FIELD_REQUIRED \u003d","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"RingoftheKing"},"content":" \"Please input at least one identifier (e.g. n/) into the command \\n\";","lastModifiedDate":"2024-03-19"},{"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":"Rikko1204"},"content":" .append(\"; NusId: \")","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"Rikko1204"},"content":" .append(person.getNusId())","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"Rikko1204"},"content":" .append(\"; Schedule: \")","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"Rikko1204"},"content":" .append(person.getSchedule())","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"Rikko1204"},"content":" .append(\"; Remark: \")","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"Rikko1204"},"content":" .append(person.getRemark())","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"hjuntan"},"content":" .append(\"; Tag: \")","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"hjuntan"},"content":" .append(person.getTag())","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"hjuntan"},"content":" .append(\"; Groups: \");","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"hjuntan"},"content":" person.getGroups().forEach(builder::append);","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"cheahTJ":1,"Rikko1204":7,"RingoftheKing":2,"Ragnapop":2,"hjuntan":4,"-":46}},{"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":"hjuntan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GROUP;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":7,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NUSID;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-12"},{"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":"Rikko1204"},"content":" + PREFIX_NUSID + \"NUSID \"","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09"},{"lineNumber":30,"author":{"gitId":"hjuntan"},"content":" + PREFIX_TAG + \"TAG \"","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"hjuntan"},"content":" + \"[\" + PREFIX_GROUP + \"GROUP]...\\n\"","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06"},{"lineNumber":33,"author":{"gitId":"Rikko1204"},"content":" + PREFIX_NUSID + \"E1234567 \"","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09"},{"lineNumber":37,"author":{"gitId":"hjuntan"},"content":" + PREFIX_TAG + \"Student \"","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"hjuntan"},"content":" + PREFIX_GROUP + \"friends \"","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"hjuntan"},"content":" + PREFIX_GROUP + \"owesMoney\";","lastModifiedDate":"2024-03-11"},{"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":{"Rikko1204":3,"hjuntan":6,"-":78}},{"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.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"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":"cheahTJ"},"content":"import seedu.address.model.person.NusId;","lastModifiedDate":"2024-03-13"},{"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":"cheahTJ"},"content":" + \": Deletes the person identified by the NusId used in the displayed person list.\\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"cheahTJ"},"content":" + \"Parameters: NusId (8 digits long, starting with an \u0027E\u0027). \\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"cheahTJ"},"content":" + \"Example: \" + COMMAND_WORD + \" E0123456\";","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Person: %1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"cheahTJ"},"content":" private final NusId nusId;","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"cheahTJ"},"content":" public DeleteCommand(NusId nusId) {","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"cheahTJ"},"content":" this.nusId \u003d nusId;","lastModifiedDate":"2024-03-13"},{"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":"cheahTJ"},"content":" Person personToDelete \u003d lastShownList.stream().filter(person -\u003e person.getNusId().equals(nusId))","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"cheahTJ"},"content":" .findFirst().orElse(null);","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":41,"author":{"gitId":"cheahTJ"},"content":" if (personToDelete \u003d\u003d null) {","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"cheahTJ"},"content":" throw new CommandException(Messages.MESSAGE_NON_EXISTENT_PERSON);","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" model.deletePerson(personToDelete);","lastModifiedDate":"2016-09-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete)));","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (!(other instanceof DeleteCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":61,"author":{"gitId":"cheahTJ"},"content":" return nusId.equals(otherDeleteCommand.nusId);","lastModifiedDate":"2024-03-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"cheahTJ"},"content":" .add(\"targetnusId\", nusId.toString())","lastModifiedDate":"2024-03-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"cheahTJ":13,"-":57}},{"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":"hjuntan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GROUP;","lastModifiedDate":"2024-03-11"},{"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":"2024-03-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.util.CollectionUtil;","lastModifiedDate":"2016-12-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"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-02-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":23,"author":{"gitId":"hjuntan"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26"},{"lineNumber":26,"author":{"gitId":"hjuntan"},"content":"import seedu.address.model.person.NusId;","lastModifiedDate":"2024-03-11"},{"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":"Rikko1204"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"Rikko1204"},"content":"import seedu.address.model.person.Schedule;","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"hjuntan"},"content":"import seedu.address.model.person.Tag;","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26"},{"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":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the person identified \"","lastModifiedDate":"2016-12-26"},{"lineNumber":42,"author":{"gitId":"cheahTJ"},"content":" + \"by the NusId used in the displayed person list. \"","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26"},{"lineNumber":44,"author":{"gitId":"cheahTJ"},"content":" + \"Parameters: NusId (8 digits long, starting with an \u0027E\u0027). \\n \"","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06"},{"lineNumber":46,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":48,"author":{"gitId":"hjuntan"},"content":" + \"[\" + PREFIX_TAG + \"TAG] \"","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"cheahTJ"},"content":" + \"[\" + PREFIX_GROUP + \"GROUP] \\n\"","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"cheahTJ"},"content":" + \"Example: \" + COMMAND_WORD + \" E1234567 \"","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26"},{"lineNumber":55,"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":56,"author":{"gitId":"cheahTJ"},"content":" private final NusId nusId;","lastModifiedDate":"2024-03-19"},{"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":"cheahTJ"},"content":" * @param nusId of the person in the filtered person list to edit","lastModifiedDate":"2024-03-19"},{"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":"cheahTJ"},"content":" public EditCommand(NusId nusId, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"cheahTJ"},"content":" requireNonNull(nusId);","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":67,"author":{"gitId":"cheahTJ"},"content":" this.nusId \u003d nusId;","lastModifiedDate":"2024-03-19"},{"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":"cheahTJ"},"content":" Person personToEdit \u003d lastShownList.stream().filter(person -\u003e person.getNusId().equals(nusId))","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"cheahTJ"},"content":" .findFirst().orElse(null);","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"cheahTJ"},"content":" if (personToEdit \u003d\u003d null) {","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"cheahTJ"},"content":" throw new CommandException(Messages.MESSAGE_NON_EXISTENT_PERSON);","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":84,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26"},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":92,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":95,"author":{"gitId":"hjuntan"},"content":" NusId nusId \u003d personToEdit.getNusId(); // nusId is immutable","lastModifiedDate":"2024-03-11"},{"lineNumber":96,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":97,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21"},{"lineNumber":98,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":99,"author":{"gitId":"cheahTJ"},"content":" Schedule updatedSchedule \u003d editPersonDescriptor.getSchedule()","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"cheahTJ"},"content":" .orElse(personToEdit.getSchedule());; // Edit does not allow editing schedule","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"cheahTJ"},"content":" Remark updatedRemark \u003d editPersonDescriptor.getRemark()","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"cheahTJ"},"content":" .orElse(personToEdit.getRemark()); // Edit does not allow editing remark","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"hjuntan"},"content":" Tag updatedTag \u003d editPersonDescriptor.getTag().orElse(personToEdit.getTag());","lastModifiedDate":"2024-03-11"},{"lineNumber":104,"author":{"gitId":"hjuntan"},"content":" Set\u003cGroup\u003e updatedGroups \u003d editPersonDescriptor.getGroups().orElse(personToEdit.getGroups());","lastModifiedDate":"2024-03-11"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":106,"author":{"gitId":"Rikko1204"},"content":" return new Person(nusId, updatedName, updatedPhone, updatedEmail,","lastModifiedDate":"2024-03-16"},{"lineNumber":107,"author":{"gitId":"Rikko1204"},"content":" updatedTag, updatedGroups, updatedSchedule, updatedRemark);","lastModifiedDate":"2024-03-16"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" return false;","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":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":122,"author":{"gitId":"cheahTJ"},"content":" return nusId.equals(otherEditCommand.nusId)","lastModifiedDate":"2024-03-19"},{"lineNumber":123,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"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":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":129,"author":{"gitId":"cheahTJ"},"content":" .add(\"targetnusId\", nusId.toString())","lastModifiedDate":"2024-03-19"},{"lineNumber":130,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":135,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26"},{"lineNumber":136,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26"},{"lineNumber":137,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":138,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26"},{"lineNumber":139,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21"},{"lineNumber":140,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":141,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":142,"author":{"gitId":"hjuntan"},"content":" private Tag tag;","lastModifiedDate":"2024-03-11"},{"lineNumber":143,"author":{"gitId":"hjuntan"},"content":" private Set\u003cGroup\u003e groups;","lastModifiedDate":"2024-03-11"},{"lineNumber":144,"author":{"gitId":"cheahTJ"},"content":" private Schedule schedule;","lastModifiedDate":"2024-03-19"},{"lineNumber":145,"author":{"gitId":"cheahTJ"},"content":" private Remark remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":147,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":149,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":150,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11"},{"lineNumber":151,"author":{"gitId":"hjuntan"},"content":" * A defensive copy of {@code groups} is used internally.","lastModifiedDate":"2024-03-11"},{"lineNumber":152,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":153,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26"},{"lineNumber":154,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15"},{"lineNumber":155,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15"},{"lineNumber":156,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15"},{"lineNumber":157,"author":{"gitId":"cheahTJ"},"content":" setSchedule(toCopy.schedule);","lastModifiedDate":"2024-03-19"},{"lineNumber":158,"author":{"gitId":"cheahTJ"},"content":" setRemark(toCopy.remark);","lastModifiedDate":"2024-03-19"},{"lineNumber":159,"author":{"gitId":"hjuntan"},"content":" setTag(toCopy.tag);","lastModifiedDate":"2024-03-11"},{"lineNumber":160,"author":{"gitId":"hjuntan"},"content":" setGroups(toCopy.groups);","lastModifiedDate":"2024-03-11"},{"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":"hjuntan"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, tag, groups);","lastModifiedDate":"2024-03-11"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":170,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":171,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21"},{"lineNumber":172,"author":{"gitId":"-"},"content":" this.name \u003d name;","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":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":176,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":177,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21"},{"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 setPhone(Phone phone) {","lastModifiedDate":"2017-06-21"},{"lineNumber":181,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","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\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26"},{"lineNumber":185,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","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 void setEmail(Email email) {","lastModifiedDate":"2017-06-21"},{"lineNumber":189,"author":{"gitId":"-"},"content":" this.email \u003d email;","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 Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":193,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","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":"cheahTJ"},"content":" public void setSchedule(Schedule schedule) {","lastModifiedDate":"2024-03-19"},{"lineNumber":197,"author":{"gitId":"cheahTJ"},"content":" this.schedule \u003d schedule;","lastModifiedDate":"2024-03-19"},{"lineNumber":198,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":199,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":200,"author":{"gitId":"cheahTJ"},"content":" public Optional\u003cSchedule\u003e getSchedule() {","lastModifiedDate":"2024-03-19"},{"lineNumber":201,"author":{"gitId":"cheahTJ"},"content":" return Optional.ofNullable(schedule);","lastModifiedDate":"2024-03-19"},{"lineNumber":202,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":203,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":204,"author":{"gitId":"cheahTJ"},"content":" public void setRemark(Remark remark) {","lastModifiedDate":"2024-03-19"},{"lineNumber":205,"author":{"gitId":"cheahTJ"},"content":" this.remark \u003d remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":206,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":207,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":208,"author":{"gitId":"cheahTJ"},"content":" public Optional\u003cRemark\u003e getRemark() {","lastModifiedDate":"2024-03-19"},{"lineNumber":209,"author":{"gitId":"cheahTJ"},"content":" return Optional.ofNullable(remark);","lastModifiedDate":"2024-03-19"},{"lineNumber":210,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":211,"author":{"gitId":"hjuntan"},"content":" public void setTag(Tag tag) {","lastModifiedDate":"2024-03-11"},{"lineNumber":212,"author":{"gitId":"hjuntan"},"content":" this.tag \u003d tag;","lastModifiedDate":"2024-03-11"},{"lineNumber":213,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":215,"author":{"gitId":"hjuntan"},"content":" public Optional\u003cTag\u003e getTag() {","lastModifiedDate":"2024-03-11"},{"lineNumber":216,"author":{"gitId":"hjuntan"},"content":" return Optional.ofNullable(tag);","lastModifiedDate":"2024-03-11"},{"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":"hjuntan"},"content":" * Sets {@code groups} to this object\u0027s {@code groups}.","lastModifiedDate":"2024-03-11"},{"lineNumber":221,"author":{"gitId":"hjuntan"},"content":" * A defensive copy of {@code groups} is used internally.","lastModifiedDate":"2024-03-11"},{"lineNumber":222,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":223,"author":{"gitId":"hjuntan"},"content":" public void setGroups(Set\u003cGroup\u003e groups) {","lastModifiedDate":"2024-03-11"},{"lineNumber":224,"author":{"gitId":"hjuntan"},"content":" this.groups \u003d (groups !\u003d null) ? new HashSet\u003c\u003e(groups) : null;","lastModifiedDate":"2024-03-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":"hjuntan"},"content":" * Returns an unmodifiable group set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2024-03-11"},{"lineNumber":229,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11"},{"lineNumber":230,"author":{"gitId":"hjuntan"},"content":" * Returns {@code Optional#empty()} if {@code groups} is null.","lastModifiedDate":"2024-03-11"},{"lineNumber":231,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":232,"author":{"gitId":"hjuntan"},"content":" public Optional\u003cSet\u003cGroup\u003e\u003e getGroups() {","lastModifiedDate":"2024-03-11"},{"lineNumber":233,"author":{"gitId":"hjuntan"},"content":" return (groups !\u003d null) ? Optional.of(Collections.unmodifiableSet(groups)) : Optional.empty();","lastModifiedDate":"2024-03-11"},{"lineNumber":234,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":236,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":237,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":238,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":239,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":240,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":242,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":243,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05"},{"lineNumber":244,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":245,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":247,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":248,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":249,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":250,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":251,"author":{"gitId":"hjuntan"},"content":" \u0026\u0026 Objects.equals(tag, otherEditPersonDescriptor.tag)","lastModifiedDate":"2024-03-11"},{"lineNumber":252,"author":{"gitId":"hjuntan"},"content":" \u0026\u0026 Objects.equals(groups, otherEditPersonDescriptor.groups);","lastModifiedDate":"2024-03-11"},{"lineNumber":253,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":261,"author":{"gitId":"hjuntan"},"content":" .add(\"tag\", tag)","lastModifiedDate":"2024-03-11"},{"lineNumber":262,"author":{"gitId":"hjuntan"},"content":" .add(\"groups\", groups)","lastModifiedDate":"2024-03-11"},{"lineNumber":263,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":264,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":266,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"cheahTJ":40,"Rikko1204":4,"hjuntan":30,"-":192}},{"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":"RingoftheKing"},"content":"import seedu.address.model.person.EmailMatchesPredicate;","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"RingoftheKing"},"content":"import seedu.address.model.person.GroupMatchesPredicate;","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"RingoftheKing"},"content":"import seedu.address.model.person.PhoneMatchesPredicate;","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"RingoftheKing"},"content":"import seedu.address.model.person.TagMatchesPredicate;","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Finds and lists all persons in address book whose name contains any of the argument keywords.","lastModifiedDate":"2016-09-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Keyword matching is case insensitive.","lastModifiedDate":"2018-04-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2016-09-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"find\";","lastModifiedDate":"2016-09-22"},{"lineNumber":21,"author":{"gitId":"RingoftheKing"},"content":" // This string is used by Predicates to help them know when a parameter isn\u0027t required.","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"RingoftheKing"},"content":" public static final String NOT_REQUIRED_VALUE \u003d \"$$NOT_REQUIRED$$\";","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":24,"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":25,"author":{"gitId":"-"},"content":" + \"the specified keywords (case-insensitive) and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2018-04-01"},{"lineNumber":26,"author":{"gitId":"-"},"content":" + \"Parameters: KEYWORD [MORE_KEYWORDS]...\\n\"","lastModifiedDate":"2016-09-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" alice bob charlie\";","lastModifiedDate":"2016-09-22"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":29,"author":{"gitId":"RingoftheKing"},"content":" private final NameContainsKeywordsPredicate namePredicate;","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"RingoftheKing"},"content":" private final EmailMatchesPredicate emailPredicate;","lastModifiedDate":"2024-03-15"},{"lineNumber":31,"author":{"gitId":"RingoftheKing"},"content":" private final GroupMatchesPredicate groupPredicate;","lastModifiedDate":"2024-03-15"},{"lineNumber":32,"author":{"gitId":"RingoftheKing"},"content":" private final PhoneMatchesPredicate phonePredicate;","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"RingoftheKing"},"content":" private final TagMatchesPredicate tagPredicate;","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":35,"author":{"gitId":"RingoftheKing"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"RingoftheKing"},"content":" * Creates a FindCommand with predicates initialized with the provided predicates","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"RingoftheKing"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"RingoftheKing"},"content":" * @param n name","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"RingoftheKing"},"content":" * @param e email","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"RingoftheKing"},"content":" * @param g group","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"RingoftheKing"},"content":" * @param p phone","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"RingoftheKing"},"content":" * @param t tag","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"RingoftheKing"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"RingoftheKing"},"content":" public FindCommand(NameContainsKeywordsPredicate n,","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"RingoftheKing"},"content":" EmailMatchesPredicate e,","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"RingoftheKing"},"content":" GroupMatchesPredicate g,","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"RingoftheKing"},"content":" PhoneMatchesPredicate p,","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"RingoftheKing"},"content":" TagMatchesPredicate t) {","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"RingoftheKing"},"content":" namePredicate \u003d n;","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"RingoftheKing"},"content":" emailPredicate \u003d e;","lastModifiedDate":"2024-03-15"},{"lineNumber":51,"author":{"gitId":"RingoftheKing"},"content":" groupPredicate \u003d g;","lastModifiedDate":"2024-03-15"},{"lineNumber":52,"author":{"gitId":"RingoftheKing"},"content":" phonePredicate \u003d p;","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"RingoftheKing"},"content":" tagPredicate \u003d t;","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":59,"author":{"gitId":"RingoftheKing"},"content":" model.updateFilteredPersonList(namePredicate","lastModifiedDate":"2024-03-15"},{"lineNumber":60,"author":{"gitId":"RingoftheKing"},"content":" .and(emailPredicate)","lastModifiedDate":"2024-03-15"},{"lineNumber":61,"author":{"gitId":"RingoftheKing"},"content":" .and(groupPredicate)","lastModifiedDate":"2024-03-15"},{"lineNumber":62,"author":{"gitId":"RingoftheKing"},"content":" .and(phonePredicate)","lastModifiedDate":"2024-03-15"},{"lineNumber":63,"author":{"gitId":"RingoftheKing"},"content":" .and(tagPredicate));","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return new CommandResult(","lastModifiedDate":"2018-04-01"},{"lineNumber":65,"author":{"gitId":"-"},"content":" String.format(Messages.MESSAGE_PERSONS_LISTED_OVERVIEW, model.getFilteredPersonList().size()));","lastModifiedDate":"2018-04-01"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return true;","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":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" if (!(other instanceof FindCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" FindCommand otherFindCommand \u003d (FindCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":80,"author":{"gitId":"RingoftheKing"},"content":" boolean x \u003d namePredicate.equals(otherFindCommand.namePredicate);","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"RingoftheKing"},"content":" boolean y \u003d emailPredicate.equals(otherFindCommand.emailPredicate);","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"RingoftheKing"},"content":" boolean z \u003d groupPredicate.equals(otherFindCommand.groupPredicate);","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"RingoftheKing"},"content":" boolean a \u003d phonePredicate.equals(otherFindCommand.phonePredicate);","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"RingoftheKing"},"content":" boolean b \u003d tagPredicate.equals(otherFindCommand.tagPredicate);","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"RingoftheKing"},"content":" return a \u0026\u0026 b \u0026\u0026 x \u0026\u0026 y \u0026\u0026 z;","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"RingoftheKing"},"content":" .add(\"namePredicate\", namePredicate)","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"RingoftheKing"},"content":" .add(\"phonePredicate\", phonePredicate)","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"RingoftheKing"},"content":" .add(\"emailPredicate\", emailPredicate)","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"RingoftheKing"},"content":" .add(\"tagPredicate\", tagPredicate)","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"RingoftheKing"},"content":" .add(\"groupPredicate\", groupPredicate)","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"RingoftheKing":46,"-":52}},{"path":"src/main/java/seedu/address/logic/commands/GroupCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Ragnapop"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"Ragnapop"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"Ragnapop"},"content":"import static seedu.address.logic.Messages.MESSAGE_GROUP_PERSON_INVALID;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"Ragnapop"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GROUP;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"Ragnapop"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NUSID;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"Ragnapop"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"Ragnapop"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"Ragnapop"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"Ragnapop"},"content":"import java.util.List;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"Ragnapop"},"content":"import java.util.Objects;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"Ragnapop"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"Ragnapop"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"Ragnapop"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"Ragnapop"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"Ragnapop"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"Ragnapop"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"Ragnapop"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"Ragnapop"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"Ragnapop"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"Ragnapop"},"content":"import seedu.address.model.person.NusId;","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"Ragnapop"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"Ragnapop"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"Ragnapop"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"Ragnapop"},"content":"import seedu.address.model.person.Schedule;","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"Ragnapop"},"content":"import seedu.address.model.person.Tag;","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"Ragnapop"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"Ragnapop"},"content":" * assigns a group to an existing person in the address book.","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"Ragnapop"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"Ragnapop"},"content":"public class GroupCommand extends Command {","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"Ragnapop"},"content":" public static final String MESSAGE_GROUP_PERSON_SUCCESS \u003d \"Grouped Person: %1$s\";","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"Ragnapop"},"content":" public static final String COMMAND_WORD \u003d \"group\";","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"Ragnapop"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": assigns the person identified a group\\n\"","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"Ragnapop"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"Ragnapop"},"content":" + \"[\" + PREFIX_NUSID + \"NUSID] \"","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"Ragnapop"},"content":" + \"[\" + PREFIX_GROUP + \"GROUP] \"","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"Ragnapop"},"content":" + \"[\" + PREFIX_TAG + \"TAG] \\n\"","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"Ragnapop"},"content":" + \"Example: \" + COMMAND_WORD + PREFIX_NUSID + \"EXXXXXXX \"","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"Ragnapop"},"content":" + PREFIX_GROUP + \"Class T15 \"","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"Ragnapop"},"content":" + PREFIX_TAG + \"TA\";","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"Ragnapop"},"content":" private final NusId toGroup;","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"Ragnapop"},"content":" private final GroupPersonDescriptor groupPersonDescriptor;","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":56,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"Ragnapop"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"Ragnapop"},"content":" * @param nusid of the person in the filtered person list to group","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"Ragnapop"},"content":" * @param groupPersonDescriptor details to group the person with","lastModifiedDate":"2024-03-13"},{"lineNumber":60,"author":{"gitId":"Ragnapop"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":61,"author":{"gitId":"Ragnapop"},"content":" public GroupCommand(NusId nusid, GroupPersonDescriptor groupPersonDescriptor) {","lastModifiedDate":"2024-03-13"},{"lineNumber":62,"author":{"gitId":"Ragnapop"},"content":" requireNonNull(nusid);","lastModifiedDate":"2024-03-13"},{"lineNumber":63,"author":{"gitId":"Ragnapop"},"content":" toGroup \u003d nusid;","lastModifiedDate":"2024-03-13"},{"lineNumber":64,"author":{"gitId":"Ragnapop"},"content":" this.groupPersonDescriptor \u003d new GroupPersonDescriptor(groupPersonDescriptor);","lastModifiedDate":"2024-03-13"},{"lineNumber":65,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":66,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":67,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":68,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":69,"author":{"gitId":"Ragnapop"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":70,"author":{"gitId":"Ragnapop"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"Ragnapop"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-13"},{"lineNumber":72,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":73,"author":{"gitId":"Ragnapop"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-13"},{"lineNumber":74,"author":{"gitId":"Ragnapop"},"content":" Person personToGroup \u003d lastShownList.stream().filter(person -\u003e person.getNusId().equals(toGroup))","lastModifiedDate":"2024-03-13"},{"lineNumber":75,"author":{"gitId":"Ragnapop"},"content":" .findFirst().orElse(null);","lastModifiedDate":"2024-03-13"},{"lineNumber":76,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":77,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"Ragnapop"},"content":" if (personToGroup \u003d\u003d null) {","lastModifiedDate":"2024-03-13"},{"lineNumber":79,"author":{"gitId":"Ragnapop"},"content":" throw new CommandException(MESSAGE_GROUP_PERSON_INVALID);","lastModifiedDate":"2024-03-13"},{"lineNumber":80,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":81,"author":{"gitId":"Ragnapop"},"content":" Person groupedPerson \u003d createGroupedPerson(personToGroup, groupPersonDescriptor);","lastModifiedDate":"2024-03-13"},{"lineNumber":82,"author":{"gitId":"Ragnapop"},"content":" model.setPerson(personToGroup, groupedPerson);","lastModifiedDate":"2024-03-13"},{"lineNumber":83,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":84,"author":{"gitId":"Ragnapop"},"content":" return new CommandResult(String.format(MESSAGE_GROUP_PERSON_SUCCESS, Messages.format(groupedPerson)));","lastModifiedDate":"2024-03-14"},{"lineNumber":85,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":86,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":87,"author":{"gitId":"Ragnapop"},"content":" private static Person createGroupedPerson(Person personToGroup, GroupPersonDescriptor GroupPersonDescriptor) {","lastModifiedDate":"2024-03-13"},{"lineNumber":88,"author":{"gitId":"Ragnapop"},"content":" assert personToGroup !\u003d null;","lastModifiedDate":"2024-03-13"},{"lineNumber":89,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":90,"author":{"gitId":"Ragnapop"},"content":" NusId nusId \u003d personToGroup.getNusId();","lastModifiedDate":"2024-03-13"},{"lineNumber":91,"author":{"gitId":"Ragnapop"},"content":" Name name \u003d personToGroup.getName();","lastModifiedDate":"2024-03-13"},{"lineNumber":92,"author":{"gitId":"Ragnapop"},"content":" Phone phone \u003d personToGroup.getPhone();","lastModifiedDate":"2024-03-13"},{"lineNumber":93,"author":{"gitId":"Ragnapop"},"content":" Email email \u003d personToGroup.getEmail();","lastModifiedDate":"2024-03-13"},{"lineNumber":94,"author":{"gitId":"Ragnapop"},"content":" Tag updatedTag \u003d GroupPersonDescriptor.getTag().orElse(personToGroup.getTag());","lastModifiedDate":"2024-03-13"},{"lineNumber":95,"author":{"gitId":"Ragnapop"},"content":" Set\u003cGroup\u003e updatedGroups \u003d GroupPersonDescriptor.getGroups().orElse(personToGroup.getGroups());","lastModifiedDate":"2024-03-13"},{"lineNumber":96,"author":{"gitId":"Ragnapop"},"content":" Schedule schedule \u003d personToGroup.getSchedule();","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"Ragnapop"},"content":" Remark remark \u003d personToGroup.getRemark();","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":99,"author":{"gitId":"Ragnapop"},"content":" return new Person(nusId, name, phone, email, updatedTag, updatedGroups, schedule, remark);","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":101,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":102,"author":{"gitId":"Ragnapop"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":103,"author":{"gitId":"Ragnapop"},"content":" public String toString() {","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"Ragnapop"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"Ragnapop"},"content":" .add(\"nusid\", toGroup)","lastModifiedDate":"2024-03-20"},{"lineNumber":106,"author":{"gitId":"Ragnapop"},"content":" .add(\"groupPersonDescriptor\", groupPersonDescriptor)","lastModifiedDate":"2024-03-20"},{"lineNumber":107,"author":{"gitId":"Ragnapop"},"content":" .toString();","lastModifiedDate":"2024-03-20"},{"lineNumber":108,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":109,"author":{"gitId":"Ragnapop"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":110,"author":{"gitId":"Ragnapop"},"content":" * Sets {@code group} to this object\u0027s {@code groups}.","lastModifiedDate":"2024-03-13"},{"lineNumber":111,"author":{"gitId":"Ragnapop"},"content":" * A defensive copy of {@code groups} is used internally.","lastModifiedDate":"2024-03-13"},{"lineNumber":112,"author":{"gitId":"Ragnapop"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":113,"author":{"gitId":"Ragnapop"},"content":" public static class GroupPersonDescriptor {","lastModifiedDate":"2024-03-13"},{"lineNumber":114,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":115,"author":{"gitId":"Ragnapop"},"content":" private NusId nusid;","lastModifiedDate":"2024-03-13"},{"lineNumber":116,"author":{"gitId":"Ragnapop"},"content":" private Set\u003cGroup\u003e groups;","lastModifiedDate":"2024-03-13"},{"lineNumber":117,"author":{"gitId":"Ragnapop"},"content":" private Tag tag;","lastModifiedDate":"2024-03-13"},{"lineNumber":118,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":119,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":120,"author":{"gitId":"Ragnapop"},"content":" public GroupPersonDescriptor() {}","lastModifiedDate":"2024-03-13"},{"lineNumber":121,"author":{"gitId":"Ragnapop"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":122,"author":{"gitId":"Ragnapop"},"content":" * Copy constructor.","lastModifiedDate":"2024-03-13"},{"lineNumber":123,"author":{"gitId":"Ragnapop"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2024-03-13"},{"lineNumber":124,"author":{"gitId":"Ragnapop"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":125,"author":{"gitId":"Ragnapop"},"content":" public GroupPersonDescriptor(GroupPersonDescriptor toCopy) {","lastModifiedDate":"2024-03-13"},{"lineNumber":126,"author":{"gitId":"Ragnapop"},"content":" //setNusId(toCopy.nusid);","lastModifiedDate":"2024-03-13"},{"lineNumber":127,"author":{"gitId":"Ragnapop"},"content":" this.nusid \u003d toCopy.nusid;","lastModifiedDate":"2024-03-13"},{"lineNumber":128,"author":{"gitId":"Ragnapop"},"content":" setGroups(toCopy.groups);","lastModifiedDate":"2024-03-13"},{"lineNumber":129,"author":{"gitId":"Ragnapop"},"content":" setTag(toCopy.tag);","lastModifiedDate":"2024-03-13"},{"lineNumber":130,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":131,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":132,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":133,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":134,"author":{"gitId":"Ragnapop"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":135,"author":{"gitId":"Ragnapop"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2024-03-13"},{"lineNumber":136,"author":{"gitId":"Ragnapop"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":137,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":138,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":139,"author":{"gitId":"Ragnapop"},"content":" public void setNusId(NusId nusid) {","lastModifiedDate":"2024-03-13"},{"lineNumber":140,"author":{"gitId":"Ragnapop"},"content":" this.nusid \u003d nusid;","lastModifiedDate":"2024-03-13"},{"lineNumber":141,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":142,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":143,"author":{"gitId":"Ragnapop"},"content":" public Optional\u003cNusId\u003e getNusId() {","lastModifiedDate":"2024-03-13"},{"lineNumber":144,"author":{"gitId":"Ragnapop"},"content":" return Optional.ofNullable(nusid);","lastModifiedDate":"2024-03-13"},{"lineNumber":145,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":146,"author":{"gitId":"Ragnapop"},"content":" public void setTag(Tag tag) {","lastModifiedDate":"2024-03-13"},{"lineNumber":147,"author":{"gitId":"Ragnapop"},"content":" this.tag \u003d tag;","lastModifiedDate":"2024-03-13"},{"lineNumber":148,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":149,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":150,"author":{"gitId":"Ragnapop"},"content":" public Optional\u003cTag\u003e getTag() {","lastModifiedDate":"2024-03-13"},{"lineNumber":151,"author":{"gitId":"Ragnapop"},"content":" return Optional.ofNullable(tag);","lastModifiedDate":"2024-03-13"},{"lineNumber":152,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":153,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":154,"author":{"gitId":"Ragnapop"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":155,"author":{"gitId":"Ragnapop"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2024-03-13"},{"lineNumber":156,"author":{"gitId":"Ragnapop"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2024-03-13"},{"lineNumber":157,"author":{"gitId":"Ragnapop"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":158,"author":{"gitId":"Ragnapop"},"content":" public void setGroups(Set\u003cGroup\u003e groups) {","lastModifiedDate":"2024-03-13"},{"lineNumber":159,"author":{"gitId":"Ragnapop"},"content":" this.groups \u003d (groups !\u003d null) ? new HashSet\u003c\u003e(groups) : null;","lastModifiedDate":"2024-03-13"},{"lineNumber":160,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":161,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":162,"author":{"gitId":"Ragnapop"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":163,"author":{"gitId":"Ragnapop"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2024-03-13"},{"lineNumber":164,"author":{"gitId":"Ragnapop"},"content":" * if modification is attempted.","lastModifiedDate":"2024-03-13"},{"lineNumber":165,"author":{"gitId":"Ragnapop"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2024-03-13"},{"lineNumber":166,"author":{"gitId":"Ragnapop"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":167,"author":{"gitId":"Ragnapop"},"content":" public Optional\u003cSet\u003cGroup\u003e\u003e getGroups() {","lastModifiedDate":"2024-03-13"},{"lineNumber":168,"author":{"gitId":"Ragnapop"},"content":" return (groups !\u003d null) ? Optional.of(Collections.unmodifiableSet(groups)) : Optional.empty();","lastModifiedDate":"2024-03-13"},{"lineNumber":169,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":170,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":171,"author":{"gitId":"Ragnapop"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":172,"author":{"gitId":"Ragnapop"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-13"},{"lineNumber":173,"author":{"gitId":"Ragnapop"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-13"},{"lineNumber":174,"author":{"gitId":"Ragnapop"},"content":" return true;","lastModifiedDate":"2024-03-13"},{"lineNumber":175,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":176,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":177,"author":{"gitId":"Ragnapop"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-13"},{"lineNumber":178,"author":{"gitId":"Ragnapop"},"content":" if (!(other instanceof GroupCommand.GroupPersonDescriptor)) {","lastModifiedDate":"2024-03-13"},{"lineNumber":179,"author":{"gitId":"Ragnapop"},"content":" return false;","lastModifiedDate":"2024-03-13"},{"lineNumber":180,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":181,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":182,"author":{"gitId":"Ragnapop"},"content":" GroupPersonDescriptor otherGroupPersonDescriptor \u003d (GroupPersonDescriptor) other;","lastModifiedDate":"2024-03-13"},{"lineNumber":183,"author":{"gitId":"Ragnapop"},"content":" return Objects.equals(nusid, otherGroupPersonDescriptor.nusid)","lastModifiedDate":"2024-03-13"},{"lineNumber":184,"author":{"gitId":"Ragnapop"},"content":" \u0026\u0026 Objects.equals(groups, otherGroupPersonDescriptor.groups)","lastModifiedDate":"2024-03-13"},{"lineNumber":185,"author":{"gitId":"Ragnapop"},"content":" \u0026\u0026 Objects.equals(tag, otherGroupPersonDescriptor.tag);","lastModifiedDate":"2024-03-13"},{"lineNumber":186,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":187,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":188,"author":{"gitId":"Ragnapop"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":189,"author":{"gitId":"Ragnapop"},"content":" public String toString() {","lastModifiedDate":"2024-03-13"},{"lineNumber":190,"author":{"gitId":"Ragnapop"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-13"},{"lineNumber":191,"author":{"gitId":"Ragnapop"},"content":" .add(\"nusId\", nusid)","lastModifiedDate":"2024-03-20"},{"lineNumber":192,"author":{"gitId":"Ragnapop"},"content":" .add(\"groups\", groups)","lastModifiedDate":"2024-03-20"},{"lineNumber":193,"author":{"gitId":"Ragnapop"},"content":" .add(\"tag\", tag)","lastModifiedDate":"2024-03-20"},{"lineNumber":194,"author":{"gitId":"Ragnapop"},"content":" .toString();","lastModifiedDate":"2024-03-13"},{"lineNumber":195,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":196,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":197,"author":{"gitId":"Ragnapop"},"content":"}","lastModifiedDate":"2024-03-13"},{"lineNumber":198,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":199,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"Ragnapop":199}},{"path":"src/main/java/seedu/address/logic/commands/ScheduleCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Rikko1204"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"Rikko1204"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_NUSID;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NUSID;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SCHEDULE;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"Rikko1204"},"content":"import java.util.List;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"Rikko1204"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"Rikko1204"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"Rikko1204"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"Rikko1204"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"Rikko1204"},"content":"import seedu.address.model.person.NusId;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"Rikko1204"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"Rikko1204"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"Rikko1204"},"content":"import seedu.address.model.person.Schedule;","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"Rikko1204"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"Rikko1204"},"content":" * Adds a person to the address book.","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"Rikko1204"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"Rikko1204"},"content":"public class ScheduleCommand extends Command {","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"Rikko1204"},"content":" public static final String COMMAND_WORD \u003d \"schedule\";","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"Rikko1204"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Schedule a meeting with a student. \\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"Rikko1204"},"content":" + \"Note: SCHEDULE must be present if REMARK is present. \\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"Rikko1204"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"Rikko1204"},"content":" + PREFIX_NUSID + \"NUSID \"","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"Rikko1204"},"content":" + \"[\" + PREFIX_SCHEDULE + \"SCHEDULE] \"","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"Rikko1204"},"content":" + \"[\" + PREFIX_REMARK + \"REMARK] \\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"Rikko1204"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"Rikko1204"},"content":" + PREFIX_NUSID + \"E1234567 \"","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"Rikko1204"},"content":" + PREFIX_SCHEDULE + \"01-12-2021 \"","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"Rikko1204"},"content":" + PREFIX_REMARK + \"Consultation at 3pm at ComSci 1\";","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"Rikko1204"},"content":" public static final String MESSAGE_ADD_SUCCESS \u003d \"New schedule added with person: %1$s\";","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"Rikko1204"},"content":" public static final String MESSAGE_DELETE_SUCCESS \u003d \"Removed schedule from person: %1$s\";","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"Rikko1204"},"content":" private final NusId nusId;","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"Rikko1204"},"content":" private final Schedule schedule;","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"Rikko1204"},"content":" private final Remark remark;","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"Rikko1204"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"Rikko1204"},"content":" * Creates a ScheduleCommand to schedule a meeting with Person with {@code NusId}","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"Rikko1204"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"Rikko1204"},"content":" public ScheduleCommand(NusId nusId, Schedule schedule, Remark remark) {","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"Rikko1204"},"content":" requireAllNonNull(nusId, schedule, remark);","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"Rikko1204"},"content":" this.nusId \u003d nusId;","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"Rikko1204"},"content":" this.schedule \u003d schedule;","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"Rikko1204"},"content":" this.remark \u003d remark;","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"Rikko1204"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"Rikko1204"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"Rikko1204"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"Rikko1204"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"Rikko1204"},"content":" Person personToEdit \u003d lastShownList.stream().filter(person -\u003e person.getNusId().equals(nusId))","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"Rikko1204"},"content":" .findFirst().orElse(null);","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"Rikko1204"},"content":" if (personToEdit \u003d\u003d null) {","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"Rikko1204"},"content":" throw new CommandException(MESSAGE_UNKNOWN_NUSID);","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"Rikko1204"},"content":" Person editedPerson \u003d new Person(personToEdit.getNusId(), personToEdit.getName(), personToEdit.getPhone(),","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"Rikko1204"},"content":" personToEdit.getEmail(), personToEdit.getTag(), personToEdit.getGroups(), schedule, remark);","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"Rikko1204"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"Rikko1204"},"content":" return new CommandResult(generateSuccessMessage(editedPerson));","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"Rikko1204"},"content":" private String generateSuccessMessage(Person editedPerson) {","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"Rikko1204"},"content":" String message \u003d !schedule.date.isEmpty() ? MESSAGE_ADD_SUCCESS : MESSAGE_DELETE_SUCCESS;","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"Rikko1204"},"content":" return String.format(message, Messages.format(editedPerson));","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"Rikko1204"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"Rikko1204"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"Rikko1204"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"Rikko1204"},"content":" return true;","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":87,"author":{"gitId":"Rikko1204"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-16"},{"lineNumber":88,"author":{"gitId":"Rikko1204"},"content":" if (!(other instanceof ScheduleCommand)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":89,"author":{"gitId":"Rikko1204"},"content":" return false;","lastModifiedDate":"2024-03-16"},{"lineNumber":90,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":91,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":92,"author":{"gitId":"Rikko1204"},"content":" ScheduleCommand otherScheduleCommand \u003d (ScheduleCommand) other;","lastModifiedDate":"2024-03-16"},{"lineNumber":93,"author":{"gitId":"Rikko1204"},"content":" return nusId.equals(otherScheduleCommand.nusId)","lastModifiedDate":"2024-03-16"},{"lineNumber":94,"author":{"gitId":"Rikko1204"},"content":" \u0026\u0026 schedule.equals(otherScheduleCommand.schedule)","lastModifiedDate":"2024-03-16"},{"lineNumber":95,"author":{"gitId":"Rikko1204"},"content":" \u0026\u0026 remark.equals(otherScheduleCommand.remark);","lastModifiedDate":"2024-03-16"},{"lineNumber":96,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":97,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":98,"author":{"gitId":"Rikko1204"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":99,"author":{"gitId":"Rikko1204"},"content":" public String toString() {","lastModifiedDate":"2024-03-16"},{"lineNumber":100,"author":{"gitId":"Rikko1204"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-16"},{"lineNumber":101,"author":{"gitId":"Rikko1204"},"content":" .add(\"nusId\", nusId)","lastModifiedDate":"2024-03-16"},{"lineNumber":102,"author":{"gitId":"Rikko1204"},"content":" .add(\"schedule\", schedule)","lastModifiedDate":"2024-03-16"},{"lineNumber":103,"author":{"gitId":"Rikko1204"},"content":" .add(\"remark\", remark)","lastModifiedDate":"2024-03-16"},{"lineNumber":104,"author":{"gitId":"Rikko1204"},"content":" .toString();","lastModifiedDate":"2024-03-16"},{"lineNumber":105,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":106,"author":{"gitId":"Rikko1204"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"Rikko1204":106}},{"path":"src/main/java/seedu/address/logic/commands/ViewCommand.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":"hjuntan"},"content":"public class ViewCommand extends Command {","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"hjuntan"},"content":" public static final String COMMAND_WORD \u003d \"view\";","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"hjuntan"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Here are all your contacts!\";","lastModifiedDate":"2024-03-20"},{"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":{"hjuntan":3,"-":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":"hjuntan"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"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":{"hjuntan":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":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05"},{"lineNumber":5,"author":{"gitId":"hjuntan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GROUP;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":7,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NUSID;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":16,"author":{"gitId":"hjuntan"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-03-17"},{"lineNumber":19,"author":{"gitId":"hjuntan"},"content":"import seedu.address.model.person.NusId;","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-03-17"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-03-17"},{"lineNumber":22,"author":{"gitId":"Rikko1204"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"Rikko1204"},"content":"import seedu.address.model.person.Schedule;","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"hjuntan"},"content":"import seedu.address.model.person.Tag;","lastModifiedDate":"2024-03-11"},{"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":"Rikko1204"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NUSID, PREFIX_NAME, PREFIX_PHONE,","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"Rikko1204"},"content":" PREFIX_EMAIL, PREFIX_TAG, PREFIX_GROUP);","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":41,"author":{"gitId":"Rikko1204"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NUSID, PREFIX_NAME, PREFIX_TAG, PREFIX_PHONE, PREFIX_EMAIL)","lastModifiedDate":"2024-03-12"},{"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":"Rikko1204"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NUSID, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_TAG);","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"Rikko1204"},"content":" NusId nusId \u003d ParserUtil.parseNusId(argMultimap.getValue(PREFIX_NUSID).get());","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":49,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":50,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":51,"author":{"gitId":"hjuntan"},"content":" Tag tag \u003d ParserUtil.parseTag(argMultimap.getValue(PREFIX_TAG).get());","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"Rikko1204"},"content":" Schedule schedule \u003d new Schedule(\"\");","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"Rikko1204"},"content":" Remark remark \u003d new Remark(\"\");","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"hjuntan"},"content":" Set\u003cGroup\u003e groupList \u003d ParserUtil.parseGroups(argMultimap.getAllValues(PREFIX_GROUP));","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":58,"author":{"gitId":"Rikko1204"},"content":" Person person \u003d new Person(nusId, name, phone, email, tag, groupList, schedule, remark);","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17"},{"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":"2017-03-17"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17"},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":67,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17"},{"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":{"Rikko1204":12,"hjuntan":6,"-":53}},{"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":"Ragnapop"},"content":"import seedu.address.logic.commands.GroupCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":20,"author":{"gitId":"Rikko1204"},"content":"import seedu.address.logic.commands.ScheduleCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"hjuntan"},"content":"import seedu.address.logic.commands.ViewCommand;","lastModifiedDate":"2024-03-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":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":73,"author":{"gitId":"Ragnapop"},"content":" case GroupCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-13"},{"lineNumber":74,"author":{"gitId":"Ragnapop"},"content":" return new GroupCommandParser().parse(arguments);","lastModifiedDate":"2024-03-13"},{"lineNumber":75,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":76,"author":{"gitId":"hjuntan"},"content":" case ViewCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"hjuntan"},"content":" return new ViewCommand();","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":85,"author":{"gitId":"Rikko1204"},"content":" case ScheduleCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"Rikko1204"},"content":" return new ScheduleCommandParser().parse(arguments);","lastModifiedDate":"2024-03-16"},{"lineNumber":87,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"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":{"Rikko1204":4,"Ragnapop":4,"hjuntan":3,"-":83}},{"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":"RingoftheKing"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-07-14"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-03-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Stores mapping of prefixes to their respective arguments.","lastModifiedDate":"2017-03-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Each key may be associated with multiple argument values.","lastModifiedDate":"2017-03-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Values for a given key are stored in a list, and the insertion ordering is maintained.","lastModifiedDate":"2017-03-08"},{"lineNumber":18,"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":19,"author":{"gitId":"-"},"content":" * can be inserted multiple times for the same prefix.","lastModifiedDate":"2017-03-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class ArgumentMultimap {","lastModifiedDate":"2017-03-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /** Prefixes mapped to their respective arguments**/","lastModifiedDate":"2017-03-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final Map\u003cPrefix, List\u003cString\u003e\u003e argMultimap \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2017-03-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Associates the specified argument value with {@code prefix} key in this map.","lastModifiedDate":"2017-03-08"},{"lineNumber":28,"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":29,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @param prefix Prefix key with which the specified argument value is to be associated","lastModifiedDate":"2017-03-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * @param argValue Argument value to be associated with the specified prefix key","lastModifiedDate":"2017-03-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void put(Prefix prefix, String argValue) {","lastModifiedDate":"2017-03-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" List\u003cString\u003e argValues \u003d getAllValues(prefix);","lastModifiedDate":"2017-03-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" argValues.add(argValue);","lastModifiedDate":"2017-03-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" argMultimap.put(prefix, argValues);","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":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Returns the last value of {@code prefix}.","lastModifiedDate":"2017-03-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public Optional\u003cString\u003e getValue(Prefix prefix) {","lastModifiedDate":"2017-03-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" List\u003cString\u003e values \u003d getAllValues(prefix);","lastModifiedDate":"2017-03-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return values.isEmpty() ? Optional.empty() : Optional.of(values.get(values.size() - 1));","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":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Returns all values of {@code prefix}.","lastModifiedDate":"2017-03-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * If the prefix does not exist or has no values, this will return an empty list.","lastModifiedDate":"2017-03-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Modifying the returned list will not affect the underlying data structure of the ArgumentMultimap.","lastModifiedDate":"2017-03-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public List\u003cString\u003e getAllValues(Prefix prefix) {","lastModifiedDate":"2017-03-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" if (!argMultimap.containsKey(prefix)) {","lastModifiedDate":"2017-03-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e();","lastModifiedDate":"2017-03-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(argMultimap.get(prefix));","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":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Returns the preamble (text before the first valid prefix). Trims any leading/trailing spaces.","lastModifiedDate":"2017-03-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public String getPreamble() {","lastModifiedDate":"2017-03-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return getValue(new Prefix(\"\")).orElse(\"\");","lastModifiedDate":"2017-03-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * Throws a {@code ParseException} if any of the prefixes given in {@code prefixes} appeared more than","lastModifiedDate":"2023-07-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * once among the arguments.","lastModifiedDate":"2023-07-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void verifyNoDuplicatePrefixesFor(Prefix... prefixes) throws ParseException {","lastModifiedDate":"2023-07-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":" Prefix[] duplicatedPrefixes \u003d Stream.of(prefixes).distinct()","lastModifiedDate":"2023-07-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":" .filter(prefix -\u003e argMultimap.containsKey(prefix) \u0026\u0026 argMultimap.get(prefix).size() \u003e 1)","lastModifiedDate":"2023-07-14"},{"lineNumber":73,"author":{"gitId":"-"},"content":" .toArray(Prefix[]::new);","lastModifiedDate":"2023-07-14"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":" if (duplicatedPrefixes.length \u003e 0) {","lastModifiedDate":"2023-07-14"},{"lineNumber":76,"author":{"gitId":"-"},"content":" throw new ParseException(Messages.getErrorMessageForDuplicatePrefixes(duplicatedPrefixes));","lastModifiedDate":"2023-07-14"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":79,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"RingoftheKing"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"RingoftheKing"},"content":" * Throws a {@code ParseException} if none of the {@code prefixes} to be checked against has appeared","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"RingoftheKing"},"content":" * in the arguments","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"RingoftheKing"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"RingoftheKing"},"content":" public void verifyAtLeastOnePrefixExists(Prefix... prefixes) throws ParseException {","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"RingoftheKing"},"content":" Prefix[] identifiedPrefixes \u003d Stream.of(prefixes)","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"RingoftheKing"},"content":" .filter(argMultimap::containsKey)","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"RingoftheKing"},"content":" .toArray(Prefix[]::new);","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"RingoftheKing"},"content":" if (identifiedPrefixes.length \u003d\u003d 0) {","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"RingoftheKing"},"content":" throw new ParseException(Messages.MESSAGE_AT_LEAST_ONE_FIELD_REQUIRED + FindCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-19"},{"lineNumber":91,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":92,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-08"}],"authorContributionMap":{"RingoftheKing":15,"-":78}},{"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":"-"},"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":"RingoftheKing"},"content":" .flatMap(","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"RingoftheKing"},"content":" prefix -\u003e findPrefixPositions(argsString, prefix).stream())","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":" * {@see findAllPrefixPositions}","lastModifiedDate":"2017-03-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":48,"author":{"gitId":"-"},"content":" private static List\u003cPrefixPosition\u003e findPrefixPositions(String argsString, Prefix prefix) {","lastModifiedDate":"2017-03-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" List\u003cPrefixPosition\u003e positions \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2016-10-16"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":51,"author":{"gitId":"-"},"content":" int prefixPosition \u003d findPrefixPosition(argsString, prefix.getPrefix(), 0);","lastModifiedDate":"2017-05-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" while (prefixPosition !\u003d -1) {","lastModifiedDate":"2017-05-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" PrefixPosition extendedPrefix \u003d new PrefixPosition(prefix, prefixPosition);","lastModifiedDate":"2017-05-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" positions.add(extendedPrefix);","lastModifiedDate":"2016-10-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" prefixPosition \u003d findPrefixPosition(argsString, prefix.getPrefix(), prefixPosition);","lastModifiedDate":"2017-05-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return positions;","lastModifiedDate":"2016-10-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Returns the index of the first occurrence of {@code prefix} in","lastModifiedDate":"2017-05-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * {@code argsString} starting from index {@code fromIndex}. An occurrence","lastModifiedDate":"2017-05-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * is valid if there is a whitespace before {@code prefix}. Returns -1 if no","lastModifiedDate":"2017-05-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * such occurrence can be found.","lastModifiedDate":"2017-05-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * E.g if {@code argsString} \u003d \"e/hip/900\", {@code prefix} \u003d \"p/\" and","lastModifiedDate":"2017-05-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * {@code fromIndex} \u003d 0, this method returns -1 as there are no valid","lastModifiedDate":"2017-05-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * occurrences of \"p/\" with whitespace before it. However, if","lastModifiedDate":"2017-05-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * {@code argsString} \u003d \"e/hi p/900\", {@code prefix} \u003d \"p/\" and","lastModifiedDate":"2017-05-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * {@code fromIndex} \u003d 0, this method returns 5.","lastModifiedDate":"2017-05-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" private static int findPrefixPosition(String argsString, String prefix, int fromIndex) {","lastModifiedDate":"2017-05-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" int prefixIndex \u003d argsString.indexOf(\" \" + prefix, fromIndex);","lastModifiedDate":"2017-05-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return prefixIndex \u003d\u003d -1 ? -1","lastModifiedDate":"2017-05-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" : prefixIndex + 1; // +1 as offset for whitespace","lastModifiedDate":"2017-05-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Extracts prefixes and their argument values, and returns an {@code ArgumentMultimap} object that maps the","lastModifiedDate":"2017-03-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * extracted prefixes to their respective arguments. Prefixes are extracted based on their zero-based positions in","lastModifiedDate":"2017-03-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * {@code argsString}.","lastModifiedDate":"2017-03-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * @param argsString Arguments string of the form: {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2017-03-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * @param prefixPositions Zero-based positions of all prefixes in {@code argsString}","lastModifiedDate":"2017-03-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * @return ArgumentMultimap object that maps prefixes to their arguments","lastModifiedDate":"2017-03-08"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":88,"author":{"gitId":"-"},"content":" private static ArgumentMultimap extractArguments(String argsString, List\u003cPrefixPosition\u003e prefixPositions) {","lastModifiedDate":"2017-03-20"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":90,"author":{"gitId":"-"},"content":" // Sort by start position","lastModifiedDate":"2016-10-16"},{"lineNumber":91,"author":{"gitId":"-"},"content":" prefixPositions.sort((prefix1, prefix2) -\u003e prefix1.getStartPosition() - prefix2.getStartPosition());","lastModifiedDate":"2016-10-16"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":93,"author":{"gitId":"-"},"content":" // Insert a PrefixPosition to represent the preamble","lastModifiedDate":"2016-10-16"},{"lineNumber":94,"author":{"gitId":"-"},"content":" PrefixPosition preambleMarker \u003d new PrefixPosition(new Prefix(\"\"), 0);","lastModifiedDate":"2016-10-16"},{"lineNumber":95,"author":{"gitId":"-"},"content":" prefixPositions.add(0, preambleMarker);","lastModifiedDate":"2016-10-16"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":97,"author":{"gitId":"-"},"content":" // Add a dummy PrefixPosition to represent the end of the string","lastModifiedDate":"2016-10-16"},{"lineNumber":98,"author":{"gitId":"-"},"content":" PrefixPosition endPositionMarker \u003d new PrefixPosition(new Prefix(\"\"), argsString.length());","lastModifiedDate":"2016-10-16"},{"lineNumber":99,"author":{"gitId":"-"},"content":" prefixPositions.add(endPositionMarker);","lastModifiedDate":"2016-10-16"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":101,"author":{"gitId":"-"},"content":" // Map prefixes to their argument values (if any)","lastModifiedDate":"2017-03-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d new ArgumentMultimap();","lastModifiedDate":"2017-03-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" for (int i \u003d 0; i \u003c prefixPositions.size() - 1; i++) {","lastModifiedDate":"2016-10-16"},{"lineNumber":104,"author":{"gitId":"-"},"content":" // Extract and store prefixes and their arguments","lastModifiedDate":"2017-03-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Prefix argPrefix \u003d prefixPositions.get(i).getPrefix();","lastModifiedDate":"2017-03-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":" String argValue \u003d extractArgumentValue(argsString, prefixPositions.get(i), prefixPositions.get(i + 1));","lastModifiedDate":"2016-10-16"},{"lineNumber":107,"author":{"gitId":"-"},"content":" argMultimap.put(argPrefix, argValue);","lastModifiedDate":"2017-03-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":110,"author":{"gitId":"-"},"content":" return argMultimap;","lastModifiedDate":"2017-03-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":113,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * Returns the trimmed value of the argument in the arguments string specified by {@code currentPrefixPosition}.","lastModifiedDate":"2017-03-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * The end position of the value is determined by {@code nextPrefixPosition}.","lastModifiedDate":"2017-03-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":117,"author":{"gitId":"-"},"content":" private static String extractArgumentValue(String argsString,","lastModifiedDate":"2017-03-20"},{"lineNumber":118,"author":{"gitId":"-"},"content":" PrefixPosition currentPrefixPosition,","lastModifiedDate":"2016-10-16"},{"lineNumber":119,"author":{"gitId":"-"},"content":" PrefixPosition nextPrefixPosition) {","lastModifiedDate":"2016-10-16"},{"lineNumber":120,"author":{"gitId":"-"},"content":" Prefix prefix \u003d currentPrefixPosition.getPrefix();","lastModifiedDate":"2016-10-16"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":122,"author":{"gitId":"-"},"content":" int valueStartPos \u003d currentPrefixPosition.getStartPosition() + prefix.getPrefix().length();","lastModifiedDate":"2016-10-16"},{"lineNumber":123,"author":{"gitId":"-"},"content":" String value \u003d argsString.substring(valueStartPos, nextPrefixPosition.getStartPosition());","lastModifiedDate":"2016-10-16"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16"},{"lineNumber":125,"author":{"gitId":"-"},"content":" return value.trim();","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":" /**","lastModifiedDate":"2016-10-16"},{"lineNumber":129,"author":{"gitId":"-"},"content":" * Represents a prefix\u0027s position in an arguments string.","lastModifiedDate":"2017-03-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":131,"author":{"gitId":"-"},"content":" private static class PrefixPosition {","lastModifiedDate":"2017-03-20"},{"lineNumber":132,"author":{"gitId":"-"},"content":" private int startPosition;","lastModifiedDate":"2016-10-19"},{"lineNumber":133,"author":{"gitId":"-"},"content":" private final Prefix prefix;","lastModifiedDate":"2016-10-19"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":135,"author":{"gitId":"-"},"content":" PrefixPosition(Prefix prefix, int startPosition) {","lastModifiedDate":"2016-10-19"},{"lineNumber":136,"author":{"gitId":"-"},"content":" this.prefix \u003d prefix;","lastModifiedDate":"2016-10-19"},{"lineNumber":137,"author":{"gitId":"-"},"content":" this.startPosition \u003d startPosition;","lastModifiedDate":"2016-10-19"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":140,"author":{"gitId":"-"},"content":" int getStartPosition() {","lastModifiedDate":"2016-10-19"},{"lineNumber":141,"author":{"gitId":"-"},"content":" return startPosition;","lastModifiedDate":"2018-08-14"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":144,"author":{"gitId":"-"},"content":" Prefix getPrefix() {","lastModifiedDate":"2016-10-19"},{"lineNumber":145,"author":{"gitId":"-"},"content":" return prefix;","lastModifiedDate":"2018-08-14"},{"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-19"},{"lineNumber":149,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-16"}],"authorContributionMap":{"RingoftheKing":2,"-":147}},{"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":"Rikko1204"},"content":" public static final Prefix PREFIX_NUSID \u003d new Prefix(\"id/\");","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"hjuntan"},"content":" public static final Prefix PREFIX_GROUP \u003d new Prefix(\"g/\");","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"Rikko1204"},"content":" public static final Prefix PREFIX_SCHEDULE \u003d new Prefix(\"s/\");","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"Rikko1204"},"content":" public static final Prefix PREFIX_REMARK \u003d new Prefix(\"r/\");","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"Rikko1204":3,"hjuntan":1,"-":15}},{"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.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":"cheahTJ"},"content":"import seedu.address.model.person.NusId;","lastModifiedDate":"2024-03-13"},{"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":"-"},"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":"2017-03-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":21,"author":{"gitId":"cheahTJ"},"content":" NusId nusId \u003d ParserUtil.parseNusId(args);","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"cheahTJ"},"content":" return new DeleteCommand(nusId);","lastModifiedDate":"2024-03-13"},{"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":{"cheahTJ":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":"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":"hjuntan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GROUP;","lastModifiedDate":"2024-03-11"},{"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":"2024-03-11"},{"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.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-01-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":19,"author":{"gitId":"hjuntan"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"cheahTJ"},"content":"import seedu.address.model.person.NusId;","lastModifiedDate":"2024-03-19"},{"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":"hjuntan"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_TAG, PREFIX_GROUP);","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":37,"author":{"gitId":"cheahTJ"},"content":" //Index index;","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"cheahTJ"},"content":" NusId nusId;","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":41,"author":{"gitId":"cheahTJ"},"content":" nusId \u003d ParserUtil.parseNusId(argMultimap.getPreamble());","lastModifiedDate":"2024-03-19"},{"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":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"hjuntan"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_TAG);","lastModifiedDate":"2024-03-11"},{"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":"hjuntan"},"content":" if (argMultimap.getValue(PREFIX_TAG).isPresent()) {","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"hjuntan"},"content":" editPersonDescriptor.setTag(ParserUtil.parseTag(argMultimap.getValue(PREFIX_TAG).get()));","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":63,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":64,"author":{"gitId":"hjuntan"},"content":" parseGroupsForEdit(argMultimap.getAllValues(PREFIX_GROUP)).ifPresent(editPersonDescriptor::setGroups);","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":70,"author":{"gitId":"cheahTJ"},"content":" return new EditCommand(nusId, editPersonDescriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":74,"author":{"gitId":"hjuntan"},"content":" * Parses {@code Collection\u003cString\u003e groups} into a {@code Set\u003cGroup\u003e} if {@code groups} is non-empty.","lastModifiedDate":"2024-03-11"},{"lineNumber":75,"author":{"gitId":"hjuntan"},"content":" * If {@code groups} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2024-03-11"},{"lineNumber":76,"author":{"gitId":"hjuntan"},"content":" * {@code Set\u003cGroup\u003e} containing zero groups.","lastModifiedDate":"2024-03-11"},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":78,"author":{"gitId":"hjuntan"},"content":" private Optional\u003cSet\u003cGroup\u003e\u003e parseGroupsForEdit(Collection\u003cString\u003e groups) throws ParseException {","lastModifiedDate":"2024-03-11"},{"lineNumber":79,"author":{"gitId":"hjuntan"},"content":" assert groups !\u003d null;","lastModifiedDate":"2024-03-11"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":81,"author":{"gitId":"hjuntan"},"content":" if (groups.isEmpty()) {","lastModifiedDate":"2024-03-11"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":84,"author":{"gitId":"hjuntan"},"content":" Collection\u003cString\u003e groupSet \u003d groups.size() \u003d\u003d 1 \u0026\u0026 groups.contains(\"\") ? Collections.emptySet() : groups;","lastModifiedDate":"2024-03-11"},{"lineNumber":85,"author":{"gitId":"hjuntan"},"content":" return Optional.of(ParserUtil.parseGroups(groupSet));","lastModifiedDate":"2024-03-11"},{"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"}],"authorContributionMap":{"cheahTJ":6,"Ragnapop":1,"hjuntan":15,"-":66}},{"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":"RingoftheKing"},"content":"import static seedu.address.logic.commands.FindCommand.NOT_REQUIRED_VALUE;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"RingoftheKing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"RingoftheKing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GROUP;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"RingoftheKing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"RingoftheKing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"RingoftheKing"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-01-26"},{"lineNumber":11,"author":{"gitId":"RingoftheKing"},"content":"import java.util.List;","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":15,"author":{"gitId":"RingoftheKing"},"content":"import seedu.address.model.person.EmailMatchesPredicate;","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"RingoftheKing"},"content":"import seedu.address.model.person.GroupMatchesPredicate;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"RingoftheKing"},"content":"import seedu.address.model.person.PhoneMatchesPredicate;","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"RingoftheKing"},"content":"import seedu.address.model.person.TagMatchesPredicate;","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new FindCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class FindCommandParser implements Parser\u003cFindCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the FindCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * and returns a FindCommand object for execution.","lastModifiedDate":"2019-05-11"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public FindCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":32,"author":{"gitId":"RingoftheKing"},"content":" ArgumentMultimap argumentMultimap \u003d","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"RingoftheKing"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_TAG, PREFIX_GROUP);","lastModifiedDate":"2024-03-15"},{"lineNumber":34,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"RingoftheKing"},"content":" argumentMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_TAG);","lastModifiedDate":"2024-03-15"},{"lineNumber":36,"author":{"gitId":"RingoftheKing"},"content":" argumentMultimap.verifyAtLeastOnePrefixExists(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_TAG,","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"RingoftheKing"},"content":" PREFIX_GROUP);","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"RingoftheKing"},"content":" // Problems: Can\u0027t create Objects unless proper regex used.","lastModifiedDate":"2024-03-15"},{"lineNumber":39,"author":{"gitId":"RingoftheKing"},"content":" // Solution: Don\u0027t create objects","lastModifiedDate":"2024-03-15"},{"lineNumber":40,"author":{"gitId":"RingoftheKing"},"content":" String nameToMatch \u003d argumentMultimap.getValue(PREFIX_NAME).orElse(NOT_REQUIRED_VALUE);","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"RingoftheKing"},"content":" String phoneToMatch \u003d argumentMultimap.getValue(PREFIX_PHONE).orElse(NOT_REQUIRED_VALUE);","lastModifiedDate":"2024-03-15"},{"lineNumber":42,"author":{"gitId":"RingoftheKing"},"content":" String emailToMatch \u003d argumentMultimap.getValue(PREFIX_EMAIL).orElse(NOT_REQUIRED_VALUE);","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"RingoftheKing"},"content":" String tagToMatch \u003d argumentMultimap.getValue(PREFIX_TAG).orElse(NOT_REQUIRED_VALUE);","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"RingoftheKing"},"content":" List\u003cString\u003e groupToMatch \u003d argumentMultimap.getAllValues(PREFIX_GROUP);","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":47,"author":{"gitId":"RingoftheKing"},"content":" String[] nameKeywords \u003d nameToMatch.split(\"\\\\s+\");","lastModifiedDate":"2024-03-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":49,"author":{"gitId":"RingoftheKing"},"content":" return new FindCommand(new NameContainsKeywordsPredicate(Arrays.asList(nameKeywords)),","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"RingoftheKing"},"content":" new EmailMatchesPredicate(emailToMatch),","lastModifiedDate":"2024-03-15"},{"lineNumber":51,"author":{"gitId":"RingoftheKing"},"content":" new GroupMatchesPredicate(groupToMatch),","lastModifiedDate":"2024-03-15"},{"lineNumber":52,"author":{"gitId":"RingoftheKing"},"content":" new PhoneMatchesPredicate(phoneToMatch),","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"RingoftheKing"},"content":" new TagMatchesPredicate(tagToMatch));","lastModifiedDate":"2024-03-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"RingoftheKing":31,"-":25}},{"path":"src/main/java/seedu/address/logic/parser/GroupCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Ragnapop"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"Ragnapop"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"Ragnapop"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"Ragnapop"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GROUP;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"Ragnapop"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NUSID;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"Ragnapop"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"Ragnapop"},"content":"import java.util.Collection;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"Ragnapop"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"Ragnapop"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"Ragnapop"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"Ragnapop"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"Ragnapop"},"content":"import seedu.address.logic.commands.GroupCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"Ragnapop"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"Ragnapop"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"Ragnapop"},"content":"import seedu.address.model.person.NusId;","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"Ragnapop"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"Ragnapop"},"content":" * Parses input arguments and creates a new GroupCommand object","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"Ragnapop"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"Ragnapop"},"content":"public class GroupCommandParser implements Parser\u003cGroupCommand\u003e {","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"Ragnapop"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"Ragnapop"},"content":" * Parses the given {@code String} of arguments in the context of the GroupCommand","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"Ragnapop"},"content":" * and returns an GroupCommand object for execution.","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"Ragnapop"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"Ragnapop"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"Ragnapop"},"content":" public GroupCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"Ragnapop"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"Ragnapop"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"Ragnapop"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NUSID, PREFIX_GROUP, PREFIX_TAG);","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"Ragnapop"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NUSID)","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"Ragnapop"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"Ragnapop"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, GroupCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"Ragnapop"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NUSID, PREFIX_GROUP, PREFIX_TAG);","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"Ragnapop"},"content":" NusId nusid \u003d ParserUtil.parseNusId(argMultimap.getValue(PREFIX_NUSID).get());","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"Ragnapop"},"content":" GroupCommand.GroupPersonDescriptor groupPersonDescriptor \u003d new GroupCommand.GroupPersonDescriptor();","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"Ragnapop"},"content":" if (argMultimap.getValue(PREFIX_NUSID).isPresent()) {","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"Ragnapop"},"content":" groupPersonDescriptor.setNusId(ParserUtil.parseNusId(argMultimap.getValue(PREFIX_NUSID).get()));","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"Ragnapop"},"content":" if (argMultimap.getValue(PREFIX_TAG).isPresent()) {","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"Ragnapop"},"content":" groupPersonDescriptor.setTag(ParserUtil.parseTag(argMultimap.getValue(PREFIX_TAG).get()));","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":56,"author":{"gitId":"Ragnapop"},"content":" parseGroupsForGroup(argMultimap.getAllValues(PREFIX_GROUP)).ifPresent(groupPersonDescriptor::setGroups);","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"Ragnapop"},"content":" return new GroupCommand(nusid, groupPersonDescriptor);","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":60,"author":{"gitId":"Ragnapop"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-03-13"},{"lineNumber":61,"author":{"gitId":"Ragnapop"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-03-13"},{"lineNumber":62,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":63,"author":{"gitId":"Ragnapop"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":64,"author":{"gitId":"Ragnapop"},"content":" * Parses {@code Collection\u003cString\u003e groups} into a {@code Set\u003cGroup\u003e} if {@code groups} is non-empty.","lastModifiedDate":"2024-03-13"},{"lineNumber":65,"author":{"gitId":"Ragnapop"},"content":" * If {@code groups} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2024-03-13"},{"lineNumber":66,"author":{"gitId":"Ragnapop"},"content":" * {@code Set\u003cGroup\u003e} containing zero groups.","lastModifiedDate":"2024-03-13"},{"lineNumber":67,"author":{"gitId":"Ragnapop"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":68,"author":{"gitId":"Ragnapop"},"content":" private Optional\u003cSet\u003cGroup\u003e\u003e parseGroupsForGroup(Collection\u003cString\u003e groups) throws ParseException {","lastModifiedDate":"2024-03-13"},{"lineNumber":69,"author":{"gitId":"Ragnapop"},"content":" assert groups !\u003d null;","lastModifiedDate":"2024-03-13"},{"lineNumber":70,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"Ragnapop"},"content":" if (groups.isEmpty()) {","lastModifiedDate":"2024-03-13"},{"lineNumber":72,"author":{"gitId":"Ragnapop"},"content":" return Optional.empty();","lastModifiedDate":"2024-03-13"},{"lineNumber":73,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":74,"author":{"gitId":"Ragnapop"},"content":" Collection\u003cString\u003e groupSet \u003d groups.size() \u003d\u003d 1 \u0026\u0026 groups.contains(\"\") ? Collections.emptySet() : groups;","lastModifiedDate":"2024-03-13"},{"lineNumber":75,"author":{"gitId":"Ragnapop"},"content":" return Optional.of(ParserUtil.parseGroups(groupSet));","lastModifiedDate":"2024-03-13"},{"lineNumber":76,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":77,"author":{"gitId":"Ragnapop"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"Ragnapop":77}},{"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":"hjuntan"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11"},{"lineNumber":15,"author":{"gitId":"Rikko1204"},"content":"import seedu.address.model.person.NusId;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-02-11"},{"lineNumber":17,"author":{"gitId":"Rikko1204"},"content":"import seedu.address.model.person.Schedule;","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"hjuntan"},"content":"import seedu.address.model.person.Tag;","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":20,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02"},{"lineNumber":37,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":42,"author":{"gitId":"Rikko1204"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"Rikko1204"},"content":" * Parses a {@code String nusId} into a {@code NusId}.","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"Rikko1204"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"Rikko1204"},"content":" *","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"Rikko1204"},"content":" * @throws ParseException if the given {@code nusId} is invalid.","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"Rikko1204"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"Rikko1204"},"content":" public static NusId parseNusId(String nusId) throws ParseException {","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"Rikko1204"},"content":" requireNonNull(nusId);","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"Rikko1204"},"content":" String trimmedNusId \u003d nusId.trim();","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"Rikko1204"},"content":" if (!NusId.isValidNusId(trimmedNusId)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"Rikko1204"},"content":" throw new ParseException(NusId.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"Rikko1204"},"content":" return new NusId(trimmedNusId);","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":64,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29"},{"lineNumber":65,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29"},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":67,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":75,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":79,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30"},{"lineNumber":80,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":81,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":82,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":88,"author":{"gitId":"hjuntan"},"content":" * Parses a {@code String tag} into an {@code Tag}.","lastModifiedDate":"2024-03-11"},{"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":"hjuntan"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2024-03-11"},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":93,"author":{"gitId":"hjuntan"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2024-03-11"},{"lineNumber":94,"author":{"gitId":"hjuntan"},"content":" requireNonNull(tag);","lastModifiedDate":"2024-03-11"},{"lineNumber":95,"author":{"gitId":"hjuntan"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2024-03-11"},{"lineNumber":96,"author":{"gitId":"hjuntan"},"content":" if (!Tag.isValidTag(trimmedTag)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":97,"author":{"gitId":"hjuntan"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-11"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":99,"author":{"gitId":"hjuntan"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2024-03-11"},{"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 email} into an {@code Email}.","lastModifiedDate":"2017-05-30"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":105,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":107,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":109,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":110,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":111,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":112,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":114,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","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":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":118,"author":{"gitId":"hjuntan"},"content":" * Parses a {@code String group} into a {@code Group}.","lastModifiedDate":"2024-03-11"},{"lineNumber":119,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":120,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":121,"author":{"gitId":"hjuntan"},"content":" * @throws ParseException if the given {@code group} is invalid.","lastModifiedDate":"2024-03-11"},{"lineNumber":122,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":123,"author":{"gitId":"hjuntan"},"content":" public static Group parseGroup(String group) throws ParseException {","lastModifiedDate":"2024-03-11"},{"lineNumber":124,"author":{"gitId":"hjuntan"},"content":" requireNonNull(group);","lastModifiedDate":"2024-03-11"},{"lineNumber":125,"author":{"gitId":"hjuntan"},"content":" String trimmedGroup \u003d group.trim();","lastModifiedDate":"2024-03-11"},{"lineNumber":126,"author":{"gitId":"hjuntan"},"content":" if (!Group.isValidGroupName(trimmedGroup)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":127,"author":{"gitId":"hjuntan"},"content":" throw new ParseException(Group.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-11"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":129,"author":{"gitId":"hjuntan"},"content":" return new Group(trimmedGroup);","lastModifiedDate":"2024-03-11"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":133,"author":{"gitId":"hjuntan"},"content":" * Parses {@code Collection\u003cString\u003e groups} into a {@code Set\u003cGroup\u003e}.","lastModifiedDate":"2024-03-11"},{"lineNumber":134,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":135,"author":{"gitId":"hjuntan"},"content":" public static Set\u003cGroup\u003e parseGroups(Collection\u003cString\u003e groups) throws ParseException {","lastModifiedDate":"2024-03-11"},{"lineNumber":136,"author":{"gitId":"hjuntan"},"content":" requireNonNull(groups);","lastModifiedDate":"2024-03-11"},{"lineNumber":137,"author":{"gitId":"hjuntan"},"content":" final Set\u003cGroup\u003e groupSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-11"},{"lineNumber":138,"author":{"gitId":"hjuntan"},"content":" for (String groupName : groups) {","lastModifiedDate":"2024-03-11"},{"lineNumber":139,"author":{"gitId":"hjuntan"},"content":" groupSet.add(parseGroup(groupName));","lastModifiedDate":"2024-03-11"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":141,"author":{"gitId":"hjuntan"},"content":" return groupSet;","lastModifiedDate":"2024-03-11"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":143,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":144,"author":{"gitId":"Rikko1204"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":145,"author":{"gitId":"Rikko1204"},"content":" * Parses a {@code String schedule} into a {@code Schedule}.","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"Rikko1204"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":147,"author":{"gitId":"Rikko1204"},"content":" * @throws ParseException if the given {@code schedule} is invalid.","lastModifiedDate":"2024-03-17"},{"lineNumber":148,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":149,"author":{"gitId":"Rikko1204"},"content":" public static Schedule parseSchedule(String schedule) throws ParseException {","lastModifiedDate":"2024-03-16"},{"lineNumber":150,"author":{"gitId":"Rikko1204"},"content":" if (schedule \u003d\u003d \"\") {","lastModifiedDate":"2024-03-16"},{"lineNumber":151,"author":{"gitId":"Rikko1204"},"content":" return new Schedule(schedule);","lastModifiedDate":"2024-03-16"},{"lineNumber":152,"author":{"gitId":"Rikko1204"},"content":" } else if (!Schedule.isValidSchedule(schedule)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":153,"author":{"gitId":"Rikko1204"},"content":" throw new ParseException(Schedule.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":154,"author":{"gitId":"Rikko1204"},"content":" } else {","lastModifiedDate":"2024-03-16"},{"lineNumber":155,"author":{"gitId":"Rikko1204"},"content":" return new Schedule(schedule);","lastModifiedDate":"2024-03-16"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":158,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"Rikko1204":29,"Ragnapop":1,"hjuntan":25,"-":103}},{"path":"src/main/java/seedu/address/logic/parser/ScheduleCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Rikko1204"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"Rikko1204"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NUSID;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SCHEDULE;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"Rikko1204"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"Rikko1204"},"content":"import seedu.address.logic.commands.ScheduleCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"Rikko1204"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"Rikko1204"},"content":"import seedu.address.model.person.NusId;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"Rikko1204"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"Rikko1204"},"content":"import seedu.address.model.person.Schedule;","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"Rikko1204"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"Rikko1204"},"content":" * Parses input arguments and creates a new ScheduleCommand object","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"Rikko1204"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"Rikko1204"},"content":"public class ScheduleCommandParser implements Parser\u003cScheduleCommand\u003e {","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"Rikko1204"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"Rikko1204"},"content":" * Parses the given {@code String} of arguments in the context of the ScheduleCommand","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"Rikko1204"},"content":" * and returns an ScheduleCommand object for execution.","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"Rikko1204"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"Rikko1204"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"Rikko1204"},"content":" public ScheduleCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"Rikko1204"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"Rikko1204"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args,","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"Rikko1204"},"content":" PREFIX_NUSID, PREFIX_SCHEDULE, PREFIX_REMARK);","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"Rikko1204"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NUSID)","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"Rikko1204"},"content":" || !argMultimap.getPreamble().isEmpty()","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"Rikko1204"},"content":" || (arePrefixesPresent(argMultimap, PREFIX_REMARK)","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"Rikko1204"},"content":" \u0026\u0026 !arePrefixesPresent(argMultimap, PREFIX_SCHEDULE))) {","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"Rikko1204"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, ScheduleCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"Rikko1204"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NUSID, PREFIX_SCHEDULE, PREFIX_REMARK);","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"Rikko1204"},"content":" NusId nusId \u003d ParserUtil.parseNusId(argMultimap.getValue(PREFIX_NUSID).get());","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"Rikko1204"},"content":" Schedule schedule \u003d ParserUtil.parseSchedule(argMultimap.getValue(PREFIX_SCHEDULE).orElse(\"\"));","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"Rikko1204"},"content":" String remark \u003d argMultimap.getValue(PREFIX_REMARK).orElse(\"\");","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"Rikko1204"},"content":" return new ScheduleCommand(nusId, schedule, new Remark(remark));","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"Rikko1204"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"Rikko1204"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"Rikko1204"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"Rikko1204":49}},{"path":"src/main/java/seedu/address/model/group/Group.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"hjuntan"},"content":"package seedu.address.model.group;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"hjuntan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"hjuntan"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"hjuntan"},"content":"/**","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"hjuntan"},"content":" * Represents a Group in the address book.","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"hjuntan"},"content":" * Guarantees: immutable; name is valid as declared in {@link #isValidGroupName(String)}","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"hjuntan"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"hjuntan"},"content":"public class Group {","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"Ragnapop"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Names should only contain alphanumeric characters and spaces,\"","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"Ragnapop"},"content":" + \" and it should not be blank\";","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"hjuntan"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\p{Alnum}+\";","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"hjuntan"},"content":" public final String groupName;","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"hjuntan"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"hjuntan"},"content":" * Constructs a {@code Group}.","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"hjuntan"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"hjuntan"},"content":" * @param groupName A valid group name.","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"hjuntan"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"hjuntan"},"content":" public Group(String groupName) {","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"hjuntan"},"content":" requireNonNull(groupName);","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"hjuntan"},"content":" checkArgument(isValidGroupName(groupName), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"hjuntan"},"content":" this.groupName \u003d groupName;","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"hjuntan"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"hjuntan"},"content":" * Returns true if a given string is a valid group name.","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"hjuntan"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"hjuntan"},"content":" public static boolean isValidGroupName(String test) {","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"hjuntan"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"hjuntan"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"hjuntan"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"hjuntan"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"hjuntan"},"content":" return true;","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"hjuntan"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"hjuntan"},"content":" if (!(other instanceof Group)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"hjuntan"},"content":" return false;","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"hjuntan"},"content":" Group otherGroup \u003d (Group) other;","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"hjuntan"},"content":" return groupName.equals(otherGroup.groupName);","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"hjuntan"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"hjuntan"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"hjuntan"},"content":" return groupName.hashCode();","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"hjuntan"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"hjuntan"},"content":" * Format state as text for viewing.","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"hjuntan"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"hjuntan"},"content":" public String toString() {","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"hjuntan"},"content":" return \u0027[\u0027 + groupName + \u0027]\u0027;","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"hjuntan"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"Ragnapop":2,"hjuntan":61}},{"path":"src/main/java/seedu/address/model/person/EmailMatchesPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"RingoftheKing"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"RingoftheKing"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"RingoftheKing"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"RingoftheKing"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"RingoftheKing"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"RingoftheKing"},"content":" * Tests that a {@code Person}\u0027s {@code Email} matches the keyword given","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"RingoftheKing"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"RingoftheKing"},"content":"public class EmailMatchesPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"RingoftheKing"},"content":" private final String keyword;","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"RingoftheKing"},"content":" public EmailMatchesPredicate(String keyword) {","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"RingoftheKing"},"content":" this.keyword \u003d keyword;","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"RingoftheKing"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"RingoftheKing"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"RingoftheKing"},"content":" if (keyword.equals(FindCommand.NOT_REQUIRED_VALUE)) {","lastModifiedDate":"2024-03-15"},{"lineNumber":21,"author":{"gitId":"RingoftheKing"},"content":" return true;","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"RingoftheKing"},"content":" } else {","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"RingoftheKing"},"content":" return person.getEmail().value.toLowerCase().contains(keyword.trim().toLowerCase());","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"RingoftheKing"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"RingoftheKing"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"RingoftheKing"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"RingoftheKing"},"content":" return true;","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"RingoftheKing"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"RingoftheKing"},"content":" if (!(other instanceof EmailMatchesPredicate)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"RingoftheKing"},"content":" return false;","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"RingoftheKing"},"content":" EmailMatchesPredicate e \u003d (EmailMatchesPredicate) other;","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"RingoftheKing"},"content":" return keyword.equals(e.keyword);","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"RingoftheKing"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"RingoftheKing"},"content":" public String toString() {","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"RingoftheKing"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"RingoftheKing"},"content":" .add(\"emailKeyword\", keyword)","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"RingoftheKing"},"content":" .toString();","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"RingoftheKing"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"RingoftheKing":48}},{"path":"src/main/java/seedu/address/model/person/GroupMatchesPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"RingoftheKing"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"RingoftheKing"},"content":"import java.util.List;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"RingoftheKing"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"RingoftheKing"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"RingoftheKing"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"RingoftheKing"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"RingoftheKing"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"RingoftheKing"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"RingoftheKing"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"RingoftheKing"},"content":" * Tests if a keyword matches any {@code Person}\u0027s {@code Groups}","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"RingoftheKing"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"RingoftheKing"},"content":"public class GroupMatchesPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"RingoftheKing"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"RingoftheKing"},"content":" public GroupMatchesPredicate(List\u003cString\u003e s) {","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"RingoftheKing"},"content":" keywords \u003d s;","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"RingoftheKing"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"RingoftheKing"},"content":" * Returns if the person is in ALL the groups provided","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"RingoftheKing"},"content":" * in the keywords based on an EXACT match.","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"RingoftheKing"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"RingoftheKing"},"content":" * @param person the person we are concerned with","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"RingoftheKing"},"content":" * @return if this person has the groups we are searching for","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"RingoftheKing"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"RingoftheKing"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"RingoftheKing"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"RingoftheKing"},"content":" // Empty set of keywords means we accept any person regardless of their group","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"RingoftheKing"},"content":" if (keywords.isEmpty() || keywords.contains(FindCommand.NOT_REQUIRED_VALUE)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"RingoftheKing"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"RingoftheKing"},"content":" Set\u003cGroup\u003e groups \u003d person.getGroups();","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"RingoftheKing"},"content":" Set\u003cString\u003e groupNames \u003d groups.stream().map(x -\u003e x.groupName).collect(Collectors.toSet());","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"RingoftheKing"},"content":" boolean containsAllKeywords \u003d true;","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"RingoftheKing"},"content":" for (String k : keywords) {","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"RingoftheKing"},"content":" if (!groupNames.contains(k)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"RingoftheKing"},"content":" containsAllKeywords \u003d false;","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"RingoftheKing"},"content":" break;","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"RingoftheKing"},"content":" return containsAllKeywords;","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"RingoftheKing"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"RingoftheKing"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"RingoftheKing"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"RingoftheKing"},"content":" return true;","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"RingoftheKing"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"RingoftheKing"},"content":" if (!(other instanceof GroupMatchesPredicate)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"RingoftheKing"},"content":" return false;","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"RingoftheKing"},"content":" GroupMatchesPredicate e \u003d (GroupMatchesPredicate) other;","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"RingoftheKing"},"content":" return keywords.equals(e.keywords);","lastModifiedDate":"2024-03-15"},{"lineNumber":63,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"RingoftheKing"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"RingoftheKing"},"content":" public String toString() {","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"RingoftheKing"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"RingoftheKing"},"content":" .add(\"groupKeywords\", keywords)","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"RingoftheKing"},"content":" .toString();","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"RingoftheKing"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"RingoftheKing":71}},{"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":"RingoftheKing"},"content":"import static seedu.address.logic.commands.FindCommand.NOT_REQUIRED_VALUE;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-06-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Tests that a {@code Person}\u0027s {@code Name} matches any of the keywords given.","lastModifiedDate":"2018-01-10"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class NameContainsKeywordsPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2018-01-10"},{"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":"-"},"content":" public NameContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2017-06-12"},{"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":"RingoftheKing"},"content":" if (keywords.contains(NOT_REQUIRED_VALUE)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"RingoftheKing"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"-"},"content":" return keywords.stream()","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" .anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(person.getName().fullName, keyword));","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-12"},{"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 NameContainsKeywordsPredicate)) {","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":" NameContainsKeywordsPredicate otherNameContainsKeywordsPredicate \u003d (NameContainsKeywordsPredicate) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return keywords.equals(otherNameContainsKeywordsPredicate.keywords);","lastModifiedDate":"2023-07-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"RingoftheKing"},"content":" return new ToStringBuilder(this).add(\"nameKeywords\", keywords).toString();","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"RingoftheKing":6,"-":43}},{"path":"src/main/java/seedu/address/model/person/NusId.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"cheahTJ"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-06"},{"lineNumber":2,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":3,"author":{"gitId":"cheahTJ"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-06"},{"lineNumber":4,"author":{"gitId":"cheahTJ"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-06"},{"lineNumber":5,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":6,"author":{"gitId":"cheahTJ"},"content":"/**","lastModifiedDate":"2024-03-06"},{"lineNumber":7,"author":{"gitId":"cheahTJ"},"content":" * Represents a Person\u0027s Nusid in the address book.","lastModifiedDate":"2024-03-06"},{"lineNumber":8,"author":{"gitId":"cheahTJ"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidNusId(String)}","lastModifiedDate":"2024-03-06"},{"lineNumber":9,"author":{"gitId":"cheahTJ"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":10,"author":{"gitId":"cheahTJ"},"content":"public class NusId {","lastModifiedDate":"2024-03-06"},{"lineNumber":11,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":12,"author":{"gitId":"cheahTJ"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"NusID is of the form EXXXXXXX, and it should not be blank\";","lastModifiedDate":"2024-03-06"},{"lineNumber":13,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":14,"author":{"gitId":"cheahTJ"},"content":" /*","lastModifiedDate":"2024-03-06"},{"lineNumber":15,"author":{"gitId":"cheahTJ"},"content":" * Ensures that the input nusid is of the form: EXXXXXXX","lastModifiedDate":"2024-03-06"},{"lineNumber":16,"author":{"gitId":"cheahTJ"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":17,"author":{"gitId":"hjuntan"},"content":" public static final String VALIDATION_REGEX \u003d \"^E\\\\d{7}\";","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":19,"author":{"gitId":"cheahTJ"},"content":" public final String value;","lastModifiedDate":"2024-03-06"},{"lineNumber":20,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":21,"author":{"gitId":"cheahTJ"},"content":" /**","lastModifiedDate":"2024-03-06"},{"lineNumber":22,"author":{"gitId":"cheahTJ"},"content":" * Constructs an {@code Nusid}.","lastModifiedDate":"2024-03-06"},{"lineNumber":23,"author":{"gitId":"cheahTJ"},"content":" *","lastModifiedDate":"2024-03-06"},{"lineNumber":24,"author":{"gitId":"cheahTJ"},"content":" * @param nusid A valid nusid.","lastModifiedDate":"2024-03-06"},{"lineNumber":25,"author":{"gitId":"cheahTJ"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":26,"author":{"gitId":"cheahTJ"},"content":" public NusId(String nusid) {","lastModifiedDate":"2024-03-06"},{"lineNumber":27,"author":{"gitId":"cheahTJ"},"content":" requireNonNull(nusid);","lastModifiedDate":"2024-03-06"},{"lineNumber":28,"author":{"gitId":"cheahTJ"},"content":" checkArgument(isValidNusId(nusid), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-06"},{"lineNumber":29,"author":{"gitId":"cheahTJ"},"content":" value \u003d nusid;","lastModifiedDate":"2024-03-06"},{"lineNumber":30,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":31,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":32,"author":{"gitId":"cheahTJ"},"content":" /**","lastModifiedDate":"2024-03-06"},{"lineNumber":33,"author":{"gitId":"cheahTJ"},"content":" * Returns true if a given string is a valid nusid.","lastModifiedDate":"2024-03-06"},{"lineNumber":34,"author":{"gitId":"cheahTJ"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":35,"author":{"gitId":"cheahTJ"},"content":" public static boolean isValidNusId(String test) {","lastModifiedDate":"2024-03-06"},{"lineNumber":36,"author":{"gitId":"cheahTJ"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-06"},{"lineNumber":37,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":38,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":39,"author":{"gitId":"cheahTJ"},"content":" @Override","lastModifiedDate":"2024-03-06"},{"lineNumber":40,"author":{"gitId":"cheahTJ"},"content":" public String toString() {","lastModifiedDate":"2024-03-06"},{"lineNumber":41,"author":{"gitId":"cheahTJ"},"content":" return value;","lastModifiedDate":"2024-03-06"},{"lineNumber":42,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":43,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":44,"author":{"gitId":"cheahTJ"},"content":" @Override","lastModifiedDate":"2024-03-06"},{"lineNumber":45,"author":{"gitId":"cheahTJ"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-06"},{"lineNumber":46,"author":{"gitId":"cheahTJ"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-06"},{"lineNumber":47,"author":{"gitId":"cheahTJ"},"content":" return true;","lastModifiedDate":"2024-03-06"},{"lineNumber":48,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":49,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":50,"author":{"gitId":"cheahTJ"},"content":" if (!(other instanceof NusId)) {","lastModifiedDate":"2024-03-06"},{"lineNumber":51,"author":{"gitId":"cheahTJ"},"content":" return false;","lastModifiedDate":"2024-03-06"},{"lineNumber":52,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":53,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":54,"author":{"gitId":"cheahTJ"},"content":" NusId otherNusid \u003d (NusId) other;","lastModifiedDate":"2024-03-06"},{"lineNumber":55,"author":{"gitId":"cheahTJ"},"content":" return value.equals(otherNusid.value);","lastModifiedDate":"2024-03-06"},{"lineNumber":56,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":57,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":58,"author":{"gitId":"cheahTJ"},"content":" @Override","lastModifiedDate":"2024-03-06"},{"lineNumber":59,"author":{"gitId":"cheahTJ"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-06"},{"lineNumber":60,"author":{"gitId":"cheahTJ"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-06"},{"lineNumber":61,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":62,"author":{"gitId":"cheahTJ"},"content":"}","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"cheahTJ":61,"hjuntan":1}},{"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":"hjuntan"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-11"},{"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":"hjuntan"},"content":" private final NusId nusId;","lastModifiedDate":"2024-03-11"},{"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":"hjuntan"},"content":" private final Tag tag;","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"hjuntan"},"content":" private final Set\u003cGroup\u003e groups \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"Rikko1204"},"content":" private final Schedule schedule;","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"Rikko1204"},"content":" private final Remark remark;","lastModifiedDate":"2024-03-16"},{"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":"Rikko1204"},"content":" public Person(NusId nusId, Name name, Phone phone, Email email, Tag tag, Set\u003cGroup\u003e groups,","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"Rikko1204"},"content":" Schedule schedule, Remark remark) {","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"Rikko1204"},"content":" requireAllNonNull(nusId, name, phone, email, tag, groups, schedule, remark);","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"hjuntan"},"content":" this.nusId \u003d nusId;","lastModifiedDate":"2024-03-11"},{"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":"hjuntan"},"content":" this.tag \u003d tag;","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"hjuntan"},"content":" this.groups.addAll(groups);","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"Rikko1204"},"content":" this.schedule \u003d schedule;","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"Rikko1204"},"content":" this.remark \u003d remark;","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return email;","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":"hjuntan"},"content":" public Tag getTag() {","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"hjuntan"},"content":" return tag;","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":63,"author":{"gitId":"hjuntan"},"content":" public NusId getNusId() {","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"hjuntan"},"content":" return nusId;","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":66,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"Rikko1204"},"content":" public Schedule getSchedule() {","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"Rikko1204"},"content":" return schedule;","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"Rikko1204"},"content":" public Remark getRemark() {","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"Rikko1204"},"content":" return remark;","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07"},{"lineNumber":76,"author":{"gitId":"hjuntan"},"content":" * Returns an immutable group set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2024-03-11"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07"},{"lineNumber":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07"},{"lineNumber":79,"author":{"gitId":"hjuntan"},"content":" public Set\u003cGroup\u003e getGroups() {","lastModifiedDate":"2024-03-11"},{"lineNumber":80,"author":{"gitId":"hjuntan"},"content":" return Collections.unmodifiableSet(groups);","lastModifiedDate":"2024-03-11"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":84,"author":{"gitId":"Rikko1204"},"content":" * Returns true if both persons have the same nusId.","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19"},{"lineNumber":93,"author":{"gitId":"Rikko1204"},"content":" \u0026\u0026 otherPerson.getNusId().equals(getNusId());","lastModifiedDate":"2024-03-12"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","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":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":103,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":106,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10"},{"lineNumber":108,"author":{"gitId":"-"},"content":" return false;","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":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10"},{"lineNumber":112,"author":{"gitId":"Rikko1204"},"content":" // A person\u0027s identity does not depend on schedule or remark","lastModifiedDate":"2024-03-16"},{"lineNumber":113,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":114,"author":{"gitId":"Rikko1204"},"content":" \u0026\u0026 nusId.equals(otherPerson.nusId)","lastModifiedDate":"2024-03-12"},{"lineNumber":115,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":117,"author":{"gitId":"hjuntan"},"content":" \u0026\u0026 tag.equals(otherPerson.tag)","lastModifiedDate":"2024-03-11"},{"lineNumber":118,"author":{"gitId":"hjuntan"},"content":" \u0026\u0026 groups.equals(otherPerson.groups);","lastModifiedDate":"2024-03-11"},{"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 int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":123,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":124,"author":{"gitId":"Rikko1204"},"content":" return Objects.hash(nusId, name, phone, email, tag, groups, schedule, remark);","lastModifiedDate":"2024-03-16"},{"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 String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":129,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":130,"author":{"gitId":"hjuntan"},"content":" .add(\"nusId\", nusId)","lastModifiedDate":"2024-03-11"},{"lineNumber":131,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":134,"author":{"gitId":"hjuntan"},"content":" .add(\"tag\", tag)","lastModifiedDate":"2024-03-11"},{"lineNumber":135,"author":{"gitId":"hjuntan"},"content":" .add(\"groups\", groups)","lastModifiedDate":"2024-03-11"},{"lineNumber":136,"author":{"gitId":"Rikko1204"},"content":" .add(\"schedule\", schedule)","lastModifiedDate":"2024-03-16"},{"lineNumber":137,"author":{"gitId":"Rikko1204"},"content":" .add(\"remark\", remark)","lastModifiedDate":"2024-03-16"},{"lineNumber":138,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":141,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"Rikko1204":20,"hjuntan":21,"-":100}},{"path":"src/main/java/seedu/address/model/person/PhoneMatchesPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"RingoftheKing"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"RingoftheKing"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"RingoftheKing"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"RingoftheKing"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"RingoftheKing"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"RingoftheKing"},"content":" * Tests if a {@code Person}\u0027s {@code Phone} matches with the number given","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"RingoftheKing"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"RingoftheKing"},"content":"public class PhoneMatchesPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"RingoftheKing"},"content":" private final String numToMatch;","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"RingoftheKing"},"content":" public PhoneMatchesPredicate(String s) {","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"RingoftheKing"},"content":" numToMatch \u003d s;","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"RingoftheKing"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"RingoftheKing"},"content":" * Returns true if a person\u0027s {@code Phone} starts with or matches the given number.","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"RingoftheKing"},"content":" * False otherwise","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"RingoftheKing"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"RingoftheKing"},"content":" * @param person the person to check against","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"RingoftheKing"},"content":" * @return if a person\u0027s phone starts with or fully matches the given number","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"RingoftheKing"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"RingoftheKing"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"RingoftheKing"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"RingoftheKing"},"content":" if (numToMatch.equals(FindCommand.NOT_REQUIRED_VALUE)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"RingoftheKing"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"RingoftheKing"},"content":" } else {","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"RingoftheKing"},"content":" return person.getPhone().value.startsWith(numToMatch.trim());","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"RingoftheKing"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"RingoftheKing"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"RingoftheKing"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"RingoftheKing"},"content":" return true;","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"RingoftheKing"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"RingoftheKing"},"content":" if (!(other instanceof PhoneMatchesPredicate)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"RingoftheKing"},"content":" return false;","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"RingoftheKing"},"content":" PhoneMatchesPredicate predicate \u003d (PhoneMatchesPredicate) other;","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"RingoftheKing"},"content":" return numToMatch.equals(predicate.numToMatch);","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"RingoftheKing"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"RingoftheKing"},"content":" public String toString() {","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"RingoftheKing"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"RingoftheKing"},"content":" .add(\"phoneNumToMatch\", numToMatch)","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"RingoftheKing"},"content":" .toString();","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"RingoftheKing"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"RingoftheKing":55}},{"path":"src/main/java/seedu/address/model/person/Remark.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Rikko1204"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"Rikko1204"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"Rikko1204"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"Rikko1204"},"content":" * Represents a Person\u0027s remark in the address book.","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"Rikko1204"},"content":" * Guarantees: immutable; is always valid","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"Rikko1204"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"Rikko1204"},"content":"public class Remark {","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"Rikko1204"},"content":" public final String value;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"Rikko1204"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"Rikko1204"},"content":" * Create a Remark","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"Rikko1204"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"Rikko1204"},"content":" * @param remark to be added","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"Rikko1204"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"Rikko1204"},"content":" public Remark(String remark) {","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"Rikko1204"},"content":" requireNonNull(remark);","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"Rikko1204"},"content":" value \u003d remark;","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"Rikko1204"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"Rikko1204"},"content":" public String toString() {","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"Rikko1204"},"content":" return value;","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"Rikko1204"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"Rikko1204"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"Rikko1204"},"content":" return other \u003d\u003d this // short circuit if same object","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"Rikko1204"},"content":" || (other instanceof Remark // instanceof handles nulls","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"Rikko1204"},"content":" \u0026\u0026 value.equals(((Remark) other).value)); // state check","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"Rikko1204"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"Rikko1204"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"Rikko1204"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"Rikko1204"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"Rikko1204":39}},{"path":"src/main/java/seedu/address/model/person/Schedule.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Rikko1204"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"Rikko1204"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"Rikko1204"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"Rikko1204"},"content":" * Represents a Person\u0027s schedule in the address book with the user.","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"Rikko1204"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidSchedule(String)}","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"Rikko1204"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"Rikko1204"},"content":"public class Schedule {","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"Rikko1204"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"Rikko1204"},"content":" \"Schedule should contain only dates formatted as DD/MM/YYYY or DD-MM-YYYY\";","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"Rikko1204"},"content":" /*","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"Rikko1204"},"content":" * Date should be formatted as DD/MM/YYYY or DD-MM-YYYY","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"Rikko1204"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"hjuntan"},"content":" public static final String VALIDATION_REGEX_WITH_DATA \u003d","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"Rikko1204"},"content":" \"^([0]?[1-9]|[1|2][0-9]|[3][0|1])[./-]([0]?[1-9]|[1][0-2])[./-]([0-9]{4}|[0-9]{2})$\";","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"hjuntan"},"content":" public static final String VALIDATION_REGEX_WITHOUT_DATA \u003d \"^$\";","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"Rikko1204"},"content":" public final String date;","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"Rikko1204"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"Rikko1204"},"content":" * Constructs a {@code Date}.","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"Rikko1204"},"content":" *","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"Rikko1204"},"content":" * @param date A valid date.","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"Rikko1204"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"Rikko1204"},"content":" public Schedule(String date) {","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"Rikko1204"},"content":" requireNonNull(date);","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"Rikko1204"},"content":" if (date !\u003d \"\") {","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"Rikko1204"},"content":" checkArgument(isValidSchedule(date), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"Rikko1204"},"content":" this.date \u003d date;","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"Rikko1204"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"Rikko1204"},"content":" * Returns true if a given string is a valid date.","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"Rikko1204"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"Rikko1204"},"content":" public static boolean isValidSchedule(String test) {","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"hjuntan"},"content":" return test.matches(VALIDATION_REGEX_WITH_DATA) || test.matches(VALIDATION_REGEX_WITHOUT_DATA);","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"Rikko1204"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"Rikko1204"},"content":" public String toString() {","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"Rikko1204"},"content":" return date;","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"Rikko1204"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"Rikko1204"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"Rikko1204"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"Rikko1204"},"content":" return true;","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"Rikko1204"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"Rikko1204"},"content":" if (!(other instanceof Schedule)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"Rikko1204"},"content":" return false;","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"Rikko1204"},"content":" Schedule otherSchedule \u003d (Schedule) other;","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"Rikko1204"},"content":" return date.equals(otherSchedule.date);","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"Rikko1204"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"Rikko1204"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"Rikko1204"},"content":" return date.hashCode();","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"Rikko1204"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"Rikko1204":66,"hjuntan":4}},{"path":"src/main/java/seedu/address/model/person/Tag.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"hjuntan"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"hjuntan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"hjuntan"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"hjuntan"},"content":"/**","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"hjuntan"},"content":" * Represents a Person\u0027s tag in the address book.","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"hjuntan"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidTag(String)}","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"hjuntan"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"hjuntan"},"content":"public class Tag {","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"hjuntan"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"hjuntan"},"content":" * Represents the type of tag.","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"hjuntan"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"hjuntan"},"content":" public enum TagType {","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"hjuntan"},"content":" Professor, TA, Student, None;","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"hjuntan"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"hjuntan"},"content":" * Returns the string representation of the tag type.","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"hjuntan"},"content":" * @param tagType","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"hjuntan"},"content":" * @return","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"hjuntan"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"hjuntan"},"content":" public static String toString(TagType tagType) {","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"hjuntan"},"content":" switch (tagType) {","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"hjuntan"},"content":" case Professor:","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"hjuntan"},"content":" return \"Professor\";","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"hjuntan"},"content":" case TA:","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"hjuntan"},"content":" return \"TA\";","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"hjuntan"},"content":" case Student:","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"hjuntan"},"content":" return \"Student\";","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"hjuntan"},"content":" default:","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"hjuntan"},"content":" return \"None\";","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"hjuntan"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Tag can only these values: Professor, TA, Student, None\";","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"hjuntan"},"content":" public final TagType value;","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"hjuntan"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"hjuntan"},"content":" * Constructs an {@code Tag}.","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"hjuntan"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"hjuntan"},"content":" * @param tag A valid tag.","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"hjuntan"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"hjuntan"},"content":" public Tag(String tag) {","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"hjuntan"},"content":" requireNonNull(tag);","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"hjuntan"},"content":" checkArgument(isValidTag(tag), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"hjuntan"},"content":" value \u003d parseTag(tag);","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"hjuntan"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"hjuntan"},"content":" * Parses a tag and returns the corresponding TagType.","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"hjuntan"},"content":" * @param tag","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"hjuntan"},"content":" * @return","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"hjuntan"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"hjuntan"},"content":" public static TagType parseTag(String tag) {","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"hjuntan"},"content":" switch (tag) {","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"hjuntan"},"content":" case \"Professor\":","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"hjuntan"},"content":" return TagType.Professor;","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"hjuntan"},"content":" case \"TA\":","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"hjuntan"},"content":" return TagType.TA;","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"hjuntan"},"content":" case \"Student\":","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"hjuntan"},"content":" return TagType.Student;","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"hjuntan"},"content":" default:","lastModifiedDate":"2024-03-11"},{"lineNumber":66,"author":{"gitId":"hjuntan"},"content":" return TagType.None;","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":68,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":70,"author":{"gitId":"hjuntan"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":71,"author":{"gitId":"hjuntan"},"content":" * Returns true if a given string is a valid tag.","lastModifiedDate":"2024-03-11"},{"lineNumber":72,"author":{"gitId":"hjuntan"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":73,"author":{"gitId":"hjuntan"},"content":" public static boolean isValidTag(String test) {","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"hjuntan"},"content":" switch (test) {","lastModifiedDate":"2024-03-11"},{"lineNumber":75,"author":{"gitId":"hjuntan"},"content":" case \"Professor\":","lastModifiedDate":"2024-03-11"},{"lineNumber":76,"author":{"gitId":"hjuntan"},"content":" case \"TA\":","lastModifiedDate":"2024-03-11"},{"lineNumber":77,"author":{"gitId":"hjuntan"},"content":" case \"Student\":","lastModifiedDate":"2024-03-11"},{"lineNumber":78,"author":{"gitId":"hjuntan"},"content":" case \"None\":","lastModifiedDate":"2024-03-11"},{"lineNumber":79,"author":{"gitId":"hjuntan"},"content":" return true;","lastModifiedDate":"2024-03-11"},{"lineNumber":80,"author":{"gitId":"hjuntan"},"content":" default:","lastModifiedDate":"2024-03-11"},{"lineNumber":81,"author":{"gitId":"hjuntan"},"content":" return false;","lastModifiedDate":"2024-03-11"},{"lineNumber":82,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":83,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":84,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":85,"author":{"gitId":"hjuntan"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":86,"author":{"gitId":"hjuntan"},"content":" public String toString() {","lastModifiedDate":"2024-03-11"},{"lineNumber":87,"author":{"gitId":"hjuntan"},"content":" switch (value) {","lastModifiedDate":"2024-03-11"},{"lineNumber":88,"author":{"gitId":"hjuntan"},"content":" case Professor:","lastModifiedDate":"2024-03-11"},{"lineNumber":89,"author":{"gitId":"hjuntan"},"content":" return \"Professor\";","lastModifiedDate":"2024-03-11"},{"lineNumber":90,"author":{"gitId":"hjuntan"},"content":" case TA:","lastModifiedDate":"2024-03-11"},{"lineNumber":91,"author":{"gitId":"hjuntan"},"content":" return \"TA\";","lastModifiedDate":"2024-03-11"},{"lineNumber":92,"author":{"gitId":"hjuntan"},"content":" case Student:","lastModifiedDate":"2024-03-11"},{"lineNumber":93,"author":{"gitId":"hjuntan"},"content":" return \"Student\";","lastModifiedDate":"2024-03-11"},{"lineNumber":94,"author":{"gitId":"hjuntan"},"content":" default:","lastModifiedDate":"2024-03-11"},{"lineNumber":95,"author":{"gitId":"hjuntan"},"content":" return \"None\";","lastModifiedDate":"2024-03-11"},{"lineNumber":96,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":97,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":98,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":99,"author":{"gitId":"hjuntan"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":100,"author":{"gitId":"hjuntan"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-11"},{"lineNumber":101,"author":{"gitId":"hjuntan"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-11"},{"lineNumber":102,"author":{"gitId":"hjuntan"},"content":" return true;","lastModifiedDate":"2024-03-11"},{"lineNumber":103,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":104,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":105,"author":{"gitId":"hjuntan"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-11"},{"lineNumber":106,"author":{"gitId":"hjuntan"},"content":" if (!(other instanceof Tag)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":107,"author":{"gitId":"hjuntan"},"content":" return false;","lastModifiedDate":"2024-03-11"},{"lineNumber":108,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":109,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":110,"author":{"gitId":"hjuntan"},"content":" Tag otherTag \u003d (Tag) other;","lastModifiedDate":"2024-03-11"},{"lineNumber":111,"author":{"gitId":"hjuntan"},"content":" return value.equals(otherTag.value);","lastModifiedDate":"2024-03-11"},{"lineNumber":112,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":113,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":114,"author":{"gitId":"hjuntan"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":115,"author":{"gitId":"hjuntan"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-11"},{"lineNumber":116,"author":{"gitId":"hjuntan"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-11"},{"lineNumber":117,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":118,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":119,"author":{"gitId":"hjuntan"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"hjuntan":119}},{"path":"src/main/java/seedu/address/model/person/TagMatchesPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"RingoftheKing"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-15"},{"lineNumber":2,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"RingoftheKing"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"RingoftheKing"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"RingoftheKing"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"RingoftheKing"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"RingoftheKing"},"content":" * Tests if a {@code Person}\u0027s {@code Tag} matches the Enum given","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"RingoftheKing"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"RingoftheKing"},"content":"public class TagMatchesPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"RingoftheKing"},"content":" private final String keyword;","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"RingoftheKing"},"content":" public TagMatchesPredicate(String keyword) {","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"RingoftheKing"},"content":" this.keyword \u003d keyword;","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"RingoftheKing"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"RingoftheKing"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"RingoftheKing"},"content":" if (keyword.equals(FindCommand.NOT_REQUIRED_VALUE)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"RingoftheKing"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"RingoftheKing"},"content":" } else if (!Tag.isValidTag(keyword)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"RingoftheKing"},"content":" return false;","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"RingoftheKing"},"content":" } else {","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"RingoftheKing"},"content":" return person.getTag().equals(new Tag(keyword));","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"RingoftheKing"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"RingoftheKing"},"content":" public String toString() {","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"RingoftheKing"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"RingoftheKing"},"content":" .add(\"tagKeyword\", keyword)","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"RingoftheKing"},"content":" .toString();","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"RingoftheKing"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"RingoftheKing"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"RingoftheKing"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"RingoftheKing"},"content":" return true;","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"RingoftheKing"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"RingoftheKing"},"content":" if (!(other instanceof TagMatchesPredicate)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"RingoftheKing"},"content":" return false;","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"RingoftheKing"},"content":" TagMatchesPredicate predicate \u003d (TagMatchesPredicate) other;","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"RingoftheKing"},"content":" return keyword.equals(predicate.keyword);","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"RingoftheKing"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"RingoftheKing":51}},{"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":"hjuntan"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20"},{"lineNumber":12,"author":{"gitId":"hjuntan"},"content":"import seedu.address.model.person.NusId;","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-20"},{"lineNumber":15,"author":{"gitId":"Rikko1204"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"Rikko1204"},"content":"import seedu.address.model.person.Schedule;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"hjuntan"},"content":"import seedu.address.model.person.Tag;","lastModifiedDate":"2024-03-11"},{"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":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"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":"hjuntan"},"content":" new Person(new NusId(\"E1234567\"), new Name(\"Alex Yeoh\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"hjuntan"},"content":" new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"hjuntan"},"content":" new Tag(\"Student\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"Rikko1204"},"content":" getGroupSet(\"friends\"),","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"Rikko1204"},"content":" new Schedule(\"21-12-2024\"), new Remark(\"Consultation with Alex\")),","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"hjuntan"},"content":" new Person(new NusId(\"E2345678\"), new Name(\"Bernice Yu\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"hjuntan"},"content":" new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"hjuntan"},"content":" new Tag(\"Student\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"Rikko1204"},"content":" getGroupSet(\"colleagues\", \"friends\"),","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"Rikko1204"},"content":" new Schedule(\"22-12-2024\"), new Remark(\"Consultation with Bernice\")),","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"hjuntan"},"content":" new Person(new NusId(\"E0987654\"), new Name(\"Charlotte Oliveiro\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"hjuntan"},"content":" new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"hjuntan"},"content":" new Tag(\"TA\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"Rikko1204"},"content":" getGroupSet(\"neighbours\"),","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"hjuntan"},"content":" new Schedule(\"21-12-2024\"), new Remark(\"Consultation with Charlotte\")),","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"hjuntan"},"content":" new Person(new NusId(\"E9876543\"), new Name(\"David Li\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"hjuntan"},"content":" new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"hjuntan"},"content":" new Tag(\"Professor\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"Rikko1204"},"content":" getGroupSet(\"family\"),","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"Rikko1204"},"content":" new Schedule(\"23-12-2024\"), new Remark(\"Consultation with David\")),","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"hjuntan"},"content":" new Person(new NusId(\"E0123456\"), new Name(\"Irfan Ibrahim\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"hjuntan"},"content":" new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"hjuntan"},"content":" new Tag(\"TA\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"Rikko1204"},"content":" getGroupSet(\"classmates\"),","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"Rikko1204"},"content":" new Schedule(\"24-12-2024\"), new Remark(\"Consultation with Irfan\")),","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"hjuntan"},"content":" new Person(new NusId(\"E1029384\"), new Name(\"Roy Balakrishnan\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"hjuntan"},"content":" new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"hjuntan"},"content":" new Tag(\"None\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"Rikko1204"},"content":" getGroupSet(\"colleagues\"),","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"Rikko1204"},"content":" new Schedule(\"25-12-2024\"), new Remark(\"Consultation with Roy\"))","lastModifiedDate":"2024-03-16"},{"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":"hjuntan"},"content":" * Returns a group set containing the list of strings given.","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14"},{"lineNumber":70,"author":{"gitId":"hjuntan"},"content":" public static Set\u003cGroup\u003e getGroupSet(String... strings) {","lastModifiedDate":"2024-03-11"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21"},{"lineNumber":72,"author":{"gitId":"hjuntan"},"content":" .map(Group::new)","lastModifiedDate":"2024-03-11"},{"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":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"Rikko1204":14,"hjuntan":25,"-":37}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedGroup.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"hjuntan"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"hjuntan"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"hjuntan"},"content":"import com.fasterxml.jackson.annotation.JsonValue;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"hjuntan"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"hjuntan"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"hjuntan"},"content":"/**","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"hjuntan"},"content":" * Jackson-friendly version of {@link Group}.","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"hjuntan"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"hjuntan"},"content":"class JsonAdaptedGroup {","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"hjuntan"},"content":" private final String groupName;","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"hjuntan"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"hjuntan"},"content":" * Constructs a {@code JsonAdaptedGroup} with the given {@code groupName}.","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"hjuntan"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"hjuntan"},"content":" @JsonCreator","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"hjuntan"},"content":" public JsonAdaptedGroup(String groupName) {","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"hjuntan"},"content":" this.groupName \u003d groupName;","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"hjuntan"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"hjuntan"},"content":" * Converts a given {@code Group} into this class for Jackson use.","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"hjuntan"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"hjuntan"},"content":" public JsonAdaptedGroup(Group source) {","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"hjuntan"},"content":" groupName \u003d source.groupName;","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"hjuntan"},"content":" @JsonValue","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"hjuntan"},"content":" public String getGroupName() {","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"hjuntan"},"content":" return groupName;","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"hjuntan"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"hjuntan"},"content":" * Converts this Jackson-friendly adapted group object into the model\u0027s {@code Group} object.","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"hjuntan"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"hjuntan"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted group.","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"hjuntan"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"hjuntan"},"content":" public Group toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"hjuntan"},"content":" if (!Group.isValidGroupName(groupName)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"hjuntan"},"content":" throw new IllegalValueException(Group.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"hjuntan"},"content":" return new Group(groupName);","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"hjuntan"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"hjuntan":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":"-"},"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":"hjuntan"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-11"},{"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":"hjuntan"},"content":"import seedu.address.model.person.NusId;","lastModifiedDate":"2024-03-11"},{"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":"Rikko1204"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"Rikko1204"},"content":"import seedu.address.model.person.Schedule;","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"hjuntan"},"content":"import seedu.address.model.person.Tag;","lastModifiedDate":"2024-03-11"},{"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":"hjuntan"},"content":" private final String nusId;","lastModifiedDate":"2024-03-11"},{"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":"hjuntan"},"content":" private final String tag;","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"Rikko1204"},"content":" private final String schedule;","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"Rikko1204"},"content":" private final String remark;","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"hjuntan"},"content":" private final List\u003cJsonAdaptedGroup\u003e groups \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"hjuntan"},"content":" public JsonAdaptedPerson(@JsonProperty(\"nusId\") String nusId,","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"hjuntan"},"content":" @JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"hjuntan"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"tag\") String tag,","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"Rikko1204"},"content":" @JsonProperty(\"groups\") List\u003cJsonAdaptedGroup\u003e groups,","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"Rikko1204"},"content":" @JsonProperty(\"schedule\") String schedule, @JsonProperty(\"remark\") String remark) {","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"hjuntan"},"content":" this.nusId \u003d nusId;","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"hjuntan"},"content":" this.tag \u003d tag;","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"Rikko1204"},"content":" this.schedule \u003d schedule;","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"Rikko1204"},"content":" this.remark \u003d remark;","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"hjuntan"},"content":" if (groups !\u003d null) {","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"hjuntan"},"content":" this.groups.addAll(groups);","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","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"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"hjuntan"},"content":" nusId \u003d source.getNusId().value;","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"hjuntan"},"content":" tag \u003d source.getTag().value.toString();","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"Rikko1204"},"content":" schedule \u003d source.getSchedule().date.toString();","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"Rikko1204"},"content":" remark \u003d source.getRemark().value.toString();","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"hjuntan"},"content":" groups.addAll(source.getGroups().stream()","lastModifiedDate":"2024-03-11"},{"lineNumber":72,"author":{"gitId":"hjuntan"},"content":" .map(JsonAdaptedGroup::new)","lastModifiedDate":"2024-03-11"},{"lineNumber":73,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","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"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"hjuntan"},"content":" final List\u003cGroup\u003e personGroups \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-11"},{"lineNumber":83,"author":{"gitId":"hjuntan"},"content":" for (JsonAdaptedGroup group : groups) {","lastModifiedDate":"2024-03-11"},{"lineNumber":84,"author":{"gitId":"hjuntan"},"content":" personGroups.add(group.toModelType());","lastModifiedDate":"2024-03-11"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"hjuntan"},"content":" if (tag \u003d\u003d null) {","lastModifiedDate":"2024-03-11"},{"lineNumber":112,"author":{"gitId":"hjuntan"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Tag.class.getSimpleName()));","lastModifiedDate":"2024-03-11"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"hjuntan"},"content":" if (!Tag.isValidTag(tag)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":115,"author":{"gitId":"hjuntan"},"content":" throw new IllegalValueException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-11"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":117,"author":{"gitId":"hjuntan"},"content":" final Tag modelTag \u003d new Tag(tag);","lastModifiedDate":"2024-03-11"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":119,"author":{"gitId":"hjuntan"},"content":" if (nusId \u003d\u003d null) {","lastModifiedDate":"2024-03-11"},{"lineNumber":120,"author":{"gitId":"hjuntan"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, NusId.class.getSimpleName()));","lastModifiedDate":"2024-03-11"},{"lineNumber":121,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":122,"author":{"gitId":"hjuntan"},"content":" if (!NusId.isValidNusId(nusId)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":123,"author":{"gitId":"hjuntan"},"content":" throw new IllegalValueException(NusId.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-11"},{"lineNumber":124,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":125,"author":{"gitId":"hjuntan"},"content":" final NusId modelNusId \u003d new NusId(nusId);","lastModifiedDate":"2024-03-11"},{"lineNumber":126,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":127,"author":{"gitId":"Rikko1204"},"content":" if (schedule \u003d\u003d null) {","lastModifiedDate":"2024-03-16"},{"lineNumber":128,"author":{"gitId":"Rikko1204"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-16"},{"lineNumber":129,"author":{"gitId":"Rikko1204"},"content":" Schedule.class.getSimpleName()));","lastModifiedDate":"2024-03-16"},{"lineNumber":130,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":131,"author":{"gitId":"Rikko1204"},"content":" if (!Schedule.isValidSchedule(schedule)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":132,"author":{"gitId":"Rikko1204"},"content":" throw new IllegalValueException(Schedule.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":133,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":134,"author":{"gitId":"Rikko1204"},"content":" final Schedule modelSchedule \u003d new Schedule(schedule);","lastModifiedDate":"2024-03-16"},{"lineNumber":135,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":136,"author":{"gitId":"Rikko1204"},"content":" if (remark \u003d\u003d null) {","lastModifiedDate":"2024-03-16"},{"lineNumber":137,"author":{"gitId":"Rikko1204"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Remark.class.getSimpleName()));","lastModifiedDate":"2024-03-16"},{"lineNumber":138,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":139,"author":{"gitId":"Rikko1204"},"content":" final Remark modelRemark \u003d new Remark(remark);","lastModifiedDate":"2024-03-16"},{"lineNumber":140,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":141,"author":{"gitId":"hjuntan"},"content":" final Set\u003cGroup\u003e modelGroups \u003d new HashSet\u003c\u003e(personGroups);","lastModifiedDate":"2024-03-11"},{"lineNumber":142,"author":{"gitId":"Rikko1204"},"content":" return new Person(modelNusId, modelName, modelPhone, modelEmail,","lastModifiedDate":"2024-03-16"},{"lineNumber":143,"author":{"gitId":"Rikko1204"},"content":" modelTag, modelGroups, modelSchedule, modelRemark);","lastModifiedDate":"2024-03-16"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":146,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"Rikko1204":26,"hjuntan":34,"-":86}},{"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":"hjuntan"},"content":" private Label tag;","lastModifiedDate":"2024-03-11"},{"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":"hjuntan"},"content":" private Label nusId;","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"hjuntan"},"content":" @FXML","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"Rikko1204"},"content":" private Label schedule;","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"Rikko1204"},"content":" @FXML","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"Rikko1204"},"content":" private Label remark;","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"Rikko1204"},"content":" @FXML","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"hjuntan"},"content":" private FlowPane groups;","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21"},{"lineNumber":57,"author":{"gitId":"hjuntan"},"content":" nusId.setText(person.getNusId().value);","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":60,"author":{"gitId":"hjuntan"},"content":" tag.setText(person.getTag().value.toString());","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":62,"author":{"gitId":"Rikko1204"},"content":" schedule.setText(person.getSchedule().date);","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"Rikko1204"},"content":" remark.setText(person.getRemark().value);","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"hjuntan"},"content":" person.getGroups().stream()","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"hjuntan"},"content":" .sorted(Comparator.comparing(group -\u003e group.groupName))","lastModifiedDate":"2024-03-11"},{"lineNumber":66,"author":{"gitId":"hjuntan"},"content":" .forEach(group -\u003e groups.getChildren().add(new Label(group.groupName)));","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"Rikko1204":6,"hjuntan":9,"-":53}},{"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":"hjuntan"},"content":" \u003cLabel fx:id\u003d\"nusId\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2024-03-11"},{"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":"hjuntan"},"content":" \u003cFlowPane fx:id\u003d\"groups\" /\u003e","lastModifiedDate":"2024-03-11"},{"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":"hjuntan"},"content":" \u003cLabel fx:id\u003d\"tag\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$tag\" /\u003e","lastModifiedDate":"2024-03-11"},{"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":"Rikko1204"},"content":" \u003cLabel fx:id\u003d\"schedule\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$schedule\" /\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"Rikko1204"},"content":" \u003cLabel fx:id\u003d\"remark\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$remark\" /\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"Rikko1204":2,"hjuntan":3,"-":34}},{"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":"cheahTJ"},"content":"import static seedu.address.logic.Messages.MESSAGE_NON_EXISTENT_PERSON;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2024-03-16"},{"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":"Rikko1204"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NUSID_DESC_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":10,"author":{"gitId":"hjuntan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_AMY;","lastModifiedDate":"2024-03-11"},{"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":"hjuntan"},"content":"import seedu.address.logic.commands.ViewCommand;","lastModifiedDate":"2024-03-20"},{"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":"cheahTJ"},"content":" String deleteCommand \u003d \"delete E1234567\";","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"cheahTJ"},"content":" assertCommandException(deleteCommand, MESSAGE_NON_EXISTENT_PERSON);","lastModifiedDate":"2024-03-16"},{"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":"hjuntan"},"content":" String listCommand \u003d ViewCommand.COMMAND_WORD;","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"hjuntan"},"content":" assertCommandSuccess(listCommand, ViewCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2024-03-20"},{"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":"Rikko1204"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NUSID_DESC_AMY + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2024-03-12"},{"lineNumber":170,"author":{"gitId":"hjuntan"},"content":" + EMAIL_DESC_AMY + TAG_DESC_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":171,"author":{"gitId":"hjuntan"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withGroups().build();","lastModifiedDate":"2024-03-11"},{"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":{"cheahTJ":3,"Rikko1204":2,"hjuntan":6,"-":165}},{"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":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GROUP;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NUSID;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SCHEDULE;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05"},{"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":"Ragnapop"},"content":"import seedu.address.testutil.GroupPersonDescriptorBuilder;","lastModifiedDate":"2024-03-14"},{"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":"hjuntan"},"content":" public static final String VALID_NUSID_AMY \u003d \"E1234567\";","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"hjuntan"},"content":" public static final String VALID_NUSID_BOB \u003d \"E7654321\";","lastModifiedDate":"2024-03-11"},{"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":"hjuntan"},"content":" public static final String VALID_TAG_AMY \u003d \"Student\";","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"hjuntan"},"content":" public static final String VALID_TAG_BOB \u003d \"Professor\";","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"hjuntan"},"content":" public static final String VALID_GROUP_HUSBAND \u003d \"husband\";","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"hjuntan"},"content":" public static final String VALID_GROUP_FRIEND \u003d \"friend\";","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"Rikko1204"},"content":" public static final String VALID_SCHEDULE_AMY \u003d \"10-10-2020\";","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"Rikko1204"},"content":" public static final String VALID_SCHEDULE_BOB \u003d \"11/11/2020\";","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"Rikko1204"},"content":" public static final String VALID_REMARK_AMY \u003d \"Meeting at 3pm\";","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"Rikko1204"},"content":" public static final String VALID_REMARK_BOB \u003d \"Lunch with Amy\";","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":50,"author":{"gitId":"Rikko1204"},"content":" public static final String NUSID_DESC_AMY \u003d \" \" + PREFIX_NUSID + VALID_NUSID_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"Rikko1204"},"content":" public static final String NUSID_DESC_BOB \u003d \" \" + PREFIX_NUSID + VALID_NUSID_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":58,"author":{"gitId":"hjuntan"},"content":" public static final String TAG_DESC_AMY \u003d \" \" + PREFIX_TAG + VALID_TAG_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"hjuntan"},"content":" public static final String TAG_DESC_BOB \u003d \" \" + PREFIX_TAG + VALID_TAG_BOB;","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"hjuntan"},"content":" public static final String GROUP_DESC_FRIEND \u003d \" \" + PREFIX_GROUP + VALID_GROUP_FRIEND;","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"hjuntan"},"content":" public static final String GROUP_DESC_HUSBAND \u003d \" \" + PREFIX_GROUP + VALID_GROUP_HUSBAND;","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"Rikko1204"},"content":" public static final String SCHEDULE_DESC_AMY \u003d \" \" + PREFIX_SCHEDULE + VALID_SCHEDULE_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"Rikko1204"},"content":" public static final String SCHEDULE_DESC_BOB \u003d \" \" + PREFIX_SCHEDULE + VALID_SCHEDULE_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"Rikko1204"},"content":" public static final String REMARK_DESC_AMY \u003d \" \" + PREFIX_REMARK + VALID_REMARK_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"Rikko1204"},"content":" public static final String REMARK_DESC_BOB \u003d \" \" + PREFIX_REMARK + VALID_REMARK_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"Rikko1204"},"content":" public static final String INVALID_NUSID_DESC \u003d \" \" + PREFIX_NUSID + \"e1234567\"; // \u0027e\u0027 not allowed in id","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"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":68,"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":69,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05"},{"lineNumber":70,"author":{"gitId":"hjuntan"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG; // empty string not allowed for tags","lastModifiedDate":"2024-03-11"},{"lineNumber":71,"author":{"gitId":"hjuntan"},"content":" public static final String INVALID_GROUP_DESC \u003d \" \" + PREFIX_GROUP + \"hubby*\"; // \u0027*\u0027 not allowed in groups","lastModifiedDate":"2024-03-11"},{"lineNumber":72,"author":{"gitId":"Rikko1204"},"content":" public static final String INVALID_SCHEDULE_DESC \u003d \" \" + PREFIX_SCHEDULE + \"2024-12-12\"; // wrong date format","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"Rikko1204"},"content":" public static final String INVALID_NUSID \u003d \"e1234567\"; // lowercase not accepted","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"Rikko1204"},"content":" public static final String INVALID_SCHEDULE \u003d \"12-31-2020\"; // Incorrect month","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":82,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":85,"author":{"gitId":"Ragnapop"},"content":" public static final GroupCommand.GroupPersonDescriptor DESC_AMY_GROUP;","lastModifiedDate":"2024-03-14"},{"lineNumber":86,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":87,"author":{"gitId":"Ragnapop"},"content":" public static final GroupCommand.GroupPersonDescriptor DESC_BOB_GROUP;","lastModifiedDate":"2024-03-14"},{"lineNumber":88,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":91,"author":{"gitId":"hjuntan"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withTag(VALID_TAG_AMY)","lastModifiedDate":"2024-03-11"},{"lineNumber":92,"author":{"gitId":"hjuntan"},"content":" .withGroups(VALID_GROUP_FRIEND).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":93,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":94,"author":{"gitId":"hjuntan"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withTag(VALID_TAG_BOB)","lastModifiedDate":"2024-03-11"},{"lineNumber":95,"author":{"gitId":"hjuntan"},"content":" .withGroups(VALID_GROUP_HUSBAND, VALID_GROUP_FRIEND).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":96,"author":{"gitId":"Ragnapop"},"content":" DESC_AMY_GROUP \u003d new GroupPersonDescriptorBuilder().withNusId(VALID_NUSID_AMY).withTag(VALID_TAG_AMY)","lastModifiedDate":"2024-03-14"},{"lineNumber":97,"author":{"gitId":"Ragnapop"},"content":" .withGroups(VALID_GROUP_HUSBAND).build();","lastModifiedDate":"2024-03-14"},{"lineNumber":98,"author":{"gitId":"Ragnapop"},"content":" DESC_BOB_GROUP \u003d new GroupPersonDescriptorBuilder().withNusId(VALID_NUSID_BOB).withTag(VALID_TAG_BOB)","lastModifiedDate":"2024-03-14"},{"lineNumber":99,"author":{"gitId":"Ragnapop"},"content":" .withGroups(VALID_GROUP_FRIEND).build();","lastModifiedDate":"2024-03-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"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":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25"},{"lineNumber":108,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":109,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":110,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":114,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":118,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":119,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":120,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":121,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25"},{"lineNumber":122,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":123,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":124,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25"},{"lineNumber":125,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":126,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":130,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":131,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":132,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":134,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25"},{"lineNumber":135,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":136,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25"},{"lineNumber":137,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":138,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":139,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":140,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03"},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":145,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":146,"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":147,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31"},{"lineNumber":148,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":149,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31"},{"lineNumber":150,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":152,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31"},{"lineNumber":153,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20"},{"lineNumber":154,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":156,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":159,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"Rikko1204":20,"Ragnapop":12,"hjuntan":16,"-":111}},{"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.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-05"},{"lineNumber":17,"author":{"gitId":"cheahTJ"},"content":"import seedu.address.model.person.NusId;","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2018-01-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2017-06-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":29,"author":{"gitId":"cheahTJ"},"content":" public void execute_validNusIdUnfilteredList_success() {","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":31,"author":{"gitId":"cheahTJ"},"content":" NusId nusId \u003d new NusId(\"E0123456\"); // This is the supposed NusId of the first person in the address list","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"cheahTJ"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(nusId);","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":44,"author":{"gitId":"cheahTJ"},"content":" public void execute_invalidNusIdUnfilteredList_throwsCommandException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"cheahTJ"},"content":" NusId testNusId \u003d new NusId(\"E1234567\");","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"cheahTJ"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(testNusId);","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":48,"author":{"gitId":"cheahTJ"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_NON_EXISTENT_PERSON);","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":52,"author":{"gitId":"cheahTJ"},"content":" public void execute_validNusIdFilteredList_success() {","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":54,"author":{"gitId":"cheahTJ"},"content":" NusId nusId \u003d new NusId(\"E0123456\");","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"cheahTJ"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(nusId);","lastModifiedDate":"2024-03-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":67,"author":{"gitId":"cheahTJ"},"content":" public void execute_invalidNusIdFilteredList_throwsCommandException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"cheahTJ"},"content":" NusId testNusId \u003d new NusId(\"E1234567\");","lastModifiedDate":"2024-03-13"},{"lineNumber":69,"author":{"gitId":"cheahTJ"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(testNusId);","lastModifiedDate":"2024-03-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":71,"author":{"gitId":"cheahTJ"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_NON_EXISTENT_PERSON);","lastModifiedDate":"2024-03-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":76,"author":{"gitId":"cheahTJ"},"content":" NusId nusIdForFirstDeleteCommand \u003d new NusId(\"E1234567\");","lastModifiedDate":"2024-03-13"},{"lineNumber":77,"author":{"gitId":"cheahTJ"},"content":" NusId nusIdForSecondDeleteCommand \u003d new NusId(\"E2345678\");","lastModifiedDate":"2024-03-13"},{"lineNumber":78,"author":{"gitId":"cheahTJ"},"content":" DeleteCommand deleteFirstCommand \u003d new DeleteCommand(nusIdForFirstDeleteCommand);","lastModifiedDate":"2024-03-13"},{"lineNumber":79,"author":{"gitId":"cheahTJ"},"content":" DeleteCommand deleteSecondCommand \u003d new DeleteCommand(nusIdForSecondDeleteCommand);","lastModifiedDate":"2024-03-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":85,"author":{"gitId":"cheahTJ"},"content":" DeleteCommand deleteFirstCommandCopy \u003d new DeleteCommand(new NusId(\"E1234567\"));","lastModifiedDate":"2024-03-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2017-06-27"},{"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":"2019-02-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":100,"author":{"gitId":"cheahTJ"},"content":" //Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-13"},{"lineNumber":101,"author":{"gitId":"cheahTJ"},"content":" //DeleteCommand deleteCommand \u003d new DeleteCommand(targetIndex);","lastModifiedDate":"2024-03-13"},{"lineNumber":102,"author":{"gitId":"cheahTJ"},"content":" NusId testNusId \u003d new NusId(\"E1234567\");","lastModifiedDate":"2024-03-13"},{"lineNumber":103,"author":{"gitId":"cheahTJ"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(testNusId);","lastModifiedDate":"2024-03-13"},{"lineNumber":104,"author":{"gitId":"cheahTJ"},"content":" String expected \u003d DeleteCommand.class.getCanonicalName() + \"{targetnusId\u003d\" + testNusId.toString() + \"}\";","lastModifiedDate":"2024-03-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertEquals(expected, deleteCommand.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":"2017-06-05"},{"lineNumber":109,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05"},{"lineNumber":110,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":111,"author":{"gitId":"-"},"content":" private void showNoPerson(Model model) {","lastModifiedDate":"2017-06-05"},{"lineNumber":112,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2017-06-12"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertTrue(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2018-02-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":116,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"cheahTJ":25,"-":91}},{"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":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"cheahTJ"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"cheahTJ"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GROUP_HUSBAND;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"cheahTJ"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_REMARK_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"cheahTJ"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SCHEDULE_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_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":"2024-03-12"},{"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":"-"},"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":"cheahTJ"},"content":"import seedu.address.model.person.NusId;","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-04"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":43,"author":{"gitId":"cheahTJ"},"content":" Person originalPerson \u003d model.getFilteredPersonList().get(0);","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"cheahTJ"},"content":" PersonBuilder personInList \u003d new PersonBuilder(originalPerson);","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"cheahTJ"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"cheahTJ"},"content":" .withGroups(VALID_GROUP_HUSBAND).withEmail(VALID_EMAIL_BOB).withRemark(VALID_REMARK_BOB)","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"cheahTJ"},"content":" .withSchedule(VALID_SCHEDULE_BOB).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedPerson).build();","lastModifiedDate":"2017-06-05"},{"lineNumber":50,"author":{"gitId":"cheahTJ"},"content":" EditCommand editCommand \u003d new EditCommand(originalPerson.getNusId(), descriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":55,"author":{"gitId":"cheahTJ"},"content":" expectedModel.setPerson(originalPerson, editedPerson);","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","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 execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":62,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2017-05-18"},{"lineNumber":63,"author":{"gitId":"-"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":65,"author":{"gitId":"-"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2017-05-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-18"},{"lineNumber":67,"author":{"gitId":"hjuntan"},"content":" .withGroups(VALID_GROUP_HUSBAND).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":68,"author":{"gitId":"cheahTJ"},"content":" NusId nusIdOfLastPerson \u003d lastPerson.getNusId();","lastModifiedDate":"2024-03-19"},{"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":"hjuntan"},"content":" .withPhone(VALID_PHONE_BOB).withGroups(VALID_GROUP_HUSBAND).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":72,"author":{"gitId":"cheahTJ"},"content":" EditCommand editCommand \u003d new EditCommand(nusIdOfLastPerson, descriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":74,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":76,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":77,"author":{"gitId":"-"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":84,"author":{"gitId":"cheahTJ"},"content":" String defaultNusId \u003d \"E0123456\"; // This is the default NUS id of a person","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"cheahTJ"},"content":" NusId nusId \u003d new NusId(defaultNusId);","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"cheahTJ"},"content":" EditCommand editCommand \u003d new EditCommand(nusId, new EditPersonDescriptor());","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":99,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":101,"author":{"gitId":"cheahTJ"},"content":" String defaultNusId \u003d \"E0123456\"; // This is the default NUS id of a person","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"cheahTJ"},"content":" NusId nusId \u003d new NusId(defaultNusId);","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"-"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder(personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":106,"author":{"gitId":"cheahTJ"},"content":" EditCommand editCommand \u003d new EditCommand(nusId,","lastModifiedDate":"2024-03-19"},{"lineNumber":107,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":109,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":111,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":112,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":119,"author":{"gitId":"cheahTJ"},"content":" NusId nusId \u003d new NusId(\"E0000000\"); // NusId does not exist","lastModifiedDate":"2024-03-19"},{"lineNumber":120,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22"},{"lineNumber":121,"author":{"gitId":"cheahTJ"},"content":" EditCommand editCommand \u003d new EditCommand(nusId, descriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":123,"author":{"gitId":"cheahTJ"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_NON_EXISTENT_PERSON);","lastModifiedDate":"2024-03-19"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":126,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18"},{"lineNumber":127,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18"},{"lineNumber":128,"author":{"gitId":"-"},"content":" * but smaller than size of address book","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":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":132,"author":{"gitId":"cheahTJ"},"content":" NusId nusId \u003d new NusId(\"E0000000\"); // NusId does not exist","lastModifiedDate":"2024-03-19"},{"lineNumber":133,"author":{"gitId":"cheahTJ"},"content":" EditCommand editCommand \u003d new EditCommand(nusId,","lastModifiedDate":"2024-03-19"},{"lineNumber":134,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":135,"author":{"gitId":"cheahTJ"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_NON_EXISTENT_PERSON);","lastModifiedDate":"2024-03-19"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":140,"author":{"gitId":"cheahTJ"},"content":" final EditCommand standardCommand \u003d new EditCommand(new NusId(\"E1234567\"), DESC_AMY);","lastModifiedDate":"2024-03-19"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":142,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08"},{"lineNumber":144,"author":{"gitId":"cheahTJ"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(new NusId(\"E1234567\"), copyDescriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":147,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":150,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":151,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":153,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":154,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":156,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":157,"author":{"gitId":"cheahTJ"},"content":" assertFalse(standardCommand.equals(new EditCommand(new NusId(\"E7654321\"), DESC_AMY)));","lastModifiedDate":"2024-03-19"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":160,"author":{"gitId":"cheahTJ"},"content":" assertFalse(standardCommand.equals(new EditCommand(new NusId(\"E1234567\"), DESC_BOB)));","lastModifiedDate":"2024-03-19"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":163,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":165,"author":{"gitId":"cheahTJ"},"content":" String defaultNusId \u003d \"E1234567\"; // This is the default NUS id of a person","lastModifiedDate":"2024-03-19"},{"lineNumber":166,"author":{"gitId":"cheahTJ"},"content":" NusId nusId \u003d new NusId(defaultNusId);","lastModifiedDate":"2024-03-19"},{"lineNumber":167,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":168,"author":{"gitId":"cheahTJ"},"content":" EditCommand editCommand \u003d new EditCommand(nusId, editPersonDescriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":169,"author":{"gitId":"cheahTJ"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{targetnusId\u003d\" + nusId.toString()","lastModifiedDate":"2024-03-19"},{"lineNumber":170,"author":{"gitId":"cheahTJ"},"content":" + \", editPersonDescriptor\u003d\" + editPersonDescriptor + \"}\";","lastModifiedDate":"2024-03-19"},{"lineNumber":171,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08"}],"authorContributionMap":{"cheahTJ":38,"hjuntan":2,"-":134}},{"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":"hjuntan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GROUP_HUSBAND;","lastModifiedDate":"2024-03-11"},{"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":"hjuntan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_BOB;","lastModifiedDate":"2024-03-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":"hjuntan"},"content":" // different tag -\u003e returns false","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"hjuntan"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withTag(VALID_TAG_BOB).build();","lastModifiedDate":"2024-03-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":"hjuntan"},"content":" // different groups -\u003e returns false","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"hjuntan"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withGroups(VALID_GROUP_HUSBAND).build();","lastModifiedDate":"2024-03-11"},{"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":"hjuntan"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", tag\u003d\"","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"hjuntan"},"content":" + editPersonDescriptor.getTag().orElse(null) + \", groups\u003d\"","lastModifiedDate":"2024-03-11"},{"lineNumber":68,"author":{"gitId":"hjuntan"},"content":" + editPersonDescriptor.getGroups().orElse(null) + \"}\";","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"hjuntan":9,"-":62}},{"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":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"RingoftheKing"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_PERSONS_LISTED_OVERVIEW;","lastModifiedDate":"2023-07-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.CARL;","lastModifiedDate":"2017-07-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ELLE;","lastModifiedDate":"2017-07-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.FIONA;","lastModifiedDate":"2017-07-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"RingoftheKing"},"content":"import java.util.List;","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"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":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"RingoftheKing"},"content":"import seedu.address.model.person.EmailMatchesPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"RingoftheKing"},"content":"import seedu.address.model.person.GroupMatchesPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"RingoftheKing"},"content":"import seedu.address.model.person.PhoneMatchesPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"RingoftheKing"},"content":"import seedu.address.model.person.Tag;","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"RingoftheKing"},"content":"import seedu.address.model.person.TagMatchesPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"RingoftheKing"},"content":"import seedu.address.testutil.FindCommandBuilder;","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code FindCommand}.","lastModifiedDate":"2017-06-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":"public class FindCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":39,"author":{"gitId":"RingoftheKing"},"content":" public void test_equals_withNameVariations() {","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"RingoftheKing"},"content":" // Check that the Builder is first functioning as normal","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"RingoftheKing"},"content":" assertEquals(new FindCommandBuilder().build(), new FindCommandBuilder().build());","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"RingoftheKing"},"content":" /* -----------------------------------NAME PRED VARIES------------------------------------------*/","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"RingoftheKing"},"content":" NameContainsKeywordsPredicate firstNamePredicate \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":45,"author":{"gitId":"RingoftheKing"},"content":" NameContainsKeywordsPredicate secondNamePredicate \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"RingoftheKing"},"content":" FindCommand findFirstCommand \u003d new FindCommandBuilder().withNamePred(firstNamePredicate).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"RingoftheKing"},"content":" FindCommand findSecondCommand \u003d new FindCommandBuilder().withNamePred(secondNamePredicate).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"RingoftheKing"},"content":" FindCommand findFirstCommandCopy \u003d new FindCommandBuilder().withNamePred(firstNamePredicate).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"RingoftheKing"},"content":" // different types -\u003e returns false. Tested ONCE.","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":61,"author":{"gitId":"RingoftheKing"},"content":" // null -\u003e returns false TEST ONCE","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":64,"author":{"gitId":"RingoftheKing"},"content":" // different names -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"RingoftheKing"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"RingoftheKing"},"content":" public void test_equals_withPhoneVariations() {","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"RingoftheKing"},"content":" /* vv --------------------------- PHONE PRED VARIES ------------------------------------ */","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"RingoftheKing"},"content":" PhoneMatchesPredicate firstPhonePredicate \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"RingoftheKing"},"content":" new PhoneMatchesPredicate(\"123\");","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"RingoftheKing"},"content":" PhoneMatchesPredicate secondPhonePredicate \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"RingoftheKing"},"content":" new PhoneMatchesPredicate(\"789\");","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"RingoftheKing"},"content":" FindCommand findPhoneFirstCommand \u003d new FindCommandBuilder().withPhone(firstPhonePredicate).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"RingoftheKing"},"content":" FindCommand findPhoneFirstCopy \u003d new FindCommandBuilder().withPhone(firstPhonePredicate).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"RingoftheKing"},"content":" FindCommand findPhoneSecondCommand \u003d new FindCommandBuilder().withPhone(secondPhonePredicate).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"RingoftheKing"},"content":" // Same object returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"RingoftheKing"},"content":" assertEquals(findPhoneFirstCommand, findPhoneFirstCommand);","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"RingoftheKing"},"content":" // Same values returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"RingoftheKing"},"content":" assertEquals(findPhoneFirstCommand, findPhoneFirstCopy);","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"RingoftheKing"},"content":" // Different phones returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"RingoftheKing"},"content":" assertNotEquals(findPhoneFirstCommand, findPhoneSecondCommand);","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"RingoftheKing"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"RingoftheKing"},"content":" public void test_equals_withEmailVariations() {","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"RingoftheKing"},"content":" /* vv --------------------------- EMAIL PRED VARIES ------------------------------ */","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"RingoftheKing"},"content":" EmailMatchesPredicate firstEmailPredicate \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"RingoftheKing"},"content":" new EmailMatchesPredicate(\"arona@arhive.com\");","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"RingoftheKing"},"content":" EmailMatchesPredicate secondEmailPredicate \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"RingoftheKing"},"content":" new EmailMatchesPredicate(\"shiroko@blue.com\");","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"RingoftheKing"},"content":" FindCommand findEmailFirstCommand \u003d new FindCommandBuilder().withEmail(firstEmailPredicate).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"RingoftheKing"},"content":" FindCommand firstEmailCopy \u003d new FindCommandBuilder().withEmail(firstEmailPredicate).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"RingoftheKing"},"content":" FindCommand findEmailSecondCommand \u003d new FindCommandBuilder().withEmail(secondEmailPredicate).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":101,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":102,"author":{"gitId":"RingoftheKing"},"content":" // Same values returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":103,"author":{"gitId":"RingoftheKing"},"content":" assertEquals(findEmailFirstCommand, firstEmailCopy);","lastModifiedDate":"2024-03-18"},{"lineNumber":104,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":105,"author":{"gitId":"RingoftheKing"},"content":" // Different values returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":106,"author":{"gitId":"RingoftheKing"},"content":" assertNotEquals(findEmailFirstCommand, findEmailSecondCommand);","lastModifiedDate":"2024-03-18"},{"lineNumber":107,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":109,"author":{"gitId":"RingoftheKing"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":110,"author":{"gitId":"RingoftheKing"},"content":" public void test_equals_withTagVariations() {","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"RingoftheKing"},"content":" /* vv --------------------------- TAG PRED VARIES ----------------------------------- */","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"RingoftheKing"},"content":" TagMatchesPredicate tagFirstPredicate \u003d new TagMatchesPredicate(Tag.TagType.Student.name());","lastModifiedDate":"2024-03-18"},{"lineNumber":113,"author":{"gitId":"RingoftheKing"},"content":" TagMatchesPredicate tagSecondPredicate \u003d new TagMatchesPredicate(Tag.TagType.TA.name());","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":115,"author":{"gitId":"RingoftheKing"},"content":" // Same values returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"RingoftheKing"},"content":" FindCommand firstFindTagCommand \u003d new FindCommandBuilder().withTag(tagFirstPredicate).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"RingoftheKing"},"content":" FindCommand tagCommandCopy \u003d new FindCommandBuilder().withTag(tagFirstPredicate).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":118,"author":{"gitId":"RingoftheKing"},"content":" FindCommand secondFindTagCommand \u003d new FindCommandBuilder().withTag(tagSecondPredicate).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":119,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":120,"author":{"gitId":"RingoftheKing"},"content":" assertEquals(firstFindTagCommand, tagCommandCopy);","lastModifiedDate":"2024-03-18"},{"lineNumber":121,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":122,"author":{"gitId":"RingoftheKing"},"content":" assertNotEquals(firstFindTagCommand, secondFindTagCommand);","lastModifiedDate":"2024-03-18"},{"lineNumber":123,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":124,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":125,"author":{"gitId":"RingoftheKing"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":126,"author":{"gitId":"RingoftheKing"},"content":" public void test_equals_withGroupVariations() {","lastModifiedDate":"2024-03-18"},{"lineNumber":127,"author":{"gitId":"RingoftheKing"},"content":" GroupMatchesPredicate singleGroupPredicate1 \u003d new GroupMatchesPredicate(List.of(\"CS2103T\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":128,"author":{"gitId":"RingoftheKing"},"content":" GroupMatchesPredicate singleGroupPredicate2 \u003d new GroupMatchesPredicate(List.of(\"CS2101\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":129,"author":{"gitId":"RingoftheKing"},"content":" GroupMatchesPredicate multiGroupPredicate1 \u003d new GroupMatchesPredicate(List.of(\"CS2101\", \"CS2103T\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":130,"author":{"gitId":"RingoftheKing"},"content":" GroupMatchesPredicate multiGroupPredicate2 \u003d new GroupMatchesPredicate(List.of(\"CS2101\", \"CS2109S\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":131,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":132,"author":{"gitId":"RingoftheKing"},"content":" FindCommand singleGroupCommand1 \u003d new FindCommandBuilder().withGroups(singleGroupPredicate1).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":133,"author":{"gitId":"RingoftheKing"},"content":" FindCommand singleGroupCommand2 \u003d new FindCommandBuilder().withGroups(singleGroupPredicate2).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":134,"author":{"gitId":"RingoftheKing"},"content":" assertNotEquals(singleGroupCommand1, singleGroupCommand2);","lastModifiedDate":"2024-03-18"},{"lineNumber":135,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":136,"author":{"gitId":"RingoftheKing"},"content":" FindCommand multiGroupCommand1 \u003d new FindCommandBuilder().withGroups(multiGroupPredicate1).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":137,"author":{"gitId":"RingoftheKing"},"content":" FindCommand multiGroupCommand2 \u003d new FindCommandBuilder().withGroups(multiGroupPredicate2).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":138,"author":{"gitId":"RingoftheKing"},"content":" assertNotEquals(multiGroupCommand1, multiGroupCommand2);","lastModifiedDate":"2024-03-18"},{"lineNumber":139,"author":{"gitId":"RingoftheKing"},"content":" assertNotEquals(singleGroupCommand1, multiGroupCommand1);","lastModifiedDate":"2024-03-18"},{"lineNumber":140,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":141,"author":{"gitId":"RingoftheKing"},"content":" FindCommand multiGroupCopy \u003d new FindCommandBuilder().withGroups(multiGroupPredicate1).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":142,"author":{"gitId":"RingoftheKing"},"content":" assertEquals(multiGroupCommand1, multiGroupCopy);","lastModifiedDate":"2024-03-18"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":145,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":146,"author":{"gitId":"-"},"content":" public void execute_zeroKeywords_noPersonFound() {","lastModifiedDate":"2017-08-15"},{"lineNumber":147,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2017-06-12"},{"lineNumber":148,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2018-08-08"},{"lineNumber":149,"author":{"gitId":"RingoftheKing"},"content":" FindCommand command \u003d new FindCommandBuilder().withNamePred(predicate).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":150,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":151,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":156,"author":{"gitId":"-"},"content":" public void execute_multipleKeywords_multiplePersonsFound() {","lastModifiedDate":"2017-08-15"},{"lineNumber":157,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2017-06-12"},{"lineNumber":158,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\"Kurz Elle Kunz\");","lastModifiedDate":"2018-08-08"},{"lineNumber":159,"author":{"gitId":"RingoftheKing"},"content":" FindCommand command \u003d new FindCommandBuilder().withNamePred(predicate).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":160,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":165,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":166,"author":{"gitId":"RingoftheKing"},"content":" public void test_toStringMethod_withNameChange() {","lastModifiedDate":"2024-03-19"},{"lineNumber":167,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2019-02-23"},{"lineNumber":168,"author":{"gitId":"RingoftheKing"},"content":" FindCommand findCommand \u003d new FindCommandBuilder().withNamePred(predicate).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":169,"author":{"gitId":"RingoftheKing"},"content":" String expected \u003d FindCommand.class.getCanonicalName()","lastModifiedDate":"2024-03-19"},{"lineNumber":170,"author":{"gitId":"RingoftheKing"},"content":" + \"{\"","lastModifiedDate":"2024-03-19"},{"lineNumber":171,"author":{"gitId":"RingoftheKing"},"content":" + \"namePredicate\u003d\" + predicate + \", \"","lastModifiedDate":"2024-03-19"},{"lineNumber":172,"author":{"gitId":"RingoftheKing"},"content":" + \"phonePredicate\u003d\" + FindCommandBuilder.DEFAULT_PHONE_PRED + \", \"","lastModifiedDate":"2024-03-19"},{"lineNumber":173,"author":{"gitId":"RingoftheKing"},"content":" + \"emailPredicate\u003d\" + FindCommandBuilder.DEFAULT_EMAIL_PRED + \", \"","lastModifiedDate":"2024-03-19"},{"lineNumber":174,"author":{"gitId":"RingoftheKing"},"content":" + \"tagPredicate\u003d\" + FindCommandBuilder.DEFAULT_TAG_PRED + \", \"","lastModifiedDate":"2024-03-19"},{"lineNumber":175,"author":{"gitId":"RingoftheKing"},"content":" + \"groupPredicate\u003d\" + FindCommandBuilder.DEFAULT_GROUPS_PRED","lastModifiedDate":"2024-03-19"},{"lineNumber":176,"author":{"gitId":"RingoftheKing"},"content":" + \"}\";","lastModifiedDate":"2024-03-19"},{"lineNumber":177,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":180,"author":{"gitId":"RingoftheKing"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":181,"author":{"gitId":"RingoftheKing"},"content":" public void test_toStringMethod_withPhoneChange() {","lastModifiedDate":"2024-03-19"},{"lineNumber":182,"author":{"gitId":"RingoftheKing"},"content":" PhoneMatchesPredicate phoneMatchesPredicate \u003d new PhoneMatchesPredicate(\"123\");","lastModifiedDate":"2024-03-19"},{"lineNumber":183,"author":{"gitId":"RingoftheKing"},"content":" FindCommand findPhoneCommand \u003d new FindCommandBuilder().withPhone(phoneMatchesPredicate).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":184,"author":{"gitId":"RingoftheKing"},"content":" String expectedPhoneChange \u003d FindCommand.class.getCanonicalName()","lastModifiedDate":"2024-03-19"},{"lineNumber":185,"author":{"gitId":"RingoftheKing"},"content":" + \"{\"","lastModifiedDate":"2024-03-19"},{"lineNumber":186,"author":{"gitId":"RingoftheKing"},"content":" + \"namePredicate\u003d\" + FindCommandBuilder.DEFAULT_NAME_PRED + \", \"","lastModifiedDate":"2024-03-19"},{"lineNumber":187,"author":{"gitId":"RingoftheKing"},"content":" + \"phonePredicate\u003d\" + phoneMatchesPredicate + \", \"","lastModifiedDate":"2024-03-19"},{"lineNumber":188,"author":{"gitId":"RingoftheKing"},"content":" + \"emailPredicate\u003d\" + FindCommandBuilder.DEFAULT_EMAIL_PRED + \", \"","lastModifiedDate":"2024-03-19"},{"lineNumber":189,"author":{"gitId":"RingoftheKing"},"content":" + \"tagPredicate\u003d\" + FindCommandBuilder.DEFAULT_TAG_PRED + \", \"","lastModifiedDate":"2024-03-19"},{"lineNumber":190,"author":{"gitId":"RingoftheKing"},"content":" + \"groupPredicate\u003d\" + FindCommandBuilder.DEFAULT_GROUPS_PRED","lastModifiedDate":"2024-03-19"},{"lineNumber":191,"author":{"gitId":"RingoftheKing"},"content":" + \"}\";","lastModifiedDate":"2024-03-19"},{"lineNumber":192,"author":{"gitId":"RingoftheKing"},"content":" assertEquals(findPhoneCommand.toString(), expectedPhoneChange);","lastModifiedDate":"2024-03-19"},{"lineNumber":193,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":194,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":195,"author":{"gitId":"RingoftheKing"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":196,"author":{"gitId":"RingoftheKing"},"content":" public void test_toStringMethod_withEmailChange() {","lastModifiedDate":"2024-03-19"},{"lineNumber":197,"author":{"gitId":"RingoftheKing"},"content":" EmailMatchesPredicate emailMatchesPredicate \u003d new EmailMatchesPredicate(\"bobby\");","lastModifiedDate":"2024-03-19"},{"lineNumber":198,"author":{"gitId":"RingoftheKing"},"content":" FindCommand findPhoneCommand \u003d new FindCommandBuilder().withEmail(emailMatchesPredicate).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":199,"author":{"gitId":"RingoftheKing"},"content":" String expectedPhoneChange \u003d FindCommand.class.getCanonicalName()","lastModifiedDate":"2024-03-19"},{"lineNumber":200,"author":{"gitId":"RingoftheKing"},"content":" + \"{\"","lastModifiedDate":"2024-03-19"},{"lineNumber":201,"author":{"gitId":"RingoftheKing"},"content":" + \"namePredicate\u003d\" + FindCommandBuilder.DEFAULT_NAME_PRED + \", \"","lastModifiedDate":"2024-03-19"},{"lineNumber":202,"author":{"gitId":"RingoftheKing"},"content":" + \"phonePredicate\u003d\" + FindCommandBuilder.DEFAULT_PHONE_PRED + \", \"","lastModifiedDate":"2024-03-19"},{"lineNumber":203,"author":{"gitId":"RingoftheKing"},"content":" + \"emailPredicate\u003d\" + emailMatchesPredicate + \", \"","lastModifiedDate":"2024-03-19"},{"lineNumber":204,"author":{"gitId":"RingoftheKing"},"content":" + \"tagPredicate\u003d\" + FindCommandBuilder.DEFAULT_TAG_PRED + \", \"","lastModifiedDate":"2024-03-19"},{"lineNumber":205,"author":{"gitId":"RingoftheKing"},"content":" + \"groupPredicate\u003d\" + FindCommandBuilder.DEFAULT_GROUPS_PRED","lastModifiedDate":"2024-03-19"},{"lineNumber":206,"author":{"gitId":"RingoftheKing"},"content":" + \"}\";","lastModifiedDate":"2024-03-19"},{"lineNumber":207,"author":{"gitId":"RingoftheKing"},"content":" assertEquals(findPhoneCommand.toString(), expectedPhoneChange);","lastModifiedDate":"2024-03-19"},{"lineNumber":208,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":209,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":210,"author":{"gitId":"RingoftheKing"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":211,"author":{"gitId":"RingoftheKing"},"content":" public void test_toStringMethod_withTagChange() {","lastModifiedDate":"2024-03-19"},{"lineNumber":212,"author":{"gitId":"RingoftheKing"},"content":" TagMatchesPredicate tagMatchesPredicate \u003d new TagMatchesPredicate(\"TA\");","lastModifiedDate":"2024-03-19"},{"lineNumber":213,"author":{"gitId":"RingoftheKing"},"content":" FindCommand findPhoneCommand \u003d new FindCommandBuilder().withTag(tagMatchesPredicate).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":214,"author":{"gitId":"RingoftheKing"},"content":" String expectedPhoneChange \u003d FindCommand.class.getCanonicalName()","lastModifiedDate":"2024-03-19"},{"lineNumber":215,"author":{"gitId":"RingoftheKing"},"content":" + \"{\"","lastModifiedDate":"2024-03-19"},{"lineNumber":216,"author":{"gitId":"RingoftheKing"},"content":" + \"namePredicate\u003d\" + FindCommandBuilder.DEFAULT_NAME_PRED + \", \"","lastModifiedDate":"2024-03-19"},{"lineNumber":217,"author":{"gitId":"RingoftheKing"},"content":" + \"phonePredicate\u003d\" + FindCommandBuilder.DEFAULT_PHONE_PRED + \", \"","lastModifiedDate":"2024-03-19"},{"lineNumber":218,"author":{"gitId":"RingoftheKing"},"content":" + \"emailPredicate\u003d\" + FindCommandBuilder.DEFAULT_EMAIL_PRED + \", \"","lastModifiedDate":"2024-03-19"},{"lineNumber":219,"author":{"gitId":"RingoftheKing"},"content":" + \"tagPredicate\u003d\" + tagMatchesPredicate + \", \"","lastModifiedDate":"2024-03-19"},{"lineNumber":220,"author":{"gitId":"RingoftheKing"},"content":" + \"groupPredicate\u003d\" + FindCommandBuilder.DEFAULT_GROUPS_PRED","lastModifiedDate":"2024-03-19"},{"lineNumber":221,"author":{"gitId":"RingoftheKing"},"content":" + \"}\";","lastModifiedDate":"2024-03-19"},{"lineNumber":222,"author":{"gitId":"RingoftheKing"},"content":" assertEquals(findPhoneCommand.toString(), expectedPhoneChange);","lastModifiedDate":"2024-03-19"},{"lineNumber":223,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":224,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":225,"author":{"gitId":"RingoftheKing"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":226,"author":{"gitId":"RingoftheKing"},"content":" public void test_toStringMethod_withGroupChange() {","lastModifiedDate":"2024-03-19"},{"lineNumber":227,"author":{"gitId":"RingoftheKing"},"content":" GroupMatchesPredicate groupMatchesPredicate \u003d new GroupMatchesPredicate(List.of(\"CS2103T\"));","lastModifiedDate":"2024-03-19"},{"lineNumber":228,"author":{"gitId":"RingoftheKing"},"content":" FindCommand findPhoneCommand \u003d new FindCommandBuilder().withGroups(groupMatchesPredicate).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":229,"author":{"gitId":"RingoftheKing"},"content":" String expectedPhoneChange \u003d FindCommand.class.getCanonicalName()","lastModifiedDate":"2024-03-19"},{"lineNumber":230,"author":{"gitId":"RingoftheKing"},"content":" + \"{\"","lastModifiedDate":"2024-03-19"},{"lineNumber":231,"author":{"gitId":"RingoftheKing"},"content":" + \"namePredicate\u003d\" + FindCommandBuilder.DEFAULT_NAME_PRED + \", \"","lastModifiedDate":"2024-03-19"},{"lineNumber":232,"author":{"gitId":"RingoftheKing"},"content":" + \"phonePredicate\u003d\" + FindCommandBuilder.DEFAULT_PHONE_PRED + \", \"","lastModifiedDate":"2024-03-19"},{"lineNumber":233,"author":{"gitId":"RingoftheKing"},"content":" + \"emailPredicate\u003d\" + FindCommandBuilder.DEFAULT_EMAIL_PRED + \", \"","lastModifiedDate":"2024-03-19"},{"lineNumber":234,"author":{"gitId":"RingoftheKing"},"content":" + \"tagPredicate\u003d\" + FindCommandBuilder.DEFAULT_TAG_PRED + \", \"","lastModifiedDate":"2024-03-19"},{"lineNumber":235,"author":{"gitId":"RingoftheKing"},"content":" + \"groupPredicate\u003d\" + groupMatchesPredicate","lastModifiedDate":"2024-03-19"},{"lineNumber":236,"author":{"gitId":"RingoftheKing"},"content":" + \"}\";","lastModifiedDate":"2024-03-19"},{"lineNumber":237,"author":{"gitId":"RingoftheKing"},"content":" assertEquals(findPhoneCommand.toString(), expectedPhoneChange);","lastModifiedDate":"2024-03-19"},{"lineNumber":238,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":239,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":240,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12"},{"lineNumber":241,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2018-08-08"},{"lineNumber":242,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":243,"author":{"gitId":"-"},"content":" private NameContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2018-08-08"},{"lineNumber":244,"author":{"gitId":"-"},"content":" return new NameContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2018-08-08"},{"lineNumber":245,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":246,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"RingoftheKing":167,"-":79}},{"path":"src/test/java/seedu/address/logic/commands/GroupCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Ragnapop"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"Ragnapop"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"Ragnapop"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"Ragnapop"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"Ragnapop"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY_GROUP;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"Ragnapop"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB_GROUP;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"Ragnapop"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GROUP_HUSBAND;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"Ragnapop"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NUSID_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"Ragnapop"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NUSID_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"Ragnapop"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"Ragnapop"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"Ragnapop"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"Ragnapop"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"Ragnapop"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"Ragnapop"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"Ragnapop"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"Ragnapop"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"Ragnapop"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"Ragnapop"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"Ragnapop"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"Ragnapop"},"content":"import seedu.address.model.person.NusId;","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"Ragnapop"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"Ragnapop"},"content":"import seedu.address.testutil.GroupPersonDescriptorBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"Ragnapop"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"Ragnapop"},"content":"class GroupCommandTest {","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"Ragnapop"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"Ragnapop"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"Ragnapop"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"Ragnapop"},"content":" Person groupedPerson \u003d model.getFilteredPersonList().get(0);","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"Ragnapop"},"content":" PersonBuilder personInList \u003d new PersonBuilder(groupedPerson);","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"Ragnapop"},"content":" GroupCommand.GroupPersonDescriptor descriptor \u003d new GroupPersonDescriptorBuilder(groupedPerson)","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"Ragnapop"},"content":" .build();","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"Ragnapop"},"content":" GroupCommand groupCommand \u003d new GroupCommand(groupedPerson.getNusId(), descriptor);","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"Ragnapop"},"content":" String expectedMessage \u003d String.format(GroupCommand.MESSAGE_GROUP_PERSON_SUCCESS,","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"Ragnapop"},"content":" Messages.format(groupedPerson));","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"Ragnapop"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"Ragnapop"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), groupedPerson);","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"Ragnapop"},"content":" assertCommandSuccess(groupCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"Ragnapop"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"Ragnapop"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"Ragnapop"},"content":" NusId nusId \u003d new NusId(\"E0000000\"); // NusId does not exist","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"Ragnapop"},"content":" GroupCommand groupCommand \u003d new GroupCommand(nusId, new GroupCommand.GroupPersonDescriptor());","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"Ragnapop"},"content":" assertCommandFailure(groupCommand, model, Messages.MESSAGE_NON_EXISTENT_PERSON);","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"Ragnapop"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"Ragnapop"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"Ragnapop"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"Ragnapop"},"content":" NusId nusId \u003d new NusId(\"E0000000\"); // NusId does not exist","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"Ragnapop"},"content":" GroupCommand.GroupPersonDescriptor descriptor \u003d new GroupPersonDescriptorBuilder().withNusId(\"E0000000\")","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"Ragnapop"},"content":" .build();","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"Ragnapop"},"content":" GroupCommand editCommand \u003d new GroupCommand(nusId, descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"Ragnapop"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_NON_EXISTENT_PERSON);","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"Ragnapop"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":72,"author":{"gitId":"Ragnapop"},"content":" public void equals() {","lastModifiedDate":"2024-03-14"},{"lineNumber":73,"author":{"gitId":"Ragnapop"},"content":" final GroupCommand standardCommand \u003d","lastModifiedDate":"2024-03-14"},{"lineNumber":74,"author":{"gitId":"Ragnapop"},"content":" new GroupCommand(new NusId(VALID_NUSID_AMY), DESC_AMY_GROUP);","lastModifiedDate":"2024-03-14"},{"lineNumber":75,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":76,"author":{"gitId":"Ragnapop"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-14"},{"lineNumber":77,"author":{"gitId":"Ragnapop"},"content":" GroupCommand.GroupPersonDescriptor copyDescriptor \u003d","lastModifiedDate":"2024-03-14"},{"lineNumber":78,"author":{"gitId":"Ragnapop"},"content":" new GroupPersonDescriptorBuilder().withNusId(VALID_NUSID_AMY).withTag(VALID_TAG_AMY)","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"Ragnapop"},"content":" .withGroups(VALID_GROUP_HUSBAND).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":81,"author":{"gitId":"Ragnapop"},"content":" GroupCommand commandWithSameValues \u003d new GroupCommand(new NusId(VALID_NUSID_AMY), copyDescriptor);","lastModifiedDate":"2024-03-14"},{"lineNumber":82,"author":{"gitId":"Ragnapop"},"content":" //assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":84,"author":{"gitId":"Ragnapop"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-14"},{"lineNumber":85,"author":{"gitId":"Ragnapop"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-03-14"},{"lineNumber":86,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":87,"author":{"gitId":"Ragnapop"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":88,"author":{"gitId":"Ragnapop"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-03-14"},{"lineNumber":89,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":90,"author":{"gitId":"Ragnapop"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":91,"author":{"gitId":"Ragnapop"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2024-03-14"},{"lineNumber":92,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":93,"author":{"gitId":"Ragnapop"},"content":" // different index -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":94,"author":{"gitId":"Ragnapop"},"content":" assertFalse(standardCommand.equals(new GroupCommand(new NusId(VALID_NUSID_AMY), DESC_AMY_GROUP)));","lastModifiedDate":"2024-03-14"},{"lineNumber":95,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":96,"author":{"gitId":"Ragnapop"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":97,"author":{"gitId":"Ragnapop"},"content":" assertFalse(standardCommand.equals(new GroupCommand(new NusId(VALID_NUSID_BOB), DESC_BOB_GROUP)));","lastModifiedDate":"2024-03-14"},{"lineNumber":98,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":99,"author":{"gitId":"Ragnapop"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":100,"author":{"gitId":"Ragnapop"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-14"},{"lineNumber":101,"author":{"gitId":"Ragnapop"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-14"},{"lineNumber":102,"author":{"gitId":"Ragnapop"},"content":" GroupCommand.GroupPersonDescriptor groupPersonDescriptor \u003d new GroupCommand.GroupPersonDescriptor();","lastModifiedDate":"2024-03-14"},{"lineNumber":103,"author":{"gitId":"Ragnapop"},"content":" GroupCommand groupCommand \u003d new GroupCommand(new NusId(VALID_NUSID_BOB),","lastModifiedDate":"2024-03-14"},{"lineNumber":104,"author":{"gitId":"Ragnapop"},"content":" groupPersonDescriptor);","lastModifiedDate":"2024-03-14"},{"lineNumber":105,"author":{"gitId":"Ragnapop"},"content":" String expected \u003d GroupCommand.class.getCanonicalName() + \"{nusid\u003d\" + VALID_NUSID_BOB","lastModifiedDate":"2024-03-20"},{"lineNumber":106,"author":{"gitId":"Ragnapop"},"content":" + \", groupPersonDescriptor\u003d\"","lastModifiedDate":"2024-03-19"},{"lineNumber":107,"author":{"gitId":"Ragnapop"},"content":" + groupPersonDescriptor + \"}\";","lastModifiedDate":"2024-03-14"},{"lineNumber":108,"author":{"gitId":"Ragnapop"},"content":" assertEquals(expected, groupCommand.toString());","lastModifiedDate":"2024-03-14"},{"lineNumber":109,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":110,"author":{"gitId":"Ragnapop"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"Ragnapop":110}},{"path":"src/test/java/seedu/address/logic/commands/ScheduleCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Rikko1204"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"Rikko1204"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"Rikko1204"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_REMARK_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SCHEDULE_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"Rikko1204"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"Rikko1204"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"Rikko1204"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"Rikko1204"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"Rikko1204"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"Rikko1204"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"Rikko1204"},"content":"import seedu.address.model.person.Schedule;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"Rikko1204"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"Rikko1204"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"Rikko1204"},"content":" * Contains integration tests (interaction with the Model) and unit tests for ScheduleCommand.","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"Rikko1204"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"Rikko1204"},"content":"public class ScheduleCommandTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"Rikko1204"},"content":" private static final String SCHEDULE_STUB \u003d \"12-12-2012\";","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"Rikko1204"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"Rikko1204"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"Rikko1204"},"content":" public void equals() {","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"Rikko1204"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"Rikko1204"},"content":" final ScheduleCommand standardCommand \u003d","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"Rikko1204"},"content":" new ScheduleCommand(person.getNusId(), person.getSchedule(), person.getRemark());","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"Rikko1204"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"Rikko1204"},"content":" ScheduleCommand commandWithSameValues \u003d","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"Rikko1204"},"content":" new ScheduleCommand(person.getNusId(), person.getSchedule(), person.getRemark());","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"Rikko1204"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"Rikko1204"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"Rikko1204"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"Rikko1204"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"Rikko1204"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"Rikko1204"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"Rikko1204"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"Rikko1204"},"content":" // different schedule -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"Rikko1204"},"content":" assertFalse(standardCommand.equals(new ScheduleCommand(person.getNusId(),","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"Rikko1204"},"content":" new Schedule(VALID_SCHEDULE_AMY), person.getRemark())));","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"Rikko1204"},"content":" // different remark -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"Rikko1204"},"content":" assertFalse(standardCommand.equals(new ScheduleCommand(person.getNusId(),","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"Rikko1204"},"content":" person.getSchedule(), new Remark(VALID_REMARK_AMY))));","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"Rikko1204"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"Rikko1204":49}},{"path":"src/test/java/seedu/address/logic/commands/ViewCommandTest.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":"-"},"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":"hjuntan"},"content":" * Contains integration tests (interaction with the Model) and unit tests for ViewCommand.","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"hjuntan"},"content":"public class ViewCommandTest {","lastModifiedDate":"2024-03-20"},{"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":"hjuntan"},"content":" assertCommandSuccess(new ViewCommand(), model, ViewCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-03-20"},{"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":"hjuntan"},"content":" assertCommandSuccess(new ViewCommand(), model, ViewCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"hjuntan":4,"-":35}},{"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":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.logic.commands.CommandTestUtil.GROUP_DESC_FRIEND;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.logic.commands.CommandTestUtil.GROUP_DESC_HUSBAND;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_GROUP_DESC;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NUSID_DESC;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NUSID_DESC_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NUSID_DESC_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GROUP_FRIEND;","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GROUP_HUSBAND;","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NUSID_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NUSID;","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":35,"author":{"gitId":"hjuntan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-11"},{"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":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15"},{"lineNumber":45,"author":{"gitId":"hjuntan"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15"},{"lineNumber":48,"author":{"gitId":"Rikko1204"},"content":"import seedu.address.model.person.NusId;","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-06-15"},{"lineNumber":51,"author":{"gitId":"hjuntan"},"content":"import seedu.address.model.person.Tag;","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":59,"author":{"gitId":"hjuntan"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withGroups(VALID_GROUP_FRIEND).build();","lastModifiedDate":"2024-03-11"},{"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":"Rikko1204"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NUSID_DESC_BOB + NAME_DESC_BOB + PHONE_DESC_BOB","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"Rikko1204"},"content":" + EMAIL_DESC_BOB + TAG_DESC_BOB + GROUP_DESC_FRIEND, new AddCommand(expectedPerson));","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":66,"author":{"gitId":"hjuntan"},"content":" // multiple groups - all accepted","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"hjuntan"},"content":" Person expectedPersonMultipleGroups \u003d new PersonBuilder(BOB).withGroups(VALID_GROUP_FRIEND, VALID_GROUP_HUSBAND)","lastModifiedDate":"2024-03-11"},{"lineNumber":68,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25"},{"lineNumber":69,"author":{"gitId":"Rikko1204"},"content":" assertParseSuccess(parser, NUSID_DESC_BOB + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"Rikko1204"},"content":" + TAG_DESC_BOB + GROUP_DESC_HUSBAND + GROUP_DESC_FRIEND,","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"hjuntan"},"content":" new AddCommand(expectedPersonMultipleGroups));","lastModifiedDate":"2024-03-11"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14"},{"lineNumber":75,"author":{"gitId":"hjuntan"},"content":" public void parse_repeatedNonGroupValue_failure() {","lastModifiedDate":"2024-03-11"},{"lineNumber":76,"author":{"gitId":"Rikko1204"},"content":" String validExpectedPersonString \u003d NUSID_DESC_BOB + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"hjuntan"},"content":" + TAG_DESC_BOB + GROUP_DESC_FRIEND;","lastModifiedDate":"2024-03-11"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":79,"author":{"gitId":"Rikko1204"},"content":" // multiple nusIds","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"Rikko1204"},"content":" assertParseFailure(parser, NUSID_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-12"},{"lineNumber":81,"author":{"gitId":"Rikko1204"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NUSID));","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":95,"author":{"gitId":"hjuntan"},"content":" // multiple tags","lastModifiedDate":"2024-03-11"},{"lineNumber":96,"author":{"gitId":"hjuntan"},"content":" assertParseFailure(parser, TAG_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-11"},{"lineNumber":97,"author":{"gitId":"hjuntan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TAG));","lastModifiedDate":"2024-03-11"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":99,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":101,"author":{"gitId":"hjuntan"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY + TAG_DESC_AMY","lastModifiedDate":"2024-03-11"},{"lineNumber":102,"author":{"gitId":"-"},"content":" + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":103,"author":{"gitId":"Rikko1204"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NUSID, PREFIX_NAME, PREFIX_TAG,","lastModifiedDate":"2024-03-12"},{"lineNumber":104,"author":{"gitId":"Rikko1204"},"content":" PREFIX_EMAIL, PREFIX_PHONE));","lastModifiedDate":"2024-03-12"},{"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":"Rikko1204"},"content":" // invalid nusId","lastModifiedDate":"2024-03-12"},{"lineNumber":109,"author":{"gitId":"Rikko1204"},"content":" assertParseFailure(parser, INVALID_NUSID_DESC + validExpectedPersonString,","lastModifiedDate":"2024-03-12"},{"lineNumber":110,"author":{"gitId":"Rikko1204"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NUSID));","lastModifiedDate":"2024-03-12"},{"lineNumber":111,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":112,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":124,"author":{"gitId":"hjuntan"},"content":" // invalid tag","lastModifiedDate":"2024-03-11"},{"lineNumber":125,"author":{"gitId":"hjuntan"},"content":" assertParseFailure(parser, INVALID_TAG_DESC + validExpectedPersonString,","lastModifiedDate":"2024-03-11"},{"lineNumber":126,"author":{"gitId":"hjuntan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TAG));","lastModifiedDate":"2024-03-11"},{"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":"Rikko1204"},"content":" // invalid nusId","lastModifiedDate":"2024-03-12"},{"lineNumber":131,"author":{"gitId":"Rikko1204"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NUSID_DESC,","lastModifiedDate":"2024-03-12"},{"lineNumber":132,"author":{"gitId":"Rikko1204"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NUSID));","lastModifiedDate":"2024-03-12"},{"lineNumber":133,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":134,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":138,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":140,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":142,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":144,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":146,"author":{"gitId":"hjuntan"},"content":" // invalid tag","lastModifiedDate":"2024-03-11"},{"lineNumber":147,"author":{"gitId":"hjuntan"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_TAG_DESC,","lastModifiedDate":"2024-03-11"},{"lineNumber":148,"author":{"gitId":"hjuntan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TAG));","lastModifiedDate":"2024-03-11"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":151,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":152,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":153,"author":{"gitId":"hjuntan"},"content":" // zero groups","lastModifiedDate":"2024-03-11"},{"lineNumber":154,"author":{"gitId":"hjuntan"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withGroups().build();","lastModifiedDate":"2024-03-11"},{"lineNumber":155,"author":{"gitId":"Rikko1204"},"content":" assertParseSuccess(parser, NUSID_DESC_AMY + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2024-03-12"},{"lineNumber":156,"author":{"gitId":"Rikko1204"},"content":" + EMAIL_DESC_AMY + TAG_DESC_AMY, new AddCommand(expectedPerson));","lastModifiedDate":"2024-03-12"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":159,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":160,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":161,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":163,"author":{"gitId":"Rikko1204"},"content":" // missing nusId prefix","lastModifiedDate":"2024-03-12"},{"lineNumber":164,"author":{"gitId":"Rikko1204"},"content":" assertParseFailure(parser, VALID_NUSID_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + TAG_DESC_BOB,","lastModifiedDate":"2024-03-12"},{"lineNumber":165,"author":{"gitId":"Rikko1204"},"content":" expectedMessage);","lastModifiedDate":"2024-03-12"},{"lineNumber":166,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":167,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":168,"author":{"gitId":"hjuntan"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + TAG_DESC_BOB,","lastModifiedDate":"2024-03-11"},{"lineNumber":169,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":171,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":172,"author":{"gitId":"hjuntan"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB + TAG_DESC_BOB,","lastModifiedDate":"2024-03-11"},{"lineNumber":173,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":175,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":176,"author":{"gitId":"hjuntan"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + TAG_DESC_BOB,","lastModifiedDate":"2024-03-11"},{"lineNumber":177,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":179,"author":{"gitId":"hjuntan"},"content":" // missing tag prefix","lastModifiedDate":"2024-03-11"},{"lineNumber":180,"author":{"gitId":"hjuntan"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_TAG_BOB,","lastModifiedDate":"2024-03-11"},{"lineNumber":181,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":183,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15"},{"lineNumber":184,"author":{"gitId":"hjuntan"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_TAG_BOB,","lastModifiedDate":"2024-03-11"},{"lineNumber":185,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":188,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":189,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":190,"author":{"gitId":"Rikko1204"},"content":" // invalid nusId","lastModifiedDate":"2024-03-12"},{"lineNumber":191,"author":{"gitId":"Rikko1204"},"content":" assertParseFailure(parser, INVALID_NUSID_DESC + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-12"},{"lineNumber":192,"author":{"gitId":"Rikko1204"},"content":" + TAG_DESC_BOB + GROUP_DESC_HUSBAND + GROUP_DESC_FRIEND, NusId.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":193,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":194,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":195,"author":{"gitId":"Rikko1204"},"content":" assertParseFailure(parser, NUSID_DESC_BOB + INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-12"},{"lineNumber":196,"author":{"gitId":"Rikko1204"},"content":" + TAG_DESC_BOB + GROUP_DESC_HUSBAND + GROUP_DESC_FRIEND, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":198,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15"},{"lineNumber":199,"author":{"gitId":"Rikko1204"},"content":" assertParseFailure(parser, NUSID_DESC_BOB + NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-12"},{"lineNumber":200,"author":{"gitId":"Rikko1204"},"content":" + TAG_DESC_BOB + GROUP_DESC_HUSBAND + GROUP_DESC_FRIEND, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":202,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15"},{"lineNumber":203,"author":{"gitId":"Rikko1204"},"content":" assertParseFailure(parser, NUSID_DESC_BOB + NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC","lastModifiedDate":"2024-03-12"},{"lineNumber":204,"author":{"gitId":"Rikko1204"},"content":" + TAG_DESC_BOB + GROUP_DESC_HUSBAND + GROUP_DESC_FRIEND, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":206,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2024-03-11"},{"lineNumber":207,"author":{"gitId":"Rikko1204"},"content":" assertParseFailure(parser, NUSID_DESC_BOB + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-12"},{"lineNumber":208,"author":{"gitId":"Rikko1204"},"content":" + INVALID_TAG_DESC + GROUP_DESC_HUSBAND + GROUP_DESC_FRIEND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":210,"author":{"gitId":"hjuntan"},"content":" // invalid group","lastModifiedDate":"2024-03-11"},{"lineNumber":211,"author":{"gitId":"Rikko1204"},"content":" assertParseFailure(parser, NUSID_DESC_BOB + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-12"},{"lineNumber":212,"author":{"gitId":"Rikko1204"},"content":" + TAG_DESC_BOB + INVALID_GROUP_DESC + VALID_GROUP_FRIEND, Group.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":214,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":215,"author":{"gitId":"Rikko1204"},"content":" assertParseFailure(parser, NUSID_DESC_BOB + INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-12"},{"lineNumber":216,"author":{"gitId":"Rikko1204"},"content":" + INVALID_TAG_DESC, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":219,"author":{"gitId":"Rikko1204"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NUSID_DESC_BOB + NAME_DESC_BOB + PHONE_DESC_BOB","lastModifiedDate":"2024-03-12"},{"lineNumber":220,"author":{"gitId":"Rikko1204"},"content":" + EMAIL_DESC_BOB + TAG_DESC_BOB + GROUP_DESC_HUSBAND + GROUP_DESC_FRIEND,","lastModifiedDate":"2024-03-12"},{"lineNumber":221,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":223,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"Rikko1204":56,"hjuntan":28,"-":139}},{"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":"","lastModifiedDate":"2017-05-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-06-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":22,"author":{"gitId":"Rikko1204"},"content":"import seedu.address.logic.commands.ScheduleCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"hjuntan"},"content":"import seedu.address.logic.commands.ViewCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"cheahTJ"},"content":"import seedu.address.model.person.NusId;","lastModifiedDate":"2024-03-13"},{"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":"RingoftheKing"},"content":"import seedu.address.testutil.FindCommandBuilder;","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"cheahTJ"},"content":" NusId testNusId \u003d new NusId(\"E1234567\");","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"cheahTJ"},"content":" DeleteCommand.COMMAND_WORD + \" \" + testNusId);","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"cheahTJ"},"content":" assertEquals(new DeleteCommand(testNusId), command);","lastModifiedDate":"2024-03-13"},{"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_edit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":60,"author":{"gitId":"cheahTJ"},"content":" String defaultNusId \u003d \"E1234567\";","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"cheahTJ"},"content":" NusId nusId \u003d new NusId(defaultNusId);","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27"},{"lineNumber":66,"author":{"gitId":"cheahTJ"},"content":" + defaultNusId + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"cheahTJ"},"content":" assertEquals(new EditCommand(nusId, descriptor), command);","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":77,"author":{"gitId":"RingoftheKing"},"content":" public void parseCommand_findName() throws Exception {","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12"},{"lineNumber":79,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":80,"author":{"gitId":"RingoftheKing"},"content":" FindCommand.COMMAND_WORD + \" \" + CliSyntax.PREFIX_NAME + String.join(\" \", keywords));","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"RingoftheKing"},"content":" assertEquals(new FindCommandBuilder().withNamePred(","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"RingoftheKing"},"content":" new NameContainsKeywordsPredicate(keywords)).build(), command);","lastModifiedDate":"2024-03-21"},{"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_help() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","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":"Rikko1204"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"Rikko1204"},"content":" public void parseCommand_schedule() throws Exception {","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"Rikko1204"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"Rikko1204"},"content":" ScheduleCommand command \u003d (ScheduleCommand) parser.parseCommand(","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"Rikko1204"},"content":" ScheduleCommand.COMMAND_WORD + \" \" + PersonUtil.getPersonScheduleDetails(person));","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"Rikko1204"},"content":" assertEquals(new ScheduleCommand(person.getNusId(), person.getSchedule(), person.getRemark()), command);","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":101,"author":{"gitId":"hjuntan"},"content":" assertTrue(parser.parseCommand(ViewCommand.COMMAND_WORD) instanceof ViewCommand);","lastModifiedDate":"2024-03-20"},{"lineNumber":102,"author":{"gitId":"hjuntan"},"content":" assertTrue(parser.parseCommand(ViewCommand.COMMAND_WORD + \" 3\") instanceof ViewCommand);","lastModifiedDate":"2024-03-20"},{"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_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":115,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"cheahTJ":9,"Rikko1204":9,"RingoftheKing":5,"hjuntan":3,"-":89}},{"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":"-"},"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":"hjuntan"},"content":" String argsString \u003d \" some random string /t group with leading and trailing spaces \";","lastModifiedDate":"2024-03-11"},{"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":{"hjuntan":1,"-":149}},{"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":"Ragnapop"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"Ragnapop"},"content":" * Asserts that the parsing of {@code userInput} by {@code parser} is successful and the command created","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"Ragnapop"},"content":" * equals to {@code expectedCommand}.Specialised for group command.","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"Ragnapop"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"Ragnapop"},"content":" public static void assertParseSuccessGroup(Parser\u003c? extends Command\u003e parser, String userInput,","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"Ragnapop"},"content":" Command expectedCommand) {","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"Ragnapop"},"content":" try {","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"Ragnapop"},"content":" Command command \u003d parser.parse(userInput);","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"Ragnapop"},"content":" assertEquals(expectedCommand.toString(), command.toString());","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"Ragnapop"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"Ragnapop"},"content":" throw new IllegalArgumentException(\"Invalid userInput.\", pe);","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-06"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Asserts that the parsing of {@code userInput} by {@code parser} is unsuccessful and the error message","lastModifiedDate":"2017-07-06"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * equals to {@code expectedMessage}.","lastModifiedDate":"2017-07-06"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-06"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static void assertParseFailure(Parser\u003c? extends Command\u003e parser, String userInput, String expectedMessage) {","lastModifiedDate":"2022-02-20"},{"lineNumber":45,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-07-06"},{"lineNumber":46,"author":{"gitId":"-"},"content":" parser.parse(userInput);","lastModifiedDate":"2017-07-06"},{"lineNumber":47,"author":{"gitId":"-"},"content":" throw new AssertionError(\"The expected ParseException was not thrown.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":48,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2017-07-06"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, pe.getMessage());","lastModifiedDate":"2017-07-06"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-06"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-06"},{"lineNumber":52,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-07-06"}],"authorContributionMap":{"Ragnapop":13,"-":39}},{"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":"2017-06-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-09"},{"lineNumber":10,"author":{"gitId":"cheahTJ"},"content":"import seedu.address.model.person.NusId;","lastModifiedDate":"2024-03-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":"cheahTJ"},"content":" NusId testNusId \u003d new NusId(\"E1234567\");","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"cheahTJ"},"content":" assertParseSuccess(parser, \"E1234567\", new DeleteCommand(testNusId));","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"a\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-07-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09"}],"authorContributionMap":{"cheahTJ":3,"-":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.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":"hjuntan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.GROUP_DESC_FRIEND;","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"hjuntan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.GROUP_DESC_HUSBAND;","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"hjuntan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_GROUP_DESC;","lastModifiedDate":"2024-03-11"},{"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":"2024-03-11"},{"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":"hjuntan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"hjuntan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_BOB;","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":19,"author":{"gitId":"hjuntan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GROUP_FRIEND;","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"hjuntan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GROUP_HUSBAND;","lastModifiedDate":"2024-03-11"},{"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":"hjuntan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":26,"author":{"gitId":"hjuntan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GROUP;","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-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":"","lastModifiedDate":"2017-05-04"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-04"},{"lineNumber":37,"author":{"gitId":"hjuntan"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"cheahTJ"},"content":"import seedu.address.model.person.NusId;","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"cheahTJ"},"content":"import seedu.address.model.person.Tag;","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":47,"author":{"gitId":"hjuntan"},"content":" private static final String GROUP_EMPTY \u003d \" \" + PREFIX_GROUP;","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":49,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":60,"author":{"gitId":"cheahTJ"},"content":" assertParseFailure(parser, \"E0123456\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":69,"author":{"gitId":"cheahTJ"},"content":" assertParseFailure(parser, \"E0123456 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":72,"author":{"gitId":"cheahTJ"},"content":" assertParseFailure(parser, \"E0123456 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-19"},{"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_invalidValue_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":77,"author":{"gitId":"cheahTJ"},"content":" assertParseFailure(parser, \"E0123456\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"cheahTJ"},"content":" assertParseFailure(parser, \"E0123456\" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"cheahTJ"},"content":" assertParseFailure(parser, \"E0123456\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"cheahTJ"},"content":" assertParseFailure(parser, \"E0123456\" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"cheahTJ"},"content":" assertParseFailure(parser, \"E0123456\" + INVALID_GROUP_DESC, Group.MESSAGE_CONSTRAINTS); // invalid group","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":83,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04"},{"lineNumber":84,"author":{"gitId":"cheahTJ"},"content":" assertParseFailure(parser, \"E0123456\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":86,"author":{"gitId":"hjuntan"},"content":" // while parsing {@code PREFIX_GROUP} alone will reset the groups of the {@code Person} being edited,","lastModifiedDate":"2024-03-11"},{"lineNumber":87,"author":{"gitId":"hjuntan"},"content":" // parsing it together with a valid group results in error","lastModifiedDate":"2024-03-11"},{"lineNumber":88,"author":{"gitId":"cheahTJ"},"content":" assertParseFailure(parser, \"E0123456\" + GROUP_DESC_FRIEND + GROUP_DESC_HUSBAND","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"hjuntan"},"content":" + GROUP_EMPTY, Group.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-11"},{"lineNumber":90,"author":{"gitId":"cheahTJ"},"content":" assertParseFailure(parser, \"E0123456\" + GROUP_DESC_FRIEND + GROUP_EMPTY","lastModifiedDate":"2024-03-19"},{"lineNumber":91,"author":{"gitId":"hjuntan"},"content":" + GROUP_DESC_HUSBAND, Group.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-11"},{"lineNumber":92,"author":{"gitId":"cheahTJ"},"content":" assertParseFailure(parser, \"E0123456\" + GROUP_EMPTY + GROUP_DESC_FRIEND","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"hjuntan"},"content":" + GROUP_DESC_HUSBAND, Group.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-11"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":95,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04"},{"lineNumber":96,"author":{"gitId":"cheahTJ"},"content":" assertParseFailure(parser, \"E0123456\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"hjuntan"},"content":" + VALID_TAG_AMY + VALID_PHONE_AMY,","lastModifiedDate":"2024-03-11"},{"lineNumber":98,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":102,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":103,"author":{"gitId":"cheahTJ"},"content":" //Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"cheahTJ"},"content":" String defaultNusId \u003d \"E1234567\";","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"cheahTJ"},"content":" NusId nusId \u003d new NusId(defaultNusId);","lastModifiedDate":"2024-03-19"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":107,"author":{"gitId":"cheahTJ"},"content":" String userInput \u003d defaultNusId + PHONE_DESC_BOB + GROUP_DESC_HUSBAND","lastModifiedDate":"2024-03-19"},{"lineNumber":108,"author":{"gitId":"hjuntan"},"content":" + EMAIL_DESC_AMY + TAG_DESC_AMY + NAME_DESC_AMY + GROUP_DESC_FRIEND;","lastModifiedDate":"2024-03-11"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":110,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-05-04"},{"lineNumber":111,"author":{"gitId":"hjuntan"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withTag(VALID_TAG_AMY)","lastModifiedDate":"2024-03-11"},{"lineNumber":112,"author":{"gitId":"hjuntan"},"content":" .withGroups(VALID_GROUP_HUSBAND, VALID_GROUP_FRIEND).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":113,"author":{"gitId":"cheahTJ"},"content":" EditCommand expectedCommand \u003d new EditCommand(nusId, descriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":119,"author":{"gitId":"cheahTJ"},"content":" //Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-19"},{"lineNumber":120,"author":{"gitId":"cheahTJ"},"content":" String defaultNusId \u003d \"E1234567\";","lastModifiedDate":"2024-03-19"},{"lineNumber":121,"author":{"gitId":"cheahTJ"},"content":" NusId nusId \u003d new NusId(defaultNusId);","lastModifiedDate":"2024-03-19"},{"lineNumber":122,"author":{"gitId":"cheahTJ"},"content":" String userInput \u003d defaultNusId + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":124,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-04"},{"lineNumber":125,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":126,"author":{"gitId":"cheahTJ"},"content":" EditCommand expectedCommand \u003d new EditCommand(nusId, descriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":132,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":133,"author":{"gitId":"cheahTJ"},"content":" String defaultNusId \u003d \"E1234567\";","lastModifiedDate":"2024-03-19"},{"lineNumber":134,"author":{"gitId":"cheahTJ"},"content":" NusId nusId \u003d new NusId(defaultNusId);","lastModifiedDate":"2024-03-19"},{"lineNumber":135,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":136,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04"},{"lineNumber":137,"author":{"gitId":"cheahTJ"},"content":" //Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2024-03-19"},{"lineNumber":138,"author":{"gitId":"cheahTJ"},"content":" String userInput \u003d defaultNusId + NAME_DESC_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":139,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":140,"author":{"gitId":"cheahTJ"},"content":" EditCommand expectedCommand \u003d new EditCommand(nusId, descriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":143,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2017-05-04"},{"lineNumber":144,"author":{"gitId":"cheahTJ"},"content":" userInput \u003d defaultNusId + PHONE_DESC_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":145,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":146,"author":{"gitId":"cheahTJ"},"content":" expectedCommand \u003d new EditCommand(nusId, descriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":147,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":149,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04"},{"lineNumber":150,"author":{"gitId":"cheahTJ"},"content":" userInput \u003d defaultNusId + EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":151,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":152,"author":{"gitId":"cheahTJ"},"content":" expectedCommand \u003d new EditCommand(nusId, descriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":153,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":155,"author":{"gitId":"hjuntan"},"content":" // tag","lastModifiedDate":"2024-03-11"},{"lineNumber":156,"author":{"gitId":"cheahTJ"},"content":" userInput \u003d defaultNusId + TAG_DESC_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":157,"author":{"gitId":"hjuntan"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withTag(VALID_TAG_AMY).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":158,"author":{"gitId":"cheahTJ"},"content":" expectedCommand \u003d new EditCommand(nusId, descriptor);","lastModifiedDate":"2024-03-19"},{"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":"hjuntan"},"content":" // groups","lastModifiedDate":"2024-03-11"},{"lineNumber":162,"author":{"gitId":"cheahTJ"},"content":" userInput \u003d defaultNusId + GROUP_DESC_FRIEND;","lastModifiedDate":"2024-03-19"},{"lineNumber":163,"author":{"gitId":"hjuntan"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withGroups(VALID_GROUP_FRIEND).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":164,"author":{"gitId":"cheahTJ"},"content":" expectedCommand \u003d new EditCommand(nusId, descriptor);","lastModifiedDate":"2024-03-19"},{"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":"","lastModifiedDate":"2017-05-04"},{"lineNumber":168,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":169,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":170,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14"},{"lineNumber":171,"author":{"gitId":"hjuntan"},"content":" // AddCommandParserTest#parse_repeatedNonGroupValue_failure()","lastModifiedDate":"2024-03-11"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":173,"author":{"gitId":"cheahTJ"},"content":" String defaultNusId \u003d \"E1234567\";","lastModifiedDate":"2024-03-19"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":175,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14"},{"lineNumber":176,"author":{"gitId":"cheahTJ"},"content":" //Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-19"},{"lineNumber":177,"author":{"gitId":"cheahTJ"},"content":" String userInput \u003d defaultNusId + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":179,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":181,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14"},{"lineNumber":182,"author":{"gitId":"cheahTJ"},"content":" userInput \u003d defaultNusId + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2024-03-19"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":184,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":186,"author":{"gitId":"hjuntan"},"content":" // multiple valid fields repeated","lastModifiedDate":"2024-03-11"},{"lineNumber":187,"author":{"gitId":"cheahTJ"},"content":" userInput \u003d defaultNusId + PHONE_DESC_AMY + TAG_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2024-03-19"},{"lineNumber":188,"author":{"gitId":"hjuntan"},"content":" + GROUP_DESC_FRIEND + PHONE_DESC_AMY + TAG_DESC_AMY + EMAIL_DESC_AMY + GROUP_DESC_FRIEND","lastModifiedDate":"2024-03-11"},{"lineNumber":189,"author":{"gitId":"hjuntan"},"content":" + PHONE_DESC_BOB + TAG_DESC_BOB + EMAIL_DESC_BOB + GROUP_DESC_HUSBAND;","lastModifiedDate":"2024-03-11"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":191,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":192,"author":{"gitId":"hjuntan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_TAG));","lastModifiedDate":"2024-03-11"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":194,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14"},{"lineNumber":195,"author":{"gitId":"cheahTJ"},"content":" userInput \u003d defaultNusId + INVALID_PHONE_DESC + INVALID_TAG_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2024-03-19"},{"lineNumber":196,"author":{"gitId":"hjuntan"},"content":" + INVALID_PHONE_DESC + INVALID_TAG_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2024-03-11"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":198,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":199,"author":{"gitId":"hjuntan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_TAG));","lastModifiedDate":"2024-03-11"},{"lineNumber":200,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":202,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":203,"author":{"gitId":"hjuntan"},"content":" public void parse_resetGroups_success() {","lastModifiedDate":"2024-03-11"},{"lineNumber":204,"author":{"gitId":"cheahTJ"},"content":" String defaultNusId \u003d \"E1234567\";","lastModifiedDate":"2024-03-19"},{"lineNumber":205,"author":{"gitId":"cheahTJ"},"content":" NusId nusId \u003d new NusId(defaultNusId);","lastModifiedDate":"2024-03-19"},{"lineNumber":206,"author":{"gitId":"cheahTJ"},"content":" //Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2024-03-19"},{"lineNumber":207,"author":{"gitId":"cheahTJ"},"content":" String userInput \u003d defaultNusId + GROUP_EMPTY;","lastModifiedDate":"2024-03-19"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":209,"author":{"gitId":"hjuntan"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withGroups().build();","lastModifiedDate":"2024-03-11"},{"lineNumber":210,"author":{"gitId":"cheahTJ"},"content":" EditCommand expectedCommand \u003d new EditCommand(nusId, descriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":212,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":213,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":214,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04"}],"authorContributionMap":{"cheahTJ":50,"hjuntan":33,"-":131}},{"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":"RingoftheKing"},"content":"import static seedu.address.logic.Messages.MESSAGE_AT_LEAST_ONE_FIELD_REQUIRED;","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"RingoftheKing"},"content":"import seedu.address.testutil.FindCommandBuilder;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"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":"-"},"content":" private FindCommandParser parser \u003d new FindCommandParser();","lastModifiedDate":"2017-06-27"},{"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":"RingoftheKing"},"content":" assertParseFailure(parser, \" \",","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"RingoftheKing"},"content":" String.format(MESSAGE_AT_LEAST_ONE_FIELD_REQUIRED + FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsFindCommand() {","lastModifiedDate":"2017-08-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2017-06-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" FindCommand expectedFindCommand \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"RingoftheKing"},"content":" new FindCommandBuilder().withNamePred(new NameContainsKeywordsPredicate(Arrays","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"RingoftheKing"},"content":" .asList(\"Alice\", \"Bob\"))).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"RingoftheKing"},"content":" assertParseSuccess(parser, \" n/Alice Bob\", expectedFindCommand);","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2017-06-27"},{"lineNumber":34,"author":{"gitId":"RingoftheKing"},"content":" assertParseSuccess(parser, \" n/ \\n Alice \\n \\t Bob \\t\", expectedFindCommand);","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-27"}],"authorContributionMap":{"RingoftheKing":8,"-":29}},{"path":"src/test/java/seedu/address/logic/parser/GroupCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Ragnapop"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"Ragnapop"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"Ragnapop"},"content":"import static seedu.address.logic.commands.CommandTestUtil.GROUP_DESC_HUSBAND;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"Ragnapop"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_GROUP_DESC;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"Ragnapop"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"Ragnapop"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"Ragnapop"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GROUP_HUSBAND;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"Ragnapop"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NUSID_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"Ragnapop"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"Ragnapop"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"Ragnapop"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccessGroup;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"Ragnapop"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"Ragnapop"},"content":"import seedu.address.logic.commands.GroupCommand;","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"Ragnapop"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"Ragnapop"},"content":"import seedu.address.model.person.NusId;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"Ragnapop"},"content":"import seedu.address.model.person.Tag;","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"Ragnapop"},"content":"import seedu.address.testutil.GroupPersonDescriptorBuilder;","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"Ragnapop"},"content":"class GroupCommandParserTest {","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"Ragnapop"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"Ragnapop"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, GroupCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"Ragnapop"},"content":" private GroupCommandParser parser \u003d new GroupCommandParser();","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"Ragnapop"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"Ragnapop"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"Ragnapop"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"Ragnapop"},"content":" assertParseFailure(parser, \"E0123456 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"Ragnapop"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"Ragnapop"},"content":" assertParseFailure(parser, \"E0123456 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"Ragnapop"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"Ragnapop"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"Ragnapop"},"content":" //Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"Ragnapop"},"content":" NusId nusid \u003d new NusId(VALID_NUSID_AMY);","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"Ragnapop"},"content":" String userInput \u003d \" id/\" + nusid + GROUP_DESC_HUSBAND","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"Ragnapop"},"content":" + TAG_DESC_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"Ragnapop"},"content":" GroupCommand.GroupPersonDescriptor descriptor \u003d new GroupPersonDescriptorBuilder()","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"Ragnapop"},"content":" .withNusId(VALID_NUSID_AMY)","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"Ragnapop"},"content":" .withGroups(VALID_GROUP_HUSBAND)","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"Ragnapop"},"content":" .withTag(VALID_TAG_AMY)","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"Ragnapop"},"content":" .build();","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"Ragnapop"},"content":" GroupCommand expectedCommand \u003d new GroupCommand(nusid, descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"Ragnapop"},"content":" //System.out.println(userInput);","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"Ragnapop"},"content":" assertParseSuccessGroup(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"Ragnapop"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"Ragnapop"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"Ragnapop"},"content":" String defaultNusId \u003d \"E1234567\";","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"Ragnapop"},"content":" NusId nusid \u003d new NusId((defaultNusId));","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"Ragnapop"},"content":" // tag","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"Ragnapop"},"content":" String userInput \u003d \" id/\" + defaultNusId + TAG_DESC_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"Ragnapop"},"content":" GroupCommand.GroupPersonDescriptor descriptor \u003d new GroupPersonDescriptorBuilder()","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"Ragnapop"},"content":" .withNusId(defaultNusId)","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"Ragnapop"},"content":" .withTag(VALID_TAG_AMY).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"Ragnapop"},"content":" GroupCommand expectedCommand \u003d new GroupCommand(nusid, descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"Ragnapop"},"content":" assertParseSuccessGroup(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"Ragnapop"},"content":" // group","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"Ragnapop"},"content":" userInput \u003d \" id/\" + defaultNusId + GROUP_DESC_HUSBAND;","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"Ragnapop"},"content":" descriptor \u003d new GroupPersonDescriptorBuilder()","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"Ragnapop"},"content":" .withNusId(defaultNusId)","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"Ragnapop"},"content":" .withGroups(VALID_GROUP_HUSBAND).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"Ragnapop"},"content":" expectedCommand \u003d new GroupCommand(nusid, descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"Ragnapop"},"content":" assertParseSuccessGroup(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"Ragnapop"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"Ragnapop"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"Ragnapop"},"content":" assertParseFailure(parser, \" id/E0123456\" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"Ragnapop"},"content":" assertParseFailure(parser, \" id/E0123456\" + INVALID_GROUP_DESC, Group.MESSAGE_CONSTRAINTS); // invalid group","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"Ragnapop"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"Ragnapop":89}},{"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":"hjuntan"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-11"},{"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":"Rikko1204"},"content":"import seedu.address.model.person.NusId;","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-22"},{"lineNumber":22,"author":{"gitId":"Rikko1204"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"Rikko1204"},"content":"import seedu.address.model.person.Schedule;","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"hjuntan"},"content":"import seedu.address.model.person.Tag;","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22"},{"lineNumber":28,"author":{"gitId":"Rikko1204"},"content":" private static final String INVALID_NUSID \u003d \"e1234567\";","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2017-05-22"},{"lineNumber":30,"author":{"gitId":"hjuntan"},"content":" private static final String INVALID_TAG \u003d \" \";","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":32,"author":{"gitId":"hjuntan"},"content":" private static final String INVALID_GROUP \u003d \"#friend\";","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"Rikko1204"},"content":" private static final String INVALID_SCHEDULE \u003d \"2024-12-12\";","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22"},{"lineNumber":36,"author":{"gitId":"Rikko1204"},"content":" private static final String VALID_NUSID \u003d \"E1234567\";","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d \"123456\";","lastModifiedDate":"2017-05-22"},{"lineNumber":38,"author":{"gitId":"hjuntan"},"content":" private static final String VALID_TAG \u003d \"Student\";","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":40,"author":{"gitId":"hjuntan"},"content":" private static final String VALID_GROUP_1 \u003d \"friend\";","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"hjuntan"},"content":" private static final String VALID_GROUP_2 \u003d \"neighbour\";","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"Rikko1204"},"content":" private static final String VALID_SCHEDULE \u003d \"12-12-2020\";","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"Rikko1204"},"content":" private static final String VALID_REMARK \u003d \"I love Hong Jun\";","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":45,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2017-05-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2017-05-25"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":67,"author":{"gitId":"Rikko1204"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":68,"author":{"gitId":"Rikko1204"},"content":" public void parseNusId_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-13"},{"lineNumber":69,"author":{"gitId":"Rikko1204"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseNusId((String) null));","lastModifiedDate":"2024-03-13"},{"lineNumber":70,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":72,"author":{"gitId":"Rikko1204"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":73,"author":{"gitId":"Rikko1204"},"content":" public void parseNusId_invalidValue_throwsParseException() {","lastModifiedDate":"2024-03-13"},{"lineNumber":74,"author":{"gitId":"Rikko1204"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseNusId(INVALID_NUSID));","lastModifiedDate":"2024-03-13"},{"lineNumber":75,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":76,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":77,"author":{"gitId":"Rikko1204"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":78,"author":{"gitId":"Rikko1204"},"content":" public void parseNusId_validValueWithoutWhitespace_returnsNusId() throws Exception {","lastModifiedDate":"2024-03-13"},{"lineNumber":79,"author":{"gitId":"Rikko1204"},"content":" NusId expectedNusId \u003d new NusId(VALID_NUSID);","lastModifiedDate":"2024-03-13"},{"lineNumber":80,"author":{"gitId":"Rikko1204"},"content":" assertEquals(expectedNusId, ParserUtil.parseNusId(VALID_NUSID));","lastModifiedDate":"2024-03-13"},{"lineNumber":81,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":82,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":95,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":101,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29"},{"lineNumber":102,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void parsePhone_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePhone((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void parsePhone_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhone(INVALID_PHONE));","lastModifiedDate":"2019-03-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":118,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-22"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(VALID_PHONE));","lastModifiedDate":"2017-05-30"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithWhitespace_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":124,"author":{"gitId":"-"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":125,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-30"},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(phoneWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":130,"author":{"gitId":"hjuntan"},"content":" public void parseTag_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":131,"author":{"gitId":"hjuntan"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag((String) null));","lastModifiedDate":"2024-03-11"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":135,"author":{"gitId":"hjuntan"},"content":" public void parseTag_invalidValue_throwsParseException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":136,"author":{"gitId":"hjuntan"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTag(INVALID_TAG));","lastModifiedDate":"2024-03-11"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":139,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":140,"author":{"gitId":"hjuntan"},"content":" public void parseTag_validValueWithoutWhitespace_returnsTag() throws Exception {","lastModifiedDate":"2024-03-11"},{"lineNumber":141,"author":{"gitId":"hjuntan"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG);","lastModifiedDate":"2024-03-11"},{"lineNumber":142,"author":{"gitId":"hjuntan"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(VALID_TAG));","lastModifiedDate":"2024-03-11"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":145,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":146,"author":{"gitId":"hjuntan"},"content":" public void parseTag_validValueWithWhitespace_returnsTrimmedTag() throws Exception {","lastModifiedDate":"2024-03-11"},{"lineNumber":147,"author":{"gitId":"hjuntan"},"content":" String tagWithWhitespace \u003d WHITESPACE + VALID_TAG + WHITESPACE;","lastModifiedDate":"2024-03-11"},{"lineNumber":148,"author":{"gitId":"hjuntan"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG);","lastModifiedDate":"2024-03-11"},{"lineNumber":149,"author":{"gitId":"hjuntan"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(tagWithWhitespace));","lastModifiedDate":"2024-03-11"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":152,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":153,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":154,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":157,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":158,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":159,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":162,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":163,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":164,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22"},{"lineNumber":165,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30"},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":168,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":169,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":170,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":171,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30"},{"lineNumber":172,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":175,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":176,"author":{"gitId":"hjuntan"},"content":" public void parseGroup_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":177,"author":{"gitId":"hjuntan"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseGroup(null));","lastModifiedDate":"2024-03-11"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":180,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":181,"author":{"gitId":"hjuntan"},"content":" public void parseGroup_invalidValue_throwsParseException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":182,"author":{"gitId":"hjuntan"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseGroup(INVALID_GROUP));","lastModifiedDate":"2024-03-11"},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":185,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":186,"author":{"gitId":"hjuntan"},"content":" public void parseGroup_validValueWithoutWhitespace_returnsGroup() throws Exception {","lastModifiedDate":"2024-03-11"},{"lineNumber":187,"author":{"gitId":"hjuntan"},"content":" Group expectedGroup \u003d new Group(VALID_GROUP_1);","lastModifiedDate":"2024-03-11"},{"lineNumber":188,"author":{"gitId":"hjuntan"},"content":" assertEquals(expectedGroup, ParserUtil.parseGroup(VALID_GROUP_1));","lastModifiedDate":"2024-03-11"},{"lineNumber":189,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":191,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":192,"author":{"gitId":"hjuntan"},"content":" public void parseGroup_validValueWithWhitespace_returnsTrimmedGroup() throws Exception {","lastModifiedDate":"2024-03-11"},{"lineNumber":193,"author":{"gitId":"hjuntan"},"content":" String groupWithWhitespace \u003d WHITESPACE + VALID_GROUP_1 + WHITESPACE;","lastModifiedDate":"2024-03-11"},{"lineNumber":194,"author":{"gitId":"hjuntan"},"content":" Group expectedGroup \u003d new Group(VALID_GROUP_1);","lastModifiedDate":"2024-03-11"},{"lineNumber":195,"author":{"gitId":"hjuntan"},"content":" assertEquals(expectedGroup, ParserUtil.parseGroup(groupWithWhitespace));","lastModifiedDate":"2024-03-11"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":198,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":199,"author":{"gitId":"hjuntan"},"content":" public void parseGroups_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":200,"author":{"gitId":"hjuntan"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseGroups(null));","lastModifiedDate":"2024-03-11"},{"lineNumber":201,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":203,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":204,"author":{"gitId":"hjuntan"},"content":" public void parseGroups_collectionWithInvalidGroups_throwsParseException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":205,"author":{"gitId":"hjuntan"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseGroups(Arrays.asList(VALID_GROUP_1,","lastModifiedDate":"2024-03-11"},{"lineNumber":206,"author":{"gitId":"hjuntan"},"content":" INVALID_GROUP)));","lastModifiedDate":"2024-03-11"},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":209,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":210,"author":{"gitId":"hjuntan"},"content":" public void parseGroups_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2024-03-11"},{"lineNumber":211,"author":{"gitId":"hjuntan"},"content":" assertTrue(ParserUtil.parseGroups(Collections.emptyList()).isEmpty());","lastModifiedDate":"2024-03-11"},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":214,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":215,"author":{"gitId":"hjuntan"},"content":" public void parseGroups_collectionWithValidGroups_returnsGroupSet() throws Exception {","lastModifiedDate":"2024-03-11"},{"lineNumber":216,"author":{"gitId":"hjuntan"},"content":" Set\u003cGroup\u003e actualGroupSet \u003d ParserUtil.parseGroups(Arrays.asList(VALID_GROUP_1,","lastModifiedDate":"2024-03-11"},{"lineNumber":217,"author":{"gitId":"hjuntan"},"content":" VALID_GROUP_2));","lastModifiedDate":"2024-03-11"},{"lineNumber":218,"author":{"gitId":"hjuntan"},"content":" Set\u003cGroup\u003e expectedGroupSet \u003d new HashSet\u003cGroup\u003e(Arrays.asList(new Group(VALID_GROUP_1),","lastModifiedDate":"2024-03-11"},{"lineNumber":219,"author":{"gitId":"hjuntan"},"content":" new Group(VALID_GROUP_2)));","lastModifiedDate":"2024-03-11"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":221,"author":{"gitId":"hjuntan"},"content":" assertEquals(expectedGroupSet, actualGroupSet);","lastModifiedDate":"2024-03-11"},{"lineNumber":222,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":224,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":225,"author":{"gitId":"Rikko1204"},"content":" public void parseSchedule_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":226,"author":{"gitId":"Rikko1204"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseSchedule((String) null));","lastModifiedDate":"2024-03-17"},{"lineNumber":227,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":229,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":230,"author":{"gitId":"Rikko1204"},"content":" public void parseSchedule_invalidValue_throwsParseException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":231,"author":{"gitId":"Rikko1204"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseSchedule(INVALID_SCHEDULE));","lastModifiedDate":"2024-03-17"},{"lineNumber":232,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":234,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":235,"author":{"gitId":"Rikko1204"},"content":" public void parseSchedule_validValueWithoutWhitespace_returnsSchedule() throws Exception {","lastModifiedDate":"2024-03-17"},{"lineNumber":236,"author":{"gitId":"Rikko1204"},"content":" Schedule expectedSchedule \u003d new Schedule(VALID_SCHEDULE);","lastModifiedDate":"2024-03-17"},{"lineNumber":237,"author":{"gitId":"Rikko1204"},"content":" assertEquals(expectedSchedule, ParserUtil.parseSchedule(VALID_SCHEDULE));","lastModifiedDate":"2024-03-17"},{"lineNumber":238,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":240,"author":{"gitId":"Rikko1204"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":241,"author":{"gitId":"Rikko1204"},"content":" public void parseRemark_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":242,"author":{"gitId":"Rikko1204"},"content":" assertThrows(NullPointerException.class, () -\u003e new Remark(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":243,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":244,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22"}],"authorContributionMap":{"Rikko1204":35,"hjuntan":42,"-":167}},{"path":"src/test/java/seedu/address/logic/parser/ScheduleCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Rikko1204"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"Rikko1204"},"content":"public class ScheduleCommandParserTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"Rikko1204"},"content":" // TODO: Create test cases","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"Rikko1204"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"Rikko1204":5}},{"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":"hjuntan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GROUP_HUSBAND;","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"hjuntan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_BOB;","lastModifiedDate":"2024-03-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":"hjuntan"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withTag(VALID_TAG_BOB).withGroups(VALID_GROUP_HUSBAND)","lastModifiedDate":"2024-03-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":"hjuntan"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withTag(VALID_TAG_BOB).withGroups(VALID_GROUP_HUSBAND)","lastModifiedDate":"2024-03-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":"-"},"content":"}","lastModifiedDate":"2016-12-24"}],"authorContributionMap":{"hjuntan":4,"-":104}},{"path":"src/test/java/seedu/address/model/group/GroupTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"hjuntan"},"content":"package seedu.address.model.group;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"hjuntan"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"hjuntan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"hjuntan"},"content":"public class GroupTest {","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"hjuntan"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"hjuntan"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"hjuntan"},"content":" assertThrows(NullPointerException.class, () -\u003e new Group(null));","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"hjuntan"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"hjuntan"},"content":" public void constructor_invalidGroupName_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"hjuntan"},"content":" String invalidGroupName \u003d \"\";","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"hjuntan"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Group(invalidGroupName));","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"hjuntan"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"hjuntan"},"content":" public void isValidGroupName() {","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"hjuntan"},"content":" // null group name","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"hjuntan"},"content":" assertThrows(NullPointerException.class, () -\u003e Group.isValidGroupName(null));","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"hjuntan"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"hjuntan":26}},{"path":"src/test/java/seedu/address/model/person/EmailMatchesPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"RingoftheKing"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"RingoftheKing"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"RingoftheKing"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"RingoftheKing"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"RingoftheKing"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"RingoftheKing"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"RingoftheKing"},"content":"public class EmailMatchesPredicateTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"RingoftheKing"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"RingoftheKing"},"content":" public void test_emailMatches_returnsTrue() {","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"RingoftheKing"},"content":" EmailMatchesPredicate fullMatch \u003d new EmailMatchesPredicate(\"bobbyApples@gmail.com\");","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"RingoftheKing"},"content":" Person person \u003d new PersonBuilder().withEmail(\"bobbyApples@gmail.com\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"RingoftheKing"},"content":" assertTrue(fullMatch.test(person));","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"RingoftheKing"},"content":" EmailMatchesPredicate partialMatch \u003d new EmailMatchesPredicate(\"Apples\");","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"RingoftheKing"},"content":" assertTrue(partialMatch.test(person));","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"RingoftheKing"},"content":" EmailMatchesPredicate diffCaseMatch \u003d new EmailMatchesPredicate(\"aPPleS\");","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"RingoftheKing"},"content":" assertTrue(diffCaseMatch.test(person));","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"RingoftheKing"},"content":" EmailMatchesPredicate extraSpaces \u003d new EmailMatchesPredicate(\" apples \");","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"RingoftheKing"},"content":" assertTrue(extraSpaces.test(person));","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"RingoftheKing"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"RingoftheKing"},"content":" public void test_emailNoMatch_returnsFalse() {","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"RingoftheKing"},"content":" Person person \u003d new PersonBuilder().withEmail(\"bobbyApples@gmail.com\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"RingoftheKing"},"content":" EmailMatchesPredicate noPartialMatch \u003d new EmailMatchesPredicate(\"WobblyApples\");","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"RingoftheKing"},"content":" assertFalse(noPartialMatch.test(person));","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"RingoftheKing"},"content":" EmailMatchesPredicate spacesInBetween \u003d new EmailMatchesPredicate(\"bobby apples \");","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"RingoftheKing"},"content":" assertFalse(spacesInBetween.test(person));","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"RingoftheKing"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"RingoftheKing"},"content":" public void test_toString() {","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"RingoftheKing"},"content":" String keyword \u003d \"bobby\";","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"RingoftheKing"},"content":" EmailMatchesPredicate e \u003d new EmailMatchesPredicate(keyword);","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"RingoftheKing"},"content":" String expected \u003d EmailMatchesPredicate.class.getCanonicalName() + \"{emailKeyword\u003d\" + keyword + \"}\";","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"RingoftheKing"},"content":" assertEquals(e.toString(), expected);","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"RingoftheKing"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"RingoftheKing":46}},{"path":"src/test/java/seedu/address/model/person/GroupMatchesPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"RingoftheKing"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"RingoftheKing"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"RingoftheKing"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"RingoftheKing"},"content":"import java.util.List;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"RingoftheKing"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"RingoftheKing"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"RingoftheKing"},"content":"public class GroupMatchesPredicateTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"RingoftheKing"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"RingoftheKing"},"content":" public void test_oneGroupOneKeyword() {","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"RingoftheKing"},"content":" GroupMatchesPredicate predicateWithOneKeyword \u003d new GroupMatchesPredicate(List.of(\"CS2103T\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"RingoftheKing"},"content":" Person personWithOneGroup \u003d new PersonBuilder().withGroups(\"CS2103T\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"RingoftheKing"},"content":" assertTrue(predicateWithOneKeyword.test(personWithOneGroup));","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"RingoftheKing"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"RingoftheKing"},"content":" public void test_multipleGroupsOneKeyword() {","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"RingoftheKing"},"content":" GroupMatchesPredicate predicateWithOneKeyword \u003d new GroupMatchesPredicate(List.of(\"CS2103T\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"RingoftheKing"},"content":" Person personWithManyGroups \u003d new PersonBuilder().withGroups(\"CS2100\", \"CS2101\", \"CS2103T\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"RingoftheKing"},"content":" assertTrue(predicateWithOneKeyword.test(personWithManyGroups));","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"RingoftheKing"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"RingoftheKing"},"content":" public void test_multipleGroupsManyKeywords() {","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"RingoftheKing"},"content":" GroupMatchesPredicate predicateWithManyKeywords \u003d new GroupMatchesPredicate(List.of(\"CS2101\", \"CS2103T\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"RingoftheKing"},"content":" Person personWithManyGroups \u003d new PersonBuilder().withGroups(\"CS2100\", \"CS2101\", \"CS2103T\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"RingoftheKing"},"content":" assertTrue(predicateWithManyKeywords.test(personWithManyGroups));","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"RingoftheKing"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"RingoftheKing"},"content":" public void test_toString() {","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"RingoftheKing"},"content":" List\u003cString\u003e keywords \u003d List.of(\"CS2101\", \"CS2103T\");","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"RingoftheKing"},"content":" GroupMatchesPredicate g \u003d new GroupMatchesPredicate(keywords);","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"RingoftheKing"},"content":" String expected \u003d GroupMatchesPredicate.class.getCanonicalName() + \"{groupKeywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"RingoftheKing"},"content":" assertEquals(g.toString(), expected);","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"RingoftheKing"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"RingoftheKing":41}},{"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":"RingoftheKing"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2024-03-17"},{"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":"-"},"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":"RingoftheKing"},"content":" // Successfully skips checking when not required to by the FindCommand class","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"RingoftheKing"},"content":" NameContainsKeywordsPredicate optionalParameterNotFilled \u003d","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"RingoftheKing"},"content":" new NameContainsKeywordsPredicate(List.of(FindCommand.NOT_REQUIRED_VALUE));","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"RingoftheKing"},"content":" assertTrue(optionalParameterNotFilled.test(new PersonBuilder().build()));","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // One keyword","lastModifiedDate":"2017-06-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.singletonList(\"Alice\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // Multiple keywords","lastModifiedDate":"2017-06-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // Only one matching keyword","lastModifiedDate":"2017-06-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Bob\", \"Carol\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Carol\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // Mixed-case keywords","lastModifiedDate":"2017-06-12"},{"lineNumber":63,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"aLIce\", \"bOB\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12"},{"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 test_nameDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2017-08-15"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // Zero keywords","lastModifiedDate":"2017-06-12"},{"lineNumber":70,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2017-06-12"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // Non-matching keyword","lastModifiedDate":"2017-06-12"},{"lineNumber":74,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Carol\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":77,"author":{"gitId":"hjuntan"},"content":" // Keywords match phone, email and tag, but does not match name","lastModifiedDate":"2024-03-11"},{"lineNumber":78,"author":{"gitId":"hjuntan"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"12345\", \"alice@email.com\", \"Student\"));","lastModifiedDate":"2024-03-11"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").withPhone(\"12345\")","lastModifiedDate":"2017-06-12"},{"lineNumber":80,"author":{"gitId":"hjuntan"},"content":" .withEmail(\"alice@email.com\").withTag(\"Student\").build()));","lastModifiedDate":"2024-03-11"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"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":" List\u003cString\u003e keywords \u003d List.of(\"keyword1\", \"keyword2\");","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(keywords);","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"RingoftheKing"},"content":" String expected \u003d NameContainsKeywordsPredicate.class.getCanonicalName() + \"{nameKeywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"RingoftheKing":7,"hjuntan":3,"-":81}},{"path":"src/test/java/seedu/address/model/person/NusIdTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Rikko1204"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"Rikko1204"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"Rikko1204"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"Rikko1204"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"Rikko1204"},"content":"public class NusIdTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"Rikko1204"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"Rikko1204"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"Rikko1204"},"content":" assertThrows(NullPointerException.class, () -\u003e new NusId(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"Rikko1204"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"Rikko1204"},"content":" public void constructor_invalidName_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"Rikko1204"},"content":" String invalidNusId \u003d \"\";","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"Rikko1204"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new NusId(invalidNusId));","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"Rikko1204"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"Rikko1204"},"content":" public void isValidNusId() {","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"Rikko1204"},"content":" // null name","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"Rikko1204"},"content":" assertThrows(NullPointerException.class, () -\u003e NusId.isValidNusId(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"Rikko1204"},"content":" // invalid nusId","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"Rikko1204"},"content":" assertFalse(NusId.isValidNusId(\"\")); // empty string","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"Rikko1204"},"content":" assertFalse(NusId.isValidNusId(\" \")); // spaces only","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"Rikko1204"},"content":" assertFalse(NusId.isValidNusId(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"Rikko1204"},"content":" assertFalse(NusId.isValidNusId(\"peter*\")); // contains non-alphanumeric characters","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"Rikko1204"},"content":" assertFalse(NusId.isValidNusId(\"E\")); // letters only","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"Rikko1204"},"content":" assertFalse(NusId.isValidNusId(\"1234567\")); // numbers only","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"Rikko1204"},"content":" assertFalse(NusId.isValidNusId(\"e1234567\")); // Lower case letter","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"Rikko1204"},"content":" assertFalse(NusId.isValidNusId(\"e123456\")); // Less digits","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"Rikko1204"},"content":" assertFalse(NusId.isValidNusId(\"e12345678\")); // More digits","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"Rikko1204"},"content":" // valid nusId","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"Rikko1204"},"content":" assertTrue(NusId.isValidNusId(\"E0951501\")); // Correct format","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"Rikko1204"},"content":" assertTrue(NusId.isValidNusId(\"E0000000\")); // All 0","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"Rikko1204"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"Rikko1204"},"content":" public void equals() {","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"Rikko1204"},"content":" NusId nusId \u003d new NusId(\"E1234567\");","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"Rikko1204"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"Rikko1204"},"content":" assertTrue(nusId.equals(new NusId(\"E1234567\")));","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"Rikko1204"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"Rikko1204"},"content":" assertTrue(nusId.equals(nusId));","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"Rikko1204"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"Rikko1204"},"content":" assertFalse(nusId.equals(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"Rikko1204"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"Rikko1204"},"content":" assertFalse(nusId.equals(5.0f));","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"Rikko1204"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"Rikko1204"},"content":" assertFalse(nusId.equals(new Name(\"E7654321\")));","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"Rikko1204"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"Rikko1204":62}},{"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":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GROUP_HUSBAND;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NUSID_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_BOB;","lastModifiedDate":"2024-03-12"},{"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":"hjuntan"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getGroups().remove(0));","lastModifiedDate":"2024-03-11"},{"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":"Rikko1204"},"content":" // same id, all other attributes different -\u003e returns true","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"Rikko1204"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"Rikko1204"},"content":" .withEmail(VALID_EMAIL_BOB).withTag(VALID_TAG_BOB).withGroups(VALID_GROUP_HUSBAND).build();","lastModifiedDate":"2024-03-12"},{"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":"Rikko1204"},"content":" // different id, all other attributes same -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"Rikko1204"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withNusId(VALID_NUSID_BOB).build();","lastModifiedDate":"2024-03-12"},{"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":"","lastModifiedDate":"2018-04-19"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":64,"author":{"gitId":"Rikko1204"},"content":" // different nusId -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"Rikko1204"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withNusId(VALID_NUSID_BOB).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"Rikko1204"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":69,"author":{"gitId":"Rikko1204"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-12"},{"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":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_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 email -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_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":"hjuntan"},"content":" // different tag -\u003e returns false","lastModifiedDate":"2024-03-11"},{"lineNumber":81,"author":{"gitId":"hjuntan"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTag(VALID_TAG_BOB).build();","lastModifiedDate":"2024-03-11"},{"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":"hjuntan"},"content":" // different groups -\u003e returns false","lastModifiedDate":"2024-03-11"},{"lineNumber":85,"author":{"gitId":"hjuntan"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withGroups(VALID_GROUP_HUSBAND).build();","lastModifiedDate":"2024-03-11"},{"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":"hjuntan"},"content":" String expected \u003d Person.class.getCanonicalName()","lastModifiedDate":"2024-03-12"},{"lineNumber":92,"author":{"gitId":"hjuntan"},"content":" + \"{nusId\u003d\" + ALICE.getNusId() + \", name\u003d\" + ALICE.getName()","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"hjuntan"},"content":" + \", phone\u003d\" + ALICE.getPhone() + \", email\u003d\" + ALICE.getEmail()","lastModifiedDate":"2024-03-12"},{"lineNumber":94,"author":{"gitId":"Rikko1204"},"content":" + \", tag\u003d\" + ALICE.getTag() + \", groups\u003d\" + ALICE.getGroups()","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"Rikko1204"},"content":" + \", schedule\u003d\" + ALICE.getSchedule() + \", remark\u003d\" + ALICE.getRemark() + \"}\";","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"Rikko1204":15,"hjuntan":8,"-":75}},{"path":"src/test/java/seedu/address/model/person/PhoneMatchesPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"RingoftheKing"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"RingoftheKing"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"RingoftheKing"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"RingoftheKing"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"RingoftheKing"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"RingoftheKing"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"RingoftheKing"},"content":"public class PhoneMatchesPredicateTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"RingoftheKing"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"RingoftheKing"},"content":" public void test_matchingPhone_returnsTrue() {","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"RingoftheKing"},"content":" Person person \u003d new PersonBuilder().withPhone(\"91237654\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"RingoftheKing"},"content":" PhoneMatchesPredicate fullMatch \u003d new PhoneMatchesPredicate(\"91237654\");","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"RingoftheKing"},"content":" assertTrue(fullMatch.test(person));","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"RingoftheKing"},"content":" PhoneMatchesPredicate partialPrefixMatch \u003d new PhoneMatchesPredicate(\"9123\");","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"RingoftheKing"},"content":" assertTrue(partialPrefixMatch.test(person));","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"RingoftheKing"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"RingoftheKing"},"content":" public void test_noMatchingPhone_returnsFalse() {","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"RingoftheKing"},"content":" Person person \u003d new PersonBuilder().withPhone(\"91237654\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"RingoftheKing"},"content":" PhoneMatchesPredicate noMatch \u003d new PhoneMatchesPredicate(\"98761234\");","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"RingoftheKing"},"content":" assertFalse(noMatch.test(person));","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"RingoftheKing"},"content":" PhoneMatchesPredicate partialMiddleMatch \u003d new PhoneMatchesPredicate(\"123\");","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"RingoftheKing"},"content":" assertFalse(partialMiddleMatch.test(person));","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"RingoftheKing"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"RingoftheKing"},"content":" public void test_toString() {","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"RingoftheKing"},"content":" String numToMatch \u003d \"91234567\";","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"RingoftheKing"},"content":" PhoneMatchesPredicate p \u003d new PhoneMatchesPredicate(numToMatch);","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"RingoftheKing"},"content":" String expected \u003d PhoneMatchesPredicate.class.getCanonicalName() + \"{phoneNumToMatch\u003d\" + numToMatch + \"}\";","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"RingoftheKing"},"content":" assertEquals(p.toString(), expected);","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"RingoftheKing"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"RingoftheKing":41}},{"path":"src/test/java/seedu/address/model/person/RemarkTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Rikko1204"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"Rikko1204"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"Rikko1204"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"Rikko1204"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"Rikko1204"},"content":"public class RemarkTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"Rikko1204"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"Rikko1204"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"Rikko1204"},"content":" assertThrows(NullPointerException.class, () -\u003e new Remark(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"Rikko1204"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"Rikko1204"},"content":" public void equals() {","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"Rikko1204"},"content":" Remark remark \u003d new Remark(\"Hong Jun is my daddy\");","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"Rikko1204"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"Rikko1204"},"content":" assertTrue(remark.equals(new Remark(\"Hong Jun is my daddy\")));","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"Rikko1204"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"Rikko1204"},"content":" assertTrue(remark.equals(remark));","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"Rikko1204"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"Rikko1204"},"content":" assertFalse(remark.equals(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"Rikko1204"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"Rikko1204"},"content":" assertFalse(remark.equals(5.0f));","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"Rikko1204"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"Rikko1204"},"content":" assertFalse(remark.equals(new Remark(\"Hong Jun is still my daddy\")));","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"Rikko1204"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"Rikko1204":35}},{"path":"src/test/java/seedu/address/model/person/ScheduleTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Rikko1204"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"Rikko1204"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"Rikko1204"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"Rikko1204"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"Rikko1204"},"content":"public class ScheduleTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"Rikko1204"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"Rikko1204"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"Rikko1204"},"content":" assertThrows(NullPointerException.class, () -\u003e new Schedule(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"Rikko1204"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"Rikko1204"},"content":" public void constructor_invalidSchedule_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"Rikko1204"},"content":" String invalidSchedule \u003d \"2020-12-12\";","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"Rikko1204"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Schedule(invalidSchedule));","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"Rikko1204"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"Rikko1204"},"content":" public void isValidSchedule() {","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"Rikko1204"},"content":" // null schedule","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"Rikko1204"},"content":" assertThrows(NullPointerException.class, () -\u003e Schedule.isValidSchedule(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"Rikko1204"},"content":" // invalid Schedule","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"Rikko1204"},"content":" assertFalse(Schedule.isValidSchedule(\"31-31-2020\")); // Non-existent month","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"Rikko1204"},"content":" assertFalse(Schedule.isValidSchedule(\"12~12~2020\")); // ~ incorrectly used","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"Rikko1204"},"content":" assertFalse(Schedule.isValidSchedule(\"2020-12-12\")); // Incorrect format","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"Rikko1204"},"content":" assertFalse(Schedule.isValidSchedule(\"12-2020-12\")); // Incorrect format","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"Rikko1204"},"content":" assertFalse(Schedule.isValidSchedule(\"12-12-2020 12pm\")); // Extra strings","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"Rikko1204"},"content":" // valid schedule","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"Rikko1204"},"content":" assertTrue(Schedule.isValidSchedule(\"12-12-2020\")); // Correct format","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"Rikko1204"},"content":" assertTrue(Schedule.isValidSchedule(\"12/12/2020\")); // Correct format","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"hjuntan"},"content":" assertTrue(Schedule.isValidSchedule(\"\")); // Empty string","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"Rikko1204"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"Rikko1204"},"content":" public void equals() {","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"Rikko1204"},"content":" Schedule schedule \u003d new Schedule(\"10-10-2020\");","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"Rikko1204"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"Rikko1204"},"content":" assertTrue(schedule.equals(new Schedule(\"10-10-2020\")));","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"Rikko1204"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"Rikko1204"},"content":" assertTrue(schedule.equals(schedule));","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"Rikko1204"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"Rikko1204"},"content":" assertFalse(schedule.equals(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"Rikko1204"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"Rikko1204"},"content":" assertFalse(schedule.equals(5.0f));","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"Rikko1204"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"Rikko1204"},"content":" assertFalse(schedule.equals(new Schedule(\"01-01-2010\")));","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"Rikko1204"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"Rikko1204":58,"hjuntan":2}},{"path":"src/test/java/seedu/address/model/person/TagMatchesPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"RingoftheKing"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"RingoftheKing"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"RingoftheKing"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"RingoftheKing"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"RingoftheKing"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"RingoftheKing"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"RingoftheKing"},"content":"public class TagMatchesPredicateTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"RingoftheKing"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"RingoftheKing"},"content":" public void test_tagMatches_returnsTrue() {","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"RingoftheKing"},"content":" Person person \u003d new PersonBuilder().withTag(Tag.TagType.TA.toString()).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"RingoftheKing"},"content":" TagMatchesPredicate validTagPredicate \u003d new TagMatchesPredicate(Tag.TagType.TA.toString());","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"RingoftheKing"},"content":" assertTrue(validTagPredicate.test(person));","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"RingoftheKing"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"RingoftheKing"},"content":" public void test_tagNoMatch_returnsFalse() {","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"RingoftheKing"},"content":" Person person \u003d new PersonBuilder().withTag(Tag.TagType.Professor.toString()).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"RingoftheKing"},"content":" TagMatchesPredicate noMatchPredicate \u003d new TagMatchesPredicate(Tag.TagType.TA.toString());","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"RingoftheKing"},"content":" assertFalse(noMatchPredicate.test(person));","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"RingoftheKing"},"content":" TagMatchesPredicate gibberishPredicate \u003d new TagMatchesPredicate(\"GARBAGE_VALUE\");","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"RingoftheKing"},"content":" assertFalse(gibberishPredicate.test(person));","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"RingoftheKing"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"RingoftheKing"},"content":" public void test_toString() {","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"RingoftheKing"},"content":" String keyword \u003d Tag.TagType.TA.name();","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"RingoftheKing"},"content":" TagMatchesPredicate tagMatchesPredicate \u003d new TagMatchesPredicate(keyword);","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"RingoftheKing"},"content":" String expected \u003d TagMatchesPredicate.class.getCanonicalName() + \"{tagKeyword\u003d\" + keyword + \"}\";","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"RingoftheKing"},"content":" assertEquals(tagMatchesPredicate.toString(), expected);","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"RingoftheKing"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"RingoftheKing":38}},{"path":"src/test/java/seedu/address/model/person/TagTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"hjuntan"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"hjuntan"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"hjuntan"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"hjuntan"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"hjuntan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"hjuntan"},"content":"public class TagTest {","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"hjuntan"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"hjuntan"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"hjuntan"},"content":" assertThrows(NullPointerException.class, () -\u003e new Tag(null));","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"hjuntan"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"hjuntan"},"content":" public void constructor_invalidTag_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"hjuntan"},"content":" String invalidTag \u003d \"\";","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"hjuntan"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Tag(invalidTag));","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"hjuntan"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"hjuntan"},"content":" public void isValidTag() {","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"hjuntan"},"content":" // null tag","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"hjuntan"},"content":" assertThrows(NullPointerException.class, () -\u003e Tag.isValidTag(null));","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"hjuntan"},"content":" // invalid tags","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"hjuntan"},"content":" assertFalse(Tag.isValidTag(\"\")); // empty string","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"hjuntan"},"content":" assertFalse(Tag.isValidTag(\" \")); // spaces only","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"hjuntan"},"content":" // valid tags","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"hjuntan"},"content":" assertTrue(Tag.isValidTag(\"Student\"));","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"hjuntan"},"content":" assertTrue(Tag.isValidTag(\"Professor\"));","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"hjuntan"},"content":" assertTrue(Tag.isValidTag(\"TA\"));","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"hjuntan"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"hjuntan"},"content":" public void equals() {","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"hjuntan"},"content":" Tag tag \u003d new Tag(\"Student\");","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"hjuntan"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"hjuntan"},"content":" assertTrue(tag.equals(new Tag(\"Student\")));","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"hjuntan"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"hjuntan"},"content":" assertTrue(tag.equals(tag));","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"hjuntan"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"hjuntan"},"content":" assertFalse(tag.equals(null));","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"hjuntan"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"hjuntan"},"content":" assertFalse(tag.equals(5.0f));","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"hjuntan"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"hjuntan"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"hjuntan"},"content":" assertFalse(tag.equals(new Tag(\"Professor\")));","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"hjuntan"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"hjuntan"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"hjuntan":56}},{"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":"hjuntan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GROUP_HUSBAND;","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"hjuntan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_BOB;","lastModifiedDate":"2024-03-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":"hjuntan"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withTag(VALID_TAG_BOB).withGroups(VALID_GROUP_HUSBAND)","lastModifiedDate":"2024-03-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":"hjuntan"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withTag(VALID_TAG_BOB).withGroups(VALID_GROUP_HUSBAND)","lastModifiedDate":"2024-03-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":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"hjuntan":4,"-":171}},{"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":"Rikko1204"},"content":"import seedu.address.model.person.NusId;","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"Rikko1204"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"Rikko1204"},"content":"import seedu.address.model.person.Schedule;","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"hjuntan"},"content":"import seedu.address.model.person.Tag;","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"Rikko1204"},"content":" private static final String INVALID_NUSID \u003d \"e1234567\";","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"hjuntan"},"content":" private static final String INVALID_TAG \u003d \" \";","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"hjuntan"},"content":" private static final String INVALID_GROUP \u003d \"#friend\";","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"Rikko1204"},"content":" private static final String INVALID_SCHEDULE \u003d \"2024-12-12\";","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"hjuntan"},"content":" private static final String VALID_NUSID \u003d BENSON.getNusId().toString();","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"hjuntan"},"content":" private static final String VALID_TAG \u003d BENSON.getTag().toString();","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"Rikko1204"},"content":" private static final String VALID_SCHEDULE \u003d BENSON.getSchedule().toString();","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"Rikko1204"},"content":" private static final String VALID_REMARK \u003d BENSON.getRemark().toString();","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"hjuntan"},"content":" private static final List\u003cJsonAdaptedGroup\u003e VALID_GROUPS \u003d BENSON.getGroups().stream()","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"hjuntan"},"content":" .map(JsonAdaptedGroup::new)","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","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":"Rikko1204"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"Rikko1204"},"content":" public void toModelType_invalidNusId_throwsIllegalValueException() {","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"Rikko1204"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"Rikko1204"},"content":" new JsonAdaptedPerson(INVALID_NUSID, VALID_NAME, VALID_PHONE,","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"Rikko1204"},"content":" VALID_EMAIL, VALID_TAG, VALID_GROUPS, VALID_SCHEDULE, VALID_REMARK);","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"Rikko1204"},"content":" String expectedMessage \u003d NusId.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-13"},{"lineNumber":56,"author":{"gitId":"Rikko1204"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"Rikko1204"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":60,"author":{"gitId":"Rikko1204"},"content":" public void toModelType_nullNusId_throwsIllegalValueException() {","lastModifiedDate":"2024-03-13"},{"lineNumber":61,"author":{"gitId":"Rikko1204"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-13"},{"lineNumber":62,"author":{"gitId":"Rikko1204"},"content":" new JsonAdaptedPerson(null, VALID_NAME, VALID_PHONE,","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"Rikko1204"},"content":" VALID_EMAIL, VALID_TAG, VALID_GROUPS, VALID_SCHEDULE, VALID_REMARK);","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"Rikko1204"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, NusId.class.getSimpleName());","lastModifiedDate":"2024-03-13"},{"lineNumber":65,"author":{"gitId":"Rikko1204"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-13"},{"lineNumber":66,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":67,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"Rikko1204"},"content":" new JsonAdaptedPerson(VALID_NUSID, INVALID_NAME, VALID_PHONE,","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"Rikko1204"},"content":" VALID_EMAIL, VALID_TAG, VALID_GROUPS, VALID_SCHEDULE, VALID_REMARK);","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"hjuntan"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-11"},{"lineNumber":80,"author":{"gitId":"Rikko1204"},"content":" new JsonAdaptedPerson(VALID_NUSID, null, VALID_PHONE,","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"Rikko1204"},"content":" VALID_EMAIL, VALID_TAG, VALID_GROUPS, VALID_SCHEDULE, VALID_REMARK);","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"Rikko1204"},"content":" new JsonAdaptedPerson(VALID_NUSID, VALID_NAME, INVALID_PHONE,","lastModifiedDate":"2024-03-16"},{"lineNumber":90,"author":{"gitId":"Rikko1204"},"content":" VALID_EMAIL, VALID_TAG, VALID_GROUPS, VALID_SCHEDULE, VALID_REMARK);","lastModifiedDate":"2024-03-16"},{"lineNumber":91,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"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_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"hjuntan"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-11"},{"lineNumber":98,"author":{"gitId":"Rikko1204"},"content":" new JsonAdaptedPerson(VALID_NUSID, VALID_NAME, null,","lastModifiedDate":"2024-03-16"},{"lineNumber":99,"author":{"gitId":"Rikko1204"},"content":" VALID_EMAIL, VALID_TAG, VALID_GROUPS, VALID_SCHEDULE, VALID_REMARK);","lastModifiedDate":"2024-03-16"},{"lineNumber":100,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","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":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"Rikko1204"},"content":" new JsonAdaptedPerson(VALID_NUSID, VALID_NAME, VALID_PHONE,","lastModifiedDate":"2024-03-16"},{"lineNumber":108,"author":{"gitId":"Rikko1204"},"content":" INVALID_EMAIL, VALID_TAG, VALID_GROUPS, VALID_SCHEDULE, VALID_REMARK);","lastModifiedDate":"2024-03-16"},{"lineNumber":109,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":115,"author":{"gitId":"hjuntan"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-11"},{"lineNumber":116,"author":{"gitId":"Rikko1204"},"content":" new JsonAdaptedPerson(VALID_NUSID, VALID_NAME, VALID_PHONE,","lastModifiedDate":"2024-03-16"},{"lineNumber":117,"author":{"gitId":"Rikko1204"},"content":" null, VALID_TAG, VALID_GROUPS, VALID_SCHEDULE, VALID_REMARK);","lastModifiedDate":"2024-03-16"},{"lineNumber":118,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":123,"author":{"gitId":"hjuntan"},"content":" public void toModelType_invalidTag_throwsIllegalValueException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":124,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":125,"author":{"gitId":"Rikko1204"},"content":" new JsonAdaptedPerson(VALID_NUSID, VALID_NAME, VALID_PHONE,","lastModifiedDate":"2024-03-16"},{"lineNumber":126,"author":{"gitId":"Rikko1204"},"content":" VALID_EMAIL, INVALID_TAG, VALID_GROUPS, VALID_SCHEDULE, VALID_REMARK);","lastModifiedDate":"2024-03-16"},{"lineNumber":127,"author":{"gitId":"hjuntan"},"content":" String expectedMessage \u003d Tag.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-11"},{"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":"hjuntan"},"content":" public void toModelType_nullTag_throwsIllegalValueException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":133,"author":{"gitId":"hjuntan"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-11"},{"lineNumber":134,"author":{"gitId":"Rikko1204"},"content":" new JsonAdaptedPerson(VALID_NUSID, VALID_NAME, VALID_PHONE,","lastModifiedDate":"2024-03-16"},{"lineNumber":135,"author":{"gitId":"Rikko1204"},"content":" VALID_EMAIL, null, VALID_GROUPS, VALID_SCHEDULE, VALID_REMARK);","lastModifiedDate":"2024-03-16"},{"lineNumber":136,"author":{"gitId":"hjuntan"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Tag.class.getSimpleName());","lastModifiedDate":"2024-03-11"},{"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":"hjuntan"},"content":" public void toModelType_invalidGroups_throwsIllegalValueException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":142,"author":{"gitId":"hjuntan"},"content":" List\u003cJsonAdaptedGroup\u003e invalidGroups \u003d new ArrayList\u003c\u003e(VALID_GROUPS);","lastModifiedDate":"2024-03-11"},{"lineNumber":143,"author":{"gitId":"hjuntan"},"content":" invalidGroups.add(new JsonAdaptedGroup(INVALID_GROUP));","lastModifiedDate":"2024-03-11"},{"lineNumber":144,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":145,"author":{"gitId":"Rikko1204"},"content":" new JsonAdaptedPerson(VALID_NUSID, VALID_NAME, VALID_PHONE,","lastModifiedDate":"2024-03-16"},{"lineNumber":146,"author":{"gitId":"Rikko1204"},"content":" VALID_EMAIL, VALID_TAG, invalidGroups, VALID_SCHEDULE, VALID_REMARK);","lastModifiedDate":"2024-03-16"},{"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":"Rikko1204"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":151,"author":{"gitId":"Rikko1204"},"content":" public void toModelType_invalidSchedule_throwsIllegalValueException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":152,"author":{"gitId":"Rikko1204"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-17"},{"lineNumber":153,"author":{"gitId":"Rikko1204"},"content":" new JsonAdaptedPerson(VALID_NUSID, VALID_NAME, VALID_PHONE,","lastModifiedDate":"2024-03-17"},{"lineNumber":154,"author":{"gitId":"Rikko1204"},"content":" VALID_EMAIL, VALID_TAG, VALID_GROUPS, INVALID_SCHEDULE, VALID_REMARK);","lastModifiedDate":"2024-03-17"},{"lineNumber":155,"author":{"gitId":"Rikko1204"},"content":" String expectedMessage \u003d Schedule.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-17"},{"lineNumber":156,"author":{"gitId":"Rikko1204"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-17"},{"lineNumber":157,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":158,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":159,"author":{"gitId":"Rikko1204"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":160,"author":{"gitId":"Rikko1204"},"content":" public void toModelType_nullSchedule_throwsIllegalValueException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":161,"author":{"gitId":"Rikko1204"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-17"},{"lineNumber":162,"author":{"gitId":"Rikko1204"},"content":" new JsonAdaptedPerson(VALID_NUSID, VALID_NAME, VALID_PHONE,","lastModifiedDate":"2024-03-17"},{"lineNumber":163,"author":{"gitId":"Rikko1204"},"content":" VALID_EMAIL, VALID_TAG, VALID_GROUPS, null, VALID_REMARK);","lastModifiedDate":"2024-03-17"},{"lineNumber":164,"author":{"gitId":"Rikko1204"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Schedule.class.getSimpleName());","lastModifiedDate":"2024-03-17"},{"lineNumber":165,"author":{"gitId":"Rikko1204"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-17"},{"lineNumber":166,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":167,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":168,"author":{"gitId":"Rikko1204"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":169,"author":{"gitId":"Rikko1204"},"content":" public void toModelType_nullRemark_throwsIllegalValueException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":170,"author":{"gitId":"Rikko1204"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-17"},{"lineNumber":171,"author":{"gitId":"Rikko1204"},"content":" new JsonAdaptedPerson(VALID_NUSID, VALID_NAME, VALID_PHONE,","lastModifiedDate":"2024-03-17"},{"lineNumber":172,"author":{"gitId":"Rikko1204"},"content":" VALID_EMAIL, VALID_TAG, VALID_GROUPS, VALID_SCHEDULE, null);","lastModifiedDate":"2024-03-17"},{"lineNumber":173,"author":{"gitId":"Rikko1204"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Remark.class.getSimpleName());","lastModifiedDate":"2024-03-17"},{"lineNumber":174,"author":{"gitId":"Rikko1204"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-17"},{"lineNumber":175,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":176,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"Rikko1204":70,"hjuntan":18,"-":88}},{"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":"hjuntan"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"cheahTJ"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"cheahTJ"},"content":"import seedu.address.model.person.Schedule;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"cheahTJ"},"content":"import seedu.address.model.person.Tag;","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":" descriptor.setPhone(person.getPhone());","lastModifiedDate":"2017-06-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":40,"author":{"gitId":"cheahTJ"},"content":" descriptor.setSchedule(person.getSchedule());","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"cheahTJ"},"content":" descriptor.setRemark(person.getRemark());","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"hjuntan"},"content":" descriptor.setTag(person.getTag());","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"hjuntan"},"content":" descriptor.setGroups(person.getGroups());","lastModifiedDate":"2024-03-11"},{"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":"-"},"content":" * Sets the {@code Phone} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2017-12-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Sets the {@code Email} 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 withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":66,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","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":"hjuntan"},"content":" * Sets the {@code Tag} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-11"},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":73,"author":{"gitId":"hjuntan"},"content":" public EditPersonDescriptorBuilder withTag(String tag) {","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"hjuntan"},"content":" descriptor.setTag(new Tag(tag));","lastModifiedDate":"2024-03-11"},{"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":"hjuntan"},"content":" * Parses the {@code groups} into a {@code Set\u003cGroup\u003e} and set it to the {@code EditPersonDescriptor}","lastModifiedDate":"2024-03-11"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":82,"author":{"gitId":"hjuntan"},"content":" public EditPersonDescriptorBuilder withGroups(String... groups) {","lastModifiedDate":"2024-03-11"},{"lineNumber":83,"author":{"gitId":"hjuntan"},"content":" Set\u003cGroup\u003e groupSet \u003d Stream.of(groups).map(Group::new).collect(Collectors.toSet());","lastModifiedDate":"2024-03-11"},{"lineNumber":84,"author":{"gitId":"hjuntan"},"content":" descriptor.setGroups(groupSet);","lastModifiedDate":"2024-03-11"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":88,"author":{"gitId":"cheahTJ"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"cheahTJ"},"content":" * Sets the {@code Schedule} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"cheahTJ"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":91,"author":{"gitId":"cheahTJ"},"content":" public EditPersonDescriptorBuilder withSchedule(String schedule) {","lastModifiedDate":"2024-03-19"},{"lineNumber":92,"author":{"gitId":"cheahTJ"},"content":" descriptor.setSchedule(new Schedule(schedule));","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"cheahTJ"},"content":" return this;","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"cheahTJ"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":95,"author":{"gitId":"cheahTJ"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"cheahTJ"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"cheahTJ"},"content":" * Sets the {@code Remark} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"cheahTJ"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"cheahTJ"},"content":" public EditPersonDescriptorBuilder withRemark(String remark) {","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"cheahTJ"},"content":" descriptor.setRemark(new Remark(remark));","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"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":{"cheahTJ":18,"hjuntan":10,"-":79}},{"path":"src/test/java/seedu/address/testutil/FindCommandBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"RingoftheKing"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"RingoftheKing"},"content":"import java.util.List;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"RingoftheKing"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"RingoftheKing"},"content":"import seedu.address.model.person.EmailMatchesPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"RingoftheKing"},"content":"import seedu.address.model.person.GroupMatchesPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"RingoftheKing"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"RingoftheKing"},"content":"import seedu.address.model.person.PhoneMatchesPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"RingoftheKing"},"content":"import seedu.address.model.person.TagMatchesPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"RingoftheKing"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"RingoftheKing"},"content":" * A class that aids in creating {@code FindCommand} instances for testing","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"RingoftheKing"},"content":" * The default {@code FindCommand} created results in no filtering","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"RingoftheKing"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"RingoftheKing"},"content":"public class FindCommandBuilder {","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"RingoftheKing"},"content":" public static final NameContainsKeywordsPredicate DEFAULT_NAME_PRED \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"RingoftheKing"},"content":" new NameContainsKeywordsPredicate(List.of(FindCommand.NOT_REQUIRED_VALUE));","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"RingoftheKing"},"content":" public static final EmailMatchesPredicate DEFAULT_EMAIL_PRED \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"RingoftheKing"},"content":" new EmailMatchesPredicate(FindCommand.NOT_REQUIRED_VALUE);","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"RingoftheKing"},"content":" public static final GroupMatchesPredicate DEFAULT_GROUPS_PRED \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"RingoftheKing"},"content":" new GroupMatchesPredicate(List.of());","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"RingoftheKing"},"content":" public static final PhoneMatchesPredicate DEFAULT_PHONE_PRED \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"RingoftheKing"},"content":" new PhoneMatchesPredicate(FindCommand.NOT_REQUIRED_VALUE);","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"RingoftheKing"},"content":" public static final TagMatchesPredicate DEFAULT_TAG_PRED \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"RingoftheKing"},"content":" new TagMatchesPredicate(FindCommand.NOT_REQUIRED_VALUE);","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"RingoftheKing"},"content":" private NameContainsKeywordsPredicate n;","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"RingoftheKing"},"content":" private EmailMatchesPredicate e;","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"RingoftheKing"},"content":" private GroupMatchesPredicate g;","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"RingoftheKing"},"content":" private PhoneMatchesPredicate p;","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"RingoftheKing"},"content":" private TagMatchesPredicate t;","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"RingoftheKing"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"RingoftheKing"},"content":" * Constructs a Utility class to help build a FindCommand.","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"RingoftheKing"},"content":" * All fields are initially set to be optional.","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"RingoftheKing"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"RingoftheKing"},"content":" public FindCommandBuilder() {","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"RingoftheKing"},"content":" n \u003d DEFAULT_NAME_PRED;","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"RingoftheKing"},"content":" e \u003d DEFAULT_EMAIL_PRED;","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"RingoftheKing"},"content":" g \u003d DEFAULT_GROUPS_PRED;","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"RingoftheKing"},"content":" p \u003d DEFAULT_PHONE_PRED;","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"RingoftheKing"},"content":" t \u003d DEFAULT_TAG_PRED;","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"RingoftheKing"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"RingoftheKing"},"content":" * Changes the {@code FindCommand}\u0027s NameMatchesPredicate we are building.","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"RingoftheKing"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"RingoftheKing"},"content":" public FindCommandBuilder withNamePred(NameContainsKeywordsPredicate namePred) {","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"RingoftheKing"},"content":" n \u003d namePred;","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"RingoftheKing"},"content":" return this;","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"RingoftheKing"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"RingoftheKing"},"content":" * Changes the {@code FindCommand\u0027s} {@code EmailMatchesPredicate} we are building.","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"RingoftheKing"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"RingoftheKing"},"content":" public FindCommandBuilder withEmail(EmailMatchesPredicate emailPred) {","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"RingoftheKing"},"content":" e \u003d emailPred;","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"RingoftheKing"},"content":" return this;","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"RingoftheKing"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"RingoftheKing"},"content":" * Changes the {@code FindCommand\u0027s} {@code GroupMatchesPredicate} we are building.","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"RingoftheKing"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"RingoftheKing"},"content":" public FindCommandBuilder withGroups(GroupMatchesPredicate groupsPred) {","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"RingoftheKing"},"content":" g \u003d groupsPred;","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"RingoftheKing"},"content":" return this;","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"RingoftheKing"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"RingoftheKing"},"content":" * Changes the {@code FindCommand\u0027s} {@code PhoneMatchesPredicate} we are building.","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"RingoftheKing"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"RingoftheKing"},"content":" public FindCommandBuilder withPhone(PhoneMatchesPredicate phonePred) {","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"RingoftheKing"},"content":" p \u003d phonePred;","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"RingoftheKing"},"content":" return this;","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"RingoftheKing"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"RingoftheKing"},"content":" * Changes the {@code FindCommand\u0027s} {@code TagMatchesPredicate} we are building.","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"RingoftheKing"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"RingoftheKing"},"content":" public FindCommandBuilder withTag(TagMatchesPredicate tagPred) {","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"RingoftheKing"},"content":" t \u003d tagPred;","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"RingoftheKing"},"content":" return this;","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"RingoftheKing"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"RingoftheKing"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"RingoftheKing"},"content":" * Build the {@code FindCommand} we have customised.","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"RingoftheKing"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"RingoftheKing"},"content":" public FindCommand build() {","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"RingoftheKing"},"content":" return new FindCommand(n, e, g, p, t);","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"RingoftheKing"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"RingoftheKing"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"RingoftheKing":92}},{"path":"src/test/java/seedu/address/testutil/GroupPersonDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Ragnapop"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"Ragnapop"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"Ragnapop"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"Ragnapop"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"Ragnapop"},"content":"import seedu.address.logic.commands.GroupCommand;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"Ragnapop"},"content":"import seedu.address.logic.commands.GroupCommand.GroupPersonDescriptor;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"Ragnapop"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"Ragnapop"},"content":"import seedu.address.model.person.NusId;","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"Ragnapop"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"Ragnapop"},"content":"import seedu.address.model.person.Tag;","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"Ragnapop"},"content":"/**","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"Ragnapop"},"content":" * A utility class to help with building GroupPersonDescriptor objects.","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"Ragnapop"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"Ragnapop"},"content":"public class GroupPersonDescriptorBuilder {","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"Ragnapop"},"content":" private GroupPersonDescriptor descriptor;","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"Ragnapop"},"content":" public GroupPersonDescriptorBuilder() {","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"Ragnapop"},"content":" descriptor \u003d new GroupCommand.GroupPersonDescriptor();","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"Ragnapop"},"content":" public GroupPersonDescriptorBuilder(GroupPersonDescriptor descriptor) {","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"Ragnapop"},"content":" this.descriptor \u003d new GroupPersonDescriptor(descriptor);","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"Ragnapop"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"Ragnapop"},"content":" * Returns an {@code GroupPersonDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"Ragnapop"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"Ragnapop"},"content":" public GroupPersonDescriptorBuilder(Person person) {","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"Ragnapop"},"content":" descriptor \u003d new GroupPersonDescriptor();","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"Ragnapop"},"content":" descriptor.setNusId(person.getNusId());","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"Ragnapop"},"content":" descriptor.setTag(person.getTag());","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"Ragnapop"},"content":" descriptor.setGroups(person.getGroups());","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"Ragnapop"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"Ragnapop"},"content":" * Sets the {@code Name} of the {@code GroupPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"Ragnapop"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"Ragnapop"},"content":" public GroupPersonDescriptorBuilder withNusId(String nusId) {","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"Ragnapop"},"content":" descriptor.setNusId(new NusId(nusId));","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"Ragnapop"},"content":" return this;","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"Ragnapop"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"Ragnapop"},"content":" * Sets the {@code Tag} of the {@code GroupPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"Ragnapop"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"Ragnapop"},"content":" public GroupPersonDescriptorBuilder withTag(String tag) {","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"Ragnapop"},"content":" descriptor.setTag(new Tag(tag));","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"Ragnapop"},"content":" return this;","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"Ragnapop"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":58,"author":{"gitId":"Ragnapop"},"content":" * Parses the {@code groups} into a {@code Set\u003cGroup\u003e} and set it to the {@code GroupPersonDescriptor}","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"Ragnapop"},"content":" * that we are building.","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"Ragnapop"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":61,"author":{"gitId":"Ragnapop"},"content":" public GroupPersonDescriptorBuilder withGroups(String... groups) {","lastModifiedDate":"2024-03-14"},{"lineNumber":62,"author":{"gitId":"Ragnapop"},"content":" Set\u003cGroup\u003e groupSet \u003d Stream.of(groups).map(Group::new).collect(Collectors.toSet());","lastModifiedDate":"2024-03-14"},{"lineNumber":63,"author":{"gitId":"Ragnapop"},"content":" descriptor.setGroups(groupSet);","lastModifiedDate":"2024-03-14"},{"lineNumber":64,"author":{"gitId":"Ragnapop"},"content":" return this;","lastModifiedDate":"2024-03-14"},{"lineNumber":65,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":66,"author":{"gitId":"Ragnapop"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":67,"author":{"gitId":"Ragnapop"},"content":" public GroupPersonDescriptor build() {","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"Ragnapop"},"content":" return descriptor;","lastModifiedDate":"2024-03-14"},{"lineNumber":69,"author":{"gitId":"Ragnapop"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":70,"author":{"gitId":"Ragnapop"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"Ragnapop":70}},{"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":"hjuntan"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-01-18"},{"lineNumber":9,"author":{"gitId":"hjuntan"},"content":"import seedu.address.model.person.NusId;","lastModifiedDate":"2024-03-11"},{"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":"Rikko1204"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"Rikko1204"},"content":"import seedu.address.model.person.Schedule;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"hjuntan"},"content":"import seedu.address.model.person.Tag;","lastModifiedDate":"2024-03-11"},{"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":"hjuntan"},"content":" public static final String DEFAULT_NUSID \u003d \"E1234567\";","lastModifiedDate":"2024-03-11"},{"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":"hjuntan"},"content":" public static final String DEFAULT_TAG \u003d \"Student\";","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"Rikko1204"},"content":" public static final String DEFAULT_SCHEDULE \u003d \"12-12-2024\";","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"Rikko1204"},"content":" public static final String DEFAULT_REMARK \u003d \"Consultation at COM3\";","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":31,"author":{"gitId":"hjuntan"},"content":" private NusId nusId;","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":35,"author":{"gitId":"hjuntan"},"content":" private Tag tag;","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"hjuntan"},"content":" private Set\u003cGroup\u003e groups;","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"Rikko1204"},"content":" private Schedule schedule;","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"Rikko1204"},"content":" private Remark remark;","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15"},{"lineNumber":44,"author":{"gitId":"hjuntan"},"content":" nusId \u003d new NusId(DEFAULT_NUSID);","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20"},{"lineNumber":48,"author":{"gitId":"hjuntan"},"content":" tag \u003d new Tag(DEFAULT_TAG);","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"hjuntan"},"content":" groups \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"Rikko1204"},"content":" schedule \u003d new Schedule(DEFAULT_SCHEDULE);","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"Rikko1204"},"content":" remark \u003d new Remark(DEFAULT_REMARK);","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10"},{"lineNumber":58,"author":{"gitId":"hjuntan"},"content":" nusId \u003d personToCopy.getNusId();","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20"},{"lineNumber":62,"author":{"gitId":"hjuntan"},"content":" tag \u003d personToCopy.getTag();","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"hjuntan"},"content":" groups \u003d new HashSet\u003c\u003e(personToCopy.getGroups());","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"Rikko1204"},"content":" schedule \u003d personToCopy.getSchedule();","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"Rikko1204"},"content":" remark \u003d personToCopy.getRemark();","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11"},{"lineNumber":68,"author":{"gitId":"hjuntan"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"hjuntan"},"content":" * Sets the {@code NusId} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-11"},{"lineNumber":70,"author":{"gitId":"hjuntan"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":71,"author":{"gitId":"hjuntan"},"content":" public PersonBuilder withNusId(String nusId) {","lastModifiedDate":"2024-03-11"},{"lineNumber":72,"author":{"gitId":"hjuntan"},"content":" this.nusId \u003d new NusId(nusId);","lastModifiedDate":"2024-03-11"},{"lineNumber":73,"author":{"gitId":"hjuntan"},"content":" return this;","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":80,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":85,"author":{"gitId":"hjuntan"},"content":" * Parses the {@code groups} into a {@code Set\u003cGroup\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2024-03-11"},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":87,"author":{"gitId":"hjuntan"},"content":" public PersonBuilder withGroups(String ... groups) {","lastModifiedDate":"2024-03-11"},{"lineNumber":88,"author":{"gitId":"hjuntan"},"content":" this.groups \u003d SampleDataUtil.getGroupSet(groups);","lastModifiedDate":"2024-03-11"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":93,"author":{"gitId":"hjuntan"},"content":" * Sets the {@code Tag} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-11"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":95,"author":{"gitId":"hjuntan"},"content":" public PersonBuilder withTag(String tag) {","lastModifiedDate":"2024-03-11"},{"lineNumber":96,"author":{"gitId":"hjuntan"},"content":" this.tag \u003d new Tag(tag);","lastModifiedDate":"2024-03-11"},{"lineNumber":97,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":102,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":104,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20"},{"lineNumber":105,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":108,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":109,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":110,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":111,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":112,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20"},{"lineNumber":113,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":116,"author":{"gitId":"Rikko1204"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"Rikko1204"},"content":" * Sets the {@code Schedule} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"Rikko1204"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"Rikko1204"},"content":" public PersonBuilder withSchedule(String schedule) {","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"Rikko1204"},"content":" this.schedule \u003d new Schedule(schedule);","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"Rikko1204"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"Rikko1204"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"Rikko1204"},"content":" * Sets the {@code Remark} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"Rikko1204"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"Rikko1204"},"content":" public PersonBuilder withRemark(String remark) {","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"Rikko1204"},"content":" this.remark \u003d new Remark(remark);","lastModifiedDate":"2024-03-17"},{"lineNumber":129,"author":{"gitId":"Rikko1204"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":130,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05"},{"lineNumber":133,"author":{"gitId":"Rikko1204"},"content":" return new Person(nusId, name, phone, email, tag, groups, schedule, remark);","lastModifiedDate":"2024-03-17"},{"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":{"Rikko1204":27,"hjuntan":26,"-":83}},{"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":"hjuntan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GROUP;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":6,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NUSID;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":8,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SCHEDULE;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2018-03-26"},{"lineNumber":16,"author":{"gitId":"hjuntan"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static String getAddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":28,"author":{"gitId":"-"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2017-03-29"},{"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":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05"},{"lineNumber":36,"author":{"gitId":"Rikko1204"},"content":" sb.append(PREFIX_NUSID + person.getNusId().value + \" \");","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" sb.append(PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2017-06-06"},{"lineNumber":38,"author":{"gitId":"-"},"content":" sb.append(PREFIX_PHONE + person.getPhone().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":40,"author":{"gitId":"hjuntan"},"content":" sb.append(PREFIX_TAG + person.getTag().value.toString() + \" \");","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"hjuntan"},"content":" person.getGroups().stream().forEach(","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"hjuntan"},"content":" s -\u003e sb.append(PREFIX_GROUP + s.groupName + \" \")","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09"},{"lineNumber":44,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"Rikko1204"},"content":" return sb.toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"Rikko1204"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"Rikko1204"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"Rikko1204"},"content":" public static String getPersonScheduleDetails(Person person) {","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"Rikko1204"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"Rikko1204"},"content":" sb.append(PREFIX_NUSID + person.getNusId().value + \" \");","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"Rikko1204"},"content":" sb.append(PREFIX_SCHEDULE + person.getSchedule().date + \" \");","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"Rikko1204"},"content":" sb.append(PREFIX_REMARK + person.getRemark().value + \" \");","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":64,"author":{"gitId":"hjuntan"},"content":" descriptor.getTag().ifPresent(tag -\u003e sb.append(PREFIX_TAG).append(tag.value).append(\" \"));","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"hjuntan"},"content":" if (descriptor.getGroups().isPresent()) {","lastModifiedDate":"2024-03-11"},{"lineNumber":66,"author":{"gitId":"hjuntan"},"content":" Set\u003cGroup\u003e groups \u003d descriptor.getGroups().get();","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"hjuntan"},"content":" if (groups.isEmpty()) {","lastModifiedDate":"2024-03-11"},{"lineNumber":68,"author":{"gitId":"hjuntan"},"content":" sb.append(PREFIX_GROUP);","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26"},{"lineNumber":70,"author":{"gitId":"hjuntan"},"content":" groups.forEach(s -\u003e sb.append(PREFIX_GROUP).append(s.groupName).append(\" \"));","lastModifiedDate":"2024-03-11"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05"}],"authorContributionMap":{"Rikko1204":13,"hjuntan":11,"-":51}},{"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":"2017-08-22"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":5,"author":{"gitId":"hjuntan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GROUP_FRIEND;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"hjuntan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GROUP_HUSBAND;","lastModifiedDate":"2024-03-11"},{"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":"hjuntan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NUSID_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"hjuntan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NUSID_BOB;","lastModifiedDate":"2024-03-11"},{"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":"Rikko1204"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_REMARK_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_REMARK_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SCHEDULE_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"Rikko1204"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SCHEDULE_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"hjuntan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"hjuntan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_BOB;","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07"},{"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":"Rikko1204"},"content":" public static final Person ALICE \u003d new PersonBuilder().withNusId(\"E0123456\").withName(\"Alice Pauline\")","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"hjuntan"},"content":" .withTag(\"Student\").withEmail(\"alice@example.com\")","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"Rikko1204"},"content":" .withPhone(\"94351253\").withGroups(\"friends\")","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"Rikko1204"},"content":" .withSchedule(\"10-09-2020\").withRemark(\"\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"hjuntan"},"content":" public static final Person BENSON \u003d new PersonBuilder().withNusId(\"E9682156\").withName(\"Benson Meier\")","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"-"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2017-04-05"},{"lineNumber":38,"author":{"gitId":"Rikko1204"},"content":" .withTag(\"Student\").withGroups(\"owesMoney\", \"friends\")","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"Rikko1204"},"content":" .withSchedule(\"01-01-2020\").withRemark(\"Consultation at 3pm\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"hjuntan"},"content":" public static final Person CARL \u003d new PersonBuilder().withNusId(\"E0358435\").withName(\"Carl Kurz\")","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"hjuntan"},"content":" .withPhone(\"95352563\").withEmail(\"heinz@example.com\")","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"Rikko1204"},"content":" .withTag(\"TA\").withSchedule(\"02-01-2020\").withRemark(\"\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"hjuntan"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withNusId(\"E1237864\").withName(\"Daniel Meier\")","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"hjuntan"},"content":" .withPhone(\"87652533\").withEmail(\"cornelia@example.com\")","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"Rikko1204"},"content":" .withTag(\"Professor\").withGroups(\"friends\")","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"Rikko1204"},"content":" .withSchedule(\"03/01/2020\").withRemark(\"Lunch\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"hjuntan"},"content":" public static final Person ELLE \u003d new PersonBuilder().withNusId(\"E6546506\").withName(\"Elle Meyer\")","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"hjuntan"},"content":" .withPhone(\"9482224\").withEmail(\"werner@example.com\")","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"Rikko1204"},"content":" .withTag(\"TA\").withSchedule(\"09/09/2020\").withRemark(\"\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"hjuntan"},"content":" public static final Person FIONA \u003d new PersonBuilder().withNusId(\"E5419832\").withName(\"Fiona Kunz\")","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"Rikko1204"},"content":" .withPhone(\"9482427\").withEmail(\"lydia@example.com\").withTag(\"None\")","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"Rikko1204"},"content":" .withSchedule(\"04/01/2020\").withRemark(\"Meet at MRT\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"hjuntan"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withNusId(\"E3548135\").withName(\"George Best\")","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"Rikko1204"},"content":" .withPhone(\"9482442\").withEmail(\"anna@example.com\").withTag(\"Student\")","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"Rikko1204"},"content":" .withSchedule(\"01-01-2020\").withRemark(\"\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":58,"author":{"gitId":"hjuntan"},"content":" public static final Person HOON \u003d new PersonBuilder().withNusId(\"E3518132\").withName(\"Hoon Meier\")","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"Rikko1204"},"content":" .withPhone(\"8482424\").withEmail(\"stefan@example.com\").withTag(\"Student\")","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"Rikko1204"},"content":" .withSchedule(\"08-08-2020\").withRemark(\"\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"hjuntan"},"content":" public static final Person IDA \u003d new PersonBuilder().withNusId(\"E9842465\").withName(\"Ida Mueller\")","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"Rikko1204"},"content":" .withPhone(\"8482131\").withEmail(\"hans@example.com\").withTag(\"None\")","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"Rikko1204"},"content":" .withSchedule(\"05-01-2024\").withRemark(\"Project meeting\").build();","lastModifiedDate":"2024-03-17"},{"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":"hjuntan"},"content":" public static final Person AMY \u003d new PersonBuilder().withNusId(VALID_NUSID_AMY).withName(VALID_NAME_AMY)","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"hjuntan"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY)","lastModifiedDate":"2024-03-11"},{"lineNumber":68,"author":{"gitId":"Rikko1204"},"content":" .withTag(VALID_TAG_AMY).withGroups(VALID_GROUP_FRIEND)","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"Rikko1204"},"content":" .withSchedule(VALID_SCHEDULE_AMY).withRemark(VALID_REMARK_AMY).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"hjuntan"},"content":" public static final Person BOB \u003d new PersonBuilder().withNusId(VALID_NUSID_BOB).withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-11"},{"lineNumber":71,"author":{"gitId":"hjuntan"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2024-03-11"},{"lineNumber":72,"author":{"gitId":"hjuntan"},"content":" .withTag(VALID_TAG_BOB).withGroups(VALID_GROUP_HUSBAND, VALID_GROUP_FRIEND)","lastModifiedDate":"2024-03-11"},{"lineNumber":73,"author":{"gitId":"Rikko1204"},"content":" .withSchedule(VALID_SCHEDULE_BOB).withRemark(VALID_REMARK_BOB).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05"},{"lineNumber":83,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10"},{"lineNumber":85,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10"},{"lineNumber":91,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04"},{"lineNumber":93,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13"}],"authorContributionMap":{"Rikko1204":24,"hjuntan":23,"-":46}}] diff --git a/AY2324S2-CS2103T-T15-2_tp_master/commits.json b/AY2324S2-CS2103T-T15-2_tp_master/commits.json index 27a1423a..1829b17f 100644 --- a/AY2324S2-CS2103T-T15-2_tp_master/commits.json +++ b/AY2324S2-CS2103T-T15-2_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"cheahTJ":[{"date":"2024-03-05","commitResults":[{"hash":"6aa8e4b987ee24b281f6b775c458cde82c6c9e7b","isMergeCommit":false,"messageTitle":"Edit READMe and AboutUs md files","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":304,"deletions":38}}},{"hash":"b3d896e6a963cfb67ad9a6455474e0f49c5fa482","isMergeCommit":false,"messageTitle":"Fix CI issue","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-06","commitResults":[{"hash":"1b032295a55797d4f976ec6f69d8ac7ca6c6aa2f","isMergeCommit":false,"messageTitle":"Edit README","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":5}}},{"hash":"173b7df17e870e38ed0e91f86eb761dd6583554a","isMergeCommit":false,"messageTitle":"Create Nusid class to standardise its usage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":58,"deletions":0}}},{"hash":"be55639426b66a66398cb451156497c61075652e","isMergeCommit":false,"messageTitle":"Fix CI issue for Nusid class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":2}}},{"hash":"bc93ebfa00c365269e6b8576c5ed6b51328ae651","isMergeCommit":false,"messageTitle":"Rename Nusid class to NusId class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4}}},{"hash":"5042b0450aac5a92996b7f4221d2973d9db93eb5","isMergeCommit":false,"messageTitle":"Rename NusId.class file","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":0,"deletions":0}}}]},{"date":"2024-03-07","commitResults":[{"hash":"6db48455016f0c2ab57f350f8ee8333cac44a8ee","isMergeCommit":false,"messageTitle":"Edit README.md file","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":0}}}]},{"date":"2024-03-12","commitResults":[{"hash":"87968ee5b1af4d7a92f77f5839d4683b2d4965c9","isMergeCommit":true,"messageTitle":"Merge pull request #32 from hjuntan/edit-person","messageBody":"Edit person fields","fileTypesAndContributionMap":{}}]},{"date":"2024-03-13","commitResults":[{"hash":"b9183bd6cf4c9361431212299d70d884733d4123","isMergeCommit":false,"messageTitle":"Edit delete feature to delete by NusId instead of index","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":35,"deletions":13},"test-code":{"insertions":28,"deletions":28}}},{"hash":"d7437a378ef1d94b6bdb4973ac498d0d75aa36b9","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":3}}},{"hash":"c62c04973584509efdf846e39ab99a261909a607","isMergeCommit":false,"messageTitle":"Fix more checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-16","commitResults":[{"hash":"dae52352463204029c72b56fec2712fb67dc4213","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-T15-2:master\u0027 into delete-feature","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"7f43a05e40a155e6e409ddb1029f14f62aeca1e4","isMergeCommit":false,"messageTitle":"Fix DeleteCommandTest.java file","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":13},"test-code":{"insertions":6,"deletions":7}}},{"hash":"9efddf4056d00dc3fd65aafd78c5f14454a9a897","isMergeCommit":false,"messageTitle":"Fix commandExecutionError test in LogicManagerTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":4}}},{"hash":"e2690a3dcb3cad1c93b8c8f272b02d964d7cd4a2","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":1}}},{"hash":"d00acc5deeb52e52f86cca2a012c5c6cb395c703","isMergeCommit":true,"messageTitle":"Merge pull request #61 from AY2324S2-CS2103T-T15-2/change-add-command","messageBody":"Change add command","fileTypesAndContributionMap":{}},{"hash":"a51804fca28ed949f5436c74e2a75557df085456","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into delete-feature","messageBody":"* master:\n Add more test cases\n More checkstyle fix\n Fix checkstyle\n Add NusId unique constraint\n More checkstyle fix\n Fix checkstyle error\n Replace dummy NusId with user inputted NusId\n","fileTypesAndContributionMap":{}},{"hash":"b109628a1de6e9a8305e46cdb698ad6ed34d8019","isMergeCommit":false,"messageTitle":"Resolve duplicated parseNusId() method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":15}}},{"hash":"e57a96a83a2275a83a54d7d6bde9eeceb8382e28","isMergeCommit":false,"messageTitle":"Fix test case in DeleteCommandTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-19","commitResults":[{"hash":"565d98e725521f9a8a901e1c59b163e651e53bf3","isMergeCommit":true,"messageTitle":"Merge pull request #64 from Rikko1204/add-schedule","messageBody":"Add schedule command","fileTypesAndContributionMap":{}},{"hash":"a8690974bfe7db10030edd0a4651188865be1472","isMergeCommit":true,"messageTitle":"Merge pull request #69 from AY2324S2-CS2103T-T15-2/sample-addressbook-bug-fix","messageBody":"Fix unique nusid constraint bug","fileTypesAndContributionMap":{}},{"hash":"a54a64eccc93e283ad02d880fcd58fd9ca97ccb2","isMergeCommit":false,"messageTitle":"Change edit command and edit command test","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":52,"deletions":17},"test-code":{"insertions":111,"deletions":73}}},{"hash":"5d4f0640adabb740276b077bf1a880a0d458c9a4","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into edit-feature","messageBody":"* master:\n Fix sample addressbook uniqueness bug\n","fileTypesAndContributionMap":{}},{"hash":"faf0f0c702eeea35b477e64feb2ed05706c41ae2","isMergeCommit":true,"messageTitle":"Merge pull request #71 from hjuntan/sample-addressbook-bug-fix","messageBody":"Fix issue of loading data from local file","fileTypesAndContributionMap":{}},{"hash":"3f62fe66ce739a8a5bb508dae7fa211fda509136","isMergeCommit":false,"messageTitle":"Fix EditCommandParserTest class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":20},"test-code":{"insertions":13,"deletions":59}}},{"hash":"b300744923b09f58e1526f45f41b8a1e6f501f82","isMergeCommit":false,"messageTitle":"Fix Checkstyle issue","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":2}}},{"hash":"c4c4135fb57d975eb0d77a20d86693a3a8e9984a","isMergeCommit":false,"messageTitle":"Fix more checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":25,"deletions":7}}}]},{"date":"2024-03-20","commitResults":[{"hash":"8fffb63e009dd0aa4052eb42c0b78a06f0120905","isMergeCommit":true,"messageTitle":"Merge pull request #75 from AY2324S2-CS2103T-T15-2/change-edit-command","messageBody":"Change edit command","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"cc7205c9e43d47017038c383d04a427280d20335","isMergeCommit":true,"messageTitle":"Merge pull request #81 from RingoftheKing/edit-find-command","messageBody":"Edit find command","fileTypesAndContributionMap":{}},{"hash":"93b1391d661b056aaadbb0f15dd86d6d61a5bac0","isMergeCommit":false,"messageTitle":"Add UML sequence diagrams for Edit, Delete features and UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":155,"deletions":28}}},{"hash":"88fa5a9f077a9f3266495584e18fbc9eb6aaf0c2","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into documentation","messageBody":"* master: (52 commits)\n Change list command to view command\n Update GroupCommand.java\n Update GroupCommand.java\n checkingstyle\n Update GroupCommand.java\n Update GroupCommand.java\n Update GroupCommandTest.java\n Update GroupCommandTest.java\n Update GroupCommandParserTest.java\n Update GroupCommandParserTest.java\n Update GroupCommandParserTest.java\n Update GroupCommandParserTest.java\n Update GroupCommandParserTest.java\n Update GroupCommandParserTest.java\n Update GroupCommandParserTest.java\n Update GroupCommandParserTest.java\n Update GroupCommandParserTest.java\n Update CommandParserTestUtil.java\n Update CommandParserTestUtil.java\n Update GroupCommandParserTest.java\n ...\n","fileTypesAndContributionMap":{}},{"hash":"1077b52894d3e8268eeaa042322dd512d297c533","isMergeCommit":true,"messageTitle":"Merge pull request #85 from AY2324S2-CS2103T-T15-2/change-find-command","messageBody":"Change find command","tags":["v1.2"],"fileTypesAndContributionMap":{}}]}],"Rikko1204":[{"date":"2024-02-28","commitResults":[{"hash":"9c0f64872538fe837c0ea08b11c2e5d910257d6c","isMergeCommit":true,"messageTitle":"Merge pull request #2 from AY2324S2-CS2103T-T15-2/switch-docs-to-markbind","messageBody":"Switch docs to markbind","fileTypesAndContributionMap":{}},{"hash":"2f9d1510235b6e6a081ac022d3e186c38096ad60","isMergeCommit":false,"messageTitle":"Add MarkBind config","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"40f51af29c3bc5b49329f4959d7f83db4347c2fc","isMergeCommit":true,"messageTitle":"Merge pull request #3 from Rikko1204/master","messageBody":"Add MarkBind config","fileTypesAndContributionMap":{}}]},{"date":"2024-03-06","commitResults":[{"hash":"d29bb35976aeeccff228a14ebc18ec7edea2334e","isMergeCommit":true,"messageTitle":"Merge pull request #13 from hjuntan/edit-Dev-Guide","messageBody":"Update Non-Functional Requirements in DeveloperGuide.md","fileTypesAndContributionMap":{}},{"hash":"18f87bd8fe98aa8640117e03a1210609c315df62","isMergeCommit":false,"messageTitle":"Update Glossary in DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":6}}},{"hash":"72e837bfc57da46d8fee8a03f651ac3c7369e6e7","isMergeCommit":true,"messageTitle":"Merge pull request #17 from cheahTJ/delete-feature","messageBody":"Create NusId class","fileTypesAndContributionMap":{}}]},{"date":"2024-03-07","commitResults":[{"hash":"7a95f1351b3141fe8b146b702e0334e986ac2798","isMergeCommit":true,"messageTitle":"Merge pull request #19 from AY2324S2-CS2103T-T15-2/documentation_1.1","messageBody":"Added NUSID class","fileTypesAndContributionMap":{}}]},{"date":"2024-03-12","commitResults":[{"hash":"9e3d152628ee9ea89ed89097b660c8c5af4abd78","isMergeCommit":false,"messageTitle":"Replace dummy NusId with user inputted NusId","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":26,"deletions":5}}},{"hash":"3bde05d3d086d24c77150f441d084a79f199f236","isMergeCommit":false,"messageTitle":"Fix checkstyle error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":3}}},{"hash":"6448db9592b16800bf420c10398299f3760fb1b0","isMergeCommit":false,"messageTitle":"More checkstyle fix","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"56de76815dcc906c7cd3f12990bf1b3e26b3a1b8","isMergeCommit":false,"messageTitle":"Add NusId unique constraint","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":3},"test-code":{"insertions":129,"deletions":71}}},{"hash":"c0db8b89dd844f08ac373d84ae7a6398b7adfce1","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3},"test-code":{"insertions":12,"deletions":10}}},{"hash":"bde660265c61e1bb2893067a74e05a6d2764c306","isMergeCommit":false,"messageTitle":"More checkstyle fix","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":39,"deletions":3}}}]},{"date":"2024-03-13","commitResults":[{"hash":"d5dbdf9c93b68ca8ffb511fdae7963b212c0367f","isMergeCommit":false,"messageTitle":"Add more test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":37,"deletions":0}}}]},{"date":"2024-03-16","commitResults":[{"hash":"8b62104eed8162cbc4dee492472f64dd7528655a","isMergeCommit":true,"messageTitle":"Merge pull request #62 from cheahTJ/delete-feature","messageBody":"Fix test cases in DeleteCommandTest.java file","fileTypesAndContributionMap":{}},{"hash":"ac26fe22f0cbf2227643d1ebcea41830436cd536","isMergeCommit":true,"messageTitle":"Merge pull request #63 from AY2324S2-CS2103T-T15-2/delete_feature","messageBody":"Modify delete feature","fileTypesAndContributionMap":{}},{"hash":"8c32db809767687f13c3b8b9fa0b02f460df1649","isMergeCommit":false,"messageTitle":"Functional schedule command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":358,"deletions":13},"test-code":{"insertions":26,"deletions":11}}}]},{"date":"2024-03-17","commitResults":[{"hash":"8465fecd24a0c63b0b787d807f52bea1ecc50dd7","isMergeCommit":false,"messageTitle":"Add and update existing test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":32,"deletions":17},"test-code":{"insertions":290,"deletions":15}}}]},{"date":"2024-03-18","commitResults":[{"hash":"ec03a7edadc4e561ec53270b3b0cc56abbbebd9a","isMergeCommit":true,"messageTitle":"Fix merge conflicts","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"5171d363669b88e55e22db33e312de2e183e66d3","isMergeCommit":true,"messageTitle":"Merge pull request #79 from AY2324S2-CS2103T-T15-2/add-view-command","messageBody":"Add view command","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"49c34d1ff56ca674c95174fee9019f639f0faece","isMergeCommit":true,"messageTitle":"Merge pull request #82 from cheahTJ/documentation","messageBody":"Add UML sequence diagrams for Delete, Edit feature","fileTypesAndContributionMap":{}},{"hash":"6c61a73226fafd2ca1aa2f332411f447a6fccb5c","isMergeCommit":true,"messageTitle":"Merge pull request #83 from AY2324S2-CS2103T-T15-2/documentation_1.2","messageBody":"Documentation 1.2","fileTypesAndContributionMap":{}}]}],"RingoftheKing":[{"date":"2024-03-04","commitResults":[{"hash":"55c3ceb840b378f9e719ec8e18f2fa7f475abd41","isMergeCommit":false,"messageTitle":"Update User Stories in DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":21,"deletions":9}}}]},{"date":"2024-03-10","commitResults":[{"hash":"d2fe3bd428982db7d12f473759a40db79285204a","isMergeCommit":false,"messageTitle":"Edit Find feature of UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":8}}},{"hash":"038b40eab8d05158722192c6bf42156158241fe2","isMergeCommit":true,"messageTitle":"Merge pull request #1 from RingoftheKing/edit-find-in-user-guide","messageBody":"Edit Find feature of UserGuide.md","fileTypesAndContributionMap":{}}]},{"date":"2024-03-11","commitResults":[{"hash":"5e8200d60daf22ef4cacfcc73aacdd86540d34e5","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-T15-2:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"fba56d31b7e1c3488b067d4dc47990bce7dd29d7","isMergeCommit":false,"messageTitle":"Add required Predicates for FindCommand","messageBody":"FindCommand now requires up to 5 predicates\nto be matched. Added the skeleton of these and\nedit FindCommand to include these predicates\n\nLet\u0027s add correct logic to the test function\nof these skeletons.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":113,"deletions":0}}},{"hash":"8eec29e9c53204d95a29d4275b457ec45edf7b0e","isMergeCommit":true,"messageTitle":"Merge pull request #2 from RingoftheKing/edit-find-command","messageBody":"Add required Predicates for FindCommand","fileTypesAndContributionMap":{}}]},{"date":"2024-03-12","commitResults":[{"hash":"2d5992d1ee026b0581352f7c147a8bae74e7007a","isMergeCommit":false,"messageTitle":"Add JavaDoc to Predicates","messageBody":"Add simple description to each Predicate.\nDescribe what each tests for.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":2}}},{"hash":"fa64c2a6d09302b498605c90e9ef5cf962a7a8a1","isMergeCommit":true,"messageTitle":"Merge pull request #3 from RingoftheKing/edit-find-command","messageBody":"Add JavaDoc to Predicates","fileTypesAndContributionMap":{}},{"hash":"75f34ae9e326db79140a6c2a18a65d795458a216","isMergeCommit":false,"messageTitle":"Fix import order of Tag Predicate","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"b3b650d7807d405035992abb218a466d62be0651","isMergeCommit":true,"messageTitle":"Merge pull request #4 from RingoftheKing/edit-find-command","messageBody":"Fix import order of Tag Predicate","fileTypesAndContributionMap":{}},{"hash":"8117cb953f50f6a865066a5428677c18f1ba3f00","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-T15-2:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-15","commitResults":[{"hash":"a4136b43811d5a9fe8e7aa8cbf8d2faddf14e151","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/edit-find-command\u0027 into edit-find-command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"3380e06568b05684ef515add26c53b1ed31918e0","isMergeCommit":false,"messageTitle":"Change signature of FindCommandParser","messageBody":"Change to match the 5 optional tags needed.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":62,"deletions":24},"other":{"insertions":6,"deletions":1}}}]},{"date":"2024-03-17","commitResults":[{"hash":"4a954fdf8e89e736f1c40f9a7b2c224fc1147be8","isMergeCommit":false,"messageTitle":"Implement GroupMatchesPredicate and testcases","messageBody":"Add required test method to\nGroupMatchesPredicate.\n\nAdd Unit Tests for GroupMatchesPredicate\ntest different relationships.\n(e.g Many to One, One to One)\n","fileTypesAndContributionMap":{"functional-code":{"insertions":28,"deletions":1},"test-code":{"insertions":31,"deletions":0}}},{"hash":"a4f1447e8223dc6e7d5ba6e6faeaf46eab826254","isMergeCommit":false,"messageTitle":"Implement Email and Edit Predicates","messageBody":"Add required test method to\nEmailMatchesPredicate.\n\nAdd testcases in EmailMatchesPredicateTest.\nThese test partial, full matches\nand some other irregular inputs\n\nEdit NameContainsKeywordsPredicate\nto skip checks when required to.\n\nDue to the introduction of\noptional parameters in FindCommand,\nan optional symbol is used to \"skip\"\na Predicate check.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":1},"test-code":{"insertions":42,"deletions":0}}},{"hash":"2cdc865ee19cc27ba47a4e2eb6aca5b761ba3749","isMergeCommit":false,"messageTitle":"Implement TagMatchesPredicate and testcases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":2},"test-code":{"insertions":28,"deletions":0}}},{"hash":"57cffb05ec74792b4a445738a65b05e6de56a087","isMergeCommit":false,"messageTitle":"Implement PhoneMatchesPredicate and testcases","messageBody":"Edit user guide to accurately reflect\nexpected behaviour of the FindCommand.\nThis also reflects how Predicates are\nimplemented.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":1},"docs":{"insertions":14,"deletions":11},"test-code":{"insertions":30,"deletions":0}}}]},{"date":"2024-03-18","commitResults":[{"hash":"141e8b48b7862b885b09fe5ce8e71b28c658b3f6","isMergeCommit":false,"messageTitle":"Create FindCommandBuilder","messageBody":"For testing FindCommandParser\n","fileTypesAndContributionMap":{"test-code":{"insertions":98,"deletions":16}}},{"hash":"001d6b627e61de618f6a87df0f2d10a3b6677948","isMergeCommit":false,"messageTitle":"Fix Preliminary syntax errors in testcases","messageBody":"Provide a quick-fix to all test classes\nto allow compilation of main program\n\nThe testing is not fully complete\nLets\n* make sure all testcases pass\n* Give all new classes useful toString methods\n","fileTypesAndContributionMap":{"functional-code":{"insertions":17,"deletions":8},"test-code":{"insertions":80,"deletions":14}}}]},{"date":"2024-03-19","commitResults":[{"hash":"6c7216cdadf13d8bdacc9fb8abe0f19da0dee02c","isMergeCommit":false,"messageTitle":"Add toString methods and check testcases","messageBody":"Ensure toString method is correct for\nall predicates\n","fileTypesAndContributionMap":{"functional-code":{"insertions":32,"deletions":1},"test-code":{"insertions":108,"deletions":10}}},{"hash":"93be3f34e8084728d3dcab851d58bbdb78e0b3be","isMergeCommit":false,"messageTitle":"Create preliminary working find command","messageBody":"Basic functionalities established\nMore testing is needed for\n* FindCommandParser\n* AddressBookParser\n","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":2}}},{"hash":"0edbdde8f9faa72acbecbe7c2950eb966f5b48cb","isMergeCommit":true,"messageTitle":"Merge pull request #66 from AY2324S2-CS2103T-T15-2/add-schedule-command","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"72450ce8afe1fe5ec36ccbc7ed28d847926a37b3","isMergeCommit":false,"messageTitle":"Check all provided testcases","messageBody":"Ensure that all prior testcases passes.\n\nLet\u0027s add more testcases to detect\nmore minute variations to FindCommand\n","fileTypesAndContributionMap":{"functional-code":{"insertions":48,"deletions":15},"test-code":{"insertions":7,"deletions":8}}},{"hash":"befd70f43e4615de73b46851291fc81703078925","isMergeCommit":true,"messageTitle":"Merge pull request #74 from AY2324S2-CS2103T-T15-2/add-group-command","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"3be3faae457b94aaf1a9937b098febb1224f940f","isMergeCommit":false,"messageTitle":"Fix Checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":12},"test-code":{"insertions":66,"deletions":19}}},{"hash":"30784aef9f6596564799d75f8b0cc42821cab18b","isMergeCommit":true,"messageTitle":"Merge pull request #80 from AY2324S2-CS2103T-T15-2/master","messageBody":"Update find command branch","fileTypesAndContributionMap":{}},{"hash":"72675e80f66a8e99ab4a5c6e83bfc0720a9865d6","isMergeCommit":true,"messageTitle":"Fix Checkstyle errors","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"3e94a195cf7a1a6e55f7d657d3f72d3a5afff74e","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/master\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-22","commitResults":[{"hash":"f9c972fbe3fac2cbcc2e752983cb658ef7fd5c62","isMergeCommit":false,"messageTitle":"Create FindCommand sequence diagram","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":107,"deletions":0}}},{"hash":"0b3ce793aee944f8149a7048dc3e7b2b71bbedbf","isMergeCommit":false,"messageTitle":"Fix CheckStyle errors","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":2}}}]}],"Ragnapop":[{"date":"2024-03-04","commitResults":[{"hash":"3e48f01e00da32e22c95310d2dc3fc53e449fe64","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":162,"deletions":10}}},{"hash":"3440741dc3e1fe4b6efbadb0157c4075a97c8dbd","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-T15-2:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-06","commitResults":[{"hash":"d665df3b29b4eb95d61fdec4d1c69d6d59dcfb36","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":28,"deletions":0}}}]},{"date":"2024-03-07","commitResults":[{"hash":"07843c84f88c4e09f58e24c5556d5cc8c7258c08","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into edit-Dev-Guide","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e7c5e4c792eb671ebb5ef0f7b4e267a6a502fd25","isMergeCommit":true,"messageTitle":"Merge pull request #1 from Ragnapop/edit-Dev-Guide","messageBody":"Edit dev guide","fileTypesAndContributionMap":{}},{"hash":"e5cece402a2ce2534b5d7dfd73368021db38eac1","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-T15-2:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-11","commitResults":[{"hash":"801c7bc191027a66268834a2bf7ae30d2d5f7813","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-T15-2:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-12","commitResults":[{"hash":"3fea3604c454dd8dab70631b45a521c4ce15aacf","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-T15-2:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-13","commitResults":[{"hash":"dfc09ff2e39fa328e41d4157d4bbeb8f68fb0c9e","isMergeCommit":false,"messageTitle":"Added group command functionality","messageBody":"added a command that allows users to assign groups to individuals so they are more easily identifiable\n","fileTypesAndContributionMap":{"functional-code":{"insertions":281,"deletions":9}}},{"hash":"86ca8adc20195b0905351663d3faaaae103b6158","isMergeCommit":false,"messageTitle":"Minor changes to groupcommand logic","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":3}}},{"hash":"73f2bbf325d2bee6cbf90a130c13095142ca8336","isMergeCommit":false,"messageTitle":"minor changes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":24},"test-code":{"insertions":27,"deletions":0}}},{"hash":"d7a476a9b27c3a591dcac28d18df2ec1b8dfc41a","isMergeCommit":false,"messageTitle":"remove testcases temporarily","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":27}}},{"hash":"1b8d6302f7d33f6ebf6a9ec37aead8c7d939b672","isMergeCommit":false,"messageTitle":"resolve checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":59,"deletions":25}}},{"hash":"e96679b45754b109d9ff9d52f19aa6b8be3a7085","isMergeCommit":false,"messageTitle":"resolve checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"3560647243019024cd854061ad844a4083488d39","isMergeCommit":false,"messageTitle":"resolve checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":12}}},{"hash":"2a4e0434f00e2081dd31b7d9ba37c4b2454b801e","isMergeCommit":false,"messageTitle":"Resolve checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":7}}},{"hash":"432c89fa5618b108a9cb14b84068bf2506339194","isMergeCommit":false,"messageTitle":"resolve checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-14","commitResults":[{"hash":"6e405d9bd6fa4ae9d172c1007719703d400f103d","isMergeCommit":false,"messageTitle":"added testcase functionality","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":1},"test-code":{"insertions":151,"deletions":0}}},{"hash":"78ab8e79a75ce63a349f7779d20b03a39dd6c9bf","isMergeCommit":false,"messageTitle":"validate checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":39,"deletions":3}}},{"hash":"d7f98528b6690b364e82f58bf8f2a34277f1098a","isMergeCommit":false,"messageTitle":"validate checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":0}}},{"hash":"15b6093b3cc9e6709f56566ce070e75455f9ed98","isMergeCommit":false,"messageTitle":"Update GroupCommandParserTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":0}}},{"hash":"3dc502f3c4ef8f09458f02253bab03def58b9bac","isMergeCommit":false,"messageTitle":"update","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":0}}},{"hash":"fdb91ab09b3a4d27c191c23a876f0ad9a586b3d0","isMergeCommit":false,"messageTitle":"update","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":6}}},{"hash":"f615197589fe161a92d07a133e84431081a86438","isMergeCommit":false,"messageTitle":"Update GroupCommand.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"b02d6ee6673ed00abba2b4d10d2504e1fa1226de","isMergeCommit":false,"messageTitle":"update","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":29,"deletions":16}}},{"hash":"19a1f8c390d8b4ebe71f82aedeb9533b5e3faf63","isMergeCommit":false,"messageTitle":"resolve checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":13,"deletions":9}}},{"hash":"cb2044f01cc57c3cc93af18d487684f59c362d77","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":0}}},{"hash":"b2525d1f82633faa4a7cc9d900c903ba85058b1c","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-15","commitResults":[{"hash":"e3294cb4a1b4e79e9669c11467749c3a01cdb470","isMergeCommit":true,"messageTitle":"Merge pull request #54 from cheahTJ/delete-feature","messageBody":"Delete feature implementation","fileTypesAndContributionMap":{}}]},{"date":"2024-03-18","commitResults":[{"hash":"1c41b664c274b3712efb292d5799ce1693ce0550","isMergeCommit":false,"messageTitle":"Update CliSyntax.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"641ec111a94e787dce44da65383de254ddf85c88","isMergeCommit":false,"messageTitle":"Update CliSyntax.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-19","commitResults":[{"hash":"1d84b103c02a730b318900412ee82537a1664ea8","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-T15-2:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e3cf607bd3e79ae97aafc2b052aeb15c6206075d","isMergeCommit":true,"messageTitle":"Merge pull request #2 from AY2324S2-CS2103T-T15-2/add-group-command","messageBody":"Add group command","fileTypesAndContributionMap":{}},{"hash":"f264e2175f9eb70169e14985fc6c4f81a0c9b74c","isMergeCommit":false,"messageTitle":"Fix merge conflict","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":14}}},{"hash":"427ae5cd865094c175d86801f06c0ce9b8245bbc","isMergeCommit":false,"messageTitle":"Update ParserUtil.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2}}},{"hash":"039dd99ec84f1b4645cf1f58d2624cffa952aaf9","isMergeCommit":false,"messageTitle":"resolve checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":4}}},{"hash":"9fd8b0a5833b88be55701c6e3f30313d76051db7","isMergeCommit":false,"messageTitle":"Update GroupCommandParserTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-20","commitResults":[{"hash":"1e44192ef1ed3baf9b250a8983f1efe7e9ab5102","isMergeCommit":false,"messageTitle":"update testcases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":17,"deletions":6},"test-code":{"insertions":52,"deletions":25}}},{"hash":"9b13a9e8e5cfd4588b6434b7bd814ec029b5051e","isMergeCommit":false,"messageTitle":"Update Group.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"18969a676a0f9e670047659f90cb64d662ef9151","isMergeCommit":false,"messageTitle":"CHECKSTYLE","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":15,"deletions":6}}},{"hash":"240e09462b8521f8f0a1a14568cd0313c4131ac1","isMergeCommit":false,"messageTitle":"Update GroupCommandTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":3}}},{"hash":"553b1c9ca3dee9922915894e7ea2ae7f1320fe17","isMergeCommit":false,"messageTitle":"update checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":3}}},{"hash":"e42628e71c903be7d68e3efc8aa7f3254854e12a","isMergeCommit":false,"messageTitle":"Update GroupCommandTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}},{"hash":"255a309aee15310d03397bb0eb84959cc1b6e3b9","isMergeCommit":false,"messageTitle":"Update GroupCommandParserTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":2}}},{"hash":"f542a99d89d826a26052a1da073a96dff6b70941","isMergeCommit":false,"messageTitle":"Update CommandParserTestUtil.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":1}}},{"hash":"138a0484a10899ccdda6d1700d09bfdb25cca15f","isMergeCommit":false,"messageTitle":"Update CommandParserTestUtil.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}},{"hash":"ee068be7736668b8eafff73138f33e85ae4182f6","isMergeCommit":false,"messageTitle":"Update GroupCommandParserTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":13,"deletions":0}}},{"hash":"b8680b587349659a7a218d0bbc292f6949916034","isMergeCommit":false,"messageTitle":"Update GroupCommandParserTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":11,"deletions":1}}},{"hash":"2ea30766c827b25c90d3a70e53cd22746717e721","isMergeCommit":false,"messageTitle":"Update GroupCommandParserTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"7e4c4beeca2e21437a6f21ca67ca0d5ca3854583","isMergeCommit":false,"messageTitle":"Update GroupCommandParserTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":17,"deletions":0}}},{"hash":"2255d6946b79abab0f716757bf444b30569d8d34","isMergeCommit":false,"messageTitle":"Update GroupCommandParserTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}},{"hash":"f090e8958630c4671bfd0c6da819bd2e1d9e2483","isMergeCommit":false,"messageTitle":"Update GroupCommandParserTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":3}}},{"hash":"8ed7b4d11c0b85609405702e3da5ea039f3eacf9","isMergeCommit":false,"messageTitle":"Update GroupCommandParserTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"5cfe086d8aee0749e442d22bf4e199fb39930a84","isMergeCommit":false,"messageTitle":"Update GroupCommandParserTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":9,"deletions":0}}},{"hash":"36f8ed206848c4072ece4b65bbfb41f61ebe93d9","isMergeCommit":false,"messageTitle":"Update GroupCommandParserTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"a2ad01a7fbd14c67aa35651c92e73aebdea5da8e","isMergeCommit":false,"messageTitle":"Update GroupCommandTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":10,"deletions":0}}},{"hash":"bb613f76dcedf69cc7845760d9d9430c7d5bdbf1","isMergeCommit":false,"messageTitle":"Update GroupCommandTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":1}}},{"hash":"a4695f2b2808b9ae5ce76f721f4533bdb02d54cc","isMergeCommit":false,"messageTitle":"Update GroupCommand.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":3}}},{"hash":"1b0424dfdb6e5edfe275c5bf2a0dd8dfef9b5b7b","isMergeCommit":false,"messageTitle":"Update GroupCommand.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"7095b7bdb51ebf29847bceaf0c9994b294785fb8","isMergeCommit":false,"messageTitle":"checkingstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":3},"test-code":{"insertions":0,"deletions":2}}},{"hash":"6ecfdd40578a7ea0fdb0478ec9400baea4e48f31","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-T15-2:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ab83a72d163c6aba76f63f8ab5d63dcbd1e203bc","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-group-command\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f85ed0d58684f3bf1439dfab17286bc318f5d186","isMergeCommit":true,"messageTitle":"Merge pull request #76 from Ragnapop/master","messageBody":"merge to resolve schedule conflict","fileTypesAndContributionMap":{}},{"hash":"34f859fe077e8e6fc4e85725a63a547373941463","isMergeCommit":false,"messageTitle":"Update GroupCommand.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":9}}},{"hash":"1cde18a75eeec5c2258e3f5236cbd328437f968c","isMergeCommit":false,"messageTitle":"Update GroupCommand.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":1}}}]}],"hjuntan":[{"date":"2024-03-05","commitResults":[{"hash":"3468524824ca48effada3aec0c987ba152171707","isMergeCommit":true,"messageTitle":"Merge pull request #11 from RingoftheKing/edit-Dev-Guide","messageBody":"Update User Stories in DeveloperGuide.md","fileTypesAndContributionMap":{}},{"hash":"d9e95a54d7c9c37572a9181cc5c5bd2cadaaaffa","isMergeCommit":false,"messageTitle":"Update Non-Functional Requirements in DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":2}}}]},{"date":"2024-03-06","commitResults":[{"hash":"5f6c18e9882d345d15ea92f821fd49d92c0fb1b8","isMergeCommit":true,"messageTitle":"Merge pull request #12 from cheahTJ/master","messageBody":"Edit READMe and AboutUs md files","fileTypesAndContributionMap":{}}]},{"date":"2024-03-07","commitResults":[{"hash":"a7f51093098a05846101b378a2412b3220e6807f","isMergeCommit":true,"messageTitle":"Merge pull request #16 from Rikko1204/edit-DG","messageBody":"Update Glossary in DeveloperGuide.md","fileTypesAndContributionMap":{}},{"hash":"196e271d363cea2299c43f697230b9e92c0c2d25","isMergeCommit":true,"messageTitle":"Merge pull request #10 from Ragnapop/edit-Dev-Guide","messageBody":"Update DeveloperGuide.md","fileTypesAndContributionMap":{}},{"hash":"44375cad6b242709e068f7781ca6637e17a99c18","isMergeCommit":true,"messageTitle":"Merge pull request #22 from cheahTJ/documentation","messageBody":"Finetune README","fileTypesAndContributionMap":{}},{"hash":"52c6f2f8039e9cca676814d0ff6ed13349059566","isMergeCommit":true,"messageTitle":"Merge pull request #23 from AY2324S2-CS2103T-T15-2/documentation_1.1","messageBody":"Documentation 1.1","fileTypesAndContributionMap":{}},{"hash":"39085e81b04b1da380b83e0549e8fbdd752bbbe2","isMergeCommit":false,"messageTitle":"Tweak missing criterias","messageBody":"Group images, CI status are updated to the correct format.\nProject scope is updated to fit the tp project.\n","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":5}}},{"hash":"a34d65e8fd5b8f90822147e0926e6a0e21534258","isMergeCommit":true,"messageTitle":"Merge pull request #25 from hjuntan/documentation","messageBody":"Documentation","fileTypesAndContributionMap":{}},{"hash":"a71646d2d34723d2343cb794b25c003c8ba0295a","isMergeCommit":true,"messageTitle":"Merge pull request #26 from AY2324S2-CS2103T-T15-2/documentation_1.1","messageBody":"Documentation 1.1","fileTypesAndContributionMap":{}}]},{"date":"2024-03-11","commitResults":[{"hash":"69b799bcde5f1ede5bf0ce10d585f2ebeafa4391","isMergeCommit":false,"messageTitle":"Change tags to groups","messageBody":"Tags are now represented as groups, tutorial groups\nA person can be assigned for multilple groups.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":207,"deletions":207},"test-code":{"insertions":175,"deletions":175}}},{"hash":"456e8e744f68d783858a118761afa48044cbc22e","isMergeCommit":false,"messageTitle":"Add tags and remove address","messageBody":"Tags are the following value: Student, TA, Professor, None.\nTags are case-sensitive. (Top be improved on)\nAble to easily distinguish between the people in the address book.\n\nAddresses are removed as we deemed it as unnecessary information\nfor our target user.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":178,"deletions":136},"test-code":{"insertions":203,"deletions":203}}},{"hash":"e267bf3b3d86cd0de42b98060ea07ac99120058d","isMergeCommit":false,"messageTitle":"Add new field: NUSID","messageBody":"Each person has an NUSID field which is uniquely identifies the person.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":45,"deletions":14},"test-code":{"insertions":46,"deletions":24}}},{"hash":"1dcb59af4e036f80aa2d6a7a60e9ea2474ffa3ef","isMergeCommit":false,"messageTitle":"Fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":41,"deletions":21}}},{"hash":"f658135cdd2e75039ba69ec9dbcc1aa0c7e6e0ee","isMergeCommit":false,"messageTitle":"More fixes to checkstyle error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":8}}},{"hash":"a54ae5be60faaaa64961890077346e51a76e8882","isMergeCommit":false,"messageTitle":"Fix checkstyle error for test files","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":73,"deletions":62}}},{"hash":"61a6347088c1e9ec43b3bf2a308d19549f84d658","isMergeCommit":false,"messageTitle":"More fixes to checkstyle error for test files","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":20,"deletions":20}}}]},{"date":"2024-03-12","commitResults":[{"hash":"d3ed7cddc1fdf3c4b19b72400b5736f522bc3412","isMergeCommit":false,"messageTitle":"Fix json formatting","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":2}}},{"hash":"328ee51f9758948f6ddd34e53c64663c906508af","isMergeCommit":true,"messageTitle":"Merge pull request #44 from AY2324S2-CS2103T-T15-2/edit-person-class","messageBody":"Edit person class","fileTypesAndContributionMap":{}}]},{"date":"2024-03-15","commitResults":[{"hash":"02a0b14b53ae22a9b3ccb2226f655992f190c977","isMergeCommit":true,"messageTitle":"Merge pull request #30 from RingoftheKing/master","messageBody":"Add Predicates required for FindCommand","fileTypesAndContributionMap":{}},{"hash":"c91976411cfdd1bf456a0a17cf57defca93eb8b3","isMergeCommit":true,"messageTitle":"Merge pull request #59 from AY2324S2-CS2103T-T15-2/change-find-command","messageBody":"Change find command","fileTypesAndContributionMap":{}},{"hash":"648f50b0711c250f19d567af9a32e69ffceeb196","isMergeCommit":false,"messageTitle":"Revert \"Change find command\"","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":128},"docs":{"insertions":8,"deletions":9}}},{"hash":"c9e1f17c5b2117eae2f1d0fe8ad512e115a5f007","isMergeCommit":true,"messageTitle":"Merge pull request #60 from AY2324S2-CS2103T-T15-2/revert-59-change-find-command","messageBody":"Revert \"Change find command\"","fileTypesAndContributionMap":{}},{"hash":"0f91e97eeae0d02a78444bff535ba715bf8328ff","isMergeCommit":true,"messageTitle":"Merge pull request #46 from Rikko1204/edit-add-command","messageBody":"Replace dummy NusId with user inputted NusId","fileTypesAndContributionMap":{}}]},{"date":"2024-03-19","commitResults":[{"hash":"5f428a908707e3e6c76daab786a226cb9b2f75d9","isMergeCommit":false,"messageTitle":"Fix sample addressbook uniqueness bug","messageBody":"If the given sample addressbook is used,\nthe program will throw a runtime exception,\nDuplicatePersonException, where the nusid\nfound in sample addressbook are duplicates.\n\nRemoves all sample nusid and make each person\nhave a unique nusid. Sample schedule is also removed.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":9}}},{"hash":"dad684fb4b7daf9b4973c4e350cdac4537ff8720","isMergeCommit":true,"messageTitle":"Merge pull request #68 from hjuntan/sample-addressbook-bug-fix","messageBody":"Fix sample addressbook uniqueness bug","fileTypesAndContributionMap":{}},{"hash":"0ef8e20e39f595829d126a94b03cee5228fcb24f","isMergeCommit":false,"messageTitle":"Fix issue of loading data from local file","messageBody":"Schedule can be stored with or without data. When loading from the json file,\nthe schedule might be empty and validation regex will not matched.\n\nAnother validation regex: VALIDATION_REGEX_WITHOUT_DATA, is added\nwhich additionally allow schedule to have no data:\"\".\n","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":2}}},{"hash":"7b8bd98dc4757369a92c12b331acd530e06cf762","isMergeCommit":false,"messageTitle":"Update schedule test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":1}}},{"hash":"a8562fcca349cabb014373e3f1bacdfc24248327","isMergeCommit":true,"messageTitle":"Merge pull request #72 from AY2324S2-CS2103T-T15-2/sample-addressbook-bug-fix","messageBody":"Sample addressbook bug fix","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"62099f1e9e38163a83ea1efbdab25113aa2ab30b","isMergeCommit":true,"messageTitle":"Merge pull request #65 from Ragnapop/add-group-command","messageBody":"Add group command","fileTypesAndContributionMap":{}},{"hash":"c68580e14fbeadbe8feec7a4ec414112ed347a62","isMergeCommit":true,"messageTitle":"Merge pull request #73 from cheahTJ/edit-feature","messageBody":"Create edit feature and fix edit feature test classes","fileTypesAndContributionMap":{}},{"hash":"bb87959c693b4cb0bd603a8fdee8ed0c04a48923","isMergeCommit":true,"messageTitle":"Merge pull request #77 from Ragnapop/add-group-command","messageBody":"Update GroupCommand.java","fileTypesAndContributionMap":{}},{"hash":"e76725620bda2805f9d6d9782d3582be4e5d713c","isMergeCommit":false,"messageTitle":"Change list command to view command","messageBody":"A refactoring to allow user to easily remember the commands\n","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"other":{"insertions":7,"deletions":7},"test-code":{"insertions":6,"deletions":6}}},{"hash":"e90c445bf5fb8cd5c3c614a3bd6dcb85151aa50a","isMergeCommit":true,"messageTitle":"Merge pull request #78 from hjuntan/add-view-command","messageBody":"Add view command","fileTypesAndContributionMap":{}},{"hash":"685664f6f47391e843f1a163fa2eab4179fe3551","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-view-command","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-22","commitResults":[{"hash":"7a8423fdccb3941b38cc9af005c4a2c7bd68e396","isMergeCommit":true,"messageTitle":"Merge pull request #90 from RingoftheKing/master","messageBody":"Create Find UML sequence diagram","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"cheahTJ":{"docs":464,"functional-code":124,"test-code":146},"Rikko1204":{"docs":6,"functional-code":390,"test-code":480},"RingoftheKing":{"docs":141,"functional-code":327,"test-code":445},"Ragnapop":{"docs":172,"functional-code":286,"test-code":294},"hjuntan":{"docs":13,"functional-code":420,"test-code":335}},"authorContributionVariance":{"cheahTJ":9549.844,"Rikko1204":12100.896,"RingoftheKing":4645.197,"Ragnapop":13092.509,"hjuntan":115643.85},"authorDisplayNameMap":{"cheahTJ":"CS2103T-T15-2 CHEA..JUEN","Rikko1204":"CS2103T-T15-2 CHEN.. MIN","RingoftheKing":"CS2103T-T15-2 GUO ..UHAO","Ragnapop":"CS2103T-T15-2 LOH .. HUN","hjuntan":"CS2103T-T15-2 TAN .. JUN"}} +{"authorDailyContributionsMap":{"cheahTJ":[{"date":"2024-03-05","commitResults":[{"hash":"6aa8e4b987ee24b281f6b775c458cde82c6c9e7b","isMergeCommit":false,"messageTitle":"Edit READMe and AboutUs md files","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":304,"deletions":38}}},{"hash":"b3d896e6a963cfb67ad9a6455474e0f49c5fa482","isMergeCommit":false,"messageTitle":"Fix CI issue","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-06","commitResults":[{"hash":"1b032295a55797d4f976ec6f69d8ac7ca6c6aa2f","isMergeCommit":false,"messageTitle":"Edit README","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":5}}},{"hash":"173b7df17e870e38ed0e91f86eb761dd6583554a","isMergeCommit":false,"messageTitle":"Create Nusid class to standardise its usage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":58,"deletions":0}}},{"hash":"be55639426b66a66398cb451156497c61075652e","isMergeCommit":false,"messageTitle":"Fix CI issue for Nusid class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":2}}},{"hash":"bc93ebfa00c365269e6b8576c5ed6b51328ae651","isMergeCommit":false,"messageTitle":"Rename Nusid class to NusId class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4}}},{"hash":"5042b0450aac5a92996b7f4221d2973d9db93eb5","isMergeCommit":false,"messageTitle":"Rename NusId.class file","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":0,"deletions":0}}}]},{"date":"2024-03-07","commitResults":[{"hash":"6db48455016f0c2ab57f350f8ee8333cac44a8ee","isMergeCommit":false,"messageTitle":"Edit README.md file","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":0}}}]},{"date":"2024-03-12","commitResults":[{"hash":"87968ee5b1af4d7a92f77f5839d4683b2d4965c9","isMergeCommit":true,"messageTitle":"Merge pull request #32 from hjuntan/edit-person","messageBody":"Edit person fields","fileTypesAndContributionMap":{}}]},{"date":"2024-03-13","commitResults":[{"hash":"b9183bd6cf4c9361431212299d70d884733d4123","isMergeCommit":false,"messageTitle":"Edit delete feature to delete by NusId instead of index","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":35,"deletions":13},"test-code":{"insertions":28,"deletions":28}}},{"hash":"d7437a378ef1d94b6bdb4973ac498d0d75aa36b9","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":3}}},{"hash":"c62c04973584509efdf846e39ab99a261909a607","isMergeCommit":false,"messageTitle":"Fix more checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-16","commitResults":[{"hash":"dae52352463204029c72b56fec2712fb67dc4213","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-T15-2:master\u0027 into delete-feature","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"7f43a05e40a155e6e409ddb1029f14f62aeca1e4","isMergeCommit":false,"messageTitle":"Fix DeleteCommandTest.java file","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":13},"test-code":{"insertions":6,"deletions":7}}},{"hash":"9efddf4056d00dc3fd65aafd78c5f14454a9a897","isMergeCommit":false,"messageTitle":"Fix commandExecutionError test in LogicManagerTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":4}}},{"hash":"e2690a3dcb3cad1c93b8c8f272b02d964d7cd4a2","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":1}}},{"hash":"d00acc5deeb52e52f86cca2a012c5c6cb395c703","isMergeCommit":true,"messageTitle":"Merge pull request #61 from AY2324S2-CS2103T-T15-2/change-add-command","messageBody":"Change add command","fileTypesAndContributionMap":{}},{"hash":"a51804fca28ed949f5436c74e2a75557df085456","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into delete-feature","messageBody":"* master:\n Add more test cases\n More checkstyle fix\n Fix checkstyle\n Add NusId unique constraint\n More checkstyle fix\n Fix checkstyle error\n Replace dummy NusId with user inputted NusId\n","fileTypesAndContributionMap":{}},{"hash":"b109628a1de6e9a8305e46cdb698ad6ed34d8019","isMergeCommit":false,"messageTitle":"Resolve duplicated parseNusId() method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":15}}},{"hash":"e57a96a83a2275a83a54d7d6bde9eeceb8382e28","isMergeCommit":false,"messageTitle":"Fix test case in DeleteCommandTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-19","commitResults":[{"hash":"565d98e725521f9a8a901e1c59b163e651e53bf3","isMergeCommit":true,"messageTitle":"Merge pull request #64 from Rikko1204/add-schedule","messageBody":"Add schedule command","fileTypesAndContributionMap":{}},{"hash":"a8690974bfe7db10030edd0a4651188865be1472","isMergeCommit":true,"messageTitle":"Merge pull request #69 from AY2324S2-CS2103T-T15-2/sample-addressbook-bug-fix","messageBody":"Fix unique nusid constraint bug","fileTypesAndContributionMap":{}},{"hash":"a54a64eccc93e283ad02d880fcd58fd9ca97ccb2","isMergeCommit":false,"messageTitle":"Change edit command and edit command test","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":52,"deletions":17},"test-code":{"insertions":111,"deletions":73}}},{"hash":"5d4f0640adabb740276b077bf1a880a0d458c9a4","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into edit-feature","messageBody":"* master:\n Fix sample addressbook uniqueness bug\n","fileTypesAndContributionMap":{}},{"hash":"faf0f0c702eeea35b477e64feb2ed05706c41ae2","isMergeCommit":true,"messageTitle":"Merge pull request #71 from hjuntan/sample-addressbook-bug-fix","messageBody":"Fix issue of loading data from local file","fileTypesAndContributionMap":{}},{"hash":"3f62fe66ce739a8a5bb508dae7fa211fda509136","isMergeCommit":false,"messageTitle":"Fix EditCommandParserTest class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":20},"test-code":{"insertions":13,"deletions":59}}},{"hash":"b300744923b09f58e1526f45f41b8a1e6f501f82","isMergeCommit":false,"messageTitle":"Fix Checkstyle issue","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":2}}},{"hash":"c4c4135fb57d975eb0d77a20d86693a3a8e9984a","isMergeCommit":false,"messageTitle":"Fix more checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":25,"deletions":7}}}]},{"date":"2024-03-20","commitResults":[{"hash":"8fffb63e009dd0aa4052eb42c0b78a06f0120905","isMergeCommit":true,"messageTitle":"Merge pull request #75 from AY2324S2-CS2103T-T15-2/change-edit-command","messageBody":"Change edit command","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"cc7205c9e43d47017038c383d04a427280d20335","isMergeCommit":true,"messageTitle":"Merge pull request #81 from RingoftheKing/edit-find-command","messageBody":"Edit find command","fileTypesAndContributionMap":{}},{"hash":"93b1391d661b056aaadbb0f15dd86d6d61a5bac0","isMergeCommit":false,"messageTitle":"Add UML sequence diagrams for Edit, Delete features and UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":155,"deletions":28}}},{"hash":"88fa5a9f077a9f3266495584e18fbc9eb6aaf0c2","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into documentation","messageBody":"* master: (52 commits)\n Change list command to view command\n Update GroupCommand.java\n Update GroupCommand.java\n checkingstyle\n Update GroupCommand.java\n Update GroupCommand.java\n Update GroupCommandTest.java\n Update GroupCommandTest.java\n Update GroupCommandParserTest.java\n Update GroupCommandParserTest.java\n Update GroupCommandParserTest.java\n Update GroupCommandParserTest.java\n Update GroupCommandParserTest.java\n Update GroupCommandParserTest.java\n Update GroupCommandParserTest.java\n Update GroupCommandParserTest.java\n Update GroupCommandParserTest.java\n Update CommandParserTestUtil.java\n Update CommandParserTestUtil.java\n Update GroupCommandParserTest.java\n ...\n","fileTypesAndContributionMap":{}},{"hash":"1077b52894d3e8268eeaa042322dd512d297c533","isMergeCommit":true,"messageTitle":"Merge pull request #85 from AY2324S2-CS2103T-T15-2/change-find-command","messageBody":"Change find command","tags":["v1.2"],"fileTypesAndContributionMap":{}},{"hash":"d7f137d6b153f12b4bca9b0bbbc9cb93953d4c8c","isMergeCommit":true,"messageTitle":"Merge pull request #84 from Rikko1204/add-uml","messageBody":"Add UML for schedule command","fileTypesAndContributionMap":{}}]}],"Rikko1204":[{"date":"2024-02-28","commitResults":[{"hash":"9c0f64872538fe837c0ea08b11c2e5d910257d6c","isMergeCommit":true,"messageTitle":"Merge pull request #2 from AY2324S2-CS2103T-T15-2/switch-docs-to-markbind","messageBody":"Switch docs to markbind","fileTypesAndContributionMap":{}},{"hash":"2f9d1510235b6e6a081ac022d3e186c38096ad60","isMergeCommit":false,"messageTitle":"Add MarkBind config","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"40f51af29c3bc5b49329f4959d7f83db4347c2fc","isMergeCommit":true,"messageTitle":"Merge pull request #3 from Rikko1204/master","messageBody":"Add MarkBind config","fileTypesAndContributionMap":{}}]},{"date":"2024-03-06","commitResults":[{"hash":"d29bb35976aeeccff228a14ebc18ec7edea2334e","isMergeCommit":true,"messageTitle":"Merge pull request #13 from hjuntan/edit-Dev-Guide","messageBody":"Update Non-Functional Requirements in DeveloperGuide.md","fileTypesAndContributionMap":{}},{"hash":"18f87bd8fe98aa8640117e03a1210609c315df62","isMergeCommit":false,"messageTitle":"Update Glossary in DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":6}}},{"hash":"72e837bfc57da46d8fee8a03f651ac3c7369e6e7","isMergeCommit":true,"messageTitle":"Merge pull request #17 from cheahTJ/delete-feature","messageBody":"Create NusId class","fileTypesAndContributionMap":{}}]},{"date":"2024-03-07","commitResults":[{"hash":"7a95f1351b3141fe8b146b702e0334e986ac2798","isMergeCommit":true,"messageTitle":"Merge pull request #19 from AY2324S2-CS2103T-T15-2/documentation_1.1","messageBody":"Added NUSID class","fileTypesAndContributionMap":{}}]},{"date":"2024-03-12","commitResults":[{"hash":"9e3d152628ee9ea89ed89097b660c8c5af4abd78","isMergeCommit":false,"messageTitle":"Replace dummy NusId with user inputted NusId","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":26,"deletions":5}}},{"hash":"3bde05d3d086d24c77150f441d084a79f199f236","isMergeCommit":false,"messageTitle":"Fix checkstyle error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":3}}},{"hash":"6448db9592b16800bf420c10398299f3760fb1b0","isMergeCommit":false,"messageTitle":"More checkstyle fix","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"56de76815dcc906c7cd3f12990bf1b3e26b3a1b8","isMergeCommit":false,"messageTitle":"Add NusId unique constraint","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":3},"test-code":{"insertions":129,"deletions":71}}},{"hash":"c0db8b89dd844f08ac373d84ae7a6398b7adfce1","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3},"test-code":{"insertions":12,"deletions":10}}},{"hash":"bde660265c61e1bb2893067a74e05a6d2764c306","isMergeCommit":false,"messageTitle":"More checkstyle fix","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":39,"deletions":3}}}]},{"date":"2024-03-13","commitResults":[{"hash":"d5dbdf9c93b68ca8ffb511fdae7963b212c0367f","isMergeCommit":false,"messageTitle":"Add more test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":37,"deletions":0}}}]},{"date":"2024-03-16","commitResults":[{"hash":"8b62104eed8162cbc4dee492472f64dd7528655a","isMergeCommit":true,"messageTitle":"Merge pull request #62 from cheahTJ/delete-feature","messageBody":"Fix test cases in DeleteCommandTest.java file","fileTypesAndContributionMap":{}},{"hash":"ac26fe22f0cbf2227643d1ebcea41830436cd536","isMergeCommit":true,"messageTitle":"Merge pull request #63 from AY2324S2-CS2103T-T15-2/delete_feature","messageBody":"Modify delete feature","fileTypesAndContributionMap":{}},{"hash":"8c32db809767687f13c3b8b9fa0b02f460df1649","isMergeCommit":false,"messageTitle":"Functional schedule command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":358,"deletions":13},"test-code":{"insertions":26,"deletions":11}}}]},{"date":"2024-03-17","commitResults":[{"hash":"8465fecd24a0c63b0b787d807f52bea1ecc50dd7","isMergeCommit":false,"messageTitle":"Add and update existing test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":32,"deletions":17},"test-code":{"insertions":290,"deletions":15}}}]},{"date":"2024-03-18","commitResults":[{"hash":"ec03a7edadc4e561ec53270b3b0cc56abbbebd9a","isMergeCommit":true,"messageTitle":"Fix merge conflicts","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"5171d363669b88e55e22db33e312de2e183e66d3","isMergeCommit":true,"messageTitle":"Merge pull request #79 from AY2324S2-CS2103T-T15-2/add-view-command","messageBody":"Add view command","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"49c34d1ff56ca674c95174fee9019f639f0faece","isMergeCommit":true,"messageTitle":"Merge pull request #82 from cheahTJ/documentation","messageBody":"Add UML sequence diagrams for Delete, Edit feature","fileTypesAndContributionMap":{}},{"hash":"6c61a73226fafd2ca1aa2f332411f447a6fccb5c","isMergeCommit":true,"messageTitle":"Merge pull request #83 from AY2324S2-CS2103T-T15-2/documentation_1.2","messageBody":"Documentation 1.2","fileTypesAndContributionMap":{}},{"hash":"d65a8b0967a41bcdb98a7e25f3a39bf853a22b2c","isMergeCommit":false,"messageTitle":"add UML diagram for schedule command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":88,"deletions":0}}},{"hash":"31c8bf82f8531b59bbea09342d4e21580259963a","isMergeCommit":true,"messageTitle":"Merge pull request #87 from hjuntan/uml-change","messageBody":"Update person uml class diagram","fileTypesAndContributionMap":{}}]}],"RingoftheKing":[{"date":"2024-03-04","commitResults":[{"hash":"55c3ceb840b378f9e719ec8e18f2fa7f475abd41","isMergeCommit":false,"messageTitle":"Update User Stories in DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":21,"deletions":9}}}]},{"date":"2024-03-10","commitResults":[{"hash":"d2fe3bd428982db7d12f473759a40db79285204a","isMergeCommit":false,"messageTitle":"Edit Find feature of UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":8}}},{"hash":"038b40eab8d05158722192c6bf42156158241fe2","isMergeCommit":true,"messageTitle":"Merge pull request #1 from RingoftheKing/edit-find-in-user-guide","messageBody":"Edit Find feature of UserGuide.md","fileTypesAndContributionMap":{}}]},{"date":"2024-03-11","commitResults":[{"hash":"5e8200d60daf22ef4cacfcc73aacdd86540d34e5","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-T15-2:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"fba56d31b7e1c3488b067d4dc47990bce7dd29d7","isMergeCommit":false,"messageTitle":"Add required Predicates for FindCommand","messageBody":"FindCommand now requires up to 5 predicates\nto be matched. Added the skeleton of these and\nedit FindCommand to include these predicates\n\nLet\u0027s add correct logic to the test function\nof these skeletons.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":113,"deletions":0}}},{"hash":"8eec29e9c53204d95a29d4275b457ec45edf7b0e","isMergeCommit":true,"messageTitle":"Merge pull request #2 from RingoftheKing/edit-find-command","messageBody":"Add required Predicates for FindCommand","fileTypesAndContributionMap":{}}]},{"date":"2024-03-12","commitResults":[{"hash":"2d5992d1ee026b0581352f7c147a8bae74e7007a","isMergeCommit":false,"messageTitle":"Add JavaDoc to Predicates","messageBody":"Add simple description to each Predicate.\nDescribe what each tests for.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":2}}},{"hash":"fa64c2a6d09302b498605c90e9ef5cf962a7a8a1","isMergeCommit":true,"messageTitle":"Merge pull request #3 from RingoftheKing/edit-find-command","messageBody":"Add JavaDoc to Predicates","fileTypesAndContributionMap":{}},{"hash":"75f34ae9e326db79140a6c2a18a65d795458a216","isMergeCommit":false,"messageTitle":"Fix import order of Tag Predicate","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"b3b650d7807d405035992abb218a466d62be0651","isMergeCommit":true,"messageTitle":"Merge pull request #4 from RingoftheKing/edit-find-command","messageBody":"Fix import order of Tag Predicate","fileTypesAndContributionMap":{}},{"hash":"8117cb953f50f6a865066a5428677c18f1ba3f00","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-T15-2:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-15","commitResults":[{"hash":"a4136b43811d5a9fe8e7aa8cbf8d2faddf14e151","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/edit-find-command\u0027 into edit-find-command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"3380e06568b05684ef515add26c53b1ed31918e0","isMergeCommit":false,"messageTitle":"Change signature of FindCommandParser","messageBody":"Change to match the 5 optional tags needed.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":62,"deletions":24},"other":{"insertions":6,"deletions":1}}}]},{"date":"2024-03-17","commitResults":[{"hash":"4a954fdf8e89e736f1c40f9a7b2c224fc1147be8","isMergeCommit":false,"messageTitle":"Implement GroupMatchesPredicate and testcases","messageBody":"Add required test method to\nGroupMatchesPredicate.\n\nAdd Unit Tests for GroupMatchesPredicate\ntest different relationships.\n(e.g Many to One, One to One)\n","fileTypesAndContributionMap":{"functional-code":{"insertions":28,"deletions":1},"test-code":{"insertions":31,"deletions":0}}},{"hash":"a4f1447e8223dc6e7d5ba6e6faeaf46eab826254","isMergeCommit":false,"messageTitle":"Implement Email and Edit Predicates","messageBody":"Add required test method to\nEmailMatchesPredicate.\n\nAdd testcases in EmailMatchesPredicateTest.\nThese test partial, full matches\nand some other irregular inputs\n\nEdit NameContainsKeywordsPredicate\nto skip checks when required to.\n\nDue to the introduction of\noptional parameters in FindCommand,\nan optional symbol is used to \"skip\"\na Predicate check.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":1},"test-code":{"insertions":42,"deletions":0}}},{"hash":"2cdc865ee19cc27ba47a4e2eb6aca5b761ba3749","isMergeCommit":false,"messageTitle":"Implement TagMatchesPredicate and testcases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":2},"test-code":{"insertions":28,"deletions":0}}},{"hash":"57cffb05ec74792b4a445738a65b05e6de56a087","isMergeCommit":false,"messageTitle":"Implement PhoneMatchesPredicate and testcases","messageBody":"Edit user guide to accurately reflect\nexpected behaviour of the FindCommand.\nThis also reflects how Predicates are\nimplemented.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":1},"docs":{"insertions":14,"deletions":11},"test-code":{"insertions":30,"deletions":0}}}]},{"date":"2024-03-18","commitResults":[{"hash":"141e8b48b7862b885b09fe5ce8e71b28c658b3f6","isMergeCommit":false,"messageTitle":"Create FindCommandBuilder","messageBody":"For testing FindCommandParser\n","fileTypesAndContributionMap":{"test-code":{"insertions":98,"deletions":16}}},{"hash":"001d6b627e61de618f6a87df0f2d10a3b6677948","isMergeCommit":false,"messageTitle":"Fix Preliminary syntax errors in testcases","messageBody":"Provide a quick-fix to all test classes\nto allow compilation of main program\n\nThe testing is not fully complete\nLets\n* make sure all testcases pass\n* Give all new classes useful toString methods\n","fileTypesAndContributionMap":{"functional-code":{"insertions":17,"deletions":8},"test-code":{"insertions":80,"deletions":14}}}]},{"date":"2024-03-19","commitResults":[{"hash":"6c7216cdadf13d8bdacc9fb8abe0f19da0dee02c","isMergeCommit":false,"messageTitle":"Add toString methods and check testcases","messageBody":"Ensure toString method is correct for\nall predicates\n","fileTypesAndContributionMap":{"functional-code":{"insertions":32,"deletions":1},"test-code":{"insertions":108,"deletions":10}}},{"hash":"93be3f34e8084728d3dcab851d58bbdb78e0b3be","isMergeCommit":false,"messageTitle":"Create preliminary working find command","messageBody":"Basic functionalities established\nMore testing is needed for\n* FindCommandParser\n* AddressBookParser\n","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":2}}},{"hash":"0edbdde8f9faa72acbecbe7c2950eb966f5b48cb","isMergeCommit":true,"messageTitle":"Merge pull request #66 from AY2324S2-CS2103T-T15-2/add-schedule-command","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"72450ce8afe1fe5ec36ccbc7ed28d847926a37b3","isMergeCommit":false,"messageTitle":"Check all provided testcases","messageBody":"Ensure that all prior testcases passes.\n\nLet\u0027s add more testcases to detect\nmore minute variations to FindCommand\n","fileTypesAndContributionMap":{"functional-code":{"insertions":48,"deletions":15},"test-code":{"insertions":7,"deletions":8}}},{"hash":"befd70f43e4615de73b46851291fc81703078925","isMergeCommit":true,"messageTitle":"Merge pull request #74 from AY2324S2-CS2103T-T15-2/add-group-command","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"3be3faae457b94aaf1a9937b098febb1224f940f","isMergeCommit":false,"messageTitle":"Fix Checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":12},"test-code":{"insertions":66,"deletions":19}}},{"hash":"30784aef9f6596564799d75f8b0cc42821cab18b","isMergeCommit":true,"messageTitle":"Merge pull request #80 from AY2324S2-CS2103T-T15-2/master","messageBody":"Update find command branch","fileTypesAndContributionMap":{}},{"hash":"72675e80f66a8e99ab4a5c6e83bfc0720a9865d6","isMergeCommit":true,"messageTitle":"Fix Checkstyle errors","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"3e94a195cf7a1a6e55f7d657d3f72d3a5afff74e","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/master\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-22","commitResults":[{"hash":"f9c972fbe3fac2cbcc2e752983cb658ef7fd5c62","isMergeCommit":false,"messageTitle":"Create FindCommand sequence diagram","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":107,"deletions":0}}},{"hash":"0b3ce793aee944f8149a7048dc3e7b2b71bbedbf","isMergeCommit":false,"messageTitle":"Fix CheckStyle errors","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":2}}}]}],"Ragnapop":[{"date":"2024-03-04","commitResults":[{"hash":"3e48f01e00da32e22c95310d2dc3fc53e449fe64","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":162,"deletions":10}}},{"hash":"3440741dc3e1fe4b6efbadb0157c4075a97c8dbd","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-T15-2:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-06","commitResults":[{"hash":"d665df3b29b4eb95d61fdec4d1c69d6d59dcfb36","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":28,"deletions":0}}}]},{"date":"2024-03-07","commitResults":[{"hash":"07843c84f88c4e09f58e24c5556d5cc8c7258c08","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into edit-Dev-Guide","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e7c5e4c792eb671ebb5ef0f7b4e267a6a502fd25","isMergeCommit":true,"messageTitle":"Merge pull request #1 from Ragnapop/edit-Dev-Guide","messageBody":"Edit dev guide","fileTypesAndContributionMap":{}},{"hash":"e5cece402a2ce2534b5d7dfd73368021db38eac1","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-T15-2:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-11","commitResults":[{"hash":"801c7bc191027a66268834a2bf7ae30d2d5f7813","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-T15-2:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-12","commitResults":[{"hash":"3fea3604c454dd8dab70631b45a521c4ce15aacf","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-T15-2:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-13","commitResults":[{"hash":"dfc09ff2e39fa328e41d4157d4bbeb8f68fb0c9e","isMergeCommit":false,"messageTitle":"Added group command functionality","messageBody":"added a command that allows users to assign groups to individuals so they are more easily identifiable\n","fileTypesAndContributionMap":{"functional-code":{"insertions":281,"deletions":9}}},{"hash":"86ca8adc20195b0905351663d3faaaae103b6158","isMergeCommit":false,"messageTitle":"Minor changes to groupcommand logic","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":3}}},{"hash":"73f2bbf325d2bee6cbf90a130c13095142ca8336","isMergeCommit":false,"messageTitle":"minor changes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":24},"test-code":{"insertions":27,"deletions":0}}},{"hash":"d7a476a9b27c3a591dcac28d18df2ec1b8dfc41a","isMergeCommit":false,"messageTitle":"remove testcases temporarily","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":27}}},{"hash":"1b8d6302f7d33f6ebf6a9ec37aead8c7d939b672","isMergeCommit":false,"messageTitle":"resolve checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":59,"deletions":25}}},{"hash":"e96679b45754b109d9ff9d52f19aa6b8be3a7085","isMergeCommit":false,"messageTitle":"resolve checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"3560647243019024cd854061ad844a4083488d39","isMergeCommit":false,"messageTitle":"resolve checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":12}}},{"hash":"2a4e0434f00e2081dd31b7d9ba37c4b2454b801e","isMergeCommit":false,"messageTitle":"Resolve checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":7}}},{"hash":"432c89fa5618b108a9cb14b84068bf2506339194","isMergeCommit":false,"messageTitle":"resolve checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-14","commitResults":[{"hash":"6e405d9bd6fa4ae9d172c1007719703d400f103d","isMergeCommit":false,"messageTitle":"added testcase functionality","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":1},"test-code":{"insertions":151,"deletions":0}}},{"hash":"78ab8e79a75ce63a349f7779d20b03a39dd6c9bf","isMergeCommit":false,"messageTitle":"validate checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":39,"deletions":3}}},{"hash":"d7f98528b6690b364e82f58bf8f2a34277f1098a","isMergeCommit":false,"messageTitle":"validate checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":0}}},{"hash":"15b6093b3cc9e6709f56566ce070e75455f9ed98","isMergeCommit":false,"messageTitle":"Update GroupCommandParserTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":0}}},{"hash":"3dc502f3c4ef8f09458f02253bab03def58b9bac","isMergeCommit":false,"messageTitle":"update","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":0}}},{"hash":"fdb91ab09b3a4d27c191c23a876f0ad9a586b3d0","isMergeCommit":false,"messageTitle":"update","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":6}}},{"hash":"f615197589fe161a92d07a133e84431081a86438","isMergeCommit":false,"messageTitle":"Update GroupCommand.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"b02d6ee6673ed00abba2b4d10d2504e1fa1226de","isMergeCommit":false,"messageTitle":"update","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":29,"deletions":16}}},{"hash":"19a1f8c390d8b4ebe71f82aedeb9533b5e3faf63","isMergeCommit":false,"messageTitle":"resolve checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":13,"deletions":9}}},{"hash":"cb2044f01cc57c3cc93af18d487684f59c362d77","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":0}}},{"hash":"b2525d1f82633faa4a7cc9d900c903ba85058b1c","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-15","commitResults":[{"hash":"e3294cb4a1b4e79e9669c11467749c3a01cdb470","isMergeCommit":true,"messageTitle":"Merge pull request #54 from cheahTJ/delete-feature","messageBody":"Delete feature implementation","fileTypesAndContributionMap":{}}]},{"date":"2024-03-18","commitResults":[{"hash":"1c41b664c274b3712efb292d5799ce1693ce0550","isMergeCommit":false,"messageTitle":"Update CliSyntax.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"641ec111a94e787dce44da65383de254ddf85c88","isMergeCommit":false,"messageTitle":"Update CliSyntax.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-19","commitResults":[{"hash":"1d84b103c02a730b318900412ee82537a1664ea8","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-T15-2:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e3cf607bd3e79ae97aafc2b052aeb15c6206075d","isMergeCommit":true,"messageTitle":"Merge pull request #2 from AY2324S2-CS2103T-T15-2/add-group-command","messageBody":"Add group command","fileTypesAndContributionMap":{}},{"hash":"f264e2175f9eb70169e14985fc6c4f81a0c9b74c","isMergeCommit":false,"messageTitle":"Fix merge conflict","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":14}}},{"hash":"427ae5cd865094c175d86801f06c0ce9b8245bbc","isMergeCommit":false,"messageTitle":"Update ParserUtil.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2}}},{"hash":"039dd99ec84f1b4645cf1f58d2624cffa952aaf9","isMergeCommit":false,"messageTitle":"resolve checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":4}}},{"hash":"9fd8b0a5833b88be55701c6e3f30313d76051db7","isMergeCommit":false,"messageTitle":"Update GroupCommandParserTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-20","commitResults":[{"hash":"1e44192ef1ed3baf9b250a8983f1efe7e9ab5102","isMergeCommit":false,"messageTitle":"update testcases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":17,"deletions":6},"test-code":{"insertions":52,"deletions":25}}},{"hash":"9b13a9e8e5cfd4588b6434b7bd814ec029b5051e","isMergeCommit":false,"messageTitle":"Update Group.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"18969a676a0f9e670047659f90cb64d662ef9151","isMergeCommit":false,"messageTitle":"CHECKSTYLE","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":15,"deletions":6}}},{"hash":"240e09462b8521f8f0a1a14568cd0313c4131ac1","isMergeCommit":false,"messageTitle":"Update GroupCommandTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":3}}},{"hash":"553b1c9ca3dee9922915894e7ea2ae7f1320fe17","isMergeCommit":false,"messageTitle":"update checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":3}}},{"hash":"e42628e71c903be7d68e3efc8aa7f3254854e12a","isMergeCommit":false,"messageTitle":"Update GroupCommandTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}},{"hash":"255a309aee15310d03397bb0eb84959cc1b6e3b9","isMergeCommit":false,"messageTitle":"Update GroupCommandParserTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":2}}},{"hash":"f542a99d89d826a26052a1da073a96dff6b70941","isMergeCommit":false,"messageTitle":"Update CommandParserTestUtil.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":1}}},{"hash":"138a0484a10899ccdda6d1700d09bfdb25cca15f","isMergeCommit":false,"messageTitle":"Update CommandParserTestUtil.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}},{"hash":"ee068be7736668b8eafff73138f33e85ae4182f6","isMergeCommit":false,"messageTitle":"Update GroupCommandParserTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":13,"deletions":0}}},{"hash":"b8680b587349659a7a218d0bbc292f6949916034","isMergeCommit":false,"messageTitle":"Update GroupCommandParserTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":11,"deletions":1}}},{"hash":"2ea30766c827b25c90d3a70e53cd22746717e721","isMergeCommit":false,"messageTitle":"Update GroupCommandParserTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"7e4c4beeca2e21437a6f21ca67ca0d5ca3854583","isMergeCommit":false,"messageTitle":"Update GroupCommandParserTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":17,"deletions":0}}},{"hash":"2255d6946b79abab0f716757bf444b30569d8d34","isMergeCommit":false,"messageTitle":"Update GroupCommandParserTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}},{"hash":"f090e8958630c4671bfd0c6da819bd2e1d9e2483","isMergeCommit":false,"messageTitle":"Update GroupCommandParserTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":3}}},{"hash":"8ed7b4d11c0b85609405702e3da5ea039f3eacf9","isMergeCommit":false,"messageTitle":"Update GroupCommandParserTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"5cfe086d8aee0749e442d22bf4e199fb39930a84","isMergeCommit":false,"messageTitle":"Update GroupCommandParserTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":9,"deletions":0}}},{"hash":"36f8ed206848c4072ece4b65bbfb41f61ebe93d9","isMergeCommit":false,"messageTitle":"Update GroupCommandParserTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"a2ad01a7fbd14c67aa35651c92e73aebdea5da8e","isMergeCommit":false,"messageTitle":"Update GroupCommandTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":10,"deletions":0}}},{"hash":"bb613f76dcedf69cc7845760d9d9430c7d5bdbf1","isMergeCommit":false,"messageTitle":"Update GroupCommandTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":1}}},{"hash":"a4695f2b2808b9ae5ce76f721f4533bdb02d54cc","isMergeCommit":false,"messageTitle":"Update GroupCommand.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":3}}},{"hash":"1b0424dfdb6e5edfe275c5bf2a0dd8dfef9b5b7b","isMergeCommit":false,"messageTitle":"Update GroupCommand.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"7095b7bdb51ebf29847bceaf0c9994b294785fb8","isMergeCommit":false,"messageTitle":"checkingstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":3},"test-code":{"insertions":0,"deletions":2}}},{"hash":"6ecfdd40578a7ea0fdb0478ec9400baea4e48f31","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-T15-2:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ab83a72d163c6aba76f63f8ab5d63dcbd1e203bc","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-group-command\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f85ed0d58684f3bf1439dfab17286bc318f5d186","isMergeCommit":true,"messageTitle":"Merge pull request #76 from Ragnapop/master","messageBody":"merge to resolve schedule conflict","fileTypesAndContributionMap":{}},{"hash":"34f859fe077e8e6fc4e85725a63a547373941463","isMergeCommit":false,"messageTitle":"Update GroupCommand.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":9}}},{"hash":"1cde18a75eeec5c2258e3f5236cbd328437f968c","isMergeCommit":false,"messageTitle":"Update GroupCommand.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":1}}}]},{"date":"2024-03-21","commitResults":[{"hash":"d3eafcb680a74457a790ddbb2c65446dc18499c2","isMergeCommit":false,"messageTitle":"uml diagram updates","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":150,"deletions":22}}}]}],"hjuntan":[{"date":"2024-03-05","commitResults":[{"hash":"3468524824ca48effada3aec0c987ba152171707","isMergeCommit":true,"messageTitle":"Merge pull request #11 from RingoftheKing/edit-Dev-Guide","messageBody":"Update User Stories in DeveloperGuide.md","fileTypesAndContributionMap":{}},{"hash":"d9e95a54d7c9c37572a9181cc5c5bd2cadaaaffa","isMergeCommit":false,"messageTitle":"Update Non-Functional Requirements in DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":2}}}]},{"date":"2024-03-06","commitResults":[{"hash":"5f6c18e9882d345d15ea92f821fd49d92c0fb1b8","isMergeCommit":true,"messageTitle":"Merge pull request #12 from cheahTJ/master","messageBody":"Edit READMe and AboutUs md files","fileTypesAndContributionMap":{}}]},{"date":"2024-03-07","commitResults":[{"hash":"a7f51093098a05846101b378a2412b3220e6807f","isMergeCommit":true,"messageTitle":"Merge pull request #16 from Rikko1204/edit-DG","messageBody":"Update Glossary in DeveloperGuide.md","fileTypesAndContributionMap":{}},{"hash":"196e271d363cea2299c43f697230b9e92c0c2d25","isMergeCommit":true,"messageTitle":"Merge pull request #10 from Ragnapop/edit-Dev-Guide","messageBody":"Update DeveloperGuide.md","fileTypesAndContributionMap":{}},{"hash":"44375cad6b242709e068f7781ca6637e17a99c18","isMergeCommit":true,"messageTitle":"Merge pull request #22 from cheahTJ/documentation","messageBody":"Finetune README","fileTypesAndContributionMap":{}},{"hash":"52c6f2f8039e9cca676814d0ff6ed13349059566","isMergeCommit":true,"messageTitle":"Merge pull request #23 from AY2324S2-CS2103T-T15-2/documentation_1.1","messageBody":"Documentation 1.1","fileTypesAndContributionMap":{}},{"hash":"39085e81b04b1da380b83e0549e8fbdd752bbbe2","isMergeCommit":false,"messageTitle":"Tweak missing criterias","messageBody":"Group images, CI status are updated to the correct format.\nProject scope is updated to fit the tp project.\n","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":5}}},{"hash":"a34d65e8fd5b8f90822147e0926e6a0e21534258","isMergeCommit":true,"messageTitle":"Merge pull request #25 from hjuntan/documentation","messageBody":"Documentation","fileTypesAndContributionMap":{}},{"hash":"a71646d2d34723d2343cb794b25c003c8ba0295a","isMergeCommit":true,"messageTitle":"Merge pull request #26 from AY2324S2-CS2103T-T15-2/documentation_1.1","messageBody":"Documentation 1.1","fileTypesAndContributionMap":{}}]},{"date":"2024-03-11","commitResults":[{"hash":"69b799bcde5f1ede5bf0ce10d585f2ebeafa4391","isMergeCommit":false,"messageTitle":"Change tags to groups","messageBody":"Tags are now represented as groups, tutorial groups\nA person can be assigned for multilple groups.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":207,"deletions":207},"test-code":{"insertions":175,"deletions":175}}},{"hash":"456e8e744f68d783858a118761afa48044cbc22e","isMergeCommit":false,"messageTitle":"Add tags and remove address","messageBody":"Tags are the following value: Student, TA, Professor, None.\nTags are case-sensitive. (Top be improved on)\nAble to easily distinguish between the people in the address book.\n\nAddresses are removed as we deemed it as unnecessary information\nfor our target user.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":178,"deletions":136},"test-code":{"insertions":203,"deletions":203}}},{"hash":"e267bf3b3d86cd0de42b98060ea07ac99120058d","isMergeCommit":false,"messageTitle":"Add new field: NUSID","messageBody":"Each person has an NUSID field which is uniquely identifies the person.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":45,"deletions":14},"test-code":{"insertions":46,"deletions":24}}},{"hash":"1dcb59af4e036f80aa2d6a7a60e9ea2474ffa3ef","isMergeCommit":false,"messageTitle":"Fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":41,"deletions":21}}},{"hash":"f658135cdd2e75039ba69ec9dbcc1aa0c7e6e0ee","isMergeCommit":false,"messageTitle":"More fixes to checkstyle error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":8}}},{"hash":"a54ae5be60faaaa64961890077346e51a76e8882","isMergeCommit":false,"messageTitle":"Fix checkstyle error for test files","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":73,"deletions":62}}},{"hash":"61a6347088c1e9ec43b3bf2a308d19549f84d658","isMergeCommit":false,"messageTitle":"More fixes to checkstyle error for test files","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":20,"deletions":20}}}]},{"date":"2024-03-12","commitResults":[{"hash":"d3ed7cddc1fdf3c4b19b72400b5736f522bc3412","isMergeCommit":false,"messageTitle":"Fix json formatting","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":2}}},{"hash":"328ee51f9758948f6ddd34e53c64663c906508af","isMergeCommit":true,"messageTitle":"Merge pull request #44 from AY2324S2-CS2103T-T15-2/edit-person-class","messageBody":"Edit person class","fileTypesAndContributionMap":{}}]},{"date":"2024-03-15","commitResults":[{"hash":"02a0b14b53ae22a9b3ccb2226f655992f190c977","isMergeCommit":true,"messageTitle":"Merge pull request #30 from RingoftheKing/master","messageBody":"Add Predicates required for FindCommand","fileTypesAndContributionMap":{}},{"hash":"c91976411cfdd1bf456a0a17cf57defca93eb8b3","isMergeCommit":true,"messageTitle":"Merge pull request #59 from AY2324S2-CS2103T-T15-2/change-find-command","messageBody":"Change find command","fileTypesAndContributionMap":{}},{"hash":"648f50b0711c250f19d567af9a32e69ffceeb196","isMergeCommit":false,"messageTitle":"Revert \"Change find command\"","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":128},"docs":{"insertions":8,"deletions":9}}},{"hash":"c9e1f17c5b2117eae2f1d0fe8ad512e115a5f007","isMergeCommit":true,"messageTitle":"Merge pull request #60 from AY2324S2-CS2103T-T15-2/revert-59-change-find-command","messageBody":"Revert \"Change find command\"","fileTypesAndContributionMap":{}},{"hash":"0f91e97eeae0d02a78444bff535ba715bf8328ff","isMergeCommit":true,"messageTitle":"Merge pull request #46 from Rikko1204/edit-add-command","messageBody":"Replace dummy NusId with user inputted NusId","fileTypesAndContributionMap":{}}]},{"date":"2024-03-19","commitResults":[{"hash":"5f428a908707e3e6c76daab786a226cb9b2f75d9","isMergeCommit":false,"messageTitle":"Fix sample addressbook uniqueness bug","messageBody":"If the given sample addressbook is used,\nthe program will throw a runtime exception,\nDuplicatePersonException, where the nusid\nfound in sample addressbook are duplicates.\n\nRemoves all sample nusid and make each person\nhave a unique nusid. Sample schedule is also removed.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":9}}},{"hash":"dad684fb4b7daf9b4973c4e350cdac4537ff8720","isMergeCommit":true,"messageTitle":"Merge pull request #68 from hjuntan/sample-addressbook-bug-fix","messageBody":"Fix sample addressbook uniqueness bug","fileTypesAndContributionMap":{}},{"hash":"0ef8e20e39f595829d126a94b03cee5228fcb24f","isMergeCommit":false,"messageTitle":"Fix issue of loading data from local file","messageBody":"Schedule can be stored with or without data. When loading from the json file,\nthe schedule might be empty and validation regex will not matched.\n\nAnother validation regex: VALIDATION_REGEX_WITHOUT_DATA, is added\nwhich additionally allow schedule to have no data:\"\".\n","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":2}}},{"hash":"7b8bd98dc4757369a92c12b331acd530e06cf762","isMergeCommit":false,"messageTitle":"Update schedule test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":1}}},{"hash":"a8562fcca349cabb014373e3f1bacdfc24248327","isMergeCommit":true,"messageTitle":"Merge pull request #72 from AY2324S2-CS2103T-T15-2/sample-addressbook-bug-fix","messageBody":"Sample addressbook bug fix","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"62099f1e9e38163a83ea1efbdab25113aa2ab30b","isMergeCommit":true,"messageTitle":"Merge pull request #65 from Ragnapop/add-group-command","messageBody":"Add group command","fileTypesAndContributionMap":{}},{"hash":"c68580e14fbeadbe8feec7a4ec414112ed347a62","isMergeCommit":true,"messageTitle":"Merge pull request #73 from cheahTJ/edit-feature","messageBody":"Create edit feature and fix edit feature test classes","fileTypesAndContributionMap":{}},{"hash":"bb87959c693b4cb0bd603a8fdee8ed0c04a48923","isMergeCommit":true,"messageTitle":"Merge pull request #77 from Ragnapop/add-group-command","messageBody":"Update GroupCommand.java","fileTypesAndContributionMap":{}},{"hash":"e76725620bda2805f9d6d9782d3582be4e5d713c","isMergeCommit":false,"messageTitle":"Change list command to view command","messageBody":"A refactoring to allow user to easily remember the commands\n","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"other":{"insertions":7,"deletions":7},"test-code":{"insertions":6,"deletions":6}}},{"hash":"3fecc44296b8a1e50bebdc084f65823a7e233bc0","isMergeCommit":false,"messageTitle":"Update person uml class diagram","messageBody":"The tag is now an enum. The address attribute is removed\nand group attribute is added.\n","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":8}}},{"hash":"e90c445bf5fb8cd5c3c614a3bd6dcb85151aa50a","isMergeCommit":true,"messageTitle":"Merge pull request #78 from hjuntan/add-view-command","messageBody":"Add view command","fileTypesAndContributionMap":{}},{"hash":"685664f6f47391e843f1a163fa2eab4179fe3551","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-view-command","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"d8ae94e892017e1da9ae68be416e80cf85c34ff5","isMergeCommit":true,"messageTitle":"Merge pull request #88 from Ragnapop/uml","messageBody":"Uml","fileTypesAndContributionMap":{}}]},{"date":"2024-03-22","commitResults":[{"hash":"7a8423fdccb3941b38cc9af005c4a2c7bd68e396","isMergeCommit":true,"messageTitle":"Merge pull request #90 from RingoftheKing/master","messageBody":"Create Find UML sequence diagram","fileTypesAndContributionMap":{}}]},{"date":"2024-03-24","commitResults":[{"hash":"02d35e7a52b677da0114ccb478433e3582d1fe9c","isMergeCommit":true,"messageTitle":"Merge pull request #91 from AY2324S2-CS2103T-T15-2/documentation_1.2","messageBody":"Documentation 1.2","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"cheahTJ":{"docs":443,"functional-code":124,"test-code":146},"Rikko1204":{"docs":94,"functional-code":390,"test-code":480},"RingoftheKing":{"docs":141,"functional-code":327,"test-code":445},"Ragnapop":{"docs":322,"functional-code":286,"test-code":294},"hjuntan":{"docs":22,"functional-code":420,"test-code":335}},"authorContributionVariance":{"cheahTJ":9034.499,"Rikko1204":11446.604,"RingoftheKing":4447.4736,"Ragnapop":12830.408,"hjuntan":108467.72},"authorDisplayNameMap":{"cheahTJ":"CS2103T-T15-2 CHEA..JUEN","Rikko1204":"CS2103T-T15-2 CHEN.. MIN","RingoftheKing":"CS2103T-T15-2 GUO ..UHAO","Ragnapop":"CS2103T-T15-2 LOH .. HUN","hjuntan":"CS2103T-T15-2 TAN .. JUN"}} diff --git a/AY2324S2-CS2103T-W08-2_tp_master/authorship.json b/AY2324S2-CS2103T-W08-2_tp_master/authorship.json index c2ded44a..8dc78fa8 100644 --- a/AY2324S2-CS2103T-W08-2_tp_master/authorship.json +++ b/AY2324S2-CS2103T-W08-2_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"# vitalconnect","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"[![CI Status](https://github.com/AY2324S2-CS2103T-W08-2/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S2-CS2103T-W08-2/tp/actions)","lastModifiedDate":"2024-02-25"},{"lineNumber":4,"author":{"gitId":"javierng2knus"},"content":"[![codecov](https://codecov.io/gh/AY2324S2-CS2103T-W08-2/tp/graph/badge.svg?token\u003dHOLIQIUTEE)](https://codecov.io/gh/AY2324S2-CS2103T-W08-2/tp)","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"This product is for clinic assistants that have to keep track of a lot of patient information and requires ","lastModifiedDate":"2024-02-25"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"the information at a fast pace, thus preferring to have a simple UI such as a CLI instead of a complex GUI, ","lastModifiedDate":"2024-02-25"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"with the added benefit of having typed user commands for an even faster retrieval of information.","lastModifiedDate":"2024-02-25"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"__Value proposition:__","lastModifiedDate":"2024-02-25"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"Clinic assistants are required to take note of a multitude of information regarding the patient, ","lastModifiedDate":"2024-02-25"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"such as their contact number, any existing medical condition, the specific treatment that they are currently undergoing and much more. ","lastModifiedDate":"2024-02-25"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"With this product, such information will be readily available while also allowing for quality of life features such as scheduling ","lastModifiedDate":"2024-02-25"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":"appointments and managing medication.","lastModifiedDate":"2024-02-25"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":"This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-02-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":"## Features (V1.2)","lastModifiedDate":"2024-02-25"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":"__Saving the data__","lastModifiedDate":"2024-02-25"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":"* All data is saved in the hard disk automatically after any command that changes the data.","lastModifiedDate":"2024-02-25"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":"__Clear all existing entries__","lastModifiedDate":"2024-02-25"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":"* Clear all the existing entries within the local database.","lastModifiedDate":"2024-02-25"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":"__Exit the program__","lastModifiedDate":"2024-02-25"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":"* Exits the program. Any data that is not saved cannot be restored upon exiting.","lastModifiedDate":"2024-02-25"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":"__Viewing help__","lastModifiedDate":"2024-02-25"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":"* Shows a message explaining the instructions to access the user guide.","lastModifiedDate":"2024-02-25"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":"### Manage Appointments","lastModifiedDate":"2024-02-25"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":"__Create Appointments__","lastModifiedDate":"2024-02-25"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":"* Create an appointment of a patient, information such as time and name of patient are required when adding.","lastModifiedDate":"2024-02-25"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":"__Delete Appointments__","lastModifiedDate":"2024-02-25"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":"* Delete an appointment of a patient.","lastModifiedDate":"2024-02-25"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":"__List Appointments__","lastModifiedDate":"2024-02-25"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":"* List all the appointments that have been created, provide information such as the patient’s name and time of the appointments.","lastModifiedDate":"2024-02-25"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":54,"author":{"gitId":"MaYuehan"},"content":"### Manage Contact Information","lastModifiedDate":"2024-02-25"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":56,"author":{"gitId":"MaYuehan"},"content":"__Add patient contact information__","lastModifiedDate":"2024-02-25"},{"lineNumber":57,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":58,"author":{"gitId":"MaYuehan"},"content":"* Add contact information, including phone number and email address. If a specific field already exists, the command would fail.","lastModifiedDate":"2024-02-25"},{"lineNumber":59,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":60,"author":{"gitId":"MaYuehan"},"content":"__Delete patient contact information__","lastModifiedDate":"2024-02-25"},{"lineNumber":61,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":62,"author":{"gitId":"MaYuehan"},"content":"* Delete specific or all contact information, including phone number and email address.","lastModifiedDate":"2024-02-25"},{"lineNumber":63,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":64,"author":{"gitId":"MaYuehan"},"content":"__List patient contact information__","lastModifiedDate":"2024-02-25"},{"lineNumber":65,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":66,"author":{"gitId":"MaYuehan"},"content":"* List all patient’s contact information.","lastModifiedDate":"2024-02-25"},{"lineNumber":67,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":68,"author":{"gitId":"MaYuehan"},"content":"### Manage Patients","lastModifiedDate":"2024-02-25"},{"lineNumber":69,"author":{"gitId":"MaYuehan"},"content":"__Add patient__","lastModifiedDate":"2024-02-25"},{"lineNumber":70,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":71,"author":{"gitId":"MaYuehan"},"content":"* Add a new patient to the database so further information about their appointment or contact information can be added.","lastModifiedDate":"2024-02-25"},{"lineNumber":72,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":73,"author":{"gitId":"MaYuehan"},"content":"__Delete patient__","lastModifiedDate":"2024-02-25"},{"lineNumber":74,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":75,"author":{"gitId":"MaYuehan"},"content":"* Delete specific or all patients, including their contact and appointment.","lastModifiedDate":"2024-02-25"},{"lineNumber":76,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":77,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":78,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":79,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":80,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":81,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":82,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":83,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"}],"authorContributionMap":{"javierng2knus":1,"MaYuehan":79,"-":3}},{"path":"bin/main/view/CommandBox.fxml","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.control.TextField?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":"\u003cStackPane styleClass\u003d\"stack-pane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":" \u003cTextField fx:id\u003d\"commandTextField\" onAction\u003d\"#handleCommandEntered\" promptText\u003d\"Enter command here...\"/\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":"\u003c/StackPane\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"Ella-e":9}},{"path":"bin/main/view/DarkTheme.css","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":".background {","lastModifiedDate":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":" background-color: #383838; /* Used in the default.html file */","lastModifiedDate":"2024-03-04"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":".label {","lastModifiedDate":"2024-03-04"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2024-03-04"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2024-03-04"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: #555555;","lastModifiedDate":"2024-03-04"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2024-03-04"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":".label-bright {","lastModifiedDate":"2024-03-04"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2024-03-04"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2024-03-04"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-04"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":" -fx-opacity: 1;","lastModifiedDate":"2024-03-04"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":".label-header {","lastModifiedDate":"2024-03-04"},{"lineNumber":21,"author":{"gitId":"Ella-e"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2024-03-04"},{"lineNumber":22,"author":{"gitId":"Ella-e"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2024-03-04"},{"lineNumber":23,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-04"},{"lineNumber":24,"author":{"gitId":"Ella-e"},"content":" -fx-opacity: 1;","lastModifiedDate":"2024-03-04"},{"lineNumber":25,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":26,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":27,"author":{"gitId":"Ella-e"},"content":".text-field {","lastModifiedDate":"2024-03-04"},{"lineNumber":28,"author":{"gitId":"Ella-e"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2024-03-04"},{"lineNumber":29,"author":{"gitId":"Ella-e"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2024-03-04"},{"lineNumber":30,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":31,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":32,"author":{"gitId":"Ella-e"},"content":".tab-pane {","lastModifiedDate":"2024-03-04"},{"lineNumber":33,"author":{"gitId":"Ella-e"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2024-03-04"},{"lineNumber":34,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":35,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":36,"author":{"gitId":"Ella-e"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2024-03-04"},{"lineNumber":37,"author":{"gitId":"Ella-e"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2024-03-04"},{"lineNumber":38,"author":{"gitId":"Ella-e"},"content":" -fx-min-height: 0;","lastModifiedDate":"2024-03-04"},{"lineNumber":39,"author":{"gitId":"Ella-e"},"content":" -fx-max-height: 0;","lastModifiedDate":"2024-03-04"},{"lineNumber":40,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":41,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":42,"author":{"gitId":"Ella-e"},"content":".table-view {","lastModifiedDate":"2024-03-04"},{"lineNumber":43,"author":{"gitId":"Ella-e"},"content":" -fx-base: #1d1d1d;","lastModifiedDate":"2024-03-04"},{"lineNumber":44,"author":{"gitId":"Ella-e"},"content":" -fx-control-inner-background: #1d1d1d;","lastModifiedDate":"2024-03-04"},{"lineNumber":45,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2024-03-04"},{"lineNumber":46,"author":{"gitId":"Ella-e"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2024-03-04"},{"lineNumber":47,"author":{"gitId":"Ella-e"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2024-03-04"},{"lineNumber":48,"author":{"gitId":"Ella-e"},"content":" -fx-padding: 5;","lastModifiedDate":"2024-03-04"},{"lineNumber":49,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":50,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":51,"author":{"gitId":"Ella-e"},"content":".table-view .column-header-background {","lastModifiedDate":"2024-03-04"},{"lineNumber":52,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-04"},{"lineNumber":53,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":54,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":55,"author":{"gitId":"Ella-e"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2024-03-04"},{"lineNumber":56,"author":{"gitId":"Ella-e"},"content":" -fx-size: 35;","lastModifiedDate":"2024-03-04"},{"lineNumber":57,"author":{"gitId":"Ella-e"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2024-03-04"},{"lineNumber":58,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-04"},{"lineNumber":59,"author":{"gitId":"Ella-e"},"content":" -fx-border-color:","lastModifiedDate":"2024-03-04"},{"lineNumber":60,"author":{"gitId":"Ella-e"},"content":" transparent","lastModifiedDate":"2024-03-04"},{"lineNumber":61,"author":{"gitId":"Ella-e"},"content":" transparent","lastModifiedDate":"2024-03-04"},{"lineNumber":62,"author":{"gitId":"Ella-e"},"content":" derive(-fx-base, 80%)","lastModifiedDate":"2024-03-04"},{"lineNumber":63,"author":{"gitId":"Ella-e"},"content":" transparent;","lastModifiedDate":"2024-03-04"},{"lineNumber":64,"author":{"gitId":"Ella-e"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2024-03-04"},{"lineNumber":65,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":66,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":67,"author":{"gitId":"Ella-e"},"content":".table-view .column-header .label {","lastModifiedDate":"2024-03-04"},{"lineNumber":68,"author":{"gitId":"Ella-e"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2024-03-04"},{"lineNumber":69,"author":{"gitId":"Ella-e"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2024-03-04"},{"lineNumber":70,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-04"},{"lineNumber":71,"author":{"gitId":"Ella-e"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2024-03-04"},{"lineNumber":72,"author":{"gitId":"Ella-e"},"content":" -fx-opacity: 1;","lastModifiedDate":"2024-03-04"},{"lineNumber":73,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":74,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":75,"author":{"gitId":"Ella-e"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2024-03-04"},{"lineNumber":76,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2024-03-04"},{"lineNumber":77,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":78,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":79,"author":{"gitId":"Ella-e"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2024-03-04"},{"lineNumber":80,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2024-03-04"},{"lineNumber":81,"author":{"gitId":"Ella-e"},"content":" -fx-border-color: transparent transparent transparent #4d4d4d;","lastModifiedDate":"2024-03-04"},{"lineNumber":82,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":83,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":84,"author":{"gitId":"Ella-e"},"content":".split-pane {","lastModifiedDate":"2024-03-04"},{"lineNumber":85,"author":{"gitId":"Ella-e"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2024-03-04"},{"lineNumber":86,"author":{"gitId":"Ella-e"},"content":" -fx-border-width: 1;","lastModifiedDate":"2024-03-04"},{"lineNumber":87,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2024-03-04"},{"lineNumber":88,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":89,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":90,"author":{"gitId":"Ella-e"},"content":".list-view {","lastModifiedDate":"2024-03-04"},{"lineNumber":91,"author":{"gitId":"Ella-e"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2024-03-04"},{"lineNumber":92,"author":{"gitId":"Ella-e"},"content":" -fx-padding: 0;","lastModifiedDate":"2024-03-04"},{"lineNumber":93,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2024-03-04"},{"lineNumber":94,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":95,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":96,"author":{"gitId":"Ella-e"},"content":".list-cell {","lastModifiedDate":"2024-03-04"},{"lineNumber":97,"author":{"gitId":"Ella-e"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2024-03-04"},{"lineNumber":98,"author":{"gitId":"Ella-e"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2024-03-04"},{"lineNumber":99,"author":{"gitId":"Ella-e"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2024-03-04"},{"lineNumber":100,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":101,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":102,"author":{"gitId":"Ella-e"},"content":".list-cell:filled:even {","lastModifiedDate":"2024-03-04"},{"lineNumber":103,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: #3c3e3f;","lastModifiedDate":"2024-03-04"},{"lineNumber":104,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":105,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":106,"author":{"gitId":"Ella-e"},"content":".list-cell:filled:odd {","lastModifiedDate":"2024-03-04"},{"lineNumber":107,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: #515658;","lastModifiedDate":"2024-03-04"},{"lineNumber":108,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":109,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":110,"author":{"gitId":"Ella-e"},"content":".list-cell:filled:selected {","lastModifiedDate":"2024-03-04"},{"lineNumber":111,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: #424d5f;","lastModifiedDate":"2024-03-04"},{"lineNumber":112,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":113,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":114,"author":{"gitId":"Ella-e"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2024-03-04"},{"lineNumber":115,"author":{"gitId":"Ella-e"},"content":" -fx-border-color: #3e7b91;","lastModifiedDate":"2024-03-04"},{"lineNumber":116,"author":{"gitId":"Ella-e"},"content":" -fx-border-width: 1;","lastModifiedDate":"2024-03-04"},{"lineNumber":117,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":118,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":119,"author":{"gitId":"Ella-e"},"content":".list-cell .label {","lastModifiedDate":"2024-03-04"},{"lineNumber":120,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-04"},{"lineNumber":121,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":122,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":123,"author":{"gitId":"Ella-e"},"content":".cell_big_label {","lastModifiedDate":"2024-03-04"},{"lineNumber":124,"author":{"gitId":"Ella-e"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2024-03-04"},{"lineNumber":125,"author":{"gitId":"Ella-e"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2024-03-04"},{"lineNumber":126,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2024-03-04"},{"lineNumber":127,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":128,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":129,"author":{"gitId":"Ella-e"},"content":".cell_small_label {","lastModifiedDate":"2024-03-04"},{"lineNumber":130,"author":{"gitId":"Ella-e"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2024-03-04"},{"lineNumber":131,"author":{"gitId":"Ella-e"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2024-03-04"},{"lineNumber":132,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2024-03-04"},{"lineNumber":133,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":134,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":135,"author":{"gitId":"Ella-e"},"content":".stack-pane {","lastModifiedDate":"2024-03-04"},{"lineNumber":136,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2024-03-04"},{"lineNumber":137,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":138,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":139,"author":{"gitId":"Ella-e"},"content":".pane-with-border {","lastModifiedDate":"2024-03-04"},{"lineNumber":140,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2024-03-04"},{"lineNumber":141,"author":{"gitId":"Ella-e"},"content":" -fx-border-color: derive(#1d1d1d, 10%);","lastModifiedDate":"2024-03-04"},{"lineNumber":142,"author":{"gitId":"Ella-e"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2024-03-04"},{"lineNumber":143,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":144,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":145,"author":{"gitId":"Ella-e"},"content":".status-bar {","lastModifiedDate":"2024-03-04"},{"lineNumber":146,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2024-03-04"},{"lineNumber":147,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":148,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":149,"author":{"gitId":"Ella-e"},"content":".result-display {","lastModifiedDate":"2024-03-04"},{"lineNumber":150,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-04"},{"lineNumber":151,"author":{"gitId":"Ella-e"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2024-03-04"},{"lineNumber":152,"author":{"gitId":"Ella-e"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2024-03-04"},{"lineNumber":153,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-04"},{"lineNumber":154,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":155,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":156,"author":{"gitId":"Ella-e"},"content":".result-display .label {","lastModifiedDate":"2024-03-04"},{"lineNumber":157,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2024-03-04"},{"lineNumber":158,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":159,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":160,"author":{"gitId":"Ella-e"},"content":".status-bar .label {","lastModifiedDate":"2024-03-04"},{"lineNumber":161,"author":{"gitId":"Ella-e"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2024-03-04"},{"lineNumber":162,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-04"},{"lineNumber":163,"author":{"gitId":"Ella-e"},"content":" -fx-padding: 4px;","lastModifiedDate":"2024-03-04"},{"lineNumber":164,"author":{"gitId":"Ella-e"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2024-03-04"},{"lineNumber":165,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":166,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":167,"author":{"gitId":"Ella-e"},"content":".status-bar-with-border {","lastModifiedDate":"2024-03-04"},{"lineNumber":168,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2024-03-04"},{"lineNumber":169,"author":{"gitId":"Ella-e"},"content":" -fx-border-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2024-03-04"},{"lineNumber":170,"author":{"gitId":"Ella-e"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2024-03-04"},{"lineNumber":171,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":172,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":173,"author":{"gitId":"Ella-e"},"content":".status-bar-with-border .label {","lastModifiedDate":"2024-03-04"},{"lineNumber":174,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-04"},{"lineNumber":175,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":176,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":177,"author":{"gitId":"Ella-e"},"content":".grid-pane {","lastModifiedDate":"2024-03-04"},{"lineNumber":178,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2024-03-04"},{"lineNumber":179,"author":{"gitId":"Ella-e"},"content":" -fx-border-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2024-03-04"},{"lineNumber":180,"author":{"gitId":"Ella-e"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2024-03-04"},{"lineNumber":181,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":182,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":183,"author":{"gitId":"Ella-e"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2024-03-04"},{"lineNumber":184,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2024-03-04"},{"lineNumber":185,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":186,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":187,"author":{"gitId":"Ella-e"},"content":".context-menu {","lastModifiedDate":"2024-03-04"},{"lineNumber":188,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2024-03-04"},{"lineNumber":189,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":190,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":191,"author":{"gitId":"Ella-e"},"content":".context-menu .label {","lastModifiedDate":"2024-03-04"},{"lineNumber":192,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-04"},{"lineNumber":193,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":194,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":195,"author":{"gitId":"Ella-e"},"content":".menu-bar {","lastModifiedDate":"2024-03-04"},{"lineNumber":196,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2024-03-04"},{"lineNumber":197,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":198,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":199,"author":{"gitId":"Ella-e"},"content":".menu-bar .label {","lastModifiedDate":"2024-03-04"},{"lineNumber":200,"author":{"gitId":"Ella-e"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2024-03-04"},{"lineNumber":201,"author":{"gitId":"Ella-e"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2024-03-04"},{"lineNumber":202,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-04"},{"lineNumber":203,"author":{"gitId":"Ella-e"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2024-03-04"},{"lineNumber":204,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":205,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":206,"author":{"gitId":"Ella-e"},"content":".menu .left-container {","lastModifiedDate":"2024-03-04"},{"lineNumber":207,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: black;","lastModifiedDate":"2024-03-04"},{"lineNumber":208,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":209,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":210,"author":{"gitId":"Ella-e"},"content":"/*","lastModifiedDate":"2024-03-04"},{"lineNumber":211,"author":{"gitId":"Ella-e"},"content":" * Metro style Push Button","lastModifiedDate":"2024-03-04"},{"lineNumber":212,"author":{"gitId":"Ella-e"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2024-03-04"},{"lineNumber":213,"author":{"gitId":"Ella-e"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2024-03-04"},{"lineNumber":214,"author":{"gitId":"Ella-e"},"content":" */","lastModifiedDate":"2024-03-04"},{"lineNumber":215,"author":{"gitId":"Ella-e"},"content":".button {","lastModifiedDate":"2024-03-04"},{"lineNumber":216,"author":{"gitId":"Ella-e"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2024-03-04"},{"lineNumber":217,"author":{"gitId":"Ella-e"},"content":" -fx-border-color: #e2e2e2;","lastModifiedDate":"2024-03-04"},{"lineNumber":218,"author":{"gitId":"Ella-e"},"content":" -fx-border-width: 2;","lastModifiedDate":"2024-03-04"},{"lineNumber":219,"author":{"gitId":"Ella-e"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2024-03-04"},{"lineNumber":220,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2024-03-04"},{"lineNumber":221,"author":{"gitId":"Ella-e"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2024-03-04"},{"lineNumber":222,"author":{"gitId":"Ella-e"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2024-03-04"},{"lineNumber":223,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: #d8d8d8;","lastModifiedDate":"2024-03-04"},{"lineNumber":224,"author":{"gitId":"Ella-e"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2024-03-04"},{"lineNumber":225,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":226,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":227,"author":{"gitId":"Ella-e"},"content":".button:hover {","lastModifiedDate":"2024-03-04"},{"lineNumber":228,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: #3a3a3a;","lastModifiedDate":"2024-03-04"},{"lineNumber":229,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":230,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":231,"author":{"gitId":"Ella-e"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2024-03-04"},{"lineNumber":232,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: white;","lastModifiedDate":"2024-03-04"},{"lineNumber":233,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: #1d1d1d;","lastModifiedDate":"2024-03-04"},{"lineNumber":234,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":235,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":236,"author":{"gitId":"Ella-e"},"content":".button:focused {","lastModifiedDate":"2024-03-04"},{"lineNumber":237,"author":{"gitId":"Ella-e"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2024-03-04"},{"lineNumber":238,"author":{"gitId":"Ella-e"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2024-03-04"},{"lineNumber":239,"author":{"gitId":"Ella-e"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2024-03-04"},{"lineNumber":240,"author":{"gitId":"Ella-e"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2024-03-04"},{"lineNumber":241,"author":{"gitId":"Ella-e"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2024-03-04"},{"lineNumber":242,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":243,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":244,"author":{"gitId":"Ella-e"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2024-03-04"},{"lineNumber":245,"author":{"gitId":"Ella-e"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2024-03-04"},{"lineNumber":246,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2024-03-04"},{"lineNumber":247,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-04"},{"lineNumber":248,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":249,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":250,"author":{"gitId":"Ella-e"},"content":".button:default {","lastModifiedDate":"2024-03-04"},{"lineNumber":251,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2024-03-04"},{"lineNumber":252,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2024-03-04"},{"lineNumber":253,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":254,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":255,"author":{"gitId":"Ella-e"},"content":".button:default:hover {","lastModifiedDate":"2024-03-04"},{"lineNumber":256,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2024-03-04"},{"lineNumber":257,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":258,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":259,"author":{"gitId":"Ella-e"},"content":".dialog-pane {","lastModifiedDate":"2024-03-04"},{"lineNumber":260,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2024-03-04"},{"lineNumber":261,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":262,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":263,"author":{"gitId":"Ella-e"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2024-03-04"},{"lineNumber":264,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2024-03-04"},{"lineNumber":265,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":266,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":267,"author":{"gitId":"Ella-e"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2024-03-04"},{"lineNumber":268,"author":{"gitId":"Ella-e"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2024-03-04"},{"lineNumber":269,"author":{"gitId":"Ella-e"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2024-03-04"},{"lineNumber":270,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-04"},{"lineNumber":271,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":272,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":273,"author":{"gitId":"Ella-e"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2024-03-04"},{"lineNumber":274,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2024-03-04"},{"lineNumber":275,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":276,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":277,"author":{"gitId":"Ella-e"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2024-03-04"},{"lineNumber":278,"author":{"gitId":"Ella-e"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2024-03-04"},{"lineNumber":279,"author":{"gitId":"Ella-e"},"content":" -fx-font-style: italic;","lastModifiedDate":"2024-03-04"},{"lineNumber":280,"author":{"gitId":"Ella-e"},"content":" -fx-fill: white;","lastModifiedDate":"2024-03-04"},{"lineNumber":281,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-04"},{"lineNumber":282,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":283,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":284,"author":{"gitId":"Ella-e"},"content":".scroll-bar {","lastModifiedDate":"2024-03-04"},{"lineNumber":285,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2024-03-04"},{"lineNumber":286,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":287,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":288,"author":{"gitId":"Ella-e"},"content":".scroll-bar .thumb {","lastModifiedDate":"2024-03-04"},{"lineNumber":289,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2024-03-04"},{"lineNumber":290,"author":{"gitId":"Ella-e"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2024-03-04"},{"lineNumber":291,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":292,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":293,"author":{"gitId":"Ella-e"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2024-03-04"},{"lineNumber":294,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-04"},{"lineNumber":295,"author":{"gitId":"Ella-e"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2024-03-04"},{"lineNumber":296,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":297,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":298,"author":{"gitId":"Ella-e"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2024-03-04"},{"lineNumber":299,"author":{"gitId":"Ella-e"},"content":" -fx-shape: \" \";","lastModifiedDate":"2024-03-04"},{"lineNumber":300,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":301,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":302,"author":{"gitId":"Ella-e"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2024-03-04"},{"lineNumber":303,"author":{"gitId":"Ella-e"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2024-03-04"},{"lineNumber":304,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":305,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":306,"author":{"gitId":"Ella-e"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2024-03-04"},{"lineNumber":307,"author":{"gitId":"Ella-e"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2024-03-04"},{"lineNumber":308,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":309,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":310,"author":{"gitId":"Ella-e"},"content":"#cardPane {","lastModifiedDate":"2024-03-04"},{"lineNumber":311,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-04"},{"lineNumber":312,"author":{"gitId":"Ella-e"},"content":" -fx-border-width: 0;","lastModifiedDate":"2024-03-04"},{"lineNumber":313,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":314,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":315,"author":{"gitId":"Ella-e"},"content":"#commandTypeLabel {","lastModifiedDate":"2024-03-04"},{"lineNumber":316,"author":{"gitId":"Ella-e"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2024-03-04"},{"lineNumber":317,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2024-03-04"},{"lineNumber":318,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":319,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":320,"author":{"gitId":"Ella-e"},"content":"#commandTextField {","lastModifiedDate":"2024-03-04"},{"lineNumber":321,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: transparent #383838 transparent #383838;","lastModifiedDate":"2024-03-04"},{"lineNumber":322,"author":{"gitId":"Ella-e"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2024-03-04"},{"lineNumber":323,"author":{"gitId":"Ella-e"},"content":" -fx-border-color: #383838 #383838 #ffffff #383838;","lastModifiedDate":"2024-03-04"},{"lineNumber":324,"author":{"gitId":"Ella-e"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2024-03-04"},{"lineNumber":325,"author":{"gitId":"Ella-e"},"content":" -fx-border-width: 1;","lastModifiedDate":"2024-03-04"},{"lineNumber":326,"author":{"gitId":"Ella-e"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2024-03-04"},{"lineNumber":327,"author":{"gitId":"Ella-e"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2024-03-04"},{"lineNumber":328,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-04"},{"lineNumber":329,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":330,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":331,"author":{"gitId":"Ella-e"},"content":"#filterField, #personListPanel, #personWebpage {","lastModifiedDate":"2024-03-04"},{"lineNumber":332,"author":{"gitId":"Ella-e"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2024-03-04"},{"lineNumber":333,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":334,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":335,"author":{"gitId":"Ella-e"},"content":"#resultDisplay .content {","lastModifiedDate":"2024-03-04"},{"lineNumber":336,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: transparent, #383838, transparent, #383838;","lastModifiedDate":"2024-03-04"},{"lineNumber":337,"author":{"gitId":"Ella-e"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2024-03-04"},{"lineNumber":338,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":339,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":340,"author":{"gitId":"Ella-e"},"content":"#tags {","lastModifiedDate":"2024-03-04"},{"lineNumber":341,"author":{"gitId":"Ella-e"},"content":" -fx-hgap: 7;","lastModifiedDate":"2024-03-04"},{"lineNumber":342,"author":{"gitId":"Ella-e"},"content":" -fx-vgap: 3;","lastModifiedDate":"2024-03-04"},{"lineNumber":343,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":344,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":345,"author":{"gitId":"Ella-e"},"content":"#tags .label {","lastModifiedDate":"2024-03-04"},{"lineNumber":346,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-04"},{"lineNumber":347,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: #3e7b91;","lastModifiedDate":"2024-03-04"},{"lineNumber":348,"author":{"gitId":"Ella-e"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2024-03-04"},{"lineNumber":349,"author":{"gitId":"Ella-e"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2024-03-04"},{"lineNumber":350,"author":{"gitId":"Ella-e"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2024-03-04"},{"lineNumber":351,"author":{"gitId":"Ella-e"},"content":" -fx-font-size: 11;","lastModifiedDate":"2024-03-04"},{"lineNumber":352,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"Ella-e":352}},{"path":"bin/main/view/Extensions.css","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":".error {","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: #d06651 !important; /* The error class should always override the default text-fill style */","lastModifiedDate":"2024-03-04"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":".list-cell:empty {","lastModifiedDate":"2024-03-04"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":" /* Empty cells will not have alternating colours */","lastModifiedDate":"2024-03-04"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":" -fx-background: #383838;","lastModifiedDate":"2024-03-04"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":".tag-selector {","lastModifiedDate":"2024-03-04"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"content":" -fx-border-width: 1;","lastModifiedDate":"2024-03-04"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":" -fx-border-color: white;","lastModifiedDate":"2024-03-04"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":" -fx-border-radius: 3;","lastModifiedDate":"2024-03-04"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":" -fx-background-radius: 3;","lastModifiedDate":"2024-03-04"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":".tooltip-text {","lastModifiedDate":"2024-03-04"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-04"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"Ella-e":20}},{"path":"bin/main/view/HelpWindow.css","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"#copyButton, #helpMessage {","lastModifiedDate":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"#copyButton {","lastModifiedDate":"2024-03-04"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: dimgray;","lastModifiedDate":"2024-03-04"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":"#copyButton:hover {","lastModifiedDate":"2024-03-04"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: gray;","lastModifiedDate":"2024-03-04"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":"#copyButton:armed {","lastModifiedDate":"2024-03-04"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: darkgray;","lastModifiedDate":"2024-03-04"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":"#helpMessageContainer {","lastModifiedDate":"2024-03-04"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2024-03-04"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"Ella-e":19}},{"path":"bin/main/view/HelpWindow.fxml","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.control.Button?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.stage.Stage?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"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":"2024-03-04"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":" \u003cicons\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":" \u003cImage url\u003d\"@/images/help_icon.png\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":" \u003c/icons\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":" \u003cscene\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":" \u003cScene\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":" \u003cURL value\u003d\"@HelpWindow.css\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":21,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":22,"author":{"gitId":"Ella-e"},"content":" \u003cHBox alignment\u003d\"CENTER\" fx:id\u003d\"helpMessageContainer\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":23,"author":{"gitId":"Ella-e"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":24,"author":{"gitId":"Ella-e"},"content":" \u003cLabel fx:id\u003d\"helpMessage\" text\u003d\"Label\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":25,"author":{"gitId":"Ella-e"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":26,"author":{"gitId":"Ella-e"},"content":" \u003cInsets right\u003d\"5.0\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":27,"author":{"gitId":"Ella-e"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":28,"author":{"gitId":"Ella-e"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":29,"author":{"gitId":"Ella-e"},"content":" \u003cButton fx:id\u003d\"copyButton\" mnemonicParsing\u003d\"false\" onAction\u003d\"#copyUrl\" text\u003d\"Copy URL\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":30,"author":{"gitId":"Ella-e"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":31,"author":{"gitId":"Ella-e"},"content":" \u003cInsets left\u003d\"5.0\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":32,"author":{"gitId":"Ella-e"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":33,"author":{"gitId":"Ella-e"},"content":" \u003c/Button\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":34,"author":{"gitId":"Ella-e"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":35,"author":{"gitId":"Ella-e"},"content":" \u003copaqueInsets\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":36,"author":{"gitId":"Ella-e"},"content":" \u003cInsets bottom\u003d\"10.0\" left\u003d\"5.0\" right\u003d\"10.0\" top\u003d\"5.0\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":37,"author":{"gitId":"Ella-e"},"content":" \u003c/opaqueInsets\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":38,"author":{"gitId":"Ella-e"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":39,"author":{"gitId":"Ella-e"},"content":" \u003cInsets bottom\u003d\"10.0\" left\u003d\"5.0\" right\u003d\"10.0\" top\u003d\"5.0\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":40,"author":{"gitId":"Ella-e"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":41,"author":{"gitId":"Ella-e"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":42,"author":{"gitId":"Ella-e"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":43,"author":{"gitId":"Ella-e"},"content":" \u003c/scene\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":44,"author":{"gitId":"Ella-e"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"Ella-e":44}},{"path":"bin/main/view/MainWindow.fxml","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.control.SplitPane?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":"\u003cfx:root type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"","lastModifiedDate":"2024-03-04"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":" title\u003d\"Address App\" minWidth\u003d\"450\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":" \u003cicons\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":" \u003cImage url\u003d\"@/images/address_book_32.png\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":" \u003c/icons\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":" \u003cscene\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":" \u003cScene\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":21,"author":{"gitId":"Ella-e"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":22,"author":{"gitId":"Ella-e"},"content":" \u003cURL value\u003d\"@DarkTheme.css\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":23,"author":{"gitId":"Ella-e"},"content":" \u003cURL value\u003d\"@Extensions.css\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":24,"author":{"gitId":"Ella-e"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":25,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":26,"author":{"gitId":"Ella-e"},"content":" \u003cVBox\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":27,"author":{"gitId":"Ella-e"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":28,"author":{"gitId":"Ella-e"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":29,"author":{"gitId":"Ella-e"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":30,"author":{"gitId":"Ella-e"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":31,"author":{"gitId":"Ella-e"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":32,"author":{"gitId":"Ella-e"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":33,"author":{"gitId":"Ella-e"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":34,"author":{"gitId":"Ella-e"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":35,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":36,"author":{"gitId":"Ella-e"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":37,"author":{"gitId":"Ella-e"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":38,"author":{"gitId":"Ella-e"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":39,"author":{"gitId":"Ella-e"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":40,"author":{"gitId":"Ella-e"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":41,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":42,"author":{"gitId":"Ella-e"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"resultDisplayPlaceholder\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2024-03-04"},{"lineNumber":43,"author":{"gitId":"Ella-e"},"content":" minHeight\u003d\"100\" prefHeight\u003d\"100\" maxHeight\u003d\"100\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":44,"author":{"gitId":"Ella-e"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":45,"author":{"gitId":"Ella-e"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":46,"author":{"gitId":"Ella-e"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":47,"author":{"gitId":"Ella-e"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":48,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":49,"author":{"gitId":"Ella-e"},"content":" \u003cVBox fx:id\u003d\"personList\" styleClass\u003d\"pane-with-border\" minWidth\u003d\"340\" prefWidth\u003d\"340\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":50,"author":{"gitId":"Ella-e"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":51,"author":{"gitId":"Ella-e"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":52,"author":{"gitId":"Ella-e"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":53,"author":{"gitId":"Ella-e"},"content":" \u003cStackPane fx:id\u003d\"personListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":54,"author":{"gitId":"Ella-e"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":55,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":56,"author":{"gitId":"Ella-e"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":57,"author":{"gitId":"Ella-e"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":58,"author":{"gitId":"Ella-e"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":59,"author":{"gitId":"Ella-e"},"content":" \u003c/scene\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":60,"author":{"gitId":"Ella-e"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"Ella-e":60}},{"path":"bin/main/view/PersonListCard.fxml","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"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":"2024-03-04"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":21,"author":{"gitId":"Ella-e"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":22,"author":{"gitId":"Ella-e"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":23,"author":{"gitId":"Ella-e"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":24,"author":{"gitId":"Ella-e"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":25,"author":{"gitId":"Ella-e"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":26,"author":{"gitId":"Ella-e"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":27,"author":{"gitId":"Ella-e"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":28,"author":{"gitId":"Ella-e"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":29,"author":{"gitId":"Ella-e"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":30,"author":{"gitId":"SeaHogs"},"content":" \u003cFlowPane fx:id\u003d\"allergyTags\" /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"Ella-e"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":32,"author":{"gitId":"Ella-e"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":33,"author":{"gitId":"Ella-e"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":34,"author":{"gitId":"Ella-e"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":35,"author":{"gitId":"Ella-e"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":36,"author":{"gitId":"Ella-e"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"Ella-e":35,"SeaHogs":1}},{"path":"bin/main/view/PersonListPanel.fxml","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":" \u003cListView fx:id\u003d\"personListView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"Ella-e":8}},{"path":"bin/main/view/ResultDisplay.fxml","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.control.TextArea?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":"\u003cStackPane fx:id\u003d\"placeHolder\" styleClass\u003d\"pane-with-border\" xmlns\u003d\"http://javafx.com/javafx/17\"","lastModifiedDate":"2024-03-04"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":" \u003cTextArea fx:id\u003d\"resultDisplay\" editable\u003d\"false\" styleClass\u003d\"result-display\"/\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":"\u003c/StackPane\u003e","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"Ella-e":9}},{"path":"bin/main/view/StatusBarFooter.fxml","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":"\u003cGridPane styleClass\u003d\"status-bar\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":" \u003cLabel fx:id\u003d\"saveLocationStatus\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"content":"\u003c/GridPane\u003e","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"Ella-e":12}},{"path":"bin/test/view/UiPartTest/invalidFile.fxml","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"Not a valid FXML file","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"Ella-e":1}},{"path":"bin/test/view/UiPartTest/validFile.fxml","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"javierng2knus"},"content":"\u003c?import vitalConnect.ui.TestFxmlObject?\u003e","lastModifiedDate":"2024-03-10"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"\u003cTestFxmlObject xmlns:fx\u003d\"http://javafx.com/fxml/1\" fx:id\u003d\"validFileRoot\"\u003eHello World!\u003c/TestFxmlObject\u003e","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"javierng2knus":1,"Ella-e":3}},{"path":"bin/test/view/UiPartTest/validFileWithFxRoot.fxml","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"javierng2knus"},"content":"\u003cfx:root type\u003d\"vitalConnect.ui.TestFxmlObject\" xmlns\u003d\"http://javafx.com/javafx/17\"","lastModifiedDate":"2024-03-10"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":" \u003ctext\u003eHello World!\u003c/text\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"javierng2knus":1,"Ella-e":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":"MaYuehan"},"content":"mainClassName \u003d \u0027vitalconnect.Main\u0027","lastModifiedDate":"2024-03-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":" implementation group: \u0027com.fasterxml.jackson.core\u0027, name: \u0027jackson-databind\u0027, version: \u00272.7.0\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":60,"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":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":65,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"Ella-e"},"content":" // https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"Ella-e"},"content":" implementation group: \u0027org.apache.poi\u0027, name: \u0027poi-ooxml\u0027, version: \u00273.6\u0027","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"Ella-e"},"content":"run{","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"Ella-e"},"content":" enableAssertions \u003d true","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2016-08-29"},{"lineNumber":75,"author":{"gitId":"MaYuehan"},"content":" archiveFileName \u003d \u0027vitalconnect.jar\u0027","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":"defaultTasks \u0027clean\u0027, \u0027test\u0027","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"MaYuehan":2,"Ella-e":7,"-":69}},{"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":"-"},"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":"2017-08-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":"2016-10-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"offCommentFormat\" value\u003d\"CHECKSTYLE.OFF\\: ([\\w\\|]+)\"/\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"onCommentFormat\" value\u003d\"CHECKSTYLE.ON\\: ([\\w\\|]+)\"/\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"checkFormat\" value\u003d\"$1\"/\u003e","lastModifiedDate":"2016-10-12"},{"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":"2017-01-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"customImportOrderRules\"","lastModifiedDate":"2017-01-19"},{"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":"-"},"content":" \u003cproperty name\u003d\"specialImportsRegExp\" value\u003d\"^org\\.\"/\u003e","lastModifiedDate":"2017-01-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"thirdPartyPackageRegExp\" value\u003d\"^com\\.\"/\u003e","lastModifiedDate":"2017-01-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"sortImportsInGroupAlphabetically\" value\u003d\"true\"/\u003e","lastModifiedDate":"2017-01-19"},{"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":"2017-01-19"},{"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":"2017-01-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"AvoidStarImport\"/\u003e","lastModifiedDate":"2018-01-25"},{"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":"2017-04-07"},{"lineNumber":87,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"AbbreviationAsWordInName\"\u003e","lastModifiedDate":"2017-04-07"},{"lineNumber":88,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"ignoreFinal\" value\u003d\"false\"/\u003e","lastModifiedDate":"2017-04-07"},{"lineNumber":89,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowedAbbreviationLength\" value\u003d\"1\"/\u003e","lastModifiedDate":"2017-04-07"},{"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":"2016-08-08"},{"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":"2016-08-08"},{"lineNumber":95,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08"},{"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":"2017-01-29"},{"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":"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\"ConstantName\"\u003e","lastModifiedDate":"2017-01-29"},{"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":"2016-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"applyToPrivate\" value\u003d\"false\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":" \u003cmessage key\u003d\"name.invalidPattern\"","lastModifiedDate":"2016-08-08"},{"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":"2016-08-08"},{"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":"2017-01-29"},{"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":"2016-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"format\" value\u003d\"^[a-z][a-zA-Z0-9]*_?$\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08"},{"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":"2017-01-29"},{"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":"2016-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"format\" value\u003d\"^[a-z][a-zA-Z0-9]*$\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08"},{"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":"2017-01-29"},{"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":"2016-08-08"},{"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":"2017-04-03"},{"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":"2016-08-08"},{"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":"2016-08-08"},{"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":"2016-08-08"},{"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":"2016-08-08"},{"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":"2016-08-08"},{"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":"2016-08-08"},{"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":"2017-04-01"},{"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":"2017-04-03"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-03"},{"lineNumber":162,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"LeftCurly\"\u003e","lastModifiedDate":"2016-08-08"},{"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":"2016-08-08"},{"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":"2016-08-08"},{"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":"2016-08-08"},{"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":"2016-08-08"},{"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":"2016-10-12"},{"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":"2017-09-21"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21"},{"lineNumber":207,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"OneStatementPerLine\"/\u003e","lastModifiedDate":"2017-09-17"},{"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":"2018-01-25"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":212,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"FallThrough\"\u003e","lastModifiedDate":"2016-08-08"},{"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":"2016-08-08"},{"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":"2017-04-07"},{"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":"2017-04-13"},{"lineNumber":226,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"protectedAllowed\" value\u003d\"true\"/\u003e","lastModifiedDate":"2017-04-13"},{"lineNumber":227,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowPublicFinalFields\" value\u003d\"true\"/\u003e","lastModifiedDate":"2017-04-13"},{"lineNumber":228,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"ignoreAnnotationCanonicalNames\" value\u003d\"RegisterExtension, TempDir\"/\u003e","lastModifiedDate":"2019-02-24"},{"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":"2017-04-07"},{"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":"2017-04-01"},{"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":"2022-04-29"},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29"},{"lineNumber":251,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"ModifierOrder\"\u003e","lastModifiedDate":"2016-08-08"},{"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":"2017-01-16"},{"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":"2017-04-03"},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-03"},{"lineNumber":268,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"WhitespaceAround\"\u003e","lastModifiedDate":"2016-08-08"},{"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":"2016-08-08"},{"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":"2016-12-10"},{"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":"2016-12-10"},{"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":"2016-12-10"},{"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":"2016-12-10"},{"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":"2016-12-10"},{"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":"2016-08-08"},{"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":"2016-08-08"},{"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":"2016-08-08"},{"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":"2016-08-08"},{"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":"2016-08-08"},{"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":"2016-12-08"},{"lineNumber":306,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"format\" value\u003d\"[ \\t]+$\"/\u003e","lastModifiedDate":"2016-12-08"},{"lineNumber":307,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"illegalPattern\" value\u003d\"true\"/\u003e","lastModifiedDate":"2016-12-08"},{"lineNumber":308,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"message\" value\u003d\"Trailing whitespace\"/\u003e","lastModifiedDate":"2016-12-08"},{"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":"2017-05-22"},{"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":"2017-05-22"},{"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":"2017-05-22"},{"lineNumber":323,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-05-22"},{"lineNumber":324,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"OperatorWrap\"\u003e","lastModifiedDate":"2017-05-22"},{"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":"2017-05-22"},{"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":"2017-05-22"},{"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":"2017-04-14"},{"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":"2017-04-14"},{"lineNumber":336,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"option\" value\u003d\"nl\"/\u003e","lastModifiedDate":"2017-04-14"},{"lineNumber":337,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-04-14"},{"lineNumber":338,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"SeparatorWrap\"\u003e","lastModifiedDate":"2017-04-14"},{"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":"2017-04-14"},{"lineNumber":341,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"option\" value\u003d\"eol\"/\u003e","lastModifiedDate":"2017-04-14"},{"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":"2016-08-08"},{"lineNumber":345,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"caseIndent\" value\u003d\"0\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":346,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"throwsIndent\" value\u003d\"8\" /\u003e","lastModifiedDate":"2022-04-29"},{"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":"2016-08-08"},{"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":"2016-08-08"},{"lineNumber":352,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowLineBreaks\" value\u003d\"true\"/\u003e","lastModifiedDate":"2016-08-08"},{"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":"2022-04-29"},{"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":"2022-04-29"},{"lineNumber":358,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"MethodParamPad\"/\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":359,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29"},{"lineNumber":360,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"ParenPad\"\u003e","lastModifiedDate":"2016-08-08"},{"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":"2016-08-08"},{"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":"2018-08-15"},{"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":"2018-08-15"},{"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":"SeaHogs"},"content":" \u003c!-- Checks that all block-allergyTags are ordered correctly. --\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":389,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"AtclauseOrder\"/\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":390,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29"},{"lineNumber":391,"author":{"gitId":"SeaHogs"},"content":" \u003c!-- Checks that Javadoc block allergyTags appear only at the beginning of the line. --\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":392,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"JavadocBlockTagLocation\"/\u003e","lastModifiedDate":"2022-04-29"},{"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":"2022-04-29"},{"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":"2022-04-29"},{"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":"2022-04-29"},{"lineNumber":402,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29"},{"lineNumber":403,"author":{"gitId":"SeaHogs"},"content":" \u003c!-- Checks that for block allergyTags, indentation of continuation lines is at least 4 spaces. --\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":404,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"JavadocTagContinuationIndentation\"/\u003e","lastModifiedDate":"2022-04-29"},{"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":"2017-08-20"},{"lineNumber":408,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowMissingParamTags\" value\u003d\"true\"/\u003e","lastModifiedDate":"2017-08-20"},{"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":"2017-08-20"},{"lineNumber":413,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowedAnnotations\" value\u003d\"Override, Test, BeforeAll, BeforeEach, AfterAll, AfterEach, Subscribe\"/\u003e","lastModifiedDate":"2019-02-24"},{"lineNumber":414,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"accessModifiers\" value\u003d\"public\"/\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":415,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"validateThrows\" value\u003d\"false\"/\u003e","lastModifiedDate":"2020-05-27"},{"lineNumber":416,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowMissingParamTags\" value\u003d\"true\"/\u003e","lastModifiedDate":"2017-08-20"},{"lineNumber":417,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowMissingReturnTag\" value\u003d\"true\"/\u003e","lastModifiedDate":"2017-08-20"},{"lineNumber":418,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"METHOD_DEF, ANNOTATION_FIELD_DEF\"/\u003e","lastModifiedDate":"2017-08-20"},{"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":"2020-05-27"},{"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":"2020-05-27"},{"lineNumber":425,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"minLineCount\" value\u003d\"1\"/\u003e","lastModifiedDate":"2020-05-27"},{"lineNumber":426,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowMissingPropertyJavadoc\" value\u003d\"true\"/\u003e","lastModifiedDate":"2017-08-20"},{"lineNumber":427,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"ignoreMethodNamesRegex\" value\u003d\"(set.*|get.*|main)\"/\u003e","lastModifiedDate":"2023-07-10"},{"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":"2022-04-29"},{"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":{"-":431,"SeaHogs":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":"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":"javierng2knus"},"content":"### Ng Wei Chong Javier","lastModifiedDate":"2024-03-06"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"javierng2knus"},"content":"\u003cimg src\u003d\"images/javierng2knus.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"javierng2knus"},"content":"[[github](https://github.com/javierng2knus)]","lastModifiedDate":"2024-03-06"},{"lineNumber":17,"author":{"gitId":"javierng2knus"},"content":"[[portfolio](team/javier.md)]","lastModifiedDate":"2024-03-06"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"javierng2knus"},"content":"* Role: Team lead","lastModifiedDate":"2024-03-06"},{"lineNumber":20,"author":{"gitId":"javierng2knus"},"content":"* Responsibilities: \u003cWill be reassigned on a later date\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":"### Ma Yuehan","lastModifiedDate":"2024-02-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":"\u003cimg src\u003d\"images/mayuehan.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":"[[github](https://github.com/MaYuehan)]","lastModifiedDate":"2024-02-25"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":"[[portfolio](team/mayuehan.md)]","lastModifiedDate":"2024-02-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2024-02-25"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":"* Responsibilities: Command implementation, documentation, Ui","lastModifiedDate":"2024-03-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"Ella-e"},"content":"### Mu Zhaoyu","lastModifiedDate":"2024-03-04"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"Ella-e"},"content":"\u003cimg src\u003d\"images/ella-e.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"Ella-e"},"content":"[[github](http://github.com/Ella-e)] ","lastModifiedDate":"2024-03-04"},{"lineNumber":37,"author":{"gitId":"Ella-e"},"content":"[[portfolio](team/ella-e.md)]","lastModifiedDate":"2024-03-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":"Ella-e"},"content":"* Responsibilities: Command implementation, documentation","lastModifiedDate":"2024-03-04"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"Ella-e"},"content":"### Lai Yiwen","lastModifiedDate":"2024-03-06"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"Ella-e"},"content":"\u003cimg src\u003d\"images/seahogs.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"[[github](http://github.com/johndoe)]","lastModifiedDate":"2020-06-17"},{"lineNumber":47,"author":{"gitId":"Ella-e"},"content":"[[portfolio](team/seahogs.md)]","lastModifiedDate":"2024-03-06"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"Ella-e"},"content":"* Responsibilities: Command implementation, documentation","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"javierng2knus":6,"MaYuehan":5,"Ella-e":9,"-":30}},{"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":"javierng2knus"},"content":"* Libraries used: [JavaFX](https://openjfx.io/), [Jackson](https://github.com/FasterXML/jackson), [JUnit5](https://github.com/junit-team/junit5)","lastModifiedDate":"2024-03-06"},{"lineNumber":14,"author":{"gitId":"javierng2knus"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-03-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":16,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","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":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"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":29,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureDiagram.png\" width\u003d\"280\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":39,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"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":42,"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":43,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"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":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureSequenceDiagram.png\" width\u003d\"574\" /\u003e","lastModifiedDate":"2020-06-07"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":62,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31"},{"lineNumber":63,"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":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":65,"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":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ComponentManagers.png\" width\u003d\"300\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":69,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"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":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"![Structure of the UI Component](images/UiClassDiagram.png)","lastModifiedDate":"2021-07-31"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"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":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"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":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":"2021-07-31"},{"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 continues till the end of diagram.","lastModifiedDate":"2024-02-09"},{"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).\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":108,"author":{"gitId":"-"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-02-09"},{"lineNumber":109,"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":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":111,"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":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":113,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ParserClasses.png\" width\u003d\"600\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31"},{"lineNumber":116,"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":117,"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":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31"},{"lineNumber":120,"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":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"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":128,"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":129,"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":130,"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":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":132,"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":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":134,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/BetterModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"\u003c/div\u003e","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":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"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":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/StorageClassDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31"},{"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":"javierng2knus"},"content":"Classes used by multiple components are in the `vitalConnectbook.commons` package.","lastModifiedDate":"2024-03-10"},{"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":"![UndoRedoState0](images/UndoRedoState0.png)","lastModifiedDate":"2020-05-23"},{"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":"![UndoRedoState1](images/UndoRedoState1.png)","lastModifiedDate":"2020-05-23"},{"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":"![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":"2020-05-23"},{"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":"2020-05-23"},{"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 an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Logic.png)","lastModifiedDate":"2024-02-09"},{"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":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":209,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Model.png)","lastModifiedDate":"2024-02-09"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":211,"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":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":213,"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":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":217,"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":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":"![UndoRedoState4](images/UndoRedoState4.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"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":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":"![UndoRedoState5](images/UndoRedoState5.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/CommitActivityDiagram.png\" width\u003d\"250\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","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":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":252,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":254,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":255,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":256,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":257,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"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":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"Ella-e"},"content":"* has a need to manage a significant number of patient records and contacts","lastModifiedDate":"2024-03-04"},{"lineNumber":268,"author":{"gitId":"Ella-e"},"content":"* need to manage a significant number of appointments","lastModifiedDate":"2024-03-04"},{"lineNumber":269,"author":{"gitId":"Ella-e"},"content":"* need to have a reminder of upcoming appointments","lastModifiedDate":"2024-03-04"},{"lineNumber":270,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26"},{"lineNumber":273,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"Ella-e"},"content":"**Value proposition**:","lastModifiedDate":"2024-03-06"},{"lineNumber":276,"author":{"gitId":"MaYuehan"},"content":"vitalconnect aims to provide a robust and user-friendly platform for medical professionals to streamline their workflow by effectively managing patient information and appointments. The key value propositions include:","lastModifiedDate":"2024-03-13"},{"lineNumber":277,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":278,"author":{"gitId":"Ella-e"},"content":"* Efficient Patient Management: Users can easily add, modify, and retrieve patient information, ensuring a comprehensive and organized patient database.","lastModifiedDate":"2024-03-06"},{"lineNumber":279,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":280,"author":{"gitId":"MaYuehan"},"content":"* Seamless Appointment Handling: vitalconnect allows for the effortless creation, modification, and deletion of appointments, ensuring accurate scheduling and coordination.","lastModifiedDate":"2024-03-13"},{"lineNumber":281,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":282,"author":{"gitId":"Ella-e"},"content":"* CLI Efficiency: The application caters to users who prefer typing commands over graphical interfaces, enabling faster and more precise data entry.","lastModifiedDate":"2024-03-06"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":284,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":285,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":286,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":287,"author":{"gitId":"Ella-e"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (good to but might not have) - `*`","lastModifiedDate":"2024-03-04"},{"lineNumber":288,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":289,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":290,"author":{"gitId":"-"},"content":"| -------- | ------------------------------------------ | ------------------------------ | ---------------------------------------------------------------------- |","lastModifiedDate":"2020-05-23"},{"lineNumber":291,"author":{"gitId":"Ella-e"},"content":"| `* * *` | new user | have a comprehensive document that details every possible feature. | learn how to use a particular feature |","lastModifiedDate":"2024-03-04"},{"lineNumber":292,"author":{"gitId":"javierng2knus"},"content":"| `* * *` | user | add new patient, either with or without further basic information about the patient | |","lastModifiedDate":"2024-03-06"},{"lineNumber":293,"author":{"gitId":"javierng2knus"},"content":"| `* * *` | user | add the basic information of my patient into the database | so that I can better identify who the patient is |","lastModifiedDate":"2024-03-06"},{"lineNumber":294,"author":{"gitId":"Ella-e"},"content":"| `* * *` | user | delete patient | free storage resources |","lastModifiedDate":"2024-03-04"},{"lineNumber":295,"author":{"gitId":"javierng2knus"},"content":"| `* * *` | user | list out all of the information about a particular patient | see the detailed information of the patient |","lastModifiedDate":"2024-03-06"},{"lineNumber":296,"author":{"gitId":"javierng2knus"},"content":"| `* * *` | user | add the contact information of my patient into the database | get in touch with them when needed or under emergency situation |","lastModifiedDate":"2024-03-06"},{"lineNumber":297,"author":{"gitId":"javierng2knus"},"content":"| `* * *` | user | delete the contact information for a particular patient when the information is outdated | free storage resources |","lastModifiedDate":"2024-03-06"},{"lineNumber":298,"author":{"gitId":"javierng2knus"},"content":"| `* * *` | user | list out all of the patients and their contact information | |","lastModifiedDate":"2024-03-06"},{"lineNumber":299,"author":{"gitId":"javierng2knus"},"content":"| `* * *` | intermediate user | add appointment information for a patient | easily schedule an appointment and find free time slot for it |","lastModifiedDate":"2024-03-06"},{"lineNumber":300,"author":{"gitId":"javierng2knus"},"content":"| `* * *` | intermediate user | delete appointment for a patient | free up slots if the patient is unable to attend |","lastModifiedDate":"2024-03-06"},{"lineNumber":301,"author":{"gitId":"javierng2knus"},"content":"| `* * *` | intermediate user | list out all of the appointments | |","lastModifiedDate":"2024-03-06"},{"lineNumber":302,"author":{"gitId":"javierng2knus"},"content":"| `* * *` | user | list out all of the information about a particular patient | see the detailed information of the patient |","lastModifiedDate":"2024-03-06"},{"lineNumber":303,"author":{"gitId":"javierng2knus"},"content":"| `* *` | user | add the medical information for the patient | allow the doctor to better treat the patient |","lastModifiedDate":"2024-03-06"},{"lineNumber":304,"author":{"gitId":"javierng2knus"},"content":"| `* *` | user | delete the medical information for a patient when the information is outdated | free storage resources |","lastModifiedDate":"2024-03-06"},{"lineNumber":305,"author":{"gitId":"javierng2knus"},"content":"| `* *` | user | list out all of the patients and their medical information | |","lastModifiedDate":"2024-03-06"},{"lineNumber":306,"author":{"gitId":"javierng2knus"},"content":"| `* *` | user | modify the medical details of a patient | keep the patient\u0027s medical information updated |","lastModifiedDate":"2024-03-06"},{"lineNumber":307,"author":{"gitId":"javierng2knus"},"content":"| `* *` | user | modify the basic information of a patient | keep the patient\u0027s basic information updated |","lastModifiedDate":"2024-03-06"},{"lineNumber":308,"author":{"gitId":"javierng2knus"},"content":"| `* *` | user | modify the contact information of a patient | keep the patient\u0027s contact information updated |","lastModifiedDate":"2024-03-06"},{"lineNumber":309,"author":{"gitId":"javierng2knus"},"content":"| `* *` | user | modify the appointment details of a patient | keep the patient\u0027s appointment information updated |","lastModifiedDate":"2024-03-06"},{"lineNumber":310,"author":{"gitId":"javierng2knus"},"content":"| `* *` | user | undo the most recent change or command if possible | fix any errors made |","lastModifiedDate":"2024-03-06"},{"lineNumber":311,"author":{"gitId":"javierng2knus"},"content":"| `* *` | user | view all of the appointments for the day | |","lastModifiedDate":"2024-03-06"},{"lineNumber":312,"author":{"gitId":"javierng2knus"},"content":"| `* *` | intermediate user | list out specifically the medication that the patient is currently taking | |","lastModifiedDate":"2024-03-06"},{"lineNumber":313,"author":{"gitId":"javierng2knus"},"content":"| `* *` | intermediate user | modify the patient\u0027s current medication | better track the medication plan of the patient |","lastModifiedDate":"2024-03-06"},{"lineNumber":314,"author":{"gitId":"javierng2knus"},"content":"| `* *` | intermediate user | list out specifically the patient\u0027s allergies | prescribe the appropriate medication |","lastModifiedDate":"2024-03-06"},{"lineNumber":315,"author":{"gitId":"javierng2knus"},"content":"| `* *` | intermediate user | modify the patient\u0027s allergies | |","lastModifiedDate":"2024-03-06"},{"lineNumber":316,"author":{"gitId":"javierng2knus"},"content":"| `* *` | intermediate user | list out specifically the past illnesses of the patient | assist in the diagnosis process |","lastModifiedDate":"2024-03-06"},{"lineNumber":317,"author":{"gitId":"javierng2knus"},"content":"| `* *` | intermediate user | modify the patient\u0027s past illnesses upon the previous appointment | |","lastModifiedDate":"2024-03-06"},{"lineNumber":318,"author":{"gitId":"Ella-e"},"content":"| `* *` | expert user | have short forms of existing commands | save time on typing the commands |","lastModifiedDate":"2024-03-04"},{"lineNumber":319,"author":{"gitId":"Ella-e"},"content":"| `*` | new user | have the ability to switch to a more simplified and beginner friendly UI | more effectively learn the basics |","lastModifiedDate":"2024-03-04"},{"lineNumber":320,"author":{"gitId":"javierng2knus"},"content":"| `*` | new user | have interactive elements in the user guide | easily understand the app\u0027s capabilities |","lastModifiedDate":"2024-03-06"},{"lineNumber":321,"author":{"gitId":"javierng2knus"},"content":"| `*` | new user | be given command suggestions for mistyped commands | type the intended command without needing to refer to the user guide |","lastModifiedDate":"2024-03-06"},{"lineNumber":322,"author":{"gitId":"javierng2knus"},"content":"| `*` | user | add a reminder for an appointment | be aware of the appointment while busy with work |","lastModifiedDate":"2024-03-06"},{"lineNumber":323,"author":{"gitId":"javierng2knus"},"content":"| `*` | user | mark a reminder as done or undone | better track done and undone work |","lastModifiedDate":"2024-03-06"},{"lineNumber":324,"author":{"gitId":"javierng2knus"},"content":"| `*` | user | mark some of the patients as the special focus | better track patients in serious conditions |","lastModifiedDate":"2024-03-06"},{"lineNumber":325,"author":{"gitId":"javierng2knus"},"content":"| `*` | user | have the ability to leave comments or annotations on shared patient records | communicate specific insights or recommendations to my colleagues |","lastModifiedDate":"2024-03-06"},{"lineNumber":326,"author":{"gitId":"javierng2knus"},"content":"| `*` | user | have a way to assign specific colors to specific medical terms | better skim through the information |","lastModifiedDate":"2024-03-06"},{"lineNumber":327,"author":{"gitId":"javierng2knus"},"content":"| `*` | user | have a method for showing tooltips of features when hovered | quickly find out information about the feature without needing other references |","lastModifiedDate":"2024-03-06"},{"lineNumber":328,"author":{"gitId":"javierng2knus"},"content":"| `*` | user | have a method of giving feedback to the developers | share aspects of the product that I would like changes to |","lastModifiedDate":"2024-03-06"},{"lineNumber":329,"author":{"gitId":"javierng2knus"},"content":"| `*` | intermediate user | have an efficient way to export and backup patient data | ensure the safety and accessibility of important information |","lastModifiedDate":"2024-03-06"},{"lineNumber":330,"author":{"gitId":"javierng2knus"},"content":"| `*` | intermediate user | export selected patient\u0027s information | give the information to the doctor or the patient when needed |","lastModifiedDate":"2024-03-06"},{"lineNumber":331,"author":{"gitId":"javierng2knus"},"content":"| `*` | intermediate user | export selected medical instructions | easily share the instructions to the patient|","lastModifiedDate":"2024-03-06"},{"lineNumber":332,"author":{"gitId":"javierng2knus"},"content":"| `*` | doctor | be able to set a set of instructions for the assistants for special cases such as performing lung capacity tests for asmatics | make my assistants aware of the procedures to go through before my consultation with the patient |","lastModifiedDate":"2024-03-10"},{"lineNumber":333,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":334,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":335,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":336,"author":{"gitId":"MaYuehan"},"content":"(For all use cases below, the **System** is the `vitalconnect` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2024-03-13"},{"lineNumber":337,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":338,"author":{"gitId":"Ella-e"},"content":"**Use case: UC1 - Add a patient**","lastModifiedDate":"2024-03-04"},{"lineNumber":339,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":340,"author":{"gitId":"Ella-e"},"content":"1. User requests to add a patient by keying the patient\u0027s name and NRIC in the command.","lastModifiedDate":"2024-03-04"},{"lineNumber":341,"author":{"gitId":"MaYuehan"},"content":"2. vitalconnect adds the patient\u0027s name and NRIC.","lastModifiedDate":"2024-03-13"},{"lineNumber":342,"author":{"gitId":"-"},"content":"Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":343,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":344,"author":{"gitId":"Ella-e"},"content":"* 1a. The NRIC already exists in the system.","lastModifiedDate":"2024-03-04"},{"lineNumber":345,"author":{"gitId":"MaYuehan"},"content":" * 1a1. vitalconnect displays warning message and the existing patient\u0027s information.","lastModifiedDate":"2024-03-13"},{"lineNumber":346,"author":{"gitId":"Ella-e"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":347,"author":{"gitId":"Ella-e"},"content":"* 1b. The NRIC or name entered is invalid.","lastModifiedDate":"2024-03-04"},{"lineNumber":348,"author":{"gitId":"MaYuehan"},"content":" * 1b1. vitalconnect shows an error message.","lastModifiedDate":"2024-03-13"},{"lineNumber":349,"author":{"gitId":"Ella-e"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":350,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":351,"author":{"gitId":"Ella-e"},"content":"**Use case: UC2 - Delete a patient**","lastModifiedDate":"2024-03-04"},{"lineNumber":352,"author":{"gitId":"Ella-e"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":353,"author":{"gitId":"Ella-e"},"content":"1. User requests to delete a patient by keying the patient\u0027s name or NRIC in the command.","lastModifiedDate":"2024-03-04"},{"lineNumber":354,"author":{"gitId":"MaYuehan"},"content":"2. vitalconnect deletes the patient from database.","lastModifiedDate":"2024-03-13"},{"lineNumber":355,"author":{"gitId":"Ella-e"},"content":"Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":356,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":357,"author":{"gitId":"Ella-e"},"content":"* 1a. The patient doesn\u0027t exist in the system.","lastModifiedDate":"2024-03-04"},{"lineNumber":358,"author":{"gitId":"MaYuehan"},"content":" * 1a1. vitalconnect displays an error message.","lastModifiedDate":"2024-03-13"},{"lineNumber":359,"author":{"gitId":"Ella-e"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":360,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":361,"author":{"gitId":"Ella-e"},"content":"**Use case: UC3 - Add an appointment**","lastModifiedDate":"2024-03-04"},{"lineNumber":362,"author":{"gitId":"Ella-e"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":363,"author":{"gitId":"Ella-e"},"content":"1. User requests to add an appointment for a patient.","lastModifiedDate":"2024-03-04"},{"lineNumber":364,"author":{"gitId":"MaYuehan"},"content":"2. vitalconnect add the appointment to the database under this patient\u0027s NRIC.","lastModifiedDate":"2024-03-13"},{"lineNumber":365,"author":{"gitId":"Ella-e"},"content":"Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":366,"author":{"gitId":"Ella-e"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":367,"author":{"gitId":"Ella-e"},"content":"* 1a. Critical information (time and doctor) missing in the appointment.","lastModifiedDate":"2024-03-04"},{"lineNumber":368,"author":{"gitId":"MaYuehan"},"content":" * 1a1. vitalconnect displays a warning message.","lastModifiedDate":"2024-03-13"},{"lineNumber":369,"author":{"gitId":"Ella-e"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":370,"author":{"gitId":"Ella-e"},"content":"* 1b. The assigned patient doesn\u0027t exist in the database.","lastModifiedDate":"2024-03-04"},{"lineNumber":371,"author":{"gitId":"MaYuehan"},"content":" * 1b1. vitalconnect displays a warning message.","lastModifiedDate":"2024-03-13"},{"lineNumber":372,"author":{"gitId":"Ella-e"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":373,"author":{"gitId":"Ella-e"},"content":"* 1c. The appointment time crashes with existing time.","lastModifiedDate":"2024-03-04"},{"lineNumber":374,"author":{"gitId":"MaYuehan"},"content":" * 1c1. vitalconnect displays a warning message.","lastModifiedDate":"2024-03-13"},{"lineNumber":375,"author":{"gitId":"MaYuehan"},"content":" * 1c1. vitalconnect displays the appointment with crashing time.","lastModifiedDate":"2024-03-13"},{"lineNumber":376,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":377,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":378,"author":{"gitId":"Ella-e"},"content":"**Use case: UC4 - Delete an appointment**","lastModifiedDate":"2024-03-04"},{"lineNumber":379,"author":{"gitId":"Ella-e"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":380,"author":{"gitId":"Ella-e"},"content":"1. User requests to delete an appointment for a patient.","lastModifiedDate":"2024-03-04"},{"lineNumber":381,"author":{"gitId":"MaYuehan"},"content":"2. vitalconnect removes the appointment from the database.","lastModifiedDate":"2024-03-13"},{"lineNumber":382,"author":{"gitId":"Ella-e"},"content":"Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":383,"author":{"gitId":"Ella-e"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":384,"author":{"gitId":"Ella-e"},"content":"* 1a. The assigned patient or the appointment doesn\u0027t exist in the database.","lastModifiedDate":"2024-03-04"},{"lineNumber":385,"author":{"gitId":"MaYuehan"},"content":" * 1a1. vitalconnect displays a warning message.","lastModifiedDate":"2024-03-13"},{"lineNumber":386,"author":{"gitId":"Ella-e"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":387,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":388,"author":{"gitId":"Ella-e"},"content":"**Use case: UC5 - Modify an appointment**","lastModifiedDate":"2024-03-04"},{"lineNumber":389,"author":{"gitId":"Ella-e"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":390,"author":{"gitId":"Ella-e"},"content":"1. User requests to modify an appointment for a patient by keying the appointment\u0027s id.","lastModifiedDate":"2024-03-04"},{"lineNumber":391,"author":{"gitId":"MaYuehan"},"content":"2. vitalconnect displays the detail of the appointment to be modified.","lastModifiedDate":"2024-03-13"},{"lineNumber":392,"author":{"gitId":"Ella-e"},"content":"3. User specify which field to be modified and enters the new information.","lastModifiedDate":"2024-03-04"},{"lineNumber":393,"author":{"gitId":"MaYuehan"},"content":"4. vitalconnect saves the new appointment information.","lastModifiedDate":"2024-03-13"},{"lineNumber":394,"author":{"gitId":"MaYuehan"},"content":"5. vitalconnect displays the updated detail of the appointment modified.","lastModifiedDate":"2024-03-13"},{"lineNumber":395,"author":{"gitId":"Ella-e"},"content":"Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":396,"author":{"gitId":"Ella-e"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":397,"author":{"gitId":"Ella-e"},"content":"* 1a. The appointment refered by the id doesn\u0027t exist in the database.","lastModifiedDate":"2024-03-04"},{"lineNumber":398,"author":{"gitId":"MaYuehan"},"content":" * 1a1. vitalconnect displays an error message.","lastModifiedDate":"2024-03-13"},{"lineNumber":399,"author":{"gitId":"Ella-e"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":400,"author":{"gitId":"Ella-e"},"content":"* 1b. The id is not a valid number.","lastModifiedDate":"2024-03-04"},{"lineNumber":401,"author":{"gitId":"MaYuehan"},"content":" * 1b1. vitalconnect displays an error message.","lastModifiedDate":"2024-03-13"},{"lineNumber":402,"author":{"gitId":"Ella-e"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":403,"author":{"gitId":"Ella-e"},"content":"* 3a. The field to be modified is unrecognized.","lastModifiedDate":"2024-03-04"},{"lineNumber":404,"author":{"gitId":"MaYuehan"},"content":" * 3a1. vitalconnect displays an error message.","lastModifiedDate":"2024-03-13"},{"lineNumber":405,"author":{"gitId":"MaYuehan"},"content":" * 3a2. vitalconnect request for valid field information.","lastModifiedDate":"2024-03-13"},{"lineNumber":406,"author":{"gitId":"Ella-e"},"content":" * 3a3. User enters new field information.","lastModifiedDate":"2024-03-04"},{"lineNumber":407,"author":{"gitId":"Ella-e"},"content":" Steps 3a1-3a3 are repeated until the data entered are correct.","lastModifiedDate":"2024-03-04"},{"lineNumber":408,"author":{"gitId":"Ella-e"},"content":" Use case resumes from step 4.","lastModifiedDate":"2024-03-04"},{"lineNumber":409,"author":{"gitId":"Ella-e"},"content":"* 3b. The new information is in invalid form or contains invalid character.","lastModifiedDate":"2024-03-04"},{"lineNumber":410,"author":{"gitId":"MaYuehan"},"content":" * 3b1. vitalconnect displays an error message.","lastModifiedDate":"2024-03-13"},{"lineNumber":411,"author":{"gitId":"MaYuehan"},"content":" * 3b2. vitalconnect request for valid data entry.","lastModifiedDate":"2024-03-13"},{"lineNumber":412,"author":{"gitId":"Ella-e"},"content":" * 3b3. User enters new field information.","lastModifiedDate":"2024-03-04"},{"lineNumber":413,"author":{"gitId":"Ella-e"},"content":" Steps 3b1-3b3 are repeated until the data entered are valid.","lastModifiedDate":"2024-03-04"},{"lineNumber":414,"author":{"gitId":"Ella-e"},"content":" Use case resumes from step 4.","lastModifiedDate":"2024-03-04"},{"lineNumber":415,"author":{"gitId":"Ella-e"},"content":"* 3c. The appointment time crashes with existing time.","lastModifiedDate":"2024-03-04"},{"lineNumber":416,"author":{"gitId":"MaYuehan"},"content":" * 3c1. vitalconnect displays an error message.","lastModifiedDate":"2024-03-13"},{"lineNumber":417,"author":{"gitId":"MaYuehan"},"content":" * 3c2. vitalconnect displays the appointment with crashing time.","lastModifiedDate":"2024-03-13"},{"lineNumber":418,"author":{"gitId":"MaYuehan"},"content":" * 3c3. vitalconnect request for valid data entry.","lastModifiedDate":"2024-03-13"},{"lineNumber":419,"author":{"gitId":"Ella-e"},"content":" * 3c4. User enters new field information.","lastModifiedDate":"2024-03-04"},{"lineNumber":420,"author":{"gitId":"Ella-e"},"content":" Steps 3c1-3c4 are repeated until the time doesn\u0027t crash.","lastModifiedDate":"2024-03-04"},{"lineNumber":421,"author":{"gitId":"Ella-e"},"content":" Use case resumes from step 4.","lastModifiedDate":"2024-03-04"},{"lineNumber":422,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":423,"author":{"gitId":"javierng2knus"},"content":"**Use case: UC6 - Add specific information for a patient**","lastModifiedDate":"2024-03-06"},{"lineNumber":424,"author":{"gitId":"Ella-e"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":425,"author":{"gitId":"javierng2knus"},"content":"1. User requests to add specific information for a patient.","lastModifiedDate":"2024-03-06"},{"lineNumber":426,"author":{"gitId":"MaYuehan"},"content":"2. vitalconnect save the specific information to the database.","lastModifiedDate":"2024-03-13"},{"lineNumber":427,"author":{"gitId":"Ella-e"},"content":"Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":428,"author":{"gitId":"Ella-e"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":429,"author":{"gitId":"Ella-e"},"content":"* 1a. The patient doesn\u0027t exist in the database.","lastModifiedDate":"2024-03-04"},{"lineNumber":430,"author":{"gitId":"MaYuehan"},"content":" * 1a1. vitalconnect displays a warning message.","lastModifiedDate":"2024-03-13"},{"lineNumber":431,"author":{"gitId":"Ella-e"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":432,"author":{"gitId":"javierng2knus"},"content":"* 1b. The information is invalid.","lastModifiedDate":"2024-03-06"},{"lineNumber":433,"author":{"gitId":"MaYuehan"},"content":" * 1b1. vitalconnect displays a warning message.","lastModifiedDate":"2024-03-13"},{"lineNumber":434,"author":{"gitId":"Ella-e"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":435,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":436,"author":{"gitId":"javierng2knus"},"content":"**Use case: UC7 - Delete specific information**","lastModifiedDate":"2024-03-06"},{"lineNumber":437,"author":{"gitId":"Ella-e"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":438,"author":{"gitId":"javierng2knus"},"content":"1. User requests to delete specific information for a patient.","lastModifiedDate":"2024-03-06"},{"lineNumber":439,"author":{"gitId":"MaYuehan"},"content":"2. vitalconnect remove the specific information to the database.","lastModifiedDate":"2024-03-13"},{"lineNumber":440,"author":{"gitId":"Ella-e"},"content":"Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":441,"author":{"gitId":"Ella-e"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":442,"author":{"gitId":"javierng2knus"},"content":"* 1a. The patient or specific information doesn\u0027t exist in the database.","lastModifiedDate":"2024-03-06"},{"lineNumber":443,"author":{"gitId":"MaYuehan"},"content":" * 1a1. vitalconnect displays a warning message.","lastModifiedDate":"2024-03-13"},{"lineNumber":444,"author":{"gitId":"Ella-e"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":445,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":446,"author":{"gitId":"javierng2knus"},"content":"**Use case: UC8 - Modify specific information**","lastModifiedDate":"2024-03-06"},{"lineNumber":447,"author":{"gitId":"Ella-e"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":448,"author":{"gitId":"javierng2knus"},"content":"1. User requests to modify specific information for a patient.","lastModifiedDate":"2024-03-06"},{"lineNumber":449,"author":{"gitId":"MaYuehan"},"content":"2. vitalconnect displays the updated specific information of the patient.","lastModifiedDate":"2024-03-13"},{"lineNumber":450,"author":{"gitId":"Ella-e"},"content":"Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":451,"author":{"gitId":"Ella-e"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":452,"author":{"gitId":"javierng2knus"},"content":"* 1a. The patient or specific information doesn\u0027t exist in the database.","lastModifiedDate":"2024-03-06"},{"lineNumber":453,"author":{"gitId":"MaYuehan"},"content":" * 1a1. vitalconnect displays a warning message.","lastModifiedDate":"2024-03-13"},{"lineNumber":454,"author":{"gitId":"Ella-e"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":455,"author":{"gitId":"javierng2knus"},"content":"* 1b. The specific information is invalid.","lastModifiedDate":"2024-03-06"},{"lineNumber":456,"author":{"gitId":"MaYuehan"},"content":" * 1b1. vitalconnect displays a warning message.","lastModifiedDate":"2024-03-13"},{"lineNumber":457,"author":{"gitId":"Ella-e"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":458,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":459,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":460,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":461,"author":{"gitId":"Ella-e"},"content":"# Technical Requirements","lastModifiedDate":"2024-03-04"},{"lineNumber":462,"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":463,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":464,"author":{"gitId":"Ella-e"},"content":"# Performance Requirements","lastModifiedDate":"2024-03-04"},{"lineNumber":465,"author":{"gitId":"Ella-e"},"content":"1. Should be able to hold up to 100 patients with 1000 appointments without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2024-03-04"},{"lineNumber":466,"author":{"gitId":"Ella-e"},"content":"2. The system should respond within 3 seconds.","lastModifiedDate":"2024-03-04"},{"lineNumber":467,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":468,"author":{"gitId":"Ella-e"},"content":"# Quality Requirements","lastModifiedDate":"2024-03-04"},{"lineNumber":469,"author":{"gitId":"Ella-e"},"content":"1. 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":"2024-03-04"},{"lineNumber":470,"author":{"gitId":"Ella-e"},"content":"2. System should be robust for any form of data file crashes and invalid user input.","lastModifiedDate":"2024-03-04"},{"lineNumber":471,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":472,"author":{"gitId":"Ella-e"},"content":"# Scope","lastModifiedDate":"2024-03-04"},{"lineNumber":473,"author":{"gitId":"Ella-e"},"content":"1. The product will \u003cstrong\u003eNOT\u003c/strong\u003e enforce any form of protection of the generated data file containing patients\u0027 information. The organization should be responsible for ensuring the safety of their patient\u0027s data.","lastModifiedDate":"2024-03-04"},{"lineNumber":474,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":475,"author":{"gitId":"Ella-e"},"content":"# Process Requirements","lastModifiedDate":"2024-03-04"},{"lineNumber":476,"author":{"gitId":"Ella-e"},"content":"1. The project is expected to grow in breadth-first iterative process.","lastModifiedDate":"2024-03-04"},{"lineNumber":477,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":478,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":479,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":480,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09"},{"lineNumber":481,"author":{"gitId":"SeaHogs"},"content":"* **CLI**: Acronym for Command Line Interface, a text-based interface where users interact with the application by typing commands.","lastModifiedDate":"2024-03-06"},{"lineNumber":482,"author":{"gitId":"MaYuehan"},"content":"* **vitalconnect**: The system being described, representing the medical management application.","lastModifiedDate":"2024-03-13"},{"lineNumber":483,"author":{"gitId":"MaYuehan"},"content":"* **Use Case**: A specific scenario or situation in which a user interacts with the vitalconnect system to achieve a specific goal.","lastModifiedDate":"2024-03-13"},{"lineNumber":484,"author":{"gitId":"SeaHogs"},"content":"* **MSS (Main Success Scenario)**: The primary sequence of steps in a use case that represents the successful accomplishment of the user\u0027s goal.","lastModifiedDate":"2024-03-06"},{"lineNumber":485,"author":{"gitId":"SeaHogs"},"content":"* **Extensions**: Additional scenarios that may occur during the execution of a use case, usually describing alternative paths or error-handling situations.","lastModifiedDate":"2024-03-06"},{"lineNumber":486,"author":{"gitId":"SeaHogs"},"content":"* **NRIC**: National Registration Identity Card, a unique identification number used in some countries.","lastModifiedDate":"2024-03-06"},{"lineNumber":487,"author":{"gitId":"SeaHogs"},"content":"* **Database**: A structured set of data stored electronically, in this context, referring to the storage system for patient and appointment information.","lastModifiedDate":"2024-03-06"},{"lineNumber":488,"author":{"gitId":"MaYuehan"},"content":"* **Appointment**: A scheduled meeting or arrangement, often referring to a scheduled medical consultation in the context of vitalconnect.","lastModifiedDate":"2024-03-13"},{"lineNumber":489,"author":{"gitId":"SeaHogs"},"content":"* **Field**: In the context of modifying an appointment, a specific piece of information within the appointment details that the user can choose to modify (e.g., time, doctor).","lastModifiedDate":"2024-03-06"},{"lineNumber":490,"author":{"gitId":"SeaHogs"},"content":"* **ID (Identification Number)**: A unique identifier associated with a specific appointment, used to distinguish and reference individual appointments.","lastModifiedDate":"2024-03-06"},{"lineNumber":491,"author":{"gitId":"MaYuehan"},"content":"* **Warning Message**: An alert displayed by the vitalconnect system to notify the user of a potential issue or discrepancy.","lastModifiedDate":"2024-03-13"},{"lineNumber":492,"author":{"gitId":"MaYuehan"},"content":"* **Error Message**: A notification displayed by the vitalconnect system to inform the user about a critical issue or mistake.","lastModifiedDate":"2024-03-13"},{"lineNumber":493,"author":{"gitId":"SeaHogs"},"content":"* **Crashing Time**: A situation where the proposed time for an appointment conflicts with an existing appointment time in the system.","lastModifiedDate":"2024-03-06"},{"lineNumber":494,"author":{"gitId":"SeaHogs"},"content":"* **Invalid Data Entry**: Information entered by the user that does not meet the required format or criteria.","lastModifiedDate":"2024-03-06"},{"lineNumber":495,"author":{"gitId":"SeaHogs"},"content":"* **Valid Data Entry**: Information entered by the user that meets the required format or criteria.","lastModifiedDate":"2024-03-06"},{"lineNumber":496,"author":{"gitId":"javierng2knus"},"content":"* **Tooltip**: A common graphical user interface element in which, when hovering over a screen element or component, a text box displays information about that element.","lastModifiedDate":"2024-03-06"},{"lineNumber":497,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":498,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":499,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":500,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":501,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":502,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":503,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":504,"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":505,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":506,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":507,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":508,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":509,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":510,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":511,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":512,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":513,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":514,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":515,"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":516,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":517,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":518,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":519,"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":520,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":521,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":522,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":523,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":524,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":525,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":526,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":527,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":528,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":529,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":530,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":531,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":532,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":533,"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":534,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":535,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":536,"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":537,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":538,"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":539,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":540,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":541,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":542,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":543,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":544,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":545,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":546,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":547,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":548,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":549,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"javierng2knus":52,"MaYuehan":40,"Ella-e":92,"-":355,"SeaHogs":10}},{"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":"MaYuehan"},"content":" 1. Run the `vitalconnect.Main` and try a few commands.","lastModifiedDate":"2024-03-13"},{"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":{"MaYuehan":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":"MaYuehan"},"content":" e.g. `vitalconnect.commons.StringUtilTest`","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"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":34,"author":{"gitId":"MaYuehan"},"content":" e.g. `vitalconnect.storage.StorageManagerTest`","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"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":36,"author":{"gitId":"MaYuehan"},"content":" e.g. `vitalconnect.logic.LogicManagerTest`","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"MaYuehan":3,"-":33}},{"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":"-"},"content":"AddressBook Level 3 (AB3) is a **desktop app for managing contacts, 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, AB3 can get your contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2020-05-23"},{"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":"-"},"content":"1. Download the latest `addressbook.jar` from [here](https://github.com/se-edu/addressbook-level3/releases).","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your AddressBook.","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar addressbook.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2023-01-01"},{"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":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"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":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2023-01-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01"},{"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":"-"},"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":"-"},"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":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":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23"},{"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":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"### Adding a person: `add`","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"Adds a person to the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​`","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Tip:**","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"SeaHogs"},"content":"A person can have any number of allergyTags (including 0)","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"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":87,"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":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"### Listing all persons : `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"Shows a list of all persons in the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"### Editing a person : `edit`","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"Edits an existing person in the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"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":102,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"SeaHogs"},"content":"* When editing allergyTags, the existing allergyTags of the person will be removed i.e adding of allergyTags is not cumulative.","lastModifiedDate":"2024-03-18"},{"lineNumber":105,"author":{"gitId":"SeaHogs"},"content":"* You can remove all the person’s allergyTags by typing `t/` without","lastModifiedDate":"2024-03-18"},{"lineNumber":106,"author":{"gitId":"SeaHogs"},"content":" specifying any allergyTags after it.","lastModifiedDate":"2024-03-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"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":110,"author":{"gitId":"SeaHogs"},"content":"* `edit 2 n/Betsy Crower t/` Edits the name of the 2nd person to be `Betsy Crower` and clears all existing allergyTags.","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"### Locating persons by name: `find`","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"Finds persons whose names contain any of the given keywords.","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":"* `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":"Deletes the specified person from the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"* Deletes the person at the specified `INDEX`.","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"* `list` followed by `delete 2` deletes the 2nd person in the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"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":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":"Clears all entries from the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"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":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":162,"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":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":164,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e:exclamation: **Caution:**","lastModifiedDate":"2021-02-04"},{"lineNumber":165,"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.\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":166,"author":{"gitId":"-"},"content":"Furthermore, certain edits can cause the AddressBook to behave in unexpected ways (e.g., if a value entered is outside of the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.","lastModifiedDate":"2024-02-09"},{"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":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04"},{"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":"## 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":"-"},"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":193,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"**Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3`","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"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":196,"author":{"gitId":"-"},"content":"**Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake`","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":"**List** | `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"-":193,"SeaHogs":5}},{"path":"docs/team/ella-e.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"---","lastModifiedDate":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"layout: page","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"title: Mu Zhaoyu\u0027s Project Portfolio Page","lastModifiedDate":"2024-03-04"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"---","lastModifiedDate":"2024-03-04"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"## Project: vitalconnect","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":"This product is doctors or any healthcare workers that have to keep track of a lot ","lastModifiedDate":"2024-03-04"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":"of patient information and requires the information at a fast pace, ","lastModifiedDate":"2024-03-04"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":"thus preferring to have a simple UI such as a CLI instead of a complex GUI, ","lastModifiedDate":"2024-03-04"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":"with the added benefit of having typed user commands for an even faster retrieval of information.","lastModifiedDate":"2024-03-04"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-04"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":"### **New Feature**: ","lastModifiedDate":"2024-03-04"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":"1. __Create an appointment__","lastModifiedDate":"2024-03-04"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":"* What it does: allows the user to create an appointment for a patient with the time and date.","lastModifiedDate":"2024-03-04"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":"* Justification: This feature improves the product significantly as it is the fundamental functions for the project.","lastModifiedDate":"2024-03-04"},{"lineNumber":21,"author":{"gitId":"Ella-e"},"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":"2024-03-04"},{"lineNumber":22,"author":{"gitId":"Ella-e"},"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":"2024-03-04"},{"lineNumber":23,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":24,"author":{"gitId":"Ella-e"},"content":"2. __Delete an appointment__","lastModifiedDate":"2024-03-04"},{"lineNumber":25,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":26,"author":{"gitId":"Ella-e"},"content":"* What it does: allows the user to delete an appointment by specifying the appointment index and the patient\u0027s name.","lastModifiedDate":"2024-03-04"},{"lineNumber":27,"author":{"gitId":"Ella-e"},"content":"* Justification: This feature improves the product significantly as it is the fundamental functions for the project.","lastModifiedDate":"2024-03-04"},{"lineNumber":28,"author":{"gitId":"Ella-e"},"content":"* Credits:","lastModifiedDate":"2024-03-04"},{"lineNumber":29,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":30,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":31,"author":{"gitId":"Ella-e"},"content":"3. __List appointments__","lastModifiedDate":"2024-03-04"},{"lineNumber":32,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":33,"author":{"gitId":"Ella-e"},"content":"* What it does: allows the user to list out all the upcoming appointments that ordering by time.","lastModifiedDate":"2024-03-04"},{"lineNumber":34,"author":{"gitId":"Ella-e"},"content":"* Justification: This feature improves the product significantly as it is the fundamental functions for the project.","lastModifiedDate":"2024-03-04"},{"lineNumber":35,"author":{"gitId":"Ella-e"},"content":"* Credits:","lastModifiedDate":"2024-03-04"},{"lineNumber":36,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":37,"author":{"gitId":"Ella-e"},"content":"### **Documentation**:","lastModifiedDate":"2024-03-04"},{"lineNumber":38,"author":{"gitId":"Ella-e"},"content":"User Guide:","lastModifiedDate":"2024-03-04"},{"lineNumber":39,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":40,"author":{"gitId":"Ella-e"},"content":"* Added documentation for the features `Create Appointments`, `Delete Appointments` and `List Appointments` [\\#72]()","lastModifiedDate":"2024-03-04"},{"lineNumber":41,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":42,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"MaYuehan":1,"Ella-e":41}},{"path":"docs/team/mayuehan.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"---","lastModifiedDate":"2024-02-25"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"layout: page","lastModifiedDate":"2024-02-25"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"title: Ma Yuehan\u0027s Project Portfolio Page","lastModifiedDate":"2024-02-25"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"---","lastModifiedDate":"2024-02-25"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"## Project: vitalconnect","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"This product is doctors or any healthcare workers that have to keep track of a lot ","lastModifiedDate":"2024-02-25"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"of patient information and requires the information at a fast pace, ","lastModifiedDate":"2024-02-25"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"thus preferring to have a simple UI such as a CLI instead of a complex GUI, ","lastModifiedDate":"2024-02-25"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"with the added benefit of having typed user commands for an even faster retrieval of information.","lastModifiedDate":"2024-02-25"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-02-25"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":"### **New Feature**: ","lastModifiedDate":"2024-02-25"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":"1. __Create an appointment__","lastModifiedDate":"2024-02-25"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":"* What it does: allows the user to create an appointment for a patient with the time and date.","lastModifiedDate":"2024-02-25"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":"* Justification: This feature improves the product significantly as it is the fundamental functions for the project.","lastModifiedDate":"2024-02-25"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"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":"2024-02-25"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"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":"2024-02-25"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":"2. __Delete an appointment__","lastModifiedDate":"2024-02-25"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":"* What it does: allows the user to delete an appointment by specifying the appointment index and the patient\u0027s name.","lastModifiedDate":"2024-02-25"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":"* Justification: This feature improves the product significantly as it is the fundamental functions for the project.","lastModifiedDate":"2024-02-25"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":"* Credits:","lastModifiedDate":"2024-02-25"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":"3. __List appointments__","lastModifiedDate":"2024-02-25"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":"* What it does: allows the user to list out all the upcoming appointments that ordering by time.","lastModifiedDate":"2024-02-25"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":"* Justification: This feature improves the product significantly as it is the fundamental functions for the project.","lastModifiedDate":"2024-02-25"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":"* Credits:","lastModifiedDate":"2024-02-25"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":"### **Documentation**:","lastModifiedDate":"2024-02-25"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":"User Guide:","lastModifiedDate":"2024-02-25"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":"* Added documentation for the features `Create Appointments`, `Delete Appointments` and `List Appointments` [\\#72]()","lastModifiedDate":"2024-02-25"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"}],"authorContributionMap":{"MaYuehan":42}},{"path":"docs/team/seahogs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"---","lastModifiedDate":"2024-03-06"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"layout: page","lastModifiedDate":"2024-03-06"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"title: Mu Zhaoyu\u0027s Project Portfolio Page","lastModifiedDate":"2024-03-06"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"---","lastModifiedDate":"2024-03-06"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"## Project: vitalconnect","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":"This product is doctors or any healthcare workers that have to keep track of a lot","lastModifiedDate":"2024-03-06"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":"of patient information and requires the information at a fast pace,","lastModifiedDate":"2024-03-06"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":"thus preferring to have a simple UI such as a CLI instead of a complex GUI,","lastModifiedDate":"2024-03-06"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":"with the added benefit of having typed user commands for an even faster retrieval of information.","lastModifiedDate":"2024-03-06"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-06"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":"### **New Feature**:","lastModifiedDate":"2024-03-06"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":"1. __Create an appointment__","lastModifiedDate":"2024-03-06"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":"* What it does: allows the user to create an appointment for a patient with the time and date.","lastModifiedDate":"2024-03-06"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":"* Justification: This feature improves the product significantly as it is the fundamental functions for the project.","lastModifiedDate":"2024-03-06"},{"lineNumber":21,"author":{"gitId":"Ella-e"},"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":"2024-03-06"},{"lineNumber":22,"author":{"gitId":"Ella-e"},"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":"2024-03-06"},{"lineNumber":23,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":24,"author":{"gitId":"Ella-e"},"content":"2. __Delete an appointment__","lastModifiedDate":"2024-03-06"},{"lineNumber":25,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":26,"author":{"gitId":"Ella-e"},"content":"* What it does: allows the user to delete an appointment by specifying the appointment index and the patient\u0027s name.","lastModifiedDate":"2024-03-06"},{"lineNumber":27,"author":{"gitId":"Ella-e"},"content":"* Justification: This feature improves the product significantly as it is the fundamental functions for the project.","lastModifiedDate":"2024-03-06"},{"lineNumber":28,"author":{"gitId":"Ella-e"},"content":"* Credits:","lastModifiedDate":"2024-03-06"},{"lineNumber":29,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":30,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":31,"author":{"gitId":"Ella-e"},"content":"3. __List appointments__","lastModifiedDate":"2024-03-06"},{"lineNumber":32,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":33,"author":{"gitId":"Ella-e"},"content":"* What it does: allows the user to list out all the upcoming appointments that ordering by time.","lastModifiedDate":"2024-03-06"},{"lineNumber":34,"author":{"gitId":"Ella-e"},"content":"* Justification: This feature improves the product significantly as it is the fundamental functions for the project.","lastModifiedDate":"2024-03-06"},{"lineNumber":35,"author":{"gitId":"Ella-e"},"content":"* Credits:","lastModifiedDate":"2024-03-06"},{"lineNumber":36,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":37,"author":{"gitId":"Ella-e"},"content":"### **Documentation**:","lastModifiedDate":"2024-03-06"},{"lineNumber":38,"author":{"gitId":"Ella-e"},"content":"User Guide:","lastModifiedDate":"2024-03-06"},{"lineNumber":39,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":40,"author":{"gitId":"Ella-e"},"content":"* Added documentation for the features `Create Appointments`, `Delete Appointments` and `List Appointments` [\\#72]()","lastModifiedDate":"2024-03-06"},{"lineNumber":41,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":42,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"MaYuehan":1,"Ella-e":41}},{"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":"MaYuehan"},"content":"package vitalconnect.logic.commands;","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":30,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Changes the remark of an existing person in the address book.","lastModifiedDate":"2020-07-29"},{"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":"-"},"content":" + \": Edits the remark of the person identified \"","lastModifiedDate":"2021-08-01"},{"lineNumber":69,"author":{"gitId":"-"},"content":" + \"by the index number used in the last person listing. \"","lastModifiedDate":"2020-07-29"},{"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":"MaYuehan"},"content":"import static vitalconnect.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":" * @param index of the person in the filtered person list to edit the remark","lastModifiedDate":"2020-07-29"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * @param remark of the person to be updated to","lastModifiedDate":"2020-07-29"},{"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":"MaYuehan"},"content":"Create a `RemarkCommandParser` class in the `vitalconnect.logic.parser` package. The class must extend the `Parser` interface.","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":" * object that maps prefixes to their respective argument values. Only the","lastModifiedDate":"2020-07-29"},{"lineNumber":155,"author":{"gitId":"-"},"content":" * given prefixes will be recognized in the arguments string.","lastModifiedDate":"2020-07-29"},{"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":"-"},"content":" * {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2020-07-29"},{"lineNumber":159,"author":{"gitId":"-"},"content":" * @param prefixes Prefixes to tokenize the arguments string with","lastModifiedDate":"2020-07-29"},{"lineNumber":160,"author":{"gitId":"-"},"content":" * @return ArgumentMultimap object that maps prefixes to their","lastModifiedDate":"2020-07-29"},{"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":"-"},"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":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":"-"},"content":" * Returns the last value of {@code prefix}.","lastModifiedDate":"2020-07-29"},{"lineNumber":172,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":173,"author":{"gitId":"-"},"content":"public Optional\u003cString\u003e getValue(Prefix prefix) {","lastModifiedDate":"2020-07-29"},{"lineNumber":174,"author":{"gitId":"-"},"content":" List\u003cString\u003e values \u003d getAllValues(prefix);","lastModifiedDate":"2020-07-29"},{"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":"-"},"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":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":"MaYuehan"},"content":"Create a new `Remark` in `vitalconnect.model.person`. Since a `Remark` is a field that is similar to `Address`, we can reuse a significant bit of code.","lastModifiedDate":"2024-03-13"},{"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":"-"},"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":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":243,"author":{"gitId":"MaYuehan"},"content":"Simply add the following to [`vitalconnect.ui.PersonCard`](https://github.com/se-edu/addressbook-level3/commit/850b78879582f38accb05dd20c245963c65ea599#diff-639834f1e05afe2276a86372adf0fe5f69314642c2d93cfa543d614ce5a76688).","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":":exclamation: You must delete AddressBook’s storage file located at `/data/addressbook.json` before running it! Not doing so will cause AddressBook to default to an empty address book!","lastModifiedDate":"2020-07-29"},{"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":"-"},"content":"public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2020-07-29"},{"lineNumber":313,"author":{"gitId":"-"},"content":" //...","lastModifiedDate":"2020-07-29"},{"lineNumber":314,"author":{"gitId":"-"},"content":" remark.setText(person.getRemark().value);","lastModifiedDate":"2020-07-29"},{"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":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2020-07-29"},{"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":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2020-07-29"},{"lineNumber":345,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new Person(","lastModifiedDate":"2021-08-01"},{"lineNumber":346,"author":{"gitId":"-"},"content":" personToEdit.getName(), personToEdit.getPhone(), personToEdit.getEmail(),","lastModifiedDate":"2021-08-01"},{"lineNumber":347,"author":{"gitId":"-"},"content":" personToEdit.getAddress(), remark, personToEdit.getTags());","lastModifiedDate":"2020-07-29"},{"lineNumber":348,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":349,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2020-07-29"},{"lineNumber":350,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2020-07-29"},{"lineNumber":351,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":352,"author":{"gitId":"-"},"content":" return new CommandResult(generateSuccessMessage(editedPerson));","lastModifiedDate":"2020-07-29"},{"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":"-"},"content":" * {@code personToEdit}.","lastModifiedDate":"2020-07-29"},{"lineNumber":359,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":360,"author":{"gitId":"-"},"content":" private String generateSuccessMessage(Person personToEdit) {","lastModifiedDate":"2020-07-29"},{"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":"-"},"content":" return String.format(message, personToEdit);","lastModifiedDate":"2020-07-29"},{"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":{"MaYuehan":6,"-":393}},{"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":"MaYuehan"},"content":"The `address` field in `Person` is actually an instance of the `vitalconnect.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":"2024-03-13"},{"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":"-"},"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":"-"},"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":{"MaYuehan":1,"-":111}},{"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":"MaYuehan"},"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 `vitalconnect.logic.Logic`.","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"A quick look at the `vitalconnect.logic.Logic` (an extract given below) confirms that this indeed might be what we’re looking for.","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2020-05-23"},{"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":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, editedPerson));","lastModifiedDate":"2020-05-23"},{"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":"-"},"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":205,"author":{"gitId":"-"},"content":" * it uses the `updateFilteredPersonList` method to ask the `Model` to populate the \u0027filtered list\u0027 with _all_ persons.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":206,"author":{"gitId":"-"},"content":" FYI, The \u0027filtered list\u0027 is the list of persons 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 persons so that the user can see the edited person along with all other persons. If this was a `find` command, we would be setting that list to contain the search results instead.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":207,"author":{"gitId":"-"},"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 persons is being tracked.","lastModifiedDate":"2021-07-31"},{"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":"-"},"content":" persons.addAll(","lastModifiedDate":"2020-05-23"},{"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":{"MaYuehan":2,"-":299}},{"path":"src/main/java/vitalconnect/AppParameters.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.commons.core.LogsCenter;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.util.FileUtil;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-13"},{"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":{"MaYuehan":4,"-":69}},{"path":"src/main/java/vitalconnect/Main.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.commons.core.LogsCenter;","lastModifiedDate":"2024-03-13"},{"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":{"MaYuehan":2,"-":39}},{"path":"src/main/java/vitalconnect/MainApp.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import java.util.List;","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.application.Application;","lastModifiedDate":"2016-08-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-26"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.core.Config;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.core.LogsCenter;","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.core.Version;","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.util.ConfigUtil;","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.util.StringUtil;","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.Logic;","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.LogicManager;","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Appointment;","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Clinic;","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.ModelManager;","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.ReadOnlyClinic;","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.UserPrefs;","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.util.SampleDataUtil;","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.storage.AppointmentStorage;","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.storage.ClinicStorage;","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.storage.JsonAppointmentStorage;","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.storage.JsonClinicStorage;","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.storage.JsonUserPrefsStorage;","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.storage.Storage;","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.storage.StorageManager;","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.storage.UserPrefsStorage;","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.ui.Ui;","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.ui.UiManager;","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Runs the application.","lastModifiedDate":"2019-02-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":"public class MainApp extends Application {","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final Version VERSION \u003d new Version(0, 2, 2, true);","lastModifiedDate":"2023-08-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(MainApp.class);","lastModifiedDate":"2017-04-01"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":49,"author":{"gitId":"-"},"content":" protected Ui ui;","lastModifiedDate":"2016-09-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" protected Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":" protected Storage storage;","lastModifiedDate":"2016-09-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":" protected Model model;","lastModifiedDate":"2016-09-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":" protected Config config;","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":56,"author":{"gitId":"MaYuehan"},"content":" * Initializes the application\u0027s primary components.","lastModifiedDate":"2024-03-23"},{"lineNumber":57,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void init() throws Exception {","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"javierng2knus"},"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 Clinic ]\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"-"},"content":" super.init();","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" AppParameters appParameters \u003d AppParameters.parse(getParameters());","lastModifiedDate":"2018-04-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" config \u003d initConfig(appParameters.getConfigPath());","lastModifiedDate":"2018-04-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" initLogging(config);","lastModifiedDate":"2023-07-29"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":67,"author":{"gitId":"-"},"content":" UserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(config.getUserPrefsFilePath());","lastModifiedDate":"2017-02-25"},{"lineNumber":68,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d initPrefs(userPrefsStorage);","lastModifiedDate":"2018-12-06"},{"lineNumber":69,"author":{"gitId":"javierng2knus"},"content":" ClinicStorage clinicStorage \u003d new JsonClinicStorage(userPrefs.getClinicFilePath());","lastModifiedDate":"2024-03-11"},{"lineNumber":70,"author":{"gitId":"MaYuehan"},"content":" AppointmentStorage appointmentStorage \u003d new JsonAppointmentStorage(userPrefs.getAppointmentFilePath());","lastModifiedDate":"2024-03-23"},{"lineNumber":71,"author":{"gitId":"MaYuehan"},"content":" storage \u003d new StorageManager(clinicStorage, userPrefsStorage, appointmentStorage);","lastModifiedDate":"2024-03-23"},{"lineNumber":72,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":" model \u003d initModelManager(storage, userPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":" ui \u003d new UiManager(logic);","lastModifiedDate":"2018-12-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":82,"author":{"gitId":"javierng2knus"},"content":" * Returns a {@code ModelManager} with the data from {@code storage}\u0027s clinic and {@code userPrefs}. \u003cbr\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":83,"author":{"gitId":"javierng2knus"},"content":" * The data from the sample clinic will be used instead if {@code storage}\u0027s clinic is not found,","lastModifiedDate":"2024-03-11"},{"lineNumber":84,"author":{"gitId":"javierng2knus"},"content":" * or an empty clinic will be used instead if errors occur when reading {@code storage}\u0027s clinic.","lastModifiedDate":"2024-03-11"},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":86,"author":{"gitId":"-"},"content":" private Model initModelManager(Storage storage, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":87,"author":{"gitId":"javierng2knus"},"content":" logger.info(\"Using data file : \" + storage.getClinicFilePath());","lastModifiedDate":"2024-03-11"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":89,"author":{"gitId":"javierng2knus"},"content":" Optional\u003cReadOnlyClinic\u003e clinicOptional;","lastModifiedDate":"2024-03-11"},{"lineNumber":90,"author":{"gitId":"javierng2knus"},"content":" ReadOnlyClinic initialData;","lastModifiedDate":"2024-03-11"},{"lineNumber":91,"author":{"gitId":"MaYuehan"},"content":" Optional\u003cList\u003cAppointment\u003e\u003e appointmentsOptional;","lastModifiedDate":"2024-03-23"},{"lineNumber":92,"author":{"gitId":"MaYuehan"},"content":" List\u003cAppointment\u003e appointments;","lastModifiedDate":"2024-03-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":94,"author":{"gitId":"javierng2knus"},"content":" clinicOptional \u003d storage.readClinic();","lastModifiedDate":"2024-03-11"},{"lineNumber":95,"author":{"gitId":"javierng2knus"},"content":" if (!clinicOptional.isPresent()) {","lastModifiedDate":"2024-03-11"},{"lineNumber":96,"author":{"gitId":"javierng2knus"},"content":" logger.info(\"Creating a new data file \" + storage.getClinicFilePath()","lastModifiedDate":"2024-03-11"},{"lineNumber":97,"author":{"gitId":"javierng2knus"},"content":" + \" populated with a sample Clinic.\");","lastModifiedDate":"2024-03-11"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":99,"author":{"gitId":"javierng2knus"},"content":" initialData \u003d clinicOptional.orElseGet(SampleDataUtil::getSampleClinic);","lastModifiedDate":"2024-03-11"},{"lineNumber":100,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":101,"author":{"gitId":"javierng2knus"},"content":" logger.warning(\"Data file at \" + storage.getClinicFilePath() + \" could not be loaded.\"","lastModifiedDate":"2024-03-11"},{"lineNumber":102,"author":{"gitId":"javierng2knus"},"content":" + \" Will be starting with an empty Clinic.\");","lastModifiedDate":"2024-03-11"},{"lineNumber":103,"author":{"gitId":"javierng2knus"},"content":" initialData \u003d new Clinic();","lastModifiedDate":"2024-03-11"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2024-03-23"},{"lineNumber":107,"author":{"gitId":"MaYuehan"},"content":" appointmentsOptional \u003d storage.readAppointments();","lastModifiedDate":"2024-03-23"},{"lineNumber":108,"author":{"gitId":"MaYuehan"},"content":" if (!appointmentsOptional.isPresent()) {","lastModifiedDate":"2024-03-23"},{"lineNumber":109,"author":{"gitId":"MaYuehan"},"content":" logger.info(\"Appointment data file not found. Will be starting with an empty appointment list.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":111,"author":{"gitId":"MaYuehan"},"content":" appointments \u003d appointmentsOptional.orElseGet(Collections::emptyList);","lastModifiedDate":"2024-03-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2024-03-23"},{"lineNumber":113,"author":{"gitId":"MaYuehan"},"content":" logger.warning(\"Data file for appointments could not be loaded. \"","lastModifiedDate":"2024-03-23"},{"lineNumber":114,"author":{"gitId":"MaYuehan"},"content":" + \"Will be starting with an empty appointment list.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":115,"author":{"gitId":"MaYuehan"},"content":" appointments \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":118,"author":{"gitId":"MaYuehan"},"content":" return new ModelManager(initialData, userPrefs, appointments);","lastModifiedDate":"2024-03-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":121,"author":{"gitId":"-"},"content":" private void initLogging(Config config) {","lastModifiedDate":"2016-09-24"},{"lineNumber":122,"author":{"gitId":"-"},"content":" LogsCenter.init(config);","lastModifiedDate":"2016-09-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":125,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":126,"author":{"gitId":"-"},"content":" * Returns a {@code Config} using the file at {@code configFilePath}. \u003cbr\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":127,"author":{"gitId":"-"},"content":" * The default file path {@code Config#DEFAULT_CONFIG_FILE} will be used instead","lastModifiedDate":"2017-08-16"},{"lineNumber":128,"author":{"gitId":"-"},"content":" * if {@code configFilePath} is null.","lastModifiedDate":"2017-08-16"},{"lineNumber":129,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":130,"author":{"gitId":"-"},"content":" protected Config initConfig(Path configFilePath) {","lastModifiedDate":"2018-04-21"},{"lineNumber":131,"author":{"gitId":"-"},"content":" Config initializedConfig;","lastModifiedDate":"2016-09-24"},{"lineNumber":132,"author":{"gitId":"-"},"content":" Path configFilePathUsed;","lastModifiedDate":"2018-04-21"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":134,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d Config.DEFAULT_CONFIG_FILE;","lastModifiedDate":"2016-09-24"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":136,"author":{"gitId":"-"},"content":" if (configFilePath !\u003d null) {","lastModifiedDate":"2016-09-24"},{"lineNumber":137,"author":{"gitId":"-"},"content":" logger.info(\"Custom Config file specified \" + configFilePath);","lastModifiedDate":"2016-09-24"},{"lineNumber":138,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d configFilePath;","lastModifiedDate":"2016-09-24"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":" logger.info(\"Using config file : \" + configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":143,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":144,"author":{"gitId":"-"},"content":" Optional\u003cConfig\u003e configOptional \u003d ConfigUtil.readConfig(configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":145,"author":{"gitId":"-"},"content":" if (!configOptional.isPresent()) {","lastModifiedDate":"2023-01-03"},{"lineNumber":146,"author":{"gitId":"-"},"content":" logger.info(\"Creating new config file \" + configFilePathUsed);","lastModifiedDate":"2023-05-15"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03"},{"lineNumber":148,"author":{"gitId":"-"},"content":" initializedConfig \u003d configOptional.orElse(new Config());","lastModifiedDate":"2016-09-24"},{"lineNumber":149,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":150,"author":{"gitId":"-"},"content":" logger.warning(\"Config file at \" + configFilePathUsed + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":151,"author":{"gitId":"-"},"content":" + \" Using default config properties.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":152,"author":{"gitId":"-"},"content":" initializedConfig \u003d new Config();","lastModifiedDate":"2016-09-24"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":155,"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":156,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":157,"author":{"gitId":"-"},"content":" ConfigUtil.saveConfig(initializedConfig, configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":158,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":159,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":161,"author":{"gitId":"-"},"content":" return initializedConfig;","lastModifiedDate":"2016-09-24"},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":165,"author":{"gitId":"-"},"content":" * Returns a {@code UserPrefs} using the file at {@code storage}\u0027s user prefs file path,","lastModifiedDate":"2017-08-16"},{"lineNumber":166,"author":{"gitId":"-"},"content":" * or a new {@code UserPrefs} with default configuration if errors occur when","lastModifiedDate":"2017-08-16"},{"lineNumber":167,"author":{"gitId":"-"},"content":" * reading from the file.","lastModifiedDate":"2017-08-16"},{"lineNumber":168,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":169,"author":{"gitId":"-"},"content":" protected UserPrefs initPrefs(UserPrefsStorage storage) {","lastModifiedDate":"2017-02-25"},{"lineNumber":170,"author":{"gitId":"-"},"content":" Path prefsFilePath \u003d storage.getUserPrefsFilePath();","lastModifiedDate":"2018-04-21"},{"lineNumber":171,"author":{"gitId":"-"},"content":" logger.info(\"Using preference file : \" + prefsFilePath);","lastModifiedDate":"2023-05-15"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":173,"author":{"gitId":"-"},"content":" UserPrefs initializedPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":174,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":175,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e prefsOptional \u003d storage.readUserPrefs();","lastModifiedDate":"2016-09-25"},{"lineNumber":176,"author":{"gitId":"-"},"content":" if (!prefsOptional.isPresent()) {","lastModifiedDate":"2023-01-03"},{"lineNumber":177,"author":{"gitId":"-"},"content":" logger.info(\"Creating new preference file \" + prefsFilePath);","lastModifiedDate":"2023-05-15"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03"},{"lineNumber":179,"author":{"gitId":"-"},"content":" initializedPrefs \u003d prefsOptional.orElse(new UserPrefs());","lastModifiedDate":"2016-09-24"},{"lineNumber":180,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":181,"author":{"gitId":"-"},"content":" logger.warning(\"Preference file at \" + prefsFilePath + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":182,"author":{"gitId":"-"},"content":" + \" Using default preferences.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":183,"author":{"gitId":"-"},"content":" initializedPrefs \u003d new UserPrefs();","lastModifiedDate":"2016-09-24"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":186,"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":187,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":188,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(initializedPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":189,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":190,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":193,"author":{"gitId":"-"},"content":" return initializedPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":194,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":196,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":197,"author":{"gitId":"MaYuehan"},"content":" * Starts the primary stage of the application.","lastModifiedDate":"2024-03-23"},{"lineNumber":198,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-23"},{"lineNumber":199,"author":{"gitId":"MaYuehan"},"content":" * @param primaryStage The primary stage for this application.","lastModifiedDate":"2024-03-23"},{"lineNumber":200,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":202,"author":{"gitId":"-"},"content":" public void start(Stage primaryStage) {","lastModifiedDate":"2016-08-08"},{"lineNumber":203,"author":{"gitId":"javierng2knus"},"content":" logger.info(\"Starting Clinic \" + MainApp.VERSION);","lastModifiedDate":"2024-03-11"},{"lineNumber":204,"author":{"gitId":"-"},"content":" ui.start(primaryStage);","lastModifiedDate":"2016-09-25"},{"lineNumber":205,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":207,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":208,"author":{"gitId":"MaYuehan"},"content":" * Stops the application, ensuring all resources are released and necessary data is saved.","lastModifiedDate":"2024-03-23"},{"lineNumber":209,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":211,"author":{"gitId":"-"},"content":" public void stop() {","lastModifiedDate":"2016-08-08"},{"lineNumber":212,"author":{"gitId":"javierng2knus"},"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 Clinic ] \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2024-03-11"},{"lineNumber":213,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":214,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(model.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":215,"author":{"gitId":"MaYuehan"},"content":" // Save appointments when application stops","lastModifiedDate":"2024-03-23"},{"lineNumber":216,"author":{"gitId":"MaYuehan"},"content":" storage.saveAppointments(model.getFilteredAppointmentList());","lastModifiedDate":"2024-03-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":218,"author":{"gitId":"MaYuehan"},"content":" logger.severe(\"Failed to save preferences and appointments: \" + StringUtil.getDetails(e));","lastModifiedDate":"2024-03-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":220,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":221,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"javierng2knus":18,"MaYuehan":57,"-":146}},{"path":"src/main/java/vitalconnect/commons/core/Config.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.commons.core;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-13"},{"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":{"MaYuehan":2,"-":64}},{"path":"src/main/java/vitalconnect/commons/core/GuiSettings.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.commons.core;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-13"},{"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":{"MaYuehan":2,"-":80}},{"path":"src/main/java/vitalconnect/commons/core/LogsCenter.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.commons.core;","lastModifiedDate":"2024-03-13"},{"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":"javierng2knus"},"content":" private static final String LOG_FILE \u003d \"clinic.log\";","lastModifiedDate":"2024-03-11"},{"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":{"javierng2knus":1,"MaYuehan":1,"-":104}},{"path":"src/main/java/vitalconnect/commons/core/Version.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.commons.core;","lastModifiedDate":"2024-03-13"},{"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":{"MaYuehan":1,"-":120}},{"path":"src/main/java/vitalconnect/commons/core/index/Index.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.commons.core.index;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-13"},{"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":{"MaYuehan":2,"-":67}},{"path":"src/main/java/vitalconnect/commons/exceptions/DataLoadingException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.commons.exceptions;","lastModifiedDate":"2024-03-13"},{"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":{"MaYuehan":1,"-":10}},{"path":"src/main/java/vitalconnect/commons/exceptions/IllegalValueException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.commons.exceptions;","lastModifiedDate":"2024-03-13"},{"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":{"MaYuehan":1,"-":20}},{"path":"src/main/java/vitalconnect/commons/util/AppUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.commons.util;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.MainApp;","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Gets an {@code Image} from the specified path.","lastModifiedDate":"2020-05-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static Image getImage(String imagePath) {","lastModifiedDate":"2016-08-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":" requireNonNull(imagePath);","lastModifiedDate":"2017-05-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":" return new Image(MainApp.class.getResourceAsStream(imagePath));","lastModifiedDate":"2016-08-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Checks that {@code condition} is true. Used for validating arguments to methods.","lastModifiedDate":"2017-05-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @throws IllegalArgumentException if {@code condition} is false.","lastModifiedDate":"2017-05-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static void checkArgument(Boolean condition) {","lastModifiedDate":"2017-05-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":" if (!condition) {","lastModifiedDate":"2017-05-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" throw new IllegalArgumentException();","lastModifiedDate":"2017-05-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Checks that {@code condition} is true. Used for validating arguments to methods.","lastModifiedDate":"2017-05-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * @throws IllegalArgumentException with {@code errorMessage} if {@code condition} is false.","lastModifiedDate":"2017-05-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static void checkArgument(Boolean condition, String errorMessage) {","lastModifiedDate":"2017-05-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":" if (!condition) {","lastModifiedDate":"2017-05-15"},{"lineNumber":39,"author":{"gitId":"-"},"content":" throw new IllegalArgumentException(errorMessage);","lastModifiedDate":"2017-05-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"MaYuehan":2,"-":40}},{"path":"src/main/java/vitalconnect/commons/util/CollectionUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.commons.util;","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":" /** @see #requireAllNonNull(Collection) */","lastModifiedDate":"2017-05-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static void requireAllNonNull(Object... items) {","lastModifiedDate":"2017-05-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":" requireNonNull(items);","lastModifiedDate":"2017-06-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Stream.of(items).forEach(Objects::requireNonNull);","lastModifiedDate":"2017-05-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Throws NullPointerException if {@code items} or any element of {@code items} is null.","lastModifiedDate":"2017-05-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static void requireAllNonNull(Collection\u003c?\u003e items) {","lastModifiedDate":"2017-05-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" requireNonNull(items);","lastModifiedDate":"2017-06-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":" items.forEach(Objects::requireNonNull);","lastModifiedDate":"2017-05-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"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 {@code items} contain any elements that are non-null.","lastModifiedDate":"2017-06-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static boolean isAnyNonNull(Object... items) {","lastModifiedDate":"2017-06-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return items !\u003d null \u0026\u0026 Arrays.stream(items).anyMatch(Objects::nonNull);","lastModifiedDate":"2017-06-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"MaYuehan":1,"-":34}},{"path":"src/main/java/vitalconnect/commons/util/ConfigUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.commons.util;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.commons.core.Config;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":" public static Optional\u003cConfig\u003e readConfig(Path configFilePath) throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":16,"author":{"gitId":"-"},"content":" return JsonUtil.readJsonFile(configFilePath, Config.class);","lastModifiedDate":"2016-10-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static void saveConfig(Config config, Path configFilePath) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" JsonUtil.saveJsonFile(config, configFilePath);","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":"}","lastModifiedDate":"2016-09-24"}],"authorContributionMap":{"MaYuehan":3,"-":20}},{"path":"src/main/java/vitalconnect/commons/util/FileUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.commons.util;","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":" public static boolean isFileExists(Path file) {","lastModifiedDate":"2018-04-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":" return Files.exists(file) \u0026\u0026 Files.isRegularFile(file);","lastModifiedDate":"2018-04-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-21"},{"lineNumber":21,"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":22,"author":{"gitId":"-"},"content":" * otherwise returns false.","lastModifiedDate":"2018-04-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @param path A string representing the file path. Cannot be null.","lastModifiedDate":"2018-04-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static boolean isValidPath(String path) {","lastModifiedDate":"2018-04-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-04-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" Paths.get(path);","lastModifiedDate":"2018-04-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":" } catch (InvalidPathException ipe) {","lastModifiedDate":"2018-04-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-04-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Creates a file if it does not exist along with its missing parent directories.","lastModifiedDate":"2017-08-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * @throws IOException if the file or directory cannot be created.","lastModifiedDate":"2017-08-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static void createIfMissing(Path file) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" if (!isFileExists(file)) {","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" createFile(file);","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":"","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Creates a file if it does not exist along with its missing parent directories.","lastModifiedDate":"2018-04-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static void createFile(Path file) throws IOException {","lastModifiedDate":"2018-04-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (Files.exists(file)) {","lastModifiedDate":"2018-04-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return;","lastModifiedDate":"2018-04-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" createParentDirsOfFile(file);","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" Files.createFile(file);","lastModifiedDate":"2018-04-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Creates parent directories of file if it has a parent directory","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static void createParentDirsOfFile(Path file) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":" Path parentDir \u003d file.getParent();","lastModifiedDate":"2018-04-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (parentDir !\u003d null) {","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" Files.createDirectories(parentDir);","lastModifiedDate":"2018-04-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-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":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * Assumes file exists","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public static String readFromFile(Path file) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return new String(Files.readAllBytes(file), CHARSET);","lastModifiedDate":"2018-04-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * Writes given string to a file.","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Will create the file if it does not exist yet.","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static void writeToFile(Path file, String content) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":" Files.write(file, content.getBytes(CHARSET));","lastModifiedDate":"2018-04-21"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"MaYuehan":1,"-":82}},{"path":"src/main/java/vitalconnect/commons/util/JsonUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.commons.util;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.commons.core.LogsCenter;","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":" static \u003cT\u003e void serializeObjectToJsonFile(Path jsonFile, T objectToSerialize) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" FileUtil.writeToFile(jsonFile, toJsonString(objectToSerialize));","lastModifiedDate":"2016-10-07"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":46,"author":{"gitId":"-"},"content":" static \u003cT\u003e T deserializeObjectFromJsonFile(Path jsonFile, Class\u003cT\u003e classOfObjectToDeserialize)","lastModifiedDate":"2018-04-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2016-10-07"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return fromJsonString(FileUtil.readFromFile(jsonFile), classOfObjectToDeserialize);","lastModifiedDate":"2016-10-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-07"},{"lineNumber":52,"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":53,"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":54,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * @param filePath cannot be null.","lastModifiedDate":"2016-10-07"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * @param classOfObjectToDeserialize JSON file has to correspond to the structure in the class given here.","lastModifiedDate":"2023-06-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * @throws DataLoadingException if loading of the JSON file failed.","lastModifiedDate":"2023-06-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-07"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static \u003cT\u003e Optional\u003cT\u003e readJsonFile(","lastModifiedDate":"2016-10-07"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Path filePath, Class\u003cT\u003e classOfObjectToDeserialize) throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":61,"author":{"gitId":"-"},"content":" requireNonNull(filePath);","lastModifiedDate":"2017-05-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (!Files.exists(filePath)) {","lastModifiedDate":"2018-04-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2016-10-07"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":66,"author":{"gitId":"-"},"content":" logger.info(\"JSON file \" + filePath + \" found.\");","lastModifiedDate":"2023-01-03"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":" T jsonFile;","lastModifiedDate":"2016-10-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-10-07"},{"lineNumber":71,"author":{"gitId":"-"},"content":" jsonFile \u003d deserializeObjectFromJsonFile(filePath, classOfObjectToDeserialize);","lastModifiedDate":"2018-04-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-10-07"},{"lineNumber":73,"author":{"gitId":"-"},"content":" logger.warning(\"Error reading from jsonFile file \" + filePath + \": \" + e);","lastModifiedDate":"2018-04-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" throw new DataLoadingException(e);","lastModifiedDate":"2023-06-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return Optional.of(jsonFile);","lastModifiedDate":"2016-10-07"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":80,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-07"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * Saves the Json object to the specified file.","lastModifiedDate":"2016-10-07"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * Overwrites existing file if it exists, creates a new file if it doesn\u0027t.","lastModifiedDate":"2016-10-07"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * @param jsonFile cannot be null","lastModifiedDate":"2016-10-07"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * @param filePath cannot be null","lastModifiedDate":"2016-10-07"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * @throws IOException if there was an error during writing to the file","lastModifiedDate":"2016-10-07"},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-07"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public static \u003cT\u003e void saveJsonFile(T jsonFile, Path filePath) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":88,"author":{"gitId":"-"},"content":" requireNonNull(filePath);","lastModifiedDate":"2017-05-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" requireNonNull(jsonFile);","lastModifiedDate":"2017-05-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":91,"author":{"gitId":"-"},"content":" serializeObjectToJsonFile(filePath, jsonFile);","lastModifiedDate":"2018-04-21"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * Converts a given string representation of a JSON data to instance of a class","lastModifiedDate":"2016-10-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * @param \u003cT\u003e The generic type to create an instance of","lastModifiedDate":"2016-10-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * @return The instance of T with the specified values in the JSON string","lastModifiedDate":"2016-10-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public static \u003cT\u003e T fromJsonString(String json, Class\u003cT\u003e instanceClass) throws IOException {","lastModifiedDate":"2016-10-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" return objectMapper.readValue(json, instanceClass);","lastModifiedDate":"2016-10-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":104,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-19"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * Converts a given instance of a class into its JSON data string representation","lastModifiedDate":"2016-10-19"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * @param instance The T object to be converted into the JSON string","lastModifiedDate":"2016-10-19"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * @param \u003cT\u003e The generic type to create an instance of","lastModifiedDate":"2016-10-19"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * @return JSON data representation of the given class instance, in string","lastModifiedDate":"2016-10-19"},{"lineNumber":109,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public static \u003cT\u003e String toJsonString(T instance) throws JsonProcessingException {","lastModifiedDate":"2016-10-19"},{"lineNumber":111,"author":{"gitId":"-"},"content":" return objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(instance);","lastModifiedDate":"2016-10-19"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Contains methods that retrieve logging level from serialized string.","lastModifiedDate":"2017-08-16"},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":117,"author":{"gitId":"-"},"content":" private static class LevelDeserializer extends FromStringDeserializer\u003cLevel\u003e {","lastModifiedDate":"2016-08-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" protected LevelDeserializer(Class\u003c?\u003e vc) {","lastModifiedDate":"2016-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" super(vc);","lastModifiedDate":"2016-08-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" protected Level _deserialize(String value, DeserializationContext ctxt) {","lastModifiedDate":"2018-08-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" return getLoggingLevel(value);","lastModifiedDate":"2016-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","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":" * Gets the logging level that matches loggingLevelString","lastModifiedDate":"2016-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" * \u003cp\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":" * Returns null if there are no matches","lastModifiedDate":"2016-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":" private Level getLoggingLevel(String loggingLevelString) {","lastModifiedDate":"2016-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":" return Level.parse(loggingLevelString);","lastModifiedDate":"2016-09-09"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public Class\u003cLevel\u003e handledType() {","lastModifiedDate":"2016-08-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":" return Level.class;","lastModifiedDate":"2016-08-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"MaYuehan":3,"-":141}},{"path":"src/main/java/vitalconnect/commons/util/StringUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.commons.util;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import static vitalconnect.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"MaYuehan":2,"-":66}},{"path":"src/main/java/vitalconnect/commons/util/ToStringBuilder.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.commons.util;","lastModifiedDate":"2024-03-13"},{"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":{"MaYuehan":1,"-":52}},{"path":"src/main/java/vitalconnect/logic/Logic.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.commons.core.GuiSettings;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.CommandResult;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Appointment;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.ReadOnlyClinic;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * API of the Logic component","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2016-09-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2016-09-25"},{"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":"javierng2knus"},"content":" * Returns the Clinic.","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-03"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" * @see vitalconnect.model.Model#getClinic()","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-03"},{"lineNumber":33,"author":{"gitId":"javierng2knus"},"content":" ReadOnlyClinic getClinic();","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered list of persons */","lastModifiedDate":"2017-09-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" /** Returns an unmodifiable view of the filtered list of appointment */","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":" ObservableList\u003cAppointment\u003e getFilteredAppointmentList();","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"javierng2knus"},"content":" * Returns the user prefs\u0027 clinic file path.","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"javierng2knus"},"content":" Path getClinicFilePath();","lastModifiedDate":"2024-03-11"},{"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":" * Set 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":"2016-09-25"}],"authorContributionMap":{"javierng2knus":4,"MaYuehan":12,"-":39}},{"path":"src/main/java/vitalconnect/logic/LogicManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.commons.core.GuiSettings;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.core.LogsCenter;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.Command;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.CommandResult;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.parser.ClinicParser;","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Appointment;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.ReadOnlyClinic;","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.storage.Storage;","lastModifiedDate":"2024-03-13"},{"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":"javierng2knus"},"content":" private final ClinicParser clinicParser;","lastModifiedDate":"2024-03-11"},{"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":"javierng2knus"},"content":" clinicParser \u003d new ClinicParser();","lastModifiedDate":"2024-03-11"},{"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":"javierng2knus"},"content":" Command command \u003d clinicParser.parseCommand(commandText);","lastModifiedDate":"2024-03-11"},{"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":"javierng2knus"},"content":" storage.saveClinic(model.getClinic());","lastModifiedDate":"2024-03-11"},{"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":"javierng2knus"},"content":" public ReadOnlyClinic getClinic() {","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"javierng2knus"},"content":" return model.getClinic();","lastModifiedDate":"2024-03-11"},{"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":"-"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"MaYuehan"},"content":" public ObservableList\u003cAppointment\u003e getFilteredAppointmentList() {","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"MaYuehan"},"content":" return model.getFilteredAppointmentList();","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"javierng2knus"},"content":" public Path getClinicFilePath() {","lastModifiedDate":"2024-03-11"},{"lineNumber":81,"author":{"gitId":"javierng2knus"},"content":" return model.getClinicFilePath();","lastModifiedDate":"2024-03-11"},{"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 GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return model.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" model.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"javierng2knus":8,"MaYuehan":16,"-":69}},{"path":"src/main/java/vitalconnect/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic;","lastModifiedDate":"2024-03-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":"MaYuehan"},"content":"import vitalconnect.logic.parser.Prefix;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-13"},{"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":"Ella-e"},"content":" public static final String MESSAGE_PERSON_NOT_FOUND \u003d \"Person not found\";","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"Ella-e"},"content":" public static final String MESSAGE_PERSON_ALREADY_EXIST \u003d \"Person already exists\";","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"SeaHogs"},"content":" public static final String MESSAGE_MEDICAL_INFO_ALREADY_EXIST \u003d \"Person\u0027s medical information already exists\";","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"Ella-e"},"content":" public static final String MESSAGE_EMAIL_NOT_FOUND \u003d \"Email not found\";","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"Ella-e"},"content":" public static final String MESSAGE_PHONE_NOT_FOUND \u003d \"Phone not found\";","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"Ella-e"},"content":" public static final String MESSAGE_ADDRESS_NOT_FOUND \u003d \"Address not found\";","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"Ella-e"},"content":" public static final String MESSAGE_EMAIL_ALREADY_EXIST \u003d \"Email already exists\";","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"Ella-e"},"content":" public static final String MESSAGE_PHONE_ALREADY_EXIST \u003d \"Phone already exists\";","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"Ella-e"},"content":" public static final String MESSAGE_ADDRESS_ALREADY_EXIST \u003d \"Address already exists\";","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"Ella-e"},"content":" public static final String MESSAGE_NO_PREFIX_PROVIDED \u003d \"At least one prefix must be provided\";","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"SeaHogs"},"content":" public static final String MESSAGE_ALLERGY_ALREADY_EXIST \u003d \"Allergy already exists\";","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"Ella-e"},"content":" public static final String MESSAGE_OPTION_NOT_VALID \u003d \"Option not valid\";","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":40,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":41,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"javierng2knus"},"content":" builder.append(person.getIdentificationInformation().getName())","lastModifiedDate":"2024-03-15"},{"lineNumber":52,"author":{"gitId":"javierng2knus"},"content":" .append(\"; NRIC: \")","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"SeaHogs"},"content":" .append(person.getIdentificationInformation().getNric());","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"javierng2knus":2,"MaYuehan":3,"Ella-e":10,"-":39,"SeaHogs":3}},{"path":"src/main/java/vitalconnect/logic/commands/AddCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.commands;","lastModifiedDate":"2024-03-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":"MaYuehan"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"javierng2knus"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_NRIC;","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.Messages;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"javierng2knus"},"content":" * Adds a person to the clinic.","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class AddCommand 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 \"add\";","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"javierng2knus"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a person to the clinic. \"","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06"},{"lineNumber":24,"author":{"gitId":"javierng2knus"},"content":" + PREFIX_NRIC + \"NRIC \\n\"","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06"},{"lineNumber":27,"author":{"gitId":"javierng2knus"},"content":" + PREFIX_NRIC + \"S1234567D \";","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: %1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"javierng2knus"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the clinic\";","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":38,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":39,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":46,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":50,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23"},{"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":"2017-06-22"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22"},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return false;","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":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"javierng2knus":6,"MaYuehan":8,"-":61}},{"path":"src/main/java/vitalconnect/logic/commands/AddContactCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"package vitalconnect.logic.commands;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.Messages.MESSAGE_PERSON_ALREADY_EXIST;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.Messages.MESSAGE_PERSON_NOT_FOUND;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_NRIC;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.ContactInformation;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.identificationinformation.Nric;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":" * Adds a person to the clinic.","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"Ella-e"},"content":"public class AddContactCommand extends Command {","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"javierng2knus"},"content":" public static final String COMMAND_WORD \u003d \"addc\";","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"javierng2knus"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Contacts added successfully\";","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"javierng2knus"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds the contact information of a person. \"","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"Ella-e"},"content":" + \"Parameters: (required field)\\n\"","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"Ella-e"},"content":" + PREFIX_NRIC + \"NRIC \"","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"Ella-e"},"content":" + \"(optional but at least specify one)\\n\"","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"Ella-e"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"Ella-e"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"Ella-e"},"content":" + PREFIX_ADDRESS + \"ADDRESS \\n\"","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"Ella-e"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"javierng2knus"},"content":" + PREFIX_NRIC + \"S1234567D \"","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"Ella-e"},"content":" + PREFIX_PHONE + \"98765432 \";","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"Ella-e"},"content":" private final Nric nric;","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"Ella-e"},"content":" private final ContactInformation contactInformation;","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"Ella-e"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"Ella-e"},"content":" * Creates an AddCommand to add the specified {@code ContactInformation}","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"Ella-e"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"Ella-e"},"content":" public AddContactCommand(Nric nric, ContactInformation contactInformation) {","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"Ella-e"},"content":" requireNonNull(contactInformation);","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"Ella-e"},"content":" this.nric \u003d nric;","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"Ella-e"},"content":" this.contactInformation \u003d contactInformation;","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"Ella-e"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"Ella-e"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"Ella-e"},"content":" // if person not exist, throw error","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"Ella-e"},"content":" Person p \u003d model.findPersonByNric(nric);","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"Ella-e"},"content":" if (p \u003d\u003d null) {","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"Ella-e"},"content":" throw new CommandException(MESSAGE_PERSON_NOT_FOUND);","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"Ella-e"},"content":" // if person already has contact information, throw error","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"Ella-e"},"content":" ContactInformation ci \u003d p.getContactInformation();","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"Ella-e"},"content":" if (!ci.isEmptyContact()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"Ella-e"},"content":" throw new CommandException(MESSAGE_PERSON_ALREADY_EXIST);","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"Ella-e"},"content":" // add the contact information to the person","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"Ella-e"},"content":" model.updatePersonContactInformation(nric, contactInformation);","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"Ella-e"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"Ella-e"},"content":" // update the person to the model","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"Ella-e"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"Ella-e"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"Ella-e"},"content":" return other \u003d\u003d this // short circuit if same object","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"Ella-e"},"content":" || (other instanceof AddContactCommand // instanceof handles nulls","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"Ella-e"},"content":" \u0026\u0026 nric.equals(((AddContactCommand) other).nric)","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"Ella-e"},"content":" \u0026\u0026 contactInformation.equals(((AddContactCommand) other).contactInformation));","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"Ella-e"},"content":" public String toString() {","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"Ella-e"},"content":" return \"addContact\" + nric + contactInformation;","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"javierng2knus":4,"Ella-e":76}},{"path":"src/main/java/vitalconnect/logic/commands/AddMedInfoCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SeaHogs"},"content":"package vitalconnect.logic.commands;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"SeaHogs"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.logic.Messages.MESSAGE_MEDICAL_INFO_ALREADY_EXIST;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.logic.Messages.MESSAGE_PERSON_NOT_FOUND;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_ALLERGYTAG;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_HEIGHT;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_NRIC;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_WEIGHT;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.person.identificationinformation.Nric;","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.person.medicalinformation.MedicalInformation;","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"SeaHogs"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"SeaHogs"},"content":" * Adds medication information for a person.","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"SeaHogs"},"content":"public class AddMedInfoCommand extends Command {","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"javierng2knus"},"content":" public static final String COMMAND_WORD \u003d \"addm\";","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"javierng2knus"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Medical information added successfully\";","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"javierng2knus"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds the medical information of a person. \"","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"javierng2knus"},"content":" + \"Parameters: (required fields)\\n\"","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"SeaHogs"},"content":" + PREFIX_NRIC + \"NRIC \"","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"javierng2knus"},"content":" + PREFIX_HEIGHT + \"Height(in cm) \"","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"javierng2knus"},"content":" + PREFIX_WEIGHT + \"Weight(in kg) \\n\"","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"SeaHogs"},"content":" + \"(optional but at least specify one)\"","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"SeaHogs"},"content":" + PREFIX_ALLERGYTAG + \"Allergy\\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"SeaHogs"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"SeaHogs"},"content":" + PREFIX_NRIC + \"S1234567A \"","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"SeaHogs"},"content":" + PREFIX_HEIGHT + \"175 \"","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"SeaHogs"},"content":" + PREFIX_WEIGHT + \"60 \"","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"javierng2knus"},"content":" + PREFIX_ALLERGYTAG + \"Amoxicillin \";","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"SeaHogs"},"content":" private final Nric nric;","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"SeaHogs"},"content":" private final MedicalInformation medicalInformation;","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"SeaHogs"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"SeaHogs"},"content":" * Creates an AddMedInfoCommand to add the specified {@code MedicalInformation}","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"SeaHogs"},"content":" public AddMedInfoCommand(Nric nric, MedicalInformation medicalInformation) {","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"SeaHogs"},"content":" requireNonNull(medicalInformation);","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"SeaHogs"},"content":" this.nric \u003d nric;","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"SeaHogs"},"content":" this.medicalInformation \u003d medicalInformation;","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"SeaHogs"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"SeaHogs"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"SeaHogs"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"SeaHogs"},"content":" Person p \u003d model.findPersonByNric(nric);","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"SeaHogs"},"content":" if (p \u003d\u003d null) {","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"SeaHogs"},"content":" throw new CommandException(MESSAGE_PERSON_NOT_FOUND);","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"SeaHogs"},"content":" if (p.hasMedicalInformation()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"SeaHogs"},"content":" throw new CommandException(MESSAGE_MEDICAL_INFO_ALREADY_EXIST);","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"SeaHogs"},"content":" } else {","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"SeaHogs"},"content":" model.updatePersonMedicalInformation(nric, medicalInformation);","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"SeaHogs"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"SeaHogs"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"SeaHogs"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"SeaHogs"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"SeaHogs"},"content":" return other \u003d\u003d this // short circuit if same object","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"SeaHogs"},"content":" || (other instanceof AddMedInfoCommand // instanceof handles nulls","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"SeaHogs"},"content":" \u0026\u0026 nric.equals(((AddMedInfoCommand) other).nric)","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"SeaHogs"},"content":" \u0026\u0026 medicalInformation.equals(((AddMedInfoCommand) other).medicalInformation));","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"SeaHogs"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"SeaHogs"},"content":" public String toString() {","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"SeaHogs"},"content":" return \"addMedInfo\" + nric + medicalInformation;","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"SeaHogs"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"javierng2knus":7,"SeaHogs":73}},{"path":"src/main/java/vitalconnect/logic/commands/ClearCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.commands;","lastModifiedDate":"2024-03-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":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Clinic;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"javierng2knus"},"content":" * Clears the clinic.","lastModifiedDate":"2024-03-11"},{"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":"javierng2knus"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Clinic has been cleared!\";","lastModifiedDate":"2024-03-11"},{"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":"javierng2knus"},"content":" model.setClinic(new Clinic());","lastModifiedDate":"2024-03-11"},{"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":{"javierng2knus":3,"MaYuehan":3,"-":17}},{"path":"src/main/java/vitalconnect/logic/commands/Command.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.commands;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-13"},{"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":{"MaYuehan":3,"-":17}},{"path":"src/main/java/vitalconnect/logic/commands/CommandResult.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.commands;","lastModifiedDate":"2024-03-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":"","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":"MaYuehan"},"content":"import vitalconnect.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":" * Contains information about the execution result, such as feedback to the user,","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":" * whether help information should be shown, whether the application should exit,","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":" * and the type of view to show in the UI.","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class CommandResult {","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":" * Represents the type of view to show in the UI.","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" public enum Type {","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":" SHOW_PERSONS,","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" SHOW_APPOINTMENTS","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" /** Feedback message to be shown to the user. */","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final String feedbackToUser;","lastModifiedDate":"2018-12-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /** Help information should be shown to the user. */","lastModifiedDate":"2018-12-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final boolean showHelp;","lastModifiedDate":"2018-12-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /** The application should exit. */","lastModifiedDate":"2018-12-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final boolean exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" /** The type of view to show in the UI. */","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" private final Type type;","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" * Constructs a {@code CommandResult} with all fields specified.","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":" * @param feedbackToUser Feedback message to the user.","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" * @param showHelp True if help information should be shown.","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":" * @param exit True if the application should exit.","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":" * @param type The type of result, indicating which UI view should be shown.","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":" public CommandResult(String feedbackToUser, boolean showHelp, boolean exit, Type type) {","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"-"},"content":" this.feedbackToUser \u003d requireNonNull(feedbackToUser);","lastModifiedDate":"2017-05-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" this.showHelp \u003d showHelp;","lastModifiedDate":"2018-12-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.exit \u003d exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":" this.type \u003d type;","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":" * Constructs a {@code CommandResult} with the specified feedback message","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":" * and default values for other fields.","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":" * @param feedbackToUser Feedback message to the user.","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public CommandResult(String feedbackToUser) {","lastModifiedDate":"2018-12-09"},{"lineNumber":58,"author":{"gitId":"MaYuehan"},"content":" this(feedbackToUser, false, false, Type.SHOW_PERSONS);","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public String getFeedbackToUser() {","lastModifiedDate":"2018-12-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return feedbackToUser;","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 isShowHelp() {","lastModifiedDate":"2018-12-09"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return showHelp;","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":" public boolean isExit() {","lastModifiedDate":"2018-12-09"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return 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":"2018-12-09"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2018-12-09"},{"lineNumber":75,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-12-09"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-12-09"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":79,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2018-12-09"},{"lineNumber":80,"author":{"gitId":"-"},"content":" if (!(other instanceof CommandResult)) {","lastModifiedDate":"2018-12-09"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-12-09"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":84,"author":{"gitId":"-"},"content":" CommandResult otherCommandResult \u003d (CommandResult) other;","lastModifiedDate":"2018-12-09"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return feedbackToUser.equals(otherCommandResult.feedbackToUser)","lastModifiedDate":"2018-12-09"},{"lineNumber":86,"author":{"gitId":"-"},"content":" \u0026\u0026 showHelp \u003d\u003d otherCommandResult.showHelp","lastModifiedDate":"2018-12-09"},{"lineNumber":87,"author":{"gitId":"-"},"content":" \u0026\u0026 exit \u003d\u003d otherCommandResult.exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2018-12-09"},{"lineNumber":92,"author":{"gitId":"-"},"content":" return Objects.hash(feedbackToUser, showHelp, exit);","lastModifiedDate":"2018-12-09"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":" .add(\"feedbackToUser\", feedbackToUser)","lastModifiedDate":"2019-02-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":" .add(\"showHelp\", showHelp)","lastModifiedDate":"2019-02-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":" .add(\"exit\", exit)","lastModifiedDate":"2019-02-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":104,"author":{"gitId":"MaYuehan"},"content":" public Type getType() {","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"MaYuehan"},"content":" return type;","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"MaYuehan":33,"-":75}},{"path":"src/main/java/vitalconnect/logic/commands/CreateAptCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.commands;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Appointment;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.identificationinformation.Name;","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.identificationinformation.Nric;","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" * Represents a command to create an appointment for a patient in the address book.","lastModifiedDate":"2024-03-23"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":" * This command schedules appointments by specifying the patient\u0027s NRIC","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":" * and the desired date and time for the appointment.","lastModifiedDate":"2024-03-23"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":"public class CreateAptCommand extends Command {","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"javierng2knus"},"content":" public static final String COMMAND_WORD \u003d \"adda\";","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"javierng2knus"},"content":" + \": Adds an appointment for a person in the address book. \"","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" + \"Parameters: NRIC /time DATE TIME\\n\"","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" + \"S1234567D /time 02/02/2024 1330\\n\"","lastModifiedDate":"2024-03-23"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" + \"Note: Ensure the date and time are in DD/MM/YYYY HHMM format.\";","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" private final String patientIc;","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" private final String dateTimeStr;","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" private String patientName \u003d null;","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" * Constructs a {@code CreateAptCommand} to schedule an appointment.","lastModifiedDate":"2024-03-23"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" * @param patientIc The NRIC of the patient for whom the appointment is being created.","lastModifiedDate":"2024-03-23"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" * @param dateTimeStr The date and time of the appointment, in DD/MM/YYYY HHMM format.","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":" public CreateAptCommand(String patientIc, String dateTimeStr) {","lastModifiedDate":"2024-03-23"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" this.patientIc \u003d patientIc;","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":" this.dateTimeStr \u003d dateTimeStr;","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":" * Executes the command to create an appointment in the address book.","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":" * The method verifies the existence of a person with the specified NRIC in the address book.","lastModifiedDate":"2024-03-23"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":" * If the person exists and the date and time format is valid, an appointment is scheduled.","lastModifiedDate":"2024-03-23"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":" * If the person does not exist or the date and time are incorrectly formatted,","lastModifiedDate":"2024-03-23"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":" * a {@code CommandException} is thrown.","lastModifiedDate":"2024-03-23"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":" * @param model The model of the address book in which the appointment is to be created.","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"MaYuehan"},"content":" * @return A {@code CommandResult} object containing the success message upon","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":" * successful creation of the appointment, and the type of command result.","lastModifiedDate":"2024-03-23"},{"lineNumber":56,"author":{"gitId":"MaYuehan"},"content":" * @throws CommandException If the specified patient does not exist or if the","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"MaYuehan"},"content":" * date and time string is in an incorrect format.","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":60,"author":{"gitId":"MaYuehan"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-13"},{"lineNumber":61,"author":{"gitId":"MaYuehan"},"content":" try {","lastModifiedDate":"2024-03-13"},{"lineNumber":62,"author":{"gitId":"MaYuehan"},"content":" // Check if a person with the exact name exists","lastModifiedDate":"2024-03-13"},{"lineNumber":63,"author":{"gitId":"MaYuehan"},"content":" if (!model.doesIcExist(patientIc)) {","lastModifiedDate":"2024-03-23"},{"lineNumber":64,"author":{"gitId":"MaYuehan"},"content":" throw new CommandException(\"OOPS! The appointment cannot be created as the NRIC does not exist.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":65,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":66,"author":{"gitId":"MaYuehan"},"content":" // Parse and validate date time","lastModifiedDate":"2024-03-13"},{"lineNumber":67,"author":{"gitId":"MaYuehan"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd/MM/yyyy HHmm\");","lastModifiedDate":"2024-03-13"},{"lineNumber":68,"author":{"gitId":"MaYuehan"},"content":" LocalDateTime dateTime \u003d LocalDateTime.parse(dateTimeStr, formatter);","lastModifiedDate":"2024-03-13"},{"lineNumber":69,"author":{"gitId":"MaYuehan"},"content":" Nric nric \u003d new Nric(patientIc);","lastModifiedDate":"2024-03-23"},{"lineNumber":70,"author":{"gitId":"MaYuehan"},"content":" Person person \u003d model.findPersonByNric(nric);","lastModifiedDate":"2024-03-23"},{"lineNumber":71,"author":{"gitId":"MaYuehan"},"content":" Name name \u003d person.getIdentificationInformation().getName();","lastModifiedDate":"2024-03-23"},{"lineNumber":72,"author":{"gitId":"MaYuehan"},"content":" this.patientName \u003d name.toString();","lastModifiedDate":"2024-03-23"},{"lineNumber":73,"author":{"gitId":"MaYuehan"},"content":" Appointment appointment \u003d new Appointment(patientName, patientIc, dateTime);","lastModifiedDate":"2024-03-23"},{"lineNumber":74,"author":{"gitId":"MaYuehan"},"content":" model.addAppointment(appointment);","lastModifiedDate":"2024-03-13"},{"lineNumber":75,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":76,"author":{"gitId":"MaYuehan"},"content":" return new CommandResult(String.format(\"Created an appointment successfully!\\nName: %s\\nNRIC: %s\\nTime: %s\",","lastModifiedDate":"2024-03-23"},{"lineNumber":77,"author":{"gitId":"MaYuehan"},"content":" patientName, patientIc, dateTime.format(DateTimeFormatter.ofPattern(\"d MMM yyyy HH:mm\"))),","lastModifiedDate":"2024-03-23"},{"lineNumber":78,"author":{"gitId":"MaYuehan"},"content":" false, false, CommandResult.Type.SHOW_APPOINTMENTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":80,"author":{"gitId":"MaYuehan"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-03-13"},{"lineNumber":81,"author":{"gitId":"MaYuehan"},"content":" throw new CommandException(\"OOPS! The appointment cannot be created \"","lastModifiedDate":"2024-03-13"},{"lineNumber":82,"author":{"gitId":"MaYuehan"},"content":" + \"as the time is empty or not in the correct format.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":83,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":84,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":85,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":86,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":87,"author":{"gitId":"MaYuehan"},"content":" * Returns the NRIC of the patient associated with this appointment.","lastModifiedDate":"2024-03-23"},{"lineNumber":88,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-23"},{"lineNumber":89,"author":{"gitId":"MaYuehan"},"content":" * @return The patient\u0027s NRIC as a {@code String}.","lastModifiedDate":"2024-03-23"},{"lineNumber":90,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":91,"author":{"gitId":"MaYuehan"},"content":" public String getPatientIc() {","lastModifiedDate":"2024-03-23"},{"lineNumber":92,"author":{"gitId":"MaYuehan"},"content":" return patientIc;","lastModifiedDate":"2024-03-23"},{"lineNumber":93,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":94,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":95,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":96,"author":{"gitId":"MaYuehan"},"content":" * Returns the name of the patient associated with this appointment.","lastModifiedDate":"2024-03-13"},{"lineNumber":97,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":98,"author":{"gitId":"MaYuehan"},"content":" * @return The patient\u0027s name as a {@code String}.","lastModifiedDate":"2024-03-13"},{"lineNumber":99,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":100,"author":{"gitId":"MaYuehan"},"content":" public String getPatientName() {","lastModifiedDate":"2024-03-13"},{"lineNumber":101,"author":{"gitId":"MaYuehan"},"content":" return patientName;","lastModifiedDate":"2024-03-13"},{"lineNumber":102,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":103,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":104,"author":{"gitId":"MaYuehan"},"content":" * Returns the date and time of the appointment as a string.","lastModifiedDate":"2024-03-13"},{"lineNumber":105,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":106,"author":{"gitId":"MaYuehan"},"content":" * @return The date and time of the appointment in \"dd/MM/yyyy HHmm\" format.","lastModifiedDate":"2024-03-23"},{"lineNumber":107,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":108,"author":{"gitId":"MaYuehan"},"content":" public String getDateTimeStr() {","lastModifiedDate":"2024-03-13"},{"lineNumber":109,"author":{"gitId":"MaYuehan"},"content":" return dateTimeStr;","lastModifiedDate":"2024-03-13"},{"lineNumber":110,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":111,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"javierng2knus":2,"MaYuehan":109}},{"path":"src/main/java/vitalconnect/logic/commands/DeleteAptCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.commands;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import java.util.List;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Appointment;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":" * A command to delete an appointment of a patient from the address book based on the index provided.","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":" * This command allows users to remove a specific appointment identified by its index in the","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":" * list of all displayed appointments and the patient\u0027s name.","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"public class DeleteAptCommand extends Command {","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"javierng2knus"},"content":" public static final String COMMAND_WORD \u003d \"deletea\";","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Deletes an appointment of a patient by the index \"","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" + \"in the list and patient name.\\n\"","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":" + \"Parameters: INDEX (must be a positive integer) /name NAME\\n\"","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 /name John Doe\";","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":" private final int index;","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" private final String patientName;","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" * Constructs a {@code DeleteAptCommand} with the specified index and patient name.","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" * @param index The index of the appointment to be deleted, as displayed to the user.","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" * @param patientName The name of the patient whose appointment is to be deleted.","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" public DeleteAptCommand(int index, String patientName) {","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" this.index \u003d index;","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" this.patientName \u003d patientName;","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" * Executes the deletion of an appointment identified by its index and the specified patient\u0027s name.","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":" * \u003cp\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" * The method checks if the appointment list is empty, if the provided index is within the valid range,","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":" * and if the appointment at the specified index belongs to the patient with the given name. If any of","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":" * these conditions are not met, a {@code CommandException} is thrown with an appropriate message.","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":" * @param model {@code Model} which the command should operate on.","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":" * @return A {@code CommandResult} object containing the success message upon","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":" * successful deletion of the appointment and the type of command result.","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":" * @throws CommandException If the appointment list is empty, the index is out of range,","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":" * or no appointment matches the provided index and patient name.","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":" List\u003cAppointment\u003e lastShownList \u003d model.getFilteredAppointmentList();","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"MaYuehan"},"content":" if (lastShownList.size() \u003c 1) {","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":" throw new CommandException(\"OOPS! The appointment list is empty.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":56,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"MaYuehan"},"content":" if (index \u003c 1 || index \u003e lastShownList.size()) {","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"MaYuehan"},"content":" throw new CommandException(\"OOPS! The deletion of the appointment failed as the index of \"","lastModifiedDate":"2024-03-13"},{"lineNumber":60,"author":{"gitId":"MaYuehan"},"content":" + \"appointment is out of range.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":61,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":62,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":63,"author":{"gitId":"MaYuehan"},"content":" Appointment appointmentToDelete \u003d lastShownList.get(index - 1);","lastModifiedDate":"2024-03-13"},{"lineNumber":64,"author":{"gitId":"MaYuehan"},"content":" if (!appointmentToDelete.getPatientName().equals(patientName)) {","lastModifiedDate":"2024-03-13"},{"lineNumber":65,"author":{"gitId":"MaYuehan"},"content":" throw new CommandException(\"OOPS! The deletion of the appointment failed as the appointment of \"","lastModifiedDate":"2024-03-13"},{"lineNumber":66,"author":{"gitId":"MaYuehan"},"content":" + patientName + \" does not exist in the appointment list.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":67,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":68,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":69,"author":{"gitId":"MaYuehan"},"content":" model.deleteAppointment(appointmentToDelete);","lastModifiedDate":"2024-03-13"},{"lineNumber":70,"author":{"gitId":"MaYuehan"},"content":" return new CommandResult(String.format(\"Deleted the appointment successfully:\\nName: %s\\nTime: %s\",","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"MaYuehan"},"content":" patientName,","lastModifiedDate":"2024-03-13"},{"lineNumber":72,"author":{"gitId":"MaYuehan"},"content":" appointmentToDelete.getDateTime().format(DateTimeFormatter.ofPattern(\"d MMM uuuu HH:mm\"))),","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"MaYuehan"},"content":" false, false, CommandResult.Type.SHOW_APPOINTMENTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":75,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":76,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":77,"author":{"gitId":"MaYuehan"},"content":" * Gets the index of the appointment to be deleted.","lastModifiedDate":"2024-03-13"},{"lineNumber":78,"author":{"gitId":"MaYuehan"},"content":" * \u003cp\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":79,"author":{"gitId":"MaYuehan"},"content":" * This index is used to identify the specific appointment in the list of appointments","lastModifiedDate":"2024-03-13"},{"lineNumber":80,"author":{"gitId":"MaYuehan"},"content":" * displayed to the user. It is based on a 1-based indexing system.","lastModifiedDate":"2024-03-13"},{"lineNumber":81,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":82,"author":{"gitId":"MaYuehan"},"content":" * @return The index of the appointment to be deleted.","lastModifiedDate":"2024-03-13"},{"lineNumber":83,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":84,"author":{"gitId":"MaYuehan"},"content":" public int getIndex() {","lastModifiedDate":"2024-03-13"},{"lineNumber":85,"author":{"gitId":"MaYuehan"},"content":" return index;","lastModifiedDate":"2024-03-13"},{"lineNumber":86,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":87,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":88,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":89,"author":{"gitId":"MaYuehan"},"content":" * Gets the name of the patient associated with the appointment to be deleted.","lastModifiedDate":"2024-03-13"},{"lineNumber":90,"author":{"gitId":"MaYuehan"},"content":" * \u003cp\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":91,"author":{"gitId":"MaYuehan"},"content":" * This name is used to ensure that the correct appointment is deleted, especially","lastModifiedDate":"2024-03-13"},{"lineNumber":92,"author":{"gitId":"MaYuehan"},"content":" * in cases where there may be multiple appointments at the same index across","lastModifiedDate":"2024-03-13"},{"lineNumber":93,"author":{"gitId":"MaYuehan"},"content":" * different instances of lists displayed to the user.","lastModifiedDate":"2024-03-13"},{"lineNumber":94,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":95,"author":{"gitId":"MaYuehan"},"content":" * @return The name of the patient whose appointment is to be deleted.","lastModifiedDate":"2024-03-13"},{"lineNumber":96,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":97,"author":{"gitId":"MaYuehan"},"content":" public String getPatientName() {","lastModifiedDate":"2024-03-13"},{"lineNumber":98,"author":{"gitId":"MaYuehan"},"content":" return patientName;","lastModifiedDate":"2024-03-13"},{"lineNumber":99,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":100,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"javierng2knus":1,"MaYuehan":99}},{"path":"src/main/java/vitalconnect/logic/commands/DeleteCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.commands;","lastModifiedDate":"2024-03-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":"MaYuehan"},"content":"import vitalconnect.commons.core.index.Index;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.Messages;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"javierng2knus"},"content":" * Deletes a person identified using it\u0027s displayed index from the clinic.","lastModifiedDate":"2024-03-11"},{"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":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Person: %1$s\";","lastModifiedDate":"2016-08-24"},{"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":{"javierng2knus":1,"MaYuehan":7,"-":61}},{"path":"src/main/java/vitalconnect/logic/commands/DeleteContactCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"package vitalconnect.logic.commands;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.Messages.MESSAGE_PERSON_NOT_FOUND;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_NRIC;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.Address;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.ContactInformation;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.Email;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.Phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.identificationinformation.Nric;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":" * Deletes a person\u0027s contact from the clinic.","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"Ella-e"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"Ella-e"},"content":"public class DeleteContactCommand extends Command {","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"javierng2knus"},"content":" public static final String COMMAND_WORD \u003d \"deletec\";","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"javierng2knus"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Contacts deleted successfully\";","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"javierng2knus"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Delete the contact information of a person. \"","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"javierng2knus"},"content":" + \"Parameter: \\n\"","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"Ella-e"},"content":" + PREFIX_NRIC + \"NRIC\\n\"","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"Ella-e"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"Ella-e"},"content":" + PREFIX_NRIC + \"S1234567D \";","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"Ella-e"},"content":" private final Nric nric;","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"Ella-e"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"Ella-e"},"content":" * Creates an AddCommand to add the specified {@code ContactInformation}","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"Ella-e"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"Ella-e"},"content":" public DeleteContactCommand(Nric nric) {","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"Ella-e"},"content":" requireNonNull(nric);","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"Ella-e"},"content":" this.nric \u003d nric;","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"Ella-e"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"Ella-e"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"Ella-e"},"content":" // if person not exist, throw error","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"Ella-e"},"content":" Person personToEdit \u003d model.findPersonByNric(nric);","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"Ella-e"},"content":" if (personToEdit \u003d\u003d null) {","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"Ella-e"},"content":" throw new CommandException(MESSAGE_PERSON_NOT_FOUND);","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"Ella-e"},"content":" // Erase the current contact information","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"Ella-e"},"content":" ContactInformation contactInformation \u003d new ContactInformation(new Email(\"\"), new Phone(\"\"), new Address(\"\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"Ella-e"},"content":" model.updatePersonContactInformation(nric, contactInformation);","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"Ella-e"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"Ella-e"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"Ella-e"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"Ella-e"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"Ella-e"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"Ella-e"},"content":" if (!(other instanceof DeleteContactCommand)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"Ella-e"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"Ella-e"},"content":" return nric.equals(((DeleteContactCommand) other).nric);","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"javierng2knus":4,"Ella-e":62}},{"path":"src/main/java/vitalconnect/logic/commands/DeleteMedicalCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SeaHogs"},"content":"package vitalconnect.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"SeaHogs"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.logic.Messages.MESSAGE_PERSON_NOT_FOUND;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_NRIC;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.person.identificationinformation.Nric;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.person.medicalinformation.Height;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.person.medicalinformation.MedicalInformation;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.person.medicalinformation.Weight;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"SeaHogs"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"SeaHogs"},"content":" * Deletes a person\u0027s contact from the clinic.","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"SeaHogs"},"content":"public class DeleteMedicalCommand extends Command {","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"javierng2knus"},"content":" public static final String COMMAND_WORD \u003d \"deletem\";","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"SeaHogs"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Medical information deleted successfully\";","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"javierng2knus"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Delete the medical information of a person. \"","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"javierng2knus"},"content":" + \"Parameter: \\n\"","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"SeaHogs"},"content":" + PREFIX_NRIC + \"NRIC\\n\"","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"SeaHogs"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"SeaHogs"},"content":" + PREFIX_NRIC + \"S1234567D \";","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"SeaHogs"},"content":" private final Nric nric;","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"SeaHogs"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"SeaHogs"},"content":" * Creates an AddCommand to add the specified {@code ContactInformation}","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"SeaHogs"},"content":" public DeleteMedicalCommand(Nric nric) {","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"SeaHogs"},"content":" requireNonNull(nric);","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"SeaHogs"},"content":" this.nric \u003d nric;","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"SeaHogs"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"SeaHogs"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"SeaHogs"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"SeaHogs"},"content":" Person personToEdit \u003d model.findPersonByNric(nric);","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"SeaHogs"},"content":" if (personToEdit \u003d\u003d null) {","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"SeaHogs"},"content":" throw new CommandException(MESSAGE_PERSON_NOT_FOUND);","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"SeaHogs"},"content":" MedicalInformation medicalInformation \u003d new MedicalInformation(new Height(\"\"), new Weight(\"\"));","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"SeaHogs"},"content":" model.updatePersonMedicalInformation(nric, medicalInformation);","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"SeaHogs"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"SeaHogs"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"SeaHogs"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"SeaHogs"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"SeaHogs"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"SeaHogs"},"content":" return true;","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"SeaHogs"},"content":" if (!(other instanceof DeleteMedicalCommand)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"SeaHogs"},"content":" return false;","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"SeaHogs"},"content":" return nric.equals(((DeleteMedicalCommand) other).nric);","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"SeaHogs"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"javierng2knus":3,"SeaHogs":61}},{"path":"src/main/java/vitalconnect/logic/commands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.commands;","lastModifiedDate":"2024-03-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":"MaYuehan"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"javierng2knus"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_NRIC;","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.core.index.Index;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.util.CollectionUtil;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.Messages;","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"javierng2knus"},"content":"import vitalconnect.model.person.identificationinformation.IdentificationInformation;","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.identificationinformation.Name;","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"javierng2knus"},"content":"import vitalconnect.model.person.identificationinformation.Nric;","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26"},{"lineNumber":24,"author":{"gitId":"javierng2knus"},"content":" * Edits the details of an existing person in the clinic.","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the person identified \"","lastModifiedDate":"2016-12-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06"},{"lineNumber":35,"author":{"gitId":"SeaHogs"},"content":" + \"[\" + PREFIX_NRIC + \"NRIC] \";","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26"},{"lineNumber":38,"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":39,"author":{"gitId":"javierng2knus"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the clinic.\";","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","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.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":73,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":84,"author":{"gitId":"javierng2knus"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getIdentificationInformation().getName());","lastModifiedDate":"2024-03-15"},{"lineNumber":85,"author":{"gitId":"javierng2knus"},"content":" Nric updatedNric \u003d editPersonDescriptor.getNric().orElse(personToEdit.getIdentificationInformation().getNric());","lastModifiedDate":"2024-03-15"},{"lineNumber":86,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"javierng2knus"},"content":" IdentificationInformation updatedInfo \u003d new IdentificationInformation(updatedName, updatedNric);","lastModifiedDate":"2024-03-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":89,"author":{"gitId":"javierng2knus"},"content":" if (personToEdit.hasContactInformation()) {","lastModifiedDate":"2024-03-15"},{"lineNumber":90,"author":{"gitId":"SeaHogs"},"content":" return new Person(updatedInfo, personToEdit.getContactInformation());","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"javierng2knus"},"content":" } else {","lastModifiedDate":"2024-03-15"},{"lineNumber":92,"author":{"gitId":"SeaHogs"},"content":" return new Person(updatedInfo);","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"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(\"index\", index)","lastModifiedDate":"2019-02-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":" .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":"2016-12-26"},{"lineNumber":121,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26"},{"lineNumber":122,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26"},{"lineNumber":123,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":124,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26"},{"lineNumber":125,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21"},{"lineNumber":126,"author":{"gitId":"javierng2knus"},"content":" private Nric nric;","lastModifiedDate":"2024-03-15"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":128,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":130,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":131,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11"},{"lineNumber":132,"author":{"gitId":"SeaHogs"},"content":" * A defensive copy of {@code allergyTags} is used internally.","lastModifiedDate":"2024-03-18"},{"lineNumber":133,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":134,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26"},{"lineNumber":135,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15"},{"lineNumber":136,"author":{"gitId":"javierng2knus"},"content":" setNric(toCopy.nric);","lastModifiedDate":"2024-03-15"},{"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":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26"},{"lineNumber":141,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26"},{"lineNumber":143,"author":{"gitId":"SeaHogs"},"content":" return CollectionUtil.isAnyNonNull(name, nric);","lastModifiedDate":"2024-03-18"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":146,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21"},{"lineNumber":147,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":150,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":151,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21"},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":154,"author":{"gitId":"javierng2knus"},"content":" public void setNric(Nric nric) {","lastModifiedDate":"2024-03-15"},{"lineNumber":155,"author":{"gitId":"javierng2knus"},"content":" this.nric \u003d nric;","lastModifiedDate":"2024-03-15"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":158,"author":{"gitId":"javierng2knus"},"content":" public Optional\u003cNric\u003e getNric() {","lastModifiedDate":"2024-03-15"},{"lineNumber":159,"author":{"gitId":"javierng2knus"},"content":" return Optional.ofNullable(nric);","lastModifiedDate":"2024-03-15"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":163,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":164,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":165,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":166,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":169,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":170,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05"},{"lineNumber":171,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":174,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":175,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":176,"author":{"gitId":"SeaHogs"},"content":" \u0026\u0026 Objects.equals(nric, otherEditPersonDescriptor.nric);","lastModifiedDate":"2024-03-18"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":183,"author":{"gitId":"javierng2knus"},"content":" .add(\"nric\", nric)","lastModifiedDate":"2024-03-15"},{"lineNumber":184,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":187,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"javierng2knus":18,"MaYuehan":11,"-":151,"SeaHogs":7}},{"path":"src/main/java/vitalconnect/logic/commands/ExitCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.commands;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-13"},{"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":"javierng2knus"},"content":" public static final String MESSAGE_EXIT_ACKNOWLEDGEMENT \u003d \"Exiting app as requested ...\";","lastModifiedDate":"2024-03-11"},{"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":"MaYuehan"},"content":" return new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT,","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":" false, true, CommandResult.Type.SHOW_PERSONS);","lastModifiedDate":"2024-03-17"},{"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":{"javierng2knus":1,"MaYuehan":4,"-":15}},{"path":"src/main/java/vitalconnect/logic/commands/FindCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.commands;","lastModifiedDate":"2024-03-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":"MaYuehan"},"content":"import vitalconnect.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.Messages;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.identificationinformation.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22"},{"lineNumber":11,"author":{"gitId":"javierng2knus"},"content":" * Finds and lists all persons in clinic whose name contains any of the argument keywords.","lastModifiedDate":"2024-03-11"},{"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":{"javierng2knus":1,"MaYuehan":5,"-":52}},{"path":"src/main/java/vitalconnect/logic/commands/HelpCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.commands;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":" return new CommandResult(SHOWING_HELP_MESSAGE,","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":" true, false, CommandResult.Type.SHOW_PERSONS);","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"MaYuehan":4,"-":18}},{"path":"src/main/java/vitalconnect/logic/commands/ListAptCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.commands;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import java.util.List;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Appointment;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":" * Represents a command to list all appointments in the address book.","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":" * This command allows users to view all scheduled appointments, sorted in the order they were added.","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":"public class ListAptCommand extends Command {","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"javierng2knus"},"content":" public static final String COMMAND_WORD \u003d \"lista\";","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all appointments\";","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" * Executes the command to list all appointments in the address book.","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" * \u003cp\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":" * If no appointments are present in the address book, a message indicating","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" * that no appointments are in the list is returned. Otherwise, all appointments","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" * are listed, each prefixed with an index for easy reference.","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" * @param model {@code Model} which the command should operate on.","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" * @return A {@code CommandResult} object containing the list of appointments if any,","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" * or a message indicating that no appointments are in the list.","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" List\u003cAppointment\u003e lastShownList \u003d model.getFilteredAppointmentList();","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" if (lastShownList.size() \u003c 1) {","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" return new CommandResult(\"No appointment is in the list.\",","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" false, false, CommandResult.Type.SHOW_APPOINTMENTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":" return new CommandResult(MESSAGE_SUCCESS,","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":" false, false, CommandResult.Type.SHOW_APPOINTMENTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"javierng2knus":1,"MaYuehan":44}},{"path":"src/main/java/vitalconnect/logic/commands/ListCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.commands;","lastModifiedDate":"2024-03-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":"MaYuehan"},"content":"import static vitalconnect.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"javierng2knus"},"content":" * Lists all persons in the clinic to the user.","lastModifiedDate":"2024-03-11"},{"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":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all persons\";","lastModifiedDate":"2016-09-21"},{"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":{"javierng2knus":1,"MaYuehan":3,"-":20}},{"path":"src/main/java/vitalconnect/logic/commands/ListContactCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"package vitalconnect.logic.commands;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":" * List all the contact information of a person with their name","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":"public class ListContactCommand extends Command {","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"javierng2knus"},"content":" public static final String COMMAND_WORD \u003d \"listc\";","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"javierng2knus"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all persons with their contact information\";","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"javierng2knus":2,"Ella-e":20}},{"path":"src/main/java/vitalconnect/logic/commands/ListMedicalCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SeaHogs"},"content":"package vitalconnect.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"SeaHogs"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.model.Model.PREDICATE_SHOW_ALL_MEDICAL;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"SeaHogs"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"SeaHogs"},"content":" * List all the medical information of a person with their name","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"SeaHogs"},"content":"public class ListMedicalCommand extends Command {","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"javierng2knus"},"content":" public static final String COMMAND_WORD \u003d \"listm\";","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"javierng2knus"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all persons with their medical information\";","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"SeaHogs"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"SeaHogs"},"content":" * @param model {@code Model} which the command should operate on.","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"SeaHogs"},"content":" * @return {@code CommandResult} that describes the result of executing this command","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"SeaHogs"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"SeaHogs"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"SeaHogs"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"SeaHogs"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_MEDICAL);","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"SeaHogs"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"SeaHogs"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"javierng2knus":2,"SeaHogs":24}},{"path":"src/main/java/vitalconnect/logic/commands/exceptions/CommandException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.commands.exceptions;","lastModifiedDate":"2024-03-13"},{"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":{"MaYuehan":1,"-":16}},{"path":"src/main/java/vitalconnect/logic/parser/AddCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.parser;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"javierng2knus"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_NRIC;","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.AddCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"javierng2knus"},"content":"import vitalconnect.model.person.identificationinformation.IdentificationInformation;","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.identificationinformation.Name;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"javierng2knus"},"content":"import vitalconnect.model.person.identificationinformation.Nric;","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":28,"author":{"gitId":"SeaHogs"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_NRIC);","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":30,"author":{"gitId":"javierng2knus"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_NRIC)","lastModifiedDate":"2024-03-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":35,"author":{"gitId":"javierng2knus"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_NRIC);","lastModifiedDate":"2024-03-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":37,"author":{"gitId":"javierng2knus"},"content":" Nric nric \u003d ParserUtil.parseNric(argMultimap.getValue(PREFIX_NRIC).get());","lastModifiedDate":"2024-03-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":39,"author":{"gitId":"javierng2knus"},"content":" IdentificationInformation iInfo \u003d new IdentificationInformation(name, nric);","lastModifiedDate":"2024-03-15"},{"lineNumber":40,"author":{"gitId":"SeaHogs"},"content":" Person person \u003d new Person(iInfo);","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":49,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"javierng2knus":7,"MaYuehan":7,"-":37,"SeaHogs":2}},{"path":"src/main/java/vitalconnect/logic/parser/AddContactCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"package vitalconnect.logic.parser;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_NRIC;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.logic.commands.AddContactCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.Address;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.ContactInformation;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.Email;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.Phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.identificationinformation.Nric;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"Ella-e"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"Ella-e"},"content":"public class AddContactCommandParser implements Parser\u003cAddContactCommand\u003e {","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"Ella-e"},"content":" public AddContactCommand parse(String userInput) throws ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"Ella-e"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"Ella-e"},"content":" ArgumentTokenizer.tokenize(userInput, PREFIX_NRIC,","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"Ella-e"},"content":" PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"Ella-e"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NRIC)","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"Ella-e"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"Ella-e"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddContactCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"Ella-e"},"content":" Phone phone \u003d new Phone(\"\");","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"Ella-e"},"content":" Email email \u003d new Email(\"\");","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"Ella-e"},"content":" Address address \u003d new Address(\"\");","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"Ella-e"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"Ella-e"},"content":" phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"Ella-e"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"Ella-e"},"content":" email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"Ella-e"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"Ella-e"},"content":" address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"Ella-e"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NRIC, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"Ella-e"},"content":" Nric nric \u003d ParserUtil.parseNric(argMultimap.getValue(PREFIX_NRIC).get());","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"Ella-e"},"content":" // Check if at least one of the fields is present","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"Ella-e"},"content":" if (phone.isEmpty() \u0026\u0026 email.isEmpty() \u0026\u0026 address.isEmpty()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"Ella-e"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddContactCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"Ella-e"},"content":" ContactInformation contactInformation \u003d new ContactInformation(email, phone, address);","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"Ella-e"},"content":" return new AddContactCommand(nric, contactInformation);","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"Ella-e"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"Ella-e"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"Ella-e"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"Ella-e"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"Ella-e"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"Ella-e"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"Ella-e":66}},{"path":"src/main/java/vitalconnect/logic/parser/AddMedInfoCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SeaHogs"},"content":"package vitalconnect.logic.parser;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_ALLERGYTAG;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_HEIGHT;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_NRIC;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_WEIGHT;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"SeaHogs"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"SeaHogs"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.logic.commands.AddMedInfoCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.allergytag.AllergyTag;","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.person.identificationinformation.Nric;","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.person.medicalinformation.Height;","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.person.medicalinformation.MedicalInformation;","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.person.medicalinformation.Weight;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"SeaHogs"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"SeaHogs"},"content":" * Parses input arguments and creates a new AddMedInfoCommand object","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"SeaHogs"},"content":"public class AddMedInfoCommandParser implements Parser\u003cAddMedInfoCommand\u003e {","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"SeaHogs"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"SeaHogs"},"content":" public AddMedInfoCommand parse(String userInput) throws ParseException {","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"SeaHogs"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"SeaHogs"},"content":" ArgumentTokenizer.tokenize(userInput, PREFIX_NRIC, PREFIX_HEIGHT, PREFIX_WEIGHT, PREFIX_ALLERGYTAG);","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"SeaHogs"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NRIC, PREFIX_HEIGHT, PREFIX_WEIGHT)","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"SeaHogs"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"SeaHogs"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddMedInfoCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"SeaHogs"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NRIC, PREFIX_HEIGHT, PREFIX_WEIGHT);","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"SeaHogs"},"content":" Height height \u003d ParserUtil.parseHeight(argMultimap.getValue(PREFIX_HEIGHT).get());","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"SeaHogs"},"content":" Weight weight \u003d ParserUtil.parseWeight(argMultimap.getValue(PREFIX_WEIGHT).get());","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"SeaHogs"},"content":" Set\u003cAllergyTag\u003e allergyTags \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_ALLERGYTAG));","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"SeaHogs"},"content":" Nric nric \u003d ParserUtil.parseNric(argMultimap.getValue(PREFIX_NRIC).get());","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"SeaHogs"},"content":" if (height.isEmpty() \u0026\u0026 weight.isEmpty() \u0026\u0026 Nric.isValidNric(nric.toString())) {","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"SeaHogs"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddMedInfoCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"SeaHogs"},"content":" MedicalInformation medicalInformation \u003d new MedicalInformation(height, weight, allergyTags);","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"SeaHogs"},"content":" return new AddMedInfoCommand(nric, medicalInformation);","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"SeaHogs"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"SeaHogs"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"SeaHogs"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"SeaHogs"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"SeaHogs"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"SeaHogs"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"SeaHogs":56}},{"path":"src/main/java/vitalconnect/logic/parser/ArgumentMultimap.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.parser;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.logic.Messages;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":"}","lastModifiedDate":"2017-03-08"}],"authorContributionMap":{"MaYuehan":3,"-":75}},{"path":"src/main/java/vitalconnect/logic/parser/ArgumentTokenizer.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.parser;","lastModifiedDate":"2024-03-13"},{"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":{"MaYuehan":1,"-":147}},{"path":"src/main/java/vitalconnect/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.parser;","lastModifiedDate":"2024-03-13"},{"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":"javierng2knus"},"content":" public static final Prefix PREFIX_NRIC \u003d new Prefix(\"ic/\");","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":14,"author":{"gitId":"SeaHogs"},"content":" public static final Prefix PREFIX_ALLERGYTAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"SeaHogs"},"content":" public static final Prefix PREFIX_HEIGHT \u003d new Prefix(\"h/\");","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"SeaHogs"},"content":" public static final Prefix PREFIX_WEIGHT \u003d new Prefix(\"w/\");","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"javierng2knus":1,"MaYuehan":1,"-":13,"SeaHogs":3}},{"path":"src/main/java/vitalconnect/logic/parser/ClinicParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.parser;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.commons.core.LogsCenter;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.logic.commands.AddCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.logic.commands.AddContactCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.logic.commands.AddMedInfoCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.logic.commands.ClearCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.logic.commands.Command;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.logic.commands.CreateAptCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.logic.commands.DeleteAptCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.logic.commands.DeleteContactCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.logic.commands.DeleteMedicalCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.logic.commands.EditCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.logic.commands.ExitCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.logic.commands.FindCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.logic.commands.HelpCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.logic.commands.ListAptCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.logic.commands.ListCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.logic.commands.ListMedicalCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"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":"javierng2knus"},"content":"public class ClinicParser {","lastModifiedDate":"2024-03-11"},{"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":"javierng2knus"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ClinicParser.class);","lastModifiedDate":"2024-03-11"},{"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":"","lastModifiedDate":"2016-08-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":85,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":88,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":91,"author":{"gitId":"MaYuehan"},"content":" case CreateAptCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-10"},{"lineNumber":92,"author":{"gitId":"MaYuehan"},"content":" return new CreateAptCommandParser().parse(arguments);","lastModifiedDate":"2024-03-10"},{"lineNumber":93,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":94,"author":{"gitId":"MaYuehan"},"content":" case ListAptCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-10"},{"lineNumber":95,"author":{"gitId":"MaYuehan"},"content":" return new ListAptCommand();","lastModifiedDate":"2024-03-10"},{"lineNumber":96,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":97,"author":{"gitId":"MaYuehan"},"content":" case DeleteAptCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-10"},{"lineNumber":98,"author":{"gitId":"MaYuehan"},"content":" return new DeleteAptCommandParser().parse(arguments);","lastModifiedDate":"2024-03-10"},{"lineNumber":99,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":100,"author":{"gitId":"Ella-e"},"content":" case AddContactCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"Ella-e"},"content":" return new AddContactCommandParser().parse(arguments);","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"Ella-e"},"content":" case DeleteContactCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"Ella-e"},"content":" return new DeleteContactCommandParser().parse(arguments);","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"SeaHogs"},"content":" case AddMedInfoCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-18"},{"lineNumber":107,"author":{"gitId":"SeaHogs"},"content":" return new AddMedInfoCommandParser().parse(arguments);","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":109,"author":{"gitId":"SeaHogs"},"content":" case ListMedicalCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-19"},{"lineNumber":110,"author":{"gitId":"SeaHogs"},"content":" return new ListMedicalCommand();","lastModifiedDate":"2024-03-19"},{"lineNumber":111,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":112,"author":{"gitId":"SeaHogs"},"content":" case DeleteMedicalCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-19"},{"lineNumber":113,"author":{"gitId":"SeaHogs"},"content":" return new DeleteMedicalCommandParser().parse(arguments);","lastModifiedDate":"2024-03-19"},{"lineNumber":114,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":115,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26"},{"lineNumber":116,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29"},{"lineNumber":117,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"javierng2knus":2,"MaYuehan":16,"Ella-e":6,"-":71,"SeaHogs":26}},{"path":"src/main/java/vitalconnect/logic/parser/CreateAptCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.parser;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.CreateAptCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":" * Parses input arguments and creates a new CreateAptCommand object.","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":" * This parser is responsible for handling the raw input arguments provided","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":" * for the creation of an appointment and ensuring they meet the expected format","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":" * which includes the patient\u0027s NRIC and the appointment date and time.","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"public class CreateAptCommandParser {","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":" * Parses the given {@code String} of arguments in the context of the CreateAptCommand","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":" * and returns a CreateAptCommand object for execution.","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" * \u003cp\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" * This method expects the arguments to contain the NRIC of a patient followed by","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":" * the \u0027/time\u0027 keyword and the appointment datetime in \u0027dd/MM/yyyy HHmm\u0027 format.","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" * If the arguments do not conform to this expected format, a ParseException is thrown.","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":" * @param args The input arguments to be parsed, including the patient\u0027s NRIC and","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" * the appointment datetime.","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" * @return A new CreateAptCommand object encapsulating the parsed patient NRIC","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" * and appointment datetime.","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" * @throws ParseException If the provided arguments do not conform to the expected","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" * format or if other parsing errors occur.","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" public CreateAptCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" final String[] nameAndDateTime \u003d args.trim().split(\"/time\", 2);","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" if (nameAndDateTime.length \u003c 2) {","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" throw new ParseException(CreateAptCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" String ic \u003d nameAndDateTime[0].trim();","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" String dateTimeStr \u003d nameAndDateTime[1].trim();","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":" return new CreateAptCommand(ic, dateTimeStr);","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"MaYuehan":43}},{"path":"src/main/java/vitalconnect/logic/parser/DeleteAptCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.parser;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.DeleteAptCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":" * Parses input arguments to create a new {@code DeleteAptCommand} object.","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":" * This parser is responsible for interpreting the raw input arguments provided","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":" * for the deletion of an appointment and ensuring they meet the expected format.","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"public class DeleteAptCommandParser implements Parser\u003cDeleteAptCommand\u003e {","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteAptCommand","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":" * and returns an instance of DeleteAptCommand for execution.","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" * \u003cp\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":" * The method expects the arguments to contain an index followed by the \u0027/name\u0027 keyword","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":" * and the patient\u0027s name. The index should be a positive integer indicating the position","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" * of the appointment in the list as shown to the user. The patient\u0027s name identifies","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" * whose appointment is to be deleted. If the arguments do not conform to this expected","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":" * format, a ParseException is thrown with a message indicating proper usage.","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" * @param args The input arguments to be parsed.","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":" * @return A new instance of DeleteAptCommand encapsulating the specified index","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" * and patient\u0027s name for the appointment to be deleted.","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" * @throws ParseException If the provided arguments do not conform to the expected","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" * format or if other parsing errors occur, such as an invalid","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" * integer for the index.","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" public DeleteAptCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" try {","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" if (!trimmedArgs.matches(\"\\\\d+ /name .+\")) {","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" throw new ParseException(DeleteAptCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" String[] parts \u003d trimmedArgs.split(\"/name\");","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" if (parts.length !\u003d 2) {","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" throw new ParseException(DeleteAptCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":" int index \u003d Integer.parseInt(parts[0].trim());","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":" String patientName \u003d parts[1].trim();","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":" if (index \u003c\u003d 0) {","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":" throw new ParseException(\"Index must be a positive integer.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":" return new DeleteAptCommand(index, patientName);","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":" throw new ParseException(\"The index provided is not a valid integer.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"MaYuehan":53}},{"path":"src/main/java/vitalconnect/logic/parser/DeleteCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.parser;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.core.index.Index;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-13"},{"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":"-"},"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":"2017-03-11"},{"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":"2017-05-15"},{"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":{"MaYuehan":5,"-":24}},{"path":"src/main/java/vitalconnect/logic/parser/DeleteContactCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"package vitalconnect.logic.parser;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_NRIC;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.logic.commands.DeleteContactCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.identificationinformation.Nric;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":" * Parser of deleteContactCommand","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":"public class DeleteContactCommandParser implements Parser\u003cDeleteContactCommand\u003e {","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":" public DeleteContactCommand parse(String userInput) throws ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":" ArgumentTokenizer.tokenize(userInput, PREFIX_NRIC);","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NRIC)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"Ella-e"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteContactCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"Ella-e"},"content":" Nric nric \u003d ParserUtil.parseNric(argMultimap.getValue(PREFIX_NRIC).get());","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"Ella-e"},"content":" return new DeleteContactCommand(nric);","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"Ella-e"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"Ella-e"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"Ella-e"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"Ella-e"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"Ella-e"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"Ella-e"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"Ella-e":34}},{"path":"src/main/java/vitalconnect/logic/parser/DeleteMedicalCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SeaHogs"},"content":"package vitalconnect.logic.parser;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_NRIC;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"SeaHogs"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.logic.commands.DeleteMedicalCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.person.identificationinformation.Nric;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"SeaHogs"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"SeaHogs"},"content":" * Parses user input into a {@code DeleteMedicalCommand}.","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"SeaHogs"},"content":" * This class ensures that the user input contains the necessary prefix for deleting medical information.","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"SeaHogs"},"content":"public class DeleteMedicalCommandParser implements Parser\u003cDeleteMedicalCommand\u003e {","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"SeaHogs"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"SeaHogs"},"content":" * Parses the user input and returns a {@code DeleteMedicalCommand} if the input is valid.","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"SeaHogs"},"content":" * @param userInput The user input string.","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"SeaHogs"},"content":" * @return A {@code DeleteMedicalCommand} representing the parsed user input.","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"SeaHogs"},"content":" * @throws ParseException If the user input does not conform to the expected format.","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"SeaHogs"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"SeaHogs"},"content":" public DeleteMedicalCommand parse(String userInput) throws ParseException {","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"SeaHogs"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"SeaHogs"},"content":" ArgumentTokenizer.tokenize(userInput, PREFIX_NRIC);","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"SeaHogs"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NRIC)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"SeaHogs"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteMedicalCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"SeaHogs"},"content":" Nric nric \u003d ParserUtil.parseNric(argMultimap.getValue(PREFIX_NRIC).get());","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"SeaHogs"},"content":" return new DeleteMedicalCommand(nric);","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"SeaHogs"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"SeaHogs"},"content":" * Checks if all the specified prefixes are present and non-empty in the given {@code ArgumentMultimap}.","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"SeaHogs"},"content":" * @param argumentMultimap The {@code ArgumentMultimap} containing the parsed arguments.","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"SeaHogs"},"content":" * @param prefixes The prefixes to check.","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"SeaHogs"},"content":" * @return {@code true} if all prefixes are present and non-empty, {@code false} otherwise.","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"SeaHogs"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"SeaHogs"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"SeaHogs"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"SeaHogs":43}},{"path":"src/main/java/vitalconnect/logic/parser/EditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.parser;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import static vitalconnect.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_ALLERGYTAG;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"javierng2knus"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_NRIC;","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.core.index.Index;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.EditCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-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 input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":27,"author":{"gitId":"SeaHogs"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_NRIC, PREFIX_ALLERGYTAG);","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10"},{"lineNumber":34,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":37,"author":{"gitId":"javierng2knus"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_NRIC);","lastModifiedDate":"2024-03-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":39,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-01-26"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":41,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":42,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":44,"author":{"gitId":"javierng2knus"},"content":" if (argMultimap.getValue(PREFIX_NRIC).isPresent()) {","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"javierng2knus"},"content":" editPersonDescriptor.setNric(ParserUtil.parseNric(argMultimap.getValue(PREFIX_NRIC).get()));","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":54,"author":{"gitId":"SeaHogs"},"content":" // for later use","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"SeaHogs"},"content":" // /**","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"SeaHogs"},"content":" // * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cAllergyTag\u003e} if {@code tags} is non-empty.","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"SeaHogs"},"content":" // * If {@code tags} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"SeaHogs"},"content":" // * {@code Set\u003cAllergyTag\u003e} containing zero tags.","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"SeaHogs"},"content":" // */","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"SeaHogs"},"content":" // private Optional\u003cSet\u003cAllergyTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"SeaHogs"},"content":" // assert tags !\u003d null;","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"SeaHogs"},"content":" //","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"SeaHogs"},"content":" // if (tags.isEmpty()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"SeaHogs"},"content":" // return Optional.empty();","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"SeaHogs"},"content":" // }","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"SeaHogs"},"content":" // Collection\u003cString\u003e tagSet \u003d tags.size() \u003d\u003d 1 \u0026\u0026 tags.contains(\"\") ? Collections.emptySet() : tags;","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"SeaHogs"},"content":" // return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"SeaHogs"},"content":" // }","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"javierng2knus":4,"MaYuehan":7,"-":41,"SeaHogs":17}},{"path":"src/main/java/vitalconnect/logic/parser/FindCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.parser;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-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":"MaYuehan"},"content":"import vitalconnect.logic.commands.FindCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.identificationinformation.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-13"},{"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":{"MaYuehan":5,"-":28}},{"path":"src/main/java/vitalconnect/logic/parser/Parser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.parser;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.Command;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-13"},{"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":{"MaYuehan":3,"-":13}},{"path":"src/main/java/vitalconnect/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.parser;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.commons.core.index.Index;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.util.StringUtil;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.allergytag.AllergyTag;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.contactinformation.Address;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.contactinformation.Email;","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.contactinformation.Phone;","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.identificationinformation.Name;","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"javierng2knus"},"content":"import vitalconnect.model.person.identificationinformation.Nric;","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.person.medicalinformation.Height;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.person.medicalinformation.Weight;","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18"},{"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":"javierng2knus"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":57,"author":{"gitId":"javierng2knus"},"content":" * Parses a {@code String nric} into a {@code Nric}.","lastModifiedDate":"2024-03-15"},{"lineNumber":58,"author":{"gitId":"javierng2knus"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-15"},{"lineNumber":59,"author":{"gitId":"javierng2knus"},"content":" *","lastModifiedDate":"2024-03-15"},{"lineNumber":60,"author":{"gitId":"javierng2knus"},"content":" * @throws ParseException if the given {@code nric} is invalid.","lastModifiedDate":"2024-03-15"},{"lineNumber":61,"author":{"gitId":"javierng2knus"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":62,"author":{"gitId":"javierng2knus"},"content":" public static Nric parseNric(String nric) throws ParseException {","lastModifiedDate":"2024-03-15"},{"lineNumber":63,"author":{"gitId":"javierng2knus"},"content":" requireNonNull(nric);","lastModifiedDate":"2024-03-15"},{"lineNumber":64,"author":{"gitId":"javierng2knus"},"content":" String trimmedName \u003d nric.trim();","lastModifiedDate":"2024-03-15"},{"lineNumber":65,"author":{"gitId":"javierng2knus"},"content":" if (!Nric.isValidNric(trimmedName)) {","lastModifiedDate":"2024-03-15"},{"lineNumber":66,"author":{"gitId":"javierng2knus"},"content":" throw new ParseException(Nric.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":67,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":68,"author":{"gitId":"javierng2knus"},"content":" return new Nric(trimmedName);","lastModifiedDate":"2024-03-15"},{"lineNumber":69,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":70,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":74,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":78,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30"},{"lineNumber":79,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":80,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":81,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","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":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":89,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":93,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30"},{"lineNumber":94,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":95,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":96,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":98,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","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":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":104,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":108,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":109,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":110,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":111,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":113,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","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":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":118,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":119,"author":{"gitId":"SeaHogs"},"content":" * Parses a {@code String allergytag} into a {@code AllergyTag}.","lastModifiedDate":"2024-03-18"},{"lineNumber":120,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":121,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":122,"author":{"gitId":"SeaHogs"},"content":" * @throws ParseException if the given {@code allergytag} is invalid.","lastModifiedDate":"2024-03-18"},{"lineNumber":123,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":124,"author":{"gitId":"SeaHogs"},"content":" public static AllergyTag parseTag(String tag) throws ParseException {","lastModifiedDate":"2024-03-18"},{"lineNumber":125,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30"},{"lineNumber":126,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":127,"author":{"gitId":"SeaHogs"},"content":" if (!AllergyTag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":128,"author":{"gitId":"SeaHogs"},"content":" throw new ParseException(AllergyTag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":130,"author":{"gitId":"SeaHogs"},"content":" return new AllergyTag(trimmedTag);","lastModifiedDate":"2024-03-18"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":133,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":134,"author":{"gitId":"SeaHogs"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cAllergyTag\u003e}.","lastModifiedDate":"2024-03-18"},{"lineNumber":135,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":136,"author":{"gitId":"SeaHogs"},"content":" public static Set\u003cAllergyTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2024-03-18"},{"lineNumber":137,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15"},{"lineNumber":138,"author":{"gitId":"SeaHogs"},"content":" final Set\u003cAllergyTag\u003e allergyTagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-18"},{"lineNumber":139,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11"},{"lineNumber":140,"author":{"gitId":"SeaHogs"},"content":" allergyTagSet.add(parseTag(tagName));","lastModifiedDate":"2024-03-18"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":142,"author":{"gitId":"SeaHogs"},"content":" return allergyTagSet;","lastModifiedDate":"2024-03-18"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":144,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":145,"author":{"gitId":"SeaHogs"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":146,"author":{"gitId":"SeaHogs"},"content":" * Parses a {@code String height} into a {@code HEIGHT}.","lastModifiedDate":"2024-03-18"},{"lineNumber":147,"author":{"gitId":"SeaHogs"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-18"},{"lineNumber":148,"author":{"gitId":"SeaHogs"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":149,"author":{"gitId":"SeaHogs"},"content":" * @throws ParseException if the given {@code HEIGHT} is invalid.","lastModifiedDate":"2024-03-18"},{"lineNumber":150,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":151,"author":{"gitId":"SeaHogs"},"content":" public static Height parseHeight(String height) {","lastModifiedDate":"2024-03-18"},{"lineNumber":152,"author":{"gitId":"SeaHogs"},"content":" requireNonNull(height);","lastModifiedDate":"2024-03-18"},{"lineNumber":153,"author":{"gitId":"SeaHogs"},"content":" String trimmedHeight \u003d height.trim();","lastModifiedDate":"2024-03-18"},{"lineNumber":154,"author":{"gitId":"SeaHogs"},"content":" return new Height(trimmedHeight);","lastModifiedDate":"2024-03-18"},{"lineNumber":155,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":156,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":157,"author":{"gitId":"SeaHogs"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":158,"author":{"gitId":"SeaHogs"},"content":" * Parses a {@code String weight} into a {@code WEIGHT}.","lastModifiedDate":"2024-03-18"},{"lineNumber":159,"author":{"gitId":"SeaHogs"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-18"},{"lineNumber":160,"author":{"gitId":"SeaHogs"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":161,"author":{"gitId":"SeaHogs"},"content":" * @throws ParseException if the given {@code WEIGHT} is invalid.","lastModifiedDate":"2024-03-18"},{"lineNumber":162,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":163,"author":{"gitId":"SeaHogs"},"content":" public static Weight parseWeight(String weight) {","lastModifiedDate":"2024-03-18"},{"lineNumber":164,"author":{"gitId":"SeaHogs"},"content":" requireNonNull(weight);","lastModifiedDate":"2024-03-18"},{"lineNumber":165,"author":{"gitId":"SeaHogs"},"content":" String trimmedWeight \u003d weight.trim();","lastModifiedDate":"2024-03-18"},{"lineNumber":166,"author":{"gitId":"SeaHogs"},"content":" return new Weight(trimmedWeight);","lastModifiedDate":"2024-03-18"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":168,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"javierng2knus":16,"MaYuehan":8,"-":105,"SeaHogs":39}},{"path":"src/main/java/vitalconnect/logic/parser/Prefix.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.parser;","lastModifiedDate":"2024-03-13"},{"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":{"MaYuehan":1,"-":41}},{"path":"src/main/java/vitalconnect/logic/parser/exceptions/ParseException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.parser.exceptions;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-13"},{"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":{"MaYuehan":2,"-":15}},{"path":"src/main/java/vitalconnect/model/Appointment.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.model;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":" * Represents an appointment with a patient. Each appointment has a patient name","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":" * and a scheduled date and time.","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"public class Appointment {","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":" private String patientName;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":" private String patientIc;","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":" private LocalDateTime dateTime;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" * Constructs an {@code Appointment} with the specified patient name and date/time.","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":" * @param patientName The name of the patient for the appointment.","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" * @param dateTime The date and time of the appointment.","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":" public Appointment(String patientName, String patientIc, LocalDateTime dateTime) {","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" this.patientIc \u003d patientIc;","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" this.patientName \u003d patientName;","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":" this.dateTime \u003d dateTime;","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" * Returns the name of the patient associated with this appointment.","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" * @return The patient\u0027s name.","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" public String getPatientName() {","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" return patientName;","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" * Returns the NRIC of the patient associated with this appointment.","lastModifiedDate":"2024-03-23"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" * @return The patient\u0027s ic.","lastModifiedDate":"2024-03-23"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" public String getPatientIc() {","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":" return patientIc;","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":" * Returns the date and time of the appointment.","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":" * @return The date and time of the appointment.","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":" public LocalDateTime getDateTime() {","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":" return dateTime;","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"MaYuehan"},"content":" * Returns a string representation of the appointment, including the patient\u0027s name","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":" * and the date and time of the appointment.","lastModifiedDate":"2024-03-13"},{"lineNumber":56,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"MaYuehan"},"content":" * @return A string representation of the appointment.","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":60,"author":{"gitId":"MaYuehan"},"content":" public String toString() {","lastModifiedDate":"2024-03-13"},{"lineNumber":61,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":62,"author":{"gitId":"MaYuehan"},"content":" return \"Appointment with \" + patientName + \" on \" + dateTime;","lastModifiedDate":"2024-03-13"},{"lineNumber":63,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":64,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":65,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":66,"author":{"gitId":"MaYuehan"},"content":" * Checks if this appointment is equal to another object. Two appointments are equal","lastModifiedDate":"2024-03-23"},{"lineNumber":67,"author":{"gitId":"MaYuehan"},"content":" * if they have the same patient name, patient NRIC, and date/time.","lastModifiedDate":"2024-03-23"},{"lineNumber":68,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-23"},{"lineNumber":69,"author":{"gitId":"MaYuehan"},"content":" * @param that The object to compare with this appointment.","lastModifiedDate":"2024-03-23"},{"lineNumber":70,"author":{"gitId":"MaYuehan"},"content":" * @return true if the given object represents an appointment equivalent to this appointment, false otherwise.","lastModifiedDate":"2024-03-23"},{"lineNumber":71,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":72,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":73,"author":{"gitId":"MaYuehan"},"content":" public boolean equals(Object that) {","lastModifiedDate":"2024-03-23"},{"lineNumber":74,"author":{"gitId":"MaYuehan"},"content":" if (that \u003d\u003d this) {","lastModifiedDate":"2024-03-23"},{"lineNumber":75,"author":{"gitId":"MaYuehan"},"content":" return true;","lastModifiedDate":"2024-03-23"},{"lineNumber":76,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":77,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":78,"author":{"gitId":"MaYuehan"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-23"},{"lineNumber":79,"author":{"gitId":"MaYuehan"},"content":" if (!(that instanceof Appointment)) {","lastModifiedDate":"2024-03-23"},{"lineNumber":80,"author":{"gitId":"MaYuehan"},"content":" return false;","lastModifiedDate":"2024-03-23"},{"lineNumber":81,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":82,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":83,"author":{"gitId":"MaYuehan"},"content":" Appointment otherApt \u003d (Appointment) that;","lastModifiedDate":"2024-03-23"},{"lineNumber":84,"author":{"gitId":"MaYuehan"},"content":" return patientName.equals(otherApt.patientName)","lastModifiedDate":"2024-03-23"},{"lineNumber":85,"author":{"gitId":"MaYuehan"},"content":" \u0026\u0026 patientIc.equals(otherApt.patientIc)","lastModifiedDate":"2024-03-23"},{"lineNumber":86,"author":{"gitId":"MaYuehan"},"content":" \u0026\u0026 dateTime.equals(otherApt.dateTime);","lastModifiedDate":"2024-03-23"},{"lineNumber":87,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":88,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":89,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-03-13"},{"lineNumber":90,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"MaYuehan":90}},{"path":"src/main/java/vitalconnect/model/Clinic.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.model;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.UniquePersonList;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.identificationinformation.Nric;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"javierng2knus"},"content":" * Wraps all data at the clinic level","lastModifiedDate":"2024-03-11"},{"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":"javierng2knus"},"content":"public class Clinic implements ReadOnlyClinic {","lastModifiedDate":"2024-03-11"},{"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":"javierng2knus"},"content":" public Clinic() {}","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"javierng2knus"},"content":" * Creates an Clinic using the Persons in the {@code toBeCopied}","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"javierng2knus"},"content":" public Clinic(ReadOnlyClinic toBeCopied) {","lastModifiedDate":"2024-03-11"},{"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":"-"},"content":" * Replaces the contents of the person list with {@code persons}.","lastModifiedDate":"2018-08-07"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2018-08-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void setPersons(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-08-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.persons.setPersons(persons);","lastModifiedDate":"2016-10-19"},{"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":"javierng2knus"},"content":" * Resets the existing data of this {@code Clinic} with {@code newData}.","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":55,"author":{"gitId":"javierng2knus"},"content":" public void resetData(ReadOnlyClinic newData) {","lastModifiedDate":"2024-03-11"},{"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":"javierng2knus"},"content":" * Returns true if a person with the same identity as {@code person} exists in the clinic.","lastModifiedDate":"2024-03-11"},{"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":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":72,"author":{"gitId":"javierng2knus"},"content":" * Adds a person to the clinic.","lastModifiedDate":"2024-03-11"},{"lineNumber":73,"author":{"gitId":"javierng2knus"},"content":" * The person must not already exist in the clinic.","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void addPerson(Person p) {","lastModifiedDate":"2018-08-07"},{"lineNumber":76,"author":{"gitId":"-"},"content":" persons.add(p);","lastModifiedDate":"2018-03-29"},{"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":"-"},"content":" * Replaces the given person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2018-01-10"},{"lineNumber":81,"author":{"gitId":"javierng2knus"},"content":" * {@code target} must exist in the clinic.","lastModifiedDate":"2024-03-11"},{"lineNumber":82,"author":{"gitId":"javierng2knus"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the clinic.","lastModifiedDate":"2024-03-11"},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":85,"author":{"gitId":"-"},"content":" requireNonNull(editedPerson);","lastModifiedDate":"2018-01-10"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" persons.setPerson(target, editedPerson);","lastModifiedDate":"2018-03-29"},{"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":"javierng2knus"},"content":" * Removes {@code key} from this {@code Clinic}.","lastModifiedDate":"2024-03-11"},{"lineNumber":92,"author":{"gitId":"javierng2knus"},"content":" * {@code key} must exist in the clinic.","lastModifiedDate":"2024-03-11"},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void removePerson(Person key) {","lastModifiedDate":"2018-08-07"},{"lineNumber":95,"author":{"gitId":"-"},"content":" persons.remove(key);","lastModifiedDate":"2018-02-28"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" //// util methods","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":" .add(\"persons\", persons)","lastModifiedDate":"2019-02-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":109,"author":{"gitId":"-"},"content":" return persons.asUnmodifiableObservableList();","lastModifiedDate":"2018-04-05"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-01"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-01"},{"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":"javierng2knus"},"content":" if (!(other instanceof Clinic)) {","lastModifiedDate":"2024-03-11"},{"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":"javierng2knus"},"content":" Clinic otherClinic \u003d (Clinic) other;","lastModifiedDate":"2024-03-11"},{"lineNumber":124,"author":{"gitId":"javierng2knus"},"content":" return persons.equals(otherClinic.persons);","lastModifiedDate":"2024-03-11"},{"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 persons.hashCode();","lastModifiedDate":"2018-03-29"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":131,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"Ella-e"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"Ella-e"},"content":" * Returns true if a person with the same name as {@code name} exists in the clinic.","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"Ella-e"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":135,"author":{"gitId":"Ella-e"},"content":" public Person findPersonByNric(Nric nric) {","lastModifiedDate":"2024-03-17"},{"lineNumber":136,"author":{"gitId":"Ella-e"},"content":" requireNonNull(nric);","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"Ella-e"},"content":" for (Person p : persons) {","lastModifiedDate":"2024-03-17"},{"lineNumber":138,"author":{"gitId":"Ella-e"},"content":" if (p.getIdentificationInformation().getNric().nric.equalsIgnoreCase(nric.toString())) {","lastModifiedDate":"2024-03-17"},{"lineNumber":139,"author":{"gitId":"Ella-e"},"content":" return p;","lastModifiedDate":"2024-03-17"},{"lineNumber":140,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":141,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"Ella-e"},"content":" return null;","lastModifiedDate":"2024-03-17"},{"lineNumber":143,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":144,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"javierng2knus":17,"MaYuehan":4,"Ella-e":14,"-":109}},{"path":"src/main/java/vitalconnect/model/Model.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.model;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import java.util.List;","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.core.GuiSettings;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.ContactInformation;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.identificationinformation.Nric;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.person.medicalinformation.MedicalInformation;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2017-08-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":" Predicate\u003cPerson\u003e PREDICATE_SHOW_ALL_PERSONS \u003d unused -\u003e true;","lastModifiedDate":"2018-01-10"},{"lineNumber":20,"author":{"gitId":"SeaHogs"},"content":" Predicate\u003cPerson\u003e PREDICATE_SHOW_ALL_MEDICAL \u003d Person::hasMedicalInformation;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","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":" * 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":" * Sets 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":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"javierng2knus"},"content":" * Returns the user prefs\u0027 clinic file path.","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"javierng2knus"},"content":" Path getClinicFilePath();","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"javierng2knus"},"content":" * Sets the user prefs\u0027 clinic file path.","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"javierng2knus"},"content":" void setClinicFilePath(Path clinicFilePath);","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"javierng2knus"},"content":" * Replaces clinic data with the data in {@code clinic}.","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"javierng2knus"},"content":" void setClinic(ReadOnlyClinic clinic);","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":56,"author":{"gitId":"javierng2knus"},"content":" /** Returns the Clinic */","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"javierng2knus"},"content":" ReadOnlyClinic getClinic();","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":60,"author":{"gitId":"javierng2knus"},"content":" * Returns true if a person with the same identity as {@code person} exists in the clinic.","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":62,"author":{"gitId":"-"},"content":" boolean hasPerson(Person person);","lastModifiedDate":"2018-08-06"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * Deletes the given person.","lastModifiedDate":"2018-08-07"},{"lineNumber":66,"author":{"gitId":"javierng2knus"},"content":" * The person must exist in the clinic.","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":" void deletePerson(Person target);","lastModifiedDate":"2018-08-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Adds the given person.","lastModifiedDate":"2018-08-07"},{"lineNumber":72,"author":{"gitId":"javierng2knus"},"content":" * {@code person} must not already exist in the clinic.","lastModifiedDate":"2024-03-11"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":74,"author":{"gitId":"-"},"content":" void addPerson(Person person);","lastModifiedDate":"2018-08-07"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} with {@code editedPerson}.","lastModifiedDate":"2017-06-07"},{"lineNumber":78,"author":{"gitId":"javierng2knus"},"content":" * {@code target} must exist in the clinic.","lastModifiedDate":"2024-03-11"},{"lineNumber":79,"author":{"gitId":"javierng2knus"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the clinic.","lastModifiedDate":"2024-03-11"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" void setPerson(Person target, Person editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered person list */","lastModifiedDate":"2017-09-01"},{"lineNumber":84,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Updates the filter of the filtered person list to filter by the given {@code predicate}.","lastModifiedDate":"2017-08-05"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05"},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":" void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate);","lastModifiedDate":"2018-01-10"},{"lineNumber":91,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":92,"author":{"gitId":"MaYuehan"},"content":" boolean doesPersonExist(String name);","lastModifiedDate":"2024-03-13"},{"lineNumber":93,"author":{"gitId":"MaYuehan"},"content":" boolean doesIcExist(String name);","lastModifiedDate":"2024-03-23"},{"lineNumber":94,"author":{"gitId":"MaYuehan"},"content":" void addAppointment(Appointment appointment);","lastModifiedDate":"2024-03-10"},{"lineNumber":95,"author":{"gitId":"MaYuehan"},"content":" void setAppointments(List\u003cAppointment\u003e appointments);","lastModifiedDate":"2024-03-23"},{"lineNumber":96,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":97,"author":{"gitId":"MaYuehan"},"content":" ObservableList\u003cAppointment\u003e getFilteredAppointmentList();","lastModifiedDate":"2024-03-10"},{"lineNumber":98,"author":{"gitId":"MaYuehan"},"content":" void deleteAppointment(Appointment appointment);","lastModifiedDate":"2024-03-10"},{"lineNumber":99,"author":{"gitId":"Ella-e"},"content":" Person findPersonByNric(Nric nric);","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"Ella-e"},"content":" void updatePersonContactInformation(Nric nric, ContactInformation contactInformation);","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":102,"author":{"gitId":"SeaHogs"},"content":" void updatePersonMedicalInformation(Nric nric, MedicalInformation medicalInformation);","lastModifiedDate":"2024-03-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"javierng2knus":13,"MaYuehan":12,"Ella-e":4,"-":70,"SeaHogs":4}},{"path":"src/main/java/vitalconnect/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.model;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import static vitalconnect.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import java.util.List;","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.core.GuiSettings;","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.core.LogsCenter;","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.ContactInformation;","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.identificationinformation.Nric;","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.person.medicalinformation.MedicalInformation;","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"javierng2knus"},"content":" * Represents the in-memory model of the clinic data.","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"javierng2knus"},"content":" private final Clinic clinic;","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2018-01-10"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" private final ObservableList\u003cAppointment\u003e appointments;","lastModifiedDate":"2024-03-23"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"javierng2knus"},"content":" * Initializes a ModelManager with the given clinic and userPrefs.","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":" public ModelManager(ReadOnlyClinic clinic, ReadOnlyUserPrefs userPrefs, List\u003cAppointment\u003e loadedAppointments) {","lastModifiedDate":"2024-03-23"},{"lineNumber":40,"author":{"gitId":"javierng2knus"},"content":" requireAllNonNull(clinic, userPrefs);","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":42,"author":{"gitId":"javierng2knus"},"content":" logger.fine(\"Initializing with clinic: \" + clinic + \" and user prefs \" + userPrefs);","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"javierng2knus"},"content":" this.clinic \u003d new Clinic(clinic);","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":46,"author":{"gitId":"javierng2knus"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(this.clinic.getPersonList());","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":" this.appointments \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-03-10"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":" if (loadedAppointments !\u003d null) {","lastModifiedDate":"2024-03-23"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":" this.appointments.setAll(loadedAppointments);","lastModifiedDate":"2024-03-23"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":" this(new Clinic(), new UserPrefs(), new ArrayList\u003c\u003e());","lastModifiedDate":"2024-03-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"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":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":62,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06"},{"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 ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return userPrefs;","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 GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","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 setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","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":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":83,"author":{"gitId":"javierng2knus"},"content":" public Path getClinicFilePath() {","lastModifiedDate":"2024-03-11"},{"lineNumber":84,"author":{"gitId":"javierng2knus"},"content":" return userPrefs.getClinicFilePath();","lastModifiedDate":"2024-03-11"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":88,"author":{"gitId":"javierng2knus"},"content":" public void setClinicFilePath(Path clinicFilePath) {","lastModifiedDate":"2024-03-11"},{"lineNumber":89,"author":{"gitId":"javierng2knus"},"content":" requireNonNull(clinicFilePath);","lastModifiedDate":"2024-03-11"},{"lineNumber":90,"author":{"gitId":"javierng2knus"},"content":" userPrefs.setClinicFilePath(clinicFilePath);","lastModifiedDate":"2024-03-11"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":93,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":94,"author":{"gitId":"MaYuehan"},"content":" * Adds the given appointment to the clinic.","lastModifiedDate":"2024-03-23"},{"lineNumber":95,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-23"},{"lineNumber":96,"author":{"gitId":"MaYuehan"},"content":" * @param appointment The appointment to add.","lastModifiedDate":"2024-03-23"},{"lineNumber":97,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":98,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-10"},{"lineNumber":99,"author":{"gitId":"MaYuehan"},"content":" public void addAppointment(Appointment appointment) {","lastModifiedDate":"2024-03-10"},{"lineNumber":100,"author":{"gitId":"MaYuehan"},"content":" requireNonNull(appointment);","lastModifiedDate":"2024-03-10"},{"lineNumber":101,"author":{"gitId":"MaYuehan"},"content":" appointments.add(appointment);","lastModifiedDate":"2024-03-10"},{"lineNumber":102,"author":{"gitId":"MaYuehan"},"content":" FXCollections.sort(appointments, Comparator.comparing(Appointment::getDateTime));","lastModifiedDate":"2024-03-13"},{"lineNumber":103,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":104,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":105,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":106,"author":{"gitId":"MaYuehan"},"content":" * Replaces the current list of appointments with the provided list.","lastModifiedDate":"2024-03-23"},{"lineNumber":107,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-23"},{"lineNumber":108,"author":{"gitId":"MaYuehan"},"content":" * @param appointments The list of appointments to set.","lastModifiedDate":"2024-03-23"},{"lineNumber":109,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":110,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":111,"author":{"gitId":"MaYuehan"},"content":" public void setAppointments(List\u003cAppointment\u003e appointments) {","lastModifiedDate":"2024-03-23"},{"lineNumber":112,"author":{"gitId":"MaYuehan"},"content":" this.appointments.setAll(appointments);","lastModifiedDate":"2024-03-23"},{"lineNumber":113,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":114,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":115,"author":{"gitId":"MaYuehan"},"content":" * Returns an unmodifiable view of the list of appointments.","lastModifiedDate":"2024-03-23"},{"lineNumber":116,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-23"},{"lineNumber":117,"author":{"gitId":"MaYuehan"},"content":" * @return An unmodifiable view of the list of appointments.","lastModifiedDate":"2024-03-23"},{"lineNumber":118,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":119,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-10"},{"lineNumber":120,"author":{"gitId":"MaYuehan"},"content":" public ObservableList\u003cAppointment\u003e getFilteredAppointmentList() {","lastModifiedDate":"2024-03-10"},{"lineNumber":121,"author":{"gitId":"MaYuehan"},"content":" return appointments;","lastModifiedDate":"2024-03-10"},{"lineNumber":122,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":123,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":124,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":125,"author":{"gitId":"MaYuehan"},"content":" * Deletes the specified appointment from the clinic.","lastModifiedDate":"2024-03-23"},{"lineNumber":126,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-23"},{"lineNumber":127,"author":{"gitId":"MaYuehan"},"content":" * @param appointment The appointment to delete.","lastModifiedDate":"2024-03-23"},{"lineNumber":128,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":129,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-10"},{"lineNumber":130,"author":{"gitId":"MaYuehan"},"content":" public void deleteAppointment(Appointment appointment) {","lastModifiedDate":"2024-03-10"},{"lineNumber":131,"author":{"gitId":"MaYuehan"},"content":" appointments.remove(appointment);","lastModifiedDate":"2024-03-10"},{"lineNumber":132,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":133,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":135,"author":{"gitId":"javierng2knus"},"content":" public void setClinic(ReadOnlyClinic clinic) {","lastModifiedDate":"2024-03-11"},{"lineNumber":136,"author":{"gitId":"javierng2knus"},"content":" this.clinic.resetData(clinic);","lastModifiedDate":"2024-03-11"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":140,"author":{"gitId":"javierng2knus"},"content":" public ReadOnlyClinic getClinic() {","lastModifiedDate":"2024-03-11"},{"lineNumber":141,"author":{"gitId":"javierng2knus"},"content":" return clinic;","lastModifiedDate":"2024-03-11"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":145,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":146,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":147,"author":{"gitId":"javierng2knus"},"content":" return clinic.hasPerson(person);","lastModifiedDate":"2024-03-11"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":150,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":151,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15"},{"lineNumber":152,"author":{"gitId":"javierng2knus"},"content":" clinic.removePerson(target);","lastModifiedDate":"2024-03-11"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":156,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":157,"author":{"gitId":"javierng2knus"},"content":" clinic.addPerson(person);","lastModifiedDate":"2024-03-11"},{"lineNumber":158,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26"},{"lineNumber":161,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":163,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":165,"author":{"gitId":"javierng2knus"},"content":" clinic.setPerson(target, editedPerson);","lastModifiedDate":"2024-03-11"},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":167,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":168,"author":{"gitId":"MaYuehan"},"content":" * Checks if a person with the specified name exists in the clinic.","lastModifiedDate":"2024-03-23"},{"lineNumber":169,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-23"},{"lineNumber":170,"author":{"gitId":"MaYuehan"},"content":" * @param name The name of the person to check for existence.","lastModifiedDate":"2024-03-23"},{"lineNumber":171,"author":{"gitId":"MaYuehan"},"content":" * @return true if there is at least one person in the clinic with the specified name, ignoring case.","lastModifiedDate":"2024-03-23"},{"lineNumber":172,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":173,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-10"},{"lineNumber":174,"author":{"gitId":"MaYuehan"},"content":" public boolean doesPersonExist(String name) {","lastModifiedDate":"2024-03-13"},{"lineNumber":175,"author":{"gitId":"MaYuehan"},"content":" requireNonNull(name);","lastModifiedDate":"2024-03-10"},{"lineNumber":176,"author":{"gitId":"MaYuehan"},"content":" return filteredPersons.stream()","lastModifiedDate":"2024-03-10"},{"lineNumber":177,"author":{"gitId":"javierng2knus"},"content":" .anyMatch(person -\u003e person.getIdentificationInformation().getName().fullName.equalsIgnoreCase(name));","lastModifiedDate":"2024-03-15"},{"lineNumber":178,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":179,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":180,"author":{"gitId":"MaYuehan"},"content":" * Checks if a person with the specified National Registration Identity Card (NRIC) exists in the clinic.","lastModifiedDate":"2024-03-23"},{"lineNumber":181,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-23"},{"lineNumber":182,"author":{"gitId":"MaYuehan"},"content":" * @param ic The NRIC of the person to check for existence.","lastModifiedDate":"2024-03-23"},{"lineNumber":183,"author":{"gitId":"MaYuehan"},"content":" * @return true if there is at least one person in the clinic with the specified NRIC, ignoring case.","lastModifiedDate":"2024-03-23"},{"lineNumber":184,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":185,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":186,"author":{"gitId":"MaYuehan"},"content":" public boolean doesIcExist(String ic) {","lastModifiedDate":"2024-03-23"},{"lineNumber":187,"author":{"gitId":"MaYuehan"},"content":" requireNonNull(ic);","lastModifiedDate":"2024-03-23"},{"lineNumber":188,"author":{"gitId":"MaYuehan"},"content":" return filteredPersons.stream()","lastModifiedDate":"2024-03-23"},{"lineNumber":189,"author":{"gitId":"MaYuehan"},"content":" .anyMatch(person -\u003e person.getIdentificationInformation().getNric().nric.equalsIgnoreCase(ic));","lastModifiedDate":"2024-03-23"},{"lineNumber":190,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":191,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":192,"author":{"gitId":"MaYuehan"},"content":" * Finds and returns the person in the clinic whose NRIC matches the specified NRIC.","lastModifiedDate":"2024-03-23"},{"lineNumber":193,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-23"},{"lineNumber":194,"author":{"gitId":"MaYuehan"},"content":" * @param nric The NRIC of the person to find.","lastModifiedDate":"2024-03-23"},{"lineNumber":195,"author":{"gitId":"MaYuehan"},"content":" * @return The person with the specified NRIC or null if no such person exists in the clinic.","lastModifiedDate":"2024-03-23"},{"lineNumber":196,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":197,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":198,"author":{"gitId":"Ella-e"},"content":" public Person findPersonByNric(Nric nric) {","lastModifiedDate":"2024-03-17"},{"lineNumber":199,"author":{"gitId":"Ella-e"},"content":" requireNonNull(nric);","lastModifiedDate":"2024-03-17"},{"lineNumber":200,"author":{"gitId":"Ella-e"},"content":" return clinic.findPersonByNric(nric);","lastModifiedDate":"2024-03-17"},{"lineNumber":201,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":202,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":203,"author":{"gitId":"Ella-e"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":204,"author":{"gitId":"Ella-e"},"content":" * Updates the contact information of the person in the clinic.","lastModifiedDate":"2024-03-17"},{"lineNumber":205,"author":{"gitId":"Ella-e"},"content":" * @param nric Nric of the person to be updated","lastModifiedDate":"2024-03-17"},{"lineNumber":206,"author":{"gitId":"Ella-e"},"content":" * @param contactInformation New contact information of the person","lastModifiedDate":"2024-03-17"},{"lineNumber":207,"author":{"gitId":"Ella-e"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":208,"author":{"gitId":"Ella-e"},"content":" public void updatePersonContactInformation(Nric nric, ContactInformation contactInformation) {","lastModifiedDate":"2024-03-17"},{"lineNumber":209,"author":{"gitId":"Ella-e"},"content":" Person person \u003d clinic.findPersonByNric(nric);","lastModifiedDate":"2024-03-17"},{"lineNumber":210,"author":{"gitId":"Ella-e"},"content":" Person personToUpdate \u003d person.copyPerson();","lastModifiedDate":"2024-03-17"},{"lineNumber":211,"author":{"gitId":"Ella-e"},"content":" personToUpdate.setContactInformation(contactInformation);","lastModifiedDate":"2024-03-17"},{"lineNumber":212,"author":{"gitId":"Ella-e"},"content":" setPerson(person, personToUpdate);","lastModifiedDate":"2024-03-17"},{"lineNumber":213,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":214,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":215,"author":{"gitId":"SeaHogs"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":216,"author":{"gitId":"SeaHogs"},"content":" * @param nric","lastModifiedDate":"2024-03-18"},{"lineNumber":217,"author":{"gitId":"SeaHogs"},"content":" * @param medicalInformation","lastModifiedDate":"2024-03-18"},{"lineNumber":218,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":219,"author":{"gitId":"SeaHogs"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":220,"author":{"gitId":"SeaHogs"},"content":" public void updatePersonMedicalInformation(Nric nric, MedicalInformation medicalInformation) {","lastModifiedDate":"2024-03-18"},{"lineNumber":221,"author":{"gitId":"SeaHogs"},"content":" Person person \u003d clinic.findPersonByNric(nric);","lastModifiedDate":"2024-03-18"},{"lineNumber":222,"author":{"gitId":"SeaHogs"},"content":" Person personToUpdate \u003d person.copyPerson();","lastModifiedDate":"2024-03-18"},{"lineNumber":223,"author":{"gitId":"SeaHogs"},"content":" personToUpdate.setMedicalInformation(medicalInformation);","lastModifiedDate":"2024-03-18"},{"lineNumber":224,"author":{"gitId":"SeaHogs"},"content":" setPerson(person, personToUpdate);","lastModifiedDate":"2024-03-18"},{"lineNumber":225,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":226,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":227,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":229,"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":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":231,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":232,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10"},{"lineNumber":233,"author":{"gitId":"javierng2knus"},"content":" * {@code versionedClinic}","lastModifiedDate":"2024-03-11"},{"lineNumber":234,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":235,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":236,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":237,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09"},{"lineNumber":238,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":240,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":241,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":242,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05"},{"lineNumber":243,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":244,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":246,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":247,"author":{"gitId":"MaYuehan"},"content":" * Checks for equality with another object. Returns true if the other object is also a ModelManager","lastModifiedDate":"2024-03-23"},{"lineNumber":248,"author":{"gitId":"MaYuehan"},"content":" * and has the same clinic and user preferences data.","lastModifiedDate":"2024-03-23"},{"lineNumber":249,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-23"},{"lineNumber":250,"author":{"gitId":"MaYuehan"},"content":" * @param other The other object to compare against.","lastModifiedDate":"2024-03-23"},{"lineNumber":251,"author":{"gitId":"MaYuehan"},"content":" * @return True if both objects are of the same class and contain the same data, false otherwise.","lastModifiedDate":"2024-03-23"},{"lineNumber":252,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31"},{"lineNumber":254,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":255,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":256,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31"},{"lineNumber":257,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":259,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31"},{"lineNumber":260,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":261,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31"},{"lineNumber":262,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":264,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":265,"author":{"gitId":"javierng2knus"},"content":" if (clinic.equals(otherModelManager.clinic)) {","lastModifiedDate":"2024-03-15"},{"lineNumber":266,"author":{"gitId":"javierng2knus"},"content":" if (userPrefs.equals(otherModelManager.userPrefs)) {","lastModifiedDate":"2024-03-15"},{"lineNumber":267,"author":{"gitId":"javierng2knus"},"content":" if (filteredPersons.equals(otherModelManager.filteredPersons)) {","lastModifiedDate":"2024-03-15"},{"lineNumber":268,"author":{"gitId":"javierng2knus"},"content":" return true;","lastModifiedDate":"2024-03-15"},{"lineNumber":269,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":270,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":271,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":272,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":273,"author":{"gitId":"javierng2knus"},"content":" return clinic.equals(otherModelManager.clinic)","lastModifiedDate":"2024-03-11"},{"lineNumber":274,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13"},{"lineNumber":275,"author":{"gitId":"-"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons);","lastModifiedDate":"2023-07-13"},{"lineNumber":276,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":278,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"javierng2knus":31,"MaYuehan":96,"Ella-e":20,"-":117,"SeaHogs":14}},{"path":"src/main/java/vitalconnect/model/ReadOnlyClinic.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.model;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"javierng2knus"},"content":" * Unmodifiable view of a clinic","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":9,"author":{"gitId":"javierng2knus"},"content":"public interface ReadOnlyClinic {","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the persons list.","lastModifiedDate":"2016-12-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * This list will not contain any duplicate persons.","lastModifiedDate":"2016-12-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"javierng2knus":2,"MaYuehan":2,"-":13}},{"path":"src/main/java/vitalconnect/model/ReadOnlyUserPrefs.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.model;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.commons.core.GuiSettings;","lastModifiedDate":"2024-03-13"},{"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":"javierng2knus"},"content":" Path getClinicFilePath();","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" Path getAppointmentFilePath();","lastModifiedDate":"2024-03-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-11-27"}],"authorContributionMap":{"javierng2knus":1,"MaYuehan":3,"-":13}},{"path":"src/main/java/vitalconnect/model/UserPrefs.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.model;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.commons.core.GuiSettings;","lastModifiedDate":"2024-03-13"},{"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":"javierng2knus"},"content":" private Path clinicFilePath \u003d Paths.get(\"data\" , \"clinic.json\");","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" private Path appointmentFilePath \u003d Paths.get(\"data\", \"appointments.json\");","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Creates a {@code UserPrefs} with default values.","lastModifiedDate":"2018-12-06"},{"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":"-"},"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":"javierng2knus"},"content":" setClinicFilePath(newUserPrefs.getClinicFilePath());","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" setAppointmentFilePath(newUserPrefs.getAppointmentFilePath());","lastModifiedDate":"2024-03-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":"javierng2knus"},"content":" public Path getClinicFilePath() {","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"javierng2knus"},"content":" return clinicFilePath;","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":56,"author":{"gitId":"javierng2knus"},"content":" public void setClinicFilePath(Path clinicFilePath) {","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"javierng2knus"},"content":" requireNonNull(clinicFilePath);","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"javierng2knus"},"content":" this.clinicFilePath \u003d clinicFilePath;","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":61,"author":{"gitId":"MaYuehan"},"content":" public Path getAppointmentFilePath() {","lastModifiedDate":"2024-03-23"},{"lineNumber":62,"author":{"gitId":"MaYuehan"},"content":" return appointmentFilePath;","lastModifiedDate":"2024-03-23"},{"lineNumber":63,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":64,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":65,"author":{"gitId":"MaYuehan"},"content":" public void setAppointmentFilePath(Path appointmentFilePath) {","lastModifiedDate":"2024-03-23"},{"lineNumber":66,"author":{"gitId":"MaYuehan"},"content":" requireNonNull(appointmentFilePath);","lastModifiedDate":"2024-03-23"},{"lineNumber":67,"author":{"gitId":"MaYuehan"},"content":" this.appointmentFilePath \u003d appointmentFilePath;","lastModifiedDate":"2024-03-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-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":" if (!(other instanceof UserPrefs)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2016-09-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":" UserPrefs otherUserPrefs \u003d (UserPrefs) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return guiSettings.equals(otherUserPrefs.guiSettings)","lastModifiedDate":"2023-07-13"},{"lineNumber":82,"author":{"gitId":"MaYuehan"},"content":" \u0026\u0026 clinicFilePath.equals(otherUserPrefs.clinicFilePath)","lastModifiedDate":"2024-03-23"},{"lineNumber":83,"author":{"gitId":"MaYuehan"},"content":" \u0026\u0026 appointmentFilePath.equals(otherUserPrefs.appointmentFilePath);","lastModifiedDate":"2024-03-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-24"},{"lineNumber":88,"author":{"gitId":"MaYuehan"},"content":" return Objects.hash(guiSettings, clinicFilePath, appointmentFilePath);","lastModifiedDate":"2024-03-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-09-24"},{"lineNumber":93,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-02-25"},{"lineNumber":94,"author":{"gitId":"MaYuehan"},"content":" sb.append(\"Gui Settings : \").append(guiSettings);","lastModifiedDate":"2024-03-23"},{"lineNumber":95,"author":{"gitId":"MaYuehan"},"content":" sb.append(\"\\nLocal clinic data file location : \").append(clinicFilePath);","lastModifiedDate":"2024-03-23"},{"lineNumber":96,"author":{"gitId":"MaYuehan"},"content":" sb.append(\"\\nLocal appointment data file location : \").append(appointmentFilePath);","lastModifiedDate":"2024-03-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-02-25"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":99,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"javierng2knus":7,"MaYuehan":17,"-":75}},{"path":"src/main/java/vitalconnect/model/allergytag/AllergyTag.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SeaHogs"},"content":"package vitalconnect.model.allergytag;","lastModifiedDate":"2024-03-18"},{"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":"MaYuehan"},"content":"import static vitalconnect.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"SeaHogs"},"content":" * Represents a AllergyTag in the clinic.","lastModifiedDate":"2024-03-18"},{"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":"SeaHogs"},"content":"public class AllergyTag {","lastModifiedDate":"2024-03-18"},{"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":"SeaHogs"},"content":" * Constructs a {@code AllergyTag}.","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"SeaHogs"},"content":" * @param tagName A valid allergytag name.","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"SeaHogs"},"content":" public AllergyTag(String tagName) {","lastModifiedDate":"2024-03-18"},{"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":"SeaHogs"},"content":" * Returns true if a given string is a valid allergytag name.","lastModifiedDate":"2024-03-18"},{"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":"SeaHogs"},"content":" if (!(other instanceof AllergyTag)) {","lastModifiedDate":"2024-03-18"},{"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":"SeaHogs"},"content":" AllergyTag otherAllergyTag \u003d (AllergyTag) other;","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"SeaHogs"},"content":" return tagName.equals(otherAllergyTag.tagName);","lastModifiedDate":"2024-03-18"},{"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":{"MaYuehan":1,"-":51,"SeaHogs":10}},{"path":"src/main/java/vitalconnect/model/person/Person.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.model.person;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.contactinformation.ContactInformation;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.identificationinformation.IdentificationInformation;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.person.medicalinformation.MedicalInformation;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"javierng2knus"},"content":" * Represents a Person in the clinic.","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10"},{"lineNumber":17,"author":{"gitId":"javierng2knus"},"content":" // Information fields","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":" private IdentificationInformation identificationInformation;","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":" private ContactInformation contactInformation;","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"SeaHogs"},"content":" private MedicalInformation medicalInformation;","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"SeaHogs"},"content":" * Only identificationInformation is present.","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"SeaHogs"},"content":" public Person(IdentificationInformation identificationInformation) {","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"SeaHogs"},"content":" requireAllNonNull(identificationInformation);","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"javierng2knus"},"content":" this.identificationInformation \u003d identificationInformation;","lastModifiedDate":"2024-03-15"},{"lineNumber":28,"author":{"gitId":"Ella-e"},"content":" this.contactInformation \u003d new ContactInformation();","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"Ella-e"},"content":" this.medicalInformation \u003d new MedicalInformation();","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":31,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":32,"author":{"gitId":"javierng2knus"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"SeaHogs"},"content":" * Only identificationInformation and contactInformation are present.","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"javierng2knus"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"javierng2knus"},"content":" public Person(IdentificationInformation identificationInformation,","lastModifiedDate":"2024-03-15"},{"lineNumber":36,"author":{"gitId":"SeaHogs"},"content":" ContactInformation contactInformation) {","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"SeaHogs"},"content":" requireAllNonNull(identificationInformation);","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"javierng2knus"},"content":" this.identificationInformation \u003d identificationInformation;","lastModifiedDate":"2024-03-15"},{"lineNumber":39,"author":{"gitId":"javierng2knus"},"content":" this.contactInformation \u003d contactInformation;","lastModifiedDate":"2024-03-15"},{"lineNumber":40,"author":{"gitId":"Ella-e"},"content":" this.medicalInformation \u003d new MedicalInformation();","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"SeaHogs"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"SeaHogs"},"content":" * Only identificationInformation and medicalInformation are present.","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"SeaHogs"},"content":" public Person(IdentificationInformation identificationInformation,","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"SeaHogs"},"content":" MedicalInformation medicalInformation) {","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"SeaHogs"},"content":" requireAllNonNull(identificationInformation);","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"SeaHogs"},"content":" this.identificationInformation \u003d identificationInformation;","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"Ella-e"},"content":" this.contactInformation \u003d new ContactInformation();","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"SeaHogs"},"content":" this.medicalInformation \u003d medicalInformation;","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"SeaHogs"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"SeaHogs"},"content":" * All fields are present.","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"SeaHogs"},"content":" public Person(IdentificationInformation identificationInformation,","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"SeaHogs"},"content":" ContactInformation contactInformation, MedicalInformation medicalInformation) {","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"SeaHogs"},"content":" requireAllNonNull(identificationInformation, contactInformation, medicalInformation);","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"SeaHogs"},"content":" this.identificationInformation \u003d identificationInformation;","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"Ella-e"},"content":" this.contactInformation \u003d contactInformation;","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"SeaHogs"},"content":" this.medicalInformation \u003d medicalInformation;","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"javierng2knus"},"content":" public IdentificationInformation getIdentificationInformation() {","lastModifiedDate":"2024-03-11"},{"lineNumber":66,"author":{"gitId":"javierng2knus"},"content":" return this.identificationInformation;","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":68,"author":{"gitId":"SeaHogs"},"content":" public void setContactInformation(ContactInformation contactInformation) {","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"SeaHogs"},"content":" this.contactInformation \u003d contactInformation;","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":72,"author":{"gitId":"javierng2knus"},"content":" public ContactInformation getContactInformation() {","lastModifiedDate":"2024-03-11"},{"lineNumber":73,"author":{"gitId":"javierng2knus"},"content":" return this.contactInformation;","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":75,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":76,"author":{"gitId":"javierng2knus"},"content":" public boolean hasContactInformation() {","lastModifiedDate":"2024-03-15"},{"lineNumber":77,"author":{"gitId":"javierng2knus"},"content":" return this.contactInformation !\u003d null;","lastModifiedDate":"2024-03-15"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":80,"author":{"gitId":"SeaHogs"},"content":" public void setMedicalInformation(MedicalInformation medicalInformation) {","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"SeaHogs"},"content":" this.medicalInformation \u003d medicalInformation;","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"SeaHogs"},"content":" public MedicalInformation getMedicalInformation() {","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"SeaHogs"},"content":" return this.medicalInformation;","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":88,"author":{"gitId":"SeaHogs"},"content":" public boolean hasMedicalInformation() {","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"Ella-e"},"content":" return !this.medicalInformation.isEmpty();","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":94,"author":{"gitId":"javierng2knus"},"content":" * Returns true if both persons have the same identification info.","lastModifiedDate":"2024-03-15"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" return true;","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":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19"},{"lineNumber":103,"author":{"gitId":"SeaHogs"},"content":" \u0026\u0026 otherPerson","lastModifiedDate":"2024-03-18"},{"lineNumber":104,"author":{"gitId":"SeaHogs"},"content":" .getIdentificationInformation()","lastModifiedDate":"2024-03-18"},{"lineNumber":105,"author":{"gitId":"SeaHogs"},"content":" .getNric()","lastModifiedDate":"2024-03-18"},{"lineNumber":106,"author":{"gitId":"SeaHogs"},"content":" .equals(getIdentificationInformation().getNric());","lastModifiedDate":"2024-03-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":109,"author":{"gitId":"Ella-e"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"Ella-e"},"content":" * Make a new copy of that person.","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"Ella-e"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"Ella-e"},"content":" public Person copyPerson() {","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"SeaHogs"},"content":" if (hasContactInformation() \u0026\u0026 hasMedicalInformation()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":114,"author":{"gitId":"SeaHogs"},"content":" return new Person(this.identificationInformation, this.contactInformation, this.medicalInformation);","lastModifiedDate":"2024-03-19"},{"lineNumber":115,"author":{"gitId":"SeaHogs"},"content":" } else if (hasContactInformation()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":116,"author":{"gitId":"SeaHogs"},"content":" return new Person(this.identificationInformation, this.contactInformation);","lastModifiedDate":"2024-03-20"},{"lineNumber":117,"author":{"gitId":"SeaHogs"},"content":" } else if (hasMedicalInformation()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":118,"author":{"gitId":"SeaHogs"},"content":" return new Person(this.identificationInformation, this.medicalInformation);","lastModifiedDate":"2024-03-20"},{"lineNumber":119,"author":{"gitId":"SeaHogs"},"content":" } else {","lastModifiedDate":"2024-03-20"},{"lineNumber":120,"author":{"gitId":"SeaHogs"},"content":" return new Person(this.identificationInformation);","lastModifiedDate":"2024-03-20"},{"lineNumber":121,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":122,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":125,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19"},{"lineNumber":126,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":127,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":130,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":131,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":134,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":135,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10"},{"lineNumber":136,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":139,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10"},{"lineNumber":140,"author":{"gitId":"SeaHogs"},"content":" boolean isSamePerson \u003d getIdentificationInformation().equals(otherPerson.getIdentificationInformation());","lastModifiedDate":"2024-03-19"},{"lineNumber":141,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":142,"author":{"gitId":"javierng2knus"},"content":" if (otherPerson.hasContactInformation() \u0026\u0026 hasContactInformation()) {","lastModifiedDate":"2024-03-15"},{"lineNumber":143,"author":{"gitId":"SeaHogs"},"content":" // true if both have same contact information","lastModifiedDate":"2024-03-19"},{"lineNumber":144,"author":{"gitId":"SeaHogs"},"content":" isSamePerson \u003d isSamePerson \u0026\u0026 getContactInformation().equals(otherPerson.getContactInformation());","lastModifiedDate":"2024-03-19"},{"lineNumber":145,"author":{"gitId":"SeaHogs"},"content":" } else {","lastModifiedDate":"2024-03-19"},{"lineNumber":146,"author":{"gitId":"SeaHogs"},"content":" // true if both do not have contact information","lastModifiedDate":"2024-03-19"},{"lineNumber":147,"author":{"gitId":"SeaHogs"},"content":" isSamePerson \u003d isSamePerson \u0026\u0026 !otherPerson.hasContactInformation() \u0026\u0026 !hasContactInformation();","lastModifiedDate":"2024-03-19"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":150,"author":{"gitId":"SeaHogs"},"content":" if (otherPerson.hasMedicalInformation() \u0026\u0026 hasMedicalInformation()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":151,"author":{"gitId":"SeaHogs"},"content":" // true if both have same medical information","lastModifiedDate":"2024-03-19"},{"lineNumber":152,"author":{"gitId":"SeaHogs"},"content":" isSamePerson \u003d isSamePerson \u0026\u0026 getMedicalInformation().equals(otherPerson.getMedicalInformation());","lastModifiedDate":"2024-03-19"},{"lineNumber":153,"author":{"gitId":"SeaHogs"},"content":" } else {","lastModifiedDate":"2024-03-19"},{"lineNumber":154,"author":{"gitId":"SeaHogs"},"content":" // true if both do not have medical information","lastModifiedDate":"2024-03-19"},{"lineNumber":155,"author":{"gitId":"SeaHogs"},"content":" isSamePerson \u003d isSamePerson \u0026\u0026 !otherPerson.hasMedicalInformation() \u0026\u0026 !hasMedicalInformation();","lastModifiedDate":"2024-03-19"},{"lineNumber":156,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":157,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":158,"author":{"gitId":"SeaHogs"},"content":" return isSamePerson;","lastModifiedDate":"2024-03-19"},{"lineNumber":159,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":160,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":161,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":162,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":163,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":164,"author":{"gitId":"SeaHogs"},"content":" return Objects.hash(getIdentificationInformation(), getContactInformation(), getMedicalInformation());","lastModifiedDate":"2024-03-18"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":167,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":168,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":169,"author":{"gitId":"SeaHogs"},"content":" if (hasContactInformation() \u0026\u0026 hasMedicalInformation()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":170,"author":{"gitId":"SeaHogs"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-18"},{"lineNumber":171,"author":{"gitId":"SeaHogs"},"content":" .add(\"identification\", getIdentificationInformation())","lastModifiedDate":"2024-03-18"},{"lineNumber":172,"author":{"gitId":"SeaHogs"},"content":" .add(\"contact\", getContactInformation())","lastModifiedDate":"2024-03-18"},{"lineNumber":173,"author":{"gitId":"SeaHogs"},"content":" .add(\"medicalinfo\", getMedicalInformation())","lastModifiedDate":"2024-03-18"},{"lineNumber":174,"author":{"gitId":"SeaHogs"},"content":" .toString();","lastModifiedDate":"2024-03-18"},{"lineNumber":175,"author":{"gitId":"SeaHogs"},"content":" } else if (hasContactInformation()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":176,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":177,"author":{"gitId":"javierng2knus"},"content":" .add(\"identification\", getIdentificationInformation())","lastModifiedDate":"2024-03-15"},{"lineNumber":178,"author":{"gitId":"javierng2knus"},"content":" .add(\"contact\", getContactInformation())","lastModifiedDate":"2024-03-15"},{"lineNumber":179,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":180,"author":{"gitId":"SeaHogs"},"content":" } else if (hasMedicalInformation()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":181,"author":{"gitId":"SeaHogs"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-19"},{"lineNumber":182,"author":{"gitId":"SeaHogs"},"content":" .add(\"identification\", getIdentificationInformation())","lastModifiedDate":"2024-03-19"},{"lineNumber":183,"author":{"gitId":"SeaHogs"},"content":" .add(\"medicalinfo\", getMedicalInformation())","lastModifiedDate":"2024-03-19"},{"lineNumber":184,"author":{"gitId":"SeaHogs"},"content":" .toString();","lastModifiedDate":"2024-03-19"},{"lineNumber":185,"author":{"gitId":"javierng2knus"},"content":" } else {","lastModifiedDate":"2024-03-15"},{"lineNumber":186,"author":{"gitId":"javierng2knus"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-15"},{"lineNumber":187,"author":{"gitId":"javierng2knus"},"content":" .add(\"identification\", getIdentificationInformation())","lastModifiedDate":"2024-03-15"},{"lineNumber":188,"author":{"gitId":"javierng2knus"},"content":" .toString();","lastModifiedDate":"2024-03-15"},{"lineNumber":189,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-15"},{"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":{"javierng2knus":34,"MaYuehan":5,"Ella-e":16,"-":59,"SeaHogs":78}},{"path":"src/main/java/vitalconnect/model/person/UniquePersonList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.model.person;","lastModifiedDate":"2024-03-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":"MaYuehan"},"content":"import static vitalconnect.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.exceptions.PersonNotFoundException;","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Adds a person to the list.","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * The person must not already exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void add(Person toAdd) {","lastModifiedDate":"2018-08-07"},{"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":"-"},"content":" * Replaces the person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2017-06-07"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":54,"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":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-07"},{"lineNumber":57,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2018-08-08"},{"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":"-"},"content":" if (!target.isSamePerson(editedPerson) \u0026\u0026 contains(editedPerson)) {","lastModifiedDate":"2018-04-19"},{"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":"-"},"content":" internalList.set(index, editedPerson);","lastModifiedDate":"2018-01-10"},{"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":"-"},"content":" * Removes the equivalent person from the list.","lastModifiedDate":"2016-08-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * The person must exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void remove(Person toRemove) {","lastModifiedDate":"2018-08-07"},{"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":"-"},"content":" public void setPersons(UniquePersonList replacement) {","lastModifiedDate":"2016-10-19"},{"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":"-"},"content":" * Replaces the contents of this list with {@code persons}.","lastModifiedDate":"2018-08-07"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2018-08-07"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void setPersons(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-08-07"},{"lineNumber":92,"author":{"gitId":"-"},"content":" requireAllNonNull(persons);","lastModifiedDate":"2018-01-10"},{"lineNumber":93,"author":{"gitId":"-"},"content":" if (!personsAreUnique(persons)) {","lastModifiedDate":"2018-04-19"},{"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":"-"},"content":" internalList.setAll(persons);","lastModifiedDate":"2018-08-14"},{"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":"-"},"content":" public ObservableList\u003cPerson\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2018-04-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":"-"},"content":" public Iterator\u003cPerson\u003e iterator() {","lastModifiedDate":"2016-08-24"},{"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":"-"},"content":" if (!(other instanceof UniquePersonList)) {","lastModifiedDate":"2023-07-13"},{"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":"-"},"content":" UniquePersonList otherUniquePersonList \u003d (UniquePersonList) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" return internalList.equals(otherUniquePersonList.internalList);","lastModifiedDate":"2023-07-13"},{"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":"-"},"content":" * Returns true if {@code persons} contains only unique persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":140,"author":{"gitId":"-"},"content":" private boolean personsAreUnique(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-04-19"},{"lineNumber":141,"author":{"gitId":"-"},"content":" for (int i \u003d 0; i \u003c persons.size() - 1; i++) {","lastModifiedDate":"2018-04-19"},{"lineNumber":142,"author":{"gitId":"-"},"content":" for (int j \u003d i + 1; j \u003c persons.size(); j++) {","lastModifiedDate":"2018-04-19"},{"lineNumber":143,"author":{"gitId":"-"},"content":" if (persons.get(i).isSamePerson(persons.get(j))) {","lastModifiedDate":"2018-04-19"},{"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":{"MaYuehan":4,"-":146}},{"path":"src/main/java/vitalconnect/model/person/contactinformation/Address.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.model.person.contactinformation;","lastModifiedDate":"2024-03-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":"MaYuehan"},"content":"import static vitalconnect.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"javierng2knus"},"content":" * Represents a Person\u0027s address in the clinic.","lastModifiedDate":"2024-03-11"},{"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":"Ella-e"},"content":" public static final String VALIDATION_REGEX \u003d \"^[^/]*$\";","lastModifiedDate":"2024-03-17"},{"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":"Ella-e"},"content":" public Address() {","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"Ella-e"},"content":" value \u003d \"\";","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"Ella-e"},"content":" public boolean isEmpty() {","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"Ella-e"},"content":" return value.equals(\"\");","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid email.","lastModifiedDate":"2018-04-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static boolean isValidAddress(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"Ella-e"},"content":" return test.matches(VALIDATION_REGEX) || test.equals(\"\");","lastModifiedDate":"2024-03-17"},{"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 String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return true;","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":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" if (!(other instanceof Address)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" Address otherAddress \u003d (Address) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return value.equals(otherAddress.value);","lastModifiedDate":"2023-07-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"javierng2knus":1,"MaYuehan":2,"Ella-e":10,"-":60}},{"path":"src/main/java/vitalconnect/model/person/contactinformation/ContactInformation.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.model.person.contactinformation;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"javierng2knus"},"content":"/**","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"javierng2knus"},"content":" * Represents a Person\u0027s contact information","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidContactInformation(ContactInformation)}","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"javierng2knus"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"javierng2knus"},"content":"public class ContactInformation {","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Invalid Contactinformation\";","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"javierng2knus"},"content":" // Identity fields","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":" private Email email;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"content":" private Phone phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":" private Address address;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":" * Constructor","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":" public ContactInformation() {","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":" this.email \u003d new Email(\"\");","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":" this.phone \u003d new Phone(\"\");","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"Ella-e"},"content":" this.address \u003d new Address(\"\");","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"Ella-e"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"Ella-e"},"content":" * Use String as the parameter for the instantiation.","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"Ella-e"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"Ella-e"},"content":" public ContactInformation(String email, String phone, String address) {","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"Ella-e"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"Ella-e"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"Ella-e"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"javierng2knus"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"javierng2knus"},"content":" * Constructs a {@code ContactInformation}.","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"javierng2knus"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"javierng2knus"},"content":" * @param email A valid email.","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"javierng2knus"},"content":" * @param phone A valid phone.","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"javierng2knus"},"content":" * @param address A valid address.","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"javierng2knus"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"javierng2knus"},"content":" public ContactInformation(Email email, Phone phone, Address address) {","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"javierng2knus"},"content":" this.email \u003d email;","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"javierng2knus"},"content":" this.phone \u003d phone;","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"javierng2knus"},"content":" this.address \u003d address;","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"javierng2knus"},"content":" public Email getEmail() {","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"javierng2knus"},"content":" return email;","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"javierng2knus"},"content":" public Phone getPhone() {","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"javierng2knus"},"content":" return phone;","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"javierng2knus"},"content":" public Address getAddress() {","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"javierng2knus"},"content":" return address;","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"Ella-e"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"Ella-e"},"content":" * Returns true if a given string is a valid contactInformation","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"Ella-e"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"Ella-e"},"content":" public static boolean isValidContactInformation(ContactInformation contactInformation) {","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"Ella-e"},"content":" String emailTest \u003d contactInformation.getEmail().value;","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"Ella-e"},"content":" String phoneTest \u003d contactInformation.getPhone().value;","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"Ella-e"},"content":" String addressTest \u003d contactInformation.getAddress().value;","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"Ella-e"},"content":" return emailTest.matches(Email.VALIDATION_REGEX) \u0026\u0026 phoneTest.matches(Phone.VALIDATION_REGEX)","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"Ella-e"},"content":" \u0026\u0026 addressTest.matches(vitalconnect.model.person.contactinformation.Address.VALIDATION_REGEX);","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"Ella-e"},"content":" public boolean isEmptyContact() {","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"Ella-e"},"content":" return email.isEmpty() \u0026\u0026 phone.isEmpty() \u0026\u0026 address.isEmpty();","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"Ella-e"},"content":" public String toString() {","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"Ella-e"},"content":" String result \u003d \"\";","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"Ella-e"},"content":" if (phone !\u003d null) {","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"Ella-e"},"content":" result +\u003d \"phone: \" + phone + \"\\n\";","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"Ella-e"},"content":" if (email !\u003d null) {","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"Ella-e"},"content":" result +\u003d \"email: \" + email + \"\\n\";","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"Ella-e"},"content":" if (address !\u003d null) {","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"Ella-e"},"content":" result +\u003d \"address: \" + address + \"\\n\";","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"Ella-e"},"content":" return result;","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":88,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"Ella-e"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-17"},{"lineNumber":90,"author":{"gitId":"Ella-e"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"Ella-e"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"Ella-e"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"Ella-e"},"content":" if (!(other instanceof ContactInformation)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"Ella-e"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"Ella-e"},"content":" ContactInformation otherCI \u003d (ContactInformation) other;","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"Ella-e"},"content":" return otherCI.getEmail().equals(this.getEmail())","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"Ella-e"},"content":" \u0026\u0026 otherCI.getAddress().equals(this.getAddress())","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"Ella-e"},"content":" \u0026\u0026 otherCI.getPhone().equals(this.getPhone());","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"javierng2knus"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"javierng2knus":33,"MaYuehan":1,"Ella-e":70}},{"path":"src/main/java/vitalconnect/model/person/contactinformation/Email.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.model.person.contactinformation;","lastModifiedDate":"2024-03-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":"MaYuehan"},"content":"import static vitalconnect.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"javierng2knus"},"content":" * Represents a Person\u0027s email in the clinic.","lastModifiedDate":"2024-03-11"},{"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":"Ella-e"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"Ella-e"},"content":" * Default initializer","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"Ella-e"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"Ella-e"},"content":" public Email() {","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"Ella-e"},"content":" value \u003d \"\";","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Returns if a given string is a valid email.","lastModifiedDate":"2018-04-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static boolean isValidEmail(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"Ella-e"},"content":" return test.matches(VALIDATION_REGEX) || test.equals(\"\");","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"Ella-e"},"content":" public boolean isEmpty() {","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"Ella-e"},"content":" return value.equals(\"\");","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24"},{"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":"2016-08-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"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 Email)) {","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":" Email otherEmail \u003d (Email) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return value.equals(otherEmail.value);","lastModifiedDate":"2023-07-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return value.hashCode();","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"}],"authorContributionMap":{"javierng2knus":1,"MaYuehan":2,"Ella-e":11,"-":75}},{"path":"src/main/java/vitalconnect/model/person/contactinformation/Phone.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.model.person.contactinformation;","lastModifiedDate":"2024-03-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":"MaYuehan"},"content":"import static vitalconnect.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"javierng2knus"},"content":" * Represents a Person\u0027s phone number in the clinic.","lastModifiedDate":"2024-03-11"},{"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":"Ella-e"},"content":" public Phone() {","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"Ella-e"},"content":" value \u003d \"\";","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"Ella-e"},"content":" public boolean isEmpty() {","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"Ella-e"},"content":" return value.equals(\"\");","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid phone number.","lastModifiedDate":"2018-04-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static boolean isValidPhone(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"Ella-e"},"content":" return test.matches(VALIDATION_REGEX) || test.equals(\"\");","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (!(other instanceof Phone)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Phone otherPhone \u003d (Phone) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return value.equals(otherPhone.value);","lastModifiedDate":"2023-07-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"javierng2knus":1,"MaYuehan":2,"Ella-e":9,"-":57}},{"path":"src/main/java/vitalconnect/model/person/exceptions/DuplicatePersonException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.model.person.exceptions;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Signals that the operation will result in duplicate Persons (Persons are considered duplicates if they have the same","lastModifiedDate":"2018-04-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":" * identity).","lastModifiedDate":"2018-04-19"},{"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":"-"},"content":" super(\"Operation would result in duplicate persons\");","lastModifiedDate":"2017-06-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09"}],"authorContributionMap":{"MaYuehan":1,"-":10}},{"path":"src/main/java/vitalconnect/model/person/exceptions/PersonNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.model.person.exceptions;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Signals that the operation is unable to find the specified person.","lastModifiedDate":"2017-06-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class PersonNotFoundException extends RuntimeException {}","lastModifiedDate":"2018-08-07"}],"authorContributionMap":{"MaYuehan":1,"-":5}},{"path":"src/main/java/vitalconnect/model/person/identificationinformation/IdentificationInformation.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.model.person.identificationinformation;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"javierng2knus"},"content":"/**","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"javierng2knus"},"content":" * Represents a Person\u0027s identification information","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"javierng2knus"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidIdentificationInformation(String, String)}","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"javierng2knus"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"javierng2knus"},"content":"public class IdentificationInformation {","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"javierng2knus"},"content":" // Identity fields","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"javierng2knus"},"content":" private final Name name;","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"javierng2knus"},"content":" private final Nric nric;","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"javierng2knus"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"javierng2knus"},"content":" * Constructs a {@code IdentificationInformation}.","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"javierng2knus"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"javierng2knus"},"content":" * @param name A valid name.","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"javierng2knus"},"content":" * @param nric A valid nric.","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"javierng2knus"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"javierng2knus"},"content":" public IdentificationInformation(Name name, Nric nric) {","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"javierng2knus"},"content":" this.name \u003d name;","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"javierng2knus"},"content":" this.nric \u003d nric;","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"javierng2knus"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"javierng2knus"},"content":" * Constructs a {@code IdentificationInformation}.","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"javierng2knus"},"content":" *","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"javierng2knus"},"content":" * @param name A valid name.","lastModifiedDate":"2024-03-15"},{"lineNumber":28,"author":{"gitId":"javierng2knus"},"content":" * @param nric A valid nric.","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"javierng2knus"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"javierng2knus"},"content":" public IdentificationInformation(String name, String nric) {","lastModifiedDate":"2024-03-15"},{"lineNumber":31,"author":{"gitId":"javierng2knus"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2024-03-15"},{"lineNumber":32,"author":{"gitId":"javierng2knus"},"content":" this.nric \u003d new Nric(nric);","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":34,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"javierng2knus"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":36,"author":{"gitId":"javierng2knus"},"content":" * Returns true if a given info is a valid IdentificationInformation.","lastModifiedDate":"2024-03-15"},{"lineNumber":37,"author":{"gitId":"javierng2knus"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"javierng2knus"},"content":" public static boolean isValidIdentificationInformation(String nameTest, String nricTest) {","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"javierng2knus"},"content":" return Name.isValidName(nameTest) \u0026\u0026 Nric.isValidNric(nricTest);","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"javierng2knus"},"content":" public Name getName() {","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"javierng2knus"},"content":" return name;","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"javierng2knus"},"content":" public Nric getNric() {","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"javierng2knus"},"content":" return nric;","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"javierng2knus"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"javierng2knus"},"content":" public String toString() {","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"javierng2knus"},"content":" return \"[name\u003d\" + name + \", nric\u003d\" + nric + \"]\";","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"javierng2knus"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"javierng2knus"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"javierng2knus"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"javierng2knus"},"content":" return true;","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"javierng2knus"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"javierng2knus"},"content":" if (!(other instanceof IdentificationInformation)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"javierng2knus"},"content":" return false;","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":66,"author":{"gitId":"javierng2knus"},"content":" IdentificationInformation otherInfo \u003d (IdentificationInformation) other;","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"javierng2knus"},"content":" return name.equals(otherInfo.name) \u0026\u0026 nric.equals(otherInfo.nric);","lastModifiedDate":"2024-03-15"},{"lineNumber":68,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":70,"author":{"gitId":"javierng2knus"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":71,"author":{"gitId":"javierng2knus"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-11"},{"lineNumber":72,"author":{"gitId":"javierng2knus"},"content":" return name.hashCode() + nric.hashCode();","lastModifiedDate":"2024-03-11"},{"lineNumber":73,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"javierng2knus"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"javierng2knus":73,"MaYuehan":1}},{"path":"src/main/java/vitalconnect/model/person/identificationinformation/Name.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.model.person.identificationinformation;","lastModifiedDate":"2024-03-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":"MaYuehan"},"content":"import static vitalconnect.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"javierng2knus"},"content":" * Represents a Person\u0027s name in the clinic.","lastModifiedDate":"2024-03-11"},{"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":"-"},"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":"-"},"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":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return fullName;","lastModifiedDate":"2016-08-24"},{"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 boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return true;","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":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" if (!(other instanceof Name)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return false;","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":" Name otherName \u003d (Name) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return fullName.equals(otherName.fullName);","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return fullName.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"javierng2knus":1,"MaYuehan":2,"-":63}},{"path":"src/main/java/vitalconnect/model/person/identificationinformation/NameContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.model.person.identificationinformation;","lastModifiedDate":"2024-03-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":"MaYuehan"},"content":"import vitalconnect.commons.util.StringUtil;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-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":"javierng2knus"},"content":" .anyMatch(keyword -\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"javierng2knus"},"content":" StringUtil.containsWordIgnoreCase(person.getIdentificationInformation().getName().fullName,","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"javierng2knus"},"content":" keyword));","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" if (!(other instanceof NameContainsKeywordsPredicate)) {","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":" NameContainsKeywordsPredicate otherNameContainsKeywordsPredicate \u003d (NameContainsKeywordsPredicate) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return keywords.equals(otherNameContainsKeywordsPredicate.keywords);","lastModifiedDate":"2023-07-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"javierng2knus":3,"MaYuehan":4,"-":40}},{"path":"src/main/java/vitalconnect/model/person/identificationinformation/Nric.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.model.person.identificationinformation;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":3,"author":{"gitId":"javierng2knus"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"javierng2knus"},"content":"import static vitalconnect.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-15"},{"lineNumber":5,"author":{"gitId":"javierng2knus"},"content":"/**","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"javierng2knus"},"content":" * Represents a Person\u0027s NRIC in the clinic.","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"javierng2knus"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidNric(String)}","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"javierng2knus"},"content":" * Got formula from nric Validation from https://github.com/samliew/singapore-nric/tree/main","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"javierng2knus"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"javierng2knus"},"content":"public class Nric {","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"javierng2knus"},"content":" public static final String VALIDATION_REGEX \u003d \"^[S T F G M]\\\\d{7}\\\\w$\";","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"javierng2knus"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"javierng2knus"},"content":" \"NRIC is invalid, should be @xxxxxxx# \"","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"javierng2knus"},"content":" + \"where @ is a letter that can be S,T,F,G or M and \"","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"javierng2knus"},"content":" + \"# is the appropriate letter.\";","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"javierng2knus"},"content":" public final String nric;","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"javierng2knus"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":21,"author":{"gitId":"javierng2knus"},"content":" * Constructs a {@code Nric}.","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"javierng2knus"},"content":" *","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"javierng2knus"},"content":" * @param nric A valid Nric.","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"javierng2knus"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"javierng2knus"},"content":" public Nric(String nric) {","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"javierng2knus"},"content":" requireNonNull(nric);","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"javierng2knus"},"content":" checkArgument(isValidNric(nric), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":28,"author":{"gitId":"javierng2knus"},"content":" this.nric \u003d nric;","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":31,"author":{"gitId":"javierng2knus"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":32,"author":{"gitId":"javierng2knus"},"content":" * Returns true if a given string is a valid nric.","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"javierng2knus"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":34,"author":{"gitId":"javierng2knus"},"content":" public static boolean isValidNric(String test) {","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"javierng2knus"},"content":" if (test.matches(\"test\")) {","lastModifiedDate":"2024-03-15"},{"lineNumber":36,"author":{"gitId":"javierng2knus"},"content":" return true;","lastModifiedDate":"2024-03-15"},{"lineNumber":37,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":38,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":39,"author":{"gitId":"javierng2knus"},"content":" if (!test.matches(VALIDATION_REGEX)) {","lastModifiedDate":"2024-03-15"},{"lineNumber":40,"author":{"gitId":"javierng2knus"},"content":" return false;","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":42,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"javierng2knus"},"content":" String checksumStr \u003d test.substring(1, 8);","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"javierng2knus"},"content":" return isValidChecksum(test.charAt(0), checksumStr, test.charAt(8));","lastModifiedDate":"2024-03-15"},{"lineNumber":47,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":48,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":49,"author":{"gitId":"javierng2knus"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"javierng2knus"},"content":" * Returns true if the given char is valid based on the given string and prefix","lastModifiedDate":"2024-03-15"},{"lineNumber":51,"author":{"gitId":"javierng2knus"},"content":" *","lastModifiedDate":"2024-03-15"},{"lineNumber":52,"author":{"gitId":"javierng2knus"},"content":" * @param prefixChar The prefix char to check.","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"javierng2knus"},"content":" * @param checksumStr The checksum string to check.","lastModifiedDate":"2024-03-15"},{"lineNumber":54,"author":{"gitId":"javierng2knus"},"content":" * @param charToCheck The char to check if it is valid.","lastModifiedDate":"2024-03-15"},{"lineNumber":55,"author":{"gitId":"javierng2knus"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":56,"author":{"gitId":"javierng2knus"},"content":" public static boolean isValidChecksum(char prefixChar, String checksumStr, char charToCheck) {","lastModifiedDate":"2024-03-15"},{"lineNumber":57,"author":{"gitId":"javierng2knus"},"content":" // Multiply the digits by the appropriate weightage","lastModifiedDate":"2024-03-15"},{"lineNumber":58,"author":{"gitId":"javierng2knus"},"content":" int total \u003d Character.getNumericValue(checksumStr.charAt(0)) * 2","lastModifiedDate":"2024-03-15"},{"lineNumber":59,"author":{"gitId":"javierng2knus"},"content":" + Character.getNumericValue(checksumStr.charAt(1)) * 7","lastModifiedDate":"2024-03-15"},{"lineNumber":60,"author":{"gitId":"javierng2knus"},"content":" + Character.getNumericValue(checksumStr.charAt(2)) * 6","lastModifiedDate":"2024-03-15"},{"lineNumber":61,"author":{"gitId":"javierng2knus"},"content":" + Character.getNumericValue(checksumStr.charAt(3)) * 5","lastModifiedDate":"2024-03-15"},{"lineNumber":62,"author":{"gitId":"javierng2knus"},"content":" + Character.getNumericValue(checksumStr.charAt(4)) * 4","lastModifiedDate":"2024-03-15"},{"lineNumber":63,"author":{"gitId":"javierng2knus"},"content":" + Character.getNumericValue(checksumStr.charAt(5)) * 3","lastModifiedDate":"2024-03-15"},{"lineNumber":64,"author":{"gitId":"javierng2knus"},"content":" + Character.getNumericValue(checksumStr.charAt(6)) * 2;","lastModifiedDate":"2024-03-15"},{"lineNumber":65,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":66,"author":{"gitId":"javierng2knus"},"content":" // Add the proper offset and set the array (following the checksum algorithm)","lastModifiedDate":"2024-03-15"},{"lineNumber":67,"author":{"gitId":"javierng2knus"},"content":" char[] checksumResultChar \u003d new char[]{ \u0027J\u0027, \u0027Z\u0027, \u0027I\u0027, \u0027H\u0027, \u0027G\u0027, \u0027F\u0027, \u0027E\u0027, \u0027D\u0027, \u0027C\u0027, \u0027B\u0027, \u0027A\u0027 };","lastModifiedDate":"2024-03-15"},{"lineNumber":68,"author":{"gitId":"javierng2knus"},"content":" switch (prefixChar) {","lastModifiedDate":"2024-03-15"},{"lineNumber":69,"author":{"gitId":"javierng2knus"},"content":" case \u0027S\u0027:","lastModifiedDate":"2024-03-15"},{"lineNumber":70,"author":{"gitId":"javierng2knus"},"content":" break;","lastModifiedDate":"2024-03-15"},{"lineNumber":71,"author":{"gitId":"javierng2knus"},"content":" case \u0027T\u0027:","lastModifiedDate":"2024-03-15"},{"lineNumber":72,"author":{"gitId":"javierng2knus"},"content":" total +\u003d 4;","lastModifiedDate":"2024-03-15"},{"lineNumber":73,"author":{"gitId":"javierng2knus"},"content":" break;","lastModifiedDate":"2024-03-15"},{"lineNumber":74,"author":{"gitId":"javierng2knus"},"content":" case \u0027G\u0027:","lastModifiedDate":"2024-03-15"},{"lineNumber":75,"author":{"gitId":"javierng2knus"},"content":" total +\u003d 4;","lastModifiedDate":"2024-03-15"},{"lineNumber":76,"author":{"gitId":"javierng2knus"},"content":" checksumResultChar \u003d new char[]{ \u0027X\u0027, \u0027W\u0027, \u0027U\u0027, \u0027T\u0027, \u0027R\u0027, \u0027Q\u0027, \u0027P\u0027, \u0027N\u0027, \u0027M\u0027, \u0027L\u0027, \u0027K\u0027 };","lastModifiedDate":"2024-03-15"},{"lineNumber":77,"author":{"gitId":"javierng2knus"},"content":" break;","lastModifiedDate":"2024-03-15"},{"lineNumber":78,"author":{"gitId":"javierng2knus"},"content":" case \u0027F\u0027:","lastModifiedDate":"2024-03-15"},{"lineNumber":79,"author":{"gitId":"javierng2knus"},"content":" checksumResultChar \u003d new char[]{ \u0027X\u0027, \u0027W\u0027, \u0027U\u0027, \u0027T\u0027, \u0027R\u0027, \u0027Q\u0027, \u0027P\u0027, \u0027N\u0027, \u0027M\u0027, \u0027L\u0027, \u0027K\u0027 };","lastModifiedDate":"2024-03-15"},{"lineNumber":80,"author":{"gitId":"javierng2knus"},"content":" break;","lastModifiedDate":"2024-03-15"},{"lineNumber":81,"author":{"gitId":"javierng2knus"},"content":" case \u0027M\u0027:","lastModifiedDate":"2024-03-15"},{"lineNumber":82,"author":{"gitId":"javierng2knus"},"content":" checksumResultChar \u003d new char[]{ \u0027K\u0027, \u0027L\u0027, \u0027J\u0027, \u0027N\u0027, \u0027P\u0027, \u0027Q\u0027, \u0027R\u0027, \u0027T\u0027, \u0027U\u0027, \u0027W\u0027, \u0027X\u0027 };","lastModifiedDate":"2024-03-15"},{"lineNumber":83,"author":{"gitId":"javierng2knus"},"content":" total +\u003d 3;","lastModifiedDate":"2024-03-15"},{"lineNumber":84,"author":{"gitId":"javierng2knus"},"content":" break;","lastModifiedDate":"2024-03-15"},{"lineNumber":85,"author":{"gitId":"javierng2knus"},"content":" default:","lastModifiedDate":"2024-03-15"},{"lineNumber":86,"author":{"gitId":"javierng2knus"},"content":" break;","lastModifiedDate":"2024-03-15"},{"lineNumber":87,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":88,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":89,"author":{"gitId":"javierng2knus"},"content":" total %\u003d 11;","lastModifiedDate":"2024-03-15"},{"lineNumber":90,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":91,"author":{"gitId":"javierng2knus"},"content":" // If M, need to adjust","lastModifiedDate":"2024-03-15"},{"lineNumber":92,"author":{"gitId":"javierng2knus"},"content":" if (prefixChar \u003d\u003d \u0027M\u0027) {","lastModifiedDate":"2024-03-15"},{"lineNumber":93,"author":{"gitId":"javierng2knus"},"content":" total \u003d 10 - total;","lastModifiedDate":"2024-03-15"},{"lineNumber":94,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":95,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":96,"author":{"gitId":"javierng2knus"},"content":" return checksumResultChar[total] \u003d\u003d charToCheck;","lastModifiedDate":"2024-03-15"},{"lineNumber":97,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":98,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":99,"author":{"gitId":"javierng2knus"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":100,"author":{"gitId":"javierng2knus"},"content":" public String toString() {","lastModifiedDate":"2024-03-15"},{"lineNumber":101,"author":{"gitId":"javierng2knus"},"content":" return nric;","lastModifiedDate":"2024-03-15"},{"lineNumber":102,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":103,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":104,"author":{"gitId":"javierng2knus"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":105,"author":{"gitId":"javierng2knus"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-15"},{"lineNumber":106,"author":{"gitId":"javierng2knus"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-15"},{"lineNumber":107,"author":{"gitId":"javierng2knus"},"content":" return true;","lastModifiedDate":"2024-03-15"},{"lineNumber":108,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":109,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":110,"author":{"gitId":"javierng2knus"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-15"},{"lineNumber":111,"author":{"gitId":"javierng2knus"},"content":" if (!(other instanceof Nric)) {","lastModifiedDate":"2024-03-15"},{"lineNumber":112,"author":{"gitId":"javierng2knus"},"content":" return false;","lastModifiedDate":"2024-03-15"},{"lineNumber":113,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":114,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":115,"author":{"gitId":"javierng2knus"},"content":" Nric otherNric \u003d (Nric) other;","lastModifiedDate":"2024-03-15"},{"lineNumber":116,"author":{"gitId":"javierng2knus"},"content":" return nric.equals(otherNric.nric);","lastModifiedDate":"2024-03-15"},{"lineNumber":117,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":118,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":119,"author":{"gitId":"javierng2knus"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":120,"author":{"gitId":"javierng2knus"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-15"},{"lineNumber":121,"author":{"gitId":"javierng2knus"},"content":" return nric.hashCode();","lastModifiedDate":"2024-03-15"},{"lineNumber":122,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":123,"author":{"gitId":"javierng2knus"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"javierng2knus":122,"MaYuehan":1}},{"path":"src/main/java/vitalconnect/model/person/medicalinformation/Height.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SeaHogs"},"content":"package vitalconnect.model.person.medicalinformation;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"SeaHogs"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"SeaHogs"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"SeaHogs"},"content":" * Represents a Person\u0027s name in the clinic.","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"SeaHogs"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidHeight(String)}","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"SeaHogs"},"content":"public class Height {","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"SeaHogs"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"SeaHogs"},"content":" \"Height should only contain alphanumerical measured in cm, and should be bigger than 0\";","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"SeaHogs"},"content":" /*","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"SeaHogs"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"SeaHogs"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"SeaHogs"},"content":" public static final String VALIDATION_REGEX \u003d \"[0-9]*\\\\.?[0-9]+\";","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"SeaHogs"},"content":" public final String value;","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"SeaHogs"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"SeaHogs"},"content":" * Constructs a {@code Height}.","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"SeaHogs"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"SeaHogs"},"content":" * @param height A valid height.","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"SeaHogs"},"content":" public Height(String height) {","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"SeaHogs"},"content":" requireNonNull(height);","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"SeaHogs"},"content":" checkArgument(isValidHeight(height), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"SeaHogs"},"content":" this.value \u003d height;","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"Ella-e"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"Ella-e"},"content":" * Constructs a {@code Height}.","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"Ella-e"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"Ella-e"},"content":" public Height() {","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"Ella-e"},"content":" this.value \u003d \"\";","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"SeaHogs"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"SeaHogs"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"SeaHogs"},"content":" public static boolean isValidHeight(String test) {","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"SeaHogs"},"content":" if (test.isEmpty()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"SeaHogs"},"content":" return true;","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"SeaHogs"},"content":" return test.matches(VALIDATION_REGEX) \u0026\u0026 Float.parseFloat(test) \u003e 0;","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"SeaHogs"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"SeaHogs"},"content":" public String toString() {","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"SeaHogs"},"content":" return value;","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"SeaHogs"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"SeaHogs"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"SeaHogs"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"SeaHogs"},"content":" return true;","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"SeaHogs"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"SeaHogs"},"content":" if (!(other instanceof Height)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"SeaHogs"},"content":" return false;","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"SeaHogs"},"content":" Height otherHeight \u003d (Height) other;","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"SeaHogs"},"content":" return value.equals(otherHeight.value);","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"SeaHogs"},"content":" public boolean isEmpty() {","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"SeaHogs"},"content":" return value.isEmpty();","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"SeaHogs"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"SeaHogs"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"SeaHogs"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"SeaHogs"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"Ella-e":7,"SeaHogs":70}},{"path":"src/main/java/vitalconnect/model/person/medicalinformation/MedicalInformation.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SeaHogs"},"content":"package vitalconnect.model.person.medicalinformation;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"SeaHogs"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"SeaHogs"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"SeaHogs"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.allergytag.AllergyTag;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"SeaHogs"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"SeaHogs"},"content":" * Represents the medical information of a person, including height, weight, and allergies.","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"SeaHogs"},"content":"public class MedicalInformation {","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":" private Height height;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":" private Weight weight;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":" private Set\u003cAllergyTag\u003e allergyTag;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"SeaHogs"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"SeaHogs"},"content":" * Constructs a MedicalInformation object with the specified height, weight, and set of allergy tags.","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"SeaHogs"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"SeaHogs"},"content":" * @param height the height of the person","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"SeaHogs"},"content":" * @param weight the weight of the person","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"SeaHogs"},"content":" * @param allergyTag the set of allergy tags associated with the person","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"SeaHogs"},"content":" public MedicalInformation(Height height, Weight weight, Set\u003cAllergyTag\u003e allergyTag) {","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"SeaHogs"},"content":" this.height \u003d height;","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"SeaHogs"},"content":" this.weight \u003d weight;","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"SeaHogs"},"content":" this.allergyTag \u003d allergyTag;","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"SeaHogs"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"SeaHogs"},"content":" * Constructs a MedicalInformation object with the specified height and weight,","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"SeaHogs"},"content":" * initializing the allergy tags to an empty set.","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"SeaHogs"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"SeaHogs"},"content":" * @param height the height of the person","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"SeaHogs"},"content":" * @param weight the weight of the person","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"SeaHogs"},"content":" public MedicalInformation(Height height, Weight weight) {","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"SeaHogs"},"content":" this.height \u003d height;","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"SeaHogs"},"content":" this.weight \u003d weight;","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"SeaHogs"},"content":" this.allergyTag \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"Ella-e"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"Ella-e"},"content":" * Constructs a MedicalInformation object with the specified height and weight,","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"Ella-e"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"Ella-e"},"content":" public MedicalInformation() {","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"Ella-e"},"content":" this.height \u003d new Height(\"\");","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"Ella-e"},"content":" this.weight \u003d new Weight(\"\");","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"Ella-e"},"content":" this.allergyTag \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"Ella-e"},"content":" public boolean isEmpty() {","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"Ella-e"},"content":" return height.isEmpty() \u0026\u0026 weight.isEmpty() \u0026\u0026 allergyTag.isEmpty();","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"SeaHogs"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"SeaHogs"},"content":" * Gets the height of the person.","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"SeaHogs"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"SeaHogs"},"content":" * @return the height of the person","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"SeaHogs"},"content":" public Height getHeight() {","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"SeaHogs"},"content":" return height;","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"SeaHogs"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"SeaHogs"},"content":" * Gets the weight of the person.","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"SeaHogs"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"SeaHogs"},"content":" * @return the weight of the person","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"SeaHogs"},"content":" public Weight getWeight() {","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"SeaHogs"},"content":" return weight;","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"SeaHogs"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"SeaHogs"},"content":" * Gets an unmodifiable set of allergy tags associated with the person.","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"SeaHogs"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"SeaHogs"},"content":" * @return an unmodifiable set of allergy tags","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"SeaHogs"},"content":" public Set\u003cAllergyTag\u003e getAllergyTag() {","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"SeaHogs"},"content":" return Collections.unmodifiableSet(allergyTag);","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"SeaHogs"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"SeaHogs"},"content":" * Returns a string representation of the MedicalInformation object.","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"SeaHogs"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"SeaHogs"},"content":" * @return a string representation of the object","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"SeaHogs"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"SeaHogs"},"content":" public String toString() {","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"SeaHogs"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"javierng2knus"},"content":" builder.append(\" Height: \").append(getHeight()).append(\"cm\")","lastModifiedDate":"2024-03-21"},{"lineNumber":93,"author":{"gitId":"javierng2knus"},"content":" .append(\"\\n Weight: \").append(getWeight()).append(\"kg\");","lastModifiedDate":"2024-03-21"},{"lineNumber":94,"author":{"gitId":"SeaHogs"},"content":" return builder.toString();","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"SeaHogs"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"SeaHogs"},"content":" * Checks if this MedicalInformation object is equal to another object.","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"SeaHogs"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"SeaHogs"},"content":" * @param other the object to compare","lastModifiedDate":"2024-03-18"},{"lineNumber":101,"author":{"gitId":"SeaHogs"},"content":" * @return true if the objects are equal, false otherwise","lastModifiedDate":"2024-03-18"},{"lineNumber":102,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":103,"author":{"gitId":"SeaHogs"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":104,"author":{"gitId":"SeaHogs"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-18"},{"lineNumber":105,"author":{"gitId":"SeaHogs"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-18"},{"lineNumber":106,"author":{"gitId":"SeaHogs"},"content":" return true;","lastModifiedDate":"2024-03-18"},{"lineNumber":107,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":109,"author":{"gitId":"SeaHogs"},"content":" if (!(other instanceof MedicalInformation)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":110,"author":{"gitId":"SeaHogs"},"content":" return false;","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":113,"author":{"gitId":"SeaHogs"},"content":" MedicalInformation otherInfo \u003d (MedicalInformation) other;","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"SeaHogs"},"content":" return height.equals(otherInfo.height) \u0026\u0026 weight.equals(otherInfo.weight)","lastModifiedDate":"2024-03-18"},{"lineNumber":115,"author":{"gitId":"SeaHogs"},"content":" \u0026\u0026 allergyTag.equals(otherInfo.allergyTag);","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":118,"author":{"gitId":"SeaHogs"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":119,"author":{"gitId":"SeaHogs"},"content":" * Generates a hash code for the MedicalInformation object.","lastModifiedDate":"2024-03-18"},{"lineNumber":120,"author":{"gitId":"SeaHogs"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":121,"author":{"gitId":"SeaHogs"},"content":" * @return the hash code value for this object","lastModifiedDate":"2024-03-18"},{"lineNumber":122,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":123,"author":{"gitId":"SeaHogs"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":124,"author":{"gitId":"SeaHogs"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-18"},{"lineNumber":125,"author":{"gitId":"SeaHogs"},"content":" return this.toString().hashCode();","lastModifiedDate":"2024-03-18"},{"lineNumber":126,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":127,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":128,"author":{"gitId":"SeaHogs"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"javierng2knus":2,"Ella-e":16,"SeaHogs":110}},{"path":"src/main/java/vitalconnect/model/person/medicalinformation/Weight.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SeaHogs"},"content":"package vitalconnect.model.person.medicalinformation;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"SeaHogs"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"SeaHogs"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"SeaHogs"},"content":" * Represents a Person\u0027s name in the clinic.","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"SeaHogs"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidWeight(String)}","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"SeaHogs"},"content":"public class Weight {","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"SeaHogs"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"SeaHogs"},"content":" \"Weight should only contain alphanumerical measured in kg, and should be bigger than 0\";","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"SeaHogs"},"content":" /*","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"SeaHogs"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"SeaHogs"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"SeaHogs"},"content":" public static final String VALIDATION_REGEX \u003d \"[0-9]*\\\\.?[0-9]+\";","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"SeaHogs"},"content":" public final String value;","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"SeaHogs"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"SeaHogs"},"content":" * Constructs a {@code Height}.","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"SeaHogs"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"SeaHogs"},"content":" * @param weight A valid weight.","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"SeaHogs"},"content":" public Weight(String weight) {","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"SeaHogs"},"content":" requireNonNull(weight);","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"SeaHogs"},"content":" checkArgument(isValidWeight(weight), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"SeaHogs"},"content":" this.value \u003d weight;","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"Ella-e"},"content":" public Weight() {","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"Ella-e"},"content":" this.value \u003d \"\";","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"Ella-e"},"content":" public boolean isEmtpy() {","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"Ella-e"},"content":" return value.isEmpty();","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"SeaHogs"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"SeaHogs"},"content":" * Returns true if a given string is a valid weight.","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"SeaHogs"},"content":" public static boolean isValidWeight(String test) {","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"SeaHogs"},"content":" if (test.isEmpty()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"SeaHogs"},"content":" return true;","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"SeaHogs"},"content":" return test.matches(VALIDATION_REGEX) \u0026\u0026 Float.parseFloat(test) \u003e 0;","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"SeaHogs"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"SeaHogs"},"content":" public String toString() {","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"SeaHogs"},"content":" return value;","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"SeaHogs"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"SeaHogs"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"SeaHogs"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"SeaHogs"},"content":" return true;","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"SeaHogs"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"SeaHogs"},"content":" if (!(other instanceof Weight)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"SeaHogs"},"content":" return false;","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"SeaHogs"},"content":" Weight otherWeight \u003d (Weight) other;","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"SeaHogs"},"content":" return value.equals(otherWeight.value);","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"SeaHogs"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"SeaHogs"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"SeaHogs"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"SeaHogs"},"content":" public boolean isEmpty() {","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"SeaHogs"},"content":" return value.isEmpty();","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"SeaHogs"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"Ella-e":7,"SeaHogs":71}},{"path":"src/main/java/vitalconnect/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.model.util;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.model.Clinic;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.ReadOnlyClinic;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.allergytag.AllergyTag;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"javierng2knus"},"content":"import vitalconnect.model.person.identificationinformation.IdentificationInformation;","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.identificationinformation.Name;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"javierng2knus"},"content":"import vitalconnect.model.person.identificationinformation.Nric;","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":16,"author":{"gitId":"javierng2knus"},"content":" * Contains utility methods for populating {@code Clinic} with sample data.","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20"},{"lineNumber":21,"author":{"gitId":"SeaHogs"},"content":" new Person(new IdentificationInformation(new Name(\"Alex Yeoh\"), new Nric(\"G7654321L\"))),","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"SeaHogs"},"content":" new Person(new IdentificationInformation(new Name(\"Bernice Yu\"), new Nric(\"M7654321J\")))","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":26,"author":{"gitId":"javierng2knus"},"content":" public static ReadOnlyClinic getSampleClinic() {","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"javierng2knus"},"content":" Clinic sampleAb \u003d new Clinic();","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14"},{"lineNumber":35,"author":{"gitId":"SeaHogs"},"content":" * Returns a allergytag set containing the list of strings given.","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14"},{"lineNumber":37,"author":{"gitId":"SeaHogs"},"content":" public static Set\u003cAllergyTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21"},{"lineNumber":39,"author":{"gitId":"SeaHogs"},"content":" .map(AllergyTag::new)","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":43,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"javierng2knus":5,"MaYuehan":5,"-":27,"SeaHogs":6}},{"path":"src/main/java/vitalconnect/storage/AppointmentStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.storage;","lastModifiedDate":"2024-03-23"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import java.io.IOException;","lastModifiedDate":"2024-03-23"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import java.util.List;","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-23"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Appointment;","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"/**","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":" * Represents the storage for appointment data.","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"public interface AppointmentStorage {","lastModifiedDate":"2024-03-23"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":" * Returns the file path of the appointment data file.","lastModifiedDate":"2024-03-23"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" * @return The path to the appointment data file.","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" Path getAppointmentFilePath();","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" * Reads the appointment data from the default file path.","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" * @return An {@code Optional} containing a list of {@code Appointment} if the data can be read successfully.","lastModifiedDate":"2024-03-23"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" * @throws DataLoadingException If there is an error loading data from the file.","lastModifiedDate":"2024-03-23"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" Optional\u003cList\u003cAppointment\u003e\u003e readAppointments() throws DataLoadingException;","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" * Reads the appointment data from a specified file path.","lastModifiedDate":"2024-03-23"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-23"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" * @param filePath The path to the appointment data file.","lastModifiedDate":"2024-03-23"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" * @return An {@code Optional} containing a list of {@code Appointment} if the data can be read successfully.","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" * @throws DataLoadingException If there is an error loading data from the file.","lastModifiedDate":"2024-03-23"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" Optional\u003cList\u003cAppointment\u003e\u003e readAppointments(Path filePath) throws DataLoadingException;","lastModifiedDate":"2024-03-23"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":" * Saves the given appointment data to the default file path.","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-23"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":" * @param appointments The list of appointments to be saved, which cannot be null.","lastModifiedDate":"2024-03-23"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":" * @throws IOException If there is an error writing to the file.","lastModifiedDate":"2024-03-23"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":" void saveAppointments(List\u003cAppointment\u003e appointments) throws IOException;","lastModifiedDate":"2024-03-23"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":" * Saves the given appointment data to a specified file path.","lastModifiedDate":"2024-03-23"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-23"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":" * @param appointments The list of appointments to be saved, which cannot be null.","lastModifiedDate":"2024-03-23"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":" * @param filePath The path to save the appointment data file.","lastModifiedDate":"2024-03-23"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":" * @throws IOException If there is an error writing to the file.","lastModifiedDate":"2024-03-23"},{"lineNumber":54,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":" void saveAppointments(List\u003cAppointment\u003e appointments, Path filePath) throws IOException;","lastModifiedDate":"2024-03-23"},{"lineNumber":56,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":57,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":58,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":59,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"}],"authorContributionMap":{"MaYuehan":59}},{"path":"src/main/java/vitalconnect/storage/ClinicStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.storage;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"javierng2knus"},"content":"import java.io.IOException;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"javierng2knus"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"javierng2knus"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.ReadOnlyClinic;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"javierng2knus"},"content":"/**","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":" * Represents a storage for {@link vitalconnect.model.Clinic}.","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"javierng2knus"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"javierng2knus"},"content":"public interface ClinicStorage {","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"javierng2knus"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"javierng2knus"},"content":" * Returns the file path of the data file.","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"javierng2knus"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"javierng2knus"},"content":" Path getClinicFilePath();","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"javierng2knus"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"javierng2knus"},"content":" * Returns Clinic data as a {@link ReadOnlyClinic}.","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"javierng2knus"},"content":" * Returns {@code Optional.empty()} if storage file is not found.","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"javierng2knus"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"javierng2knus"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"javierng2knus"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"javierng2knus"},"content":" Optional\u003cReadOnlyClinic\u003e readClinic() throws DataLoadingException;","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"javierng2knus"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"javierng2knus"},"content":" * @see #getClinicFilePath()","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"javierng2knus"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"javierng2knus"},"content":" Optional\u003cReadOnlyClinic\u003e readClinic(Path filePath) throws DataLoadingException;","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"javierng2knus"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"javierng2knus"},"content":" * Saves the given {@link ReadOnlyClinic} to the storage.","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"javierng2knus"},"content":" * @param clinic cannot be null.","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"javierng2knus"},"content":" * @throws IOException if there was any problem writing to the file.","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"javierng2knus"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"javierng2knus"},"content":" void saveClinic(ReadOnlyClinic clinic) throws IOException;","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"javierng2knus"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"javierng2knus"},"content":" * @see #saveClinic(ReadOnlyClinic)","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"javierng2knus"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"javierng2knus"},"content":" void saveClinic(ReadOnlyClinic clinic, Path filePath) throws IOException;","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"javierng2knus"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"javierng2knus":41,"MaYuehan":4}},{"path":"src/main/java/vitalconnect/storage/JsonAdaptedAppointment.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.storage;","lastModifiedDate":"2024-03-23"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-03-23"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2024-03-23"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Appointment;","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"/**","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":" * A Jackson-friendly version of {@link Appointment}.","lastModifiedDate":"2024-03-23"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"public class JsonAdaptedAppointment {","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" private final String patientName;","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" private final String patientIc;","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":" private final String dateTime;","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":" * Constructs a {@code JsonAdaptedAppointment} with the given appointment details.","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" @JsonCreator","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" public JsonAdaptedAppointment(@JsonProperty(\"patientName\") String patientName,","lastModifiedDate":"2024-03-23"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" @JsonProperty(\"patientIc\") String patientIc,","lastModifiedDate":"2024-03-23"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" @JsonProperty(\"dateTime\") String dateTime) {","lastModifiedDate":"2024-03-23"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" this.patientName \u003d patientName;","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" this.patientIc \u003d patientIc;","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" this.dateTime \u003d dateTime;","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" * Converts a given {@code Appointment} into this class for Jackson use.","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" public JsonAdaptedAppointment(Appointment source) {","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" patientName \u003d source.getPatientName();","lastModifiedDate":"2024-03-23"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":" patientIc \u003d source.getPatientIc();","lastModifiedDate":"2024-03-23"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" dateTime \u003d source.getDateTime().format(DateTimeFormatter.ofPattern(\"dd/MM/yyyy HHmm\"));","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":" * Converts this Jackson-friendly adapted appointment object into the model\u0027s {@code Appointment} object.","lastModifiedDate":"2024-03-23"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-23"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted appointment.","lastModifiedDate":"2024-03-23"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":" public Appointment toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-23"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":" if (patientName \u003d\u003d null || patientIc \u003d\u003d null || dateTime \u003d\u003d null) {","lastModifiedDate":"2024-03-23"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":" throw new IllegalValueException(\"Missing fields in Appointment data.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":" LocalDateTime localDateTime;","lastModifiedDate":"2024-03-23"},{"lineNumber":54,"author":{"gitId":"MaYuehan"},"content":" try {","lastModifiedDate":"2024-03-23"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":" localDateTime \u003d LocalDateTime.parse(dateTime, DateTimeFormatter.ofPattern(\"dd/MM/yyyy HHmm\"));","lastModifiedDate":"2024-03-23"},{"lineNumber":56,"author":{"gitId":"MaYuehan"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-03-23"},{"lineNumber":57,"author":{"gitId":"MaYuehan"},"content":" throw new IllegalValueException(\"Incorrect format for appointment dateTime. Expected dd/MM/yyyy HHmm.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":58,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":59,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":60,"author":{"gitId":"MaYuehan"},"content":" return new Appointment(patientName, patientIc, localDateTime);","lastModifiedDate":"2024-03-23"},{"lineNumber":61,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":62,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":63,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"}],"authorContributionMap":{"MaYuehan":63}},{"path":"src/main/java/vitalconnect/storage/JsonAdaptedPerson.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.storage;","lastModifiedDate":"2024-03-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":"MaYuehan"},"content":"import vitalconnect.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.allergytag.AllergyTag;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.Address;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.ContactInformation;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.Email;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.Phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"javierng2knus"},"content":"import vitalconnect.model.person.identificationinformation.IdentificationInformation;","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.identificationinformation.Name;","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"javierng2knus"},"content":"import vitalconnect.model.person.identificationinformation.Nric;","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.person.medicalinformation.Height;","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.person.medicalinformation.MedicalInformation;","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.person.medicalinformation.Weight;","lastModifiedDate":"2024-03-18"},{"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":"javierng2knus"},"content":" private final String nric;","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"Ella-e"},"content":" private String email;","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"Ella-e"},"content":" private String phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"Ella-e"},"content":" private String address;","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"SeaHogs"},"content":" private String height;","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"SeaHogs"},"content":" private String weight;","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"SeaHogs"},"content":" private final List\u003cJsonAdaptedTag\u003e allergyTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"javierng2knus"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"nric\") String nric,","lastModifiedDate":"2024-03-15"},{"lineNumber":48,"author":{"gitId":"Ella-e"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"SeaHogs"},"content":" @JsonProperty(\"address\") String address, @JsonProperty(\"height\") String height,","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"SeaHogs"},"content":" @JsonProperty(\"weight\") String weight,","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"SeaHogs"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e allergyTags) {","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"javierng2knus"},"content":" this.nric \u003d nric;","lastModifiedDate":"2024-03-15"},{"lineNumber":54,"author":{"gitId":"Ella-e"},"content":" this.email \u003d email;","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"Ella-e"},"content":" this.phone \u003d phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"Ella-e"},"content":" this.address \u003d address;","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"SeaHogs"},"content":" this.height \u003d height;","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"SeaHogs"},"content":" this.weight \u003d weight;","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"SeaHogs"},"content":" if (allergyTags !\u003d null) {","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"SeaHogs"},"content":" this.allergyTags.addAll(allergyTags);","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"javierng2knus"},"content":" name \u003d source.getIdentificationInformation().getName().fullName;","lastModifiedDate":"2024-03-15"},{"lineNumber":69,"author":{"gitId":"javierng2knus"},"content":" nric \u003d source.getIdentificationInformation().getNric().nric;","lastModifiedDate":"2024-03-15"},{"lineNumber":70,"author":{"gitId":"Ella-e"},"content":" email \u003d source.getContactInformation().getEmail().value;","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"Ella-e"},"content":" phone \u003d source.getContactInformation().getPhone().value;","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"Ella-e"},"content":" address \u003d source.getContactInformation().getAddress().value;","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"SeaHogs"},"content":" height \u003d source.getMedicalInformation().getHeight().value;","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"SeaHogs"},"content":" weight \u003d source.getMedicalInformation().getWeight().value;","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"SeaHogs"},"content":" allergyTags.addAll(source.getMedicalInformation().getAllergyTag().stream()","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":" }","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":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"SeaHogs"},"content":" final List\u003cAllergyTag\u003e personAllergyTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"SeaHogs"},"content":" for (JsonAdaptedTag tag : allergyTags) {","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"SeaHogs"},"content":" personAllergyTags.add(tag.toModelType());","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"javierng2knus"},"content":" if (nric \u003d\u003d null) {","lastModifiedDate":"2024-03-15"},{"lineNumber":100,"author":{"gitId":"javierng2knus"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Nric.class.getSimpleName()));","lastModifiedDate":"2024-03-15"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"javierng2knus"},"content":" if (!Nric.isValidNric(nric)) {","lastModifiedDate":"2024-03-15"},{"lineNumber":103,"author":{"gitId":"javierng2knus"},"content":" throw new IllegalValueException(Nric.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"javierng2knus"},"content":" final Nric modelNric \u003d new Nric(nric);","lastModifiedDate":"2024-03-15"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"Ella-e"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"Ella-e"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Nric.class.getSimpleName()));","lastModifiedDate":"2024-03-17"},{"lineNumber":109,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"Ella-e"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"Ella-e"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"Ella-e"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"Ella-e"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"Ella-e"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Nric.class.getSimpleName()));","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"Ella-e"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"Ella-e"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"Ella-e"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"Ella-e"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"Ella-e"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Nric.class.getSimpleName()));","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"Ella-e"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"Ella-e"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":129,"author":{"gitId":"Ella-e"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2024-03-17"},{"lineNumber":130,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"Ella-e"},"content":" final ContactInformation contactInformation \u003d new ContactInformation(modelEmail, modelPhone, modelAddress);","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"SeaHogs"},"content":" if (height \u003d\u003d null) {","lastModifiedDate":"2024-03-18"},{"lineNumber":134,"author":{"gitId":"SeaHogs"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Height.class.getSimpleName()));","lastModifiedDate":"2024-03-18"},{"lineNumber":135,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":136,"author":{"gitId":"SeaHogs"},"content":" if (!Height.isValidHeight(height)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":137,"author":{"gitId":"SeaHogs"},"content":" throw new IllegalValueException(Height.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":139,"author":{"gitId":"SeaHogs"},"content":" final Height modelHeight \u003d new Height(height);","lastModifiedDate":"2024-03-18"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":141,"author":{"gitId":"SeaHogs"},"content":" if (weight \u003d\u003d null) {","lastModifiedDate":"2024-03-18"},{"lineNumber":142,"author":{"gitId":"SeaHogs"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Weight.class.getSimpleName()));","lastModifiedDate":"2024-03-18"},{"lineNumber":143,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":144,"author":{"gitId":"SeaHogs"},"content":" if (!Weight.isValidWeight(weight)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":145,"author":{"gitId":"SeaHogs"},"content":" throw new IllegalValueException(Weight.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":146,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":147,"author":{"gitId":"SeaHogs"},"content":" final Weight modelWeight \u003d new Weight(weight);","lastModifiedDate":"2024-03-18"},{"lineNumber":148,"author":{"gitId":"SeaHogs"},"content":" final Set\u003cAllergyTag\u003e modelAllergyTags \u003d new HashSet\u003c\u003e(personAllergyTags);","lastModifiedDate":"2024-03-18"},{"lineNumber":149,"author":{"gitId":"SeaHogs"},"content":" final MedicalInformation medicalInformation \u003d new MedicalInformation(modelHeight,","lastModifiedDate":"2024-03-18"},{"lineNumber":150,"author":{"gitId":"SeaHogs"},"content":" modelWeight, modelAllergyTags);","lastModifiedDate":"2024-03-18"},{"lineNumber":151,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":152,"author":{"gitId":"SeaHogs"},"content":" return new Person(new IdentificationInformation(modelName, modelNric), contactInformation, medicalInformation);","lastModifiedDate":"2024-03-18"},{"lineNumber":153,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"javierng2knus":12,"MaYuehan":4,"Ella-e":41,"-":58,"SeaHogs":39}},{"path":"src/main/java/vitalconnect/storage/JsonAdaptedTag.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.storage;","lastModifiedDate":"2024-03-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":"MaYuehan"},"content":"import vitalconnect.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.allergytag.AllergyTag;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"SeaHogs"},"content":" * Jackson-friendly version of {@link AllergyTag}.","lastModifiedDate":"2024-03-18"},{"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":"SeaHogs"},"content":" * Converts a given {@code AllergyTag} into this class for Jackson use.","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"SeaHogs"},"content":" public JsonAdaptedTag(AllergyTag source) {","lastModifiedDate":"2024-03-18"},{"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":"SeaHogs"},"content":" * Converts this Jackson-friendly adapted allergytag object into the model\u0027s {@code AllergyTag} object.","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"SeaHogs"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted allergytag.","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"SeaHogs"},"content":" public AllergyTag toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"SeaHogs"},"content":" if (!AllergyTag.isValidTagName(tagName)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"SeaHogs"},"content":" throw new IllegalValueException(AllergyTag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"SeaHogs"},"content":" return new AllergyTag(tagName);","lastModifiedDate":"2024-03-18"},{"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":{"MaYuehan":2,"-":36,"SeaHogs":10}},{"path":"src/main/java/vitalconnect/storage/JsonAppointmentStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.storage;","lastModifiedDate":"2024-03-23"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-23"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import java.io.IOException;","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import java.util.List;","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-23"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.util.JsonUtil;","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Appointment;","lastModifiedDate":"2024-03-23"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":"/**","lastModifiedDate":"2024-03-23"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" * A class to access Appointment data stored as a JSON file on the hard disk.","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":"public class JsonAppointmentStorage implements AppointmentStorage {","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" private final Path filePath;","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" * Constructs a {@code JsonAppointmentStorage} with the given file path.","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" * @param filePath Path to the file where appointment data is stored.","lastModifiedDate":"2024-03-23"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" public JsonAppointmentStorage(Path filePath) {","lastModifiedDate":"2024-03-23"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" * Returns the file path where the appointment data is stored.","lastModifiedDate":"2024-03-23"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-23"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" * @return The file path of the appointment data.","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" public Path getAppointmentFilePath() {","lastModifiedDate":"2024-03-23"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":" return filePath;","lastModifiedDate":"2024-03-23"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":" * Reads the appointment data from the default storage file.","lastModifiedDate":"2024-03-23"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-23"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":" * @return An {@code Optional} contain a list of appointments if file exists, or {@code Optional.empty()} otherwise.","lastModifiedDate":"2024-03-23"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":" * @throws DataLoadingException If there is an error reading from the file.","lastModifiedDate":"2024-03-23"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":" public Optional\u003cList\u003cAppointment\u003e\u003e readAppointments() throws DataLoadingException {","lastModifiedDate":"2024-03-23"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":" return readAppointments(filePath);","lastModifiedDate":"2024-03-23"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":54,"author":{"gitId":"MaYuehan"},"content":" * Reads the appointment data from a specified file path.","lastModifiedDate":"2024-03-23"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-23"},{"lineNumber":56,"author":{"gitId":"MaYuehan"},"content":" * @param filePath Path to the file from which appointment data should be read.","lastModifiedDate":"2024-03-23"},{"lineNumber":57,"author":{"gitId":"MaYuehan"},"content":" * @return An {@code Optional} contain a list of appointments if file exists or {@code Optional.empty()} otherwise.","lastModifiedDate":"2024-03-23"},{"lineNumber":58,"author":{"gitId":"MaYuehan"},"content":" * @throws DataLoadingException If there is an error reading from the file.","lastModifiedDate":"2024-03-23"},{"lineNumber":59,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":60,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":61,"author":{"gitId":"MaYuehan"},"content":" public Optional\u003cList\u003cAppointment\u003e\u003e readAppointments(Path filePath) throws DataLoadingException {","lastModifiedDate":"2024-03-23"},{"lineNumber":62,"author":{"gitId":"MaYuehan"},"content":" requireNonNull(filePath);","lastModifiedDate":"2024-03-23"},{"lineNumber":63,"author":{"gitId":"MaYuehan"},"content":" Optional\u003cJsonSerializableAppointment\u003e jsonAppointment \u003d JsonUtil.readJsonFile(","lastModifiedDate":"2024-03-23"},{"lineNumber":64,"author":{"gitId":"MaYuehan"},"content":" filePath, JsonSerializableAppointment.class);","lastModifiedDate":"2024-03-23"},{"lineNumber":65,"author":{"gitId":"MaYuehan"},"content":" if (!jsonAppointment.isPresent()) {","lastModifiedDate":"2024-03-23"},{"lineNumber":66,"author":{"gitId":"MaYuehan"},"content":" return Optional.empty();","lastModifiedDate":"2024-03-23"},{"lineNumber":67,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":68,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":69,"author":{"gitId":"MaYuehan"},"content":" try {","lastModifiedDate":"2024-03-23"},{"lineNumber":70,"author":{"gitId":"MaYuehan"},"content":" return Optional.of(jsonAppointment.get().toModelType());","lastModifiedDate":"2024-03-23"},{"lineNumber":71,"author":{"gitId":"MaYuehan"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2024-03-23"},{"lineNumber":72,"author":{"gitId":"MaYuehan"},"content":" throw new DataLoadingException(ive);","lastModifiedDate":"2024-03-23"},{"lineNumber":73,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":74,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":75,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":76,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":77,"author":{"gitId":"MaYuehan"},"content":" * Saves the provided list of appointments to the default storage file.","lastModifiedDate":"2024-03-23"},{"lineNumber":78,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-23"},{"lineNumber":79,"author":{"gitId":"MaYuehan"},"content":" * @param appointments The list of appointments to save.","lastModifiedDate":"2024-03-23"},{"lineNumber":80,"author":{"gitId":"MaYuehan"},"content":" * @throws IOException If there is an error writing to the file.","lastModifiedDate":"2024-03-23"},{"lineNumber":81,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":82,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":83,"author":{"gitId":"MaYuehan"},"content":" public void saveAppointments(List\u003cAppointment\u003e appointments) throws IOException {","lastModifiedDate":"2024-03-23"},{"lineNumber":84,"author":{"gitId":"MaYuehan"},"content":" saveAppointments(appointments, filePath);","lastModifiedDate":"2024-03-23"},{"lineNumber":85,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":86,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":87,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":88,"author":{"gitId":"MaYuehan"},"content":" * Saves the provided list of appointments to a specified file path.","lastModifiedDate":"2024-03-23"},{"lineNumber":89,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-23"},{"lineNumber":90,"author":{"gitId":"MaYuehan"},"content":" * @param appointments The list of appointments to save.","lastModifiedDate":"2024-03-23"},{"lineNumber":91,"author":{"gitId":"MaYuehan"},"content":" * @param filePath Path to the file where appointment data should be saved.","lastModifiedDate":"2024-03-23"},{"lineNumber":92,"author":{"gitId":"MaYuehan"},"content":" * @throws IOException If there is an error writing to the file.","lastModifiedDate":"2024-03-23"},{"lineNumber":93,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":94,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":95,"author":{"gitId":"MaYuehan"},"content":" public void saveAppointments(List\u003cAppointment\u003e appointments, Path filePath) throws IOException {","lastModifiedDate":"2024-03-23"},{"lineNumber":96,"author":{"gitId":"MaYuehan"},"content":" requireNonNull(appointments);","lastModifiedDate":"2024-03-23"},{"lineNumber":97,"author":{"gitId":"MaYuehan"},"content":" requireNonNull(filePath);","lastModifiedDate":"2024-03-23"},{"lineNumber":98,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":99,"author":{"gitId":"MaYuehan"},"content":" List\u003cJsonAdaptedAppointment\u003e jsonAdaptedAppointments \u003d appointments.stream()","lastModifiedDate":"2024-03-23"},{"lineNumber":100,"author":{"gitId":"MaYuehan"},"content":" .map(JsonAdaptedAppointment::new)","lastModifiedDate":"2024-03-23"},{"lineNumber":101,"author":{"gitId":"MaYuehan"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2024-03-23"},{"lineNumber":102,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":103,"author":{"gitId":"MaYuehan"},"content":" JsonUtil.saveJsonFile(new JsonSerializableAppointment(jsonAdaptedAppointments), filePath);","lastModifiedDate":"2024-03-23"},{"lineNumber":104,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":105,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-03-23"}],"authorContributionMap":{"MaYuehan":105}},{"path":"src/main/java/vitalconnect/storage/JsonClinicStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.storage;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.io.IOException;","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.util.Optional;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.core.LogsCenter;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.util.FileUtil;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.util.JsonUtil;","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.ReadOnlyClinic;","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"javierng2knus"},"content":" * A class to access Clinic data stored as a json file on the hard disk.","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"javierng2knus"},"content":"public class JsonClinicStorage implements ClinicStorage {","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"javierng2knus"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(JsonClinicStorage.class);","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private Path filePath;","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"javierng2knus"},"content":" public JsonClinicStorage(Path filePath) {","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"javierng2knus"},"content":" public Path getClinicFilePath() {","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"-"},"content":" return filePath;","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":" @Override","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"javierng2knus"},"content":" public Optional\u003cReadOnlyClinic\u003e readClinic() throws DataLoadingException {","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"javierng2knus"},"content":" return readClinic(filePath);","lastModifiedDate":"2024-03-11"},{"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":"javierng2knus"},"content":" * Similar to {@link #readClinic()}.","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2023-06-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"javierng2knus"},"content":" public Optional\u003cReadOnlyClinic\u003e readClinic(Path filePath) throws DataLoadingException {","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"-"},"content":" requireNonNull(filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"javierng2knus"},"content":" Optional\u003cJsonSerializableClinic\u003e jsonClinic \u003d JsonUtil.readJsonFile(","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"javierng2knus"},"content":" filePath, JsonSerializableClinic.class);","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"javierng2knus"},"content":" if (!jsonClinic.isPresent()) {","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"javierng2knus"},"content":" return Optional.of(jsonClinic.get().toModelType());","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"-"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" logger.info(\"Illegal values found in \" + filePath + \": \" + ive.getMessage());","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" throw new DataLoadingException(ive);","lastModifiedDate":"2023-06-14"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"javierng2knus"},"content":" public void saveClinic(ReadOnlyClinic clinic) throws IOException {","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"javierng2knus"},"content":" saveClinic(clinic, filePath);","lastModifiedDate":"2024-03-11"},{"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":"javierng2knus"},"content":" * Similar to {@link #saveClinic(ReadOnlyClinic)}.","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"javierng2knus"},"content":" public void saveClinic(ReadOnlyClinic clinic, Path filePath) throws IOException {","lastModifiedDate":"2024-03-11"},{"lineNumber":73,"author":{"gitId":"javierng2knus"},"content":" requireNonNull(clinic);","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"-"},"content":" requireNonNull(filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" FileUtil.createIfMissing(filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"javierng2knus"},"content":" JsonUtil.saveJsonFile(new JsonSerializableClinic(clinic), filePath);","lastModifiedDate":"2024-03-11"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"javierng2knus":19,"MaYuehan":7,"-":54}},{"path":"src/main/java/vitalconnect/storage/JsonSerializableAddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.storage;","lastModifiedDate":"2024-03-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":"MaYuehan"},"content":"import vitalconnect.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Clinic;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.ReadOnlyClinic;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"javierng2knus"},"content":" * An Immutable Clinic that is serializable to JSON format.","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"javierng2knus"},"content":"@JsonRootName(value \u003d \"clinic\")","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"javierng2knus"},"content":"class JsonSerializableClinic {","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"Persons list contains duplicate person(s).\";","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedPerson\u003e persons \u003d new ArrayList\u003c\u003e();","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":"javierng2knus"},"content":" * Constructs a {@code JsonSerializableClinic} with the given persons.","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"javierng2knus"},"content":" public JsonSerializableClinic(@JsonProperty(\"persons\") List\u003cJsonAdaptedPerson\u003e persons) {","lastModifiedDate":"2024-03-11"},{"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":"javierng2knus"},"content":" * Converts a given {@code ReadOnlyClinic} into this class for Jackson use.","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"javierng2knus"},"content":" * @param source future changes to this will not affect the created {@code JsonSerializableClinic}.","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"javierng2knus"},"content":" public JsonSerializableClinic(ReadOnlyClinic source) {","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"-"},"content":" persons.addAll(source.getPersonList().stream().map(JsonAdaptedPerson::new).collect(Collectors.toList()));","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":"javierng2knus"},"content":" * Converts this clinic into the model\u0027s {@code Clinic} object.","lastModifiedDate":"2024-03-11"},{"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":"javierng2knus"},"content":" public Clinic toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"javierng2knus"},"content":" Clinic clinic \u003d new Clinic();","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"-"},"content":" for (JsonAdaptedPerson jsonAdaptedPerson : persons) {","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" Person person \u003d jsonAdaptedPerson.toModelType();","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"javierng2knus"},"content":" if (clinic.hasPerson(person)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"-"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"javierng2knus"},"content":" clinic.addPerson(person);","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"javierng2knus"},"content":" return clinic;","lastModifiedDate":"2024-03-11"},{"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":{"javierng2knus":14,"MaYuehan":5,"-":41}},{"path":"src/main/java/vitalconnect/storage/JsonSerializableAppointment.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.storage;","lastModifiedDate":"2024-03-23"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-23"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import java.util.List;","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Appointment;","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"/**","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":" * Represents a list of appointments that can be serialized into JSON format. This class provides a convenient way","lastModifiedDate":"2024-03-23"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" * to convert between a list of {@code Appointment} objects and their JSON representation, which can be used for","lastModifiedDate":"2024-03-23"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":" * persistent storage.","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":"class JsonSerializableAppointment {","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" private List\u003cJsonAdaptedAppointment\u003e appointments;","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" * Constructs a {@code JsonSerializableAppointment} with the given list of {@code JsonAdaptedAppointment}.","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" * @param appointments A list of {@code JsonAdaptedAppointment} which is a JSON-friendly representation of","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" * appointments.","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" @JsonCreator","lastModifiedDate":"2024-03-23"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" public JsonSerializableAppointment(@JsonProperty(\"appointments\") List\u003cJsonAdaptedAppointment\u003e appointments) {","lastModifiedDate":"2024-03-23"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" this.appointments \u003d new ArrayList\u003c\u003e(appointments);","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" * Converts this JSON-friendly adapted appointment list into the model\u0027s {@code Appointment} list.","lastModifiedDate":"2024-03-23"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-23"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" * @return A list containing the {@code Appointment} objects corresponding to this JSON-friendly list.","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" * @throws IllegalValueException If any data constraints are violated in the adapted appointments.","lastModifiedDate":"2024-03-23"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" public List\u003cAppointment\u003e toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-23"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":" List\u003cAppointment\u003e appointmentList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-23"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" for (JsonAdaptedAppointment jsonAdaptedAppointment : appointments) {","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":" Appointment appointment \u003d jsonAdaptedAppointment.toModelType();","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":" appointmentList.add(appointment);","lastModifiedDate":"2024-03-23"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":" return appointmentList;","lastModifiedDate":"2024-03-23"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"}],"authorContributionMap":{"MaYuehan":48}},{"path":"src/main/java/vitalconnect/storage/JsonUserPrefsStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.storage;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.util.JsonUtil;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.UserPrefs;","lastModifiedDate":"2024-03-13"},{"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":{"MaYuehan":5,"-":42}},{"path":"src/main/java/vitalconnect/storage/Storage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.storage;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import java.util.List;","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Appointment;","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.ReadOnlyClinic;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.UserPrefs;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * API of the Storage component","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":"public interface Storage extends ClinicStorage, UserPrefsStorage, AppointmentStorage {","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e readUserPrefs() throws DataLoadingException;","lastModifiedDate":"2023-06-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" void saveUserPrefs(ReadOnlyUserPrefs userPrefs) throws IOException;","lastModifiedDate":"2018-11-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":27,"author":{"gitId":"javierng2knus"},"content":" Path getClinicFilePath();","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":30,"author":{"gitId":"javierng2knus"},"content":" Optional\u003cReadOnlyClinic\u003e readClinic() throws DataLoadingException;","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":33,"author":{"gitId":"javierng2knus"},"content":" void saveClinic(ReadOnlyClinic clinic) throws IOException;","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" Path getAppointmentFilePath();","lastModifiedDate":"2024-03-23"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":" Optional\u003cList\u003cAppointment\u003e\u003e readAppointments() throws DataLoadingException;","lastModifiedDate":"2024-03-23"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":" void saveAppointments(List\u003cAppointment\u003e appointments) throws IOException;","lastModifiedDate":"2024-03-23"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"javierng2knus":3,"MaYuehan":18,"-":23}},{"path":"src/main/java/vitalconnect/storage/StorageManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.storage;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import java.util.List;","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.core.LogsCenter;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Appointment;","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.ReadOnlyClinic;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.UserPrefs;","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"javierng2knus"},"content":" * Manages storage of Clinic data in local storage.","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class StorageManager implements Storage {","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(StorageManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":22,"author":{"gitId":"javierng2knus"},"content":" private ClinicStorage clinicStorage;","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private UserPrefsStorage userPrefsStorage;","lastModifiedDate":"2016-10-01"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" private AppointmentStorage appointmentStorage;","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":27,"author":{"gitId":"javierng2knus"},"content":" * Creates a {@code StorageManager} with the given {@code ClinicStorage} and {@code UserPrefStorage}.","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" public StorageManager(ClinicStorage clinicStorage, UserPrefsStorage userPrefsStorage,","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" AppointmentStorage appointmentStorage) {","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"javierng2knus"},"content":" this.clinicStorage \u003d clinicStorage;","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.userPrefsStorage \u003d userPrefsStorage;","lastModifiedDate":"2016-10-01"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" this.appointmentStorage \u003d appointmentStorage;","lastModifiedDate":"2024-03-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":36,"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":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-02-15"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public Path getUserPrefsFilePath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return userPrefsStorage.getUserPrefsFilePath();","lastModifiedDate":"2017-02-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public Optional\u003cUserPrefs\u003e readUserPrefs() throws DataLoadingException {","lastModifiedDate":"2023-06-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" return userPrefsStorage.readUserPrefs();","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":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void saveUserPrefs(ReadOnlyUserPrefs userPrefs) throws IOException {","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" userPrefsStorage.saveUserPrefs(userPrefs);","lastModifiedDate":"2016-10-01"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"javierng2knus"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Clinic 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":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":57,"author":{"gitId":"javierng2knus"},"content":" public Path getClinicFilePath() {","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"javierng2knus"},"content":" return clinicStorage.getClinicFilePath();","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":62,"author":{"gitId":"javierng2knus"},"content":" public Optional\u003cReadOnlyClinic\u003e readClinic() throws DataLoadingException {","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"javierng2knus"},"content":" return readClinic(clinicStorage.getClinicFilePath());","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-10-01"},{"lineNumber":67,"author":{"gitId":"javierng2knus"},"content":" public Optional\u003cReadOnlyClinic\u003e readClinic(Path filePath) throws DataLoadingException {","lastModifiedDate":"2024-03-11"},{"lineNumber":68,"author":{"gitId":"-"},"content":" logger.fine(\"Attempting to read data from file: \" + filePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":69,"author":{"gitId":"javierng2knus"},"content":" return clinicStorage.readClinic(filePath);","lastModifiedDate":"2024-03-11"},{"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":"javierng2knus"},"content":" public void saveClinic(ReadOnlyClinic clinic) throws IOException {","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"javierng2knus"},"content":" saveClinic(clinic, clinicStorage.getClinicFilePath());","lastModifiedDate":"2024-03-11"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-10-01"},{"lineNumber":78,"author":{"gitId":"javierng2knus"},"content":" public void saveClinic(ReadOnlyClinic clinic, Path filePath) throws IOException {","lastModifiedDate":"2024-03-11"},{"lineNumber":79,"author":{"gitId":"-"},"content":" logger.fine(\"Attempting to write to data file: \" + filePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":80,"author":{"gitId":"javierng2knus"},"content":" clinicStorage.saveClinic(clinic, filePath);","lastModifiedDate":"2024-03-11"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":83,"author":{"gitId":"MaYuehan"},"content":" // Appointment methods","lastModifiedDate":"2024-03-23"},{"lineNumber":84,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":85,"author":{"gitId":"MaYuehan"},"content":" public Path getAppointmentFilePath() {","lastModifiedDate":"2024-03-23"},{"lineNumber":86,"author":{"gitId":"MaYuehan"},"content":" return appointmentStorage.getAppointmentFilePath();","lastModifiedDate":"2024-03-23"},{"lineNumber":87,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":88,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":89,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":90,"author":{"gitId":"MaYuehan"},"content":" public Optional\u003cList\u003cAppointment\u003e\u003e readAppointments() throws DataLoadingException {","lastModifiedDate":"2024-03-23"},{"lineNumber":91,"author":{"gitId":"MaYuehan"},"content":" return appointmentStorage.readAppointments();","lastModifiedDate":"2024-03-23"},{"lineNumber":92,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":93,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":94,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":95,"author":{"gitId":"MaYuehan"},"content":" public Optional\u003cList\u003cAppointment\u003e\u003e readAppointments(Path filePath) throws DataLoadingException {","lastModifiedDate":"2024-03-23"},{"lineNumber":96,"author":{"gitId":"MaYuehan"},"content":" logger.fine(\"Attempting to read data from file: \" + filePath);","lastModifiedDate":"2024-03-23"},{"lineNumber":97,"author":{"gitId":"MaYuehan"},"content":" return appointmentStorage.readAppointments(filePath);","lastModifiedDate":"2024-03-23"},{"lineNumber":98,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":99,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":100,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":101,"author":{"gitId":"MaYuehan"},"content":" public void saveAppointments(List\u003cAppointment\u003e appointments) throws IOException {","lastModifiedDate":"2024-03-23"},{"lineNumber":102,"author":{"gitId":"MaYuehan"},"content":" appointmentStorage.saveAppointments(appointments);","lastModifiedDate":"2024-03-23"},{"lineNumber":103,"author":{"gitId":"MaYuehan"},"content":" saveAppointments(appointments, appointmentStorage.getAppointmentFilePath());","lastModifiedDate":"2024-03-23"},{"lineNumber":104,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":105,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":106,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":107,"author":{"gitId":"MaYuehan"},"content":" public void saveAppointments(List\u003cAppointment\u003e appointments, Path filePath) throws IOException {","lastModifiedDate":"2024-03-23"},{"lineNumber":108,"author":{"gitId":"MaYuehan"},"content":" logger.fine(\"Attempting to write to data file: \" + filePath);","lastModifiedDate":"2024-03-23"},{"lineNumber":109,"author":{"gitId":"MaYuehan"},"content":" appointmentStorage.saveAppointments(appointments, filePath);","lastModifiedDate":"2024-03-23"},{"lineNumber":110,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":111,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":112,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":113,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"javierng2knus":15,"MaYuehan":43,"-":56}},{"path":"src/main/java/vitalconnect/storage/UserPrefsStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.storage;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.UserPrefs;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-24"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":" * Represents a storage for {@link vitalconnect.model.UserPrefs}.","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":" * Saves the given {@link vitalconnect.model.ReadOnlyUserPrefs} to the storage.","lastModifiedDate":"2024-03-13"},{"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":{"MaYuehan":6,"-":30}},{"path":"src/main/java/vitalconnect/ui/AppointmentCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.ui;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Appointment;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":" * A UI component that displays information of an {@code Appointment}.","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":" * \u003cp\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":" * This component is used to display the details of an appointment in the UI, specifically","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" * in a list view where each appointment is represented as a card. Each card shows the","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":" * patient\u0027s name and the appointment time, formatted according to the specified pattern.","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":"public class AppointmentCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":" private static final String FXML \u003d \"AppointmentListCard.fxml\";","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" public final Appointment appointment;","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" @FXML","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" private HBox cardPane;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" @FXML","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" private Label name;","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" @FXML","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" private Label ic;","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" @FXML","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" private Label id;","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" @FXML","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" private Label time;","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" * Creates an {@code AppointmentCard} with the given {@code Appointment} and index to display.","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" * @param appointment The appointment object containing the data to be displayed on the card.","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":" * @param displayedIndex The index of the appointment in the list, which is used for displaying","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" * the appointment number on the card.","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":" public AppointmentCard(Appointment appointment, int displayedIndex) {","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":" super(FXML);","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":" this.appointment \u003d appointment;","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":" name.setText(appointment.getPatientName());","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":" ic.setText(appointment.getPatientIc());","lastModifiedDate":"2024-03-23"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"d MMM yyyy HH:mm\");","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":" time.setText(appointment.getDateTime().format(formatter));","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":" public Label getName() {","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":" return this.name;","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":" public Label getIc() {","lastModifiedDate":"2024-03-23"},{"lineNumber":56,"author":{"gitId":"MaYuehan"},"content":" return this.ic;","lastModifiedDate":"2024-03-23"},{"lineNumber":57,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":58,"author":{"gitId":"MaYuehan"},"content":" public Label getId() {","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"MaYuehan"},"content":" return this.id;","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"MaYuehan"},"content":" public Label getTime() {","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"MaYuehan"},"content":" return this.time;","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"MaYuehan":66}},{"path":"src/main/java/vitalconnect/ui/AppointmentListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.ui;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.core.LogsCenter;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Appointment;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":" * A UI component that displays a list of {@code Appointment} objects.","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" * \u003cp\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":" * This component is responsible for rendering the appointments in the UI,","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":" * with each appointment represented as an individual card within a list view.","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" * It uses {@code AppointmentCard} to visually represent each appointment\u0027s data.","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":"public class AppointmentListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" private static final String FXML \u003d \"AppointmentListPanel.fxml\";","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" private final Logger logger \u003d LogsCenter.getLogger(AppointmentListPanel.class);","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" @FXML","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" private ListView\u003cAppointment\u003e appointmentListView;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" * Creates an {@code AppointmentListPanel} with the given list of appointments.","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" * @param appointmentList An ObservableList of appointments to be displayed in the panel.","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" public AppointmentListPanel(ObservableList\u003cAppointment\u003e appointmentList) {","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" super(FXML);","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" appointmentListView.setItems(appointmentList);","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" appointmentListView.setCellFactory(listView -\u003e new AppointmentListViewCell());","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":" * Custom {@code ListCell} that displays the graphics of an {@code Appointment} using an {@code AppointmentCard}.","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":" class AppointmentListViewCell extends ListCell\u003cAppointment\u003e {","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":" protected void updateItem(Appointment appointment, boolean empty) {","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":" super.updateItem(appointment, empty);","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":" if (empty || appointment \u003d\u003d null) {","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":" setGraphic(null);","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":" setText(null);","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":" } else {","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":" setGraphic(new AppointmentCard(appointment, getIndex() + 1).getRoot());","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"MaYuehan":56}},{"path":"src/main/java/vitalconnect/ui/CommandBox.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.ui;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.logic.commands.CommandResult;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * The UI component that is responsible for receiving user command inputs.","lastModifiedDate":"2017-08-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class CommandBox extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String ERROR_STYLE_CLASS \u003d \"error\";","lastModifiedDate":"2017-02-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"CommandBox.fxml\";","lastModifiedDate":"2017-04-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private final CommandExecutor commandExecutor;","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-14"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private TextField commandTextField;","lastModifiedDate":"2016-09-14"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Creates a {@code CommandBox} with the given {@code CommandExecutor}.","lastModifiedDate":"2020-05-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public CommandBox(CommandExecutor commandExecutor) {","lastModifiedDate":"2019-01-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" this.commandExecutor \u003d commandExecutor;","lastModifiedDate":"2018-12-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // calls #setStyleToDefault() whenever there is a change to the text of the command box.","lastModifiedDate":"2017-06-28"},{"lineNumber":31,"author":{"gitId":"-"},"content":" commandTextField.textProperty().addListener((unused1, unused2, unused3) -\u003e setStyleToDefault());","lastModifiedDate":"2017-06-28"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Handles the Enter button pressed event.","lastModifiedDate":"2017-08-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private void handleCommandEntered() {","lastModifiedDate":"2018-04-01"},{"lineNumber":39,"author":{"gitId":"-"},"content":" String commandText \u003d commandTextField.getText();","lastModifiedDate":"2020-12-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":" if (commandText.equals(\"\")) {","lastModifiedDate":"2020-12-04"},{"lineNumber":41,"author":{"gitId":"-"},"content":" return;","lastModifiedDate":"2020-12-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-12-04"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-12-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-02-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" commandExecutor.execute(commandText);","lastModifiedDate":"2020-12-04"},{"lineNumber":46,"author":{"gitId":"-"},"content":" commandTextField.setText(\"\");","lastModifiedDate":"2016-09-14"},{"lineNumber":47,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2017-03-11"},{"lineNumber":48,"author":{"gitId":"-"},"content":" setStyleToIndicateCommandFailure();","lastModifiedDate":"2017-02-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-14"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-28"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Sets the command box style to use the default style.","lastModifiedDate":"2017-06-28"},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28"},{"lineNumber":55,"author":{"gitId":"-"},"content":" private void setStyleToDefault() {","lastModifiedDate":"2017-06-28"},{"lineNumber":56,"author":{"gitId":"-"},"content":" commandTextField.getStyleClass().remove(ERROR_STYLE_CLASS);","lastModifiedDate":"2017-02-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-28"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Sets the command box style to indicate a failed command.","lastModifiedDate":"2017-02-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28"},{"lineNumber":62,"author":{"gitId":"-"},"content":" private void setStyleToIndicateCommandFailure() {","lastModifiedDate":"2017-02-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" ObservableList\u003cString\u003e styleClass \u003d commandTextField.getStyleClass();","lastModifiedDate":"2017-03-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" if (styleClass.contains(ERROR_STYLE_CLASS)) {","lastModifiedDate":"2017-03-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return;","lastModifiedDate":"2017-03-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" styleClass.add(ERROR_STYLE_CLASS);","lastModifiedDate":"2017-03-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Represents a function that can execute commands.","lastModifiedDate":"2018-12-09"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @FunctionalInterface","lastModifiedDate":"2018-12-09"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public interface CommandExecutor {","lastModifiedDate":"2018-12-09"},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":79,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":80,"author":{"gitId":"MaYuehan"},"content":" * @see vitalconnect.logic.Logic#execute(String)","lastModifiedDate":"2024-03-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":82,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2018-12-09"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":85,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"}],"authorContributionMap":{"MaYuehan":5,"-":80}},{"path":"src/main/java/vitalconnect/ui/HelpWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.ui;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.commons.core.LogsCenter;","lastModifiedDate":"2024-03-13"},{"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":"javierng2knus"},"content":" public static final String USERGUIDE_URL \u003d \"https://ay2324s2-cs2103t-w08-2.github.io/tp/UserGuide.html\";","lastModifiedDate":"2024-03-17"},{"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":{"javierng2knus":1,"MaYuehan":2,"-":99}},{"path":"src/main/java/vitalconnect/ui/MainWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.ui;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.commons.core.GuiSettings;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.core.LogsCenter;","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.Logic;","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.CommandResult;","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":" private ResultDisplay resultDisplay;","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private HelpWindow helpWindow;","lastModifiedDate":"2018-03-15"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" private AppointmentListPanel appointmentListPanel;","lastModifiedDate":"2024-03-17"},{"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":"-"},"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":"MaYuehan"},"content":" @FXML","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"MaYuehan"},"content":" private StackPane appointmentListPanelPlaceholder;","lastModifiedDate":"2024-03-17"},{"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":"-"},"content":" personListPanel \u003d new PersonListPanel(logic.getFilteredPersonList());","lastModifiedDate":"2019-01-25"},{"lineNumber":117,"author":{"gitId":"-"},"content":" personListPanelPlaceholder.getChildren().add(personListPanel.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":119,"author":{"gitId":"MaYuehan"},"content":" // Initialize AppointmentListPanel but don\u0027t add it to the placeholder yet","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"MaYuehan"},"content":" appointmentListPanel \u003d new AppointmentListPanel(logic.getFilteredAppointmentList());","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09"},{"lineNumber":123,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":125,"author":{"gitId":"javierng2knus"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getClinicFilePath());","lastModifiedDate":"2024-03-11"},{"lineNumber":126,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25"},{"lineNumber":129,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":132,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"MaYuehan"},"content":" * Switches the displayed list in the main window to show the appointment list.","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"MaYuehan"},"content":" * This method clears any current content in the placeholder and then loads the appointment list view.","lastModifiedDate":"2024-03-17"},{"lineNumber":135,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":136,"author":{"gitId":"MaYuehan"},"content":" public void showAppointmentList() {","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"MaYuehan"},"content":" personListPanelPlaceholder.getChildren().clear();","lastModifiedDate":"2024-03-17"},{"lineNumber":138,"author":{"gitId":"MaYuehan"},"content":" personListPanelPlaceholder.getChildren().add(appointmentListPanel.getRoot());","lastModifiedDate":"2024-03-17"},{"lineNumber":139,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":140,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":141,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"MaYuehan"},"content":" * Switches the displayed list in the main window to show the person list.","lastModifiedDate":"2024-03-17"},{"lineNumber":143,"author":{"gitId":"MaYuehan"},"content":" * This method clears any current content in the placeholder and then loads the person list view.","lastModifiedDate":"2024-03-17"},{"lineNumber":144,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":145,"author":{"gitId":"MaYuehan"},"content":" public void showPersonList() {","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"MaYuehan"},"content":" personListPanelPlaceholder.getChildren().clear();","lastModifiedDate":"2024-03-17"},{"lineNumber":147,"author":{"gitId":"MaYuehan"},"content":" personListPanelPlaceholder.getChildren().add(personListPanel.getRoot());","lastModifiedDate":"2024-03-17"},{"lineNumber":148,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":149,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":150,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":151,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":152,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27"},{"lineNumber":153,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":154,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":155,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27"},{"lineNumber":156,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27"},{"lineNumber":157,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27"},{"lineNumber":158,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27"},{"lineNumber":159,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":163,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":164,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15"},{"lineNumber":165,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":166,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":167,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31"},{"lineNumber":168,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15"},{"lineNumber":169,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":170,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15"},{"lineNumber":171,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":175,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15"},{"lineNumber":176,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":179,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":180,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18"},{"lineNumber":181,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":182,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":183,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18"},{"lineNumber":184,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08"},{"lineNumber":185,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08"},{"lineNumber":186,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08"},{"lineNumber":187,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":188,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":189,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":191,"author":{"gitId":"-"},"content":" public PersonListPanel getPersonListPanel() {","lastModifiedDate":"2016-08-25"},{"lineNumber":192,"author":{"gitId":"-"},"content":" return personListPanel;","lastModifiedDate":"2018-08-14"},{"lineNumber":193,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":195,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":196,"author":{"gitId":"MaYuehan"},"content":" * Executes the given command string and updates the UI based on the result of the command.","lastModifiedDate":"2024-03-17"},{"lineNumber":197,"author":{"gitId":"MaYuehan"},"content":" * \u003cp\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":198,"author":{"gitId":"MaYuehan"},"content":" * This method uses the {@code Logic} component to execute the command and obtain a {@code CommandResult},","lastModifiedDate":"2024-03-17"},{"lineNumber":199,"author":{"gitId":"MaYuehan"},"content":" * then updates the {@code ResultDisplay} with feedback from the command. Based on the type of the","lastModifiedDate":"2024-03-17"},{"lineNumber":200,"author":{"gitId":"MaYuehan"},"content":" * {@code CommandResult}, it switches the view between the person list and the appointment list. It also","lastModifiedDate":"2024-03-17"},{"lineNumber":201,"author":{"gitId":"MaYuehan"},"content":" * handles the display of help and exit commands.","lastModifiedDate":"2024-03-17"},{"lineNumber":202,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":203,"author":{"gitId":"MaYuehan"},"content":" * @param commandText The command string to be executed.","lastModifiedDate":"2024-03-17"},{"lineNumber":204,"author":{"gitId":"MaYuehan"},"content":" * @return The result of the command execution.","lastModifiedDate":"2024-03-17"},{"lineNumber":205,"author":{"gitId":"MaYuehan"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2024-03-17"},{"lineNumber":206,"author":{"gitId":"MaYuehan"},"content":" * @throws ParseException If an error occurs during parsing of the command string.","lastModifiedDate":"2024-03-17"},{"lineNumber":207,"author":{"gitId":"MaYuehan"},"content":" * @see vitalconnect.logic.Logic#execute(String)","lastModifiedDate":"2024-03-13"},{"lineNumber":208,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":209,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09"},{"lineNumber":210,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":211,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09"},{"lineNumber":212,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":213,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":215,"author":{"gitId":"MaYuehan"},"content":" switch (commandResult.getType()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":216,"author":{"gitId":"MaYuehan"},"content":" case SHOW_PERSONS:","lastModifiedDate":"2024-03-17"},{"lineNumber":217,"author":{"gitId":"MaYuehan"},"content":" showPersonList();","lastModifiedDate":"2024-03-17"},{"lineNumber":218,"author":{"gitId":"MaYuehan"},"content":" break;","lastModifiedDate":"2024-03-17"},{"lineNumber":219,"author":{"gitId":"MaYuehan"},"content":" case SHOW_APPOINTMENTS:","lastModifiedDate":"2024-03-17"},{"lineNumber":220,"author":{"gitId":"MaYuehan"},"content":" showAppointmentList();","lastModifiedDate":"2024-03-17"},{"lineNumber":221,"author":{"gitId":"MaYuehan"},"content":" break;","lastModifiedDate":"2024-03-17"},{"lineNumber":222,"author":{"gitId":"MaYuehan"},"content":" default:","lastModifiedDate":"2024-03-17"},{"lineNumber":223,"author":{"gitId":"MaYuehan"},"content":" showPersonList();","lastModifiedDate":"2024-03-17"},{"lineNumber":224,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":225,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":226,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":227,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09"},{"lineNumber":228,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":230,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":231,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09"},{"lineNumber":232,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":234,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":235,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09"},{"lineNumber":236,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13"},{"lineNumber":237,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09"},{"lineNumber":238,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09"},{"lineNumber":239,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":240,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":241,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":242,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":243,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":244,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"javierng2knus":1,"MaYuehan":57,"-":186}},{"path":"src/main/java/vitalconnect/ui/PersonCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.ui;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"SeaHogs"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-19"},{"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":"MaYuehan"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.ContactInformation;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.person.medicalinformation.MedicalInformation;","lastModifiedDate":"2024-03-19"},{"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":"javierng2knus"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on Clinic level 4\u003c/a\u003e","lastModifiedDate":"2024-03-11"},{"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":"javierng2knus"},"content":" private Label nric;","lastModifiedDate":"2024-03-15"},{"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":"Ella-e"},"content":" @FXML","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"Ella-e"},"content":" private Label contactInformation;","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"SeaHogs"},"content":" @FXML","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"SeaHogs"},"content":" private Label medicalInformation;","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"SeaHogs"},"content":" @FXML","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"SeaHogs"},"content":" private Label allergy;","lastModifiedDate":"2024-03-19"},{"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":"Ella-e"},"content":" ContactInformation ci \u003d person.getContactInformation();","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"SeaHogs"},"content":" MedicalInformation mi \u003d person.getMedicalInformation();","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"Ella-e"},"content":" String contactInformationText \u003d \"\";","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"Ella-e"},"content":" if (!ci.isEmptyContact()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"Ella-e"},"content":" contactInformationText \u003d ci.toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"SeaHogs"},"content":" String medicalInformationText \u003d \"\";","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"Ella-e"},"content":" if (!mi.isEmpty()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"Ella-e"},"content":" medicalInformationText \u003d mi.toString();","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21"},{"lineNumber":66,"author":{"gitId":"javierng2knus"},"content":" name.setText(person.getIdentificationInformation().getName().fullName);","lastModifiedDate":"2024-03-15"},{"lineNumber":67,"author":{"gitId":"javierng2knus"},"content":" nric.setText(person.getIdentificationInformation().getNric().nric);","lastModifiedDate":"2024-03-15"},{"lineNumber":68,"author":{"gitId":"Ella-e"},"content":" contactInformation.setText(contactInformationText);","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"SeaHogs"},"content":" medicalInformation.setText(medicalInformationText);","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"SeaHogs"},"content":" // Set allergy label visibility based on medical information and allergy tags","lastModifiedDate":"2024-03-23"},{"lineNumber":72,"author":{"gitId":"SeaHogs"},"content":" if (!mi.isEmpty() \u0026\u0026 !mi.getAllergyTag().isEmpty()) {","lastModifiedDate":"2024-03-23"},{"lineNumber":73,"author":{"gitId":"SeaHogs"},"content":" allergy.setVisible(true);","lastModifiedDate":"2024-03-23"},{"lineNumber":74,"author":{"gitId":"SeaHogs"},"content":" allergy.setText(\"Allergic to: \");","lastModifiedDate":"2024-03-23"},{"lineNumber":75,"author":{"gitId":"SeaHogs"},"content":" mi.getAllergyTag().stream()","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"SeaHogs"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"SeaHogs"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"SeaHogs"},"content":" } else {","lastModifiedDate":"2024-03-23"},{"lineNumber":79,"author":{"gitId":"SeaHogs"},"content":" allergy.setVisible(false);","lastModifiedDate":"2024-03-23"},{"lineNumber":80,"author":{"gitId":"SeaHogs"},"content":" allergy.setText(\"\");","lastModifiedDate":"2024-03-23"},{"lineNumber":81,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"},{"lineNumber":84,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":85,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-23"}],"authorContributionMap":{"javierng2knus":4,"MaYuehan":2,"Ella-e":11,"-":42,"SeaHogs":26}},{"path":"src/main/java/vitalconnect/ui/PersonListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.ui;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-08-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2016-09-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2016-08-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Panel containing the list of persons.","lastModifiedDate":"2016-09-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class PersonListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListPanel.fxml\";","lastModifiedDate":"2016-09-14"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private ListView\u003cPerson\u003e personListView;","lastModifiedDate":"2018-02-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Creates a {@code PersonListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2020-05-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public PersonListPanel(ObservableList\u003cPerson\u003e personList) {","lastModifiedDate":"2019-01-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" personListView.setItems(personList);","lastModifiedDate":"2018-02-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" personListView.setCellFactory(listView -\u003e new PersonListViewCell());","lastModifiedDate":"2016-08-18"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-16"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Person} using a {@code PersonCard}.","lastModifiedDate":"2018-02-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" class PersonListViewCell extends ListCell\u003cPerson\u003e {","lastModifiedDate":"2018-02-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" protected void updateItem(Person person, boolean empty) {","lastModifiedDate":"2018-02-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" super.updateItem(person, empty);","lastModifiedDate":"2016-09-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" if (empty || person \u003d\u003d null) {","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" setGraphic(null);","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" setText(null);","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" setGraphic(new PersonCard(person, getIndex() + 1).getRoot());","lastModifiedDate":"2018-02-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"MaYuehan":2,"-":43}},{"path":"src/main/java/vitalconnect/ui/ResultDisplay.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.ui;","lastModifiedDate":"2024-03-13"},{"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":{"MaYuehan":1,"-":27}},{"path":"src/main/java/vitalconnect/ui/StatusBarFooter.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.ui;","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":" * Creates a {@code StatusBarFooter} with the given {@code Path}.","lastModifiedDate":"2020-05-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public StatusBarFooter(Path saveLocation) {","lastModifiedDate":"2019-01-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2017-04-01"},{"lineNumber":25,"author":{"gitId":"-"},"content":" saveLocationStatus.setText(Paths.get(\".\").resolve(saveLocation).toString());","lastModifiedDate":"2018-12-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-01"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"MaYuehan":1,"-":27}},{"path":"src/main/java/vitalconnect/ui/Ui.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.ui;","lastModifiedDate":"2024-03-13"},{"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":{"MaYuehan":1,"-":12}},{"path":"src/main/java/vitalconnect/ui/UiManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.ui;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.MainApp;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.core.LogsCenter;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.util.StringUtil;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.Logic;","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":" private static final String ICON_APPLICATION \u003d \"/images/address_book_32.png\";","lastModifiedDate":"2016-08-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":{"MaYuehan":5,"-":83}},{"path":"src/main/java/vitalconnect/ui/UiPart.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.ui;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.MainApp;","lastModifiedDate":"2024-03-13"},{"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":{"MaYuehan":2,"-":86}},{"path":"src/main/resources/view/AppointmentListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"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":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"200\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$name\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" \u003cLabel fx:id\u003d\"ic\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$ic\" /\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" \u003cLabel fx:id\u003d\"time\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$time\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"MaYuehan":37}},{"path":"src/main/resources/view/AppointmentListPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":" \u003cListView fx:id\u003d\"appointmentListView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"MaYuehan":9}},{"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":"Ella-e"},"content":" \u003cLabel fx:id\u003d\"contactInformation\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"SeaHogs"},"content":" \u003cLabel fx:id\u003d\"medicalInformation\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03"},{"lineNumber":32,"author":{"gitId":"SeaHogs"},"content":" \u003cLabel fx:id\u003d\"allergy\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"javierng2knus"},"content":" \u003cLabel fx:id\u003d\"nric\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$nric\" /\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"javierng2knus":1,"Ella-e":1,"-":33,"SeaHogs":2}},{"path":"src/test/java/vitalconnect/AppParametersTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect;","lastModifiedDate":"2024-03-13"},{"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":"2019-02-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-02-23"},{"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":"-"},"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":"-"},"content":"}","lastModifiedDate":"2018-04-21"}],"authorContributionMap":{"MaYuehan":1,"-":88}},{"path":"src/test/java/vitalconnect/commons/core/ConfigTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.commons.core;","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","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":"2016-09-30"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class ConfigTest {","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 toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":" Config config \u003d new Config();","lastModifiedDate":"2019-02-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":" String expected \u003d Config.class.getCanonicalName() + \"{logLevel\u003d\" + config.getLogLevel()","lastModifiedDate":"2019-02-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":" + \", userPrefsFilePath\u003d\" + config.getUserPrefsFilePath() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":" assertEquals(expected, config.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-30"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public void equalsMethod() {","lastModifiedDate":"2016-09-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":" Config defaultConfig \u003d new Config();","lastModifiedDate":"2016-09-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" assertNotNull(defaultConfig);","lastModifiedDate":"2016-10-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertTrue(defaultConfig.equals(defaultConfig));","lastModifiedDate":"2016-09-30"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":27,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-30"}],"authorContributionMap":{"MaYuehan":1,"-":26}},{"path":"src/test/java/vitalconnect/commons/core/GuiSettingsTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.commons.core;","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-02-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"public class GuiSettingsTest {","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings();","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":" String expected \u003d GuiSettings.class.getCanonicalName() + \"{windowWidth\u003d\" + guiSettings.getWindowWidth()","lastModifiedDate":"2019-02-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":" + \", windowHeight\u003d\" + guiSettings.getWindowHeight() + \", windowCoordinates\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":" + guiSettings.getWindowCoordinates() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":" assertEquals(expected, guiSettings.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-02-23"}],"authorContributionMap":{"MaYuehan":1,"-":15}},{"path":"src/test/java/vitalconnect/commons/core/VersionTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.commons.core;","lastModifiedDate":"2024-03-13"},{"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.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class VersionTest {","lastModifiedDate":"2016-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void versionParsing_acceptableVersionString_parsedVersionCorrectly() {","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" verifyVersionParsedCorrectly(\"V0.0.0ea\", 0, 0, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" verifyVersionParsedCorrectly(\"V3.10.2\", 3, 10, 2, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" verifyVersionParsedCorrectly(\"V100.100.100ea\", 100, 100, 100, true);","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":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public void versionParsing_wrongVersionString_throwIllegalArgumentException() {","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e Version.fromString(\"This is not a version string\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void versionConstructor_correctParameter_valueAsExpected() {","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" Version version \u003d new Version(19, 10, 20, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertEquals(19, version.getMajor());","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertEquals(10, version.getMinor());","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertEquals(20, version.getPatch());","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertEquals(true, version.isEarlyAccess());","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void versionToString_validVersion_correctStringRepresentation() {","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // boundary at 0","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" Version version \u003d new Version(0, 0, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertEquals(\"V0.0.0ea\", version.toString());","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" // normal values","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" version \u003d new Version(4, 10, 5, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertEquals(\"V4.10.5\", version.toString());","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // big numbers","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" version \u003d new Version(100, 100, 100, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertEquals(\"V100.100.100ea\", version.toString());","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":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void versionComparable_validVersion_compareToIsCorrect() {","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" Version one;","lastModifiedDate":"2017-09-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" Version another;","lastModifiedDate":"2017-09-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // Tests equality","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" one \u003d new Version(0, 0, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" another \u003d new Version(0, 0, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003d\u003d 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" one \u003d new Version(11, 12, 13, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" another \u003d new Version(11, 12, 13, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003d\u003d 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // Tests different patch","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" one \u003d new Version(0, 0, 5, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" another \u003d new Version(0, 0, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003e 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // Tests different minor","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" one \u003d new Version(0, 0, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" another \u003d new Version(0, 5, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003c 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // Tests different major","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" one \u003d new Version(10, 0, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":" another \u003d new Version(0, 0, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003e 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // Tests high major vs low minor","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":" one \u003d new Version(10, 0, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" another \u003d new Version(0, 1, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003e 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" // Tests high patch vs low minor","lastModifiedDate":"2016-08-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" one \u003d new Version(0, 0, 10, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":" another \u003d new Version(0, 1, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003c 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // Tests same major minor different patch","lastModifiedDate":"2016-08-08"},{"lineNumber":88,"author":{"gitId":"-"},"content":" one \u003d new Version(2, 15, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":" another \u003d new Version(2, 15, 5, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003c 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":92,"author":{"gitId":"-"},"content":" // Tests early access vs not early access on same version number","lastModifiedDate":"2016-08-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":" one \u003d new Version(2, 15, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":94,"author":{"gitId":"-"},"content":" another \u003d new Version(2, 15, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003c 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" // Tests early access lower version vs not early access higher version compare by version number first","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" one \u003d new Version(2, 15, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" another \u003d new Version(2, 15, 5, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003c 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" // Tests early access higher version vs not early access lower version compare by version number first","lastModifiedDate":"2016-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" one \u003d new Version(2, 15, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" another \u003d new Version(2, 15, 5, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003c 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void versionComparable_validVersion_hashCodeIsCorrect() {","lastModifiedDate":"2016-08-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" Version version \u003d new Version(100, 100, 100, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertEquals(100100100, version.hashCode());","lastModifiedDate":"2016-08-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":" version \u003d new Version(10, 10, 10, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertEquals(1010010010, version.hashCode());","lastModifiedDate":"2016-08-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public void versionComparable_validVersion_equalIsCorrect() {","lastModifiedDate":"2016-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" Version one;","lastModifiedDate":"2016-10-16"},{"lineNumber":120,"author":{"gitId":"-"},"content":" Version another;","lastModifiedDate":"2016-10-16"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" one \u003d new Version(0, 0, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" another \u003d new Version(0, 0, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertTrue(one.equals(another));","lastModifiedDate":"2016-08-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" one \u003d new Version(100, 191, 275, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" another \u003d new Version(100, 191, 275, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertTrue(one.equals(another));","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":" private void verifyVersionParsedCorrectly(String versionString,","lastModifiedDate":"2016-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":" int major, int minor, int patch, boolean isEarlyAccess) {","lastModifiedDate":"2016-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":" assertEquals(new Version(major, minor, patch, isEarlyAccess), Version.fromString(versionString));","lastModifiedDate":"2016-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"MaYuehan":2,"-":133}},{"path":"src/test/java/vitalconnect/commons/core/index/IndexTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.commons.core.index;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import static vitalconnect.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-13"},{"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":"-"},"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":"-"},"content":" assertTrue(fifthPersonIndex.equals(Index.fromOneBased(5)));","lastModifiedDate":"2017-05-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(fifthPersonIndex.equals(Index.fromZeroBased(4)));","lastModifiedDate":"2017-05-24"},{"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":"-"},"content":" assertTrue(fifthPersonIndex.equals(fifthPersonIndex));","lastModifiedDate":"2017-05-24"},{"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":"-"},"content":" assertFalse(fifthPersonIndex.equals(null));","lastModifiedDate":"2017-05-24"},{"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":"-"},"content":" assertFalse(fifthPersonIndex.equals(5.0f));","lastModifiedDate":"2017-05-24"},{"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":"-"},"content":" assertFalse(fifthPersonIndex.equals(Index.fromOneBased(1)));","lastModifiedDate":"2017-05-24"},{"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":{"MaYuehan":2,"-":65}},{"path":"src/test/java/vitalconnect/commons/util/AppUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.commons.util;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import static vitalconnect.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":" assertNotNull(AppUtil.getImage(\"/images/address_book_32.png\"));","lastModifiedDate":"2016-09-30"},{"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":{"MaYuehan":2,"-":34}},{"path":"src/test/java/vitalconnect/commons/util/CollectionUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.commons.util;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import static vitalconnect.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":" List\u003cObject\u003e containingNull \u003d Arrays.asList((Object) null);","lastModifiedDate":"2017-01-14"},{"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":"-"},"content":" assertNullPointerExceptionThrown(Arrays.asList((Object) null));","lastModifiedDate":"2017-05-19"},{"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":"-"},"content":" assertNullPointerExceptionNotThrown(Arrays.asList(new Object()));","lastModifiedDate":"2017-05-19"},{"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":"-"},"content":" List\u003cObject\u003e containingNull \u003d Arrays.asList((Object) null);","lastModifiedDate":"2017-01-14"},{"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":"2019-03-23"},{"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":"2019-03-23"},{"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":"2017-05-19"},{"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":"2017-05-19"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-19"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-22"}],"authorContributionMap":{"MaYuehan":3,"-":105}},{"path":"src/test/java/vitalconnect/commons/util/ConfigUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.commons.util;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import static vitalconnect.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.commons.core.Config;","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-13"},{"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":"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":" @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-06-14"},{"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":"2019-03-23"},{"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":"2019-03-23"},{"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":{"MaYuehan":4,"-":112}},{"path":"src/test/java/vitalconnect/commons/util/FileUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.commons.util;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import static vitalconnect.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class FileUtilTest {","lastModifiedDate":"2016-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void isValidPath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":" // valid path","lastModifiedDate":"2018-04-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":" assertTrue(FileUtil.isValidPath(\"valid/file/path\"));","lastModifiedDate":"2018-04-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":" // invalid path","lastModifiedDate":"2018-04-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":" assertFalse(FileUtil.isValidPath(\"a\\0\"));","lastModifiedDate":"2018-04-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":" // null path -\u003e throws NullPointerException","lastModifiedDate":"2018-04-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e FileUtil.isValidPath(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"MaYuehan":2,"-":21}},{"path":"src/test/java/vitalconnect/commons/util/JsonUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.commons.util;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.testutil.SerializableTestClass;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.testutil.TestUtil;","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"MaYuehan":3,"-":42}},{"path":"src/test/java/vitalconnect/commons/util/StringUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.commons.util;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import static vitalconnect.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e StringUtil.containsWordIgnoreCase(\"typical sentence\", null));","lastModifiedDate":"2019-03-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void containsWordIgnoreCase_emptyWord_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, \"Word parameter cannot be empty\", ()","lastModifiedDate":"2019-03-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" -\u003e StringUtil.containsWordIgnoreCase(\"typical sentence\", \" \"));","lastModifiedDate":"2019-03-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void containsWordIgnoreCase_multipleWords_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, \"Word parameter should be a single word\", ()","lastModifiedDate":"2019-03-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" -\u003e StringUtil.containsWordIgnoreCase(\"typical sentence\", \"aaa BBB\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void containsWordIgnoreCase_nullSentence_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e StringUtil.containsWordIgnoreCase(null, \"abc\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Valid equivalence partitions for word:","lastModifiedDate":"2016-10-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * - any word","lastModifiedDate":"2016-10-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * - word containing symbols/numbers","lastModifiedDate":"2016-10-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * - word with leading/trailing spaces","lastModifiedDate":"2016-10-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Valid equivalence partitions for sentence:","lastModifiedDate":"2016-10-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * - empty string","lastModifiedDate":"2016-10-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * - one word","lastModifiedDate":"2016-10-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * - multiple words","lastModifiedDate":"2016-10-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * - sentence with extra spaces","lastModifiedDate":"2016-10-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Possible scenarios returning true:","lastModifiedDate":"2016-10-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * - matches first word in sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * - last word in sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - middle word in sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * - matches multiple words","lastModifiedDate":"2016-10-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * Possible scenarios returning false:","lastModifiedDate":"2016-10-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * - query word matches part of a sentence word","lastModifiedDate":"2016-10-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * - sentence word matches part of the query word","lastModifiedDate":"2016-10-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-13"},{"lineNumber":101,"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":102,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void containsWordIgnoreCase_validInputs_correctResult() {","lastModifiedDate":"2016-10-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" // Empty sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.containsWordIgnoreCase(\"\", \"abc\")); // Boundary case","lastModifiedDate":"2016-10-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.containsWordIgnoreCase(\" \", \"123\"));","lastModifiedDate":"2016-10-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" // Matches a partial word only","lastModifiedDate":"2016-10-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.containsWordIgnoreCase(\"aaa bbb ccc\", \"bb\")); // Sentence word bigger than query word","lastModifiedDate":"2016-10-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.containsWordIgnoreCase(\"aaa bbb ccc\", \"bbbb\")); // Query word bigger than sentence word","lastModifiedDate":"2016-10-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" // Matches word in the sentence, different upper/lower case letters","lastModifiedDate":"2016-10-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\"aaa bBb ccc\", \"Bbb\")); // First word (boundary case)","lastModifiedDate":"2016-10-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\"aaa bBb ccc@1\", \"CCc@1\")); // Last word (boundary case)","lastModifiedDate":"2016-10-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\" AAA bBb ccc \", \"aaa\")); // Sentence has extra spaces","lastModifiedDate":"2016-10-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\"Aaa\", \"aaa\")); // Only one word in sentence (boundary case)","lastModifiedDate":"2016-10-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\"aaa bbb ccc\", \" ccc \")); // Leading/trailing spaces","lastModifiedDate":"2016-10-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":" // Matches multiple words in sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\"AAA bBb ccc bbb\", \"bbB\"));","lastModifiedDate":"2016-10-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" //---------------- Tests for getDetails --------------------------------------","lastModifiedDate":"2016-10-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":128,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-13"},{"lineNumber":129,"author":{"gitId":"-"},"content":" * Equivalence Partitions: null, valid throwable object","lastModifiedDate":"2016-10-13"},{"lineNumber":130,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-30"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void getDetails_exceptionGiven() {","lastModifiedDate":"2016-09-30"},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.getDetails(new FileNotFoundException(\"file not found\"))","lastModifiedDate":"2019-03-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" .contains(\"java.io.FileNotFoundException: file not found\"));","lastModifiedDate":"2019-03-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-30"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public void getDetails_nullGiven_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e StringUtil.getDetails(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":143,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"MaYuehan":2,"-":141}},{"path":"src/test/java/vitalconnect/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import static vitalconnect.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"javierng2knus"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.NRIC_DESC_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.TypicalPersons.AMY;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-23"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":"import java.util.List;","lastModifiedDate":"2024-03-23"},{"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":"MaYuehan"},"content":"import vitalconnect.logic.commands.AddCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.CommandResult;","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.ListCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Appointment;","lastModifiedDate":"2024-03-23"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.ModelManager;","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.ReadOnlyClinic;","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.UserPrefs;","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.storage.JsonAppointmentStorage;","lastModifiedDate":"2024-03-23"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.storage.JsonClinicStorage;","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.storage.JsonUserPrefsStorage;","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.storage.StorageManager;","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.testutil.PersonBuilder;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":" Path clinicFilePath \u003d temporaryFolder.resolve(\"clinic.json\");","lastModifiedDate":"2024-03-23"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":" Path userPrefsFilePath \u003d temporaryFolder.resolve(\"userPrefs.json\");","lastModifiedDate":"2024-03-23"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":" Path appointmentFilePath \u003d temporaryFolder.resolve(\"appointments.json\");","lastModifiedDate":"2024-03-23"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":54,"author":{"gitId":"MaYuehan"},"content":" JsonClinicStorage clinicStorage \u003d new JsonClinicStorage(clinicFilePath);","lastModifiedDate":"2024-03-23"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(userPrefsFilePath);","lastModifiedDate":"2024-03-23"},{"lineNumber":56,"author":{"gitId":"MaYuehan"},"content":" JsonAppointmentStorage appointmentStorage \u003d new JsonAppointmentStorage(appointmentFilePath);","lastModifiedDate":"2024-03-23"},{"lineNumber":57,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":58,"author":{"gitId":"MaYuehan"},"content":" StorageManager storage \u003d new StorageManager(clinicStorage, userPrefsStorage, appointmentStorage);","lastModifiedDate":"2024-03-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":62,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":65,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2017-06-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2017-06-14"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14"},{"lineNumber":77,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2017-06-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2017-06-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":81,"author":{"gitId":"SeaHogs"},"content":" // @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"SeaHogs"},"content":" // public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"SeaHogs"},"content":" // assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"SeaHogs"},"content":" // LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"SeaHogs"},"content":" // }","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"SeaHogs"},"content":" //","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"SeaHogs"},"content":" // @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"SeaHogs"},"content":" // public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"SeaHogs"},"content":" // assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"SeaHogs"},"content":" // LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"SeaHogs"},"content":" // }","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":98,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":105,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14"},{"lineNumber":107,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14"},{"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-03-11"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":116,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":120,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":129,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":130,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":132,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14"},{"lineNumber":134,"author":{"gitId":"MaYuehan"},"content":" Model expectedModel \u003d new ModelManager(model.getClinic(), new UserPrefs(), new ArrayList\u003c\u003e());","lastModifiedDate":"2024-03-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":138,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":139,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":140,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":141,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":142,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":143,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":144,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"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, Model expectedModel) {","lastModifiedDate":"2017-05-31"},{"lineNumber":147,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14"},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19"},{"lineNumber":151,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":152,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13"},{"lineNumber":153,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13"},{"lineNumber":154,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13"},{"lineNumber":155,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13"},{"lineNumber":156,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":157,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13"},{"lineNumber":158,"author":{"gitId":"MaYuehan"},"content":" Path clinicPath \u003d temporaryFolder.resolve(\"ExceptionClinic.json\");","lastModifiedDate":"2024-03-23"},{"lineNumber":159,"author":{"gitId":"MaYuehan"},"content":" Path appointmentPath \u003d temporaryFolder.resolve(\"ExceptionAppointments.json\");","lastModifiedDate":"2024-03-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":161,"author":{"gitId":"MaYuehan"},"content":" // Mock ClinicStorage that throws the IOException e when saving","lastModifiedDate":"2024-03-23"},{"lineNumber":162,"author":{"gitId":"MaYuehan"},"content":" JsonClinicStorage clinicStorage \u003d new JsonClinicStorage(clinicPath) {","lastModifiedDate":"2024-03-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":164,"author":{"gitId":"MaYuehan"},"content":" public void saveClinic(ReadOnlyClinic clinic, Path filePath) throws IOException {","lastModifiedDate":"2024-03-23"},{"lineNumber":165,"author":{"gitId":"MaYuehan"},"content":" throw e;","lastModifiedDate":"2024-03-23"},{"lineNumber":166,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":167,"author":{"gitId":"MaYuehan"},"content":" };","lastModifiedDate":"2024-03-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":169,"author":{"gitId":"MaYuehan"},"content":" // Mock AppointmentStorage that throws the IOException e when saving","lastModifiedDate":"2024-03-23"},{"lineNumber":170,"author":{"gitId":"MaYuehan"},"content":" JsonAppointmentStorage appointmentStorage \u003d new JsonAppointmentStorage(appointmentPath) {","lastModifiedDate":"2024-03-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":172,"author":{"gitId":"MaYuehan"},"content":" public void saveAppointments(List\u003cAppointment\u003e appointments, Path filePath) throws IOException {","lastModifiedDate":"2024-03-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":175,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":177,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":178,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13"},{"lineNumber":179,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":180,"author":{"gitId":"MaYuehan"},"content":" // Inject StorageManager with the mock storages","lastModifiedDate":"2024-03-23"},{"lineNumber":181,"author":{"gitId":"MaYuehan"},"content":" StorageManager storage \u003d new StorageManager(clinicStorage, userPrefsStorage, appointmentStorage);","lastModifiedDate":"2024-03-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":183,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":185,"author":{"gitId":"MaYuehan"},"content":" // Triggers the saveClinic and saveAppointments methods by executing an add command","lastModifiedDate":"2024-03-23"},{"lineNumber":186,"author":{"gitId":"javierng2knus"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + NRIC_DESC_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":187,"author":{"gitId":"SeaHogs"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":188,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13"},{"lineNumber":189,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13"},{"lineNumber":190,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13"},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":192,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"},{"lineNumber":193,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"}],"authorContributionMap":{"javierng2knus":2,"MaYuehan":51,"-":128,"SeaHogs":12}},{"path":"src/test/java/vitalconnect/logic/commands/AddCommandIntegrationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.commands;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.TypicalPersons.getTypicalClinic;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.Messages;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.ModelManager;","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.UserPrefs;","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.testutil.PersonBuilder;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":" model \u003d new ModelManager(getTypicalClinic(), new UserPrefs(), new ArrayList\u003c\u003e());","lastModifiedDate":"2024-03-23"},{"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":"-"},"content":" public void execute_newPerson_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" Model expectedModel \u003d new ModelManager(model.getClinic(), new UserPrefs(), new ArrayList\u003c\u003e());","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":" expectedModel.addPerson(validPerson);","lastModifiedDate":"2017-06-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertCommandSuccess(new AddCommand(validPerson), model,","lastModifiedDate":"2019-01-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" expectedModel);","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","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 execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":45,"author":{"gitId":"javierng2knus"},"content":" Person personInList \u003d model.getClinic().getPersonList().get(0);","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertCommandFailure(new AddCommand(personInList), model,","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" AddCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"javierng2knus":1,"MaYuehan":13,"-":36}},{"path":"src/test/java/vitalconnect/logic/commands/AddCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.commands;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import static vitalconnect.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import java.util.List;","lastModifiedDate":"2024-03-23"},{"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":"MaYuehan"},"content":"import vitalconnect.commons.core.GuiSettings;","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.Messages;","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Appointment;","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Clinic;","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.ReadOnlyClinic;","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.ContactInformation;","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.identificationinformation.Nric;","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.person.medicalinformation.MedicalInformation;","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.testutil.PersonBuilder;","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":"public class AddCommandTest {","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 constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2017-05-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2017-05-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new AddCommand(validPerson).execute(modelStub);","lastModifiedDate":"2019-01-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(validPerson), modelStub.personsAdded);","lastModifiedDate":"2017-05-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(validPerson);","lastModifiedDate":"2018-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2019-05-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":63,"author":{"gitId":"-"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" AddCommand addAliceCommand \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":" AddCommand addBobCommand \u003d new AddCommand(bob);","lastModifiedDate":"2017-06-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" AddCommand addAliceCommandCopy \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"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":" AddCommand addCommand \u003d new AddCommand(ALICE);","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" String expected \u003d AddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.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":"2017-05-12"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":95,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"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 ReadOnlyUserPrefs getUserPrefs() {","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 GuiSettings getGuiSettings() {","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 void setGuiSettings(GuiSettings guiSettings) {","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":"javierng2knus"},"content":" public Path getClinicFilePath() {","lastModifiedDate":"2024-03-11"},{"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":"2018-11-27"},{"lineNumber":122,"author":{"gitId":"javierng2knus"},"content":" public void setClinicFilePath(Path clinicFilePath) {","lastModifiedDate":"2024-03-11"},{"lineNumber":123,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":127,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"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":"javierng2knus"},"content":" public void setClinic(ReadOnlyClinic newData) {","lastModifiedDate":"2024-03-11"},{"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":"2017-05-12"},{"lineNumber":137,"author":{"gitId":"javierng2knus"},"content":" public ReadOnlyClinic getClinic() {","lastModifiedDate":"2024-03-11"},{"lineNumber":138,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06"},{"lineNumber":143,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":146,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":147,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-08"},{"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 void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"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 ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":158,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":161,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":162,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":163,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":165,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":166,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":167,"author":{"gitId":"MaYuehan"},"content":" public boolean doesPersonExist(String name) {","lastModifiedDate":"2024-03-13"},{"lineNumber":168,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":169,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":170,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":171,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":172,"author":{"gitId":"MaYuehan"},"content":" public boolean doesIcExist(String name) {","lastModifiedDate":"2024-03-23"},{"lineNumber":173,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":174,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":175,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":176,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":177,"author":{"gitId":"MaYuehan"},"content":" public void addAppointment(Appointment appointment) {","lastModifiedDate":"2024-03-13"},{"lineNumber":178,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":179,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":180,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":181,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":182,"author":{"gitId":"MaYuehan"},"content":" public void setAppointments(List\u003cAppointment\u003e appointments) {","lastModifiedDate":"2024-03-23"},{"lineNumber":183,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":184,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":185,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":186,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":187,"author":{"gitId":"MaYuehan"},"content":" public ObservableList\u003cAppointment\u003e getFilteredAppointmentList() {","lastModifiedDate":"2024-03-13"},{"lineNumber":188,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":189,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":190,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":191,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":192,"author":{"gitId":"MaYuehan"},"content":" public void deleteAppointment(Appointment appointment) {","lastModifiedDate":"2024-03-13"},{"lineNumber":193,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":194,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":195,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":196,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":197,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":198,"author":{"gitId":"Ella-e"},"content":" public Person findPersonByNric(Nric nric) {","lastModifiedDate":"2024-03-17"},{"lineNumber":199,"author":{"gitId":"Ella-e"},"content":" return null;","lastModifiedDate":"2024-03-17"},{"lineNumber":200,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":201,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":202,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":203,"author":{"gitId":"Ella-e"},"content":" public void updatePersonContactInformation(Nric nric, ContactInformation contactInformation) {","lastModifiedDate":"2024-03-17"},{"lineNumber":204,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":205,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":206,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":207,"author":{"gitId":"SeaHogs"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":208,"author":{"gitId":"SeaHogs"},"content":" * @param nric","lastModifiedDate":"2024-03-18"},{"lineNumber":209,"author":{"gitId":"SeaHogs"},"content":" * @param medicalInformation","lastModifiedDate":"2024-03-18"},{"lineNumber":210,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":211,"author":{"gitId":"SeaHogs"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":212,"author":{"gitId":"SeaHogs"},"content":" public void updatePersonMedicalInformation(Nric nric, MedicalInformation medicalInformation) {","lastModifiedDate":"2024-03-18"},{"lineNumber":213,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":214,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":215,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"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 contains a single person.","lastModifiedDate":"2018-08-07"},{"lineNumber":220,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":221,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07"},{"lineNumber":222,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":224,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":225,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":226,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07"},{"lineNumber":227,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":229,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":230,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":231,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":232,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":233,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":234,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":236,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":237,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12"},{"lineNumber":238,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":239,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12"},{"lineNumber":240,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":242,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07"},{"lineNumber":243,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":244,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":245,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":246,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":247,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":248,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":249,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08"},{"lineNumber":250,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":251,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":252,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":254,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":255,"author":{"gitId":"javierng2knus"},"content":" public ReadOnlyClinic getClinic() {","lastModifiedDate":"2024-03-11"},{"lineNumber":256,"author":{"gitId":"javierng2knus"},"content":" return new Clinic();","lastModifiedDate":"2024-03-11"},{"lineNumber":257,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":258,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":260,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12"}],"authorContributionMap":{"javierng2knus":6,"MaYuehan":46,"Ella-e":12,"-":186,"SeaHogs":10}},{"path":"src/test/java/vitalconnect/logic/commands/AddContactCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"package vitalconnect.logic.commands;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.testutil.TypicalPersons.getTypicalClinic;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-23"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import java.util.List;","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.commons.core.GuiSettings;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.logic.Messages;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.Appointment;","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.Clinic;","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.ModelManager;","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.ReadOnlyClinic;","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.UserPrefs;","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.Address;","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.ContactInformation;","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.Email;","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.Phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.identificationinformation.Nric;","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.person.medicalinformation.MedicalInformation;","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.testutil.PersonBuilder;","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"Ella-e"},"content":"public class AddContactCommandTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" private Model model \u003d new ModelManager(getTypicalClinic(), new UserPrefs(), new ArrayList\u003c\u003e());","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"Ella-e"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"Ella-e"},"content":" public void constructor_nullContactInformation_throwsNullPointerException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"Ella-e"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddContactCommand(null, null));","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"Ella-e"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"Ella-e"},"content":" public void execute_personNotFind_failure() {","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"Ella-e"},"content":" assertThrows(CommandException.class,","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"Ella-e"},"content":" Messages.MESSAGE_PERSON_NOT_FOUND, () -\u003e new AddContactCommand(new Nric(\"S2519229Z\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"Ella-e"},"content":" new ContactInformation()).execute(model));","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"Ella-e"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"Ella-e"},"content":" public void execute_duplicateContactInformation_failure() {","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"Ella-e"},"content":" Person personInList \u003d model.getClinic().getPersonList().get(0);","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"Ella-e"},"content":" ContactInformation contactInformation \u003d new ContactInformation(new Email(\"\"), new Phone(\"\"), new Address(\"\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"Ella-e"},"content":" AddContactCommand addContactCommand \u003d new AddContactCommand(personInList","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"Ella-e"},"content":" .getIdentificationInformation().getNric(), contactInformation);","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"Ella-e"},"content":" assertThrows(CommandException.class, Messages.MESSAGE_PERSON_ALREADY_EXIST, () -\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"Ella-e"},"content":" addContactCommand.execute(model));","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"Ella-e"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"Ella-e"},"content":" public void execute_addContactInformation_success() throws CommandException {","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"Ella-e"},"content":" ModelStubHasOnePersonWithEmptyCI modelStub \u003d new ModelStubHasOnePersonWithEmptyCI();","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"Ella-e"},"content":" Person validPerson \u003d modelStub.findPersonByNric(new Nric(\"S2519229Z\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"Ella-e"},"content":" ContactInformation ci \u003d new ContactInformation(new Email(\"email@123.com\"), new Phone(\"\"), new Address(\"\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"Ella-e"},"content":" CommandResult commandResult \u003d new AddContactCommand(validPerson","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"Ella-e"},"content":" .getIdentificationInformation().getNric(), ci).execute(modelStub);","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"Ella-e"},"content":" assertEquals(AddContactCommand.MESSAGE_SUCCESS,","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"Ella-e"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"Ella-e"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"Ella-e"},"content":" public void toStringTest() {","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"Ella-e"},"content":" Nric nric \u003d new Nric(\"S2519229Z\");","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"Ella-e"},"content":" ContactInformation ci \u003d new ContactInformation(new Email(\"email@123.com\"), new Phone(\"\"), new Address(\"\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"Ella-e"},"content":" AddContactCommand command \u003d new AddContactCommand(nric, ci);","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"Ella-e"},"content":" assertEquals(command.toString(), \"addContact\" + nric + ci);","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"Ella-e"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"Ella-e"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"Ella-e"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"Ella-e"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"Ella-e"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":88,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":90,"author":{"gitId":"Ella-e"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"Ella-e"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"Ella-e"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"Ella-e"},"content":" public Path getClinicFilePath() {","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":109,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"Ella-e"},"content":" public void setClinicFilePath(Path clinicFilePath) {","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"Ella-e"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"Ella-e"},"content":" public void setClinic(ReadOnlyClinic newData) {","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"Ella-e"},"content":" public ReadOnlyClinic getClinic() {","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":129,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":130,"author":{"gitId":"Ella-e"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":135,"author":{"gitId":"Ella-e"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2024-03-17"},{"lineNumber":136,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":138,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":139,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":140,"author":{"gitId":"Ella-e"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2024-03-17"},{"lineNumber":141,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":143,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":144,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":145,"author":{"gitId":"Ella-e"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":147,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":148,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":149,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":150,"author":{"gitId":"Ella-e"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2024-03-17"},{"lineNumber":151,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":152,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":153,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":154,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":155,"author":{"gitId":"Ella-e"},"content":" public boolean doesPersonExist(String name) {","lastModifiedDate":"2024-03-17"},{"lineNumber":156,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":157,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":158,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":159,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":160,"author":{"gitId":"MaYuehan"},"content":" public boolean doesIcExist(String name) {","lastModifiedDate":"2024-03-23"},{"lineNumber":161,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":162,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":163,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":164,"author":{"gitId":"Ella-e"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":165,"author":{"gitId":"Ella-e"},"content":" public void addAppointment(Appointment appointment) {","lastModifiedDate":"2024-03-17"},{"lineNumber":166,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":167,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":168,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":169,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":170,"author":{"gitId":"MaYuehan"},"content":" public void setAppointments(List\u003cAppointment\u003e appointments) {","lastModifiedDate":"2024-03-23"},{"lineNumber":171,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":172,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":173,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":174,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":175,"author":{"gitId":"Ella-e"},"content":" public ObservableList\u003cAppointment\u003e getFilteredAppointmentList() {","lastModifiedDate":"2024-03-17"},{"lineNumber":176,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":177,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":178,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":179,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":180,"author":{"gitId":"Ella-e"},"content":" public void deleteAppointment(Appointment appointment) {","lastModifiedDate":"2024-03-17"},{"lineNumber":181,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":182,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":183,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":184,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":185,"author":{"gitId":"Ella-e"},"content":" public Person findPersonByNric(Nric nric) {","lastModifiedDate":"2024-03-17"},{"lineNumber":186,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":187,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":188,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":189,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":190,"author":{"gitId":"Ella-e"},"content":" public void updatePersonContactInformation(Nric nric, ContactInformation contactInformation) {","lastModifiedDate":"2024-03-17"},{"lineNumber":191,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":192,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":193,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":194,"author":{"gitId":"SeaHogs"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":195,"author":{"gitId":"SeaHogs"},"content":" * @param nric","lastModifiedDate":"2024-03-18"},{"lineNumber":196,"author":{"gitId":"SeaHogs"},"content":" * @param medicalInformation","lastModifiedDate":"2024-03-18"},{"lineNumber":197,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":198,"author":{"gitId":"SeaHogs"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":199,"author":{"gitId":"SeaHogs"},"content":" public void updatePersonMedicalInformation(Nric nric, MedicalInformation medicalInformation) {","lastModifiedDate":"2024-03-18"},{"lineNumber":200,"author":{"gitId":"SeaHogs"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-18"},{"lineNumber":201,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":202,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":203,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":204,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":205,"author":{"gitId":"Ella-e"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":206,"author":{"gitId":"Ella-e"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2024-03-17"},{"lineNumber":207,"author":{"gitId":"Ella-e"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":208,"author":{"gitId":"Ella-e"},"content":" private class ModelStubHasOnePersonWithEmptyCI extends ModelStub {","lastModifiedDate":"2024-03-17"},{"lineNumber":209,"author":{"gitId":"Ella-e"},"content":" final Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2024-03-17"},{"lineNumber":210,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":211,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":212,"author":{"gitId":"Ella-e"},"content":" public Person findPersonByNric(Nric nric) {","lastModifiedDate":"2024-03-17"},{"lineNumber":213,"author":{"gitId":"Ella-e"},"content":" return this.person;","lastModifiedDate":"2024-03-17"},{"lineNumber":214,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":215,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":216,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":217,"author":{"gitId":"Ella-e"},"content":" public ReadOnlyClinic getClinic() {","lastModifiedDate":"2024-03-17"},{"lineNumber":218,"author":{"gitId":"Ella-e"},"content":" return new Clinic();","lastModifiedDate":"2024-03-17"},{"lineNumber":219,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":220,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":221,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":222,"author":{"gitId":"Ella-e"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2024-03-17"},{"lineNumber":223,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":224,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":225,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":226,"author":{"gitId":"Ella-e"},"content":" public void updatePersonContactInformation(Nric nric, ContactInformation contactInformation) {","lastModifiedDate":"2024-03-17"},{"lineNumber":227,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":228,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":229,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":230,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":231,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"MaYuehan":13,"Ella-e":208,"SeaHogs":10}},{"path":"src/test/java/vitalconnect/logic/commands/ClearCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.commands;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.TypicalPersons.getTypicalClinic;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"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":"MaYuehan"},"content":"import vitalconnect.model.Clinic;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.ModelManager;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.UserPrefs;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class ClearCommandTest {","lastModifiedDate":"2017-06-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":18,"author":{"gitId":"javierng2knus"},"content":" public void execute_emptyClinic_success() {","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ClearCommand(), model, ClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":26,"author":{"gitId":"javierng2knus"},"content":" public void execute_nonEmptyClinic_success() {","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" Model model \u003d new ModelManager(getTypicalClinic(), new UserPrefs(), new ArrayList\u003c\u003e());","lastModifiedDate":"2024-03-23"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" Model expectedModel \u003d new ModelManager(getTypicalClinic(), new UserPrefs(), new ArrayList\u003c\u003e());","lastModifiedDate":"2024-03-23"},{"lineNumber":29,"author":{"gitId":"javierng2knus"},"content":" expectedModel.setClinic(new Clinic());","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ClearCommand(), model, ClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08"}],"authorContributionMap":{"javierng2knus":3,"MaYuehan":11,"-":20}},{"path":"src/test/java/vitalconnect/logic/commands/CommandResultTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.commands;","lastModifiedDate":"2024-03-13"},{"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":"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":"2018-12-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class CommandResultTest {","lastModifiedDate":"2018-12-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-12-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new CommandResult(\"feedback\");","lastModifiedDate":"2018-12-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-12-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":" assertTrue(commandResult.equals(new CommandResult(\"feedback\")));","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":" assertTrue(commandResult.equals(new CommandResult(\"feedback\",","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" false, false, CommandResult.Type.SHOW_PERSONS)));","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":" assertTrue(commandResult.equals(commandResult));","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(null));","lastModifiedDate":"2018-12-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(0.5f));","lastModifiedDate":"2018-12-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" // different feedbackToUser value -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(new CommandResult(\"different\")));","lastModifiedDate":"2018-12-09"},{"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":"MaYuehan"},"content":" assertFalse(commandResult.equals(new CommandResult(\"feedback\",","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" true, false, CommandResult.Type.SHOW_PERSONS)));","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // different exit value -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" assertFalse(commandResult.equals(new CommandResult(\"feedback\",","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" false, true, CommandResult.Type.SHOW_PERSONS)));","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" // different type value -\u003e returns different hashcode","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":" assertFalse(commandResult.equals(new CommandResult(\"feedback\",","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":" false, true, CommandResult.Type.SHOW_APPOINTMENTS)));","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void hashcode() {","lastModifiedDate":"2018-12-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new CommandResult(\"feedback\");","lastModifiedDate":"2018-12-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // same values -\u003e returns same hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertEquals(commandResult.hashCode(), new CommandResult(\"feedback\").hashCode());","lastModifiedDate":"2018-12-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // different feedbackToUser value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(\"different\").hashCode());","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // different showHelp value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":56,"author":{"gitId":"MaYuehan"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(\"feedback\",","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"MaYuehan"},"content":" true, false, CommandResult.Type.SHOW_PERSONS).hashCode());","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // different exit value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":60,"author":{"gitId":"MaYuehan"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(\"feedback\",","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"MaYuehan"},"content":" false, true, CommandResult.Type.SHOW_PERSONS).hashCode());","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"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":" CommandResult commandResult \u003d new CommandResult(\"feedback\");","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" String expected \u003d CommandResult.class.getCanonicalName() + \"{feedbackToUser\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" + commandResult.getFeedbackToUser() + \", showHelp\u003d\" + commandResult.isShowHelp()","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" + \", exit\u003d\" + commandResult.isExit() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertEquals(expected, commandResult.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-12-09"}],"authorContributionMap":{"MaYuehan":16,"-":57}},{"path":"src/test/java/vitalconnect/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.commands;","lastModifiedDate":"2024-03-13"},{"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":"SeaHogs"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_ALLERGYTAG;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_HEIGHT;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_NRIC;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_WEIGHT;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.core.index.Index;","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Clinic;","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.identificationinformation.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2024-03-13"},{"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":"javierng2knus"},"content":" public static final String VALID_NRIC_AMY \u003d \"S9999999C\";","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"javierng2knus"},"content":" public static final String VALID_NRIC_BOB \u003d \"T9999999Z\";","lastModifiedDate":"2024-03-15"},{"lineNumber":36,"author":{"gitId":"Ella-e"},"content":" public static final String VALID_PHONE_BOB \u003d \"12345678\";","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"Ella-e"},"content":" public static final String VALID_EMAIL_BOB \u003d \"123@email.com\";","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"Ella-e"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"a\";","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":44,"author":{"gitId":"javierng2knus"},"content":" public static final String NRIC_DESC_AMY \u003d \" \" + PREFIX_NRIC + VALID_NRIC_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"javierng2knus"},"content":" public static final String NRIC_DESC_BOB \u003d \" \" + PREFIX_NRIC + VALID_NRIC_BOB;","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"SeaHogs"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_ALLERGYTAG + VALID_TAG_FRIEND;","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"SeaHogs"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_ALLERGYTAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"SeaHogs"},"content":" public static final String HEIGH_DESC_AMY \u003d \" \" + PREFIX_HEIGHT + \"170\";","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"SeaHogs"},"content":" public static final String WEIGHT_DESC_AMY \u003d \" \" + PREFIX_WEIGHT + \"60\";","lastModifiedDate":"2024-03-18"},{"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":"javierng2knus"},"content":" public static final String INVALID_NRIC_DESC \u003d \" \" + PREFIX_NRIC + \"911a\"; // check Nric.java for validity","lastModifiedDate":"2024-03-15"},{"lineNumber":56,"author":{"gitId":"Ella-e"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"1\";","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"Ella-e"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"abc\";","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"Ella-e"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS + \" def/abc\";","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"SeaHogs"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_ALLERGYTAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2024-03-18"},{"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":"SeaHogs"},"content":" .withNric(VALID_NRIC_AMY).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":71,"author":{"gitId":"SeaHogs"},"content":" .withNric(VALID_NRIC_BOB).build();","lastModifiedDate":"2024-03-18"},{"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":"javierng2knus"},"content":" * - the clinic, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2024-03-11"},{"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":"javierng2knus"},"content":" Clinic expectedClinic \u003d new Clinic(actualModel.getClinic());","lastModifiedDate":"2024-03-11"},{"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":"javierng2knus"},"content":" assertEquals(expectedClinic, actualModel.getClinic());","lastModifiedDate":"2024-03-11"},{"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":"javierng2knus"},"content":" * {@code model}\u0027s clinic.","lastModifiedDate":"2024-03-11"},{"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":"javierng2knus"},"content":" final String[] splitName \u003d person.getIdentificationInformation().getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2024-03-15"},{"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":{"javierng2knus":10,"MaYuehan":9,"Ella-e":6,"-":90,"SeaHogs":15}},{"path":"src/test/java/vitalconnect/logic/commands/CreateAptCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.commands;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import java.util.List;","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.core.GuiSettings;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Appointment;","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.ReadOnlyClinic;","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.ContactInformation;","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.identificationinformation.Nric;","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.person.medicalinformation.MedicalInformation;","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":"//import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":"//import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":"//import java.time.LocalDateTime;","lastModifiedDate":"2024-03-23"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":"//import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-03-23"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":"//import vitalconnect.model.person.identificationinformation.Name;","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":"public class CreateAptCommandTest {","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" public void execute_icNotExist_throwsCommandException() {","lastModifiedDate":"2024-03-23"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" ModelStub modelStub \u003d new ModelStubWithoutPerson();","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" String patientIc \u003d \"S1222222D\";","lastModifiedDate":"2024-03-23"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" String dateTimeStr \u003d \"02/02/2024 1330\";","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" CreateAptCommand createAptCommand \u003d new CreateAptCommand(patientIc, dateTimeStr);","lastModifiedDate":"2024-03-23"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" assertThrows(CommandException.class,","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":" \"OOPS! The appointment cannot be created as the NRIC does not exist.\", (","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":" ) -\u003e createAptCommand.execute(modelStub));","lastModifiedDate":"2024-03-23"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":" /*","lastModifiedDate":"2024-03-23"},{"lineNumber":48,"author":{"gitId":"javierng2knus"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":" public void execute_appointmentCreatedSuccessfully() throws Exception {","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":" String patientIc \u003d \"S1234567D\";","lastModifiedDate":"2024-03-23"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":" String dateTimeStr \u003d \"02/02/2024 1330\";","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":" CreateAptCommand createAptCommand \u003d new CreateAptCommand(patientIc, dateTimeStr);","lastModifiedDate":"2024-03-23"},{"lineNumber":54,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":" CommandResult commandResult \u003d createAptCommand.execute(modelStub);","lastModifiedDate":"2024-03-13"},{"lineNumber":56,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"MaYuehan"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd/MM/yyyy HHmm\");","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"MaYuehan"},"content":" LocalDateTime dateTime \u003d LocalDateTime.parse(dateTimeStr, formatter);","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":60,"author":{"gitId":"MaYuehan"},"content":" String successString \u003d String.format(\"Created an appointment successfully!\\nName: \"","lastModifiedDate":"2024-03-23"},{"lineNumber":61,"author":{"gitId":"MaYuehan"},"content":" + \"Amy\" + \"\\nNRIC: %s\\nTime: %s\",","lastModifiedDate":"2024-03-23"},{"lineNumber":62,"author":{"gitId":"MaYuehan"},"content":" patientIc, dateTime.format(DateTimeFormatter.ofPattern(\"d MMM yyyy HH:mm\")));","lastModifiedDate":"2024-03-23"},{"lineNumber":63,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":64,"author":{"gitId":"javierng2knus"},"content":" assertEquals(successString, commandResult.getFeedbackToUser());","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"MaYuehan"},"content":" assertTrue(modelStub.appointmentsAdded.stream().anyMatch(appointment -\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":66,"author":{"gitId":"MaYuehan"},"content":" appointment.getPatientIc().equals(patientIc)","lastModifiedDate":"2024-03-23"},{"lineNumber":67,"author":{"gitId":"MaYuehan"},"content":" \u0026\u0026 appointment.getDateTime().equals(dateTime)));","lastModifiedDate":"2024-03-13"},{"lineNumber":68,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"MaYuehan"},"content":"*/","lastModifiedDate":"2024-03-23"},{"lineNumber":70,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":72,"author":{"gitId":"MaYuehan"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2024-03-13"},{"lineNumber":73,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":74,"author":{"gitId":"MaYuehan"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2024-03-13"},{"lineNumber":75,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":76,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":77,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":78,"author":{"gitId":"MaYuehan"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2024-03-13"},{"lineNumber":79,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":80,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":81,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":82,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":83,"author":{"gitId":"MaYuehan"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2024-03-13"},{"lineNumber":84,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":85,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":86,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":87,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":88,"author":{"gitId":"MaYuehan"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2024-03-13"},{"lineNumber":89,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":90,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":91,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":92,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":93,"author":{"gitId":"MaYuehan"},"content":" public Path getClinicFilePath() {","lastModifiedDate":"2024-03-13"},{"lineNumber":94,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":95,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":96,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":97,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":98,"author":{"gitId":"MaYuehan"},"content":" public void setClinicFilePath(Path clinicFilePath) {","lastModifiedDate":"2024-03-13"},{"lineNumber":99,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":100,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":101,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":102,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":103,"author":{"gitId":"MaYuehan"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2024-03-13"},{"lineNumber":104,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":105,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":106,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":107,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":108,"author":{"gitId":"MaYuehan"},"content":" public void setClinic(ReadOnlyClinic newData) {","lastModifiedDate":"2024-03-13"},{"lineNumber":109,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":110,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":111,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":112,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":113,"author":{"gitId":"MaYuehan"},"content":" public ReadOnlyClinic getClinic() {","lastModifiedDate":"2024-03-13"},{"lineNumber":114,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":115,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":116,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":117,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":118,"author":{"gitId":"MaYuehan"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2024-03-13"},{"lineNumber":119,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":120,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":121,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":122,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":123,"author":{"gitId":"MaYuehan"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2024-03-13"},{"lineNumber":124,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":125,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":126,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":127,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":128,"author":{"gitId":"MaYuehan"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2024-03-13"},{"lineNumber":129,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":130,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":131,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":132,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":133,"author":{"gitId":"MaYuehan"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2024-03-13"},{"lineNumber":134,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":135,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":136,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":137,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":138,"author":{"gitId":"MaYuehan"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2024-03-13"},{"lineNumber":139,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":140,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":141,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":142,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":143,"author":{"gitId":"MaYuehan"},"content":" public boolean doesIcExist(String name) {","lastModifiedDate":"2024-03-23"},{"lineNumber":144,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":145,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":146,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":147,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":148,"author":{"gitId":"MaYuehan"},"content":" public boolean doesPersonExist(String name) {","lastModifiedDate":"2024-03-23"},{"lineNumber":149,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":150,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":151,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":152,"author":{"gitId":"MaYuehan"},"content":" public void addAppointment(Appointment appointment) {","lastModifiedDate":"2024-03-13"},{"lineNumber":153,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":154,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":155,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":156,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":157,"author":{"gitId":"MaYuehan"},"content":" public void setAppointments(List\u003cAppointment\u003e appointments) {","lastModifiedDate":"2024-03-23"},{"lineNumber":158,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":159,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":160,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":161,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":162,"author":{"gitId":"MaYuehan"},"content":" public ObservableList\u003cAppointment\u003e getFilteredAppointmentList() {","lastModifiedDate":"2024-03-13"},{"lineNumber":163,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":164,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":165,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":166,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":167,"author":{"gitId":"MaYuehan"},"content":" public void deleteAppointment(Appointment appointment) {","lastModifiedDate":"2024-03-13"},{"lineNumber":168,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":169,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":170,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":171,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":172,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":173,"author":{"gitId":"Ella-e"},"content":" public Person findPersonByNric(Nric nric) {","lastModifiedDate":"2024-03-17"},{"lineNumber":174,"author":{"gitId":"Ella-e"},"content":" return null;","lastModifiedDate":"2024-03-17"},{"lineNumber":175,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":176,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":177,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":178,"author":{"gitId":"Ella-e"},"content":" public void updatePersonContactInformation(Nric nric, ContactInformation contactInformation) {","lastModifiedDate":"2024-03-17"},{"lineNumber":179,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":180,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":181,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":182,"author":{"gitId":"SeaHogs"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":183,"author":{"gitId":"SeaHogs"},"content":" * @param nric","lastModifiedDate":"2024-03-18"},{"lineNumber":184,"author":{"gitId":"SeaHogs"},"content":" * @param medicalInformation","lastModifiedDate":"2024-03-18"},{"lineNumber":185,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":186,"author":{"gitId":"SeaHogs"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":187,"author":{"gitId":"SeaHogs"},"content":" public void updatePersonMedicalInformation(Nric nric, MedicalInformation medicalInformation) {","lastModifiedDate":"2024-03-18"},{"lineNumber":188,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":189,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":190,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":191,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":192,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":193,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":194,"author":{"gitId":"MaYuehan"},"content":" private class ModelStubWithoutPerson extends ModelStub {","lastModifiedDate":"2024-03-13"},{"lineNumber":195,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":196,"author":{"gitId":"MaYuehan"},"content":" public boolean doesPersonExist(String name) {","lastModifiedDate":"2024-03-13"},{"lineNumber":197,"author":{"gitId":"MaYuehan"},"content":" return false;","lastModifiedDate":"2024-03-13"},{"lineNumber":198,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":199,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":200,"author":{"gitId":"MaYuehan"},"content":" public boolean doesIcExist(String ic) {","lastModifiedDate":"2024-03-23"},{"lineNumber":201,"author":{"gitId":"MaYuehan"},"content":" return false;","lastModifiedDate":"2024-03-23"},{"lineNumber":202,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":203,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":204,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":205,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":206,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":207,"author":{"gitId":"MaYuehan"},"content":" * A Model stub that always accept the appointment being added.","lastModifiedDate":"2024-03-13"},{"lineNumber":208,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":209,"author":{"gitId":"MaYuehan"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2024-03-13"},{"lineNumber":210,"author":{"gitId":"MaYuehan"},"content":" final ArrayList\u003cAppointment\u003e appointmentsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-13"},{"lineNumber":211,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":212,"author":{"gitId":"MaYuehan"},"content":" public boolean doesPersonExist(String name) {","lastModifiedDate":"2024-03-13"},{"lineNumber":213,"author":{"gitId":"MaYuehan"},"content":" return true;","lastModifiedDate":"2024-03-13"},{"lineNumber":214,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":215,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":216,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":217,"author":{"gitId":"MaYuehan"},"content":" public boolean doesIcExist(String ic) {","lastModifiedDate":"2024-03-23"},{"lineNumber":218,"author":{"gitId":"MaYuehan"},"content":" return true;","lastModifiedDate":"2024-03-23"},{"lineNumber":219,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":220,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":221,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":222,"author":{"gitId":"MaYuehan"},"content":" public void addAppointment(Appointment appointment) {","lastModifiedDate":"2024-03-13"},{"lineNumber":223,"author":{"gitId":"MaYuehan"},"content":" appointmentsAdded.add(appointment);","lastModifiedDate":"2024-03-13"},{"lineNumber":224,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":225,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":226,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-03-13"},{"lineNumber":227,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":228,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":229,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"javierng2knus":3,"MaYuehan":204,"Ella-e":12,"SeaHogs":10}},{"path":"src/test/java/vitalconnect/logic/commands/DeleteAptCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.commands;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"import java.util.List;","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.core.GuiSettings;","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Appointment;","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.ReadOnlyClinic;","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.ContactInformation;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.identificationinformation.Nric;","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.person.medicalinformation.MedicalInformation;","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":"public class DeleteAptCommandTest {","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" public void execute_validIndexAppointmentDeletedSuccessfully() throws Exception {","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" ModelStubWithAppointments modelStub \u003d new ModelStubWithAppointments();","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" LocalDateTime dateTime \u003d LocalDateTime.now();","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" Appointment appointment \u003d new Appointment(\"John Doe\", \"S1234567D\", dateTime);","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" modelStub.addAppointment(appointment);","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" int appointmentIndex \u003d 1; // Assuming this is the index of the appointment to be deleted","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":" DeleteAptCommand deleteAptCommand \u003d new DeleteAptCommand(appointmentIndex, \"John Doe\");","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":" CommandResult commandResult \u003d deleteAptCommand.execute(modelStub);","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":" assertEquals(\"Deleted the appointment successfully:\\nName: John Doe\\nTime: \"","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":" + dateTime.format(DateTimeFormatter.ofPattern(\"d MMM uuuu HH:mm\")), commandResult.getFeedbackToUser());","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":" assertFalse(modelStub.appointments.contains(appointment)); // Verify the appointment was removed","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":" public void execute_emptyList_throwsCommandException() {","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":" ModelStubWithAppointments modelStub \u003d new ModelStubWithAppointments();","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":" LocalDateTime dateTime \u003d LocalDateTime.now();","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":" Appointment existingAppointment \u003d new Appointment(\"John Doe\", \"S1234567D\", dateTime);","lastModifiedDate":"2024-03-23"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":" modelStub.addAppointment(existingAppointment);","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":" int invalidIndex \u003d 999;","lastModifiedDate":"2024-03-13"},{"lineNumber":56,"author":{"gitId":"MaYuehan"},"content":" DeleteAptCommand deleteAptCommand \u003d new DeleteAptCommand(invalidIndex, \"John Doe\");","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"MaYuehan"},"content":" assertThrows(CommandException.class, \"OOPS! The deletion of the appointment failed \"","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"MaYuehan"},"content":" + \"as the index of appointment is out of range.\", () -\u003e deleteAptCommand.execute(modelStub));","lastModifiedDate":"2024-03-13"},{"lineNumber":60,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":61,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":62,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":63,"author":{"gitId":"MaYuehan"},"content":" public void execute_invalidIndex_throwsCommandException() {","lastModifiedDate":"2024-03-13"},{"lineNumber":64,"author":{"gitId":"MaYuehan"},"content":" ModelStubWithAppointments modelStub \u003d new ModelStubWithAppointments();","lastModifiedDate":"2024-03-13"},{"lineNumber":65,"author":{"gitId":"MaYuehan"},"content":" int invalidIndex \u003d 999;","lastModifiedDate":"2024-03-13"},{"lineNumber":66,"author":{"gitId":"MaYuehan"},"content":" DeleteAptCommand deleteAptCommand \u003d new DeleteAptCommand(invalidIndex, \"John Doe\");","lastModifiedDate":"2024-03-13"},{"lineNumber":67,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":68,"author":{"gitId":"MaYuehan"},"content":" assertThrows(CommandException.class, \"OOPS! The appointment list is empty.\", (","lastModifiedDate":"2024-03-13"},{"lineNumber":69,"author":{"gitId":"MaYuehan"},"content":" ) -\u003e deleteAptCommand.execute(modelStub));","lastModifiedDate":"2024-03-13"},{"lineNumber":70,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":72,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":73,"author":{"gitId":"MaYuehan"},"content":" public void execute_nonMatchingName_throwsCommandException() {","lastModifiedDate":"2024-03-13"},{"lineNumber":74,"author":{"gitId":"MaYuehan"},"content":" ModelStubWithAppointments modelStub \u003d new ModelStubWithAppointments();","lastModifiedDate":"2024-03-13"},{"lineNumber":75,"author":{"gitId":"MaYuehan"},"content":" LocalDateTime dateTime \u003d LocalDateTime.now();","lastModifiedDate":"2024-03-13"},{"lineNumber":76,"author":{"gitId":"MaYuehan"},"content":" Appointment existingAppointment \u003d new Appointment(\"John Doe\", \"S1234567D\", dateTime);","lastModifiedDate":"2024-03-23"},{"lineNumber":77,"author":{"gitId":"MaYuehan"},"content":" modelStub.addAppointment(existingAppointment);","lastModifiedDate":"2024-03-13"},{"lineNumber":78,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":79,"author":{"gitId":"MaYuehan"},"content":" // Trying to delete an appointment for a patient name that doesn\u0027t match","lastModifiedDate":"2024-03-13"},{"lineNumber":80,"author":{"gitId":"MaYuehan"},"content":" // the patient name of the appointment at the specified index","lastModifiedDate":"2024-03-13"},{"lineNumber":81,"author":{"gitId":"MaYuehan"},"content":" int appointmentIndex \u003d 1; // Correct index but incorrect patient name for this index","lastModifiedDate":"2024-03-13"},{"lineNumber":82,"author":{"gitId":"MaYuehan"},"content":" DeleteAptCommand deleteAptCommand \u003d new DeleteAptCommand(appointmentIndex, \"Jane Doe\");","lastModifiedDate":"2024-03-13"},{"lineNumber":83,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":84,"author":{"gitId":"MaYuehan"},"content":" assertThrows(CommandException.class, \"OOPS! The deletion of the \"","lastModifiedDate":"2024-03-13"},{"lineNumber":85,"author":{"gitId":"MaYuehan"},"content":" + \"appointment failed as the appointment of Jane Doe does not exist in the \"","lastModifiedDate":"2024-03-13"},{"lineNumber":86,"author":{"gitId":"MaYuehan"},"content":" + \"appointment list.\", () -\u003e deleteAptCommand.execute(modelStub));","lastModifiedDate":"2024-03-13"},{"lineNumber":87,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":88,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":89,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":90,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":91,"author":{"gitId":"MaYuehan"},"content":" * A Model stub that contains and allows manipulation of appointments.","lastModifiedDate":"2024-03-13"},{"lineNumber":92,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":93,"author":{"gitId":"MaYuehan"},"content":" private class ModelStubWithAppointments extends ModelStub {","lastModifiedDate":"2024-03-13"},{"lineNumber":94,"author":{"gitId":"MaYuehan"},"content":" final ArrayList\u003cAppointment\u003e appointments \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-13"},{"lineNumber":95,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":96,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":97,"author":{"gitId":"MaYuehan"},"content":" public void addAppointment(Appointment appointment) {","lastModifiedDate":"2024-03-13"},{"lineNumber":98,"author":{"gitId":"MaYuehan"},"content":" appointments.add(appointment);","lastModifiedDate":"2024-03-13"},{"lineNumber":99,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":100,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":101,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":102,"author":{"gitId":"MaYuehan"},"content":" public boolean doesPersonExist(String name) {","lastModifiedDate":"2024-03-13"},{"lineNumber":103,"author":{"gitId":"MaYuehan"},"content":" return appointments.stream().anyMatch(appointment -\u003e appointment.getPatientName().equals(name));","lastModifiedDate":"2024-03-13"},{"lineNumber":104,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":105,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":106,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":107,"author":{"gitId":"MaYuehan"},"content":" public void deleteAppointment(Appointment appointment) {","lastModifiedDate":"2024-03-13"},{"lineNumber":108,"author":{"gitId":"MaYuehan"},"content":" appointments.remove(appointment);","lastModifiedDate":"2024-03-13"},{"lineNumber":109,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":110,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":111,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":112,"author":{"gitId":"MaYuehan"},"content":" public ObservableList\u003cAppointment\u003e getFilteredAppointmentList() {","lastModifiedDate":"2024-03-13"},{"lineNumber":113,"author":{"gitId":"MaYuehan"},"content":" // Assuming you have a method to convert your ArrayList to an ObservableList","lastModifiedDate":"2024-03-13"},{"lineNumber":114,"author":{"gitId":"MaYuehan"},"content":" // This conversion is necessary because your command likely operates on ObservableList","lastModifiedDate":"2024-03-13"},{"lineNumber":115,"author":{"gitId":"MaYuehan"},"content":" return FXCollections.observableArrayList(appointments);","lastModifiedDate":"2024-03-13"},{"lineNumber":116,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":117,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":118,"author":{"gitId":"MaYuehan"},"content":" // Implement other abstract methods as necessary, throwing AssertionError for unimplemented methods","lastModifiedDate":"2024-03-13"},{"lineNumber":119,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":120,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":121,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":122,"author":{"gitId":"MaYuehan"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2024-03-13"},{"lineNumber":123,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":124,"author":{"gitId":"MaYuehan"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2024-03-13"},{"lineNumber":125,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":126,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":127,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":128,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":129,"author":{"gitId":"MaYuehan"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2024-03-13"},{"lineNumber":130,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":131,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":132,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":133,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":134,"author":{"gitId":"MaYuehan"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2024-03-13"},{"lineNumber":135,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":136,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":137,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":138,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":139,"author":{"gitId":"MaYuehan"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2024-03-13"},{"lineNumber":140,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":141,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":142,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":143,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":144,"author":{"gitId":"MaYuehan"},"content":" public Path getClinicFilePath() {","lastModifiedDate":"2024-03-13"},{"lineNumber":145,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":146,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":147,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":148,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":149,"author":{"gitId":"MaYuehan"},"content":" public void setClinicFilePath(Path clinicFilePath) {","lastModifiedDate":"2024-03-13"},{"lineNumber":150,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":151,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":152,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":153,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":154,"author":{"gitId":"MaYuehan"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2024-03-13"},{"lineNumber":155,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":156,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":157,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":158,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":159,"author":{"gitId":"MaYuehan"},"content":" public void setClinic(ReadOnlyClinic newData) {","lastModifiedDate":"2024-03-13"},{"lineNumber":160,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":161,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":162,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":163,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":164,"author":{"gitId":"MaYuehan"},"content":" public ReadOnlyClinic getClinic() {","lastModifiedDate":"2024-03-13"},{"lineNumber":165,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":166,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":167,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":168,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":169,"author":{"gitId":"MaYuehan"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2024-03-13"},{"lineNumber":170,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":171,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":172,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":173,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":174,"author":{"gitId":"MaYuehan"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2024-03-13"},{"lineNumber":175,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":176,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":177,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":178,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":179,"author":{"gitId":"MaYuehan"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2024-03-13"},{"lineNumber":180,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":181,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":182,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":183,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":184,"author":{"gitId":"MaYuehan"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2024-03-13"},{"lineNumber":185,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":186,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":187,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":188,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":189,"author":{"gitId":"MaYuehan"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2024-03-13"},{"lineNumber":190,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":191,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":192,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":193,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":194,"author":{"gitId":"MaYuehan"},"content":" public boolean doesPersonExist(String name) {","lastModifiedDate":"2024-03-13"},{"lineNumber":195,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":196,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":197,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":198,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":199,"author":{"gitId":"MaYuehan"},"content":" public boolean doesIcExist(String name) {","lastModifiedDate":"2024-03-23"},{"lineNumber":200,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":201,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":202,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":203,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":204,"author":{"gitId":"MaYuehan"},"content":" public void addAppointment(Appointment appointment) {","lastModifiedDate":"2024-03-13"},{"lineNumber":205,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":206,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":207,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":208,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":209,"author":{"gitId":"MaYuehan"},"content":" public void setAppointments(List\u003cAppointment\u003e appointments) {","lastModifiedDate":"2024-03-23"},{"lineNumber":210,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":211,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":212,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":213,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":214,"author":{"gitId":"MaYuehan"},"content":" public ObservableList\u003cAppointment\u003e getFilteredAppointmentList() {","lastModifiedDate":"2024-03-13"},{"lineNumber":215,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":216,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":217,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":218,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":219,"author":{"gitId":"MaYuehan"},"content":" public void deleteAppointment(Appointment appointment) {","lastModifiedDate":"2024-03-13"},{"lineNumber":220,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":221,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":222,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":223,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":224,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":225,"author":{"gitId":"Ella-e"},"content":" public Person findPersonByNric(Nric nric) {","lastModifiedDate":"2024-03-17"},{"lineNumber":226,"author":{"gitId":"Ella-e"},"content":" return null;","lastModifiedDate":"2024-03-17"},{"lineNumber":227,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":228,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":229,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":230,"author":{"gitId":"Ella-e"},"content":" public void updatePersonContactInformation(Nric nric, ContactInformation contactInformation) {","lastModifiedDate":"2024-03-17"},{"lineNumber":231,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":232,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":233,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":234,"author":{"gitId":"SeaHogs"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":235,"author":{"gitId":"SeaHogs"},"content":" * @param nric","lastModifiedDate":"2024-03-18"},{"lineNumber":236,"author":{"gitId":"SeaHogs"},"content":" * @param medicalInformation","lastModifiedDate":"2024-03-18"},{"lineNumber":237,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":238,"author":{"gitId":"SeaHogs"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":239,"author":{"gitId":"SeaHogs"},"content":" public void updatePersonMedicalInformation(Nric nric, MedicalInformation medicalInformation) {","lastModifiedDate":"2024-03-18"},{"lineNumber":240,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":241,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":242,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":243,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":244,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":245,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":246,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"MaYuehan":224,"Ella-e":12,"SeaHogs":10}},{"path":"src/test/java/vitalconnect/logic/commands/DeleteCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.commands;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.TypicalPersons.getTypicalClinic;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.core.index.Index;","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.Messages;","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.ModelManager;","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.UserPrefs;","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2018-01-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2017-06-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" private Model model \u003d new ModelManager(getTypicalClinic(), new UserPrefs(), new ArrayList\u003c\u003e());","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getClinic(), new UserPrefs(), new ArrayList\u003c\u003e());","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-06-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":56,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":59,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":64,"author":{"gitId":"MaYuehan"},"content":" Model expectedModel \u003d new ModelManager(model.getClinic(), new UserPrefs(), new ArrayList\u003c\u003e());","lastModifiedDate":"2024-03-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" showNoPerson(expectedModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-06-05"},{"lineNumber":76,"author":{"gitId":"javierng2knus"},"content":" // ensures that outOfBoundIndex is still in bounds of clinic list","lastModifiedDate":"2024-03-11"},{"lineNumber":77,"author":{"gitId":"javierng2knus"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getClinic().getPersonList().size());","lastModifiedDate":"2024-03-11"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":79,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":" DeleteCommand deleteFirstCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08"},{"lineNumber":87,"author":{"gitId":"-"},"content":" DeleteCommand deleteSecondCommand \u003d new DeleteCommand(INDEX_SECOND_PERSON);","lastModifiedDate":"2018-08-08"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":" DeleteCommand deleteFirstCommandCopy \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(targetIndex);","lastModifiedDate":"2019-02-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":" String expected \u003d DeleteCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertEquals(expected, deleteCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05"},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":117,"author":{"gitId":"-"},"content":" private void showNoPerson(Model model) {","lastModifiedDate":"2017-06-05"},{"lineNumber":118,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2017-06-12"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertTrue(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2018-02-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":122,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"javierng2knus":2,"MaYuehan":17,"-":103}},{"path":"src/test/java/vitalconnect/logic/commands/DeleteContactCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"package vitalconnect.logic.commands;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.testutil.TypicalPersons.getTypicalClinic;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"import java.util.List;","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.commons.core.GuiSettings;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.logic.Messages;","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.Appointment;","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.Clinic;","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.ModelManager;","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.ReadOnlyClinic;","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.UserPrefs;","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.ContactInformation;","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.identificationinformation.Nric;","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.person.medicalinformation.MedicalInformation;","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.testutil.PersonBuilder;","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"Ella-e"},"content":"public class DeleteContactCommandTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" private Model model \u003d new ModelManager(getTypicalClinic(), new UserPrefs(), new ArrayList\u003c\u003e());","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"Ella-e"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"Ella-e"},"content":" public void constructor_nullContactInformation_throwsNullPointerException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"Ella-e"},"content":" assertThrows(NullPointerException.class, () -\u003e new DeleteContactCommand(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"Ella-e"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"Ella-e"},"content":" public void execute_personNotFind_failure() {","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"Ella-e"},"content":" assertThrows(CommandException.class, Messages.MESSAGE_PERSON_NOT_FOUND, () -\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"Ella-e"},"content":" new DeleteContactCommand(new Nric(\"S2519229Z\")).execute(model));","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"Ella-e"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"Ella-e"},"content":" public void execute_deleteContactInformation_success() throws CommandException {","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"Ella-e"},"content":" ModelStubHasOnePersonWithNoneEmptyCI modelStub \u003d new ModelStubHasOnePersonWithNoneEmptyCI();","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"Ella-e"},"content":" Person validPerson \u003d modelStub.findPersonByNric(new Nric(\"S2519229Z\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"Ella-e"},"content":" CommandResult commandResult \u003d new DeleteContactCommand(validPerson.getIdentificationInformation().getNric())","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"Ella-e"},"content":" .execute(modelStub);","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"Ella-e"},"content":" assertEquals(DeleteContactCommand.MESSAGE_SUCCESS,","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"Ella-e"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"Ella-e"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"Ella-e"},"content":" public void equalsTest() {","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"Ella-e"},"content":" Nric nric \u003d new Nric(\"S2519229Z\");","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"Ella-e"},"content":" DeleteContactCommand command \u003d new DeleteContactCommand(nric);","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"Ella-e"},"content":" // same object, equal","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"Ella-e"},"content":" assertTrue(command.equals(command));","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"Ella-e"},"content":" // same nric, same command","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"Ella-e"},"content":" assertTrue(command.equals(new DeleteContactCommand(new Nric(\"S2519229Z\"))));","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"Ella-e"},"content":" // different type, not same command","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"Ella-e"},"content":" assertFalse(command.equals(\"abc\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"Ella-e"},"content":" // null, not same command","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"Ella-e"},"content":" assertFalse(command.equals(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"Ella-e"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"Ella-e"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"Ella-e"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"Ella-e"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"Ella-e"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"Ella-e"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":88,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":90,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"Ella-e"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"Ella-e"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"Ella-e"},"content":" public Path getClinicFilePath() {","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"Ella-e"},"content":" public void setClinicFilePath(Path clinicFilePath) {","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":109,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"Ella-e"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"Ella-e"},"content":" public void setClinic(ReadOnlyClinic newData) {","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"Ella-e"},"content":" public ReadOnlyClinic getClinic() {","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"Ella-e"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":129,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":130,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"Ella-e"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":135,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":136,"author":{"gitId":"Ella-e"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":138,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":139,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":140,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":141,"author":{"gitId":"Ella-e"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":143,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":144,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":145,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"Ella-e"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2024-03-17"},{"lineNumber":147,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":148,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":149,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":150,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":151,"author":{"gitId":"Ella-e"},"content":" public boolean doesPersonExist(String name) {","lastModifiedDate":"2024-03-17"},{"lineNumber":152,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":153,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":154,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":155,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":156,"author":{"gitId":"MaYuehan"},"content":" public boolean doesIcExist(String name) {","lastModifiedDate":"2024-03-23"},{"lineNumber":157,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":158,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":159,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":160,"author":{"gitId":"Ella-e"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":161,"author":{"gitId":"Ella-e"},"content":" public void addAppointment(Appointment appointment) {","lastModifiedDate":"2024-03-17"},{"lineNumber":162,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":163,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":164,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":165,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":166,"author":{"gitId":"MaYuehan"},"content":" public void setAppointments(List\u003cAppointment\u003e appointments) {","lastModifiedDate":"2024-03-23"},{"lineNumber":167,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":168,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":169,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":170,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":171,"author":{"gitId":"Ella-e"},"content":" public ObservableList\u003cAppointment\u003e getFilteredAppointmentList() {","lastModifiedDate":"2024-03-17"},{"lineNumber":172,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":173,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":174,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":175,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":176,"author":{"gitId":"Ella-e"},"content":" public void deleteAppointment(Appointment appointment) {","lastModifiedDate":"2024-03-17"},{"lineNumber":177,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":178,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":179,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":180,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":181,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":182,"author":{"gitId":"Ella-e"},"content":" public Person findPersonByNric(Nric nric) {","lastModifiedDate":"2024-03-17"},{"lineNumber":183,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":184,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":185,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":186,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":187,"author":{"gitId":"Ella-e"},"content":" public void updatePersonContactInformation(Nric nric, ContactInformation contactInformation) {","lastModifiedDate":"2024-03-17"},{"lineNumber":188,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":189,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":190,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":191,"author":{"gitId":"SeaHogs"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":192,"author":{"gitId":"SeaHogs"},"content":" * @param nric","lastModifiedDate":"2024-03-18"},{"lineNumber":193,"author":{"gitId":"SeaHogs"},"content":" * @param medicalInformation","lastModifiedDate":"2024-03-18"},{"lineNumber":194,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":195,"author":{"gitId":"SeaHogs"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":196,"author":{"gitId":"SeaHogs"},"content":" public void updatePersonMedicalInformation(Nric nric, MedicalInformation medicalInformation) {","lastModifiedDate":"2024-03-18"},{"lineNumber":197,"author":{"gitId":"SeaHogs"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-18"},{"lineNumber":198,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":199,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":200,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":201,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":202,"author":{"gitId":"Ella-e"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":203,"author":{"gitId":"Ella-e"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2024-03-17"},{"lineNumber":204,"author":{"gitId":"Ella-e"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":205,"author":{"gitId":"Ella-e"},"content":" private class ModelStubHasOnePersonWithNoneEmptyCI extends ModelStub {","lastModifiedDate":"2024-03-17"},{"lineNumber":206,"author":{"gitId":"Ella-e"},"content":" final Person person \u003d new PersonBuilder().withEmail(\"abc@email.com\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":207,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":208,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":209,"author":{"gitId":"Ella-e"},"content":" public Person findPersonByNric(Nric nric) {","lastModifiedDate":"2024-03-17"},{"lineNumber":210,"author":{"gitId":"Ella-e"},"content":" return this.person;","lastModifiedDate":"2024-03-17"},{"lineNumber":211,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":212,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":213,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":214,"author":{"gitId":"Ella-e"},"content":" public ReadOnlyClinic getClinic() {","lastModifiedDate":"2024-03-17"},{"lineNumber":215,"author":{"gitId":"Ella-e"},"content":" return new Clinic();","lastModifiedDate":"2024-03-17"},{"lineNumber":216,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":217,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":218,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":219,"author":{"gitId":"Ella-e"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2024-03-17"},{"lineNumber":220,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":221,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":222,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":223,"author":{"gitId":"Ella-e"},"content":" public void updatePersonContactInformation(Nric nric, ContactInformation contactInformation) {","lastModifiedDate":"2024-03-17"},{"lineNumber":224,"author":{"gitId":"Ella-e"},"content":" this.person.setContactInformation(contactInformation);","lastModifiedDate":"2024-03-17"},{"lineNumber":225,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":226,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":227,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"MaYuehan":13,"Ella-e":204,"SeaHogs":10}},{"path":"src/test/java/vitalconnect/logic/commands/EditCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.commands;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.TypicalPersons.getTypicalClinic;","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.core.index.Index;","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.Messages;","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Clinic;","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.ModelManager;","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.UserPrefs;","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.testutil.PersonBuilder;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":" private Model model \u003d new ModelManager(getTypicalClinic(), new UserPrefs(), new ArrayList\u003c\u003e());","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":39,"author":{"gitId":"SeaHogs"},"content":" // the following 3 test cases currently does not work, changed to pass gradle test","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"-"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"SeaHogs"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"SeaHogs"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPerson, descriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":" Model expectedModel \u003d new ModelManager(new Clinic(model.getClinic()), new UserPrefs(), new ArrayList\u003c\u003e());","lastModifiedDate":"2024-03-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"SeaHogs"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, model);","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, new EditPersonDescriptor());","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"MaYuehan"},"content":" Model expectedModel \u003d new ModelManager(new Clinic(model.getClinic()), new UserPrefs(), new ArrayList\u003c\u003e());","lastModifiedDate":"2024-03-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"SeaHogs"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, model);","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder(personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"MaYuehan"},"content":" Model expectedModel \u003d new ModelManager(new Clinic(model.getClinic()), new UserPrefs(), new ArrayList\u003c\u003e());","lastModifiedDate":"2024-03-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2024-03-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"SeaHogs"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, model);","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-19"},{"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_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":91,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05"},{"lineNumber":92,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25"},{"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 execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":99,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":101,"author":{"gitId":"javierng2knus"},"content":" // edit person in filtered list into a duplicate in clinic","lastModifiedDate":"2024-03-11"},{"lineNumber":102,"author":{"gitId":"javierng2knus"},"content":" Person personInList \u003d model.getClinic().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2024-03-11"},{"lineNumber":103,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","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_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":111,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18"},{"lineNumber":112,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22"},{"lineNumber":113,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":118,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18"},{"lineNumber":119,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18"},{"lineNumber":120,"author":{"gitId":"javierng2knus"},"content":" * but smaller than size of clinic","lastModifiedDate":"2024-03-11"},{"lineNumber":121,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":124,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":125,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18"},{"lineNumber":126,"author":{"gitId":"javierng2knus"},"content":" // ensures that outOfBoundIndex is still in bounds of clinic list","lastModifiedDate":"2024-03-11"},{"lineNumber":127,"author":{"gitId":"javierng2knus"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getClinic().getPersonList().size());","lastModifiedDate":"2024-03-11"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":129,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":137,"author":{"gitId":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2018-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":147,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":150,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":151,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":153,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":154,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2017-05-25"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":156,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2017-05-25"},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":160,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2019-02-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08"}],"authorContributionMap":{"javierng2knus":5,"MaYuehan":26,"-":133,"SeaHogs":6}},{"path":"src/test/java/vitalconnect/logic/commands/EditPersonDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.commands;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"javierng2knus"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.VALID_NRIC_BOB;","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorTest {","lastModifiedDate":"2017-05-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptorWithSameValues \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" EditPersonDescriptor editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":40,"author":{"gitId":"javierng2knus"},"content":" // different nric -\u003e returns false","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"javierng2knus"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withNric(VALID_NRIC_BOB).build();","lastModifiedDate":"2024-03-15"},{"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":"","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"javierng2knus"},"content":" + editPersonDescriptor.getName().orElse(null) + \", nric\u003d\"","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"SeaHogs"},"content":" + editPersonDescriptor.getNric().orElse(null) + \"}\";","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"javierng2knus":4,"MaYuehan":6,"-":42,"SeaHogs":1}},{"path":"src/test/java/vitalconnect/logic/commands/ExitCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.commands;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.commands.ExitCommand.MESSAGE_EXIT_ACKNOWLEDGEMENT;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.ModelManager;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class ExitCommandTest {","lastModifiedDate":"2017-06-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-12-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public void execute_exit_success() {","lastModifiedDate":"2017-06-08"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT,","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" false, true, CommandResult.Type.SHOW_PERSONS);","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ExitCommand(), model, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08"}],"authorContributionMap":{"MaYuehan":7,"-":14}},{"path":"src/test/java/vitalconnect/logic/commands/FindCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.commands;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import static vitalconnect.logic.Messages.MESSAGE_PERSONS_LISTED_OVERVIEW;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.TypicalPersons.CARL;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.TypicalPersons.ELLE;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.TypicalPersons.FIONA;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.TypicalPersons.getTypicalClinic;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.ModelManager;","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.UserPrefs;","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.identificationinformation.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":" private Model model \u003d new ModelManager(getTypicalClinic(), new UserPrefs(), new ArrayList\u003c\u003e());","lastModifiedDate":"2024-03-23"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalClinic(), new UserPrefs(), new ArrayList\u003c\u003e());","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" FindCommand findFirstCommand \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" FindCommand findSecondCommand \u003d new FindCommand(secondPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" FindCommand findFirstCommandCopy \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","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-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void execute_zeroKeywords_noPersonFound() {","lastModifiedDate":"2017-08-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2017-06-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2018-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void execute_multipleKeywords_multiplePersonsFound() {","lastModifiedDate":"2017-08-15"},{"lineNumber":70,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2017-06-12"},{"lineNumber":71,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\"Kurz Elle Kunz\");","lastModifiedDate":"2018-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"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":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" FindCommand findCommand \u003d new FindCommand(predicate);","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.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-12"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2018-08-08"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":89,"author":{"gitId":"-"},"content":" private NameContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2018-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":" return new NameContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2018-08-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"MaYuehan":14,"-":78}},{"path":"src/test/java/vitalconnect/logic/commands/HelpCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.commands;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.commands.HelpCommand.SHOWING_HELP_MESSAGE;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.ModelManager;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class HelpCommandTest {","lastModifiedDate":"2017-06-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public void execute_help_success() {","lastModifiedDate":"2017-06-08"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(SHOWING_HELP_MESSAGE,","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" true, false, CommandResult.Type.SHOW_PERSONS);","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertCommandSuccess(new HelpCommand(), model, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08"}],"authorContributionMap":{"MaYuehan":7,"-":14}},{"path":"src/test/java/vitalconnect/logic/commands/ListAptCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.commands;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import java.util.List;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.core.GuiSettings;","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Appointment;","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.ReadOnlyClinic;","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.ContactInformation;","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.identificationinformation.Nric;","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.person.medicalinformation.MedicalInformation;","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":"public class ListAptCommandTest {","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" public void execute_noAppointmentsInList_showsNoAppointmentsMessage() {","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" ModelStubEmpty modelStub \u003d new ModelStubEmpty();","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" ListAptCommand listAptCommand \u003d new ListAptCommand();","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" CommandResult commandResult \u003d listAptCommand.execute(modelStub);","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" assertEquals(\"No appointment is in the list.\", commandResult.getFeedbackToUser());","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" public void execute_appointmentsInList_showsAppointments() {","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":" ModelStubWithAppointments modelStub \u003d new ModelStubWithAppointments();","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" modelStub.addAppointment(new Appointment(\"John Doe\", \"S1234567D\", LocalDateTime.now()));","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":" modelStub.addAppointment(new Appointment(\"Jane Doe\", \"S1234567D\",","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":" LocalDateTime.now().plusDays(1)));","lastModifiedDate":"2024-03-23"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":" ListAptCommand listAptCommand \u003d new ListAptCommand();","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":" CommandResult commandResult \u003d listAptCommand.execute(modelStub);","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":" // Expected result should contain the appointments added above","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":" String expectedMessage \u003d ListAptCommand.MESSAGE_SUCCESS;","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":" assertEquals(expectedMessage, commandResult.getFeedbackToUser());","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":" * A Model stub that has no appointments.","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":" private class ModelStubEmpty extends ModelStub {","lastModifiedDate":"2024-03-13"},{"lineNumber":56,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"MaYuehan"},"content":" public ObservableList\u003cAppointment\u003e getFilteredAppointmentList() {","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"MaYuehan"},"content":" return FXCollections.observableArrayList();","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":60,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":61,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":62,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":63,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":64,"author":{"gitId":"MaYuehan"},"content":" * A Model stub that contains and allows manipulation of appointments.","lastModifiedDate":"2024-03-13"},{"lineNumber":65,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":66,"author":{"gitId":"MaYuehan"},"content":" private class ModelStubWithAppointments extends ModelStub {","lastModifiedDate":"2024-03-13"},{"lineNumber":67,"author":{"gitId":"MaYuehan"},"content":" final List\u003cAppointment\u003e appointments \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-13"},{"lineNumber":68,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":69,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":70,"author":{"gitId":"MaYuehan"},"content":" public void addAppointment(Appointment appointment) {","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"MaYuehan"},"content":" appointments.add(appointment);","lastModifiedDate":"2024-03-13"},{"lineNumber":72,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":73,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":74,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":75,"author":{"gitId":"MaYuehan"},"content":" public ObservableList\u003cAppointment\u003e getFilteredAppointmentList() {","lastModifiedDate":"2024-03-13"},{"lineNumber":76,"author":{"gitId":"MaYuehan"},"content":" return FXCollections.observableArrayList(appointments);","lastModifiedDate":"2024-03-13"},{"lineNumber":77,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":78,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":79,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":80,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":81,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":82,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":83,"author":{"gitId":"MaYuehan"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2024-03-13"},{"lineNumber":84,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":85,"author":{"gitId":"MaYuehan"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2024-03-13"},{"lineNumber":86,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":87,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":88,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":89,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":90,"author":{"gitId":"MaYuehan"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2024-03-13"},{"lineNumber":91,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":92,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":93,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":94,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":95,"author":{"gitId":"MaYuehan"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2024-03-13"},{"lineNumber":96,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":97,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":98,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":99,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":100,"author":{"gitId":"MaYuehan"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2024-03-13"},{"lineNumber":101,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":102,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":103,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":104,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":105,"author":{"gitId":"MaYuehan"},"content":" public Path getClinicFilePath() {","lastModifiedDate":"2024-03-13"},{"lineNumber":106,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":107,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":108,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":109,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":110,"author":{"gitId":"MaYuehan"},"content":" public void setClinicFilePath(Path clinicFilePath) {","lastModifiedDate":"2024-03-13"},{"lineNumber":111,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":112,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":113,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":114,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":115,"author":{"gitId":"MaYuehan"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2024-03-13"},{"lineNumber":116,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":117,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":118,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":119,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":120,"author":{"gitId":"MaYuehan"},"content":" public void setClinic(ReadOnlyClinic newData) {","lastModifiedDate":"2024-03-13"},{"lineNumber":121,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":122,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":123,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":124,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":125,"author":{"gitId":"MaYuehan"},"content":" public ReadOnlyClinic getClinic() {","lastModifiedDate":"2024-03-13"},{"lineNumber":126,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":127,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":128,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":129,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":130,"author":{"gitId":"MaYuehan"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2024-03-13"},{"lineNumber":131,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":132,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":133,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":134,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":135,"author":{"gitId":"MaYuehan"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2024-03-13"},{"lineNumber":136,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":137,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":138,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":139,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":140,"author":{"gitId":"MaYuehan"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2024-03-13"},{"lineNumber":141,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":142,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":143,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":144,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":145,"author":{"gitId":"MaYuehan"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2024-03-13"},{"lineNumber":146,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":147,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":148,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":149,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":150,"author":{"gitId":"MaYuehan"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2024-03-13"},{"lineNumber":151,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":152,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":153,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":154,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":155,"author":{"gitId":"MaYuehan"},"content":" public boolean doesPersonExist(String name) {","lastModifiedDate":"2024-03-13"},{"lineNumber":156,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":157,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":158,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":159,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":160,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":161,"author":{"gitId":"MaYuehan"},"content":" public boolean doesIcExist(String name) {","lastModifiedDate":"2024-03-23"},{"lineNumber":162,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":163,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":164,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":165,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":166,"author":{"gitId":"MaYuehan"},"content":" public void addAppointment(Appointment appointment) {","lastModifiedDate":"2024-03-13"},{"lineNumber":167,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":168,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":169,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":170,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":171,"author":{"gitId":"MaYuehan"},"content":" public void setAppointments(List\u003cAppointment\u003e appointments) {","lastModifiedDate":"2024-03-23"},{"lineNumber":172,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":173,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":174,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":175,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":176,"author":{"gitId":"MaYuehan"},"content":" public ObservableList\u003cAppointment\u003e getFilteredAppointmentList() {","lastModifiedDate":"2024-03-13"},{"lineNumber":177,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":178,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":179,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":180,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":181,"author":{"gitId":"MaYuehan"},"content":" public void deleteAppointment(Appointment appointment) {","lastModifiedDate":"2024-03-13"},{"lineNumber":182,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":183,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":184,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":185,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":186,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":187,"author":{"gitId":"Ella-e"},"content":" public Person findPersonByNric(Nric nric) {","lastModifiedDate":"2024-03-17"},{"lineNumber":188,"author":{"gitId":"Ella-e"},"content":" return null;","lastModifiedDate":"2024-03-17"},{"lineNumber":189,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":190,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":191,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":192,"author":{"gitId":"Ella-e"},"content":" public void updatePersonContactInformation(Nric nric, ContactInformation contactInformation) {","lastModifiedDate":"2024-03-17"},{"lineNumber":193,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":194,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":195,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":196,"author":{"gitId":"SeaHogs"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":197,"author":{"gitId":"SeaHogs"},"content":" * @param nric","lastModifiedDate":"2024-03-18"},{"lineNumber":198,"author":{"gitId":"SeaHogs"},"content":" * @param medicalInformation","lastModifiedDate":"2024-03-18"},{"lineNumber":199,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":200,"author":{"gitId":"SeaHogs"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":201,"author":{"gitId":"SeaHogs"},"content":" public void updatePersonMedicalInformation(Nric nric, MedicalInformation medicalInformation) {","lastModifiedDate":"2024-03-18"},{"lineNumber":202,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":203,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":204,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":205,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":206,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":207,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"MaYuehan":186,"Ella-e":12,"SeaHogs":9}},{"path":"src/test/java/vitalconnect/logic/commands/ListCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.commands;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.TypicalPersons.getTypicalClinic;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-23"},{"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":"MaYuehan"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.ModelManager;","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.UserPrefs;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":" model \u003d new ModelManager(getTypicalClinic(), new UserPrefs(), new ArrayList\u003c\u003e());","lastModifiedDate":"2024-03-23"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" expectedModel \u003d new ModelManager(model.getClinic(), new UserPrefs(), new ArrayList\u003c\u003e());","lastModifiedDate":"2024-03-23"},{"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":"-"},"content":" public void execute_listIsNotFiltered_showsSameList() {","lastModifiedDate":"2017-08-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ListCommand(), model, ListCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"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":"-"},"content":" public void execute_listIsFiltered_showsEverything() {","lastModifiedDate":"2017-08-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ListCommand(), model, ListCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"MaYuehan":11,"-":30}},{"path":"src/test/java/vitalconnect/logic/commands/ListContactCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"package vitalconnect.logic.commands;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.testutil.TypicalPersons.getTypicalClinic;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-23"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.ModelManager;","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.UserPrefs;","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":"public class ListContactCommandTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":" private Model model;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":" private Model expectedModel;","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"Ella-e"},"content":" @BeforeEach","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"Ella-e"},"content":" public void setUp() {","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":" model \u003d new ModelManager(getTypicalClinic(), new UserPrefs(), new ArrayList\u003c\u003e());","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" expectedModel \u003d new ModelManager(model.getClinic(), new UserPrefs(), new ArrayList\u003c\u003e());","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"Ella-e"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"Ella-e"},"content":" public void execute_listIsNotFiltered_showsSameList() {","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"Ella-e"},"content":" assertCommandSuccess(new ListCommand(), model, ListCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"Ella-e"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"Ella-e"},"content":" public void execute_listIsFiltered_showsEverything() {","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"Ella-e"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"Ella-e"},"content":" assertCommandSuccess(new ListCommand(), model, ListCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"MaYuehan":4,"Ella-e":33}},{"path":"src/test/java/vitalconnect/logic/parser/AddCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.parser;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.INVALID_NRIC_DESC;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.NRIC_DESC_AMY;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.NRIC_DESC_BOB;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.VALID_NRIC_BOB;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"javierng2knus"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_NRIC;","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.Messages;","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.AddCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.identificationinformation.Name;","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"javierng2knus"},"content":"import vitalconnect.model.person.identificationinformation.Nric;","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":28,"author":{"gitId":"SeaHogs"},"content":" // @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"SeaHogs"},"content":" // public void parse_allFieldsPresent_success() {","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"SeaHogs"},"content":" // Person expectedPerson \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"SeaHogs"},"content":" //","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"SeaHogs"},"content":" // // whitespace only preamble","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"SeaHogs"},"content":" // assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"SeaHogs"},"content":" // + NRIC_DESC_BOB, new AddCommand(expectedPerson));","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"SeaHogs"},"content":" //","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"SeaHogs"},"content":" //","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"SeaHogs"},"content":" // // multiple tags - all accepted","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"SeaHogs"},"content":" // Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"SeaHogs"},"content":" // assertParseSuccess(parser,","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"SeaHogs"},"content":" // NAME_DESC_BOB + NRIC_DESC_BOB,","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"SeaHogs"},"content":" // new AddCommand(expectedPersonMultipleTags));","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"SeaHogs"},"content":" // }","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":46,"author":{"gitId":"javierng2knus"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + NRIC_DESC_BOB","lastModifiedDate":"2024-03-15"},{"lineNumber":47,"author":{"gitId":"javierng2knus"},"content":" + TAG_DESC_FRIEND;","lastModifiedDate":"2024-03-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":51,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":53,"author":{"gitId":"javierng2knus"},"content":" // multiple nric","lastModifiedDate":"2024-03-15"},{"lineNumber":54,"author":{"gitId":"javierng2knus"},"content":" assertParseFailure(parser, NRIC_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-15"},{"lineNumber":55,"author":{"gitId":"javierng2knus"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NRIC));","lastModifiedDate":"2024-03-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":59,"author":{"gitId":"javierng2knus"},"content":" validExpectedPersonString + NAME_DESC_AMY + NRIC_DESC_AMY","lastModifiedDate":"2024-03-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":" + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":61,"author":{"gitId":"javierng2knus"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_NRIC));","lastModifiedDate":"2024-03-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":69,"author":{"gitId":"javierng2knus"},"content":" // invalid nric","lastModifiedDate":"2024-03-15"},{"lineNumber":70,"author":{"gitId":"javierng2knus"},"content":" assertParseFailure(parser, INVALID_NRIC_DESC + validExpectedPersonString,","lastModifiedDate":"2024-03-15"},{"lineNumber":71,"author":{"gitId":"javierng2knus"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NRIC));","lastModifiedDate":"2024-03-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":77,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":79,"author":{"gitId":"javierng2knus"},"content":" // invalid nric","lastModifiedDate":"2024-03-15"},{"lineNumber":80,"author":{"gitId":"javierng2knus"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NRIC_DESC,","lastModifiedDate":"2024-03-15"},{"lineNumber":81,"author":{"gitId":"javierng2knus"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NRIC));","lastModifiedDate":"2024-03-15"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":84,"author":{"gitId":"SeaHogs"},"content":" // @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"SeaHogs"},"content":" // public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"SeaHogs"},"content":" // // zero tags","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"SeaHogs"},"content":" // Person expectedPerson \u003d new PersonBuilder(AMY).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"SeaHogs"},"content":" // assertParseSuccess(parser, NAME_DESC_AMY + NRIC_DESC_AMY,","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"SeaHogs"},"content":" // new AddCommand(expectedPerson));","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"SeaHogs"},"content":" // }","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":94,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":96,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":97,"author":{"gitId":"javierng2knus"},"content":" assertParseFailure(parser, VALID_NAME_BOB + NRIC_DESC_BOB,","lastModifiedDate":"2024-03-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":100,"author":{"gitId":"javierng2knus"},"content":" // missing nric prefix","lastModifiedDate":"2024-03-15"},{"lineNumber":101,"author":{"gitId":"javierng2knus"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_NRIC_BOB,","lastModifiedDate":"2024-03-15"},{"lineNumber":102,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":104,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15"},{"lineNumber":105,"author":{"gitId":"javierng2knus"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_NRIC_BOB,","lastModifiedDate":"2024-03-15"},{"lineNumber":106,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":111,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":112,"author":{"gitId":"SeaHogs"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + NRIC_DESC_BOB, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":114,"author":{"gitId":"javierng2knus"},"content":" // invalid nric","lastModifiedDate":"2024-03-15"},{"lineNumber":115,"author":{"gitId":"SeaHogs"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_NRIC_DESC, Nric.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":118,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":119,"author":{"gitId":"javierng2knus"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + INVALID_NRIC_DESC,","lastModifiedDate":"2024-03-15"},{"lineNumber":120,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":123,"author":{"gitId":"SeaHogs"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + NRIC_DESC_BOB,","lastModifiedDate":"2024-03-18"},{"lineNumber":124,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":126,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"javierng2knus":21,"MaYuehan":8,"-":62,"SeaHogs":35}},{"path":"src/test/java/vitalconnect/logic/parser/AddContactCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"package vitalconnect.logic.parser;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.INVALID_NRIC_DESC;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.NRIC_DESC_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.VALID_NRIC_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.testutil.TypicalPersons.BOB_CONTACT;","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"Ella-e"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.logic.commands.AddContactCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.Address;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.Email;","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.Phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.identificationinformation.Nric;","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.testutil.PersonBuilder;","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"Ella-e"},"content":"public class AddContactCommandParserTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"Ella-e"},"content":" private AddContactCommandParser parser \u003d new AddContactCommandParser();","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"Ella-e"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"Ella-e"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"Ella-e"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB_CONTACT).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"Ella-e"},"content":" // whitespace only preamble","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"Ella-e"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NRIC_DESC_BOB + EMAIL_DESC_BOB + PHONE_DESC_BOB","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"Ella-e"},"content":" + ADDRESS_DESC_BOB, new AddContactCommand(expectedPerson.getIdentificationInformation().getNric(),","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"Ella-e"},"content":" expectedPerson.getContactInformation()));","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"Ella-e"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"Ella-e"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"Ella-e"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddContactCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"Ella-e"},"content":" // missing nric prefix","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"Ella-e"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_NRIC_BOB,","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"Ella-e"},"content":" expectedMessage);","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"Ella-e"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"Ella-e"},"content":" public void parse_allOptionsMissing_failure() {","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"Ella-e"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddContactCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"Ella-e"},"content":" // missing nric prefix","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"Ella-e"},"content":" assertParseFailure(parser, NRIC_DESC_BOB,","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"Ella-e"},"content":" expectedMessage);","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"Ella-e"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"Ella-e"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"Ella-e"},"content":" // invalid nric","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"Ella-e"},"content":" assertParseFailure(parser, INVALID_NRIC_DESC + VALID_EMAIL_BOB,","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"Ella-e"},"content":" Nric.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"Ella-e"},"content":" // invalid phone","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"Ella-e"},"content":" assertParseFailure(parser, NRIC_DESC_BOB","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"Ella-e"},"content":" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"Ella-e"},"content":" // invalid email","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"Ella-e"},"content":" assertParseFailure(parser, NRIC_DESC_BOB","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"Ella-e"},"content":" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"Ella-e"},"content":" // invalid address","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"Ella-e"},"content":" assertParseFailure(parser, NRIC_DESC_BOB","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"Ella-e"},"content":" + INVALID_ADDRESS_DESC, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"Ella-e"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"Ella-e"},"content":" assertParseFailure(parser, NRIC_DESC_BOB + INVALID_PHONE_DESC + INVALID_EMAIL_DESC,","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"Ella-e"},"content":" Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"Ella-e":83}},{"path":"src/test/java/vitalconnect/logic/parser/ArgumentTokenizerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.parser;","lastModifiedDate":"2024-03-13"},{"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":"SeaHogs"},"content":" String argsString \u003d \" some random string /t allergytag with leading and trailing spaces \";","lastModifiedDate":"2024-03-18"},{"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":{"MaYuehan":1,"-":148,"SeaHogs":1}},{"path":"src/test/java/vitalconnect/logic/parser/ClinicParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.parser;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import static vitalconnect.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-13"},{"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":"Ella-e"},"content":"import vitalconnect.logic.commands.AddContactCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.ClearCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.CreateAptCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.DeleteAptCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.logic.commands.DeleteContactCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.EditCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.ExitCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.FindCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.HelpCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.ListAptCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.ListCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.identificationinformation.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.testutil.PersonBuilder;","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.testutil.PersonUtil;","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"javierng2knus"},"content":"public class ClinicParserTest {","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":39,"author":{"gitId":"javierng2knus"},"content":" private final ClinicParser parser \u003d new ClinicParser();","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":41,"author":{"gitId":"SeaHogs"},"content":" // @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"SeaHogs"},"content":" // public void parseCommand_add() throws Exception {","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"SeaHogs"},"content":" // Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"SeaHogs"},"content":" // AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"SeaHogs"},"content":" // assertEquals(new AddCommand(person), command);","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"SeaHogs"},"content":" // }","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2017-06-27"},{"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-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2018-03-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12"},{"lineNumber":79,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"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_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23"},{"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_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":106,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":107,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":108,"author":{"gitId":"MaYuehan"},"content":" public void parseCommand_createApt() throws Exception {","lastModifiedDate":"2024-03-13"},{"lineNumber":109,"author":{"gitId":"MaYuehan"},"content":" String getPatientIc \u003d \"S1234567D\";","lastModifiedDate":"2024-03-23"},{"lineNumber":110,"author":{"gitId":"MaYuehan"},"content":" String dateTimeStr \u003d \"02/02/2024 1330\";","lastModifiedDate":"2024-03-13"},{"lineNumber":111,"author":{"gitId":"MaYuehan"},"content":" String inputCommand \u003d CreateAptCommand.COMMAND_WORD + \" \" + getPatientIc + \" /time \" + dateTimeStr;","lastModifiedDate":"2024-03-23"},{"lineNumber":112,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":113,"author":{"gitId":"MaYuehan"},"content":" CreateAptCommand expectedCommand \u003d new CreateAptCommand(getPatientIc, dateTimeStr);","lastModifiedDate":"2024-03-23"},{"lineNumber":114,"author":{"gitId":"MaYuehan"},"content":" CreateAptCommand parsedCommand \u003d (CreateAptCommand) parser.parseCommand(inputCommand);","lastModifiedDate":"2024-03-13"},{"lineNumber":115,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":116,"author":{"gitId":"MaYuehan"},"content":" assertEquals(expectedCommand.getPatientIc(), parsedCommand.getPatientIc());","lastModifiedDate":"2024-03-23"},{"lineNumber":117,"author":{"gitId":"MaYuehan"},"content":" assertEquals(expectedCommand.getDateTimeStr(), parsedCommand.getDateTimeStr());","lastModifiedDate":"2024-03-13"},{"lineNumber":118,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":119,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":120,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":121,"author":{"gitId":"MaYuehan"},"content":" public void parseCommand_listApt() throws Exception {","lastModifiedDate":"2024-03-13"},{"lineNumber":122,"author":{"gitId":"MaYuehan"},"content":" assertTrue(parser.parseCommand(ListAptCommand.COMMAND_WORD) instanceof ListAptCommand);","lastModifiedDate":"2024-03-13"},{"lineNumber":123,"author":{"gitId":"MaYuehan"},"content":" assertTrue(parser.parseCommand(ListAptCommand.COMMAND_WORD + \" 3\") instanceof ListAptCommand);","lastModifiedDate":"2024-03-13"},{"lineNumber":124,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":125,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":126,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":127,"author":{"gitId":"MaYuehan"},"content":" public void parseCommand_deleteApt() throws Exception {","lastModifiedDate":"2024-03-13"},{"lineNumber":128,"author":{"gitId":"MaYuehan"},"content":" String input \u003d DeleteAptCommand.COMMAND_WORD + \" 1 /name John Doe\";","lastModifiedDate":"2024-03-13"},{"lineNumber":129,"author":{"gitId":"MaYuehan"},"content":" DeleteAptCommand command \u003d (DeleteAptCommand) parser.parseCommand(input);","lastModifiedDate":"2024-03-13"},{"lineNumber":130,"author":{"gitId":"MaYuehan"},"content":" int resIndex \u003d command.getIndex();","lastModifiedDate":"2024-03-13"},{"lineNumber":131,"author":{"gitId":"MaYuehan"},"content":" String resName \u003d command.getPatientName();","lastModifiedDate":"2024-03-13"},{"lineNumber":132,"author":{"gitId":"MaYuehan"},"content":" assertEquals(1, resIndex);","lastModifiedDate":"2024-03-13"},{"lineNumber":133,"author":{"gitId":"MaYuehan"},"content":" assertEquals(\"John Doe\", resName);","lastModifiedDate":"2024-03-13"},{"lineNumber":134,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":135,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":136,"author":{"gitId":"Ella-e"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":137,"author":{"gitId":"Ella-e"},"content":" public void parseCommand_addContact() throws ParseException {","lastModifiedDate":"2024-03-18"},{"lineNumber":138,"author":{"gitId":"Ella-e"},"content":" assertTrue(parser.parseCommand(AddContactCommand.COMMAND_WORD","lastModifiedDate":"2024-03-18"},{"lineNumber":139,"author":{"gitId":"Ella-e"},"content":" + \" ic/S7898305A p/12345678\") instanceof AddContactCommand);","lastModifiedDate":"2024-03-18"},{"lineNumber":140,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":141,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":142,"author":{"gitId":"Ella-e"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":143,"author":{"gitId":"Ella-e"},"content":" public void parseCommand_deleteContact() throws ParseException {","lastModifiedDate":"2024-03-18"},{"lineNumber":144,"author":{"gitId":"Ella-e"},"content":" assertTrue(parser.parseCommand(DeleteContactCommand.COMMAND_WORD","lastModifiedDate":"2024-03-18"},{"lineNumber":145,"author":{"gitId":"Ella-e"},"content":" + \" ic/S7898305A\") instanceof DeleteContactCommand);","lastModifiedDate":"2024-03-18"},{"lineNumber":146,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":147,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"javierng2knus":2,"MaYuehan":52,"Ella-e":14,"-":73,"SeaHogs":6}},{"path":"src/test/java/vitalconnect/logic/parser/CommandParserTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.parser;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.logic.commands.Command;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2017-07-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, pe.getMessage());","lastModifiedDate":"2017-07-06"},{"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":{"MaYuehan":3,"-":36}},{"path":"src/test/java/vitalconnect/logic/parser/CreateAptCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.parser;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.CreateAptCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"public class CreateAptCommandParserTest {","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":" private final CreateAptCommandParser parser \u003d new CreateAptCommandParser();","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":" public void parse_validArgs_returnsCreateAptCommand() throws Exception {","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" String getPatientIc \u003d \"S1234567D\";","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" String dateTimeStr \u003d \"02/02/2024 1330\";","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" String userInput \u003d getPatientIc + \" /time \" + dateTimeStr;","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" CreateAptCommand expectedCommand \u003d new CreateAptCommand(getPatientIc, dateTimeStr);","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" assertEquals(parser.parse(userInput).getPatientIc(), expectedCommand.getPatientIc());","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" assertEquals(parser.parse(userInput).getDateTimeStr(), expectedCommand.getDateTimeStr());","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" public void parse_missingDateTime_throwsParseException() {","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" String userInput \u003d \"John Doe\";","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(userInput));","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" public void parse_missingName_throwsParseException() {","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" String userInput \u003d \"02/02/2024 1330\";","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(userInput));","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":" public void parse_invalidDateTimeFormat_throwsParseException() {","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":" String ic \u003d \"S1234567D\";","lastModifiedDate":"2024-03-23"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":" String time \u003d \"02-02-2024 1330\";","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":" String userInput \u003d ic + time;","lastModifiedDate":"2024-03-23"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(userInput));","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"MaYuehan":49}},{"path":"src/test/java/vitalconnect/logic/parser/DeleteAptCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.parser;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.DeleteAptCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"public class DeleteAptCommandParserTest {","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":" private final DeleteAptCommandParser parser \u003d new DeleteAptCommandParser();","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":" public void parse_validArgs_returnsDeleteAptCommand() throws Exception {","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" String patientName \u003d \"John Doe\";","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" int validIndex \u003d 1;","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":" String userInput \u003d validIndex + \" /name \" + patientName;","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" DeleteAptCommand expectedCommand \u003d new DeleteAptCommand(validIndex, patientName);","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":" assertEquals(validIndex, expectedCommand.getIndex());","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" assertEquals(patientName, expectedCommand.getPatientName());","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" assertEquals(parser.parse(userInput).getPatientName(), expectedCommand.getPatientName());","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" assertEquals(parser.parse(userInput).getIndex(), expectedCommand.getIndex());","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" public void parse_missingIndex_throwsParseException() {","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" String userInput \u003d \"/name John Doe\";","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(userInput));","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" public void parse_missingName_throwsParseException() {","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":" int validIndex \u003d 1;","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" String userInput \u003d validIndex + \" /name \";","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(userInput));","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":" public void parse_invalidIndexFormat_throwsParseException() {","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":" String userInput \u003d \"notAnIndex /name John Doe\";","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(userInput));","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":" public void parse_invalidArgumentsOrder_throwsParseException() {","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":" String userInput \u003d \"/name John Doe 1\";","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(userInput));","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"MaYuehan":55}},{"path":"src/test/java/vitalconnect/logic/parser/DeleteCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.parser;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-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":"-"},"content":" assertParseSuccess(parser, \"1\", new DeleteCommand(INDEX_FIRST_PERSON));","lastModifiedDate":"2017-07-06"},{"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":{"MaYuehan":6,"-":26}},{"path":"src/test/java/vitalconnect/logic/parser/DeleteContactCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"package vitalconnect.logic.parser;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.NRIC_DESC_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.VALID_NRIC_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.testutil.TypicalPersons.BOB_CONTACT;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.logic.commands.DeleteContactCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.testutil.PersonBuilder;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":"public class DeleteContactCommandParserTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":" private DeleteContactCommandParser parser \u003d new DeleteContactCommandParser();","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"Ella-e"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"Ella-e"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"Ella-e"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB_CONTACT).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"Ella-e"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NRIC_DESC_BOB,","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"Ella-e"},"content":" new DeleteContactCommand(expectedPerson.getIdentificationInformation().getNric()));","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"Ella-e"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"Ella-e"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"Ella-e"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteContactCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"Ella-e"},"content":" // missing nric prefix","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"Ella-e"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_NRIC_BOB,","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"Ella-e"},"content":" expectedMessage);","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"Ella-e":37}},{"path":"src/test/java/vitalconnect/logic/parser/EditCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.parser;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"javierng2knus"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.INVALID_NRIC_DESC;","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"javierng2knus"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"javierng2knus"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.NRIC_DESC_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"javierng2knus"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.NRIC_DESC_BOB;","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"javierng2knus"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.VALID_NRIC_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"javierng2knus"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.VALID_NRIC_BOB;","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_ALLERGYTAG;","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_NRIC;","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.core.index.Index;","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.Messages;","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.EditCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.identificationinformation.Name;","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"javierng2knus"},"content":"import vitalconnect.model.person.identificationinformation.Nric;","lastModifiedDate":"2024-03-15"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":33,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":35,"author":{"gitId":"SeaHogs"},"content":" private static final String TAG_EMPTY \u003d \" \" + PREFIX_ALLERGYTAG;","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04"},{"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 parse_missingParts_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-07-06"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", 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_invalidValue_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2018-09-22"},{"lineNumber":72,"author":{"gitId":"javierng2knus"},"content":" assertParseFailure(parser, \"1\" + INVALID_NRIC_DESC, Nric.MESSAGE_CONSTRAINTS); // invalid nric","lastModifiedDate":"2024-03-15"},{"lineNumber":73,"author":{"gitId":"SeaHogs"},"content":" //assertParseFailure(parser, \"1\" + INVALID_TAG_DESC, AllergyTag.MESSAGE_CONSTRAINTS); // invalid allergytag","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":75,"author":{"gitId":"javierng2knus"},"content":" // invalid name followed by valid nric","lastModifiedDate":"2024-03-15"},{"lineNumber":76,"author":{"gitId":"javierng2knus"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + NRIC_DESC_AMY, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":78,"author":{"gitId":"javierng2knus"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_NRIC_DESC,","lastModifiedDate":"2024-03-15"},{"lineNumber":79,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"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_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":84,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":85,"author":{"gitId":"javierng2knus"},"content":" String userInput \u003d targetIndex.getOneBased() + NRIC_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2024-03-15"},{"lineNumber":86,"author":{"gitId":"javierng2knus"},"content":" + NAME_DESC_AMY + TAG_DESC_FRIEND;","lastModifiedDate":"2024-03-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":88,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-05-04"},{"lineNumber":89,"author":{"gitId":"SeaHogs"},"content":" .withNric(VALID_NRIC_BOB).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":97,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":98,"author":{"gitId":"javierng2knus"},"content":" String userInput \u003d targetIndex.getOneBased() + NRIC_DESC_BOB + NAME_DESC_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":100,"author":{"gitId":"javierng2knus"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withNric(VALID_NRIC_BOB)","lastModifiedDate":"2024-03-15"},{"lineNumber":101,"author":{"gitId":"javierng2knus"},"content":" .withName(VALID_NAME_AMY).build();","lastModifiedDate":"2024-03-15"},{"lineNumber":102,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":109,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04"},{"lineNumber":110,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":111,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":112,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":113,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":116,"author":{"gitId":"javierng2knus"},"content":" // nric","lastModifiedDate":"2024-03-15"},{"lineNumber":117,"author":{"gitId":"javierng2knus"},"content":" userInput \u003d targetIndex.getOneBased() + NRIC_DESC_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":118,"author":{"gitId":"javierng2knus"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withNric(VALID_NRIC_AMY).build();","lastModifiedDate":"2024-03-15"},{"lineNumber":119,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","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":"SeaHogs"},"content":" // // tags","lastModifiedDate":"2024-03-18"},{"lineNumber":123,"author":{"gitId":"SeaHogs"},"content":" // userInput \u003d targetIndex.getOneBased() + TAG_DESC_FRIEND;","lastModifiedDate":"2024-03-18"},{"lineNumber":124,"author":{"gitId":"SeaHogs"},"content":" // descriptor \u003d new EditPersonDescriptorBuilder().build();","lastModifiedDate":"2024-03-18"},{"lineNumber":125,"author":{"gitId":"SeaHogs"},"content":" // expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-18"},{"lineNumber":126,"author":{"gitId":"SeaHogs"},"content":" // assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-18"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":130,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14"},{"lineNumber":132,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-07-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":136,"author":{"gitId":"javierng2knus"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_BOB + INVALID_NRIC_DESC;","lastModifiedDate":"2024-03-15"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":138,"author":{"gitId":"javierng2knus"},"content":" assertParseFailure(parser, userInput, Nric.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":140,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14"},{"lineNumber":141,"author":{"gitId":"javierng2knus"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_NRIC_DESC + NAME_DESC_BOB;","lastModifiedDate":"2024-03-15"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":143,"author":{"gitId":"javierng2knus"},"content":" assertParseFailure(parser, userInput, Nric.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":145,"author":{"gitId":"javierng2knus"},"content":" // multiple valid fields repeated","lastModifiedDate":"2024-03-15"},{"lineNumber":146,"author":{"gitId":"javierng2knus"},"content":" userInput \u003d targetIndex.getOneBased() + NRIC_DESC_AMY + NRIC_DESC_AMY","lastModifiedDate":"2024-03-15"},{"lineNumber":147,"author":{"gitId":"javierng2knus"},"content":" + TAG_DESC_FRIEND + NRIC_DESC_AMY + TAG_DESC_FRIEND","lastModifiedDate":"2024-03-15"},{"lineNumber":148,"author":{"gitId":"javierng2knus"},"content":" + NRIC_DESC_BOB + NRIC_DESC_BOB + TAG_DESC_HUSBAND;","lastModifiedDate":"2024-03-15"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":150,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":151,"author":{"gitId":"javierng2knus"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NRIC));","lastModifiedDate":"2024-03-15"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":153,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14"},{"lineNumber":154,"author":{"gitId":"javierng2knus"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_NRIC_DESC + INVALID_NRIC_DESC;","lastModifiedDate":"2024-03-15"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":156,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":157,"author":{"gitId":"javierng2knus"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NRIC));","lastModifiedDate":"2024-03-15"},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":160,"author":{"gitId":"SeaHogs"},"content":" // @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":161,"author":{"gitId":"SeaHogs"},"content":" // public void parse_resetTags_success() {","lastModifiedDate":"2024-03-18"},{"lineNumber":162,"author":{"gitId":"SeaHogs"},"content":" // Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2024-03-18"},{"lineNumber":163,"author":{"gitId":"SeaHogs"},"content":" // String userInput \u003d targetIndex.getOneBased() + TAG_EMPTY;","lastModifiedDate":"2024-03-18"},{"lineNumber":164,"author":{"gitId":"SeaHogs"},"content":" //","lastModifiedDate":"2024-03-18"},{"lineNumber":165,"author":{"gitId":"SeaHogs"},"content":" // EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().build();","lastModifiedDate":"2024-03-18"},{"lineNumber":166,"author":{"gitId":"SeaHogs"},"content":" // EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-18"},{"lineNumber":167,"author":{"gitId":"SeaHogs"},"content":" //","lastModifiedDate":"2024-03-18"},{"lineNumber":168,"author":{"gitId":"SeaHogs"},"content":" // assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-18"},{"lineNumber":169,"author":{"gitId":"SeaHogs"},"content":" // }","lastModifiedDate":"2024-03-18"},{"lineNumber":170,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04"}],"authorContributionMap":{"javierng2knus":30,"MaYuehan":19,"-":101,"SeaHogs":20}},{"path":"src/test/java/vitalconnect/logic/parser/FindCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.parser;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.logic.commands.FindCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.identificationinformation.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-13"},{"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":{"MaYuehan":6,"-":28}},{"path":"src/test/java/vitalconnect/logic/parser/ParserUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.parser;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import static vitalconnect.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.allergytag.AllergyTag;","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.contactinformation.Address;","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.contactinformation.Email;","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.contactinformation.Phone;","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.identificationinformation.Name;","lastModifiedDate":"2024-03-13"},{"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":"Ella-e"},"content":" private static final String INVALID_ADDRESS \u003d \" /\";","lastModifiedDate":"2024-03-17"},{"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":"-"},"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":"SeaHogs"},"content":" AllergyTag expectedAllergyTag \u003d new AllergyTag(VALID_TAG_1);","lastModifiedDate":"2024-03-18"},{"lineNumber":164,"author":{"gitId":"SeaHogs"},"content":" assertEquals(expectedAllergyTag, ParserUtil.parseTag(VALID_TAG_1));","lastModifiedDate":"2024-03-18"},{"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":"SeaHogs"},"content":" AllergyTag expectedAllergyTag \u003d new AllergyTag(VALID_TAG_1);","lastModifiedDate":"2024-03-18"},{"lineNumber":171,"author":{"gitId":"SeaHogs"},"content":" assertEquals(expectedAllergyTag, ParserUtil.parseTag(tagWithWhitespace));","lastModifiedDate":"2024-03-18"},{"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":"SeaHogs"},"content":" Set\u003cAllergyTag\u003e actualAllergyTagSet \u003d ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, VALID_TAG_2));","lastModifiedDate":"2024-03-18"},{"lineNumber":192,"author":{"gitId":"SeaHogs"},"content":" Set\u003cAllergyTag\u003e expectedAllergyTagSet \u003d new HashSet\u003cAllergyTag\u003e(Arrays.asList(new AllergyTag(VALID_TAG_1),","lastModifiedDate":"2024-03-18"},{"lineNumber":193,"author":{"gitId":"SeaHogs"},"content":" new AllergyTag(VALID_TAG_2)));","lastModifiedDate":"2024-03-18"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":195,"author":{"gitId":"SeaHogs"},"content":" assertEquals(expectedAllergyTagSet, actualAllergyTagSet);","lastModifiedDate":"2024-03-18"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":197,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22"}],"authorContributionMap":{"MaYuehan":9,"Ella-e":1,"-":178,"SeaHogs":9}},{"path":"src/test/java/vitalconnect/model/ClinicTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.model;","lastModifiedDate":"2024-03-13"},{"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":"javierng2knus"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.TypicalPersons.getTypicalClinic;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.testutil.PersonBuilder;","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":25,"author":{"gitId":"javierng2knus"},"content":"public class ClinicTest {","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":27,"author":{"gitId":"javierng2knus"},"content":" private final Clinic clinic \u003d new Clinic();","lastModifiedDate":"2024-03-11"},{"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":"javierng2knus"},"content":" assertEquals(Collections.emptyList(), clinic.getPersonList());","lastModifiedDate":"2024-03-11"},{"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":"javierng2knus"},"content":" assertThrows(NullPointerException.class, () -\u003e clinic.resetData(null));","lastModifiedDate":"2024-03-11"},{"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":"javierng2knus"},"content":" public void resetData_withValidReadOnlyClinic_replacesData() {","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"javierng2knus"},"content":" Clinic newData \u003d getTypicalClinic();","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"javierng2knus"},"content":" clinic.resetData(newData);","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"javierng2knus"},"content":" assertEquals(newData, clinic);","lastModifiedDate":"2024-03-11"},{"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":"javierng2knus"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-03-15"},{"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":"javierng2knus"},"content":" ClinicStub newData \u003d new ClinicStub(newPersons);","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":54,"author":{"gitId":"javierng2knus"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e clinic.resetData(newData));","lastModifiedDate":"2024-03-11"},{"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":"javierng2knus"},"content":" assertThrows(NullPointerException.class, () -\u003e clinic.hasPerson(null));","lastModifiedDate":"2024-03-11"},{"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":"javierng2knus"},"content":" public void hasPerson_personNotInClinic_returnsFalse() {","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"javierng2knus"},"content":" assertFalse(clinic.hasPerson(ALICE));","lastModifiedDate":"2024-03-11"},{"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":"javierng2knus"},"content":" public void hasPerson_personInClinic_returnsTrue() {","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"javierng2knus"},"content":" clinic.addPerson(ALICE);","lastModifiedDate":"2024-03-11"},{"lineNumber":70,"author":{"gitId":"javierng2knus"},"content":" assertTrue(clinic.hasPerson(ALICE));","lastModifiedDate":"2024-03-11"},{"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":"javierng2knus"},"content":" public void hasPerson_personWithSameIdentityFieldsInClinic_returnsTrue() {","lastModifiedDate":"2024-03-11"},{"lineNumber":75,"author":{"gitId":"javierng2knus"},"content":" clinic.addPerson(ALICE);","lastModifiedDate":"2024-03-11"},{"lineNumber":76,"author":{"gitId":"javierng2knus"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-03-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-06"},{"lineNumber":78,"author":{"gitId":"javierng2knus"},"content":" assertTrue(clinic.hasPerson(editedAlice));","lastModifiedDate":"2024-03-11"},{"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":"javierng2knus"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e clinic.getPersonList().remove(0));","lastModifiedDate":"2024-03-11"},{"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":"javierng2knus"},"content":" String expected \u003d Clinic.class.getCanonicalName() + \"{persons\u003d\" + clinic.getPersonList() + \"}\";","lastModifiedDate":"2024-03-11"},{"lineNumber":89,"author":{"gitId":"javierng2knus"},"content":" assertEquals(expected, clinic.toString());","lastModifiedDate":"2024-03-11"},{"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":"javierng2knus"},"content":" * A stub ReadOnlyClinic whose persons list can violate interface constraints.","lastModifiedDate":"2024-03-11"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-24"},{"lineNumber":95,"author":{"gitId":"javierng2knus"},"content":" private static class ClinicStub implements ReadOnlyClinic {","lastModifiedDate":"2024-03-11"},{"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":"javierng2knus"},"content":" ClinicStub(Collection\u003cPerson\u003e persons) {","lastModifiedDate":"2024-03-11"},{"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":"-"},"content":"}","lastModifiedDate":"2016-12-24"}],"authorContributionMap":{"javierng2knus":28,"MaYuehan":8,"-":72}},{"path":"src/test/java/vitalconnect/model/ModelManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.model;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import static vitalconnect.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-31"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"import java.util.List;","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.core.GuiSettings;","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.Address;","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.ContactInformation;","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.Email;","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.Phone;","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.identificationinformation.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.person.medicalinformation.Height;","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.person.medicalinformation.MedicalInformation;","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.person.medicalinformation.Weight;","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.testutil.ClinicBuilder;","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":"public class ModelManagerTest {","lastModifiedDate":"2017-05-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2018-08-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertEquals(new GuiSettings(), modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"javierng2knus"},"content":" assertEquals(new Clinic(), new Clinic(modelManager.getClinic()));","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void setUserPrefs_nullUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setUserPrefs(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void setUserPrefs_validUserPrefs_copiesUserPrefs() {","lastModifiedDate":"2018-12-06"},{"lineNumber":51,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"javierng2knus"},"content":" userPrefs.setClinicFilePath(Paths.get(\"address/book/file/path\"));","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1, 2, 3, 4));","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" modelManager.setUserPrefs(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // Modifying userPrefs should not modify modelManager\u0027s userPrefs","lastModifiedDate":"2018-12-06"},{"lineNumber":58,"author":{"gitId":"-"},"content":" UserPrefs oldUserPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":59,"author":{"gitId":"javierng2knus"},"content":" userPrefs.setClinicFilePath(Paths.get(\"new/address/book/file/path\"));","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertEquals(oldUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"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 setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setGuiSettings(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 setGuiSettings_validGuiSettings_setsGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1, 2, 3, 4);","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" modelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(guiSettings, modelManager.getGuiSettings());","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-11-27"},{"lineNumber":76,"author":{"gitId":"javierng2knus"},"content":" public void setClinicFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":77,"author":{"gitId":"javierng2knus"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setClinicFilePath(null));","lastModifiedDate":"2024-03-11"},{"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":"javierng2knus"},"content":" public void setClinicFilePath_validPath_setsClinicFilePath() {","lastModifiedDate":"2024-03-11"},{"lineNumber":82,"author":{"gitId":"-"},"content":" Path path \u003d Paths.get(\"address/book/file/path\");","lastModifiedDate":"2018-11-27"},{"lineNumber":83,"author":{"gitId":"javierng2knus"},"content":" modelManager.setClinicFilePath(path);","lastModifiedDate":"2024-03-11"},{"lineNumber":84,"author":{"gitId":"javierng2knus"},"content":" assertEquals(path, modelManager.getClinicFilePath());","lastModifiedDate":"2024-03-11"},{"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-08-06"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasPerson(null));","lastModifiedDate":"2019-03-23"},{"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":"2018-08-06"},{"lineNumber":93,"author":{"gitId":"javierng2knus"},"content":" public void hasPerson_personNotInClinic_returnsFalse() {","lastModifiedDate":"2024-03-11"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertFalse(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":98,"author":{"gitId":"javierng2knus"},"content":" public void hasPerson_personInClinic_returnsTrue() {","lastModifiedDate":"2024-03-11"},{"lineNumber":99,"author":{"gitId":"-"},"content":" modelManager.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertTrue(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":108,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":109,"author":{"gitId":"MaYuehan"},"content":" public void addAppointment_appointmentAddedAndSortedList() {","lastModifiedDate":"2024-03-13"},{"lineNumber":110,"author":{"gitId":"MaYuehan"},"content":" ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2024-03-13"},{"lineNumber":111,"author":{"gitId":"MaYuehan"},"content":" LocalDateTime now \u003d LocalDateTime.now();","lastModifiedDate":"2024-03-13"},{"lineNumber":112,"author":{"gitId":"MaYuehan"},"content":" Appointment firstAppointment \u003d new Appointment(\"Alice\", \"S1234567D\", now.plusDays(1));","lastModifiedDate":"2024-03-23"},{"lineNumber":113,"author":{"gitId":"MaYuehan"},"content":" Appointment secondAppointment \u003d new Appointment(\"Bob\", \"S1234568D\", now.plusDays(2));","lastModifiedDate":"2024-03-23"},{"lineNumber":114,"author":{"gitId":"MaYuehan"},"content":" Appointment thirdAppointment \u003d new Appointment(\"Charlie\", \"S1234569D\", now);","lastModifiedDate":"2024-03-23"},{"lineNumber":115,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":116,"author":{"gitId":"MaYuehan"},"content":" modelManager.addAppointment(firstAppointment);","lastModifiedDate":"2024-03-13"},{"lineNumber":117,"author":{"gitId":"MaYuehan"},"content":" modelManager.addAppointment(secondAppointment);","lastModifiedDate":"2024-03-13"},{"lineNumber":118,"author":{"gitId":"MaYuehan"},"content":" modelManager.addAppointment(thirdAppointment);","lastModifiedDate":"2024-03-13"},{"lineNumber":119,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":120,"author":{"gitId":"MaYuehan"},"content":" ObservableList\u003cAppointment\u003e appointments \u003d modelManager.getFilteredAppointmentList();","lastModifiedDate":"2024-03-13"},{"lineNumber":121,"author":{"gitId":"MaYuehan"},"content":" assertEquals(3, appointments.size());","lastModifiedDate":"2024-03-13"},{"lineNumber":122,"author":{"gitId":"MaYuehan"},"content":" assertEquals(thirdAppointment, appointments.get(0)); // Verify sorting by datetime","lastModifiedDate":"2024-03-13"},{"lineNumber":123,"author":{"gitId":"MaYuehan"},"content":" assertEquals(firstAppointment, appointments.get(1));","lastModifiedDate":"2024-03-13"},{"lineNumber":124,"author":{"gitId":"MaYuehan"},"content":" assertEquals(secondAppointment, appointments.get(2));","lastModifiedDate":"2024-03-13"},{"lineNumber":125,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":126,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":127,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":128,"author":{"gitId":"MaYuehan"},"content":" public void getFilteredAppointmentList_returnsAllAppointments() {","lastModifiedDate":"2024-03-13"},{"lineNumber":129,"author":{"gitId":"MaYuehan"},"content":" ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2024-03-13"},{"lineNumber":130,"author":{"gitId":"MaYuehan"},"content":" assertTrue(modelManager.getFilteredAppointmentList().isEmpty());","lastModifiedDate":"2024-03-13"},{"lineNumber":131,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":132,"author":{"gitId":"MaYuehan"},"content":" Appointment appointment \u003d new Appointment(\"Alice\", \"S1234567D\", LocalDateTime.now());","lastModifiedDate":"2024-03-23"},{"lineNumber":133,"author":{"gitId":"MaYuehan"},"content":" modelManager.addAppointment(appointment);","lastModifiedDate":"2024-03-13"},{"lineNumber":134,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":135,"author":{"gitId":"MaYuehan"},"content":" assertEquals(1, modelManager.getFilteredAppointmentList().size());","lastModifiedDate":"2024-03-13"},{"lineNumber":136,"author":{"gitId":"MaYuehan"},"content":" assertEquals(appointment, modelManager.getFilteredAppointmentList().get(0));","lastModifiedDate":"2024-03-13"},{"lineNumber":137,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":138,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":139,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":140,"author":{"gitId":"MaYuehan"},"content":" public void deleteAppointment_appointmentDeleted() {","lastModifiedDate":"2024-03-13"},{"lineNumber":141,"author":{"gitId":"MaYuehan"},"content":" ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2024-03-13"},{"lineNumber":142,"author":{"gitId":"MaYuehan"},"content":" Appointment appointment \u003d new Appointment(\"Alice\",","lastModifiedDate":"2024-03-23"},{"lineNumber":143,"author":{"gitId":"MaYuehan"},"content":" \"S1234567D\", LocalDateTime.now());","lastModifiedDate":"2024-03-23"},{"lineNumber":144,"author":{"gitId":"MaYuehan"},"content":" modelManager.addAppointment(appointment);","lastModifiedDate":"2024-03-13"},{"lineNumber":145,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":146,"author":{"gitId":"MaYuehan"},"content":" assertEquals(1, modelManager.getFilteredAppointmentList().size());","lastModifiedDate":"2024-03-13"},{"lineNumber":147,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":148,"author":{"gitId":"MaYuehan"},"content":" modelManager.deleteAppointment(appointment);","lastModifiedDate":"2024-03-13"},{"lineNumber":149,"author":{"gitId":"MaYuehan"},"content":" assertTrue(modelManager.getFilteredAppointmentList().isEmpty());","lastModifiedDate":"2024-03-13"},{"lineNumber":150,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":151,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":152,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":153,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":154,"author":{"gitId":"MaYuehan"},"content":" public void personExist_existingAndNonExistingPerson() {","lastModifiedDate":"2024-03-13"},{"lineNumber":155,"author":{"gitId":"MaYuehan"},"content":" ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2024-03-13"},{"lineNumber":156,"author":{"gitId":"MaYuehan"},"content":" modelManager.addPerson(ALICE); // Assuming ALICE is a predefined Person object","lastModifiedDate":"2024-03-13"},{"lineNumber":157,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":158,"author":{"gitId":"javierng2knus"},"content":" assertTrue(modelManager.doesPersonExist(ALICE.getIdentificationInformation().getName().fullName));","lastModifiedDate":"2024-03-15"},{"lineNumber":159,"author":{"gitId":"MaYuehan"},"content":" assertFalse(modelManager.doesPersonExist(\"Non Existing Person\"));","lastModifiedDate":"2024-03-13"},{"lineNumber":160,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":161,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":162,"author":{"gitId":"Ella-e"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":163,"author":{"gitId":"Ella-e"},"content":" public void updatePersonContactInformation_success() {","lastModifiedDate":"2024-03-18"},{"lineNumber":164,"author":{"gitId":"Ella-e"},"content":" ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2024-03-18"},{"lineNumber":165,"author":{"gitId":"Ella-e"},"content":" modelManager.addPerson(ALICE); // Assuming ALICE is a predefined Person object","lastModifiedDate":"2024-03-18"},{"lineNumber":166,"author":{"gitId":"Ella-e"},"content":" ContactInformation ci \u003d new ContactInformation(new Email(\"email@email.com\"), new Phone(\"\"), new Address(\"\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":167,"author":{"gitId":"Ella-e"},"content":" modelManager.updatePersonContactInformation(ALICE.getIdentificationInformation().getNric(), ci);","lastModifiedDate":"2024-03-18"},{"lineNumber":168,"author":{"gitId":"Ella-e"},"content":" assertEquals(ci, modelManager","lastModifiedDate":"2024-03-18"},{"lineNumber":169,"author":{"gitId":"Ella-e"},"content":" .findPersonByNric(ALICE.getIdentificationInformation().getNric()).getContactInformation());","lastModifiedDate":"2024-03-18"},{"lineNumber":170,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":171,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":172,"author":{"gitId":"SeaHogs"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":173,"author":{"gitId":"SeaHogs"},"content":" public void updatePersonMedicalInformation_success() {","lastModifiedDate":"2024-03-19"},{"lineNumber":174,"author":{"gitId":"SeaHogs"},"content":" ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2024-03-19"},{"lineNumber":175,"author":{"gitId":"SeaHogs"},"content":" modelManager.addPerson(ALICE); // Assuming ALICE is a predefined Person object","lastModifiedDate":"2024-03-19"},{"lineNumber":176,"author":{"gitId":"SeaHogs"},"content":" MedicalInformation mi \u003d new MedicalInformation(new Height(\"111\"), new Weight(\"111\"));","lastModifiedDate":"2024-03-19"},{"lineNumber":177,"author":{"gitId":"SeaHogs"},"content":" modelManager.updatePersonMedicalInformation(ALICE.getIdentificationInformation().getNric(), mi);","lastModifiedDate":"2024-03-19"},{"lineNumber":178,"author":{"gitId":"SeaHogs"},"content":" assertEquals(mi, modelManager","lastModifiedDate":"2024-03-19"},{"lineNumber":179,"author":{"gitId":"SeaHogs"},"content":" .findPersonByNric(ALICE.getIdentificationInformation().getNric()).getMedicalInformation());","lastModifiedDate":"2024-03-19"},{"lineNumber":180,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":181,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":182,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31"},{"lineNumber":183,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":184,"author":{"gitId":"javierng2knus"},"content":" Clinic clinic \u003d new ClinicBuilder().withPerson(ALICE).withPerson(BENSON).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":185,"author":{"gitId":"javierng2knus"},"content":" Clinic differentClinic \u003d new Clinic();","lastModifiedDate":"2024-03-11"},{"lineNumber":186,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":187,"author":{"gitId":"MaYuehan"},"content":" List\u003cAppointment\u003e appointments \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":189,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":190,"author":{"gitId":"MaYuehan"},"content":" modelManager \u003d new ModelManager(clinic, userPrefs, appointments);","lastModifiedDate":"2024-03-23"},{"lineNumber":191,"author":{"gitId":"MaYuehan"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(clinic, userPrefs, appointments);","lastModifiedDate":"2024-03-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":194,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":195,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":197,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":198,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":200,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":201,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":203,"author":{"gitId":"javierng2knus"},"content":" // different clinic -\u003e returns false","lastModifiedDate":"2024-03-11"},{"lineNumber":204,"author":{"gitId":"MaYuehan"},"content":" assertFalse(modelManager.equals(new ModelManager(differentClinic, userPrefs, appointments)));","lastModifiedDate":"2024-03-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":206,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":207,"author":{"gitId":"javierng2knus"},"content":" String[] keywords \u003d ALICE.getIdentificationInformation().getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2024-03-15"},{"lineNumber":208,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(keywords)));","lastModifiedDate":"2017-06-12"},{"lineNumber":209,"author":{"gitId":"MaYuehan"},"content":" assertFalse(modelManager.equals(new ModelManager(clinic, userPrefs, appointments)));","lastModifiedDate":"2024-03-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":211,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2017-08-05"},{"lineNumber":212,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":214,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27"},{"lineNumber":215,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":216,"author":{"gitId":"javierng2knus"},"content":" differentUserPrefs.setClinicFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2024-03-11"},{"lineNumber":217,"author":{"gitId":"MaYuehan"},"content":" assertFalse(modelManager.equals(new ModelManager(clinic, differentUserPrefs, appointments)));","lastModifiedDate":"2024-03-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":219,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31"}],"authorContributionMap":{"javierng2knus":16,"MaYuehan":73,"Ella-e":14,"-":104,"SeaHogs":12}},{"path":"src/test/java/vitalconnect/model/UserPrefsTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.model;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-13"},{"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":"javierng2knus"},"content":" public void setClinicFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":18,"author":{"gitId":"javierng2knus"},"content":" assertThrows(NullPointerException.class, () -\u003e userPrefs.setClinicFilePath(null));","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" public void setAppointmentFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" assertThrows(NullPointerException.class, () -\u003e userPrefs.setAppointmentFilePath(null));","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-11-27"}],"authorContributionMap":{"javierng2knus":2,"MaYuehan":7,"-":17}},{"path":"src/test/java/vitalconnect/model/allergytag/AllergyTagTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"SeaHogs"},"content":"package vitalconnect.model.allergytag;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-13"},{"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":"SeaHogs"},"content":"public class AllergyTagTest {","lastModifiedDate":"2024-03-18"},{"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":"SeaHogs"},"content":" assertThrows(NullPointerException.class, () -\u003e new AllergyTag(null));","lastModifiedDate":"2024-03-18"},{"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":"SeaHogs"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new AllergyTag(invalidTagName));","lastModifiedDate":"2024-03-18"},{"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":"SeaHogs"},"content":" // null allergytag name","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"SeaHogs"},"content":" assertThrows(NullPointerException.class, () -\u003e AllergyTag.isValidTagName(null));","lastModifiedDate":"2024-03-18"},{"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":{"MaYuehan":1,"-":19,"SeaHogs":6}},{"path":"src/test/java/vitalconnect/model/person/PersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.model.person;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"javierng2knus"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.VALID_NRIC_BOB;","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.TypicalPersons.BOB;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.testutil.PersonBuilder;","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2018-03-26"},{"lineNumber":22,"author":{"gitId":"SeaHogs"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"SeaHogs"},"content":" .getMedicalInformation()","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"SeaHogs"},"content":" .getAllergyTag()","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"SeaHogs"},"content":" .remove(0));","lastModifiedDate":"2024-03-18"},{"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":"javierng2knus"},"content":" // same nric, all other attributes different -\u003e returns true","lastModifiedDate":"2024-03-15"},{"lineNumber":37,"author":{"gitId":"javierng2knus"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-03-15"},{"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":"javierng2knus"},"content":" // different nric, all other attributes same -\u003e returns false","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"javierng2knus"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withNric(VALID_NRIC_BOB).build();","lastModifiedDate":"2024-03-15"},{"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":"javierng2knus"},"content":" // name differs in case, all other attributes same -\u003e returns true","lastModifiedDate":"2024-03-15"},{"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":"javierng2knus"},"content":" assertTrue(BOB.isSamePerson(editedBob));","lastModifiedDate":"2024-03-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":48,"author":{"gitId":"javierng2knus"},"content":" // name has trailing spaces, all other attributes same -\u003e returns true","lastModifiedDate":"2024-03-15"},{"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":"javierng2knus"},"content":" assertTrue(BOB.isSamePerson(editedBob));","lastModifiedDate":"2024-03-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":54,"author":{"gitId":"Ella-e"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"Ella-e"},"content":" public void copyPerson_success() {","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"Ella-e"},"content":" Person p \u003d new PersonBuilder().build();","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"Ella-e"},"content":" assertEquals(p, p.copyPerson());","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19"},{"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":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19"},{"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":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19"},{"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":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":82,"author":{"gitId":"javierng2knus"},"content":" // different nric -\u003e returns false","lastModifiedDate":"2024-03-15"},{"lineNumber":83,"author":{"gitId":"javierng2knus"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withNric(VALID_NRIC_BOB).build();","lastModifiedDate":"2024-03-15"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"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":"javierng2knus"},"content":" String expected \u003d Person.class.getCanonicalName()","lastModifiedDate":"2024-03-15"},{"lineNumber":90,"author":{"gitId":"javierng2knus"},"content":" + \"{identification\u003d[name\u003d\" + ALICE.getIdentificationInformation().getName()","lastModifiedDate":"2024-03-15"},{"lineNumber":91,"author":{"gitId":"Ella-e"},"content":" + \", nric\u003d\" + ALICE.getIdentificationInformation().getNric()","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"SeaHogs"},"content":" + \"], contact\u003d\" + ALICE.getContactInformation()","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"SeaHogs"},"content":" + \", medicalinfo\u003d\" + ALICE.getMedicalInformation().toString() + \"}\";","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"javierng2knus":13,"MaYuehan":7,"Ella-e":7,"-":63,"SeaHogs":6}},{"path":"src/test/java/vitalconnect/model/person/UniquePersonListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.model.person;","lastModifiedDate":"2024-03-13"},{"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":"javierng2knus"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"javierng2knus"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.VALID_NRIC_BOB;","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.TypicalPersons.BOB;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.exceptions.PersonNotFoundException;","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.testutil.PersonBuilder;","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class UniquePersonListTest {","lastModifiedDate":"2017-09-01"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final UniquePersonList uniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void contains_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.contains(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void contains_personNotInList_returnsFalse() {","lastModifiedDate":"2018-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(uniquePersonList.contains(ALICE));","lastModifiedDate":"2018-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void contains_personInList_returnsTrue() {","lastModifiedDate":"2018-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertTrue(uniquePersonList.contains(ALICE));","lastModifiedDate":"2018-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void contains_personWithSameIdentityFieldsInList_returnsTrue() {","lastModifiedDate":"2018-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":46,"author":{"gitId":"javierng2knus"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-03-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertTrue(uniquePersonList.contains(editedAlice));","lastModifiedDate":"2018-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void add_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.add(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void add_duplicatePerson_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.add(ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void setPerson_nullTargetPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPerson(null, ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void setPerson_nullEditedPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPerson(ALICE, null));","lastModifiedDate":"2019-03-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void setPerson_targetPersonNotInList_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.setPerson(ALICE, 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_editedPersonIsSamePerson_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasSameIdentity_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":88,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":89,"author":{"gitId":"javierng2knus"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withNric(VALID_NRIC_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-03-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, editedAlice);","lastModifiedDate":"2018-08-08"},{"lineNumber":92,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(editedAlice);","lastModifiedDate":"2018-08-08"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasDifferentIdentity_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasNonUniqueIdentity_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":" uniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.setPerson(ALICE, BOB));","lastModifiedDate":"2019-03-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public void remove_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.remove(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public void remove_personDoesNotExist_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.remove(ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" public void remove_existingPerson_removesPerson() {","lastModifiedDate":"2018-08-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" uniquePersonList.remove(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":" public void setPersons_nullUniquePersonList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersons((UniquePersonList) null));","lastModifiedDate":"2019-03-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":137,"author":{"gitId":"-"},"content":" public void setPersons_uniquePersonList_replacesOwnListWithProvidedUniquePersonList() {","lastModifiedDate":"2018-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":" uniquePersonList.setPersons(expectedUniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":146,"author":{"gitId":"-"},"content":" public void setPersons_nullList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":147,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersons((List\u003cPerson\u003e) null));","lastModifiedDate":"2019-03-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":150,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":151,"author":{"gitId":"-"},"content":" public void setPersons_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2018-08-08"},{"lineNumber":152,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":153,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e personList \u003d Collections.singletonList(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":154,"author":{"gitId":"-"},"content":" uniquePersonList.setPersons(personList);","lastModifiedDate":"2018-08-08"},{"lineNumber":155,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":156,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","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_listWithDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e listWithDuplicatePersons \u003d Arrays.asList(ALICE, ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.setPersons(listWithDuplicatePersons));","lastModifiedDate":"2019-03-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":167,"author":{"gitId":"-"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2018-04-05"},{"lineNumber":168,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2019-03-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":" -\u003e uniquePersonList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24"},{"lineNumber":172,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-24"},{"lineNumber":173,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-24"},{"lineNumber":174,"author":{"gitId":"-"},"content":" assertEquals(uniquePersonList.asUnmodifiableObservableList().toString(), uniquePersonList.toString());","lastModifiedDate":"2019-02-24"},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24"},{"lineNumber":176,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"javierng2knus":4,"MaYuehan":8,"-":164}},{"path":"src/test/java/vitalconnect/model/person/contactinformation/AddressTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.model.person.contactinformation;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-18"},{"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":"MaYuehan"},"content":"import static vitalconnect.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"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 AddressTest {","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 Address(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":"Ella-e"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":" public void constructor_noParameter_success() {","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":" assertEquals(new Address().value, \"\");","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void constructor_invalidAddress_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":24,"author":{"gitId":"Ella-e"},"content":" String invalidAddress \u003d \"/\";","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Address(invalidAddress));","lastModifiedDate":"2019-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void isValidAddress() {","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // null address","lastModifiedDate":"2017-12-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Address.isValidAddress(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // invalid addresses","lastModifiedDate":"2017-01-16"},{"lineNumber":34,"author":{"gitId":"Ella-e"},"content":" assertFalse(Address.isValidAddress(\"/\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"Ella-e"},"content":" assertFalse(Address.isValidAddress(\" /\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" // valid addresses","lastModifiedDate":"2017-01-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(Address.isValidAddress(\"Blk 456, Den Road, #01-355\"));","lastModifiedDate":"2017-01-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertTrue(Address.isValidAddress(\"-\")); // one character","lastModifiedDate":"2017-01-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertTrue(Address.isValidAddress(\"Leng Inc; 1234 Market St; San Francisco CA 2349879; USA\")); // long address","lastModifiedDate":"2017-01-16"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" Address address \u003d new Address(\"Valid Address\");","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertTrue(address.equals(new Address(\"Valid Address\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertTrue(address.equals(address));","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(address.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(address.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertFalse(address.equals(new Address(\"Other Valid Address\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"MaYuehan":2,"Ella-e":9,"-":51}},{"path":"src/test/java/vitalconnect/model/person/contactinformation/ContactInformationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"package vitalconnect.model.person.contactinformation;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":"public class ContactInformationTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":" assertThrows(NullPointerException.class, () -\u003e new ContactInformation((String) null, null, null));","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":" public void constructor_withParameter_success() {","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":" Email email \u003d new Email(\"abc@email.com\");","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":" Phone phone \u003d new Phone(\"12345678\");","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":" Address address \u003d new Address(\"address\");","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"Ella-e"},"content":" ContactInformation ci \u003d new ContactInformation(email, phone, address);","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"Ella-e"},"content":" assertEquals(ci.getEmail(), email);","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"Ella-e"},"content":" assertEquals(ci.getPhone(), phone);","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"Ella-e"},"content":" assertEquals(ci.getAddress(), address);","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"Ella-e"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"Ella-e"},"content":" public void equals() {","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"Ella-e"},"content":" Address address \u003d new Address(\"Valid Address\");","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"Ella-e"},"content":" Phone phone \u003d new Phone(\"12345678\");","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"Ella-e"},"content":" Email email \u003d new Email(\"email@e.com\");","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"Ella-e"},"content":" Address differentAddress \u003d new Address(\"Address\");","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"Ella-e"},"content":" ContactInformation contactInformation \u003d new ContactInformation(email, phone, address);","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"Ella-e"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"Ella-e"},"content":" assertTrue(contactInformation.equals(new ContactInformation(email, phone, address)));","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"Ella-e"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"Ella-e"},"content":" assertTrue(contactInformation.equals(contactInformation));","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"Ella-e"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"Ella-e"},"content":" assertFalse(contactInformation.equals(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"Ella-e"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"Ella-e"},"content":" assertFalse(contactInformation.equals(5.0f));","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"Ella-e"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"Ella-e"},"content":" assertFalse(contactInformation.equals(new ContactInformation(email, phone, differentAddress)));","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"Ella-e":50}},{"path":"src/test/java/vitalconnect/model/person/contactinformation/EmailTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.model.person.contactinformation;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-18"},{"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":"MaYuehan"},"content":"import static vitalconnect.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"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":"Ella-e"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":" public void constructor_noParameter_success() {","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":" assertEquals(new Email().value, \"\");","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void constructor_invalidEmail_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":24,"author":{"gitId":"Ella-e"},"content":" String invalidEmail \u003d \"abc\";","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Email(invalidEmail));","lastModifiedDate":"2019-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void isValidEmail() {","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // null email","lastModifiedDate":"2017-12-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Email.isValidEmail(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // missing parts","lastModifiedDate":"2017-01-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"@example.com\")); // missing local part","lastModifiedDate":"2017-04-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjackexample.com\")); // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-04-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@\")); // missing domain name","lastModifiedDate":"2017-01-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" // invalid parts","lastModifiedDate":"2017-01-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@-\")); // invalid domain name","lastModifiedDate":"2017-01-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@exam_ple.com\")); // underscore in domain name","lastModifiedDate":"2018-02-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter jack@example.com\")); // spaces in local part","lastModifiedDate":"2017-04-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@exam ple.com\")); // spaces in domain name","lastModifiedDate":"2017-04-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\" peterjack@example.com\")); // leading space","lastModifiedDate":"2018-02-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com \")); // trailing space","lastModifiedDate":"2018-02-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@@example.com\")); // double \u0027@\u0027 symbol","lastModifiedDate":"2017-04-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter@jack@example.com\")); // \u0027@\u0027 symbol in local part","lastModifiedDate":"2017-04-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"-peterjack@example.com\")); // local part starts with a hyphen","lastModifiedDate":"2021-07-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack-@example.com\")); // local part ends with a hyphen","lastModifiedDate":"2021-07-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter..jack@example.com\")); // local part has two consecutive periods","lastModifiedDate":"2021-07-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example@com\")); // \u0027@\u0027 symbol in domain name","lastModifiedDate":"2017-04-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@.example.com\")); // domain name starts with a period","lastModifiedDate":"2018-02-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com.\")); // domain name ends with a period","lastModifiedDate":"2018-02-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@-example.com\")); // domain name starts with a hyphen","lastModifiedDate":"2018-02-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com-\")); // domain name ends with a hyphen","lastModifiedDate":"2018-02-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.c\")); // top level domain has less than two chars","lastModifiedDate":"2021-07-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // valid email","lastModifiedDate":"2017-01-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack_1190@example.com\")); // underscore in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack.1190@example.com\")); // period in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack+1190@example.com\")); // \u0027+\u0027 symbol in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack-1190@example.com\")); // hyphen in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"a@bc\")); // minimal","lastModifiedDate":"2018-02-09"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"test@localhost\")); // alphabets only","lastModifiedDate":"2017-01-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"123@145\")); // numeric local part and domain name","lastModifiedDate":"2017-01-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"a1+be.d@example1.com\")); // mixture of alphanumeric and special characters","lastModifiedDate":"2021-07-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"peter_jack@very-very-very-long-example.com\")); // long domain name","lastModifiedDate":"2018-02-09"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"if.you.dream.it_you.can.do.it@example.com\")); // long local part","lastModifiedDate":"2017-04-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"e1234567@u.nus.edu\")); // more than one period in domain","lastModifiedDate":"2021-07-20"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" Email email \u003d new Email(\"valid@email\");","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertTrue(email.equals(new Email(\"valid@email\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertTrue(email.equals(email));","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(email.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertFalse(email.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertFalse(email.equals(new Email(\"other.valid@email\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"MaYuehan":2,"Ella-e":7,"-":81}},{"path":"src/test/java/vitalconnect/model/person/contactinformation/PhoneTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.model.person.contactinformation;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-18"},{"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":"MaYuehan"},"content":"import static vitalconnect.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"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 PhoneTest {","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 Phone(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":"Ella-e"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":" public void constructor_noParameter_success() {","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":" assertEquals(new Phone().value, \"\");","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void constructor_invalidPhone_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":24,"author":{"gitId":"Ella-e"},"content":" String invalidPhone \u003d \"12\";","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Phone(invalidPhone));","lastModifiedDate":"2019-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void isValidPhone() {","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // null phone number","lastModifiedDate":"2017-12-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Phone.isValidPhone(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // invalid phone numbers","lastModifiedDate":"2017-01-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"91\")); // less than 3 numbers","lastModifiedDate":"2017-05-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"phone\")); // non-numeric","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"9011p041\")); // alphabets within digits","lastModifiedDate":"2017-01-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"9312 1534\")); // spaces within digits","lastModifiedDate":"2017-01-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" // valid phone numbers","lastModifiedDate":"2017-01-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertTrue(Phone.isValidPhone(\"911\")); // exactly 3 numbers","lastModifiedDate":"2017-05-04"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertTrue(Phone.isValidPhone(\"93121534\"));","lastModifiedDate":"2017-01-16"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertTrue(Phone.isValidPhone(\"124293842033123\")); // long phone numbers","lastModifiedDate":"2017-01-16"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" Phone phone \u003d new Phone(\"999\");","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertTrue(phone.equals(new Phone(\"999\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertTrue(phone.equals(phone));","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(new Phone(\"995\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"MaYuehan":2,"Ella-e":7,"-":55}},{"path":"src/test/java/vitalconnect/model/person/identificationinformation/IdentificationInformationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"javierng2knus"},"content":"package vitalconnect.model.person.identificationinformation;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"javierng2knus"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"javierng2knus"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"javierng2knus"},"content":"import static vitalconnect.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"javierng2knus"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"javierng2knus"},"content":"public class IdentificationInformationTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"javierng2knus"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"javierng2knus"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"javierng2knus"},"content":" assertThrows(NullPointerException.class, () -\u003e new IdentificationInformation(new Name(null), null));","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"javierng2knus"},"content":" assertThrows(NullPointerException.class, () -\u003e new IdentificationInformation(null, new Nric(null)));","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"javierng2knus"},"content":" assertThrows(NullPointerException.class, () -\u003e new IdentificationInformation(new Name(null), new Nric(null)));","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"javierng2knus"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"javierng2knus"},"content":" public void constructor_invalidIdentificationInformation_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"javierng2knus"},"content":" String invalidName \u003d \"\";","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"javierng2knus"},"content":" String invalidNric \u003d \"\";","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"javierng2knus"},"content":" String validName \u003d \"John\";","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"javierng2knus"},"content":" String validNric \u003d \"S1234567D\";","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"javierng2knus"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new IdentificationInformation(invalidName, invalidNric));","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"javierng2knus"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new IdentificationInformation(invalidName, validNric));","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"javierng2knus"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new IdentificationInformation(validName, invalidNric));","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"javierng2knus"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"javierng2knus"},"content":" public void isValidIdentificationInformation() {","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"javierng2knus"},"content":" // null name and nric","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"javierng2knus"},"content":" assertThrows(NullPointerException.class, () -\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"javierng2knus"},"content":" IdentificationInformation.isValidIdentificationInformation(null, null));","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"javierng2knus"},"content":" String validNric \u003d \"S1234567D\";","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"javierng2knus"},"content":" String validName \u003d \"John\";","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"javierng2knus"},"content":" // invalid name and valid nric","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"javierng2knus"},"content":" assertFalse(IdentificationInformation","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"javierng2knus"},"content":" .isValidIdentificationInformation(\"\", validNric)); // empty string","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"javierng2knus"},"content":" assertFalse(IdentificationInformation","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"javierng2knus"},"content":" .isValidIdentificationInformation(\" \", validNric)); // spaces only","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"javierng2knus"},"content":" assertFalse(IdentificationInformation","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"javierng2knus"},"content":" .isValidIdentificationInformation(\"^\", validNric)); // only non-alphanumeric characters","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"javierng2knus"},"content":" assertFalse(IdentificationInformation","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"javierng2knus"},"content":" .isValidIdentificationInformation(\"peter*\", validNric)); // contains non-alphanumeric characters","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"javierng2knus"},"content":" // valid name and invalid nric","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"javierng2knus"},"content":" assertFalse(IdentificationInformation","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"javierng2knus"},"content":" .isValidIdentificationInformation(validName,","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"javierng2knus"},"content":" \"S12345678A\")); // improper format","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"javierng2knus"},"content":" assertFalse(IdentificationInformation","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"javierng2knus"},"content":" .isValidIdentificationInformation(validName,","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"javierng2knus"},"content":" \"S1234567A\")); // contains proper format but fails checksum","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"javierng2knus"},"content":" // valid name and valid nric","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"javierng2knus"},"content":" assertTrue(IdentificationInformation","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"javierng2knus"},"content":" .isValidIdentificationInformation(\"peter jack\",","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"javierng2knus"},"content":" \"S1234567D\")); // empty string","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"javierng2knus"},"content":" assertTrue(IdentificationInformation","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"javierng2knus"},"content":" .isValidIdentificationInformation(\"12345\",","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"javierng2knus"},"content":" \"S1234567D\")); // spaces only","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"javierng2knus"},"content":" assertTrue(IdentificationInformation","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"javierng2knus"},"content":" .isValidIdentificationInformation(\"peter the 2nd\",","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"javierng2knus"},"content":" \"S1234567D\")); // only non-alphanumeric characters","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"javierng2knus"},"content":" assertTrue(IdentificationInformation","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"javierng2knus"},"content":" .isValidIdentificationInformation(\"Capital Tan\",","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"javierng2knus"},"content":" \"S1234567D\")); // contains non-alphanumeric characters","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"javierng2knus"},"content":" assertTrue(IdentificationInformation","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"javierng2knus"},"content":" .isValidIdentificationInformation(\"David Roger Jackson Ray Jr 2nd\",","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"javierng2knus"},"content":" \"S1234567D\")); // contains proper format but fails checksum","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"javierng2knus"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"javierng2knus"},"content":" public void equals() {","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"javierng2knus"},"content":" IdentificationInformation info1 \u003d new IdentificationInformation(\"Valid Name\",","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"javierng2knus"},"content":" \"S1234567D\");","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"javierng2knus"},"content":" IdentificationInformation info2 \u003d new IdentificationInformation(new Name(\"Valid Name\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"javierng2knus"},"content":" new Nric(\"S1234567D\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"javierng2knus"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"javierng2knus"},"content":" assertTrue(info1.equals(info2));","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"javierng2knus"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"javierng2knus"},"content":" assertTrue(info1.equals(info1));","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"javierng2knus"},"content":" assertTrue(info2.equals(info2));","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":88,"author":{"gitId":"javierng2knus"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"javierng2knus"},"content":" assertFalse(info1.equals(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":90,"author":{"gitId":"javierng2knus"},"content":" assertFalse(info2.equals(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"javierng2knus"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"javierng2knus"},"content":" assertFalse(info1.equals(5.0f));","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"javierng2knus"},"content":" assertFalse(info2.equals(5.0f));","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"javierng2knus"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"javierng2knus"},"content":" assertFalse(info1.equals(new IdentificationInformation(new Name(\"Other Valid Name\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"javierng2knus"},"content":" new Nric(\"S1234568B\"))));","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"javierng2knus"},"content":" assertFalse(info2.equals(new IdentificationInformation(new Name(\"Other Valid Name\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"javierng2knus"},"content":" new Nric(\"S1234568B\"))));","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"javierng2knus"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"javierng2knus":102}},{"path":"src/test/java/vitalconnect/model/person/identificationinformation/NameContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.model.person.identificationinformation;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.testutil.PersonBuilder;","lastModifiedDate":"2024-03-13"},{"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":"-"},"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":"javierng2knus"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").withNric(\"S1234567D\").build()));","lastModifiedDate":"2024-03-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d List.of(\"keyword1\", \"keyword2\");","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(keywords);","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" String expected \u003d NameContainsKeywordsPredicate.class.getCanonicalName() + \"{keywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"javierng2knus":1,"MaYuehan":2,"-":81}},{"path":"src/test/java/vitalconnect/model/person/identificationinformation/NameTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.model.person.identificationinformation;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import static vitalconnect.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-13"},{"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":{"MaYuehan":2,"-":58}},{"path":"src/test/java/vitalconnect/model/person/identificationinformation/NricTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"javierng2knus"},"content":"package vitalconnect.model.person.identificationinformation;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"javierng2knus"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"javierng2knus"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"javierng2knus"},"content":"import static vitalconnect.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"javierng2knus"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"javierng2knus"},"content":"public class NricTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"javierng2knus"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"javierng2knus"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"javierng2knus"},"content":" assertThrows(NullPointerException.class, () -\u003e new Nric(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"javierng2knus"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"javierng2knus"},"content":" public void constructor_invalidNric_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"javierng2knus"},"content":" String invalidNric \u003d \"\";","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"javierng2knus"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Nric(invalidNric));","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"javierng2knus"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"javierng2knus"},"content":" public void isValidNric() {","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"javierng2knus"},"content":" // null nric","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"javierng2knus"},"content":" assertThrows(NullPointerException.class, () -\u003e Nric.isValidNric(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"javierng2knus"},"content":" // invalid nric","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"javierng2knus"},"content":" assertFalse(Nric.isValidNric(\"\")); // empty string","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"javierng2knus"},"content":" assertFalse(Nric.isValidNric(\" \")); // spaces only","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"javierng2knus"},"content":" assertFalse(Nric.isValidNric(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"javierng2knus"},"content":" assertFalse(Nric.isValidNric(\"peter*\")); // contains non-alphanumeric characters","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"javierng2knus"},"content":" assertFalse(Nric.isValidNric(\"S1234567A\")); // contains proper format but fails checksum","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"javierng2knus"},"content":" // valid nric","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"javierng2knus"},"content":" assertTrue(Nric.isValidNric(\"S1234567D\")); // valid","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"javierng2knus"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"javierng2knus"},"content":" public void equals() {","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"javierng2knus"},"content":" Nric nric \u003d new Nric(\"S1234567D\");","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"javierng2knus"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"javierng2knus"},"content":" assertTrue(nric.equals(new Nric(\"S1234567D\")));","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"javierng2knus"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"javierng2knus"},"content":" assertTrue(nric.equals(nric));","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"javierng2knus"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"javierng2knus"},"content":" assertFalse(nric.equals(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"javierng2knus"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"javierng2knus"},"content":" assertFalse(nric.equals(5.0f));","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"javierng2knus"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"javierng2knus"},"content":" assertFalse(nric.equals(new Nric(\"S1234568B\")));","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"javierng2knus"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"javierng2knus":57}},{"path":"src/test/java/vitalconnect/storage/JsonAdaptedPersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.storage;","lastModifiedDate":"2024-03-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":"MaYuehan"},"content":"import static vitalconnect.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2024-03-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":"MaYuehan"},"content":"import vitalconnect.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.Address;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.ContactInformation;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.Email;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.Phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.identificationinformation.Name;","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"javierng2knus"},"content":"import vitalconnect.model.person.identificationinformation.Nric;","lastModifiedDate":"2024-03-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":"javierng2knus"},"content":" private static final String INVALID_NRIC \u003d \"911a\";","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"Ella-e"},"content":" private static final String INVALID_EMAIL \u003d \"email\";","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"Ella-e"},"content":" private static final String INVALID_PHONE \u003d \"123\";","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"Ella-e"},"content":" private static final String INVALID_ADDRESS \u003d \"ac/\";","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"Ella-e"},"content":" private static final String VALID_EMAIL \u003d \"example@email.com\";","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"Ella-e"},"content":" private static final String VALID_PHONE \u003d \"12345678\";","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"Ella-e"},"content":" private static final String VALID_ADDRESS \u003d \"Prince George\u0027s Park Residence\";","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"SeaHogs"},"content":" private static final String VALID_HEIGHT \u003d \"170\";","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"SeaHogs"},"content":" private static final String VALID_WEIGHT \u003d \"60\";","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"SeaHogs"},"content":" private static final String INVALID_HEIGHT \u003d \"170cm\";","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"SeaHogs"},"content":" private static final String INVALID_WEIGHT \u003d \"60kg\";","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"SeaHogs"},"content":" private static final List\u003cJsonAdaptedTag\u003e INVALID_ALLERGY \u003d List.of(\"pe@nut\").stream()","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"SeaHogs"},"content":" .map(JsonAdaptedTag::new).collect(Collectors.toList());","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"Ella-e"},"content":" private static final ContactInformation VALID_CI \u003d new ContactInformation(new Email(VALID_EMAIL),","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"Ella-e"},"content":" new Phone(VALID_PHONE), new Address(VALID_ADDRESS));","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"javierng2knus"},"content":" private static final String VALID_NAME \u003d BENSON.getIdentificationInformation().getName().toString();","lastModifiedDate":"2024-03-15"},{"lineNumber":42,"author":{"gitId":"javierng2knus"},"content":" private static final String VALID_NRIC \u003d BENSON.getIdentificationInformation().getNric().toString();","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"SeaHogs"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_ALLERGY \u003d BENSON.getMedicalInformation().getAllergyTag().stream()","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","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_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","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":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"SeaHogs"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_NRIC, VALID_EMAIL, VALID_PHONE, VALID_ADDRESS, VALID_HEIGHT,","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"SeaHogs"},"content":" VALID_WEIGHT, VALID_ALLERGY);","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.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_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"Ella-e"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_NRIC, VALID_EMAIL,","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"SeaHogs"},"content":" VALID_PHONE, VALID_ADDRESS, VALID_HEIGHT, VALID_WEIGHT, VALID_ALLERGY);","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.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":"javierng2knus"},"content":" public void toModelType_invalidNric_throwsIllegalValueException() {","lastModifiedDate":"2024-03-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"SeaHogs"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_NRIC, VALID_EMAIL, VALID_PHONE, VALID_ADDRESS,","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"SeaHogs"},"content":" VALID_HEIGHT, VALID_WEIGHT, VALID_ALLERGY);","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"javierng2knus"},"content":" String expectedMessage \u003d Nric.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-15"},{"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":"javierng2knus"},"content":" public void toModelType_nullNric_throwsIllegalValueException() {","lastModifiedDate":"2024-03-15"},{"lineNumber":81,"author":{"gitId":"Ella-e"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL, VALID_PHONE,","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"SeaHogs"},"content":" VALID_HEIGHT, VALID_WEIGHT, VALID_ADDRESS, VALID_ALLERGY);","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"javierng2knus"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Nric.class.getSimpleName());","lastModifiedDate":"2024-03-15"},{"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":"SeaHogs"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_ALLERGY);","lastModifiedDate":"2024-03-18"},{"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":"SeaHogs"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_NRIC, VALID_EMAIL, VALID_PHONE, VALID_ADDRESS,","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"SeaHogs"},"content":" VALID_HEIGHT, VALID_WEIGHT, INVALID_ALLERGY);","lastModifiedDate":"2024-03-18"},{"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":"Ella-e"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"Ella-e"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"Ella-e"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_NRIC, VALID_EMAIL, null,","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"SeaHogs"},"content":" VALID_ADDRESS, VALID_HEIGHT, VALID_WEIGHT, VALID_ALLERGY);","lastModifiedDate":"2024-03-18"},{"lineNumber":101,"author":{"gitId":"Ella-e"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Nric.class.getSimpleName());","lastModifiedDate":"2024-03-18"},{"lineNumber":102,"author":{"gitId":"Ella-e"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-18"},{"lineNumber":103,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":104,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":105,"author":{"gitId":"Ella-e"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":106,"author":{"gitId":"Ella-e"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":107,"author":{"gitId":"Ella-e"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"SeaHogs"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_NRIC, VALID_EMAIL, INVALID_PHONE, VALID_ADDRESS,","lastModifiedDate":"2024-03-18"},{"lineNumber":109,"author":{"gitId":"SeaHogs"},"content":" VALID_HEIGHT, VALID_WEIGHT, VALID_ALLERGY);","lastModifiedDate":"2024-03-18"},{"lineNumber":110,"author":{"gitId":"Ella-e"},"content":" String expectedMessage \u003d Nric.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"Ella-e"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":113,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"Ella-e"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":115,"author":{"gitId":"Ella-e"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"Ella-e"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_NRIC, null, VALID_PHONE,","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"SeaHogs"},"content":" VALID_ADDRESS, VALID_HEIGHT, VALID_WEIGHT, VALID_ALLERGY);","lastModifiedDate":"2024-03-18"},{"lineNumber":118,"author":{"gitId":"Ella-e"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Nric.class.getSimpleName());","lastModifiedDate":"2024-03-18"},{"lineNumber":119,"author":{"gitId":"Ella-e"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-18"},{"lineNumber":120,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":121,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":122,"author":{"gitId":"Ella-e"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":123,"author":{"gitId":"Ella-e"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":124,"author":{"gitId":"Ella-e"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":125,"author":{"gitId":"SeaHogs"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_NRIC, INVALID_EMAIL, VALID_PHONE, VALID_ADDRESS,","lastModifiedDate":"2024-03-18"},{"lineNumber":126,"author":{"gitId":"SeaHogs"},"content":" VALID_HEIGHT, VALID_WEIGHT, VALID_ALLERGY);","lastModifiedDate":"2024-03-18"},{"lineNumber":127,"author":{"gitId":"Ella-e"},"content":" String expectedMessage \u003d Nric.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-18"},{"lineNumber":128,"author":{"gitId":"Ella-e"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-18"},{"lineNumber":129,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":130,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":131,"author":{"gitId":"Ella-e"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":132,"author":{"gitId":"Ella-e"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":133,"author":{"gitId":"Ella-e"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_NRIC, VALID_EMAIL, VALID_PHONE,","lastModifiedDate":"2024-03-18"},{"lineNumber":134,"author":{"gitId":"SeaHogs"},"content":" null, VALID_HEIGHT, VALID_WEIGHT, VALID_ALLERGY);","lastModifiedDate":"2024-03-18"},{"lineNumber":135,"author":{"gitId":"Ella-e"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Nric.class.getSimpleName());","lastModifiedDate":"2024-03-18"},{"lineNumber":136,"author":{"gitId":"Ella-e"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-18"},{"lineNumber":137,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":138,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":139,"author":{"gitId":"Ella-e"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":140,"author":{"gitId":"Ella-e"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":141,"author":{"gitId":"Ella-e"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":142,"author":{"gitId":"SeaHogs"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_NRIC, VALID_EMAIL, VALID_PHONE, INVALID_ADDRESS,","lastModifiedDate":"2024-03-18"},{"lineNumber":143,"author":{"gitId":"SeaHogs"},"content":" VALID_HEIGHT, VALID_WEIGHT, VALID_ALLERGY);","lastModifiedDate":"2024-03-18"},{"lineNumber":144,"author":{"gitId":"Ella-e"},"content":" String expectedMessage \u003d Nric.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-18"},{"lineNumber":145,"author":{"gitId":"Ella-e"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-18"},{"lineNumber":146,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":147,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":148,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"javierng2knus":8,"MaYuehan":6,"Ella-e":56,"-":53,"SeaHogs":25}},{"path":"src/test/java/vitalconnect/storage/JsonAppointmentStorageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.storage;","lastModifiedDate":"2024-03-23"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-23"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import java.util.List;","lastModifiedDate":"2024-03-23"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Appointment;","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":"public class JsonAppointmentStorageTest {","lastModifiedDate":"2024-03-23"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":" @TempDir","lastModifiedDate":"2024-03-23"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" public Path testFolder;","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":" private Path getTempFilePath(String fileName) {","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" return testFolder.resolve(fileName);","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" public void readAppointments_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" JsonAppointmentStorage storage \u003d new JsonAppointmentStorage(null);","lastModifiedDate":"2024-03-23"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" assertThrows(NullPointerException.class, storage::readAppointments);","lastModifiedDate":"2024-03-23"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" public void readAppointments_missingFile_emptyResult() throws Exception {","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" JsonAppointmentStorage storage \u003d new JsonAppointmentStorage(getTempFilePath(\"NonExistentFile.json\"));","lastModifiedDate":"2024-03-23"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" assertFalse(storage.readAppointments().isPresent());","lastModifiedDate":"2024-03-23"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" public void readAndSaveAppointments_allInOrder_success() throws Exception {","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" Path filePath \u003d getTempFilePath(\"TempAppointments.json\");","lastModifiedDate":"2024-03-23"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":" List\u003cAppointment\u003e original \u003d vitalconnect.testutil.TypicalAppointment.getTypicalAppointments();","lastModifiedDate":"2024-03-23"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" JsonAppointmentStorage jsonAppointmentStorage \u003d new JsonAppointmentStorage(filePath);","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":" // Save in new file and read back","lastModifiedDate":"2024-03-23"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":" jsonAppointmentStorage.saveAppointments(original, filePath);","lastModifiedDate":"2024-03-23"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":" List\u003cAppointment\u003e readBack \u003d jsonAppointmentStorage.readAppointments(filePath).get();","lastModifiedDate":"2024-03-23"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":" assertEquals(original, readBack);","lastModifiedDate":"2024-03-23"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":" public void saveAppointments_nullAppointments_throwsNullPointerException() {","lastModifiedDate":"2024-03-23"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":" JsonAppointmentStorage storage \u003d new JsonAppointmentStorage(getTempFilePath(\"SomeFile.json\"));","lastModifiedDate":"2024-03-23"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":" assertThrows(NullPointerException.class, () -\u003e storage.saveAppointments(null,","lastModifiedDate":"2024-03-23"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":" getTempFilePath(\"SomeFile.json\")));","lastModifiedDate":"2024-03-23"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":54,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":56,"author":{"gitId":"MaYuehan"},"content":" public void saveAppointments_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2024-03-23"},{"lineNumber":57,"author":{"gitId":"MaYuehan"},"content":" JsonAppointmentStorage storage \u003d new JsonAppointmentStorage(null);","lastModifiedDate":"2024-03-23"},{"lineNumber":58,"author":{"gitId":"MaYuehan"},"content":" assertThrows(NullPointerException.class, () -\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":59,"author":{"gitId":"MaYuehan"},"content":" storage.saveAppointments(vitalconnect.testutil.TypicalAppointment.getTypicalAppointments(), null));","lastModifiedDate":"2024-03-23"},{"lineNumber":60,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":61,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":62,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"}],"authorContributionMap":{"MaYuehan":62}},{"path":"src/test/java/vitalconnect/storage/JsonClinicStorageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.storage;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"javierng2knus"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"javierng2knus"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.TypicalPersons.HOON;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.TypicalPersons.IDA;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.TypicalPersons.getTypicalClinic;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"javierng2knus"},"content":"import java.io.IOException;","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"javierng2knus"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"javierng2knus"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"javierng2knus"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"javierng2knus"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Clinic;","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.ReadOnlyClinic;","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"javierng2knus"},"content":"public class JsonClinicStorageTest {","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"javierng2knus"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonClinicStorageTest\");","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"javierng2knus"},"content":" @TempDir","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"javierng2knus"},"content":" public Path testFolder;","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"javierng2knus"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"javierng2knus"},"content":" public void readClinic_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"javierng2knus"},"content":" assertThrows(NullPointerException.class, () -\u003e readClinic(null));","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"javierng2knus"},"content":" private java.util.Optional\u003cReadOnlyClinic\u003e readClinic(String filePath) throws Exception {","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"javierng2knus"},"content":" return new JsonClinicStorage(Paths.get(filePath)).readClinic(addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"javierng2knus"},"content":" private Path addToTestDataPathIfNotNull(String prefsFileInTestDataFolder) {","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"javierng2knus"},"content":" return prefsFileInTestDataFolder !\u003d null","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"javierng2knus"},"content":" ? TEST_DATA_FOLDER.resolve(prefsFileInTestDataFolder)","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"javierng2knus"},"content":" : null;","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"javierng2knus"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"javierng2knus"},"content":" public void read_missingFile_emptyResult() throws Exception {","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"javierng2knus"},"content":" assertFalse(readClinic(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"javierng2knus"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"javierng2knus"},"content":" public void read_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"javierng2knus"},"content":" assertThrows(DataLoadingException.class, () -\u003e readClinic(\"notJsonFormatClinic.json\"));","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"javierng2knus"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"javierng2knus"},"content":" public void readClinic_invalidPersonClinic_throwDataLoadingException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"javierng2knus"},"content":" assertThrows(DataLoadingException.class, () -\u003e readClinic(\"invalidPersonClinic.json\"));","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"javierng2knus"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"javierng2knus"},"content":" public void readClinic_invalidAndValidPersonClinic_throwDataLoadingException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"javierng2knus"},"content":" assertThrows(DataLoadingException.class, () -\u003e readClinic(\"invalidAndValidPersonClinic.json\"));","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"javierng2knus"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"javierng2knus"},"content":" public void readAndSaveClinic_allInOrder_success() throws Exception {","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"javierng2knus"},"content":" Path filePath \u003d testFolder.resolve(\"TempClinic.json\");","lastModifiedDate":"2024-03-11"},{"lineNumber":66,"author":{"gitId":"javierng2knus"},"content":" Clinic original \u003d getTypicalClinic();","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"javierng2knus"},"content":" JsonClinicStorage jsonClinicStorage \u003d new JsonClinicStorage(filePath);","lastModifiedDate":"2024-03-11"},{"lineNumber":68,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"javierng2knus"},"content":" // Save in new file and read back","lastModifiedDate":"2024-03-11"},{"lineNumber":70,"author":{"gitId":"javierng2knus"},"content":" jsonClinicStorage.saveClinic(original, filePath);","lastModifiedDate":"2024-03-11"},{"lineNumber":71,"author":{"gitId":"javierng2knus"},"content":" ReadOnlyClinic readBack \u003d jsonClinicStorage.readClinic(filePath).get();","lastModifiedDate":"2024-03-11"},{"lineNumber":72,"author":{"gitId":"javierng2knus"},"content":" assertEquals(original, new Clinic(readBack));","lastModifiedDate":"2024-03-11"},{"lineNumber":73,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"javierng2knus"},"content":" // Modify data, overwrite exiting file, and read back","lastModifiedDate":"2024-03-11"},{"lineNumber":75,"author":{"gitId":"javierng2knus"},"content":" original.addPerson(HOON);","lastModifiedDate":"2024-03-11"},{"lineNumber":76,"author":{"gitId":"javierng2knus"},"content":" original.removePerson(ALICE);","lastModifiedDate":"2024-03-11"},{"lineNumber":77,"author":{"gitId":"javierng2knus"},"content":" jsonClinicStorage.saveClinic(original, filePath);","lastModifiedDate":"2024-03-11"},{"lineNumber":78,"author":{"gitId":"javierng2knus"},"content":" readBack \u003d jsonClinicStorage.readClinic(filePath).get();","lastModifiedDate":"2024-03-11"},{"lineNumber":79,"author":{"gitId":"javierng2knus"},"content":" assertEquals(original, new Clinic(readBack));","lastModifiedDate":"2024-03-11"},{"lineNumber":80,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":81,"author":{"gitId":"javierng2knus"},"content":" // Save and read without specifying file path","lastModifiedDate":"2024-03-11"},{"lineNumber":82,"author":{"gitId":"javierng2knus"},"content":" original.addPerson(IDA);","lastModifiedDate":"2024-03-11"},{"lineNumber":83,"author":{"gitId":"javierng2knus"},"content":" jsonClinicStorage.saveClinic(original); // file path not specified","lastModifiedDate":"2024-03-11"},{"lineNumber":84,"author":{"gitId":"javierng2knus"},"content":" readBack \u003d jsonClinicStorage.readClinic().get(); // file path not specified","lastModifiedDate":"2024-03-11"},{"lineNumber":85,"author":{"gitId":"javierng2knus"},"content":" assertEquals(original, new Clinic(readBack));","lastModifiedDate":"2024-03-11"},{"lineNumber":86,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":87,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":88,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":89,"author":{"gitId":"javierng2knus"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":90,"author":{"gitId":"javierng2knus"},"content":" public void saveClinic_nullClinic_throwsNullPointerException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":91,"author":{"gitId":"javierng2knus"},"content":" assertThrows(NullPointerException.class, () -\u003e saveClinic(null, \"SomeFile.json\"));","lastModifiedDate":"2024-03-11"},{"lineNumber":92,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":93,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":94,"author":{"gitId":"javierng2knus"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":95,"author":{"gitId":"javierng2knus"},"content":" * Saves {@code clinic} at the specified {@code filePath}.","lastModifiedDate":"2024-03-11"},{"lineNumber":96,"author":{"gitId":"javierng2knus"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":97,"author":{"gitId":"javierng2knus"},"content":" private void saveClinic(ReadOnlyClinic clinic, String filePath) {","lastModifiedDate":"2024-03-11"},{"lineNumber":98,"author":{"gitId":"javierng2knus"},"content":" try {","lastModifiedDate":"2024-03-11"},{"lineNumber":99,"author":{"gitId":"javierng2knus"},"content":" new JsonClinicStorage(Paths.get(filePath))","lastModifiedDate":"2024-03-11"},{"lineNumber":100,"author":{"gitId":"javierng2knus"},"content":" .saveClinic(clinic, addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2024-03-11"},{"lineNumber":101,"author":{"gitId":"javierng2knus"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2024-03-11"},{"lineNumber":102,"author":{"gitId":"javierng2knus"},"content":" throw new AssertionError(\"There should not be an error writing to the file.\", ioe);","lastModifiedDate":"2024-03-11"},{"lineNumber":103,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":104,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":105,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":106,"author":{"gitId":"javierng2knus"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":107,"author":{"gitId":"javierng2knus"},"content":" public void saveClinic_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":108,"author":{"gitId":"javierng2knus"},"content":" assertThrows(NullPointerException.class, () -\u003e saveClinic(new Clinic(), null));","lastModifiedDate":"2024-03-11"},{"lineNumber":109,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":110,"author":{"gitId":"javierng2knus"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"javierng2knus":101,"MaYuehan":9}},{"path":"src/test/java/vitalconnect/storage/JsonSerializableAppointmentTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.storage;","lastModifiedDate":"2024-03-23"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-23"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import java.util.List;","lastModifiedDate":"2024-03-23"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.util.JsonUtil;","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Appointment;","lastModifiedDate":"2024-03-23"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.testutil.TypicalAppointment;","lastModifiedDate":"2024-03-23"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":"public class JsonSerializableAppointmentTest {","lastModifiedDate":"2024-03-23"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\",","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":" \"JsonSerializableAppointmentTest\");","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" private static final Path TYPICAL_APPOINTMENTS_FILE \u003d TEST_DATA_FOLDER.resolve(\"typicalAppointments.json\");","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" private static final Path INVALID_APPOINTMENT_FILE \u003d TEST_DATA_FOLDER.resolve(\"invalidAppointment.json\");","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" public void toModelType_typicalAppointmentsFile_success() throws Exception {","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" JsonSerializableAppointment dataFromFile \u003d JsonUtil.readJsonFile(TYPICAL_APPOINTMENTS_FILE,","lastModifiedDate":"2024-03-23"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" JsonSerializableAppointment.class).get();","lastModifiedDate":"2024-03-23"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" List\u003cAppointment\u003e appointmentsFromFile \u003d dataFromFile.toModelType();","lastModifiedDate":"2024-03-23"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" List\u003cAppointment\u003e typicalAppointments \u003d TypicalAppointment.getTypicalAppointments();","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" assertEquals(appointmentsFromFile, typicalAppointments);","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" public void toModelType_invalidAppointmentFile_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" JsonSerializableAppointment dataFromFile \u003d JsonUtil.readJsonFile(INVALID_APPOINTMENT_FILE,","lastModifiedDate":"2024-03-23"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" JsonSerializableAppointment.class).get();","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" assertThrows(IllegalValueException.class, dataFromFile::toModelType);","lastModifiedDate":"2024-03-23"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"}],"authorContributionMap":{"MaYuehan":42}},{"path":"src/test/java/vitalconnect/storage/JsonSerializableClinicTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.storage;","lastModifiedDate":"2024-03-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":"MaYuehan"},"content":"import static vitalconnect.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.util.JsonUtil;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Clinic;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.testutil.TypicalPersons;","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"javierng2knus"},"content":"public class JsonSerializableClinicTest {","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"javierng2knus"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonSerializableClinicTest\");","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"javierng2knus"},"content":" private static final Path TYPICAL_PERSONS_FILE \u003d TEST_DATA_FOLDER.resolve(\"typicalPersonsClinic.json\");","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"javierng2knus"},"content":" private static final Path INVALID_PERSON_FILE \u003d TEST_DATA_FOLDER.resolve(\"invalidPersonClinic.json\");","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"javierng2knus"},"content":" private static final Path DUPLICATE_PERSON_FILE \u003d TEST_DATA_FOLDER.resolve(\"duplicatePersonClinic.json\");","lastModifiedDate":"2024-03-11"},{"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":"javierng2knus"},"content":" JsonSerializableClinic dataFromFile \u003d JsonUtil.readJsonFile(TYPICAL_PERSONS_FILE,","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"javierng2knus"},"content":" JsonSerializableClinic.class).get();","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"javierng2knus"},"content":" Clinic clinicFromFile \u003d dataFromFile.toModelType();","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"javierng2knus"},"content":" Clinic typicalPersonsClinic \u003d TypicalPersons.getTypicalClinic();","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"javierng2knus"},"content":" assertEquals(clinicFromFile, typicalPersonsClinic);","lastModifiedDate":"2024-03-11"},{"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":"-"},"content":" public void toModelType_invalidPersonFile_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"javierng2knus"},"content":" JsonSerializableClinic dataFromFile \u003d JsonUtil.readJsonFile(INVALID_PERSON_FILE,","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"javierng2knus"},"content":" JsonSerializableClinic.class).get();","lastModifiedDate":"2024-03-11"},{"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":"-"},"content":" public void toModelType_duplicatePersons_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"javierng2knus"},"content":" JsonSerializableClinic dataFromFile \u003d JsonUtil.readJsonFile(DUPLICATE_PERSON_FILE,","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"javierng2knus"},"content":" JsonSerializableClinic.class).get();","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"javierng2knus"},"content":" assertThrows(IllegalValueException.class, JsonSerializableClinic.MESSAGE_DUPLICATE_PERSON,","lastModifiedDate":"2024-03-11"},{"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":{"javierng2knus":15,"MaYuehan":6,"-":26}},{"path":"src/test/java/vitalconnect/storage/JsonUserPrefsStorageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.storage;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import static vitalconnect.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.commons.core.GuiSettings;","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.UserPrefs;","lastModifiedDate":"2024-03-13"},{"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":"javierng2knus"},"content":" userPrefs.setClinicFilePath(Paths.get(\"clinic.json\"));","lastModifiedDate":"2024-03-11"},{"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":{"javierng2knus":1,"MaYuehan":5,"-":117}},{"path":"src/test/java/vitalconnect/storage/StorageManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.storage;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import static vitalconnect.testutil.TypicalPersons.getTypicalClinic;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import java.util.List;","lastModifiedDate":"2024-03-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.core.GuiSettings;","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Appointment;","lastModifiedDate":"2024-03-23"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Clinic;","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.ReadOnlyClinic;","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.UserPrefs;","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class StorageManagerTest {","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private StorageManager storageManager;","lastModifiedDate":"2017-04-01"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2016-10-19"},{"lineNumber":29,"author":{"gitId":"javierng2knus"},"content":" JsonClinicStorage clinicStorage \u003d new JsonClinicStorage(getTempFilePath(\"ab\"));","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(getTempFilePath(\"prefs\"));","lastModifiedDate":"2017-02-25"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" JsonAppointmentStorage appointmentStorage \u003d new JsonAppointmentStorage(getTempFilePath(\"appts\"));","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" storageManager \u003d new StorageManager(clinicStorage, userPrefsStorage, appointmentStorage);","lastModifiedDate":"2024-03-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Path getTempFilePath(String fileName) {","lastModifiedDate":"2018-04-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return testFolder.resolve(fileName);","lastModifiedDate":"2019-04-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public void prefsReadSave() throws Exception {","lastModifiedDate":"2016-10-16"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-09-28"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Note: This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2016-09-28"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * {@link JsonUserPrefsStorage} class.","lastModifiedDate":"2016-10-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * More extensive testing of UserPref saving/reading is done in {@link JsonUserPrefsStorageTest} class.","lastModifiedDate":"2016-10-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28"},{"lineNumber":47,"author":{"gitId":"-"},"content":" UserPrefs original \u003d new UserPrefs();","lastModifiedDate":"2016-09-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" original.setGuiSettings(new GuiSettings(300, 600, 4, 6));","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" storageManager.saveUserPrefs(original);","lastModifiedDate":"2016-09-28"},{"lineNumber":50,"author":{"gitId":"-"},"content":" UserPrefs retrieved \u003d storageManager.readUserPrefs().get();","lastModifiedDate":"2016-09-28"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertEquals(original, retrieved);","lastModifiedDate":"2016-09-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"javierng2knus"},"content":" public void clinicReadSave() throws Exception {","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Note: This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2016-10-16"},{"lineNumber":58,"author":{"gitId":"javierng2knus"},"content":" * {@link JsonClinicStorage} class.","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"javierng2knus"},"content":" * More extensive testing of UserPref saving/reading is done in {@link JsonClinicStorageTest} class.","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":61,"author":{"gitId":"javierng2knus"},"content":" Clinic original \u003d getTypicalClinic();","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"javierng2knus"},"content":" storageManager.saveClinic(original);","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"javierng2knus"},"content":" ReadOnlyClinic retrieved \u003d storageManager.readClinic().get();","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"javierng2knus"},"content":" assertEquals(original, new Clinic(retrieved));","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":68,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":69,"author":{"gitId":"MaYuehan"},"content":" public void appointmentsReadSave() throws Exception {","lastModifiedDate":"2024-03-23"},{"lineNumber":70,"author":{"gitId":"MaYuehan"},"content":" // Prepare original list of appointments","lastModifiedDate":"2024-03-23"},{"lineNumber":71,"author":{"gitId":"MaYuehan"},"content":" List\u003cAppointment\u003e original \u003d vitalconnect.testutil.TypicalAppointment.getTypicalAppointments();","lastModifiedDate":"2024-03-23"},{"lineNumber":72,"author":{"gitId":"MaYuehan"},"content":" storageManager.saveAppointments(original);","lastModifiedDate":"2024-03-23"},{"lineNumber":73,"author":{"gitId":"MaYuehan"},"content":" List\u003cAppointment\u003e retrieved \u003d storageManager.readAppointments().get();","lastModifiedDate":"2024-03-23"},{"lineNumber":74,"author":{"gitId":"MaYuehan"},"content":" assertEquals(original, retrieved);","lastModifiedDate":"2024-03-23"},{"lineNumber":75,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":76,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-01"},{"lineNumber":78,"author":{"gitId":"javierng2knus"},"content":" public void getClinicFilePath() {","lastModifiedDate":"2024-03-11"},{"lineNumber":79,"author":{"gitId":"javierng2knus"},"content":" assertNotNull(storageManager.getClinicFilePath());","lastModifiedDate":"2024-03-11"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":82,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":83,"author":{"gitId":"MaYuehan"},"content":" public void getAppointmentFilePath() {","lastModifiedDate":"2024-03-23"},{"lineNumber":84,"author":{"gitId":"MaYuehan"},"content":" assertNotNull(storageManager.getAppointmentFilePath());","lastModifiedDate":"2024-03-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":86,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":87,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"}],"authorContributionMap":{"javierng2knus":10,"MaYuehan":26,"-":51}},{"path":"src/test/java/vitalconnect/testutil/Assert.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.testutil;","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":" Assertions.assertEquals(expectedMessage, thrownException.getMessage());","lastModifiedDate":"2019-03-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-17"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-07-17"}],"authorContributionMap":{"MaYuehan":1,"-":33}},{"path":"src/test/java/vitalconnect/testutil/ClinicBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.testutil;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Clinic;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"javierng2knus"},"content":"/**","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"javierng2knus"},"content":" * A utility class to help with building Clinic objects.","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"javierng2knus"},"content":" * Example usage: \u003cbr\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"javierng2knus"},"content":" * {@code Clinic ab \u003d new ClinicBuilder().withPerson(\"John\", \"Doe\").build();}","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"javierng2knus"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"javierng2knus"},"content":"public class ClinicBuilder {","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"javierng2knus"},"content":" private Clinic clinic;","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"javierng2knus"},"content":" public ClinicBuilder() {","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"javierng2knus"},"content":" clinic \u003d new Clinic();","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"javierng2knus"},"content":" public ClinicBuilder(Clinic clinic) {","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"javierng2knus"},"content":" this.clinic \u003d clinic;","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"javierng2knus"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"javierng2knus"},"content":" * Adds a new {@code Person} to the {@code Clinic} that we are building.","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"javierng2knus"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"javierng2knus"},"content":" public ClinicBuilder withPerson(Person person) {","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"javierng2knus"},"content":" clinic.addPerson(person);","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"javierng2knus"},"content":" return this;","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"javierng2knus"},"content":" public Clinic build() {","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"javierng2knus"},"content":" return clinic;","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"javierng2knus"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"javierng2knus":31,"MaYuehan":3}},{"path":"src/test/java/vitalconnect/testutil/EditPersonDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.testutil;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.identificationinformation.Name;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"javierng2knus"},"content":"import vitalconnect.model.person.identificationinformation.Nric;","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * A utility class to help with building EditPersonDescriptor objects.","lastModifiedDate":"2017-05-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorBuilder {","lastModifiedDate":"2017-05-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private EditPersonDescriptor descriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder() {","lastModifiedDate":"2017-05-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-05-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(EditPersonDescriptor descriptor) {","lastModifiedDate":"2017-05-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":" this.descriptor \u003d new EditPersonDescriptor(descriptor);","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Returns an {@code EditPersonDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2017-06-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":27,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"javierng2knus"},"content":" descriptor.setName(person.getIdentificationInformation().getName());","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"javierng2knus"},"content":" descriptor.setNric(person.getIdentificationInformation().getNric());","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"SeaHogs"},"content":" //descriptor.setTags(person.getTags());","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2017-12-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"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":"javierng2knus"},"content":" * Sets the {@code Nric} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":44,"author":{"gitId":"javierng2knus"},"content":" public EditPersonDescriptorBuilder withNric(String nric) {","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"javierng2knus"},"content":" descriptor.setNric(new Nric(nric));","lastModifiedDate":"2024-03-15"},{"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":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"javierng2knus":6,"MaYuehan":4,"-":41,"SeaHogs":1}},{"path":"src/test/java/vitalconnect/testutil/PersonBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.testutil;","lastModifiedDate":"2024-03-13"},{"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":"SeaHogs"},"content":"import vitalconnect.model.allergytag.AllergyTag;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.Address;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.ContactInformation;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.Email;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.Phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"javierng2knus"},"content":"import vitalconnect.model.person.identificationinformation.IdentificationInformation;","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.identificationinformation.Name;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"javierng2knus"},"content":"import vitalconnect.model.person.identificationinformation.Nric;","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.person.medicalinformation.Height;","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.person.medicalinformation.MedicalInformation;","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.person.medicalinformation.Weight;","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.util.SampleDataUtil;","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18"},{"lineNumber":26,"author":{"gitId":"javierng2knus"},"content":" public static final String DEFAULT_NRIC \u003d \"S7654321F\";","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"Ella-e"},"content":" public static final String DEFAULT_EMAIL \u003d \"\";","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"Ella-e"},"content":" public static final String DEFAULT_PHONE \u003d \"\";","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"Ella-e"},"content":" public static final String DEFAULT_ADDRESS \u003d \"\";","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"SeaHogs"},"content":" public static final String DEFAULT_HEIGHT \u003d \"\";","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"SeaHogs"},"content":" public static final String DEFAULT_WEIGHT \u003d \"\";","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":34,"author":{"gitId":"javierng2knus"},"content":" private Nric nric;","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"Ella-e"},"content":" private Email email;","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"Ella-e"},"content":" private Phone phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"Ella-e"},"content":" private Address address;","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"SeaHogs"},"content":" private Height height;","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"SeaHogs"},"content":" private Weight weight;","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"SeaHogs"},"content":" private Set\u003cAllergyTag\u003e allergyTags;","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20"},{"lineNumber":47,"author":{"gitId":"javierng2knus"},"content":" nric \u003d new Nric(DEFAULT_NRIC);","lastModifiedDate":"2024-03-15"},{"lineNumber":48,"author":{"gitId":"Ella-e"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"Ella-e"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"Ella-e"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"SeaHogs"},"content":" height \u003d new Height(DEFAULT_HEIGHT);","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"SeaHogs"},"content":" weight \u003d new Weight(DEFAULT_WEIGHT);","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"SeaHogs"},"content":" allergyTags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10"},{"lineNumber":60,"author":{"gitId":"javierng2knus"},"content":" name \u003d personToCopy.getIdentificationInformation().getName();","lastModifiedDate":"2024-03-15"},{"lineNumber":61,"author":{"gitId":"javierng2knus"},"content":" nric \u003d personToCopy.getIdentificationInformation().getNric();","lastModifiedDate":"2024-03-15"},{"lineNumber":62,"author":{"gitId":"Ella-e"},"content":" email \u003d personToCopy.getContactInformation().getEmail();","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"Ella-e"},"content":" phone \u003d personToCopy.getContactInformation().getPhone();","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"Ella-e"},"content":" address \u003d personToCopy.getContactInformation().getAddress();","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"SeaHogs"},"content":" height \u003d personToCopy.getMedicalInformation().getHeight();","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"SeaHogs"},"content":" weight \u003d personToCopy.getMedicalInformation().getWeight();","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"SeaHogs"},"content":" allergyTags \u003d new HashSet\u003c\u003e(personToCopy.getMedicalInformation().getAllergyTag());","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20"},{"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":"2017-07-26"},{"lineNumber":79,"author":{"gitId":"SeaHogs"},"content":" * Parses the {@code allergyTags} into a {@code Set\u003cAllergyTag\u003e}","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"SeaHogs"},"content":" * and set it to the {@code Person} that we are building.","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String ... tags) {","lastModifiedDate":"2017-08-15"},{"lineNumber":83,"author":{"gitId":"SeaHogs"},"content":" this.allergyTags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":88,"author":{"gitId":"javierng2knus"},"content":" * Sets the {@code Nric} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":90,"author":{"gitId":"javierng2knus"},"content":" public PersonBuilder withNric(String nric) {","lastModifiedDate":"2024-03-15"},{"lineNumber":91,"author":{"gitId":"javierng2knus"},"content":" this.nric \u003d new Nric(nric);","lastModifiedDate":"2024-03-15"},{"lineNumber":92,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":95,"author":{"gitId":"Ella-e"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"Ella-e"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"Ella-e"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"Ella-e"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"Ella-e"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"Ella-e"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"Ella-e"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"Ella-e"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"Ella-e"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"Ella-e"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"Ella-e"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"Ella-e"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":109,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"Ella-e"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"Ella-e"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"Ella-e"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"Ella-e"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"Ella-e"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"Ella-e"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"SeaHogs"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":120,"author":{"gitId":"SeaHogs"},"content":" * Sets the {@code Height} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":121,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":122,"author":{"gitId":"SeaHogs"},"content":" public PersonBuilder withHeight(String height) {","lastModifiedDate":"2024-03-19"},{"lineNumber":123,"author":{"gitId":"SeaHogs"},"content":" this.height \u003d new Height(height);","lastModifiedDate":"2024-03-19"},{"lineNumber":124,"author":{"gitId":"SeaHogs"},"content":" return this;","lastModifiedDate":"2024-03-19"},{"lineNumber":125,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":126,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":127,"author":{"gitId":"SeaHogs"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":128,"author":{"gitId":"SeaHogs"},"content":" * Sets the {@code Weight} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":129,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":130,"author":{"gitId":"SeaHogs"},"content":" public PersonBuilder withWeight(String weight) {","lastModifiedDate":"2024-03-19"},{"lineNumber":131,"author":{"gitId":"SeaHogs"},"content":" this.weight \u003d new Weight(weight);","lastModifiedDate":"2024-03-19"},{"lineNumber":132,"author":{"gitId":"SeaHogs"},"content":" return this;","lastModifiedDate":"2024-03-19"},{"lineNumber":133,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":134,"author":{"gitId":"Ella-e"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":135,"author":{"gitId":"Ella-e"},"content":" * Build a person.","lastModifiedDate":"2024-03-17"},{"lineNumber":136,"author":{"gitId":"Ella-e"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05"},{"lineNumber":138,"author":{"gitId":"Ella-e"},"content":" return new Person(new IdentificationInformation(name, nric),","lastModifiedDate":"2024-03-17"},{"lineNumber":139,"author":{"gitId":"SeaHogs"},"content":" new ContactInformation(email, phone, address), new MedicalInformation(height, weight, allergyTags));","lastModifiedDate":"2024-03-18"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":142,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03"}],"authorContributionMap":{"javierng2knus":10,"MaYuehan":4,"Ella-e":44,"-":50,"SeaHogs":34}},{"path":"src/test/java/vitalconnect/testutil/PersonUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.testutil;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":3,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_ALLERGYTAG;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"javierng2knus"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_NRIC;","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.AddCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static String getAddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":20,"author":{"gitId":"-"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2017-03-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":27,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05"},{"lineNumber":28,"author":{"gitId":"javierng2knus"},"content":" sb.append(PREFIX_NAME + person.getIdentificationInformation().getName().fullName + \" \");","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"javierng2knus"},"content":" sb.append(PREFIX_NRIC + person.getIdentificationInformation().getNric().nric + \" \");","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"SeaHogs"},"content":" person.getMedicalInformation().getAllergyTag().stream().forEach(","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"SeaHogs"},"content":" s -\u003e sb.append(PREFIX_ALLERGYTAG + s.tagName + \" \")","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26"},{"lineNumber":40,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26"},{"lineNumber":41,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":42,"author":{"gitId":"javierng2knus"},"content":" descriptor.getNric().ifPresent(ic -\u003e sb.append(PREFIX_NRIC).append(ic.nric).append(\" \"));","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"SeaHogs"},"content":" // if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"SeaHogs"},"content":" // Set\u003cAllergyTag\u003e allergyTags \u003d descriptor.getTags().get();","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"SeaHogs"},"content":" // if (allergyTags.isEmpty()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"SeaHogs"},"content":" // sb.append(PREFIX_ALLERGYTAG);","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"SeaHogs"},"content":" // } else {","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"SeaHogs"},"content":" // allergyTags.forEach(s -\u003e sb.append(PREFIX_ALLERGYTAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"SeaHogs"},"content":" // }","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"SeaHogs"},"content":" // }","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05"}],"authorContributionMap":{"javierng2knus":4,"MaYuehan":5,"-":33,"SeaHogs":11}},{"path":"src/test/java/vitalconnect/testutil/SerializableTestClass.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.testutil;","lastModifiedDate":"2024-03-13"},{"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":{"MaYuehan":1,"-":71}},{"path":"src/test/java/vitalconnect/testutil/TestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.testutil;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.commons.core.index.Index;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":" return Index.fromOneBased(model.getFilteredPersonList().size() / 2);","lastModifiedDate":"2018-08-13"},{"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":"-"},"content":" return Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2018-08-13"},{"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":"-"},"content":" public static Person getPerson(Model model, Index index) {","lastModifiedDate":"2018-01-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList().get(index.getZeroBased());","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30"},{"lineNumber":55,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"MaYuehan":4,"-":51}},{"path":"src/test/java/vitalconnect/testutil/TypicalAppointment.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.testutil;","lastModifiedDate":"2024-03-23"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-03-23"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import java.util.List;","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Appointment;","lastModifiedDate":"2024-03-23"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"/**","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":" * A utility class containing a list of {@code Appointment} objects to be used in tests.","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"public class TypicalAppointment {","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":" public static final Appointment APPOINTMENT_1 \u003d new Appointment(\"Alice Pauline\", \"S1234567D\",","lastModifiedDate":"2024-03-23"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" LocalDateTime.of(2023, 3, 14, 15, 30));","lastModifiedDate":"2024-03-23"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":" public static final Appointment APPOINTMENT_2 \u003d new Appointment(\"Benson Meier\", \"S1234568B\",","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":" LocalDateTime.of(2023, 3, 15, 10, 0));","lastModifiedDate":"2024-03-23"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" public static final Appointment APPOINTMENT_3 \u003d new Appointment(\"Carl Kurz\", \"T1234567J\",","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" LocalDateTime.of(2023, 4, 16, 9, 0));","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":" public static final Appointment APPOINTMENT_4 \u003d new Appointment(\"Daniel Meier\", \"F1234567N\",","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" LocalDateTime.of(2023, 4, 17, 14, 45));","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" public static final Appointment APPOINTMENT_5 \u003d new Appointment(\"Elle Meyer\", \"G1234567X\",","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":" LocalDateTime.of(2023, 5, 18, 16, 30));","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" public static final Appointment APPOINTMENT_6 \u003d new Appointment(\"Fiona Kunz\", \"M1234567K\",","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" LocalDateTime.of(2023, 6, 19, 10, 15));","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" public static final Appointment APPOINTMENT_7 \u003d new Appointment(\"George Best\", \"F1234560R\",","lastModifiedDate":"2024-03-23"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" LocalDateTime.of(2023, 7, 20, 11, 30));","lastModifiedDate":"2024-03-23"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" private TypicalAppointment() {} // prevents instantiation","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" * Returns a list of typical appointments.","lastModifiedDate":"2024-03-23"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" public static List\u003cAppointment\u003e getTypicalAppointments() {","lastModifiedDate":"2024-03-23"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(APPOINTMENT_1, APPOINTMENT_2, APPOINTMENT_3, APPOINTMENT_4,","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" APPOINTMENT_5, APPOINTMENT_6, APPOINTMENT_7));","lastModifiedDate":"2024-03-23"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"}],"authorContributionMap":{"MaYuehan":39}},{"path":"src/test/java/vitalconnect/testutil/TypicalIndexes.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.testutil;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.core.index.Index;","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":"}","lastModifiedDate":"2017-08-05"}],"authorContributionMap":{"MaYuehan":2,"-":10}},{"path":"src/test/java/vitalconnect/testutil/TypicalPersons.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.testutil;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"javierng2knus"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.VALID_NRIC_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"javierng2knus"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.VALID_NRIC_BOB;","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Clinic;","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final Person ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2018-01-10"},{"lineNumber":23,"author":{"gitId":"javierng2knus"},"content":" .withNric(\"S1234567D\")","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"Ella-e"},"content":" .withEmail(\"email@e.com\")","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"Ella-e"},"content":" .withHeight(\"163\")","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"Ella-e"},"content":" .withWeight(\"50\").build();","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10"},{"lineNumber":28,"author":{"gitId":"javierng2knus"},"content":" .withNric(\"S1234568B\")","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"SeaHogs"},"content":" .build();","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"javierng2knus"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\")","lastModifiedDate":"2024-03-15"},{"lineNumber":31,"author":{"gitId":"javierng2knus"},"content":" .withNric(\"T1234567J\").build();","lastModifiedDate":"2024-03-15"},{"lineNumber":32,"author":{"gitId":"javierng2knus"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\")","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"javierng2knus"},"content":" .withNric(\"F1234567N\")","lastModifiedDate":"2024-03-15"},{"lineNumber":34,"author":{"gitId":"SeaHogs"},"content":" .build();","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"javierng2knus"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\")","lastModifiedDate":"2024-03-15"},{"lineNumber":36,"author":{"gitId":"javierng2knus"},"content":" .withNric(\"G1234567X\").build();","lastModifiedDate":"2024-03-15"},{"lineNumber":37,"author":{"gitId":"javierng2knus"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\")","lastModifiedDate":"2024-03-15"},{"lineNumber":38,"author":{"gitId":"javierng2knus"},"content":" .withNric(\"M1234567K\").build();","lastModifiedDate":"2024-03-15"},{"lineNumber":39,"author":{"gitId":"javierng2knus"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\")","lastModifiedDate":"2024-03-15"},{"lineNumber":40,"author":{"gitId":"SeaHogs"},"content":" .withNric(\"F1234560R\").withHeight(\"160\").withWeight(\"160\").withTags(\"peanuts\").build();","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":43,"author":{"gitId":"javierng2knus"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withNric(\"S1234569J\").build();","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"javierng2knus"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withNric(\"S1234560G\").build();","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":46,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22"},{"lineNumber":47,"author":{"gitId":"SeaHogs"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withNric(VALID_NRIC_AMY).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"SeaHogs"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withNric(VALID_NRIC_BOB).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21"},{"lineNumber":50,"author":{"gitId":"Ella-e"},"content":" public static final Person BOB_CONTACT \u003d new PersonBuilder().withName(VALID_NAME_BOB).withNric(VALID_NRIC_BOB)","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"Ella-e"},"content":" .withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"Ella-e"},"content":" .withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"Ella-e"},"content":" .withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"Ella-e"},"content":" .build();","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":61,"author":{"gitId":"javierng2knus"},"content":" * Returns an {@code Clinic} with all the typical persons.","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":63,"author":{"gitId":"javierng2knus"},"content":" public static Clinic getTypicalClinic() {","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"javierng2knus"},"content":" Clinic c \u003d new Clinic();","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10"},{"lineNumber":66,"author":{"gitId":"javierng2knus"},"content":" c.addPerson(person);","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13"},{"lineNumber":68,"author":{"gitId":"javierng2knus"},"content":" return c;","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10"},{"lineNumber":72,"author":{"gitId":"javierng2knus"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2024-03-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04"},{"lineNumber":74,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13"}],"authorContributionMap":{"javierng2knus":21,"MaYuehan":5,"Ella-e":12,"-":31,"SeaHogs":5}},{"path":"src/test/java/vitalconnect/ui/TestFxmlObject.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.ui;","lastModifiedDate":"2024-03-13"},{"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":{"MaYuehan":1,"-":44}},{"path":"src/test/java/vitalconnect/ui/UiPartTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.ui;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import static vitalconnect.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.MainApp;","lastModifiedDate":"2024-03-13"},{"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":"2019-03-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new TestUiPart\u003cObject\u003e((URL) null, new Object()));","lastModifiedDate":"2019-03-14"},{"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":"2019-03-14"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertThrows(AssertionError.class, () -\u003e new TestUiPart\u003cObject\u003e(missingFileUrl, new Object()));","lastModifiedDate":"2019-03-14"},{"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":"2019-03-14"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertThrows(AssertionError.class, () -\u003e new TestUiPart\u003cObject\u003e(invalidFileUrl, new Object()));","lastModifiedDate":"2019-03-14"},{"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":"2019-03-14"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new TestUiPart\u003cObject\u003e((String) null, new Object()));","lastModifiedDate":"2019-03-14"},{"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":"2019-03-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new TestUiPart\u003cObject\u003e(MISSING_FILE_PATH, new Object()));","lastModifiedDate":"2019-03-14"},{"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":"2019-03-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertThrows(AssertionError.class, () -\u003e new TestUiPart\u003cObject\u003e(INVALID_FILE_PATH, new Object()));","lastModifiedDate":"2019-03-14"},{"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":" */","lastModifiedDate":"2016-12-21"},{"lineNumber":88,"author":{"gitId":"-"},"content":" private static class TestUiPart\u003cT\u003e extends UiPart\u003cT\u003e {","lastModifiedDate":"2016-12-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-12-21"},{"lineNumber":91,"author":{"gitId":"-"},"content":" private TestFxmlObject validFileRoot; // Check that @FXML annotations work","lastModifiedDate":"2016-12-21"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":93,"author":{"gitId":"-"},"content":" TestUiPart(URL fxmlFileUrl, T root) {","lastModifiedDate":"2017-11-29"},{"lineNumber":94,"author":{"gitId":"-"},"content":" super(fxmlFileUrl, root);","lastModifiedDate":"2017-11-29"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-11-29"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-11-29"},{"lineNumber":97,"author":{"gitId":"-"},"content":" TestUiPart(String fxmlFileName, T root) {","lastModifiedDate":"2017-11-29"},{"lineNumber":98,"author":{"gitId":"-"},"content":" super(fxmlFileName, root);","lastModifiedDate":"2017-11-29"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-11-29"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-11-29"},{"lineNumber":101,"author":{"gitId":"-"},"content":" TestUiPart(URL fxmlFileUrl) {","lastModifiedDate":"2016-12-21"},{"lineNumber":102,"author":{"gitId":"-"},"content":" super(fxmlFileUrl);","lastModifiedDate":"2016-12-21"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertEquals(VALID_FILE_ROOT, validFileRoot);","lastModifiedDate":"2016-12-21"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":106,"author":{"gitId":"-"},"content":" TestUiPart(String fxmlFileName) {","lastModifiedDate":"2016-12-21"},{"lineNumber":107,"author":{"gitId":"-"},"content":" super(fxmlFileName);","lastModifiedDate":"2016-12-21"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertEquals(VALID_FILE_ROOT, validFileRoot);","lastModifiedDate":"2016-12-21"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","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"}],"authorContributionMap":{"MaYuehan":3,"-":110}},{"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":"MaYuehan"},"content":"\u003c?import vitalconnect.ui.TestFxmlObject?\u003e","lastModifiedDate":"2024-03-13"},{"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":{"MaYuehan":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":"MaYuehan"},"content":"\u003cfx:root type\u003d\"vitalconnect.ui.TestFxmlObject\" xmlns\u003d\"http://javafx.com/javafx/17\"","lastModifiedDate":"2024-03-13"},{"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":{"MaYuehan":1,"-":5}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"# vitalconnect","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"[![CI Status](https://github.com/AY2324S2-CS2103T-W08-2/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S2-CS2103T-W08-2/tp/actions)","lastModifiedDate":"2024-02-25"},{"lineNumber":4,"author":{"gitId":"javierng2knus"},"content":"[![codecov](https://codecov.io/gh/AY2324S2-CS2103T-W08-2/tp/graph/badge.svg?token\u003dHOLIQIUTEE)](https://codecov.io/gh/AY2324S2-CS2103T-W08-2/tp)","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"This product is for clinic assistants that have to keep track of a lot of patient information and requires ","lastModifiedDate":"2024-02-25"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"the information at a fast pace, thus preferring to have a simple UI such as a CLI instead of a complex GUI, ","lastModifiedDate":"2024-02-25"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"with the added benefit of having typed user commands for an even faster retrieval of information.","lastModifiedDate":"2024-02-25"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"__Value proposition:__","lastModifiedDate":"2024-02-25"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"Clinic assistants are required to take note of a multitude of information regarding the patient, ","lastModifiedDate":"2024-02-25"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"such as their contact number, any existing medical condition, the specific treatment that they are currently undergoing and much more. ","lastModifiedDate":"2024-02-25"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"With this product, such information will be readily available while also allowing for quality of life features such as scheduling ","lastModifiedDate":"2024-02-25"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":"appointments and managing medication.","lastModifiedDate":"2024-02-25"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":"This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-02-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":"## Features (V1.2)","lastModifiedDate":"2024-02-25"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":"__Saving the data__","lastModifiedDate":"2024-02-25"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":"* All data is saved in the hard disk automatically after any command that changes the data.","lastModifiedDate":"2024-02-25"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":"__Clear all existing entries__","lastModifiedDate":"2024-02-25"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":"* Clear all the existing entries within the local database.","lastModifiedDate":"2024-02-25"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":"__Exit the program__","lastModifiedDate":"2024-02-25"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":"* Exits the program. Any data that is not saved cannot be restored upon exiting.","lastModifiedDate":"2024-02-25"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":"__Viewing help__","lastModifiedDate":"2024-02-25"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":"* Shows a message explaining the instructions to access the user guide.","lastModifiedDate":"2024-02-25"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":"### Manage Appointments","lastModifiedDate":"2024-02-25"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":"__Create Appointments__","lastModifiedDate":"2024-02-25"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":"* Create an appointment of a patient, information such as time and name of patient are required when adding.","lastModifiedDate":"2024-02-25"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":"__Delete Appointments__","lastModifiedDate":"2024-02-25"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":"* Delete an appointment of a patient.","lastModifiedDate":"2024-02-25"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":"__List Appointments__","lastModifiedDate":"2024-02-25"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":"* List all the appointments that have been created, provide information such as the patient’s name and time of the appointments.","lastModifiedDate":"2024-02-25"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":54,"author":{"gitId":"MaYuehan"},"content":"### Manage Contact Information","lastModifiedDate":"2024-02-25"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":56,"author":{"gitId":"MaYuehan"},"content":"__Add patient contact information__","lastModifiedDate":"2024-02-25"},{"lineNumber":57,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":58,"author":{"gitId":"MaYuehan"},"content":"* Add contact information, including phone number and email address. If a specific field already exists, the command would fail.","lastModifiedDate":"2024-02-25"},{"lineNumber":59,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":60,"author":{"gitId":"MaYuehan"},"content":"__Delete patient contact information__","lastModifiedDate":"2024-02-25"},{"lineNumber":61,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":62,"author":{"gitId":"MaYuehan"},"content":"* Delete specific or all contact information, including phone number and email address.","lastModifiedDate":"2024-02-25"},{"lineNumber":63,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":64,"author":{"gitId":"MaYuehan"},"content":"__List patient contact information__","lastModifiedDate":"2024-02-25"},{"lineNumber":65,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":66,"author":{"gitId":"MaYuehan"},"content":"* List all patient’s contact information.","lastModifiedDate":"2024-02-25"},{"lineNumber":67,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":68,"author":{"gitId":"MaYuehan"},"content":"### Manage Patients","lastModifiedDate":"2024-02-25"},{"lineNumber":69,"author":{"gitId":"MaYuehan"},"content":"__Add patient__","lastModifiedDate":"2024-02-25"},{"lineNumber":70,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":71,"author":{"gitId":"MaYuehan"},"content":"* Add a new patient to the database so further information about their appointment or contact information can be added.","lastModifiedDate":"2024-02-25"},{"lineNumber":72,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":73,"author":{"gitId":"MaYuehan"},"content":"__Delete patient__","lastModifiedDate":"2024-02-25"},{"lineNumber":74,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":75,"author":{"gitId":"MaYuehan"},"content":"* Delete specific or all patients, including their contact and appointment.","lastModifiedDate":"2024-02-25"},{"lineNumber":76,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":77,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":78,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":79,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":80,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":81,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":82,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":83,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"}],"authorContributionMap":{"javierng2knus":1,"MaYuehan":79,"-":3}},{"path":"bin/main/view/CommandBox.fxml","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.control.TextField?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":"\u003cStackPane styleClass\u003d\"stack-pane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":" \u003cTextField fx:id\u003d\"commandTextField\" onAction\u003d\"#handleCommandEntered\" promptText\u003d\"Enter command here...\"/\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":"\u003c/StackPane\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"Ella-e":9}},{"path":"bin/main/view/DarkTheme.css","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":".background {","lastModifiedDate":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":" background-color: #383838; /* Used in the default.html file */","lastModifiedDate":"2024-03-04"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":".label {","lastModifiedDate":"2024-03-04"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2024-03-04"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2024-03-04"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: #555555;","lastModifiedDate":"2024-03-04"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2024-03-04"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":".label-bright {","lastModifiedDate":"2024-03-04"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2024-03-04"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2024-03-04"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-04"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":" -fx-opacity: 1;","lastModifiedDate":"2024-03-04"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":".label-header {","lastModifiedDate":"2024-03-04"},{"lineNumber":21,"author":{"gitId":"Ella-e"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2024-03-04"},{"lineNumber":22,"author":{"gitId":"Ella-e"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2024-03-04"},{"lineNumber":23,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-04"},{"lineNumber":24,"author":{"gitId":"Ella-e"},"content":" -fx-opacity: 1;","lastModifiedDate":"2024-03-04"},{"lineNumber":25,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":26,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":27,"author":{"gitId":"Ella-e"},"content":".text-field {","lastModifiedDate":"2024-03-04"},{"lineNumber":28,"author":{"gitId":"Ella-e"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2024-03-04"},{"lineNumber":29,"author":{"gitId":"Ella-e"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2024-03-04"},{"lineNumber":30,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":31,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":32,"author":{"gitId":"Ella-e"},"content":".tab-pane {","lastModifiedDate":"2024-03-04"},{"lineNumber":33,"author":{"gitId":"Ella-e"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2024-03-04"},{"lineNumber":34,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":35,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":36,"author":{"gitId":"Ella-e"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2024-03-04"},{"lineNumber":37,"author":{"gitId":"Ella-e"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2024-03-04"},{"lineNumber":38,"author":{"gitId":"Ella-e"},"content":" -fx-min-height: 0;","lastModifiedDate":"2024-03-04"},{"lineNumber":39,"author":{"gitId":"Ella-e"},"content":" -fx-max-height: 0;","lastModifiedDate":"2024-03-04"},{"lineNumber":40,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":41,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":42,"author":{"gitId":"Ella-e"},"content":".table-view {","lastModifiedDate":"2024-03-04"},{"lineNumber":43,"author":{"gitId":"Ella-e"},"content":" -fx-base: #1d1d1d;","lastModifiedDate":"2024-03-04"},{"lineNumber":44,"author":{"gitId":"Ella-e"},"content":" -fx-control-inner-background: #1d1d1d;","lastModifiedDate":"2024-03-04"},{"lineNumber":45,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2024-03-04"},{"lineNumber":46,"author":{"gitId":"Ella-e"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2024-03-04"},{"lineNumber":47,"author":{"gitId":"Ella-e"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2024-03-04"},{"lineNumber":48,"author":{"gitId":"Ella-e"},"content":" -fx-padding: 5;","lastModifiedDate":"2024-03-04"},{"lineNumber":49,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":50,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":51,"author":{"gitId":"Ella-e"},"content":".table-view .column-header-background {","lastModifiedDate":"2024-03-04"},{"lineNumber":52,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-04"},{"lineNumber":53,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":54,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":55,"author":{"gitId":"Ella-e"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2024-03-04"},{"lineNumber":56,"author":{"gitId":"Ella-e"},"content":" -fx-size: 35;","lastModifiedDate":"2024-03-04"},{"lineNumber":57,"author":{"gitId":"Ella-e"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2024-03-04"},{"lineNumber":58,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-04"},{"lineNumber":59,"author":{"gitId":"Ella-e"},"content":" -fx-border-color:","lastModifiedDate":"2024-03-04"},{"lineNumber":60,"author":{"gitId":"Ella-e"},"content":" transparent","lastModifiedDate":"2024-03-04"},{"lineNumber":61,"author":{"gitId":"Ella-e"},"content":" transparent","lastModifiedDate":"2024-03-04"},{"lineNumber":62,"author":{"gitId":"Ella-e"},"content":" derive(-fx-base, 80%)","lastModifiedDate":"2024-03-04"},{"lineNumber":63,"author":{"gitId":"Ella-e"},"content":" transparent;","lastModifiedDate":"2024-03-04"},{"lineNumber":64,"author":{"gitId":"Ella-e"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2024-03-04"},{"lineNumber":65,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":66,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":67,"author":{"gitId":"Ella-e"},"content":".table-view .column-header .label {","lastModifiedDate":"2024-03-04"},{"lineNumber":68,"author":{"gitId":"Ella-e"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2024-03-04"},{"lineNumber":69,"author":{"gitId":"Ella-e"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2024-03-04"},{"lineNumber":70,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-04"},{"lineNumber":71,"author":{"gitId":"Ella-e"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2024-03-04"},{"lineNumber":72,"author":{"gitId":"Ella-e"},"content":" -fx-opacity: 1;","lastModifiedDate":"2024-03-04"},{"lineNumber":73,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":74,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":75,"author":{"gitId":"Ella-e"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2024-03-04"},{"lineNumber":76,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2024-03-04"},{"lineNumber":77,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":78,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":79,"author":{"gitId":"Ella-e"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2024-03-04"},{"lineNumber":80,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2024-03-04"},{"lineNumber":81,"author":{"gitId":"Ella-e"},"content":" -fx-border-color: transparent transparent transparent #4d4d4d;","lastModifiedDate":"2024-03-04"},{"lineNumber":82,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":83,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":84,"author":{"gitId":"Ella-e"},"content":".split-pane {","lastModifiedDate":"2024-03-04"},{"lineNumber":85,"author":{"gitId":"Ella-e"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2024-03-04"},{"lineNumber":86,"author":{"gitId":"Ella-e"},"content":" -fx-border-width: 1;","lastModifiedDate":"2024-03-04"},{"lineNumber":87,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2024-03-04"},{"lineNumber":88,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":89,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":90,"author":{"gitId":"Ella-e"},"content":".list-view {","lastModifiedDate":"2024-03-04"},{"lineNumber":91,"author":{"gitId":"Ella-e"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2024-03-04"},{"lineNumber":92,"author":{"gitId":"Ella-e"},"content":" -fx-padding: 0;","lastModifiedDate":"2024-03-04"},{"lineNumber":93,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2024-03-04"},{"lineNumber":94,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":95,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":96,"author":{"gitId":"Ella-e"},"content":".list-cell {","lastModifiedDate":"2024-03-04"},{"lineNumber":97,"author":{"gitId":"Ella-e"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2024-03-04"},{"lineNumber":98,"author":{"gitId":"Ella-e"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2024-03-04"},{"lineNumber":99,"author":{"gitId":"Ella-e"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2024-03-04"},{"lineNumber":100,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":101,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":102,"author":{"gitId":"Ella-e"},"content":".list-cell:filled:even {","lastModifiedDate":"2024-03-04"},{"lineNumber":103,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: #3c3e3f;","lastModifiedDate":"2024-03-04"},{"lineNumber":104,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":105,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":106,"author":{"gitId":"Ella-e"},"content":".list-cell:filled:odd {","lastModifiedDate":"2024-03-04"},{"lineNumber":107,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: #515658;","lastModifiedDate":"2024-03-04"},{"lineNumber":108,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":109,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":110,"author":{"gitId":"Ella-e"},"content":".list-cell:filled:selected {","lastModifiedDate":"2024-03-04"},{"lineNumber":111,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: #424d5f;","lastModifiedDate":"2024-03-04"},{"lineNumber":112,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":113,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":114,"author":{"gitId":"Ella-e"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2024-03-04"},{"lineNumber":115,"author":{"gitId":"Ella-e"},"content":" -fx-border-color: #3e7b91;","lastModifiedDate":"2024-03-04"},{"lineNumber":116,"author":{"gitId":"Ella-e"},"content":" -fx-border-width: 1;","lastModifiedDate":"2024-03-04"},{"lineNumber":117,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":118,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":119,"author":{"gitId":"Ella-e"},"content":".list-cell .label {","lastModifiedDate":"2024-03-04"},{"lineNumber":120,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-04"},{"lineNumber":121,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":122,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":123,"author":{"gitId":"Ella-e"},"content":".cell_big_label {","lastModifiedDate":"2024-03-04"},{"lineNumber":124,"author":{"gitId":"Ella-e"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2024-03-04"},{"lineNumber":125,"author":{"gitId":"Ella-e"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2024-03-04"},{"lineNumber":126,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2024-03-04"},{"lineNumber":127,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":128,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":129,"author":{"gitId":"Ella-e"},"content":".cell_small_label {","lastModifiedDate":"2024-03-04"},{"lineNumber":130,"author":{"gitId":"Ella-e"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2024-03-04"},{"lineNumber":131,"author":{"gitId":"Ella-e"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2024-03-04"},{"lineNumber":132,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2024-03-04"},{"lineNumber":133,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":134,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":135,"author":{"gitId":"Ella-e"},"content":".stack-pane {","lastModifiedDate":"2024-03-04"},{"lineNumber":136,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2024-03-04"},{"lineNumber":137,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":138,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":139,"author":{"gitId":"Ella-e"},"content":".pane-with-border {","lastModifiedDate":"2024-03-04"},{"lineNumber":140,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2024-03-04"},{"lineNumber":141,"author":{"gitId":"Ella-e"},"content":" -fx-border-color: derive(#1d1d1d, 10%);","lastModifiedDate":"2024-03-04"},{"lineNumber":142,"author":{"gitId":"Ella-e"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2024-03-04"},{"lineNumber":143,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":144,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":145,"author":{"gitId":"Ella-e"},"content":".status-bar {","lastModifiedDate":"2024-03-04"},{"lineNumber":146,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2024-03-04"},{"lineNumber":147,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":148,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":149,"author":{"gitId":"Ella-e"},"content":".result-display {","lastModifiedDate":"2024-03-04"},{"lineNumber":150,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-04"},{"lineNumber":151,"author":{"gitId":"Ella-e"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2024-03-04"},{"lineNumber":152,"author":{"gitId":"Ella-e"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2024-03-04"},{"lineNumber":153,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-04"},{"lineNumber":154,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":155,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":156,"author":{"gitId":"Ella-e"},"content":".result-display .label {","lastModifiedDate":"2024-03-04"},{"lineNumber":157,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2024-03-04"},{"lineNumber":158,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":159,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":160,"author":{"gitId":"Ella-e"},"content":".status-bar .label {","lastModifiedDate":"2024-03-04"},{"lineNumber":161,"author":{"gitId":"Ella-e"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2024-03-04"},{"lineNumber":162,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-04"},{"lineNumber":163,"author":{"gitId":"Ella-e"},"content":" -fx-padding: 4px;","lastModifiedDate":"2024-03-04"},{"lineNumber":164,"author":{"gitId":"Ella-e"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2024-03-04"},{"lineNumber":165,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":166,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":167,"author":{"gitId":"Ella-e"},"content":".status-bar-with-border {","lastModifiedDate":"2024-03-04"},{"lineNumber":168,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2024-03-04"},{"lineNumber":169,"author":{"gitId":"Ella-e"},"content":" -fx-border-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2024-03-04"},{"lineNumber":170,"author":{"gitId":"Ella-e"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2024-03-04"},{"lineNumber":171,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":172,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":173,"author":{"gitId":"Ella-e"},"content":".status-bar-with-border .label {","lastModifiedDate":"2024-03-04"},{"lineNumber":174,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-04"},{"lineNumber":175,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":176,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":177,"author":{"gitId":"Ella-e"},"content":".grid-pane {","lastModifiedDate":"2024-03-04"},{"lineNumber":178,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2024-03-04"},{"lineNumber":179,"author":{"gitId":"Ella-e"},"content":" -fx-border-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2024-03-04"},{"lineNumber":180,"author":{"gitId":"Ella-e"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2024-03-04"},{"lineNumber":181,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":182,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":183,"author":{"gitId":"Ella-e"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2024-03-04"},{"lineNumber":184,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2024-03-04"},{"lineNumber":185,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":186,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":187,"author":{"gitId":"Ella-e"},"content":".context-menu {","lastModifiedDate":"2024-03-04"},{"lineNumber":188,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2024-03-04"},{"lineNumber":189,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":190,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":191,"author":{"gitId":"Ella-e"},"content":".context-menu .label {","lastModifiedDate":"2024-03-04"},{"lineNumber":192,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-04"},{"lineNumber":193,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":194,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":195,"author":{"gitId":"Ella-e"},"content":".menu-bar {","lastModifiedDate":"2024-03-04"},{"lineNumber":196,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2024-03-04"},{"lineNumber":197,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":198,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":199,"author":{"gitId":"Ella-e"},"content":".menu-bar .label {","lastModifiedDate":"2024-03-04"},{"lineNumber":200,"author":{"gitId":"Ella-e"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2024-03-04"},{"lineNumber":201,"author":{"gitId":"Ella-e"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2024-03-04"},{"lineNumber":202,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-04"},{"lineNumber":203,"author":{"gitId":"Ella-e"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2024-03-04"},{"lineNumber":204,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":205,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":206,"author":{"gitId":"Ella-e"},"content":".menu .left-container {","lastModifiedDate":"2024-03-04"},{"lineNumber":207,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: black;","lastModifiedDate":"2024-03-04"},{"lineNumber":208,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":209,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":210,"author":{"gitId":"Ella-e"},"content":"/*","lastModifiedDate":"2024-03-04"},{"lineNumber":211,"author":{"gitId":"Ella-e"},"content":" * Metro style Push Button","lastModifiedDate":"2024-03-04"},{"lineNumber":212,"author":{"gitId":"Ella-e"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2024-03-04"},{"lineNumber":213,"author":{"gitId":"Ella-e"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2024-03-04"},{"lineNumber":214,"author":{"gitId":"Ella-e"},"content":" */","lastModifiedDate":"2024-03-04"},{"lineNumber":215,"author":{"gitId":"Ella-e"},"content":".button {","lastModifiedDate":"2024-03-04"},{"lineNumber":216,"author":{"gitId":"Ella-e"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2024-03-04"},{"lineNumber":217,"author":{"gitId":"Ella-e"},"content":" -fx-border-color: #e2e2e2;","lastModifiedDate":"2024-03-04"},{"lineNumber":218,"author":{"gitId":"Ella-e"},"content":" -fx-border-width: 2;","lastModifiedDate":"2024-03-04"},{"lineNumber":219,"author":{"gitId":"Ella-e"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2024-03-04"},{"lineNumber":220,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2024-03-04"},{"lineNumber":221,"author":{"gitId":"Ella-e"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2024-03-04"},{"lineNumber":222,"author":{"gitId":"Ella-e"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2024-03-04"},{"lineNumber":223,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: #d8d8d8;","lastModifiedDate":"2024-03-04"},{"lineNumber":224,"author":{"gitId":"Ella-e"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2024-03-04"},{"lineNumber":225,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":226,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":227,"author":{"gitId":"Ella-e"},"content":".button:hover {","lastModifiedDate":"2024-03-04"},{"lineNumber":228,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: #3a3a3a;","lastModifiedDate":"2024-03-04"},{"lineNumber":229,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":230,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":231,"author":{"gitId":"Ella-e"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2024-03-04"},{"lineNumber":232,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: white;","lastModifiedDate":"2024-03-04"},{"lineNumber":233,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: #1d1d1d;","lastModifiedDate":"2024-03-04"},{"lineNumber":234,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":235,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":236,"author":{"gitId":"Ella-e"},"content":".button:focused {","lastModifiedDate":"2024-03-04"},{"lineNumber":237,"author":{"gitId":"Ella-e"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2024-03-04"},{"lineNumber":238,"author":{"gitId":"Ella-e"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2024-03-04"},{"lineNumber":239,"author":{"gitId":"Ella-e"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2024-03-04"},{"lineNumber":240,"author":{"gitId":"Ella-e"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2024-03-04"},{"lineNumber":241,"author":{"gitId":"Ella-e"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2024-03-04"},{"lineNumber":242,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":243,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":244,"author":{"gitId":"Ella-e"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2024-03-04"},{"lineNumber":245,"author":{"gitId":"Ella-e"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2024-03-04"},{"lineNumber":246,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2024-03-04"},{"lineNumber":247,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-04"},{"lineNumber":248,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":249,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":250,"author":{"gitId":"Ella-e"},"content":".button:default {","lastModifiedDate":"2024-03-04"},{"lineNumber":251,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2024-03-04"},{"lineNumber":252,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2024-03-04"},{"lineNumber":253,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":254,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":255,"author":{"gitId":"Ella-e"},"content":".button:default:hover {","lastModifiedDate":"2024-03-04"},{"lineNumber":256,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2024-03-04"},{"lineNumber":257,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":258,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":259,"author":{"gitId":"Ella-e"},"content":".dialog-pane {","lastModifiedDate":"2024-03-04"},{"lineNumber":260,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2024-03-04"},{"lineNumber":261,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":262,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":263,"author":{"gitId":"Ella-e"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2024-03-04"},{"lineNumber":264,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2024-03-04"},{"lineNumber":265,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":266,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":267,"author":{"gitId":"Ella-e"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2024-03-04"},{"lineNumber":268,"author":{"gitId":"Ella-e"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2024-03-04"},{"lineNumber":269,"author":{"gitId":"Ella-e"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2024-03-04"},{"lineNumber":270,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-04"},{"lineNumber":271,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":272,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":273,"author":{"gitId":"Ella-e"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2024-03-04"},{"lineNumber":274,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2024-03-04"},{"lineNumber":275,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":276,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":277,"author":{"gitId":"Ella-e"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2024-03-04"},{"lineNumber":278,"author":{"gitId":"Ella-e"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2024-03-04"},{"lineNumber":279,"author":{"gitId":"Ella-e"},"content":" -fx-font-style: italic;","lastModifiedDate":"2024-03-04"},{"lineNumber":280,"author":{"gitId":"Ella-e"},"content":" -fx-fill: white;","lastModifiedDate":"2024-03-04"},{"lineNumber":281,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-04"},{"lineNumber":282,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":283,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":284,"author":{"gitId":"Ella-e"},"content":".scroll-bar {","lastModifiedDate":"2024-03-04"},{"lineNumber":285,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2024-03-04"},{"lineNumber":286,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":287,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":288,"author":{"gitId":"Ella-e"},"content":".scroll-bar .thumb {","lastModifiedDate":"2024-03-04"},{"lineNumber":289,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2024-03-04"},{"lineNumber":290,"author":{"gitId":"Ella-e"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2024-03-04"},{"lineNumber":291,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":292,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":293,"author":{"gitId":"Ella-e"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2024-03-04"},{"lineNumber":294,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-04"},{"lineNumber":295,"author":{"gitId":"Ella-e"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2024-03-04"},{"lineNumber":296,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":297,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":298,"author":{"gitId":"Ella-e"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2024-03-04"},{"lineNumber":299,"author":{"gitId":"Ella-e"},"content":" -fx-shape: \" \";","lastModifiedDate":"2024-03-04"},{"lineNumber":300,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":301,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":302,"author":{"gitId":"Ella-e"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2024-03-04"},{"lineNumber":303,"author":{"gitId":"Ella-e"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2024-03-04"},{"lineNumber":304,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":305,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":306,"author":{"gitId":"Ella-e"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2024-03-04"},{"lineNumber":307,"author":{"gitId":"Ella-e"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2024-03-04"},{"lineNumber":308,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":309,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":310,"author":{"gitId":"Ella-e"},"content":"#cardPane {","lastModifiedDate":"2024-03-04"},{"lineNumber":311,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-04"},{"lineNumber":312,"author":{"gitId":"Ella-e"},"content":" -fx-border-width: 0;","lastModifiedDate":"2024-03-04"},{"lineNumber":313,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":314,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":315,"author":{"gitId":"Ella-e"},"content":"#commandTypeLabel {","lastModifiedDate":"2024-03-04"},{"lineNumber":316,"author":{"gitId":"Ella-e"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2024-03-04"},{"lineNumber":317,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2024-03-04"},{"lineNumber":318,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":319,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":320,"author":{"gitId":"Ella-e"},"content":"#commandTextField {","lastModifiedDate":"2024-03-04"},{"lineNumber":321,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: transparent #383838 transparent #383838;","lastModifiedDate":"2024-03-04"},{"lineNumber":322,"author":{"gitId":"Ella-e"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2024-03-04"},{"lineNumber":323,"author":{"gitId":"Ella-e"},"content":" -fx-border-color: #383838 #383838 #ffffff #383838;","lastModifiedDate":"2024-03-04"},{"lineNumber":324,"author":{"gitId":"Ella-e"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2024-03-04"},{"lineNumber":325,"author":{"gitId":"Ella-e"},"content":" -fx-border-width: 1;","lastModifiedDate":"2024-03-04"},{"lineNumber":326,"author":{"gitId":"Ella-e"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2024-03-04"},{"lineNumber":327,"author":{"gitId":"Ella-e"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2024-03-04"},{"lineNumber":328,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-04"},{"lineNumber":329,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":330,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":331,"author":{"gitId":"Ella-e"},"content":"#filterField, #personListPanel, #personWebpage {","lastModifiedDate":"2024-03-04"},{"lineNumber":332,"author":{"gitId":"Ella-e"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2024-03-04"},{"lineNumber":333,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":334,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":335,"author":{"gitId":"Ella-e"},"content":"#resultDisplay .content {","lastModifiedDate":"2024-03-04"},{"lineNumber":336,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: transparent, #383838, transparent, #383838;","lastModifiedDate":"2024-03-04"},{"lineNumber":337,"author":{"gitId":"Ella-e"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2024-03-04"},{"lineNumber":338,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":339,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":340,"author":{"gitId":"Ella-e"},"content":"#tags {","lastModifiedDate":"2024-03-04"},{"lineNumber":341,"author":{"gitId":"Ella-e"},"content":" -fx-hgap: 7;","lastModifiedDate":"2024-03-04"},{"lineNumber":342,"author":{"gitId":"Ella-e"},"content":" -fx-vgap: 3;","lastModifiedDate":"2024-03-04"},{"lineNumber":343,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":344,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":345,"author":{"gitId":"Ella-e"},"content":"#tags .label {","lastModifiedDate":"2024-03-04"},{"lineNumber":346,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-04"},{"lineNumber":347,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: #3e7b91;","lastModifiedDate":"2024-03-04"},{"lineNumber":348,"author":{"gitId":"Ella-e"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2024-03-04"},{"lineNumber":349,"author":{"gitId":"Ella-e"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2024-03-04"},{"lineNumber":350,"author":{"gitId":"Ella-e"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2024-03-04"},{"lineNumber":351,"author":{"gitId":"Ella-e"},"content":" -fx-font-size: 11;","lastModifiedDate":"2024-03-04"},{"lineNumber":352,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"Ella-e":352}},{"path":"bin/main/view/Extensions.css","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":".error {","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: #d06651 !important; /* The error class should always override the default text-fill style */","lastModifiedDate":"2024-03-04"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":".list-cell:empty {","lastModifiedDate":"2024-03-04"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":" /* Empty cells will not have alternating colours */","lastModifiedDate":"2024-03-04"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":" -fx-background: #383838;","lastModifiedDate":"2024-03-04"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":".tag-selector {","lastModifiedDate":"2024-03-04"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"content":" -fx-border-width: 1;","lastModifiedDate":"2024-03-04"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":" -fx-border-color: white;","lastModifiedDate":"2024-03-04"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":" -fx-border-radius: 3;","lastModifiedDate":"2024-03-04"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":" -fx-background-radius: 3;","lastModifiedDate":"2024-03-04"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":".tooltip-text {","lastModifiedDate":"2024-03-04"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-04"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"Ella-e":20}},{"path":"bin/main/view/HelpWindow.css","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"#copyButton, #helpMessage {","lastModifiedDate":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"#copyButton {","lastModifiedDate":"2024-03-04"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: dimgray;","lastModifiedDate":"2024-03-04"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":"#copyButton:hover {","lastModifiedDate":"2024-03-04"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: gray;","lastModifiedDate":"2024-03-04"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":"#copyButton:armed {","lastModifiedDate":"2024-03-04"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: darkgray;","lastModifiedDate":"2024-03-04"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":"#helpMessageContainer {","lastModifiedDate":"2024-03-04"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2024-03-04"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"Ella-e":19}},{"path":"bin/main/view/HelpWindow.fxml","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.control.Button?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.stage.Stage?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"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":"2024-03-04"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":" \u003cicons\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":" \u003cImage url\u003d\"@/images/help_icon.png\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":" \u003c/icons\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":" \u003cscene\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":" \u003cScene\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":" \u003cURL value\u003d\"@HelpWindow.css\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":21,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":22,"author":{"gitId":"Ella-e"},"content":" \u003cHBox alignment\u003d\"CENTER\" fx:id\u003d\"helpMessageContainer\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":23,"author":{"gitId":"Ella-e"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":24,"author":{"gitId":"Ella-e"},"content":" \u003cLabel fx:id\u003d\"helpMessage\" text\u003d\"Label\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":25,"author":{"gitId":"Ella-e"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":26,"author":{"gitId":"Ella-e"},"content":" \u003cInsets right\u003d\"5.0\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":27,"author":{"gitId":"Ella-e"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":28,"author":{"gitId":"Ella-e"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":29,"author":{"gitId":"Ella-e"},"content":" \u003cButton fx:id\u003d\"copyButton\" mnemonicParsing\u003d\"false\" onAction\u003d\"#copyUrl\" text\u003d\"Copy URL\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":30,"author":{"gitId":"Ella-e"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":31,"author":{"gitId":"Ella-e"},"content":" \u003cInsets left\u003d\"5.0\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":32,"author":{"gitId":"Ella-e"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":33,"author":{"gitId":"Ella-e"},"content":" \u003c/Button\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":34,"author":{"gitId":"Ella-e"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":35,"author":{"gitId":"Ella-e"},"content":" \u003copaqueInsets\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":36,"author":{"gitId":"Ella-e"},"content":" \u003cInsets bottom\u003d\"10.0\" left\u003d\"5.0\" right\u003d\"10.0\" top\u003d\"5.0\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":37,"author":{"gitId":"Ella-e"},"content":" \u003c/opaqueInsets\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":38,"author":{"gitId":"Ella-e"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":39,"author":{"gitId":"Ella-e"},"content":" \u003cInsets bottom\u003d\"10.0\" left\u003d\"5.0\" right\u003d\"10.0\" top\u003d\"5.0\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":40,"author":{"gitId":"Ella-e"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":41,"author":{"gitId":"Ella-e"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":42,"author":{"gitId":"Ella-e"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":43,"author":{"gitId":"Ella-e"},"content":" \u003c/scene\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":44,"author":{"gitId":"Ella-e"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"Ella-e":44}},{"path":"bin/main/view/MainWindow.fxml","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.control.SplitPane?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":"\u003cfx:root type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"","lastModifiedDate":"2024-03-04"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":" title\u003d\"Address App\" minWidth\u003d\"450\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":" \u003cicons\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":" \u003cImage url\u003d\"@/images/address_book_32.png\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":" \u003c/icons\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":" \u003cscene\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":" \u003cScene\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":21,"author":{"gitId":"Ella-e"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":22,"author":{"gitId":"Ella-e"},"content":" \u003cURL value\u003d\"@DarkTheme.css\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":23,"author":{"gitId":"Ella-e"},"content":" \u003cURL value\u003d\"@Extensions.css\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":24,"author":{"gitId":"Ella-e"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":25,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":26,"author":{"gitId":"Ella-e"},"content":" \u003cVBox\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":27,"author":{"gitId":"Ella-e"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":28,"author":{"gitId":"Ella-e"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":29,"author":{"gitId":"Ella-e"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":30,"author":{"gitId":"Ella-e"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":31,"author":{"gitId":"Ella-e"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":32,"author":{"gitId":"Ella-e"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":33,"author":{"gitId":"Ella-e"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":34,"author":{"gitId":"Ella-e"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":35,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":36,"author":{"gitId":"Ella-e"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":37,"author":{"gitId":"Ella-e"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":38,"author":{"gitId":"Ella-e"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":39,"author":{"gitId":"Ella-e"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":40,"author":{"gitId":"Ella-e"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":41,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":42,"author":{"gitId":"Ella-e"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"resultDisplayPlaceholder\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2024-03-04"},{"lineNumber":43,"author":{"gitId":"Ella-e"},"content":" minHeight\u003d\"100\" prefHeight\u003d\"100\" maxHeight\u003d\"100\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":44,"author":{"gitId":"Ella-e"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":45,"author":{"gitId":"Ella-e"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":46,"author":{"gitId":"Ella-e"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":47,"author":{"gitId":"Ella-e"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":48,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":49,"author":{"gitId":"Ella-e"},"content":" \u003cVBox fx:id\u003d\"personList\" styleClass\u003d\"pane-with-border\" minWidth\u003d\"340\" prefWidth\u003d\"340\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":50,"author":{"gitId":"Ella-e"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":51,"author":{"gitId":"Ella-e"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":52,"author":{"gitId":"Ella-e"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":53,"author":{"gitId":"Ella-e"},"content":" \u003cStackPane fx:id\u003d\"personListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":54,"author":{"gitId":"Ella-e"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":55,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":56,"author":{"gitId":"Ella-e"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":57,"author":{"gitId":"Ella-e"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":58,"author":{"gitId":"Ella-e"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":59,"author":{"gitId":"Ella-e"},"content":" \u003c/scene\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":60,"author":{"gitId":"Ella-e"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"Ella-e":60}},{"path":"bin/main/view/PersonListCard.fxml","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"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":"2024-03-04"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":21,"author":{"gitId":"Ella-e"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":22,"author":{"gitId":"Ella-e"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":23,"author":{"gitId":"Ella-e"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":24,"author":{"gitId":"Ella-e"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":25,"author":{"gitId":"Ella-e"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":26,"author":{"gitId":"Ella-e"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":27,"author":{"gitId":"Ella-e"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":28,"author":{"gitId":"Ella-e"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":29,"author":{"gitId":"Ella-e"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":30,"author":{"gitId":"SeaHogs"},"content":" \u003cFlowPane fx:id\u003d\"allergyTags\" /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"Ella-e"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":32,"author":{"gitId":"Ella-e"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":33,"author":{"gitId":"Ella-e"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":34,"author":{"gitId":"Ella-e"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":35,"author":{"gitId":"Ella-e"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":36,"author":{"gitId":"Ella-e"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"Ella-e":35,"SeaHogs":1}},{"path":"bin/main/view/PersonListPanel.fxml","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":" \u003cListView fx:id\u003d\"personListView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"Ella-e":8}},{"path":"bin/main/view/ResultDisplay.fxml","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.control.TextArea?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":"\u003cStackPane fx:id\u003d\"placeHolder\" styleClass\u003d\"pane-with-border\" xmlns\u003d\"http://javafx.com/javafx/17\"","lastModifiedDate":"2024-03-04"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":" \u003cTextArea fx:id\u003d\"resultDisplay\" editable\u003d\"false\" styleClass\u003d\"result-display\"/\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":"\u003c/StackPane\u003e","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"Ella-e":9}},{"path":"bin/main/view/StatusBarFooter.fxml","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":"\u003cGridPane styleClass\u003d\"status-bar\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":" \u003cLabel fx:id\u003d\"saveLocationStatus\" /\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"content":"\u003c/GridPane\u003e","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"Ella-e":12}},{"path":"bin/test/view/UiPartTest/invalidFile.fxml","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"Not a valid FXML file","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"Ella-e":1}},{"path":"bin/test/view/UiPartTest/validFile.fxml","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"javierng2knus"},"content":"\u003c?import vitalConnect.ui.TestFxmlObject?\u003e","lastModifiedDate":"2024-03-10"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"\u003cTestFxmlObject xmlns:fx\u003d\"http://javafx.com/fxml/1\" fx:id\u003d\"validFileRoot\"\u003eHello World!\u003c/TestFxmlObject\u003e","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"javierng2knus":1,"Ella-e":3}},{"path":"bin/test/view/UiPartTest/validFileWithFxRoot.fxml","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"javierng2knus"},"content":"\u003cfx:root type\u003d\"vitalConnect.ui.TestFxmlObject\" xmlns\u003d\"http://javafx.com/javafx/17\"","lastModifiedDate":"2024-03-10"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":" \u003ctext\u003eHello World!\u003c/text\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"javierng2knus":1,"Ella-e":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":"MaYuehan"},"content":"mainClassName \u003d \u0027vitalconnect.Main\u0027","lastModifiedDate":"2024-03-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":" implementation group: \u0027com.fasterxml.jackson.core\u0027, name: \u0027jackson-databind\u0027, version: \u00272.7.0\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":60,"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":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":65,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"Ella-e"},"content":" // https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"Ella-e"},"content":" implementation group: \u0027org.apache.poi\u0027, name: \u0027poi-ooxml\u0027, version: \u00273.6\u0027","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"Ella-e"},"content":"run{","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"Ella-e"},"content":" enableAssertions \u003d true","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2016-08-29"},{"lineNumber":75,"author":{"gitId":"MaYuehan"},"content":" archiveFileName \u003d \u0027vitalconnect.jar\u0027","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":"defaultTasks \u0027clean\u0027, \u0027test\u0027","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"MaYuehan":2,"Ella-e":7,"-":69}},{"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":"-"},"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":"2017-08-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":"2016-10-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"offCommentFormat\" value\u003d\"CHECKSTYLE.OFF\\: ([\\w\\|]+)\"/\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"onCommentFormat\" value\u003d\"CHECKSTYLE.ON\\: ([\\w\\|]+)\"/\u003e","lastModifiedDate":"2016-10-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"checkFormat\" value\u003d\"$1\"/\u003e","lastModifiedDate":"2016-10-12"},{"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":"2017-01-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"customImportOrderRules\"","lastModifiedDate":"2017-01-19"},{"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":"-"},"content":" \u003cproperty name\u003d\"specialImportsRegExp\" value\u003d\"^org\\.\"/\u003e","lastModifiedDate":"2017-01-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"thirdPartyPackageRegExp\" value\u003d\"^com\\.\"/\u003e","lastModifiedDate":"2017-01-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"sortImportsInGroupAlphabetically\" value\u003d\"true\"/\u003e","lastModifiedDate":"2017-01-19"},{"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":"2017-01-19"},{"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":"2017-01-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"AvoidStarImport\"/\u003e","lastModifiedDate":"2018-01-25"},{"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":"2017-04-07"},{"lineNumber":87,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"AbbreviationAsWordInName\"\u003e","lastModifiedDate":"2017-04-07"},{"lineNumber":88,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"ignoreFinal\" value\u003d\"false\"/\u003e","lastModifiedDate":"2017-04-07"},{"lineNumber":89,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowedAbbreviationLength\" value\u003d\"1\"/\u003e","lastModifiedDate":"2017-04-07"},{"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":"2016-08-08"},{"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":"2016-08-08"},{"lineNumber":95,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08"},{"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":"2017-01-29"},{"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":"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\"ConstantName\"\u003e","lastModifiedDate":"2017-01-29"},{"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":"2016-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"applyToPrivate\" value\u003d\"false\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":" \u003cmessage key\u003d\"name.invalidPattern\"","lastModifiedDate":"2016-08-08"},{"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":"2016-08-08"},{"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":"2017-01-29"},{"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":"2016-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"format\" value\u003d\"^[a-z][a-zA-Z0-9]*_?$\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08"},{"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":"2017-01-29"},{"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":"2016-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"format\" value\u003d\"^[a-z][a-zA-Z0-9]*$\"/\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08"},{"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":"2017-01-29"},{"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":"2016-08-08"},{"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":"2017-04-03"},{"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":"2016-08-08"},{"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":"2016-08-08"},{"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":"2016-08-08"},{"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":"2016-08-08"},{"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":"2016-08-08"},{"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":"2016-08-08"},{"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":"2017-04-01"},{"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":"2017-04-03"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-03"},{"lineNumber":162,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"LeftCurly\"\u003e","lastModifiedDate":"2016-08-08"},{"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":"2016-08-08"},{"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":"2016-08-08"},{"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":"2016-08-08"},{"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":"2016-08-08"},{"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":"2016-10-12"},{"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":"2017-09-21"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21"},{"lineNumber":207,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"OneStatementPerLine\"/\u003e","lastModifiedDate":"2017-09-17"},{"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":"2018-01-25"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":212,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"FallThrough\"\u003e","lastModifiedDate":"2016-08-08"},{"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":"2016-08-08"},{"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":"2017-04-07"},{"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":"2017-04-13"},{"lineNumber":226,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"protectedAllowed\" value\u003d\"true\"/\u003e","lastModifiedDate":"2017-04-13"},{"lineNumber":227,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowPublicFinalFields\" value\u003d\"true\"/\u003e","lastModifiedDate":"2017-04-13"},{"lineNumber":228,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"ignoreAnnotationCanonicalNames\" value\u003d\"RegisterExtension, TempDir\"/\u003e","lastModifiedDate":"2019-02-24"},{"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":"2017-04-07"},{"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":"2017-04-01"},{"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":"2022-04-29"},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29"},{"lineNumber":251,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"ModifierOrder\"\u003e","lastModifiedDate":"2016-08-08"},{"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":"2017-01-16"},{"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":"2017-04-03"},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-03"},{"lineNumber":268,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"WhitespaceAround\"\u003e","lastModifiedDate":"2016-08-08"},{"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":"2016-08-08"},{"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":"2016-12-10"},{"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":"2016-12-10"},{"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":"2016-12-10"},{"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":"2016-12-10"},{"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":"2016-12-10"},{"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":"2016-08-08"},{"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":"2016-08-08"},{"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":"2016-08-08"},{"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":"2016-08-08"},{"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":"2016-08-08"},{"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":"2016-12-08"},{"lineNumber":306,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"format\" value\u003d\"[ \\t]+$\"/\u003e","lastModifiedDate":"2016-12-08"},{"lineNumber":307,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"illegalPattern\" value\u003d\"true\"/\u003e","lastModifiedDate":"2016-12-08"},{"lineNumber":308,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"message\" value\u003d\"Trailing whitespace\"/\u003e","lastModifiedDate":"2016-12-08"},{"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":"2017-05-22"},{"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":"2017-05-22"},{"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":"2017-05-22"},{"lineNumber":323,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-05-22"},{"lineNumber":324,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"OperatorWrap\"\u003e","lastModifiedDate":"2017-05-22"},{"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":"2017-05-22"},{"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":"2017-05-22"},{"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":"2017-04-14"},{"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":"2017-04-14"},{"lineNumber":336,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"option\" value\u003d\"nl\"/\u003e","lastModifiedDate":"2017-04-14"},{"lineNumber":337,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-04-14"},{"lineNumber":338,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"SeparatorWrap\"\u003e","lastModifiedDate":"2017-04-14"},{"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":"2017-04-14"},{"lineNumber":341,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"option\" value\u003d\"eol\"/\u003e","lastModifiedDate":"2017-04-14"},{"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":"2016-08-08"},{"lineNumber":345,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"caseIndent\" value\u003d\"0\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":346,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"throwsIndent\" value\u003d\"8\" /\u003e","lastModifiedDate":"2022-04-29"},{"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":"2016-08-08"},{"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":"2016-08-08"},{"lineNumber":352,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowLineBreaks\" value\u003d\"true\"/\u003e","lastModifiedDate":"2016-08-08"},{"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":"2022-04-29"},{"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":"2022-04-29"},{"lineNumber":358,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"MethodParamPad\"/\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":359,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29"},{"lineNumber":360,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"ParenPad\"\u003e","lastModifiedDate":"2016-08-08"},{"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":"2016-08-08"},{"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":"2018-08-15"},{"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":"2018-08-15"},{"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":"SeaHogs"},"content":" \u003c!-- Checks that all block-allergyTags are ordered correctly. --\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":389,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"AtclauseOrder\"/\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":390,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29"},{"lineNumber":391,"author":{"gitId":"SeaHogs"},"content":" \u003c!-- Checks that Javadoc block allergyTags appear only at the beginning of the line. --\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":392,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"JavadocBlockTagLocation\"/\u003e","lastModifiedDate":"2022-04-29"},{"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":"2022-04-29"},{"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":"2022-04-29"},{"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":"2022-04-29"},{"lineNumber":402,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29"},{"lineNumber":403,"author":{"gitId":"SeaHogs"},"content":" \u003c!-- Checks that for block allergyTags, indentation of continuation lines is at least 4 spaces. --\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":404,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"JavadocTagContinuationIndentation\"/\u003e","lastModifiedDate":"2022-04-29"},{"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":"2017-08-20"},{"lineNumber":408,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowMissingParamTags\" value\u003d\"true\"/\u003e","lastModifiedDate":"2017-08-20"},{"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":"2017-08-20"},{"lineNumber":413,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowedAnnotations\" value\u003d\"Override, Test, BeforeAll, BeforeEach, AfterAll, AfterEach, Subscribe\"/\u003e","lastModifiedDate":"2019-02-24"},{"lineNumber":414,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"accessModifiers\" value\u003d\"public\"/\u003e","lastModifiedDate":"2022-04-29"},{"lineNumber":415,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"validateThrows\" value\u003d\"false\"/\u003e","lastModifiedDate":"2020-05-27"},{"lineNumber":416,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowMissingParamTags\" value\u003d\"true\"/\u003e","lastModifiedDate":"2017-08-20"},{"lineNumber":417,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowMissingReturnTag\" value\u003d\"true\"/\u003e","lastModifiedDate":"2017-08-20"},{"lineNumber":418,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"METHOD_DEF, ANNOTATION_FIELD_DEF\"/\u003e","lastModifiedDate":"2017-08-20"},{"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":"2020-05-27"},{"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":"2020-05-27"},{"lineNumber":425,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"minLineCount\" value\u003d\"1\"/\u003e","lastModifiedDate":"2020-05-27"},{"lineNumber":426,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowMissingPropertyJavadoc\" value\u003d\"true\"/\u003e","lastModifiedDate":"2017-08-20"},{"lineNumber":427,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"ignoreMethodNamesRegex\" value\u003d\"(set.*|get.*|main)\"/\u003e","lastModifiedDate":"2023-07-10"},{"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":"2022-04-29"},{"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":{"-":431,"SeaHogs":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":"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":"javierng2knus"},"content":"### Ng Wei Chong Javier","lastModifiedDate":"2024-03-06"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"javierng2knus"},"content":"\u003cimg src\u003d\"images/javierng2knus.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"javierng2knus"},"content":"[[github](https://github.com/javierng2knus)]","lastModifiedDate":"2024-03-06"},{"lineNumber":17,"author":{"gitId":"javierng2knus"},"content":"[[portfolio](team/javier.md)]","lastModifiedDate":"2024-03-06"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"javierng2knus"},"content":"* Role: Team lead","lastModifiedDate":"2024-03-06"},{"lineNumber":20,"author":{"gitId":"javierng2knus"},"content":"* Responsibilities: \u003cWill be reassigned on a later date\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":"### Ma Yuehan","lastModifiedDate":"2024-02-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":"\u003cimg src\u003d\"images/mayuehan.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":"[[github](https://github.com/MaYuehan)]","lastModifiedDate":"2024-02-25"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":"[[portfolio](team/mayuehan.md)]","lastModifiedDate":"2024-02-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2024-02-25"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":"* Responsibilities: Command implementation, documentation, Ui","lastModifiedDate":"2024-03-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"Ella-e"},"content":"### Mu Zhaoyu","lastModifiedDate":"2024-03-04"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"Ella-e"},"content":"\u003cimg src\u003d\"images/ella-e.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"Ella-e"},"content":"[[github](http://github.com/Ella-e)] ","lastModifiedDate":"2024-03-04"},{"lineNumber":37,"author":{"gitId":"Ella-e"},"content":"[[portfolio](team/ella-e.md)]","lastModifiedDate":"2024-03-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":"Ella-e"},"content":"* Responsibilities: Command implementation, documentation","lastModifiedDate":"2024-03-04"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"Ella-e"},"content":"### Lai Yiwen","lastModifiedDate":"2024-03-06"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"Ella-e"},"content":"\u003cimg src\u003d\"images/seahogs.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"[[github](http://github.com/johndoe)]","lastModifiedDate":"2020-06-17"},{"lineNumber":47,"author":{"gitId":"Ella-e"},"content":"[[portfolio](team/seahogs.md)]","lastModifiedDate":"2024-03-06"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"Ella-e"},"content":"* Responsibilities: Command implementation, documentation","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"javierng2knus":6,"MaYuehan":5,"Ella-e":9,"-":30}},{"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":"javierng2knus"},"content":"* Libraries used: [JavaFX](https://openjfx.io/), [Jackson](https://github.com/FasterXML/jackson), [JUnit5](https://github.com/junit-team/junit5)","lastModifiedDate":"2024-03-06"},{"lineNumber":14,"author":{"gitId":"javierng2knus"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-03-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":16,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","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":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"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":29,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureDiagram.png\" width\u003d\"280\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":39,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"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":42,"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":43,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"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":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureSequenceDiagram.png\" width\u003d\"574\" /\u003e","lastModifiedDate":"2020-06-07"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":62,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31"},{"lineNumber":63,"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":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":65,"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":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ComponentManagers.png\" width\u003d\"300\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":69,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"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":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"![Structure of the UI Component](images/UiClassDiagram.png)","lastModifiedDate":"2021-07-31"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"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":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"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":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":"2021-07-31"},{"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 continues till the end of diagram.","lastModifiedDate":"2024-02-09"},{"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).\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":108,"author":{"gitId":"-"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-02-09"},{"lineNumber":109,"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":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":111,"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":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":113,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ParserClasses.png\" width\u003d\"600\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31"},{"lineNumber":116,"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":117,"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":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31"},{"lineNumber":120,"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":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"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":128,"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":129,"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":130,"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":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"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":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/StorageClassDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":139,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"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":141,"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":142,"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":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"javierng2knus"},"content":"Classes used by multiple components are in the `vitalConnectbook.commons` package.","lastModifiedDate":"2024-03-10"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"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":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"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":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"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":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"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":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"![UndoRedoState0](images/UndoRedoState0.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"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":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"![UndoRedoState1](images/UndoRedoState1.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"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":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":"![UndoRedoState2](images/UndoRedoState2.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"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":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"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":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":"![UndoRedoState3](images/UndoRedoState3.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 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":189,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Logic.png)","lastModifiedDate":"2024-02-09"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"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":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":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":203,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Model.png)","lastModifiedDate":"2024-02-09"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"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":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"Ella-e"},"content":"* has a need to manage a significant number of patient records and contacts","lastModifiedDate":"2024-03-04"},{"lineNumber":262,"author":{"gitId":"Ella-e"},"content":"* need to manage a significant number of appointments","lastModifiedDate":"2024-03-04"},{"lineNumber":263,"author":{"gitId":"Ella-e"},"content":"* need to have a reminder of upcoming appointments","lastModifiedDate":"2024-03-04"},{"lineNumber":264,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26"},{"lineNumber":267,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23"},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"Ella-e"},"content":"**Value proposition**:","lastModifiedDate":"2024-03-06"},{"lineNumber":270,"author":{"gitId":"MaYuehan"},"content":"vitalconnect aims to provide a robust and user-friendly platform for medical professionals to streamline their workflow by effectively managing patient information and appointments. The key value propositions include:","lastModifiedDate":"2024-03-13"},{"lineNumber":271,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":272,"author":{"gitId":"Ella-e"},"content":"* Efficient Patient Management: Users can easily add, modify, and retrieve patient information, ensuring a comprehensive and organized patient database.","lastModifiedDate":"2024-03-06"},{"lineNumber":273,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":274,"author":{"gitId":"MaYuehan"},"content":"* Seamless Appointment Handling: vitalconnect allows for the effortless creation, modification, and deletion of appointments, ensuring accurate scheduling and coordination.","lastModifiedDate":"2024-03-13"},{"lineNumber":275,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":276,"author":{"gitId":"Ella-e"},"content":"* CLI Efficiency: The application caters to users who prefer typing commands over graphical interfaces, enabling faster and more precise data entry.","lastModifiedDate":"2024-03-06"},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":281,"author":{"gitId":"Ella-e"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (good to but might not have) - `*`","lastModifiedDate":"2024-03-04"},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":283,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":284,"author":{"gitId":"-"},"content":"| -------- | ------------------------------------------ | ------------------------------ | ---------------------------------------------------------------------- |","lastModifiedDate":"2020-05-23"},{"lineNumber":285,"author":{"gitId":"Ella-e"},"content":"| `* * *` | new user | have a comprehensive document that details every possible feature. | learn how to use a particular feature |","lastModifiedDate":"2024-03-04"},{"lineNumber":286,"author":{"gitId":"javierng2knus"},"content":"| `* * *` | user | add new patient, either with or without further basic information about the patient | |","lastModifiedDate":"2024-03-06"},{"lineNumber":287,"author":{"gitId":"javierng2knus"},"content":"| `* * *` | user | add the basic information of my patient into the database | so that I can better identify who the patient is |","lastModifiedDate":"2024-03-06"},{"lineNumber":288,"author":{"gitId":"Ella-e"},"content":"| `* * *` | user | delete patient | free storage resources |","lastModifiedDate":"2024-03-04"},{"lineNumber":289,"author":{"gitId":"javierng2knus"},"content":"| `* * *` | user | list out all of the information about a particular patient | see the detailed information of the patient |","lastModifiedDate":"2024-03-06"},{"lineNumber":290,"author":{"gitId":"javierng2knus"},"content":"| `* * *` | user | add the contact information of my patient into the database | get in touch with them when needed or under emergency situation |","lastModifiedDate":"2024-03-06"},{"lineNumber":291,"author":{"gitId":"javierng2knus"},"content":"| `* * *` | user | delete the contact information for a particular patient when the information is outdated | free storage resources |","lastModifiedDate":"2024-03-06"},{"lineNumber":292,"author":{"gitId":"javierng2knus"},"content":"| `* * *` | user | list out all of the patients and their contact information | |","lastModifiedDate":"2024-03-06"},{"lineNumber":293,"author":{"gitId":"javierng2knus"},"content":"| `* * *` | intermediate user | add appointment information for a patient | easily schedule an appointment and find free time slot for it |","lastModifiedDate":"2024-03-06"},{"lineNumber":294,"author":{"gitId":"javierng2knus"},"content":"| `* * *` | intermediate user | delete appointment for a patient | free up slots if the patient is unable to attend |","lastModifiedDate":"2024-03-06"},{"lineNumber":295,"author":{"gitId":"javierng2knus"},"content":"| `* * *` | intermediate user | list out all of the appointments | |","lastModifiedDate":"2024-03-06"},{"lineNumber":296,"author":{"gitId":"javierng2knus"},"content":"| `* * *` | user | list out all of the information about a particular patient | see the detailed information of the patient |","lastModifiedDate":"2024-03-06"},{"lineNumber":297,"author":{"gitId":"javierng2knus"},"content":"| `* *` | user | add the medical information for the patient | allow the doctor to better treat the patient |","lastModifiedDate":"2024-03-06"},{"lineNumber":298,"author":{"gitId":"javierng2knus"},"content":"| `* *` | user | delete the medical information for a patient when the information is outdated | free storage resources |","lastModifiedDate":"2024-03-06"},{"lineNumber":299,"author":{"gitId":"javierng2knus"},"content":"| `* *` | user | list out all of the patients and their medical information | |","lastModifiedDate":"2024-03-06"},{"lineNumber":300,"author":{"gitId":"javierng2knus"},"content":"| `* *` | user | modify the medical details of a patient | keep the patient\u0027s medical information updated |","lastModifiedDate":"2024-03-06"},{"lineNumber":301,"author":{"gitId":"javierng2knus"},"content":"| `* *` | user | modify the basic information of a patient | keep the patient\u0027s basic information updated |","lastModifiedDate":"2024-03-06"},{"lineNumber":302,"author":{"gitId":"javierng2knus"},"content":"| `* *` | user | modify the contact information of a patient | keep the patient\u0027s contact information updated |","lastModifiedDate":"2024-03-06"},{"lineNumber":303,"author":{"gitId":"javierng2knus"},"content":"| `* *` | user | modify the appointment details of a patient | keep the patient\u0027s appointment information updated |","lastModifiedDate":"2024-03-06"},{"lineNumber":304,"author":{"gitId":"javierng2knus"},"content":"| `* *` | user | undo the most recent change or command if possible | fix any errors made |","lastModifiedDate":"2024-03-06"},{"lineNumber":305,"author":{"gitId":"javierng2knus"},"content":"| `* *` | user | view all of the appointments for the day | |","lastModifiedDate":"2024-03-06"},{"lineNumber":306,"author":{"gitId":"javierng2knus"},"content":"| `* *` | intermediate user | list out specifically the medication that the patient is currently taking | |","lastModifiedDate":"2024-03-06"},{"lineNumber":307,"author":{"gitId":"javierng2knus"},"content":"| `* *` | intermediate user | modify the patient\u0027s current medication | better track the medication plan of the patient |","lastModifiedDate":"2024-03-06"},{"lineNumber":308,"author":{"gitId":"javierng2knus"},"content":"| `* *` | intermediate user | list out specifically the patient\u0027s allergies | prescribe the appropriate medication |","lastModifiedDate":"2024-03-06"},{"lineNumber":309,"author":{"gitId":"javierng2knus"},"content":"| `* *` | intermediate user | modify the patient\u0027s allergies | |","lastModifiedDate":"2024-03-06"},{"lineNumber":310,"author":{"gitId":"javierng2knus"},"content":"| `* *` | intermediate user | list out specifically the past illnesses of the patient | assist in the diagnosis process |","lastModifiedDate":"2024-03-06"},{"lineNumber":311,"author":{"gitId":"javierng2knus"},"content":"| `* *` | intermediate user | modify the patient\u0027s past illnesses upon the previous appointment | |","lastModifiedDate":"2024-03-06"},{"lineNumber":312,"author":{"gitId":"Ella-e"},"content":"| `* *` | expert user | have short forms of existing commands | save time on typing the commands |","lastModifiedDate":"2024-03-04"},{"lineNumber":313,"author":{"gitId":"Ella-e"},"content":"| `*` | new user | have the ability to switch to a more simplified and beginner friendly UI | more effectively learn the basics |","lastModifiedDate":"2024-03-04"},{"lineNumber":314,"author":{"gitId":"javierng2knus"},"content":"| `*` | new user | have interactive elements in the user guide | easily understand the app\u0027s capabilities |","lastModifiedDate":"2024-03-06"},{"lineNumber":315,"author":{"gitId":"javierng2knus"},"content":"| `*` | new user | be given command suggestions for mistyped commands | type the intended command without needing to refer to the user guide |","lastModifiedDate":"2024-03-06"},{"lineNumber":316,"author":{"gitId":"javierng2knus"},"content":"| `*` | user | add a reminder for an appointment | be aware of the appointment while busy with work |","lastModifiedDate":"2024-03-06"},{"lineNumber":317,"author":{"gitId":"javierng2knus"},"content":"| `*` | user | mark a reminder as done or undone | better track done and undone work |","lastModifiedDate":"2024-03-06"},{"lineNumber":318,"author":{"gitId":"javierng2knus"},"content":"| `*` | user | mark some of the patients as the special focus | better track patients in serious conditions |","lastModifiedDate":"2024-03-06"},{"lineNumber":319,"author":{"gitId":"javierng2knus"},"content":"| `*` | user | have the ability to leave comments or annotations on shared patient records | communicate specific insights or recommendations to my colleagues |","lastModifiedDate":"2024-03-06"},{"lineNumber":320,"author":{"gitId":"javierng2knus"},"content":"| `*` | user | have a way to assign specific colors to specific medical terms | better skim through the information |","lastModifiedDate":"2024-03-06"},{"lineNumber":321,"author":{"gitId":"javierng2knus"},"content":"| `*` | user | have a method for showing tooltips of features when hovered | quickly find out information about the feature without needing other references |","lastModifiedDate":"2024-03-06"},{"lineNumber":322,"author":{"gitId":"javierng2knus"},"content":"| `*` | user | have a method of giving feedback to the developers | share aspects of the product that I would like changes to |","lastModifiedDate":"2024-03-06"},{"lineNumber":323,"author":{"gitId":"javierng2knus"},"content":"| `*` | intermediate user | have an efficient way to export and backup patient data | ensure the safety and accessibility of important information |","lastModifiedDate":"2024-03-06"},{"lineNumber":324,"author":{"gitId":"javierng2knus"},"content":"| `*` | intermediate user | export selected patient\u0027s information | give the information to the doctor or the patient when needed |","lastModifiedDate":"2024-03-06"},{"lineNumber":325,"author":{"gitId":"javierng2knus"},"content":"| `*` | intermediate user | export selected medical instructions | easily share the instructions to the patient|","lastModifiedDate":"2024-03-06"},{"lineNumber":326,"author":{"gitId":"javierng2knus"},"content":"| `*` | doctor | be able to set a set of instructions for the assistants for special cases such as performing lung capacity tests for asmatics | make my assistants aware of the procedures to go through before my consultation with the patient |","lastModifiedDate":"2024-03-10"},{"lineNumber":327,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":328,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":329,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":330,"author":{"gitId":"MaYuehan"},"content":"(For all use cases below, the **System** is the `vitalconnect` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2024-03-13"},{"lineNumber":331,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":332,"author":{"gitId":"Ella-e"},"content":"**Use case: UC1 - Add a patient**","lastModifiedDate":"2024-03-04"},{"lineNumber":333,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":334,"author":{"gitId":"Ella-e"},"content":"1. User requests to add a patient by keying the patient\u0027s name and NRIC in the command.","lastModifiedDate":"2024-03-04"},{"lineNumber":335,"author":{"gitId":"MaYuehan"},"content":"2. vitalconnect adds the patient\u0027s name and NRIC.","lastModifiedDate":"2024-03-13"},{"lineNumber":336,"author":{"gitId":"-"},"content":"Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":337,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":338,"author":{"gitId":"Ella-e"},"content":"* 1a. The NRIC already exists in the system.","lastModifiedDate":"2024-03-04"},{"lineNumber":339,"author":{"gitId":"MaYuehan"},"content":" * 1a1. vitalconnect displays warning message and the existing patient\u0027s information.","lastModifiedDate":"2024-03-13"},{"lineNumber":340,"author":{"gitId":"Ella-e"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":341,"author":{"gitId":"Ella-e"},"content":"* 1b. The NRIC or name entered is invalid.","lastModifiedDate":"2024-03-04"},{"lineNumber":342,"author":{"gitId":"MaYuehan"},"content":" * 1b1. vitalconnect shows an error message.","lastModifiedDate":"2024-03-13"},{"lineNumber":343,"author":{"gitId":"Ella-e"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":345,"author":{"gitId":"Ella-e"},"content":"**Use case: UC2 - Delete a patient**","lastModifiedDate":"2024-03-04"},{"lineNumber":346,"author":{"gitId":"Ella-e"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":347,"author":{"gitId":"Ella-e"},"content":"1. User requests to delete a patient by keying the patient\u0027s name or NRIC in the command.","lastModifiedDate":"2024-03-04"},{"lineNumber":348,"author":{"gitId":"MaYuehan"},"content":"2. vitalconnect deletes the patient from database.","lastModifiedDate":"2024-03-13"},{"lineNumber":349,"author":{"gitId":"Ella-e"},"content":"Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":350,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":351,"author":{"gitId":"Ella-e"},"content":"* 1a. The patient doesn\u0027t exist in the system.","lastModifiedDate":"2024-03-04"},{"lineNumber":352,"author":{"gitId":"MaYuehan"},"content":" * 1a1. vitalconnect displays an error message.","lastModifiedDate":"2024-03-13"},{"lineNumber":353,"author":{"gitId":"Ella-e"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":355,"author":{"gitId":"Ella-e"},"content":"**Use case: UC3 - Add an appointment**","lastModifiedDate":"2024-03-04"},{"lineNumber":356,"author":{"gitId":"Ella-e"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":357,"author":{"gitId":"Ella-e"},"content":"1. User requests to add an appointment for a patient.","lastModifiedDate":"2024-03-04"},{"lineNumber":358,"author":{"gitId":"MaYuehan"},"content":"2. vitalconnect add the appointment to the database under this patient\u0027s NRIC.","lastModifiedDate":"2024-03-13"},{"lineNumber":359,"author":{"gitId":"Ella-e"},"content":"Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":360,"author":{"gitId":"Ella-e"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":361,"author":{"gitId":"Ella-e"},"content":"* 1a. Critical information (time and doctor) missing in the appointment.","lastModifiedDate":"2024-03-04"},{"lineNumber":362,"author":{"gitId":"MaYuehan"},"content":" * 1a1. vitalconnect displays a warning message.","lastModifiedDate":"2024-03-13"},{"lineNumber":363,"author":{"gitId":"Ella-e"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":364,"author":{"gitId":"Ella-e"},"content":"* 1b. The assigned patient doesn\u0027t exist in the database.","lastModifiedDate":"2024-03-04"},{"lineNumber":365,"author":{"gitId":"MaYuehan"},"content":" * 1b1. vitalconnect displays a warning message.","lastModifiedDate":"2024-03-13"},{"lineNumber":366,"author":{"gitId":"Ella-e"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":367,"author":{"gitId":"Ella-e"},"content":"* 1c. The appointment time crashes with existing time.","lastModifiedDate":"2024-03-04"},{"lineNumber":368,"author":{"gitId":"MaYuehan"},"content":" * 1c1. vitalconnect displays a warning message.","lastModifiedDate":"2024-03-13"},{"lineNumber":369,"author":{"gitId":"MaYuehan"},"content":" * 1c1. vitalconnect displays the appointment with crashing time.","lastModifiedDate":"2024-03-13"},{"lineNumber":370,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":371,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":372,"author":{"gitId":"Ella-e"},"content":"**Use case: UC4 - Delete an appointment**","lastModifiedDate":"2024-03-04"},{"lineNumber":373,"author":{"gitId":"Ella-e"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":374,"author":{"gitId":"Ella-e"},"content":"1. User requests to delete an appointment for a patient.","lastModifiedDate":"2024-03-04"},{"lineNumber":375,"author":{"gitId":"MaYuehan"},"content":"2. vitalconnect removes the appointment from the database.","lastModifiedDate":"2024-03-13"},{"lineNumber":376,"author":{"gitId":"Ella-e"},"content":"Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":377,"author":{"gitId":"Ella-e"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":378,"author":{"gitId":"Ella-e"},"content":"* 1a. The assigned patient or the appointment doesn\u0027t exist in the database.","lastModifiedDate":"2024-03-04"},{"lineNumber":379,"author":{"gitId":"MaYuehan"},"content":" * 1a1. vitalconnect displays a warning message.","lastModifiedDate":"2024-03-13"},{"lineNumber":380,"author":{"gitId":"Ella-e"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":381,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":382,"author":{"gitId":"Ella-e"},"content":"**Use case: UC5 - Modify an appointment**","lastModifiedDate":"2024-03-04"},{"lineNumber":383,"author":{"gitId":"Ella-e"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":384,"author":{"gitId":"Ella-e"},"content":"1. User requests to modify an appointment for a patient by keying the appointment\u0027s id.","lastModifiedDate":"2024-03-04"},{"lineNumber":385,"author":{"gitId":"MaYuehan"},"content":"2. vitalconnect displays the detail of the appointment to be modified.","lastModifiedDate":"2024-03-13"},{"lineNumber":386,"author":{"gitId":"Ella-e"},"content":"3. User specify which field to be modified and enters the new information.","lastModifiedDate":"2024-03-04"},{"lineNumber":387,"author":{"gitId":"MaYuehan"},"content":"4. vitalconnect saves the new appointment information.","lastModifiedDate":"2024-03-13"},{"lineNumber":388,"author":{"gitId":"MaYuehan"},"content":"5. vitalconnect displays the updated detail of the appointment modified.","lastModifiedDate":"2024-03-13"},{"lineNumber":389,"author":{"gitId":"Ella-e"},"content":"Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":390,"author":{"gitId":"Ella-e"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":391,"author":{"gitId":"Ella-e"},"content":"* 1a. The appointment refered by the id doesn\u0027t exist in the database.","lastModifiedDate":"2024-03-04"},{"lineNumber":392,"author":{"gitId":"MaYuehan"},"content":" * 1a1. vitalconnect displays an error message.","lastModifiedDate":"2024-03-13"},{"lineNumber":393,"author":{"gitId":"Ella-e"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":394,"author":{"gitId":"Ella-e"},"content":"* 1b. The id is not a valid number.","lastModifiedDate":"2024-03-04"},{"lineNumber":395,"author":{"gitId":"MaYuehan"},"content":" * 1b1. vitalconnect displays an error message.","lastModifiedDate":"2024-03-13"},{"lineNumber":396,"author":{"gitId":"Ella-e"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":397,"author":{"gitId":"Ella-e"},"content":"* 3a. The field to be modified is unrecognized.","lastModifiedDate":"2024-03-04"},{"lineNumber":398,"author":{"gitId":"MaYuehan"},"content":" * 3a1. vitalconnect displays an error message.","lastModifiedDate":"2024-03-13"},{"lineNumber":399,"author":{"gitId":"MaYuehan"},"content":" * 3a2. vitalconnect request for valid field information.","lastModifiedDate":"2024-03-13"},{"lineNumber":400,"author":{"gitId":"Ella-e"},"content":" * 3a3. User enters new field information.","lastModifiedDate":"2024-03-04"},{"lineNumber":401,"author":{"gitId":"Ella-e"},"content":" Steps 3a1-3a3 are repeated until the data entered are correct.","lastModifiedDate":"2024-03-04"},{"lineNumber":402,"author":{"gitId":"Ella-e"},"content":" Use case resumes from step 4.","lastModifiedDate":"2024-03-04"},{"lineNumber":403,"author":{"gitId":"Ella-e"},"content":"* 3b. The new information is in invalid form or contains invalid character.","lastModifiedDate":"2024-03-04"},{"lineNumber":404,"author":{"gitId":"MaYuehan"},"content":" * 3b1. vitalconnect displays an error message.","lastModifiedDate":"2024-03-13"},{"lineNumber":405,"author":{"gitId":"MaYuehan"},"content":" * 3b2. vitalconnect request for valid data entry.","lastModifiedDate":"2024-03-13"},{"lineNumber":406,"author":{"gitId":"Ella-e"},"content":" * 3b3. User enters new field information.","lastModifiedDate":"2024-03-04"},{"lineNumber":407,"author":{"gitId":"Ella-e"},"content":" Steps 3b1-3b3 are repeated until the data entered are valid.","lastModifiedDate":"2024-03-04"},{"lineNumber":408,"author":{"gitId":"Ella-e"},"content":" Use case resumes from step 4.","lastModifiedDate":"2024-03-04"},{"lineNumber":409,"author":{"gitId":"Ella-e"},"content":"* 3c. The appointment time crashes with existing time.","lastModifiedDate":"2024-03-04"},{"lineNumber":410,"author":{"gitId":"MaYuehan"},"content":" * 3c1. vitalconnect displays an error message.","lastModifiedDate":"2024-03-13"},{"lineNumber":411,"author":{"gitId":"MaYuehan"},"content":" * 3c2. vitalconnect displays the appointment with crashing time.","lastModifiedDate":"2024-03-13"},{"lineNumber":412,"author":{"gitId":"MaYuehan"},"content":" * 3c3. vitalconnect request for valid data entry.","lastModifiedDate":"2024-03-13"},{"lineNumber":413,"author":{"gitId":"Ella-e"},"content":" * 3c4. User enters new field information.","lastModifiedDate":"2024-03-04"},{"lineNumber":414,"author":{"gitId":"Ella-e"},"content":" Steps 3c1-3c4 are repeated until the time doesn\u0027t crash.","lastModifiedDate":"2024-03-04"},{"lineNumber":415,"author":{"gitId":"Ella-e"},"content":" Use case resumes from step 4.","lastModifiedDate":"2024-03-04"},{"lineNumber":416,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":417,"author":{"gitId":"javierng2knus"},"content":"**Use case: UC6 - Add specific information for a patient**","lastModifiedDate":"2024-03-06"},{"lineNumber":418,"author":{"gitId":"Ella-e"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":419,"author":{"gitId":"javierng2knus"},"content":"1. User requests to add specific information for a patient.","lastModifiedDate":"2024-03-06"},{"lineNumber":420,"author":{"gitId":"MaYuehan"},"content":"2. vitalconnect save the specific information to the database.","lastModifiedDate":"2024-03-13"},{"lineNumber":421,"author":{"gitId":"Ella-e"},"content":"Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":422,"author":{"gitId":"Ella-e"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":423,"author":{"gitId":"Ella-e"},"content":"* 1a. The patient doesn\u0027t exist in the database.","lastModifiedDate":"2024-03-04"},{"lineNumber":424,"author":{"gitId":"MaYuehan"},"content":" * 1a1. vitalconnect displays a warning message.","lastModifiedDate":"2024-03-13"},{"lineNumber":425,"author":{"gitId":"Ella-e"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":426,"author":{"gitId":"javierng2knus"},"content":"* 1b. The information is invalid.","lastModifiedDate":"2024-03-06"},{"lineNumber":427,"author":{"gitId":"MaYuehan"},"content":" * 1b1. vitalconnect displays a warning message.","lastModifiedDate":"2024-03-13"},{"lineNumber":428,"author":{"gitId":"Ella-e"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":429,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":430,"author":{"gitId":"javierng2knus"},"content":"**Use case: UC7 - Delete specific information**","lastModifiedDate":"2024-03-06"},{"lineNumber":431,"author":{"gitId":"Ella-e"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":432,"author":{"gitId":"javierng2knus"},"content":"1. User requests to delete specific information for a patient.","lastModifiedDate":"2024-03-06"},{"lineNumber":433,"author":{"gitId":"MaYuehan"},"content":"2. vitalconnect remove the specific information to the database.","lastModifiedDate":"2024-03-13"},{"lineNumber":434,"author":{"gitId":"Ella-e"},"content":"Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":435,"author":{"gitId":"Ella-e"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":436,"author":{"gitId":"javierng2knus"},"content":"* 1a. The patient or specific information doesn\u0027t exist in the database.","lastModifiedDate":"2024-03-06"},{"lineNumber":437,"author":{"gitId":"MaYuehan"},"content":" * 1a1. vitalconnect displays a warning message.","lastModifiedDate":"2024-03-13"},{"lineNumber":438,"author":{"gitId":"Ella-e"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":439,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":440,"author":{"gitId":"javierng2knus"},"content":"**Use case: UC8 - Modify specific information**","lastModifiedDate":"2024-03-06"},{"lineNumber":441,"author":{"gitId":"Ella-e"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":442,"author":{"gitId":"javierng2knus"},"content":"1. User requests to modify specific information for a patient.","lastModifiedDate":"2024-03-06"},{"lineNumber":443,"author":{"gitId":"MaYuehan"},"content":"2. vitalconnect displays the updated specific information of the patient.","lastModifiedDate":"2024-03-13"},{"lineNumber":444,"author":{"gitId":"Ella-e"},"content":"Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":445,"author":{"gitId":"Ella-e"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":446,"author":{"gitId":"javierng2knus"},"content":"* 1a. The patient or specific information doesn\u0027t exist in the database.","lastModifiedDate":"2024-03-06"},{"lineNumber":447,"author":{"gitId":"MaYuehan"},"content":" * 1a1. vitalconnect displays a warning message.","lastModifiedDate":"2024-03-13"},{"lineNumber":448,"author":{"gitId":"Ella-e"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":449,"author":{"gitId":"javierng2knus"},"content":"* 1b. The specific information is invalid.","lastModifiedDate":"2024-03-06"},{"lineNumber":450,"author":{"gitId":"MaYuehan"},"content":" * 1b1. vitalconnect displays a warning message.","lastModifiedDate":"2024-03-13"},{"lineNumber":451,"author":{"gitId":"Ella-e"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":452,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":453,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":454,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":455,"author":{"gitId":"Ella-e"},"content":"# Technical Requirements","lastModifiedDate":"2024-03-04"},{"lineNumber":456,"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":457,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":458,"author":{"gitId":"Ella-e"},"content":"# Performance Requirements","lastModifiedDate":"2024-03-04"},{"lineNumber":459,"author":{"gitId":"Ella-e"},"content":"1. Should be able to hold up to 100 patients with 1000 appointments without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2024-03-04"},{"lineNumber":460,"author":{"gitId":"Ella-e"},"content":"2. The system should respond within 3 seconds.","lastModifiedDate":"2024-03-04"},{"lineNumber":461,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":462,"author":{"gitId":"Ella-e"},"content":"# Quality Requirements","lastModifiedDate":"2024-03-04"},{"lineNumber":463,"author":{"gitId":"Ella-e"},"content":"1. 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":"2024-03-04"},{"lineNumber":464,"author":{"gitId":"Ella-e"},"content":"2. System should be robust for any form of data file crashes and invalid user input.","lastModifiedDate":"2024-03-04"},{"lineNumber":465,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":466,"author":{"gitId":"Ella-e"},"content":"# Scope","lastModifiedDate":"2024-03-04"},{"lineNumber":467,"author":{"gitId":"Ella-e"},"content":"1. The product will \u003cstrong\u003eNOT\u003c/strong\u003e enforce any form of protection of the generated data file containing patients\u0027 information. The organization should be responsible for ensuring the safety of their patient\u0027s data.","lastModifiedDate":"2024-03-04"},{"lineNumber":468,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":469,"author":{"gitId":"Ella-e"},"content":"# Process Requirements","lastModifiedDate":"2024-03-04"},{"lineNumber":470,"author":{"gitId":"Ella-e"},"content":"1. The project is expected to grow in breadth-first iterative process.","lastModifiedDate":"2024-03-04"},{"lineNumber":471,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":472,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":473,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":474,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09"},{"lineNumber":475,"author":{"gitId":"SeaHogs"},"content":"* **CLI**: Acronym for Command Line Interface, a text-based interface where users interact with the application by typing commands.","lastModifiedDate":"2024-03-06"},{"lineNumber":476,"author":{"gitId":"MaYuehan"},"content":"* **vitalconnect**: The system being described, representing the medical management application.","lastModifiedDate":"2024-03-13"},{"lineNumber":477,"author":{"gitId":"MaYuehan"},"content":"* **Use Case**: A specific scenario or situation in which a user interacts with the vitalconnect system to achieve a specific goal.","lastModifiedDate":"2024-03-13"},{"lineNumber":478,"author":{"gitId":"SeaHogs"},"content":"* **MSS (Main Success Scenario)**: The primary sequence of steps in a use case that represents the successful accomplishment of the user\u0027s goal.","lastModifiedDate":"2024-03-06"},{"lineNumber":479,"author":{"gitId":"SeaHogs"},"content":"* **Extensions**: Additional scenarios that may occur during the execution of a use case, usually describing alternative paths or error-handling situations.","lastModifiedDate":"2024-03-06"},{"lineNumber":480,"author":{"gitId":"SeaHogs"},"content":"* **NRIC**: National Registration Identity Card, a unique identification number used in some countries.","lastModifiedDate":"2024-03-06"},{"lineNumber":481,"author":{"gitId":"SeaHogs"},"content":"* **Database**: A structured set of data stored electronically, in this context, referring to the storage system for patient and appointment information.","lastModifiedDate":"2024-03-06"},{"lineNumber":482,"author":{"gitId":"MaYuehan"},"content":"* **Appointment**: A scheduled meeting or arrangement, often referring to a scheduled medical consultation in the context of vitalconnect.","lastModifiedDate":"2024-03-13"},{"lineNumber":483,"author":{"gitId":"SeaHogs"},"content":"* **Field**: In the context of modifying an appointment, a specific piece of information within the appointment details that the user can choose to modify (e.g., time, doctor).","lastModifiedDate":"2024-03-06"},{"lineNumber":484,"author":{"gitId":"SeaHogs"},"content":"* **ID (Identification Number)**: A unique identifier associated with a specific appointment, used to distinguish and reference individual appointments.","lastModifiedDate":"2024-03-06"},{"lineNumber":485,"author":{"gitId":"MaYuehan"},"content":"* **Warning Message**: An alert displayed by the vitalconnect system to notify the user of a potential issue or discrepancy.","lastModifiedDate":"2024-03-13"},{"lineNumber":486,"author":{"gitId":"MaYuehan"},"content":"* **Error Message**: A notification displayed by the vitalconnect system to inform the user about a critical issue or mistake.","lastModifiedDate":"2024-03-13"},{"lineNumber":487,"author":{"gitId":"SeaHogs"},"content":"* **Crashing Time**: A situation where the proposed time for an appointment conflicts with an existing appointment time in the system.","lastModifiedDate":"2024-03-06"},{"lineNumber":488,"author":{"gitId":"SeaHogs"},"content":"* **Invalid Data Entry**: Information entered by the user that does not meet the required format or criteria.","lastModifiedDate":"2024-03-06"},{"lineNumber":489,"author":{"gitId":"SeaHogs"},"content":"* **Valid Data Entry**: Information entered by the user that meets the required format or criteria.","lastModifiedDate":"2024-03-06"},{"lineNumber":490,"author":{"gitId":"javierng2knus"},"content":"* **Tooltip**: A common graphical user interface element in which, when hovering over a screen element or component, a text box displays information about that element.","lastModifiedDate":"2024-03-06"},{"lineNumber":491,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":492,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":493,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":494,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":495,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":496,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":497,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":498,"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":499,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":500,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":501,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":502,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":503,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":504,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":505,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":506,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":507,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":508,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":509,"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":510,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":511,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":512,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":513,"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":514,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":515,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":516,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":517,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":518,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":519,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":520,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":521,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":522,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":523,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":524,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":525,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":526,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":527,"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":528,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":529,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":530,"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":531,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":532,"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":533,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":534,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":535,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":536,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":537,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":538,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":539,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":540,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":541,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":542,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":543,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"javierng2knus":52,"MaYuehan":40,"Ella-e":92,"-":349,"SeaHogs":10}},{"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":"MaYuehan"},"content":" 1. Run the `vitalconnect.Main` and try a few commands.","lastModifiedDate":"2024-03-13"},{"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":{"MaYuehan":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":"MaYuehan"},"content":" e.g. `vitalconnect.commons.StringUtilTest`","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"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":34,"author":{"gitId":"MaYuehan"},"content":" e.g. `vitalconnect.storage.StorageManagerTest`","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"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":36,"author":{"gitId":"MaYuehan"},"content":" e.g. `vitalconnect.logic.LogicManagerTest`","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"MaYuehan":3,"-":33}},{"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":"-"},"content":"AddressBook Level 3 (AB3) is a **desktop app for managing contacts, 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, AB3 can get your contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2020-05-23"},{"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":"-"},"content":"1. Download the latest `addressbook.jar` from [here](https://github.com/se-edu/addressbook-level3/releases).","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your AddressBook.","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar addressbook.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2023-01-01"},{"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":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"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":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2023-01-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01"},{"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":"-"},"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":"-"},"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":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":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23"},{"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":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"### Adding a person: `add`","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"Adds a person to the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​`","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Tip:**","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"SeaHogs"},"content":"A person can have any number of allergyTags (including 0)","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"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":87,"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":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"### Listing all persons : `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"Shows a list of all persons in the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"### Editing a person : `edit`","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"Edits an existing person in the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"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":102,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"SeaHogs"},"content":"* When editing allergyTags, the existing allergyTags of the person will be removed i.e adding of allergyTags is not cumulative.","lastModifiedDate":"2024-03-18"},{"lineNumber":105,"author":{"gitId":"SeaHogs"},"content":"* You can remove all the person’s allergyTags by typing `t/` without","lastModifiedDate":"2024-03-18"},{"lineNumber":106,"author":{"gitId":"SeaHogs"},"content":" specifying any allergyTags after it.","lastModifiedDate":"2024-03-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"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":110,"author":{"gitId":"SeaHogs"},"content":"* `edit 2 n/Betsy Crower t/` Edits the name of the 2nd person to be `Betsy Crower` and clears all existing allergyTags.","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"### Locating persons by name: `find`","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"Finds persons whose names contain any of the given keywords.","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":"* `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":"Deletes the specified person from the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"* Deletes the person at the specified `INDEX`.","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"* `list` followed by `delete 2` deletes the 2nd person in the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"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":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":"Clears all entries from the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"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":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":162,"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":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":164,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e:exclamation: **Caution:**","lastModifiedDate":"2021-02-04"},{"lineNumber":165,"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.\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":166,"author":{"gitId":"-"},"content":"Furthermore, certain edits can cause the AddressBook to behave in unexpected ways (e.g., if a value entered is outside of the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.","lastModifiedDate":"2024-02-09"},{"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":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04"},{"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":"## 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":"-"},"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":193,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"**Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3`","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"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":196,"author":{"gitId":"-"},"content":"**Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake`","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":"**List** | `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"-":193,"SeaHogs":5}},{"path":"docs/diagrams/CommitActivityDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"skin rose","lastModifiedDate":"2023-07-27"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ActivityFontSize 15","lastModifiedDate":"2023-07-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam ArrowFontSize 12","lastModifiedDate":"2023-07-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"start","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":":User executes command;","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u0027Since the beta syntax does not support placing the condition outside the","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u0027diamond we place it as the true branch instead.","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":"if () then ([command commits Clinic])","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":" :Purge redundant states;","lastModifiedDate":"2020-12-12"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":" :Save Clinic to","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":" clinicStateList;","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":"else ([else])","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"endif","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"stop","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"Ella-e":3,"-":15}},{"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":"Ella-e"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyClinic\" as ReadOnlyAddressClinic","lastModifiedDate":"2024-03-22"},{"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":"Ella-e"},"content":"Class Clinic","lastModifiedDate":"2024-03-22"},{"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":"-"},"content":"Class UniquePersonList","lastModifiedDate":"2021-07-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Class Person","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":"Class Identification\\nInformation","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":"Class Nric","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":"Class Name","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":"Class Contact\\nInformation","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":"Class Address","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Class Email","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"Class Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"Ella-e"},"content":"Class Medical\\nInformation","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"Ella-e"},"content":"Class Height","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"Ella-e"},"content":"Class Weight","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"Ella-e"},"content":"Class Allergy","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"Ella-e"},"content":"Class UniqueAppointmentList","lastModifiedDate":"2024-03-22"},{"lineNumber":30,"author":{"gitId":"Ella-e"},"content":"Class Appointment","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"Ella-e"},"content":"Class Doctor","lastModifiedDate":"2024-03-22"},{"lineNumber":32,"author":{"gitId":"Ella-e"},"content":"Class Patient","lastModifiedDate":"2024-03-22"},{"lineNumber":33,"author":{"gitId":"Ella-e"},"content":"Class Time","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":"Class I #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":41,"author":{"gitId":"Ella-e"},"content":"Clinic .up.|\u003e ReadOnlyAddressClinic","lastModifiedDate":"2024-03-22"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"ModelManager .up.|\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"Model .right.\u003e ReadOnlyUserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":45,"author":{"gitId":"Ella-e"},"content":"Model .left.\u003e ReadOnlyAddressClinic","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"Ella-e"},"content":"ModelManager --\u003e \"1\" Clinic","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"Ella-e"},"content":"ModelManager --\u003e \"1\" UserPrefs","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"-"},"content":"UserPrefs .up.|\u003e ReadOnlyUserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":50,"author":{"gitId":"Ella-e"},"content":"Clinic *--\u003e \"1\" UniquePersonList","lastModifiedDate":"2024-03-22"},{"lineNumber":51,"author":{"gitId":"-"},"content":"UniquePersonList --\u003e \"~* all\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":52,"author":{"gitId":"Ella-e"},"content":"Person *--\u003e Identification\\nInformation","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"Ella-e"},"content":"Identification\\nInformation *--\u003e Nric","lastModifiedDate":"2024-03-22"},{"lineNumber":54,"author":{"gitId":"Ella-e"},"content":"Identification\\nInformation *--\u003e Name","lastModifiedDate":"2024-03-22"},{"lineNumber":55,"author":{"gitId":"Ella-e"},"content":"Person *--\u003e Contact\\nInformation","lastModifiedDate":"2024-03-22"},{"lineNumber":56,"author":{"gitId":"Ella-e"},"content":"Contact\\nInformation *--\u003e Phone","lastModifiedDate":"2024-03-22"},{"lineNumber":57,"author":{"gitId":"Ella-e"},"content":"Contact\\nInformation *--\u003e Email","lastModifiedDate":"2024-03-22"},{"lineNumber":58,"author":{"gitId":"Ella-e"},"content":"Contact\\nInformation *--\u003e Address","lastModifiedDate":"2024-03-22"},{"lineNumber":59,"author":{"gitId":"Ella-e"},"content":"Person *--\u003e Medical\\nInformation","lastModifiedDate":"2024-03-22"},{"lineNumber":60,"author":{"gitId":"Ella-e"},"content":"Medical\\nInformation *--\u003e Height","lastModifiedDate":"2024-03-22"},{"lineNumber":61,"author":{"gitId":"Ella-e"},"content":"Medical\\nInformation *--\u003e Weight","lastModifiedDate":"2024-03-22"},{"lineNumber":62,"author":{"gitId":"Ella-e"},"content":"Medical\\nInformation *--\u003e Allergy","lastModifiedDate":"2024-03-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":64,"author":{"gitId":"-"},"content":"Person -[hidden]up--\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":"UniquePersonList -[hidden]right-\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":"Name -[hidden]right-\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":68,"author":{"gitId":"-"},"content":"Phone -[hidden]right-\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":69,"author":{"gitId":"-"},"content":"Address -[hidden]right-\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":71,"author":{"gitId":"Ella-e"},"content":"Clinic *--\u003e \"1\" UniqueAppointmentList","lastModifiedDate":"2024-03-22"},{"lineNumber":72,"author":{"gitId":"Ella-e"},"content":"UniqueAppointmentList --\u003e \"~* all\" Appointment","lastModifiedDate":"2024-03-22"},{"lineNumber":73,"author":{"gitId":"Ella-e"},"content":"Appointment *--\u003e Doctor","lastModifiedDate":"2024-03-22"},{"lineNumber":74,"author":{"gitId":"Ella-e"},"content":"Appointment *--\u003e Patient","lastModifiedDate":"2024-03-22"},{"lineNumber":75,"author":{"gitId":"Ella-e"},"content":"Appointment *--\u003e Time","lastModifiedDate":"2024-03-22"},{"lineNumber":76,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":"ModelManager --\u003e \"~* filtered\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":78,"author":{"gitId":"Ella-e"},"content":"ModelManager --\u003e \"~* filtered\" Appointment","lastModifiedDate":"2024-03-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"Ella-e":39,"-":40}},{"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":"Ella-e"},"content":"Class ClinicParser","lastModifiedDate":"2024-03-22"},{"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":"-"},"content":"Class Prefix","lastModifiedDate":"2021-07-31"},{"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":"Ella-e"},"content":"HiddenOutside ..\u003e ClinicParser","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":24,"author":{"gitId":"Ella-e"},"content":"ClinicParser .down.\u003e XYZCommandParser: \u003c\u003ccreate\u003e\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":26,"author":{"gitId":"-"},"content":"XYZCommandParser ..\u003e XYZCommand : \u003c\u003ccreate\u003e\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":27,"author":{"gitId":"Ella-e"},"content":"ClinicParser ..\u003e Command : \u003c\u003cuse\u003e\u003e","lastModifiedDate":"2024-03-22"},{"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":"-"},"content":"CliSyntax ..\u003e Prefix","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"XYZCommandParser ..\u003e ParserUtil","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":"ParserUtil .down.\u003e Prefix","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"ArgumentTokenizer .down.\u003e Prefix","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"XYZCommand -up-|\u003e Command","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2021-07-31"}],"authorContributionMap":{"Ella-e":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":"Ella-e"},"content":"package \"Clinic Storage\" #F4F6F6{","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nClinicStorage\" as AddressBookStorage","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":"Class JsonClinicStorage","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":"Class JsonSerializableClinic","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":"Class JsonAdaptedPerson","lastModifiedDate":"2021-07-31"},{"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":"Ella-e"},"content":"JsonClinicStorage .up.|\u003e AddressBookStorage","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"Ella-e"},"content":"JsonClinicStorage ..\u003e JsonSerializableClinic","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"Ella-e"},"content":"JsonSerializableClinic --\u003e \"*\" JsonAdaptedPerson","lastModifiedDate":"2024-03-22"},{"lineNumber":41,"author":{"gitId":"-"},"content":"JsonAdaptedPerson --\u003e \"*\" JsonAdaptedTag","lastModifiedDate":"2021-07-31"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-03-31"},{"lineNumber":43,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"Ella-e":7,"-":36}},{"path":"docs/team/ella-e.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"---","lastModifiedDate":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"layout: page","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"title: Mu Zhaoyu\u0027s Project Portfolio Page","lastModifiedDate":"2024-03-04"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"---","lastModifiedDate":"2024-03-04"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"## Project: vitalconnect","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":"This product is doctors or any healthcare workers that have to keep track of a lot ","lastModifiedDate":"2024-03-04"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":"of patient information and requires the information at a fast pace, ","lastModifiedDate":"2024-03-04"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":"thus preferring to have a simple UI such as a CLI instead of a complex GUI, ","lastModifiedDate":"2024-03-04"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":"with the added benefit of having typed user commands for an even faster retrieval of information.","lastModifiedDate":"2024-03-04"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-04"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":"### **New Feature**: ","lastModifiedDate":"2024-03-04"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":"1. __Create an appointment__","lastModifiedDate":"2024-03-04"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":"* What it does: allows the user to create an appointment for a patient with the time and date.","lastModifiedDate":"2024-03-04"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":"* Justification: This feature improves the product significantly as it is the fundamental functions for the project.","lastModifiedDate":"2024-03-04"},{"lineNumber":21,"author":{"gitId":"Ella-e"},"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":"2024-03-04"},{"lineNumber":22,"author":{"gitId":"Ella-e"},"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":"2024-03-04"},{"lineNumber":23,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":24,"author":{"gitId":"Ella-e"},"content":"2. __Delete an appointment__","lastModifiedDate":"2024-03-04"},{"lineNumber":25,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":26,"author":{"gitId":"Ella-e"},"content":"* What it does: allows the user to delete an appointment by specifying the appointment index and the patient\u0027s name.","lastModifiedDate":"2024-03-04"},{"lineNumber":27,"author":{"gitId":"Ella-e"},"content":"* Justification: This feature improves the product significantly as it is the fundamental functions for the project.","lastModifiedDate":"2024-03-04"},{"lineNumber":28,"author":{"gitId":"Ella-e"},"content":"* Credits:","lastModifiedDate":"2024-03-04"},{"lineNumber":29,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":30,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":31,"author":{"gitId":"Ella-e"},"content":"3. __List appointments__","lastModifiedDate":"2024-03-04"},{"lineNumber":32,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":33,"author":{"gitId":"Ella-e"},"content":"* What it does: allows the user to list out all the upcoming appointments that ordering by time.","lastModifiedDate":"2024-03-04"},{"lineNumber":34,"author":{"gitId":"Ella-e"},"content":"* Justification: This feature improves the product significantly as it is the fundamental functions for the project.","lastModifiedDate":"2024-03-04"},{"lineNumber":35,"author":{"gitId":"Ella-e"},"content":"* Credits:","lastModifiedDate":"2024-03-04"},{"lineNumber":36,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":37,"author":{"gitId":"Ella-e"},"content":"### **Documentation**:","lastModifiedDate":"2024-03-04"},{"lineNumber":38,"author":{"gitId":"Ella-e"},"content":"User Guide:","lastModifiedDate":"2024-03-04"},{"lineNumber":39,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":40,"author":{"gitId":"Ella-e"},"content":"* Added documentation for the features `Create Appointments`, `Delete Appointments` and `List Appointments` [\\#72]()","lastModifiedDate":"2024-03-04"},{"lineNumber":41,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":42,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"MaYuehan":1,"Ella-e":41}},{"path":"docs/team/mayuehan.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"---","lastModifiedDate":"2024-02-25"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"layout: page","lastModifiedDate":"2024-02-25"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"title: Ma Yuehan\u0027s Project Portfolio Page","lastModifiedDate":"2024-02-25"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"---","lastModifiedDate":"2024-02-25"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"## Project: vitalconnect","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"This product is doctors or any healthcare workers that have to keep track of a lot ","lastModifiedDate":"2024-02-25"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"of patient information and requires the information at a fast pace, ","lastModifiedDate":"2024-02-25"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"thus preferring to have a simple UI such as a CLI instead of a complex GUI, ","lastModifiedDate":"2024-02-25"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"with the added benefit of having typed user commands for an even faster retrieval of information.","lastModifiedDate":"2024-02-25"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-02-25"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":"### **New Feature**: ","lastModifiedDate":"2024-02-25"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":"1. __Create an appointment__","lastModifiedDate":"2024-02-25"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":"* What it does: allows the user to create an appointment for a patient with the time and date.","lastModifiedDate":"2024-02-25"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":"* Justification: This feature improves the product significantly as it is the fundamental functions for the project.","lastModifiedDate":"2024-02-25"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"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":"2024-02-25"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"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":"2024-02-25"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":"2. __Delete an appointment__","lastModifiedDate":"2024-02-25"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":"* What it does: allows the user to delete an appointment by specifying the appointment index and the patient\u0027s name.","lastModifiedDate":"2024-02-25"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":"* Justification: This feature improves the product significantly as it is the fundamental functions for the project.","lastModifiedDate":"2024-02-25"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":"* Credits:","lastModifiedDate":"2024-02-25"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":"3. __List appointments__","lastModifiedDate":"2024-02-25"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":"* What it does: allows the user to list out all the upcoming appointments that ordering by time.","lastModifiedDate":"2024-02-25"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":"* Justification: This feature improves the product significantly as it is the fundamental functions for the project.","lastModifiedDate":"2024-02-25"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":"* Credits:","lastModifiedDate":"2024-02-25"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":"### **Documentation**:","lastModifiedDate":"2024-02-25"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":"User Guide:","lastModifiedDate":"2024-02-25"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":"* Added documentation for the features `Create Appointments`, `Delete Appointments` and `List Appointments` [\\#72]()","lastModifiedDate":"2024-02-25"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-25"}],"authorContributionMap":{"MaYuehan":42}},{"path":"docs/team/seahogs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"---","lastModifiedDate":"2024-03-06"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"layout: page","lastModifiedDate":"2024-03-06"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"title: Mu Zhaoyu\u0027s Project Portfolio Page","lastModifiedDate":"2024-03-06"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"---","lastModifiedDate":"2024-03-06"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"## Project: vitalconnect","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":"This product is doctors or any healthcare workers that have to keep track of a lot","lastModifiedDate":"2024-03-06"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":"of patient information and requires the information at a fast pace,","lastModifiedDate":"2024-03-06"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":"thus preferring to have a simple UI such as a CLI instead of a complex GUI,","lastModifiedDate":"2024-03-06"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":"with the added benefit of having typed user commands for an even faster retrieval of information.","lastModifiedDate":"2024-03-06"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-06"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":"### **New Feature**:","lastModifiedDate":"2024-03-06"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":"1. __Create an appointment__","lastModifiedDate":"2024-03-06"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":"* What it does: allows the user to create an appointment for a patient with the time and date.","lastModifiedDate":"2024-03-06"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":"* Justification: This feature improves the product significantly as it is the fundamental functions for the project.","lastModifiedDate":"2024-03-06"},{"lineNumber":21,"author":{"gitId":"Ella-e"},"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":"2024-03-06"},{"lineNumber":22,"author":{"gitId":"Ella-e"},"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":"2024-03-06"},{"lineNumber":23,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":24,"author":{"gitId":"Ella-e"},"content":"2. __Delete an appointment__","lastModifiedDate":"2024-03-06"},{"lineNumber":25,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":26,"author":{"gitId":"Ella-e"},"content":"* What it does: allows the user to delete an appointment by specifying the appointment index and the patient\u0027s name.","lastModifiedDate":"2024-03-06"},{"lineNumber":27,"author":{"gitId":"Ella-e"},"content":"* Justification: This feature improves the product significantly as it is the fundamental functions for the project.","lastModifiedDate":"2024-03-06"},{"lineNumber":28,"author":{"gitId":"Ella-e"},"content":"* Credits:","lastModifiedDate":"2024-03-06"},{"lineNumber":29,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":30,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":31,"author":{"gitId":"Ella-e"},"content":"3. __List appointments__","lastModifiedDate":"2024-03-06"},{"lineNumber":32,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":33,"author":{"gitId":"Ella-e"},"content":"* What it does: allows the user to list out all the upcoming appointments that ordering by time.","lastModifiedDate":"2024-03-06"},{"lineNumber":34,"author":{"gitId":"Ella-e"},"content":"* Justification: This feature improves the product significantly as it is the fundamental functions for the project.","lastModifiedDate":"2024-03-06"},{"lineNumber":35,"author":{"gitId":"Ella-e"},"content":"* Credits:","lastModifiedDate":"2024-03-06"},{"lineNumber":36,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":37,"author":{"gitId":"Ella-e"},"content":"### **Documentation**:","lastModifiedDate":"2024-03-06"},{"lineNumber":38,"author":{"gitId":"Ella-e"},"content":"User Guide:","lastModifiedDate":"2024-03-06"},{"lineNumber":39,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":40,"author":{"gitId":"Ella-e"},"content":"* Added documentation for the features `Create Appointments`, `Delete Appointments` and `List Appointments` [\\#72]()","lastModifiedDate":"2024-03-06"},{"lineNumber":41,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":42,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"MaYuehan":1,"Ella-e":41}},{"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":"MaYuehan"},"content":"package vitalconnect.logic.commands;","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":30,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Changes the remark of an existing person in the address book.","lastModifiedDate":"2020-07-29"},{"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":"-"},"content":" + \": Edits the remark of the person identified \"","lastModifiedDate":"2021-08-01"},{"lineNumber":69,"author":{"gitId":"-"},"content":" + \"by the index number used in the last person listing. \"","lastModifiedDate":"2020-07-29"},{"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":"MaYuehan"},"content":"import static vitalconnect.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":" * @param index of the person in the filtered person list to edit the remark","lastModifiedDate":"2020-07-29"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * @param remark of the person to be updated to","lastModifiedDate":"2020-07-29"},{"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":"MaYuehan"},"content":"Create a `RemarkCommandParser` class in the `vitalconnect.logic.parser` package. The class must extend the `Parser` interface.","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":" * object that maps prefixes to their respective argument values. Only the","lastModifiedDate":"2020-07-29"},{"lineNumber":155,"author":{"gitId":"-"},"content":" * given prefixes will be recognized in the arguments string.","lastModifiedDate":"2020-07-29"},{"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":"-"},"content":" * {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2020-07-29"},{"lineNumber":159,"author":{"gitId":"-"},"content":" * @param prefixes Prefixes to tokenize the arguments string with","lastModifiedDate":"2020-07-29"},{"lineNumber":160,"author":{"gitId":"-"},"content":" * @return ArgumentMultimap object that maps prefixes to their","lastModifiedDate":"2020-07-29"},{"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":"-"},"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":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":"-"},"content":" * Returns the last value of {@code prefix}.","lastModifiedDate":"2020-07-29"},{"lineNumber":172,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":173,"author":{"gitId":"-"},"content":"public Optional\u003cString\u003e getValue(Prefix prefix) {","lastModifiedDate":"2020-07-29"},{"lineNumber":174,"author":{"gitId":"-"},"content":" List\u003cString\u003e values \u003d getAllValues(prefix);","lastModifiedDate":"2020-07-29"},{"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":"-"},"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":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":"MaYuehan"},"content":"Create a new `Remark` in `vitalconnect.model.person`. Since a `Remark` is a field that is similar to `Address`, we can reuse a significant bit of code.","lastModifiedDate":"2024-03-13"},{"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":"-"},"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":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":243,"author":{"gitId":"MaYuehan"},"content":"Simply add the following to [`vitalconnect.ui.PersonCard`](https://github.com/se-edu/addressbook-level3/commit/850b78879582f38accb05dd20c245963c65ea599#diff-639834f1e05afe2276a86372adf0fe5f69314642c2d93cfa543d614ce5a76688).","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":":exclamation: You must delete AddressBook’s storage file located at `/data/addressbook.json` before running it! Not doing so will cause AddressBook to default to an empty address book!","lastModifiedDate":"2020-07-29"},{"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":"-"},"content":"public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2020-07-29"},{"lineNumber":313,"author":{"gitId":"-"},"content":" //...","lastModifiedDate":"2020-07-29"},{"lineNumber":314,"author":{"gitId":"-"},"content":" remark.setText(person.getRemark().value);","lastModifiedDate":"2020-07-29"},{"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":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2020-07-29"},{"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":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2020-07-29"},{"lineNumber":345,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new Person(","lastModifiedDate":"2021-08-01"},{"lineNumber":346,"author":{"gitId":"-"},"content":" personToEdit.getName(), personToEdit.getPhone(), personToEdit.getEmail(),","lastModifiedDate":"2021-08-01"},{"lineNumber":347,"author":{"gitId":"-"},"content":" personToEdit.getAddress(), remark, personToEdit.getTags());","lastModifiedDate":"2020-07-29"},{"lineNumber":348,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":349,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2020-07-29"},{"lineNumber":350,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2020-07-29"},{"lineNumber":351,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":352,"author":{"gitId":"-"},"content":" return new CommandResult(generateSuccessMessage(editedPerson));","lastModifiedDate":"2020-07-29"},{"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":"-"},"content":" * {@code personToEdit}.","lastModifiedDate":"2020-07-29"},{"lineNumber":359,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":360,"author":{"gitId":"-"},"content":" private String generateSuccessMessage(Person personToEdit) {","lastModifiedDate":"2020-07-29"},{"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":"-"},"content":" return String.format(message, personToEdit);","lastModifiedDate":"2020-07-29"},{"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":{"MaYuehan":6,"-":393}},{"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":"MaYuehan"},"content":"The `address` field in `Person` is actually an instance of the `vitalconnect.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":"2024-03-13"},{"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":"-"},"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":"-"},"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":{"MaYuehan":1,"-":111}},{"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":"MaYuehan"},"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 `vitalconnect.logic.Logic`.","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"A quick look at the `vitalconnect.logic.Logic` (an extract given below) confirms that this indeed might be what we’re looking for.","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2020-05-23"},{"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":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, editedPerson));","lastModifiedDate":"2020-05-23"},{"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":"-"},"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":205,"author":{"gitId":"-"},"content":" * it uses the `updateFilteredPersonList` method to ask the `Model` to populate the \u0027filtered list\u0027 with _all_ persons.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":206,"author":{"gitId":"-"},"content":" FYI, The \u0027filtered list\u0027 is the list of persons 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 persons so that the user can see the edited person along with all other persons. If this was a `find` command, we would be setting that list to contain the search results instead.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":207,"author":{"gitId":"-"},"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 persons is being tracked.","lastModifiedDate":"2021-07-31"},{"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":"-"},"content":" persons.addAll(","lastModifiedDate":"2020-05-23"},{"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":{"MaYuehan":2,"-":299}},{"path":"src/main/java/vitalconnect/AppParameters.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.commons.core.LogsCenter;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.util.FileUtil;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-13"},{"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":{"MaYuehan":4,"-":69}},{"path":"src/main/java/vitalconnect/Main.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.commons.core.LogsCenter;","lastModifiedDate":"2024-03-13"},{"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":{"MaYuehan":2,"-":39}},{"path":"src/main/java/vitalconnect/MainApp.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import java.util.List;","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.application.Application;","lastModifiedDate":"2016-08-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-26"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.core.Config;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.core.LogsCenter;","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.core.Version;","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.util.ConfigUtil;","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.util.StringUtil;","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.Logic;","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.LogicManager;","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Appointment;","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Clinic;","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.ModelManager;","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.ReadOnlyClinic;","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.UserPrefs;","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.util.SampleDataUtil;","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.storage.AppointmentStorage;","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.storage.ClinicStorage;","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.storage.JsonAppointmentStorage;","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.storage.JsonClinicStorage;","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.storage.JsonUserPrefsStorage;","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.storage.Storage;","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.storage.StorageManager;","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.storage.UserPrefsStorage;","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.ui.Ui;","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.ui.UiManager;","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Runs the application.","lastModifiedDate":"2019-02-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":"public class MainApp extends Application {","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final Version VERSION \u003d new Version(0, 2, 2, true);","lastModifiedDate":"2023-08-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(MainApp.class);","lastModifiedDate":"2017-04-01"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":49,"author":{"gitId":"-"},"content":" protected Ui ui;","lastModifiedDate":"2016-09-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" protected Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":" protected Storage storage;","lastModifiedDate":"2016-09-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":" protected Model model;","lastModifiedDate":"2016-09-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":" protected Config config;","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":56,"author":{"gitId":"MaYuehan"},"content":" * Initializes the application\u0027s primary components.","lastModifiedDate":"2024-03-23"},{"lineNumber":57,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void init() throws Exception {","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"javierng2knus"},"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 Clinic ]\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"-"},"content":" super.init();","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" AppParameters appParameters \u003d AppParameters.parse(getParameters());","lastModifiedDate":"2018-04-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" config \u003d initConfig(appParameters.getConfigPath());","lastModifiedDate":"2018-04-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" initLogging(config);","lastModifiedDate":"2023-07-29"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":67,"author":{"gitId":"-"},"content":" UserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(config.getUserPrefsFilePath());","lastModifiedDate":"2017-02-25"},{"lineNumber":68,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d initPrefs(userPrefsStorage);","lastModifiedDate":"2018-12-06"},{"lineNumber":69,"author":{"gitId":"javierng2knus"},"content":" ClinicStorage clinicStorage \u003d new JsonClinicStorage(userPrefs.getClinicFilePath());","lastModifiedDate":"2024-03-11"},{"lineNumber":70,"author":{"gitId":"MaYuehan"},"content":" AppointmentStorage appointmentStorage \u003d new JsonAppointmentStorage(userPrefs.getAppointmentFilePath());","lastModifiedDate":"2024-03-23"},{"lineNumber":71,"author":{"gitId":"MaYuehan"},"content":" storage \u003d new StorageManager(clinicStorage, userPrefsStorage, appointmentStorage);","lastModifiedDate":"2024-03-23"},{"lineNumber":72,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":" model \u003d initModelManager(storage, userPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":" ui \u003d new UiManager(logic);","lastModifiedDate":"2018-12-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":82,"author":{"gitId":"javierng2knus"},"content":" * Returns a {@code ModelManager} with the data from {@code storage}\u0027s clinic and {@code userPrefs}. \u003cbr\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":83,"author":{"gitId":"javierng2knus"},"content":" * The data from the sample clinic will be used instead if {@code storage}\u0027s clinic is not found,","lastModifiedDate":"2024-03-11"},{"lineNumber":84,"author":{"gitId":"javierng2knus"},"content":" * or an empty clinic will be used instead if errors occur when reading {@code storage}\u0027s clinic.","lastModifiedDate":"2024-03-11"},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":86,"author":{"gitId":"-"},"content":" private Model initModelManager(Storage storage, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":87,"author":{"gitId":"javierng2knus"},"content":" logger.info(\"Using data file : \" + storage.getClinicFilePath());","lastModifiedDate":"2024-03-11"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":89,"author":{"gitId":"javierng2knus"},"content":" Optional\u003cReadOnlyClinic\u003e clinicOptional;","lastModifiedDate":"2024-03-11"},{"lineNumber":90,"author":{"gitId":"javierng2knus"},"content":" ReadOnlyClinic initialData;","lastModifiedDate":"2024-03-11"},{"lineNumber":91,"author":{"gitId":"MaYuehan"},"content":" Optional\u003cList\u003cAppointment\u003e\u003e appointmentsOptional;","lastModifiedDate":"2024-03-23"},{"lineNumber":92,"author":{"gitId":"MaYuehan"},"content":" List\u003cAppointment\u003e appointments;","lastModifiedDate":"2024-03-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":94,"author":{"gitId":"javierng2knus"},"content":" clinicOptional \u003d storage.readClinic();","lastModifiedDate":"2024-03-11"},{"lineNumber":95,"author":{"gitId":"javierng2knus"},"content":" if (!clinicOptional.isPresent()) {","lastModifiedDate":"2024-03-11"},{"lineNumber":96,"author":{"gitId":"javierng2knus"},"content":" logger.info(\"Creating a new data file \" + storage.getClinicFilePath()","lastModifiedDate":"2024-03-11"},{"lineNumber":97,"author":{"gitId":"javierng2knus"},"content":" + \" populated with a sample Clinic.\");","lastModifiedDate":"2024-03-11"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":99,"author":{"gitId":"javierng2knus"},"content":" initialData \u003d clinicOptional.orElseGet(SampleDataUtil::getSampleClinic);","lastModifiedDate":"2024-03-11"},{"lineNumber":100,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":101,"author":{"gitId":"javierng2knus"},"content":" logger.warning(\"Data file at \" + storage.getClinicFilePath() + \" could not be loaded.\"","lastModifiedDate":"2024-03-11"},{"lineNumber":102,"author":{"gitId":"javierng2knus"},"content":" + \" Will be starting with an empty Clinic.\");","lastModifiedDate":"2024-03-11"},{"lineNumber":103,"author":{"gitId":"javierng2knus"},"content":" initialData \u003d new Clinic();","lastModifiedDate":"2024-03-11"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2024-03-23"},{"lineNumber":107,"author":{"gitId":"MaYuehan"},"content":" appointmentsOptional \u003d storage.readAppointments();","lastModifiedDate":"2024-03-23"},{"lineNumber":108,"author":{"gitId":"MaYuehan"},"content":" if (!appointmentsOptional.isPresent()) {","lastModifiedDate":"2024-03-23"},{"lineNumber":109,"author":{"gitId":"MaYuehan"},"content":" logger.info(\"Appointment data file not found. Will be starting with an empty appointment list.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":111,"author":{"gitId":"MaYuehan"},"content":" appointments \u003d appointmentsOptional.orElseGet(Collections::emptyList);","lastModifiedDate":"2024-03-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2024-03-23"},{"lineNumber":113,"author":{"gitId":"MaYuehan"},"content":" logger.warning(\"Data file for appointments could not be loaded. \"","lastModifiedDate":"2024-03-23"},{"lineNumber":114,"author":{"gitId":"MaYuehan"},"content":" + \"Will be starting with an empty appointment list.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":115,"author":{"gitId":"MaYuehan"},"content":" appointments \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":118,"author":{"gitId":"MaYuehan"},"content":" return new ModelManager(initialData, userPrefs, appointments);","lastModifiedDate":"2024-03-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":121,"author":{"gitId":"-"},"content":" private void initLogging(Config config) {","lastModifiedDate":"2016-09-24"},{"lineNumber":122,"author":{"gitId":"-"},"content":" LogsCenter.init(config);","lastModifiedDate":"2016-09-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":125,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":126,"author":{"gitId":"-"},"content":" * Returns a {@code Config} using the file at {@code configFilePath}. \u003cbr\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":127,"author":{"gitId":"-"},"content":" * The default file path {@code Config#DEFAULT_CONFIG_FILE} will be used instead","lastModifiedDate":"2017-08-16"},{"lineNumber":128,"author":{"gitId":"-"},"content":" * if {@code configFilePath} is null.","lastModifiedDate":"2017-08-16"},{"lineNumber":129,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":130,"author":{"gitId":"-"},"content":" protected Config initConfig(Path configFilePath) {","lastModifiedDate":"2018-04-21"},{"lineNumber":131,"author":{"gitId":"-"},"content":" Config initializedConfig;","lastModifiedDate":"2016-09-24"},{"lineNumber":132,"author":{"gitId":"-"},"content":" Path configFilePathUsed;","lastModifiedDate":"2018-04-21"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":134,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d Config.DEFAULT_CONFIG_FILE;","lastModifiedDate":"2016-09-24"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":136,"author":{"gitId":"-"},"content":" if (configFilePath !\u003d null) {","lastModifiedDate":"2016-09-24"},{"lineNumber":137,"author":{"gitId":"-"},"content":" logger.info(\"Custom Config file specified \" + configFilePath);","lastModifiedDate":"2016-09-24"},{"lineNumber":138,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d configFilePath;","lastModifiedDate":"2016-09-24"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":" logger.info(\"Using config file : \" + configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":143,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":144,"author":{"gitId":"-"},"content":" Optional\u003cConfig\u003e configOptional \u003d ConfigUtil.readConfig(configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":145,"author":{"gitId":"-"},"content":" if (!configOptional.isPresent()) {","lastModifiedDate":"2023-01-03"},{"lineNumber":146,"author":{"gitId":"-"},"content":" logger.info(\"Creating new config file \" + configFilePathUsed);","lastModifiedDate":"2023-05-15"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03"},{"lineNumber":148,"author":{"gitId":"-"},"content":" initializedConfig \u003d configOptional.orElse(new Config());","lastModifiedDate":"2016-09-24"},{"lineNumber":149,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":150,"author":{"gitId":"-"},"content":" logger.warning(\"Config file at \" + configFilePathUsed + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":151,"author":{"gitId":"-"},"content":" + \" Using default config properties.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":152,"author":{"gitId":"-"},"content":" initializedConfig \u003d new Config();","lastModifiedDate":"2016-09-24"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":155,"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":156,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":157,"author":{"gitId":"-"},"content":" ConfigUtil.saveConfig(initializedConfig, configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":158,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":159,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":161,"author":{"gitId":"-"},"content":" return initializedConfig;","lastModifiedDate":"2016-09-24"},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":165,"author":{"gitId":"-"},"content":" * Returns a {@code UserPrefs} using the file at {@code storage}\u0027s user prefs file path,","lastModifiedDate":"2017-08-16"},{"lineNumber":166,"author":{"gitId":"-"},"content":" * or a new {@code UserPrefs} with default configuration if errors occur when","lastModifiedDate":"2017-08-16"},{"lineNumber":167,"author":{"gitId":"-"},"content":" * reading from the file.","lastModifiedDate":"2017-08-16"},{"lineNumber":168,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":169,"author":{"gitId":"-"},"content":" protected UserPrefs initPrefs(UserPrefsStorage storage) {","lastModifiedDate":"2017-02-25"},{"lineNumber":170,"author":{"gitId":"-"},"content":" Path prefsFilePath \u003d storage.getUserPrefsFilePath();","lastModifiedDate":"2018-04-21"},{"lineNumber":171,"author":{"gitId":"-"},"content":" logger.info(\"Using preference file : \" + prefsFilePath);","lastModifiedDate":"2023-05-15"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":173,"author":{"gitId":"-"},"content":" UserPrefs initializedPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":174,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":175,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e prefsOptional \u003d storage.readUserPrefs();","lastModifiedDate":"2016-09-25"},{"lineNumber":176,"author":{"gitId":"-"},"content":" if (!prefsOptional.isPresent()) {","lastModifiedDate":"2023-01-03"},{"lineNumber":177,"author":{"gitId":"-"},"content":" logger.info(\"Creating new preference file \" + prefsFilePath);","lastModifiedDate":"2023-05-15"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03"},{"lineNumber":179,"author":{"gitId":"-"},"content":" initializedPrefs \u003d prefsOptional.orElse(new UserPrefs());","lastModifiedDate":"2016-09-24"},{"lineNumber":180,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":181,"author":{"gitId":"-"},"content":" logger.warning(\"Preference file at \" + prefsFilePath + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":182,"author":{"gitId":"-"},"content":" + \" Using default preferences.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":183,"author":{"gitId":"-"},"content":" initializedPrefs \u003d new UserPrefs();","lastModifiedDate":"2016-09-24"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":186,"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":187,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":188,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(initializedPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":189,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":190,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":193,"author":{"gitId":"-"},"content":" return initializedPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":194,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":196,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":197,"author":{"gitId":"MaYuehan"},"content":" * Starts the primary stage of the application.","lastModifiedDate":"2024-03-23"},{"lineNumber":198,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-23"},{"lineNumber":199,"author":{"gitId":"MaYuehan"},"content":" * @param primaryStage The primary stage for this application.","lastModifiedDate":"2024-03-23"},{"lineNumber":200,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":202,"author":{"gitId":"-"},"content":" public void start(Stage primaryStage) {","lastModifiedDate":"2016-08-08"},{"lineNumber":203,"author":{"gitId":"javierng2knus"},"content":" logger.info(\"Starting Clinic \" + MainApp.VERSION);","lastModifiedDate":"2024-03-11"},{"lineNumber":204,"author":{"gitId":"-"},"content":" ui.start(primaryStage);","lastModifiedDate":"2016-09-25"},{"lineNumber":205,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":207,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":208,"author":{"gitId":"MaYuehan"},"content":" * Stops the application, ensuring all resources are released and necessary data is saved.","lastModifiedDate":"2024-03-23"},{"lineNumber":209,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":211,"author":{"gitId":"-"},"content":" public void stop() {","lastModifiedDate":"2016-08-08"},{"lineNumber":212,"author":{"gitId":"javierng2knus"},"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 Clinic ] \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2024-03-11"},{"lineNumber":213,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":214,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(model.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":215,"author":{"gitId":"MaYuehan"},"content":" // Save appointments when application stops","lastModifiedDate":"2024-03-23"},{"lineNumber":216,"author":{"gitId":"MaYuehan"},"content":" storage.saveAppointments(model.getFilteredAppointmentList());","lastModifiedDate":"2024-03-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":218,"author":{"gitId":"MaYuehan"},"content":" logger.severe(\"Failed to save preferences and appointments: \" + StringUtil.getDetails(e));","lastModifiedDate":"2024-03-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":220,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":221,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"javierng2knus":18,"MaYuehan":57,"-":146}},{"path":"src/main/java/vitalconnect/commons/core/Config.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.commons.core;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-13"},{"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":{"MaYuehan":2,"-":64}},{"path":"src/main/java/vitalconnect/commons/core/GuiSettings.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.commons.core;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-13"},{"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":{"MaYuehan":2,"-":80}},{"path":"src/main/java/vitalconnect/commons/core/LogsCenter.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.commons.core;","lastModifiedDate":"2024-03-13"},{"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":"javierng2knus"},"content":" private static final String LOG_FILE \u003d \"clinic.log\";","lastModifiedDate":"2024-03-11"},{"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":{"javierng2knus":1,"MaYuehan":1,"-":104}},{"path":"src/main/java/vitalconnect/commons/core/Version.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.commons.core;","lastModifiedDate":"2024-03-13"},{"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":{"MaYuehan":1,"-":120}},{"path":"src/main/java/vitalconnect/commons/core/index/Index.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.commons.core.index;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-13"},{"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":{"MaYuehan":2,"-":67}},{"path":"src/main/java/vitalconnect/commons/exceptions/DataLoadingException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.commons.exceptions;","lastModifiedDate":"2024-03-13"},{"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":{"MaYuehan":1,"-":10}},{"path":"src/main/java/vitalconnect/commons/exceptions/IllegalValueException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.commons.exceptions;","lastModifiedDate":"2024-03-13"},{"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":{"MaYuehan":1,"-":20}},{"path":"src/main/java/vitalconnect/commons/util/AppUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.commons.util;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.MainApp;","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Gets an {@code Image} from the specified path.","lastModifiedDate":"2020-05-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static Image getImage(String imagePath) {","lastModifiedDate":"2016-08-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":" requireNonNull(imagePath);","lastModifiedDate":"2017-05-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":" return new Image(MainApp.class.getResourceAsStream(imagePath));","lastModifiedDate":"2016-08-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Checks that {@code condition} is true. Used for validating arguments to methods.","lastModifiedDate":"2017-05-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @throws IllegalArgumentException if {@code condition} is false.","lastModifiedDate":"2017-05-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static void checkArgument(Boolean condition) {","lastModifiedDate":"2017-05-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":" if (!condition) {","lastModifiedDate":"2017-05-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" throw new IllegalArgumentException();","lastModifiedDate":"2017-05-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Checks that {@code condition} is true. Used for validating arguments to methods.","lastModifiedDate":"2017-05-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * @throws IllegalArgumentException with {@code errorMessage} if {@code condition} is false.","lastModifiedDate":"2017-05-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static void checkArgument(Boolean condition, String errorMessage) {","lastModifiedDate":"2017-05-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":" if (!condition) {","lastModifiedDate":"2017-05-15"},{"lineNumber":39,"author":{"gitId":"-"},"content":" throw new IllegalArgumentException(errorMessage);","lastModifiedDate":"2017-05-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"MaYuehan":2,"-":40}},{"path":"src/main/java/vitalconnect/commons/util/CollectionUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.commons.util;","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":" /** @see #requireAllNonNull(Collection) */","lastModifiedDate":"2017-05-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static void requireAllNonNull(Object... items) {","lastModifiedDate":"2017-05-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":" requireNonNull(items);","lastModifiedDate":"2017-06-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Stream.of(items).forEach(Objects::requireNonNull);","lastModifiedDate":"2017-05-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Throws NullPointerException if {@code items} or any element of {@code items} is null.","lastModifiedDate":"2017-05-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static void requireAllNonNull(Collection\u003c?\u003e items) {","lastModifiedDate":"2017-05-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" requireNonNull(items);","lastModifiedDate":"2017-06-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":" items.forEach(Objects::requireNonNull);","lastModifiedDate":"2017-05-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"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 {@code items} contain any elements that are non-null.","lastModifiedDate":"2017-06-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static boolean isAnyNonNull(Object... items) {","lastModifiedDate":"2017-06-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return items !\u003d null \u0026\u0026 Arrays.stream(items).anyMatch(Objects::nonNull);","lastModifiedDate":"2017-06-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"MaYuehan":1,"-":34}},{"path":"src/main/java/vitalconnect/commons/util/ConfigUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.commons.util;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.commons.core.Config;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":" public static Optional\u003cConfig\u003e readConfig(Path configFilePath) throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":16,"author":{"gitId":"-"},"content":" return JsonUtil.readJsonFile(configFilePath, Config.class);","lastModifiedDate":"2016-10-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static void saveConfig(Config config, Path configFilePath) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" JsonUtil.saveJsonFile(config, configFilePath);","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":"}","lastModifiedDate":"2016-09-24"}],"authorContributionMap":{"MaYuehan":3,"-":20}},{"path":"src/main/java/vitalconnect/commons/util/FileUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.commons.util;","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":" public static boolean isFileExists(Path file) {","lastModifiedDate":"2018-04-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":" return Files.exists(file) \u0026\u0026 Files.isRegularFile(file);","lastModifiedDate":"2018-04-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-21"},{"lineNumber":21,"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":22,"author":{"gitId":"-"},"content":" * otherwise returns false.","lastModifiedDate":"2018-04-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @param path A string representing the file path. Cannot be null.","lastModifiedDate":"2018-04-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static boolean isValidPath(String path) {","lastModifiedDate":"2018-04-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-04-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" Paths.get(path);","lastModifiedDate":"2018-04-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":" } catch (InvalidPathException ipe) {","lastModifiedDate":"2018-04-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-04-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Creates a file if it does not exist along with its missing parent directories.","lastModifiedDate":"2017-08-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * @throws IOException if the file or directory cannot be created.","lastModifiedDate":"2017-08-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static void createIfMissing(Path file) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" if (!isFileExists(file)) {","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" createFile(file);","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":"","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Creates a file if it does not exist along with its missing parent directories.","lastModifiedDate":"2018-04-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static void createFile(Path file) throws IOException {","lastModifiedDate":"2018-04-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (Files.exists(file)) {","lastModifiedDate":"2018-04-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return;","lastModifiedDate":"2018-04-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" createParentDirsOfFile(file);","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" Files.createFile(file);","lastModifiedDate":"2018-04-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Creates parent directories of file if it has a parent directory","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static void createParentDirsOfFile(Path file) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":" Path parentDir \u003d file.getParent();","lastModifiedDate":"2018-04-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (parentDir !\u003d null) {","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" Files.createDirectories(parentDir);","lastModifiedDate":"2018-04-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-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":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * Assumes file exists","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public static String readFromFile(Path file) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return new String(Files.readAllBytes(file), CHARSET);","lastModifiedDate":"2018-04-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * Writes given string to a file.","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Will create the file if it does not exist yet.","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static void writeToFile(Path file, String content) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":" Files.write(file, content.getBytes(CHARSET));","lastModifiedDate":"2018-04-21"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"MaYuehan":1,"-":82}},{"path":"src/main/java/vitalconnect/commons/util/JsonUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.commons.util;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.commons.core.LogsCenter;","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":" static \u003cT\u003e void serializeObjectToJsonFile(Path jsonFile, T objectToSerialize) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" FileUtil.writeToFile(jsonFile, toJsonString(objectToSerialize));","lastModifiedDate":"2016-10-07"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":46,"author":{"gitId":"-"},"content":" static \u003cT\u003e T deserializeObjectFromJsonFile(Path jsonFile, Class\u003cT\u003e classOfObjectToDeserialize)","lastModifiedDate":"2018-04-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2016-10-07"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return fromJsonString(FileUtil.readFromFile(jsonFile), classOfObjectToDeserialize);","lastModifiedDate":"2016-10-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-07"},{"lineNumber":52,"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":53,"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":54,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * @param filePath cannot be null.","lastModifiedDate":"2016-10-07"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * @param classOfObjectToDeserialize JSON file has to correspond to the structure in the class given here.","lastModifiedDate":"2023-06-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * @throws DataLoadingException if loading of the JSON file failed.","lastModifiedDate":"2023-06-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-07"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static \u003cT\u003e Optional\u003cT\u003e readJsonFile(","lastModifiedDate":"2016-10-07"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Path filePath, Class\u003cT\u003e classOfObjectToDeserialize) throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":61,"author":{"gitId":"-"},"content":" requireNonNull(filePath);","lastModifiedDate":"2017-05-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (!Files.exists(filePath)) {","lastModifiedDate":"2018-04-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2016-10-07"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":66,"author":{"gitId":"-"},"content":" logger.info(\"JSON file \" + filePath + \" found.\");","lastModifiedDate":"2023-01-03"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":" T jsonFile;","lastModifiedDate":"2016-10-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-10-07"},{"lineNumber":71,"author":{"gitId":"-"},"content":" jsonFile \u003d deserializeObjectFromJsonFile(filePath, classOfObjectToDeserialize);","lastModifiedDate":"2018-04-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-10-07"},{"lineNumber":73,"author":{"gitId":"-"},"content":" logger.warning(\"Error reading from jsonFile file \" + filePath + \": \" + e);","lastModifiedDate":"2018-04-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" throw new DataLoadingException(e);","lastModifiedDate":"2023-06-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return Optional.of(jsonFile);","lastModifiedDate":"2016-10-07"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":80,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-07"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * Saves the Json object to the specified file.","lastModifiedDate":"2016-10-07"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * Overwrites existing file if it exists, creates a new file if it doesn\u0027t.","lastModifiedDate":"2016-10-07"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * @param jsonFile cannot be null","lastModifiedDate":"2016-10-07"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * @param filePath cannot be null","lastModifiedDate":"2016-10-07"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * @throws IOException if there was an error during writing to the file","lastModifiedDate":"2016-10-07"},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-07"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public static \u003cT\u003e void saveJsonFile(T jsonFile, Path filePath) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":88,"author":{"gitId":"-"},"content":" requireNonNull(filePath);","lastModifiedDate":"2017-05-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" requireNonNull(jsonFile);","lastModifiedDate":"2017-05-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":91,"author":{"gitId":"-"},"content":" serializeObjectToJsonFile(filePath, jsonFile);","lastModifiedDate":"2018-04-21"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * Converts a given string representation of a JSON data to instance of a class","lastModifiedDate":"2016-10-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * @param \u003cT\u003e The generic type to create an instance of","lastModifiedDate":"2016-10-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * @return The instance of T with the specified values in the JSON string","lastModifiedDate":"2016-10-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public static \u003cT\u003e T fromJsonString(String json, Class\u003cT\u003e instanceClass) throws IOException {","lastModifiedDate":"2016-10-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" return objectMapper.readValue(json, instanceClass);","lastModifiedDate":"2016-10-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":104,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-19"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * Converts a given instance of a class into its JSON data string representation","lastModifiedDate":"2016-10-19"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * @param instance The T object to be converted into the JSON string","lastModifiedDate":"2016-10-19"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * @param \u003cT\u003e The generic type to create an instance of","lastModifiedDate":"2016-10-19"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * @return JSON data representation of the given class instance, in string","lastModifiedDate":"2016-10-19"},{"lineNumber":109,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public static \u003cT\u003e String toJsonString(T instance) throws JsonProcessingException {","lastModifiedDate":"2016-10-19"},{"lineNumber":111,"author":{"gitId":"-"},"content":" return objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(instance);","lastModifiedDate":"2016-10-19"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Contains methods that retrieve logging level from serialized string.","lastModifiedDate":"2017-08-16"},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":117,"author":{"gitId":"-"},"content":" private static class LevelDeserializer extends FromStringDeserializer\u003cLevel\u003e {","lastModifiedDate":"2016-08-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" protected LevelDeserializer(Class\u003c?\u003e vc) {","lastModifiedDate":"2016-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" super(vc);","lastModifiedDate":"2016-08-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" protected Level _deserialize(String value, DeserializationContext ctxt) {","lastModifiedDate":"2018-08-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" return getLoggingLevel(value);","lastModifiedDate":"2016-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","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":" * Gets the logging level that matches loggingLevelString","lastModifiedDate":"2016-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" * \u003cp\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":" * Returns null if there are no matches","lastModifiedDate":"2016-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":" private Level getLoggingLevel(String loggingLevelString) {","lastModifiedDate":"2016-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":" return Level.parse(loggingLevelString);","lastModifiedDate":"2016-09-09"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public Class\u003cLevel\u003e handledType() {","lastModifiedDate":"2016-08-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":" return Level.class;","lastModifiedDate":"2016-08-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"MaYuehan":3,"-":141}},{"path":"src/main/java/vitalconnect/commons/util/StringUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.commons.util;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import static vitalconnect.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"MaYuehan":2,"-":66}},{"path":"src/main/java/vitalconnect/commons/util/ToStringBuilder.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.commons.util;","lastModifiedDate":"2024-03-13"},{"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":{"MaYuehan":1,"-":52}},{"path":"src/main/java/vitalconnect/logic/Logic.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.commons.core.GuiSettings;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.CommandResult;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Appointment;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.ReadOnlyClinic;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * API of the Logic component","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2016-09-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2016-09-25"},{"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":"javierng2knus"},"content":" * Returns the Clinic.","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-03"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" * @see vitalconnect.model.Model#getClinic()","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-03"},{"lineNumber":33,"author":{"gitId":"javierng2knus"},"content":" ReadOnlyClinic getClinic();","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered list of persons */","lastModifiedDate":"2017-09-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" /** Returns an unmodifiable view of the filtered list of appointment */","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":" ObservableList\u003cAppointment\u003e getFilteredAppointmentList();","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"javierng2knus"},"content":" * Returns the user prefs\u0027 clinic file path.","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"javierng2knus"},"content":" Path getClinicFilePath();","lastModifiedDate":"2024-03-11"},{"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":" * Set 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":"2016-09-25"}],"authorContributionMap":{"javierng2knus":4,"MaYuehan":12,"-":39}},{"path":"src/main/java/vitalconnect/logic/LogicManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.commons.core.GuiSettings;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.core.LogsCenter;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.Command;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.CommandResult;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.parser.ClinicParser;","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Appointment;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.ReadOnlyClinic;","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.storage.Storage;","lastModifiedDate":"2024-03-13"},{"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":"javierng2knus"},"content":" private final ClinicParser clinicParser;","lastModifiedDate":"2024-03-11"},{"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":"javierng2knus"},"content":" clinicParser \u003d new ClinicParser();","lastModifiedDate":"2024-03-11"},{"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":"javierng2knus"},"content":" Command command \u003d clinicParser.parseCommand(commandText);","lastModifiedDate":"2024-03-11"},{"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":"javierng2knus"},"content":" storage.saveClinic(model.getClinic());","lastModifiedDate":"2024-03-11"},{"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":"javierng2knus"},"content":" public ReadOnlyClinic getClinic() {","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"javierng2knus"},"content":" return model.getClinic();","lastModifiedDate":"2024-03-11"},{"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":"-"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"MaYuehan"},"content":" public ObservableList\u003cAppointment\u003e getFilteredAppointmentList() {","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"MaYuehan"},"content":" return model.getFilteredAppointmentList();","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"javierng2knus"},"content":" public Path getClinicFilePath() {","lastModifiedDate":"2024-03-11"},{"lineNumber":81,"author":{"gitId":"javierng2knus"},"content":" return model.getClinicFilePath();","lastModifiedDate":"2024-03-11"},{"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 GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return model.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" model.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"javierng2knus":8,"MaYuehan":16,"-":69}},{"path":"src/main/java/vitalconnect/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic;","lastModifiedDate":"2024-03-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":"MaYuehan"},"content":"import vitalconnect.logic.parser.Prefix;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-13"},{"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":"Ella-e"},"content":" public static final String MESSAGE_PERSON_NOT_FOUND \u003d \"Person not found\";","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"Ella-e"},"content":" public static final String MESSAGE_PERSON_ALREADY_EXIST \u003d \"Person already exists\";","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"SeaHogs"},"content":" public static final String MESSAGE_MEDICAL_INFO_ALREADY_EXIST \u003d \"Person\u0027s medical information already exists\";","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"Ella-e"},"content":" public static final String MESSAGE_EMAIL_NOT_FOUND \u003d \"Email not found\";","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"Ella-e"},"content":" public static final String MESSAGE_PHONE_NOT_FOUND \u003d \"Phone not found\";","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"Ella-e"},"content":" public static final String MESSAGE_ADDRESS_NOT_FOUND \u003d \"Address not found\";","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"Ella-e"},"content":" public static final String MESSAGE_EMAIL_ALREADY_EXIST \u003d \"Email already exists\";","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"Ella-e"},"content":" public static final String MESSAGE_PHONE_ALREADY_EXIST \u003d \"Phone already exists\";","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"Ella-e"},"content":" public static final String MESSAGE_ADDRESS_ALREADY_EXIST \u003d \"Address already exists\";","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"Ella-e"},"content":" public static final String MESSAGE_NO_PREFIX_PROVIDED \u003d \"At least one prefix must be provided\";","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"SeaHogs"},"content":" public static final String MESSAGE_ALLERGY_ALREADY_EXIST \u003d \"Allergy already exists\";","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"Ella-e"},"content":" public static final String MESSAGE_OPTION_NOT_VALID \u003d \"Option not valid\";","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":40,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":41,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"javierng2knus"},"content":" builder.append(person.getIdentificationInformation().getName())","lastModifiedDate":"2024-03-15"},{"lineNumber":52,"author":{"gitId":"javierng2knus"},"content":" .append(\"; NRIC: \")","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"SeaHogs"},"content":" .append(person.getIdentificationInformation().getNric());","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"javierng2knus":2,"MaYuehan":3,"Ella-e":10,"-":39,"SeaHogs":3}},{"path":"src/main/java/vitalconnect/logic/commands/AddCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.commands;","lastModifiedDate":"2024-03-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":"MaYuehan"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"javierng2knus"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_NRIC;","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.Messages;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"javierng2knus"},"content":" * Adds a person to the clinic.","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class AddCommand 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 \"add\";","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"javierng2knus"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a person to the clinic. \"","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06"},{"lineNumber":24,"author":{"gitId":"javierng2knus"},"content":" + PREFIX_NRIC + \"NRIC \\n\"","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06"},{"lineNumber":27,"author":{"gitId":"javierng2knus"},"content":" + PREFIX_NRIC + \"S1234567D \";","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: %1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"javierng2knus"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the clinic\";","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":38,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":39,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":46,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":50,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23"},{"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":"2017-06-22"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22"},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return false;","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":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"javierng2knus":6,"MaYuehan":8,"-":61}},{"path":"src/main/java/vitalconnect/logic/commands/AddContactCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"package vitalconnect.logic.commands;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.Messages.MESSAGE_PERSON_ALREADY_EXIST;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.Messages.MESSAGE_PERSON_NOT_FOUND;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_NRIC;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.ContactInformation;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.identificationinformation.Nric;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":" * Adds a person to the clinic.","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"Ella-e"},"content":"public class AddContactCommand extends Command {","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"javierng2knus"},"content":" public static final String COMMAND_WORD \u003d \"addc\";","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"javierng2knus"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Contacts added successfully\";","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"javierng2knus"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds the contact information of a person. \"","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"Ella-e"},"content":" + \"Parameters: (required field)\\n\"","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"Ella-e"},"content":" + PREFIX_NRIC + \"NRIC \"","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"Ella-e"},"content":" + \"(optional but at least specify one)\\n\"","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"Ella-e"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"Ella-e"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"Ella-e"},"content":" + PREFIX_ADDRESS + \"ADDRESS \\n\"","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"Ella-e"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"javierng2knus"},"content":" + PREFIX_NRIC + \"S1234567D \"","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"Ella-e"},"content":" + PREFIX_PHONE + \"98765432 \";","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"Ella-e"},"content":" private final Nric nric;","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"Ella-e"},"content":" private final ContactInformation contactInformation;","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"Ella-e"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"Ella-e"},"content":" * Creates an AddCommand to add the specified {@code ContactInformation}","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"Ella-e"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"Ella-e"},"content":" public AddContactCommand(Nric nric, ContactInformation contactInformation) {","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"Ella-e"},"content":" requireNonNull(contactInformation);","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"Ella-e"},"content":" this.nric \u003d nric;","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"Ella-e"},"content":" this.contactInformation \u003d contactInformation;","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"Ella-e"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"Ella-e"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"Ella-e"},"content":" // if person not exist, throw error","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"Ella-e"},"content":" Person p \u003d model.findPersonByNric(nric);","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"Ella-e"},"content":" if (p \u003d\u003d null) {","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"Ella-e"},"content":" throw new CommandException(MESSAGE_PERSON_NOT_FOUND);","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"Ella-e"},"content":" // if person already has contact information, throw error","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"Ella-e"},"content":" ContactInformation ci \u003d p.getContactInformation();","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"Ella-e"},"content":" if (!ci.isEmptyContact()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"Ella-e"},"content":" throw new CommandException(MESSAGE_PERSON_ALREADY_EXIST);","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"Ella-e"},"content":" // add the contact information to the person","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"Ella-e"},"content":" model.updatePersonContactInformation(nric, contactInformation);","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"Ella-e"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"Ella-e"},"content":" // update the person to the model","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"Ella-e"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"Ella-e"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"Ella-e"},"content":" return other \u003d\u003d this // short circuit if same object","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"Ella-e"},"content":" || (other instanceof AddContactCommand // instanceof handles nulls","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"Ella-e"},"content":" \u0026\u0026 nric.equals(((AddContactCommand) other).nric)","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"Ella-e"},"content":" \u0026\u0026 contactInformation.equals(((AddContactCommand) other).contactInformation));","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"Ella-e"},"content":" public String toString() {","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"Ella-e"},"content":" return \"addContact\" + nric + contactInformation;","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"javierng2knus":4,"Ella-e":76}},{"path":"src/main/java/vitalconnect/logic/commands/AddMedInfoCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SeaHogs"},"content":"package vitalconnect.logic.commands;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"SeaHogs"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.logic.Messages.MESSAGE_MEDICAL_INFO_ALREADY_EXIST;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.logic.Messages.MESSAGE_PERSON_NOT_FOUND;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_ALLERGYTAG;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_HEIGHT;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_NRIC;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_WEIGHT;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.person.identificationinformation.Nric;","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.person.medicalinformation.MedicalInformation;","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"SeaHogs"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"SeaHogs"},"content":" * Adds medication information for a person.","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"SeaHogs"},"content":"public class AddMedInfoCommand extends Command {","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"javierng2knus"},"content":" public static final String COMMAND_WORD \u003d \"addm\";","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"javierng2knus"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Medical information added successfully\";","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"javierng2knus"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds the medical information of a person. \"","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"javierng2knus"},"content":" + \"Parameters: (required fields)\\n\"","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"SeaHogs"},"content":" + PREFIX_NRIC + \"NRIC \"","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"javierng2knus"},"content":" + PREFIX_HEIGHT + \"Height(in cm) \"","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"javierng2knus"},"content":" + PREFIX_WEIGHT + \"Weight(in kg) \\n\"","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"SeaHogs"},"content":" + \"(optional but at least specify one)\"","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"SeaHogs"},"content":" + PREFIX_ALLERGYTAG + \"Allergy\\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"SeaHogs"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"SeaHogs"},"content":" + PREFIX_NRIC + \"S1234567A \"","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"SeaHogs"},"content":" + PREFIX_HEIGHT + \"175 \"","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"SeaHogs"},"content":" + PREFIX_WEIGHT + \"60 \"","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"javierng2knus"},"content":" + PREFIX_ALLERGYTAG + \"Amoxicillin \";","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"SeaHogs"},"content":" private final Nric nric;","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"SeaHogs"},"content":" private final MedicalInformation medicalInformation;","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"SeaHogs"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"SeaHogs"},"content":" * Creates an AddMedInfoCommand to add the specified {@code MedicalInformation}","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"SeaHogs"},"content":" public AddMedInfoCommand(Nric nric, MedicalInformation medicalInformation) {","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"SeaHogs"},"content":" requireNonNull(medicalInformation);","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"SeaHogs"},"content":" this.nric \u003d nric;","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"SeaHogs"},"content":" this.medicalInformation \u003d medicalInformation;","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"SeaHogs"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"SeaHogs"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"SeaHogs"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"SeaHogs"},"content":" Person p \u003d model.findPersonByNric(nric);","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"SeaHogs"},"content":" if (p \u003d\u003d null) {","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"SeaHogs"},"content":" throw new CommandException(MESSAGE_PERSON_NOT_FOUND);","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"SeaHogs"},"content":" if (p.hasMedicalInformation()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"SeaHogs"},"content":" throw new CommandException(MESSAGE_MEDICAL_INFO_ALREADY_EXIST);","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"SeaHogs"},"content":" } else {","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"SeaHogs"},"content":" model.updatePersonMedicalInformation(nric, medicalInformation);","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"SeaHogs"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"SeaHogs"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"SeaHogs"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"SeaHogs"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"SeaHogs"},"content":" return other \u003d\u003d this // short circuit if same object","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"SeaHogs"},"content":" || (other instanceof AddMedInfoCommand // instanceof handles nulls","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"SeaHogs"},"content":" \u0026\u0026 nric.equals(((AddMedInfoCommand) other).nric)","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"SeaHogs"},"content":" \u0026\u0026 medicalInformation.equals(((AddMedInfoCommand) other).medicalInformation));","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"SeaHogs"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"SeaHogs"},"content":" public String toString() {","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"SeaHogs"},"content":" return \"addMedInfo\" + nric + medicalInformation;","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"SeaHogs"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"javierng2knus":7,"SeaHogs":73}},{"path":"src/main/java/vitalconnect/logic/commands/ClearCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.commands;","lastModifiedDate":"2024-03-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":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Clinic;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"javierng2knus"},"content":" * Clears the clinic.","lastModifiedDate":"2024-03-11"},{"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":"javierng2knus"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Clinic has been cleared!\";","lastModifiedDate":"2024-03-11"},{"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":"javierng2knus"},"content":" model.setClinic(new Clinic());","lastModifiedDate":"2024-03-11"},{"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":{"javierng2knus":3,"MaYuehan":3,"-":17}},{"path":"src/main/java/vitalconnect/logic/commands/Command.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.commands;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-13"},{"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":{"MaYuehan":3,"-":17}},{"path":"src/main/java/vitalconnect/logic/commands/CommandResult.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.commands;","lastModifiedDate":"2024-03-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":"","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":"MaYuehan"},"content":"import vitalconnect.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":" * Contains information about the execution result, such as feedback to the user,","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":" * whether help information should be shown, whether the application should exit,","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":" * and the type of view to show in the UI.","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class CommandResult {","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":" * Represents the type of view to show in the UI.","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" public enum Type {","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":" SHOW_PERSONS,","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" SHOW_APPOINTMENTS","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" /** Feedback message to be shown to the user. */","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final String feedbackToUser;","lastModifiedDate":"2018-12-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /** Help information should be shown to the user. */","lastModifiedDate":"2018-12-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final boolean showHelp;","lastModifiedDate":"2018-12-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /** The application should exit. */","lastModifiedDate":"2018-12-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final boolean exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" /** The type of view to show in the UI. */","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" private final Type type;","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" * Constructs a {@code CommandResult} with all fields specified.","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":" * @param feedbackToUser Feedback message to the user.","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" * @param showHelp True if help information should be shown.","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":" * @param exit True if the application should exit.","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":" * @param type The type of result, indicating which UI view should be shown.","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":" public CommandResult(String feedbackToUser, boolean showHelp, boolean exit, Type type) {","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"-"},"content":" this.feedbackToUser \u003d requireNonNull(feedbackToUser);","lastModifiedDate":"2017-05-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" this.showHelp \u003d showHelp;","lastModifiedDate":"2018-12-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.exit \u003d exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":" this.type \u003d type;","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":" * Constructs a {@code CommandResult} with the specified feedback message","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":" * and default values for other fields.","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":" * @param feedbackToUser Feedback message to the user.","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public CommandResult(String feedbackToUser) {","lastModifiedDate":"2018-12-09"},{"lineNumber":58,"author":{"gitId":"MaYuehan"},"content":" this(feedbackToUser, false, false, Type.SHOW_PERSONS);","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public String getFeedbackToUser() {","lastModifiedDate":"2018-12-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return feedbackToUser;","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 isShowHelp() {","lastModifiedDate":"2018-12-09"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return showHelp;","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":" public boolean isExit() {","lastModifiedDate":"2018-12-09"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return 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":"2018-12-09"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2018-12-09"},{"lineNumber":75,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-12-09"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-12-09"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":79,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2018-12-09"},{"lineNumber":80,"author":{"gitId":"-"},"content":" if (!(other instanceof CommandResult)) {","lastModifiedDate":"2018-12-09"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-12-09"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":84,"author":{"gitId":"-"},"content":" CommandResult otherCommandResult \u003d (CommandResult) other;","lastModifiedDate":"2018-12-09"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return feedbackToUser.equals(otherCommandResult.feedbackToUser)","lastModifiedDate":"2018-12-09"},{"lineNumber":86,"author":{"gitId":"-"},"content":" \u0026\u0026 showHelp \u003d\u003d otherCommandResult.showHelp","lastModifiedDate":"2018-12-09"},{"lineNumber":87,"author":{"gitId":"-"},"content":" \u0026\u0026 exit \u003d\u003d otherCommandResult.exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2018-12-09"},{"lineNumber":92,"author":{"gitId":"-"},"content":" return Objects.hash(feedbackToUser, showHelp, exit);","lastModifiedDate":"2018-12-09"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":" .add(\"feedbackToUser\", feedbackToUser)","lastModifiedDate":"2019-02-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":" .add(\"showHelp\", showHelp)","lastModifiedDate":"2019-02-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":" .add(\"exit\", exit)","lastModifiedDate":"2019-02-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":104,"author":{"gitId":"MaYuehan"},"content":" public Type getType() {","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"MaYuehan"},"content":" return type;","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"MaYuehan":33,"-":75}},{"path":"src/main/java/vitalconnect/logic/commands/CreateAptCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.commands;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Appointment;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.identificationinformation.Name;","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.identificationinformation.Nric;","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" * Represents a command to create an appointment for a patient in the address book.","lastModifiedDate":"2024-03-23"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":" * This command schedules appointments by specifying the patient\u0027s NRIC","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":" * and the desired date and time for the appointment.","lastModifiedDate":"2024-03-23"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":"public class CreateAptCommand extends Command {","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"javierng2knus"},"content":" public static final String COMMAND_WORD \u003d \"adda\";","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"javierng2knus"},"content":" + \": Adds an appointment for a person in the address book. \"","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" + \"Parameters: NRIC /time DATE TIME\\n\"","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" + \"S1234567D /time 02/02/2024 1330\\n\"","lastModifiedDate":"2024-03-23"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" + \"Note: Ensure the date and time are in DD/MM/YYYY HHMM format.\";","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" private final String patientIc;","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" private final String dateTimeStr;","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" private String patientName \u003d null;","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" * Constructs a {@code CreateAptCommand} to schedule an appointment.","lastModifiedDate":"2024-03-23"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" * @param patientIc The NRIC of the patient for whom the appointment is being created.","lastModifiedDate":"2024-03-23"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" * @param dateTimeStr The date and time of the appointment, in DD/MM/YYYY HHMM format.","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":" public CreateAptCommand(String patientIc, String dateTimeStr) {","lastModifiedDate":"2024-03-23"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" this.patientIc \u003d patientIc;","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":" this.dateTimeStr \u003d dateTimeStr;","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":" * Executes the command to create an appointment in the address book.","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":" * The method verifies the existence of a person with the specified NRIC in the address book.","lastModifiedDate":"2024-03-23"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":" * If the person exists and the date and time format is valid, an appointment is scheduled.","lastModifiedDate":"2024-03-23"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":" * If the person does not exist or the date and time are incorrectly formatted,","lastModifiedDate":"2024-03-23"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":" * a {@code CommandException} is thrown.","lastModifiedDate":"2024-03-23"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":" * @param model The model of the address book in which the appointment is to be created.","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"MaYuehan"},"content":" * @return A {@code CommandResult} object containing the success message upon","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":" * successful creation of the appointment, and the type of command result.","lastModifiedDate":"2024-03-23"},{"lineNumber":56,"author":{"gitId":"MaYuehan"},"content":" * @throws CommandException If the specified patient does not exist or if the","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"MaYuehan"},"content":" * date and time string is in an incorrect format.","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":60,"author":{"gitId":"MaYuehan"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-13"},{"lineNumber":61,"author":{"gitId":"MaYuehan"},"content":" try {","lastModifiedDate":"2024-03-13"},{"lineNumber":62,"author":{"gitId":"MaYuehan"},"content":" // Check if a person with the exact name exists","lastModifiedDate":"2024-03-13"},{"lineNumber":63,"author":{"gitId":"MaYuehan"},"content":" if (!model.doesIcExist(patientIc)) {","lastModifiedDate":"2024-03-23"},{"lineNumber":64,"author":{"gitId":"MaYuehan"},"content":" throw new CommandException(\"OOPS! The appointment cannot be created as the NRIC does not exist.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":65,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":66,"author":{"gitId":"MaYuehan"},"content":" // Parse and validate date time","lastModifiedDate":"2024-03-13"},{"lineNumber":67,"author":{"gitId":"MaYuehan"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd/MM/yyyy HHmm\");","lastModifiedDate":"2024-03-13"},{"lineNumber":68,"author":{"gitId":"MaYuehan"},"content":" LocalDateTime dateTime \u003d LocalDateTime.parse(dateTimeStr, formatter);","lastModifiedDate":"2024-03-13"},{"lineNumber":69,"author":{"gitId":"MaYuehan"},"content":" Nric nric \u003d new Nric(patientIc);","lastModifiedDate":"2024-03-23"},{"lineNumber":70,"author":{"gitId":"MaYuehan"},"content":" Person person \u003d model.findPersonByNric(nric);","lastModifiedDate":"2024-03-23"},{"lineNumber":71,"author":{"gitId":"MaYuehan"},"content":" Name name \u003d person.getIdentificationInformation().getName();","lastModifiedDate":"2024-03-23"},{"lineNumber":72,"author":{"gitId":"MaYuehan"},"content":" this.patientName \u003d name.toString();","lastModifiedDate":"2024-03-23"},{"lineNumber":73,"author":{"gitId":"MaYuehan"},"content":" Appointment appointment \u003d new Appointment(patientName, patientIc, dateTime);","lastModifiedDate":"2024-03-23"},{"lineNumber":74,"author":{"gitId":"MaYuehan"},"content":" model.addAppointment(appointment);","lastModifiedDate":"2024-03-13"},{"lineNumber":75,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":76,"author":{"gitId":"MaYuehan"},"content":" return new CommandResult(String.format(\"Created an appointment successfully!\\nName: %s\\nNRIC: %s\\nTime: %s\",","lastModifiedDate":"2024-03-23"},{"lineNumber":77,"author":{"gitId":"MaYuehan"},"content":" patientName, patientIc, dateTime.format(DateTimeFormatter.ofPattern(\"d MMM yyyy HH:mm\"))),","lastModifiedDate":"2024-03-23"},{"lineNumber":78,"author":{"gitId":"MaYuehan"},"content":" false, false, CommandResult.Type.SHOW_APPOINTMENTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":80,"author":{"gitId":"MaYuehan"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-03-13"},{"lineNumber":81,"author":{"gitId":"MaYuehan"},"content":" throw new CommandException(\"OOPS! The appointment cannot be created \"","lastModifiedDate":"2024-03-13"},{"lineNumber":82,"author":{"gitId":"MaYuehan"},"content":" + \"as the time is empty or not in the correct format.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":83,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":84,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":85,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":86,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":87,"author":{"gitId":"MaYuehan"},"content":" * Returns the NRIC of the patient associated with this appointment.","lastModifiedDate":"2024-03-23"},{"lineNumber":88,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-23"},{"lineNumber":89,"author":{"gitId":"MaYuehan"},"content":" * @return The patient\u0027s NRIC as a {@code String}.","lastModifiedDate":"2024-03-23"},{"lineNumber":90,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":91,"author":{"gitId":"MaYuehan"},"content":" public String getPatientIc() {","lastModifiedDate":"2024-03-23"},{"lineNumber":92,"author":{"gitId":"MaYuehan"},"content":" return patientIc;","lastModifiedDate":"2024-03-23"},{"lineNumber":93,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":94,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":95,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":96,"author":{"gitId":"MaYuehan"},"content":" * Returns the name of the patient associated with this appointment.","lastModifiedDate":"2024-03-13"},{"lineNumber":97,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":98,"author":{"gitId":"MaYuehan"},"content":" * @return The patient\u0027s name as a {@code String}.","lastModifiedDate":"2024-03-13"},{"lineNumber":99,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":100,"author":{"gitId":"MaYuehan"},"content":" public String getPatientName() {","lastModifiedDate":"2024-03-13"},{"lineNumber":101,"author":{"gitId":"MaYuehan"},"content":" return patientName;","lastModifiedDate":"2024-03-13"},{"lineNumber":102,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":103,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":104,"author":{"gitId":"MaYuehan"},"content":" * Returns the date and time of the appointment as a string.","lastModifiedDate":"2024-03-13"},{"lineNumber":105,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":106,"author":{"gitId":"MaYuehan"},"content":" * @return The date and time of the appointment in \"dd/MM/yyyy HHmm\" format.","lastModifiedDate":"2024-03-23"},{"lineNumber":107,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":108,"author":{"gitId":"MaYuehan"},"content":" public String getDateTimeStr() {","lastModifiedDate":"2024-03-13"},{"lineNumber":109,"author":{"gitId":"MaYuehan"},"content":" return dateTimeStr;","lastModifiedDate":"2024-03-13"},{"lineNumber":110,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":111,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"javierng2knus":2,"MaYuehan":109}},{"path":"src/main/java/vitalconnect/logic/commands/DeleteAptCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.commands;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import java.util.List;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Appointment;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":" * A command to delete an appointment of a patient from the address book based on the index provided.","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":" * This command allows users to remove a specific appointment identified by its index in the","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":" * list of all displayed appointments and the patient\u0027s name.","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"public class DeleteAptCommand extends Command {","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"javierng2knus"},"content":" public static final String COMMAND_WORD \u003d \"deletea\";","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Deletes an appointment of a patient by the index \"","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" + \"in the list and patient name.\\n\"","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":" + \"Parameters: INDEX (must be a positive integer) /name NAME\\n\"","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 /name John Doe\";","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":" private final int index;","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" private final String patientName;","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" * Constructs a {@code DeleteAptCommand} with the specified index and patient name.","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" * @param index The index of the appointment to be deleted, as displayed to the user.","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" * @param patientName The name of the patient whose appointment is to be deleted.","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" public DeleteAptCommand(int index, String patientName) {","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" this.index \u003d index;","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" this.patientName \u003d patientName;","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" * Executes the deletion of an appointment identified by its index and the specified patient\u0027s name.","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":" * \u003cp\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" * The method checks if the appointment list is empty, if the provided index is within the valid range,","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":" * and if the appointment at the specified index belongs to the patient with the given name. If any of","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":" * these conditions are not met, a {@code CommandException} is thrown with an appropriate message.","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":" * @param model {@code Model} which the command should operate on.","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":" * @return A {@code CommandResult} object containing the success message upon","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":" * successful deletion of the appointment and the type of command result.","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":" * @throws CommandException If the appointment list is empty, the index is out of range,","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":" * or no appointment matches the provided index and patient name.","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":" List\u003cAppointment\u003e lastShownList \u003d model.getFilteredAppointmentList();","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"MaYuehan"},"content":" if (lastShownList.size() \u003c 1) {","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":" throw new CommandException(\"OOPS! The appointment list is empty.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":56,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"MaYuehan"},"content":" if (index \u003c 1 || index \u003e lastShownList.size()) {","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"MaYuehan"},"content":" throw new CommandException(\"OOPS! The deletion of the appointment failed as the index of \"","lastModifiedDate":"2024-03-13"},{"lineNumber":60,"author":{"gitId":"MaYuehan"},"content":" + \"appointment is out of range.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":61,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":62,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":63,"author":{"gitId":"MaYuehan"},"content":" Appointment appointmentToDelete \u003d lastShownList.get(index - 1);","lastModifiedDate":"2024-03-13"},{"lineNumber":64,"author":{"gitId":"MaYuehan"},"content":" if (!appointmentToDelete.getPatientName().equals(patientName)) {","lastModifiedDate":"2024-03-13"},{"lineNumber":65,"author":{"gitId":"MaYuehan"},"content":" throw new CommandException(\"OOPS! The deletion of the appointment failed as the appointment of \"","lastModifiedDate":"2024-03-13"},{"lineNumber":66,"author":{"gitId":"MaYuehan"},"content":" + patientName + \" does not exist in the appointment list.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":67,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":68,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":69,"author":{"gitId":"MaYuehan"},"content":" model.deleteAppointment(appointmentToDelete);","lastModifiedDate":"2024-03-13"},{"lineNumber":70,"author":{"gitId":"MaYuehan"},"content":" return new CommandResult(String.format(\"Deleted the appointment successfully:\\nName: %s\\nTime: %s\",","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"MaYuehan"},"content":" patientName,","lastModifiedDate":"2024-03-13"},{"lineNumber":72,"author":{"gitId":"MaYuehan"},"content":" appointmentToDelete.getDateTime().format(DateTimeFormatter.ofPattern(\"d MMM uuuu HH:mm\"))),","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"MaYuehan"},"content":" false, false, CommandResult.Type.SHOW_APPOINTMENTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":75,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":76,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":77,"author":{"gitId":"MaYuehan"},"content":" * Gets the index of the appointment to be deleted.","lastModifiedDate":"2024-03-13"},{"lineNumber":78,"author":{"gitId":"MaYuehan"},"content":" * \u003cp\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":79,"author":{"gitId":"MaYuehan"},"content":" * This index is used to identify the specific appointment in the list of appointments","lastModifiedDate":"2024-03-13"},{"lineNumber":80,"author":{"gitId":"MaYuehan"},"content":" * displayed to the user. It is based on a 1-based indexing system.","lastModifiedDate":"2024-03-13"},{"lineNumber":81,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":82,"author":{"gitId":"MaYuehan"},"content":" * @return The index of the appointment to be deleted.","lastModifiedDate":"2024-03-13"},{"lineNumber":83,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":84,"author":{"gitId":"MaYuehan"},"content":" public int getIndex() {","lastModifiedDate":"2024-03-13"},{"lineNumber":85,"author":{"gitId":"MaYuehan"},"content":" return index;","lastModifiedDate":"2024-03-13"},{"lineNumber":86,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":87,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":88,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":89,"author":{"gitId":"MaYuehan"},"content":" * Gets the name of the patient associated with the appointment to be deleted.","lastModifiedDate":"2024-03-13"},{"lineNumber":90,"author":{"gitId":"MaYuehan"},"content":" * \u003cp\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":91,"author":{"gitId":"MaYuehan"},"content":" * This name is used to ensure that the correct appointment is deleted, especially","lastModifiedDate":"2024-03-13"},{"lineNumber":92,"author":{"gitId":"MaYuehan"},"content":" * in cases where there may be multiple appointments at the same index across","lastModifiedDate":"2024-03-13"},{"lineNumber":93,"author":{"gitId":"MaYuehan"},"content":" * different instances of lists displayed to the user.","lastModifiedDate":"2024-03-13"},{"lineNumber":94,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":95,"author":{"gitId":"MaYuehan"},"content":" * @return The name of the patient whose appointment is to be deleted.","lastModifiedDate":"2024-03-13"},{"lineNumber":96,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":97,"author":{"gitId":"MaYuehan"},"content":" public String getPatientName() {","lastModifiedDate":"2024-03-13"},{"lineNumber":98,"author":{"gitId":"MaYuehan"},"content":" return patientName;","lastModifiedDate":"2024-03-13"},{"lineNumber":99,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":100,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"javierng2knus":1,"MaYuehan":99}},{"path":"src/main/java/vitalconnect/logic/commands/DeleteCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.commands;","lastModifiedDate":"2024-03-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":"MaYuehan"},"content":"import vitalconnect.commons.core.index.Index;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.Messages;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"javierng2knus"},"content":" * Deletes a person identified using it\u0027s displayed index from the clinic.","lastModifiedDate":"2024-03-11"},{"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":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Person: %1$s\";","lastModifiedDate":"2016-08-24"},{"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":{"javierng2knus":1,"MaYuehan":7,"-":61}},{"path":"src/main/java/vitalconnect/logic/commands/DeleteContactCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"package vitalconnect.logic.commands;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.Messages.MESSAGE_PERSON_NOT_FOUND;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_NRIC;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.Address;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.ContactInformation;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.Email;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.Phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.identificationinformation.Nric;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":" * Deletes a person\u0027s contact from the clinic.","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"Ella-e"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"Ella-e"},"content":"public class DeleteContactCommand extends Command {","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"javierng2knus"},"content":" public static final String COMMAND_WORD \u003d \"deletec\";","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"javierng2knus"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Contacts deleted successfully\";","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"javierng2knus"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Delete the contact information of a person. \"","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"javierng2knus"},"content":" + \"Parameter: \\n\"","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"Ella-e"},"content":" + PREFIX_NRIC + \"NRIC\\n\"","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"Ella-e"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"Ella-e"},"content":" + PREFIX_NRIC + \"S1234567D \";","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"Ella-e"},"content":" private final Nric nric;","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"Ella-e"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"Ella-e"},"content":" * Creates an AddCommand to add the specified {@code ContactInformation}","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"Ella-e"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"Ella-e"},"content":" public DeleteContactCommand(Nric nric) {","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"Ella-e"},"content":" requireNonNull(nric);","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"Ella-e"},"content":" this.nric \u003d nric;","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"Ella-e"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"Ella-e"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"Ella-e"},"content":" // if person not exist, throw error","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"Ella-e"},"content":" Person personToEdit \u003d model.findPersonByNric(nric);","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"Ella-e"},"content":" if (personToEdit \u003d\u003d null) {","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"Ella-e"},"content":" throw new CommandException(MESSAGE_PERSON_NOT_FOUND);","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"Ella-e"},"content":" // Erase the current contact information","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"Ella-e"},"content":" ContactInformation contactInformation \u003d new ContactInformation(new Email(\"\"), new Phone(\"\"), new Address(\"\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"Ella-e"},"content":" model.updatePersonContactInformation(nric, contactInformation);","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"Ella-e"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"Ella-e"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"Ella-e"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"Ella-e"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"Ella-e"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"Ella-e"},"content":" if (!(other instanceof DeleteContactCommand)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"Ella-e"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"Ella-e"},"content":" return nric.equals(((DeleteContactCommand) other).nric);","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"javierng2knus":4,"Ella-e":62}},{"path":"src/main/java/vitalconnect/logic/commands/DeleteMedicalCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SeaHogs"},"content":"package vitalconnect.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"SeaHogs"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.logic.Messages.MESSAGE_PERSON_NOT_FOUND;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_NRIC;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.person.identificationinformation.Nric;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.person.medicalinformation.Height;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.person.medicalinformation.MedicalInformation;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.person.medicalinformation.Weight;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"SeaHogs"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"SeaHogs"},"content":" * Deletes a person\u0027s contact from the clinic.","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"SeaHogs"},"content":"public class DeleteMedicalCommand extends Command {","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"javierng2knus"},"content":" public static final String COMMAND_WORD \u003d \"deletem\";","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"SeaHogs"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Medical information deleted successfully\";","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"javierng2knus"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Delete the medical information of a person. \"","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"javierng2knus"},"content":" + \"Parameter: \\n\"","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"SeaHogs"},"content":" + PREFIX_NRIC + \"NRIC\\n\"","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"SeaHogs"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"SeaHogs"},"content":" + PREFIX_NRIC + \"S1234567D \";","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"SeaHogs"},"content":" private final Nric nric;","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"SeaHogs"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"SeaHogs"},"content":" * Creates an AddCommand to add the specified {@code ContactInformation}","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"SeaHogs"},"content":" public DeleteMedicalCommand(Nric nric) {","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"SeaHogs"},"content":" requireNonNull(nric);","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"SeaHogs"},"content":" this.nric \u003d nric;","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"SeaHogs"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"SeaHogs"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"SeaHogs"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"SeaHogs"},"content":" Person personToEdit \u003d model.findPersonByNric(nric);","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"SeaHogs"},"content":" if (personToEdit \u003d\u003d null) {","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"SeaHogs"},"content":" throw new CommandException(MESSAGE_PERSON_NOT_FOUND);","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"SeaHogs"},"content":" MedicalInformation medicalInformation \u003d new MedicalInformation(new Height(\"\"), new Weight(\"\"));","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"SeaHogs"},"content":" model.updatePersonMedicalInformation(nric, medicalInformation);","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"SeaHogs"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"SeaHogs"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"SeaHogs"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"SeaHogs"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"SeaHogs"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"SeaHogs"},"content":" return true;","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"SeaHogs"},"content":" if (!(other instanceof DeleteMedicalCommand)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"SeaHogs"},"content":" return false;","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"SeaHogs"},"content":" return nric.equals(((DeleteMedicalCommand) other).nric);","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"SeaHogs"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"javierng2knus":3,"SeaHogs":61}},{"path":"src/main/java/vitalconnect/logic/commands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.commands;","lastModifiedDate":"2024-03-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":"MaYuehan"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"javierng2knus"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_NRIC;","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.core.index.Index;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.util.CollectionUtil;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.Messages;","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"javierng2knus"},"content":"import vitalconnect.model.person.identificationinformation.IdentificationInformation;","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.identificationinformation.Name;","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"javierng2knus"},"content":"import vitalconnect.model.person.identificationinformation.Nric;","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26"},{"lineNumber":24,"author":{"gitId":"javierng2knus"},"content":" * Edits the details of an existing person in the clinic.","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the person identified \"","lastModifiedDate":"2016-12-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06"},{"lineNumber":35,"author":{"gitId":"SeaHogs"},"content":" + \"[\" + PREFIX_NRIC + \"NRIC] \";","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26"},{"lineNumber":38,"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":39,"author":{"gitId":"javierng2knus"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the clinic.\";","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","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.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":73,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":84,"author":{"gitId":"javierng2knus"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getIdentificationInformation().getName());","lastModifiedDate":"2024-03-15"},{"lineNumber":85,"author":{"gitId":"javierng2knus"},"content":" Nric updatedNric \u003d editPersonDescriptor.getNric().orElse(personToEdit.getIdentificationInformation().getNric());","lastModifiedDate":"2024-03-15"},{"lineNumber":86,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"javierng2knus"},"content":" IdentificationInformation updatedInfo \u003d new IdentificationInformation(updatedName, updatedNric);","lastModifiedDate":"2024-03-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":89,"author":{"gitId":"javierng2knus"},"content":" if (personToEdit.hasContactInformation()) {","lastModifiedDate":"2024-03-15"},{"lineNumber":90,"author":{"gitId":"SeaHogs"},"content":" return new Person(updatedInfo, personToEdit.getContactInformation());","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"javierng2knus"},"content":" } else {","lastModifiedDate":"2024-03-15"},{"lineNumber":92,"author":{"gitId":"SeaHogs"},"content":" return new Person(updatedInfo);","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"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(\"index\", index)","lastModifiedDate":"2019-02-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":" .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":"2016-12-26"},{"lineNumber":121,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26"},{"lineNumber":122,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26"},{"lineNumber":123,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":124,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26"},{"lineNumber":125,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21"},{"lineNumber":126,"author":{"gitId":"javierng2knus"},"content":" private Nric nric;","lastModifiedDate":"2024-03-15"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":128,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":130,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":131,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11"},{"lineNumber":132,"author":{"gitId":"SeaHogs"},"content":" * A defensive copy of {@code allergyTags} is used internally.","lastModifiedDate":"2024-03-18"},{"lineNumber":133,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":134,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26"},{"lineNumber":135,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15"},{"lineNumber":136,"author":{"gitId":"javierng2knus"},"content":" setNric(toCopy.nric);","lastModifiedDate":"2024-03-15"},{"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":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26"},{"lineNumber":141,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26"},{"lineNumber":143,"author":{"gitId":"SeaHogs"},"content":" return CollectionUtil.isAnyNonNull(name, nric);","lastModifiedDate":"2024-03-18"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":146,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21"},{"lineNumber":147,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":150,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":151,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21"},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":154,"author":{"gitId":"javierng2knus"},"content":" public void setNric(Nric nric) {","lastModifiedDate":"2024-03-15"},{"lineNumber":155,"author":{"gitId":"javierng2knus"},"content":" this.nric \u003d nric;","lastModifiedDate":"2024-03-15"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":158,"author":{"gitId":"javierng2knus"},"content":" public Optional\u003cNric\u003e getNric() {","lastModifiedDate":"2024-03-15"},{"lineNumber":159,"author":{"gitId":"javierng2knus"},"content":" return Optional.ofNullable(nric);","lastModifiedDate":"2024-03-15"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":163,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":164,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":165,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":166,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":169,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":170,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05"},{"lineNumber":171,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":174,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":175,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":176,"author":{"gitId":"SeaHogs"},"content":" \u0026\u0026 Objects.equals(nric, otherEditPersonDescriptor.nric);","lastModifiedDate":"2024-03-18"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":183,"author":{"gitId":"javierng2knus"},"content":" .add(\"nric\", nric)","lastModifiedDate":"2024-03-15"},{"lineNumber":184,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":187,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"javierng2knus":18,"MaYuehan":11,"-":151,"SeaHogs":7}},{"path":"src/main/java/vitalconnect/logic/commands/ExitCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.commands;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-13"},{"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":"javierng2knus"},"content":" public static final String MESSAGE_EXIT_ACKNOWLEDGEMENT \u003d \"Exiting app as requested ...\";","lastModifiedDate":"2024-03-11"},{"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":"MaYuehan"},"content":" return new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT,","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":" false, true, CommandResult.Type.SHOW_PERSONS);","lastModifiedDate":"2024-03-17"},{"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":{"javierng2knus":1,"MaYuehan":4,"-":15}},{"path":"src/main/java/vitalconnect/logic/commands/FindCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.commands;","lastModifiedDate":"2024-03-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":"MaYuehan"},"content":"import vitalconnect.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.Messages;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.identificationinformation.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22"},{"lineNumber":11,"author":{"gitId":"javierng2knus"},"content":" * Finds and lists all persons in clinic whose name contains any of the argument keywords.","lastModifiedDate":"2024-03-11"},{"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":{"javierng2knus":1,"MaYuehan":5,"-":52}},{"path":"src/main/java/vitalconnect/logic/commands/HelpCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.commands;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":" return new CommandResult(SHOWING_HELP_MESSAGE,","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":" true, false, CommandResult.Type.SHOW_PERSONS);","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"MaYuehan":4,"-":18}},{"path":"src/main/java/vitalconnect/logic/commands/ListAptCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.commands;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import java.util.List;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Appointment;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":" * Represents a command to list all appointments in the address book.","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":" * This command allows users to view all scheduled appointments, sorted in the order they were added.","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":"public class ListAptCommand extends Command {","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"javierng2knus"},"content":" public static final String COMMAND_WORD \u003d \"lista\";","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all appointments\";","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" * Executes the command to list all appointments in the address book.","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" * \u003cp\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":" * If no appointments are present in the address book, a message indicating","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" * that no appointments are in the list is returned. Otherwise, all appointments","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" * are listed, each prefixed with an index for easy reference.","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" * @param model {@code Model} which the command should operate on.","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" * @return A {@code CommandResult} object containing the list of appointments if any,","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" * or a message indicating that no appointments are in the list.","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" List\u003cAppointment\u003e lastShownList \u003d model.getFilteredAppointmentList();","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" if (lastShownList.size() \u003c 1) {","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" return new CommandResult(\"No appointment is in the list.\",","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" false, false, CommandResult.Type.SHOW_APPOINTMENTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":" return new CommandResult(MESSAGE_SUCCESS,","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":" false, false, CommandResult.Type.SHOW_APPOINTMENTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"javierng2knus":1,"MaYuehan":44}},{"path":"src/main/java/vitalconnect/logic/commands/ListCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.commands;","lastModifiedDate":"2024-03-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":"MaYuehan"},"content":"import static vitalconnect.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"javierng2knus"},"content":" * Lists all persons in the clinic to the user.","lastModifiedDate":"2024-03-11"},{"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":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all persons\";","lastModifiedDate":"2016-09-21"},{"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":{"javierng2knus":1,"MaYuehan":3,"-":20}},{"path":"src/main/java/vitalconnect/logic/commands/ListContactCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"package vitalconnect.logic.commands;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":" * List all the contact information of a person with their name","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":"public class ListContactCommand extends Command {","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"javierng2knus"},"content":" public static final String COMMAND_WORD \u003d \"listc\";","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"javierng2knus"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all persons with their contact information\";","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"javierng2knus":2,"Ella-e":20}},{"path":"src/main/java/vitalconnect/logic/commands/ListMedicalCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SeaHogs"},"content":"package vitalconnect.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"SeaHogs"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.model.Model.PREDICATE_SHOW_ALL_MEDICAL;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"SeaHogs"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"SeaHogs"},"content":" * List all the medical information of a person with their name","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"SeaHogs"},"content":"public class ListMedicalCommand extends Command {","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"javierng2knus"},"content":" public static final String COMMAND_WORD \u003d \"listm\";","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"javierng2knus"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all persons with their medical information\";","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"SeaHogs"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"SeaHogs"},"content":" * @param model {@code Model} which the command should operate on.","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"SeaHogs"},"content":" * @return {@code CommandResult} that describes the result of executing this command","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"SeaHogs"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"SeaHogs"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"SeaHogs"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"SeaHogs"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_MEDICAL);","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"SeaHogs"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"SeaHogs"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"javierng2knus":2,"SeaHogs":24}},{"path":"src/main/java/vitalconnect/logic/commands/exceptions/CommandException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.commands.exceptions;","lastModifiedDate":"2024-03-13"},{"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":{"MaYuehan":1,"-":16}},{"path":"src/main/java/vitalconnect/logic/parser/AddCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.parser;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"javierng2knus"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_NRIC;","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.AddCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"javierng2knus"},"content":"import vitalconnect.model.person.identificationinformation.IdentificationInformation;","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.identificationinformation.Name;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"javierng2knus"},"content":"import vitalconnect.model.person.identificationinformation.Nric;","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":28,"author":{"gitId":"SeaHogs"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_NRIC);","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":30,"author":{"gitId":"javierng2knus"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_NRIC)","lastModifiedDate":"2024-03-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":35,"author":{"gitId":"javierng2knus"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_NRIC);","lastModifiedDate":"2024-03-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":37,"author":{"gitId":"javierng2knus"},"content":" Nric nric \u003d ParserUtil.parseNric(argMultimap.getValue(PREFIX_NRIC).get());","lastModifiedDate":"2024-03-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":39,"author":{"gitId":"javierng2knus"},"content":" IdentificationInformation iInfo \u003d new IdentificationInformation(name, nric);","lastModifiedDate":"2024-03-15"},{"lineNumber":40,"author":{"gitId":"SeaHogs"},"content":" Person person \u003d new Person(iInfo);","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":49,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"javierng2knus":7,"MaYuehan":7,"-":37,"SeaHogs":2}},{"path":"src/main/java/vitalconnect/logic/parser/AddContactCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"package vitalconnect.logic.parser;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_NRIC;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.logic.commands.AddContactCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.Address;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.ContactInformation;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.Email;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.Phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.identificationinformation.Nric;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"Ella-e"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"Ella-e"},"content":"public class AddContactCommandParser implements Parser\u003cAddContactCommand\u003e {","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"Ella-e"},"content":" public AddContactCommand parse(String userInput) throws ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"Ella-e"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"Ella-e"},"content":" ArgumentTokenizer.tokenize(userInput, PREFIX_NRIC,","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"Ella-e"},"content":" PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"Ella-e"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NRIC)","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"Ella-e"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"Ella-e"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddContactCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"Ella-e"},"content":" Phone phone \u003d new Phone(\"\");","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"Ella-e"},"content":" Email email \u003d new Email(\"\");","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"Ella-e"},"content":" Address address \u003d new Address(\"\");","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"Ella-e"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"Ella-e"},"content":" phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"Ella-e"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"Ella-e"},"content":" email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"Ella-e"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"Ella-e"},"content":" address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"Ella-e"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NRIC, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"Ella-e"},"content":" Nric nric \u003d ParserUtil.parseNric(argMultimap.getValue(PREFIX_NRIC).get());","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"Ella-e"},"content":" // Check if at least one of the fields is present","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"Ella-e"},"content":" if (phone.isEmpty() \u0026\u0026 email.isEmpty() \u0026\u0026 address.isEmpty()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"Ella-e"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddContactCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"Ella-e"},"content":" ContactInformation contactInformation \u003d new ContactInformation(email, phone, address);","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"Ella-e"},"content":" return new AddContactCommand(nric, contactInformation);","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"Ella-e"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"Ella-e"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"Ella-e"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"Ella-e"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"Ella-e"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"Ella-e"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"Ella-e":66}},{"path":"src/main/java/vitalconnect/logic/parser/AddMedInfoCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SeaHogs"},"content":"package vitalconnect.logic.parser;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_ALLERGYTAG;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_HEIGHT;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_NRIC;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_WEIGHT;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"SeaHogs"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"SeaHogs"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.logic.commands.AddMedInfoCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.allergytag.AllergyTag;","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.person.identificationinformation.Nric;","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.person.medicalinformation.Height;","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.person.medicalinformation.MedicalInformation;","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.person.medicalinformation.Weight;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"SeaHogs"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"SeaHogs"},"content":" * Parses input arguments and creates a new AddMedInfoCommand object","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"SeaHogs"},"content":"public class AddMedInfoCommandParser implements Parser\u003cAddMedInfoCommand\u003e {","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"SeaHogs"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"SeaHogs"},"content":" public AddMedInfoCommand parse(String userInput) throws ParseException {","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"SeaHogs"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"SeaHogs"},"content":" ArgumentTokenizer.tokenize(userInput, PREFIX_NRIC, PREFIX_HEIGHT, PREFIX_WEIGHT, PREFIX_ALLERGYTAG);","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"SeaHogs"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NRIC, PREFIX_HEIGHT, PREFIX_WEIGHT)","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"SeaHogs"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"SeaHogs"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddMedInfoCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"SeaHogs"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NRIC, PREFIX_HEIGHT, PREFIX_WEIGHT);","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"SeaHogs"},"content":" Height height \u003d ParserUtil.parseHeight(argMultimap.getValue(PREFIX_HEIGHT).get());","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"SeaHogs"},"content":" Weight weight \u003d ParserUtil.parseWeight(argMultimap.getValue(PREFIX_WEIGHT).get());","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"SeaHogs"},"content":" Set\u003cAllergyTag\u003e allergyTags \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_ALLERGYTAG));","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"SeaHogs"},"content":" Nric nric \u003d ParserUtil.parseNric(argMultimap.getValue(PREFIX_NRIC).get());","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"SeaHogs"},"content":" if (height.isEmpty() \u0026\u0026 weight.isEmpty() \u0026\u0026 Nric.isValidNric(nric.toString())) {","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"SeaHogs"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddMedInfoCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"SeaHogs"},"content":" MedicalInformation medicalInformation \u003d new MedicalInformation(height, weight, allergyTags);","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"SeaHogs"},"content":" return new AddMedInfoCommand(nric, medicalInformation);","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"SeaHogs"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"SeaHogs"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"SeaHogs"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"SeaHogs"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"SeaHogs"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"SeaHogs"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"SeaHogs":56}},{"path":"src/main/java/vitalconnect/logic/parser/ArgumentMultimap.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.parser;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.logic.Messages;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":"}","lastModifiedDate":"2017-03-08"}],"authorContributionMap":{"MaYuehan":3,"-":75}},{"path":"src/main/java/vitalconnect/logic/parser/ArgumentTokenizer.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.parser;","lastModifiedDate":"2024-03-13"},{"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":{"MaYuehan":1,"-":147}},{"path":"src/main/java/vitalconnect/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.parser;","lastModifiedDate":"2024-03-13"},{"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":"javierng2knus"},"content":" public static final Prefix PREFIX_NRIC \u003d new Prefix(\"ic/\");","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":14,"author":{"gitId":"SeaHogs"},"content":" public static final Prefix PREFIX_ALLERGYTAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"SeaHogs"},"content":" public static final Prefix PREFIX_HEIGHT \u003d new Prefix(\"h/\");","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"SeaHogs"},"content":" public static final Prefix PREFIX_WEIGHT \u003d new Prefix(\"w/\");","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"javierng2knus":1,"MaYuehan":1,"-":13,"SeaHogs":3}},{"path":"src/main/java/vitalconnect/logic/parser/ClinicParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.parser;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.commons.core.LogsCenter;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.logic.commands.AddCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.logic.commands.AddContactCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.logic.commands.AddMedInfoCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.logic.commands.ClearCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.logic.commands.Command;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.logic.commands.CreateAptCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.logic.commands.DeleteAptCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.logic.commands.DeleteContactCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.logic.commands.DeleteMedicalCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.logic.commands.EditCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.logic.commands.ExitCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.logic.commands.FindCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.logic.commands.HelpCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.logic.commands.ListAptCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.logic.commands.ListCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.logic.commands.ListMedicalCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"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":"javierng2knus"},"content":"public class ClinicParser {","lastModifiedDate":"2024-03-11"},{"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":"javierng2knus"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ClinicParser.class);","lastModifiedDate":"2024-03-11"},{"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":"","lastModifiedDate":"2016-08-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":85,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":88,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":91,"author":{"gitId":"MaYuehan"},"content":" case CreateAptCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-10"},{"lineNumber":92,"author":{"gitId":"MaYuehan"},"content":" return new CreateAptCommandParser().parse(arguments);","lastModifiedDate":"2024-03-10"},{"lineNumber":93,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":94,"author":{"gitId":"MaYuehan"},"content":" case ListAptCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-10"},{"lineNumber":95,"author":{"gitId":"MaYuehan"},"content":" return new ListAptCommand();","lastModifiedDate":"2024-03-10"},{"lineNumber":96,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":97,"author":{"gitId":"MaYuehan"},"content":" case DeleteAptCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-10"},{"lineNumber":98,"author":{"gitId":"MaYuehan"},"content":" return new DeleteAptCommandParser().parse(arguments);","lastModifiedDate":"2024-03-10"},{"lineNumber":99,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":100,"author":{"gitId":"Ella-e"},"content":" case AddContactCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"Ella-e"},"content":" return new AddContactCommandParser().parse(arguments);","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"Ella-e"},"content":" case DeleteContactCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"Ella-e"},"content":" return new DeleteContactCommandParser().parse(arguments);","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"SeaHogs"},"content":" case AddMedInfoCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-18"},{"lineNumber":107,"author":{"gitId":"SeaHogs"},"content":" return new AddMedInfoCommandParser().parse(arguments);","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":109,"author":{"gitId":"SeaHogs"},"content":" case ListMedicalCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-19"},{"lineNumber":110,"author":{"gitId":"SeaHogs"},"content":" return new ListMedicalCommand();","lastModifiedDate":"2024-03-19"},{"lineNumber":111,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":112,"author":{"gitId":"SeaHogs"},"content":" case DeleteMedicalCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-19"},{"lineNumber":113,"author":{"gitId":"SeaHogs"},"content":" return new DeleteMedicalCommandParser().parse(arguments);","lastModifiedDate":"2024-03-19"},{"lineNumber":114,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":115,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26"},{"lineNumber":116,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29"},{"lineNumber":117,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"javierng2knus":2,"MaYuehan":16,"Ella-e":6,"-":71,"SeaHogs":26}},{"path":"src/main/java/vitalconnect/logic/parser/CreateAptCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.parser;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.CreateAptCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":" * Parses input arguments and creates a new CreateAptCommand object.","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":" * This parser is responsible for handling the raw input arguments provided","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":" * for the creation of an appointment and ensuring they meet the expected format","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":" * which includes the patient\u0027s NRIC and the appointment date and time.","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"public class CreateAptCommandParser {","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":" * Parses the given {@code String} of arguments in the context of the CreateAptCommand","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":" * and returns a CreateAptCommand object for execution.","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" * \u003cp\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" * This method expects the arguments to contain the NRIC of a patient followed by","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":" * the \u0027/time\u0027 keyword and the appointment datetime in \u0027dd/MM/yyyy HHmm\u0027 format.","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" * If the arguments do not conform to this expected format, a ParseException is thrown.","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":" * @param args The input arguments to be parsed, including the patient\u0027s NRIC and","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" * the appointment datetime.","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" * @return A new CreateAptCommand object encapsulating the parsed patient NRIC","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" * and appointment datetime.","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" * @throws ParseException If the provided arguments do not conform to the expected","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" * format or if other parsing errors occur.","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" public CreateAptCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" final String[] nameAndDateTime \u003d args.trim().split(\"/time\", 2);","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" if (nameAndDateTime.length \u003c 2) {","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" throw new ParseException(CreateAptCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" String ic \u003d nameAndDateTime[0].trim();","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" String dateTimeStr \u003d nameAndDateTime[1].trim();","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":" return new CreateAptCommand(ic, dateTimeStr);","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"MaYuehan":43}},{"path":"src/main/java/vitalconnect/logic/parser/DeleteAptCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.parser;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.DeleteAptCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":" * Parses input arguments to create a new {@code DeleteAptCommand} object.","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":" * This parser is responsible for interpreting the raw input arguments provided","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":" * for the deletion of an appointment and ensuring they meet the expected format.","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"public class DeleteAptCommandParser implements Parser\u003cDeleteAptCommand\u003e {","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteAptCommand","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":" * and returns an instance of DeleteAptCommand for execution.","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" * \u003cp\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":" * The method expects the arguments to contain an index followed by the \u0027/name\u0027 keyword","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":" * and the patient\u0027s name. The index should be a positive integer indicating the position","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" * of the appointment in the list as shown to the user. The patient\u0027s name identifies","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" * whose appointment is to be deleted. If the arguments do not conform to this expected","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":" * format, a ParseException is thrown with a message indicating proper usage.","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" * @param args The input arguments to be parsed.","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":" * @return A new instance of DeleteAptCommand encapsulating the specified index","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" * and patient\u0027s name for the appointment to be deleted.","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" * @throws ParseException If the provided arguments do not conform to the expected","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" * format or if other parsing errors occur, such as an invalid","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" * integer for the index.","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" public DeleteAptCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" try {","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" if (!trimmedArgs.matches(\"\\\\d+ /name .+\")) {","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" throw new ParseException(DeleteAptCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" String[] parts \u003d trimmedArgs.split(\"/name\");","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" if (parts.length !\u003d 2) {","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" throw new ParseException(DeleteAptCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":" int index \u003d Integer.parseInt(parts[0].trim());","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":" String patientName \u003d parts[1].trim();","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":" if (index \u003c\u003d 0) {","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":" throw new ParseException(\"Index must be a positive integer.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":" return new DeleteAptCommand(index, patientName);","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":" throw new ParseException(\"The index provided is not a valid integer.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"MaYuehan":53}},{"path":"src/main/java/vitalconnect/logic/parser/DeleteCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.parser;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.core.index.Index;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-13"},{"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":"-"},"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":"2017-03-11"},{"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":"2017-05-15"},{"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":{"MaYuehan":5,"-":24}},{"path":"src/main/java/vitalconnect/logic/parser/DeleteContactCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"package vitalconnect.logic.parser;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_NRIC;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.logic.commands.DeleteContactCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.identificationinformation.Nric;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":" * Parser of deleteContactCommand","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":"public class DeleteContactCommandParser implements Parser\u003cDeleteContactCommand\u003e {","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":" public DeleteContactCommand parse(String userInput) throws ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":" ArgumentTokenizer.tokenize(userInput, PREFIX_NRIC);","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NRIC)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"Ella-e"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteContactCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"Ella-e"},"content":" Nric nric \u003d ParserUtil.parseNric(argMultimap.getValue(PREFIX_NRIC).get());","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"Ella-e"},"content":" return new DeleteContactCommand(nric);","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"Ella-e"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"Ella-e"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"Ella-e"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"Ella-e"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"Ella-e"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"Ella-e"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"Ella-e":34}},{"path":"src/main/java/vitalconnect/logic/parser/DeleteMedicalCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SeaHogs"},"content":"package vitalconnect.logic.parser;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_NRIC;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"SeaHogs"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.logic.commands.DeleteMedicalCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.person.identificationinformation.Nric;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"SeaHogs"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"SeaHogs"},"content":" * Parses user input into a {@code DeleteMedicalCommand}.","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"SeaHogs"},"content":" * This class ensures that the user input contains the necessary prefix for deleting medical information.","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"SeaHogs"},"content":"public class DeleteMedicalCommandParser implements Parser\u003cDeleteMedicalCommand\u003e {","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"SeaHogs"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"SeaHogs"},"content":" * Parses the user input and returns a {@code DeleteMedicalCommand} if the input is valid.","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"SeaHogs"},"content":" * @param userInput The user input string.","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"SeaHogs"},"content":" * @return A {@code DeleteMedicalCommand} representing the parsed user input.","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"SeaHogs"},"content":" * @throws ParseException If the user input does not conform to the expected format.","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"SeaHogs"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"SeaHogs"},"content":" public DeleteMedicalCommand parse(String userInput) throws ParseException {","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"SeaHogs"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"SeaHogs"},"content":" ArgumentTokenizer.tokenize(userInput, PREFIX_NRIC);","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"SeaHogs"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NRIC)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"SeaHogs"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteMedicalCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"SeaHogs"},"content":" Nric nric \u003d ParserUtil.parseNric(argMultimap.getValue(PREFIX_NRIC).get());","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"SeaHogs"},"content":" return new DeleteMedicalCommand(nric);","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"SeaHogs"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"SeaHogs"},"content":" * Checks if all the specified prefixes are present and non-empty in the given {@code ArgumentMultimap}.","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"SeaHogs"},"content":" * @param argumentMultimap The {@code ArgumentMultimap} containing the parsed arguments.","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"SeaHogs"},"content":" * @param prefixes The prefixes to check.","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"SeaHogs"},"content":" * @return {@code true} if all prefixes are present and non-empty, {@code false} otherwise.","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"SeaHogs"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"SeaHogs"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"SeaHogs"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"SeaHogs":43}},{"path":"src/main/java/vitalconnect/logic/parser/EditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.parser;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import static vitalconnect.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_ALLERGYTAG;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"javierng2knus"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_NRIC;","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.core.index.Index;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.EditCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-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 input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":27,"author":{"gitId":"SeaHogs"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_NRIC, PREFIX_ALLERGYTAG);","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10"},{"lineNumber":34,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":37,"author":{"gitId":"javierng2knus"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_NRIC);","lastModifiedDate":"2024-03-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":39,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-01-26"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":41,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":42,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":44,"author":{"gitId":"javierng2knus"},"content":" if (argMultimap.getValue(PREFIX_NRIC).isPresent()) {","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"javierng2knus"},"content":" editPersonDescriptor.setNric(ParserUtil.parseNric(argMultimap.getValue(PREFIX_NRIC).get()));","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":54,"author":{"gitId":"SeaHogs"},"content":" // for later use","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"SeaHogs"},"content":" // /**","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"SeaHogs"},"content":" // * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cAllergyTag\u003e} if {@code tags} is non-empty.","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"SeaHogs"},"content":" // * If {@code tags} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"SeaHogs"},"content":" // * {@code Set\u003cAllergyTag\u003e} containing zero tags.","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"SeaHogs"},"content":" // */","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"SeaHogs"},"content":" // private Optional\u003cSet\u003cAllergyTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"SeaHogs"},"content":" // assert tags !\u003d null;","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"SeaHogs"},"content":" //","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"SeaHogs"},"content":" // if (tags.isEmpty()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"SeaHogs"},"content":" // return Optional.empty();","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"SeaHogs"},"content":" // }","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"SeaHogs"},"content":" // Collection\u003cString\u003e tagSet \u003d tags.size() \u003d\u003d 1 \u0026\u0026 tags.contains(\"\") ? Collections.emptySet() : tags;","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"SeaHogs"},"content":" // return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"SeaHogs"},"content":" // }","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"javierng2knus":4,"MaYuehan":7,"-":41,"SeaHogs":17}},{"path":"src/main/java/vitalconnect/logic/parser/FindCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.parser;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-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":"MaYuehan"},"content":"import vitalconnect.logic.commands.FindCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.identificationinformation.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-13"},{"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":{"MaYuehan":5,"-":28}},{"path":"src/main/java/vitalconnect/logic/parser/Parser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.parser;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.Command;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-13"},{"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":{"MaYuehan":3,"-":13}},{"path":"src/main/java/vitalconnect/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.parser;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.commons.core.index.Index;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.util.StringUtil;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.allergytag.AllergyTag;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.contactinformation.Address;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.contactinformation.Email;","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.contactinformation.Phone;","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.identificationinformation.Name;","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"javierng2knus"},"content":"import vitalconnect.model.person.identificationinformation.Nric;","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.person.medicalinformation.Height;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.person.medicalinformation.Weight;","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18"},{"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":"javierng2knus"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":57,"author":{"gitId":"javierng2knus"},"content":" * Parses a {@code String nric} into a {@code Nric}.","lastModifiedDate":"2024-03-15"},{"lineNumber":58,"author":{"gitId":"javierng2knus"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-15"},{"lineNumber":59,"author":{"gitId":"javierng2knus"},"content":" *","lastModifiedDate":"2024-03-15"},{"lineNumber":60,"author":{"gitId":"javierng2knus"},"content":" * @throws ParseException if the given {@code nric} is invalid.","lastModifiedDate":"2024-03-15"},{"lineNumber":61,"author":{"gitId":"javierng2knus"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":62,"author":{"gitId":"javierng2knus"},"content":" public static Nric parseNric(String nric) throws ParseException {","lastModifiedDate":"2024-03-15"},{"lineNumber":63,"author":{"gitId":"javierng2knus"},"content":" requireNonNull(nric);","lastModifiedDate":"2024-03-15"},{"lineNumber":64,"author":{"gitId":"javierng2knus"},"content":" String trimmedName \u003d nric.trim();","lastModifiedDate":"2024-03-15"},{"lineNumber":65,"author":{"gitId":"javierng2knus"},"content":" if (!Nric.isValidNric(trimmedName)) {","lastModifiedDate":"2024-03-15"},{"lineNumber":66,"author":{"gitId":"javierng2knus"},"content":" throw new ParseException(Nric.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":67,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":68,"author":{"gitId":"javierng2knus"},"content":" return new Nric(trimmedName);","lastModifiedDate":"2024-03-15"},{"lineNumber":69,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":70,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":74,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":78,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30"},{"lineNumber":79,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":80,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":81,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","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":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":89,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":93,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30"},{"lineNumber":94,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":95,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":96,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":98,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","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":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":104,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":108,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":109,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":110,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":111,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":113,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","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":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":118,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":119,"author":{"gitId":"SeaHogs"},"content":" * Parses a {@code String allergytag} into a {@code AllergyTag}.","lastModifiedDate":"2024-03-18"},{"lineNumber":120,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":121,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":122,"author":{"gitId":"SeaHogs"},"content":" * @throws ParseException if the given {@code allergytag} is invalid.","lastModifiedDate":"2024-03-18"},{"lineNumber":123,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":124,"author":{"gitId":"SeaHogs"},"content":" public static AllergyTag parseTag(String tag) throws ParseException {","lastModifiedDate":"2024-03-18"},{"lineNumber":125,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30"},{"lineNumber":126,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":127,"author":{"gitId":"SeaHogs"},"content":" if (!AllergyTag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":128,"author":{"gitId":"SeaHogs"},"content":" throw new ParseException(AllergyTag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":130,"author":{"gitId":"SeaHogs"},"content":" return new AllergyTag(trimmedTag);","lastModifiedDate":"2024-03-18"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":133,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":134,"author":{"gitId":"SeaHogs"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cAllergyTag\u003e}.","lastModifiedDate":"2024-03-18"},{"lineNumber":135,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":136,"author":{"gitId":"SeaHogs"},"content":" public static Set\u003cAllergyTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2024-03-18"},{"lineNumber":137,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15"},{"lineNumber":138,"author":{"gitId":"SeaHogs"},"content":" final Set\u003cAllergyTag\u003e allergyTagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-18"},{"lineNumber":139,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11"},{"lineNumber":140,"author":{"gitId":"SeaHogs"},"content":" allergyTagSet.add(parseTag(tagName));","lastModifiedDate":"2024-03-18"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":142,"author":{"gitId":"SeaHogs"},"content":" return allergyTagSet;","lastModifiedDate":"2024-03-18"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":144,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":145,"author":{"gitId":"SeaHogs"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":146,"author":{"gitId":"SeaHogs"},"content":" * Parses a {@code String height} into a {@code HEIGHT}.","lastModifiedDate":"2024-03-18"},{"lineNumber":147,"author":{"gitId":"SeaHogs"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-18"},{"lineNumber":148,"author":{"gitId":"SeaHogs"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":149,"author":{"gitId":"SeaHogs"},"content":" * @throws ParseException if the given {@code HEIGHT} is invalid.","lastModifiedDate":"2024-03-18"},{"lineNumber":150,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":151,"author":{"gitId":"SeaHogs"},"content":" public static Height parseHeight(String height) {","lastModifiedDate":"2024-03-18"},{"lineNumber":152,"author":{"gitId":"SeaHogs"},"content":" requireNonNull(height);","lastModifiedDate":"2024-03-18"},{"lineNumber":153,"author":{"gitId":"SeaHogs"},"content":" String trimmedHeight \u003d height.trim();","lastModifiedDate":"2024-03-18"},{"lineNumber":154,"author":{"gitId":"SeaHogs"},"content":" return new Height(trimmedHeight);","lastModifiedDate":"2024-03-18"},{"lineNumber":155,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":156,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":157,"author":{"gitId":"SeaHogs"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":158,"author":{"gitId":"SeaHogs"},"content":" * Parses a {@code String weight} into a {@code WEIGHT}.","lastModifiedDate":"2024-03-18"},{"lineNumber":159,"author":{"gitId":"SeaHogs"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-18"},{"lineNumber":160,"author":{"gitId":"SeaHogs"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":161,"author":{"gitId":"SeaHogs"},"content":" * @throws ParseException if the given {@code WEIGHT} is invalid.","lastModifiedDate":"2024-03-18"},{"lineNumber":162,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":163,"author":{"gitId":"SeaHogs"},"content":" public static Weight parseWeight(String weight) {","lastModifiedDate":"2024-03-18"},{"lineNumber":164,"author":{"gitId":"SeaHogs"},"content":" requireNonNull(weight);","lastModifiedDate":"2024-03-18"},{"lineNumber":165,"author":{"gitId":"SeaHogs"},"content":" String trimmedWeight \u003d weight.trim();","lastModifiedDate":"2024-03-18"},{"lineNumber":166,"author":{"gitId":"SeaHogs"},"content":" return new Weight(trimmedWeight);","lastModifiedDate":"2024-03-18"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":168,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"javierng2knus":16,"MaYuehan":8,"-":105,"SeaHogs":39}},{"path":"src/main/java/vitalconnect/logic/parser/Prefix.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.parser;","lastModifiedDate":"2024-03-13"},{"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":{"MaYuehan":1,"-":41}},{"path":"src/main/java/vitalconnect/logic/parser/exceptions/ParseException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.parser.exceptions;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-13"},{"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":{"MaYuehan":2,"-":15}},{"path":"src/main/java/vitalconnect/model/Appointment.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.model;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":" * Represents an appointment with a patient. Each appointment has a patient name","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":" * and a scheduled date and time.","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"public class Appointment {","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":" private String patientName;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":" private String patientIc;","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":" private LocalDateTime dateTime;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" * Constructs an {@code Appointment} with the specified patient name and date/time.","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":" * @param patientName The name of the patient for the appointment.","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" * @param dateTime The date and time of the appointment.","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":" public Appointment(String patientName, String patientIc, LocalDateTime dateTime) {","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" this.patientIc \u003d patientIc;","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" this.patientName \u003d patientName;","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":" this.dateTime \u003d dateTime;","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" * Returns the name of the patient associated with this appointment.","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" * @return The patient\u0027s name.","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" public String getPatientName() {","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" return patientName;","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" * Returns the NRIC of the patient associated with this appointment.","lastModifiedDate":"2024-03-23"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" * @return The patient\u0027s ic.","lastModifiedDate":"2024-03-23"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" public String getPatientIc() {","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":" return patientIc;","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":" * Returns the date and time of the appointment.","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":" * @return The date and time of the appointment.","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":" public LocalDateTime getDateTime() {","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":" return dateTime;","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"MaYuehan"},"content":" * Returns a string representation of the appointment, including the patient\u0027s name","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":" * and the date and time of the appointment.","lastModifiedDate":"2024-03-13"},{"lineNumber":56,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"MaYuehan"},"content":" * @return A string representation of the appointment.","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":60,"author":{"gitId":"MaYuehan"},"content":" public String toString() {","lastModifiedDate":"2024-03-13"},{"lineNumber":61,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":62,"author":{"gitId":"MaYuehan"},"content":" return \"Appointment with \" + patientName + \" on \" + dateTime;","lastModifiedDate":"2024-03-13"},{"lineNumber":63,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":64,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":65,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":66,"author":{"gitId":"MaYuehan"},"content":" * Checks if this appointment is equal to another object. Two appointments are equal","lastModifiedDate":"2024-03-23"},{"lineNumber":67,"author":{"gitId":"MaYuehan"},"content":" * if they have the same patient name, patient NRIC, and date/time.","lastModifiedDate":"2024-03-23"},{"lineNumber":68,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-23"},{"lineNumber":69,"author":{"gitId":"MaYuehan"},"content":" * @param that The object to compare with this appointment.","lastModifiedDate":"2024-03-23"},{"lineNumber":70,"author":{"gitId":"MaYuehan"},"content":" * @return true if the given object represents an appointment equivalent to this appointment, false otherwise.","lastModifiedDate":"2024-03-23"},{"lineNumber":71,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":72,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":73,"author":{"gitId":"MaYuehan"},"content":" public boolean equals(Object that) {","lastModifiedDate":"2024-03-23"},{"lineNumber":74,"author":{"gitId":"MaYuehan"},"content":" if (that \u003d\u003d this) {","lastModifiedDate":"2024-03-23"},{"lineNumber":75,"author":{"gitId":"MaYuehan"},"content":" return true;","lastModifiedDate":"2024-03-23"},{"lineNumber":76,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":77,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":78,"author":{"gitId":"MaYuehan"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-23"},{"lineNumber":79,"author":{"gitId":"MaYuehan"},"content":" if (!(that instanceof Appointment)) {","lastModifiedDate":"2024-03-23"},{"lineNumber":80,"author":{"gitId":"MaYuehan"},"content":" return false;","lastModifiedDate":"2024-03-23"},{"lineNumber":81,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":82,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":83,"author":{"gitId":"MaYuehan"},"content":" Appointment otherApt \u003d (Appointment) that;","lastModifiedDate":"2024-03-23"},{"lineNumber":84,"author":{"gitId":"MaYuehan"},"content":" return patientName.equals(otherApt.patientName)","lastModifiedDate":"2024-03-23"},{"lineNumber":85,"author":{"gitId":"MaYuehan"},"content":" \u0026\u0026 patientIc.equals(otherApt.patientIc)","lastModifiedDate":"2024-03-23"},{"lineNumber":86,"author":{"gitId":"MaYuehan"},"content":" \u0026\u0026 dateTime.equals(otherApt.dateTime);","lastModifiedDate":"2024-03-23"},{"lineNumber":87,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":88,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":89,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-03-13"},{"lineNumber":90,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"MaYuehan":90}},{"path":"src/main/java/vitalconnect/model/Clinic.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.model;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.UniquePersonList;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.identificationinformation.Nric;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"javierng2knus"},"content":" * Wraps all data at the clinic level","lastModifiedDate":"2024-03-11"},{"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":"javierng2knus"},"content":"public class Clinic implements ReadOnlyClinic {","lastModifiedDate":"2024-03-11"},{"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":"javierng2knus"},"content":" public Clinic() {}","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"javierng2knus"},"content":" * Creates an Clinic using the Persons in the {@code toBeCopied}","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"javierng2knus"},"content":" public Clinic(ReadOnlyClinic toBeCopied) {","lastModifiedDate":"2024-03-11"},{"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":"-"},"content":" * Replaces the contents of the person list with {@code persons}.","lastModifiedDate":"2018-08-07"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2018-08-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void setPersons(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-08-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.persons.setPersons(persons);","lastModifiedDate":"2016-10-19"},{"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":"javierng2knus"},"content":" * Resets the existing data of this {@code Clinic} with {@code newData}.","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":55,"author":{"gitId":"javierng2knus"},"content":" public void resetData(ReadOnlyClinic newData) {","lastModifiedDate":"2024-03-11"},{"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":"javierng2knus"},"content":" * Returns true if a person with the same identity as {@code person} exists in the clinic.","lastModifiedDate":"2024-03-11"},{"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":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":72,"author":{"gitId":"javierng2knus"},"content":" * Adds a person to the clinic.","lastModifiedDate":"2024-03-11"},{"lineNumber":73,"author":{"gitId":"javierng2knus"},"content":" * The person must not already exist in the clinic.","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void addPerson(Person p) {","lastModifiedDate":"2018-08-07"},{"lineNumber":76,"author":{"gitId":"-"},"content":" persons.add(p);","lastModifiedDate":"2018-03-29"},{"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":"-"},"content":" * Replaces the given person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2018-01-10"},{"lineNumber":81,"author":{"gitId":"javierng2knus"},"content":" * {@code target} must exist in the clinic.","lastModifiedDate":"2024-03-11"},{"lineNumber":82,"author":{"gitId":"javierng2knus"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the clinic.","lastModifiedDate":"2024-03-11"},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":85,"author":{"gitId":"-"},"content":" requireNonNull(editedPerson);","lastModifiedDate":"2018-01-10"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" persons.setPerson(target, editedPerson);","lastModifiedDate":"2018-03-29"},{"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":"javierng2knus"},"content":" * Removes {@code key} from this {@code Clinic}.","lastModifiedDate":"2024-03-11"},{"lineNumber":92,"author":{"gitId":"javierng2knus"},"content":" * {@code key} must exist in the clinic.","lastModifiedDate":"2024-03-11"},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void removePerson(Person key) {","lastModifiedDate":"2018-08-07"},{"lineNumber":95,"author":{"gitId":"-"},"content":" persons.remove(key);","lastModifiedDate":"2018-02-28"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" //// util methods","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":" .add(\"persons\", persons)","lastModifiedDate":"2019-02-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":109,"author":{"gitId":"-"},"content":" return persons.asUnmodifiableObservableList();","lastModifiedDate":"2018-04-05"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-01"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-01"},{"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":"javierng2knus"},"content":" if (!(other instanceof Clinic)) {","lastModifiedDate":"2024-03-11"},{"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":"javierng2knus"},"content":" Clinic otherClinic \u003d (Clinic) other;","lastModifiedDate":"2024-03-11"},{"lineNumber":124,"author":{"gitId":"javierng2knus"},"content":" return persons.equals(otherClinic.persons);","lastModifiedDate":"2024-03-11"},{"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 persons.hashCode();","lastModifiedDate":"2018-03-29"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":131,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"Ella-e"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"Ella-e"},"content":" * Returns true if a person with the same name as {@code name} exists in the clinic.","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"Ella-e"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":135,"author":{"gitId":"Ella-e"},"content":" public Person findPersonByNric(Nric nric) {","lastModifiedDate":"2024-03-17"},{"lineNumber":136,"author":{"gitId":"Ella-e"},"content":" requireNonNull(nric);","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"Ella-e"},"content":" for (Person p : persons) {","lastModifiedDate":"2024-03-17"},{"lineNumber":138,"author":{"gitId":"Ella-e"},"content":" if (p.getIdentificationInformation().getNric().nric.equalsIgnoreCase(nric.toString())) {","lastModifiedDate":"2024-03-17"},{"lineNumber":139,"author":{"gitId":"Ella-e"},"content":" return p;","lastModifiedDate":"2024-03-17"},{"lineNumber":140,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":141,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"Ella-e"},"content":" return null;","lastModifiedDate":"2024-03-17"},{"lineNumber":143,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":144,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"javierng2knus":17,"MaYuehan":4,"Ella-e":14,"-":109}},{"path":"src/main/java/vitalconnect/model/Model.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.model;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import java.util.List;","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.core.GuiSettings;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.ContactInformation;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.identificationinformation.Nric;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.person.medicalinformation.MedicalInformation;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2017-08-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":" Predicate\u003cPerson\u003e PREDICATE_SHOW_ALL_PERSONS \u003d unused -\u003e true;","lastModifiedDate":"2018-01-10"},{"lineNumber":20,"author":{"gitId":"SeaHogs"},"content":" Predicate\u003cPerson\u003e PREDICATE_SHOW_ALL_MEDICAL \u003d Person::hasMedicalInformation;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","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":" * 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":" * Sets 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":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"javierng2knus"},"content":" * Returns the user prefs\u0027 clinic file path.","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"javierng2knus"},"content":" Path getClinicFilePath();","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"javierng2knus"},"content":" * Sets the user prefs\u0027 clinic file path.","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"javierng2knus"},"content":" void setClinicFilePath(Path clinicFilePath);","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"javierng2knus"},"content":" * Replaces clinic data with the data in {@code clinic}.","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"javierng2knus"},"content":" void setClinic(ReadOnlyClinic clinic);","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":56,"author":{"gitId":"javierng2knus"},"content":" /** Returns the Clinic */","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"javierng2knus"},"content":" ReadOnlyClinic getClinic();","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":60,"author":{"gitId":"javierng2knus"},"content":" * Returns true if a person with the same identity as {@code person} exists in the clinic.","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":62,"author":{"gitId":"-"},"content":" boolean hasPerson(Person person);","lastModifiedDate":"2018-08-06"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * Deletes the given person.","lastModifiedDate":"2018-08-07"},{"lineNumber":66,"author":{"gitId":"javierng2knus"},"content":" * The person must exist in the clinic.","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":" void deletePerson(Person target);","lastModifiedDate":"2018-08-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Adds the given person.","lastModifiedDate":"2018-08-07"},{"lineNumber":72,"author":{"gitId":"javierng2knus"},"content":" * {@code person} must not already exist in the clinic.","lastModifiedDate":"2024-03-11"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":74,"author":{"gitId":"-"},"content":" void addPerson(Person person);","lastModifiedDate":"2018-08-07"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} with {@code editedPerson}.","lastModifiedDate":"2017-06-07"},{"lineNumber":78,"author":{"gitId":"javierng2knus"},"content":" * {@code target} must exist in the clinic.","lastModifiedDate":"2024-03-11"},{"lineNumber":79,"author":{"gitId":"javierng2knus"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the clinic.","lastModifiedDate":"2024-03-11"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" void setPerson(Person target, Person editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered person list */","lastModifiedDate":"2017-09-01"},{"lineNumber":84,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Updates the filter of the filtered person list to filter by the given {@code predicate}.","lastModifiedDate":"2017-08-05"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05"},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":" void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate);","lastModifiedDate":"2018-01-10"},{"lineNumber":91,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":92,"author":{"gitId":"MaYuehan"},"content":" boolean doesPersonExist(String name);","lastModifiedDate":"2024-03-13"},{"lineNumber":93,"author":{"gitId":"MaYuehan"},"content":" boolean doesIcExist(String name);","lastModifiedDate":"2024-03-23"},{"lineNumber":94,"author":{"gitId":"MaYuehan"},"content":" void addAppointment(Appointment appointment);","lastModifiedDate":"2024-03-10"},{"lineNumber":95,"author":{"gitId":"MaYuehan"},"content":" void setAppointments(List\u003cAppointment\u003e appointments);","lastModifiedDate":"2024-03-23"},{"lineNumber":96,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":97,"author":{"gitId":"MaYuehan"},"content":" ObservableList\u003cAppointment\u003e getFilteredAppointmentList();","lastModifiedDate":"2024-03-10"},{"lineNumber":98,"author":{"gitId":"MaYuehan"},"content":" void deleteAppointment(Appointment appointment);","lastModifiedDate":"2024-03-10"},{"lineNumber":99,"author":{"gitId":"Ella-e"},"content":" Person findPersonByNric(Nric nric);","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"Ella-e"},"content":" void updatePersonContactInformation(Nric nric, ContactInformation contactInformation);","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":102,"author":{"gitId":"SeaHogs"},"content":" void updatePersonMedicalInformation(Nric nric, MedicalInformation medicalInformation);","lastModifiedDate":"2024-03-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"javierng2knus":13,"MaYuehan":12,"Ella-e":4,"-":70,"SeaHogs":4}},{"path":"src/main/java/vitalconnect/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.model;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import static vitalconnect.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import java.util.List;","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.core.GuiSettings;","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.core.LogsCenter;","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.ContactInformation;","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.identificationinformation.Nric;","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.person.medicalinformation.MedicalInformation;","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"javierng2knus"},"content":" * Represents the in-memory model of the clinic data.","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"javierng2knus"},"content":" private final Clinic clinic;","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2018-01-10"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" private final ObservableList\u003cAppointment\u003e appointments;","lastModifiedDate":"2024-03-23"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"javierng2knus"},"content":" * Initializes a ModelManager with the given clinic and userPrefs.","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":" public ModelManager(ReadOnlyClinic clinic, ReadOnlyUserPrefs userPrefs, List\u003cAppointment\u003e loadedAppointments) {","lastModifiedDate":"2024-03-23"},{"lineNumber":40,"author":{"gitId":"javierng2knus"},"content":" requireAllNonNull(clinic, userPrefs);","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":42,"author":{"gitId":"javierng2knus"},"content":" logger.fine(\"Initializing with clinic: \" + clinic + \" and user prefs \" + userPrefs);","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"javierng2knus"},"content":" this.clinic \u003d new Clinic(clinic);","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":46,"author":{"gitId":"javierng2knus"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(this.clinic.getPersonList());","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":" this.appointments \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-03-10"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":" if (loadedAppointments !\u003d null) {","lastModifiedDate":"2024-03-23"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":" this.appointments.setAll(loadedAppointments);","lastModifiedDate":"2024-03-23"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":" this(new Clinic(), new UserPrefs(), new ArrayList\u003c\u003e());","lastModifiedDate":"2024-03-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"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":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":62,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06"},{"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 ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return userPrefs;","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 GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","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 setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","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":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":83,"author":{"gitId":"javierng2knus"},"content":" public Path getClinicFilePath() {","lastModifiedDate":"2024-03-11"},{"lineNumber":84,"author":{"gitId":"javierng2knus"},"content":" return userPrefs.getClinicFilePath();","lastModifiedDate":"2024-03-11"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":88,"author":{"gitId":"javierng2knus"},"content":" public void setClinicFilePath(Path clinicFilePath) {","lastModifiedDate":"2024-03-11"},{"lineNumber":89,"author":{"gitId":"javierng2knus"},"content":" requireNonNull(clinicFilePath);","lastModifiedDate":"2024-03-11"},{"lineNumber":90,"author":{"gitId":"javierng2knus"},"content":" userPrefs.setClinicFilePath(clinicFilePath);","lastModifiedDate":"2024-03-11"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":93,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":94,"author":{"gitId":"MaYuehan"},"content":" * Adds the given appointment to the clinic.","lastModifiedDate":"2024-03-23"},{"lineNumber":95,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-23"},{"lineNumber":96,"author":{"gitId":"MaYuehan"},"content":" * @param appointment The appointment to add.","lastModifiedDate":"2024-03-23"},{"lineNumber":97,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":98,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-10"},{"lineNumber":99,"author":{"gitId":"MaYuehan"},"content":" public void addAppointment(Appointment appointment) {","lastModifiedDate":"2024-03-10"},{"lineNumber":100,"author":{"gitId":"MaYuehan"},"content":" requireNonNull(appointment);","lastModifiedDate":"2024-03-10"},{"lineNumber":101,"author":{"gitId":"MaYuehan"},"content":" appointments.add(appointment);","lastModifiedDate":"2024-03-10"},{"lineNumber":102,"author":{"gitId":"MaYuehan"},"content":" FXCollections.sort(appointments, Comparator.comparing(Appointment::getDateTime));","lastModifiedDate":"2024-03-13"},{"lineNumber":103,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":104,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":105,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":106,"author":{"gitId":"MaYuehan"},"content":" * Replaces the current list of appointments with the provided list.","lastModifiedDate":"2024-03-23"},{"lineNumber":107,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-23"},{"lineNumber":108,"author":{"gitId":"MaYuehan"},"content":" * @param appointments The list of appointments to set.","lastModifiedDate":"2024-03-23"},{"lineNumber":109,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":110,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":111,"author":{"gitId":"MaYuehan"},"content":" public void setAppointments(List\u003cAppointment\u003e appointments) {","lastModifiedDate":"2024-03-23"},{"lineNumber":112,"author":{"gitId":"MaYuehan"},"content":" this.appointments.setAll(appointments);","lastModifiedDate":"2024-03-23"},{"lineNumber":113,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":114,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":115,"author":{"gitId":"MaYuehan"},"content":" * Returns an unmodifiable view of the list of appointments.","lastModifiedDate":"2024-03-23"},{"lineNumber":116,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-23"},{"lineNumber":117,"author":{"gitId":"MaYuehan"},"content":" * @return An unmodifiable view of the list of appointments.","lastModifiedDate":"2024-03-23"},{"lineNumber":118,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":119,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-10"},{"lineNumber":120,"author":{"gitId":"MaYuehan"},"content":" public ObservableList\u003cAppointment\u003e getFilteredAppointmentList() {","lastModifiedDate":"2024-03-10"},{"lineNumber":121,"author":{"gitId":"MaYuehan"},"content":" return appointments;","lastModifiedDate":"2024-03-10"},{"lineNumber":122,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":123,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":124,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":125,"author":{"gitId":"MaYuehan"},"content":" * Deletes the specified appointment from the clinic.","lastModifiedDate":"2024-03-23"},{"lineNumber":126,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-23"},{"lineNumber":127,"author":{"gitId":"MaYuehan"},"content":" * @param appointment The appointment to delete.","lastModifiedDate":"2024-03-23"},{"lineNumber":128,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":129,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-10"},{"lineNumber":130,"author":{"gitId":"MaYuehan"},"content":" public void deleteAppointment(Appointment appointment) {","lastModifiedDate":"2024-03-10"},{"lineNumber":131,"author":{"gitId":"MaYuehan"},"content":" appointments.remove(appointment);","lastModifiedDate":"2024-03-10"},{"lineNumber":132,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":133,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":135,"author":{"gitId":"javierng2knus"},"content":" public void setClinic(ReadOnlyClinic clinic) {","lastModifiedDate":"2024-03-11"},{"lineNumber":136,"author":{"gitId":"javierng2knus"},"content":" this.clinic.resetData(clinic);","lastModifiedDate":"2024-03-11"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":140,"author":{"gitId":"javierng2knus"},"content":" public ReadOnlyClinic getClinic() {","lastModifiedDate":"2024-03-11"},{"lineNumber":141,"author":{"gitId":"javierng2knus"},"content":" return clinic;","lastModifiedDate":"2024-03-11"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":145,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":146,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":147,"author":{"gitId":"javierng2knus"},"content":" return clinic.hasPerson(person);","lastModifiedDate":"2024-03-11"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":150,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":151,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15"},{"lineNumber":152,"author":{"gitId":"javierng2knus"},"content":" clinic.removePerson(target);","lastModifiedDate":"2024-03-11"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":156,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":157,"author":{"gitId":"javierng2knus"},"content":" clinic.addPerson(person);","lastModifiedDate":"2024-03-11"},{"lineNumber":158,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26"},{"lineNumber":161,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":163,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":165,"author":{"gitId":"javierng2knus"},"content":" clinic.setPerson(target, editedPerson);","lastModifiedDate":"2024-03-11"},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":167,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":168,"author":{"gitId":"MaYuehan"},"content":" * Checks if a person with the specified name exists in the clinic.","lastModifiedDate":"2024-03-23"},{"lineNumber":169,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-23"},{"lineNumber":170,"author":{"gitId":"MaYuehan"},"content":" * @param name The name of the person to check for existence.","lastModifiedDate":"2024-03-23"},{"lineNumber":171,"author":{"gitId":"MaYuehan"},"content":" * @return true if there is at least one person in the clinic with the specified name, ignoring case.","lastModifiedDate":"2024-03-23"},{"lineNumber":172,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":173,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-10"},{"lineNumber":174,"author":{"gitId":"MaYuehan"},"content":" public boolean doesPersonExist(String name) {","lastModifiedDate":"2024-03-13"},{"lineNumber":175,"author":{"gitId":"MaYuehan"},"content":" requireNonNull(name);","lastModifiedDate":"2024-03-10"},{"lineNumber":176,"author":{"gitId":"MaYuehan"},"content":" return filteredPersons.stream()","lastModifiedDate":"2024-03-10"},{"lineNumber":177,"author":{"gitId":"javierng2knus"},"content":" .anyMatch(person -\u003e person.getIdentificationInformation().getName().fullName.equalsIgnoreCase(name));","lastModifiedDate":"2024-03-15"},{"lineNumber":178,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":179,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":180,"author":{"gitId":"MaYuehan"},"content":" * Checks if a person with the specified National Registration Identity Card (NRIC) exists in the clinic.","lastModifiedDate":"2024-03-23"},{"lineNumber":181,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-23"},{"lineNumber":182,"author":{"gitId":"MaYuehan"},"content":" * @param ic The NRIC of the person to check for existence.","lastModifiedDate":"2024-03-23"},{"lineNumber":183,"author":{"gitId":"MaYuehan"},"content":" * @return true if there is at least one person in the clinic with the specified NRIC, ignoring case.","lastModifiedDate":"2024-03-23"},{"lineNumber":184,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":185,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":186,"author":{"gitId":"MaYuehan"},"content":" public boolean doesIcExist(String ic) {","lastModifiedDate":"2024-03-23"},{"lineNumber":187,"author":{"gitId":"MaYuehan"},"content":" requireNonNull(ic);","lastModifiedDate":"2024-03-23"},{"lineNumber":188,"author":{"gitId":"MaYuehan"},"content":" return filteredPersons.stream()","lastModifiedDate":"2024-03-23"},{"lineNumber":189,"author":{"gitId":"MaYuehan"},"content":" .anyMatch(person -\u003e person.getIdentificationInformation().getNric().nric.equalsIgnoreCase(ic));","lastModifiedDate":"2024-03-23"},{"lineNumber":190,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":191,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":192,"author":{"gitId":"MaYuehan"},"content":" * Finds and returns the person in the clinic whose NRIC matches the specified NRIC.","lastModifiedDate":"2024-03-23"},{"lineNumber":193,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-23"},{"lineNumber":194,"author":{"gitId":"MaYuehan"},"content":" * @param nric The NRIC of the person to find.","lastModifiedDate":"2024-03-23"},{"lineNumber":195,"author":{"gitId":"MaYuehan"},"content":" * @return The person with the specified NRIC or null if no such person exists in the clinic.","lastModifiedDate":"2024-03-23"},{"lineNumber":196,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":197,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":198,"author":{"gitId":"Ella-e"},"content":" public Person findPersonByNric(Nric nric) {","lastModifiedDate":"2024-03-17"},{"lineNumber":199,"author":{"gitId":"Ella-e"},"content":" requireNonNull(nric);","lastModifiedDate":"2024-03-17"},{"lineNumber":200,"author":{"gitId":"Ella-e"},"content":" return clinic.findPersonByNric(nric);","lastModifiedDate":"2024-03-17"},{"lineNumber":201,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":202,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":203,"author":{"gitId":"Ella-e"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":204,"author":{"gitId":"Ella-e"},"content":" * Updates the contact information of the person in the clinic.","lastModifiedDate":"2024-03-17"},{"lineNumber":205,"author":{"gitId":"Ella-e"},"content":" * @param nric Nric of the person to be updated","lastModifiedDate":"2024-03-17"},{"lineNumber":206,"author":{"gitId":"Ella-e"},"content":" * @param contactInformation New contact information of the person","lastModifiedDate":"2024-03-17"},{"lineNumber":207,"author":{"gitId":"Ella-e"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":208,"author":{"gitId":"Ella-e"},"content":" public void updatePersonContactInformation(Nric nric, ContactInformation contactInformation) {","lastModifiedDate":"2024-03-17"},{"lineNumber":209,"author":{"gitId":"Ella-e"},"content":" Person person \u003d clinic.findPersonByNric(nric);","lastModifiedDate":"2024-03-17"},{"lineNumber":210,"author":{"gitId":"Ella-e"},"content":" Person personToUpdate \u003d person.copyPerson();","lastModifiedDate":"2024-03-17"},{"lineNumber":211,"author":{"gitId":"Ella-e"},"content":" personToUpdate.setContactInformation(contactInformation);","lastModifiedDate":"2024-03-17"},{"lineNumber":212,"author":{"gitId":"Ella-e"},"content":" setPerson(person, personToUpdate);","lastModifiedDate":"2024-03-17"},{"lineNumber":213,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":214,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":215,"author":{"gitId":"SeaHogs"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":216,"author":{"gitId":"SeaHogs"},"content":" * @param nric","lastModifiedDate":"2024-03-18"},{"lineNumber":217,"author":{"gitId":"SeaHogs"},"content":" * @param medicalInformation","lastModifiedDate":"2024-03-18"},{"lineNumber":218,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":219,"author":{"gitId":"SeaHogs"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":220,"author":{"gitId":"SeaHogs"},"content":" public void updatePersonMedicalInformation(Nric nric, MedicalInformation medicalInformation) {","lastModifiedDate":"2024-03-18"},{"lineNumber":221,"author":{"gitId":"SeaHogs"},"content":" Person person \u003d clinic.findPersonByNric(nric);","lastModifiedDate":"2024-03-18"},{"lineNumber":222,"author":{"gitId":"SeaHogs"},"content":" Person personToUpdate \u003d person.copyPerson();","lastModifiedDate":"2024-03-18"},{"lineNumber":223,"author":{"gitId":"SeaHogs"},"content":" personToUpdate.setMedicalInformation(medicalInformation);","lastModifiedDate":"2024-03-18"},{"lineNumber":224,"author":{"gitId":"SeaHogs"},"content":" setPerson(person, personToUpdate);","lastModifiedDate":"2024-03-18"},{"lineNumber":225,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":226,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":227,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":229,"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":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":231,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":232,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10"},{"lineNumber":233,"author":{"gitId":"javierng2knus"},"content":" * {@code versionedClinic}","lastModifiedDate":"2024-03-11"},{"lineNumber":234,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":235,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":236,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":237,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09"},{"lineNumber":238,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":240,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":241,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":242,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05"},{"lineNumber":243,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":244,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":246,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":247,"author":{"gitId":"MaYuehan"},"content":" * Checks for equality with another object. Returns true if the other object is also a ModelManager","lastModifiedDate":"2024-03-23"},{"lineNumber":248,"author":{"gitId":"MaYuehan"},"content":" * and has the same clinic and user preferences data.","lastModifiedDate":"2024-03-23"},{"lineNumber":249,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-23"},{"lineNumber":250,"author":{"gitId":"MaYuehan"},"content":" * @param other The other object to compare against.","lastModifiedDate":"2024-03-23"},{"lineNumber":251,"author":{"gitId":"MaYuehan"},"content":" * @return True if both objects are of the same class and contain the same data, false otherwise.","lastModifiedDate":"2024-03-23"},{"lineNumber":252,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31"},{"lineNumber":254,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":255,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":256,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31"},{"lineNumber":257,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":259,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31"},{"lineNumber":260,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":261,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31"},{"lineNumber":262,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":264,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":265,"author":{"gitId":"javierng2knus"},"content":" if (clinic.equals(otherModelManager.clinic)) {","lastModifiedDate":"2024-03-15"},{"lineNumber":266,"author":{"gitId":"javierng2knus"},"content":" if (userPrefs.equals(otherModelManager.userPrefs)) {","lastModifiedDate":"2024-03-15"},{"lineNumber":267,"author":{"gitId":"javierng2knus"},"content":" if (filteredPersons.equals(otherModelManager.filteredPersons)) {","lastModifiedDate":"2024-03-15"},{"lineNumber":268,"author":{"gitId":"javierng2knus"},"content":" return true;","lastModifiedDate":"2024-03-15"},{"lineNumber":269,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":270,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":271,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":272,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":273,"author":{"gitId":"javierng2knus"},"content":" return clinic.equals(otherModelManager.clinic)","lastModifiedDate":"2024-03-11"},{"lineNumber":274,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13"},{"lineNumber":275,"author":{"gitId":"-"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons);","lastModifiedDate":"2023-07-13"},{"lineNumber":276,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":278,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"javierng2knus":31,"MaYuehan":96,"Ella-e":20,"-":117,"SeaHogs":14}},{"path":"src/main/java/vitalconnect/model/ReadOnlyClinic.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.model;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"javierng2knus"},"content":" * Unmodifiable view of a clinic","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":9,"author":{"gitId":"javierng2knus"},"content":"public interface ReadOnlyClinic {","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the persons list.","lastModifiedDate":"2016-12-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * This list will not contain any duplicate persons.","lastModifiedDate":"2016-12-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"javierng2knus":2,"MaYuehan":2,"-":13}},{"path":"src/main/java/vitalconnect/model/ReadOnlyUserPrefs.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.model;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.commons.core.GuiSettings;","lastModifiedDate":"2024-03-13"},{"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":"javierng2knus"},"content":" Path getClinicFilePath();","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" Path getAppointmentFilePath();","lastModifiedDate":"2024-03-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-11-27"}],"authorContributionMap":{"javierng2knus":1,"MaYuehan":3,"-":13}},{"path":"src/main/java/vitalconnect/model/UserPrefs.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.model;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.commons.core.GuiSettings;","lastModifiedDate":"2024-03-13"},{"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":"javierng2knus"},"content":" private Path clinicFilePath \u003d Paths.get(\"data\" , \"clinic.json\");","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" private Path appointmentFilePath \u003d Paths.get(\"data\", \"appointments.json\");","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Creates a {@code UserPrefs} with default values.","lastModifiedDate":"2018-12-06"},{"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":"-"},"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":"javierng2knus"},"content":" setClinicFilePath(newUserPrefs.getClinicFilePath());","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" setAppointmentFilePath(newUserPrefs.getAppointmentFilePath());","lastModifiedDate":"2024-03-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":"javierng2knus"},"content":" public Path getClinicFilePath() {","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"javierng2knus"},"content":" return clinicFilePath;","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":56,"author":{"gitId":"javierng2knus"},"content":" public void setClinicFilePath(Path clinicFilePath) {","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"javierng2knus"},"content":" requireNonNull(clinicFilePath);","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"javierng2knus"},"content":" this.clinicFilePath \u003d clinicFilePath;","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":61,"author":{"gitId":"MaYuehan"},"content":" public Path getAppointmentFilePath() {","lastModifiedDate":"2024-03-23"},{"lineNumber":62,"author":{"gitId":"MaYuehan"},"content":" return appointmentFilePath;","lastModifiedDate":"2024-03-23"},{"lineNumber":63,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":64,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":65,"author":{"gitId":"MaYuehan"},"content":" public void setAppointmentFilePath(Path appointmentFilePath) {","lastModifiedDate":"2024-03-23"},{"lineNumber":66,"author":{"gitId":"MaYuehan"},"content":" requireNonNull(appointmentFilePath);","lastModifiedDate":"2024-03-23"},{"lineNumber":67,"author":{"gitId":"MaYuehan"},"content":" this.appointmentFilePath \u003d appointmentFilePath;","lastModifiedDate":"2024-03-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-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":" if (!(other instanceof UserPrefs)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2016-09-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":" UserPrefs otherUserPrefs \u003d (UserPrefs) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return guiSettings.equals(otherUserPrefs.guiSettings)","lastModifiedDate":"2023-07-13"},{"lineNumber":82,"author":{"gitId":"MaYuehan"},"content":" \u0026\u0026 clinicFilePath.equals(otherUserPrefs.clinicFilePath)","lastModifiedDate":"2024-03-23"},{"lineNumber":83,"author":{"gitId":"MaYuehan"},"content":" \u0026\u0026 appointmentFilePath.equals(otherUserPrefs.appointmentFilePath);","lastModifiedDate":"2024-03-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-24"},{"lineNumber":88,"author":{"gitId":"MaYuehan"},"content":" return Objects.hash(guiSettings, clinicFilePath, appointmentFilePath);","lastModifiedDate":"2024-03-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-09-24"},{"lineNumber":93,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-02-25"},{"lineNumber":94,"author":{"gitId":"MaYuehan"},"content":" sb.append(\"Gui Settings : \").append(guiSettings);","lastModifiedDate":"2024-03-23"},{"lineNumber":95,"author":{"gitId":"MaYuehan"},"content":" sb.append(\"\\nLocal clinic data file location : \").append(clinicFilePath);","lastModifiedDate":"2024-03-23"},{"lineNumber":96,"author":{"gitId":"MaYuehan"},"content":" sb.append(\"\\nLocal appointment data file location : \").append(appointmentFilePath);","lastModifiedDate":"2024-03-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-02-25"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":99,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"javierng2knus":7,"MaYuehan":17,"-":75}},{"path":"src/main/java/vitalconnect/model/allergytag/AllergyTag.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SeaHogs"},"content":"package vitalconnect.model.allergytag;","lastModifiedDate":"2024-03-18"},{"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":"MaYuehan"},"content":"import static vitalconnect.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"SeaHogs"},"content":" * Represents a AllergyTag in the clinic.","lastModifiedDate":"2024-03-18"},{"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":"SeaHogs"},"content":"public class AllergyTag {","lastModifiedDate":"2024-03-18"},{"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":"SeaHogs"},"content":" * Constructs a {@code AllergyTag}.","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"SeaHogs"},"content":" * @param tagName A valid allergytag name.","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"SeaHogs"},"content":" public AllergyTag(String tagName) {","lastModifiedDate":"2024-03-18"},{"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":"SeaHogs"},"content":" * Returns true if a given string is a valid allergytag name.","lastModifiedDate":"2024-03-18"},{"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":"SeaHogs"},"content":" if (!(other instanceof AllergyTag)) {","lastModifiedDate":"2024-03-18"},{"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":"SeaHogs"},"content":" AllergyTag otherAllergyTag \u003d (AllergyTag) other;","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"SeaHogs"},"content":" return tagName.equals(otherAllergyTag.tagName);","lastModifiedDate":"2024-03-18"},{"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":{"MaYuehan":1,"-":51,"SeaHogs":10}},{"path":"src/main/java/vitalconnect/model/person/Person.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.model.person;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.contactinformation.ContactInformation;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.identificationinformation.IdentificationInformation;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.person.medicalinformation.MedicalInformation;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"javierng2knus"},"content":" * Represents a Person in the clinic.","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10"},{"lineNumber":17,"author":{"gitId":"javierng2knus"},"content":" // Information fields","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":" private IdentificationInformation identificationInformation;","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":" private ContactInformation contactInformation;","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"SeaHogs"},"content":" private MedicalInformation medicalInformation;","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"SeaHogs"},"content":" * Only identificationInformation is present.","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"SeaHogs"},"content":" public Person(IdentificationInformation identificationInformation) {","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"SeaHogs"},"content":" requireAllNonNull(identificationInformation);","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"javierng2knus"},"content":" this.identificationInformation \u003d identificationInformation;","lastModifiedDate":"2024-03-15"},{"lineNumber":28,"author":{"gitId":"Ella-e"},"content":" this.contactInformation \u003d new ContactInformation();","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"Ella-e"},"content":" this.medicalInformation \u003d new MedicalInformation();","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":31,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":32,"author":{"gitId":"javierng2knus"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"SeaHogs"},"content":" * Only identificationInformation and contactInformation are present.","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"javierng2knus"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"javierng2knus"},"content":" public Person(IdentificationInformation identificationInformation,","lastModifiedDate":"2024-03-15"},{"lineNumber":36,"author":{"gitId":"SeaHogs"},"content":" ContactInformation contactInformation) {","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"SeaHogs"},"content":" requireAllNonNull(identificationInformation);","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"javierng2knus"},"content":" this.identificationInformation \u003d identificationInformation;","lastModifiedDate":"2024-03-15"},{"lineNumber":39,"author":{"gitId":"javierng2knus"},"content":" this.contactInformation \u003d contactInformation;","lastModifiedDate":"2024-03-15"},{"lineNumber":40,"author":{"gitId":"Ella-e"},"content":" this.medicalInformation \u003d new MedicalInformation();","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"SeaHogs"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"SeaHogs"},"content":" * Only identificationInformation and medicalInformation are present.","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"SeaHogs"},"content":" public Person(IdentificationInformation identificationInformation,","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"SeaHogs"},"content":" MedicalInformation medicalInformation) {","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"SeaHogs"},"content":" requireAllNonNull(identificationInformation);","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"SeaHogs"},"content":" this.identificationInformation \u003d identificationInformation;","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"Ella-e"},"content":" this.contactInformation \u003d new ContactInformation();","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"SeaHogs"},"content":" this.medicalInformation \u003d medicalInformation;","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"SeaHogs"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"SeaHogs"},"content":" * All fields are present.","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"SeaHogs"},"content":" public Person(IdentificationInformation identificationInformation,","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"SeaHogs"},"content":" ContactInformation contactInformation, MedicalInformation medicalInformation) {","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"SeaHogs"},"content":" requireAllNonNull(identificationInformation, contactInformation, medicalInformation);","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"SeaHogs"},"content":" this.identificationInformation \u003d identificationInformation;","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"Ella-e"},"content":" this.contactInformation \u003d contactInformation;","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"SeaHogs"},"content":" this.medicalInformation \u003d medicalInformation;","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"javierng2knus"},"content":" public IdentificationInformation getIdentificationInformation() {","lastModifiedDate":"2024-03-11"},{"lineNumber":66,"author":{"gitId":"javierng2knus"},"content":" return this.identificationInformation;","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":68,"author":{"gitId":"SeaHogs"},"content":" public void setContactInformation(ContactInformation contactInformation) {","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"SeaHogs"},"content":" this.contactInformation \u003d contactInformation;","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":72,"author":{"gitId":"javierng2knus"},"content":" public ContactInformation getContactInformation() {","lastModifiedDate":"2024-03-11"},{"lineNumber":73,"author":{"gitId":"javierng2knus"},"content":" return this.contactInformation;","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":75,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":76,"author":{"gitId":"javierng2knus"},"content":" public boolean hasContactInformation() {","lastModifiedDate":"2024-03-15"},{"lineNumber":77,"author":{"gitId":"javierng2knus"},"content":" return this.contactInformation !\u003d null;","lastModifiedDate":"2024-03-15"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":80,"author":{"gitId":"SeaHogs"},"content":" public void setMedicalInformation(MedicalInformation medicalInformation) {","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"SeaHogs"},"content":" this.medicalInformation \u003d medicalInformation;","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"SeaHogs"},"content":" public MedicalInformation getMedicalInformation() {","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"SeaHogs"},"content":" return this.medicalInformation;","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":88,"author":{"gitId":"SeaHogs"},"content":" public boolean hasMedicalInformation() {","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"Ella-e"},"content":" return !this.medicalInformation.isEmpty();","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":94,"author":{"gitId":"javierng2knus"},"content":" * Returns true if both persons have the same identification info.","lastModifiedDate":"2024-03-15"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" return true;","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":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19"},{"lineNumber":103,"author":{"gitId":"SeaHogs"},"content":" \u0026\u0026 otherPerson","lastModifiedDate":"2024-03-18"},{"lineNumber":104,"author":{"gitId":"SeaHogs"},"content":" .getIdentificationInformation()","lastModifiedDate":"2024-03-18"},{"lineNumber":105,"author":{"gitId":"SeaHogs"},"content":" .getNric()","lastModifiedDate":"2024-03-18"},{"lineNumber":106,"author":{"gitId":"SeaHogs"},"content":" .equals(getIdentificationInformation().getNric());","lastModifiedDate":"2024-03-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":109,"author":{"gitId":"Ella-e"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"Ella-e"},"content":" * Make a new copy of that person.","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"Ella-e"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"Ella-e"},"content":" public Person copyPerson() {","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"SeaHogs"},"content":" if (hasContactInformation() \u0026\u0026 hasMedicalInformation()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":114,"author":{"gitId":"SeaHogs"},"content":" return new Person(this.identificationInformation, this.contactInformation, this.medicalInformation);","lastModifiedDate":"2024-03-19"},{"lineNumber":115,"author":{"gitId":"SeaHogs"},"content":" } else if (hasContactInformation()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":116,"author":{"gitId":"SeaHogs"},"content":" return new Person(this.identificationInformation, this.contactInformation);","lastModifiedDate":"2024-03-20"},{"lineNumber":117,"author":{"gitId":"SeaHogs"},"content":" } else if (hasMedicalInformation()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":118,"author":{"gitId":"SeaHogs"},"content":" return new Person(this.identificationInformation, this.medicalInformation);","lastModifiedDate":"2024-03-20"},{"lineNumber":119,"author":{"gitId":"SeaHogs"},"content":" } else {","lastModifiedDate":"2024-03-20"},{"lineNumber":120,"author":{"gitId":"SeaHogs"},"content":" return new Person(this.identificationInformation);","lastModifiedDate":"2024-03-20"},{"lineNumber":121,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":122,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":125,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19"},{"lineNumber":126,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":127,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":130,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":131,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":134,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":135,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10"},{"lineNumber":136,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":139,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10"},{"lineNumber":140,"author":{"gitId":"SeaHogs"},"content":" boolean isSamePerson \u003d getIdentificationInformation().equals(otherPerson.getIdentificationInformation());","lastModifiedDate":"2024-03-19"},{"lineNumber":141,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":142,"author":{"gitId":"javierng2knus"},"content":" if (otherPerson.hasContactInformation() \u0026\u0026 hasContactInformation()) {","lastModifiedDate":"2024-03-15"},{"lineNumber":143,"author":{"gitId":"SeaHogs"},"content":" // true if both have same contact information","lastModifiedDate":"2024-03-19"},{"lineNumber":144,"author":{"gitId":"SeaHogs"},"content":" isSamePerson \u003d isSamePerson \u0026\u0026 getContactInformation().equals(otherPerson.getContactInformation());","lastModifiedDate":"2024-03-19"},{"lineNumber":145,"author":{"gitId":"SeaHogs"},"content":" } else {","lastModifiedDate":"2024-03-19"},{"lineNumber":146,"author":{"gitId":"SeaHogs"},"content":" // true if both do not have contact information","lastModifiedDate":"2024-03-19"},{"lineNumber":147,"author":{"gitId":"SeaHogs"},"content":" isSamePerson \u003d isSamePerson \u0026\u0026 !otherPerson.hasContactInformation() \u0026\u0026 !hasContactInformation();","lastModifiedDate":"2024-03-19"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":150,"author":{"gitId":"SeaHogs"},"content":" if (otherPerson.hasMedicalInformation() \u0026\u0026 hasMedicalInformation()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":151,"author":{"gitId":"SeaHogs"},"content":" // true if both have same medical information","lastModifiedDate":"2024-03-19"},{"lineNumber":152,"author":{"gitId":"SeaHogs"},"content":" isSamePerson \u003d isSamePerson \u0026\u0026 getMedicalInformation().equals(otherPerson.getMedicalInformation());","lastModifiedDate":"2024-03-19"},{"lineNumber":153,"author":{"gitId":"SeaHogs"},"content":" } else {","lastModifiedDate":"2024-03-19"},{"lineNumber":154,"author":{"gitId":"SeaHogs"},"content":" // true if both do not have medical information","lastModifiedDate":"2024-03-19"},{"lineNumber":155,"author":{"gitId":"SeaHogs"},"content":" isSamePerson \u003d isSamePerson \u0026\u0026 !otherPerson.hasMedicalInformation() \u0026\u0026 !hasMedicalInformation();","lastModifiedDate":"2024-03-19"},{"lineNumber":156,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":157,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":158,"author":{"gitId":"SeaHogs"},"content":" return isSamePerson;","lastModifiedDate":"2024-03-19"},{"lineNumber":159,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":160,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":161,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":162,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":163,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":164,"author":{"gitId":"SeaHogs"},"content":" return Objects.hash(getIdentificationInformation(), getContactInformation(), getMedicalInformation());","lastModifiedDate":"2024-03-18"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":167,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":168,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":169,"author":{"gitId":"SeaHogs"},"content":" if (hasContactInformation() \u0026\u0026 hasMedicalInformation()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":170,"author":{"gitId":"SeaHogs"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-18"},{"lineNumber":171,"author":{"gitId":"SeaHogs"},"content":" .add(\"identification\", getIdentificationInformation())","lastModifiedDate":"2024-03-18"},{"lineNumber":172,"author":{"gitId":"SeaHogs"},"content":" .add(\"contact\", getContactInformation())","lastModifiedDate":"2024-03-18"},{"lineNumber":173,"author":{"gitId":"SeaHogs"},"content":" .add(\"medicalinfo\", getMedicalInformation())","lastModifiedDate":"2024-03-18"},{"lineNumber":174,"author":{"gitId":"SeaHogs"},"content":" .toString();","lastModifiedDate":"2024-03-18"},{"lineNumber":175,"author":{"gitId":"SeaHogs"},"content":" } else if (hasContactInformation()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":176,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":177,"author":{"gitId":"javierng2knus"},"content":" .add(\"identification\", getIdentificationInformation())","lastModifiedDate":"2024-03-15"},{"lineNumber":178,"author":{"gitId":"javierng2knus"},"content":" .add(\"contact\", getContactInformation())","lastModifiedDate":"2024-03-15"},{"lineNumber":179,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":180,"author":{"gitId":"SeaHogs"},"content":" } else if (hasMedicalInformation()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":181,"author":{"gitId":"SeaHogs"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-19"},{"lineNumber":182,"author":{"gitId":"SeaHogs"},"content":" .add(\"identification\", getIdentificationInformation())","lastModifiedDate":"2024-03-19"},{"lineNumber":183,"author":{"gitId":"SeaHogs"},"content":" .add(\"medicalinfo\", getMedicalInformation())","lastModifiedDate":"2024-03-19"},{"lineNumber":184,"author":{"gitId":"SeaHogs"},"content":" .toString();","lastModifiedDate":"2024-03-19"},{"lineNumber":185,"author":{"gitId":"javierng2knus"},"content":" } else {","lastModifiedDate":"2024-03-15"},{"lineNumber":186,"author":{"gitId":"javierng2knus"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-15"},{"lineNumber":187,"author":{"gitId":"javierng2knus"},"content":" .add(\"identification\", getIdentificationInformation())","lastModifiedDate":"2024-03-15"},{"lineNumber":188,"author":{"gitId":"javierng2knus"},"content":" .toString();","lastModifiedDate":"2024-03-15"},{"lineNumber":189,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-15"},{"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":{"javierng2knus":34,"MaYuehan":5,"Ella-e":16,"-":59,"SeaHogs":78}},{"path":"src/main/java/vitalconnect/model/person/UniquePersonList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.model.person;","lastModifiedDate":"2024-03-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":"MaYuehan"},"content":"import static vitalconnect.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.exceptions.PersonNotFoundException;","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Adds a person to the list.","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * The person must not already exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void add(Person toAdd) {","lastModifiedDate":"2018-08-07"},{"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":"-"},"content":" * Replaces the person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2017-06-07"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":54,"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":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-07"},{"lineNumber":57,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2018-08-08"},{"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":"-"},"content":" if (!target.isSamePerson(editedPerson) \u0026\u0026 contains(editedPerson)) {","lastModifiedDate":"2018-04-19"},{"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":"-"},"content":" internalList.set(index, editedPerson);","lastModifiedDate":"2018-01-10"},{"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":"-"},"content":" * Removes the equivalent person from the list.","lastModifiedDate":"2016-08-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * The person must exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void remove(Person toRemove) {","lastModifiedDate":"2018-08-07"},{"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":"-"},"content":" public void setPersons(UniquePersonList replacement) {","lastModifiedDate":"2016-10-19"},{"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":"-"},"content":" * Replaces the contents of this list with {@code persons}.","lastModifiedDate":"2018-08-07"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2018-08-07"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void setPersons(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-08-07"},{"lineNumber":92,"author":{"gitId":"-"},"content":" requireAllNonNull(persons);","lastModifiedDate":"2018-01-10"},{"lineNumber":93,"author":{"gitId":"-"},"content":" if (!personsAreUnique(persons)) {","lastModifiedDate":"2018-04-19"},{"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":"-"},"content":" internalList.setAll(persons);","lastModifiedDate":"2018-08-14"},{"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":"-"},"content":" public ObservableList\u003cPerson\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2018-04-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":"-"},"content":" public Iterator\u003cPerson\u003e iterator() {","lastModifiedDate":"2016-08-24"},{"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":"-"},"content":" if (!(other instanceof UniquePersonList)) {","lastModifiedDate":"2023-07-13"},{"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":"-"},"content":" UniquePersonList otherUniquePersonList \u003d (UniquePersonList) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" return internalList.equals(otherUniquePersonList.internalList);","lastModifiedDate":"2023-07-13"},{"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":"-"},"content":" * Returns true if {@code persons} contains only unique persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":140,"author":{"gitId":"-"},"content":" private boolean personsAreUnique(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-04-19"},{"lineNumber":141,"author":{"gitId":"-"},"content":" for (int i \u003d 0; i \u003c persons.size() - 1; i++) {","lastModifiedDate":"2018-04-19"},{"lineNumber":142,"author":{"gitId":"-"},"content":" for (int j \u003d i + 1; j \u003c persons.size(); j++) {","lastModifiedDate":"2018-04-19"},{"lineNumber":143,"author":{"gitId":"-"},"content":" if (persons.get(i).isSamePerson(persons.get(j))) {","lastModifiedDate":"2018-04-19"},{"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":{"MaYuehan":4,"-":146}},{"path":"src/main/java/vitalconnect/model/person/contactinformation/Address.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.model.person.contactinformation;","lastModifiedDate":"2024-03-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":"MaYuehan"},"content":"import static vitalconnect.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"javierng2knus"},"content":" * Represents a Person\u0027s address in the clinic.","lastModifiedDate":"2024-03-11"},{"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":"Ella-e"},"content":" public static final String VALIDATION_REGEX \u003d \"^[^/]*$\";","lastModifiedDate":"2024-03-17"},{"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":"Ella-e"},"content":" public Address() {","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"Ella-e"},"content":" value \u003d \"\";","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"Ella-e"},"content":" public boolean isEmpty() {","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"Ella-e"},"content":" return value.equals(\"\");","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid email.","lastModifiedDate":"2018-04-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static boolean isValidAddress(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"Ella-e"},"content":" return test.matches(VALIDATION_REGEX) || test.equals(\"\");","lastModifiedDate":"2024-03-17"},{"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 String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return true;","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":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" if (!(other instanceof Address)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" Address otherAddress \u003d (Address) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return value.equals(otherAddress.value);","lastModifiedDate":"2023-07-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"javierng2knus":1,"MaYuehan":2,"Ella-e":10,"-":60}},{"path":"src/main/java/vitalconnect/model/person/contactinformation/ContactInformation.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.model.person.contactinformation;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"javierng2knus"},"content":"/**","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"javierng2knus"},"content":" * Represents a Person\u0027s contact information","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidContactInformation(ContactInformation)}","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"javierng2knus"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"javierng2knus"},"content":"public class ContactInformation {","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Invalid Contactinformation\";","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"javierng2knus"},"content":" // Identity fields","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":" private Email email;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"content":" private Phone phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":" private Address address;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":" * Constructor","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":" public ContactInformation() {","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":" this.email \u003d new Email(\"\");","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":" this.phone \u003d new Phone(\"\");","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"Ella-e"},"content":" this.address \u003d new Address(\"\");","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"Ella-e"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"Ella-e"},"content":" * Use String as the parameter for the instantiation.","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"Ella-e"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"Ella-e"},"content":" public ContactInformation(String email, String phone, String address) {","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"Ella-e"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"Ella-e"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"Ella-e"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"javierng2knus"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"javierng2knus"},"content":" * Constructs a {@code ContactInformation}.","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"javierng2knus"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"javierng2knus"},"content":" * @param email A valid email.","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"javierng2knus"},"content":" * @param phone A valid phone.","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"javierng2knus"},"content":" * @param address A valid address.","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"javierng2knus"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"javierng2knus"},"content":" public ContactInformation(Email email, Phone phone, Address address) {","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"javierng2knus"},"content":" this.email \u003d email;","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"javierng2knus"},"content":" this.phone \u003d phone;","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"javierng2knus"},"content":" this.address \u003d address;","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"javierng2knus"},"content":" public Email getEmail() {","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"javierng2knus"},"content":" return email;","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"javierng2knus"},"content":" public Phone getPhone() {","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"javierng2knus"},"content":" return phone;","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"javierng2knus"},"content":" public Address getAddress() {","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"javierng2knus"},"content":" return address;","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"Ella-e"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"Ella-e"},"content":" * Returns true if a given string is a valid contactInformation","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"Ella-e"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"Ella-e"},"content":" public static boolean isValidContactInformation(ContactInformation contactInformation) {","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"Ella-e"},"content":" String emailTest \u003d contactInformation.getEmail().value;","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"Ella-e"},"content":" String phoneTest \u003d contactInformation.getPhone().value;","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"Ella-e"},"content":" String addressTest \u003d contactInformation.getAddress().value;","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"Ella-e"},"content":" return emailTest.matches(Email.VALIDATION_REGEX) \u0026\u0026 phoneTest.matches(Phone.VALIDATION_REGEX)","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"Ella-e"},"content":" \u0026\u0026 addressTest.matches(vitalconnect.model.person.contactinformation.Address.VALIDATION_REGEX);","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"Ella-e"},"content":" public boolean isEmptyContact() {","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"Ella-e"},"content":" return email.isEmpty() \u0026\u0026 phone.isEmpty() \u0026\u0026 address.isEmpty();","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"Ella-e"},"content":" public String toString() {","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"Ella-e"},"content":" String result \u003d \"\";","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"Ella-e"},"content":" if (phone !\u003d null) {","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"Ella-e"},"content":" result +\u003d \"phone: \" + phone + \"\\n\";","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"Ella-e"},"content":" if (email !\u003d null) {","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"Ella-e"},"content":" result +\u003d \"email: \" + email + \"\\n\";","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"Ella-e"},"content":" if (address !\u003d null) {","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"Ella-e"},"content":" result +\u003d \"address: \" + address + \"\\n\";","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"Ella-e"},"content":" return result;","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":88,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"Ella-e"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-17"},{"lineNumber":90,"author":{"gitId":"Ella-e"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"Ella-e"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"Ella-e"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"Ella-e"},"content":" if (!(other instanceof ContactInformation)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"Ella-e"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"Ella-e"},"content":" ContactInformation otherCI \u003d (ContactInformation) other;","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"Ella-e"},"content":" return otherCI.getEmail().equals(this.getEmail())","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"Ella-e"},"content":" \u0026\u0026 otherCI.getAddress().equals(this.getAddress())","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"Ella-e"},"content":" \u0026\u0026 otherCI.getPhone().equals(this.getPhone());","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"javierng2knus"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"javierng2knus":33,"MaYuehan":1,"Ella-e":70}},{"path":"src/main/java/vitalconnect/model/person/contactinformation/Email.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.model.person.contactinformation;","lastModifiedDate":"2024-03-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":"MaYuehan"},"content":"import static vitalconnect.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"javierng2knus"},"content":" * Represents a Person\u0027s email in the clinic.","lastModifiedDate":"2024-03-11"},{"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":"Ella-e"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"Ella-e"},"content":" * Default initializer","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"Ella-e"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"Ella-e"},"content":" public Email() {","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"Ella-e"},"content":" value \u003d \"\";","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Returns if a given string is a valid email.","lastModifiedDate":"2018-04-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static boolean isValidEmail(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"Ella-e"},"content":" return test.matches(VALIDATION_REGEX) || test.equals(\"\");","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"Ella-e"},"content":" public boolean isEmpty() {","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"Ella-e"},"content":" return value.equals(\"\");","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24"},{"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":"2016-08-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"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 Email)) {","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":" Email otherEmail \u003d (Email) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return value.equals(otherEmail.value);","lastModifiedDate":"2023-07-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return value.hashCode();","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"}],"authorContributionMap":{"javierng2knus":1,"MaYuehan":2,"Ella-e":11,"-":75}},{"path":"src/main/java/vitalconnect/model/person/contactinformation/Phone.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.model.person.contactinformation;","lastModifiedDate":"2024-03-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":"MaYuehan"},"content":"import static vitalconnect.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"javierng2knus"},"content":" * Represents a Person\u0027s phone number in the clinic.","lastModifiedDate":"2024-03-11"},{"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":"Ella-e"},"content":" public Phone() {","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"Ella-e"},"content":" value \u003d \"\";","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"Ella-e"},"content":" public boolean isEmpty() {","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"Ella-e"},"content":" return value.equals(\"\");","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid phone number.","lastModifiedDate":"2018-04-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static boolean isValidPhone(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"Ella-e"},"content":" return test.matches(VALIDATION_REGEX) || test.equals(\"\");","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (!(other instanceof Phone)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Phone otherPhone \u003d (Phone) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return value.equals(otherPhone.value);","lastModifiedDate":"2023-07-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"javierng2knus":1,"MaYuehan":2,"Ella-e":9,"-":57}},{"path":"src/main/java/vitalconnect/model/person/exceptions/DuplicatePersonException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.model.person.exceptions;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Signals that the operation will result in duplicate Persons (Persons are considered duplicates if they have the same","lastModifiedDate":"2018-04-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":" * identity).","lastModifiedDate":"2018-04-19"},{"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":"-"},"content":" super(\"Operation would result in duplicate persons\");","lastModifiedDate":"2017-06-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09"}],"authorContributionMap":{"MaYuehan":1,"-":10}},{"path":"src/main/java/vitalconnect/model/person/exceptions/PersonNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.model.person.exceptions;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Signals that the operation is unable to find the specified person.","lastModifiedDate":"2017-06-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class PersonNotFoundException extends RuntimeException {}","lastModifiedDate":"2018-08-07"}],"authorContributionMap":{"MaYuehan":1,"-":5}},{"path":"src/main/java/vitalconnect/model/person/identificationinformation/IdentificationInformation.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.model.person.identificationinformation;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"javierng2knus"},"content":"/**","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"javierng2knus"},"content":" * Represents a Person\u0027s identification information","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"javierng2knus"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidIdentificationInformation(String, String)}","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"javierng2knus"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"javierng2knus"},"content":"public class IdentificationInformation {","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"javierng2knus"},"content":" // Identity fields","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"javierng2knus"},"content":" private final Name name;","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"javierng2knus"},"content":" private final Nric nric;","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"javierng2knus"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"javierng2knus"},"content":" * Constructs a {@code IdentificationInformation}.","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"javierng2knus"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"javierng2knus"},"content":" * @param name A valid name.","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"javierng2knus"},"content":" * @param nric A valid nric.","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"javierng2knus"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"javierng2knus"},"content":" public IdentificationInformation(Name name, Nric nric) {","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"javierng2knus"},"content":" this.name \u003d name;","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"javierng2knus"},"content":" this.nric \u003d nric;","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"javierng2knus"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"javierng2knus"},"content":" * Constructs a {@code IdentificationInformation}.","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"javierng2knus"},"content":" *","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"javierng2knus"},"content":" * @param name A valid name.","lastModifiedDate":"2024-03-15"},{"lineNumber":28,"author":{"gitId":"javierng2knus"},"content":" * @param nric A valid nric.","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"javierng2knus"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"javierng2knus"},"content":" public IdentificationInformation(String name, String nric) {","lastModifiedDate":"2024-03-15"},{"lineNumber":31,"author":{"gitId":"javierng2knus"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2024-03-15"},{"lineNumber":32,"author":{"gitId":"javierng2knus"},"content":" this.nric \u003d new Nric(nric);","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":34,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"javierng2knus"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":36,"author":{"gitId":"javierng2knus"},"content":" * Returns true if a given info is a valid IdentificationInformation.","lastModifiedDate":"2024-03-15"},{"lineNumber":37,"author":{"gitId":"javierng2knus"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"javierng2knus"},"content":" public static boolean isValidIdentificationInformation(String nameTest, String nricTest) {","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"javierng2knus"},"content":" return Name.isValidName(nameTest) \u0026\u0026 Nric.isValidNric(nricTest);","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"javierng2knus"},"content":" public Name getName() {","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"javierng2knus"},"content":" return name;","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"javierng2knus"},"content":" public Nric getNric() {","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"javierng2knus"},"content":" return nric;","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"javierng2knus"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"javierng2knus"},"content":" public String toString() {","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"javierng2knus"},"content":" return \"[name\u003d\" + name + \", nric\u003d\" + nric + \"]\";","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"javierng2knus"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"javierng2knus"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"javierng2knus"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"javierng2knus"},"content":" return true;","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"javierng2knus"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"javierng2knus"},"content":" if (!(other instanceof IdentificationInformation)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"javierng2knus"},"content":" return false;","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":66,"author":{"gitId":"javierng2knus"},"content":" IdentificationInformation otherInfo \u003d (IdentificationInformation) other;","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"javierng2knus"},"content":" return name.equals(otherInfo.name) \u0026\u0026 nric.equals(otherInfo.nric);","lastModifiedDate":"2024-03-15"},{"lineNumber":68,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":70,"author":{"gitId":"javierng2knus"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":71,"author":{"gitId":"javierng2knus"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-11"},{"lineNumber":72,"author":{"gitId":"javierng2knus"},"content":" return name.hashCode() + nric.hashCode();","lastModifiedDate":"2024-03-11"},{"lineNumber":73,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"javierng2knus"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"javierng2knus":73,"MaYuehan":1}},{"path":"src/main/java/vitalconnect/model/person/identificationinformation/Name.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.model.person.identificationinformation;","lastModifiedDate":"2024-03-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":"MaYuehan"},"content":"import static vitalconnect.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"javierng2knus"},"content":" * Represents a Person\u0027s name in the clinic.","lastModifiedDate":"2024-03-11"},{"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":"-"},"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":"-"},"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":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return fullName;","lastModifiedDate":"2016-08-24"},{"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 boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return true;","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":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" if (!(other instanceof Name)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return false;","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":" Name otherName \u003d (Name) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return fullName.equals(otherName.fullName);","lastModifiedDate":"2023-07-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return fullName.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"javierng2knus":1,"MaYuehan":2,"-":63}},{"path":"src/main/java/vitalconnect/model/person/identificationinformation/NameContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.model.person.identificationinformation;","lastModifiedDate":"2024-03-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":"MaYuehan"},"content":"import vitalconnect.commons.util.StringUtil;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-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":"javierng2knus"},"content":" .anyMatch(keyword -\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"javierng2knus"},"content":" StringUtil.containsWordIgnoreCase(person.getIdentificationInformation().getName().fullName,","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"javierng2knus"},"content":" keyword));","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" if (!(other instanceof NameContainsKeywordsPredicate)) {","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":" NameContainsKeywordsPredicate otherNameContainsKeywordsPredicate \u003d (NameContainsKeywordsPredicate) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return keywords.equals(otherNameContainsKeywordsPredicate.keywords);","lastModifiedDate":"2023-07-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"javierng2knus":3,"MaYuehan":4,"-":40}},{"path":"src/main/java/vitalconnect/model/person/identificationinformation/Nric.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.model.person.identificationinformation;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":3,"author":{"gitId":"javierng2knus"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"javierng2knus"},"content":"import static vitalconnect.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-15"},{"lineNumber":5,"author":{"gitId":"javierng2knus"},"content":"/**","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"javierng2knus"},"content":" * Represents a Person\u0027s NRIC in the clinic.","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"javierng2knus"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidNric(String)}","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"javierng2knus"},"content":" * Got formula from nric Validation from https://github.com/samliew/singapore-nric/tree/main","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"javierng2knus"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"javierng2knus"},"content":"public class Nric {","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"javierng2knus"},"content":" public static final String VALIDATION_REGEX \u003d \"^[S T F G M]\\\\d{7}\\\\w$\";","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"javierng2knus"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"javierng2knus"},"content":" \"NRIC is invalid, should be @xxxxxxx# \"","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"javierng2knus"},"content":" + \"where @ is a letter that can be S,T,F,G or M and \"","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"javierng2knus"},"content":" + \"# is the appropriate letter.\";","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"javierng2knus"},"content":" public final String nric;","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"javierng2knus"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":21,"author":{"gitId":"javierng2knus"},"content":" * Constructs a {@code Nric}.","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"javierng2knus"},"content":" *","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"javierng2knus"},"content":" * @param nric A valid Nric.","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"javierng2knus"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"javierng2knus"},"content":" public Nric(String nric) {","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"javierng2knus"},"content":" requireNonNull(nric);","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"javierng2knus"},"content":" checkArgument(isValidNric(nric), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":28,"author":{"gitId":"javierng2knus"},"content":" this.nric \u003d nric;","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":31,"author":{"gitId":"javierng2knus"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":32,"author":{"gitId":"javierng2knus"},"content":" * Returns true if a given string is a valid nric.","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"javierng2knus"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":34,"author":{"gitId":"javierng2knus"},"content":" public static boolean isValidNric(String test) {","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"javierng2knus"},"content":" if (test.matches(\"test\")) {","lastModifiedDate":"2024-03-15"},{"lineNumber":36,"author":{"gitId":"javierng2knus"},"content":" return true;","lastModifiedDate":"2024-03-15"},{"lineNumber":37,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":38,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":39,"author":{"gitId":"javierng2knus"},"content":" if (!test.matches(VALIDATION_REGEX)) {","lastModifiedDate":"2024-03-15"},{"lineNumber":40,"author":{"gitId":"javierng2knus"},"content":" return false;","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":42,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"javierng2knus"},"content":" String checksumStr \u003d test.substring(1, 8);","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"javierng2knus"},"content":" return isValidChecksum(test.charAt(0), checksumStr, test.charAt(8));","lastModifiedDate":"2024-03-15"},{"lineNumber":47,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":48,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":49,"author":{"gitId":"javierng2knus"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"javierng2knus"},"content":" * Returns true if the given char is valid based on the given string and prefix","lastModifiedDate":"2024-03-15"},{"lineNumber":51,"author":{"gitId":"javierng2knus"},"content":" *","lastModifiedDate":"2024-03-15"},{"lineNumber":52,"author":{"gitId":"javierng2knus"},"content":" * @param prefixChar The prefix char to check.","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"javierng2knus"},"content":" * @param checksumStr The checksum string to check.","lastModifiedDate":"2024-03-15"},{"lineNumber":54,"author":{"gitId":"javierng2knus"},"content":" * @param charToCheck The char to check if it is valid.","lastModifiedDate":"2024-03-15"},{"lineNumber":55,"author":{"gitId":"javierng2knus"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":56,"author":{"gitId":"javierng2knus"},"content":" public static boolean isValidChecksum(char prefixChar, String checksumStr, char charToCheck) {","lastModifiedDate":"2024-03-15"},{"lineNumber":57,"author":{"gitId":"javierng2knus"},"content":" // Multiply the digits by the appropriate weightage","lastModifiedDate":"2024-03-15"},{"lineNumber":58,"author":{"gitId":"javierng2knus"},"content":" int total \u003d Character.getNumericValue(checksumStr.charAt(0)) * 2","lastModifiedDate":"2024-03-15"},{"lineNumber":59,"author":{"gitId":"javierng2knus"},"content":" + Character.getNumericValue(checksumStr.charAt(1)) * 7","lastModifiedDate":"2024-03-15"},{"lineNumber":60,"author":{"gitId":"javierng2knus"},"content":" + Character.getNumericValue(checksumStr.charAt(2)) * 6","lastModifiedDate":"2024-03-15"},{"lineNumber":61,"author":{"gitId":"javierng2knus"},"content":" + Character.getNumericValue(checksumStr.charAt(3)) * 5","lastModifiedDate":"2024-03-15"},{"lineNumber":62,"author":{"gitId":"javierng2knus"},"content":" + Character.getNumericValue(checksumStr.charAt(4)) * 4","lastModifiedDate":"2024-03-15"},{"lineNumber":63,"author":{"gitId":"javierng2knus"},"content":" + Character.getNumericValue(checksumStr.charAt(5)) * 3","lastModifiedDate":"2024-03-15"},{"lineNumber":64,"author":{"gitId":"javierng2knus"},"content":" + Character.getNumericValue(checksumStr.charAt(6)) * 2;","lastModifiedDate":"2024-03-15"},{"lineNumber":65,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":66,"author":{"gitId":"javierng2knus"},"content":" // Add the proper offset and set the array (following the checksum algorithm)","lastModifiedDate":"2024-03-15"},{"lineNumber":67,"author":{"gitId":"javierng2knus"},"content":" char[] checksumResultChar \u003d new char[]{ \u0027J\u0027, \u0027Z\u0027, \u0027I\u0027, \u0027H\u0027, \u0027G\u0027, \u0027F\u0027, \u0027E\u0027, \u0027D\u0027, \u0027C\u0027, \u0027B\u0027, \u0027A\u0027 };","lastModifiedDate":"2024-03-15"},{"lineNumber":68,"author":{"gitId":"javierng2knus"},"content":" switch (prefixChar) {","lastModifiedDate":"2024-03-15"},{"lineNumber":69,"author":{"gitId":"javierng2knus"},"content":" case \u0027S\u0027:","lastModifiedDate":"2024-03-15"},{"lineNumber":70,"author":{"gitId":"javierng2knus"},"content":" break;","lastModifiedDate":"2024-03-15"},{"lineNumber":71,"author":{"gitId":"javierng2knus"},"content":" case \u0027T\u0027:","lastModifiedDate":"2024-03-15"},{"lineNumber":72,"author":{"gitId":"javierng2knus"},"content":" total +\u003d 4;","lastModifiedDate":"2024-03-15"},{"lineNumber":73,"author":{"gitId":"javierng2knus"},"content":" break;","lastModifiedDate":"2024-03-15"},{"lineNumber":74,"author":{"gitId":"javierng2knus"},"content":" case \u0027G\u0027:","lastModifiedDate":"2024-03-15"},{"lineNumber":75,"author":{"gitId":"javierng2knus"},"content":" total +\u003d 4;","lastModifiedDate":"2024-03-15"},{"lineNumber":76,"author":{"gitId":"javierng2knus"},"content":" checksumResultChar \u003d new char[]{ \u0027X\u0027, \u0027W\u0027, \u0027U\u0027, \u0027T\u0027, \u0027R\u0027, \u0027Q\u0027, \u0027P\u0027, \u0027N\u0027, \u0027M\u0027, \u0027L\u0027, \u0027K\u0027 };","lastModifiedDate":"2024-03-15"},{"lineNumber":77,"author":{"gitId":"javierng2knus"},"content":" break;","lastModifiedDate":"2024-03-15"},{"lineNumber":78,"author":{"gitId":"javierng2knus"},"content":" case \u0027F\u0027:","lastModifiedDate":"2024-03-15"},{"lineNumber":79,"author":{"gitId":"javierng2knus"},"content":" checksumResultChar \u003d new char[]{ \u0027X\u0027, \u0027W\u0027, \u0027U\u0027, \u0027T\u0027, \u0027R\u0027, \u0027Q\u0027, \u0027P\u0027, \u0027N\u0027, \u0027M\u0027, \u0027L\u0027, \u0027K\u0027 };","lastModifiedDate":"2024-03-15"},{"lineNumber":80,"author":{"gitId":"javierng2knus"},"content":" break;","lastModifiedDate":"2024-03-15"},{"lineNumber":81,"author":{"gitId":"javierng2knus"},"content":" case \u0027M\u0027:","lastModifiedDate":"2024-03-15"},{"lineNumber":82,"author":{"gitId":"javierng2knus"},"content":" checksumResultChar \u003d new char[]{ \u0027K\u0027, \u0027L\u0027, \u0027J\u0027, \u0027N\u0027, \u0027P\u0027, \u0027Q\u0027, \u0027R\u0027, \u0027T\u0027, \u0027U\u0027, \u0027W\u0027, \u0027X\u0027 };","lastModifiedDate":"2024-03-15"},{"lineNumber":83,"author":{"gitId":"javierng2knus"},"content":" total +\u003d 3;","lastModifiedDate":"2024-03-15"},{"lineNumber":84,"author":{"gitId":"javierng2knus"},"content":" break;","lastModifiedDate":"2024-03-15"},{"lineNumber":85,"author":{"gitId":"javierng2knus"},"content":" default:","lastModifiedDate":"2024-03-15"},{"lineNumber":86,"author":{"gitId":"javierng2knus"},"content":" break;","lastModifiedDate":"2024-03-15"},{"lineNumber":87,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":88,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":89,"author":{"gitId":"javierng2knus"},"content":" total %\u003d 11;","lastModifiedDate":"2024-03-15"},{"lineNumber":90,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":91,"author":{"gitId":"javierng2knus"},"content":" // If M, need to adjust","lastModifiedDate":"2024-03-15"},{"lineNumber":92,"author":{"gitId":"javierng2knus"},"content":" if (prefixChar \u003d\u003d \u0027M\u0027) {","lastModifiedDate":"2024-03-15"},{"lineNumber":93,"author":{"gitId":"javierng2knus"},"content":" total \u003d 10 - total;","lastModifiedDate":"2024-03-15"},{"lineNumber":94,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":95,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":96,"author":{"gitId":"javierng2knus"},"content":" return checksumResultChar[total] \u003d\u003d charToCheck;","lastModifiedDate":"2024-03-15"},{"lineNumber":97,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":98,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":99,"author":{"gitId":"javierng2knus"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":100,"author":{"gitId":"javierng2knus"},"content":" public String toString() {","lastModifiedDate":"2024-03-15"},{"lineNumber":101,"author":{"gitId":"javierng2knus"},"content":" return nric;","lastModifiedDate":"2024-03-15"},{"lineNumber":102,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":103,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":104,"author":{"gitId":"javierng2knus"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":105,"author":{"gitId":"javierng2knus"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-15"},{"lineNumber":106,"author":{"gitId":"javierng2knus"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-15"},{"lineNumber":107,"author":{"gitId":"javierng2knus"},"content":" return true;","lastModifiedDate":"2024-03-15"},{"lineNumber":108,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":109,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":110,"author":{"gitId":"javierng2knus"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-15"},{"lineNumber":111,"author":{"gitId":"javierng2knus"},"content":" if (!(other instanceof Nric)) {","lastModifiedDate":"2024-03-15"},{"lineNumber":112,"author":{"gitId":"javierng2knus"},"content":" return false;","lastModifiedDate":"2024-03-15"},{"lineNumber":113,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":114,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":115,"author":{"gitId":"javierng2knus"},"content":" Nric otherNric \u003d (Nric) other;","lastModifiedDate":"2024-03-15"},{"lineNumber":116,"author":{"gitId":"javierng2knus"},"content":" return nric.equals(otherNric.nric);","lastModifiedDate":"2024-03-15"},{"lineNumber":117,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":118,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":119,"author":{"gitId":"javierng2knus"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":120,"author":{"gitId":"javierng2knus"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-15"},{"lineNumber":121,"author":{"gitId":"javierng2knus"},"content":" return nric.hashCode();","lastModifiedDate":"2024-03-15"},{"lineNumber":122,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":123,"author":{"gitId":"javierng2knus"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"javierng2knus":122,"MaYuehan":1}},{"path":"src/main/java/vitalconnect/model/person/medicalinformation/Height.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SeaHogs"},"content":"package vitalconnect.model.person.medicalinformation;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"SeaHogs"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"SeaHogs"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"SeaHogs"},"content":" * Represents a Person\u0027s name in the clinic.","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"SeaHogs"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidHeight(String)}","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"SeaHogs"},"content":"public class Height {","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"SeaHogs"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"SeaHogs"},"content":" \"Height should only contain alphanumerical measured in cm, and should be bigger than 0\";","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"SeaHogs"},"content":" /*","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"SeaHogs"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"SeaHogs"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"SeaHogs"},"content":" public static final String VALIDATION_REGEX \u003d \"[0-9]*\\\\.?[0-9]+\";","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"SeaHogs"},"content":" public final String value;","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"SeaHogs"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"SeaHogs"},"content":" * Constructs a {@code Height}.","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"SeaHogs"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"SeaHogs"},"content":" * @param height A valid height.","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"SeaHogs"},"content":" public Height(String height) {","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"SeaHogs"},"content":" requireNonNull(height);","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"SeaHogs"},"content":" checkArgument(isValidHeight(height), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"SeaHogs"},"content":" this.value \u003d height;","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"Ella-e"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"Ella-e"},"content":" * Constructs a {@code Height}.","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"Ella-e"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"Ella-e"},"content":" public Height() {","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"Ella-e"},"content":" this.value \u003d \"\";","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"SeaHogs"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"SeaHogs"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"SeaHogs"},"content":" public static boolean isValidHeight(String test) {","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"SeaHogs"},"content":" if (test.isEmpty()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"SeaHogs"},"content":" return true;","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"SeaHogs"},"content":" return test.matches(VALIDATION_REGEX) \u0026\u0026 Float.parseFloat(test) \u003e 0;","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"SeaHogs"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"SeaHogs"},"content":" public String toString() {","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"SeaHogs"},"content":" return value;","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"SeaHogs"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"SeaHogs"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"SeaHogs"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"SeaHogs"},"content":" return true;","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"SeaHogs"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"SeaHogs"},"content":" if (!(other instanceof Height)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"SeaHogs"},"content":" return false;","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"SeaHogs"},"content":" Height otherHeight \u003d (Height) other;","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"SeaHogs"},"content":" return value.equals(otherHeight.value);","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"SeaHogs"},"content":" public boolean isEmpty() {","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"SeaHogs"},"content":" return value.isEmpty();","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"SeaHogs"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"SeaHogs"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"SeaHogs"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"SeaHogs"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"Ella-e":7,"SeaHogs":70}},{"path":"src/main/java/vitalconnect/model/person/medicalinformation/MedicalInformation.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SeaHogs"},"content":"package vitalconnect.model.person.medicalinformation;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"SeaHogs"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"SeaHogs"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"SeaHogs"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.allergytag.AllergyTag;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"SeaHogs"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"SeaHogs"},"content":" * Represents the medical information of a person, including height, weight, and allergies.","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"SeaHogs"},"content":"public class MedicalInformation {","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":" private Height height;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":" private Weight weight;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":" private Set\u003cAllergyTag\u003e allergyTag;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"SeaHogs"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"SeaHogs"},"content":" * Constructs a MedicalInformation object with the specified height, weight, and set of allergy tags.","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"SeaHogs"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"SeaHogs"},"content":" * @param height the height of the person","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"SeaHogs"},"content":" * @param weight the weight of the person","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"SeaHogs"},"content":" * @param allergyTag the set of allergy tags associated with the person","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"SeaHogs"},"content":" public MedicalInformation(Height height, Weight weight, Set\u003cAllergyTag\u003e allergyTag) {","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"SeaHogs"},"content":" this.height \u003d height;","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"SeaHogs"},"content":" this.weight \u003d weight;","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"SeaHogs"},"content":" this.allergyTag \u003d allergyTag;","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"SeaHogs"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"SeaHogs"},"content":" * Constructs a MedicalInformation object with the specified height and weight,","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"SeaHogs"},"content":" * initializing the allergy tags to an empty set.","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"SeaHogs"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"SeaHogs"},"content":" * @param height the height of the person","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"SeaHogs"},"content":" * @param weight the weight of the person","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"SeaHogs"},"content":" public MedicalInformation(Height height, Weight weight) {","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"SeaHogs"},"content":" this.height \u003d height;","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"SeaHogs"},"content":" this.weight \u003d weight;","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"SeaHogs"},"content":" this.allergyTag \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"Ella-e"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"Ella-e"},"content":" * Constructs a MedicalInformation object with the specified height and weight,","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"Ella-e"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"Ella-e"},"content":" public MedicalInformation() {","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"Ella-e"},"content":" this.height \u003d new Height(\"\");","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"Ella-e"},"content":" this.weight \u003d new Weight(\"\");","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"Ella-e"},"content":" this.allergyTag \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"Ella-e"},"content":" public boolean isEmpty() {","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"Ella-e"},"content":" return height.isEmpty() \u0026\u0026 weight.isEmpty() \u0026\u0026 allergyTag.isEmpty();","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"SeaHogs"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"SeaHogs"},"content":" * Gets the height of the person.","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"SeaHogs"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"SeaHogs"},"content":" * @return the height of the person","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"SeaHogs"},"content":" public Height getHeight() {","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"SeaHogs"},"content":" return height;","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"SeaHogs"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"SeaHogs"},"content":" * Gets the weight of the person.","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"SeaHogs"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"SeaHogs"},"content":" * @return the weight of the person","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"SeaHogs"},"content":" public Weight getWeight() {","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"SeaHogs"},"content":" return weight;","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"SeaHogs"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"SeaHogs"},"content":" * Gets an unmodifiable set of allergy tags associated with the person.","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"SeaHogs"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"SeaHogs"},"content":" * @return an unmodifiable set of allergy tags","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"SeaHogs"},"content":" public Set\u003cAllergyTag\u003e getAllergyTag() {","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"SeaHogs"},"content":" return Collections.unmodifiableSet(allergyTag);","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"SeaHogs"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"SeaHogs"},"content":" * Returns a string representation of the MedicalInformation object.","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"SeaHogs"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"SeaHogs"},"content":" * @return a string representation of the object","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"SeaHogs"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"SeaHogs"},"content":" public String toString() {","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"SeaHogs"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"javierng2knus"},"content":" builder.append(\" Height: \").append(getHeight()).append(\"cm\")","lastModifiedDate":"2024-03-21"},{"lineNumber":93,"author":{"gitId":"javierng2knus"},"content":" .append(\"\\n Weight: \").append(getWeight()).append(\"kg\");","lastModifiedDate":"2024-03-21"},{"lineNumber":94,"author":{"gitId":"SeaHogs"},"content":" return builder.toString();","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"SeaHogs"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"SeaHogs"},"content":" * Checks if this MedicalInformation object is equal to another object.","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"SeaHogs"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"SeaHogs"},"content":" * @param other the object to compare","lastModifiedDate":"2024-03-18"},{"lineNumber":101,"author":{"gitId":"SeaHogs"},"content":" * @return true if the objects are equal, false otherwise","lastModifiedDate":"2024-03-18"},{"lineNumber":102,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":103,"author":{"gitId":"SeaHogs"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":104,"author":{"gitId":"SeaHogs"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-18"},{"lineNumber":105,"author":{"gitId":"SeaHogs"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-18"},{"lineNumber":106,"author":{"gitId":"SeaHogs"},"content":" return true;","lastModifiedDate":"2024-03-18"},{"lineNumber":107,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":109,"author":{"gitId":"SeaHogs"},"content":" if (!(other instanceof MedicalInformation)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":110,"author":{"gitId":"SeaHogs"},"content":" return false;","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":113,"author":{"gitId":"SeaHogs"},"content":" MedicalInformation otherInfo \u003d (MedicalInformation) other;","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"SeaHogs"},"content":" return height.equals(otherInfo.height) \u0026\u0026 weight.equals(otherInfo.weight)","lastModifiedDate":"2024-03-18"},{"lineNumber":115,"author":{"gitId":"SeaHogs"},"content":" \u0026\u0026 allergyTag.equals(otherInfo.allergyTag);","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":118,"author":{"gitId":"SeaHogs"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":119,"author":{"gitId":"SeaHogs"},"content":" * Generates a hash code for the MedicalInformation object.","lastModifiedDate":"2024-03-18"},{"lineNumber":120,"author":{"gitId":"SeaHogs"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":121,"author":{"gitId":"SeaHogs"},"content":" * @return the hash code value for this object","lastModifiedDate":"2024-03-18"},{"lineNumber":122,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":123,"author":{"gitId":"SeaHogs"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":124,"author":{"gitId":"SeaHogs"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-18"},{"lineNumber":125,"author":{"gitId":"SeaHogs"},"content":" return this.toString().hashCode();","lastModifiedDate":"2024-03-18"},{"lineNumber":126,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":127,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":128,"author":{"gitId":"SeaHogs"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"javierng2knus":2,"Ella-e":16,"SeaHogs":110}},{"path":"src/main/java/vitalconnect/model/person/medicalinformation/Weight.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SeaHogs"},"content":"package vitalconnect.model.person.medicalinformation;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"SeaHogs"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"SeaHogs"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"SeaHogs"},"content":" * Represents a Person\u0027s name in the clinic.","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"SeaHogs"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidWeight(String)}","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"SeaHogs"},"content":"public class Weight {","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"SeaHogs"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"SeaHogs"},"content":" \"Weight should only contain alphanumerical measured in kg, and should be bigger than 0\";","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"SeaHogs"},"content":" /*","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"SeaHogs"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"SeaHogs"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"SeaHogs"},"content":" public static final String VALIDATION_REGEX \u003d \"[0-9]*\\\\.?[0-9]+\";","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"SeaHogs"},"content":" public final String value;","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"SeaHogs"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"SeaHogs"},"content":" * Constructs a {@code Height}.","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"SeaHogs"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"SeaHogs"},"content":" * @param weight A valid weight.","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"SeaHogs"},"content":" public Weight(String weight) {","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"SeaHogs"},"content":" requireNonNull(weight);","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"SeaHogs"},"content":" checkArgument(isValidWeight(weight), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"SeaHogs"},"content":" this.value \u003d weight;","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"Ella-e"},"content":" public Weight() {","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"Ella-e"},"content":" this.value \u003d \"\";","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"Ella-e"},"content":" public boolean isEmtpy() {","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"Ella-e"},"content":" return value.isEmpty();","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"SeaHogs"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"SeaHogs"},"content":" * Returns true if a given string is a valid weight.","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"SeaHogs"},"content":" public static boolean isValidWeight(String test) {","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"SeaHogs"},"content":" if (test.isEmpty()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"SeaHogs"},"content":" return true;","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"SeaHogs"},"content":" return test.matches(VALIDATION_REGEX) \u0026\u0026 Float.parseFloat(test) \u003e 0;","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"SeaHogs"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"SeaHogs"},"content":" public String toString() {","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"SeaHogs"},"content":" return value;","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"SeaHogs"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"SeaHogs"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"SeaHogs"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"SeaHogs"},"content":" return true;","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"SeaHogs"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"SeaHogs"},"content":" if (!(other instanceof Weight)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"SeaHogs"},"content":" return false;","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"SeaHogs"},"content":" Weight otherWeight \u003d (Weight) other;","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"SeaHogs"},"content":" return value.equals(otherWeight.value);","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"SeaHogs"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"SeaHogs"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"SeaHogs"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"SeaHogs"},"content":" public boolean isEmpty() {","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"SeaHogs"},"content":" return value.isEmpty();","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"SeaHogs"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"Ella-e":7,"SeaHogs":71}},{"path":"src/main/java/vitalconnect/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.model.util;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.model.Clinic;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.ReadOnlyClinic;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.allergytag.AllergyTag;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"javierng2knus"},"content":"import vitalconnect.model.person.identificationinformation.IdentificationInformation;","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.identificationinformation.Name;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"javierng2knus"},"content":"import vitalconnect.model.person.identificationinformation.Nric;","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":16,"author":{"gitId":"javierng2knus"},"content":" * Contains utility methods for populating {@code Clinic} with sample data.","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20"},{"lineNumber":21,"author":{"gitId":"SeaHogs"},"content":" new Person(new IdentificationInformation(new Name(\"Alex Yeoh\"), new Nric(\"G7654321L\"))),","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"SeaHogs"},"content":" new Person(new IdentificationInformation(new Name(\"Bernice Yu\"), new Nric(\"M7654321J\")))","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":26,"author":{"gitId":"javierng2knus"},"content":" public static ReadOnlyClinic getSampleClinic() {","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"javierng2knus"},"content":" Clinic sampleAb \u003d new Clinic();","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14"},{"lineNumber":35,"author":{"gitId":"SeaHogs"},"content":" * Returns a allergytag set containing the list of strings given.","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14"},{"lineNumber":37,"author":{"gitId":"SeaHogs"},"content":" public static Set\u003cAllergyTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21"},{"lineNumber":39,"author":{"gitId":"SeaHogs"},"content":" .map(AllergyTag::new)","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":43,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"javierng2knus":5,"MaYuehan":5,"-":27,"SeaHogs":6}},{"path":"src/main/java/vitalconnect/storage/AppointmentStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.storage;","lastModifiedDate":"2024-03-23"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import java.io.IOException;","lastModifiedDate":"2024-03-23"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import java.util.List;","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-23"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Appointment;","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"/**","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":" * Represents the storage for appointment data.","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"public interface AppointmentStorage {","lastModifiedDate":"2024-03-23"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":" * Returns the file path of the appointment data file.","lastModifiedDate":"2024-03-23"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" * @return The path to the appointment data file.","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" Path getAppointmentFilePath();","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" * Reads the appointment data from the default file path.","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" * @return An {@code Optional} containing a list of {@code Appointment} if the data can be read successfully.","lastModifiedDate":"2024-03-23"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" * @throws DataLoadingException If there is an error loading data from the file.","lastModifiedDate":"2024-03-23"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" Optional\u003cList\u003cAppointment\u003e\u003e readAppointments() throws DataLoadingException;","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" * Reads the appointment data from a specified file path.","lastModifiedDate":"2024-03-23"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-23"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" * @param filePath The path to the appointment data file.","lastModifiedDate":"2024-03-23"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" * @return An {@code Optional} containing a list of {@code Appointment} if the data can be read successfully.","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" * @throws DataLoadingException If there is an error loading data from the file.","lastModifiedDate":"2024-03-23"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" Optional\u003cList\u003cAppointment\u003e\u003e readAppointments(Path filePath) throws DataLoadingException;","lastModifiedDate":"2024-03-23"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":" * Saves the given appointment data to the default file path.","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-23"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":" * @param appointments The list of appointments to be saved, which cannot be null.","lastModifiedDate":"2024-03-23"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":" * @throws IOException If there is an error writing to the file.","lastModifiedDate":"2024-03-23"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":" void saveAppointments(List\u003cAppointment\u003e appointments) throws IOException;","lastModifiedDate":"2024-03-23"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":" * Saves the given appointment data to a specified file path.","lastModifiedDate":"2024-03-23"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-23"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":" * @param appointments The list of appointments to be saved, which cannot be null.","lastModifiedDate":"2024-03-23"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":" * @param filePath The path to save the appointment data file.","lastModifiedDate":"2024-03-23"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":" * @throws IOException If there is an error writing to the file.","lastModifiedDate":"2024-03-23"},{"lineNumber":54,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":" void saveAppointments(List\u003cAppointment\u003e appointments, Path filePath) throws IOException;","lastModifiedDate":"2024-03-23"},{"lineNumber":56,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":57,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":58,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":59,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"}],"authorContributionMap":{"MaYuehan":59}},{"path":"src/main/java/vitalconnect/storage/ClinicStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.storage;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"javierng2knus"},"content":"import java.io.IOException;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"javierng2knus"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"javierng2knus"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.ReadOnlyClinic;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"javierng2knus"},"content":"/**","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":" * Represents a storage for {@link vitalconnect.model.Clinic}.","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"javierng2knus"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"javierng2knus"},"content":"public interface ClinicStorage {","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"javierng2knus"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"javierng2knus"},"content":" * Returns the file path of the data file.","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"javierng2knus"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"javierng2knus"},"content":" Path getClinicFilePath();","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"javierng2knus"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"javierng2knus"},"content":" * Returns Clinic data as a {@link ReadOnlyClinic}.","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"javierng2knus"},"content":" * Returns {@code Optional.empty()} if storage file is not found.","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"javierng2knus"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"javierng2knus"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"javierng2knus"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"javierng2knus"},"content":" Optional\u003cReadOnlyClinic\u003e readClinic() throws DataLoadingException;","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"javierng2knus"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"javierng2knus"},"content":" * @see #getClinicFilePath()","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"javierng2knus"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"javierng2knus"},"content":" Optional\u003cReadOnlyClinic\u003e readClinic(Path filePath) throws DataLoadingException;","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"javierng2knus"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"javierng2knus"},"content":" * Saves the given {@link ReadOnlyClinic} to the storage.","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"javierng2knus"},"content":" * @param clinic cannot be null.","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"javierng2knus"},"content":" * @throws IOException if there was any problem writing to the file.","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"javierng2knus"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"javierng2knus"},"content":" void saveClinic(ReadOnlyClinic clinic) throws IOException;","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"javierng2knus"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"javierng2knus"},"content":" * @see #saveClinic(ReadOnlyClinic)","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"javierng2knus"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"javierng2knus"},"content":" void saveClinic(ReadOnlyClinic clinic, Path filePath) throws IOException;","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"javierng2knus"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"javierng2knus":41,"MaYuehan":4}},{"path":"src/main/java/vitalconnect/storage/JsonAdaptedAppointment.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.storage;","lastModifiedDate":"2024-03-23"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-03-23"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2024-03-23"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Appointment;","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"/**","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":" * A Jackson-friendly version of {@link Appointment}.","lastModifiedDate":"2024-03-23"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"public class JsonAdaptedAppointment {","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" private final String patientName;","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" private final String patientIc;","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":" private final String dateTime;","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":" * Constructs a {@code JsonAdaptedAppointment} with the given appointment details.","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" @JsonCreator","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" public JsonAdaptedAppointment(@JsonProperty(\"patientName\") String patientName,","lastModifiedDate":"2024-03-23"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" @JsonProperty(\"patientIc\") String patientIc,","lastModifiedDate":"2024-03-23"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" @JsonProperty(\"dateTime\") String dateTime) {","lastModifiedDate":"2024-03-23"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" this.patientName \u003d patientName;","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" this.patientIc \u003d patientIc;","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" this.dateTime \u003d dateTime;","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" * Converts a given {@code Appointment} into this class for Jackson use.","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" public JsonAdaptedAppointment(Appointment source) {","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" patientName \u003d source.getPatientName();","lastModifiedDate":"2024-03-23"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":" patientIc \u003d source.getPatientIc();","lastModifiedDate":"2024-03-23"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" dateTime \u003d source.getDateTime().format(DateTimeFormatter.ofPattern(\"dd/MM/yyyy HHmm\"));","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":" * Converts this Jackson-friendly adapted appointment object into the model\u0027s {@code Appointment} object.","lastModifiedDate":"2024-03-23"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-23"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted appointment.","lastModifiedDate":"2024-03-23"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":" public Appointment toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-23"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":" if (patientName \u003d\u003d null || patientIc \u003d\u003d null || dateTime \u003d\u003d null) {","lastModifiedDate":"2024-03-23"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":" throw new IllegalValueException(\"Missing fields in Appointment data.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":" LocalDateTime localDateTime;","lastModifiedDate":"2024-03-23"},{"lineNumber":54,"author":{"gitId":"MaYuehan"},"content":" try {","lastModifiedDate":"2024-03-23"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":" localDateTime \u003d LocalDateTime.parse(dateTime, DateTimeFormatter.ofPattern(\"dd/MM/yyyy HHmm\"));","lastModifiedDate":"2024-03-23"},{"lineNumber":56,"author":{"gitId":"MaYuehan"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-03-23"},{"lineNumber":57,"author":{"gitId":"MaYuehan"},"content":" throw new IllegalValueException(\"Incorrect format for appointment dateTime. Expected dd/MM/yyyy HHmm.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":58,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":59,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":60,"author":{"gitId":"MaYuehan"},"content":" return new Appointment(patientName, patientIc, localDateTime);","lastModifiedDate":"2024-03-23"},{"lineNumber":61,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":62,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":63,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"}],"authorContributionMap":{"MaYuehan":63}},{"path":"src/main/java/vitalconnect/storage/JsonAdaptedPerson.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.storage;","lastModifiedDate":"2024-03-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":"MaYuehan"},"content":"import vitalconnect.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.allergytag.AllergyTag;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.Address;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.ContactInformation;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.Email;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.Phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"javierng2knus"},"content":"import vitalconnect.model.person.identificationinformation.IdentificationInformation;","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.identificationinformation.Name;","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"javierng2knus"},"content":"import vitalconnect.model.person.identificationinformation.Nric;","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.person.medicalinformation.Height;","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.person.medicalinformation.MedicalInformation;","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.person.medicalinformation.Weight;","lastModifiedDate":"2024-03-18"},{"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":"javierng2knus"},"content":" private final String nric;","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"Ella-e"},"content":" private String email;","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"Ella-e"},"content":" private String phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"Ella-e"},"content":" private String address;","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"SeaHogs"},"content":" private String height;","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"SeaHogs"},"content":" private String weight;","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"SeaHogs"},"content":" private final List\u003cJsonAdaptedTag\u003e allergyTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"javierng2knus"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"nric\") String nric,","lastModifiedDate":"2024-03-15"},{"lineNumber":48,"author":{"gitId":"Ella-e"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"SeaHogs"},"content":" @JsonProperty(\"address\") String address, @JsonProperty(\"height\") String height,","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"SeaHogs"},"content":" @JsonProperty(\"weight\") String weight,","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"SeaHogs"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e allergyTags) {","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"javierng2knus"},"content":" this.nric \u003d nric;","lastModifiedDate":"2024-03-15"},{"lineNumber":54,"author":{"gitId":"Ella-e"},"content":" this.email \u003d email;","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"Ella-e"},"content":" this.phone \u003d phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"Ella-e"},"content":" this.address \u003d address;","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"SeaHogs"},"content":" this.height \u003d height;","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"SeaHogs"},"content":" this.weight \u003d weight;","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"SeaHogs"},"content":" if (allergyTags !\u003d null) {","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"SeaHogs"},"content":" this.allergyTags.addAll(allergyTags);","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"javierng2knus"},"content":" name \u003d source.getIdentificationInformation().getName().fullName;","lastModifiedDate":"2024-03-15"},{"lineNumber":69,"author":{"gitId":"javierng2knus"},"content":" nric \u003d source.getIdentificationInformation().getNric().nric;","lastModifiedDate":"2024-03-15"},{"lineNumber":70,"author":{"gitId":"Ella-e"},"content":" email \u003d source.getContactInformation().getEmail().value;","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"Ella-e"},"content":" phone \u003d source.getContactInformation().getPhone().value;","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"Ella-e"},"content":" address \u003d source.getContactInformation().getAddress().value;","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"SeaHogs"},"content":" height \u003d source.getMedicalInformation().getHeight().value;","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"SeaHogs"},"content":" weight \u003d source.getMedicalInformation().getWeight().value;","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"SeaHogs"},"content":" allergyTags.addAll(source.getMedicalInformation().getAllergyTag().stream()","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":" }","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":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"SeaHogs"},"content":" final List\u003cAllergyTag\u003e personAllergyTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"SeaHogs"},"content":" for (JsonAdaptedTag tag : allergyTags) {","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"SeaHogs"},"content":" personAllergyTags.add(tag.toModelType());","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"javierng2knus"},"content":" if (nric \u003d\u003d null) {","lastModifiedDate":"2024-03-15"},{"lineNumber":100,"author":{"gitId":"javierng2knus"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Nric.class.getSimpleName()));","lastModifiedDate":"2024-03-15"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"javierng2knus"},"content":" if (!Nric.isValidNric(nric)) {","lastModifiedDate":"2024-03-15"},{"lineNumber":103,"author":{"gitId":"javierng2knus"},"content":" throw new IllegalValueException(Nric.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"javierng2knus"},"content":" final Nric modelNric \u003d new Nric(nric);","lastModifiedDate":"2024-03-15"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"Ella-e"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"Ella-e"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Nric.class.getSimpleName()));","lastModifiedDate":"2024-03-17"},{"lineNumber":109,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"Ella-e"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"Ella-e"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"Ella-e"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"Ella-e"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"Ella-e"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Nric.class.getSimpleName()));","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"Ella-e"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"Ella-e"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"Ella-e"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"Ella-e"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"Ella-e"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Nric.class.getSimpleName()));","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"Ella-e"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"Ella-e"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":129,"author":{"gitId":"Ella-e"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2024-03-17"},{"lineNumber":130,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"Ella-e"},"content":" final ContactInformation contactInformation \u003d new ContactInformation(modelEmail, modelPhone, modelAddress);","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"SeaHogs"},"content":" if (height \u003d\u003d null) {","lastModifiedDate":"2024-03-18"},{"lineNumber":134,"author":{"gitId":"SeaHogs"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Height.class.getSimpleName()));","lastModifiedDate":"2024-03-18"},{"lineNumber":135,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":136,"author":{"gitId":"SeaHogs"},"content":" if (!Height.isValidHeight(height)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":137,"author":{"gitId":"SeaHogs"},"content":" throw new IllegalValueException(Height.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":139,"author":{"gitId":"SeaHogs"},"content":" final Height modelHeight \u003d new Height(height);","lastModifiedDate":"2024-03-18"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":141,"author":{"gitId":"SeaHogs"},"content":" if (weight \u003d\u003d null) {","lastModifiedDate":"2024-03-18"},{"lineNumber":142,"author":{"gitId":"SeaHogs"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Weight.class.getSimpleName()));","lastModifiedDate":"2024-03-18"},{"lineNumber":143,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":144,"author":{"gitId":"SeaHogs"},"content":" if (!Weight.isValidWeight(weight)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":145,"author":{"gitId":"SeaHogs"},"content":" throw new IllegalValueException(Weight.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":146,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":147,"author":{"gitId":"SeaHogs"},"content":" final Weight modelWeight \u003d new Weight(weight);","lastModifiedDate":"2024-03-18"},{"lineNumber":148,"author":{"gitId":"SeaHogs"},"content":" final Set\u003cAllergyTag\u003e modelAllergyTags \u003d new HashSet\u003c\u003e(personAllergyTags);","lastModifiedDate":"2024-03-18"},{"lineNumber":149,"author":{"gitId":"SeaHogs"},"content":" final MedicalInformation medicalInformation \u003d new MedicalInformation(modelHeight,","lastModifiedDate":"2024-03-18"},{"lineNumber":150,"author":{"gitId":"SeaHogs"},"content":" modelWeight, modelAllergyTags);","lastModifiedDate":"2024-03-18"},{"lineNumber":151,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":152,"author":{"gitId":"SeaHogs"},"content":" return new Person(new IdentificationInformation(modelName, modelNric), contactInformation, medicalInformation);","lastModifiedDate":"2024-03-18"},{"lineNumber":153,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"javierng2knus":12,"MaYuehan":4,"Ella-e":41,"-":58,"SeaHogs":39}},{"path":"src/main/java/vitalconnect/storage/JsonAdaptedTag.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.storage;","lastModifiedDate":"2024-03-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":"MaYuehan"},"content":"import vitalconnect.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.allergytag.AllergyTag;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"SeaHogs"},"content":" * Jackson-friendly version of {@link AllergyTag}.","lastModifiedDate":"2024-03-18"},{"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":"SeaHogs"},"content":" * Converts a given {@code AllergyTag} into this class for Jackson use.","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"SeaHogs"},"content":" public JsonAdaptedTag(AllergyTag source) {","lastModifiedDate":"2024-03-18"},{"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":"SeaHogs"},"content":" * Converts this Jackson-friendly adapted allergytag object into the model\u0027s {@code AllergyTag} object.","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"SeaHogs"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted allergytag.","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"SeaHogs"},"content":" public AllergyTag toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"SeaHogs"},"content":" if (!AllergyTag.isValidTagName(tagName)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"SeaHogs"},"content":" throw new IllegalValueException(AllergyTag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"SeaHogs"},"content":" return new AllergyTag(tagName);","lastModifiedDate":"2024-03-18"},{"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":{"MaYuehan":2,"-":36,"SeaHogs":10}},{"path":"src/main/java/vitalconnect/storage/JsonAppointmentStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.storage;","lastModifiedDate":"2024-03-23"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-23"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import java.io.IOException;","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import java.util.List;","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-23"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.util.JsonUtil;","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Appointment;","lastModifiedDate":"2024-03-23"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":"/**","lastModifiedDate":"2024-03-23"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" * A class to access Appointment data stored as a JSON file on the hard disk.","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":"public class JsonAppointmentStorage implements AppointmentStorage {","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" private final Path filePath;","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" * Constructs a {@code JsonAppointmentStorage} with the given file path.","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" * @param filePath Path to the file where appointment data is stored.","lastModifiedDate":"2024-03-23"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" public JsonAppointmentStorage(Path filePath) {","lastModifiedDate":"2024-03-23"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" * Returns the file path where the appointment data is stored.","lastModifiedDate":"2024-03-23"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-23"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" * @return The file path of the appointment data.","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" public Path getAppointmentFilePath() {","lastModifiedDate":"2024-03-23"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":" return filePath;","lastModifiedDate":"2024-03-23"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":" * Reads the appointment data from the default storage file.","lastModifiedDate":"2024-03-23"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-23"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":" * @return An {@code Optional} contain a list of appointments if file exists, or {@code Optional.empty()} otherwise.","lastModifiedDate":"2024-03-23"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":" * @throws DataLoadingException If there is an error reading from the file.","lastModifiedDate":"2024-03-23"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":" public Optional\u003cList\u003cAppointment\u003e\u003e readAppointments() throws DataLoadingException {","lastModifiedDate":"2024-03-23"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":" return readAppointments(filePath);","lastModifiedDate":"2024-03-23"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":54,"author":{"gitId":"MaYuehan"},"content":" * Reads the appointment data from a specified file path.","lastModifiedDate":"2024-03-23"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-23"},{"lineNumber":56,"author":{"gitId":"MaYuehan"},"content":" * @param filePath Path to the file from which appointment data should be read.","lastModifiedDate":"2024-03-23"},{"lineNumber":57,"author":{"gitId":"MaYuehan"},"content":" * @return An {@code Optional} contain a list of appointments if file exists or {@code Optional.empty()} otherwise.","lastModifiedDate":"2024-03-23"},{"lineNumber":58,"author":{"gitId":"MaYuehan"},"content":" * @throws DataLoadingException If there is an error reading from the file.","lastModifiedDate":"2024-03-23"},{"lineNumber":59,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":60,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":61,"author":{"gitId":"MaYuehan"},"content":" public Optional\u003cList\u003cAppointment\u003e\u003e readAppointments(Path filePath) throws DataLoadingException {","lastModifiedDate":"2024-03-23"},{"lineNumber":62,"author":{"gitId":"MaYuehan"},"content":" requireNonNull(filePath);","lastModifiedDate":"2024-03-23"},{"lineNumber":63,"author":{"gitId":"MaYuehan"},"content":" Optional\u003cJsonSerializableAppointment\u003e jsonAppointment \u003d JsonUtil.readJsonFile(","lastModifiedDate":"2024-03-23"},{"lineNumber":64,"author":{"gitId":"MaYuehan"},"content":" filePath, JsonSerializableAppointment.class);","lastModifiedDate":"2024-03-23"},{"lineNumber":65,"author":{"gitId":"MaYuehan"},"content":" if (!jsonAppointment.isPresent()) {","lastModifiedDate":"2024-03-23"},{"lineNumber":66,"author":{"gitId":"MaYuehan"},"content":" return Optional.empty();","lastModifiedDate":"2024-03-23"},{"lineNumber":67,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":68,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":69,"author":{"gitId":"MaYuehan"},"content":" try {","lastModifiedDate":"2024-03-23"},{"lineNumber":70,"author":{"gitId":"MaYuehan"},"content":" return Optional.of(jsonAppointment.get().toModelType());","lastModifiedDate":"2024-03-23"},{"lineNumber":71,"author":{"gitId":"MaYuehan"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2024-03-23"},{"lineNumber":72,"author":{"gitId":"MaYuehan"},"content":" throw new DataLoadingException(ive);","lastModifiedDate":"2024-03-23"},{"lineNumber":73,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":74,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":75,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":76,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":77,"author":{"gitId":"MaYuehan"},"content":" * Saves the provided list of appointments to the default storage file.","lastModifiedDate":"2024-03-23"},{"lineNumber":78,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-23"},{"lineNumber":79,"author":{"gitId":"MaYuehan"},"content":" * @param appointments The list of appointments to save.","lastModifiedDate":"2024-03-23"},{"lineNumber":80,"author":{"gitId":"MaYuehan"},"content":" * @throws IOException If there is an error writing to the file.","lastModifiedDate":"2024-03-23"},{"lineNumber":81,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":82,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":83,"author":{"gitId":"MaYuehan"},"content":" public void saveAppointments(List\u003cAppointment\u003e appointments) throws IOException {","lastModifiedDate":"2024-03-23"},{"lineNumber":84,"author":{"gitId":"MaYuehan"},"content":" saveAppointments(appointments, filePath);","lastModifiedDate":"2024-03-23"},{"lineNumber":85,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":86,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":87,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":88,"author":{"gitId":"MaYuehan"},"content":" * Saves the provided list of appointments to a specified file path.","lastModifiedDate":"2024-03-23"},{"lineNumber":89,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-23"},{"lineNumber":90,"author":{"gitId":"MaYuehan"},"content":" * @param appointments The list of appointments to save.","lastModifiedDate":"2024-03-23"},{"lineNumber":91,"author":{"gitId":"MaYuehan"},"content":" * @param filePath Path to the file where appointment data should be saved.","lastModifiedDate":"2024-03-23"},{"lineNumber":92,"author":{"gitId":"MaYuehan"},"content":" * @throws IOException If there is an error writing to the file.","lastModifiedDate":"2024-03-23"},{"lineNumber":93,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":94,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":95,"author":{"gitId":"MaYuehan"},"content":" public void saveAppointments(List\u003cAppointment\u003e appointments, Path filePath) throws IOException {","lastModifiedDate":"2024-03-23"},{"lineNumber":96,"author":{"gitId":"MaYuehan"},"content":" requireNonNull(appointments);","lastModifiedDate":"2024-03-23"},{"lineNumber":97,"author":{"gitId":"MaYuehan"},"content":" requireNonNull(filePath);","lastModifiedDate":"2024-03-23"},{"lineNumber":98,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":99,"author":{"gitId":"MaYuehan"},"content":" List\u003cJsonAdaptedAppointment\u003e jsonAdaptedAppointments \u003d appointments.stream()","lastModifiedDate":"2024-03-23"},{"lineNumber":100,"author":{"gitId":"MaYuehan"},"content":" .map(JsonAdaptedAppointment::new)","lastModifiedDate":"2024-03-23"},{"lineNumber":101,"author":{"gitId":"MaYuehan"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2024-03-23"},{"lineNumber":102,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":103,"author":{"gitId":"MaYuehan"},"content":" JsonUtil.saveJsonFile(new JsonSerializableAppointment(jsonAdaptedAppointments), filePath);","lastModifiedDate":"2024-03-23"},{"lineNumber":104,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":105,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-03-23"}],"authorContributionMap":{"MaYuehan":105}},{"path":"src/main/java/vitalconnect/storage/JsonClinicStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.storage;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.io.IOException;","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.util.Optional;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.core.LogsCenter;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.util.FileUtil;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.util.JsonUtil;","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.ReadOnlyClinic;","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"javierng2knus"},"content":" * A class to access Clinic data stored as a json file on the hard disk.","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"javierng2knus"},"content":"public class JsonClinicStorage implements ClinicStorage {","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"javierng2knus"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(JsonClinicStorage.class);","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private Path filePath;","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"javierng2knus"},"content":" public JsonClinicStorage(Path filePath) {","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"javierng2knus"},"content":" public Path getClinicFilePath() {","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"-"},"content":" return filePath;","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":" @Override","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"javierng2knus"},"content":" public Optional\u003cReadOnlyClinic\u003e readClinic() throws DataLoadingException {","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"javierng2knus"},"content":" return readClinic(filePath);","lastModifiedDate":"2024-03-11"},{"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":"javierng2knus"},"content":" * Similar to {@link #readClinic()}.","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2023-06-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"javierng2knus"},"content":" public Optional\u003cReadOnlyClinic\u003e readClinic(Path filePath) throws DataLoadingException {","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"-"},"content":" requireNonNull(filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"javierng2knus"},"content":" Optional\u003cJsonSerializableClinic\u003e jsonClinic \u003d JsonUtil.readJsonFile(","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"javierng2knus"},"content":" filePath, JsonSerializableClinic.class);","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"javierng2knus"},"content":" if (!jsonClinic.isPresent()) {","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"javierng2knus"},"content":" return Optional.of(jsonClinic.get().toModelType());","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"-"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" logger.info(\"Illegal values found in \" + filePath + \": \" + ive.getMessage());","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" throw new DataLoadingException(ive);","lastModifiedDate":"2023-06-14"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"javierng2knus"},"content":" public void saveClinic(ReadOnlyClinic clinic) throws IOException {","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"javierng2knus"},"content":" saveClinic(clinic, filePath);","lastModifiedDate":"2024-03-11"},{"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":"javierng2knus"},"content":" * Similar to {@link #saveClinic(ReadOnlyClinic)}.","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"javierng2knus"},"content":" public void saveClinic(ReadOnlyClinic clinic, Path filePath) throws IOException {","lastModifiedDate":"2024-03-11"},{"lineNumber":73,"author":{"gitId":"javierng2knus"},"content":" requireNonNull(clinic);","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"-"},"content":" requireNonNull(filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" FileUtil.createIfMissing(filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"javierng2knus"},"content":" JsonUtil.saveJsonFile(new JsonSerializableClinic(clinic), filePath);","lastModifiedDate":"2024-03-11"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"javierng2knus":19,"MaYuehan":7,"-":54}},{"path":"src/main/java/vitalconnect/storage/JsonSerializableAddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.storage;","lastModifiedDate":"2024-03-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":"MaYuehan"},"content":"import vitalconnect.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Clinic;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.ReadOnlyClinic;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"javierng2knus"},"content":" * An Immutable Clinic that is serializable to JSON format.","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"javierng2knus"},"content":"@JsonRootName(value \u003d \"clinic\")","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"javierng2knus"},"content":"class JsonSerializableClinic {","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"Persons list contains duplicate person(s).\";","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedPerson\u003e persons \u003d new ArrayList\u003c\u003e();","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":"javierng2knus"},"content":" * Constructs a {@code JsonSerializableClinic} with the given persons.","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"javierng2knus"},"content":" public JsonSerializableClinic(@JsonProperty(\"persons\") List\u003cJsonAdaptedPerson\u003e persons) {","lastModifiedDate":"2024-03-11"},{"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":"javierng2knus"},"content":" * Converts a given {@code ReadOnlyClinic} into this class for Jackson use.","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"javierng2knus"},"content":" * @param source future changes to this will not affect the created {@code JsonSerializableClinic}.","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"javierng2knus"},"content":" public JsonSerializableClinic(ReadOnlyClinic source) {","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"-"},"content":" persons.addAll(source.getPersonList().stream().map(JsonAdaptedPerson::new).collect(Collectors.toList()));","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":"javierng2knus"},"content":" * Converts this clinic into the model\u0027s {@code Clinic} object.","lastModifiedDate":"2024-03-11"},{"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":"javierng2knus"},"content":" public Clinic toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"javierng2knus"},"content":" Clinic clinic \u003d new Clinic();","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"-"},"content":" for (JsonAdaptedPerson jsonAdaptedPerson : persons) {","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" Person person \u003d jsonAdaptedPerson.toModelType();","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"javierng2knus"},"content":" if (clinic.hasPerson(person)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"-"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"javierng2knus"},"content":" clinic.addPerson(person);","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"javierng2knus"},"content":" return clinic;","lastModifiedDate":"2024-03-11"},{"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":{"javierng2knus":14,"MaYuehan":5,"-":41}},{"path":"src/main/java/vitalconnect/storage/JsonSerializableAppointment.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.storage;","lastModifiedDate":"2024-03-23"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-23"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import java.util.List;","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Appointment;","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"/**","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":" * Represents a list of appointments that can be serialized into JSON format. This class provides a convenient way","lastModifiedDate":"2024-03-23"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" * to convert between a list of {@code Appointment} objects and their JSON representation, which can be used for","lastModifiedDate":"2024-03-23"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":" * persistent storage.","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":"class JsonSerializableAppointment {","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" private List\u003cJsonAdaptedAppointment\u003e appointments;","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" * Constructs a {@code JsonSerializableAppointment} with the given list of {@code JsonAdaptedAppointment}.","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" * @param appointments A list of {@code JsonAdaptedAppointment} which is a JSON-friendly representation of","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" * appointments.","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" @JsonCreator","lastModifiedDate":"2024-03-23"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" public JsonSerializableAppointment(@JsonProperty(\"appointments\") List\u003cJsonAdaptedAppointment\u003e appointments) {","lastModifiedDate":"2024-03-23"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" this.appointments \u003d new ArrayList\u003c\u003e(appointments);","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" * Converts this JSON-friendly adapted appointment list into the model\u0027s {@code Appointment} list.","lastModifiedDate":"2024-03-23"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-23"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" * @return A list containing the {@code Appointment} objects corresponding to this JSON-friendly list.","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" * @throws IllegalValueException If any data constraints are violated in the adapted appointments.","lastModifiedDate":"2024-03-23"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" public List\u003cAppointment\u003e toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-23"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":" List\u003cAppointment\u003e appointmentList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-23"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" for (JsonAdaptedAppointment jsonAdaptedAppointment : appointments) {","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":" Appointment appointment \u003d jsonAdaptedAppointment.toModelType();","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":" appointmentList.add(appointment);","lastModifiedDate":"2024-03-23"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":" return appointmentList;","lastModifiedDate":"2024-03-23"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"}],"authorContributionMap":{"MaYuehan":48}},{"path":"src/main/java/vitalconnect/storage/JsonUserPrefsStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.storage;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.util.JsonUtil;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.UserPrefs;","lastModifiedDate":"2024-03-13"},{"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":{"MaYuehan":5,"-":42}},{"path":"src/main/java/vitalconnect/storage/Storage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.storage;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import java.util.List;","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Appointment;","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.ReadOnlyClinic;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.UserPrefs;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * API of the Storage component","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":"public interface Storage extends ClinicStorage, UserPrefsStorage, AppointmentStorage {","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e readUserPrefs() throws DataLoadingException;","lastModifiedDate":"2023-06-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" void saveUserPrefs(ReadOnlyUserPrefs userPrefs) throws IOException;","lastModifiedDate":"2018-11-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":27,"author":{"gitId":"javierng2knus"},"content":" Path getClinicFilePath();","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":30,"author":{"gitId":"javierng2knus"},"content":" Optional\u003cReadOnlyClinic\u003e readClinic() throws DataLoadingException;","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":33,"author":{"gitId":"javierng2knus"},"content":" void saveClinic(ReadOnlyClinic clinic) throws IOException;","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" Path getAppointmentFilePath();","lastModifiedDate":"2024-03-23"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":" Optional\u003cList\u003cAppointment\u003e\u003e readAppointments() throws DataLoadingException;","lastModifiedDate":"2024-03-23"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":" void saveAppointments(List\u003cAppointment\u003e appointments) throws IOException;","lastModifiedDate":"2024-03-23"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"javierng2knus":3,"MaYuehan":18,"-":23}},{"path":"src/main/java/vitalconnect/storage/StorageManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.storage;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import java.util.List;","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.core.LogsCenter;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Appointment;","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.ReadOnlyClinic;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.UserPrefs;","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"javierng2knus"},"content":" * Manages storage of Clinic data in local storage.","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class StorageManager implements Storage {","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(StorageManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":22,"author":{"gitId":"javierng2knus"},"content":" private ClinicStorage clinicStorage;","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private UserPrefsStorage userPrefsStorage;","lastModifiedDate":"2016-10-01"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" private AppointmentStorage appointmentStorage;","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":27,"author":{"gitId":"javierng2knus"},"content":" * Creates a {@code StorageManager} with the given {@code ClinicStorage} and {@code UserPrefStorage}.","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" public StorageManager(ClinicStorage clinicStorage, UserPrefsStorage userPrefsStorage,","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" AppointmentStorage appointmentStorage) {","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"javierng2knus"},"content":" this.clinicStorage \u003d clinicStorage;","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.userPrefsStorage \u003d userPrefsStorage;","lastModifiedDate":"2016-10-01"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" this.appointmentStorage \u003d appointmentStorage;","lastModifiedDate":"2024-03-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":36,"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":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-02-15"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public Path getUserPrefsFilePath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return userPrefsStorage.getUserPrefsFilePath();","lastModifiedDate":"2017-02-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public Optional\u003cUserPrefs\u003e readUserPrefs() throws DataLoadingException {","lastModifiedDate":"2023-06-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" return userPrefsStorage.readUserPrefs();","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":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void saveUserPrefs(ReadOnlyUserPrefs userPrefs) throws IOException {","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" userPrefsStorage.saveUserPrefs(userPrefs);","lastModifiedDate":"2016-10-01"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"javierng2knus"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Clinic 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":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":57,"author":{"gitId":"javierng2knus"},"content":" public Path getClinicFilePath() {","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"javierng2knus"},"content":" return clinicStorage.getClinicFilePath();","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":62,"author":{"gitId":"javierng2knus"},"content":" public Optional\u003cReadOnlyClinic\u003e readClinic() throws DataLoadingException {","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"javierng2knus"},"content":" return readClinic(clinicStorage.getClinicFilePath());","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-10-01"},{"lineNumber":67,"author":{"gitId":"javierng2knus"},"content":" public Optional\u003cReadOnlyClinic\u003e readClinic(Path filePath) throws DataLoadingException {","lastModifiedDate":"2024-03-11"},{"lineNumber":68,"author":{"gitId":"-"},"content":" logger.fine(\"Attempting to read data from file: \" + filePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":69,"author":{"gitId":"javierng2knus"},"content":" return clinicStorage.readClinic(filePath);","lastModifiedDate":"2024-03-11"},{"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":"javierng2knus"},"content":" public void saveClinic(ReadOnlyClinic clinic) throws IOException {","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"javierng2knus"},"content":" saveClinic(clinic, clinicStorage.getClinicFilePath());","lastModifiedDate":"2024-03-11"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-10-01"},{"lineNumber":78,"author":{"gitId":"javierng2knus"},"content":" public void saveClinic(ReadOnlyClinic clinic, Path filePath) throws IOException {","lastModifiedDate":"2024-03-11"},{"lineNumber":79,"author":{"gitId":"-"},"content":" logger.fine(\"Attempting to write to data file: \" + filePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":80,"author":{"gitId":"javierng2knus"},"content":" clinicStorage.saveClinic(clinic, filePath);","lastModifiedDate":"2024-03-11"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":83,"author":{"gitId":"MaYuehan"},"content":" // Appointment methods","lastModifiedDate":"2024-03-23"},{"lineNumber":84,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":85,"author":{"gitId":"MaYuehan"},"content":" public Path getAppointmentFilePath() {","lastModifiedDate":"2024-03-23"},{"lineNumber":86,"author":{"gitId":"MaYuehan"},"content":" return appointmentStorage.getAppointmentFilePath();","lastModifiedDate":"2024-03-23"},{"lineNumber":87,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":88,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":89,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":90,"author":{"gitId":"MaYuehan"},"content":" public Optional\u003cList\u003cAppointment\u003e\u003e readAppointments() throws DataLoadingException {","lastModifiedDate":"2024-03-23"},{"lineNumber":91,"author":{"gitId":"MaYuehan"},"content":" return appointmentStorage.readAppointments();","lastModifiedDate":"2024-03-23"},{"lineNumber":92,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":93,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":94,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":95,"author":{"gitId":"MaYuehan"},"content":" public Optional\u003cList\u003cAppointment\u003e\u003e readAppointments(Path filePath) throws DataLoadingException {","lastModifiedDate":"2024-03-23"},{"lineNumber":96,"author":{"gitId":"MaYuehan"},"content":" logger.fine(\"Attempting to read data from file: \" + filePath);","lastModifiedDate":"2024-03-23"},{"lineNumber":97,"author":{"gitId":"MaYuehan"},"content":" return appointmentStorage.readAppointments(filePath);","lastModifiedDate":"2024-03-23"},{"lineNumber":98,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":99,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":100,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":101,"author":{"gitId":"MaYuehan"},"content":" public void saveAppointments(List\u003cAppointment\u003e appointments) throws IOException {","lastModifiedDate":"2024-03-23"},{"lineNumber":102,"author":{"gitId":"MaYuehan"},"content":" appointmentStorage.saveAppointments(appointments);","lastModifiedDate":"2024-03-23"},{"lineNumber":103,"author":{"gitId":"MaYuehan"},"content":" saveAppointments(appointments, appointmentStorage.getAppointmentFilePath());","lastModifiedDate":"2024-03-23"},{"lineNumber":104,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":105,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":106,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":107,"author":{"gitId":"MaYuehan"},"content":" public void saveAppointments(List\u003cAppointment\u003e appointments, Path filePath) throws IOException {","lastModifiedDate":"2024-03-23"},{"lineNumber":108,"author":{"gitId":"MaYuehan"},"content":" logger.fine(\"Attempting to write to data file: \" + filePath);","lastModifiedDate":"2024-03-23"},{"lineNumber":109,"author":{"gitId":"MaYuehan"},"content":" appointmentStorage.saveAppointments(appointments, filePath);","lastModifiedDate":"2024-03-23"},{"lineNumber":110,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":111,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":112,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":113,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"javierng2knus":15,"MaYuehan":43,"-":56}},{"path":"src/main/java/vitalconnect/storage/UserPrefsStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.storage;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.UserPrefs;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-24"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":" * Represents a storage for {@link vitalconnect.model.UserPrefs}.","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":" * Saves the given {@link vitalconnect.model.ReadOnlyUserPrefs} to the storage.","lastModifiedDate":"2024-03-13"},{"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":{"MaYuehan":6,"-":30}},{"path":"src/main/java/vitalconnect/ui/AppointmentCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.ui;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Appointment;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":" * A UI component that displays information of an {@code Appointment}.","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":" * \u003cp\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":" * This component is used to display the details of an appointment in the UI, specifically","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" * in a list view where each appointment is represented as a card. Each card shows the","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":" * patient\u0027s name and the appointment time, formatted according to the specified pattern.","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":"public class AppointmentCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":" private static final String FXML \u003d \"AppointmentListCard.fxml\";","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" public final Appointment appointment;","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" @FXML","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" private HBox cardPane;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" @FXML","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" private Label name;","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" @FXML","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" private Label ic;","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" @FXML","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" private Label id;","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" @FXML","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" private Label time;","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" * Creates an {@code AppointmentCard} with the given {@code Appointment} and index to display.","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" * @param appointment The appointment object containing the data to be displayed on the card.","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":" * @param displayedIndex The index of the appointment in the list, which is used for displaying","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" * the appointment number on the card.","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":" public AppointmentCard(Appointment appointment, int displayedIndex) {","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":" super(FXML);","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":" this.appointment \u003d appointment;","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":" name.setText(appointment.getPatientName());","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":" ic.setText(appointment.getPatientIc());","lastModifiedDate":"2024-03-23"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"d MMM yyyy HH:mm\");","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":" time.setText(appointment.getDateTime().format(formatter));","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":" public Label getName() {","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":" return this.name;","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":" public Label getIc() {","lastModifiedDate":"2024-03-23"},{"lineNumber":56,"author":{"gitId":"MaYuehan"},"content":" return this.ic;","lastModifiedDate":"2024-03-23"},{"lineNumber":57,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":58,"author":{"gitId":"MaYuehan"},"content":" public Label getId() {","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"MaYuehan"},"content":" return this.id;","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"MaYuehan"},"content":" public Label getTime() {","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"MaYuehan"},"content":" return this.time;","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"MaYuehan":66}},{"path":"src/main/java/vitalconnect/ui/AppointmentListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.ui;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.core.LogsCenter;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Appointment;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":" * A UI component that displays a list of {@code Appointment} objects.","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" * \u003cp\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":" * This component is responsible for rendering the appointments in the UI,","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":" * with each appointment represented as an individual card within a list view.","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" * It uses {@code AppointmentCard} to visually represent each appointment\u0027s data.","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":"public class AppointmentListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" private static final String FXML \u003d \"AppointmentListPanel.fxml\";","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" private final Logger logger \u003d LogsCenter.getLogger(AppointmentListPanel.class);","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" @FXML","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" private ListView\u003cAppointment\u003e appointmentListView;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" * Creates an {@code AppointmentListPanel} with the given list of appointments.","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" * @param appointmentList An ObservableList of appointments to be displayed in the panel.","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" public AppointmentListPanel(ObservableList\u003cAppointment\u003e appointmentList) {","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" super(FXML);","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" appointmentListView.setItems(appointmentList);","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" appointmentListView.setCellFactory(listView -\u003e new AppointmentListViewCell());","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":" * Custom {@code ListCell} that displays the graphics of an {@code Appointment} using an {@code AppointmentCard}.","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":" class AppointmentListViewCell extends ListCell\u003cAppointment\u003e {","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":" protected void updateItem(Appointment appointment, boolean empty) {","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":" super.updateItem(appointment, empty);","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":" if (empty || appointment \u003d\u003d null) {","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":" setGraphic(null);","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":" setText(null);","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":" } else {","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":" setGraphic(new AppointmentCard(appointment, getIndex() + 1).getRoot());","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"MaYuehan":56}},{"path":"src/main/java/vitalconnect/ui/CommandBox.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.ui;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.logic.commands.CommandResult;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * The UI component that is responsible for receiving user command inputs.","lastModifiedDate":"2017-08-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class CommandBox extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String ERROR_STYLE_CLASS \u003d \"error\";","lastModifiedDate":"2017-02-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"CommandBox.fxml\";","lastModifiedDate":"2017-04-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private final CommandExecutor commandExecutor;","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-14"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private TextField commandTextField;","lastModifiedDate":"2016-09-14"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Creates a {@code CommandBox} with the given {@code CommandExecutor}.","lastModifiedDate":"2020-05-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public CommandBox(CommandExecutor commandExecutor) {","lastModifiedDate":"2019-01-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" this.commandExecutor \u003d commandExecutor;","lastModifiedDate":"2018-12-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // calls #setStyleToDefault() whenever there is a change to the text of the command box.","lastModifiedDate":"2017-06-28"},{"lineNumber":31,"author":{"gitId":"-"},"content":" commandTextField.textProperty().addListener((unused1, unused2, unused3) -\u003e setStyleToDefault());","lastModifiedDate":"2017-06-28"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Handles the Enter button pressed event.","lastModifiedDate":"2017-08-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private void handleCommandEntered() {","lastModifiedDate":"2018-04-01"},{"lineNumber":39,"author":{"gitId":"-"},"content":" String commandText \u003d commandTextField.getText();","lastModifiedDate":"2020-12-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":" if (commandText.equals(\"\")) {","lastModifiedDate":"2020-12-04"},{"lineNumber":41,"author":{"gitId":"-"},"content":" return;","lastModifiedDate":"2020-12-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-12-04"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-12-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-02-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" commandExecutor.execute(commandText);","lastModifiedDate":"2020-12-04"},{"lineNumber":46,"author":{"gitId":"-"},"content":" commandTextField.setText(\"\");","lastModifiedDate":"2016-09-14"},{"lineNumber":47,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2017-03-11"},{"lineNumber":48,"author":{"gitId":"-"},"content":" setStyleToIndicateCommandFailure();","lastModifiedDate":"2017-02-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-14"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-28"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Sets the command box style to use the default style.","lastModifiedDate":"2017-06-28"},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28"},{"lineNumber":55,"author":{"gitId":"-"},"content":" private void setStyleToDefault() {","lastModifiedDate":"2017-06-28"},{"lineNumber":56,"author":{"gitId":"-"},"content":" commandTextField.getStyleClass().remove(ERROR_STYLE_CLASS);","lastModifiedDate":"2017-02-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-28"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Sets the command box style to indicate a failed command.","lastModifiedDate":"2017-02-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28"},{"lineNumber":62,"author":{"gitId":"-"},"content":" private void setStyleToIndicateCommandFailure() {","lastModifiedDate":"2017-02-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" ObservableList\u003cString\u003e styleClass \u003d commandTextField.getStyleClass();","lastModifiedDate":"2017-03-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" if (styleClass.contains(ERROR_STYLE_CLASS)) {","lastModifiedDate":"2017-03-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return;","lastModifiedDate":"2017-03-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" styleClass.add(ERROR_STYLE_CLASS);","lastModifiedDate":"2017-03-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Represents a function that can execute commands.","lastModifiedDate":"2018-12-09"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @FunctionalInterface","lastModifiedDate":"2018-12-09"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public interface CommandExecutor {","lastModifiedDate":"2018-12-09"},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":79,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":80,"author":{"gitId":"MaYuehan"},"content":" * @see vitalconnect.logic.Logic#execute(String)","lastModifiedDate":"2024-03-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":82,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2018-12-09"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":85,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"}],"authorContributionMap":{"MaYuehan":5,"-":80}},{"path":"src/main/java/vitalconnect/ui/HelpWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.ui;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.commons.core.LogsCenter;","lastModifiedDate":"2024-03-13"},{"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":"javierng2knus"},"content":" public static final String USERGUIDE_URL \u003d \"https://ay2324s2-cs2103t-w08-2.github.io/tp/UserGuide.html\";","lastModifiedDate":"2024-03-17"},{"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":{"javierng2knus":1,"MaYuehan":2,"-":99}},{"path":"src/main/java/vitalconnect/ui/MainWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.ui;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.commons.core.GuiSettings;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.core.LogsCenter;","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.Logic;","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.CommandResult;","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":" private ResultDisplay resultDisplay;","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private HelpWindow helpWindow;","lastModifiedDate":"2018-03-15"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" private AppointmentListPanel appointmentListPanel;","lastModifiedDate":"2024-03-17"},{"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":"-"},"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":"MaYuehan"},"content":" @FXML","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"MaYuehan"},"content":" private StackPane appointmentListPanelPlaceholder;","lastModifiedDate":"2024-03-17"},{"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":"-"},"content":" personListPanel \u003d new PersonListPanel(logic.getFilteredPersonList());","lastModifiedDate":"2019-01-25"},{"lineNumber":117,"author":{"gitId":"-"},"content":" personListPanelPlaceholder.getChildren().add(personListPanel.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":119,"author":{"gitId":"MaYuehan"},"content":" // Initialize AppointmentListPanel but don\u0027t add it to the placeholder yet","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"MaYuehan"},"content":" appointmentListPanel \u003d new AppointmentListPanel(logic.getFilteredAppointmentList());","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09"},{"lineNumber":123,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":125,"author":{"gitId":"javierng2knus"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getClinicFilePath());","lastModifiedDate":"2024-03-11"},{"lineNumber":126,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25"},{"lineNumber":129,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":132,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"MaYuehan"},"content":" * Switches the displayed list in the main window to show the appointment list.","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"MaYuehan"},"content":" * This method clears any current content in the placeholder and then loads the appointment list view.","lastModifiedDate":"2024-03-17"},{"lineNumber":135,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":136,"author":{"gitId":"MaYuehan"},"content":" public void showAppointmentList() {","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"MaYuehan"},"content":" personListPanelPlaceholder.getChildren().clear();","lastModifiedDate":"2024-03-17"},{"lineNumber":138,"author":{"gitId":"MaYuehan"},"content":" personListPanelPlaceholder.getChildren().add(appointmentListPanel.getRoot());","lastModifiedDate":"2024-03-17"},{"lineNumber":139,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":140,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":141,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"MaYuehan"},"content":" * Switches the displayed list in the main window to show the person list.","lastModifiedDate":"2024-03-17"},{"lineNumber":143,"author":{"gitId":"MaYuehan"},"content":" * This method clears any current content in the placeholder and then loads the person list view.","lastModifiedDate":"2024-03-17"},{"lineNumber":144,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":145,"author":{"gitId":"MaYuehan"},"content":" public void showPersonList() {","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"MaYuehan"},"content":" personListPanelPlaceholder.getChildren().clear();","lastModifiedDate":"2024-03-17"},{"lineNumber":147,"author":{"gitId":"MaYuehan"},"content":" personListPanelPlaceholder.getChildren().add(personListPanel.getRoot());","lastModifiedDate":"2024-03-17"},{"lineNumber":148,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":149,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":150,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":151,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":152,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27"},{"lineNumber":153,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":154,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":155,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27"},{"lineNumber":156,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27"},{"lineNumber":157,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27"},{"lineNumber":158,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27"},{"lineNumber":159,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":163,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":164,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15"},{"lineNumber":165,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":166,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":167,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31"},{"lineNumber":168,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15"},{"lineNumber":169,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":170,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15"},{"lineNumber":171,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":175,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15"},{"lineNumber":176,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":179,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":180,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18"},{"lineNumber":181,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":182,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":183,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18"},{"lineNumber":184,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08"},{"lineNumber":185,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08"},{"lineNumber":186,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08"},{"lineNumber":187,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":188,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":189,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":191,"author":{"gitId":"-"},"content":" public PersonListPanel getPersonListPanel() {","lastModifiedDate":"2016-08-25"},{"lineNumber":192,"author":{"gitId":"-"},"content":" return personListPanel;","lastModifiedDate":"2018-08-14"},{"lineNumber":193,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":195,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":196,"author":{"gitId":"MaYuehan"},"content":" * Executes the given command string and updates the UI based on the result of the command.","lastModifiedDate":"2024-03-17"},{"lineNumber":197,"author":{"gitId":"MaYuehan"},"content":" * \u003cp\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":198,"author":{"gitId":"MaYuehan"},"content":" * This method uses the {@code Logic} component to execute the command and obtain a {@code CommandResult},","lastModifiedDate":"2024-03-17"},{"lineNumber":199,"author":{"gitId":"MaYuehan"},"content":" * then updates the {@code ResultDisplay} with feedback from the command. Based on the type of the","lastModifiedDate":"2024-03-17"},{"lineNumber":200,"author":{"gitId":"MaYuehan"},"content":" * {@code CommandResult}, it switches the view between the person list and the appointment list. It also","lastModifiedDate":"2024-03-17"},{"lineNumber":201,"author":{"gitId":"MaYuehan"},"content":" * handles the display of help and exit commands.","lastModifiedDate":"2024-03-17"},{"lineNumber":202,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":203,"author":{"gitId":"MaYuehan"},"content":" * @param commandText The command string to be executed.","lastModifiedDate":"2024-03-17"},{"lineNumber":204,"author":{"gitId":"MaYuehan"},"content":" * @return The result of the command execution.","lastModifiedDate":"2024-03-17"},{"lineNumber":205,"author":{"gitId":"MaYuehan"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2024-03-17"},{"lineNumber":206,"author":{"gitId":"MaYuehan"},"content":" * @throws ParseException If an error occurs during parsing of the command string.","lastModifiedDate":"2024-03-17"},{"lineNumber":207,"author":{"gitId":"MaYuehan"},"content":" * @see vitalconnect.logic.Logic#execute(String)","lastModifiedDate":"2024-03-13"},{"lineNumber":208,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":209,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09"},{"lineNumber":210,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":211,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09"},{"lineNumber":212,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":213,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":215,"author":{"gitId":"MaYuehan"},"content":" switch (commandResult.getType()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":216,"author":{"gitId":"MaYuehan"},"content":" case SHOW_PERSONS:","lastModifiedDate":"2024-03-17"},{"lineNumber":217,"author":{"gitId":"MaYuehan"},"content":" showPersonList();","lastModifiedDate":"2024-03-17"},{"lineNumber":218,"author":{"gitId":"MaYuehan"},"content":" break;","lastModifiedDate":"2024-03-17"},{"lineNumber":219,"author":{"gitId":"MaYuehan"},"content":" case SHOW_APPOINTMENTS:","lastModifiedDate":"2024-03-17"},{"lineNumber":220,"author":{"gitId":"MaYuehan"},"content":" showAppointmentList();","lastModifiedDate":"2024-03-17"},{"lineNumber":221,"author":{"gitId":"MaYuehan"},"content":" break;","lastModifiedDate":"2024-03-17"},{"lineNumber":222,"author":{"gitId":"MaYuehan"},"content":" default:","lastModifiedDate":"2024-03-17"},{"lineNumber":223,"author":{"gitId":"MaYuehan"},"content":" showPersonList();","lastModifiedDate":"2024-03-17"},{"lineNumber":224,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":225,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":226,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":227,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09"},{"lineNumber":228,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":230,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":231,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09"},{"lineNumber":232,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":234,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":235,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09"},{"lineNumber":236,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13"},{"lineNumber":237,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09"},{"lineNumber":238,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09"},{"lineNumber":239,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":240,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":241,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":242,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":243,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":244,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"javierng2knus":1,"MaYuehan":57,"-":186}},{"path":"src/main/java/vitalconnect/ui/PersonCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.ui;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"SeaHogs"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-19"},{"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":"MaYuehan"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.ContactInformation;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.person.medicalinformation.MedicalInformation;","lastModifiedDate":"2024-03-19"},{"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":"javierng2knus"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on Clinic level 4\u003c/a\u003e","lastModifiedDate":"2024-03-11"},{"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":"javierng2knus"},"content":" private Label nric;","lastModifiedDate":"2024-03-15"},{"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":"Ella-e"},"content":" @FXML","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"Ella-e"},"content":" private Label contactInformation;","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"SeaHogs"},"content":" @FXML","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"SeaHogs"},"content":" private Label medicalInformation;","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"SeaHogs"},"content":" @FXML","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"SeaHogs"},"content":" private Label allergy;","lastModifiedDate":"2024-03-19"},{"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":"Ella-e"},"content":" ContactInformation ci \u003d person.getContactInformation();","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"SeaHogs"},"content":" MedicalInformation mi \u003d person.getMedicalInformation();","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"Ella-e"},"content":" String contactInformationText \u003d \"\";","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"Ella-e"},"content":" if (!ci.isEmptyContact()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"Ella-e"},"content":" contactInformationText \u003d ci.toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"SeaHogs"},"content":" String medicalInformationText \u003d \"\";","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"Ella-e"},"content":" if (!mi.isEmpty()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"Ella-e"},"content":" medicalInformationText \u003d mi.toString();","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21"},{"lineNumber":66,"author":{"gitId":"javierng2knus"},"content":" name.setText(person.getIdentificationInformation().getName().fullName);","lastModifiedDate":"2024-03-15"},{"lineNumber":67,"author":{"gitId":"javierng2knus"},"content":" nric.setText(person.getIdentificationInformation().getNric().nric);","lastModifiedDate":"2024-03-15"},{"lineNumber":68,"author":{"gitId":"Ella-e"},"content":" contactInformation.setText(contactInformationText);","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"SeaHogs"},"content":" medicalInformation.setText(medicalInformationText);","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"SeaHogs"},"content":" // Set allergy label visibility based on medical information and allergy tags","lastModifiedDate":"2024-03-23"},{"lineNumber":72,"author":{"gitId":"SeaHogs"},"content":" if (!mi.isEmpty() \u0026\u0026 !mi.getAllergyTag().isEmpty()) {","lastModifiedDate":"2024-03-23"},{"lineNumber":73,"author":{"gitId":"SeaHogs"},"content":" allergy.setVisible(true);","lastModifiedDate":"2024-03-23"},{"lineNumber":74,"author":{"gitId":"SeaHogs"},"content":" allergy.setText(\"Allergic to: \");","lastModifiedDate":"2024-03-23"},{"lineNumber":75,"author":{"gitId":"SeaHogs"},"content":" mi.getAllergyTag().stream()","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"SeaHogs"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"SeaHogs"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"SeaHogs"},"content":" } else {","lastModifiedDate":"2024-03-23"},{"lineNumber":79,"author":{"gitId":"SeaHogs"},"content":" allergy.setVisible(false);","lastModifiedDate":"2024-03-23"},{"lineNumber":80,"author":{"gitId":"SeaHogs"},"content":" allergy.setText(\"\");","lastModifiedDate":"2024-03-23"},{"lineNumber":81,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"},{"lineNumber":84,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":85,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-23"}],"authorContributionMap":{"javierng2knus":4,"MaYuehan":2,"Ella-e":11,"-":42,"SeaHogs":26}},{"path":"src/main/java/vitalconnect/ui/PersonListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.ui;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-08-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2016-09-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2016-08-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Panel containing the list of persons.","lastModifiedDate":"2016-09-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class PersonListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListPanel.fxml\";","lastModifiedDate":"2016-09-14"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private ListView\u003cPerson\u003e personListView;","lastModifiedDate":"2018-02-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Creates a {@code PersonListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2020-05-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public PersonListPanel(ObservableList\u003cPerson\u003e personList) {","lastModifiedDate":"2019-01-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" personListView.setItems(personList);","lastModifiedDate":"2018-02-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" personListView.setCellFactory(listView -\u003e new PersonListViewCell());","lastModifiedDate":"2016-08-18"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-16"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Person} using a {@code PersonCard}.","lastModifiedDate":"2018-02-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" class PersonListViewCell extends ListCell\u003cPerson\u003e {","lastModifiedDate":"2018-02-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" protected void updateItem(Person person, boolean empty) {","lastModifiedDate":"2018-02-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" super.updateItem(person, empty);","lastModifiedDate":"2016-09-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" if (empty || person \u003d\u003d null) {","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" setGraphic(null);","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" setText(null);","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" setGraphic(new PersonCard(person, getIndex() + 1).getRoot());","lastModifiedDate":"2018-02-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"MaYuehan":2,"-":43}},{"path":"src/main/java/vitalconnect/ui/ResultDisplay.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.ui;","lastModifiedDate":"2024-03-13"},{"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":{"MaYuehan":1,"-":27}},{"path":"src/main/java/vitalconnect/ui/StatusBarFooter.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.ui;","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":" * Creates a {@code StatusBarFooter} with the given {@code Path}.","lastModifiedDate":"2020-05-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public StatusBarFooter(Path saveLocation) {","lastModifiedDate":"2019-01-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2017-04-01"},{"lineNumber":25,"author":{"gitId":"-"},"content":" saveLocationStatus.setText(Paths.get(\".\").resolve(saveLocation).toString());","lastModifiedDate":"2018-12-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-01"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"MaYuehan":1,"-":27}},{"path":"src/main/java/vitalconnect/ui/Ui.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.ui;","lastModifiedDate":"2024-03-13"},{"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":{"MaYuehan":1,"-":12}},{"path":"src/main/java/vitalconnect/ui/UiManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.ui;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.MainApp;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.core.LogsCenter;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.util.StringUtil;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.Logic;","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":" private static final String ICON_APPLICATION \u003d \"/images/address_book_32.png\";","lastModifiedDate":"2016-08-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":{"MaYuehan":5,"-":83}},{"path":"src/main/java/vitalconnect/ui/UiPart.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.ui;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.MainApp;","lastModifiedDate":"2024-03-13"},{"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":{"MaYuehan":2,"-":86}},{"path":"src/main/resources/view/AppointmentListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"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":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"200\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$name\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" \u003cLabel fx:id\u003d\"ic\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$ic\" /\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" \u003cLabel fx:id\u003d\"time\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$time\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"MaYuehan":37}},{"path":"src/main/resources/view/AppointmentListPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":" \u003cListView fx:id\u003d\"appointmentListView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"MaYuehan":9}},{"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":"Ella-e"},"content":" \u003cLabel fx:id\u003d\"contactInformation\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"SeaHogs"},"content":" \u003cLabel fx:id\u003d\"medicalInformation\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03"},{"lineNumber":32,"author":{"gitId":"SeaHogs"},"content":" \u003cLabel fx:id\u003d\"allergy\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"javierng2knus"},"content":" \u003cLabel fx:id\u003d\"nric\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$nric\" /\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"javierng2knus":1,"Ella-e":1,"-":33,"SeaHogs":2}},{"path":"src/test/java/vitalconnect/AppParametersTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect;","lastModifiedDate":"2024-03-13"},{"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":"2019-02-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-02-23"},{"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":"-"},"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":"-"},"content":"}","lastModifiedDate":"2018-04-21"}],"authorContributionMap":{"MaYuehan":1,"-":88}},{"path":"src/test/java/vitalconnect/commons/core/ConfigTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.commons.core;","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","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":"2016-09-30"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class ConfigTest {","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 toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":" Config config \u003d new Config();","lastModifiedDate":"2019-02-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":" String expected \u003d Config.class.getCanonicalName() + \"{logLevel\u003d\" + config.getLogLevel()","lastModifiedDate":"2019-02-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":" + \", userPrefsFilePath\u003d\" + config.getUserPrefsFilePath() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":" assertEquals(expected, config.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-30"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public void equalsMethod() {","lastModifiedDate":"2016-09-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":" Config defaultConfig \u003d new Config();","lastModifiedDate":"2016-09-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" assertNotNull(defaultConfig);","lastModifiedDate":"2016-10-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertTrue(defaultConfig.equals(defaultConfig));","lastModifiedDate":"2016-09-30"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":27,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-30"}],"authorContributionMap":{"MaYuehan":1,"-":26}},{"path":"src/test/java/vitalconnect/commons/core/GuiSettingsTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.commons.core;","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-02-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"public class GuiSettingsTest {","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings();","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":" String expected \u003d GuiSettings.class.getCanonicalName() + \"{windowWidth\u003d\" + guiSettings.getWindowWidth()","lastModifiedDate":"2019-02-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":" + \", windowHeight\u003d\" + guiSettings.getWindowHeight() + \", windowCoordinates\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":" + guiSettings.getWindowCoordinates() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":" assertEquals(expected, guiSettings.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-02-23"}],"authorContributionMap":{"MaYuehan":1,"-":15}},{"path":"src/test/java/vitalconnect/commons/core/VersionTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.commons.core;","lastModifiedDate":"2024-03-13"},{"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.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class VersionTest {","lastModifiedDate":"2016-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void versionParsing_acceptableVersionString_parsedVersionCorrectly() {","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" verifyVersionParsedCorrectly(\"V0.0.0ea\", 0, 0, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" verifyVersionParsedCorrectly(\"V3.10.2\", 3, 10, 2, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" verifyVersionParsedCorrectly(\"V100.100.100ea\", 100, 100, 100, true);","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":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public void versionParsing_wrongVersionString_throwIllegalArgumentException() {","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e Version.fromString(\"This is not a version string\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void versionConstructor_correctParameter_valueAsExpected() {","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" Version version \u003d new Version(19, 10, 20, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertEquals(19, version.getMajor());","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertEquals(10, version.getMinor());","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertEquals(20, version.getPatch());","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertEquals(true, version.isEarlyAccess());","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void versionToString_validVersion_correctStringRepresentation() {","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // boundary at 0","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" Version version \u003d new Version(0, 0, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertEquals(\"V0.0.0ea\", version.toString());","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" // normal values","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" version \u003d new Version(4, 10, 5, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertEquals(\"V4.10.5\", version.toString());","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // big numbers","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" version \u003d new Version(100, 100, 100, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertEquals(\"V100.100.100ea\", version.toString());","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":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void versionComparable_validVersion_compareToIsCorrect() {","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" Version one;","lastModifiedDate":"2017-09-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" Version another;","lastModifiedDate":"2017-09-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // Tests equality","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" one \u003d new Version(0, 0, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" another \u003d new Version(0, 0, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003d\u003d 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" one \u003d new Version(11, 12, 13, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" another \u003d new Version(11, 12, 13, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003d\u003d 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // Tests different patch","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" one \u003d new Version(0, 0, 5, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" another \u003d new Version(0, 0, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003e 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // Tests different minor","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" one \u003d new Version(0, 0, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" another \u003d new Version(0, 5, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003c 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // Tests different major","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" one \u003d new Version(10, 0, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":" another \u003d new Version(0, 0, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003e 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // Tests high major vs low minor","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":" one \u003d new Version(10, 0, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" another \u003d new Version(0, 1, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003e 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" // Tests high patch vs low minor","lastModifiedDate":"2016-08-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" one \u003d new Version(0, 0, 10, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":" another \u003d new Version(0, 1, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003c 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // Tests same major minor different patch","lastModifiedDate":"2016-08-08"},{"lineNumber":88,"author":{"gitId":"-"},"content":" one \u003d new Version(2, 15, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":" another \u003d new Version(2, 15, 5, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003c 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":92,"author":{"gitId":"-"},"content":" // Tests early access vs not early access on same version number","lastModifiedDate":"2016-08-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":" one \u003d new Version(2, 15, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":94,"author":{"gitId":"-"},"content":" another \u003d new Version(2, 15, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003c 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" // Tests early access lower version vs not early access higher version compare by version number first","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" one \u003d new Version(2, 15, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" another \u003d new Version(2, 15, 5, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003c 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" // Tests early access higher version vs not early access lower version compare by version number first","lastModifiedDate":"2016-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" one \u003d new Version(2, 15, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" another \u003d new Version(2, 15, 5, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003c 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void versionComparable_validVersion_hashCodeIsCorrect() {","lastModifiedDate":"2016-08-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" Version version \u003d new Version(100, 100, 100, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertEquals(100100100, version.hashCode());","lastModifiedDate":"2016-08-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":" version \u003d new Version(10, 10, 10, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertEquals(1010010010, version.hashCode());","lastModifiedDate":"2016-08-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public void versionComparable_validVersion_equalIsCorrect() {","lastModifiedDate":"2016-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" Version one;","lastModifiedDate":"2016-10-16"},{"lineNumber":120,"author":{"gitId":"-"},"content":" Version another;","lastModifiedDate":"2016-10-16"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" one \u003d new Version(0, 0, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" another \u003d new Version(0, 0, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertTrue(one.equals(another));","lastModifiedDate":"2016-08-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" one \u003d new Version(100, 191, 275, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" another \u003d new Version(100, 191, 275, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertTrue(one.equals(another));","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":" private void verifyVersionParsedCorrectly(String versionString,","lastModifiedDate":"2016-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":" int major, int minor, int patch, boolean isEarlyAccess) {","lastModifiedDate":"2016-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":" assertEquals(new Version(major, minor, patch, isEarlyAccess), Version.fromString(versionString));","lastModifiedDate":"2016-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"MaYuehan":2,"-":133}},{"path":"src/test/java/vitalconnect/commons/core/index/IndexTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.commons.core.index;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import static vitalconnect.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-13"},{"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":"-"},"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":"-"},"content":" assertTrue(fifthPersonIndex.equals(Index.fromOneBased(5)));","lastModifiedDate":"2017-05-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(fifthPersonIndex.equals(Index.fromZeroBased(4)));","lastModifiedDate":"2017-05-24"},{"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":"-"},"content":" assertTrue(fifthPersonIndex.equals(fifthPersonIndex));","lastModifiedDate":"2017-05-24"},{"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":"-"},"content":" assertFalse(fifthPersonIndex.equals(null));","lastModifiedDate":"2017-05-24"},{"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":"-"},"content":" assertFalse(fifthPersonIndex.equals(5.0f));","lastModifiedDate":"2017-05-24"},{"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":"-"},"content":" assertFalse(fifthPersonIndex.equals(Index.fromOneBased(1)));","lastModifiedDate":"2017-05-24"},{"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":{"MaYuehan":2,"-":65}},{"path":"src/test/java/vitalconnect/commons/util/AppUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.commons.util;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import static vitalconnect.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":" assertNotNull(AppUtil.getImage(\"/images/address_book_32.png\"));","lastModifiedDate":"2016-09-30"},{"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":{"MaYuehan":2,"-":34}},{"path":"src/test/java/vitalconnect/commons/util/CollectionUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.commons.util;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import static vitalconnect.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":" List\u003cObject\u003e containingNull \u003d Arrays.asList((Object) null);","lastModifiedDate":"2017-01-14"},{"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":"-"},"content":" assertNullPointerExceptionThrown(Arrays.asList((Object) null));","lastModifiedDate":"2017-05-19"},{"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":"-"},"content":" assertNullPointerExceptionNotThrown(Arrays.asList(new Object()));","lastModifiedDate":"2017-05-19"},{"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":"-"},"content":" List\u003cObject\u003e containingNull \u003d Arrays.asList((Object) null);","lastModifiedDate":"2017-01-14"},{"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":"2019-03-23"},{"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":"2019-03-23"},{"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":"2017-05-19"},{"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":"2017-05-19"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-19"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-22"}],"authorContributionMap":{"MaYuehan":3,"-":105}},{"path":"src/test/java/vitalconnect/commons/util/ConfigUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.commons.util;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import static vitalconnect.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.commons.core.Config;","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-13"},{"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":"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":" @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-06-14"},{"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":"2019-03-23"},{"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":"2019-03-23"},{"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":{"MaYuehan":4,"-":112}},{"path":"src/test/java/vitalconnect/commons/util/FileUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.commons.util;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import static vitalconnect.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class FileUtilTest {","lastModifiedDate":"2016-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void isValidPath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":" // valid path","lastModifiedDate":"2018-04-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":" assertTrue(FileUtil.isValidPath(\"valid/file/path\"));","lastModifiedDate":"2018-04-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":" // invalid path","lastModifiedDate":"2018-04-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":" assertFalse(FileUtil.isValidPath(\"a\\0\"));","lastModifiedDate":"2018-04-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":" // null path -\u003e throws NullPointerException","lastModifiedDate":"2018-04-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e FileUtil.isValidPath(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"MaYuehan":2,"-":21}},{"path":"src/test/java/vitalconnect/commons/util/JsonUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.commons.util;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.testutil.SerializableTestClass;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.testutil.TestUtil;","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"MaYuehan":3,"-":42}},{"path":"src/test/java/vitalconnect/commons/util/StringUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.commons.util;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import static vitalconnect.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e StringUtil.containsWordIgnoreCase(\"typical sentence\", null));","lastModifiedDate":"2019-03-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void containsWordIgnoreCase_emptyWord_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, \"Word parameter cannot be empty\", ()","lastModifiedDate":"2019-03-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" -\u003e StringUtil.containsWordIgnoreCase(\"typical sentence\", \" \"));","lastModifiedDate":"2019-03-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void containsWordIgnoreCase_multipleWords_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, \"Word parameter should be a single word\", ()","lastModifiedDate":"2019-03-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" -\u003e StringUtil.containsWordIgnoreCase(\"typical sentence\", \"aaa BBB\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void containsWordIgnoreCase_nullSentence_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e StringUtil.containsWordIgnoreCase(null, \"abc\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Valid equivalence partitions for word:","lastModifiedDate":"2016-10-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * - any word","lastModifiedDate":"2016-10-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * - word containing symbols/numbers","lastModifiedDate":"2016-10-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * - word with leading/trailing spaces","lastModifiedDate":"2016-10-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Valid equivalence partitions for sentence:","lastModifiedDate":"2016-10-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * - empty string","lastModifiedDate":"2016-10-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * - one word","lastModifiedDate":"2016-10-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * - multiple words","lastModifiedDate":"2016-10-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * - sentence with extra spaces","lastModifiedDate":"2016-10-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Possible scenarios returning true:","lastModifiedDate":"2016-10-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * - matches first word in sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * - last word in sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - middle word in sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * - matches multiple words","lastModifiedDate":"2016-10-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * Possible scenarios returning false:","lastModifiedDate":"2016-10-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * - query word matches part of a sentence word","lastModifiedDate":"2016-10-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * - sentence word matches part of the query word","lastModifiedDate":"2016-10-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-13"},{"lineNumber":101,"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":102,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void containsWordIgnoreCase_validInputs_correctResult() {","lastModifiedDate":"2016-10-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" // Empty sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.containsWordIgnoreCase(\"\", \"abc\")); // Boundary case","lastModifiedDate":"2016-10-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.containsWordIgnoreCase(\" \", \"123\"));","lastModifiedDate":"2016-10-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" // Matches a partial word only","lastModifiedDate":"2016-10-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.containsWordIgnoreCase(\"aaa bbb ccc\", \"bb\")); // Sentence word bigger than query word","lastModifiedDate":"2016-10-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.containsWordIgnoreCase(\"aaa bbb ccc\", \"bbbb\")); // Query word bigger than sentence word","lastModifiedDate":"2016-10-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" // Matches word in the sentence, different upper/lower case letters","lastModifiedDate":"2016-10-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\"aaa bBb ccc\", \"Bbb\")); // First word (boundary case)","lastModifiedDate":"2016-10-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\"aaa bBb ccc@1\", \"CCc@1\")); // Last word (boundary case)","lastModifiedDate":"2016-10-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\" AAA bBb ccc \", \"aaa\")); // Sentence has extra spaces","lastModifiedDate":"2016-10-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\"Aaa\", \"aaa\")); // Only one word in sentence (boundary case)","lastModifiedDate":"2016-10-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\"aaa bbb ccc\", \" ccc \")); // Leading/trailing spaces","lastModifiedDate":"2016-10-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":" // Matches multiple words in sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\"AAA bBb ccc bbb\", \"bbB\"));","lastModifiedDate":"2016-10-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" //---------------- Tests for getDetails --------------------------------------","lastModifiedDate":"2016-10-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":128,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-13"},{"lineNumber":129,"author":{"gitId":"-"},"content":" * Equivalence Partitions: null, valid throwable object","lastModifiedDate":"2016-10-13"},{"lineNumber":130,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-30"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void getDetails_exceptionGiven() {","lastModifiedDate":"2016-09-30"},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.getDetails(new FileNotFoundException(\"file not found\"))","lastModifiedDate":"2019-03-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" .contains(\"java.io.FileNotFoundException: file not found\"));","lastModifiedDate":"2019-03-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-30"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public void getDetails_nullGiven_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e StringUtil.getDetails(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":143,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"MaYuehan":2,"-":141}},{"path":"src/test/java/vitalconnect/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import static vitalconnect.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"javierng2knus"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.NRIC_DESC_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.TypicalPersons.AMY;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-23"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":"import java.util.List;","lastModifiedDate":"2024-03-23"},{"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":"MaYuehan"},"content":"import vitalconnect.logic.commands.AddCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.CommandResult;","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.ListCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Appointment;","lastModifiedDate":"2024-03-23"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.ModelManager;","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.ReadOnlyClinic;","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.UserPrefs;","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.storage.JsonAppointmentStorage;","lastModifiedDate":"2024-03-23"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.storage.JsonClinicStorage;","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.storage.JsonUserPrefsStorage;","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.storage.StorageManager;","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.testutil.PersonBuilder;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":" Path clinicFilePath \u003d temporaryFolder.resolve(\"clinic.json\");","lastModifiedDate":"2024-03-23"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":" Path userPrefsFilePath \u003d temporaryFolder.resolve(\"userPrefs.json\");","lastModifiedDate":"2024-03-23"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":" Path appointmentFilePath \u003d temporaryFolder.resolve(\"appointments.json\");","lastModifiedDate":"2024-03-23"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":54,"author":{"gitId":"MaYuehan"},"content":" JsonClinicStorage clinicStorage \u003d new JsonClinicStorage(clinicFilePath);","lastModifiedDate":"2024-03-23"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(userPrefsFilePath);","lastModifiedDate":"2024-03-23"},{"lineNumber":56,"author":{"gitId":"MaYuehan"},"content":" JsonAppointmentStorage appointmentStorage \u003d new JsonAppointmentStorage(appointmentFilePath);","lastModifiedDate":"2024-03-23"},{"lineNumber":57,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":58,"author":{"gitId":"MaYuehan"},"content":" StorageManager storage \u003d new StorageManager(clinicStorage, userPrefsStorage, appointmentStorage);","lastModifiedDate":"2024-03-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":62,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":65,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2017-06-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2017-06-14"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14"},{"lineNumber":77,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2017-06-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2017-06-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":81,"author":{"gitId":"SeaHogs"},"content":" // @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"SeaHogs"},"content":" // public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"SeaHogs"},"content":" // assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"SeaHogs"},"content":" // LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"SeaHogs"},"content":" // }","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"SeaHogs"},"content":" //","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"SeaHogs"},"content":" // @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"SeaHogs"},"content":" // public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"SeaHogs"},"content":" // assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"SeaHogs"},"content":" // LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"SeaHogs"},"content":" // }","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":98,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":105,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14"},{"lineNumber":107,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14"},{"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-03-11"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":116,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":120,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":129,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":130,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":132,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14"},{"lineNumber":134,"author":{"gitId":"MaYuehan"},"content":" Model expectedModel \u003d new ModelManager(model.getClinic(), new UserPrefs(), new ArrayList\u003c\u003e());","lastModifiedDate":"2024-03-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":138,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":139,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":140,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":141,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":142,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":143,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":144,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"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, Model expectedModel) {","lastModifiedDate":"2017-05-31"},{"lineNumber":147,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14"},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19"},{"lineNumber":151,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":152,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13"},{"lineNumber":153,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13"},{"lineNumber":154,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13"},{"lineNumber":155,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13"},{"lineNumber":156,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":157,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13"},{"lineNumber":158,"author":{"gitId":"MaYuehan"},"content":" Path clinicPath \u003d temporaryFolder.resolve(\"ExceptionClinic.json\");","lastModifiedDate":"2024-03-23"},{"lineNumber":159,"author":{"gitId":"MaYuehan"},"content":" Path appointmentPath \u003d temporaryFolder.resolve(\"ExceptionAppointments.json\");","lastModifiedDate":"2024-03-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":161,"author":{"gitId":"MaYuehan"},"content":" // Mock ClinicStorage that throws the IOException e when saving","lastModifiedDate":"2024-03-23"},{"lineNumber":162,"author":{"gitId":"MaYuehan"},"content":" JsonClinicStorage clinicStorage \u003d new JsonClinicStorage(clinicPath) {","lastModifiedDate":"2024-03-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":164,"author":{"gitId":"MaYuehan"},"content":" public void saveClinic(ReadOnlyClinic clinic, Path filePath) throws IOException {","lastModifiedDate":"2024-03-23"},{"lineNumber":165,"author":{"gitId":"MaYuehan"},"content":" throw e;","lastModifiedDate":"2024-03-23"},{"lineNumber":166,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":167,"author":{"gitId":"MaYuehan"},"content":" };","lastModifiedDate":"2024-03-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":169,"author":{"gitId":"MaYuehan"},"content":" // Mock AppointmentStorage that throws the IOException e when saving","lastModifiedDate":"2024-03-23"},{"lineNumber":170,"author":{"gitId":"MaYuehan"},"content":" JsonAppointmentStorage appointmentStorage \u003d new JsonAppointmentStorage(appointmentPath) {","lastModifiedDate":"2024-03-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":172,"author":{"gitId":"MaYuehan"},"content":" public void saveAppointments(List\u003cAppointment\u003e appointments, Path filePath) throws IOException {","lastModifiedDate":"2024-03-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":175,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":177,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":178,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13"},{"lineNumber":179,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":180,"author":{"gitId":"MaYuehan"},"content":" // Inject StorageManager with the mock storages","lastModifiedDate":"2024-03-23"},{"lineNumber":181,"author":{"gitId":"MaYuehan"},"content":" StorageManager storage \u003d new StorageManager(clinicStorage, userPrefsStorage, appointmentStorage);","lastModifiedDate":"2024-03-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":183,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":185,"author":{"gitId":"MaYuehan"},"content":" // Triggers the saveClinic and saveAppointments methods by executing an add command","lastModifiedDate":"2024-03-23"},{"lineNumber":186,"author":{"gitId":"javierng2knus"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + NRIC_DESC_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":187,"author":{"gitId":"SeaHogs"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":188,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13"},{"lineNumber":189,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13"},{"lineNumber":190,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13"},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":192,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"},{"lineNumber":193,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"}],"authorContributionMap":{"javierng2knus":2,"MaYuehan":51,"-":128,"SeaHogs":12}},{"path":"src/test/java/vitalconnect/logic/commands/AddCommandIntegrationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.commands;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.TypicalPersons.getTypicalClinic;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.Messages;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.ModelManager;","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.UserPrefs;","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.testutil.PersonBuilder;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":" model \u003d new ModelManager(getTypicalClinic(), new UserPrefs(), new ArrayList\u003c\u003e());","lastModifiedDate":"2024-03-23"},{"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":"-"},"content":" public void execute_newPerson_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" Model expectedModel \u003d new ModelManager(model.getClinic(), new UserPrefs(), new ArrayList\u003c\u003e());","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":" expectedModel.addPerson(validPerson);","lastModifiedDate":"2017-06-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertCommandSuccess(new AddCommand(validPerson), model,","lastModifiedDate":"2019-01-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" expectedModel);","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","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 execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":45,"author":{"gitId":"javierng2knus"},"content":" Person personInList \u003d model.getClinic().getPersonList().get(0);","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertCommandFailure(new AddCommand(personInList), model,","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" AddCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"javierng2knus":1,"MaYuehan":13,"-":36}},{"path":"src/test/java/vitalconnect/logic/commands/AddCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.commands;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import static vitalconnect.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import java.util.List;","lastModifiedDate":"2024-03-23"},{"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":"MaYuehan"},"content":"import vitalconnect.commons.core.GuiSettings;","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.Messages;","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Appointment;","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Clinic;","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.ReadOnlyClinic;","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.ContactInformation;","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.identificationinformation.Nric;","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.person.medicalinformation.MedicalInformation;","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.testutil.PersonBuilder;","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":"public class AddCommandTest {","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 constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2017-05-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2017-05-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new AddCommand(validPerson).execute(modelStub);","lastModifiedDate":"2019-01-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(validPerson), modelStub.personsAdded);","lastModifiedDate":"2017-05-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(validPerson);","lastModifiedDate":"2018-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2019-05-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":63,"author":{"gitId":"-"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" AddCommand addAliceCommand \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":" AddCommand addBobCommand \u003d new AddCommand(bob);","lastModifiedDate":"2017-06-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" AddCommand addAliceCommandCopy \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"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":" AddCommand addCommand \u003d new AddCommand(ALICE);","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" String expected \u003d AddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.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":"2017-05-12"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":95,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"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 ReadOnlyUserPrefs getUserPrefs() {","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 GuiSettings getGuiSettings() {","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 void setGuiSettings(GuiSettings guiSettings) {","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":"javierng2knus"},"content":" public Path getClinicFilePath() {","lastModifiedDate":"2024-03-11"},{"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":"2018-11-27"},{"lineNumber":122,"author":{"gitId":"javierng2knus"},"content":" public void setClinicFilePath(Path clinicFilePath) {","lastModifiedDate":"2024-03-11"},{"lineNumber":123,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":127,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"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":"javierng2knus"},"content":" public void setClinic(ReadOnlyClinic newData) {","lastModifiedDate":"2024-03-11"},{"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":"2017-05-12"},{"lineNumber":137,"author":{"gitId":"javierng2knus"},"content":" public ReadOnlyClinic getClinic() {","lastModifiedDate":"2024-03-11"},{"lineNumber":138,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06"},{"lineNumber":143,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":146,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":147,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-08"},{"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 void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"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 ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":158,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":161,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":162,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":163,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":165,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":166,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":167,"author":{"gitId":"MaYuehan"},"content":" public boolean doesPersonExist(String name) {","lastModifiedDate":"2024-03-13"},{"lineNumber":168,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":169,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":170,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":171,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":172,"author":{"gitId":"MaYuehan"},"content":" public boolean doesIcExist(String name) {","lastModifiedDate":"2024-03-23"},{"lineNumber":173,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":174,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":175,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":176,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":177,"author":{"gitId":"MaYuehan"},"content":" public void addAppointment(Appointment appointment) {","lastModifiedDate":"2024-03-13"},{"lineNumber":178,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":179,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":180,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":181,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":182,"author":{"gitId":"MaYuehan"},"content":" public void setAppointments(List\u003cAppointment\u003e appointments) {","lastModifiedDate":"2024-03-23"},{"lineNumber":183,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":184,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":185,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":186,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":187,"author":{"gitId":"MaYuehan"},"content":" public ObservableList\u003cAppointment\u003e getFilteredAppointmentList() {","lastModifiedDate":"2024-03-13"},{"lineNumber":188,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":189,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":190,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":191,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":192,"author":{"gitId":"MaYuehan"},"content":" public void deleteAppointment(Appointment appointment) {","lastModifiedDate":"2024-03-13"},{"lineNumber":193,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":194,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":195,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":196,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":197,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":198,"author":{"gitId":"Ella-e"},"content":" public Person findPersonByNric(Nric nric) {","lastModifiedDate":"2024-03-17"},{"lineNumber":199,"author":{"gitId":"Ella-e"},"content":" return null;","lastModifiedDate":"2024-03-17"},{"lineNumber":200,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":201,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":202,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":203,"author":{"gitId":"Ella-e"},"content":" public void updatePersonContactInformation(Nric nric, ContactInformation contactInformation) {","lastModifiedDate":"2024-03-17"},{"lineNumber":204,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":205,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":206,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":207,"author":{"gitId":"SeaHogs"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":208,"author":{"gitId":"SeaHogs"},"content":" * @param nric","lastModifiedDate":"2024-03-18"},{"lineNumber":209,"author":{"gitId":"SeaHogs"},"content":" * @param medicalInformation","lastModifiedDate":"2024-03-18"},{"lineNumber":210,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":211,"author":{"gitId":"SeaHogs"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":212,"author":{"gitId":"SeaHogs"},"content":" public void updatePersonMedicalInformation(Nric nric, MedicalInformation medicalInformation) {","lastModifiedDate":"2024-03-18"},{"lineNumber":213,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":214,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":215,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"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 contains a single person.","lastModifiedDate":"2018-08-07"},{"lineNumber":220,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":221,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07"},{"lineNumber":222,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":224,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":225,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":226,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07"},{"lineNumber":227,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":229,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":230,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":231,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":232,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":233,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":234,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":236,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":237,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12"},{"lineNumber":238,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":239,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12"},{"lineNumber":240,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":242,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07"},{"lineNumber":243,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":244,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":245,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":246,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":247,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":248,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":249,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08"},{"lineNumber":250,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":251,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":252,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":254,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":255,"author":{"gitId":"javierng2knus"},"content":" public ReadOnlyClinic getClinic() {","lastModifiedDate":"2024-03-11"},{"lineNumber":256,"author":{"gitId":"javierng2knus"},"content":" return new Clinic();","lastModifiedDate":"2024-03-11"},{"lineNumber":257,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":258,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":260,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12"}],"authorContributionMap":{"javierng2knus":6,"MaYuehan":46,"Ella-e":12,"-":186,"SeaHogs":10}},{"path":"src/test/java/vitalconnect/logic/commands/AddContactCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"package vitalconnect.logic.commands;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.testutil.TypicalPersons.getTypicalClinic;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-23"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import java.util.List;","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.commons.core.GuiSettings;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.logic.Messages;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.Appointment;","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.Clinic;","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.ModelManager;","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.ReadOnlyClinic;","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.UserPrefs;","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.Address;","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.ContactInformation;","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.Email;","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.Phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.identificationinformation.Nric;","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.person.medicalinformation.MedicalInformation;","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.testutil.PersonBuilder;","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"Ella-e"},"content":"public class AddContactCommandTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" private Model model \u003d new ModelManager(getTypicalClinic(), new UserPrefs(), new ArrayList\u003c\u003e());","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"Ella-e"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"Ella-e"},"content":" public void constructor_nullContactInformation_throwsNullPointerException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"Ella-e"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddContactCommand(null, null));","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"Ella-e"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"Ella-e"},"content":" public void execute_personNotFind_failure() {","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"Ella-e"},"content":" assertThrows(CommandException.class,","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"Ella-e"},"content":" Messages.MESSAGE_PERSON_NOT_FOUND, () -\u003e new AddContactCommand(new Nric(\"S2519229Z\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"Ella-e"},"content":" new ContactInformation()).execute(model));","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"Ella-e"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"Ella-e"},"content":" public void execute_duplicateContactInformation_failure() {","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"Ella-e"},"content":" Person personInList \u003d model.getClinic().getPersonList().get(0);","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"Ella-e"},"content":" ContactInformation contactInformation \u003d new ContactInformation(new Email(\"\"), new Phone(\"\"), new Address(\"\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"Ella-e"},"content":" AddContactCommand addContactCommand \u003d new AddContactCommand(personInList","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"Ella-e"},"content":" .getIdentificationInformation().getNric(), contactInformation);","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"Ella-e"},"content":" assertThrows(CommandException.class, Messages.MESSAGE_PERSON_ALREADY_EXIST, () -\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"Ella-e"},"content":" addContactCommand.execute(model));","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"Ella-e"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"Ella-e"},"content":" public void execute_addContactInformation_success() throws CommandException {","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"Ella-e"},"content":" ModelStubHasOnePersonWithEmptyCI modelStub \u003d new ModelStubHasOnePersonWithEmptyCI();","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"Ella-e"},"content":" Person validPerson \u003d modelStub.findPersonByNric(new Nric(\"S2519229Z\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"Ella-e"},"content":" ContactInformation ci \u003d new ContactInformation(new Email(\"email@123.com\"), new Phone(\"\"), new Address(\"\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"Ella-e"},"content":" CommandResult commandResult \u003d new AddContactCommand(validPerson","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"Ella-e"},"content":" .getIdentificationInformation().getNric(), ci).execute(modelStub);","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"Ella-e"},"content":" assertEquals(AddContactCommand.MESSAGE_SUCCESS,","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"Ella-e"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"Ella-e"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"Ella-e"},"content":" public void toStringTest() {","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"Ella-e"},"content":" Nric nric \u003d new Nric(\"S2519229Z\");","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"Ella-e"},"content":" ContactInformation ci \u003d new ContactInformation(new Email(\"email@123.com\"), new Phone(\"\"), new Address(\"\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"Ella-e"},"content":" AddContactCommand command \u003d new AddContactCommand(nric, ci);","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"Ella-e"},"content":" assertEquals(command.toString(), \"addContact\" + nric + ci);","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"Ella-e"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"Ella-e"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"Ella-e"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"Ella-e"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"Ella-e"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":88,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":90,"author":{"gitId":"Ella-e"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"Ella-e"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"Ella-e"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"Ella-e"},"content":" public Path getClinicFilePath() {","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":109,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"Ella-e"},"content":" public void setClinicFilePath(Path clinicFilePath) {","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"Ella-e"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"Ella-e"},"content":" public void setClinic(ReadOnlyClinic newData) {","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"Ella-e"},"content":" public ReadOnlyClinic getClinic() {","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":129,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":130,"author":{"gitId":"Ella-e"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":135,"author":{"gitId":"Ella-e"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2024-03-17"},{"lineNumber":136,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":138,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":139,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":140,"author":{"gitId":"Ella-e"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2024-03-17"},{"lineNumber":141,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":143,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":144,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":145,"author":{"gitId":"Ella-e"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":147,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":148,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":149,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":150,"author":{"gitId":"Ella-e"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2024-03-17"},{"lineNumber":151,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":152,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":153,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":154,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":155,"author":{"gitId":"Ella-e"},"content":" public boolean doesPersonExist(String name) {","lastModifiedDate":"2024-03-17"},{"lineNumber":156,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":157,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":158,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":159,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":160,"author":{"gitId":"MaYuehan"},"content":" public boolean doesIcExist(String name) {","lastModifiedDate":"2024-03-23"},{"lineNumber":161,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":162,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":163,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":164,"author":{"gitId":"Ella-e"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":165,"author":{"gitId":"Ella-e"},"content":" public void addAppointment(Appointment appointment) {","lastModifiedDate":"2024-03-17"},{"lineNumber":166,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":167,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":168,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":169,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":170,"author":{"gitId":"MaYuehan"},"content":" public void setAppointments(List\u003cAppointment\u003e appointments) {","lastModifiedDate":"2024-03-23"},{"lineNumber":171,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":172,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":173,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":174,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":175,"author":{"gitId":"Ella-e"},"content":" public ObservableList\u003cAppointment\u003e getFilteredAppointmentList() {","lastModifiedDate":"2024-03-17"},{"lineNumber":176,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":177,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":178,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":179,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":180,"author":{"gitId":"Ella-e"},"content":" public void deleteAppointment(Appointment appointment) {","lastModifiedDate":"2024-03-17"},{"lineNumber":181,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":182,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":183,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":184,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":185,"author":{"gitId":"Ella-e"},"content":" public Person findPersonByNric(Nric nric) {","lastModifiedDate":"2024-03-17"},{"lineNumber":186,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":187,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":188,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":189,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":190,"author":{"gitId":"Ella-e"},"content":" public void updatePersonContactInformation(Nric nric, ContactInformation contactInformation) {","lastModifiedDate":"2024-03-17"},{"lineNumber":191,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":192,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":193,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":194,"author":{"gitId":"SeaHogs"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":195,"author":{"gitId":"SeaHogs"},"content":" * @param nric","lastModifiedDate":"2024-03-18"},{"lineNumber":196,"author":{"gitId":"SeaHogs"},"content":" * @param medicalInformation","lastModifiedDate":"2024-03-18"},{"lineNumber":197,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":198,"author":{"gitId":"SeaHogs"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":199,"author":{"gitId":"SeaHogs"},"content":" public void updatePersonMedicalInformation(Nric nric, MedicalInformation medicalInformation) {","lastModifiedDate":"2024-03-18"},{"lineNumber":200,"author":{"gitId":"SeaHogs"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-18"},{"lineNumber":201,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":202,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":203,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":204,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":205,"author":{"gitId":"Ella-e"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":206,"author":{"gitId":"Ella-e"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2024-03-17"},{"lineNumber":207,"author":{"gitId":"Ella-e"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":208,"author":{"gitId":"Ella-e"},"content":" private class ModelStubHasOnePersonWithEmptyCI extends ModelStub {","lastModifiedDate":"2024-03-17"},{"lineNumber":209,"author":{"gitId":"Ella-e"},"content":" final Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2024-03-17"},{"lineNumber":210,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":211,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":212,"author":{"gitId":"Ella-e"},"content":" public Person findPersonByNric(Nric nric) {","lastModifiedDate":"2024-03-17"},{"lineNumber":213,"author":{"gitId":"Ella-e"},"content":" return this.person;","lastModifiedDate":"2024-03-17"},{"lineNumber":214,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":215,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":216,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":217,"author":{"gitId":"Ella-e"},"content":" public ReadOnlyClinic getClinic() {","lastModifiedDate":"2024-03-17"},{"lineNumber":218,"author":{"gitId":"Ella-e"},"content":" return new Clinic();","lastModifiedDate":"2024-03-17"},{"lineNumber":219,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":220,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":221,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":222,"author":{"gitId":"Ella-e"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2024-03-17"},{"lineNumber":223,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":224,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":225,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":226,"author":{"gitId":"Ella-e"},"content":" public void updatePersonContactInformation(Nric nric, ContactInformation contactInformation) {","lastModifiedDate":"2024-03-17"},{"lineNumber":227,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":228,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":229,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":230,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":231,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"MaYuehan":13,"Ella-e":208,"SeaHogs":10}},{"path":"src/test/java/vitalconnect/logic/commands/ClearCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.commands;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.TypicalPersons.getTypicalClinic;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"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":"MaYuehan"},"content":"import vitalconnect.model.Clinic;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.ModelManager;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.UserPrefs;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class ClearCommandTest {","lastModifiedDate":"2017-06-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":18,"author":{"gitId":"javierng2knus"},"content":" public void execute_emptyClinic_success() {","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ClearCommand(), model, ClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":26,"author":{"gitId":"javierng2knus"},"content":" public void execute_nonEmptyClinic_success() {","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" Model model \u003d new ModelManager(getTypicalClinic(), new UserPrefs(), new ArrayList\u003c\u003e());","lastModifiedDate":"2024-03-23"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" Model expectedModel \u003d new ModelManager(getTypicalClinic(), new UserPrefs(), new ArrayList\u003c\u003e());","lastModifiedDate":"2024-03-23"},{"lineNumber":29,"author":{"gitId":"javierng2knus"},"content":" expectedModel.setClinic(new Clinic());","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ClearCommand(), model, ClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08"}],"authorContributionMap":{"javierng2knus":3,"MaYuehan":11,"-":20}},{"path":"src/test/java/vitalconnect/logic/commands/CommandResultTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.commands;","lastModifiedDate":"2024-03-13"},{"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":"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":"2018-12-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class CommandResultTest {","lastModifiedDate":"2018-12-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-12-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new CommandResult(\"feedback\");","lastModifiedDate":"2018-12-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-12-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":" assertTrue(commandResult.equals(new CommandResult(\"feedback\")));","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":" assertTrue(commandResult.equals(new CommandResult(\"feedback\",","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" false, false, CommandResult.Type.SHOW_PERSONS)));","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":" assertTrue(commandResult.equals(commandResult));","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(null));","lastModifiedDate":"2018-12-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(0.5f));","lastModifiedDate":"2018-12-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" // different feedbackToUser value -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(new CommandResult(\"different\")));","lastModifiedDate":"2018-12-09"},{"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":"MaYuehan"},"content":" assertFalse(commandResult.equals(new CommandResult(\"feedback\",","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" true, false, CommandResult.Type.SHOW_PERSONS)));","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // different exit value -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" assertFalse(commandResult.equals(new CommandResult(\"feedback\",","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" false, true, CommandResult.Type.SHOW_PERSONS)));","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" // different type value -\u003e returns different hashcode","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":" assertFalse(commandResult.equals(new CommandResult(\"feedback\",","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":" false, true, CommandResult.Type.SHOW_APPOINTMENTS)));","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void hashcode() {","lastModifiedDate":"2018-12-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new CommandResult(\"feedback\");","lastModifiedDate":"2018-12-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // same values -\u003e returns same hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertEquals(commandResult.hashCode(), new CommandResult(\"feedback\").hashCode());","lastModifiedDate":"2018-12-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // different feedbackToUser value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(\"different\").hashCode());","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // different showHelp value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":56,"author":{"gitId":"MaYuehan"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(\"feedback\",","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"MaYuehan"},"content":" true, false, CommandResult.Type.SHOW_PERSONS).hashCode());","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // different exit value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":60,"author":{"gitId":"MaYuehan"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(\"feedback\",","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"MaYuehan"},"content":" false, true, CommandResult.Type.SHOW_PERSONS).hashCode());","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"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":" CommandResult commandResult \u003d new CommandResult(\"feedback\");","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" String expected \u003d CommandResult.class.getCanonicalName() + \"{feedbackToUser\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" + commandResult.getFeedbackToUser() + \", showHelp\u003d\" + commandResult.isShowHelp()","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" + \", exit\u003d\" + commandResult.isExit() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertEquals(expected, commandResult.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-12-09"}],"authorContributionMap":{"MaYuehan":16,"-":57}},{"path":"src/test/java/vitalconnect/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.commands;","lastModifiedDate":"2024-03-13"},{"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":"SeaHogs"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_ALLERGYTAG;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_HEIGHT;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_NRIC;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_WEIGHT;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.core.index.Index;","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Clinic;","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.identificationinformation.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2024-03-13"},{"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":"javierng2knus"},"content":" public static final String VALID_NRIC_AMY \u003d \"S9999999C\";","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"javierng2knus"},"content":" public static final String VALID_NRIC_BOB \u003d \"T9999999Z\";","lastModifiedDate":"2024-03-15"},{"lineNumber":36,"author":{"gitId":"Ella-e"},"content":" public static final String VALID_PHONE_BOB \u003d \"12345678\";","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"Ella-e"},"content":" public static final String VALID_EMAIL_BOB \u003d \"123@email.com\";","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"Ella-e"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"a\";","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":44,"author":{"gitId":"javierng2knus"},"content":" public static final String NRIC_DESC_AMY \u003d \" \" + PREFIX_NRIC + VALID_NRIC_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"javierng2knus"},"content":" public static final String NRIC_DESC_BOB \u003d \" \" + PREFIX_NRIC + VALID_NRIC_BOB;","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"SeaHogs"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_ALLERGYTAG + VALID_TAG_FRIEND;","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"SeaHogs"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_ALLERGYTAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"SeaHogs"},"content":" public static final String HEIGH_DESC_AMY \u003d \" \" + PREFIX_HEIGHT + \"170\";","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"SeaHogs"},"content":" public static final String WEIGHT_DESC_AMY \u003d \" \" + PREFIX_WEIGHT + \"60\";","lastModifiedDate":"2024-03-18"},{"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":"javierng2knus"},"content":" public static final String INVALID_NRIC_DESC \u003d \" \" + PREFIX_NRIC + \"911a\"; // check Nric.java for validity","lastModifiedDate":"2024-03-15"},{"lineNumber":56,"author":{"gitId":"Ella-e"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"1\";","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"Ella-e"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"abc\";","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"Ella-e"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS + \" def/abc\";","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"SeaHogs"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_ALLERGYTAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2024-03-18"},{"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":"SeaHogs"},"content":" .withNric(VALID_NRIC_AMY).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":71,"author":{"gitId":"SeaHogs"},"content":" .withNric(VALID_NRIC_BOB).build();","lastModifiedDate":"2024-03-18"},{"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":"javierng2knus"},"content":" * - the clinic, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2024-03-11"},{"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":"javierng2knus"},"content":" Clinic expectedClinic \u003d new Clinic(actualModel.getClinic());","lastModifiedDate":"2024-03-11"},{"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":"javierng2knus"},"content":" assertEquals(expectedClinic, actualModel.getClinic());","lastModifiedDate":"2024-03-11"},{"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":"javierng2knus"},"content":" * {@code model}\u0027s clinic.","lastModifiedDate":"2024-03-11"},{"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":"javierng2knus"},"content":" final String[] splitName \u003d person.getIdentificationInformation().getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2024-03-15"},{"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":{"javierng2knus":10,"MaYuehan":9,"Ella-e":6,"-":90,"SeaHogs":15}},{"path":"src/test/java/vitalconnect/logic/commands/CreateAptCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.commands;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import java.util.List;","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.core.GuiSettings;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Appointment;","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.ReadOnlyClinic;","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.ContactInformation;","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.identificationinformation.Nric;","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.person.medicalinformation.MedicalInformation;","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":"//import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":"//import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":"//import java.time.LocalDateTime;","lastModifiedDate":"2024-03-23"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":"//import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-03-23"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":"//import vitalconnect.model.person.identificationinformation.Name;","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":"public class CreateAptCommandTest {","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" public void execute_icNotExist_throwsCommandException() {","lastModifiedDate":"2024-03-23"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" ModelStub modelStub \u003d new ModelStubWithoutPerson();","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" String patientIc \u003d \"S1222222D\";","lastModifiedDate":"2024-03-23"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" String dateTimeStr \u003d \"02/02/2024 1330\";","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" CreateAptCommand createAptCommand \u003d new CreateAptCommand(patientIc, dateTimeStr);","lastModifiedDate":"2024-03-23"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" assertThrows(CommandException.class,","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":" \"OOPS! The appointment cannot be created as the NRIC does not exist.\", (","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":" ) -\u003e createAptCommand.execute(modelStub));","lastModifiedDate":"2024-03-23"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":" /*","lastModifiedDate":"2024-03-23"},{"lineNumber":48,"author":{"gitId":"javierng2knus"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":" public void execute_appointmentCreatedSuccessfully() throws Exception {","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":" String patientIc \u003d \"S1234567D\";","lastModifiedDate":"2024-03-23"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":" String dateTimeStr \u003d \"02/02/2024 1330\";","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":" CreateAptCommand createAptCommand \u003d new CreateAptCommand(patientIc, dateTimeStr);","lastModifiedDate":"2024-03-23"},{"lineNumber":54,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":" CommandResult commandResult \u003d createAptCommand.execute(modelStub);","lastModifiedDate":"2024-03-13"},{"lineNumber":56,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"MaYuehan"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd/MM/yyyy HHmm\");","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"MaYuehan"},"content":" LocalDateTime dateTime \u003d LocalDateTime.parse(dateTimeStr, formatter);","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":60,"author":{"gitId":"MaYuehan"},"content":" String successString \u003d String.format(\"Created an appointment successfully!\\nName: \"","lastModifiedDate":"2024-03-23"},{"lineNumber":61,"author":{"gitId":"MaYuehan"},"content":" + \"Amy\" + \"\\nNRIC: %s\\nTime: %s\",","lastModifiedDate":"2024-03-23"},{"lineNumber":62,"author":{"gitId":"MaYuehan"},"content":" patientIc, dateTime.format(DateTimeFormatter.ofPattern(\"d MMM yyyy HH:mm\")));","lastModifiedDate":"2024-03-23"},{"lineNumber":63,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":64,"author":{"gitId":"javierng2knus"},"content":" assertEquals(successString, commandResult.getFeedbackToUser());","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"MaYuehan"},"content":" assertTrue(modelStub.appointmentsAdded.stream().anyMatch(appointment -\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":66,"author":{"gitId":"MaYuehan"},"content":" appointment.getPatientIc().equals(patientIc)","lastModifiedDate":"2024-03-23"},{"lineNumber":67,"author":{"gitId":"MaYuehan"},"content":" \u0026\u0026 appointment.getDateTime().equals(dateTime)));","lastModifiedDate":"2024-03-13"},{"lineNumber":68,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"MaYuehan"},"content":"*/","lastModifiedDate":"2024-03-23"},{"lineNumber":70,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":72,"author":{"gitId":"MaYuehan"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2024-03-13"},{"lineNumber":73,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":74,"author":{"gitId":"MaYuehan"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2024-03-13"},{"lineNumber":75,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":76,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":77,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":78,"author":{"gitId":"MaYuehan"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2024-03-13"},{"lineNumber":79,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":80,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":81,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":82,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":83,"author":{"gitId":"MaYuehan"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2024-03-13"},{"lineNumber":84,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":85,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":86,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":87,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":88,"author":{"gitId":"MaYuehan"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2024-03-13"},{"lineNumber":89,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":90,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":91,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":92,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":93,"author":{"gitId":"MaYuehan"},"content":" public Path getClinicFilePath() {","lastModifiedDate":"2024-03-13"},{"lineNumber":94,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":95,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":96,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":97,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":98,"author":{"gitId":"MaYuehan"},"content":" public void setClinicFilePath(Path clinicFilePath) {","lastModifiedDate":"2024-03-13"},{"lineNumber":99,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":100,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":101,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":102,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":103,"author":{"gitId":"MaYuehan"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2024-03-13"},{"lineNumber":104,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":105,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":106,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":107,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":108,"author":{"gitId":"MaYuehan"},"content":" public void setClinic(ReadOnlyClinic newData) {","lastModifiedDate":"2024-03-13"},{"lineNumber":109,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":110,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":111,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":112,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":113,"author":{"gitId":"MaYuehan"},"content":" public ReadOnlyClinic getClinic() {","lastModifiedDate":"2024-03-13"},{"lineNumber":114,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":115,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":116,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":117,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":118,"author":{"gitId":"MaYuehan"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2024-03-13"},{"lineNumber":119,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":120,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":121,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":122,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":123,"author":{"gitId":"MaYuehan"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2024-03-13"},{"lineNumber":124,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":125,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":126,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":127,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":128,"author":{"gitId":"MaYuehan"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2024-03-13"},{"lineNumber":129,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":130,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":131,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":132,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":133,"author":{"gitId":"MaYuehan"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2024-03-13"},{"lineNumber":134,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":135,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":136,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":137,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":138,"author":{"gitId":"MaYuehan"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2024-03-13"},{"lineNumber":139,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":140,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":141,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":142,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":143,"author":{"gitId":"MaYuehan"},"content":" public boolean doesIcExist(String name) {","lastModifiedDate":"2024-03-23"},{"lineNumber":144,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":145,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":146,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":147,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":148,"author":{"gitId":"MaYuehan"},"content":" public boolean doesPersonExist(String name) {","lastModifiedDate":"2024-03-23"},{"lineNumber":149,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":150,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":151,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":152,"author":{"gitId":"MaYuehan"},"content":" public void addAppointment(Appointment appointment) {","lastModifiedDate":"2024-03-13"},{"lineNumber":153,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":154,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":155,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":156,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":157,"author":{"gitId":"MaYuehan"},"content":" public void setAppointments(List\u003cAppointment\u003e appointments) {","lastModifiedDate":"2024-03-23"},{"lineNumber":158,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":159,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":160,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":161,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":162,"author":{"gitId":"MaYuehan"},"content":" public ObservableList\u003cAppointment\u003e getFilteredAppointmentList() {","lastModifiedDate":"2024-03-13"},{"lineNumber":163,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":164,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":165,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":166,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":167,"author":{"gitId":"MaYuehan"},"content":" public void deleteAppointment(Appointment appointment) {","lastModifiedDate":"2024-03-13"},{"lineNumber":168,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":169,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":170,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":171,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":172,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":173,"author":{"gitId":"Ella-e"},"content":" public Person findPersonByNric(Nric nric) {","lastModifiedDate":"2024-03-17"},{"lineNumber":174,"author":{"gitId":"Ella-e"},"content":" return null;","lastModifiedDate":"2024-03-17"},{"lineNumber":175,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":176,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":177,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":178,"author":{"gitId":"Ella-e"},"content":" public void updatePersonContactInformation(Nric nric, ContactInformation contactInformation) {","lastModifiedDate":"2024-03-17"},{"lineNumber":179,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":180,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":181,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":182,"author":{"gitId":"SeaHogs"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":183,"author":{"gitId":"SeaHogs"},"content":" * @param nric","lastModifiedDate":"2024-03-18"},{"lineNumber":184,"author":{"gitId":"SeaHogs"},"content":" * @param medicalInformation","lastModifiedDate":"2024-03-18"},{"lineNumber":185,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":186,"author":{"gitId":"SeaHogs"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":187,"author":{"gitId":"SeaHogs"},"content":" public void updatePersonMedicalInformation(Nric nric, MedicalInformation medicalInformation) {","lastModifiedDate":"2024-03-18"},{"lineNumber":188,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":189,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":190,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":191,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":192,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":193,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":194,"author":{"gitId":"MaYuehan"},"content":" private class ModelStubWithoutPerson extends ModelStub {","lastModifiedDate":"2024-03-13"},{"lineNumber":195,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":196,"author":{"gitId":"MaYuehan"},"content":" public boolean doesPersonExist(String name) {","lastModifiedDate":"2024-03-13"},{"lineNumber":197,"author":{"gitId":"MaYuehan"},"content":" return false;","lastModifiedDate":"2024-03-13"},{"lineNumber":198,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":199,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":200,"author":{"gitId":"MaYuehan"},"content":" public boolean doesIcExist(String ic) {","lastModifiedDate":"2024-03-23"},{"lineNumber":201,"author":{"gitId":"MaYuehan"},"content":" return false;","lastModifiedDate":"2024-03-23"},{"lineNumber":202,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":203,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":204,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":205,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":206,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":207,"author":{"gitId":"MaYuehan"},"content":" * A Model stub that always accept the appointment being added.","lastModifiedDate":"2024-03-13"},{"lineNumber":208,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":209,"author":{"gitId":"MaYuehan"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2024-03-13"},{"lineNumber":210,"author":{"gitId":"MaYuehan"},"content":" final ArrayList\u003cAppointment\u003e appointmentsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-13"},{"lineNumber":211,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":212,"author":{"gitId":"MaYuehan"},"content":" public boolean doesPersonExist(String name) {","lastModifiedDate":"2024-03-13"},{"lineNumber":213,"author":{"gitId":"MaYuehan"},"content":" return true;","lastModifiedDate":"2024-03-13"},{"lineNumber":214,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":215,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":216,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":217,"author":{"gitId":"MaYuehan"},"content":" public boolean doesIcExist(String ic) {","lastModifiedDate":"2024-03-23"},{"lineNumber":218,"author":{"gitId":"MaYuehan"},"content":" return true;","lastModifiedDate":"2024-03-23"},{"lineNumber":219,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":220,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":221,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":222,"author":{"gitId":"MaYuehan"},"content":" public void addAppointment(Appointment appointment) {","lastModifiedDate":"2024-03-13"},{"lineNumber":223,"author":{"gitId":"MaYuehan"},"content":" appointmentsAdded.add(appointment);","lastModifiedDate":"2024-03-13"},{"lineNumber":224,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":225,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":226,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-03-13"},{"lineNumber":227,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":228,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":229,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"javierng2knus":3,"MaYuehan":204,"Ella-e":12,"SeaHogs":10}},{"path":"src/test/java/vitalconnect/logic/commands/DeleteAptCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.commands;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"import java.util.List;","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.core.GuiSettings;","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Appointment;","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.ReadOnlyClinic;","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.ContactInformation;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.identificationinformation.Nric;","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.person.medicalinformation.MedicalInformation;","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":"public class DeleteAptCommandTest {","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" public void execute_validIndexAppointmentDeletedSuccessfully() throws Exception {","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" ModelStubWithAppointments modelStub \u003d new ModelStubWithAppointments();","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" LocalDateTime dateTime \u003d LocalDateTime.now();","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" Appointment appointment \u003d new Appointment(\"John Doe\", \"S1234567D\", dateTime);","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" modelStub.addAppointment(appointment);","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" int appointmentIndex \u003d 1; // Assuming this is the index of the appointment to be deleted","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":" DeleteAptCommand deleteAptCommand \u003d new DeleteAptCommand(appointmentIndex, \"John Doe\");","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":" CommandResult commandResult \u003d deleteAptCommand.execute(modelStub);","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":" assertEquals(\"Deleted the appointment successfully:\\nName: John Doe\\nTime: \"","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":" + dateTime.format(DateTimeFormatter.ofPattern(\"d MMM uuuu HH:mm\")), commandResult.getFeedbackToUser());","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":" assertFalse(modelStub.appointments.contains(appointment)); // Verify the appointment was removed","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":" public void execute_emptyList_throwsCommandException() {","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":" ModelStubWithAppointments modelStub \u003d new ModelStubWithAppointments();","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":" LocalDateTime dateTime \u003d LocalDateTime.now();","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":" Appointment existingAppointment \u003d new Appointment(\"John Doe\", \"S1234567D\", dateTime);","lastModifiedDate":"2024-03-23"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":" modelStub.addAppointment(existingAppointment);","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":" int invalidIndex \u003d 999;","lastModifiedDate":"2024-03-13"},{"lineNumber":56,"author":{"gitId":"MaYuehan"},"content":" DeleteAptCommand deleteAptCommand \u003d new DeleteAptCommand(invalidIndex, \"John Doe\");","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"MaYuehan"},"content":" assertThrows(CommandException.class, \"OOPS! The deletion of the appointment failed \"","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"MaYuehan"},"content":" + \"as the index of appointment is out of range.\", () -\u003e deleteAptCommand.execute(modelStub));","lastModifiedDate":"2024-03-13"},{"lineNumber":60,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":61,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":62,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":63,"author":{"gitId":"MaYuehan"},"content":" public void execute_invalidIndex_throwsCommandException() {","lastModifiedDate":"2024-03-13"},{"lineNumber":64,"author":{"gitId":"MaYuehan"},"content":" ModelStubWithAppointments modelStub \u003d new ModelStubWithAppointments();","lastModifiedDate":"2024-03-13"},{"lineNumber":65,"author":{"gitId":"MaYuehan"},"content":" int invalidIndex \u003d 999;","lastModifiedDate":"2024-03-13"},{"lineNumber":66,"author":{"gitId":"MaYuehan"},"content":" DeleteAptCommand deleteAptCommand \u003d new DeleteAptCommand(invalidIndex, \"John Doe\");","lastModifiedDate":"2024-03-13"},{"lineNumber":67,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":68,"author":{"gitId":"MaYuehan"},"content":" assertThrows(CommandException.class, \"OOPS! The appointment list is empty.\", (","lastModifiedDate":"2024-03-13"},{"lineNumber":69,"author":{"gitId":"MaYuehan"},"content":" ) -\u003e deleteAptCommand.execute(modelStub));","lastModifiedDate":"2024-03-13"},{"lineNumber":70,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":72,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":73,"author":{"gitId":"MaYuehan"},"content":" public void execute_nonMatchingName_throwsCommandException() {","lastModifiedDate":"2024-03-13"},{"lineNumber":74,"author":{"gitId":"MaYuehan"},"content":" ModelStubWithAppointments modelStub \u003d new ModelStubWithAppointments();","lastModifiedDate":"2024-03-13"},{"lineNumber":75,"author":{"gitId":"MaYuehan"},"content":" LocalDateTime dateTime \u003d LocalDateTime.now();","lastModifiedDate":"2024-03-13"},{"lineNumber":76,"author":{"gitId":"MaYuehan"},"content":" Appointment existingAppointment \u003d new Appointment(\"John Doe\", \"S1234567D\", dateTime);","lastModifiedDate":"2024-03-23"},{"lineNumber":77,"author":{"gitId":"MaYuehan"},"content":" modelStub.addAppointment(existingAppointment);","lastModifiedDate":"2024-03-13"},{"lineNumber":78,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":79,"author":{"gitId":"MaYuehan"},"content":" // Trying to delete an appointment for a patient name that doesn\u0027t match","lastModifiedDate":"2024-03-13"},{"lineNumber":80,"author":{"gitId":"MaYuehan"},"content":" // the patient name of the appointment at the specified index","lastModifiedDate":"2024-03-13"},{"lineNumber":81,"author":{"gitId":"MaYuehan"},"content":" int appointmentIndex \u003d 1; // Correct index but incorrect patient name for this index","lastModifiedDate":"2024-03-13"},{"lineNumber":82,"author":{"gitId":"MaYuehan"},"content":" DeleteAptCommand deleteAptCommand \u003d new DeleteAptCommand(appointmentIndex, \"Jane Doe\");","lastModifiedDate":"2024-03-13"},{"lineNumber":83,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":84,"author":{"gitId":"MaYuehan"},"content":" assertThrows(CommandException.class, \"OOPS! The deletion of the \"","lastModifiedDate":"2024-03-13"},{"lineNumber":85,"author":{"gitId":"MaYuehan"},"content":" + \"appointment failed as the appointment of Jane Doe does not exist in the \"","lastModifiedDate":"2024-03-13"},{"lineNumber":86,"author":{"gitId":"MaYuehan"},"content":" + \"appointment list.\", () -\u003e deleteAptCommand.execute(modelStub));","lastModifiedDate":"2024-03-13"},{"lineNumber":87,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":88,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":89,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":90,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":91,"author":{"gitId":"MaYuehan"},"content":" * A Model stub that contains and allows manipulation of appointments.","lastModifiedDate":"2024-03-13"},{"lineNumber":92,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":93,"author":{"gitId":"MaYuehan"},"content":" private class ModelStubWithAppointments extends ModelStub {","lastModifiedDate":"2024-03-13"},{"lineNumber":94,"author":{"gitId":"MaYuehan"},"content":" final ArrayList\u003cAppointment\u003e appointments \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-13"},{"lineNumber":95,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":96,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":97,"author":{"gitId":"MaYuehan"},"content":" public void addAppointment(Appointment appointment) {","lastModifiedDate":"2024-03-13"},{"lineNumber":98,"author":{"gitId":"MaYuehan"},"content":" appointments.add(appointment);","lastModifiedDate":"2024-03-13"},{"lineNumber":99,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":100,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":101,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":102,"author":{"gitId":"MaYuehan"},"content":" public boolean doesPersonExist(String name) {","lastModifiedDate":"2024-03-13"},{"lineNumber":103,"author":{"gitId":"MaYuehan"},"content":" return appointments.stream().anyMatch(appointment -\u003e appointment.getPatientName().equals(name));","lastModifiedDate":"2024-03-13"},{"lineNumber":104,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":105,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":106,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":107,"author":{"gitId":"MaYuehan"},"content":" public void deleteAppointment(Appointment appointment) {","lastModifiedDate":"2024-03-13"},{"lineNumber":108,"author":{"gitId":"MaYuehan"},"content":" appointments.remove(appointment);","lastModifiedDate":"2024-03-13"},{"lineNumber":109,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":110,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":111,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":112,"author":{"gitId":"MaYuehan"},"content":" public ObservableList\u003cAppointment\u003e getFilteredAppointmentList() {","lastModifiedDate":"2024-03-13"},{"lineNumber":113,"author":{"gitId":"MaYuehan"},"content":" // Assuming you have a method to convert your ArrayList to an ObservableList","lastModifiedDate":"2024-03-13"},{"lineNumber":114,"author":{"gitId":"MaYuehan"},"content":" // This conversion is necessary because your command likely operates on ObservableList","lastModifiedDate":"2024-03-13"},{"lineNumber":115,"author":{"gitId":"MaYuehan"},"content":" return FXCollections.observableArrayList(appointments);","lastModifiedDate":"2024-03-13"},{"lineNumber":116,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":117,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":118,"author":{"gitId":"MaYuehan"},"content":" // Implement other abstract methods as necessary, throwing AssertionError for unimplemented methods","lastModifiedDate":"2024-03-13"},{"lineNumber":119,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":120,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":121,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":122,"author":{"gitId":"MaYuehan"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2024-03-13"},{"lineNumber":123,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":124,"author":{"gitId":"MaYuehan"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2024-03-13"},{"lineNumber":125,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":126,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":127,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":128,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":129,"author":{"gitId":"MaYuehan"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2024-03-13"},{"lineNumber":130,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":131,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":132,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":133,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":134,"author":{"gitId":"MaYuehan"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2024-03-13"},{"lineNumber":135,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":136,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":137,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":138,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":139,"author":{"gitId":"MaYuehan"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2024-03-13"},{"lineNumber":140,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":141,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":142,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":143,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":144,"author":{"gitId":"MaYuehan"},"content":" public Path getClinicFilePath() {","lastModifiedDate":"2024-03-13"},{"lineNumber":145,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":146,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":147,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":148,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":149,"author":{"gitId":"MaYuehan"},"content":" public void setClinicFilePath(Path clinicFilePath) {","lastModifiedDate":"2024-03-13"},{"lineNumber":150,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":151,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":152,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":153,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":154,"author":{"gitId":"MaYuehan"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2024-03-13"},{"lineNumber":155,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":156,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":157,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":158,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":159,"author":{"gitId":"MaYuehan"},"content":" public void setClinic(ReadOnlyClinic newData) {","lastModifiedDate":"2024-03-13"},{"lineNumber":160,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":161,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":162,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":163,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":164,"author":{"gitId":"MaYuehan"},"content":" public ReadOnlyClinic getClinic() {","lastModifiedDate":"2024-03-13"},{"lineNumber":165,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":166,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":167,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":168,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":169,"author":{"gitId":"MaYuehan"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2024-03-13"},{"lineNumber":170,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":171,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":172,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":173,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":174,"author":{"gitId":"MaYuehan"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2024-03-13"},{"lineNumber":175,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":176,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":177,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":178,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":179,"author":{"gitId":"MaYuehan"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2024-03-13"},{"lineNumber":180,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":181,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":182,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":183,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":184,"author":{"gitId":"MaYuehan"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2024-03-13"},{"lineNumber":185,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":186,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":187,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":188,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":189,"author":{"gitId":"MaYuehan"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2024-03-13"},{"lineNumber":190,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":191,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":192,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":193,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":194,"author":{"gitId":"MaYuehan"},"content":" public boolean doesPersonExist(String name) {","lastModifiedDate":"2024-03-13"},{"lineNumber":195,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":196,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":197,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":198,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":199,"author":{"gitId":"MaYuehan"},"content":" public boolean doesIcExist(String name) {","lastModifiedDate":"2024-03-23"},{"lineNumber":200,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":201,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":202,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":203,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":204,"author":{"gitId":"MaYuehan"},"content":" public void addAppointment(Appointment appointment) {","lastModifiedDate":"2024-03-13"},{"lineNumber":205,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":206,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":207,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":208,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":209,"author":{"gitId":"MaYuehan"},"content":" public void setAppointments(List\u003cAppointment\u003e appointments) {","lastModifiedDate":"2024-03-23"},{"lineNumber":210,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":211,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":212,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":213,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":214,"author":{"gitId":"MaYuehan"},"content":" public ObservableList\u003cAppointment\u003e getFilteredAppointmentList() {","lastModifiedDate":"2024-03-13"},{"lineNumber":215,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":216,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":217,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":218,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":219,"author":{"gitId":"MaYuehan"},"content":" public void deleteAppointment(Appointment appointment) {","lastModifiedDate":"2024-03-13"},{"lineNumber":220,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":221,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":222,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":223,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":224,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":225,"author":{"gitId":"Ella-e"},"content":" public Person findPersonByNric(Nric nric) {","lastModifiedDate":"2024-03-17"},{"lineNumber":226,"author":{"gitId":"Ella-e"},"content":" return null;","lastModifiedDate":"2024-03-17"},{"lineNumber":227,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":228,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":229,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":230,"author":{"gitId":"Ella-e"},"content":" public void updatePersonContactInformation(Nric nric, ContactInformation contactInformation) {","lastModifiedDate":"2024-03-17"},{"lineNumber":231,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":232,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":233,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":234,"author":{"gitId":"SeaHogs"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":235,"author":{"gitId":"SeaHogs"},"content":" * @param nric","lastModifiedDate":"2024-03-18"},{"lineNumber":236,"author":{"gitId":"SeaHogs"},"content":" * @param medicalInformation","lastModifiedDate":"2024-03-18"},{"lineNumber":237,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":238,"author":{"gitId":"SeaHogs"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":239,"author":{"gitId":"SeaHogs"},"content":" public void updatePersonMedicalInformation(Nric nric, MedicalInformation medicalInformation) {","lastModifiedDate":"2024-03-18"},{"lineNumber":240,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":241,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":242,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":243,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":244,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":245,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":246,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"MaYuehan":224,"Ella-e":12,"SeaHogs":10}},{"path":"src/test/java/vitalconnect/logic/commands/DeleteCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.commands;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.TypicalPersons.getTypicalClinic;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.core.index.Index;","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.Messages;","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.ModelManager;","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.UserPrefs;","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2018-01-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2017-06-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" private Model model \u003d new ModelManager(getTypicalClinic(), new UserPrefs(), new ArrayList\u003c\u003e());","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getClinic(), new UserPrefs(), new ArrayList\u003c\u003e());","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-06-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":56,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":59,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":64,"author":{"gitId":"MaYuehan"},"content":" Model expectedModel \u003d new ModelManager(model.getClinic(), new UserPrefs(), new ArrayList\u003c\u003e());","lastModifiedDate":"2024-03-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" showNoPerson(expectedModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-06-05"},{"lineNumber":76,"author":{"gitId":"javierng2knus"},"content":" // ensures that outOfBoundIndex is still in bounds of clinic list","lastModifiedDate":"2024-03-11"},{"lineNumber":77,"author":{"gitId":"javierng2knus"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getClinic().getPersonList().size());","lastModifiedDate":"2024-03-11"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":79,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":" DeleteCommand deleteFirstCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08"},{"lineNumber":87,"author":{"gitId":"-"},"content":" DeleteCommand deleteSecondCommand \u003d new DeleteCommand(INDEX_SECOND_PERSON);","lastModifiedDate":"2018-08-08"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":" DeleteCommand deleteFirstCommandCopy \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(targetIndex);","lastModifiedDate":"2019-02-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":" String expected \u003d DeleteCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertEquals(expected, deleteCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05"},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":117,"author":{"gitId":"-"},"content":" private void showNoPerson(Model model) {","lastModifiedDate":"2017-06-05"},{"lineNumber":118,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2017-06-12"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertTrue(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2018-02-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":122,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"javierng2knus":2,"MaYuehan":17,"-":103}},{"path":"src/test/java/vitalconnect/logic/commands/DeleteContactCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"package vitalconnect.logic.commands;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.testutil.TypicalPersons.getTypicalClinic;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"import java.util.List;","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.commons.core.GuiSettings;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.logic.Messages;","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.Appointment;","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.Clinic;","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.ModelManager;","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.ReadOnlyClinic;","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.UserPrefs;","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.ContactInformation;","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.identificationinformation.Nric;","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.person.medicalinformation.MedicalInformation;","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.testutil.PersonBuilder;","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"Ella-e"},"content":"public class DeleteContactCommandTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" private Model model \u003d new ModelManager(getTypicalClinic(), new UserPrefs(), new ArrayList\u003c\u003e());","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"Ella-e"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"Ella-e"},"content":" public void constructor_nullContactInformation_throwsNullPointerException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"Ella-e"},"content":" assertThrows(NullPointerException.class, () -\u003e new DeleteContactCommand(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"Ella-e"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"Ella-e"},"content":" public void execute_personNotFind_failure() {","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"Ella-e"},"content":" assertThrows(CommandException.class, Messages.MESSAGE_PERSON_NOT_FOUND, () -\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"Ella-e"},"content":" new DeleteContactCommand(new Nric(\"S2519229Z\")).execute(model));","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"Ella-e"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"Ella-e"},"content":" public void execute_deleteContactInformation_success() throws CommandException {","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"Ella-e"},"content":" ModelStubHasOnePersonWithNoneEmptyCI modelStub \u003d new ModelStubHasOnePersonWithNoneEmptyCI();","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"Ella-e"},"content":" Person validPerson \u003d modelStub.findPersonByNric(new Nric(\"S2519229Z\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"Ella-e"},"content":" CommandResult commandResult \u003d new DeleteContactCommand(validPerson.getIdentificationInformation().getNric())","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"Ella-e"},"content":" .execute(modelStub);","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"Ella-e"},"content":" assertEquals(DeleteContactCommand.MESSAGE_SUCCESS,","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"Ella-e"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"Ella-e"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"Ella-e"},"content":" public void equalsTest() {","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"Ella-e"},"content":" Nric nric \u003d new Nric(\"S2519229Z\");","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"Ella-e"},"content":" DeleteContactCommand command \u003d new DeleteContactCommand(nric);","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"Ella-e"},"content":" // same object, equal","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"Ella-e"},"content":" assertTrue(command.equals(command));","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"Ella-e"},"content":" // same nric, same command","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"Ella-e"},"content":" assertTrue(command.equals(new DeleteContactCommand(new Nric(\"S2519229Z\"))));","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"Ella-e"},"content":" // different type, not same command","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"Ella-e"},"content":" assertFalse(command.equals(\"abc\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"Ella-e"},"content":" // null, not same command","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"Ella-e"},"content":" assertFalse(command.equals(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"Ella-e"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"Ella-e"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"Ella-e"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"Ella-e"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"Ella-e"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"Ella-e"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":88,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":90,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"Ella-e"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"Ella-e"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"Ella-e"},"content":" public Path getClinicFilePath() {","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"Ella-e"},"content":" public void setClinicFilePath(Path clinicFilePath) {","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":109,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"Ella-e"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"Ella-e"},"content":" public void setClinic(ReadOnlyClinic newData) {","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"Ella-e"},"content":" public ReadOnlyClinic getClinic() {","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"Ella-e"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":129,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":130,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"Ella-e"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":135,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":136,"author":{"gitId":"Ella-e"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":138,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":139,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":140,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":141,"author":{"gitId":"Ella-e"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":143,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":144,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":145,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"Ella-e"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2024-03-17"},{"lineNumber":147,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":148,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":149,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":150,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":151,"author":{"gitId":"Ella-e"},"content":" public boolean doesPersonExist(String name) {","lastModifiedDate":"2024-03-17"},{"lineNumber":152,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":153,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":154,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":155,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":156,"author":{"gitId":"MaYuehan"},"content":" public boolean doesIcExist(String name) {","lastModifiedDate":"2024-03-23"},{"lineNumber":157,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":158,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":159,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":160,"author":{"gitId":"Ella-e"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":161,"author":{"gitId":"Ella-e"},"content":" public void addAppointment(Appointment appointment) {","lastModifiedDate":"2024-03-17"},{"lineNumber":162,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":163,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":164,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":165,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":166,"author":{"gitId":"MaYuehan"},"content":" public void setAppointments(List\u003cAppointment\u003e appointments) {","lastModifiedDate":"2024-03-23"},{"lineNumber":167,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":168,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":169,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":170,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":171,"author":{"gitId":"Ella-e"},"content":" public ObservableList\u003cAppointment\u003e getFilteredAppointmentList() {","lastModifiedDate":"2024-03-17"},{"lineNumber":172,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":173,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":174,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":175,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":176,"author":{"gitId":"Ella-e"},"content":" public void deleteAppointment(Appointment appointment) {","lastModifiedDate":"2024-03-17"},{"lineNumber":177,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":178,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":179,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":180,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":181,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":182,"author":{"gitId":"Ella-e"},"content":" public Person findPersonByNric(Nric nric) {","lastModifiedDate":"2024-03-17"},{"lineNumber":183,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":184,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":185,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":186,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":187,"author":{"gitId":"Ella-e"},"content":" public void updatePersonContactInformation(Nric nric, ContactInformation contactInformation) {","lastModifiedDate":"2024-03-17"},{"lineNumber":188,"author":{"gitId":"Ella-e"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":189,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":190,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":191,"author":{"gitId":"SeaHogs"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":192,"author":{"gitId":"SeaHogs"},"content":" * @param nric","lastModifiedDate":"2024-03-18"},{"lineNumber":193,"author":{"gitId":"SeaHogs"},"content":" * @param medicalInformation","lastModifiedDate":"2024-03-18"},{"lineNumber":194,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":195,"author":{"gitId":"SeaHogs"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":196,"author":{"gitId":"SeaHogs"},"content":" public void updatePersonMedicalInformation(Nric nric, MedicalInformation medicalInformation) {","lastModifiedDate":"2024-03-18"},{"lineNumber":197,"author":{"gitId":"SeaHogs"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-18"},{"lineNumber":198,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":199,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":200,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":201,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":202,"author":{"gitId":"Ella-e"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":203,"author":{"gitId":"Ella-e"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2024-03-17"},{"lineNumber":204,"author":{"gitId":"Ella-e"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":205,"author":{"gitId":"Ella-e"},"content":" private class ModelStubHasOnePersonWithNoneEmptyCI extends ModelStub {","lastModifiedDate":"2024-03-17"},{"lineNumber":206,"author":{"gitId":"Ella-e"},"content":" final Person person \u003d new PersonBuilder().withEmail(\"abc@email.com\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":207,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":208,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":209,"author":{"gitId":"Ella-e"},"content":" public Person findPersonByNric(Nric nric) {","lastModifiedDate":"2024-03-17"},{"lineNumber":210,"author":{"gitId":"Ella-e"},"content":" return this.person;","lastModifiedDate":"2024-03-17"},{"lineNumber":211,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":212,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":213,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":214,"author":{"gitId":"Ella-e"},"content":" public ReadOnlyClinic getClinic() {","lastModifiedDate":"2024-03-17"},{"lineNumber":215,"author":{"gitId":"Ella-e"},"content":" return new Clinic();","lastModifiedDate":"2024-03-17"},{"lineNumber":216,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":217,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":218,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":219,"author":{"gitId":"Ella-e"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2024-03-17"},{"lineNumber":220,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":221,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":222,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":223,"author":{"gitId":"Ella-e"},"content":" public void updatePersonContactInformation(Nric nric, ContactInformation contactInformation) {","lastModifiedDate":"2024-03-17"},{"lineNumber":224,"author":{"gitId":"Ella-e"},"content":" this.person.setContactInformation(contactInformation);","lastModifiedDate":"2024-03-17"},{"lineNumber":225,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":226,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":227,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"MaYuehan":13,"Ella-e":204,"SeaHogs":10}},{"path":"src/test/java/vitalconnect/logic/commands/EditCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.commands;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.TypicalPersons.getTypicalClinic;","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.core.index.Index;","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.Messages;","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Clinic;","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.ModelManager;","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.UserPrefs;","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.testutil.PersonBuilder;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":" private Model model \u003d new ModelManager(getTypicalClinic(), new UserPrefs(), new ArrayList\u003c\u003e());","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":39,"author":{"gitId":"SeaHogs"},"content":" // the following 3 test cases currently does not work, changed to pass gradle test","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"-"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"SeaHogs"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"SeaHogs"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPerson, descriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":" Model expectedModel \u003d new ModelManager(new Clinic(model.getClinic()), new UserPrefs(), new ArrayList\u003c\u003e());","lastModifiedDate":"2024-03-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"SeaHogs"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, model);","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, new EditPersonDescriptor());","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"MaYuehan"},"content":" Model expectedModel \u003d new ModelManager(new Clinic(model.getClinic()), new UserPrefs(), new ArrayList\u003c\u003e());","lastModifiedDate":"2024-03-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"SeaHogs"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, model);","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder(personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"MaYuehan"},"content":" Model expectedModel \u003d new ModelManager(new Clinic(model.getClinic()), new UserPrefs(), new ArrayList\u003c\u003e());","lastModifiedDate":"2024-03-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2024-03-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"SeaHogs"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, model);","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-19"},{"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_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":91,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05"},{"lineNumber":92,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25"},{"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 execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":99,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":101,"author":{"gitId":"javierng2knus"},"content":" // edit person in filtered list into a duplicate in clinic","lastModifiedDate":"2024-03-11"},{"lineNumber":102,"author":{"gitId":"javierng2knus"},"content":" Person personInList \u003d model.getClinic().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2024-03-11"},{"lineNumber":103,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","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_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":111,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18"},{"lineNumber":112,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22"},{"lineNumber":113,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":118,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18"},{"lineNumber":119,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18"},{"lineNumber":120,"author":{"gitId":"javierng2knus"},"content":" * but smaller than size of clinic","lastModifiedDate":"2024-03-11"},{"lineNumber":121,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":124,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":125,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18"},{"lineNumber":126,"author":{"gitId":"javierng2knus"},"content":" // ensures that outOfBoundIndex is still in bounds of clinic list","lastModifiedDate":"2024-03-11"},{"lineNumber":127,"author":{"gitId":"javierng2knus"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getClinic().getPersonList().size());","lastModifiedDate":"2024-03-11"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":129,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":137,"author":{"gitId":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2018-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":147,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":150,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":151,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":153,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":154,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2017-05-25"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":156,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2017-05-25"},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":160,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2019-02-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08"}],"authorContributionMap":{"javierng2knus":5,"MaYuehan":26,"-":133,"SeaHogs":6}},{"path":"src/test/java/vitalconnect/logic/commands/EditPersonDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.commands;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"javierng2knus"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.VALID_NRIC_BOB;","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorTest {","lastModifiedDate":"2017-05-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptorWithSameValues \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" EditPersonDescriptor editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":40,"author":{"gitId":"javierng2knus"},"content":" // different nric -\u003e returns false","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"javierng2knus"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withNric(VALID_NRIC_BOB).build();","lastModifiedDate":"2024-03-15"},{"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":"","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"javierng2knus"},"content":" + editPersonDescriptor.getName().orElse(null) + \", nric\u003d\"","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"SeaHogs"},"content":" + editPersonDescriptor.getNric().orElse(null) + \"}\";","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"javierng2knus":4,"MaYuehan":6,"-":42,"SeaHogs":1}},{"path":"src/test/java/vitalconnect/logic/commands/ExitCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.commands;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.commands.ExitCommand.MESSAGE_EXIT_ACKNOWLEDGEMENT;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.ModelManager;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class ExitCommandTest {","lastModifiedDate":"2017-06-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-12-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public void execute_exit_success() {","lastModifiedDate":"2017-06-08"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT,","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" false, true, CommandResult.Type.SHOW_PERSONS);","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ExitCommand(), model, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08"}],"authorContributionMap":{"MaYuehan":7,"-":14}},{"path":"src/test/java/vitalconnect/logic/commands/FindCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.commands;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import static vitalconnect.logic.Messages.MESSAGE_PERSONS_LISTED_OVERVIEW;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.TypicalPersons.CARL;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.TypicalPersons.ELLE;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.TypicalPersons.FIONA;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.TypicalPersons.getTypicalClinic;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.ModelManager;","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.UserPrefs;","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.identificationinformation.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":" private Model model \u003d new ModelManager(getTypicalClinic(), new UserPrefs(), new ArrayList\u003c\u003e());","lastModifiedDate":"2024-03-23"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalClinic(), new UserPrefs(), new ArrayList\u003c\u003e());","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" FindCommand findFirstCommand \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" FindCommand findSecondCommand \u003d new FindCommand(secondPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" FindCommand findFirstCommandCopy \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","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-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void execute_zeroKeywords_noPersonFound() {","lastModifiedDate":"2017-08-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2017-06-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2018-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void execute_multipleKeywords_multiplePersonsFound() {","lastModifiedDate":"2017-08-15"},{"lineNumber":70,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2017-06-12"},{"lineNumber":71,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\"Kurz Elle Kunz\");","lastModifiedDate":"2018-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"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":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" FindCommand findCommand \u003d new FindCommand(predicate);","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.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-12"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2018-08-08"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":89,"author":{"gitId":"-"},"content":" private NameContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2018-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":" return new NameContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2018-08-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"MaYuehan":14,"-":78}},{"path":"src/test/java/vitalconnect/logic/commands/HelpCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.commands;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.commands.HelpCommand.SHOWING_HELP_MESSAGE;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.ModelManager;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class HelpCommandTest {","lastModifiedDate":"2017-06-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public void execute_help_success() {","lastModifiedDate":"2017-06-08"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(SHOWING_HELP_MESSAGE,","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" true, false, CommandResult.Type.SHOW_PERSONS);","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertCommandSuccess(new HelpCommand(), model, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08"}],"authorContributionMap":{"MaYuehan":7,"-":14}},{"path":"src/test/java/vitalconnect/logic/commands/ListAptCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.commands;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import java.util.List;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.core.GuiSettings;","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Appointment;","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.ReadOnlyClinic;","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.ContactInformation;","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.identificationinformation.Nric;","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.person.medicalinformation.MedicalInformation;","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":"public class ListAptCommandTest {","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" public void execute_noAppointmentsInList_showsNoAppointmentsMessage() {","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" ModelStubEmpty modelStub \u003d new ModelStubEmpty();","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" ListAptCommand listAptCommand \u003d new ListAptCommand();","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" CommandResult commandResult \u003d listAptCommand.execute(modelStub);","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" assertEquals(\"No appointment is in the list.\", commandResult.getFeedbackToUser());","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" public void execute_appointmentsInList_showsAppointments() {","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":" ModelStubWithAppointments modelStub \u003d new ModelStubWithAppointments();","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" modelStub.addAppointment(new Appointment(\"John Doe\", \"S1234567D\", LocalDateTime.now()));","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":" modelStub.addAppointment(new Appointment(\"Jane Doe\", \"S1234567D\",","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":" LocalDateTime.now().plusDays(1)));","lastModifiedDate":"2024-03-23"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":" ListAptCommand listAptCommand \u003d new ListAptCommand();","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":" CommandResult commandResult \u003d listAptCommand.execute(modelStub);","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":" // Expected result should contain the appointments added above","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":" String expectedMessage \u003d ListAptCommand.MESSAGE_SUCCESS;","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":" assertEquals(expectedMessage, commandResult.getFeedbackToUser());","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":" * A Model stub that has no appointments.","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":" private class ModelStubEmpty extends ModelStub {","lastModifiedDate":"2024-03-13"},{"lineNumber":56,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"MaYuehan"},"content":" public ObservableList\u003cAppointment\u003e getFilteredAppointmentList() {","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"MaYuehan"},"content":" return FXCollections.observableArrayList();","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":60,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":61,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":62,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":63,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":64,"author":{"gitId":"MaYuehan"},"content":" * A Model stub that contains and allows manipulation of appointments.","lastModifiedDate":"2024-03-13"},{"lineNumber":65,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":66,"author":{"gitId":"MaYuehan"},"content":" private class ModelStubWithAppointments extends ModelStub {","lastModifiedDate":"2024-03-13"},{"lineNumber":67,"author":{"gitId":"MaYuehan"},"content":" final List\u003cAppointment\u003e appointments \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-13"},{"lineNumber":68,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":69,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":70,"author":{"gitId":"MaYuehan"},"content":" public void addAppointment(Appointment appointment) {","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"MaYuehan"},"content":" appointments.add(appointment);","lastModifiedDate":"2024-03-13"},{"lineNumber":72,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":73,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":74,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":75,"author":{"gitId":"MaYuehan"},"content":" public ObservableList\u003cAppointment\u003e getFilteredAppointmentList() {","lastModifiedDate":"2024-03-13"},{"lineNumber":76,"author":{"gitId":"MaYuehan"},"content":" return FXCollections.observableArrayList(appointments);","lastModifiedDate":"2024-03-13"},{"lineNumber":77,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":78,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":79,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":80,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":81,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":82,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":83,"author":{"gitId":"MaYuehan"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2024-03-13"},{"lineNumber":84,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":85,"author":{"gitId":"MaYuehan"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2024-03-13"},{"lineNumber":86,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":87,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":88,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":89,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":90,"author":{"gitId":"MaYuehan"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2024-03-13"},{"lineNumber":91,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":92,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":93,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":94,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":95,"author":{"gitId":"MaYuehan"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2024-03-13"},{"lineNumber":96,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":97,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":98,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":99,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":100,"author":{"gitId":"MaYuehan"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2024-03-13"},{"lineNumber":101,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":102,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":103,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":104,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":105,"author":{"gitId":"MaYuehan"},"content":" public Path getClinicFilePath() {","lastModifiedDate":"2024-03-13"},{"lineNumber":106,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":107,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":108,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":109,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":110,"author":{"gitId":"MaYuehan"},"content":" public void setClinicFilePath(Path clinicFilePath) {","lastModifiedDate":"2024-03-13"},{"lineNumber":111,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":112,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":113,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":114,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":115,"author":{"gitId":"MaYuehan"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2024-03-13"},{"lineNumber":116,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":117,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":118,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":119,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":120,"author":{"gitId":"MaYuehan"},"content":" public void setClinic(ReadOnlyClinic newData) {","lastModifiedDate":"2024-03-13"},{"lineNumber":121,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":122,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":123,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":124,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":125,"author":{"gitId":"MaYuehan"},"content":" public ReadOnlyClinic getClinic() {","lastModifiedDate":"2024-03-13"},{"lineNumber":126,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":127,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":128,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":129,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":130,"author":{"gitId":"MaYuehan"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2024-03-13"},{"lineNumber":131,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":132,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":133,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":134,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":135,"author":{"gitId":"MaYuehan"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2024-03-13"},{"lineNumber":136,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":137,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":138,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":139,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":140,"author":{"gitId":"MaYuehan"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2024-03-13"},{"lineNumber":141,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":142,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":143,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":144,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":145,"author":{"gitId":"MaYuehan"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2024-03-13"},{"lineNumber":146,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":147,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":148,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":149,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":150,"author":{"gitId":"MaYuehan"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2024-03-13"},{"lineNumber":151,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":152,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":153,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":154,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":155,"author":{"gitId":"MaYuehan"},"content":" public boolean doesPersonExist(String name) {","lastModifiedDate":"2024-03-13"},{"lineNumber":156,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":157,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":158,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":159,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":160,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":161,"author":{"gitId":"MaYuehan"},"content":" public boolean doesIcExist(String name) {","lastModifiedDate":"2024-03-23"},{"lineNumber":162,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":163,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":164,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":165,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":166,"author":{"gitId":"MaYuehan"},"content":" public void addAppointment(Appointment appointment) {","lastModifiedDate":"2024-03-13"},{"lineNumber":167,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":168,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":169,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":170,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":171,"author":{"gitId":"MaYuehan"},"content":" public void setAppointments(List\u003cAppointment\u003e appointments) {","lastModifiedDate":"2024-03-23"},{"lineNumber":172,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":173,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":174,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":175,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":176,"author":{"gitId":"MaYuehan"},"content":" public ObservableList\u003cAppointment\u003e getFilteredAppointmentList() {","lastModifiedDate":"2024-03-13"},{"lineNumber":177,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":178,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":179,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":180,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":181,"author":{"gitId":"MaYuehan"},"content":" public void deleteAppointment(Appointment appointment) {","lastModifiedDate":"2024-03-13"},{"lineNumber":182,"author":{"gitId":"MaYuehan"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":183,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":184,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":185,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":186,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":187,"author":{"gitId":"Ella-e"},"content":" public Person findPersonByNric(Nric nric) {","lastModifiedDate":"2024-03-17"},{"lineNumber":188,"author":{"gitId":"Ella-e"},"content":" return null;","lastModifiedDate":"2024-03-17"},{"lineNumber":189,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":190,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":191,"author":{"gitId":"Ella-e"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":192,"author":{"gitId":"Ella-e"},"content":" public void updatePersonContactInformation(Nric nric, ContactInformation contactInformation) {","lastModifiedDate":"2024-03-17"},{"lineNumber":193,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":194,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":195,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":196,"author":{"gitId":"SeaHogs"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":197,"author":{"gitId":"SeaHogs"},"content":" * @param nric","lastModifiedDate":"2024-03-18"},{"lineNumber":198,"author":{"gitId":"SeaHogs"},"content":" * @param medicalInformation","lastModifiedDate":"2024-03-18"},{"lineNumber":199,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":200,"author":{"gitId":"SeaHogs"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":201,"author":{"gitId":"SeaHogs"},"content":" public void updatePersonMedicalInformation(Nric nric, MedicalInformation medicalInformation) {","lastModifiedDate":"2024-03-18"},{"lineNumber":202,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":203,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":204,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":205,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":206,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":207,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"MaYuehan":186,"Ella-e":12,"SeaHogs":9}},{"path":"src/test/java/vitalconnect/logic/commands/ListCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.commands;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.TypicalPersons.getTypicalClinic;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-23"},{"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":"MaYuehan"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.ModelManager;","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.UserPrefs;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":" model \u003d new ModelManager(getTypicalClinic(), new UserPrefs(), new ArrayList\u003c\u003e());","lastModifiedDate":"2024-03-23"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" expectedModel \u003d new ModelManager(model.getClinic(), new UserPrefs(), new ArrayList\u003c\u003e());","lastModifiedDate":"2024-03-23"},{"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":"-"},"content":" public void execute_listIsNotFiltered_showsSameList() {","lastModifiedDate":"2017-08-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ListCommand(), model, ListCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"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":"-"},"content":" public void execute_listIsFiltered_showsEverything() {","lastModifiedDate":"2017-08-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ListCommand(), model, ListCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"MaYuehan":11,"-":30}},{"path":"src/test/java/vitalconnect/logic/commands/ListContactCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"package vitalconnect.logic.commands;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.testutil.TypicalPersons.getTypicalClinic;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-23"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.ModelManager;","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.UserPrefs;","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":"public class ListContactCommandTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":" private Model model;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":" private Model expectedModel;","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"Ella-e"},"content":" @BeforeEach","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"Ella-e"},"content":" public void setUp() {","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":" model \u003d new ModelManager(getTypicalClinic(), new UserPrefs(), new ArrayList\u003c\u003e());","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" expectedModel \u003d new ModelManager(model.getClinic(), new UserPrefs(), new ArrayList\u003c\u003e());","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"Ella-e"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"Ella-e"},"content":" public void execute_listIsNotFiltered_showsSameList() {","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"Ella-e"},"content":" assertCommandSuccess(new ListCommand(), model, ListCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"Ella-e"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"Ella-e"},"content":" public void execute_listIsFiltered_showsEverything() {","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"Ella-e"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"Ella-e"},"content":" assertCommandSuccess(new ListCommand(), model, ListCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"MaYuehan":4,"Ella-e":33}},{"path":"src/test/java/vitalconnect/logic/parser/AddCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.parser;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.INVALID_NRIC_DESC;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.NRIC_DESC_AMY;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.NRIC_DESC_BOB;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.VALID_NRIC_BOB;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"javierng2knus"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_NRIC;","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.Messages;","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.AddCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.identificationinformation.Name;","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"javierng2knus"},"content":"import vitalconnect.model.person.identificationinformation.Nric;","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":28,"author":{"gitId":"SeaHogs"},"content":" // @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"SeaHogs"},"content":" // public void parse_allFieldsPresent_success() {","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"SeaHogs"},"content":" // Person expectedPerson \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"SeaHogs"},"content":" //","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"SeaHogs"},"content":" // // whitespace only preamble","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"SeaHogs"},"content":" // assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"SeaHogs"},"content":" // + NRIC_DESC_BOB, new AddCommand(expectedPerson));","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"SeaHogs"},"content":" //","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"SeaHogs"},"content":" //","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"SeaHogs"},"content":" // // multiple tags - all accepted","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"SeaHogs"},"content":" // Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"SeaHogs"},"content":" // assertParseSuccess(parser,","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"SeaHogs"},"content":" // NAME_DESC_BOB + NRIC_DESC_BOB,","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"SeaHogs"},"content":" // new AddCommand(expectedPersonMultipleTags));","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"SeaHogs"},"content":" // }","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":46,"author":{"gitId":"javierng2knus"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + NRIC_DESC_BOB","lastModifiedDate":"2024-03-15"},{"lineNumber":47,"author":{"gitId":"javierng2knus"},"content":" + TAG_DESC_FRIEND;","lastModifiedDate":"2024-03-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":51,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":53,"author":{"gitId":"javierng2knus"},"content":" // multiple nric","lastModifiedDate":"2024-03-15"},{"lineNumber":54,"author":{"gitId":"javierng2knus"},"content":" assertParseFailure(parser, NRIC_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-15"},{"lineNumber":55,"author":{"gitId":"javierng2knus"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NRIC));","lastModifiedDate":"2024-03-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":59,"author":{"gitId":"javierng2knus"},"content":" validExpectedPersonString + NAME_DESC_AMY + NRIC_DESC_AMY","lastModifiedDate":"2024-03-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":" + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":61,"author":{"gitId":"javierng2knus"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_NRIC));","lastModifiedDate":"2024-03-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":69,"author":{"gitId":"javierng2knus"},"content":" // invalid nric","lastModifiedDate":"2024-03-15"},{"lineNumber":70,"author":{"gitId":"javierng2knus"},"content":" assertParseFailure(parser, INVALID_NRIC_DESC + validExpectedPersonString,","lastModifiedDate":"2024-03-15"},{"lineNumber":71,"author":{"gitId":"javierng2knus"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NRIC));","lastModifiedDate":"2024-03-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":77,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":79,"author":{"gitId":"javierng2knus"},"content":" // invalid nric","lastModifiedDate":"2024-03-15"},{"lineNumber":80,"author":{"gitId":"javierng2knus"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NRIC_DESC,","lastModifiedDate":"2024-03-15"},{"lineNumber":81,"author":{"gitId":"javierng2knus"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NRIC));","lastModifiedDate":"2024-03-15"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":84,"author":{"gitId":"SeaHogs"},"content":" // @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"SeaHogs"},"content":" // public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"SeaHogs"},"content":" // // zero tags","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"SeaHogs"},"content":" // Person expectedPerson \u003d new PersonBuilder(AMY).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"SeaHogs"},"content":" // assertParseSuccess(parser, NAME_DESC_AMY + NRIC_DESC_AMY,","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"SeaHogs"},"content":" // new AddCommand(expectedPerson));","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"SeaHogs"},"content":" // }","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":94,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":96,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":97,"author":{"gitId":"javierng2knus"},"content":" assertParseFailure(parser, VALID_NAME_BOB + NRIC_DESC_BOB,","lastModifiedDate":"2024-03-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":100,"author":{"gitId":"javierng2knus"},"content":" // missing nric prefix","lastModifiedDate":"2024-03-15"},{"lineNumber":101,"author":{"gitId":"javierng2knus"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_NRIC_BOB,","lastModifiedDate":"2024-03-15"},{"lineNumber":102,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":104,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15"},{"lineNumber":105,"author":{"gitId":"javierng2knus"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_NRIC_BOB,","lastModifiedDate":"2024-03-15"},{"lineNumber":106,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":111,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":112,"author":{"gitId":"SeaHogs"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + NRIC_DESC_BOB, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":114,"author":{"gitId":"javierng2knus"},"content":" // invalid nric","lastModifiedDate":"2024-03-15"},{"lineNumber":115,"author":{"gitId":"SeaHogs"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_NRIC_DESC, Nric.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":118,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":119,"author":{"gitId":"javierng2knus"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + INVALID_NRIC_DESC,","lastModifiedDate":"2024-03-15"},{"lineNumber":120,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":123,"author":{"gitId":"SeaHogs"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + NRIC_DESC_BOB,","lastModifiedDate":"2024-03-18"},{"lineNumber":124,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":126,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"javierng2knus":21,"MaYuehan":8,"-":62,"SeaHogs":35}},{"path":"src/test/java/vitalconnect/logic/parser/AddContactCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"package vitalconnect.logic.parser;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.INVALID_NRIC_DESC;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.NRIC_DESC_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.VALID_NRIC_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.testutil.TypicalPersons.BOB_CONTACT;","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"Ella-e"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.logic.commands.AddContactCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.Address;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.Email;","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.Phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.identificationinformation.Nric;","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.testutil.PersonBuilder;","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"Ella-e"},"content":"public class AddContactCommandParserTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"Ella-e"},"content":" private AddContactCommandParser parser \u003d new AddContactCommandParser();","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"Ella-e"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"Ella-e"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"Ella-e"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB_CONTACT).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"Ella-e"},"content":" // whitespace only preamble","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"Ella-e"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NRIC_DESC_BOB + EMAIL_DESC_BOB + PHONE_DESC_BOB","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"Ella-e"},"content":" + ADDRESS_DESC_BOB, new AddContactCommand(expectedPerson.getIdentificationInformation().getNric(),","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"Ella-e"},"content":" expectedPerson.getContactInformation()));","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"Ella-e"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"Ella-e"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"Ella-e"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddContactCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"Ella-e"},"content":" // missing nric prefix","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"Ella-e"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_NRIC_BOB,","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"Ella-e"},"content":" expectedMessage);","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"Ella-e"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"Ella-e"},"content":" public void parse_allOptionsMissing_failure() {","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"Ella-e"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddContactCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"Ella-e"},"content":" // missing nric prefix","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"Ella-e"},"content":" assertParseFailure(parser, NRIC_DESC_BOB,","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"Ella-e"},"content":" expectedMessage);","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"Ella-e"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"Ella-e"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"Ella-e"},"content":" // invalid nric","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"Ella-e"},"content":" assertParseFailure(parser, INVALID_NRIC_DESC + VALID_EMAIL_BOB,","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"Ella-e"},"content":" Nric.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"Ella-e"},"content":" // invalid phone","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"Ella-e"},"content":" assertParseFailure(parser, NRIC_DESC_BOB","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"Ella-e"},"content":" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"Ella-e"},"content":" // invalid email","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"Ella-e"},"content":" assertParseFailure(parser, NRIC_DESC_BOB","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"Ella-e"},"content":" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"Ella-e"},"content":" // invalid address","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"Ella-e"},"content":" assertParseFailure(parser, NRIC_DESC_BOB","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"Ella-e"},"content":" + INVALID_ADDRESS_DESC, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"Ella-e"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"Ella-e"},"content":" assertParseFailure(parser, NRIC_DESC_BOB + INVALID_PHONE_DESC + INVALID_EMAIL_DESC,","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"Ella-e"},"content":" Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"Ella-e":83}},{"path":"src/test/java/vitalconnect/logic/parser/ArgumentTokenizerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.parser;","lastModifiedDate":"2024-03-13"},{"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":"SeaHogs"},"content":" String argsString \u003d \" some random string /t allergytag with leading and trailing spaces \";","lastModifiedDate":"2024-03-18"},{"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":{"MaYuehan":1,"-":148,"SeaHogs":1}},{"path":"src/test/java/vitalconnect/logic/parser/ClinicParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.parser;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import static vitalconnect.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-13"},{"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":"Ella-e"},"content":"import vitalconnect.logic.commands.AddContactCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.ClearCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.CreateAptCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.DeleteAptCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.logic.commands.DeleteContactCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.EditCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.ExitCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.FindCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.HelpCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.ListAptCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.ListCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.identificationinformation.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.testutil.PersonBuilder;","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.testutil.PersonUtil;","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"javierng2knus"},"content":"public class ClinicParserTest {","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":39,"author":{"gitId":"javierng2knus"},"content":" private final ClinicParser parser \u003d new ClinicParser();","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":41,"author":{"gitId":"SeaHogs"},"content":" // @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"SeaHogs"},"content":" // public void parseCommand_add() throws Exception {","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"SeaHogs"},"content":" // Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"SeaHogs"},"content":" // AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"SeaHogs"},"content":" // assertEquals(new AddCommand(person), command);","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"SeaHogs"},"content":" // }","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2017-06-27"},{"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-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2018-03-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12"},{"lineNumber":79,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"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_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23"},{"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_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":106,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":107,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":108,"author":{"gitId":"MaYuehan"},"content":" public void parseCommand_createApt() throws Exception {","lastModifiedDate":"2024-03-13"},{"lineNumber":109,"author":{"gitId":"MaYuehan"},"content":" String getPatientIc \u003d \"S1234567D\";","lastModifiedDate":"2024-03-23"},{"lineNumber":110,"author":{"gitId":"MaYuehan"},"content":" String dateTimeStr \u003d \"02/02/2024 1330\";","lastModifiedDate":"2024-03-13"},{"lineNumber":111,"author":{"gitId":"MaYuehan"},"content":" String inputCommand \u003d CreateAptCommand.COMMAND_WORD + \" \" + getPatientIc + \" /time \" + dateTimeStr;","lastModifiedDate":"2024-03-23"},{"lineNumber":112,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":113,"author":{"gitId":"MaYuehan"},"content":" CreateAptCommand expectedCommand \u003d new CreateAptCommand(getPatientIc, dateTimeStr);","lastModifiedDate":"2024-03-23"},{"lineNumber":114,"author":{"gitId":"MaYuehan"},"content":" CreateAptCommand parsedCommand \u003d (CreateAptCommand) parser.parseCommand(inputCommand);","lastModifiedDate":"2024-03-13"},{"lineNumber":115,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":116,"author":{"gitId":"MaYuehan"},"content":" assertEquals(expectedCommand.getPatientIc(), parsedCommand.getPatientIc());","lastModifiedDate":"2024-03-23"},{"lineNumber":117,"author":{"gitId":"MaYuehan"},"content":" assertEquals(expectedCommand.getDateTimeStr(), parsedCommand.getDateTimeStr());","lastModifiedDate":"2024-03-13"},{"lineNumber":118,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":119,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":120,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":121,"author":{"gitId":"MaYuehan"},"content":" public void parseCommand_listApt() throws Exception {","lastModifiedDate":"2024-03-13"},{"lineNumber":122,"author":{"gitId":"MaYuehan"},"content":" assertTrue(parser.parseCommand(ListAptCommand.COMMAND_WORD) instanceof ListAptCommand);","lastModifiedDate":"2024-03-13"},{"lineNumber":123,"author":{"gitId":"MaYuehan"},"content":" assertTrue(parser.parseCommand(ListAptCommand.COMMAND_WORD + \" 3\") instanceof ListAptCommand);","lastModifiedDate":"2024-03-13"},{"lineNumber":124,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":125,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":126,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":127,"author":{"gitId":"MaYuehan"},"content":" public void parseCommand_deleteApt() throws Exception {","lastModifiedDate":"2024-03-13"},{"lineNumber":128,"author":{"gitId":"MaYuehan"},"content":" String input \u003d DeleteAptCommand.COMMAND_WORD + \" 1 /name John Doe\";","lastModifiedDate":"2024-03-13"},{"lineNumber":129,"author":{"gitId":"MaYuehan"},"content":" DeleteAptCommand command \u003d (DeleteAptCommand) parser.parseCommand(input);","lastModifiedDate":"2024-03-13"},{"lineNumber":130,"author":{"gitId":"MaYuehan"},"content":" int resIndex \u003d command.getIndex();","lastModifiedDate":"2024-03-13"},{"lineNumber":131,"author":{"gitId":"MaYuehan"},"content":" String resName \u003d command.getPatientName();","lastModifiedDate":"2024-03-13"},{"lineNumber":132,"author":{"gitId":"MaYuehan"},"content":" assertEquals(1, resIndex);","lastModifiedDate":"2024-03-13"},{"lineNumber":133,"author":{"gitId":"MaYuehan"},"content":" assertEquals(\"John Doe\", resName);","lastModifiedDate":"2024-03-13"},{"lineNumber":134,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":135,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":136,"author":{"gitId":"Ella-e"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":137,"author":{"gitId":"Ella-e"},"content":" public void parseCommand_addContact() throws ParseException {","lastModifiedDate":"2024-03-18"},{"lineNumber":138,"author":{"gitId":"Ella-e"},"content":" assertTrue(parser.parseCommand(AddContactCommand.COMMAND_WORD","lastModifiedDate":"2024-03-18"},{"lineNumber":139,"author":{"gitId":"Ella-e"},"content":" + \" ic/S7898305A p/12345678\") instanceof AddContactCommand);","lastModifiedDate":"2024-03-18"},{"lineNumber":140,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":141,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":142,"author":{"gitId":"Ella-e"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":143,"author":{"gitId":"Ella-e"},"content":" public void parseCommand_deleteContact() throws ParseException {","lastModifiedDate":"2024-03-18"},{"lineNumber":144,"author":{"gitId":"Ella-e"},"content":" assertTrue(parser.parseCommand(DeleteContactCommand.COMMAND_WORD","lastModifiedDate":"2024-03-18"},{"lineNumber":145,"author":{"gitId":"Ella-e"},"content":" + \" ic/S7898305A\") instanceof DeleteContactCommand);","lastModifiedDate":"2024-03-18"},{"lineNumber":146,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":147,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"javierng2knus":2,"MaYuehan":52,"Ella-e":14,"-":73,"SeaHogs":6}},{"path":"src/test/java/vitalconnect/logic/parser/CommandParserTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.parser;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.logic.commands.Command;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2017-07-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, pe.getMessage());","lastModifiedDate":"2017-07-06"},{"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":{"MaYuehan":3,"-":36}},{"path":"src/test/java/vitalconnect/logic/parser/CreateAptCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.parser;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.CreateAptCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"public class CreateAptCommandParserTest {","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":" private final CreateAptCommandParser parser \u003d new CreateAptCommandParser();","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":" public void parse_validArgs_returnsCreateAptCommand() throws Exception {","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" String getPatientIc \u003d \"S1234567D\";","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" String dateTimeStr \u003d \"02/02/2024 1330\";","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" String userInput \u003d getPatientIc + \" /time \" + dateTimeStr;","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" CreateAptCommand expectedCommand \u003d new CreateAptCommand(getPatientIc, dateTimeStr);","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" assertEquals(parser.parse(userInput).getPatientIc(), expectedCommand.getPatientIc());","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" assertEquals(parser.parse(userInput).getDateTimeStr(), expectedCommand.getDateTimeStr());","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" public void parse_missingDateTime_throwsParseException() {","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" String userInput \u003d \"John Doe\";","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(userInput));","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" public void parse_missingName_throwsParseException() {","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" String userInput \u003d \"02/02/2024 1330\";","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(userInput));","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":" public void parse_invalidDateTimeFormat_throwsParseException() {","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":" String ic \u003d \"S1234567D\";","lastModifiedDate":"2024-03-23"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":" String time \u003d \"02-02-2024 1330\";","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":" String userInput \u003d ic + time;","lastModifiedDate":"2024-03-23"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(userInput));","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"MaYuehan":49}},{"path":"src/test/java/vitalconnect/logic/parser/DeleteAptCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.parser;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.DeleteAptCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"public class DeleteAptCommandParserTest {","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":" private final DeleteAptCommandParser parser \u003d new DeleteAptCommandParser();","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":" public void parse_validArgs_returnsDeleteAptCommand() throws Exception {","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" String patientName \u003d \"John Doe\";","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" int validIndex \u003d 1;","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":" String userInput \u003d validIndex + \" /name \" + patientName;","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" DeleteAptCommand expectedCommand \u003d new DeleteAptCommand(validIndex, patientName);","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":" assertEquals(validIndex, expectedCommand.getIndex());","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" assertEquals(patientName, expectedCommand.getPatientName());","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" assertEquals(parser.parse(userInput).getPatientName(), expectedCommand.getPatientName());","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" assertEquals(parser.parse(userInput).getIndex(), expectedCommand.getIndex());","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" public void parse_missingIndex_throwsParseException() {","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" String userInput \u003d \"/name John Doe\";","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(userInput));","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" public void parse_missingName_throwsParseException() {","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":" int validIndex \u003d 1;","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" String userInput \u003d validIndex + \" /name \";","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(userInput));","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":" public void parse_invalidIndexFormat_throwsParseException() {","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":" String userInput \u003d \"notAnIndex /name John Doe\";","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(userInput));","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":" public void parse_invalidArgumentsOrder_throwsParseException() {","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":" String userInput \u003d \"/name John Doe 1\";","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(userInput));","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"MaYuehan":55}},{"path":"src/test/java/vitalconnect/logic/parser/DeleteCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.parser;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-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":"-"},"content":" assertParseSuccess(parser, \"1\", new DeleteCommand(INDEX_FIRST_PERSON));","lastModifiedDate":"2017-07-06"},{"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":{"MaYuehan":6,"-":26}},{"path":"src/test/java/vitalconnect/logic/parser/DeleteContactCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"package vitalconnect.logic.parser;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.NRIC_DESC_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.VALID_NRIC_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.testutil.TypicalPersons.BOB_CONTACT;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.logic.commands.DeleteContactCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.testutil.PersonBuilder;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":"public class DeleteContactCommandParserTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":" private DeleteContactCommandParser parser \u003d new DeleteContactCommandParser();","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"Ella-e"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"Ella-e"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"Ella-e"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB_CONTACT).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"Ella-e"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NRIC_DESC_BOB,","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"Ella-e"},"content":" new DeleteContactCommand(expectedPerson.getIdentificationInformation().getNric()));","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"Ella-e"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"Ella-e"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"Ella-e"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteContactCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"Ella-e"},"content":" // missing nric prefix","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"Ella-e"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_NRIC_BOB,","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"Ella-e"},"content":" expectedMessage);","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"Ella-e":37}},{"path":"src/test/java/vitalconnect/logic/parser/EditCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.parser;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"javierng2knus"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.INVALID_NRIC_DESC;","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"javierng2knus"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"javierng2knus"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.NRIC_DESC_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"javierng2knus"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.NRIC_DESC_BOB;","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"javierng2knus"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.VALID_NRIC_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"javierng2knus"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.VALID_NRIC_BOB;","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_ALLERGYTAG;","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_NRIC;","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.core.index.Index;","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.Messages;","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.EditCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.identificationinformation.Name;","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"javierng2knus"},"content":"import vitalconnect.model.person.identificationinformation.Nric;","lastModifiedDate":"2024-03-15"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":33,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":35,"author":{"gitId":"SeaHogs"},"content":" private static final String TAG_EMPTY \u003d \" \" + PREFIX_ALLERGYTAG;","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04"},{"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 parse_missingParts_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-07-06"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", 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_invalidValue_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2018-09-22"},{"lineNumber":72,"author":{"gitId":"javierng2knus"},"content":" assertParseFailure(parser, \"1\" + INVALID_NRIC_DESC, Nric.MESSAGE_CONSTRAINTS); // invalid nric","lastModifiedDate":"2024-03-15"},{"lineNumber":73,"author":{"gitId":"SeaHogs"},"content":" //assertParseFailure(parser, \"1\" + INVALID_TAG_DESC, AllergyTag.MESSAGE_CONSTRAINTS); // invalid allergytag","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":75,"author":{"gitId":"javierng2knus"},"content":" // invalid name followed by valid nric","lastModifiedDate":"2024-03-15"},{"lineNumber":76,"author":{"gitId":"javierng2knus"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + NRIC_DESC_AMY, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":78,"author":{"gitId":"javierng2knus"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_NRIC_DESC,","lastModifiedDate":"2024-03-15"},{"lineNumber":79,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"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_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":84,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":85,"author":{"gitId":"javierng2knus"},"content":" String userInput \u003d targetIndex.getOneBased() + NRIC_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2024-03-15"},{"lineNumber":86,"author":{"gitId":"javierng2knus"},"content":" + NAME_DESC_AMY + TAG_DESC_FRIEND;","lastModifiedDate":"2024-03-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":88,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-05-04"},{"lineNumber":89,"author":{"gitId":"SeaHogs"},"content":" .withNric(VALID_NRIC_BOB).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":97,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":98,"author":{"gitId":"javierng2knus"},"content":" String userInput \u003d targetIndex.getOneBased() + NRIC_DESC_BOB + NAME_DESC_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":100,"author":{"gitId":"javierng2knus"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withNric(VALID_NRIC_BOB)","lastModifiedDate":"2024-03-15"},{"lineNumber":101,"author":{"gitId":"javierng2knus"},"content":" .withName(VALID_NAME_AMY).build();","lastModifiedDate":"2024-03-15"},{"lineNumber":102,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":109,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04"},{"lineNumber":110,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":111,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":112,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":113,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":116,"author":{"gitId":"javierng2knus"},"content":" // nric","lastModifiedDate":"2024-03-15"},{"lineNumber":117,"author":{"gitId":"javierng2knus"},"content":" userInput \u003d targetIndex.getOneBased() + NRIC_DESC_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":118,"author":{"gitId":"javierng2knus"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withNric(VALID_NRIC_AMY).build();","lastModifiedDate":"2024-03-15"},{"lineNumber":119,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","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":"SeaHogs"},"content":" // // tags","lastModifiedDate":"2024-03-18"},{"lineNumber":123,"author":{"gitId":"SeaHogs"},"content":" // userInput \u003d targetIndex.getOneBased() + TAG_DESC_FRIEND;","lastModifiedDate":"2024-03-18"},{"lineNumber":124,"author":{"gitId":"SeaHogs"},"content":" // descriptor \u003d new EditPersonDescriptorBuilder().build();","lastModifiedDate":"2024-03-18"},{"lineNumber":125,"author":{"gitId":"SeaHogs"},"content":" // expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-18"},{"lineNumber":126,"author":{"gitId":"SeaHogs"},"content":" // assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-18"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":130,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14"},{"lineNumber":132,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-07-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":136,"author":{"gitId":"javierng2knus"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_BOB + INVALID_NRIC_DESC;","lastModifiedDate":"2024-03-15"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":138,"author":{"gitId":"javierng2knus"},"content":" assertParseFailure(parser, userInput, Nric.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":140,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14"},{"lineNumber":141,"author":{"gitId":"javierng2knus"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_NRIC_DESC + NAME_DESC_BOB;","lastModifiedDate":"2024-03-15"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":143,"author":{"gitId":"javierng2knus"},"content":" assertParseFailure(parser, userInput, Nric.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":145,"author":{"gitId":"javierng2knus"},"content":" // multiple valid fields repeated","lastModifiedDate":"2024-03-15"},{"lineNumber":146,"author":{"gitId":"javierng2knus"},"content":" userInput \u003d targetIndex.getOneBased() + NRIC_DESC_AMY + NRIC_DESC_AMY","lastModifiedDate":"2024-03-15"},{"lineNumber":147,"author":{"gitId":"javierng2knus"},"content":" + TAG_DESC_FRIEND + NRIC_DESC_AMY + TAG_DESC_FRIEND","lastModifiedDate":"2024-03-15"},{"lineNumber":148,"author":{"gitId":"javierng2knus"},"content":" + NRIC_DESC_BOB + NRIC_DESC_BOB + TAG_DESC_HUSBAND;","lastModifiedDate":"2024-03-15"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":150,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":151,"author":{"gitId":"javierng2knus"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NRIC));","lastModifiedDate":"2024-03-15"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":153,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14"},{"lineNumber":154,"author":{"gitId":"javierng2knus"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_NRIC_DESC + INVALID_NRIC_DESC;","lastModifiedDate":"2024-03-15"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":156,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":157,"author":{"gitId":"javierng2knus"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NRIC));","lastModifiedDate":"2024-03-15"},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":160,"author":{"gitId":"SeaHogs"},"content":" // @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":161,"author":{"gitId":"SeaHogs"},"content":" // public void parse_resetTags_success() {","lastModifiedDate":"2024-03-18"},{"lineNumber":162,"author":{"gitId":"SeaHogs"},"content":" // Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2024-03-18"},{"lineNumber":163,"author":{"gitId":"SeaHogs"},"content":" // String userInput \u003d targetIndex.getOneBased() + TAG_EMPTY;","lastModifiedDate":"2024-03-18"},{"lineNumber":164,"author":{"gitId":"SeaHogs"},"content":" //","lastModifiedDate":"2024-03-18"},{"lineNumber":165,"author":{"gitId":"SeaHogs"},"content":" // EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().build();","lastModifiedDate":"2024-03-18"},{"lineNumber":166,"author":{"gitId":"SeaHogs"},"content":" // EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-18"},{"lineNumber":167,"author":{"gitId":"SeaHogs"},"content":" //","lastModifiedDate":"2024-03-18"},{"lineNumber":168,"author":{"gitId":"SeaHogs"},"content":" // assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-18"},{"lineNumber":169,"author":{"gitId":"SeaHogs"},"content":" // }","lastModifiedDate":"2024-03-18"},{"lineNumber":170,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04"}],"authorContributionMap":{"javierng2knus":30,"MaYuehan":19,"-":101,"SeaHogs":20}},{"path":"src/test/java/vitalconnect/logic/parser/FindCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.parser;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.logic.commands.FindCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.identificationinformation.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-13"},{"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":{"MaYuehan":6,"-":28}},{"path":"src/test/java/vitalconnect/logic/parser/ParserUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.logic.parser;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import static vitalconnect.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.allergytag.AllergyTag;","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.contactinformation.Address;","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.contactinformation.Email;","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.contactinformation.Phone;","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.identificationinformation.Name;","lastModifiedDate":"2024-03-13"},{"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":"Ella-e"},"content":" private static final String INVALID_ADDRESS \u003d \" /\";","lastModifiedDate":"2024-03-17"},{"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":"-"},"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":"SeaHogs"},"content":" AllergyTag expectedAllergyTag \u003d new AllergyTag(VALID_TAG_1);","lastModifiedDate":"2024-03-18"},{"lineNumber":164,"author":{"gitId":"SeaHogs"},"content":" assertEquals(expectedAllergyTag, ParserUtil.parseTag(VALID_TAG_1));","lastModifiedDate":"2024-03-18"},{"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":"SeaHogs"},"content":" AllergyTag expectedAllergyTag \u003d new AllergyTag(VALID_TAG_1);","lastModifiedDate":"2024-03-18"},{"lineNumber":171,"author":{"gitId":"SeaHogs"},"content":" assertEquals(expectedAllergyTag, ParserUtil.parseTag(tagWithWhitespace));","lastModifiedDate":"2024-03-18"},{"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":"SeaHogs"},"content":" Set\u003cAllergyTag\u003e actualAllergyTagSet \u003d ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, VALID_TAG_2));","lastModifiedDate":"2024-03-18"},{"lineNumber":192,"author":{"gitId":"SeaHogs"},"content":" Set\u003cAllergyTag\u003e expectedAllergyTagSet \u003d new HashSet\u003cAllergyTag\u003e(Arrays.asList(new AllergyTag(VALID_TAG_1),","lastModifiedDate":"2024-03-18"},{"lineNumber":193,"author":{"gitId":"SeaHogs"},"content":" new AllergyTag(VALID_TAG_2)));","lastModifiedDate":"2024-03-18"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":195,"author":{"gitId":"SeaHogs"},"content":" assertEquals(expectedAllergyTagSet, actualAllergyTagSet);","lastModifiedDate":"2024-03-18"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":197,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22"}],"authorContributionMap":{"MaYuehan":9,"Ella-e":1,"-":178,"SeaHogs":9}},{"path":"src/test/java/vitalconnect/model/ClinicTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.model;","lastModifiedDate":"2024-03-13"},{"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":"javierng2knus"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.TypicalPersons.getTypicalClinic;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.testutil.PersonBuilder;","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":25,"author":{"gitId":"javierng2knus"},"content":"public class ClinicTest {","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":27,"author":{"gitId":"javierng2knus"},"content":" private final Clinic clinic \u003d new Clinic();","lastModifiedDate":"2024-03-11"},{"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":"javierng2knus"},"content":" assertEquals(Collections.emptyList(), clinic.getPersonList());","lastModifiedDate":"2024-03-11"},{"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":"javierng2knus"},"content":" assertThrows(NullPointerException.class, () -\u003e clinic.resetData(null));","lastModifiedDate":"2024-03-11"},{"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":"javierng2knus"},"content":" public void resetData_withValidReadOnlyClinic_replacesData() {","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"javierng2knus"},"content":" Clinic newData \u003d getTypicalClinic();","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"javierng2knus"},"content":" clinic.resetData(newData);","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"javierng2knus"},"content":" assertEquals(newData, clinic);","lastModifiedDate":"2024-03-11"},{"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":"javierng2knus"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-03-15"},{"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":"javierng2knus"},"content":" ClinicStub newData \u003d new ClinicStub(newPersons);","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":54,"author":{"gitId":"javierng2knus"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e clinic.resetData(newData));","lastModifiedDate":"2024-03-11"},{"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":"javierng2knus"},"content":" assertThrows(NullPointerException.class, () -\u003e clinic.hasPerson(null));","lastModifiedDate":"2024-03-11"},{"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":"javierng2knus"},"content":" public void hasPerson_personNotInClinic_returnsFalse() {","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"javierng2knus"},"content":" assertFalse(clinic.hasPerson(ALICE));","lastModifiedDate":"2024-03-11"},{"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":"javierng2knus"},"content":" public void hasPerson_personInClinic_returnsTrue() {","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"javierng2knus"},"content":" clinic.addPerson(ALICE);","lastModifiedDate":"2024-03-11"},{"lineNumber":70,"author":{"gitId":"javierng2knus"},"content":" assertTrue(clinic.hasPerson(ALICE));","lastModifiedDate":"2024-03-11"},{"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":"javierng2knus"},"content":" public void hasPerson_personWithSameIdentityFieldsInClinic_returnsTrue() {","lastModifiedDate":"2024-03-11"},{"lineNumber":75,"author":{"gitId":"javierng2knus"},"content":" clinic.addPerson(ALICE);","lastModifiedDate":"2024-03-11"},{"lineNumber":76,"author":{"gitId":"javierng2knus"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-03-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-06"},{"lineNumber":78,"author":{"gitId":"javierng2knus"},"content":" assertTrue(clinic.hasPerson(editedAlice));","lastModifiedDate":"2024-03-11"},{"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":"javierng2knus"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e clinic.getPersonList().remove(0));","lastModifiedDate":"2024-03-11"},{"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":"javierng2knus"},"content":" String expected \u003d Clinic.class.getCanonicalName() + \"{persons\u003d\" + clinic.getPersonList() + \"}\";","lastModifiedDate":"2024-03-11"},{"lineNumber":89,"author":{"gitId":"javierng2knus"},"content":" assertEquals(expected, clinic.toString());","lastModifiedDate":"2024-03-11"},{"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":"javierng2knus"},"content":" * A stub ReadOnlyClinic whose persons list can violate interface constraints.","lastModifiedDate":"2024-03-11"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-24"},{"lineNumber":95,"author":{"gitId":"javierng2knus"},"content":" private static class ClinicStub implements ReadOnlyClinic {","lastModifiedDate":"2024-03-11"},{"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":"javierng2knus"},"content":" ClinicStub(Collection\u003cPerson\u003e persons) {","lastModifiedDate":"2024-03-11"},{"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":"-"},"content":"}","lastModifiedDate":"2016-12-24"}],"authorContributionMap":{"javierng2knus":28,"MaYuehan":8,"-":72}},{"path":"src/test/java/vitalconnect/model/ModelManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.model;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import static vitalconnect.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-31"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"import java.util.List;","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.core.GuiSettings;","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.Address;","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.ContactInformation;","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.Email;","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.Phone;","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.identificationinformation.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.person.medicalinformation.Height;","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.person.medicalinformation.MedicalInformation;","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.person.medicalinformation.Weight;","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.testutil.ClinicBuilder;","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":"public class ModelManagerTest {","lastModifiedDate":"2017-05-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2018-08-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertEquals(new GuiSettings(), modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"javierng2knus"},"content":" assertEquals(new Clinic(), new Clinic(modelManager.getClinic()));","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void setUserPrefs_nullUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setUserPrefs(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void setUserPrefs_validUserPrefs_copiesUserPrefs() {","lastModifiedDate":"2018-12-06"},{"lineNumber":51,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"javierng2knus"},"content":" userPrefs.setClinicFilePath(Paths.get(\"address/book/file/path\"));","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1, 2, 3, 4));","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" modelManager.setUserPrefs(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // Modifying userPrefs should not modify modelManager\u0027s userPrefs","lastModifiedDate":"2018-12-06"},{"lineNumber":58,"author":{"gitId":"-"},"content":" UserPrefs oldUserPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":59,"author":{"gitId":"javierng2knus"},"content":" userPrefs.setClinicFilePath(Paths.get(\"new/address/book/file/path\"));","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertEquals(oldUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"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 setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setGuiSettings(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 setGuiSettings_validGuiSettings_setsGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1, 2, 3, 4);","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" modelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(guiSettings, modelManager.getGuiSettings());","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-11-27"},{"lineNumber":76,"author":{"gitId":"javierng2knus"},"content":" public void setClinicFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":77,"author":{"gitId":"javierng2knus"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setClinicFilePath(null));","lastModifiedDate":"2024-03-11"},{"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":"javierng2knus"},"content":" public void setClinicFilePath_validPath_setsClinicFilePath() {","lastModifiedDate":"2024-03-11"},{"lineNumber":82,"author":{"gitId":"-"},"content":" Path path \u003d Paths.get(\"address/book/file/path\");","lastModifiedDate":"2018-11-27"},{"lineNumber":83,"author":{"gitId":"javierng2knus"},"content":" modelManager.setClinicFilePath(path);","lastModifiedDate":"2024-03-11"},{"lineNumber":84,"author":{"gitId":"javierng2knus"},"content":" assertEquals(path, modelManager.getClinicFilePath());","lastModifiedDate":"2024-03-11"},{"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-08-06"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasPerson(null));","lastModifiedDate":"2019-03-23"},{"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":"2018-08-06"},{"lineNumber":93,"author":{"gitId":"javierng2knus"},"content":" public void hasPerson_personNotInClinic_returnsFalse() {","lastModifiedDate":"2024-03-11"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertFalse(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":98,"author":{"gitId":"javierng2knus"},"content":" public void hasPerson_personInClinic_returnsTrue() {","lastModifiedDate":"2024-03-11"},{"lineNumber":99,"author":{"gitId":"-"},"content":" modelManager.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertTrue(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":108,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":109,"author":{"gitId":"MaYuehan"},"content":" public void addAppointment_appointmentAddedAndSortedList() {","lastModifiedDate":"2024-03-13"},{"lineNumber":110,"author":{"gitId":"MaYuehan"},"content":" ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2024-03-13"},{"lineNumber":111,"author":{"gitId":"MaYuehan"},"content":" LocalDateTime now \u003d LocalDateTime.now();","lastModifiedDate":"2024-03-13"},{"lineNumber":112,"author":{"gitId":"MaYuehan"},"content":" Appointment firstAppointment \u003d new Appointment(\"Alice\", \"S1234567D\", now.plusDays(1));","lastModifiedDate":"2024-03-23"},{"lineNumber":113,"author":{"gitId":"MaYuehan"},"content":" Appointment secondAppointment \u003d new Appointment(\"Bob\", \"S1234568D\", now.plusDays(2));","lastModifiedDate":"2024-03-23"},{"lineNumber":114,"author":{"gitId":"MaYuehan"},"content":" Appointment thirdAppointment \u003d new Appointment(\"Charlie\", \"S1234569D\", now);","lastModifiedDate":"2024-03-23"},{"lineNumber":115,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":116,"author":{"gitId":"MaYuehan"},"content":" modelManager.addAppointment(firstAppointment);","lastModifiedDate":"2024-03-13"},{"lineNumber":117,"author":{"gitId":"MaYuehan"},"content":" modelManager.addAppointment(secondAppointment);","lastModifiedDate":"2024-03-13"},{"lineNumber":118,"author":{"gitId":"MaYuehan"},"content":" modelManager.addAppointment(thirdAppointment);","lastModifiedDate":"2024-03-13"},{"lineNumber":119,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":120,"author":{"gitId":"MaYuehan"},"content":" ObservableList\u003cAppointment\u003e appointments \u003d modelManager.getFilteredAppointmentList();","lastModifiedDate":"2024-03-13"},{"lineNumber":121,"author":{"gitId":"MaYuehan"},"content":" assertEquals(3, appointments.size());","lastModifiedDate":"2024-03-13"},{"lineNumber":122,"author":{"gitId":"MaYuehan"},"content":" assertEquals(thirdAppointment, appointments.get(0)); // Verify sorting by datetime","lastModifiedDate":"2024-03-13"},{"lineNumber":123,"author":{"gitId":"MaYuehan"},"content":" assertEquals(firstAppointment, appointments.get(1));","lastModifiedDate":"2024-03-13"},{"lineNumber":124,"author":{"gitId":"MaYuehan"},"content":" assertEquals(secondAppointment, appointments.get(2));","lastModifiedDate":"2024-03-13"},{"lineNumber":125,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":126,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":127,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":128,"author":{"gitId":"MaYuehan"},"content":" public void getFilteredAppointmentList_returnsAllAppointments() {","lastModifiedDate":"2024-03-13"},{"lineNumber":129,"author":{"gitId":"MaYuehan"},"content":" ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2024-03-13"},{"lineNumber":130,"author":{"gitId":"MaYuehan"},"content":" assertTrue(modelManager.getFilteredAppointmentList().isEmpty());","lastModifiedDate":"2024-03-13"},{"lineNumber":131,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":132,"author":{"gitId":"MaYuehan"},"content":" Appointment appointment \u003d new Appointment(\"Alice\", \"S1234567D\", LocalDateTime.now());","lastModifiedDate":"2024-03-23"},{"lineNumber":133,"author":{"gitId":"MaYuehan"},"content":" modelManager.addAppointment(appointment);","lastModifiedDate":"2024-03-13"},{"lineNumber":134,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":135,"author":{"gitId":"MaYuehan"},"content":" assertEquals(1, modelManager.getFilteredAppointmentList().size());","lastModifiedDate":"2024-03-13"},{"lineNumber":136,"author":{"gitId":"MaYuehan"},"content":" assertEquals(appointment, modelManager.getFilteredAppointmentList().get(0));","lastModifiedDate":"2024-03-13"},{"lineNumber":137,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":138,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":139,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":140,"author":{"gitId":"MaYuehan"},"content":" public void deleteAppointment_appointmentDeleted() {","lastModifiedDate":"2024-03-13"},{"lineNumber":141,"author":{"gitId":"MaYuehan"},"content":" ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2024-03-13"},{"lineNumber":142,"author":{"gitId":"MaYuehan"},"content":" Appointment appointment \u003d new Appointment(\"Alice\",","lastModifiedDate":"2024-03-23"},{"lineNumber":143,"author":{"gitId":"MaYuehan"},"content":" \"S1234567D\", LocalDateTime.now());","lastModifiedDate":"2024-03-23"},{"lineNumber":144,"author":{"gitId":"MaYuehan"},"content":" modelManager.addAppointment(appointment);","lastModifiedDate":"2024-03-13"},{"lineNumber":145,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":146,"author":{"gitId":"MaYuehan"},"content":" assertEquals(1, modelManager.getFilteredAppointmentList().size());","lastModifiedDate":"2024-03-13"},{"lineNumber":147,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":148,"author":{"gitId":"MaYuehan"},"content":" modelManager.deleteAppointment(appointment);","lastModifiedDate":"2024-03-13"},{"lineNumber":149,"author":{"gitId":"MaYuehan"},"content":" assertTrue(modelManager.getFilteredAppointmentList().isEmpty());","lastModifiedDate":"2024-03-13"},{"lineNumber":150,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":151,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":152,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":153,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":154,"author":{"gitId":"MaYuehan"},"content":" public void personExist_existingAndNonExistingPerson() {","lastModifiedDate":"2024-03-13"},{"lineNumber":155,"author":{"gitId":"MaYuehan"},"content":" ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2024-03-13"},{"lineNumber":156,"author":{"gitId":"MaYuehan"},"content":" modelManager.addPerson(ALICE); // Assuming ALICE is a predefined Person object","lastModifiedDate":"2024-03-13"},{"lineNumber":157,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":158,"author":{"gitId":"javierng2knus"},"content":" assertTrue(modelManager.doesPersonExist(ALICE.getIdentificationInformation().getName().fullName));","lastModifiedDate":"2024-03-15"},{"lineNumber":159,"author":{"gitId":"MaYuehan"},"content":" assertFalse(modelManager.doesPersonExist(\"Non Existing Person\"));","lastModifiedDate":"2024-03-13"},{"lineNumber":160,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":161,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":162,"author":{"gitId":"Ella-e"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":163,"author":{"gitId":"Ella-e"},"content":" public void updatePersonContactInformation_success() {","lastModifiedDate":"2024-03-18"},{"lineNumber":164,"author":{"gitId":"Ella-e"},"content":" ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2024-03-18"},{"lineNumber":165,"author":{"gitId":"Ella-e"},"content":" modelManager.addPerson(ALICE); // Assuming ALICE is a predefined Person object","lastModifiedDate":"2024-03-18"},{"lineNumber":166,"author":{"gitId":"Ella-e"},"content":" ContactInformation ci \u003d new ContactInformation(new Email(\"email@email.com\"), new Phone(\"\"), new Address(\"\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":167,"author":{"gitId":"Ella-e"},"content":" modelManager.updatePersonContactInformation(ALICE.getIdentificationInformation().getNric(), ci);","lastModifiedDate":"2024-03-18"},{"lineNumber":168,"author":{"gitId":"Ella-e"},"content":" assertEquals(ci, modelManager","lastModifiedDate":"2024-03-18"},{"lineNumber":169,"author":{"gitId":"Ella-e"},"content":" .findPersonByNric(ALICE.getIdentificationInformation().getNric()).getContactInformation());","lastModifiedDate":"2024-03-18"},{"lineNumber":170,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":171,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":172,"author":{"gitId":"SeaHogs"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":173,"author":{"gitId":"SeaHogs"},"content":" public void updatePersonMedicalInformation_success() {","lastModifiedDate":"2024-03-19"},{"lineNumber":174,"author":{"gitId":"SeaHogs"},"content":" ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2024-03-19"},{"lineNumber":175,"author":{"gitId":"SeaHogs"},"content":" modelManager.addPerson(ALICE); // Assuming ALICE is a predefined Person object","lastModifiedDate":"2024-03-19"},{"lineNumber":176,"author":{"gitId":"SeaHogs"},"content":" MedicalInformation mi \u003d new MedicalInformation(new Height(\"111\"), new Weight(\"111\"));","lastModifiedDate":"2024-03-19"},{"lineNumber":177,"author":{"gitId":"SeaHogs"},"content":" modelManager.updatePersonMedicalInformation(ALICE.getIdentificationInformation().getNric(), mi);","lastModifiedDate":"2024-03-19"},{"lineNumber":178,"author":{"gitId":"SeaHogs"},"content":" assertEquals(mi, modelManager","lastModifiedDate":"2024-03-19"},{"lineNumber":179,"author":{"gitId":"SeaHogs"},"content":" .findPersonByNric(ALICE.getIdentificationInformation().getNric()).getMedicalInformation());","lastModifiedDate":"2024-03-19"},{"lineNumber":180,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":181,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":182,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31"},{"lineNumber":183,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":184,"author":{"gitId":"javierng2knus"},"content":" Clinic clinic \u003d new ClinicBuilder().withPerson(ALICE).withPerson(BENSON).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":185,"author":{"gitId":"javierng2knus"},"content":" Clinic differentClinic \u003d new Clinic();","lastModifiedDate":"2024-03-11"},{"lineNumber":186,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":187,"author":{"gitId":"MaYuehan"},"content":" List\u003cAppointment\u003e appointments \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":189,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":190,"author":{"gitId":"MaYuehan"},"content":" modelManager \u003d new ModelManager(clinic, userPrefs, appointments);","lastModifiedDate":"2024-03-23"},{"lineNumber":191,"author":{"gitId":"MaYuehan"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(clinic, userPrefs, appointments);","lastModifiedDate":"2024-03-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":194,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":195,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":197,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":198,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":200,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":201,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":203,"author":{"gitId":"javierng2knus"},"content":" // different clinic -\u003e returns false","lastModifiedDate":"2024-03-11"},{"lineNumber":204,"author":{"gitId":"MaYuehan"},"content":" assertFalse(modelManager.equals(new ModelManager(differentClinic, userPrefs, appointments)));","lastModifiedDate":"2024-03-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":206,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":207,"author":{"gitId":"javierng2knus"},"content":" String[] keywords \u003d ALICE.getIdentificationInformation().getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2024-03-15"},{"lineNumber":208,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(keywords)));","lastModifiedDate":"2017-06-12"},{"lineNumber":209,"author":{"gitId":"MaYuehan"},"content":" assertFalse(modelManager.equals(new ModelManager(clinic, userPrefs, appointments)));","lastModifiedDate":"2024-03-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":211,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2017-08-05"},{"lineNumber":212,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":214,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27"},{"lineNumber":215,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":216,"author":{"gitId":"javierng2knus"},"content":" differentUserPrefs.setClinicFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2024-03-11"},{"lineNumber":217,"author":{"gitId":"MaYuehan"},"content":" assertFalse(modelManager.equals(new ModelManager(clinic, differentUserPrefs, appointments)));","lastModifiedDate":"2024-03-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":219,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31"}],"authorContributionMap":{"javierng2knus":16,"MaYuehan":73,"Ella-e":14,"-":104,"SeaHogs":12}},{"path":"src/test/java/vitalconnect/model/UserPrefsTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.model;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-13"},{"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":"javierng2knus"},"content":" public void setClinicFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":18,"author":{"gitId":"javierng2knus"},"content":" assertThrows(NullPointerException.class, () -\u003e userPrefs.setClinicFilePath(null));","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" public void setAppointmentFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" assertThrows(NullPointerException.class, () -\u003e userPrefs.setAppointmentFilePath(null));","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-11-27"}],"authorContributionMap":{"javierng2knus":2,"MaYuehan":7,"-":17}},{"path":"src/test/java/vitalconnect/model/allergytag/AllergyTagTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"SeaHogs"},"content":"package vitalconnect.model.allergytag;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-13"},{"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":"SeaHogs"},"content":"public class AllergyTagTest {","lastModifiedDate":"2024-03-18"},{"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":"SeaHogs"},"content":" assertThrows(NullPointerException.class, () -\u003e new AllergyTag(null));","lastModifiedDate":"2024-03-18"},{"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":"SeaHogs"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new AllergyTag(invalidTagName));","lastModifiedDate":"2024-03-18"},{"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":"SeaHogs"},"content":" // null allergytag name","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"SeaHogs"},"content":" assertThrows(NullPointerException.class, () -\u003e AllergyTag.isValidTagName(null));","lastModifiedDate":"2024-03-18"},{"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":{"MaYuehan":1,"-":19,"SeaHogs":6}},{"path":"src/test/java/vitalconnect/model/person/PersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.model.person;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"javierng2knus"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.VALID_NRIC_BOB;","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.TypicalPersons.BOB;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.testutil.PersonBuilder;","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2018-03-26"},{"lineNumber":22,"author":{"gitId":"SeaHogs"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"SeaHogs"},"content":" .getMedicalInformation()","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"SeaHogs"},"content":" .getAllergyTag()","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"SeaHogs"},"content":" .remove(0));","lastModifiedDate":"2024-03-18"},{"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":"javierng2knus"},"content":" // same nric, all other attributes different -\u003e returns true","lastModifiedDate":"2024-03-15"},{"lineNumber":37,"author":{"gitId":"javierng2knus"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-03-15"},{"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":"javierng2knus"},"content":" // different nric, all other attributes same -\u003e returns false","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"javierng2knus"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withNric(VALID_NRIC_BOB).build();","lastModifiedDate":"2024-03-15"},{"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":"javierng2knus"},"content":" // name differs in case, all other attributes same -\u003e returns true","lastModifiedDate":"2024-03-15"},{"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":"javierng2knus"},"content":" assertTrue(BOB.isSamePerson(editedBob));","lastModifiedDate":"2024-03-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":48,"author":{"gitId":"javierng2knus"},"content":" // name has trailing spaces, all other attributes same -\u003e returns true","lastModifiedDate":"2024-03-15"},{"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":"javierng2knus"},"content":" assertTrue(BOB.isSamePerson(editedBob));","lastModifiedDate":"2024-03-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":54,"author":{"gitId":"Ella-e"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"Ella-e"},"content":" public void copyPerson_success() {","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"Ella-e"},"content":" Person p \u003d new PersonBuilder().build();","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"Ella-e"},"content":" assertEquals(p, p.copyPerson());","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19"},{"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":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19"},{"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":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19"},{"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":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":82,"author":{"gitId":"javierng2knus"},"content":" // different nric -\u003e returns false","lastModifiedDate":"2024-03-15"},{"lineNumber":83,"author":{"gitId":"javierng2knus"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withNric(VALID_NRIC_BOB).build();","lastModifiedDate":"2024-03-15"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"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":"javierng2knus"},"content":" String expected \u003d Person.class.getCanonicalName()","lastModifiedDate":"2024-03-15"},{"lineNumber":90,"author":{"gitId":"javierng2knus"},"content":" + \"{identification\u003d[name\u003d\" + ALICE.getIdentificationInformation().getName()","lastModifiedDate":"2024-03-15"},{"lineNumber":91,"author":{"gitId":"Ella-e"},"content":" + \", nric\u003d\" + ALICE.getIdentificationInformation().getNric()","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"SeaHogs"},"content":" + \"], contact\u003d\" + ALICE.getContactInformation()","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"SeaHogs"},"content":" + \", medicalinfo\u003d\" + ALICE.getMedicalInformation().toString() + \"}\";","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"javierng2knus":13,"MaYuehan":7,"Ella-e":7,"-":63,"SeaHogs":6}},{"path":"src/test/java/vitalconnect/model/person/UniquePersonListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.model.person;","lastModifiedDate":"2024-03-13"},{"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":"javierng2knus"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"javierng2knus"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.VALID_NRIC_BOB;","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.TypicalPersons.BOB;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.exceptions.PersonNotFoundException;","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.testutil.PersonBuilder;","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class UniquePersonListTest {","lastModifiedDate":"2017-09-01"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final UniquePersonList uniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void contains_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.contains(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void contains_personNotInList_returnsFalse() {","lastModifiedDate":"2018-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(uniquePersonList.contains(ALICE));","lastModifiedDate":"2018-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void contains_personInList_returnsTrue() {","lastModifiedDate":"2018-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertTrue(uniquePersonList.contains(ALICE));","lastModifiedDate":"2018-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void contains_personWithSameIdentityFieldsInList_returnsTrue() {","lastModifiedDate":"2018-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":46,"author":{"gitId":"javierng2knus"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-03-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertTrue(uniquePersonList.contains(editedAlice));","lastModifiedDate":"2018-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void add_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.add(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void add_duplicatePerson_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.add(ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void setPerson_nullTargetPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPerson(null, ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void setPerson_nullEditedPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPerson(ALICE, null));","lastModifiedDate":"2019-03-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void setPerson_targetPersonNotInList_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.setPerson(ALICE, 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_editedPersonIsSamePerson_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasSameIdentity_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":88,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":89,"author":{"gitId":"javierng2knus"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withNric(VALID_NRIC_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-03-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, editedAlice);","lastModifiedDate":"2018-08-08"},{"lineNumber":92,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(editedAlice);","lastModifiedDate":"2018-08-08"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasDifferentIdentity_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasNonUniqueIdentity_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":" uniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.setPerson(ALICE, BOB));","lastModifiedDate":"2019-03-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public void remove_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.remove(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public void remove_personDoesNotExist_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.remove(ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" public void remove_existingPerson_removesPerson() {","lastModifiedDate":"2018-08-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" uniquePersonList.remove(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":" public void setPersons_nullUniquePersonList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersons((UniquePersonList) null));","lastModifiedDate":"2019-03-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":137,"author":{"gitId":"-"},"content":" public void setPersons_uniquePersonList_replacesOwnListWithProvidedUniquePersonList() {","lastModifiedDate":"2018-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":" uniquePersonList.setPersons(expectedUniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":146,"author":{"gitId":"-"},"content":" public void setPersons_nullList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":147,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersons((List\u003cPerson\u003e) null));","lastModifiedDate":"2019-03-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":150,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":151,"author":{"gitId":"-"},"content":" public void setPersons_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2018-08-08"},{"lineNumber":152,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":153,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e personList \u003d Collections.singletonList(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":154,"author":{"gitId":"-"},"content":" uniquePersonList.setPersons(personList);","lastModifiedDate":"2018-08-08"},{"lineNumber":155,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":156,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","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_listWithDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e listWithDuplicatePersons \u003d Arrays.asList(ALICE, ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.setPersons(listWithDuplicatePersons));","lastModifiedDate":"2019-03-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":167,"author":{"gitId":"-"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2018-04-05"},{"lineNumber":168,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2019-03-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":" -\u003e uniquePersonList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24"},{"lineNumber":172,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-24"},{"lineNumber":173,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-24"},{"lineNumber":174,"author":{"gitId":"-"},"content":" assertEquals(uniquePersonList.asUnmodifiableObservableList().toString(), uniquePersonList.toString());","lastModifiedDate":"2019-02-24"},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24"},{"lineNumber":176,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"javierng2knus":4,"MaYuehan":8,"-":164}},{"path":"src/test/java/vitalconnect/model/person/contactinformation/AddressTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.model.person.contactinformation;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-18"},{"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":"MaYuehan"},"content":"import static vitalconnect.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"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 AddressTest {","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 Address(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":"Ella-e"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":" public void constructor_noParameter_success() {","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":" assertEquals(new Address().value, \"\");","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void constructor_invalidAddress_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":24,"author":{"gitId":"Ella-e"},"content":" String invalidAddress \u003d \"/\";","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Address(invalidAddress));","lastModifiedDate":"2019-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void isValidAddress() {","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // null address","lastModifiedDate":"2017-12-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Address.isValidAddress(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // invalid addresses","lastModifiedDate":"2017-01-16"},{"lineNumber":34,"author":{"gitId":"Ella-e"},"content":" assertFalse(Address.isValidAddress(\"/\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"Ella-e"},"content":" assertFalse(Address.isValidAddress(\" /\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" // valid addresses","lastModifiedDate":"2017-01-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(Address.isValidAddress(\"Blk 456, Den Road, #01-355\"));","lastModifiedDate":"2017-01-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertTrue(Address.isValidAddress(\"-\")); // one character","lastModifiedDate":"2017-01-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertTrue(Address.isValidAddress(\"Leng Inc; 1234 Market St; San Francisco CA 2349879; USA\")); // long address","lastModifiedDate":"2017-01-16"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" Address address \u003d new Address(\"Valid Address\");","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertTrue(address.equals(new Address(\"Valid Address\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertTrue(address.equals(address));","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(address.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(address.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertFalse(address.equals(new Address(\"Other Valid Address\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"MaYuehan":2,"Ella-e":9,"-":51}},{"path":"src/test/java/vitalconnect/model/person/contactinformation/ContactInformationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Ella-e"},"content":"package vitalconnect.model.person.contactinformation;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"Ella-e"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":"public class ContactInformationTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"Ella-e"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"Ella-e"},"content":" assertThrows(NullPointerException.class, () -\u003e new ContactInformation((String) null, null, null));","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":" public void constructor_withParameter_success() {","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":" Email email \u003d new Email(\"abc@email.com\");","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":" Phone phone \u003d new Phone(\"12345678\");","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":" Address address \u003d new Address(\"address\");","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"Ella-e"},"content":" ContactInformation ci \u003d new ContactInformation(email, phone, address);","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"Ella-e"},"content":" assertEquals(ci.getEmail(), email);","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"Ella-e"},"content":" assertEquals(ci.getPhone(), phone);","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"Ella-e"},"content":" assertEquals(ci.getAddress(), address);","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"Ella-e"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"Ella-e"},"content":" public void equals() {","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"Ella-e"},"content":" Address address \u003d new Address(\"Valid Address\");","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"Ella-e"},"content":" Phone phone \u003d new Phone(\"12345678\");","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"Ella-e"},"content":" Email email \u003d new Email(\"email@e.com\");","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"Ella-e"},"content":" Address differentAddress \u003d new Address(\"Address\");","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"Ella-e"},"content":" ContactInformation contactInformation \u003d new ContactInformation(email, phone, address);","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"Ella-e"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"Ella-e"},"content":" assertTrue(contactInformation.equals(new ContactInformation(email, phone, address)));","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"Ella-e"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"Ella-e"},"content":" assertTrue(contactInformation.equals(contactInformation));","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"Ella-e"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"Ella-e"},"content":" assertFalse(contactInformation.equals(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"Ella-e"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"Ella-e"},"content":" assertFalse(contactInformation.equals(5.0f));","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"Ella-e"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"Ella-e"},"content":" assertFalse(contactInformation.equals(new ContactInformation(email, phone, differentAddress)));","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"Ella-e"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"Ella-e":50}},{"path":"src/test/java/vitalconnect/model/person/contactinformation/EmailTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.model.person.contactinformation;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-18"},{"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":"MaYuehan"},"content":"import static vitalconnect.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"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":"Ella-e"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":" public void constructor_noParameter_success() {","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":" assertEquals(new Email().value, \"\");","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void constructor_invalidEmail_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":24,"author":{"gitId":"Ella-e"},"content":" String invalidEmail \u003d \"abc\";","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Email(invalidEmail));","lastModifiedDate":"2019-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void isValidEmail() {","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // null email","lastModifiedDate":"2017-12-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Email.isValidEmail(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // missing parts","lastModifiedDate":"2017-01-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"@example.com\")); // missing local part","lastModifiedDate":"2017-04-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjackexample.com\")); // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-04-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@\")); // missing domain name","lastModifiedDate":"2017-01-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" // invalid parts","lastModifiedDate":"2017-01-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@-\")); // invalid domain name","lastModifiedDate":"2017-01-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@exam_ple.com\")); // underscore in domain name","lastModifiedDate":"2018-02-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter jack@example.com\")); // spaces in local part","lastModifiedDate":"2017-04-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@exam ple.com\")); // spaces in domain name","lastModifiedDate":"2017-04-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\" peterjack@example.com\")); // leading space","lastModifiedDate":"2018-02-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com \")); // trailing space","lastModifiedDate":"2018-02-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@@example.com\")); // double \u0027@\u0027 symbol","lastModifiedDate":"2017-04-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter@jack@example.com\")); // \u0027@\u0027 symbol in local part","lastModifiedDate":"2017-04-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"-peterjack@example.com\")); // local part starts with a hyphen","lastModifiedDate":"2021-07-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack-@example.com\")); // local part ends with a hyphen","lastModifiedDate":"2021-07-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter..jack@example.com\")); // local part has two consecutive periods","lastModifiedDate":"2021-07-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example@com\")); // \u0027@\u0027 symbol in domain name","lastModifiedDate":"2017-04-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@.example.com\")); // domain name starts with a period","lastModifiedDate":"2018-02-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com.\")); // domain name ends with a period","lastModifiedDate":"2018-02-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@-example.com\")); // domain name starts with a hyphen","lastModifiedDate":"2018-02-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com-\")); // domain name ends with a hyphen","lastModifiedDate":"2018-02-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.c\")); // top level domain has less than two chars","lastModifiedDate":"2021-07-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // valid email","lastModifiedDate":"2017-01-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack_1190@example.com\")); // underscore in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack.1190@example.com\")); // period in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack+1190@example.com\")); // \u0027+\u0027 symbol in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack-1190@example.com\")); // hyphen in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"a@bc\")); // minimal","lastModifiedDate":"2018-02-09"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"test@localhost\")); // alphabets only","lastModifiedDate":"2017-01-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"123@145\")); // numeric local part and domain name","lastModifiedDate":"2017-01-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"a1+be.d@example1.com\")); // mixture of alphanumeric and special characters","lastModifiedDate":"2021-07-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"peter_jack@very-very-very-long-example.com\")); // long domain name","lastModifiedDate":"2018-02-09"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"if.you.dream.it_you.can.do.it@example.com\")); // long local part","lastModifiedDate":"2017-04-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"e1234567@u.nus.edu\")); // more than one period in domain","lastModifiedDate":"2021-07-20"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" Email email \u003d new Email(\"valid@email\");","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertTrue(email.equals(new Email(\"valid@email\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertTrue(email.equals(email));","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(email.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertFalse(email.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertFalse(email.equals(new Email(\"other.valid@email\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"MaYuehan":2,"Ella-e":7,"-":81}},{"path":"src/test/java/vitalconnect/model/person/contactinformation/PhoneTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.model.person.contactinformation;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-18"},{"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":"MaYuehan"},"content":"import static vitalconnect.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"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 PhoneTest {","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 Phone(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":"Ella-e"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":" public void constructor_noParameter_success() {","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"Ella-e"},"content":" assertEquals(new Phone().value, \"\");","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void constructor_invalidPhone_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":24,"author":{"gitId":"Ella-e"},"content":" String invalidPhone \u003d \"12\";","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Phone(invalidPhone));","lastModifiedDate":"2019-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void isValidPhone() {","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // null phone number","lastModifiedDate":"2017-12-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Phone.isValidPhone(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // invalid phone numbers","lastModifiedDate":"2017-01-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"91\")); // less than 3 numbers","lastModifiedDate":"2017-05-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"phone\")); // non-numeric","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"9011p041\")); // alphabets within digits","lastModifiedDate":"2017-01-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"9312 1534\")); // spaces within digits","lastModifiedDate":"2017-01-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" // valid phone numbers","lastModifiedDate":"2017-01-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertTrue(Phone.isValidPhone(\"911\")); // exactly 3 numbers","lastModifiedDate":"2017-05-04"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertTrue(Phone.isValidPhone(\"93121534\"));","lastModifiedDate":"2017-01-16"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertTrue(Phone.isValidPhone(\"124293842033123\")); // long phone numbers","lastModifiedDate":"2017-01-16"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" Phone phone \u003d new Phone(\"999\");","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertTrue(phone.equals(new Phone(\"999\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertTrue(phone.equals(phone));","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(new Phone(\"995\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"MaYuehan":2,"Ella-e":7,"-":55}},{"path":"src/test/java/vitalconnect/model/person/identificationinformation/IdentificationInformationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"javierng2knus"},"content":"package vitalconnect.model.person.identificationinformation;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"javierng2knus"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"javierng2knus"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"javierng2knus"},"content":"import static vitalconnect.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"javierng2knus"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"javierng2knus"},"content":"public class IdentificationInformationTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"javierng2knus"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"javierng2knus"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"javierng2knus"},"content":" assertThrows(NullPointerException.class, () -\u003e new IdentificationInformation(new Name(null), null));","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"javierng2knus"},"content":" assertThrows(NullPointerException.class, () -\u003e new IdentificationInformation(null, new Nric(null)));","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"javierng2knus"},"content":" assertThrows(NullPointerException.class, () -\u003e new IdentificationInformation(new Name(null), new Nric(null)));","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"javierng2knus"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"javierng2knus"},"content":" public void constructor_invalidIdentificationInformation_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"javierng2knus"},"content":" String invalidName \u003d \"\";","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"javierng2knus"},"content":" String invalidNric \u003d \"\";","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"javierng2knus"},"content":" String validName \u003d \"John\";","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"javierng2knus"},"content":" String validNric \u003d \"S1234567D\";","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"javierng2knus"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new IdentificationInformation(invalidName, invalidNric));","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"javierng2knus"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new IdentificationInformation(invalidName, validNric));","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"javierng2knus"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new IdentificationInformation(validName, invalidNric));","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"javierng2knus"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"javierng2knus"},"content":" public void isValidIdentificationInformation() {","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"javierng2knus"},"content":" // null name and nric","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"javierng2knus"},"content":" assertThrows(NullPointerException.class, () -\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"javierng2knus"},"content":" IdentificationInformation.isValidIdentificationInformation(null, null));","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"javierng2knus"},"content":" String validNric \u003d \"S1234567D\";","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"javierng2knus"},"content":" String validName \u003d \"John\";","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"javierng2knus"},"content":" // invalid name and valid nric","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"javierng2knus"},"content":" assertFalse(IdentificationInformation","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"javierng2knus"},"content":" .isValidIdentificationInformation(\"\", validNric)); // empty string","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"javierng2knus"},"content":" assertFalse(IdentificationInformation","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"javierng2knus"},"content":" .isValidIdentificationInformation(\" \", validNric)); // spaces only","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"javierng2knus"},"content":" assertFalse(IdentificationInformation","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"javierng2knus"},"content":" .isValidIdentificationInformation(\"^\", validNric)); // only non-alphanumeric characters","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"javierng2knus"},"content":" assertFalse(IdentificationInformation","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"javierng2knus"},"content":" .isValidIdentificationInformation(\"peter*\", validNric)); // contains non-alphanumeric characters","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"javierng2knus"},"content":" // valid name and invalid nric","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"javierng2knus"},"content":" assertFalse(IdentificationInformation","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"javierng2knus"},"content":" .isValidIdentificationInformation(validName,","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"javierng2knus"},"content":" \"S12345678A\")); // improper format","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"javierng2knus"},"content":" assertFalse(IdentificationInformation","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"javierng2knus"},"content":" .isValidIdentificationInformation(validName,","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"javierng2knus"},"content":" \"S1234567A\")); // contains proper format but fails checksum","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"javierng2knus"},"content":" // valid name and valid nric","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"javierng2knus"},"content":" assertTrue(IdentificationInformation","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"javierng2knus"},"content":" .isValidIdentificationInformation(\"peter jack\",","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"javierng2knus"},"content":" \"S1234567D\")); // empty string","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"javierng2knus"},"content":" assertTrue(IdentificationInformation","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"javierng2knus"},"content":" .isValidIdentificationInformation(\"12345\",","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"javierng2knus"},"content":" \"S1234567D\")); // spaces only","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"javierng2knus"},"content":" assertTrue(IdentificationInformation","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"javierng2knus"},"content":" .isValidIdentificationInformation(\"peter the 2nd\",","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"javierng2knus"},"content":" \"S1234567D\")); // only non-alphanumeric characters","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"javierng2knus"},"content":" assertTrue(IdentificationInformation","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"javierng2knus"},"content":" .isValidIdentificationInformation(\"Capital Tan\",","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"javierng2knus"},"content":" \"S1234567D\")); // contains non-alphanumeric characters","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"javierng2knus"},"content":" assertTrue(IdentificationInformation","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"javierng2knus"},"content":" .isValidIdentificationInformation(\"David Roger Jackson Ray Jr 2nd\",","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"javierng2knus"},"content":" \"S1234567D\")); // contains proper format but fails checksum","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"javierng2knus"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"javierng2knus"},"content":" public void equals() {","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"javierng2knus"},"content":" IdentificationInformation info1 \u003d new IdentificationInformation(\"Valid Name\",","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"javierng2knus"},"content":" \"S1234567D\");","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"javierng2knus"},"content":" IdentificationInformation info2 \u003d new IdentificationInformation(new Name(\"Valid Name\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"javierng2knus"},"content":" new Nric(\"S1234567D\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"javierng2knus"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"javierng2knus"},"content":" assertTrue(info1.equals(info2));","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"javierng2knus"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"javierng2knus"},"content":" assertTrue(info1.equals(info1));","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"javierng2knus"},"content":" assertTrue(info2.equals(info2));","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":88,"author":{"gitId":"javierng2knus"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"javierng2knus"},"content":" assertFalse(info1.equals(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":90,"author":{"gitId":"javierng2knus"},"content":" assertFalse(info2.equals(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"javierng2knus"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"javierng2knus"},"content":" assertFalse(info1.equals(5.0f));","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"javierng2knus"},"content":" assertFalse(info2.equals(5.0f));","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"javierng2knus"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"javierng2knus"},"content":" assertFalse(info1.equals(new IdentificationInformation(new Name(\"Other Valid Name\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"javierng2knus"},"content":" new Nric(\"S1234568B\"))));","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"javierng2knus"},"content":" assertFalse(info2.equals(new IdentificationInformation(new Name(\"Other Valid Name\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"javierng2knus"},"content":" new Nric(\"S1234568B\"))));","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"javierng2knus"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"javierng2knus":102}},{"path":"src/test/java/vitalconnect/model/person/identificationinformation/NameContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.model.person.identificationinformation;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.testutil.PersonBuilder;","lastModifiedDate":"2024-03-13"},{"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":"-"},"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":"javierng2knus"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").withNric(\"S1234567D\").build()));","lastModifiedDate":"2024-03-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d List.of(\"keyword1\", \"keyword2\");","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(keywords);","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" String expected \u003d NameContainsKeywordsPredicate.class.getCanonicalName() + \"{keywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"javierng2knus":1,"MaYuehan":2,"-":81}},{"path":"src/test/java/vitalconnect/model/person/identificationinformation/NameTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.model.person.identificationinformation;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import static vitalconnect.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-13"},{"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":{"MaYuehan":2,"-":58}},{"path":"src/test/java/vitalconnect/model/person/identificationinformation/NricTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"javierng2knus"},"content":"package vitalconnect.model.person.identificationinformation;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"javierng2knus"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"javierng2knus"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"javierng2knus"},"content":"import static vitalconnect.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"javierng2knus"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"javierng2knus"},"content":"public class NricTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"javierng2knus"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"javierng2knus"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"javierng2knus"},"content":" assertThrows(NullPointerException.class, () -\u003e new Nric(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"javierng2knus"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"javierng2knus"},"content":" public void constructor_invalidNric_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"javierng2knus"},"content":" String invalidNric \u003d \"\";","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"javierng2knus"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Nric(invalidNric));","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"javierng2knus"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"javierng2knus"},"content":" public void isValidNric() {","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"javierng2knus"},"content":" // null nric","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"javierng2knus"},"content":" assertThrows(NullPointerException.class, () -\u003e Nric.isValidNric(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"javierng2knus"},"content":" // invalid nric","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"javierng2knus"},"content":" assertFalse(Nric.isValidNric(\"\")); // empty string","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"javierng2knus"},"content":" assertFalse(Nric.isValidNric(\" \")); // spaces only","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"javierng2knus"},"content":" assertFalse(Nric.isValidNric(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"javierng2knus"},"content":" assertFalse(Nric.isValidNric(\"peter*\")); // contains non-alphanumeric characters","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"javierng2knus"},"content":" assertFalse(Nric.isValidNric(\"S1234567A\")); // contains proper format but fails checksum","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"javierng2knus"},"content":" // valid nric","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"javierng2knus"},"content":" assertTrue(Nric.isValidNric(\"S1234567D\")); // valid","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"javierng2knus"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"javierng2knus"},"content":" public void equals() {","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"javierng2knus"},"content":" Nric nric \u003d new Nric(\"S1234567D\");","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"javierng2knus"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"javierng2knus"},"content":" assertTrue(nric.equals(new Nric(\"S1234567D\")));","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"javierng2knus"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"javierng2knus"},"content":" assertTrue(nric.equals(nric));","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"javierng2knus"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"javierng2knus"},"content":" assertFalse(nric.equals(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"javierng2knus"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"javierng2knus"},"content":" assertFalse(nric.equals(5.0f));","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"javierng2knus"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"javierng2knus"},"content":" assertFalse(nric.equals(new Nric(\"S1234568B\")));","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"javierng2knus"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"javierng2knus":57}},{"path":"src/test/java/vitalconnect/storage/JsonAdaptedPersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.storage;","lastModifiedDate":"2024-03-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":"MaYuehan"},"content":"import static vitalconnect.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2024-03-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":"MaYuehan"},"content":"import vitalconnect.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.Address;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.ContactInformation;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.Email;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.Phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.identificationinformation.Name;","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"javierng2knus"},"content":"import vitalconnect.model.person.identificationinformation.Nric;","lastModifiedDate":"2024-03-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":"javierng2knus"},"content":" private static final String INVALID_NRIC \u003d \"911a\";","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"Ella-e"},"content":" private static final String INVALID_EMAIL \u003d \"email\";","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"Ella-e"},"content":" private static final String INVALID_PHONE \u003d \"123\";","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"Ella-e"},"content":" private static final String INVALID_ADDRESS \u003d \"ac/\";","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"Ella-e"},"content":" private static final String VALID_EMAIL \u003d \"example@email.com\";","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"Ella-e"},"content":" private static final String VALID_PHONE \u003d \"12345678\";","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"Ella-e"},"content":" private static final String VALID_ADDRESS \u003d \"Prince George\u0027s Park Residence\";","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"SeaHogs"},"content":" private static final String VALID_HEIGHT \u003d \"170\";","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"SeaHogs"},"content":" private static final String VALID_WEIGHT \u003d \"60\";","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"SeaHogs"},"content":" private static final String INVALID_HEIGHT \u003d \"170cm\";","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"SeaHogs"},"content":" private static final String INVALID_WEIGHT \u003d \"60kg\";","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"SeaHogs"},"content":" private static final List\u003cJsonAdaptedTag\u003e INVALID_ALLERGY \u003d List.of(\"pe@nut\").stream()","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"SeaHogs"},"content":" .map(JsonAdaptedTag::new).collect(Collectors.toList());","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"Ella-e"},"content":" private static final ContactInformation VALID_CI \u003d new ContactInformation(new Email(VALID_EMAIL),","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"Ella-e"},"content":" new Phone(VALID_PHONE), new Address(VALID_ADDRESS));","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"javierng2knus"},"content":" private static final String VALID_NAME \u003d BENSON.getIdentificationInformation().getName().toString();","lastModifiedDate":"2024-03-15"},{"lineNumber":42,"author":{"gitId":"javierng2knus"},"content":" private static final String VALID_NRIC \u003d BENSON.getIdentificationInformation().getNric().toString();","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"SeaHogs"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_ALLERGY \u003d BENSON.getMedicalInformation().getAllergyTag().stream()","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","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_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","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":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"SeaHogs"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_NRIC, VALID_EMAIL, VALID_PHONE, VALID_ADDRESS, VALID_HEIGHT,","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"SeaHogs"},"content":" VALID_WEIGHT, VALID_ALLERGY);","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.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_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"Ella-e"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_NRIC, VALID_EMAIL,","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"SeaHogs"},"content":" VALID_PHONE, VALID_ADDRESS, VALID_HEIGHT, VALID_WEIGHT, VALID_ALLERGY);","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.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":"javierng2knus"},"content":" public void toModelType_invalidNric_throwsIllegalValueException() {","lastModifiedDate":"2024-03-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"SeaHogs"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_NRIC, VALID_EMAIL, VALID_PHONE, VALID_ADDRESS,","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"SeaHogs"},"content":" VALID_HEIGHT, VALID_WEIGHT, VALID_ALLERGY);","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"javierng2knus"},"content":" String expectedMessage \u003d Nric.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-15"},{"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":"javierng2knus"},"content":" public void toModelType_nullNric_throwsIllegalValueException() {","lastModifiedDate":"2024-03-15"},{"lineNumber":81,"author":{"gitId":"Ella-e"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL, VALID_PHONE,","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"SeaHogs"},"content":" VALID_HEIGHT, VALID_WEIGHT, VALID_ADDRESS, VALID_ALLERGY);","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"javierng2knus"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Nric.class.getSimpleName());","lastModifiedDate":"2024-03-15"},{"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":"SeaHogs"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_ALLERGY);","lastModifiedDate":"2024-03-18"},{"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":"SeaHogs"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_NRIC, VALID_EMAIL, VALID_PHONE, VALID_ADDRESS,","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"SeaHogs"},"content":" VALID_HEIGHT, VALID_WEIGHT, INVALID_ALLERGY);","lastModifiedDate":"2024-03-18"},{"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":"Ella-e"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"Ella-e"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"Ella-e"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_NRIC, VALID_EMAIL, null,","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"SeaHogs"},"content":" VALID_ADDRESS, VALID_HEIGHT, VALID_WEIGHT, VALID_ALLERGY);","lastModifiedDate":"2024-03-18"},{"lineNumber":101,"author":{"gitId":"Ella-e"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Nric.class.getSimpleName());","lastModifiedDate":"2024-03-18"},{"lineNumber":102,"author":{"gitId":"Ella-e"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-18"},{"lineNumber":103,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":104,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":105,"author":{"gitId":"Ella-e"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":106,"author":{"gitId":"Ella-e"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":107,"author":{"gitId":"Ella-e"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"SeaHogs"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_NRIC, VALID_EMAIL, INVALID_PHONE, VALID_ADDRESS,","lastModifiedDate":"2024-03-18"},{"lineNumber":109,"author":{"gitId":"SeaHogs"},"content":" VALID_HEIGHT, VALID_WEIGHT, VALID_ALLERGY);","lastModifiedDate":"2024-03-18"},{"lineNumber":110,"author":{"gitId":"Ella-e"},"content":" String expectedMessage \u003d Nric.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"Ella-e"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":113,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"Ella-e"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":115,"author":{"gitId":"Ella-e"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"Ella-e"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_NRIC, null, VALID_PHONE,","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"SeaHogs"},"content":" VALID_ADDRESS, VALID_HEIGHT, VALID_WEIGHT, VALID_ALLERGY);","lastModifiedDate":"2024-03-18"},{"lineNumber":118,"author":{"gitId":"Ella-e"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Nric.class.getSimpleName());","lastModifiedDate":"2024-03-18"},{"lineNumber":119,"author":{"gitId":"Ella-e"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-18"},{"lineNumber":120,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":121,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":122,"author":{"gitId":"Ella-e"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":123,"author":{"gitId":"Ella-e"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":124,"author":{"gitId":"Ella-e"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":125,"author":{"gitId":"SeaHogs"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_NRIC, INVALID_EMAIL, VALID_PHONE, VALID_ADDRESS,","lastModifiedDate":"2024-03-18"},{"lineNumber":126,"author":{"gitId":"SeaHogs"},"content":" VALID_HEIGHT, VALID_WEIGHT, VALID_ALLERGY);","lastModifiedDate":"2024-03-18"},{"lineNumber":127,"author":{"gitId":"Ella-e"},"content":" String expectedMessage \u003d Nric.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-18"},{"lineNumber":128,"author":{"gitId":"Ella-e"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-18"},{"lineNumber":129,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":130,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":131,"author":{"gitId":"Ella-e"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":132,"author":{"gitId":"Ella-e"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":133,"author":{"gitId":"Ella-e"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_NRIC, VALID_EMAIL, VALID_PHONE,","lastModifiedDate":"2024-03-18"},{"lineNumber":134,"author":{"gitId":"SeaHogs"},"content":" null, VALID_HEIGHT, VALID_WEIGHT, VALID_ALLERGY);","lastModifiedDate":"2024-03-18"},{"lineNumber":135,"author":{"gitId":"Ella-e"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Nric.class.getSimpleName());","lastModifiedDate":"2024-03-18"},{"lineNumber":136,"author":{"gitId":"Ella-e"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-18"},{"lineNumber":137,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":138,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":139,"author":{"gitId":"Ella-e"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":140,"author":{"gitId":"Ella-e"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":141,"author":{"gitId":"Ella-e"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":142,"author":{"gitId":"SeaHogs"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_NRIC, VALID_EMAIL, VALID_PHONE, INVALID_ADDRESS,","lastModifiedDate":"2024-03-18"},{"lineNumber":143,"author":{"gitId":"SeaHogs"},"content":" VALID_HEIGHT, VALID_WEIGHT, VALID_ALLERGY);","lastModifiedDate":"2024-03-18"},{"lineNumber":144,"author":{"gitId":"Ella-e"},"content":" String expectedMessage \u003d Nric.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-18"},{"lineNumber":145,"author":{"gitId":"Ella-e"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-18"},{"lineNumber":146,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":147,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":148,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"javierng2knus":8,"MaYuehan":6,"Ella-e":56,"-":53,"SeaHogs":25}},{"path":"src/test/java/vitalconnect/storage/JsonAppointmentStorageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.storage;","lastModifiedDate":"2024-03-23"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-23"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import java.util.List;","lastModifiedDate":"2024-03-23"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Appointment;","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":"public class JsonAppointmentStorageTest {","lastModifiedDate":"2024-03-23"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":" @TempDir","lastModifiedDate":"2024-03-23"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" public Path testFolder;","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":" private Path getTempFilePath(String fileName) {","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" return testFolder.resolve(fileName);","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" public void readAppointments_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" JsonAppointmentStorage storage \u003d new JsonAppointmentStorage(null);","lastModifiedDate":"2024-03-23"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" assertThrows(NullPointerException.class, storage::readAppointments);","lastModifiedDate":"2024-03-23"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" public void readAppointments_missingFile_emptyResult() throws Exception {","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" JsonAppointmentStorage storage \u003d new JsonAppointmentStorage(getTempFilePath(\"NonExistentFile.json\"));","lastModifiedDate":"2024-03-23"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" assertFalse(storage.readAppointments().isPresent());","lastModifiedDate":"2024-03-23"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" public void readAndSaveAppointments_allInOrder_success() throws Exception {","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" Path filePath \u003d getTempFilePath(\"TempAppointments.json\");","lastModifiedDate":"2024-03-23"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":" List\u003cAppointment\u003e original \u003d vitalconnect.testutil.TypicalAppointment.getTypicalAppointments();","lastModifiedDate":"2024-03-23"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" JsonAppointmentStorage jsonAppointmentStorage \u003d new JsonAppointmentStorage(filePath);","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":" // Save in new file and read back","lastModifiedDate":"2024-03-23"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":" jsonAppointmentStorage.saveAppointments(original, filePath);","lastModifiedDate":"2024-03-23"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":" List\u003cAppointment\u003e readBack \u003d jsonAppointmentStorage.readAppointments(filePath).get();","lastModifiedDate":"2024-03-23"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":" assertEquals(original, readBack);","lastModifiedDate":"2024-03-23"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":" public void saveAppointments_nullAppointments_throwsNullPointerException() {","lastModifiedDate":"2024-03-23"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":" JsonAppointmentStorage storage \u003d new JsonAppointmentStorage(getTempFilePath(\"SomeFile.json\"));","lastModifiedDate":"2024-03-23"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":" assertThrows(NullPointerException.class, () -\u003e storage.saveAppointments(null,","lastModifiedDate":"2024-03-23"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":" getTempFilePath(\"SomeFile.json\")));","lastModifiedDate":"2024-03-23"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":54,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":56,"author":{"gitId":"MaYuehan"},"content":" public void saveAppointments_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2024-03-23"},{"lineNumber":57,"author":{"gitId":"MaYuehan"},"content":" JsonAppointmentStorage storage \u003d new JsonAppointmentStorage(null);","lastModifiedDate":"2024-03-23"},{"lineNumber":58,"author":{"gitId":"MaYuehan"},"content":" assertThrows(NullPointerException.class, () -\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":59,"author":{"gitId":"MaYuehan"},"content":" storage.saveAppointments(vitalconnect.testutil.TypicalAppointment.getTypicalAppointments(), null));","lastModifiedDate":"2024-03-23"},{"lineNumber":60,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":61,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":62,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"}],"authorContributionMap":{"MaYuehan":62}},{"path":"src/test/java/vitalconnect/storage/JsonClinicStorageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.storage;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"javierng2knus"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"javierng2knus"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.TypicalPersons.HOON;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.TypicalPersons.IDA;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.TypicalPersons.getTypicalClinic;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"javierng2knus"},"content":"import java.io.IOException;","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"javierng2knus"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"javierng2knus"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"javierng2knus"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"javierng2knus"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Clinic;","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.ReadOnlyClinic;","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"javierng2knus"},"content":"public class JsonClinicStorageTest {","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"javierng2knus"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonClinicStorageTest\");","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"javierng2knus"},"content":" @TempDir","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"javierng2knus"},"content":" public Path testFolder;","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"javierng2knus"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"javierng2knus"},"content":" public void readClinic_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"javierng2knus"},"content":" assertThrows(NullPointerException.class, () -\u003e readClinic(null));","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"javierng2knus"},"content":" private java.util.Optional\u003cReadOnlyClinic\u003e readClinic(String filePath) throws Exception {","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"javierng2knus"},"content":" return new JsonClinicStorage(Paths.get(filePath)).readClinic(addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"javierng2knus"},"content":" private Path addToTestDataPathIfNotNull(String prefsFileInTestDataFolder) {","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"javierng2knus"},"content":" return prefsFileInTestDataFolder !\u003d null","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"javierng2knus"},"content":" ? TEST_DATA_FOLDER.resolve(prefsFileInTestDataFolder)","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"javierng2knus"},"content":" : null;","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"javierng2knus"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"javierng2knus"},"content":" public void read_missingFile_emptyResult() throws Exception {","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"javierng2knus"},"content":" assertFalse(readClinic(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"javierng2knus"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"javierng2knus"},"content":" public void read_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"javierng2knus"},"content":" assertThrows(DataLoadingException.class, () -\u003e readClinic(\"notJsonFormatClinic.json\"));","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"javierng2knus"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"javierng2knus"},"content":" public void readClinic_invalidPersonClinic_throwDataLoadingException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"javierng2knus"},"content":" assertThrows(DataLoadingException.class, () -\u003e readClinic(\"invalidPersonClinic.json\"));","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"javierng2knus"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"javierng2knus"},"content":" public void readClinic_invalidAndValidPersonClinic_throwDataLoadingException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"javierng2knus"},"content":" assertThrows(DataLoadingException.class, () -\u003e readClinic(\"invalidAndValidPersonClinic.json\"));","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"javierng2knus"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"javierng2knus"},"content":" public void readAndSaveClinic_allInOrder_success() throws Exception {","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"javierng2knus"},"content":" Path filePath \u003d testFolder.resolve(\"TempClinic.json\");","lastModifiedDate":"2024-03-11"},{"lineNumber":66,"author":{"gitId":"javierng2knus"},"content":" Clinic original \u003d getTypicalClinic();","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"javierng2knus"},"content":" JsonClinicStorage jsonClinicStorage \u003d new JsonClinicStorage(filePath);","lastModifiedDate":"2024-03-11"},{"lineNumber":68,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"javierng2knus"},"content":" // Save in new file and read back","lastModifiedDate":"2024-03-11"},{"lineNumber":70,"author":{"gitId":"javierng2knus"},"content":" jsonClinicStorage.saveClinic(original, filePath);","lastModifiedDate":"2024-03-11"},{"lineNumber":71,"author":{"gitId":"javierng2knus"},"content":" ReadOnlyClinic readBack \u003d jsonClinicStorage.readClinic(filePath).get();","lastModifiedDate":"2024-03-11"},{"lineNumber":72,"author":{"gitId":"javierng2knus"},"content":" assertEquals(original, new Clinic(readBack));","lastModifiedDate":"2024-03-11"},{"lineNumber":73,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"javierng2knus"},"content":" // Modify data, overwrite exiting file, and read back","lastModifiedDate":"2024-03-11"},{"lineNumber":75,"author":{"gitId":"javierng2knus"},"content":" original.addPerson(HOON);","lastModifiedDate":"2024-03-11"},{"lineNumber":76,"author":{"gitId":"javierng2knus"},"content":" original.removePerson(ALICE);","lastModifiedDate":"2024-03-11"},{"lineNumber":77,"author":{"gitId":"javierng2knus"},"content":" jsonClinicStorage.saveClinic(original, filePath);","lastModifiedDate":"2024-03-11"},{"lineNumber":78,"author":{"gitId":"javierng2knus"},"content":" readBack \u003d jsonClinicStorage.readClinic(filePath).get();","lastModifiedDate":"2024-03-11"},{"lineNumber":79,"author":{"gitId":"javierng2knus"},"content":" assertEquals(original, new Clinic(readBack));","lastModifiedDate":"2024-03-11"},{"lineNumber":80,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":81,"author":{"gitId":"javierng2knus"},"content":" // Save and read without specifying file path","lastModifiedDate":"2024-03-11"},{"lineNumber":82,"author":{"gitId":"javierng2knus"},"content":" original.addPerson(IDA);","lastModifiedDate":"2024-03-11"},{"lineNumber":83,"author":{"gitId":"javierng2knus"},"content":" jsonClinicStorage.saveClinic(original); // file path not specified","lastModifiedDate":"2024-03-11"},{"lineNumber":84,"author":{"gitId":"javierng2knus"},"content":" readBack \u003d jsonClinicStorage.readClinic().get(); // file path not specified","lastModifiedDate":"2024-03-11"},{"lineNumber":85,"author":{"gitId":"javierng2knus"},"content":" assertEquals(original, new Clinic(readBack));","lastModifiedDate":"2024-03-11"},{"lineNumber":86,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":87,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":88,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":89,"author":{"gitId":"javierng2knus"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":90,"author":{"gitId":"javierng2knus"},"content":" public void saveClinic_nullClinic_throwsNullPointerException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":91,"author":{"gitId":"javierng2knus"},"content":" assertThrows(NullPointerException.class, () -\u003e saveClinic(null, \"SomeFile.json\"));","lastModifiedDate":"2024-03-11"},{"lineNumber":92,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":93,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":94,"author":{"gitId":"javierng2knus"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":95,"author":{"gitId":"javierng2knus"},"content":" * Saves {@code clinic} at the specified {@code filePath}.","lastModifiedDate":"2024-03-11"},{"lineNumber":96,"author":{"gitId":"javierng2knus"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":97,"author":{"gitId":"javierng2knus"},"content":" private void saveClinic(ReadOnlyClinic clinic, String filePath) {","lastModifiedDate":"2024-03-11"},{"lineNumber":98,"author":{"gitId":"javierng2knus"},"content":" try {","lastModifiedDate":"2024-03-11"},{"lineNumber":99,"author":{"gitId":"javierng2knus"},"content":" new JsonClinicStorage(Paths.get(filePath))","lastModifiedDate":"2024-03-11"},{"lineNumber":100,"author":{"gitId":"javierng2knus"},"content":" .saveClinic(clinic, addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2024-03-11"},{"lineNumber":101,"author":{"gitId":"javierng2knus"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2024-03-11"},{"lineNumber":102,"author":{"gitId":"javierng2knus"},"content":" throw new AssertionError(\"There should not be an error writing to the file.\", ioe);","lastModifiedDate":"2024-03-11"},{"lineNumber":103,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":104,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":105,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":106,"author":{"gitId":"javierng2knus"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":107,"author":{"gitId":"javierng2knus"},"content":" public void saveClinic_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":108,"author":{"gitId":"javierng2knus"},"content":" assertThrows(NullPointerException.class, () -\u003e saveClinic(new Clinic(), null));","lastModifiedDate":"2024-03-11"},{"lineNumber":109,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":110,"author":{"gitId":"javierng2knus"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"javierng2knus":101,"MaYuehan":9}},{"path":"src/test/java/vitalconnect/storage/JsonSerializableAppointmentTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.storage;","lastModifiedDate":"2024-03-23"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-23"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import java.util.List;","lastModifiedDate":"2024-03-23"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.util.JsonUtil;","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Appointment;","lastModifiedDate":"2024-03-23"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.testutil.TypicalAppointment;","lastModifiedDate":"2024-03-23"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":"public class JsonSerializableAppointmentTest {","lastModifiedDate":"2024-03-23"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\",","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":" \"JsonSerializableAppointmentTest\");","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" private static final Path TYPICAL_APPOINTMENTS_FILE \u003d TEST_DATA_FOLDER.resolve(\"typicalAppointments.json\");","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" private static final Path INVALID_APPOINTMENT_FILE \u003d TEST_DATA_FOLDER.resolve(\"invalidAppointment.json\");","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" public void toModelType_typicalAppointmentsFile_success() throws Exception {","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" JsonSerializableAppointment dataFromFile \u003d JsonUtil.readJsonFile(TYPICAL_APPOINTMENTS_FILE,","lastModifiedDate":"2024-03-23"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" JsonSerializableAppointment.class).get();","lastModifiedDate":"2024-03-23"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" List\u003cAppointment\u003e appointmentsFromFile \u003d dataFromFile.toModelType();","lastModifiedDate":"2024-03-23"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" List\u003cAppointment\u003e typicalAppointments \u003d TypicalAppointment.getTypicalAppointments();","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" assertEquals(appointmentsFromFile, typicalAppointments);","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" public void toModelType_invalidAppointmentFile_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" JsonSerializableAppointment dataFromFile \u003d JsonUtil.readJsonFile(INVALID_APPOINTMENT_FILE,","lastModifiedDate":"2024-03-23"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" JsonSerializableAppointment.class).get();","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" assertThrows(IllegalValueException.class, dataFromFile::toModelType);","lastModifiedDate":"2024-03-23"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"}],"authorContributionMap":{"MaYuehan":42}},{"path":"src/test/java/vitalconnect/storage/JsonSerializableClinicTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.storage;","lastModifiedDate":"2024-03-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":"MaYuehan"},"content":"import static vitalconnect.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.util.JsonUtil;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Clinic;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.testutil.TypicalPersons;","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"javierng2knus"},"content":"public class JsonSerializableClinicTest {","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"javierng2knus"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonSerializableClinicTest\");","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"javierng2knus"},"content":" private static final Path TYPICAL_PERSONS_FILE \u003d TEST_DATA_FOLDER.resolve(\"typicalPersonsClinic.json\");","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"javierng2knus"},"content":" private static final Path INVALID_PERSON_FILE \u003d TEST_DATA_FOLDER.resolve(\"invalidPersonClinic.json\");","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"javierng2knus"},"content":" private static final Path DUPLICATE_PERSON_FILE \u003d TEST_DATA_FOLDER.resolve(\"duplicatePersonClinic.json\");","lastModifiedDate":"2024-03-11"},{"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":"javierng2knus"},"content":" JsonSerializableClinic dataFromFile \u003d JsonUtil.readJsonFile(TYPICAL_PERSONS_FILE,","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"javierng2knus"},"content":" JsonSerializableClinic.class).get();","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"javierng2knus"},"content":" Clinic clinicFromFile \u003d dataFromFile.toModelType();","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"javierng2knus"},"content":" Clinic typicalPersonsClinic \u003d TypicalPersons.getTypicalClinic();","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"javierng2knus"},"content":" assertEquals(clinicFromFile, typicalPersonsClinic);","lastModifiedDate":"2024-03-11"},{"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":"-"},"content":" public void toModelType_invalidPersonFile_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"javierng2knus"},"content":" JsonSerializableClinic dataFromFile \u003d JsonUtil.readJsonFile(INVALID_PERSON_FILE,","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"javierng2knus"},"content":" JsonSerializableClinic.class).get();","lastModifiedDate":"2024-03-11"},{"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":"-"},"content":" public void toModelType_duplicatePersons_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"javierng2knus"},"content":" JsonSerializableClinic dataFromFile \u003d JsonUtil.readJsonFile(DUPLICATE_PERSON_FILE,","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"javierng2knus"},"content":" JsonSerializableClinic.class).get();","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"javierng2knus"},"content":" assertThrows(IllegalValueException.class, JsonSerializableClinic.MESSAGE_DUPLICATE_PERSON,","lastModifiedDate":"2024-03-11"},{"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":{"javierng2knus":15,"MaYuehan":6,"-":26}},{"path":"src/test/java/vitalconnect/storage/JsonUserPrefsStorageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.storage;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import static vitalconnect.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.commons.core.GuiSettings;","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.UserPrefs;","lastModifiedDate":"2024-03-13"},{"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":"javierng2knus"},"content":" userPrefs.setClinicFilePath(Paths.get(\"clinic.json\"));","lastModifiedDate":"2024-03-11"},{"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":{"javierng2knus":1,"MaYuehan":5,"-":117}},{"path":"src/test/java/vitalconnect/storage/StorageManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.storage;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import static vitalconnect.testutil.TypicalPersons.getTypicalClinic;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import java.util.List;","lastModifiedDate":"2024-03-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.core.GuiSettings;","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Appointment;","lastModifiedDate":"2024-03-23"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Clinic;","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.ReadOnlyClinic;","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.UserPrefs;","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class StorageManagerTest {","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private StorageManager storageManager;","lastModifiedDate":"2017-04-01"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2016-10-19"},{"lineNumber":29,"author":{"gitId":"javierng2knus"},"content":" JsonClinicStorage clinicStorage \u003d new JsonClinicStorage(getTempFilePath(\"ab\"));","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(getTempFilePath(\"prefs\"));","lastModifiedDate":"2017-02-25"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" JsonAppointmentStorage appointmentStorage \u003d new JsonAppointmentStorage(getTempFilePath(\"appts\"));","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" storageManager \u003d new StorageManager(clinicStorage, userPrefsStorage, appointmentStorage);","lastModifiedDate":"2024-03-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Path getTempFilePath(String fileName) {","lastModifiedDate":"2018-04-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" return testFolder.resolve(fileName);","lastModifiedDate":"2019-04-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public void prefsReadSave() throws Exception {","lastModifiedDate":"2016-10-16"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-09-28"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Note: This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2016-09-28"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * {@link JsonUserPrefsStorage} class.","lastModifiedDate":"2016-10-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * More extensive testing of UserPref saving/reading is done in {@link JsonUserPrefsStorageTest} class.","lastModifiedDate":"2016-10-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28"},{"lineNumber":47,"author":{"gitId":"-"},"content":" UserPrefs original \u003d new UserPrefs();","lastModifiedDate":"2016-09-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" original.setGuiSettings(new GuiSettings(300, 600, 4, 6));","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" storageManager.saveUserPrefs(original);","lastModifiedDate":"2016-09-28"},{"lineNumber":50,"author":{"gitId":"-"},"content":" UserPrefs retrieved \u003d storageManager.readUserPrefs().get();","lastModifiedDate":"2016-09-28"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertEquals(original, retrieved);","lastModifiedDate":"2016-09-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"javierng2knus"},"content":" public void clinicReadSave() throws Exception {","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Note: This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2016-10-16"},{"lineNumber":58,"author":{"gitId":"javierng2knus"},"content":" * {@link JsonClinicStorage} class.","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"javierng2knus"},"content":" * More extensive testing of UserPref saving/reading is done in {@link JsonClinicStorageTest} class.","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":61,"author":{"gitId":"javierng2knus"},"content":" Clinic original \u003d getTypicalClinic();","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"javierng2knus"},"content":" storageManager.saveClinic(original);","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"javierng2knus"},"content":" ReadOnlyClinic retrieved \u003d storageManager.readClinic().get();","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"javierng2knus"},"content":" assertEquals(original, new Clinic(retrieved));","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":68,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":69,"author":{"gitId":"MaYuehan"},"content":" public void appointmentsReadSave() throws Exception {","lastModifiedDate":"2024-03-23"},{"lineNumber":70,"author":{"gitId":"MaYuehan"},"content":" // Prepare original list of appointments","lastModifiedDate":"2024-03-23"},{"lineNumber":71,"author":{"gitId":"MaYuehan"},"content":" List\u003cAppointment\u003e original \u003d vitalconnect.testutil.TypicalAppointment.getTypicalAppointments();","lastModifiedDate":"2024-03-23"},{"lineNumber":72,"author":{"gitId":"MaYuehan"},"content":" storageManager.saveAppointments(original);","lastModifiedDate":"2024-03-23"},{"lineNumber":73,"author":{"gitId":"MaYuehan"},"content":" List\u003cAppointment\u003e retrieved \u003d storageManager.readAppointments().get();","lastModifiedDate":"2024-03-23"},{"lineNumber":74,"author":{"gitId":"MaYuehan"},"content":" assertEquals(original, retrieved);","lastModifiedDate":"2024-03-23"},{"lineNumber":75,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":76,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-01"},{"lineNumber":78,"author":{"gitId":"javierng2knus"},"content":" public void getClinicFilePath() {","lastModifiedDate":"2024-03-11"},{"lineNumber":79,"author":{"gitId":"javierng2knus"},"content":" assertNotNull(storageManager.getClinicFilePath());","lastModifiedDate":"2024-03-11"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":82,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":83,"author":{"gitId":"MaYuehan"},"content":" public void getAppointmentFilePath() {","lastModifiedDate":"2024-03-23"},{"lineNumber":84,"author":{"gitId":"MaYuehan"},"content":" assertNotNull(storageManager.getAppointmentFilePath());","lastModifiedDate":"2024-03-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":86,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":87,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"}],"authorContributionMap":{"javierng2knus":10,"MaYuehan":26,"-":51}},{"path":"src/test/java/vitalconnect/testutil/Assert.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.testutil;","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":" Assertions.assertEquals(expectedMessage, thrownException.getMessage());","lastModifiedDate":"2019-03-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-17"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-07-17"}],"authorContributionMap":{"MaYuehan":1,"-":33}},{"path":"src/test/java/vitalconnect/testutil/ClinicBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.testutil;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Clinic;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"javierng2knus"},"content":"/**","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"javierng2knus"},"content":" * A utility class to help with building Clinic objects.","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"javierng2knus"},"content":" * Example usage: \u003cbr\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"javierng2knus"},"content":" * {@code Clinic ab \u003d new ClinicBuilder().withPerson(\"John\", \"Doe\").build();}","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"javierng2knus"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"javierng2knus"},"content":"public class ClinicBuilder {","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"javierng2knus"},"content":" private Clinic clinic;","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"javierng2knus"},"content":" public ClinicBuilder() {","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"javierng2knus"},"content":" clinic \u003d new Clinic();","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"javierng2knus"},"content":" public ClinicBuilder(Clinic clinic) {","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"javierng2knus"},"content":" this.clinic \u003d clinic;","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"javierng2knus"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"javierng2knus"},"content":" * Adds a new {@code Person} to the {@code Clinic} that we are building.","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"javierng2knus"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"javierng2knus"},"content":" public ClinicBuilder withPerson(Person person) {","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"javierng2knus"},"content":" clinic.addPerson(person);","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"javierng2knus"},"content":" return this;","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"javierng2knus"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"javierng2knus"},"content":" public Clinic build() {","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"javierng2knus"},"content":" return clinic;","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"javierng2knus"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"javierng2knus"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"javierng2knus":31,"MaYuehan":3}},{"path":"src/test/java/vitalconnect/testutil/EditPersonDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.testutil;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.identificationinformation.Name;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"javierng2knus"},"content":"import vitalconnect.model.person.identificationinformation.Nric;","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * A utility class to help with building EditPersonDescriptor objects.","lastModifiedDate":"2017-05-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorBuilder {","lastModifiedDate":"2017-05-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private EditPersonDescriptor descriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder() {","lastModifiedDate":"2017-05-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-05-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(EditPersonDescriptor descriptor) {","lastModifiedDate":"2017-05-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":" this.descriptor \u003d new EditPersonDescriptor(descriptor);","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Returns an {@code EditPersonDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2017-06-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":27,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"javierng2knus"},"content":" descriptor.setName(person.getIdentificationInformation().getName());","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"javierng2knus"},"content":" descriptor.setNric(person.getIdentificationInformation().getNric());","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"SeaHogs"},"content":" //descriptor.setTags(person.getTags());","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2017-12-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"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":"javierng2knus"},"content":" * Sets the {@code Nric} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":44,"author":{"gitId":"javierng2knus"},"content":" public EditPersonDescriptorBuilder withNric(String nric) {","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"javierng2knus"},"content":" descriptor.setNric(new Nric(nric));","lastModifiedDate":"2024-03-15"},{"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":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"javierng2knus":6,"MaYuehan":4,"-":41,"SeaHogs":1}},{"path":"src/test/java/vitalconnect/testutil/PersonBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.testutil;","lastModifiedDate":"2024-03-13"},{"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":"SeaHogs"},"content":"import vitalconnect.model.allergytag.AllergyTag;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.Address;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.ContactInformation;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.Email;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"Ella-e"},"content":"import vitalconnect.model.person.contactinformation.Phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"javierng2knus"},"content":"import vitalconnect.model.person.identificationinformation.IdentificationInformation;","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.identificationinformation.Name;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"javierng2knus"},"content":"import vitalconnect.model.person.identificationinformation.Nric;","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.person.medicalinformation.Height;","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.person.medicalinformation.MedicalInformation;","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"SeaHogs"},"content":"import vitalconnect.model.person.medicalinformation.Weight;","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.util.SampleDataUtil;","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18"},{"lineNumber":26,"author":{"gitId":"javierng2knus"},"content":" public static final String DEFAULT_NRIC \u003d \"S7654321F\";","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"Ella-e"},"content":" public static final String DEFAULT_EMAIL \u003d \"\";","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"Ella-e"},"content":" public static final String DEFAULT_PHONE \u003d \"\";","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"Ella-e"},"content":" public static final String DEFAULT_ADDRESS \u003d \"\";","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"SeaHogs"},"content":" public static final String DEFAULT_HEIGHT \u003d \"\";","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"SeaHogs"},"content":" public static final String DEFAULT_WEIGHT \u003d \"\";","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":34,"author":{"gitId":"javierng2knus"},"content":" private Nric nric;","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"Ella-e"},"content":" private Email email;","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"Ella-e"},"content":" private Phone phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"Ella-e"},"content":" private Address address;","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"SeaHogs"},"content":" private Height height;","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"SeaHogs"},"content":" private Weight weight;","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"SeaHogs"},"content":" private Set\u003cAllergyTag\u003e allergyTags;","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20"},{"lineNumber":47,"author":{"gitId":"javierng2knus"},"content":" nric \u003d new Nric(DEFAULT_NRIC);","lastModifiedDate":"2024-03-15"},{"lineNumber":48,"author":{"gitId":"Ella-e"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"Ella-e"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"Ella-e"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"SeaHogs"},"content":" height \u003d new Height(DEFAULT_HEIGHT);","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"SeaHogs"},"content":" weight \u003d new Weight(DEFAULT_WEIGHT);","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"SeaHogs"},"content":" allergyTags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10"},{"lineNumber":60,"author":{"gitId":"javierng2knus"},"content":" name \u003d personToCopy.getIdentificationInformation().getName();","lastModifiedDate":"2024-03-15"},{"lineNumber":61,"author":{"gitId":"javierng2knus"},"content":" nric \u003d personToCopy.getIdentificationInformation().getNric();","lastModifiedDate":"2024-03-15"},{"lineNumber":62,"author":{"gitId":"Ella-e"},"content":" email \u003d personToCopy.getContactInformation().getEmail();","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"Ella-e"},"content":" phone \u003d personToCopy.getContactInformation().getPhone();","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"Ella-e"},"content":" address \u003d personToCopy.getContactInformation().getAddress();","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"SeaHogs"},"content":" height \u003d personToCopy.getMedicalInformation().getHeight();","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"SeaHogs"},"content":" weight \u003d personToCopy.getMedicalInformation().getWeight();","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"SeaHogs"},"content":" allergyTags \u003d new HashSet\u003c\u003e(personToCopy.getMedicalInformation().getAllergyTag());","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20"},{"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":"2017-07-26"},{"lineNumber":79,"author":{"gitId":"SeaHogs"},"content":" * Parses the {@code allergyTags} into a {@code Set\u003cAllergyTag\u003e}","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"SeaHogs"},"content":" * and set it to the {@code Person} that we are building.","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String ... tags) {","lastModifiedDate":"2017-08-15"},{"lineNumber":83,"author":{"gitId":"SeaHogs"},"content":" this.allergyTags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":88,"author":{"gitId":"javierng2knus"},"content":" * Sets the {@code Nric} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":90,"author":{"gitId":"javierng2knus"},"content":" public PersonBuilder withNric(String nric) {","lastModifiedDate":"2024-03-15"},{"lineNumber":91,"author":{"gitId":"javierng2knus"},"content":" this.nric \u003d new Nric(nric);","lastModifiedDate":"2024-03-15"},{"lineNumber":92,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":95,"author":{"gitId":"Ella-e"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"Ella-e"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"Ella-e"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"Ella-e"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"Ella-e"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"Ella-e"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"Ella-e"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"Ella-e"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"Ella-e"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"Ella-e"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"Ella-e"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"Ella-e"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":109,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"Ella-e"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"Ella-e"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"Ella-e"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"Ella-e"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"Ella-e"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"Ella-e"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"Ella-e"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"SeaHogs"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":120,"author":{"gitId":"SeaHogs"},"content":" * Sets the {@code Height} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":121,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":122,"author":{"gitId":"SeaHogs"},"content":" public PersonBuilder withHeight(String height) {","lastModifiedDate":"2024-03-19"},{"lineNumber":123,"author":{"gitId":"SeaHogs"},"content":" this.height \u003d new Height(height);","lastModifiedDate":"2024-03-19"},{"lineNumber":124,"author":{"gitId":"SeaHogs"},"content":" return this;","lastModifiedDate":"2024-03-19"},{"lineNumber":125,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":126,"author":{"gitId":"SeaHogs"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":127,"author":{"gitId":"SeaHogs"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":128,"author":{"gitId":"SeaHogs"},"content":" * Sets the {@code Weight} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":129,"author":{"gitId":"SeaHogs"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":130,"author":{"gitId":"SeaHogs"},"content":" public PersonBuilder withWeight(String weight) {","lastModifiedDate":"2024-03-19"},{"lineNumber":131,"author":{"gitId":"SeaHogs"},"content":" this.weight \u003d new Weight(weight);","lastModifiedDate":"2024-03-19"},{"lineNumber":132,"author":{"gitId":"SeaHogs"},"content":" return this;","lastModifiedDate":"2024-03-19"},{"lineNumber":133,"author":{"gitId":"SeaHogs"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":134,"author":{"gitId":"Ella-e"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":135,"author":{"gitId":"Ella-e"},"content":" * Build a person.","lastModifiedDate":"2024-03-17"},{"lineNumber":136,"author":{"gitId":"Ella-e"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05"},{"lineNumber":138,"author":{"gitId":"Ella-e"},"content":" return new Person(new IdentificationInformation(name, nric),","lastModifiedDate":"2024-03-17"},{"lineNumber":139,"author":{"gitId":"SeaHogs"},"content":" new ContactInformation(email, phone, address), new MedicalInformation(height, weight, allergyTags));","lastModifiedDate":"2024-03-18"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":142,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03"}],"authorContributionMap":{"javierng2knus":10,"MaYuehan":4,"Ella-e":44,"-":50,"SeaHogs":34}},{"path":"src/test/java/vitalconnect/testutil/PersonUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.testutil;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":3,"author":{"gitId":"SeaHogs"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_ALLERGYTAG;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"javierng2knus"},"content":"import static vitalconnect.logic.parser.CliSyntax.PREFIX_NRIC;","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.AddCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static String getAddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":20,"author":{"gitId":"-"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2017-03-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":27,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05"},{"lineNumber":28,"author":{"gitId":"javierng2knus"},"content":" sb.append(PREFIX_NAME + person.getIdentificationInformation().getName().fullName + \" \");","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"javierng2knus"},"content":" sb.append(PREFIX_NRIC + person.getIdentificationInformation().getNric().nric + \" \");","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"SeaHogs"},"content":" person.getMedicalInformation().getAllergyTag().stream().forEach(","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"SeaHogs"},"content":" s -\u003e sb.append(PREFIX_ALLERGYTAG + s.tagName + \" \")","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26"},{"lineNumber":40,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26"},{"lineNumber":41,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":42,"author":{"gitId":"javierng2knus"},"content":" descriptor.getNric().ifPresent(ic -\u003e sb.append(PREFIX_NRIC).append(ic.nric).append(\" \"));","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"SeaHogs"},"content":" // if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"SeaHogs"},"content":" // Set\u003cAllergyTag\u003e allergyTags \u003d descriptor.getTags().get();","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"SeaHogs"},"content":" // if (allergyTags.isEmpty()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"SeaHogs"},"content":" // sb.append(PREFIX_ALLERGYTAG);","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"SeaHogs"},"content":" // } else {","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"SeaHogs"},"content":" // allergyTags.forEach(s -\u003e sb.append(PREFIX_ALLERGYTAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"SeaHogs"},"content":" // }","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"SeaHogs"},"content":" // }","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05"}],"authorContributionMap":{"javierng2knus":4,"MaYuehan":5,"-":33,"SeaHogs":11}},{"path":"src/test/java/vitalconnect/testutil/SerializableTestClass.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.testutil;","lastModifiedDate":"2024-03-13"},{"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":{"MaYuehan":1,"-":71}},{"path":"src/test/java/vitalconnect/testutil/TestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.testutil;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.commons.core.index.Index;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":" return Index.fromOneBased(model.getFilteredPersonList().size() / 2);","lastModifiedDate":"2018-08-13"},{"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":"-"},"content":" return Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2018-08-13"},{"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":"-"},"content":" public static Person getPerson(Model model, Index index) {","lastModifiedDate":"2018-01-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList().get(index.getZeroBased());","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30"},{"lineNumber":55,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"MaYuehan":4,"-":51}},{"path":"src/test/java/vitalconnect/testutil/TypicalAppointment.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.testutil;","lastModifiedDate":"2024-03-23"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-03-23"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import java.util.List;","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Appointment;","lastModifiedDate":"2024-03-23"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"/**","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":" * A utility class containing a list of {@code Appointment} objects to be used in tests.","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"public class TypicalAppointment {","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":" public static final Appointment APPOINTMENT_1 \u003d new Appointment(\"Alice Pauline\", \"S1234567D\",","lastModifiedDate":"2024-03-23"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" LocalDateTime.of(2023, 3, 14, 15, 30));","lastModifiedDate":"2024-03-23"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":" public static final Appointment APPOINTMENT_2 \u003d new Appointment(\"Benson Meier\", \"S1234568B\",","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":" LocalDateTime.of(2023, 3, 15, 10, 0));","lastModifiedDate":"2024-03-23"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" public static final Appointment APPOINTMENT_3 \u003d new Appointment(\"Carl Kurz\", \"T1234567J\",","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" LocalDateTime.of(2023, 4, 16, 9, 0));","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":" public static final Appointment APPOINTMENT_4 \u003d new Appointment(\"Daniel Meier\", \"F1234567N\",","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" LocalDateTime.of(2023, 4, 17, 14, 45));","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" public static final Appointment APPOINTMENT_5 \u003d new Appointment(\"Elle Meyer\", \"G1234567X\",","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":" LocalDateTime.of(2023, 5, 18, 16, 30));","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" public static final Appointment APPOINTMENT_6 \u003d new Appointment(\"Fiona Kunz\", \"M1234567K\",","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" LocalDateTime.of(2023, 6, 19, 10, 15));","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" public static final Appointment APPOINTMENT_7 \u003d new Appointment(\"George Best\", \"F1234560R\",","lastModifiedDate":"2024-03-23"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" LocalDateTime.of(2023, 7, 20, 11, 30));","lastModifiedDate":"2024-03-23"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" private TypicalAppointment() {} // prevents instantiation","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" * Returns a list of typical appointments.","lastModifiedDate":"2024-03-23"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" public static List\u003cAppointment\u003e getTypicalAppointments() {","lastModifiedDate":"2024-03-23"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(APPOINTMENT_1, APPOINTMENT_2, APPOINTMENT_3, APPOINTMENT_4,","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" APPOINTMENT_5, APPOINTMENT_6, APPOINTMENT_7));","lastModifiedDate":"2024-03-23"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-03-23"}],"authorContributionMap":{"MaYuehan":39}},{"path":"src/test/java/vitalconnect/testutil/TypicalIndexes.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.testutil;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.commons.core.index.Index;","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":"}","lastModifiedDate":"2017-08-05"}],"authorContributionMap":{"MaYuehan":2,"-":10}},{"path":"src/test/java/vitalconnect/testutil/TypicalPersons.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.testutil;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":3,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"javierng2knus"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.VALID_NRIC_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"javierng2knus"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.VALID_NRIC_BOB;","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"Ella-e"},"content":"import static vitalconnect.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.Clinic;","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"import vitalconnect.model.person.Person;","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final Person ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2018-01-10"},{"lineNumber":23,"author":{"gitId":"javierng2knus"},"content":" .withNric(\"S1234567D\")","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"Ella-e"},"content":" .withEmail(\"email@e.com\")","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"Ella-e"},"content":" .withHeight(\"163\")","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"Ella-e"},"content":" .withWeight(\"50\").build();","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10"},{"lineNumber":28,"author":{"gitId":"javierng2knus"},"content":" .withNric(\"S1234568B\")","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"SeaHogs"},"content":" .build();","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"javierng2knus"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\")","lastModifiedDate":"2024-03-15"},{"lineNumber":31,"author":{"gitId":"javierng2knus"},"content":" .withNric(\"T1234567J\").build();","lastModifiedDate":"2024-03-15"},{"lineNumber":32,"author":{"gitId":"javierng2knus"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\")","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"javierng2knus"},"content":" .withNric(\"F1234567N\")","lastModifiedDate":"2024-03-15"},{"lineNumber":34,"author":{"gitId":"SeaHogs"},"content":" .build();","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"javierng2knus"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\")","lastModifiedDate":"2024-03-15"},{"lineNumber":36,"author":{"gitId":"javierng2knus"},"content":" .withNric(\"G1234567X\").build();","lastModifiedDate":"2024-03-15"},{"lineNumber":37,"author":{"gitId":"javierng2knus"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\")","lastModifiedDate":"2024-03-15"},{"lineNumber":38,"author":{"gitId":"javierng2knus"},"content":" .withNric(\"M1234567K\").build();","lastModifiedDate":"2024-03-15"},{"lineNumber":39,"author":{"gitId":"javierng2knus"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\")","lastModifiedDate":"2024-03-15"},{"lineNumber":40,"author":{"gitId":"SeaHogs"},"content":" .withNric(\"F1234560R\").withHeight(\"160\").withWeight(\"160\").withTags(\"peanuts\").build();","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":43,"author":{"gitId":"javierng2knus"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withNric(\"S1234569J\").build();","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"javierng2knus"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withNric(\"S1234560G\").build();","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":46,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22"},{"lineNumber":47,"author":{"gitId":"SeaHogs"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withNric(VALID_NRIC_AMY).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"SeaHogs"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withNric(VALID_NRIC_BOB).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21"},{"lineNumber":50,"author":{"gitId":"Ella-e"},"content":" public static final Person BOB_CONTACT \u003d new PersonBuilder().withName(VALID_NAME_BOB).withNric(VALID_NRIC_BOB)","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"Ella-e"},"content":" .withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"Ella-e"},"content":" .withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"Ella-e"},"content":" .withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"Ella-e"},"content":" .build();","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"Ella-e"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":61,"author":{"gitId":"javierng2knus"},"content":" * Returns an {@code Clinic} with all the typical persons.","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":63,"author":{"gitId":"javierng2knus"},"content":" public static Clinic getTypicalClinic() {","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"javierng2knus"},"content":" Clinic c \u003d new Clinic();","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10"},{"lineNumber":66,"author":{"gitId":"javierng2knus"},"content":" c.addPerson(person);","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13"},{"lineNumber":68,"author":{"gitId":"javierng2knus"},"content":" return c;","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10"},{"lineNumber":72,"author":{"gitId":"javierng2knus"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2024-03-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04"},{"lineNumber":74,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13"}],"authorContributionMap":{"javierng2knus":21,"MaYuehan":5,"Ella-e":12,"-":31,"SeaHogs":5}},{"path":"src/test/java/vitalconnect/ui/TestFxmlObject.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.ui;","lastModifiedDate":"2024-03-13"},{"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":{"MaYuehan":1,"-":44}},{"path":"src/test/java/vitalconnect/ui/UiPartTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package vitalconnect.ui;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import static vitalconnect.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-13"},{"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":"MaYuehan"},"content":"import vitalconnect.MainApp;","lastModifiedDate":"2024-03-13"},{"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":"2019-03-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new TestUiPart\u003cObject\u003e((URL) null, new Object()));","lastModifiedDate":"2019-03-14"},{"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":"2019-03-14"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertThrows(AssertionError.class, () -\u003e new TestUiPart\u003cObject\u003e(missingFileUrl, new Object()));","lastModifiedDate":"2019-03-14"},{"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":"2019-03-14"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertThrows(AssertionError.class, () -\u003e new TestUiPart\u003cObject\u003e(invalidFileUrl, new Object()));","lastModifiedDate":"2019-03-14"},{"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":"2019-03-14"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new TestUiPart\u003cObject\u003e((String) null, new Object()));","lastModifiedDate":"2019-03-14"},{"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":"2019-03-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new TestUiPart\u003cObject\u003e(MISSING_FILE_PATH, new Object()));","lastModifiedDate":"2019-03-14"},{"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":"2019-03-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertThrows(AssertionError.class, () -\u003e new TestUiPart\u003cObject\u003e(INVALID_FILE_PATH, new Object()));","lastModifiedDate":"2019-03-14"},{"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":" */","lastModifiedDate":"2016-12-21"},{"lineNumber":88,"author":{"gitId":"-"},"content":" private static class TestUiPart\u003cT\u003e extends UiPart\u003cT\u003e {","lastModifiedDate":"2016-12-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-12-21"},{"lineNumber":91,"author":{"gitId":"-"},"content":" private TestFxmlObject validFileRoot; // Check that @FXML annotations work","lastModifiedDate":"2016-12-21"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":93,"author":{"gitId":"-"},"content":" TestUiPart(URL fxmlFileUrl, T root) {","lastModifiedDate":"2017-11-29"},{"lineNumber":94,"author":{"gitId":"-"},"content":" super(fxmlFileUrl, root);","lastModifiedDate":"2017-11-29"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-11-29"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-11-29"},{"lineNumber":97,"author":{"gitId":"-"},"content":" TestUiPart(String fxmlFileName, T root) {","lastModifiedDate":"2017-11-29"},{"lineNumber":98,"author":{"gitId":"-"},"content":" super(fxmlFileName, root);","lastModifiedDate":"2017-11-29"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-11-29"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-11-29"},{"lineNumber":101,"author":{"gitId":"-"},"content":" TestUiPart(URL fxmlFileUrl) {","lastModifiedDate":"2016-12-21"},{"lineNumber":102,"author":{"gitId":"-"},"content":" super(fxmlFileUrl);","lastModifiedDate":"2016-12-21"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertEquals(VALID_FILE_ROOT, validFileRoot);","lastModifiedDate":"2016-12-21"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-21"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":106,"author":{"gitId":"-"},"content":" TestUiPart(String fxmlFileName) {","lastModifiedDate":"2016-12-21"},{"lineNumber":107,"author":{"gitId":"-"},"content":" super(fxmlFileName);","lastModifiedDate":"2016-12-21"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertEquals(VALID_FILE_ROOT, validFileRoot);","lastModifiedDate":"2016-12-21"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","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"}],"authorContributionMap":{"MaYuehan":3,"-":110}},{"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":"MaYuehan"},"content":"\u003c?import vitalconnect.ui.TestFxmlObject?\u003e","lastModifiedDate":"2024-03-13"},{"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":{"MaYuehan":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":"MaYuehan"},"content":"\u003cfx:root type\u003d\"vitalconnect.ui.TestFxmlObject\" xmlns\u003d\"http://javafx.com/javafx/17\"","lastModifiedDate":"2024-03-13"},{"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":{"MaYuehan":1,"-":5}}] diff --git a/AY2324S2-CS2103T-W08-2_tp_master/commits.json b/AY2324S2-CS2103T-W08-2_tp_master/commits.json index b54cb6a4..3c67b8a6 100644 --- a/AY2324S2-CS2103T-W08-2_tp_master/commits.json +++ b/AY2324S2-CS2103T-W08-2_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"javierng2knus":[{"date":"2024-03-06","commitResults":[{"hash":"088a7db21464bbc65dd5ada35bae72aefe113f5c","isMergeCommit":false,"messageTitle":"Update the AboutUs page","messageBody":"Update the AboutUs page to include my own information and image.\n\nResponsibility is left blank as the responsibilities will need to properly reassigned in a future date.\n","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}},{"hash":"4c25caf37a37b349d57c0caaca6fce688aa74c51","isMergeCommit":false,"messageTitle":"Update the developer guide","messageBody":"Update the DeveloperGuide.md file to update user stories, use cases and glossary.\n\nThe user stories are now more organized and more cohesive with the phrasing. Additional user stories were also added or removed.\n\nThe use cases are now more general to account for the similar uses for adding/removing/modifying of different types of information.\n\nThe glossary had some unnecessary terms and was missing the term \u0027tooltip\u0027.\n","fileTypesAndContributionMap":{"docs":{"insertions":54,"deletions":46}}}]},{"date":"2024-03-10","commitResults":[{"hash":"8eb8d8b4d1cdbdae4938076ebad5173f557e371d","isMergeCommit":false,"messageTitle":"Quick fix to dev guide","messageBody":"Quick fix to dev guide regarding user story\n","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"dcf05bcf89c9ee6ce058962adbf0e30f84b1a418","isMergeCommit":false,"messageTitle":"Rename seedu.address","messageBody":"Rename all instances of seedu.address to vitalConnect.\nEnsure the files are in the proper folders for the packages as well.\n","fileTypesAndContributionMap":{"other":{"insertions":773,"deletions":773},"docs":{"insertions":14,"deletions":14},"test-code":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-11","commitResults":[{"hash":"f3892a94511fceab64a7cd7a6661a627811fafd0","isMergeCommit":false,"messageTitle":"Rename address book","messageBody":"Rename all instances of address book to clinic.\nEnsure the files are renamed as well.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":198,"deletions":198},"other":{"insertions":85,"deletions":85},"test-code":{"insertions":246,"deletions":246}}},{"hash":"796b921a3e7e68f0c0ad41e9dcb614acb252ea37","isMergeCommit":false,"messageTitle":"Extract info to contact and identification info","messageBody":"Extract info to contact and identification info.\n\nName and Nric belongs to identification information.\nEmail, phone, address belongs to contact information.\n\nThe current implementation ignores the uses as they should be done along side the implementations of the new commands such as AddIdentifcationInformationCommand or something similar.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":165,"deletions":46},"other":{"insertions":11,"deletions":11},"test-code":{"insertions":29,"deletions":29}}},{"hash":"792180a11f1187d84068f6ff385bc355ec393c2d","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"Fix checkstyle regarding the errors such as whitespaces.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":16},"test-code":{"insertions":11,"deletions":11}}}]},{"date":"2024-03-13","commitResults":[{"hash":"fafca5ce2e6a3d270d3607de7817ea89471a09cf","isMergeCommit":true,"messageTitle":"Merge pull request #48 from MaYuehan/branch-Appointment","messageBody":"Branch appointment","fileTypesAndContributionMap":{}}]},{"date":"2024-03-15","commitResults":[{"hash":"f8940c3b0241e36680c047a5739ad678c35269b3","isMergeCommit":false,"messageTitle":"Rework default commands","messageBody":"Update the default add, remove, edit command\n\nRemoved previous information such as phone, address, email as they will be added/removed/displayed through a different command. (Most likely listContactInformationCommand or something similar)\n","fileTypesAndContributionMap":{"functional-code":{"insertions":248,"deletions":212},"test-code":{"insertions":153,"deletions":375}}},{"hash":"312a6efa7d3391e6225184292439d8494ecac615","isMergeCommit":false,"messageTitle":"Fix test and bugs","messageBody":"Adjusted all relevant test files from previous push and changes of files.\n\nFixed some bugs regarding the json files\n","fileTypesAndContributionMap":{"functional-code":{"insertions":31,"deletions":9},"test-code":{"insertions":32,"deletions":31}}}]},{"date":"2024-03-17","commitResults":[{"hash":"d206eb9391cdd1eb92f9e60b39e20dc7198e2239","isMergeCommit":false,"messageTitle":"Fulfil test coverage","messageBody":"Added tests to Nric and IdentificationInformation as they were lacking in test cases.\n","fileTypesAndContributionMap":{"test-code":{"insertions":136,"deletions":0}}},{"hash":"eb1f8468334b205583a548567575d6342dd0a125","isMergeCommit":false,"messageTitle":"Fix checkstyle for tests","messageBody":"Fixed the checkstyle issues for the test cases.\n","fileTypesAndContributionMap":{"test-code":{"insertions":42,"deletions":19}}},{"hash":"214680aeff3bef828f50093bc2a8800204e95d50","isMergeCommit":false,"messageTitle":"Fix issue for verification function","messageBody":"IdentificationInformation class did not properly check if name and nric is valid.\n\nAdded fix for it.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"be4954c56d5ccaee787c1a10ea939027d899cc64","isMergeCommit":false,"messageTitle":"Update help command to reflect user guide","messageBody":"The default implementation of the help command leads to the ab3 website instead of the project\u0027s user guide.\n\nModified the link to redirect to the proper location.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"9a8111895e8a9014fc8908b0332a49bb6e1d2c6e","isMergeCommit":false,"messageTitle":"Fix Junit test issue","messageBody":"Attempt to fix the commented out Junit test\n","fileTypesAndContributionMap":{"test-code":{"insertions":8,"deletions":5}}},{"hash":"865022ca71a0d9caf6f88c624ecffaa0808e2c37","isMergeCommit":false,"messageTitle":"Update README.md to show codecov badge","messageBody":"Add the badge for codecov","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}},{"hash":"77e588d8ed97fb6fc2e66b711f3f7189392a9aca","isMergeCommit":true,"messageTitle":"Merge pull request #64 from AY2324S2-CS2103T-W08-2/javierng2knus-readme","messageBody":"Update README.md to show codecov badge","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"31029335881083c4bd9215d038c6b7e3e82d6fcf","isMergeCommit":true,"messageTitle":"Merge pull request #68 from SeaHogs/branch-Med-Info","messageBody":"Fix copyPerson","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"5654b237b0445f583ff8bb02f18ab24a9e32138d","isMergeCommit":false,"messageTitle":"Standardize the command format","messageBody":"Updated all commands and their formats except appointment commands which will be updated separately.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":30,"deletions":33}}}]}],"MaYuehan":[{"date":"2024-02-25","commitResults":[{"hash":"c65d82151bc280716b9fe72527033275eaa16b67","isMergeCommit":false,"messageTitle":"Update Readme and AboutUs Modify the Readme file, add more details about the project and the features we plan to achieve for v1.2. Also modify the AboutUs file, add the information of mine. Create my profile file and link to AboutUs.","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":130,"deletions":6}}}]},{"date":"2024-03-06","commitResults":[{"hash":"7fd6a869df3d4935a1cdd906d8ac21c98fc820be","isMergeCommit":false,"messageTitle":"Update readme and AboutUs Delete the sample of Address book from Readme. Add image named mayuehan into image and edit the image part in AboutUs.","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":26}}},{"hash":"effe75474d4334331c1a13f10376981c9109a230","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-Readme","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-10","commitResults":[{"hash":"93e446cd440b1a1119a398428b3509d870381f0c","isMergeCommit":false,"messageTitle":"Create Appointment Command Implement the function for creating an appointment for a patient with command format: createApt \u003cPatient name\u003e /\u003cdate and time\u003e.","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":136,"deletions":0}}},{"hash":"d4ba797210e69c23126e3fab33912df0497ab1fb","isMergeCommit":false,"messageTitle":"Listing all the Appointments function Implement the function of listing all the appointments with command: listApt","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":47,"deletions":0}}},{"hash":"9aaecc644790e2eed6622e9806c2fd2a9d8a8eb3","isMergeCommit":false,"messageTitle":"Delete Appointment function Implement function for deleting an appointment for an patient with command format: deleteApt \u003cindex of the appointment\u003e /name \u003cpatient name\u003e","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":88,"deletions":0}}}]},{"date":"2024-03-13","commitResults":[{"hash":"ba07cf53d28caae2fd05836f65b160bee47324e5","isMergeCommit":true,"messageTitle":"Implement the function of create, delete and list appointments","messageBody":"Create new parser classes and command classes for creating, deleting and listing appointments.Also, write Junit test classes in the test folder to test the functions of creating, deleting and listing. JavaDoc is added for each methods in the new classes. Checkstyle fixed.\n","fileTypesAndContributionMap":{}},{"hash":"2cdbf889c21c3a1ed35259bd399983dbc300d696","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"6b2ac0a4a3171a8dcb21d96fe80cf3ca610fbc3a","isMergeCommit":false,"messageTitle":"Fix checkstyle Fix checkstyle errors.","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":3}}},{"hash":"0975d9ac5482e8ae0a65941a8bac5bb0fefa35e3","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":0,"deletions":0}}},{"hash":"576556d5e63e73f4b54e9dd101fd8ccce5782964","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":367,"deletions":366},"docs":{"insertions":57,"deletions":57},"test-code":{"insertions":464,"deletions":464}}},{"hash":"a4e0d8cdda058b4c54d55cac2168f6fbf7f81a92","isMergeCommit":false,"messageTitle":"Edit junit test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"bd8cb9f4a7eaa8b1482c74accc721f619157ceb0","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":4}}},{"hash":"15e62609bb342080c9aea65cee9cc2f3cd5e4afe","isMergeCommit":false,"messageTitle":"Fix Checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"abab448fbd2a700bead289ba0624ad1d47d83394","isMergeCommit":false,"messageTitle":"Fix coding standard issue","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"test-code":{"insertions":9,"deletions":9}}},{"hash":"2b158a34dc2f6dfccb14d45bcd0000dbaac09968","isMergeCommit":false,"messageTitle":"Add Junit test Add Junit test for create and delete appointment command parser, and add more test in ClinicParserTest.","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":50,"deletions":1},"test-code":{"insertions":164,"deletions":1}}},{"hash":"c455ffd9452b65baf83d26f6e200ec1668467594","isMergeCommit":false,"messageTitle":"Fix Checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":10,"deletions":12}}},{"hash":"ae0c90905924717e3d22ed8c8eb3dd3f9b31b507","isMergeCommit":false,"messageTitle":"Fix error in Junit test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-17","commitResults":[{"hash":"65df08327271fdb69d077af84a40d75b86c78a71","isMergeCommit":false,"messageTitle":"Implement the GUI for Appointment functions","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":257,"deletions":26},"other":{"insertions":2,"deletions":2},"test-code":{"insertions":0,"deletions":1}}},{"hash":"fcb55903521b07ac55b237adf41aae57c27826f3","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-AptGUI","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c5add240e04f1cd5bc13562bba3c9fa1b4277f11","isMergeCommit":false,"messageTitle":"Fix the Junit test error","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":15,"deletions":10}}}]},{"date":"2024-03-18","commitResults":[{"hash":"a8a857902c2c868ffd33ae6f94e3bd53556bee56","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-AptGUI","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"cb8bb51e326bc14d87ef5c6d6b5e8c12bebc9be8","isMergeCommit":false,"messageTitle":"Merge the new PR to branch branch-AptGUI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":0},"test-code":{"insertions":8,"deletions":0}}}]},{"date":"2024-03-20","commitResults":[{"hash":"13e0bed5d42d9a2c40636c742d6f8257ab82765c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-AptGUI","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"027086d7f165ac7d0f1a7168e4c6bc065c5346dc","isMergeCommit":true,"messageTitle":"Merge pull request #73 from Ella-e/update-graddle","messageBody":"Update gradle setting","tags":["v1.2"],"fileTypesAndContributionMap":{}},{"hash":"d6294e96d95a5d9893b839833db2662601c61868","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-AptGUI","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-23","commitResults":[{"hash":"ac77dfd5f7bfe30629b29cb033b9bf3d8e26e386","isMergeCommit":false,"messageTitle":"Add appointment to storage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":0},"test-code":{"insertions":6,"deletions":0}}},{"hash":"a4ab407e3ec24de6951699783eb03203be0af89b","isMergeCommit":false,"messageTitle":"Fix some error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":536,"deletions":58},"test-code":{"insertions":361,"deletions":89}}}]}],"Ella-e":[{"date":"2024-03-04","commitResults":[{"hash":"88928392b502c29986859c42ae863abd6c573eb0","isMergeCommit":false,"messageTitle":"Update NFRs to the DG","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":580,"deletions":0},"docs":{"insertions":15,"deletions":4}}},{"hash":"9f1b36aa95883a953e163177c02b608df0fc9741","isMergeCommit":true,"messageTitle":"Merge","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"80330bd7de96af545b73b260d978a38b4266f6a6","isMergeCommit":false,"messageTitle":"Update User Story","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":35,"deletions":9}}},{"hash":"8c20a6b890d2562d007f15710a1ea3c12180f395","isMergeCommit":false,"messageTitle":"Update Use case","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":116,"deletions":20}}},{"hash":"ea0a4cfa9b5323ceedb52cbba54a5d32884e0cc3","isMergeCommit":true,"messageTitle":"Merge branch \u0027developer-guide\u0027","messageBody":"Update the User Story and Use case section of the Developer Guide.\n","fileTypesAndContributionMap":{}},{"hash":"c63f5bed507ded44d8db7c5c1629e76f3abdfe27","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027","messageBody":"Update the local fork version.\n","fileTypesAndContributionMap":{}},{"hash":"0eeaf9201a4b1469e3efbcb845059af5d4367e48","isMergeCommit":false,"messageTitle":"Update information into AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":47,"deletions":4}}},{"hash":"9fbb4d4dc65acefe4ee86a183dd670e9ff309840","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027","messageBody":"Update\n","fileTypesAndContributionMap":{}},{"hash":"44996ce5a2e991f37a33d3531a15411b9f8e9f0e","isMergeCommit":false,"messageTitle":"Update personal portfolio page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"bcc32e95b7a5e5632b2a489b2a073676a227a8ce","isMergeCommit":false,"messageTitle":"Update target user profile and value proposition","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":2}}},{"hash":"aebdbf70e060d353fe083a3d30d3daffc2db481f","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin\u0027 into developer-guide","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-05","commitResults":[{"hash":"8d21bf7b902030a121658161e4dfaab7765a9ede","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into developer-guide","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-06","commitResults":[{"hash":"ead282bc2fdba495b980e4d32537f61a8fa45004","isMergeCommit":true,"messageTitle":"Merge pull request #34 from javierng2knus/javierng2knus-aboutus","messageBody":"Update the AboutUs page","fileTypesAndContributionMap":{}},{"hash":"07eecd85bcea003773547341ccf254978cee3d48","isMergeCommit":true,"messageTitle":"Merge pull request #35 from javierng2knus/javierng2knus-site-wide-settings","messageBody":"Update site-wide settings","fileTypesAndContributionMap":{}},{"hash":"bf6da7a548d2bcfbb52935169998544620e16bac","isMergeCommit":true,"messageTitle":"Merge pull request #36 from SeaHogs/branch-Glossary","messageBody":"Update Glossary","fileTypesAndContributionMap":{}},{"hash":"40b61e4372606ae89ae88ae6af69dd748ce4b517","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into developer-guide","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f3869d9bea83dd9b01630e3ccbc081009fbaddb3","isMergeCommit":false,"messageTitle":"Update DG product scope","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":1}}},{"hash":"e8b1281f6bdf8b7b9e7179d98af3f871433290cd","isMergeCommit":false,"messageTitle":"Update AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":46,"deletions":14}}},{"hash":"ca3c72266c153d99fd7d5062ed280b8342dfca18","isMergeCommit":false,"messageTitle":"Update style","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"97388bf99d416e6af9d3ee8c4c9da96b3ec1375d","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-Readme","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"32c35287e6d205489752fe43c4ff1c349d4d4cee","isMergeCommit":true,"messageTitle":"Merge pull request #37 from MaYuehan/branch-Readme","messageBody":"Update Readme and AboutUs","fileTypesAndContributionMap":{}},{"hash":"624881afcbb7fd3f7fd5485765deaa5de55dd71e","isMergeCommit":true,"messageTitle":"Merge pull request #40 from javierng2knus/javierng2knus-developer-guide","messageBody":"Update the developer guide","fileTypesAndContributionMap":{}}]},{"date":"2024-03-17","commitResults":[{"hash":"25aea9abfbd39c5eb2b512efdeaebf95249bd5bd","isMergeCommit":true,"messageTitle":"Merge pull request #54 from javierng2knus/javierng2knus-identificationinformation-commands","messageBody":"Javierng2knus identificationinformation commands","fileTypesAndContributionMap":{}},{"hash":"cc7b1873005d42e89517dcccde508b11afe0fd1a","isMergeCommit":false,"messageTitle":"Add and Delete contact information","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":491,"deletions":15},"test-code":{"insertions":72,"deletions":20}}},{"hash":"bc157a7f9f65845c0f722be6cdedbe9137e3b6b5","isMergeCommit":true,"messageTitle":"Merge pull request #60 from javierng2knus/javierng2knus-help-command","messageBody":"Update help command to reflect user guide","fileTypesAndContributionMap":{}},{"hash":"6b96c42204ed19dc57b98b4681a9e96921913f85","isMergeCommit":false,"messageTitle":"Add test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":2},"test-code":{"insertions":604,"deletions":15}}}]},{"date":"2024-03-18","commitResults":[{"hash":"f4c0e4aa4b2788de4d7339c7deba32f4ff8413df","isMergeCommit":false,"messageTitle":"Add more test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":5},"test-code":{"insertions":186,"deletions":0}}}]},{"date":"2024-03-20","commitResults":[{"hash":"4e55c5a71bdb02bd6623d2c4e7f9276b48df5fa1","isMergeCommit":true,"messageTitle":"Merge pull request #59 from javierng2knus/javierng2knus-identificationinformation-commands","messageBody":"Fulfil test coverage","fileTypesAndContributionMap":{}},{"hash":"287728b03d7f215972e001fac8083f92a72edf74","isMergeCommit":true,"messageTitle":"Merge pull request #62 from javierng2knus/javierng2knus-general-bugfix","messageBody":"Fix Junit test issue","fileTypesAndContributionMap":{}},{"hash":"8865184075e208ca2b83298cc90a044782f5962c","isMergeCommit":false,"messageTitle":"Fix medical information storage problem","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":51,"deletions":28},"test-code":{"insertions":3,"deletions":1}}}]},{"date":"2024-03-21","commitResults":[{"hash":"7534e709f99469bd99d3d6bd25fb05715462a60d","isMergeCommit":true,"messageTitle":"Merge pull request #70 from javierng2knus/javierng2knus-standarization","messageBody":"Standardize the command format","fileTypesAndContributionMap":{}},{"hash":"1863a55245db474ed581c493c094c76fa4ce0903","isMergeCommit":false,"messageTitle":"Update gradle setting","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":8,"deletions":2}}}]},{"date":"2024-03-23","commitResults":[{"hash":"3eb273af51d7ae8b3f6c65fbb7ee7f1c72490e02","isMergeCommit":true,"messageTitle":"Merge pull request #75 from SeaHogs/branch-tags","messageBody":"Improve UI","fileTypesAndContributionMap":{}},{"hash":"1077086688b4e86a4ab41c9a2fc02c7676b3b51c","isMergeCommit":true,"messageTitle":"Merge pull request #61 from MaYuehan/branch-AptGUI","messageBody":"Implement the Storage and GUI for Appointment","fileTypesAndContributionMap":{}}]}],"SeaHogs":[{"date":"2024-03-04","commitResults":[{"hash":"149a1660765b9560dd0c1fb9eac105199da52033","isMergeCommit":true,"messageTitle":"Merge pull request #29 from Ella-e/master","messageBody":"Update Developer Guide","fileTypesAndContributionMap":{}},{"hash":"730cbb618f6a85fb57b37f018abc6ed847b48b8a","isMergeCommit":true,"messageTitle":"Merge pull request #30 from Ella-e/master","messageBody":"Update AboutUs page","fileTypesAndContributionMap":{}}]},{"date":"2024-03-06","commitResults":[{"hash":"95f4da98a946559d17367443dca4c426cf2baea1","isMergeCommit":false,"messageTitle":"Update Glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":17,"deletions":0}}},{"hash":"9153f3263421a320e7f350a1c64c035cbe222a03","isMergeCommit":true,"messageTitle":"Merge pull request #32 from Ella-e/developer-guide","messageBody":"Update target user profile and value proposition","fileTypesAndContributionMap":{}},{"hash":"3859484d8d836ab9e57270e127aa24b2509d754c","isMergeCommit":true,"messageTitle":"Merge pull request #38 from Ella-e/aboutus","messageBody":"Update Aboutus","fileTypesAndContributionMap":{}}]},{"date":"2024-03-11","commitResults":[{"hash":"e8dd7c2c9e90ba55f19eb0810aedc6972154d91c","isMergeCommit":true,"messageTitle":"Merge pull request #47 from javierng2knus/javierng2knus-rework","messageBody":"Rework of addressbook to better fit VitalConnect context","fileTypesAndContributionMap":{}}]},{"date":"2024-03-18","commitResults":[{"hash":"50555ec281fac01427b459a93b696e7a8820b0ae","isMergeCommit":true,"messageTitle":"Merge pull request #65 from Ella-e/branch-contact-uptodate","messageBody":"Add and Delete contact information","fileTypesAndContributionMap":{}},{"hash":"5b8c106704f4187a62e54aef693b0d5b2c80db8c","isMergeCommit":false,"messageTitle":"Add med info","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":585,"deletions":152},"other":{"insertions":20,"deletions":20},"docs":{"insertions":5,"deletions":5},"test-code":{"insertions":72,"deletions":58}}},{"hash":"7fb83a3dd6d4483fa8fbe70527dd89d404bd93f0","isMergeCommit":false,"messageTitle":"Fix testcase","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":95,"deletions":35}}},{"hash":"cba68bce8ae1e7c69452c5f07161a2819811719b","isMergeCommit":false,"messageTitle":"Fix testcase","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":13},"test-code":{"insertions":74,"deletions":111}}},{"hash":"e83fedfcea73e920ce9869ea37d6bee65bdc57ad","isMergeCommit":false,"messageTitle":"Fix checkStyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":8},"test-code":{"insertions":82,"deletions":93}}}]},{"date":"2024-03-19","commitResults":[{"hash":"7d8f60a7d59234b77e165066b31dd46eda990625","isMergeCommit":false,"messageTitle":"Fix bug","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":36,"deletions":11},"test-code":{"insertions":14,"deletions":0}}},{"hash":"6ac5833d738583816eaafcea5490ba3a99bc91e1","isMergeCommit":false,"messageTitle":"Fix bug","messageBody":"-Fix bug with JsonAdaptedPerson where optional field value is used without checking if option field is present\n","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":8}}},{"hash":"eff3a8d44aae42f912b4510c6d66b5ab8cd317fb","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":5}}},{"hash":"c95ba369c104f9c2617d1ac116ed3f21a08cd485","isMergeCommit":false,"messageTitle":"Fix Person","messageBody":"-Now also check for situation when only medinfo is present.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":1}}},{"hash":"50405224bca98579b154be2d2c3f788bc12de458","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":2}}},{"hash":"9e2efab5515a4e5ab74391039f474daa907d5515","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"7d45769b0a0c3ab45cbc4a0fe9236f67eaab7f82","isMergeCommit":false,"messageTitle":"Fix testCase","messageBody":"-Fix TypicalPersons and PersonBuilder using different data set for JsonSerializableClinicTest\n","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":14},"test-code":{"insertions":18,"deletions":3}}},{"hash":"c77f63d3bc6778ae86ddff58d94ee9ad781e5214","isMergeCommit":false,"messageTitle":"Fix javadoc","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":3}}},{"hash":"f67de4749d02cfa3dbba90aa34c992196be2ac32","isMergeCommit":false,"messageTitle":"Add MI to PersonCard","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":114,"deletions":3}}},{"hash":"c7a50baa9a7470b6aac6145ebadf58214a4609b3","isMergeCommit":false,"messageTitle":"Fix listing","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":15}}},{"hash":"8119df6bbded9f929121cef97f344bd8d27113f1","isMergeCommit":false,"messageTitle":"Fix checkStyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":37,"deletions":17}}},{"hash":"6f4d590ed5e9e9f7199a1d975b85b7e8d611ed22","isMergeCommit":false,"messageTitle":"Fix ListMedicalCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":33,"deletions":14}}},{"hash":"7233bb407872c4c5254c538de21fe6e7c049435d","isMergeCommit":false,"messageTitle":"No idea how these testcases works","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":47,"deletions":47}}},{"hash":"a5a32329954a62173d093a6572288ec880fdaae5","isMergeCommit":false,"messageTitle":"the following 3 test cases currently does not work, changed to pass gradle test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":48,"deletions":47}}}]},{"date":"2024-03-20","commitResults":[{"hash":"f63ca54458c10f2e7e6cbff6c3fe50d05b55f5aa","isMergeCommit":true,"messageTitle":"Merge pull request #67 from SeaHogs/branch-Med-Info","messageBody":"Branch med info","fileTypesAndContributionMap":{}},{"hash":"cea27abc020c35a9bd724494d38931d25a9d37da","isMergeCommit":false,"messageTitle":"update copyPerson","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":1}}},{"hash":"7706635327c89c6c5deed55e399a8153884d1209","isMergeCommit":true,"messageTitle":"Merge pull request #69 from Ella-e/branch-fix-storage","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-23","commitResults":[{"hash":"adcfa08ced83981bedbc32c169c4da7195ddbf19","isMergeCommit":false,"messageTitle":"Improve UI","messageBody":"-UI no longer shows \"Allergic to:\" when there is no allergy tag.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":7}}}]}]},"authorFileTypeContributionMap":{"javierng2knus":{"docs":59,"functional-code":578,"test-code":519,"other":2},"MaYuehan":{"docs":181,"functional-code":1477,"test-code":1453,"other":2},"Ella-e":{"docs":183,"functional-code":511,"test-code":840,"other":584},"SeaHogs":{"docs":15,"functional-code":794,"test-code":264,"other":4}},"authorContributionVariance":{"javierng2knus":168796.73,"MaYuehan":168888.78,"Ella-e":68778.82,"SeaHogs":78058.79},"authorDisplayNameMap":{"javierng2knus":"CS2103T-W08-2 NG W..VIER","MaYuehan":"CS2103T-W08-2 MA Y..EHAN","Ella-e":"CS2103T-W08-2 MU Z..AOYU","SeaHogs":"CS2103T-W08-2 LAI ..IWEN"}} +{"authorDailyContributionsMap":{"javierng2knus":[{"date":"2024-03-06","commitResults":[{"hash":"088a7db21464bbc65dd5ada35bae72aefe113f5c","isMergeCommit":false,"messageTitle":"Update the AboutUs page","messageBody":"Update the AboutUs page to include my own information and image.\n\nResponsibility is left blank as the responsibilities will need to properly reassigned in a future date.\n","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}},{"hash":"4c25caf37a37b349d57c0caaca6fce688aa74c51","isMergeCommit":false,"messageTitle":"Update the developer guide","messageBody":"Update the DeveloperGuide.md file to update user stories, use cases and glossary.\n\nThe user stories are now more organized and more cohesive with the phrasing. Additional user stories were also added or removed.\n\nThe use cases are now more general to account for the similar uses for adding/removing/modifying of different types of information.\n\nThe glossary had some unnecessary terms and was missing the term \u0027tooltip\u0027.\n","fileTypesAndContributionMap":{"docs":{"insertions":54,"deletions":46}}}]},{"date":"2024-03-10","commitResults":[{"hash":"8eb8d8b4d1cdbdae4938076ebad5173f557e371d","isMergeCommit":false,"messageTitle":"Quick fix to dev guide","messageBody":"Quick fix to dev guide regarding user story\n","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"dcf05bcf89c9ee6ce058962adbf0e30f84b1a418","isMergeCommit":false,"messageTitle":"Rename seedu.address","messageBody":"Rename all instances of seedu.address to vitalConnect.\nEnsure the files are in the proper folders for the packages as well.\n","fileTypesAndContributionMap":{"other":{"insertions":773,"deletions":773},"docs":{"insertions":14,"deletions":14},"test-code":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-11","commitResults":[{"hash":"f3892a94511fceab64a7cd7a6661a627811fafd0","isMergeCommit":false,"messageTitle":"Rename address book","messageBody":"Rename all instances of address book to clinic.\nEnsure the files are renamed as well.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":198,"deletions":198},"other":{"insertions":85,"deletions":85},"test-code":{"insertions":246,"deletions":246}}},{"hash":"796b921a3e7e68f0c0ad41e9dcb614acb252ea37","isMergeCommit":false,"messageTitle":"Extract info to contact and identification info","messageBody":"Extract info to contact and identification info.\n\nName and Nric belongs to identification information.\nEmail, phone, address belongs to contact information.\n\nThe current implementation ignores the uses as they should be done along side the implementations of the new commands such as AddIdentifcationInformationCommand or something similar.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":165,"deletions":46},"other":{"insertions":11,"deletions":11},"test-code":{"insertions":29,"deletions":29}}},{"hash":"792180a11f1187d84068f6ff385bc355ec393c2d","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"Fix checkstyle regarding the errors such as whitespaces.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":16},"test-code":{"insertions":11,"deletions":11}}}]},{"date":"2024-03-13","commitResults":[{"hash":"fafca5ce2e6a3d270d3607de7817ea89471a09cf","isMergeCommit":true,"messageTitle":"Merge pull request #48 from MaYuehan/branch-Appointment","messageBody":"Branch appointment","fileTypesAndContributionMap":{}}]},{"date":"2024-03-15","commitResults":[{"hash":"f8940c3b0241e36680c047a5739ad678c35269b3","isMergeCommit":false,"messageTitle":"Rework default commands","messageBody":"Update the default add, remove, edit command\n\nRemoved previous information such as phone, address, email as they will be added/removed/displayed through a different command. (Most likely listContactInformationCommand or something similar)\n","fileTypesAndContributionMap":{"functional-code":{"insertions":248,"deletions":212},"test-code":{"insertions":153,"deletions":375}}},{"hash":"312a6efa7d3391e6225184292439d8494ecac615","isMergeCommit":false,"messageTitle":"Fix test and bugs","messageBody":"Adjusted all relevant test files from previous push and changes of files.\n\nFixed some bugs regarding the json files\n","fileTypesAndContributionMap":{"functional-code":{"insertions":31,"deletions":9},"test-code":{"insertions":32,"deletions":31}}}]},{"date":"2024-03-17","commitResults":[{"hash":"d206eb9391cdd1eb92f9e60b39e20dc7198e2239","isMergeCommit":false,"messageTitle":"Fulfil test coverage","messageBody":"Added tests to Nric and IdentificationInformation as they were lacking in test cases.\n","fileTypesAndContributionMap":{"test-code":{"insertions":136,"deletions":0}}},{"hash":"eb1f8468334b205583a548567575d6342dd0a125","isMergeCommit":false,"messageTitle":"Fix checkstyle for tests","messageBody":"Fixed the checkstyle issues for the test cases.\n","fileTypesAndContributionMap":{"test-code":{"insertions":42,"deletions":19}}},{"hash":"214680aeff3bef828f50093bc2a8800204e95d50","isMergeCommit":false,"messageTitle":"Fix issue for verification function","messageBody":"IdentificationInformation class did not properly check if name and nric is valid.\n\nAdded fix for it.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"be4954c56d5ccaee787c1a10ea939027d899cc64","isMergeCommit":false,"messageTitle":"Update help command to reflect user guide","messageBody":"The default implementation of the help command leads to the ab3 website instead of the project\u0027s user guide.\n\nModified the link to redirect to the proper location.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"9a8111895e8a9014fc8908b0332a49bb6e1d2c6e","isMergeCommit":false,"messageTitle":"Fix Junit test issue","messageBody":"Attempt to fix the commented out Junit test\n","fileTypesAndContributionMap":{"test-code":{"insertions":8,"deletions":5}}},{"hash":"865022ca71a0d9caf6f88c624ecffaa0808e2c37","isMergeCommit":false,"messageTitle":"Update README.md to show codecov badge","messageBody":"Add the badge for codecov","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}},{"hash":"77e588d8ed97fb6fc2e66b711f3f7189392a9aca","isMergeCommit":true,"messageTitle":"Merge pull request #64 from AY2324S2-CS2103T-W08-2/javierng2knus-readme","messageBody":"Update README.md to show codecov badge","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"31029335881083c4bd9215d038c6b7e3e82d6fcf","isMergeCommit":true,"messageTitle":"Merge pull request #68 from SeaHogs/branch-Med-Info","messageBody":"Fix copyPerson","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"5654b237b0445f583ff8bb02f18ab24a9e32138d","isMergeCommit":false,"messageTitle":"Standardize the command format","messageBody":"Updated all commands and their formats except appointment commands which will be updated separately.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":30,"deletions":33}}}]},{"date":"2024-03-24","commitResults":[{"hash":"898621d20ad8129e2abf4c5ceeb72df75a88bd5f","isMergeCommit":true,"messageTitle":"Merge pull request #74 from Ella-e/branch-puml","messageBody":"Update puml graphs","fileTypesAndContributionMap":{}}]}],"MaYuehan":[{"date":"2024-02-25","commitResults":[{"hash":"c65d82151bc280716b9fe72527033275eaa16b67","isMergeCommit":false,"messageTitle":"Update Readme and AboutUs Modify the Readme file, add more details about the project and the features we plan to achieve for v1.2. Also modify the AboutUs file, add the information of mine. Create my profile file and link to AboutUs.","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":130,"deletions":6}}}]},{"date":"2024-03-06","commitResults":[{"hash":"7fd6a869df3d4935a1cdd906d8ac21c98fc820be","isMergeCommit":false,"messageTitle":"Update readme and AboutUs Delete the sample of Address book from Readme. Add image named mayuehan into image and edit the image part in AboutUs.","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":26}}},{"hash":"effe75474d4334331c1a13f10376981c9109a230","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-Readme","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-10","commitResults":[{"hash":"93e446cd440b1a1119a398428b3509d870381f0c","isMergeCommit":false,"messageTitle":"Create Appointment Command Implement the function for creating an appointment for a patient with command format: createApt \u003cPatient name\u003e /\u003cdate and time\u003e.","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":136,"deletions":0}}},{"hash":"d4ba797210e69c23126e3fab33912df0497ab1fb","isMergeCommit":false,"messageTitle":"Listing all the Appointments function Implement the function of listing all the appointments with command: listApt","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":47,"deletions":0}}},{"hash":"9aaecc644790e2eed6622e9806c2fd2a9d8a8eb3","isMergeCommit":false,"messageTitle":"Delete Appointment function Implement function for deleting an appointment for an patient with command format: deleteApt \u003cindex of the appointment\u003e /name \u003cpatient name\u003e","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":88,"deletions":0}}}]},{"date":"2024-03-13","commitResults":[{"hash":"ba07cf53d28caae2fd05836f65b160bee47324e5","isMergeCommit":true,"messageTitle":"Implement the function of create, delete and list appointments","messageBody":"Create new parser classes and command classes for creating, deleting and listing appointments.Also, write Junit test classes in the test folder to test the functions of creating, deleting and listing. JavaDoc is added for each methods in the new classes. Checkstyle fixed.\n","fileTypesAndContributionMap":{}},{"hash":"2cdbf889c21c3a1ed35259bd399983dbc300d696","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"6b2ac0a4a3171a8dcb21d96fe80cf3ca610fbc3a","isMergeCommit":false,"messageTitle":"Fix checkstyle Fix checkstyle errors.","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":3}}},{"hash":"0975d9ac5482e8ae0a65941a8bac5bb0fefa35e3","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":0,"deletions":0}}},{"hash":"576556d5e63e73f4b54e9dd101fd8ccce5782964","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":367,"deletions":366},"docs":{"insertions":57,"deletions":57},"test-code":{"insertions":464,"deletions":464}}},{"hash":"a4e0d8cdda058b4c54d55cac2168f6fbf7f81a92","isMergeCommit":false,"messageTitle":"Edit junit test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"bd8cb9f4a7eaa8b1482c74accc721f619157ceb0","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":4}}},{"hash":"15e62609bb342080c9aea65cee9cc2f3cd5e4afe","isMergeCommit":false,"messageTitle":"Fix Checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"abab448fbd2a700bead289ba0624ad1d47d83394","isMergeCommit":false,"messageTitle":"Fix coding standard issue","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"test-code":{"insertions":9,"deletions":9}}},{"hash":"2b158a34dc2f6dfccb14d45bcd0000dbaac09968","isMergeCommit":false,"messageTitle":"Add Junit test Add Junit test for create and delete appointment command parser, and add more test in ClinicParserTest.","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":50,"deletions":1},"test-code":{"insertions":164,"deletions":1}}},{"hash":"c455ffd9452b65baf83d26f6e200ec1668467594","isMergeCommit":false,"messageTitle":"Fix Checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":10,"deletions":12}}},{"hash":"ae0c90905924717e3d22ed8c8eb3dd3f9b31b507","isMergeCommit":false,"messageTitle":"Fix error in Junit test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-17","commitResults":[{"hash":"65df08327271fdb69d077af84a40d75b86c78a71","isMergeCommit":false,"messageTitle":"Implement the GUI for Appointment functions","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":257,"deletions":26},"other":{"insertions":2,"deletions":2},"test-code":{"insertions":0,"deletions":1}}},{"hash":"fcb55903521b07ac55b237adf41aae57c27826f3","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-AptGUI","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c5add240e04f1cd5bc13562bba3c9fa1b4277f11","isMergeCommit":false,"messageTitle":"Fix the Junit test error","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":15,"deletions":10}}}]},{"date":"2024-03-18","commitResults":[{"hash":"a8a857902c2c868ffd33ae6f94e3bd53556bee56","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-AptGUI","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"cb8bb51e326bc14d87ef5c6d6b5e8c12bebc9be8","isMergeCommit":false,"messageTitle":"Merge the new PR to branch branch-AptGUI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":0},"test-code":{"insertions":8,"deletions":0}}}]},{"date":"2024-03-20","commitResults":[{"hash":"13e0bed5d42d9a2c40636c742d6f8257ab82765c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-AptGUI","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"027086d7f165ac7d0f1a7168e4c6bc065c5346dc","isMergeCommit":true,"messageTitle":"Merge pull request #73 from Ella-e/update-graddle","messageBody":"Update gradle setting","tags":["v1.2"],"fileTypesAndContributionMap":{}},{"hash":"d6294e96d95a5d9893b839833db2662601c61868","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-AptGUI","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-23","commitResults":[{"hash":"ac77dfd5f7bfe30629b29cb033b9bf3d8e26e386","isMergeCommit":false,"messageTitle":"Add appointment to storage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":0},"test-code":{"insertions":6,"deletions":0}}},{"hash":"a4ab407e3ec24de6951699783eb03203be0af89b","isMergeCommit":false,"messageTitle":"Fix some error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":536,"deletions":58},"test-code":{"insertions":361,"deletions":89}}}]}],"Ella-e":[{"date":"2024-03-04","commitResults":[{"hash":"88928392b502c29986859c42ae863abd6c573eb0","isMergeCommit":false,"messageTitle":"Update NFRs to the DG","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":580,"deletions":0},"docs":{"insertions":15,"deletions":4}}},{"hash":"9f1b36aa95883a953e163177c02b608df0fc9741","isMergeCommit":true,"messageTitle":"Merge","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"80330bd7de96af545b73b260d978a38b4266f6a6","isMergeCommit":false,"messageTitle":"Update User Story","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":35,"deletions":9}}},{"hash":"8c20a6b890d2562d007f15710a1ea3c12180f395","isMergeCommit":false,"messageTitle":"Update Use case","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":116,"deletions":20}}},{"hash":"ea0a4cfa9b5323ceedb52cbba54a5d32884e0cc3","isMergeCommit":true,"messageTitle":"Merge branch \u0027developer-guide\u0027","messageBody":"Update the User Story and Use case section of the Developer Guide.\n","fileTypesAndContributionMap":{}},{"hash":"c63f5bed507ded44d8db7c5c1629e76f3abdfe27","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027","messageBody":"Update the local fork version.\n","fileTypesAndContributionMap":{}},{"hash":"0eeaf9201a4b1469e3efbcb845059af5d4367e48","isMergeCommit":false,"messageTitle":"Update information into AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":47,"deletions":4}}},{"hash":"9fbb4d4dc65acefe4ee86a183dd670e9ff309840","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027","messageBody":"Update\n","fileTypesAndContributionMap":{}},{"hash":"44996ce5a2e991f37a33d3531a15411b9f8e9f0e","isMergeCommit":false,"messageTitle":"Update personal portfolio page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"bcc32e95b7a5e5632b2a489b2a073676a227a8ce","isMergeCommit":false,"messageTitle":"Update target user profile and value proposition","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":2}}},{"hash":"aebdbf70e060d353fe083a3d30d3daffc2db481f","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin\u0027 into developer-guide","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-05","commitResults":[{"hash":"8d21bf7b902030a121658161e4dfaab7765a9ede","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into developer-guide","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-06","commitResults":[{"hash":"ead282bc2fdba495b980e4d32537f61a8fa45004","isMergeCommit":true,"messageTitle":"Merge pull request #34 from javierng2knus/javierng2knus-aboutus","messageBody":"Update the AboutUs page","fileTypesAndContributionMap":{}},{"hash":"07eecd85bcea003773547341ccf254978cee3d48","isMergeCommit":true,"messageTitle":"Merge pull request #35 from javierng2knus/javierng2knus-site-wide-settings","messageBody":"Update site-wide settings","fileTypesAndContributionMap":{}},{"hash":"bf6da7a548d2bcfbb52935169998544620e16bac","isMergeCommit":true,"messageTitle":"Merge pull request #36 from SeaHogs/branch-Glossary","messageBody":"Update Glossary","fileTypesAndContributionMap":{}},{"hash":"40b61e4372606ae89ae88ae6af69dd748ce4b517","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into developer-guide","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f3869d9bea83dd9b01630e3ccbc081009fbaddb3","isMergeCommit":false,"messageTitle":"Update DG product scope","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":1}}},{"hash":"e8b1281f6bdf8b7b9e7179d98af3f871433290cd","isMergeCommit":false,"messageTitle":"Update AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":46,"deletions":14}}},{"hash":"ca3c72266c153d99fd7d5062ed280b8342dfca18","isMergeCommit":false,"messageTitle":"Update style","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"97388bf99d416e6af9d3ee8c4c9da96b3ec1375d","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-Readme","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"32c35287e6d205489752fe43c4ff1c349d4d4cee","isMergeCommit":true,"messageTitle":"Merge pull request #37 from MaYuehan/branch-Readme","messageBody":"Update Readme and AboutUs","fileTypesAndContributionMap":{}},{"hash":"624881afcbb7fd3f7fd5485765deaa5de55dd71e","isMergeCommit":true,"messageTitle":"Merge pull request #40 from javierng2knus/javierng2knus-developer-guide","messageBody":"Update the developer guide","fileTypesAndContributionMap":{}}]},{"date":"2024-03-17","commitResults":[{"hash":"25aea9abfbd39c5eb2b512efdeaebf95249bd5bd","isMergeCommit":true,"messageTitle":"Merge pull request #54 from javierng2knus/javierng2knus-identificationinformation-commands","messageBody":"Javierng2knus identificationinformation commands","fileTypesAndContributionMap":{}},{"hash":"cc7b1873005d42e89517dcccde508b11afe0fd1a","isMergeCommit":false,"messageTitle":"Add and Delete contact information","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":491,"deletions":15},"test-code":{"insertions":72,"deletions":20}}},{"hash":"bc157a7f9f65845c0f722be6cdedbe9137e3b6b5","isMergeCommit":true,"messageTitle":"Merge pull request #60 from javierng2knus/javierng2knus-help-command","messageBody":"Update help command to reflect user guide","fileTypesAndContributionMap":{}},{"hash":"6b96c42204ed19dc57b98b4681a9e96921913f85","isMergeCommit":false,"messageTitle":"Add test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":2},"test-code":{"insertions":604,"deletions":15}}}]},{"date":"2024-03-18","commitResults":[{"hash":"f4c0e4aa4b2788de4d7339c7deba32f4ff8413df","isMergeCommit":false,"messageTitle":"Add more test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":5},"test-code":{"insertions":186,"deletions":0}}}]},{"date":"2024-03-20","commitResults":[{"hash":"4e55c5a71bdb02bd6623d2c4e7f9276b48df5fa1","isMergeCommit":true,"messageTitle":"Merge pull request #59 from javierng2knus/javierng2knus-identificationinformation-commands","messageBody":"Fulfil test coverage","fileTypesAndContributionMap":{}},{"hash":"287728b03d7f215972e001fac8083f92a72edf74","isMergeCommit":true,"messageTitle":"Merge pull request #62 from javierng2knus/javierng2knus-general-bugfix","messageBody":"Fix Junit test issue","fileTypesAndContributionMap":{}},{"hash":"8865184075e208ca2b83298cc90a044782f5962c","isMergeCommit":false,"messageTitle":"Fix medical information storage problem","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":51,"deletions":28},"test-code":{"insertions":3,"deletions":1}}}]},{"date":"2024-03-21","commitResults":[{"hash":"7534e709f99469bd99d3d6bd25fb05715462a60d","isMergeCommit":true,"messageTitle":"Merge pull request #70 from javierng2knus/javierng2knus-standarization","messageBody":"Standardize the command format","fileTypesAndContributionMap":{}},{"hash":"1863a55245db474ed581c493c094c76fa4ce0903","isMergeCommit":false,"messageTitle":"Update gradle setting","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":8,"deletions":2}}}]},{"date":"2024-03-22","commitResults":[{"hash":"c8d7b101d6522dd1baaf20edbb7e26f2ad7aaa75","isMergeCommit":false,"messageTitle":"Update puml graphs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":53,"deletions":34}}}]},{"date":"2024-03-23","commitResults":[{"hash":"3eb273af51d7ae8b3f6c65fbb7ee7f1c72490e02","isMergeCommit":true,"messageTitle":"Merge pull request #75 from SeaHogs/branch-tags","messageBody":"Improve UI","fileTypesAndContributionMap":{}},{"hash":"1077086688b4e86a4ab41c9a2fc02c7676b3b51c","isMergeCommit":true,"messageTitle":"Merge pull request #61 from MaYuehan/branch-AptGUI","messageBody":"Implement the Storage and GUI for Appointment","fileTypesAndContributionMap":{}}]}],"SeaHogs":[{"date":"2024-03-04","commitResults":[{"hash":"149a1660765b9560dd0c1fb9eac105199da52033","isMergeCommit":true,"messageTitle":"Merge pull request #29 from Ella-e/master","messageBody":"Update Developer Guide","fileTypesAndContributionMap":{}},{"hash":"730cbb618f6a85fb57b37f018abc6ed847b48b8a","isMergeCommit":true,"messageTitle":"Merge pull request #30 from Ella-e/master","messageBody":"Update AboutUs page","fileTypesAndContributionMap":{}}]},{"date":"2024-03-06","commitResults":[{"hash":"95f4da98a946559d17367443dca4c426cf2baea1","isMergeCommit":false,"messageTitle":"Update Glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":17,"deletions":0}}},{"hash":"9153f3263421a320e7f350a1c64c035cbe222a03","isMergeCommit":true,"messageTitle":"Merge pull request #32 from Ella-e/developer-guide","messageBody":"Update target user profile and value proposition","fileTypesAndContributionMap":{}},{"hash":"3859484d8d836ab9e57270e127aa24b2509d754c","isMergeCommit":true,"messageTitle":"Merge pull request #38 from Ella-e/aboutus","messageBody":"Update Aboutus","fileTypesAndContributionMap":{}}]},{"date":"2024-03-11","commitResults":[{"hash":"e8dd7c2c9e90ba55f19eb0810aedc6972154d91c","isMergeCommit":true,"messageTitle":"Merge pull request #47 from javierng2knus/javierng2knus-rework","messageBody":"Rework of addressbook to better fit VitalConnect context","fileTypesAndContributionMap":{}}]},{"date":"2024-03-18","commitResults":[{"hash":"50555ec281fac01427b459a93b696e7a8820b0ae","isMergeCommit":true,"messageTitle":"Merge pull request #65 from Ella-e/branch-contact-uptodate","messageBody":"Add and Delete contact information","fileTypesAndContributionMap":{}},{"hash":"5b8c106704f4187a62e54aef693b0d5b2c80db8c","isMergeCommit":false,"messageTitle":"Add med info","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":585,"deletions":152},"other":{"insertions":20,"deletions":20},"docs":{"insertions":5,"deletions":5},"test-code":{"insertions":72,"deletions":58}}},{"hash":"7fb83a3dd6d4483fa8fbe70527dd89d404bd93f0","isMergeCommit":false,"messageTitle":"Fix testcase","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":95,"deletions":35}}},{"hash":"cba68bce8ae1e7c69452c5f07161a2819811719b","isMergeCommit":false,"messageTitle":"Fix testcase","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":13},"test-code":{"insertions":74,"deletions":111}}},{"hash":"e83fedfcea73e920ce9869ea37d6bee65bdc57ad","isMergeCommit":false,"messageTitle":"Fix checkStyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":8},"test-code":{"insertions":82,"deletions":93}}}]},{"date":"2024-03-19","commitResults":[{"hash":"7d8f60a7d59234b77e165066b31dd46eda990625","isMergeCommit":false,"messageTitle":"Fix bug","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":36,"deletions":11},"test-code":{"insertions":14,"deletions":0}}},{"hash":"6ac5833d738583816eaafcea5490ba3a99bc91e1","isMergeCommit":false,"messageTitle":"Fix bug","messageBody":"-Fix bug with JsonAdaptedPerson where optional field value is used without checking if option field is present\n","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":8}}},{"hash":"eff3a8d44aae42f912b4510c6d66b5ab8cd317fb","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":5}}},{"hash":"c95ba369c104f9c2617d1ac116ed3f21a08cd485","isMergeCommit":false,"messageTitle":"Fix Person","messageBody":"-Now also check for situation when only medinfo is present.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":1}}},{"hash":"50405224bca98579b154be2d2c3f788bc12de458","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":2}}},{"hash":"9e2efab5515a4e5ab74391039f474daa907d5515","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"7d45769b0a0c3ab45cbc4a0fe9236f67eaab7f82","isMergeCommit":false,"messageTitle":"Fix testCase","messageBody":"-Fix TypicalPersons and PersonBuilder using different data set for JsonSerializableClinicTest\n","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":14},"test-code":{"insertions":18,"deletions":3}}},{"hash":"c77f63d3bc6778ae86ddff58d94ee9ad781e5214","isMergeCommit":false,"messageTitle":"Fix javadoc","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":3}}},{"hash":"f67de4749d02cfa3dbba90aa34c992196be2ac32","isMergeCommit":false,"messageTitle":"Add MI to PersonCard","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":114,"deletions":3}}},{"hash":"c7a50baa9a7470b6aac6145ebadf58214a4609b3","isMergeCommit":false,"messageTitle":"Fix listing","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":15}}},{"hash":"8119df6bbded9f929121cef97f344bd8d27113f1","isMergeCommit":false,"messageTitle":"Fix checkStyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":37,"deletions":17}}},{"hash":"6f4d590ed5e9e9f7199a1d975b85b7e8d611ed22","isMergeCommit":false,"messageTitle":"Fix ListMedicalCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":33,"deletions":14}}},{"hash":"7233bb407872c4c5254c538de21fe6e7c049435d","isMergeCommit":false,"messageTitle":"No idea how these testcases works","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":47,"deletions":47}}},{"hash":"a5a32329954a62173d093a6572288ec880fdaae5","isMergeCommit":false,"messageTitle":"the following 3 test cases currently does not work, changed to pass gradle test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":48,"deletions":47}}}]},{"date":"2024-03-20","commitResults":[{"hash":"f63ca54458c10f2e7e6cbff6c3fe50d05b55f5aa","isMergeCommit":true,"messageTitle":"Merge pull request #67 from SeaHogs/branch-Med-Info","messageBody":"Branch med info","fileTypesAndContributionMap":{}},{"hash":"cea27abc020c35a9bd724494d38931d25a9d37da","isMergeCommit":false,"messageTitle":"update copyPerson","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":1}}},{"hash":"7706635327c89c6c5deed55e399a8153884d1209","isMergeCommit":true,"messageTitle":"Merge pull request #69 from Ella-e/branch-fix-storage","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-23","commitResults":[{"hash":"adcfa08ced83981bedbc32c169c4da7195ddbf19","isMergeCommit":false,"messageTitle":"Improve UI","messageBody":"-UI no longer shows \"Allergic to:\" when there is no allergy tag.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":7}}}]}]},"authorFileTypeContributionMap":{"javierng2knus":{"docs":59,"functional-code":578,"test-code":519,"other":2},"MaYuehan":{"docs":181,"functional-code":1477,"test-code":1453,"other":2},"Ella-e":{"docs":236,"functional-code":511,"test-code":840,"other":584},"SeaHogs":{"docs":15,"functional-code":794,"test-code":264,"other":4}},"authorContributionVariance":{"javierng2knus":164044.8,"MaYuehan":163965.08,"Ella-e":66561.375,"SeaHogs":75694.03},"authorDisplayNameMap":{"javierng2knus":"CS2103T-W08-2 NG W..VIER","MaYuehan":"CS2103T-W08-2 MA Y..EHAN","Ella-e":"CS2103T-W08-2 MU Z..AOYU","SeaHogs":"CS2103T-W08-2 LAI ..IWEN"}} diff --git a/AY2324S2-CS2103T-W09-4_tp_master/authorship.json b/AY2324S2-CS2103T-W09-4_tp_master/authorship.json index 8fe94bfa..1e1e90d9 100644 --- a/AY2324S2-CS2103T-W09-4_tp_master/authorship.json +++ b/AY2324S2-CS2103T-W09-4_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"irwynliong"},"content":"[![CI Status](https://github.com/AY2324S2-CS2103T-W09-4/tp/actions/workflows/gradle.yml/badge.svg?branch\u003dmaster)](https://github.com/AY2324S2-CS2103T-W09-4/tp/actions/workflows/gradle.yml/)[![codecov](https://codecov.io/gh/AY2324S2-CS2103T-W09-4/tp/graph/badge.svg?token\u003dCBZT4IJB8J)](https://codecov.io/gh/AY2324S2-CS2103T-W09-4/tp)","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":3,"author":{"gitId":"jimseah-0116"},"content":"# InsureBook","lastModifiedDate":"2024-03-06"},{"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":"jimseah-0116"},"content":"## Description","lastModifiedDate":"2024-03-06"},{"lineNumber":8,"author":{"gitId":"jimseah-0116"},"content":"``InsureBook`` is a simple desktop application that allows insurance agents to easily keep track of potential and existing clients, their policies, and scheduled appointment dates. \u003cbr\u003e It is a GUI application with user interactions that are mostly CLI-based.","lastModifiedDate":"2024-03-06"},{"lineNumber":9,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":10,"author":{"gitId":"jimseah-0116"},"content":"## Features","lastModifiedDate":"2024-03-06"},{"lineNumber":11,"author":{"gitId":"jimseah-0116"},"content":"* Add \u0026 delete clients\u0027 information (Name, phone number, email address, policy information)","lastModifiedDate":"2024-03-06"},{"lineNumber":12,"author":{"gitId":"jimseah-0116"},"content":"* View list of clients in the main GUI window, including their name, phone number, and email address","lastModifiedDate":"2024-03-06"},{"lineNumber":13,"author":{"gitId":"jimseah-0116"},"content":"* View a client\u0027s policy information in a separate pop-up window","lastModifiedDate":"2024-03-06"},{"lineNumber":14,"author":{"gitId":"jimseah-0116"},"content":"* Track scheduled meetings and appointments","lastModifiedDate":"2024-03-06"},{"lineNumber":15,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":16,"author":{"gitId":"jimseah-0116"},"content":"## Site Map","lastModifiedDate":"2024-03-06"},{"lineNumber":17,"author":{"gitId":"jimseah-0116"},"content":"* **[InsureBook Product Website](https://ay2324s2-cs2103t-w09-4.github.io/tp/)**.","lastModifiedDate":"2024-03-06"},{"lineNumber":18,"author":{"gitId":"jimseah-0116"},"content":"* **[InsureBook - User Guide](https://ay2324s2-cs2103t-w09-4.github.io/tp/UserGuide.html)**","lastModifiedDate":"2024-03-06"},{"lineNumber":19,"author":{"gitId":"jimseah-0116"},"content":"* **[InsureBook - Developer Guide](https://ay2324s2-cs2103t-w09-4.github.io/tp/DeveloperGuide.html)**","lastModifiedDate":"2024-03-06"},{"lineNumber":20,"author":{"gitId":"jimseah-0116"},"content":"* **[InsureBook - About Us](https://ay2324s2-cs2103t-w09-4.github.io/tp/AboutUs.html)**","lastModifiedDate":"2024-03-06"},{"lineNumber":21,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":22,"author":{"gitId":"jimseah-0116"},"content":"## Credits \u0026 Acknowledgements","lastModifiedDate":"2024-03-06"},{"lineNumber":23,"author":{"gitId":"jimseah-0116"},"content":"- This project was made as part of CS2103T in AY23/24 S2.","lastModifiedDate":"2024-03-06"},{"lineNumber":24,"author":{"gitId":"jimseah-0116"},"content":"- This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"jimseah-0116":20,"irwynliong":1,"-":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":"Greg-Tan"},"content":" archiveFileName \u003d \u0027InsureBook.jar\u0027","lastModifiedDate":"2024-03-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":{"Greg-Tan":1,"-":71}},{"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":"","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":"irwynliong"},"content":"### Rahul","lastModifiedDate":"2024-03-07"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"rahhulleee"},"content":"\u003cimg src\u003d\"images/rahhulleee.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-07"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"irwynliong"},"content":"[[github](https://github.com/rahhulleee)]","lastModifiedDate":"2024-03-07"},{"lineNumber":18,"author":{"gitId":"irwynliong"},"content":"[[portfolio](team/rahul.md)]","lastModifiedDate":"2024-03-07"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"rahhulleee"},"content":"* Role: Developer","lastModifiedDate":"2024-03-07"},{"lineNumber":21,"author":{"gitId":"rahhulleee"},"content":" Responsibilities: Testing","lastModifiedDate":"2024-03-07"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"Greg-Tan"},"content":"### Greg Tan","lastModifiedDate":"2024-03-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"Greg-Tan"},"content":"\u003cimg src\u003d\"images/greg-tan.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-07"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"Greg-Tan"},"content":"[[github](http://github.com/Greg-Tan)]","lastModifiedDate":"2024-03-05"},{"lineNumber":28,"author":{"gitId":"Greg-Tan"},"content":"[[portfolio](team/greg.md)]","lastModifiedDate":"2024-03-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"Greg-Tan"},"content":"* Role: Developer","lastModifiedDate":"2024-03-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":"* Responsibilities: UI","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"youdonnnn"},"content":"### Loh Yu Tong","lastModifiedDate":"2024-03-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"youdonnnn"},"content":"\u003cimg src\u003d\"images/youdonnnn.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"youdonnnn"},"content":"[[github](https://github.com/youdonnnn)]","lastModifiedDate":"2024-03-04"},{"lineNumber":39,"author":{"gitId":"irwynliong"},"content":"[[portfolio](team/udon.md)]","lastModifiedDate":"2024-03-07"},{"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":"irwynliong"},"content":"### Jim Seah","lastModifiedDate":"2024-03-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"irwynliong"},"content":"\u003cimg src\u003d\"images/jimseah-0116.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"irwynliong"},"content":"[[github](https://github.com/jimseah-0116)]","lastModifiedDate":"2024-03-07"},{"lineNumber":49,"author":{"gitId":"irwynliong"},"content":"[[portfolio](team/jim.md)]","lastModifiedDate":"2024-03-07"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"irwynliong"},"content":"* Responsibilities: Documentation","lastModifiedDate":"2024-03-07"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"irwynliong"},"content":"### Irwyn Liong","lastModifiedDate":"2024-03-07"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"irwynliong"},"content":"\u003cimg src\u003d\"images/irwynliong.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"irwynliong"},"content":"[[github](http://github.com/irwynliong)]","lastModifiedDate":"2024-03-05"},{"lineNumber":59,"author":{"gitId":"irwynliong"},"content":"[[portfolio](team/irwyn.md)]","lastModifiedDate":"2024-03-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"irwynliong"},"content":"* Responsibilities: Deliverables \u0026 Integration","lastModifiedDate":"2024-03-05"}],"authorContributionMap":{"youdonnnn":3,"irwynliong":14,"Greg-Tan":5,"-":37,"rahhulleee":3}},{"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":"irwynliong"},"content":"# InsureBook Developer Guide","lastModifiedDate":"2024-03-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":"irwynliong"},"content":"**`Main`** (consisting of classes [`Main`](https://github.com/AY2324S2-CS2103T-W09-4/tp/blob/master/src/main/java/seedu/address/Main.java) and [`MainApp`](https://github.com/AY2324S2-CS2103T-W09-4/tp/blob/master/src/main/java/seedu/address/MainApp.java)) is in charge of the app launch and shut down.","lastModifiedDate":"2024-03-06"},{"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":"irwynliong"},"content":"The **API** of this component is specified in [`Ui.java`](https://github.com/AY2324S2-CS2103T-W09-4/tp/blob/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2024-03-06"},{"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":"irwynliong"},"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/AY2324S2-CS2103T-W09-4/tp/blob/master/src/main/java/seedu/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/AY2324S2-CS2103T-W09-4/tp/blob/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2024-03-06"},{"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":"irwynliong"},"content":"**API** : [`Logic.java`](https://github.com/AY2324S2-CS2103T-W09-4/tp/blob/master/src/main/java/seedu/address/logic/Logic.java)","lastModifiedDate":"2024-03-06"},{"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 continues till 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).\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-02-09"},{"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":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12"},{"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":"irwynliong"},"content":"**API** : [`Model.java`](https://github.com/AY2324S2-CS2103T-W09-4/tp/blob/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2024-03-06"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"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":"2021-07-31"},{"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":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":133,"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":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":135,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"irwynliong"},"content":"**API** : [`Storage.java`](https://github.com/AY2324S2-CS2103T-W09-4/tp/blob/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2024-03-06"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"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":148,"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":149,"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":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","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":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"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":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"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":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"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":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"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":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"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":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"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":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"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":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":191,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"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":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":198,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"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":201,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"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":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":213,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":217,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":219,"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":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":223,"author":{"gitId":"irwynliong"},"content":"**Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone InsureBook 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":"2024-03-06"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"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":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"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":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","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":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":264,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":265,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":266,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":267,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"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":"irwynliong"},"content":"## **Appendix A: Requirements**","lastModifiedDate":"2024-03-06"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"irwynliong"},"content":"**Target user profile**: An insurance Agent who","lastModifiedDate":"2024-03-05"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":277,"author":{"gitId":"irwynliong"},"content":"* has a need to manage a significant number of contacts and their policies","lastModifiedDate":"2024-03-05"},{"lineNumber":278,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23"},{"lineNumber":280,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26"},{"lineNumber":281,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23"},{"lineNumber":282,"author":{"gitId":"irwynliong"},"content":"* Needs a one application to schedule his appointments and reminds him about it","lastModifiedDate":"2024-03-05"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":284,"author":{"gitId":"irwynliong"},"content":"**Value proposition**: Assist Insurance Agent keep track of their clients and new clients.","lastModifiedDate":"2024-03-05"},{"lineNumber":285,"author":{"gitId":"irwynliong"},"content":"This provides them with a 1 application to add details about their clients insurance plans and","lastModifiedDate":"2024-03-05"},{"lineNumber":286,"author":{"gitId":"irwynliong"},"content":"set reminders for meetups with clients.","lastModifiedDate":"2024-03-05"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":288,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":289,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":291,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":293,"author":{"gitId":"irwynliong"},"content":"| Priority | As a …​ | I can …​ | So that I can…​ |","lastModifiedDate":"2024-03-05"},{"lineNumber":294,"author":{"gitId":"irwynliong"},"content":"|----------|------------------------------|---------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------|","lastModifiedDate":"2024-03-06"},{"lineNumber":295,"author":{"gitId":"irwynliong"},"content":"| `* * *` | insurance agent | add clients contact details into the address book | keep track of my clients |","lastModifiedDate":"2024-03-06"},{"lineNumber":296,"author":{"gitId":"irwynliong"},"content":"| `* * *` | insurance agent | delete clients contact details in the address book | remove previous clients |","lastModifiedDate":"2024-03-06"},{"lineNumber":297,"author":{"gitId":"irwynliong"},"content":"| `* * *` | insurance agent | edit details of the contact | update clients detail |","lastModifiedDate":"2024-03-06"},{"lineNumber":298,"author":{"gitId":"irwynliong"},"content":"| `* * *` | insurance agent | search for contact details | find client\u0027s information |","lastModifiedDate":"2024-03-06"},{"lineNumber":299,"author":{"gitId":"irwynliong"},"content":"| `* * *` | insurance agent | add clients insurances and policies | keep track of my clients policies and insurances |","lastModifiedDate":"2024-03-06"},{"lineNumber":300,"author":{"gitId":"irwynliong"},"content":"| `* *` | new insurance agent | view all commands | figure out how to use the application |","lastModifiedDate":"2024-03-06"},{"lineNumber":301,"author":{"gitId":"irwynliong"},"content":"| `* *` | organised insurance agent | tag different clients in the contact details as different tiers | focus on bigger clients, i.e. Clients with higher premium policies will have higher priority over others |","lastModifiedDate":"2024-03-06"},{"lineNumber":302,"author":{"gitId":"irwynliong"},"content":"| `* * *` | insurance agent\t | delete clients insurances and policies | remove client\u0027s previous policies |","lastModifiedDate":"2024-03-06"},{"lineNumber":303,"author":{"gitId":"irwynliong"},"content":"| `*` | insurance agent\t | untag clients in contact details | organise my list of client\u0027s contact |","lastModifiedDate":"2024-03-06"},{"lineNumber":304,"author":{"gitId":"irwynliong"},"content":"| `* *` | insurance agent\t | search for clients with specified policies\t | keep track of who has the specified policies which may have an update |","lastModifiedDate":"2024-03-06"},{"lineNumber":305,"author":{"gitId":"irwynliong"},"content":"| `* *` | insurance agent\t | edit details of the client\u0027s policies and insurances\t | update myself on any changes made when my clients\u0027 update their policies |","lastModifiedDate":"2024-03-06"},{"lineNumber":306,"author":{"gitId":"irwynliong"},"content":"| `*` | experienced insurance agent\t | make notes about my clients\t | remember details about my clients and better connect to them and their needs when we meet up |","lastModifiedDate":"2024-03-06"},{"lineNumber":307,"author":{"gitId":"irwynliong"},"content":"| `*` | insurance agent\t | automatically calculate my clients\u0027 total coverages\t | easily check if they have any shortfall in coverage |","lastModifiedDate":"2024-03-06"},{"lineNumber":308,"author":{"gitId":"irwynliong"},"content":"| `* * *` | forgetful insurance agent | \tadd meeting date/time in the address book | organise my day and meeting time with the client |","lastModifiedDate":"2024-03-06"},{"lineNumber":309,"author":{"gitId":"irwynliong"},"content":"| `*` | organised insurance agent | \tform a organisational chart of my clients\t | easily see which of my clients are giving more referrals |","lastModifiedDate":"2024-03-06"},{"lineNumber":310,"author":{"gitId":"irwynliong"},"content":"| `* *` | organised insurance agent | \tview upcoming meetings in a dashboard\t | anticipate and prepare for upcoming meetings |","lastModifiedDate":"2024-03-06"},{"lineNumber":311,"author":{"gitId":"irwynliong"},"content":"| `* * *` | forgetful insurance agent | \tset weekly/monthly reminders to set up meetings with particular clients\t | I won\u0027t forget about not setting up meetings with my clients to check on their life updates and review their policies |","lastModifiedDate":"2024-03-06"},{"lineNumber":312,"author":{"gitId":"irwynliong"},"content":"| `* * *` | organised insurance agent | \thave todo lists for each of my clients\t | keep track of the things I have to do for each client |","lastModifiedDate":"2024-03-06"},{"lineNumber":313,"author":{"gitId":"irwynliong"},"content":"| `* * *` | forgetful insurance agent | \tadd deadlines to tasks in my clients\u0027 todo list\t | be aware of when these tasks need to be completed |","lastModifiedDate":"2024-03-06"},{"lineNumber":314,"author":{"gitId":"irwynliong"},"content":"| `* *` | efficient insurance agent | \tsort my tasks by deadline\t | quickly see my most urgent tasks at a glance and get them done first |","lastModifiedDate":"2024-03-06"},{"lineNumber":315,"author":{"gitId":"irwynliong"},"content":"| `* *` | organised insurance agent | \tsort my clients by their insurance companies\t | group clients under the same company together and possibly complete overlapping tasks involving the company |","lastModifiedDate":"2024-03-06"},{"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":"irwynliong"},"content":"(For all use cases below, the **System** is the `InsureBook` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2024-03-06"},{"lineNumber":320,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":321,"author":{"gitId":"irwynliong"},"content":"**Use case: UC01 - View help**","lastModifiedDate":"2024-03-06"},{"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":"irwynliong"},"content":"1. User requests to see the help.","lastModifiedDate":"2024-03-06"},{"lineNumber":326,"author":{"gitId":"irwynliong"},"content":"2. InsureBook opens up the help window, displaying the command summary.","lastModifiedDate":"2024-03-06"},{"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":"irwynliong"},"content":"*a. At any time, user inputs an invalid command/syntax.","lastModifiedDate":"2024-03-06"},{"lineNumber":333,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":334,"author":{"gitId":"irwynliong"},"content":"*a1. InsureBook shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":335,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":336,"author":{"gitId":"irwynliong"},"content":"**Use case: UC02 - Add a client**","lastModifiedDate":"2024-03-06"},{"lineNumber":337,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":338,"author":{"gitId":"irwynliong"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":339,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":340,"author":{"gitId":"irwynliong"},"content":"1. User requests to add a new client.","lastModifiedDate":"2024-03-06"},{"lineNumber":341,"author":{"gitId":"irwynliong"},"content":"2. InsureBook adds the new client to the list.","lastModifiedDate":"2024-03-06"},{"lineNumber":342,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":343,"author":{"gitId":"irwynliong"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":344,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":345,"author":{"gitId":"irwynliong"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":346,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":347,"author":{"gitId":"irwynliong"},"content":"* 1a. The provided field(s) is/are invalid.","lastModifiedDate":"2024-03-06"},{"lineNumber":348,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":349,"author":{"gitId":"irwynliong"},"content":"\t* 1a1. InsureBook shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":350,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":351,"author":{"gitId":"irwynliong"},"content":"\t Use case resumes from step 1.","lastModifiedDate":"2024-03-06"},{"lineNumber":352,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":353,"author":{"gitId":"irwynliong"},"content":"* 1b. Compulsory field(s) is/are missing.","lastModifiedDate":"2024-03-06"},{"lineNumber":354,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":355,"author":{"gitId":"irwynliong"},"content":"\t* 1b1. InsureBook shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":356,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":357,"author":{"gitId":"irwynliong"},"content":"\t Use case resumes from step 1.","lastModifiedDate":"2024-03-06"},{"lineNumber":358,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":359,"author":{"gitId":"irwynliong"},"content":"*a. At any time, user inputs an invalid command/syntax.","lastModifiedDate":"2024-03-06"},{"lineNumber":360,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":361,"author":{"gitId":"irwynliong"},"content":"*a1. InsureBook shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":362,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":363,"author":{"gitId":"irwynliong"},"content":"**Use case: UC03 - List all clients**","lastModifiedDate":"2024-03-06"},{"lineNumber":364,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":365,"author":{"gitId":"irwynliong"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":366,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":367,"author":{"gitId":"irwynliong"},"content":"1. User requests to show all clients in the list.","lastModifiedDate":"2024-03-06"},{"lineNumber":368,"author":{"gitId":"irwynliong"},"content":"2. InsureBook shows all clients in the list.","lastModifiedDate":"2024-03-06"},{"lineNumber":369,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":370,"author":{"gitId":"irwynliong"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":371,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":372,"author":{"gitId":"irwynliong"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":373,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":374,"author":{"gitId":"irwynliong"},"content":"*a. At any time, user inputs an invalid command/syntax.","lastModifiedDate":"2024-03-06"},{"lineNumber":375,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":376,"author":{"gitId":"irwynliong"},"content":"*a1. InsureBook shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":377,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":378,"author":{"gitId":"irwynliong"},"content":"**Use case: UC04 - Edit a client**","lastModifiedDate":"2024-03-06"},{"lineNumber":379,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":380,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":381,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":382,"author":{"gitId":"irwynliong"},"content":"1. User requests to \u003cu\u003elist all clients\u003c/u\u003e(UC03).","lastModifiedDate":"2024-03-06"},{"lineNumber":383,"author":{"gitId":"irwynliong"},"content":"2. InsureBook displays the list of clients.","lastModifiedDate":"2024-03-06"},{"lineNumber":384,"author":{"gitId":"irwynliong"},"content":"3. User requests to edit the fields of a specific client in the list.","lastModifiedDate":"2024-03-06"},{"lineNumber":385,"author":{"gitId":"irwynliong"},"content":"4. InsureBook edits the fields of the client.","lastModifiedDate":"2024-03-06"},{"lineNumber":386,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":387,"author":{"gitId":"irwynliong"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":388,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":389,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":390,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":391,"author":{"gitId":"irwynliong"},"content":"* 1a. The list is empty.","lastModifiedDate":"2024-03-06"},{"lineNumber":392,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":393,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":394,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":395,"author":{"gitId":"-"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2020-05-23"},{"lineNumber":396,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":397,"author":{"gitId":"irwynliong"},"content":"\t* 3a1. InsureBook shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":398,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":399,"author":{"gitId":"irwynliong"},"content":"\t Use case resumes at step 3.","lastModifiedDate":"2024-03-06"},{"lineNumber":400,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":401,"author":{"gitId":"irwynliong"},"content":"* 3b. The new field value(s) is/are invalid.","lastModifiedDate":"2024-03-06"},{"lineNumber":402,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":403,"author":{"gitId":"irwynliong"},"content":"\t* 3b1. InsureBook shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":404,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":405,"author":{"gitId":"irwynliong"},"content":"\t Use case resumes at step 3.","lastModifiedDate":"2024-03-06"},{"lineNumber":406,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":407,"author":{"gitId":"irwynliong"},"content":"* 3c. No fields to edit are provided.","lastModifiedDate":"2024-03-06"},{"lineNumber":408,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":409,"author":{"gitId":"irwynliong"},"content":"\t* 3c1. InsureBook shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":410,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":411,"author":{"gitId":"irwynliong"},"content":"\t Use case resumes at step 3.","lastModifiedDate":"2024-03-06"},{"lineNumber":412,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":413,"author":{"gitId":"irwynliong"},"content":"*a. At any time, user inputs an invalid command/syntax.","lastModifiedDate":"2024-03-06"},{"lineNumber":414,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":415,"author":{"gitId":"irwynliong"},"content":"*a1. InsureBook shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":416,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":417,"author":{"gitId":"irwynliong"},"content":"**Use case: UC05 - Find a client**","lastModifiedDate":"2024-03-06"},{"lineNumber":418,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":419,"author":{"gitId":"irwynliong"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":420,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":421,"author":{"gitId":"irwynliong"},"content":"1. User requests to find all clients with names matching the input keyword(s).","lastModifiedDate":"2024-03-06"},{"lineNumber":422,"author":{"gitId":"irwynliong"},"content":"2. InsureBook shows all clients with matching names.","lastModifiedDate":"2024-03-06"},{"lineNumber":423,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":424,"author":{"gitId":"irwynliong"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":425,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":426,"author":{"gitId":"irwynliong"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":427,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":428,"author":{"gitId":"irwynliong"},"content":"* 1a. No keywords are provided.","lastModifiedDate":"2024-03-06"},{"lineNumber":429,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":430,"author":{"gitId":"irwynliong"},"content":"\t* 1a1. InsureBook shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":431,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":432,"author":{"gitId":"irwynliong"},"content":"\t Use case resumes from step 1.","lastModifiedDate":"2024-03-06"},{"lineNumber":433,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":434,"author":{"gitId":"irwynliong"},"content":"*a. At any time, user inputs an invalid command/syntax.","lastModifiedDate":"2024-03-06"},{"lineNumber":435,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":436,"author":{"gitId":"irwynliong"},"content":"*a1. InsureBook shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":437,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":438,"author":{"gitId":"irwynliong"},"content":"**Use case: UC06 - Filter client by tag**","lastModifiedDate":"2024-03-06"},{"lineNumber":439,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":440,"author":{"gitId":"irwynliong"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":441,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":442,"author":{"gitId":"irwynliong"},"content":"1. User requests to find all clients with specific tag(s).","lastModifiedDate":"2024-03-06"},{"lineNumber":443,"author":{"gitId":"irwynliong"},"content":"2. InsureBook shows all clients with a matching tag.","lastModifiedDate":"2024-03-06"},{"lineNumber":444,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":445,"author":{"gitId":"irwynliong"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":446,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":447,"author":{"gitId":"irwynliong"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":448,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":449,"author":{"gitId":"irwynliong"},"content":"* 1a. No tags are provided.","lastModifiedDate":"2024-03-06"},{"lineNumber":450,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":451,"author":{"gitId":"irwynliong"},"content":"\t* 1a1. InsureBook shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":452,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":453,"author":{"gitId":"irwynliong"},"content":"\t Use case resumes from step 1.","lastModifiedDate":"2024-03-06"},{"lineNumber":454,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":455,"author":{"gitId":"irwynliong"},"content":"*a. At any time, user inputs an invalid command/syntax.","lastModifiedDate":"2024-03-06"},{"lineNumber":456,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":457,"author":{"gitId":"irwynliong"},"content":"*a1. InsureBook shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":458,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":459,"author":{"gitId":"irwynliong"},"content":"**Use case: UC07 - Delete a client**","lastModifiedDate":"2024-03-06"},{"lineNumber":460,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":461,"author":{"gitId":"irwynliong"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":462,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":463,"author":{"gitId":"irwynliong"},"content":"1. User requests to \u003cu\u003elist all clients\u003c/u\u003e (UC03).","lastModifiedDate":"2024-03-06"},{"lineNumber":464,"author":{"gitId":"irwynliong"},"content":"2. User requests to delete a specific client in the list.","lastModifiedDate":"2024-03-06"},{"lineNumber":465,"author":{"gitId":"irwynliong"},"content":"3. InsureBook deletes the clients.","lastModifiedDate":"2024-03-06"},{"lineNumber":466,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":467,"author":{"gitId":"irwynliong"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":468,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":469,"author":{"gitId":"irwynliong"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":470,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":471,"author":{"gitId":"irwynliong"},"content":"* 1a. The list is empty.","lastModifiedDate":"2024-03-06"},{"lineNumber":472,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":473,"author":{"gitId":"irwynliong"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":474,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":475,"author":{"gitId":"irwynliong"},"content":"* 2a. The given index is invalid.","lastModifiedDate":"2024-03-06"},{"lineNumber":476,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":477,"author":{"gitId":"irwynliong"},"content":"\t* 2a1. InsureBook shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":478,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":479,"author":{"gitId":"-"},"content":"\t Use case resumes at step 2.","lastModifiedDate":"2020-05-23"},{"lineNumber":480,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":481,"author":{"gitId":"irwynliong"},"content":"*a. At any time, user inputs an invalid command/syntax.","lastModifiedDate":"2024-03-06"},{"lineNumber":482,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":483,"author":{"gitId":"irwynliong"},"content":"*a1. InsureBook shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":484,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":485,"author":{"gitId":"irwynliong"},"content":"**Use case: UC08 - Clear all entries**","lastModifiedDate":"2024-03-06"},{"lineNumber":486,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":487,"author":{"gitId":"irwynliong"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":488,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":489,"author":{"gitId":"irwynliong"},"content":"1. User requests to clear all entries.","lastModifiedDate":"2024-03-06"},{"lineNumber":490,"author":{"gitId":"irwynliong"},"content":"2. InsureBook asks for confirmation to clear all entries.","lastModifiedDate":"2024-03-06"},{"lineNumber":491,"author":{"gitId":"irwynliong"},"content":"3. User confirms to clear all entries.","lastModifiedDate":"2024-03-06"},{"lineNumber":492,"author":{"gitId":"irwynliong"},"content":"4. InsureBook clears all entries.","lastModifiedDate":"2024-03-06"},{"lineNumber":493,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":494,"author":{"gitId":"irwynliong"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":495,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":496,"author":{"gitId":"irwynliong"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":497,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":498,"author":{"gitId":"irwynliong"},"content":"* 2a. Confirmation is not given.","lastModifiedDate":"2024-03-06"},{"lineNumber":499,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":500,"author":{"gitId":"irwynliong"},"content":"\t* 2a1. InsureBook cancels the clear action.","lastModifiedDate":"2024-03-06"},{"lineNumber":501,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":502,"author":{"gitId":"irwynliong"},"content":"\t Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":503,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":504,"author":{"gitId":"irwynliong"},"content":"*a. At any time, user inputs an invalid command/syntax.","lastModifiedDate":"2024-03-06"},{"lineNumber":505,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":506,"author":{"gitId":"irwynliong"},"content":"*a1. InsureBook shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":507,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":508,"author":{"gitId":"irwynliong"},"content":"**Use case UC09: Exit program**","lastModifiedDate":"2024-03-06"},{"lineNumber":509,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":510,"author":{"gitId":"irwynliong"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":511,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":512,"author":{"gitId":"irwynliong"},"content":"1. User requests to exit the program.","lastModifiedDate":"2024-03-06"},{"lineNumber":513,"author":{"gitId":"irwynliong"},"content":"2. InsureBook exits.","lastModifiedDate":"2024-03-06"},{"lineNumber":514,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":515,"author":{"gitId":"irwynliong"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":516,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":517,"author":{"gitId":"irwynliong"},"content":"*a. At any time, user inputs an invalid command/syntax.","lastModifiedDate":"2024-03-06"},{"lineNumber":518,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":519,"author":{"gitId":"irwynliong"},"content":"*a1. InsureBook shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":520,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":521,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":522,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":523,"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":524,"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":525,"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":526,"author":{"gitId":"irwynliong"},"content":"4. Should work without internet connection.","lastModifiedDate":"2024-03-06"},{"lineNumber":527,"author":{"gitId":"irwynliong"},"content":"5.\tFor any command, the system should respond within 2 seconds.","lastModifiedDate":"2024-03-06"},{"lineNumber":528,"author":{"gitId":"irwynliong"},"content":"6. Should provide comprehensive documentation for users to learn how to use the command-line interface effectively.","lastModifiedDate":"2024-03-06"},{"lineNumber":529,"author":{"gitId":"irwynliong"},"content":"7. Should provide clear and user-friendly error messages, guiding users on how to rectify issues.","lastModifiedDate":"2024-03-06"},{"lineNumber":530,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":531,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":532,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":533,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":534,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09"},{"lineNumber":535,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23"},{"lineNumber":536,"author":{"gitId":"irwynliong"},"content":"* **CLI**: Command Line Interface","lastModifiedDate":"2024-03-06"},{"lineNumber":537,"author":{"gitId":"irwynliong"},"content":"* **GUI**: Graphical User Interface","lastModifiedDate":"2024-03-06"},{"lineNumber":538,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":539,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":540,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":541,"author":{"gitId":"irwynliong"},"content":"## **Appendix B: Instructions for manual testing**","lastModifiedDate":"2024-03-06"},{"lineNumber":542,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":543,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":544,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":545,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":546,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":547,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":548,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":549,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":550,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":551,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":552,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":553,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12"},{"lineNumber":554,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":555,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":556,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":557,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":558,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":559,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":560,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":561,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":562,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":563,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":564,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":565,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":566,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":567,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":568,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":569,"author":{"gitId":"rahhulleee"},"content":"\t 1. Download the JAR file and copy into an empty folder. See the [Quick Start](UserGuide.md#quick-start) section in the User Guide for the link to download the JAR file.","lastModifiedDate":"2024-03-06"},{"lineNumber":570,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":571,"author":{"gitId":"rahhulleee"},"content":"\t 2. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum.","lastModifiedDate":"2024-03-06"},{"lineNumber":572,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":573,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":574,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":575,"author":{"gitId":"rahhulleee"},"content":"2. Saving window preferences","lastModifiedDate":"2024-03-06"},{"lineNumber":576,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":577,"author":{"gitId":"-"},"content":"\t1. Resize the window to an optimum size. Move the window to a different location. Close the window.","lastModifiedDate":"2020-05-23"},{"lineNumber":578,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":579,"author":{"gitId":"rahhulleee"},"content":"\t2. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":580,"author":{"gitId":"-"},"content":"\tExpected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":581,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":582,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":583,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":584,"author":{"gitId":"rahhulleee"},"content":"3. Exiting the Application (Shutdown)","lastModifiedDate":"2024-03-06"},{"lineNumber":585,"author":{"gitId":"irwynliong"},"content":"\t1. Type in \"Exit\" in the main command bar of the InsureBook.","lastModifiedDate":"2024-03-06"},{"lineNumber":586,"author":{"gitId":"rahhulleee"},"content":"\t2. Else, manually close the Application","lastModifiedDate":"2024-03-06"},{"lineNumber":587,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":588,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":589,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":590,"author":{"gitId":"irwynliong"},"content":"### Deleting a client","lastModifiedDate":"2024-03-06"},{"lineNumber":591,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":592,"author":{"gitId":"rahhulleee"},"content":" ","lastModifiedDate":"2024-03-06"},{"lineNumber":593,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":594,"author":{"gitId":"irwynliong"},"content":"1. Deleting a client while all clients are being shown","lastModifiedDate":"2024-03-06"},{"lineNumber":595,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":596,"author":{"gitId":"irwynliong"},"content":"\t 1. Prerequisites: List all clients using the `list` command. Multiple clients in the list.","lastModifiedDate":"2024-03-06"},{"lineNumber":597,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":598,"author":{"gitId":"rahhulleee"},"content":"\t 2. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":599,"author":{"gitId":"irwynliong"},"content":"\t\tExpected: First client\u0027s contact is deleted from the list. Details of the deleted contact shown in the status message. Timestamp in the status bar is updated.","lastModifiedDate":"2024-03-06"},{"lineNumber":600,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":601,"author":{"gitId":"rahhulleee"},"content":"\t 3. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":602,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":603,"author":{"gitId":"irwynliong"},"content":"\t\t\tExpected: No client is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2024-03-06"},{"lineNumber":604,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":605,"author":{"gitId":"rahhulleee"},"content":"\t 4. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)\u003cbr\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":606,"author":{"gitId":"-"},"content":"\t\tExpected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":607,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":608,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":609,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":610,"author":{"gitId":"irwynliong"},"content":"2. Deleting a client from an empty InsureBook","lastModifiedDate":"2024-03-06"},{"lineNumber":611,"author":{"gitId":"irwynliong"},"content":"\t1. Prerequisites: List all clients using the `list` command. The list should be empty.","lastModifiedDate":"2024-03-06"},{"lineNumber":612,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":613,"author":{"gitId":"rahhulleee"},"content":"\t2. Test case: `delete x`","lastModifiedDate":"2024-03-06"},{"lineNumber":614,"author":{"gitId":"rahhulleee"},"content":"\t","lastModifiedDate":"2024-03-06"},{"lineNumber":615,"author":{"gitId":"rahhulleee"},"content":"\t\tExpected: An Error should pop up and Error details will be shown in the status message. Shows that the storage is functioning properly.","lastModifiedDate":"2024-03-06"},{"lineNumber":616,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":617,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":618,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":619,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":620,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":621,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":622,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":623,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":624,"author":{"gitId":"rahhulleee"},"content":"\t 1. Stimulating a corrupted/missing data file","lastModifiedDate":"2024-03-06"},{"lineNumber":625,"author":{"gitId":"rahhulleee"},"content":"\t\t 1. Close the application if it\u0027s running.","lastModifiedDate":"2024-03-06"},{"lineNumber":626,"author":{"gitId":"irwynliong"},"content":"\t\t 2. Navigate to the file containing the data of the InsureBook which is located in `/data/addressbook.json`","lastModifiedDate":"2024-03-06"},{"lineNumber":627,"author":{"gitId":"rahhulleee"},"content":"\t\t 3. Delete or rename this json file and this will corrupt it","lastModifiedDate":"2024-03-06"},{"lineNumber":628,"author":{"gitId":"rahhulleee"},"content":"\t\t 4. Exit and relaunch the application","lastModifiedDate":"2024-03-06"},{"lineNumber":629,"author":{"gitId":"-"},"content":"\t ","lastModifiedDate":"2020-05-23"},{"lineNumber":630,"author":{"gitId":"irwynliong"},"content":"\t\t\t Expected: The application should detect that the data file is missing and the whole InsureBook would be empty, and the commands will still be working in the empty InsureBook without any crashes. This ensures that the application can still be used even if the data file gets deleted.","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"irwynliong":229,"-":368,"rahhulleee":33}},{"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":"jimseah-0116"},"content":"# InsureBook User Guide","lastModifiedDate":"2024-03-06"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"jimseah-0116"},"content":"InsureBook is a **desktop app for insurance agents to manage potential and existing clients\u0027 personal and policy details.** The app has a Graphical User Interface (GUI), but most user interactions occur via a Command Line Interface (CLI). If you can type fast, InsureBook can get your client management tasks done faster than traditional GUI apps!","lastModifiedDate":"2024-03-06"},{"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":"jimseah-0116"},"content":"*The InsureBook .jar file is not available for download yet. These instructions will be applicable when it is released in the future.*","lastModifiedDate":"2024-03-06"},{"lineNumber":19,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":20,"author":{"gitId":"-"},"content":"1. Ensure you have Java `11` or above installed in your Computer.","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"jimseah-0116"},"content":"1. Download the latest `insurebook.jar` from [here](https://github.com/se-edu/addressbook-level3/releases).","lastModifiedDate":"2024-03-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"jimseah-0116"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for InsureBook.","lastModifiedDate":"2024-03-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"jimseah-0116"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar insurebook.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":27,"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":28,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"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":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":"jimseah-0116"},"content":" * `list` : Lists all clients.","lastModifiedDate":"2024-03-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"jimseah-0116"},"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 your InsureBook.","lastModifiedDate":"2024-03-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"jimseah-0116"},"content":" * `delete 3` : Deletes the 3rd client shown in the current list.","lastModifiedDate":"2024-03-06"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"jimseah-0116"},"content":" * `clear` : Deletes all clients.","lastModifiedDate":"2024-03-06"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"**Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"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":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"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":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"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":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"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":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"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":66,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":68,"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":69,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"### Adding a person: `add`","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"youdonnnn"},"content":"Adds a client, together with their name, phone number and email into the address book.","lastModifiedDate":"2024-03-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"Greg-Tan"},"content":"Format: add n/NAME p/PHONENUMBER e/EMAIL","lastModifiedDate":"2024-03-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":77,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"youdonnnn"},"content":"* `add n/Gregorius p/91234567 e/giddy@gmail.com`","lastModifiedDate":"2024-03-05"},{"lineNumber":79,"author":{"gitId":"youdonnnn"},"content":"* `add n/Rahrahsan p/90019001 e/rahrah@outlook.com`","lastModifiedDate":"2024-03-05"},{"lineNumber":80,"author":{"gitId":"youdonnnn"},"content":"* `add n/Jim p/88888888 e/jimtyms@yahoo.com`","lastModifiedDate":"2024-03-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"### Listing all persons : `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"Shows a list of all persons in the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"youdonnnn"},"content":"Removes an existing client based on their index from the address book.","lastModifiedDate":"2024-03-05"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2024-03-06"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"* Deletes the person at the specified `INDEX`.","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"Greg-Tan"},"content":"* The index **must be a positive integer between the numeric range of contacts in the address book.**","lastModifiedDate":"2024-03-06"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"youdonnnn"},"content":"* `delete 2`","lastModifiedDate":"2024-03-05"},{"lineNumber":100,"author":{"gitId":"youdonnnn"},"content":"* `delete 4`","lastModifiedDate":"2024-03-05"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"Greg-Tan"},"content":"### Adding a new policy to a person : `addPolicy`","lastModifiedDate":"2024-03-06"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":104,"author":{"gitId":"Greg-Tan"},"content":"Adds new insurance policy to a specific client","lastModifiedDate":"2024-03-06"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":106,"author":{"gitId":"Greg-Tan"},"content":"Format: `addPolicy i/INDEX n/POLICY`","lastModifiedDate":"2024-03-06"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":108,"author":{"gitId":"Greg-Tan"},"content":"* Adds a policy to the person at the specified `INDEX`.","lastModifiedDate":"2024-03-06"},{"lineNumber":109,"author":{"gitId":"Greg-Tan"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2024-03-06"},{"lineNumber":110,"author":{"gitId":"Greg-Tan"},"content":"* The index **must be a positive integer between the numeric range of contacts in the address book.**","lastModifiedDate":"2024-03-06"},{"lineNumber":111,"author":{"gitId":"Greg-Tan"},"content":"* `POLICY` is the name of the policy to be added","lastModifiedDate":"2024-03-06"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":113,"author":{"gitId":"Greg-Tan"},"content":"Examples:","lastModifiedDate":"2024-03-06"},{"lineNumber":114,"author":{"gitId":"Greg-Tan"},"content":"* `addPolicy i/10 n/SuperSaver`","lastModifiedDate":"2024-03-06"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":116,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"jimseah-0116"},"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 InsureBook home folder.","lastModifiedDate":"2024-03-06"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":127,"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":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"-----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-12"},{"lineNumber":135,"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":136,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"**Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3`","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"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":139,"author":{"gitId":"-"},"content":"**Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake`","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"**List** | `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"jimseah-0116"},"content":"**Exit** | `exit`","lastModifiedDate":"2024-03-06"},{"lineNumber":143,"author":{"gitId":"jimseah-0116"},"content":"**AddPolicy** | `addPolicy i/INDEX n/POLICY`\u003cbr\u003e e.g., `addPolicy i/4 n/SuperSaver`","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"youdonnnn":7,"jimseah-0116":14,"Greg-Tan":11,"-":111}},{"path":"docs/_markbind/layouts/default.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003chead-bottom\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003clink rel\u003d\"stylesheet\" href\u003d\"{{baseUrl}}/stylesheets/main.css\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c/head-bottom\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003cheader sticky\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cnavbar type\u003d\"dark\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"irwynliong"},"content":" \u003ca slot\u003d\"brand\" href\u003d\"{{baseUrl}}/index.html\" title\u003d\"Home\" class\u003d\"navbar-brand\"\u003eInsureBook\u003c/a\u003e","lastModifiedDate":"2024-02-29"},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/index.html\" class\u003d\"nav-link\"\u003eHome\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/UserGuide.html\" class\u003d\"nav-link\"\u003eUser Guide\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/DeveloperGuide.html\" class\u003d\"nav-link\"\u003eDeveloper Guide\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/AboutUs.html\" class\u003d\"nav-link\"\u003eAbout Us\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":12,"author":{"gitId":"irwynliong"},"content":" \u003cli\u003e\u003ca href\u003d\"https://github.com/AY2324S2-CS2103T-W09-4/tp\" target\u003d\"_blank\" class\u003d\"nav-link\"\u003e\u003cmd\u003e:fab-github:\u003c/md\u003e\u003c/a\u003e","lastModifiedDate":"2024-03-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cli slot\u003d\"right\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cform class\u003d\"navbar-form\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003csearchbar :data\u003d\"searchData\" placeholder\u003d\"Search\" :on-hit\u003d\"searchCallback\" menu-align-right\u003e\u003c/searchbar\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/form\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/navbar\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"\u003c/header\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"flex-body\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"site-nav\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"site-nav-top\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"fw-bold mb-2\" style\u003d\"font-size: 1.25rem;\"\u003eSite Map\u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003csite-nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"* [Home]({{ baseUrl }}/index.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"* [User Guide]({{ baseUrl }}/UserGuide.html) :expanded:","lastModifiedDate":"2023-09-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * [Quick Start]({{ baseUrl }}/UserGuide.html#quick-start)","lastModifiedDate":"2023-09-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * [Features]({{ baseUrl }}/UserGuide.html#features)","lastModifiedDate":"2023-09-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * [FAQ]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * [Command Summary]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":"* [Developer Guide]({{ baseUrl }}/DeveloperGuide.html) :expanded:","lastModifiedDate":"2023-09-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * [Acknowledgements]({{ baseUrl }}/DeveloperGuide.html#acknowledgements)","lastModifiedDate":"2023-09-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * [Setting Up]({{ baseUrl }}/DeveloperGuide.html#setting-up-getting-started)","lastModifiedDate":"2023-09-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * [Design]({{ baseUrl }}/DeveloperGuide.html#design)","lastModifiedDate":"2023-09-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * [Implementation]({{ baseUrl }}/DeveloperGuide.html#implementation)","lastModifiedDate":"2023-09-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * [Documentation, logging, testing, configuration, dev-ops]({{ baseUrl }}/DeveloperGuide.html#documentation-logging-testing-configuration-dev-ops)","lastModifiedDate":"2023-09-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * [Appendix: Requirements]({{ baseUrl }}/DeveloperGuide.html#appendix-requirements)","lastModifiedDate":"2023-09-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * [Appendix: Instructions for manual testing]({{ baseUrl }}/DeveloperGuide.html#appendix-instructions-for-manual-testing)","lastModifiedDate":"2023-09-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":"* Tutorials","lastModifiedDate":"2023-09-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * [Tracing code]({{ baseUrl }}/tutorials/TracingCode.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * [Adding a command]({{ baseUrl }}/tutorials/AddRemark.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * [Removing Fields]({{ baseUrl }}/tutorials/RemovingFields.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [About Us]({{ baseUrl }}/AboutUs.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/site-nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cdiv id\u003d\"content-wrapper\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" {{ content }}","lastModifiedDate":"2023-09-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"page-nav\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cpage-nav /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003cscroll-top-button\u003e\u003c/scroll-top-button\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":"\u003cfooter\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003c!-- Support MarkBind by including a link to us on your landing page! --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"text-center\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u003csmall\u003e[\u003cmd\u003e**Powered by**\u003c/md\u003e \u003cimg src\u003d\"https://markbind.org/favicon.ico\" width\u003d\"30\"\u003e {{MarkBind}}, generated on {{timestamp}}]\u003c/small\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003c/footer\u003e","lastModifiedDate":"2023-09-12"}],"authorContributionMap":{"irwynliong":2,"-":65}},{"path":"docs/diagrams/AddPolicySequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"rahhulleee"},"content":"@startuml","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"rahhulleee"},"content":"!include style.puml","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"rahhulleee"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"rahhulleee"},"content":"Actor User as user USER_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"rahhulleee"},"content":"Participant \":UI\" as ui UI_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"rahhulleee"},"content":"Participant \":Logic\" as logic LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"rahhulleee"},"content":"Participant \":Model\" as model MODEL_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"rahhulleee"},"content":"Participant \":Storage\" as storage STORAGE_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"youdonnnn"},"content":"user -[USER_COLOR]\u003e ui : \"addPolicy 2 pn/SaversScheme\"","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"rahhulleee"},"content":"activate ui UI_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"youdonnnn"},"content":"ui -[UI_COLOR]\u003e logic : execute(\"addPolicy 2 pn/SaversScheme\")","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"rahhulleee"},"content":"activate logic LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"youdonnnn"},"content":"logic -[LOGIC_COLOR]\u003e model : AddPolicyCommand(Index.fromOneBased(2))","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"rahhulleee"},"content":"activate model MODEL_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"rahhulleee"},"content":"model -[MODEL_COLOR]-\u003e logic","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"rahhulleee"},"content":"deactivate model","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"rahhulleee"},"content":"\u0027 Optional: Only if the view operation needs to interact with storage, e.g., for caching or refreshing data","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"rahhulleee"},"content":"logic -[LOGIC_COLOR]\u003e storage : saveAddressBook(addressBook)","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"rahhulleee"},"content":"activate storage STORAGE_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"rahhulleee"},"content":"storage -[STORAGE_COLOR]\u003e storage :","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"rahhulleee"},"content":"activate storage STORAGE_COLOR_T1","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"rahhulleee"},"content":"storage --[STORAGE_COLOR]\u003e storage","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"rahhulleee"},"content":"deactivate storage","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"rahhulleee"},"content":"storage --[STORAGE_COLOR]\u003e logic","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"rahhulleee"},"content":"deactivate storage","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"rahhulleee"},"content":"\u0027 End of optional storage interaction","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"rahhulleee"},"content":"logic --[LOGIC_COLOR]\u003e ui","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"rahhulleee"},"content":"deactivate logic","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"rahhulleee"},"content":"ui--[UI_COLOR]\u003e user","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"rahhulleee"},"content":"deactivate ui","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"rahhulleee"},"content":"@enduml","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"youdonnnn":3,"rahhulleee":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":"-"},"content":"AddressBook *-right-\u003e \"1\" UniquePersonList","lastModifiedDate":"2019-07-30"},{"lineNumber":8,"author":{"gitId":"-"},"content":"AddressBook *-right-\u003e \"1\" UniqueTagList","lastModifiedDate":"2019-07-30"},{"lineNumber":9,"author":{"gitId":"-"},"content":"UniqueTagList -[hidden]down- UniquePersonList","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"UniqueTagList -[hidden]down- UniquePersonList","lastModifiedDate":"2019-07-03"},{"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":"-"},"content":"UniquePersonList -right-\u003e Person","lastModifiedDate":"2021-07-31"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"Person -up-\u003e \"*\" Tag","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Person *--\u003e Name","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Person *--\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Person *--\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Person *--\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"irwynliong"},"content":"Person *--\u003e Meeting","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"irwynliong":1,"-":21}},{"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":"-"},"content":"Class UniquePersonList","lastModifiedDate":"2021-07-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Class Person","lastModifiedDate":"2019-07-03"},{"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":"-"},"content":"Class Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"irwynliong"},"content":"Class Meeting","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Class Tag","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":24,"author":{"gitId":"-"},"content":"Class I #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"AddressBook .up.|\u003e ReadOnlyAddressBook","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"ModelManager .up.|\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"Model .right.\u003e ReadOnlyUserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"Model .left.\u003e ReadOnlyAddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":"ModelManager -left-\u003e \"1\" AddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"ModelManager -right-\u003e \"1\" UserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"UserPrefs .up.|\u003e ReadOnlyUserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"AddressBook *--\u003e \"1\" UniquePersonList","lastModifiedDate":"2019-07-30"},{"lineNumber":40,"author":{"gitId":"-"},"content":"UniquePersonList --\u003e \"~* all\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":41,"author":{"gitId":"-"},"content":"Person *--\u003e Name","lastModifiedDate":"2019-07-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"Person *--\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"Person *--\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"Person *--\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"irwynliong"},"content":"Person *--\u003e Meeting","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":"Person *--\u003e \"*\" Tag","lastModifiedDate":"2019-07-03"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":48,"author":{"gitId":"-"},"content":"Person -[hidden]up--\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"UniquePersonList -[hidden]right-\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"Name -[hidden]right-\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":52,"author":{"gitId":"-"},"content":"Phone -[hidden]right-\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":53,"author":{"gitId":"-"},"content":"Address -[hidden]right-\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":54,"author":{"gitId":"irwynliong"},"content":"Meeting -[hidden]right-\u003e Meeting","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":"ModelManager --\u003e \"~* filtered\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":57,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"irwynliong":3,"-":54}},{"path":"docs/diagrams/ViewSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"rahhulleee"},"content":"@startuml","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"rahhulleee"},"content":"!include style.puml","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"rahhulleee"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"rahhulleee"},"content":"Actor User as user USER_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"rahhulleee"},"content":"Participant \":UI\" as ui UI_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"rahhulleee"},"content":"Participant \":Logic\" as logic LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"rahhulleee"},"content":"Participant \":Model\" as model MODEL_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"rahhulleee"},"content":"Participant \":Storage\" as storage STORAGE_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"rahhulleee"},"content":"user -[USER_COLOR]\u003e ui : \"view 2\"","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"rahhulleee"},"content":"activate ui UI_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"rahhulleee"},"content":"ui -[UI_COLOR]\u003e logic : execute(\"view 2\")","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"rahhulleee"},"content":"activate logic LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"rahhulleee"},"content":"logic -[LOGIC_COLOR]\u003e model : ViewCommand(Index.fromOneBased(2))","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"rahhulleee"},"content":"activate model MODEL_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"rahhulleee"},"content":"model -[MODEL_COLOR]-\u003e logic","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"rahhulleee"},"content":"deactivate model","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"rahhulleee"},"content":"\u0027 Optional: Only if the view operation needs to interact with storage, e.g., for caching or refreshing data","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"rahhulleee"},"content":"logic -[LOGIC_COLOR]\u003e storage : saveAddressBook(addressBook)","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"rahhulleee"},"content":"activate storage STORAGE_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"rahhulleee"},"content":"storage -[STORAGE_COLOR]\u003e storage :","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"rahhulleee"},"content":"activate storage STORAGE_COLOR_T1","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"rahhulleee"},"content":"storage --[STORAGE_COLOR]\u003e storage","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"rahhulleee"},"content":"deactivate storage","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"rahhulleee"},"content":"storage --[STORAGE_COLOR]\u003e logic","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"rahhulleee"},"content":"deactivate storage","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"rahhulleee"},"content":"\u0027 End of optional storage interaction","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"rahhulleee"},"content":"logic --[LOGIC_COLOR]\u003e ui","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"rahhulleee"},"content":"deactivate logic","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"rahhulleee"},"content":"ui--[UI_COLOR]\u003e user","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"rahhulleee"},"content":"deactivate ui","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"rahhulleee"},"content":"@enduml","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"rahhulleee":41}},{"path":"docs/team/irwyn.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"irwynliong"},"content":"---","lastModifiedDate":"2024-03-05"},{"lineNumber":2,"author":{"gitId":"irwynliong"},"content":" layout: default.md","lastModifiedDate":"2024-03-05"},{"lineNumber":3,"author":{"gitId":"irwynliong"},"content":" title: \"Irwyn Liong\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-03-05"},{"lineNumber":4,"author":{"gitId":"irwynliong"},"content":"---","lastModifiedDate":"2024-03-05"},{"lineNumber":5,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":6,"author":{"gitId":"irwynliong"},"content":"### Project: InsureBook","lastModifiedDate":"2024-03-05"},{"lineNumber":7,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":8,"author":{"gitId":"irwynliong"},"content":"InsureBook is a desktop application that assist insurance agents manage their client\u0027s contact and policies as well as to set reminders and schedule meetings with client.","lastModifiedDate":"2024-03-05"},{"lineNumber":9,"author":{"gitId":"irwynliong"},"content":"The user interacts with it using a CLI, and it has a GUI created with JavaFX.","lastModifiedDate":"2024-03-05"},{"lineNumber":10,"author":{"gitId":"irwynliong"},"content":"It is written in Java, and has about 10 kLoC. This project is based on [AddressBook - Level 3](https://se-education.org/addressbook-level3/).","lastModifiedDate":"2024-03-05"},{"lineNumber":11,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":12,"author":{"gitId":"irwynliong"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-05"},{"lineNumber":13,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":14,"author":{"gitId":"irwynliong"},"content":"### Features","lastModifiedDate":"2024-03-05"},{"lineNumber":15,"author":{"gitId":"irwynliong"},"content":"1. **New Feature**:","lastModifiedDate":"2024-03-05"},{"lineNumber":16,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":17,"author":{"gitId":"irwynliong"},"content":"\u003cdiv style\u003d\"page-break-after: always;\"\u003e\u003c/div\u003e","lastModifiedDate":"2024-03-05"},{"lineNumber":18,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":19,"author":{"gitId":"irwynliong"},"content":"### Code Contributed","lastModifiedDate":"2024-03-05"},{"lineNumber":20,"author":{"gitId":"irwynliong"},"content":"[RepoSense link]()","lastModifiedDate":"2024-03-05"},{"lineNumber":21,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":22,"author":{"gitId":"irwynliong"},"content":"### Documentation","lastModifiedDate":"2024-03-05"},{"lineNumber":23,"author":{"gitId":"irwynliong"},"content":"* User Guide:","lastModifiedDate":"2024-03-05"},{"lineNumber":24,"author":{"gitId":"irwynliong"},"content":" * Added documentation","lastModifiedDate":"2024-03-05"},{"lineNumber":25,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":26,"author":{"gitId":"irwynliong"},"content":"* Developer Guide:","lastModifiedDate":"2024-03-05"},{"lineNumber":27,"author":{"gitId":"irwynliong"},"content":" * Added use case section","lastModifiedDate":"2024-03-05"},{"lineNumber":28,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":29,"author":{"gitId":"irwynliong"},"content":"### Project Management","lastModifiedDate":"2024-03-05"},{"lineNumber":30,"author":{"gitId":"irwynliong"},"content":"* Contributed to Issue tracker and PR reviews","lastModifiedDate":"2024-03-05"},{"lineNumber":31,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":32,"author":{"gitId":"irwynliong"},"content":"### Community","lastModifiedDate":"2024-03-05"},{"lineNumber":33,"author":{"gitId":"irwynliong"},"content":"* PRs reviewed","lastModifiedDate":"2024-03-05"}],"authorContributionMap":{"irwynliong":33}},{"path":"docs/team/jim.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":"irwynliong"},"content":" title: \"Jim Seah\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-03-07"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2021-07-30"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"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":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"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":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"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":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"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":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"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":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"* **Project management**:","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"* **Documentation**:","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * User Guide:","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Developer Guide:","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"* **Community**:","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"* **Tools**:","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"irwynliong":1,"-":45}},{"path":"docs/team/rahul.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":"irwynliong"},"content":" title: \"Rahul\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-03-07"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2021-07-30"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"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":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"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":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"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":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"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":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"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":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"* **Project management**:","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"* **Documentation**:","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * User Guide:","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Developer Guide:","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"* **Community**:","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"* **Tools**:","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"irwynliong":1,"-":45}},{"path":"docs/team/udon.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":"irwynliong"},"content":" title: \"Yu Tong\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-03-07"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2021-07-30"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"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":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"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":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"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":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"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":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"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":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"* **Project management**:","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"* **Documentation**:","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * User Guide:","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Developer Guide:","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"* **Community**:","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"* **Tools**:","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"irwynliong":1,"-":45}},{"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":"irwynliong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MEETING;","lastModifiedDate":"2024-03-21"},{"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":"irwynliong"},"content":" * Adds a client to the address book.","lastModifiedDate":"2024-03-21"},{"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":"irwynliong"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a client to the address book. \"","lastModifiedDate":"2024-03-21"},{"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":"irwynliong"},"content":" + PREFIX_MEETING + \"MEETING \"","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":37,"author":{"gitId":"irwynliong"},"content":" + PREFIX_MEETING + \"2024-02-12 \"","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2017-05-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"owesMoney\";","lastModifiedDate":"2017-05-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"irwynliong"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New client added: %1$s\";","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"irwynliong"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This client already exists in the address book\";","lastModifiedDate":"2024-03-21"},{"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":{"irwynliong":7,"-":80}},{"path":"src/main/java/seedu/address/logic/commands/AddPolicyCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Greg-Tan"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"Greg-Tan"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"Greg-Tan"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"Greg-Tan"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"Greg-Tan"},"content":"import java.util.List;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"Greg-Tan"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"youdonnnn"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"youdonnnn"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"Greg-Tan"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"Greg-Tan"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"Greg-Tan"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"Greg-Tan"},"content":"import seedu.address.model.person.Policy;","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"youdonnnn"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"youdonnnn"},"content":" * Adds a policy to the client identified by the index number used in the last person listing","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"youdonnnn"},"content":" * and the policy name.","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"youdonnnn"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"Greg-Tan"},"content":"public class AddPolicyCommand extends Command {","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"Greg-Tan"},"content":" public static final String COMMAND_WORD \u003d \"addPolicy\";","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"Greg-Tan"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"youdonnnn"},"content":" + \": Adds a policy to the client identified \"","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"youdonnnn"},"content":" + \"by the index number used in the last person listing\\n\"","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"youdonnnn"},"content":" + \"and the policy name. \"","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"Greg-Tan"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"youdonnnn"},"content":" + \"pn/ [POLICY NAME]\\n\"","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"Greg-Tan"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"youdonnnn"},"content":" + \"pn/ SuperSaver\";","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"Greg-Tan"},"content":" public static final String MESSAGE_ARGUMENTS \u003d \"Index %1$d, Policy Name: %2$s\";","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"Greg-Tan"},"content":" public static final String MESSAGE_ADD_POLICY_SUCCESS \u003d \"Added policy to Person: %1$s\";","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"Greg-Tan"},"content":" public static final String MESSAGE_DELETE_POLICY_SUCCESS \u003d \"Removed policy from Person: %1$s\";","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"Greg-Tan"},"content":" private final Index index;","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"Greg-Tan"},"content":" private final String policyName;","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"youdonnnn"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"youdonnnn"},"content":" * Creates an AddPolicyCommand to add the specified {@code Policy} to the client at the specified index.","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"youdonnnn"},"content":" *","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"youdonnnn"},"content":" * @param index The index of the client in the filtered person list.","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"youdonnnn"},"content":" * @param policyName The name of the policy to be added.","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"youdonnnn"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"Greg-Tan"},"content":" public AddPolicyCommand(Index index, String policyName) {","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"Greg-Tan"},"content":" requireAllNonNull(index, policyName);","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"Greg-Tan"},"content":" this.index \u003d index;","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"Greg-Tan"},"content":" this.policyName \u003d policyName;","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"Greg-Tan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"Greg-Tan"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"Greg-Tan"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"Greg-Tan"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"Greg-Tan"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"Greg-Tan"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"Greg-Tan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"Greg-Tan"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"Greg-Tan"},"content":" Set\u003cPolicy\u003e currentPolicies \u003d new HashSet\u003c\u003e(personToEdit.getPolicies());","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"Greg-Tan"},"content":" Policy newPolicy \u003d new Policy(policyName);","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"Greg-Tan"},"content":" currentPolicies.add(newPolicy);","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"Greg-Tan"},"content":" Person editedPerson \u003d new Person(","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"Greg-Tan"},"content":" personToEdit.getName(), personToEdit.getPhone(), personToEdit.getEmail(),","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"Greg-Tan"},"content":" personToEdit.getAddress(), personToEdit.getMeeting(), personToEdit.getTags(), currentPolicies);","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"Greg-Tan"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"Greg-Tan"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"Greg-Tan"},"content":" return new CommandResult(generateSuccessMessage(editedPerson));","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"Greg-Tan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"Greg-Tan"},"content":" private String generateSuccessMessage(Person personToEdit) {","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"Greg-Tan"},"content":" String message \u003d !policyName.isEmpty() ? MESSAGE_ADD_POLICY_SUCCESS : MESSAGE_DELETE_POLICY_SUCCESS;","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"Greg-Tan"},"content":" return String.format(message, personToEdit);","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"Greg-Tan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"Greg-Tan"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"youdonnnn":17,"Greg-Tan":63}},{"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":"jimseah-0116"},"content":" /** Meetings pop up should be shown to the user. */","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"jimseah-0116"},"content":" private final boolean showMeetings;","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /** The application should exit. */","lastModifiedDate":"2018-12-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final boolean exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Constructs a {@code CommandResult} with the specified fields.","lastModifiedDate":"2018-12-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":28,"author":{"gitId":"jimseah-0116"},"content":" public CommandResult(String feedbackToUser, boolean showHelp, boolean showMeetings, boolean exit) {","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":" this.feedbackToUser \u003d requireNonNull(feedbackToUser);","lastModifiedDate":"2017-05-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" this.showHelp \u003d showHelp;","lastModifiedDate":"2018-12-09"},{"lineNumber":31,"author":{"gitId":"jimseah-0116"},"content":" this.showMeetings \u003d showMeetings;","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.exit \u003d exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Constructs a {@code CommandResult} with the specified {@code feedbackToUser},","lastModifiedDate":"2018-12-09"},{"lineNumber":37,"author":{"gitId":"jimseah-0116"},"content":" * and other fields set to their default value (false).","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public CommandResult(String feedbackToUser) {","lastModifiedDate":"2018-12-09"},{"lineNumber":40,"author":{"gitId":"jimseah-0116"},"content":" this(feedbackToUser, false, false, false);","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public String getFeedbackToUser() {","lastModifiedDate":"2018-12-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return feedbackToUser;","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 isShowHelp() {","lastModifiedDate":"2018-12-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return showHelp;","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":"jimseah-0116"},"content":" public boolean isShowMeetings() {","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"jimseah-0116"},"content":" return showMeetings;","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public boolean isExit() {","lastModifiedDate":"2018-12-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2018-12-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-12-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return true;","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":" // instanceof handles nulls","lastModifiedDate":"2018-12-09"},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (!(other instanceof CommandResult)) {","lastModifiedDate":"2018-12-09"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-12-09"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":70,"author":{"gitId":"-"},"content":" CommandResult otherCommandResult \u003d (CommandResult) other;","lastModifiedDate":"2018-12-09"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return feedbackToUser.equals(otherCommandResult.feedbackToUser)","lastModifiedDate":"2018-12-09"},{"lineNumber":72,"author":{"gitId":"-"},"content":" \u0026\u0026 showHelp \u003d\u003d otherCommandResult.showHelp","lastModifiedDate":"2018-12-09"},{"lineNumber":73,"author":{"gitId":"jimseah-0116"},"content":" \u0026\u0026 showMeetings \u003d\u003d otherCommandResult.showMeetings","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" \u0026\u0026 exit \u003d\u003d otherCommandResult.exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2018-12-09"},{"lineNumber":79,"author":{"gitId":"jimseah-0116"},"content":" return Objects.hash(feedbackToUser, showHelp, showMeetings, exit);","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" .add(\"feedbackToUser\", feedbackToUser)","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" .add(\"showHelp\", showHelp)","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"jimseah-0116"},"content":" .add(\"showMeetings\", showMeetings)","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"-"},"content":" .add(\"exit\", exit)","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":"2019-02-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"jimseah-0116":14,"-":78}},{"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":"irwynliong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MEETING;","lastModifiedDate":"2024-03-21"},{"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":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"youdonnnn"},"content":"import seedu.address.model.person.Meeting;","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"youdonnnn"},"content":"import seedu.address.model.person.Policy;","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26"},{"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":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the person identified \"","lastModifiedDate":"2016-12-26"},{"lineNumber":42,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06"},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06"},{"lineNumber":46,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":49,"author":{"gitId":"irwynliong"},"content":" + \"[\" + PREFIX_MEETING + \"MEETING] \"","lastModifiedDate":"2024-03-21"},{"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":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":60,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25"},{"lineNumber":67,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25"},{"lineNumber":68,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25"},{"lineNumber":71,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":76,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","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":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":87,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":90,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":91,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":92,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":95,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26"},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":99,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":102,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":103,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21"},{"lineNumber":104,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2024-03-21"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2024-03-21"},{"lineNumber":106,"author":{"gitId":"irwynliong"},"content":" Meeting updatedMeeting \u003d editPersonDescriptor.getMeeting().orElse(personToEdit.getMeeting());","lastModifiedDate":"2024-03-21"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2017-06-21"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":109,"author":{"gitId":"Greg-Tan"},"content":" Set\u003cPolicy\u003e updatedPolicies \u003d editPersonDescriptor.getPolicies().orElse(personToEdit.getPolicies());","lastModifiedDate":"2024-03-21"},{"lineNumber":110,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":111,"author":{"gitId":"youdonnnn"},"content":" return new Person(updatedName, updatedPhone, updatedEmail,","lastModifiedDate":"2024-03-21"},{"lineNumber":112,"author":{"gitId":"youdonnnn"},"content":" updatedAddress, updatedMeeting, updatedTags, updatedPolicies);","lastModifiedDate":"2024-03-21"},{"lineNumber":113,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" return false;","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":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":128,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13"},{"lineNumber":129,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":141,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26"},{"lineNumber":142,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26"},{"lineNumber":143,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":144,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26"},{"lineNumber":145,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21"},{"lineNumber":146,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":147,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":148,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21"},{"lineNumber":149,"author":{"gitId":"irwynliong"},"content":" private Meeting meeting;","lastModifiedDate":"2024-03-21"},{"lineNumber":150,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21"},{"lineNumber":151,"author":{"gitId":"Greg-Tan"},"content":" private Set\u003cPolicy\u003e policies;","lastModifiedDate":"2024-03-21"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":153,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":155,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":156,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11"},{"lineNumber":157,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":158,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":159,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26"},{"lineNumber":160,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15"},{"lineNumber":161,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15"},{"lineNumber":162,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15"},{"lineNumber":163,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15"},{"lineNumber":164,"author":{"gitId":"irwynliong"},"content":" setMeeting(toCopy.meeting);","lastModifiedDate":"2024-03-21"},{"lineNumber":165,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11"},{"lineNumber":166,"author":{"gitId":"Greg-Tan"},"content":" setPolicies(toCopy.policies);","lastModifiedDate":"2024-03-21"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":169,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":170,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26"},{"lineNumber":171,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":172,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26"},{"lineNumber":173,"author":{"gitId":"-"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, tags);","lastModifiedDate":"2018-08-14"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":176,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21"},{"lineNumber":177,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":180,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":181,"author":{"gitId":"-"},"content":" return Optional.ofNullable(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 void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21"},{"lineNumber":185,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","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\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26"},{"lineNumber":189,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","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 setEmail(Email email) {","lastModifiedDate":"2017-06-21"},{"lineNumber":193,"author":{"gitId":"-"},"content":" this.email \u003d email;","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\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":197,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","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 setAddress(Address address) {","lastModifiedDate":"2017-06-21"},{"lineNumber":201,"author":{"gitId":"-"},"content":" this.address \u003d address;","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\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26"},{"lineNumber":205,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21"},{"lineNumber":206,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":208,"author":{"gitId":"Greg-Tan"},"content":" public Optional\u003cSet\u003cPolicy\u003e\u003e getPolicies() {","lastModifiedDate":"2024-03-21"},{"lineNumber":209,"author":{"gitId":"Greg-Tan"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(policies)) : Optional.empty();","lastModifiedDate":"2024-03-21"},{"lineNumber":210,"author":{"gitId":"Greg-Tan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":211,"author":{"gitId":"youdonnnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":212,"author":{"gitId":"youdonnnn"},"content":" public void setPolicies(Set\u003cPolicy\u003e policies) {","lastModifiedDate":"2024-03-21"},{"lineNumber":213,"author":{"gitId":"youdonnnn"},"content":" this.policies \u003d policies;","lastModifiedDate":"2024-03-21"},{"lineNumber":214,"author":{"gitId":"youdonnnn"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":216,"author":{"gitId":"irwynliong"},"content":" public void setMeeting(Meeting meeting) {","lastModifiedDate":"2024-03-21"},{"lineNumber":217,"author":{"gitId":"irwynliong"},"content":" this.meeting \u003d meeting;","lastModifiedDate":"2024-03-21"},{"lineNumber":218,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":219,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":220,"author":{"gitId":"irwynliong"},"content":" public Optional\u003cMeeting\u003e getMeeting() {","lastModifiedDate":"2024-03-21"},{"lineNumber":221,"author":{"gitId":"irwynliong"},"content":" return Optional.ofNullable(meeting);","lastModifiedDate":"2024-03-21"},{"lineNumber":222,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":223,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-21"},{"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":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":242,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":243,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":244,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":245,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":247,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":248,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05"},{"lineNumber":249,"author":{"gitId":"-"},"content":" return false;","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":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":253,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":254,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":255,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":256,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":257,"author":{"gitId":"irwynliong"},"content":" \u0026\u0026 Objects.equals(meeting, otherEditPersonDescriptor.meeting)","lastModifiedDate":"2024-03-21"},{"lineNumber":258,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags);","lastModifiedDate":"2023-07-13"},{"lineNumber":259,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":262,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":264,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":268,"author":{"gitId":"irwynliong"},"content":" .add(\"meeting\", meeting)","lastModifiedDate":"2024-03-21"},{"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":{"youdonnnn":8,"irwynliong":15,"Greg-Tan":8,"-":242}},{"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":"-"},"content":" public static final String MESSAGE_EXIT_ACKNOWLEDGEMENT \u003d \"Exiting Address Book as requested ...\";","lastModifiedDate":"2016-09-22"},{"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":"jimseah-0116"},"content":" return new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, false, false, true);","lastModifiedDate":"2024-03-21"},{"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":{"jimseah-0116":1,"-":18}},{"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":"jimseah-0116"},"content":" return new CommandResult(SHOWING_HELP_MESSAGE, true, false, false);","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"jimseah-0116":1,"-":20}},{"path":"src/main/java/seedu/address/logic/commands/MeetingsCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jimseah-0116"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"jimseah-0116"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"jimseah-0116"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"jimseah-0116"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"jimseah-0116"},"content":" * Opens the meetings window.","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"jimseah-0116"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"jimseah-0116"},"content":"public class MeetingsCommand extends Command {","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"jimseah-0116"},"content":" public static final String COMMAND_WORD \u003d \"meetings\";","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"jimseah-0116"},"content":" public static final String SHOWING_MEETINGS_MESSAGE \u003d \"Opened meetings window.\";","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"jimseah-0116"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"jimseah-0116"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"jimseah-0116"},"content":" return new CommandResult(SHOWING_MEETINGS_MESSAGE, false, true, false);","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"jimseah-0116"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"jimseah-0116":16}},{"path":"src/main/java/seedu/address/logic/commands/ViewCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"rahhulleee"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"rahhulleee"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"rahhulleee"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"rahhulleee"},"content":"import java.util.List;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"rahhulleee"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"rahhulleee"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"rahhulleee"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"rahhulleee"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"rahhulleee"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"rahhulleee"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"rahhulleee"},"content":"import seedu.address.model.person.ViewPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"rahhulleee"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"rahhulleee"},"content":" * Displays the policy details of a person specified by their index in the address book.","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"rahhulleee"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"rahhulleee"},"content":"public class ViewCommand extends Command {","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"rahhulleee"},"content":" public static final String COMMAND_WORD \u003d \"view\";","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"rahhulleee"},"content":" /** Usage message for the view command. */","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"rahhulleee"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"rahhulleee"},"content":" + \": View the policy details of the person specified by the index.\\n\"","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"rahhulleee"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"rahhulleee"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"rahhulleee"},"content":" /** Success message displayed after viewing the person\u0027s details. */","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"rahhulleee"},"content":" public static final String MESSAGE_VIEW_SUCCESS \u003d \"Viewed Person Successfully: %1$s\";","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"rahhulleee"},"content":" private static final Logger logger \u003d Logger.getLogger(ViewCommand.class.getName());","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"rahhulleee"},"content":" private final Index index;","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"rahhulleee"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"rahhulleee"},"content":" * Constructs a ViewCommand with the specified index.","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"rahhulleee"},"content":" * @param index The index of the person whose details are to be viewed.","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"rahhulleee"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"rahhulleee"},"content":" public ViewCommand(Index index) {","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"rahhulleee"},"content":" requireAllNonNull(index);","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"rahhulleee"},"content":" this.index \u003d index;","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"rahhulleee"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"rahhulleee"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"rahhulleee"},"content":" * Executes the view command to display the policy details of the specified person.","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"rahhulleee"},"content":" * @param model The current model containing the address book data.","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"rahhulleee"},"content":" * @return The result of the command execution.","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"rahhulleee"},"content":" * @throws CommandException If the index is invalid or if an error occurs during command execution.","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"rahhulleee"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"rahhulleee"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"rahhulleee"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"rahhulleee"},"content":" requireAllNonNull(model);","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"rahhulleee"},"content":" // Update the filtered person list to display all persons","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"rahhulleee"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"rahhulleee"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"rahhulleee"},"content":" logger.info(\"Curr list is: \" + lastShownList);","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"rahhulleee"},"content":" logger.info(\"Curr index: \" + lastShownList.size() + \" WHILE OUR INDEX IS : \" + index);","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"rahhulleee"},"content":" // Check if the index is valid","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"rahhulleee"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"rahhulleee"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"rahhulleee"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"rahhulleee"},"content":" // Retrieve the person with the specified index","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"rahhulleee"},"content":" Person person \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"rahhulleee"},"content":" // Create an View predicate to filter the list to only contain the specified person","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"rahhulleee"},"content":" ViewPredicate pred \u003d new ViewPredicate(index, person);","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"rahhulleee"},"content":" model.updateFilteredPersonList(pred);","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"rahhulleee"},"content":" return new CommandResult(String.format(MESSAGE_VIEW_SUCCESS, person.getName()));","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"rahhulleee"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"rahhulleee"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"rahhulleee"},"content":" * Checks if this ViewCommand is equal to another object.","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"rahhulleee"},"content":" * @param other The object to compare to.","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"rahhulleee"},"content":" * @return True if the objects are equal, false otherwise.","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"rahhulleee"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"rahhulleee"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"rahhulleee"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"rahhulleee"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"rahhulleee"},"content":" return true;","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"rahhulleee"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"rahhulleee"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"rahhulleee"},"content":" if (!(other instanceof ViewCommand)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"rahhulleee"},"content":" return false;","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"rahhulleee"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"rahhulleee"},"content":" ViewCommand e \u003d (ViewCommand) other;","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"rahhulleee"},"content":" return index.equals(e.index);","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"rahhulleee"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":90,"author":{"gitId":"rahhulleee"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":91,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"rahhulleee":91}},{"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":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"youdonnnn"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MEETING;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":11,"author":{"gitId":"youdonnnn"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17"},{"lineNumber":13,"author":{"gitId":"Greg-Tan"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":16,"author":{"gitId":"Greg-Tan"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-21"},{"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.Address;","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"youdonnnn"},"content":"import seedu.address.model.person.Meeting;","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"youdonnnn"},"content":"import seedu.address.model.person.Policy;","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":28,"author":{"gitId":"youdonnnn"},"content":"","lastModifiedDate":"2024-03-21"},{"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":"Greg-Tan"},"content":" private final Logger logger \u003d LogsCenter.getLogger(AddCommandParser.class);","lastModifiedDate":"2024-03-21"},{"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":"irwynliong"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"Greg-Tan"},"content":" PREFIX_MEETING, PREFIX_TAG);","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"irwynliong"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME) || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":48,"author":{"gitId":"irwynliong"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"irwynliong"},"content":" PREFIX_MEETING);","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":51,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":52,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":54,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"irwynliong"},"content":" Meeting meeting \u003d ParserUtil.parseMeeting(argMultimap.getValue(PREFIX_MEETING).get());","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":58,"author":{"gitId":"Greg-Tan"},"content":" // Initialize the person with an empty set of policies","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"Greg-Tan"},"content":" Set\u003cPolicy\u003e emptyPolicies \u003d Collections.emptySet();","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"Greg-Tan"},"content":" Person person \u003d new Person(name, phone, email, address, meeting, tagList, emptyPolicies);","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * {@code Argument Multimap}.","lastModifiedDate":"2017-03-17"},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":70,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":74,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"youdonnnn":5,"irwynliong":5,"Greg-Tan":9,"-":55}},{"path":"src/main/java/seedu/address/logic/parser/AddPolicyCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Greg-Tan"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"Greg-Tan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"Greg-Tan"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"Greg-Tan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_POLICY_NAME;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"youdonnnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"Greg-Tan"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"Greg-Tan"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"Greg-Tan"},"content":"import seedu.address.logic.commands.AddPolicyCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"Greg-Tan"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"youdonnnn"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"youdonnnn"},"content":" * Parses input arguments and creates a new AddPolicyCommand object.","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"youdonnnn"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"Greg-Tan"},"content":"public class AddPolicyCommandParser implements Parser\u003cAddPolicyCommand\u003e {","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"youdonnnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"youdonnnn"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"youdonnnn"},"content":" * Parses the given {@code String} of arguments in the context of the AddPolicyCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"youdonnnn"},"content":" * and returns a AddPolicyCommand object for execution.","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"youdonnnn"},"content":" *","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"youdonnnn"},"content":" * @param args The arguments provided by the user.","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"youdonnnn"},"content":" * @return A parsed AddPolicyCommand object representing the user\u0027s command.","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"youdonnnn"},"content":" * @throws ParseException If the user input does not conform to the expected format.","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"youdonnnn"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"Greg-Tan"},"content":" public AddPolicyCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"Greg-Tan"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"Greg-Tan"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args,","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"Greg-Tan"},"content":" PREFIX_POLICY_NAME);","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"Greg-Tan"},"content":" Index index;","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"Greg-Tan"},"content":" try {","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"Greg-Tan"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"Greg-Tan"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"Greg-Tan"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"Greg-Tan"},"content":" AddPolicyCommand.MESSAGE_USAGE), ive);","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"Greg-Tan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"Greg-Tan"},"content":" String policyName \u003d argMultimap.getValue(PREFIX_POLICY_NAME).orElse(\"\");","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"Greg-Tan"},"content":" return new AddPolicyCommand(index, policyName);","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"Greg-Tan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"Greg-Tan"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"youdonnnn":13,"Greg-Tan":29}},{"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":"Greg-Tan"},"content":"import seedu.address.logic.commands.AddPolicyCommand;","lastModifiedDate":"2024-03-21"},{"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":"jimseah-0116"},"content":"import seedu.address.logic.commands.MeetingsCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"rahhulleee"},"content":"import seedu.address.logic.commands.ViewCommand;","lastModifiedDate":"2024-03-21"},{"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":"irwynliong"},"content":" @SuppressWarnings(\"checkstyle:Regexp\")","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":81,"author":{"gitId":"Greg-Tan"},"content":" case AddPolicyCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"Greg-Tan"},"content":" return new AddPolicyCommandParser().parse(arguments);","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":87,"author":{"gitId":"rahhulleee"},"content":" case ViewCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"rahhulleee"},"content":" return new ViewCommandParser().parse(arguments);","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":90,"author":{"gitId":"jimseah-0116"},"content":" case MeetingsCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-21"},{"lineNumber":91,"author":{"gitId":"jimseah-0116"},"content":" return new MeetingsCommand();","lastModifiedDate":"2024-03-21"},{"lineNumber":92,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":93,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26"},{"lineNumber":94,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29"},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11"},{"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"},{"lineNumber":99,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"jimseah-0116":4,"irwynliong":1,"Greg-Tan":4,"-":86,"rahhulleee":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":"-"},"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":"irwynliong"},"content":" public static final Prefix PREFIX_MEETING \u003d new Prefix(\"m/\");","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"youdonnnn"},"content":" public static final Prefix PREFIX_POLICY_NAME \u003d new Prefix(\"pn/\");","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"youdonnnn":1,"irwynliong":1,"-":14}},{"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":"irwynliong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MEETING;","lastModifiedDate":"2024-03-21"},{"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":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":36,"author":{"gitId":"irwynliong"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"irwynliong"},"content":" PREFIX_MEETING, PREFIX_TAG);","lastModifiedDate":"2024-03-21"},{"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":"irwynliong"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"irwynliong"},"content":" PREFIX_MEETING);","lastModifiedDate":"2024-03-21"},{"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":"-"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":62,"author":{"gitId":"-"},"content":" editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":64,"author":{"gitId":"irwynliong"},"content":" if (argMultimap.getValue(PREFIX_MEETING).isPresent()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"irwynliong"},"content":" editPersonDescriptor.setMeeting(ParserUtil.parseMeeting(argMultimap.getValue(PREFIX_MEETING).get()));","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPersonDescriptor::setTags);","lastModifiedDate":"2017-06-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"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":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"irwynliong":8,"-":83}},{"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":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-02-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11"},{"lineNumber":14,"author":{"gitId":"irwynliong"},"content":"import seedu.address.model.person.Meeting;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-02-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":32,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02"},{"lineNumber":34,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":36,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":46,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":49,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":57,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":61,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30"},{"lineNumber":62,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":64,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","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":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":72,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":76,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30"},{"lineNumber":77,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":78,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":79,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","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":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","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 email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":91,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":92,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":93,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":94,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":96,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","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":"irwynliong"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":100,"author":{"gitId":"irwynliong"},"content":" * Parses a {@code String meeting} into an {@code Meeting}.","lastModifiedDate":"2024-03-21"},{"lineNumber":101,"author":{"gitId":"irwynliong"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-21"},{"lineNumber":102,"author":{"gitId":"irwynliong"},"content":" *","lastModifiedDate":"2024-03-21"},{"lineNumber":103,"author":{"gitId":"irwynliong"},"content":" * @throws ParseException if the given {@code meeting} is invalid.","lastModifiedDate":"2024-03-21"},{"lineNumber":104,"author":{"gitId":"irwynliong"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":105,"author":{"gitId":"irwynliong"},"content":" public static Meeting parseMeeting(String meeting) throws ParseException {","lastModifiedDate":"2024-03-21"},{"lineNumber":106,"author":{"gitId":"irwynliong"},"content":" requireNonNull(meeting);","lastModifiedDate":"2024-03-21"},{"lineNumber":107,"author":{"gitId":"irwynliong"},"content":" String trimmedMeeting \u003d meeting.trim();","lastModifiedDate":"2024-03-21"},{"lineNumber":108,"author":{"gitId":"irwynliong"},"content":" if (!Meeting.isValidMeeting(trimmedMeeting)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":109,"author":{"gitId":"irwynliong"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":110,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":111,"author":{"gitId":"irwynliong"},"content":" return new Meeting(trimmedMeeting);","lastModifiedDate":"2024-03-21"},{"lineNumber":112,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":113,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","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 tag} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":120,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":121,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30"},{"lineNumber":122,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":123,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":124,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":126,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","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-02-11"},{"lineNumber":130,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07"},{"lineNumber":131,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":132,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":133,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15"},{"lineNumber":134,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11"},{"lineNumber":135,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11"},{"lineNumber":136,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":138,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":140,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"irwynliong":16,"-":124}},{"path":"src/main/java/seedu/address/logic/parser/ViewCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"rahhulleee"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"rahhulleee"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"rahhulleee"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"rahhulleee"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"rahhulleee"},"content":"import seedu.address.logic.commands.ViewCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"rahhulleee"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"rahhulleee"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"rahhulleee"},"content":" * Parses input arguments and creates a new ViewCommand object.","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"rahhulleee"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"rahhulleee"},"content":"public class ViewCommandParser implements Parser\u003cViewCommand\u003e {","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"rahhulleee"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"rahhulleee"},"content":" * Parses the given {@code String} of arguments in the context of the ViewCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"rahhulleee"},"content":" * and returns a ViewCommand object for execution.","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"rahhulleee"},"content":" * @param args The arguments provided by the user for the view command.","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"rahhulleee"},"content":" * @return A ViewCommand object representing the command to view a person\u0027s details.","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"rahhulleee"},"content":" * @throws ParseException If the user input does not conform to the expected format.","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"rahhulleee"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"rahhulleee"},"content":" public ViewCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"rahhulleee"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"rahhulleee"},"content":" try {","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"rahhulleee"},"content":" // Parse the index from the input arguments","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"rahhulleee"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"rahhulleee"},"content":" // Create and return a new ViewCommand with the parsed index","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"rahhulleee"},"content":" return new ViewCommand(index);","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"rahhulleee"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"rahhulleee"},"content":" // If parsing fails, throw a new ParseException with an error message","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"rahhulleee"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"rahhulleee"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, ViewCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"rahhulleee"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"rahhulleee"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"rahhulleee"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"rahhulleee":35}},{"path":"src/main/java/seedu/address/model/person/Meeting.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"irwynliong"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"irwynliong"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"irwynliong"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"irwynliong"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"irwynliong"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"irwynliong"},"content":" * Represents a Client\u0027s meeting time in the address book.","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"irwynliong"},"content":" * Guarantees: immutable; is always valid","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"irwynliong"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"irwynliong"},"content":"public class Meeting {","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"irwynliong"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"irwynliong"},"content":" \"Meeting has to be in yyyy-MM-dd HH:mm:ss format, and it should not be blank\";","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"irwynliong"},"content":" // The VALIDATION_REGEX for meeting time","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"irwynliong"},"content":" public static final String VALIDATION_REGEX \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"irwynliong"},"content":" \"^(\\\\d{4}-\\\\d{2}-\\\\d{2}(T\\\\d{2}:\\\\d{2}:\\\\d{2}| \\\\d{2}:\\\\d{2}:\\\\d{2})?)$\";","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"irwynliong"},"content":" public final String value;","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"irwynliong"},"content":" public final LocalDateTime meeting;","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"irwynliong"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"irwynliong"},"content":" * Constructs an {@code Meeting}.","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"irwynliong"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"irwynliong"},"content":" public Meeting(String meeting) {","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"irwynliong"},"content":" requireNonNull(meeting);","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"irwynliong"},"content":" this.value \u003d meeting;","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"irwynliong"},"content":" this.meeting \u003d stringToDateTime(meeting);","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"irwynliong"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"irwynliong"},"content":" * Returns true if a given string is a valid meeting.","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"irwynliong"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"irwynliong"},"content":" public static boolean isValidMeeting(String test) {","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"irwynliong"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"irwynliong"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"irwynliong"},"content":" * This method converts a string into a LocalDateTime object.","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"irwynliong"},"content":" * If the string is in the format \"yyyy-MM-dd\", it will be treated as a date at the start of the day.","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"irwynliong"},"content":" * If the string is in the format \"yyyy-MM-ddTHH:mm:ss\", it will be treated as a date with time.","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"irwynliong"},"content":" * Otherwise, the string is expected to be in the format \"yyyy-MM-dd HH:mm:ss\".","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"irwynliong"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"irwynliong"},"content":" * @param dateTime The string to be converted into a LocalDateTime object.","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"irwynliong"},"content":" * @return A LocalDateTime object that represents the date and time specified by the input string.","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"irwynliong"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"irwynliong"},"content":" private LocalDateTime stringToDateTime(String dateTime) {","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"irwynliong"},"content":" if (dateTime.length() \u003c\u003d 10) {","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"irwynliong"},"content":" return LocalDateTime.parse(dateTime + \"T00:00:00\", DateTimeFormatter.ISO_LOCAL_DATE_TIME);","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"irwynliong"},"content":" } else if (dateTime.contains(\"T\")) {","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"irwynliong"},"content":" return LocalDateTime.parse(dateTime, DateTimeFormatter.ISO_LOCAL_DATE_TIME);","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"irwynliong"},"content":" } else {","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"irwynliong"},"content":" return LocalDateTime.parse(dateTime, DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm:ss\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"irwynliong"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"irwynliong"},"content":" public String toString() {","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"irwynliong"},"content":" return meeting.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy HH:mm:ss\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"irwynliong"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"irwynliong"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"irwynliong"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"irwynliong"},"content":" return true;","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"irwynliong"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"irwynliong"},"content":" if (!(other instanceof Meeting)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"irwynliong"},"content":" return false;","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"irwynliong"},"content":" Meeting otherMeeting \u003d (Meeting) other;","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"irwynliong"},"content":" return meeting.equals(otherMeeting.meeting);","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"irwynliong"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"irwynliong"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"irwynliong"},"content":" return meeting.hashCode();","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"irwynliong"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"irwynliong":80}},{"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.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"irwynliong"},"content":" private final Meeting meeting;","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":27,"author":{"gitId":"Greg-Tan"},"content":" private final Set\u003cPolicy\u003e policies \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"youdonnnn"},"content":" * @param name The name of the person.","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"youdonnnn"},"content":" * @param phone The phone number of the person.","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"youdonnnn"},"content":" * @param email The email address of the person.","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"youdonnnn"},"content":" * @param address The address of the person.","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"youdonnnn"},"content":" * @param meeting The meeting details of the person.","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"youdonnnn"},"content":" * @param tags The set of tags associated with the person.","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"youdonnnn"},"content":" * @param policies The set of policies associated with the person.","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"youdonnnn"},"content":" public Person(Name name, Phone phone, Email email, Address address,","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"youdonnnn"},"content":" Meeting meeting, Set\u003cTag\u003e tags, Set\u003cPolicy\u003e policies) {","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"irwynliong"},"content":" requireAllNonNull(name, phone, email, address, meeting, tags);","lastModifiedDate":"2024-03-21"},{"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":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"irwynliong"},"content":" this.meeting \u003d meeting;","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":48,"author":{"gitId":"Greg-Tan"},"content":" this.policies.addAll(policies); // Initialize with provided policies","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return name;","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 Phone getPhone() {","lastModifiedDate":"2017-07-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return phone;","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":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2024-03-21"},{"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":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":68,"author":{"gitId":"irwynliong"},"content":" public Meeting getMeeting() {","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"irwynliong"},"content":" return meeting;","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"Greg-Tan"},"content":" public Set\u003cPolicy\u003e getPolicies() {","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"Greg-Tan"},"content":" return Collections.unmodifiableSet(policies);","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"Greg-Tan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"youdonnnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"Greg-Tan"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"Greg-Tan"},"content":" * Adds a policy to the set of policies.","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"Greg-Tan"},"content":" * @param policy The policy to be added.","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"Greg-Tan"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"Greg-Tan"},"content":" public void addPolicy(Policy policy) {","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"Greg-Tan"},"content":" this.policies.add(policy);","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"Greg-Tan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":" \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2020-12-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":105,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":108,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":111,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":112,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":115,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10"},{"lineNumber":117,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":120,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10"},{"lineNumber":121,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2024-03-21"},{"lineNumber":123,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2024-03-21"},{"lineNumber":124,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2024-03-21"},{"lineNumber":125,"author":{"gitId":"irwynliong"},"content":" \u0026\u0026 meeting.equals(otherPerson.meeting)","lastModifiedDate":"2024-03-21"},{"lineNumber":126,"author":{"gitId":"-"},"content":" \u0026\u0026 tags.equals(otherPerson.tags);","lastModifiedDate":"2023-07-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":130,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":131,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":132,"author":{"gitId":"irwynliong"},"content":" return Objects.hash(name, phone, email, address, meeting, tags);","lastModifiedDate":"2024-03-21"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":135,"author":{"gitId":"youdonnnn"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":136,"author":{"gitId":"youdonnnn"},"content":" * Returns a string representation of the person.","lastModifiedDate":"2024-03-21"},{"lineNumber":137,"author":{"gitId":"youdonnnn"},"content":" * The string representation contains the person\u0027s name, phone, email, address, tags, and policies.","lastModifiedDate":"2024-03-21"},{"lineNumber":138,"author":{"gitId":"youdonnnn"},"content":" * Example:","lastModifiedDate":"2024-03-21"},{"lineNumber":139,"author":{"gitId":"youdonnnn"},"content":" * Alice Pauline Phone: 12345678 Email: alice@example.com Address: 123, Jurong West Ave 6,","lastModifiedDate":"2024-03-21"},{"lineNumber":140,"author":{"gitId":"youdonnnn"},"content":" * #08-111 Tags: friends family Policies: [SuperSaver] [HealthGuard]","lastModifiedDate":"2024-03-21"},{"lineNumber":141,"author":{"gitId":"youdonnnn"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":143,"author":{"gitId":"youdonnnn"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2024-03-21"},{"lineNumber":144,"author":{"gitId":"youdonnnn"},"content":" builder.append(getName())","lastModifiedDate":"2024-03-21"},{"lineNumber":145,"author":{"gitId":"youdonnnn"},"content":" .append(\" Phone: \")","lastModifiedDate":"2024-03-21"},{"lineNumber":146,"author":{"gitId":"youdonnnn"},"content":" .append(getPhone())","lastModifiedDate":"2024-03-21"},{"lineNumber":147,"author":{"gitId":"youdonnnn"},"content":" .append(\" Email: \")","lastModifiedDate":"2024-03-21"},{"lineNumber":148,"author":{"gitId":"youdonnnn"},"content":" .append(getEmail())","lastModifiedDate":"2024-03-21"},{"lineNumber":149,"author":{"gitId":"youdonnnn"},"content":" .append(\" Address: \")","lastModifiedDate":"2024-03-21"},{"lineNumber":150,"author":{"gitId":"youdonnnn"},"content":" .append(getAddress())","lastModifiedDate":"2024-03-21"},{"lineNumber":151,"author":{"gitId":"youdonnnn"},"content":" .append(\" Remark: \")","lastModifiedDate":"2024-03-21"},{"lineNumber":152,"author":{"gitId":"youdonnnn"},"content":" .append(\" Tags: \");","lastModifiedDate":"2024-03-21"},{"lineNumber":153,"author":{"gitId":"youdonnnn"},"content":" getTags().forEach(builder::append);","lastModifiedDate":"2024-03-21"},{"lineNumber":154,"author":{"gitId":"youdonnnn"},"content":" builder.append(\" Policies: \");","lastModifiedDate":"2024-03-21"},{"lineNumber":155,"author":{"gitId":"youdonnnn"},"content":" getPolicies().forEach(policy -\u003e builder.append(\"[\").append(policy.policyName).append(\"]\").append(\" \"));","lastModifiedDate":"2024-03-21"},{"lineNumber":156,"author":{"gitId":"youdonnnn"},"content":" return builder.toString();","lastModifiedDate":"2024-03-21"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":158,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"youdonnnn":31,"irwynliong":9,"Greg-Tan":14,"-":104}},{"path":"src/main/java/seedu/address/model/person/Policy.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Greg-Tan"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"Greg-Tan"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"Greg-Tan"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"youdonnnn"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"youdonnnn"},"content":" * Represents a policy associated with a person.","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"youdonnnn"},"content":" * Guarantees: immutable; policyName is valid as declared in {@link #isValidField(String)}","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"youdonnnn"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"Greg-Tan"},"content":"public class Policy {","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"youdonnnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"youdonnnn"},"content":" public static final String STRING_VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"youdonnnn"},"content":" public static final String NUMBER_VALIDATION_REGEX \u003d \"\\\\d{3,}\";","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"youdonnnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"youdonnnn"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Policy Name must be alphanumeric\";","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"youdonnnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"Greg-Tan"},"content":" public final String policyName;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"youdonnnn"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"youdonnnn"},"content":" * Constructs a {@code Policy}.","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"youdonnnn"},"content":" *","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"youdonnnn"},"content":" * @param policyName A valid policy name.","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"youdonnnn"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"Greg-Tan"},"content":" public Policy(String policyName) {","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"Greg-Tan"},"content":" requireAllNonNull(policyName);","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"Greg-Tan"},"content":" checkArgument(isValidField(policyName), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"Greg-Tan"},"content":" this.policyName \u003d policyName;","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"Greg-Tan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"youdonnnn"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"youdonnnn"},"content":" * Returns true if a given string is a valid policy name.","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"youdonnnn"},"content":" *","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"youdonnnn"},"content":" * @param field The policy name to validate.","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"youdonnnn"},"content":" * @return True if the policy name is valid, false otherwise.","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"youdonnnn"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"Greg-Tan"},"content":" public static boolean isValidField(String field) {","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"Greg-Tan"},"content":" return field.matches(STRING_VALIDATION_REGEX);","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"Greg-Tan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"Greg-Tan"},"content":" public static boolean isValidNumber(String field) {","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"Greg-Tan"},"content":" return field.matches(NUMBER_VALIDATION_REGEX);","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"Greg-Tan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"Greg-Tan"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"youdonnnn":21,"Greg-Tan":23}},{"path":"src/main/java/seedu/address/model/person/PolicyName.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Greg-Tan"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"Greg-Tan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"Greg-Tan"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"Greg-Tan"},"content":" * Represents a Person\u0027s policyName in the address book.","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"Greg-Tan"},"content":" * Guarantees: immutable; is always valid","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"Greg-Tan"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"Greg-Tan"},"content":"public class PolicyName {","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"youdonnnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"Greg-Tan"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Policy Name can take any values, and it should not be blank\";","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"Greg-Tan"},"content":" public static final String VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"youdonnnn"},"content":" public final String value;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"youdonnnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"youdonnnn"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"youdonnnn"},"content":" * Constructs a {@code PolicyName}.","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"youdonnnn"},"content":" *","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"youdonnnn"},"content":" * @param policyName A valid policy name.","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"youdonnnn"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"Greg-Tan"},"content":" public PolicyName(String policyName) {","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"Greg-Tan"},"content":" requireNonNull(policyName);","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"Greg-Tan"},"content":" value \u003d policyName;","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"Greg-Tan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"Greg-Tan"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"Greg-Tan"},"content":" public String toString() {","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"Greg-Tan"},"content":" return value;","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"Greg-Tan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"Greg-Tan"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"Greg-Tan"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"Greg-Tan"},"content":" return other \u003d\u003d this // short circuit if same object","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"Greg-Tan"},"content":" || (other instanceof PolicyName // instanceof handles nulls","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"Greg-Tan"},"content":" \u0026\u0026 value.equals(((PolicyName) other).value)); // state check","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"Greg-Tan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"Greg-Tan"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"Greg-Tan"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"Greg-Tan"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"Greg-Tan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"Greg-Tan"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"youdonnnn":8,"Greg-Tan":34}},{"path":"src/main/java/seedu/address/model/person/ViewPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"rahhulleee"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"rahhulleee"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"rahhulleee"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"rahhulleee"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"rahhulleee"},"content":" * Represents a Predicate used to filter a list of persons to display only the person","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"rahhulleee"},"content":" * with the specified index.","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"rahhulleee"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"rahhulleee"},"content":"public class ViewPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"rahhulleee"},"content":" private final Index index;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"rahhulleee"},"content":" private final Person person;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"rahhulleee"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"rahhulleee"},"content":" * Constructs a ViewPredicate with the specified index and person.","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"rahhulleee"},"content":" * @param index The index of the person to be filtered.","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"rahhulleee"},"content":" * @param person The person to be displayed.","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"rahhulleee"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"rahhulleee"},"content":" public ViewPredicate(Index index, Person person) {","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"rahhulleee"},"content":" this.index \u003d index;","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"rahhulleee"},"content":" this.person \u003d person;","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"rahhulleee"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"rahhulleee"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"rahhulleee"},"content":" * Tests if a given person matches the filter criteria.","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"rahhulleee"},"content":" * @param otherPerson The person to be tested.","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"rahhulleee"},"content":" * @return True if the given person matches the filter criteria, false otherwise.","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"rahhulleee"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"rahhulleee"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"rahhulleee"},"content":" public boolean test(Person otherPerson) {","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"rahhulleee"},"content":" // Compare the person\u0027s index in the filtered list with the target index","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"rahhulleee"},"content":" return otherPerson.equals(person);","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"rahhulleee"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"rahhulleee"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"rahhulleee"},"content":" * Gets the index associated with this predicate.","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"rahhulleee"},"content":" * @return The index.","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"rahhulleee"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"rahhulleee"},"content":" public Index getIndex() {","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"rahhulleee"},"content":" return this.index;","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"rahhulleee"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"rahhulleee"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"rahhulleee"},"content":" * Checks if this ViewPredicate is equal to another object.","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"rahhulleee"},"content":" * @param other The object to compare to.","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"rahhulleee"},"content":" * @return True if the objects are equal, false otherwise.","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"rahhulleee"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"rahhulleee"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"rahhulleee"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"rahhulleee"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"rahhulleee"},"content":" return true;","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"rahhulleee"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"rahhulleee"},"content":" if (!(other instanceof ViewPredicate)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"rahhulleee"},"content":" return false;","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"rahhulleee"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"rahhulleee"},"content":" ViewPredicate indexPredicate \u003d (ViewPredicate) other;","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"rahhulleee"},"content":" return index.equals(indexPredicate.index);","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"rahhulleee"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"rahhulleee"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"rahhulleee"},"content":" * Returns a string representation of the ViewPredicate.","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"rahhulleee"},"content":" * @return A string representation of the ViewPredicate.","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"rahhulleee"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"rahhulleee"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"rahhulleee"},"content":" public String toString() {","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"rahhulleee"},"content":" return \"Index: \" + index;","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"rahhulleee"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"rahhulleee"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"rahhulleee":69}},{"path":"src/main/java/seedu/address/model/person/exceptions/DuplicateClientException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"irwynliong"},"content":"package seedu.address.model.person.exceptions;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"irwynliong"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"irwynliong"},"content":" * Signals that the operation will result in duplicate Clients (Clients are considered duplicates if they have the same","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"irwynliong"},"content":" * identity).","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"irwynliong"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"irwynliong"},"content":"public class DuplicateClientException extends RuntimeException {","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"irwynliong"},"content":" public DuplicateClientException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"irwynliong"},"content":" super(\"Operation would result in duplicate clients\");","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"irwynliong"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"irwynliong":11}},{"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":"Greg-Tan"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-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.Address;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"youdonnnn"},"content":"import seedu.address.model.person.Meeting;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"youdonnnn"},"content":"import seedu.address.model.person.PolicyName;","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14"},{"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":"Greg-Tan"},"content":" public static final PolicyName EMPTY_POLICY_NAME \u003d new PolicyName(\"\");","lastModifiedDate":"2024-03-21"},{"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":"Greg-Tan"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"), new Meeting(\"2024-02-12\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"Greg-Tan"},"content":" getTagSet(\"friends\"), Collections.emptySet()),","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":" new Person(new Name(\"Bernice Yu\"), new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":30,"author":{"gitId":"Greg-Tan"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"), new Meeting(\"2024-04-12\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"Greg-Tan"},"content":" getTagSet(\"colleagues\", \"friends\"), Collections.emptySet()),","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":33,"author":{"gitId":"Greg-Tan"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"), new Meeting(\"2024-05-12\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"Greg-Tan"},"content":" getTagSet(\"neighbours\"), Collections.emptySet()),","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" new Person(new Name(\"David Li\"), new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":36,"author":{"gitId":"Greg-Tan"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"), new Meeting(\"2024-06-12\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"Greg-Tan"},"content":" getTagSet(\"family\"), Collections.emptySet()),","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":39,"author":{"gitId":"Greg-Tan"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"), new Meeting(\"2024-07-12\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"Greg-Tan"},"content":" getTagSet(\"classmates\"), Collections.emptySet()),","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":42,"author":{"gitId":"Greg-Tan"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"), new Meeting(\"2024-08-12\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"Greg-Tan"},"content":" getTagSet(\"colleagues\"), Collections.emptySet())","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14"},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"youdonnnn":2,"Greg-Tan":14,"-":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":"-"},"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":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"youdonnnn"},"content":"import seedu.address.model.person.Meeting;","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"youdonnnn"},"content":"import seedu.address.model.person.Policy;","lastModifiedDate":"2024-03-21"},{"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":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"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":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"irwynliong"},"content":" private final String meeting;","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09"},{"lineNumber":36,"author":{"gitId":"Greg-Tan"},"content":" private final List\u003cJsonAdaptedPolicyTag\u003e policies \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"youdonnnn"},"content":" @JsonProperty(\"meeting\") String meeting, @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags,","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"youdonnnn"},"content":" @JsonProperty(\"policies\") List\u003cJsonAdaptedPolicyTag\u003e policies) {","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-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":"irwynliong"},"content":" this.meeting \u003d meeting;","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"Greg-Tan"},"content":" if (policies !\u003d null) {","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"Greg-Tan"},"content":" this.policies.addAll(policies);","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"Greg-Tan"},"content":" }","lastModifiedDate":"2024-03-21"},{"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"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"irwynliong"},"content":" meeting \u003d source.getMeeting().value;","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09"},{"lineNumber":71,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"Greg-Tan"},"content":" policies.addAll(source.getPolicies().stream()","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"Greg-Tan"},"content":" .map(JsonAdaptedPolicyTag::new)","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"Greg-Tan"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2024-03-21"},{"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":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"Greg-Tan"},"content":" final List\u003cPolicy\u003e personPolicies \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"Greg-Tan"},"content":" for (JsonAdaptedPolicyTag policy : policies) {","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"Greg-Tan"},"content":" personPolicies.add(policy.toModelType());","lastModifiedDate":"2024-03-21"},{"lineNumber":90,"author":{"gitId":"Greg-Tan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":91,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":92,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09"},{"lineNumber":93,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":128,"author":{"gitId":"irwynliong"},"content":" if (meeting \u003d\u003d null) {","lastModifiedDate":"2024-03-21"},{"lineNumber":129,"author":{"gitId":"irwynliong"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Meeting.class.getSimpleName()));","lastModifiedDate":"2024-03-21"},{"lineNumber":130,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":131,"author":{"gitId":"irwynliong"},"content":" if (!Meeting.isValidMeeting(meeting)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":132,"author":{"gitId":"irwynliong"},"content":" throw new IllegalValueException(Meeting.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":133,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":134,"author":{"gitId":"irwynliong"},"content":" final Meeting modelMeeting \u003d new Meeting(meeting);","lastModifiedDate":"2024-03-21"},{"lineNumber":135,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":136,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13"},{"lineNumber":137,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":138,"author":{"gitId":"Greg-Tan"},"content":" final Set\u003cPolicy\u003e modelPolicies \u003d new HashSet\u003c\u003e(personPolicies);","lastModifiedDate":"2024-03-21"},{"lineNumber":139,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":140,"author":{"gitId":"Greg-Tan"},"content":" return new Person(modelName, modelPhone, modelEmail, modelAddress, modelMeeting, modelTags, modelPolicies);","lastModifiedDate":"2024-03-21"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":143,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"youdonnnn":4,"irwynliong":10,"Greg-Tan":22,"-":107}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedPolicyTag.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Greg-Tan"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"Greg-Tan"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"Greg-Tan"},"content":"import com.fasterxml.jackson.annotation.JsonValue;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"youdonnnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"Greg-Tan"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"Greg-Tan"},"content":"import seedu.address.model.person.Policy;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"youdonnnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"youdonnnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"youdonnnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"youdonnnn"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"youdonnnn"},"content":" * Jackson-friendly version of {@link Policy}.","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"youdonnnn"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"Greg-Tan"},"content":"public class JsonAdaptedPolicyTag {","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"Greg-Tan"},"content":" private final String tagName;","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"Greg-Tan"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"Greg-Tan"},"content":" * Constructs a {@code JsonAdaptedTag} with the given {@code tagName}.","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"Greg-Tan"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"Greg-Tan"},"content":" @JsonCreator","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"Greg-Tan"},"content":" public JsonAdaptedPolicyTag(String tagName) {","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"Greg-Tan"},"content":" this.tagName \u003d tagName;","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"Greg-Tan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"Greg-Tan"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"Greg-Tan"},"content":" * Converts a given {@code Tag} into this class for Jackson use.","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"Greg-Tan"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"Greg-Tan"},"content":" public JsonAdaptedPolicyTag(Policy source) {","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"Greg-Tan"},"content":" tagName \u003d source.policyName;","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"Greg-Tan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"youdonnnn"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"youdonnnn"},"content":" * Gets the tag name associated with this adapted policy tag.","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"youdonnnn"},"content":" *","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"youdonnnn"},"content":" * @return The name of the policy tag.","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"youdonnnn"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"Greg-Tan"},"content":" @JsonValue","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"Greg-Tan"},"content":" public String getTagName() {","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"Greg-Tan"},"content":" return tagName;","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"Greg-Tan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"Greg-Tan"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"Greg-Tan"},"content":" * Converts this Jackson-friendly adapted tag object into the model\u0027s {@code Tag} object.","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"Greg-Tan"},"content":" *","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"Greg-Tan"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted tag.","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"Greg-Tan"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"Greg-Tan"},"content":" public Policy toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"Greg-Tan"},"content":" if (!Policy.isValidField(tagName)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"Greg-Tan"},"content":" throw new IllegalValueException(Policy.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"Greg-Tan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"Greg-Tan"},"content":" return new Policy(tagName);","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"Greg-Tan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"Greg-Tan"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"youdonnnn":12,"Greg-Tan":42}},{"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":"-"},"content":"import seedu.address.model.person.Person;","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":" * 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":"irwynliong"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"Persons list contains duplicate client(s).\";","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedPerson\u003e persons \u003d new ArrayList\u003c\u003e();","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":" * 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":"-"},"content":" public JsonSerializableAddressBook(@JsonProperty(\"persons\") List\u003cJsonAdaptedPerson\u003e persons) {","lastModifiedDate":"2018-08-13"},{"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":"-"},"content":" persons.addAll(source.getPersonList().stream().map(JsonAdaptedPerson::new).collect(Collectors.toList()));","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 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":"-"},"content":" for (JsonAdaptedPerson jsonAdaptedPerson : persons) {","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" Person person \u003d jsonAdaptedPerson.toModelType();","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (addressBook.hasPerson(person)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2018-08-13"},{"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":{"irwynliong":1,"-":59}},{"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":"jimseah-0116"},"content":"import javafx.scene.input.KeyCode;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"jimseah-0116"},"content":"import javafx.scene.input.KeyEvent;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Controller for a help page","lastModifiedDate":"2016-08-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class HelpWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-12-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String USERGUIDE_URL \u003d \"https://se-education.org/addressbook-level3/UserGuide.html\";","lastModifiedDate":"2019-08-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String HELP_MESSAGE \u003d \"Refer to the user guide: \" + USERGUIDE_URL;","lastModifiedDate":"2019-08-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(HelpWindow.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"HelpWindow.fxml\";","lastModifiedDate":"2016-09-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-12-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Button copyButton;","lastModifiedDate":"2019-08-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Label helpMessage;","lastModifiedDate":"2019-08-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-12-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * @param root Stage to use as the root of the HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public HelpWindow(Stage root) {","lastModifiedDate":"2017-12-01"},{"lineNumber":38,"author":{"gitId":"-"},"content":" super(FXML, root);","lastModifiedDate":"2017-12-01"},{"lineNumber":39,"author":{"gitId":"-"},"content":" helpMessage.setText(HELP_MESSAGE);","lastModifiedDate":"2019-08-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public HelpWindow() {","lastModifiedDate":"2017-12-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":" this(new Stage());","lastModifiedDate":"2017-12-01"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-01"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-01"},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Shows the help window.","lastModifiedDate":"2017-08-16"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * @throws IllegalStateException","lastModifiedDate":"2017-08-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * \u003cul\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * if this method is called on a thread other than the JavaFX Application Thread.","lastModifiedDate":"2017-08-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * if this method is called during animation or layout processing.","lastModifiedDate":"2017-08-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * if this method is called on the primary stage.","lastModifiedDate":"2017-08-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * if {@code dialogStage} is already showing.","lastModifiedDate":"2017-08-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * \u003c/ul\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void show() {","lastModifiedDate":"2016-08-18"},{"lineNumber":68,"author":{"gitId":"-"},"content":" logger.fine(\"Showing help page about the application.\");","lastModifiedDate":"2016-12-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":" getRoot().show();","lastModifiedDate":"2018-02-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" getRoot().centerOnScreen();","lastModifiedDate":"2019-08-19"},{"lineNumber":71,"author":{"gitId":"jimseah-0116"},"content":" closeOnEsc();","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * Returns true if the help window is currently being shown.","lastModifiedDate":"2018-03-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public boolean isShowing() {","lastModifiedDate":"2018-03-15"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return getRoot().isShowing();","lastModifiedDate":"2018-03-15"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":81,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * Hides the help window.","lastModifiedDate":"2018-12-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void hide() {","lastModifiedDate":"2018-12-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" getRoot().hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-08"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-08"},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Focuses on the help window.","lastModifiedDate":"2018-03-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void focus() {","lastModifiedDate":"2018-03-15"},{"lineNumber":92,"author":{"gitId":"-"},"content":" getRoot().requestFocus();","lastModifiedDate":"2018-03-15"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":96,"author":{"gitId":"jimseah-0116"},"content":" * Copies the URL of the user guide to the clipboard.","lastModifiedDate":"2024-03-21"},{"lineNumber":97,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-08-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" private void copyUrl() {","lastModifiedDate":"2019-08-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" final Clipboard clipboard \u003d Clipboard.getSystemClipboard();","lastModifiedDate":"2019-08-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" final ClipboardContent url \u003d new ClipboardContent();","lastModifiedDate":"2019-08-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":" url.putString(USERGUIDE_URL);","lastModifiedDate":"2019-08-19"},{"lineNumber":103,"author":{"gitId":"-"},"content":" clipboard.setContent(url);","lastModifiedDate":"2019-08-19"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-08-19"},{"lineNumber":105,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":106,"author":{"gitId":"jimseah-0116"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":107,"author":{"gitId":"jimseah-0116"},"content":" * Closes the window when user presses \"Esc\" key.","lastModifiedDate":"2024-03-21"},{"lineNumber":108,"author":{"gitId":"jimseah-0116"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":109,"author":{"gitId":"jimseah-0116"},"content":" public void closeOnEsc() {","lastModifiedDate":"2024-03-21"},{"lineNumber":110,"author":{"gitId":"jimseah-0116"},"content":" getRoot().addEventHandler(KeyEvent.KEY_RELEASED, (KeyEvent event) -\u003e {","lastModifiedDate":"2024-03-21"},{"lineNumber":111,"author":{"gitId":"jimseah-0116"},"content":" if (event.getCode() \u003d\u003d KeyCode.ESCAPE) {","lastModifiedDate":"2024-03-21"},{"lineNumber":112,"author":{"gitId":"jimseah-0116"},"content":" hide();","lastModifiedDate":"2024-03-21"},{"lineNumber":113,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":114,"author":{"gitId":"jimseah-0116"},"content":" });","lastModifiedDate":"2024-03-21"},{"lineNumber":115,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":116,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"jimseah-0116":15,"-":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":"-"},"content":" private PersonListPanel personListPanel;","lastModifiedDate":"2016-08-18"},{"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":"jimseah-0116"},"content":" private MeetingsWindow meetingsWindow;","lastModifiedDate":"2024-03-21"},{"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":"-"},"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":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08"},{"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":"jimseah-0116"},"content":" meetingsWindow \u003d new MeetingsWindow();","lastModifiedDate":"2024-03-21"},{"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":" 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":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25"},{"lineNumber":120,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":121,"author":{"gitId":"rahhulleee"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getAddressBookFilePath());","lastModifiedDate":"2024-03-11"},{"lineNumber":122,"author":{"gitId":"rahhulleee"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2024-03-11"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":125,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":126,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27"},{"lineNumber":127,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":128,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":129,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27"},{"lineNumber":130,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27"},{"lineNumber":131,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27"},{"lineNumber":132,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27"},{"lineNumber":133,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":137,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":138,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15"},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":140,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":141,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15"},{"lineNumber":143,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":144,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15"},{"lineNumber":145,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":149,"author":{"gitId":"jimseah-0116"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":150,"author":{"gitId":"jimseah-0116"},"content":" * Opens the meetings window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2024-03-21"},{"lineNumber":151,"author":{"gitId":"jimseah-0116"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":152,"author":{"gitId":"jimseah-0116"},"content":" @FXML","lastModifiedDate":"2024-03-21"},{"lineNumber":153,"author":{"gitId":"jimseah-0116"},"content":" public void handleMeetings() {","lastModifiedDate":"2024-03-21"},{"lineNumber":154,"author":{"gitId":"jimseah-0116"},"content":" if (!meetingsWindow.isShowing()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":155,"author":{"gitId":"jimseah-0116"},"content":" meetingsWindow.show();","lastModifiedDate":"2024-03-21"},{"lineNumber":156,"author":{"gitId":"jimseah-0116"},"content":" } else {","lastModifiedDate":"2024-03-21"},{"lineNumber":157,"author":{"gitId":"jimseah-0116"},"content":" meetingsWindow.focus();","lastModifiedDate":"2024-03-21"},{"lineNumber":158,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":159,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":160,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":161,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15"},{"lineNumber":162,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":165,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":166,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18"},{"lineNumber":167,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":168,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":169,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18"},{"lineNumber":170,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":174,"author":{"gitId":"jimseah-0116"},"content":" meetingsWindow.hide();","lastModifiedDate":"2024-03-21"},{"lineNumber":175,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":178,"author":{"gitId":"-"},"content":" public PersonListPanel getPersonListPanel() {","lastModifiedDate":"2016-08-25"},{"lineNumber":179,"author":{"gitId":"-"},"content":" return personListPanel;","lastModifiedDate":"2018-08-14"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"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":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09"},{"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":"jimseah-0116"},"content":" if (commandResult.isShowMeetings()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":198,"author":{"gitId":"jimseah-0116"},"content":" handleMeetings();","lastModifiedDate":"2024-03-21"},{"lineNumber":199,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":200,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-03-21"},{"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":{"jimseah-0116":19,"-":191,"rahhulleee":2}},{"path":"src/main/java/seedu/address/ui/MeetingsWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jimseah-0116"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"jimseah-0116"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"jimseah-0116"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"jimseah-0116"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"jimseah-0116"},"content":"import javafx.scene.input.KeyCode;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"jimseah-0116"},"content":"import javafx.scene.input.KeyEvent;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"jimseah-0116"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"jimseah-0116"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"jimseah-0116"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"jimseah-0116"},"content":" * Controller for a help page","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"jimseah-0116"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"jimseah-0116"},"content":"public class MeetingsWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"jimseah-0116"},"content":" public static final String REMIND_MESSAGE \u003d \"Here are your upcoming meetings: \";","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"jimseah-0116"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(MeetingsWindow.class);","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"jimseah-0116"},"content":" private static final String FXML \u003d \"MeetingsWindow.fxml\";","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"jimseah-0116"},"content":" @FXML","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"jimseah-0116"},"content":" private Label meetingsMessage;","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"jimseah-0116"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"jimseah-0116"},"content":" * Creates a new MeetingsWindow.","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"jimseah-0116"},"content":" *","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"jimseah-0116"},"content":" * @param root Stage to use as the root of the MeetingsWindow.","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"jimseah-0116"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"jimseah-0116"},"content":" public MeetingsWindow(Stage root) {","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"jimseah-0116"},"content":" super(FXML, root);","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"jimseah-0116"},"content":" meetingsMessage.setText(REMIND_MESSAGE);","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"jimseah-0116"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"jimseah-0116"},"content":" * Creates a new MeetingsWindow with a new Stage.","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"jimseah-0116"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"jimseah-0116"},"content":" public MeetingsWindow() {","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"jimseah-0116"},"content":" this(new Stage());","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"jimseah-0116"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"jimseah-0116"},"content":" * Shows the meetings window.","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"jimseah-0116"},"content":" * @throws IllegalStateException","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"jimseah-0116"},"content":" * \u003cul\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"jimseah-0116"},"content":" * \u003cli\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"jimseah-0116"},"content":" * if this method is called on a thread other than the JavaFX Application Thread.","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"jimseah-0116"},"content":" * \u003c/li\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"jimseah-0116"},"content":" * \u003cli\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"jimseah-0116"},"content":" * if this method is called during animation or layout processing.","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"jimseah-0116"},"content":" * \u003c/li\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"jimseah-0116"},"content":" * \u003cli\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"jimseah-0116"},"content":" * if this method is called on the primary stage.","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"jimseah-0116"},"content":" * \u003c/li\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"jimseah-0116"},"content":" * \u003cli\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"jimseah-0116"},"content":" * if {@code dialogStage} is already showing.","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"jimseah-0116"},"content":" * \u003c/li\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"jimseah-0116"},"content":" * \u003c/ul\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"jimseah-0116"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"jimseah-0116"},"content":" public void show() {","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"jimseah-0116"},"content":" logger.fine(\"Showing meetings window for the application.\");","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"jimseah-0116"},"content":" getRoot().show();","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"jimseah-0116"},"content":" getRoot().centerOnScreen();","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"jimseah-0116"},"content":" closeOnEsc();","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"jimseah-0116"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"jimseah-0116"},"content":" * Returns true if the meetings window is currently being shown.","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"jimseah-0116"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"jimseah-0116"},"content":" public boolean isShowing() {","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"jimseah-0116"},"content":" return getRoot().isShowing();","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"jimseah-0116"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"jimseah-0116"},"content":" * Hides the meetings window.","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"jimseah-0116"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"jimseah-0116"},"content":" public void hide() {","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"jimseah-0116"},"content":" getRoot().hide();","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"jimseah-0116"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"jimseah-0116"},"content":" * Focuses on the meetings window.","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"jimseah-0116"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"jimseah-0116"},"content":" public void focus() {","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"jimseah-0116"},"content":" getRoot().requestFocus();","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"jimseah-0116"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"jimseah-0116"},"content":" * Closes the window when user presses \"Esc\" key.","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"jimseah-0116"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"jimseah-0116"},"content":" public void closeOnEsc() {","lastModifiedDate":"2024-03-21"},{"lineNumber":90,"author":{"gitId":"jimseah-0116"},"content":" getRoot().addEventHandler(KeyEvent.KEY_RELEASED, (KeyEvent event) -\u003e {","lastModifiedDate":"2024-03-21"},{"lineNumber":91,"author":{"gitId":"jimseah-0116"},"content":" if (event.getCode() \u003d\u003d KeyCode.ESCAPE) {","lastModifiedDate":"2024-03-21"},{"lineNumber":92,"author":{"gitId":"jimseah-0116"},"content":" hide();","lastModifiedDate":"2024-03-21"},{"lineNumber":93,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":94,"author":{"gitId":"jimseah-0116"},"content":" });","lastModifiedDate":"2024-03-21"},{"lineNumber":95,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":96,"author":{"gitId":"jimseah-0116"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"jimseah-0116":96}},{"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 address;","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":"youdonnnn"},"content":" private FlowPane policies;","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"Greg-Tan"},"content":" @FXML","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"irwynliong"},"content":" private Label meeting;","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"irwynliong"},"content":" @FXML","lastModifiedDate":"2024-03-21"},{"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":" address.setText(person.getAddress().value);","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"irwynliong"},"content":" meeting.setText(person.getMeeting().value);","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":" person.getTags().stream()","lastModifiedDate":"2019-01-02"},{"lineNumber":61,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02"},{"lineNumber":62,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02"},{"lineNumber":63,"author":{"gitId":"youdonnnn"},"content":" person.getPolicies().stream()","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"youdonnnn"},"content":" .sorted(Comparator.comparing(policy -\u003e policy.policyName))","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"youdonnnn"},"content":" .forEach(policy -\u003e policies.getChildren().add(new Label(policy.policyName)));","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":67,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"youdonnnn":4,"irwynliong":3,"Greg-Tan":1,"-":59}},{"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":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25"},{"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":"rahhulleee"},"content":" private static final String ICON_APPLICATION \u003d \"/images/insure_book.png\";","lastModifiedDate":"2024-03-12"},{"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":{"-":87,"rahhulleee":1}},{"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":"rahhulleee"},"content":" -fx-text-fill: #000000; /* Changed to black */","lastModifiedDate":"2024-03-11"},{"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":"rahhulleee"},"content":" -fx-text-fill: #000000; /* Changed to black */","lastModifiedDate":"2024-03-11"},{"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":"rahhulleee"},"content":" -fx-text-fill: #000000; /* Changed to black */","lastModifiedDate":"2024-03-11"},{"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":"rahhulleee"},"content":" -fx-text-fill: #000000; /* Text color not explicitly set before, assuming change needed */","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":".tab-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" -fx-min-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" -fx-max-height: 0;","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":".table-view {","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" -fx-base: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" -fx-control-inner-background: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" -fx-padding: 5;","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":".table-view .column-header-background {","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" -fx-size: 35;","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" -fx-border-color:","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" derive(-fx-base, 80%)","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":".table-view .column-header .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":71,"author":{"gitId":"rahhulleee"},"content":" -fx-text-fill: #000000; /* Changed to black */","lastModifiedDate":"2024-03-11"},{"lineNumber":72,"author":{"gitId":"-"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","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":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2016-08-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":82,"author":{"gitId":"-"},"content":" -fx-border-color: transparent transparent transparent #4d4d4d;","lastModifiedDate":"2017-03-02"},{"lineNumber":83,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":".split-pane {","lastModifiedDate":"2016-08-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":".list-view {","lastModifiedDate":"2017-03-02"},{"lineNumber":92,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":93,"author":{"gitId":"-"},"content":" -fx-padding: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":94,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2018-01-10"},{"lineNumber":95,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":97,"author":{"gitId":"-"},"content":".list-cell {","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","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":".list-cell:filled:even {","lastModifiedDate":"2017-03-02"},{"lineNumber":104,"author":{"gitId":"rahhulleee"},"content":" -fx-background-color: #ea9c3c; /* Bright Orange */","lastModifiedDate":"2024-03-11"},{"lineNumber":105,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":107,"author":{"gitId":"-"},"content":".list-cell:filled:odd {","lastModifiedDate":"2017-03-02"},{"lineNumber":108,"author":{"gitId":"rahhulleee"},"content":" -fx-background-color: #e8b453; /* Dark Orange */","lastModifiedDate":"2024-03-11"},{"lineNumber":109,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":111,"author":{"gitId":"-"},"content":".list-cell:filled:selected {","lastModifiedDate":"2017-03-02"},{"lineNumber":112,"author":{"gitId":"-"},"content":" -fx-background-color: #424d5f;","lastModifiedDate":"2017-03-02"},{"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 #cardPane {","lastModifiedDate":"2017-03-02"},{"lineNumber":116,"author":{"gitId":"-"},"content":" -fx-border-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":117,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"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 .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":121,"author":{"gitId":"rahhulleee"},"content":" -fx-text-fill: #000000; /* Changed to black */","lastModifiedDate":"2024-03-11"},{"lineNumber":122,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":".cell_big_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2016-08-08"},{"lineNumber":127,"author":{"gitId":"rahhulleee"},"content":" -fx-text-fill: #000000; /* Changed to black */","lastModifiedDate":"2024-03-11"},{"lineNumber":128,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":".cell_small_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2022-01-13"},{"lineNumber":132,"author":{"gitId":"-"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2017-03-02"},{"lineNumber":133,"author":{"gitId":"rahhulleee"},"content":" -fx-text-fill: #000000; /* Changed to black */","lastModifiedDate":"2024-03-11"},{"lineNumber":134,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":136,"author":{"gitId":"-"},"content":".stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":137,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":138,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":".pane-with-border {","lastModifiedDate":"2017-05-15"},{"lineNumber":141,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-05-09"},{"lineNumber":142,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 10%);","lastModifiedDate":"2017-05-09"},{"lineNumber":143,"author":{"gitId":"-"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2017-05-09"},{"lineNumber":144,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":146,"author":{"gitId":"-"},"content":".status-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":147,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2018-12-08"},{"lineNumber":148,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":150,"author":{"gitId":"-"},"content":".result-display {","lastModifiedDate":"2016-09-14"},{"lineNumber":151,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2017-03-02"},{"lineNumber":152,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":153,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":154,"author":{"gitId":"rahhulleee"},"content":" -fx-text-fill: white; /* Change to white */","lastModifiedDate":"2024-03-12"},{"lineNumber":155,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":157,"author":{"gitId":"-"},"content":".result-display .label {","lastModifiedDate":"2016-09-14"},{"lineNumber":158,"author":{"gitId":"rahhulleee"},"content":" -fx-text-fill: white; /* Change to white */","lastModifiedDate":"2024-03-12"},{"lineNumber":159,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":".status-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":163,"author":{"gitId":"rahhulleee"},"content":" -fx-text-fill: #000000; /* Changed to black */","lastModifiedDate":"2024-03-11"},{"lineNumber":164,"author":{"gitId":"-"},"content":" -fx-padding: 4px;","lastModifiedDate":"2018-12-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2018-12-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":".status-bar-with-border {","lastModifiedDate":"2016-08-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":170,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":171,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"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-with-border .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":175,"author":{"gitId":"rahhulleee"},"content":" -fx-text-fill: #000000; /* Changed to black */","lastModifiedDate":"2024-03-11"},{"lineNumber":176,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":".grid-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":179,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":180,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"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":".grid-pane .stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":185,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":186,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":188,"author":{"gitId":"-"},"content":".context-menu {","lastModifiedDate":"2016-08-08"},{"lineNumber":189,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":190,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":192,"author":{"gitId":"-"},"content":".context-menu .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":193,"author":{"gitId":"rahhulleee"},"content":" -fx-text-fill: #000000; /* Changed to black */","lastModifiedDate":"2024-03-11"},{"lineNumber":194,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":196,"author":{"gitId":"-"},"content":".menu-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":197,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","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":".menu-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":201,"author":{"gitId":"-"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":202,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":203,"author":{"gitId":"rahhulleee"},"content":" -fx-text-fill: #000000; /* Changed to black */","lastModifiedDate":"2024-03-11"},{"lineNumber":204,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":205,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":207,"author":{"gitId":"-"},"content":".menu .left-container {","lastModifiedDate":"2016-08-08"},{"lineNumber":208,"author":{"gitId":"-"},"content":" -fx-background-color: black;","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":".button {","lastModifiedDate":"2016-08-08"},{"lineNumber":212,"author":{"gitId":"-"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2016-08-08"},{"lineNumber":213,"author":{"gitId":"-"},"content":" -fx-border-color: #e2e2e2;","lastModifiedDate":"2016-08-08"},{"lineNumber":214,"author":{"gitId":"-"},"content":" -fx-border-width: 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":215,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":216,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":217,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2022-01-13"},{"lineNumber":218,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":219,"author":{"gitId":"rahhulleee"},"content":" -fx-text-fill: #d8d8d8; /* Consider changing if you want button text in black */","lastModifiedDate":"2024-03-11"},{"lineNumber":220,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","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":".button:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":224,"author":{"gitId":"-"},"content":" -fx-background-color: #3a3a3a;","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:pressed, .button:default:hover:pressed {","lastModifiedDate":"2016-08-08"},{"lineNumber":228,"author":{"gitId":"-"},"content":" -fx-background-color: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":229,"author":{"gitId":"-"},"content":" -fx-text-fill: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":230,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":232,"author":{"gitId":"-"},"content":".button:focused {","lastModifiedDate":"2016-08-08"},{"lineNumber":233,"author":{"gitId":"-"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2016-08-08"},{"lineNumber":234,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":235,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08"},{"lineNumber":236,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":237,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","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:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08"},{"lineNumber":241,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08"},{"lineNumber":242,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":243,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","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":".button:default {","lastModifiedDate":"2016-08-08"},{"lineNumber":247,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":248,"author":{"gitId":"-"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2016-08-08"},{"lineNumber":249,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":251,"author":{"gitId":"-"},"content":".button:default:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":252,"author":{"gitId":"-"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","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":".dialog-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":256,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"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 \u003e *.button-bar \u003e *.container {","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 *.label.content {","lastModifiedDate":"2016-08-08"},{"lineNumber":264,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08"},{"lineNumber":265,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2016-08-08"},{"lineNumber":266,"author":{"gitId":"rahhulleee"},"content":" -fx-text-fill: #000000; /* Changed to black */","lastModifiedDate":"2024-03-11"},{"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:header *.header-panel {","lastModifiedDate":"2016-08-08"},{"lineNumber":270,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 25%);","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:header *.header-panel *.label {","lastModifiedDate":"2016-08-08"},{"lineNumber":274,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08"},{"lineNumber":275,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08"},{"lineNumber":276,"author":{"gitId":"rahhulleee"},"content":" -fx-fill: #000000; /* Assuming change to black */","lastModifiedDate":"2024-03-11"},{"lineNumber":277,"author":{"gitId":"rahhulleee"},"content":" -fx-text-fill: #000000; /* Changed*/","lastModifiedDate":"2024-03-11"},{"lineNumber":278,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":279,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":280,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02"},{"lineNumber":281,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":282,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":284,"author":{"gitId":"-"},"content":".scroll-bar .thumb {","lastModifiedDate":"2016-08-15"},{"lineNumber":285,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":286,"author":{"gitId":"-"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2016-08-15"},{"lineNumber":287,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":288,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":289,"author":{"gitId":"-"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2016-08-15"},{"lineNumber":290,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-15"},{"lineNumber":291,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-15"},{"lineNumber":292,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":293,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":294,"author":{"gitId":"-"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2016-08-15"},{"lineNumber":295,"author":{"gitId":"-"},"content":" -fx-shape: \" \";","lastModifiedDate":"2016-08-15"},{"lineNumber":296,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":298,"author":{"gitId":"-"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":299,"author":{"gitId":"-"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2016-08-15"},{"lineNumber":300,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":302,"author":{"gitId":"-"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":303,"author":{"gitId":"-"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2016-08-18"},{"lineNumber":304,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":306,"author":{"gitId":"-"},"content":"#cardPane {","lastModifiedDate":"2016-08-08"},{"lineNumber":307,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":308,"author":{"gitId":"-"},"content":" -fx-border-width: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":309,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":310,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":311,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08"},{"lineNumber":312,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08"},{"lineNumber":313,"author":{"gitId":"-"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2016-08-08"},{"lineNumber":314,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":315,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":316,"author":{"gitId":"-"},"content":"#commandTextField {","lastModifiedDate":"2017-03-02"},{"lineNumber":317,"author":{"gitId":"-"},"content":" -fx-background-color: transparent #383838 transparent #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":318,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":319,"author":{"gitId":"-"},"content":" -fx-border-color: #383838 #383838 #ffffff #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":320,"author":{"gitId":"-"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":321,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":322,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":323,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":324,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":325,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":326,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":327,"author":{"gitId":"-"},"content":"#filterField, #personListPanel, #personWebpage {","lastModifiedDate":"2016-08-15"},{"lineNumber":328,"author":{"gitId":"-"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2016-08-15"},{"lineNumber":329,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":331,"author":{"gitId":"-"},"content":"#resultDisplay .content {","lastModifiedDate":"2017-03-02"},{"lineNumber":332,"author":{"gitId":"-"},"content":" -fx-background-color: transparent, #383838, transparent, #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":333,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":334,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":335,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":336,"author":{"gitId":"-"},"content":"#tags {","lastModifiedDate":"2016-12-18"},{"lineNumber":337,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2016-12-18"},{"lineNumber":338,"author":{"gitId":"-"},"content":" -fx-vgap: 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":339,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":340,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":341,"author":{"gitId":"-"},"content":"#tags .label {","lastModifiedDate":"2016-12-18"},{"lineNumber":342,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-12-18"},{"lineNumber":343,"author":{"gitId":"-"},"content":" -fx-background-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":344,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":345,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":346,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":347,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2016-12-18"},{"lineNumber":348,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":349,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":350,"author":{"gitId":"youdonnnn"},"content":"#policies {","lastModifiedDate":"2024-03-21"},{"lineNumber":351,"author":{"gitId":"youdonnnn"},"content":" -fx-hgap: 7;","lastModifiedDate":"2024-03-21"},{"lineNumber":352,"author":{"gitId":"youdonnnn"},"content":" -fx-vgap: 3;","lastModifiedDate":"2024-03-21"},{"lineNumber":353,"author":{"gitId":"youdonnnn"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":354,"author":{"gitId":"youdonnnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":355,"author":{"gitId":"youdonnnn"},"content":"#policies .label {","lastModifiedDate":"2024-03-21"},{"lineNumber":356,"author":{"gitId":"youdonnnn"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-21"},{"lineNumber":357,"author":{"gitId":"youdonnnn"},"content":" -fx-background-color: #ef5667;","lastModifiedDate":"2024-03-21"},{"lineNumber":358,"author":{"gitId":"youdonnnn"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2024-03-21"},{"lineNumber":359,"author":{"gitId":"youdonnnn"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2024-03-21"},{"lineNumber":360,"author":{"gitId":"youdonnnn"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2024-03-21"},{"lineNumber":361,"author":{"gitId":"youdonnnn"},"content":" -fx-font-size: 11;","lastModifiedDate":"2024-03-21"},{"lineNumber":362,"author":{"gitId":"youdonnnn"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":363,"author":{"gitId":"youdonnnn"},"content":"","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"youdonnnn":14,"-":328,"rahhulleee":21}},{"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 javafx.scene.control.Menu?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.SplitPane?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":10,"author":{"gitId":"rahhulleee"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"rahhulleee"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"rahhulleee"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2024-03-11"},{"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":"jimseah-0116"},"content":" title\u003d\"InsureBook\" minWidth\u003d\"450\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":17,"author":{"gitId":"rahhulleee"},"content":" \u003cImage url\u003d\"@/images/insure_book.png\"/\u003e","lastModifiedDate":"2024-03-12"},{"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":" \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":"rahhulleee"},"content":" \u003c!-- Contacts List First --\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"rahhulleee"},"content":" \u003cVBox fx:id\u003d\"personList\" styleClass\u003d\"pane-with-border\" minWidth\u003d\"340\" prefWidth\u003d\"340\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":38,"author":{"gitId":"rahhulleee"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\"/\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":40,"author":{"gitId":"rahhulleee"},"content":" \u003cStackPane fx:id\u003d\"personListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"rahhulleee"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":43,"author":{"gitId":"rahhulleee"},"content":" \u003c!-- Result Display Second --\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"resultDisplayPlaceholder\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2017-05-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" minHeight\u003d\"100\" prefHeight\u003d\"100\" maxHeight\u003d\"100\"\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\"/\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":51,"author":{"gitId":"rahhulleee"},"content":" \u003c!-- Command Box Last --\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"rahhulleee"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":54,"author":{"gitId":"rahhulleee"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\"/\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":56,"author":{"gitId":"rahhulleee"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\"/\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":62,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":63,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"jimseah-0116":1,"-":47,"rahhulleee":15}},{"path":"src/main/resources/view/MeetingsWindow.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jimseah-0116"},"content":"#meetingsMessage {","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"jimseah-0116"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"jimseah-0116"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"jimseah-0116"},"content":"#meetingsMessageContainer {","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"jimseah-0116"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"jimseah-0116"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"jimseah-0116":7}},{"path":"src/main/resources/view/MeetingsWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jimseah-0116"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"jimseah-0116"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"jimseah-0116"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"jimseah-0116"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"jimseah-0116"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"jimseah-0116"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"jimseah-0116"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"jimseah-0116"},"content":"\u003c?import javafx.stage.Stage?\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"jimseah-0116"},"content":"\u003cfx:root resizable\u003d\"true\" title\u003d\"View Meetings\" type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"jimseah-0116"},"content":" \u003cicons\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"jimseah-0116"},"content":" \u003cImage url\u003d\"@/images/meetings_icon.png\" /\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"jimseah-0116"},"content":" \u003c/icons\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"jimseah-0116"},"content":" \u003cscene\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"jimseah-0116"},"content":" \u003cScene\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"jimseah-0116"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"jimseah-0116"},"content":" \u003cURL value\u003d\"@MeetingsWindow.css\" /\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"jimseah-0116"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"jimseah-0116"},"content":" \u003cHBox alignment\u003d\"CENTER\" fx:id\u003d\"meetingsMessageContainer\"\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"jimseah-0116"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"jimseah-0116"},"content":" \u003cLabel fx:id\u003d\"meetingsMessage\" text\u003d\"Label\"\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"jimseah-0116"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"jimseah-0116"},"content":" \u003cInsets right\u003d\"5.0\" /\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"jimseah-0116"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"jimseah-0116"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"jimseah-0116"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"jimseah-0116"},"content":" \u003copaqueInsets\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"jimseah-0116"},"content":" \u003cInsets bottom\u003d\"10.0\" left\u003d\"5.0\" right\u003d\"10.0\" top\u003d\"5.0\" /\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"jimseah-0116"},"content":" \u003c/opaqueInsets\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"jimseah-0116"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"jimseah-0116"},"content":" \u003cInsets bottom\u003d\"10.0\" left\u003d\"5.0\" right\u003d\"10.0\" top\u003d\"5.0\" /\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"jimseah-0116"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"jimseah-0116"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"jimseah-0116"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"jimseah-0116"},"content":" \u003c/scene\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"jimseah-0116"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"jimseah-0116":38}},{"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":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"irwynliong"},"content":" \u003cLabel fx:id\u003d\"meeting\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$meeting\" /\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"youdonnnn"},"content":" \u003cFlowPane fx:id\u003d\"policies\" /\u003e","lastModifiedDate":"2024-03-21"},{"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":{"youdonnnn":1,"irwynliong":1,"-":36}},{"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":"irwynliong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.MEETING_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"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":"-"},"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":"-"},"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":"-"},"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":"irwynliong"},"content":" + EMAIL_DESC_AMY + MEETING_DESC_AMY + ADDRESS_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":171,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2023-06-13"},{"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":{"irwynliong":2,"-":174}},{"path":"src/test/java/seedu/address/logic/commands/CommandResultTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2018-12-09"},{"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":"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":"2018-12-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class CommandResultTest {","lastModifiedDate":"2018-12-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-12-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new CommandResult(\"feedback\");","lastModifiedDate":"2018-12-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-12-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":" assertTrue(commandResult.equals(new CommandResult(\"feedback\")));","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"jimseah-0116"},"content":" assertTrue(commandResult.equals(new CommandResult(\"feedback\", false, false, false)));","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertTrue(commandResult.equals(commandResult));","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(null));","lastModifiedDate":"2018-12-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(0.5f));","lastModifiedDate":"2018-12-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // different feedbackToUser value -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(new CommandResult(\"different\")));","lastModifiedDate":"2018-12-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // different showHelp value -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":32,"author":{"gitId":"jimseah-0116"},"content":" assertFalse(commandResult.equals(new CommandResult(\"feedback\", true, false, false)));","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"jimseah-0116"},"content":" // different showMeetings value -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"jimseah-0116"},"content":" assertFalse(commandResult.equals(new CommandResult(\"feedback\", false, true, false)));","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":" // different exit value -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":38,"author":{"gitId":"jimseah-0116"},"content":" assertFalse(commandResult.equals(new CommandResult(\"feedback\", false, false, true)));","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void hashcode() {","lastModifiedDate":"2018-12-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new CommandResult(\"feedback\");","lastModifiedDate":"2018-12-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // same values -\u003e returns same hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertEquals(commandResult.hashCode(), new CommandResult(\"feedback\").hashCode());","lastModifiedDate":"2018-12-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // different feedbackToUser value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(\"different\").hashCode());","lastModifiedDate":"2018-12-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different showHelp value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":52,"author":{"gitId":"jimseah-0116"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(\"feedback\", true, false, false).hashCode());","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"jimseah-0116"},"content":" // different showMeetings value -\u003e returns different hashcode","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"jimseah-0116"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(\"feedback\", false, true, false).hashCode());","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // different exit value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":58,"author":{"gitId":"jimseah-0116"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(\"feedback\", false, false, true).hashCode());","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"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":" CommandResult commandResult \u003d new CommandResult(\"feedback\");","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" String expected \u003d CommandResult.class.getCanonicalName() + \"{feedbackToUser\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" + commandResult.getFeedbackToUser() + \", showHelp\u003d\" + commandResult.isShowHelp()","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"jimseah-0116"},"content":" + \", showMeetings\u003d\" + commandResult.isShowMeetings() + \", exit\u003d\" + commandResult.isExit() + \"}\";","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertEquals(expected, commandResult.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-12-09"}],"authorContributionMap":{"jimseah-0116":12,"-":57}},{"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":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"irwynliong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MEETING;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"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":"-"},"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":"2017-06-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":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05"},{"lineNumber":38,"author":{"gitId":"irwynliong"},"content":" public static final String VALID_MEETING_AMY \u003d \"2024-02-12\";","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"irwynliong"},"content":" public static final String VALID_MEETING_BOB \u003d \"2024-03-12 18:00:00\";","lastModifiedDate":"2024-03-21"},{"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":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":51,"author":{"gitId":"irwynliong"},"content":" public static final String MEETING_DESC_AMY \u003d \" \" + PREFIX_MEETING + VALID_MEETING_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"irwynliong"},"content":" public static final String MEETING_DESC_BOB \u003d \" \" + PREFIX_MEETING + VALID_MEETING_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":56,"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":57,"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":58,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05"},{"lineNumber":60,"author":{"gitId":"irwynliong"},"content":" public static final String INVALID_MEETING_DESC \u003d \" \" + PREFIX_MEETING + \"12-02-2024\"; // YYYY-MM-DD format","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"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":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":71,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":72,"author":{"gitId":"irwynliong"},"content":" .withMeeting(VALID_MEETING_AMY)","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":76,"author":{"gitId":"irwynliong"},"content":" .withMeeting(VALID_MEETING_AMY)","lastModifiedDate":"2024-03-21"},{"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":{"irwynliong":8,"-":128}},{"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":"irwynliong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MEETING_BOB;","lastModifiedDate":"2024-03-21"},{"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":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-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":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2017-05-05"},{"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 address -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_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":"irwynliong"},"content":" // different meeting -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"irwynliong"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withMeeting(VALID_MEETING_BOB).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"irwynliong"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-05"},{"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":"-"},"content":" + editPersonDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", address\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"irwynliong"},"content":" + editPersonDescriptor.getAddress().orElse(null) + \", meeting\u003d\"","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"irwynliong"},"content":" + editPersonDescriptor.getMeeting().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getTags().orElse(null) + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"irwynliong":7,"-":70}},{"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":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-12-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.ExitCommand.MESSAGE_EXIT_ACKNOWLEDGEMENT;","lastModifiedDate":"2017-06-08"},{"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.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2018-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class ExitCommandTest {","lastModifiedDate":"2017-06-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-12-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public void execute_exit_success() {","lastModifiedDate":"2017-06-08"},{"lineNumber":17,"author":{"gitId":"jimseah-0116"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, false, false, true);","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ExitCommand(), model, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08"}],"authorContributionMap":{"jimseah-0116":1,"-":19}},{"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":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.HelpCommand.SHOWING_HELP_MESSAGE;","lastModifiedDate":"2017-06-08"},{"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.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2018-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class HelpCommandTest {","lastModifiedDate":"2017-06-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public void execute_help_success() {","lastModifiedDate":"2017-06-08"},{"lineNumber":17,"author":{"gitId":"jimseah-0116"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(SHOWING_HELP_MESSAGE, true, false, false);","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":" assertCommandSuccess(new HelpCommand(), model, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08"}],"authorContributionMap":{"jimseah-0116":1,"-":19}},{"path":"src/test/java/seedu/address/logic/commands/MeetingsCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jimseah-0116"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"jimseah-0116"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"jimseah-0116"},"content":"import static seedu.address.logic.commands.MeetingsCommand.SHOWING_MEETINGS_MESSAGE;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"jimseah-0116"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"jimseah-0116"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"jimseah-0116"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"jimseah-0116"},"content":"public class MeetingsCommandTest {","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"jimseah-0116"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"jimseah-0116"},"content":" private Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"jimseah-0116"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"jimseah-0116"},"content":" public void execute_meetings_success() {","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"jimseah-0116"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(SHOWING_MEETINGS_MESSAGE, false, true, false);","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"jimseah-0116"},"content":" assertCommandSuccess(new MeetingsCommand(), model, expectedCommandResult, expectedModel);","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"jimseah-0116"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"jimseah-0116":20}},{"path":"src/test/java/seedu/address/logic/commands/ViewCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"rahhulleee"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"rahhulleee"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"rahhulleee"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"rahhulleee"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"rahhulleee"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"rahhulleee"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"rahhulleee"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"rahhulleee"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"rahhulleee"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"rahhulleee"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"rahhulleee"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"rahhulleee"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"rahhulleee"},"content":"import seedu.address.model.person.ViewPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"rahhulleee"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"rahhulleee"},"content":"public class ViewCommandTest {","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"rahhulleee"},"content":" private Model model;","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"rahhulleee"},"content":" @BeforeEach","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"rahhulleee"},"content":" public void setUp() {","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"rahhulleee"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"rahhulleee"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"rahhulleee"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"rahhulleee"},"content":" public void execute_viewValidPerson_success() {","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"rahhulleee"},"content":" // Prepare our model and expected model","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"rahhulleee"},"content":" Person personToView \u003d new PersonBuilder().build();","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"rahhulleee"},"content":" model.addPerson(personToView);","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"rahhulleee"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"rahhulleee"},"content":" // Assuming the person to view is the last one added","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"rahhulleee"},"content":" Index lastPersonIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"rahhulleee"},"content":" // Set up expected model\u0027s filtered list according to ViewCommand\u0027s behavior","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"rahhulleee"},"content":" expectedModel.updateFilteredPersonList(new ViewPredicate(lastPersonIndex, personToView));","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"rahhulleee"},"content":" // Construct command to view the last added person","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"rahhulleee"},"content":" ViewCommand viewCommand \u003d new ViewCommand(lastPersonIndex);","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"rahhulleee"},"content":" String expectedMessage \u003d String.format(ViewCommand.MESSAGE_VIEW_SUCCESS, personToView.getName());","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"rahhulleee"},"content":" // Execute command and verify success","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"rahhulleee"},"content":" assertCommandSuccess(viewCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"rahhulleee"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"rahhulleee"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"rahhulleee"},"content":" public void equals() {","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"rahhulleee"},"content":" Index indexFirst \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"rahhulleee"},"content":" Index indexSecond \u003d Index.fromOneBased(2);","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"rahhulleee"},"content":" ViewCommand viewFirstCommand \u003d new ViewCommand(indexFirst);","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"rahhulleee"},"content":" ViewCommand viewSecondCommand \u003d new ViewCommand(indexSecond);","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"rahhulleee"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"rahhulleee"},"content":" assertTrue(viewFirstCommand.equals(viewFirstCommand));","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"rahhulleee"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"rahhulleee"},"content":" ViewCommand viewFirstCommandCopy \u003d new ViewCommand(indexFirst);","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"rahhulleee"},"content":" assertTrue(viewFirstCommand.equals(viewFirstCommandCopy));","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"rahhulleee"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"rahhulleee"},"content":" assertFalse(viewFirstCommand.equals(1));","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"rahhulleee"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"rahhulleee"},"content":" assertFalse(viewFirstCommand.equals(null));","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"rahhulleee"},"content":" // different index -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"rahhulleee"},"content":" assertFalse(viewFirstCommand.equals(viewSecondCommand));","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"rahhulleee"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"rahhulleee"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"rahhulleee":72}},{"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":"irwynliong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.MEETING_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"irwynliong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.MEETING_DESC_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2017-12-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_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":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":31,"author":{"gitId":"irwynliong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MEETING;","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"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":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25"},{"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":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-06-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-06-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15"},{"lineNumber":49,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":51,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2018-07-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":60,"author":{"gitId":"irwynliong"},"content":" + ADDRESS_DESC_BOB + MEETING_DESC_BOB + TAG_DESC_FRIEND, new AddCommand(expectedPerson));","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15"},{"lineNumber":64,"author":{"gitId":"-"},"content":" Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND)","lastModifiedDate":"2018-07-25"},{"lineNumber":65,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":67,"author":{"gitId":"irwynliong"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"irwynliong"},"content":" + MEETING_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"-"},"content":" new AddCommand(expectedPersonMultipleTags));","lastModifiedDate":"2023-07-14"},{"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":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":74,"author":{"gitId":"-"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-07-14"},{"lineNumber":75,"author":{"gitId":"irwynliong"},"content":" + ADDRESS_DESC_BOB + MEETING_DESC_BOB + TAG_DESC_FRIEND;","lastModifiedDate":"2024-03-21"},{"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":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":83,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":87,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2023-07-14"},{"lineNumber":96,"author":{"gitId":"irwynliong"},"content":" + MEETING_DESC_AMY","lastModifiedDate":"2024-03-21"},{"lineNumber":97,"author":{"gitId":"-"},"content":" + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":98,"author":{"gitId":"irwynliong"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_ADDRESS, PREFIX_EMAIL, PREFIX_PHONE,","lastModifiedDate":"2024-03-21"},{"lineNumber":99,"author":{"gitId":"irwynliong"},"content":" PREFIX_MEETING));","lastModifiedDate":"2024-03-21"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":107,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":109,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":111,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":140,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15"},{"lineNumber":141,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2018-07-25"},{"lineNumber":142,"author":{"gitId":"irwynliong"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2024-03-21"},{"lineNumber":143,"author":{"gitId":"irwynliong"},"content":" + MEETING_DESC_AMY,","lastModifiedDate":"2024-03-21"},{"lineNumber":144,"author":{"gitId":"-"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2017-12-23"},{"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_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":149,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":151,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":155,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":156,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":159,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-03-21"},{"lineNumber":161,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2024-03-21"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":163,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2024-03-21"},{"lineNumber":165,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2024-03-21"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":167,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15"},{"lineNumber":168,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":172,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":173,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":174,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":175,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":176,"author":{"gitId":"irwynliong"},"content":" + MEETING_DESC_BOB","lastModifiedDate":"2024-03-21"},{"lineNumber":177,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":179,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15"},{"lineNumber":180,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":181,"author":{"gitId":"irwynliong"},"content":" + MEETING_DESC_BOB","lastModifiedDate":"2024-03-21"},{"lineNumber":182,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":184,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15"},{"lineNumber":185,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":186,"author":{"gitId":"irwynliong"},"content":" + MEETING_DESC_BOB","lastModifiedDate":"2024-03-21"},{"lineNumber":187,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":189,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15"},{"lineNumber":190,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2017-12-23"},{"lineNumber":191,"author":{"gitId":"irwynliong"},"content":" + MEETING_DESC_BOB","lastModifiedDate":"2024-03-21"},{"lineNumber":192,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":194,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15"},{"lineNumber":195,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":196,"author":{"gitId":"irwynliong"},"content":" + MEETING_DESC_BOB","lastModifiedDate":"2024-03-21"},{"lineNumber":197,"author":{"gitId":"irwynliong"},"content":" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":199,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":200,"author":{"gitId":"irwynliong"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2024-03-21"},{"lineNumber":201,"author":{"gitId":"irwynliong"},"content":" + MEETING_DESC_BOB,","lastModifiedDate":"2024-03-21"},{"lineNumber":202,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":206,"author":{"gitId":"irwynliong"},"content":" + ADDRESS_DESC_BOB + MEETING_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2024-03-21"},{"lineNumber":207,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":209,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"irwynliong":21,"-":188}},{"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":"rahhulleee"},"content":"import seedu.address.logic.commands.ViewCommand;","lastModifiedDate":"2024-03-21"},{"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":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command);","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_edit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2018-03-26"},{"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":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":103,"author":{"gitId":"rahhulleee"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":104,"author":{"gitId":"rahhulleee"},"content":" public void parseCommand_view() throws Exception {","lastModifiedDate":"2024-03-21"},{"lineNumber":105,"author":{"gitId":"rahhulleee"},"content":" ViewCommand command \u003d (ViewCommand) parser.parseCommand(","lastModifiedDate":"2024-03-21"},{"lineNumber":106,"author":{"gitId":"rahhulleee"},"content":" ViewCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2024-03-21"},{"lineNumber":107,"author":{"gitId":"rahhulleee"},"content":" assertEquals(new ViewCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2024-03-21"},{"lineNumber":108,"author":{"gitId":"rahhulleee"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":109,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"-":101,"rahhulleee":8}},{"path":"src/test/java/seedu/address/logic/parser/ViewCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"rahhulleee"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"rahhulleee"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"rahhulleee"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"rahhulleee"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"rahhulleee"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"rahhulleee"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"rahhulleee"},"content":"import seedu.address.logic.commands.ViewCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"rahhulleee"},"content":"public class ViewCommandParserTest {","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"rahhulleee"},"content":" private ViewCommandParser parser \u003d new ViewCommandParser();","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"rahhulleee"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"rahhulleee"},"content":" public void parse_validArgs_returnsViewCommand() {","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"rahhulleee"},"content":" // assuming valid index is provided","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"rahhulleee"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"rahhulleee"},"content":" ViewCommand expectedViewCommand \u003d new ViewCommand(targetIndex);","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"rahhulleee"},"content":" assertParseSuccess(parser, \"1\", expectedViewCommand);","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"rahhulleee"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"rahhulleee"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"rahhulleee"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"rahhulleee"},"content":" // non-integer input","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"rahhulleee"},"content":" assertParseFailure(parser, \"a\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, ViewCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"rahhulleee"},"content":" // negative index","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"rahhulleee"},"content":" assertParseFailure(parser, \"-1\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, ViewCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"rahhulleee"},"content":" // zero index","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"rahhulleee"},"content":" assertParseFailure(parser, \"0\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, ViewCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"rahhulleee"},"content":" // empty input","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"rahhulleee"},"content":" assertParseFailure(parser, \"\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, ViewCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"rahhulleee"},"content":" // spaces only","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"rahhulleee"},"content":" assertParseFailure(parser, \" \", String.format(MESSAGE_INVALID_COMMAND_FORMAT, ViewCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"rahhulleee"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"rahhulleee"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"rahhulleee":41}},{"path":"src/test/java/seedu/address/model/person/MeetingTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"irwynliong"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"irwynliong"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"irwynliong"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"irwynliong"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"irwynliong"},"content":"import java.time.DateTimeException;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"irwynliong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"irwynliong"},"content":"public class MeetingTest {","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"irwynliong"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"irwynliong"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"irwynliong"},"content":" assertThrows(NullPointerException.class, () -\u003e new Meeting(null));","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"irwynliong"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"irwynliong"},"content":" public void constructor_invalidMeeting_throwsDateTimeException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"irwynliong"},"content":" String invalidMeeting \u003d \"\";","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"irwynliong"},"content":" assertThrows(DateTimeException.class, () -\u003e new Meeting(invalidMeeting));","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"irwynliong"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"irwynliong"},"content":" public void isValidMeeting() {","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"irwynliong"},"content":" // null meeting","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"irwynliong"},"content":" assertThrows(NullPointerException.class, () -\u003e Meeting.isValidMeeting(null));","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"irwynliong"},"content":" // missing parts","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"irwynliong"},"content":" assertFalse(Meeting.isValidMeeting(\"2024\")); // missing MM-DD","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"irwynliong"},"content":" assertFalse(Meeting.isValidMeeting(\"2024-01\")); // missing DD","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"irwynliong"},"content":" assertFalse(Meeting.isValidMeeting(\"01-12\")); // missing YYYY","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"irwynliong"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"irwynliong"},"content":" public void equals() {","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"irwynliong"},"content":" Meeting meeting \u003d new Meeting(\"2024-01-01\");","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"irwynliong"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"irwynliong"},"content":" assertTrue(meeting.equals(new Meeting(\"2024-01-01\")));","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"irwynliong"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"irwynliong"},"content":" assertTrue(meeting.equals(meeting));","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"irwynliong"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"irwynliong"},"content":" assertFalse(meeting.equals(null));","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"irwynliong"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"irwynliong"},"content":" assertFalse(meeting.equals(5.0f));","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"irwynliong"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"irwynliong"},"content":" assertFalse(meeting.equals(new Meeting(\"2024-01-02\")));","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"irwynliong"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"irwynliong":53}},{"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":"irwynliong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MEETING_BOB;","lastModifiedDate":"2024-03-21"},{"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":"-"},"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":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18"},{"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":"irwynliong"},"content":" .withAddress(VALID_ADDRESS_BOB).withMeeting(VALID_MEETING_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-03-21"},{"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":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2018-04-19"},{"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":"irwynliong"},"content":" // different meeting -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":90,"author":{"gitId":"irwynliong"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withMeeting(VALID_MEETING_BOB).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":91,"author":{"gitId":"irwynliong"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2024-03-21"},{"lineNumber":92,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":93,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2018-04-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2019-02-23"},{"lineNumber":101,"author":{"gitId":"irwynliong"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", address\u003d\" + ALICE.getAddress()","lastModifiedDate":"2024-03-21"},{"lineNumber":102,"author":{"gitId":"irwynliong"},"content":" + \", meeting\u003d\" + ALICE.getMeeting() + \", tags\u003d\" + ALICE.getTags() + \"}\";","lastModifiedDate":"2024-03-21"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"irwynliong":8,"-":97}},{"path":"src/test/java/seedu/address/model/person/ViewPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"rahhulleee"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"rahhulleee"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"rahhulleee"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"rahhulleee"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"rahhulleee"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"rahhulleee"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"rahhulleee"},"content":"public class ViewPredicateTest {","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"rahhulleee"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"rahhulleee"},"content":" public void equals() {","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"rahhulleee"},"content":" Index firstIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"rahhulleee"},"content":" Person firstPerson \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"rahhulleee"},"content":" ViewPredicate firstPredicate \u003d new ViewPredicate(firstIndex, firstPerson);","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"rahhulleee"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"rahhulleee"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"rahhulleee"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"rahhulleee"},"content":" ViewPredicate firstPredicateCopy \u003d new ViewPredicate(firstIndex, firstPerson);","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"rahhulleee"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"rahhulleee"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"rahhulleee"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"rahhulleee"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"rahhulleee"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"rahhulleee"},"content":" // different index and person -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"rahhulleee"},"content":" Index secondIndex \u003d Index.fromOneBased(2);","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"rahhulleee"},"content":" Person secondPerson \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"rahhulleee"},"content":" ViewPredicate secondPredicate \u003d new ViewPredicate(secondIndex, secondPerson);","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"rahhulleee"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"rahhulleee"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"rahhulleee"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"rahhulleee"},"content":" public void test_samePerson_returnsTrue() {","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"rahhulleee"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"rahhulleee"},"content":" Person person \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"rahhulleee"},"content":" ViewPredicate predicate \u003d new ViewPredicate(index, person);","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"rahhulleee"},"content":" // Test with the exact same person object","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"rahhulleee"},"content":" assertTrue(predicate.test(person));","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"rahhulleee"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"rahhulleee"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"rahhulleee"},"content":" public void test_differentPerson_returnsFalse() {","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"rahhulleee"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"rahhulleee"},"content":" Person person \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"rahhulleee"},"content":" ViewPredicate predicate \u003d new ViewPredicate(index, person);","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"rahhulleee"},"content":" // Test with a different person","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"rahhulleee"},"content":" Person otherPerson \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"rahhulleee"},"content":" assertFalse(predicate.test(otherPerson));","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"rahhulleee"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"rahhulleee"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"rahhulleee":59}},{"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":"irwynliong"},"content":"import seedu.address.model.person.Meeting;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"irwynliong"},"content":" private static final String INVALID_MEETING \u003d \"2024-01\";","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"irwynliong"},"content":" private static final String VALID_MEETING \u003d BENSON.getMeeting().toString();","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"youdonnnn"},"content":" private static final List\u003cJsonAdaptedPolicyTag\u003e VALID_POLICIES \u003d BENSON.getPolicies().stream()","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"youdonnnn"},"content":" .map(JsonAdaptedPolicyTag::new)","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"youdonnnn"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2024-03-21"},{"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":"youdonnnn"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"youdonnnn"},"content":" VALID_MEETING, VALID_TAGS, VALID_POLICIES);","lastModifiedDate":"2024-03-21"},{"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":"irwynliong"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"youdonnnn"},"content":" VALID_MEETING, VALID_TAGS, VALID_POLICIES);","lastModifiedDate":"2024-03-21"},{"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":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"irwynliong"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"youdonnnn"},"content":" VALID_MEETING, VALID_TAGS, VALID_POLICIES);","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","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_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"irwynliong"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"youdonnnn"},"content":" VALID_MEETING, VALID_TAGS, VALID_POLICIES);","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"irwynliong"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"youdonnnn"},"content":" VALID_MEETING, VALID_TAGS, VALID_POLICIES);","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","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_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"irwynliong"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null, VALID_ADDRESS,","lastModifiedDate":"2024-03-21"},{"lineNumber":93,"author":{"gitId":"youdonnnn"},"content":" VALID_MEETING, VALID_TAGS, VALID_POLICIES);","lastModifiedDate":"2024-03-21"},{"lineNumber":94,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-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_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"irwynliong"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_ADDRESS,","lastModifiedDate":"2024-03-21"},{"lineNumber":102,"author":{"gitId":"youdonnnn"},"content":" VALID_MEETING, VALID_TAGS, VALID_POLICIES);","lastModifiedDate":"2024-03-21"},{"lineNumber":103,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","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_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"irwynliong"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, null,","lastModifiedDate":"2024-03-21"},{"lineNumber":110,"author":{"gitId":"youdonnnn"},"content":" VALID_MEETING, VALID_TAGS, VALID_POLICIES);","lastModifiedDate":"2024-03-21"},{"lineNumber":111,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2018-08-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":"irwynliong"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":116,"author":{"gitId":"irwynliong"},"content":" public void toModelType_invalidMeeting_throwsDateTimeException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":117,"author":{"gitId":"irwynliong"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":118,"author":{"gitId":"irwynliong"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-21"},{"lineNumber":119,"author":{"gitId":"youdonnnn"},"content":" INVALID_MEETING, VALID_TAGS, VALID_POLICIES);","lastModifiedDate":"2024-03-21"},{"lineNumber":120,"author":{"gitId":"irwynliong"},"content":" String expectedMessage \u003d Meeting.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-21"},{"lineNumber":121,"author":{"gitId":"irwynliong"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-21"},{"lineNumber":122,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":123,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":124,"author":{"gitId":"irwynliong"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":125,"author":{"gitId":"irwynliong"},"content":" public void toModelType_nullMeeting_throwsIllegalValueException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":126,"author":{"gitId":"irwynliong"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-21"},{"lineNumber":127,"author":{"gitId":"youdonnnn"},"content":" null, VALID_TAGS, VALID_POLICIES);","lastModifiedDate":"2024-03-21"},{"lineNumber":128,"author":{"gitId":"irwynliong"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Meeting.class.getSimpleName());","lastModifiedDate":"2024-03-21"},{"lineNumber":129,"author":{"gitId":"irwynliong"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-21"},{"lineNumber":130,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":132,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13"},{"lineNumber":135,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":136,"author":{"gitId":"youdonnnn"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-03-21"},{"lineNumber":137,"author":{"gitId":"youdonnnn"},"content":" VALID_ADDRESS, VALID_MEETING, invalidTags, VALID_POLICIES);","lastModifiedDate":"2024-03-21"},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, 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":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"youdonnnn":16,"irwynliong":24,"-":101}},{"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.Address;","lastModifiedDate":"2017-12-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-12-23"},{"lineNumber":10,"author":{"gitId":"irwynliong"},"content":"import seedu.address.model.person.Meeting;","lastModifiedDate":"2024-03-21"},{"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":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-12-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-12-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * A utility class to help with building EditPersonDescriptor objects.","lastModifiedDate":"2017-05-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorBuilder {","lastModifiedDate":"2017-05-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private EditPersonDescriptor descriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder() {","lastModifiedDate":"2017-05-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-05-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(EditPersonDescriptor descriptor) {","lastModifiedDate":"2017-05-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" this.descriptor \u003d new EditPersonDescriptor(descriptor);","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":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Returns an {@code EditPersonDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2017-06-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-06-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" descriptor.setName(person.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" descriptor.setPhone(person.getPhone());","lastModifiedDate":"2017-06-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" descriptor.setAddress(person.getAddress());","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"irwynliong"},"content":" descriptor.setMeeting(person.getMeeting());","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" descriptor.setTags(person.getTags());","lastModifiedDate":"2017-06-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":44,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":" * Sets the {@code Phone} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2017-12-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":65,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2017-12-23"},{"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 Address} 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 withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" descriptor.setAddress(new Address(address));","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":"irwynliong"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"irwynliong"},"content":" * Sets the {@code Meeting} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"irwynliong"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"irwynliong"},"content":" public EditPersonDescriptorBuilder withMeeting(String meeting) {","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"irwynliong"},"content":" descriptor.setMeeting(new Meeting(meeting));","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"irwynliong"},"content":" return this;","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":86,"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":87,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2017-12-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2017-12-23"},{"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":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05"},{"lineNumber":96,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":98,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"irwynliong":11,"-":87}},{"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":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18"},{"lineNumber":8,"author":{"gitId":"irwynliong"},"content":"import seedu.address.model.person.Meeting;","lastModifiedDate":"2024-03-21"},{"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":"youdonnnn"},"content":"import seedu.address.model.person.Policy;","lastModifiedDate":"2024-03-21"},{"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":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05"},{"lineNumber":25,"author":{"gitId":"irwynliong"},"content":" public static final String DEFAULT_MEETING \u003d \"2024-01-01\";","lastModifiedDate":"2024-03-21"},{"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":"irwynliong"},"content":" private Meeting meeting;","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20"},{"lineNumber":33,"author":{"gitId":"youdonnnn"},"content":" private Set\u003cPolicy\u003e policies;","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"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":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20"},{"lineNumber":41,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20"},{"lineNumber":42,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20"},{"lineNumber":43,"author":{"gitId":"irwynliong"},"content":" meeting \u003d new Meeting(DEFAULT_MEETING);","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10"},{"lineNumber":51,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20"},{"lineNumber":52,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20"},{"lineNumber":53,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"irwynliong"},"content":" meeting \u003d personToCopy.getMeeting();","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11"},{"lineNumber":59,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":64,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":68,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":69,"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":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String ... tags) {","lastModifiedDate":"2017-08-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2017-12-20"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":80,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":95,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":96,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20"},{"lineNumber":97,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":100,"author":{"gitId":"irwynliong"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":101,"author":{"gitId":"irwynliong"},"content":" * Sets the {@code Meeting} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-21"},{"lineNumber":102,"author":{"gitId":"irwynliong"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":103,"author":{"gitId":"irwynliong"},"content":" public PersonBuilder withMeeting(String meeting) {","lastModifiedDate":"2024-03-21"},{"lineNumber":104,"author":{"gitId":"irwynliong"},"content":" this.meeting \u003d new Meeting(meeting);","lastModifiedDate":"2024-03-21"},{"lineNumber":105,"author":{"gitId":"irwynliong"},"content":" return this;","lastModifiedDate":"2024-03-21"},{"lineNumber":106,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":107,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05"},{"lineNumber":109,"author":{"gitId":"youdonnnn"},"content":" return new Person(name, phone, email, address, meeting, tags, policies);","lastModifiedDate":"2024-03-21"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03"}],"authorContributionMap":{"youdonnnn":3,"irwynliong":14,"-":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":"irwynliong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MEETING;","lastModifiedDate":"2024-03-21"},{"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":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" sb.append(PREFIX_ADDRESS + person.getAddress().value + \" \");","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"irwynliong"},"content":" sb.append(PREFIX_MEETING + person.getMeeting().value + \" \");","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" person.getTags().stream().forEach(","lastModifiedDate":"2017-05-09"},{"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":"-"},"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":"irwynliong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26"},{"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":"-"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":55,"author":{"gitId":"irwynliong"},"content":" descriptor.getMeeting().ifPresent(meeting -\u003e sb.append(PREFIX_MEETING).append(meeting.value).append(\" \"));","lastModifiedDate":"2024-03-21"},{"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":{"irwynliong":4,"-":62}},{"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":"irwynliong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MEETING_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"irwynliong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MEETING_BOB;","lastModifiedDate":"2024-03-21"},{"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":"-"},"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":"-"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2017-04-05"},{"lineNumber":30,"author":{"gitId":"irwynliong"},"content":" .withPhone(\"94351253\").withMeeting(\"2024-01-12\")","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" .withTags(\"friends\").build();","lastModifiedDate":"2016-09-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10"},{"lineNumber":33,"author":{"gitId":"-"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2017-09-21"},{"lineNumber":34,"author":{"gitId":"irwynliong"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\").withMeeting(\"2024-01-13\")","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" .withTags(\"owesMoney\", \"friends\").build();","lastModifiedDate":"2016-09-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2018-01-10"},{"lineNumber":37,"author":{"gitId":"irwynliong"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\").withMeeting(\"2024-01-14\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2018-01-10"},{"lineNumber":39,"author":{"gitId":"irwynliong"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\").withMeeting(\"2024-01-15\")","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"irwynliong"},"content":" .withTags(\"friends\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2018-01-10"},{"lineNumber":42,"author":{"gitId":"irwynliong"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\").withMeeting(\"2024-01-16\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2018-01-10"},{"lineNumber":44,"author":{"gitId":"irwynliong"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\").withMeeting(\"2024-01-17\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2018-01-10"},{"lineNumber":46,"author":{"gitId":"irwynliong"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\").withMeeting(\"2024-01-18\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2018-01-10"},{"lineNumber":50,"author":{"gitId":"irwynliong"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\").withMeeting(\"2024-01-18\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2018-01-10"},{"lineNumber":52,"author":{"gitId":"irwynliong"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\").withMeeting(\"2024-01-19\").build();","lastModifiedDate":"2024-03-21"},{"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":"-"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2018-01-10"},{"lineNumber":56,"author":{"gitId":"irwynliong"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withMeeting(VALID_MEETING_AMY)","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"irwynliong"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2018-01-10"},{"lineNumber":59,"author":{"gitId":"irwynliong"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"irwynliong"},"content":" .withMeeting(VALID_MEETING_BOB).withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2017-09-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05"},{"lineNumber":71,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05"},{"lineNumber":72,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10"},{"lineNumber":73,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04"},{"lineNumber":81,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13"}],"authorContributionMap":{"irwynliong":16,"-":65}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"irwynliong"},"content":"[![CI Status](https://github.com/AY2324S2-CS2103T-W09-4/tp/actions/workflows/gradle.yml/badge.svg?branch\u003dmaster)](https://github.com/AY2324S2-CS2103T-W09-4/tp/actions/workflows/gradle.yml/)[![codecov](https://codecov.io/gh/AY2324S2-CS2103T-W09-4/tp/graph/badge.svg?token\u003dCBZT4IJB8J)](https://codecov.io/gh/AY2324S2-CS2103T-W09-4/tp)","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":3,"author":{"gitId":"jimseah-0116"},"content":"# InsureBook","lastModifiedDate":"2024-03-06"},{"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":"jimseah-0116"},"content":"## Description","lastModifiedDate":"2024-03-06"},{"lineNumber":8,"author":{"gitId":"jimseah-0116"},"content":"``InsureBook`` is a simple desktop application that allows insurance agents to easily keep track of potential and existing clients, their policies, and scheduled appointment dates. \u003cbr\u003e It is a GUI application with user interactions that are mostly CLI-based.","lastModifiedDate":"2024-03-06"},{"lineNumber":9,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":10,"author":{"gitId":"jimseah-0116"},"content":"## Features","lastModifiedDate":"2024-03-06"},{"lineNumber":11,"author":{"gitId":"jimseah-0116"},"content":"* Add \u0026 delete clients\u0027 information (Name, phone number, email address, policy information)","lastModifiedDate":"2024-03-06"},{"lineNumber":12,"author":{"gitId":"jimseah-0116"},"content":"* View list of clients in the main GUI window, including their name, phone number, and email address","lastModifiedDate":"2024-03-06"},{"lineNumber":13,"author":{"gitId":"jimseah-0116"},"content":"* View a client\u0027s policy information in a separate pop-up window","lastModifiedDate":"2024-03-06"},{"lineNumber":14,"author":{"gitId":"jimseah-0116"},"content":"* Track scheduled meetings and appointments","lastModifiedDate":"2024-03-06"},{"lineNumber":15,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":16,"author":{"gitId":"jimseah-0116"},"content":"## Site Map","lastModifiedDate":"2024-03-06"},{"lineNumber":17,"author":{"gitId":"jimseah-0116"},"content":"* **[InsureBook Product Website](https://ay2324s2-cs2103t-w09-4.github.io/tp/)**.","lastModifiedDate":"2024-03-06"},{"lineNumber":18,"author":{"gitId":"jimseah-0116"},"content":"* **[InsureBook - User Guide](https://ay2324s2-cs2103t-w09-4.github.io/tp/UserGuide.html)**","lastModifiedDate":"2024-03-06"},{"lineNumber":19,"author":{"gitId":"jimseah-0116"},"content":"* **[InsureBook - Developer Guide](https://ay2324s2-cs2103t-w09-4.github.io/tp/DeveloperGuide.html)**","lastModifiedDate":"2024-03-06"},{"lineNumber":20,"author":{"gitId":"jimseah-0116"},"content":"* **[InsureBook - About Us](https://ay2324s2-cs2103t-w09-4.github.io/tp/AboutUs.html)**","lastModifiedDate":"2024-03-06"},{"lineNumber":21,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":22,"author":{"gitId":"jimseah-0116"},"content":"## Credits \u0026 Acknowledgements","lastModifiedDate":"2024-03-06"},{"lineNumber":23,"author":{"gitId":"jimseah-0116"},"content":"- This project was made as part of CS2103T in AY23/24 S2.","lastModifiedDate":"2024-03-06"},{"lineNumber":24,"author":{"gitId":"jimseah-0116"},"content":"- This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"jimseah-0116":20,"irwynliong":1,"-":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":"Greg-Tan"},"content":" archiveFileName \u003d \u0027InsureBook.jar\u0027","lastModifiedDate":"2024-03-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":{"Greg-Tan":1,"-":71}},{"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":"","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":"irwynliong"},"content":"### Rahul","lastModifiedDate":"2024-03-07"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"rahhulleee"},"content":"\u003cimg src\u003d\"images/rahhulleee.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-07"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"irwynliong"},"content":"[[github](https://github.com/rahhulleee)]","lastModifiedDate":"2024-03-07"},{"lineNumber":18,"author":{"gitId":"irwynliong"},"content":"[[portfolio](team/rahul.md)]","lastModifiedDate":"2024-03-07"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"rahhulleee"},"content":"* Role: Developer","lastModifiedDate":"2024-03-07"},{"lineNumber":21,"author":{"gitId":"rahhulleee"},"content":" Responsibilities: Testing","lastModifiedDate":"2024-03-07"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"Greg-Tan"},"content":"### Greg Tan","lastModifiedDate":"2024-03-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"Greg-Tan"},"content":"\u003cimg src\u003d\"images/greg-tan.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-07"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"Greg-Tan"},"content":"[[github](http://github.com/Greg-Tan)]","lastModifiedDate":"2024-03-05"},{"lineNumber":28,"author":{"gitId":"Greg-Tan"},"content":"[[portfolio](team/greg.md)]","lastModifiedDate":"2024-03-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"Greg-Tan"},"content":"* Role: Developer","lastModifiedDate":"2024-03-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":"* Responsibilities: UI","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"youdonnnn"},"content":"### Loh Yu Tong","lastModifiedDate":"2024-03-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"youdonnnn"},"content":"\u003cimg src\u003d\"images/youdonnnn.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"youdonnnn"},"content":"[[github](https://github.com/youdonnnn)]","lastModifiedDate":"2024-03-04"},{"lineNumber":39,"author":{"gitId":"irwynliong"},"content":"[[portfolio](team/udon.md)]","lastModifiedDate":"2024-03-07"},{"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":"irwynliong"},"content":"### Jim Seah","lastModifiedDate":"2024-03-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"irwynliong"},"content":"\u003cimg src\u003d\"images/jimseah-0116.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"irwynliong"},"content":"[[github](https://github.com/jimseah-0116)]","lastModifiedDate":"2024-03-07"},{"lineNumber":49,"author":{"gitId":"irwynliong"},"content":"[[portfolio](team/jim.md)]","lastModifiedDate":"2024-03-07"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"irwynliong"},"content":"* Responsibilities: Documentation","lastModifiedDate":"2024-03-07"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"irwynliong"},"content":"### Irwyn Liong","lastModifiedDate":"2024-03-07"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"irwynliong"},"content":"\u003cimg src\u003d\"images/irwynliong.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"irwynliong"},"content":"[[github](http://github.com/irwynliong)]","lastModifiedDate":"2024-03-05"},{"lineNumber":59,"author":{"gitId":"irwynliong"},"content":"[[portfolio](team/irwyn.md)]","lastModifiedDate":"2024-03-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"irwynliong"},"content":"* Responsibilities: Deliverables \u0026 Integration","lastModifiedDate":"2024-03-05"}],"authorContributionMap":{"youdonnnn":3,"irwynliong":14,"Greg-Tan":5,"-":37,"rahhulleee":3}},{"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":"irwynliong"},"content":"# InsureBook Developer Guide","lastModifiedDate":"2024-03-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":"irwynliong"},"content":"**`Main`** (consisting of classes [`Main`](https://github.com/AY2324S2-CS2103T-W09-4/tp/blob/master/src/main/java/seedu/address/Main.java) and [`MainApp`](https://github.com/AY2324S2-CS2103T-W09-4/tp/blob/master/src/main/java/seedu/address/MainApp.java)) is in charge of the app launch and shut down.","lastModifiedDate":"2024-03-06"},{"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":"irwynliong"},"content":"The **API** of this component is specified in [`Ui.java`](https://github.com/AY2324S2-CS2103T-W09-4/tp/blob/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2024-03-06"},{"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":"irwynliong"},"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/AY2324S2-CS2103T-W09-4/tp/blob/master/src/main/java/seedu/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/AY2324S2-CS2103T-W09-4/tp/blob/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2024-03-06"},{"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":"irwynliong"},"content":"**API** : [`Logic.java`](https://github.com/AY2324S2-CS2103T-W09-4/tp/blob/master/src/main/java/seedu/address/logic/Logic.java)","lastModifiedDate":"2024-03-06"},{"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 continues till 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).\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-02-09"},{"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":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12"},{"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":"irwynliong"},"content":"**API** : [`Model.java`](https://github.com/AY2324S2-CS2103T-W09-4/tp/blob/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2024-03-06"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"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":"2021-07-31"},{"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":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":133,"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":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":135,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"irwynliong"},"content":"**API** : [`Storage.java`](https://github.com/AY2324S2-CS2103T-W09-4/tp/blob/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2024-03-06"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"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":148,"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":149,"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":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","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":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"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":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"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":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"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":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"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":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"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":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"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":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"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":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":191,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"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":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":198,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"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":201,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"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":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":213,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":217,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":219,"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":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":223,"author":{"gitId":"irwynliong"},"content":"**Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone InsureBook 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":"2024-03-06"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"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":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"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":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","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":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":264,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":265,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":266,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":267,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"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":"irwynliong"},"content":"## **Appendix A: Requirements**","lastModifiedDate":"2024-03-06"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"irwynliong"},"content":"**Target user profile**: An insurance Agent who","lastModifiedDate":"2024-03-05"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":277,"author":{"gitId":"irwynliong"},"content":"* has a need to manage a significant number of contacts and their policies","lastModifiedDate":"2024-03-05"},{"lineNumber":278,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23"},{"lineNumber":280,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26"},{"lineNumber":281,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23"},{"lineNumber":282,"author":{"gitId":"irwynliong"},"content":"* Needs a one application to schedule his appointments and reminds him about it","lastModifiedDate":"2024-03-05"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":284,"author":{"gitId":"irwynliong"},"content":"**Value proposition**: Assist Insurance Agent keep track of their clients and new clients.","lastModifiedDate":"2024-03-05"},{"lineNumber":285,"author":{"gitId":"irwynliong"},"content":"This provides them with a 1 application to add details about their clients insurance plans and","lastModifiedDate":"2024-03-05"},{"lineNumber":286,"author":{"gitId":"irwynliong"},"content":"set reminders for meetups with clients.","lastModifiedDate":"2024-03-05"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":288,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":289,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":291,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":293,"author":{"gitId":"irwynliong"},"content":"| Priority | As a …​ | I can …​ | So that I can…​ |","lastModifiedDate":"2024-03-05"},{"lineNumber":294,"author":{"gitId":"irwynliong"},"content":"|----------|------------------------------|---------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------|","lastModifiedDate":"2024-03-06"},{"lineNumber":295,"author":{"gitId":"irwynliong"},"content":"| `* * *` | insurance agent | add clients contact details into the address book | keep track of my clients |","lastModifiedDate":"2024-03-06"},{"lineNumber":296,"author":{"gitId":"irwynliong"},"content":"| `* * *` | insurance agent | delete clients contact details in the address book | remove previous clients |","lastModifiedDate":"2024-03-06"},{"lineNumber":297,"author":{"gitId":"irwynliong"},"content":"| `* * *` | insurance agent | edit details of the contact | update clients detail |","lastModifiedDate":"2024-03-06"},{"lineNumber":298,"author":{"gitId":"irwynliong"},"content":"| `* * *` | insurance agent | search for contact details | find client\u0027s information |","lastModifiedDate":"2024-03-06"},{"lineNumber":299,"author":{"gitId":"irwynliong"},"content":"| `* * *` | insurance agent | add clients insurances and policies | keep track of my clients policies and insurances |","lastModifiedDate":"2024-03-06"},{"lineNumber":300,"author":{"gitId":"irwynliong"},"content":"| `* *` | new insurance agent | view all commands | figure out how to use the application |","lastModifiedDate":"2024-03-06"},{"lineNumber":301,"author":{"gitId":"irwynliong"},"content":"| `* *` | organised insurance agent | tag different clients in the contact details as different tiers | focus on bigger clients, i.e. Clients with higher premium policies will have higher priority over others |","lastModifiedDate":"2024-03-06"},{"lineNumber":302,"author":{"gitId":"irwynliong"},"content":"| `* * *` | insurance agent\t | delete clients insurances and policies | remove client\u0027s previous policies |","lastModifiedDate":"2024-03-06"},{"lineNumber":303,"author":{"gitId":"irwynliong"},"content":"| `*` | insurance agent\t | untag clients in contact details | organise my list of client\u0027s contact |","lastModifiedDate":"2024-03-06"},{"lineNumber":304,"author":{"gitId":"irwynliong"},"content":"| `* *` | insurance agent\t | search for clients with specified policies\t | keep track of who has the specified policies which may have an update |","lastModifiedDate":"2024-03-06"},{"lineNumber":305,"author":{"gitId":"irwynliong"},"content":"| `* *` | insurance agent\t | edit details of the client\u0027s policies and insurances\t | update myself on any changes made when my clients\u0027 update their policies |","lastModifiedDate":"2024-03-06"},{"lineNumber":306,"author":{"gitId":"irwynliong"},"content":"| `*` | experienced insurance agent\t | make notes about my clients\t | remember details about my clients and better connect to them and their needs when we meet up |","lastModifiedDate":"2024-03-06"},{"lineNumber":307,"author":{"gitId":"irwynliong"},"content":"| `*` | insurance agent\t | automatically calculate my clients\u0027 total coverages\t | easily check if they have any shortfall in coverage |","lastModifiedDate":"2024-03-06"},{"lineNumber":308,"author":{"gitId":"irwynliong"},"content":"| `* * *` | forgetful insurance agent | \tadd meeting date/time in the address book | organise my day and meeting time with the client |","lastModifiedDate":"2024-03-06"},{"lineNumber":309,"author":{"gitId":"irwynliong"},"content":"| `*` | organised insurance agent | \tform a organisational chart of my clients\t | easily see which of my clients are giving more referrals |","lastModifiedDate":"2024-03-06"},{"lineNumber":310,"author":{"gitId":"irwynliong"},"content":"| `* *` | organised insurance agent | \tview upcoming meetings in a dashboard\t | anticipate and prepare for upcoming meetings |","lastModifiedDate":"2024-03-06"},{"lineNumber":311,"author":{"gitId":"irwynliong"},"content":"| `* * *` | forgetful insurance agent | \tset weekly/monthly reminders to set up meetings with particular clients\t | I won\u0027t forget about not setting up meetings with my clients to check on their life updates and review their policies |","lastModifiedDate":"2024-03-06"},{"lineNumber":312,"author":{"gitId":"irwynliong"},"content":"| `* * *` | organised insurance agent | \thave todo lists for each of my clients\t | keep track of the things I have to do for each client |","lastModifiedDate":"2024-03-06"},{"lineNumber":313,"author":{"gitId":"irwynliong"},"content":"| `* * *` | forgetful insurance agent | \tadd deadlines to tasks in my clients\u0027 todo list\t | be aware of when these tasks need to be completed |","lastModifiedDate":"2024-03-06"},{"lineNumber":314,"author":{"gitId":"irwynliong"},"content":"| `* *` | efficient insurance agent | \tsort my tasks by deadline\t | quickly see my most urgent tasks at a glance and get them done first |","lastModifiedDate":"2024-03-06"},{"lineNumber":315,"author":{"gitId":"irwynliong"},"content":"| `* *` | organised insurance agent | \tsort my clients by their insurance companies\t | group clients under the same company together and possibly complete overlapping tasks involving the company |","lastModifiedDate":"2024-03-06"},{"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":"irwynliong"},"content":"(For all use cases below, the **System** is the `InsureBook` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2024-03-06"},{"lineNumber":320,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":321,"author":{"gitId":"irwynliong"},"content":"**Use case: UC01 - View help**","lastModifiedDate":"2024-03-06"},{"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":"irwynliong"},"content":"1. User requests to see the help.","lastModifiedDate":"2024-03-06"},{"lineNumber":326,"author":{"gitId":"irwynliong"},"content":"2. InsureBook opens up the help window, displaying the command summary.","lastModifiedDate":"2024-03-06"},{"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":"irwynliong"},"content":"*a. At any time, user inputs an invalid command/syntax.","lastModifiedDate":"2024-03-06"},{"lineNumber":333,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":334,"author":{"gitId":"irwynliong"},"content":"*a1. InsureBook shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":335,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":336,"author":{"gitId":"irwynliong"},"content":"**Use case: UC02 - Add a client**","lastModifiedDate":"2024-03-06"},{"lineNumber":337,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":338,"author":{"gitId":"irwynliong"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":339,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":340,"author":{"gitId":"irwynliong"},"content":"1. User requests to add a new client.","lastModifiedDate":"2024-03-06"},{"lineNumber":341,"author":{"gitId":"irwynliong"},"content":"2. InsureBook adds the new client to the list.","lastModifiedDate":"2024-03-06"},{"lineNumber":342,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":343,"author":{"gitId":"irwynliong"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":344,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":345,"author":{"gitId":"irwynliong"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":346,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":347,"author":{"gitId":"irwynliong"},"content":"* 1a. The provided field(s) is/are invalid.","lastModifiedDate":"2024-03-06"},{"lineNumber":348,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":349,"author":{"gitId":"irwynliong"},"content":"\t* 1a1. InsureBook shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":350,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":351,"author":{"gitId":"irwynliong"},"content":"\t Use case resumes from step 1.","lastModifiedDate":"2024-03-06"},{"lineNumber":352,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":353,"author":{"gitId":"irwynliong"},"content":"* 1b. Compulsory field(s) is/are missing.","lastModifiedDate":"2024-03-06"},{"lineNumber":354,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":355,"author":{"gitId":"irwynliong"},"content":"\t* 1b1. InsureBook shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":356,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":357,"author":{"gitId":"irwynliong"},"content":"\t Use case resumes from step 1.","lastModifiedDate":"2024-03-06"},{"lineNumber":358,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":359,"author":{"gitId":"irwynliong"},"content":"*a. At any time, user inputs an invalid command/syntax.","lastModifiedDate":"2024-03-06"},{"lineNumber":360,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":361,"author":{"gitId":"irwynliong"},"content":"*a1. InsureBook shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":362,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":363,"author":{"gitId":"irwynliong"},"content":"**Use case: UC03 - List all clients**","lastModifiedDate":"2024-03-06"},{"lineNumber":364,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":365,"author":{"gitId":"irwynliong"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":366,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":367,"author":{"gitId":"irwynliong"},"content":"1. User requests to show all clients in the list.","lastModifiedDate":"2024-03-06"},{"lineNumber":368,"author":{"gitId":"irwynliong"},"content":"2. InsureBook shows all clients in the list.","lastModifiedDate":"2024-03-06"},{"lineNumber":369,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":370,"author":{"gitId":"irwynliong"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":371,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":372,"author":{"gitId":"irwynliong"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":373,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":374,"author":{"gitId":"irwynliong"},"content":"*a. At any time, user inputs an invalid command/syntax.","lastModifiedDate":"2024-03-06"},{"lineNumber":375,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":376,"author":{"gitId":"irwynliong"},"content":"*a1. InsureBook shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":377,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":378,"author":{"gitId":"irwynliong"},"content":"**Use case: UC04 - Edit a client**","lastModifiedDate":"2024-03-06"},{"lineNumber":379,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":380,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":381,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":382,"author":{"gitId":"irwynliong"},"content":"1. User requests to \u003cu\u003elist all clients\u003c/u\u003e(UC03).","lastModifiedDate":"2024-03-06"},{"lineNumber":383,"author":{"gitId":"irwynliong"},"content":"2. InsureBook displays the list of clients.","lastModifiedDate":"2024-03-06"},{"lineNumber":384,"author":{"gitId":"irwynliong"},"content":"3. User requests to edit the fields of a specific client in the list.","lastModifiedDate":"2024-03-06"},{"lineNumber":385,"author":{"gitId":"irwynliong"},"content":"4. InsureBook edits the fields of the client.","lastModifiedDate":"2024-03-06"},{"lineNumber":386,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":387,"author":{"gitId":"irwynliong"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":388,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":389,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":390,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":391,"author":{"gitId":"irwynliong"},"content":"* 1a. The list is empty.","lastModifiedDate":"2024-03-06"},{"lineNumber":392,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":393,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":394,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":395,"author":{"gitId":"-"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2020-05-23"},{"lineNumber":396,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":397,"author":{"gitId":"irwynliong"},"content":"\t* 3a1. InsureBook shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":398,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":399,"author":{"gitId":"irwynliong"},"content":"\t Use case resumes at step 3.","lastModifiedDate":"2024-03-06"},{"lineNumber":400,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":401,"author":{"gitId":"irwynliong"},"content":"* 3b. The new field value(s) is/are invalid.","lastModifiedDate":"2024-03-06"},{"lineNumber":402,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":403,"author":{"gitId":"irwynliong"},"content":"\t* 3b1. InsureBook shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":404,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":405,"author":{"gitId":"irwynliong"},"content":"\t Use case resumes at step 3.","lastModifiedDate":"2024-03-06"},{"lineNumber":406,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":407,"author":{"gitId":"irwynliong"},"content":"* 3c. No fields to edit are provided.","lastModifiedDate":"2024-03-06"},{"lineNumber":408,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":409,"author":{"gitId":"irwynliong"},"content":"\t* 3c1. InsureBook shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":410,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":411,"author":{"gitId":"irwynliong"},"content":"\t Use case resumes at step 3.","lastModifiedDate":"2024-03-06"},{"lineNumber":412,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":413,"author":{"gitId":"irwynliong"},"content":"*a. At any time, user inputs an invalid command/syntax.","lastModifiedDate":"2024-03-06"},{"lineNumber":414,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":415,"author":{"gitId":"irwynliong"},"content":"*a1. InsureBook shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":416,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":417,"author":{"gitId":"irwynliong"},"content":"**Use case: UC05 - Find a client**","lastModifiedDate":"2024-03-06"},{"lineNumber":418,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":419,"author":{"gitId":"irwynliong"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":420,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":421,"author":{"gitId":"irwynliong"},"content":"1. User requests to find all clients with names matching the input keyword(s).","lastModifiedDate":"2024-03-06"},{"lineNumber":422,"author":{"gitId":"irwynliong"},"content":"2. InsureBook shows all clients with matching names.","lastModifiedDate":"2024-03-06"},{"lineNumber":423,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":424,"author":{"gitId":"irwynliong"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":425,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":426,"author":{"gitId":"irwynliong"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":427,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":428,"author":{"gitId":"irwynliong"},"content":"* 1a. No keywords are provided.","lastModifiedDate":"2024-03-06"},{"lineNumber":429,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":430,"author":{"gitId":"irwynliong"},"content":"\t* 1a1. InsureBook shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":431,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":432,"author":{"gitId":"irwynliong"},"content":"\t Use case resumes from step 1.","lastModifiedDate":"2024-03-06"},{"lineNumber":433,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":434,"author":{"gitId":"irwynliong"},"content":"*a. At any time, user inputs an invalid command/syntax.","lastModifiedDate":"2024-03-06"},{"lineNumber":435,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":436,"author":{"gitId":"irwynliong"},"content":"*a1. InsureBook shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":437,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":438,"author":{"gitId":"irwynliong"},"content":"**Use case: UC06 - Filter client by tag**","lastModifiedDate":"2024-03-06"},{"lineNumber":439,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":440,"author":{"gitId":"irwynliong"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":441,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":442,"author":{"gitId":"irwynliong"},"content":"1. User requests to find all clients with specific tag(s).","lastModifiedDate":"2024-03-06"},{"lineNumber":443,"author":{"gitId":"irwynliong"},"content":"2. InsureBook shows all clients with a matching tag.","lastModifiedDate":"2024-03-06"},{"lineNumber":444,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":445,"author":{"gitId":"irwynliong"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":446,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":447,"author":{"gitId":"irwynliong"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":448,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":449,"author":{"gitId":"irwynliong"},"content":"* 1a. No tags are provided.","lastModifiedDate":"2024-03-06"},{"lineNumber":450,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":451,"author":{"gitId":"irwynliong"},"content":"\t* 1a1. InsureBook shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":452,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":453,"author":{"gitId":"irwynliong"},"content":"\t Use case resumes from step 1.","lastModifiedDate":"2024-03-06"},{"lineNumber":454,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":455,"author":{"gitId":"irwynliong"},"content":"*a. At any time, user inputs an invalid command/syntax.","lastModifiedDate":"2024-03-06"},{"lineNumber":456,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":457,"author":{"gitId":"irwynliong"},"content":"*a1. InsureBook shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":458,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":459,"author":{"gitId":"irwynliong"},"content":"**Use case: UC07 - Delete a client**","lastModifiedDate":"2024-03-06"},{"lineNumber":460,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":461,"author":{"gitId":"irwynliong"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":462,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":463,"author":{"gitId":"irwynliong"},"content":"1. User requests to \u003cu\u003elist all clients\u003c/u\u003e (UC03).","lastModifiedDate":"2024-03-06"},{"lineNumber":464,"author":{"gitId":"irwynliong"},"content":"2. User requests to delete a specific client in the list.","lastModifiedDate":"2024-03-06"},{"lineNumber":465,"author":{"gitId":"irwynliong"},"content":"3. InsureBook deletes the clients.","lastModifiedDate":"2024-03-06"},{"lineNumber":466,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":467,"author":{"gitId":"irwynliong"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":468,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":469,"author":{"gitId":"irwynliong"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":470,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":471,"author":{"gitId":"irwynliong"},"content":"* 1a. The list is empty.","lastModifiedDate":"2024-03-06"},{"lineNumber":472,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":473,"author":{"gitId":"irwynliong"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":474,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":475,"author":{"gitId":"irwynliong"},"content":"* 2a. The given index is invalid.","lastModifiedDate":"2024-03-06"},{"lineNumber":476,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":477,"author":{"gitId":"irwynliong"},"content":"\t* 2a1. InsureBook shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":478,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":479,"author":{"gitId":"-"},"content":"\t Use case resumes at step 2.","lastModifiedDate":"2020-05-23"},{"lineNumber":480,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":481,"author":{"gitId":"irwynliong"},"content":"*a. At any time, user inputs an invalid command/syntax.","lastModifiedDate":"2024-03-06"},{"lineNumber":482,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":483,"author":{"gitId":"irwynliong"},"content":"*a1. InsureBook shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":484,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":485,"author":{"gitId":"irwynliong"},"content":"**Use case: UC08 - Clear all entries**","lastModifiedDate":"2024-03-06"},{"lineNumber":486,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":487,"author":{"gitId":"irwynliong"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":488,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":489,"author":{"gitId":"irwynliong"},"content":"1. User requests to clear all entries.","lastModifiedDate":"2024-03-06"},{"lineNumber":490,"author":{"gitId":"irwynliong"},"content":"2. InsureBook asks for confirmation to clear all entries.","lastModifiedDate":"2024-03-06"},{"lineNumber":491,"author":{"gitId":"irwynliong"},"content":"3. User confirms to clear all entries.","lastModifiedDate":"2024-03-06"},{"lineNumber":492,"author":{"gitId":"irwynliong"},"content":"4. InsureBook clears all entries.","lastModifiedDate":"2024-03-06"},{"lineNumber":493,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":494,"author":{"gitId":"irwynliong"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":495,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":496,"author":{"gitId":"irwynliong"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":497,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":498,"author":{"gitId":"irwynliong"},"content":"* 2a. Confirmation is not given.","lastModifiedDate":"2024-03-06"},{"lineNumber":499,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":500,"author":{"gitId":"irwynliong"},"content":"\t* 2a1. InsureBook cancels the clear action.","lastModifiedDate":"2024-03-06"},{"lineNumber":501,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":502,"author":{"gitId":"irwynliong"},"content":"\t Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":503,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":504,"author":{"gitId":"irwynliong"},"content":"*a. At any time, user inputs an invalid command/syntax.","lastModifiedDate":"2024-03-06"},{"lineNumber":505,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":506,"author":{"gitId":"irwynliong"},"content":"*a1. InsureBook shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":507,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":508,"author":{"gitId":"irwynliong"},"content":"**Use case UC09: Exit program**","lastModifiedDate":"2024-03-06"},{"lineNumber":509,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":510,"author":{"gitId":"irwynliong"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":511,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":512,"author":{"gitId":"irwynliong"},"content":"1. User requests to exit the program.","lastModifiedDate":"2024-03-06"},{"lineNumber":513,"author":{"gitId":"irwynliong"},"content":"2. InsureBook exits.","lastModifiedDate":"2024-03-06"},{"lineNumber":514,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":515,"author":{"gitId":"irwynliong"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":516,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":517,"author":{"gitId":"irwynliong"},"content":"*a. At any time, user inputs an invalid command/syntax.","lastModifiedDate":"2024-03-06"},{"lineNumber":518,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":519,"author":{"gitId":"irwynliong"},"content":"*a1. InsureBook shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":520,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":521,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":522,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":523,"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":524,"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":525,"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":526,"author":{"gitId":"irwynliong"},"content":"4. Should work without internet connection.","lastModifiedDate":"2024-03-06"},{"lineNumber":527,"author":{"gitId":"irwynliong"},"content":"5.\tFor any command, the system should respond within 2 seconds.","lastModifiedDate":"2024-03-06"},{"lineNumber":528,"author":{"gitId":"irwynliong"},"content":"6. Should provide comprehensive documentation for users to learn how to use the command-line interface effectively.","lastModifiedDate":"2024-03-06"},{"lineNumber":529,"author":{"gitId":"irwynliong"},"content":"7. Should provide clear and user-friendly error messages, guiding users on how to rectify issues.","lastModifiedDate":"2024-03-06"},{"lineNumber":530,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":531,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":532,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":533,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":534,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09"},{"lineNumber":535,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23"},{"lineNumber":536,"author":{"gitId":"irwynliong"},"content":"* **CLI**: Command Line Interface","lastModifiedDate":"2024-03-06"},{"lineNumber":537,"author":{"gitId":"irwynliong"},"content":"* **GUI**: Graphical User Interface","lastModifiedDate":"2024-03-06"},{"lineNumber":538,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":539,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":540,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":541,"author":{"gitId":"irwynliong"},"content":"## **Appendix B: Instructions for manual testing**","lastModifiedDate":"2024-03-06"},{"lineNumber":542,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":543,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":544,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":545,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":546,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":547,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":548,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":549,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":550,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":551,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":552,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":553,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12"},{"lineNumber":554,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":555,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":556,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":557,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":558,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":559,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":560,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":561,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":562,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":563,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":564,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":565,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":566,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":567,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":568,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":569,"author":{"gitId":"rahhulleee"},"content":"\t 1. Download the JAR file and copy into an empty folder. See the [Quick Start](UserGuide.md#quick-start) section in the User Guide for the link to download the JAR file.","lastModifiedDate":"2024-03-06"},{"lineNumber":570,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":571,"author":{"gitId":"rahhulleee"},"content":"\t 2. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum.","lastModifiedDate":"2024-03-06"},{"lineNumber":572,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":573,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":574,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":575,"author":{"gitId":"rahhulleee"},"content":"2. Saving window preferences","lastModifiedDate":"2024-03-06"},{"lineNumber":576,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":577,"author":{"gitId":"-"},"content":"\t1. Resize the window to an optimum size. Move the window to a different location. Close the window.","lastModifiedDate":"2020-05-23"},{"lineNumber":578,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":579,"author":{"gitId":"rahhulleee"},"content":"\t2. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":580,"author":{"gitId":"-"},"content":"\tExpected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":581,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":582,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":583,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":584,"author":{"gitId":"rahhulleee"},"content":"3. Exiting the Application (Shutdown)","lastModifiedDate":"2024-03-06"},{"lineNumber":585,"author":{"gitId":"irwynliong"},"content":"\t1. Type in \"Exit\" in the main command bar of the InsureBook.","lastModifiedDate":"2024-03-06"},{"lineNumber":586,"author":{"gitId":"rahhulleee"},"content":"\t2. Else, manually close the Application","lastModifiedDate":"2024-03-06"},{"lineNumber":587,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":588,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":589,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":590,"author":{"gitId":"irwynliong"},"content":"### Deleting a client","lastModifiedDate":"2024-03-06"},{"lineNumber":591,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":592,"author":{"gitId":"rahhulleee"},"content":" ","lastModifiedDate":"2024-03-06"},{"lineNumber":593,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":594,"author":{"gitId":"irwynliong"},"content":"1. Deleting a client while all clients are being shown","lastModifiedDate":"2024-03-06"},{"lineNumber":595,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":596,"author":{"gitId":"irwynliong"},"content":"\t 1. Prerequisites: List all clients using the `list` command. Multiple clients in the list.","lastModifiedDate":"2024-03-06"},{"lineNumber":597,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":598,"author":{"gitId":"rahhulleee"},"content":"\t 2. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":599,"author":{"gitId":"irwynliong"},"content":"\t\tExpected: First client\u0027s contact is deleted from the list. Details of the deleted contact shown in the status message. Timestamp in the status bar is updated.","lastModifiedDate":"2024-03-06"},{"lineNumber":600,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":601,"author":{"gitId":"rahhulleee"},"content":"\t 3. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":602,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":603,"author":{"gitId":"irwynliong"},"content":"\t\t\tExpected: No client is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2024-03-06"},{"lineNumber":604,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":605,"author":{"gitId":"rahhulleee"},"content":"\t 4. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)\u003cbr\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":606,"author":{"gitId":"-"},"content":"\t\tExpected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":607,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":608,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":609,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":610,"author":{"gitId":"irwynliong"},"content":"2. Deleting a client from an empty InsureBook","lastModifiedDate":"2024-03-06"},{"lineNumber":611,"author":{"gitId":"irwynliong"},"content":"\t1. Prerequisites: List all clients using the `list` command. The list should be empty.","lastModifiedDate":"2024-03-06"},{"lineNumber":612,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":613,"author":{"gitId":"rahhulleee"},"content":"\t2. Test case: `delete x`","lastModifiedDate":"2024-03-06"},{"lineNumber":614,"author":{"gitId":"rahhulleee"},"content":"\t","lastModifiedDate":"2024-03-06"},{"lineNumber":615,"author":{"gitId":"rahhulleee"},"content":"\t\tExpected: An Error should pop up and Error details will be shown in the status message. Shows that the storage is functioning properly.","lastModifiedDate":"2024-03-06"},{"lineNumber":616,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":617,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":618,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":619,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":620,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":621,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":622,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":623,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":624,"author":{"gitId":"rahhulleee"},"content":"\t 1. Stimulating a corrupted/missing data file","lastModifiedDate":"2024-03-06"},{"lineNumber":625,"author":{"gitId":"rahhulleee"},"content":"\t\t 1. Close the application if it\u0027s running.","lastModifiedDate":"2024-03-06"},{"lineNumber":626,"author":{"gitId":"irwynliong"},"content":"\t\t 2. Navigate to the file containing the data of the InsureBook which is located in `/data/addressbook.json`","lastModifiedDate":"2024-03-06"},{"lineNumber":627,"author":{"gitId":"rahhulleee"},"content":"\t\t 3. Delete or rename this json file and this will corrupt it","lastModifiedDate":"2024-03-06"},{"lineNumber":628,"author":{"gitId":"rahhulleee"},"content":"\t\t 4. Exit and relaunch the application","lastModifiedDate":"2024-03-06"},{"lineNumber":629,"author":{"gitId":"-"},"content":"\t ","lastModifiedDate":"2020-05-23"},{"lineNumber":630,"author":{"gitId":"irwynliong"},"content":"\t\t\t Expected: The application should detect that the data file is missing and the whole InsureBook would be empty, and the commands will still be working in the empty InsureBook without any crashes. This ensures that the application can still be used even if the data file gets deleted.","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"irwynliong":229,"-":368,"rahhulleee":33}},{"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":"jimseah-0116"},"content":"# InsureBook User Guide","lastModifiedDate":"2024-03-06"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"jimseah-0116"},"content":"InsureBook is a **desktop app for insurance agents to manage potential and existing clients\u0027 personal and policy details.** The app has a Graphical User Interface (GUI), but most user interactions occur via a Command Line Interface (CLI). If you can type fast, InsureBook can get your client management tasks done faster than traditional GUI apps!","lastModifiedDate":"2024-03-06"},{"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":"jimseah-0116"},"content":"*The InsureBook .jar file is not available for download yet. These instructions will be applicable when it is released in the future.*","lastModifiedDate":"2024-03-06"},{"lineNumber":19,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":20,"author":{"gitId":"-"},"content":"1. Ensure you have Java `11` or above installed in your Computer.","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"jimseah-0116"},"content":"1. Download the latest `insurebook.jar` from [here](https://github.com/se-edu/addressbook-level3/releases).","lastModifiedDate":"2024-03-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"jimseah-0116"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for InsureBook.","lastModifiedDate":"2024-03-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"jimseah-0116"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar insurebook.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":27,"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":28,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"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":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":"jimseah-0116"},"content":" * `list` : Lists all clients.","lastModifiedDate":"2024-03-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"jimseah-0116"},"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 your InsureBook.","lastModifiedDate":"2024-03-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"jimseah-0116"},"content":" * `delete 3` : Deletes the 3rd client shown in the current list.","lastModifiedDate":"2024-03-06"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"jimseah-0116"},"content":" * `clear` : Deletes all clients.","lastModifiedDate":"2024-03-06"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"**Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"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":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"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":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"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":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"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":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"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":66,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":68,"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":69,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"### Adding a person: `add`","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"youdonnnn"},"content":"Adds a client, together with their name, phone number and email into the address book.","lastModifiedDate":"2024-03-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"Greg-Tan"},"content":"Format: add n/NAME p/PHONENUMBER e/EMAIL","lastModifiedDate":"2024-03-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":77,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"youdonnnn"},"content":"* `add n/Gregorius p/91234567 e/giddy@gmail.com`","lastModifiedDate":"2024-03-05"},{"lineNumber":79,"author":{"gitId":"youdonnnn"},"content":"* `add n/Rahrahsan p/90019001 e/rahrah@outlook.com`","lastModifiedDate":"2024-03-05"},{"lineNumber":80,"author":{"gitId":"youdonnnn"},"content":"* `add n/Jim p/88888888 e/jimtyms@yahoo.com`","lastModifiedDate":"2024-03-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"### Listing all persons : `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"Shows a list of all persons in the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"youdonnnn"},"content":"Removes an existing client based on their index from the address book.","lastModifiedDate":"2024-03-05"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2024-03-06"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"* Deletes the person at the specified `INDEX`.","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"Greg-Tan"},"content":"* The index **must be a positive integer between the numeric range of contacts in the address book.**","lastModifiedDate":"2024-03-06"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"youdonnnn"},"content":"* `delete 2`","lastModifiedDate":"2024-03-05"},{"lineNumber":100,"author":{"gitId":"youdonnnn"},"content":"* `delete 4`","lastModifiedDate":"2024-03-05"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"Greg-Tan"},"content":"### Adding a new policy to a person : `addPolicy`","lastModifiedDate":"2024-03-06"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":104,"author":{"gitId":"Greg-Tan"},"content":"Adds new insurance policy to a specific client","lastModifiedDate":"2024-03-06"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":106,"author":{"gitId":"Greg-Tan"},"content":"Format: `addPolicy i/INDEX n/POLICY`","lastModifiedDate":"2024-03-06"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":108,"author":{"gitId":"Greg-Tan"},"content":"* Adds a policy to the person at the specified `INDEX`.","lastModifiedDate":"2024-03-06"},{"lineNumber":109,"author":{"gitId":"Greg-Tan"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2024-03-06"},{"lineNumber":110,"author":{"gitId":"Greg-Tan"},"content":"* The index **must be a positive integer between the numeric range of contacts in the address book.**","lastModifiedDate":"2024-03-06"},{"lineNumber":111,"author":{"gitId":"Greg-Tan"},"content":"* `POLICY` is the name of the policy to be added","lastModifiedDate":"2024-03-06"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":113,"author":{"gitId":"Greg-Tan"},"content":"Examples:","lastModifiedDate":"2024-03-06"},{"lineNumber":114,"author":{"gitId":"Greg-Tan"},"content":"* `addPolicy i/10 n/SuperSaver`","lastModifiedDate":"2024-03-06"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":116,"author":{"gitId":"jimseah-0116"},"content":"### View the lists of meetings : `meetings`","lastModifiedDate":"2024-03-24"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":118,"author":{"gitId":"jimseah-0116"},"content":"Opens a new window containing a list of all meetings, in chronological order.","lastModifiedDate":"2024-03-24"},{"lineNumber":119,"author":{"gitId":"jimseah-0116"},"content":"This will be displayed as: \"Number | \u003c Meeting Date \u0026 Time \u003e with: \u003c Client Name \u003e\"","lastModifiedDate":"2024-03-24"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":121,"author":{"gitId":"jimseah-0116"},"content":"Format: `meetings`","lastModifiedDate":"2024-03-24"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":123,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"jimseah-0116"},"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 InsureBook home folder.","lastModifiedDate":"2024-03-06"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":134,"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":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":136,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"-----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-12"},{"lineNumber":142,"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":143,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"**Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3`","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"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":146,"author":{"gitId":"-"},"content":"**Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake`","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"**List** | `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"jimseah-0116"},"content":"**AddPolicy** | `addPolicy i/INDEX n/POLICY`\u003cbr\u003e e.g., `addPolicy i/4 n/SuperSaver`","lastModifiedDate":"2024-03-24"},{"lineNumber":149,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"jimseah-0116"},"content":"**Exit** | `exit`","lastModifiedDate":"2024-03-06"},{"lineNumber":151,"author":{"gitId":"jimseah-0116"},"content":"**Meetings** | `meetings`","lastModifiedDate":"2024-03-24"}],"authorContributionMap":{"youdonnnn":7,"jimseah-0116":19,"Greg-Tan":11,"-":114}},{"path":"docs/_markbind/layouts/default.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003chead-bottom\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003clink rel\u003d\"stylesheet\" href\u003d\"{{baseUrl}}/stylesheets/main.css\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c/head-bottom\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003cheader sticky\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cnavbar type\u003d\"dark\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"irwynliong"},"content":" \u003ca slot\u003d\"brand\" href\u003d\"{{baseUrl}}/index.html\" title\u003d\"Home\" class\u003d\"navbar-brand\"\u003eInsureBook\u003c/a\u003e","lastModifiedDate":"2024-02-29"},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/index.html\" class\u003d\"nav-link\"\u003eHome\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/UserGuide.html\" class\u003d\"nav-link\"\u003eUser Guide\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/DeveloperGuide.html\" class\u003d\"nav-link\"\u003eDeveloper Guide\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/AboutUs.html\" class\u003d\"nav-link\"\u003eAbout Us\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":12,"author":{"gitId":"irwynliong"},"content":" \u003cli\u003e\u003ca href\u003d\"https://github.com/AY2324S2-CS2103T-W09-4/tp\" target\u003d\"_blank\" class\u003d\"nav-link\"\u003e\u003cmd\u003e:fab-github:\u003c/md\u003e\u003c/a\u003e","lastModifiedDate":"2024-03-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cli slot\u003d\"right\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cform class\u003d\"navbar-form\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003csearchbar :data\u003d\"searchData\" placeholder\u003d\"Search\" :on-hit\u003d\"searchCallback\" menu-align-right\u003e\u003c/searchbar\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/form\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/navbar\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"\u003c/header\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"flex-body\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"site-nav\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"site-nav-top\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"fw-bold mb-2\" style\u003d\"font-size: 1.25rem;\"\u003eSite Map\u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003csite-nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"* [Home]({{ baseUrl }}/index.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"* [User Guide]({{ baseUrl }}/UserGuide.html) :expanded:","lastModifiedDate":"2023-09-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * [Quick Start]({{ baseUrl }}/UserGuide.html#quick-start)","lastModifiedDate":"2023-09-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * [Features]({{ baseUrl }}/UserGuide.html#features)","lastModifiedDate":"2023-09-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * [FAQ]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * [Command Summary]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":"* [Developer Guide]({{ baseUrl }}/DeveloperGuide.html) :expanded:","lastModifiedDate":"2023-09-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * [Acknowledgements]({{ baseUrl }}/DeveloperGuide.html#acknowledgements)","lastModifiedDate":"2023-09-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * [Setting Up]({{ baseUrl }}/DeveloperGuide.html#setting-up-getting-started)","lastModifiedDate":"2023-09-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * [Design]({{ baseUrl }}/DeveloperGuide.html#design)","lastModifiedDate":"2023-09-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * [Implementation]({{ baseUrl }}/DeveloperGuide.html#implementation)","lastModifiedDate":"2023-09-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * [Documentation, logging, testing, configuration, dev-ops]({{ baseUrl }}/DeveloperGuide.html#documentation-logging-testing-configuration-dev-ops)","lastModifiedDate":"2023-09-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * [Appendix: Requirements]({{ baseUrl }}/DeveloperGuide.html#appendix-requirements)","lastModifiedDate":"2023-09-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * [Appendix: Instructions for manual testing]({{ baseUrl }}/DeveloperGuide.html#appendix-instructions-for-manual-testing)","lastModifiedDate":"2023-09-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":"* Tutorials","lastModifiedDate":"2023-09-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * [Tracing code]({{ baseUrl }}/tutorials/TracingCode.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * [Adding a command]({{ baseUrl }}/tutorials/AddRemark.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * [Removing Fields]({{ baseUrl }}/tutorials/RemovingFields.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [About Us]({{ baseUrl }}/AboutUs.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/site-nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cdiv id\u003d\"content-wrapper\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" {{ content }}","lastModifiedDate":"2023-09-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"page-nav\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cpage-nav /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003cscroll-top-button\u003e\u003c/scroll-top-button\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":"\u003cfooter\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003c!-- Support MarkBind by including a link to us on your landing page! --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"text-center\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u003csmall\u003e[\u003cmd\u003e**Powered by**\u003c/md\u003e \u003cimg src\u003d\"https://markbind.org/favicon.ico\" width\u003d\"30\"\u003e {{MarkBind}}, generated on {{timestamp}}]\u003c/small\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003c/footer\u003e","lastModifiedDate":"2023-09-12"}],"authorContributionMap":{"irwynliong":2,"-":65}},{"path":"docs/diagrams/AddPolicySequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"rahhulleee"},"content":"@startuml","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"rahhulleee"},"content":"!include style.puml","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"rahhulleee"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"rahhulleee"},"content":"Actor User as user USER_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"rahhulleee"},"content":"Participant \":UI\" as ui UI_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"rahhulleee"},"content":"Participant \":Logic\" as logic LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"Greg-Tan"},"content":"Participant \":Parser\" as parser PARSER_COLOR","lastModifiedDate":"2024-03-23"},{"lineNumber":9,"author":{"gitId":"Greg-Tan"},"content":"Participant \":Command\" as command COMMAND_COLOR","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"rahhulleee"},"content":"Participant \":Storage\" as storage STORAGE_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"youdonnnn"},"content":"user -[USER_COLOR]\u003e ui : \"addPolicy 2 pn/SaversScheme\"","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"rahhulleee"},"content":"activate ui UI_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"youdonnnn"},"content":"ui -[UI_COLOR]\u003e logic : execute(\"addPolicy 2 pn/SaversScheme\")","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"rahhulleee"},"content":"activate logic LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"Greg-Tan"},"content":"logic -[LOGIC_COLOR]\u003e parser : parseCommand(\"addPolicy 2 pn/SaversScheme\")","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"Greg-Tan"},"content":"activate parser PARSER_COLOR_T1","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"Greg-Tan"},"content":"parser -[PARSER_COLOR]\u003e parser : parse(\"2 pn/SaversScheme\")","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"Greg-Tan"},"content":"activate parser PARSER_COLOR_T2","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"Greg-Tan"},"content":"parser --[PARSER_COLOR]\u003e parser : AddPolicyCommand(2, \"SaversScheme\")","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"Greg-Tan"},"content":"deactivate parser PARSER_COLOR_T2","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":27,"author":{"gitId":"Greg-Tan"},"content":"parser --[PARSER_COLOR]\u003e logic","lastModifiedDate":"2024-03-23"},{"lineNumber":28,"author":{"gitId":"Greg-Tan"},"content":"deactivate parser PARSER_COLOR_T1","lastModifiedDate":"2024-03-23"},{"lineNumber":29,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"Greg-Tan"},"content":"logic -[LOGIC_COLOR]\u003e command : AddPolicyCommand.execute(Model)","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"Greg-Tan"},"content":"activate command COMMAND_COLOR_T1","lastModifiedDate":"2024-03-23"},{"lineNumber":33,"author":{"gitId":"Greg-Tan"},"content":"command --[COMMAND_COLOR]\u003e logic : CommandResult(generateSuccessMessage(editedPerson))","lastModifiedDate":"2024-03-23"},{"lineNumber":34,"author":{"gitId":"Greg-Tan"},"content":"deactivate command","lastModifiedDate":"2024-03-23"},{"lineNumber":35,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"rahhulleee"},"content":"\u0027 Optional: Only if the view operation needs to interact with storage, e.g., for caching or refreshing data","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"Greg-Tan"},"content":"logic -[LOGIC_COLOR]\u003e storage : saveAddressBook(ModelManager.getAddressBook())","lastModifiedDate":"2024-03-23"},{"lineNumber":39,"author":{"gitId":"rahhulleee"},"content":"activate storage STORAGE_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"Greg-Tan"},"content":"storage -[STORAGE_COLOR]\u003e storage : JsonAddressBookStorage.saveAddressBook(addressBook, filePath)","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"rahhulleee"},"content":"activate storage STORAGE_COLOR_T1","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"rahhulleee"},"content":"storage --[STORAGE_COLOR]\u003e storage","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"rahhulleee"},"content":"deactivate storage","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"rahhulleee"},"content":"storage --[STORAGE_COLOR]\u003e logic","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"rahhulleee"},"content":"deactivate storage","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"rahhulleee"},"content":"\u0027 End of optional storage interaction","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"Greg-Tan"},"content":"logic --[LOGIC_COLOR]\u003e ui : CommandResult(generateSuccessMessage(editedPerson))","lastModifiedDate":"2024-03-23"},{"lineNumber":51,"author":{"gitId":"rahhulleee"},"content":"deactivate logic","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"rahhulleee"},"content":"ui--[UI_COLOR]\u003e user","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"rahhulleee"},"content":"deactivate ui","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"rahhulleee"},"content":"@enduml","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"youdonnnn":2,"Greg-Tan":22,"rahhulleee":31}},{"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":"-"},"content":"AddressBook *-right-\u003e \"1\" UniquePersonList","lastModifiedDate":"2019-07-30"},{"lineNumber":8,"author":{"gitId":"-"},"content":"AddressBook *-right-\u003e \"1\" UniqueTagList","lastModifiedDate":"2019-07-30"},{"lineNumber":9,"author":{"gitId":"-"},"content":"UniqueTagList -[hidden]down- UniquePersonList","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"UniqueTagList -[hidden]down- UniquePersonList","lastModifiedDate":"2019-07-03"},{"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":"-"},"content":"UniquePersonList -right-\u003e Person","lastModifiedDate":"2021-07-31"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"Person -up-\u003e \"*\" Tag","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Person *--\u003e Name","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Person *--\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Person *--\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Person *--\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"irwynliong"},"content":"Person *--\u003e Meeting","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"irwynliong":1,"-":21}},{"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":"-"},"content":"Class UniquePersonList","lastModifiedDate":"2021-07-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Class Person","lastModifiedDate":"2019-07-03"},{"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":"-"},"content":"Class Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"irwynliong"},"content":"Class Meeting","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Class Tag","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":24,"author":{"gitId":"-"},"content":"Class I #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"AddressBook .up.|\u003e ReadOnlyAddressBook","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"ModelManager .up.|\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"Model .right.\u003e ReadOnlyUserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"Model .left.\u003e ReadOnlyAddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":"ModelManager -left-\u003e \"1\" AddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"ModelManager -right-\u003e \"1\" UserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"UserPrefs .up.|\u003e ReadOnlyUserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"AddressBook *--\u003e \"1\" UniquePersonList","lastModifiedDate":"2019-07-30"},{"lineNumber":40,"author":{"gitId":"-"},"content":"UniquePersonList --\u003e \"~* all\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":41,"author":{"gitId":"-"},"content":"Person *--\u003e Name","lastModifiedDate":"2019-07-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"Person *--\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"Person *--\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"Person *--\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"irwynliong"},"content":"Person *--\u003e Meeting","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":"Person *--\u003e \"*\" Tag","lastModifiedDate":"2019-07-03"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":48,"author":{"gitId":"-"},"content":"Person -[hidden]up--\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"UniquePersonList -[hidden]right-\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"Name -[hidden]right-\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":52,"author":{"gitId":"-"},"content":"Phone -[hidden]right-\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":53,"author":{"gitId":"-"},"content":"Address -[hidden]right-\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":54,"author":{"gitId":"irwynliong"},"content":"Meeting -[hidden]right-\u003e Meeting","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":"ModelManager --\u003e \"~* filtered\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":57,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"irwynliong":3,"-":54}},{"path":"docs/diagrams/ViewSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"rahhulleee"},"content":"@startuml","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"rahhulleee"},"content":"!include style.puml","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"rahhulleee"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"rahhulleee"},"content":"Actor User as user USER_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"rahhulleee"},"content":"Participant \":UI\" as ui UI_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"rahhulleee"},"content":"Participant \":Logic\" as logic LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"rahhulleee"},"content":"Participant \":Model\" as model MODEL_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"rahhulleee"},"content":"Participant \":Storage\" as storage STORAGE_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"rahhulleee"},"content":"user -[USER_COLOR]\u003e ui : \"view 2\"","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"rahhulleee"},"content":"activate ui UI_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"rahhulleee"},"content":"ui -[UI_COLOR]\u003e logic : execute(\"view 2\")","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"rahhulleee"},"content":"activate logic LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"rahhulleee"},"content":"logic -[LOGIC_COLOR]\u003e model : ViewCommand(Index.fromOneBased(2))","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"rahhulleee"},"content":"activate model MODEL_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"rahhulleee"},"content":"model -[MODEL_COLOR]-\u003e logic","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"rahhulleee"},"content":"deactivate model","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"rahhulleee"},"content":"\u0027 Optional: Only if the view operation needs to interact with storage, e.g., for caching or refreshing data","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"rahhulleee"},"content":"logic -[LOGIC_COLOR]\u003e storage : saveAddressBook(addressBook)","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"rahhulleee"},"content":"activate storage STORAGE_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"rahhulleee"},"content":"storage -[STORAGE_COLOR]\u003e storage :","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"rahhulleee"},"content":"activate storage STORAGE_COLOR_T1","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"rahhulleee"},"content":"storage --[STORAGE_COLOR]\u003e storage","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"rahhulleee"},"content":"deactivate storage","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"rahhulleee"},"content":"storage --[STORAGE_COLOR]\u003e logic","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"rahhulleee"},"content":"deactivate storage","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"rahhulleee"},"content":"\u0027 End of optional storage interaction","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"rahhulleee"},"content":"logic --[LOGIC_COLOR]\u003e ui","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"rahhulleee"},"content":"deactivate logic","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"rahhulleee"},"content":"ui--[UI_COLOR]\u003e user","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"rahhulleee"},"content":"deactivate ui","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"rahhulleee"},"content":"@enduml","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"rahhulleee":41}},{"path":"docs/diagrams/style.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"/\u0027","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u0027Commonly used styles and colors across diagrams.","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":" \u0027Refer to https://plantuml-documentation.readthedocs.io/en/latest for a more","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":" \u0027comprehensive list of skinparams.","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":" \u0027/","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u0027T1 through T4 are shades of the original color from lightest to darkest","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"!define UI_COLOR #1D8900","lastModifiedDate":"2019-07-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"!define UI_COLOR_T1 #83E769","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"!define UI_COLOR_T2 #3FC71B","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"!define UI_COLOR_T3 #166800","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"!define UI_COLOR_T4 #0E4100","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"!define LOGIC_COLOR #3333C4","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"!define LOGIC_COLOR_T1 #C8C8FA","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"!define LOGIC_COLOR_T2 #6A6ADC","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"!define LOGIC_COLOR_T3 #1616B0","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"!define LOGIC_COLOR_T4 #101086","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"!define MODEL_COLOR #9D0012","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"!define MODEL_COLOR_T1 #F97181","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"!define MODEL_COLOR_T2 #E41F36","lastModifiedDate":"2019-07-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":"!define MODEL_COLOR_T3 #7B000E","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"!define MODEL_COLOR_T4 #51000A","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"!define STORAGE_COLOR #A38300","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"!define STORAGE_COLOR_T1 #FFE374","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"!define STORAGE_COLOR_T2 #EDC520","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"!define STORAGE_COLOR_T3 #806600","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"Greg-Tan"},"content":"!define STORAGE_COLOR_T4 #544400","lastModifiedDate":"2024-03-23"},{"lineNumber":33,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":34,"author":{"gitId":"Greg-Tan"},"content":"!define PARSER_COLOR #702963","lastModifiedDate":"2024-03-23"},{"lineNumber":35,"author":{"gitId":"Greg-Tan"},"content":"!define PARSER_COLOR_T1 #C3B1E1","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"Greg-Tan"},"content":"!define PARSER_COLOR_T2 #CCCCFF","lastModifiedDate":"2024-03-23"},{"lineNumber":37,"author":{"gitId":"Greg-Tan"},"content":"!define PARSER_COLOR_T3 #E6E6FA","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":39,"author":{"gitId":"Greg-Tan"},"content":"!define COMMAND_COLOR #a86932","lastModifiedDate":"2024-03-23"},{"lineNumber":40,"author":{"gitId":"Greg-Tan"},"content":"!define COMMAND_COLOR_T1 #c79569","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"Greg-Tan"},"content":"!define COMMAND_COLOR_T2 #8f6c4d","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"Greg-Tan"},"content":"!define COMMAND_COLOR_T3 #f5ab69","lastModifiedDate":"2024-03-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"!define USER_COLOR #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"skinparam Package {","lastModifiedDate":"2023-07-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" BackgroundColor #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" BorderThickness 1","lastModifiedDate":"2023-07-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" FontSize 16","lastModifiedDate":"2023-07-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-07-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":52,"author":{"gitId":"-"},"content":"skinparam Class {","lastModifiedDate":"2019-07-03"},{"lineNumber":53,"author":{"gitId":"-"},"content":" FontColor #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":54,"author":{"gitId":"-"},"content":" FontSize 15","lastModifiedDate":"2023-07-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" BorderThickness 1","lastModifiedDate":"2019-07-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":" BorderColor #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":" StereotypeFontColor #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":58,"author":{"gitId":"-"},"content":" FontName Arial","lastModifiedDate":"2019-07-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":61,"author":{"gitId":"-"},"content":"skinparam Actor {","lastModifiedDate":"2019-07-03"},{"lineNumber":62,"author":{"gitId":"-"},"content":" BorderColor USER_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":63,"author":{"gitId":"-"},"content":" Color USER_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":64,"author":{"gitId":"-"},"content":" FontName Arial","lastModifiedDate":"2019-07-03"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":67,"author":{"gitId":"-"},"content":"skinparam Sequence {","lastModifiedDate":"2019-07-03"},{"lineNumber":68,"author":{"gitId":"-"},"content":" MessageAlign center","lastModifiedDate":"2019-07-03"},{"lineNumber":69,"author":{"gitId":"-"},"content":" BoxFontSize 15","lastModifiedDate":"2019-07-03"},{"lineNumber":70,"author":{"gitId":"-"},"content":" BoxPadding 0","lastModifiedDate":"2019-07-03"},{"lineNumber":71,"author":{"gitId":"-"},"content":" BoxFontColor #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":72,"author":{"gitId":"-"},"content":" FontName Arial","lastModifiedDate":"2019-07-03"},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":75,"author":{"gitId":"-"},"content":"skinparam Participant {","lastModifiedDate":"2019-07-03"},{"lineNumber":76,"author":{"gitId":"-"},"content":" FontColor #FFFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":77,"author":{"gitId":"-"},"content":" Padding 20","lastModifiedDate":"2019-07-03"},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":80,"author":{"gitId":"-"},"content":"skinparam ArrowFontStyle bold","lastModifiedDate":"2023-07-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":"skinparam MinClassWidth 50","lastModifiedDate":"2019-07-03"},{"lineNumber":82,"author":{"gitId":"-"},"content":"skinparam ParticipantPadding 10","lastModifiedDate":"2019-07-03"},{"lineNumber":83,"author":{"gitId":"-"},"content":"skinparam Shadowing false","lastModifiedDate":"2019-07-03"},{"lineNumber":84,"author":{"gitId":"-"},"content":"skinparam DefaultTextAlignment center","lastModifiedDate":"2019-07-03"},{"lineNumber":85,"author":{"gitId":"-"},"content":"skinparam packageStyle Rectangle","lastModifiedDate":"2019-07-03"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":87,"author":{"gitId":"-"},"content":"hide footbox","lastModifiedDate":"2019-07-03"},{"lineNumber":88,"author":{"gitId":"-"},"content":"hide members","lastModifiedDate":"2019-07-03"},{"lineNumber":89,"author":{"gitId":"-"},"content":"hide circle","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"Greg-Tan":11,"-":78}},{"path":"docs/team/irwyn.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"irwynliong"},"content":"---","lastModifiedDate":"2024-03-05"},{"lineNumber":2,"author":{"gitId":"irwynliong"},"content":" layout: default.md","lastModifiedDate":"2024-03-05"},{"lineNumber":3,"author":{"gitId":"irwynliong"},"content":" title: \"Irwyn Liong\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-03-05"},{"lineNumber":4,"author":{"gitId":"irwynliong"},"content":"---","lastModifiedDate":"2024-03-05"},{"lineNumber":5,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":6,"author":{"gitId":"irwynliong"},"content":"### Project: InsureBook","lastModifiedDate":"2024-03-05"},{"lineNumber":7,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":8,"author":{"gitId":"irwynliong"},"content":"InsureBook is a desktop application that assist insurance agents manage their client\u0027s contact and policies as well as to set reminders and schedule meetings with client.","lastModifiedDate":"2024-03-05"},{"lineNumber":9,"author":{"gitId":"irwynliong"},"content":"The user interacts with it using a CLI, and it has a GUI created with JavaFX.","lastModifiedDate":"2024-03-05"},{"lineNumber":10,"author":{"gitId":"irwynliong"},"content":"It is written in Java, and has about 10 kLoC. This project is based on [AddressBook - Level 3](https://se-education.org/addressbook-level3/).","lastModifiedDate":"2024-03-05"},{"lineNumber":11,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":12,"author":{"gitId":"irwynliong"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-05"},{"lineNumber":13,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":14,"author":{"gitId":"irwynliong"},"content":"### Features","lastModifiedDate":"2024-03-05"},{"lineNumber":15,"author":{"gitId":"irwynliong"},"content":"1. **New Feature**:","lastModifiedDate":"2024-03-05"},{"lineNumber":16,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":17,"author":{"gitId":"irwynliong"},"content":"\u003cdiv style\u003d\"page-break-after: always;\"\u003e\u003c/div\u003e","lastModifiedDate":"2024-03-05"},{"lineNumber":18,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":19,"author":{"gitId":"irwynliong"},"content":"### Code Contributed","lastModifiedDate":"2024-03-05"},{"lineNumber":20,"author":{"gitId":"irwynliong"},"content":"[RepoSense link]()","lastModifiedDate":"2024-03-05"},{"lineNumber":21,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":22,"author":{"gitId":"irwynliong"},"content":"### Documentation","lastModifiedDate":"2024-03-05"},{"lineNumber":23,"author":{"gitId":"irwynliong"},"content":"* User Guide:","lastModifiedDate":"2024-03-05"},{"lineNumber":24,"author":{"gitId":"irwynliong"},"content":" * Added documentation","lastModifiedDate":"2024-03-05"},{"lineNumber":25,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":26,"author":{"gitId":"irwynliong"},"content":"* Developer Guide:","lastModifiedDate":"2024-03-05"},{"lineNumber":27,"author":{"gitId":"irwynliong"},"content":" * Added use case section","lastModifiedDate":"2024-03-05"},{"lineNumber":28,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":29,"author":{"gitId":"irwynliong"},"content":"### Project Management","lastModifiedDate":"2024-03-05"},{"lineNumber":30,"author":{"gitId":"irwynliong"},"content":"* Contributed to Issue tracker and PR reviews","lastModifiedDate":"2024-03-05"},{"lineNumber":31,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":32,"author":{"gitId":"irwynliong"},"content":"### Community","lastModifiedDate":"2024-03-05"},{"lineNumber":33,"author":{"gitId":"irwynliong"},"content":"* PRs reviewed","lastModifiedDate":"2024-03-05"}],"authorContributionMap":{"irwynliong":33}},{"path":"docs/team/jim.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":"irwynliong"},"content":" title: \"Jim Seah\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-03-07"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2021-07-30"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"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":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"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":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"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":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"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":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"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":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"* **Project management**:","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"* **Documentation**:","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * User Guide:","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Developer Guide:","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"* **Community**:","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"* **Tools**:","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"irwynliong":1,"-":45}},{"path":"docs/team/rahul.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":"irwynliong"},"content":" title: \"Rahul\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-03-07"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2021-07-30"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"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":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"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":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"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":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"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":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"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":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"* **Project management**:","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"* **Documentation**:","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * User Guide:","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Developer Guide:","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"* **Community**:","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"* **Tools**:","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"irwynliong":1,"-":45}},{"path":"docs/team/udon.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":"irwynliong"},"content":" title: \"Yu Tong\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-03-07"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2021-07-30"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"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":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"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":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"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":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"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":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"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":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"* **Project management**:","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"* **Documentation**:","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * User Guide:","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Developer Guide:","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"* **Community**:","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"* **Tools**:","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"irwynliong":1,"-":45}},{"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":"irwynliong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MEETING;","lastModifiedDate":"2024-03-21"},{"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":"irwynliong"},"content":" * Adds a client to the address book.","lastModifiedDate":"2024-03-21"},{"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":"irwynliong"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a client to the address book. \"","lastModifiedDate":"2024-03-21"},{"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":"irwynliong"},"content":" + PREFIX_MEETING + \"MEETING \"","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":37,"author":{"gitId":"irwynliong"},"content":" + PREFIX_MEETING + \"2024-02-12 \"","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2017-05-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"owesMoney\";","lastModifiedDate":"2017-05-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"irwynliong"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New client added: %1$s\";","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"irwynliong"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This client already exists in the address book\";","lastModifiedDate":"2024-03-21"},{"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":{"irwynliong":7,"-":80}},{"path":"src/main/java/seedu/address/logic/commands/AddPolicyCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Greg-Tan"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"Greg-Tan"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"Greg-Tan"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"Greg-Tan"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"Greg-Tan"},"content":"import java.util.List;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"Greg-Tan"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"youdonnnn"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"youdonnnn"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"Greg-Tan"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"Greg-Tan"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"Greg-Tan"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"Greg-Tan"},"content":"import seedu.address.model.person.Policy;","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"youdonnnn"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"youdonnnn"},"content":" * Adds a policy to the client identified by the index number used in the last person listing","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"youdonnnn"},"content":" * and the policy name.","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"youdonnnn"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"Greg-Tan"},"content":"public class AddPolicyCommand extends Command {","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"Greg-Tan"},"content":" public static final String COMMAND_WORD \u003d \"addPolicy\";","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"Greg-Tan"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"youdonnnn"},"content":" + \": Adds a policy to the client identified \"","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"youdonnnn"},"content":" + \"by the index number used in the last person listing\\n\"","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"youdonnnn"},"content":" + \"and the policy name. \"","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"Greg-Tan"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"youdonnnn"},"content":" + \"pn/ [POLICY NAME]\\n\"","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"Greg-Tan"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"youdonnnn"},"content":" + \"pn/ SuperSaver\";","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"Greg-Tan"},"content":" public static final String MESSAGE_ARGUMENTS \u003d \"Index %1$d, Policy Name: %2$s\";","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"Greg-Tan"},"content":" public static final String MESSAGE_ADD_POLICY_SUCCESS \u003d \"Added policy to Person: %1$s\";","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"Greg-Tan"},"content":" public static final String MESSAGE_DELETE_POLICY_SUCCESS \u003d \"Removed policy from Person: %1$s\";","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"Greg-Tan"},"content":" private final Index index;","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"Greg-Tan"},"content":" private final String policyName;","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"youdonnnn"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"youdonnnn"},"content":" * Creates an AddPolicyCommand to add the specified {@code Policy} to the client at the specified index.","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"youdonnnn"},"content":" *","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"youdonnnn"},"content":" * @param index The index of the client in the filtered person list.","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"youdonnnn"},"content":" * @param policyName The name of the policy to be added.","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"youdonnnn"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"Greg-Tan"},"content":" public AddPolicyCommand(Index index, String policyName) {","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"Greg-Tan"},"content":" requireAllNonNull(index, policyName);","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"Greg-Tan"},"content":" this.index \u003d index;","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"Greg-Tan"},"content":" this.policyName \u003d policyName;","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"Greg-Tan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"Greg-Tan"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"Greg-Tan"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"Greg-Tan"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"Greg-Tan"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"Greg-Tan"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"Greg-Tan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"Greg-Tan"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"Greg-Tan"},"content":" Set\u003cPolicy\u003e currentPolicies \u003d new HashSet\u003c\u003e(personToEdit.getPolicies());","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"Greg-Tan"},"content":" Policy newPolicy \u003d new Policy(policyName);","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"Greg-Tan"},"content":" currentPolicies.add(newPolicy);","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"Greg-Tan"},"content":" Person editedPerson \u003d new Person(","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"Greg-Tan"},"content":" personToEdit.getName(), personToEdit.getPhone(), personToEdit.getEmail(),","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"Greg-Tan"},"content":" personToEdit.getAddress(), personToEdit.getMeeting(), personToEdit.getTags(), currentPolicies);","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"Greg-Tan"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"Greg-Tan"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"Greg-Tan"},"content":" return new CommandResult(generateSuccessMessage(editedPerson));","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"Greg-Tan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"Greg-Tan"},"content":" private String generateSuccessMessage(Person personToEdit) {","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"Greg-Tan"},"content":" String message \u003d !policyName.isEmpty() ? MESSAGE_ADD_POLICY_SUCCESS : MESSAGE_DELETE_POLICY_SUCCESS;","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"Greg-Tan"},"content":" return String.format(message, personToEdit);","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"Greg-Tan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"Greg-Tan"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"youdonnnn":17,"Greg-Tan":63}},{"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":"jimseah-0116"},"content":" /** Meetings pop up should be shown to the user. */","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"jimseah-0116"},"content":" private final boolean showMeetings;","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /** The application should exit. */","lastModifiedDate":"2018-12-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final boolean exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Constructs a {@code CommandResult} with the specified fields.","lastModifiedDate":"2018-12-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":28,"author":{"gitId":"jimseah-0116"},"content":" public CommandResult(String feedbackToUser, boolean showHelp, boolean showMeetings, boolean exit) {","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":" this.feedbackToUser \u003d requireNonNull(feedbackToUser);","lastModifiedDate":"2017-05-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" this.showHelp \u003d showHelp;","lastModifiedDate":"2018-12-09"},{"lineNumber":31,"author":{"gitId":"jimseah-0116"},"content":" this.showMeetings \u003d showMeetings;","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.exit \u003d exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Constructs a {@code CommandResult} with the specified {@code feedbackToUser},","lastModifiedDate":"2018-12-09"},{"lineNumber":37,"author":{"gitId":"jimseah-0116"},"content":" * and other fields set to their default value (false).","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public CommandResult(String feedbackToUser) {","lastModifiedDate":"2018-12-09"},{"lineNumber":40,"author":{"gitId":"jimseah-0116"},"content":" this(feedbackToUser, false, false, false);","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public String getFeedbackToUser() {","lastModifiedDate":"2018-12-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return feedbackToUser;","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 isShowHelp() {","lastModifiedDate":"2018-12-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return showHelp;","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":"jimseah-0116"},"content":" public boolean isShowMeetings() {","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"jimseah-0116"},"content":" return showMeetings;","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public boolean isExit() {","lastModifiedDate":"2018-12-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2018-12-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-12-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return true;","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":" // instanceof handles nulls","lastModifiedDate":"2018-12-09"},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (!(other instanceof CommandResult)) {","lastModifiedDate":"2018-12-09"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-12-09"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":70,"author":{"gitId":"-"},"content":" CommandResult otherCommandResult \u003d (CommandResult) other;","lastModifiedDate":"2018-12-09"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return feedbackToUser.equals(otherCommandResult.feedbackToUser)","lastModifiedDate":"2018-12-09"},{"lineNumber":72,"author":{"gitId":"-"},"content":" \u0026\u0026 showHelp \u003d\u003d otherCommandResult.showHelp","lastModifiedDate":"2018-12-09"},{"lineNumber":73,"author":{"gitId":"jimseah-0116"},"content":" \u0026\u0026 showMeetings \u003d\u003d otherCommandResult.showMeetings","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" \u0026\u0026 exit \u003d\u003d otherCommandResult.exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2018-12-09"},{"lineNumber":79,"author":{"gitId":"jimseah-0116"},"content":" return Objects.hash(feedbackToUser, showHelp, showMeetings, exit);","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" .add(\"feedbackToUser\", feedbackToUser)","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" .add(\"showHelp\", showHelp)","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"jimseah-0116"},"content":" .add(\"showMeetings\", showMeetings)","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"-"},"content":" .add(\"exit\", exit)","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":"2019-02-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"jimseah-0116":14,"-":78}},{"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":"irwynliong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MEETING;","lastModifiedDate":"2024-03-21"},{"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":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"youdonnnn"},"content":"import seedu.address.model.person.Meeting;","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"youdonnnn"},"content":"import seedu.address.model.person.Policy;","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26"},{"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":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the person identified \"","lastModifiedDate":"2016-12-26"},{"lineNumber":42,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06"},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06"},{"lineNumber":46,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":49,"author":{"gitId":"irwynliong"},"content":" + \"[\" + PREFIX_MEETING + \"MEETING] \"","lastModifiedDate":"2024-03-21"},{"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":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":60,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25"},{"lineNumber":67,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25"},{"lineNumber":68,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25"},{"lineNumber":71,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":76,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","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":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":87,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":90,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":91,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":92,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":95,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26"},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":99,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":102,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":103,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21"},{"lineNumber":104,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2024-03-21"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2024-03-21"},{"lineNumber":106,"author":{"gitId":"irwynliong"},"content":" Meeting updatedMeeting \u003d editPersonDescriptor.getMeeting().orElse(personToEdit.getMeeting());","lastModifiedDate":"2024-03-21"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2017-06-21"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":109,"author":{"gitId":"Greg-Tan"},"content":" Set\u003cPolicy\u003e updatedPolicies \u003d editPersonDescriptor.getPolicies().orElse(personToEdit.getPolicies());","lastModifiedDate":"2024-03-21"},{"lineNumber":110,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":111,"author":{"gitId":"youdonnnn"},"content":" return new Person(updatedName, updatedPhone, updatedEmail,","lastModifiedDate":"2024-03-21"},{"lineNumber":112,"author":{"gitId":"youdonnnn"},"content":" updatedAddress, updatedMeeting, updatedTags, updatedPolicies);","lastModifiedDate":"2024-03-21"},{"lineNumber":113,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" return false;","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":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":128,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13"},{"lineNumber":129,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":141,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26"},{"lineNumber":142,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26"},{"lineNumber":143,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":144,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26"},{"lineNumber":145,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21"},{"lineNumber":146,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":147,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":148,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21"},{"lineNumber":149,"author":{"gitId":"irwynliong"},"content":" private Meeting meeting;","lastModifiedDate":"2024-03-21"},{"lineNumber":150,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21"},{"lineNumber":151,"author":{"gitId":"Greg-Tan"},"content":" private Set\u003cPolicy\u003e policies;","lastModifiedDate":"2024-03-21"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":153,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":155,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":156,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11"},{"lineNumber":157,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":158,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":159,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26"},{"lineNumber":160,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15"},{"lineNumber":161,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15"},{"lineNumber":162,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15"},{"lineNumber":163,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15"},{"lineNumber":164,"author":{"gitId":"irwynliong"},"content":" setMeeting(toCopy.meeting);","lastModifiedDate":"2024-03-21"},{"lineNumber":165,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11"},{"lineNumber":166,"author":{"gitId":"Greg-Tan"},"content":" setPolicies(toCopy.policies);","lastModifiedDate":"2024-03-21"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":169,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":170,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26"},{"lineNumber":171,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":172,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26"},{"lineNumber":173,"author":{"gitId":"-"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, tags);","lastModifiedDate":"2018-08-14"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":176,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21"},{"lineNumber":177,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":180,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":181,"author":{"gitId":"-"},"content":" return Optional.ofNullable(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 void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21"},{"lineNumber":185,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","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\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26"},{"lineNumber":189,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","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 setEmail(Email email) {","lastModifiedDate":"2017-06-21"},{"lineNumber":193,"author":{"gitId":"-"},"content":" this.email \u003d email;","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\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":197,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","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 setAddress(Address address) {","lastModifiedDate":"2017-06-21"},{"lineNumber":201,"author":{"gitId":"-"},"content":" this.address \u003d address;","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\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26"},{"lineNumber":205,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21"},{"lineNumber":206,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":208,"author":{"gitId":"Greg-Tan"},"content":" public Optional\u003cSet\u003cPolicy\u003e\u003e getPolicies() {","lastModifiedDate":"2024-03-21"},{"lineNumber":209,"author":{"gitId":"Greg-Tan"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(policies)) : Optional.empty();","lastModifiedDate":"2024-03-21"},{"lineNumber":210,"author":{"gitId":"Greg-Tan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":211,"author":{"gitId":"youdonnnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":212,"author":{"gitId":"youdonnnn"},"content":" public void setPolicies(Set\u003cPolicy\u003e policies) {","lastModifiedDate":"2024-03-21"},{"lineNumber":213,"author":{"gitId":"youdonnnn"},"content":" this.policies \u003d policies;","lastModifiedDate":"2024-03-21"},{"lineNumber":214,"author":{"gitId":"youdonnnn"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":216,"author":{"gitId":"irwynliong"},"content":" public void setMeeting(Meeting meeting) {","lastModifiedDate":"2024-03-21"},{"lineNumber":217,"author":{"gitId":"irwynliong"},"content":" this.meeting \u003d meeting;","lastModifiedDate":"2024-03-21"},{"lineNumber":218,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":219,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":220,"author":{"gitId":"irwynliong"},"content":" public Optional\u003cMeeting\u003e getMeeting() {","lastModifiedDate":"2024-03-21"},{"lineNumber":221,"author":{"gitId":"irwynliong"},"content":" return Optional.ofNullable(meeting);","lastModifiedDate":"2024-03-21"},{"lineNumber":222,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":223,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-21"},{"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":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":242,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":243,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":244,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":245,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":247,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":248,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05"},{"lineNumber":249,"author":{"gitId":"-"},"content":" return false;","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":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":253,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":254,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":255,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":256,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":257,"author":{"gitId":"irwynliong"},"content":" \u0026\u0026 Objects.equals(meeting, otherEditPersonDescriptor.meeting)","lastModifiedDate":"2024-03-21"},{"lineNumber":258,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags);","lastModifiedDate":"2023-07-13"},{"lineNumber":259,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":262,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":264,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":268,"author":{"gitId":"irwynliong"},"content":" .add(\"meeting\", meeting)","lastModifiedDate":"2024-03-21"},{"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":{"youdonnnn":8,"irwynliong":15,"Greg-Tan":8,"-":242}},{"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":"-"},"content":" public static final String MESSAGE_EXIT_ACKNOWLEDGEMENT \u003d \"Exiting Address Book as requested ...\";","lastModifiedDate":"2016-09-22"},{"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":"jimseah-0116"},"content":" return new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, false, false, true);","lastModifiedDate":"2024-03-21"},{"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":{"jimseah-0116":1,"-":18}},{"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":"jimseah-0116"},"content":" return new CommandResult(SHOWING_HELP_MESSAGE, true, false, false);","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"jimseah-0116":1,"-":20}},{"path":"src/main/java/seedu/address/logic/commands/MeetingsCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jimseah-0116"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"jimseah-0116"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"jimseah-0116"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"jimseah-0116"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"jimseah-0116"},"content":" * Opens the meetings window.","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"jimseah-0116"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"jimseah-0116"},"content":"public class MeetingsCommand extends Command {","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"jimseah-0116"},"content":" public static final String COMMAND_WORD \u003d \"meetings\";","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"jimseah-0116"},"content":" public static final String SHOWING_MEETINGS_MESSAGE \u003d \"Opened meetings window.\";","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"jimseah-0116"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"jimseah-0116"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"jimseah-0116"},"content":" return new CommandResult(SHOWING_MEETINGS_MESSAGE, false, true, false);","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"jimseah-0116"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"jimseah-0116":16}},{"path":"src/main/java/seedu/address/logic/commands/ViewCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"rahhulleee"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"rahhulleee"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"rahhulleee"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"rahhulleee"},"content":"import java.util.List;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"rahhulleee"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"rahhulleee"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"rahhulleee"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"rahhulleee"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"rahhulleee"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"rahhulleee"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"rahhulleee"},"content":"import seedu.address.model.person.ViewPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"rahhulleee"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"rahhulleee"},"content":" * Displays the policy details of a person specified by their index in the address book.","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"rahhulleee"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"rahhulleee"},"content":"public class ViewCommand extends Command {","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"rahhulleee"},"content":" public static final String COMMAND_WORD \u003d \"view\";","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"rahhulleee"},"content":" /** Usage message for the view command. */","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"rahhulleee"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"rahhulleee"},"content":" + \": View the policy details of the person specified by the index.\\n\"","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"rahhulleee"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"rahhulleee"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"rahhulleee"},"content":" /** Success message displayed after viewing the person\u0027s details. */","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"rahhulleee"},"content":" public static final String MESSAGE_VIEW_SUCCESS \u003d \"Viewed Person Successfully: %1$s\";","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"rahhulleee"},"content":" private static final Logger logger \u003d Logger.getLogger(ViewCommand.class.getName());","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"rahhulleee"},"content":" private final Index index;","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"rahhulleee"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"rahhulleee"},"content":" * Constructs a ViewCommand with the specified index.","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"rahhulleee"},"content":" * @param index The index of the person whose details are to be viewed.","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"rahhulleee"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"rahhulleee"},"content":" public ViewCommand(Index index) {","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"rahhulleee"},"content":" requireAllNonNull(index);","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"rahhulleee"},"content":" this.index \u003d index;","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"rahhulleee"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"rahhulleee"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"rahhulleee"},"content":" * Executes the view command to display the policy details of the specified person.","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"rahhulleee"},"content":" * @param model The current model containing the address book data.","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"rahhulleee"},"content":" * @return The result of the command execution.","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"rahhulleee"},"content":" * @throws CommandException If the index is invalid or if an error occurs during command execution.","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"rahhulleee"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"rahhulleee"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"rahhulleee"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"rahhulleee"},"content":" requireAllNonNull(model);","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"rahhulleee"},"content":" // Update the filtered person list to display all persons","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"rahhulleee"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"rahhulleee"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"rahhulleee"},"content":" logger.info(\"Curr list is: \" + lastShownList);","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"rahhulleee"},"content":" logger.info(\"Curr index: \" + lastShownList.size() + \" WHILE OUR INDEX IS : \" + index);","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"rahhulleee"},"content":" // Check if the index is valid","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"rahhulleee"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"rahhulleee"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"rahhulleee"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"rahhulleee"},"content":" // Retrieve the person with the specified index","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"rahhulleee"},"content":" Person person \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"rahhulleee"},"content":" // Create an View predicate to filter the list to only contain the specified person","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"rahhulleee"},"content":" ViewPredicate pred \u003d new ViewPredicate(index, person);","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"rahhulleee"},"content":" model.updateFilteredPersonList(pred);","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"rahhulleee"},"content":" return new CommandResult(String.format(MESSAGE_VIEW_SUCCESS, person.getName()));","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"rahhulleee"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"rahhulleee"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"rahhulleee"},"content":" * Checks if this ViewCommand is equal to another object.","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"rahhulleee"},"content":" * @param other The object to compare to.","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"rahhulleee"},"content":" * @return True if the objects are equal, false otherwise.","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"rahhulleee"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"rahhulleee"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"rahhulleee"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"rahhulleee"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"rahhulleee"},"content":" return true;","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"rahhulleee"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"rahhulleee"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"rahhulleee"},"content":" if (!(other instanceof ViewCommand)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"rahhulleee"},"content":" return false;","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"rahhulleee"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"rahhulleee"},"content":" ViewCommand e \u003d (ViewCommand) other;","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"rahhulleee"},"content":" return index.equals(e.index);","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"rahhulleee"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":90,"author":{"gitId":"rahhulleee"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":91,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"rahhulleee":91}},{"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":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"youdonnnn"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MEETING;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":11,"author":{"gitId":"youdonnnn"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17"},{"lineNumber":13,"author":{"gitId":"Greg-Tan"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":16,"author":{"gitId":"Greg-Tan"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-21"},{"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.Address;","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"youdonnnn"},"content":"import seedu.address.model.person.Meeting;","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"youdonnnn"},"content":"import seedu.address.model.person.Policy;","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":28,"author":{"gitId":"youdonnnn"},"content":"","lastModifiedDate":"2024-03-21"},{"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":"Greg-Tan"},"content":" private final Logger logger \u003d LogsCenter.getLogger(AddCommandParser.class);","lastModifiedDate":"2024-03-21"},{"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":"irwynliong"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"Greg-Tan"},"content":" PREFIX_MEETING, PREFIX_TAG);","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"irwynliong"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME) || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":48,"author":{"gitId":"irwynliong"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"irwynliong"},"content":" PREFIX_MEETING);","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":51,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":52,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":54,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"irwynliong"},"content":" Meeting meeting \u003d ParserUtil.parseMeeting(argMultimap.getValue(PREFIX_MEETING).get());","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":58,"author":{"gitId":"Greg-Tan"},"content":" // Initialize the person with an empty set of policies","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"Greg-Tan"},"content":" Set\u003cPolicy\u003e emptyPolicies \u003d Collections.emptySet();","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"Greg-Tan"},"content":" Person person \u003d new Person(name, phone, email, address, meeting, tagList, emptyPolicies);","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * {@code Argument Multimap}.","lastModifiedDate":"2017-03-17"},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":70,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":74,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"youdonnnn":5,"irwynliong":5,"Greg-Tan":9,"-":55}},{"path":"src/main/java/seedu/address/logic/parser/AddPolicyCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Greg-Tan"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"Greg-Tan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"Greg-Tan"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"Greg-Tan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_POLICY_NAME;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"youdonnnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"Greg-Tan"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"Greg-Tan"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"Greg-Tan"},"content":"import seedu.address.logic.commands.AddPolicyCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"Greg-Tan"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"youdonnnn"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"youdonnnn"},"content":" * Parses input arguments and creates a new AddPolicyCommand object.","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"youdonnnn"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"Greg-Tan"},"content":"public class AddPolicyCommandParser implements Parser\u003cAddPolicyCommand\u003e {","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"youdonnnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"youdonnnn"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"youdonnnn"},"content":" * Parses the given {@code String} of arguments in the context of the AddPolicyCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"youdonnnn"},"content":" * and returns a AddPolicyCommand object for execution.","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"youdonnnn"},"content":" *","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"youdonnnn"},"content":" * @param args The arguments provided by the user.","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"youdonnnn"},"content":" * @return A parsed AddPolicyCommand object representing the user\u0027s command.","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"youdonnnn"},"content":" * @throws ParseException If the user input does not conform to the expected format.","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"youdonnnn"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"Greg-Tan"},"content":" public AddPolicyCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"Greg-Tan"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"Greg-Tan"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args,","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"Greg-Tan"},"content":" PREFIX_POLICY_NAME);","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"Greg-Tan"},"content":" Index index;","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"Greg-Tan"},"content":" try {","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"Greg-Tan"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"Greg-Tan"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"Greg-Tan"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"Greg-Tan"},"content":" AddPolicyCommand.MESSAGE_USAGE), ive);","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"Greg-Tan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"Greg-Tan"},"content":" String policyName \u003d argMultimap.getValue(PREFIX_POLICY_NAME).orElse(\"\");","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"Greg-Tan"},"content":" return new AddPolicyCommand(index, policyName);","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"Greg-Tan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"Greg-Tan"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"youdonnnn":13,"Greg-Tan":29}},{"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":"Greg-Tan"},"content":"import seedu.address.logic.commands.AddPolicyCommand;","lastModifiedDate":"2024-03-21"},{"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":"jimseah-0116"},"content":"import seedu.address.logic.commands.MeetingsCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"rahhulleee"},"content":"import seedu.address.logic.commands.ViewCommand;","lastModifiedDate":"2024-03-21"},{"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":"irwynliong"},"content":" @SuppressWarnings(\"checkstyle:Regexp\")","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":81,"author":{"gitId":"Greg-Tan"},"content":" case AddPolicyCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"Greg-Tan"},"content":" return new AddPolicyCommandParser().parse(arguments);","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":87,"author":{"gitId":"rahhulleee"},"content":" case ViewCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"rahhulleee"},"content":" return new ViewCommandParser().parse(arguments);","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":90,"author":{"gitId":"jimseah-0116"},"content":" case MeetingsCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-21"},{"lineNumber":91,"author":{"gitId":"jimseah-0116"},"content":" return new MeetingsCommand();","lastModifiedDate":"2024-03-21"},{"lineNumber":92,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":93,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26"},{"lineNumber":94,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29"},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11"},{"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"},{"lineNumber":99,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"jimseah-0116":4,"irwynliong":1,"Greg-Tan":4,"-":86,"rahhulleee":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":"-"},"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":"irwynliong"},"content":" public static final Prefix PREFIX_MEETING \u003d new Prefix(\"m/\");","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"youdonnnn"},"content":" public static final Prefix PREFIX_POLICY_NAME \u003d new Prefix(\"pn/\");","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"youdonnnn":1,"irwynliong":1,"-":14}},{"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":"irwynliong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MEETING;","lastModifiedDate":"2024-03-21"},{"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":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":36,"author":{"gitId":"irwynliong"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"irwynliong"},"content":" PREFIX_MEETING, PREFIX_TAG);","lastModifiedDate":"2024-03-21"},{"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":"irwynliong"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"irwynliong"},"content":" PREFIX_MEETING);","lastModifiedDate":"2024-03-21"},{"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":"-"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":62,"author":{"gitId":"-"},"content":" editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":64,"author":{"gitId":"irwynliong"},"content":" if (argMultimap.getValue(PREFIX_MEETING).isPresent()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"irwynliong"},"content":" editPersonDescriptor.setMeeting(ParserUtil.parseMeeting(argMultimap.getValue(PREFIX_MEETING).get()));","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPersonDescriptor::setTags);","lastModifiedDate":"2017-06-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"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":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"irwynliong":8,"-":83}},{"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":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-02-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11"},{"lineNumber":14,"author":{"gitId":"irwynliong"},"content":"import seedu.address.model.person.Meeting;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-02-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":32,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02"},{"lineNumber":34,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":36,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":46,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":49,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":57,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":61,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30"},{"lineNumber":62,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":64,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","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":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":72,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":76,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30"},{"lineNumber":77,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":78,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":79,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","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":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","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 email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":91,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":92,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":93,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":94,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":96,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","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":"irwynliong"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":100,"author":{"gitId":"irwynliong"},"content":" * Parses a {@code String meeting} into an {@code Meeting}.","lastModifiedDate":"2024-03-21"},{"lineNumber":101,"author":{"gitId":"irwynliong"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-21"},{"lineNumber":102,"author":{"gitId":"irwynliong"},"content":" *","lastModifiedDate":"2024-03-21"},{"lineNumber":103,"author":{"gitId":"irwynliong"},"content":" * @throws ParseException if the given {@code meeting} is invalid.","lastModifiedDate":"2024-03-21"},{"lineNumber":104,"author":{"gitId":"irwynliong"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":105,"author":{"gitId":"irwynliong"},"content":" public static Meeting parseMeeting(String meeting) throws ParseException {","lastModifiedDate":"2024-03-21"},{"lineNumber":106,"author":{"gitId":"irwynliong"},"content":" requireNonNull(meeting);","lastModifiedDate":"2024-03-21"},{"lineNumber":107,"author":{"gitId":"irwynliong"},"content":" String trimmedMeeting \u003d meeting.trim();","lastModifiedDate":"2024-03-21"},{"lineNumber":108,"author":{"gitId":"irwynliong"},"content":" if (!Meeting.isValidMeeting(trimmedMeeting)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":109,"author":{"gitId":"irwynliong"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":110,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":111,"author":{"gitId":"irwynliong"},"content":" return new Meeting(trimmedMeeting);","lastModifiedDate":"2024-03-21"},{"lineNumber":112,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":113,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","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 tag} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":120,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":121,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30"},{"lineNumber":122,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":123,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":124,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":126,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","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-02-11"},{"lineNumber":130,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07"},{"lineNumber":131,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":132,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":133,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15"},{"lineNumber":134,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11"},{"lineNumber":135,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11"},{"lineNumber":136,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":138,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":140,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"irwynliong":16,"-":124}},{"path":"src/main/java/seedu/address/logic/parser/ViewCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"rahhulleee"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"rahhulleee"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"rahhulleee"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"rahhulleee"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"rahhulleee"},"content":"import seedu.address.logic.commands.ViewCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"rahhulleee"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"rahhulleee"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"rahhulleee"},"content":" * Parses input arguments and creates a new ViewCommand object.","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"rahhulleee"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"rahhulleee"},"content":"public class ViewCommandParser implements Parser\u003cViewCommand\u003e {","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"rahhulleee"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"rahhulleee"},"content":" * Parses the given {@code String} of arguments in the context of the ViewCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"rahhulleee"},"content":" * and returns a ViewCommand object for execution.","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"rahhulleee"},"content":" * @param args The arguments provided by the user for the view command.","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"rahhulleee"},"content":" * @return A ViewCommand object representing the command to view a person\u0027s details.","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"rahhulleee"},"content":" * @throws ParseException If the user input does not conform to the expected format.","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"rahhulleee"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"rahhulleee"},"content":" public ViewCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"rahhulleee"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"rahhulleee"},"content":" try {","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"rahhulleee"},"content":" // Parse the index from the input arguments","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"rahhulleee"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"rahhulleee"},"content":" // Create and return a new ViewCommand with the parsed index","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"rahhulleee"},"content":" return new ViewCommand(index);","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"rahhulleee"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"rahhulleee"},"content":" // If parsing fails, throw a new ParseException with an error message","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"rahhulleee"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"rahhulleee"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, ViewCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"rahhulleee"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"rahhulleee"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"rahhulleee"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"rahhulleee":35}},{"path":"src/main/java/seedu/address/model/person/Meeting.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"irwynliong"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"irwynliong"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"irwynliong"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"irwynliong"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"irwynliong"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"irwynliong"},"content":" * Represents a Client\u0027s meeting time in the address book.","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"irwynliong"},"content":" * Guarantees: immutable; is always valid","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"irwynliong"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"jimseah-0116"},"content":"public class Meeting implements Comparable\u003cMeeting\u003e {","lastModifiedDate":"2024-03-24"},{"lineNumber":13,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"irwynliong"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"irwynliong"},"content":" \"Meeting has to be in yyyy-MM-dd HH:mm:ss format, and it should not be blank\";","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"irwynliong"},"content":" // The VALIDATION_REGEX for meeting time","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"irwynliong"},"content":" public static final String VALIDATION_REGEX \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"irwynliong"},"content":" \"^(\\\\d{4}-\\\\d{2}-\\\\d{2}(T\\\\d{2}:\\\\d{2}:\\\\d{2}| \\\\d{2}:\\\\d{2}:\\\\d{2})?)$\";","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"irwynliong"},"content":" public final String value;","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"irwynliong"},"content":" public final LocalDateTime meeting;","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"irwynliong"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"irwynliong"},"content":" * Constructs an {@code Meeting}.","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"irwynliong"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"irwynliong"},"content":" public Meeting(String meeting) {","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"irwynliong"},"content":" requireNonNull(meeting);","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"irwynliong"},"content":" this.value \u003d meeting;","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"irwynliong"},"content":" this.meeting \u003d stringToDateTime(meeting);","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"jimseah-0116"},"content":" public LocalDateTime getMeeting() {","lastModifiedDate":"2024-03-24"},{"lineNumber":32,"author":{"gitId":"jimseah-0116"},"content":" return meeting;","lastModifiedDate":"2024-03-24"},{"lineNumber":33,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":34,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":35,"author":{"gitId":"irwynliong"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"irwynliong"},"content":" * Returns true if a given string is a valid meeting.","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"irwynliong"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"irwynliong"},"content":" public static boolean isValidMeeting(String test) {","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"irwynliong"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"irwynliong"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"irwynliong"},"content":" * This method converts a string into a LocalDateTime object.","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"irwynliong"},"content":" * If the string is in the format \"yyyy-MM-dd\", it will be treated as a date at the start of the day.","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"irwynliong"},"content":" * If the string is in the format \"yyyy-MM-ddTHH:mm:ss\", it will be treated as a date with time.","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"irwynliong"},"content":" * Otherwise, the string is expected to be in the format \"yyyy-MM-dd HH:mm:ss\".","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"irwynliong"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"irwynliong"},"content":" * @param dateTime The string to be converted into a LocalDateTime object.","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"irwynliong"},"content":" * @return A LocalDateTime object that represents the date and time specified by the input string.","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"irwynliong"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"irwynliong"},"content":" private LocalDateTime stringToDateTime(String dateTime) {","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"irwynliong"},"content":" if (dateTime.length() \u003c\u003d 10) {","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"irwynliong"},"content":" return LocalDateTime.parse(dateTime + \"T00:00:00\", DateTimeFormatter.ISO_LOCAL_DATE_TIME);","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"irwynliong"},"content":" } else if (dateTime.contains(\"T\")) {","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"irwynliong"},"content":" return LocalDateTime.parse(dateTime, DateTimeFormatter.ISO_LOCAL_DATE_TIME);","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"irwynliong"},"content":" } else {","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"irwynliong"},"content":" return LocalDateTime.parse(dateTime, DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm:ss\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":61,"author":{"gitId":"irwynliong"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"irwynliong"},"content":" public String toString() {","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"irwynliong"},"content":" return meeting.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy HH:mm:ss\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"irwynliong"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"irwynliong"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"irwynliong"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"irwynliong"},"content":" return true;","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"irwynliong"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"irwynliong"},"content":" if (!(other instanceof Meeting)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"irwynliong"},"content":" return false;","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"irwynliong"},"content":" Meeting otherMeeting \u003d (Meeting) other;","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"irwynliong"},"content":" return meeting.equals(otherMeeting.meeting);","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"irwynliong"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"irwynliong"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"irwynliong"},"content":" return meeting.hashCode();","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":86,"author":{"gitId":"jimseah-0116"},"content":" @Override","lastModifiedDate":"2024-03-24"},{"lineNumber":87,"author":{"gitId":"jimseah-0116"},"content":" public int compareTo(Meeting o) {","lastModifiedDate":"2024-03-24"},{"lineNumber":88,"author":{"gitId":"jimseah-0116"},"content":" return this.meeting.compareTo(o.meeting);","lastModifiedDate":"2024-03-24"},{"lineNumber":89,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":90,"author":{"gitId":"irwynliong"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"jimseah-0116":11,"irwynliong":79}},{"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.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"irwynliong"},"content":" private final Meeting meeting;","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":27,"author":{"gitId":"Greg-Tan"},"content":" private final Set\u003cPolicy\u003e policies \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"youdonnnn"},"content":" * @param name The name of the person.","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"youdonnnn"},"content":" * @param phone The phone number of the person.","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"youdonnnn"},"content":" * @param email The email address of the person.","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"youdonnnn"},"content":" * @param address The address of the person.","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"youdonnnn"},"content":" * @param meeting The meeting details of the person.","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"youdonnnn"},"content":" * @param tags The set of tags associated with the person.","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"youdonnnn"},"content":" * @param policies The set of policies associated with the person.","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"youdonnnn"},"content":" public Person(Name name, Phone phone, Email email, Address address,","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"youdonnnn"},"content":" Meeting meeting, Set\u003cTag\u003e tags, Set\u003cPolicy\u003e policies) {","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"irwynliong"},"content":" requireAllNonNull(name, phone, email, address, meeting, tags);","lastModifiedDate":"2024-03-21"},{"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":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"irwynliong"},"content":" this.meeting \u003d meeting;","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":48,"author":{"gitId":"Greg-Tan"},"content":" this.policies.addAll(policies); // Initialize with provided policies","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return name;","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 Phone getPhone() {","lastModifiedDate":"2017-07-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return phone;","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":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2024-03-21"},{"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":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":68,"author":{"gitId":"irwynliong"},"content":" public Meeting getMeeting() {","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"irwynliong"},"content":" return meeting;","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"Greg-Tan"},"content":" public Set\u003cPolicy\u003e getPolicies() {","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"Greg-Tan"},"content":" return Collections.unmodifiableSet(policies);","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"Greg-Tan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"youdonnnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"Greg-Tan"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"Greg-Tan"},"content":" * Adds a policy to the set of policies.","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"Greg-Tan"},"content":" * @param policy The policy to be added.","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"Greg-Tan"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"Greg-Tan"},"content":" public void addPolicy(Policy policy) {","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"Greg-Tan"},"content":" this.policies.add(policy);","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"Greg-Tan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":" \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2020-12-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":105,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":108,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":111,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":112,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":115,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10"},{"lineNumber":117,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":120,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10"},{"lineNumber":121,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2024-03-21"},{"lineNumber":123,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2024-03-21"},{"lineNumber":124,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2024-03-21"},{"lineNumber":125,"author":{"gitId":"irwynliong"},"content":" \u0026\u0026 meeting.equals(otherPerson.meeting)","lastModifiedDate":"2024-03-21"},{"lineNumber":126,"author":{"gitId":"-"},"content":" \u0026\u0026 tags.equals(otherPerson.tags);","lastModifiedDate":"2023-07-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":130,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":131,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":132,"author":{"gitId":"irwynliong"},"content":" return Objects.hash(name, phone, email, address, meeting, tags);","lastModifiedDate":"2024-03-21"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":135,"author":{"gitId":"youdonnnn"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":136,"author":{"gitId":"youdonnnn"},"content":" * Returns a string representation of the person.","lastModifiedDate":"2024-03-21"},{"lineNumber":137,"author":{"gitId":"youdonnnn"},"content":" * The string representation contains the person\u0027s name, phone, email, address, tags, and policies.","lastModifiedDate":"2024-03-21"},{"lineNumber":138,"author":{"gitId":"youdonnnn"},"content":" * Example:","lastModifiedDate":"2024-03-21"},{"lineNumber":139,"author":{"gitId":"youdonnnn"},"content":" * Alice Pauline Phone: 12345678 Email: alice@example.com Address: 123, Jurong West Ave 6,","lastModifiedDate":"2024-03-21"},{"lineNumber":140,"author":{"gitId":"youdonnnn"},"content":" * #08-111 Tags: friends family Policies: [SuperSaver] [HealthGuard]","lastModifiedDate":"2024-03-21"},{"lineNumber":141,"author":{"gitId":"youdonnnn"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":143,"author":{"gitId":"youdonnnn"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2024-03-21"},{"lineNumber":144,"author":{"gitId":"youdonnnn"},"content":" builder.append(getName())","lastModifiedDate":"2024-03-21"},{"lineNumber":145,"author":{"gitId":"youdonnnn"},"content":" .append(\" Phone: \")","lastModifiedDate":"2024-03-21"},{"lineNumber":146,"author":{"gitId":"youdonnnn"},"content":" .append(getPhone())","lastModifiedDate":"2024-03-21"},{"lineNumber":147,"author":{"gitId":"youdonnnn"},"content":" .append(\" Email: \")","lastModifiedDate":"2024-03-21"},{"lineNumber":148,"author":{"gitId":"youdonnnn"},"content":" .append(getEmail())","lastModifiedDate":"2024-03-21"},{"lineNumber":149,"author":{"gitId":"youdonnnn"},"content":" .append(\" Address: \")","lastModifiedDate":"2024-03-21"},{"lineNumber":150,"author":{"gitId":"youdonnnn"},"content":" .append(getAddress())","lastModifiedDate":"2024-03-21"},{"lineNumber":151,"author":{"gitId":"youdonnnn"},"content":" .append(\" Remark: \")","lastModifiedDate":"2024-03-21"},{"lineNumber":152,"author":{"gitId":"youdonnnn"},"content":" .append(\" Tags: \");","lastModifiedDate":"2024-03-21"},{"lineNumber":153,"author":{"gitId":"youdonnnn"},"content":" getTags().forEach(builder::append);","lastModifiedDate":"2024-03-21"},{"lineNumber":154,"author":{"gitId":"youdonnnn"},"content":" builder.append(\" Policies: \");","lastModifiedDate":"2024-03-21"},{"lineNumber":155,"author":{"gitId":"youdonnnn"},"content":" getPolicies().forEach(policy -\u003e builder.append(\"[\").append(policy.policyName).append(\"]\").append(\" \"));","lastModifiedDate":"2024-03-21"},{"lineNumber":156,"author":{"gitId":"youdonnnn"},"content":" return builder.toString();","lastModifiedDate":"2024-03-21"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":158,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"youdonnnn":31,"irwynliong":9,"Greg-Tan":14,"-":104}},{"path":"src/main/java/seedu/address/model/person/Policy.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Greg-Tan"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"Greg-Tan"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"Greg-Tan"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"youdonnnn"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"youdonnnn"},"content":" * Represents a policy associated with a person.","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"youdonnnn"},"content":" * Guarantees: immutable; policyName is valid as declared in {@link #isValidField(String)}","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"youdonnnn"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"Greg-Tan"},"content":"public class Policy {","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"youdonnnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"youdonnnn"},"content":" public static final String STRING_VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"youdonnnn"},"content":" public static final String NUMBER_VALIDATION_REGEX \u003d \"\\\\d{3,}\";","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"youdonnnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"youdonnnn"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Policy Name must be alphanumeric\";","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"youdonnnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"Greg-Tan"},"content":" public final String policyName;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"youdonnnn"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"youdonnnn"},"content":" * Constructs a {@code Policy}.","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"youdonnnn"},"content":" *","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"youdonnnn"},"content":" * @param policyName A valid policy name.","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"youdonnnn"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"Greg-Tan"},"content":" public Policy(String policyName) {","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"Greg-Tan"},"content":" requireAllNonNull(policyName);","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"Greg-Tan"},"content":" checkArgument(isValidField(policyName), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"Greg-Tan"},"content":" this.policyName \u003d policyName;","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"Greg-Tan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"youdonnnn"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"youdonnnn"},"content":" * Returns true if a given string is a valid policy name.","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"youdonnnn"},"content":" *","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"youdonnnn"},"content":" * @param field The policy name to validate.","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"youdonnnn"},"content":" * @return True if the policy name is valid, false otherwise.","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"youdonnnn"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"Greg-Tan"},"content":" public static boolean isValidField(String field) {","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"Greg-Tan"},"content":" return field.matches(STRING_VALIDATION_REGEX);","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"Greg-Tan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"Greg-Tan"},"content":" public static boolean isValidNumber(String field) {","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"Greg-Tan"},"content":" return field.matches(NUMBER_VALIDATION_REGEX);","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"Greg-Tan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"Greg-Tan"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"youdonnnn":21,"Greg-Tan":23}},{"path":"src/main/java/seedu/address/model/person/PolicyName.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Greg-Tan"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"Greg-Tan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"Greg-Tan"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"Greg-Tan"},"content":" * Represents a Person\u0027s policyName in the address book.","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"Greg-Tan"},"content":" * Guarantees: immutable; is always valid","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"Greg-Tan"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"Greg-Tan"},"content":"public class PolicyName {","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"youdonnnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"Greg-Tan"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Policy Name can take any values, and it should not be blank\";","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"Greg-Tan"},"content":" public static final String VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"youdonnnn"},"content":" public final String value;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"youdonnnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"youdonnnn"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"youdonnnn"},"content":" * Constructs a {@code PolicyName}.","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"youdonnnn"},"content":" *","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"youdonnnn"},"content":" * @param policyName A valid policy name.","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"youdonnnn"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"Greg-Tan"},"content":" public PolicyName(String policyName) {","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"Greg-Tan"},"content":" requireNonNull(policyName);","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"Greg-Tan"},"content":" value \u003d policyName;","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"Greg-Tan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"Greg-Tan"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"Greg-Tan"},"content":" public String toString() {","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"Greg-Tan"},"content":" return value;","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"Greg-Tan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"Greg-Tan"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"Greg-Tan"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"Greg-Tan"},"content":" return other \u003d\u003d this // short circuit if same object","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"Greg-Tan"},"content":" || (other instanceof PolicyName // instanceof handles nulls","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"Greg-Tan"},"content":" \u0026\u0026 value.equals(((PolicyName) other).value)); // state check","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"Greg-Tan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"Greg-Tan"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"Greg-Tan"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"Greg-Tan"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"Greg-Tan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"Greg-Tan"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"youdonnnn":8,"Greg-Tan":34}},{"path":"src/main/java/seedu/address/model/person/ViewPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"rahhulleee"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"rahhulleee"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"rahhulleee"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"rahhulleee"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"rahhulleee"},"content":" * Represents a Predicate used to filter a list of persons to display only the person","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"rahhulleee"},"content":" * with the specified index.","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"rahhulleee"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"rahhulleee"},"content":"public class ViewPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"rahhulleee"},"content":" private final Index index;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"rahhulleee"},"content":" private final Person person;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"rahhulleee"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"rahhulleee"},"content":" * Constructs a ViewPredicate with the specified index and person.","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"rahhulleee"},"content":" * @param index The index of the person to be filtered.","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"rahhulleee"},"content":" * @param person The person to be displayed.","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"rahhulleee"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"rahhulleee"},"content":" public ViewPredicate(Index index, Person person) {","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"rahhulleee"},"content":" this.index \u003d index;","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"rahhulleee"},"content":" this.person \u003d person;","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"rahhulleee"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"rahhulleee"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"rahhulleee"},"content":" * Tests if a given person matches the filter criteria.","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"rahhulleee"},"content":" * @param otherPerson The person to be tested.","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"rahhulleee"},"content":" * @return True if the given person matches the filter criteria, false otherwise.","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"rahhulleee"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"rahhulleee"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"rahhulleee"},"content":" public boolean test(Person otherPerson) {","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"rahhulleee"},"content":" // Compare the person\u0027s index in the filtered list with the target index","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"rahhulleee"},"content":" return otherPerson.equals(person);","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"rahhulleee"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"rahhulleee"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"rahhulleee"},"content":" * Gets the index associated with this predicate.","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"rahhulleee"},"content":" * @return The index.","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"rahhulleee"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"rahhulleee"},"content":" public Index getIndex() {","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"rahhulleee"},"content":" return this.index;","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"rahhulleee"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"rahhulleee"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"rahhulleee"},"content":" * Checks if this ViewPredicate is equal to another object.","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"rahhulleee"},"content":" * @param other The object to compare to.","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"rahhulleee"},"content":" * @return True if the objects are equal, false otherwise.","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"rahhulleee"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"rahhulleee"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"rahhulleee"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"rahhulleee"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"rahhulleee"},"content":" return true;","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"rahhulleee"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"rahhulleee"},"content":" if (!(other instanceof ViewPredicate)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"rahhulleee"},"content":" return false;","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"rahhulleee"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"rahhulleee"},"content":" ViewPredicate indexPredicate \u003d (ViewPredicate) other;","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"rahhulleee"},"content":" return index.equals(indexPredicate.index);","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"rahhulleee"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"rahhulleee"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"rahhulleee"},"content":" * Returns a string representation of the ViewPredicate.","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"rahhulleee"},"content":" * @return A string representation of the ViewPredicate.","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"rahhulleee"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"rahhulleee"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"rahhulleee"},"content":" public String toString() {","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"rahhulleee"},"content":" return \"Index: \" + index;","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"rahhulleee"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"rahhulleee"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"rahhulleee":69}},{"path":"src/main/java/seedu/address/model/person/exceptions/DuplicateClientException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"irwynliong"},"content":"package seedu.address.model.person.exceptions;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"irwynliong"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"irwynliong"},"content":" * Signals that the operation will result in duplicate Clients (Clients are considered duplicates if they have the same","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"irwynliong"},"content":" * identity).","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"irwynliong"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"irwynliong"},"content":"public class DuplicateClientException extends RuntimeException {","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"irwynliong"},"content":" public DuplicateClientException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"irwynliong"},"content":" super(\"Operation would result in duplicate clients\");","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"irwynliong"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"irwynliong":11}},{"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":"Greg-Tan"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-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.Address;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"youdonnnn"},"content":"import seedu.address.model.person.Meeting;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"jimseah-0116"},"content":"import seedu.address.model.person.Policy;","lastModifiedDate":"2024-03-24"},{"lineNumber":17,"author":{"gitId":"youdonnnn"},"content":"import seedu.address.model.person.PolicyName;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16"},{"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":"Greg-Tan"},"content":" public static final PolicyName EMPTY_POLICY_NAME \u003d new PolicyName(\"\");","lastModifiedDate":"2024-03-21"},{"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":"-"},"content":" new Person(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":28,"author":{"gitId":"Greg-Tan"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"), new Meeting(\"2024-02-12\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"Greg-Tan"},"content":" getTagSet(\"friends\"), Collections.emptySet()),","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" new Person(new Name(\"Bernice Yu\"), new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":31,"author":{"gitId":"Greg-Tan"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"), new Meeting(\"2024-04-12\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"Greg-Tan"},"content":" getTagSet(\"colleagues\", \"friends\"), Collections.emptySet()),","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":34,"author":{"gitId":"Greg-Tan"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"), new Meeting(\"2024-05-12\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"Greg-Tan"},"content":" getTagSet(\"neighbours\"), Collections.emptySet()),","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" new Person(new Name(\"David Li\"), new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":37,"author":{"gitId":"Greg-Tan"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"), new Meeting(\"2024-06-12\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"Greg-Tan"},"content":" getTagSet(\"family\"), Collections.emptySet()),","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":40,"author":{"gitId":"Greg-Tan"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"), new Meeting(\"2024-07-12\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"Greg-Tan"},"content":" getTagSet(\"classmates\"), Collections.emptySet()),","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":43,"author":{"gitId":"Greg-Tan"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"), new Meeting(\"2024-08-12\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"Greg-Tan"},"content":" getTagSet(\"colleagues\"), Collections.emptySet())","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07"},{"lineNumber":50,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":65,"author":{"gitId":"jimseah-0116"},"content":" public static Set\u003cPolicy\u003e getPoliciesSet(String[] policies) {","lastModifiedDate":"2024-03-24"},{"lineNumber":66,"author":{"gitId":"jimseah-0116"},"content":" return Arrays.stream(policies)","lastModifiedDate":"2024-03-24"},{"lineNumber":67,"author":{"gitId":"jimseah-0116"},"content":" .map(Policy::new)","lastModifiedDate":"2024-03-24"},{"lineNumber":68,"author":{"gitId":"jimseah-0116"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2024-03-24"},{"lineNumber":69,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"youdonnnn":2,"jimseah-0116":6,"Greg-Tan":14,"-":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":"-"},"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":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"youdonnnn"},"content":"import seedu.address.model.person.Meeting;","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"youdonnnn"},"content":"import seedu.address.model.person.Policy;","lastModifiedDate":"2024-03-21"},{"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":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"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":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"irwynliong"},"content":" private final String meeting;","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09"},{"lineNumber":36,"author":{"gitId":"Greg-Tan"},"content":" private final List\u003cJsonAdaptedPolicyTag\u003e policies \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"youdonnnn"},"content":" @JsonProperty(\"meeting\") String meeting, @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags,","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"youdonnnn"},"content":" @JsonProperty(\"policies\") List\u003cJsonAdaptedPolicyTag\u003e policies) {","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-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":"irwynliong"},"content":" this.meeting \u003d meeting;","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"Greg-Tan"},"content":" if (policies !\u003d null) {","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"Greg-Tan"},"content":" this.policies.addAll(policies);","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"Greg-Tan"},"content":" }","lastModifiedDate":"2024-03-21"},{"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"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"irwynliong"},"content":" meeting \u003d source.getMeeting().value;","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09"},{"lineNumber":71,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"Greg-Tan"},"content":" policies.addAll(source.getPolicies().stream()","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"Greg-Tan"},"content":" .map(JsonAdaptedPolicyTag::new)","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"Greg-Tan"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2024-03-21"},{"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":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"Greg-Tan"},"content":" final List\u003cPolicy\u003e personPolicies \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"Greg-Tan"},"content":" for (JsonAdaptedPolicyTag policy : policies) {","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"Greg-Tan"},"content":" personPolicies.add(policy.toModelType());","lastModifiedDate":"2024-03-21"},{"lineNumber":90,"author":{"gitId":"Greg-Tan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":91,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":92,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09"},{"lineNumber":93,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":128,"author":{"gitId":"irwynliong"},"content":" if (meeting \u003d\u003d null) {","lastModifiedDate":"2024-03-21"},{"lineNumber":129,"author":{"gitId":"irwynliong"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Meeting.class.getSimpleName()));","lastModifiedDate":"2024-03-21"},{"lineNumber":130,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":131,"author":{"gitId":"irwynliong"},"content":" if (!Meeting.isValidMeeting(meeting)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":132,"author":{"gitId":"irwynliong"},"content":" throw new IllegalValueException(Meeting.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":133,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":134,"author":{"gitId":"irwynliong"},"content":" final Meeting modelMeeting \u003d new Meeting(meeting);","lastModifiedDate":"2024-03-21"},{"lineNumber":135,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":136,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13"},{"lineNumber":137,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":138,"author":{"gitId":"Greg-Tan"},"content":" final Set\u003cPolicy\u003e modelPolicies \u003d new HashSet\u003c\u003e(personPolicies);","lastModifiedDate":"2024-03-21"},{"lineNumber":139,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":140,"author":{"gitId":"Greg-Tan"},"content":" return new Person(modelName, modelPhone, modelEmail, modelAddress, modelMeeting, modelTags, modelPolicies);","lastModifiedDate":"2024-03-21"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":143,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"youdonnnn":4,"irwynliong":10,"Greg-Tan":22,"-":107}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedPolicyTag.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Greg-Tan"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"Greg-Tan"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"Greg-Tan"},"content":"import com.fasterxml.jackson.annotation.JsonValue;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"youdonnnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"Greg-Tan"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"Greg-Tan"},"content":"import seedu.address.model.person.Policy;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"youdonnnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"youdonnnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"youdonnnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"youdonnnn"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"youdonnnn"},"content":" * Jackson-friendly version of {@link Policy}.","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"youdonnnn"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"Greg-Tan"},"content":"public class JsonAdaptedPolicyTag {","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"Greg-Tan"},"content":" private final String tagName;","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"Greg-Tan"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"Greg-Tan"},"content":" * Constructs a {@code JsonAdaptedTag} with the given {@code tagName}.","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"Greg-Tan"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"Greg-Tan"},"content":" @JsonCreator","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"Greg-Tan"},"content":" public JsonAdaptedPolicyTag(String tagName) {","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"Greg-Tan"},"content":" this.tagName \u003d tagName;","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"Greg-Tan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"Greg-Tan"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"Greg-Tan"},"content":" * Converts a given {@code Tag} into this class for Jackson use.","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"Greg-Tan"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"Greg-Tan"},"content":" public JsonAdaptedPolicyTag(Policy source) {","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"Greg-Tan"},"content":" tagName \u003d source.policyName;","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"Greg-Tan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"youdonnnn"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"youdonnnn"},"content":" * Gets the tag name associated with this adapted policy tag.","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"youdonnnn"},"content":" *","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"youdonnnn"},"content":" * @return The name of the policy tag.","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"youdonnnn"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"Greg-Tan"},"content":" @JsonValue","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"Greg-Tan"},"content":" public String getTagName() {","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"Greg-Tan"},"content":" return tagName;","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"Greg-Tan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"Greg-Tan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"Greg-Tan"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"Greg-Tan"},"content":" * Converts this Jackson-friendly adapted tag object into the model\u0027s {@code Tag} object.","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"Greg-Tan"},"content":" *","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"Greg-Tan"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted tag.","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"Greg-Tan"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"Greg-Tan"},"content":" public Policy toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"Greg-Tan"},"content":" if (!Policy.isValidField(tagName)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"Greg-Tan"},"content":" throw new IllegalValueException(Policy.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"Greg-Tan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"Greg-Tan"},"content":" return new Policy(tagName);","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"Greg-Tan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"Greg-Tan"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"youdonnnn":12,"Greg-Tan":42}},{"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":"-"},"content":"import seedu.address.model.person.Person;","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":" * 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":"irwynliong"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"Persons list contains duplicate client(s).\";","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedPerson\u003e persons \u003d new ArrayList\u003c\u003e();","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":" * 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":"-"},"content":" public JsonSerializableAddressBook(@JsonProperty(\"persons\") List\u003cJsonAdaptedPerson\u003e persons) {","lastModifiedDate":"2018-08-13"},{"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":"-"},"content":" persons.addAll(source.getPersonList().stream().map(JsonAdaptedPerson::new).collect(Collectors.toList()));","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 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":"-"},"content":" for (JsonAdaptedPerson jsonAdaptedPerson : persons) {","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" Person person \u003d jsonAdaptedPerson.toModelType();","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (addressBook.hasPerson(person)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2018-08-13"},{"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":{"irwynliong":1,"-":59}},{"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":"jimseah-0116"},"content":"import javafx.scene.input.KeyCode;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"jimseah-0116"},"content":"import javafx.scene.input.KeyEvent;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Controller for a help page","lastModifiedDate":"2016-08-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class HelpWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-12-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":20,"author":{"gitId":"jimseah-0116"},"content":" public static final String USERGUIDE_URL \u003d \"https://ay2324s2-cs2103t-w09-4.github.io/tp/UserGuide.html\";","lastModifiedDate":"2024-03-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String HELP_MESSAGE \u003d \"Refer to the user guide: \" + USERGUIDE_URL;","lastModifiedDate":"2019-08-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(HelpWindow.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"HelpWindow.fxml\";","lastModifiedDate":"2016-09-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-12-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Button copyButton;","lastModifiedDate":"2019-08-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Label helpMessage;","lastModifiedDate":"2019-08-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-12-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * @param root Stage to use as the root of the HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public HelpWindow(Stage root) {","lastModifiedDate":"2017-12-01"},{"lineNumber":38,"author":{"gitId":"-"},"content":" super(FXML, root);","lastModifiedDate":"2017-12-01"},{"lineNumber":39,"author":{"gitId":"-"},"content":" helpMessage.setText(HELP_MESSAGE);","lastModifiedDate":"2019-08-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public HelpWindow() {","lastModifiedDate":"2017-12-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":" this(new Stage());","lastModifiedDate":"2017-12-01"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-01"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-01"},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Shows the help window.","lastModifiedDate":"2017-08-16"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * @throws IllegalStateException","lastModifiedDate":"2017-08-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * \u003cul\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * if this method is called on a thread other than the JavaFX Application Thread.","lastModifiedDate":"2017-08-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * if this method is called during animation or layout processing.","lastModifiedDate":"2017-08-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * if this method is called on the primary stage.","lastModifiedDate":"2017-08-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * if {@code dialogStage} is already showing.","lastModifiedDate":"2017-08-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * \u003c/ul\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void show() {","lastModifiedDate":"2016-08-18"},{"lineNumber":68,"author":{"gitId":"-"},"content":" logger.fine(\"Showing help page about the application.\");","lastModifiedDate":"2016-12-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":" getRoot().show();","lastModifiedDate":"2018-02-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" getRoot().centerOnScreen();","lastModifiedDate":"2019-08-19"},{"lineNumber":71,"author":{"gitId":"jimseah-0116"},"content":" closeOnEsc();","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * Returns true if the help window is currently being shown.","lastModifiedDate":"2018-03-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public boolean isShowing() {","lastModifiedDate":"2018-03-15"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return getRoot().isShowing();","lastModifiedDate":"2018-03-15"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":81,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * Hides the help window.","lastModifiedDate":"2018-12-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void hide() {","lastModifiedDate":"2018-12-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" getRoot().hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-08"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-08"},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Focuses on the help window.","lastModifiedDate":"2018-03-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void focus() {","lastModifiedDate":"2018-03-15"},{"lineNumber":92,"author":{"gitId":"-"},"content":" getRoot().requestFocus();","lastModifiedDate":"2018-03-15"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":96,"author":{"gitId":"jimseah-0116"},"content":" * Copies the URL of the user guide to the clipboard.","lastModifiedDate":"2024-03-21"},{"lineNumber":97,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-08-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" private void copyUrl() {","lastModifiedDate":"2019-08-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" final Clipboard clipboard \u003d Clipboard.getSystemClipboard();","lastModifiedDate":"2019-08-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" final ClipboardContent url \u003d new ClipboardContent();","lastModifiedDate":"2019-08-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":" url.putString(USERGUIDE_URL);","lastModifiedDate":"2019-08-19"},{"lineNumber":103,"author":{"gitId":"-"},"content":" clipboard.setContent(url);","lastModifiedDate":"2019-08-19"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-08-19"},{"lineNumber":105,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":106,"author":{"gitId":"jimseah-0116"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":107,"author":{"gitId":"jimseah-0116"},"content":" * Closes the window when user presses \"Esc\" key.","lastModifiedDate":"2024-03-21"},{"lineNumber":108,"author":{"gitId":"jimseah-0116"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":109,"author":{"gitId":"jimseah-0116"},"content":" public void closeOnEsc() {","lastModifiedDate":"2024-03-21"},{"lineNumber":110,"author":{"gitId":"jimseah-0116"},"content":" getRoot().addEventHandler(KeyEvent.KEY_RELEASED, (KeyEvent event) -\u003e {","lastModifiedDate":"2024-03-21"},{"lineNumber":111,"author":{"gitId":"jimseah-0116"},"content":" if (event.getCode() \u003d\u003d KeyCode.ESCAPE) {","lastModifiedDate":"2024-03-21"},{"lineNumber":112,"author":{"gitId":"jimseah-0116"},"content":" hide();","lastModifiedDate":"2024-03-21"},{"lineNumber":113,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":114,"author":{"gitId":"jimseah-0116"},"content":" });","lastModifiedDate":"2024-03-21"},{"lineNumber":115,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":116,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"jimseah-0116":16,"-":100}},{"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":"-"},"content":" private ResultDisplay resultDisplay;","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private HelpWindow helpWindow;","lastModifiedDate":"2018-03-15"},{"lineNumber":37,"author":{"gitId":"jimseah-0116"},"content":" private MeetingsWindow meetingsWindow;","lastModifiedDate":"2024-03-21"},{"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":"-"},"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":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08"},{"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":"jimseah-0116"},"content":" meetingsWindow \u003d new MeetingsWindow(logic);","lastModifiedDate":"2024-03-24"},{"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":" 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":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25"},{"lineNumber":120,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":121,"author":{"gitId":"rahhulleee"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getAddressBookFilePath());","lastModifiedDate":"2024-03-11"},{"lineNumber":122,"author":{"gitId":"rahhulleee"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2024-03-11"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":125,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":126,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27"},{"lineNumber":127,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":128,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":129,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27"},{"lineNumber":130,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27"},{"lineNumber":131,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27"},{"lineNumber":132,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27"},{"lineNumber":133,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":137,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":138,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15"},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":140,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":141,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15"},{"lineNumber":143,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":144,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15"},{"lineNumber":145,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":149,"author":{"gitId":"jimseah-0116"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":150,"author":{"gitId":"jimseah-0116"},"content":" * Opens the meetings window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2024-03-21"},{"lineNumber":151,"author":{"gitId":"jimseah-0116"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":152,"author":{"gitId":"jimseah-0116"},"content":" @FXML","lastModifiedDate":"2024-03-21"},{"lineNumber":153,"author":{"gitId":"jimseah-0116"},"content":" public void handleMeetings() {","lastModifiedDate":"2024-03-21"},{"lineNumber":154,"author":{"gitId":"jimseah-0116"},"content":" if (!meetingsWindow.isShowing()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":155,"author":{"gitId":"jimseah-0116"},"content":" meetingsWindow.displayMeetings();","lastModifiedDate":"2024-03-24"},{"lineNumber":156,"author":{"gitId":"jimseah-0116"},"content":" } else {","lastModifiedDate":"2024-03-21"},{"lineNumber":157,"author":{"gitId":"jimseah-0116"},"content":" meetingsWindow.focus();","lastModifiedDate":"2024-03-21"},{"lineNumber":158,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":159,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":160,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":161,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15"},{"lineNumber":162,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":165,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":166,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18"},{"lineNumber":167,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":168,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":169,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18"},{"lineNumber":170,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":174,"author":{"gitId":"jimseah-0116"},"content":" meetingsWindow.hide();","lastModifiedDate":"2024-03-21"},{"lineNumber":175,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":178,"author":{"gitId":"-"},"content":" public PersonListPanel getPersonListPanel() {","lastModifiedDate":"2016-08-25"},{"lineNumber":179,"author":{"gitId":"-"},"content":" return personListPanel;","lastModifiedDate":"2018-08-14"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"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":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09"},{"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":"jimseah-0116"},"content":" if (commandResult.isShowMeetings()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":198,"author":{"gitId":"jimseah-0116"},"content":" handleMeetings();","lastModifiedDate":"2024-03-21"},{"lineNumber":199,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":200,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-03-21"},{"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":{"jimseah-0116":19,"-":191,"rahhulleee":2}},{"path":"src/main/java/seedu/address/ui/MeetingsWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jimseah-0116"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"jimseah-0116"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-24"},{"lineNumber":4,"author":{"gitId":"jimseah-0116"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-24"},{"lineNumber":5,"author":{"gitId":"jimseah-0116"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-03-24"},{"lineNumber":6,"author":{"gitId":"jimseah-0116"},"content":"import java.util.List;","lastModifiedDate":"2024-03-24"},{"lineNumber":7,"author":{"gitId":"jimseah-0116"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"jimseah-0116"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-24"},{"lineNumber":9,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"jimseah-0116"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"jimseah-0116"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"jimseah-0116"},"content":"import javafx.scene.input.KeyCode;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"jimseah-0116"},"content":"import javafx.scene.input.KeyEvent;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"jimseah-0116"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"jimseah-0116"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"jimseah-0116"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2024-03-24"},{"lineNumber":17,"author":{"gitId":"jimseah-0116"},"content":"import seedu.address.model.person.Meeting;","lastModifiedDate":"2024-03-24"},{"lineNumber":18,"author":{"gitId":"jimseah-0116"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-24"},{"lineNumber":19,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"jimseah-0116"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"jimseah-0116"},"content":" * Controller for a help page","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"jimseah-0116"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"jimseah-0116"},"content":"public class MeetingsWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"jimseah-0116"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(MeetingsWindow.class);","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"jimseah-0116"},"content":" private static final String FXML \u003d \"MeetingsWindow.fxml\";","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"jimseah-0116"},"content":" private final Logic logic;","lastModifiedDate":"2024-03-24"},{"lineNumber":27,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"jimseah-0116"},"content":" @FXML","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"jimseah-0116"},"content":" private Label meetingsMessage;","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"jimseah-0116"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"jimseah-0116"},"content":" * Creates a new MeetingsWindow.","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"jimseah-0116"},"content":" *","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"jimseah-0116"},"content":" * @param root Stage to use as the root of the MeetingsWindow.","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"jimseah-0116"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"jimseah-0116"},"content":" public MeetingsWindow(Stage root, Logic logic) {","lastModifiedDate":"2024-03-24"},{"lineNumber":37,"author":{"gitId":"jimseah-0116"},"content":" super(FXML, root);","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"jimseah-0116"},"content":" this.logic \u003d logic;","lastModifiedDate":"2024-03-24"},{"lineNumber":39,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"jimseah-0116"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"jimseah-0116"},"content":" * Creates a new MeetingsWindow with a new Stage.","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"jimseah-0116"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"jimseah-0116"},"content":" public MeetingsWindow(Logic logic) {","lastModifiedDate":"2024-03-24"},{"lineNumber":45,"author":{"gitId":"jimseah-0116"},"content":" this(new Stage(), logic);","lastModifiedDate":"2024-03-24"},{"lineNumber":46,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"jimseah-0116"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"jimseah-0116"},"content":" * Shows the meetings window and displays the list of meetings.","lastModifiedDate":"2024-03-24"},{"lineNumber":50,"author":{"gitId":"jimseah-0116"},"content":" * @throws IllegalStateException","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"jimseah-0116"},"content":" * \u003cul\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"jimseah-0116"},"content":" * \u003cli\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"jimseah-0116"},"content":" * if this method is called on a thread other than the JavaFX Application Thread.","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"jimseah-0116"},"content":" * \u003c/li\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"jimseah-0116"},"content":" * \u003cli\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"jimseah-0116"},"content":" * if this method is called during animation or layout processing.","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"jimseah-0116"},"content":" * \u003c/li\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"jimseah-0116"},"content":" * \u003cli\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"jimseah-0116"},"content":" * if this method is called on the primary stage.","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"jimseah-0116"},"content":" * \u003c/li\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"jimseah-0116"},"content":" * \u003cli\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"jimseah-0116"},"content":" * if {@code dialogStage} is already showing.","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"jimseah-0116"},"content":" * \u003c/li\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"jimseah-0116"},"content":" * \u003c/ul\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"jimseah-0116"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"jimseah-0116"},"content":" public void displayMeetings() {","lastModifiedDate":"2024-03-24"},{"lineNumber":67,"author":{"gitId":"jimseah-0116"},"content":" logger.fine(\"Showing meetings window for the application.\");","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"jimseah-0116"},"content":" getRoot().show();","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"jimseah-0116"},"content":" getRoot().centerOnScreen();","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":71,"author":{"gitId":"jimseah-0116"},"content":" List\u003cPerson\u003e people \u003d logic.getFilteredPersonList();","lastModifiedDate":"2024-03-24"},{"lineNumber":72,"author":{"gitId":"jimseah-0116"},"content":" people \u003d people.stream()","lastModifiedDate":"2024-03-24"},{"lineNumber":73,"author":{"gitId":"jimseah-0116"},"content":" .filter(p -\u003e p.getMeeting() !\u003d null)","lastModifiedDate":"2024-03-24"},{"lineNumber":74,"author":{"gitId":"jimseah-0116"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2024-03-24"},{"lineNumber":75,"author":{"gitId":"jimseah-0116"},"content":" people.sort(Comparator.comparing(Person::getMeeting));","lastModifiedDate":"2024-03-24"},{"lineNumber":76,"author":{"gitId":"jimseah-0116"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-03-24"},{"lineNumber":77,"author":{"gitId":"jimseah-0116"},"content":" sb.append(\"Here are all the meetings in chronological order: \\n\");","lastModifiedDate":"2024-03-24"},{"lineNumber":78,"author":{"gitId":"jimseah-0116"},"content":" int count \u003d 1;","lastModifiedDate":"2024-03-24"},{"lineNumber":79,"author":{"gitId":"jimseah-0116"},"content":" for (Person p : people) {","lastModifiedDate":"2024-03-24"},{"lineNumber":80,"author":{"gitId":"jimseah-0116"},"content":" sb.append(count).append(\" | \").append(p.getMeeting().toString())","lastModifiedDate":"2024-03-24"},{"lineNumber":81,"author":{"gitId":"jimseah-0116"},"content":" .append(\" with: \").append(p.getName()).append(\"\\n\");","lastModifiedDate":"2024-03-24"},{"lineNumber":82,"author":{"gitId":"jimseah-0116"},"content":" count++;","lastModifiedDate":"2024-03-24"},{"lineNumber":83,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":84,"author":{"gitId":"jimseah-0116"},"content":" meetingsMessage.setText(sb.toString());","lastModifiedDate":"2024-03-24"},{"lineNumber":85,"author":{"gitId":"jimseah-0116"},"content":" closeOnEsc();","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"jimseah-0116"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"jimseah-0116"},"content":" * Returns true if the meetings window is currently being shown.","lastModifiedDate":"2024-03-21"},{"lineNumber":90,"author":{"gitId":"jimseah-0116"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":91,"author":{"gitId":"jimseah-0116"},"content":" public boolean isShowing() {","lastModifiedDate":"2024-03-21"},{"lineNumber":92,"author":{"gitId":"jimseah-0116"},"content":" return getRoot().isShowing();","lastModifiedDate":"2024-03-21"},{"lineNumber":93,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":94,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":95,"author":{"gitId":"jimseah-0116"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":96,"author":{"gitId":"jimseah-0116"},"content":" * Hides the meetings window.","lastModifiedDate":"2024-03-21"},{"lineNumber":97,"author":{"gitId":"jimseah-0116"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":98,"author":{"gitId":"jimseah-0116"},"content":" public void hide() {","lastModifiedDate":"2024-03-21"},{"lineNumber":99,"author":{"gitId":"jimseah-0116"},"content":" getRoot().hide();","lastModifiedDate":"2024-03-21"},{"lineNumber":100,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":101,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":102,"author":{"gitId":"jimseah-0116"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":103,"author":{"gitId":"jimseah-0116"},"content":" * Focuses on the meetings window.","lastModifiedDate":"2024-03-21"},{"lineNumber":104,"author":{"gitId":"jimseah-0116"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":105,"author":{"gitId":"jimseah-0116"},"content":" public void focus() {","lastModifiedDate":"2024-03-21"},{"lineNumber":106,"author":{"gitId":"jimseah-0116"},"content":" getRoot().requestFocus();","lastModifiedDate":"2024-03-21"},{"lineNumber":107,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":108,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":109,"author":{"gitId":"jimseah-0116"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":110,"author":{"gitId":"jimseah-0116"},"content":" * Closes the window when user presses \"Esc\" key.","lastModifiedDate":"2024-03-21"},{"lineNumber":111,"author":{"gitId":"jimseah-0116"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":112,"author":{"gitId":"jimseah-0116"},"content":" public void closeOnEsc() {","lastModifiedDate":"2024-03-21"},{"lineNumber":113,"author":{"gitId":"jimseah-0116"},"content":" getRoot().addEventHandler(KeyEvent.KEY_RELEASED, (KeyEvent event) -\u003e {","lastModifiedDate":"2024-03-21"},{"lineNumber":114,"author":{"gitId":"jimseah-0116"},"content":" if (event.getCode() \u003d\u003d KeyCode.ESCAPE) {","lastModifiedDate":"2024-03-21"},{"lineNumber":115,"author":{"gitId":"jimseah-0116"},"content":" hide();","lastModifiedDate":"2024-03-21"},{"lineNumber":116,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":117,"author":{"gitId":"jimseah-0116"},"content":" });","lastModifiedDate":"2024-03-21"},{"lineNumber":118,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":119,"author":{"gitId":"jimseah-0116"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"jimseah-0116":119}},{"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 address;","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":"youdonnnn"},"content":" private FlowPane policies;","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"Greg-Tan"},"content":" @FXML","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"irwynliong"},"content":" private Label meeting;","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"irwynliong"},"content":" @FXML","lastModifiedDate":"2024-03-21"},{"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":" address.setText(person.getAddress().value);","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"irwynliong"},"content":" meeting.setText(person.getMeeting().value);","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":" person.getTags().stream()","lastModifiedDate":"2019-01-02"},{"lineNumber":61,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02"},{"lineNumber":62,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02"},{"lineNumber":63,"author":{"gitId":"youdonnnn"},"content":" person.getPolicies().stream()","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"youdonnnn"},"content":" .sorted(Comparator.comparing(policy -\u003e policy.policyName))","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"youdonnnn"},"content":" .forEach(policy -\u003e policies.getChildren().add(new Label(policy.policyName)));","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":67,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"youdonnnn":4,"irwynliong":3,"Greg-Tan":1,"-":59}},{"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":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25"},{"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":"rahhulleee"},"content":" private static final String ICON_APPLICATION \u003d \"/images/insure_book.png\";","lastModifiedDate":"2024-03-12"},{"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":{"-":87,"rahhulleee":1}},{"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":"rahhulleee"},"content":" -fx-text-fill: #000000; /* Changed to black */","lastModifiedDate":"2024-03-11"},{"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":"rahhulleee"},"content":" -fx-text-fill: #000000; /* Changed to black */","lastModifiedDate":"2024-03-11"},{"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":"rahhulleee"},"content":" -fx-text-fill: #000000; /* Changed to black */","lastModifiedDate":"2024-03-11"},{"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":"rahhulleee"},"content":" -fx-text-fill: #000000; /* Text color not explicitly set before, assuming change needed */","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":".tab-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" -fx-min-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" -fx-max-height: 0;","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":".table-view {","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" -fx-base: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" -fx-control-inner-background: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" -fx-padding: 5;","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":".table-view .column-header-background {","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" -fx-size: 35;","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" -fx-border-color:","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" derive(-fx-base, 80%)","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":".table-view .column-header .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":71,"author":{"gitId":"rahhulleee"},"content":" -fx-text-fill: #000000; /* Changed to black */","lastModifiedDate":"2024-03-11"},{"lineNumber":72,"author":{"gitId":"-"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","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":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2016-08-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":82,"author":{"gitId":"-"},"content":" -fx-border-color: transparent transparent transparent #4d4d4d;","lastModifiedDate":"2017-03-02"},{"lineNumber":83,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":".split-pane {","lastModifiedDate":"2016-08-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":".list-view {","lastModifiedDate":"2017-03-02"},{"lineNumber":92,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":93,"author":{"gitId":"-"},"content":" -fx-padding: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":94,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2018-01-10"},{"lineNumber":95,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":97,"author":{"gitId":"-"},"content":".list-cell {","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","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":".list-cell:filled:even {","lastModifiedDate":"2017-03-02"},{"lineNumber":104,"author":{"gitId":"rahhulleee"},"content":" -fx-background-color: #ea9c3c; /* Bright Orange */","lastModifiedDate":"2024-03-11"},{"lineNumber":105,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":107,"author":{"gitId":"-"},"content":".list-cell:filled:odd {","lastModifiedDate":"2017-03-02"},{"lineNumber":108,"author":{"gitId":"rahhulleee"},"content":" -fx-background-color: #e8b453; /* Dark Orange */","lastModifiedDate":"2024-03-11"},{"lineNumber":109,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":111,"author":{"gitId":"-"},"content":".list-cell:filled:selected {","lastModifiedDate":"2017-03-02"},{"lineNumber":112,"author":{"gitId":"-"},"content":" -fx-background-color: #424d5f;","lastModifiedDate":"2017-03-02"},{"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 #cardPane {","lastModifiedDate":"2017-03-02"},{"lineNumber":116,"author":{"gitId":"-"},"content":" -fx-border-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":117,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"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 .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":121,"author":{"gitId":"rahhulleee"},"content":" -fx-text-fill: #000000; /* Changed to black */","lastModifiedDate":"2024-03-11"},{"lineNumber":122,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":".cell_big_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2016-08-08"},{"lineNumber":127,"author":{"gitId":"rahhulleee"},"content":" -fx-text-fill: #000000; /* Changed to black */","lastModifiedDate":"2024-03-11"},{"lineNumber":128,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":".cell_small_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2022-01-13"},{"lineNumber":132,"author":{"gitId":"-"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2017-03-02"},{"lineNumber":133,"author":{"gitId":"rahhulleee"},"content":" -fx-text-fill: #000000; /* Changed to black */","lastModifiedDate":"2024-03-11"},{"lineNumber":134,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":136,"author":{"gitId":"-"},"content":".stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":137,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":138,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":".pane-with-border {","lastModifiedDate":"2017-05-15"},{"lineNumber":141,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-05-09"},{"lineNumber":142,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 10%);","lastModifiedDate":"2017-05-09"},{"lineNumber":143,"author":{"gitId":"-"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2017-05-09"},{"lineNumber":144,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":146,"author":{"gitId":"-"},"content":".status-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":147,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2018-12-08"},{"lineNumber":148,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":150,"author":{"gitId":"-"},"content":".result-display {","lastModifiedDate":"2016-09-14"},{"lineNumber":151,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2017-03-02"},{"lineNumber":152,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":153,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":154,"author":{"gitId":"rahhulleee"},"content":" -fx-text-fill: white; /* Change to white */","lastModifiedDate":"2024-03-12"},{"lineNumber":155,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":157,"author":{"gitId":"-"},"content":".result-display .label {","lastModifiedDate":"2016-09-14"},{"lineNumber":158,"author":{"gitId":"rahhulleee"},"content":" -fx-text-fill: white; /* Change to white */","lastModifiedDate":"2024-03-12"},{"lineNumber":159,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":".status-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":163,"author":{"gitId":"rahhulleee"},"content":" -fx-text-fill: #000000; /* Changed to black */","lastModifiedDate":"2024-03-11"},{"lineNumber":164,"author":{"gitId":"-"},"content":" -fx-padding: 4px;","lastModifiedDate":"2018-12-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2018-12-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":".status-bar-with-border {","lastModifiedDate":"2016-08-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":170,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":171,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"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-with-border .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":175,"author":{"gitId":"rahhulleee"},"content":" -fx-text-fill: #000000; /* Changed to black */","lastModifiedDate":"2024-03-11"},{"lineNumber":176,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":".grid-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":179,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":180,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"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":".grid-pane .stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":185,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":186,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":188,"author":{"gitId":"-"},"content":".context-menu {","lastModifiedDate":"2016-08-08"},{"lineNumber":189,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":190,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":192,"author":{"gitId":"-"},"content":".context-menu .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":193,"author":{"gitId":"rahhulleee"},"content":" -fx-text-fill: #000000; /* Changed to black */","lastModifiedDate":"2024-03-11"},{"lineNumber":194,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":196,"author":{"gitId":"-"},"content":".menu-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":197,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","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":".menu-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":201,"author":{"gitId":"-"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":202,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":203,"author":{"gitId":"rahhulleee"},"content":" -fx-text-fill: #000000; /* Changed to black */","lastModifiedDate":"2024-03-11"},{"lineNumber":204,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":205,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":207,"author":{"gitId":"-"},"content":".menu .left-container {","lastModifiedDate":"2016-08-08"},{"lineNumber":208,"author":{"gitId":"-"},"content":" -fx-background-color: black;","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":".button {","lastModifiedDate":"2016-08-08"},{"lineNumber":212,"author":{"gitId":"-"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2016-08-08"},{"lineNumber":213,"author":{"gitId":"-"},"content":" -fx-border-color: #e2e2e2;","lastModifiedDate":"2016-08-08"},{"lineNumber":214,"author":{"gitId":"-"},"content":" -fx-border-width: 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":215,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":216,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":217,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2022-01-13"},{"lineNumber":218,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":219,"author":{"gitId":"rahhulleee"},"content":" -fx-text-fill: #d8d8d8; /* Consider changing if you want button text in black */","lastModifiedDate":"2024-03-11"},{"lineNumber":220,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","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":".button:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":224,"author":{"gitId":"-"},"content":" -fx-background-color: #3a3a3a;","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:pressed, .button:default:hover:pressed {","lastModifiedDate":"2016-08-08"},{"lineNumber":228,"author":{"gitId":"-"},"content":" -fx-background-color: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":229,"author":{"gitId":"-"},"content":" -fx-text-fill: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":230,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":232,"author":{"gitId":"-"},"content":".button:focused {","lastModifiedDate":"2016-08-08"},{"lineNumber":233,"author":{"gitId":"-"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2016-08-08"},{"lineNumber":234,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":235,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08"},{"lineNumber":236,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":237,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","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:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08"},{"lineNumber":241,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08"},{"lineNumber":242,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":243,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","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":".button:default {","lastModifiedDate":"2016-08-08"},{"lineNumber":247,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":248,"author":{"gitId":"-"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2016-08-08"},{"lineNumber":249,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":251,"author":{"gitId":"-"},"content":".button:default:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":252,"author":{"gitId":"-"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","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":".dialog-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":256,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"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 \u003e *.button-bar \u003e *.container {","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 *.label.content {","lastModifiedDate":"2016-08-08"},{"lineNumber":264,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08"},{"lineNumber":265,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2016-08-08"},{"lineNumber":266,"author":{"gitId":"rahhulleee"},"content":" -fx-text-fill: #000000; /* Changed to black */","lastModifiedDate":"2024-03-11"},{"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:header *.header-panel {","lastModifiedDate":"2016-08-08"},{"lineNumber":270,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 25%);","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:header *.header-panel *.label {","lastModifiedDate":"2016-08-08"},{"lineNumber":274,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08"},{"lineNumber":275,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08"},{"lineNumber":276,"author":{"gitId":"rahhulleee"},"content":" -fx-fill: #000000; /* Assuming change to black */","lastModifiedDate":"2024-03-11"},{"lineNumber":277,"author":{"gitId":"rahhulleee"},"content":" -fx-text-fill: #000000; /* Changed*/","lastModifiedDate":"2024-03-11"},{"lineNumber":278,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":279,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":280,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02"},{"lineNumber":281,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":282,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":284,"author":{"gitId":"-"},"content":".scroll-bar .thumb {","lastModifiedDate":"2016-08-15"},{"lineNumber":285,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":286,"author":{"gitId":"-"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2016-08-15"},{"lineNumber":287,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":288,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":289,"author":{"gitId":"-"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2016-08-15"},{"lineNumber":290,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-15"},{"lineNumber":291,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-15"},{"lineNumber":292,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":293,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":294,"author":{"gitId":"-"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2016-08-15"},{"lineNumber":295,"author":{"gitId":"-"},"content":" -fx-shape: \" \";","lastModifiedDate":"2016-08-15"},{"lineNumber":296,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":298,"author":{"gitId":"-"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":299,"author":{"gitId":"-"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2016-08-15"},{"lineNumber":300,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":302,"author":{"gitId":"-"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":303,"author":{"gitId":"-"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2016-08-18"},{"lineNumber":304,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":306,"author":{"gitId":"-"},"content":"#cardPane {","lastModifiedDate":"2016-08-08"},{"lineNumber":307,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":308,"author":{"gitId":"-"},"content":" -fx-border-width: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":309,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":310,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":311,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08"},{"lineNumber":312,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08"},{"lineNumber":313,"author":{"gitId":"-"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2016-08-08"},{"lineNumber":314,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":315,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":316,"author":{"gitId":"-"},"content":"#commandTextField {","lastModifiedDate":"2017-03-02"},{"lineNumber":317,"author":{"gitId":"-"},"content":" -fx-background-color: transparent #383838 transparent #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":318,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":319,"author":{"gitId":"-"},"content":" -fx-border-color: #383838 #383838 #ffffff #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":320,"author":{"gitId":"-"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":321,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":322,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":323,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":324,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":325,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":326,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":327,"author":{"gitId":"-"},"content":"#filterField, #personListPanel, #personWebpage {","lastModifiedDate":"2016-08-15"},{"lineNumber":328,"author":{"gitId":"-"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2016-08-15"},{"lineNumber":329,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":331,"author":{"gitId":"-"},"content":"#resultDisplay .content {","lastModifiedDate":"2017-03-02"},{"lineNumber":332,"author":{"gitId":"-"},"content":" -fx-background-color: transparent, #383838, transparent, #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":333,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":334,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":335,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":336,"author":{"gitId":"-"},"content":"#tags {","lastModifiedDate":"2016-12-18"},{"lineNumber":337,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2016-12-18"},{"lineNumber":338,"author":{"gitId":"-"},"content":" -fx-vgap: 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":339,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":340,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":341,"author":{"gitId":"-"},"content":"#tags .label {","lastModifiedDate":"2016-12-18"},{"lineNumber":342,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-12-18"},{"lineNumber":343,"author":{"gitId":"-"},"content":" -fx-background-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":344,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":345,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":346,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":347,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2016-12-18"},{"lineNumber":348,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":349,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":350,"author":{"gitId":"youdonnnn"},"content":"#policies {","lastModifiedDate":"2024-03-21"},{"lineNumber":351,"author":{"gitId":"youdonnnn"},"content":" -fx-hgap: 7;","lastModifiedDate":"2024-03-21"},{"lineNumber":352,"author":{"gitId":"youdonnnn"},"content":" -fx-vgap: 3;","lastModifiedDate":"2024-03-21"},{"lineNumber":353,"author":{"gitId":"youdonnnn"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":354,"author":{"gitId":"youdonnnn"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":355,"author":{"gitId":"youdonnnn"},"content":"#policies .label {","lastModifiedDate":"2024-03-21"},{"lineNumber":356,"author":{"gitId":"youdonnnn"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-21"},{"lineNumber":357,"author":{"gitId":"youdonnnn"},"content":" -fx-background-color: #ef5667;","lastModifiedDate":"2024-03-21"},{"lineNumber":358,"author":{"gitId":"youdonnnn"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2024-03-21"},{"lineNumber":359,"author":{"gitId":"youdonnnn"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2024-03-21"},{"lineNumber":360,"author":{"gitId":"youdonnnn"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2024-03-21"},{"lineNumber":361,"author":{"gitId":"youdonnnn"},"content":" -fx-font-size: 11;","lastModifiedDate":"2024-03-21"},{"lineNumber":362,"author":{"gitId":"youdonnnn"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":363,"author":{"gitId":"youdonnnn"},"content":"","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"youdonnnn":14,"-":328,"rahhulleee":21}},{"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 javafx.scene.control.Menu?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.SplitPane?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":10,"author":{"gitId":"rahhulleee"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"rahhulleee"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"rahhulleee"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2024-03-11"},{"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":"jimseah-0116"},"content":" title\u003d\"InsureBook\" minWidth\u003d\"450\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":17,"author":{"gitId":"rahhulleee"},"content":" \u003cImage url\u003d\"@/images/insure_book.png\"/\u003e","lastModifiedDate":"2024-03-12"},{"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":" \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":"rahhulleee"},"content":" \u003c!-- Contacts List First --\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"rahhulleee"},"content":" \u003cVBox fx:id\u003d\"personList\" styleClass\u003d\"pane-with-border\" minWidth\u003d\"340\" prefWidth\u003d\"340\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":38,"author":{"gitId":"rahhulleee"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\"/\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":40,"author":{"gitId":"rahhulleee"},"content":" \u003cStackPane fx:id\u003d\"personListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"rahhulleee"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":43,"author":{"gitId":"rahhulleee"},"content":" \u003c!-- Result Display Second --\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"resultDisplayPlaceholder\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2017-05-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" minHeight\u003d\"100\" prefHeight\u003d\"100\" maxHeight\u003d\"100\"\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\"/\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":51,"author":{"gitId":"rahhulleee"},"content":" \u003c!-- Command Box Last --\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"rahhulleee"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":54,"author":{"gitId":"rahhulleee"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\"/\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":56,"author":{"gitId":"rahhulleee"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\"/\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":62,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":63,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"jimseah-0116":1,"-":47,"rahhulleee":15}},{"path":"src/main/resources/view/MeetingsWindow.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jimseah-0116"},"content":"#meetingsMessage {","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"jimseah-0116"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"jimseah-0116"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"jimseah-0116"},"content":"#meetingsMessageContainer {","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"jimseah-0116"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"jimseah-0116"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"jimseah-0116":7}},{"path":"src/main/resources/view/MeetingsWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jimseah-0116"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"jimseah-0116"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"jimseah-0116"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"jimseah-0116"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"jimseah-0116"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"jimseah-0116"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"jimseah-0116"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"jimseah-0116"},"content":"\u003c?import javafx.stage.Stage?\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"jimseah-0116"},"content":"\u003cfx:root title\u003d\"View Meetings\" type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-03-24"},{"lineNumber":12,"author":{"gitId":"jimseah-0116"},"content":" \u003cicons\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"jimseah-0116"},"content":" \u003cImage url\u003d\"@/images/meetings_icon.png\" /\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"jimseah-0116"},"content":" \u003c/icons\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"jimseah-0116"},"content":" \u003cscene\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"jimseah-0116"},"content":" \u003cScene width\u003d\"600\" height\u003d\"450\"\u003e","lastModifiedDate":"2024-03-24"},{"lineNumber":17,"author":{"gitId":"jimseah-0116"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"jimseah-0116"},"content":" \u003cURL value\u003d\"@MeetingsWindow.css\" /\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"jimseah-0116"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"jimseah-0116"},"content":" \u003cHBox alignment\u003d\"CENTER\" fx:id\u003d\"meetingsMessageContainer\"\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"jimseah-0116"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"jimseah-0116"},"content":" \u003cLabel fx:id\u003d\"meetingsMessage\" text\u003d\"Label\"\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"jimseah-0116"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"jimseah-0116"},"content":" \u003cInsets right\u003d\"5.0\" /\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"jimseah-0116"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"jimseah-0116"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"jimseah-0116"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"jimseah-0116"},"content":" \u003copaqueInsets\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"jimseah-0116"},"content":" \u003cInsets bottom\u003d\"10.0\" left\u003d\"5.0\" right\u003d\"10.0\" top\u003d\"5.0\" /\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"jimseah-0116"},"content":" \u003c/opaqueInsets\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"jimseah-0116"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"jimseah-0116"},"content":" \u003cInsets bottom\u003d\"10.0\" left\u003d\"5.0\" right\u003d\"10.0\" top\u003d\"5.0\" /\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"jimseah-0116"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"jimseah-0116"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"jimseah-0116"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"jimseah-0116"},"content":" \u003c/scene\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"jimseah-0116"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"jimseah-0116":38}},{"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":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"irwynliong"},"content":" \u003cLabel fx:id\u003d\"meeting\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$meeting\" /\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"youdonnnn"},"content":" \u003cFlowPane fx:id\u003d\"policies\" /\u003e","lastModifiedDate":"2024-03-21"},{"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":{"youdonnnn":1,"irwynliong":1,"-":36}},{"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":"irwynliong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.MEETING_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"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":"-"},"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":"-"},"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":"-"},"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":"irwynliong"},"content":" + EMAIL_DESC_AMY + MEETING_DESC_AMY + ADDRESS_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":171,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2023-06-13"},{"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":{"irwynliong":2,"-":174}},{"path":"src/test/java/seedu/address/logic/commands/CommandResultTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2018-12-09"},{"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":"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":"2018-12-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class CommandResultTest {","lastModifiedDate":"2018-12-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-12-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new CommandResult(\"feedback\");","lastModifiedDate":"2018-12-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-12-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":" assertTrue(commandResult.equals(new CommandResult(\"feedback\")));","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"jimseah-0116"},"content":" assertTrue(commandResult.equals(new CommandResult(\"feedback\", false, false, false)));","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertTrue(commandResult.equals(commandResult));","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(null));","lastModifiedDate":"2018-12-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(0.5f));","lastModifiedDate":"2018-12-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // different feedbackToUser value -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(new CommandResult(\"different\")));","lastModifiedDate":"2018-12-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // different showHelp value -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":32,"author":{"gitId":"jimseah-0116"},"content":" assertFalse(commandResult.equals(new CommandResult(\"feedback\", true, false, false)));","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"jimseah-0116"},"content":" // different showMeetings value -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"jimseah-0116"},"content":" assertFalse(commandResult.equals(new CommandResult(\"feedback\", false, true, false)));","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":" // different exit value -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":38,"author":{"gitId":"jimseah-0116"},"content":" assertFalse(commandResult.equals(new CommandResult(\"feedback\", false, false, true)));","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void hashcode() {","lastModifiedDate":"2018-12-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new CommandResult(\"feedback\");","lastModifiedDate":"2018-12-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // same values -\u003e returns same hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertEquals(commandResult.hashCode(), new CommandResult(\"feedback\").hashCode());","lastModifiedDate":"2018-12-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // different feedbackToUser value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(\"different\").hashCode());","lastModifiedDate":"2018-12-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different showHelp value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":52,"author":{"gitId":"jimseah-0116"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(\"feedback\", true, false, false).hashCode());","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"jimseah-0116"},"content":" // different showMeetings value -\u003e returns different hashcode","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"jimseah-0116"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(\"feedback\", false, true, false).hashCode());","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // different exit value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":58,"author":{"gitId":"jimseah-0116"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(\"feedback\", false, false, true).hashCode());","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"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":" CommandResult commandResult \u003d new CommandResult(\"feedback\");","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" String expected \u003d CommandResult.class.getCanonicalName() + \"{feedbackToUser\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" + commandResult.getFeedbackToUser() + \", showHelp\u003d\" + commandResult.isShowHelp()","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"jimseah-0116"},"content":" + \", showMeetings\u003d\" + commandResult.isShowMeetings() + \", exit\u003d\" + commandResult.isExit() + \"}\";","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertEquals(expected, commandResult.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-12-09"}],"authorContributionMap":{"jimseah-0116":12,"-":57}},{"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":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"irwynliong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MEETING;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"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":"-"},"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":"2017-06-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":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05"},{"lineNumber":38,"author":{"gitId":"irwynliong"},"content":" public static final String VALID_MEETING_AMY \u003d \"2024-02-12\";","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"irwynliong"},"content":" public static final String VALID_MEETING_BOB \u003d \"2024-03-12 18:00:00\";","lastModifiedDate":"2024-03-21"},{"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":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":51,"author":{"gitId":"irwynliong"},"content":" public static final String MEETING_DESC_AMY \u003d \" \" + PREFIX_MEETING + VALID_MEETING_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"irwynliong"},"content":" public static final String MEETING_DESC_BOB \u003d \" \" + PREFIX_MEETING + VALID_MEETING_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":56,"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":57,"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":58,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05"},{"lineNumber":60,"author":{"gitId":"irwynliong"},"content":" public static final String INVALID_MEETING_DESC \u003d \" \" + PREFIX_MEETING + \"12-02-2024\"; // YYYY-MM-DD format","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"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":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":71,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":72,"author":{"gitId":"irwynliong"},"content":" .withMeeting(VALID_MEETING_AMY)","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":76,"author":{"gitId":"irwynliong"},"content":" .withMeeting(VALID_MEETING_AMY)","lastModifiedDate":"2024-03-21"},{"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":{"irwynliong":8,"-":128}},{"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":"jimseah-0116"},"content":"","lastModifiedDate":"2024-03-24"},{"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":"-"},"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":{"jimseah-0116":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_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":"irwynliong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MEETING_BOB;","lastModifiedDate":"2024-03-21"},{"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":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-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":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2017-05-05"},{"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 address -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_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":"irwynliong"},"content":" // different meeting -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"irwynliong"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withMeeting(VALID_MEETING_BOB).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"irwynliong"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-05"},{"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":"-"},"content":" + editPersonDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", address\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"irwynliong"},"content":" + editPersonDescriptor.getAddress().orElse(null) + \", meeting\u003d\"","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"irwynliong"},"content":" + editPersonDescriptor.getMeeting().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getTags().orElse(null) + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"irwynliong":7,"-":70}},{"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":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-12-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.ExitCommand.MESSAGE_EXIT_ACKNOWLEDGEMENT;","lastModifiedDate":"2017-06-08"},{"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.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2018-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class ExitCommandTest {","lastModifiedDate":"2017-06-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-12-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public void execute_exit_success() {","lastModifiedDate":"2017-06-08"},{"lineNumber":17,"author":{"gitId":"jimseah-0116"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, false, false, true);","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ExitCommand(), model, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08"}],"authorContributionMap":{"jimseah-0116":1,"-":19}},{"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":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.HelpCommand.SHOWING_HELP_MESSAGE;","lastModifiedDate":"2017-06-08"},{"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.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2018-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class HelpCommandTest {","lastModifiedDate":"2017-06-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public void execute_help_success() {","lastModifiedDate":"2017-06-08"},{"lineNumber":17,"author":{"gitId":"jimseah-0116"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(SHOWING_HELP_MESSAGE, true, false, false);","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":" assertCommandSuccess(new HelpCommand(), model, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08"}],"authorContributionMap":{"jimseah-0116":1,"-":19}},{"path":"src/test/java/seedu/address/logic/commands/MeetingsCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jimseah-0116"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"jimseah-0116"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"jimseah-0116"},"content":"import static seedu.address.logic.commands.MeetingsCommand.SHOWING_MEETINGS_MESSAGE;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"jimseah-0116"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"jimseah-0116"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"jimseah-0116"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"jimseah-0116"},"content":"public class MeetingsCommandTest {","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"jimseah-0116"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"jimseah-0116"},"content":" private Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"jimseah-0116"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"jimseah-0116"},"content":" public void execute_meetings_success() {","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"jimseah-0116"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(SHOWING_MEETINGS_MESSAGE, false, true, false);","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"jimseah-0116"},"content":" assertCommandSuccess(new MeetingsCommand(), model, expectedCommandResult, expectedModel);","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"jimseah-0116"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"jimseah-0116":20}},{"path":"src/test/java/seedu/address/logic/commands/ViewCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"rahhulleee"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"rahhulleee"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"rahhulleee"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"rahhulleee"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"rahhulleee"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"rahhulleee"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"rahhulleee"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"rahhulleee"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"rahhulleee"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"rahhulleee"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"rahhulleee"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"rahhulleee"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"rahhulleee"},"content":"import seedu.address.model.person.ViewPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"rahhulleee"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"rahhulleee"},"content":"public class ViewCommandTest {","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"rahhulleee"},"content":" private Model model;","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"rahhulleee"},"content":" @BeforeEach","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"rahhulleee"},"content":" public void setUp() {","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"rahhulleee"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"rahhulleee"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"rahhulleee"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"rahhulleee"},"content":" public void execute_viewValidPerson_success() {","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"rahhulleee"},"content":" // Prepare our model and expected model","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"rahhulleee"},"content":" Person personToView \u003d new PersonBuilder().build();","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"rahhulleee"},"content":" model.addPerson(personToView);","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"rahhulleee"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"rahhulleee"},"content":" // Assuming the person to view is the last one added","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"rahhulleee"},"content":" Index lastPersonIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"rahhulleee"},"content":" // Set up expected model\u0027s filtered list according to ViewCommand\u0027s behavior","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"rahhulleee"},"content":" expectedModel.updateFilteredPersonList(new ViewPredicate(lastPersonIndex, personToView));","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"rahhulleee"},"content":" // Construct command to view the last added person","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"rahhulleee"},"content":" ViewCommand viewCommand \u003d new ViewCommand(lastPersonIndex);","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"rahhulleee"},"content":" String expectedMessage \u003d String.format(ViewCommand.MESSAGE_VIEW_SUCCESS, personToView.getName());","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"rahhulleee"},"content":" // Execute command and verify success","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"rahhulleee"},"content":" assertCommandSuccess(viewCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"rahhulleee"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"rahhulleee"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"rahhulleee"},"content":" public void equals() {","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"rahhulleee"},"content":" Index indexFirst \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"rahhulleee"},"content":" Index indexSecond \u003d Index.fromOneBased(2);","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"rahhulleee"},"content":" ViewCommand viewFirstCommand \u003d new ViewCommand(indexFirst);","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"rahhulleee"},"content":" ViewCommand viewSecondCommand \u003d new ViewCommand(indexSecond);","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"rahhulleee"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"rahhulleee"},"content":" assertTrue(viewFirstCommand.equals(viewFirstCommand));","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"rahhulleee"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"rahhulleee"},"content":" ViewCommand viewFirstCommandCopy \u003d new ViewCommand(indexFirst);","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"rahhulleee"},"content":" assertTrue(viewFirstCommand.equals(viewFirstCommandCopy));","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"rahhulleee"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"rahhulleee"},"content":" assertFalse(viewFirstCommand.equals(1));","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"rahhulleee"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"rahhulleee"},"content":" assertFalse(viewFirstCommand.equals(null));","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"rahhulleee"},"content":" // different index -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"rahhulleee"},"content":" assertFalse(viewFirstCommand.equals(viewSecondCommand));","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"rahhulleee"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"rahhulleee"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"rahhulleee":72}},{"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":"irwynliong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.MEETING_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"irwynliong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.MEETING_DESC_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2017-12-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_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":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":31,"author":{"gitId":"irwynliong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MEETING;","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"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":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25"},{"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":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-06-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-06-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15"},{"lineNumber":49,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":51,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2018-07-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":60,"author":{"gitId":"irwynliong"},"content":" + ADDRESS_DESC_BOB + MEETING_DESC_BOB + TAG_DESC_FRIEND, new AddCommand(expectedPerson));","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15"},{"lineNumber":64,"author":{"gitId":"-"},"content":" Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND)","lastModifiedDate":"2018-07-25"},{"lineNumber":65,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":67,"author":{"gitId":"irwynliong"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"irwynliong"},"content":" + MEETING_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"-"},"content":" new AddCommand(expectedPersonMultipleTags));","lastModifiedDate":"2023-07-14"},{"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":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":74,"author":{"gitId":"-"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-07-14"},{"lineNumber":75,"author":{"gitId":"irwynliong"},"content":" + ADDRESS_DESC_BOB + MEETING_DESC_BOB + TAG_DESC_FRIEND;","lastModifiedDate":"2024-03-21"},{"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":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":83,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":87,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2023-07-14"},{"lineNumber":96,"author":{"gitId":"irwynliong"},"content":" + MEETING_DESC_AMY","lastModifiedDate":"2024-03-21"},{"lineNumber":97,"author":{"gitId":"-"},"content":" + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":98,"author":{"gitId":"irwynliong"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_ADDRESS, PREFIX_EMAIL, PREFIX_PHONE,","lastModifiedDate":"2024-03-21"},{"lineNumber":99,"author":{"gitId":"irwynliong"},"content":" PREFIX_MEETING));","lastModifiedDate":"2024-03-21"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":107,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":109,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":111,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":140,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15"},{"lineNumber":141,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2018-07-25"},{"lineNumber":142,"author":{"gitId":"irwynliong"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2024-03-21"},{"lineNumber":143,"author":{"gitId":"irwynliong"},"content":" + MEETING_DESC_AMY,","lastModifiedDate":"2024-03-21"},{"lineNumber":144,"author":{"gitId":"-"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2017-12-23"},{"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_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":149,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":151,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":155,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":156,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":159,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-03-21"},{"lineNumber":161,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2024-03-21"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":163,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2024-03-21"},{"lineNumber":165,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2024-03-21"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":167,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15"},{"lineNumber":168,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":172,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":173,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":174,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":175,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":176,"author":{"gitId":"irwynliong"},"content":" + MEETING_DESC_BOB","lastModifiedDate":"2024-03-21"},{"lineNumber":177,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":179,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15"},{"lineNumber":180,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":181,"author":{"gitId":"irwynliong"},"content":" + MEETING_DESC_BOB","lastModifiedDate":"2024-03-21"},{"lineNumber":182,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":184,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15"},{"lineNumber":185,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":186,"author":{"gitId":"irwynliong"},"content":" + MEETING_DESC_BOB","lastModifiedDate":"2024-03-21"},{"lineNumber":187,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":189,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15"},{"lineNumber":190,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2017-12-23"},{"lineNumber":191,"author":{"gitId":"irwynliong"},"content":" + MEETING_DESC_BOB","lastModifiedDate":"2024-03-21"},{"lineNumber":192,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":194,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15"},{"lineNumber":195,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":196,"author":{"gitId":"irwynliong"},"content":" + MEETING_DESC_BOB","lastModifiedDate":"2024-03-21"},{"lineNumber":197,"author":{"gitId":"irwynliong"},"content":" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":199,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":200,"author":{"gitId":"irwynliong"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2024-03-21"},{"lineNumber":201,"author":{"gitId":"irwynliong"},"content":" + MEETING_DESC_BOB,","lastModifiedDate":"2024-03-21"},{"lineNumber":202,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":206,"author":{"gitId":"irwynliong"},"content":" + ADDRESS_DESC_BOB + MEETING_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2024-03-21"},{"lineNumber":207,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":209,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"irwynliong":21,"-":188}},{"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":"rahhulleee"},"content":"import seedu.address.logic.commands.ViewCommand;","lastModifiedDate":"2024-03-21"},{"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":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command);","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_edit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2018-03-26"},{"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":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":103,"author":{"gitId":"rahhulleee"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":104,"author":{"gitId":"rahhulleee"},"content":" public void parseCommand_view() throws Exception {","lastModifiedDate":"2024-03-21"},{"lineNumber":105,"author":{"gitId":"rahhulleee"},"content":" ViewCommand command \u003d (ViewCommand) parser.parseCommand(","lastModifiedDate":"2024-03-21"},{"lineNumber":106,"author":{"gitId":"rahhulleee"},"content":" ViewCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2024-03-21"},{"lineNumber":107,"author":{"gitId":"rahhulleee"},"content":" assertEquals(new ViewCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2024-03-21"},{"lineNumber":108,"author":{"gitId":"rahhulleee"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":109,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"-":101,"rahhulleee":8}},{"path":"src/test/java/seedu/address/logic/parser/ViewCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"rahhulleee"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"rahhulleee"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"rahhulleee"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"rahhulleee"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"rahhulleee"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"rahhulleee"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"rahhulleee"},"content":"import seedu.address.logic.commands.ViewCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"rahhulleee"},"content":"public class ViewCommandParserTest {","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"rahhulleee"},"content":" private ViewCommandParser parser \u003d new ViewCommandParser();","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"rahhulleee"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"rahhulleee"},"content":" public void parse_validArgs_returnsViewCommand() {","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"rahhulleee"},"content":" // assuming valid index is provided","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"rahhulleee"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"rahhulleee"},"content":" ViewCommand expectedViewCommand \u003d new ViewCommand(targetIndex);","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"rahhulleee"},"content":" assertParseSuccess(parser, \"1\", expectedViewCommand);","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"rahhulleee"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"rahhulleee"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"rahhulleee"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"rahhulleee"},"content":" // non-integer input","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"rahhulleee"},"content":" assertParseFailure(parser, \"a\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, ViewCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"rahhulleee"},"content":" // negative index","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"rahhulleee"},"content":" assertParseFailure(parser, \"-1\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, ViewCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"rahhulleee"},"content":" // zero index","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"rahhulleee"},"content":" assertParseFailure(parser, \"0\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, ViewCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"rahhulleee"},"content":" // empty input","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"rahhulleee"},"content":" assertParseFailure(parser, \"\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, ViewCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"rahhulleee"},"content":" // spaces only","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"rahhulleee"},"content":" assertParseFailure(parser, \" \", String.format(MESSAGE_INVALID_COMMAND_FORMAT, ViewCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"rahhulleee"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"rahhulleee"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"rahhulleee":41}},{"path":"src/test/java/seedu/address/model/person/MeetingTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"irwynliong"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"irwynliong"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"irwynliong"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"irwynliong"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"irwynliong"},"content":"import java.time.DateTimeException;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"irwynliong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"irwynliong"},"content":"public class MeetingTest {","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"irwynliong"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"irwynliong"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"irwynliong"},"content":" assertThrows(NullPointerException.class, () -\u003e new Meeting(null));","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"irwynliong"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"irwynliong"},"content":" public void constructor_invalidMeeting_throwsDateTimeException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"irwynliong"},"content":" String invalidMeeting \u003d \"\";","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"irwynliong"},"content":" assertThrows(DateTimeException.class, () -\u003e new Meeting(invalidMeeting));","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"irwynliong"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"irwynliong"},"content":" public void isValidMeeting() {","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"irwynliong"},"content":" // null meeting","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"irwynliong"},"content":" assertThrows(NullPointerException.class, () -\u003e Meeting.isValidMeeting(null));","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"irwynliong"},"content":" // missing parts","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"irwynliong"},"content":" assertFalse(Meeting.isValidMeeting(\"2024\")); // missing MM-DD","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"irwynliong"},"content":" assertFalse(Meeting.isValidMeeting(\"2024-01\")); // missing DD","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"irwynliong"},"content":" assertFalse(Meeting.isValidMeeting(\"01-12\")); // missing YYYY","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"irwynliong"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"irwynliong"},"content":" public void equals() {","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"irwynliong"},"content":" Meeting meeting \u003d new Meeting(\"2024-01-01\");","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"irwynliong"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"irwynliong"},"content":" assertTrue(meeting.equals(new Meeting(\"2024-01-01\")));","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"irwynliong"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"irwynliong"},"content":" assertTrue(meeting.equals(meeting));","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"irwynliong"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"irwynliong"},"content":" assertFalse(meeting.equals(null));","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"irwynliong"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"irwynliong"},"content":" assertFalse(meeting.equals(5.0f));","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"irwynliong"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"irwynliong"},"content":" assertFalse(meeting.equals(new Meeting(\"2024-01-02\")));","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"irwynliong"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"irwynliong":53}},{"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":"irwynliong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MEETING_BOB;","lastModifiedDate":"2024-03-21"},{"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":"-"},"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":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18"},{"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":"irwynliong"},"content":" .withAddress(VALID_ADDRESS_BOB).withMeeting(VALID_MEETING_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-03-21"},{"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":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2018-04-19"},{"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":"irwynliong"},"content":" // different meeting -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":90,"author":{"gitId":"irwynliong"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withMeeting(VALID_MEETING_BOB).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":91,"author":{"gitId":"irwynliong"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2024-03-21"},{"lineNumber":92,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":93,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2018-04-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2019-02-23"},{"lineNumber":101,"author":{"gitId":"irwynliong"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", address\u003d\" + ALICE.getAddress()","lastModifiedDate":"2024-03-21"},{"lineNumber":102,"author":{"gitId":"irwynliong"},"content":" + \", meeting\u003d\" + ALICE.getMeeting() + \", tags\u003d\" + ALICE.getTags() + \"}\";","lastModifiedDate":"2024-03-21"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"irwynliong":8,"-":97}},{"path":"src/test/java/seedu/address/model/person/ViewPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"rahhulleee"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"rahhulleee"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"rahhulleee"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"rahhulleee"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"rahhulleee"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"rahhulleee"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"rahhulleee"},"content":"public class ViewPredicateTest {","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"rahhulleee"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"rahhulleee"},"content":" public void equals() {","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"rahhulleee"},"content":" Index firstIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"rahhulleee"},"content":" Person firstPerson \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"rahhulleee"},"content":" ViewPredicate firstPredicate \u003d new ViewPredicate(firstIndex, firstPerson);","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"rahhulleee"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"rahhulleee"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"rahhulleee"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"rahhulleee"},"content":" ViewPredicate firstPredicateCopy \u003d new ViewPredicate(firstIndex, firstPerson);","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"rahhulleee"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"rahhulleee"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"rahhulleee"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"rahhulleee"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"rahhulleee"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"rahhulleee"},"content":" // different index and person -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"rahhulleee"},"content":" Index secondIndex \u003d Index.fromOneBased(2);","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"rahhulleee"},"content":" Person secondPerson \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"rahhulleee"},"content":" ViewPredicate secondPredicate \u003d new ViewPredicate(secondIndex, secondPerson);","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"rahhulleee"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"rahhulleee"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"rahhulleee"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"rahhulleee"},"content":" public void test_samePerson_returnsTrue() {","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"rahhulleee"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"rahhulleee"},"content":" Person person \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"rahhulleee"},"content":" ViewPredicate predicate \u003d new ViewPredicate(index, person);","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"rahhulleee"},"content":" // Test with the exact same person object","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"rahhulleee"},"content":" assertTrue(predicate.test(person));","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"rahhulleee"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"rahhulleee"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"rahhulleee"},"content":" public void test_differentPerson_returnsFalse() {","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"rahhulleee"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"rahhulleee"},"content":" Person person \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"rahhulleee"},"content":" ViewPredicate predicate \u003d new ViewPredicate(index, person);","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"rahhulleee"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"rahhulleee"},"content":" // Test with a different person","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"rahhulleee"},"content":" Person otherPerson \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"rahhulleee"},"content":" assertFalse(predicate.test(otherPerson));","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"rahhulleee"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"rahhulleee"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"rahhulleee":59}},{"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":"irwynliong"},"content":"import seedu.address.model.person.Meeting;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"irwynliong"},"content":" private static final String INVALID_MEETING \u003d \"2024-01\";","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"irwynliong"},"content":" private static final String VALID_MEETING \u003d BENSON.getMeeting().toString();","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"youdonnnn"},"content":" private static final List\u003cJsonAdaptedPolicyTag\u003e VALID_POLICIES \u003d BENSON.getPolicies().stream()","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"youdonnnn"},"content":" .map(JsonAdaptedPolicyTag::new)","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"youdonnnn"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2024-03-21"},{"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":"youdonnnn"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"youdonnnn"},"content":" VALID_MEETING, VALID_TAGS, VALID_POLICIES);","lastModifiedDate":"2024-03-21"},{"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":"irwynliong"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"youdonnnn"},"content":" VALID_MEETING, VALID_TAGS, VALID_POLICIES);","lastModifiedDate":"2024-03-21"},{"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":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"irwynliong"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"youdonnnn"},"content":" VALID_MEETING, VALID_TAGS, VALID_POLICIES);","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","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_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"irwynliong"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"youdonnnn"},"content":" VALID_MEETING, VALID_TAGS, VALID_POLICIES);","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"irwynliong"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"youdonnnn"},"content":" VALID_MEETING, VALID_TAGS, VALID_POLICIES);","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","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_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"irwynliong"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null, VALID_ADDRESS,","lastModifiedDate":"2024-03-21"},{"lineNumber":93,"author":{"gitId":"youdonnnn"},"content":" VALID_MEETING, VALID_TAGS, VALID_POLICIES);","lastModifiedDate":"2024-03-21"},{"lineNumber":94,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-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_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"irwynliong"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_ADDRESS,","lastModifiedDate":"2024-03-21"},{"lineNumber":102,"author":{"gitId":"youdonnnn"},"content":" VALID_MEETING, VALID_TAGS, VALID_POLICIES);","lastModifiedDate":"2024-03-21"},{"lineNumber":103,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","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_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"irwynliong"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, null,","lastModifiedDate":"2024-03-21"},{"lineNumber":110,"author":{"gitId":"youdonnnn"},"content":" VALID_MEETING, VALID_TAGS, VALID_POLICIES);","lastModifiedDate":"2024-03-21"},{"lineNumber":111,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2018-08-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":"irwynliong"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":116,"author":{"gitId":"irwynliong"},"content":" public void toModelType_invalidMeeting_throwsDateTimeException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":117,"author":{"gitId":"irwynliong"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":118,"author":{"gitId":"irwynliong"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-21"},{"lineNumber":119,"author":{"gitId":"youdonnnn"},"content":" INVALID_MEETING, VALID_TAGS, VALID_POLICIES);","lastModifiedDate":"2024-03-21"},{"lineNumber":120,"author":{"gitId":"irwynliong"},"content":" String expectedMessage \u003d Meeting.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-21"},{"lineNumber":121,"author":{"gitId":"irwynliong"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-21"},{"lineNumber":122,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":123,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":124,"author":{"gitId":"irwynliong"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":125,"author":{"gitId":"irwynliong"},"content":" public void toModelType_nullMeeting_throwsIllegalValueException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":126,"author":{"gitId":"irwynliong"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-21"},{"lineNumber":127,"author":{"gitId":"youdonnnn"},"content":" null, VALID_TAGS, VALID_POLICIES);","lastModifiedDate":"2024-03-21"},{"lineNumber":128,"author":{"gitId":"irwynliong"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Meeting.class.getSimpleName());","lastModifiedDate":"2024-03-21"},{"lineNumber":129,"author":{"gitId":"irwynliong"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-21"},{"lineNumber":130,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":132,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13"},{"lineNumber":135,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":136,"author":{"gitId":"youdonnnn"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-03-21"},{"lineNumber":137,"author":{"gitId":"youdonnnn"},"content":" VALID_ADDRESS, VALID_MEETING, invalidTags, VALID_POLICIES);","lastModifiedDate":"2024-03-21"},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, 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":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"youdonnnn":16,"irwynliong":24,"-":101}},{"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.Address;","lastModifiedDate":"2017-12-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-12-23"},{"lineNumber":10,"author":{"gitId":"irwynliong"},"content":"import seedu.address.model.person.Meeting;","lastModifiedDate":"2024-03-21"},{"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":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-12-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-12-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * A utility class to help with building EditPersonDescriptor objects.","lastModifiedDate":"2017-05-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorBuilder {","lastModifiedDate":"2017-05-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private EditPersonDescriptor descriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder() {","lastModifiedDate":"2017-05-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-05-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(EditPersonDescriptor descriptor) {","lastModifiedDate":"2017-05-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" this.descriptor \u003d new EditPersonDescriptor(descriptor);","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":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Returns an {@code EditPersonDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2017-06-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-06-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" descriptor.setName(person.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" descriptor.setPhone(person.getPhone());","lastModifiedDate":"2017-06-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" descriptor.setAddress(person.getAddress());","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"irwynliong"},"content":" descriptor.setMeeting(person.getMeeting());","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" descriptor.setTags(person.getTags());","lastModifiedDate":"2017-06-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":44,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":" * Sets the {@code Phone} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2017-12-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":65,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2017-12-23"},{"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 Address} 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 withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" descriptor.setAddress(new Address(address));","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":"irwynliong"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"irwynliong"},"content":" * Sets the {@code Meeting} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"irwynliong"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"irwynliong"},"content":" public EditPersonDescriptorBuilder withMeeting(String meeting) {","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"irwynliong"},"content":" descriptor.setMeeting(new Meeting(meeting));","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"irwynliong"},"content":" return this;","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":86,"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":87,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2017-12-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2017-12-23"},{"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":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05"},{"lineNumber":96,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":98,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"irwynliong":11,"-":87}},{"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":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18"},{"lineNumber":8,"author":{"gitId":"irwynliong"},"content":"import seedu.address.model.person.Meeting;","lastModifiedDate":"2024-03-21"},{"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":"youdonnnn"},"content":"import seedu.address.model.person.Policy;","lastModifiedDate":"2024-03-21"},{"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":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05"},{"lineNumber":25,"author":{"gitId":"irwynliong"},"content":" public static final String DEFAULT_MEETING \u003d \"2024-01-01\";","lastModifiedDate":"2024-03-21"},{"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":"irwynliong"},"content":" private Meeting meeting;","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20"},{"lineNumber":33,"author":{"gitId":"youdonnnn"},"content":" private Set\u003cPolicy\u003e policies;","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"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":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20"},{"lineNumber":41,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20"},{"lineNumber":42,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20"},{"lineNumber":43,"author":{"gitId":"irwynliong"},"content":" meeting \u003d new Meeting(DEFAULT_MEETING);","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":45,"author":{"gitId":"jimseah-0116"},"content":" policies \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-24"},{"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":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20"},{"lineNumber":54,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"irwynliong"},"content":" meeting \u003d personToCopy.getMeeting();","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20"},{"lineNumber":58,"author":{"gitId":"jimseah-0116"},"content":" policies \u003d new HashSet\u003c\u003e(personToCopy.getPolicies());","lastModifiedDate":"2024-03-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11"},{"lineNumber":61,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-18"},{"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":"jimseah-0116"},"content":" /**","lastModifiedDate":"2024-03-24"},{"lineNumber":71,"author":{"gitId":"jimseah-0116"},"content":" * Parses the {@code policies} into a {@code Set\u003cPolicy\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2024-03-24"},{"lineNumber":72,"author":{"gitId":"jimseah-0116"},"content":" */","lastModifiedDate":"2024-03-24"},{"lineNumber":73,"author":{"gitId":"jimseah-0116"},"content":" public PersonBuilder withPolicies(String ... policies) {","lastModifiedDate":"2024-03-24"},{"lineNumber":74,"author":{"gitId":"jimseah-0116"},"content":" this.policies \u003d SampleDataUtil.getPoliciesSet(policies);","lastModifiedDate":"2024-03-24"},{"lineNumber":75,"author":{"gitId":"jimseah-0116"},"content":" return this;","lastModifiedDate":"2024-03-24"},{"lineNumber":76,"author":{"gitId":"jimseah-0116"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":77,"author":{"gitId":"jimseah-0116"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":79,"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":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String ... tags) {","lastModifiedDate":"2017-08-15"},{"lineNumber":82,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2017-12-20"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of 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 withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","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 Phone} 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 withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","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 Email} 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 withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":106,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","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":"irwynliong"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":111,"author":{"gitId":"irwynliong"},"content":" * Sets the {@code Meeting} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-21"},{"lineNumber":112,"author":{"gitId":"irwynliong"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":113,"author":{"gitId":"irwynliong"},"content":" public PersonBuilder withMeeting(String meeting) {","lastModifiedDate":"2024-03-21"},{"lineNumber":114,"author":{"gitId":"irwynliong"},"content":" this.meeting \u003d new Meeting(meeting);","lastModifiedDate":"2024-03-21"},{"lineNumber":115,"author":{"gitId":"irwynliong"},"content":" return this;","lastModifiedDate":"2024-03-21"},{"lineNumber":116,"author":{"gitId":"irwynliong"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":117,"author":{"gitId":"irwynliong"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05"},{"lineNumber":119,"author":{"gitId":"youdonnnn"},"content":" return new Person(name, phone, email, address, meeting, tags, policies);","lastModifiedDate":"2024-03-21"},{"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":{"youdonnnn":3,"jimseah-0116":10,"irwynliong":14,"-":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":"irwynliong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MEETING;","lastModifiedDate":"2024-03-21"},{"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":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" sb.append(PREFIX_ADDRESS + person.getAddress().value + \" \");","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"irwynliong"},"content":" sb.append(PREFIX_MEETING + person.getMeeting().value + \" \");","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" person.getTags().stream().forEach(","lastModifiedDate":"2017-05-09"},{"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":"-"},"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":"irwynliong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26"},{"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":"-"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":55,"author":{"gitId":"irwynliong"},"content":" descriptor.getMeeting().ifPresent(meeting -\u003e sb.append(PREFIX_MEETING).append(meeting.value).append(\" \"));","lastModifiedDate":"2024-03-21"},{"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":{"irwynliong":4,"-":62}},{"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":"irwynliong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MEETING_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"irwynliong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MEETING_BOB;","lastModifiedDate":"2024-03-21"},{"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":"-"},"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":"-"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2017-04-05"},{"lineNumber":30,"author":{"gitId":"irwynliong"},"content":" .withPhone(\"94351253\").withMeeting(\"2024-01-12\")","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" .withTags(\"friends\").build();","lastModifiedDate":"2016-09-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10"},{"lineNumber":33,"author":{"gitId":"-"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2017-09-21"},{"lineNumber":34,"author":{"gitId":"irwynliong"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\").withMeeting(\"2024-01-13\")","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" .withTags(\"owesMoney\", \"friends\").build();","lastModifiedDate":"2016-09-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2018-01-10"},{"lineNumber":37,"author":{"gitId":"irwynliong"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\").withMeeting(\"2024-01-14\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2018-01-10"},{"lineNumber":39,"author":{"gitId":"irwynliong"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\").withMeeting(\"2024-01-15\")","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"irwynliong"},"content":" .withTags(\"friends\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2018-01-10"},{"lineNumber":42,"author":{"gitId":"irwynliong"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\").withMeeting(\"2024-01-16\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2018-01-10"},{"lineNumber":44,"author":{"gitId":"irwynliong"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\").withMeeting(\"2024-01-17\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2018-01-10"},{"lineNumber":46,"author":{"gitId":"irwynliong"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\").withMeeting(\"2024-01-18\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2018-01-10"},{"lineNumber":50,"author":{"gitId":"irwynliong"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\").withMeeting(\"2024-01-18\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2018-01-10"},{"lineNumber":52,"author":{"gitId":"irwynliong"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\").withMeeting(\"2024-01-19\").build();","lastModifiedDate":"2024-03-21"},{"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":"-"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2018-01-10"},{"lineNumber":56,"author":{"gitId":"irwynliong"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withMeeting(VALID_MEETING_AMY)","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"irwynliong"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2018-01-10"},{"lineNumber":59,"author":{"gitId":"irwynliong"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"irwynliong"},"content":" .withMeeting(VALID_MEETING_BOB).withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2017-09-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05"},{"lineNumber":71,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05"},{"lineNumber":72,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10"},{"lineNumber":73,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04"},{"lineNumber":81,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13"}],"authorContributionMap":{"irwynliong":16,"-":65}}] diff --git a/AY2324S2-CS2103T-W09-4_tp_master/commits.json b/AY2324S2-CS2103T-W09-4_tp_master/commits.json index e014e3f3..e1590597 100644 --- a/AY2324S2-CS2103T-W09-4_tp_master/commits.json +++ b/AY2324S2-CS2103T-W09-4_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"youdonnnn":[{"date":"2024-03-04","commitResults":[{"hash":"4996e9bef60a4636dadd30a85c8b04084f5bc533","isMergeCommit":false,"messageTitle":"Add personal particulars into AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}}]},{"date":"2024-03-05","commitResults":[{"hash":"cd02c017202b93d900f6f4ed9e60aa125456de4b","isMergeCommit":false,"messageTitle":"Edit features of the UG to match InsureBook","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":88}}},{"hash":"154927f443f3330afcd68724a76f353e76fb0a55","isMergeCommit":true,"messageTitle":"Merge pull request #17 from youdonnnn/update-AboutUs-page","messageBody":"Add personal particulars into AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"76d839ae199eeaf7b52c883d404543ee4b35351f","isMergeCommit":true,"messageTitle":"Merge pull request #28 from Greg-Tan/update-AboutUs","messageBody":"Update AboutUs to include Greg details","fileTypesAndContributionMap":{}}]},{"date":"2024-03-06","commitResults":[{"hash":"d050324bdd4a1305b9b023ded04d9381515717cc","isMergeCommit":true,"messageTitle":"Merge pull request #31 from jimseah-0116/update-ReadME","messageBody":"Update README","fileTypesAndContributionMap":{}},{"hash":"4ebc47bb6e21313eb72095fcf5193ca836d42b5f","isMergeCommit":true,"messageTitle":"Merge pull request #32 from jimseah-0116/update-UG","messageBody":"Update User Guide","fileTypesAndContributionMap":{}}]},{"date":"2024-03-07","commitResults":[{"hash":"413b87d10a3f2d3266342e6d14d17648a8427c45","isMergeCommit":true,"messageTitle":"Merge pull request #35 from irwynliong/branch-aboutUs","messageBody":"Add about us for everyone","fileTypesAndContributionMap":{}}]},{"date":"2024-03-12","commitResults":[{"hash":"26026139725f0ddb6014b59aed3021de7ce9dbcc","isMergeCommit":true,"messageTitle":"Merge pull request #45 from rahhulleee/branch-Ui-Changes","messageBody":"Edit UI to orange theme","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"a2db11e55150af6dfc21efab24c8e015acd0d003","isMergeCommit":true,"messageTitle":"Merge pull request #58 from Greg-Tan/branch-addPolicyFeature","messageBody":"Started on addPolicy feature","fileTypesAndContributionMap":{}},{"hash":"4d5ea684c578c6dbe025d23085090fedcb621951","isMergeCommit":false,"messageTitle":"Add ability to display policies in GUI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":26,"deletions":22}}},{"hash":"8a3876cbcfacaa682fec19ff4f5ed22efc6741c6","isMergeCommit":true,"messageTitle":"Merge pull request #60 from youdonnnn/branch-AddPolicyUI","messageBody":"Add ability to display policies in GUI","fileTypesAndContributionMap":{}},{"hash":"33db48bd94d9479e9109db877106d5f3bb08d9cb","isMergeCommit":false,"messageTitle":"Fix bug with GUI display","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0}}},{"hash":"28b8421068e4b8e7f752a4871a3bbe8221ffc4e2","isMergeCommit":true,"messageTitle":"Merge pull request #61 from youdonnnn/branch-AddPolicyUI","messageBody":"Fix bug with GUI display","fileTypesAndContributionMap":{}},{"hash":"de3603288230f1698384328f45373197bd08d8f6","isMergeCommit":false,"messageTitle":"Change colour of policy name shown in GUI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":0}}},{"hash":"65f8cd8ec0327f6d11b85dfa415edf1d26124571","isMergeCommit":true,"messageTitle":"Merge pull request #62 from youdonnnn/branch-AddPolicyUI","messageBody":"Change colour of policy name shown in GUI","fileTypesAndContributionMap":{}},{"hash":"2767aec47a93a4f269b5dd7a1a043b4333c89002","isMergeCommit":true,"messageTitle":"Merge pull request #59 from irwynliong/Ui-meeting","messageBody":"Ui for meeting","fileTypesAndContributionMap":{}},{"hash":"a478c1eebbab8c245d410c11e7bccedafc667f85","isMergeCommit":false,"messageTitle":"Fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":165,"deletions":64}}},{"hash":"d0c4f3b7e1cc6eaeee0332a8132f80bd853b6190","isMergeCommit":true,"messageTitle":"Merge pull request #64 from youdonnnn/branch-AddPolicyUI","messageBody":"Fix checkstyle errors","fileTypesAndContributionMap":{}},{"hash":"b08c4ebc77e2c14d4901be6a89e79a7ceaf71c06","isMergeCommit":false,"messageTitle":"Fix JsonAdaptedPersonTest.java errors","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":16,"deletions":11}}},{"hash":"10fcbbd395bede00f86b2d1a82812c76c0990c2e","isMergeCommit":true,"messageTitle":"Merge pull request #65 from youdonnnn/branch-AddPolicyUI","messageBody":"Fix JsonAdaptedPersonTest.java errors","fileTypesAndContributionMap":{}},{"hash":"7c52682e541dec449cec47c84d73d9a86551d294","isMergeCommit":false,"messageTitle":"Fix PersonBuilder.java errors","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":1}}},{"hash":"7a8c6b601ed5c44be9f07ed5e28487dded020a55","isMergeCommit":true,"messageTitle":"Merge pull request #66 from youdonnnn/branch-AddPolicyUI","messageBody":"Fix PersonBuilder.java errors","fileTypesAndContributionMap":{}},{"hash":"0ed4d600abebbec90dd7de26053f714d02fefc5e","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-addPolicyFeature","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e73aaedd795e94d9e45e31700f2fe55355e19312","isMergeCommit":true,"messageTitle":"Merge pull request #63 from AY2324S2-CS2103T-W09-4/branch-addPolicyFeature","messageBody":"Create Add Policy command","fileTypesAndContributionMap":{}},{"hash":"d3be4e12df47a1839d3f2d280b02b973abe05e2d","isMergeCommit":true,"messageTitle":"Merge pull request #67 from Greg-Tan/master","messageBody":"Fixed minor bugs and improved code cleanliness","fileTypesAndContributionMap":{}}]},{"date":"2024-03-22","commitResults":[{"hash":"bfaf23b5444dc6ad7785c5b39fdd4d99a54a98de","isMergeCommit":false,"messageTitle":"Add PUML diagram for Add Policy command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":41,"deletions":0}}}]}],"jimseah-0116":[{"date":"2024-03-05","commitResults":[{"hash":"2d01c364e15a8f433834b47f84ec82bbdb4cd4aa","isMergeCommit":false,"messageTitle":"Update README","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}},{"hash":"79efdcf0a76b4d3719f9e36864ca4e1e91a410ce","isMergeCommit":false,"messageTitle":"Update README","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":20,"deletions":10}}},{"hash":"49b93bf89f573f9cefdd50f9d994289dac47b380","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W09-4:master\u0027 into update-ReadME","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c96b597181b8961bad7cf3d64a4a8584492627b8","isMergeCommit":false,"messageTitle":"Update README","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"fa447de5f64c973b78e591dc2486e5132f0ed7af","isMergeCommit":true,"messageTitle":"Merge pull request #21 from youdonnnn/edit-UG-features","messageBody":"Edit features of the UG to match InsureBook","fileTypesAndContributionMap":{}},{"hash":"742f857bb26c40b97d4954e6060bbb148c9c775d","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W09-4:master\u0027 into update-ReadME","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"3662c4ab144635850a53e3b6f2d98020cee6b6d4","isMergeCommit":false,"messageTitle":"Update README","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"f52128df17b7e1e2e93e3ac8a249593e3a25b50b","isMergeCommit":false,"messageTitle":"Update README","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":20}}}]},{"date":"2024-03-06","commitResults":[{"hash":"dd123bb78b331793bb3c063172643f80f99f0bcf","isMergeCommit":true,"messageTitle":"Merge pull request #30 from rahhulleee/branch-Developer-Guide","messageBody":"V1.1 Iteration Manual Testing Appendix Edits","fileTypesAndContributionMap":{}},{"hash":"71a4eb83bdef00e30a4c35c60c19c1546e8b6e93","isMergeCommit":false,"messageTitle":"Update README","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":21,"deletions":11}}},{"hash":"18778ccc22c5c4db0a4cc11eb80ea9bdab34a2a5","isMergeCommit":false,"messageTitle":"Update User Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":14,"deletions":10}}},{"hash":"ee0749fedb05783184c94d62494ecf8224d3eb32","isMergeCommit":true,"messageTitle":"Merge pull request #33 from irwynliong/branch-Developer-Guide","messageBody":"Edit current DG to fit our requirement","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"5ec5127210772e599a8b113baf850080880643c3","isMergeCommit":true,"messageTitle":"Merge pull request #54 from irwynliong/branch-meeting","messageBody":"Added meeting field","fileTypesAndContributionMap":{}},{"hash":"1735714ef7b43e96eddf2aff196df42c38c73cf2","isMergeCommit":false,"messageTitle":"Add MeetingsCommand and MeetingsWindow Add closeOnEsc() functionality to HelpWindow Minor fixes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":212,"deletions":8},"test-code":{"insertions":34,"deletions":8}}},{"hash":"f52383ebe09538ff3bf7ebe07e6c3577d625e579","isMergeCommit":false,"messageTitle":"Fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}}]}],"irwynliong":[{"date":"2024-02-29","commitResults":[{"hash":"523946313b999c2d08b8affa140e97e79543c4fb","isMergeCommit":true,"messageTitle":"Merge pull request #1 from AY2324S2-CS2103T-W09-4/switch-docs-to-markbind","messageBody":"Switch docs to markbind","fileTypesAndContributionMap":{}},{"hash":"eb6b454e3337ea16af5f428110fe3e5ec3ecda26","isMergeCommit":false,"messageTitle":"Update default.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-05","commitResults":[{"hash":"def0bd72d1f46fa8d59d7c70e84aa017b9c8abf4","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into edit-UG-features","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8a6b8264878998f2e04216b93b7a776899c85a67","isMergeCommit":false,"messageTitle":"Add about us and portfolio, edit abit of the DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":67,"deletions":20}}},{"hash":"45c5ef83517d4a3019c8c3bab47a0a7c8e2d7e3a","isMergeCommit":true,"messageTitle":"Merge pull request #26 from irwynliong/branch-aboutus-and-DG","messageBody":"Add about us and portfolio, edit abit of the DG","fileTypesAndContributionMap":{}}]},{"date":"2024-03-06","commitResults":[{"hash":"de59d1b9ec5af18e51c4382a2e46c41f1a15c5c9","isMergeCommit":true,"messageTitle":"Merge pull request #29 from Greg-Tan/branch-editFeatures-UG","messageBody":"Edit features of user guide to include addPolicy command","fileTypesAndContributionMap":{}},{"hash":"f7072726b9cfbc6dec66552f5a964389cb6b47ed","isMergeCommit":false,"messageTitle":"Edit current DG to fit our requirement","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":234,"deletions":53}}}]},{"date":"2024-03-07","commitResults":[{"hash":"c9959c8d040532d419f6a46b583f69affe05ddfa","isMergeCommit":false,"messageTitle":"Add about us for everyone","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":103,"deletions":11}}},{"hash":"557d4491f5ae335d1ee384f405953fff9cad3d87","isMergeCommit":true,"messageTitle":"Merge pull request #36 from rahhulleee/branch-Edit-AboutUs","messageBody":"Rahul\u0027s Edits for About Us","fileTypesAndContributionMap":{}},{"hash":"aa9fb13a1a180d5ba06d81bf5b5fa6b77b657d36","isMergeCommit":true,"messageTitle":"Merge pull request #37 from Greg-Tan/update-picture-AboutUs","messageBody":"Edit details in AboutUs for greg details","fileTypesAndContributionMap":{}}]},{"date":"2024-03-12","commitResults":[{"hash":"a8f441f526c279fcc3ca762767bee3ebd7e47c25","isMergeCommit":false,"messageTitle":"add codecov to readme","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"f97e0ebecbc3c1e8e69913bb986472cb7f5bdcea","isMergeCommit":true,"messageTitle":"Merge pull request #47 from irwynliong/codecov","messageBody":"add codecov to readme","fileTypesAndContributionMap":{}}]},{"date":"2024-03-18","commitResults":[{"hash":"b1879236cd226d7d7287bb74f978d5972835fd5c","isMergeCommit":false,"messageTitle":"Add Client function","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":586,"deletions":22},"test-code":{"insertions":73,"deletions":11}}},{"hash":"4417d02ccee8b1153cc6c2e20d7e1c95aa53f745","isMergeCommit":true,"messageTitle":"Merge pull request #48 from irwynliong/branch-ClientAdd","messageBody":"Add Client function","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"70833b0537e7e25feda00bf08cc1ff2a0f892a62","isMergeCommit":false,"messageTitle":"Added meeting field","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":121,"deletions":527},"test-code":{"insertions":187,"deletions":102}}},{"hash":"561da404a4260cf20e1c1ca73e526c2fa8fba90e","isMergeCommit":false,"messageTitle":"PUML for meeting field","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":0}}},{"hash":"647b462e808283ba1ae85434c0418d21b599f307","isMergeCommit":true,"messageTitle":"Merge pull request #56 from irwynliong/branch-puml","messageBody":"PUML for meeting field","fileTypesAndContributionMap":{}},{"hash":"5973d6bb7530ad30a66e3176b312d95b9d109454","isMergeCommit":true,"messageTitle":"Merge pull request #55 from rahhulleee/branch-ViewCommand","messageBody":"View Command","fileTypesAndContributionMap":{}},{"hash":"d737c8dd65b008c5d1eb5ed8ca2af5bad43efd7e","isMergeCommit":true,"messageTitle":"Merge pull request #57 from jimseah-0116/add-meetings-command","messageBody":"Add MeetingsCommand and MeetingsWindow","fileTypesAndContributionMap":{}},{"hash":"55791057c2f57b264111aa4920700a13058b4940","isMergeCommit":false,"messageTitle":"Ui for meeting","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":0}}}]},{"date":"2024-03-22","commitResults":[{"hash":"147a1058938d6fd477cc42e48dcdbf4401b694f7","isMergeCommit":true,"messageTitle":"Merge pull request #68 from youdonnnn/master","messageBody":"Add PUML diagram for Add Policy command","tags":["v1.2.0"],"fileTypesAndContributionMap":{}}]}],"Greg-Tan":[{"date":"2024-03-05","commitResults":[{"hash":"c3040bc127e82c5e832ab6568571604f12141d16","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of github.com-Greg-Tan:Greg-Tan/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"7a790b5a9b9b9663b4b2e2c982434c020da8afa0","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W09-4:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"957875a349390a4f3b7578111537befc28e3ffc3","isMergeCommit":false,"messageTitle":"Add greg details to AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":51,"deletions":5}}}]},{"date":"2024-03-06","commitResults":[{"hash":"4c28aea1bc528ba46f34592d987fa0c4c78381b8","isMergeCommit":false,"messageTitle":"Edit features of user guide to include addPolicy command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":17,"deletions":5}}}]},{"date":"2024-03-07","commitResults":[{"hash":"9128bb974367567ab6e1834c40274e68437d8157","isMergeCommit":false,"messageTitle":"Edit details in AboutUs for greg details","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"194ad8c7612b4c8ca16aad706f3112557bb81388","isMergeCommit":false,"messageTitle":"adjust reference call to png file","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-17","commitResults":[{"hash":"72a4c1b79d5b9b9b647135333b4d33b60e58a2de","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of github.com-Greg-Tan:Greg-Tan/tp","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-18","commitResults":[{"hash":"0fca5e22e9ce19334891268b7b9b5e14912d4e9e","isMergeCommit":false,"messageTitle":"change shadowJar name to InsureBook","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":1,"deletions":1}}},{"hash":"0c670b2d1871ea780cc749c1a363a621f564c628","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W09-4:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"0a6cd01ed8906c19cf61ad4ac6b49bf155f3605e","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W09-4:master\u0027 into branch-addPolicyFeature","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"3c4d9cc08ea5d2ddcb105a595bc3a3f6d6b01f0b","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of github.com-Greg-Tan:Greg-Tan/tp","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"2cd83c7cad2393626a2cde715085f684d25e56ac","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W09-4:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"3294dfe273e28458d2d35fc9da075139d624154c","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W09-4:master\u0027 into branch-addPolicyFeature","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"6f30abe8319af5cf023e0fe0d736ef2a1cae9ae0","isMergeCommit":false,"messageTitle":"Add new AddPolicy command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":201,"deletions":34}}},{"hash":"c27344ecce490fd0105d88fee8682d3183064c7a","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-addPolicyFeature\u0027 of github.com-Greg-Tan:Greg-Tan/tp into branch-addPolicyFeature","messageBody":"# Conflicts:\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/ParserUtil.java\n#\tsrc/main/java/seedu/address/model/person/Client.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","fileTypesAndContributionMap":{}},{"hash":"2c0025b0be91afe8530ed8c34c71dc87b67681f9","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W09-4:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"076c35942b70db45fc85dfc2e4577a497f7fb9cb","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W09-4:master\u0027 into branch-addPolicyFeature","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"54de4a5aad86a85ce5ce4e0007e2407a2ac15a61","isMergeCommit":false,"messageTitle":"Create addPolicy command to add multiple policy names to persons in the addressbook","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":189,"deletions":155}}},{"hash":"5a044d0c77565558a83799fff8406d0bd07c7e5d","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-addPolicyFeature\u0027 of github.com-Greg-Tan:Greg-Tan/tp into branch-addPolicyFeature","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"512c58893de5e82703542cccf297e2f25c9de3c1","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W09-4:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f2e8297886db95127b8ce2a3ba52e7c59e812392","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of github.com-Greg-Tan:Greg-Tan/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"5deb5ee39c30376f4e8c27d996100589ce17be87","isMergeCommit":false,"messageTitle":"Clean up syntax and comments","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":36}}}]}],"rahhulleee":[{"date":"2024-03-06","commitResults":[{"hash":"7ebc5655049732a7523830804687c48031dffaf6","isMergeCommit":false,"messageTitle":"V1.1 Iteration Manual Testing Appendix","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":58,"deletions":19}}}]},{"date":"2024-03-07","commitResults":[{"hash":"cb23fc279e27b24949c83195387eed88a59f955d","isMergeCommit":false,"messageTitle":"Rahul\u0027s Edits for About Us","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":2}}},{"hash":"7334bdcf41c6d089014d43fff1290535313881dc","isMergeCommit":false,"messageTitle":"Change aboutus picture name to conform to naming standard","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"04dd693fbaf90eb83637e031b14508b5bd28d25b","isMergeCommit":false,"messageTitle":"Change aboutus picture name to conform to naming standard for Greg","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-11","commitResults":[{"hash":"c0fb3270d51390a212ec220b3d44086cb29ed212","isMergeCommit":false,"messageTitle":"Ui improved","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":124,"deletions":124}}}]},{"date":"2024-03-12","commitResults":[{"hash":"cf8edcd231a73f48d843f768862de8ec30dc4fc1","isMergeCommit":false,"messageTitle":"Change to App logo","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":7}}},{"hash":"96fba1941c20e2745f3240dbf66d9776bee4a2c6","isMergeCommit":false,"messageTitle":"Ui changes with checkstyle fixes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":3},"docs":{"insertions":22,"deletions":23}}}]},{"date":"2024-03-21","commitResults":[{"hash":"99b5632c6de033704c6f060e55f552883dfc78ba","isMergeCommit":false,"messageTitle":"View command feature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":199,"deletions":0},"test-code":{"insertions":128,"deletions":0}}},{"hash":"4dab12730cb5801fbfeda41249b4efd116e28d6e","isMergeCommit":false,"messageTitle":"Checks for codecov ViewCommand test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":51,"deletions":7}}},{"hash":"5d14de8aab3d06988367079a276346fd5c00314a","isMergeCommit":false,"messageTitle":"Fixes for checkstyle in ViewCommandParser","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"0e9ca0b748ba8861122a1c5d360a332283ffc64b","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-ViewCommand","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"dc15e5015a9183812dac07469c26f898a219eb55","isMergeCommit":false,"messageTitle":"Final changes for View in v12","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":82,"deletions":0}}},{"hash":"eb29896427dc4ad9a69f11c5190ea2338fc24bb0","isMergeCommit":false,"messageTitle":"Remove ViewSequenceDiagram","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":41}}},{"hash":"88cb046245703e53b6e452f9380dfe9bab3b21b3","isMergeCommit":false,"messageTitle":"Fix coverage of ABparserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":0}}},{"hash":"05f906e68a86460c14af17fe3eb801e0fba7bdb1","isMergeCommit":false,"messageTitle":"Fix parseCommandView","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":2}}}]}]},"authorFileTypeContributionMap":{"youdonnnn":{"docs":13,"functional-code":141,"test-code":19},"jimseah-0116":{"docs":34,"functional-code":212,"test-code":34},"irwynliong":{"docs":286,"functional-code":168,"test-code":168},"Greg-Tan":{"docs":16,"functional-code":263,"test-code":0,"other":1},"rahhulleee":{"docs":115,"functional-code":238,"test-code":180}},"authorContributionVariance":{"youdonnnn":3733.1768,"jimseah-0116":2593.7502,"irwynliong":45466.656,"Greg-Tan":12586.782,"rahhulleee":10919.338},"authorDisplayNameMap":{"youdonnnn":"CS2103T-W09-4 LOH ..TONG","jimseah-0116":"CS2103T-W09-4 JIM ..SEAH","irwynliong":"CS2103T-W09-4 LION..RWYN","Greg-Tan":"CS2103T-W09-4 GREG..MING","rahhulleee":"CS2103T-W09-4 SITH..AHUL"}} +{"authorDailyContributionsMap":{"youdonnnn":[{"date":"2024-03-04","commitResults":[{"hash":"4996e9bef60a4636dadd30a85c8b04084f5bc533","isMergeCommit":false,"messageTitle":"Add personal particulars into AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}}]},{"date":"2024-03-05","commitResults":[{"hash":"cd02c017202b93d900f6f4ed9e60aa125456de4b","isMergeCommit":false,"messageTitle":"Edit features of the UG to match InsureBook","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":88}}},{"hash":"154927f443f3330afcd68724a76f353e76fb0a55","isMergeCommit":true,"messageTitle":"Merge pull request #17 from youdonnnn/update-AboutUs-page","messageBody":"Add personal particulars into AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"76d839ae199eeaf7b52c883d404543ee4b35351f","isMergeCommit":true,"messageTitle":"Merge pull request #28 from Greg-Tan/update-AboutUs","messageBody":"Update AboutUs to include Greg details","fileTypesAndContributionMap":{}}]},{"date":"2024-03-06","commitResults":[{"hash":"d050324bdd4a1305b9b023ded04d9381515717cc","isMergeCommit":true,"messageTitle":"Merge pull request #31 from jimseah-0116/update-ReadME","messageBody":"Update README","fileTypesAndContributionMap":{}},{"hash":"4ebc47bb6e21313eb72095fcf5193ca836d42b5f","isMergeCommit":true,"messageTitle":"Merge pull request #32 from jimseah-0116/update-UG","messageBody":"Update User Guide","fileTypesAndContributionMap":{}}]},{"date":"2024-03-07","commitResults":[{"hash":"413b87d10a3f2d3266342e6d14d17648a8427c45","isMergeCommit":true,"messageTitle":"Merge pull request #35 from irwynliong/branch-aboutUs","messageBody":"Add about us for everyone","fileTypesAndContributionMap":{}}]},{"date":"2024-03-12","commitResults":[{"hash":"26026139725f0ddb6014b59aed3021de7ce9dbcc","isMergeCommit":true,"messageTitle":"Merge pull request #45 from rahhulleee/branch-Ui-Changes","messageBody":"Edit UI to orange theme","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"a2db11e55150af6dfc21efab24c8e015acd0d003","isMergeCommit":true,"messageTitle":"Merge pull request #58 from Greg-Tan/branch-addPolicyFeature","messageBody":"Started on addPolicy feature","fileTypesAndContributionMap":{}},{"hash":"4d5ea684c578c6dbe025d23085090fedcb621951","isMergeCommit":false,"messageTitle":"Add ability to display policies in GUI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":26,"deletions":22}}},{"hash":"8a3876cbcfacaa682fec19ff4f5ed22efc6741c6","isMergeCommit":true,"messageTitle":"Merge pull request #60 from youdonnnn/branch-AddPolicyUI","messageBody":"Add ability to display policies in GUI","fileTypesAndContributionMap":{}},{"hash":"33db48bd94d9479e9109db877106d5f3bb08d9cb","isMergeCommit":false,"messageTitle":"Fix bug with GUI display","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0}}},{"hash":"28b8421068e4b8e7f752a4871a3bbe8221ffc4e2","isMergeCommit":true,"messageTitle":"Merge pull request #61 from youdonnnn/branch-AddPolicyUI","messageBody":"Fix bug with GUI display","fileTypesAndContributionMap":{}},{"hash":"de3603288230f1698384328f45373197bd08d8f6","isMergeCommit":false,"messageTitle":"Change colour of policy name shown in GUI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":0}}},{"hash":"65f8cd8ec0327f6d11b85dfa415edf1d26124571","isMergeCommit":true,"messageTitle":"Merge pull request #62 from youdonnnn/branch-AddPolicyUI","messageBody":"Change colour of policy name shown in GUI","fileTypesAndContributionMap":{}},{"hash":"2767aec47a93a4f269b5dd7a1a043b4333c89002","isMergeCommit":true,"messageTitle":"Merge pull request #59 from irwynliong/Ui-meeting","messageBody":"Ui for meeting","fileTypesAndContributionMap":{}},{"hash":"a478c1eebbab8c245d410c11e7bccedafc667f85","isMergeCommit":false,"messageTitle":"Fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":165,"deletions":64}}},{"hash":"d0c4f3b7e1cc6eaeee0332a8132f80bd853b6190","isMergeCommit":true,"messageTitle":"Merge pull request #64 from youdonnnn/branch-AddPolicyUI","messageBody":"Fix checkstyle errors","fileTypesAndContributionMap":{}},{"hash":"b08c4ebc77e2c14d4901be6a89e79a7ceaf71c06","isMergeCommit":false,"messageTitle":"Fix JsonAdaptedPersonTest.java errors","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":16,"deletions":11}}},{"hash":"10fcbbd395bede00f86b2d1a82812c76c0990c2e","isMergeCommit":true,"messageTitle":"Merge pull request #65 from youdonnnn/branch-AddPolicyUI","messageBody":"Fix JsonAdaptedPersonTest.java errors","fileTypesAndContributionMap":{}},{"hash":"7c52682e541dec449cec47c84d73d9a86551d294","isMergeCommit":false,"messageTitle":"Fix PersonBuilder.java errors","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":1}}},{"hash":"7a8c6b601ed5c44be9f07ed5e28487dded020a55","isMergeCommit":true,"messageTitle":"Merge pull request #66 from youdonnnn/branch-AddPolicyUI","messageBody":"Fix PersonBuilder.java errors","fileTypesAndContributionMap":{}},{"hash":"0ed4d600abebbec90dd7de26053f714d02fefc5e","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-addPolicyFeature","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e73aaedd795e94d9e45e31700f2fe55355e19312","isMergeCommit":true,"messageTitle":"Merge pull request #63 from AY2324S2-CS2103T-W09-4/branch-addPolicyFeature","messageBody":"Create Add Policy command","fileTypesAndContributionMap":{}},{"hash":"d3be4e12df47a1839d3f2d280b02b973abe05e2d","isMergeCommit":true,"messageTitle":"Merge pull request #67 from Greg-Tan/master","messageBody":"Fixed minor bugs and improved code cleanliness","fileTypesAndContributionMap":{}}]},{"date":"2024-03-22","commitResults":[{"hash":"bfaf23b5444dc6ad7785c5b39fdd4d99a54a98de","isMergeCommit":false,"messageTitle":"Add PUML diagram for Add Policy command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":41,"deletions":0}}}]}],"jimseah-0116":[{"date":"2024-03-05","commitResults":[{"hash":"2d01c364e15a8f433834b47f84ec82bbdb4cd4aa","isMergeCommit":false,"messageTitle":"Update README","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}},{"hash":"79efdcf0a76b4d3719f9e36864ca4e1e91a410ce","isMergeCommit":false,"messageTitle":"Update README","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":20,"deletions":10}}},{"hash":"49b93bf89f573f9cefdd50f9d994289dac47b380","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W09-4:master\u0027 into update-ReadME","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c96b597181b8961bad7cf3d64a4a8584492627b8","isMergeCommit":false,"messageTitle":"Update README","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"fa447de5f64c973b78e591dc2486e5132f0ed7af","isMergeCommit":true,"messageTitle":"Merge pull request #21 from youdonnnn/edit-UG-features","messageBody":"Edit features of the UG to match InsureBook","fileTypesAndContributionMap":{}},{"hash":"742f857bb26c40b97d4954e6060bbb148c9c775d","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W09-4:master\u0027 into update-ReadME","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"3662c4ab144635850a53e3b6f2d98020cee6b6d4","isMergeCommit":false,"messageTitle":"Update README","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"f52128df17b7e1e2e93e3ac8a249593e3a25b50b","isMergeCommit":false,"messageTitle":"Update README","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":20}}}]},{"date":"2024-03-06","commitResults":[{"hash":"dd123bb78b331793bb3c063172643f80f99f0bcf","isMergeCommit":true,"messageTitle":"Merge pull request #30 from rahhulleee/branch-Developer-Guide","messageBody":"V1.1 Iteration Manual Testing Appendix Edits","fileTypesAndContributionMap":{}},{"hash":"71a4eb83bdef00e30a4c35c60c19c1546e8b6e93","isMergeCommit":false,"messageTitle":"Update README","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":21,"deletions":11}}},{"hash":"18778ccc22c5c4db0a4cc11eb80ea9bdab34a2a5","isMergeCommit":false,"messageTitle":"Update User Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":14,"deletions":10}}},{"hash":"ee0749fedb05783184c94d62494ecf8224d3eb32","isMergeCommit":true,"messageTitle":"Merge pull request #33 from irwynliong/branch-Developer-Guide","messageBody":"Edit current DG to fit our requirement","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"5ec5127210772e599a8b113baf850080880643c3","isMergeCommit":true,"messageTitle":"Merge pull request #54 from irwynliong/branch-meeting","messageBody":"Added meeting field","fileTypesAndContributionMap":{}},{"hash":"1735714ef7b43e96eddf2aff196df42c38c73cf2","isMergeCommit":false,"messageTitle":"Add MeetingsCommand and MeetingsWindow Add closeOnEsc() functionality to HelpWindow Minor fixes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":212,"deletions":8},"test-code":{"insertions":34,"deletions":8}}},{"hash":"f52383ebe09538ff3bf7ebe07e6c3577d625e579","isMergeCommit":false,"messageTitle":"Fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}}]},{"date":"2024-03-24","commitResults":[{"hash":"dbfbd2d50448a1fe4b7c4f488495f5138ee78acc","isMergeCommit":false,"messageTitle":"Implement Meetings command Fix some testcases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":54,"deletions":11},"test-code":{"insertions":11,"deletions":0}}},{"hash":"9679d3b6e6a4252bc86c4c43de5c263a76da2699","isMergeCommit":false,"messageTitle":"Add Javadocs for displayMeeting","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":1}}},{"hash":"b079d31bab43dafbc6aff1a21f49d3b0a0c0da6d","isMergeCommit":false,"messageTitle":"Fix checkstyle issues Update \u0027help\u0027 command, User Guide","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":12},"docs":{"insertions":9,"deletions":1}}},{"hash":"c7d466ffa5b82d9f01703b931d2f123c47bafed5","isMergeCommit":true,"messageTitle":"Merge pull request #70 from jimseah-0116/master","messageBody":"Implement Meetings command","fileTypesAndContributionMap":{}}]}],"irwynliong":[{"date":"2024-02-29","commitResults":[{"hash":"523946313b999c2d08b8affa140e97e79543c4fb","isMergeCommit":true,"messageTitle":"Merge pull request #1 from AY2324S2-CS2103T-W09-4/switch-docs-to-markbind","messageBody":"Switch docs to markbind","fileTypesAndContributionMap":{}},{"hash":"eb6b454e3337ea16af5f428110fe3e5ec3ecda26","isMergeCommit":false,"messageTitle":"Update default.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-05","commitResults":[{"hash":"def0bd72d1f46fa8d59d7c70e84aa017b9c8abf4","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into edit-UG-features","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8a6b8264878998f2e04216b93b7a776899c85a67","isMergeCommit":false,"messageTitle":"Add about us and portfolio, edit abit of the DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":67,"deletions":20}}},{"hash":"45c5ef83517d4a3019c8c3bab47a0a7c8e2d7e3a","isMergeCommit":true,"messageTitle":"Merge pull request #26 from irwynliong/branch-aboutus-and-DG","messageBody":"Add about us and portfolio, edit abit of the DG","fileTypesAndContributionMap":{}}]},{"date":"2024-03-06","commitResults":[{"hash":"de59d1b9ec5af18e51c4382a2e46c41f1a15c5c9","isMergeCommit":true,"messageTitle":"Merge pull request #29 from Greg-Tan/branch-editFeatures-UG","messageBody":"Edit features of user guide to include addPolicy command","fileTypesAndContributionMap":{}},{"hash":"f7072726b9cfbc6dec66552f5a964389cb6b47ed","isMergeCommit":false,"messageTitle":"Edit current DG to fit our requirement","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":234,"deletions":53}}}]},{"date":"2024-03-07","commitResults":[{"hash":"c9959c8d040532d419f6a46b583f69affe05ddfa","isMergeCommit":false,"messageTitle":"Add about us for everyone","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":103,"deletions":11}}},{"hash":"557d4491f5ae335d1ee384f405953fff9cad3d87","isMergeCommit":true,"messageTitle":"Merge pull request #36 from rahhulleee/branch-Edit-AboutUs","messageBody":"Rahul\u0027s Edits for About Us","fileTypesAndContributionMap":{}},{"hash":"aa9fb13a1a180d5ba06d81bf5b5fa6b77b657d36","isMergeCommit":true,"messageTitle":"Merge pull request #37 from Greg-Tan/update-picture-AboutUs","messageBody":"Edit details in AboutUs for greg details","fileTypesAndContributionMap":{}}]},{"date":"2024-03-12","commitResults":[{"hash":"a8f441f526c279fcc3ca762767bee3ebd7e47c25","isMergeCommit":false,"messageTitle":"add codecov to readme","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"f97e0ebecbc3c1e8e69913bb986472cb7f5bdcea","isMergeCommit":true,"messageTitle":"Merge pull request #47 from irwynliong/codecov","messageBody":"add codecov to readme","fileTypesAndContributionMap":{}}]},{"date":"2024-03-18","commitResults":[{"hash":"b1879236cd226d7d7287bb74f978d5972835fd5c","isMergeCommit":false,"messageTitle":"Add Client function","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":586,"deletions":22},"test-code":{"insertions":73,"deletions":11}}},{"hash":"4417d02ccee8b1153cc6c2e20d7e1c95aa53f745","isMergeCommit":true,"messageTitle":"Merge pull request #48 from irwynliong/branch-ClientAdd","messageBody":"Add Client function","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"70833b0537e7e25feda00bf08cc1ff2a0f892a62","isMergeCommit":false,"messageTitle":"Added meeting field","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":121,"deletions":527},"test-code":{"insertions":187,"deletions":102}}},{"hash":"561da404a4260cf20e1c1ca73e526c2fa8fba90e","isMergeCommit":false,"messageTitle":"PUML for meeting field","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":0}}},{"hash":"647b462e808283ba1ae85434c0418d21b599f307","isMergeCommit":true,"messageTitle":"Merge pull request #56 from irwynliong/branch-puml","messageBody":"PUML for meeting field","fileTypesAndContributionMap":{}},{"hash":"5973d6bb7530ad30a66e3176b312d95b9d109454","isMergeCommit":true,"messageTitle":"Merge pull request #55 from rahhulleee/branch-ViewCommand","messageBody":"View Command","fileTypesAndContributionMap":{}},{"hash":"d737c8dd65b008c5d1eb5ed8ca2af5bad43efd7e","isMergeCommit":true,"messageTitle":"Merge pull request #57 from jimseah-0116/add-meetings-command","messageBody":"Add MeetingsCommand and MeetingsWindow","fileTypesAndContributionMap":{}},{"hash":"55791057c2f57b264111aa4920700a13058b4940","isMergeCommit":false,"messageTitle":"Ui for meeting","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":0}}}]},{"date":"2024-03-22","commitResults":[{"hash":"147a1058938d6fd477cc42e48dcdbf4401b694f7","isMergeCommit":true,"messageTitle":"Merge pull request #68 from youdonnnn/master","messageBody":"Add PUML diagram for Add Policy command","tags":["v1.2.0"],"fileTypesAndContributionMap":{}}]},{"date":"2024-03-24","commitResults":[{"hash":"dc269d7f268a0f72510c8e7e73a12cb01f645006","isMergeCommit":true,"messageTitle":"Merge pull request #69 from Greg-Tan/master","messageBody":"Update PUML file for AddPolicySequence diagram","fileTypesAndContributionMap":{}}]}],"Greg-Tan":[{"date":"2024-03-05","commitResults":[{"hash":"c3040bc127e82c5e832ab6568571604f12141d16","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of github.com-Greg-Tan:Greg-Tan/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"7a790b5a9b9b9663b4b2e2c982434c020da8afa0","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W09-4:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"957875a349390a4f3b7578111537befc28e3ffc3","isMergeCommit":false,"messageTitle":"Add greg details to AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":51,"deletions":5}}}]},{"date":"2024-03-06","commitResults":[{"hash":"4c28aea1bc528ba46f34592d987fa0c4c78381b8","isMergeCommit":false,"messageTitle":"Edit features of user guide to include addPolicy command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":17,"deletions":5}}}]},{"date":"2024-03-07","commitResults":[{"hash":"9128bb974367567ab6e1834c40274e68437d8157","isMergeCommit":false,"messageTitle":"Edit details in AboutUs for greg details","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"194ad8c7612b4c8ca16aad706f3112557bb81388","isMergeCommit":false,"messageTitle":"adjust reference call to png file","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-17","commitResults":[{"hash":"72a4c1b79d5b9b9b647135333b4d33b60e58a2de","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of github.com-Greg-Tan:Greg-Tan/tp","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-18","commitResults":[{"hash":"0fca5e22e9ce19334891268b7b9b5e14912d4e9e","isMergeCommit":false,"messageTitle":"change shadowJar name to InsureBook","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":1,"deletions":1}}},{"hash":"0c670b2d1871ea780cc749c1a363a621f564c628","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W09-4:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"0a6cd01ed8906c19cf61ad4ac6b49bf155f3605e","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W09-4:master\u0027 into branch-addPolicyFeature","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"3c4d9cc08ea5d2ddcb105a595bc3a3f6d6b01f0b","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of github.com-Greg-Tan:Greg-Tan/tp","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"2cd83c7cad2393626a2cde715085f684d25e56ac","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W09-4:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"3294dfe273e28458d2d35fc9da075139d624154c","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W09-4:master\u0027 into branch-addPolicyFeature","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"6f30abe8319af5cf023e0fe0d736ef2a1cae9ae0","isMergeCommit":false,"messageTitle":"Add new AddPolicy command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":201,"deletions":34}}},{"hash":"c27344ecce490fd0105d88fee8682d3183064c7a","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-addPolicyFeature\u0027 of github.com-Greg-Tan:Greg-Tan/tp into branch-addPolicyFeature","messageBody":"# Conflicts:\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/ParserUtil.java\n#\tsrc/main/java/seedu/address/model/person/Client.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","fileTypesAndContributionMap":{}},{"hash":"2c0025b0be91afe8530ed8c34c71dc87b67681f9","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W09-4:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"076c35942b70db45fc85dfc2e4577a497f7fb9cb","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W09-4:master\u0027 into branch-addPolicyFeature","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"54de4a5aad86a85ce5ce4e0007e2407a2ac15a61","isMergeCommit":false,"messageTitle":"Create addPolicy command to add multiple policy names to persons in the addressbook","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":189,"deletions":155}}},{"hash":"5a044d0c77565558a83799fff8406d0bd07c7e5d","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-addPolicyFeature\u0027 of github.com-Greg-Tan:Greg-Tan/tp into branch-addPolicyFeature","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"512c58893de5e82703542cccf297e2f25c9de3c1","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W09-4:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f2e8297886db95127b8ce2a3ba52e7c59e812392","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of github.com-Greg-Tan:Greg-Tan/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"5deb5ee39c30376f4e8c27d996100589ce17be87","isMergeCommit":false,"messageTitle":"Clean up syntax and comments","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":36}}}]},{"date":"2024-03-23","commitResults":[{"hash":"5475927c5d8ba5fc0af07ffe727ef20993c46973","isMergeCommit":false,"messageTitle":"Update PUML diagram for AddPolicySequenceDiagram","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":33,"deletions":8}}},{"hash":"6e017b0c45710131c6e9722d34df0d34851cab88","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-updatePUML\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e339ed70b8d799135e770d8d0aa4bc8fe41d8e7c","isMergeCommit":false,"messageTitle":"Remove Model Participant from AddPolicySequenceDiagram since it was not in use","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":1}}}]}],"rahhulleee":[{"date":"2024-03-06","commitResults":[{"hash":"7ebc5655049732a7523830804687c48031dffaf6","isMergeCommit":false,"messageTitle":"V1.1 Iteration Manual Testing Appendix","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":58,"deletions":19}}}]},{"date":"2024-03-07","commitResults":[{"hash":"cb23fc279e27b24949c83195387eed88a59f955d","isMergeCommit":false,"messageTitle":"Rahul\u0027s Edits for About Us","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":2}}},{"hash":"7334bdcf41c6d089014d43fff1290535313881dc","isMergeCommit":false,"messageTitle":"Change aboutus picture name to conform to naming standard","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"04dd693fbaf90eb83637e031b14508b5bd28d25b","isMergeCommit":false,"messageTitle":"Change aboutus picture name to conform to naming standard for Greg","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-11","commitResults":[{"hash":"c0fb3270d51390a212ec220b3d44086cb29ed212","isMergeCommit":false,"messageTitle":"Ui improved","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":124,"deletions":124}}}]},{"date":"2024-03-12","commitResults":[{"hash":"cf8edcd231a73f48d843f768862de8ec30dc4fc1","isMergeCommit":false,"messageTitle":"Change to App logo","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":7}}},{"hash":"96fba1941c20e2745f3240dbf66d9776bee4a2c6","isMergeCommit":false,"messageTitle":"Ui changes with checkstyle fixes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":3},"docs":{"insertions":22,"deletions":23}}}]},{"date":"2024-03-21","commitResults":[{"hash":"99b5632c6de033704c6f060e55f552883dfc78ba","isMergeCommit":false,"messageTitle":"View command feature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":199,"deletions":0},"test-code":{"insertions":128,"deletions":0}}},{"hash":"4dab12730cb5801fbfeda41249b4efd116e28d6e","isMergeCommit":false,"messageTitle":"Checks for codecov ViewCommand test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":51,"deletions":7}}},{"hash":"5d14de8aab3d06988367079a276346fd5c00314a","isMergeCommit":false,"messageTitle":"Fixes for checkstyle in ViewCommandParser","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"0e9ca0b748ba8861122a1c5d360a332283ffc64b","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-ViewCommand","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"dc15e5015a9183812dac07469c26f898a219eb55","isMergeCommit":false,"messageTitle":"Final changes for View in v12","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":82,"deletions":0}}},{"hash":"eb29896427dc4ad9a69f11c5190ea2338fc24bb0","isMergeCommit":false,"messageTitle":"Remove ViewSequenceDiagram","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":41}}},{"hash":"88cb046245703e53b6e452f9380dfe9bab3b21b3","isMergeCommit":false,"messageTitle":"Fix coverage of ABparserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":0}}},{"hash":"05f906e68a86460c14af17fe3eb801e0fba7bdb1","isMergeCommit":false,"messageTitle":"Fix parseCommandView","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":2}}}]}]},"authorFileTypeContributionMap":{"youdonnnn":{"docs":12,"functional-code":141,"test-code":19},"jimseah-0116":{"docs":39,"functional-code":253,"test-code":45},"irwynliong":{"docs":286,"functional-code":167,"test-code":168},"Greg-Tan":{"docs":49,"functional-code":263,"test-code":0,"other":1},"rahhulleee":{"docs":108,"functional-code":238,"test-code":180}},"authorContributionVariance":{"youdonnnn":3508.1125,"jimseah-0116":2712.1084,"irwynliong":42858.605,"Greg-Tan":11803.768,"rahhulleee":10275.87},"authorDisplayNameMap":{"youdonnnn":"CS2103T-W09-4 LOH ..TONG","jimseah-0116":"CS2103T-W09-4 JIM ..SEAH","irwynliong":"CS2103T-W09-4 LION..RWYN","Greg-Tan":"CS2103T-W09-4 GREG..MING","rahhulleee":"CS2103T-W09-4 SITH..AHUL"}} diff --git a/AY2324S2-CS2103T-W10-1_tp_master/authorship.json b/AY2324S2-CS2103T-W10-1_tp_master/authorship.json index 555a411f..62fe8ac4 100644 --- a/AY2324S2-CS2103T-W10-1_tp_master/authorship.json +++ b/AY2324S2-CS2103T-W10-1_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"[![CI Status](https://github.com/AY2324S2-CS2103T-W10-1/tp/actions/workflows/gradle.yml/badge.svg)](https://github.com/se-edu/addressbook-level3/actions)","lastModifiedDate":"2024-02-28"},{"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":"UdhayaShan1"},"content":"# Welcome to Realodex","lastModifiedDate":"2024-02-28"},{"lineNumber":6,"author":{"gitId":"UdhayaShan1"},"content":"* This is **CS2103T W10-1\u0027s Brownfield implementation of AddressBook 3** .\u003cbr\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":7,"author":{"gitId":"-"},"content":" Example usages:","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * as a starting point of a course project (as opposed to writing everything from scratch)","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * as a case study","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":"## So what is this project about?","lastModifiedDate":"2024-02-28"},{"lineNumber":12,"author":{"gitId":"UdhayaShan1"},"content":"* This project aims to help real estate agents with keeping track of their client data in their day-to-day activity.","lastModifiedDate":"2024-02-28"},{"lineNumber":13,"author":{"gitId":"UdhayaShan1"},"content":"* This project is also optimised for fast typing users and hence we will focus on a well optimised CLI system.","lastModifiedDate":"2024-02-28"},{"lineNumber":14,"author":{"gitId":"UdhayaShan1"},"content":"* The project simulates an ongoing software project for a desktop application by extending CS2103T\u0027s existing project (called _AddressBook_) used for managing contact details.","lastModifiedDate":"2024-02-28"},{"lineNumber":15,"author":{"gitId":"UdhayaShan1"},"content":" * It is **written in OOP fashion**. It provides a **very well-written** code base **bigger** (around 6 KLoC) than what students usually write in beginner-level SE modules, without being overwhelmingly big.","lastModifiedDate":"2024-02-28"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * It comes with a **reasonable level of user and developer documentation**.","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"UdhayaShan1"},"content":"* It is named `Realodex` (`RDX` for short) as we were inspired by the real life Rolodex that helps store a contact list. Importantly, it sounds catchy too.","lastModifiedDate":"2024-02-28"},{"lineNumber":18,"author":{"gitId":"UdhayaShan1"},"content":"* For the detailed documentation of this project, see the **[Address Book Product Website](https://ay2324s2-cs2103t-w10-1.github.io/tp/)**.","lastModifiedDate":"2024-02-28"},{"lineNumber":19,"author":{"gitId":"-"},"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":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":21,"author":{"gitId":"UdhayaShan1"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-02-28"}],"authorContributionMap":{"UdhayaShan1":13,"-":8}},{"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":"UdhayaShan1"},"content":"mainClassName \u003d \u0027seedu.realodex.Main\u0027","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" archiveFileName \u003d \u0027realodex.jar\u0027","lastModifiedDate":"2024-03-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":{"-":70,"UdhayaShan1":2}},{"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":"appleraincoat"},"content":"You can reach us at the email `cs2103t_w10_1[at]comp.nus.edu.sg`","lastModifiedDate":"2024-02-28"},{"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":"appleraincoat"},"content":"### James Lau","lastModifiedDate":"2024-02-28"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"appleraincoat"},"content":"\u003cimg src\u003d\"images/appleraincoat.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"appleraincoat"},"content":"[[github](https://github.com/appleraincoat)]","lastModifiedDate":"2024-02-28"},{"lineNumber":19,"author":{"gitId":"appleraincoat"},"content":"[[portfolio](team/appleraincoat)]","lastModifiedDate":"2024-02-28"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"* Role: Project Advisor","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"jyztintan"},"content":"### Tan Wee Kian, Justin","lastModifiedDate":"2024-02-28"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"jyztintan"},"content":"\u003cimg src\u003d\"images/jyztintan.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"jyztintan"},"content":"[[github](http://github.com/jyztintan)]","lastModifiedDate":"2024-02-28"},{"lineNumber":28,"author":{"gitId":"jyztintan"},"content":"[[portfolio](team/jyztintan.md)]","lastModifiedDate":"2024-02-28"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"jyztintan"},"content":"* Role: Developer","lastModifiedDate":"2024-02-28"},{"lineNumber":31,"author":{"gitId":"jyztintan"},"content":"* Responsibilities: TBC","lastModifiedDate":"2024-02-28"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"wapisai"},"content":"### Alicia Yap","lastModifiedDate":"2024-02-28"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"wapisai"},"content":"\u003cimg src\u003d\"images/wapisai.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"wapisai"},"content":"[[github](http://github.com/wapisai)] [[portfolio](team/wapisai.md)]","lastModifiedDate":"2024-02-28"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"* Responsibilities: Data","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"4llysa"},"content":"### Allysa Tan","lastModifiedDate":"2024-02-28"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"4llysa"},"content":"\u003cimg src\u003d\"images/4llysa.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"4llysa"},"content":"[[github](http://github.com/4llysa)]","lastModifiedDate":"2024-02-28"},{"lineNumber":48,"author":{"gitId":"4llysa"},"content":"[[portfolio](team/4llysa.md)]","lastModifiedDate":"2024-02-28"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"* Responsibilities: Dev Ops + Threading","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"UdhayaShan1"},"content":"### Shanmugam Udhaya","lastModifiedDate":"2024-02-28"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"UdhayaShan1"},"content":"\u003cimg src\u003d\"images/udhayashan1.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"UdhayaShan1"},"content":"[[github](http://github.com/udhayashan1)]","lastModifiedDate":"2024-02-28"},{"lineNumber":58,"author":{"gitId":"UdhayaShan1"},"content":"[[portfolio](team/udhaya.md)]","lastModifiedDate":"2024-02-28"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"UdhayaShan1"},"content":"* Responsibilities: TBC","lastModifiedDate":"2024-02-28"}],"authorContributionMap":{"4llysa":4,"jyztintan":6,"-":38,"UdhayaShan1":5,"appleraincoat":5,"wapisai":3}},{"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":"jyztintan"},"content":"# Realodex Developer Guide","lastModifiedDate":"2024-03-01"},{"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":"UdhayaShan1"},"content":"https://se-education.org/addressbook-level3/DeveloperGuide.html","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","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":"## **Design**","lastModifiedDate":"2020-05-23"},{"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":"\u003cpuml src\u003d\"diagrams/ArchitectureDiagram.puml\" width\u003d\"280\" /\u003e","lastModifiedDate":"2023-09-12"},{"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":"\u003cpuml src\u003d\"diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"574\" /\u003e","lastModifiedDate":"2023-09-12"},{"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":"UdhayaShan1"},"content":"* implements its functionality using a concrete `LogicManager` class (which follows the corresponding API `interface` mentioned in the previous point.","lastModifiedDate":"2024-03-19"},{"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":"\u003cpuml src\u003d\"diagrams/ComponentManagers.puml\" width\u003d\"300\" /\u003e","lastModifiedDate":"2023-09-12"},{"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":"\u003cpuml src\u003d\"diagrams/UiClassDiagram.puml\" alt\u003d\"Structure of the UI Component\"/\u003e","lastModifiedDate":"2023-09-12"},{"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":"\u003cpuml src\u003d\"diagrams/LogicClassDiagram.puml\" width\u003d\"550\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"UdhayaShan1"},"content":"Realodex has implemented a dynamic delete function that either deletes user by index or by their name. Here we illustrate","lastModifiedDate":"2024-03-19"},{"lineNumber":95,"author":{"gitId":"UdhayaShan1"},"content":"deletion by index for brevity.","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"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":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"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":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":101,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":"**Note:** The lifeline for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline continues till the end of diagram.","lastModifiedDate":"2023-09-12"},{"lineNumber":104,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":108,"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":109,"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":110,"author":{"gitId":"-"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a person).\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":111,"author":{"gitId":"-"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-02-09"},{"lineNumber":112,"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":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":114,"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":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":116,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31"},{"lineNumber":119,"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":120,"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":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31"},{"lineNumber":123,"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":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"UdhayaShan1"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"700\" /\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"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":131,"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":132,"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":133,"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":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":135,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":137,"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":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":139,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"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":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":150,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"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":152,"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":153,"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":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","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":"","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"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":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"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":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"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":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"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":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"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":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"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":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"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":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":195,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"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":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":202,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"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":205,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"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":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":217,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":221,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":223,"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":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":227,"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":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"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":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"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":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":268,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":269,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":270,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":271,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":277,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":281,"author":{"gitId":"wapisai"},"content":"* A real estate agent","lastModifiedDate":"2024-02-28"},{"lineNumber":282,"author":{"gitId":"wapisai"},"content":"* has a need to manage a significant number of contacts of their clients","lastModifiedDate":"2024-02-28"},{"lineNumber":283,"author":{"gitId":"wapisai"},"content":"* has to note down many details about each client","lastModifiedDate":"2024-02-28"},{"lineNumber":284,"author":{"gitId":"wapisai"},"content":"* has to frequently add, delete, and search for clients","lastModifiedDate":"2024-02-28"},{"lineNumber":285,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23"},{"lineNumber":286,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23"},{"lineNumber":287,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23"},{"lineNumber":288,"author":{"gitId":"jyztintan"},"content":"* is a real estate agent that wants to store relevant information about clients","lastModifiedDate":"2024-02-28"},{"lineNumber":289,"author":{"gitId":"jyztintan"},"content":"* able to store additional notes about contacts","lastModifiedDate":"2024-02-28"},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":291,"author":{"gitId":"jyztintan"},"content":"**Value proposition**:","lastModifiedDate":"2024-02-28"},{"lineNumber":292,"author":{"gitId":"jyztintan"},"content":"* manage contacts faster than a typical mouse/GUI driven applications.","lastModifiedDate":"2024-02-28"},{"lineNumber":293,"author":{"gitId":"jyztintan"},"content":"* storing of information tailored to real-estate agents","lastModifiedDate":"2024-02-28"},{"lineNumber":294,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":296,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":298,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":299,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":300,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":301,"author":{"gitId":"jyztintan"},"content":"|----------|----------------------------|----------------------------------------------------------|---------------------------------------------------------------------------------------------------|","lastModifiedDate":"2024-02-28"},{"lineNumber":302,"author":{"gitId":"jyztintan"},"content":"| `* * *` | first-time user | receive a simple tutorial on app usage | easily navigate Realodex |","lastModifiedDate":"2024-02-28"},{"lineNumber":303,"author":{"gitId":"jyztintan"},"content":"| `* * *` | tech-savvy user | use a command-line interface | navigate the app more efficiently due to my fast typing speed |","lastModifiedDate":"2024-02-28"},{"lineNumber":304,"author":{"gitId":"jyztintan"},"content":"| `* * *` | fast typer | quickly input various commands in the text box | perform actions like adding new clients, editing profiles, finding clients, without using GUI |","lastModifiedDate":"2024-02-28"},{"lineNumber":305,"author":{"gitId":"jyztintan"},"content":"| `* * *` | real-estate agent user | easily log personal notes after client interactions | reference these in future conversations for more personalized communication |","lastModifiedDate":"2024-02-28"},{"lineNumber":306,"author":{"gitId":"jyztintan"},"content":"| `* * *` | user with inactive clients | delete inactive clients permanently | remove them from my database and free up space |","lastModifiedDate":"2024-02-28"},{"lineNumber":307,"author":{"gitId":"jyztintan"},"content":"| `* *` | real estate agent user | search for clients interested in specific property listings | quickly match selling and buying clients |","lastModifiedDate":"2024-02-28"},{"lineNumber":308,"author":{"gitId":"jyztintan"},"content":"| `* *` | real estate agent user | record and access clients\u0027 preferred house types | filter and match clients with relevant property listings |","lastModifiedDate":"2024-02-28"},{"lineNumber":309,"author":{"gitId":"jyztintan"},"content":"| `* *` | real estate agent user | analyze trends in housing preferences | understand market demands and tailor my services |","lastModifiedDate":"2024-02-28"},{"lineNumber":310,"author":{"gitId":"jyztintan"},"content":"| `* *` | efficient user | filter clients by tag | organize and access client information more efficiently |","lastModifiedDate":"2024-02-28"},{"lineNumber":311,"author":{"gitId":"jyztintan"},"content":"| `* *` | efficient user | filter clients by categories | better categorize and manage client information based on personal attributes |","lastModifiedDate":"2024-02-28"},{"lineNumber":312,"author":{"gitId":"jyztintan"},"content":"| `* *` | first-time user | be guided through setting up my user profile | save my details for future use |","lastModifiedDate":"2024-02-28"},{"lineNumber":313,"author":{"gitId":"jyztintan"},"content":"| `* *` | first-time user | learn how to create and edit client profiles | manage client information efficiently |","lastModifiedDate":"2024-02-28"},{"lineNumber":314,"author":{"gitId":"jyztintan"},"content":"| `* *` | first-time user | understand how to navigate the app and use CLI commands | effectively use Realodex\u0027s features |","lastModifiedDate":"2024-02-28"},{"lineNumber":315,"author":{"gitId":"jyztintan"},"content":"| `* *` | forgetful user | get instructions on how to set up profiles and navigate | refresh my memory on how to use Realodex when needed |","lastModifiedDate":"2024-02-28"},{"lineNumber":316,"author":{"gitId":"jyztintan"},"content":"| `* *` | user with inactive clients | archive inactive clients | hide them from my active list while keeping their information for future reference |","lastModifiedDate":"2024-02-28"},{"lineNumber":317,"author":{"gitId":"jyztintan"},"content":"| `* ` | real estate agent user | be notified of upcoming client birthdays | send personalized greetings and strengthen my relationships |","lastModifiedDate":"2024-02-28"},{"lineNumber":318,"author":{"gitId":"jyztintan"},"content":"| `*` | real estate agent user | be notified of upcoming holidays | prepare gifts for my clients and enhance our relationship |","lastModifiedDate":"2024-02-28"},{"lineNumber":319,"author":{"gitId":"jyztintan"},"content":"| `*` | real estate agent user | be reminded of significant client milestones | acknowledge these events and further personalize our relationship |","lastModifiedDate":"2024-02-28"},{"lineNumber":320,"author":{"gitId":"jyztintan"},"content":"| `*` | tech-savvy user | use tab to autofill parts of my command | speed up my use of the command line |","lastModifiedDate":"2024-02-28"},{"lineNumber":321,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":322,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":323,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":324,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":325,"author":{"gitId":"UdhayaShan1"},"content":"(For all use cases below, the **System** is the `Realodex` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2024-02-28"},{"lineNumber":326,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":327,"author":{"gitId":"UdhayaShan1"},"content":"**Use case: Creating a user profile**","lastModifiedDate":"2024-02-28"},{"lineNumber":328,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":329,"author":{"gitId":"UdhayaShan1"},"content":"**Actor: User**","lastModifiedDate":"2024-02-28"},{"lineNumber":330,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":331,"author":{"gitId":"UdhayaShan1"},"content":"**MSS**","lastModifiedDate":"2024-02-28"},{"lineNumber":332,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":333,"author":{"gitId":"UdhayaShan1"},"content":"1. User Executes \"Add client....\" Command:","lastModifiedDate":"2024-03-01"},{"lineNumber":334,"author":{"gitId":"UdhayaShan1"},"content":"2. System adds use profile to local storage and replies to user with success message.","lastModifiedDate":"2024-03-01"},{"lineNumber":335,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":336,"author":{"gitId":"UdhayaShan1"},"content":" Use case ends.","lastModifiedDate":"2024-02-28"},{"lineNumber":337,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":338,"author":{"gitId":"UdhayaShan1"},"content":"**Extensions**","lastModifiedDate":"2024-02-28"},{"lineNumber":339,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":340,"author":{"gitId":"UdhayaShan1"},"content":"* 1a. Name exceeds the length constraints.","lastModifiedDate":"2024-03-01"},{"lineNumber":341,"author":{"gitId":"UdhayaShan1"},"content":" * 1a1. Realodex throws an error and requests shorter name representation.","lastModifiedDate":"2024-03-01"},{"lineNumber":342,"author":{"gitId":"UdhayaShan1"},"content":" * 1a2. User enters new data.","lastModifiedDate":"2024-03-01"},{"lineNumber":343,"author":{"gitId":"4llysa"},"content":" * Use case resumes from step 1.","lastModifiedDate":"2024-03-07"},{"lineNumber":344,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":345,"author":{"gitId":"UdhayaShan1"},"content":"* 1b. Name Length is not fully English.","lastModifiedDate":"2024-03-01"},{"lineNumber":346,"author":{"gitId":"UdhayaShan1"},"content":" * 1b1. Realodex throws an error and requests for only English input.","lastModifiedDate":"2024-03-01"},{"lineNumber":347,"author":{"gitId":"UdhayaShan1"},"content":" * 1b2. User enters new data.","lastModifiedDate":"2024-03-01"},{"lineNumber":348,"author":{"gitId":"4llysa"},"content":" * Use case resumes from step 1.","lastModifiedDate":"2024-03-07"},{"lineNumber":349,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":350,"author":{"gitId":"UdhayaShan1"},"content":"* 1c. Name contains erraneous whitespace.","lastModifiedDate":"2024-03-01"},{"lineNumber":351,"author":{"gitId":"UdhayaShan1"},"content":" * 1c1. Realodex throws a warning and fixes this for user.","lastModifiedDate":"2024-03-01"},{"lineNumber":352,"author":{"gitId":"4llysa"},"content":" * Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":353,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":354,"author":{"gitId":"UdhayaShan1"},"content":"* 1d. Name is not capitalized.","lastModifiedDate":"2024-03-01"},{"lineNumber":355,"author":{"gitId":"UdhayaShan1"},"content":" * 1d1. Realodex throws a warning and fixes this for user.","lastModifiedDate":"2024-03-01"},{"lineNumber":356,"author":{"gitId":"4llysa"},"content":" * Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":357,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":358,"author":{"gitId":"UdhayaShan1"},"content":"* 1e. Name is not in expected format.","lastModifiedDate":"2024-03-01"},{"lineNumber":359,"author":{"gitId":"UdhayaShan1"},"content":" * 1e1. Realodex throws an error and highlights the format to user.","lastModifiedDate":"2024-03-01"},{"lineNumber":360,"author":{"gitId":"UdhayaShan1"},"content":" * 1e2. User enters new data.","lastModifiedDate":"2024-03-01"},{"lineNumber":361,"author":{"gitId":"4llysa"},"content":" * Use case resumes from step 1.","lastModifiedDate":"2024-03-07"},{"lineNumber":362,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":363,"author":{"gitId":"UdhayaShan1"},"content":"* 1f. Address is not fully English","lastModifiedDate":"2024-03-01"},{"lineNumber":364,"author":{"gitId":"UdhayaShan1"},"content":" * 1f1. Realodex throws an error and requests for only English input.","lastModifiedDate":"2024-03-01"},{"lineNumber":365,"author":{"gitId":"UdhayaShan1"},"content":" * 1f2. User enters new data.","lastModifiedDate":"2024-03-01"},{"lineNumber":366,"author":{"gitId":"4llysa"},"content":" * Use case resumes from step 1.","lastModifiedDate":"2024-03-07"},{"lineNumber":367,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":368,"author":{"gitId":"UdhayaShan1"},"content":"* 1g. Address exceeds the length constraints","lastModifiedDate":"2024-03-01"},{"lineNumber":369,"author":{"gitId":"UdhayaShan1"},"content":" * 1g1. Realodex throws an error and requests shorter address representation.","lastModifiedDate":"2024-03-01"},{"lineNumber":370,"author":{"gitId":"UdhayaShan1"},"content":" * 1g2. User enters new data.","lastModifiedDate":"2024-03-01"},{"lineNumber":371,"author":{"gitId":"4llysa"},"content":" * Use case resumes from step 1.","lastModifiedDate":"2024-03-07"},{"lineNumber":372,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":373,"author":{"gitId":"UdhayaShan1"},"content":"* 1h. Address is not capitalized for each part.","lastModifiedDate":"2024-03-01"},{"lineNumber":374,"author":{"gitId":"UdhayaShan1"},"content":" * 1h1. Realodex throws a warning and fixes this for user.","lastModifiedDate":"2024-03-01"},{"lineNumber":375,"author":{"gitId":"4llysa"},"content":" * Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":376,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":377,"author":{"gitId":"UdhayaShan1"},"content":"* 1i. Income is not in SGD","lastModifiedDate":"2024-03-01"},{"lineNumber":378,"author":{"gitId":"UdhayaShan1"},"content":" * 1i. Realodex throws an error and requests a SGD value.","lastModifiedDate":"2024-03-01"},{"lineNumber":379,"author":{"gitId":"UdhayaShan1"},"content":" * 1i2. User enters new data.","lastModifiedDate":"2024-03-01"},{"lineNumber":380,"author":{"gitId":"4llysa"},"content":" * Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":381,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":382,"author":{"gitId":"UdhayaShan1"},"content":"* 1j. Income is negative","lastModifiedDate":"2024-03-01"},{"lineNumber":383,"author":{"gitId":"UdhayaShan1"},"content":" * 1j1. Realodex throws an error and requests a positive income value.","lastModifiedDate":"2024-03-01"},{"lineNumber":384,"author":{"gitId":"UdhayaShan1"},"content":" * 1j2. User enters new data.","lastModifiedDate":"2024-03-01"},{"lineNumber":385,"author":{"gitId":"4llysa"},"content":" * Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":386,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":387,"author":{"gitId":"UdhayaShan1"},"content":"* 1k. Additonal notes exceed length constraints.","lastModifiedDate":"2024-03-01"},{"lineNumber":388,"author":{"gitId":"UdhayaShan1"},"content":" * 1k1. Realodex throws an error and requests a shorter input.","lastModifiedDate":"2024-03-01"},{"lineNumber":389,"author":{"gitId":"UdhayaShan1"},"content":" * 1k2. User enters new data.","lastModifiedDate":"2024-03-01"},{"lineNumber":390,"author":{"gitId":"4llysa"},"content":" * Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":391,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":392,"author":{"gitId":"-"},"content":"**Use case: Delete a person**","lastModifiedDate":"2020-05-23"},{"lineNumber":393,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":394,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":395,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":396,"author":{"gitId":"UdhayaShan1"},"content":"1. User requests to delete user","lastModifiedDate":"2024-03-01"},{"lineNumber":397,"author":{"gitId":"UdhayaShan1"},"content":"2. Realodex deletes the person with success message","lastModifiedDate":"2024-03-01"},{"lineNumber":398,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":399,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":400,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":401,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":402,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":403,"author":{"gitId":"wapisai"},"content":"* 2a. The input name is not found","lastModifiedDate":"2024-02-28"},{"lineNumber":404,"author":{"gitId":"UdhayaShan1"},"content":" * 2a1. Realodex shows an error message \"\u003cName\u003e is not found\".","lastModifiedDate":"2024-03-01"},{"lineNumber":405,"author":{"gitId":"4llysa"},"content":" * Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":406,"author":{"gitId":"wapisai"},"content":"**Use case: List**","lastModifiedDate":"2024-02-28"},{"lineNumber":407,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":408,"author":{"gitId":"wapisai"},"content":"**MSS**","lastModifiedDate":"2024-02-28"},{"lineNumber":409,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":410,"author":{"gitId":"wapisai"},"content":"1. User requests to list","lastModifiedDate":"2024-02-28"},{"lineNumber":411,"author":{"gitId":"wapisai"},"content":"2. Realodex shows the list of all clients","lastModifiedDate":"2024-02-28"},{"lineNumber":412,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":413,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":414,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":415,"author":{"gitId":"wapisai"},"content":"**Extensions**","lastModifiedDate":"2024-02-28"},{"lineNumber":416,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":417,"author":{"gitId":"wapisai"},"content":"* 2a. The list is empty","lastModifiedDate":"2024-02-28"},{"lineNumber":418,"author":{"gitId":"UdhayaShan1"},"content":" * 2a1. Realodex shows an empty list.","lastModifiedDate":"2024-03-01"},{"lineNumber":419,"author":{"gitId":"4llysa"},"content":" * Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":420,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":421,"author":{"gitId":"jyztintan"},"content":"**Use case: Filter**","lastModifiedDate":"2024-03-16"},{"lineNumber":422,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":423,"author":{"gitId":"wapisai"},"content":"**MSS**","lastModifiedDate":"2024-02-28"},{"lineNumber":424,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":425,"author":{"gitId":"jyztintan"},"content":"1. User requests to filter user with input substring.","lastModifiedDate":"2024-03-17"},{"lineNumber":426,"author":{"gitId":"jyztintan"},"content":"2. Realodex shows the list of all clients with name including the input substring.","lastModifiedDate":"2024-03-17"},{"lineNumber":427,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":428,"author":{"gitId":"wapisai"},"content":" Use case ends.","lastModifiedDate":"2024-02-28"},{"lineNumber":429,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":430,"author":{"gitId":"wapisai"},"content":"**Extensions**","lastModifiedDate":"2024-02-28"},{"lineNumber":431,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":432,"author":{"gitId":"UdhayaShan1"},"content":"* 2a. No contact found with a name including the name input","lastModifiedDate":"2024-03-01"},{"lineNumber":433,"author":{"gitId":"UdhayaShan1"},"content":" * 2a1. Realodex shows an empty list.","lastModifiedDate":"2024-03-01"},{"lineNumber":434,"author":{"gitId":"4llysa"},"content":" * Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":435,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":436,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":437,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":438,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":439,"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":440,"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":441,"author":{"gitId":"4llysa"},"content":"3. A real estate agent 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":"2024-02-28"},{"lineNumber":442,"author":{"gitId":"4llysa"},"content":"4. Should be able to have up to 500 client profiles.","lastModifiedDate":"2024-03-07"},{"lineNumber":443,"author":{"gitId":"4llysa"},"content":"5. The response to any command should become visible within 5 seconds.","lastModifiedDate":"2024-02-28"},{"lineNumber":444,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":445,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":446,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":447,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09"},{"lineNumber":448,"author":{"gitId":"4llysa"},"content":"* **Client Profile**: Details of customer of the Real Esate Agent looking to buy / sell / rent a property","lastModifiedDate":"2024-02-28"},{"lineNumber":449,"author":{"gitId":"4llysa"},"content":"* **Command Line Interface (CLI)**: A text-based interface used to interact with the software by entering commands into a terminal or console window, typically preferred by users who prefer efficiency and automation.","lastModifiedDate":"2024-03-07"},{"lineNumber":450,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":451,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":452,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":453,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":454,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":455,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":456,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":457,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":458,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":459,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12"},{"lineNumber":460,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":461,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":462,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":463,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":464,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":465,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":466,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":467,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":468,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":469,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":470,"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":471,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":472,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":473,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":474,"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":475,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":476,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":477,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","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"},{"lineNumber":480,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":481,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":482,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":483,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":484,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":485,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":486,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":487,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":488,"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":489,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":490,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":491,"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":492,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":493,"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":494,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":495,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":496,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":497,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":498,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":499,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":500,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":501,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":502,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":503,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":504,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"4llysa":19,"jyztintan":29,"-":370,"UdhayaShan1":67,"wapisai":19}},{"path":"docs/SettingUp.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: \"Setting up and getting started\"","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":"# Setting up and getting started","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":"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":"## Setting up the project in your computer","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"**Caution:**","lastModifiedDate":"2023-09-12"},{"lineNumber":19,"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":20,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"First, **fork** this repo, and **clone** the fork into your computer.","lastModifiedDate":"2020-06-07"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-07"},{"lineNumber":24,"author":{"gitId":"-"},"content":"If you plan to use Intellij IDEA (highly recommended):","lastModifiedDate":"2020-06-07"},{"lineNumber":25,"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":26,"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.","lastModifiedDate":"2023-09-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" Note: Importing a Gradle project is slightly different from importing a normal Java project.","lastModifiedDate":"2023-09-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"1. **Verify the setup**:","lastModifiedDate":"2020-06-07"},{"lineNumber":31,"author":{"gitId":"UdhayaShan1"},"content":" 1. Run the `seedu.realodex.Main` and try a few commands.","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":" 1. [Run the tests](Testing.md) to ensure they all pass.","lastModifiedDate":"2020-06-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"## Before writing code","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"1. **Configure the coding style**","lastModifiedDate":"2020-06-07"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"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":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" **Tip:**","lastModifiedDate":"2023-09-12"},{"lineNumber":45,"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":46,"author":{"gitId":"-"},"content":" \u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"1. **Set up CI**","lastModifiedDate":"2020-06-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"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":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"1. **Learn the design**","lastModifiedDate":"2020-06-07"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"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":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"1. **Do the tutorials**","lastModifiedDate":"2020-06-07"},{"lineNumber":57,"author":{"gitId":"-"},"content":" These tutorials will help you get acquainted with the codebase.","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * [Tracing code](tutorials/TracingCode.md)","lastModifiedDate":"2020-07-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * [Adding a new command](tutorials/AddRemark.md)","lastModifiedDate":"2020-07-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * [Removing fields](tutorials/RemovingFields.md)","lastModifiedDate":"2021-08-01"}],"authorContributionMap":{"-":60,"UdhayaShan1":1}},{"path":"docs/TeamWorkflow.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"jyztintan"},"content":"# Development Workflow and Conventions","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"jyztintan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"jyztintan"},"content":"## Introduction","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"jyztintan"},"content":"This document outlines the development workflow and naming conventions adopted by our team to ensure a consistent and efficient approach to project management. By adhering to these guidelines, we aim to maintain high-quality code, streamline our review process, and facilitate easier navigation and understanding of our codebase.","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"jyztintan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"jyztintan"},"content":"## Pull Request (PR) Workflow","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"jyztintan"},"content":"Our PR workflow is designed to ensure that changes are thoroughly reviewed and meet our team\u0027s quality standards before being merged into the main codebase.","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"jyztintan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"jyztintan"},"content":"### Major Changes","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"jyztintan"},"content":"Any significant modifications, such as new features, substantial refactoring, or critical bug fixes, require a review and approval from all four team members. This comprehensive review process ensures that major changes are well-understood and agreed upon by the entire team.","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"jyztintan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"jyztintan"},"content":"### Minor Changes","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"jyztintan"},"content":"For minor updates, such as spelling corrections, grammar adjustments, or minor phrasing improvements, approval from just one team member is sufficient. This expedited process allows us to quickly incorporate minor but necessary tweaks without slowing down our overall development pace.","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"jyztintan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"jyztintan"},"content":"## Branch Naming Conventions","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"jyztintan"},"content":"To maintain an organized and intuitive codebase, we follow a standardized format for naming our branches. This standardization aids in identifying the purpose and scope of each branch at a glance.","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"jyztintan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"jyztintan"},"content":"- **Format**: `v\u003cversion\u003e-\u003cfeature if applicable\u003e-\u003cenhancement\u003e`","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"jyztintan"},"content":"- **Example**: For version 1.2, a branch focused on the \"add\" feature with support for new fields might be named `v1.2-add-new_fields`.","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"jyztintan"},"content":"- **Example**: For version 1.3, a branch focused on updating the Developer\u0027s Guide might be named `v1.3-update_dg`.","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"jyztintan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"jyztintan"},"content":"By adopting a standardized branch naming format, we enhance the consistency of our branch names, simplifying the process for team members to discern the purpose of each branch and facilitating reviewers\u0027 evaluation of changes.","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"jyztintan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"jyztintan"},"content":"It\u0027s important to note the distinction in our branch creation approach based on the project version:","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"jyztintan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"jyztintan"},"content":"- For developments up to version 1.2, branches are created within individual team members\u0027 forked repositories.","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"jyztintan"},"content":"- Starting with version 1.3 and onwards, branches are directly established in the main team repository.","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"jyztintan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"jyztintan"},"content":"## Consistency and Compliance","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"jyztintan"},"content":"Ensuring consistency in our development practices, including PR management and branch naming, is crucial. It not only streamlines our workflow but also prevents potential confusion or issues during code reviews, particularly from external reviewers who may highlight inconsistencies such as varying branch naming separators.","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"jyztintan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"jyztintan"},"content":"## Conclusion","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"jyztintan"},"content":"This document is intended to unify our team\u0027s development practices, ensuring alignment and shared understanding among all members. We will continually adapt our practices to ensure efficiency in our workflow.","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"jyztintan":33}},{"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":"UdhayaShan1"},"content":" e.g. `seedu.realodex.commons.StringUtilTest`","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" e.g. `seedu.realodex.storage.StorageManagerTest`","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" e.g. `seedu.realodex.logic.LogicManagerTest`","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"-":38,"UdhayaShan1":3}},{"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":"appleraincoat"},"content":"# Realodex (RDX) User Guide","lastModifiedDate":"2024-02-28"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"appleraincoat"},"content":"Realodex (or RDX for short) is a **desktop app for managing client contacts, optimized for use via a","lastModifiedDate":"2024-02-28"},{"lineNumber":10,"author":{"gitId":"appleraincoat"},"content":"Command Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI).","lastModifiedDate":"2024-02-28"},{"lineNumber":11,"author":{"gitId":"appleraincoat"},"content":"If you can type fast, RDX can get your contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2024-02-28"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12"},{"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":"## Quick start","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"appleraincoat"},"content":"1. Ensure you have Java `11` or above installed in your computer.","lastModifiedDate":"2024-02-28"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"appleraincoat"},"content":"1. Download the latest `realodex.jar` from [here](https://github.com/se-edu/addressbook-level3/releases).","lastModifiedDate":"2024-02-28"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"appleraincoat"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your Realodex.","lastModifiedDate":"2024-02-28"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"appleraincoat"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar realodex.jar`","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"appleraincoat"},"content":"command to run the application.\u003cbr\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"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":29,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"appleraincoat"},"content":"1. Some example commands you can try:","lastModifiedDate":"2024-02-28"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"appleraincoat"},"content":" * `add n/John Doe p/98765432 i/20000 e/johnd@example.com a/311, Clementi Ave 2, #02-25 f/4 t/buyer r/Owes money.`","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"appleraincoat"},"content":" Adds a contact named `John Doe` to Realodex.","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"appleraincoat"},"content":" * `delete John Doe` : Deletes the client with name `John Doe` from Realodex.","lastModifiedDate":"2024-03-19"},{"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":"-"},"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":"* 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":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"appleraincoat"},"content":"* Parameters enclosed in `[]` are optional to input.","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"appleraincoat"},"content":"### Adding a client: `add`","lastModifiedDate":"2024-02-28"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"appleraincoat"},"content":"Adds a client to Realodex. ","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"appleraincoat"},"content":"Format: `add n/NAME p/PHONE i/INCOME e/EMAIL a/ADDRESS f/FAMILY t/TAG [r/REMARK]`","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"appleraincoat"},"content":"- Note that `REMARK` is optional, enclosed in `[]`.","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"appleraincoat"},"content":"- You may input the parameters in any order (e.g. if","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"appleraincoat"},"content":"the command specifies `n/NAME a/ADDRESS`, `a/ADDRESS n/NAME` is also acceptable). ","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"appleraincoat"},"content":"- Note that the tag is to indicate if a client is a","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"appleraincoat"},"content":"Buyer, Seller or both, so tags only accept \"buyer\" or \"seller\" as the input (case-insensitive).","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"appleraincoat"},"content":"* `add n/John Doe p/98765432 i/20000 e/johnd@example.com a/311, Clementi Ave 2, #02-25 f/4 t/Buyer r/Owes $1000.`","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"appleraincoat"},"content":"* `add n/Betsy Crowe a/Newgate Prison i/$0 f/1 p/94859694 e/betsyc@rocketmail.com t/Seller t/Buyer`","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"appleraincoat"},"content":"### Deleting a client : `delete`","lastModifiedDate":"2024-02-28"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"appleraincoat"},"content":"Deletes the specified client from Realodex. There are 2 ways to do so: ","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"appleraincoat"},"content":"#### Deleting by name","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"appleraincoat"},"content":"Format: `delete n/NAME`","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":81,"author":{"gitId":"appleraincoat"},"content":"* Deletes the client of the specified `NAME` in Realodex.","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"appleraincoat"},"content":"* If name is **not found**, error message will be shown `\"NAME\" is not found`.","lastModifiedDate":"2024-03-01"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"appleraincoat"},"content":"Example:","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"appleraincoat"},"content":"* `delete n/Udhaya Shanmugam` deletes the client in Realodex with the name \"Udhaya Shanmugam\".","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":87,"author":{"gitId":"appleraincoat"},"content":"#### Deleting by index","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":89,"author":{"gitId":"appleraincoat"},"content":"Format: `delete INDEX`","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":91,"author":{"gitId":"appleraincoat"},"content":"* Deletes the client of the specified `INDEX` in Realodex.","lastModifiedDate":"2024-03-19"},{"lineNumber":92,"author":{"gitId":"appleraincoat"},"content":"* If the index number is **invalid**, error message will be shown `The client index provided is invalid`.","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"appleraincoat"},"content":"Example:","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"appleraincoat"},"content":"* `delete 4` deletes the 4th client listed in Realodex, provided he/she exists.","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"appleraincoat"},"content":"### Editing clients : `edit`","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"appleraincoat"},"content":"Edits specified details of the client.","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":101,"author":{"gitId":"appleraincoat"},"content":"Format: `edit INDEX [n/NAME] [p/PHONE] [i/INCOME] [e/EMAIL] [a/ADDRESS] [f/FAMILY] [t/TAG] [r/REMARK]`","lastModifiedDate":"2024-03-18"},{"lineNumber":102,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":103,"author":{"gitId":"appleraincoat"},"content":"- If `INDEX` is `3`, the 3rd client\u0027s information will be edited.","lastModifiedDate":"2024-03-18"},{"lineNumber":104,"author":{"gitId":"appleraincoat"},"content":"- It is optional to edit any field (i.e, you can choose to edit any combination of fields so long there is at least 1).","lastModifiedDate":"2024-03-18"},{"lineNumber":105,"author":{"gitId":"appleraincoat"},"content":"- The current information will be overwritten with the input provided.","lastModifiedDate":"2024-03-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":109,"author":{"gitId":"appleraincoat"},"content":"- `edit 1 p/999` will overwrite the 1st client\u0027s phone number to `999`.","lastModifiedDate":"2024-03-18"},{"lineNumber":110,"author":{"gitId":"appleraincoat"},"content":"- `edit 2 n/Kylie i/3333 f/5` will overwrite the 2nd client\u0027s name to `Kylie`, income to `3333` and family size to `5`.","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":112,"author":{"gitId":"jyztintan"},"content":"### Filtering clients : `filter`","lastModifiedDate":"2024-03-16"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":114,"author":{"gitId":"jyztintan"},"content":"Filters the list of client with an input keyphrase.","lastModifiedDate":"2024-03-16"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":116,"author":{"gitId":"jyztintan"},"content":"Format: `filter KEYPHRASE`","lastModifiedDate":"2024-03-16"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":118,"author":{"gitId":"jyztintan"},"content":"- The search is case-insensitive. e.g `james` will match `James`","lastModifiedDate":"2024-03-16"},{"lineNumber":119,"author":{"gitId":"jyztintan"},"content":"- Partial words will still be matched e.g. `Udh` will match `Udhaya`","lastModifiedDate":"2024-03-16"},{"lineNumber":120,"author":{"gitId":"jyztintan"},"content":"- All persons\u0027 names containing the keyword will be returned e.g. `Al` will return `Alicia`, `Allysa`","lastModifiedDate":"2024-03-16"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"appleraincoat"},"content":"Example:","lastModifiedDate":"2024-03-18"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":124,"author":{"gitId":"appleraincoat"},"content":"- `filter Al` will list out persons whose name has `\"Al\"` inside, such as `\"Alicia\"`, `\"Allysa\"` and `\"Jamal\"`","lastModifiedDate":"2024-03-19"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":126,"author":{"gitId":"appleraincoat"},"content":"### Listing clients : `list`","lastModifiedDate":"2024-03-18"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":128,"author":{"gitId":"appleraincoat"},"content":"Lists all clients in Realodex.","lastModifiedDate":"2024-03-19"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":130,"author":{"gitId":"appleraincoat"},"content":"Format: `list`","lastModifiedDate":"2024-03-18"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":132,"author":{"gitId":"appleraincoat"},"content":"### Help : `help`","lastModifiedDate":"2024-03-18"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":134,"author":{"gitId":"appleraincoat"},"content":"Generates a pop-up window which is a summarised version of the User Guide.","lastModifiedDate":"2024-03-18"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":136,"author":{"gitId":"appleraincoat"},"content":"Format: `help`","lastModifiedDate":"2024-03-18"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":138,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"appleraincoat"},"content":"Realodex data is saved in the hard disk automatically after any command that modifies it. There is no need to save manually.","lastModifiedDate":"2024-03-19"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":150,"author":{"gitId":"appleraincoat"},"content":"Realodex data is saved automatically as a JSON file `[JAR file location]/data/realodex.json`. Advanced users are welcome to update data directly by editing that data file.","lastModifiedDate":"2024-03-19"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":152,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":154,"author":{"gitId":"-"},"content":"**Caution:**","lastModifiedDate":"2023-09-12"},{"lineNumber":155,"author":{"gitId":"appleraincoat"},"content":"If your changes to the data file makes its format invalid, Realodex 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.\u003cbr\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":156,"author":{"gitId":"appleraincoat"},"content":"Furthermore, certain edits can cause the Realodex to behave in unexpected ways (e.g., if a value entered is outside the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.","lastModifiedDate":"2024-02-28"},{"lineNumber":157,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":159,"author":{"gitId":"appleraincoat"},"content":"### Filtering clients by income and more `[coming in v1.3]`","lastModifiedDate":"2024-03-18"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":164,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"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":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":175,"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":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":179,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":"-----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-12"},{"lineNumber":183,"author":{"gitId":"appleraincoat"},"content":"**Add** | `add n/NAME p/PHONE i/INCOME e/EMAIL a/ADDRESS f/FAMILY t/TAG [r/REMARK]` \u003cbr\u003e e.g. `add n/John Doe p/98765432 i/20000 e/johnd@example.com a/311, Clementi Ave 2, #02-25 f/4 r/Buyer t/Owes $1000.`","lastModifiedDate":"2024-03-18"},{"lineNumber":184,"author":{"gitId":"appleraincoat"},"content":"**Delete (by name)** | `delete n/NAME`\u003cbr\u003e e.g. `delete n/John`","lastModifiedDate":"2024-03-19"},{"lineNumber":185,"author":{"gitId":"appleraincoat"},"content":"**Delete (by index)** | `delete INDEX`\u003cbr\u003e e.g. `delete 3`","lastModifiedDate":"2024-03-18"},{"lineNumber":186,"author":{"gitId":"appleraincoat"},"content":"**edit** | `edit INDEX [n/NAME] [p/PHONE] [i/INCOME] [e/EMAIL] [a/ADDRESS] [f/FAMILY] [t/TAG] [r/REMARK]` \u003cbr\u003e e.g. `edit 2 n/Denzel i/100000`","lastModifiedDate":"2024-03-18"},{"lineNumber":187,"author":{"gitId":"appleraincoat"},"content":"**filter** | `filter STRING`\u003cbr\u003e e.g. `filter David`","lastModifiedDate":"2024-03-18"},{"lineNumber":188,"author":{"gitId":"appleraincoat"},"content":"**list** | `list`","lastModifiedDate":"2024-03-13"},{"lineNumber":189,"author":{"gitId":"appleraincoat"},"content":"**help** | `help`","lastModifiedDate":"2024-03-18"},{"lineNumber":190,"author":{"gitId":"appleraincoat"},"content":"**exit** | `exit`","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"jyztintan":6,"-":115,"appleraincoat":68,"wapisai":1}},{"path":"docs/_markbind/layouts/default.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003chead-bottom\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003clink rel\u003d\"stylesheet\" href\u003d\"{{baseUrl}}/stylesheets/main.css\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c/head-bottom\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003cheader sticky\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cnavbar type\u003d\"dark\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"4llysa"},"content":" \u003ca slot\u003d\"brand\" href\u003d\"{{baseUrl}}/index.html\" title\u003d\"Home\" class\u003d\"navbar-brand\"\u003eRealodex\u003c/a\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/index.html\" class\u003d\"nav-link\"\u003eHome\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/UserGuide.html\" class\u003d\"nav-link\"\u003eUser Guide\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/DeveloperGuide.html\" class\u003d\"nav-link\"\u003eDeveloper Guide\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/AboutUs.html\" class\u003d\"nav-link\"\u003eAbout Us\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"https://github.com/se-edu/addressbook-level3\" target\u003d\"_blank\" class\u003d\"nav-link\"\u003e\u003cmd\u003e:fab-github:\u003c/md\u003e\u003c/a\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cli slot\u003d\"right\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cform class\u003d\"navbar-form\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003csearchbar :data\u003d\"searchData\" placeholder\u003d\"Search\" :on-hit\u003d\"searchCallback\" menu-align-right\u003e\u003c/searchbar\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/form\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/navbar\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"\u003c/header\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"flex-body\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"site-nav\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"site-nav-top\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"fw-bold mb-2\" style\u003d\"font-size: 1.25rem;\"\u003eSite Map\u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003csite-nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"* [Home]({{ baseUrl }}/index.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"* [User Guide]({{ baseUrl }}/UserGuide.html) :expanded:","lastModifiedDate":"2023-09-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * [Quick Start]({{ baseUrl }}/UserGuide.html#quick-start)","lastModifiedDate":"2023-09-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * [Features]({{ baseUrl }}/UserGuide.html#features)","lastModifiedDate":"2023-09-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * [FAQ]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * [Command Summary]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":"* [Developer Guide]({{ baseUrl }}/DeveloperGuide.html) :expanded:","lastModifiedDate":"2023-09-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * [Acknowledgements]({{ baseUrl }}/DeveloperGuide.html#acknowledgements)","lastModifiedDate":"2023-09-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * [Setting Up]({{ baseUrl }}/DeveloperGuide.html#setting-up-getting-started)","lastModifiedDate":"2023-09-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * [Design]({{ baseUrl }}/DeveloperGuide.html#design)","lastModifiedDate":"2023-09-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * [Implementation]({{ baseUrl }}/DeveloperGuide.html#implementation)","lastModifiedDate":"2023-09-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * [Documentation, logging, testing, configuration, dev-ops]({{ baseUrl }}/DeveloperGuide.html#documentation-logging-testing-configuration-dev-ops)","lastModifiedDate":"2023-09-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * [Appendix: Requirements]({{ baseUrl }}/DeveloperGuide.html#appendix-requirements)","lastModifiedDate":"2023-09-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * [Appendix: Instructions for manual testing]({{ baseUrl }}/DeveloperGuide.html#appendix-instructions-for-manual-testing)","lastModifiedDate":"2023-09-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":"* Tutorials","lastModifiedDate":"2023-09-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * [Tracing code]({{ baseUrl }}/tutorials/TracingCode.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * [Adding a command]({{ baseUrl }}/tutorials/AddRemark.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * [Removing Fields]({{ baseUrl }}/tutorials/RemovingFields.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [About Us]({{ baseUrl }}/AboutUs.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/site-nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cdiv id\u003d\"content-wrapper\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" {{ content }}","lastModifiedDate":"2023-09-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"page-nav\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cpage-nav /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003cscroll-top-button\u003e\u003c/scroll-top-button\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":"\u003cfooter\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003c!-- Support MarkBind by including a link to us on your landing page! --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"text-center\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u003csmall\u003e[\u003cmd\u003e**Powered by**\u003c/md\u003e \u003cimg src\u003d\"https://markbind.org/favicon.ico\" width\u003d\"30\"\u003e {{MarkBind}}, generated on {{timestamp}}]\u003c/small\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003c/footer\u003e","lastModifiedDate":"2023-09-12"}],"authorContributionMap":{"4llysa":1,"-":66}},{"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":"-"},"content":"logic -[LOGIC_COLOR]\u003e model : deletePerson(p)","lastModifiedDate":"2019-07-03"},{"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":"UdhayaShan1"},"content":"logic -[LOGIC_COLOR]\u003e storage : saveRealodex(realodex)","lastModifiedDate":"2024-03-22"},{"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":{"-":38,"UdhayaShan1":1}},{"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":"UdhayaShan1"},"content":"participant \":RealodexParser\" as RealodexParser LOGIC_COLOR","lastModifiedDate":"2024-03-22"},{"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 \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-02-09"},{"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 \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-02-09"},{"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":"UdhayaShan1"},"content":"LogicManager -\u003e RealodexParser : parseCommand(\"delete 1\")","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"UdhayaShan1"},"content":"activate RealodexParser","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"create DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"UdhayaShan1"},"content":"RealodexParser -\u003e DeleteCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":"activate DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"UdhayaShan1"},"content":"DeleteCommandParser --\u003e RealodexParser","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"-"},"content":"deactivate DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"UdhayaShan1"},"content":"RealodexParser -\u003e DeleteCommandParser : parse(\"1\")","lastModifiedDate":"2024-03-22"},{"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 :","lastModifiedDate":"2024-02-09"},{"lineNumber":38,"author":{"gitId":"-"},"content":"deactivate DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":40,"author":{"gitId":"UdhayaShan1"},"content":"DeleteCommandParser --\u003e RealodexParser : d","lastModifiedDate":"2024-03-22"},{"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":"UdhayaShan1"},"content":"DeleteCommandParser -[hidden]-\u003e RealodexParser","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"-"},"content":"destroy DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"UdhayaShan1"},"content":"RealodexParser --\u003e LogicManager : d","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"UdhayaShan1"},"content":"deactivate RealodexParser","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":49,"author":{"gitId":"-"},"content":"LogicManager -\u003e DeleteCommand : execute(m)","lastModifiedDate":"2024-02-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":"activate DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":52,"author":{"gitId":"-"},"content":"DeleteCommand -\u003e Model : deletePerson(1)","lastModifiedDate":"2019-07-03"},{"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 : r","lastModifiedDate":"2024-02-09"},{"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":{"-":60,"UdhayaShan1":10}},{"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":"UdhayaShan1"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyRealodex\" as ReadOnlyRealodex","lastModifiedDate":"2024-03-22"},{"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":"UdhayaShan1"},"content":"Class Realodex","lastModifiedDate":"2024-03-22"},{"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":"-"},"content":"Class UniquePersonList","lastModifiedDate":"2021-07-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Class Person","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Class Address","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"UdhayaShan1"},"content":"Class Income","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Class Email","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Class Name","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"Class Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"UdhayaShan1"},"content":"Class Family","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":"Class Tag","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"UdhayaShan1"},"content":"Class Remark","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":26,"author":{"gitId":"-"},"content":"Class I #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"UdhayaShan1"},"content":"Realodex .up.|\u003e ReadOnlyRealodex","lastModifiedDate":"2024-03-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"ModelManager .up.|\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"Model .right.\u003e ReadOnlyUserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"UdhayaShan1"},"content":"Model .left.\u003e ReadOnlyRealodex","lastModifiedDate":"2024-03-22"},{"lineNumber":37,"author":{"gitId":"UdhayaShan1"},"content":"ModelManager -left-\u003e \"1\" Realodex","lastModifiedDate":"2024-03-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":"ModelManager -right-\u003e \"1\" UserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":39,"author":{"gitId":"-"},"content":"UserPrefs .up.|\u003e ReadOnlyUserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":41,"author":{"gitId":"UdhayaShan1"},"content":"Realodex *--\u003e \"1\" UniquePersonList","lastModifiedDate":"2024-03-22"},{"lineNumber":42,"author":{"gitId":"-"},"content":"UniquePersonList --\u003e \"~* all\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":43,"author":{"gitId":"UdhayaShan1"},"content":"Person *--\u003e \"1\" Name","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"UdhayaShan1"},"content":"Person *--\u003e \"1\" Phone","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"UdhayaShan1"},"content":"Person *--\u003e \" 1\" Income","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"UdhayaShan1"},"content":"Person *--\u003e \"1\" Email","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"UdhayaShan1"},"content":"Person *--\u003e \"1\" Address","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"UdhayaShan1"},"content":"Person *--\u003e \"1\" Family","lastModifiedDate":"2024-03-22"},{"lineNumber":49,"author":{"gitId":"UdhayaShan1"},"content":"Person *--\u003e \" 1..2\" Tag","lastModifiedDate":"2024-03-22"},{"lineNumber":50,"author":{"gitId":"UdhayaShan1"},"content":"Person *--\u003e \" *..1\" Remark","lastModifiedDate":"2024-03-22"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":52,"author":{"gitId":"-"},"content":"Person -[hidden]up--\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":"UniquePersonList -[hidden]right-\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"Name -[hidden]right-\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":"Phone -[hidden]right-\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":"Address -[hidden]right-\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":"ModelManager --\u003e \"~* filtered\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":60,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"-":43,"UdhayaShan1":17}},{"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":"UdhayaShan1"},"content":"Class RealodexParser","lastModifiedDate":"2024-03-22"},{"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":"-"},"content":"Class Prefix","lastModifiedDate":"2021-07-31"},{"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":"UdhayaShan1"},"content":"HiddenOutside ..\u003e RealodexParser","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":24,"author":{"gitId":"UdhayaShan1"},"content":"RealodexParser .down.\u003e XYZCommandParser: \u003c\u003ccreate\u003e\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":26,"author":{"gitId":"-"},"content":"XYZCommandParser ..\u003e XYZCommand : \u003c\u003ccreate\u003e\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":27,"author":{"gitId":"UdhayaShan1"},"content":"RealodexParser ..\u003e Command : \u003c\u003cuse\u003e\u003e","lastModifiedDate":"2024-03-22"},{"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":"-"},"content":"CliSyntax ..\u003e Prefix","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"XYZCommandParser ..\u003e ParserUtil","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":"ParserUtil .down.\u003e Prefix","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"ArgumentTokenizer .down.\u003e Prefix","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"XYZCommand -up-|\u003e Command","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2021-07-31"}],"authorContributionMap":{"-":34,"UdhayaShan1":4}},{"path":"docs/team/4llysa.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"4llysa"},"content":"---","lastModifiedDate":"2024-02-28"},{"lineNumber":2,"author":{"gitId":"4llysa"},"content":" layout: default.md","lastModifiedDate":"2024-02-28"},{"lineNumber":3,"author":{"gitId":"4llysa"},"content":" title: \"Allysa Tan\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-02-28"},{"lineNumber":4,"author":{"gitId":"4llysa"},"content":"---","lastModifiedDate":"2024-02-28"},{"lineNumber":5,"author":{"gitId":"4llysa"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":6,"author":{"gitId":"UdhayaShan1"},"content":"### Project: Realodex","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"4llysa"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":8,"author":{"gitId":"4llysa"},"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":"2024-02-28"},{"lineNumber":9,"author":{"gitId":"4llysa"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":10,"author":{"gitId":"4llysa"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-02-28"},{"lineNumber":11,"author":{"gitId":"4llysa"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":12,"author":{"gitId":"4llysa"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-02-28"},{"lineNumber":13,"author":{"gitId":"4llysa"},"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":"2024-02-28"},{"lineNumber":14,"author":{"gitId":"4llysa"},"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":"2024-02-28"},{"lineNumber":15,"author":{"gitId":"4llysa"},"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":"2024-02-28"},{"lineNumber":16,"author":{"gitId":"4llysa"},"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":"2024-02-28"},{"lineNumber":17,"author":{"gitId":"4llysa"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":18,"author":{"gitId":"4llysa"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-02-28"},{"lineNumber":19,"author":{"gitId":"4llysa"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":20,"author":{"gitId":"4llysa"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-02-28"},{"lineNumber":21,"author":{"gitId":"4llysa"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":22,"author":{"gitId":"4llysa"},"content":"* **Project management**:","lastModifiedDate":"2024-02-28"},{"lineNumber":23,"author":{"gitId":"4llysa"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-02-28"},{"lineNumber":24,"author":{"gitId":"4llysa"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":25,"author":{"gitId":"4llysa"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-02-28"},{"lineNumber":26,"author":{"gitId":"4llysa"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-02-28"},{"lineNumber":27,"author":{"gitId":"4llysa"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-02-28"},{"lineNumber":28,"author":{"gitId":"4llysa"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":29,"author":{"gitId":"4llysa"},"content":"* **Documentation**:","lastModifiedDate":"2024-02-28"},{"lineNumber":30,"author":{"gitId":"4llysa"},"content":" * User Guide:","lastModifiedDate":"2024-02-28"},{"lineNumber":31,"author":{"gitId":"4llysa"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-02-28"},{"lineNumber":32,"author":{"gitId":"4llysa"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-02-28"},{"lineNumber":33,"author":{"gitId":"4llysa"},"content":" * Developer Guide:","lastModifiedDate":"2024-02-28"},{"lineNumber":34,"author":{"gitId":"4llysa"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-02-28"},{"lineNumber":35,"author":{"gitId":"4llysa"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":36,"author":{"gitId":"4llysa"},"content":"* **Community**:","lastModifiedDate":"2024-02-28"},{"lineNumber":37,"author":{"gitId":"4llysa"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-02-28"},{"lineNumber":38,"author":{"gitId":"4llysa"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-02-28"},{"lineNumber":39,"author":{"gitId":"4llysa"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-02-28"},{"lineNumber":40,"author":{"gitId":"4llysa"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-02-28"},{"lineNumber":41,"author":{"gitId":"4llysa"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":42,"author":{"gitId":"4llysa"},"content":"* **Tools**:","lastModifiedDate":"2024-02-28"},{"lineNumber":43,"author":{"gitId":"4llysa"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-02-28"},{"lineNumber":44,"author":{"gitId":"4llysa"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-02-28"},{"lineNumber":45,"author":{"gitId":"4llysa"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":46,"author":{"gitId":"4llysa"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-02-28"}],"authorContributionMap":{"4llysa":45,"UdhayaShan1":1}},{"path":"docs/team/appleraincoat.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":"appleraincoat"},"content":" title: \"appleraincoat\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-02-28"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"UdhayaShan1"},"content":"### Project: Realodex","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"appleraincoat"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user","lastModifiedDate":"2024-02-28"},{"lineNumber":9,"author":{"gitId":"appleraincoat"},"content":"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":"2024-02-28"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"appleraincoat"},"content":" * What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed","lastModifiedDate":"2024-02-28"},{"lineNumber":15,"author":{"gitId":"appleraincoat"},"content":" * by using the redo command.","lastModifiedDate":"2024-02-28"},{"lineNumber":16,"author":{"gitId":"appleraincoat"},"content":" * Justification: This feature improves the product significantly because a user can make mistakes in commands and the","lastModifiedDate":"2024-02-28"},{"lineNumber":17,"author":{"gitId":"appleraincoat"},"content":" * app should provide a convenient way to rectify them.","lastModifiedDate":"2024-02-28"},{"lineNumber":18,"author":{"gitId":"appleraincoat"},"content":" * Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth","lastModifiedDate":"2024-02-28"},{"lineNumber":19,"author":{"gitId":"appleraincoat"},"content":" * analysis of design alternatives. The implementation too was challenging as it required changes to existing commands.","lastModifiedDate":"2024-02-28"},{"lineNumber":20,"author":{"gitId":"appleraincoat"},"content":" * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in","lastModifiedDate":"2024-02-28"},{"lineNumber":21,"author":{"gitId":"appleraincoat"},"content":" * the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2024-02-28"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"* **Project management**:","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"* **Documentation**:","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * User Guide:","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Developer Guide:","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"* **Community**:","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* **Tools**:","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"-":39,"UdhayaShan1":1,"appleraincoat":11}},{"path":"docs/team/jyztintan.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"jyztintan"},"content":"\u003ch1 align\u003d\"center\"\u003eHello there 👋, I\u0027m Justin \u003c/h1\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":2,"author":{"gitId":"jyztintan"},"content":"\u003ch2 align\u003d\"center\"\u003eYear 2 Computer Science Undergraduate || Teaching Assistant \u003c/h2\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":3,"author":{"gitId":"jyztintan"},"content":"\u003ch3 align\u003d\"center\"\u003eNational University of Singapore, School of Computing \u003c/h3\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":4,"author":{"gitId":"jyztintan"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":5,"author":{"gitId":"jyztintan"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":6,"author":{"gitId":"jyztintan"},"content":"- 🧠 I’m currently learning 🤖 Machine Learning and AI, 📊 Algorithmic Design and Analysis and 💻 Software Engineering","lastModifiedDate":"2024-02-28"},{"lineNumber":7,"author":{"gitId":"jyztintan"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":8,"author":{"gitId":"jyztintan"},"content":"- 📫 Reach out to me at **justintanwk2001@gmail.com**","lastModifiedDate":"2024-02-28"},{"lineNumber":9,"author":{"gitId":"jyztintan"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":10,"author":{"gitId":"jyztintan"},"content":"- 💡 Teaching Assistant for ♾ Discrete Mathematics and 🐍 Python Programming Methodology","lastModifiedDate":"2024-02-28"},{"lineNumber":11,"author":{"gitId":"jyztintan"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":12,"author":{"gitId":"jyztintan"},"content":"\u003cbr\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":13,"author":{"gitId":"jyztintan"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":14,"author":{"gitId":"jyztintan"},"content":"\u003ch3 align\u003d\"left\"\u003eConnect with me:\u003c/h3\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":15,"author":{"gitId":"jyztintan"},"content":"\u003cp align\u003d\"left\"\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":16,"author":{"gitId":"jyztintan"},"content":" \u003ca href\u003d\"https://www.linkedin.com/in/tan-wee-kian-justin/\" target\u003d\"blank\"\u003e\u003cimg align\u003d\"center\"","lastModifiedDate":"2024-02-28"},{"lineNumber":17,"author":{"gitId":"jyztintan"},"content":" src\u003d\"https://raw.githubusercontent.com/rahuldkjain/github-profile-readme-generator/master/src/images/icons/Social/linked-in-alt.svg\"","lastModifiedDate":"2024-02-28"},{"lineNumber":18,"author":{"gitId":"jyztintan"},"content":" alt\u003d\"adam pithewan\" height\u003d\"30\" width\u003d\"40\" /\u003e\u003c/a\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":19,"author":{"gitId":"jyztintan"},"content":" \u003c!--","lastModifiedDate":"2024-02-28"},{"lineNumber":20,"author":{"gitId":"jyztintan"},"content":" \u003ca href\u003d\"https://fb.com/adam pithen wala\" target\u003d\"blank\"\u003e\u003cimg align\u003d\"center\"","lastModifiedDate":"2024-02-28"},{"lineNumber":21,"author":{"gitId":"jyztintan"},"content":" src\u003d\"https://raw.githubusercontent.com/rahuldkjain/github-profile-readme-generator/master/src/images/icons/Social/facebook.svg\"","lastModifiedDate":"2024-02-28"},{"lineNumber":22,"author":{"gitId":"jyztintan"},"content":" alt\u003d\"adam pithen wala\" height\u003d\"30\" width\u003d\"40\" /\u003e\u003c/a\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":23,"author":{"gitId":"jyztintan"},"content":" \u003ca href\u003d\"https://instagram.com/_._.adam._\" target\u003d\"blank\"\u003e\u003cimg align\u003d\"center\"","lastModifiedDate":"2024-02-28"},{"lineNumber":24,"author":{"gitId":"jyztintan"},"content":" src\u003d\"https://raw.githubusercontent.com/rahuldkjain/github-profile-readme-generator/master/src/images/icons/Social/instagram.svg\"","lastModifiedDate":"2024-02-28"},{"lineNumber":25,"author":{"gitId":"jyztintan"},"content":" alt\u003d\"_._.adam._\" height\u003d\"30\" width\u003d\"40\" /\u003e\u003c/a\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":26,"author":{"gitId":"jyztintan"},"content":" \u003ca href\u003d\"https://www.hackerrank.com/adampithewan\" target\u003d\"blank\"\u003e\u003cimg align\u003d\"center\"","lastModifiedDate":"2024-02-28"},{"lineNumber":27,"author":{"gitId":"jyztintan"},"content":" src\u003d\"https://raw.githubusercontent.com/rahuldkjain/github-profile-readme-generator/master/src/images/icons/Social/hackerrank.svg\"","lastModifiedDate":"2024-02-28"},{"lineNumber":28,"author":{"gitId":"jyztintan"},"content":" alt\u003d\"adampithewan\" height\u003d\"30\" width\u003d\"40\" /\u003e\u003c/a\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":29,"author":{"gitId":"jyztintan"},"content":" \u003ca href\u003d\"https://twitter.com/adam_pithenwala\" target\u003d\"blank\"\u003e\u003cimg align\u003d\"center\"","lastModifiedDate":"2024-02-28"},{"lineNumber":30,"author":{"gitId":"jyztintan"},"content":" src\u003d\"https://raw.githubusercontent.com/rahuldkjain/github-profile-readme-generator/master/src/images/icons/Social/twitter.svg\"","lastModifiedDate":"2024-02-28"},{"lineNumber":31,"author":{"gitId":"jyztintan"},"content":" alt\u003d\"adampithewan\" height\u003d\"30\" width\u003d\"40\" /\u003e\u003c/a\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":32,"author":{"gitId":"jyztintan"},"content":" --\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":33,"author":{"gitId":"jyztintan"},"content":"\u003c/p\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":34,"author":{"gitId":"jyztintan"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":35,"author":{"gitId":"jyztintan"},"content":"\u003cbr\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":36,"author":{"gitId":"jyztintan"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":37,"author":{"gitId":"jyztintan"},"content":"\u003ch3 align\u003d\"left\"\u003eLanguages and Tools:\u003c/h3\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":38,"author":{"gitId":"jyztintan"},"content":"\u003cp align\u003d\"left\"\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":39,"author":{"gitId":"jyztintan"},"content":" \u003ca href\u003d\"https://www.python.org\" target\u003d\"_blank\" rel\u003d\"noreferrer\"\u003e \u003cimg src\u003d\"https://raw.githubusercontent.com/devicons/devicon/master/icons/python/python-original.svg\" alt\u003d\"python\" width\u003d\"40\" height\u003d\"40\" /\u003e \u003c/a\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":40,"author":{"gitId":"jyztintan"},"content":" \u003ca href\u003d\"https://pandas.pydata.org/\" target\u003d\"_blank\" rel\u003d\"noreferrer\"\u003e \u003cimg src\u003d\"https://raw.githubusercontent.com/devicons/devicon/2ae2a900d2f041da66e950e4d48052658d850630/icons/pandas/pandas-original.svg\"","lastModifiedDate":"2024-02-28"},{"lineNumber":41,"author":{"gitId":"jyztintan"},"content":" alt\u003d\"pandas\" width\u003d\"40\" height\u003d\"40\" /\u003e \u003c/a\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":42,"author":{"gitId":"jyztintan"},"content":" \u003ca href\u003d\"https://www.java.com\" target\u003d\"_blank\" rel\u003d\"noreferrer\"\u003e \u003cimg","lastModifiedDate":"2024-02-28"},{"lineNumber":43,"author":{"gitId":"jyztintan"},"content":" src\u003d\"https://raw.githubusercontent.com/devicons/devicon/master/icons/java/java-original.svg\" alt\u003d\"java\" width\u003d\"40\"","lastModifiedDate":"2024-02-28"},{"lineNumber":44,"author":{"gitId":"jyztintan"},"content":" height\u003d\"40\" /\u003e \u003c/a\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":45,"author":{"gitId":"jyztintan"},"content":" \u003ca href\u003d\"https://www.cprogramming.com/\" target\u003d\"_blank\"","lastModifiedDate":"2024-02-28"},{"lineNumber":46,"author":{"gitId":"jyztintan"},"content":" rel\u003d\"noreferrer\"\u003e \u003cimg src\u003d\"https://raw.githubusercontent.com/devicons/devicon/master/icons/c/c-original.svg\"","lastModifiedDate":"2024-02-28"},{"lineNumber":47,"author":{"gitId":"jyztintan"},"content":" alt\u003d\"c\" width\u003d\"40\" height\u003d\"40\" /\u003e \u003c/a\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":48,"author":{"gitId":"jyztintan"},"content":" \u003ca href\u003d\"https://www.w3schools.com/cpp/\" target\u003d\"_blank\" rel\u003d\"noreferrer\"\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":49,"author":{"gitId":"jyztintan"},"content":" \u003cimg src\u003d\"https://raw.githubusercontent.com/devicons/devicon/master/icons/cplusplus/cplusplus-original.svg\"","lastModifiedDate":"2024-02-28"},{"lineNumber":50,"author":{"gitId":"jyztintan"},"content":" alt\u003d\"cplusplus\" width\u003d\"40\" height\u003d\"40\" /\u003e \u003c/a\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":51,"author":{"gitId":"jyztintan"},"content":" \u003ca href\u003d\"https://flutter.dev\" target\u003d\"_blank\" rel\u003d\"noreferrer\"\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":52,"author":{"gitId":"jyztintan"},"content":" \u003cimg src\u003d\"https://cdn.jsdelivr.net/gh/devicons/devicon/icons/flutter/flutter-original.svg\"","lastModifiedDate":"2024-02-28"},{"lineNumber":53,"author":{"gitId":"jyztintan"},"content":" alt\u003d\"flutter\" width\u003d\"40\" height\u003d\"40\" /\u003e \u003c/a\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":54,"author":{"gitId":"jyztintan"},"content":" \u003ca href\u003d\"https://dart.dev\" target\u003d\"_blank\" rel\u003d\"noreferrer\"\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":55,"author":{"gitId":"jyztintan"},"content":" \u003cimg src\u003d\"https://cdn.jsdelivr.net/gh/devicons/devicon/icons/dart/dart-original.svg\"","lastModifiedDate":"2024-02-28"},{"lineNumber":56,"author":{"gitId":"jyztintan"},"content":" alt\u003d\"dart\" width\u003d\"40\" height\u003d\"40\" /\u003e \u003c/a\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":57,"author":{"gitId":"jyztintan"},"content":" \u003ca href\u003d\"https://firebase.google.com/\" target\u003d\"_blank\" rel\u003d\"noreferrer\"\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":58,"author":{"gitId":"jyztintan"},"content":" \u003cimg src\u003d\"https://cdn.jsdelivr.net/gh/devicons/devicon/icons/firebase/firebase-plain.svg\"","lastModifiedDate":"2024-02-28"},{"lineNumber":59,"author":{"gitId":"jyztintan"},"content":" alt\u003d\"firebase\" width\u003d\"40\" height\u003d\"40\" /\u003e \u003c/a\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":60,"author":{"gitId":"jyztintan"},"content":" \u003ca href\u003d\"https://www.photoshop.com/en\" target\u003d\"_blank\"","lastModifiedDate":"2024-02-28"},{"lineNumber":61,"author":{"gitId":"jyztintan"},"content":" rel\u003d\"noreferrer\"\u003e \u003cimg src\u003d\"https://raw.githubusercontent.com/devicons/devicon/master/icons/photoshop/photoshop-line.svg\" alt\u003d\"photoshop\"","lastModifiedDate":"2024-02-28"},{"lineNumber":62,"author":{"gitId":"jyztintan"},"content":" width\u003d\"40\" height\u003d\"40\" /\u003e \u003c/a\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":63,"author":{"gitId":"jyztintan"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":64,"author":{"gitId":"jyztintan"},"content":" \u003c!--","lastModifiedDate":"2024-02-28"},{"lineNumber":65,"author":{"gitId":"jyztintan"},"content":" \u003ca href\u003d\"https://developer.android.com\" target\u003d\"_blank\" rel\u003d\"noreferrer\"\u003e \u003cimg","lastModifiedDate":"2024-02-28"},{"lineNumber":66,"author":{"gitId":"jyztintan"},"content":" src\u003d\"https://raw.githubusercontent.com/devicons/devicon/master/icons/android/android-original-wordmark.svg\"","lastModifiedDate":"2024-02-28"},{"lineNumber":67,"author":{"gitId":"jyztintan"},"content":" alt\u003d\"android\" width\u003d\"40\" height\u003d\"40\" /\u003e \u003c/a\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":68,"author":{"gitId":"jyztintan"},"content":" \u003ca href\u003d\"https://getbootstrap.com\" target\u003d\"_blank\" rel\u003d\"noreferrer\"\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":69,"author":{"gitId":"jyztintan"},"content":" \u003cimg src\u003d\"https://raw.githubusercontent.com/devicons/devicon/master/icons/bootstrap/bootstrap-plain-wordmark.svg\"","lastModifiedDate":"2024-02-28"},{"lineNumber":70,"author":{"gitId":"jyztintan"},"content":" alt\u003d\"bootstrap\" width\u003d\"40\" height\u003d\"40\" /\u003e \u003c/a\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":71,"author":{"gitId":"jyztintan"},"content":" \u003ca href\u003d\"https://www.w3schools.com/css/\" target\u003d\"_blank\"","lastModifiedDate":"2024-02-28"},{"lineNumber":72,"author":{"gitId":"jyztintan"},"content":" rel\u003d\"noreferrer\"\u003e \u003cimg src\u003d\"https://raw.githubusercontent.com/devicons/devicon/master/icons/css3/css3-original-wordmark.svg\" alt\u003d\"css3\"","lastModifiedDate":"2024-02-28"},{"lineNumber":73,"author":{"gitId":"jyztintan"},"content":" width\u003d\"40\" height\u003d\"40\" /\u003e \u003c/a\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":74,"author":{"gitId":"jyztintan"},"content":" \u003ca href\u003d\"https://www.w3.org/html/\" target\u003d\"_blank\" rel\u003d\"noreferrer\"\u003e \u003cimg","lastModifiedDate":"2024-02-28"},{"lineNumber":75,"author":{"gitId":"jyztintan"},"content":" src\u003d\"https://raw.githubusercontent.com/devicons/devicon/master/icons/html5/html5-original-wordmark.svg\"","lastModifiedDate":"2024-02-28"},{"lineNumber":76,"author":{"gitId":"jyztintan"},"content":" alt\u003d\"html5\" width\u003d\"40\" height\u003d\"40\" /\u003e \u003c/a\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":77,"author":{"gitId":"jyztintan"},"content":" \u003ca href\u003d\"https://www.adobe.com/in/products/illustrator.html\" target\u003d\"_blank\" rel\u003d\"noreferrer\"\u003e \u003cimg","lastModifiedDate":"2024-02-28"},{"lineNumber":78,"author":{"gitId":"jyztintan"},"content":" src\u003d\"https://www.vectorlogo.zone/logos/adobe_illustrator/adobe_illustrator-icon.svg\" alt\u003d\"illustrator\" width\u003d\"40\"","lastModifiedDate":"2024-02-28"},{"lineNumber":79,"author":{"gitId":"jyztintan"},"content":" height\u003d\"40\" /\u003e \u003c/a\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":80,"author":{"gitId":"jyztintan"},"content":" \u003ca href\u003d\"https://developer.mozilla.org/en-US/docs/Web/JavaScript\" target\u003d\"_blank\"","lastModifiedDate":"2024-02-28"},{"lineNumber":81,"author":{"gitId":"jyztintan"},"content":" rel\u003d\"noreferrer\"\u003e \u003cimg src\u003d\"https://raw.githubusercontent.com/devicons/devicon/master/icons/javascript/javascript-original.svg\"","lastModifiedDate":"2024-02-28"},{"lineNumber":82,"author":{"gitId":"jyztintan"},"content":" alt\u003d\"javascript\" width\u003d\"40\" height\u003d\"40\" /\u003e \u003c/a\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":83,"author":{"gitId":"jyztintan"},"content":" \u003ca href\u003d\"https://kotlinlang.org\" target\u003d\"_blank\" rel\u003d\"noreferrer\"\u003e \u003cimg src\u003d\"https://www.vectorlogo.zone/logos/kotlinlang/kotlinlang-icon.svg\" alt\u003d\"kotlin\" width\u003d\"40\" height\u003d\"40\" /\u003e \u003c/a\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":84,"author":{"gitId":"jyztintan"},"content":" \u003ca href\u003d\"https://www.mysql.com/\" target\u003d\"_blank\" rel\u003d\"noreferrer\"\u003e \u003cimg src\u003d\"https://raw.githubusercontent.com/devicons/devicon/master/icons/mysql/mysql-original-wordmark.svg\" alt\u003d\"mysql\" width\u003d\"40\" height\u003d\"40\" /\u003e \u003c/a\u003e \u003c/a\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":85,"author":{"gitId":"jyztintan"},"content":" \u003ca href\u003d\"https://nodejs.org\" target\u003d\"_blank\" rel\u003d\"noreferrer\"\u003e \u003cimg src\u003d\"https://raw.githubusercontent.com/devicons/devicon/master/icons/nodejs/nodejs-original-wordmark.svg\" alt\u003d\"nodejs\" width\u003d\"40\" height\u003d\"40\" /\u003e \u003c/a\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":86,"author":{"gitId":"jyztintan"},"content":" \u003ca href\u003d\"https://reactjs.org/\" target\u003d\"_blank\" rel\u003d\"noreferrer\"\u003e \u003cimg","lastModifiedDate":"2024-02-28"},{"lineNumber":87,"author":{"gitId":"jyztintan"},"content":" src\u003d\"https://raw.githubusercontent.com/devicons/devicon/master/icons/react/react-original-wordmark.svg\"","lastModifiedDate":"2024-02-28"},{"lineNumber":88,"author":{"gitId":"jyztintan"},"content":" alt\u003d\"react\" width\u003d\"40\" height\u003d\"40\" /\u003e \u003c/a\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":89,"author":{"gitId":"jyztintan"},"content":" \u003ca href\u003d\"https://sass-lang.com\" target\u003d\"_blank\" rel\u003d\"noreferrer\"\u003e \u003cimg","lastModifiedDate":"2024-02-28"},{"lineNumber":90,"author":{"gitId":"jyztintan"},"content":" src\u003d\"https://raw.githubusercontent.com/devicons/devicon/master/icons/sass/sass-original.svg\" alt\u003d\"sass\" width\u003d\"40\"","lastModifiedDate":"2024-02-28"},{"lineNumber":91,"author":{"gitId":"jyztintan"},"content":" height\u003d\"40\" /\u003e \u003c/a\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":92,"author":{"gitId":"jyztintan"},"content":" --\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":93,"author":{"gitId":"jyztintan"},"content":"\u003c/p\u003e","lastModifiedDate":"2024-02-28"}],"authorContributionMap":{"jyztintan":93}},{"path":"docs/team/udhayashan1.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"---","lastModifiedDate":"2024-02-28"},{"lineNumber":2,"author":{"gitId":"UdhayaShan1"},"content":" layout: default.md","lastModifiedDate":"2024-02-28"},{"lineNumber":3,"author":{"gitId":"UdhayaShan1"},"content":" title: \"Udhaya\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-02-28"},{"lineNumber":4,"author":{"gitId":"UdhayaShan1"},"content":"---","lastModifiedDate":"2024-02-28"},{"lineNumber":5,"author":{"gitId":"UdhayaShan1"},"content":"not accurate, copied straight from johndoe.md","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"UdhayaShan1"},"content":"### Project: Realodex","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"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":"2024-02-28"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":10,"author":{"gitId":"UdhayaShan1"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-02-28"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":12,"author":{"gitId":"UdhayaShan1"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-02-28"},{"lineNumber":13,"author":{"gitId":"UdhayaShan1"},"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":"2024-02-28"},{"lineNumber":14,"author":{"gitId":"UdhayaShan1"},"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":"2024-02-28"},{"lineNumber":15,"author":{"gitId":"UdhayaShan1"},"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":"2024-02-28"},{"lineNumber":16,"author":{"gitId":"UdhayaShan1"},"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":"2024-02-28"},{"lineNumber":17,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":18,"author":{"gitId":"UdhayaShan1"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-02-28"},{"lineNumber":19,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":20,"author":{"gitId":"UdhayaShan1"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-02-28"},{"lineNumber":21,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":22,"author":{"gitId":"UdhayaShan1"},"content":"* **Project management**:","lastModifiedDate":"2024-02-28"},{"lineNumber":23,"author":{"gitId":"UdhayaShan1"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-02-28"},{"lineNumber":24,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":25,"author":{"gitId":"UdhayaShan1"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-02-28"},{"lineNumber":26,"author":{"gitId":"UdhayaShan1"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-02-28"},{"lineNumber":27,"author":{"gitId":"UdhayaShan1"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-02-28"},{"lineNumber":28,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":29,"author":{"gitId":"UdhayaShan1"},"content":"* **Documentation**:","lastModifiedDate":"2024-02-28"},{"lineNumber":30,"author":{"gitId":"UdhayaShan1"},"content":" * User Guide:","lastModifiedDate":"2024-02-28"},{"lineNumber":31,"author":{"gitId":"UdhayaShan1"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-02-28"},{"lineNumber":32,"author":{"gitId":"UdhayaShan1"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-02-28"},{"lineNumber":33,"author":{"gitId":"UdhayaShan1"},"content":" * Developer Guide:","lastModifiedDate":"2024-02-28"},{"lineNumber":34,"author":{"gitId":"UdhayaShan1"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-02-28"},{"lineNumber":35,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":36,"author":{"gitId":"UdhayaShan1"},"content":"* **Community**:","lastModifiedDate":"2024-02-28"},{"lineNumber":37,"author":{"gitId":"UdhayaShan1"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-02-28"},{"lineNumber":38,"author":{"gitId":"UdhayaShan1"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-02-28"},{"lineNumber":39,"author":{"gitId":"UdhayaShan1"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-02-28"},{"lineNumber":40,"author":{"gitId":"UdhayaShan1"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-02-28"},{"lineNumber":41,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":42,"author":{"gitId":"UdhayaShan1"},"content":"* **Tools**:","lastModifiedDate":"2024-02-28"},{"lineNumber":43,"author":{"gitId":"UdhayaShan1"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-02-28"},{"lineNumber":44,"author":{"gitId":"UdhayaShan1"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-02-28"},{"lineNumber":45,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":46,"author":{"gitId":"UdhayaShan1"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-02-28"}],"authorContributionMap":{"UdhayaShan1":46}},{"path":"docs/team/wapisai.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2024-02-28"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2024-02-28"},{"lineNumber":3,"author":{"gitId":"wapisai"},"content":" title: \"Alicia\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-02-28"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2024-02-28"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":6,"author":{"gitId":"UdhayaShan1"},"content":"### Project: Realodex","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":8,"author":{"gitId":"-"},"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":"2024-02-28"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":10,"author":{"gitId":"-"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-02-28"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":12,"author":{"gitId":"-"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-02-28"},{"lineNumber":13,"author":{"gitId":"-"},"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":"2024-02-28"},{"lineNumber":14,"author":{"gitId":"-"},"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":"2024-02-28"},{"lineNumber":15,"author":{"gitId":"-"},"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":"2024-02-28"},{"lineNumber":16,"author":{"gitId":"-"},"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":"2024-02-28"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":18,"author":{"gitId":"-"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-02-28"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":20,"author":{"gitId":"-"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-02-28"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":22,"author":{"gitId":"-"},"content":"* **Project management**:","lastModifiedDate":"2024-02-28"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-02-28"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":25,"author":{"gitId":"-"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-02-28"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-02-28"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-02-28"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":29,"author":{"gitId":"-"},"content":"* **Documentation**:","lastModifiedDate":"2024-02-28"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * User Guide:","lastModifiedDate":"2024-02-28"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-02-28"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-02-28"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Developer Guide:","lastModifiedDate":"2024-02-28"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-02-28"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":36,"author":{"gitId":"-"},"content":"* **Community**:","lastModifiedDate":"2024-02-28"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-02-28"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-02-28"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-02-28"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-02-28"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":42,"author":{"gitId":"-"},"content":"* **Tools**:","lastModifiedDate":"2024-02-28"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-02-28"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-02-28"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":46,"author":{"gitId":"-"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-02-28"}],"authorContributionMap":{"-":44,"UdhayaShan1":1,"wapisai":1}},{"path":"docs/tutorials/AddRemark.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-07-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Tutorial: Adding a command\"","lastModifiedDate":"2020-07-29"},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-07-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"# Tutorial: Adding a command","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"Let\u0027s walk you through the implementation of a new command — `remark`.","lastModifiedDate":"2020-07-29"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":11,"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":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":13,"author":{"gitId":"-"},"content":"`remark INDEX r/REMARK` (e.g., `remark 2 r/Likes baseball`)","lastModifiedDate":"2020-07-29"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":15,"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":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":"## Create a new `remark` command","lastModifiedDate":"2020-07-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":20,"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":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":22,"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":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":24,"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":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":26,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":28,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":29,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":31,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":33,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Changes the remark of an existing person in the address book.","lastModifiedDate":"2020-07-29"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":36,"author":{"gitId":"-"},"content":"public class RemarkCommand extends Command {","lastModifiedDate":"2020-07-29"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"remark\";","lastModifiedDate":"2020-07-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2020-07-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return new CommandResult(\"Hello from remark\");","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":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":"### Hook `RemarkCommand` into the application","lastModifiedDate":"2020-07-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":49,"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":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":51,"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":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":"### Run the application","lastModifiedDate":"2020-07-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":55,"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":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":"![Output displayed](../images/add-remark/RemarkHello.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":"## Change `RemarkCommand` to throw an exception","lastModifiedDate":"2020-07-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":61,"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":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":63,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"../diagrams/add-remark/RemarkClass.puml\" alt\u003d\"The relationship between RemarkCommand and Command\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":65,"author":{"gitId":"-"},"content":"Following the convention in other commands, we add relevant messages as constants and use them.","lastModifiedDate":"2020-07-29"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":67,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":69,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2021-08-01"},{"lineNumber":71,"author":{"gitId":"-"},"content":" + \": Edits the remark of the person identified \"","lastModifiedDate":"2021-08-01"},{"lineNumber":72,"author":{"gitId":"-"},"content":" + \"by the index number used in the last person listing. \"","lastModifiedDate":"2020-07-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":" + \"Existing remark will be overwritten by the input.\\n\"","lastModifiedDate":"2020-07-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2020-07-29"},{"lineNumber":75,"author":{"gitId":"-"},"content":" + \"r/ [REMARK]\\n\"","lastModifiedDate":"2020-07-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2020-07-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":" + \"r/ Likes to swim.\";","lastModifiedDate":"2020-07-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_IMPLEMENTED_YET \u003d","lastModifiedDate":"2021-08-01"},{"lineNumber":80,"author":{"gitId":"-"},"content":" \"Remark command not implemented yet\";","lastModifiedDate":"2021-08-01"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":84,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_NOT_IMPLEMENTED_YET);","lastModifiedDate":"2020-07-29"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":86,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":88,"author":{"gitId":"-"},"content":"## Enhancing `RemarkCommand`","lastModifiedDate":"2020-07-29"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":90,"author":{"gitId":"-"},"content":"Let’s change `RemarkCommand` to parse input from the user.","lastModifiedDate":"2020-07-29"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":92,"author":{"gitId":"-"},"content":"### Make the command accept parameters","lastModifiedDate":"2020-07-29"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":94,"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":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":96,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":97,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":100,"author":{"gitId":"-"},"content":"public class RemarkCommand extends Command {","lastModifiedDate":"2020-07-29"},{"lineNumber":101,"author":{"gitId":"-"},"content":" //...","lastModifiedDate":"2020-07-29"},{"lineNumber":102,"author":{"gitId":"-"},"content":" public static final String MESSAGE_ARGUMENTS \u003d \"Index: %1$d, Remark: %2$s\";","lastModifiedDate":"2020-07-29"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":104,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2020-07-29"},{"lineNumber":105,"author":{"gitId":"-"},"content":" private final String remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":107,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-07-29"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit the remark","lastModifiedDate":"2020-07-29"},{"lineNumber":109,"author":{"gitId":"-"},"content":" * @param remark of the person to be updated to","lastModifiedDate":"2020-07-29"},{"lineNumber":110,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":111,"author":{"gitId":"-"},"content":" public RemarkCommand(Index index, String remark) {","lastModifiedDate":"2020-07-29"},{"lineNumber":112,"author":{"gitId":"-"},"content":" requireAllNonNull(index, remark);","lastModifiedDate":"2020-07-29"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":114,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2020-07-29"},{"lineNumber":115,"author":{"gitId":"-"},"content":" this.remark \u003d remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":117,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":120,"author":{"gitId":"-"},"content":" throw new CommandException(","lastModifiedDate":"2021-08-01"},{"lineNumber":121,"author":{"gitId":"-"},"content":" String.format(MESSAGE_ARGUMENTS, index.getOneBased(), remark));","lastModifiedDate":"2021-08-01"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":124,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":125,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2020-07-29"},{"lineNumber":126,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2020-07-29"},{"lineNumber":127,"author":{"gitId":"-"},"content":" return true;","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":" // instanceof handles nulls","lastModifiedDate":"2020-07-29"},{"lineNumber":131,"author":{"gitId":"-"},"content":" if (!(other instanceof RemarkCommand)) {","lastModifiedDate":"2020-07-29"},{"lineNumber":132,"author":{"gitId":"-"},"content":" return false;","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":" RemarkCommand e \u003d (RemarkCommand) other;","lastModifiedDate":"2020-07-29"},{"lineNumber":136,"author":{"gitId":"-"},"content":" return index.equals(e.index)","lastModifiedDate":"2020-07-29"},{"lineNumber":137,"author":{"gitId":"-"},"content":" \u0026\u0026 remark.equals(e.remark);","lastModifiedDate":"2020-07-29"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":139,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":140,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":142,"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":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":144,"author":{"gitId":"-"},"content":"### Parse user input","lastModifiedDate":"2020-07-29"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":146,"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":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":148,"author":{"gitId":"UdhayaShan1"},"content":"Create a `RemarkCommandParser` class in the `seedu.realodex.logic.parser` package. The class must extend the `Parser` interface.","lastModifiedDate":"2024-03-19"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":150,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"../diagrams/add-remark/ParserClass.puml\" alt\u003d\"The relationship between Parser and RemarkCommandParser\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":152,"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":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":154,"author":{"gitId":"-"},"content":"**`ArgumentTokenizer.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":156,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":157,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":158,"author":{"gitId":"-"},"content":" * Tokenizes an arguments string and returns an {@code ArgumentMultimap}","lastModifiedDate":"2020-07-29"},{"lineNumber":159,"author":{"gitId":"-"},"content":" * object that maps prefixes to their respective argument values. Only the","lastModifiedDate":"2020-07-29"},{"lineNumber":160,"author":{"gitId":"-"},"content":" * given prefixes will be recognized in the arguments string.","lastModifiedDate":"2020-07-29"},{"lineNumber":161,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2020-07-29"},{"lineNumber":162,"author":{"gitId":"-"},"content":" * @param argsString Arguments string of the form:","lastModifiedDate":"2020-07-29"},{"lineNumber":163,"author":{"gitId":"-"},"content":" * {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2020-07-29"},{"lineNumber":164,"author":{"gitId":"-"},"content":" * @param prefixes Prefixes to tokenize the arguments string with","lastModifiedDate":"2020-07-29"},{"lineNumber":165,"author":{"gitId":"-"},"content":" * @return ArgumentMultimap object that maps prefixes to their","lastModifiedDate":"2020-07-29"},{"lineNumber":166,"author":{"gitId":"-"},"content":" * arguments","lastModifiedDate":"2020-07-29"},{"lineNumber":167,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":168,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":170,"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":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":172,"author":{"gitId":"-"},"content":"**`ArgumentMultimap.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":174,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":175,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":176,"author":{"gitId":"-"},"content":" * Returns the last value of {@code prefix}.","lastModifiedDate":"2020-07-29"},{"lineNumber":177,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":178,"author":{"gitId":"-"},"content":"public Optional\u003cString\u003e getValue(Prefix prefix) {","lastModifiedDate":"2020-07-29"},{"lineNumber":179,"author":{"gitId":"-"},"content":" List\u003cString\u003e values \u003d getAllValues(prefix);","lastModifiedDate":"2020-07-29"},{"lineNumber":180,"author":{"gitId":"-"},"content":" return values.isEmpty() ? Optional.empty() :","lastModifiedDate":"2020-07-29"},{"lineNumber":181,"author":{"gitId":"-"},"content":" Optional.of(values.get(values.size() - 1));","lastModifiedDate":"2020-07-29"},{"lineNumber":182,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":183,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":185,"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":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":187,"author":{"gitId":"-"},"content":"**`DeleteCommandParser.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":189,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":190,"author":{"gitId":"-"},"content":"Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2020-07-29"},{"lineNumber":191,"author":{"gitId":"-"},"content":"return new DeleteCommand(index);","lastModifiedDate":"2020-07-29"},{"lineNumber":192,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":194,"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":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":196,"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":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":198,"author":{"gitId":"-"},"content":"**`RemarkCommandParser.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":200,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":201,"author":{"gitId":"-"},"content":"public RemarkCommand parse(String args) throws ParseException {","lastModifiedDate":"2020-07-29"},{"lineNumber":202,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2020-07-29"},{"lineNumber":203,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args,","lastModifiedDate":"2020-07-29"},{"lineNumber":204,"author":{"gitId":"-"},"content":" PREFIX_REMARK);","lastModifiedDate":"2020-07-29"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":206,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2020-07-29"},{"lineNumber":207,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2020-07-29"},{"lineNumber":208,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2020-07-29"},{"lineNumber":209,"author":{"gitId":"-"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2020-07-29"},{"lineNumber":210,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2020-07-29"},{"lineNumber":211,"author":{"gitId":"-"},"content":" RemarkCommand.MESSAGE_USAGE), ive);","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":" String remark \u003d argMultimap.getValue(PREFIX_REMARK).orElse(\"\");","lastModifiedDate":"2020-07-29"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":216,"author":{"gitId":"-"},"content":" return new RemarkCommand(index, remark);","lastModifiedDate":"2020-07-29"},{"lineNumber":217,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":218,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":220,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":222,"author":{"gitId":"-"},"content":"Don’t forget to update `AddressBookParser` to use our new `RemarkCommandParser`!","lastModifiedDate":"2023-09-12"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":224,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":226,"author":{"gitId":"-"},"content":"If you are stuck, check out the sample","lastModifiedDate":"2020-07-29"},{"lineNumber":227,"author":{"gitId":"-"},"content":"[here](https://github.com/se-edu/addressbook-level3/commit/dc6d5139d08f6403da0ec624ea32bd79a2ae0cbf#diff-8bf239e8e9529369b577701303ddd96af93178b4ed6735f91c2d8488b20c6b4a).","lastModifiedDate":"2022-01-02"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":229,"author":{"gitId":"-"},"content":"## Add `Remark` to the model","lastModifiedDate":"2020-07-29"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":231,"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":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":233,"author":{"gitId":"-"},"content":"### Add a new `Remark` class","lastModifiedDate":"2020-07-29"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":235,"author":{"gitId":"UdhayaShan1"},"content":"Create a new `Remark` in `seedu.realodex.model.person`. Since a `Remark` is a field that is similar to `Address`, we can reuse a significant bit of code.","lastModifiedDate":"2024-03-19"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":237,"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":238,"author":{"gitId":"-"},"content":"validation.","lastModifiedDate":"2020-07-29"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":240,"author":{"gitId":"-"},"content":"### Make use of `Remark`","lastModifiedDate":"2020-07-29"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":242,"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":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":244,"author":{"gitId":"-"},"content":"## Add a placeholder element for remark to the UI","lastModifiedDate":"2020-07-29"},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":246,"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":247,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":248,"author":{"gitId":"UdhayaShan1"},"content":"Simply add the following to [`seedu.realodex.ui.PersonCard`](https://github.com/se-edu/addressbook-level3/commit/850b78879582f38accb05dd20c245963c65ea599#diff-639834f1e05afe2276a86372adf0fe5f69314642c2d93cfa543d614ce5a76688).","lastModifiedDate":"2024-03-19"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":250,"author":{"gitId":"-"},"content":"**`PersonCard.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":252,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":253,"author":{"gitId":"-"},"content":"@FXML","lastModifiedDate":"2020-07-29"},{"lineNumber":254,"author":{"gitId":"-"},"content":"private Label remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":255,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":258,"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":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":260,"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":261,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":262,"author":{"gitId":"-"},"content":"**`PersonListCard.fxml`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":264,"author":{"gitId":"-"},"content":"``` xml","lastModifiedDate":"2020-07-29"},{"lineNumber":265,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"remark\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$remark\" /\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":266,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":268,"author":{"gitId":"-"},"content":"That’s it! Fire up the application again and you should see something like this:","lastModifiedDate":"2020-07-29"},{"lineNumber":269,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":270,"author":{"gitId":"-"},"content":"![$remark shows up in each entry](../images/add-remark/$Remark.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":272,"author":{"gitId":"-"},"content":"## Modify `Person` to support a `Remark` field","lastModifiedDate":"2020-07-29"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":274,"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":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":276,"author":{"gitId":"-"},"content":"### Modify `Person`","lastModifiedDate":"2020-07-29"},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":278,"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":279,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":280,"author":{"gitId":"-"},"content":"### Update other usages of `Person`","lastModifiedDate":"2020-07-29"},{"lineNumber":281,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":282,"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":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":284,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":286,"author":{"gitId":"-"},"content":"Use the `Find Usages` feature in IntelliJ IDEA on the `Person` class to find these commands.","lastModifiedDate":"2023-09-12"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":288,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":290,"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":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":293,"author":{"gitId":"-"},"content":"## Updating Storage","lastModifiedDate":"2020-07-29"},{"lineNumber":294,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":295,"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":296,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":297,"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":298,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":299,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":300,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":301,"author":{"gitId":"UdhayaShan1"},"content":"You must delete AddressBook’s storage file located at `/data/realodex.json` before running it! Not doing so will cause AddressBook to default to an empty address book!","lastModifiedDate":"2024-03-19"},{"lineNumber":302,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":303,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":304,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":305,"author":{"gitId":"-"},"content":"Check out [this commit](https://github.com/se-edu/addressbook-level3/commit/556cbd0e03ff224d7a68afba171ad2eb0ce56bbf)","lastModifiedDate":"2020-07-29"},{"lineNumber":306,"author":{"gitId":"-"},"content":"to see what the changes entail.","lastModifiedDate":"2020-07-29"},{"lineNumber":307,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":308,"author":{"gitId":"-"},"content":"## Finalizing the UI","lastModifiedDate":"2020-07-29"},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":310,"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":311,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":312,"author":{"gitId":"-"},"content":"Just add [this one line of code!](https://github.com/se-edu/addressbook-level3/commit/5b98fee11b6b3f5749b6b943c4f3bd3aa049b692)","lastModifiedDate":"2020-07-29"},{"lineNumber":313,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":314,"author":{"gitId":"-"},"content":"**`PersonCard.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":315,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":316,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":317,"author":{"gitId":"-"},"content":"public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2020-07-29"},{"lineNumber":318,"author":{"gitId":"-"},"content":" //...","lastModifiedDate":"2020-07-29"},{"lineNumber":319,"author":{"gitId":"-"},"content":" remark.setText(person.getRemark().value);","lastModifiedDate":"2020-07-29"},{"lineNumber":320,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":321,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":322,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":323,"author":{"gitId":"-"},"content":"![The remark label is bound properly!](../images/add-remark/RemarkBound.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":324,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":325,"author":{"gitId":"-"},"content":"## Putting everything together","lastModifiedDate":"2020-07-29"},{"lineNumber":326,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":327,"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":328,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":329,"author":{"gitId":"-"},"content":"### Update `RemarkCommand` and `RemarkCommandParser`","lastModifiedDate":"2020-07-29"},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":331,"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":332,"author":{"gitId":"-"},"content":"save it with `Model#setPerson()`.","lastModifiedDate":"2020-07-29"},{"lineNumber":333,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":334,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":335,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":336,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":337,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":338,"author":{"gitId":"-"},"content":" public static final String MESSAGE_ADD_REMARK_SUCCESS \u003d \"Added remark to Person: %1$s\";","lastModifiedDate":"2020-07-29"},{"lineNumber":339,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_REMARK_SUCCESS \u003d \"Removed remark from Person: %1$s\";","lastModifiedDate":"2020-07-29"},{"lineNumber":340,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":341,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":342,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":343,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2020-07-29"},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":345,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2020-07-29"},{"lineNumber":346,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2020-07-29"},{"lineNumber":347,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":348,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":349,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2020-07-29"},{"lineNumber":350,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new Person(","lastModifiedDate":"2021-08-01"},{"lineNumber":351,"author":{"gitId":"-"},"content":" personToEdit.getName(), personToEdit.getPhone(), personToEdit.getEmail(),","lastModifiedDate":"2021-08-01"},{"lineNumber":352,"author":{"gitId":"-"},"content":" personToEdit.getAddress(), remark, personToEdit.getTags());","lastModifiedDate":"2020-07-29"},{"lineNumber":353,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":354,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2020-07-29"},{"lineNumber":355,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2020-07-29"},{"lineNumber":356,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":357,"author":{"gitId":"-"},"content":" return new CommandResult(generateSuccessMessage(editedPerson));","lastModifiedDate":"2020-07-29"},{"lineNumber":358,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":359,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":360,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-07-29"},{"lineNumber":361,"author":{"gitId":"-"},"content":" * Generates a command execution success message based on whether","lastModifiedDate":"2021-08-01"},{"lineNumber":362,"author":{"gitId":"-"},"content":" * the remark is added to or removed from","lastModifiedDate":"2021-08-01"},{"lineNumber":363,"author":{"gitId":"-"},"content":" * {@code personToEdit}.","lastModifiedDate":"2020-07-29"},{"lineNumber":364,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":365,"author":{"gitId":"-"},"content":" private String generateSuccessMessage(Person personToEdit) {","lastModifiedDate":"2020-07-29"},{"lineNumber":366,"author":{"gitId":"-"},"content":" String message \u003d !remark.value.isEmpty() ? MESSAGE_ADD_REMARK_SUCCESS : MESSAGE_DELETE_REMARK_SUCCESS;","lastModifiedDate":"2020-07-29"},{"lineNumber":367,"author":{"gitId":"-"},"content":" return String.format(message, personToEdit);","lastModifiedDate":"2020-07-29"},{"lineNumber":368,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":369,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":370,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":371,"author":{"gitId":"-"},"content":"![Congratulations!](../images/add-remark/RemarkComplete.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":372,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":373,"author":{"gitId":"-"},"content":"## Writing tests","lastModifiedDate":"2020-07-29"},{"lineNumber":374,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":375,"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":376,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":377,"author":{"gitId":"-"},"content":"Let’s verify the correctness of our code by writing some tests!","lastModifiedDate":"2020-07-29"},{"lineNumber":378,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":379,"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":380,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-01"},{"lineNumber":381,"author":{"gitId":"-"},"content":"### Automatically generating tests","lastModifiedDate":"2020-07-29"},{"lineNumber":382,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":383,"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":384,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":385,"author":{"gitId":"-"},"content":"The convention for test names is `methodName_testScenario_expectedResult`. An example would be","lastModifiedDate":"2020-07-29"},{"lineNumber":386,"author":{"gitId":"-"},"content":"`execute_filteredList_success`.","lastModifiedDate":"2020-07-29"},{"lineNumber":387,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":388,"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":389,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":390,"author":{"gitId":"-"},"content":"![Using the context menu to jump to tests](../images/add-remark/ContextMenu.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":391,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":392,"author":{"gitId":"-"},"content":"Then, create a test for the `execute` method.","lastModifiedDate":"2020-07-29"},{"lineNumber":393,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":394,"author":{"gitId":"-"},"content":"![Creating a test for `execute`.](../images/add-remark/CreateTest.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":395,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":396,"author":{"gitId":"-"},"content":"Following convention, let’s change the name of the generated method to `execute_addRemarkUnfilteredList_success`.","lastModifiedDate":"2020-07-29"},{"lineNumber":397,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":398,"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":399,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":400,"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":401,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":402,"author":{"gitId":"-"},"content":"## Conclusion","lastModifiedDate":"2020-07-29"},{"lineNumber":403,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":404,"author":{"gitId":"-"},"content":"This concludes the tutorial for adding a new `Command` to AddressBook.","lastModifiedDate":"2020-07-29"}],"authorContributionMap":{"-":395,"UdhayaShan1":9}},{"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":"UdhayaShan1"},"content":"The `address` field in `Person` is actually an instance of the `seedu.realodex.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":"2024-03-19"},{"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":"UdhayaShan1"},"content":"**`invalidPersonRealodex.json`:**","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":" \"persons\": [ {","lastModifiedDate":"2020-05-23"},{"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":{"-":113,"UdhayaShan1":2}},{"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":"UdhayaShan1"},"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.realodex.logic.Logic`.","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"A quick look at the `seedu.realodex.logic.Logic` (an extract given below) confirms that this indeed might be what we’re looking for.","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":" * it uses the `updateFilteredPersonList` method to ask the `Model` to populate the \u0027filtered list\u0027 with _all_ persons.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":212,"author":{"gitId":"-"},"content":" FYI, The \u0027filtered list\u0027 is the list of persons 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 persons so that the user can see the edited person along with all other persons. If this was a `find` command, we would be setting that list to contain the search results instead.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":213,"author":{"gitId":"-"},"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 persons is being tracked.","lastModifiedDate":"2021-07-31"},{"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":"-"},"content":" persons.addAll(","lastModifiedDate":"2020-05-23"},{"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":{"-":309,"UdhayaShan1":2}},{"path":"src/main/java/seedu/realodex/AppParameters.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.LogsCenter;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.util.FileUtil;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":4,"-":69}},{"path":"src/main/java/seedu/realodex/Main.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.LogsCenter;","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":2,"-":39}},{"path":"src/main/java/seedu/realodex/MainApp.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.Config;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.LogsCenter;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.Version;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.util.ConfigUtil;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.util.StringUtil;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.Logic;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.LogicManager;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.ModelManager;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.ReadOnlyRealodex;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.Realodex;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.UserPrefs;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.util.SampleDataUtil;","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.storage.JsonRealodexStorage;","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.storage.JsonUserPrefsStorage;","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.storage.RealodexStorage;","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.storage.Storage;","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.storage.StorageManager;","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.storage.UserPrefsStorage;","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.ui.Ui;","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.ui.UiManager;","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":" public static final Version VERSION \u003d new Version(0, 2, 2, true);","lastModifiedDate":"2023-08-21"},{"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":"UdhayaShan1"},"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 Realodex ]\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" RealodexStorage realodexStorage \u003d new JsonRealodexStorage(userPrefs.getRealodexFilePath());","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"UdhayaShan1"},"content":" storage \u003d new StorageManager(realodexStorage, userPrefsStorage);","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" * Returns a {@code ModelManager} with the data from {@code storage}\u0027s realodex and {@code userPrefs}. \u003cbr\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"UdhayaShan1"},"content":" * The data from the sample realodex will be used instead if {@code storage}\u0027s realodex is not found,","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"UdhayaShan1"},"content":" * or an empty realodex will be used instead if errors occur when reading {@code storage}\u0027s realodex.","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" logger.info(\"Using data file : \" + storage.getRealodexFilePath());","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":79,"author":{"gitId":"UdhayaShan1"},"content":" Optional\u003cReadOnlyRealodex\u003e realodexOptional;","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"UdhayaShan1"},"content":" ReadOnlyRealodex initialData;","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":82,"author":{"gitId":"UdhayaShan1"},"content":" realodexOptional \u003d storage.readRealodex();","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"UdhayaShan1"},"content":" if (!realodexOptional.isPresent()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":84,"author":{"gitId":"UdhayaShan1"},"content":" logger.info(\"Creating a new data file \" + storage.getRealodexFilePath()","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"appleraincoat"},"content":" + \" populated with a sample Realodex.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":87,"author":{"gitId":"UdhayaShan1"},"content":" initialData \u003d realodexOptional.orElseGet(SampleDataUtil::getSampleRealodex);","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":89,"author":{"gitId":"UdhayaShan1"},"content":" logger.warning(\"Data file at \" + storage.getRealodexFilePath() + \" could not be loaded.\"","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"appleraincoat"},"content":" + \" Will be starting with an empty Realodex.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":91,"author":{"gitId":"UdhayaShan1"},"content":" initialData \u003d new Realodex();","lastModifiedDate":"2024-03-19"},{"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":"2016-09-25"},{"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":"-"},"content":" if (!configOptional.isPresent()) {","lastModifiedDate":"2023-01-03"},{"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":"-"},"content":" if (!prefsOptional.isPresent()) {","lastModifiedDate":"2023-01-03"},{"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":"appleraincoat"},"content":" logger.info(\"Starting Realodex \" + MainApp.VERSION);","lastModifiedDate":"2024-03-13"},{"lineNumber":175,"author":{"gitId":"-"},"content":" ui.start(primaryStage);","lastModifiedDate":"2016-09-25"},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":179,"author":{"gitId":"-"},"content":" public void stop() {","lastModifiedDate":"2016-08-08"},{"lineNumber":180,"author":{"gitId":"UdhayaShan1"},"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 Realodex ] \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2024-03-19"},{"lineNumber":181,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":182,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(model.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":183,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":184,"author":{"gitId":"-"},"content":" logger.severe(\"Failed to save preferences \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":187,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"UdhayaShan1":40,"-":144,"appleraincoat":3}},{"path":"src/main/java/seedu/realodex/commons/core/Config.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.commons.core;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":2,"-":64}},{"path":"src/main/java/seedu/realodex/commons/core/GuiSettings.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.commons.core;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":2,"-":80}},{"path":"src/main/java/seedu/realodex/commons/core/LogsCenter.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.commons.core;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" private static final String LOG_FILE \u003d \"realodex.log\";","lastModifiedDate":"2024-03-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":"UdhayaShan1"},"content":" * Creates a logger named \u0027realodex\u0027, containing a {@code ConsoleHandler} and a {@code FileHandler}.","lastModifiedDate":"2024-03-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":"UdhayaShan1"},"content":" baseLogger \u003d Logger.getLogger(\"realodex\");","lastModifiedDate":"2024-03-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":{"UdhayaShan1":4,"-":102}},{"path":"src/main/java/seedu/realodex/commons/core/Version.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.commons.core;","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":1,"-":120}},{"path":"src/main/java/seedu/realodex/commons/core/index/Index.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.commons.core.index;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":3,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":2,"-":67}},{"path":"src/main/java/seedu/realodex/commons/exceptions/DataLoadingException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.commons.exceptions;","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":1,"-":10}},{"path":"src/main/java/seedu/realodex/commons/exceptions/IllegalValueException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.commons.exceptions;","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":1,"-":20}},{"path":"src/main/java/seedu/realodex/commons/util/AppUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.commons.util;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.MainApp;","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Gets an {@code Image} from the specified path.","lastModifiedDate":"2020-05-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static Image getImage(String imagePath) {","lastModifiedDate":"2016-08-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":" requireNonNull(imagePath);","lastModifiedDate":"2017-05-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":" return new Image(MainApp.class.getResourceAsStream(imagePath));","lastModifiedDate":"2016-08-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Checks that {@code condition} is true. Used for validating arguments to methods.","lastModifiedDate":"2017-05-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @throws IllegalArgumentException if {@code condition} is false.","lastModifiedDate":"2017-05-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static void checkArgument(Boolean condition) {","lastModifiedDate":"2017-05-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":" if (!condition) {","lastModifiedDate":"2017-05-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" throw new IllegalArgumentException();","lastModifiedDate":"2017-05-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Checks that {@code condition} is true. Used for validating arguments to methods.","lastModifiedDate":"2017-05-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * @throws IllegalArgumentException with {@code errorMessage} if {@code condition} is false.","lastModifiedDate":"2017-05-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static void checkArgument(Boolean condition, String errorMessage) {","lastModifiedDate":"2017-05-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":" if (!condition) {","lastModifiedDate":"2017-05-15"},{"lineNumber":39,"author":{"gitId":"-"},"content":" throw new IllegalArgumentException(errorMessage);","lastModifiedDate":"2017-05-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"UdhayaShan1":2,"-":40}},{"path":"src/main/java/seedu/realodex/commons/util/CollectionUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.commons.util;","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":" /** @see #requireAllNonNull(Collection) */","lastModifiedDate":"2017-05-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static void requireAllNonNull(Object... items) {","lastModifiedDate":"2017-05-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":" requireNonNull(items);","lastModifiedDate":"2017-06-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Stream.of(items).forEach(Objects::requireNonNull);","lastModifiedDate":"2017-05-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Throws NullPointerException if {@code items} or any element of {@code items} is null.","lastModifiedDate":"2017-05-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static void requireAllNonNull(Collection\u003c?\u003e items) {","lastModifiedDate":"2017-05-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" requireNonNull(items);","lastModifiedDate":"2017-06-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":" items.forEach(Objects::requireNonNull);","lastModifiedDate":"2017-05-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"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 {@code items} contain any elements that are non-null.","lastModifiedDate":"2017-06-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static boolean isAnyNonNull(Object... items) {","lastModifiedDate":"2017-06-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return items !\u003d null \u0026\u0026 Arrays.stream(items).anyMatch(Objects::nonNull);","lastModifiedDate":"2017-06-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"UdhayaShan1":1,"-":34}},{"path":"src/main/java/seedu/realodex/commons/util/ConfigUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.commons.util;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.Config;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":" public static Optional\u003cConfig\u003e readConfig(Path configFilePath) throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":16,"author":{"gitId":"-"},"content":" return JsonUtil.readJsonFile(configFilePath, Config.class);","lastModifiedDate":"2016-10-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static void saveConfig(Config config, Path configFilePath) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" JsonUtil.saveJsonFile(config, configFilePath);","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":"}","lastModifiedDate":"2016-09-24"}],"authorContributionMap":{"UdhayaShan1":3,"-":20}},{"path":"src/main/java/seedu/realodex/commons/util/FileUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.commons.util;","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":" public static boolean isFileExists(Path file) {","lastModifiedDate":"2018-04-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":" return Files.exists(file) \u0026\u0026 Files.isRegularFile(file);","lastModifiedDate":"2018-04-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-21"},{"lineNumber":21,"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":22,"author":{"gitId":"-"},"content":" * otherwise returns false.","lastModifiedDate":"2018-04-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @param path A string representing the file path. Cannot be null.","lastModifiedDate":"2018-04-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static boolean isValidPath(String path) {","lastModifiedDate":"2018-04-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-04-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" Paths.get(path);","lastModifiedDate":"2018-04-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":" } catch (InvalidPathException ipe) {","lastModifiedDate":"2018-04-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-04-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Creates a file if it does not exist along with its missing parent directories.","lastModifiedDate":"2017-08-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * @throws IOException if the file or directory cannot be created.","lastModifiedDate":"2017-08-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static void createIfMissing(Path file) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" if (!isFileExists(file)) {","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" createFile(file);","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":"","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Creates a file if it does not exist along with its missing parent directories.","lastModifiedDate":"2018-04-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static void createFile(Path file) throws IOException {","lastModifiedDate":"2018-04-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (Files.exists(file)) {","lastModifiedDate":"2018-04-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return;","lastModifiedDate":"2018-04-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" createParentDirsOfFile(file);","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" Files.createFile(file);","lastModifiedDate":"2018-04-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Creates parent directories of file if it has a parent directory","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static void createParentDirsOfFile(Path file) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":" Path parentDir \u003d file.getParent();","lastModifiedDate":"2018-04-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (parentDir !\u003d null) {","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" Files.createDirectories(parentDir);","lastModifiedDate":"2018-04-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-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":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * Assumes file exists","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public static String readFromFile(Path file) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return new String(Files.readAllBytes(file), CHARSET);","lastModifiedDate":"2018-04-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * Writes given string to a file.","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Will create the file if it does not exist yet.","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static void writeToFile(Path file, String content) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":" Files.write(file, content.getBytes(CHARSET));","lastModifiedDate":"2018-04-21"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"UdhayaShan1":1,"-":82}},{"path":"src/main/java/seedu/realodex/commons/util/JsonUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.commons.util;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.LogsCenter;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":" static \u003cT\u003e void serializeObjectToJsonFile(Path jsonFile, T objectToSerialize) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" FileUtil.writeToFile(jsonFile, toJsonString(objectToSerialize));","lastModifiedDate":"2016-10-07"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":46,"author":{"gitId":"-"},"content":" static \u003cT\u003e T deserializeObjectFromJsonFile(Path jsonFile, Class\u003cT\u003e classOfObjectToDeserialize)","lastModifiedDate":"2018-04-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2016-10-07"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return fromJsonString(FileUtil.readFromFile(jsonFile), classOfObjectToDeserialize);","lastModifiedDate":"2016-10-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-07"},{"lineNumber":52,"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":53,"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":54,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * @param filePath cannot be null.","lastModifiedDate":"2016-10-07"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * @param classOfObjectToDeserialize JSON file has to correspond to the structure in the class given here.","lastModifiedDate":"2023-06-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * @throws DataLoadingException if loading of the JSON file failed.","lastModifiedDate":"2023-06-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-07"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static \u003cT\u003e Optional\u003cT\u003e readJsonFile(","lastModifiedDate":"2016-10-07"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Path filePath, Class\u003cT\u003e classOfObjectToDeserialize) throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":61,"author":{"gitId":"-"},"content":" requireNonNull(filePath);","lastModifiedDate":"2017-05-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (!Files.exists(filePath)) {","lastModifiedDate":"2018-04-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2016-10-07"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":66,"author":{"gitId":"-"},"content":" logger.info(\"JSON file \" + filePath + \" found.\");","lastModifiedDate":"2023-01-03"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":" T jsonFile;","lastModifiedDate":"2016-10-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-10-07"},{"lineNumber":71,"author":{"gitId":"-"},"content":" jsonFile \u003d deserializeObjectFromJsonFile(filePath, classOfObjectToDeserialize);","lastModifiedDate":"2018-04-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-10-07"},{"lineNumber":73,"author":{"gitId":"-"},"content":" logger.warning(\"Error reading from jsonFile file \" + filePath + \": \" + e);","lastModifiedDate":"2018-04-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" throw new DataLoadingException(e);","lastModifiedDate":"2023-06-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return Optional.of(jsonFile);","lastModifiedDate":"2016-10-07"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":80,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-07"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * Saves the Json object to the specified file.","lastModifiedDate":"2016-10-07"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * Overwrites existing file if it exists, creates a new file if it doesn\u0027t.","lastModifiedDate":"2016-10-07"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * @param jsonFile cannot be null","lastModifiedDate":"2016-10-07"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * @param filePath cannot be null","lastModifiedDate":"2016-10-07"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * @throws IOException if there was an error during writing to the file","lastModifiedDate":"2016-10-07"},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-07"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public static \u003cT\u003e void saveJsonFile(T jsonFile, Path filePath) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":88,"author":{"gitId":"-"},"content":" requireNonNull(filePath);","lastModifiedDate":"2017-05-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" requireNonNull(jsonFile);","lastModifiedDate":"2017-05-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":91,"author":{"gitId":"-"},"content":" serializeObjectToJsonFile(filePath, jsonFile);","lastModifiedDate":"2018-04-21"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * Converts a given string representation of a JSON data to instance of a class","lastModifiedDate":"2016-10-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * @param \u003cT\u003e The generic type to create an instance of","lastModifiedDate":"2016-10-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * @return The instance of T with the specified values in the JSON string","lastModifiedDate":"2016-10-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public static \u003cT\u003e T fromJsonString(String json, Class\u003cT\u003e instanceClass) throws IOException {","lastModifiedDate":"2016-10-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" return objectMapper.readValue(json, instanceClass);","lastModifiedDate":"2016-10-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":104,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-19"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * Converts a given instance of a class into its JSON data string representation","lastModifiedDate":"2016-10-19"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * @param instance The T object to be converted into the JSON string","lastModifiedDate":"2016-10-19"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * @param \u003cT\u003e The generic type to create an instance of","lastModifiedDate":"2016-10-19"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * @return JSON data representation of the given class instance, in string","lastModifiedDate":"2016-10-19"},{"lineNumber":109,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public static \u003cT\u003e String toJsonString(T instance) throws JsonProcessingException {","lastModifiedDate":"2016-10-19"},{"lineNumber":111,"author":{"gitId":"-"},"content":" return objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(instance);","lastModifiedDate":"2016-10-19"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Contains methods that retrieve logging level from serialized string.","lastModifiedDate":"2017-08-16"},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":117,"author":{"gitId":"-"},"content":" private static class LevelDeserializer extends FromStringDeserializer\u003cLevel\u003e {","lastModifiedDate":"2016-08-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" protected LevelDeserializer(Class\u003c?\u003e vc) {","lastModifiedDate":"2016-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" super(vc);","lastModifiedDate":"2016-08-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" protected Level _deserialize(String value, DeserializationContext ctxt) {","lastModifiedDate":"2018-08-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" return getLoggingLevel(value);","lastModifiedDate":"2016-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","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":" * Gets the logging level that matches loggingLevelString","lastModifiedDate":"2016-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" * \u003cp\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":" * Returns null if there are no matches","lastModifiedDate":"2016-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":" private Level getLoggingLevel(String loggingLevelString) {","lastModifiedDate":"2016-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":" return Level.parse(loggingLevelString);","lastModifiedDate":"2016-09-09"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public Class\u003cLevel\u003e handledType() {","lastModifiedDate":"2016-08-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":" return Level.class;","lastModifiedDate":"2016-08-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"UdhayaShan1":3,"-":141}},{"path":"src/main/java/seedu/realodex/commons/util/StringUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.commons.util;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"UdhayaShan1":2,"-":66}},{"path":"src/main/java/seedu/realodex/commons/util/ToStringBuilder.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.commons.util;","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":1,"-":52}},{"path":"src/main/java/seedu/realodex/logic/Logic.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.GuiSettings;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.CommandResult;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.ReadOnlyRealodex;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Person;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" * Returns the Realodex.","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-03"},{"lineNumber":29,"author":{"gitId":"UdhayaShan1"},"content":" * @see seedu.realodex.model.Model#getRealodex()","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-03"},{"lineNumber":31,"author":{"gitId":"UdhayaShan1"},"content":" ReadOnlyRealodex getRealodex();","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered list of persons */","lastModifiedDate":"2017-09-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"UdhayaShan1"},"content":" * Returns the user prefs\u0027 realodex file path.","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"UdhayaShan1"},"content":" Path getRealodexFilePath();","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":12,"-":38}},{"path":"src/main/java/seedu/realodex/logic/LogicManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.GuiSettings;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.LogsCenter;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.Command;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.CommandResult;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.parser.RealodexParser;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.ReadOnlyRealodex;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.storage.Storage;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" private final RealodexParser realodexParser;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" realodexParser \u003d new RealodexParser();","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" Command command \u003d realodexParser.parseCommand(commandText);","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" storage.saveRealodex(model.getRealodex());","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" public ReadOnlyRealodex getRealodex() {","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"UdhayaShan1"},"content":" return model.getRealodex();","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList();","lastModifiedDate":"2016-09-25"},{"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":"UdhayaShan1"},"content":" public Path getRealodexFilePath() {","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"UdhayaShan1"},"content":" return model.getRealodexFilePath();","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":20,"-":68}},{"path":"src/main/java/seedu/realodex/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.logic.parser.Prefix;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Person;","lastModifiedDate":"2024-03-19"},{"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":"appleraincoat"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX \u003d \"The client index provided is invalid\";","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"wapisai"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_NAME \u003d \"The client name provided is invalid\";","lastModifiedDate":"2024-03-17"},{"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":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"UdhayaShan1"},"content":" .append(\"; Income: \")","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"UdhayaShan1"},"content":" .append(person.getIncome())","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"UdhayaShan1"},"content":" .append(\"; Family: \")","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"UdhayaShan1"},"content":" .append(person.getFamily())","lastModifiedDate":"2024-03-11"},{"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":"appleraincoat"},"content":" builder.append(\"; Remark: \")","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"appleraincoat"},"content":" .append(person.getRemark());","lastModifiedDate":"2024-03-17"},{"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":{"UdhayaShan1":7,"-":47,"appleraincoat":3,"wapisai":1}},{"path":"src/main/java/seedu/realodex/logic/commands/AddCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.commands;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_FAMILY;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_INCOME;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":13,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.Messages;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"UdhayaShan1"},"content":" * Adds a person to the realodex.","lastModifiedDate":"2024-03-19"},{"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":"appleraincoat"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a client to the Realodex. \"","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09"},{"lineNumber":30,"author":{"gitId":"UdhayaShan1"},"content":" + PREFIX_INCOME + \"INCOME \"","lastModifiedDate":"2024-03-11"},{"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":"UdhayaShan1"},"content":" + PREFIX_FAMILY + \"FAMILY \"","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"4llysa"},"content":" + PREFIX_TAG + \"BUYER/SELLER \"","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"appleraincoat"},"content":" + \"[\" + PREFIX_REMARK + \"REMARK]\\n\"","lastModifiedDate":"2024-03-17"},{"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":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":39,"author":{"gitId":"UdhayaShan1"},"content":" + PREFIX_INCOME + \"20000 \"","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":42,"author":{"gitId":"UdhayaShan1"},"content":" + PREFIX_FAMILY + \"4 \"","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"4llysa"},"content":" + PREFIX_TAG + \"buyer \"","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"appleraincoat"},"content":" + PREFIX_TAG + \"seller \"","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"appleraincoat"},"content":" + PREFIX_REMARK + \"Has 3 cats.\";","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"appleraincoat"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New client added: %1$s\";","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"appleraincoat"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This client already exists in Realodex\";","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"appleraincoat"},"content":" public static final String MESSAGE_ADD_HELP \u003d \"Add Command: Adds a client to Realodex. You may input client\"","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"appleraincoat"},"content":" + \" details in any order. Remarks are optional to input.\\n\"","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"appleraincoat"},"content":" + \"Format: add n/NAME p/PHONE i/INCOME e/EMAIL a/ADDRESS f/FAMILY t/TAG [r/REMARK]\\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"appleraincoat"},"content":" + \"Example: add n/John Doe p/98765432 i/10000 e/johndoe@gmail.com a/Jurong Central 1 f/5 t/Buyer \"","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"appleraincoat"},"content":" + \"r/Likes Italian food.\\n\";","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10"},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":61,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":62,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":67,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":73,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23"},{"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":"2017-06-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"4llysa":2,"UdhayaShan1":19,"-":66,"appleraincoat":11}},{"path":"src/main/java/seedu/realodex/logic/commands/ClearCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.commands;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.Realodex;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":" * Clears the realodex.","lastModifiedDate":"2024-03-19"},{"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":"appleraincoat"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Realodex has been cleared!\";","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"appleraincoat"},"content":" public static final String MESSAGE_CLEAR_HELP \u003d \"Clear Command: Clears all entries in Realodex.\\n\"","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"appleraincoat"},"content":" + \"Format: clear\\n\";","lastModifiedDate":"2024-03-13"},{"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":"2017-05-15"},{"lineNumber":22,"author":{"gitId":"UdhayaShan1"},"content":" model.setRealodex(new Realodex());","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"UdhayaShan1":5,"-":17,"appleraincoat":3}},{"path":"src/main/java/seedu/realodex/logic/commands/Command.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.Model;","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":3,"-":17}},{"path":"src/main/java/seedu/realodex/logic/commands/CommandResult.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.commands;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":2,"-":80}},{"path":"src/main/java/seedu/realodex/logic/commands/DeleteCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.commands;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-09-01"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.index.Index;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.Messages;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.delete.DeleteCommandExecutor;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"UdhayaShan1"},"content":" * Deletes a person identified using it\u0027s displayed index from realodex.","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class DeleteCommand 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 \"delete\";","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","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"wapisai"},"content":" + \": Deletes the client identified by the index number or full name used in the displayed client list.\\n\"","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"wapisai"},"content":" + \"Parameters: INDEX (must be a positive integer) or \" + PREFIX_NAME + \"NAME \\n\"","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"wapisai"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 or \" + COMMAND_WORD + \" \" + PREFIX_NAME + \"John Doe\";","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"appleraincoat"},"content":" public static final String MESSAGE_DELETE_HELP \u003d \"Delete Command: Deletes a client in Realodex by \"","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"appleraincoat"},"content":" + \"either the client\u0027s full name or index number shown in the list.\\n\"","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"appleraincoat"},"content":" + \"Format: delete n/FULL NAME or delete INDEX\\n\"","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"appleraincoat"},"content":" + \"Example: delete n/James Lau OR delete 4\\n\";","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"appleraincoat"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Client: %1$s\";","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private final Index targetIndex;","lastModifiedDate":"2017-06-27"},{"lineNumber":38,"author":{"gitId":"wapisai"},"content":" private final Name targetName;","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"wapisai"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"wapisai"},"content":" * Creates a DeleteCommand to delete the person at the specified {@code Index}","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"wapisai"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public DeleteCommand(Index targetIndex) {","lastModifiedDate":"2017-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2016-09-22"},{"lineNumber":45,"author":{"gitId":"wapisai"},"content":" this.targetName \u003d null;","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"wapisai"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"wapisai"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"wapisai"},"content":" * Creates a DeleteCommand to delete the person with the specified {@code Name}","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"wapisai"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"wapisai"},"content":" public DeleteCommand(Name targetName) {","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"wapisai"},"content":" this.targetName \u003d targetName;","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"wapisai"},"content":" this.targetIndex \u003d null;","lastModifiedDate":"2024-03-17"},{"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 CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19"},{"lineNumber":60,"author":{"gitId":"wapisai"},"content":" Person personToDelete;","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":62,"author":{"gitId":"wapisai"},"content":" if (targetIndex !\u003d null) {","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"wapisai"},"content":" personToDelete \u003d DeleteCommandExecutor.deleteByIndex(lastShownList, targetIndex);","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"wapisai"},"content":" } else {","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"wapisai"},"content":" personToDelete \u003d DeleteCommandExecutor.deleteByName(lastShownList, targetName);","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" model.deletePerson(personToDelete);","lastModifiedDate":"2016-09-25"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete)));","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" if (!(other instanceof DeleteCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":84,"author":{"gitId":"wapisai"},"content":" if (targetIndex !\u003d null) {","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return targetIndex.equals(otherDeleteCommand.targetIndex);","lastModifiedDate":"2023-07-13"},{"lineNumber":86,"author":{"gitId":"wapisai"},"content":" } else {","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"wapisai"},"content":" return targetName.equals(otherDeleteCommand.targetName);","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"wapisai"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"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(\"targetIndex\", targetIndex)","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":{"UdhayaShan1":11,"-":55,"appleraincoat":6,"wapisai":25}},{"path":"src/main/java/seedu/realodex/logic/commands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.commands;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_FAMILY;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_INCOME;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"appleraincoat"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":21,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.index.Index;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.util.CollectionUtil;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.Messages;","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Address;","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Email;","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Family;","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Income;","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.remark.Remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.tag.Tag;","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26"},{"lineNumber":38,"author":{"gitId":"UdhayaShan1"},"content":" * Edits the details of an existing person in realodex.","lastModifiedDate":"2024-03-19"},{"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":"appleraincoat"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the client identified \"","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"appleraincoat"},"content":" + \"by the index number used in the displayed client list. \"","lastModifiedDate":"2024-03-13"},{"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":"wapisai"},"content":" + \"[\" + PREFIX_INCOME + \"INCOME] \"","lastModifiedDate":"2024-03-15"},{"lineNumber":51,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":53,"author":{"gitId":"wapisai"},"content":" + \"[\" + PREFIX_FAMILY + \"FAMILY] \"","lastModifiedDate":"2024-03-15"},{"lineNumber":54,"author":{"gitId":"wapisai"},"content":" + \"[\" + PREFIX_TAG + \"TAG]\"","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"wapisai"},"content":" + \"[\" + PREFIX_REMARK + \"REMARK]\\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09"},{"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":"appleraincoat"},"content":" public static final String MESSAGE_EDIT_HELP \u003d \"Edit Command: Edits a client\u0027s particulars through their \"","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"appleraincoat"},"content":" + \"index number shown in the list.\\n\"","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"appleraincoat"},"content":" + \"Format: edit INDEX NUMBER [n/NAME] [p/PHONE] [i/INCOME] [e/EMAIL] [a/ADDRESS] [f/FAMILY] \"","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"appleraincoat"},"content":" + \"[t/TAG] [r/REMARK]\\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"appleraincoat"},"content":" + \"Example: edit 3 n/John e/john@gmail.com f/5\\n\";","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":66,"author":{"gitId":"appleraincoat"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Client: %1$s\";","lastModifiedDate":"2024-03-13"},{"lineNumber":67,"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":68,"author":{"gitId":"appleraincoat"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This client already exists in Realodex.\";","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":71,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25"},{"lineNumber":78,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25"},{"lineNumber":79,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25"},{"lineNumber":82,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":87,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":88,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":90,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19"},{"lineNumber":91,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":98,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":101,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":102,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":103,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":106,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26"},{"lineNumber":109,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":110,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":113,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":114,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21"},{"lineNumber":115,"author":{"gitId":"UdhayaShan1"},"content":" Income updatedIncome \u003d editPersonDescriptor.getIncome().orElse(personToEdit.getIncome());","lastModifiedDate":"2024-03-11"},{"lineNumber":116,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":117,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2017-06-21"},{"lineNumber":118,"author":{"gitId":"UdhayaShan1"},"content":" Family updatedFamily \u003d editPersonDescriptor.getFamily().orElse(personToEdit.getFamily());","lastModifiedDate":"2024-03-11"},{"lineNumber":119,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2017-06-21"},{"lineNumber":120,"author":{"gitId":"appleraincoat"},"content":" Remark updatedRemark \u003d editPersonDescriptor.getRemark().orElse(personToEdit.getRemark());","lastModifiedDate":"2024-03-16"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":122,"author":{"gitId":"UdhayaShan1"},"content":" return new Person(updatedName, updatedPhone, updatedIncome,","lastModifiedDate":"2024-03-11"},{"lineNumber":123,"author":{"gitId":"UdhayaShan1"},"content":" updatedEmail, updatedAddress, updatedFamily,","lastModifiedDate":"2024-03-11"},{"lineNumber":124,"author":{"gitId":"appleraincoat"},"content":" updatedTags, updatedRemark);","lastModifiedDate":"2024-03-16"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":139,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13"},{"lineNumber":140,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":152,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26"},{"lineNumber":153,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26"},{"lineNumber":154,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":155,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26"},{"lineNumber":156,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21"},{"lineNumber":157,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":158,"author":{"gitId":"UdhayaShan1"},"content":" private Income income;","lastModifiedDate":"2024-03-11"},{"lineNumber":159,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":160,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21"},{"lineNumber":161,"author":{"gitId":"UdhayaShan1"},"content":" private Family family;","lastModifiedDate":"2024-03-11"},{"lineNumber":162,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21"},{"lineNumber":163,"author":{"gitId":"appleraincoat"},"content":" private Remark remark;","lastModifiedDate":"2024-03-16"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":165,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":167,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":168,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11"},{"lineNumber":169,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":170,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":171,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26"},{"lineNumber":172,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15"},{"lineNumber":173,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15"},{"lineNumber":174,"author":{"gitId":"UdhayaShan1"},"content":" setIncome(toCopy.income);","lastModifiedDate":"2024-03-11"},{"lineNumber":175,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15"},{"lineNumber":176,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15"},{"lineNumber":177,"author":{"gitId":"UdhayaShan1"},"content":" setFamily(toCopy.family);","lastModifiedDate":"2024-03-11"},{"lineNumber":178,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11"},{"lineNumber":179,"author":{"gitId":"appleraincoat"},"content":" setRemark(toCopy.remark);","lastModifiedDate":"2024-03-16"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":182,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":183,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26"},{"lineNumber":184,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":185,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26"},{"lineNumber":186,"author":{"gitId":"wapisai"},"content":" return CollectionUtil.isAnyNonNull(name, phone, income, email, address, family, tags, remark);","lastModifiedDate":"2024-03-18"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":189,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21"},{"lineNumber":190,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21"},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":193,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":194,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":197,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21"},{"lineNumber":198,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":199,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":201,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26"},{"lineNumber":202,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21"},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":205,"author":{"gitId":"UdhayaShan1"},"content":" public void setIncome(Income income) {","lastModifiedDate":"2024-03-11"},{"lineNumber":206,"author":{"gitId":"UdhayaShan1"},"content":" this.income \u003d income;","lastModifiedDate":"2024-03-11"},{"lineNumber":207,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":208,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":209,"author":{"gitId":"UdhayaShan1"},"content":" public Optional\u003cIncome\u003e getIncome() {","lastModifiedDate":"2024-03-11"},{"lineNumber":210,"author":{"gitId":"UdhayaShan1"},"content":" return Optional.ofNullable(income);","lastModifiedDate":"2024-03-11"},{"lineNumber":211,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":212,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":213,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21"},{"lineNumber":214,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21"},{"lineNumber":215,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":217,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":218,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21"},{"lineNumber":219,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":221,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21"},{"lineNumber":222,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21"},{"lineNumber":223,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":225,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26"},{"lineNumber":226,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21"},{"lineNumber":227,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":229,"author":{"gitId":"UdhayaShan1"},"content":" public void setFamily(Family family) {","lastModifiedDate":"2024-03-11"},{"lineNumber":230,"author":{"gitId":"UdhayaShan1"},"content":" this.family \u003d family;","lastModifiedDate":"2024-03-11"},{"lineNumber":231,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":232,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":233,"author":{"gitId":"UdhayaShan1"},"content":" public Optional\u003cFamily\u003e getFamily() {","lastModifiedDate":"2024-03-11"},{"lineNumber":234,"author":{"gitId":"UdhayaShan1"},"content":" return Optional.ofNullable(family);","lastModifiedDate":"2024-03-11"},{"lineNumber":235,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":236,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":237,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":238,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11"},{"lineNumber":239,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":240,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":241,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21"},{"lineNumber":242,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11"},{"lineNumber":243,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":245,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":246,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11"},{"lineNumber":247,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11"},{"lineNumber":248,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11"},{"lineNumber":249,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":250,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":251,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11"},{"lineNumber":252,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":254,"author":{"gitId":"appleraincoat"},"content":" public void setRemark(Remark remark) {","lastModifiedDate":"2024-03-16"},{"lineNumber":255,"author":{"gitId":"appleraincoat"},"content":" this.remark \u003d (remark !\u003d null) ? remark : null;","lastModifiedDate":"2024-03-16"},{"lineNumber":256,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":257,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":258,"author":{"gitId":"appleraincoat"},"content":" public Optional\u003cRemark\u003e getRemark() {","lastModifiedDate":"2024-03-16"},{"lineNumber":259,"author":{"gitId":"appleraincoat"},"content":" return (remark !\u003d null) ? Optional.of(remark) : Optional.empty();","lastModifiedDate":"2024-03-16"},{"lineNumber":260,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":261,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":262,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":263,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":264,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":265,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":266,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":268,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":269,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05"},{"lineNumber":270,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":271,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":273,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":274,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":275,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":276,"author":{"gitId":"wapisai"},"content":" \u0026\u0026 Objects.equals(income, otherEditPersonDescriptor.income)","lastModifiedDate":"2024-03-15"},{"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":"wapisai"},"content":" \u0026\u0026 Objects.equals(family, otherEditPersonDescriptor.family)","lastModifiedDate":"2024-03-15"},{"lineNumber":280,"author":{"gitId":"wapisai"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags)","lastModifiedDate":"2024-03-18"},{"lineNumber":281,"author":{"gitId":"wapisai"},"content":" \u0026\u0026 Objects.equals(remark, otherEditPersonDescriptor.remark);","lastModifiedDate":"2024-03-18"},{"lineNumber":282,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":284,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":285,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":286,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":287,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":288,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":289,"author":{"gitId":"wapisai"},"content":" .add(\"income\", income)","lastModifiedDate":"2024-03-15"},{"lineNumber":290,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":291,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":292,"author":{"gitId":"wapisai"},"content":" .add(\"family\", family)","lastModifiedDate":"2024-03-15"},{"lineNumber":293,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":294,"author":{"gitId":"wapisai"},"content":" .add(\"remark\", remark)","lastModifiedDate":"2024-03-18"},{"lineNumber":295,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":296,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":297,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":298,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"UdhayaShan1":49,"-":214,"appleraincoat":23,"wapisai":12}},{"path":"src/main/java/seedu/realodex/logic/commands/ExitCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":3,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.Model;","lastModifiedDate":"2024-03-19"},{"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":"appleraincoat"},"content":" public static final String MESSAGE_EXIT_ACKNOWLEDGEMENT \u003d \"Exiting Realodex as requested ...\";","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"appleraincoat"},"content":" public static final String MESSAGE_EXIT_HELP \u003d \"Exit Command: Exits Realodex.\\n\"","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"appleraincoat"},"content":" + \"Format: exit\\n\";","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, false, true);","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"UdhayaShan1":2,"-":16,"appleraincoat":3}},{"path":"src/main/java/seedu/realodex/logic/commands/FilterCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.commands;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.Messages;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.NameContainsKeyphrasePredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":" * Filters and lists all persons in realodex whose name contains the argument keyphrase.","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"jyztintan"},"content":" * Keyphrase matching is case-insensitive.","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":14,"author":{"gitId":"jyztintan"},"content":"public class FilterCommand extends Command {","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":16,"author":{"gitId":"jyztintan"},"content":" public static final String COMMAND_WORD \u003d \"filter\";","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":18,"author":{"gitId":"jyztintan"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Filters all clients whose names contain \"","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"jyztintan"},"content":" + \"the specified keyphrase (case-insensitive) and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"jyztintan"},"content":" + \"Parameters: KEYPHRASE (Non-empty String)\\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"jyztintan"},"content":" + \"Example: \" + COMMAND_WORD + \" alice tan\";","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":23,"author":{"gitId":"jyztintan"},"content":" public static final String MESSAGE_FIND_HELP \u003d \"Filter Command: Filters clients whose names contain \"","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"jyztintan"},"content":" + \"the specified keyphrase (case-insensitive) and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"appleraincoat"},"content":" + \"Format: filter KEYPHRASE\\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"appleraincoat"},"content":" + \"Example: filter Jus\\n\";","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"jyztintan"},"content":" private final NameContainsKeyphrasePredicate predicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":30,"author":{"gitId":"jyztintan"},"content":" public FilterCommand(NameContainsKeyphrasePredicate predicate) {","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22"},{"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":"-"},"content":" model.updateFilteredPersonList(predicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return new CommandResult(","lastModifiedDate":"2018-04-01"},{"lineNumber":39,"author":{"gitId":"-"},"content":" String.format(Messages.MESSAGE_PERSONS_LISTED_OVERVIEW, model.getFilteredPersonList().size()));","lastModifiedDate":"2018-04-01"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"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":"jyztintan"},"content":" if (!(other instanceof FilterCommand)) {","lastModifiedDate":"2024-03-16"},{"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":"jyztintan"},"content":" FilterCommand otherFilterCommand \u003d (FilterCommand) other;","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"jyztintan"},"content":" return predicate.equals(otherFilterCommand.predicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"jyztintan":14,"UdhayaShan1":6,"-":40,"appleraincoat":3}},{"path":"src/main/java/seedu/realodex/logic/commands/HelpCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.Model;","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"UdhayaShan1":2,"-":19}},{"path":"src/main/java/seedu/realodex/logic/commands/ListCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.commands;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":" * Lists all persons in realodex to the user.","lastModifiedDate":"2024-03-19"},{"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":"appleraincoat"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all clients\";","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"appleraincoat"},"content":" public static final String MESSAGE_LIST_HELP \u003d \"List Command: Lists all clients in Realodex.\\n\"","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"appleraincoat"},"content":" + \"Format: list\\n\";","lastModifiedDate":"2024-03-13"},{"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":{"UdhayaShan1":4,"-":18,"appleraincoat":3}},{"path":"src/main/java/seedu/realodex/logic/commands/delete/DeleteCommandExecutor.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.commands.delete;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"wapisai"},"content":"import java.util.List;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.index.Index;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.Messages;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"wapisai"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"wapisai"},"content":" * Contains the logic for executing the delete command.","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"wapisai"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"wapisai"},"content":"public class DeleteCommandExecutor {","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"wapisai"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"UdhayaShan1"},"content":" * Deletes a client from realodex using their index in the last shown list.","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"wapisai"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"wapisai"},"content":" public static Person deleteByIndex(List\u003cPerson\u003e lastShownList, Index targetIndex) throws CommandException {","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"wapisai"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size() || targetIndex.getZeroBased() \u003c 0) {","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"wapisai"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"wapisai"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"wapisai"},"content":" return lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"wapisai"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"wapisai"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"UdhayaShan1"},"content":" * Deletes a client from realodex using their full name.","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"wapisai"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"wapisai"},"content":" public static Person deleteByName(List\u003cPerson\u003e lastShownList, Name targetName) throws CommandException {","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"wapisai"},"content":" for (Person person : lastShownList) {","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"wapisai"},"content":" if (person.getName().equals(targetName)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"wapisai"},"content":" return person;","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"wapisai"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"wapisai"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"wapisai"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_NAME);","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"wapisai"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"wapisai"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"UdhayaShan1":8,"wapisai":30}},{"path":"src/main/java/seedu/realodex/logic/commands/exceptions/CommandException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.commands.exceptions;","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":1,"-":16}},{"path":"src/main/java/seedu/realodex/logic/parser/AddCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.parser;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":3,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_FAMILY;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_INCOME;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.AddCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Address;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Email;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Family;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Income;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.remark.Remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.tag.Tag;","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05"},{"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-02-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":40,"author":{"gitId":"UdhayaShan1"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_INCOME,","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"appleraincoat"},"content":" PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_FAMILY, PREFIX_TAG, PREFIX_REMARK);","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":43,"author":{"gitId":"UdhayaShan1"},"content":" if (!arePrefixesPresent(argMultimap,","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"UdhayaShan1"},"content":" PREFIX_NAME,","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"UdhayaShan1"},"content":" PREFIX_ADDRESS,","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"UdhayaShan1"},"content":" PREFIX_INCOME,","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"UdhayaShan1"},"content":" PREFIX_PHONE,","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"UdhayaShan1"},"content":" PREFIX_FAMILY,","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"UdhayaShan1"},"content":" PREFIX_EMAIL,","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"UdhayaShan1"},"content":" PREFIX_TAG)","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":55,"author":{"gitId":"UdhayaShan1"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_INCOME, PREFIX_EMAIL,","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"appleraincoat"},"content":" PREFIX_FAMILY, PREFIX_ADDRESS, PREFIX_REMARK);","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":58,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":59,"author":{"gitId":"UdhayaShan1"},"content":" Income income \u003d ParserUtil.parseIncome(argMultimap.getValue(PREFIX_INCOME).get());","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":61,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":62,"author":{"gitId":"UdhayaShan1"},"content":" Family family \u003d ParserUtil.parseFamily(argMultimap.getValue(PREFIX_FAMILY).get());","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"4llysa"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2024-03-15"},{"lineNumber":64,"author":{"gitId":"appleraincoat"},"content":" Remark remark \u003d ParserUtil.parseRemark(argMultimap.getRemarkValue(PREFIX_REMARK).get());","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"4llysa"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":66,"author":{"gitId":"appleraincoat"},"content":" Person person \u003d new Person(name, phone, income, email, address, family, tagList, remark);","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":75,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":79,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"4llysa":2,"UdhayaShan1":33,"-":40,"appleraincoat":4}},{"path":"src/main/java/seedu/realodex/logic/parser/ArgumentMultimap.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.parser;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.logic.Messages;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-19"},{"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":"appleraincoat"},"content":" public Optional\u003cString\u003e getRemarkValue(Prefix prefix) {","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"appleraincoat"},"content":" List\u003cString\u003e values \u003d getAllValues(prefix);","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"appleraincoat"},"content":" return values.isEmpty() ? Optional.of(\"\") : Optional.of(values.get(values.size() - 1));","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Returns all values of {@code prefix}.","lastModifiedDate":"2017-03-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * If the prefix does not exist or has no values, this will return an empty list.","lastModifiedDate":"2017-03-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Modifying the returned list will not affect the underlying data structure of the ArgumentMultimap.","lastModifiedDate":"2017-03-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public List\u003cString\u003e getAllValues(Prefix prefix) {","lastModifiedDate":"2017-03-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" if (!argMultimap.containsKey(prefix)) {","lastModifiedDate":"2017-03-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e();","lastModifiedDate":"2017-03-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(argMultimap.get(prefix));","lastModifiedDate":"2017-03-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Returns the preamble (text before the first valid prefix). Trims any leading/trailing spaces.","lastModifiedDate":"2017-03-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public String getPreamble() {","lastModifiedDate":"2017-03-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return getValue(new Prefix(\"\")).orElse(\"\");","lastModifiedDate":"2017-03-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Throws a {@code ParseException} if any of the prefixes given in {@code prefixes} appeared more than","lastModifiedDate":"2023-07-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * once among the arguments.","lastModifiedDate":"2023-07-14"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void verifyNoDuplicatePrefixesFor(Prefix... prefixes) throws ParseException {","lastModifiedDate":"2023-07-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":" Prefix[] duplicatedPrefixes \u003d Stream.of(prefixes).distinct()","lastModifiedDate":"2023-07-14"},{"lineNumber":76,"author":{"gitId":"-"},"content":" .filter(prefix -\u003e argMultimap.containsKey(prefix) \u0026\u0026 argMultimap.get(prefix).size() \u003e 1)","lastModifiedDate":"2023-07-14"},{"lineNumber":77,"author":{"gitId":"-"},"content":" .toArray(Prefix[]::new);","lastModifiedDate":"2023-07-14"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":79,"author":{"gitId":"-"},"content":" if (duplicatedPrefixes.length \u003e 0) {","lastModifiedDate":"2023-07-14"},{"lineNumber":80,"author":{"gitId":"-"},"content":" throw new ParseException(Messages.getErrorMessageForDuplicatePrefixes(duplicatedPrefixes));","lastModifiedDate":"2023-07-14"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":83,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-08"}],"authorContributionMap":{"UdhayaShan1":3,"-":75,"appleraincoat":5}},{"path":"src/main/java/seedu/realodex/logic/parser/ArgumentTokenizer.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.parser;","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":1,"-":147}},{"path":"src/main/java/seedu/realodex/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.parser;","lastModifiedDate":"2024-03-19"},{"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":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":" public static final Prefix PREFIX_INCOME \u003d new Prefix(\"i/\");","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"UdhayaShan1"},"content":" //To remove EMAIl field soon","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":16,"author":{"gitId":"UdhayaShan1"},"content":" public static final Prefix PREFIX_FAMILY \u003d new Prefix(\"f/\");","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"UdhayaShan1"},"content":" //Possible rename to additional notes to fit feature spec","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":20,"author":{"gitId":"appleraincoat"},"content":" public static final Prefix PREFIX_REMARK \u003d new Prefix(\"r/\");","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":22,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"UdhayaShan1":8,"-":15,"appleraincoat":1}},{"path":"src/main/java/seedu/realodex/logic/parser/DeleteCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.parser;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":5,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.index.Index;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new DeleteCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class DeleteCommandParser implements Parser\u003cDeleteCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * and returns a DeleteCommand object for execution.","lastModifiedDate":"2019-05-11"},{"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":"wapisai"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_NAME);","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"wapisai"},"content":" if (namePrefixPresent(argMultimap)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"wapisai"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"wapisai"},"content":" return new DeleteCommand(name);","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"wapisai"},"content":" } else {","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"-"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2017-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" return new DeleteCommand(index);","lastModifiedDate":"2017-05-15"},{"lineNumber":28,"author":{"gitId":"wapisai"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":31,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"wapisai"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"wapisai"},"content":" * Returns true if there is a PREFIX_NAME in the given","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"wapisai"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"wapisai"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"wapisai"},"content":" private static boolean namePrefixPresent(ArgumentMultimap argumentMultimap) {","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"wapisai"},"content":" return argumentMultimap.getValue(PREFIX_NAME).isPresent();","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"UdhayaShan1":6,"-":19,"wapisai":14}},{"path":"src/main/java/seedu/realodex/logic/parser/EditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.parser;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_FAMILY;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_INCOME;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"appleraincoat"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.index.Index;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.EditCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":30,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":32,"author":{"gitId":"wapisai"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_INCOME, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"wapisai"},"content":" PREFIX_FAMILY, PREFIX_TAG, PREFIX_REMARK);","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06"},{"lineNumber":39,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10"},{"lineNumber":40,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":43,"author":{"gitId":"wapisai"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_INCOME, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"wapisai"},"content":" PREFIX_FAMILY, PREFIX_REMARK);","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":46,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-01-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":49,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":52,"author":{"gitId":"-"},"content":" editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":54,"author":{"gitId":"wapisai"},"content":" if (argMultimap.getValue(PREFIX_INCOME).isPresent()) {","lastModifiedDate":"2024-03-15"},{"lineNumber":55,"author":{"gitId":"wapisai"},"content":" editPersonDescriptor.setIncome(ParserUtil.parseIncome(argMultimap.getValue(PREFIX_INCOME).get()));","lastModifiedDate":"2024-03-15"},{"lineNumber":56,"author":{"gitId":"wapisai"},"content":" }","lastModifiedDate":"2024-03-15"},{"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":"wapisai"},"content":" if (argMultimap.getValue(PREFIX_FAMILY).isPresent()) {","lastModifiedDate":"2024-03-15"},{"lineNumber":64,"author":{"gitId":"wapisai"},"content":" editPersonDescriptor.setFamily(ParserUtil.parseFamily(argMultimap.getValue(PREFIX_FAMILY).get()));","lastModifiedDate":"2024-03-15"},{"lineNumber":65,"author":{"gitId":"wapisai"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":66,"author":{"gitId":"wapisai"},"content":" if (argMultimap.getValue(PREFIX_TAG).isPresent()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"wapisai"},"content":" editPersonDescriptor.setTags(ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG)));","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"wapisai"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"wapisai"},"content":" if (argMultimap.getValue(PREFIX_REMARK).isPresent()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"wapisai"},"content":" editPersonDescriptor.setRemark(ParserUtil.parseRemark(argMultimap.getValue(PREFIX_REMARK).get()));","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"wapisai"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"UdhayaShan1":13,"-":48,"appleraincoat":1,"wapisai":16}},{"path":"src/main/java/seedu/realodex/logic/parser/FilterCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.parser;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":5,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.FilterCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.NameContainsKeyphrasePredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":10,"author":{"gitId":"jyztintan"},"content":" * Parses input arguments and creates a new FilterCommand object","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"jyztintan"},"content":"public class FilterCommandParser implements Parser\u003cFilterCommand\u003e {","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"jyztintan"},"content":" * Parses the given {@code String} of arguments in the context of the FilterCommand","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"jyztintan"},"content":" * and returns a FilterCommand object for execution.","lastModifiedDate":"2024-03-16"},{"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":"jyztintan"},"content":" public FilterCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"jyztintan"},"content":" String keyPhrase \u003d args.trim();","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"jyztintan"},"content":" if (keyPhrase.isEmpty()) {","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11"},{"lineNumber":23,"author":{"gitId":"jyztintan"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FilterCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":26,"author":{"gitId":"jyztintan"},"content":" return new FilterCommand(new NameContainsKeyphrasePredicate(keyPhrase));","lastModifiedDate":"2024-03-16"},{"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":{"jyztintan":9,"UdhayaShan1":5,"-":15}},{"path":"src/main/java/seedu/realodex/logic/parser/Parser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.parser;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":3,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.Command;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":3,"-":13}},{"path":"src/main/java/seedu/realodex/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.parser;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.index.Index;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.util.StringUtil;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Address;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Email;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Family;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Income;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.remark.Remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.tag.Tag;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18"},{"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":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":59,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":63,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30"},{"lineNumber":64,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":65,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":66,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","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":"UdhayaShan1"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":72,"author":{"gitId":"UdhayaShan1"},"content":" * Parses a {@code String income} into a {@code Income}.","lastModifiedDate":"2024-03-11"},{"lineNumber":73,"author":{"gitId":"UdhayaShan1"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"UdhayaShan1"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":75,"author":{"gitId":"UdhayaShan1"},"content":" * @throws ParseException if the given {@code income} is invalid.","lastModifiedDate":"2024-03-11"},{"lineNumber":76,"author":{"gitId":"UdhayaShan1"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":77,"author":{"gitId":"UdhayaShan1"},"content":" public static Income parseIncome(String income) throws ParseException {","lastModifiedDate":"2024-03-11"},{"lineNumber":78,"author":{"gitId":"UdhayaShan1"},"content":" requireNonNull(income);","lastModifiedDate":"2024-03-11"},{"lineNumber":79,"author":{"gitId":"UdhayaShan1"},"content":" String trimmedIncome \u003d income.trim();","lastModifiedDate":"2024-03-11"},{"lineNumber":80,"author":{"gitId":"UdhayaShan1"},"content":" if (!Income.isValidIncome(trimmedIncome)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":81,"author":{"gitId":"UdhayaShan1"},"content":" throw new ParseException(Income.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-11"},{"lineNumber":82,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":83,"author":{"gitId":"UdhayaShan1"},"content":" return new Income(trimmedIncome);","lastModifiedDate":"2024-03-11"},{"lineNumber":84,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":85,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":89,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":93,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30"},{"lineNumber":94,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":95,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":96,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":98,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","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":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":104,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":108,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":109,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":110,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":111,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":113,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","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":"UdhayaShan1"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":117,"author":{"gitId":"UdhayaShan1"},"content":" * Parses a {@code String family} into a {@code Family}.","lastModifiedDate":"2024-03-11"},{"lineNumber":118,"author":{"gitId":"UdhayaShan1"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-11"},{"lineNumber":119,"author":{"gitId":"UdhayaShan1"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":120,"author":{"gitId":"UdhayaShan1"},"content":" * @throws ParseException if the given {@code family} is invalid.","lastModifiedDate":"2024-03-11"},{"lineNumber":121,"author":{"gitId":"UdhayaShan1"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":122,"author":{"gitId":"UdhayaShan1"},"content":" public static Family parseFamily(String family) throws ParseException {","lastModifiedDate":"2024-03-11"},{"lineNumber":123,"author":{"gitId":"UdhayaShan1"},"content":" requireNonNull(family);","lastModifiedDate":"2024-03-11"},{"lineNumber":124,"author":{"gitId":"UdhayaShan1"},"content":" String trimmedFamily \u003d family.trim();","lastModifiedDate":"2024-03-11"},{"lineNumber":125,"author":{"gitId":"UdhayaShan1"},"content":" if (!Family.isValidFamily(trimmedFamily)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":126,"author":{"gitId":"UdhayaShan1"},"content":" throw new ParseException(Family.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-11"},{"lineNumber":127,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":128,"author":{"gitId":"UdhayaShan1"},"content":" assert Integer.parseInt(trimmedFamily) \u003e\u003d 1;","lastModifiedDate":"2024-03-13"},{"lineNumber":129,"author":{"gitId":"UdhayaShan1"},"content":" return new Family(trimmedFamily);","lastModifiedDate":"2024-03-11"},{"lineNumber":130,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":131,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":134,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":135,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":136,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":137,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":138,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":139,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30"},{"lineNumber":140,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":141,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":142,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":144,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":147,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":148,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07"},{"lineNumber":149,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":150,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":151,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15"},{"lineNumber":152,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11"},{"lineNumber":153,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11"},{"lineNumber":154,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":156,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":158,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":159,"author":{"gitId":"appleraincoat"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":160,"author":{"gitId":"appleraincoat"},"content":" * Parses a {@code String remark} into a {@code Remark}.","lastModifiedDate":"2024-03-16"},{"lineNumber":161,"author":{"gitId":"appleraincoat"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-16"},{"lineNumber":162,"author":{"gitId":"appleraincoat"},"content":" *","lastModifiedDate":"2024-03-16"},{"lineNumber":163,"author":{"gitId":"appleraincoat"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":164,"author":{"gitId":"appleraincoat"},"content":" public static Remark parseRemark(String remark) {","lastModifiedDate":"2024-03-17"},{"lineNumber":165,"author":{"gitId":"appleraincoat"},"content":" String trimmedRemark \u003d remark.trim();","lastModifiedDate":"2024-03-16"},{"lineNumber":166,"author":{"gitId":"appleraincoat"},"content":" return new Remark(trimmedRemark);","lastModifiedDate":"2024-03-16"},{"lineNumber":167,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":168,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"UdhayaShan1":43,"-":115,"appleraincoat":10}},{"path":"src/main/java/seedu/realodex/logic/parser/Prefix.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.parser;","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":1,"-":41}},{"path":"src/main/java/seedu/realodex/logic/parser/RealodexParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.parser;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.LogsCenter;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.AddCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.ClearCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.Command;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.EditCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.ExitCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.FilterCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.HelpCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.ListCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"public class RealodexParser {","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(RealodexParser.class);","lastModifiedDate":"2024-03-19"},{"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":"jyztintan"},"content":" case FilterCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"jyztintan"},"content":" return new FilterCommandParser().parse(arguments);","lastModifiedDate":"2024-03-16"},{"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"}],"authorContributionMap":{"jyztintan":2,"UdhayaShan1":16,"-":68}},{"path":"src/main/java/seedu/realodex/logic/parser/exceptions/ParseException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.parser.exceptions;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":3,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":2,"-":15}},{"path":"src/main/java/seedu/realodex/model/Model.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.model;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.GuiSettings;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Person;","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2017-08-05"},{"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":"UdhayaShan1"},"content":" * Returns the user prefs\u0027 realodex file path.","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"UdhayaShan1"},"content":" Path getRealodexFilePath();","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"UdhayaShan1"},"content":" * Sets the user prefs\u0027 realodex file path.","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"UdhayaShan1"},"content":" void setRealodexFilePath(Path realodexFilePath);","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"UdhayaShan1"},"content":" * Replaces realodex data with the data in {@code realodex}.","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"UdhayaShan1"},"content":" void setRealodex(ReadOnlyRealodex realodex);","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":52,"author":{"gitId":"UdhayaShan1"},"content":" /** Returns the Realodex */","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"UdhayaShan1"},"content":" ReadOnlyRealodex getRealodex();","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":56,"author":{"gitId":"UdhayaShan1"},"content":" * Returns true if a person with the same identity as {@code person} exists in realodex.","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" * The person must exist in the realodex.","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" * {@code person} must not already exist in realodex.","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":14,"-":73}},{"path":"src/main/java/seedu/realodex/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.model;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-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":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.GuiSettings;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.LogsCenter;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"UdhayaShan1"},"content":" * Represents the in-memory model of the realodex data.","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" private final Realodex realodex;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2018-01-10"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"UdhayaShan1"},"content":" * Initializes a ModelManager with the given realodex and userPrefs.","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"UdhayaShan1"},"content":" public ModelManager(ReadOnlyRealodex realodex, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"UdhayaShan1"},"content":" requireAllNonNull(realodex, userPrefs);","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":32,"author":{"gitId":"UdhayaShan1"},"content":" logger.fine(\"Initializing with realodex: \" + realodex + \" and user prefs \" + userPrefs);","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"UdhayaShan1"},"content":" this.realodex \u003d new Realodex(realodex);","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":36,"author":{"gitId":"UdhayaShan1"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(this.realodex.getPersonList());","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" this(new Realodex(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"UdhayaShan1"},"content":" public Path getRealodexFilePath() {","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"UdhayaShan1"},"content":" return userPrefs.getRealodexFilePath();","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","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":"UdhayaShan1"},"content":" public void setRealodexFilePath(Path realodexFilePath) {","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"UdhayaShan1"},"content":" requireNonNull(realodexFilePath);","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"UdhayaShan1"},"content":" userPrefs.setRealodexFilePath(realodexFilePath);","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"UdhayaShan1"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Realodex \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":81,"author":{"gitId":"UdhayaShan1"},"content":" public void setRealodex(ReadOnlyRealodex realodex) {","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"UdhayaShan1"},"content":" this.realodex.resetData(realodex);","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":86,"author":{"gitId":"UdhayaShan1"},"content":" public ReadOnlyRealodex getRealodex() {","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"UdhayaShan1"},"content":" return realodex;","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":92,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":93,"author":{"gitId":"UdhayaShan1"},"content":" return realodex.hasPerson(person);","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15"},{"lineNumber":98,"author":{"gitId":"UdhayaShan1"},"content":" realodex.removePerson(target);","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":102,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":103,"author":{"gitId":"UdhayaShan1"},"content":" realodex.addPerson(person);","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":109,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":111,"author":{"gitId":"UdhayaShan1"},"content":" realodex.setPerson(target, editedPerson);","lastModifiedDate":"2024-03-19"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":114,"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":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":117,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10"},{"lineNumber":118,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11"},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":121,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":122,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":126,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":127,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05"},{"lineNumber":128,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12"},{"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":"2017-05-31"},{"lineNumber":132,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":137,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31"},{"lineNumber":138,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":139,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":143,"author":{"gitId":"UdhayaShan1"},"content":" return realodex.equals(otherModelManager.realodex)","lastModifiedDate":"2024-03-19"},{"lineNumber":144,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13"},{"lineNumber":145,"author":{"gitId":"-"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons);","lastModifiedDate":"2023-07-13"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":148,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"UdhayaShan1":29,"-":119}},{"path":"src/main/java/seedu/realodex/model/ReadOnlyRealodex.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.model;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":" * Unmodifiable view of an realodex","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"public interface ReadOnlyRealodex {","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the persons list.","lastModifiedDate":"2016-12-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * This list will not contain any duplicate persons.","lastModifiedDate":"2016-12-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"UdhayaShan1":4,"-":13}},{"path":"src/main/java/seedu/realodex/model/ReadOnlyUserPrefs.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.model;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.GuiSettings;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" Path getRealodexFilePath();","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-11-27"}],"authorContributionMap":{"UdhayaShan1":3,"-":13}},{"path":"src/main/java/seedu/realodex/model/Realodex.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.model;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.UniquePersonList;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"UdhayaShan1"},"content":" * Wraps all data at the realodex level","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Duplicates are not allowed (by .isSamePerson comparison)","lastModifiedDate":"2018-04-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"UdhayaShan1"},"content":"public class Realodex implements ReadOnlyRealodex {","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private final UniquePersonList persons;","lastModifiedDate":"2016-08-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-19"},{"lineNumber":21,"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":22,"author":{"gitId":"-"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2016-10-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-19"},{"lineNumber":24,"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":25,"author":{"gitId":"-"},"content":" * among constructors.","lastModifiedDate":"2016-10-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" {","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" persons \u003d new UniquePersonList();","lastModifiedDate":"2016-08-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"UdhayaShan1"},"content":" public Realodex() {}","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"UdhayaShan1"},"content":" * Creates an Realodex using the Persons in the {@code toBeCopied}","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"UdhayaShan1"},"content":" public Realodex(ReadOnlyRealodex toBeCopied) {","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2016-12-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" resetData(toBeCopied);","lastModifiedDate":"2016-12-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":41,"author":{"gitId":"-"},"content":" //// list overwrite operations","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Replaces the contents of the person list with {@code persons}.","lastModifiedDate":"2018-08-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2018-08-07"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void setPersons(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-08-07"},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.persons.setPersons(persons);","lastModifiedDate":"2016-10-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":52,"author":{"gitId":"UdhayaShan1"},"content":" * Resets the existing data of this {@code Realodex} with {@code newData}.","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":54,"author":{"gitId":"UdhayaShan1"},"content":" public void resetData(ReadOnlyRealodex newData) {","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" requireNonNull(newData);","lastModifiedDate":"2017-05-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" setPersons(newData.getPersonList());","lastModifiedDate":"2018-03-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" //// person-level operations","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":63,"author":{"gitId":"UdhayaShan1"},"content":" * Returns true if a person with the same identity as {@code person} exists in realodex.","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return persons.contains(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":71,"author":{"gitId":"UdhayaShan1"},"content":" * Adds a person to realodex.","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"UdhayaShan1"},"content":" * The person must not already exist in realodex.","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void addPerson(Person p) {","lastModifiedDate":"2018-08-07"},{"lineNumber":75,"author":{"gitId":"-"},"content":" persons.add(p);","lastModifiedDate":"2018-03-29"},{"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-12-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2018-01-10"},{"lineNumber":80,"author":{"gitId":"UdhayaShan1"},"content":" * {@code target} must exist in realodex.","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"UdhayaShan1"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in realodex.","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":84,"author":{"gitId":"-"},"content":" requireNonNull(editedPerson);","lastModifiedDate":"2018-01-10"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" persons.setPerson(target, editedPerson);","lastModifiedDate":"2018-03-29"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":90,"author":{"gitId":"UdhayaShan1"},"content":" * Removes {@code key} from this {@code Realodex}.","lastModifiedDate":"2024-03-19"},{"lineNumber":91,"author":{"gitId":"UdhayaShan1"},"content":" * {@code key} must exist in realodex.","lastModifiedDate":"2024-03-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void removePerson(Person key) {","lastModifiedDate":"2018-08-07"},{"lineNumber":94,"author":{"gitId":"-"},"content":" persons.remove(key);","lastModifiedDate":"2018-02-28"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" //// util methods","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":" .add(\"persons\", persons)","lastModifiedDate":"2019-02-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"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-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":108,"author":{"gitId":"-"},"content":" return persons.asUnmodifiableObservableList();","lastModifiedDate":"2018-04-05"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-01"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-01"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"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":"UdhayaShan1"},"content":" if (!(other instanceof Realodex)) {","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" Realodex otherRealodex \u003d (Realodex) other;","lastModifiedDate":"2024-03-19"},{"lineNumber":123,"author":{"gitId":"UdhayaShan1"},"content":" return persons.equals(otherRealodex.persons);","lastModifiedDate":"2024-03-19"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":127,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":128,"author":{"gitId":"-"},"content":" return persons.hashCode();","lastModifiedDate":"2018-03-29"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":130,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"UdhayaShan1":21,"-":109}},{"path":"src/main/java/seedu/realodex/model/UserPrefs.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.model;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.GuiSettings;","lastModifiedDate":"2024-03-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":"UdhayaShan1"},"content":" private Path realodexFilePath \u003d Paths.get(\"data\" , \"realodex.json\");","lastModifiedDate":"2024-03-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":"UdhayaShan1"},"content":" setRealodexFilePath(newUserPrefs.getRealodexFilePath());","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" public Path getRealodexFilePath() {","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"UdhayaShan1"},"content":" return realodexFilePath;","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":54,"author":{"gitId":"UdhayaShan1"},"content":" public void setRealodexFilePath(Path realodexFilePath) {","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"UdhayaShan1"},"content":" requireNonNull(realodexFilePath);","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"UdhayaShan1"},"content":" this.realodexFilePath \u003d realodexFilePath;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" \u0026\u0026 realodexFilePath.equals(otherUserPrefs.realodexFilePath);","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" return Objects.hash(guiSettings, realodexFilePath);","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" sb.append(\"\\nLocal data file location : \" + realodexFilePath);","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":12,"-":76}},{"path":"src/main/java/seedu/realodex/model/person/Address.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.model.person;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":" * Represents a Person\u0027s address in realodex.","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":3,"-":62}},{"path":"src/main/java/seedu/realodex/model/person/Email.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.model.person;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":" * Represents a Person\u0027s email in realodex.","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":3,"-":76}},{"path":"src/main/java/seedu/realodex/model/person/Family.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.model.person;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"UdhayaShan1"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"UdhayaShan1"},"content":"/**","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":" * Represents the family size of a person in realodex.","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":" * Guarantees: family size is present and not null, and adheres to specific constraints.","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"UdhayaShan1"},"content":"public class Family {","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"UdhayaShan1"},"content":" /** Message for constraints on family size. */","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"appleraincoat"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Family size should be at least 1\";","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"UdhayaShan1"},"content":" public static final String VALIDATION_REGEX \u003d \"^[1-9]\\\\d*$\";","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"UdhayaShan1"},"content":" /** The family size. */","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"UdhayaShan1"},"content":" private String familySize;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"UdhayaShan1"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"UdhayaShan1"},"content":" * Constructs a {@code Family} instance with the given family size including him or herself.","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"UdhayaShan1"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"UdhayaShan1"},"content":" * @param familySize The size of the family.","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"UdhayaShan1"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"UdhayaShan1"},"content":" public Family(String familySize) {","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"UdhayaShan1"},"content":" requireNonNull(familySize);","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"UdhayaShan1"},"content":" checkArgument(isValidFamily(familySize), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"UdhayaShan1"},"content":" this.familySize \u003d familySize;","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"UdhayaShan1"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"UdhayaShan1"},"content":" * Checks if the given family size is a valid value.","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"UdhayaShan1"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"UdhayaShan1"},"content":" * @param familySize The family size to check.","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"UdhayaShan1"},"content":" * @return True if the family size is greater than or equal to zero, false otherwise.","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"UdhayaShan1"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"UdhayaShan1"},"content":" public static boolean isValidFamily(String familySize) {","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"UdhayaShan1"},"content":" return familySize.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"UdhayaShan1"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"UdhayaShan1"},"content":" * Returns the string representation of the family size.","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"UdhayaShan1"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"UdhayaShan1"},"content":" * @return The string representation of the family size.","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"UdhayaShan1"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"UdhayaShan1"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"UdhayaShan1"},"content":" public String toString() {","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"UdhayaShan1"},"content":" return familySize.toString();","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"UdhayaShan1"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"UdhayaShan1"},"content":" * Returns a string representation of the family size with additional descriptive text.","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"UdhayaShan1"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"UdhayaShan1"},"content":" * @return A string representation with descriptive text.","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"UdhayaShan1"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"UdhayaShan1"},"content":" public String toStringWithRepresentation() {","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"UdhayaShan1"},"content":" return \"Family size is \" + familySize;","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"UdhayaShan1"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"UdhayaShan1"},"content":" * Checks if this {@code Family} instance is equal to another object.","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"UdhayaShan1"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"UdhayaShan1"},"content":" * @param other The object to compare with.","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"UdhayaShan1"},"content":" * @return True if the objects are equal, false otherwise.","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"UdhayaShan1"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":66,"author":{"gitId":"UdhayaShan1"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"UdhayaShan1"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-11"},{"lineNumber":68,"author":{"gitId":"UdhayaShan1"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"UdhayaShan1"},"content":" return true; // short circuit if same object","lastModifiedDate":"2024-03-11"},{"lineNumber":70,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":71,"author":{"gitId":"UdhayaShan1"},"content":" if (!(other instanceof Family)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":72,"author":{"gitId":"UdhayaShan1"},"content":" return false; // instanceof handles nulls","lastModifiedDate":"2024-03-11"},{"lineNumber":73,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"UdhayaShan1"},"content":" Family otherFamily \u003d (Family) other;","lastModifiedDate":"2024-03-11"},{"lineNumber":75,"author":{"gitId":"UdhayaShan1"},"content":" return familySize.equals(otherFamily.familySize); // state check","lastModifiedDate":"2024-03-11"},{"lineNumber":76,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":77,"author":{"gitId":"UdhayaShan1"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"UdhayaShan1":76,"appleraincoat":1}},{"path":"src/main/java/seedu/realodex/model/person/Income.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.model.person;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"UdhayaShan1"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"UdhayaShan1"},"content":"/**","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":" * Represents the income of a person in realodex.","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":" * Guarantees: income is present, not null, and adheres to specific constraints.","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"UdhayaShan1"},"content":"public class Income {","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"UdhayaShan1"},"content":" /** Message for constraints on income. */","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"UdhayaShan1"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Income should be an integer and should be at least 0\";","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"UdhayaShan1"},"content":" public static final String VALIDATION_REGEX \u003d \"^[0-9]+$\";","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"UdhayaShan1"},"content":" /** The income value. */","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"UdhayaShan1"},"content":" private final String incomeValue;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"UdhayaShan1"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"UdhayaShan1"},"content":" * Constructs an {@code Income} instance with the given income value.","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"UdhayaShan1"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"UdhayaShan1"},"content":" * @param incomeValue The income value.","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"UdhayaShan1"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"UdhayaShan1"},"content":" public Income(String incomeValue) {","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"UdhayaShan1"},"content":" requireNonNull(incomeValue);","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"wapisai"},"content":" checkArgument(isValidIncome(incomeValue), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"UdhayaShan1"},"content":" this.incomeValue \u003d incomeValue;","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"UdhayaShan1"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"UdhayaShan1"},"content":" * Checks if the given income value is a valid value.","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"UdhayaShan1"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"UdhayaShan1"},"content":" * @param incomeValue The income value to check.","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"UdhayaShan1"},"content":" * @return True if the income value is greater than or equal to zero, false otherwise.","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"UdhayaShan1"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"UdhayaShan1"},"content":" public static boolean isValidIncome(String incomeValue) {","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"UdhayaShan1"},"content":" return incomeValue.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"UdhayaShan1"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"UdhayaShan1"},"content":" * Returns the string representation of the income value.","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"UdhayaShan1"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"UdhayaShan1"},"content":" * @return The string representation of the income value.","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"UdhayaShan1"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"UdhayaShan1"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"UdhayaShan1"},"content":" public String toString() {","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"UdhayaShan1"},"content":" return incomeValue.toString();","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"UdhayaShan1"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"UdhayaShan1"},"content":" * Returns a string representation of the income value with additional descriptive text.","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"UdhayaShan1"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"UdhayaShan1"},"content":" * @return A string representation with descriptive text.","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"UdhayaShan1"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"UdhayaShan1"},"content":" public String toStringWithRepresentation() {","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"UdhayaShan1"},"content":" return \"Income is $\" + incomeValue;","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"UdhayaShan1"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"UdhayaShan1"},"content":" * Checks if this {@code Income} instance is equal to another object.","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"UdhayaShan1"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"UdhayaShan1"},"content":" * @param other The object to compare with.","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"UdhayaShan1"},"content":" * @return True if the objects are equal, false otherwise.","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"UdhayaShan1"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"UdhayaShan1"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":66,"author":{"gitId":"UdhayaShan1"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"UdhayaShan1"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-11"},{"lineNumber":68,"author":{"gitId":"UdhayaShan1"},"content":" return true; // short circuit if same object","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":70,"author":{"gitId":"UdhayaShan1"},"content":" if (!(other instanceof Income)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":71,"author":{"gitId":"UdhayaShan1"},"content":" return false; // instanceof handles nulls","lastModifiedDate":"2024-03-11"},{"lineNumber":72,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":73,"author":{"gitId":"UdhayaShan1"},"content":" Income otherIncome \u003d (Income) other;","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"UdhayaShan1"},"content":" return incomeValue.equals(otherIncome.incomeValue); // state check","lastModifiedDate":"2024-03-11"},{"lineNumber":75,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":76,"author":{"gitId":"UdhayaShan1"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"UdhayaShan1":75,"wapisai":1}},{"path":"src/main/java/seedu/realodex/model/person/Name.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.model.person;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":" * Represents a Person\u0027s name in realodex.","lastModifiedDate":"2024-03-19"},{"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":"-"},"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":"-"},"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":{"UdhayaShan1":3,"-":64}},{"path":"src/main/java/seedu/realodex/model/person/NameContainsKeyphrasePredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.model.person;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"jyztintan"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"jyztintan"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"jyztintan"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"jyztintan"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"jyztintan"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"jyztintan"},"content":" * Tests that a {@code Person}\u0027s {@code Name} contains the keyphrase given.","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"jyztintan"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"jyztintan"},"content":"public class NameContainsKeyphrasePredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"jyztintan"},"content":" private final String keyphrase;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"jyztintan"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"jyztintan"},"content":" public NameContainsKeyphrasePredicate(String keyphrase) {","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"jyztintan"},"content":" this.keyphrase \u003d keyphrase;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"jyztintan"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"jyztintan"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"jyztintan"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"jyztintan"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"jyztintan"},"content":" String nameInLowerCase \u003d person.getName().fullName.toLowerCase();","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"jyztintan"},"content":" String keyphraseInLowerCase \u003d keyphrase.toLowerCase();","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"jyztintan"},"content":" return nameInLowerCase.contains(keyphraseInLowerCase);","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"jyztintan"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"jyztintan"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"jyztintan"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"jyztintan"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"jyztintan"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"jyztintan"},"content":" return true;","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"jyztintan"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"jyztintan"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"jyztintan"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"jyztintan"},"content":" if (!(other instanceof NameContainsKeyphrasePredicate)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"jyztintan"},"content":" return false;","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"jyztintan"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"jyztintan"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"jyztintan"},"content":" NameContainsKeyphrasePredicate otherNameContainsKeyphrasePredicate \u003d (NameContainsKeyphrasePredicate) other;","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"jyztintan"},"content":" return keyphrase.equals(otherNameContainsKeyphrasePredicate.keyphrase);","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"jyztintan"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"jyztintan"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"jyztintan"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"jyztintan"},"content":" public String toString() {","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"jyztintan"},"content":" return new ToStringBuilder(this).add(\"keyphrase\", keyphrase).toString();","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"jyztintan"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"jyztintan"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"jyztintan":41,"UdhayaShan1":2}},{"path":"src/main/java/seedu/realodex/model/person/Person.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.model.person;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-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":"UdhayaShan1"},"content":"import seedu.realodex.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.remark.Remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.tag.Tag;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"appleraincoat"},"content":" * Represents a Person in the Realodex.","lastModifiedDate":"2024-03-13"},{"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":"UdhayaShan1"},"content":" private final Income income;","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"UdhayaShan1"},"content":" private final Family family;","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":28,"author":{"gitId":"appleraincoat"},"content":" private final Remark remark;","lastModifiedDate":"2024-03-16"},{"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":"appleraincoat"},"content":" public Person(Name name, Phone phone, Income income, Email email, Address address,","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"appleraincoat"},"content":" Family family, Set\u003cTag\u003e tags, Remark remark) {","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"appleraincoat"},"content":" requireAllNonNull(name, phone, income, email, address, family, tags, remark);","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":38,"author":{"gitId":"UdhayaShan1"},"content":" this.income \u003d income;","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20"},{"lineNumber":41,"author":{"gitId":"UdhayaShan1"},"content":" this.family \u003d family;","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":43,"author":{"gitId":"appleraincoat"},"content":" this.remark \u003d remark;","lastModifiedDate":"2024-03-16"},{"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":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"UdhayaShan1"},"content":" public Income getIncome() {","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"UdhayaShan1"},"content":" return income;","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-11"},{"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":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":66,"author":{"gitId":"UdhayaShan1"},"content":" public Family getFamily() {","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"UdhayaShan1"},"content":" return family;","lastModifiedDate":"2024-03-11"},{"lineNumber":68,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"appleraincoat"},"content":" public Remark getRemark() {","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"appleraincoat"},"content":" return remark;","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":73,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07"},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":81,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return true;","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":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19"},{"lineNumber":91,"author":{"gitId":"-"},"content":" \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2020-12-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":101,"author":{"gitId":"-"},"content":" return true;","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":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10"},{"lineNumber":106,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":109,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10"},{"lineNumber":110,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":113,"author":{"gitId":"UdhayaShan1"},"content":" \u0026\u0026 income.equals(otherPerson.income)","lastModifiedDate":"2024-03-11"},{"lineNumber":114,"author":{"gitId":"UdhayaShan1"},"content":" \u0026\u0026 family.equals(otherPerson.family)","lastModifiedDate":"2024-03-11"},{"lineNumber":115,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2024-03-11"},{"lineNumber":116,"author":{"gitId":"appleraincoat"},"content":" \u0026\u0026 tags.equals(otherPerson.tags)","lastModifiedDate":"2024-03-16"},{"lineNumber":117,"author":{"gitId":"appleraincoat"},"content":" \u0026\u0026 remark.equals(otherPerson.remark);","lastModifiedDate":"2024-03-16"},{"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-08-24"},{"lineNumber":121,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":122,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":123,"author":{"gitId":"appleraincoat"},"content":" return Objects.hash(name, phone, income, email, address, family, tags, remark);","lastModifiedDate":"2024-03-16"},{"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-08-24"},{"lineNumber":127,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":128,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":131,"author":{"gitId":"UdhayaShan1"},"content":" .add(\"income\", income)","lastModifiedDate":"2024-03-11"},{"lineNumber":132,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":134,"author":{"gitId":"UdhayaShan1"},"content":" .add(\"family\", family)","lastModifiedDate":"2024-03-11"},{"lineNumber":135,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":136,"author":{"gitId":"appleraincoat"},"content":" .add(\"remark\", remark)","lastModifiedDate":"2024-03-16"},{"lineNumber":137,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":139,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"},{"lineNumber":140,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"UdhayaShan1":22,"-":105,"appleraincoat":13}},{"path":"src/main/java/seedu/realodex/model/person/Phone.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.model.person;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":" * Represents a Person\u0027s phone number in realodex.","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":3,"-":58}},{"path":"src/main/java/seedu/realodex/model/person/UniquePersonList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.model.person;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.exceptions.PersonNotFoundException;","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Adds a person to the list.","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * The person must not already exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void add(Person toAdd) {","lastModifiedDate":"2018-08-07"},{"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":"-"},"content":" * Replaces the person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2017-06-07"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":54,"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":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-07"},{"lineNumber":57,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2018-08-08"},{"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":"-"},"content":" if (!target.isSamePerson(editedPerson) \u0026\u0026 contains(editedPerson)) {","lastModifiedDate":"2018-04-19"},{"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":"-"},"content":" internalList.set(index, editedPerson);","lastModifiedDate":"2018-01-10"},{"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":"-"},"content":" * Removes the equivalent person from the list.","lastModifiedDate":"2016-08-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * The person must exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void remove(Person toRemove) {","lastModifiedDate":"2018-08-07"},{"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":"-"},"content":" public void setPersons(UniquePersonList replacement) {","lastModifiedDate":"2016-10-19"},{"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":"-"},"content":" * Replaces the contents of this list with {@code persons}.","lastModifiedDate":"2018-08-07"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2018-08-07"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void setPersons(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-08-07"},{"lineNumber":92,"author":{"gitId":"-"},"content":" requireAllNonNull(persons);","lastModifiedDate":"2018-01-10"},{"lineNumber":93,"author":{"gitId":"-"},"content":" if (!personsAreUnique(persons)) {","lastModifiedDate":"2018-04-19"},{"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":"-"},"content":" internalList.setAll(persons);","lastModifiedDate":"2018-08-14"},{"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":"-"},"content":" public ObservableList\u003cPerson\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2018-04-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":"-"},"content":" public Iterator\u003cPerson\u003e iterator() {","lastModifiedDate":"2016-08-24"},{"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":"-"},"content":" if (!(other instanceof UniquePersonList)) {","lastModifiedDate":"2023-07-13"},{"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":"-"},"content":" UniquePersonList otherUniquePersonList \u003d (UniquePersonList) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" return internalList.equals(otherUniquePersonList.internalList);","lastModifiedDate":"2023-07-13"},{"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":"-"},"content":" * Returns true if {@code persons} contains only unique persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":140,"author":{"gitId":"-"},"content":" private boolean personsAreUnique(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-04-19"},{"lineNumber":141,"author":{"gitId":"-"},"content":" for (int i \u003d 0; i \u003c persons.size() - 1; i++) {","lastModifiedDate":"2018-04-19"},{"lineNumber":142,"author":{"gitId":"-"},"content":" for (int j \u003d i + 1; j \u003c persons.size(); j++) {","lastModifiedDate":"2018-04-19"},{"lineNumber":143,"author":{"gitId":"-"},"content":" if (persons.get(i).isSamePerson(persons.get(j))) {","lastModifiedDate":"2018-04-19"},{"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":{"UdhayaShan1":4,"-":146}},{"path":"src/main/java/seedu/realodex/model/person/exceptions/DuplicatePersonException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.model.person.exceptions;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Signals that the operation will result in duplicate Persons (Persons are considered duplicates if they have the same","lastModifiedDate":"2018-04-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":" * identity).","lastModifiedDate":"2018-04-19"},{"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":"-"},"content":" super(\"Operation would result in duplicate persons\");","lastModifiedDate":"2017-06-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09"}],"authorContributionMap":{"UdhayaShan1":1,"-":10}},{"path":"src/main/java/seedu/realodex/model/person/exceptions/PersonNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.model.person.exceptions;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Signals that the operation is unable to find the specified person.","lastModifiedDate":"2017-06-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class PersonNotFoundException extends RuntimeException {}","lastModifiedDate":"2018-08-07"}],"authorContributionMap":{"UdhayaShan1":1,"-":5}},{"path":"src/main/java/seedu/realodex/model/remark/Remark.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.model.remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"UdhayaShan1"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"appleraincoat"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"UdhayaShan1"},"content":" * Represents a remark in realodex.","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"appleraincoat"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"appleraincoat"},"content":"public class Remark {","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"appleraincoat"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Remarks should be non-empty\";","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"appleraincoat"},"content":" public final String remarkName;","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"appleraincoat"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"appleraincoat"},"content":" * Constructs a {@code Remark}.","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"appleraincoat"},"content":" *","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"appleraincoat"},"content":" * @param remarkName A valid remark.","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"appleraincoat"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"appleraincoat"},"content":" public Remark(String remarkName) {","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"UdhayaShan1"},"content":" requireNonNull(remarkName);","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"appleraincoat"},"content":" this.remarkName \u003d remarkName;","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"UdhayaShan1"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"UdhayaShan1"},"content":" * Validates if the given string is a valid remark. In the current implementation (as of v1.2),","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"UdhayaShan1"},"content":" * this method does not perform any actual validation checks and will always return true.","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"UdhayaShan1"},"content":" * This is a placeholder implementation and may change in future versions.","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"UdhayaShan1"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"UdhayaShan1"},"content":" * @param test the string to be validated as a remark. Cannot be null.","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"UdhayaShan1"},"content":" * @return always true in the current version.","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"UdhayaShan1"},"content":" * @throws NullPointerException if the test parameter is null.","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"UdhayaShan1"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"UdhayaShan1"},"content":" public static boolean isValidRemark(String test) {","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"UdhayaShan1"},"content":" requireNonNull(test);","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"UdhayaShan1"},"content":" return true;","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"appleraincoat"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"appleraincoat"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"appleraincoat"},"content":" return true;","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"appleraincoat"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"appleraincoat"},"content":" if (!(other instanceof Remark)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"appleraincoat"},"content":" return false;","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"appleraincoat"},"content":" Remark otherRemark \u003d (Remark) other;","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"appleraincoat"},"content":" return remarkName.equals(otherRemark.remarkName);","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"appleraincoat"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"appleraincoat"},"content":" return remarkName.hashCode();","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"appleraincoat"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"appleraincoat"},"content":" * Format state as text for viewing.","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"appleraincoat"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"appleraincoat"},"content":" public String toString() {","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"appleraincoat"},"content":" return remarkName;","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"appleraincoat"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"appleraincoat"},"content":" * Format state as text for representation.","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"appleraincoat"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"appleraincoat"},"content":" public String toStringWithRepresentation() {","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"appleraincoat"},"content":" if (remarkName.isBlank()) {","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"appleraincoat"},"content":" return \"No remark.\";","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"appleraincoat"},"content":" } else {","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"appleraincoat"},"content":" return \"Remark: \" + remarkName;","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"appleraincoat"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"UdhayaShan1":19,"appleraincoat":57}},{"path":"src/main/java/seedu/realodex/model/tag/Tag.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.model.tag;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":" * Represents a Tag in the realodex.","lastModifiedDate":"2024-03-19"},{"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":"4llysa"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Tags names should be either \u0027buyer\u0027 or \u0027seller\u0027\";","lastModifiedDate":"2024-03-16"},{"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":"4llysa"},"content":" public final Role tagName;","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"4llysa"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"4llysa"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"4llysa"},"content":" * Enumeration of Roles that a Person can take on","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"4llysa"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"4llysa"},"content":" public enum Role {","lastModifiedDate":"2024-03-15"},{"lineNumber":21,"author":{"gitId":"4llysa"},"content":" BUYER(\"Buyer\"),","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"4llysa"},"content":" SELLER(\"Seller\");","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"4llysa"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"4llysa"},"content":" private String roleName;","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"4llysa"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"4llysa"},"content":" // Constructor for the enum to set the custom role name","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"4llysa"},"content":" Role(String roleName) {","lastModifiedDate":"2024-03-15"},{"lineNumber":28,"author":{"gitId":"4llysa"},"content":" this.roleName \u003d roleName;","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"4llysa"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"4llysa"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":31,"author":{"gitId":"4llysa"},"content":" // Overriding the toString method to return the custom role name","lastModifiedDate":"2024-03-15"},{"lineNumber":32,"author":{"gitId":"4llysa"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"4llysa"},"content":" public String toString() {","lastModifiedDate":"2024-03-15"},{"lineNumber":34,"author":{"gitId":"4llysa"},"content":" return this.roleName;","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"4llysa"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":36,"author":{"gitId":"4llysa"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Constructs a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":40,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * @param tagName A valid tag name.","lastModifiedDate":"2017-05-30"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public Tag(String tagName) {","lastModifiedDate":"2017-05-30"},{"lineNumber":44,"author":{"gitId":"-"},"content":" requireNonNull(tagName);","lastModifiedDate":"2017-05-30"},{"lineNumber":45,"author":{"gitId":"-"},"content":" checkArgument(isValidTagName(tagName), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":46,"author":{"gitId":"4llysa"},"content":" this.tagName \u003d Role.valueOf(tagName.toUpperCase());","lastModifiedDate":"2024-03-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid tag name.","lastModifiedDate":"2016-09-22"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static boolean isValidTagName(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"4llysa"},"content":" try {","lastModifiedDate":"2024-03-15"},{"lineNumber":54,"author":{"gitId":"4llysa"},"content":" Role.valueOf(test.toUpperCase());","lastModifiedDate":"2024-03-15"},{"lineNumber":55,"author":{"gitId":"4llysa"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-03-15"},{"lineNumber":56,"author":{"gitId":"4llysa"},"content":" return false;","lastModifiedDate":"2024-03-15"},{"lineNumber":57,"author":{"gitId":"4llysa"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" if (!(other instanceof Tag)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return false;","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":" Tag otherTag \u003d (Tag) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":73,"author":{"gitId":"4llysa"},"content":" return tagName.roleName.equals(otherTag.tagName.roleName);","lastModifiedDate":"2024-03-15"},{"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":"2016-08-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return tagName.hashCode();","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":"-"},"content":" * Format state as text for viewing.","lastModifiedDate":"2016-08-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":85,"author":{"gitId":"4llysa"},"content":" return \u0027[\u0027 + tagName.toString() + \u0027]\u0027;","lastModifiedDate":"2024-03-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"4llysa":31,"UdhayaShan1":3,"-":54}},{"path":"src/main/java/seedu/realodex/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.model.util;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.model.ReadOnlyRealodex;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.Realodex;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Address;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Email;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Family;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Income;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.remark.Remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.tag.Tag;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":20,"author":{"gitId":"UdhayaShan1"},"content":" * Contains utility methods for populating {@code Realodex} with sample data.","lastModifiedDate":"2024-03-19"},{"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":"-"},"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":"UdhayaShan1"},"content":" new Person(new Name(\"Alex Yeoh\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"UdhayaShan1"},"content":" new Phone(\"87438807\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"UdhayaShan1"},"content":" new Income(\"1000\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"UdhayaShan1"},"content":" new Email(\"alexyeoh@example\" + \".com\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"UdhayaShan1"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"UdhayaShan1"},"content":" new Family(\"20\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"appleraincoat"},"content":" getTagSet(\"Buyer\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"appleraincoat"},"content":" new Remark(\"Has 3 cats.\")),","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"UdhayaShan1"},"content":" new Person(new Name(\"Bernice Yu\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"UdhayaShan1"},"content":" new Phone(\"99272758\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"UdhayaShan1"},"content":" new Income(\"1000\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"UdhayaShan1"},"content":" new Email(\"berniceyu\" + \"@example.com\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"UdhayaShan1"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"UdhayaShan1"},"content":" new Family(\"20\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"appleraincoat"},"content":" getTagSet(\"buyer\", \"seller\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"appleraincoat"},"content":" new Remark(\"Eats alot\")),","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"UdhayaShan1"},"content":" new Person(new Name(\"Charlotte Oliveiro\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"UdhayaShan1"},"content":" new Phone(\"93210283\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"UdhayaShan1"},"content":" new Income(\"1000\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"UdhayaShan1"},"content":" new Email(\"charlotte@example.com\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"UdhayaShan1"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"UdhayaShan1"},"content":" new Family(\"20\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"appleraincoat"},"content":" getTagSet(\"buyer\", \"seller\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"appleraincoat"},"content":" new Remark(\"Weighs 500kg\")),","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"UdhayaShan1"},"content":" new Person(new Name(\"David Li\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"UdhayaShan1"},"content":" new Phone(\"91031282\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"UdhayaShan1"},"content":" new Income(\"1000\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"UdhayaShan1"},"content":" new Email(\"lidavid@example\" + \".com\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"UdhayaShan1"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"UdhayaShan1"},"content":" new Family(\"20\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"appleraincoat"},"content":" getTagSet(\"seller\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"appleraincoat"},"content":" new Remark(\"Broke his back deadlifting\")),","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"UdhayaShan1"},"content":" new Person(new Name(\"Irfan Ibrahim\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"UdhayaShan1"},"content":" new Phone(\"92492021\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"UdhayaShan1"},"content":" new Income(\"1000\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"UdhayaShan1"},"content":" new Email(\"irfan@example\" + \".com\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"UdhayaShan1"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"UdhayaShan1"},"content":" new Family(\"20\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"appleraincoat"},"content":" getTagSet(\"BUYER\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"appleraincoat"},"content":" new Remark(\"Likes to eat nasi lemak after finishing v1.2\")),","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"UdhayaShan1"},"content":" new Person(new Name(\"Roy Balakrishnan\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":66,"author":{"gitId":"UdhayaShan1"},"content":" new Phone(\"92624417\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"UdhayaShan1"},"content":" new Income(\"1000\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":68,"author":{"gitId":"UdhayaShan1"},"content":" new Email(\"royb\" + \"@example.com\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"UdhayaShan1"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":70,"author":{"gitId":"UdhayaShan1"},"content":" new Family(\"20\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":71,"author":{"gitId":"appleraincoat"},"content":" getTagSet(\"buyer\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"appleraincoat"},"content":" new Remark(\"Is a mommy\u0027s boy.\"))","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":76,"author":{"gitId":"UdhayaShan1"},"content":" public static ReadOnlyRealodex getSampleRealodex() {","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"UdhayaShan1"},"content":" Realodex sampleAb \u003d new Realodex();","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20"},{"lineNumber":79,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14"},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30"},{"lineNumber":88,"author":{"gitId":"4llysa"},"content":" Set\u003cTag\u003e s \u003d Arrays.stream(strings)","lastModifiedDate":"2024-03-15"},{"lineNumber":89,"author":{"gitId":"4llysa"},"content":" .filter(Tag::isValidTagName)","lastModifiedDate":"2024-03-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21"},{"lineNumber":91,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21"},{"lineNumber":92,"author":{"gitId":"4llysa"},"content":" return s;","lastModifiedDate":"2024-03-15"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"4llysa":3,"UdhayaShan1":51,"-":28,"appleraincoat":12}},{"path":"src/main/java/seedu/realodex/storage/JsonAdaptedPerson.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.storage;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import java.util.Objects;","lastModifiedDate":"2024-03-17"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Address;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Email;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Family;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Income;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.remark.Remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.tag.Tag;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" private final String income;","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"UdhayaShan1"},"content":" private final String family;","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09"},{"lineNumber":38,"author":{"gitId":"appleraincoat"},"content":" private final String remark;","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"UdhayaShan1"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name,","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"UdhayaShan1"},"content":" @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"UdhayaShan1"},"content":" @JsonProperty(\"income\") String income,","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"UdhayaShan1"},"content":" @JsonProperty(\"email\") String email,","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"UdhayaShan1"},"content":" @JsonProperty(\"address\") String address,","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"UdhayaShan1"},"content":" @JsonProperty(\"family\") String family,","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"appleraincoat"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags,","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"appleraincoat"},"content":" @JsonProperty(\"remark\") String remark) {","lastModifiedDate":"2024-03-16"},{"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":"UdhayaShan1"},"content":" this.income \u003d income;","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"UdhayaShan1"},"content":" this.family \u003d family;","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09"},{"lineNumber":59,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"UdhayaShan1"},"content":" this.remark \u003d Objects.requireNonNullElse(remark, \"\");","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"UdhayaShan1"},"content":" income \u003d source.getIncome().toString();","lastModifiedDate":"2024-03-11"},{"lineNumber":71,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"UdhayaShan1"},"content":" family \u003d source.getFamily().toString();","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09"},{"lineNumber":75,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"appleraincoat"},"content":" remark \u003d source.getRemark().toString();","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","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":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09"},{"lineNumber":88,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"UdhayaShan1"},"content":" if (income \u003d\u003d null) {","lastModifiedDate":"2024-03-11"},{"lineNumber":108,"author":{"gitId":"UdhayaShan1"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Income.class.getSimpleName()));","lastModifiedDate":"2024-03-11"},{"lineNumber":109,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":110,"author":{"gitId":"UdhayaShan1"},"content":" if (!Income.isValidIncome(income)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":111,"author":{"gitId":"UdhayaShan1"},"content":" throw new IllegalValueException(Income.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-11"},{"lineNumber":112,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":113,"author":{"gitId":"UdhayaShan1"},"content":" final Income modelIncome \u003d new Income(income);","lastModifiedDate":"2024-03-11"},{"lineNumber":114,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-11"},{"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":"UdhayaShan1"},"content":" if (family \u003d\u003d null) {","lastModifiedDate":"2024-03-11"},{"lineNumber":132,"author":{"gitId":"UdhayaShan1"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Family.class.getSimpleName()));","lastModifiedDate":"2024-03-11"},{"lineNumber":133,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":134,"author":{"gitId":"UdhayaShan1"},"content":" if (!Family.isValidFamily(family)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":135,"author":{"gitId":"UdhayaShan1"},"content":" throw new IllegalValueException(Family.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":136,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":137,"author":{"gitId":"UdhayaShan1"},"content":" final Family modelFamily \u003d new Family(family);","lastModifiedDate":"2024-03-11"},{"lineNumber":138,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":139,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":141,"author":{"gitId":"appleraincoat"},"content":" final Remark modelRemark \u003d new Remark(remark);","lastModifiedDate":"2024-03-16"},{"lineNumber":142,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":143,"author":{"gitId":"appleraincoat"},"content":" return new Person(modelName, modelPhone, modelIncome, modelEmail, modelAddress, modelFamily,","lastModifiedDate":"2024-03-16"},{"lineNumber":144,"author":{"gitId":"appleraincoat"},"content":" modelTags, modelRemark);","lastModifiedDate":"2024-03-16"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":146,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"UdhayaShan1":41,"-":97,"appleraincoat":8}},{"path":"src/main/java/seedu/realodex/storage/JsonAdaptedTag.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.storage;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.tag.Tag;","lastModifiedDate":"2024-03-19"},{"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":"4llysa"},"content":" tagName \u003d source.tagName.toString();","lastModifiedDate":"2024-03-15"},{"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":{"4llysa":1,"UdhayaShan1":3,"-":44}},{"path":"src/main/java/seedu/realodex/storage/JsonRealodexStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.storage;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.io.IOException;","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.util.Optional;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.LogsCenter;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.util.FileUtil;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.util.JsonUtil;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.ReadOnlyRealodex;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"UdhayaShan1"},"content":" * A class to access Realodex data stored as a json file on the hard disk.","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"UdhayaShan1"},"content":"public class JsonRealodexStorage implements RealodexStorage {","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"UdhayaShan1"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(JsonRealodexStorage.class);","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private Path filePath;","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"UdhayaShan1"},"content":" public JsonRealodexStorage(Path filePath) {","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"UdhayaShan1"},"content":" public Path getRealodexFilePath() {","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" return filePath;","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":" @Override","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"UdhayaShan1"},"content":" public Optional\u003cReadOnlyRealodex\u003e readRealodex() throws DataLoadingException {","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"UdhayaShan1"},"content":" return readRealodex(filePath);","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" * Similar to {@link #readRealodex()}.","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2023-06-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"UdhayaShan1"},"content":" public Optional\u003cReadOnlyRealodex\u003e readRealodex(Path filePath) throws DataLoadingException {","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"-"},"content":" requireNonNull(filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"UdhayaShan1"},"content":" Optional\u003cJsonSerializableRealodex\u003e jsonRealodex \u003d JsonUtil.readJsonFile(","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"UdhayaShan1"},"content":" filePath, JsonSerializableRealodex.class);","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"UdhayaShan1"},"content":" if (!jsonRealodex.isPresent()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"UdhayaShan1"},"content":" return Optional.of(jsonRealodex.get().toModelType());","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" logger.info(\"Illegal values found in \" + filePath + \": \" + ive.getMessage());","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" throw new DataLoadingException(ive);","lastModifiedDate":"2023-06-14"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"UdhayaShan1"},"content":" public void saveRealodex(ReadOnlyRealodex realodex) throws IOException {","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"UdhayaShan1"},"content":" saveRealodex(realodex, filePath);","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" * Similar to {@link #saveRealodex(ReadOnlyRealodex)}.","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"UdhayaShan1"},"content":" public void saveRealodex(ReadOnlyRealodex realodex, Path filePath) throws IOException {","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"UdhayaShan1"},"content":" requireNonNull(realodex);","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" requireNonNull(filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" FileUtil.createIfMissing(filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"UdhayaShan1"},"content":" JsonUtil.saveJsonFile(new JsonSerializableRealodex(realodex), filePath);","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"UdhayaShan1":26,"-":53}},{"path":"src/main/java/seedu/realodex/storage/JsonSerializableRealodex.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.storage;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.ReadOnlyRealodex;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.Realodex;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"UdhayaShan1"},"content":" * An Immutable Realodex that is serializable to JSON format.","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"UdhayaShan1"},"content":"@JsonRootName(value \u003d \"realodex\")","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"UdhayaShan1"},"content":"class JsonSerializableRealodex {","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"Persons list contains duplicate person(s).\";","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedPerson\u003e persons \u003d new ArrayList\u003c\u003e();","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":"UdhayaShan1"},"content":" * Constructs a {@code JsonSerializableRealodex} with the given persons.","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"UdhayaShan1"},"content":" public JsonSerializableRealodex(@JsonProperty(\"persons\") List\u003cJsonAdaptedPerson\u003e persons) {","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" * Converts a given {@code ReadOnlyRealodex} into this class for Jackson use.","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"UdhayaShan1"},"content":" * @param source future changes to this will not affect the created {@code JsonSerializableRealodex}.","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"UdhayaShan1"},"content":" public JsonSerializableRealodex(ReadOnlyRealodex source) {","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" persons.addAll(source.getPersonList().stream().map(JsonAdaptedPerson::new).collect(Collectors.toList()));","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":"UdhayaShan1"},"content":" * Converts this realodex into the model\u0027s {@code Realodex} object.","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" public Realodex toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"UdhayaShan1"},"content":" Realodex realodex \u003d new Realodex();","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" for (JsonAdaptedPerson jsonAdaptedPerson : persons) {","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" Person person \u003d jsonAdaptedPerson.toModelType();","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"UdhayaShan1"},"content":" if (realodex.hasPerson(person)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"UdhayaShan1"},"content":" realodex.addPerson(person);","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"UdhayaShan1"},"content":" return realodex;","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":19,"-":41}},{"path":"src/main/java/seedu/realodex/storage/JsonUserPrefsStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.storage;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.util.JsonUtil;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.UserPrefs;","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":5,"-":42}},{"path":"src/main/java/seedu/realodex/storage/RealodexStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.storage;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.ReadOnlyRealodex;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.Realodex;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-24"},{"lineNumber":12,"author":{"gitId":"UdhayaShan1"},"content":" * Represents a storage for {@link Realodex}.","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":14,"author":{"gitId":"UdhayaShan1"},"content":"public interface RealodexStorage {","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Returns the file path of the data file.","lastModifiedDate":"2016-09-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":19,"author":{"gitId":"UdhayaShan1"},"content":" Path getRealodexFilePath();","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-24"},{"lineNumber":22,"author":{"gitId":"UdhayaShan1"},"content":" * Returns Realodex data as a {@link ReadOnlyRealodex}.","lastModifiedDate":"2024-03-19"},{"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 loading the data from storage failed.","lastModifiedDate":"2023-06-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":27,"author":{"gitId":"UdhayaShan1"},"content":" Optional\u003cReadOnlyRealodex\u003e readRealodex() throws DataLoadingException;","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-01"},{"lineNumber":30,"author":{"gitId":"UdhayaShan1"},"content":" * @see #getRealodexFilePath()","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-01"},{"lineNumber":32,"author":{"gitId":"UdhayaShan1"},"content":" Optional\u003cReadOnlyRealodex\u003e readRealodex(Path filePath) throws DataLoadingException;","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-24"},{"lineNumber":35,"author":{"gitId":"UdhayaShan1"},"content":" * Saves the given {@link ReadOnlyRealodex} to the storage.","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"UdhayaShan1"},"content":" * @param realodex cannot be null.","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @throws IOException if there was any problem writing to the file.","lastModifiedDate":"2016-09-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":39,"author":{"gitId":"UdhayaShan1"},"content":" void saveRealodex(ReadOnlyRealodex realodex) throws IOException;","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-01"},{"lineNumber":42,"author":{"gitId":"UdhayaShan1"},"content":" * @see #saveRealodex(ReadOnlyRealodex)","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-01"},{"lineNumber":44,"author":{"gitId":"UdhayaShan1"},"content":" void saveRealodex(ReadOnlyRealodex realodex, Path filePath) throws IOException;","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-24"}],"authorContributionMap":{"UdhayaShan1":16,"-":30}},{"path":"src/main/java/seedu/realodex/storage/Storage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.storage;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.ReadOnlyRealodex;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.UserPrefs;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"public interface Storage extends RealodexStorage, UserPrefsStorage {","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" Path getRealodexFilePath();","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":27,"author":{"gitId":"UdhayaShan1"},"content":" Optional\u003cReadOnlyRealodex\u003e readRealodex() throws DataLoadingException;","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":30,"author":{"gitId":"UdhayaShan1"},"content":" void saveRealodex(ReadOnlyRealodex realodex) throws IOException;","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"UdhayaShan1":9,"-":23}},{"path":"src/main/java/seedu/realodex/storage/StorageManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.storage;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.LogsCenter;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.ReadOnlyRealodex;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.UserPrefs;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"UdhayaShan1"},"content":" * Manages storage of Realodex data in local storage.","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" private RealodexStorage realodexStorage;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private UserPrefsStorage userPrefsStorage;","lastModifiedDate":"2016-10-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":24,"author":{"gitId":"UdhayaShan1"},"content":" * Creates a {@code StorageManager} with the given {@code RealodexStorage} and {@code UserPrefStorage}.","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":26,"author":{"gitId":"UdhayaShan1"},"content":" public StorageManager(RealodexStorage realodexStorage, UserPrefsStorage userPrefsStorage) {","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"UdhayaShan1"},"content":" this.realodexStorage \u003d realodexStorage;","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" this.userPrefsStorage \u003d userPrefsStorage;","lastModifiedDate":"2016-10-01"},{"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":"UdhayaShan1"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Realodex 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":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":52,"author":{"gitId":"UdhayaShan1"},"content":" public Path getRealodexFilePath() {","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"UdhayaShan1"},"content":" return realodexStorage.getRealodexFilePath();","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" public Optional\u003cReadOnlyRealodex\u003e readRealodex() throws DataLoadingException {","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"UdhayaShan1"},"content":" return readRealodex(realodexStorage.getRealodexFilePath());","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" public Optional\u003cReadOnlyRealodex\u003e readRealodex(Path filePath) throws DataLoadingException {","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" logger.fine(\"Attempting to read data from file: \" + filePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":64,"author":{"gitId":"UdhayaShan1"},"content":" return realodexStorage.readRealodex(filePath);","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" public void saveRealodex(ReadOnlyRealodex realodex) throws IOException {","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"UdhayaShan1"},"content":" saveRealodex(realodex, realodexStorage.getRealodexFilePath());","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" public void saveRealodex(ReadOnlyRealodex realodex, Path filePath) throws IOException {","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" logger.fine(\"Attempting to write to data file: \" + filePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":75,"author":{"gitId":"UdhayaShan1"},"content":" realodexStorage.saveRealodex(realodex, filePath);","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":22,"-":56}},{"path":"src/main/java/seedu/realodex/storage/UserPrefsStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.storage;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.UserPrefs;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-24"},{"lineNumber":12,"author":{"gitId":"UdhayaShan1"},"content":" * Represents a storage for {@link seedu.realodex.model.UserPrefs}.","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" * Saves the given {@link seedu.realodex.model.ReadOnlyUserPrefs} to the storage.","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":6,"-":30}},{"path":"src/main/java/seedu/realodex/ui/CommandBox.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.ui;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.CommandResult;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * The UI component that is responsible for receiving user command inputs.","lastModifiedDate":"2017-08-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class CommandBox extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String ERROR_STYLE_CLASS \u003d \"error\";","lastModifiedDate":"2017-02-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"CommandBox.fxml\";","lastModifiedDate":"2017-04-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private final CommandExecutor commandExecutor;","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-14"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private TextField commandTextField;","lastModifiedDate":"2016-09-14"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Creates a {@code CommandBox} with the given {@code CommandExecutor}.","lastModifiedDate":"2020-05-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public CommandBox(CommandExecutor commandExecutor) {","lastModifiedDate":"2019-01-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" this.commandExecutor \u003d commandExecutor;","lastModifiedDate":"2018-12-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // calls #setStyleToDefault() whenever there is a change to the text of the command box.","lastModifiedDate":"2017-06-28"},{"lineNumber":31,"author":{"gitId":"-"},"content":" commandTextField.textProperty().addListener((unused1, unused2, unused3) -\u003e setStyleToDefault());","lastModifiedDate":"2017-06-28"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Handles the Enter button pressed event.","lastModifiedDate":"2017-08-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private void handleCommandEntered() {","lastModifiedDate":"2018-04-01"},{"lineNumber":39,"author":{"gitId":"-"},"content":" String commandText \u003d commandTextField.getText();","lastModifiedDate":"2020-12-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":" if (commandText.equals(\"\")) {","lastModifiedDate":"2020-12-04"},{"lineNumber":41,"author":{"gitId":"-"},"content":" return;","lastModifiedDate":"2020-12-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-12-04"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-12-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-02-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" commandExecutor.execute(commandText);","lastModifiedDate":"2020-12-04"},{"lineNumber":46,"author":{"gitId":"-"},"content":" commandTextField.setText(\"\");","lastModifiedDate":"2016-09-14"},{"lineNumber":47,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2017-03-11"},{"lineNumber":48,"author":{"gitId":"-"},"content":" setStyleToIndicateCommandFailure();","lastModifiedDate":"2017-02-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-14"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-28"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Sets the command box style to use the default style.","lastModifiedDate":"2017-06-28"},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28"},{"lineNumber":55,"author":{"gitId":"-"},"content":" private void setStyleToDefault() {","lastModifiedDate":"2017-06-28"},{"lineNumber":56,"author":{"gitId":"-"},"content":" commandTextField.getStyleClass().remove(ERROR_STYLE_CLASS);","lastModifiedDate":"2017-02-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-28"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Sets the command box style to indicate a failed command.","lastModifiedDate":"2017-02-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28"},{"lineNumber":62,"author":{"gitId":"-"},"content":" private void setStyleToIndicateCommandFailure() {","lastModifiedDate":"2017-02-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" ObservableList\u003cString\u003e styleClass \u003d commandTextField.getStyleClass();","lastModifiedDate":"2017-03-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" if (styleClass.contains(ERROR_STYLE_CLASS)) {","lastModifiedDate":"2017-03-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return;","lastModifiedDate":"2017-03-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" styleClass.add(ERROR_STYLE_CLASS);","lastModifiedDate":"2017-03-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Represents a function that can execute commands.","lastModifiedDate":"2018-12-09"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @FunctionalInterface","lastModifiedDate":"2018-12-09"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public interface CommandExecutor {","lastModifiedDate":"2018-12-09"},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":79,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":80,"author":{"gitId":"UdhayaShan1"},"content":" * @see seedu.realodex.logic.Logic#execute(String)","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":82,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2018-12-09"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":85,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"}],"authorContributionMap":{"UdhayaShan1":5,"-":80}},{"path":"src/main/java/seedu/realodex/ui/HelpWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.ui;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.AddCommand.MESSAGE_ADD_HELP;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.ClearCommand.MESSAGE_CLEAR_HELP;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.DeleteCommand.MESSAGE_DELETE_HELP;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.EditCommand.MESSAGE_EDIT_HELP;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.ExitCommand.MESSAGE_EXIT_HELP;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.FilterCommand.MESSAGE_FIND_HELP;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.ListCommand.MESSAGE_LIST_HELP;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-12-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2019-08-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2019-08-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import javafx.scene.input.Clipboard;","lastModifiedDate":"2019-08-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import javafx.scene.input.ClipboardContent;","lastModifiedDate":"2019-08-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":19,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.LogsCenter;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Controller for a help page","lastModifiedDate":"2016-08-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class HelpWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-12-01"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":26,"author":{"gitId":"appleraincoat"},"content":" public static final String USERGUIDE_URL \u003d \"https://ay2324s2-cs2103t-w10-1.github.io/tp/\";","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"appleraincoat"},"content":" public static final String HELP_MESSAGE \u003d \"For more information, you may refer to the user guide: \"","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"appleraincoat"},"content":" + \"\\n\" + USERGUIDE_URL;","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(HelpWindow.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"HelpWindow.fxml\";","lastModifiedDate":"2016-09-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-12-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Button copyButton;","lastModifiedDate":"2019-08-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private Label helpMessage;","lastModifiedDate":"2019-08-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-12-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * @param root Stage to use as the root of the HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public HelpWindow(Stage root) {","lastModifiedDate":"2017-12-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":" super(FXML, root);","lastModifiedDate":"2017-12-01"},{"lineNumber":46,"author":{"gitId":"appleraincoat"},"content":" helpMessage.setText(MESSAGE_ADD_HELP + \"\\n\"","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"appleraincoat"},"content":" + MESSAGE_DELETE_HELP + \"\\n\"","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"appleraincoat"},"content":" + MESSAGE_CLEAR_HELP + \"\\n\"","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"appleraincoat"},"content":" + MESSAGE_EDIT_HELP + \"\\n\"","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"appleraincoat"},"content":" + MESSAGE_LIST_HELP + \"\\n\"","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"appleraincoat"},"content":" + MESSAGE_FIND_HELP + \"\\n\"","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"appleraincoat"},"content":" + MESSAGE_EXIT_HELP + \"\\n\"","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"appleraincoat"},"content":" + HELP_MESSAGE);","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public HelpWindow() {","lastModifiedDate":"2017-12-01"},{"lineNumber":60,"author":{"gitId":"-"},"content":" this(new Stage());","lastModifiedDate":"2017-12-01"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-01"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-01"},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Shows the help window.","lastModifiedDate":"2017-08-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * @throws IllegalStateException","lastModifiedDate":"2017-08-16"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * \u003cul\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * if this method is called on a thread other than the JavaFX Application Thread.","lastModifiedDate":"2017-08-16"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * if this method is called during animation or layout processing.","lastModifiedDate":"2017-08-16"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * if this method is called on the primary stage.","lastModifiedDate":"2017-08-16"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * if {@code dialogStage} is already showing.","lastModifiedDate":"2017-08-16"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * \u003c/ul\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void show() {","lastModifiedDate":"2016-08-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":" logger.fine(\"Showing help page about the application.\");","lastModifiedDate":"2016-12-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":" getRoot().show();","lastModifiedDate":"2018-02-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" getRoot().centerOnScreen();","lastModifiedDate":"2019-08-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * Returns true if the help window is currently being shown.","lastModifiedDate":"2018-03-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public boolean isShowing() {","lastModifiedDate":"2018-03-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":" return getRoot().isShowing();","lastModifiedDate":"2018-03-15"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-08"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * Hides the help window.","lastModifiedDate":"2018-12-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void hide() {","lastModifiedDate":"2018-12-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" getRoot().hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Focuses on the help window.","lastModifiedDate":"2018-03-15"},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public void focus() {","lastModifiedDate":"2018-03-15"},{"lineNumber":105,"author":{"gitId":"-"},"content":" getRoot().requestFocus();","lastModifiedDate":"2018-03-15"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":108,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-08-19"},{"lineNumber":109,"author":{"gitId":"-"},"content":" * Copies the URL to the user guide to the clipboard.","lastModifiedDate":"2019-08-19"},{"lineNumber":110,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-08-19"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":112,"author":{"gitId":"-"},"content":" private void copyUrl() {","lastModifiedDate":"2019-08-19"},{"lineNumber":113,"author":{"gitId":"-"},"content":" final Clipboard clipboard \u003d Clipboard.getSystemClipboard();","lastModifiedDate":"2019-08-19"},{"lineNumber":114,"author":{"gitId":"-"},"content":" final ClipboardContent url \u003d new ClipboardContent();","lastModifiedDate":"2019-08-19"},{"lineNumber":115,"author":{"gitId":"-"},"content":" url.putString(USERGUIDE_URL);","lastModifiedDate":"2019-08-19"},{"lineNumber":116,"author":{"gitId":"-"},"content":" clipboard.setContent(url);","lastModifiedDate":"2019-08-19"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-08-19"},{"lineNumber":118,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"UdhayaShan1":9,"-":98,"appleraincoat":11}},{"path":"src/main/java/seedu/realodex/ui/MainWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.ui;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.GuiSettings;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.LogsCenter;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.Logic;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.CommandResult;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-19"},{"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":"-"},"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":"-"},"content":" private StackPane personListPanelPlaceholder;","lastModifiedDate":"2017-05-09"},{"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":"-"},"content":" personListPanel \u003d new PersonListPanel(logic.getFilteredPersonList());","lastModifiedDate":"2019-01-25"},{"lineNumber":114,"author":{"gitId":"-"},"content":" personListPanelPlaceholder.getChildren().add(personListPanel.getRoot());","lastModifiedDate":"2017-06-14"},{"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":"UdhayaShan1"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getRealodexFilePath());","lastModifiedDate":"2024-03-19"},{"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":" public PersonListPanel getPersonListPanel() {","lastModifiedDate":"2016-08-25"},{"lineNumber":167,"author":{"gitId":"-"},"content":" return personListPanel;","lastModifiedDate":"2018-08-14"},{"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":"UdhayaShan1"},"content":" * @see seedu.realodex.logic.Logic#execute(String)","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":9,"-":187}},{"path":"src/main/java/seedu/realodex/ui/PersonCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.ui;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Person;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on Realodex level 4\u003c/a\u003e","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" private Label income;","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"UdhayaShan1"},"content":" @FXML","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private Label address;","lastModifiedDate":"2016-09-21"},{"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":"UdhayaShan1"},"content":" private Label family;","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"UdhayaShan1"},"content":" @FXML","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18"},{"lineNumber":47,"author":{"gitId":"appleraincoat"},"content":" @FXML","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"appleraincoat"},"content":" private Label remark;","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":59,"author":{"gitId":"UdhayaShan1"},"content":" income.setText(person.getIncome().toStringWithRepresentation());","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"-"},"content":" address.setText(person.getAddress().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":61,"author":{"gitId":"UdhayaShan1"},"content":" family.setText(person.getFamily().toStringWithRepresentation());","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":" person.getTags().stream()","lastModifiedDate":"2019-01-02"},{"lineNumber":64,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02"},{"lineNumber":65,"author":{"gitId":"4llysa"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName.toString())));","lastModifiedDate":"2024-03-15"},{"lineNumber":66,"author":{"gitId":"appleraincoat"},"content":" remark.setText(person.getRemark().toStringWithRepresentation());","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"4llysa":1,"UdhayaShan1":9,"-":55,"appleraincoat":3}},{"path":"src/main/java/seedu/realodex/ui/PersonListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.ui;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.LogsCenter;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Panel containing the list of persons.","lastModifiedDate":"2016-09-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class PersonListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListPanel.fxml\";","lastModifiedDate":"2016-09-14"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(PersonListPanel.class);","lastModifiedDate":"2017-04-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private ListView\u003cPerson\u003e personListView;","lastModifiedDate":"2018-02-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Creates a {@code PersonListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2020-05-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public PersonListPanel(ObservableList\u003cPerson\u003e personList) {","lastModifiedDate":"2019-01-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" personListView.setItems(personList);","lastModifiedDate":"2018-02-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" personListView.setCellFactory(listView -\u003e new PersonListViewCell());","lastModifiedDate":"2016-08-18"},{"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":"-"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Person} using a {@code PersonCard}.","lastModifiedDate":"2018-02-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" class PersonListViewCell extends ListCell\u003cPerson\u003e {","lastModifiedDate":"2018-02-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" protected void updateItem(Person person, boolean empty) {","lastModifiedDate":"2018-02-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" super.updateItem(person, empty);","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" if (empty || person \u003d\u003d null) {","lastModifiedDate":"2016-09-21"},{"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":"-"},"content":" setGraphic(new PersonCard(person, getIndex() + 1).getRoot());","lastModifiedDate":"2018-02-08"},{"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":{"UdhayaShan1":3,"-":46}},{"path":"src/main/java/seedu/realodex/ui/ResultDisplay.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.ui;","lastModifiedDate":"2024-03-19"},{"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-08-18"}],"authorContributionMap":{"UdhayaShan1":1,"-":26}},{"path":"src/main/java/seedu/realodex/ui/StatusBarFooter.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.ui;","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":" * Creates a {@code StatusBarFooter} with the given {@code Path}.","lastModifiedDate":"2020-05-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public StatusBarFooter(Path saveLocation) {","lastModifiedDate":"2019-01-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2017-04-01"},{"lineNumber":25,"author":{"gitId":"-"},"content":" saveLocationStatus.setText(Paths.get(\".\").resolve(saveLocation).toString());","lastModifiedDate":"2018-12-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-01"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"UdhayaShan1":1,"-":27}},{"path":"src/main/java/seedu/realodex/ui/Ui.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.ui;","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":1,"-":12}},{"path":"src/main/java/seedu/realodex/ui/UiManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.ui;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.MainApp;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.LogsCenter;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.util.StringUtil;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.Logic;","lastModifiedDate":"2024-03-19"},{"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":"appleraincoat"},"content":" private static final String ICON_APPLICATION \u003d \"/images/realodex_icon.png\";","lastModifiedDate":"2024-03-13"},{"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":{"UdhayaShan1":5,"-":82,"appleraincoat":1}},{"path":"src/main/java/seedu/realodex/ui/UiPart.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.ui;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.MainApp;","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":2,"-":86}},{"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":"appleraincoat"},"content":" \u003cHBox alignment\u003d\"BOTTOM_RIGHT\" fx:id\u003d\"helpMessageContainer\"\u003e","lastModifiedDate":"2024-03-15"},{"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":{"-":43,"appleraincoat":1}},{"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":"appleraincoat"},"content":" title\u003d\"Realodex\" minWidth\u003d\"450\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":17,"author":{"gitId":"appleraincoat"},"content":" \u003cImage url\u003d\"@/images/realodex_icon.png\" /\u003e","lastModifiedDate":"2024-03-13"},{"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":{"-":58,"appleraincoat":2}},{"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":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"UdhayaShan1"},"content":" \u003cLabel fx:id\u003d\"income\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$income\" /\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2016-08-08"},{"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":"UdhayaShan1"},"content":" \u003cLabel fx:id\u003d\"family\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$family\" /\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"appleraincoat"},"content":" \u003cLabel fx:id\u003d\"remark\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$remark\" /\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"-":36,"UdhayaShan1":2,"appleraincoat":1}},{"path":"src/test/java/seedu/realodex/AppParametersTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex;","lastModifiedDate":"2024-03-19"},{"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":"2019-02-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-02-23"},{"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":"-"},"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":"-"},"content":"}","lastModifiedDate":"2018-04-21"}],"authorContributionMap":{"UdhayaShan1":1,"-":88}},{"path":"src/test/java/seedu/realodex/commons/core/ConfigTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.commons.core;","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","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":"2016-09-30"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class ConfigTest {","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 toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":" Config config \u003d new Config();","lastModifiedDate":"2019-02-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":" String expected \u003d Config.class.getCanonicalName() + \"{logLevel\u003d\" + config.getLogLevel()","lastModifiedDate":"2019-02-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":" + \", userPrefsFilePath\u003d\" + config.getUserPrefsFilePath() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":" assertEquals(expected, config.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-30"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public void equalsMethod() {","lastModifiedDate":"2016-09-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":" Config defaultConfig \u003d new Config();","lastModifiedDate":"2016-09-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" assertNotNull(defaultConfig);","lastModifiedDate":"2016-10-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertTrue(defaultConfig.equals(defaultConfig));","lastModifiedDate":"2016-09-30"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":27,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-30"}],"authorContributionMap":{"UdhayaShan1":1,"-":26}},{"path":"src/test/java/seedu/realodex/commons/core/GuiSettingsTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.commons.core;","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-02-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"public class GuiSettingsTest {","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings();","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":" String expected \u003d GuiSettings.class.getCanonicalName() + \"{windowWidth\u003d\" + guiSettings.getWindowWidth()","lastModifiedDate":"2019-02-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":" + \", windowHeight\u003d\" + guiSettings.getWindowHeight() + \", windowCoordinates\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":" + guiSettings.getWindowCoordinates() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":" assertEquals(expected, guiSettings.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-02-23"}],"authorContributionMap":{"UdhayaShan1":1,"-":15}},{"path":"src/test/java/seedu/realodex/commons/core/VersionTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.commons.core;","lastModifiedDate":"2024-03-19"},{"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.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class VersionTest {","lastModifiedDate":"2016-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void versionParsing_acceptableVersionString_parsedVersionCorrectly() {","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" verifyVersionParsedCorrectly(\"V0.0.0ea\", 0, 0, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" verifyVersionParsedCorrectly(\"V3.10.2\", 3, 10, 2, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" verifyVersionParsedCorrectly(\"V100.100.100ea\", 100, 100, 100, true);","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":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public void versionParsing_wrongVersionString_throwIllegalArgumentException() {","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e Version.fromString(\"This is not a version string\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void versionConstructor_correctParameter_valueAsExpected() {","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" Version version \u003d new Version(19, 10, 20, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertEquals(19, version.getMajor());","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertEquals(10, version.getMinor());","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertEquals(20, version.getPatch());","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertEquals(true, version.isEarlyAccess());","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void versionToString_validVersion_correctStringRepresentation() {","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // boundary at 0","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" Version version \u003d new Version(0, 0, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertEquals(\"V0.0.0ea\", version.toString());","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" // normal values","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" version \u003d new Version(4, 10, 5, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertEquals(\"V4.10.5\", version.toString());","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // big numbers","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" version \u003d new Version(100, 100, 100, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertEquals(\"V100.100.100ea\", version.toString());","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":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void versionComparable_validVersion_compareToIsCorrect() {","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" Version one;","lastModifiedDate":"2017-09-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" Version another;","lastModifiedDate":"2017-09-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // Tests equality","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" one \u003d new Version(0, 0, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" another \u003d new Version(0, 0, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003d\u003d 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" one \u003d new Version(11, 12, 13, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" another \u003d new Version(11, 12, 13, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003d\u003d 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // Tests different patch","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" one \u003d new Version(0, 0, 5, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" another \u003d new Version(0, 0, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003e 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // Tests different minor","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" one \u003d new Version(0, 0, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" another \u003d new Version(0, 5, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003c 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // Tests different major","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" one \u003d new Version(10, 0, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":" another \u003d new Version(0, 0, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003e 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // Tests high major vs low minor","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":" one \u003d new Version(10, 0, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" another \u003d new Version(0, 1, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003e 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" // Tests high patch vs low minor","lastModifiedDate":"2016-08-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" one \u003d new Version(0, 0, 10, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":" another \u003d new Version(0, 1, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003c 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // Tests same major minor different patch","lastModifiedDate":"2016-08-08"},{"lineNumber":88,"author":{"gitId":"-"},"content":" one \u003d new Version(2, 15, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":" another \u003d new Version(2, 15, 5, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003c 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":92,"author":{"gitId":"-"},"content":" // Tests early access vs not early access on same version number","lastModifiedDate":"2016-08-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":" one \u003d new Version(2, 15, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":94,"author":{"gitId":"-"},"content":" another \u003d new Version(2, 15, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003c 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" // Tests early access lower version vs not early access higher version compare by version number first","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" one \u003d new Version(2, 15, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" another \u003d new Version(2, 15, 5, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003c 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" // Tests early access higher version vs not early access lower version compare by version number first","lastModifiedDate":"2016-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" one \u003d new Version(2, 15, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" another \u003d new Version(2, 15, 5, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003c 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void versionComparable_validVersion_hashCodeIsCorrect() {","lastModifiedDate":"2016-08-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" Version version \u003d new Version(100, 100, 100, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertEquals(100100100, version.hashCode());","lastModifiedDate":"2016-08-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":" version \u003d new Version(10, 10, 10, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertEquals(1010010010, version.hashCode());","lastModifiedDate":"2016-08-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public void versionComparable_validVersion_equalIsCorrect() {","lastModifiedDate":"2016-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" Version one;","lastModifiedDate":"2016-10-16"},{"lineNumber":120,"author":{"gitId":"-"},"content":" Version another;","lastModifiedDate":"2016-10-16"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" one \u003d new Version(0, 0, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" another \u003d new Version(0, 0, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertTrue(one.equals(another));","lastModifiedDate":"2016-08-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" one \u003d new Version(100, 191, 275, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" another \u003d new Version(100, 191, 275, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertTrue(one.equals(another));","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":" private void verifyVersionParsedCorrectly(String versionString,","lastModifiedDate":"2016-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":" int major, int minor, int patch, boolean isEarlyAccess) {","lastModifiedDate":"2016-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":" assertEquals(new Version(major, minor, patch, isEarlyAccess), Version.fromString(versionString));","lastModifiedDate":"2016-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"UdhayaShan1":2,"-":133}},{"path":"src/test/java/seedu/realodex/commons/core/index/IndexTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.commons.core.index;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"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":"-"},"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":"-"},"content":" assertTrue(fifthPersonIndex.equals(Index.fromOneBased(5)));","lastModifiedDate":"2017-05-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(fifthPersonIndex.equals(Index.fromZeroBased(4)));","lastModifiedDate":"2017-05-24"},{"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":"-"},"content":" assertTrue(fifthPersonIndex.equals(fifthPersonIndex));","lastModifiedDate":"2017-05-24"},{"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":"-"},"content":" assertFalse(fifthPersonIndex.equals(null));","lastModifiedDate":"2017-05-24"},{"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":"-"},"content":" assertFalse(fifthPersonIndex.equals(5.0f));","lastModifiedDate":"2017-05-24"},{"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":"-"},"content":" assertFalse(fifthPersonIndex.equals(Index.fromOneBased(1)));","lastModifiedDate":"2017-05-24"},{"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":{"UdhayaShan1":2,"-":65}},{"path":"src/test/java/seedu/realodex/commons/util/AppUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.commons.util;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"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":"appleraincoat"},"content":" assertNotNull(AppUtil.getImage(\"/images/realodex_icon.png\"));","lastModifiedDate":"2024-03-13"},{"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":{"UdhayaShan1":2,"-":33,"appleraincoat":1}},{"path":"src/test/java/seedu/realodex/commons/util/CollectionUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.commons.util;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":" List\u003cObject\u003e containingNull \u003d Arrays.asList((Object) null);","lastModifiedDate":"2017-01-14"},{"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":"-"},"content":" assertNullPointerExceptionThrown(Arrays.asList((Object) null));","lastModifiedDate":"2017-05-19"},{"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":"-"},"content":" assertNullPointerExceptionNotThrown(Arrays.asList(new Object()));","lastModifiedDate":"2017-05-19"},{"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":"-"},"content":" List\u003cObject\u003e containingNull \u003d Arrays.asList((Object) null);","lastModifiedDate":"2017-01-14"},{"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":"2019-03-23"},{"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":"2019-03-23"},{"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":"2017-05-19"},{"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":"2017-05-19"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-19"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-22"}],"authorContributionMap":{"UdhayaShan1":3,"-":105}},{"path":"src/test/java/seedu/realodex/commons/util/ConfigUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.commons.util;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.Config;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-19"},{"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":"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":" @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-06-14"},{"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":"2019-03-23"},{"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":"2019-03-23"},{"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":{"UdhayaShan1":4,"-":112}},{"path":"src/test/java/seedu/realodex/commons/util/FileUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.commons.util;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class FileUtilTest {","lastModifiedDate":"2016-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void isValidPath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":" // valid path","lastModifiedDate":"2018-04-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":" assertTrue(FileUtil.isValidPath(\"valid/file/path\"));","lastModifiedDate":"2018-04-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":" // invalid path","lastModifiedDate":"2018-04-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":" assertFalse(FileUtil.isValidPath(\"a\\0\"));","lastModifiedDate":"2018-04-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":" // null path -\u003e throws NullPointerException","lastModifiedDate":"2018-04-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e FileUtil.isValidPath(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"UdhayaShan1":2,"-":21}},{"path":"src/test/java/seedu/realodex/commons/util/JsonUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.commons.util;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.testutil.SerializableTestClass;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.testutil.TestUtil;","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"UdhayaShan1":3,"-":42}},{"path":"src/test/java/seedu/realodex/commons/util/StringUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.commons.util;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e StringUtil.containsWordIgnoreCase(\"typical sentence\", null));","lastModifiedDate":"2019-03-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void containsWordIgnoreCase_emptyWord_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, \"Word parameter cannot be empty\", ()","lastModifiedDate":"2019-03-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" -\u003e StringUtil.containsWordIgnoreCase(\"typical sentence\", \" \"));","lastModifiedDate":"2019-03-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void containsWordIgnoreCase_multipleWords_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, \"Word parameter should be a single word\", ()","lastModifiedDate":"2019-03-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" -\u003e StringUtil.containsWordIgnoreCase(\"typical sentence\", \"aaa BBB\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void containsWordIgnoreCase_nullSentence_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e StringUtil.containsWordIgnoreCase(null, \"abc\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Valid equivalence partitions for word:","lastModifiedDate":"2016-10-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * - any word","lastModifiedDate":"2016-10-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * - word containing symbols/numbers","lastModifiedDate":"2016-10-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * - word with leading/trailing spaces","lastModifiedDate":"2016-10-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Valid equivalence partitions for sentence:","lastModifiedDate":"2016-10-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * - empty string","lastModifiedDate":"2016-10-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * - one word","lastModifiedDate":"2016-10-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * - multiple words","lastModifiedDate":"2016-10-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * - sentence with extra spaces","lastModifiedDate":"2016-10-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Possible scenarios returning true:","lastModifiedDate":"2016-10-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * - matches first word in sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * - last word in sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - middle word in sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * - matches multiple words","lastModifiedDate":"2016-10-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * Possible scenarios returning false:","lastModifiedDate":"2016-10-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * - query word matches part of a sentence word","lastModifiedDate":"2016-10-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * - sentence word matches part of the query word","lastModifiedDate":"2016-10-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-13"},{"lineNumber":101,"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":102,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void containsWordIgnoreCase_validInputs_correctResult() {","lastModifiedDate":"2016-10-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" // Empty sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.containsWordIgnoreCase(\"\", \"abc\")); // Boundary case","lastModifiedDate":"2016-10-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.containsWordIgnoreCase(\" \", \"123\"));","lastModifiedDate":"2016-10-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" // Matches a partial word only","lastModifiedDate":"2016-10-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.containsWordIgnoreCase(\"aaa bbb ccc\", \"bb\")); // Sentence word bigger than query word","lastModifiedDate":"2016-10-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.containsWordIgnoreCase(\"aaa bbb ccc\", \"bbbb\")); // Query word bigger than sentence word","lastModifiedDate":"2016-10-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" // Matches word in the sentence, different upper/lower case letters","lastModifiedDate":"2016-10-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\"aaa bBb ccc\", \"Bbb\")); // First word (boundary case)","lastModifiedDate":"2016-10-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\"aaa bBb ccc@1\", \"CCc@1\")); // Last word (boundary case)","lastModifiedDate":"2016-10-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\" AAA bBb ccc \", \"aaa\")); // Sentence has extra spaces","lastModifiedDate":"2016-10-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\"Aaa\", \"aaa\")); // Only one word in sentence (boundary case)","lastModifiedDate":"2016-10-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\"aaa bbb ccc\", \" ccc \")); // Leading/trailing spaces","lastModifiedDate":"2016-10-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":" // Matches multiple words in sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\"AAA bBb ccc bbb\", \"bbB\"));","lastModifiedDate":"2016-10-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" //---------------- Tests for getDetails --------------------------------------","lastModifiedDate":"2016-10-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":128,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-13"},{"lineNumber":129,"author":{"gitId":"-"},"content":" * Equivalence Partitions: null, valid throwable object","lastModifiedDate":"2016-10-13"},{"lineNumber":130,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-30"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void getDetails_exceptionGiven() {","lastModifiedDate":"2016-09-30"},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.getDetails(new FileNotFoundException(\"file not found\"))","lastModifiedDate":"2019-03-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" .contains(\"java.io.FileNotFoundException: file not found\"));","lastModifiedDate":"2019-03-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-30"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public void getDetails_nullGiven_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e StringUtil.getDetails(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":143,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"UdhayaShan1":2,"-":141}},{"path":"src/test/java/seedu/realodex/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.FAMILY_DESC_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.INCOME_DESC_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.TAG_DESC_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_TAG_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.TypicalPersons.AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":25,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.AddCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.CommandResult;","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.ListCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.ModelManager;","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.ReadOnlyRealodex;","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.UserPrefs;","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.storage.JsonRealodexStorage;","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.storage.JsonUserPrefsStorage;","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.storage.StorageManager;","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.testutil.PersonBuilder;","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20"},{"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":"UdhayaShan1"},"content":" JsonRealodexStorage realodexStorage \u003d","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"UdhayaShan1"},"content":" new JsonRealodexStorage(temporaryFolder.resolve(\"realodex.json\"));","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":55,"author":{"gitId":"UdhayaShan1"},"content":" StorageManager storage \u003d new StorageManager(realodexStorage, userPrefsStorage);","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2017-06-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2017-06-14"},{"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":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2024-03-16"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":101,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":108,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":109,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":110,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":111,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":112,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":116,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":125,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":126,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":128,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14"},{"lineNumber":130,"author":{"gitId":"UdhayaShan1"},"content":" Model expectedModel \u003d new ModelManager(model.getRealodex(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":131,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":134,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":135,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":137,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":138,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":139,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":140,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":141,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":142,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31"},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14"},{"lineNumber":144,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19"},{"lineNumber":147,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":148,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13"},{"lineNumber":149,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13"},{"lineNumber":150,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13"},{"lineNumber":151,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":153,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13"},{"lineNumber":154,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":156,"author":{"gitId":"UdhayaShan1"},"content":" // Inject LogicManager with an RealodexStorage that throws the IOException e when saving","lastModifiedDate":"2024-03-19"},{"lineNumber":157,"author":{"gitId":"UdhayaShan1"},"content":" JsonRealodexStorage realodexStorage \u003d new JsonRealodexStorage(prefPath) {","lastModifiedDate":"2024-03-19"},{"lineNumber":158,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":159,"author":{"gitId":"UdhayaShan1"},"content":" public void saveRealodex(ReadOnlyRealodex realodex, Path filePath)","lastModifiedDate":"2024-03-19"},{"lineNumber":160,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13"},{"lineNumber":161,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":163,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":165,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":166,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13"},{"lineNumber":167,"author":{"gitId":"UdhayaShan1"},"content":" StorageManager storage \u003d new StorageManager(realodexStorage, userPrefsStorage);","lastModifiedDate":"2024-03-19"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":169,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":171,"author":{"gitId":"UdhayaShan1"},"content":" // Triggers the saveRealodex method by executing an add command","lastModifiedDate":"2024-03-19"},{"lineNumber":172,"author":{"gitId":"-"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2023-06-13"},{"lineNumber":173,"author":{"gitId":"4llysa"},"content":" + INCOME_DESC_AMY + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + FAMILY_DESC_AMY + TAG_DESC_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":174,"author":{"gitId":"UdhayaShan1"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags(VALID_TAG_AMY).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":175,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13"},{"lineNumber":176,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13"},{"lineNumber":177,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":179,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"4llysa":1,"UdhayaShan1":37,"-":141}},{"path":"src/test/java/seedu/realodex/logic/commands/AddCommandIntegrationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.TypicalPersons.getTypicalRealodex;","lastModifiedDate":"2024-03-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":"UdhayaShan1"},"content":"import seedu.realodex.logic.Messages;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.ModelManager;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.UserPrefs;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.testutil.PersonBuilder;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" model \u003d new ModelManager(getTypicalRealodex(), new UserPrefs());","lastModifiedDate":"2024-03-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":"UdhayaShan1"},"content":" Model expectedModel \u003d new ModelManager(model.getRealodex(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" Person personInList \u003d model.getRealodex().getPersonList().get(0);","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":13,"-":35}},{"path":"src/test/java/seedu/realodex/logic/commands/AddCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.commands;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.GuiSettings;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.Messages;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.ReadOnlyRealodex;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.Realodex;","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.testutil.PersonBuilder;","lastModifiedDate":"2024-03-19"},{"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":"-"},"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":"-"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2017-06-22"},{"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":"UdhayaShan1"},"content":" public Path getRealodexFilePath() {","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" public void setRealodexFilePath(Path realodexFilePath) {","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" public void setRealodex(ReadOnlyRealodex newData) {","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" public ReadOnlyRealodex getRealodex() {","lastModifiedDate":"2024-03-19"},{"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":"2018-08-06"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"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":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07"},{"lineNumber":164,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":165,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07"},{"lineNumber":166,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":168,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":169,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":170,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":173,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":174,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":175,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":176,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":180,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":181,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12"},{"lineNumber":182,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":183,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12"},{"lineNumber":184,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":186,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07"},{"lineNumber":187,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":188,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":189,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":192,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":193,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08"},{"lineNumber":194,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":195,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":198,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":199,"author":{"gitId":"UdhayaShan1"},"content":" public ReadOnlyRealodex getRealodex() {","lastModifiedDate":"2024-03-19"},{"lineNumber":200,"author":{"gitId":"UdhayaShan1"},"content":" return new Realodex();","lastModifiedDate":"2024-03-19"},{"lineNumber":201,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":202,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":204,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12"}],"authorContributionMap":{"UdhayaShan1":18,"-":186}},{"path":"src/test/java/seedu/realodex/logic/commands/ClearCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":3,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.TypicalPersons.getTypicalRealodex;","lastModifiedDate":"2024-03-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":"UdhayaShan1"},"content":"import seedu.realodex.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.ModelManager;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.Realodex;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.UserPrefs;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" public void execute_emptyRealodex_success() {","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" public void execute_nonEmptyRealodex_success() {","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"UdhayaShan1"},"content":" Model model \u003d new ModelManager(getTypicalRealodex(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"UdhayaShan1"},"content":" Model expectedModel \u003d new ModelManager(getTypicalRealodex(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"UdhayaShan1"},"content":" expectedModel.setRealodex(new Realodex());","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":12,"-":20}},{"path":"src/test/java/seedu/realodex/logic/commands/CommandResultTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.commands;","lastModifiedDate":"2024-03-19"},{"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":"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":"2018-12-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class CommandResultTest {","lastModifiedDate":"2018-12-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-12-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new CommandResult(\"feedback\");","lastModifiedDate":"2018-12-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-12-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":" assertTrue(commandResult.equals(new CommandResult(\"feedback\")));","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":" assertTrue(commandResult.equals(new CommandResult(\"feedback\", false, false)));","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertTrue(commandResult.equals(commandResult));","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(null));","lastModifiedDate":"2018-12-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(0.5f));","lastModifiedDate":"2018-12-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // different feedbackToUser value -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(new CommandResult(\"different\")));","lastModifiedDate":"2018-12-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // different showHelp value -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(new CommandResult(\"feedback\", true, false)));","lastModifiedDate":"2018-12-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":" // different exit value -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(new CommandResult(\"feedback\", false, true)));","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void hashcode() {","lastModifiedDate":"2018-12-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new CommandResult(\"feedback\");","lastModifiedDate":"2018-12-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" // same values -\u003e returns same hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(commandResult.hashCode(), new CommandResult(\"feedback\").hashCode());","lastModifiedDate":"2018-12-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // different feedbackToUser value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(\"different\").hashCode());","lastModifiedDate":"2018-12-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // different showHelp value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(\"feedback\", true, false).hashCode());","lastModifiedDate":"2018-12-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different exit value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(\"feedback\", false, true).hashCode());","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new CommandResult(\"feedback\");","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" String expected \u003d CommandResult.class.getCanonicalName() + \"{feedbackToUser\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" + commandResult.getFeedbackToUser() + \", showHelp\u003d\" + commandResult.isShowHelp()","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" + \", exit\u003d\" + commandResult.isExit() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertEquals(expected, commandResult.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-12-09"}],"authorContributionMap":{"UdhayaShan1":1,"-":62}},{"path":"src/test/java/seedu/realodex/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.commands;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_FAMILY;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_INCOME;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.index.Index;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.Realodex;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.NameContainsKeyphrasePredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2024-03-19"},{"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":"","lastModifiedDate":"2017-06-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05"},{"lineNumber":35,"author":{"gitId":"UdhayaShan1"},"content":" public static final String VALID_INCOME_AMY \u003d \"20000\";","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"UdhayaShan1"},"content":" public static final String VALID_INCOME_BOB \u003d \"30000\";","lastModifiedDate":"2024-03-11"},{"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":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05"},{"lineNumber":41,"author":{"gitId":"UdhayaShan1"},"content":" public static final String VALID_FAMILY_AMY \u003d \"4\";","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"UdhayaShan1"},"content":" public static final String VALID_FAMILY_BOB \u003d \"4\";","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"4llysa"},"content":" public static final String VALID_TAG_AMY \u003d \"buyer\";","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"4llysa"},"content":" public static final String VALID_TAG_BOB \u003d \"seller\";","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"appleraincoat"},"content":" public static final String VALID_REMARK_AMY \u003d \"This is a remark\";","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"appleraincoat"},"content":" public static final String VALID_REMARK_BOB \u003d \"Testing remark\";","lastModifiedDate":"2024-03-17"},{"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":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":52,"author":{"gitId":"UdhayaShan1"},"content":" public static final String INCOME_DESC_AMY \u003d \" \" + PREFIX_INCOME + VALID_INCOME_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"UdhayaShan1"},"content":" public static final String INCOME_DESC_BOB \u003d \" \" + PREFIX_INCOME + VALID_INCOME_BOB;","lastModifiedDate":"2024-03-11"},{"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":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":58,"author":{"gitId":"UdhayaShan1"},"content":" public static final String FAMILY_DESC_AMY \u003d \" \" + PREFIX_FAMILY + VALID_FAMILY_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"UdhayaShan1"},"content":" public static final String FAMILY_DESC_BOB \u003d \" \" + PREFIX_FAMILY + VALID_FAMILY_BOB;","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"4llysa"},"content":" public static final String TAG_DESC_BOB \u003d \" \" + PREFIX_TAG + VALID_TAG_BOB;","lastModifiedDate":"2024-03-15"},{"lineNumber":61,"author":{"gitId":"4llysa"},"content":" public static final String TAG_DESC_AMY \u003d \" \" + PREFIX_TAG + VALID_TAG_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":62,"author":{"gitId":"appleraincoat"},"content":" public static final String REMARK_DESC_AMY \u003d \" \" + PREFIX_REMARK + VALID_REMARK_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"appleraincoat"},"content":" public static final String REMARK_DESC_BOB \u003d \" \" + PREFIX_REMARK + VALID_REMARK_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"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":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":"UdhayaShan1"},"content":" public static final String INVALID_INCOME_DESC \u003d \" \" + PREFIX_INCOME + \"-1\"; // Income must be positive, \u003e\u003d 0","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05"},{"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":"UdhayaShan1"},"content":" public static final String INVALID_FAMILY_DESC \u003d \" \" + PREFIX_FAMILY + \"0\"; // Family size must be at least 1","lastModifiedDate":"2024-03-11"},{"lineNumber":70,"author":{"gitId":"4llysa"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"friend\"; // \u0027friend\u0027 not allowed in tags","lastModifiedDate":"2024-03-15"},{"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":" 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":"UdhayaShan1"},"content":" .withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"UdhayaShan1"},"content":" .withIncome(VALID_INCOME_AMY)","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"UdhayaShan1"},"content":" .withEmail(VALID_EMAIL_AMY)","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"UdhayaShan1"},"content":" .withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"UdhayaShan1"},"content":" .withFamily(VALID_FAMILY_AMY)","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"UdhayaShan1"},"content":" .withTags(VALID_TAG_BOB)","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"UdhayaShan1"},"content":" .withRemark(VALID_REMARK_AMY)","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"UdhayaShan1"},"content":" .build();","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"UdhayaShan1"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder()","lastModifiedDate":"2024-03-16"},{"lineNumber":87,"author":{"gitId":"UdhayaShan1"},"content":" .withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-16"},{"lineNumber":88,"author":{"gitId":"UdhayaShan1"},"content":" .withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-16"},{"lineNumber":89,"author":{"gitId":"UdhayaShan1"},"content":" .withIncome(VALID_INCOME_BOB)","lastModifiedDate":"2024-03-16"},{"lineNumber":90,"author":{"gitId":"UdhayaShan1"},"content":" .withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2024-03-16"},{"lineNumber":91,"author":{"gitId":"UdhayaShan1"},"content":" .withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-03-16"},{"lineNumber":92,"author":{"gitId":"UdhayaShan1"},"content":" .withFamily(VALID_FAMILY_BOB)","lastModifiedDate":"2024-03-16"},{"lineNumber":93,"author":{"gitId":"UdhayaShan1"},"content":" .withTags(VALID_TAG_AMY, VALID_TAG_BOB)","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"UdhayaShan1"},"content":" .withRemark(VALID_REMARK_BOB)","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"UdhayaShan1"},"content":" .build();","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":98,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":102,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25"},{"lineNumber":104,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":105,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":106,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":109,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":110,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25"},{"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":"UdhayaShan1"},"content":" * - the realodex, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2024-03-19"},{"lineNumber":129,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":130,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25"},{"lineNumber":131,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":132,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":133,"author":{"gitId":"UdhayaShan1"},"content":" Realodex expectedRealodex \u003d new Realodex(actualModel.getRealodex());","lastModifiedDate":"2024-03-19"},{"lineNumber":134,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03"},{"lineNumber":137,"author":{"gitId":"UdhayaShan1"},"content":" assertEquals(expectedRealodex, actualModel.getRealodex());","lastModifiedDate":"2024-03-19"},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":140,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":141,"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":142,"author":{"gitId":"UdhayaShan1"},"content":" * {@code model}\u0027s realodex.","lastModifiedDate":"2024-03-19"},{"lineNumber":143,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":144,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31"},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":147,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31"},{"lineNumber":148,"author":{"gitId":"jyztintan"},"content":" final String fullName \u003d person.getName().fullName;","lastModifiedDate":"2024-03-16"},{"lineNumber":149,"author":{"gitId":"jyztintan"},"content":" model.updateFilteredPersonList(new NameContainsKeyphrasePredicate(fullName));","lastModifiedDate":"2024-03-16"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":151,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08"},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"4llysa":5,"jyztintan":2,"UdhayaShan1":49,"-":94,"appleraincoat":4}},{"path":"src/test/java/seedu/realodex/logic/commands/DeleteCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.commands;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.TypicalPersons.getTypicalRealodex;","lastModifiedDate":"2024-03-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":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.index.Index;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.Messages;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.ModelManager;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.UserPrefs;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.testutil.PersonBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2018-01-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":29,"author":{"gitId":"UdhayaShan1"},"content":" private Model model \u003d new ModelManager(getTypicalRealodex(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":34,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":39,"author":{"gitId":"UdhayaShan1"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getRealodex(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":45,"author":{"gitId":"wapisai"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"wapisai"},"content":" public void execute_validNameUnfilteredList_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"wapisai"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"wapisai"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(personToDelete.getName());","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"wapisai"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"wapisai"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"UdhayaShan1"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getRealodex(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"wapisai"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"wapisai"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"wapisai"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-06-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":67,"author":{"gitId":"wapisai"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"wapisai"},"content":" public void execute_invalidNameUnfilteredList_throwsCommandException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"wapisai"},"content":" Person personToDelete \u003d new PersonBuilder().withName(\"b\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"wapisai"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(personToDelete.getName());","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"wapisai"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_NAME);","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"wapisai"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":77,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":79,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":80,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":82,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":85,"author":{"gitId":"UdhayaShan1"},"content":" Model expectedModel \u003d new ModelManager(model.getRealodex(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":" showNoPerson(expectedModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":94,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":96,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-06-05"},{"lineNumber":97,"author":{"gitId":"UdhayaShan1"},"content":" // ensures that outOfBoundIndex is still in bounds of realodex list","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"UdhayaShan1"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getRealodex().getPersonList().size());","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":100,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":106,"author":{"gitId":"wapisai"},"content":" public void equalsIndex() {","lastModifiedDate":"2024-03-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":" DeleteCommand deleteFirstCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":" DeleteCommand deleteSecondCommand \u003d new DeleteCommand(INDEX_SECOND_PERSON);","lastModifiedDate":"2018-08-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":110,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":113,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":114,"author":{"gitId":"-"},"content":" DeleteCommand deleteFirstCommandCopy \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":117,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":120,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":123,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":127,"author":{"gitId":"wapisai"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":128,"author":{"gitId":"wapisai"},"content":" public void equalsName() {","lastModifiedDate":"2024-03-18"},{"lineNumber":129,"author":{"gitId":"wapisai"},"content":" DeleteCommand deleteUdhayaCommand \u003d new DeleteCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":130,"author":{"gitId":"wapisai"},"content":" new PersonBuilder().withName(\"Udhaya\").build().getName());","lastModifiedDate":"2024-03-18"},{"lineNumber":131,"author":{"gitId":"wapisai"},"content":" DeleteCommand deleteNotUdhayaCommand \u003d new DeleteCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":132,"author":{"gitId":"wapisai"},"content":" new PersonBuilder().withName(\"not Udhaya\").build().getName());","lastModifiedDate":"2024-03-18"},{"lineNumber":133,"author":{"gitId":"wapisai"},"content":" DeleteCommand deleteUdhayaShanmugamCommand \u003d new DeleteCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":134,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":135,"author":{"gitId":"wapisai"},"content":" new PersonBuilder().withName(\"Udhaya Shanmugam\").build().getName());","lastModifiedDate":"2024-03-18"},{"lineNumber":136,"author":{"gitId":"wapisai"},"content":" DeleteCommand deleteAddressCommand \u003d new DeleteCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":137,"author":{"gitId":"wapisai"},"content":" new PersonBuilder().withAddress(\"Udhaya\").build().getName());","lastModifiedDate":"2024-03-18"},{"lineNumber":138,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":139,"author":{"gitId":"wapisai"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":140,"author":{"gitId":"wapisai"},"content":" assertTrue(deleteUdhayaCommand.equals(deleteUdhayaCommand));","lastModifiedDate":"2024-03-18"},{"lineNumber":141,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":142,"author":{"gitId":"wapisai"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":143,"author":{"gitId":"wapisai"},"content":" DeleteCommand deleteUdhayaCommandCopy \u003d new DeleteCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":144,"author":{"gitId":"wapisai"},"content":" new PersonBuilder().withName(\"Udhaya\").build().getName());","lastModifiedDate":"2024-03-18"},{"lineNumber":145,"author":{"gitId":"wapisai"},"content":" assertTrue(deleteUdhayaCommand.equals(deleteUdhayaCommandCopy));","lastModifiedDate":"2024-03-18"},{"lineNumber":146,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":147,"author":{"gitId":"wapisai"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":148,"author":{"gitId":"wapisai"},"content":" assertFalse(deleteUdhayaCommand.equals(1));","lastModifiedDate":"2024-03-18"},{"lineNumber":149,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":150,"author":{"gitId":"wapisai"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":151,"author":{"gitId":"wapisai"},"content":" assertFalse(deleteUdhayaCommand.equals(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":152,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":153,"author":{"gitId":"wapisai"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":154,"author":{"gitId":"wapisai"},"content":" assertFalse(deleteUdhayaCommand.equals(deleteNotUdhayaCommand));","lastModifiedDate":"2024-03-18"},{"lineNumber":155,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":156,"author":{"gitId":"wapisai"},"content":" // delete udhaya should not delete someone with address udhaya","lastModifiedDate":"2024-03-18"},{"lineNumber":157,"author":{"gitId":"wapisai"},"content":" assertFalse(deleteUdhayaCommand.equals(deleteAddressCommand));","lastModifiedDate":"2024-03-18"},{"lineNumber":158,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":159,"author":{"gitId":"wapisai"},"content":" //delete Udhaya should not delete someone with name Udhaya Shanugam","lastModifiedDate":"2024-03-18"},{"lineNumber":160,"author":{"gitId":"wapisai"},"content":" assertFalse(deleteUdhayaCommand.equals(deleteUdhayaShanmugamCommand));","lastModifiedDate":"2024-03-18"},{"lineNumber":161,"author":{"gitId":"wapisai"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":162,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":163,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(targetIndex);","lastModifiedDate":"2019-02-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":" String expected \u003d DeleteCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":" assertEquals(expected, deleteCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":172,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05"},{"lineNumber":173,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":174,"author":{"gitId":"-"},"content":" private void showNoPerson(Model model) {","lastModifiedDate":"2017-06-05"},{"lineNumber":175,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2017-06-12"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":177,"author":{"gitId":"-"},"content":" assertTrue(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2018-02-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":179,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"UdhayaShan1":20,"-":101,"wapisai":58}},{"path":"src/test/java/seedu/realodex/logic/commands/EditCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.commands;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_TAG_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.TypicalPersons.getTypicalRealodex;","lastModifiedDate":"2024-03-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":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.index.Index;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.Messages;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.ModelManager;","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.Realodex;","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.UserPrefs;","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.testutil.PersonBuilder;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" private Model model \u003d new ModelManager(getTypicalRealodex(), new UserPrefs());","lastModifiedDate":"2024-03-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":"UdhayaShan1"},"content":" Model expectedModel \u003d new ModelManager(new Realodex(model.getRealodex()), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"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":"4llysa"},"content":" .withTags(VALID_TAG_AMY).build();","lastModifiedDate":"2024-03-15"},{"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":"4llysa"},"content":" .withPhone(VALID_PHONE_BOB).withTags(VALID_TAG_AMY).build();","lastModifiedDate":"2024-03-15"},{"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":"UdhayaShan1"},"content":" Model expectedModel \u003d new ModelManager(new Realodex(model.getRealodex()), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" Model expectedModel \u003d new ModelManager(new Realodex(model.getRealodex()), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" Model expectedModel \u003d new ModelManager(new Realodex(model.getRealodex()), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" // edit person in filtered list into a duplicate in realodex","lastModifiedDate":"2024-03-19"},{"lineNumber":116,"author":{"gitId":"UdhayaShan1"},"content":" Person personInList \u003d model.getRealodex().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2024-03-19"},{"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-04"},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18"},{"lineNumber":134,"author":{"gitId":"UdhayaShan1"},"content":" * but smaller than size of realodex","lastModifiedDate":"2024-03-19"},{"lineNumber":135,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18"},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":137,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":138,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":139,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18"},{"lineNumber":140,"author":{"gitId":"UdhayaShan1"},"content":" // ensures that outOfBoundIndex is still in bounds of realodex list","lastModifiedDate":"2024-03-19"},{"lineNumber":141,"author":{"gitId":"UdhayaShan1"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getRealodex().getPersonList().size());","lastModifiedDate":"2024-03-19"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":143,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":149,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":151,"author":{"gitId":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2018-08-08"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":153,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":154,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08"},{"lineNumber":155,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":156,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":158,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2017-05-25"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2017-05-25"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":174,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2019-02-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08"}],"authorContributionMap":{"4llysa":2,"UdhayaShan1":32,"-":150}},{"path":"src/test/java/seedu/realodex/logic/commands/EditPersonDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.commands;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_REMARK_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_TAG_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":17,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2017-05-05"},{"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 address -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_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":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":57,"author":{"gitId":"4llysa"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_AMY).build();","lastModifiedDate":"2024-03-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":59,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"UdhayaShan1"},"content":" //different remarks -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"UdhayaShan1"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withRemark(VALID_REMARK_BOB).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":" + editPersonDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"wapisai"},"content":" + editPersonDescriptor.getIncome().orElse(null) + \", income\u003d\"","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", address\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"wapisai"},"content":" + editPersonDescriptor.getFamily().orElse(null) + \", family\u003d\"","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getAddress().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":75,"author":{"gitId":"wapisai"},"content":" + editPersonDescriptor.getTags().orElse(null) + \", remark\u003d\"","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"wapisai"},"content":" + editPersonDescriptor.getRemark().orElse(null) + \"}\";","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"4llysa":1,"UdhayaShan1":14,"-":60,"wapisai":4}},{"path":"src/test/java/seedu/realodex/logic/commands/ExitCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":3,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.ExitCommand.MESSAGE_EXIT_ACKNOWLEDGEMENT;","lastModifiedDate":"2024-03-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":"UdhayaShan1"},"content":"import seedu.realodex.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.ModelManager;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class ExitCommandTest {","lastModifiedDate":"2017-06-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-12-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public void execute_exit_success() {","lastModifiedDate":"2017-06-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, false, true);","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ExitCommand(), model, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08"}],"authorContributionMap":{"UdhayaShan1":5,"-":15}},{"path":"src/test/java/seedu/realodex/logic/commands/FilterCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.commands;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.logic.Messages.MESSAGE_PERSONS_LISTED_OVERVIEW;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.TypicalPersons.DANIEL;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.TypicalPersons.ELLE;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.TypicalPersons.getTypicalRealodex;","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.ModelManager;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.UserPrefs;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.NameContainsKeyphrasePredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"jyztintan"},"content":" * Contains integration tests (interaction with the Model) for {@code FilterCommand}.","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"jyztintan"},"content":"public class FilterCommandTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"UdhayaShan1"},"content":" private Model model \u003d new ModelManager(getTypicalRealodex(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"UdhayaShan1"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalRealodex(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-27"},{"lineNumber":31,"author":{"gitId":"jyztintan"},"content":" NameContainsKeyphrasePredicate firstPredicate \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"jyztintan"},"content":" new NameContainsKeyphrasePredicate(\"first\");","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"jyztintan"},"content":" NameContainsKeyphrasePredicate secondPredicate \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"jyztintan"},"content":" new NameContainsKeyphrasePredicate(\"second\");","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":36,"author":{"gitId":"jyztintan"},"content":" FilterCommand filterFirstCommand \u003d new FilterCommand(firstPredicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"jyztintan"},"content":" FilterCommand filterSecondCommand \u003d new FilterCommand(secondPredicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"jyztintan"},"content":" assertTrue(filterFirstCommand.equals(filterFirstCommand));","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"jyztintan"},"content":" FilterCommand filterFirstCommandCopy \u003d new FilterCommand(firstPredicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"jyztintan"},"content":" assertTrue(filterFirstCommand.equals(filterFirstCommandCopy));","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"jyztintan"},"content":" assertFalse(filterFirstCommand.equals(1));","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"jyztintan"},"content":" assertFalse(filterFirstCommand.equals(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"jyztintan"},"content":" assertFalse(filterFirstCommand.equals(filterSecondCommand));","lastModifiedDate":"2024-03-16"},{"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-12"},{"lineNumber":57,"author":{"gitId":"jyztintan"},"content":" public void execute_invalidKeyphrase_noPersonFound() {","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2017-06-12"},{"lineNumber":59,"author":{"gitId":"jyztintan"},"content":" NameContainsKeyphrasePredicate predicate \u003d preparePredicate(\"yapyapyap\");","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"jyztintan"},"content":" FilterCommand command \u003d new FilterCommand(predicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":67,"author":{"gitId":"jyztintan"},"content":" public void execute_oneKeyphrase_multiplePersonsFound() {","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"jyztintan"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 2);","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"jyztintan"},"content":" NameContainsKeyphrasePredicate predicate \u003d preparePredicate(\"El\");","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"jyztintan"},"content":" FilterCommand command \u003d new FilterCommand(predicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":73,"author":{"gitId":"jyztintan"},"content":" assertEquals(Arrays.asList(DANIEL, ELLE), model.getFilteredPersonList());","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"jyztintan"},"content":" NameContainsKeyphrasePredicate predicate \u003d new NameContainsKeyphrasePredicate(\"keyphrase\");","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"jyztintan"},"content":" FilterCommand filterCommand \u003d new FilterCommand(predicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"jyztintan"},"content":" String expected \u003d FilterCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"jyztintan"},"content":" assertEquals(expected, filterCommand.toString());","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12"},{"lineNumber":85,"author":{"gitId":"jyztintan"},"content":" * Parses {@code userInput} into a {@code NameContainsKeyphrasePredicate}.","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":87,"author":{"gitId":"jyztintan"},"content":" private NameContainsKeyphrasePredicate preparePredicate(String userInput) {","lastModifiedDate":"2024-03-16"},{"lineNumber":88,"author":{"gitId":"jyztintan"},"content":" return new NameContainsKeyphrasePredicate(userInput);","lastModifiedDate":"2024-03-16"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":90,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"jyztintan":29,"UdhayaShan1":12,"-":49}},{"path":"src/test/java/seedu/realodex/logic/commands/HelpCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":3,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.HelpCommand.SHOWING_HELP_MESSAGE;","lastModifiedDate":"2024-03-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":"UdhayaShan1"},"content":"import seedu.realodex.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.ModelManager;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class HelpCommandTest {","lastModifiedDate":"2017-06-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public void execute_help_success() {","lastModifiedDate":"2017-06-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(SHOWING_HELP_MESSAGE, true, false);","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":" assertCommandSuccess(new HelpCommand(), model, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08"}],"authorContributionMap":{"UdhayaShan1":5,"-":15}},{"path":"src/test/java/seedu/realodex/logic/commands/ListCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.TypicalPersons.getTypicalRealodex;","lastModifiedDate":"2024-03-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":"UdhayaShan1"},"content":"import seedu.realodex.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.ModelManager;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.UserPrefs;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" model \u003d new ModelManager(getTypicalRealodex(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"UdhayaShan1"},"content":" expectedModel \u003d new ModelManager(model.getRealodex(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":10,"-":29}},{"path":"src/test/java/seedu/realodex/logic/parser/AddCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.parser;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.FAMILY_DESC_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.FAMILY_DESC_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.INCOME_DESC_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.INCOME_DESC_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.INVALID_FAMILY_DESC;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.INVALID_INCOME_DESC;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.REMARK_DESC_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.REMARK_DESC_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.TAG_DESC_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.TAG_DESC_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_FAMILY_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_INCOME_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_TAG_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_TAG_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_FAMILY;","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_INCOME;","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.TypicalPersons.AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.TypicalPersons.BOB;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.logic.Messages;","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.AddCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.CommandTestUtil;","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Address;","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Email;","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Family;","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Income;","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.tag.Tag;","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.testutil.PersonBuilder;","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15"},{"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":"4llysa"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).build();","lastModifiedDate":"2024-03-15"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":72,"author":{"gitId":"UdhayaShan1"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2024-03-11"},{"lineNumber":73,"author":{"gitId":"UdhayaShan1"},"content":" PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + INCOME_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"appleraincoat"},"content":" + ADDRESS_DESC_BOB + FAMILY_DESC_BOB + TAG_DESC_BOB + REMARK_DESC_BOB,","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"appleraincoat"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":78,"author":{"gitId":"UdhayaShan1"},"content":" // two valid tags - all accepted","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"4llysa"},"content":" Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB).withTags(VALID_TAG_BOB, VALID_TAG_AMY)","lastModifiedDate":"2024-03-15"},{"lineNumber":80,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":82,"author":{"gitId":"UdhayaShan1"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + INCOME_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB + FAMILY_DESC_BOB","lastModifiedDate":"2024-03-11"},{"lineNumber":83,"author":{"gitId":"appleraincoat"},"content":" + TAG_DESC_BOB + TAG_DESC_AMY + REMARK_DESC_BOB,","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"-"},"content":" new AddCommand(expectedPersonMultipleTags));","lastModifiedDate":"2023-07-14"},{"lineNumber":85,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"UdhayaShan1"},"content":" // three valid tags - all accepted","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"UdhayaShan1"},"content":" expectedPersonMultipleTags \u003d new PersonBuilder(BOB).withTags(VALID_TAG_BOB, VALID_TAG_AMY)","lastModifiedDate":"2024-03-17"},{"lineNumber":88,"author":{"gitId":"UdhayaShan1"},"content":" .build();","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"UdhayaShan1"},"content":" assertParseSuccess(parser, NAME_DESC_BOB","lastModifiedDate":"2024-03-17"},{"lineNumber":90,"author":{"gitId":"UdhayaShan1"},"content":" + PHONE_DESC_BOB","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"UdhayaShan1"},"content":" + INCOME_DESC_BOB","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"UdhayaShan1"},"content":" + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"UdhayaShan1"},"content":" + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"UdhayaShan1"},"content":" + FAMILY_DESC_BOB","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"UdhayaShan1"},"content":" + TAG_DESC_BOB","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"UdhayaShan1"},"content":" + TAG_DESC_AMY","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"UdhayaShan1"},"content":" + TAG_DESC_BOB","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"UdhayaShan1"},"content":" + REMARK_DESC_BOB,","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"UdhayaShan1"},"content":" new AddCommand(expectedPersonMultipleTags));","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":104,"author":{"gitId":"UdhayaShan1"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + INCOME_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-11"},{"lineNumber":105,"author":{"gitId":"UdhayaShan1"},"content":" + ADDRESS_DESC_BOB + FAMILY_DESC_BOB + TAG_DESC_BOB + REMARK_DESC_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":107,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":109,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":111,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":115,"author":{"gitId":"UdhayaShan1"},"content":" //multiple incomes","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"UdhayaShan1"},"content":" assertParseFailure(parser, INCOME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"UdhayaShan1"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_INCOME));","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","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":" // multiple addresses","lastModifiedDate":"2023-07-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":127,"author":{"gitId":"UdhayaShan1"},"content":" // multiple family","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"UdhayaShan1"},"content":" assertParseFailure(parser, FAMILY_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-17"},{"lineNumber":129,"author":{"gitId":"UdhayaShan1"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_FAMILY));","lastModifiedDate":"2024-03-17"},{"lineNumber":130,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"UdhayaShan1"},"content":" //multiple remarks","lastModifiedDate":"2024-03-20"},{"lineNumber":132,"author":{"gitId":"UdhayaShan1"},"content":" assertParseFailure(parser, REMARK_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-20"},{"lineNumber":133,"author":{"gitId":"UdhayaShan1"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_REMARK));","lastModifiedDate":"2024-03-20"},{"lineNumber":134,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":135,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":137,"author":{"gitId":"UdhayaShan1"},"content":" validExpectedPersonString + PHONE_DESC_AMY + INCOME_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2024-03-11"},{"lineNumber":138,"author":{"gitId":"UdhayaShan1"},"content":" + NAME_DESC_AMY + ADDRESS_DESC_AMY + FAMILY_DESC_AMY + REMARK_DESC_AMY","lastModifiedDate":"2024-03-20"},{"lineNumber":139,"author":{"gitId":"-"},"content":" + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":140,"author":{"gitId":"UdhayaShan1"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_INCOME, PREFIX_ADDRESS, PREFIX_EMAIL,","lastModifiedDate":"2024-03-11"},{"lineNumber":141,"author":{"gitId":"UdhayaShan1"},"content":" PREFIX_PHONE, PREFIX_FAMILY, PREFIX_REMARK));","lastModifiedDate":"2024-03-20"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":143,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":145,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":147,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":149,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":150,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":151,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":153,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":154,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":155,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":157,"author":{"gitId":"UdhayaShan1"},"content":" // invalid income","lastModifiedDate":"2024-03-17"},{"lineNumber":158,"author":{"gitId":"UdhayaShan1"},"content":" assertParseFailure(parser, INVALID_INCOME_DESC + validExpectedPersonString,","lastModifiedDate":"2024-03-17"},{"lineNumber":159,"author":{"gitId":"UdhayaShan1"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_INCOME));","lastModifiedDate":"2024-03-17"},{"lineNumber":160,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":161,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":163,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":165,"author":{"gitId":"UdhayaShan1"},"content":" // invalid family","lastModifiedDate":"2024-03-17"},{"lineNumber":166,"author":{"gitId":"UdhayaShan1"},"content":" assertParseFailure(parser, INVALID_FAMILY_DESC + validExpectedPersonString,","lastModifiedDate":"2024-03-17"},{"lineNumber":167,"author":{"gitId":"UdhayaShan1"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_FAMILY));","lastModifiedDate":"2024-03-17"},{"lineNumber":168,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":169,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":171,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":172,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":173,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":175,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":176,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":177,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":179,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":180,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":181,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":183,"author":{"gitId":"UdhayaShan1"},"content":" // invalid income","lastModifiedDate":"2024-03-17"},{"lineNumber":184,"author":{"gitId":"UdhayaShan1"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_INCOME_DESC,","lastModifiedDate":"2024-03-17"},{"lineNumber":185,"author":{"gitId":"UdhayaShan1"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_INCOME));","lastModifiedDate":"2024-03-17"},{"lineNumber":186,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":187,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":188,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":189,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":190,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":191,"author":{"gitId":"UdhayaShan1"},"content":" // invalid family","lastModifiedDate":"2024-03-17"},{"lineNumber":192,"author":{"gitId":"UdhayaShan1"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_FAMILY_DESC,","lastModifiedDate":"2024-03-17"},{"lineNumber":193,"author":{"gitId":"UdhayaShan1"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_FAMILY));","lastModifiedDate":"2024-03-17"},{"lineNumber":194,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":196,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":197,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":198,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":200,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":201,"author":{"gitId":"UdhayaShan1"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-11"},{"lineNumber":202,"author":{"gitId":"UdhayaShan1"},"content":" VALID_NAME_BOB + PHONE_DESC_BOB + INCOME_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-11"},{"lineNumber":203,"author":{"gitId":"4llysa"},"content":" + ADDRESS_DESC_BOB + FAMILY_DESC_BOB + TAG_DESC_BOB,","lastModifiedDate":"2024-03-15"},{"lineNumber":204,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":206,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":207,"author":{"gitId":"UdhayaShan1"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-11"},{"lineNumber":208,"author":{"gitId":"UdhayaShan1"},"content":" NAME_DESC_BOB + VALID_PHONE_BOB + INCOME_DESC_BOB","lastModifiedDate":"2024-03-11"},{"lineNumber":209,"author":{"gitId":"4llysa"},"content":" + EMAIL_DESC_BOB + ADDRESS_DESC_BOB + FAMILY_DESC_BOB + TAG_DESC_BOB,","lastModifiedDate":"2024-03-15"},{"lineNumber":210,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":212,"author":{"gitId":"UdhayaShan1"},"content":" // missing income prefix","lastModifiedDate":"2024-03-17"},{"lineNumber":213,"author":{"gitId":"UdhayaShan1"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-17"},{"lineNumber":214,"author":{"gitId":"UdhayaShan1"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + VALID_INCOME_BOB","lastModifiedDate":"2024-03-17"},{"lineNumber":215,"author":{"gitId":"UdhayaShan1"},"content":" + EMAIL_DESC_BOB + ADDRESS_DESC_BOB + FAMILY_DESC_BOB + TAG_DESC_BOB,","lastModifiedDate":"2024-03-17"},{"lineNumber":216,"author":{"gitId":"UdhayaShan1"},"content":" expectedMessage);","lastModifiedDate":"2024-03-17"},{"lineNumber":217,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":218,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":219,"author":{"gitId":"UdhayaShan1"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-11"},{"lineNumber":220,"author":{"gitId":"UdhayaShan1"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + INCOME_DESC_BOB","lastModifiedDate":"2024-03-11"},{"lineNumber":221,"author":{"gitId":"4llysa"},"content":" + VALID_EMAIL_BOB + ADDRESS_DESC_BOB + FAMILY_DESC_BOB + TAG_DESC_BOB,","lastModifiedDate":"2024-03-15"},{"lineNumber":222,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":224,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":225,"author":{"gitId":"UdhayaShan1"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-11"},{"lineNumber":226,"author":{"gitId":"UdhayaShan1"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + INCOME_DESC_BOB","lastModifiedDate":"2024-03-11"},{"lineNumber":227,"author":{"gitId":"4llysa"},"content":" + EMAIL_DESC_BOB + VALID_ADDRESS_BOB + FAMILY_DESC_BOB + TAG_DESC_BOB,","lastModifiedDate":"2024-03-15"},{"lineNumber":228,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":230,"author":{"gitId":"UdhayaShan1"},"content":" // missing family prefix","lastModifiedDate":"2024-03-17"},{"lineNumber":231,"author":{"gitId":"4llysa"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-15"},{"lineNumber":232,"author":{"gitId":"UdhayaShan1"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + INCOME_DESC_BOB","lastModifiedDate":"2024-03-17"},{"lineNumber":233,"author":{"gitId":"UdhayaShan1"},"content":" + EMAIL_DESC_BOB + ADDRESS_DESC_BOB + VALID_FAMILY_BOB + TAG_DESC_BOB,","lastModifiedDate":"2024-03-17"},{"lineNumber":234,"author":{"gitId":"4llysa"},"content":" expectedMessage);","lastModifiedDate":"2024-03-15"},{"lineNumber":235,"author":{"gitId":"4llysa"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":236,"author":{"gitId":"4llysa"},"content":" // missing tag prefix","lastModifiedDate":"2024-03-15"},{"lineNumber":237,"author":{"gitId":"UdhayaShan1"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-11"},{"lineNumber":238,"author":{"gitId":"UdhayaShan1"},"content":" VALID_NAME_BOB + VALID_PHONE_BOB + INCOME_DESC_BOB","lastModifiedDate":"2024-03-11"},{"lineNumber":239,"author":{"gitId":"UdhayaShan1"},"content":" + VALID_EMAIL_BOB + VALID_ADDRESS_BOB + FAMILY_DESC_BOB,","lastModifiedDate":"2024-03-11"},{"lineNumber":240,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":241,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":242,"author":{"gitId":"UdhayaShan1"},"content":" // all prefixes missing","lastModifiedDate":"2024-03-17"},{"lineNumber":243,"author":{"gitId":"UdhayaShan1"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-17"},{"lineNumber":244,"author":{"gitId":"UdhayaShan1"},"content":" VALID_NAME_BOB + VALID_PHONE_BOB + INCOME_DESC_BOB","lastModifiedDate":"2024-03-17"},{"lineNumber":245,"author":{"gitId":"UdhayaShan1"},"content":" + VALID_EMAIL_BOB + VALID_ADDRESS_BOB + FAMILY_DESC_BOB + VALID_TAG_BOB,","lastModifiedDate":"2024-03-17"},{"lineNumber":246,"author":{"gitId":"UdhayaShan1"},"content":" expectedMessage);","lastModifiedDate":"2024-03-17"},{"lineNumber":247,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":249,"author":{"gitId":"UdhayaShan1"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":250,"author":{"gitId":"UdhayaShan1"},"content":" public void parse_optionalFieldMissing_success() {","lastModifiedDate":"2024-03-20"},{"lineNumber":251,"author":{"gitId":"UdhayaShan1"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withRemark(\"\").build();","lastModifiedDate":"2024-03-20"},{"lineNumber":252,"author":{"gitId":"UdhayaShan1"},"content":" assertParseSuccess(parser, NAME_DESC_BOB","lastModifiedDate":"2024-03-20"},{"lineNumber":253,"author":{"gitId":"UdhayaShan1"},"content":" + PHONE_DESC_BOB","lastModifiedDate":"2024-03-20"},{"lineNumber":254,"author":{"gitId":"UdhayaShan1"},"content":" + INCOME_DESC_BOB","lastModifiedDate":"2024-03-20"},{"lineNumber":255,"author":{"gitId":"UdhayaShan1"},"content":" + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-20"},{"lineNumber":256,"author":{"gitId":"UdhayaShan1"},"content":" + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-20"},{"lineNumber":257,"author":{"gitId":"UdhayaShan1"},"content":" + FAMILY_DESC_BOB","lastModifiedDate":"2024-03-20"},{"lineNumber":258,"author":{"gitId":"UdhayaShan1"},"content":" + TAG_DESC_BOB, new AddCommand(expectedPerson));","lastModifiedDate":"2024-03-20"},{"lineNumber":259,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":260,"author":{"gitId":"UdhayaShan1"},"content":" expectedPerson \u003d new PersonBuilder(AMY).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":261,"author":{"gitId":"UdhayaShan1"},"content":" assertParseSuccess(parser, NAME_DESC_AMY","lastModifiedDate":"2024-03-20"},{"lineNumber":262,"author":{"gitId":"UdhayaShan1"},"content":" + PHONE_DESC_AMY","lastModifiedDate":"2024-03-20"},{"lineNumber":263,"author":{"gitId":"UdhayaShan1"},"content":" + INCOME_DESC_AMY","lastModifiedDate":"2024-03-20"},{"lineNumber":264,"author":{"gitId":"UdhayaShan1"},"content":" + EMAIL_DESC_AMY","lastModifiedDate":"2024-03-20"},{"lineNumber":265,"author":{"gitId":"UdhayaShan1"},"content":" + ADDRESS_DESC_AMY","lastModifiedDate":"2024-03-20"},{"lineNumber":266,"author":{"gitId":"UdhayaShan1"},"content":" + FAMILY_DESC_AMY","lastModifiedDate":"2024-03-20"},{"lineNumber":267,"author":{"gitId":"UdhayaShan1"},"content":" + TAG_DESC_AMY, new AddCommand(expectedPerson));","lastModifiedDate":"2024-03-20"},{"lineNumber":268,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":269,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":270,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":271,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":272,"author":{"gitId":"4llysa"},"content":" System.out.println(INVALID_NAME_DESC + PHONE_DESC_BOB + INCOME_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-15"},{"lineNumber":273,"author":{"gitId":"4llysa"},"content":" + ADDRESS_DESC_BOB + FAMILY_DESC_BOB + TAG_DESC_BOB","lastModifiedDate":"2024-03-15"},{"lineNumber":274,"author":{"gitId":"4llysa"},"content":" + CommandTestUtil.TAG_DESC_BOB);","lastModifiedDate":"2024-03-15"},{"lineNumber":275,"author":{"gitId":"4llysa"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":276,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":277,"author":{"gitId":"UdhayaShan1"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-11"},{"lineNumber":278,"author":{"gitId":"UdhayaShan1"},"content":" INVALID_NAME_DESC + PHONE_DESC_BOB + INCOME_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-11"},{"lineNumber":279,"author":{"gitId":"4llysa"},"content":" + ADDRESS_DESC_BOB + FAMILY_DESC_BOB + TAG_DESC_BOB, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":281,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15"},{"lineNumber":282,"author":{"gitId":"UdhayaShan1"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-11"},{"lineNumber":283,"author":{"gitId":"UdhayaShan1"},"content":" NAME_DESC_BOB + INVALID_PHONE_DESC + INCOME_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-11"},{"lineNumber":284,"author":{"gitId":"UdhayaShan1"},"content":" + ADDRESS_DESC_BOB + FAMILY_DESC_BOB","lastModifiedDate":"2024-03-11"},{"lineNumber":285,"author":{"gitId":"4llysa"},"content":" + TAG_DESC_BOB, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":286,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":287,"author":{"gitId":"UdhayaShan1"},"content":" // invalid income","lastModifiedDate":"2024-03-17"},{"lineNumber":288,"author":{"gitId":"UdhayaShan1"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-17"},{"lineNumber":289,"author":{"gitId":"UdhayaShan1"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_INCOME_DESC + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-17"},{"lineNumber":290,"author":{"gitId":"UdhayaShan1"},"content":" + ADDRESS_DESC_BOB + FAMILY_DESC_BOB","lastModifiedDate":"2024-03-17"},{"lineNumber":291,"author":{"gitId":"UdhayaShan1"},"content":" + TAG_DESC_BOB, Income.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":292,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":293,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15"},{"lineNumber":294,"author":{"gitId":"UdhayaShan1"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-11"},{"lineNumber":295,"author":{"gitId":"UdhayaShan1"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB","lastModifiedDate":"2024-03-11"},{"lineNumber":296,"author":{"gitId":"UdhayaShan1"},"content":" + INCOME_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB + FAMILY_DESC_BOB","lastModifiedDate":"2024-03-11"},{"lineNumber":297,"author":{"gitId":"4llysa"},"content":" + CommandTestUtil.TAG_DESC_BOB + TAG_DESC_BOB, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":298,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":299,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15"},{"lineNumber":300,"author":{"gitId":"UdhayaShan1"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-11"},{"lineNumber":301,"author":{"gitId":"UdhayaShan1"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + INCOME_DESC_BOB","lastModifiedDate":"2024-03-11"},{"lineNumber":302,"author":{"gitId":"UdhayaShan1"},"content":" + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC + FAMILY_DESC_BOB","lastModifiedDate":"2024-03-11"},{"lineNumber":303,"author":{"gitId":"4llysa"},"content":" + CommandTestUtil.TAG_DESC_BOB + TAG_DESC_BOB, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":304,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":305,"author":{"gitId":"UdhayaShan1"},"content":" // invalid family","lastModifiedDate":"2024-03-17"},{"lineNumber":306,"author":{"gitId":"UdhayaShan1"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-17"},{"lineNumber":307,"author":{"gitId":"UdhayaShan1"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + INCOME_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-17"},{"lineNumber":308,"author":{"gitId":"UdhayaShan1"},"content":" + ADDRESS_DESC_BOB + INVALID_FAMILY_DESC","lastModifiedDate":"2024-03-17"},{"lineNumber":309,"author":{"gitId":"UdhayaShan1"},"content":" + TAG_DESC_BOB, Family.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":310,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":311,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15"},{"lineNumber":312,"author":{"gitId":"UdhayaShan1"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-11"},{"lineNumber":313,"author":{"gitId":"UdhayaShan1"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + INCOME_DESC_BOB","lastModifiedDate":"2024-03-11"},{"lineNumber":314,"author":{"gitId":"UdhayaShan1"},"content":" + EMAIL_DESC_BOB + ADDRESS_DESC_BOB + FAMILY_DESC_BOB","lastModifiedDate":"2024-03-11"},{"lineNumber":315,"author":{"gitId":"UdhayaShan1"},"content":" + INVALID_TAG_DESC + TAG_DESC_BOB, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":316,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":317,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":318,"author":{"gitId":"UdhayaShan1"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-11"},{"lineNumber":319,"author":{"gitId":"UdhayaShan1"},"content":" INVALID_NAME_DESC + PHONE_DESC_BOB + INCOME_DESC_BOB","lastModifiedDate":"2024-03-11"},{"lineNumber":320,"author":{"gitId":"UdhayaShan1"},"content":" + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC + FAMILY_DESC_BOB + TAG_DESC_BOB,","lastModifiedDate":"2024-03-17"},{"lineNumber":321,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":322,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":323,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":324,"author":{"gitId":"UdhayaShan1"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-11"},{"lineNumber":325,"author":{"gitId":"UdhayaShan1"},"content":" PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + INCOME_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-11"},{"lineNumber":326,"author":{"gitId":"4llysa"},"content":" + ADDRESS_DESC_BOB + FAMILY_DESC_BOB + CommandTestUtil.TAG_DESC_BOB + TAG_DESC_BOB,","lastModifiedDate":"2024-03-15"},{"lineNumber":327,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23"},{"lineNumber":328,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":329,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"4llysa":19,"UdhayaShan1":190,"-":117,"appleraincoat":3}},{"path":"src/test/java/seedu/realodex/logic/parser/ArgumentTokenizerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.parser;","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":1,"-":149}},{"path":"src/test/java/seedu/realodex/logic/parser/CommandParserTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.parser;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.Command;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2017-07-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, pe.getMessage());","lastModifiedDate":"2017-07-06"},{"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":{"UdhayaShan1":3,"-":36}},{"path":"src/test/java/seedu/realodex/logic/parser/DeleteCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.parser;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":3,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Name;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * As we are only doing white-box testing, our test cases do not cover path variations","lastModifiedDate":"2017-06-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * outside of the DeleteCommand code. For example, inputs \"1\" and \"1 abc\" take the","lastModifiedDate":"2017-06-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * same path through the DeleteCommand, and therefore we test only one of them.","lastModifiedDate":"2017-06-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * The path variation for those two cases occur inside the ParserUtil, and","lastModifiedDate":"2017-06-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * therefore should be covered by the ParserUtilTest.","lastModifiedDate":"2017-06-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class DeleteCommandParserTest {","lastModifiedDate":"2017-06-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private DeleteCommandParser parser \u003d new DeleteCommandParser();","lastModifiedDate":"2017-06-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09"},{"lineNumber":27,"author":{"gitId":"UdhayaShan1"},"content":" public void parse_validIndex_returnsDeleteCommand() {","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, \"1\", new DeleteCommand(INDEX_FIRST_PERSON));","lastModifiedDate":"2017-07-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":31,"author":{"gitId":"UdhayaShan1"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"UdhayaShan1"},"content":" public void parse_validName_returnsDeleteCommand() {","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"UdhayaShan1"},"content":" assertParseSuccess(parser, \" n/James\", new DeleteCommand(new Name(\"James\")));","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"UdhayaShan1"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"UdhayaShan1"},"content":" public void parse_invalidName_throwParseException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"UdhayaShan1"},"content":" assertThrows(ParseException.class, Name.MESSAGE_CONSTRAINTS, () -\u003e parser.parse(\" n/peter*\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"UdhayaShan1"},"content":" assertThrows(ParseException.class, Name.MESSAGE_CONSTRAINTS, () -\u003e parser.parse(\" n/ \"));","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"UdhayaShan1"},"content":" assertThrows(ParseException.class, Name.MESSAGE_CONSTRAINTS, () -\u003e parser.parse(\" n/^\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":45,"author":{"gitId":"wapisai"},"content":" assertParseFailure(parser, \"a\", String.format(MESSAGE_INVALID_INDEX, DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09"}],"authorContributionMap":{"UdhayaShan1":22,"-":24,"wapisai":1}},{"path":"src/test/java/seedu/realodex/logic/parser/EditCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.parser;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":3,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.FAMILY_DESC_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.FAMILY_DESC_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.INCOME_DESC_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.INVALID_FAMILY_DESC;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.INVALID_INCOME_DESC;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"appleraincoat"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.REMARK_DESC_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.REMARK_DESC_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.TAG_DESC_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.TAG_DESC_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_FAMILY_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_FAMILY_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_INCOME_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"appleraincoat"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_REMARK_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_REMARK_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_TAG_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_TAG_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_FAMILY;","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_INCOME;","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.index.Index;","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.Messages;","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.CommandTestUtil;","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.EditCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Address;","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Email;","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Family;","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Income;","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.tag.Tag;","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":66,"author":{"gitId":"4llysa"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":67,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":69,"author":{"gitId":"-"},"content":" private static final String TAG_EMPTY \u003d \" \" + PREFIX_TAG;","lastModifiedDate":"2017-05-04"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":71,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04"},{"lineNumber":72,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":74,"author":{"gitId":"UdhayaShan1"},"content":" private final EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":78,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":81,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-07-06"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":84,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"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_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06"},{"lineNumber":90,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":93,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":96,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2018-09-22"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2018-09-22"},{"lineNumber":104,"author":{"gitId":"wapisai"},"content":" assertParseFailure(parser, \"1\" + INVALID_INCOME_DESC, Income.MESSAGE_CONSTRAINTS); // invalid income","lastModifiedDate":"2024-03-16"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2018-09-22"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_ADDRESS_DESC, Address.MESSAGE_CONSTRAINTS); // invalid address","lastModifiedDate":"2018-09-22"},{"lineNumber":107,"author":{"gitId":"wapisai"},"content":" assertParseFailure(parser, \"1\" + INVALID_FAMILY_DESC, Family.MESSAGE_CONSTRAINTS); // invalid family","lastModifiedDate":"2024-03-16"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2018-09-22"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":110,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":113,"author":{"gitId":"-"},"content":" // while parsing {@code PREFIX_TAG} alone will reset the tags of the {@code Person} being edited,","lastModifiedDate":"2017-05-04"},{"lineNumber":114,"author":{"gitId":"-"},"content":" // parsing it together with a valid tag results in error","lastModifiedDate":"2017-05-04"},{"lineNumber":115,"author":{"gitId":"4llysa"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_BOB","lastModifiedDate":"2024-03-15"},{"lineNumber":116,"author":{"gitId":"4llysa"},"content":" + CommandTestUtil.TAG_DESC_BOB + TAG_EMPTY, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":117,"author":{"gitId":"4llysa"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_BOB + TAG_EMPTY","lastModifiedDate":"2024-03-15"},{"lineNumber":118,"author":{"gitId":"4llysa"},"content":" + CommandTestUtil.TAG_DESC_BOB, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":119,"author":{"gitId":"4llysa"},"content":" assertParseFailure(parser, \"1\" + TAG_EMPTY + TAG_DESC_BOB","lastModifiedDate":"2024-03-15"},{"lineNumber":120,"author":{"gitId":"4llysa"},"content":" + CommandTestUtil.TAG_DESC_BOB, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":122,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04"},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_ADDRESS_AMY + VALID_PHONE_AMY,","lastModifiedDate":"2017-07-06"},{"lineNumber":124,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":128,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":129,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":130,"author":{"gitId":"UdhayaShan1"},"content":" String userInput \u003d targetIndex.getOneBased()","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"UdhayaShan1"},"content":" + PHONE_DESC_BOB","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"UdhayaShan1"},"content":" + CommandTestUtil.TAG_DESC_BOB","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"UdhayaShan1"},"content":" + INCOME_DESC_AMY","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"UdhayaShan1"},"content":" + EMAIL_DESC_AMY","lastModifiedDate":"2024-03-17"},{"lineNumber":135,"author":{"gitId":"UdhayaShan1"},"content":" + ADDRESS_DESC_AMY","lastModifiedDate":"2024-03-17"},{"lineNumber":136,"author":{"gitId":"UdhayaShan1"},"content":" + NAME_DESC_AMY","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"UdhayaShan1"},"content":" + FAMILY_DESC_BOB","lastModifiedDate":"2024-03-17"},{"lineNumber":138,"author":{"gitId":"UdhayaShan1"},"content":" + TAG_DESC_BOB","lastModifiedDate":"2024-03-20"},{"lineNumber":139,"author":{"gitId":"UdhayaShan1"},"content":" + REMARK_DESC_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":140,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":141,"author":{"gitId":"UdhayaShan1"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder()","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"UdhayaShan1"},"content":" .withName(VALID_NAME_AMY)","lastModifiedDate":"2024-03-17"},{"lineNumber":143,"author":{"gitId":"UdhayaShan1"},"content":" .withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-17"},{"lineNumber":144,"author":{"gitId":"UdhayaShan1"},"content":" .withIncome(VALID_INCOME_AMY)","lastModifiedDate":"2024-03-17"},{"lineNumber":145,"author":{"gitId":"UdhayaShan1"},"content":" .withEmail(VALID_EMAIL_AMY)","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"UdhayaShan1"},"content":" .withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2024-03-17"},{"lineNumber":147,"author":{"gitId":"UdhayaShan1"},"content":" .withFamily(VALID_FAMILY_BOB)","lastModifiedDate":"2024-03-17"},{"lineNumber":148,"author":{"gitId":"UdhayaShan1"},"content":" .withTags(VALID_TAG_BOB)","lastModifiedDate":"2024-03-20"},{"lineNumber":149,"author":{"gitId":"UdhayaShan1"},"content":" .withRemark(VALID_REMARK_BOB)","lastModifiedDate":"2024-03-20"},{"lineNumber":150,"author":{"gitId":"UdhayaShan1"},"content":" .build();","lastModifiedDate":"2024-03-20"},{"lineNumber":151,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":153,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":158,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":159,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":161,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-04"},{"lineNumber":162,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":163,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"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":"","lastModifiedDate":"2017-05-04"},{"lineNumber":168,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":169,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":170,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04"},{"lineNumber":171,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":172,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":173,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":174,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"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":"-"},"content":" // phone","lastModifiedDate":"2017-05-04"},{"lineNumber":178,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":179,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":180,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":181,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":183,"author":{"gitId":"UdhayaShan1"},"content":" // income","lastModifiedDate":"2024-03-17"},{"lineNumber":184,"author":{"gitId":"UdhayaShan1"},"content":" userInput \u003d targetIndex.getOneBased() + INCOME_DESC_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":185,"author":{"gitId":"UdhayaShan1"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withIncome(VALID_INCOME_AMY).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":186,"author":{"gitId":"UdhayaShan1"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":187,"author":{"gitId":"UdhayaShan1"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-17"},{"lineNumber":188,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":189,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04"},{"lineNumber":190,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":191,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":192,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":193,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":195,"author":{"gitId":"-"},"content":" // address","lastModifiedDate":"2017-05-04"},{"lineNumber":196,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + ADDRESS_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":197,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":198,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":199,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":201,"author":{"gitId":"UdhayaShan1"},"content":" // family","lastModifiedDate":"2024-03-17"},{"lineNumber":202,"author":{"gitId":"UdhayaShan1"},"content":" userInput \u003d targetIndex.getOneBased() + FAMILY_DESC_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":203,"author":{"gitId":"UdhayaShan1"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withFamily(VALID_FAMILY_AMY).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":204,"author":{"gitId":"UdhayaShan1"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":205,"author":{"gitId":"UdhayaShan1"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-17"},{"lineNumber":206,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":207,"author":{"gitId":"UdhayaShan1"},"content":" // 1 tag","lastModifiedDate":"2024-03-17"},{"lineNumber":208,"author":{"gitId":"4llysa"},"content":" userInput \u003d targetIndex.getOneBased() + TAG_DESC_BOB;","lastModifiedDate":"2024-03-15"},{"lineNumber":209,"author":{"gitId":"4llysa"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withTags(VALID_TAG_BOB).build();","lastModifiedDate":"2024-03-15"},{"lineNumber":210,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":211,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":212,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":213,"author":{"gitId":"wapisai"},"content":" // remark","lastModifiedDate":"2024-03-19"},{"lineNumber":214,"author":{"gitId":"wapisai"},"content":" userInput \u003d targetIndex.getOneBased() + REMARK_DESC_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":215,"author":{"gitId":"wapisai"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withRemark(VALID_REMARK_AMY).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":216,"author":{"gitId":"UdhayaShan1"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":217,"author":{"gitId":"UdhayaShan1"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-20"},{"lineNumber":218,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":219,"author":{"gitId":"UdhayaShan1"},"content":" // 2 tags","lastModifiedDate":"2024-03-17"},{"lineNumber":220,"author":{"gitId":"UdhayaShan1"},"content":" userInput \u003d targetIndex.getOneBased() + TAG_DESC_BOB + TAG_DESC_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":221,"author":{"gitId":"UdhayaShan1"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withTags(VALID_TAG_BOB, VALID_TAG_AMY).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":222,"author":{"gitId":"wapisai"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":223,"author":{"gitId":"wapisai"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-19"},{"lineNumber":224,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":226,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":227,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":228,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14"},{"lineNumber":229,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-07-14"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":231,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14"},{"lineNumber":232,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":233,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2023-07-14"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":235,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":237,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14"},{"lineNumber":238,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2023-07-14"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":240,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":242,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":243,"author":{"gitId":"wapisai"},"content":" // multiple valid fields repeated","lastModifiedDate":"2024-03-19"},{"lineNumber":244,"author":{"gitId":"UdhayaShan1"},"content":" userInput \u003d","lastModifiedDate":"2024-03-17"},{"lineNumber":245,"author":{"gitId":"UdhayaShan1"},"content":" targetIndex.getOneBased()","lastModifiedDate":"2024-03-17"},{"lineNumber":246,"author":{"gitId":"UdhayaShan1"},"content":" + PHONE_DESC_AMY","lastModifiedDate":"2024-03-17"},{"lineNumber":247,"author":{"gitId":"UdhayaShan1"},"content":" + INCOME_DESC_AMY","lastModifiedDate":"2024-03-17"},{"lineNumber":248,"author":{"gitId":"UdhayaShan1"},"content":" + INCOME_DESC_AMY","lastModifiedDate":"2024-03-17"},{"lineNumber":249,"author":{"gitId":"UdhayaShan1"},"content":" + ADDRESS_DESC_AMY","lastModifiedDate":"2024-03-17"},{"lineNumber":250,"author":{"gitId":"UdhayaShan1"},"content":" + EMAIL_DESC_AMY","lastModifiedDate":"2024-03-17"},{"lineNumber":251,"author":{"gitId":"UdhayaShan1"},"content":" + FAMILY_DESC_AMY","lastModifiedDate":"2024-03-17"},{"lineNumber":252,"author":{"gitId":"UdhayaShan1"},"content":" + FAMILY_DESC_AMY","lastModifiedDate":"2024-03-17"},{"lineNumber":253,"author":{"gitId":"UdhayaShan1"},"content":" + TAG_DESC_BOB","lastModifiedDate":"2024-03-17"},{"lineNumber":254,"author":{"gitId":"UdhayaShan1"},"content":" + PHONE_DESC_AMY","lastModifiedDate":"2024-03-17"},{"lineNumber":255,"author":{"gitId":"UdhayaShan1"},"content":" + ADDRESS_DESC_AMY","lastModifiedDate":"2024-03-17"},{"lineNumber":256,"author":{"gitId":"UdhayaShan1"},"content":" + EMAIL_DESC_AMY","lastModifiedDate":"2024-03-17"},{"lineNumber":257,"author":{"gitId":"UdhayaShan1"},"content":" + TAG_DESC_BOB","lastModifiedDate":"2024-03-17"},{"lineNumber":258,"author":{"gitId":"UdhayaShan1"},"content":" + PHONE_DESC_BOB","lastModifiedDate":"2024-03-17"},{"lineNumber":259,"author":{"gitId":"UdhayaShan1"},"content":" + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-17"},{"lineNumber":260,"author":{"gitId":"UdhayaShan1"},"content":" + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-17"},{"lineNumber":261,"author":{"gitId":"UdhayaShan1"},"content":" + REMARK_DESC_AMY","lastModifiedDate":"2024-03-20"},{"lineNumber":262,"author":{"gitId":"UdhayaShan1"},"content":" + REMARK_DESC_BOB","lastModifiedDate":"2024-03-20"},{"lineNumber":263,"author":{"gitId":"UdhayaShan1"},"content":" + CommandTestUtil.TAG_DESC_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":265,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":266,"author":{"gitId":"UdhayaShan1"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-03-17"},{"lineNumber":267,"author":{"gitId":"UdhayaShan1"},"content":" PREFIX_INCOME, PREFIX_FAMILY, PREFIX_REMARK));","lastModifiedDate":"2024-03-20"},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":269,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14"},{"lineNumber":270,"author":{"gitId":"UdhayaShan1"},"content":" userInput \u003d targetIndex.getOneBased()","lastModifiedDate":"2024-03-17"},{"lineNumber":271,"author":{"gitId":"UdhayaShan1"},"content":" + INVALID_PHONE_DESC","lastModifiedDate":"2024-03-17"},{"lineNumber":272,"author":{"gitId":"UdhayaShan1"},"content":" + INVALID_INCOME_DESC","lastModifiedDate":"2024-03-17"},{"lineNumber":273,"author":{"gitId":"UdhayaShan1"},"content":" + INVALID_FAMILY_DESC","lastModifiedDate":"2024-03-17"},{"lineNumber":274,"author":{"gitId":"UdhayaShan1"},"content":" + INVALID_ADDRESS_DESC","lastModifiedDate":"2024-03-17"},{"lineNumber":275,"author":{"gitId":"UdhayaShan1"},"content":" + INVALID_EMAIL_DESC","lastModifiedDate":"2024-03-17"},{"lineNumber":276,"author":{"gitId":"UdhayaShan1"},"content":" + INVALID_PHONE_DESC","lastModifiedDate":"2024-03-17"},{"lineNumber":277,"author":{"gitId":"UdhayaShan1"},"content":" + INVALID_ADDRESS_DESC","lastModifiedDate":"2024-03-17"},{"lineNumber":278,"author":{"gitId":"UdhayaShan1"},"content":" + INVALID_EMAIL_DESC","lastModifiedDate":"2024-03-17"},{"lineNumber":279,"author":{"gitId":"UdhayaShan1"},"content":" + INVALID_INCOME_DESC","lastModifiedDate":"2024-03-17"},{"lineNumber":280,"author":{"gitId":"UdhayaShan1"},"content":" + INVALID_FAMILY_DESC;","lastModifiedDate":"2024-03-17"},{"lineNumber":281,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":282,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":283,"author":{"gitId":"UdhayaShan1"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-03-17"},{"lineNumber":284,"author":{"gitId":"UdhayaShan1"},"content":" PREFIX_INCOME, PREFIX_FAMILY));","lastModifiedDate":"2024-03-17"},{"lineNumber":285,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":286,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":287,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":288,"author":{"gitId":"-"},"content":" public void parse_resetTags_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":289,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":290,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_EMPTY;","lastModifiedDate":"2017-05-25"},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":292,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withTags().build();","lastModifiedDate":"2017-05-04"},{"lineNumber":293,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":294,"author":{"gitId":"wapisai"},"content":" assertParseFailure(parser, userInput, String.format(Tag.MESSAGE_CONSTRAINTS, targetIndex.getOneBased()));","lastModifiedDate":"2024-03-19"},{"lineNumber":295,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":296,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04"}],"authorContributionMap":{"4llysa":9,"UdhayaShan1":133,"-":140,"appleraincoat":2,"wapisai":12}},{"path":"src/test/java/seedu/realodex/logic/parser/FilterCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.parser;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":3,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.FilterCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.NameContainsKeyphrasePredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":12,"author":{"gitId":"jyztintan"},"content":"public class FilterCommandParserTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":14,"author":{"gitId":"jyztintan"},"content":" private FilterCommandParser parser \u003d new FilterCommandParser();","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2017-06-27"},{"lineNumber":18,"author":{"gitId":"jyztintan"},"content":" assertParseFailure(parser, \" \", String.format(MESSAGE_INVALID_COMMAND_FORMAT, FilterCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":22,"author":{"gitId":"jyztintan"},"content":" public void parse_validArgs_returnsFilterCommand() {","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2017-06-27"},{"lineNumber":24,"author":{"gitId":"jyztintan"},"content":" FilterCommand expectedFilterCommand \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"jyztintan"},"content":" new FilterCommand(new NameContainsKeyphrasePredicate(\"Alice Bob\"));","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"jyztintan"},"content":" assertParseSuccess(parser, \"Alice Bob\", expectedFilterCommand);","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-27"}],"authorContributionMap":{"jyztintan":7,"UdhayaShan1":6,"-":16}},{"path":"src/test/java/seedu/realodex/logic/parser/ParserUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.parser;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Address;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Email;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Family;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Income;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.remark.Remark;","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.tag.Tag;","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2017-05-22"},{"lineNumber":29,"author":{"gitId":"UdhayaShan1"},"content":" private static final String INVALID_INCOME \u003d \"-1\";","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2017-05-22"},{"lineNumber":31,"author":{"gitId":"UdhayaShan1"},"content":" private static final String INVALID_FAMILY \u003d \"0\";","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":33,"author":{"gitId":"4llysa"},"content":" private static final String INVALID_TAG_1 \u003d \"#buyer\";","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"4llysa"},"content":" private static final String INVALID_TAG_2 \u003d \"friend\";","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d \"123456\";","lastModifiedDate":"2017-05-22"},{"lineNumber":38,"author":{"gitId":"UdhayaShan1"},"content":" private static final String VALID_INCOME \u003d \"10000\";","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d \"123 Main Street #0505\";","lastModifiedDate":"2017-05-22"},{"lineNumber":40,"author":{"gitId":"UdhayaShan1"},"content":" private static final String VALID_FAMILY \u003d \"4\";","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":42,"author":{"gitId":"4llysa"},"content":" private static final String VALID_TAG_1 \u003d \"buyer\";","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"4llysa"},"content":" private static final String VALID_TAG_2 \u003d \"seller\";","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":45,"author":{"gitId":"UdhayaShan1"},"content":" private static final String VALID_REMARK_ONE \u003d \"I am Denzel Washington\";","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"UdhayaShan1"},"content":" private static final String VALID_REMARK_TWO \u003d \"I am Al Pacino\";","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","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":"UdhayaShan1"},"content":" public void parseIndex_outOfRangeInputButPositive_throwsParseException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":61,"author":{"gitId":"UdhayaShan1"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"UdhayaShan1"},"content":" public void parseIndex_outOfRangeInputButNegative_throwsParseException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"UdhayaShan1"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"UdhayaShan1"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(-1)));","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2017-05-25"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2017-05-25"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":88,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":94,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29"},{"lineNumber":95,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void parsePhone_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePhone((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void parsePhone_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhone(INVALID_PHONE));","lastModifiedDate":"2019-03-14"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":111,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-22"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(VALID_PHONE));","lastModifiedDate":"2017-05-30"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithWhitespace_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":117,"author":{"gitId":"-"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":118,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-30"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(phoneWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":122,"author":{"gitId":"UdhayaShan1"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"UdhayaShan1"},"content":" public void parseIncome_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"UdhayaShan1"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseIncome((String) null));","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"UdhayaShan1"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"UdhayaShan1"},"content":" public void parseIncome_invalidValue_throwsParseException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":129,"author":{"gitId":"4llysa"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIncome(INVALID_INCOME));","lastModifiedDate":"2024-03-19"},{"lineNumber":130,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"UdhayaShan1"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"UdhayaShan1"},"content":" public void parseIncome_validValueWithoutWhitespace_returnsIncome() throws Exception {","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"UdhayaShan1"},"content":" Income expectedIncome \u003d new Income(VALID_INCOME);","lastModifiedDate":"2024-03-17"},{"lineNumber":135,"author":{"gitId":"UdhayaShan1"},"content":" assertEquals(expectedIncome, ParserUtil.parseIncome(VALID_INCOME));","lastModifiedDate":"2024-03-17"},{"lineNumber":136,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":138,"author":{"gitId":"UdhayaShan1"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":139,"author":{"gitId":"UdhayaShan1"},"content":" public void parseIncome_validValueWithWhitespace_returnsTrimmedIncome() throws Exception {","lastModifiedDate":"2024-03-17"},{"lineNumber":140,"author":{"gitId":"UdhayaShan1"},"content":" String incomeWithWhitespace \u003d WHITESPACE + VALID_INCOME + WHITESPACE;","lastModifiedDate":"2024-03-17"},{"lineNumber":141,"author":{"gitId":"UdhayaShan1"},"content":" Income expectedIncome \u003d new Income(VALID_INCOME);","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"UdhayaShan1"},"content":" assertEquals(expectedIncome, ParserUtil.parseIncome(incomeWithWhitespace));","lastModifiedDate":"2024-03-17"},{"lineNumber":143,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":145,"author":{"gitId":"-"},"content":" public void parseAddress_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseAddress((String) null));","lastModifiedDate":"2019-03-14"},{"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 parseAddress_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":151,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseAddress(INVALID_ADDRESS));","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 parseAddress_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":156,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-22"},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(VALID_ADDRESS));","lastModifiedDate":"2017-05-30"},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":160,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":161,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":162,"author":{"gitId":"-"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_ADDRESS + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":163,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-30"},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(addressWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":166,"author":{"gitId":"UdhayaShan1"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":167,"author":{"gitId":"UdhayaShan1"},"content":" public void parseFamily_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":168,"author":{"gitId":"UdhayaShan1"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseFamily((String) null));","lastModifiedDate":"2024-03-17"},{"lineNumber":169,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":170,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":171,"author":{"gitId":"UdhayaShan1"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":172,"author":{"gitId":"UdhayaShan1"},"content":" public void parseFamily_invalidValue_throwsParseException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":173,"author":{"gitId":"UdhayaShan1"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseFamily(INVALID_FAMILY));","lastModifiedDate":"2024-03-17"},{"lineNumber":174,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":175,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":176,"author":{"gitId":"UdhayaShan1"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":177,"author":{"gitId":"UdhayaShan1"},"content":" public void parseFamily_validValueWithoutWhitespace_returnsFamily() throws Exception {","lastModifiedDate":"2024-03-17"},{"lineNumber":178,"author":{"gitId":"UdhayaShan1"},"content":" Family expectedFamily \u003d new Family(VALID_FAMILY);","lastModifiedDate":"2024-03-17"},{"lineNumber":179,"author":{"gitId":"UdhayaShan1"},"content":" assertEquals(expectedFamily, ParserUtil.parseFamily(VALID_FAMILY));","lastModifiedDate":"2024-03-17"},{"lineNumber":180,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":181,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":182,"author":{"gitId":"UdhayaShan1"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":183,"author":{"gitId":"UdhayaShan1"},"content":" public void parseFamily_validValueWithWhitespace_returnsTrimmedFamily() throws Exception {","lastModifiedDate":"2024-03-17"},{"lineNumber":184,"author":{"gitId":"UdhayaShan1"},"content":" String familyWithWhitespace \u003d WHITESPACE + VALID_FAMILY + WHITESPACE;","lastModifiedDate":"2024-03-17"},{"lineNumber":185,"author":{"gitId":"UdhayaShan1"},"content":" Family expectedFamily \u003d new Family(VALID_FAMILY);","lastModifiedDate":"2024-03-17"},{"lineNumber":186,"author":{"gitId":"UdhayaShan1"},"content":" assertEquals(expectedFamily, ParserUtil.parseFamily(familyWithWhitespace));","lastModifiedDate":"2024-03-17"},{"lineNumber":187,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-17"},{"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 parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":191,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":194,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":195,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":196,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14"},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":199,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":200,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":201,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22"},{"lineNumber":202,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30"},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":205,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":206,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":207,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":208,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30"},{"lineNumber":209,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30"},{"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-30"},{"lineNumber":213,"author":{"gitId":"-"},"content":" public void parseTag_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":217,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":218,"author":{"gitId":"-"},"content":" public void parseTag_invalidValue_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":219,"author":{"gitId":"4llysa"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTag(INVALID_TAG_1));","lastModifiedDate":"2024-03-19"},{"lineNumber":220,"author":{"gitId":"4llysa"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTag(INVALID_TAG_2));","lastModifiedDate":"2024-03-19"},{"lineNumber":221,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":223,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":224,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithoutWhitespace_returnsTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":225,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30"},{"lineNumber":226,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(VALID_TAG_1));","lastModifiedDate":"2017-05-30"},{"lineNumber":227,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":229,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":230,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithWhitespace_returnsTrimmedTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":231,"author":{"gitId":"-"},"content":" String tagWithWhitespace \u003d WHITESPACE + VALID_TAG_1 + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":232,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30"},{"lineNumber":233,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(tagWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":234,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":236,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":237,"author":{"gitId":"-"},"content":" public void parseTags_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTags(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":241,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":242,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithInvalidTags_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":243,"author":{"gitId":"4llysa"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, INVALID_TAG_1)));","lastModifiedDate":"2024-03-19"},{"lineNumber":244,"author":{"gitId":"4llysa"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, INVALID_TAG_2)));","lastModifiedDate":"2024-03-19"},{"lineNumber":245,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":247,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":248,"author":{"gitId":"-"},"content":" public void parseTags_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2017-05-22"},{"lineNumber":249,"author":{"gitId":"-"},"content":" assertTrue(ParserUtil.parseTags(Collections.emptyList()).isEmpty());","lastModifiedDate":"2017-05-22"},{"lineNumber":250,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":252,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":253,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithValidTags_returnsTagSet() throws Exception {","lastModifiedDate":"2017-05-22"},{"lineNumber":254,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e actualTagSet \u003d ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, VALID_TAG_2));","lastModifiedDate":"2017-05-22"},{"lineNumber":255,"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":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":257,"author":{"gitId":"-"},"content":" assertEquals(expectedTagSet, actualTagSet);","lastModifiedDate":"2017-05-22"},{"lineNumber":258,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":259,"author":{"gitId":"4llysa"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":260,"author":{"gitId":"4llysa"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":261,"author":{"gitId":"4llysa"},"content":" public void parseTags_sinlgeDuplicateTags_ignoresDuplicates() throws Exception {","lastModifiedDate":"2024-03-19"},{"lineNumber":262,"author":{"gitId":"4llysa"},"content":" Set\u003cTag\u003e tagSetWithDuplicates \u003d ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, VALID_TAG_1));","lastModifiedDate":"2024-03-19"},{"lineNumber":263,"author":{"gitId":"4llysa"},"content":" Set\u003cTag\u003e expectedTagSet \u003d new HashSet\u003cTag\u003e(Arrays.asList(new Tag(VALID_TAG_1)));","lastModifiedDate":"2024-03-19"},{"lineNumber":264,"author":{"gitId":"4llysa"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":265,"author":{"gitId":"4llysa"},"content":" assertEquals(tagSetWithDuplicates, expectedTagSet);","lastModifiedDate":"2024-03-19"},{"lineNumber":266,"author":{"gitId":"4llysa"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":267,"author":{"gitId":"4llysa"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":268,"author":{"gitId":"4llysa"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":269,"author":{"gitId":"4llysa"},"content":" public void parseTags_multipleDuplicateTags_ignoresDuplicates() throws Exception {","lastModifiedDate":"2024-03-19"},{"lineNumber":270,"author":{"gitId":"4llysa"},"content":" Set\u003cTag\u003e tagSetWithMultipleDuplicates \u003d ParserUtil.parseTags(Arrays.asList(","lastModifiedDate":"2024-03-19"},{"lineNumber":271,"author":{"gitId":"4llysa"},"content":" VALID_TAG_1, VALID_TAG_2, VALID_TAG_1, VALID_TAG_2));","lastModifiedDate":"2024-03-19"},{"lineNumber":272,"author":{"gitId":"4llysa"},"content":" Set\u003cTag\u003e expectedTagSet \u003d new HashSet\u003cTag\u003e(Arrays.asList(new Tag(VALID_TAG_1), new Tag(VALID_TAG_2)));","lastModifiedDate":"2024-03-19"},{"lineNumber":273,"author":{"gitId":"4llysa"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":274,"author":{"gitId":"4llysa"},"content":" assertEquals(tagSetWithMultipleDuplicates, expectedTagSet);","lastModifiedDate":"2024-03-19"},{"lineNumber":275,"author":{"gitId":"4llysa"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":276,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":277,"author":{"gitId":"UdhayaShan1"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":278,"author":{"gitId":"UdhayaShan1"},"content":" public void parseRemark_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":279,"author":{"gitId":"UdhayaShan1"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseRemark((String) null));","lastModifiedDate":"2024-03-20"},{"lineNumber":280,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":281,"author":{"gitId":"UdhayaShan1"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":282,"author":{"gitId":"UdhayaShan1"},"content":" public void parseRemark_validValueWithoutWhitespace_returnsRemark() throws Exception {","lastModifiedDate":"2024-03-20"},{"lineNumber":283,"author":{"gitId":"UdhayaShan1"},"content":" Remark expectedRemark \u003d new Remark(VALID_REMARK_ONE);","lastModifiedDate":"2024-03-20"},{"lineNumber":284,"author":{"gitId":"UdhayaShan1"},"content":" assertEquals(expectedRemark, ParserUtil.parseRemark(VALID_REMARK_ONE));","lastModifiedDate":"2024-03-20"},{"lineNumber":285,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":286,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":287,"author":{"gitId":"UdhayaShan1"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":288,"author":{"gitId":"UdhayaShan1"},"content":" public void parseRemark_validValueWithWhitespace_returnsTrimmedRemark() throws Exception {","lastModifiedDate":"2024-03-20"},{"lineNumber":289,"author":{"gitId":"UdhayaShan1"},"content":" String remarkWithWhitespace \u003d WHITESPACE + VALID_REMARK_ONE + WHITESPACE;","lastModifiedDate":"2024-03-20"},{"lineNumber":290,"author":{"gitId":"UdhayaShan1"},"content":" Remark expectedRemark \u003d new Remark(VALID_REMARK_ONE);","lastModifiedDate":"2024-03-20"},{"lineNumber":291,"author":{"gitId":"UdhayaShan1"},"content":" assertEquals(expectedRemark, ParserUtil.parseRemark(remarkWithWhitespace));","lastModifiedDate":"2024-03-20"},{"lineNumber":292,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":293,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22"}],"authorContributionMap":{"4llysa":26,"UdhayaShan1":86,"-":181}},{"path":"src/test/java/seedu/realodex/logic/parser/RealodexParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.parser;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":12,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.AddCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.ClearCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.EditCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.ExitCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.FilterCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.HelpCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.ListCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Name;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.NameContainsKeyphrasePredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.testutil.PersonBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.testutil.PersonUtil;","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":29,"author":{"gitId":"UdhayaShan1"},"content":"public class RealodexParserTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":31,"author":{"gitId":"UdhayaShan1"},"content":" private final RealodexParser parser \u003d new RealodexParser();","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"UdhayaShan1"},"content":" public void parseCommand_deleteByIndex() throws Exception {","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"UdhayaShan1"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"UdhayaShan1"},"content":" public void parseCommand_deleteByName() throws Exception {","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"UdhayaShan1"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"UdhayaShan1"},"content":" DeleteCommand.COMMAND_WORD + \" \" + \"n/James\");","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"UdhayaShan1"},"content":" assertEquals(new DeleteCommand(new Name(\"James\")), command);","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"UdhayaShan1"},"content":" command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"UdhayaShan1"},"content":" DeleteCommand.COMMAND_WORD + \" \" + \"n/ Denzel Untrimmed \");","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"UdhayaShan1"},"content":" assertEquals(new DeleteCommand(new Name(\"Denzel Untrimmed\")), command);","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-20"},{"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":"jyztintan"},"content":" public void parseCommand_filter() throws Exception {","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"jyztintan"},"content":" String keyphrase \u003d \"foo bar baz\";","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"jyztintan"},"content":" FilterCommand command \u003d (FilterCommand) parser.parseCommand(","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"jyztintan"},"content":" FilterCommand.COMMAND_WORD + \" \" + keyphrase);","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"jyztintan"},"content":" assertEquals(new FilterCommand(new NameContainsKeyphrasePredicate(keyphrase)), command);","lastModifiedDate":"2024-03-16"},{"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":{"jyztintan":5,"UdhayaShan1":35,"-":69}},{"path":"src/test/java/seedu/realodex/model/ModelManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.model;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2024-03-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":"","lastModifiedDate":"2017-05-31"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":16,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.GuiSettings;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.NameContainsKeyphrasePredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.testutil.RealodexBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class ModelManagerTest {","lastModifiedDate":"2017-05-31"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2018-08-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertEquals(new GuiSettings(), modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"UdhayaShan1"},"content":" assertEquals(new Realodex(), new Realodex(modelManager.getRealodex()));","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void setUserPrefs_nullUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setUserPrefs(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void setUserPrefs_validUserPrefs_copiesUserPrefs() {","lastModifiedDate":"2018-12-06"},{"lineNumber":38,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"UdhayaShan1"},"content":" userPrefs.setRealodexFilePath(Paths.get(\"address/book/file/path\"));","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1, 2, 3, 4));","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" modelManager.setUserPrefs(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // Modifying userPrefs should not modify modelManager\u0027s userPrefs","lastModifiedDate":"2018-12-06"},{"lineNumber":45,"author":{"gitId":"-"},"content":" UserPrefs oldUserPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":46,"author":{"gitId":"UdhayaShan1"},"content":" userPrefs.setRealodexFilePath(Paths.get(\"new/address/book/file/path\"));","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertEquals(oldUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setGuiSettings(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void setGuiSettings_validGuiSettings_setsGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1, 2, 3, 4);","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" modelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertEquals(guiSettings, modelManager.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":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"UdhayaShan1"},"content":" public void setRealodexFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"UdhayaShan1"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setRealodexFilePath(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"UdhayaShan1"},"content":" public void setRealodexFilePath_validPath_setsRealodexFilePath() {","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" Path path \u003d Paths.get(\"address/book/file/path\");","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"UdhayaShan1"},"content":" modelManager.setRealodexFilePath(path);","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"UdhayaShan1"},"content":" assertEquals(path, modelManager.getRealodexFilePath());","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasPerson(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":80,"author":{"gitId":"UdhayaShan1"},"content":" public void hasPerson_personNotInRealodex_returnsFalse() {","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertFalse(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":85,"author":{"gitId":"UdhayaShan1"},"content":" public void hasPerson_personInRealodex_returnsTrue() {","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" modelManager.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertTrue(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":97,"author":{"gitId":"UdhayaShan1"},"content":" Realodex realodex \u003d new RealodexBuilder().withPerson(ALICE).withPerson(BENSON).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"UdhayaShan1"},"content":" Realodex differentRealodex \u003d new Realodex();","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":101,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":102,"author":{"gitId":"UdhayaShan1"},"content":" modelManager \u003d new ModelManager(realodex, userPrefs);","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"UdhayaShan1"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(realodex, userPrefs);","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":106,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":109,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":112,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":115,"author":{"gitId":"UdhayaShan1"},"content":" // different realodex -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":116,"author":{"gitId":"UdhayaShan1"},"content":" assertFalse(modelManager.equals(new ModelManager(differentRealodex, userPrefs)));","lastModifiedDate":"2024-03-19"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":118,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":119,"author":{"gitId":"jyztintan"},"content":" String keyphrase \u003d ALICE.getName().fullName;","lastModifiedDate":"2024-03-16"},{"lineNumber":120,"author":{"gitId":"jyztintan"},"content":" modelManager.updateFilteredPersonList(new NameContainsKeyphrasePredicate(keyphrase));","lastModifiedDate":"2024-03-16"},{"lineNumber":121,"author":{"gitId":"UdhayaShan1"},"content":" assertFalse(modelManager.equals(new ModelManager(realodex, userPrefs)));","lastModifiedDate":"2024-03-19"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":123,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2017-08-05"},{"lineNumber":124,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":126,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27"},{"lineNumber":127,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":128,"author":{"gitId":"UdhayaShan1"},"content":" differentUserPrefs.setRealodexFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2024-03-19"},{"lineNumber":129,"author":{"gitId":"UdhayaShan1"},"content":" assertFalse(modelManager.equals(new ModelManager(realodex, differentUserPrefs)));","lastModifiedDate":"2024-03-19"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":131,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31"}],"authorContributionMap":{"jyztintan":2,"UdhayaShan1":27,"-":102}},{"path":"src/test/java/seedu/realodex/model/RealodexTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.model;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_TAG_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.TypicalPersons.getTypicalRealodex;","lastModifiedDate":"2024-03-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":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.testutil.PersonBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":25,"author":{"gitId":"UdhayaShan1"},"content":"public class RealodexTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":27,"author":{"gitId":"UdhayaShan1"},"content":" private final Realodex realodex \u003d new Realodex();","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" assertEquals(Collections.emptyList(), realodex.getPersonList());","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" assertThrows(NullPointerException.class, () -\u003e realodex.resetData(null));","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" public void resetData_withValidReadOnlyRealodex_replacesData() {","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"UdhayaShan1"},"content":" Realodex newData \u003d getTypicalRealodex();","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"UdhayaShan1"},"content":" realodex.resetData(newData);","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"UdhayaShan1"},"content":" assertEquals(newData, realodex);","lastModifiedDate":"2024-03-19"},{"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":"4llysa"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_AMY)","lastModifiedDate":"2024-03-15"},{"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":"UdhayaShan1"},"content":" RealodexStub newData \u003d new RealodexStub(newPersons);","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":54,"author":{"gitId":"UdhayaShan1"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e realodex.resetData(newData));","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" assertThrows(NullPointerException.class, () -\u003e realodex.hasPerson(null));","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" public void hasPerson_personNotInRealodex_returnsFalse() {","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"UdhayaShan1"},"content":" assertFalse(realodex.hasPerson(ALICE));","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" public void hasPerson_personInRealodex_returnsTrue() {","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"UdhayaShan1"},"content":" realodex.addPerson(ALICE);","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"UdhayaShan1"},"content":" assertTrue(realodex.hasPerson(ALICE));","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" public void hasPerson_personWithSameIdentityFieldsInRealodex_returnsTrue() {","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"UdhayaShan1"},"content":" realodex.addPerson(ALICE);","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"4llysa"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_AMY)","lastModifiedDate":"2024-03-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-06"},{"lineNumber":78,"author":{"gitId":"UdhayaShan1"},"content":" assertTrue(realodex.hasPerson(editedAlice));","lastModifiedDate":"2024-03-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":"2017-09-01"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void getPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":83,"author":{"gitId":"UdhayaShan1"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e realodex.getPersonList().remove(0));","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" String expected \u003d Realodex.class.getCanonicalName() + \"{persons\u003d\" + realodex.getPersonList() + \"}\";","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"UdhayaShan1"},"content":" assertEquals(expected, realodex.toString());","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" * A stub ReadOnlyRealodex whose persons list can violate interface constraints.","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-24"},{"lineNumber":95,"author":{"gitId":"UdhayaShan1"},"content":" private static class RealodexStub implements ReadOnlyRealodex {","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" RealodexStub(Collection\u003cPerson\u003e persons) {","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":"}","lastModifiedDate":"2016-12-24"}],"authorContributionMap":{"4llysa":2,"UdhayaShan1":34,"-":72}},{"path":"src/test/java/seedu/realodex/model/UserPrefsTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.model;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":3,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" public void setRealodexFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":18,"author":{"gitId":"UdhayaShan1"},"content":" assertThrows(NullPointerException.class, () -\u003e userPrefs.setRealodexFilePath(null));","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":4,"-":17}},{"path":"src/test/java/seedu/realodex/model/person/AddressTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.model.person;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":2,"-":54}},{"path":"src/test/java/seedu/realodex/model/person/EmailTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.model.person;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":2,"-":86}},{"path":"src/test/java/seedu/realodex/model/person/FamilyTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.model.person;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"wapisai"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"wapisai"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"wapisai"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"wapisai"},"content":"public class FamilyTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"wapisai"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"wapisai"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"wapisai"},"content":" assertThrows(NullPointerException.class, () -\u003e new Family(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"wapisai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"wapisai"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"UdhayaShan1"},"content":" public void constructor_invalidFamily_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"wapisai"},"content":" String invalidFamily \u003d \"\";","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"UdhayaShan1"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Family(invalidFamily));","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"UdhayaShan1"},"content":" String invalidFamilyWithSpaces \u003d \" \";","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"UdhayaShan1"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Family(invalidFamilyWithSpaces));","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"wapisai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"wapisai"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"wapisai"},"content":" public void isValidFamily() {","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"wapisai"},"content":" // null family size","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"UdhayaShan1"},"content":" assertThrows(NullPointerException.class, () -\u003e Family.isValidFamily(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"wapisai"},"content":" // invalid family sizes","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"wapisai"},"content":" assertFalse(Family.isValidFamily(\"0\")); // less than 1","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"UdhayaShan1"},"content":" assertFalse(Family.isValidFamily(\"-1\")); // less than 1","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"UdhayaShan1"},"content":" assertFalse(Family.isValidFamily(\"-2\")); // less than 1","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"UdhayaShan1"},"content":" assertFalse(Family.isValidFamily(\"-12313231231313\")); // very negative","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"wapisai"},"content":" // valid family numbers","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"wapisai"},"content":" assertTrue(Family.isValidFamily(\"2\")); // more than 1","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"UdhayaShan1"},"content":" assertTrue(Family.isValidFamily(\"93121\")); // huge family","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"UdhayaShan1"},"content":" assertTrue(Family.isValidFamily(\"12422131313131938\")); // very huge family","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"wapisai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"wapisai"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"wapisai"},"content":" public void equals() {","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"wapisai"},"content":" Family family \u003d new Family(\"999\");","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"wapisai"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"wapisai"},"content":" assertTrue(family.equals(new Family(\"999\")));","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"wapisai"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"wapisai"},"content":" assertTrue(family.equals(family));","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"wapisai"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"wapisai"},"content":" assertFalse(family.equals(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"UdhayaShan1"},"content":" // different types (integer vs float) -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"wapisai"},"content":" assertFalse(family.equals(5.0f));","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"UdhayaShan1"},"content":" //different types (integer vs words) -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"UdhayaShan1"},"content":" assertFalse(family.equals(\"OKKK\"));","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"wapisai"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"wapisai"},"content":" assertFalse(family.equals(new Family(\"995\")));","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"wapisai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"wapisai"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"UdhayaShan1":16,"wapisai":48}},{"path":"src/test/java/seedu/realodex/model/person/IncomeTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.model.person;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"wapisai"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"wapisai"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"wapisai"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"wapisai"},"content":"public class IncomeTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"wapisai"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"wapisai"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"wapisai"},"content":" assertThrows(NullPointerException.class, () -\u003e new Income(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"wapisai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"wapisai"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"UdhayaShan1"},"content":" public void constructor_invalidIncome_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"wapisai"},"content":" String invalidIncome \u003d \"\";","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"UdhayaShan1"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Income(invalidIncome));","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"UdhayaShan1"},"content":" String invalidIncomeWithSpaces \u003d \" \";","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"UdhayaShan1"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Income(invalidIncomeWithSpaces));","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"wapisai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"wapisai"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"wapisai"},"content":" public void isValidIncome() {","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"wapisai"},"content":" // null income","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"UdhayaShan1"},"content":" assertThrows(NullPointerException.class, () -\u003e Income.isValidIncome(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"wapisai"},"content":" // invalid income","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"wapisai"},"content":" assertFalse(Income.isValidIncome(\"-1\")); // less than 0","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"UdhayaShan1"},"content":" assertFalse(Income.isValidIncome(\"-3\")); // less than 0","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"UdhayaShan1"},"content":" assertFalse(Income.isValidIncome(\"-121333213213131313\")); // less than 0 but very negative","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"wapisai"},"content":" // valid income numbers","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"wapisai"},"content":" assertTrue(Income.isValidIncome(\"2\")); // more than 1","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"wapisai"},"content":" assertTrue(Income.isValidIncome(\"93121\"));","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"UdhayaShan1"},"content":" assertTrue(Income.isValidIncome(\"1242938231332131313\")); // long number","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"wapisai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"wapisai"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"wapisai"},"content":" public void equals() {","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"wapisai"},"content":" Income income \u003d new Income(\"999\");","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"wapisai"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"wapisai"},"content":" assertTrue(income.equals(new Income(\"999\")));","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"wapisai"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"wapisai"},"content":" assertTrue(income.equals(income));","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"wapisai"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"wapisai"},"content":" assertFalse(income.equals(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"UdhayaShan1"},"content":" // different types (integer vs float) -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"wapisai"},"content":" assertFalse(income.equals(5.0f));","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"UdhayaShan1"},"content":" // different types (integer vs word) -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"UdhayaShan1"},"content":" assertFalse(income.equals(\"imaword!\"));","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"wapisai"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"wapisai"},"content":" assertFalse(income.equals(new Income(\"995\")));","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"wapisai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"wapisai"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"UdhayaShan1":15,"wapisai":49}},{"path":"src/test/java/seedu/realodex/model/person/NameContainsKeyphrasePredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.model.person;","lastModifiedDate":"2024-03-19"},{"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 org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.testutil.PersonBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"jyztintan"},"content":"public class NameContainsKeyphrasePredicateTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"jyztintan"},"content":" String firstPredicateKeyphrase \u003d \"first\";","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"jyztintan"},"content":" String secondPredicateKeyphrase \u003d \"first second\";","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"jyztintan"},"content":" NameContainsKeyphrasePredicate firstPredicate \u003d new NameContainsKeyphrasePredicate(firstPredicateKeyphrase);","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"jyztintan"},"content":" NameContainsKeyphrasePredicate secondPredicate \u003d new NameContainsKeyphrasePredicate(secondPredicateKeyphrase);","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"jyztintan"},"content":" NameContainsKeyphrasePredicate firstPredicateCopy \u003d new NameContainsKeyphrasePredicate(firstPredicateKeyphrase);","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2017-06-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"jyztintan"},"content":" public void test_nameContainsKeyphrase_returnsTrue() {","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"jyztintan"},"content":" // Keyphrase is one word","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"jyztintan"},"content":" NameContainsKeyphrasePredicate predicate \u003d new NameContainsKeyphrasePredicate(\"Alice\");","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"jyztintan"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice\").build()));","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":44,"author":{"gitId":"jyztintan"},"content":" // Keyphrase is more than one word","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"jyztintan"},"content":" predicate \u003d new NameContainsKeyphrasePredicate(\"Alice Tan\");","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"jyztintan"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Tan\").build()));","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"jyztintan"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"jyztintan"},"content":" // Name does not start with matching keyphrase","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"jyztintan"},"content":" predicate \u003d new NameContainsKeyphrasePredicate(\"Alice\");","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"jyztintan"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Annoying Alice\").build()));","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":52,"author":{"gitId":"jyztintan"},"content":" // Keyphrase is not the full word","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"jyztintan"},"content":" predicate \u003d new NameContainsKeyphrasePredicate(\"lice\");","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"jyztintan"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice\").build()));","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"jyztintan"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"jyztintan"},"content":" // Not exact word and not starting with keyphrase","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"jyztintan"},"content":" predicate \u003d new NameContainsKeyphrasePredicate(\"lice\");","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"jyztintan"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Annoying Alice\").build()));","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":60,"author":{"gitId":"jyztintan"},"content":" // Mixed-case keyphrase","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"jyztintan"},"content":" predicate \u003d new NameContainsKeyphrasePredicate(\"aLIce bOB\");","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":66,"author":{"gitId":"jyztintan"},"content":" public void test_nameDoesNotContainKeyphrase_returnsFalse() {","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":68,"author":{"gitId":"jyztintan"},"content":" // Non-matching keyphrase","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"jyztintan"},"content":" NameContainsKeyphrasePredicate predicate \u003d new NameContainsKeyphrasePredicate(\"Carol\");","lastModifiedDate":"2024-03-16"},{"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":"jyztintan"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").withPhone(\"12345\")","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"jyztintan"},"content":" .withEmail(\"alice@email.com\").withAddress(\"Main Street\").build();","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"jyztintan"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"jyztintan"},"content":" // Keyphrase match phone but does not match name","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"jyztintan"},"content":" predicate \u003d new NameContainsKeyphrasePredicate(\"12345\");","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"jyztintan"},"content":" assertFalse(predicate.test(alice));","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"jyztintan"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"jyztintan"},"content":" // Keyphrase match email but does not match name","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"jyztintan"},"content":" predicate \u003d new NameContainsKeyphrasePredicate(\"alice@email.com\");","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"jyztintan"},"content":" assertFalse(predicate.test(alice));","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"jyztintan"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"jyztintan"},"content":" // Keyphrase match address but does not match name","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"jyztintan"},"content":" predicate \u003d new NameContainsKeyphrasePredicate(\"Main\");","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"jyztintan"},"content":" assertFalse(predicate.test(alice));","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"jyztintan"},"content":" predicate \u003d new NameContainsKeyphrasePredicate(\"Street\");","lastModifiedDate":"2024-03-16"},{"lineNumber":87,"author":{"gitId":"jyztintan"},"content":" assertFalse(predicate.test(alice));","lastModifiedDate":"2024-03-16"},{"lineNumber":88,"author":{"gitId":"jyztintan"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"jyztintan"},"content":" String keyphrase \u003d \"keyphrase yapyap\";","lastModifiedDate":"2024-03-16"},{"lineNumber":94,"author":{"gitId":"jyztintan"},"content":" NameContainsKeyphrasePredicate predicate \u003d new NameContainsKeyphrasePredicate(keyphrase);","lastModifiedDate":"2024-03-16"},{"lineNumber":95,"author":{"gitId":"jyztintan"},"content":" String expected \u003d NameContainsKeyphrasePredicate.class.getCanonicalName() + \"{keyphrase\u003d\" + keyphrase + \"}\";","lastModifiedDate":"2024-03-16"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"jyztintan":49,"UdhayaShan1":2,"-":47}},{"path":"src/test/java/seedu/realodex/model/person/NameTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.model.person;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":" // valid name","lastModifiedDate":"2017-01-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"peter jack\")); // alphabets only","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"12345\")); // numbers only","lastModifiedDate":"2017-01-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"peter the 2nd\")); // alphanumeric characters","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":"-"},"content":" assertTrue(Name.isValidName(\"David Roger Jackson Ray Jr 2nd\")); // long names","lastModifiedDate":"2017-01-16"},{"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":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"UdhayaShan1":3,"-":58}},{"path":"src/test/java/seedu/realodex/model/person/PersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.model.person;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_FAMILY_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_INCOME_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_REMARK_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_REMARK_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_TAG_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.TypicalPersons.BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":21,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.testutil.PersonBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":27,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2018-03-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTags().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18"},{"lineNumber":40,"author":{"gitId":"UdhayaShan1"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE)","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"UdhayaShan1"},"content":" .withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"UdhayaShan1"},"content":" .withIncome(VALID_INCOME_BOB)","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"UdhayaShan1"},"content":" .withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"UdhayaShan1"},"content":" .withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"UdhayaShan1"},"content":" .withFamily(VALID_FAMILY_BOB)","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"UdhayaShan1"},"content":" .withTags(VALID_TAG_AMY)","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"UdhayaShan1"},"content":" .withRemark(VALID_REMARK_AMY)","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"UdhayaShan1"},"content":" .build();","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":56,"author":{"gitId":"-"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).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":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":60,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":" editedBob \u003d new PersonBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":91,"author":{"gitId":"UdhayaShan1"},"content":" //different income -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":92,"author":{"gitId":"UdhayaShan1"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withIncome(VALID_INCOME_BOB).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":93,"author":{"gitId":"UdhayaShan1"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2024-03-16"},{"lineNumber":94,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":95,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18"},{"lineNumber":103,"author":{"gitId":"UdhayaShan1"},"content":" // different family size -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":104,"author":{"gitId":"UdhayaShan1"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withIncome(VALID_FAMILY_BOB).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":105,"author":{"gitId":"UdhayaShan1"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2024-03-16"},{"lineNumber":106,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":107,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18"},{"lineNumber":108,"author":{"gitId":"4llysa"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(\"buyer\").withTags(\"seller\").build();","lastModifiedDate":"2024-03-15"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18"},{"lineNumber":110,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":111,"author":{"gitId":"UdhayaShan1"},"content":" // different remarks -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":112,"author":{"gitId":"UdhayaShan1"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withRemark(VALID_REMARK_BOB).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2024-03-20"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2019-02-23"},{"lineNumber":119,"author":{"gitId":"UdhayaShan1"},"content":" + \", income\u003d\" + ALICE.getIncome()","lastModifiedDate":"2024-03-11"},{"lineNumber":120,"author":{"gitId":"UdhayaShan1"},"content":" + \", email\u003d\" + ALICE.getEmail()","lastModifiedDate":"2024-03-11"},{"lineNumber":121,"author":{"gitId":"UdhayaShan1"},"content":" + \", address\u003d\" + ALICE.getAddress()","lastModifiedDate":"2024-03-11"},{"lineNumber":122,"author":{"gitId":"UdhayaShan1"},"content":" + \", family\u003d\" + ALICE.getFamily()","lastModifiedDate":"2024-03-11"},{"lineNumber":123,"author":{"gitId":"appleraincoat"},"content":" + \", tags\u003d\" + ALICE.getTags()","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"appleraincoat"},"content":" + \", remark\u003d\" + ALICE.getRemark() + \"}\";","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"4llysa":1,"UdhayaShan1":38,"-":86,"appleraincoat":2}},{"path":"src/test/java/seedu/realodex/model/person/PhoneTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.model.person;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" String invalidPhone2 \u003d \" \";","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"UdhayaShan1"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Phone(invalidPhone2));","lastModifiedDate":"2024-03-17"},{"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-01-16"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void isValidPhone() {","lastModifiedDate":"2017-01-16"},{"lineNumber":26,"author":{"gitId":"-"},"content":" // null phone number","lastModifiedDate":"2017-12-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Phone.isValidPhone(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":29,"author":{"gitId":"-"},"content":" // invalid phone numbers","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"\")); // empty string","lastModifiedDate":"2017-01-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\" \")); // spaces only","lastModifiedDate":"2017-01-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"91\")); // less than 3 numbers","lastModifiedDate":"2017-05-04"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"phone\")); // non-numeric","lastModifiedDate":"2017-01-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"9011p041\")); // alphabets within digits","lastModifiedDate":"2017-01-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"9312 1534\")); // spaces within digits","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" // valid phone numbers","lastModifiedDate":"2017-01-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(Phone.isValidPhone(\"911\")); // exactly 3 numbers","lastModifiedDate":"2017-05-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertTrue(Phone.isValidPhone(\"93121534\"));","lastModifiedDate":"2017-01-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertTrue(Phone.isValidPhone(\"124293842033123\")); // long phone numbers","lastModifiedDate":"2017-01-16"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" Phone phone \u003d new Phone(\"999\");","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertTrue(phone.equals(new Phone(\"999\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertTrue(phone.equals(phone));","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(new Phone(\"995\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"UdhayaShan1":4,"-":58}},{"path":"src/test/java/seedu/realodex/model/person/RemarkTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.model.person;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"UdhayaShan1"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"UdhayaShan1"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.remark.Remark;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":"public class RemarkTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"UdhayaShan1"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"UdhayaShan1"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"UdhayaShan1"},"content":" assertThrows(NullPointerException.class, () -\u003e new Remark(null));","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"UdhayaShan1"},"content":" //May seem redundant, but for further iterations where we may validate remarks.","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"UdhayaShan1"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"UdhayaShan1"},"content":" public void isValidRemark() {","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"UdhayaShan1"},"content":" // null name","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"UdhayaShan1"},"content":" assertThrows(NullPointerException.class, () -\u003e Remark.isValidRemark(null));","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"UdhayaShan1"},"content":" // invalid name","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"UdhayaShan1"},"content":" // to-do in the future, ideas include but not limited to length constraints, no illegal characters.","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"UdhayaShan1"},"content":" // valid name","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"UdhayaShan1"},"content":" assertTrue(Remark.isValidRemark(\"I love apples\")); // alphabets only","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"UdhayaShan1"},"content":" assertTrue(Remark.isValidRemark(\"12345\")); // numbers only","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"UdhayaShan1"},"content":" assertTrue(Remark.isValidRemark(\"James Lau the 1st\")); // alphanumeric characters","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"UdhayaShan1"},"content":" assertTrue(Remark.isValidRemark(\"New York\")); // with capital letters","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"UdhayaShan1"},"content":" assertTrue(Remark.isValidRemark(\"Tony Stark, genius playboy billionaire philanthropist\")); // long remark","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"UdhayaShan1"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"UdhayaShan1"},"content":" public void equals() {","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"UdhayaShan1"},"content":" Remark remark \u003d new Remark(\"Valid Remark\");","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"UdhayaShan1"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"UdhayaShan1"},"content":" assertTrue(remark.equals(new Remark(\"Valid Remark\")));","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"UdhayaShan1"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"UdhayaShan1"},"content":" assertTrue(remark.equals(remark));","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"UdhayaShan1"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"UdhayaShan1"},"content":" assertFalse(remark \u003d\u003d null);","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"UdhayaShan1"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"UdhayaShan1"},"content":" assertFalse(remark.equals(5.0f));","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"UdhayaShan1"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"UdhayaShan1"},"content":" assertFalse(remark.equals(new Remark(\"Other Valid Name\")));","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"UdhayaShan1"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"UdhayaShan1":55}},{"path":"src/test/java/seedu/realodex/model/person/UniquePersonListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.model.person;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_TAG_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.TypicalPersons.BOB;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.exceptions.PersonNotFoundException;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.testutil.PersonBuilder;","lastModifiedDate":"2024-03-19"},{"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":"4llysa"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_AMY)","lastModifiedDate":"2024-03-15"},{"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":"4llysa"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_AMY)","lastModifiedDate":"2024-03-15"},{"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":{"4llysa":2,"UdhayaShan1":9,"-":164}},{"path":"src/test/java/seedu/realodex/model/tag/TagTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.model.tag;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":3,"author":{"gitId":"UdhayaShan1"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"UdhayaShan1"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"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":"2017-12-04"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class TagTest {","lastModifiedDate":"2017-12-04"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"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 Tag(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_invalidTagName_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidTagName \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Tag(invalidTagName));","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-12-04"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidTagName() {","lastModifiedDate":"2017-12-04"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null tag name","lastModifiedDate":"2017-12-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Tag.isValidTagName(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":26,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"UdhayaShan1"},"content":" // Invalid tag names","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"UdhayaShan1"},"content":" assertFalse(Tag.isValidTagName(\"\")); // Empty tag name","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"4llysa"},"content":" assertFalse(Tag.isValidTagName(\"Buyers\")); // Should not be plural","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"UdhayaShan1"},"content":" assertFalse(Tag.isValidTagName(\"Sellers \")); // Extra space at the end","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"UdhayaShan1"},"content":" assertFalse(Tag.isValidTagName(\"Invalid Tag\")); // Space within the tag name","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"UdhayaShan1"},"content":" // Valid tag names","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"UdhayaShan1"},"content":" assertTrue(Tag.isValidTagName(\"buyer\"));","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"UdhayaShan1"},"content":" assertTrue(Tag.isValidTagName(\"seller\"));","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"4llysa"},"content":" assertTrue(Tag.isValidTagName(\"buYeR\")); // Tag converts string to uppercase","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"4llysa"},"content":" assertTrue(Tag.isValidTagName(\"seLLer\")); // Tag converts string to uppercase","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-12-04"}],"authorContributionMap":{"4llysa":3,"UdhayaShan1":13,"-":24}},{"path":"src/test/java/seedu/realodex/storage/JsonAdaptedPersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.storage;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Address;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Email;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Family;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Income;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Phone;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" private static final String INVALID_INCOME \u003d \"-1\";","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"UdhayaShan1"},"content":" private static final String INVALID_FAMILY \u003d \"0\";","lastModifiedDate":"2024-03-11"},{"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":"UdhayaShan1"},"content":" private static final String VALID_INCOME \u003d BENSON.getIncome().toString();","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"UdhayaShan1"},"content":" private static final String VALID_FAMILY \u003d BENSON.getFamily().toString();","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13"},{"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":"appleraincoat"},"content":" private static final String VALID_REMARK \u003d BENSON.getRemark().toString();","lastModifiedDate":"2024-03-17"},{"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":"UdhayaShan1"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_INCOME, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"appleraincoat"},"content":" VALID_FAMILY, VALID_TAGS, VALID_REMARK);","lastModifiedDate":"2024-03-17"},{"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":"UdhayaShan1"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_PHONE, VALID_INCOME, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"appleraincoat"},"content":" VALID_FAMILY, VALID_TAGS, VALID_REMARK);","lastModifiedDate":"2024-03-17"},{"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":"UdhayaShan1"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_INCOME, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"appleraincoat"},"content":" VALID_FAMILY, VALID_TAGS, VALID_REMARK);","lastModifiedDate":"2024-03-17"},{"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":"UdhayaShan1"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_INCOME, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-11"},{"lineNumber":77,"author":{"gitId":"appleraincoat"},"content":" VALID_FAMILY, VALID_TAGS, VALID_REMARK);","lastModifiedDate":"2024-03-17"},{"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":"UdhayaShan1"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"UdhayaShan1"},"content":" public void toModelType_invalidIncome_throwsIllegalValueException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"UdhayaShan1"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"UdhayaShan1"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_INCOME, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"UdhayaShan1"},"content":" VALID_FAMILY, VALID_TAGS, VALID_REMARK);","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"UdhayaShan1"},"content":" String expectedMessage \u003d Income.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-16"},{"lineNumber":88,"author":{"gitId":"UdhayaShan1"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-16"},{"lineNumber":89,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":90,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":91,"author":{"gitId":"UdhayaShan1"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":92,"author":{"gitId":"UdhayaShan1"},"content":" public void toModelType_nullIncome_throwsIllegalValueException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":93,"author":{"gitId":"UdhayaShan1"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-16"},{"lineNumber":94,"author":{"gitId":"UdhayaShan1"},"content":" VALID_FAMILY, VALID_TAGS, VALID_REMARK);","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"UdhayaShan1"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Income.class.getSimpleName());","lastModifiedDate":"2024-03-16"},{"lineNumber":96,"author":{"gitId":"UdhayaShan1"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-16"},{"lineNumber":97,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":98,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"UdhayaShan1"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_INCOME, INVALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-11"},{"lineNumber":103,"author":{"gitId":"appleraincoat"},"content":" VALID_FAMILY, VALID_TAGS, VALID_REMARK);","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.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_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"UdhayaShan1"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_INCOME, null, VALID_ADDRESS,","lastModifiedDate":"2024-03-11"},{"lineNumber":111,"author":{"gitId":"appleraincoat"},"content":" VALID_FAMILY, VALID_TAGS, VALID_REMARK);","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.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_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":119,"author":{"gitId":"UdhayaShan1"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_INCOME, VALID_EMAIL, INVALID_ADDRESS,","lastModifiedDate":"2024-03-11"},{"lineNumber":120,"author":{"gitId":"appleraincoat"},"content":" VALID_FAMILY, VALID_TAGS, VALID_REMARK);","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":127,"author":{"gitId":"UdhayaShan1"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_INCOME, VALID_EMAIL, null,","lastModifiedDate":"2024-03-11"},{"lineNumber":128,"author":{"gitId":"appleraincoat"},"content":" VALID_FAMILY, VALID_TAGS, VALID_REMARK);","lastModifiedDate":"2024-03-17"},{"lineNumber":129,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":133,"author":{"gitId":"UdhayaShan1"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":134,"author":{"gitId":"UdhayaShan1"},"content":" public void toModelType_invalidFamily_throwsIllegalValueException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":135,"author":{"gitId":"UdhayaShan1"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":136,"author":{"gitId":"UdhayaShan1"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_INCOME, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-16"},{"lineNumber":137,"author":{"gitId":"UdhayaShan1"},"content":" INVALID_FAMILY, VALID_TAGS, VALID_REMARK);","lastModifiedDate":"2024-03-17"},{"lineNumber":138,"author":{"gitId":"UdhayaShan1"},"content":" String expectedMessage \u003d Family.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-16"},{"lineNumber":139,"author":{"gitId":"UdhayaShan1"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-16"},{"lineNumber":140,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":141,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":142,"author":{"gitId":"UdhayaShan1"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":143,"author":{"gitId":"UdhayaShan1"},"content":" public void toModelType_nullFamily_throwsIllegalValueException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":144,"author":{"gitId":"UdhayaShan1"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME,","lastModifiedDate":"2024-03-16"},{"lineNumber":145,"author":{"gitId":"UdhayaShan1"},"content":" VALID_PHONE,","lastModifiedDate":"2024-03-16"},{"lineNumber":146,"author":{"gitId":"UdhayaShan1"},"content":" VALID_INCOME,","lastModifiedDate":"2024-03-16"},{"lineNumber":147,"author":{"gitId":"UdhayaShan1"},"content":" VALID_EMAIL,","lastModifiedDate":"2024-03-16"},{"lineNumber":148,"author":{"gitId":"UdhayaShan1"},"content":" VALID_ADDRESS,","lastModifiedDate":"2024-03-16"},{"lineNumber":149,"author":{"gitId":"UdhayaShan1"},"content":" null,","lastModifiedDate":"2024-03-16"},{"lineNumber":150,"author":{"gitId":"UdhayaShan1"},"content":" VALID_TAGS,","lastModifiedDate":"2024-03-17"},{"lineNumber":151,"author":{"gitId":"UdhayaShan1"},"content":" VALID_REMARK);","lastModifiedDate":"2024-03-17"},{"lineNumber":152,"author":{"gitId":"UdhayaShan1"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Family.class.getSimpleName());","lastModifiedDate":"2024-03-16"},{"lineNumber":153,"author":{"gitId":"UdhayaShan1"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-16"},{"lineNumber":154,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":155,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":158,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13"},{"lineNumber":159,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13"},{"lineNumber":160,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":161,"author":{"gitId":"UdhayaShan1"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_INCOME, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-11"},{"lineNumber":162,"author":{"gitId":"appleraincoat"},"content":" VALID_FAMILY, invalidTags, VALID_REMARK);","lastModifiedDate":"2024-03-17"},{"lineNumber":163,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":166,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"UdhayaShan1":64,"-":92,"appleraincoat":10}},{"path":"src/test/java/seedu/realodex/storage/JsonRealodexStorageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.storage;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.TypicalPersons.HOON;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.TypicalPersons.IDA;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.TypicalPersons.getTypicalRealodex;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.ReadOnlyRealodex;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.Realodex;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"UdhayaShan1"},"content":"public class JsonRealodexStorageTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"UdhayaShan1"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonRealodexStorageTest\");","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" public void readRealodex_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"UdhayaShan1"},"content":" assertThrows(NullPointerException.class, () -\u003e readRealodex(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"UdhayaShan1"},"content":" private java.util.Optional\u003cReadOnlyRealodex\u003e readRealodex(String filePath) throws Exception {","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"UdhayaShan1"},"content":" return new JsonRealodexStorage(Paths.get(filePath)).readRealodex(addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" assertFalse(readRealodex(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" assertThrows(DataLoadingException.class, () -\u003e readRealodex(\"notJsonFormatRealodex.json\"));","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" public void readRealodex_invalidPersonRealodex_throwDataLoadingException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"UdhayaShan1"},"content":" assertThrows(DataLoadingException.class, () -\u003e readRealodex(\"invalidPersonRealodex.json\"));","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" public void readRealodex_invalidAndValidPersonRealodex_throwDataLoadingException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"UdhayaShan1"},"content":" assertThrows(DataLoadingException.class, () -\u003e readRealodex(\"invalidAndValidPersonRealodex.json\"));","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" public void readAndSaveRealodex_allInOrder_success() throws Exception {","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"UdhayaShan1"},"content":" Path filePath \u003d testFolder.resolve(\"TempRealodex.json\");","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"UdhayaShan1"},"content":" Realodex original \u003d getTypicalRealodex();","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"UdhayaShan1"},"content":" JsonRealodexStorage jsonRealodexStorage \u003d new JsonRealodexStorage(filePath);","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" jsonRealodexStorage.saveRealodex(original, filePath);","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"UdhayaShan1"},"content":" ReadOnlyRealodex readBack \u003d jsonRealodexStorage.readRealodex(filePath).get();","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"UdhayaShan1"},"content":" assertEquals(original, new Realodex(readBack));","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":" original.addPerson(HOON);","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" original.removePerson(ALICE);","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"UdhayaShan1"},"content":" jsonRealodexStorage.saveRealodex(original, filePath);","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"UdhayaShan1"},"content":" readBack \u003d jsonRealodexStorage.readRealodex(filePath).get();","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"UdhayaShan1"},"content":" assertEquals(original, new Realodex(readBack));","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":" original.addPerson(IDA);","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"UdhayaShan1"},"content":" jsonRealodexStorage.saveRealodex(original); // file path not specified","lastModifiedDate":"2024-03-19"},{"lineNumber":84,"author":{"gitId":"UdhayaShan1"},"content":" readBack \u003d jsonRealodexStorage.readRealodex().get(); // file path not specified","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"UdhayaShan1"},"content":" assertEquals(original, new Realodex(readBack));","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" public void saveRealodex_nullRealodex_throwsNullPointerException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":91,"author":{"gitId":"UdhayaShan1"},"content":" assertThrows(NullPointerException.class, () -\u003e saveRealodex(null, \"SomeFile.json\"));","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" * Saves {@code realodex} at the specified {@code filePath}.","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"UdhayaShan1"},"content":" private void saveRealodex(ReadOnlyRealodex realodex, String filePath) {","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"UdhayaShan1"},"content":" new JsonRealodexStorage(Paths.get(filePath))","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"UdhayaShan1"},"content":" .saveRealodex(realodex, addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" public void saveRealodex_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":108,"author":{"gitId":"UdhayaShan1"},"content":" assertThrows(NullPointerException.class, () -\u003e saveRealodex(new Realodex(), null));","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"UdhayaShan1":42,"-":68}},{"path":"src/test/java/seedu/realodex/storage/JsonSerializableRealodexTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.storage;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.util.JsonUtil;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.Realodex;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.testutil.TypicalPersons;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"UdhayaShan1"},"content":"public class JsonSerializableRealodexTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"UdhayaShan1"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonSerializableRealodexTest\");","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"UdhayaShan1"},"content":" private static final Path TYPICAL_PERSONS_FILE \u003d TEST_DATA_FOLDER.resolve(\"typicalPersonsRealodex.json\");","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"UdhayaShan1"},"content":" private static final Path INVALID_PERSON_FILE \u003d TEST_DATA_FOLDER.resolve(\"invalidPersonRealodex.json\");","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"UdhayaShan1"},"content":" private static final Path DUPLICATE_PERSON_FILE \u003d TEST_DATA_FOLDER.resolve(\"duplicatePersonRealodex.json\");","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" JsonSerializableRealodex dataFromFile \u003d JsonUtil.readJsonFile(TYPICAL_PERSONS_FILE,","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"UdhayaShan1"},"content":" JsonSerializableRealodex.class).get();","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"UdhayaShan1"},"content":" Realodex realodexFromFile \u003d dataFromFile.toModelType();","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"UdhayaShan1"},"content":" Realodex typicalPersonsRealodex \u003d TypicalPersons.getTypicalRealodex();","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"UdhayaShan1"},"content":" assertEquals(realodexFromFile, typicalPersonsRealodex);","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":" public void toModelType_invalidPersonFile_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"UdhayaShan1"},"content":" JsonSerializableRealodex dataFromFile \u003d JsonUtil.readJsonFile(INVALID_PERSON_FILE,","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"UdhayaShan1"},"content":" JsonSerializableRealodex.class).get();","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":" public void toModelType_duplicatePersons_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"UdhayaShan1"},"content":" JsonSerializableRealodex dataFromFile \u003d JsonUtil.readJsonFile(DUPLICATE_PERSON_FILE,","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"UdhayaShan1"},"content":" JsonSerializableRealodex.class).get();","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"UdhayaShan1"},"content":" assertThrows(IllegalValueException.class, JsonSerializableRealodex.MESSAGE_DUPLICATE_PERSON,","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":21,"-":26}},{"path":"src/test/java/seedu/realodex/storage/JsonUserPrefsStorageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.storage;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.GuiSettings;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.UserPrefs;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" userPrefs.setRealodexFilePath(Paths.get(\"realodex.json\"));","lastModifiedDate":"2024-03-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":{"UdhayaShan1":6,"-":117}},{"path":"src/test/java/seedu/realodex/storage/StorageManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.storage;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.TypicalPersons.getTypicalRealodex;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.GuiSettings;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.ReadOnlyRealodex;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.Realodex;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.UserPrefs;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" JsonRealodexStorage realodexStorage \u003d new JsonRealodexStorage(getTempFilePath(\"ab\"));","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(getTempFilePath(\"prefs\"));","lastModifiedDate":"2017-02-25"},{"lineNumber":29,"author":{"gitId":"UdhayaShan1"},"content":" storageManager \u003d new StorageManager(realodexStorage, userPrefsStorage);","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" public void realodexReadSave() throws Exception {","lastModifiedDate":"2024-03-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":"UdhayaShan1"},"content":" * {@link JsonRealodexStorage} class.","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"UdhayaShan1"},"content":" * More extensive testing of UserPref saving/reading is done in {@link JsonRealodexStorageTest} class.","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":57,"author":{"gitId":"UdhayaShan1"},"content":" Realodex original \u003d getTypicalRealodex();","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"UdhayaShan1"},"content":" storageManager.saveRealodex(original);","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"UdhayaShan1"},"content":" ReadOnlyRealodex retrieved \u003d storageManager.readRealodex().get();","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"UdhayaShan1"},"content":" assertEquals(original, new Realodex(retrieved));","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" public void getRealodexFilePath() {","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"UdhayaShan1"},"content":" assertNotNull(storageManager.getRealodexFilePath());","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":17,"-":51}},{"path":"src/test/java/seedu/realodex/testutil/Assert.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.testutil;","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":" Assertions.assertEquals(expectedMessage, thrownException.getMessage());","lastModifiedDate":"2019-03-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-17"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-07-17"}],"authorContributionMap":{"UdhayaShan1":1,"-":33}},{"path":"src/test/java/seedu/realodex/testutil/EditPersonDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.testutil;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Address;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Email;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Family;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Income;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"appleraincoat"},"content":"import seedu.realodex.model.remark.Remark;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.tag.Tag;","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":" descriptor.setPhone(person.getPhone());","lastModifiedDate":"2017-06-21"},{"lineNumber":40,"author":{"gitId":"UdhayaShan1"},"content":" descriptor.setIncome(person.getIncome());","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" descriptor.setAddress(person.getAddress());","lastModifiedDate":"2017-06-21"},{"lineNumber":43,"author":{"gitId":"UdhayaShan1"},"content":" descriptor.setFamily(person.getFamily());","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"-"},"content":" descriptor.setTags(person.getTags());","lastModifiedDate":"2017-06-21"},{"lineNumber":45,"author":{"gitId":"appleraincoat"},"content":" descriptor.setRemark(person.getRemark());","lastModifiedDate":"2024-03-17"},{"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":"UdhayaShan1"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"UdhayaShan1"},"content":" * Sets the {@code Income} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"UdhayaShan1"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"UdhayaShan1"},"content":" public EditPersonDescriptorBuilder withIncome(String income) {","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"UdhayaShan1"},"content":" descriptor.setIncome(new Income(income));","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"UdhayaShan1"},"content":" return this;","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Sets the {@code Email} 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 withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","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":" * Sets the {@code Address} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":84,"author":{"gitId":"-"},"content":" descriptor.setAddress(new Address(address));","lastModifiedDate":"2017-12-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":88,"author":{"gitId":"UdhayaShan1"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":89,"author":{"gitId":"UdhayaShan1"},"content":" * Sets the {@code Family} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-16"},{"lineNumber":90,"author":{"gitId":"UdhayaShan1"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":91,"author":{"gitId":"UdhayaShan1"},"content":" public EditPersonDescriptorBuilder withFamily(String family) {","lastModifiedDate":"2024-03-16"},{"lineNumber":92,"author":{"gitId":"UdhayaShan1"},"content":" descriptor.setFamily(new Family(family));","lastModifiedDate":"2024-03-16"},{"lineNumber":93,"author":{"gitId":"UdhayaShan1"},"content":" return this;","lastModifiedDate":"2024-03-16"},{"lineNumber":94,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":95,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":96,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":97,"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":98,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":99,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15"},{"lineNumber":101,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2017-12-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2017-12-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":106,"author":{"gitId":"wapisai"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":107,"author":{"gitId":"wapisai"},"content":" * Sets the {@code Remark} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":108,"author":{"gitId":"wapisai"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"wapisai"},"content":" public EditPersonDescriptorBuilder withRemark(String remark) {","lastModifiedDate":"2024-03-19"},{"lineNumber":110,"author":{"gitId":"wapisai"},"content":" Remark r \u003d new Remark(remark);","lastModifiedDate":"2024-03-19"},{"lineNumber":111,"author":{"gitId":"wapisai"},"content":" descriptor.setRemark(r);","lastModifiedDate":"2024-03-19"},{"lineNumber":112,"author":{"gitId":"wapisai"},"content":" return this;","lastModifiedDate":"2024-03-19"},{"lineNumber":113,"author":{"gitId":"wapisai"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":114,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":115,"author":{"gitId":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05"},{"lineNumber":116,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":118,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"UdhayaShan1":28,"-":79,"appleraincoat":2,"wapisai":9}},{"path":"src/test/java/seedu/realodex/testutil/PersonBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.testutil;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Address;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Email;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Family;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Income;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.remark.Remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.tag.Tag;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.util.SampleDataUtil;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" public static final String DEFAULT_INCOME \u003d \"20000\";","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18"},{"lineNumber":26,"author":{"gitId":"UdhayaShan1"},"content":" public static final String DEFAULT_FAMILY \u003d \"4\";","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05"},{"lineNumber":28,"author":{"gitId":"4llysa"},"content":" public static final Tag DEFAULT_TAG \u003d new Tag(\"buyer\");","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":32,"author":{"gitId":"UdhayaShan1"},"content":" private Income income;","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20"},{"lineNumber":35,"author":{"gitId":"UdhayaShan1"},"content":" private Family family;","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20"},{"lineNumber":37,"author":{"gitId":"appleraincoat"},"content":" private Remark remark;","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20"},{"lineNumber":45,"author":{"gitId":"UdhayaShan1"},"content":" income \u003d new Income(DEFAULT_INCOME);","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20"},{"lineNumber":48,"author":{"gitId":"UdhayaShan1"},"content":" family \u003d new Family(DEFAULT_FAMILY);","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":50,"author":{"gitId":"4llysa"},"content":" tags.add(DEFAULT_TAG);","lastModifiedDate":"2024-03-15"},{"lineNumber":51,"author":{"gitId":"appleraincoat"},"content":" remark \u003d new Remark(\"\");","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10"},{"lineNumber":58,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20"},{"lineNumber":60,"author":{"gitId":"UdhayaShan1"},"content":" income \u003d personToCopy.getIncome();","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20"},{"lineNumber":63,"author":{"gitId":"UdhayaShan1"},"content":" family \u003d personToCopy.getFamily();","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20"},{"lineNumber":65,"author":{"gitId":"appleraincoat"},"content":" remark \u003d personToCopy.getRemark();","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11"},{"lineNumber":68,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":77,"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":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String ... tags) {","lastModifiedDate":"2017-08-15"},{"lineNumber":80,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2017-12-20"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":95,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":96,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20"},{"lineNumber":97,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":100,"author":{"gitId":"UdhayaShan1"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":101,"author":{"gitId":"UdhayaShan1"},"content":" * Sets the {@code Income} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-11"},{"lineNumber":102,"author":{"gitId":"UdhayaShan1"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":103,"author":{"gitId":"UdhayaShan1"},"content":" public PersonBuilder withIncome(String income) {","lastModifiedDate":"2024-03-11"},{"lineNumber":104,"author":{"gitId":"UdhayaShan1"},"content":" this.income \u003d new Income(income);","lastModifiedDate":"2024-03-11"},{"lineNumber":105,"author":{"gitId":"UdhayaShan1"},"content":" return this;","lastModifiedDate":"2024-03-11"},{"lineNumber":106,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":107,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":108,"author":{"gitId":"UdhayaShan1"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":109,"author":{"gitId":"UdhayaShan1"},"content":" * Sets the {@code Family} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-11"},{"lineNumber":110,"author":{"gitId":"UdhayaShan1"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":111,"author":{"gitId":"UdhayaShan1"},"content":" public PersonBuilder withFamily(String family) {","lastModifiedDate":"2024-03-11"},{"lineNumber":112,"author":{"gitId":"UdhayaShan1"},"content":" this.family \u003d new Family(family);","lastModifiedDate":"2024-03-11"},{"lineNumber":113,"author":{"gitId":"UdhayaShan1"},"content":" return this;","lastModifiedDate":"2024-03-11"},{"lineNumber":114,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":115,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":116,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":117,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":118,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":120,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20"},{"lineNumber":121,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":124,"author":{"gitId":"appleraincoat"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"appleraincoat"},"content":" * Sets the {@code Remark} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"appleraincoat"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"appleraincoat"},"content":" public PersonBuilder withRemark(String remark) {","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"appleraincoat"},"content":" this.remark \u003d new Remark(remark);","lastModifiedDate":"2024-03-17"},{"lineNumber":129,"author":{"gitId":"appleraincoat"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":130,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05"},{"lineNumber":133,"author":{"gitId":"appleraincoat"},"content":" return new Person(name, phone, income, email, address, family, tags, remark);","lastModifiedDate":"2024-03-17"},{"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":{"4llysa":2,"UdhayaShan1":35,"-":87,"appleraincoat":12}},{"path":"src/test/java/seedu/realodex/testutil/PersonUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.testutil;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":3,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_FAMILY;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_INCOME;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.AddCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.tag.Tag;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static String getAddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":28,"author":{"gitId":"-"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2017-03-29"},{"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":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" sb.append(PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2017-06-06"},{"lineNumber":37,"author":{"gitId":"-"},"content":" sb.append(PREFIX_PHONE + person.getPhone().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":38,"author":{"gitId":"UdhayaShan1"},"content":" sb.append(PREFIX_INCOME + person.getIncome().toString() + \" \");","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" sb.append(PREFIX_ADDRESS + person.getAddress().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":41,"author":{"gitId":"UdhayaShan1"},"content":" sb.append(PREFIX_FAMILY + person.getFamily().toString() + \" \");","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":" person.getTags().stream().forEach(","lastModifiedDate":"2017-05-09"},{"lineNumber":43,"author":{"gitId":"4llysa"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName.toString() + \" \")","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09"},{"lineNumber":45,"author":{"gitId":"appleraincoat"},"content":" sb.append(PREFIX_REMARK + person.getRemark().toString() + \" \");","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":56,"author":{"gitId":"wapisai"},"content":" descriptor.getIncome().ifPresent(income -\u003e sb.append(PREFIX_INCOME).append(income.toString()).append(\" \"));","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"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":"wapisai"},"content":" descriptor.getFamily().ifPresent(family -\u003e sb.append(PREFIX_FAMILY).append(family.toString()).append(\" \"));","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" sb.append(PREFIX_TAG);","lastModifiedDate":"2018-03-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":68,"author":{"gitId":"wapisai"},"content":" descriptor.getRemark().ifPresent(remark -\u003e sb.append(PREFIX_REMARK).append(remark.toString()).append(\" \"));","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05"}],"authorContributionMap":{"4llysa":1,"UdhayaShan1":15,"-":51,"appleraincoat":1,"wapisai":3}},{"path":"src/test/java/seedu/realodex/testutil/RealodexBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.testutil;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.Realodex;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":" * A utility class to help with building Realodex objects.","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Example usage: \u003cbr\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":" * {@code Realodex ab \u003d new RealodexBuilder().withPerson(\"John\", \"Doe\").build();}","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":"public class RealodexBuilder {","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"UdhayaShan1"},"content":" private Realodex realodex;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"UdhayaShan1"},"content":" public RealodexBuilder() {","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"UdhayaShan1"},"content":" realodex \u003d new Realodex();","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":19,"author":{"gitId":"UdhayaShan1"},"content":" public RealodexBuilder(Realodex realodex) {","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"UdhayaShan1"},"content":" this.realodex \u003d realodex;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" * Adds a new {@code Person} to the {@code Realodex} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":26,"author":{"gitId":"UdhayaShan1"},"content":" public RealodexBuilder withPerson(Person person) {","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"UdhayaShan1"},"content":" realodex.addPerson(person);","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" public Realodex build() {","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"UdhayaShan1"},"content":" return realodex;","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"UdhayaShan1":16,"-":18}},{"path":"src/test/java/seedu/realodex/testutil/SerializableTestClass.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.testutil;","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":1,"-":71}},{"path":"src/test/java/seedu/realodex/testutil/TestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.testutil;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.index.Index;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Person;","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":" return Index.fromOneBased(model.getFilteredPersonList().size() / 2);","lastModifiedDate":"2018-08-13"},{"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":"-"},"content":" return Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2018-08-13"},{"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":"-"},"content":" public static Person getPerson(Model model, Index index) {","lastModifiedDate":"2018-01-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList().get(index.getZeroBased());","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30"},{"lineNumber":55,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"UdhayaShan1":4,"-":51}},{"path":"src/test/java/seedu/realodex/testutil/TypicalIndexes.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.testutil;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":3,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.index.Index;","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":"}","lastModifiedDate":"2017-08-05"}],"authorContributionMap":{"UdhayaShan1":2,"-":10}},{"path":"src/test/java/seedu/realodex/testutil/TypicalPersons.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.testutil;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":3,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_FAMILY_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_FAMILY_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_INCOME_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_INCOME_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_REMARK_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_TAG_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_TAG_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07"},{"lineNumber":23,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.Realodex;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final Person ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2018-01-10"},{"lineNumber":32,"author":{"gitId":"UdhayaShan1"},"content":" .withIncome(\"10000\")","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"-"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2017-04-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2018-04-19"},{"lineNumber":35,"author":{"gitId":"UdhayaShan1"},"content":" .withFamily(\"4\")","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"appleraincoat"},"content":" .withTags(\"buyer\")","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"appleraincoat"},"content":" .withRemark(\"this is a remark\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10"},{"lineNumber":40,"author":{"gitId":"UdhayaShan1"},"content":" .withIncome(\"20000\")","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"-"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2017-09-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2017-04-05"},{"lineNumber":43,"author":{"gitId":"UdhayaShan1"},"content":" .withFamily(\"4\")","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"4llysa"},"content":" .withTags(\"seller\", \"buyer\").build();","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"UdhayaShan1"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\")","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"UdhayaShan1"},"content":" .withPhone(\"95352563\")","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"UdhayaShan1"},"content":" .withIncome(\"30000\")","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"appleraincoat"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\").withTags(\"buyer\")","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"appleraincoat"},"content":" .withRemark(\"Carl was supposed to start with a K, but the doctor misspelled when he was born\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2018-01-10"},{"lineNumber":53,"author":{"gitId":"UdhayaShan1"},"content":" .withIncome(\"40000\")","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"appleraincoat"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\").withTags(\"buyer\")","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"appleraincoat"},"content":" .withRemark(\"White VANS\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2018-01-10"},{"lineNumber":58,"author":{"gitId":"UdhayaShan1"},"content":" .withIncome(\"50000\")","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"4llysa"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\").withTags(\"buyer\").build();","lastModifiedDate":"2024-03-15"},{"lineNumber":60,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"UdhayaShan1"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\")","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"UdhayaShan1"},"content":" .withPhone(\"9482427\")","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"UdhayaShan1"},"content":" .withIncome(\"60000\")","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"4llysa"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\").withTags(\"seller\").build();","lastModifiedDate":"2024-03-15"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2018-01-10"},{"lineNumber":66,"author":{"gitId":"UdhayaShan1"},"content":" .withIncome(\"70000\")","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"appleraincoat"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\").withTags(\"buyer\")","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"appleraincoat"},"content":" .withRemark(\"Fun fact: George\u0027s brother\u0027s name is \\\"The\\\".\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2018-01-10"},{"lineNumber":72,"author":{"gitId":"4llysa"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\").withTags(\"buyer\").build();","lastModifiedDate":"2024-03-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2018-01-10"},{"lineNumber":74,"author":{"gitId":"4llysa"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\").withTags(\"buyer\").build();","lastModifiedDate":"2024-03-15"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22"},{"lineNumber":77,"author":{"gitId":"UdhayaShan1"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-03-11"},{"lineNumber":78,"author":{"gitId":"UdhayaShan1"},"content":" .withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2024-03-11"},{"lineNumber":79,"author":{"gitId":"UdhayaShan1"},"content":" .withIncome(VALID_INCOME_AMY)","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"UdhayaShan1"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2024-03-11"},{"lineNumber":81,"author":{"gitId":"UdhayaShan1"},"content":" .withFamily(VALID_FAMILY_AMY)","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"4llysa"},"content":" .withTags(VALID_TAG_AMY).build();","lastModifiedDate":"2024-03-15"},{"lineNumber":83,"author":{"gitId":"UdhayaShan1"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-11"},{"lineNumber":84,"author":{"gitId":"UdhayaShan1"},"content":" .withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-11"},{"lineNumber":85,"author":{"gitId":"UdhayaShan1"},"content":" .withIncome(VALID_INCOME_BOB)","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"UdhayaShan1"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-03-11"},{"lineNumber":87,"author":{"gitId":"UdhayaShan1"},"content":" .withFamily(VALID_FAMILY_BOB)","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"4llysa"},"content":" .withTags(VALID_TAG_BOB)","lastModifiedDate":"2024-03-15"},{"lineNumber":89,"author":{"gitId":"UdhayaShan1"},"content":" .withRemark(VALID_REMARK_BOB)","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2017-09-21"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21"},{"lineNumber":92,"author":{"gitId":"jyztintan"},"content":" public static final String KEYPHRASE_MATCHING_MEIER \u003d \"Meier\"; // A keyphrase that matches MEIER","lastModifiedDate":"2024-03-16"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":96,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":97,"author":{"gitId":"UdhayaShan1"},"content":" * Returns an {@code Realodex} with all the typical persons.","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":99,"author":{"gitId":"UdhayaShan1"},"content":" public static Realodex getTypicalRealodex() {","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"UdhayaShan1"},"content":" Realodex ab \u003d new Realodex();","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10"},{"lineNumber":102,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10"},{"lineNumber":108,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04"},{"lineNumber":110,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13"}],"authorContributionMap":{"4llysa":7,"jyztintan":1,"UdhayaShan1":45,"-":44,"appleraincoat":13}},{"path":"src/test/java/seedu/realodex/ui/TestFxmlObject.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.ui;","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":1,"-":44}},{"path":"src/test/java/seedu/realodex/ui/UiPartTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.ui;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.MainApp;","lastModifiedDate":"2024-03-19"},{"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":"2019-03-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new TestUiPart\u003cObject\u003e((URL) null, new Object()));","lastModifiedDate":"2019-03-14"},{"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":"2019-03-14"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertThrows(AssertionError.class, () -\u003e new TestUiPart\u003cObject\u003e(missingFileUrl, new Object()));","lastModifiedDate":"2019-03-14"},{"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":"2019-03-14"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertThrows(AssertionError.class, () -\u003e new TestUiPart\u003cObject\u003e(invalidFileUrl, new Object()));","lastModifiedDate":"2019-03-14"},{"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":"2019-03-14"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new TestUiPart\u003cObject\u003e((String) null, new Object()));","lastModifiedDate":"2019-03-14"},{"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":"2019-03-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new TestUiPart\u003cObject\u003e(MISSING_FILE_PATH, new Object()));","lastModifiedDate":"2019-03-14"},{"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":"2019-03-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertThrows(AssertionError.class, () -\u003e new TestUiPart\u003cObject\u003e(INVALID_FILE_PATH, new Object()));","lastModifiedDate":"2019-03-14"},{"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":{"UdhayaShan1":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":"UdhayaShan1"},"content":"\u003c?import seedu.realodex.ui.TestFxmlObject?\u003e","lastModifiedDate":"2024-03-19"},{"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":{"-":3,"UdhayaShan1":1}},{"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":"UdhayaShan1"},"content":"\u003cfx:root type\u003d\"seedu.realodex.ui.TestFxmlObject\" xmlns\u003d\"http://javafx.com/javafx/17\"","lastModifiedDate":"2024-03-19"},{"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":{"-":5,"UdhayaShan1":1}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"[![CI Status](https://github.com/AY2324S2-CS2103T-W10-1/tp/actions/workflows/gradle.yml/badge.svg)](https://github.com/se-edu/addressbook-level3/actions)","lastModifiedDate":"2024-02-28"},{"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":"UdhayaShan1"},"content":"# Welcome to Realodex","lastModifiedDate":"2024-02-28"},{"lineNumber":6,"author":{"gitId":"UdhayaShan1"},"content":"* This is **CS2103T W10-1\u0027s Brownfield implementation of AddressBook 3** .\u003cbr\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":7,"author":{"gitId":"-"},"content":" Example usages:","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * as a starting point of a course project (as opposed to writing everything from scratch)","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":" * as a case study","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":"## So what is this project about?","lastModifiedDate":"2024-02-28"},{"lineNumber":12,"author":{"gitId":"UdhayaShan1"},"content":"* This project aims to help real estate agents with keeping track of their client data in their day-to-day activity.","lastModifiedDate":"2024-02-28"},{"lineNumber":13,"author":{"gitId":"UdhayaShan1"},"content":"* This project is also optimised for fast typing users and hence we will focus on a well optimised CLI system.","lastModifiedDate":"2024-02-28"},{"lineNumber":14,"author":{"gitId":"UdhayaShan1"},"content":"* The project simulates an ongoing software project for a desktop application by extending CS2103T\u0027s existing project (called _AddressBook_) used for managing contact details.","lastModifiedDate":"2024-02-28"},{"lineNumber":15,"author":{"gitId":"UdhayaShan1"},"content":" * It is **written in OOP fashion**. It provides a **very well-written** code base **bigger** (around 6 KLoC) than what students usually write in beginner-level SE modules, without being overwhelmingly big.","lastModifiedDate":"2024-02-28"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * It comes with a **reasonable level of user and developer documentation**.","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"UdhayaShan1"},"content":"* It is named `Realodex` (`RDX` for short) as we were inspired by the real life Rolodex that helps store a contact list. Importantly, it sounds catchy too.","lastModifiedDate":"2024-02-28"},{"lineNumber":18,"author":{"gitId":"UdhayaShan1"},"content":"* For the detailed documentation of this project, see the **[Address Book Product Website](https://ay2324s2-cs2103t-w10-1.github.io/tp/)**.","lastModifiedDate":"2024-02-28"},{"lineNumber":19,"author":{"gitId":"-"},"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":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":21,"author":{"gitId":"UdhayaShan1"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-02-28"}],"authorContributionMap":{"UdhayaShan1":13,"-":8}},{"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":"UdhayaShan1"},"content":"mainClassName \u003d \u0027seedu.realodex.Main\u0027","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" archiveFileName \u003d \u0027realodex.jar\u0027","lastModifiedDate":"2024-03-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":{"-":70,"UdhayaShan1":2}},{"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":"appleraincoat"},"content":"You can reach us at the email `cs2103t_w10_1[at]comp.nus.edu.sg`","lastModifiedDate":"2024-02-28"},{"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":"appleraincoat"},"content":"### James Lau","lastModifiedDate":"2024-02-28"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"appleraincoat"},"content":"\u003cimg src\u003d\"images/appleraincoat.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"appleraincoat"},"content":"[[github](https://github.com/appleraincoat)]","lastModifiedDate":"2024-02-28"},{"lineNumber":19,"author":{"gitId":"appleraincoat"},"content":"[[portfolio](team/appleraincoat)]","lastModifiedDate":"2024-02-28"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"* Role: Project Advisor","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"jyztintan"},"content":"### Tan Wee Kian, Justin","lastModifiedDate":"2024-02-28"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"jyztintan"},"content":"\u003cimg src\u003d\"images/jyztintan.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"jyztintan"},"content":"[[github](http://github.com/jyztintan)]","lastModifiedDate":"2024-02-28"},{"lineNumber":28,"author":{"gitId":"jyztintan"},"content":"[[portfolio](team/jyztintan.md)]","lastModifiedDate":"2024-02-28"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"jyztintan"},"content":"* Role: Developer","lastModifiedDate":"2024-02-28"},{"lineNumber":31,"author":{"gitId":"jyztintan"},"content":"* Responsibilities: TBC","lastModifiedDate":"2024-02-28"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"wapisai"},"content":"### Alicia Yap","lastModifiedDate":"2024-02-28"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"wapisai"},"content":"\u003cimg src\u003d\"images/wapisai.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"wapisai"},"content":"[[github](http://github.com/wapisai)] [[portfolio](team/wapisai.md)]","lastModifiedDate":"2024-02-28"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"* Responsibilities: Data","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"4llysa"},"content":"### Allysa Tan","lastModifiedDate":"2024-02-28"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"4llysa"},"content":"\u003cimg src\u003d\"images/4llysa.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"4llysa"},"content":"[[github](http://github.com/4llysa)]","lastModifiedDate":"2024-02-28"},{"lineNumber":48,"author":{"gitId":"4llysa"},"content":"[[portfolio](team/4llysa.md)]","lastModifiedDate":"2024-02-28"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"* Responsibilities: Dev Ops + Threading","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"UdhayaShan1"},"content":"### Shanmugam Udhaya","lastModifiedDate":"2024-02-28"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"UdhayaShan1"},"content":"\u003cimg src\u003d\"images/udhayashan1.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"UdhayaShan1"},"content":"[[github](http://github.com/udhayashan1)]","lastModifiedDate":"2024-02-28"},{"lineNumber":58,"author":{"gitId":"UdhayaShan1"},"content":"[[portfolio](team/udhaya.md)]","lastModifiedDate":"2024-02-28"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"UdhayaShan1"},"content":"* Responsibilities: TBC","lastModifiedDate":"2024-02-28"}],"authorContributionMap":{"4llysa":4,"jyztintan":6,"-":38,"UdhayaShan1":5,"appleraincoat":5,"wapisai":3}},{"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":"jyztintan"},"content":"# Realodex Developer Guide","lastModifiedDate":"2024-03-01"},{"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":"UdhayaShan1"},"content":"https://se-education.org/addressbook-level3/DeveloperGuide.html","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","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":"## **Design**","lastModifiedDate":"2020-05-23"},{"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":"\u003cpuml src\u003d\"diagrams/ArchitectureDiagram.puml\" width\u003d\"280\" /\u003e","lastModifiedDate":"2023-09-12"},{"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":"\u003cpuml src\u003d\"diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"574\" /\u003e","lastModifiedDate":"2023-09-12"},{"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":"UdhayaShan1"},"content":"* implements its functionality using a concrete `LogicManager` class (which follows the corresponding API `interface` mentioned in the previous point.","lastModifiedDate":"2024-03-19"},{"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":"\u003cpuml src\u003d\"diagrams/ComponentManagers.puml\" width\u003d\"300\" /\u003e","lastModifiedDate":"2023-09-12"},{"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":"\u003cpuml src\u003d\"diagrams/UiClassDiagram.puml\" alt\u003d\"Structure of the UI Component\"/\u003e","lastModifiedDate":"2023-09-12"},{"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":"\u003cpuml src\u003d\"diagrams/LogicClassDiagram.puml\" width\u003d\"550\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"UdhayaShan1"},"content":"Realodex has implemented a dynamic delete function that either deletes user by index or by their name. Here we illustrate","lastModifiedDate":"2024-03-19"},{"lineNumber":95,"author":{"gitId":"UdhayaShan1"},"content":"deletion by index for brevity.","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"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":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"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":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":101,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":"**Note:** The lifeline for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline continues till the end of diagram.","lastModifiedDate":"2023-09-12"},{"lineNumber":104,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":108,"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":109,"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":110,"author":{"gitId":"-"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a person).\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":111,"author":{"gitId":"-"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-02-09"},{"lineNumber":112,"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":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":114,"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":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":116,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31"},{"lineNumber":119,"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":120,"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":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31"},{"lineNumber":123,"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":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"UdhayaShan1"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"700\" /\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"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":131,"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":132,"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":133,"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":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":135,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":137,"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":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":139,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"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":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":150,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"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":152,"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":153,"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":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","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":"","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"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":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"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":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"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":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"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":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"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":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"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":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"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":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":195,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"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":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":202,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"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":205,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"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":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":217,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":221,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":223,"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":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":227,"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":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"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":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"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":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":268,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":269,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":270,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":271,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":277,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":281,"author":{"gitId":"wapisai"},"content":"* A real estate agent","lastModifiedDate":"2024-02-28"},{"lineNumber":282,"author":{"gitId":"wapisai"},"content":"* has a need to manage a significant number of contacts of their clients","lastModifiedDate":"2024-02-28"},{"lineNumber":283,"author":{"gitId":"wapisai"},"content":"* has to note down many details about each client","lastModifiedDate":"2024-02-28"},{"lineNumber":284,"author":{"gitId":"wapisai"},"content":"* has to frequently add, delete, and search for clients","lastModifiedDate":"2024-02-28"},{"lineNumber":285,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23"},{"lineNumber":286,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23"},{"lineNumber":287,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23"},{"lineNumber":288,"author":{"gitId":"jyztintan"},"content":"* is a real estate agent that wants to store relevant information about clients","lastModifiedDate":"2024-02-28"},{"lineNumber":289,"author":{"gitId":"jyztintan"},"content":"* able to store additional notes about contacts","lastModifiedDate":"2024-02-28"},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":291,"author":{"gitId":"jyztintan"},"content":"**Value proposition**:","lastModifiedDate":"2024-02-28"},{"lineNumber":292,"author":{"gitId":"jyztintan"},"content":"* manage contacts faster than a typical mouse/GUI driven applications.","lastModifiedDate":"2024-02-28"},{"lineNumber":293,"author":{"gitId":"jyztintan"},"content":"* storing of information tailored to real-estate agents","lastModifiedDate":"2024-02-28"},{"lineNumber":294,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":296,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":298,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":299,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":300,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":301,"author":{"gitId":"jyztintan"},"content":"|----------|----------------------------|----------------------------------------------------------|---------------------------------------------------------------------------------------------------|","lastModifiedDate":"2024-02-28"},{"lineNumber":302,"author":{"gitId":"jyztintan"},"content":"| `* * *` | first-time user | receive a simple tutorial on app usage | easily navigate Realodex |","lastModifiedDate":"2024-02-28"},{"lineNumber":303,"author":{"gitId":"jyztintan"},"content":"| `* * *` | tech-savvy user | use a command-line interface | navigate the app more efficiently due to my fast typing speed |","lastModifiedDate":"2024-02-28"},{"lineNumber":304,"author":{"gitId":"jyztintan"},"content":"| `* * *` | fast typer | quickly input various commands in the text box | perform actions like adding new clients, editing profiles, finding clients, without using GUI |","lastModifiedDate":"2024-02-28"},{"lineNumber":305,"author":{"gitId":"jyztintan"},"content":"| `* * *` | real-estate agent user | easily log personal notes after client interactions | reference these in future conversations for more personalized communication |","lastModifiedDate":"2024-02-28"},{"lineNumber":306,"author":{"gitId":"jyztintan"},"content":"| `* * *` | user with inactive clients | delete inactive clients permanently | remove them from my database and free up space |","lastModifiedDate":"2024-02-28"},{"lineNumber":307,"author":{"gitId":"jyztintan"},"content":"| `* *` | real estate agent user | search for clients interested in specific property listings | quickly match selling and buying clients |","lastModifiedDate":"2024-02-28"},{"lineNumber":308,"author":{"gitId":"jyztintan"},"content":"| `* *` | real estate agent user | record and access clients\u0027 preferred house types | filter and match clients with relevant property listings |","lastModifiedDate":"2024-02-28"},{"lineNumber":309,"author":{"gitId":"jyztintan"},"content":"| `* *` | real estate agent user | analyze trends in housing preferences | understand market demands and tailor my services |","lastModifiedDate":"2024-02-28"},{"lineNumber":310,"author":{"gitId":"jyztintan"},"content":"| `* *` | efficient user | filter clients by tag | organize and access client information more efficiently |","lastModifiedDate":"2024-02-28"},{"lineNumber":311,"author":{"gitId":"jyztintan"},"content":"| `* *` | efficient user | filter clients by categories | better categorize and manage client information based on personal attributes |","lastModifiedDate":"2024-02-28"},{"lineNumber":312,"author":{"gitId":"jyztintan"},"content":"| `* *` | first-time user | be guided through setting up my user profile | save my details for future use |","lastModifiedDate":"2024-02-28"},{"lineNumber":313,"author":{"gitId":"jyztintan"},"content":"| `* *` | first-time user | learn how to create and edit client profiles | manage client information efficiently |","lastModifiedDate":"2024-02-28"},{"lineNumber":314,"author":{"gitId":"jyztintan"},"content":"| `* *` | first-time user | understand how to navigate the app and use CLI commands | effectively use Realodex\u0027s features |","lastModifiedDate":"2024-02-28"},{"lineNumber":315,"author":{"gitId":"jyztintan"},"content":"| `* *` | forgetful user | get instructions on how to set up profiles and navigate | refresh my memory on how to use Realodex when needed |","lastModifiedDate":"2024-02-28"},{"lineNumber":316,"author":{"gitId":"jyztintan"},"content":"| `* *` | user with inactive clients | archive inactive clients | hide them from my active list while keeping their information for future reference |","lastModifiedDate":"2024-02-28"},{"lineNumber":317,"author":{"gitId":"jyztintan"},"content":"| `* ` | real estate agent user | be notified of upcoming client birthdays | send personalized greetings and strengthen my relationships |","lastModifiedDate":"2024-02-28"},{"lineNumber":318,"author":{"gitId":"jyztintan"},"content":"| `*` | real estate agent user | be notified of upcoming holidays | prepare gifts for my clients and enhance our relationship |","lastModifiedDate":"2024-02-28"},{"lineNumber":319,"author":{"gitId":"jyztintan"},"content":"| `*` | real estate agent user | be reminded of significant client milestones | acknowledge these events and further personalize our relationship |","lastModifiedDate":"2024-02-28"},{"lineNumber":320,"author":{"gitId":"jyztintan"},"content":"| `*` | tech-savvy user | use tab to autofill parts of my command | speed up my use of the command line |","lastModifiedDate":"2024-02-28"},{"lineNumber":321,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":322,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":323,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":324,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":325,"author":{"gitId":"UdhayaShan1"},"content":"(For all use cases below, the **System** is the `Realodex` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2024-02-28"},{"lineNumber":326,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":327,"author":{"gitId":"UdhayaShan1"},"content":"**Use case: Creating a user profile**","lastModifiedDate":"2024-02-28"},{"lineNumber":328,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":329,"author":{"gitId":"UdhayaShan1"},"content":"**Actor: User**","lastModifiedDate":"2024-02-28"},{"lineNumber":330,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":331,"author":{"gitId":"UdhayaShan1"},"content":"**MSS**","lastModifiedDate":"2024-02-28"},{"lineNumber":332,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":333,"author":{"gitId":"UdhayaShan1"},"content":"1. User Executes \"Add client....\" Command:","lastModifiedDate":"2024-03-01"},{"lineNumber":334,"author":{"gitId":"UdhayaShan1"},"content":"2. System adds use profile to local storage and replies to user with success message.","lastModifiedDate":"2024-03-01"},{"lineNumber":335,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":336,"author":{"gitId":"UdhayaShan1"},"content":" Use case ends.","lastModifiedDate":"2024-02-28"},{"lineNumber":337,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":338,"author":{"gitId":"UdhayaShan1"},"content":"**Extensions**","lastModifiedDate":"2024-02-28"},{"lineNumber":339,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":340,"author":{"gitId":"UdhayaShan1"},"content":"* 1a. Name exceeds the length constraints.","lastModifiedDate":"2024-03-01"},{"lineNumber":341,"author":{"gitId":"UdhayaShan1"},"content":" * 1a1. Realodex throws an error and requests shorter name representation.","lastModifiedDate":"2024-03-01"},{"lineNumber":342,"author":{"gitId":"UdhayaShan1"},"content":" * 1a2. User enters new data.","lastModifiedDate":"2024-03-01"},{"lineNumber":343,"author":{"gitId":"4llysa"},"content":" * Use case resumes from step 1.","lastModifiedDate":"2024-03-07"},{"lineNumber":344,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":345,"author":{"gitId":"UdhayaShan1"},"content":"* 1b. Name Length is not fully English.","lastModifiedDate":"2024-03-01"},{"lineNumber":346,"author":{"gitId":"UdhayaShan1"},"content":" * 1b1. Realodex throws an error and requests for only English input.","lastModifiedDate":"2024-03-01"},{"lineNumber":347,"author":{"gitId":"UdhayaShan1"},"content":" * 1b2. User enters new data.","lastModifiedDate":"2024-03-01"},{"lineNumber":348,"author":{"gitId":"4llysa"},"content":" * Use case resumes from step 1.","lastModifiedDate":"2024-03-07"},{"lineNumber":349,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":350,"author":{"gitId":"UdhayaShan1"},"content":"* 1c. Name contains erraneous whitespace.","lastModifiedDate":"2024-03-01"},{"lineNumber":351,"author":{"gitId":"UdhayaShan1"},"content":" * 1c1. Realodex throws a warning and fixes this for user.","lastModifiedDate":"2024-03-01"},{"lineNumber":352,"author":{"gitId":"4llysa"},"content":" * Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":353,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":354,"author":{"gitId":"UdhayaShan1"},"content":"* 1d. Name is not capitalized.","lastModifiedDate":"2024-03-01"},{"lineNumber":355,"author":{"gitId":"UdhayaShan1"},"content":" * 1d1. Realodex throws a warning and fixes this for user.","lastModifiedDate":"2024-03-01"},{"lineNumber":356,"author":{"gitId":"4llysa"},"content":" * Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":357,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":358,"author":{"gitId":"UdhayaShan1"},"content":"* 1e. Name is not in expected format.","lastModifiedDate":"2024-03-01"},{"lineNumber":359,"author":{"gitId":"UdhayaShan1"},"content":" * 1e1. Realodex throws an error and highlights the format to user.","lastModifiedDate":"2024-03-01"},{"lineNumber":360,"author":{"gitId":"UdhayaShan1"},"content":" * 1e2. User enters new data.","lastModifiedDate":"2024-03-01"},{"lineNumber":361,"author":{"gitId":"4llysa"},"content":" * Use case resumes from step 1.","lastModifiedDate":"2024-03-07"},{"lineNumber":362,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":363,"author":{"gitId":"UdhayaShan1"},"content":"* 1f. Address is not fully English","lastModifiedDate":"2024-03-01"},{"lineNumber":364,"author":{"gitId":"UdhayaShan1"},"content":" * 1f1. Realodex throws an error and requests for only English input.","lastModifiedDate":"2024-03-01"},{"lineNumber":365,"author":{"gitId":"UdhayaShan1"},"content":" * 1f2. User enters new data.","lastModifiedDate":"2024-03-01"},{"lineNumber":366,"author":{"gitId":"4llysa"},"content":" * Use case resumes from step 1.","lastModifiedDate":"2024-03-07"},{"lineNumber":367,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":368,"author":{"gitId":"UdhayaShan1"},"content":"* 1g. Address exceeds the length constraints","lastModifiedDate":"2024-03-01"},{"lineNumber":369,"author":{"gitId":"UdhayaShan1"},"content":" * 1g1. Realodex throws an error and requests shorter address representation.","lastModifiedDate":"2024-03-01"},{"lineNumber":370,"author":{"gitId":"UdhayaShan1"},"content":" * 1g2. User enters new data.","lastModifiedDate":"2024-03-01"},{"lineNumber":371,"author":{"gitId":"4llysa"},"content":" * Use case resumes from step 1.","lastModifiedDate":"2024-03-07"},{"lineNumber":372,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":373,"author":{"gitId":"UdhayaShan1"},"content":"* 1h. Address is not capitalized for each part.","lastModifiedDate":"2024-03-01"},{"lineNumber":374,"author":{"gitId":"UdhayaShan1"},"content":" * 1h1. Realodex throws a warning and fixes this for user.","lastModifiedDate":"2024-03-01"},{"lineNumber":375,"author":{"gitId":"4llysa"},"content":" * Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":376,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":377,"author":{"gitId":"UdhayaShan1"},"content":"* 1i. Income is not in SGD","lastModifiedDate":"2024-03-01"},{"lineNumber":378,"author":{"gitId":"UdhayaShan1"},"content":" * 1i. Realodex throws an error and requests a SGD value.","lastModifiedDate":"2024-03-01"},{"lineNumber":379,"author":{"gitId":"UdhayaShan1"},"content":" * 1i2. User enters new data.","lastModifiedDate":"2024-03-01"},{"lineNumber":380,"author":{"gitId":"4llysa"},"content":" * Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":381,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":382,"author":{"gitId":"UdhayaShan1"},"content":"* 1j. Income is negative","lastModifiedDate":"2024-03-01"},{"lineNumber":383,"author":{"gitId":"UdhayaShan1"},"content":" * 1j1. Realodex throws an error and requests a positive income value.","lastModifiedDate":"2024-03-01"},{"lineNumber":384,"author":{"gitId":"UdhayaShan1"},"content":" * 1j2. User enters new data.","lastModifiedDate":"2024-03-01"},{"lineNumber":385,"author":{"gitId":"4llysa"},"content":" * Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":386,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":387,"author":{"gitId":"UdhayaShan1"},"content":"* 1k. Additonal notes exceed length constraints.","lastModifiedDate":"2024-03-01"},{"lineNumber":388,"author":{"gitId":"UdhayaShan1"},"content":" * 1k1. Realodex throws an error and requests a shorter input.","lastModifiedDate":"2024-03-01"},{"lineNumber":389,"author":{"gitId":"UdhayaShan1"},"content":" * 1k2. User enters new data.","lastModifiedDate":"2024-03-01"},{"lineNumber":390,"author":{"gitId":"4llysa"},"content":" * Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":391,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":392,"author":{"gitId":"-"},"content":"**Use case: Delete a person**","lastModifiedDate":"2020-05-23"},{"lineNumber":393,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":394,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":395,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":396,"author":{"gitId":"UdhayaShan1"},"content":"1. User requests to delete user","lastModifiedDate":"2024-03-01"},{"lineNumber":397,"author":{"gitId":"UdhayaShan1"},"content":"2. Realodex deletes the person with success message","lastModifiedDate":"2024-03-01"},{"lineNumber":398,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":399,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":400,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":401,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":402,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":403,"author":{"gitId":"wapisai"},"content":"* 2a. The input name is not found","lastModifiedDate":"2024-02-28"},{"lineNumber":404,"author":{"gitId":"UdhayaShan1"},"content":" * 2a1. Realodex shows an error message \"\u003cName\u003e is not found\".","lastModifiedDate":"2024-03-01"},{"lineNumber":405,"author":{"gitId":"4llysa"},"content":" * Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":406,"author":{"gitId":"wapisai"},"content":"**Use case: List**","lastModifiedDate":"2024-02-28"},{"lineNumber":407,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":408,"author":{"gitId":"wapisai"},"content":"**MSS**","lastModifiedDate":"2024-02-28"},{"lineNumber":409,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":410,"author":{"gitId":"wapisai"},"content":"1. User requests to list","lastModifiedDate":"2024-02-28"},{"lineNumber":411,"author":{"gitId":"wapisai"},"content":"2. Realodex shows the list of all clients","lastModifiedDate":"2024-02-28"},{"lineNumber":412,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":413,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":414,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":415,"author":{"gitId":"wapisai"},"content":"**Extensions**","lastModifiedDate":"2024-02-28"},{"lineNumber":416,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":417,"author":{"gitId":"wapisai"},"content":"* 2a. The list is empty","lastModifiedDate":"2024-02-28"},{"lineNumber":418,"author":{"gitId":"UdhayaShan1"},"content":" * 2a1. Realodex shows an empty list.","lastModifiedDate":"2024-03-01"},{"lineNumber":419,"author":{"gitId":"4llysa"},"content":" * Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":420,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":421,"author":{"gitId":"jyztintan"},"content":"**Use case: Filter**","lastModifiedDate":"2024-03-16"},{"lineNumber":422,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":423,"author":{"gitId":"wapisai"},"content":"**MSS**","lastModifiedDate":"2024-02-28"},{"lineNumber":424,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":425,"author":{"gitId":"jyztintan"},"content":"1. User requests to filter user with input substring.","lastModifiedDate":"2024-03-17"},{"lineNumber":426,"author":{"gitId":"jyztintan"},"content":"2. Realodex shows the list of all clients with name including the input substring.","lastModifiedDate":"2024-03-17"},{"lineNumber":427,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":428,"author":{"gitId":"wapisai"},"content":" Use case ends.","lastModifiedDate":"2024-02-28"},{"lineNumber":429,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":430,"author":{"gitId":"wapisai"},"content":"**Extensions**","lastModifiedDate":"2024-02-28"},{"lineNumber":431,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":432,"author":{"gitId":"UdhayaShan1"},"content":"* 2a. No contact found with a name including the name input","lastModifiedDate":"2024-03-01"},{"lineNumber":433,"author":{"gitId":"UdhayaShan1"},"content":" * 2a1. Realodex shows an empty list.","lastModifiedDate":"2024-03-01"},{"lineNumber":434,"author":{"gitId":"4llysa"},"content":" * Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":435,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":436,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":437,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":438,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":439,"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":440,"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":441,"author":{"gitId":"4llysa"},"content":"3. A real estate agent 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":"2024-02-28"},{"lineNumber":442,"author":{"gitId":"4llysa"},"content":"4. Should be able to have up to 500 client profiles.","lastModifiedDate":"2024-03-07"},{"lineNumber":443,"author":{"gitId":"4llysa"},"content":"5. The response to any command should become visible within 5 seconds.","lastModifiedDate":"2024-02-28"},{"lineNumber":444,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":445,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":446,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":447,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09"},{"lineNumber":448,"author":{"gitId":"4llysa"},"content":"* **Client Profile**: Details of customer of the Real Esate Agent looking to buy / sell / rent a property","lastModifiedDate":"2024-02-28"},{"lineNumber":449,"author":{"gitId":"4llysa"},"content":"* **Command Line Interface (CLI)**: A text-based interface used to interact with the software by entering commands into a terminal or console window, typically preferred by users who prefer efficiency and automation.","lastModifiedDate":"2024-03-07"},{"lineNumber":450,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":451,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":452,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":453,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":454,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":455,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":456,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":457,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":458,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":459,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12"},{"lineNumber":460,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":461,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":462,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":463,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":464,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":465,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":466,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":467,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":468,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":469,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":470,"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":471,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":472,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":473,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":474,"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":475,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":476,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":477,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","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"},{"lineNumber":480,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":481,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":482,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":483,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":484,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":485,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":486,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":487,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":488,"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":489,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":490,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":491,"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":492,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":493,"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":494,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":495,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":496,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":497,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":498,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":499,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":500,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":501,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":502,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":503,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":504,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"4llysa":19,"jyztintan":29,"-":370,"UdhayaShan1":67,"wapisai":19}},{"path":"docs/SettingUp.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: \"Setting up and getting started\"","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":"# Setting up and getting started","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":"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":"## Setting up the project in your computer","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"**Caution:**","lastModifiedDate":"2023-09-12"},{"lineNumber":19,"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":20,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"First, **fork** this repo, and **clone** the fork into your computer.","lastModifiedDate":"2020-06-07"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-07"},{"lineNumber":24,"author":{"gitId":"-"},"content":"If you plan to use Intellij IDEA (highly recommended):","lastModifiedDate":"2020-06-07"},{"lineNumber":25,"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":26,"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.","lastModifiedDate":"2023-09-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" Note: Importing a Gradle project is slightly different from importing a normal Java project.","lastModifiedDate":"2023-09-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"1. **Verify the setup**:","lastModifiedDate":"2020-06-07"},{"lineNumber":31,"author":{"gitId":"UdhayaShan1"},"content":" 1. Run the `seedu.realodex.Main` and try a few commands.","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":" 1. [Run the tests](Testing.md) to ensure they all pass.","lastModifiedDate":"2020-06-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"## Before writing code","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"1. **Configure the coding style**","lastModifiedDate":"2020-06-07"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"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":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" **Tip:**","lastModifiedDate":"2023-09-12"},{"lineNumber":45,"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":46,"author":{"gitId":"-"},"content":" \u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"1. **Set up CI**","lastModifiedDate":"2020-06-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"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":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"1. **Learn the design**","lastModifiedDate":"2020-06-07"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"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":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"1. **Do the tutorials**","lastModifiedDate":"2020-06-07"},{"lineNumber":57,"author":{"gitId":"-"},"content":" These tutorials will help you get acquainted with the codebase.","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * [Tracing code](tutorials/TracingCode.md)","lastModifiedDate":"2020-07-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * [Adding a new command](tutorials/AddRemark.md)","lastModifiedDate":"2020-07-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * [Removing fields](tutorials/RemovingFields.md)","lastModifiedDate":"2021-08-01"}],"authorContributionMap":{"-":60,"UdhayaShan1":1}},{"path":"docs/TeamWorkflow.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"jyztintan"},"content":"# Development Workflow and Conventions","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"jyztintan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"jyztintan"},"content":"## Introduction","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"jyztintan"},"content":"This document outlines the development workflow and naming conventions adopted by our team to ensure a consistent and efficient approach to project management. By adhering to these guidelines, we aim to maintain high-quality code, streamline our review process, and facilitate easier navigation and understanding of our codebase.","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"jyztintan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"jyztintan"},"content":"## Pull Request (PR) Workflow","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"jyztintan"},"content":"Our PR workflow is designed to ensure that changes are thoroughly reviewed and meet our team\u0027s quality standards before being merged into the main codebase.","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"jyztintan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"jyztintan"},"content":"### Major Changes","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"jyztintan"},"content":"Any significant modifications, such as new features, substantial refactoring, or critical bug fixes, require a review and approval from all four team members. This comprehensive review process ensures that major changes are well-understood and agreed upon by the entire team.","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"jyztintan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"jyztintan"},"content":"### Minor Changes","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"jyztintan"},"content":"For minor updates, such as spelling corrections, grammar adjustments, or minor phrasing improvements, approval from just one team member is sufficient. This expedited process allows us to quickly incorporate minor but necessary tweaks without slowing down our overall development pace.","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"jyztintan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"jyztintan"},"content":"## Branch Naming Conventions","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"jyztintan"},"content":"To maintain an organized and intuitive codebase, we follow a standardized format for naming our branches. This standardization aids in identifying the purpose and scope of each branch at a glance.","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"jyztintan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"jyztintan"},"content":"- **Format**: `v\u003cversion\u003e-\u003cfeature if applicable\u003e-\u003cenhancement\u003e`","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"jyztintan"},"content":"- **Example**: For version 1.2, a branch focused on the \"add\" feature with support for new fields might be named `v1.2-add-new_fields`.","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"jyztintan"},"content":"- **Example**: For version 1.3, a branch focused on updating the Developer\u0027s Guide might be named `v1.3-update_dg`.","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"jyztintan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"jyztintan"},"content":"By adopting a standardized branch naming format, we enhance the consistency of our branch names, simplifying the process for team members to discern the purpose of each branch and facilitating reviewers\u0027 evaluation of changes.","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"jyztintan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"jyztintan"},"content":"It\u0027s important to note the distinction in our branch creation approach based on the project version:","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"jyztintan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"jyztintan"},"content":"- For developments up to version 1.2, branches are created within individual team members\u0027 forked repositories.","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"jyztintan"},"content":"- Starting with version 1.3 and onwards, branches are directly established in the main team repository.","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"jyztintan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"jyztintan"},"content":"## Consistency and Compliance","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"jyztintan"},"content":"Ensuring consistency in our development practices, including PR management and branch naming, is crucial. It not only streamlines our workflow but also prevents potential confusion or issues during code reviews, particularly from external reviewers who may highlight inconsistencies such as varying branch naming separators.","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"jyztintan"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"jyztintan"},"content":"## Conclusion","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"jyztintan"},"content":"This document is intended to unify our team\u0027s development practices, ensuring alignment and shared understanding among all members. We will continually adapt our practices to ensure efficiency in our workflow.","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"jyztintan":33}},{"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":"UdhayaShan1"},"content":" e.g. `seedu.realodex.commons.StringUtilTest`","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" e.g. `seedu.realodex.storage.StorageManagerTest`","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" e.g. `seedu.realodex.logic.LogicManagerTest`","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"-":38,"UdhayaShan1":3}},{"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":"appleraincoat"},"content":"# Realodex (RDX) User Guide","lastModifiedDate":"2024-02-28"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"appleraincoat"},"content":"Realodex (or RDX for short) is a **desktop app for managing client contacts, optimized for use via a","lastModifiedDate":"2024-02-28"},{"lineNumber":10,"author":{"gitId":"appleraincoat"},"content":"Command Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI).","lastModifiedDate":"2024-02-28"},{"lineNumber":11,"author":{"gitId":"appleraincoat"},"content":"If you can type fast, RDX can get your contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2024-02-28"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12"},{"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":"## Quick start","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"appleraincoat"},"content":"1. Ensure you have Java `11` or above installed in your computer.","lastModifiedDate":"2024-02-28"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"appleraincoat"},"content":"1. Download the latest `realodex.jar` from [here](https://github.com/se-edu/addressbook-level3/releases).","lastModifiedDate":"2024-02-28"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"appleraincoat"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your Realodex.","lastModifiedDate":"2024-02-28"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"appleraincoat"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar realodex.jar`","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"appleraincoat"},"content":"command to run the application.\u003cbr\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"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":29,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"appleraincoat"},"content":"1. Some example commands you can try:","lastModifiedDate":"2024-02-28"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"appleraincoat"},"content":" * `add n/John Doe p/98765432 i/20000 e/johnd@example.com a/311, Clementi Ave 2, #02-25 f/4 t/buyer r/Owes money.`","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"appleraincoat"},"content":" Adds a contact named `John Doe` to Realodex.","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"appleraincoat"},"content":" * `delete John Doe` : Deletes the client with name `John Doe` from Realodex.","lastModifiedDate":"2024-03-19"},{"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":"-"},"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":"* 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":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"appleraincoat"},"content":"* Parameters enclosed in `[]` are optional to input.","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"appleraincoat"},"content":"### Adding a client: `add`","lastModifiedDate":"2024-02-28"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"appleraincoat"},"content":"Adds a client to Realodex. ","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"appleraincoat"},"content":"Format: `add n/NAME p/PHONE i/INCOME e/EMAIL a/ADDRESS f/FAMILY t/TAG [r/REMARK]`","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"appleraincoat"},"content":"- Note that `REMARK` is optional, enclosed in `[]`.","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"appleraincoat"},"content":"- You may input the parameters in any order (e.g. if","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"appleraincoat"},"content":"the command specifies `n/NAME a/ADDRESS`, `a/ADDRESS n/NAME` is also acceptable). ","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"appleraincoat"},"content":"- Note that the tag is to indicate if a client is a","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"appleraincoat"},"content":"Buyer, Seller or both, so tags only accept \"buyer\" or \"seller\" as the input (case-insensitive).","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"appleraincoat"},"content":"* `add n/John Doe p/98765432 i/20000 e/johnd@example.com a/311, Clementi Ave 2, #02-25 f/4 t/Buyer r/Owes $1000.`","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"appleraincoat"},"content":"* `add n/Betsy Crowe a/Newgate Prison i/$0 f/1 p/94859694 e/betsyc@rocketmail.com t/Seller t/Buyer`","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"appleraincoat"},"content":"### Deleting a client : `delete`","lastModifiedDate":"2024-02-28"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"appleraincoat"},"content":"Deletes the specified client from Realodex. There are 2 ways to do so: ","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"appleraincoat"},"content":"#### Deleting by name","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"appleraincoat"},"content":"Format: `delete n/NAME`","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":81,"author":{"gitId":"appleraincoat"},"content":"* Deletes the client of the specified `NAME` in Realodex.","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"appleraincoat"},"content":"* If name is **not found**, error message will be shown `\"NAME\" is not found`.","lastModifiedDate":"2024-03-01"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"appleraincoat"},"content":"Example:","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"appleraincoat"},"content":"* `delete n/Udhaya Shanmugam` deletes the client in Realodex with the name \"Udhaya Shanmugam\".","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":87,"author":{"gitId":"appleraincoat"},"content":"#### Deleting by index","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":89,"author":{"gitId":"appleraincoat"},"content":"Format: `delete INDEX`","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":91,"author":{"gitId":"appleraincoat"},"content":"* Deletes the client of the specified `INDEX` in Realodex.","lastModifiedDate":"2024-03-19"},{"lineNumber":92,"author":{"gitId":"appleraincoat"},"content":"* If the index number is **invalid**, error message will be shown `The client index provided is invalid`.","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"appleraincoat"},"content":"Example:","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"appleraincoat"},"content":"* `delete 4` deletes the 4th client listed in Realodex, provided he/she exists.","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"appleraincoat"},"content":"### Editing clients : `edit`","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"appleraincoat"},"content":"Edits specified details of the client.","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":101,"author":{"gitId":"appleraincoat"},"content":"Format: `edit INDEX [n/NAME] [p/PHONE] [i/INCOME] [e/EMAIL] [a/ADDRESS] [f/FAMILY] [t/TAG] [r/REMARK]`","lastModifiedDate":"2024-03-18"},{"lineNumber":102,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":103,"author":{"gitId":"appleraincoat"},"content":"- If `INDEX` is `3`, the 3rd client\u0027s information will be edited.","lastModifiedDate":"2024-03-18"},{"lineNumber":104,"author":{"gitId":"appleraincoat"},"content":"- It is optional to edit any field (i.e, you can choose to edit any combination of fields so long there is at least 1).","lastModifiedDate":"2024-03-18"},{"lineNumber":105,"author":{"gitId":"appleraincoat"},"content":"- The current information will be overwritten with the input provided.","lastModifiedDate":"2024-03-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":109,"author":{"gitId":"appleraincoat"},"content":"- `edit 1 p/999` will overwrite the 1st client\u0027s phone number to `999`.","lastModifiedDate":"2024-03-18"},{"lineNumber":110,"author":{"gitId":"appleraincoat"},"content":"- `edit 2 n/Kylie i/3333 f/5` will overwrite the 2nd client\u0027s name to `Kylie`, income to `3333` and family size to `5`.","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":112,"author":{"gitId":"jyztintan"},"content":"### Filtering clients : `filter`","lastModifiedDate":"2024-03-16"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":114,"author":{"gitId":"jyztintan"},"content":"Filters the list of client with an input keyphrase.","lastModifiedDate":"2024-03-16"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":116,"author":{"gitId":"jyztintan"},"content":"Format: `filter KEYPHRASE`","lastModifiedDate":"2024-03-16"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":118,"author":{"gitId":"jyztintan"},"content":"- The search is case-insensitive. e.g `james` will match `James`","lastModifiedDate":"2024-03-16"},{"lineNumber":119,"author":{"gitId":"jyztintan"},"content":"- Partial words will still be matched e.g. `Udh` will match `Udhaya`","lastModifiedDate":"2024-03-16"},{"lineNumber":120,"author":{"gitId":"jyztintan"},"content":"- All persons\u0027 names containing the keyword will be returned e.g. `Al` will return `Alicia`, `Allysa`","lastModifiedDate":"2024-03-16"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"appleraincoat"},"content":"Example:","lastModifiedDate":"2024-03-18"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":124,"author":{"gitId":"appleraincoat"},"content":"- `filter Al` will list out persons whose name has `\"Al\"` inside, such as `\"Alicia\"`, `\"Allysa\"` and `\"Jamal\"`","lastModifiedDate":"2024-03-19"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":126,"author":{"gitId":"appleraincoat"},"content":"### Listing clients : `list`","lastModifiedDate":"2024-03-18"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":128,"author":{"gitId":"appleraincoat"},"content":"Lists all clients in Realodex.","lastModifiedDate":"2024-03-19"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":130,"author":{"gitId":"appleraincoat"},"content":"Format: `list`","lastModifiedDate":"2024-03-18"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":132,"author":{"gitId":"appleraincoat"},"content":"### Help : `help`","lastModifiedDate":"2024-03-18"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":134,"author":{"gitId":"appleraincoat"},"content":"Generates a pop-up window which is a summarised version of the User Guide.","lastModifiedDate":"2024-03-18"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":136,"author":{"gitId":"appleraincoat"},"content":"Format: `help`","lastModifiedDate":"2024-03-18"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":138,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"appleraincoat"},"content":"Realodex data is saved in the hard disk automatically after any command that modifies it. There is no need to save manually.","lastModifiedDate":"2024-03-19"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":150,"author":{"gitId":"appleraincoat"},"content":"Realodex data is saved automatically as a JSON file `[JAR file location]/data/realodex.json`. Advanced users are welcome to update data directly by editing that data file.","lastModifiedDate":"2024-03-19"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":152,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":154,"author":{"gitId":"-"},"content":"**Caution:**","lastModifiedDate":"2023-09-12"},{"lineNumber":155,"author":{"gitId":"appleraincoat"},"content":"If your changes to the data file makes its format invalid, Realodex 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.\u003cbr\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":156,"author":{"gitId":"appleraincoat"},"content":"Furthermore, certain edits can cause the Realodex to behave in unexpected ways (e.g., if a value entered is outside the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.","lastModifiedDate":"2024-02-28"},{"lineNumber":157,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":159,"author":{"gitId":"appleraincoat"},"content":"### Filtering clients by income and more `[coming in v1.3]`","lastModifiedDate":"2024-03-18"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":164,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"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":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":175,"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":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":179,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":"-----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-12"},{"lineNumber":183,"author":{"gitId":"appleraincoat"},"content":"**Add** | `add n/NAME p/PHONE i/INCOME e/EMAIL a/ADDRESS f/FAMILY t/TAG [r/REMARK]` \u003cbr\u003e e.g. `add n/John Doe p/98765432 i/20000 e/johnd@example.com a/311, Clementi Ave 2, #02-25 f/4 r/Buyer t/Owes $1000.`","lastModifiedDate":"2024-03-18"},{"lineNumber":184,"author":{"gitId":"appleraincoat"},"content":"**Delete (by name)** | `delete n/NAME`\u003cbr\u003e e.g. `delete n/John`","lastModifiedDate":"2024-03-19"},{"lineNumber":185,"author":{"gitId":"appleraincoat"},"content":"**Delete (by index)** | `delete INDEX`\u003cbr\u003e e.g. `delete 3`","lastModifiedDate":"2024-03-18"},{"lineNumber":186,"author":{"gitId":"appleraincoat"},"content":"**edit** | `edit INDEX [n/NAME] [p/PHONE] [i/INCOME] [e/EMAIL] [a/ADDRESS] [f/FAMILY] [t/TAG] [r/REMARK]` \u003cbr\u003e e.g. `edit 2 n/Denzel i/100000`","lastModifiedDate":"2024-03-18"},{"lineNumber":187,"author":{"gitId":"appleraincoat"},"content":"**filter** | `filter STRING`\u003cbr\u003e e.g. `filter David`","lastModifiedDate":"2024-03-18"},{"lineNumber":188,"author":{"gitId":"appleraincoat"},"content":"**list** | `list`","lastModifiedDate":"2024-03-13"},{"lineNumber":189,"author":{"gitId":"appleraincoat"},"content":"**help** | `help`","lastModifiedDate":"2024-03-18"},{"lineNumber":190,"author":{"gitId":"appleraincoat"},"content":"**exit** | `exit`","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"jyztintan":6,"-":115,"appleraincoat":68,"wapisai":1}},{"path":"docs/_markbind/layouts/default.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003chead-bottom\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003clink rel\u003d\"stylesheet\" href\u003d\"{{baseUrl}}/stylesheets/main.css\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c/head-bottom\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003cheader sticky\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cnavbar type\u003d\"dark\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"4llysa"},"content":" \u003ca slot\u003d\"brand\" href\u003d\"{{baseUrl}}/index.html\" title\u003d\"Home\" class\u003d\"navbar-brand\"\u003eRealodex\u003c/a\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/index.html\" class\u003d\"nav-link\"\u003eHome\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/UserGuide.html\" class\u003d\"nav-link\"\u003eUser Guide\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/DeveloperGuide.html\" class\u003d\"nav-link\"\u003eDeveloper Guide\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/AboutUs.html\" class\u003d\"nav-link\"\u003eAbout Us\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"https://github.com/se-edu/addressbook-level3\" target\u003d\"_blank\" class\u003d\"nav-link\"\u003e\u003cmd\u003e:fab-github:\u003c/md\u003e\u003c/a\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cli slot\u003d\"right\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cform class\u003d\"navbar-form\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003csearchbar :data\u003d\"searchData\" placeholder\u003d\"Search\" :on-hit\u003d\"searchCallback\" menu-align-right\u003e\u003c/searchbar\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/form\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/navbar\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"\u003c/header\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"flex-body\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"site-nav\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"site-nav-top\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"fw-bold mb-2\" style\u003d\"font-size: 1.25rem;\"\u003eSite Map\u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003csite-nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"* [Home]({{ baseUrl }}/index.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"* [User Guide]({{ baseUrl }}/UserGuide.html) :expanded:","lastModifiedDate":"2023-09-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * [Quick Start]({{ baseUrl }}/UserGuide.html#quick-start)","lastModifiedDate":"2023-09-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * [Features]({{ baseUrl }}/UserGuide.html#features)","lastModifiedDate":"2023-09-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * [FAQ]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * [Command Summary]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":"* [Developer Guide]({{ baseUrl }}/DeveloperGuide.html) :expanded:","lastModifiedDate":"2023-09-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * [Acknowledgements]({{ baseUrl }}/DeveloperGuide.html#acknowledgements)","lastModifiedDate":"2023-09-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * [Setting Up]({{ baseUrl }}/DeveloperGuide.html#setting-up-getting-started)","lastModifiedDate":"2023-09-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * [Design]({{ baseUrl }}/DeveloperGuide.html#design)","lastModifiedDate":"2023-09-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * [Implementation]({{ baseUrl }}/DeveloperGuide.html#implementation)","lastModifiedDate":"2023-09-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * [Documentation, logging, testing, configuration, dev-ops]({{ baseUrl }}/DeveloperGuide.html#documentation-logging-testing-configuration-dev-ops)","lastModifiedDate":"2023-09-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * [Appendix: Requirements]({{ baseUrl }}/DeveloperGuide.html#appendix-requirements)","lastModifiedDate":"2023-09-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * [Appendix: Instructions for manual testing]({{ baseUrl }}/DeveloperGuide.html#appendix-instructions-for-manual-testing)","lastModifiedDate":"2023-09-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":"* Tutorials","lastModifiedDate":"2023-09-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * [Tracing code]({{ baseUrl }}/tutorials/TracingCode.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * [Adding a command]({{ baseUrl }}/tutorials/AddRemark.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * [Removing Fields]({{ baseUrl }}/tutorials/RemovingFields.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [About Us]({{ baseUrl }}/AboutUs.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/site-nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cdiv id\u003d\"content-wrapper\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" {{ content }}","lastModifiedDate":"2023-09-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"page-nav\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cpage-nav /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003cscroll-top-button\u003e\u003c/scroll-top-button\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":"\u003cfooter\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003c!-- Support MarkBind by including a link to us on your landing page! --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"text-center\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u003csmall\u003e[\u003cmd\u003e**Powered by**\u003c/md\u003e \u003cimg src\u003d\"https://markbind.org/favicon.ico\" width\u003d\"30\"\u003e {{MarkBind}}, generated on {{timestamp}}]\u003c/small\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003c/footer\u003e","lastModifiedDate":"2023-09-12"}],"authorContributionMap":{"4llysa":1,"-":66}},{"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":"-"},"content":"logic -[LOGIC_COLOR]\u003e model : deletePerson(p)","lastModifiedDate":"2019-07-03"},{"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":"UdhayaShan1"},"content":"logic -[LOGIC_COLOR]\u003e storage : saveRealodex(realodex)","lastModifiedDate":"2024-03-22"},{"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":{"-":38,"UdhayaShan1":1}},{"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":"appleraincoat"},"content":"Realodex *-right-\u003e \"1\" UniquePersonList","lastModifiedDate":"2024-03-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"appleraincoat"},"content":"UniquePersonList -right-\u003e \"*\" Person","lastModifiedDate":"2024-03-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":11,"author":{"gitId":"appleraincoat"},"content":"Person *--\u003e \"1\" Name","lastModifiedDate":"2024-03-24"},{"lineNumber":12,"author":{"gitId":"appleraincoat"},"content":"Person *--\u003e \"1\" Phone","lastModifiedDate":"2024-03-24"},{"lineNumber":13,"author":{"gitId":"appleraincoat"},"content":"Person *--\u003e \"1\" Email","lastModifiedDate":"2024-03-24"},{"lineNumber":14,"author":{"gitId":"appleraincoat"},"content":"Person *--\u003e \"1\" Address","lastModifiedDate":"2024-03-24"},{"lineNumber":15,"author":{"gitId":"appleraincoat"},"content":"Person *--\u003e \"1\" Income","lastModifiedDate":"2024-03-24"},{"lineNumber":16,"author":{"gitId":"appleraincoat"},"content":"Person *--\u003e \"1\" Family","lastModifiedDate":"2024-03-24"},{"lineNumber":17,"author":{"gitId":"appleraincoat"},"content":"Person *--\u003e \"1..2\" Tag","lastModifiedDate":"2024-03-24"},{"lineNumber":18,"author":{"gitId":"appleraincoat"},"content":"Person *--\u003e \" 0..1\" Remark","lastModifiedDate":"2024-03-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"-":9,"appleraincoat":10}},{"path":"docs/diagrams/CommitActivityDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"skin rose","lastModifiedDate":"2023-07-27"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ActivityFontSize 15","lastModifiedDate":"2023-07-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam ArrowFontSize 12","lastModifiedDate":"2023-07-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"start","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":":User executes command;","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u0027Since the beta syntax does not support placing the condition outside the","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u0027diamond we place it as the true branch instead.","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":11,"author":{"gitId":"appleraincoat"},"content":"if () then ([command commits Realodex])","lastModifiedDate":"2024-03-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" :Purge redundant states;","lastModifiedDate":"2020-12-12"},{"lineNumber":13,"author":{"gitId":"appleraincoat"},"content":" :Save Realodex to","lastModifiedDate":"2024-03-24"},{"lineNumber":14,"author":{"gitId":"appleraincoat"},"content":" realodexStateList;","lastModifiedDate":"2024-03-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"else ([else])","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"endif","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"stop","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"-":15,"appleraincoat":3}},{"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":"UdhayaShan1"},"content":"participant \":RealodexParser\" as RealodexParser LOGIC_COLOR","lastModifiedDate":"2024-03-22"},{"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 \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-02-09"},{"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 \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-02-09"},{"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":"UdhayaShan1"},"content":"LogicManager -\u003e RealodexParser : parseCommand(\"delete 1\")","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"UdhayaShan1"},"content":"activate RealodexParser","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"create DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"UdhayaShan1"},"content":"RealodexParser -\u003e DeleteCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":"activate DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"UdhayaShan1"},"content":"DeleteCommandParser --\u003e RealodexParser","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"-"},"content":"deactivate DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"UdhayaShan1"},"content":"RealodexParser -\u003e DeleteCommandParser : parse(\"1\")","lastModifiedDate":"2024-03-22"},{"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 :","lastModifiedDate":"2024-02-09"},{"lineNumber":38,"author":{"gitId":"-"},"content":"deactivate DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":40,"author":{"gitId":"UdhayaShan1"},"content":"DeleteCommandParser --\u003e RealodexParser : d","lastModifiedDate":"2024-03-22"},{"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":"UdhayaShan1"},"content":"DeleteCommandParser -[hidden]-\u003e RealodexParser","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"-"},"content":"destroy DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"UdhayaShan1"},"content":"RealodexParser --\u003e LogicManager : d","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"UdhayaShan1"},"content":"deactivate RealodexParser","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":49,"author":{"gitId":"-"},"content":"LogicManager -\u003e DeleteCommand : execute(m)","lastModifiedDate":"2024-02-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":"activate DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":52,"author":{"gitId":"-"},"content":"DeleteCommand -\u003e Model : deletePerson(1)","lastModifiedDate":"2019-07-03"},{"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 : r","lastModifiedDate":"2024-02-09"},{"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":{"-":60,"UdhayaShan1":10}},{"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":"UdhayaShan1"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyRealodex\" as ReadOnlyRealodex","lastModifiedDate":"2024-03-22"},{"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":"UdhayaShan1"},"content":"Class Realodex","lastModifiedDate":"2024-03-22"},{"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":"-"},"content":"Class UniquePersonList","lastModifiedDate":"2021-07-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Class Person","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Class Address","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"UdhayaShan1"},"content":"Class Income","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Class Email","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Class Name","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"Class Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"UdhayaShan1"},"content":"Class Family","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":"Class Tag","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"UdhayaShan1"},"content":"Class Remark","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":26,"author":{"gitId":"-"},"content":"Class I #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"UdhayaShan1"},"content":"Realodex .up.|\u003e ReadOnlyRealodex","lastModifiedDate":"2024-03-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"ModelManager .up.|\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"Model .right.\u003e ReadOnlyUserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"UdhayaShan1"},"content":"Model .left.\u003e ReadOnlyRealodex","lastModifiedDate":"2024-03-22"},{"lineNumber":37,"author":{"gitId":"UdhayaShan1"},"content":"ModelManager -left-\u003e \"1\" Realodex","lastModifiedDate":"2024-03-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":"ModelManager -right-\u003e \"1\" UserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":39,"author":{"gitId":"-"},"content":"UserPrefs .up.|\u003e ReadOnlyUserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":41,"author":{"gitId":"UdhayaShan1"},"content":"Realodex *--\u003e \"1\" UniquePersonList","lastModifiedDate":"2024-03-22"},{"lineNumber":42,"author":{"gitId":"-"},"content":"UniquePersonList --\u003e \"~* all\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":43,"author":{"gitId":"UdhayaShan1"},"content":"Person *--\u003e \"1\" Name","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"UdhayaShan1"},"content":"Person *--\u003e \"1\" Phone","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"UdhayaShan1"},"content":"Person *--\u003e \" 1\" Income","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"UdhayaShan1"},"content":"Person *--\u003e \"1\" Email","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"UdhayaShan1"},"content":"Person *--\u003e \"1\" Address","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"UdhayaShan1"},"content":"Person *--\u003e \"1\" Family","lastModifiedDate":"2024-03-22"},{"lineNumber":49,"author":{"gitId":"UdhayaShan1"},"content":"Person *--\u003e \" 1..2\" Tag","lastModifiedDate":"2024-03-22"},{"lineNumber":50,"author":{"gitId":"appleraincoat"},"content":"Person *--\u003e \" 0..1\" Remark","lastModifiedDate":"2024-03-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":52,"author":{"gitId":"-"},"content":"Person -[hidden]up--\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":"UniquePersonList -[hidden]right-\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"Name -[hidden]right-\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":"Phone -[hidden]right-\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":"Address -[hidden]right-\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":"ModelManager --\u003e \"~* filtered\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":60,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"-":43,"UdhayaShan1":16,"appleraincoat":1}},{"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":"UdhayaShan1"},"content":"Class RealodexParser","lastModifiedDate":"2024-03-22"},{"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":"-"},"content":"Class Prefix","lastModifiedDate":"2021-07-31"},{"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":"UdhayaShan1"},"content":"HiddenOutside ..\u003e RealodexParser","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":24,"author":{"gitId":"UdhayaShan1"},"content":"RealodexParser .down.\u003e XYZCommandParser: \u003c\u003ccreate\u003e\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":26,"author":{"gitId":"-"},"content":"XYZCommandParser ..\u003e XYZCommand : \u003c\u003ccreate\u003e\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":27,"author":{"gitId":"UdhayaShan1"},"content":"RealodexParser ..\u003e Command : \u003c\u003cuse\u003e\u003e","lastModifiedDate":"2024-03-22"},{"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":"-"},"content":"CliSyntax ..\u003e Prefix","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"XYZCommandParser ..\u003e ParserUtil","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":"ParserUtil .down.\u003e Prefix","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"ArgumentTokenizer .down.\u003e Prefix","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"XYZCommand -up-|\u003e Command","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2021-07-31"}],"authorContributionMap":{"-":34,"UdhayaShan1":4}},{"path":"docs/team/4llysa.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"4llysa"},"content":"---","lastModifiedDate":"2024-02-28"},{"lineNumber":2,"author":{"gitId":"4llysa"},"content":" layout: default.md","lastModifiedDate":"2024-02-28"},{"lineNumber":3,"author":{"gitId":"4llysa"},"content":" title: \"Allysa Tan\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-02-28"},{"lineNumber":4,"author":{"gitId":"4llysa"},"content":"---","lastModifiedDate":"2024-02-28"},{"lineNumber":5,"author":{"gitId":"4llysa"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":6,"author":{"gitId":"UdhayaShan1"},"content":"### Project: Realodex","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"4llysa"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":8,"author":{"gitId":"4llysa"},"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":"2024-02-28"},{"lineNumber":9,"author":{"gitId":"4llysa"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":10,"author":{"gitId":"4llysa"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-02-28"},{"lineNumber":11,"author":{"gitId":"4llysa"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":12,"author":{"gitId":"4llysa"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-02-28"},{"lineNumber":13,"author":{"gitId":"4llysa"},"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":"2024-02-28"},{"lineNumber":14,"author":{"gitId":"4llysa"},"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":"2024-02-28"},{"lineNumber":15,"author":{"gitId":"4llysa"},"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":"2024-02-28"},{"lineNumber":16,"author":{"gitId":"4llysa"},"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":"2024-02-28"},{"lineNumber":17,"author":{"gitId":"4llysa"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":18,"author":{"gitId":"4llysa"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-02-28"},{"lineNumber":19,"author":{"gitId":"4llysa"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":20,"author":{"gitId":"4llysa"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-02-28"},{"lineNumber":21,"author":{"gitId":"4llysa"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":22,"author":{"gitId":"4llysa"},"content":"* **Project management**:","lastModifiedDate":"2024-02-28"},{"lineNumber":23,"author":{"gitId":"4llysa"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-02-28"},{"lineNumber":24,"author":{"gitId":"4llysa"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":25,"author":{"gitId":"4llysa"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-02-28"},{"lineNumber":26,"author":{"gitId":"4llysa"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-02-28"},{"lineNumber":27,"author":{"gitId":"4llysa"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-02-28"},{"lineNumber":28,"author":{"gitId":"4llysa"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":29,"author":{"gitId":"4llysa"},"content":"* **Documentation**:","lastModifiedDate":"2024-02-28"},{"lineNumber":30,"author":{"gitId":"4llysa"},"content":" * User Guide:","lastModifiedDate":"2024-02-28"},{"lineNumber":31,"author":{"gitId":"4llysa"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-02-28"},{"lineNumber":32,"author":{"gitId":"4llysa"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-02-28"},{"lineNumber":33,"author":{"gitId":"4llysa"},"content":" * Developer Guide:","lastModifiedDate":"2024-02-28"},{"lineNumber":34,"author":{"gitId":"4llysa"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-02-28"},{"lineNumber":35,"author":{"gitId":"4llysa"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":36,"author":{"gitId":"4llysa"},"content":"* **Community**:","lastModifiedDate":"2024-02-28"},{"lineNumber":37,"author":{"gitId":"4llysa"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-02-28"},{"lineNumber":38,"author":{"gitId":"4llysa"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-02-28"},{"lineNumber":39,"author":{"gitId":"4llysa"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-02-28"},{"lineNumber":40,"author":{"gitId":"4llysa"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-02-28"},{"lineNumber":41,"author":{"gitId":"4llysa"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":42,"author":{"gitId":"4llysa"},"content":"* **Tools**:","lastModifiedDate":"2024-02-28"},{"lineNumber":43,"author":{"gitId":"4llysa"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-02-28"},{"lineNumber":44,"author":{"gitId":"4llysa"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-02-28"},{"lineNumber":45,"author":{"gitId":"4llysa"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":46,"author":{"gitId":"4llysa"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-02-28"}],"authorContributionMap":{"4llysa":45,"UdhayaShan1":1}},{"path":"docs/team/appleraincoat.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":"appleraincoat"},"content":" title: \"appleraincoat\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-02-28"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"UdhayaShan1"},"content":"### Project: Realodex","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"appleraincoat"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user","lastModifiedDate":"2024-02-28"},{"lineNumber":9,"author":{"gitId":"appleraincoat"},"content":"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":"2024-02-28"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"appleraincoat"},"content":" * What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed","lastModifiedDate":"2024-02-28"},{"lineNumber":15,"author":{"gitId":"appleraincoat"},"content":" * by using the redo command.","lastModifiedDate":"2024-02-28"},{"lineNumber":16,"author":{"gitId":"appleraincoat"},"content":" * Justification: This feature improves the product significantly because a user can make mistakes in commands and the","lastModifiedDate":"2024-02-28"},{"lineNumber":17,"author":{"gitId":"appleraincoat"},"content":" * app should provide a convenient way to rectify them.","lastModifiedDate":"2024-02-28"},{"lineNumber":18,"author":{"gitId":"appleraincoat"},"content":" * Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth","lastModifiedDate":"2024-02-28"},{"lineNumber":19,"author":{"gitId":"appleraincoat"},"content":" * analysis of design alternatives. The implementation too was challenging as it required changes to existing commands.","lastModifiedDate":"2024-02-28"},{"lineNumber":20,"author":{"gitId":"appleraincoat"},"content":" * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in","lastModifiedDate":"2024-02-28"},{"lineNumber":21,"author":{"gitId":"appleraincoat"},"content":" * the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2024-02-28"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"* **Project management**:","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"* **Documentation**:","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * User Guide:","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Developer Guide:","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"* **Community**:","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* **Tools**:","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"-":39,"UdhayaShan1":1,"appleraincoat":11}},{"path":"docs/team/jyztintan.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"jyztintan"},"content":"\u003ch1 align\u003d\"center\"\u003eHello there 👋, I\u0027m Justin \u003c/h1\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":2,"author":{"gitId":"jyztintan"},"content":"\u003ch2 align\u003d\"center\"\u003eYear 2 Computer Science Undergraduate || Teaching Assistant \u003c/h2\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":3,"author":{"gitId":"jyztintan"},"content":"\u003ch3 align\u003d\"center\"\u003eNational University of Singapore, School of Computing \u003c/h3\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":4,"author":{"gitId":"jyztintan"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":5,"author":{"gitId":"jyztintan"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":6,"author":{"gitId":"jyztintan"},"content":"- 🧠 I’m currently learning 🤖 Machine Learning and AI, 📊 Algorithmic Design and Analysis and 💻 Software Engineering","lastModifiedDate":"2024-02-28"},{"lineNumber":7,"author":{"gitId":"jyztintan"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":8,"author":{"gitId":"jyztintan"},"content":"- 📫 Reach out to me at **justintanwk2001@gmail.com**","lastModifiedDate":"2024-02-28"},{"lineNumber":9,"author":{"gitId":"jyztintan"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":10,"author":{"gitId":"jyztintan"},"content":"- 💡 Teaching Assistant for ♾ Discrete Mathematics and 🐍 Python Programming Methodology","lastModifiedDate":"2024-02-28"},{"lineNumber":11,"author":{"gitId":"jyztintan"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":12,"author":{"gitId":"jyztintan"},"content":"\u003cbr\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":13,"author":{"gitId":"jyztintan"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":14,"author":{"gitId":"jyztintan"},"content":"\u003ch3 align\u003d\"left\"\u003eConnect with me:\u003c/h3\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":15,"author":{"gitId":"jyztintan"},"content":"\u003cp align\u003d\"left\"\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":16,"author":{"gitId":"jyztintan"},"content":" \u003ca href\u003d\"https://www.linkedin.com/in/tan-wee-kian-justin/\" target\u003d\"blank\"\u003e\u003cimg align\u003d\"center\"","lastModifiedDate":"2024-02-28"},{"lineNumber":17,"author":{"gitId":"jyztintan"},"content":" src\u003d\"https://raw.githubusercontent.com/rahuldkjain/github-profile-readme-generator/master/src/images/icons/Social/linked-in-alt.svg\"","lastModifiedDate":"2024-02-28"},{"lineNumber":18,"author":{"gitId":"jyztintan"},"content":" alt\u003d\"adam pithewan\" height\u003d\"30\" width\u003d\"40\" /\u003e\u003c/a\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":19,"author":{"gitId":"jyztintan"},"content":" \u003c!--","lastModifiedDate":"2024-02-28"},{"lineNumber":20,"author":{"gitId":"jyztintan"},"content":" \u003ca href\u003d\"https://fb.com/adam pithen wala\" target\u003d\"blank\"\u003e\u003cimg align\u003d\"center\"","lastModifiedDate":"2024-02-28"},{"lineNumber":21,"author":{"gitId":"jyztintan"},"content":" src\u003d\"https://raw.githubusercontent.com/rahuldkjain/github-profile-readme-generator/master/src/images/icons/Social/facebook.svg\"","lastModifiedDate":"2024-02-28"},{"lineNumber":22,"author":{"gitId":"jyztintan"},"content":" alt\u003d\"adam pithen wala\" height\u003d\"30\" width\u003d\"40\" /\u003e\u003c/a\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":23,"author":{"gitId":"jyztintan"},"content":" \u003ca href\u003d\"https://instagram.com/_._.adam._\" target\u003d\"blank\"\u003e\u003cimg align\u003d\"center\"","lastModifiedDate":"2024-02-28"},{"lineNumber":24,"author":{"gitId":"jyztintan"},"content":" src\u003d\"https://raw.githubusercontent.com/rahuldkjain/github-profile-readme-generator/master/src/images/icons/Social/instagram.svg\"","lastModifiedDate":"2024-02-28"},{"lineNumber":25,"author":{"gitId":"jyztintan"},"content":" alt\u003d\"_._.adam._\" height\u003d\"30\" width\u003d\"40\" /\u003e\u003c/a\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":26,"author":{"gitId":"jyztintan"},"content":" \u003ca href\u003d\"https://www.hackerrank.com/adampithewan\" target\u003d\"blank\"\u003e\u003cimg align\u003d\"center\"","lastModifiedDate":"2024-02-28"},{"lineNumber":27,"author":{"gitId":"jyztintan"},"content":" src\u003d\"https://raw.githubusercontent.com/rahuldkjain/github-profile-readme-generator/master/src/images/icons/Social/hackerrank.svg\"","lastModifiedDate":"2024-02-28"},{"lineNumber":28,"author":{"gitId":"jyztintan"},"content":" alt\u003d\"adampithewan\" height\u003d\"30\" width\u003d\"40\" /\u003e\u003c/a\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":29,"author":{"gitId":"jyztintan"},"content":" \u003ca href\u003d\"https://twitter.com/adam_pithenwala\" target\u003d\"blank\"\u003e\u003cimg align\u003d\"center\"","lastModifiedDate":"2024-02-28"},{"lineNumber":30,"author":{"gitId":"jyztintan"},"content":" src\u003d\"https://raw.githubusercontent.com/rahuldkjain/github-profile-readme-generator/master/src/images/icons/Social/twitter.svg\"","lastModifiedDate":"2024-02-28"},{"lineNumber":31,"author":{"gitId":"jyztintan"},"content":" alt\u003d\"adampithewan\" height\u003d\"30\" width\u003d\"40\" /\u003e\u003c/a\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":32,"author":{"gitId":"jyztintan"},"content":" --\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":33,"author":{"gitId":"jyztintan"},"content":"\u003c/p\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":34,"author":{"gitId":"jyztintan"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":35,"author":{"gitId":"jyztintan"},"content":"\u003cbr\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":36,"author":{"gitId":"jyztintan"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":37,"author":{"gitId":"jyztintan"},"content":"\u003ch3 align\u003d\"left\"\u003eLanguages and Tools:\u003c/h3\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":38,"author":{"gitId":"jyztintan"},"content":"\u003cp align\u003d\"left\"\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":39,"author":{"gitId":"jyztintan"},"content":" \u003ca href\u003d\"https://www.python.org\" target\u003d\"_blank\" rel\u003d\"noreferrer\"\u003e \u003cimg src\u003d\"https://raw.githubusercontent.com/devicons/devicon/master/icons/python/python-original.svg\" alt\u003d\"python\" width\u003d\"40\" height\u003d\"40\" /\u003e \u003c/a\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":40,"author":{"gitId":"jyztintan"},"content":" \u003ca href\u003d\"https://pandas.pydata.org/\" target\u003d\"_blank\" rel\u003d\"noreferrer\"\u003e \u003cimg src\u003d\"https://raw.githubusercontent.com/devicons/devicon/2ae2a900d2f041da66e950e4d48052658d850630/icons/pandas/pandas-original.svg\"","lastModifiedDate":"2024-02-28"},{"lineNumber":41,"author":{"gitId":"jyztintan"},"content":" alt\u003d\"pandas\" width\u003d\"40\" height\u003d\"40\" /\u003e \u003c/a\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":42,"author":{"gitId":"jyztintan"},"content":" \u003ca href\u003d\"https://www.java.com\" target\u003d\"_blank\" rel\u003d\"noreferrer\"\u003e \u003cimg","lastModifiedDate":"2024-02-28"},{"lineNumber":43,"author":{"gitId":"jyztintan"},"content":" src\u003d\"https://raw.githubusercontent.com/devicons/devicon/master/icons/java/java-original.svg\" alt\u003d\"java\" width\u003d\"40\"","lastModifiedDate":"2024-02-28"},{"lineNumber":44,"author":{"gitId":"jyztintan"},"content":" height\u003d\"40\" /\u003e \u003c/a\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":45,"author":{"gitId":"jyztintan"},"content":" \u003ca href\u003d\"https://www.cprogramming.com/\" target\u003d\"_blank\"","lastModifiedDate":"2024-02-28"},{"lineNumber":46,"author":{"gitId":"jyztintan"},"content":" rel\u003d\"noreferrer\"\u003e \u003cimg src\u003d\"https://raw.githubusercontent.com/devicons/devicon/master/icons/c/c-original.svg\"","lastModifiedDate":"2024-02-28"},{"lineNumber":47,"author":{"gitId":"jyztintan"},"content":" alt\u003d\"c\" width\u003d\"40\" height\u003d\"40\" /\u003e \u003c/a\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":48,"author":{"gitId":"jyztintan"},"content":" \u003ca href\u003d\"https://www.w3schools.com/cpp/\" target\u003d\"_blank\" rel\u003d\"noreferrer\"\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":49,"author":{"gitId":"jyztintan"},"content":" \u003cimg src\u003d\"https://raw.githubusercontent.com/devicons/devicon/master/icons/cplusplus/cplusplus-original.svg\"","lastModifiedDate":"2024-02-28"},{"lineNumber":50,"author":{"gitId":"jyztintan"},"content":" alt\u003d\"cplusplus\" width\u003d\"40\" height\u003d\"40\" /\u003e \u003c/a\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":51,"author":{"gitId":"jyztintan"},"content":" \u003ca href\u003d\"https://flutter.dev\" target\u003d\"_blank\" rel\u003d\"noreferrer\"\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":52,"author":{"gitId":"jyztintan"},"content":" \u003cimg src\u003d\"https://cdn.jsdelivr.net/gh/devicons/devicon/icons/flutter/flutter-original.svg\"","lastModifiedDate":"2024-02-28"},{"lineNumber":53,"author":{"gitId":"jyztintan"},"content":" alt\u003d\"flutter\" width\u003d\"40\" height\u003d\"40\" /\u003e \u003c/a\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":54,"author":{"gitId":"jyztintan"},"content":" \u003ca href\u003d\"https://dart.dev\" target\u003d\"_blank\" rel\u003d\"noreferrer\"\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":55,"author":{"gitId":"jyztintan"},"content":" \u003cimg src\u003d\"https://cdn.jsdelivr.net/gh/devicons/devicon/icons/dart/dart-original.svg\"","lastModifiedDate":"2024-02-28"},{"lineNumber":56,"author":{"gitId":"jyztintan"},"content":" alt\u003d\"dart\" width\u003d\"40\" height\u003d\"40\" /\u003e \u003c/a\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":57,"author":{"gitId":"jyztintan"},"content":" \u003ca href\u003d\"https://firebase.google.com/\" target\u003d\"_blank\" rel\u003d\"noreferrer\"\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":58,"author":{"gitId":"jyztintan"},"content":" \u003cimg src\u003d\"https://cdn.jsdelivr.net/gh/devicons/devicon/icons/firebase/firebase-plain.svg\"","lastModifiedDate":"2024-02-28"},{"lineNumber":59,"author":{"gitId":"jyztintan"},"content":" alt\u003d\"firebase\" width\u003d\"40\" height\u003d\"40\" /\u003e \u003c/a\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":60,"author":{"gitId":"jyztintan"},"content":" \u003ca href\u003d\"https://www.photoshop.com/en\" target\u003d\"_blank\"","lastModifiedDate":"2024-02-28"},{"lineNumber":61,"author":{"gitId":"jyztintan"},"content":" rel\u003d\"noreferrer\"\u003e \u003cimg src\u003d\"https://raw.githubusercontent.com/devicons/devicon/master/icons/photoshop/photoshop-line.svg\" alt\u003d\"photoshop\"","lastModifiedDate":"2024-02-28"},{"lineNumber":62,"author":{"gitId":"jyztintan"},"content":" width\u003d\"40\" height\u003d\"40\" /\u003e \u003c/a\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":63,"author":{"gitId":"jyztintan"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":64,"author":{"gitId":"jyztintan"},"content":" \u003c!--","lastModifiedDate":"2024-02-28"},{"lineNumber":65,"author":{"gitId":"jyztintan"},"content":" \u003ca href\u003d\"https://developer.android.com\" target\u003d\"_blank\" rel\u003d\"noreferrer\"\u003e \u003cimg","lastModifiedDate":"2024-02-28"},{"lineNumber":66,"author":{"gitId":"jyztintan"},"content":" src\u003d\"https://raw.githubusercontent.com/devicons/devicon/master/icons/android/android-original-wordmark.svg\"","lastModifiedDate":"2024-02-28"},{"lineNumber":67,"author":{"gitId":"jyztintan"},"content":" alt\u003d\"android\" width\u003d\"40\" height\u003d\"40\" /\u003e \u003c/a\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":68,"author":{"gitId":"jyztintan"},"content":" \u003ca href\u003d\"https://getbootstrap.com\" target\u003d\"_blank\" rel\u003d\"noreferrer\"\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":69,"author":{"gitId":"jyztintan"},"content":" \u003cimg src\u003d\"https://raw.githubusercontent.com/devicons/devicon/master/icons/bootstrap/bootstrap-plain-wordmark.svg\"","lastModifiedDate":"2024-02-28"},{"lineNumber":70,"author":{"gitId":"jyztintan"},"content":" alt\u003d\"bootstrap\" width\u003d\"40\" height\u003d\"40\" /\u003e \u003c/a\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":71,"author":{"gitId":"jyztintan"},"content":" \u003ca href\u003d\"https://www.w3schools.com/css/\" target\u003d\"_blank\"","lastModifiedDate":"2024-02-28"},{"lineNumber":72,"author":{"gitId":"jyztintan"},"content":" rel\u003d\"noreferrer\"\u003e \u003cimg src\u003d\"https://raw.githubusercontent.com/devicons/devicon/master/icons/css3/css3-original-wordmark.svg\" alt\u003d\"css3\"","lastModifiedDate":"2024-02-28"},{"lineNumber":73,"author":{"gitId":"jyztintan"},"content":" width\u003d\"40\" height\u003d\"40\" /\u003e \u003c/a\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":74,"author":{"gitId":"jyztintan"},"content":" \u003ca href\u003d\"https://www.w3.org/html/\" target\u003d\"_blank\" rel\u003d\"noreferrer\"\u003e \u003cimg","lastModifiedDate":"2024-02-28"},{"lineNumber":75,"author":{"gitId":"jyztintan"},"content":" src\u003d\"https://raw.githubusercontent.com/devicons/devicon/master/icons/html5/html5-original-wordmark.svg\"","lastModifiedDate":"2024-02-28"},{"lineNumber":76,"author":{"gitId":"jyztintan"},"content":" alt\u003d\"html5\" width\u003d\"40\" height\u003d\"40\" /\u003e \u003c/a\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":77,"author":{"gitId":"jyztintan"},"content":" \u003ca href\u003d\"https://www.adobe.com/in/products/illustrator.html\" target\u003d\"_blank\" rel\u003d\"noreferrer\"\u003e \u003cimg","lastModifiedDate":"2024-02-28"},{"lineNumber":78,"author":{"gitId":"jyztintan"},"content":" src\u003d\"https://www.vectorlogo.zone/logos/adobe_illustrator/adobe_illustrator-icon.svg\" alt\u003d\"illustrator\" width\u003d\"40\"","lastModifiedDate":"2024-02-28"},{"lineNumber":79,"author":{"gitId":"jyztintan"},"content":" height\u003d\"40\" /\u003e \u003c/a\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":80,"author":{"gitId":"jyztintan"},"content":" \u003ca href\u003d\"https://developer.mozilla.org/en-US/docs/Web/JavaScript\" target\u003d\"_blank\"","lastModifiedDate":"2024-02-28"},{"lineNumber":81,"author":{"gitId":"jyztintan"},"content":" rel\u003d\"noreferrer\"\u003e \u003cimg src\u003d\"https://raw.githubusercontent.com/devicons/devicon/master/icons/javascript/javascript-original.svg\"","lastModifiedDate":"2024-02-28"},{"lineNumber":82,"author":{"gitId":"jyztintan"},"content":" alt\u003d\"javascript\" width\u003d\"40\" height\u003d\"40\" /\u003e \u003c/a\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":83,"author":{"gitId":"jyztintan"},"content":" \u003ca href\u003d\"https://kotlinlang.org\" target\u003d\"_blank\" rel\u003d\"noreferrer\"\u003e \u003cimg src\u003d\"https://www.vectorlogo.zone/logos/kotlinlang/kotlinlang-icon.svg\" alt\u003d\"kotlin\" width\u003d\"40\" height\u003d\"40\" /\u003e \u003c/a\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":84,"author":{"gitId":"jyztintan"},"content":" \u003ca href\u003d\"https://www.mysql.com/\" target\u003d\"_blank\" rel\u003d\"noreferrer\"\u003e \u003cimg src\u003d\"https://raw.githubusercontent.com/devicons/devicon/master/icons/mysql/mysql-original-wordmark.svg\" alt\u003d\"mysql\" width\u003d\"40\" height\u003d\"40\" /\u003e \u003c/a\u003e \u003c/a\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":85,"author":{"gitId":"jyztintan"},"content":" \u003ca href\u003d\"https://nodejs.org\" target\u003d\"_blank\" rel\u003d\"noreferrer\"\u003e \u003cimg src\u003d\"https://raw.githubusercontent.com/devicons/devicon/master/icons/nodejs/nodejs-original-wordmark.svg\" alt\u003d\"nodejs\" width\u003d\"40\" height\u003d\"40\" /\u003e \u003c/a\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":86,"author":{"gitId":"jyztintan"},"content":" \u003ca href\u003d\"https://reactjs.org/\" target\u003d\"_blank\" rel\u003d\"noreferrer\"\u003e \u003cimg","lastModifiedDate":"2024-02-28"},{"lineNumber":87,"author":{"gitId":"jyztintan"},"content":" src\u003d\"https://raw.githubusercontent.com/devicons/devicon/master/icons/react/react-original-wordmark.svg\"","lastModifiedDate":"2024-02-28"},{"lineNumber":88,"author":{"gitId":"jyztintan"},"content":" alt\u003d\"react\" width\u003d\"40\" height\u003d\"40\" /\u003e \u003c/a\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":89,"author":{"gitId":"jyztintan"},"content":" \u003ca href\u003d\"https://sass-lang.com\" target\u003d\"_blank\" rel\u003d\"noreferrer\"\u003e \u003cimg","lastModifiedDate":"2024-02-28"},{"lineNumber":90,"author":{"gitId":"jyztintan"},"content":" src\u003d\"https://raw.githubusercontent.com/devicons/devicon/master/icons/sass/sass-original.svg\" alt\u003d\"sass\" width\u003d\"40\"","lastModifiedDate":"2024-02-28"},{"lineNumber":91,"author":{"gitId":"jyztintan"},"content":" height\u003d\"40\" /\u003e \u003c/a\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":92,"author":{"gitId":"jyztintan"},"content":" --\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":93,"author":{"gitId":"jyztintan"},"content":"\u003c/p\u003e","lastModifiedDate":"2024-02-28"}],"authorContributionMap":{"jyztintan":93}},{"path":"docs/team/udhayashan1.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"---","lastModifiedDate":"2024-02-28"},{"lineNumber":2,"author":{"gitId":"UdhayaShan1"},"content":" layout: default.md","lastModifiedDate":"2024-02-28"},{"lineNumber":3,"author":{"gitId":"UdhayaShan1"},"content":" title: \"Udhaya\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-02-28"},{"lineNumber":4,"author":{"gitId":"UdhayaShan1"},"content":"---","lastModifiedDate":"2024-02-28"},{"lineNumber":5,"author":{"gitId":"UdhayaShan1"},"content":"not accurate, copied straight from johndoe.md","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"UdhayaShan1"},"content":"### Project: Realodex","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"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":"2024-02-28"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":10,"author":{"gitId":"UdhayaShan1"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-02-28"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":12,"author":{"gitId":"UdhayaShan1"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-02-28"},{"lineNumber":13,"author":{"gitId":"UdhayaShan1"},"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":"2024-02-28"},{"lineNumber":14,"author":{"gitId":"UdhayaShan1"},"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":"2024-02-28"},{"lineNumber":15,"author":{"gitId":"UdhayaShan1"},"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":"2024-02-28"},{"lineNumber":16,"author":{"gitId":"UdhayaShan1"},"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":"2024-02-28"},{"lineNumber":17,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":18,"author":{"gitId":"UdhayaShan1"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-02-28"},{"lineNumber":19,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":20,"author":{"gitId":"UdhayaShan1"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-02-28"},{"lineNumber":21,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":22,"author":{"gitId":"UdhayaShan1"},"content":"* **Project management**:","lastModifiedDate":"2024-02-28"},{"lineNumber":23,"author":{"gitId":"UdhayaShan1"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-02-28"},{"lineNumber":24,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":25,"author":{"gitId":"UdhayaShan1"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-02-28"},{"lineNumber":26,"author":{"gitId":"UdhayaShan1"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-02-28"},{"lineNumber":27,"author":{"gitId":"UdhayaShan1"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-02-28"},{"lineNumber":28,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":29,"author":{"gitId":"UdhayaShan1"},"content":"* **Documentation**:","lastModifiedDate":"2024-02-28"},{"lineNumber":30,"author":{"gitId":"UdhayaShan1"},"content":" * User Guide:","lastModifiedDate":"2024-02-28"},{"lineNumber":31,"author":{"gitId":"UdhayaShan1"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-02-28"},{"lineNumber":32,"author":{"gitId":"UdhayaShan1"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-02-28"},{"lineNumber":33,"author":{"gitId":"UdhayaShan1"},"content":" * Developer Guide:","lastModifiedDate":"2024-02-28"},{"lineNumber":34,"author":{"gitId":"UdhayaShan1"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-02-28"},{"lineNumber":35,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":36,"author":{"gitId":"UdhayaShan1"},"content":"* **Community**:","lastModifiedDate":"2024-02-28"},{"lineNumber":37,"author":{"gitId":"UdhayaShan1"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-02-28"},{"lineNumber":38,"author":{"gitId":"UdhayaShan1"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-02-28"},{"lineNumber":39,"author":{"gitId":"UdhayaShan1"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-02-28"},{"lineNumber":40,"author":{"gitId":"UdhayaShan1"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-02-28"},{"lineNumber":41,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":42,"author":{"gitId":"UdhayaShan1"},"content":"* **Tools**:","lastModifiedDate":"2024-02-28"},{"lineNumber":43,"author":{"gitId":"UdhayaShan1"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-02-28"},{"lineNumber":44,"author":{"gitId":"UdhayaShan1"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-02-28"},{"lineNumber":45,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":46,"author":{"gitId":"UdhayaShan1"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-02-28"}],"authorContributionMap":{"UdhayaShan1":46}},{"path":"docs/team/wapisai.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2024-02-28"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2024-02-28"},{"lineNumber":3,"author":{"gitId":"wapisai"},"content":" title: \"Alicia\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-02-28"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2024-02-28"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":6,"author":{"gitId":"UdhayaShan1"},"content":"### Project: Realodex","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":8,"author":{"gitId":"-"},"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":"2024-02-28"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":10,"author":{"gitId":"-"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-02-28"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":12,"author":{"gitId":"-"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-02-28"},{"lineNumber":13,"author":{"gitId":"-"},"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":"2024-02-28"},{"lineNumber":14,"author":{"gitId":"-"},"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":"2024-02-28"},{"lineNumber":15,"author":{"gitId":"-"},"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":"2024-02-28"},{"lineNumber":16,"author":{"gitId":"-"},"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":"2024-02-28"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":18,"author":{"gitId":"-"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-02-28"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":20,"author":{"gitId":"-"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-02-28"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":22,"author":{"gitId":"-"},"content":"* **Project management**:","lastModifiedDate":"2024-02-28"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-02-28"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":25,"author":{"gitId":"-"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-02-28"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-02-28"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-02-28"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":29,"author":{"gitId":"-"},"content":"* **Documentation**:","lastModifiedDate":"2024-02-28"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * User Guide:","lastModifiedDate":"2024-02-28"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-02-28"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-02-28"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Developer Guide:","lastModifiedDate":"2024-02-28"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-02-28"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":36,"author":{"gitId":"-"},"content":"* **Community**:","lastModifiedDate":"2024-02-28"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-02-28"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-02-28"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-02-28"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-02-28"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":42,"author":{"gitId":"-"},"content":"* **Tools**:","lastModifiedDate":"2024-02-28"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-02-28"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-02-28"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":46,"author":{"gitId":"-"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-02-28"}],"authorContributionMap":{"-":44,"UdhayaShan1":1,"wapisai":1}},{"path":"docs/tutorials/AddRemark.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-07-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Tutorial: Adding a command\"","lastModifiedDate":"2020-07-29"},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-07-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"# Tutorial: Adding a command","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"Let\u0027s walk you through the implementation of a new command — `remark`.","lastModifiedDate":"2020-07-29"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":11,"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":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":13,"author":{"gitId":"-"},"content":"`remark INDEX r/REMARK` (e.g., `remark 2 r/Likes baseball`)","lastModifiedDate":"2020-07-29"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":15,"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":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":"## Create a new `remark` command","lastModifiedDate":"2020-07-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":20,"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":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":22,"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":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":24,"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":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":26,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":28,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":29,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":31,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":33,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Changes the remark of an existing person in the address book.","lastModifiedDate":"2020-07-29"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":36,"author":{"gitId":"-"},"content":"public class RemarkCommand extends Command {","lastModifiedDate":"2020-07-29"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"remark\";","lastModifiedDate":"2020-07-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2020-07-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return new CommandResult(\"Hello from remark\");","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":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":"### Hook `RemarkCommand` into the application","lastModifiedDate":"2020-07-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":49,"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":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":51,"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":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":"### Run the application","lastModifiedDate":"2020-07-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":55,"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":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":"![Output displayed](../images/add-remark/RemarkHello.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":"## Change `RemarkCommand` to throw an exception","lastModifiedDate":"2020-07-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":61,"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":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":63,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"../diagrams/add-remark/RemarkClass.puml\" alt\u003d\"The relationship between RemarkCommand and Command\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":65,"author":{"gitId":"-"},"content":"Following the convention in other commands, we add relevant messages as constants and use them.","lastModifiedDate":"2020-07-29"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":67,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":69,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2021-08-01"},{"lineNumber":71,"author":{"gitId":"-"},"content":" + \": Edits the remark of the person identified \"","lastModifiedDate":"2021-08-01"},{"lineNumber":72,"author":{"gitId":"-"},"content":" + \"by the index number used in the last person listing. \"","lastModifiedDate":"2020-07-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":" + \"Existing remark will be overwritten by the input.\\n\"","lastModifiedDate":"2020-07-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2020-07-29"},{"lineNumber":75,"author":{"gitId":"-"},"content":" + \"r/ [REMARK]\\n\"","lastModifiedDate":"2020-07-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2020-07-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":" + \"r/ Likes to swim.\";","lastModifiedDate":"2020-07-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_IMPLEMENTED_YET \u003d","lastModifiedDate":"2021-08-01"},{"lineNumber":80,"author":{"gitId":"-"},"content":" \"Remark command not implemented yet\";","lastModifiedDate":"2021-08-01"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":84,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_NOT_IMPLEMENTED_YET);","lastModifiedDate":"2020-07-29"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":86,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":88,"author":{"gitId":"-"},"content":"## Enhancing `RemarkCommand`","lastModifiedDate":"2020-07-29"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":90,"author":{"gitId":"-"},"content":"Let’s change `RemarkCommand` to parse input from the user.","lastModifiedDate":"2020-07-29"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":92,"author":{"gitId":"-"},"content":"### Make the command accept parameters","lastModifiedDate":"2020-07-29"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":94,"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":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":96,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":97,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":100,"author":{"gitId":"-"},"content":"public class RemarkCommand extends Command {","lastModifiedDate":"2020-07-29"},{"lineNumber":101,"author":{"gitId":"-"},"content":" //...","lastModifiedDate":"2020-07-29"},{"lineNumber":102,"author":{"gitId":"-"},"content":" public static final String MESSAGE_ARGUMENTS \u003d \"Index: %1$d, Remark: %2$s\";","lastModifiedDate":"2020-07-29"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":104,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2020-07-29"},{"lineNumber":105,"author":{"gitId":"-"},"content":" private final String remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":107,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-07-29"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit the remark","lastModifiedDate":"2020-07-29"},{"lineNumber":109,"author":{"gitId":"-"},"content":" * @param remark of the person to be updated to","lastModifiedDate":"2020-07-29"},{"lineNumber":110,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":111,"author":{"gitId":"-"},"content":" public RemarkCommand(Index index, String remark) {","lastModifiedDate":"2020-07-29"},{"lineNumber":112,"author":{"gitId":"-"},"content":" requireAllNonNull(index, remark);","lastModifiedDate":"2020-07-29"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":114,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2020-07-29"},{"lineNumber":115,"author":{"gitId":"-"},"content":" this.remark \u003d remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":117,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":120,"author":{"gitId":"-"},"content":" throw new CommandException(","lastModifiedDate":"2021-08-01"},{"lineNumber":121,"author":{"gitId":"-"},"content":" String.format(MESSAGE_ARGUMENTS, index.getOneBased(), remark));","lastModifiedDate":"2021-08-01"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":124,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":125,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2020-07-29"},{"lineNumber":126,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2020-07-29"},{"lineNumber":127,"author":{"gitId":"-"},"content":" return true;","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":" // instanceof handles nulls","lastModifiedDate":"2020-07-29"},{"lineNumber":131,"author":{"gitId":"-"},"content":" if (!(other instanceof RemarkCommand)) {","lastModifiedDate":"2020-07-29"},{"lineNumber":132,"author":{"gitId":"-"},"content":" return false;","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":" RemarkCommand e \u003d (RemarkCommand) other;","lastModifiedDate":"2020-07-29"},{"lineNumber":136,"author":{"gitId":"-"},"content":" return index.equals(e.index)","lastModifiedDate":"2020-07-29"},{"lineNumber":137,"author":{"gitId":"-"},"content":" \u0026\u0026 remark.equals(e.remark);","lastModifiedDate":"2020-07-29"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":139,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":140,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":142,"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":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":144,"author":{"gitId":"-"},"content":"### Parse user input","lastModifiedDate":"2020-07-29"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":146,"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":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":148,"author":{"gitId":"UdhayaShan1"},"content":"Create a `RemarkCommandParser` class in the `seedu.realodex.logic.parser` package. The class must extend the `Parser` interface.","lastModifiedDate":"2024-03-19"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":150,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"../diagrams/add-remark/ParserClass.puml\" alt\u003d\"The relationship between Parser and RemarkCommandParser\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":152,"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":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":154,"author":{"gitId":"-"},"content":"**`ArgumentTokenizer.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":156,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":157,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":158,"author":{"gitId":"-"},"content":" * Tokenizes an arguments string and returns an {@code ArgumentMultimap}","lastModifiedDate":"2020-07-29"},{"lineNumber":159,"author":{"gitId":"-"},"content":" * object that maps prefixes to their respective argument values. Only the","lastModifiedDate":"2020-07-29"},{"lineNumber":160,"author":{"gitId":"-"},"content":" * given prefixes will be recognized in the arguments string.","lastModifiedDate":"2020-07-29"},{"lineNumber":161,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2020-07-29"},{"lineNumber":162,"author":{"gitId":"-"},"content":" * @param argsString Arguments string of the form:","lastModifiedDate":"2020-07-29"},{"lineNumber":163,"author":{"gitId":"-"},"content":" * {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2020-07-29"},{"lineNumber":164,"author":{"gitId":"-"},"content":" * @param prefixes Prefixes to tokenize the arguments string with","lastModifiedDate":"2020-07-29"},{"lineNumber":165,"author":{"gitId":"-"},"content":" * @return ArgumentMultimap object that maps prefixes to their","lastModifiedDate":"2020-07-29"},{"lineNumber":166,"author":{"gitId":"-"},"content":" * arguments","lastModifiedDate":"2020-07-29"},{"lineNumber":167,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":168,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":170,"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":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":172,"author":{"gitId":"-"},"content":"**`ArgumentMultimap.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":174,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":175,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":176,"author":{"gitId":"-"},"content":" * Returns the last value of {@code prefix}.","lastModifiedDate":"2020-07-29"},{"lineNumber":177,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":178,"author":{"gitId":"-"},"content":"public Optional\u003cString\u003e getValue(Prefix prefix) {","lastModifiedDate":"2020-07-29"},{"lineNumber":179,"author":{"gitId":"-"},"content":" List\u003cString\u003e values \u003d getAllValues(prefix);","lastModifiedDate":"2020-07-29"},{"lineNumber":180,"author":{"gitId":"-"},"content":" return values.isEmpty() ? Optional.empty() :","lastModifiedDate":"2020-07-29"},{"lineNumber":181,"author":{"gitId":"-"},"content":" Optional.of(values.get(values.size() - 1));","lastModifiedDate":"2020-07-29"},{"lineNumber":182,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":183,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":185,"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":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":187,"author":{"gitId":"-"},"content":"**`DeleteCommandParser.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":189,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":190,"author":{"gitId":"-"},"content":"Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2020-07-29"},{"lineNumber":191,"author":{"gitId":"-"},"content":"return new DeleteCommand(index);","lastModifiedDate":"2020-07-29"},{"lineNumber":192,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":194,"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":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":196,"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":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":198,"author":{"gitId":"-"},"content":"**`RemarkCommandParser.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":200,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":201,"author":{"gitId":"-"},"content":"public RemarkCommand parse(String args) throws ParseException {","lastModifiedDate":"2020-07-29"},{"lineNumber":202,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2020-07-29"},{"lineNumber":203,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args,","lastModifiedDate":"2020-07-29"},{"lineNumber":204,"author":{"gitId":"-"},"content":" PREFIX_REMARK);","lastModifiedDate":"2020-07-29"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":206,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2020-07-29"},{"lineNumber":207,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2020-07-29"},{"lineNumber":208,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2020-07-29"},{"lineNumber":209,"author":{"gitId":"-"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2020-07-29"},{"lineNumber":210,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2020-07-29"},{"lineNumber":211,"author":{"gitId":"-"},"content":" RemarkCommand.MESSAGE_USAGE), ive);","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":" String remark \u003d argMultimap.getValue(PREFIX_REMARK).orElse(\"\");","lastModifiedDate":"2020-07-29"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":216,"author":{"gitId":"-"},"content":" return new RemarkCommand(index, remark);","lastModifiedDate":"2020-07-29"},{"lineNumber":217,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":218,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":220,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":222,"author":{"gitId":"-"},"content":"Don’t forget to update `AddressBookParser` to use our new `RemarkCommandParser`!","lastModifiedDate":"2023-09-12"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":224,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":226,"author":{"gitId":"-"},"content":"If you are stuck, check out the sample","lastModifiedDate":"2020-07-29"},{"lineNumber":227,"author":{"gitId":"-"},"content":"[here](https://github.com/se-edu/addressbook-level3/commit/dc6d5139d08f6403da0ec624ea32bd79a2ae0cbf#diff-8bf239e8e9529369b577701303ddd96af93178b4ed6735f91c2d8488b20c6b4a).","lastModifiedDate":"2022-01-02"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":229,"author":{"gitId":"-"},"content":"## Add `Remark` to the model","lastModifiedDate":"2020-07-29"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":231,"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":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":233,"author":{"gitId":"-"},"content":"### Add a new `Remark` class","lastModifiedDate":"2020-07-29"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":235,"author":{"gitId":"UdhayaShan1"},"content":"Create a new `Remark` in `seedu.realodex.model.person`. Since a `Remark` is a field that is similar to `Address`, we can reuse a significant bit of code.","lastModifiedDate":"2024-03-19"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":237,"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":238,"author":{"gitId":"-"},"content":"validation.","lastModifiedDate":"2020-07-29"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":240,"author":{"gitId":"-"},"content":"### Make use of `Remark`","lastModifiedDate":"2020-07-29"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":242,"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":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":244,"author":{"gitId":"-"},"content":"## Add a placeholder element for remark to the UI","lastModifiedDate":"2020-07-29"},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":246,"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":247,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":248,"author":{"gitId":"UdhayaShan1"},"content":"Simply add the following to [`seedu.realodex.ui.PersonCard`](https://github.com/se-edu/addressbook-level3/commit/850b78879582f38accb05dd20c245963c65ea599#diff-639834f1e05afe2276a86372adf0fe5f69314642c2d93cfa543d614ce5a76688).","lastModifiedDate":"2024-03-19"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":250,"author":{"gitId":"-"},"content":"**`PersonCard.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":252,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":253,"author":{"gitId":"-"},"content":"@FXML","lastModifiedDate":"2020-07-29"},{"lineNumber":254,"author":{"gitId":"-"},"content":"private Label remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":255,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":258,"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":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":260,"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":261,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":262,"author":{"gitId":"-"},"content":"**`PersonListCard.fxml`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":264,"author":{"gitId":"-"},"content":"``` xml","lastModifiedDate":"2020-07-29"},{"lineNumber":265,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"remark\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$remark\" /\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":266,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":268,"author":{"gitId":"-"},"content":"That’s it! Fire up the application again and you should see something like this:","lastModifiedDate":"2020-07-29"},{"lineNumber":269,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":270,"author":{"gitId":"-"},"content":"![$remark shows up in each entry](../images/add-remark/$Remark.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":272,"author":{"gitId":"-"},"content":"## Modify `Person` to support a `Remark` field","lastModifiedDate":"2020-07-29"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":274,"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":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":276,"author":{"gitId":"-"},"content":"### Modify `Person`","lastModifiedDate":"2020-07-29"},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":278,"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":279,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":280,"author":{"gitId":"-"},"content":"### Update other usages of `Person`","lastModifiedDate":"2020-07-29"},{"lineNumber":281,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":282,"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":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":284,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":286,"author":{"gitId":"-"},"content":"Use the `Find Usages` feature in IntelliJ IDEA on the `Person` class to find these commands.","lastModifiedDate":"2023-09-12"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":288,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":290,"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":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":293,"author":{"gitId":"-"},"content":"## Updating Storage","lastModifiedDate":"2020-07-29"},{"lineNumber":294,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":295,"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":296,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":297,"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":298,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":299,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":300,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":301,"author":{"gitId":"UdhayaShan1"},"content":"You must delete AddressBook’s storage file located at `/data/realodex.json` before running it! Not doing so will cause AddressBook to default to an empty address book!","lastModifiedDate":"2024-03-19"},{"lineNumber":302,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":303,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":304,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":305,"author":{"gitId":"-"},"content":"Check out [this commit](https://github.com/se-edu/addressbook-level3/commit/556cbd0e03ff224d7a68afba171ad2eb0ce56bbf)","lastModifiedDate":"2020-07-29"},{"lineNumber":306,"author":{"gitId":"-"},"content":"to see what the changes entail.","lastModifiedDate":"2020-07-29"},{"lineNumber":307,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":308,"author":{"gitId":"-"},"content":"## Finalizing the UI","lastModifiedDate":"2020-07-29"},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":310,"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":311,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":312,"author":{"gitId":"-"},"content":"Just add [this one line of code!](https://github.com/se-edu/addressbook-level3/commit/5b98fee11b6b3f5749b6b943c4f3bd3aa049b692)","lastModifiedDate":"2020-07-29"},{"lineNumber":313,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":314,"author":{"gitId":"-"},"content":"**`PersonCard.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":315,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":316,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":317,"author":{"gitId":"-"},"content":"public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2020-07-29"},{"lineNumber":318,"author":{"gitId":"-"},"content":" //...","lastModifiedDate":"2020-07-29"},{"lineNumber":319,"author":{"gitId":"-"},"content":" remark.setText(person.getRemark().value);","lastModifiedDate":"2020-07-29"},{"lineNumber":320,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":321,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":322,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":323,"author":{"gitId":"-"},"content":"![The remark label is bound properly!](../images/add-remark/RemarkBound.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":324,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":325,"author":{"gitId":"-"},"content":"## Putting everything together","lastModifiedDate":"2020-07-29"},{"lineNumber":326,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":327,"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":328,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":329,"author":{"gitId":"-"},"content":"### Update `RemarkCommand` and `RemarkCommandParser`","lastModifiedDate":"2020-07-29"},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":331,"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":332,"author":{"gitId":"-"},"content":"save it with `Model#setPerson()`.","lastModifiedDate":"2020-07-29"},{"lineNumber":333,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":334,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":335,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":336,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":337,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":338,"author":{"gitId":"-"},"content":" public static final String MESSAGE_ADD_REMARK_SUCCESS \u003d \"Added remark to Person: %1$s\";","lastModifiedDate":"2020-07-29"},{"lineNumber":339,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_REMARK_SUCCESS \u003d \"Removed remark from Person: %1$s\";","lastModifiedDate":"2020-07-29"},{"lineNumber":340,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":341,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":342,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":343,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2020-07-29"},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":345,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2020-07-29"},{"lineNumber":346,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2020-07-29"},{"lineNumber":347,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":348,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":349,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2020-07-29"},{"lineNumber":350,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new Person(","lastModifiedDate":"2021-08-01"},{"lineNumber":351,"author":{"gitId":"-"},"content":" personToEdit.getName(), personToEdit.getPhone(), personToEdit.getEmail(),","lastModifiedDate":"2021-08-01"},{"lineNumber":352,"author":{"gitId":"-"},"content":" personToEdit.getAddress(), remark, personToEdit.getTags());","lastModifiedDate":"2020-07-29"},{"lineNumber":353,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":354,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2020-07-29"},{"lineNumber":355,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2020-07-29"},{"lineNumber":356,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":357,"author":{"gitId":"-"},"content":" return new CommandResult(generateSuccessMessage(editedPerson));","lastModifiedDate":"2020-07-29"},{"lineNumber":358,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":359,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":360,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-07-29"},{"lineNumber":361,"author":{"gitId":"-"},"content":" * Generates a command execution success message based on whether","lastModifiedDate":"2021-08-01"},{"lineNumber":362,"author":{"gitId":"-"},"content":" * the remark is added to or removed from","lastModifiedDate":"2021-08-01"},{"lineNumber":363,"author":{"gitId":"-"},"content":" * {@code personToEdit}.","lastModifiedDate":"2020-07-29"},{"lineNumber":364,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":365,"author":{"gitId":"-"},"content":" private String generateSuccessMessage(Person personToEdit) {","lastModifiedDate":"2020-07-29"},{"lineNumber":366,"author":{"gitId":"-"},"content":" String message \u003d !remark.value.isEmpty() ? MESSAGE_ADD_REMARK_SUCCESS : MESSAGE_DELETE_REMARK_SUCCESS;","lastModifiedDate":"2020-07-29"},{"lineNumber":367,"author":{"gitId":"-"},"content":" return String.format(message, personToEdit);","lastModifiedDate":"2020-07-29"},{"lineNumber":368,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":369,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":370,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":371,"author":{"gitId":"-"},"content":"![Congratulations!](../images/add-remark/RemarkComplete.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":372,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":373,"author":{"gitId":"-"},"content":"## Writing tests","lastModifiedDate":"2020-07-29"},{"lineNumber":374,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":375,"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":376,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":377,"author":{"gitId":"-"},"content":"Let’s verify the correctness of our code by writing some tests!","lastModifiedDate":"2020-07-29"},{"lineNumber":378,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":379,"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":380,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-01"},{"lineNumber":381,"author":{"gitId":"-"},"content":"### Automatically generating tests","lastModifiedDate":"2020-07-29"},{"lineNumber":382,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":383,"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":384,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":385,"author":{"gitId":"-"},"content":"The convention for test names is `methodName_testScenario_expectedResult`. An example would be","lastModifiedDate":"2020-07-29"},{"lineNumber":386,"author":{"gitId":"-"},"content":"`execute_filteredList_success`.","lastModifiedDate":"2020-07-29"},{"lineNumber":387,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":388,"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":389,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":390,"author":{"gitId":"-"},"content":"![Using the context menu to jump to tests](../images/add-remark/ContextMenu.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":391,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":392,"author":{"gitId":"-"},"content":"Then, create a test for the `execute` method.","lastModifiedDate":"2020-07-29"},{"lineNumber":393,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":394,"author":{"gitId":"-"},"content":"![Creating a test for `execute`.](../images/add-remark/CreateTest.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":395,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":396,"author":{"gitId":"-"},"content":"Following convention, let’s change the name of the generated method to `execute_addRemarkUnfilteredList_success`.","lastModifiedDate":"2020-07-29"},{"lineNumber":397,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":398,"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":399,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":400,"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":401,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":402,"author":{"gitId":"-"},"content":"## Conclusion","lastModifiedDate":"2020-07-29"},{"lineNumber":403,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":404,"author":{"gitId":"-"},"content":"This concludes the tutorial for adding a new `Command` to AddressBook.","lastModifiedDate":"2020-07-29"}],"authorContributionMap":{"-":395,"UdhayaShan1":9}},{"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":"UdhayaShan1"},"content":"The `address` field in `Person` is actually an instance of the `seedu.realodex.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":"2024-03-19"},{"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":"UdhayaShan1"},"content":"**`invalidPersonRealodex.json`:**","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":" \"persons\": [ {","lastModifiedDate":"2020-05-23"},{"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":{"-":113,"UdhayaShan1":2}},{"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":"UdhayaShan1"},"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.realodex.logic.Logic`.","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"A quick look at the `seedu.realodex.logic.Logic` (an extract given below) confirms that this indeed might be what we’re looking for.","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":" * it uses the `updateFilteredPersonList` method to ask the `Model` to populate the \u0027filtered list\u0027 with _all_ persons.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":212,"author":{"gitId":"-"},"content":" FYI, The \u0027filtered list\u0027 is the list of persons 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 persons so that the user can see the edited person along with all other persons. If this was a `find` command, we would be setting that list to contain the search results instead.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":213,"author":{"gitId":"-"},"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 persons is being tracked.","lastModifiedDate":"2021-07-31"},{"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":"-"},"content":" persons.addAll(","lastModifiedDate":"2020-05-23"},{"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":{"-":309,"UdhayaShan1":2}},{"path":"src/main/java/seedu/realodex/AppParameters.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.LogsCenter;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.util.FileUtil;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":4,"-":69}},{"path":"src/main/java/seedu/realodex/Main.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.LogsCenter;","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":2,"-":39}},{"path":"src/main/java/seedu/realodex/MainApp.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.Config;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.LogsCenter;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.Version;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.util.ConfigUtil;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.util.StringUtil;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.Logic;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.LogicManager;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.ModelManager;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.ReadOnlyRealodex;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.Realodex;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.UserPrefs;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.util.SampleDataUtil;","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.storage.JsonRealodexStorage;","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.storage.JsonUserPrefsStorage;","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.storage.RealodexStorage;","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.storage.Storage;","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.storage.StorageManager;","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.storage.UserPrefsStorage;","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.ui.Ui;","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.ui.UiManager;","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":" public static final Version VERSION \u003d new Version(0, 2, 2, true);","lastModifiedDate":"2023-08-21"},{"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":"UdhayaShan1"},"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 Realodex ]\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" RealodexStorage realodexStorage \u003d new JsonRealodexStorage(userPrefs.getRealodexFilePath());","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"UdhayaShan1"},"content":" storage \u003d new StorageManager(realodexStorage, userPrefsStorage);","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" * Returns a {@code ModelManager} with the data from {@code storage}\u0027s realodex and {@code userPrefs}. \u003cbr\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"UdhayaShan1"},"content":" * The data from the sample realodex will be used instead if {@code storage}\u0027s realodex is not found,","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"UdhayaShan1"},"content":" * or an empty realodex will be used instead if errors occur when reading {@code storage}\u0027s realodex.","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" logger.info(\"Using data file : \" + storage.getRealodexFilePath());","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":79,"author":{"gitId":"UdhayaShan1"},"content":" Optional\u003cReadOnlyRealodex\u003e realodexOptional;","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"UdhayaShan1"},"content":" ReadOnlyRealodex initialData;","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":82,"author":{"gitId":"UdhayaShan1"},"content":" realodexOptional \u003d storage.readRealodex();","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"UdhayaShan1"},"content":" if (!realodexOptional.isPresent()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":84,"author":{"gitId":"UdhayaShan1"},"content":" logger.info(\"Creating a new data file \" + storage.getRealodexFilePath()","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"appleraincoat"},"content":" + \" populated with a sample Realodex.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":87,"author":{"gitId":"UdhayaShan1"},"content":" initialData \u003d realodexOptional.orElseGet(SampleDataUtil::getSampleRealodex);","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":89,"author":{"gitId":"UdhayaShan1"},"content":" logger.warning(\"Data file at \" + storage.getRealodexFilePath() + \" could not be loaded.\"","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"appleraincoat"},"content":" + \" Will be starting with an empty Realodex.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":91,"author":{"gitId":"UdhayaShan1"},"content":" initialData \u003d new Realodex();","lastModifiedDate":"2024-03-19"},{"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":"2016-09-25"},{"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":"-"},"content":" if (!configOptional.isPresent()) {","lastModifiedDate":"2023-01-03"},{"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":"-"},"content":" if (!prefsOptional.isPresent()) {","lastModifiedDate":"2023-01-03"},{"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":"appleraincoat"},"content":" logger.info(\"Starting Realodex \" + MainApp.VERSION);","lastModifiedDate":"2024-03-13"},{"lineNumber":175,"author":{"gitId":"-"},"content":" ui.start(primaryStage);","lastModifiedDate":"2016-09-25"},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":179,"author":{"gitId":"-"},"content":" public void stop() {","lastModifiedDate":"2016-08-08"},{"lineNumber":180,"author":{"gitId":"UdhayaShan1"},"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 Realodex ] \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2024-03-19"},{"lineNumber":181,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":182,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(model.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":183,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":184,"author":{"gitId":"-"},"content":" logger.severe(\"Failed to save preferences \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":187,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"UdhayaShan1":40,"-":144,"appleraincoat":3}},{"path":"src/main/java/seedu/realodex/commons/core/Config.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.commons.core;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":2,"-":64}},{"path":"src/main/java/seedu/realodex/commons/core/GuiSettings.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.commons.core;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":2,"-":80}},{"path":"src/main/java/seedu/realodex/commons/core/LogsCenter.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.commons.core;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" private static final String LOG_FILE \u003d \"realodex.log\";","lastModifiedDate":"2024-03-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":"UdhayaShan1"},"content":" * Creates a logger named \u0027realodex\u0027, containing a {@code ConsoleHandler} and a {@code FileHandler}.","lastModifiedDate":"2024-03-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":"UdhayaShan1"},"content":" baseLogger \u003d Logger.getLogger(\"realodex\");","lastModifiedDate":"2024-03-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":{"UdhayaShan1":4,"-":102}},{"path":"src/main/java/seedu/realodex/commons/core/Version.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.commons.core;","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":1,"-":120}},{"path":"src/main/java/seedu/realodex/commons/core/index/Index.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.commons.core.index;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":3,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":2,"-":67}},{"path":"src/main/java/seedu/realodex/commons/exceptions/DataLoadingException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.commons.exceptions;","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":1,"-":10}},{"path":"src/main/java/seedu/realodex/commons/exceptions/IllegalValueException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.commons.exceptions;","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":1,"-":20}},{"path":"src/main/java/seedu/realodex/commons/util/AppUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.commons.util;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.MainApp;","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Gets an {@code Image} from the specified path.","lastModifiedDate":"2020-05-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static Image getImage(String imagePath) {","lastModifiedDate":"2016-08-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":" requireNonNull(imagePath);","lastModifiedDate":"2017-05-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":" return new Image(MainApp.class.getResourceAsStream(imagePath));","lastModifiedDate":"2016-08-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Checks that {@code condition} is true. Used for validating arguments to methods.","lastModifiedDate":"2017-05-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @throws IllegalArgumentException if {@code condition} is false.","lastModifiedDate":"2017-05-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static void checkArgument(Boolean condition) {","lastModifiedDate":"2017-05-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":" if (!condition) {","lastModifiedDate":"2017-05-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" throw new IllegalArgumentException();","lastModifiedDate":"2017-05-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Checks that {@code condition} is true. Used for validating arguments to methods.","lastModifiedDate":"2017-05-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * @throws IllegalArgumentException with {@code errorMessage} if {@code condition} is false.","lastModifiedDate":"2017-05-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static void checkArgument(Boolean condition, String errorMessage) {","lastModifiedDate":"2017-05-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":" if (!condition) {","lastModifiedDate":"2017-05-15"},{"lineNumber":39,"author":{"gitId":"-"},"content":" throw new IllegalArgumentException(errorMessage);","lastModifiedDate":"2017-05-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"UdhayaShan1":2,"-":40}},{"path":"src/main/java/seedu/realodex/commons/util/CollectionUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.commons.util;","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":" /** @see #requireAllNonNull(Collection) */","lastModifiedDate":"2017-05-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static void requireAllNonNull(Object... items) {","lastModifiedDate":"2017-05-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":" requireNonNull(items);","lastModifiedDate":"2017-06-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Stream.of(items).forEach(Objects::requireNonNull);","lastModifiedDate":"2017-05-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Throws NullPointerException if {@code items} or any element of {@code items} is null.","lastModifiedDate":"2017-05-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static void requireAllNonNull(Collection\u003c?\u003e items) {","lastModifiedDate":"2017-05-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" requireNonNull(items);","lastModifiedDate":"2017-06-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":" items.forEach(Objects::requireNonNull);","lastModifiedDate":"2017-05-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"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 {@code items} contain any elements that are non-null.","lastModifiedDate":"2017-06-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static boolean isAnyNonNull(Object... items) {","lastModifiedDate":"2017-06-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return items !\u003d null \u0026\u0026 Arrays.stream(items).anyMatch(Objects::nonNull);","lastModifiedDate":"2017-06-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"UdhayaShan1":1,"-":34}},{"path":"src/main/java/seedu/realodex/commons/util/ConfigUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.commons.util;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.Config;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":" public static Optional\u003cConfig\u003e readConfig(Path configFilePath) throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":16,"author":{"gitId":"-"},"content":" return JsonUtil.readJsonFile(configFilePath, Config.class);","lastModifiedDate":"2016-10-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static void saveConfig(Config config, Path configFilePath) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" JsonUtil.saveJsonFile(config, configFilePath);","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":"}","lastModifiedDate":"2016-09-24"}],"authorContributionMap":{"UdhayaShan1":3,"-":20}},{"path":"src/main/java/seedu/realodex/commons/util/FileUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.commons.util;","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":" public static boolean isFileExists(Path file) {","lastModifiedDate":"2018-04-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":" return Files.exists(file) \u0026\u0026 Files.isRegularFile(file);","lastModifiedDate":"2018-04-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-21"},{"lineNumber":21,"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":22,"author":{"gitId":"-"},"content":" * otherwise returns false.","lastModifiedDate":"2018-04-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @param path A string representing the file path. Cannot be null.","lastModifiedDate":"2018-04-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static boolean isValidPath(String path) {","lastModifiedDate":"2018-04-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-04-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":" Paths.get(path);","lastModifiedDate":"2018-04-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":" } catch (InvalidPathException ipe) {","lastModifiedDate":"2018-04-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-04-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Creates a file if it does not exist along with its missing parent directories.","lastModifiedDate":"2017-08-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * @throws IOException if the file or directory cannot be created.","lastModifiedDate":"2017-08-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static void createIfMissing(Path file) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" if (!isFileExists(file)) {","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" createFile(file);","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":"","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Creates a file if it does not exist along with its missing parent directories.","lastModifiedDate":"2018-04-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static void createFile(Path file) throws IOException {","lastModifiedDate":"2018-04-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (Files.exists(file)) {","lastModifiedDate":"2018-04-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return;","lastModifiedDate":"2018-04-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" createParentDirsOfFile(file);","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" Files.createFile(file);","lastModifiedDate":"2018-04-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Creates parent directories of file if it has a parent directory","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static void createParentDirsOfFile(Path file) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":" Path parentDir \u003d file.getParent();","lastModifiedDate":"2018-04-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (parentDir !\u003d null) {","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" Files.createDirectories(parentDir);","lastModifiedDate":"2018-04-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-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":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * Assumes file exists","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public static String readFromFile(Path file) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return new String(Files.readAllBytes(file), CHARSET);","lastModifiedDate":"2018-04-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * Writes given string to a file.","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Will create the file if it does not exist yet.","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static void writeToFile(Path file, String content) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":" Files.write(file, content.getBytes(CHARSET));","lastModifiedDate":"2018-04-21"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"UdhayaShan1":1,"-":82}},{"path":"src/main/java/seedu/realodex/commons/util/JsonUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.commons.util;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.LogsCenter;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":" static \u003cT\u003e void serializeObjectToJsonFile(Path jsonFile, T objectToSerialize) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" FileUtil.writeToFile(jsonFile, toJsonString(objectToSerialize));","lastModifiedDate":"2016-10-07"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":46,"author":{"gitId":"-"},"content":" static \u003cT\u003e T deserializeObjectFromJsonFile(Path jsonFile, Class\u003cT\u003e classOfObjectToDeserialize)","lastModifiedDate":"2018-04-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2016-10-07"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return fromJsonString(FileUtil.readFromFile(jsonFile), classOfObjectToDeserialize);","lastModifiedDate":"2016-10-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-07"},{"lineNumber":52,"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":53,"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":54,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * @param filePath cannot be null.","lastModifiedDate":"2016-10-07"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * @param classOfObjectToDeserialize JSON file has to correspond to the structure in the class given here.","lastModifiedDate":"2023-06-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * @throws DataLoadingException if loading of the JSON file failed.","lastModifiedDate":"2023-06-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-07"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static \u003cT\u003e Optional\u003cT\u003e readJsonFile(","lastModifiedDate":"2016-10-07"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Path filePath, Class\u003cT\u003e classOfObjectToDeserialize) throws DataLoadingException {","lastModifiedDate":"2023-06-14"},{"lineNumber":61,"author":{"gitId":"-"},"content":" requireNonNull(filePath);","lastModifiedDate":"2017-05-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (!Files.exists(filePath)) {","lastModifiedDate":"2018-04-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2016-10-07"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":66,"author":{"gitId":"-"},"content":" logger.info(\"JSON file \" + filePath + \" found.\");","lastModifiedDate":"2023-01-03"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":" T jsonFile;","lastModifiedDate":"2016-10-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-10-07"},{"lineNumber":71,"author":{"gitId":"-"},"content":" jsonFile \u003d deserializeObjectFromJsonFile(filePath, classOfObjectToDeserialize);","lastModifiedDate":"2018-04-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-10-07"},{"lineNumber":73,"author":{"gitId":"-"},"content":" logger.warning(\"Error reading from jsonFile file \" + filePath + \": \" + e);","lastModifiedDate":"2018-04-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" throw new DataLoadingException(e);","lastModifiedDate":"2023-06-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return Optional.of(jsonFile);","lastModifiedDate":"2016-10-07"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":80,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-07"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * Saves the Json object to the specified file.","lastModifiedDate":"2016-10-07"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * Overwrites existing file if it exists, creates a new file if it doesn\u0027t.","lastModifiedDate":"2016-10-07"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * @param jsonFile cannot be null","lastModifiedDate":"2016-10-07"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * @param filePath cannot be null","lastModifiedDate":"2016-10-07"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * @throws IOException if there was an error during writing to the file","lastModifiedDate":"2016-10-07"},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-07"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public static \u003cT\u003e void saveJsonFile(T jsonFile, Path filePath) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":88,"author":{"gitId":"-"},"content":" requireNonNull(filePath);","lastModifiedDate":"2017-05-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" requireNonNull(jsonFile);","lastModifiedDate":"2017-05-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":91,"author":{"gitId":"-"},"content":" serializeObjectToJsonFile(filePath, jsonFile);","lastModifiedDate":"2018-04-21"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-07"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-07"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * Converts a given string representation of a JSON data to instance of a class","lastModifiedDate":"2016-10-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * @param \u003cT\u003e The generic type to create an instance of","lastModifiedDate":"2016-10-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * @return The instance of T with the specified values in the JSON string","lastModifiedDate":"2016-10-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public static \u003cT\u003e T fromJsonString(String json, Class\u003cT\u003e instanceClass) throws IOException {","lastModifiedDate":"2016-10-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" return objectMapper.readValue(json, instanceClass);","lastModifiedDate":"2016-10-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":104,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-19"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * Converts a given instance of a class into its JSON data string representation","lastModifiedDate":"2016-10-19"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * @param instance The T object to be converted into the JSON string","lastModifiedDate":"2016-10-19"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * @param \u003cT\u003e The generic type to create an instance of","lastModifiedDate":"2016-10-19"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * @return JSON data representation of the given class instance, in string","lastModifiedDate":"2016-10-19"},{"lineNumber":109,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public static \u003cT\u003e String toJsonString(T instance) throws JsonProcessingException {","lastModifiedDate":"2016-10-19"},{"lineNumber":111,"author":{"gitId":"-"},"content":" return objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(instance);","lastModifiedDate":"2016-10-19"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Contains methods that retrieve logging level from serialized string.","lastModifiedDate":"2017-08-16"},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":117,"author":{"gitId":"-"},"content":" private static class LevelDeserializer extends FromStringDeserializer\u003cLevel\u003e {","lastModifiedDate":"2016-08-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" protected LevelDeserializer(Class\u003c?\u003e vc) {","lastModifiedDate":"2016-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" super(vc);","lastModifiedDate":"2016-08-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" protected Level _deserialize(String value, DeserializationContext ctxt) {","lastModifiedDate":"2018-08-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" return getLoggingLevel(value);","lastModifiedDate":"2016-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","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":" * Gets the logging level that matches loggingLevelString","lastModifiedDate":"2016-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" * \u003cp\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":" * Returns null if there are no matches","lastModifiedDate":"2016-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":" private Level getLoggingLevel(String loggingLevelString) {","lastModifiedDate":"2016-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":" return Level.parse(loggingLevelString);","lastModifiedDate":"2016-09-09"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public Class\u003cLevel\u003e handledType() {","lastModifiedDate":"2016-08-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":" return Level.class;","lastModifiedDate":"2016-08-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"UdhayaShan1":3,"-":141}},{"path":"src/main/java/seedu/realodex/commons/util/StringUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.commons.util;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"UdhayaShan1":2,"-":66}},{"path":"src/main/java/seedu/realodex/commons/util/ToStringBuilder.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.commons.util;","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":1,"-":52}},{"path":"src/main/java/seedu/realodex/logic/Logic.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.GuiSettings;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.CommandResult;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.ReadOnlyRealodex;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Person;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" * Returns the Realodex.","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-03"},{"lineNumber":29,"author":{"gitId":"UdhayaShan1"},"content":" * @see seedu.realodex.model.Model#getRealodex()","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-03"},{"lineNumber":31,"author":{"gitId":"UdhayaShan1"},"content":" ReadOnlyRealodex getRealodex();","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered list of persons */","lastModifiedDate":"2017-09-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"UdhayaShan1"},"content":" * Returns the user prefs\u0027 realodex file path.","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"UdhayaShan1"},"content":" Path getRealodexFilePath();","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":12,"-":38}},{"path":"src/main/java/seedu/realodex/logic/LogicManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.GuiSettings;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.LogsCenter;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.Command;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.CommandResult;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.parser.RealodexParser;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.ReadOnlyRealodex;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.storage.Storage;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" private final RealodexParser realodexParser;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" realodexParser \u003d new RealodexParser();","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" Command command \u003d realodexParser.parseCommand(commandText);","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" storage.saveRealodex(model.getRealodex());","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" public ReadOnlyRealodex getRealodex() {","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"UdhayaShan1"},"content":" return model.getRealodex();","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList();","lastModifiedDate":"2016-09-25"},{"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":"UdhayaShan1"},"content":" public Path getRealodexFilePath() {","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"UdhayaShan1"},"content":" return model.getRealodexFilePath();","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":20,"-":68}},{"path":"src/main/java/seedu/realodex/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.logic.parser.Prefix;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Person;","lastModifiedDate":"2024-03-19"},{"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":"appleraincoat"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX \u003d \"The client index provided is invalid\";","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"wapisai"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_NAME \u003d \"The client name provided is invalid\";","lastModifiedDate":"2024-03-17"},{"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":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"UdhayaShan1"},"content":" .append(\"; Income: \")","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"UdhayaShan1"},"content":" .append(person.getIncome())","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"UdhayaShan1"},"content":" .append(\"; Family: \")","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"UdhayaShan1"},"content":" .append(person.getFamily())","lastModifiedDate":"2024-03-11"},{"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":"appleraincoat"},"content":" builder.append(\"; Remark: \")","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"appleraincoat"},"content":" .append(person.getRemark());","lastModifiedDate":"2024-03-17"},{"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":{"UdhayaShan1":7,"-":47,"appleraincoat":3,"wapisai":1}},{"path":"src/main/java/seedu/realodex/logic/commands/AddCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.commands;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_FAMILY;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_INCOME;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":13,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.Messages;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"UdhayaShan1"},"content":" * Adds a person to the realodex.","lastModifiedDate":"2024-03-19"},{"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":"appleraincoat"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a client to the Realodex. \"","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09"},{"lineNumber":30,"author":{"gitId":"UdhayaShan1"},"content":" + PREFIX_INCOME + \"INCOME \"","lastModifiedDate":"2024-03-11"},{"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":"UdhayaShan1"},"content":" + PREFIX_FAMILY + \"FAMILY \"","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"4llysa"},"content":" + PREFIX_TAG + \"BUYER/SELLER \"","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"appleraincoat"},"content":" + \"[\" + PREFIX_REMARK + \"REMARK]\\n\"","lastModifiedDate":"2024-03-17"},{"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":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":39,"author":{"gitId":"UdhayaShan1"},"content":" + PREFIX_INCOME + \"20000 \"","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":42,"author":{"gitId":"UdhayaShan1"},"content":" + PREFIX_FAMILY + \"4 \"","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"4llysa"},"content":" + PREFIX_TAG + \"buyer \"","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"appleraincoat"},"content":" + PREFIX_TAG + \"seller \"","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"appleraincoat"},"content":" + PREFIX_REMARK + \"Has 3 cats.\";","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"appleraincoat"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New client added: %1$s\";","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"appleraincoat"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This client already exists in Realodex\";","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"appleraincoat"},"content":" public static final String MESSAGE_ADD_HELP \u003d \"Add Command: Adds a client to Realodex. You may input client\"","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"appleraincoat"},"content":" + \" details in any order. Remarks are optional to input.\\n\"","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"appleraincoat"},"content":" + \"Format: add n/NAME p/PHONE i/INCOME e/EMAIL a/ADDRESS f/FAMILY t/TAG [r/REMARK]\\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"appleraincoat"},"content":" + \"Example: add n/John Doe p/98765432 i/10000 e/johndoe@gmail.com a/Jurong Central 1 f/5 t/Buyer \"","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"appleraincoat"},"content":" + \"r/Likes Italian food.\\n\";","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10"},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":61,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":62,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":67,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":73,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23"},{"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":"2017-06-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"4llysa":2,"UdhayaShan1":19,"-":66,"appleraincoat":11}},{"path":"src/main/java/seedu/realodex/logic/commands/ClearCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.commands;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.Realodex;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":" * Clears the realodex.","lastModifiedDate":"2024-03-19"},{"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":"appleraincoat"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Realodex has been cleared!\";","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"appleraincoat"},"content":" public static final String MESSAGE_CLEAR_HELP \u003d \"Clear Command: Clears all entries in Realodex.\\n\"","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"appleraincoat"},"content":" + \"Format: clear\\n\";","lastModifiedDate":"2024-03-13"},{"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":"2017-05-15"},{"lineNumber":22,"author":{"gitId":"UdhayaShan1"},"content":" model.setRealodex(new Realodex());","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"UdhayaShan1":5,"-":17,"appleraincoat":3}},{"path":"src/main/java/seedu/realodex/logic/commands/Command.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.Model;","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":3,"-":17}},{"path":"src/main/java/seedu/realodex/logic/commands/CommandResult.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.commands;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":2,"-":80}},{"path":"src/main/java/seedu/realodex/logic/commands/DeleteCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.commands;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-09-01"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.index.Index;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.Messages;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.delete.DeleteCommandExecutor;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"UdhayaShan1"},"content":" * Deletes a person identified using it\u0027s displayed index from realodex.","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class DeleteCommand 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 \"delete\";","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","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"wapisai"},"content":" + \": Deletes the client identified by the index number or full name used in the displayed client list.\\n\"","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"wapisai"},"content":" + \"Parameters: INDEX (must be a positive integer) or \" + PREFIX_NAME + \"NAME \\n\"","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"wapisai"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 or \" + COMMAND_WORD + \" \" + PREFIX_NAME + \"John Doe\";","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"appleraincoat"},"content":" public static final String MESSAGE_DELETE_HELP \u003d \"Delete Command: Deletes a client in Realodex by \"","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"appleraincoat"},"content":" + \"either the client\u0027s full name or index number shown in the list.\\n\"","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"appleraincoat"},"content":" + \"Format: delete n/FULL NAME or delete INDEX\\n\"","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"appleraincoat"},"content":" + \"Example: delete n/James Lau OR delete 4\\n\";","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"appleraincoat"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Client: %1$s\";","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private final Index targetIndex;","lastModifiedDate":"2017-06-27"},{"lineNumber":38,"author":{"gitId":"wapisai"},"content":" private final Name targetName;","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"wapisai"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"wapisai"},"content":" * Creates a DeleteCommand to delete the person at the specified {@code Index}","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"wapisai"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public DeleteCommand(Index targetIndex) {","lastModifiedDate":"2017-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2016-09-22"},{"lineNumber":45,"author":{"gitId":"wapisai"},"content":" this.targetName \u003d null;","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"wapisai"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"wapisai"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"wapisai"},"content":" * Creates a DeleteCommand to delete the person with the specified {@code Name}","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"wapisai"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"wapisai"},"content":" public DeleteCommand(Name targetName) {","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"wapisai"},"content":" this.targetName \u003d targetName;","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"wapisai"},"content":" this.targetIndex \u003d null;","lastModifiedDate":"2024-03-17"},{"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 CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19"},{"lineNumber":60,"author":{"gitId":"wapisai"},"content":" Person personToDelete;","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":62,"author":{"gitId":"wapisai"},"content":" if (targetIndex !\u003d null) {","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"wapisai"},"content":" personToDelete \u003d DeleteCommandExecutor.deleteByIndex(lastShownList, targetIndex);","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"wapisai"},"content":" } else {","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"wapisai"},"content":" personToDelete \u003d DeleteCommandExecutor.deleteByName(lastShownList, targetName);","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" model.deletePerson(personToDelete);","lastModifiedDate":"2016-09-25"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete)));","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" if (!(other instanceof DeleteCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":84,"author":{"gitId":"wapisai"},"content":" if (targetIndex !\u003d null) {","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return targetIndex.equals(otherDeleteCommand.targetIndex);","lastModifiedDate":"2023-07-13"},{"lineNumber":86,"author":{"gitId":"wapisai"},"content":" } else {","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"wapisai"},"content":" return targetName.equals(otherDeleteCommand.targetName);","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"wapisai"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"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(\"targetIndex\", targetIndex)","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":{"UdhayaShan1":11,"-":55,"appleraincoat":6,"wapisai":25}},{"path":"src/main/java/seedu/realodex/logic/commands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.commands;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_FAMILY;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_INCOME;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"appleraincoat"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":21,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.index.Index;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.util.CollectionUtil;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.Messages;","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Address;","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Email;","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Family;","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Income;","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.remark.Remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.tag.Tag;","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26"},{"lineNumber":38,"author":{"gitId":"UdhayaShan1"},"content":" * Edits the details of an existing person in realodex.","lastModifiedDate":"2024-03-19"},{"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":"appleraincoat"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the client identified \"","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"appleraincoat"},"content":" + \"by the index number used in the displayed client list. \"","lastModifiedDate":"2024-03-13"},{"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":"wapisai"},"content":" + \"[\" + PREFIX_INCOME + \"INCOME] \"","lastModifiedDate":"2024-03-15"},{"lineNumber":51,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":53,"author":{"gitId":"wapisai"},"content":" + \"[\" + PREFIX_FAMILY + \"FAMILY] \"","lastModifiedDate":"2024-03-15"},{"lineNumber":54,"author":{"gitId":"wapisai"},"content":" + \"[\" + PREFIX_TAG + \"TAG]\"","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"wapisai"},"content":" + \"[\" + PREFIX_REMARK + \"REMARK]\\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09"},{"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":"appleraincoat"},"content":" public static final String MESSAGE_EDIT_HELP \u003d \"Edit Command: Edits a client\u0027s particulars through their \"","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"appleraincoat"},"content":" + \"index number shown in the list.\\n\"","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"appleraincoat"},"content":" + \"Format: edit INDEX NUMBER [n/NAME] [p/PHONE] [i/INCOME] [e/EMAIL] [a/ADDRESS] [f/FAMILY] \"","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"appleraincoat"},"content":" + \"[t/TAG] [r/REMARK]\\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"appleraincoat"},"content":" + \"Example: edit 3 n/John e/john@gmail.com f/5\\n\";","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":66,"author":{"gitId":"appleraincoat"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Client: %1$s\";","lastModifiedDate":"2024-03-13"},{"lineNumber":67,"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":68,"author":{"gitId":"appleraincoat"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This client already exists in Realodex.\";","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":71,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25"},{"lineNumber":78,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25"},{"lineNumber":79,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25"},{"lineNumber":82,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":87,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":88,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":90,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19"},{"lineNumber":91,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":98,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":101,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":102,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":103,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":106,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26"},{"lineNumber":109,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":110,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":113,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":114,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21"},{"lineNumber":115,"author":{"gitId":"UdhayaShan1"},"content":" Income updatedIncome \u003d editPersonDescriptor.getIncome().orElse(personToEdit.getIncome());","lastModifiedDate":"2024-03-11"},{"lineNumber":116,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":117,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2017-06-21"},{"lineNumber":118,"author":{"gitId":"UdhayaShan1"},"content":" Family updatedFamily \u003d editPersonDescriptor.getFamily().orElse(personToEdit.getFamily());","lastModifiedDate":"2024-03-11"},{"lineNumber":119,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2017-06-21"},{"lineNumber":120,"author":{"gitId":"appleraincoat"},"content":" Remark updatedRemark \u003d editPersonDescriptor.getRemark().orElse(personToEdit.getRemark());","lastModifiedDate":"2024-03-16"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":122,"author":{"gitId":"UdhayaShan1"},"content":" return new Person(updatedName, updatedPhone, updatedIncome,","lastModifiedDate":"2024-03-11"},{"lineNumber":123,"author":{"gitId":"UdhayaShan1"},"content":" updatedEmail, updatedAddress, updatedFamily,","lastModifiedDate":"2024-03-11"},{"lineNumber":124,"author":{"gitId":"appleraincoat"},"content":" updatedTags, updatedRemark);","lastModifiedDate":"2024-03-16"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":139,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13"},{"lineNumber":140,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":152,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26"},{"lineNumber":153,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26"},{"lineNumber":154,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":155,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26"},{"lineNumber":156,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21"},{"lineNumber":157,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":158,"author":{"gitId":"UdhayaShan1"},"content":" private Income income;","lastModifiedDate":"2024-03-11"},{"lineNumber":159,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":160,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21"},{"lineNumber":161,"author":{"gitId":"UdhayaShan1"},"content":" private Family family;","lastModifiedDate":"2024-03-11"},{"lineNumber":162,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21"},{"lineNumber":163,"author":{"gitId":"appleraincoat"},"content":" private Remark remark;","lastModifiedDate":"2024-03-16"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":165,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":167,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":168,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11"},{"lineNumber":169,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":170,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":171,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26"},{"lineNumber":172,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15"},{"lineNumber":173,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15"},{"lineNumber":174,"author":{"gitId":"UdhayaShan1"},"content":" setIncome(toCopy.income);","lastModifiedDate":"2024-03-11"},{"lineNumber":175,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15"},{"lineNumber":176,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15"},{"lineNumber":177,"author":{"gitId":"UdhayaShan1"},"content":" setFamily(toCopy.family);","lastModifiedDate":"2024-03-11"},{"lineNumber":178,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11"},{"lineNumber":179,"author":{"gitId":"appleraincoat"},"content":" setRemark(toCopy.remark);","lastModifiedDate":"2024-03-16"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":182,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":183,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26"},{"lineNumber":184,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":185,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26"},{"lineNumber":186,"author":{"gitId":"wapisai"},"content":" return CollectionUtil.isAnyNonNull(name, phone, income, email, address, family, tags, remark);","lastModifiedDate":"2024-03-18"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":189,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21"},{"lineNumber":190,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21"},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":193,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":194,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":197,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21"},{"lineNumber":198,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":199,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":201,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26"},{"lineNumber":202,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21"},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":205,"author":{"gitId":"UdhayaShan1"},"content":" public void setIncome(Income income) {","lastModifiedDate":"2024-03-11"},{"lineNumber":206,"author":{"gitId":"UdhayaShan1"},"content":" this.income \u003d income;","lastModifiedDate":"2024-03-11"},{"lineNumber":207,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":208,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":209,"author":{"gitId":"UdhayaShan1"},"content":" public Optional\u003cIncome\u003e getIncome() {","lastModifiedDate":"2024-03-11"},{"lineNumber":210,"author":{"gitId":"UdhayaShan1"},"content":" return Optional.ofNullable(income);","lastModifiedDate":"2024-03-11"},{"lineNumber":211,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":212,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":213,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21"},{"lineNumber":214,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21"},{"lineNumber":215,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":217,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":218,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21"},{"lineNumber":219,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":221,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21"},{"lineNumber":222,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21"},{"lineNumber":223,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":225,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26"},{"lineNumber":226,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21"},{"lineNumber":227,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":229,"author":{"gitId":"UdhayaShan1"},"content":" public void setFamily(Family family) {","lastModifiedDate":"2024-03-11"},{"lineNumber":230,"author":{"gitId":"UdhayaShan1"},"content":" this.family \u003d family;","lastModifiedDate":"2024-03-11"},{"lineNumber":231,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":232,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":233,"author":{"gitId":"UdhayaShan1"},"content":" public Optional\u003cFamily\u003e getFamily() {","lastModifiedDate":"2024-03-11"},{"lineNumber":234,"author":{"gitId":"UdhayaShan1"},"content":" return Optional.ofNullable(family);","lastModifiedDate":"2024-03-11"},{"lineNumber":235,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":236,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":237,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":238,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11"},{"lineNumber":239,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":240,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":241,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21"},{"lineNumber":242,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11"},{"lineNumber":243,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":245,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":246,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11"},{"lineNumber":247,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11"},{"lineNumber":248,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11"},{"lineNumber":249,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":250,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":251,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11"},{"lineNumber":252,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":254,"author":{"gitId":"appleraincoat"},"content":" public void setRemark(Remark remark) {","lastModifiedDate":"2024-03-16"},{"lineNumber":255,"author":{"gitId":"appleraincoat"},"content":" this.remark \u003d (remark !\u003d null) ? remark : null;","lastModifiedDate":"2024-03-16"},{"lineNumber":256,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":257,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":258,"author":{"gitId":"appleraincoat"},"content":" public Optional\u003cRemark\u003e getRemark() {","lastModifiedDate":"2024-03-16"},{"lineNumber":259,"author":{"gitId":"appleraincoat"},"content":" return (remark !\u003d null) ? Optional.of(remark) : Optional.empty();","lastModifiedDate":"2024-03-16"},{"lineNumber":260,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":261,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":262,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":263,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":264,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":265,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":266,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":268,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":269,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05"},{"lineNumber":270,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":271,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":273,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":274,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":275,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":276,"author":{"gitId":"wapisai"},"content":" \u0026\u0026 Objects.equals(income, otherEditPersonDescriptor.income)","lastModifiedDate":"2024-03-15"},{"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":"wapisai"},"content":" \u0026\u0026 Objects.equals(family, otherEditPersonDescriptor.family)","lastModifiedDate":"2024-03-15"},{"lineNumber":280,"author":{"gitId":"wapisai"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags)","lastModifiedDate":"2024-03-18"},{"lineNumber":281,"author":{"gitId":"wapisai"},"content":" \u0026\u0026 Objects.equals(remark, otherEditPersonDescriptor.remark);","lastModifiedDate":"2024-03-18"},{"lineNumber":282,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":284,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":285,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":286,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":287,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":288,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":289,"author":{"gitId":"wapisai"},"content":" .add(\"income\", income)","lastModifiedDate":"2024-03-15"},{"lineNumber":290,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":291,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":292,"author":{"gitId":"wapisai"},"content":" .add(\"family\", family)","lastModifiedDate":"2024-03-15"},{"lineNumber":293,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":294,"author":{"gitId":"wapisai"},"content":" .add(\"remark\", remark)","lastModifiedDate":"2024-03-18"},{"lineNumber":295,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":296,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":297,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":298,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"UdhayaShan1":49,"-":214,"appleraincoat":23,"wapisai":12}},{"path":"src/main/java/seedu/realodex/logic/commands/ExitCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":3,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.Model;","lastModifiedDate":"2024-03-19"},{"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":"appleraincoat"},"content":" public static final String MESSAGE_EXIT_ACKNOWLEDGEMENT \u003d \"Exiting Realodex as requested ...\";","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"appleraincoat"},"content":" public static final String MESSAGE_EXIT_HELP \u003d \"Exit Command: Exits Realodex.\\n\"","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"appleraincoat"},"content":" + \"Format: exit\\n\";","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, false, true);","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"UdhayaShan1":2,"-":16,"appleraincoat":3}},{"path":"src/main/java/seedu/realodex/logic/commands/FilterCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.commands;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.Messages;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.NameContainsKeyphrasePredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":" * Filters and lists all persons in realodex whose name contains the argument keyphrase.","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"jyztintan"},"content":" * Keyphrase matching is case-insensitive.","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":14,"author":{"gitId":"jyztintan"},"content":"public class FilterCommand extends Command {","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":16,"author":{"gitId":"jyztintan"},"content":" public static final String COMMAND_WORD \u003d \"filter\";","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":18,"author":{"gitId":"jyztintan"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Filters all clients whose names contain \"","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"jyztintan"},"content":" + \"the specified keyphrase (case-insensitive) and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"jyztintan"},"content":" + \"Parameters: KEYPHRASE (Non-empty String)\\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"jyztintan"},"content":" + \"Example: \" + COMMAND_WORD + \" alice tan\";","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":23,"author":{"gitId":"jyztintan"},"content":" public static final String MESSAGE_FIND_HELP \u003d \"Filter Command: Filters clients whose names contain \"","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"jyztintan"},"content":" + \"the specified keyphrase (case-insensitive) and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"appleraincoat"},"content":" + \"Format: filter KEYPHRASE\\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"appleraincoat"},"content":" + \"Example: filter Jus\\n\";","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"jyztintan"},"content":" private final NameContainsKeyphrasePredicate predicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":30,"author":{"gitId":"jyztintan"},"content":" public FilterCommand(NameContainsKeyphrasePredicate predicate) {","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22"},{"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":"-"},"content":" model.updateFilteredPersonList(predicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return new CommandResult(","lastModifiedDate":"2018-04-01"},{"lineNumber":39,"author":{"gitId":"-"},"content":" String.format(Messages.MESSAGE_PERSONS_LISTED_OVERVIEW, model.getFilteredPersonList().size()));","lastModifiedDate":"2018-04-01"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"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":"jyztintan"},"content":" if (!(other instanceof FilterCommand)) {","lastModifiedDate":"2024-03-16"},{"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":"jyztintan"},"content":" FilterCommand otherFilterCommand \u003d (FilterCommand) other;","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"jyztintan"},"content":" return predicate.equals(otherFilterCommand.predicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"jyztintan":14,"UdhayaShan1":6,"-":40,"appleraincoat":3}},{"path":"src/main/java/seedu/realodex/logic/commands/HelpCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.Model;","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"UdhayaShan1":2,"-":19}},{"path":"src/main/java/seedu/realodex/logic/commands/ListCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.commands;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":" * Lists all persons in realodex to the user.","lastModifiedDate":"2024-03-19"},{"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":"appleraincoat"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all clients\";","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"appleraincoat"},"content":" public static final String MESSAGE_LIST_HELP \u003d \"List Command: Lists all clients in Realodex.\\n\"","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"appleraincoat"},"content":" + \"Format: list\\n\";","lastModifiedDate":"2024-03-13"},{"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":{"UdhayaShan1":4,"-":18,"appleraincoat":3}},{"path":"src/main/java/seedu/realodex/logic/commands/delete/DeleteCommandExecutor.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.commands.delete;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"wapisai"},"content":"import java.util.List;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.index.Index;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.Messages;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"wapisai"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"wapisai"},"content":" * Contains the logic for executing the delete command.","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"wapisai"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"wapisai"},"content":"public class DeleteCommandExecutor {","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"wapisai"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"UdhayaShan1"},"content":" * Deletes a client from realodex using their index in the last shown list.","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"wapisai"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"wapisai"},"content":" public static Person deleteByIndex(List\u003cPerson\u003e lastShownList, Index targetIndex) throws CommandException {","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"wapisai"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size() || targetIndex.getZeroBased() \u003c 0) {","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"wapisai"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"wapisai"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"wapisai"},"content":" return lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"wapisai"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"wapisai"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"UdhayaShan1"},"content":" * Deletes a client from realodex using their full name.","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"wapisai"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"wapisai"},"content":" public static Person deleteByName(List\u003cPerson\u003e lastShownList, Name targetName) throws CommandException {","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"wapisai"},"content":" for (Person person : lastShownList) {","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"wapisai"},"content":" if (person.getName().equals(targetName)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"wapisai"},"content":" return person;","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"wapisai"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"wapisai"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"wapisai"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_NAME);","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"wapisai"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"wapisai"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"UdhayaShan1":8,"wapisai":30}},{"path":"src/main/java/seedu/realodex/logic/commands/exceptions/CommandException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.commands.exceptions;","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":1,"-":16}},{"path":"src/main/java/seedu/realodex/logic/parser/AddCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.parser;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":3,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_FAMILY;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_INCOME;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.AddCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Address;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Email;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Family;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Income;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.remark.Remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.tag.Tag;","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05"},{"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-02-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":40,"author":{"gitId":"UdhayaShan1"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_INCOME,","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"appleraincoat"},"content":" PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_FAMILY, PREFIX_TAG, PREFIX_REMARK);","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":43,"author":{"gitId":"UdhayaShan1"},"content":" if (!arePrefixesPresent(argMultimap,","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"UdhayaShan1"},"content":" PREFIX_NAME,","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"UdhayaShan1"},"content":" PREFIX_ADDRESS,","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"UdhayaShan1"},"content":" PREFIX_INCOME,","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"UdhayaShan1"},"content":" PREFIX_PHONE,","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"UdhayaShan1"},"content":" PREFIX_FAMILY,","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"UdhayaShan1"},"content":" PREFIX_EMAIL,","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"UdhayaShan1"},"content":" PREFIX_TAG)","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":55,"author":{"gitId":"UdhayaShan1"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_INCOME, PREFIX_EMAIL,","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"appleraincoat"},"content":" PREFIX_FAMILY, PREFIX_ADDRESS, PREFIX_REMARK);","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":58,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":59,"author":{"gitId":"UdhayaShan1"},"content":" Income income \u003d ParserUtil.parseIncome(argMultimap.getValue(PREFIX_INCOME).get());","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":61,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":62,"author":{"gitId":"UdhayaShan1"},"content":" Family family \u003d ParserUtil.parseFamily(argMultimap.getValue(PREFIX_FAMILY).get());","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"4llysa"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2024-03-15"},{"lineNumber":64,"author":{"gitId":"appleraincoat"},"content":" Remark remark \u003d ParserUtil.parseRemark(argMultimap.getRemarkValue(PREFIX_REMARK).get());","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"4llysa"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":66,"author":{"gitId":"appleraincoat"},"content":" Person person \u003d new Person(name, phone, income, email, address, family, tagList, remark);","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":75,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":79,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"4llysa":2,"UdhayaShan1":33,"-":40,"appleraincoat":4}},{"path":"src/main/java/seedu/realodex/logic/parser/ArgumentMultimap.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.parser;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.logic.Messages;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-19"},{"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":"appleraincoat"},"content":" public Optional\u003cString\u003e getRemarkValue(Prefix prefix) {","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"appleraincoat"},"content":" List\u003cString\u003e values \u003d getAllValues(prefix);","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"appleraincoat"},"content":" return values.isEmpty() ? Optional.of(\"\") : Optional.of(values.get(values.size() - 1));","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Returns all values of {@code prefix}.","lastModifiedDate":"2017-03-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * If the prefix does not exist or has no values, this will return an empty list.","lastModifiedDate":"2017-03-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Modifying the returned list will not affect the underlying data structure of the ArgumentMultimap.","lastModifiedDate":"2017-03-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public List\u003cString\u003e getAllValues(Prefix prefix) {","lastModifiedDate":"2017-03-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" if (!argMultimap.containsKey(prefix)) {","lastModifiedDate":"2017-03-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e();","lastModifiedDate":"2017-03-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(argMultimap.get(prefix));","lastModifiedDate":"2017-03-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Returns the preamble (text before the first valid prefix). Trims any leading/trailing spaces.","lastModifiedDate":"2017-03-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public String getPreamble() {","lastModifiedDate":"2017-03-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return getValue(new Prefix(\"\")).orElse(\"\");","lastModifiedDate":"2017-03-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Throws a {@code ParseException} if any of the prefixes given in {@code prefixes} appeared more than","lastModifiedDate":"2023-07-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * once among the arguments.","lastModifiedDate":"2023-07-14"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void verifyNoDuplicatePrefixesFor(Prefix... prefixes) throws ParseException {","lastModifiedDate":"2023-07-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":" Prefix[] duplicatedPrefixes \u003d Stream.of(prefixes).distinct()","lastModifiedDate":"2023-07-14"},{"lineNumber":76,"author":{"gitId":"-"},"content":" .filter(prefix -\u003e argMultimap.containsKey(prefix) \u0026\u0026 argMultimap.get(prefix).size() \u003e 1)","lastModifiedDate":"2023-07-14"},{"lineNumber":77,"author":{"gitId":"-"},"content":" .toArray(Prefix[]::new);","lastModifiedDate":"2023-07-14"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":79,"author":{"gitId":"-"},"content":" if (duplicatedPrefixes.length \u003e 0) {","lastModifiedDate":"2023-07-14"},{"lineNumber":80,"author":{"gitId":"-"},"content":" throw new ParseException(Messages.getErrorMessageForDuplicatePrefixes(duplicatedPrefixes));","lastModifiedDate":"2023-07-14"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":83,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-08"}],"authorContributionMap":{"UdhayaShan1":3,"-":75,"appleraincoat":5}},{"path":"src/main/java/seedu/realodex/logic/parser/ArgumentTokenizer.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.parser;","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":1,"-":147}},{"path":"src/main/java/seedu/realodex/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.parser;","lastModifiedDate":"2024-03-19"},{"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":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":" public static final Prefix PREFIX_INCOME \u003d new Prefix(\"i/\");","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"UdhayaShan1"},"content":" //To remove EMAIl field soon","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":16,"author":{"gitId":"UdhayaShan1"},"content":" public static final Prefix PREFIX_FAMILY \u003d new Prefix(\"f/\");","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"UdhayaShan1"},"content":" //Possible rename to additional notes to fit feature spec","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":20,"author":{"gitId":"appleraincoat"},"content":" public static final Prefix PREFIX_REMARK \u003d new Prefix(\"r/\");","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":22,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"UdhayaShan1":8,"-":15,"appleraincoat":1}},{"path":"src/main/java/seedu/realodex/logic/parser/DeleteCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.parser;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":5,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.index.Index;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new DeleteCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class DeleteCommandParser implements Parser\u003cDeleteCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * and returns a DeleteCommand object for execution.","lastModifiedDate":"2019-05-11"},{"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":"wapisai"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_NAME);","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"wapisai"},"content":" if (namePrefixPresent(argMultimap)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"wapisai"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"wapisai"},"content":" return new DeleteCommand(name);","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"wapisai"},"content":" } else {","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"-"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2017-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" return new DeleteCommand(index);","lastModifiedDate":"2017-05-15"},{"lineNumber":28,"author":{"gitId":"wapisai"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":31,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"wapisai"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"wapisai"},"content":" * Returns true if there is a PREFIX_NAME in the given","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"wapisai"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"wapisai"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"wapisai"},"content":" private static boolean namePrefixPresent(ArgumentMultimap argumentMultimap) {","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"wapisai"},"content":" return argumentMultimap.getValue(PREFIX_NAME).isPresent();","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"UdhayaShan1":6,"-":19,"wapisai":14}},{"path":"src/main/java/seedu/realodex/logic/parser/EditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.parser;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_FAMILY;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_INCOME;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"appleraincoat"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.index.Index;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.EditCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":30,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":32,"author":{"gitId":"wapisai"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_INCOME, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"wapisai"},"content":" PREFIX_FAMILY, PREFIX_TAG, PREFIX_REMARK);","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06"},{"lineNumber":39,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10"},{"lineNumber":40,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":43,"author":{"gitId":"wapisai"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_INCOME, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"wapisai"},"content":" PREFIX_FAMILY, PREFIX_REMARK);","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":46,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-01-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":49,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":52,"author":{"gitId":"-"},"content":" editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":54,"author":{"gitId":"wapisai"},"content":" if (argMultimap.getValue(PREFIX_INCOME).isPresent()) {","lastModifiedDate":"2024-03-15"},{"lineNumber":55,"author":{"gitId":"wapisai"},"content":" editPersonDescriptor.setIncome(ParserUtil.parseIncome(argMultimap.getValue(PREFIX_INCOME).get()));","lastModifiedDate":"2024-03-15"},{"lineNumber":56,"author":{"gitId":"wapisai"},"content":" }","lastModifiedDate":"2024-03-15"},{"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":"wapisai"},"content":" if (argMultimap.getValue(PREFIX_FAMILY).isPresent()) {","lastModifiedDate":"2024-03-15"},{"lineNumber":64,"author":{"gitId":"wapisai"},"content":" editPersonDescriptor.setFamily(ParserUtil.parseFamily(argMultimap.getValue(PREFIX_FAMILY).get()));","lastModifiedDate":"2024-03-15"},{"lineNumber":65,"author":{"gitId":"wapisai"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":66,"author":{"gitId":"wapisai"},"content":" if (argMultimap.getValue(PREFIX_TAG).isPresent()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"wapisai"},"content":" editPersonDescriptor.setTags(ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG)));","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"wapisai"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"wapisai"},"content":" if (argMultimap.getValue(PREFIX_REMARK).isPresent()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"wapisai"},"content":" editPersonDescriptor.setRemark(ParserUtil.parseRemark(argMultimap.getValue(PREFIX_REMARK).get()));","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"wapisai"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"UdhayaShan1":13,"-":48,"appleraincoat":1,"wapisai":16}},{"path":"src/main/java/seedu/realodex/logic/parser/FilterCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.parser;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":5,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.FilterCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.NameContainsKeyphrasePredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":10,"author":{"gitId":"jyztintan"},"content":" * Parses input arguments and creates a new FilterCommand object","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"jyztintan"},"content":"public class FilterCommandParser implements Parser\u003cFilterCommand\u003e {","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"jyztintan"},"content":" * Parses the given {@code String} of arguments in the context of the FilterCommand","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"jyztintan"},"content":" * and returns a FilterCommand object for execution.","lastModifiedDate":"2024-03-16"},{"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":"jyztintan"},"content":" public FilterCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"jyztintan"},"content":" String keyPhrase \u003d args.trim();","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"jyztintan"},"content":" if (keyPhrase.isEmpty()) {","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11"},{"lineNumber":23,"author":{"gitId":"jyztintan"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FilterCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":26,"author":{"gitId":"jyztintan"},"content":" return new FilterCommand(new NameContainsKeyphrasePredicate(keyPhrase));","lastModifiedDate":"2024-03-16"},{"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":{"jyztintan":9,"UdhayaShan1":5,"-":15}},{"path":"src/main/java/seedu/realodex/logic/parser/Parser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.parser;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06"},{"lineNumber":3,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.Command;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":3,"-":13}},{"path":"src/main/java/seedu/realodex/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.parser;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.index.Index;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.util.StringUtil;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Address;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Email;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Family;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Income;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.remark.Remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.tag.Tag;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18"},{"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":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":59,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":63,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30"},{"lineNumber":64,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":65,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":66,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","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":"UdhayaShan1"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":72,"author":{"gitId":"UdhayaShan1"},"content":" * Parses a {@code String income} into a {@code Income}.","lastModifiedDate":"2024-03-11"},{"lineNumber":73,"author":{"gitId":"UdhayaShan1"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"UdhayaShan1"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":75,"author":{"gitId":"UdhayaShan1"},"content":" * @throws ParseException if the given {@code income} is invalid.","lastModifiedDate":"2024-03-11"},{"lineNumber":76,"author":{"gitId":"UdhayaShan1"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":77,"author":{"gitId":"UdhayaShan1"},"content":" public static Income parseIncome(String income) throws ParseException {","lastModifiedDate":"2024-03-11"},{"lineNumber":78,"author":{"gitId":"UdhayaShan1"},"content":" requireNonNull(income);","lastModifiedDate":"2024-03-11"},{"lineNumber":79,"author":{"gitId":"UdhayaShan1"},"content":" String trimmedIncome \u003d income.trim();","lastModifiedDate":"2024-03-11"},{"lineNumber":80,"author":{"gitId":"UdhayaShan1"},"content":" if (!Income.isValidIncome(trimmedIncome)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":81,"author":{"gitId":"UdhayaShan1"},"content":" throw new ParseException(Income.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-11"},{"lineNumber":82,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":83,"author":{"gitId":"UdhayaShan1"},"content":" return new Income(trimmedIncome);","lastModifiedDate":"2024-03-11"},{"lineNumber":84,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":85,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":89,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":93,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30"},{"lineNumber":94,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":95,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":96,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":98,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","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":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":104,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":108,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":109,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":110,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":111,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":113,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","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":"UdhayaShan1"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":117,"author":{"gitId":"UdhayaShan1"},"content":" * Parses a {@code String family} into a {@code Family}.","lastModifiedDate":"2024-03-11"},{"lineNumber":118,"author":{"gitId":"UdhayaShan1"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-11"},{"lineNumber":119,"author":{"gitId":"UdhayaShan1"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":120,"author":{"gitId":"UdhayaShan1"},"content":" * @throws ParseException if the given {@code family} is invalid.","lastModifiedDate":"2024-03-11"},{"lineNumber":121,"author":{"gitId":"UdhayaShan1"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":122,"author":{"gitId":"UdhayaShan1"},"content":" public static Family parseFamily(String family) throws ParseException {","lastModifiedDate":"2024-03-11"},{"lineNumber":123,"author":{"gitId":"UdhayaShan1"},"content":" requireNonNull(family);","lastModifiedDate":"2024-03-11"},{"lineNumber":124,"author":{"gitId":"UdhayaShan1"},"content":" String trimmedFamily \u003d family.trim();","lastModifiedDate":"2024-03-11"},{"lineNumber":125,"author":{"gitId":"UdhayaShan1"},"content":" if (!Family.isValidFamily(trimmedFamily)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":126,"author":{"gitId":"UdhayaShan1"},"content":" throw new ParseException(Family.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-11"},{"lineNumber":127,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":128,"author":{"gitId":"UdhayaShan1"},"content":" assert Integer.parseInt(trimmedFamily) \u003e\u003d 1;","lastModifiedDate":"2024-03-13"},{"lineNumber":129,"author":{"gitId":"UdhayaShan1"},"content":" return new Family(trimmedFamily);","lastModifiedDate":"2024-03-11"},{"lineNumber":130,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":131,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":134,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":135,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":136,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":137,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":138,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":139,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30"},{"lineNumber":140,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":141,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":142,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":144,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":147,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":148,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07"},{"lineNumber":149,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":150,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":151,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15"},{"lineNumber":152,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11"},{"lineNumber":153,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11"},{"lineNumber":154,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":156,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":158,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":159,"author":{"gitId":"appleraincoat"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":160,"author":{"gitId":"appleraincoat"},"content":" * Parses a {@code String remark} into a {@code Remark}.","lastModifiedDate":"2024-03-16"},{"lineNumber":161,"author":{"gitId":"appleraincoat"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-16"},{"lineNumber":162,"author":{"gitId":"appleraincoat"},"content":" *","lastModifiedDate":"2024-03-16"},{"lineNumber":163,"author":{"gitId":"appleraincoat"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":164,"author":{"gitId":"appleraincoat"},"content":" public static Remark parseRemark(String remark) {","lastModifiedDate":"2024-03-17"},{"lineNumber":165,"author":{"gitId":"appleraincoat"},"content":" String trimmedRemark \u003d remark.trim();","lastModifiedDate":"2024-03-16"},{"lineNumber":166,"author":{"gitId":"appleraincoat"},"content":" return new Remark(trimmedRemark);","lastModifiedDate":"2024-03-16"},{"lineNumber":167,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":168,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"UdhayaShan1":43,"-":115,"appleraincoat":10}},{"path":"src/main/java/seedu/realodex/logic/parser/Prefix.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.parser;","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":1,"-":41}},{"path":"src/main/java/seedu/realodex/logic/parser/RealodexParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.parser;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.LogsCenter;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.AddCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.ClearCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.Command;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.EditCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.ExitCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.FilterCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.HelpCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.ListCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"public class RealodexParser {","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(RealodexParser.class);","lastModifiedDate":"2024-03-19"},{"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":"jyztintan"},"content":" case FilterCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"jyztintan"},"content":" return new FilterCommandParser().parse(arguments);","lastModifiedDate":"2024-03-16"},{"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"}],"authorContributionMap":{"jyztintan":2,"UdhayaShan1":16,"-":68}},{"path":"src/main/java/seedu/realodex/logic/parser/exceptions/ParseException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.parser.exceptions;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":3,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":2,"-":15}},{"path":"src/main/java/seedu/realodex/model/Model.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.model;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.GuiSettings;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Person;","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2017-08-05"},{"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":"UdhayaShan1"},"content":" * Returns the user prefs\u0027 realodex file path.","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"UdhayaShan1"},"content":" Path getRealodexFilePath();","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"UdhayaShan1"},"content":" * Sets the user prefs\u0027 realodex file path.","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"UdhayaShan1"},"content":" void setRealodexFilePath(Path realodexFilePath);","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"UdhayaShan1"},"content":" * Replaces realodex data with the data in {@code realodex}.","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"UdhayaShan1"},"content":" void setRealodex(ReadOnlyRealodex realodex);","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":52,"author":{"gitId":"UdhayaShan1"},"content":" /** Returns the Realodex */","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"UdhayaShan1"},"content":" ReadOnlyRealodex getRealodex();","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":56,"author":{"gitId":"UdhayaShan1"},"content":" * Returns true if a person with the same identity as {@code person} exists in realodex.","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" * The person must exist in the realodex.","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" * {@code person} must not already exist in realodex.","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":14,"-":73}},{"path":"src/main/java/seedu/realodex/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.model;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-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":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.GuiSettings;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.LogsCenter;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"UdhayaShan1"},"content":" * Represents the in-memory model of the realodex data.","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" private final Realodex realodex;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2018-01-10"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"UdhayaShan1"},"content":" * Initializes a ModelManager with the given realodex and userPrefs.","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"UdhayaShan1"},"content":" public ModelManager(ReadOnlyRealodex realodex, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"UdhayaShan1"},"content":" requireAllNonNull(realodex, userPrefs);","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":32,"author":{"gitId":"UdhayaShan1"},"content":" logger.fine(\"Initializing with realodex: \" + realodex + \" and user prefs \" + userPrefs);","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"UdhayaShan1"},"content":" this.realodex \u003d new Realodex(realodex);","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":36,"author":{"gitId":"UdhayaShan1"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(this.realodex.getPersonList());","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" this(new Realodex(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"UdhayaShan1"},"content":" public Path getRealodexFilePath() {","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"UdhayaShan1"},"content":" return userPrefs.getRealodexFilePath();","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","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":"UdhayaShan1"},"content":" public void setRealodexFilePath(Path realodexFilePath) {","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"UdhayaShan1"},"content":" requireNonNull(realodexFilePath);","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"UdhayaShan1"},"content":" userPrefs.setRealodexFilePath(realodexFilePath);","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"UdhayaShan1"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Realodex \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":81,"author":{"gitId":"UdhayaShan1"},"content":" public void setRealodex(ReadOnlyRealodex realodex) {","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"UdhayaShan1"},"content":" this.realodex.resetData(realodex);","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":86,"author":{"gitId":"UdhayaShan1"},"content":" public ReadOnlyRealodex getRealodex() {","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"UdhayaShan1"},"content":" return realodex;","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":92,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":93,"author":{"gitId":"UdhayaShan1"},"content":" return realodex.hasPerson(person);","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15"},{"lineNumber":98,"author":{"gitId":"UdhayaShan1"},"content":" realodex.removePerson(target);","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":102,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":103,"author":{"gitId":"UdhayaShan1"},"content":" realodex.addPerson(person);","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":109,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":111,"author":{"gitId":"UdhayaShan1"},"content":" realodex.setPerson(target, editedPerson);","lastModifiedDate":"2024-03-19"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":114,"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":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":117,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10"},{"lineNumber":118,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11"},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":121,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":122,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":126,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":127,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05"},{"lineNumber":128,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12"},{"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":"2017-05-31"},{"lineNumber":132,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":137,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31"},{"lineNumber":138,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":139,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":143,"author":{"gitId":"UdhayaShan1"},"content":" return realodex.equals(otherModelManager.realodex)","lastModifiedDate":"2024-03-19"},{"lineNumber":144,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13"},{"lineNumber":145,"author":{"gitId":"-"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons);","lastModifiedDate":"2023-07-13"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":148,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"UdhayaShan1":29,"-":119}},{"path":"src/main/java/seedu/realodex/model/ReadOnlyRealodex.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.model;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":" * Unmodifiable view of an realodex","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"public interface ReadOnlyRealodex {","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the persons list.","lastModifiedDate":"2016-12-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * This list will not contain any duplicate persons.","lastModifiedDate":"2016-12-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"UdhayaShan1":4,"-":13}},{"path":"src/main/java/seedu/realodex/model/ReadOnlyUserPrefs.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.model;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.GuiSettings;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" Path getRealodexFilePath();","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-11-27"}],"authorContributionMap":{"UdhayaShan1":3,"-":13}},{"path":"src/main/java/seedu/realodex/model/Realodex.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.model;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.UniquePersonList;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"UdhayaShan1"},"content":" * Wraps all data at the realodex level","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Duplicates are not allowed (by .isSamePerson comparison)","lastModifiedDate":"2018-04-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"UdhayaShan1"},"content":"public class Realodex implements ReadOnlyRealodex {","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private final UniquePersonList persons;","lastModifiedDate":"2016-08-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-19"},{"lineNumber":21,"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":22,"author":{"gitId":"-"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2016-10-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-19"},{"lineNumber":24,"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":25,"author":{"gitId":"-"},"content":" * among constructors.","lastModifiedDate":"2016-10-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" {","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" persons \u003d new UniquePersonList();","lastModifiedDate":"2016-08-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"UdhayaShan1"},"content":" public Realodex() {}","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"UdhayaShan1"},"content":" * Creates an Realodex using the Persons in the {@code toBeCopied}","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"UdhayaShan1"},"content":" public Realodex(ReadOnlyRealodex toBeCopied) {","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2016-12-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" resetData(toBeCopied);","lastModifiedDate":"2016-12-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":41,"author":{"gitId":"-"},"content":" //// list overwrite operations","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Replaces the contents of the person list with {@code persons}.","lastModifiedDate":"2018-08-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2018-08-07"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void setPersons(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-08-07"},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.persons.setPersons(persons);","lastModifiedDate":"2016-10-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":52,"author":{"gitId":"UdhayaShan1"},"content":" * Resets the existing data of this {@code Realodex} with {@code newData}.","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":54,"author":{"gitId":"UdhayaShan1"},"content":" public void resetData(ReadOnlyRealodex newData) {","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" requireNonNull(newData);","lastModifiedDate":"2017-05-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" setPersons(newData.getPersonList());","lastModifiedDate":"2018-03-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" //// person-level operations","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":63,"author":{"gitId":"UdhayaShan1"},"content":" * Returns true if a person with the same identity as {@code person} exists in realodex.","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return persons.contains(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":71,"author":{"gitId":"UdhayaShan1"},"content":" * Adds a person to realodex.","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"UdhayaShan1"},"content":" * The person must not already exist in realodex.","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void addPerson(Person p) {","lastModifiedDate":"2018-08-07"},{"lineNumber":75,"author":{"gitId":"-"},"content":" persons.add(p);","lastModifiedDate":"2018-03-29"},{"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-12-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2018-01-10"},{"lineNumber":80,"author":{"gitId":"UdhayaShan1"},"content":" * {@code target} must exist in realodex.","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"UdhayaShan1"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in realodex.","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":84,"author":{"gitId":"-"},"content":" requireNonNull(editedPerson);","lastModifiedDate":"2018-01-10"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" persons.setPerson(target, editedPerson);","lastModifiedDate":"2018-03-29"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":90,"author":{"gitId":"UdhayaShan1"},"content":" * Removes {@code key} from this {@code Realodex}.","lastModifiedDate":"2024-03-19"},{"lineNumber":91,"author":{"gitId":"UdhayaShan1"},"content":" * {@code key} must exist in realodex.","lastModifiedDate":"2024-03-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void removePerson(Person key) {","lastModifiedDate":"2018-08-07"},{"lineNumber":94,"author":{"gitId":"-"},"content":" persons.remove(key);","lastModifiedDate":"2018-02-28"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" //// util methods","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":" .add(\"persons\", persons)","lastModifiedDate":"2019-02-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"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-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":108,"author":{"gitId":"-"},"content":" return persons.asUnmodifiableObservableList();","lastModifiedDate":"2018-04-05"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-01"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-01"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"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":"UdhayaShan1"},"content":" if (!(other instanceof Realodex)) {","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" Realodex otherRealodex \u003d (Realodex) other;","lastModifiedDate":"2024-03-19"},{"lineNumber":123,"author":{"gitId":"UdhayaShan1"},"content":" return persons.equals(otherRealodex.persons);","lastModifiedDate":"2024-03-19"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":127,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":128,"author":{"gitId":"-"},"content":" return persons.hashCode();","lastModifiedDate":"2018-03-29"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":130,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"UdhayaShan1":21,"-":109}},{"path":"src/main/java/seedu/realodex/model/UserPrefs.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.model;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.GuiSettings;","lastModifiedDate":"2024-03-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":"UdhayaShan1"},"content":" private Path realodexFilePath \u003d Paths.get(\"data\" , \"realodex.json\");","lastModifiedDate":"2024-03-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":"UdhayaShan1"},"content":" setRealodexFilePath(newUserPrefs.getRealodexFilePath());","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" public Path getRealodexFilePath() {","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"UdhayaShan1"},"content":" return realodexFilePath;","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":54,"author":{"gitId":"UdhayaShan1"},"content":" public void setRealodexFilePath(Path realodexFilePath) {","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"UdhayaShan1"},"content":" requireNonNull(realodexFilePath);","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"UdhayaShan1"},"content":" this.realodexFilePath \u003d realodexFilePath;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" \u0026\u0026 realodexFilePath.equals(otherUserPrefs.realodexFilePath);","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" return Objects.hash(guiSettings, realodexFilePath);","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" sb.append(\"\\nLocal data file location : \" + realodexFilePath);","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":12,"-":76}},{"path":"src/main/java/seedu/realodex/model/person/Address.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.model.person;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":" * Represents a Person\u0027s address in realodex.","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":3,"-":62}},{"path":"src/main/java/seedu/realodex/model/person/Email.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.model.person;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":" * Represents a Person\u0027s email in realodex.","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":3,"-":76}},{"path":"src/main/java/seedu/realodex/model/person/Family.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.model.person;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"UdhayaShan1"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"UdhayaShan1"},"content":"/**","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":" * Represents the family size of a person in realodex.","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":" * Guarantees: family size is present and not null, and adheres to specific constraints.","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"UdhayaShan1"},"content":"public class Family {","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"UdhayaShan1"},"content":" /** Message for constraints on family size. */","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"appleraincoat"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Family size should be at least 1\";","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"UdhayaShan1"},"content":" public static final String VALIDATION_REGEX \u003d \"^[1-9]\\\\d*$\";","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"UdhayaShan1"},"content":" /** The family size. */","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"UdhayaShan1"},"content":" private String familySize;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"UdhayaShan1"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"UdhayaShan1"},"content":" * Constructs a {@code Family} instance with the given family size including him or herself.","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"UdhayaShan1"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"UdhayaShan1"},"content":" * @param familySize The size of the family.","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"UdhayaShan1"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"UdhayaShan1"},"content":" public Family(String familySize) {","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"UdhayaShan1"},"content":" requireNonNull(familySize);","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"UdhayaShan1"},"content":" checkArgument(isValidFamily(familySize), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"UdhayaShan1"},"content":" this.familySize \u003d familySize;","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"UdhayaShan1"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"UdhayaShan1"},"content":" * Checks if the given family size is a valid value.","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"UdhayaShan1"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"UdhayaShan1"},"content":" * @param familySize The family size to check.","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"UdhayaShan1"},"content":" * @return True if the family size is greater than or equal to zero, false otherwise.","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"UdhayaShan1"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"UdhayaShan1"},"content":" public static boolean isValidFamily(String familySize) {","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"UdhayaShan1"},"content":" return familySize.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"UdhayaShan1"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"UdhayaShan1"},"content":" * Returns the string representation of the family size.","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"UdhayaShan1"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"UdhayaShan1"},"content":" * @return The string representation of the family size.","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"UdhayaShan1"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"UdhayaShan1"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"UdhayaShan1"},"content":" public String toString() {","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"UdhayaShan1"},"content":" return familySize.toString();","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"UdhayaShan1"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"UdhayaShan1"},"content":" * Returns a string representation of the family size with additional descriptive text.","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"UdhayaShan1"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"UdhayaShan1"},"content":" * @return A string representation with descriptive text.","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"UdhayaShan1"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"UdhayaShan1"},"content":" public String toStringWithRepresentation() {","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"UdhayaShan1"},"content":" return \"Family size is \" + familySize;","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"UdhayaShan1"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"UdhayaShan1"},"content":" * Checks if this {@code Family} instance is equal to another object.","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"UdhayaShan1"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"UdhayaShan1"},"content":" * @param other The object to compare with.","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"UdhayaShan1"},"content":" * @return True if the objects are equal, false otherwise.","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"UdhayaShan1"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":66,"author":{"gitId":"UdhayaShan1"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"UdhayaShan1"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-11"},{"lineNumber":68,"author":{"gitId":"UdhayaShan1"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"UdhayaShan1"},"content":" return true; // short circuit if same object","lastModifiedDate":"2024-03-11"},{"lineNumber":70,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":71,"author":{"gitId":"UdhayaShan1"},"content":" if (!(other instanceof Family)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":72,"author":{"gitId":"UdhayaShan1"},"content":" return false; // instanceof handles nulls","lastModifiedDate":"2024-03-11"},{"lineNumber":73,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"UdhayaShan1"},"content":" Family otherFamily \u003d (Family) other;","lastModifiedDate":"2024-03-11"},{"lineNumber":75,"author":{"gitId":"UdhayaShan1"},"content":" return familySize.equals(otherFamily.familySize); // state check","lastModifiedDate":"2024-03-11"},{"lineNumber":76,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":77,"author":{"gitId":"UdhayaShan1"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"UdhayaShan1":76,"appleraincoat":1}},{"path":"src/main/java/seedu/realodex/model/person/Income.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.model.person;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"UdhayaShan1"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"UdhayaShan1"},"content":"/**","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":" * Represents the income of a person in realodex.","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":" * Guarantees: income is present, not null, and adheres to specific constraints.","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"UdhayaShan1"},"content":"public class Income {","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"UdhayaShan1"},"content":" /** Message for constraints on income. */","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"UdhayaShan1"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Income should be an integer and should be at least 0\";","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"UdhayaShan1"},"content":" public static final String VALIDATION_REGEX \u003d \"^[0-9]+$\";","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"UdhayaShan1"},"content":" /** The income value. */","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"UdhayaShan1"},"content":" private final String incomeValue;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"UdhayaShan1"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"UdhayaShan1"},"content":" * Constructs an {@code Income} instance with the given income value.","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"UdhayaShan1"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"UdhayaShan1"},"content":" * @param incomeValue The income value.","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"UdhayaShan1"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"UdhayaShan1"},"content":" public Income(String incomeValue) {","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"UdhayaShan1"},"content":" requireNonNull(incomeValue);","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"wapisai"},"content":" checkArgument(isValidIncome(incomeValue), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"UdhayaShan1"},"content":" this.incomeValue \u003d incomeValue;","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"UdhayaShan1"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"UdhayaShan1"},"content":" * Checks if the given income value is a valid value.","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"UdhayaShan1"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"UdhayaShan1"},"content":" * @param incomeValue The income value to check.","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"UdhayaShan1"},"content":" * @return True if the income value is greater than or equal to zero, false otherwise.","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"UdhayaShan1"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"UdhayaShan1"},"content":" public static boolean isValidIncome(String incomeValue) {","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"UdhayaShan1"},"content":" return incomeValue.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"UdhayaShan1"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"UdhayaShan1"},"content":" * Returns the string representation of the income value.","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"UdhayaShan1"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"UdhayaShan1"},"content":" * @return The string representation of the income value.","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"UdhayaShan1"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"UdhayaShan1"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"UdhayaShan1"},"content":" public String toString() {","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"UdhayaShan1"},"content":" return incomeValue.toString();","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"UdhayaShan1"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"UdhayaShan1"},"content":" * Returns a string representation of the income value with additional descriptive text.","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"UdhayaShan1"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"UdhayaShan1"},"content":" * @return A string representation with descriptive text.","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"UdhayaShan1"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"UdhayaShan1"},"content":" public String toStringWithRepresentation() {","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"UdhayaShan1"},"content":" return \"Income is $\" + incomeValue;","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"UdhayaShan1"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"UdhayaShan1"},"content":" * Checks if this {@code Income} instance is equal to another object.","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"UdhayaShan1"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"UdhayaShan1"},"content":" * @param other The object to compare with.","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"UdhayaShan1"},"content":" * @return True if the objects are equal, false otherwise.","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"UdhayaShan1"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"UdhayaShan1"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":66,"author":{"gitId":"UdhayaShan1"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"UdhayaShan1"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-11"},{"lineNumber":68,"author":{"gitId":"UdhayaShan1"},"content":" return true; // short circuit if same object","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":70,"author":{"gitId":"UdhayaShan1"},"content":" if (!(other instanceof Income)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":71,"author":{"gitId":"UdhayaShan1"},"content":" return false; // instanceof handles nulls","lastModifiedDate":"2024-03-11"},{"lineNumber":72,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":73,"author":{"gitId":"UdhayaShan1"},"content":" Income otherIncome \u003d (Income) other;","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"UdhayaShan1"},"content":" return incomeValue.equals(otherIncome.incomeValue); // state check","lastModifiedDate":"2024-03-11"},{"lineNumber":75,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":76,"author":{"gitId":"UdhayaShan1"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"UdhayaShan1":75,"wapisai":1}},{"path":"src/main/java/seedu/realodex/model/person/Name.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.model.person;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":" * Represents a Person\u0027s name in realodex.","lastModifiedDate":"2024-03-19"},{"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":"-"},"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":"-"},"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":{"UdhayaShan1":3,"-":64}},{"path":"src/main/java/seedu/realodex/model/person/NameContainsKeyphrasePredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.model.person;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"jyztintan"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"jyztintan"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"jyztintan"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"jyztintan"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"jyztintan"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"jyztintan"},"content":" * Tests that a {@code Person}\u0027s {@code Name} contains the keyphrase given.","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"jyztintan"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"jyztintan"},"content":"public class NameContainsKeyphrasePredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"jyztintan"},"content":" private final String keyphrase;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"jyztintan"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"jyztintan"},"content":" public NameContainsKeyphrasePredicate(String keyphrase) {","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"jyztintan"},"content":" this.keyphrase \u003d keyphrase;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"jyztintan"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"jyztintan"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"jyztintan"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"jyztintan"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"jyztintan"},"content":" String nameInLowerCase \u003d person.getName().fullName.toLowerCase();","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"jyztintan"},"content":" String keyphraseInLowerCase \u003d keyphrase.toLowerCase();","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"jyztintan"},"content":" return nameInLowerCase.contains(keyphraseInLowerCase);","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"jyztintan"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"jyztintan"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"jyztintan"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"jyztintan"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"jyztintan"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"jyztintan"},"content":" return true;","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"jyztintan"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"jyztintan"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"jyztintan"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"jyztintan"},"content":" if (!(other instanceof NameContainsKeyphrasePredicate)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"jyztintan"},"content":" return false;","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"jyztintan"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"jyztintan"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"jyztintan"},"content":" NameContainsKeyphrasePredicate otherNameContainsKeyphrasePredicate \u003d (NameContainsKeyphrasePredicate) other;","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"jyztintan"},"content":" return keyphrase.equals(otherNameContainsKeyphrasePredicate.keyphrase);","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"jyztintan"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"jyztintan"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"jyztintan"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"jyztintan"},"content":" public String toString() {","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"jyztintan"},"content":" return new ToStringBuilder(this).add(\"keyphrase\", keyphrase).toString();","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"jyztintan"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"jyztintan"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"jyztintan":41,"UdhayaShan1":2}},{"path":"src/main/java/seedu/realodex/model/person/Person.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.model.person;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-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":"UdhayaShan1"},"content":"import seedu.realodex.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.remark.Remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.tag.Tag;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"appleraincoat"},"content":" * Represents a Person in the Realodex.","lastModifiedDate":"2024-03-13"},{"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":"UdhayaShan1"},"content":" private final Income income;","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"UdhayaShan1"},"content":" private final Family family;","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":28,"author":{"gitId":"appleraincoat"},"content":" private final Remark remark;","lastModifiedDate":"2024-03-16"},{"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":"appleraincoat"},"content":" public Person(Name name, Phone phone, Income income, Email email, Address address,","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"appleraincoat"},"content":" Family family, Set\u003cTag\u003e tags, Remark remark) {","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"appleraincoat"},"content":" requireAllNonNull(name, phone, income, email, address, family, tags, remark);","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":38,"author":{"gitId":"UdhayaShan1"},"content":" this.income \u003d income;","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20"},{"lineNumber":41,"author":{"gitId":"UdhayaShan1"},"content":" this.family \u003d family;","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":43,"author":{"gitId":"appleraincoat"},"content":" this.remark \u003d remark;","lastModifiedDate":"2024-03-16"},{"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":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"UdhayaShan1"},"content":" public Income getIncome() {","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"UdhayaShan1"},"content":" return income;","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-11"},{"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":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":66,"author":{"gitId":"UdhayaShan1"},"content":" public Family getFamily() {","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"UdhayaShan1"},"content":" return family;","lastModifiedDate":"2024-03-11"},{"lineNumber":68,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"appleraincoat"},"content":" public Remark getRemark() {","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"appleraincoat"},"content":" return remark;","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":73,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07"},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":81,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return true;","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":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19"},{"lineNumber":91,"author":{"gitId":"-"},"content":" \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2020-12-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":101,"author":{"gitId":"-"},"content":" return true;","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":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10"},{"lineNumber":106,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":109,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10"},{"lineNumber":110,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":113,"author":{"gitId":"UdhayaShan1"},"content":" \u0026\u0026 income.equals(otherPerson.income)","lastModifiedDate":"2024-03-11"},{"lineNumber":114,"author":{"gitId":"UdhayaShan1"},"content":" \u0026\u0026 family.equals(otherPerson.family)","lastModifiedDate":"2024-03-11"},{"lineNumber":115,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2024-03-11"},{"lineNumber":116,"author":{"gitId":"appleraincoat"},"content":" \u0026\u0026 tags.equals(otherPerson.tags)","lastModifiedDate":"2024-03-16"},{"lineNumber":117,"author":{"gitId":"appleraincoat"},"content":" \u0026\u0026 remark.equals(otherPerson.remark);","lastModifiedDate":"2024-03-16"},{"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-08-24"},{"lineNumber":121,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":122,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":123,"author":{"gitId":"appleraincoat"},"content":" return Objects.hash(name, phone, income, email, address, family, tags, remark);","lastModifiedDate":"2024-03-16"},{"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-08-24"},{"lineNumber":127,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":128,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":131,"author":{"gitId":"UdhayaShan1"},"content":" .add(\"income\", income)","lastModifiedDate":"2024-03-11"},{"lineNumber":132,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":134,"author":{"gitId":"UdhayaShan1"},"content":" .add(\"family\", family)","lastModifiedDate":"2024-03-11"},{"lineNumber":135,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":136,"author":{"gitId":"appleraincoat"},"content":" .add(\"remark\", remark)","lastModifiedDate":"2024-03-16"},{"lineNumber":137,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":139,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"},{"lineNumber":140,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"UdhayaShan1":22,"-":105,"appleraincoat":13}},{"path":"src/main/java/seedu/realodex/model/person/Phone.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.model.person;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":" * Represents a Person\u0027s phone number in realodex.","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":3,"-":58}},{"path":"src/main/java/seedu/realodex/model/person/UniquePersonList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.model.person;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.exceptions.PersonNotFoundException;","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Adds a person to the list.","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * The person must not already exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void add(Person toAdd) {","lastModifiedDate":"2018-08-07"},{"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":"-"},"content":" * Replaces the person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2017-06-07"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":54,"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":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-07"},{"lineNumber":57,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2018-08-08"},{"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":"-"},"content":" if (!target.isSamePerson(editedPerson) \u0026\u0026 contains(editedPerson)) {","lastModifiedDate":"2018-04-19"},{"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":"-"},"content":" internalList.set(index, editedPerson);","lastModifiedDate":"2018-01-10"},{"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":"-"},"content":" * Removes the equivalent person from the list.","lastModifiedDate":"2016-08-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * The person must exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void remove(Person toRemove) {","lastModifiedDate":"2018-08-07"},{"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":"-"},"content":" public void setPersons(UniquePersonList replacement) {","lastModifiedDate":"2016-10-19"},{"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":"-"},"content":" * Replaces the contents of this list with {@code persons}.","lastModifiedDate":"2018-08-07"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2018-08-07"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void setPersons(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-08-07"},{"lineNumber":92,"author":{"gitId":"-"},"content":" requireAllNonNull(persons);","lastModifiedDate":"2018-01-10"},{"lineNumber":93,"author":{"gitId":"-"},"content":" if (!personsAreUnique(persons)) {","lastModifiedDate":"2018-04-19"},{"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":"-"},"content":" internalList.setAll(persons);","lastModifiedDate":"2018-08-14"},{"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":"-"},"content":" public ObservableList\u003cPerson\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2018-04-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":"-"},"content":" public Iterator\u003cPerson\u003e iterator() {","lastModifiedDate":"2016-08-24"},{"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":"-"},"content":" if (!(other instanceof UniquePersonList)) {","lastModifiedDate":"2023-07-13"},{"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":"-"},"content":" UniquePersonList otherUniquePersonList \u003d (UniquePersonList) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" return internalList.equals(otherUniquePersonList.internalList);","lastModifiedDate":"2023-07-13"},{"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":"-"},"content":" * Returns true if {@code persons} contains only unique persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":140,"author":{"gitId":"-"},"content":" private boolean personsAreUnique(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-04-19"},{"lineNumber":141,"author":{"gitId":"-"},"content":" for (int i \u003d 0; i \u003c persons.size() - 1; i++) {","lastModifiedDate":"2018-04-19"},{"lineNumber":142,"author":{"gitId":"-"},"content":" for (int j \u003d i + 1; j \u003c persons.size(); j++) {","lastModifiedDate":"2018-04-19"},{"lineNumber":143,"author":{"gitId":"-"},"content":" if (persons.get(i).isSamePerson(persons.get(j))) {","lastModifiedDate":"2018-04-19"},{"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":{"UdhayaShan1":4,"-":146}},{"path":"src/main/java/seedu/realodex/model/person/exceptions/DuplicatePersonException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.model.person.exceptions;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Signals that the operation will result in duplicate Persons (Persons are considered duplicates if they have the same","lastModifiedDate":"2018-04-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":" * identity).","lastModifiedDate":"2018-04-19"},{"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":"-"},"content":" super(\"Operation would result in duplicate persons\");","lastModifiedDate":"2017-06-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09"}],"authorContributionMap":{"UdhayaShan1":1,"-":10}},{"path":"src/main/java/seedu/realodex/model/person/exceptions/PersonNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.model.person.exceptions;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Signals that the operation is unable to find the specified person.","lastModifiedDate":"2017-06-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class PersonNotFoundException extends RuntimeException {}","lastModifiedDate":"2018-08-07"}],"authorContributionMap":{"UdhayaShan1":1,"-":5}},{"path":"src/main/java/seedu/realodex/model/remark/Remark.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.model.remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"UdhayaShan1"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"appleraincoat"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"UdhayaShan1"},"content":" * Represents a remark in realodex.","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"appleraincoat"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"appleraincoat"},"content":"public class Remark {","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"appleraincoat"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Remarks should be non-empty\";","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"appleraincoat"},"content":" public final String remarkName;","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"appleraincoat"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"appleraincoat"},"content":" * Constructs a {@code Remark}.","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"appleraincoat"},"content":" *","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"appleraincoat"},"content":" * @param remarkName A valid remark.","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"appleraincoat"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"appleraincoat"},"content":" public Remark(String remarkName) {","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"UdhayaShan1"},"content":" requireNonNull(remarkName);","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"appleraincoat"},"content":" this.remarkName \u003d remarkName;","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"UdhayaShan1"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"UdhayaShan1"},"content":" * Validates if the given string is a valid remark. In the current implementation (as of v1.2),","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"UdhayaShan1"},"content":" * this method does not perform any actual validation checks and will always return true.","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"UdhayaShan1"},"content":" * This is a placeholder implementation and may change in future versions.","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"UdhayaShan1"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"UdhayaShan1"},"content":" * @param test the string to be validated as a remark. Cannot be null.","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"UdhayaShan1"},"content":" * @return always true in the current version.","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"UdhayaShan1"},"content":" * @throws NullPointerException if the test parameter is null.","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"UdhayaShan1"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"UdhayaShan1"},"content":" public static boolean isValidRemark(String test) {","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"UdhayaShan1"},"content":" requireNonNull(test);","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"UdhayaShan1"},"content":" return true;","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"appleraincoat"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"appleraincoat"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"appleraincoat"},"content":" return true;","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"appleraincoat"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"appleraincoat"},"content":" if (!(other instanceof Remark)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"appleraincoat"},"content":" return false;","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"appleraincoat"},"content":" Remark otherRemark \u003d (Remark) other;","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"appleraincoat"},"content":" return remarkName.equals(otherRemark.remarkName);","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"appleraincoat"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"appleraincoat"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"appleraincoat"},"content":" return remarkName.hashCode();","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"appleraincoat"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"appleraincoat"},"content":" * Format state as text for viewing.","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"appleraincoat"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"appleraincoat"},"content":" public String toString() {","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"appleraincoat"},"content":" return remarkName;","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"appleraincoat"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"appleraincoat"},"content":" * Format state as text for representation.","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"appleraincoat"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"appleraincoat"},"content":" public String toStringWithRepresentation() {","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"appleraincoat"},"content":" if (remarkName.isBlank()) {","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"appleraincoat"},"content":" return \"No remark.\";","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"appleraincoat"},"content":" } else {","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"appleraincoat"},"content":" return \"Remark: \" + remarkName;","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"appleraincoat"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"UdhayaShan1":19,"appleraincoat":57}},{"path":"src/main/java/seedu/realodex/model/tag/Tag.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.model.tag;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":" * Represents a Tag in the realodex.","lastModifiedDate":"2024-03-19"},{"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":"4llysa"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Tags names should be either \u0027buyer\u0027 or \u0027seller\u0027\";","lastModifiedDate":"2024-03-16"},{"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":"4llysa"},"content":" public final Role tagName;","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"4llysa"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"4llysa"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"4llysa"},"content":" * Enumeration of Roles that a Person can take on","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"4llysa"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"4llysa"},"content":" public enum Role {","lastModifiedDate":"2024-03-15"},{"lineNumber":21,"author":{"gitId":"4llysa"},"content":" BUYER(\"Buyer\"),","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"4llysa"},"content":" SELLER(\"Seller\");","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"4llysa"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"4llysa"},"content":" private String roleName;","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"4llysa"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"4llysa"},"content":" // Constructor for the enum to set the custom role name","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"4llysa"},"content":" Role(String roleName) {","lastModifiedDate":"2024-03-15"},{"lineNumber":28,"author":{"gitId":"4llysa"},"content":" this.roleName \u003d roleName;","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"4llysa"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"4llysa"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":31,"author":{"gitId":"4llysa"},"content":" // Overriding the toString method to return the custom role name","lastModifiedDate":"2024-03-15"},{"lineNumber":32,"author":{"gitId":"4llysa"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"4llysa"},"content":" public String toString() {","lastModifiedDate":"2024-03-15"},{"lineNumber":34,"author":{"gitId":"4llysa"},"content":" return this.roleName;","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"4llysa"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":36,"author":{"gitId":"4llysa"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Constructs a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":40,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * @param tagName A valid tag name.","lastModifiedDate":"2017-05-30"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public Tag(String tagName) {","lastModifiedDate":"2017-05-30"},{"lineNumber":44,"author":{"gitId":"-"},"content":" requireNonNull(tagName);","lastModifiedDate":"2017-05-30"},{"lineNumber":45,"author":{"gitId":"-"},"content":" checkArgument(isValidTagName(tagName), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":46,"author":{"gitId":"4llysa"},"content":" this.tagName \u003d Role.valueOf(tagName.toUpperCase());","lastModifiedDate":"2024-03-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid tag name.","lastModifiedDate":"2016-09-22"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static boolean isValidTagName(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"4llysa"},"content":" try {","lastModifiedDate":"2024-03-15"},{"lineNumber":54,"author":{"gitId":"4llysa"},"content":" Role.valueOf(test.toUpperCase());","lastModifiedDate":"2024-03-15"},{"lineNumber":55,"author":{"gitId":"4llysa"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-03-15"},{"lineNumber":56,"author":{"gitId":"4llysa"},"content":" return false;","lastModifiedDate":"2024-03-15"},{"lineNumber":57,"author":{"gitId":"4llysa"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" if (!(other instanceof Tag)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return false;","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":" Tag otherTag \u003d (Tag) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":73,"author":{"gitId":"4llysa"},"content":" return tagName.roleName.equals(otherTag.tagName.roleName);","lastModifiedDate":"2024-03-15"},{"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":"2016-08-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return tagName.hashCode();","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":"-"},"content":" * Format state as text for viewing.","lastModifiedDate":"2016-08-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":85,"author":{"gitId":"4llysa"},"content":" return \u0027[\u0027 + tagName.toString() + \u0027]\u0027;","lastModifiedDate":"2024-03-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"4llysa":31,"UdhayaShan1":3,"-":54}},{"path":"src/main/java/seedu/realodex/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.model.util;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.model.ReadOnlyRealodex;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.Realodex;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Address;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Email;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Family;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Income;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.remark.Remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.tag.Tag;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":20,"author":{"gitId":"UdhayaShan1"},"content":" * Contains utility methods for populating {@code Realodex} with sample data.","lastModifiedDate":"2024-03-19"},{"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":"-"},"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":"UdhayaShan1"},"content":" new Person(new Name(\"Alex Yeoh\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"UdhayaShan1"},"content":" new Phone(\"87438807\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"UdhayaShan1"},"content":" new Income(\"1000\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"UdhayaShan1"},"content":" new Email(\"alexyeoh@example\" + \".com\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"UdhayaShan1"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"UdhayaShan1"},"content":" new Family(\"20\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"appleraincoat"},"content":" getTagSet(\"Buyer\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"appleraincoat"},"content":" new Remark(\"Has 3 cats.\")),","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"UdhayaShan1"},"content":" new Person(new Name(\"Bernice Yu\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"UdhayaShan1"},"content":" new Phone(\"99272758\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"UdhayaShan1"},"content":" new Income(\"1000\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"UdhayaShan1"},"content":" new Email(\"berniceyu\" + \"@example.com\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"UdhayaShan1"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"UdhayaShan1"},"content":" new Family(\"20\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"appleraincoat"},"content":" getTagSet(\"buyer\", \"seller\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"appleraincoat"},"content":" new Remark(\"Eats alot\")),","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"UdhayaShan1"},"content":" new Person(new Name(\"Charlotte Oliveiro\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"UdhayaShan1"},"content":" new Phone(\"93210283\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"UdhayaShan1"},"content":" new Income(\"1000\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"UdhayaShan1"},"content":" new Email(\"charlotte@example.com\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"UdhayaShan1"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"UdhayaShan1"},"content":" new Family(\"20\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"appleraincoat"},"content":" getTagSet(\"buyer\", \"seller\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"appleraincoat"},"content":" new Remark(\"Weighs 500kg\")),","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"UdhayaShan1"},"content":" new Person(new Name(\"David Li\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"UdhayaShan1"},"content":" new Phone(\"91031282\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"UdhayaShan1"},"content":" new Income(\"1000\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"UdhayaShan1"},"content":" new Email(\"lidavid@example\" + \".com\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"UdhayaShan1"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"UdhayaShan1"},"content":" new Family(\"20\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"appleraincoat"},"content":" getTagSet(\"seller\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"appleraincoat"},"content":" new Remark(\"Broke his back deadlifting\")),","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"UdhayaShan1"},"content":" new Person(new Name(\"Irfan Ibrahim\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"UdhayaShan1"},"content":" new Phone(\"92492021\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"UdhayaShan1"},"content":" new Income(\"1000\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"UdhayaShan1"},"content":" new Email(\"irfan@example\" + \".com\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"UdhayaShan1"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"UdhayaShan1"},"content":" new Family(\"20\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"appleraincoat"},"content":" getTagSet(\"BUYER\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"appleraincoat"},"content":" new Remark(\"Likes to eat nasi lemak after finishing v1.2\")),","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"UdhayaShan1"},"content":" new Person(new Name(\"Roy Balakrishnan\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":66,"author":{"gitId":"UdhayaShan1"},"content":" new Phone(\"92624417\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"UdhayaShan1"},"content":" new Income(\"1000\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":68,"author":{"gitId":"UdhayaShan1"},"content":" new Email(\"royb\" + \"@example.com\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"UdhayaShan1"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":70,"author":{"gitId":"UdhayaShan1"},"content":" new Family(\"20\"),","lastModifiedDate":"2024-03-11"},{"lineNumber":71,"author":{"gitId":"appleraincoat"},"content":" getTagSet(\"buyer\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"appleraincoat"},"content":" new Remark(\"Is a mommy\u0027s boy.\"))","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":76,"author":{"gitId":"UdhayaShan1"},"content":" public static ReadOnlyRealodex getSampleRealodex() {","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"UdhayaShan1"},"content":" Realodex sampleAb \u003d new Realodex();","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20"},{"lineNumber":79,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14"},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30"},{"lineNumber":88,"author":{"gitId":"4llysa"},"content":" Set\u003cTag\u003e s \u003d Arrays.stream(strings)","lastModifiedDate":"2024-03-15"},{"lineNumber":89,"author":{"gitId":"4llysa"},"content":" .filter(Tag::isValidTagName)","lastModifiedDate":"2024-03-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21"},{"lineNumber":91,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21"},{"lineNumber":92,"author":{"gitId":"4llysa"},"content":" return s;","lastModifiedDate":"2024-03-15"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"4llysa":3,"UdhayaShan1":51,"-":28,"appleraincoat":12}},{"path":"src/main/java/seedu/realodex/storage/JsonAdaptedPerson.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.storage;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import java.util.Objects;","lastModifiedDate":"2024-03-17"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Address;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Email;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Family;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Income;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.remark.Remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.tag.Tag;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" private final String income;","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"UdhayaShan1"},"content":" private final String family;","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09"},{"lineNumber":38,"author":{"gitId":"appleraincoat"},"content":" private final String remark;","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"UdhayaShan1"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name,","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"UdhayaShan1"},"content":" @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"UdhayaShan1"},"content":" @JsonProperty(\"income\") String income,","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"UdhayaShan1"},"content":" @JsonProperty(\"email\") String email,","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"UdhayaShan1"},"content":" @JsonProperty(\"address\") String address,","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"UdhayaShan1"},"content":" @JsonProperty(\"family\") String family,","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"appleraincoat"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags,","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"appleraincoat"},"content":" @JsonProperty(\"remark\") String remark) {","lastModifiedDate":"2024-03-16"},{"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":"UdhayaShan1"},"content":" this.income \u003d income;","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"UdhayaShan1"},"content":" this.family \u003d family;","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09"},{"lineNumber":59,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"UdhayaShan1"},"content":" this.remark \u003d Objects.requireNonNullElse(remark, \"\");","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"UdhayaShan1"},"content":" income \u003d source.getIncome().toString();","lastModifiedDate":"2024-03-11"},{"lineNumber":71,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"UdhayaShan1"},"content":" family \u003d source.getFamily().toString();","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09"},{"lineNumber":75,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"appleraincoat"},"content":" remark \u003d source.getRemark().toString();","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","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":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09"},{"lineNumber":88,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"UdhayaShan1"},"content":" if (income \u003d\u003d null) {","lastModifiedDate":"2024-03-11"},{"lineNumber":108,"author":{"gitId":"UdhayaShan1"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Income.class.getSimpleName()));","lastModifiedDate":"2024-03-11"},{"lineNumber":109,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":110,"author":{"gitId":"UdhayaShan1"},"content":" if (!Income.isValidIncome(income)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":111,"author":{"gitId":"UdhayaShan1"},"content":" throw new IllegalValueException(Income.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-11"},{"lineNumber":112,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":113,"author":{"gitId":"UdhayaShan1"},"content":" final Income modelIncome \u003d new Income(income);","lastModifiedDate":"2024-03-11"},{"lineNumber":114,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-11"},{"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":"UdhayaShan1"},"content":" if (family \u003d\u003d null) {","lastModifiedDate":"2024-03-11"},{"lineNumber":132,"author":{"gitId":"UdhayaShan1"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Family.class.getSimpleName()));","lastModifiedDate":"2024-03-11"},{"lineNumber":133,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":134,"author":{"gitId":"UdhayaShan1"},"content":" if (!Family.isValidFamily(family)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":135,"author":{"gitId":"UdhayaShan1"},"content":" throw new IllegalValueException(Family.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":136,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":137,"author":{"gitId":"UdhayaShan1"},"content":" final Family modelFamily \u003d new Family(family);","lastModifiedDate":"2024-03-11"},{"lineNumber":138,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":139,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":141,"author":{"gitId":"appleraincoat"},"content":" final Remark modelRemark \u003d new Remark(remark);","lastModifiedDate":"2024-03-16"},{"lineNumber":142,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":143,"author":{"gitId":"appleraincoat"},"content":" return new Person(modelName, modelPhone, modelIncome, modelEmail, modelAddress, modelFamily,","lastModifiedDate":"2024-03-16"},{"lineNumber":144,"author":{"gitId":"appleraincoat"},"content":" modelTags, modelRemark);","lastModifiedDate":"2024-03-16"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":146,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"UdhayaShan1":41,"-":97,"appleraincoat":8}},{"path":"src/main/java/seedu/realodex/storage/JsonAdaptedTag.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.storage;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.tag.Tag;","lastModifiedDate":"2024-03-19"},{"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":"4llysa"},"content":" tagName \u003d source.tagName.toString();","lastModifiedDate":"2024-03-15"},{"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":{"4llysa":1,"UdhayaShan1":3,"-":44}},{"path":"src/main/java/seedu/realodex/storage/JsonRealodexStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.storage;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.io.IOException;","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.util.Optional;","lastModifiedDate":"2018-08-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2018-08-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":10,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.LogsCenter;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.util.FileUtil;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.util.JsonUtil;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.ReadOnlyRealodex;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"UdhayaShan1"},"content":" * A class to access Realodex data stored as a json file on the hard disk.","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"UdhayaShan1"},"content":"public class JsonRealodexStorage implements RealodexStorage {","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"UdhayaShan1"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(JsonRealodexStorage.class);","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private Path filePath;","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"UdhayaShan1"},"content":" public JsonRealodexStorage(Path filePath) {","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"UdhayaShan1"},"content":" public Path getRealodexFilePath() {","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" return filePath;","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":" @Override","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"UdhayaShan1"},"content":" public Optional\u003cReadOnlyRealodex\u003e readRealodex() throws DataLoadingException {","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"UdhayaShan1"},"content":" return readRealodex(filePath);","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" * Similar to {@link #readRealodex()}.","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2023-06-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"UdhayaShan1"},"content":" public Optional\u003cReadOnlyRealodex\u003e readRealodex(Path filePath) throws DataLoadingException {","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"-"},"content":" requireNonNull(filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"UdhayaShan1"},"content":" Optional\u003cJsonSerializableRealodex\u003e jsonRealodex \u003d JsonUtil.readJsonFile(","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"UdhayaShan1"},"content":" filePath, JsonSerializableRealodex.class);","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"UdhayaShan1"},"content":" if (!jsonRealodex.isPresent()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"UdhayaShan1"},"content":" return Optional.of(jsonRealodex.get().toModelType());","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" logger.info(\"Illegal values found in \" + filePath + \": \" + ive.getMessage());","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" throw new DataLoadingException(ive);","lastModifiedDate":"2023-06-14"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"UdhayaShan1"},"content":" public void saveRealodex(ReadOnlyRealodex realodex) throws IOException {","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"UdhayaShan1"},"content":" saveRealodex(realodex, filePath);","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" * Similar to {@link #saveRealodex(ReadOnlyRealodex)}.","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"UdhayaShan1"},"content":" public void saveRealodex(ReadOnlyRealodex realodex, Path filePath) throws IOException {","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"UdhayaShan1"},"content":" requireNonNull(realodex);","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" requireNonNull(filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" FileUtil.createIfMissing(filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"UdhayaShan1"},"content":" JsonUtil.saveJsonFile(new JsonSerializableRealodex(realodex), filePath);","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"UdhayaShan1":26,"-":53}},{"path":"src/main/java/seedu/realodex/storage/JsonSerializableRealodex.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.storage;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.ReadOnlyRealodex;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.Realodex;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"UdhayaShan1"},"content":" * An Immutable Realodex that is serializable to JSON format.","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"UdhayaShan1"},"content":"@JsonRootName(value \u003d \"realodex\")","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"UdhayaShan1"},"content":"class JsonSerializableRealodex {","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"Persons list contains duplicate person(s).\";","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedPerson\u003e persons \u003d new ArrayList\u003c\u003e();","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":"UdhayaShan1"},"content":" * Constructs a {@code JsonSerializableRealodex} with the given persons.","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"UdhayaShan1"},"content":" public JsonSerializableRealodex(@JsonProperty(\"persons\") List\u003cJsonAdaptedPerson\u003e persons) {","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" * Converts a given {@code ReadOnlyRealodex} into this class for Jackson use.","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"UdhayaShan1"},"content":" * @param source future changes to this will not affect the created {@code JsonSerializableRealodex}.","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"UdhayaShan1"},"content":" public JsonSerializableRealodex(ReadOnlyRealodex source) {","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" persons.addAll(source.getPersonList().stream().map(JsonAdaptedPerson::new).collect(Collectors.toList()));","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":"UdhayaShan1"},"content":" * Converts this realodex into the model\u0027s {@code Realodex} object.","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" public Realodex toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"UdhayaShan1"},"content":" Realodex realodex \u003d new Realodex();","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" for (JsonAdaptedPerson jsonAdaptedPerson : persons) {","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" Person person \u003d jsonAdaptedPerson.toModelType();","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"UdhayaShan1"},"content":" if (realodex.hasPerson(person)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"UdhayaShan1"},"content":" realodex.addPerson(person);","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"UdhayaShan1"},"content":" return realodex;","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":19,"-":41}},{"path":"src/main/java/seedu/realodex/storage/JsonUserPrefsStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.storage;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.util.JsonUtil;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.UserPrefs;","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":5,"-":42}},{"path":"src/main/java/seedu/realodex/storage/RealodexStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.storage;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.ReadOnlyRealodex;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.Realodex;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-24"},{"lineNumber":12,"author":{"gitId":"UdhayaShan1"},"content":" * Represents a storage for {@link Realodex}.","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":14,"author":{"gitId":"UdhayaShan1"},"content":"public interface RealodexStorage {","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Returns the file path of the data file.","lastModifiedDate":"2016-09-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":19,"author":{"gitId":"UdhayaShan1"},"content":" Path getRealodexFilePath();","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-24"},{"lineNumber":22,"author":{"gitId":"UdhayaShan1"},"content":" * Returns Realodex data as a {@link ReadOnlyRealodex}.","lastModifiedDate":"2024-03-19"},{"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 loading the data from storage failed.","lastModifiedDate":"2023-06-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":27,"author":{"gitId":"UdhayaShan1"},"content":" Optional\u003cReadOnlyRealodex\u003e readRealodex() throws DataLoadingException;","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-01"},{"lineNumber":30,"author":{"gitId":"UdhayaShan1"},"content":" * @see #getRealodexFilePath()","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-01"},{"lineNumber":32,"author":{"gitId":"UdhayaShan1"},"content":" Optional\u003cReadOnlyRealodex\u003e readRealodex(Path filePath) throws DataLoadingException;","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-24"},{"lineNumber":35,"author":{"gitId":"UdhayaShan1"},"content":" * Saves the given {@link ReadOnlyRealodex} to the storage.","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"UdhayaShan1"},"content":" * @param realodex cannot be null.","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @throws IOException if there was any problem writing to the file.","lastModifiedDate":"2016-09-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-24"},{"lineNumber":39,"author":{"gitId":"UdhayaShan1"},"content":" void saveRealodex(ReadOnlyRealodex realodex) throws IOException;","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-01"},{"lineNumber":42,"author":{"gitId":"UdhayaShan1"},"content":" * @see #saveRealodex(ReadOnlyRealodex)","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-01"},{"lineNumber":44,"author":{"gitId":"UdhayaShan1"},"content":" void saveRealodex(ReadOnlyRealodex realodex, Path filePath) throws IOException;","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-24"}],"authorContributionMap":{"UdhayaShan1":16,"-":30}},{"path":"src/main/java/seedu/realodex/storage/Storage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.storage;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.ReadOnlyRealodex;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.UserPrefs;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"public interface Storage extends RealodexStorage, UserPrefsStorage {","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" Path getRealodexFilePath();","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":27,"author":{"gitId":"UdhayaShan1"},"content":" Optional\u003cReadOnlyRealodex\u003e readRealodex() throws DataLoadingException;","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":30,"author":{"gitId":"UdhayaShan1"},"content":" void saveRealodex(ReadOnlyRealodex realodex) throws IOException;","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"UdhayaShan1":9,"-":23}},{"path":"src/main/java/seedu/realodex/storage/StorageManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.storage;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.LogsCenter;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.ReadOnlyRealodex;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.UserPrefs;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"UdhayaShan1"},"content":" * Manages storage of Realodex data in local storage.","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" private RealodexStorage realodexStorage;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private UserPrefsStorage userPrefsStorage;","lastModifiedDate":"2016-10-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":24,"author":{"gitId":"UdhayaShan1"},"content":" * Creates a {@code StorageManager} with the given {@code RealodexStorage} and {@code UserPrefStorage}.","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":26,"author":{"gitId":"UdhayaShan1"},"content":" public StorageManager(RealodexStorage realodexStorage, UserPrefsStorage userPrefsStorage) {","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"UdhayaShan1"},"content":" this.realodexStorage \u003d realodexStorage;","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" this.userPrefsStorage \u003d userPrefsStorage;","lastModifiedDate":"2016-10-01"},{"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":"UdhayaShan1"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Realodex 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":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":52,"author":{"gitId":"UdhayaShan1"},"content":" public Path getRealodexFilePath() {","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"UdhayaShan1"},"content":" return realodexStorage.getRealodexFilePath();","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" public Optional\u003cReadOnlyRealodex\u003e readRealodex() throws DataLoadingException {","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"UdhayaShan1"},"content":" return readRealodex(realodexStorage.getRealodexFilePath());","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" public Optional\u003cReadOnlyRealodex\u003e readRealodex(Path filePath) throws DataLoadingException {","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" logger.fine(\"Attempting to read data from file: \" + filePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":64,"author":{"gitId":"UdhayaShan1"},"content":" return realodexStorage.readRealodex(filePath);","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" public void saveRealodex(ReadOnlyRealodex realodex) throws IOException {","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"UdhayaShan1"},"content":" saveRealodex(realodex, realodexStorage.getRealodexFilePath());","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" public void saveRealodex(ReadOnlyRealodex realodex, Path filePath) throws IOException {","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" logger.fine(\"Attempting to write to data file: \" + filePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":75,"author":{"gitId":"UdhayaShan1"},"content":" realodexStorage.saveRealodex(realodex, filePath);","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":22,"-":56}},{"path":"src/main/java/seedu/realodex/storage/UserPrefsStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.storage;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.UserPrefs;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-24"},{"lineNumber":12,"author":{"gitId":"UdhayaShan1"},"content":" * Represents a storage for {@link seedu.realodex.model.UserPrefs}.","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" * Saves the given {@link seedu.realodex.model.ReadOnlyUserPrefs} to the storage.","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":6,"-":30}},{"path":"src/main/java/seedu/realodex/ui/CommandBox.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.ui;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.CommandResult;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * The UI component that is responsible for receiving user command inputs.","lastModifiedDate":"2017-08-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class CommandBox extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String ERROR_STYLE_CLASS \u003d \"error\";","lastModifiedDate":"2017-02-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"CommandBox.fxml\";","lastModifiedDate":"2017-04-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private final CommandExecutor commandExecutor;","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-14"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private TextField commandTextField;","lastModifiedDate":"2016-09-14"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Creates a {@code CommandBox} with the given {@code CommandExecutor}.","lastModifiedDate":"2020-05-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public CommandBox(CommandExecutor commandExecutor) {","lastModifiedDate":"2019-01-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" this.commandExecutor \u003d commandExecutor;","lastModifiedDate":"2018-12-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // calls #setStyleToDefault() whenever there is a change to the text of the command box.","lastModifiedDate":"2017-06-28"},{"lineNumber":31,"author":{"gitId":"-"},"content":" commandTextField.textProperty().addListener((unused1, unused2, unused3) -\u003e setStyleToDefault());","lastModifiedDate":"2017-06-28"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Handles the Enter button pressed event.","lastModifiedDate":"2017-08-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private void handleCommandEntered() {","lastModifiedDate":"2018-04-01"},{"lineNumber":39,"author":{"gitId":"-"},"content":" String commandText \u003d commandTextField.getText();","lastModifiedDate":"2020-12-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":" if (commandText.equals(\"\")) {","lastModifiedDate":"2020-12-04"},{"lineNumber":41,"author":{"gitId":"-"},"content":" return;","lastModifiedDate":"2020-12-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-12-04"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-12-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-02-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" commandExecutor.execute(commandText);","lastModifiedDate":"2020-12-04"},{"lineNumber":46,"author":{"gitId":"-"},"content":" commandTextField.setText(\"\");","lastModifiedDate":"2016-09-14"},{"lineNumber":47,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2017-03-11"},{"lineNumber":48,"author":{"gitId":"-"},"content":" setStyleToIndicateCommandFailure();","lastModifiedDate":"2017-02-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-14"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-28"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Sets the command box style to use the default style.","lastModifiedDate":"2017-06-28"},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28"},{"lineNumber":55,"author":{"gitId":"-"},"content":" private void setStyleToDefault() {","lastModifiedDate":"2017-06-28"},{"lineNumber":56,"author":{"gitId":"-"},"content":" commandTextField.getStyleClass().remove(ERROR_STYLE_CLASS);","lastModifiedDate":"2017-02-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-28"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Sets the command box style to indicate a failed command.","lastModifiedDate":"2017-02-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28"},{"lineNumber":62,"author":{"gitId":"-"},"content":" private void setStyleToIndicateCommandFailure() {","lastModifiedDate":"2017-02-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" ObservableList\u003cString\u003e styleClass \u003d commandTextField.getStyleClass();","lastModifiedDate":"2017-03-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" if (styleClass.contains(ERROR_STYLE_CLASS)) {","lastModifiedDate":"2017-03-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return;","lastModifiedDate":"2017-03-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" styleClass.add(ERROR_STYLE_CLASS);","lastModifiedDate":"2017-03-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Represents a function that can execute commands.","lastModifiedDate":"2018-12-09"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @FunctionalInterface","lastModifiedDate":"2018-12-09"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public interface CommandExecutor {","lastModifiedDate":"2018-12-09"},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":79,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":80,"author":{"gitId":"UdhayaShan1"},"content":" * @see seedu.realodex.logic.Logic#execute(String)","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":82,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2018-12-09"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":85,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"}],"authorContributionMap":{"UdhayaShan1":5,"-":80}},{"path":"src/main/java/seedu/realodex/ui/HelpWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.ui;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.AddCommand.MESSAGE_ADD_HELP;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.ClearCommand.MESSAGE_CLEAR_HELP;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.DeleteCommand.MESSAGE_DELETE_HELP;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.EditCommand.MESSAGE_EDIT_HELP;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.ExitCommand.MESSAGE_EXIT_HELP;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.FilterCommand.MESSAGE_FIND_HELP;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.ListCommand.MESSAGE_LIST_HELP;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-12-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2019-08-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2019-08-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import javafx.scene.input.Clipboard;","lastModifiedDate":"2019-08-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import javafx.scene.input.ClipboardContent;","lastModifiedDate":"2019-08-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":19,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.LogsCenter;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Controller for a help page","lastModifiedDate":"2016-08-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class HelpWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-12-01"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":26,"author":{"gitId":"appleraincoat"},"content":" public static final String USERGUIDE_URL \u003d \"https://ay2324s2-cs2103t-w10-1.github.io/tp/\";","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"appleraincoat"},"content":" public static final String HELP_MESSAGE \u003d \"For more information, you may refer to the user guide: \"","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"appleraincoat"},"content":" + \"\\n\" + USERGUIDE_URL;","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(HelpWindow.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"HelpWindow.fxml\";","lastModifiedDate":"2016-09-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-12-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Button copyButton;","lastModifiedDate":"2019-08-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private Label helpMessage;","lastModifiedDate":"2019-08-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-12-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * @param root Stage to use as the root of the HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public HelpWindow(Stage root) {","lastModifiedDate":"2017-12-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":" super(FXML, root);","lastModifiedDate":"2017-12-01"},{"lineNumber":46,"author":{"gitId":"appleraincoat"},"content":" helpMessage.setText(MESSAGE_ADD_HELP + \"\\n\"","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"appleraincoat"},"content":" + MESSAGE_DELETE_HELP + \"\\n\"","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"appleraincoat"},"content":" + MESSAGE_CLEAR_HELP + \"\\n\"","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"appleraincoat"},"content":" + MESSAGE_EDIT_HELP + \"\\n\"","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"appleraincoat"},"content":" + MESSAGE_LIST_HELP + \"\\n\"","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"appleraincoat"},"content":" + MESSAGE_FIND_HELP + \"\\n\"","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"appleraincoat"},"content":" + MESSAGE_EXIT_HELP + \"\\n\"","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"appleraincoat"},"content":" + HELP_MESSAGE);","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public HelpWindow() {","lastModifiedDate":"2017-12-01"},{"lineNumber":60,"author":{"gitId":"-"},"content":" this(new Stage());","lastModifiedDate":"2017-12-01"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-01"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-01"},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Shows the help window.","lastModifiedDate":"2017-08-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * @throws IllegalStateException","lastModifiedDate":"2017-08-16"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * \u003cul\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":68,"author":{"gitId":"-"},"content":" * if this method is called on a thread other than the JavaFX Application Thread.","lastModifiedDate":"2017-08-16"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * if this method is called during animation or layout processing.","lastModifiedDate":"2017-08-16"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * if this method is called on the primary stage.","lastModifiedDate":"2017-08-16"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * if {@code dialogStage} is already showing.","lastModifiedDate":"2017-08-16"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * \u003c/ul\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void show() {","lastModifiedDate":"2016-08-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":" logger.fine(\"Showing help page about the application.\");","lastModifiedDate":"2016-12-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":" getRoot().show();","lastModifiedDate":"2018-02-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" getRoot().centerOnScreen();","lastModifiedDate":"2019-08-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * Returns true if the help window is currently being shown.","lastModifiedDate":"2018-03-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public boolean isShowing() {","lastModifiedDate":"2018-03-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":" return getRoot().isShowing();","lastModifiedDate":"2018-03-15"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-08"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * Hides the help window.","lastModifiedDate":"2018-12-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void hide() {","lastModifiedDate":"2018-12-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" getRoot().hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Focuses on the help window.","lastModifiedDate":"2018-03-15"},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public void focus() {","lastModifiedDate":"2018-03-15"},{"lineNumber":105,"author":{"gitId":"-"},"content":" getRoot().requestFocus();","lastModifiedDate":"2018-03-15"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":108,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-08-19"},{"lineNumber":109,"author":{"gitId":"-"},"content":" * Copies the URL to the user guide to the clipboard.","lastModifiedDate":"2019-08-19"},{"lineNumber":110,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-08-19"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":112,"author":{"gitId":"-"},"content":" private void copyUrl() {","lastModifiedDate":"2019-08-19"},{"lineNumber":113,"author":{"gitId":"-"},"content":" final Clipboard clipboard \u003d Clipboard.getSystemClipboard();","lastModifiedDate":"2019-08-19"},{"lineNumber":114,"author":{"gitId":"-"},"content":" final ClipboardContent url \u003d new ClipboardContent();","lastModifiedDate":"2019-08-19"},{"lineNumber":115,"author":{"gitId":"-"},"content":" url.putString(USERGUIDE_URL);","lastModifiedDate":"2019-08-19"},{"lineNumber":116,"author":{"gitId":"-"},"content":" clipboard.setContent(url);","lastModifiedDate":"2019-08-19"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-08-19"},{"lineNumber":118,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"UdhayaShan1":9,"-":98,"appleraincoat":11}},{"path":"src/main/java/seedu/realodex/ui/MainWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.ui;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.GuiSettings;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.LogsCenter;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.Logic;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.CommandResult;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-19"},{"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":"-"},"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":"-"},"content":" private StackPane personListPanelPlaceholder;","lastModifiedDate":"2017-05-09"},{"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":"-"},"content":" personListPanel \u003d new PersonListPanel(logic.getFilteredPersonList());","lastModifiedDate":"2019-01-25"},{"lineNumber":114,"author":{"gitId":"-"},"content":" personListPanelPlaceholder.getChildren().add(personListPanel.getRoot());","lastModifiedDate":"2017-06-14"},{"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":"UdhayaShan1"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getRealodexFilePath());","lastModifiedDate":"2024-03-19"},{"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":" public PersonListPanel getPersonListPanel() {","lastModifiedDate":"2016-08-25"},{"lineNumber":167,"author":{"gitId":"-"},"content":" return personListPanel;","lastModifiedDate":"2018-08-14"},{"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":"UdhayaShan1"},"content":" * @see seedu.realodex.logic.Logic#execute(String)","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":9,"-":187}},{"path":"src/main/java/seedu/realodex/ui/PersonCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.ui;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Person;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on Realodex level 4\u003c/a\u003e","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" private Label income;","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"UdhayaShan1"},"content":" @FXML","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private Label address;","lastModifiedDate":"2016-09-21"},{"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":"UdhayaShan1"},"content":" private Label family;","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"UdhayaShan1"},"content":" @FXML","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18"},{"lineNumber":47,"author":{"gitId":"appleraincoat"},"content":" @FXML","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"appleraincoat"},"content":" private Label remark;","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":59,"author":{"gitId":"UdhayaShan1"},"content":" income.setText(person.getIncome().toStringWithRepresentation());","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"-"},"content":" address.setText(person.getAddress().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":61,"author":{"gitId":"UdhayaShan1"},"content":" family.setText(person.getFamily().toStringWithRepresentation());","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":" person.getTags().stream()","lastModifiedDate":"2019-01-02"},{"lineNumber":64,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02"},{"lineNumber":65,"author":{"gitId":"4llysa"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName.toString())));","lastModifiedDate":"2024-03-15"},{"lineNumber":66,"author":{"gitId":"appleraincoat"},"content":" remark.setText(person.getRemark().toStringWithRepresentation());","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"4llysa":1,"UdhayaShan1":9,"-":55,"appleraincoat":3}},{"path":"src/main/java/seedu/realodex/ui/PersonListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.ui;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.LogsCenter;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Panel containing the list of persons.","lastModifiedDate":"2016-09-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class PersonListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListPanel.fxml\";","lastModifiedDate":"2016-09-14"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(PersonListPanel.class);","lastModifiedDate":"2017-04-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private ListView\u003cPerson\u003e personListView;","lastModifiedDate":"2018-02-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Creates a {@code PersonListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2020-05-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public PersonListPanel(ObservableList\u003cPerson\u003e personList) {","lastModifiedDate":"2019-01-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" personListView.setItems(personList);","lastModifiedDate":"2018-02-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" personListView.setCellFactory(listView -\u003e new PersonListViewCell());","lastModifiedDate":"2016-08-18"},{"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":"-"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Person} using a {@code PersonCard}.","lastModifiedDate":"2018-02-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" class PersonListViewCell extends ListCell\u003cPerson\u003e {","lastModifiedDate":"2018-02-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" protected void updateItem(Person person, boolean empty) {","lastModifiedDate":"2018-02-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" super.updateItem(person, empty);","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" if (empty || person \u003d\u003d null) {","lastModifiedDate":"2016-09-21"},{"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":"-"},"content":" setGraphic(new PersonCard(person, getIndex() + 1).getRoot());","lastModifiedDate":"2018-02-08"},{"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":{"UdhayaShan1":3,"-":46}},{"path":"src/main/java/seedu/realodex/ui/ResultDisplay.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.ui;","lastModifiedDate":"2024-03-19"},{"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-08-18"}],"authorContributionMap":{"UdhayaShan1":1,"-":26}},{"path":"src/main/java/seedu/realodex/ui/StatusBarFooter.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.ui;","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":" * Creates a {@code StatusBarFooter} with the given {@code Path}.","lastModifiedDate":"2020-05-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public StatusBarFooter(Path saveLocation) {","lastModifiedDate":"2019-01-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2017-04-01"},{"lineNumber":25,"author":{"gitId":"-"},"content":" saveLocationStatus.setText(Paths.get(\".\").resolve(saveLocation).toString());","lastModifiedDate":"2018-12-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-01"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"UdhayaShan1":1,"-":27}},{"path":"src/main/java/seedu/realodex/ui/Ui.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.ui;","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":1,"-":12}},{"path":"src/main/java/seedu/realodex/ui/UiManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.ui;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.MainApp;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.LogsCenter;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.util.StringUtil;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.Logic;","lastModifiedDate":"2024-03-19"},{"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":"appleraincoat"},"content":" private static final String ICON_APPLICATION \u003d \"/images/realodex_icon.png\";","lastModifiedDate":"2024-03-13"},{"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":{"UdhayaShan1":5,"-":82,"appleraincoat":1}},{"path":"src/main/java/seedu/realodex/ui/UiPart.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.ui;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.MainApp;","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":2,"-":86}},{"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":"appleraincoat"},"content":" \u003cHBox alignment\u003d\"BOTTOM_RIGHT\" fx:id\u003d\"helpMessageContainer\"\u003e","lastModifiedDate":"2024-03-15"},{"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":{"-":43,"appleraincoat":1}},{"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":"appleraincoat"},"content":" title\u003d\"Realodex\" minWidth\u003d\"450\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":17,"author":{"gitId":"appleraincoat"},"content":" \u003cImage url\u003d\"@/images/realodex_icon.png\" /\u003e","lastModifiedDate":"2024-03-13"},{"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":{"-":58,"appleraincoat":2}},{"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":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"UdhayaShan1"},"content":" \u003cLabel fx:id\u003d\"income\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$income\" /\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2016-08-08"},{"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":"UdhayaShan1"},"content":" \u003cLabel fx:id\u003d\"family\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$family\" /\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"appleraincoat"},"content":" \u003cLabel fx:id\u003d\"remark\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$remark\" /\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"-":36,"UdhayaShan1":2,"appleraincoat":1}},{"path":"src/test/java/seedu/realodex/AppParametersTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex;","lastModifiedDate":"2024-03-19"},{"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":"2019-02-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-02-23"},{"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":"-"},"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":"-"},"content":"}","lastModifiedDate":"2018-04-21"}],"authorContributionMap":{"UdhayaShan1":1,"-":88}},{"path":"src/test/java/seedu/realodex/commons/core/ConfigTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.commons.core;","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","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":"2016-09-30"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class ConfigTest {","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 toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":" Config config \u003d new Config();","lastModifiedDate":"2019-02-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":" String expected \u003d Config.class.getCanonicalName() + \"{logLevel\u003d\" + config.getLogLevel()","lastModifiedDate":"2019-02-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":" + \", userPrefsFilePath\u003d\" + config.getUserPrefsFilePath() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":" assertEquals(expected, config.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-30"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public void equalsMethod() {","lastModifiedDate":"2016-09-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":" Config defaultConfig \u003d new Config();","lastModifiedDate":"2016-09-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" assertNotNull(defaultConfig);","lastModifiedDate":"2016-10-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertTrue(defaultConfig.equals(defaultConfig));","lastModifiedDate":"2016-09-30"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":27,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-30"}],"authorContributionMap":{"UdhayaShan1":1,"-":26}},{"path":"src/test/java/seedu/realodex/commons/core/GuiSettingsTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.commons.core;","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-02-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"public class GuiSettingsTest {","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings();","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":" String expected \u003d GuiSettings.class.getCanonicalName() + \"{windowWidth\u003d\" + guiSettings.getWindowWidth()","lastModifiedDate":"2019-02-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":" + \", windowHeight\u003d\" + guiSettings.getWindowHeight() + \", windowCoordinates\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":" + guiSettings.getWindowCoordinates() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":" assertEquals(expected, guiSettings.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-02-23"}],"authorContributionMap":{"UdhayaShan1":1,"-":15}},{"path":"src/test/java/seedu/realodex/commons/core/VersionTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.commons.core;","lastModifiedDate":"2024-03-19"},{"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.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class VersionTest {","lastModifiedDate":"2016-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void versionParsing_acceptableVersionString_parsedVersionCorrectly() {","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" verifyVersionParsedCorrectly(\"V0.0.0ea\", 0, 0, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" verifyVersionParsedCorrectly(\"V3.10.2\", 3, 10, 2, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" verifyVersionParsedCorrectly(\"V100.100.100ea\", 100, 100, 100, true);","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":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public void versionParsing_wrongVersionString_throwIllegalArgumentException() {","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e Version.fromString(\"This is not a version string\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void versionConstructor_correctParameter_valueAsExpected() {","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" Version version \u003d new Version(19, 10, 20, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertEquals(19, version.getMajor());","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertEquals(10, version.getMinor());","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertEquals(20, version.getPatch());","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertEquals(true, version.isEarlyAccess());","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void versionToString_validVersion_correctStringRepresentation() {","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // boundary at 0","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" Version version \u003d new Version(0, 0, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertEquals(\"V0.0.0ea\", version.toString());","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" // normal values","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" version \u003d new Version(4, 10, 5, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertEquals(\"V4.10.5\", version.toString());","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // big numbers","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" version \u003d new Version(100, 100, 100, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertEquals(\"V100.100.100ea\", version.toString());","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":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void versionComparable_validVersion_compareToIsCorrect() {","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" Version one;","lastModifiedDate":"2017-09-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" Version another;","lastModifiedDate":"2017-09-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // Tests equality","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" one \u003d new Version(0, 0, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" another \u003d new Version(0, 0, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003d\u003d 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" one \u003d new Version(11, 12, 13, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" another \u003d new Version(11, 12, 13, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003d\u003d 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // Tests different patch","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" one \u003d new Version(0, 0, 5, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" another \u003d new Version(0, 0, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003e 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // Tests different minor","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" one \u003d new Version(0, 0, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" another \u003d new Version(0, 5, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003c 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // Tests different major","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" one \u003d new Version(10, 0, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":" another \u003d new Version(0, 0, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003e 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // Tests high major vs low minor","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":" one \u003d new Version(10, 0, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" another \u003d new Version(0, 1, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003e 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" // Tests high patch vs low minor","lastModifiedDate":"2016-08-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" one \u003d new Version(0, 0, 10, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":" another \u003d new Version(0, 1, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003c 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // Tests same major minor different patch","lastModifiedDate":"2016-08-08"},{"lineNumber":88,"author":{"gitId":"-"},"content":" one \u003d new Version(2, 15, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":" another \u003d new Version(2, 15, 5, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003c 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":92,"author":{"gitId":"-"},"content":" // Tests early access vs not early access on same version number","lastModifiedDate":"2016-08-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":" one \u003d new Version(2, 15, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":94,"author":{"gitId":"-"},"content":" another \u003d new Version(2, 15, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003c 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" // Tests early access lower version vs not early access higher version compare by version number first","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" one \u003d new Version(2, 15, 0, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" another \u003d new Version(2, 15, 5, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003c 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" // Tests early access higher version vs not early access lower version compare by version number first","lastModifiedDate":"2016-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" one \u003d new Version(2, 15, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" another \u003d new Version(2, 15, 5, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertTrue(one.compareTo(another) \u003c 0);","lastModifiedDate":"2016-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void versionComparable_validVersion_hashCodeIsCorrect() {","lastModifiedDate":"2016-08-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" Version version \u003d new Version(100, 100, 100, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertEquals(100100100, version.hashCode());","lastModifiedDate":"2016-08-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":" version \u003d new Version(10, 10, 10, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertEquals(1010010010, version.hashCode());","lastModifiedDate":"2016-08-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public void versionComparable_validVersion_equalIsCorrect() {","lastModifiedDate":"2016-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" Version one;","lastModifiedDate":"2016-10-16"},{"lineNumber":120,"author":{"gitId":"-"},"content":" Version another;","lastModifiedDate":"2016-10-16"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" one \u003d new Version(0, 0, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" another \u003d new Version(0, 0, 0, false);","lastModifiedDate":"2016-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertTrue(one.equals(another));","lastModifiedDate":"2016-08-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" one \u003d new Version(100, 191, 275, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" another \u003d new Version(100, 191, 275, true);","lastModifiedDate":"2016-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertTrue(one.equals(another));","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":" private void verifyVersionParsedCorrectly(String versionString,","lastModifiedDate":"2016-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":" int major, int minor, int patch, boolean isEarlyAccess) {","lastModifiedDate":"2016-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":" assertEquals(new Version(major, minor, patch, isEarlyAccess), Version.fromString(versionString));","lastModifiedDate":"2016-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"UdhayaShan1":2,"-":133}},{"path":"src/test/java/seedu/realodex/commons/core/index/IndexTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.commons.core.index;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"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":"-"},"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":"-"},"content":" assertTrue(fifthPersonIndex.equals(Index.fromOneBased(5)));","lastModifiedDate":"2017-05-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(fifthPersonIndex.equals(Index.fromZeroBased(4)));","lastModifiedDate":"2017-05-24"},{"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":"-"},"content":" assertTrue(fifthPersonIndex.equals(fifthPersonIndex));","lastModifiedDate":"2017-05-24"},{"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":"-"},"content":" assertFalse(fifthPersonIndex.equals(null));","lastModifiedDate":"2017-05-24"},{"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":"-"},"content":" assertFalse(fifthPersonIndex.equals(5.0f));","lastModifiedDate":"2017-05-24"},{"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":"-"},"content":" assertFalse(fifthPersonIndex.equals(Index.fromOneBased(1)));","lastModifiedDate":"2017-05-24"},{"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":{"UdhayaShan1":2,"-":65}},{"path":"src/test/java/seedu/realodex/commons/util/AppUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.commons.util;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"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":"appleraincoat"},"content":" assertNotNull(AppUtil.getImage(\"/images/realodex_icon.png\"));","lastModifiedDate":"2024-03-13"},{"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":{"UdhayaShan1":2,"-":33,"appleraincoat":1}},{"path":"src/test/java/seedu/realodex/commons/util/CollectionUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.commons.util;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":" List\u003cObject\u003e containingNull \u003d Arrays.asList((Object) null);","lastModifiedDate":"2017-01-14"},{"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":"-"},"content":" assertNullPointerExceptionThrown(Arrays.asList((Object) null));","lastModifiedDate":"2017-05-19"},{"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":"-"},"content":" assertNullPointerExceptionNotThrown(Arrays.asList(new Object()));","lastModifiedDate":"2017-05-19"},{"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":"-"},"content":" List\u003cObject\u003e containingNull \u003d Arrays.asList((Object) null);","lastModifiedDate":"2017-01-14"},{"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":"2019-03-23"},{"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":"2019-03-23"},{"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":"2017-05-19"},{"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":"2017-05-19"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-19"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-22"}],"authorContributionMap":{"UdhayaShan1":3,"-":105}},{"path":"src/test/java/seedu/realodex/commons/util/ConfigUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.commons.util;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.Config;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-19"},{"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":"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":" @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-06-14"},{"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":"2019-03-23"},{"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":"2019-03-23"},{"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":{"UdhayaShan1":4,"-":112}},{"path":"src/test/java/seedu/realodex/commons/util/FileUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.commons.util;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class FileUtilTest {","lastModifiedDate":"2016-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void isValidPath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":" // valid path","lastModifiedDate":"2018-04-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":" assertTrue(FileUtil.isValidPath(\"valid/file/path\"));","lastModifiedDate":"2018-04-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":" // invalid path","lastModifiedDate":"2018-04-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":" assertFalse(FileUtil.isValidPath(\"a\\0\"));","lastModifiedDate":"2018-04-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":" // null path -\u003e throws NullPointerException","lastModifiedDate":"2018-04-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e FileUtil.isValidPath(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"UdhayaShan1":2,"-":21}},{"path":"src/test/java/seedu/realodex/commons/util/JsonUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.commons.util;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.testutil.SerializableTestClass;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.testutil.TestUtil;","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"UdhayaShan1":3,"-":42}},{"path":"src/test/java/seedu/realodex/commons/util/StringUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.commons.util;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e StringUtil.containsWordIgnoreCase(\"typical sentence\", null));","lastModifiedDate":"2019-03-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void containsWordIgnoreCase_emptyWord_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, \"Word parameter cannot be empty\", ()","lastModifiedDate":"2019-03-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" -\u003e StringUtil.containsWordIgnoreCase(\"typical sentence\", \" \"));","lastModifiedDate":"2019-03-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void containsWordIgnoreCase_multipleWords_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, \"Word parameter should be a single word\", ()","lastModifiedDate":"2019-03-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" -\u003e StringUtil.containsWordIgnoreCase(\"typical sentence\", \"aaa BBB\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void containsWordIgnoreCase_nullSentence_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e StringUtil.containsWordIgnoreCase(null, \"abc\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Valid equivalence partitions for word:","lastModifiedDate":"2016-10-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * - any word","lastModifiedDate":"2016-10-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * - word containing symbols/numbers","lastModifiedDate":"2016-10-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * - word with leading/trailing spaces","lastModifiedDate":"2016-10-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Valid equivalence partitions for sentence:","lastModifiedDate":"2016-10-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * - empty string","lastModifiedDate":"2016-10-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * - one word","lastModifiedDate":"2016-10-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * - multiple words","lastModifiedDate":"2016-10-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * - sentence with extra spaces","lastModifiedDate":"2016-10-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Possible scenarios returning true:","lastModifiedDate":"2016-10-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * - matches first word in sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * - last word in sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - middle word in sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * - matches multiple words","lastModifiedDate":"2016-10-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * Possible scenarios returning false:","lastModifiedDate":"2016-10-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * - query word matches part of a sentence word","lastModifiedDate":"2016-10-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * - sentence word matches part of the query word","lastModifiedDate":"2016-10-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-13"},{"lineNumber":101,"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":102,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void containsWordIgnoreCase_validInputs_correctResult() {","lastModifiedDate":"2016-10-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" // Empty sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.containsWordIgnoreCase(\"\", \"abc\")); // Boundary case","lastModifiedDate":"2016-10-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.containsWordIgnoreCase(\" \", \"123\"));","lastModifiedDate":"2016-10-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" // Matches a partial word only","lastModifiedDate":"2016-10-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.containsWordIgnoreCase(\"aaa bbb ccc\", \"bb\")); // Sentence word bigger than query word","lastModifiedDate":"2016-10-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.containsWordIgnoreCase(\"aaa bbb ccc\", \"bbbb\")); // Query word bigger than sentence word","lastModifiedDate":"2016-10-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" // Matches word in the sentence, different upper/lower case letters","lastModifiedDate":"2016-10-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\"aaa bBb ccc\", \"Bbb\")); // First word (boundary case)","lastModifiedDate":"2016-10-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\"aaa bBb ccc@1\", \"CCc@1\")); // Last word (boundary case)","lastModifiedDate":"2016-10-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\" AAA bBb ccc \", \"aaa\")); // Sentence has extra spaces","lastModifiedDate":"2016-10-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\"Aaa\", \"aaa\")); // Only one word in sentence (boundary case)","lastModifiedDate":"2016-10-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\"aaa bbb ccc\", \" ccc \")); // Leading/trailing spaces","lastModifiedDate":"2016-10-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":" // Matches multiple words in sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\"AAA bBb ccc bbb\", \"bbB\"));","lastModifiedDate":"2016-10-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" //---------------- Tests for getDetails --------------------------------------","lastModifiedDate":"2016-10-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":128,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-13"},{"lineNumber":129,"author":{"gitId":"-"},"content":" * Equivalence Partitions: null, valid throwable object","lastModifiedDate":"2016-10-13"},{"lineNumber":130,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-30"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void getDetails_exceptionGiven() {","lastModifiedDate":"2016-09-30"},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.getDetails(new FileNotFoundException(\"file not found\"))","lastModifiedDate":"2019-03-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" .contains(\"java.io.FileNotFoundException: file not found\"));","lastModifiedDate":"2019-03-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-30"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public void getDetails_nullGiven_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e StringUtil.getDetails(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":143,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"UdhayaShan1":2,"-":141}},{"path":"src/test/java/seedu/realodex/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.FAMILY_DESC_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.INCOME_DESC_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.TAG_DESC_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_TAG_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.TypicalPersons.AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":25,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.AddCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.CommandResult;","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.ListCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.ModelManager;","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.ReadOnlyRealodex;","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.UserPrefs;","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.storage.JsonRealodexStorage;","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.storage.JsonUserPrefsStorage;","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.storage.StorageManager;","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.testutil.PersonBuilder;","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20"},{"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":"UdhayaShan1"},"content":" JsonRealodexStorage realodexStorage \u003d","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"UdhayaShan1"},"content":" new JsonRealodexStorage(temporaryFolder.resolve(\"realodex.json\"));","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":55,"author":{"gitId":"UdhayaShan1"},"content":" StorageManager storage \u003d new StorageManager(realodexStorage, userPrefsStorage);","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2017-06-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2017-06-14"},{"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":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2024-03-16"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":101,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":108,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":109,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":110,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":111,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":112,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":116,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":125,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":126,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":128,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14"},{"lineNumber":130,"author":{"gitId":"UdhayaShan1"},"content":" Model expectedModel \u003d new ModelManager(model.getRealodex(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":131,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":134,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":135,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":137,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":138,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":139,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":140,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":141,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":142,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31"},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14"},{"lineNumber":144,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19"},{"lineNumber":147,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":148,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13"},{"lineNumber":149,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13"},{"lineNumber":150,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13"},{"lineNumber":151,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":153,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13"},{"lineNumber":154,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":156,"author":{"gitId":"UdhayaShan1"},"content":" // Inject LogicManager with an RealodexStorage that throws the IOException e when saving","lastModifiedDate":"2024-03-19"},{"lineNumber":157,"author":{"gitId":"UdhayaShan1"},"content":" JsonRealodexStorage realodexStorage \u003d new JsonRealodexStorage(prefPath) {","lastModifiedDate":"2024-03-19"},{"lineNumber":158,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":159,"author":{"gitId":"UdhayaShan1"},"content":" public void saveRealodex(ReadOnlyRealodex realodex, Path filePath)","lastModifiedDate":"2024-03-19"},{"lineNumber":160,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13"},{"lineNumber":161,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":163,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":165,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":166,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13"},{"lineNumber":167,"author":{"gitId":"UdhayaShan1"},"content":" StorageManager storage \u003d new StorageManager(realodexStorage, userPrefsStorage);","lastModifiedDate":"2024-03-19"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":169,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":171,"author":{"gitId":"UdhayaShan1"},"content":" // Triggers the saveRealodex method by executing an add command","lastModifiedDate":"2024-03-19"},{"lineNumber":172,"author":{"gitId":"-"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2023-06-13"},{"lineNumber":173,"author":{"gitId":"4llysa"},"content":" + INCOME_DESC_AMY + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + FAMILY_DESC_AMY + TAG_DESC_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":174,"author":{"gitId":"UdhayaShan1"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags(VALID_TAG_AMY).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":175,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13"},{"lineNumber":176,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13"},{"lineNumber":177,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":179,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"4llysa":1,"UdhayaShan1":37,"-":141}},{"path":"src/test/java/seedu/realodex/logic/commands/AddCommandIntegrationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.TypicalPersons.getTypicalRealodex;","lastModifiedDate":"2024-03-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":"UdhayaShan1"},"content":"import seedu.realodex.logic.Messages;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.ModelManager;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.UserPrefs;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.testutil.PersonBuilder;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" model \u003d new ModelManager(getTypicalRealodex(), new UserPrefs());","lastModifiedDate":"2024-03-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":"UdhayaShan1"},"content":" Model expectedModel \u003d new ModelManager(model.getRealodex(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" Person personInList \u003d model.getRealodex().getPersonList().get(0);","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":13,"-":35}},{"path":"src/test/java/seedu/realodex/logic/commands/AddCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.commands;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.GuiSettings;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.Messages;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.ReadOnlyRealodex;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.Realodex;","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.testutil.PersonBuilder;","lastModifiedDate":"2024-03-19"},{"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":"-"},"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":"-"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2017-06-22"},{"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":"UdhayaShan1"},"content":" public Path getRealodexFilePath() {","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" public void setRealodexFilePath(Path realodexFilePath) {","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" public void setRealodex(ReadOnlyRealodex newData) {","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" public ReadOnlyRealodex getRealodex() {","lastModifiedDate":"2024-03-19"},{"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":"2018-08-06"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"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":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07"},{"lineNumber":164,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":165,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07"},{"lineNumber":166,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":168,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":169,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":170,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":173,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":174,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":175,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":176,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":180,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":181,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12"},{"lineNumber":182,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":183,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12"},{"lineNumber":184,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":186,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07"},{"lineNumber":187,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":188,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":189,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":192,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":193,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08"},{"lineNumber":194,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":195,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":198,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":199,"author":{"gitId":"UdhayaShan1"},"content":" public ReadOnlyRealodex getRealodex() {","lastModifiedDate":"2024-03-19"},{"lineNumber":200,"author":{"gitId":"UdhayaShan1"},"content":" return new Realodex();","lastModifiedDate":"2024-03-19"},{"lineNumber":201,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":202,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":204,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12"}],"authorContributionMap":{"UdhayaShan1":18,"-":186}},{"path":"src/test/java/seedu/realodex/logic/commands/ClearCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":3,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.TypicalPersons.getTypicalRealodex;","lastModifiedDate":"2024-03-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":"UdhayaShan1"},"content":"import seedu.realodex.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.ModelManager;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.Realodex;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.UserPrefs;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" public void execute_emptyRealodex_success() {","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" public void execute_nonEmptyRealodex_success() {","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"UdhayaShan1"},"content":" Model model \u003d new ModelManager(getTypicalRealodex(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"UdhayaShan1"},"content":" Model expectedModel \u003d new ModelManager(getTypicalRealodex(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"UdhayaShan1"},"content":" expectedModel.setRealodex(new Realodex());","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":12,"-":20}},{"path":"src/test/java/seedu/realodex/logic/commands/CommandResultTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.commands;","lastModifiedDate":"2024-03-19"},{"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":"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":"2018-12-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class CommandResultTest {","lastModifiedDate":"2018-12-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-12-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new CommandResult(\"feedback\");","lastModifiedDate":"2018-12-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-12-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":" assertTrue(commandResult.equals(new CommandResult(\"feedback\")));","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":" assertTrue(commandResult.equals(new CommandResult(\"feedback\", false, false)));","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertTrue(commandResult.equals(commandResult));","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(null));","lastModifiedDate":"2018-12-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(0.5f));","lastModifiedDate":"2018-12-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // different feedbackToUser value -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(new CommandResult(\"different\")));","lastModifiedDate":"2018-12-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // different showHelp value -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(new CommandResult(\"feedback\", true, false)));","lastModifiedDate":"2018-12-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":" // different exit value -\u003e returns false","lastModifiedDate":"2018-12-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(new CommandResult(\"feedback\", false, true)));","lastModifiedDate":"2018-12-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void hashcode() {","lastModifiedDate":"2018-12-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new CommandResult(\"feedback\");","lastModifiedDate":"2018-12-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" // same values -\u003e returns same hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(commandResult.hashCode(), new CommandResult(\"feedback\").hashCode());","lastModifiedDate":"2018-12-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // different feedbackToUser value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(\"different\").hashCode());","lastModifiedDate":"2018-12-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // different showHelp value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(\"feedback\", true, false).hashCode());","lastModifiedDate":"2018-12-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different exit value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(\"feedback\", false, true).hashCode());","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new CommandResult(\"feedback\");","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" String expected \u003d CommandResult.class.getCanonicalName() + \"{feedbackToUser\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" + commandResult.getFeedbackToUser() + \", showHelp\u003d\" + commandResult.isShowHelp()","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" + \", exit\u003d\" + commandResult.isExit() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertEquals(expected, commandResult.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-12-09"}],"authorContributionMap":{"UdhayaShan1":1,"-":62}},{"path":"src/test/java/seedu/realodex/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.commands;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_FAMILY;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_INCOME;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.index.Index;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.Realodex;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.NameContainsKeyphrasePredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2024-03-19"},{"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":"","lastModifiedDate":"2017-06-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05"},{"lineNumber":35,"author":{"gitId":"UdhayaShan1"},"content":" public static final String VALID_INCOME_AMY \u003d \"20000\";","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"UdhayaShan1"},"content":" public static final String VALID_INCOME_BOB \u003d \"30000\";","lastModifiedDate":"2024-03-11"},{"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":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05"},{"lineNumber":41,"author":{"gitId":"UdhayaShan1"},"content":" public static final String VALID_FAMILY_AMY \u003d \"4\";","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"UdhayaShan1"},"content":" public static final String VALID_FAMILY_BOB \u003d \"4\";","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"4llysa"},"content":" public static final String VALID_TAG_AMY \u003d \"buyer\";","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"4llysa"},"content":" public static final String VALID_TAG_BOB \u003d \"seller\";","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"appleraincoat"},"content":" public static final String VALID_REMARK_AMY \u003d \"This is a remark\";","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"appleraincoat"},"content":" public static final String VALID_REMARK_BOB \u003d \"Testing remark\";","lastModifiedDate":"2024-03-17"},{"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":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":52,"author":{"gitId":"UdhayaShan1"},"content":" public static final String INCOME_DESC_AMY \u003d \" \" + PREFIX_INCOME + VALID_INCOME_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"UdhayaShan1"},"content":" public static final String INCOME_DESC_BOB \u003d \" \" + PREFIX_INCOME + VALID_INCOME_BOB;","lastModifiedDate":"2024-03-11"},{"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":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":58,"author":{"gitId":"UdhayaShan1"},"content":" public static final String FAMILY_DESC_AMY \u003d \" \" + PREFIX_FAMILY + VALID_FAMILY_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"UdhayaShan1"},"content":" public static final String FAMILY_DESC_BOB \u003d \" \" + PREFIX_FAMILY + VALID_FAMILY_BOB;","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"4llysa"},"content":" public static final String TAG_DESC_BOB \u003d \" \" + PREFIX_TAG + VALID_TAG_BOB;","lastModifiedDate":"2024-03-15"},{"lineNumber":61,"author":{"gitId":"4llysa"},"content":" public static final String TAG_DESC_AMY \u003d \" \" + PREFIX_TAG + VALID_TAG_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":62,"author":{"gitId":"appleraincoat"},"content":" public static final String REMARK_DESC_AMY \u003d \" \" + PREFIX_REMARK + VALID_REMARK_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"appleraincoat"},"content":" public static final String REMARK_DESC_BOB \u003d \" \" + PREFIX_REMARK + VALID_REMARK_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"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":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":"UdhayaShan1"},"content":" public static final String INVALID_INCOME_DESC \u003d \" \" + PREFIX_INCOME + \"-1\"; // Income must be positive, \u003e\u003d 0","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05"},{"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":"UdhayaShan1"},"content":" public static final String INVALID_FAMILY_DESC \u003d \" \" + PREFIX_FAMILY + \"0\"; // Family size must be at least 1","lastModifiedDate":"2024-03-11"},{"lineNumber":70,"author":{"gitId":"4llysa"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"friend\"; // \u0027friend\u0027 not allowed in tags","lastModifiedDate":"2024-03-15"},{"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":" 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":"UdhayaShan1"},"content":" .withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"UdhayaShan1"},"content":" .withIncome(VALID_INCOME_AMY)","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"UdhayaShan1"},"content":" .withEmail(VALID_EMAIL_AMY)","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"UdhayaShan1"},"content":" .withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"UdhayaShan1"},"content":" .withFamily(VALID_FAMILY_AMY)","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"UdhayaShan1"},"content":" .withTags(VALID_TAG_BOB)","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"UdhayaShan1"},"content":" .withRemark(VALID_REMARK_AMY)","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"UdhayaShan1"},"content":" .build();","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"UdhayaShan1"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder()","lastModifiedDate":"2024-03-16"},{"lineNumber":87,"author":{"gitId":"UdhayaShan1"},"content":" .withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-16"},{"lineNumber":88,"author":{"gitId":"UdhayaShan1"},"content":" .withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-16"},{"lineNumber":89,"author":{"gitId":"UdhayaShan1"},"content":" .withIncome(VALID_INCOME_BOB)","lastModifiedDate":"2024-03-16"},{"lineNumber":90,"author":{"gitId":"UdhayaShan1"},"content":" .withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2024-03-16"},{"lineNumber":91,"author":{"gitId":"UdhayaShan1"},"content":" .withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-03-16"},{"lineNumber":92,"author":{"gitId":"UdhayaShan1"},"content":" .withFamily(VALID_FAMILY_BOB)","lastModifiedDate":"2024-03-16"},{"lineNumber":93,"author":{"gitId":"UdhayaShan1"},"content":" .withTags(VALID_TAG_AMY, VALID_TAG_BOB)","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"UdhayaShan1"},"content":" .withRemark(VALID_REMARK_BOB)","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"UdhayaShan1"},"content":" .build();","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":98,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":102,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25"},{"lineNumber":104,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":105,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":106,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":109,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":110,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25"},{"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":"UdhayaShan1"},"content":" * - the realodex, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2024-03-19"},{"lineNumber":129,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":130,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25"},{"lineNumber":131,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":132,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":133,"author":{"gitId":"UdhayaShan1"},"content":" Realodex expectedRealodex \u003d new Realodex(actualModel.getRealodex());","lastModifiedDate":"2024-03-19"},{"lineNumber":134,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03"},{"lineNumber":137,"author":{"gitId":"UdhayaShan1"},"content":" assertEquals(expectedRealodex, actualModel.getRealodex());","lastModifiedDate":"2024-03-19"},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":140,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":141,"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":142,"author":{"gitId":"UdhayaShan1"},"content":" * {@code model}\u0027s realodex.","lastModifiedDate":"2024-03-19"},{"lineNumber":143,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":144,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31"},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":147,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31"},{"lineNumber":148,"author":{"gitId":"jyztintan"},"content":" final String fullName \u003d person.getName().fullName;","lastModifiedDate":"2024-03-16"},{"lineNumber":149,"author":{"gitId":"jyztintan"},"content":" model.updateFilteredPersonList(new NameContainsKeyphrasePredicate(fullName));","lastModifiedDate":"2024-03-16"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":151,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08"},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"4llysa":5,"jyztintan":2,"UdhayaShan1":49,"-":94,"appleraincoat":4}},{"path":"src/test/java/seedu/realodex/logic/commands/DeleteCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.commands;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.TypicalPersons.getTypicalRealodex;","lastModifiedDate":"2024-03-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":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.index.Index;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.Messages;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.ModelManager;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.UserPrefs;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.testutil.PersonBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2018-01-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":29,"author":{"gitId":"UdhayaShan1"},"content":" private Model model \u003d new ModelManager(getTypicalRealodex(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":34,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":39,"author":{"gitId":"UdhayaShan1"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getRealodex(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":45,"author":{"gitId":"wapisai"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"wapisai"},"content":" public void execute_validNameUnfilteredList_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"wapisai"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"wapisai"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(personToDelete.getName());","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"wapisai"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"wapisai"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"UdhayaShan1"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getRealodex(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"wapisai"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"wapisai"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"wapisai"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-06-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":67,"author":{"gitId":"wapisai"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"wapisai"},"content":" public void execute_invalidNameUnfilteredList_throwsCommandException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"wapisai"},"content":" Person personToDelete \u003d new PersonBuilder().withName(\"b\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"wapisai"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(personToDelete.getName());","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"wapisai"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_NAME);","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"wapisai"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":77,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":79,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":80,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":82,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":85,"author":{"gitId":"UdhayaShan1"},"content":" Model expectedModel \u003d new ModelManager(model.getRealodex(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":" showNoPerson(expectedModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":94,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":96,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-06-05"},{"lineNumber":97,"author":{"gitId":"UdhayaShan1"},"content":" // ensures that outOfBoundIndex is still in bounds of realodex list","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"UdhayaShan1"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getRealodex().getPersonList().size());","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":100,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":106,"author":{"gitId":"wapisai"},"content":" public void equalsIndex() {","lastModifiedDate":"2024-03-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":" DeleteCommand deleteFirstCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":" DeleteCommand deleteSecondCommand \u003d new DeleteCommand(INDEX_SECOND_PERSON);","lastModifiedDate":"2018-08-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":110,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":113,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":114,"author":{"gitId":"-"},"content":" DeleteCommand deleteFirstCommandCopy \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":117,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":120,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":123,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":127,"author":{"gitId":"wapisai"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":128,"author":{"gitId":"wapisai"},"content":" public void equalsName() {","lastModifiedDate":"2024-03-18"},{"lineNumber":129,"author":{"gitId":"wapisai"},"content":" DeleteCommand deleteUdhayaCommand \u003d new DeleteCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":130,"author":{"gitId":"wapisai"},"content":" new PersonBuilder().withName(\"Udhaya\").build().getName());","lastModifiedDate":"2024-03-18"},{"lineNumber":131,"author":{"gitId":"wapisai"},"content":" DeleteCommand deleteNotUdhayaCommand \u003d new DeleteCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":132,"author":{"gitId":"wapisai"},"content":" new PersonBuilder().withName(\"not Udhaya\").build().getName());","lastModifiedDate":"2024-03-18"},{"lineNumber":133,"author":{"gitId":"wapisai"},"content":" DeleteCommand deleteUdhayaShanmugamCommand \u003d new DeleteCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":134,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":135,"author":{"gitId":"wapisai"},"content":" new PersonBuilder().withName(\"Udhaya Shanmugam\").build().getName());","lastModifiedDate":"2024-03-18"},{"lineNumber":136,"author":{"gitId":"wapisai"},"content":" DeleteCommand deleteAddressCommand \u003d new DeleteCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":137,"author":{"gitId":"wapisai"},"content":" new PersonBuilder().withAddress(\"Udhaya\").build().getName());","lastModifiedDate":"2024-03-18"},{"lineNumber":138,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":139,"author":{"gitId":"wapisai"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":140,"author":{"gitId":"wapisai"},"content":" assertTrue(deleteUdhayaCommand.equals(deleteUdhayaCommand));","lastModifiedDate":"2024-03-18"},{"lineNumber":141,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":142,"author":{"gitId":"wapisai"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":143,"author":{"gitId":"wapisai"},"content":" DeleteCommand deleteUdhayaCommandCopy \u003d new DeleteCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":144,"author":{"gitId":"wapisai"},"content":" new PersonBuilder().withName(\"Udhaya\").build().getName());","lastModifiedDate":"2024-03-18"},{"lineNumber":145,"author":{"gitId":"wapisai"},"content":" assertTrue(deleteUdhayaCommand.equals(deleteUdhayaCommandCopy));","lastModifiedDate":"2024-03-18"},{"lineNumber":146,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":147,"author":{"gitId":"wapisai"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":148,"author":{"gitId":"wapisai"},"content":" assertFalse(deleteUdhayaCommand.equals(1));","lastModifiedDate":"2024-03-18"},{"lineNumber":149,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":150,"author":{"gitId":"wapisai"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":151,"author":{"gitId":"wapisai"},"content":" assertFalse(deleteUdhayaCommand.equals(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":152,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":153,"author":{"gitId":"wapisai"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":154,"author":{"gitId":"wapisai"},"content":" assertFalse(deleteUdhayaCommand.equals(deleteNotUdhayaCommand));","lastModifiedDate":"2024-03-18"},{"lineNumber":155,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":156,"author":{"gitId":"wapisai"},"content":" // delete udhaya should not delete someone with address udhaya","lastModifiedDate":"2024-03-18"},{"lineNumber":157,"author":{"gitId":"wapisai"},"content":" assertFalse(deleteUdhayaCommand.equals(deleteAddressCommand));","lastModifiedDate":"2024-03-18"},{"lineNumber":158,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":159,"author":{"gitId":"wapisai"},"content":" //delete Udhaya should not delete someone with name Udhaya Shanugam","lastModifiedDate":"2024-03-18"},{"lineNumber":160,"author":{"gitId":"wapisai"},"content":" assertFalse(deleteUdhayaCommand.equals(deleteUdhayaShanmugamCommand));","lastModifiedDate":"2024-03-18"},{"lineNumber":161,"author":{"gitId":"wapisai"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":162,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":163,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(targetIndex);","lastModifiedDate":"2019-02-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":" String expected \u003d DeleteCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":" assertEquals(expected, deleteCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":172,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05"},{"lineNumber":173,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":174,"author":{"gitId":"-"},"content":" private void showNoPerson(Model model) {","lastModifiedDate":"2017-06-05"},{"lineNumber":175,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2017-06-12"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":177,"author":{"gitId":"-"},"content":" assertTrue(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2018-02-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":179,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"UdhayaShan1":20,"-":101,"wapisai":58}},{"path":"src/test/java/seedu/realodex/logic/commands/EditCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.commands;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_TAG_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.TypicalPersons.getTypicalRealodex;","lastModifiedDate":"2024-03-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":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.index.Index;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.Messages;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.ModelManager;","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.Realodex;","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.UserPrefs;","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.testutil.PersonBuilder;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" private Model model \u003d new ModelManager(getTypicalRealodex(), new UserPrefs());","lastModifiedDate":"2024-03-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":"UdhayaShan1"},"content":" Model expectedModel \u003d new ModelManager(new Realodex(model.getRealodex()), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"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":"4llysa"},"content":" .withTags(VALID_TAG_AMY).build();","lastModifiedDate":"2024-03-15"},{"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":"4llysa"},"content":" .withPhone(VALID_PHONE_BOB).withTags(VALID_TAG_AMY).build();","lastModifiedDate":"2024-03-15"},{"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":"UdhayaShan1"},"content":" Model expectedModel \u003d new ModelManager(new Realodex(model.getRealodex()), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" Model expectedModel \u003d new ModelManager(new Realodex(model.getRealodex()), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" Model expectedModel \u003d new ModelManager(new Realodex(model.getRealodex()), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" // edit person in filtered list into a duplicate in realodex","lastModifiedDate":"2024-03-19"},{"lineNumber":116,"author":{"gitId":"UdhayaShan1"},"content":" Person personInList \u003d model.getRealodex().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2024-03-19"},{"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-04"},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18"},{"lineNumber":134,"author":{"gitId":"UdhayaShan1"},"content":" * but smaller than size of realodex","lastModifiedDate":"2024-03-19"},{"lineNumber":135,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18"},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":137,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":138,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":139,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18"},{"lineNumber":140,"author":{"gitId":"UdhayaShan1"},"content":" // ensures that outOfBoundIndex is still in bounds of realodex list","lastModifiedDate":"2024-03-19"},{"lineNumber":141,"author":{"gitId":"UdhayaShan1"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getRealodex().getPersonList().size());","lastModifiedDate":"2024-03-19"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":143,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":149,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":151,"author":{"gitId":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2018-08-08"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":153,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":154,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08"},{"lineNumber":155,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":156,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":158,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2017-05-25"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2017-05-25"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":174,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2019-02-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08"}],"authorContributionMap":{"4llysa":2,"UdhayaShan1":32,"-":150}},{"path":"src/test/java/seedu/realodex/logic/commands/EditPersonDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.commands;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_REMARK_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_TAG_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":17,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2017-05-05"},{"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 address -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_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":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":57,"author":{"gitId":"4llysa"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_AMY).build();","lastModifiedDate":"2024-03-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":59,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"UdhayaShan1"},"content":" //different remarks -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"UdhayaShan1"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withRemark(VALID_REMARK_BOB).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":" + editPersonDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"wapisai"},"content":" + editPersonDescriptor.getIncome().orElse(null) + \", income\u003d\"","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", address\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"wapisai"},"content":" + editPersonDescriptor.getFamily().orElse(null) + \", family\u003d\"","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getAddress().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":75,"author":{"gitId":"wapisai"},"content":" + editPersonDescriptor.getTags().orElse(null) + \", remark\u003d\"","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"wapisai"},"content":" + editPersonDescriptor.getRemark().orElse(null) + \"}\";","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"4llysa":1,"UdhayaShan1":14,"-":60,"wapisai":4}},{"path":"src/test/java/seedu/realodex/logic/commands/ExitCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":3,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.ExitCommand.MESSAGE_EXIT_ACKNOWLEDGEMENT;","lastModifiedDate":"2024-03-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":"UdhayaShan1"},"content":"import seedu.realodex.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.ModelManager;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class ExitCommandTest {","lastModifiedDate":"2017-06-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-12-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public void execute_exit_success() {","lastModifiedDate":"2017-06-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, false, true);","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ExitCommand(), model, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08"}],"authorContributionMap":{"UdhayaShan1":5,"-":15}},{"path":"src/test/java/seedu/realodex/logic/commands/FilterCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.commands;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.logic.Messages.MESSAGE_PERSONS_LISTED_OVERVIEW;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.TypicalPersons.DANIEL;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.TypicalPersons.ELLE;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.TypicalPersons.getTypicalRealodex;","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.ModelManager;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.UserPrefs;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.NameContainsKeyphrasePredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"jyztintan"},"content":" * Contains integration tests (interaction with the Model) for {@code FilterCommand}.","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"jyztintan"},"content":"public class FilterCommandTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"UdhayaShan1"},"content":" private Model model \u003d new ModelManager(getTypicalRealodex(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"UdhayaShan1"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalRealodex(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-27"},{"lineNumber":31,"author":{"gitId":"jyztintan"},"content":" NameContainsKeyphrasePredicate firstPredicate \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"jyztintan"},"content":" new NameContainsKeyphrasePredicate(\"first\");","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"jyztintan"},"content":" NameContainsKeyphrasePredicate secondPredicate \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"jyztintan"},"content":" new NameContainsKeyphrasePredicate(\"second\");","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":36,"author":{"gitId":"jyztintan"},"content":" FilterCommand filterFirstCommand \u003d new FilterCommand(firstPredicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"jyztintan"},"content":" FilterCommand filterSecondCommand \u003d new FilterCommand(secondPredicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"jyztintan"},"content":" assertTrue(filterFirstCommand.equals(filterFirstCommand));","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"jyztintan"},"content":" FilterCommand filterFirstCommandCopy \u003d new FilterCommand(firstPredicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"jyztintan"},"content":" assertTrue(filterFirstCommand.equals(filterFirstCommandCopy));","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"jyztintan"},"content":" assertFalse(filterFirstCommand.equals(1));","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"jyztintan"},"content":" assertFalse(filterFirstCommand.equals(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"jyztintan"},"content":" assertFalse(filterFirstCommand.equals(filterSecondCommand));","lastModifiedDate":"2024-03-16"},{"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-12"},{"lineNumber":57,"author":{"gitId":"jyztintan"},"content":" public void execute_invalidKeyphrase_noPersonFound() {","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2017-06-12"},{"lineNumber":59,"author":{"gitId":"jyztintan"},"content":" NameContainsKeyphrasePredicate predicate \u003d preparePredicate(\"yapyapyap\");","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"jyztintan"},"content":" FilterCommand command \u003d new FilterCommand(predicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":67,"author":{"gitId":"jyztintan"},"content":" public void execute_oneKeyphrase_multiplePersonsFound() {","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"jyztintan"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 2);","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"jyztintan"},"content":" NameContainsKeyphrasePredicate predicate \u003d preparePredicate(\"El\");","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"jyztintan"},"content":" FilterCommand command \u003d new FilterCommand(predicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":73,"author":{"gitId":"jyztintan"},"content":" assertEquals(Arrays.asList(DANIEL, ELLE), model.getFilteredPersonList());","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"jyztintan"},"content":" NameContainsKeyphrasePredicate predicate \u003d new NameContainsKeyphrasePredicate(\"keyphrase\");","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"jyztintan"},"content":" FilterCommand filterCommand \u003d new FilterCommand(predicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"jyztintan"},"content":" String expected \u003d FilterCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"jyztintan"},"content":" assertEquals(expected, filterCommand.toString());","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12"},{"lineNumber":85,"author":{"gitId":"jyztintan"},"content":" * Parses {@code userInput} into a {@code NameContainsKeyphrasePredicate}.","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":87,"author":{"gitId":"jyztintan"},"content":" private NameContainsKeyphrasePredicate preparePredicate(String userInput) {","lastModifiedDate":"2024-03-16"},{"lineNumber":88,"author":{"gitId":"jyztintan"},"content":" return new NameContainsKeyphrasePredicate(userInput);","lastModifiedDate":"2024-03-16"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":90,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"jyztintan":29,"UdhayaShan1":12,"-":49}},{"path":"src/test/java/seedu/realodex/logic/commands/HelpCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":3,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.HelpCommand.SHOWING_HELP_MESSAGE;","lastModifiedDate":"2024-03-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":"UdhayaShan1"},"content":"import seedu.realodex.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.ModelManager;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class HelpCommandTest {","lastModifiedDate":"2017-06-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public void execute_help_success() {","lastModifiedDate":"2017-06-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(SHOWING_HELP_MESSAGE, true, false);","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":" assertCommandSuccess(new HelpCommand(), model, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08"}],"authorContributionMap":{"UdhayaShan1":5,"-":15}},{"path":"src/test/java/seedu/realodex/logic/commands/ListCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":3,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.TypicalPersons.getTypicalRealodex;","lastModifiedDate":"2024-03-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":"UdhayaShan1"},"content":"import seedu.realodex.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.ModelManager;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.UserPrefs;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" model \u003d new ModelManager(getTypicalRealodex(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"UdhayaShan1"},"content":" expectedModel \u003d new ModelManager(model.getRealodex(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":10,"-":29}},{"path":"src/test/java/seedu/realodex/logic/parser/AddCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.parser;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":3,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.FAMILY_DESC_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.FAMILY_DESC_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.INCOME_DESC_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.INCOME_DESC_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.INVALID_FAMILY_DESC;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.INVALID_INCOME_DESC;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.REMARK_DESC_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.REMARK_DESC_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.TAG_DESC_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.TAG_DESC_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_FAMILY_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_INCOME_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_TAG_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_TAG_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_FAMILY;","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_INCOME;","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.TypicalPersons.AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.TypicalPersons.BOB;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.logic.Messages;","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.AddCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.CommandTestUtil;","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Address;","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Email;","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Family;","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Income;","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.tag.Tag;","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.testutil.PersonBuilder;","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15"},{"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":"4llysa"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).build();","lastModifiedDate":"2024-03-15"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":72,"author":{"gitId":"UdhayaShan1"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2024-03-11"},{"lineNumber":73,"author":{"gitId":"UdhayaShan1"},"content":" PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + INCOME_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"appleraincoat"},"content":" + ADDRESS_DESC_BOB + FAMILY_DESC_BOB + TAG_DESC_BOB + REMARK_DESC_BOB,","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"appleraincoat"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":78,"author":{"gitId":"UdhayaShan1"},"content":" // two valid tags - all accepted","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"4llysa"},"content":" Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB).withTags(VALID_TAG_BOB, VALID_TAG_AMY)","lastModifiedDate":"2024-03-15"},{"lineNumber":80,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":82,"author":{"gitId":"UdhayaShan1"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + INCOME_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB + FAMILY_DESC_BOB","lastModifiedDate":"2024-03-11"},{"lineNumber":83,"author":{"gitId":"appleraincoat"},"content":" + TAG_DESC_BOB + TAG_DESC_AMY + REMARK_DESC_BOB,","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"-"},"content":" new AddCommand(expectedPersonMultipleTags));","lastModifiedDate":"2023-07-14"},{"lineNumber":85,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"UdhayaShan1"},"content":" // three valid tags - all accepted","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"UdhayaShan1"},"content":" expectedPersonMultipleTags \u003d new PersonBuilder(BOB).withTags(VALID_TAG_BOB, VALID_TAG_AMY)","lastModifiedDate":"2024-03-17"},{"lineNumber":88,"author":{"gitId":"UdhayaShan1"},"content":" .build();","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"UdhayaShan1"},"content":" assertParseSuccess(parser, NAME_DESC_BOB","lastModifiedDate":"2024-03-17"},{"lineNumber":90,"author":{"gitId":"UdhayaShan1"},"content":" + PHONE_DESC_BOB","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"UdhayaShan1"},"content":" + INCOME_DESC_BOB","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"UdhayaShan1"},"content":" + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"UdhayaShan1"},"content":" + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"UdhayaShan1"},"content":" + FAMILY_DESC_BOB","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"UdhayaShan1"},"content":" + TAG_DESC_BOB","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"UdhayaShan1"},"content":" + TAG_DESC_AMY","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"UdhayaShan1"},"content":" + TAG_DESC_BOB","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"UdhayaShan1"},"content":" + REMARK_DESC_BOB,","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"UdhayaShan1"},"content":" new AddCommand(expectedPersonMultipleTags));","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":104,"author":{"gitId":"UdhayaShan1"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + INCOME_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-11"},{"lineNumber":105,"author":{"gitId":"UdhayaShan1"},"content":" + ADDRESS_DESC_BOB + FAMILY_DESC_BOB + TAG_DESC_BOB + REMARK_DESC_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":107,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":109,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":111,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":115,"author":{"gitId":"UdhayaShan1"},"content":" //multiple incomes","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"UdhayaShan1"},"content":" assertParseFailure(parser, INCOME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"UdhayaShan1"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_INCOME));","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","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":" // multiple addresses","lastModifiedDate":"2023-07-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":127,"author":{"gitId":"UdhayaShan1"},"content":" // multiple family","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"UdhayaShan1"},"content":" assertParseFailure(parser, FAMILY_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-17"},{"lineNumber":129,"author":{"gitId":"UdhayaShan1"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_FAMILY));","lastModifiedDate":"2024-03-17"},{"lineNumber":130,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"UdhayaShan1"},"content":" //multiple remarks","lastModifiedDate":"2024-03-20"},{"lineNumber":132,"author":{"gitId":"UdhayaShan1"},"content":" assertParseFailure(parser, REMARK_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-20"},{"lineNumber":133,"author":{"gitId":"UdhayaShan1"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_REMARK));","lastModifiedDate":"2024-03-20"},{"lineNumber":134,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":135,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":137,"author":{"gitId":"UdhayaShan1"},"content":" validExpectedPersonString + PHONE_DESC_AMY + INCOME_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2024-03-11"},{"lineNumber":138,"author":{"gitId":"UdhayaShan1"},"content":" + NAME_DESC_AMY + ADDRESS_DESC_AMY + FAMILY_DESC_AMY + REMARK_DESC_AMY","lastModifiedDate":"2024-03-20"},{"lineNumber":139,"author":{"gitId":"-"},"content":" + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":140,"author":{"gitId":"UdhayaShan1"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_INCOME, PREFIX_ADDRESS, PREFIX_EMAIL,","lastModifiedDate":"2024-03-11"},{"lineNumber":141,"author":{"gitId":"UdhayaShan1"},"content":" PREFIX_PHONE, PREFIX_FAMILY, PREFIX_REMARK));","lastModifiedDate":"2024-03-20"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":143,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":145,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":147,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":149,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":150,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":151,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":153,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":154,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":155,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":157,"author":{"gitId":"UdhayaShan1"},"content":" // invalid income","lastModifiedDate":"2024-03-17"},{"lineNumber":158,"author":{"gitId":"UdhayaShan1"},"content":" assertParseFailure(parser, INVALID_INCOME_DESC + validExpectedPersonString,","lastModifiedDate":"2024-03-17"},{"lineNumber":159,"author":{"gitId":"UdhayaShan1"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_INCOME));","lastModifiedDate":"2024-03-17"},{"lineNumber":160,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":161,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":163,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":165,"author":{"gitId":"UdhayaShan1"},"content":" // invalid family","lastModifiedDate":"2024-03-17"},{"lineNumber":166,"author":{"gitId":"UdhayaShan1"},"content":" assertParseFailure(parser, INVALID_FAMILY_DESC + validExpectedPersonString,","lastModifiedDate":"2024-03-17"},{"lineNumber":167,"author":{"gitId":"UdhayaShan1"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_FAMILY));","lastModifiedDate":"2024-03-17"},{"lineNumber":168,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":169,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":171,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":172,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":173,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":175,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":176,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":177,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":179,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":180,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":181,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":183,"author":{"gitId":"UdhayaShan1"},"content":" // invalid income","lastModifiedDate":"2024-03-17"},{"lineNumber":184,"author":{"gitId":"UdhayaShan1"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_INCOME_DESC,","lastModifiedDate":"2024-03-17"},{"lineNumber":185,"author":{"gitId":"UdhayaShan1"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_INCOME));","lastModifiedDate":"2024-03-17"},{"lineNumber":186,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":187,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":188,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":189,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":190,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":191,"author":{"gitId":"UdhayaShan1"},"content":" // invalid family","lastModifiedDate":"2024-03-17"},{"lineNumber":192,"author":{"gitId":"UdhayaShan1"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_FAMILY_DESC,","lastModifiedDate":"2024-03-17"},{"lineNumber":193,"author":{"gitId":"UdhayaShan1"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_FAMILY));","lastModifiedDate":"2024-03-17"},{"lineNumber":194,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":196,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":197,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":198,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":200,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":201,"author":{"gitId":"UdhayaShan1"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-11"},{"lineNumber":202,"author":{"gitId":"UdhayaShan1"},"content":" VALID_NAME_BOB + PHONE_DESC_BOB + INCOME_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-11"},{"lineNumber":203,"author":{"gitId":"4llysa"},"content":" + ADDRESS_DESC_BOB + FAMILY_DESC_BOB + TAG_DESC_BOB,","lastModifiedDate":"2024-03-15"},{"lineNumber":204,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":206,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":207,"author":{"gitId":"UdhayaShan1"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-11"},{"lineNumber":208,"author":{"gitId":"UdhayaShan1"},"content":" NAME_DESC_BOB + VALID_PHONE_BOB + INCOME_DESC_BOB","lastModifiedDate":"2024-03-11"},{"lineNumber":209,"author":{"gitId":"4llysa"},"content":" + EMAIL_DESC_BOB + ADDRESS_DESC_BOB + FAMILY_DESC_BOB + TAG_DESC_BOB,","lastModifiedDate":"2024-03-15"},{"lineNumber":210,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":212,"author":{"gitId":"UdhayaShan1"},"content":" // missing income prefix","lastModifiedDate":"2024-03-17"},{"lineNumber":213,"author":{"gitId":"UdhayaShan1"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-17"},{"lineNumber":214,"author":{"gitId":"UdhayaShan1"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + VALID_INCOME_BOB","lastModifiedDate":"2024-03-17"},{"lineNumber":215,"author":{"gitId":"UdhayaShan1"},"content":" + EMAIL_DESC_BOB + ADDRESS_DESC_BOB + FAMILY_DESC_BOB + TAG_DESC_BOB,","lastModifiedDate":"2024-03-17"},{"lineNumber":216,"author":{"gitId":"UdhayaShan1"},"content":" expectedMessage);","lastModifiedDate":"2024-03-17"},{"lineNumber":217,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":218,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":219,"author":{"gitId":"UdhayaShan1"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-11"},{"lineNumber":220,"author":{"gitId":"UdhayaShan1"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + INCOME_DESC_BOB","lastModifiedDate":"2024-03-11"},{"lineNumber":221,"author":{"gitId":"4llysa"},"content":" + VALID_EMAIL_BOB + ADDRESS_DESC_BOB + FAMILY_DESC_BOB + TAG_DESC_BOB,","lastModifiedDate":"2024-03-15"},{"lineNumber":222,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":224,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":225,"author":{"gitId":"UdhayaShan1"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-11"},{"lineNumber":226,"author":{"gitId":"UdhayaShan1"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + INCOME_DESC_BOB","lastModifiedDate":"2024-03-11"},{"lineNumber":227,"author":{"gitId":"4llysa"},"content":" + EMAIL_DESC_BOB + VALID_ADDRESS_BOB + FAMILY_DESC_BOB + TAG_DESC_BOB,","lastModifiedDate":"2024-03-15"},{"lineNumber":228,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":230,"author":{"gitId":"UdhayaShan1"},"content":" // missing family prefix","lastModifiedDate":"2024-03-17"},{"lineNumber":231,"author":{"gitId":"4llysa"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-15"},{"lineNumber":232,"author":{"gitId":"UdhayaShan1"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + INCOME_DESC_BOB","lastModifiedDate":"2024-03-17"},{"lineNumber":233,"author":{"gitId":"UdhayaShan1"},"content":" + EMAIL_DESC_BOB + ADDRESS_DESC_BOB + VALID_FAMILY_BOB + TAG_DESC_BOB,","lastModifiedDate":"2024-03-17"},{"lineNumber":234,"author":{"gitId":"4llysa"},"content":" expectedMessage);","lastModifiedDate":"2024-03-15"},{"lineNumber":235,"author":{"gitId":"4llysa"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":236,"author":{"gitId":"4llysa"},"content":" // missing tag prefix","lastModifiedDate":"2024-03-15"},{"lineNumber":237,"author":{"gitId":"UdhayaShan1"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-11"},{"lineNumber":238,"author":{"gitId":"UdhayaShan1"},"content":" VALID_NAME_BOB + VALID_PHONE_BOB + INCOME_DESC_BOB","lastModifiedDate":"2024-03-11"},{"lineNumber":239,"author":{"gitId":"UdhayaShan1"},"content":" + VALID_EMAIL_BOB + VALID_ADDRESS_BOB + FAMILY_DESC_BOB,","lastModifiedDate":"2024-03-11"},{"lineNumber":240,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":241,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":242,"author":{"gitId":"UdhayaShan1"},"content":" // all prefixes missing","lastModifiedDate":"2024-03-17"},{"lineNumber":243,"author":{"gitId":"UdhayaShan1"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-17"},{"lineNumber":244,"author":{"gitId":"UdhayaShan1"},"content":" VALID_NAME_BOB + VALID_PHONE_BOB + INCOME_DESC_BOB","lastModifiedDate":"2024-03-17"},{"lineNumber":245,"author":{"gitId":"UdhayaShan1"},"content":" + VALID_EMAIL_BOB + VALID_ADDRESS_BOB + FAMILY_DESC_BOB + VALID_TAG_BOB,","lastModifiedDate":"2024-03-17"},{"lineNumber":246,"author":{"gitId":"UdhayaShan1"},"content":" expectedMessage);","lastModifiedDate":"2024-03-17"},{"lineNumber":247,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":249,"author":{"gitId":"UdhayaShan1"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":250,"author":{"gitId":"UdhayaShan1"},"content":" public void parse_optionalFieldMissing_success() {","lastModifiedDate":"2024-03-20"},{"lineNumber":251,"author":{"gitId":"UdhayaShan1"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withRemark(\"\").build();","lastModifiedDate":"2024-03-20"},{"lineNumber":252,"author":{"gitId":"UdhayaShan1"},"content":" assertParseSuccess(parser, NAME_DESC_BOB","lastModifiedDate":"2024-03-20"},{"lineNumber":253,"author":{"gitId":"UdhayaShan1"},"content":" + PHONE_DESC_BOB","lastModifiedDate":"2024-03-20"},{"lineNumber":254,"author":{"gitId":"UdhayaShan1"},"content":" + INCOME_DESC_BOB","lastModifiedDate":"2024-03-20"},{"lineNumber":255,"author":{"gitId":"UdhayaShan1"},"content":" + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-20"},{"lineNumber":256,"author":{"gitId":"UdhayaShan1"},"content":" + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-20"},{"lineNumber":257,"author":{"gitId":"UdhayaShan1"},"content":" + FAMILY_DESC_BOB","lastModifiedDate":"2024-03-20"},{"lineNumber":258,"author":{"gitId":"UdhayaShan1"},"content":" + TAG_DESC_BOB, new AddCommand(expectedPerson));","lastModifiedDate":"2024-03-20"},{"lineNumber":259,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":260,"author":{"gitId":"UdhayaShan1"},"content":" expectedPerson \u003d new PersonBuilder(AMY).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":261,"author":{"gitId":"UdhayaShan1"},"content":" assertParseSuccess(parser, NAME_DESC_AMY","lastModifiedDate":"2024-03-20"},{"lineNumber":262,"author":{"gitId":"UdhayaShan1"},"content":" + PHONE_DESC_AMY","lastModifiedDate":"2024-03-20"},{"lineNumber":263,"author":{"gitId":"UdhayaShan1"},"content":" + INCOME_DESC_AMY","lastModifiedDate":"2024-03-20"},{"lineNumber":264,"author":{"gitId":"UdhayaShan1"},"content":" + EMAIL_DESC_AMY","lastModifiedDate":"2024-03-20"},{"lineNumber":265,"author":{"gitId":"UdhayaShan1"},"content":" + ADDRESS_DESC_AMY","lastModifiedDate":"2024-03-20"},{"lineNumber":266,"author":{"gitId":"UdhayaShan1"},"content":" + FAMILY_DESC_AMY","lastModifiedDate":"2024-03-20"},{"lineNumber":267,"author":{"gitId":"UdhayaShan1"},"content":" + TAG_DESC_AMY, new AddCommand(expectedPerson));","lastModifiedDate":"2024-03-20"},{"lineNumber":268,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":269,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":270,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":271,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":272,"author":{"gitId":"4llysa"},"content":" System.out.println(INVALID_NAME_DESC + PHONE_DESC_BOB + INCOME_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-15"},{"lineNumber":273,"author":{"gitId":"4llysa"},"content":" + ADDRESS_DESC_BOB + FAMILY_DESC_BOB + TAG_DESC_BOB","lastModifiedDate":"2024-03-15"},{"lineNumber":274,"author":{"gitId":"4llysa"},"content":" + CommandTestUtil.TAG_DESC_BOB);","lastModifiedDate":"2024-03-15"},{"lineNumber":275,"author":{"gitId":"4llysa"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":276,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":277,"author":{"gitId":"UdhayaShan1"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-11"},{"lineNumber":278,"author":{"gitId":"UdhayaShan1"},"content":" INVALID_NAME_DESC + PHONE_DESC_BOB + INCOME_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-11"},{"lineNumber":279,"author":{"gitId":"4llysa"},"content":" + ADDRESS_DESC_BOB + FAMILY_DESC_BOB + TAG_DESC_BOB, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":281,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15"},{"lineNumber":282,"author":{"gitId":"UdhayaShan1"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-11"},{"lineNumber":283,"author":{"gitId":"UdhayaShan1"},"content":" NAME_DESC_BOB + INVALID_PHONE_DESC + INCOME_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-11"},{"lineNumber":284,"author":{"gitId":"UdhayaShan1"},"content":" + ADDRESS_DESC_BOB + FAMILY_DESC_BOB","lastModifiedDate":"2024-03-11"},{"lineNumber":285,"author":{"gitId":"4llysa"},"content":" + TAG_DESC_BOB, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":286,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":287,"author":{"gitId":"UdhayaShan1"},"content":" // invalid income","lastModifiedDate":"2024-03-17"},{"lineNumber":288,"author":{"gitId":"UdhayaShan1"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-17"},{"lineNumber":289,"author":{"gitId":"UdhayaShan1"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_INCOME_DESC + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-17"},{"lineNumber":290,"author":{"gitId":"UdhayaShan1"},"content":" + ADDRESS_DESC_BOB + FAMILY_DESC_BOB","lastModifiedDate":"2024-03-17"},{"lineNumber":291,"author":{"gitId":"UdhayaShan1"},"content":" + TAG_DESC_BOB, Income.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":292,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":293,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15"},{"lineNumber":294,"author":{"gitId":"UdhayaShan1"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-11"},{"lineNumber":295,"author":{"gitId":"UdhayaShan1"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB","lastModifiedDate":"2024-03-11"},{"lineNumber":296,"author":{"gitId":"UdhayaShan1"},"content":" + INCOME_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB + FAMILY_DESC_BOB","lastModifiedDate":"2024-03-11"},{"lineNumber":297,"author":{"gitId":"4llysa"},"content":" + CommandTestUtil.TAG_DESC_BOB + TAG_DESC_BOB, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":298,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":299,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15"},{"lineNumber":300,"author":{"gitId":"UdhayaShan1"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-11"},{"lineNumber":301,"author":{"gitId":"UdhayaShan1"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + INCOME_DESC_BOB","lastModifiedDate":"2024-03-11"},{"lineNumber":302,"author":{"gitId":"UdhayaShan1"},"content":" + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC + FAMILY_DESC_BOB","lastModifiedDate":"2024-03-11"},{"lineNumber":303,"author":{"gitId":"4llysa"},"content":" + CommandTestUtil.TAG_DESC_BOB + TAG_DESC_BOB, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":304,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":305,"author":{"gitId":"UdhayaShan1"},"content":" // invalid family","lastModifiedDate":"2024-03-17"},{"lineNumber":306,"author":{"gitId":"UdhayaShan1"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-17"},{"lineNumber":307,"author":{"gitId":"UdhayaShan1"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + INCOME_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-17"},{"lineNumber":308,"author":{"gitId":"UdhayaShan1"},"content":" + ADDRESS_DESC_BOB + INVALID_FAMILY_DESC","lastModifiedDate":"2024-03-17"},{"lineNumber":309,"author":{"gitId":"UdhayaShan1"},"content":" + TAG_DESC_BOB, Family.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":310,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":311,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15"},{"lineNumber":312,"author":{"gitId":"UdhayaShan1"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-11"},{"lineNumber":313,"author":{"gitId":"UdhayaShan1"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + INCOME_DESC_BOB","lastModifiedDate":"2024-03-11"},{"lineNumber":314,"author":{"gitId":"UdhayaShan1"},"content":" + EMAIL_DESC_BOB + ADDRESS_DESC_BOB + FAMILY_DESC_BOB","lastModifiedDate":"2024-03-11"},{"lineNumber":315,"author":{"gitId":"UdhayaShan1"},"content":" + INVALID_TAG_DESC + TAG_DESC_BOB, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":316,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":317,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":318,"author":{"gitId":"UdhayaShan1"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-11"},{"lineNumber":319,"author":{"gitId":"UdhayaShan1"},"content":" INVALID_NAME_DESC + PHONE_DESC_BOB + INCOME_DESC_BOB","lastModifiedDate":"2024-03-11"},{"lineNumber":320,"author":{"gitId":"UdhayaShan1"},"content":" + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC + FAMILY_DESC_BOB + TAG_DESC_BOB,","lastModifiedDate":"2024-03-17"},{"lineNumber":321,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":322,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":323,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":324,"author":{"gitId":"UdhayaShan1"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-11"},{"lineNumber":325,"author":{"gitId":"UdhayaShan1"},"content":" PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + INCOME_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-11"},{"lineNumber":326,"author":{"gitId":"4llysa"},"content":" + ADDRESS_DESC_BOB + FAMILY_DESC_BOB + CommandTestUtil.TAG_DESC_BOB + TAG_DESC_BOB,","lastModifiedDate":"2024-03-15"},{"lineNumber":327,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23"},{"lineNumber":328,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":329,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"4llysa":19,"UdhayaShan1":190,"-":117,"appleraincoat":3}},{"path":"src/test/java/seedu/realodex/logic/parser/ArgumentTokenizerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.parser;","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":1,"-":149}},{"path":"src/test/java/seedu/realodex/logic/parser/CommandParserTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.parser;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.Command;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2017-07-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, pe.getMessage());","lastModifiedDate":"2017-07-06"},{"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":{"UdhayaShan1":3,"-":36}},{"path":"src/test/java/seedu/realodex/logic/parser/DeleteCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.parser;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":3,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Name;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * As we are only doing white-box testing, our test cases do not cover path variations","lastModifiedDate":"2017-06-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * outside of the DeleteCommand code. For example, inputs \"1\" and \"1 abc\" take the","lastModifiedDate":"2017-06-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * same path through the DeleteCommand, and therefore we test only one of them.","lastModifiedDate":"2017-06-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * The path variation for those two cases occur inside the ParserUtil, and","lastModifiedDate":"2017-06-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * therefore should be covered by the ParserUtilTest.","lastModifiedDate":"2017-06-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class DeleteCommandParserTest {","lastModifiedDate":"2017-06-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private DeleteCommandParser parser \u003d new DeleteCommandParser();","lastModifiedDate":"2017-06-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09"},{"lineNumber":27,"author":{"gitId":"UdhayaShan1"},"content":" public void parse_validIndex_returnsDeleteCommand() {","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, \"1\", new DeleteCommand(INDEX_FIRST_PERSON));","lastModifiedDate":"2017-07-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":31,"author":{"gitId":"UdhayaShan1"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"UdhayaShan1"},"content":" public void parse_validName_returnsDeleteCommand() {","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"UdhayaShan1"},"content":" assertParseSuccess(parser, \" n/James\", new DeleteCommand(new Name(\"James\")));","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"UdhayaShan1"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"UdhayaShan1"},"content":" public void parse_invalidName_throwParseException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"UdhayaShan1"},"content":" assertThrows(ParseException.class, Name.MESSAGE_CONSTRAINTS, () -\u003e parser.parse(\" n/peter*\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"UdhayaShan1"},"content":" assertThrows(ParseException.class, Name.MESSAGE_CONSTRAINTS, () -\u003e parser.parse(\" n/ \"));","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"UdhayaShan1"},"content":" assertThrows(ParseException.class, Name.MESSAGE_CONSTRAINTS, () -\u003e parser.parse(\" n/^\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":45,"author":{"gitId":"wapisai"},"content":" assertParseFailure(parser, \"a\", String.format(MESSAGE_INVALID_INDEX, DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09"}],"authorContributionMap":{"UdhayaShan1":22,"-":24,"wapisai":1}},{"path":"src/test/java/seedu/realodex/logic/parser/EditCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.parser;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":3,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.FAMILY_DESC_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.FAMILY_DESC_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.INCOME_DESC_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.INVALID_FAMILY_DESC;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.INVALID_INCOME_DESC;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"appleraincoat"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.REMARK_DESC_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.REMARK_DESC_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.TAG_DESC_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.TAG_DESC_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_FAMILY_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_FAMILY_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_INCOME_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"appleraincoat"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_REMARK_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_REMARK_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_TAG_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_TAG_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_FAMILY;","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_INCOME;","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.index.Index;","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.Messages;","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.CommandTestUtil;","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.EditCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Address;","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Email;","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Family;","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Income;","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.tag.Tag;","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":66,"author":{"gitId":"4llysa"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":67,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":69,"author":{"gitId":"-"},"content":" private static final String TAG_EMPTY \u003d \" \" + PREFIX_TAG;","lastModifiedDate":"2017-05-04"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":71,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04"},{"lineNumber":72,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":74,"author":{"gitId":"UdhayaShan1"},"content":" private final EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":78,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":81,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-07-06"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":84,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"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_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06"},{"lineNumber":90,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":93,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":96,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2018-09-22"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2018-09-22"},{"lineNumber":104,"author":{"gitId":"wapisai"},"content":" assertParseFailure(parser, \"1\" + INVALID_INCOME_DESC, Income.MESSAGE_CONSTRAINTS); // invalid income","lastModifiedDate":"2024-03-16"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2018-09-22"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_ADDRESS_DESC, Address.MESSAGE_CONSTRAINTS); // invalid address","lastModifiedDate":"2018-09-22"},{"lineNumber":107,"author":{"gitId":"wapisai"},"content":" assertParseFailure(parser, \"1\" + INVALID_FAMILY_DESC, Family.MESSAGE_CONSTRAINTS); // invalid family","lastModifiedDate":"2024-03-16"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2018-09-22"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":110,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":113,"author":{"gitId":"-"},"content":" // while parsing {@code PREFIX_TAG} alone will reset the tags of the {@code Person} being edited,","lastModifiedDate":"2017-05-04"},{"lineNumber":114,"author":{"gitId":"-"},"content":" // parsing it together with a valid tag results in error","lastModifiedDate":"2017-05-04"},{"lineNumber":115,"author":{"gitId":"4llysa"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_BOB","lastModifiedDate":"2024-03-15"},{"lineNumber":116,"author":{"gitId":"4llysa"},"content":" + CommandTestUtil.TAG_DESC_BOB + TAG_EMPTY, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":117,"author":{"gitId":"4llysa"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_BOB + TAG_EMPTY","lastModifiedDate":"2024-03-15"},{"lineNumber":118,"author":{"gitId":"4llysa"},"content":" + CommandTestUtil.TAG_DESC_BOB, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":119,"author":{"gitId":"4llysa"},"content":" assertParseFailure(parser, \"1\" + TAG_EMPTY + TAG_DESC_BOB","lastModifiedDate":"2024-03-15"},{"lineNumber":120,"author":{"gitId":"4llysa"},"content":" + CommandTestUtil.TAG_DESC_BOB, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":122,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04"},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_ADDRESS_AMY + VALID_PHONE_AMY,","lastModifiedDate":"2017-07-06"},{"lineNumber":124,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":128,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":129,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":130,"author":{"gitId":"UdhayaShan1"},"content":" String userInput \u003d targetIndex.getOneBased()","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"UdhayaShan1"},"content":" + PHONE_DESC_BOB","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"UdhayaShan1"},"content":" + CommandTestUtil.TAG_DESC_BOB","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"UdhayaShan1"},"content":" + INCOME_DESC_AMY","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"UdhayaShan1"},"content":" + EMAIL_DESC_AMY","lastModifiedDate":"2024-03-17"},{"lineNumber":135,"author":{"gitId":"UdhayaShan1"},"content":" + ADDRESS_DESC_AMY","lastModifiedDate":"2024-03-17"},{"lineNumber":136,"author":{"gitId":"UdhayaShan1"},"content":" + NAME_DESC_AMY","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"UdhayaShan1"},"content":" + FAMILY_DESC_BOB","lastModifiedDate":"2024-03-17"},{"lineNumber":138,"author":{"gitId":"UdhayaShan1"},"content":" + TAG_DESC_BOB","lastModifiedDate":"2024-03-20"},{"lineNumber":139,"author":{"gitId":"UdhayaShan1"},"content":" + REMARK_DESC_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":140,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":141,"author":{"gitId":"UdhayaShan1"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder()","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"UdhayaShan1"},"content":" .withName(VALID_NAME_AMY)","lastModifiedDate":"2024-03-17"},{"lineNumber":143,"author":{"gitId":"UdhayaShan1"},"content":" .withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-17"},{"lineNumber":144,"author":{"gitId":"UdhayaShan1"},"content":" .withIncome(VALID_INCOME_AMY)","lastModifiedDate":"2024-03-17"},{"lineNumber":145,"author":{"gitId":"UdhayaShan1"},"content":" .withEmail(VALID_EMAIL_AMY)","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"UdhayaShan1"},"content":" .withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2024-03-17"},{"lineNumber":147,"author":{"gitId":"UdhayaShan1"},"content":" .withFamily(VALID_FAMILY_BOB)","lastModifiedDate":"2024-03-17"},{"lineNumber":148,"author":{"gitId":"UdhayaShan1"},"content":" .withTags(VALID_TAG_BOB)","lastModifiedDate":"2024-03-20"},{"lineNumber":149,"author":{"gitId":"UdhayaShan1"},"content":" .withRemark(VALID_REMARK_BOB)","lastModifiedDate":"2024-03-20"},{"lineNumber":150,"author":{"gitId":"UdhayaShan1"},"content":" .build();","lastModifiedDate":"2024-03-20"},{"lineNumber":151,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":153,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":158,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":159,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":161,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-04"},{"lineNumber":162,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":163,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"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":"","lastModifiedDate":"2017-05-04"},{"lineNumber":168,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":169,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":170,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04"},{"lineNumber":171,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":172,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":173,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":174,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"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":"-"},"content":" // phone","lastModifiedDate":"2017-05-04"},{"lineNumber":178,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":179,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":180,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":181,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":183,"author":{"gitId":"UdhayaShan1"},"content":" // income","lastModifiedDate":"2024-03-17"},{"lineNumber":184,"author":{"gitId":"UdhayaShan1"},"content":" userInput \u003d targetIndex.getOneBased() + INCOME_DESC_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":185,"author":{"gitId":"UdhayaShan1"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withIncome(VALID_INCOME_AMY).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":186,"author":{"gitId":"UdhayaShan1"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":187,"author":{"gitId":"UdhayaShan1"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-17"},{"lineNumber":188,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":189,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04"},{"lineNumber":190,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":191,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":192,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":193,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":195,"author":{"gitId":"-"},"content":" // address","lastModifiedDate":"2017-05-04"},{"lineNumber":196,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + ADDRESS_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":197,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":198,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":199,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":201,"author":{"gitId":"UdhayaShan1"},"content":" // family","lastModifiedDate":"2024-03-17"},{"lineNumber":202,"author":{"gitId":"UdhayaShan1"},"content":" userInput \u003d targetIndex.getOneBased() + FAMILY_DESC_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":203,"author":{"gitId":"UdhayaShan1"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withFamily(VALID_FAMILY_AMY).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":204,"author":{"gitId":"UdhayaShan1"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":205,"author":{"gitId":"UdhayaShan1"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-17"},{"lineNumber":206,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":207,"author":{"gitId":"UdhayaShan1"},"content":" // 1 tag","lastModifiedDate":"2024-03-17"},{"lineNumber":208,"author":{"gitId":"4llysa"},"content":" userInput \u003d targetIndex.getOneBased() + TAG_DESC_BOB;","lastModifiedDate":"2024-03-15"},{"lineNumber":209,"author":{"gitId":"4llysa"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withTags(VALID_TAG_BOB).build();","lastModifiedDate":"2024-03-15"},{"lineNumber":210,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":211,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":212,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":213,"author":{"gitId":"wapisai"},"content":" // remark","lastModifiedDate":"2024-03-19"},{"lineNumber":214,"author":{"gitId":"wapisai"},"content":" userInput \u003d targetIndex.getOneBased() + REMARK_DESC_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":215,"author":{"gitId":"wapisai"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withRemark(VALID_REMARK_AMY).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":216,"author":{"gitId":"UdhayaShan1"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":217,"author":{"gitId":"UdhayaShan1"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-20"},{"lineNumber":218,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":219,"author":{"gitId":"UdhayaShan1"},"content":" // 2 tags","lastModifiedDate":"2024-03-17"},{"lineNumber":220,"author":{"gitId":"UdhayaShan1"},"content":" userInput \u003d targetIndex.getOneBased() + TAG_DESC_BOB + TAG_DESC_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":221,"author":{"gitId":"UdhayaShan1"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withTags(VALID_TAG_BOB, VALID_TAG_AMY).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":222,"author":{"gitId":"wapisai"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":223,"author":{"gitId":"wapisai"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-19"},{"lineNumber":224,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":226,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":227,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":228,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14"},{"lineNumber":229,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-07-14"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":231,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14"},{"lineNumber":232,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":233,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2023-07-14"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":235,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":237,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14"},{"lineNumber":238,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2023-07-14"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":240,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":242,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":243,"author":{"gitId":"wapisai"},"content":" // multiple valid fields repeated","lastModifiedDate":"2024-03-19"},{"lineNumber":244,"author":{"gitId":"UdhayaShan1"},"content":" userInput \u003d","lastModifiedDate":"2024-03-17"},{"lineNumber":245,"author":{"gitId":"UdhayaShan1"},"content":" targetIndex.getOneBased()","lastModifiedDate":"2024-03-17"},{"lineNumber":246,"author":{"gitId":"UdhayaShan1"},"content":" + PHONE_DESC_AMY","lastModifiedDate":"2024-03-17"},{"lineNumber":247,"author":{"gitId":"UdhayaShan1"},"content":" + INCOME_DESC_AMY","lastModifiedDate":"2024-03-17"},{"lineNumber":248,"author":{"gitId":"UdhayaShan1"},"content":" + INCOME_DESC_AMY","lastModifiedDate":"2024-03-17"},{"lineNumber":249,"author":{"gitId":"UdhayaShan1"},"content":" + ADDRESS_DESC_AMY","lastModifiedDate":"2024-03-17"},{"lineNumber":250,"author":{"gitId":"UdhayaShan1"},"content":" + EMAIL_DESC_AMY","lastModifiedDate":"2024-03-17"},{"lineNumber":251,"author":{"gitId":"UdhayaShan1"},"content":" + FAMILY_DESC_AMY","lastModifiedDate":"2024-03-17"},{"lineNumber":252,"author":{"gitId":"UdhayaShan1"},"content":" + FAMILY_DESC_AMY","lastModifiedDate":"2024-03-17"},{"lineNumber":253,"author":{"gitId":"UdhayaShan1"},"content":" + TAG_DESC_BOB","lastModifiedDate":"2024-03-17"},{"lineNumber":254,"author":{"gitId":"UdhayaShan1"},"content":" + PHONE_DESC_AMY","lastModifiedDate":"2024-03-17"},{"lineNumber":255,"author":{"gitId":"UdhayaShan1"},"content":" + ADDRESS_DESC_AMY","lastModifiedDate":"2024-03-17"},{"lineNumber":256,"author":{"gitId":"UdhayaShan1"},"content":" + EMAIL_DESC_AMY","lastModifiedDate":"2024-03-17"},{"lineNumber":257,"author":{"gitId":"UdhayaShan1"},"content":" + TAG_DESC_BOB","lastModifiedDate":"2024-03-17"},{"lineNumber":258,"author":{"gitId":"UdhayaShan1"},"content":" + PHONE_DESC_BOB","lastModifiedDate":"2024-03-17"},{"lineNumber":259,"author":{"gitId":"UdhayaShan1"},"content":" + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-17"},{"lineNumber":260,"author":{"gitId":"UdhayaShan1"},"content":" + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-17"},{"lineNumber":261,"author":{"gitId":"UdhayaShan1"},"content":" + REMARK_DESC_AMY","lastModifiedDate":"2024-03-20"},{"lineNumber":262,"author":{"gitId":"UdhayaShan1"},"content":" + REMARK_DESC_BOB","lastModifiedDate":"2024-03-20"},{"lineNumber":263,"author":{"gitId":"UdhayaShan1"},"content":" + CommandTestUtil.TAG_DESC_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":265,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":266,"author":{"gitId":"UdhayaShan1"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-03-17"},{"lineNumber":267,"author":{"gitId":"UdhayaShan1"},"content":" PREFIX_INCOME, PREFIX_FAMILY, PREFIX_REMARK));","lastModifiedDate":"2024-03-20"},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":269,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14"},{"lineNumber":270,"author":{"gitId":"UdhayaShan1"},"content":" userInput \u003d targetIndex.getOneBased()","lastModifiedDate":"2024-03-17"},{"lineNumber":271,"author":{"gitId":"UdhayaShan1"},"content":" + INVALID_PHONE_DESC","lastModifiedDate":"2024-03-17"},{"lineNumber":272,"author":{"gitId":"UdhayaShan1"},"content":" + INVALID_INCOME_DESC","lastModifiedDate":"2024-03-17"},{"lineNumber":273,"author":{"gitId":"UdhayaShan1"},"content":" + INVALID_FAMILY_DESC","lastModifiedDate":"2024-03-17"},{"lineNumber":274,"author":{"gitId":"UdhayaShan1"},"content":" + INVALID_ADDRESS_DESC","lastModifiedDate":"2024-03-17"},{"lineNumber":275,"author":{"gitId":"UdhayaShan1"},"content":" + INVALID_EMAIL_DESC","lastModifiedDate":"2024-03-17"},{"lineNumber":276,"author":{"gitId":"UdhayaShan1"},"content":" + INVALID_PHONE_DESC","lastModifiedDate":"2024-03-17"},{"lineNumber":277,"author":{"gitId":"UdhayaShan1"},"content":" + INVALID_ADDRESS_DESC","lastModifiedDate":"2024-03-17"},{"lineNumber":278,"author":{"gitId":"UdhayaShan1"},"content":" + INVALID_EMAIL_DESC","lastModifiedDate":"2024-03-17"},{"lineNumber":279,"author":{"gitId":"UdhayaShan1"},"content":" + INVALID_INCOME_DESC","lastModifiedDate":"2024-03-17"},{"lineNumber":280,"author":{"gitId":"UdhayaShan1"},"content":" + INVALID_FAMILY_DESC;","lastModifiedDate":"2024-03-17"},{"lineNumber":281,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":282,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":283,"author":{"gitId":"UdhayaShan1"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-03-17"},{"lineNumber":284,"author":{"gitId":"UdhayaShan1"},"content":" PREFIX_INCOME, PREFIX_FAMILY));","lastModifiedDate":"2024-03-17"},{"lineNumber":285,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":286,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":287,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":288,"author":{"gitId":"-"},"content":" public void parse_resetTags_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":289,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":290,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_EMPTY;","lastModifiedDate":"2017-05-25"},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":292,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withTags().build();","lastModifiedDate":"2017-05-04"},{"lineNumber":293,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":294,"author":{"gitId":"wapisai"},"content":" assertParseFailure(parser, userInput, String.format(Tag.MESSAGE_CONSTRAINTS, targetIndex.getOneBased()));","lastModifiedDate":"2024-03-19"},{"lineNumber":295,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":296,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04"}],"authorContributionMap":{"4llysa":9,"UdhayaShan1":133,"-":140,"appleraincoat":2,"wapisai":12}},{"path":"src/test/java/seedu/realodex/logic/parser/FilterCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.parser;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":3,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.FilterCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.NameContainsKeyphrasePredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":12,"author":{"gitId":"jyztintan"},"content":"public class FilterCommandParserTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":14,"author":{"gitId":"jyztintan"},"content":" private FilterCommandParser parser \u003d new FilterCommandParser();","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2017-06-27"},{"lineNumber":18,"author":{"gitId":"jyztintan"},"content":" assertParseFailure(parser, \" \", String.format(MESSAGE_INVALID_COMMAND_FORMAT, FilterCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":22,"author":{"gitId":"jyztintan"},"content":" public void parse_validArgs_returnsFilterCommand() {","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2017-06-27"},{"lineNumber":24,"author":{"gitId":"jyztintan"},"content":" FilterCommand expectedFilterCommand \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"jyztintan"},"content":" new FilterCommand(new NameContainsKeyphrasePredicate(\"Alice Bob\"));","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"jyztintan"},"content":" assertParseSuccess(parser, \"Alice Bob\", expectedFilterCommand);","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-27"}],"authorContributionMap":{"jyztintan":7,"UdhayaShan1":6,"-":16}},{"path":"src/test/java/seedu/realodex/logic/parser/ParserUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.parser;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Address;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Email;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Family;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Income;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.remark.Remark;","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.tag.Tag;","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2017-05-22"},{"lineNumber":29,"author":{"gitId":"UdhayaShan1"},"content":" private static final String INVALID_INCOME \u003d \"-1\";","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2017-05-22"},{"lineNumber":31,"author":{"gitId":"UdhayaShan1"},"content":" private static final String INVALID_FAMILY \u003d \"0\";","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":33,"author":{"gitId":"4llysa"},"content":" private static final String INVALID_TAG_1 \u003d \"#buyer\";","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"4llysa"},"content":" private static final String INVALID_TAG_2 \u003d \"friend\";","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d \"123456\";","lastModifiedDate":"2017-05-22"},{"lineNumber":38,"author":{"gitId":"UdhayaShan1"},"content":" private static final String VALID_INCOME \u003d \"10000\";","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d \"123 Main Street #0505\";","lastModifiedDate":"2017-05-22"},{"lineNumber":40,"author":{"gitId":"UdhayaShan1"},"content":" private static final String VALID_FAMILY \u003d \"4\";","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":42,"author":{"gitId":"4llysa"},"content":" private static final String VALID_TAG_1 \u003d \"buyer\";","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"4llysa"},"content":" private static final String VALID_TAG_2 \u003d \"seller\";","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":45,"author":{"gitId":"UdhayaShan1"},"content":" private static final String VALID_REMARK_ONE \u003d \"I am Denzel Washington\";","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"UdhayaShan1"},"content":" private static final String VALID_REMARK_TWO \u003d \"I am Al Pacino\";","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","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":"UdhayaShan1"},"content":" public void parseIndex_outOfRangeInputButPositive_throwsParseException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":61,"author":{"gitId":"UdhayaShan1"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"UdhayaShan1"},"content":" public void parseIndex_outOfRangeInputButNegative_throwsParseException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"UdhayaShan1"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"UdhayaShan1"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(-1)));","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2017-05-25"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2017-05-25"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":88,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":94,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29"},{"lineNumber":95,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void parsePhone_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePhone((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void parsePhone_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhone(INVALID_PHONE));","lastModifiedDate":"2019-03-14"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":111,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-22"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(VALID_PHONE));","lastModifiedDate":"2017-05-30"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithWhitespace_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":117,"author":{"gitId":"-"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":118,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-30"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(phoneWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":122,"author":{"gitId":"UdhayaShan1"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"UdhayaShan1"},"content":" public void parseIncome_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"UdhayaShan1"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseIncome((String) null));","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"UdhayaShan1"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"UdhayaShan1"},"content":" public void parseIncome_invalidValue_throwsParseException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":129,"author":{"gitId":"4llysa"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIncome(INVALID_INCOME));","lastModifiedDate":"2024-03-19"},{"lineNumber":130,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"UdhayaShan1"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"UdhayaShan1"},"content":" public void parseIncome_validValueWithoutWhitespace_returnsIncome() throws Exception {","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"UdhayaShan1"},"content":" Income expectedIncome \u003d new Income(VALID_INCOME);","lastModifiedDate":"2024-03-17"},{"lineNumber":135,"author":{"gitId":"UdhayaShan1"},"content":" assertEquals(expectedIncome, ParserUtil.parseIncome(VALID_INCOME));","lastModifiedDate":"2024-03-17"},{"lineNumber":136,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":138,"author":{"gitId":"UdhayaShan1"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":139,"author":{"gitId":"UdhayaShan1"},"content":" public void parseIncome_validValueWithWhitespace_returnsTrimmedIncome() throws Exception {","lastModifiedDate":"2024-03-17"},{"lineNumber":140,"author":{"gitId":"UdhayaShan1"},"content":" String incomeWithWhitespace \u003d WHITESPACE + VALID_INCOME + WHITESPACE;","lastModifiedDate":"2024-03-17"},{"lineNumber":141,"author":{"gitId":"UdhayaShan1"},"content":" Income expectedIncome \u003d new Income(VALID_INCOME);","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"UdhayaShan1"},"content":" assertEquals(expectedIncome, ParserUtil.parseIncome(incomeWithWhitespace));","lastModifiedDate":"2024-03-17"},{"lineNumber":143,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":145,"author":{"gitId":"-"},"content":" public void parseAddress_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseAddress((String) null));","lastModifiedDate":"2019-03-14"},{"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 parseAddress_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":151,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseAddress(INVALID_ADDRESS));","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 parseAddress_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":156,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-22"},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(VALID_ADDRESS));","lastModifiedDate":"2017-05-30"},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":160,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":161,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":162,"author":{"gitId":"-"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_ADDRESS + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":163,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-30"},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(addressWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":166,"author":{"gitId":"UdhayaShan1"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":167,"author":{"gitId":"UdhayaShan1"},"content":" public void parseFamily_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":168,"author":{"gitId":"UdhayaShan1"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseFamily((String) null));","lastModifiedDate":"2024-03-17"},{"lineNumber":169,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":170,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":171,"author":{"gitId":"UdhayaShan1"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":172,"author":{"gitId":"UdhayaShan1"},"content":" public void parseFamily_invalidValue_throwsParseException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":173,"author":{"gitId":"UdhayaShan1"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseFamily(INVALID_FAMILY));","lastModifiedDate":"2024-03-17"},{"lineNumber":174,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":175,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":176,"author":{"gitId":"UdhayaShan1"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":177,"author":{"gitId":"UdhayaShan1"},"content":" public void parseFamily_validValueWithoutWhitespace_returnsFamily() throws Exception {","lastModifiedDate":"2024-03-17"},{"lineNumber":178,"author":{"gitId":"UdhayaShan1"},"content":" Family expectedFamily \u003d new Family(VALID_FAMILY);","lastModifiedDate":"2024-03-17"},{"lineNumber":179,"author":{"gitId":"UdhayaShan1"},"content":" assertEquals(expectedFamily, ParserUtil.parseFamily(VALID_FAMILY));","lastModifiedDate":"2024-03-17"},{"lineNumber":180,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":181,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":182,"author":{"gitId":"UdhayaShan1"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":183,"author":{"gitId":"UdhayaShan1"},"content":" public void parseFamily_validValueWithWhitespace_returnsTrimmedFamily() throws Exception {","lastModifiedDate":"2024-03-17"},{"lineNumber":184,"author":{"gitId":"UdhayaShan1"},"content":" String familyWithWhitespace \u003d WHITESPACE + VALID_FAMILY + WHITESPACE;","lastModifiedDate":"2024-03-17"},{"lineNumber":185,"author":{"gitId":"UdhayaShan1"},"content":" Family expectedFamily \u003d new Family(VALID_FAMILY);","lastModifiedDate":"2024-03-17"},{"lineNumber":186,"author":{"gitId":"UdhayaShan1"},"content":" assertEquals(expectedFamily, ParserUtil.parseFamily(familyWithWhitespace));","lastModifiedDate":"2024-03-17"},{"lineNumber":187,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-17"},{"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 parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":191,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":194,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":195,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":196,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14"},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":199,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":200,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":201,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22"},{"lineNumber":202,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30"},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":205,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":206,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":207,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":208,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30"},{"lineNumber":209,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30"},{"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-30"},{"lineNumber":213,"author":{"gitId":"-"},"content":" public void parseTag_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":217,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":218,"author":{"gitId":"-"},"content":" public void parseTag_invalidValue_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":219,"author":{"gitId":"4llysa"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTag(INVALID_TAG_1));","lastModifiedDate":"2024-03-19"},{"lineNumber":220,"author":{"gitId":"4llysa"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTag(INVALID_TAG_2));","lastModifiedDate":"2024-03-19"},{"lineNumber":221,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":223,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":224,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithoutWhitespace_returnsTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":225,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30"},{"lineNumber":226,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(VALID_TAG_1));","lastModifiedDate":"2017-05-30"},{"lineNumber":227,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":229,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":230,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithWhitespace_returnsTrimmedTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":231,"author":{"gitId":"-"},"content":" String tagWithWhitespace \u003d WHITESPACE + VALID_TAG_1 + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":232,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30"},{"lineNumber":233,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(tagWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":234,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":236,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":237,"author":{"gitId":"-"},"content":" public void parseTags_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTags(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":241,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":242,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithInvalidTags_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":243,"author":{"gitId":"4llysa"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, INVALID_TAG_1)));","lastModifiedDate":"2024-03-19"},{"lineNumber":244,"author":{"gitId":"4llysa"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, INVALID_TAG_2)));","lastModifiedDate":"2024-03-19"},{"lineNumber":245,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":247,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":248,"author":{"gitId":"-"},"content":" public void parseTags_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2017-05-22"},{"lineNumber":249,"author":{"gitId":"-"},"content":" assertTrue(ParserUtil.parseTags(Collections.emptyList()).isEmpty());","lastModifiedDate":"2017-05-22"},{"lineNumber":250,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":252,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":253,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithValidTags_returnsTagSet() throws Exception {","lastModifiedDate":"2017-05-22"},{"lineNumber":254,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e actualTagSet \u003d ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, VALID_TAG_2));","lastModifiedDate":"2017-05-22"},{"lineNumber":255,"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":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":257,"author":{"gitId":"-"},"content":" assertEquals(expectedTagSet, actualTagSet);","lastModifiedDate":"2017-05-22"},{"lineNumber":258,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":259,"author":{"gitId":"4llysa"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":260,"author":{"gitId":"4llysa"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":261,"author":{"gitId":"4llysa"},"content":" public void parseTags_sinlgeDuplicateTags_ignoresDuplicates() throws Exception {","lastModifiedDate":"2024-03-19"},{"lineNumber":262,"author":{"gitId":"4llysa"},"content":" Set\u003cTag\u003e tagSetWithDuplicates \u003d ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, VALID_TAG_1));","lastModifiedDate":"2024-03-19"},{"lineNumber":263,"author":{"gitId":"4llysa"},"content":" Set\u003cTag\u003e expectedTagSet \u003d new HashSet\u003cTag\u003e(Arrays.asList(new Tag(VALID_TAG_1)));","lastModifiedDate":"2024-03-19"},{"lineNumber":264,"author":{"gitId":"4llysa"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":265,"author":{"gitId":"4llysa"},"content":" assertEquals(tagSetWithDuplicates, expectedTagSet);","lastModifiedDate":"2024-03-19"},{"lineNumber":266,"author":{"gitId":"4llysa"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":267,"author":{"gitId":"4llysa"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":268,"author":{"gitId":"4llysa"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":269,"author":{"gitId":"4llysa"},"content":" public void parseTags_multipleDuplicateTags_ignoresDuplicates() throws Exception {","lastModifiedDate":"2024-03-19"},{"lineNumber":270,"author":{"gitId":"4llysa"},"content":" Set\u003cTag\u003e tagSetWithMultipleDuplicates \u003d ParserUtil.parseTags(Arrays.asList(","lastModifiedDate":"2024-03-19"},{"lineNumber":271,"author":{"gitId":"4llysa"},"content":" VALID_TAG_1, VALID_TAG_2, VALID_TAG_1, VALID_TAG_2));","lastModifiedDate":"2024-03-19"},{"lineNumber":272,"author":{"gitId":"4llysa"},"content":" Set\u003cTag\u003e expectedTagSet \u003d new HashSet\u003cTag\u003e(Arrays.asList(new Tag(VALID_TAG_1), new Tag(VALID_TAG_2)));","lastModifiedDate":"2024-03-19"},{"lineNumber":273,"author":{"gitId":"4llysa"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":274,"author":{"gitId":"4llysa"},"content":" assertEquals(tagSetWithMultipleDuplicates, expectedTagSet);","lastModifiedDate":"2024-03-19"},{"lineNumber":275,"author":{"gitId":"4llysa"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":276,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":277,"author":{"gitId":"UdhayaShan1"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":278,"author":{"gitId":"UdhayaShan1"},"content":" public void parseRemark_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":279,"author":{"gitId":"UdhayaShan1"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseRemark((String) null));","lastModifiedDate":"2024-03-20"},{"lineNumber":280,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":281,"author":{"gitId":"UdhayaShan1"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":282,"author":{"gitId":"UdhayaShan1"},"content":" public void parseRemark_validValueWithoutWhitespace_returnsRemark() throws Exception {","lastModifiedDate":"2024-03-20"},{"lineNumber":283,"author":{"gitId":"UdhayaShan1"},"content":" Remark expectedRemark \u003d new Remark(VALID_REMARK_ONE);","lastModifiedDate":"2024-03-20"},{"lineNumber":284,"author":{"gitId":"UdhayaShan1"},"content":" assertEquals(expectedRemark, ParserUtil.parseRemark(VALID_REMARK_ONE));","lastModifiedDate":"2024-03-20"},{"lineNumber":285,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":286,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":287,"author":{"gitId":"UdhayaShan1"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":288,"author":{"gitId":"UdhayaShan1"},"content":" public void parseRemark_validValueWithWhitespace_returnsTrimmedRemark() throws Exception {","lastModifiedDate":"2024-03-20"},{"lineNumber":289,"author":{"gitId":"UdhayaShan1"},"content":" String remarkWithWhitespace \u003d WHITESPACE + VALID_REMARK_ONE + WHITESPACE;","lastModifiedDate":"2024-03-20"},{"lineNumber":290,"author":{"gitId":"UdhayaShan1"},"content":" Remark expectedRemark \u003d new Remark(VALID_REMARK_ONE);","lastModifiedDate":"2024-03-20"},{"lineNumber":291,"author":{"gitId":"UdhayaShan1"},"content":" assertEquals(expectedRemark, ParserUtil.parseRemark(remarkWithWhitespace));","lastModifiedDate":"2024-03-20"},{"lineNumber":292,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":293,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22"}],"authorContributionMap":{"4llysa":26,"UdhayaShan1":86,"-":181}},{"path":"src/test/java/seedu/realodex/logic/parser/RealodexParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.logic.parser;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":12,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.AddCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.ClearCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.EditCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.ExitCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.FilterCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.HelpCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.ListCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Name;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.NameContainsKeyphrasePredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.testutil.PersonBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.testutil.PersonUtil;","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":29,"author":{"gitId":"UdhayaShan1"},"content":"public class RealodexParserTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":31,"author":{"gitId":"UdhayaShan1"},"content":" private final RealodexParser parser \u003d new RealodexParser();","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"UdhayaShan1"},"content":" public void parseCommand_deleteByIndex() throws Exception {","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"UdhayaShan1"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"UdhayaShan1"},"content":" public void parseCommand_deleteByName() throws Exception {","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"UdhayaShan1"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"UdhayaShan1"},"content":" DeleteCommand.COMMAND_WORD + \" \" + \"n/James\");","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"UdhayaShan1"},"content":" assertEquals(new DeleteCommand(new Name(\"James\")), command);","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"UdhayaShan1"},"content":" command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"UdhayaShan1"},"content":" DeleteCommand.COMMAND_WORD + \" \" + \"n/ Denzel Untrimmed \");","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"UdhayaShan1"},"content":" assertEquals(new DeleteCommand(new Name(\"Denzel Untrimmed\")), command);","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-20"},{"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":"jyztintan"},"content":" public void parseCommand_filter() throws Exception {","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"jyztintan"},"content":" String keyphrase \u003d \"foo bar baz\";","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"jyztintan"},"content":" FilterCommand command \u003d (FilterCommand) parser.parseCommand(","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"jyztintan"},"content":" FilterCommand.COMMAND_WORD + \" \" + keyphrase);","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"jyztintan"},"content":" assertEquals(new FilterCommand(new NameContainsKeyphrasePredicate(keyphrase)), command);","lastModifiedDate":"2024-03-16"},{"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":{"jyztintan":5,"UdhayaShan1":35,"-":69}},{"path":"src/test/java/seedu/realodex/model/ModelManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.model;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2024-03-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":"","lastModifiedDate":"2017-05-31"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":16,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.GuiSettings;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.NameContainsKeyphrasePredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.testutil.RealodexBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class ModelManagerTest {","lastModifiedDate":"2017-05-31"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2018-08-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertEquals(new GuiSettings(), modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"UdhayaShan1"},"content":" assertEquals(new Realodex(), new Realodex(modelManager.getRealodex()));","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void setUserPrefs_nullUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setUserPrefs(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void setUserPrefs_validUserPrefs_copiesUserPrefs() {","lastModifiedDate":"2018-12-06"},{"lineNumber":38,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"UdhayaShan1"},"content":" userPrefs.setRealodexFilePath(Paths.get(\"address/book/file/path\"));","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1, 2, 3, 4));","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" modelManager.setUserPrefs(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // Modifying userPrefs should not modify modelManager\u0027s userPrefs","lastModifiedDate":"2018-12-06"},{"lineNumber":45,"author":{"gitId":"-"},"content":" UserPrefs oldUserPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":46,"author":{"gitId":"UdhayaShan1"},"content":" userPrefs.setRealodexFilePath(Paths.get(\"new/address/book/file/path\"));","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertEquals(oldUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setGuiSettings(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void setGuiSettings_validGuiSettings_setsGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1, 2, 3, 4);","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" modelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertEquals(guiSettings, modelManager.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":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"UdhayaShan1"},"content":" public void setRealodexFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"UdhayaShan1"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setRealodexFilePath(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"UdhayaShan1"},"content":" public void setRealodexFilePath_validPath_setsRealodexFilePath() {","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" Path path \u003d Paths.get(\"address/book/file/path\");","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"UdhayaShan1"},"content":" modelManager.setRealodexFilePath(path);","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"UdhayaShan1"},"content":" assertEquals(path, modelManager.getRealodexFilePath());","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasPerson(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":80,"author":{"gitId":"UdhayaShan1"},"content":" public void hasPerson_personNotInRealodex_returnsFalse() {","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertFalse(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":85,"author":{"gitId":"UdhayaShan1"},"content":" public void hasPerson_personInRealodex_returnsTrue() {","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" modelManager.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertTrue(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":97,"author":{"gitId":"UdhayaShan1"},"content":" Realodex realodex \u003d new RealodexBuilder().withPerson(ALICE).withPerson(BENSON).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"UdhayaShan1"},"content":" Realodex differentRealodex \u003d new Realodex();","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":101,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":102,"author":{"gitId":"UdhayaShan1"},"content":" modelManager \u003d new ModelManager(realodex, userPrefs);","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"UdhayaShan1"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(realodex, userPrefs);","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":106,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":109,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":112,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":115,"author":{"gitId":"UdhayaShan1"},"content":" // different realodex -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":116,"author":{"gitId":"UdhayaShan1"},"content":" assertFalse(modelManager.equals(new ModelManager(differentRealodex, userPrefs)));","lastModifiedDate":"2024-03-19"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":118,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":119,"author":{"gitId":"jyztintan"},"content":" String keyphrase \u003d ALICE.getName().fullName;","lastModifiedDate":"2024-03-16"},{"lineNumber":120,"author":{"gitId":"jyztintan"},"content":" modelManager.updateFilteredPersonList(new NameContainsKeyphrasePredicate(keyphrase));","lastModifiedDate":"2024-03-16"},{"lineNumber":121,"author":{"gitId":"UdhayaShan1"},"content":" assertFalse(modelManager.equals(new ModelManager(realodex, userPrefs)));","lastModifiedDate":"2024-03-19"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":123,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2017-08-05"},{"lineNumber":124,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":126,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27"},{"lineNumber":127,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":128,"author":{"gitId":"UdhayaShan1"},"content":" differentUserPrefs.setRealodexFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2024-03-19"},{"lineNumber":129,"author":{"gitId":"UdhayaShan1"},"content":" assertFalse(modelManager.equals(new ModelManager(realodex, differentUserPrefs)));","lastModifiedDate":"2024-03-19"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":131,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31"}],"authorContributionMap":{"jyztintan":2,"UdhayaShan1":27,"-":102}},{"path":"src/test/java/seedu/realodex/model/RealodexTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.model;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_TAG_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.TypicalPersons.getTypicalRealodex;","lastModifiedDate":"2024-03-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":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.testutil.PersonBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":25,"author":{"gitId":"UdhayaShan1"},"content":"public class RealodexTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":27,"author":{"gitId":"UdhayaShan1"},"content":" private final Realodex realodex \u003d new Realodex();","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" assertEquals(Collections.emptyList(), realodex.getPersonList());","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" assertThrows(NullPointerException.class, () -\u003e realodex.resetData(null));","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" public void resetData_withValidReadOnlyRealodex_replacesData() {","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"UdhayaShan1"},"content":" Realodex newData \u003d getTypicalRealodex();","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"UdhayaShan1"},"content":" realodex.resetData(newData);","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"UdhayaShan1"},"content":" assertEquals(newData, realodex);","lastModifiedDate":"2024-03-19"},{"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":"4llysa"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_AMY)","lastModifiedDate":"2024-03-15"},{"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":"UdhayaShan1"},"content":" RealodexStub newData \u003d new RealodexStub(newPersons);","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":54,"author":{"gitId":"UdhayaShan1"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e realodex.resetData(newData));","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" assertThrows(NullPointerException.class, () -\u003e realodex.hasPerson(null));","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" public void hasPerson_personNotInRealodex_returnsFalse() {","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"UdhayaShan1"},"content":" assertFalse(realodex.hasPerson(ALICE));","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" public void hasPerson_personInRealodex_returnsTrue() {","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"UdhayaShan1"},"content":" realodex.addPerson(ALICE);","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"UdhayaShan1"},"content":" assertTrue(realodex.hasPerson(ALICE));","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" public void hasPerson_personWithSameIdentityFieldsInRealodex_returnsTrue() {","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"UdhayaShan1"},"content":" realodex.addPerson(ALICE);","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"4llysa"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_AMY)","lastModifiedDate":"2024-03-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-06"},{"lineNumber":78,"author":{"gitId":"UdhayaShan1"},"content":" assertTrue(realodex.hasPerson(editedAlice));","lastModifiedDate":"2024-03-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":"2017-09-01"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void getPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":83,"author":{"gitId":"UdhayaShan1"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e realodex.getPersonList().remove(0));","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" String expected \u003d Realodex.class.getCanonicalName() + \"{persons\u003d\" + realodex.getPersonList() + \"}\";","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"UdhayaShan1"},"content":" assertEquals(expected, realodex.toString());","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" * A stub ReadOnlyRealodex whose persons list can violate interface constraints.","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-24"},{"lineNumber":95,"author":{"gitId":"UdhayaShan1"},"content":" private static class RealodexStub implements ReadOnlyRealodex {","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" RealodexStub(Collection\u003cPerson\u003e persons) {","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":"}","lastModifiedDate":"2016-12-24"}],"authorContributionMap":{"4llysa":2,"UdhayaShan1":34,"-":72}},{"path":"src/test/java/seedu/realodex/model/UserPrefsTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.model;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":3,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" public void setRealodexFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":18,"author":{"gitId":"UdhayaShan1"},"content":" assertThrows(NullPointerException.class, () -\u003e userPrefs.setRealodexFilePath(null));","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":4,"-":17}},{"path":"src/test/java/seedu/realodex/model/person/AddressTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.model.person;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":2,"-":54}},{"path":"src/test/java/seedu/realodex/model/person/EmailTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.model.person;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":2,"-":86}},{"path":"src/test/java/seedu/realodex/model/person/FamilyTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.model.person;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"wapisai"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"wapisai"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"wapisai"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"wapisai"},"content":"public class FamilyTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"wapisai"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"wapisai"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"wapisai"},"content":" assertThrows(NullPointerException.class, () -\u003e new Family(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"wapisai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"wapisai"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"UdhayaShan1"},"content":" public void constructor_invalidFamily_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"wapisai"},"content":" String invalidFamily \u003d \"\";","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"UdhayaShan1"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Family(invalidFamily));","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"UdhayaShan1"},"content":" String invalidFamilyWithSpaces \u003d \" \";","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"UdhayaShan1"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Family(invalidFamilyWithSpaces));","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"wapisai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"wapisai"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"wapisai"},"content":" public void isValidFamily() {","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"wapisai"},"content":" // null family size","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"UdhayaShan1"},"content":" assertThrows(NullPointerException.class, () -\u003e Family.isValidFamily(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"wapisai"},"content":" // invalid family sizes","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"wapisai"},"content":" assertFalse(Family.isValidFamily(\"0\")); // less than 1","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"UdhayaShan1"},"content":" assertFalse(Family.isValidFamily(\"-1\")); // less than 1","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"UdhayaShan1"},"content":" assertFalse(Family.isValidFamily(\"-2\")); // less than 1","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"UdhayaShan1"},"content":" assertFalse(Family.isValidFamily(\"-12313231231313\")); // very negative","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"wapisai"},"content":" // valid family numbers","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"wapisai"},"content":" assertTrue(Family.isValidFamily(\"2\")); // more than 1","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"UdhayaShan1"},"content":" assertTrue(Family.isValidFamily(\"93121\")); // huge family","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"UdhayaShan1"},"content":" assertTrue(Family.isValidFamily(\"12422131313131938\")); // very huge family","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"wapisai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"wapisai"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"wapisai"},"content":" public void equals() {","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"wapisai"},"content":" Family family \u003d new Family(\"999\");","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"wapisai"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"wapisai"},"content":" assertTrue(family.equals(new Family(\"999\")));","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"wapisai"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"wapisai"},"content":" assertTrue(family.equals(family));","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"wapisai"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"wapisai"},"content":" assertFalse(family.equals(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"UdhayaShan1"},"content":" // different types (integer vs float) -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"wapisai"},"content":" assertFalse(family.equals(5.0f));","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"UdhayaShan1"},"content":" //different types (integer vs words) -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"UdhayaShan1"},"content":" assertFalse(family.equals(\"OKKK\"));","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"wapisai"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"wapisai"},"content":" assertFalse(family.equals(new Family(\"995\")));","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"wapisai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"wapisai"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"UdhayaShan1":16,"wapisai":48}},{"path":"src/test/java/seedu/realodex/model/person/IncomeTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.model.person;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"wapisai"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"wapisai"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"wapisai"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"wapisai"},"content":"public class IncomeTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"wapisai"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"wapisai"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"wapisai"},"content":" assertThrows(NullPointerException.class, () -\u003e new Income(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"wapisai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"wapisai"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"UdhayaShan1"},"content":" public void constructor_invalidIncome_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"wapisai"},"content":" String invalidIncome \u003d \"\";","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"UdhayaShan1"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Income(invalidIncome));","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"UdhayaShan1"},"content":" String invalidIncomeWithSpaces \u003d \" \";","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"UdhayaShan1"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Income(invalidIncomeWithSpaces));","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"wapisai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"wapisai"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"wapisai"},"content":" public void isValidIncome() {","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"wapisai"},"content":" // null income","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"UdhayaShan1"},"content":" assertThrows(NullPointerException.class, () -\u003e Income.isValidIncome(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"wapisai"},"content":" // invalid income","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"wapisai"},"content":" assertFalse(Income.isValidIncome(\"-1\")); // less than 0","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"UdhayaShan1"},"content":" assertFalse(Income.isValidIncome(\"-3\")); // less than 0","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"UdhayaShan1"},"content":" assertFalse(Income.isValidIncome(\"-121333213213131313\")); // less than 0 but very negative","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"wapisai"},"content":" // valid income numbers","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"wapisai"},"content":" assertTrue(Income.isValidIncome(\"2\")); // more than 1","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"wapisai"},"content":" assertTrue(Income.isValidIncome(\"93121\"));","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"UdhayaShan1"},"content":" assertTrue(Income.isValidIncome(\"1242938231332131313\")); // long number","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"wapisai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"wapisai"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"wapisai"},"content":" public void equals() {","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"wapisai"},"content":" Income income \u003d new Income(\"999\");","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"wapisai"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"wapisai"},"content":" assertTrue(income.equals(new Income(\"999\")));","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"wapisai"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"wapisai"},"content":" assertTrue(income.equals(income));","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"wapisai"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"wapisai"},"content":" assertFalse(income.equals(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"UdhayaShan1"},"content":" // different types (integer vs float) -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"wapisai"},"content":" assertFalse(income.equals(5.0f));","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"UdhayaShan1"},"content":" // different types (integer vs word) -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"UdhayaShan1"},"content":" assertFalse(income.equals(\"imaword!\"));","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"wapisai"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"wapisai"},"content":" assertFalse(income.equals(new Income(\"995\")));","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"wapisai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"wapisai"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"UdhayaShan1":15,"wapisai":49}},{"path":"src/test/java/seedu/realodex/model/person/NameContainsKeyphrasePredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.model.person;","lastModifiedDate":"2024-03-19"},{"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 org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.testutil.PersonBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"jyztintan"},"content":"public class NameContainsKeyphrasePredicateTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"jyztintan"},"content":" String firstPredicateKeyphrase \u003d \"first\";","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"jyztintan"},"content":" String secondPredicateKeyphrase \u003d \"first second\";","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"jyztintan"},"content":" NameContainsKeyphrasePredicate firstPredicate \u003d new NameContainsKeyphrasePredicate(firstPredicateKeyphrase);","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"jyztintan"},"content":" NameContainsKeyphrasePredicate secondPredicate \u003d new NameContainsKeyphrasePredicate(secondPredicateKeyphrase);","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"jyztintan"},"content":" NameContainsKeyphrasePredicate firstPredicateCopy \u003d new NameContainsKeyphrasePredicate(firstPredicateKeyphrase);","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2017-06-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":39,"author":{"gitId":"jyztintan"},"content":" public void test_nameContainsKeyphrase_returnsTrue() {","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"jyztintan"},"content":" // Keyphrase is one word","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"jyztintan"},"content":" NameContainsKeyphrasePredicate predicate \u003d new NameContainsKeyphrasePredicate(\"Alice\");","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"jyztintan"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice\").build()));","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":44,"author":{"gitId":"jyztintan"},"content":" // Keyphrase is more than one word","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"jyztintan"},"content":" predicate \u003d new NameContainsKeyphrasePredicate(\"Alice Tan\");","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"jyztintan"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Tan\").build()));","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"jyztintan"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"jyztintan"},"content":" // Name does not start with matching keyphrase","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"jyztintan"},"content":" predicate \u003d new NameContainsKeyphrasePredicate(\"Alice\");","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"jyztintan"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Annoying Alice\").build()));","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":52,"author":{"gitId":"jyztintan"},"content":" // Keyphrase is not the full word","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"jyztintan"},"content":" predicate \u003d new NameContainsKeyphrasePredicate(\"lice\");","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"jyztintan"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice\").build()));","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"jyztintan"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"jyztintan"},"content":" // Not exact word and not starting with keyphrase","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"jyztintan"},"content":" predicate \u003d new NameContainsKeyphrasePredicate(\"lice\");","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"jyztintan"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Annoying Alice\").build()));","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":60,"author":{"gitId":"jyztintan"},"content":" // Mixed-case keyphrase","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"jyztintan"},"content":" predicate \u003d new NameContainsKeyphrasePredicate(\"aLIce bOB\");","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":66,"author":{"gitId":"jyztintan"},"content":" public void test_nameDoesNotContainKeyphrase_returnsFalse() {","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":68,"author":{"gitId":"jyztintan"},"content":" // Non-matching keyphrase","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"jyztintan"},"content":" NameContainsKeyphrasePredicate predicate \u003d new NameContainsKeyphrasePredicate(\"Carol\");","lastModifiedDate":"2024-03-16"},{"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":"jyztintan"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").withPhone(\"12345\")","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"jyztintan"},"content":" .withEmail(\"alice@email.com\").withAddress(\"Main Street\").build();","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"jyztintan"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"jyztintan"},"content":" // Keyphrase match phone but does not match name","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"jyztintan"},"content":" predicate \u003d new NameContainsKeyphrasePredicate(\"12345\");","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"jyztintan"},"content":" assertFalse(predicate.test(alice));","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"jyztintan"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"jyztintan"},"content":" // Keyphrase match email but does not match name","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"jyztintan"},"content":" predicate \u003d new NameContainsKeyphrasePredicate(\"alice@email.com\");","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"jyztintan"},"content":" assertFalse(predicate.test(alice));","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"jyztintan"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"jyztintan"},"content":" // Keyphrase match address but does not match name","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"jyztintan"},"content":" predicate \u003d new NameContainsKeyphrasePredicate(\"Main\");","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"jyztintan"},"content":" assertFalse(predicate.test(alice));","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"jyztintan"},"content":" predicate \u003d new NameContainsKeyphrasePredicate(\"Street\");","lastModifiedDate":"2024-03-16"},{"lineNumber":87,"author":{"gitId":"jyztintan"},"content":" assertFalse(predicate.test(alice));","lastModifiedDate":"2024-03-16"},{"lineNumber":88,"author":{"gitId":"jyztintan"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"jyztintan"},"content":" String keyphrase \u003d \"keyphrase yapyap\";","lastModifiedDate":"2024-03-16"},{"lineNumber":94,"author":{"gitId":"jyztintan"},"content":" NameContainsKeyphrasePredicate predicate \u003d new NameContainsKeyphrasePredicate(keyphrase);","lastModifiedDate":"2024-03-16"},{"lineNumber":95,"author":{"gitId":"jyztintan"},"content":" String expected \u003d NameContainsKeyphrasePredicate.class.getCanonicalName() + \"{keyphrase\u003d\" + keyphrase + \"}\";","lastModifiedDate":"2024-03-16"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"jyztintan":49,"UdhayaShan1":2,"-":47}},{"path":"src/test/java/seedu/realodex/model/person/NameTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.model.person;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":" // valid name","lastModifiedDate":"2017-01-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"peter jack\")); // alphabets only","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"12345\")); // numbers only","lastModifiedDate":"2017-01-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"peter the 2nd\")); // alphanumeric characters","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":"-"},"content":" assertTrue(Name.isValidName(\"David Roger Jackson Ray Jr 2nd\")); // long names","lastModifiedDate":"2017-01-16"},{"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":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"UdhayaShan1":3,"-":58}},{"path":"src/test/java/seedu/realodex/model/person/PersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.model.person;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_FAMILY_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_INCOME_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_REMARK_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_REMARK_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_TAG_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.TypicalPersons.BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":21,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.testutil.PersonBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":27,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2018-03-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTags().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18"},{"lineNumber":40,"author":{"gitId":"UdhayaShan1"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE)","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"UdhayaShan1"},"content":" .withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"UdhayaShan1"},"content":" .withIncome(VALID_INCOME_BOB)","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"UdhayaShan1"},"content":" .withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"UdhayaShan1"},"content":" .withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"UdhayaShan1"},"content":" .withFamily(VALID_FAMILY_BOB)","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"UdhayaShan1"},"content":" .withTags(VALID_TAG_AMY)","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"UdhayaShan1"},"content":" .withRemark(VALID_REMARK_AMY)","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"UdhayaShan1"},"content":" .build();","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":56,"author":{"gitId":"-"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).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":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":60,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":" editedBob \u003d new PersonBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":91,"author":{"gitId":"UdhayaShan1"},"content":" //different income -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":92,"author":{"gitId":"UdhayaShan1"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withIncome(VALID_INCOME_BOB).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":93,"author":{"gitId":"UdhayaShan1"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2024-03-16"},{"lineNumber":94,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":95,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18"},{"lineNumber":103,"author":{"gitId":"UdhayaShan1"},"content":" // different family size -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":104,"author":{"gitId":"UdhayaShan1"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withIncome(VALID_FAMILY_BOB).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":105,"author":{"gitId":"UdhayaShan1"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2024-03-16"},{"lineNumber":106,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":107,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18"},{"lineNumber":108,"author":{"gitId":"4llysa"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(\"buyer\").withTags(\"seller\").build();","lastModifiedDate":"2024-03-15"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18"},{"lineNumber":110,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":111,"author":{"gitId":"UdhayaShan1"},"content":" // different remarks -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":112,"author":{"gitId":"UdhayaShan1"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withRemark(VALID_REMARK_BOB).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2024-03-20"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2019-02-23"},{"lineNumber":119,"author":{"gitId":"UdhayaShan1"},"content":" + \", income\u003d\" + ALICE.getIncome()","lastModifiedDate":"2024-03-11"},{"lineNumber":120,"author":{"gitId":"UdhayaShan1"},"content":" + \", email\u003d\" + ALICE.getEmail()","lastModifiedDate":"2024-03-11"},{"lineNumber":121,"author":{"gitId":"UdhayaShan1"},"content":" + \", address\u003d\" + ALICE.getAddress()","lastModifiedDate":"2024-03-11"},{"lineNumber":122,"author":{"gitId":"UdhayaShan1"},"content":" + \", family\u003d\" + ALICE.getFamily()","lastModifiedDate":"2024-03-11"},{"lineNumber":123,"author":{"gitId":"appleraincoat"},"content":" + \", tags\u003d\" + ALICE.getTags()","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"appleraincoat"},"content":" + \", remark\u003d\" + ALICE.getRemark() + \"}\";","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"4llysa":1,"UdhayaShan1":38,"-":86,"appleraincoat":2}},{"path":"src/test/java/seedu/realodex/model/person/PhoneTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.model.person;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" String invalidPhone2 \u003d \" \";","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"UdhayaShan1"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Phone(invalidPhone2));","lastModifiedDate":"2024-03-17"},{"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-01-16"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void isValidPhone() {","lastModifiedDate":"2017-01-16"},{"lineNumber":26,"author":{"gitId":"-"},"content":" // null phone number","lastModifiedDate":"2017-12-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Phone.isValidPhone(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":29,"author":{"gitId":"-"},"content":" // invalid phone numbers","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"\")); // empty string","lastModifiedDate":"2017-01-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\" \")); // spaces only","lastModifiedDate":"2017-01-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"91\")); // less than 3 numbers","lastModifiedDate":"2017-05-04"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"phone\")); // non-numeric","lastModifiedDate":"2017-01-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"9011p041\")); // alphabets within digits","lastModifiedDate":"2017-01-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"9312 1534\")); // spaces within digits","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" // valid phone numbers","lastModifiedDate":"2017-01-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(Phone.isValidPhone(\"911\")); // exactly 3 numbers","lastModifiedDate":"2017-05-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertTrue(Phone.isValidPhone(\"93121534\"));","lastModifiedDate":"2017-01-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertTrue(Phone.isValidPhone(\"124293842033123\")); // long phone numbers","lastModifiedDate":"2017-01-16"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" Phone phone \u003d new Phone(\"999\");","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertTrue(phone.equals(new Phone(\"999\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertTrue(phone.equals(phone));","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(new Phone(\"995\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"UdhayaShan1":4,"-":58}},{"path":"src/test/java/seedu/realodex/model/person/RemarkTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.model.person;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"UdhayaShan1"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"UdhayaShan1"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.remark.Remark;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":"public class RemarkTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"UdhayaShan1"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"UdhayaShan1"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"UdhayaShan1"},"content":" assertThrows(NullPointerException.class, () -\u003e new Remark(null));","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"UdhayaShan1"},"content":" //May seem redundant, but for further iterations where we may validate remarks.","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"UdhayaShan1"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"UdhayaShan1"},"content":" public void isValidRemark() {","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"UdhayaShan1"},"content":" // null name","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"UdhayaShan1"},"content":" assertThrows(NullPointerException.class, () -\u003e Remark.isValidRemark(null));","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"UdhayaShan1"},"content":" // invalid name","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"UdhayaShan1"},"content":" // to-do in the future, ideas include but not limited to length constraints, no illegal characters.","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"UdhayaShan1"},"content":" // valid name","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"UdhayaShan1"},"content":" assertTrue(Remark.isValidRemark(\"I love apples\")); // alphabets only","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"UdhayaShan1"},"content":" assertTrue(Remark.isValidRemark(\"12345\")); // numbers only","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"UdhayaShan1"},"content":" assertTrue(Remark.isValidRemark(\"James Lau the 1st\")); // alphanumeric characters","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"UdhayaShan1"},"content":" assertTrue(Remark.isValidRemark(\"New York\")); // with capital letters","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"UdhayaShan1"},"content":" assertTrue(Remark.isValidRemark(\"Tony Stark, genius playboy billionaire philanthropist\")); // long remark","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"UdhayaShan1"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"UdhayaShan1"},"content":" public void equals() {","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"UdhayaShan1"},"content":" Remark remark \u003d new Remark(\"Valid Remark\");","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"UdhayaShan1"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"UdhayaShan1"},"content":" assertTrue(remark.equals(new Remark(\"Valid Remark\")));","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"UdhayaShan1"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"UdhayaShan1"},"content":" assertTrue(remark.equals(remark));","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"UdhayaShan1"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"UdhayaShan1"},"content":" assertFalse(remark \u003d\u003d null);","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"UdhayaShan1"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"UdhayaShan1"},"content":" assertFalse(remark.equals(5.0f));","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"UdhayaShan1"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"UdhayaShan1"},"content":" assertFalse(remark.equals(new Remark(\"Other Valid Name\")));","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"UdhayaShan1"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"UdhayaShan1":55}},{"path":"src/test/java/seedu/realodex/model/person/UniquePersonListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.model.person;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_TAG_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.TypicalPersons.BOB;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.exceptions.PersonNotFoundException;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.testutil.PersonBuilder;","lastModifiedDate":"2024-03-19"},{"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":"4llysa"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_AMY)","lastModifiedDate":"2024-03-15"},{"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":"4llysa"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_AMY)","lastModifiedDate":"2024-03-15"},{"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":{"4llysa":2,"UdhayaShan1":9,"-":164}},{"path":"src/test/java/seedu/realodex/model/tag/TagTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.model.tag;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":3,"author":{"gitId":"UdhayaShan1"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"UdhayaShan1"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"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":"2017-12-04"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class TagTest {","lastModifiedDate":"2017-12-04"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"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 Tag(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_invalidTagName_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidTagName \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Tag(invalidTagName));","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-12-04"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidTagName() {","lastModifiedDate":"2017-12-04"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null tag name","lastModifiedDate":"2017-12-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Tag.isValidTagName(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":26,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"UdhayaShan1"},"content":" // Invalid tag names","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"UdhayaShan1"},"content":" assertFalse(Tag.isValidTagName(\"\")); // Empty tag name","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"4llysa"},"content":" assertFalse(Tag.isValidTagName(\"Buyers\")); // Should not be plural","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"UdhayaShan1"},"content":" assertFalse(Tag.isValidTagName(\"Sellers \")); // Extra space at the end","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"UdhayaShan1"},"content":" assertFalse(Tag.isValidTagName(\"Invalid Tag\")); // Space within the tag name","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"UdhayaShan1"},"content":" // Valid tag names","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"UdhayaShan1"},"content":" assertTrue(Tag.isValidTagName(\"buyer\"));","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"UdhayaShan1"},"content":" assertTrue(Tag.isValidTagName(\"seller\"));","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"4llysa"},"content":" assertTrue(Tag.isValidTagName(\"buYeR\")); // Tag converts string to uppercase","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"4llysa"},"content":" assertTrue(Tag.isValidTagName(\"seLLer\")); // Tag converts string to uppercase","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-12-04"}],"authorContributionMap":{"4llysa":3,"UdhayaShan1":13,"-":24}},{"path":"src/test/java/seedu/realodex/storage/JsonAdaptedPersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.storage;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Address;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Email;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Family;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Income;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Phone;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" private static final String INVALID_INCOME \u003d \"-1\";","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"UdhayaShan1"},"content":" private static final String INVALID_FAMILY \u003d \"0\";","lastModifiedDate":"2024-03-11"},{"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":"UdhayaShan1"},"content":" private static final String VALID_INCOME \u003d BENSON.getIncome().toString();","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"UdhayaShan1"},"content":" private static final String VALID_FAMILY \u003d BENSON.getFamily().toString();","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13"},{"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":"appleraincoat"},"content":" private static final String VALID_REMARK \u003d BENSON.getRemark().toString();","lastModifiedDate":"2024-03-17"},{"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":"UdhayaShan1"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_INCOME, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"appleraincoat"},"content":" VALID_FAMILY, VALID_TAGS, VALID_REMARK);","lastModifiedDate":"2024-03-17"},{"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":"UdhayaShan1"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_PHONE, VALID_INCOME, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"appleraincoat"},"content":" VALID_FAMILY, VALID_TAGS, VALID_REMARK);","lastModifiedDate":"2024-03-17"},{"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":"UdhayaShan1"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_INCOME, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"appleraincoat"},"content":" VALID_FAMILY, VALID_TAGS, VALID_REMARK);","lastModifiedDate":"2024-03-17"},{"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":"UdhayaShan1"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_INCOME, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-11"},{"lineNumber":77,"author":{"gitId":"appleraincoat"},"content":" VALID_FAMILY, VALID_TAGS, VALID_REMARK);","lastModifiedDate":"2024-03-17"},{"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":"UdhayaShan1"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"UdhayaShan1"},"content":" public void toModelType_invalidIncome_throwsIllegalValueException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"UdhayaShan1"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"UdhayaShan1"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_INCOME, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"UdhayaShan1"},"content":" VALID_FAMILY, VALID_TAGS, VALID_REMARK);","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"UdhayaShan1"},"content":" String expectedMessage \u003d Income.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-16"},{"lineNumber":88,"author":{"gitId":"UdhayaShan1"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-16"},{"lineNumber":89,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":90,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":91,"author":{"gitId":"UdhayaShan1"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":92,"author":{"gitId":"UdhayaShan1"},"content":" public void toModelType_nullIncome_throwsIllegalValueException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":93,"author":{"gitId":"UdhayaShan1"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-16"},{"lineNumber":94,"author":{"gitId":"UdhayaShan1"},"content":" VALID_FAMILY, VALID_TAGS, VALID_REMARK);","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"UdhayaShan1"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Income.class.getSimpleName());","lastModifiedDate":"2024-03-16"},{"lineNumber":96,"author":{"gitId":"UdhayaShan1"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-16"},{"lineNumber":97,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":98,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"UdhayaShan1"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_INCOME, INVALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-11"},{"lineNumber":103,"author":{"gitId":"appleraincoat"},"content":" VALID_FAMILY, VALID_TAGS, VALID_REMARK);","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.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_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"UdhayaShan1"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_INCOME, null, VALID_ADDRESS,","lastModifiedDate":"2024-03-11"},{"lineNumber":111,"author":{"gitId":"appleraincoat"},"content":" VALID_FAMILY, VALID_TAGS, VALID_REMARK);","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.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_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":119,"author":{"gitId":"UdhayaShan1"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_INCOME, VALID_EMAIL, INVALID_ADDRESS,","lastModifiedDate":"2024-03-11"},{"lineNumber":120,"author":{"gitId":"appleraincoat"},"content":" VALID_FAMILY, VALID_TAGS, VALID_REMARK);","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":127,"author":{"gitId":"UdhayaShan1"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_INCOME, VALID_EMAIL, null,","lastModifiedDate":"2024-03-11"},{"lineNumber":128,"author":{"gitId":"appleraincoat"},"content":" VALID_FAMILY, VALID_TAGS, VALID_REMARK);","lastModifiedDate":"2024-03-17"},{"lineNumber":129,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":133,"author":{"gitId":"UdhayaShan1"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":134,"author":{"gitId":"UdhayaShan1"},"content":" public void toModelType_invalidFamily_throwsIllegalValueException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":135,"author":{"gitId":"UdhayaShan1"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":136,"author":{"gitId":"UdhayaShan1"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_INCOME, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-16"},{"lineNumber":137,"author":{"gitId":"UdhayaShan1"},"content":" INVALID_FAMILY, VALID_TAGS, VALID_REMARK);","lastModifiedDate":"2024-03-17"},{"lineNumber":138,"author":{"gitId":"UdhayaShan1"},"content":" String expectedMessage \u003d Family.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-16"},{"lineNumber":139,"author":{"gitId":"UdhayaShan1"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-16"},{"lineNumber":140,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":141,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":142,"author":{"gitId":"UdhayaShan1"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":143,"author":{"gitId":"UdhayaShan1"},"content":" public void toModelType_nullFamily_throwsIllegalValueException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":144,"author":{"gitId":"UdhayaShan1"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME,","lastModifiedDate":"2024-03-16"},{"lineNumber":145,"author":{"gitId":"UdhayaShan1"},"content":" VALID_PHONE,","lastModifiedDate":"2024-03-16"},{"lineNumber":146,"author":{"gitId":"UdhayaShan1"},"content":" VALID_INCOME,","lastModifiedDate":"2024-03-16"},{"lineNumber":147,"author":{"gitId":"UdhayaShan1"},"content":" VALID_EMAIL,","lastModifiedDate":"2024-03-16"},{"lineNumber":148,"author":{"gitId":"UdhayaShan1"},"content":" VALID_ADDRESS,","lastModifiedDate":"2024-03-16"},{"lineNumber":149,"author":{"gitId":"UdhayaShan1"},"content":" null,","lastModifiedDate":"2024-03-16"},{"lineNumber":150,"author":{"gitId":"UdhayaShan1"},"content":" VALID_TAGS,","lastModifiedDate":"2024-03-17"},{"lineNumber":151,"author":{"gitId":"UdhayaShan1"},"content":" VALID_REMARK);","lastModifiedDate":"2024-03-17"},{"lineNumber":152,"author":{"gitId":"UdhayaShan1"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Family.class.getSimpleName());","lastModifiedDate":"2024-03-16"},{"lineNumber":153,"author":{"gitId":"UdhayaShan1"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-16"},{"lineNumber":154,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":155,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":158,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13"},{"lineNumber":159,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13"},{"lineNumber":160,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":161,"author":{"gitId":"UdhayaShan1"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_INCOME, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-11"},{"lineNumber":162,"author":{"gitId":"appleraincoat"},"content":" VALID_FAMILY, invalidTags, VALID_REMARK);","lastModifiedDate":"2024-03-17"},{"lineNumber":163,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":166,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"UdhayaShan1":64,"-":92,"appleraincoat":10}},{"path":"src/test/java/seedu/realodex/storage/JsonRealodexStorageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.storage;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.TypicalPersons.HOON;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.TypicalPersons.IDA;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.TypicalPersons.getTypicalRealodex;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.ReadOnlyRealodex;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.Realodex;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"UdhayaShan1"},"content":"public class JsonRealodexStorageTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"UdhayaShan1"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonRealodexStorageTest\");","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" public void readRealodex_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"UdhayaShan1"},"content":" assertThrows(NullPointerException.class, () -\u003e readRealodex(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"UdhayaShan1"},"content":" private java.util.Optional\u003cReadOnlyRealodex\u003e readRealodex(String filePath) throws Exception {","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"UdhayaShan1"},"content":" return new JsonRealodexStorage(Paths.get(filePath)).readRealodex(addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" assertFalse(readRealodex(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" assertThrows(DataLoadingException.class, () -\u003e readRealodex(\"notJsonFormatRealodex.json\"));","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" public void readRealodex_invalidPersonRealodex_throwDataLoadingException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"UdhayaShan1"},"content":" assertThrows(DataLoadingException.class, () -\u003e readRealodex(\"invalidPersonRealodex.json\"));","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" public void readRealodex_invalidAndValidPersonRealodex_throwDataLoadingException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"UdhayaShan1"},"content":" assertThrows(DataLoadingException.class, () -\u003e readRealodex(\"invalidAndValidPersonRealodex.json\"));","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" public void readAndSaveRealodex_allInOrder_success() throws Exception {","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"UdhayaShan1"},"content":" Path filePath \u003d testFolder.resolve(\"TempRealodex.json\");","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"UdhayaShan1"},"content":" Realodex original \u003d getTypicalRealodex();","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"UdhayaShan1"},"content":" JsonRealodexStorage jsonRealodexStorage \u003d new JsonRealodexStorage(filePath);","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" jsonRealodexStorage.saveRealodex(original, filePath);","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"UdhayaShan1"},"content":" ReadOnlyRealodex readBack \u003d jsonRealodexStorage.readRealodex(filePath).get();","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"UdhayaShan1"},"content":" assertEquals(original, new Realodex(readBack));","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":" original.addPerson(HOON);","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" original.removePerson(ALICE);","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"UdhayaShan1"},"content":" jsonRealodexStorage.saveRealodex(original, filePath);","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"UdhayaShan1"},"content":" readBack \u003d jsonRealodexStorage.readRealodex(filePath).get();","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"UdhayaShan1"},"content":" assertEquals(original, new Realodex(readBack));","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":" original.addPerson(IDA);","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"UdhayaShan1"},"content":" jsonRealodexStorage.saveRealodex(original); // file path not specified","lastModifiedDate":"2024-03-19"},{"lineNumber":84,"author":{"gitId":"UdhayaShan1"},"content":" readBack \u003d jsonRealodexStorage.readRealodex().get(); // file path not specified","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"UdhayaShan1"},"content":" assertEquals(original, new Realodex(readBack));","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" public void saveRealodex_nullRealodex_throwsNullPointerException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":91,"author":{"gitId":"UdhayaShan1"},"content":" assertThrows(NullPointerException.class, () -\u003e saveRealodex(null, \"SomeFile.json\"));","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" * Saves {@code realodex} at the specified {@code filePath}.","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"UdhayaShan1"},"content":" private void saveRealodex(ReadOnlyRealodex realodex, String filePath) {","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"UdhayaShan1"},"content":" new JsonRealodexStorage(Paths.get(filePath))","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"UdhayaShan1"},"content":" .saveRealodex(realodex, addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" public void saveRealodex_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":108,"author":{"gitId":"UdhayaShan1"},"content":" assertThrows(NullPointerException.class, () -\u003e saveRealodex(new Realodex(), null));","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"UdhayaShan1":42,"-":68}},{"path":"src/test/java/seedu/realodex/storage/JsonSerializableRealodexTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.storage;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.util.JsonUtil;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.Realodex;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.testutil.TypicalPersons;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"UdhayaShan1"},"content":"public class JsonSerializableRealodexTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"UdhayaShan1"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonSerializableRealodexTest\");","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"UdhayaShan1"},"content":" private static final Path TYPICAL_PERSONS_FILE \u003d TEST_DATA_FOLDER.resolve(\"typicalPersonsRealodex.json\");","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"UdhayaShan1"},"content":" private static final Path INVALID_PERSON_FILE \u003d TEST_DATA_FOLDER.resolve(\"invalidPersonRealodex.json\");","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"UdhayaShan1"},"content":" private static final Path DUPLICATE_PERSON_FILE \u003d TEST_DATA_FOLDER.resolve(\"duplicatePersonRealodex.json\");","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" JsonSerializableRealodex dataFromFile \u003d JsonUtil.readJsonFile(TYPICAL_PERSONS_FILE,","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"UdhayaShan1"},"content":" JsonSerializableRealodex.class).get();","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"UdhayaShan1"},"content":" Realodex realodexFromFile \u003d dataFromFile.toModelType();","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"UdhayaShan1"},"content":" Realodex typicalPersonsRealodex \u003d TypicalPersons.getTypicalRealodex();","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"UdhayaShan1"},"content":" assertEquals(realodexFromFile, typicalPersonsRealodex);","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":" public void toModelType_invalidPersonFile_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"UdhayaShan1"},"content":" JsonSerializableRealodex dataFromFile \u003d JsonUtil.readJsonFile(INVALID_PERSON_FILE,","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"UdhayaShan1"},"content":" JsonSerializableRealodex.class).get();","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":" public void toModelType_duplicatePersons_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"UdhayaShan1"},"content":" JsonSerializableRealodex dataFromFile \u003d JsonUtil.readJsonFile(DUPLICATE_PERSON_FILE,","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"UdhayaShan1"},"content":" JsonSerializableRealodex.class).get();","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"UdhayaShan1"},"content":" assertThrows(IllegalValueException.class, JsonSerializableRealodex.MESSAGE_DUPLICATE_PERSON,","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":21,"-":26}},{"path":"src/test/java/seedu/realodex/storage/JsonUserPrefsStorageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.storage;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.GuiSettings;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.UserPrefs;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" userPrefs.setRealodexFilePath(Paths.get(\"realodex.json\"));","lastModifiedDate":"2024-03-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":{"UdhayaShan1":6,"-":117}},{"path":"src/test/java/seedu/realodex/storage/StorageManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.storage;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.TypicalPersons.getTypicalRealodex;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.GuiSettings;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.ReadOnlyRealodex;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.Realodex;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.UserPrefs;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" JsonRealodexStorage realodexStorage \u003d new JsonRealodexStorage(getTempFilePath(\"ab\"));","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(getTempFilePath(\"prefs\"));","lastModifiedDate":"2017-02-25"},{"lineNumber":29,"author":{"gitId":"UdhayaShan1"},"content":" storageManager \u003d new StorageManager(realodexStorage, userPrefsStorage);","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" public void realodexReadSave() throws Exception {","lastModifiedDate":"2024-03-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":"UdhayaShan1"},"content":" * {@link JsonRealodexStorage} class.","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"UdhayaShan1"},"content":" * More extensive testing of UserPref saving/reading is done in {@link JsonRealodexStorageTest} class.","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":57,"author":{"gitId":"UdhayaShan1"},"content":" Realodex original \u003d getTypicalRealodex();","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"UdhayaShan1"},"content":" storageManager.saveRealodex(original);","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"UdhayaShan1"},"content":" ReadOnlyRealodex retrieved \u003d storageManager.readRealodex().get();","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"UdhayaShan1"},"content":" assertEquals(original, new Realodex(retrieved));","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" public void getRealodexFilePath() {","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"UdhayaShan1"},"content":" assertNotNull(storageManager.getRealodexFilePath());","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":17,"-":51}},{"path":"src/test/java/seedu/realodex/testutil/Assert.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.testutil;","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":" Assertions.assertEquals(expectedMessage, thrownException.getMessage());","lastModifiedDate":"2019-03-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-17"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-07-17"}],"authorContributionMap":{"UdhayaShan1":1,"-":33}},{"path":"src/test/java/seedu/realodex/testutil/EditPersonDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.testutil;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Address;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Email;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Family;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Income;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"appleraincoat"},"content":"import seedu.realodex.model.remark.Remark;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.tag.Tag;","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":" descriptor.setPhone(person.getPhone());","lastModifiedDate":"2017-06-21"},{"lineNumber":40,"author":{"gitId":"UdhayaShan1"},"content":" descriptor.setIncome(person.getIncome());","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" descriptor.setAddress(person.getAddress());","lastModifiedDate":"2017-06-21"},{"lineNumber":43,"author":{"gitId":"UdhayaShan1"},"content":" descriptor.setFamily(person.getFamily());","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"-"},"content":" descriptor.setTags(person.getTags());","lastModifiedDate":"2017-06-21"},{"lineNumber":45,"author":{"gitId":"appleraincoat"},"content":" descriptor.setRemark(person.getRemark());","lastModifiedDate":"2024-03-17"},{"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":"UdhayaShan1"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"UdhayaShan1"},"content":" * Sets the {@code Income} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"UdhayaShan1"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"UdhayaShan1"},"content":" public EditPersonDescriptorBuilder withIncome(String income) {","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"UdhayaShan1"},"content":" descriptor.setIncome(new Income(income));","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"UdhayaShan1"},"content":" return this;","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Sets the {@code Email} 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 withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","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":" * Sets the {@code Address} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":84,"author":{"gitId":"-"},"content":" descriptor.setAddress(new Address(address));","lastModifiedDate":"2017-12-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":88,"author":{"gitId":"UdhayaShan1"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":89,"author":{"gitId":"UdhayaShan1"},"content":" * Sets the {@code Family} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-16"},{"lineNumber":90,"author":{"gitId":"UdhayaShan1"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":91,"author":{"gitId":"UdhayaShan1"},"content":" public EditPersonDescriptorBuilder withFamily(String family) {","lastModifiedDate":"2024-03-16"},{"lineNumber":92,"author":{"gitId":"UdhayaShan1"},"content":" descriptor.setFamily(new Family(family));","lastModifiedDate":"2024-03-16"},{"lineNumber":93,"author":{"gitId":"UdhayaShan1"},"content":" return this;","lastModifiedDate":"2024-03-16"},{"lineNumber":94,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":95,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":96,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":97,"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":98,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":99,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15"},{"lineNumber":101,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2017-12-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2017-12-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":106,"author":{"gitId":"wapisai"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":107,"author":{"gitId":"wapisai"},"content":" * Sets the {@code Remark} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":108,"author":{"gitId":"wapisai"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"wapisai"},"content":" public EditPersonDescriptorBuilder withRemark(String remark) {","lastModifiedDate":"2024-03-19"},{"lineNumber":110,"author":{"gitId":"wapisai"},"content":" Remark r \u003d new Remark(remark);","lastModifiedDate":"2024-03-19"},{"lineNumber":111,"author":{"gitId":"wapisai"},"content":" descriptor.setRemark(r);","lastModifiedDate":"2024-03-19"},{"lineNumber":112,"author":{"gitId":"wapisai"},"content":" return this;","lastModifiedDate":"2024-03-19"},{"lineNumber":113,"author":{"gitId":"wapisai"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":114,"author":{"gitId":"wapisai"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":115,"author":{"gitId":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05"},{"lineNumber":116,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":118,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"UdhayaShan1":28,"-":79,"appleraincoat":2,"wapisai":9}},{"path":"src/test/java/seedu/realodex/testutil/PersonBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.testutil;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Address;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Email;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Family;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Income;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.remark.Remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.tag.Tag;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.util.SampleDataUtil;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" public static final String DEFAULT_INCOME \u003d \"20000\";","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18"},{"lineNumber":26,"author":{"gitId":"UdhayaShan1"},"content":" public static final String DEFAULT_FAMILY \u003d \"4\";","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05"},{"lineNumber":28,"author":{"gitId":"4llysa"},"content":" public static final Tag DEFAULT_TAG \u003d new Tag(\"buyer\");","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":32,"author":{"gitId":"UdhayaShan1"},"content":" private Income income;","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20"},{"lineNumber":35,"author":{"gitId":"UdhayaShan1"},"content":" private Family family;","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20"},{"lineNumber":37,"author":{"gitId":"appleraincoat"},"content":" private Remark remark;","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20"},{"lineNumber":45,"author":{"gitId":"UdhayaShan1"},"content":" income \u003d new Income(DEFAULT_INCOME);","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20"},{"lineNumber":48,"author":{"gitId":"UdhayaShan1"},"content":" family \u003d new Family(DEFAULT_FAMILY);","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":50,"author":{"gitId":"4llysa"},"content":" tags.add(DEFAULT_TAG);","lastModifiedDate":"2024-03-15"},{"lineNumber":51,"author":{"gitId":"appleraincoat"},"content":" remark \u003d new Remark(\"\");","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10"},{"lineNumber":58,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20"},{"lineNumber":60,"author":{"gitId":"UdhayaShan1"},"content":" income \u003d personToCopy.getIncome();","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20"},{"lineNumber":63,"author":{"gitId":"UdhayaShan1"},"content":" family \u003d personToCopy.getFamily();","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20"},{"lineNumber":65,"author":{"gitId":"appleraincoat"},"content":" remark \u003d personToCopy.getRemark();","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11"},{"lineNumber":68,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":77,"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":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String ... tags) {","lastModifiedDate":"2017-08-15"},{"lineNumber":80,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2017-12-20"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":95,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":96,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20"},{"lineNumber":97,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":100,"author":{"gitId":"UdhayaShan1"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":101,"author":{"gitId":"UdhayaShan1"},"content":" * Sets the {@code Income} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-11"},{"lineNumber":102,"author":{"gitId":"UdhayaShan1"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":103,"author":{"gitId":"UdhayaShan1"},"content":" public PersonBuilder withIncome(String income) {","lastModifiedDate":"2024-03-11"},{"lineNumber":104,"author":{"gitId":"UdhayaShan1"},"content":" this.income \u003d new Income(income);","lastModifiedDate":"2024-03-11"},{"lineNumber":105,"author":{"gitId":"UdhayaShan1"},"content":" return this;","lastModifiedDate":"2024-03-11"},{"lineNumber":106,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":107,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":108,"author":{"gitId":"UdhayaShan1"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":109,"author":{"gitId":"UdhayaShan1"},"content":" * Sets the {@code Family} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-11"},{"lineNumber":110,"author":{"gitId":"UdhayaShan1"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":111,"author":{"gitId":"UdhayaShan1"},"content":" public PersonBuilder withFamily(String family) {","lastModifiedDate":"2024-03-11"},{"lineNumber":112,"author":{"gitId":"UdhayaShan1"},"content":" this.family \u003d new Family(family);","lastModifiedDate":"2024-03-11"},{"lineNumber":113,"author":{"gitId":"UdhayaShan1"},"content":" return this;","lastModifiedDate":"2024-03-11"},{"lineNumber":114,"author":{"gitId":"UdhayaShan1"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":115,"author":{"gitId":"UdhayaShan1"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":116,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":117,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":118,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":120,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20"},{"lineNumber":121,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":124,"author":{"gitId":"appleraincoat"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"appleraincoat"},"content":" * Sets the {@code Remark} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"appleraincoat"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"appleraincoat"},"content":" public PersonBuilder withRemark(String remark) {","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"appleraincoat"},"content":" this.remark \u003d new Remark(remark);","lastModifiedDate":"2024-03-17"},{"lineNumber":129,"author":{"gitId":"appleraincoat"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":130,"author":{"gitId":"appleraincoat"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05"},{"lineNumber":133,"author":{"gitId":"appleraincoat"},"content":" return new Person(name, phone, income, email, address, family, tags, remark);","lastModifiedDate":"2024-03-17"},{"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":{"4llysa":2,"UdhayaShan1":35,"-":87,"appleraincoat":12}},{"path":"src/test/java/seedu/realodex/testutil/PersonUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.testutil;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":3,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_FAMILY;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_INCOME;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.AddCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.tag.Tag;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static String getAddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":28,"author":{"gitId":"-"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2017-03-29"},{"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":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" sb.append(PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2017-06-06"},{"lineNumber":37,"author":{"gitId":"-"},"content":" sb.append(PREFIX_PHONE + person.getPhone().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":38,"author":{"gitId":"UdhayaShan1"},"content":" sb.append(PREFIX_INCOME + person.getIncome().toString() + \" \");","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" sb.append(PREFIX_ADDRESS + person.getAddress().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":41,"author":{"gitId":"UdhayaShan1"},"content":" sb.append(PREFIX_FAMILY + person.getFamily().toString() + \" \");","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":" person.getTags().stream().forEach(","lastModifiedDate":"2017-05-09"},{"lineNumber":43,"author":{"gitId":"4llysa"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName.toString() + \" \")","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09"},{"lineNumber":45,"author":{"gitId":"appleraincoat"},"content":" sb.append(PREFIX_REMARK + person.getRemark().toString() + \" \");","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":56,"author":{"gitId":"wapisai"},"content":" descriptor.getIncome().ifPresent(income -\u003e sb.append(PREFIX_INCOME).append(income.toString()).append(\" \"));","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"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":"wapisai"},"content":" descriptor.getFamily().ifPresent(family -\u003e sb.append(PREFIX_FAMILY).append(family.toString()).append(\" \"));","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" sb.append(PREFIX_TAG);","lastModifiedDate":"2018-03-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":68,"author":{"gitId":"wapisai"},"content":" descriptor.getRemark().ifPresent(remark -\u003e sb.append(PREFIX_REMARK).append(remark.toString()).append(\" \"));","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05"}],"authorContributionMap":{"4llysa":1,"UdhayaShan1":15,"-":51,"appleraincoat":1,"wapisai":3}},{"path":"src/test/java/seedu/realodex/testutil/RealodexBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.testutil;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.Realodex;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":" * A utility class to help with building Realodex objects.","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Example usage: \u003cbr\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":" * {@code Realodex ab \u003d new RealodexBuilder().withPerson(\"John\", \"Doe\").build();}","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":"public class RealodexBuilder {","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"UdhayaShan1"},"content":" private Realodex realodex;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"UdhayaShan1"},"content":" public RealodexBuilder() {","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"UdhayaShan1"},"content":" realodex \u003d new Realodex();","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":19,"author":{"gitId":"UdhayaShan1"},"content":" public RealodexBuilder(Realodex realodex) {","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"UdhayaShan1"},"content":" this.realodex \u003d realodex;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" * Adds a new {@code Person} to the {@code Realodex} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":26,"author":{"gitId":"UdhayaShan1"},"content":" public RealodexBuilder withPerson(Person person) {","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"UdhayaShan1"},"content":" realodex.addPerson(person);","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":" public Realodex build() {","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"UdhayaShan1"},"content":" return realodex;","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"UdhayaShan1":16,"-":18}},{"path":"src/test/java/seedu/realodex/testutil/SerializableTestClass.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.testutil;","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":1,"-":71}},{"path":"src/test/java/seedu/realodex/testutil/TestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.testutil;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.index.Index;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Person;","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":" return Index.fromOneBased(model.getFilteredPersonList().size() / 2);","lastModifiedDate":"2018-08-13"},{"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":"-"},"content":" return Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2018-08-13"},{"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":"-"},"content":" public static Person getPerson(Model model, Index index) {","lastModifiedDate":"2018-01-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList().get(index.getZeroBased());","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30"},{"lineNumber":55,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"UdhayaShan1":4,"-":51}},{"path":"src/test/java/seedu/realodex/testutil/TypicalIndexes.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.testutil;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":3,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.commons.core.index.Index;","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":"}","lastModifiedDate":"2017-08-05"}],"authorContributionMap":{"UdhayaShan1":2,"-":10}},{"path":"src/test/java/seedu/realodex/testutil/TypicalPersons.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.testutil;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":3,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_FAMILY_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_FAMILY_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_INCOME_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_INCOME_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_REMARK_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_TAG_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"UdhayaShan1"},"content":"import static seedu.realodex.logic.commands.CommandTestUtil.VALID_TAG_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07"},{"lineNumber":23,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.Realodex;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"UdhayaShan1"},"content":"import seedu.realodex.model.person.Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final Person ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2018-01-10"},{"lineNumber":32,"author":{"gitId":"UdhayaShan1"},"content":" .withIncome(\"10000\")","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"-"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2017-04-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2018-04-19"},{"lineNumber":35,"author":{"gitId":"UdhayaShan1"},"content":" .withFamily(\"4\")","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"appleraincoat"},"content":" .withTags(\"buyer\")","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"appleraincoat"},"content":" .withRemark(\"this is a remark\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10"},{"lineNumber":40,"author":{"gitId":"UdhayaShan1"},"content":" .withIncome(\"20000\")","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"-"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2017-09-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2017-04-05"},{"lineNumber":43,"author":{"gitId":"UdhayaShan1"},"content":" .withFamily(\"4\")","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"4llysa"},"content":" .withTags(\"seller\", \"buyer\").build();","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"UdhayaShan1"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\")","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"UdhayaShan1"},"content":" .withPhone(\"95352563\")","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"UdhayaShan1"},"content":" .withIncome(\"30000\")","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"appleraincoat"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\").withTags(\"buyer\")","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"appleraincoat"},"content":" .withRemark(\"Carl was supposed to start with a K, but the doctor misspelled when he was born\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2018-01-10"},{"lineNumber":53,"author":{"gitId":"UdhayaShan1"},"content":" .withIncome(\"40000\")","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"appleraincoat"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\").withTags(\"buyer\")","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"appleraincoat"},"content":" .withRemark(\"White VANS\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2018-01-10"},{"lineNumber":58,"author":{"gitId":"UdhayaShan1"},"content":" .withIncome(\"50000\")","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"4llysa"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\").withTags(\"buyer\").build();","lastModifiedDate":"2024-03-15"},{"lineNumber":60,"author":{"gitId":"appleraincoat"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"UdhayaShan1"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\")","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"UdhayaShan1"},"content":" .withPhone(\"9482427\")","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"UdhayaShan1"},"content":" .withIncome(\"60000\")","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"4llysa"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\").withTags(\"seller\").build();","lastModifiedDate":"2024-03-15"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2018-01-10"},{"lineNumber":66,"author":{"gitId":"UdhayaShan1"},"content":" .withIncome(\"70000\")","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"appleraincoat"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\").withTags(\"buyer\")","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"appleraincoat"},"content":" .withRemark(\"Fun fact: George\u0027s brother\u0027s name is \\\"The\\\".\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2018-01-10"},{"lineNumber":72,"author":{"gitId":"4llysa"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\").withTags(\"buyer\").build();","lastModifiedDate":"2024-03-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2018-01-10"},{"lineNumber":74,"author":{"gitId":"4llysa"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\").withTags(\"buyer\").build();","lastModifiedDate":"2024-03-15"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22"},{"lineNumber":77,"author":{"gitId":"UdhayaShan1"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-03-11"},{"lineNumber":78,"author":{"gitId":"UdhayaShan1"},"content":" .withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2024-03-11"},{"lineNumber":79,"author":{"gitId":"UdhayaShan1"},"content":" .withIncome(VALID_INCOME_AMY)","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"UdhayaShan1"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2024-03-11"},{"lineNumber":81,"author":{"gitId":"UdhayaShan1"},"content":" .withFamily(VALID_FAMILY_AMY)","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"4llysa"},"content":" .withTags(VALID_TAG_AMY).build();","lastModifiedDate":"2024-03-15"},{"lineNumber":83,"author":{"gitId":"UdhayaShan1"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-11"},{"lineNumber":84,"author":{"gitId":"UdhayaShan1"},"content":" .withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-11"},{"lineNumber":85,"author":{"gitId":"UdhayaShan1"},"content":" .withIncome(VALID_INCOME_BOB)","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"UdhayaShan1"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-03-11"},{"lineNumber":87,"author":{"gitId":"UdhayaShan1"},"content":" .withFamily(VALID_FAMILY_BOB)","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"4llysa"},"content":" .withTags(VALID_TAG_BOB)","lastModifiedDate":"2024-03-15"},{"lineNumber":89,"author":{"gitId":"UdhayaShan1"},"content":" .withRemark(VALID_REMARK_BOB)","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2017-09-21"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21"},{"lineNumber":92,"author":{"gitId":"jyztintan"},"content":" public static final String KEYPHRASE_MATCHING_MEIER \u003d \"Meier\"; // A keyphrase that matches MEIER","lastModifiedDate":"2024-03-16"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":96,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":97,"author":{"gitId":"UdhayaShan1"},"content":" * Returns an {@code Realodex} with all the typical persons.","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":99,"author":{"gitId":"UdhayaShan1"},"content":" public static Realodex getTypicalRealodex() {","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"UdhayaShan1"},"content":" Realodex ab \u003d new Realodex();","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10"},{"lineNumber":102,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10"},{"lineNumber":108,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04"},{"lineNumber":110,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13"}],"authorContributionMap":{"4llysa":7,"jyztintan":1,"UdhayaShan1":45,"-":44,"appleraincoat":13}},{"path":"src/test/java/seedu/realodex/ui/TestFxmlObject.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.ui;","lastModifiedDate":"2024-03-19"},{"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":{"UdhayaShan1":1,"-":44}},{"path":"src/test/java/seedu/realodex/ui/UiPartTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"UdhayaShan1"},"content":"package seedu.realodex.ui;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import static seedu.realodex.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"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":"UdhayaShan1"},"content":"import seedu.realodex.MainApp;","lastModifiedDate":"2024-03-19"},{"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":"2019-03-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new TestUiPart\u003cObject\u003e((URL) null, new Object()));","lastModifiedDate":"2019-03-14"},{"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":"2019-03-14"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertThrows(AssertionError.class, () -\u003e new TestUiPart\u003cObject\u003e(missingFileUrl, new Object()));","lastModifiedDate":"2019-03-14"},{"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":"2019-03-14"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertThrows(AssertionError.class, () -\u003e new TestUiPart\u003cObject\u003e(invalidFileUrl, new Object()));","lastModifiedDate":"2019-03-14"},{"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":"2019-03-14"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new TestUiPart\u003cObject\u003e((String) null, new Object()));","lastModifiedDate":"2019-03-14"},{"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":"2019-03-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new TestUiPart\u003cObject\u003e(MISSING_FILE_PATH, new Object()));","lastModifiedDate":"2019-03-14"},{"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":"2019-03-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertThrows(AssertionError.class, () -\u003e new TestUiPart\u003cObject\u003e(INVALID_FILE_PATH, new Object()));","lastModifiedDate":"2019-03-14"},{"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":{"UdhayaShan1":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":"UdhayaShan1"},"content":"\u003c?import seedu.realodex.ui.TestFxmlObject?\u003e","lastModifiedDate":"2024-03-19"},{"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":{"-":3,"UdhayaShan1":1}},{"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":"UdhayaShan1"},"content":"\u003cfx:root type\u003d\"seedu.realodex.ui.TestFxmlObject\" xmlns\u003d\"http://javafx.com/javafx/17\"","lastModifiedDate":"2024-03-19"},{"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":{"-":5,"UdhayaShan1":1}}] diff --git a/AY2324S2-CS2103T-W10-1_tp_master/commits.json b/AY2324S2-CS2103T-W10-1_tp_master/commits.json index 315ae13f..8dfe962a 100644 --- a/AY2324S2-CS2103T-W10-1_tp_master/commits.json +++ b/AY2324S2-CS2103T-W10-1_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"4llysa":[{"date":"2024-02-28","commitResults":[{"hash":"4edae23e8c0a40d27feed0c0952d3777d72e8160","isMergeCommit":false,"messageTitle":"Update aboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":50,"deletions":4}}},{"hash":"d56389db3f11b83be10d776c64ca444a967ff1ad","isMergeCommit":true,"messageTitle":"Merge pull request #23 from 4llysa/update-aboutus-allysa","messageBody":"Update AboutUs (allysa)","fileTypesAndContributionMap":{}},{"hash":"4ca21bc9822949aa7b61b8a5653357d141174b6f","isMergeCommit":true,"messageTitle":"Merge pull request #28 from jyztintan/update-aboutus-justin","messageBody":"Update AboutUs for Justin","fileTypesAndContributionMap":{}},{"hash":"453d7fe7a4d3702c4a8d9db42d8a591f576675ff","isMergeCommit":false,"messageTitle":"Update default.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"0cf42e805cfa7b6046ebe2e8724f4e6b0e1598b0","isMergeCommit":true,"messageTitle":"Merge pull request #43 from 4llysa/update-site-wide-settings","messageBody":"Update default.md","fileTypesAndContributionMap":{}},{"hash":"f5a2e60c73fb24855344ad7cac4928c65acef1b9","isMergeCommit":true,"messageTitle":"Merge pull request #40 from UdhayaShan1/update-readme-contents","messageBody":"Update README contents and workflow badge","fileTypesAndContributionMap":{}},{"hash":"c8346f21064326c8d0d7d821add856a36cde5e11","isMergeCommit":false,"messageTitle":"Update NFRs and Glossary of DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"36c106789d6a42e877559c606a12cf7604d3592e","isMergeCommit":true,"messageTitle":"Merge pull request #45 from wapisai/update-README","messageBody":"Update UG - delete clients","fileTypesAndContributionMap":{}},{"hash":"35b1766c3fa9383d16c708f5c9698831aad6115b","isMergeCommit":true,"messageTitle":"Merge pull request #47 from wapisai/update-DG","messageBody":"Update dg","fileTypesAndContributionMap":{}},{"hash":"1095137d69f94180aa20b2ceaee1a606c3c265fe","isMergeCommit":true,"messageTitle":"Merge pull request #51 from jyztintan/update-developer-guide","messageBody":"Update Developer Guide User Stories","fileTypesAndContributionMap":{}}]},{"date":"2024-03-07","commitResults":[{"hash":"17e1776bcc7824c850dc4a531972d9d6eb13b22b","isMergeCommit":false,"messageTitle":"Standardise resumption of use case in use case extensions","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":26,"deletions":13}}},{"hash":"c5243d3a286876a70e712ecf92ae2ad70bc634b1","isMergeCommit":false,"messageTitle":"Update Glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}},{"hash":"23ac757fd671567c5529ed6c136644e41ea00c6e","isMergeCommit":false,"messageTitle":"Update Dg","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":3}}}]},{"date":"2024-03-15","commitResults":[{"hash":"a8ad239710fcba4b730781ad945de71d64fb1217","isMergeCommit":false,"messageTitle":"Modify Tag to be an enum","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":38,"deletions":8},"test-code":{"insertions":1,"deletions":1}}},{"hash":"a5a9065d23382f24d962f83c94a8dececab0931a","isMergeCommit":false,"messageTitle":"Update error message of tags","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":12}}},{"hash":"ebfdfbc18b80483d9ba3f1316f581260a41939ad","isMergeCommit":false,"messageTitle":"Update import statements","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":3}}},{"hash":"30ec927cd4991e9b210bd5fbe41dd2021fd429ad","isMergeCommit":false,"messageTitle":"Update Sample Data","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"785a63a8dbe15032f84f8c54ff81de1bb62f1ffa","isMergeCommit":false,"messageTitle":"Update Javadocs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":1}}},{"hash":"8ce4aea37fa6d64dfc8d5baa99f145af60584a5a","isMergeCommit":false,"messageTitle":"Update sample data","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"5992038cd1df5f2681e93dee25549879f60aeda6","isMergeCommit":false,"messageTitle":"update import statements","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2}}},{"hash":"ffae1ea12516a918c5e8f58c37a38a224ed98b4e","isMergeCommit":false,"messageTitle":"Update Test Cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":9},"test-code":{"insertions":93,"deletions":122}}},{"hash":"e3e9771fd528838f7a79e2246b0d409532392645","isMergeCommit":false,"messageTitle":"fix code style violations","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":3}}},{"hash":"cc427970ac8c9955d71e5d035a845e6a62e01b04","isMergeCommit":false,"messageTitle":"reorder import statements","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":55,"deletions":21}}},{"hash":"0d62e57a89b052da000fc0495c14719d2d835026","isMergeCommit":false,"messageTitle":"Update LogicManagerTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":13,"deletions":11}}}]},{"date":"2024-03-16","commitResults":[{"hash":"6b34aadfb460410d7b8526a5976261941549da5c","isMergeCommit":false,"messageTitle":"Fix missing tags in expectedPerson","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":12,"deletions":14}}},{"hash":"c02c5a2d2b69a03eef1a1d6369920ea5c59ca4e9","isMergeCommit":false,"messageTitle":"Standardise lowercase \"buyer\" and \"seller\" expected tags","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"302f1782f03074ae5425307adaf078a71df725d7","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of github.com:AY2324S2-CS2103T-W10-1/tp into v1.2-types-add_seller_buyer_status Merge to keep up with master branch","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"faeaa7fa1c0db9069d345264a03e0937a0c9e6f3","isMergeCommit":false,"messageTitle":"Update Add command format in UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":6}}}]},{"date":"2024-03-19","commitResults":[{"hash":"b99f0f54cb664fad25b6bd9493c07235edffe650","isMergeCommit":false,"messageTitle":"Update Tag tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":28,"deletions":6}}}]}],"jyztintan":[{"date":"2024-02-28","commitResults":[{"hash":"e0e586855e727aa8de7e7527f2a3099ea63eef41","isMergeCommit":false,"messageTitle":"Update AboutUs for Justin","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":97,"deletions":4}}},{"hash":"232d028660e104ec37a515b3aa37e3b6ee4c2c26","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-aboutus-justin","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c9877934b4340aa9d223e3ff34216c677b691ede","isMergeCommit":false,"messageTitle":"Update Developer Guide for Realodex","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":26,"deletions":11}}},{"hash":"4085c1766f7c3cc04799f6ba685b1ccf2cb9d4b3","isMergeCommit":false,"messageTitle":"Standardise phrasing for user stories","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":21,"deletions":21}}},{"hash":"1d0948b4e4a6f57f6e6ae89d494886f5d7d4db49","isMergeCommit":true,"messageTitle":"Merge pull request #53 from UdhayaShan1/update-dg-usecases","messageBody":"Update dg usecases","fileTypesAndContributionMap":{}}]},{"date":"2024-03-01","commitResults":[{"hash":"c217561e5624b4509017e562c465f6dfd28aefcd","isMergeCommit":false,"messageTitle":"Rename Developer Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-13","commitResults":[{"hash":"a19ddf21b568e8c8017481a7b8b5a32ca3f11a32","isMergeCommit":false,"messageTitle":"Add TeamWorkflow.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":33,"deletions":0}}},{"hash":"7d4bcacc11667c5582e1408bacc52bc92b0c1113","isMergeCommit":false,"messageTitle":"Fix style","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":28,"deletions":28}}},{"hash":"da23f13c4821e41fbfac460603e79ef579acfe77","isMergeCommit":false,"messageTitle":"Fix style","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}}]},{"date":"2024-03-16","commitResults":[{"hash":"15e847fbcf5c1d9aaa196b0cd57cd4163975e95e","isMergeCommit":false,"messageTitle":"Rename all instances of find to filter","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4},"other":{"insertions":31,"deletions":31},"docs":{"insertions":1,"deletions":1},"test-code":{"insertions":4,"deletions":4}}},{"hash":"13017cfa05228c60c0ab44a9f7bd528c703a32ea","isMergeCommit":false,"messageTitle":"Rename instances of find to filter","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"eaa4663bdf75f153a5723db3929cac08fb86b27d","isMergeCommit":false,"messageTitle":"Fix checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":16}}},{"hash":"c251d60b0eab0c61ba2f97356b59d387b9a9185b","isMergeCommit":false,"messageTitle":"Update test to encapsulate new behaviour of \u0027filter\u0027","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"c748f0183c74a357a2ee05a0857f968ee808d3bb","isMergeCommit":false,"messageTitle":"Update NameContainsKeywordsPredicate.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"d3444ef942b75b04c3895216fc1ddd973d14e117","isMergeCommit":false,"messageTitle":"Update test to encapsulate new \u0027filter\u0027 behaviour","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":13,"deletions":13}}},{"hash":"e741236fffc95a093be708b6c679f0d75485abc9","isMergeCommit":false,"messageTitle":"Update test to encapsulate new \u0027filter\u0027 behaviour","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":4}}},{"hash":"420a32404c63067e167f662a39994f8b55e3b6da","isMergeCommit":false,"messageTitle":"Update test to encapsulate new \u0027filter\u0027 behaviour","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"9d6e2d42a7e221b7156ead654b93f463e936cc34","isMergeCommit":false,"messageTitle":"Update test to encapsulate new \u0027filter\u0027 behaviour","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":43,"deletions":23}}},{"hash":"0b2d226f6184525e8ba9674004d146d74c1c5b89","isMergeCommit":false,"messageTitle":"Update test to encapsulate new \u0027filter\u0027 behaviour","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"33870c8c03b2629a18d28a8be51f44d75a04bf28","isMergeCommit":false,"messageTitle":"Fix checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":12}}},{"hash":"a0ccbd261604762f58294a1b7de15c0dd86a72df","isMergeCommit":false,"messageTitle":"Update filter to be case-insensitive","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":1}}},{"hash":"8607137911315b59e0518d88aa7f8080ff1e4319","isMergeCommit":false,"messageTitle":"Remove test where empty string as keyphrase","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":4}}},{"hash":"93764b9a421a408f8d4fc18a2535b8b929c8b89d","isMergeCommit":false,"messageTitle":"Update FilterCommandParserTest.java","messageBody":"Remove test where whitespaces did not affect keywords. Since the new implementation uses case-insensitive substring check, incorrect number of whitespaces will affect the check.\n","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":3}}},{"hash":"24887bec0ab400520cd31047328aaa8d2379562c","isMergeCommit":false,"messageTitle":"Update FilterCommandTest.java","messageBody":"Instead of checking for empty keyphrase (which will now return true in the new implementation), update the test to check that an invalid keyphrase (not a substring of any contact name) will have 0 clients listed.\n","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":8}}},{"hash":"59441ebd5d3fd334ced8bb44cbd350a07ea33582","isMergeCommit":false,"messageTitle":"Include message usage and find help for the filter command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":7}}},{"hash":"8c3daa9e3e927b1fa7520acb7a7ca6032a79e976","isMergeCommit":false,"messageTitle":"Update all instances of \u0027keyword\u0027 to \u0027keyphrase\u0027","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":50,"deletions":50},"other":{"insertions":29,"deletions":29},"test-code":{"insertions":18,"deletions":18}}},{"hash":"ae252cd743a1fbc1a39aa1d77f2116e82a64fc9b","isMergeCommit":false,"messageTitle":"Update all instances of \u0027keyword\u0027 to \u0027keyphrase\u0027","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"c05ebe0d9c854ea9c508fa9896c06fffa05975ed","isMergeCommit":false,"messageTitle":"Specify parameter type for message usage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"7e111213c248def370610b20670ece0387968dfc","isMergeCommit":false,"messageTitle":"Updating javadocs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"766950156aa93c38df0b1653fa5e214787814b1d","isMergeCommit":false,"messageTitle":"Update DG and UG for filter command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":3}}}]},{"date":"2024-03-17","commitResults":[{"hash":"3101ef2b63b753fbef86b1674b6b1de847a3011d","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-18","commitResults":[{"hash":"ab4824564d3a06ce10a4c48acca19e6287c7e3af","isMergeCommit":true,"messageTitle":"Merge pull request #102 from 4llysa/v1.2-ug-update_features","messageBody":"Update Add command format in UG","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"fb0e2660d95a46bfc786b4a3827cba7a18e2848b","isMergeCommit":true,"messageTitle":"Merge pull request #128 from 4llysa/v1.2-enhance-tag-testing","messageBody":"Update Tag tests","fileTypesAndContributionMap":{}}]}],"UdhayaShan1":[{"date":"2024-02-28","commitResults":[{"hash":"8e6ebdbf049058130823694a735a3dc7603ab41b","isMergeCommit":false,"messageTitle":"Add Udhaya info to AboutUs and udhaya.md portfolio placeholder","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":50,"deletions":4}}},{"hash":"a5069b88f7d74dee8ed1045ca126ce2b65a0b9da","isMergeCommit":true,"messageTitle":"Merge pull request #24 from UdhayaShan1/update-aboutus-udhaya","messageBody":"Add Udhaya info to AboutUs and udhaya.md portfolio placeholder","fileTypesAndContributionMap":{}},{"hash":"da90efc15f144fda315bec4a4af3694933db554b","isMergeCommit":false,"messageTitle":"Fix portfolio link in AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"fd2bdcf4957e0df11346c8f8230b8149fc436dd4","isMergeCommit":true,"messageTitle":"Merge pull request #27 from UdhayaShan1/update-aboutus-udhaya","messageBody":"Fix portfolio link in AboutUs","fileTypesAndContributionMap":{}},{"hash":"7e4a4f9d37bfa45c493598618c6dced925b22504","isMergeCommit":false,"messageTitle":"Update README contents and workflow badge","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":13,"deletions":6}}},{"hash":"acbafeb8234ebb1ef7a17f7a232b18bcf49b3c50","isMergeCommit":true,"messageTitle":"Merge pull request #42 from jyztintan/update-readme","messageBody":"Update UI image for Realodex","fileTypesAndContributionMap":{}},{"hash":"8daee56764ae7d3a7b5fa4ee27ed9e47942d0f81","isMergeCommit":false,"messageTitle":"Add user profile creation use case","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":92,"deletions":1}}},{"hash":"21b92a9d00de1ef8e084a8103b45312896072fce","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-dg-usecases","messageBody":"# Conflicts:\n#\tdocs/DeveloperGuide.md\n","fileTypesAndContributionMap":{}},{"hash":"b7e2e1c0cb7f2753619de1217a339b1425a0f438","isMergeCommit":false,"messageTitle":"Update wrong line in DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":1}}}]},{"date":"2024-03-01","commitResults":[{"hash":"a22ad5d1f05e7a5bb29da8cf4fcaea73da06763a","isMergeCommit":true,"messageTitle":"Merge pull request #59 from jyztintan/update-developer-guide","messageBody":"Rename Developer Guide","fileTypesAndContributionMap":{}},{"hash":"463e916dade6bdc56883e5e49c12b3c734d54309","isMergeCommit":true,"messageTitle":"Merge pull request #58 from jyztintan/update-gitignore","messageBody":"Update .gitignore to ignore bin and compiled class files","fileTypesAndContributionMap":{}},{"hash":"8264e553c8f15740b030c14c96bc4a048f4976ff","isMergeCommit":false,"messageTitle":"Update DG use cases according to new CLI constraint","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":54,"deletions":90}}},{"hash":"2a91d3495689145b8af3f3d4626e81f3f7280075","isMergeCommit":false,"messageTitle":"Remove family size extension use case","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":10}}}]},{"date":"2024-03-08","commitResults":[{"hash":"e4e07dd9ff47535f101f32078bc4478ef877bc66","isMergeCommit":true,"messageTitle":"Merge pull request #65 from 4llysa/fix-dg-formatting","messageBody":"Fix dg formatting","fileTypesAndContributionMap":{}}]},{"date":"2024-03-11","commitResults":[{"hash":"e01b29900e27f139ea98a93bcbc019f1ee0cf6ea","isMergeCommit":false,"messageTitle":"Add CLI syntax prefix for income and family size","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":1}}},{"hash":"8d8c2c921f6e3378683ed24e680412843ca7cd02","isMergeCommit":false,"messageTitle":"Add Income and Family classes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":0}}},{"hash":"0887b78c666cf18b917b14590ae3cf2e5a8699d9","isMergeCommit":false,"messageTitle":"Add Income and Family classes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":39,"deletions":4}}},{"hash":"80d2b7599443be1ef63fd0034eb848407566e8d4","isMergeCommit":false,"messageTitle":"Update person constructor, keep email but take in new fields","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":3}}},{"hash":"c08c519e1775f58e58269c78879e55549f8dbcce","isMergeCommit":false,"messageTitle":"Update AddressBookParser to take in new prefix and calling Person","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":4}}},{"hash":"ae1b4123cbc4718d8977e343a8b16cd60c299dff","isMergeCommit":false,"messageTitle":"Update ParserUtil to parse new fields, slight updates to new classes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":47,"deletions":8}}},{"hash":"bb6cbb1a4ce961bf2de6f1a074260e76b9996040","isMergeCommit":true,"messageTitle":"Merge branch \u0027v1.2-add-update_ParserUtil\u0027 into v1.2-add-new_fields_and_parsing","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"6a62701d0fe167807af55c42e02347425f1c19e3","isMergeCommit":false,"messageTitle":"Slight update to AddCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"8c8de2825d74fa27666d6c34adc5efff956ccd7a","isMergeCommit":false,"messageTitle":"Update Person hashCode, toString, equals to consider new fields","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":5}}},{"hash":"156806191b1163117c186f314ed5b910fc12275c","isMergeCommit":false,"messageTitle":"Update Add message and update family and income utility methods","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":30,"deletions":2}}},{"hash":"b3f196dabd96185494699bc1b8a525deffd124a1","isMergeCommit":false,"messageTitle":"Update FXML and EditCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":0}}},{"hash":"b1670438939b489e66c0b3962744b2e748b7feae","isMergeCommit":false,"messageTitle":"Edit EditCommand class to change to new Person constructor","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":25,"deletions":2}}},{"hash":"790277eb7f45a090bb148d633c51d79c53f66033","isMergeCommit":false,"messageTitle":"Change SampleDataUtil to new Person","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":13}}},{"hash":"a552a6b54e08fc65635548d7bd70aa5181b63111","isMergeCommit":false,"messageTitle":"Update JsonAdaptedPerson to add new fields and new Person constructor","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":25,"deletions":2}}},{"hash":"664f0cfca5b8e0e5614e212fb7279405324f5122","isMergeCommit":false,"messageTitle":"Update PersonBuilder to add new fields","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":9,"deletions":1}}},{"hash":"7de3f44dd98316d70f8eac914cd95be220d98e6f","isMergeCommit":true,"messageTitle":"Merge branch \u0027v1.2-add-update_person_class_dependencies\u0027 into v1.2-add-new_fields_and_parsing","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"985964312df5eeb9770303b658d8b972fae5f38d","isMergeCommit":false,"messageTitle":"Update JSON storage and PersonCard to reflect text","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":0}}},{"hash":"af3cd23f200a312d4d308f2e408a20bfdd8b5419","isMergeCommit":false,"messageTitle":"Fix add command message formatting","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":2}}},{"hash":"f7e1b64bc285e93068a6f4e744f7e72fb61d3381","isMergeCommit":true,"messageTitle":"Merge branch \u0027v1.2-add-update_storage_dependencies\u0027 into v1.2-add-new_fields_and_parsing","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4d9503578adde28d46fe7451adf475a8f2bc5be2","isMergeCommit":false,"messageTitle":"Added representation to make the GUI fields in list clearer","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":4}}},{"hash":"90f4ce8c69fcfcc0dfa2ca70ac7c08e29601258d","isMergeCommit":false,"messageTitle":"Fix several formatting issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":15},"test-code":{"insertions":20,"deletions":0}}},{"hash":"adee1c93241a8ca1ca5db4ed9a05767747d8a624","isMergeCommit":false,"messageTitle":"Fix JsonAdaptedPersonTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":31,"deletions":10}}},{"hash":"cda73984b9d8b4026d6f1cae3203fa93074d5518","isMergeCommit":false,"messageTitle":"Fix typicalAddressBook test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":1}}},{"hash":"3aa4ff5259c95df44a9d78b4a8b312cd99b2e148","isMergeCommit":false,"messageTitle":"Fix Person tags test","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"7cb3b9f0805f78aef69b9d6d6688d0ea3986d1f5","isMergeCommit":false,"messageTitle":"Fix Person toString test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":1}}},{"hash":"dda267db033bc80a1c5816034df46b7d49670bd9","isMergeCommit":false,"messageTitle":"Fix AddressBookParserTest parseCommand_add test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":0}}},{"hash":"6111fb2f8dd48e5caed5bfa97137f8ef44f9ac46","isMergeCommit":false,"messageTitle":"Fix all remaining tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":2},"test-code":{"insertions":81,"deletions":26}}},{"hash":"8bf0420cfd7252685a1701af78977ca049785528","isMergeCommit":true,"messageTitle":"Merge branch \u0027v1.2-add-fix_tests\u0027 into v1.2-add-new_fields_and_parsing","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e3ce88bba239a41ce4a00c70b07f8dbb4f168de5","isMergeCommit":false,"messageTitle":"Update success message for add","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":0}}},{"hash":"1d039bf3e7b3806faad80f1dda9957843e5e088d","isMergeCommit":false,"messageTitle":"Reorder imports","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":5}}},{"hash":"84b615efdc43e01a7c71b2046bf9cfc8ad8b450d","isMergeCommit":false,"messageTitle":"Fix remaining main checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":125,"deletions":20}}},{"hash":"2799ece45daba6966f27c4909516c88ebda8aa2f","isMergeCommit":false,"messageTitle":"Fix checkstyle for tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":30,"deletions":25}}}]},{"date":"2024-03-13","commitResults":[{"hash":"2183a1f077fc46c38bf6ea9ac377433a60af7fff","isMergeCommit":false,"messageTitle":"Fix reviewers comments","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":8}}},{"hash":"d1eed839a4169e291ecc2feb766f594486ebe398","isMergeCommit":true,"messageTitle":"Merge branch \u0027v1.2-add-fix_review_comments\u0027 into v1.2-add-new_fields_and_parsing","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"358b5c3770c160ccb83a37efe8a2a2aec3137cf4","isMergeCommit":true,"messageTitle":"Merge pull request #78 from UdhayaShan1/v1.2-add-new_fields_and_parsing","messageBody":"V1.2 Morph add command to take in income and family size. Tests passing.","fileTypesAndContributionMap":{}},{"hash":"dbc498f9ce0ee59d14aa34a9509c4a6d68acd520","isMergeCommit":true,"messageTitle":"Merge pull request #82 from jyztintan/v1.2-add_dev_workflow","messageBody":"Add TeamWorkflow.md","fileTypesAndContributionMap":{}}]},{"date":"2024-03-15","commitResults":[{"hash":"1cf3e2d429601e4dc5398b909d3b96dec1758a20","isMergeCommit":true,"messageTitle":"Merge pull request #85 from appleraincoat/v1.2-UserGuide-update_user_guide","messageBody":"Update the User Guide","fileTypesAndContributionMap":{}}]},{"date":"2024-03-16","commitResults":[{"hash":"94cd7a9af42522404b911733e2eab0e6ecd8b8bf","isMergeCommit":false,"messageTitle":"Update src/test/java/seedu/address/model/person/FamilyTest.java","messageBody":"Co-authored-by: Justin Tan \u003c98398940+jyztintan@users.noreply.github.com\u003e","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":1}}},{"hash":"0df7c5e693d0919c667ab2f7e2f0caaeaef4f5a2","isMergeCommit":true,"messageTitle":"Merge pull request #92 from wapisai/master","messageBody":"Add Edit command","fileTypesAndContributionMap":{}},{"hash":"73984dd630f16de4c4946d9c6f5984349277bee0","isMergeCommit":true,"messageTitle":"Merge pull request #95 from 4llysa/v1.2-types-add_seller_buyer_status","messageBody":"V1.2 types add seller buyer status","fileTypesAndContributionMap":{}},{"hash":"8cf16485ffa3ab550e876ce2c6310a308662478c","isMergeCommit":false,"messageTitle":"Edit EditFamilyDescriptorBuilder to add with\u003cFamily/Income\u003e","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":17,"deletions":0}}},{"hash":"2ef47f091383178fb4370c9d91c0c6e95e39a06c","isMergeCommit":false,"messageTitle":"Edit CommandTestUtil static to add new fields","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":13,"deletions":3}}},{"hash":"1faf4fb577561de95606bda0172870dbcbe46dbb","isMergeCommit":false,"messageTitle":"Add withTags to LogicManagerTest, add the new tag instead of empty","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":1}}},{"hash":"a739d145a2ef2edfef3b41dd3efc82ed742777ee","isMergeCommit":false,"messageTitle":"Small test additions to FamilyTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":1}}},{"hash":"1c3c6ed1a09c60bd0fbbc0e3d5465da7f89cbd52","isMergeCommit":false,"messageTitle":"Add simple tests for income","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":1}}},{"hash":"c0b953bdac3885474e03d5688638cece080f22bd","isMergeCommit":false,"messageTitle":"Add Person equals check for income and family fields when different","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":18,"deletions":2}}},{"hash":"3df1530d6d1d97f3a97ce3a86f97886ef9228e87","isMergeCommit":false,"messageTitle":"Add simple valid tag tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":15,"deletions":0}}},{"hash":"48303413c3dc2625bac3893b099ac237d3ff6ff7","isMergeCommit":false,"messageTitle":"Add JsonAdapatedPerson tests for income and family","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1},"test-code":{"insertions":36,"deletions":0}}},{"hash":"2fc3d2843adf1e4ea71c07c7b3193fba6c580bfc","isMergeCommit":false,"messageTitle":"Add overlooked isValidFamily test","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":0}}},{"hash":"1242d0d285fe292e40d8e3d14297d73fb6105650","isMergeCommit":false,"messageTitle":"Fix checkstyle tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":9,"deletions":8}}}]},{"date":"2024-03-17","commitResults":[{"hash":"196e50a1dc6f9af8d37a54332ba1cfced887bd96","isMergeCommit":false,"messageTitle":"Move the Tags compulsory check to arePrefixesPresent instead","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":4},"test-code":{"insertions":1,"deletions":1}}},{"hash":"8daedabc45824dd3504188788b7c6354ed5c5f61","isMergeCommit":false,"messageTitle":"Change Income to store value as String field instead","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"05706b3d38664939c72d810d0c7c38fa30127e8a","isMergeCommit":false,"messageTitle":"Change family size field to String instead and fix tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":3},"test-code":{"insertions":10,"deletions":32}}},{"hash":"40ab745624d1d49302fedbcc6ff1302a8f6e9bd1","isMergeCommit":false,"messageTitle":"Add one more test to check for valid phone argument","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":0}}},{"hash":"807ffb8b99b36c43b7d4802cec3e7022f5f19783","isMergeCommit":false,"messageTitle":"Remove unnecessary NumberFormatException tests for income","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1},"test-code":{"insertions":7,"deletions":28}}},{"hash":"0741e8cf73857a59acb7ebc54ebeedaf6eb2e09a","isMergeCommit":false,"messageTitle":"Add income, family tests to AddCommandParser, slight edit to Tag tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":70,"deletions":8}}},{"hash":"b2497d35a98bf5f1af4dcf44842b457abe138890","isMergeCommit":false,"messageTitle":"Add \u00270\u0027 index check test for delete","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":0}}},{"hash":"93973c56b18b3b867a34f37d9a18ccf9dd0ec3bb","isMergeCommit":false,"messageTitle":"Add tests to account for income and family for EditCommandParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":59,"deletions":14}}},{"hash":"70a14bb015e456fbe909aa2d657f8957e0f98bfa","isMergeCommit":false,"messageTitle":"Add Income, Family tests to ParserUtil","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":57,"deletions":1}}},{"hash":"29c38a2c436c8c30fe6cbad476c4d2edc2af48b0","isMergeCommit":false,"messageTitle":"Fix checkstyles","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1},"test-code":{"insertions":38,"deletions":10}}},{"hash":"26ab9100b412a10aa902f28f1ec08aedf7f12fbb","isMergeCommit":false,"messageTitle":"Add minor OCD edit","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":2}}},{"hash":"d0a2e4550684f42309e041cea4ce1853898c2d07","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into v1.2b-tests-add_newtests_for_income_family","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"896e495ed0a8563f73aeb9854a708d47984fd6f6","isMergeCommit":false,"messageTitle":"Fix JsonAdaptedTest tests locally","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":5}}},{"hash":"ac9a2362817c298d4c88b98d49749d910fda91a5","isMergeCommit":false,"messageTitle":"Add null check for remark in JsonAdapatedPerson","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}}]},{"date":"2024-03-18","commitResults":[{"hash":"547477e1e2a1c5770585a82566a0405bcfe6f9ff","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-19","commitResults":[{"hash":"2bbcc3acdd22b6004ccb99e23a2ad65f838fc806","isMergeCommit":false,"messageTitle":"Add minor edit to DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":1}}},{"hash":"733a34fa9bf5d2cd524805a1fd2abd53238ac07a","isMergeCommit":false,"messageTitle":"Change package name from seedu.address to seedu.realodex","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":868,"deletions":868},"docs":{"insertions":15,"deletions":13},"test-code":{"insertions":3,"deletions":3}}},{"hash":"23051dcec611b259ac506d6e4dbe5034a58f857c","isMergeCommit":false,"messageTitle":"Change AddressBookParser to RealodexParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4},"other":{"insertions":4,"deletions":4}}},{"hash":"b662c685f19ad7afcb14af65164597f45f790771","isMergeCommit":false,"messageTitle":"Change AddressBook main class to Realodex","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":81,"deletions":80},"other":{"insertions":32,"deletions":32},"test-code":{"insertions":65,"deletions":65}}},{"hash":"9ec3bf866cc4572432cc2da81adabecc513b4ebc","isMergeCommit":false,"messageTitle":"Change AddressBookStorage and JsonSerializableStorage to ..Realodex","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":17,"deletions":17},"other":{"insertions":16,"deletions":16},"test-code":{"insertions":1,"deletions":1}}},{"hash":"d7bbc51e1996a16fc0aff102238cd5fa73a842d4","isMergeCommit":false,"messageTitle":"Rename back the json to AddressBook as it seems buggy","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4},"other":{"insertions":19,"deletions":19},"test-code":{"insertions":2,"deletions":2}}},{"hash":"66f724f48be6fcf3483473eccf06d582c5719c04","isMergeCommit":false,"messageTitle":"Update build gradle","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":1,"deletions":1}}},{"hash":"dff3c68a76961f966c031ba8c2d0d6560c17a46f","isMergeCommit":false,"messageTitle":"Rename Json packages","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":8,"deletions":8}}},{"hash":"c0349a9d6c697fc363ce9643845f1755edca3d26","isMergeCommit":false,"messageTitle":"Rename to JsonRealodexStorage","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":0,"deletions":0}}},{"hash":"6af77e605e1b494af58f3e3caba915c175dc1f9c","isMergeCommit":false,"messageTitle":"Rename to JsonRealodexStorage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":5},"test-code":{"insertions":17,"deletions":17}}},{"hash":"c6fa185e9cf4be939e9874e59c114568733dc113","isMergeCommit":false,"messageTitle":"Rename to JsonSerializableStorage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"other":{"insertions":13,"deletions":13}}},{"hash":"433d0e7da7890926ec29c535e46b9cac991465e9","isMergeCommit":false,"messageTitle":"Rename addressbook.json to realodex.json","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":6},"docs":{"insertions":2,"deletions":2},"test-code":{"insertions":3,"deletions":3}}},{"hash":"cd09f1ccce846b6cff843a03858e8a1166fac0e3","isMergeCommit":false,"messageTitle":"Fix realodex.json related tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":6}}},{"hash":"84fc786ce89a82b563b5395a300e751a1c889a85","isMergeCommit":false,"messageTitle":"Rename some methods to realodex","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":34,"deletions":34},"test-code":{"insertions":53,"deletions":53}}},{"hash":"d9102cba9dfe2bf3ce445a45b7eeb8d84a762b6f","isMergeCommit":false,"messageTitle":"Rename remaining methods to Realodex","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":25,"deletions":25},"test-code":{"insertions":33,"deletions":33}}},{"hash":"c4fab7f78f20a39c4394911cdbafdd97d9b25607","isMergeCommit":false,"messageTitle":"Rename remaining methods","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4},"other":{"insertions":1,"deletions":1}}},{"hash":"0f3e7a8341711c3719fb8cbdab7cb27cd0f2576b","isMergeCommit":false,"messageTitle":"Update teams\u0027 md files","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}},{"hash":"4f2bcbb78e48fe1255bd47087ecd2d026d49ff70","isMergeCommit":false,"messageTitle":"Update remaining fields and site json","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":26,"deletions":26},"test-code":{"insertions":13,"deletions":13}}},{"hash":"1613bc6f53926a66f5d48ddd028ebd2089a9ef89","isMergeCommit":false,"messageTitle":"Fix checkstyles","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":4},"test-code":{"insertions":7,"deletions":7}}},{"hash":"4dd63e6fae1ab3fab9226b5613b5123c2cc526b6","isMergeCommit":false,"messageTitle":"Change remaining comments that contains address book","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":39,"deletions":39},"test-code":{"insertions":6,"deletions":6}}},{"hash":"adc2bcf7cc89afb9a2313f949383e5e85940dd75","isMergeCommit":false,"messageTitle":"Edit minor reference to address-book","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-20","commitResults":[{"hash":"1fc12180e5b79473e295a3020fcd948570a6d2d1","isMergeCommit":true,"messageTitle":"Merge pull request #124 from appleraincoat/v1.2-Help-Update_Help_Messages","messageBody":"Update the help messages","fileTypesAndContributionMap":{}},{"hash":"0a8cf99e2e1f9e44eb19cbd682485677dbfb2a9c","isMergeCommit":true,"messageTitle":"Merge pull request #123 from appleraincoat/v1.2-Update_UG","messageBody":"Update UG to include new commands and updated commands in v1.2","fileTypesAndContributionMap":{}},{"hash":"db1c1be1028aefe5c6db7b597b69400fe5c54cec","isMergeCommit":true,"messageTitle":"Merge pull request #122 from wapisai/editcommand","messageBody":"Enhance Edit Command with Remark and Tag Fields","fileTypesAndContributionMap":{}},{"hash":"99803b453d0d51d6da77ab392157a1f00eeec168","isMergeCommit":true,"messageTitle":"Merge pull request #129 from appleraincoat/v1.2-Fix_Merge_Conflict","messageBody":"Rename all occurrences of `AddressBook` to `Realodex` with merge conflict resolving","fileTypesAndContributionMap":{}},{"hash":"44bf88e383b6baa14b68eb69f3c2ad4c4d564024","isMergeCommit":false,"messageTitle":"Add Remark tests for future expansion","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":0},"test-code":{"insertions":59,"deletions":1}}},{"hash":"36c2e2bd2a93ecb6cf7ae567cba1456b7926c228","isMergeCommit":false,"messageTitle":"Add EditPersonDescriptorTest different remarks test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":0}}},{"hash":"edf327c1181d931cbd7bcdf14d776109ecd0437c","isMergeCommit":false,"messageTitle":"Add PersonTest different remarks test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":0}}},{"hash":"2fb204fe51bbf684ed6acb549749066d7f9f43be","isMergeCommit":false,"messageTitle":"Add remarks to CommandTestUtil test subjects","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":2}}},{"hash":"8cec41d2cab1c9ad27a4fd2ee47a0b3e2b4857a7","isMergeCommit":false,"messageTitle":"Add optional remark test to AddCommandParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":32,"deletions":8}}},{"hash":"3ad5ac1147a2ec2130dfa953e550db2ff0bc97e8","isMergeCommit":false,"messageTitle":"Add some DeleteCommandParser tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0},"test-code":{"insertions":7,"deletions":2}}},{"hash":"f1fab3260c9b69ca94b48558a128c60457d1ead0","isMergeCommit":false,"messageTitle":"Add invalid name ParseException throw testto DeleteCommandParser","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":12,"deletions":0}}},{"hash":"081096fadc5f813929c38a1b1d70e6c7aa65efb8","isMergeCommit":false,"messageTitle":"Add small remark test to EditCommandParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":13,"deletions":3}}},{"hash":"c5f8afcbd621aed6e12f05e7b36f443eb2f74c1e","isMergeCommit":false,"messageTitle":"Add remark tests to ParserUtilTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":21,"deletions":0}}},{"hash":"5eacc27e185ab5bd713e6ef2b0dce75b4f74eb5c","isMergeCommit":false,"messageTitle":"Add delete by name parser test to RealodexParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":13,"deletions":1}}},{"hash":"d6e97613d5d26f5c7d44129522342de7f85f60e7","isMergeCommit":false,"messageTitle":"Fix checkstyles","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":13,"deletions":5}}},{"hash":"6e0d7e08a72d23f9476fcc4442e4c591fa5d7537","isMergeCommit":false,"messageTitle":"Remove assertion","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"24e97ccdf9b8ab1b39512a4fb2edc12fc0b8c52a","isMergeCommit":false,"messageTitle":"Update src/main/java/seedu/realodex/model/remark/Remark.java","messageBody":"Co-authored-by: Justin Tan \u003c98398940+jyztintan@users.noreply.github.com\u003e","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":6}}},{"hash":"18ecfd9227a1426fafaca5deb3e140885b7235b4","isMergeCommit":false,"messageTitle":"Fix checkstyles","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":9}}},{"hash":"cabae7ebd91a75154dfff4175c2f6e866ec0115b","isMergeCommit":true,"messageTitle":"Merge pull request #131 from UdhayaShan1/v1.2b-enhance-tests_remark_delete_tests","messageBody":"V1.2b enhance tests, add `Remark` and `DeleteCommand` related tests","tags":["v1.2"],"fileTypesAndContributionMap":{}}]},{"date":"2024-03-22","commitResults":[{"hash":"1721df19ba496cc288d679ecc8e6651dcffd2fee","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into week9-uml-update","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ec30304977a00e736a92e0a6f96d8e6d6f26aa10","isMergeCommit":false,"messageTitle":"Edit ModelClassDiagram to match new classes and new fields for Person","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":17,"deletions":11}}},{"hash":"2eb8634536f6b2e72fbfff68aaad68be844da0f2","isMergeCommit":false,"messageTitle":"Edit ArchitectureSequenceDiagram.puml","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"14d2d296d80d273713a4a777457d5a0eaeb4bd35","isMergeCommit":false,"messageTitle":"Edit DeleteSequenceDiagram.puml","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":10}}},{"hash":"b10d61f29eb36556c4ae0d2fdee46b948b05f2f1","isMergeCommit":false,"messageTitle":"Edit ParserClasses.pump","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"c009e37fb0c750d259e6333b8afdb11051f5f0a3","isMergeCommit":false,"messageTitle":"Edit size of ModelClassDiagram.puml","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-23","commitResults":[{"hash":"53d7ebe1993a6f4af6173c245a7a45f5f1c84ea8","isMergeCommit":true,"messageTitle":"Merge pull request #132 from UdhayaShan1/week9-uml-udhaya_update","messageBody":"Week 9 `ModelClassDiagram` UML update ","fileTypesAndContributionMap":{}}]}],"appleraincoat":[{"date":"2024-02-28","commitResults":[{"hash":"82b7f440d5887937d69c12dfbbcb63a75276adb8","isMergeCommit":false,"messageTitle":"Add AboutUs information for appleraincoat","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":0}}},{"hash":"0efa042c823393bca5465d6f63bc26366ba21aee","isMergeCommit":false,"messageTitle":"Add AboutUS information for appleraincoat","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":11}}},{"hash":"04d3c9c69122b8a6025931c165475469b1e53936","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into Update-AboutUs-James","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d31985fb741f333a1296ad51863767205427130b","isMergeCommit":true,"messageTitle":"Merge pull request #26 from appleraincoat/Update-AboutUs-James","messageBody":"Update AboutUs (James)","fileTypesAndContributionMap":{}},{"hash":"5113c3ffddd221b260e59b13eeaf5d7524335f36","isMergeCommit":false,"messageTitle":"Update line wrapping","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":5}}},{"hash":"9d4a493f78304718a23fc9f1324f02be6d48b456","isMergeCommit":true,"messageTitle":"Merge pull request #30 from appleraincoat/Update-AboutUs-James","messageBody":"Update line wrapping","fileTypesAndContributionMap":{}},{"hash":"f0b10cd67188fd774ea06418259c3b905335fd7f","isMergeCommit":false,"messageTitle":"Edit the title to include our project name","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":2}}},{"hash":"af788c4c44fb4bd4e3a378d35619092f2a643ed5","isMergeCommit":false,"messageTitle":"Add the add command for adding clients and changed phrasing to suit the Realodex","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":27,"deletions":107}}},{"hash":"c7d1e42b61c815d50d78f69d0d290232e548af2a","isMergeCommit":true,"messageTitle":"Merge pull request #54 from appleraincoat/Edit-UG-Add-Command","messageBody":"Add the add command for adding clients and changed phrasing to suit the Realodex","fileTypesAndContributionMap":{}}]},{"date":"2024-03-01","commitResults":[{"hash":"5775e65c7f41886f8d647c30be1f1479d064d4e6","isMergeCommit":false,"messageTitle":"Update the UserGuide by editing and removing wrong information","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":14,"deletions":29}}},{"hash":"e7c5b206172fcd8b60494b8c611cc123c6d223af","isMergeCommit":true,"messageTitle":"Merge pull request #63 from UdhayaShan1/update-dg-newconstraints","messageBody":"Update DG use cases according to new CLI constraint","fileTypesAndContributionMap":{}},{"hash":"0540d49eb41ee7318ff900484a48a6e49f683321","isMergeCommit":false,"messageTitle":"Fix a minor issue","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"5f249a547b10be1c7b102b32b854672fb76047bc","isMergeCommit":true,"messageTitle":"Merge pull request #62 from appleraincoat/Edit-UG-Add-Command-Again","messageBody":"Update the UserGuide by editing and removing wrong information","fileTypesAndContributionMap":{}},{"hash":"e86c3cc878725f96e1d5f96553053ce27be2ca50","isMergeCommit":true,"messageTitle":"Merge pull request #64 from UdhayaShan1/update-dg-newconstraints","messageBody":"Remove family size extension use case","fileTypesAndContributionMap":{}}]},{"date":"2024-03-13","commitResults":[{"hash":"d44495ebba330e1d4b2a419a1d485189c04bbe4f","isMergeCommit":false,"messageTitle":"Add the help message for the add command and modify message for the link to UG","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":2}}},{"hash":"75079c0936fff4e72751307c31d048d5ddf6dee7","isMergeCommit":false,"messageTitle":"Add the help messages for all commands","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":48,"deletions":20}}},{"hash":"aa42b65deab18a5966d8e73b9d08269276e1a31e","isMergeCommit":false,"messageTitle":"Make changes from old project name to new project name Change Realodex logo","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":8},"test-code":{"insertions":1,"deletions":1}}},{"hash":"55e509c01b84feb387fc1df8e7df9c9ad3761297","isMergeCommit":false,"messageTitle":"Fix some codestyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":15}}},{"hash":"75665523807fcb836d3d2293d603868d71ff64e5","isMergeCommit":false,"messageTitle":"Update the User Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":24,"deletions":14}}},{"hash":"108f8a856793a8fe985c4b31ac1d2ede5a1004bd","isMergeCommit":false,"messageTitle":"Modify variable names for consistency","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":21}}}]},{"date":"2024-03-15","commitResults":[{"hash":"b5951b5fffa74469f5f6d2e0ddaa9f59944a0d62","isMergeCommit":false,"messageTitle":"Adjust copyurl button position","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"916ec29f823fa4941ed74467f900fd6a7db3459e","isMergeCommit":true,"messageTitle":"Merge pull request #83 from appleraincoat/v1.2-help-enhance_help_command","messageBody":"V1.2 help enhance help command","fileTypesAndContributionMap":{}}]},{"date":"2024-03-16","commitResults":[{"hash":"53f90798de0c11b806b42abf69af577dd662976c","isMergeCommit":false,"messageTitle":"Add the remark field to person","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":152,"deletions":33},"test-code":{"insertions":5,"deletions":10}}}]},{"date":"2024-03-17","commitResults":[{"hash":"31ebfc85e5f17cfd319e8a51501240d0b1c1cf05","isMergeCommit":false,"messageTitle":"Fix some of the issues with test arising from the new field","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":46,"deletions":26}}},{"hash":"848450a33a45010dc669db8413e85f132c9f5c96","isMergeCommit":false,"messageTitle":"Fix tests for the additional remark field and add new getvalue variant for remark that passes in empty string if there is none","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":4},"test-code":{"insertions":5,"deletions":15}}},{"hash":"cdc0a5943893ff35d27f6eb021f61f40e3c50efa","isMergeCommit":true,"messageTitle":"Merge branch \u0027v1.2-add-remark_field\u0027 into v1.2-add-resolve_merge_conflict","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/model/util/SampleDataUtil.java\n#\tsrc/main/java/seedu/address/ui/PersonCard.java\n#\tsrc/test/data/JsonSerializableAddressBookTest/\nduplicatePersonAddressBook.json\n#\tsrc/test/data/JsonSerializableAddressBookTest/\ntypicalPersonsAddressBook.json\n#\tsrc/test/java/seedu/address/logic/commands/CommandTestUtil.java\n#\tsrc/test/java/seedu/address/logic/parser/\nAddCommandParserTest.java\n#\tsrc/test/java/seedu/address/testutil/PersonBuilder.java\n#\tsrc/test/java/seedu/address/testutil/TypicalPersons.java\n\nFix some small issues with Add command\n","fileTypesAndContributionMap":{}},{"hash":"75d55a834b4fe76a041b72154b5ab6f0ee30e5f2","isMergeCommit":false,"messageTitle":"Fix remaining merge conflicts","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":40,"deletions":20}}},{"hash":"c9c481bc00c8a4bf10c73bd30f21828bbb00de38","isMergeCommit":false,"messageTitle":"Fix codestyle violations","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":3},"test-code":{"insertions":16,"deletions":13}}},{"hash":"8683f3d01892af2ed0c8f00dcc080027d9f41f6e","isMergeCommit":false,"messageTitle":"Fix small bugs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":5}}},{"hash":"6b3c185e0e301ee3b69f26034514c487bb8256d4","isMergeCommit":false,"messageTitle":"Remove line that has not implemented yet","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2}}},{"hash":"7367ed78ad8763e85a2b1d7f6930c268f5bf0fbd","isMergeCommit":false,"messageTitle":"Remove validation regex in remark","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":10}}},{"hash":"b339fe2bc3912cf7fcf485188144bbc7b969c76d","isMergeCommit":true,"messageTitle":"Merge pull request #112 from appleraincoat/v1.2-add-resolve_merge_conflict","messageBody":"V1.2 add remarks","fileTypesAndContributionMap":{}},{"hash":"449dd9950728ac24b1c110995b05a53026850a71","isMergeCommit":true,"messageTitle":"Merge pull request #104 from jyztintan/v1.2-filter-modify_find_to_filter","messageBody":"V1.2 Substring-Based \u0027Filter\u0027 Command","fileTypesAndContributionMap":{}}]},{"date":"2024-03-18","commitResults":[{"hash":"c4a965587dab3bc54853392311ba6f9ab6ddbb11","isMergeCommit":true,"messageTitle":"Merge pull request #109 from UdhayaShan1/v1.2b-tests-add_newtests_for_income_family","messageBody":"V1.2 refactor income and family, add all new tests for income and family fields","fileTypesAndContributionMap":{}},{"hash":"0eb64dd1317c0b902538441ced4a2780a0783b60","isMergeCommit":true,"messageTitle":"Merge pull request #118 from wapisai/master","messageBody":"Add \u0027Delete by Name\u0027 Functionality and Enhance Test Coverage","fileTypesAndContributionMap":{}},{"hash":"b14ee19bb47c9a1354696890b6193d11260512cd","isMergeCommit":false,"messageTitle":"Update UG to include new commands and updated commands in v1.2","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":63,"deletions":19}}},{"hash":"e41ea2cb25e5131c2f604209c3b69924d73a8091","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into v1.2-Update_UG","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"2d6b96301a1d80470ef5f1735b215b037f0f03d3","isMergeCommit":false,"messageTitle":"Update the help messages in the context of our new and modified commands in v1.2","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":6}}}]},{"date":"2024-03-19","commitResults":[{"hash":"e225bc93f3b1417d6047388475f71fa5cb58c795","isMergeCommit":false,"messageTitle":"Change minor details in the phrasing in the UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":16}}},{"hash":"b0d04bf5b31e9e5e4a122fd6d9cf20ed0d6a27ae","isMergeCommit":false,"messageTitle":"Edit help messages","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":11}}}]},{"date":"2024-03-20","commitResults":[{"hash":"8edaf9e1b31e3eceba16d267f6edd8f52a95dd57","isMergeCommit":true,"messageTitle":"Merge branch \u0027v1.2b-update-class_names\u0027 into v1.2-Fix_Merge_Conflict","messageBody":"# Conflicts:\n#\tsrc/main/java/seedu/realodex/logic/commands/EditCommand.java\n#\tsrc/main/java/seedu/realodex/logic/parser/EditCommandParser.java\n#\tsrc/test/java/seedu/realodex/logic/parser/\nEditCommandParserTest.java\n#\tsrc/test/java/seedu/realodex/testutil/\nEditPersonDescriptorBuilder.java\n","fileTypesAndContributionMap":{}}]}],"wapisai":[{"date":"2024-02-28","commitResults":[{"hash":"20a3b1ca523aa119d33d6e1b777f95dcbb2111e3","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":49,"deletions":3}}},{"hash":"7e7227ea246d1ad54b4cd696b01a7bca9a189cb7","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-AboutUs-Alicia","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c80c7f4dd1fa86bb7a81c197f6dffce29238f58a","isMergeCommit":true,"messageTitle":"Merge pull request #29 from wapisai/update-AboutUs-Alicia","messageBody":"Update AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"5eaa68df4fa703583b0333dad85f0f667bbfb66f","isMergeCommit":true,"messageTitle":"Merge pull request #39 from appleraincoat/Edit-README-Title","messageBody":"Edit the title to include our project name","fileTypesAndContributionMap":{}},{"hash":"dfff9ba769a80b131e583a7790f2d76ad7c03d87","isMergeCommit":true,"messageTitle":"Merge pull request #38 from wapisai/master","messageBody":"Add image","fileTypesAndContributionMap":{}},{"hash":"69ab9e12352a7082923abd58a678387719b510c8","isMergeCommit":false,"messageTitle":"Update UG - delete clients","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":14,"deletions":0}}},{"hash":"45288286143d37a9d70fd93bd2411064ee7a6b0c","isMergeCommit":false,"messageTitle":"Update DG - product scope","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":1}}},{"hash":"f616fbff85eacd6e4924df7c976d72975b66590d","isMergeCommit":true,"messageTitle":"Merge pull request #48 from 4llysa/update-docs","messageBody":"Update Developer Guide NFRs and Glossary","fileTypesAndContributionMap":{}},{"hash":"6236c3b63d0837533e3f875cca1fd03c5f23f7c1","isMergeCommit":false,"messageTitle":"Update DG - Use cases","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":34,"deletions":11}}}]},{"date":"2024-03-15","commitResults":[{"hash":"bc3e7c234131b82cc0b09949160da7fe7a7e6c7b","isMergeCommit":false,"messageTitle":"Add Edit command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":3}}}]},{"date":"2024-03-16","commitResults":[{"hash":"40fd3d214586138e1c49932830ded0002ba487de","isMergeCommit":false,"messageTitle":"Add FamilyTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":81,"deletions":0}}},{"hash":"e1f607d9eb871ed3b11f52ee3da3c2e84316061d","isMergeCommit":false,"messageTitle":"Add IncomeTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":79,"deletions":0}}},{"hash":"459448b06a1f42d55175b5285302f7ca43532f6e","isMergeCommit":false,"messageTitle":"Fix checks","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":3}}},{"hash":"50976a1a541712fe3026e7c61b0f4dfab6c03fa9","isMergeCommit":false,"messageTitle":"Fix checks","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":5}}},{"hash":"1f7832810c2be208b38594c412720edb23da676b","isMergeCommit":false,"messageTitle":"Fix checks","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":5}}},{"hash":"c88569be6a8580d93010cad5b672638e0fa03548","isMergeCommit":false,"messageTitle":"Fix checks","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":8,"deletions":3}}},{"hash":"2594d22bb4dbc9b2278e040c9f064d371be48b53","isMergeCommit":false,"messageTitle":"Fix checks","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-17","commitResults":[{"hash":"0d1a23d806991a5f897db7f417d293e6266d8688","isMergeCommit":false,"messageTitle":"Add delete by name","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":44,"deletions":10}}},{"hash":"df2cf6893820853e0bd6ba62db2674899f8e3945","isMergeCommit":false,"messageTitle":"Update DeleteCommandTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":23,"deletions":0}}},{"hash":"8150dcda5a2bee1b1921178f185c19456b3fd248","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/master\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e44e9d2e9f2ab244020a71418357f857d7cb69b9","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e95b556b420ad33ec09fc03cd15483d51bec24cb","isMergeCommit":false,"messageTitle":"Update DeleteCommandParser.java","messageBody":"Co-authored-by: appleraincoat \u003c122220024+appleraincoat@users.noreply.github.com\u003e","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"49525f2e867619976efb519bd80a3ec53e770ab3","isMergeCommit":false,"messageTitle":"Fix checks","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":1}}},{"hash":"d52327e46aedfe1d12e9c67a12409e229d22e5a9","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/master\u0027","messageBody":"# Conflicts:\n#\tsrc/main/java/seedu/address/logic/commands/DeleteCommand.java\n","fileTypesAndContributionMap":{}},{"hash":"a15ed93af264328575005fb0272142b21d01c1b8","isMergeCommit":false,"messageTitle":"Fix checks","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":1}}},{"hash":"0b92fce88fbac4690e1d58c21bfae89db7242085","isMergeCommit":false,"messageTitle":"Update src/main/java/seedu/address/logic/commands/DeleteCommand.java","messageBody":"Co-authored-by: Udhaya \u003c39399745+UdhayaShan1@users.noreply.github.com\u003e","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"ea76e4088bba8a413ee527d2d5bb0e8e0fb0bc0a","isMergeCommit":false,"messageTitle":"Fix SLAP","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":12}}},{"hash":"e4ef1c2a34474a48578777c625ac040902b0bddf","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/editcommand\u0027","messageBody":"# Conflicts:\n#\tsrc/main/java/seedu/address/logic/parser/DeleteCommandParser.java\n","fileTypesAndContributionMap":{}},{"hash":"433790bf62200cb52e14aa3a2ffc5ade456d6a9b","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/master\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8fc1dcb104af433c2e37ab038bcc9d9af3f289e4","isMergeCommit":false,"messageTitle":"Fix tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0},"test-code":{"insertions":2,"deletions":2}}},{"hash":"3968904755f0bc75c3f010358dd0b019f319239e","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W10-1:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-18","commitResults":[{"hash":"40c63802c8e4c69e19389b152c48408290fb84e3","isMergeCommit":false,"messageTitle":"Add DeleteCommandExecutor","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":32,"deletions":19}}},{"hash":"7d3541314f7a77a6c8adc0d2a8f123adf8242e8a","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/master\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"bedb7166ceecb85420fbcdc3badc18e9a9ead3aa","isMergeCommit":false,"messageTitle":"Add tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":2},"test-code":{"insertions":36,"deletions":1}}},{"hash":"eae458e667983206cd132446ef74446349312cde","isMergeCommit":false,"messageTitle":"Add tag and remark to edit command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":30}}},{"hash":"c7d0bcb804320a7542f529245ff875ff062eb3ae","isMergeCommit":false,"messageTitle":"Update src/test/java/seedu/address/logic/commands/DeleteCommandTest.java","messageBody":"Co-authored-by: Udhaya \u003c39399745+UdhayaShan1@users.noreply.github.com\u003e","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"0f41d1de5dd510114a7f5e55e7161763043f0c10","isMergeCommit":false,"messageTitle":"Update src/main/java/seedu/address/logic/commands/delete/DeleteCommandExecutor.java","messageBody":"Co-authored-by: appleraincoat \u003c122220024+appleraincoat@users.noreply.github.com\u003e","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"59077b1c61b0a30ec10fe7a98dbac6cac2548a39","isMergeCommit":false,"messageTitle":"Update src/test/java/seedu/address/logic/commands/DeleteCommandTest.java","messageBody":"Co-authored-by: appleraincoat \u003c122220024+appleraincoat@users.noreply.github.com\u003e","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"b01b971e12245eaae5c83267fb351881a80eb3d7","isMergeCommit":false,"messageTitle":"Update src/test/java/seedu/address/logic/commands/DeleteCommandTest.java","messageBody":"Co-authored-by: appleraincoat \u003c122220024+appleraincoat@users.noreply.github.com\u003e","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"7aafbc94183ee10896dac97250c84707db7ba7f0","isMergeCommit":false,"messageTitle":"Update src/test/java/seedu/address/logic/commands/DeleteCommandTest.java","messageBody":"Co-authored-by: appleraincoat \u003c122220024+appleraincoat@users.noreply.github.com\u003e","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-19","commitResults":[{"hash":"6c23cc6faa3347441bda2ef75731597d9efc09db","isMergeCommit":false,"messageTitle":"Add tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":20,"deletions":3}}},{"hash":"19b91b86e6d7c3e7e92658be6af7f4f86dd40856","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/editcommand\u0027 into editcommand","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"592463e74028965d85c241e6394705b22d399a13","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into editcommand","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"7a4b01c96b444b03dab6ecd651411bd19ec7406d","isMergeCommit":false,"messageTitle":"Fix checks","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":15,"deletions":15}}},{"hash":"0da8259d31bd8917fe1903e886db3b48f953c86c","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/editcommand\u0027 into editcommand","messageBody":"# Conflicts:\n#\tdocs/UserGuide.md\n","fileTypesAndContributionMap":{}},{"hash":"df0479038b8403c62899c5d4379f0b0059937688","isMergeCommit":false,"messageTitle":"Fix checks","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"0d2faface44dffa6082f82c5ad0bc5b04007c284","isMergeCommit":false,"messageTitle":"Fix checks","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":3,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"4llysa":{"docs":69,"functional-code":40,"test-code":81},"jyztintan":{"docs":167,"functional-code":66,"test-code":95},"UdhayaShan1":{"docs":183,"functional-code":900,"test-code":1254,"other":2},"appleraincoat":{"docs":84,"functional-code":189,"test-code":50},"wapisai":{"docs":24,"functional-code":99,"test-code":184}},"authorContributionVariance":{"4llysa":6038.8315,"jyztintan":8983.369,"UdhayaShan1":282158.97,"appleraincoat":4814.8877,"wapisai":2881.7432},"authorDisplayNameMap":{"4llysa":"CS2103T-W10-1 ALLY..YING","jyztintan":"CS2103T-W10-1 TAN ..STIN","UdhayaShan1":"CS2103T-W10-1 SHAN..HAYA","appleraincoat":"CS2103T-W10-1 LAU ..AMES","wapisai":"CS2103T-W10-1 ALIC..I QI"}} +{"authorDailyContributionsMap":{"4llysa":[{"date":"2024-02-28","commitResults":[{"hash":"4edae23e8c0a40d27feed0c0952d3777d72e8160","isMergeCommit":false,"messageTitle":"Update aboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":50,"deletions":4}}},{"hash":"d56389db3f11b83be10d776c64ca444a967ff1ad","isMergeCommit":true,"messageTitle":"Merge pull request #23 from 4llysa/update-aboutus-allysa","messageBody":"Update AboutUs (allysa)","fileTypesAndContributionMap":{}},{"hash":"4ca21bc9822949aa7b61b8a5653357d141174b6f","isMergeCommit":true,"messageTitle":"Merge pull request #28 from jyztintan/update-aboutus-justin","messageBody":"Update AboutUs for Justin","fileTypesAndContributionMap":{}},{"hash":"453d7fe7a4d3702c4a8d9db42d8a591f576675ff","isMergeCommit":false,"messageTitle":"Update default.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"0cf42e805cfa7b6046ebe2e8724f4e6b0e1598b0","isMergeCommit":true,"messageTitle":"Merge pull request #43 from 4llysa/update-site-wide-settings","messageBody":"Update default.md","fileTypesAndContributionMap":{}},{"hash":"f5a2e60c73fb24855344ad7cac4928c65acef1b9","isMergeCommit":true,"messageTitle":"Merge pull request #40 from UdhayaShan1/update-readme-contents","messageBody":"Update README contents and workflow badge","fileTypesAndContributionMap":{}},{"hash":"c8346f21064326c8d0d7d821add856a36cde5e11","isMergeCommit":false,"messageTitle":"Update NFRs and Glossary of DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"36c106789d6a42e877559c606a12cf7604d3592e","isMergeCommit":true,"messageTitle":"Merge pull request #45 from wapisai/update-README","messageBody":"Update UG - delete clients","fileTypesAndContributionMap":{}},{"hash":"35b1766c3fa9383d16c708f5c9698831aad6115b","isMergeCommit":true,"messageTitle":"Merge pull request #47 from wapisai/update-DG","messageBody":"Update dg","fileTypesAndContributionMap":{}},{"hash":"1095137d69f94180aa20b2ceaee1a606c3c265fe","isMergeCommit":true,"messageTitle":"Merge pull request #51 from jyztintan/update-developer-guide","messageBody":"Update Developer Guide User Stories","fileTypesAndContributionMap":{}}]},{"date":"2024-03-07","commitResults":[{"hash":"17e1776bcc7824c850dc4a531972d9d6eb13b22b","isMergeCommit":false,"messageTitle":"Standardise resumption of use case in use case extensions","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":26,"deletions":13}}},{"hash":"c5243d3a286876a70e712ecf92ae2ad70bc634b1","isMergeCommit":false,"messageTitle":"Update Glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}},{"hash":"23ac757fd671567c5529ed6c136644e41ea00c6e","isMergeCommit":false,"messageTitle":"Update Dg","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":3}}}]},{"date":"2024-03-15","commitResults":[{"hash":"a8ad239710fcba4b730781ad945de71d64fb1217","isMergeCommit":false,"messageTitle":"Modify Tag to be an enum","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":38,"deletions":8},"test-code":{"insertions":1,"deletions":1}}},{"hash":"a5a9065d23382f24d962f83c94a8dececab0931a","isMergeCommit":false,"messageTitle":"Update error message of tags","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":12}}},{"hash":"ebfdfbc18b80483d9ba3f1316f581260a41939ad","isMergeCommit":false,"messageTitle":"Update import statements","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":3}}},{"hash":"30ec927cd4991e9b210bd5fbe41dd2021fd429ad","isMergeCommit":false,"messageTitle":"Update Sample Data","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"785a63a8dbe15032f84f8c54ff81de1bb62f1ffa","isMergeCommit":false,"messageTitle":"Update Javadocs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":1}}},{"hash":"8ce4aea37fa6d64dfc8d5baa99f145af60584a5a","isMergeCommit":false,"messageTitle":"Update sample data","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"5992038cd1df5f2681e93dee25549879f60aeda6","isMergeCommit":false,"messageTitle":"update import statements","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2}}},{"hash":"ffae1ea12516a918c5e8f58c37a38a224ed98b4e","isMergeCommit":false,"messageTitle":"Update Test Cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":9},"test-code":{"insertions":93,"deletions":122}}},{"hash":"e3e9771fd528838f7a79e2246b0d409532392645","isMergeCommit":false,"messageTitle":"fix code style violations","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":3}}},{"hash":"cc427970ac8c9955d71e5d035a845e6a62e01b04","isMergeCommit":false,"messageTitle":"reorder import statements","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":55,"deletions":21}}},{"hash":"0d62e57a89b052da000fc0495c14719d2d835026","isMergeCommit":false,"messageTitle":"Update LogicManagerTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":13,"deletions":11}}}]},{"date":"2024-03-16","commitResults":[{"hash":"6b34aadfb460410d7b8526a5976261941549da5c","isMergeCommit":false,"messageTitle":"Fix missing tags in expectedPerson","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":12,"deletions":14}}},{"hash":"c02c5a2d2b69a03eef1a1d6369920ea5c59ca4e9","isMergeCommit":false,"messageTitle":"Standardise lowercase \"buyer\" and \"seller\" expected tags","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"302f1782f03074ae5425307adaf078a71df725d7","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of github.com:AY2324S2-CS2103T-W10-1/tp into v1.2-types-add_seller_buyer_status Merge to keep up with master branch","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"faeaa7fa1c0db9069d345264a03e0937a0c9e6f3","isMergeCommit":false,"messageTitle":"Update Add command format in UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":6}}}]},{"date":"2024-03-19","commitResults":[{"hash":"b99f0f54cb664fad25b6bd9493c07235edffe650","isMergeCommit":false,"messageTitle":"Update Tag tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":28,"deletions":6}}}]}],"jyztintan":[{"date":"2024-02-28","commitResults":[{"hash":"e0e586855e727aa8de7e7527f2a3099ea63eef41","isMergeCommit":false,"messageTitle":"Update AboutUs for Justin","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":97,"deletions":4}}},{"hash":"232d028660e104ec37a515b3aa37e3b6ee4c2c26","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-aboutus-justin","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c9877934b4340aa9d223e3ff34216c677b691ede","isMergeCommit":false,"messageTitle":"Update Developer Guide for Realodex","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":26,"deletions":11}}},{"hash":"4085c1766f7c3cc04799f6ba685b1ccf2cb9d4b3","isMergeCommit":false,"messageTitle":"Standardise phrasing for user stories","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":21,"deletions":21}}},{"hash":"1d0948b4e4a6f57f6e6ae89d494886f5d7d4db49","isMergeCommit":true,"messageTitle":"Merge pull request #53 from UdhayaShan1/update-dg-usecases","messageBody":"Update dg usecases","fileTypesAndContributionMap":{}}]},{"date":"2024-03-01","commitResults":[{"hash":"c217561e5624b4509017e562c465f6dfd28aefcd","isMergeCommit":false,"messageTitle":"Rename Developer Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-13","commitResults":[{"hash":"a19ddf21b568e8c8017481a7b8b5a32ca3f11a32","isMergeCommit":false,"messageTitle":"Add TeamWorkflow.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":33,"deletions":0}}},{"hash":"7d4bcacc11667c5582e1408bacc52bc92b0c1113","isMergeCommit":false,"messageTitle":"Fix style","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":28,"deletions":28}}},{"hash":"da23f13c4821e41fbfac460603e79ef579acfe77","isMergeCommit":false,"messageTitle":"Fix style","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}}]},{"date":"2024-03-16","commitResults":[{"hash":"15e847fbcf5c1d9aaa196b0cd57cd4163975e95e","isMergeCommit":false,"messageTitle":"Rename all instances of find to filter","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4},"other":{"insertions":31,"deletions":31},"docs":{"insertions":1,"deletions":1},"test-code":{"insertions":4,"deletions":4}}},{"hash":"13017cfa05228c60c0ab44a9f7bd528c703a32ea","isMergeCommit":false,"messageTitle":"Rename instances of find to filter","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"eaa4663bdf75f153a5723db3929cac08fb86b27d","isMergeCommit":false,"messageTitle":"Fix checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":16}}},{"hash":"c251d60b0eab0c61ba2f97356b59d387b9a9185b","isMergeCommit":false,"messageTitle":"Update test to encapsulate new behaviour of \u0027filter\u0027","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"c748f0183c74a357a2ee05a0857f968ee808d3bb","isMergeCommit":false,"messageTitle":"Update NameContainsKeywordsPredicate.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"d3444ef942b75b04c3895216fc1ddd973d14e117","isMergeCommit":false,"messageTitle":"Update test to encapsulate new \u0027filter\u0027 behaviour","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":13,"deletions":13}}},{"hash":"e741236fffc95a093be708b6c679f0d75485abc9","isMergeCommit":false,"messageTitle":"Update test to encapsulate new \u0027filter\u0027 behaviour","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":4}}},{"hash":"420a32404c63067e167f662a39994f8b55e3b6da","isMergeCommit":false,"messageTitle":"Update test to encapsulate new \u0027filter\u0027 behaviour","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"9d6e2d42a7e221b7156ead654b93f463e936cc34","isMergeCommit":false,"messageTitle":"Update test to encapsulate new \u0027filter\u0027 behaviour","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":43,"deletions":23}}},{"hash":"0b2d226f6184525e8ba9674004d146d74c1c5b89","isMergeCommit":false,"messageTitle":"Update test to encapsulate new \u0027filter\u0027 behaviour","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"33870c8c03b2629a18d28a8be51f44d75a04bf28","isMergeCommit":false,"messageTitle":"Fix checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":12}}},{"hash":"a0ccbd261604762f58294a1b7de15c0dd86a72df","isMergeCommit":false,"messageTitle":"Update filter to be case-insensitive","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":1}}},{"hash":"8607137911315b59e0518d88aa7f8080ff1e4319","isMergeCommit":false,"messageTitle":"Remove test where empty string as keyphrase","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":4}}},{"hash":"93764b9a421a408f8d4fc18a2535b8b929c8b89d","isMergeCommit":false,"messageTitle":"Update FilterCommandParserTest.java","messageBody":"Remove test where whitespaces did not affect keywords. Since the new implementation uses case-insensitive substring check, incorrect number of whitespaces will affect the check.\n","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":3}}},{"hash":"24887bec0ab400520cd31047328aaa8d2379562c","isMergeCommit":false,"messageTitle":"Update FilterCommandTest.java","messageBody":"Instead of checking for empty keyphrase (which will now return true in the new implementation), update the test to check that an invalid keyphrase (not a substring of any contact name) will have 0 clients listed.\n","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":8}}},{"hash":"59441ebd5d3fd334ced8bb44cbd350a07ea33582","isMergeCommit":false,"messageTitle":"Include message usage and find help for the filter command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":7}}},{"hash":"8c3daa9e3e927b1fa7520acb7a7ca6032a79e976","isMergeCommit":false,"messageTitle":"Update all instances of \u0027keyword\u0027 to \u0027keyphrase\u0027","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":50,"deletions":50},"other":{"insertions":29,"deletions":29},"test-code":{"insertions":18,"deletions":18}}},{"hash":"ae252cd743a1fbc1a39aa1d77f2116e82a64fc9b","isMergeCommit":false,"messageTitle":"Update all instances of \u0027keyword\u0027 to \u0027keyphrase\u0027","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"c05ebe0d9c854ea9c508fa9896c06fffa05975ed","isMergeCommit":false,"messageTitle":"Specify parameter type for message usage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"7e111213c248def370610b20670ece0387968dfc","isMergeCommit":false,"messageTitle":"Updating javadocs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"766950156aa93c38df0b1653fa5e214787814b1d","isMergeCommit":false,"messageTitle":"Update DG and UG for filter command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":3}}}]},{"date":"2024-03-17","commitResults":[{"hash":"3101ef2b63b753fbef86b1674b6b1de847a3011d","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-18","commitResults":[{"hash":"ab4824564d3a06ce10a4c48acca19e6287c7e3af","isMergeCommit":true,"messageTitle":"Merge pull request #102 from 4llysa/v1.2-ug-update_features","messageBody":"Update Add command format in UG","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"fb0e2660d95a46bfc786b4a3827cba7a18e2848b","isMergeCommit":true,"messageTitle":"Merge pull request #128 from 4llysa/v1.2-enhance-tag-testing","messageBody":"Update Tag tests","fileTypesAndContributionMap":{}}]}],"UdhayaShan1":[{"date":"2024-02-28","commitResults":[{"hash":"8e6ebdbf049058130823694a735a3dc7603ab41b","isMergeCommit":false,"messageTitle":"Add Udhaya info to AboutUs and udhaya.md portfolio placeholder","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":50,"deletions":4}}},{"hash":"a5069b88f7d74dee8ed1045ca126ce2b65a0b9da","isMergeCommit":true,"messageTitle":"Merge pull request #24 from UdhayaShan1/update-aboutus-udhaya","messageBody":"Add Udhaya info to AboutUs and udhaya.md portfolio placeholder","fileTypesAndContributionMap":{}},{"hash":"da90efc15f144fda315bec4a4af3694933db554b","isMergeCommit":false,"messageTitle":"Fix portfolio link in AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"fd2bdcf4957e0df11346c8f8230b8149fc436dd4","isMergeCommit":true,"messageTitle":"Merge pull request #27 from UdhayaShan1/update-aboutus-udhaya","messageBody":"Fix portfolio link in AboutUs","fileTypesAndContributionMap":{}},{"hash":"7e4a4f9d37bfa45c493598618c6dced925b22504","isMergeCommit":false,"messageTitle":"Update README contents and workflow badge","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":13,"deletions":6}}},{"hash":"acbafeb8234ebb1ef7a17f7a232b18bcf49b3c50","isMergeCommit":true,"messageTitle":"Merge pull request #42 from jyztintan/update-readme","messageBody":"Update UI image for Realodex","fileTypesAndContributionMap":{}},{"hash":"8daee56764ae7d3a7b5fa4ee27ed9e47942d0f81","isMergeCommit":false,"messageTitle":"Add user profile creation use case","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":92,"deletions":1}}},{"hash":"21b92a9d00de1ef8e084a8103b45312896072fce","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-dg-usecases","messageBody":"# Conflicts:\n#\tdocs/DeveloperGuide.md\n","fileTypesAndContributionMap":{}},{"hash":"b7e2e1c0cb7f2753619de1217a339b1425a0f438","isMergeCommit":false,"messageTitle":"Update wrong line in DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":1}}}]},{"date":"2024-03-01","commitResults":[{"hash":"a22ad5d1f05e7a5bb29da8cf4fcaea73da06763a","isMergeCommit":true,"messageTitle":"Merge pull request #59 from jyztintan/update-developer-guide","messageBody":"Rename Developer Guide","fileTypesAndContributionMap":{}},{"hash":"463e916dade6bdc56883e5e49c12b3c734d54309","isMergeCommit":true,"messageTitle":"Merge pull request #58 from jyztintan/update-gitignore","messageBody":"Update .gitignore to ignore bin and compiled class files","fileTypesAndContributionMap":{}},{"hash":"8264e553c8f15740b030c14c96bc4a048f4976ff","isMergeCommit":false,"messageTitle":"Update DG use cases according to new CLI constraint","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":54,"deletions":90}}},{"hash":"2a91d3495689145b8af3f3d4626e81f3f7280075","isMergeCommit":false,"messageTitle":"Remove family size extension use case","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":10}}}]},{"date":"2024-03-08","commitResults":[{"hash":"e4e07dd9ff47535f101f32078bc4478ef877bc66","isMergeCommit":true,"messageTitle":"Merge pull request #65 from 4llysa/fix-dg-formatting","messageBody":"Fix dg formatting","fileTypesAndContributionMap":{}}]},{"date":"2024-03-11","commitResults":[{"hash":"e01b29900e27f139ea98a93bcbc019f1ee0cf6ea","isMergeCommit":false,"messageTitle":"Add CLI syntax prefix for income and family size","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":1}}},{"hash":"8d8c2c921f6e3378683ed24e680412843ca7cd02","isMergeCommit":false,"messageTitle":"Add Income and Family classes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":0}}},{"hash":"0887b78c666cf18b917b14590ae3cf2e5a8699d9","isMergeCommit":false,"messageTitle":"Add Income and Family classes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":39,"deletions":4}}},{"hash":"80d2b7599443be1ef63fd0034eb848407566e8d4","isMergeCommit":false,"messageTitle":"Update person constructor, keep email but take in new fields","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":3}}},{"hash":"c08c519e1775f58e58269c78879e55549f8dbcce","isMergeCommit":false,"messageTitle":"Update AddressBookParser to take in new prefix and calling Person","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":4}}},{"hash":"ae1b4123cbc4718d8977e343a8b16cd60c299dff","isMergeCommit":false,"messageTitle":"Update ParserUtil to parse new fields, slight updates to new classes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":47,"deletions":8}}},{"hash":"bb6cbb1a4ce961bf2de6f1a074260e76b9996040","isMergeCommit":true,"messageTitle":"Merge branch \u0027v1.2-add-update_ParserUtil\u0027 into v1.2-add-new_fields_and_parsing","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"6a62701d0fe167807af55c42e02347425f1c19e3","isMergeCommit":false,"messageTitle":"Slight update to AddCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"8c8de2825d74fa27666d6c34adc5efff956ccd7a","isMergeCommit":false,"messageTitle":"Update Person hashCode, toString, equals to consider new fields","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":5}}},{"hash":"156806191b1163117c186f314ed5b910fc12275c","isMergeCommit":false,"messageTitle":"Update Add message and update family and income utility methods","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":30,"deletions":2}}},{"hash":"b3f196dabd96185494699bc1b8a525deffd124a1","isMergeCommit":false,"messageTitle":"Update FXML and EditCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":0}}},{"hash":"b1670438939b489e66c0b3962744b2e748b7feae","isMergeCommit":false,"messageTitle":"Edit EditCommand class to change to new Person constructor","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":25,"deletions":2}}},{"hash":"790277eb7f45a090bb148d633c51d79c53f66033","isMergeCommit":false,"messageTitle":"Change SampleDataUtil to new Person","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":13}}},{"hash":"a552a6b54e08fc65635548d7bd70aa5181b63111","isMergeCommit":false,"messageTitle":"Update JsonAdaptedPerson to add new fields and new Person constructor","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":25,"deletions":2}}},{"hash":"664f0cfca5b8e0e5614e212fb7279405324f5122","isMergeCommit":false,"messageTitle":"Update PersonBuilder to add new fields","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":9,"deletions":1}}},{"hash":"7de3f44dd98316d70f8eac914cd95be220d98e6f","isMergeCommit":true,"messageTitle":"Merge branch \u0027v1.2-add-update_person_class_dependencies\u0027 into v1.2-add-new_fields_and_parsing","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"985964312df5eeb9770303b658d8b972fae5f38d","isMergeCommit":false,"messageTitle":"Update JSON storage and PersonCard to reflect text","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":0}}},{"hash":"af3cd23f200a312d4d308f2e408a20bfdd8b5419","isMergeCommit":false,"messageTitle":"Fix add command message formatting","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":2}}},{"hash":"f7e1b64bc285e93068a6f4e744f7e72fb61d3381","isMergeCommit":true,"messageTitle":"Merge branch \u0027v1.2-add-update_storage_dependencies\u0027 into v1.2-add-new_fields_and_parsing","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4d9503578adde28d46fe7451adf475a8f2bc5be2","isMergeCommit":false,"messageTitle":"Added representation to make the GUI fields in list clearer","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":4}}},{"hash":"90f4ce8c69fcfcc0dfa2ca70ac7c08e29601258d","isMergeCommit":false,"messageTitle":"Fix several formatting issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":15},"test-code":{"insertions":20,"deletions":0}}},{"hash":"adee1c93241a8ca1ca5db4ed9a05767747d8a624","isMergeCommit":false,"messageTitle":"Fix JsonAdaptedPersonTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":31,"deletions":10}}},{"hash":"cda73984b9d8b4026d6f1cae3203fa93074d5518","isMergeCommit":false,"messageTitle":"Fix typicalAddressBook test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":1}}},{"hash":"3aa4ff5259c95df44a9d78b4a8b312cd99b2e148","isMergeCommit":false,"messageTitle":"Fix Person tags test","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"7cb3b9f0805f78aef69b9d6d6688d0ea3986d1f5","isMergeCommit":false,"messageTitle":"Fix Person toString test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":1}}},{"hash":"dda267db033bc80a1c5816034df46b7d49670bd9","isMergeCommit":false,"messageTitle":"Fix AddressBookParserTest parseCommand_add test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":0}}},{"hash":"6111fb2f8dd48e5caed5bfa97137f8ef44f9ac46","isMergeCommit":false,"messageTitle":"Fix all remaining tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":2},"test-code":{"insertions":81,"deletions":26}}},{"hash":"8bf0420cfd7252685a1701af78977ca049785528","isMergeCommit":true,"messageTitle":"Merge branch \u0027v1.2-add-fix_tests\u0027 into v1.2-add-new_fields_and_parsing","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e3ce88bba239a41ce4a00c70b07f8dbb4f168de5","isMergeCommit":false,"messageTitle":"Update success message for add","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":0}}},{"hash":"1d039bf3e7b3806faad80f1dda9957843e5e088d","isMergeCommit":false,"messageTitle":"Reorder imports","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":5}}},{"hash":"84b615efdc43e01a7c71b2046bf9cfc8ad8b450d","isMergeCommit":false,"messageTitle":"Fix remaining main checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":125,"deletions":20}}},{"hash":"2799ece45daba6966f27c4909516c88ebda8aa2f","isMergeCommit":false,"messageTitle":"Fix checkstyle for tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":30,"deletions":25}}}]},{"date":"2024-03-13","commitResults":[{"hash":"2183a1f077fc46c38bf6ea9ac377433a60af7fff","isMergeCommit":false,"messageTitle":"Fix reviewers comments","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":8}}},{"hash":"d1eed839a4169e291ecc2feb766f594486ebe398","isMergeCommit":true,"messageTitle":"Merge branch \u0027v1.2-add-fix_review_comments\u0027 into v1.2-add-new_fields_and_parsing","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"358b5c3770c160ccb83a37efe8a2a2aec3137cf4","isMergeCommit":true,"messageTitle":"Merge pull request #78 from UdhayaShan1/v1.2-add-new_fields_and_parsing","messageBody":"V1.2 Morph add command to take in income and family size. Tests passing.","fileTypesAndContributionMap":{}},{"hash":"dbc498f9ce0ee59d14aa34a9509c4a6d68acd520","isMergeCommit":true,"messageTitle":"Merge pull request #82 from jyztintan/v1.2-add_dev_workflow","messageBody":"Add TeamWorkflow.md","fileTypesAndContributionMap":{}}]},{"date":"2024-03-15","commitResults":[{"hash":"1cf3e2d429601e4dc5398b909d3b96dec1758a20","isMergeCommit":true,"messageTitle":"Merge pull request #85 from appleraincoat/v1.2-UserGuide-update_user_guide","messageBody":"Update the User Guide","fileTypesAndContributionMap":{}}]},{"date":"2024-03-16","commitResults":[{"hash":"94cd7a9af42522404b911733e2eab0e6ecd8b8bf","isMergeCommit":false,"messageTitle":"Update src/test/java/seedu/address/model/person/FamilyTest.java","messageBody":"Co-authored-by: Justin Tan \u003c98398940+jyztintan@users.noreply.github.com\u003e","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":1}}},{"hash":"0df7c5e693d0919c667ab2f7e2f0caaeaef4f5a2","isMergeCommit":true,"messageTitle":"Merge pull request #92 from wapisai/master","messageBody":"Add Edit command","fileTypesAndContributionMap":{}},{"hash":"73984dd630f16de4c4946d9c6f5984349277bee0","isMergeCommit":true,"messageTitle":"Merge pull request #95 from 4llysa/v1.2-types-add_seller_buyer_status","messageBody":"V1.2 types add seller buyer status","fileTypesAndContributionMap":{}},{"hash":"8cf16485ffa3ab550e876ce2c6310a308662478c","isMergeCommit":false,"messageTitle":"Edit EditFamilyDescriptorBuilder to add with\u003cFamily/Income\u003e","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":17,"deletions":0}}},{"hash":"2ef47f091383178fb4370c9d91c0c6e95e39a06c","isMergeCommit":false,"messageTitle":"Edit CommandTestUtil static to add new fields","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":13,"deletions":3}}},{"hash":"1faf4fb577561de95606bda0172870dbcbe46dbb","isMergeCommit":false,"messageTitle":"Add withTags to LogicManagerTest, add the new tag instead of empty","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":1}}},{"hash":"a739d145a2ef2edfef3b41dd3efc82ed742777ee","isMergeCommit":false,"messageTitle":"Small test additions to FamilyTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":1}}},{"hash":"1c3c6ed1a09c60bd0fbbc0e3d5465da7f89cbd52","isMergeCommit":false,"messageTitle":"Add simple tests for income","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":1}}},{"hash":"c0b953bdac3885474e03d5688638cece080f22bd","isMergeCommit":false,"messageTitle":"Add Person equals check for income and family fields when different","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":18,"deletions":2}}},{"hash":"3df1530d6d1d97f3a97ce3a86f97886ef9228e87","isMergeCommit":false,"messageTitle":"Add simple valid tag tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":15,"deletions":0}}},{"hash":"48303413c3dc2625bac3893b099ac237d3ff6ff7","isMergeCommit":false,"messageTitle":"Add JsonAdapatedPerson tests for income and family","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1},"test-code":{"insertions":36,"deletions":0}}},{"hash":"2fc3d2843adf1e4ea71c07c7b3193fba6c580bfc","isMergeCommit":false,"messageTitle":"Add overlooked isValidFamily test","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":0}}},{"hash":"1242d0d285fe292e40d8e3d14297d73fb6105650","isMergeCommit":false,"messageTitle":"Fix checkstyle tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":9,"deletions":8}}}]},{"date":"2024-03-17","commitResults":[{"hash":"196e50a1dc6f9af8d37a54332ba1cfced887bd96","isMergeCommit":false,"messageTitle":"Move the Tags compulsory check to arePrefixesPresent instead","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":4},"test-code":{"insertions":1,"deletions":1}}},{"hash":"8daedabc45824dd3504188788b7c6354ed5c5f61","isMergeCommit":false,"messageTitle":"Change Income to store value as String field instead","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"05706b3d38664939c72d810d0c7c38fa30127e8a","isMergeCommit":false,"messageTitle":"Change family size field to String instead and fix tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":3},"test-code":{"insertions":10,"deletions":32}}},{"hash":"40ab745624d1d49302fedbcc6ff1302a8f6e9bd1","isMergeCommit":false,"messageTitle":"Add one more test to check for valid phone argument","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":0}}},{"hash":"807ffb8b99b36c43b7d4802cec3e7022f5f19783","isMergeCommit":false,"messageTitle":"Remove unnecessary NumberFormatException tests for income","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1},"test-code":{"insertions":7,"deletions":28}}},{"hash":"0741e8cf73857a59acb7ebc54ebeedaf6eb2e09a","isMergeCommit":false,"messageTitle":"Add income, family tests to AddCommandParser, slight edit to Tag tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":70,"deletions":8}}},{"hash":"b2497d35a98bf5f1af4dcf44842b457abe138890","isMergeCommit":false,"messageTitle":"Add \u00270\u0027 index check test for delete","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":0}}},{"hash":"93973c56b18b3b867a34f37d9a18ccf9dd0ec3bb","isMergeCommit":false,"messageTitle":"Add tests to account for income and family for EditCommandParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":59,"deletions":14}}},{"hash":"70a14bb015e456fbe909aa2d657f8957e0f98bfa","isMergeCommit":false,"messageTitle":"Add Income, Family tests to ParserUtil","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":57,"deletions":1}}},{"hash":"29c38a2c436c8c30fe6cbad476c4d2edc2af48b0","isMergeCommit":false,"messageTitle":"Fix checkstyles","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1},"test-code":{"insertions":38,"deletions":10}}},{"hash":"26ab9100b412a10aa902f28f1ec08aedf7f12fbb","isMergeCommit":false,"messageTitle":"Add minor OCD edit","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":2}}},{"hash":"d0a2e4550684f42309e041cea4ce1853898c2d07","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into v1.2b-tests-add_newtests_for_income_family","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"896e495ed0a8563f73aeb9854a708d47984fd6f6","isMergeCommit":false,"messageTitle":"Fix JsonAdaptedTest tests locally","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":5}}},{"hash":"ac9a2362817c298d4c88b98d49749d910fda91a5","isMergeCommit":false,"messageTitle":"Add null check for remark in JsonAdapatedPerson","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}}]},{"date":"2024-03-18","commitResults":[{"hash":"547477e1e2a1c5770585a82566a0405bcfe6f9ff","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-19","commitResults":[{"hash":"2bbcc3acdd22b6004ccb99e23a2ad65f838fc806","isMergeCommit":false,"messageTitle":"Add minor edit to DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":1}}},{"hash":"733a34fa9bf5d2cd524805a1fd2abd53238ac07a","isMergeCommit":false,"messageTitle":"Change package name from seedu.address to seedu.realodex","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":868,"deletions":868},"docs":{"insertions":15,"deletions":13},"test-code":{"insertions":3,"deletions":3}}},{"hash":"23051dcec611b259ac506d6e4dbe5034a58f857c","isMergeCommit":false,"messageTitle":"Change AddressBookParser to RealodexParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4},"other":{"insertions":4,"deletions":4}}},{"hash":"b662c685f19ad7afcb14af65164597f45f790771","isMergeCommit":false,"messageTitle":"Change AddressBook main class to Realodex","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":81,"deletions":80},"other":{"insertions":32,"deletions":32},"test-code":{"insertions":65,"deletions":65}}},{"hash":"9ec3bf866cc4572432cc2da81adabecc513b4ebc","isMergeCommit":false,"messageTitle":"Change AddressBookStorage and JsonSerializableStorage to ..Realodex","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":17,"deletions":17},"other":{"insertions":16,"deletions":16},"test-code":{"insertions":1,"deletions":1}}},{"hash":"d7bbc51e1996a16fc0aff102238cd5fa73a842d4","isMergeCommit":false,"messageTitle":"Rename back the json to AddressBook as it seems buggy","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4},"other":{"insertions":19,"deletions":19},"test-code":{"insertions":2,"deletions":2}}},{"hash":"66f724f48be6fcf3483473eccf06d582c5719c04","isMergeCommit":false,"messageTitle":"Update build gradle","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":1,"deletions":1}}},{"hash":"dff3c68a76961f966c031ba8c2d0d6560c17a46f","isMergeCommit":false,"messageTitle":"Rename Json packages","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":8,"deletions":8}}},{"hash":"c0349a9d6c697fc363ce9643845f1755edca3d26","isMergeCommit":false,"messageTitle":"Rename to JsonRealodexStorage","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":0,"deletions":0}}},{"hash":"6af77e605e1b494af58f3e3caba915c175dc1f9c","isMergeCommit":false,"messageTitle":"Rename to JsonRealodexStorage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":5},"test-code":{"insertions":17,"deletions":17}}},{"hash":"c6fa185e9cf4be939e9874e59c114568733dc113","isMergeCommit":false,"messageTitle":"Rename to JsonSerializableStorage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"other":{"insertions":13,"deletions":13}}},{"hash":"433d0e7da7890926ec29c535e46b9cac991465e9","isMergeCommit":false,"messageTitle":"Rename addressbook.json to realodex.json","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":6},"docs":{"insertions":2,"deletions":2},"test-code":{"insertions":3,"deletions":3}}},{"hash":"cd09f1ccce846b6cff843a03858e8a1166fac0e3","isMergeCommit":false,"messageTitle":"Fix realodex.json related tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":6}}},{"hash":"84fc786ce89a82b563b5395a300e751a1c889a85","isMergeCommit":false,"messageTitle":"Rename some methods to realodex","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":34,"deletions":34},"test-code":{"insertions":53,"deletions":53}}},{"hash":"d9102cba9dfe2bf3ce445a45b7eeb8d84a762b6f","isMergeCommit":false,"messageTitle":"Rename remaining methods to Realodex","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":25,"deletions":25},"test-code":{"insertions":33,"deletions":33}}},{"hash":"c4fab7f78f20a39c4394911cdbafdd97d9b25607","isMergeCommit":false,"messageTitle":"Rename remaining methods","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4},"other":{"insertions":1,"deletions":1}}},{"hash":"0f3e7a8341711c3719fb8cbdab7cb27cd0f2576b","isMergeCommit":false,"messageTitle":"Update teams\u0027 md files","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}},{"hash":"4f2bcbb78e48fe1255bd47087ecd2d026d49ff70","isMergeCommit":false,"messageTitle":"Update remaining fields and site json","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":26,"deletions":26},"test-code":{"insertions":13,"deletions":13}}},{"hash":"1613bc6f53926a66f5d48ddd028ebd2089a9ef89","isMergeCommit":false,"messageTitle":"Fix checkstyles","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":4},"test-code":{"insertions":7,"deletions":7}}},{"hash":"4dd63e6fae1ab3fab9226b5613b5123c2cc526b6","isMergeCommit":false,"messageTitle":"Change remaining comments that contains address book","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":39,"deletions":39},"test-code":{"insertions":6,"deletions":6}}},{"hash":"adc2bcf7cc89afb9a2313f949383e5e85940dd75","isMergeCommit":false,"messageTitle":"Edit minor reference to address-book","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-20","commitResults":[{"hash":"1fc12180e5b79473e295a3020fcd948570a6d2d1","isMergeCommit":true,"messageTitle":"Merge pull request #124 from appleraincoat/v1.2-Help-Update_Help_Messages","messageBody":"Update the help messages","fileTypesAndContributionMap":{}},{"hash":"0a8cf99e2e1f9e44eb19cbd682485677dbfb2a9c","isMergeCommit":true,"messageTitle":"Merge pull request #123 from appleraincoat/v1.2-Update_UG","messageBody":"Update UG to include new commands and updated commands in v1.2","fileTypesAndContributionMap":{}},{"hash":"db1c1be1028aefe5c6db7b597b69400fe5c54cec","isMergeCommit":true,"messageTitle":"Merge pull request #122 from wapisai/editcommand","messageBody":"Enhance Edit Command with Remark and Tag Fields","fileTypesAndContributionMap":{}},{"hash":"99803b453d0d51d6da77ab392157a1f00eeec168","isMergeCommit":true,"messageTitle":"Merge pull request #129 from appleraincoat/v1.2-Fix_Merge_Conflict","messageBody":"Rename all occurrences of `AddressBook` to `Realodex` with merge conflict resolving","fileTypesAndContributionMap":{}},{"hash":"44bf88e383b6baa14b68eb69f3c2ad4c4d564024","isMergeCommit":false,"messageTitle":"Add Remark tests for future expansion","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":0},"test-code":{"insertions":59,"deletions":1}}},{"hash":"36c2e2bd2a93ecb6cf7ae567cba1456b7926c228","isMergeCommit":false,"messageTitle":"Add EditPersonDescriptorTest different remarks test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":0}}},{"hash":"edf327c1181d931cbd7bcdf14d776109ecd0437c","isMergeCommit":false,"messageTitle":"Add PersonTest different remarks test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":0}}},{"hash":"2fb204fe51bbf684ed6acb549749066d7f9f43be","isMergeCommit":false,"messageTitle":"Add remarks to CommandTestUtil test subjects","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":2}}},{"hash":"8cec41d2cab1c9ad27a4fd2ee47a0b3e2b4857a7","isMergeCommit":false,"messageTitle":"Add optional remark test to AddCommandParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":32,"deletions":8}}},{"hash":"3ad5ac1147a2ec2130dfa953e550db2ff0bc97e8","isMergeCommit":false,"messageTitle":"Add some DeleteCommandParser tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0},"test-code":{"insertions":7,"deletions":2}}},{"hash":"f1fab3260c9b69ca94b48558a128c60457d1ead0","isMergeCommit":false,"messageTitle":"Add invalid name ParseException throw testto DeleteCommandParser","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":12,"deletions":0}}},{"hash":"081096fadc5f813929c38a1b1d70e6c7aa65efb8","isMergeCommit":false,"messageTitle":"Add small remark test to EditCommandParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":13,"deletions":3}}},{"hash":"c5f8afcbd621aed6e12f05e7b36f443eb2f74c1e","isMergeCommit":false,"messageTitle":"Add remark tests to ParserUtilTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":21,"deletions":0}}},{"hash":"5eacc27e185ab5bd713e6ef2b0dce75b4f74eb5c","isMergeCommit":false,"messageTitle":"Add delete by name parser test to RealodexParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":13,"deletions":1}}},{"hash":"d6e97613d5d26f5c7d44129522342de7f85f60e7","isMergeCommit":false,"messageTitle":"Fix checkstyles","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":13,"deletions":5}}},{"hash":"6e0d7e08a72d23f9476fcc4442e4c591fa5d7537","isMergeCommit":false,"messageTitle":"Remove assertion","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"24e97ccdf9b8ab1b39512a4fb2edc12fc0b8c52a","isMergeCommit":false,"messageTitle":"Update src/main/java/seedu/realodex/model/remark/Remark.java","messageBody":"Co-authored-by: Justin Tan \u003c98398940+jyztintan@users.noreply.github.com\u003e","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":6}}},{"hash":"18ecfd9227a1426fafaca5deb3e140885b7235b4","isMergeCommit":false,"messageTitle":"Fix checkstyles","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":9}}},{"hash":"cabae7ebd91a75154dfff4175c2f6e866ec0115b","isMergeCommit":true,"messageTitle":"Merge pull request #131 from UdhayaShan1/v1.2b-enhance-tests_remark_delete_tests","messageBody":"V1.2b enhance tests, add `Remark` and `DeleteCommand` related tests","tags":["v1.2"],"fileTypesAndContributionMap":{}}]},{"date":"2024-03-22","commitResults":[{"hash":"1721df19ba496cc288d679ecc8e6651dcffd2fee","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into week9-uml-update","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ec30304977a00e736a92e0a6f96d8e6d6f26aa10","isMergeCommit":false,"messageTitle":"Edit ModelClassDiagram to match new classes and new fields for Person","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":17,"deletions":11}}},{"hash":"2eb8634536f6b2e72fbfff68aaad68be844da0f2","isMergeCommit":false,"messageTitle":"Edit ArchitectureSequenceDiagram.puml","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"14d2d296d80d273713a4a777457d5a0eaeb4bd35","isMergeCommit":false,"messageTitle":"Edit DeleteSequenceDiagram.puml","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":10}}},{"hash":"b10d61f29eb36556c4ae0d2fdee46b948b05f2f1","isMergeCommit":false,"messageTitle":"Edit ParserClasses.pump","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"c009e37fb0c750d259e6333b8afdb11051f5f0a3","isMergeCommit":false,"messageTitle":"Edit size of ModelClassDiagram.puml","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-23","commitResults":[{"hash":"53d7ebe1993a6f4af6173c245a7a45f5f1c84ea8","isMergeCommit":true,"messageTitle":"Merge pull request #132 from UdhayaShan1/week9-uml-udhaya_update","messageBody":"Week 9 `ModelClassDiagram` UML update ","fileTypesAndContributionMap":{}}]},{"date":"2024-03-24","commitResults":[{"hash":"3058704b2215b785f7c6dab623258497b91569c5","isMergeCommit":true,"messageTitle":"Merge pull request #138 from appleraincoat/Better_Model_Class_Diagram_Update","messageBody":"Update BetterModelClassDiagram.puml and make other minor changes","fileTypesAndContributionMap":{}}]}],"appleraincoat":[{"date":"2024-02-28","commitResults":[{"hash":"82b7f440d5887937d69c12dfbbcb63a75276adb8","isMergeCommit":false,"messageTitle":"Add AboutUs information for appleraincoat","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":0}}},{"hash":"0efa042c823393bca5465d6f63bc26366ba21aee","isMergeCommit":false,"messageTitle":"Add AboutUS information for appleraincoat","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":11}}},{"hash":"04d3c9c69122b8a6025931c165475469b1e53936","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into Update-AboutUs-James","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d31985fb741f333a1296ad51863767205427130b","isMergeCommit":true,"messageTitle":"Merge pull request #26 from appleraincoat/Update-AboutUs-James","messageBody":"Update AboutUs (James)","fileTypesAndContributionMap":{}},{"hash":"5113c3ffddd221b260e59b13eeaf5d7524335f36","isMergeCommit":false,"messageTitle":"Update line wrapping","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":5}}},{"hash":"9d4a493f78304718a23fc9f1324f02be6d48b456","isMergeCommit":true,"messageTitle":"Merge pull request #30 from appleraincoat/Update-AboutUs-James","messageBody":"Update line wrapping","fileTypesAndContributionMap":{}},{"hash":"f0b10cd67188fd774ea06418259c3b905335fd7f","isMergeCommit":false,"messageTitle":"Edit the title to include our project name","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":2}}},{"hash":"af788c4c44fb4bd4e3a378d35619092f2a643ed5","isMergeCommit":false,"messageTitle":"Add the add command for adding clients and changed phrasing to suit the Realodex","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":27,"deletions":107}}},{"hash":"c7d1e42b61c815d50d78f69d0d290232e548af2a","isMergeCommit":true,"messageTitle":"Merge pull request #54 from appleraincoat/Edit-UG-Add-Command","messageBody":"Add the add command for adding clients and changed phrasing to suit the Realodex","fileTypesAndContributionMap":{}}]},{"date":"2024-03-01","commitResults":[{"hash":"5775e65c7f41886f8d647c30be1f1479d064d4e6","isMergeCommit":false,"messageTitle":"Update the UserGuide by editing and removing wrong information","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":14,"deletions":29}}},{"hash":"e7c5b206172fcd8b60494b8c611cc123c6d223af","isMergeCommit":true,"messageTitle":"Merge pull request #63 from UdhayaShan1/update-dg-newconstraints","messageBody":"Update DG use cases according to new CLI constraint","fileTypesAndContributionMap":{}},{"hash":"0540d49eb41ee7318ff900484a48a6e49f683321","isMergeCommit":false,"messageTitle":"Fix a minor issue","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"5f249a547b10be1c7b102b32b854672fb76047bc","isMergeCommit":true,"messageTitle":"Merge pull request #62 from appleraincoat/Edit-UG-Add-Command-Again","messageBody":"Update the UserGuide by editing and removing wrong information","fileTypesAndContributionMap":{}},{"hash":"e86c3cc878725f96e1d5f96553053ce27be2ca50","isMergeCommit":true,"messageTitle":"Merge pull request #64 from UdhayaShan1/update-dg-newconstraints","messageBody":"Remove family size extension use case","fileTypesAndContributionMap":{}}]},{"date":"2024-03-13","commitResults":[{"hash":"d44495ebba330e1d4b2a419a1d485189c04bbe4f","isMergeCommit":false,"messageTitle":"Add the help message for the add command and modify message for the link to UG","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":2}}},{"hash":"75079c0936fff4e72751307c31d048d5ddf6dee7","isMergeCommit":false,"messageTitle":"Add the help messages for all commands","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":48,"deletions":20}}},{"hash":"aa42b65deab18a5966d8e73b9d08269276e1a31e","isMergeCommit":false,"messageTitle":"Make changes from old project name to new project name Change Realodex logo","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":8},"test-code":{"insertions":1,"deletions":1}}},{"hash":"55e509c01b84feb387fc1df8e7df9c9ad3761297","isMergeCommit":false,"messageTitle":"Fix some codestyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":15}}},{"hash":"75665523807fcb836d3d2293d603868d71ff64e5","isMergeCommit":false,"messageTitle":"Update the User Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":24,"deletions":14}}},{"hash":"108f8a856793a8fe985c4b31ac1d2ede5a1004bd","isMergeCommit":false,"messageTitle":"Modify variable names for consistency","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":21}}}]},{"date":"2024-03-15","commitResults":[{"hash":"b5951b5fffa74469f5f6d2e0ddaa9f59944a0d62","isMergeCommit":false,"messageTitle":"Adjust copyurl button position","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"916ec29f823fa4941ed74467f900fd6a7db3459e","isMergeCommit":true,"messageTitle":"Merge pull request #83 from appleraincoat/v1.2-help-enhance_help_command","messageBody":"V1.2 help enhance help command","fileTypesAndContributionMap":{}}]},{"date":"2024-03-16","commitResults":[{"hash":"53f90798de0c11b806b42abf69af577dd662976c","isMergeCommit":false,"messageTitle":"Add the remark field to person","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":152,"deletions":33},"test-code":{"insertions":5,"deletions":10}}}]},{"date":"2024-03-17","commitResults":[{"hash":"31ebfc85e5f17cfd319e8a51501240d0b1c1cf05","isMergeCommit":false,"messageTitle":"Fix some of the issues with test arising from the new field","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":46,"deletions":26}}},{"hash":"848450a33a45010dc669db8413e85f132c9f5c96","isMergeCommit":false,"messageTitle":"Fix tests for the additional remark field and add new getvalue variant for remark that passes in empty string if there is none","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":4},"test-code":{"insertions":5,"deletions":15}}},{"hash":"cdc0a5943893ff35d27f6eb021f61f40e3c50efa","isMergeCommit":true,"messageTitle":"Merge branch \u0027v1.2-add-remark_field\u0027 into v1.2-add-resolve_merge_conflict","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/model/util/SampleDataUtil.java\n#\tsrc/main/java/seedu/address/ui/PersonCard.java\n#\tsrc/test/data/JsonSerializableAddressBookTest/\nduplicatePersonAddressBook.json\n#\tsrc/test/data/JsonSerializableAddressBookTest/\ntypicalPersonsAddressBook.json\n#\tsrc/test/java/seedu/address/logic/commands/CommandTestUtil.java\n#\tsrc/test/java/seedu/address/logic/parser/\nAddCommandParserTest.java\n#\tsrc/test/java/seedu/address/testutil/PersonBuilder.java\n#\tsrc/test/java/seedu/address/testutil/TypicalPersons.java\n\nFix some small issues with Add command\n","fileTypesAndContributionMap":{}},{"hash":"75d55a834b4fe76a041b72154b5ab6f0ee30e5f2","isMergeCommit":false,"messageTitle":"Fix remaining merge conflicts","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":40,"deletions":20}}},{"hash":"c9c481bc00c8a4bf10c73bd30f21828bbb00de38","isMergeCommit":false,"messageTitle":"Fix codestyle violations","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":3},"test-code":{"insertions":16,"deletions":13}}},{"hash":"8683f3d01892af2ed0c8f00dcc080027d9f41f6e","isMergeCommit":false,"messageTitle":"Fix small bugs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":5}}},{"hash":"6b3c185e0e301ee3b69f26034514c487bb8256d4","isMergeCommit":false,"messageTitle":"Remove line that has not implemented yet","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2}}},{"hash":"7367ed78ad8763e85a2b1d7f6930c268f5bf0fbd","isMergeCommit":false,"messageTitle":"Remove validation regex in remark","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":10}}},{"hash":"b339fe2bc3912cf7fcf485188144bbc7b969c76d","isMergeCommit":true,"messageTitle":"Merge pull request #112 from appleraincoat/v1.2-add-resolve_merge_conflict","messageBody":"V1.2 add remarks","fileTypesAndContributionMap":{}},{"hash":"449dd9950728ac24b1c110995b05a53026850a71","isMergeCommit":true,"messageTitle":"Merge pull request #104 from jyztintan/v1.2-filter-modify_find_to_filter","messageBody":"V1.2 Substring-Based \u0027Filter\u0027 Command","fileTypesAndContributionMap":{}}]},{"date":"2024-03-18","commitResults":[{"hash":"c4a965587dab3bc54853392311ba6f9ab6ddbb11","isMergeCommit":true,"messageTitle":"Merge pull request #109 from UdhayaShan1/v1.2b-tests-add_newtests_for_income_family","messageBody":"V1.2 refactor income and family, add all new tests for income and family fields","fileTypesAndContributionMap":{}},{"hash":"0eb64dd1317c0b902538441ced4a2780a0783b60","isMergeCommit":true,"messageTitle":"Merge pull request #118 from wapisai/master","messageBody":"Add \u0027Delete by Name\u0027 Functionality and Enhance Test Coverage","fileTypesAndContributionMap":{}},{"hash":"b14ee19bb47c9a1354696890b6193d11260512cd","isMergeCommit":false,"messageTitle":"Update UG to include new commands and updated commands in v1.2","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":63,"deletions":19}}},{"hash":"e41ea2cb25e5131c2f604209c3b69924d73a8091","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into v1.2-Update_UG","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"2d6b96301a1d80470ef5f1735b215b037f0f03d3","isMergeCommit":false,"messageTitle":"Update the help messages in the context of our new and modified commands in v1.2","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":6}}}]},{"date":"2024-03-19","commitResults":[{"hash":"e225bc93f3b1417d6047388475f71fa5cb58c795","isMergeCommit":false,"messageTitle":"Change minor details in the phrasing in the UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":16}}},{"hash":"b0d04bf5b31e9e5e4a122fd6d9cf20ed0d6a27ae","isMergeCommit":false,"messageTitle":"Edit help messages","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":11}}}]},{"date":"2024-03-20","commitResults":[{"hash":"8edaf9e1b31e3eceba16d267f6edd8f52a95dd57","isMergeCommit":true,"messageTitle":"Merge branch \u0027v1.2b-update-class_names\u0027 into v1.2-Fix_Merge_Conflict","messageBody":"# Conflicts:\n#\tsrc/main/java/seedu/realodex/logic/commands/EditCommand.java\n#\tsrc/main/java/seedu/realodex/logic/parser/EditCommandParser.java\n#\tsrc/test/java/seedu/realodex/logic/parser/\nEditCommandParserTest.java\n#\tsrc/test/java/seedu/realodex/testutil/\nEditPersonDescriptorBuilder.java\n","fileTypesAndContributionMap":{}}]},{"date":"2024-03-24","commitResults":[{"hash":"b2061e2314c2fc4a0afe4910a223d6e2699ee236","isMergeCommit":false,"messageTitle":"Update BetterModelClassDiagram.puml and make other minor changes","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":15,"deletions":17}}}]}],"wapisai":[{"date":"2024-02-28","commitResults":[{"hash":"20a3b1ca523aa119d33d6e1b777f95dcbb2111e3","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":49,"deletions":3}}},{"hash":"7e7227ea246d1ad54b4cd696b01a7bca9a189cb7","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-AboutUs-Alicia","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c80c7f4dd1fa86bb7a81c197f6dffce29238f58a","isMergeCommit":true,"messageTitle":"Merge pull request #29 from wapisai/update-AboutUs-Alicia","messageBody":"Update AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"5eaa68df4fa703583b0333dad85f0f667bbfb66f","isMergeCommit":true,"messageTitle":"Merge pull request #39 from appleraincoat/Edit-README-Title","messageBody":"Edit the title to include our project name","fileTypesAndContributionMap":{}},{"hash":"dfff9ba769a80b131e583a7790f2d76ad7c03d87","isMergeCommit":true,"messageTitle":"Merge pull request #38 from wapisai/master","messageBody":"Add image","fileTypesAndContributionMap":{}},{"hash":"69ab9e12352a7082923abd58a678387719b510c8","isMergeCommit":false,"messageTitle":"Update UG - delete clients","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":14,"deletions":0}}},{"hash":"45288286143d37a9d70fd93bd2411064ee7a6b0c","isMergeCommit":false,"messageTitle":"Update DG - product scope","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":1}}},{"hash":"f616fbff85eacd6e4924df7c976d72975b66590d","isMergeCommit":true,"messageTitle":"Merge pull request #48 from 4llysa/update-docs","messageBody":"Update Developer Guide NFRs and Glossary","fileTypesAndContributionMap":{}},{"hash":"6236c3b63d0837533e3f875cca1fd03c5f23f7c1","isMergeCommit":false,"messageTitle":"Update DG - Use cases","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":34,"deletions":11}}}]},{"date":"2024-03-15","commitResults":[{"hash":"bc3e7c234131b82cc0b09949160da7fe7a7e6c7b","isMergeCommit":false,"messageTitle":"Add Edit command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":3}}}]},{"date":"2024-03-16","commitResults":[{"hash":"40fd3d214586138e1c49932830ded0002ba487de","isMergeCommit":false,"messageTitle":"Add FamilyTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":81,"deletions":0}}},{"hash":"e1f607d9eb871ed3b11f52ee3da3c2e84316061d","isMergeCommit":false,"messageTitle":"Add IncomeTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":79,"deletions":0}}},{"hash":"459448b06a1f42d55175b5285302f7ca43532f6e","isMergeCommit":false,"messageTitle":"Fix checks","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":3}}},{"hash":"50976a1a541712fe3026e7c61b0f4dfab6c03fa9","isMergeCommit":false,"messageTitle":"Fix checks","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":5}}},{"hash":"1f7832810c2be208b38594c412720edb23da676b","isMergeCommit":false,"messageTitle":"Fix checks","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":5}}},{"hash":"c88569be6a8580d93010cad5b672638e0fa03548","isMergeCommit":false,"messageTitle":"Fix checks","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":8,"deletions":3}}},{"hash":"2594d22bb4dbc9b2278e040c9f064d371be48b53","isMergeCommit":false,"messageTitle":"Fix checks","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-17","commitResults":[{"hash":"0d1a23d806991a5f897db7f417d293e6266d8688","isMergeCommit":false,"messageTitle":"Add delete by name","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":44,"deletions":10}}},{"hash":"df2cf6893820853e0bd6ba62db2674899f8e3945","isMergeCommit":false,"messageTitle":"Update DeleteCommandTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":23,"deletions":0}}},{"hash":"8150dcda5a2bee1b1921178f185c19456b3fd248","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/master\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e44e9d2e9f2ab244020a71418357f857d7cb69b9","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e95b556b420ad33ec09fc03cd15483d51bec24cb","isMergeCommit":false,"messageTitle":"Update DeleteCommandParser.java","messageBody":"Co-authored-by: appleraincoat \u003c122220024+appleraincoat@users.noreply.github.com\u003e","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"49525f2e867619976efb519bd80a3ec53e770ab3","isMergeCommit":false,"messageTitle":"Fix checks","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":1}}},{"hash":"d52327e46aedfe1d12e9c67a12409e229d22e5a9","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/master\u0027","messageBody":"# Conflicts:\n#\tsrc/main/java/seedu/address/logic/commands/DeleteCommand.java\n","fileTypesAndContributionMap":{}},{"hash":"a15ed93af264328575005fb0272142b21d01c1b8","isMergeCommit":false,"messageTitle":"Fix checks","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":1}}},{"hash":"0b92fce88fbac4690e1d58c21bfae89db7242085","isMergeCommit":false,"messageTitle":"Update src/main/java/seedu/address/logic/commands/DeleteCommand.java","messageBody":"Co-authored-by: Udhaya \u003c39399745+UdhayaShan1@users.noreply.github.com\u003e","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"ea76e4088bba8a413ee527d2d5bb0e8e0fb0bc0a","isMergeCommit":false,"messageTitle":"Fix SLAP","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":12}}},{"hash":"e4ef1c2a34474a48578777c625ac040902b0bddf","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/editcommand\u0027","messageBody":"# Conflicts:\n#\tsrc/main/java/seedu/address/logic/parser/DeleteCommandParser.java\n","fileTypesAndContributionMap":{}},{"hash":"433790bf62200cb52e14aa3a2ffc5ade456d6a9b","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/master\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8fc1dcb104af433c2e37ab038bcc9d9af3f289e4","isMergeCommit":false,"messageTitle":"Fix tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0},"test-code":{"insertions":2,"deletions":2}}},{"hash":"3968904755f0bc75c3f010358dd0b019f319239e","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W10-1:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-18","commitResults":[{"hash":"40c63802c8e4c69e19389b152c48408290fb84e3","isMergeCommit":false,"messageTitle":"Add DeleteCommandExecutor","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":32,"deletions":19}}},{"hash":"7d3541314f7a77a6c8adc0d2a8f123adf8242e8a","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/master\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"bedb7166ceecb85420fbcdc3badc18e9a9ead3aa","isMergeCommit":false,"messageTitle":"Add tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":2},"test-code":{"insertions":36,"deletions":1}}},{"hash":"eae458e667983206cd132446ef74446349312cde","isMergeCommit":false,"messageTitle":"Add tag and remark to edit command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":30}}},{"hash":"c7d0bcb804320a7542f529245ff875ff062eb3ae","isMergeCommit":false,"messageTitle":"Update src/test/java/seedu/address/logic/commands/DeleteCommandTest.java","messageBody":"Co-authored-by: Udhaya \u003c39399745+UdhayaShan1@users.noreply.github.com\u003e","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"0f41d1de5dd510114a7f5e55e7161763043f0c10","isMergeCommit":false,"messageTitle":"Update src/main/java/seedu/address/logic/commands/delete/DeleteCommandExecutor.java","messageBody":"Co-authored-by: appleraincoat \u003c122220024+appleraincoat@users.noreply.github.com\u003e","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"59077b1c61b0a30ec10fe7a98dbac6cac2548a39","isMergeCommit":false,"messageTitle":"Update src/test/java/seedu/address/logic/commands/DeleteCommandTest.java","messageBody":"Co-authored-by: appleraincoat \u003c122220024+appleraincoat@users.noreply.github.com\u003e","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"b01b971e12245eaae5c83267fb351881a80eb3d7","isMergeCommit":false,"messageTitle":"Update src/test/java/seedu/address/logic/commands/DeleteCommandTest.java","messageBody":"Co-authored-by: appleraincoat \u003c122220024+appleraincoat@users.noreply.github.com\u003e","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"7aafbc94183ee10896dac97250c84707db7ba7f0","isMergeCommit":false,"messageTitle":"Update src/test/java/seedu/address/logic/commands/DeleteCommandTest.java","messageBody":"Co-authored-by: appleraincoat \u003c122220024+appleraincoat@users.noreply.github.com\u003e","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-19","commitResults":[{"hash":"6c23cc6faa3347441bda2ef75731597d9efc09db","isMergeCommit":false,"messageTitle":"Add tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":20,"deletions":3}}},{"hash":"19b91b86e6d7c3e7e92658be6af7f4f86dd40856","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/editcommand\u0027 into editcommand","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"592463e74028965d85c241e6394705b22d399a13","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into editcommand","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"7a4b01c96b444b03dab6ecd651411bd19ec7406d","isMergeCommit":false,"messageTitle":"Fix checks","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":15,"deletions":15}}},{"hash":"0da8259d31bd8917fe1903e886db3b48f953c86c","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/editcommand\u0027 into editcommand","messageBody":"# Conflicts:\n#\tdocs/UserGuide.md\n","fileTypesAndContributionMap":{}},{"hash":"df0479038b8403c62899c5d4379f0b0059937688","isMergeCommit":false,"messageTitle":"Fix checks","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"0d2faface44dffa6082f82c5ad0bc5b04007c284","isMergeCommit":false,"messageTitle":"Fix checks","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":3,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"4llysa":{"docs":69,"functional-code":40,"test-code":81},"jyztintan":{"docs":167,"functional-code":66,"test-code":95},"UdhayaShan1":{"docs":182,"functional-code":900,"test-code":1254,"other":2},"appleraincoat":{"docs":98,"functional-code":189,"test-code":50},"wapisai":{"docs":24,"functional-code":99,"test-code":184}},"authorContributionVariance":{"4llysa":5856.9795,"jyztintan":8714.738,"UdhayaShan1":273871.9,"appleraincoat":4659.6567,"wapisai":2805.7317},"authorDisplayNameMap":{"4llysa":"CS2103T-W10-1 ALLY..YING","jyztintan":"CS2103T-W10-1 TAN ..STIN","UdhayaShan1":"CS2103T-W10-1 SHAN..HAYA","appleraincoat":"CS2103T-W10-1 LAU ..AMES","wapisai":"CS2103T-W10-1 ALIC..I QI"}} diff --git a/AY2324S2-CS2103T-W10-2_tp_master/authorship.json b/AY2324S2-CS2103T-W10-2_tp_master/authorship.json index 310402ab..264aa723 100644 --- a/AY2324S2-CS2103T-W10-2_tp_master/authorship.json +++ b/AY2324S2-CS2103T-W10-2_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Joshy837"},"content":"[![CI Status](https://github.com/AY2324S2-CS2103T-W10-2/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S2-CS2103T-W10-2/tp/actions)","lastModifiedDate":"2024-03-06"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":3,"author":{"gitId":"Joshy837"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2024-03-06"},{"lineNumber":4,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":5,"author":{"gitId":"Joshy837"},"content":"## PoochPlanner","lastModifiedDate":"2024-03-06"},{"lineNumber":6,"author":{"gitId":"Joshy837"},"content":"This is an **address book for dog cafe owners**.\u003cbr\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":7,"author":{"gitId":"Joshy837"},"content":"Example usages:","lastModifiedDate":"2024-03-06"},{"lineNumber":8,"author":{"gitId":"Joshy837"},"content":"* as an address book to store contacts","lastModifiedDate":"2024-03-06"},{"lineNumber":9,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":10,"author":{"gitId":"Joshy837"},"content":"The project simulates an ongoing software project for a desktop application (called _PoochPlanner_) used for managing contact details.","lastModifiedDate":"2024-03-06"},{"lineNumber":11,"author":{"gitId":"Joshy837"},"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":"2024-03-06"},{"lineNumber":12,"author":{"gitId":"Joshy837"},"content":" * It comes with a **reasonable level of user and developer documentation**.","lastModifiedDate":"2024-03-06"},{"lineNumber":13,"author":{"gitId":"Joshy837"},"content":"* It is named `PoochPlanner` because it is meant for pooch (dog) cafe owners to manage their address books.","lastModifiedDate":"2024-03-06"},{"lineNumber":14,"author":{"gitId":"Joshy837"},"content":"* For the detailed documentation of this project, see **[PoochPlanner\u0027s Product Website](https://ay2324s2-cs2103t-w10-2.github.io/tp/)**.","lastModifiedDate":"2024-03-06"},{"lineNumber":15,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":16,"author":{"gitId":"Joshy837"},"content":"This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"Joshy837":15,"-":1}},{"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":"yleeyilin"},"content":"### Lee Yi Lin","lastModifiedDate":"2024-02-28"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"yleeyilin"},"content":"\u003cimg src\u003d\"images/yleeyilin.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"yleeyilin"},"content":"[[github](https://github.com/yleeyilin)]","lastModifiedDate":"2024-02-28"},{"lineNumber":15,"author":{"gitId":"yleeyilin"},"content":"[[portfolio](team/yleeyilin.md)]","lastModifiedDate":"2024-02-28"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"yleeyilin"},"content":"* Role: Developer","lastModifiedDate":"2024-02-28"},{"lineNumber":18,"author":{"gitId":"yleeyilin"},"content":"* Responsibilities: Code Quality","lastModifiedDate":"2024-02-28"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"jamessinmaojun"},"content":"### James Sin","lastModifiedDate":"2024-02-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"jamessinmaojun"},"content":"\u003cimg src\u003d\"images/jamessinmaojun.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-07"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"jamessinmaojun"},"content":"[[github](http://github.com/jamessinmaojun)]","lastModifiedDate":"2024-02-29"},{"lineNumber":25,"author":{"gitId":"jamessinmaojun"},"content":"[[portfolio](team/jamessinmaojun.md)]","lastModifiedDate":"2024-02-29"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"jamessinmaojun"},"content":"* Role: Developer","lastModifiedDate":"2024-02-29"},{"lineNumber":28,"author":{"gitId":"jamessinmaojun"},"content":"* Responsibilities: Documentation","lastModifiedDate":"2024-02-29"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"jannaleong"},"content":"### Leong Jia Yi, Janna","lastModifiedDate":"2024-03-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"jannaleong"},"content":"\u003cimg src\u003d\"images/jannaleong.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"jannaleong"},"content":"[[github](http://github.com/jannaleong)] [[portfolio](team/jannaleong.md)]","lastModifiedDate":"2024-03-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"jannaleong"},"content":"* Role: Team Lead","lastModifiedDate":"2024-03-06"},{"lineNumber":37,"author":{"gitId":"jannaleong"},"content":"* Responsibilities: Overall project coordination, deliverables and deadlines","lastModifiedDate":"2024-03-06"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"Joshy837"},"content":"### Joshua Yip Sujun","lastModifiedDate":"2024-03-06"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"chiageng"},"content":"\u003cimg src\u003d\"images/joshy837.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-07"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"chiageng"},"content":"[[github](http://github.com/joshy837)]","lastModifiedDate":"2024-03-07"},{"lineNumber":44,"author":{"gitId":"chiageng"},"content":"[[portfolio](team/joshy837.md)]","lastModifiedDate":"2024-03-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"Joshy837"},"content":"* Responsibilities: Testing","lastModifiedDate":"2024-03-06"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":"### Chng Chia Geng","lastModifiedDate":"2024-03-01"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":"\u003cimg src\u003d\"images/chiageng.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"chiageng"},"content":"[[github](http://github.com/chiageng)]","lastModifiedDate":"2024-03-01"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":"[[portfolio](team/chiageng.md)]","lastModifiedDate":"2024-03-01"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"chiageng"},"content":"* Responsibilities: Integration","lastModifiedDate":"2024-03-01"}],"authorContributionMap":{"Joshy837":2,"jamessinmaojun":6,"chiageng":8,"jannaleong":5,"-":30,"yleeyilin":6}},{"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":"yleeyilin"},"content":"Note that `HelpXYZWindow` refers to the variations of Help Windows implemented, i.e. `HelpWindow`, `HelpPoochStaffWindow`,`HelpPoochSupplierWindow`,`HelpPoochMaintenanceWindow`,`HelpDeleteWindow`,`HelpEditWindow`,`HelpSearchWindow`","lastModifiedDate":"2024-03-19"},{"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 continues till the end of diagram.","lastModifiedDate":"2024-02-09"},{"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).\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-02-09"},{"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 an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Logic.png)","lastModifiedDate":"2024-02-09"},{"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":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":207,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Model.png)","lastModifiedDate":"2024-02-09"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"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":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"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":"jannaleong"},"content":"* Dog cafe owners who need to manage a team of staff, F\u0026B vendors \u0026 a dog maintainence team.","lastModifiedDate":"2024-03-06"},{"lineNumber":266,"author":{"gitId":"jannaleong"},"content":"* Prefer typing over other types and is comfortable using CLI applications.","lastModifiedDate":"2024-03-06"},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":268,"author":{"gitId":"jannaleong"},"content":"**Value proposition**: PoochPlanner is a desktop application to track details of various groups (vendors, staff, dog maintainence) that dog cafe owners have to regularly interact with. ","lastModifiedDate":"2024-03-06"},{"lineNumber":269,"author":{"gitId":"jannaleong"},"content":"The app is optimised for use using Command Line Interface (CLI) while still encompassing a user-friendly Graphical User Interface (GUI).","lastModifiedDate":"2024-03-06"},{"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":"jannaleong"},"content":"| Priority | \u003cdiv style\u003d\"width:50px\"\u003eAs a …​\u003c/div\u003e | I want to …​ | So that I can…​ |","lastModifiedDate":"2024-03-06"},{"lineNumber":277,"author":{"gitId":"jannaleong"},"content":"|---------------|----------------------------------------|------------------------------------------------------------|-------------------------------------------------------|","lastModifiedDate":"2024-03-07"},{"lineNumber":278,"author":{"gitId":"jannaleong"},"content":"| `* * *` | well connected user | search contacts | save time |","lastModifiedDate":"2024-03-06"},{"lineNumber":279,"author":{"gitId":"jannaleong"},"content":"| `* * *` | well connected user | add contacts | have the address to contact others in the future |","lastModifiedDate":"2024-03-06"},{"lineNumber":280,"author":{"gitId":"jannaleong"},"content":"| `* * *` | cafe owner user | delete the contacts of people | keep my contacts updated and remove outdated contacts |","lastModifiedDate":"2024-03-06"},{"lineNumber":281,"author":{"gitId":"jannaleong"},"content":"| `* * *` | long-term user | edit contacts | update some contact information |","lastModifiedDate":"2024-03-06"},{"lineNumber":282,"author":{"gitId":"jannaleong"},"content":"| `* * *` | first-time user | get help about what commnads I can use on the contact book | easily know how to navigate the system |","lastModifiedDate":"2024-03-06"},{"lineNumber":283,"author":{"gitId":"jannaleong"},"content":"| `**` | frugal user | sort my vendors in ascending order of price | view the vendors selling the cheapest products easily |","lastModifiedDate":"2024-03-06"},{"lineNumber":284,"author":{"gitId":"jannaleong"},"content":"| `**` | careless user | undo my commands | fix mistakes easily |","lastModifiedDate":"2024-03-07"},{"lineNumber":285,"author":{"gitId":"jannaleong"},"content":"| `**` | forgetful user | star contacts that are important | remember to contact them easily |","lastModifiedDate":"2024-03-07"},{"lineNumber":286,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":288,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":291,"author":{"gitId":"yleeyilin"},"content":"---","lastModifiedDate":"2024-02-29"},{"lineNumber":292,"author":{"gitId":"yleeyilin"},"content":"**System**: `PoochPlanner`","lastModifiedDate":"2024-02-29"},{"lineNumber":293,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":294,"author":{"gitId":"yleeyilin"},"content":"**Use case**: `UC01 - Add Contact of a Person`","lastModifiedDate":"2024-02-29"},{"lineNumber":295,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":296,"author":{"gitId":"yleeyilin"},"content":"**Actor**: `User`","lastModifiedDate":"2024-02-29"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":298,"author":{"gitId":"chiageng"},"content":"**Guarantee**: `If MSS reach step 3, a new contact is added into list`","lastModifiedDate":"2024-03-01"},{"lineNumber":299,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":300,"author":{"gitId":"yleeyilin"},"content":"**MSS**:","lastModifiedDate":"2024-02-29"},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":302,"author":{"gitId":"yleeyilin"},"content":"1. User requests to add contact of a person.","lastModifiedDate":"2024-02-29"},{"lineNumber":303,"author":{"gitId":"yleeyilin"},"content":"2. PoochPlanner updates list of persons.","lastModifiedDate":"2024-02-29"},{"lineNumber":304,"author":{"gitId":"yleeyilin"},"content":"3. PoochPlanner confirms success update.","lastModifiedDate":"2024-02-29"},{"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":"yleeyilin"},"content":"**Extensions**:","lastModifiedDate":"2024-02-29"},{"lineNumber":309,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":310,"author":{"gitId":"yleeyilin"},"content":"* 1a. PoochPlanner detects a missing field in the entered input.","lastModifiedDate":"2024-02-29"},{"lineNumber":311,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":312,"author":{"gitId":"yleeyilin"},"content":" * 1a1. PoochPlanner displays the error message.","lastModifiedDate":"2024-02-29"},{"lineNumber":313,"author":{"gitId":"yleeyilin"},"content":" * 1a2. User re-enters the correct command with the required field.","lastModifiedDate":"2024-02-29"},{"lineNumber":314,"author":{"gitId":"yleeyilin"},"content":" * Steps 1a1 - 1a2 are repeated until the input entered are correct.","lastModifiedDate":"2024-02-29"},{"lineNumber":315,"author":{"gitId":"yleeyilin"},"content":" * Use case resumes from step 2.","lastModifiedDate":"2024-02-29"},{"lineNumber":316,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":317,"author":{"gitId":"yleeyilin"},"content":"* 1b. PoochPlanner detects a duplicate name entry.","lastModifiedDate":"2024-02-29"},{"lineNumber":318,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":319,"author":{"gitId":"yleeyilin"},"content":" * 1b1. PoochPlanner displays the error message.","lastModifiedDate":"2024-02-29"},{"lineNumber":320,"author":{"gitId":"yleeyilin"},"content":" * 1b2. User re-enters the correct command with another name.","lastModifiedDate":"2024-02-29"},{"lineNumber":321,"author":{"gitId":"yleeyilin"},"content":" * Steps 1b1 - 1b2 are repeated until there is no duplicate entry in input.","lastModifiedDate":"2024-02-29"},{"lineNumber":322,"author":{"gitId":"yleeyilin"},"content":" * Use case resumes from step 2.","lastModifiedDate":"2024-02-29"},{"lineNumber":323,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":324,"author":{"gitId":"chiageng"},"content":"* 1c. PoochPlanner detects wrong format for email.","lastModifiedDate":"2024-03-01"},{"lineNumber":325,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":326,"author":{"gitId":"chiageng"},"content":" * 1c1. PoochPlanner displays the error message.","lastModifiedDate":"2024-03-02"},{"lineNumber":327,"author":{"gitId":"chiageng"},"content":" * 1c2. User re-enters the correct email format.","lastModifiedDate":"2024-03-02"},{"lineNumber":328,"author":{"gitId":"chiageng"},"content":" * Steps 1c1 - 1c2 are repeated until there is no error in input.","lastModifiedDate":"2024-03-02"},{"lineNumber":329,"author":{"gitId":"chiageng"},"content":" * Use case resumes from step 2.","lastModifiedDate":"2024-03-01"},{"lineNumber":330,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":331,"author":{"gitId":"chiageng"},"content":"* 1d. PoochPlanner detect unknown input for employment.","lastModifiedDate":"2024-03-02"},{"lineNumber":332,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":333,"author":{"gitId":"chiageng"},"content":" * 1d1. PoochPlanner displays the error message.","lastModifiedDate":"2024-03-02"},{"lineNumber":334,"author":{"gitId":"chiageng"},"content":" * 1d2. User re-enters the correct input for employment.","lastModifiedDate":"2024-03-02"},{"lineNumber":335,"author":{"gitId":"chiageng"},"content":" * Steps 1d1 - 1d2 are repeated until there is no error in input.","lastModifiedDate":"2024-03-02"},{"lineNumber":336,"author":{"gitId":"chiageng"},"content":" * Use case resumes from step 2.","lastModifiedDate":"2024-03-01"},{"lineNumber":337,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":338,"author":{"gitId":"yleeyilin"},"content":"---","lastModifiedDate":"2024-02-29"},{"lineNumber":339,"author":{"gitId":"yleeyilin"},"content":"**System**: `PoochPlanner`","lastModifiedDate":"2024-02-29"},{"lineNumber":340,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":341,"author":{"gitId":"yleeyilin"},"content":"**Use case**: `UC02 - Delete Contact of a Person`","lastModifiedDate":"2024-02-29"},{"lineNumber":342,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":343,"author":{"gitId":"yleeyilin"},"content":"**Actor**: `User`","lastModifiedDate":"2024-02-29"},{"lineNumber":344,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":345,"author":{"gitId":"chiageng"},"content":"**Guarantee**: `If MSS reach step 3, a contact is deleted from list`","lastModifiedDate":"2024-03-01"},{"lineNumber":346,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":347,"author":{"gitId":"yleeyilin"},"content":"**MSS**:","lastModifiedDate":"2024-02-29"},{"lineNumber":348,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":349,"author":{"gitId":"yleeyilin"},"content":"1. User requests to delete contact of a person.","lastModifiedDate":"2024-02-29"},{"lineNumber":350,"author":{"gitId":"yleeyilin"},"content":"2. PoochPlanner removes person and updates list of persons.","lastModifiedDate":"2024-02-29"},{"lineNumber":351,"author":{"gitId":"yleeyilin"},"content":"3. PoochPlanner confirms successful deletion.","lastModifiedDate":"2024-02-29"},{"lineNumber":352,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":353,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":355,"author":{"gitId":"yleeyilin"},"content":"**Extensions**:","lastModifiedDate":"2024-02-29"},{"lineNumber":356,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":357,"author":{"gitId":"yleeyilin"},"content":"* 1a. PoochPlanner detects a missing name field in the entered input.","lastModifiedDate":"2024-02-29"},{"lineNumber":358,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":359,"author":{"gitId":"yleeyilin"},"content":" * 1a1. PoochPlanner displays the error message.","lastModifiedDate":"2024-02-29"},{"lineNumber":360,"author":{"gitId":"yleeyilin"},"content":" * 1a2. User re-enters the correct command with the name field.","lastModifiedDate":"2024-02-29"},{"lineNumber":361,"author":{"gitId":"yleeyilin"},"content":" * Steps 1a1 - 1a2 are repeated until the input entered are correct.","lastModifiedDate":"2024-02-29"},{"lineNumber":362,"author":{"gitId":"yleeyilin"},"content":" * Use case resumes from step 2.","lastModifiedDate":"2024-02-29"},{"lineNumber":363,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":364,"author":{"gitId":"yleeyilin"},"content":"* 1b. PoochPlanner is unable to find the Person.","lastModifiedDate":"2024-02-29"},{"lineNumber":365,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":366,"author":{"gitId":"yleeyilin"},"content":" * 1b1. PoochPlanner displays the error message.","lastModifiedDate":"2024-02-29"},{"lineNumber":367,"author":{"gitId":"yleeyilin"},"content":" * 1b2. User re-enters a new command with another name.","lastModifiedDate":"2024-02-29"},{"lineNumber":368,"author":{"gitId":"yleeyilin"},"content":" * Steps 1b1 - 1b2 are repeated until the input references a Person that exists in PoochPlanner.","lastModifiedDate":"2024-02-29"},{"lineNumber":369,"author":{"gitId":"yleeyilin"},"content":" * Use case resumes from step 2.","lastModifiedDate":"2024-02-29"},{"lineNumber":370,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":371,"author":{"gitId":"yleeyilin"},"content":"---","lastModifiedDate":"2024-02-29"},{"lineNumber":372,"author":{"gitId":"yleeyilin"},"content":"**System**: `PoochPlanner`","lastModifiedDate":"2024-02-29"},{"lineNumber":373,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":374,"author":{"gitId":"yleeyilin"},"content":"**Use case**: `UC03 - Edit Contact of a Person`","lastModifiedDate":"2024-02-29"},{"lineNumber":375,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":376,"author":{"gitId":"yleeyilin"},"content":"**Actor**: `User`","lastModifiedDate":"2024-02-29"},{"lineNumber":377,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":378,"author":{"gitId":"chiageng"},"content":"**Guarantee**: `If MSS reach step 3, a contact is edited successfully in the list`","lastModifiedDate":"2024-03-01"},{"lineNumber":379,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":380,"author":{"gitId":"yleeyilin"},"content":"**MSS**:","lastModifiedDate":"2024-02-29"},{"lineNumber":381,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":382,"author":{"gitId":"yleeyilin"},"content":"1. User requests to edit the field of a person.","lastModifiedDate":"2024-02-29"},{"lineNumber":383,"author":{"gitId":"yleeyilin"},"content":"2. PoochPlanner updates the field of specified person.","lastModifiedDate":"2024-02-29"},{"lineNumber":384,"author":{"gitId":"yleeyilin"},"content":"3. PoochPlanner confirms successful edit.","lastModifiedDate":"2024-02-29"},{"lineNumber":385,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":386,"author":{"gitId":"yleeyilin"},"content":" Use case ends.","lastModifiedDate":"2024-02-29"},{"lineNumber":387,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":388,"author":{"gitId":"yleeyilin"},"content":"**Extensions**:","lastModifiedDate":"2024-02-29"},{"lineNumber":389,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":390,"author":{"gitId":"yleeyilin"},"content":"* 1a. PoochPlanner detects a missing name field in the entered input.","lastModifiedDate":"2024-02-29"},{"lineNumber":391,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":392,"author":{"gitId":"yleeyilin"},"content":" * 1a1. PoochPlanner displays the error message.","lastModifiedDate":"2024-02-29"},{"lineNumber":393,"author":{"gitId":"yleeyilin"},"content":" * 1a2. User re-enters the correct command with the name field.","lastModifiedDate":"2024-02-29"},{"lineNumber":394,"author":{"gitId":"yleeyilin"},"content":" * Steps 1a1 - 1a2 are repeated until the input entered are correct.","lastModifiedDate":"2024-02-29"},{"lineNumber":395,"author":{"gitId":"yleeyilin"},"content":" * Use case resumes from step 2.","lastModifiedDate":"2024-02-29"},{"lineNumber":396,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":397,"author":{"gitId":"yleeyilin"},"content":"* 1b. PoochPlanner is unable to find the Person.","lastModifiedDate":"2024-02-29"},{"lineNumber":398,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":399,"author":{"gitId":"yleeyilin"},"content":" * 1b1. PoochPlanner displays the error message.","lastModifiedDate":"2024-02-29"},{"lineNumber":400,"author":{"gitId":"yleeyilin"},"content":" * 1b2. User re-enters a new command with another name.","lastModifiedDate":"2024-02-29"},{"lineNumber":401,"author":{"gitId":"yleeyilin"},"content":" * Steps 1b1 - 1b2 are repeated until the input references a Person that exists in PoochPlanner.","lastModifiedDate":"2024-02-29"},{"lineNumber":402,"author":{"gitId":"yleeyilin"},"content":" * Use case resumes from step 2.","lastModifiedDate":"2024-02-29"},{"lineNumber":403,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":404,"author":{"gitId":"yleeyilin"},"content":"* 1c. User requests to edit the name field to a name that already exists in PoochPlanner.","lastModifiedDate":"2024-02-29"},{"lineNumber":405,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":406,"author":{"gitId":"yleeyilin"},"content":" * 1c1. PoochPlanner displays the error message.","lastModifiedDate":"2024-02-29"},{"lineNumber":407,"author":{"gitId":"chiageng"},"content":" * 1c2. User re-enters the command with a different name.","lastModifiedDate":"2024-03-02"},{"lineNumber":408,"author":{"gitId":"yleeyilin"},"content":" * Steps 1c1 - 1c2 are repeated until the new name field is valid.","lastModifiedDate":"2024-02-29"},{"lineNumber":409,"author":{"gitId":"yleeyilin"},"content":" * Use case resumes from step 2.","lastModifiedDate":"2024-02-29"},{"lineNumber":410,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":411,"author":{"gitId":"yleeyilin"},"content":"* 1d. User did not specify the field that they want to edit.","lastModifiedDate":"2024-02-29"},{"lineNumber":412,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":413,"author":{"gitId":"yleeyilin"},"content":" * 1d1. PoochPlanner displays the error message.","lastModifiedDate":"2024-02-29"},{"lineNumber":414,"author":{"gitId":"yleeyilin"},"content":" * 1d2. User re-enters the command and specify the field/s to edit.","lastModifiedDate":"2024-02-29"},{"lineNumber":415,"author":{"gitId":"yleeyilin"},"content":" * Steps 1d1 - 1d2 are repeated until there exist a specified field to edit.","lastModifiedDate":"2024-02-29"},{"lineNumber":416,"author":{"gitId":"yleeyilin"},"content":" * Use case resumes from step 2.","lastModifiedDate":"2024-02-29"},{"lineNumber":417,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":418,"author":{"gitId":"yleeyilin"},"content":"* 1e. User specified an invalid field.","lastModifiedDate":"2024-02-29"},{"lineNumber":419,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":420,"author":{"gitId":"yleeyilin"},"content":" * 1e1. PoochPlanner displays the error message.","lastModifiedDate":"2024-02-29"},{"lineNumber":421,"author":{"gitId":"yleeyilin"},"content":" * 1e2. User re-enters the command and edits a different field.","lastModifiedDate":"2024-02-29"},{"lineNumber":422,"author":{"gitId":"yleeyilin"},"content":" * Steps 1e1 - 1e2 are repeated until there exist a valid field in the input.","lastModifiedDate":"2024-02-29"},{"lineNumber":423,"author":{"gitId":"yleeyilin"},"content":" * Use case resumes from step 2.","lastModifiedDate":"2024-02-29"},{"lineNumber":424,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":425,"author":{"gitId":"chiageng"},"content":"* 1f. PoochPlanner detects wrong format for email.","lastModifiedDate":"2024-03-01"},{"lineNumber":426,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":427,"author":{"gitId":"chiageng"},"content":" * 1f1. PoochPlanner displays the error message.","lastModifiedDate":"2024-03-02"},{"lineNumber":428,"author":{"gitId":"chiageng"},"content":" * 1f2. User re-enters the correct email format.","lastModifiedDate":"2024-03-02"},{"lineNumber":429,"author":{"gitId":"chiageng"},"content":" * Steps 1f1 - 1f2 are repeated until there is no error in input.","lastModifiedDate":"2024-03-02"},{"lineNumber":430,"author":{"gitId":"chiageng"},"content":" * Use case resumes from step 2.","lastModifiedDate":"2024-03-01"},{"lineNumber":431,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":432,"author":{"gitId":"yleeyilin"},"content":"---","lastModifiedDate":"2024-02-29"},{"lineNumber":433,"author":{"gitId":"yleeyilin"},"content":"**System**: `PoochPlanner`","lastModifiedDate":"2024-02-29"},{"lineNumber":434,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":435,"author":{"gitId":"yleeyilin"},"content":"**Use case**: `UC04 - Search Contact of a Person`","lastModifiedDate":"2024-02-29"},{"lineNumber":436,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":437,"author":{"gitId":"yleeyilin"},"content":"**Actor**: `User`","lastModifiedDate":"2024-02-29"},{"lineNumber":438,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":439,"author":{"gitId":"yleeyilin"},"content":"**MSS**:","lastModifiedDate":"2024-02-29"},{"lineNumber":440,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":441,"author":{"gitId":"yleeyilin"},"content":"1. User requests to search for the contact of a person with a keyword for a specified field.","lastModifiedDate":"2024-02-29"},{"lineNumber":442,"author":{"gitId":"yleeyilin"},"content":"2. PoochPlanner confirms successful search.","lastModifiedDate":"2024-02-29"},{"lineNumber":443,"author":{"gitId":"yleeyilin"},"content":"3. PoochPlanner returns the sublist of contacts that contains the keyword specified by the user.","lastModifiedDate":"2024-02-29"},{"lineNumber":444,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":445,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2024-02-29"},{"lineNumber":446,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":447,"author":{"gitId":"yleeyilin"},"content":"**Extensions**:","lastModifiedDate":"2024-02-29"},{"lineNumber":448,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":449,"author":{"gitId":"yleeyilin"},"content":"* 1a. PoochPlanner detects a missing field in the entered input.","lastModifiedDate":"2024-02-29"},{"lineNumber":450,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":451,"author":{"gitId":"yleeyilin"},"content":" * 1a1. PoochPlanner displays the error message.","lastModifiedDate":"2024-02-29"},{"lineNumber":452,"author":{"gitId":"yleeyilin"},"content":" * 1a2. User re-enters the correct command with a specified field.","lastModifiedDate":"2024-02-29"},{"lineNumber":453,"author":{"gitId":"yleeyilin"},"content":" * Steps 1a1 - 1a2 are repeated until a valid field is inputted by the User.","lastModifiedDate":"2024-02-29"},{"lineNumber":454,"author":{"gitId":"yleeyilin"},"content":" * Use case resumes from step 2.","lastModifiedDate":"2024-02-29"},{"lineNumber":455,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":456,"author":{"gitId":"yleeyilin"},"content":"* 1b. PoochPlanner detects multiple fields in the entered input.","lastModifiedDate":"2024-02-29"},{"lineNumber":457,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":458,"author":{"gitId":"yleeyilin"},"content":" * 1b1. PoochPlanner displays the error message.","lastModifiedDate":"2024-02-29"},{"lineNumber":459,"author":{"gitId":"yleeyilin"},"content":" * 1b2. User re-enters a new command with only one field.","lastModifiedDate":"2024-02-29"},{"lineNumber":460,"author":{"gitId":"yleeyilin"},"content":" * Steps 1b1 - 1b2 are repeated until the input references a Person that exists in PoochPlanner.","lastModifiedDate":"2024-02-29"},{"lineNumber":461,"author":{"gitId":"yleeyilin"},"content":" * Use case resumes from step 2.","lastModifiedDate":"2024-02-29"},{"lineNumber":462,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":463,"author":{"gitId":"yleeyilin"},"content":"* 1c. PoochPlanner detects invalid field in the entered input.","lastModifiedDate":"2024-02-29"},{"lineNumber":464,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":465,"author":{"gitId":"yleeyilin"},"content":" * 1c1. PoochPlanner displays the error message.","lastModifiedDate":"2024-02-29"},{"lineNumber":466,"author":{"gitId":"yleeyilin"},"content":" * 1c2. User re-enters a new command with another field.","lastModifiedDate":"2024-02-29"},{"lineNumber":467,"author":{"gitId":"yleeyilin"},"content":" * Steps 1c1 - 1c2 are repeated until a valid field is inputted by the User.","lastModifiedDate":"2024-02-29"},{"lineNumber":468,"author":{"gitId":"yleeyilin"},"content":" * Use case resumes from step 2.","lastModifiedDate":"2024-02-29"},{"lineNumber":469,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":470,"author":{"gitId":"yleeyilin"},"content":"---","lastModifiedDate":"2024-02-29"},{"lineNumber":471,"author":{"gitId":"yleeyilin"},"content":"**System**: `PoochPlanner`","lastModifiedDate":"2024-02-29"},{"lineNumber":472,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":473,"author":{"gitId":"yleeyilin"},"content":"**Use case**: `UC05 - Help Tutorial`","lastModifiedDate":"2024-02-29"},{"lineNumber":474,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":475,"author":{"gitId":"yleeyilin"},"content":"**Actor**: `User`","lastModifiedDate":"2024-02-29"},{"lineNumber":476,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":477,"author":{"gitId":"yleeyilin"},"content":"**MSS**:","lastModifiedDate":"2024-02-29"},{"lineNumber":478,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":479,"author":{"gitId":"yleeyilin"},"content":"1. User requests to learn more about the commands.","lastModifiedDate":"2024-02-29"},{"lineNumber":480,"author":{"gitId":"yleeyilin"},"content":"2. PoochPlanner displays a tutorial information.","lastModifiedDate":"2024-02-29"},{"lineNumber":481,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":482,"author":{"gitId":"yleeyilin"},"content":" Use case ends.","lastModifiedDate":"2024-02-29"},{"lineNumber":483,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":484,"author":{"gitId":"yleeyilin"},"content":"**Extensions**:","lastModifiedDate":"2024-02-29"},{"lineNumber":485,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":486,"author":{"gitId":"yleeyilin"},"content":"* 1a. User requests to learn about an invalid command.","lastModifiedDate":"2024-02-29"},{"lineNumber":487,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":488,"author":{"gitId":"yleeyilin"},"content":" * 1a1. PoochPlanner displays the error message.","lastModifiedDate":"2024-02-29"},{"lineNumber":489,"author":{"gitId":"yleeyilin"},"content":" * 1a2. User re-enters the command and request to learn about a valid command.","lastModifiedDate":"2024-02-29"},{"lineNumber":490,"author":{"gitId":"yleeyilin"},"content":" * Steps 1a1 - 1a2 are repeated until a valid command is inputted by the User.","lastModifiedDate":"2024-02-29"},{"lineNumber":491,"author":{"gitId":"yleeyilin"},"content":" * Use case resumes from step 2.","lastModifiedDate":"2024-02-29"},{"lineNumber":492,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":493,"author":{"gitId":"yleeyilin"},"content":"---","lastModifiedDate":"2024-02-29"},{"lineNumber":494,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":495,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":496,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":497,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":498,"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":499,"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":500,"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":501,"author":{"gitId":"chiageng"},"content":"4. All code snippets presented in the developer guides shall follow a consistent coding style and formatting, adhering to the company\u0027s coding standards and best practices.","lastModifiedDate":"2024-03-01"},{"lineNumber":502,"author":{"gitId":"chiageng"},"content":"5. The developer guides shall undergo regular content audits, with outdated or deprecated information flagged for removal or revision, and new features or updates documented within one week of release.","lastModifiedDate":"2024-03-01"},{"lineNumber":503,"author":{"gitId":"chiageng"},"content":"6. The system should respond within 2 seconds.","lastModifiedDate":"2024-03-01"},{"lineNumber":504,"author":{"gitId":"chiageng"},"content":"7. The data should store locally and not accessible from other device for privacy issue.","lastModifiedDate":"2024-03-01"},{"lineNumber":505,"author":{"gitId":"chiageng"},"content":"8. The project is expected to adhere to schedule closely to deliver new feature.","lastModifiedDate":"2024-03-01"},{"lineNumber":506,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":507,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":508,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":509,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":510,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":511,"author":{"gitId":"jamessinmaojun"},"content":"* **PoochPlanner**: An address book CLI software that stores contacts.","lastModifiedDate":"2024-03-06"},{"lineNumber":512,"author":{"gitId":"jamessinmaojun"},"content":"* **Pooch Contact**: A contact that is stored in PoochPlanner.","lastModifiedDate":"2024-03-06"},{"lineNumber":513,"author":{"gitId":"jamessinmaojun"},"content":"* **Pooch Owner**: The target user of PoochPlanner; Dog Cafe owners.","lastModifiedDate":"2024-03-06"},{"lineNumber":514,"author":{"gitId":"jamessinmaojun"},"content":"* **Pooch Client**: Patrons of the Dog Cafe.","lastModifiedDate":"2024-03-06"},{"lineNumber":515,"author":{"gitId":"jamessinmaojun"},"content":"* **Pooch Supplier**: External suppliers that sell the logistics required for the sustenance of Dog Cafe operations, for example Pooch Food, to the Pooch Cafe Owners at a fixed price.","lastModifiedDate":"2024-03-06"},{"lineNumber":516,"author":{"gitId":"jamessinmaojun"},"content":"* **Pooch Staff**: Employees of the Dog Cafe that handle the running of the cafe.","lastModifiedDate":"2024-03-06"},{"lineNumber":517,"author":{"gitId":"jamessinmaojun"},"content":"* **Pooch Maintenance Staff**: Specialised external workers that take special care and maintenance of dogs.","lastModifiedDate":"2024-03-06"},{"lineNumber":518,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":519,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":520,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":521,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":522,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":523,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":524,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":525,"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":526,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":527,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":528,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":529,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":530,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":531,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":532,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":533,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":534,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":535,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":536,"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":537,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":538,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":539,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":540,"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":541,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":542,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":543,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":544,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":545,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":546,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":547,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":548,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":549,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":550,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":551,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":552,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":553,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":554,"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":555,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":556,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":557,"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":558,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":559,"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":560,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":561,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":562,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":563,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":564,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":565,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":566,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":567,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":568,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":569,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":570,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"chiageng":35,"jamessinmaojun":7,"jannaleong":14,"-":362,"yleeyilin":152}},{"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":"Joshy837"},"content":"PoochPlanner is an **address book manager for managing contacts, optimised for use via a Command Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, PoochPlanner can get your contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2024-03-06"},{"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":"chiageng"},"content":"1. Download the latest `poochplanner.jar` from [here](https://github.com/AY2324S2-CS2103T-W10-2/tp/releases).","lastModifiedDate":"2024-03-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your PoochPlanner.","lastModifiedDate":"2024-03-07"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar poochplanner.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2024-03-08"},{"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":"jannaleong"},"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":"2024-03-18"},{"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":"chiageng"},"content":" * `/pooch-staff ; name : Poochie ; phone : 98765435 ; address : Poochie Street 21 ; email : ilovecatstoo@gmail.com ; salary : $50/hr ; employment : part-time` : Adds a staff contact named `Poochie` to the Pooch Planner.","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":30,"author":{"gitId":"chiageng"},"content":" * `/pooch-supplier ; name : PetCo ; phone : 98673098 ; address : Meow Street 24 ; email : ilovewombatstoo@gmail.com ; product : kibble ; price : $98/bag` : Adds a supplier contact named `PetCo` to the Pooch Planner.","lastModifiedDate":"2024-03-01"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":32,"author":{"gitId":"chiageng"},"content":" * `/pooch-maintenance ; name : Tom Tan ; phone : 98765435 ; address : Poochie Street 24 ; email : ihelppooches@gmail.com ; skill : trainer ; commission : $60/hr` : Adds a helper contact named `Tom Tan` to the Pooch Planner.","lastModifiedDate":"2024-03-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"chiageng"},"content":" * `/delete ; name : Poochie` : Deletes the contact with associated contact name.","lastModifiedDate":"2024-03-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"chiageng"},"content":" * `/exit` : Exits the app.","lastModifiedDate":"2024-03-07"},{"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":"chiageng"},"content":"* Words in `[parameter name]` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":" e.g. in `/pooch-staff ; name : [name]`, `[name]` is a parameter which can be used as `/pooch-staff ; name : Poochie`.","lastModifiedDate":"2024-03-01"},{"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":"chiageng"},"content":" e.g. if the command specifies `name : [name] ; phone : [phone]`, `phone : [phone] ; name : [name]` is also acceptable.","lastModifiedDate":"2024-03-01"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":"* Extraneous parameters for commands that do not take in parameters (such as `/list`, `/exit`) will be ignored.\u003cbr\u003e","lastModifiedDate":"2024-03-07"},{"lineNumber":55,"author":{"gitId":"chiageng"},"content":" e.g. if the command specifies `/list 123`, it will be interpreted as `/list`.","lastModifiedDate":"2024-03-07"},{"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":"jannaleong"},"content":"### Viewing help : `/help`","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"jannaleong"},"content":"Shows a message of how to write commands for all commands or a specfic command.","lastModifiedDate":"2024-03-06"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"jannaleong"},"content":"### Get help for all commands","lastModifiedDate":"2024-03-06"},{"lineNumber":65,"author":{"gitId":"jannaleong"},"content":"Format: `/help`","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"jannaleong"},"content":"### Get help for a specific command","lastModifiedDate":"2024-03-06"},{"lineNumber":68,"author":{"gitId":"jannaleong"},"content":"Format: `/help-[command type]`","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":70,"author":{"gitId":"jannaleong"},"content":"Examples:","lastModifiedDate":"2024-03-06"},{"lineNumber":71,"author":{"gitId":"jannaleong"},"content":"* `/help-poochstaff`","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"jannaleong"},"content":"* `/help-poochsupplier`","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"jannaleong"},"content":"* `/help-poochmaintenance`","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"jannaleong"},"content":"* `/help-edit`","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"jannaleong"},"content":"* `/help-delete`","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"jannaleong"},"content":"* `/help-search`","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"chiageng"},"content":"### Adding a contact: `Add`","lastModifiedDate":"2024-03-01"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"chiageng"},"content":"Adds a staff / supplier / maintainer / other to the Pooch Planner.","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"chiageng"},"content":"#### Adds a staff","lastModifiedDate":"2024-03-01"},{"lineNumber":84,"author":{"gitId":"chiageng"},"content":"Format: `/pooch-staff ; name : [name] ; phone : [phone] ; address : [address] ; email : [email] ; salary : [salary/hr] ; employment : [part/full] ;`","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"chiageng"},"content":"#### Adds a supplier","lastModifiedDate":"2024-03-01"},{"lineNumber":87,"author":{"gitId":"chiageng"},"content":"Format: `/pooch-supplier ; name : [name] ; phone : [phone] ; address : [address] ; email : [email] ; product : [product] ; price : [price/(quantity)] ;`","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":89,"author":{"gitId":"chiageng"},"content":"#### Adds a maintainer","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"chiageng"},"content":"Format: `/pooch-maintainer ; name : [name] ; phone : [phone] ; address : [address] ; email : [email] ; skill : [skill] ; commission : [commission/hr] ;`","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"chiageng"},"content":"#### Adds a general contact","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"chiageng"},"content":"Format: `/pooch-add ; name : [name] ; phone : [phone] ; address : [address] ; email : [email] ;`","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"chiageng"},"content":"* `/pooch-staff ; name : Poochie ; phone : 98765435 ; address : Poochie Street 21 ; email : ilovecatstoo@gmail.com ; salary : $50/hr ; employment : part-time`","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"chiageng"},"content":"* `/pooch-supplier ; name : PetCo ; phone : 98673098 ; address : Meow Street 24 ; email : ilovewombatstoo@gmail.com ; product : kibble ; price : $98/bag`","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"chiageng"},"content":"* `/pooch-maintainer ; name : Tom Tan ; phone : 98765435 ; address : Poochie Street 24 ; email : ihelppooches@gmail.com ; skill : trainer ; commission : $60/hr`","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"chiageng"},"content":"* `/pooch-add ; name : Janna ; phone : 98765435 ; address : Poochie Street 24 ; email : ihelppooches@gmail.com`","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":102,"author":{"gitId":"jannaleong"},"content":"Constraints :","lastModifiedDate":"2024-03-06"},{"lineNumber":103,"author":{"gitId":"chiageng"},"content":"* `Duplicate name will not be allowed`","lastModifiedDate":"2024-03-01"},{"lineNumber":104,"author":{"gitId":"chiageng"},"content":"* `For instance, to check whether a name is unique (case-insensitive), we parse in the .lower() String method to convert all fields to lowercase.`","lastModifiedDate":"2024-03-01"},{"lineNumber":105,"author":{"gitId":"chiageng"},"content":"* `Name field is case-insensitive but space-sensitive`","lastModifiedDate":"2024-03-01"},{"lineNumber":106,"author":{"gitId":"chiageng"},"content":"* `Salary and commission must be in format ${Number}/hr`","lastModifiedDate":"2024-03-18"},{"lineNumber":107,"author":{"gitId":"chiageng"},"content":"* `Price must be in format ${Number}/{quantity}`","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"yleeyilin"},"content":"### Editing a contact : `Edit`","lastModifiedDate":"2024-03-18"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"yleeyilin"},"content":"Edit the fields of the specified **person / staff / supplier / maintainer** in the Pooch Planner.","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"yleeyilin"},"content":"#### Edits a person","lastModifiedDate":"2024-03-18"},{"lineNumber":115,"author":{"gitId":"yleeyilin"},"content":"Format: `/edit ; name : [name] ; field : { phone : [phone] ; address : [address] ; email : [email] }`","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":118,"author":{"gitId":"yleeyilin"},"content":"#### Edits a staff","lastModifiedDate":"2024-03-18"},{"lineNumber":119,"author":{"gitId":"yleeyilin"},"content":"Format: `/edit-staff ; name : [name] ; field : { phone : [phone] ; address : [address] ; email : [email] ; salary : [salary] ; employment : [part/full] }`","lastModifiedDate":"2024-03-18"},{"lineNumber":120,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":122,"author":{"gitId":"yleeyilin"},"content":"#### Edits a supplier","lastModifiedDate":"2024-03-18"},{"lineNumber":123,"author":{"gitId":"yleeyilin"},"content":"Format: `/edit-supplier ; name : [name] ; field : { phone : [phone] ; address : [address] ; email : [email] ; product : [product] ; price : [price] }`","lastModifiedDate":"2024-03-18"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":126,"author":{"gitId":"yleeyilin"},"content":"#### Edits a maintainer","lastModifiedDate":"2024-03-18"},{"lineNumber":127,"author":{"gitId":"yleeyilin"},"content":"Format: `/edit-maintainer ; name : [name] ; field : { phone : [phone] ; address : [address] ; email : [email] ; skill : [skill] ; commission : [commission] }`","lastModifiedDate":"2024-03-18"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":129,"author":{"gitId":"yleeyilin"},"content":"* Edits the specified `field`(s) of the person with the specified `name`. Note that the specified person must first exist in Pooch Contact Book.","lastModifiedDate":"2024-02-28"},{"lineNumber":130,"author":{"gitId":"yleeyilin"},"content":"* The name is a compulsory field that is case-insensitive but space-sensitive.","lastModifiedDate":"2024-02-28"},{"lineNumber":131,"author":{"gitId":"yleeyilin"},"content":"* At least one field must be provided.","lastModifiedDate":"2024-02-28"},{"lineNumber":132,"author":{"gitId":"yleeyilin"},"content":"* More than one field can be updated at the same time.","lastModifiedDate":"2024-02-28"},{"lineNumber":133,"author":{"gitId":"yleeyilin"},"content":"* The field(s) to be edited must be a valid field within their contact type, i.e. Pooch Staff, Pooch Supplier, Pooch Maintenance.","lastModifiedDate":"2024-03-18"},{"lineNumber":134,"author":{"gitId":"yleeyilin"},"content":"* **_Caution_** : Editing `name` field is strictly **not** allowed and **will** be ignored.","lastModifiedDate":"2024-03-18"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":136,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2024-02-28"},{"lineNumber":137,"author":{"gitId":"chiageng"},"content":"* `/edit ; name : Poochie ; field : { name : Mochie }`","lastModifiedDate":"2024-03-07"},{"lineNumber":138,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":139,"author":{"gitId":"yleeyilin"},"content":" The above command edits the name of the person, from **_Poochie_** to **_Mochie_**, given that there are no other persons with the name, **_Mochie_**, in the Pooch Contact Book.","lastModifiedDate":"2024-02-28"},{"lineNumber":140,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":141,"author":{"gitId":"yleeyilin"},"content":"* `/edit-staff ; name : Thomas ; field : { address : Poochie Street 25 ; employment : full-time }`","lastModifiedDate":"2024-03-18"},{"lineNumber":142,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":143,"author":{"gitId":"yleeyilin"},"content":" The above command edits the address of **_Thomas_** to **_Poochie Street 25_**.","lastModifiedDate":"2024-02-28"},{"lineNumber":144,"author":{"gitId":"yleeyilin"},"content":" The above command also edits the employment of **_Thomas_**, which **must** be a **_Pooch Staff_**, to **_full-time_**.","lastModifiedDate":"2024-02-28"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"chiageng"},"content":"Deletes the specified person from the Pooch Planner.","lastModifiedDate":"2024-03-07"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"chiageng"},"content":"Format: `/delete ; name : [name]`","lastModifiedDate":"2024-03-07"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"jamessinmaojun"},"content":"* Deletes the contact with the specified `name`. Note that the specified person must first exist in Pooch Contact Book.","lastModifiedDate":"2024-02-29"},{"lineNumber":153,"author":{"gitId":"jamessinmaojun"},"content":"* The name is a compulsory field that is case-insensitive but space-sensitive.","lastModifiedDate":"2024-02-29"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"chiageng"},"content":"* `/delete ; name : Poochie`","lastModifiedDate":"2024-03-07"},{"lineNumber":157,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":158,"author":{"gitId":"jamessinmaojun"},"content":" The above command deletes the contact with name **_Poochie_**, provided **_Poochie_** exists as a name of a contact in Pooch Contact Book","lastModifiedDate":"2024-02-29"},{"lineNumber":159,"author":{"gitId":"jamessinmaojun"},"content":" ","lastModifiedDate":"2024-02-29"},{"lineNumber":160,"author":{"gitId":"chiageng"},"content":"* `/delete ; name : Moochie`","lastModifiedDate":"2024-03-07"},{"lineNumber":161,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":162,"author":{"gitId":"jamessinmaojun"},"content":" The above command deletes the contact with name **_Moochie_**, provided **_Moochie_** exists as a name of a contact in Pooch Contact Book","lastModifiedDate":"2024-02-29"},{"lineNumber":163,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"Joshy837"},"content":"### Searching a contact : `search`","lastModifiedDate":"2024-03-06"},{"lineNumber":166,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":167,"author":{"gitId":"Joshy837"},"content":"Searches through the address book using specified fields and keyword.","lastModifiedDate":"2024-03-06"},{"lineNumber":168,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":169,"author":{"gitId":"Joshy837"},"content":"Formats:","lastModifiedDate":"2024-03-06"},{"lineNumber":170,"author":{"gitId":"Joshy837"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":171,"author":{"gitId":"Joshy837"},"content":"/search ; name : [full/partial name]","lastModifiedDate":"2024-03-06"},{"lineNumber":172,"author":{"gitId":"Joshy837"},"content":"/search ; phone : [full/partial phone]","lastModifiedDate":"2024-03-06"},{"lineNumber":173,"author":{"gitId":"Joshy837"},"content":"/search ; address : [full/partial address]","lastModifiedDate":"2024-03-06"},{"lineNumber":174,"author":{"gitId":"Joshy837"},"content":"/search ; email : [full/partial email]","lastModifiedDate":"2024-03-06"},{"lineNumber":175,"author":{"gitId":"Joshy837"},"content":"/search ; product : [full/partial product name]","lastModifiedDate":"2024-03-06"},{"lineNumber":176,"author":{"gitId":"Joshy837"},"content":"/search ; employment : [employment]","lastModifiedDate":"2024-03-06"},{"lineNumber":177,"author":{"gitId":"Joshy837"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":178,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":179,"author":{"gitId":"Joshy837"},"content":"* Searches the person by specifying field (i.e. `name`, `phone`, `address`, etc.), followed by the partial or full keyword","lastModifiedDate":"2024-03-06"},{"lineNumber":180,"author":{"gitId":"Joshy837"},"content":"* Current feature does not allow users to search for `commission`, `salary`, and `price`","lastModifiedDate":"2024-03-06"},{"lineNumber":181,"author":{"gitId":"Joshy837"},"content":"* All fields are **case-insensitive**.","lastModifiedDate":"2024-03-06"},{"lineNumber":182,"author":{"gitId":"Joshy837"},"content":"For instance, to check whether a name is unique (case-insensitive)","lastModifiedDate":"2024-03-06"},{"lineNumber":183,"author":{"gitId":"Joshy837"},"content":" * Eg : `Janna` and `janna` are both equivalent","lastModifiedDate":"2024-03-06"},{"lineNumber":184,"author":{"gitId":"Joshy837"},"content":"* Spaces within each input are considered","lastModifiedDate":"2024-03-06"},{"lineNumber":185,"author":{"gitId":"Joshy837"},"content":" * Eg: `Tom Tan Er` is different from `Tom Taner`","lastModifiedDate":"2024-03-06"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":188,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2024-03-06"},{"lineNumber":189,"author":{"gitId":"Joshy837"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":190,"author":{"gitId":"Joshy837"},"content":"/search ; name : Poochie","lastModifiedDate":"2024-03-06"},{"lineNumber":191,"author":{"gitId":"Joshy837"},"content":"/search ; phone : 98765432","lastModifiedDate":"2024-03-06"},{"lineNumber":192,"author":{"gitId":"Joshy837"},"content":"/search ; address : Poochie Street 21","lastModifiedDate":"2024-03-06"},{"lineNumber":193,"author":{"gitId":"Joshy837"},"content":"/search ; email : ilovecatstoo@gmail.com","lastModifiedDate":"2024-03-06"},{"lineNumber":194,"author":{"gitId":"Joshy837"},"content":"/search ; address : Pooch","lastModifiedDate":"2024-03-06"},{"lineNumber":195,"author":{"gitId":"Joshy837"},"content":"/search ; description : Food","lastModifiedDate":"2024-03-06"},{"lineNumber":196,"author":{"gitId":"Joshy837"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":197,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":198,"author":{"gitId":"jannaleong"},"content":"### Adding a note : `note`","lastModifiedDate":"2024-03-19"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":200,"author":{"gitId":"jannaleong"},"content":"Adds a note to a specified person from the Pooch Planner.","lastModifiedDate":"2024-03-19"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":202,"author":{"gitId":"jannaleong"},"content":"Format: `/note ; name : [name] ; note : [note message]`","lastModifiedDate":"2024-03-19"},{"lineNumber":203,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":204,"author":{"gitId":"jannaleong"},"content":"* Adds a note to the contact with the specified `name`. ","lastModifiedDate":"2024-03-19"},{"lineNumber":205,"author":{"gitId":"jannaleong"},"content":"* Note that the specified person must first exist in Pooch Contact Book.","lastModifiedDate":"2024-03-19"},{"lineNumber":206,"author":{"gitId":"jannaleong"},"content":"* The name and note is a compulsory field that is case-insensitive but space-sensitive.","lastModifiedDate":"2024-03-19"},{"lineNumber":207,"author":{"gitId":"jannaleong"},"content":"* Note command can only be done on general persons classes. (eg. not Maintainer, Staff, Supplier)","lastModifiedDate":"2024-03-19"},{"lineNumber":208,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":209,"author":{"gitId":"jannaleong"},"content":"Examples:","lastModifiedDate":"2024-03-19"},{"lineNumber":210,"author":{"gitId":"jannaleong"},"content":"* `/note ; name : Poochie ; note : meet poochie tonight to get kibble`","lastModifiedDate":"2024-03-19"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":212,"author":{"gitId":"jannaleong"},"content":" The above command adds the note \"meet poochie tonight to get kibble\" to ","lastModifiedDate":"2024-03-19"},{"lineNumber":213,"author":{"gitId":"jannaleong"},"content":" the contact with name **_Poochie_**, provided **_Poochie_** exists as a name of a contact in Pooch Contact Book","lastModifiedDate":"2024-03-19"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":215,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":219,"author":{"gitId":"chiageng"},"content":"Format: `/exit`","lastModifiedDate":"2024-03-07"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"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":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":227,"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":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":229,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e:exclamation: **Caution:**","lastModifiedDate":"2021-02-04"},{"lineNumber":230,"author":{"gitId":"chiageng"},"content":"If your changes to the data file makes its format invalid, PoochPlanner 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.\u003cbr\u003e","lastModifiedDate":"2024-03-07"},{"lineNumber":231,"author":{"gitId":"chiageng"},"content":"Furthermore, certain edits can cause the PoochPlanner to behave in unexpected ways (e.g., if a value entered is outside of the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.","lastModifiedDate":"2024-03-07"},{"lineNumber":232,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-02-04"},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":234,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04"},{"lineNumber":237,"author":{"gitId":"-"},"content":"","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":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"chiageng"},"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 PoochPlanner home folder.","lastModifiedDate":"2024-03-07"},{"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":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":249,"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":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":251,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":252,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":253,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":"--------|------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"chiageng"},"content":"**Add Staff** | `/pooch-staff ; name : [name] ; phone : [phone] ; address : [address] ; email : [email] ; salary : [salary] ; employment : [part/full]` \u003cbr\u003e e.g., `/pooch-staff ; name : Poochie ; phone : 98765435 ; address : Poochie Street 21 ; email : ilovecatstoo@gmail.com ; salary : $50/h ; employment : part-time`","lastModifiedDate":"2024-03-07"},{"lineNumber":258,"author":{"gitId":"chiageng"},"content":"**Add Supplier** | `/pooch-supplier ; name : [name] ; phone : [phone] ; address : [address] ; email : [email] ; product : [product] ; price : [price]` \u003cbr\u003e e.g., `/pooch-supplier ; name : PetCo ; phone : 98673098 ; address : Meow Street 24 ; email : ilovewombatstoo@gmail.com ; product : kibble ; price : $98/bag`","lastModifiedDate":"2024-03-07"},{"lineNumber":259,"author":{"gitId":"chiageng"},"content":"**Add Helper** | `/pooch-maintainer ; name : [name] ; phone : [phone] ; address : [address] ; email : [email] ; skill : [skill] ; commission : [commission]` \u003cbr\u003e e.g., `/pooch-maintainer ; name : Tom Tan ; phone : 98765435 ; address : Poochie Street 24 ; email : ihelppooches@gmail.com ; skill : trainer ; commission : $60/hr`","lastModifiedDate":"2024-03-18"},{"lineNumber":260,"author":{"gitId":"chiageng"},"content":"**Add General Contact** | `/pooch-add ; name : [name] ; phone : [phone] ; address : [address] ; email : [email] ; skill : [skill] ; commission : [commission]` \u003cbr\u003e e.g., `/pooch-add ; name : Janna ; phone : 98765435 ; address : Poochie Street 24 ; email : iamjanna@gmail.com`","lastModifiedDate":"2024-03-18"},{"lineNumber":261,"author":{"gitId":"chiageng"},"content":"**Delete** | `/delete name : [name] `\u003cbr\u003e e.g., `delete ; name : Poochie`","lastModifiedDate":"2024-03-07"},{"lineNumber":262,"author":{"gitId":"chiageng"},"content":"**Edit** | `/edit ; name : [name] ; field : { field : data ; field : data }`\u003cbr\u003e e.g., `/edit ; name : Poochie ; field : { name : Mochi }` \u003cbr\u003e e.g.,`/edit ; name : Poochie ; field : { address : Poochie Street 25 ; employment : full-time }`","lastModifiedDate":"2024-03-07"},{"lineNumber":263,"author":{"gitId":"chiageng"},"content":"**Search** | `/search ; parameter : [value]`\u003cbr\u003e e.g., `/search ; name : Poochie`","lastModifiedDate":"2024-03-07"},{"lineNumber":264,"author":{"gitId":"chiageng"},"content":"**List** | `/list`","lastModifiedDate":"2024-03-07"},{"lineNumber":265,"author":{"gitId":"jannaleong"},"content":"**Help** | `/help`","lastModifiedDate":"2024-03-18"},{"lineNumber":266,"author":{"gitId":"jannaleong"},"content":"**Help PoochStaff** | `/help-poochstaff`","lastModifiedDate":"2024-03-18"},{"lineNumber":267,"author":{"gitId":"jannaleong"},"content":"**Help PoochSupplier** | `/help-poochsupplier`","lastModifiedDate":"2024-03-18"},{"lineNumber":268,"author":{"gitId":"jannaleong"},"content":"**Help PoochMaintenance** | `/help-poochmaintenance`","lastModifiedDate":"2024-03-18"},{"lineNumber":269,"author":{"gitId":"jannaleong"},"content":"**Help Delete** | `/help-delete`","lastModifiedDate":"2024-03-18"},{"lineNumber":270,"author":{"gitId":"jannaleong"},"content":"**Help Edit** | `/help-edit`","lastModifiedDate":"2024-03-18"},{"lineNumber":271,"author":{"gitId":"jannaleong"},"content":"**Help Search** | `/help-search`","lastModifiedDate":"2024-03-18"},{"lineNumber":272,"author":{"gitId":"chiageng"},"content":"`","lastModifiedDate":"2024-03-07"}],"authorContributionMap":{"Joshy837":31,"chiageng":52,"jamessinmaojun":8,"jannaleong":35,"-":122,"yleeyilin":24}},{"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":"jamessinmaojun"},"content":" content: \"PoochPlanner\";","lastModifiedDate":"2024-02-29"},{"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":{"jamessinmaojun":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":"jamessinmaojun"},"content":"user -[USER_COLOR]\u003e ui : \"/delete ; name : Poochie\"","lastModifiedDate":"2024-03-18"},{"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":"jamessinmaojun"},"content":"ui -[UI_COLOR]\u003e logic : execute(\"/delete ; name : Poochie\")","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":"logic -[LOGIC_COLOR]\u003e model : deletePerson(p)","lastModifiedDate":"2019-07-03"},{"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":{"jamessinmaojun":2,"-":37}},{"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 \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-02-09"},{"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 \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-02-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":"[-\u003e LogicManager : execute(\"/delete Poochie\")","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"activate LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"delete Poochie\")","lastModifiedDate":"2024-03-18"},{"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":"jannaleong"},"content":"AddressBookParser -\u003e DeleteCommandParser : parse(\"Poochie\")","lastModifiedDate":"2024-03-18"},{"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 :","lastModifiedDate":"2024-02-09"},{"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(m)","lastModifiedDate":"2024-02-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":"activate DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":52,"author":{"gitId":"jannaleong"},"content":"DeleteCommand -\u003e Model : deletePerson(Poochie)","lastModifiedDate":"2024-03-18"},{"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 : r","lastModifiedDate":"2024-02-09"},{"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":{"jannaleong":4,"-":66}},{"path":"docs/diagrams/LogicClassDiagram.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 LOGIC_COLOR_T4","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"package Logic as LogicPackage {","lastModifiedDate":"2023-07-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"package \"Parser Classes\" as ParserClasses{","lastModifiedDate":"2024-02-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-02-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"Class XYZCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"Class CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"Class \"{abstract}\\nCommand\" as Command","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nLogic\" as Logic","lastModifiedDate":"2022-01-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Class LogicManager","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 {","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 Storage {","lastModifiedDate":"2021-03-30"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-03-30"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-03-30"},{"lineNumber":27,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Logic","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"LogicManager .right.|\u003e Logic","lastModifiedDate":"2021-07-31"},{"lineNumber":31,"author":{"gitId":"-"},"content":"LogicManager -right-\u003e\"1\" ParserClasses","lastModifiedDate":"2024-02-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":"ParserClasses ..\u003e XYZCommand : \u003c\u003ccreate\u003e\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"XYZCommand -up-|\u003e Command","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"LogicManager .left.\u003e Command : \u003c\u003ccall\u003e\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":37,"author":{"gitId":"-"},"content":"LogicManager --\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"LogicManager --\u003e Storage","lastModifiedDate":"2021-03-30"},{"lineNumber":39,"author":{"gitId":"-"},"content":"Storage --[hidden] Model","lastModifiedDate":"2021-03-30"},{"lineNumber":40,"author":{"gitId":"-"},"content":"Command .[hidden]up.\u003e Storage","lastModifiedDate":"2021-03-30"},{"lineNumber":41,"author":{"gitId":"-"},"content":"Command .right.\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":42,"author":{"gitId":"jannaleong"},"content":"note right of XYZCommand: XYZCommand \u003d AddStaffCommand, \\nSearchCommand, etc","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"Logic ..\u003e CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"LogicManager .down.\u003e CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"Command .up.\u003e CommandResult : \u003c\u003ccreate\u003e\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"jannaleong":1,"-":46}},{"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":"-"},"content":"Class UniquePersonList","lastModifiedDate":"2021-07-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Class Person","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"Joshy837"},"content":"Class Staff","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"Joshy837"},"content":"Class Supplier","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"Joshy837"},"content":"Class Maintainer","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Class Name","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"Class Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"Joshy837"},"content":"Class Email","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"Joshy837"},"content":"Class Address","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"Joshy837"},"content":"Class Salary","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"Joshy837"},"content":"Class Employment","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"Joshy837"},"content":"Class Price","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"Joshy837"},"content":"Class Product","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"Joshy837"},"content":"Class Skill","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"Joshy837"},"content":"Class Commission","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":"Class Tag","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"Class I #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":36,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"AddressBook .up.|\u003e ReadOnlyAddressBook","lastModifiedDate":"2019-07-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":"ModelManager .up.|\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"Model .right.\u003e ReadOnlyUserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":42,"author":{"gitId":"-"},"content":"Model .left.\u003e ReadOnlyAddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":43,"author":{"gitId":"-"},"content":"ModelManager -left-\u003e \"1\" AddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":44,"author":{"gitId":"-"},"content":"ModelManager -right-\u003e \"1\" UserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":45,"author":{"gitId":"-"},"content":"UserPrefs .up.|\u003e ReadOnlyUserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":47,"author":{"gitId":"-"},"content":"AddressBook *--\u003e \"1\" UniquePersonList","lastModifiedDate":"2019-07-30"},{"lineNumber":48,"author":{"gitId":"-"},"content":"UniquePersonList --\u003e \"~* all\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":"Person *--\u003e \"1\" Name","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":"Person *--\u003e \"1\" Phone","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":"Person *--\u003e \"1\" Email","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":"Person *--\u003e \"1\" Address","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":"Person *--\u003e \"*\" Tag","lastModifiedDate":"2019-07-03"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":55,"author":{"gitId":"Joshy837"},"content":"Person \u003c|-- Staff","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"Joshy837"},"content":"Person \u003c|-- Supplier","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"Joshy837"},"content":"Person \u003c|-- Maintainer","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"Joshy837"},"content":"Staff *--\u003e Salary","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"Joshy837"},"content":"Staff *--\u003e Employment","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"Joshy837"},"content":"Supplier *--\u003e Price","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"Joshy837"},"content":"Supplier *--\u003e Product","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"Joshy837"},"content":"Maintainer *--\u003e Skill","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"Joshy837"},"content":"Maintainer *--\u003e Commission","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":"Person -[hidden]up--\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":"UniquePersonList -[hidden]right-\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":"Name -[hidden]right-\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":72,"author":{"gitId":"-"},"content":"Phone -[hidden]right-\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":73,"author":{"gitId":"-"},"content":"Address -[hidden]right-\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":75,"author":{"gitId":"-"},"content":"ModelManager --\u003e \"~* filtered\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":76,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"Joshy837":24,"chiageng":4,"-":48}},{"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":"-"},"content":"Class JsonAdaptedPerson","lastModifiedDate":"2021-07-31"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":"class JsonAdaptedXYZ","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":"Class JsonAdaptedTag","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":"","lastModifiedDate":"2021-07-31"},{"lineNumber":28,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2021-07-31"},{"lineNumber":29,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Storage","lastModifiedDate":"2021-07-31"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":31,"author":{"gitId":"-"},"content":"StorageManager .up.|\u003e Storage","lastModifiedDate":"2021-07-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"StorageManager -up-\u003e \"1\" UserPrefsStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":33,"author":{"gitId":"-"},"content":"StorageManager -up-\u003e \"1\" AddressBookStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"Storage -left-|\u003e UserPrefsStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"Storage -right-|\u003e AddressBookStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"JsonUserPrefsStorage .up.|\u003e UserPrefsStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":39,"author":{"gitId":"-"},"content":"JsonAddressBookStorage .up.|\u003e AddressBookStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":40,"author":{"gitId":"-"},"content":"JsonAddressBookStorage ..\u003e JsonSerializableAddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":41,"author":{"gitId":"-"},"content":"JsonSerializableAddressBook --\u003e \"*\" JsonAdaptedPerson","lastModifiedDate":"2021-07-31"},{"lineNumber":42,"author":{"gitId":"chiageng"},"content":"JsonAdaptedPerson -right-\u003e \"*\" JsonAdaptedTag","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"chiageng"},"content":"JsonAdaptedPerson \u003c|-down- JsonAdaptedXYZ","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-03-31"},{"lineNumber":45,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"chiageng":3,"-":42}},{"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":"yleeyilin"},"content":"Class HelpXYZWindow","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"Class ResultDisplay","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"Class PersonListPanel","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"Class PersonCard","lastModifiedDate":"2019-07-03"},{"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":"-"},"content":"MainWindow *-down-\u003e \"1\" PersonListPanel","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" StatusBarFooter","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"yleeyilin"},"content":"MainWindow --\u003e \"0..*\" HelpXYZWindow","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"PersonListPanel -down-\u003e \"*\" PersonCard","lastModifiedDate":"2021-07-31"},{"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":"-"},"content":"PersonListPanel --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"PersonCard --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":47,"author":{"gitId":"-"},"content":"StatusBarFooter --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":48,"author":{"gitId":"yleeyilin"},"content":"HelpXYZWindow --|\u003e UiPart","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":50,"author":{"gitId":"-"},"content":"PersonCard ..\u003e Model","lastModifiedDate":"2019-07-03"},{"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":"yleeyilin"},"content":"PersonListPanel -[hidden]left- HelpXYZWindow","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"yleeyilin"},"content":"HelpXYZWindow -[hidden]left- CommandBox","lastModifiedDate":"2024-03-19"},{"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":{"-":55,"yleeyilin":5}},{"path":"docs/diagrams/UndoSequenceDiagram-Logic.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 \"u:UndoCommand\" as UndoCommand LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"participant \":Model\" as Model MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"jamessinmaojun"},"content":"[-\u003e LogicManager : execute(\"/undo\")","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"activate LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"jamessinmaojun"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"/undo\")","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"activate AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"create UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"AddressBookParser -\u003e UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"activate UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"UndoCommand --\u003e AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":"deactivate UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"AddressBookParser --\u003e LogicManager : u","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"deactivate AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"LogicManager -\u003e UndoCommand : execute()","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"activate UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"UndoCommand -\u003e Model : undoAddressBook()","lastModifiedDate":"2019-07-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"activate Model","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":36,"author":{"gitId":"-"},"content":"Model --\u003e UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":37,"author":{"gitId":"-"},"content":"deactivate Model","lastModifiedDate":"2019-07-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"UndoCommand --\u003e LogicManager : result","lastModifiedDate":"2019-07-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":"deactivate UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"UndoCommand -[hidden]-\u003e LogicManager : result","lastModifiedDate":"2019-07-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"destroy UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"[\u003c--LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"deactivate LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"jamessinmaojun":2,"-":44}},{"path":"docs/team/chiageng.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"chiageng"},"content":"---","lastModifiedDate":"2024-03-01"},{"lineNumber":2,"author":{"gitId":"chiageng"},"content":"layout: page","lastModifiedDate":"2024-03-01"},{"lineNumber":3,"author":{"gitId":"chiageng"},"content":"title: Chia Geng\u0027s Project Portfolio Page","lastModifiedDate":"2024-03-01"},{"lineNumber":4,"author":{"gitId":"chiageng"},"content":"---","lastModifiedDate":"2024-03-01"},{"lineNumber":5,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":6,"author":{"gitId":"chiageng"},"content":"### Project: PoochPlanner","lastModifiedDate":"2024-03-01"},{"lineNumber":7,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":"PoochPlanner is a desktop application to track details of various groups (vendors, staff) that dog cafe owners have to regularly interact with. The app is optimised for use using Command Line Interface (CLI) while still encompassing a user-friend Graphical User Interface (GUI).","lastModifiedDate":"2024-03-01"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-01"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":"* **New Feature**: Added the ability to add 4 different type of contacts. (Pull requests [\\#57](https://github.com/AY2324S2-CS2103T-W10-2/tp/pull/57))","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"chiageng"},"content":" * What it does: allows the user to add a new contact.","lastModifiedDate":"2024-03-01"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":" * Justification: This feature improves the product significantly because a user can store all contacts in this address book.","lastModifiedDate":"2024-03-01"},{"lineNumber":15,"author":{"gitId":"chiageng"},"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":"2024-03-01"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":"* **Storing Json** : Handled the serialization of different type of contacts to store as JSON objects. (Pull requests [\\#57](https://github.com/AY2324S2-CS2103T-W10-2/tp/pull/57))","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":" * What it does: store different type of contact into JSON object.","lastModifiedDate":"2024-03-09"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":" * Justification: This feature improves the product significantly because a user can store all contacts into local storage.","lastModifiedDate":"2024-03-09"},{"lineNumber":20,"author":{"gitId":"chiageng"},"content":" * Highlights: This enhancement affects existing project structure. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changes to existing project structure.","lastModifiedDate":"2024-03-09"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":"* **Reading Json** : Handled the serialization of reading different type of contacts from JSON file. (Pull requests [\\#57](https://github.com/AY2324S2-CS2103T-W10-2/tp/pull/57))","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"chiageng"},"content":" * What it does: read different type of contact from JSON file.","lastModifiedDate":"2024-03-09"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":" * Justification: This feature improves the product significantly because a user can retrieve all contacts from local storage.","lastModifiedDate":"2024-03-09"},{"lineNumber":25,"author":{"gitId":"chiageng"},"content":" * Highlights: This enhancement affects existing project structure. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changes to existing project structure.","lastModifiedDate":"2024-03-09"},{"lineNumber":26,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":27,"author":{"gitId":"chiageng"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-03-01"},{"lineNumber":28,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":29,"author":{"gitId":"chiageng"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-03-09"},{"lineNumber":30,"author":{"gitId":"chiageng"},"content":" * Updated the GUI for display different type of contacts (Pull requests [\\#57](https://github.com/AY2324S2-CS2103T-W10-2/tp/pull/57)","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":32,"author":{"gitId":"chiageng"},"content":"* **Documentation**:","lastModifiedDate":"2024-03-01"},{"lineNumber":33,"author":{"gitId":"chiageng"},"content":" * User Guide:","lastModifiedDate":"2024-03-01"},{"lineNumber":34,"author":{"gitId":"chiageng"},"content":" * Added documentation for the features `add`","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"chiageng"},"content":" * Developer Guide:","lastModifiedDate":"2024-03-01"},{"lineNumber":36,"author":{"gitId":"chiageng"},"content":" * Added non functional requirements.","lastModifiedDate":"2024-03-01"},{"lineNumber":37,"author":{"gitId":"chiageng"},"content":" * Updated use cases for PoochPlanner.","lastModifiedDate":"2024-03-02"}],"authorContributionMap":{"chiageng":37}},{"path":"docs/team/jamessinmaojun.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"jamessinmaojun"},"content":"---","lastModifiedDate":"2024-02-29"},{"lineNumber":2,"author":{"gitId":"jamessinmaojun"},"content":"layout: page","lastModifiedDate":"2024-02-29"},{"lineNumber":3,"author":{"gitId":"jamessinmaojun"},"content":"title: James\u0027 Project Portfolio Page","lastModifiedDate":"2024-02-29"},{"lineNumber":4,"author":{"gitId":"jamessinmaojun"},"content":"---","lastModifiedDate":"2024-02-29"},{"lineNumber":5,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":6,"author":{"gitId":"jamessinmaojun"},"content":"### Project: PoochPlanner","lastModifiedDate":"2024-02-29"},{"lineNumber":7,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":8,"author":{"gitId":"jamessinmaojun"},"content":"PoochPlanner is a desktop application to track details of various groups (vendors, staff) that dog cafe owners have to regularly interact with. The app is optimised for use using Command Line Interface (CLI) while still encompassing a user-friend Graphical User Interface (GUI).","lastModifiedDate":"2024-02-29"},{"lineNumber":9,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":10,"author":{"gitId":"jamessinmaojun"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-02-29"},{"lineNumber":11,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":12,"author":{"gitId":"jamessinmaojun"},"content":"* **New Feature**: Added the ability to delete contacts.","lastModifiedDate":"2024-02-29"},{"lineNumber":13,"author":{"gitId":"jamessinmaojun"},"content":" * What it does: allows the user to delete a certain contact, one at a time.","lastModifiedDate":"2024-02-29"},{"lineNumber":14,"author":{"gitId":"jamessinmaojun"},"content":" * Justification: This feature improves the product significantly because the address book can become too long and cluttered over time. Given the nature of the target users\u0027 business, contact turnover rate is expected to be very high and thus deleting unused contacts proves to be useful.","lastModifiedDate":"2024-02-29"},{"lineNumber":15,"author":{"gitId":"jamessinmaojun"},"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":"2024-02-29"},{"lineNumber":16,"author":{"gitId":"jamessinmaojun"},"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":"2024-02-29"},{"lineNumber":17,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":18,"author":{"gitId":"jamessinmaojun"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-02-29"},{"lineNumber":19,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":20,"author":{"gitId":"jamessinmaojun"},"content":"* **Documentation**:","lastModifiedDate":"2024-02-29"},{"lineNumber":21,"author":{"gitId":"jamessinmaojun"},"content":" * User Guide:","lastModifiedDate":"2024-02-29"},{"lineNumber":22,"author":{"gitId":"jamessinmaojun"},"content":" * Added documentation for the feature `delete` [\\#29]()","lastModifiedDate":"2024-02-29"},{"lineNumber":23,"author":{"gitId":"jamessinmaojun"},"content":" * Developer Guide:","lastModifiedDate":"2024-02-29"},{"lineNumber":24,"author":{"gitId":"jamessinmaojun"},"content":" * Added use cases for PoochPlanner [\\#30]()","lastModifiedDate":"2024-02-29"}],"authorContributionMap":{"jamessinmaojun":24}},{"path":"docs/team/jannaleong.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"---","lastModifiedDate":"2024-03-06"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"layout: page","lastModifiedDate":"2024-03-06"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"title: Janna\u0027s Project Portfolio Page","lastModifiedDate":"2024-03-06"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"---","lastModifiedDate":"2024-03-06"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"### Project: PoochPlanner","lastModifiedDate":"2024-03-06"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":"PoochPlanner is a desktop application to track details of various groups (vendors, staff) that dog cafe owners have to regularly interact with. The app is optimised for use using Command Line Interface (CLI) while still encompassing a user-friend Graphical User Interface (GUI).","lastModifiedDate":"2024-03-06"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-06"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":"* **New Feature**: Added the ability to give help to users regarding commands.","lastModifiedDate":"2024-03-06"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":" * What it does: Returns the user the correct command format for specific commands or all commands.","lastModifiedDate":"2024-03-06"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":" * Justification: This feature is crucial for first time users who are unfamiliar to the commands.","lastModifiedDate":"2024-03-06"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":" * Highlights: This enhancement is affected by existing commands and must be updated to accomodate to new commands.","lastModifiedDate":"2024-03-06"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"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":"2024-03-06"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-03-06"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":"* **Documentation**:","lastModifiedDate":"2024-03-06"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":" * User Guide:","lastModifiedDate":"2024-03-06"},{"lineNumber":22,"author":{"gitId":"jannaleong"},"content":" * Added documentation for the feature `help` [\\#17]())","lastModifiedDate":"2024-03-06"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":" * Developer Guide:","lastModifiedDate":"2024-03-06"},{"lineNumber":24,"author":{"gitId":"jannaleong"},"content":" * Added target user profile, value proposition, and user stories [\\#19]())","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"jannaleong":24}},{"path":"docs/team/joshy837.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Joshy837"},"content":"---","lastModifiedDate":"2024-03-06"},{"lineNumber":2,"author":{"gitId":"Joshy837"},"content":"layout: page","lastModifiedDate":"2024-03-06"},{"lineNumber":3,"author":{"gitId":"Joshy837"},"content":"title: Joshua Yip\u0027s Project Portfolio Page","lastModifiedDate":"2024-03-06"},{"lineNumber":4,"author":{"gitId":"Joshy837"},"content":"---","lastModifiedDate":"2024-03-06"},{"lineNumber":5,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":6,"author":{"gitId":"Joshy837"},"content":"### Project: PoochPlanner","lastModifiedDate":"2024-03-06"},{"lineNumber":7,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":8,"author":{"gitId":"Joshy837"},"content":"PoochPlanner is a desktop application to track details of various groups (vendors, staff) that dog cafe owners have to regularly interact with. The app is optimised for use using Command Line Interface (CLI) while still encompassing a user-friend Graphical User Interface (GUI).","lastModifiedDate":"2024-03-06"},{"lineNumber":9,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":10,"author":{"gitId":"Joshy837"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-06"},{"lineNumber":11,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":12,"author":{"gitId":"Joshy837"},"content":"* **New Feature**: Added the ability to search contact.","lastModifiedDate":"2024-03-06"},{"lineNumber":13,"author":{"gitId":"Joshy837"},"content":" * What it does: allows the user to search a contact within a field using a specified keyword.","lastModifiedDate":"2024-03-06"},{"lineNumber":14,"author":{"gitId":"Joshy837"},"content":" * Justification: This feature improves the product significantly because a user can search contacts in this address book.","lastModifiedDate":"2024-03-06"},{"lineNumber":15,"author":{"gitId":"Joshy837"},"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":"2024-03-06"},{"lineNumber":16,"author":{"gitId":"Joshy837"},"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":"2024-03-06"},{"lineNumber":17,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":18,"author":{"gitId":"Joshy837"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-03-06"},{"lineNumber":19,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":20,"author":{"gitId":"Joshy837"},"content":"* **Documentation**:","lastModifiedDate":"2024-03-06"},{"lineNumber":21,"author":{"gitId":"Joshy837"},"content":" * README:","lastModifiedDate":"2024-03-06"},{"lineNumber":22,"author":{"gitId":"Joshy837"},"content":" * Updated README for PoochPlanner [\\#15]()","lastModifiedDate":"2024-03-06"},{"lineNumber":23,"author":{"gitId":"Joshy837"},"content":" * User Guide:","lastModifiedDate":"2024-03-06"},{"lineNumber":24,"author":{"gitId":"Joshy837"},"content":" * Added documentation for the features `search` [\\#25]()","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"Joshy837":24}},{"path":"docs/team/yleeyilin.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"yleeyilin"},"content":"---","lastModifiedDate":"2024-02-28"},{"lineNumber":2,"author":{"gitId":"yleeyilin"},"content":"layout: page","lastModifiedDate":"2024-02-28"},{"lineNumber":3,"author":{"gitId":"yleeyilin"},"content":"title: Yi Lin\u0027s Project Portfolio Page","lastModifiedDate":"2024-02-28"},{"lineNumber":4,"author":{"gitId":"yleeyilin"},"content":"---","lastModifiedDate":"2024-02-28"},{"lineNumber":5,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":6,"author":{"gitId":"yleeyilin"},"content":"### Project: PoochPlanner","lastModifiedDate":"2024-02-29"},{"lineNumber":7,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":8,"author":{"gitId":"yleeyilin"},"content":"PoochPlanner is a desktop application to track details of various groups (vendors, staff) that dog cafe owners have to regularly interact with. The app is optimised for use using Command Line Interface (CLI) while still encompassing a user-friend Graphical User Interface (GUI).","lastModifiedDate":"2024-02-29"},{"lineNumber":9,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":10,"author":{"gitId":"yleeyilin"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-02-28"},{"lineNumber":11,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":12,"author":{"gitId":"yleeyilin"},"content":"* **New Feature**: Added the ability to edit previous contacts. (Pull requests [\\#62]())","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"yleeyilin"},"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":"2024-02-28"},{"lineNumber":14,"author":{"gitId":"yleeyilin"},"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":"2024-02-28"},{"lineNumber":15,"author":{"gitId":"yleeyilin"},"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":"2024-02-28"},{"lineNumber":16,"author":{"gitId":"yleeyilin"},"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":"2024-02-28"},{"lineNumber":17,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":18,"author":{"gitId":"yleeyilin"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-02-28"},{"lineNumber":19,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":20,"author":{"gitId":"yleeyilin"},"content":"* **Documentation**:","lastModifiedDate":"2024-02-28"},{"lineNumber":21,"author":{"gitId":"yleeyilin"},"content":" * User Guide:","lastModifiedDate":"2024-02-28"},{"lineNumber":22,"author":{"gitId":"yleeyilin"},"content":" * Added documentation for the feature `edit` [\\#29]())","lastModifiedDate":"2024-02-29"},{"lineNumber":23,"author":{"gitId":"yleeyilin"},"content":" * Developer Guide:","lastModifiedDate":"2024-02-28"},{"lineNumber":24,"author":{"gitId":"yleeyilin"},"content":" * Added use cases for PoochPlanner [\\#30]())","lastModifiedDate":"2024-02-29"}],"authorContributionMap":{"yleeyilin":24}},{"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":"-"},"content":" * Changes the remark of an existing person in the address book.","lastModifiedDate":"2020-07-29"},{"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":"-"},"content":" + \": Edits the remark of the person identified \"","lastModifiedDate":"2021-08-01"},{"lineNumber":69,"author":{"gitId":"-"},"content":" + \"by the index number used in the last person listing. \"","lastModifiedDate":"2020-07-29"},{"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":"-"},"content":" * @param index of the person in the filtered person list to edit the remark","lastModifiedDate":"2020-07-29"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * @param remark of the person to be updated to","lastModifiedDate":"2020-07-29"},{"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":"-"},"content":" * object that maps prefixes to their respective argument values. Only the","lastModifiedDate":"2020-07-29"},{"lineNumber":155,"author":{"gitId":"-"},"content":" * given prefixes will be recognized in the arguments string.","lastModifiedDate":"2020-07-29"},{"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":"-"},"content":" * {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2020-07-29"},{"lineNumber":159,"author":{"gitId":"-"},"content":" * @param prefixes Prefixes to tokenize the arguments string with","lastModifiedDate":"2020-07-29"},{"lineNumber":160,"author":{"gitId":"-"},"content":" * @return ArgumentMultimap object that maps prefixes to their","lastModifiedDate":"2020-07-29"},{"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":"-"},"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":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":"-"},"content":" * Returns the last value of {@code prefix}.","lastModifiedDate":"2020-07-29"},{"lineNumber":172,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":173,"author":{"gitId":"-"},"content":"public Optional\u003cString\u003e getValue(Prefix prefix) {","lastModifiedDate":"2020-07-29"},{"lineNumber":174,"author":{"gitId":"-"},"content":" List\u003cString\u003e values \u003d getAllValues(prefix);","lastModifiedDate":"2020-07-29"},{"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":"-"},"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":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":"-"},"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":"2020-07-29"},{"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":"-"},"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":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":243,"author":{"gitId":"-"},"content":"Simply add the following to [`seedu.address.ui.PersonCard`](https://github.com/se-edu/addressbook-level3/commit/850b78879582f38accb05dd20c245963c65ea599#diff-639834f1e05afe2276a86372adf0fe5f69314642c2d93cfa543d614ce5a76688).","lastModifiedDate":"2022-01-02"},{"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":"-"},"content":":exclamation: You must delete AddressBook’s storage file located at `/data/addressbook.json` before running it! Not doing so will cause AddressBook to default to an empty address book!","lastModifiedDate":"2020-07-29"},{"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":"-"},"content":"public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2020-07-29"},{"lineNumber":313,"author":{"gitId":"-"},"content":" //...","lastModifiedDate":"2020-07-29"},{"lineNumber":314,"author":{"gitId":"-"},"content":" remark.setText(person.getRemark().value);","lastModifiedDate":"2020-07-29"},{"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":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2020-07-29"},{"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":"yleeyilin"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_NAME);","lastModifiedDate":"2024-03-17"},{"lineNumber":342,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":343,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":344,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2020-07-29"},{"lineNumber":345,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new Person(","lastModifiedDate":"2021-08-01"},{"lineNumber":346,"author":{"gitId":"-"},"content":" personToEdit.getName(), personToEdit.getPhone(), personToEdit.getEmail(),","lastModifiedDate":"2021-08-01"},{"lineNumber":347,"author":{"gitId":"-"},"content":" personToEdit.getAddress(), remark, personToEdit.getTags());","lastModifiedDate":"2020-07-29"},{"lineNumber":348,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":349,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2020-07-29"},{"lineNumber":350,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2020-07-29"},{"lineNumber":351,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":352,"author":{"gitId":"-"},"content":" return new CommandResult(generateSuccessMessage(editedPerson));","lastModifiedDate":"2020-07-29"},{"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":"-"},"content":" * {@code personToEdit}.","lastModifiedDate":"2020-07-29"},{"lineNumber":359,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":360,"author":{"gitId":"-"},"content":" private String generateSuccessMessage(Person personToEdit) {","lastModifiedDate":"2020-07-29"},{"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":"-"},"content":" return String.format(message, personToEdit);","lastModifiedDate":"2020-07-29"},{"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":{"-":398,"yleeyilin":1}},{"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":"-"},"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":"","lastModifiedDate":"2017-05-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":11,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.AddMessages;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-01-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"chiageng"},"content":" public static final String COMMAND_WORD \u003d \"/pooch-add\";","lastModifiedDate":"2024-03-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a person to the address book. \"","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2017-05-09"},{"lineNumber":28,"author":{"gitId":"chiageng"},"content":" + \"\\n\"","lastModifiedDate":"2024-03-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06"},{"lineNumber":30,"author":{"gitId":"chiageng"},"content":" + PREFIX_NAME + \"John Doe other \"","lastModifiedDate":"2024-03-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09"},{"lineNumber":33,"author":{"gitId":"chiageng"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \";","lastModifiedDate":"2024-03-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":41,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":42,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10"},{"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-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":50,"author":{"gitId":"jamessinmaojun"},"content":" throw new CommandException(AddMessages.MESSAGE_ADD_DUPLICATE_PERSON);","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":53,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25"},{"lineNumber":54,"author":{"gitId":"jamessinmaojun"},"content":" return new CommandResult(String.format(AddMessages.MESSAGE_ADD_PERSON_SUCCESS, AddMessages.format(toAdd)));","lastModifiedDate":"2024-03-20"},{"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":"2017-06-22"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22"},{"lineNumber":59,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return true;","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":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return false;","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":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"jamessinmaojun":3,"chiageng":4,"-":71}},{"path":"src/main/java/seedu/address/logic/commands/AddMaintainerCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chiageng"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-08"},{"lineNumber":2,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":3,"author":{"gitId":"chiageng"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-09"},{"lineNumber":4,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-09"},{"lineNumber":5,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COMMISSION;","lastModifiedDate":"2024-03-09"},{"lineNumber":6,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-09"},{"lineNumber":7,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-09"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SKILL;","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-08"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-08"},{"lineNumber":13,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.AddMessages;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-08"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Maintainer;","lastModifiedDate":"2024-03-08"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":"/**","lastModifiedDate":"2024-03-08"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":" * Adds a person to the address book.","lastModifiedDate":"2024-03-08"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":20,"author":{"gitId":"chiageng"},"content":"public class AddMaintainerCommand extends Command {","lastModifiedDate":"2024-03-08"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":" public static final String COMMAND_WORD \u003d \"/pooch-maintainer\";","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a maintainer to the address book. \"","lastModifiedDate":"2024-03-08"},{"lineNumber":25,"author":{"gitId":"chiageng"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-03-08"},{"lineNumber":26,"author":{"gitId":"chiageng"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2024-03-08"},{"lineNumber":27,"author":{"gitId":"chiageng"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2024-03-08"},{"lineNumber":28,"author":{"gitId":"chiageng"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2024-03-08"},{"lineNumber":29,"author":{"gitId":"chiageng"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2024-03-08"},{"lineNumber":30,"author":{"gitId":"chiageng"},"content":" + PREFIX_SKILL + \"SKILL \"","lastModifiedDate":"2024-03-08"},{"lineNumber":31,"author":{"gitId":"chiageng"},"content":" + PREFIX_COMMISSION + \"COMMISSION \\n\"","lastModifiedDate":"2024-03-08"},{"lineNumber":32,"author":{"gitId":"chiageng"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2024-03-08"},{"lineNumber":33,"author":{"gitId":"chiageng"},"content":" + PREFIX_NAME + \"John Doe trainer \"","lastModifiedDate":"2024-03-08"},{"lineNumber":34,"author":{"gitId":"chiageng"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2024-03-08"},{"lineNumber":35,"author":{"gitId":"chiageng"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2024-03-08"},{"lineNumber":36,"author":{"gitId":"chiageng"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2024-03-08"},{"lineNumber":37,"author":{"gitId":"chiageng"},"content":" + PREFIX_SKILL + \"train dog \"","lastModifiedDate":"2024-03-08"},{"lineNumber":38,"author":{"gitId":"chiageng"},"content":" + PREFIX_COMMISSION + \"$50/hr\";","lastModifiedDate":"2024-03-08"},{"lineNumber":39,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":40,"author":{"gitId":"chiageng"},"content":" private final Maintainer toAdd;","lastModifiedDate":"2024-03-08"},{"lineNumber":41,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":42,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-08"},{"lineNumber":43,"author":{"gitId":"chiageng"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2024-03-08"},{"lineNumber":44,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":" public AddMaintainerCommand(Maintainer person) {","lastModifiedDate":"2024-03-08"},{"lineNumber":46,"author":{"gitId":"chiageng"},"content":" requireNonNull(person);","lastModifiedDate":"2024-03-08"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":" toAdd \u003d person;","lastModifiedDate":"2024-03-08"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-08"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-08"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-08"},{"lineNumber":53,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2024-03-08"},{"lineNumber":55,"author":{"gitId":"jamessinmaojun"},"content":" throw new CommandException(AddMessages.MESSAGE_ADD_DUPLICATE_PERSON);","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":57,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":58,"author":{"gitId":"chiageng"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2024-03-08"},{"lineNumber":59,"author":{"gitId":"jamessinmaojun"},"content":" return new CommandResult(String.format(AddMessages.MESSAGE_ADD_PERSON_SUCCESS, AddMessages.format(toAdd)));","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":61,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":62,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-08"},{"lineNumber":63,"author":{"gitId":"chiageng"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-08"},{"lineNumber":64,"author":{"gitId":"chiageng"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-08"},{"lineNumber":65,"author":{"gitId":"chiageng"},"content":" return true;","lastModifiedDate":"2024-03-08"},{"lineNumber":66,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":67,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":68,"author":{"gitId":"chiageng"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-08"},{"lineNumber":69,"author":{"gitId":"chiageng"},"content":" if (!(other instanceof AddMaintainerCommand)) {","lastModifiedDate":"2024-03-08"},{"lineNumber":70,"author":{"gitId":"chiageng"},"content":" return false;","lastModifiedDate":"2024-03-08"},{"lineNumber":71,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":72,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":73,"author":{"gitId":"chiageng"},"content":" AddMaintainerCommand otherAddCommand \u003d (AddMaintainerCommand) other;","lastModifiedDate":"2024-03-08"},{"lineNumber":74,"author":{"gitId":"chiageng"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2024-03-08"},{"lineNumber":75,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":76,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":77,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-08"},{"lineNumber":78,"author":{"gitId":"chiageng"},"content":" public String toString() {","lastModifiedDate":"2024-03-08"},{"lineNumber":79,"author":{"gitId":"chiageng"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-08"},{"lineNumber":80,"author":{"gitId":"chiageng"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2024-03-08"},{"lineNumber":81,"author":{"gitId":"chiageng"},"content":" .toString();","lastModifiedDate":"2024-03-08"},{"lineNumber":82,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":83,"author":{"gitId":"chiageng"},"content":"}","lastModifiedDate":"2024-03-08"}],"authorContributionMap":{"chiageng":80,"jamessinmaojun":3}},{"path":"src/main/java/seedu/address/logic/commands/AddStaffCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chiageng"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-08"},{"lineNumber":2,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":3,"author":{"gitId":"chiageng"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-09"},{"lineNumber":4,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-09"},{"lineNumber":5,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-09"},{"lineNumber":6,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMPLOYMENT;","lastModifiedDate":"2024-03-09"},{"lineNumber":7,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-09"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SALARY;","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-08"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-08"},{"lineNumber":13,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.AddMessages;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-08"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Staff;","lastModifiedDate":"2024-03-08"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":"/**","lastModifiedDate":"2024-03-08"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":" * Adds a person to the address book.","lastModifiedDate":"2024-03-08"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":20,"author":{"gitId":"chiageng"},"content":"public class AddStaffCommand extends Command {","lastModifiedDate":"2024-03-08"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":" public static final String COMMAND_WORD \u003d \"/pooch-staff\";","lastModifiedDate":"2024-03-08"},{"lineNumber":23,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a staff to the address book. \"","lastModifiedDate":"2024-03-08"},{"lineNumber":25,"author":{"gitId":"chiageng"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-03-08"},{"lineNumber":26,"author":{"gitId":"chiageng"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2024-03-08"},{"lineNumber":27,"author":{"gitId":"chiageng"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2024-03-08"},{"lineNumber":28,"author":{"gitId":"chiageng"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2024-03-08"},{"lineNumber":29,"author":{"gitId":"chiageng"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2024-03-08"},{"lineNumber":30,"author":{"gitId":"chiageng"},"content":" + PREFIX_SALARY + \"SALARY \"","lastModifiedDate":"2024-03-08"},{"lineNumber":31,"author":{"gitId":"chiageng"},"content":" + PREFIX_EMPLOYMENT + \"EMPLOYMENT \\n\"","lastModifiedDate":"2024-03-09"},{"lineNumber":32,"author":{"gitId":"chiageng"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2024-03-08"},{"lineNumber":33,"author":{"gitId":"chiageng"},"content":" + PREFIX_NAME + \"John Doe staff \"","lastModifiedDate":"2024-03-08"},{"lineNumber":34,"author":{"gitId":"chiageng"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2024-03-08"},{"lineNumber":35,"author":{"gitId":"chiageng"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2024-03-08"},{"lineNumber":36,"author":{"gitId":"chiageng"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2024-03-08"},{"lineNumber":37,"author":{"gitId":"chiageng"},"content":" + PREFIX_SALARY + \"$50/hr \"","lastModifiedDate":"2024-03-08"},{"lineNumber":38,"author":{"gitId":"chiageng"},"content":" + PREFIX_EMPLOYMENT + \"part-time\";","lastModifiedDate":"2024-03-08"},{"lineNumber":39,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":40,"author":{"gitId":"chiageng"},"content":" private final Staff toAdd;","lastModifiedDate":"2024-03-08"},{"lineNumber":41,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":42,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-08"},{"lineNumber":43,"author":{"gitId":"chiageng"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2024-03-08"},{"lineNumber":44,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":" public AddStaffCommand(Staff person) {","lastModifiedDate":"2024-03-08"},{"lineNumber":46,"author":{"gitId":"chiageng"},"content":" requireNonNull(person);","lastModifiedDate":"2024-03-08"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":" toAdd \u003d person;","lastModifiedDate":"2024-03-08"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-08"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-08"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-08"},{"lineNumber":53,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2024-03-08"},{"lineNumber":55,"author":{"gitId":"jamessinmaojun"},"content":" throw new CommandException(AddMessages.MESSAGE_ADD_DUPLICATE_PERSON);","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":57,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":58,"author":{"gitId":"chiageng"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2024-03-08"},{"lineNumber":59,"author":{"gitId":"jamessinmaojun"},"content":" return new CommandResult(String.format(AddMessages.MESSAGE_ADD_PERSON_SUCCESS, AddMessages.format(toAdd)));","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":61,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":62,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-08"},{"lineNumber":63,"author":{"gitId":"chiageng"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-08"},{"lineNumber":64,"author":{"gitId":"chiageng"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-08"},{"lineNumber":65,"author":{"gitId":"chiageng"},"content":" return true;","lastModifiedDate":"2024-03-08"},{"lineNumber":66,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":67,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":68,"author":{"gitId":"chiageng"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-08"},{"lineNumber":69,"author":{"gitId":"chiageng"},"content":" if (!(other instanceof AddStaffCommand)) {","lastModifiedDate":"2024-03-08"},{"lineNumber":70,"author":{"gitId":"chiageng"},"content":" return false;","lastModifiedDate":"2024-03-08"},{"lineNumber":71,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":72,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":73,"author":{"gitId":"chiageng"},"content":" AddStaffCommand otherAddCommand \u003d (AddStaffCommand) other;","lastModifiedDate":"2024-03-08"},{"lineNumber":74,"author":{"gitId":"chiageng"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2024-03-08"},{"lineNumber":75,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":76,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":77,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-08"},{"lineNumber":78,"author":{"gitId":"chiageng"},"content":" public String toString() {","lastModifiedDate":"2024-03-08"},{"lineNumber":79,"author":{"gitId":"chiageng"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-08"},{"lineNumber":80,"author":{"gitId":"chiageng"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2024-03-08"},{"lineNumber":81,"author":{"gitId":"chiageng"},"content":" .toString();","lastModifiedDate":"2024-03-08"},{"lineNumber":82,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":83,"author":{"gitId":"chiageng"},"content":"}","lastModifiedDate":"2024-03-08"}],"authorContributionMap":{"chiageng":80,"jamessinmaojun":3}},{"path":"src/main/java/seedu/address/logic/commands/AddSupplierCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chiageng"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-08"},{"lineNumber":2,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":3,"author":{"gitId":"chiageng"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-09"},{"lineNumber":4,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-09"},{"lineNumber":5,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-09"},{"lineNumber":6,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-09"},{"lineNumber":7,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-09"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PRICE;","lastModifiedDate":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PRODUCT;","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-08"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-08"},{"lineNumber":13,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.AddMessages;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-08"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Supplier;","lastModifiedDate":"2024-03-08"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":"/**","lastModifiedDate":"2024-03-08"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":" * Adds a person to the address book.","lastModifiedDate":"2024-03-08"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":20,"author":{"gitId":"chiageng"},"content":"public class AddSupplierCommand extends Command {","lastModifiedDate":"2024-03-08"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":" public static final String COMMAND_WORD \u003d \"/pooch-supplier\";","lastModifiedDate":"2024-03-08"},{"lineNumber":23,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a supplier to the address book. \"","lastModifiedDate":"2024-03-08"},{"lineNumber":25,"author":{"gitId":"chiageng"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-03-08"},{"lineNumber":26,"author":{"gitId":"chiageng"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2024-03-08"},{"lineNumber":27,"author":{"gitId":"chiageng"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2024-03-08"},{"lineNumber":28,"author":{"gitId":"chiageng"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2024-03-08"},{"lineNumber":29,"author":{"gitId":"chiageng"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2024-03-08"},{"lineNumber":30,"author":{"gitId":"chiageng"},"content":" + PREFIX_PRODUCT + \"PRODUCT \"","lastModifiedDate":"2024-03-08"},{"lineNumber":31,"author":{"gitId":"chiageng"},"content":" + PREFIX_PRICE + \"PRICE \\n\"","lastModifiedDate":"2024-03-08"},{"lineNumber":32,"author":{"gitId":"chiageng"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2024-03-08"},{"lineNumber":33,"author":{"gitId":"chiageng"},"content":" + PREFIX_NAME + \"John Doe supplier \"","lastModifiedDate":"2024-03-08"},{"lineNumber":34,"author":{"gitId":"chiageng"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2024-03-08"},{"lineNumber":35,"author":{"gitId":"chiageng"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2024-03-08"},{"lineNumber":36,"author":{"gitId":"chiageng"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2024-03-08"},{"lineNumber":37,"author":{"gitId":"chiageng"},"content":" + PREFIX_PRODUCT + \"poochie food \"","lastModifiedDate":"2024-03-08"},{"lineNumber":38,"author":{"gitId":"chiageng"},"content":" + PREFIX_PRICE + \"$50/bag\";","lastModifiedDate":"2024-03-08"},{"lineNumber":39,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":40,"author":{"gitId":"chiageng"},"content":" private final Supplier toAdd;","lastModifiedDate":"2024-03-08"},{"lineNumber":41,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":42,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-08"},{"lineNumber":43,"author":{"gitId":"chiageng"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2024-03-08"},{"lineNumber":44,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":" public AddSupplierCommand(Supplier person) {","lastModifiedDate":"2024-03-08"},{"lineNumber":46,"author":{"gitId":"chiageng"},"content":" requireNonNull(person);","lastModifiedDate":"2024-03-08"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":" toAdd \u003d person;","lastModifiedDate":"2024-03-08"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-08"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-08"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-08"},{"lineNumber":53,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2024-03-08"},{"lineNumber":55,"author":{"gitId":"jamessinmaojun"},"content":" throw new CommandException(AddMessages.MESSAGE_ADD_DUPLICATE_PERSON);","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":57,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":58,"author":{"gitId":"chiageng"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2024-03-08"},{"lineNumber":59,"author":{"gitId":"jamessinmaojun"},"content":" return new CommandResult(String.format(AddMessages.MESSAGE_ADD_PERSON_SUCCESS, AddMessages.format(toAdd)));","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":61,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":62,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-08"},{"lineNumber":63,"author":{"gitId":"chiageng"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-08"},{"lineNumber":64,"author":{"gitId":"chiageng"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-08"},{"lineNumber":65,"author":{"gitId":"chiageng"},"content":" return true;","lastModifiedDate":"2024-03-08"},{"lineNumber":66,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":67,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":68,"author":{"gitId":"chiageng"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-08"},{"lineNumber":69,"author":{"gitId":"chiageng"},"content":" if (!(other instanceof AddSupplierCommand)) {","lastModifiedDate":"2024-03-08"},{"lineNumber":70,"author":{"gitId":"chiageng"},"content":" return false;","lastModifiedDate":"2024-03-08"},{"lineNumber":71,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":72,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":73,"author":{"gitId":"chiageng"},"content":" AddSupplierCommand otherAddCommand \u003d (AddSupplierCommand) other;","lastModifiedDate":"2024-03-08"},{"lineNumber":74,"author":{"gitId":"chiageng"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2024-03-08"},{"lineNumber":75,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":76,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":77,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-08"},{"lineNumber":78,"author":{"gitId":"chiageng"},"content":" public String toString() {","lastModifiedDate":"2024-03-08"},{"lineNumber":79,"author":{"gitId":"chiageng"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-08"},{"lineNumber":80,"author":{"gitId":"chiageng"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2024-03-08"},{"lineNumber":81,"author":{"gitId":"chiageng"},"content":" .toString();","lastModifiedDate":"2024-03-08"},{"lineNumber":82,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":83,"author":{"gitId":"chiageng"},"content":"}","lastModifiedDate":"2024-03-08"}],"authorContributionMap":{"chiageng":80,"jamessinmaojun":3}},{"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":"jamessinmaojun"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-09-01"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":10,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.DeleteMessages;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":12,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"jamessinmaojun"},"content":" * Deletes a person identified using it\u0027s displayed name from the address book.","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":19,"author":{"gitId":"jamessinmaojun"},"content":" public static final String COMMAND_WORD \u003d \"/delete\";","lastModifiedDate":"2024-03-15"},{"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":"jamessinmaojun"},"content":" + \": Deletes the person identified by their name.\\n\"","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"jamessinmaojun"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"jamessinmaojun"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"jamessinmaojun"},"content":" + \"Example: \" + COMMAND_WORD + \" Moochie\";","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"jamessinmaojun"},"content":" private final Name targetName;","lastModifiedDate":"2024-03-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"jamessinmaojun"},"content":" public DeleteCommand(Name name) {","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"jamessinmaojun"},"content":" this.targetName \u003d name;","lastModifiedDate":"2024-03-15"},{"lineNumber":31,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"jamessinmaojun"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"jamessinmaojun"},"content":" * Finds a person from a List of persons identified by its name.","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"jamessinmaojun"},"content":" *","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"jamessinmaojun"},"content":" * @param personList The list of persons to search from.","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"jamessinmaojun"},"content":" * @param targetName The name of the person to return.","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"jamessinmaojun"},"content":" *","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"jamessinmaojun"},"content":" * @return The person object with name equals to {@code targetName}.","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"jamessinmaojun"},"content":" * */","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"jamessinmaojun"},"content":" public Person findByName(List\u003cPerson\u003e personList, Name targetName) {","lastModifiedDate":"2024-03-15"},{"lineNumber":42,"author":{"gitId":"jamessinmaojun"},"content":" for (Person person: personList) {","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"jamessinmaojun"},"content":" Name name \u003d person.getName();","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"jamessinmaojun"},"content":" if (name.equals(targetName)) {","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"jamessinmaojun"},"content":" return person;","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":47,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":48,"author":{"gitId":"jamessinmaojun"},"content":" return null;","lastModifiedDate":"2024-03-15"},{"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 CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":56,"author":{"gitId":"jamessinmaojun"},"content":" Person personToDelete;","lastModifiedDate":"2024-03-15"},{"lineNumber":57,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":58,"author":{"gitId":"jamessinmaojun"},"content":" personToDelete \u003d findByName(lastShownList, targetName);","lastModifiedDate":"2024-03-15"},{"lineNumber":59,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":60,"author":{"gitId":"jamessinmaojun"},"content":" if (personToDelete \u003d\u003d null) {","lastModifiedDate":"2024-03-15"},{"lineNumber":61,"author":{"gitId":"jamessinmaojun"},"content":" throw new CommandException(DeleteMessages.MESSAGE_DELETE_NAME_NOT_FOUND);","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" model.deletePerson(personToDelete);","lastModifiedDate":"2016-09-25"},{"lineNumber":65,"author":{"gitId":"jamessinmaojun"},"content":" return new CommandResult(String.format(DeleteMessages.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"jamessinmaojun"},"content":" DeleteMessages.format(personToDelete)));","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"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 DeleteCommand)) {","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":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":81,"author":{"gitId":"jamessinmaojun"},"content":" return targetName.equals(otherDeleteCommand.targetName);","lastModifiedDate":"2024-03-15"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-15"},{"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":"jamessinmaojun"},"content":" .add(\"targetName\", targetName)","lastModifiedDate":"2024-03-15"},{"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":{"jamessinmaojun":40,"-":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":"-"},"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":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FIELD;","lastModifiedDate":"2024-03-17"},{"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.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.Objects;","lastModifiedDate":"2023-07-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":20,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.EditMessages;","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-26"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":"import seedu.address.model.person.Note;","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":35,"author":{"gitId":"yleeyilin"},"content":" public static final String COMMAND_WORD \u003d \"/edit\";","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the person identified \"","lastModifiedDate":"2016-12-26"},{"lineNumber":38,"author":{"gitId":"yleeyilin"},"content":" + \"by the name used in the displayed person list.\\n\"","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"yleeyilin"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06"},{"lineNumber":41,"author":{"gitId":"yleeyilin"},"content":" + \"[\" + PREFIX_FIELD + \"FIELD] \"","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":44,"author":{"gitId":"yleeyilin"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"yleeyilin"},"content":" + \"Example: \" + COMMAND_WORD","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"yleeyilin"},"content":" + PREFIX_NAME + \"John Doe Others \"","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"yleeyilin"},"content":" + PREFIX_FIELD + \"{ \"","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"yleeyilin"},"content":" + \"phone : \" + \"99820550 \"","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"yleeyilin"},"content":" + PREFIX_ADDRESS + \"NUS College Avenue\"","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"yleeyilin"},"content":" + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":52,"author":{"gitId":"yleeyilin"},"content":" private final Name name;","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":56,"author":{"gitId":"yleeyilin"},"content":" * @param name of the person in the filtered person list to edit","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":59,"author":{"gitId":"yleeyilin"},"content":" public EditCommand(Name name, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"yleeyilin"},"content":" requireNonNull(name);","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":63,"author":{"gitId":"yleeyilin"},"content":" this.name \u003d name;","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":69,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":71,"author":{"gitId":"yleeyilin"},"content":" Person personToEdit \u003d model.findByName(name);","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":76,"author":{"gitId":"jamessinmaojun"},"content":" throw new CommandException(EditMessages.MESSAGE_EDIT_NO_DIFFERENCE);","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":79,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":80,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":81,"author":{"gitId":"jamessinmaojun"},"content":" return new CommandResult(String.format(EditMessages.MESSAGE_EDIT_PERSON_SUCCESS,","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"jamessinmaojun"},"content":" EditMessages.format(editedPerson)));","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":89,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":92,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":93,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21"},{"lineNumber":94,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":95,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2017-06-21"},{"lineNumber":96,"author":{"gitId":"jannaleong"},"content":" Note presentNote \u003d personToEdit.getNote(); //edit cannot change note","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2017-06-21"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":99,"author":{"gitId":"jannaleong"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress, presentNote, updatedTags);","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":113,"author":{"gitId":"yleeyilin"},"content":" return name.equals(otherEditCommand.name)","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":120,"author":{"gitId":"yleeyilin"},"content":" .add(\"name\", name)","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":126,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26"},{"lineNumber":127,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26"},{"lineNumber":128,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26"},{"lineNumber":130,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21"},{"lineNumber":131,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":132,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":133,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21"},{"lineNumber":134,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":136,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":138,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":139,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11"},{"lineNumber":140,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":141,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26"},{"lineNumber":143,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15"},{"lineNumber":144,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15"},{"lineNumber":145,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15"},{"lineNumber":146,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15"},{"lineNumber":147,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":150,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":151,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26"},{"lineNumber":152,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":153,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26"},{"lineNumber":154,"author":{"gitId":"-"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, tags);","lastModifiedDate":"2018-08-14"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21"},{"lineNumber":158,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":161,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":162,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":165,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21"},{"lineNumber":166,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":169,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26"},{"lineNumber":170,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":173,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21"},{"lineNumber":174,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21"},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":177,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":178,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21"},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":181,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21"},{"lineNumber":182,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21"},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":185,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26"},{"lineNumber":186,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":189,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":190,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11"},{"lineNumber":191,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":192,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":193,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21"},{"lineNumber":194,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":197,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":198,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11"},{"lineNumber":199,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11"},{"lineNumber":200,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11"},{"lineNumber":201,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":202,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":203,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11"},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":206,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":207,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":208,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":209,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":212,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05"},{"lineNumber":213,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":214,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":216,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":217,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":218,"author":{"gitId":"yleeyilin"},"content":" boolean phoneEquals \u003d Objects.equals(phone, otherEditPersonDescriptor.phone);","lastModifiedDate":"2024-03-17"},{"lineNumber":219,"author":{"gitId":"yleeyilin"},"content":" boolean emailEquals \u003d Objects.equals(email, otherEditPersonDescriptor.email);","lastModifiedDate":"2024-03-17"},{"lineNumber":220,"author":{"gitId":"yleeyilin"},"content":" boolean addressEquals \u003d Objects.equals(address, otherEditPersonDescriptor.address);","lastModifiedDate":"2024-03-17"},{"lineNumber":221,"author":{"gitId":"yleeyilin"},"content":" boolean tagsEquals \u003d Objects.equals(tags, otherEditPersonDescriptor.tags);","lastModifiedDate":"2024-03-17"},{"lineNumber":222,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":223,"author":{"gitId":"yleeyilin"},"content":" return phoneEquals \u0026\u0026 emailEquals \u0026\u0026 addressEquals \u0026\u0026 tagsEquals;","lastModifiedDate":"2024-03-17"},{"lineNumber":224,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":226,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":227,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":237,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"jamessinmaojun":4,"jannaleong":3,"-":202,"yleeyilin":28}},{"path":"src/main/java/seedu/address/logic/commands/EditMaintainerCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yleeyilin"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"yleeyilin"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COMMISSION;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FIELD;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SKILL;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"yleeyilin"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"yleeyilin"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"yleeyilin"},"content":"import java.util.Objects;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"yleeyilin"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"yleeyilin"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.EditMessages;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Commission;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Maintainer;","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Skill;","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"yleeyilin"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"yleeyilin"},"content":" * Edits the details of an existing maintainer in the address book.","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"yleeyilin"},"content":"public class EditMaintainerCommand extends Command {","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"yleeyilin"},"content":" public static final String COMMAND_WORD \u003d \"/edit-maintainer\";","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"yleeyilin"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the maintainer identified \"","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"yleeyilin"},"content":" + \"by the name used in the displayed person list.\\n\"","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"yleeyilin"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"yleeyilin"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"yleeyilin"},"content":" + \"[\" + PREFIX_FIELD + \"FIELD] \"","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"yleeyilin"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"yleeyilin"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"yleeyilin"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"yleeyilin"},"content":" + \"[\" + PREFIX_SKILL + \"SKILL] \"","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"yleeyilin"},"content":" + \"[\" + PREFIX_COMMISSION + \"COMMISSION] \\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"yleeyilin"},"content":" + \"Example: \" + COMMAND_WORD","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"yleeyilin"},"content":" + PREFIX_NAME + \"John Doe Maintainer \"","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"yleeyilin"},"content":" + PREFIX_FIELD + \"{ \"","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"yleeyilin"},"content":" + \"phone : \" + \"99820550 \"","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"yleeyilin"},"content":" + PREFIX_ADDRESS + \"NUS College Avenue\"","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"yleeyilin"},"content":" + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"yleeyilin"},"content":" private final Name name;","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"yleeyilin"},"content":" private final EditMaintainerDescriptor editMaintainerDescriptor;","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"yleeyilin"},"content":" * @param name of the maintainer in the filtered person list to edit","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"yleeyilin"},"content":" * @param editMaintainerDescriptor details to edit the maintainer with","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"yleeyilin"},"content":" public EditMaintainerCommand(Name name, EditMaintainerDescriptor editMaintainerDescriptor) {","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"yleeyilin"},"content":" requireNonNull(name);","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"yleeyilin"},"content":" requireNonNull(editMaintainerDescriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"yleeyilin"},"content":" this.name \u003d name;","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"yleeyilin"},"content":" this.editMaintainerDescriptor \u003d new EditMaintainerDescriptor(editMaintainerDescriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"yleeyilin"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"yleeyilin"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"yleeyilin"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"yleeyilin"},"content":" Maintainer maintainerToEdit \u003d model.findMaintainerByName(name);","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"jamessinmaojun"},"content":" Maintainer editedMaintainer \u003d createEditedMaintainer(maintainerToEdit, editMaintainerDescriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"jamessinmaojun"},"content":" if (!maintainerToEdit.isSamePerson(editedMaintainer) \u0026\u0026 model.hasPerson(editedMaintainer)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"jamessinmaojun"},"content":" throw new CommandException(EditMessages.MESSAGE_EDIT_NO_DIFFERENCE);","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"jamessinmaojun"},"content":" model.setPerson(maintainerToEdit, editedMaintainer);","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"yleeyilin"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"jamessinmaojun"},"content":" return new CommandResult(String.format(EditMessages.MESSAGE_EDIT_PERSON_SUCCESS,","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"jamessinmaojun"},"content":" EditMessages.format(editedMaintainer)));","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":90,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"yleeyilin"},"content":" * Creates and returns a {@code Maintainer} with the details of {@code maintainerToEdit}","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"yleeyilin"},"content":" * edited with {@code editMaintainerDescriptor}.","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"yleeyilin"},"content":" private static Maintainer createEditedMaintainer(Maintainer maintainerToEdit,","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"yleeyilin"},"content":" EditMaintainerDescriptor editMaintainerDescriptor) {","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"yleeyilin"},"content":" assert maintainerToEdit !\u003d null;","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"yleeyilin"},"content":" Name updatedName \u003d editMaintainerDescriptor.getName().orElse(maintainerToEdit.getName());","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"yleeyilin"},"content":" Phone updatedPhone \u003d editMaintainerDescriptor.getPhone().orElse(maintainerToEdit.getPhone());","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"yleeyilin"},"content":" Email updatedEmail \u003d editMaintainerDescriptor.getEmail().orElse(maintainerToEdit.getEmail());","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"yleeyilin"},"content":" Address updatedAddress \u003d editMaintainerDescriptor.getAddress().orElse(maintainerToEdit.getAddress());","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"yleeyilin"},"content":" Set\u003cTag\u003e updatedTags \u003d editMaintainerDescriptor.getTags().orElse(maintainerToEdit.getTags());","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"yleeyilin"},"content":" Skill updatedSkill \u003d editMaintainerDescriptor.getSkill().orElse(maintainerToEdit.getSkill());","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"yleeyilin"},"content":" Commission updatedCommission \u003d editMaintainerDescriptor.getCommission()","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"yleeyilin"},"content":" .orElse(maintainerToEdit.getCommission());","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"yleeyilin"},"content":" return new Maintainer(updatedName, updatedPhone, updatedEmail, updatedAddress,","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"yleeyilin"},"content":" updatedTags, updatedSkill, updatedCommission);","lastModifiedDate":"2024-03-17"},{"lineNumber":109,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"yleeyilin"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"yleeyilin"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"yleeyilin"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"yleeyilin"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"yleeyilin"},"content":" if (!(other instanceof EditMaintainerCommand)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"yleeyilin"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"yleeyilin"},"content":" EditMaintainerCommand otherEditMaintainerCommand \u003d (EditMaintainerCommand) other;","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"yleeyilin"},"content":" return name.equals(otherEditMaintainerCommand.name)","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"yleeyilin"},"content":" \u0026\u0026 editMaintainerDescriptor.equals(otherEditMaintainerCommand.editMaintainerDescriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"yleeyilin"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"yleeyilin"},"content":" public String toString() {","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"yleeyilin"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-17"},{"lineNumber":129,"author":{"gitId":"yleeyilin"},"content":" .add(\"name\", name)","lastModifiedDate":"2024-03-17"},{"lineNumber":130,"author":{"gitId":"yleeyilin"},"content":" .add(\"editMaintainerDescriptor\", editMaintainerDescriptor)","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"yleeyilin"},"content":" .toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":135,"author":{"gitId":"yleeyilin"},"content":" * Stores the details to edit the maintainer with. Each non-empty field value will replace the","lastModifiedDate":"2024-03-17"},{"lineNumber":136,"author":{"gitId":"yleeyilin"},"content":" * corresponding field value of the maintainer.","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":138,"author":{"gitId":"yleeyilin"},"content":" public static class EditMaintainerDescriptor {","lastModifiedDate":"2024-03-17"},{"lineNumber":139,"author":{"gitId":"yleeyilin"},"content":" private Name name;","lastModifiedDate":"2024-03-17"},{"lineNumber":140,"author":{"gitId":"yleeyilin"},"content":" private Phone phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":141,"author":{"gitId":"yleeyilin"},"content":" private Email email;","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"yleeyilin"},"content":" private Address address;","lastModifiedDate":"2024-03-17"},{"lineNumber":143,"author":{"gitId":"yleeyilin"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2024-03-17"},{"lineNumber":144,"author":{"gitId":"yleeyilin"},"content":" private Skill skill;","lastModifiedDate":"2024-03-17"},{"lineNumber":145,"author":{"gitId":"yleeyilin"},"content":" private Commission commission;","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":147,"author":{"gitId":"yleeyilin"},"content":" public EditMaintainerDescriptor() {}","lastModifiedDate":"2024-03-17"},{"lineNumber":148,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":149,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":150,"author":{"gitId":"yleeyilin"},"content":" * Copy constructor.","lastModifiedDate":"2024-03-17"},{"lineNumber":151,"author":{"gitId":"yleeyilin"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2024-03-17"},{"lineNumber":152,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":153,"author":{"gitId":"yleeyilin"},"content":" public EditMaintainerDescriptor(EditMaintainerDescriptor toCopy) {","lastModifiedDate":"2024-03-17"},{"lineNumber":154,"author":{"gitId":"yleeyilin"},"content":" setName(toCopy.name);","lastModifiedDate":"2024-03-17"},{"lineNumber":155,"author":{"gitId":"yleeyilin"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2024-03-17"},{"lineNumber":156,"author":{"gitId":"yleeyilin"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2024-03-17"},{"lineNumber":157,"author":{"gitId":"yleeyilin"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2024-03-17"},{"lineNumber":158,"author":{"gitId":"yleeyilin"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2024-03-17"},{"lineNumber":159,"author":{"gitId":"yleeyilin"},"content":" setSkill(toCopy.skill);","lastModifiedDate":"2024-03-17"},{"lineNumber":160,"author":{"gitId":"yleeyilin"},"content":" setCommission(toCopy.commission);","lastModifiedDate":"2024-03-17"},{"lineNumber":161,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":162,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":163,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":164,"author":{"gitId":"yleeyilin"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2024-03-17"},{"lineNumber":165,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":166,"author":{"gitId":"yleeyilin"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2024-03-17"},{"lineNumber":167,"author":{"gitId":"yleeyilin"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, tags, skill, commission);","lastModifiedDate":"2024-03-17"},{"lineNumber":168,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":169,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":170,"author":{"gitId":"yleeyilin"},"content":" public void setName(Name name) {","lastModifiedDate":"2024-03-17"},{"lineNumber":171,"author":{"gitId":"yleeyilin"},"content":" this.name \u003d name;","lastModifiedDate":"2024-03-17"},{"lineNumber":172,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":173,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":174,"author":{"gitId":"yleeyilin"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2024-03-17"},{"lineNumber":175,"author":{"gitId":"yleeyilin"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2024-03-17"},{"lineNumber":176,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":177,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":178,"author":{"gitId":"yleeyilin"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2024-03-17"},{"lineNumber":179,"author":{"gitId":"yleeyilin"},"content":" this.phone \u003d phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":180,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":181,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":182,"author":{"gitId":"yleeyilin"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2024-03-17"},{"lineNumber":183,"author":{"gitId":"yleeyilin"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2024-03-17"},{"lineNumber":184,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":185,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":186,"author":{"gitId":"yleeyilin"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2024-03-17"},{"lineNumber":187,"author":{"gitId":"yleeyilin"},"content":" this.email \u003d email;","lastModifiedDate":"2024-03-17"},{"lineNumber":188,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":189,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":190,"author":{"gitId":"yleeyilin"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2024-03-17"},{"lineNumber":191,"author":{"gitId":"yleeyilin"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2024-03-17"},{"lineNumber":192,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":193,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":194,"author":{"gitId":"yleeyilin"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2024-03-17"},{"lineNumber":195,"author":{"gitId":"yleeyilin"},"content":" this.address \u003d address;","lastModifiedDate":"2024-03-17"},{"lineNumber":196,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":197,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":198,"author":{"gitId":"yleeyilin"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2024-03-17"},{"lineNumber":199,"author":{"gitId":"yleeyilin"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2024-03-17"},{"lineNumber":200,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":201,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":202,"author":{"gitId":"yleeyilin"},"content":" public void setSkill(Skill skill) {","lastModifiedDate":"2024-03-17"},{"lineNumber":203,"author":{"gitId":"yleeyilin"},"content":" this.skill \u003d skill;","lastModifiedDate":"2024-03-17"},{"lineNumber":204,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":205,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":206,"author":{"gitId":"yleeyilin"},"content":" public Optional\u003cSkill\u003e getSkill() {","lastModifiedDate":"2024-03-17"},{"lineNumber":207,"author":{"gitId":"yleeyilin"},"content":" return Optional.ofNullable(skill);","lastModifiedDate":"2024-03-17"},{"lineNumber":208,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":209,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":210,"author":{"gitId":"yleeyilin"},"content":" public void setCommission(Commission commission) {","lastModifiedDate":"2024-03-17"},{"lineNumber":211,"author":{"gitId":"yleeyilin"},"content":" this.commission \u003d commission;","lastModifiedDate":"2024-03-17"},{"lineNumber":212,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":213,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":214,"author":{"gitId":"yleeyilin"},"content":" public Optional\u003cCommission\u003e getCommission() {","lastModifiedDate":"2024-03-17"},{"lineNumber":215,"author":{"gitId":"yleeyilin"},"content":" return Optional.ofNullable(commission);","lastModifiedDate":"2024-03-17"},{"lineNumber":216,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":217,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":218,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":219,"author":{"gitId":"yleeyilin"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2024-03-17"},{"lineNumber":220,"author":{"gitId":"yleeyilin"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2024-03-17"},{"lineNumber":221,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":222,"author":{"gitId":"yleeyilin"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-03-17"},{"lineNumber":223,"author":{"gitId":"yleeyilin"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2024-03-17"},{"lineNumber":224,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":225,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":226,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":227,"author":{"gitId":"yleeyilin"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2024-03-17"},{"lineNumber":228,"author":{"gitId":"yleeyilin"},"content":" * if modification is attempted.","lastModifiedDate":"2024-03-17"},{"lineNumber":229,"author":{"gitId":"yleeyilin"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2024-03-17"},{"lineNumber":230,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":231,"author":{"gitId":"yleeyilin"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2024-03-17"},{"lineNumber":232,"author":{"gitId":"yleeyilin"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2024-03-17"},{"lineNumber":233,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":234,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":235,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":236,"author":{"gitId":"yleeyilin"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":237,"author":{"gitId":"yleeyilin"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-17"},{"lineNumber":238,"author":{"gitId":"yleeyilin"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-17"},{"lineNumber":239,"author":{"gitId":"yleeyilin"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":240,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":241,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":242,"author":{"gitId":"yleeyilin"},"content":" if (!(other instanceof EditMaintainerDescriptor)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":243,"author":{"gitId":"yleeyilin"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":244,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":245,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":246,"author":{"gitId":"yleeyilin"},"content":" EditMaintainerDescriptor otherEditMaintainerDescriptor \u003d (EditMaintainerDescriptor) other;","lastModifiedDate":"2024-03-17"},{"lineNumber":247,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":248,"author":{"gitId":"yleeyilin"},"content":" boolean arePhoneEqual \u003d Objects.equals(phone, otherEditMaintainerDescriptor.phone);","lastModifiedDate":"2024-03-17"},{"lineNumber":249,"author":{"gitId":"yleeyilin"},"content":" boolean areEmailEqual \u003d Objects.equals(email, otherEditMaintainerDescriptor.email);","lastModifiedDate":"2024-03-17"},{"lineNumber":250,"author":{"gitId":"yleeyilin"},"content":" boolean areAddressEqual \u003d Objects.equals(address, otherEditMaintainerDescriptor.address);","lastModifiedDate":"2024-03-17"},{"lineNumber":251,"author":{"gitId":"yleeyilin"},"content":" boolean areTagsEqual \u003d Objects.equals(tags, otherEditMaintainerDescriptor.tags);","lastModifiedDate":"2024-03-17"},{"lineNumber":252,"author":{"gitId":"yleeyilin"},"content":" boolean areSkillEqual \u003d Objects.equals(skill, otherEditMaintainerDescriptor.skill);","lastModifiedDate":"2024-03-17"},{"lineNumber":253,"author":{"gitId":"yleeyilin"},"content":" boolean areCommissionEqual \u003d Objects.equals(commission,","lastModifiedDate":"2024-03-17"},{"lineNumber":254,"author":{"gitId":"yleeyilin"},"content":" otherEditMaintainerDescriptor.commission);","lastModifiedDate":"2024-03-17"},{"lineNumber":255,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":256,"author":{"gitId":"yleeyilin"},"content":" return arePhoneEqual \u0026\u0026 areEmailEqual \u0026\u0026 areAddressEqual","lastModifiedDate":"2024-03-17"},{"lineNumber":257,"author":{"gitId":"yleeyilin"},"content":" \u0026\u0026 areTagsEqual \u0026\u0026 areSkillEqual \u0026\u0026 areCommissionEqual;","lastModifiedDate":"2024-03-17"},{"lineNumber":258,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":259,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":260,"author":{"gitId":"yleeyilin"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":261,"author":{"gitId":"yleeyilin"},"content":" public String toString() {","lastModifiedDate":"2024-03-17"},{"lineNumber":262,"author":{"gitId":"yleeyilin"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-17"},{"lineNumber":263,"author":{"gitId":"yleeyilin"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2024-03-17"},{"lineNumber":264,"author":{"gitId":"yleeyilin"},"content":" .add(\"email\", email)","lastModifiedDate":"2024-03-17"},{"lineNumber":265,"author":{"gitId":"yleeyilin"},"content":" .add(\"address\", address)","lastModifiedDate":"2024-03-17"},{"lineNumber":266,"author":{"gitId":"yleeyilin"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2024-03-17"},{"lineNumber":267,"author":{"gitId":"yleeyilin"},"content":" .add(\"skill\", skill)","lastModifiedDate":"2024-03-17"},{"lineNumber":268,"author":{"gitId":"yleeyilin"},"content":" .add(\"commission\", commission)","lastModifiedDate":"2024-03-17"},{"lineNumber":269,"author":{"gitId":"yleeyilin"},"content":" .toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":270,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":271,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":272,"author":{"gitId":"yleeyilin"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"jamessinmaojun":7,"yleeyilin":265}},{"path":"src/main/java/seedu/address/logic/commands/EditStaffCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yleeyilin"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"yleeyilin"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMPLOYMENT;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FIELD;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SALARY;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"yleeyilin"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"yleeyilin"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"yleeyilin"},"content":"import java.util.Objects;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"yleeyilin"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"yleeyilin"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.EditMessages;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Employment;","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Salary;","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Staff;","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"yleeyilin"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"yleeyilin"},"content":" * Edits the details of an existing staff in the address book.","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"yleeyilin"},"content":"public class EditStaffCommand extends Command {","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"yleeyilin"},"content":" public static final String COMMAND_WORD \u003d \"/edit-staff\";","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"yleeyilin"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the staff identified \"","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"yleeyilin"},"content":" + \"by the name used in the displayed person list.\\n\"","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"yleeyilin"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"yleeyilin"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"yleeyilin"},"content":" + \"[\" + PREFIX_FIELD + \"FIELD] \"","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"yleeyilin"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"yleeyilin"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"yleeyilin"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"yleeyilin"},"content":" + \"[\" + PREFIX_SALARY + \"SALARY] \"","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"yleeyilin"},"content":" + \"[\" + PREFIX_EMPLOYMENT + \"EMPLOYMENT] \\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"yleeyilin"},"content":" + \"Example: \" + COMMAND_WORD","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"yleeyilin"},"content":" + PREFIX_NAME + \"John Doe Staff \"","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"yleeyilin"},"content":" + PREFIX_FIELD + \"{ \"","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"yleeyilin"},"content":" + \"phone : \" + \"99820550 \"","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"yleeyilin"},"content":" + PREFIX_ADDRESS + \"NUS College Avenue\"","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"yleeyilin"},"content":" + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"yleeyilin"},"content":" private final Name name;","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"yleeyilin"},"content":" private final EditStaffDescriptor editStaffDescriptor;","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"yleeyilin"},"content":" * @param name of the staff in the filtered person list to edit","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"yleeyilin"},"content":" * @param editStaffDescriptor details to edit the staff with","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"yleeyilin"},"content":" public EditStaffCommand(Name name, EditStaffDescriptor editStaffDescriptor) {","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"yleeyilin"},"content":" requireNonNull(name);","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"yleeyilin"},"content":" requireNonNull(editStaffDescriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"yleeyilin"},"content":" this.name \u003d name;","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"yleeyilin"},"content":" this.editStaffDescriptor \u003d new EditStaffDescriptor(editStaffDescriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"yleeyilin"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"yleeyilin"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"yleeyilin"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"yleeyilin"},"content":" Staff staffToEdit \u003d model.findStaffByName(name);","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"yleeyilin"},"content":" Staff editedStaff \u003d createEditedStaff(staffToEdit, editStaffDescriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"yleeyilin"},"content":" if (!staffToEdit.isSamePerson(editedStaff) \u0026\u0026 model.hasPerson(editedStaff)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"jamessinmaojun"},"content":" throw new CommandException(EditMessages.MESSAGE_EDIT_NO_DIFFERENCE);","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"yleeyilin"},"content":" model.setPerson(staffToEdit, editedStaff);","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"yleeyilin"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"jamessinmaojun"},"content":" return new CommandResult(String.format(EditMessages.MESSAGE_EDIT_PERSON_SUCCESS,","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"jamessinmaojun"},"content":" EditMessages.format(editedStaff)));","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":90,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"yleeyilin"},"content":" * Creates and returns a {@code Staff} with the details of {@code staffToEdit}","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"yleeyilin"},"content":" * edited with {@code editStaffDescriptor}.","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"yleeyilin"},"content":" private static Staff createEditedStaff(Staff staffToEdit, EditStaffDescriptor editStaffDescriptor) {","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"yleeyilin"},"content":" assert staffToEdit !\u003d null;","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"yleeyilin"},"content":" Name updatedName \u003d editStaffDescriptor.getName().orElse(staffToEdit.getName());","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"yleeyilin"},"content":" Phone updatedPhone \u003d editStaffDescriptor.getPhone().orElse(staffToEdit.getPhone());","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"yleeyilin"},"content":" Email updatedEmail \u003d editStaffDescriptor.getEmail().orElse(staffToEdit.getEmail());","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"yleeyilin"},"content":" Address updatedAddress \u003d editStaffDescriptor.getAddress().orElse(staffToEdit.getAddress());","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"yleeyilin"},"content":" Set\u003cTag\u003e updatedTags \u003d editStaffDescriptor.getTags().orElse(staffToEdit.getTags());","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"yleeyilin"},"content":" Salary updatedSalary \u003d editStaffDescriptor.getSalary().orElse(staffToEdit.getSalary());","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"yleeyilin"},"content":" Employment updatedEmployment \u003d editStaffDescriptor.getEmployment().orElse(staffToEdit.getEmployment());","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"yleeyilin"},"content":" return new Staff(updatedName, updatedPhone, updatedEmail, updatedAddress,","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"yleeyilin"},"content":" updatedTags, updatedSalary, updatedEmployment);","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":109,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"yleeyilin"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"yleeyilin"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"yleeyilin"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"yleeyilin"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"yleeyilin"},"content":" if (!(other instanceof EditStaffCommand)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"yleeyilin"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"yleeyilin"},"content":" EditStaffCommand otherEditCommand \u003d (EditStaffCommand) other;","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"yleeyilin"},"content":" return name.equals(otherEditCommand.name)","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"yleeyilin"},"content":" \u0026\u0026 editStaffDescriptor.equals(otherEditCommand.editStaffDescriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"yleeyilin"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"yleeyilin"},"content":" public String toString() {","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"yleeyilin"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"yleeyilin"},"content":" .add(\"name\", name)","lastModifiedDate":"2024-03-17"},{"lineNumber":129,"author":{"gitId":"yleeyilin"},"content":" .add(\"editStaffDescriptor\", editStaffDescriptor)","lastModifiedDate":"2024-03-17"},{"lineNumber":130,"author":{"gitId":"yleeyilin"},"content":" .toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":135,"author":{"gitId":"yleeyilin"},"content":" * Stores the details to edit the staff with. Each non-empty field value will replace the","lastModifiedDate":"2024-03-17"},{"lineNumber":136,"author":{"gitId":"yleeyilin"},"content":" * corresponding field value of the staff.","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":138,"author":{"gitId":"yleeyilin"},"content":" public static class EditStaffDescriptor {","lastModifiedDate":"2024-03-17"},{"lineNumber":139,"author":{"gitId":"yleeyilin"},"content":" private Name name;","lastModifiedDate":"2024-03-17"},{"lineNumber":140,"author":{"gitId":"yleeyilin"},"content":" private Phone phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":141,"author":{"gitId":"yleeyilin"},"content":" private Email email;","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"yleeyilin"},"content":" private Address address;","lastModifiedDate":"2024-03-17"},{"lineNumber":143,"author":{"gitId":"yleeyilin"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2024-03-17"},{"lineNumber":144,"author":{"gitId":"yleeyilin"},"content":" private Salary salary;","lastModifiedDate":"2024-03-17"},{"lineNumber":145,"author":{"gitId":"yleeyilin"},"content":" private Employment employment;","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":147,"author":{"gitId":"yleeyilin"},"content":" public EditStaffDescriptor() {}","lastModifiedDate":"2024-03-17"},{"lineNumber":148,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":149,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":150,"author":{"gitId":"yleeyilin"},"content":" * Copy constructor.","lastModifiedDate":"2024-03-17"},{"lineNumber":151,"author":{"gitId":"yleeyilin"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2024-03-17"},{"lineNumber":152,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":153,"author":{"gitId":"yleeyilin"},"content":" public EditStaffDescriptor(EditStaffDescriptor toCopy) {","lastModifiedDate":"2024-03-17"},{"lineNumber":154,"author":{"gitId":"yleeyilin"},"content":" setName(toCopy.name);","lastModifiedDate":"2024-03-17"},{"lineNumber":155,"author":{"gitId":"yleeyilin"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2024-03-17"},{"lineNumber":156,"author":{"gitId":"yleeyilin"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2024-03-17"},{"lineNumber":157,"author":{"gitId":"yleeyilin"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2024-03-17"},{"lineNumber":158,"author":{"gitId":"yleeyilin"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2024-03-17"},{"lineNumber":159,"author":{"gitId":"yleeyilin"},"content":" setSalary(toCopy.salary);","lastModifiedDate":"2024-03-17"},{"lineNumber":160,"author":{"gitId":"yleeyilin"},"content":" setEmployment(toCopy.employment);","lastModifiedDate":"2024-03-17"},{"lineNumber":161,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":162,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":163,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":164,"author":{"gitId":"yleeyilin"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2024-03-17"},{"lineNumber":165,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":166,"author":{"gitId":"yleeyilin"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2024-03-17"},{"lineNumber":167,"author":{"gitId":"yleeyilin"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, tags, salary, employment);","lastModifiedDate":"2024-03-17"},{"lineNumber":168,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":169,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":170,"author":{"gitId":"yleeyilin"},"content":" public void setName(Name name) {","lastModifiedDate":"2024-03-17"},{"lineNumber":171,"author":{"gitId":"yleeyilin"},"content":" this.name \u003d name;","lastModifiedDate":"2024-03-17"},{"lineNumber":172,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":173,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":174,"author":{"gitId":"yleeyilin"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2024-03-17"},{"lineNumber":175,"author":{"gitId":"yleeyilin"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2024-03-17"},{"lineNumber":176,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":177,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":178,"author":{"gitId":"yleeyilin"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2024-03-17"},{"lineNumber":179,"author":{"gitId":"yleeyilin"},"content":" this.phone \u003d phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":180,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":181,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":182,"author":{"gitId":"yleeyilin"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2024-03-17"},{"lineNumber":183,"author":{"gitId":"yleeyilin"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2024-03-17"},{"lineNumber":184,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":185,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":186,"author":{"gitId":"yleeyilin"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2024-03-17"},{"lineNumber":187,"author":{"gitId":"yleeyilin"},"content":" this.email \u003d email;","lastModifiedDate":"2024-03-17"},{"lineNumber":188,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":189,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":190,"author":{"gitId":"yleeyilin"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2024-03-17"},{"lineNumber":191,"author":{"gitId":"yleeyilin"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2024-03-17"},{"lineNumber":192,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":193,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":194,"author":{"gitId":"yleeyilin"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2024-03-17"},{"lineNumber":195,"author":{"gitId":"yleeyilin"},"content":" this.address \u003d address;","lastModifiedDate":"2024-03-17"},{"lineNumber":196,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":197,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":198,"author":{"gitId":"yleeyilin"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2024-03-17"},{"lineNumber":199,"author":{"gitId":"yleeyilin"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2024-03-17"},{"lineNumber":200,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":201,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":202,"author":{"gitId":"yleeyilin"},"content":" public void setSalary(Salary salary) {","lastModifiedDate":"2024-03-17"},{"lineNumber":203,"author":{"gitId":"yleeyilin"},"content":" this.salary \u003d salary;","lastModifiedDate":"2024-03-17"},{"lineNumber":204,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":205,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":206,"author":{"gitId":"yleeyilin"},"content":" public Optional\u003cSalary\u003e getSalary() {","lastModifiedDate":"2024-03-17"},{"lineNumber":207,"author":{"gitId":"yleeyilin"},"content":" return Optional.ofNullable(salary);","lastModifiedDate":"2024-03-17"},{"lineNumber":208,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":209,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":210,"author":{"gitId":"yleeyilin"},"content":" public void setEmployment(Employment employment) {","lastModifiedDate":"2024-03-17"},{"lineNumber":211,"author":{"gitId":"yleeyilin"},"content":" this.employment \u003d employment;","lastModifiedDate":"2024-03-17"},{"lineNumber":212,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":213,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":214,"author":{"gitId":"yleeyilin"},"content":" public Optional\u003cEmployment\u003e getEmployment() {","lastModifiedDate":"2024-03-17"},{"lineNumber":215,"author":{"gitId":"yleeyilin"},"content":" return Optional.ofNullable(employment);","lastModifiedDate":"2024-03-17"},{"lineNumber":216,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":217,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":218,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":219,"author":{"gitId":"yleeyilin"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2024-03-17"},{"lineNumber":220,"author":{"gitId":"yleeyilin"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2024-03-17"},{"lineNumber":221,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":222,"author":{"gitId":"yleeyilin"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-03-17"},{"lineNumber":223,"author":{"gitId":"yleeyilin"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2024-03-17"},{"lineNumber":224,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":225,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":226,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":227,"author":{"gitId":"yleeyilin"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2024-03-17"},{"lineNumber":228,"author":{"gitId":"yleeyilin"},"content":" * if modification is attempted.","lastModifiedDate":"2024-03-17"},{"lineNumber":229,"author":{"gitId":"yleeyilin"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2024-03-17"},{"lineNumber":230,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":231,"author":{"gitId":"yleeyilin"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2024-03-17"},{"lineNumber":232,"author":{"gitId":"yleeyilin"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2024-03-17"},{"lineNumber":233,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":234,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":235,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":236,"author":{"gitId":"yleeyilin"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":237,"author":{"gitId":"yleeyilin"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-17"},{"lineNumber":238,"author":{"gitId":"yleeyilin"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-17"},{"lineNumber":239,"author":{"gitId":"yleeyilin"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":240,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":241,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":242,"author":{"gitId":"yleeyilin"},"content":" if (!(other instanceof EditStaffDescriptor)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":243,"author":{"gitId":"yleeyilin"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":244,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":245,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":246,"author":{"gitId":"yleeyilin"},"content":" EditStaffDescriptor otherEditStaffDescriptor \u003d (EditStaffDescriptor) other;","lastModifiedDate":"2024-03-17"},{"lineNumber":247,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":248,"author":{"gitId":"yleeyilin"},"content":" boolean arePhoneEqual \u003d Objects.equals(phone, otherEditStaffDescriptor.phone);","lastModifiedDate":"2024-03-19"},{"lineNumber":249,"author":{"gitId":"yleeyilin"},"content":" boolean areEmailEqual \u003d Objects.equals(email, otherEditStaffDescriptor.email);","lastModifiedDate":"2024-03-19"},{"lineNumber":250,"author":{"gitId":"yleeyilin"},"content":" boolean areAddressEqual \u003d Objects.equals(address, otherEditStaffDescriptor.address);","lastModifiedDate":"2024-03-19"},{"lineNumber":251,"author":{"gitId":"yleeyilin"},"content":" boolean areTagsEqual \u003d Objects.equals(tags, otherEditStaffDescriptor.tags);","lastModifiedDate":"2024-03-19"},{"lineNumber":252,"author":{"gitId":"yleeyilin"},"content":" boolean areSalaryEqual \u003d Objects.equals(salary, otherEditStaffDescriptor.salary);","lastModifiedDate":"2024-03-19"},{"lineNumber":253,"author":{"gitId":"yleeyilin"},"content":" boolean areEmploymentEqual \u003d Objects.equals(employment, otherEditStaffDescriptor.employment);","lastModifiedDate":"2024-03-19"},{"lineNumber":254,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":255,"author":{"gitId":"yleeyilin"},"content":" return arePhoneEqual \u0026\u0026 areEmailEqual \u0026\u0026 areAddressEqual","lastModifiedDate":"2024-03-19"},{"lineNumber":256,"author":{"gitId":"yleeyilin"},"content":" \u0026\u0026 areTagsEqual \u0026\u0026 areSalaryEqual \u0026\u0026 areEmploymentEqual;","lastModifiedDate":"2024-03-19"},{"lineNumber":257,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":258,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":259,"author":{"gitId":"yleeyilin"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":260,"author":{"gitId":"yleeyilin"},"content":" public String toString() {","lastModifiedDate":"2024-03-17"},{"lineNumber":261,"author":{"gitId":"yleeyilin"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-17"},{"lineNumber":262,"author":{"gitId":"yleeyilin"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2024-03-17"},{"lineNumber":263,"author":{"gitId":"yleeyilin"},"content":" .add(\"email\", email)","lastModifiedDate":"2024-03-17"},{"lineNumber":264,"author":{"gitId":"yleeyilin"},"content":" .add(\"address\", address)","lastModifiedDate":"2024-03-17"},{"lineNumber":265,"author":{"gitId":"yleeyilin"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2024-03-17"},{"lineNumber":266,"author":{"gitId":"yleeyilin"},"content":" .add(\"salary\", salary)","lastModifiedDate":"2024-03-17"},{"lineNumber":267,"author":{"gitId":"yleeyilin"},"content":" .add(\"employment\", employment)","lastModifiedDate":"2024-03-17"},{"lineNumber":268,"author":{"gitId":"yleeyilin"},"content":" .toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":269,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":270,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":271,"author":{"gitId":"yleeyilin"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"jamessinmaojun":4,"yleeyilin":267}},{"path":"src/main/java/seedu/address/logic/commands/EditSupplierCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yleeyilin"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"yleeyilin"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FIELD;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PRICE;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PRODUCT;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"yleeyilin"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"yleeyilin"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"yleeyilin"},"content":"import java.util.Objects;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"yleeyilin"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"yleeyilin"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.EditMessages;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Price;","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Product;","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Supplier;","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"yleeyilin"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"yleeyilin"},"content":" * Edits the details of an existing supplier in the address book.","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"yleeyilin"},"content":"public class EditSupplierCommand extends Command {","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"yleeyilin"},"content":" public static final String COMMAND_WORD \u003d \"/edit-supplier\";","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"yleeyilin"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the supplier identified \"","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"yleeyilin"},"content":" + \"by the name used in the displayed person list.\\n\"","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"yleeyilin"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"yleeyilin"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"yleeyilin"},"content":" + \"[\" + PREFIX_FIELD + \"FIELD] \"","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"yleeyilin"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"yleeyilin"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"yleeyilin"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"yleeyilin"},"content":" + \"[\" + PREFIX_PRODUCT + \"PRODUCT] \"","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"yleeyilin"},"content":" + \"[\" + PREFIX_PRICE + \"PRICE] \\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"yleeyilin"},"content":" + \"Example: \" + COMMAND_WORD","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"yleeyilin"},"content":" + PREFIX_NAME + \"John Doe Supplier \"","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"yleeyilin"},"content":" + PREFIX_FIELD + \"{ \"","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"yleeyilin"},"content":" + \"phone : \" + \"99820550 \"","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"yleeyilin"},"content":" + PREFIX_ADDRESS + \"NUS College Avenue\"","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"yleeyilin"},"content":" + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"yleeyilin"},"content":" private final Name name;","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"yleeyilin"},"content":" private final EditSupplierDescriptor editSupplierDescriptor;","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"yleeyilin"},"content":" * @param name of the supplier in the filtered person list to edit","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"yleeyilin"},"content":" * @param editSupplierDescriptor details to edit the supplier with","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"yleeyilin"},"content":" public EditSupplierCommand(Name name, EditSupplierDescriptor editSupplierDescriptor) {","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"yleeyilin"},"content":" requireNonNull(name);","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"yleeyilin"},"content":" requireNonNull(editSupplierDescriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"yleeyilin"},"content":" this.name \u003d name;","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"yleeyilin"},"content":" this.editSupplierDescriptor \u003d new EditSupplierDescriptor(editSupplierDescriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"yleeyilin"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"yleeyilin"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"yleeyilin"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"yleeyilin"},"content":" Supplier supplierToEdit \u003d model.findSupplierByName(name);","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"yleeyilin"},"content":" Supplier editedSupplier \u003d createEditedSupplier(supplierToEdit, editSupplierDescriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"yleeyilin"},"content":" if (!supplierToEdit.isSamePerson(editedSupplier) \u0026\u0026 model.hasPerson(editedSupplier)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"jamessinmaojun"},"content":" throw new CommandException(EditMessages.MESSAGE_EDIT_NO_DIFFERENCE);","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"yleeyilin"},"content":" model.setPerson(supplierToEdit, editedSupplier);","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"yleeyilin"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"jamessinmaojun"},"content":" return new CommandResult(String.format(EditMessages.MESSAGE_EDIT_PERSON_SUCCESS,","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"jamessinmaojun"},"content":" EditMessages.format(editedSupplier)));","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":90,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"yleeyilin"},"content":" * Creates and returns a {@code Supplier} with the details of {@code supplierToEdit}","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"yleeyilin"},"content":" * edited with {@code editSupplierDescriptor}.","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"yleeyilin"},"content":" private static Supplier createEditedSupplier(Supplier supplierToEdit,","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"yleeyilin"},"content":" EditSupplierDescriptor editSupplierDescriptor) {","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"yleeyilin"},"content":" assert supplierToEdit !\u003d null;","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"yleeyilin"},"content":" Name updatedName \u003d editSupplierDescriptor.getName().orElse(supplierToEdit.getName());","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"yleeyilin"},"content":" Phone updatedPhone \u003d editSupplierDescriptor.getPhone().orElse(supplierToEdit.getPhone());","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"yleeyilin"},"content":" Email updatedEmail \u003d editSupplierDescriptor.getEmail().orElse(supplierToEdit.getEmail());","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"yleeyilin"},"content":" Address updatedAddress \u003d editSupplierDescriptor.getAddress().orElse(supplierToEdit.getAddress());","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"yleeyilin"},"content":" Set\u003cTag\u003e updatedTags \u003d editSupplierDescriptor.getTags().orElse(supplierToEdit.getTags());","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"yleeyilin"},"content":" Product updatedProduct \u003d editSupplierDescriptor.getProduct().orElse(supplierToEdit.getProduct());","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"yleeyilin"},"content":" Price updatedPrice \u003d editSupplierDescriptor.getPrice().orElse(supplierToEdit.getPrice());","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"yleeyilin"},"content":" return new Supplier(updatedName, updatedPhone, updatedEmail, updatedAddress,","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"yleeyilin"},"content":" updatedTags, updatedProduct, updatedPrice);","lastModifiedDate":"2024-03-17"},{"lineNumber":109,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"yleeyilin"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"yleeyilin"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"yleeyilin"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"yleeyilin"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"yleeyilin"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"yleeyilin"},"content":" if (!(other instanceof EditSupplierCommand)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"yleeyilin"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"yleeyilin"},"content":" EditSupplierCommand otherEditCommand \u003d (EditSupplierCommand) other;","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"yleeyilin"},"content":" return name.equals(otherEditCommand.name)","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"yleeyilin"},"content":" \u0026\u0026 editSupplierDescriptor.equals(otherEditCommand.editSupplierDescriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"yleeyilin"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"yleeyilin"},"content":" public String toString() {","lastModifiedDate":"2024-03-17"},{"lineNumber":129,"author":{"gitId":"yleeyilin"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-17"},{"lineNumber":130,"author":{"gitId":"yleeyilin"},"content":" .add(\"name\", name)","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"yleeyilin"},"content":" .add(\"editSupplierDescriptor\", editSupplierDescriptor)","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"yleeyilin"},"content":" .toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":135,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":136,"author":{"gitId":"yleeyilin"},"content":" * Stores the details to edit the supplier with. Each non-empty field value will replace the","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"yleeyilin"},"content":" * corresponding field value of the supplier.","lastModifiedDate":"2024-03-17"},{"lineNumber":138,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":139,"author":{"gitId":"yleeyilin"},"content":" public static class EditSupplierDescriptor {","lastModifiedDate":"2024-03-17"},{"lineNumber":140,"author":{"gitId":"yleeyilin"},"content":" private Name name;","lastModifiedDate":"2024-03-17"},{"lineNumber":141,"author":{"gitId":"yleeyilin"},"content":" private Phone phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"yleeyilin"},"content":" private Email email;","lastModifiedDate":"2024-03-17"},{"lineNumber":143,"author":{"gitId":"yleeyilin"},"content":" private Address address;","lastModifiedDate":"2024-03-17"},{"lineNumber":144,"author":{"gitId":"yleeyilin"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2024-03-17"},{"lineNumber":145,"author":{"gitId":"yleeyilin"},"content":" private Product product;","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"yleeyilin"},"content":" private Price price;","lastModifiedDate":"2024-03-17"},{"lineNumber":147,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":148,"author":{"gitId":"yleeyilin"},"content":" public EditSupplierDescriptor() {}","lastModifiedDate":"2024-03-17"},{"lineNumber":149,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":150,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":151,"author":{"gitId":"yleeyilin"},"content":" * Copy constructor.","lastModifiedDate":"2024-03-17"},{"lineNumber":152,"author":{"gitId":"yleeyilin"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2024-03-17"},{"lineNumber":153,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":154,"author":{"gitId":"yleeyilin"},"content":" public EditSupplierDescriptor(EditSupplierDescriptor toCopy) {","lastModifiedDate":"2024-03-17"},{"lineNumber":155,"author":{"gitId":"yleeyilin"},"content":" setName(toCopy.name);","lastModifiedDate":"2024-03-17"},{"lineNumber":156,"author":{"gitId":"yleeyilin"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2024-03-17"},{"lineNumber":157,"author":{"gitId":"yleeyilin"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2024-03-17"},{"lineNumber":158,"author":{"gitId":"yleeyilin"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2024-03-17"},{"lineNumber":159,"author":{"gitId":"yleeyilin"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2024-03-17"},{"lineNumber":160,"author":{"gitId":"yleeyilin"},"content":" setProduct(toCopy.product);","lastModifiedDate":"2024-03-17"},{"lineNumber":161,"author":{"gitId":"yleeyilin"},"content":" setPrice(toCopy.price);","lastModifiedDate":"2024-03-17"},{"lineNumber":162,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":163,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":164,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":165,"author":{"gitId":"yleeyilin"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2024-03-17"},{"lineNumber":166,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":167,"author":{"gitId":"yleeyilin"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2024-03-17"},{"lineNumber":168,"author":{"gitId":"yleeyilin"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, tags, product, price);","lastModifiedDate":"2024-03-17"},{"lineNumber":169,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":170,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":171,"author":{"gitId":"yleeyilin"},"content":" public void setName(Name name) {","lastModifiedDate":"2024-03-17"},{"lineNumber":172,"author":{"gitId":"yleeyilin"},"content":" this.name \u003d name;","lastModifiedDate":"2024-03-17"},{"lineNumber":173,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":174,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":175,"author":{"gitId":"yleeyilin"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2024-03-17"},{"lineNumber":176,"author":{"gitId":"yleeyilin"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2024-03-17"},{"lineNumber":177,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":178,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":179,"author":{"gitId":"yleeyilin"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2024-03-17"},{"lineNumber":180,"author":{"gitId":"yleeyilin"},"content":" this.phone \u003d phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":181,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":182,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":183,"author":{"gitId":"yleeyilin"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2024-03-17"},{"lineNumber":184,"author":{"gitId":"yleeyilin"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2024-03-17"},{"lineNumber":185,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":186,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":187,"author":{"gitId":"yleeyilin"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2024-03-17"},{"lineNumber":188,"author":{"gitId":"yleeyilin"},"content":" this.email \u003d email;","lastModifiedDate":"2024-03-17"},{"lineNumber":189,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":190,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":191,"author":{"gitId":"yleeyilin"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2024-03-17"},{"lineNumber":192,"author":{"gitId":"yleeyilin"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2024-03-17"},{"lineNumber":193,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":194,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":195,"author":{"gitId":"yleeyilin"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2024-03-17"},{"lineNumber":196,"author":{"gitId":"yleeyilin"},"content":" this.address \u003d address;","lastModifiedDate":"2024-03-17"},{"lineNumber":197,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":198,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":199,"author":{"gitId":"yleeyilin"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2024-03-17"},{"lineNumber":200,"author":{"gitId":"yleeyilin"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2024-03-17"},{"lineNumber":201,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":202,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":203,"author":{"gitId":"yleeyilin"},"content":" public void setProduct(Product product) {","lastModifiedDate":"2024-03-17"},{"lineNumber":204,"author":{"gitId":"yleeyilin"},"content":" this.product \u003d product;","lastModifiedDate":"2024-03-17"},{"lineNumber":205,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":206,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":207,"author":{"gitId":"yleeyilin"},"content":" public Optional\u003cProduct\u003e getProduct() {","lastModifiedDate":"2024-03-17"},{"lineNumber":208,"author":{"gitId":"yleeyilin"},"content":" return Optional.ofNullable(product);","lastModifiedDate":"2024-03-17"},{"lineNumber":209,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":210,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":211,"author":{"gitId":"yleeyilin"},"content":" public void setPrice(Price price) {","lastModifiedDate":"2024-03-17"},{"lineNumber":212,"author":{"gitId":"yleeyilin"},"content":" this.price \u003d price;","lastModifiedDate":"2024-03-17"},{"lineNumber":213,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":214,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":215,"author":{"gitId":"yleeyilin"},"content":" public Optional\u003cPrice\u003e getPrice() {","lastModifiedDate":"2024-03-17"},{"lineNumber":216,"author":{"gitId":"yleeyilin"},"content":" return Optional.ofNullable(price);","lastModifiedDate":"2024-03-17"},{"lineNumber":217,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":218,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":219,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":220,"author":{"gitId":"yleeyilin"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2024-03-17"},{"lineNumber":221,"author":{"gitId":"yleeyilin"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2024-03-17"},{"lineNumber":222,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":223,"author":{"gitId":"yleeyilin"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-03-17"},{"lineNumber":224,"author":{"gitId":"yleeyilin"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2024-03-17"},{"lineNumber":225,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":226,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":227,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":228,"author":{"gitId":"yleeyilin"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2024-03-17"},{"lineNumber":229,"author":{"gitId":"yleeyilin"},"content":" * if modification is attempted.","lastModifiedDate":"2024-03-17"},{"lineNumber":230,"author":{"gitId":"yleeyilin"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2024-03-17"},{"lineNumber":231,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":232,"author":{"gitId":"yleeyilin"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2024-03-17"},{"lineNumber":233,"author":{"gitId":"yleeyilin"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2024-03-17"},{"lineNumber":234,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":235,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":236,"author":{"gitId":"yleeyilin"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":237,"author":{"gitId":"yleeyilin"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-17"},{"lineNumber":238,"author":{"gitId":"yleeyilin"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-17"},{"lineNumber":239,"author":{"gitId":"yleeyilin"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":240,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":241,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":242,"author":{"gitId":"yleeyilin"},"content":" if (!(other instanceof EditSupplierDescriptor)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":243,"author":{"gitId":"yleeyilin"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":244,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":245,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":246,"author":{"gitId":"yleeyilin"},"content":" EditSupplierDescriptor otherEditSupplierDescriptor \u003d (EditSupplierDescriptor) other;","lastModifiedDate":"2024-03-17"},{"lineNumber":247,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":248,"author":{"gitId":"yleeyilin"},"content":" boolean phoneEquals \u003d Objects.equals(phone, otherEditSupplierDescriptor.phone);","lastModifiedDate":"2024-03-17"},{"lineNumber":249,"author":{"gitId":"yleeyilin"},"content":" boolean emailEquals \u003d Objects.equals(email, otherEditSupplierDescriptor.email);","lastModifiedDate":"2024-03-17"},{"lineNumber":250,"author":{"gitId":"yleeyilin"},"content":" boolean addressEquals \u003d Objects.equals(address, otherEditSupplierDescriptor.address);","lastModifiedDate":"2024-03-17"},{"lineNumber":251,"author":{"gitId":"yleeyilin"},"content":" boolean tagsEquals \u003d Objects.equals(tags, otherEditSupplierDescriptor.tags);","lastModifiedDate":"2024-03-17"},{"lineNumber":252,"author":{"gitId":"yleeyilin"},"content":" boolean productEquals \u003d Objects.equals(tags, otherEditSupplierDescriptor.tags);","lastModifiedDate":"2024-03-17"},{"lineNumber":253,"author":{"gitId":"yleeyilin"},"content":" boolean priceEquals \u003d Objects.equals(tags, otherEditSupplierDescriptor.tags);","lastModifiedDate":"2024-03-17"},{"lineNumber":254,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":255,"author":{"gitId":"yleeyilin"},"content":" return phoneEquals \u0026\u0026 emailEquals \u0026\u0026 addressEquals \u0026\u0026 tagsEquals \u0026\u0026 productEquals \u0026\u0026 priceEquals;","lastModifiedDate":"2024-03-17"},{"lineNumber":256,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":257,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":258,"author":{"gitId":"yleeyilin"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":259,"author":{"gitId":"yleeyilin"},"content":" public String toString() {","lastModifiedDate":"2024-03-17"},{"lineNumber":260,"author":{"gitId":"yleeyilin"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-17"},{"lineNumber":261,"author":{"gitId":"yleeyilin"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2024-03-17"},{"lineNumber":262,"author":{"gitId":"yleeyilin"},"content":" .add(\"email\", email)","lastModifiedDate":"2024-03-17"},{"lineNumber":263,"author":{"gitId":"yleeyilin"},"content":" .add(\"address\", address)","lastModifiedDate":"2024-03-17"},{"lineNumber":264,"author":{"gitId":"yleeyilin"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2024-03-17"},{"lineNumber":265,"author":{"gitId":"yleeyilin"},"content":" .add(\"product\", product)","lastModifiedDate":"2024-03-17"},{"lineNumber":266,"author":{"gitId":"yleeyilin"},"content":" .add(\"price\", product)","lastModifiedDate":"2024-03-17"},{"lineNumber":267,"author":{"gitId":"yleeyilin"},"content":" .toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":268,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":269,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":270,"author":{"gitId":"yleeyilin"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"jamessinmaojun":4,"yleeyilin":266}},{"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":"jamessinmaojun"},"content":"import seedu.address.logic.messages.Messages;","lastModifiedDate":"2024-03-18"},{"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":"-"},"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":{"jamessinmaojun":1,"-":57}},{"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":"jamessinmaojun"},"content":"import seedu.address.logic.messages.HelpMessages;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-31"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Format full help instructions for every command for display.","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class HelpCommand extends Command {","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":" public static final String COMMAND_WORD \u003d \"/help\";","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Shows program usage instructions.\\n\"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD;","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25"},{"lineNumber":16,"author":{"gitId":"jamessinmaojun"},"content":" return new CommandResult(HelpMessages.MESSAGES_SHOWING_HELP_MESSAGE, true, false);","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"jamessinmaojun":2,"jannaleong":1,"-":15}},{"path":"src/main/java/seedu/address/logic/commands/HelpDeleteCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.HelpMessages;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"/**","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":" * Format full help instructions for every command for display.","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":"public class HelpDeleteCommand extends Command {","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":" public static final String COMMAND_WORD \u003d \"/help-delete\";","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Shows program usage instructions for delete command.\\n\"","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":" + \"Example: \" + COMMAND_WORD;","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"jamessinmaojun"},"content":" return new CommandResult(HelpMessages.MESSAGES_SHOWING_DELETE_HELP_MESSAGE, true, false);","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"jamessinmaojun":2,"jannaleong":16}},{"path":"src/main/java/seedu/address/logic/commands/HelpEditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.HelpMessages;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"/**","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":" * Format full help instructions for every command for display.","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":"public class HelpEditCommand extends Command {","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":" public static final String COMMAND_WORD \u003d \"/help-edit\";","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Shows program usage instructions for edit command.\\n\"","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":" + \"Example: \" + COMMAND_WORD;","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"jamessinmaojun"},"content":" return new CommandResult(HelpMessages.MESSAGES_SHOWING_EDIT_HELP_MESSAGE, true, false);","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"jamessinmaojun":2,"jannaleong":16}},{"path":"src/main/java/seedu/address/logic/commands/HelpPoochMaintenanceCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.HelpMessages;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"/**","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":" * Format full help instructions for every command for display.","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":"public class HelpPoochMaintenanceCommand extends Command {","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":" public static final String COMMAND_WORD \u003d \"/help-poochmaintenance\";","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Shows program usage instructions\"","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":" + \" for pooch-poochmaintenance command.\\n\"","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":" + \"Example: \" + COMMAND_WORD;","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"jamessinmaojun"},"content":" return new CommandResult(HelpMessages.MESSAGES_SHOWING_ADD_MAINTAINER_HELP_MESSAGE,","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"jamessinmaojun"},"content":" true, false);","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"jamessinmaojun":3,"jannaleong":17}},{"path":"src/main/java/seedu/address/logic/commands/HelpPoochStaffCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.HelpMessages;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"/**","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":" * Format full help instructions for every command for display.","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":"public class HelpPoochStaffCommand extends Command {","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":" public static final String COMMAND_WORD \u003d \"/help-poochstaff\";","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":" + \": Shows program usage instructions for pooch-staff command.\\n\"","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":" + \"Example: \" + COMMAND_WORD;","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"jamessinmaojun"},"content":" return new CommandResult(HelpMessages.MESSAGES_SHOWING_ADD_STAFF_HELP_MESSAGE,","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"jamessinmaojun"},"content":" true, false);","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"jamessinmaojun":3,"jannaleong":17}},{"path":"src/main/java/seedu/address/logic/commands/HelpPoochSupplierCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.HelpMessages;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"/**","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":" * Format full help instructions for every command for display.","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":"public class HelpPoochSupplierCommand extends Command {","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":" public static final String COMMAND_WORD \u003d \"/help-poochsupplier\";","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":" + \": Shows program usage instructions for pocch-supplier command.\\n\"","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":" + \"Example: \" + COMMAND_WORD;","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"jamessinmaojun"},"content":" return new CommandResult(HelpMessages.MESSAGES_SHOWING_ADD_SUPPLIER_HELP_MESSAGE,","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"jamessinmaojun"},"content":" true, false);","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"jamessinmaojun":3,"jannaleong":17}},{"path":"src/main/java/seedu/address/logic/commands/HelpSearchCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.HelpMessages;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"/**","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":" * Format full help instructions for every command for display.","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":"public class HelpSearchCommand extends Command {","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":" public static final String COMMAND_WORD \u003d \"/help-search\";","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Shows program usage instructions for search command.\\n\"","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":" + \"Example: \" + COMMAND_WORD;","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"jamessinmaojun"},"content":" return new CommandResult(HelpMessages.MESSAGES_SHOWING_SEARCH_HELP_MESSAGE, true, false);","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"jamessinmaojun":2,"jannaleong":16}},{"path":"src/main/java/seedu/address/logic/commands/NoteCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NOTE;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":"import java.util.List;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.NoteMessages;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":"import seedu.address.model.person.Maintainer;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":"import seedu.address.model.person.Note;","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":"import seedu.address.model.person.Staff;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":"import seedu.address.model.person.Supplier;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":" * Adds a note of an existing person in the address book.","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"jannaleong"},"content":" * A non-empty note must be specified.","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"jannaleong"},"content":"public class NoteCommand extends Command {","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"jannaleong"},"content":" public static final String COMMAND_WORD \u003d \"/note\";","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"jannaleong"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"jannaleong"},"content":" + \": Adds note to person.\\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"jannaleong"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"jannaleong"},"content":" + PREFIX_NAME + \"NAME\"","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"jannaleong"},"content":" + PREFIX_NOTE + \"NOTE\"","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"jannaleong"},"content":" + \"Example: \" + COMMAND_WORD + PREFIX_NAME","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"jannaleong"},"content":" + \" Moochie\" + PREFIX_NOTE + \"Meet at 6pm Tuesday\";","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"jannaleong"},"content":" private final Name name;","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"jannaleong"},"content":" private final Note note;","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"jannaleong"},"content":" * @param name of the person in the filtered person list to edit the note","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"jannaleong"},"content":" * @param note of the person to be updated to","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"jannaleong"},"content":" public NoteCommand(Name name, Note note) {","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"jannaleong"},"content":" requireAllNonNull(name, note);","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"jannaleong"},"content":" this.name \u003d name;","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"jannaleong"},"content":" this.note \u003d note;","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"jannaleong"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"jannaleong"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"jannaleong"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"jannaleong"},"content":" Person personToEdit \u003d findByName(lastShownList, name);","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"jannaleong"},"content":" Person editedPerson;","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"jannaleong"},"content":" if (personToEdit instanceof Maintainer) {","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"jannaleong"},"content":" editedPerson \u003d new Maintainer(","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"jannaleong"},"content":" personToEdit.getName(), personToEdit.getPhone(), personToEdit.getEmail(),","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"jannaleong"},"content":" personToEdit.getAddress(), personToEdit.getTags(), ((Maintainer) personToEdit).getSkill(), (","lastModifiedDate":"2024-03-22"},{"lineNumber":59,"author":{"gitId":"jannaleong"},"content":" (Maintainer) personToEdit).getCommission());","lastModifiedDate":"2024-03-22"},{"lineNumber":60,"author":{"gitId":"jannaleong"},"content":" editedPerson.setNoteContent(note.toString());","lastModifiedDate":"2024-03-23"},{"lineNumber":61,"author":{"gitId":"jannaleong"},"content":" } else if (personToEdit instanceof Staff) {","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"jannaleong"},"content":" editedPerson \u003d new Staff(","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"jannaleong"},"content":" personToEdit.getName(), personToEdit.getPhone(), personToEdit.getEmail(),","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"jannaleong"},"content":" personToEdit.getAddress(), personToEdit.getTags(), ((Staff) personToEdit).getSalary(), (","lastModifiedDate":"2024-03-22"},{"lineNumber":65,"author":{"gitId":"jannaleong"},"content":" (Staff) personToEdit).getEmployment());","lastModifiedDate":"2024-03-22"},{"lineNumber":66,"author":{"gitId":"jannaleong"},"content":" editedPerson.setNoteContent(note.toString());","lastModifiedDate":"2024-03-23"},{"lineNumber":67,"author":{"gitId":"jannaleong"},"content":" } else if (personToEdit instanceof Supplier) {","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"jannaleong"},"content":" editedPerson \u003d new Supplier(","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"jannaleong"},"content":" personToEdit.getName(), personToEdit.getPhone(), personToEdit.getEmail(),","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"jannaleong"},"content":" personToEdit.getAddress(), personToEdit.getTags(), ((Supplier) personToEdit).getProduct(), (","lastModifiedDate":"2024-03-22"},{"lineNumber":71,"author":{"gitId":"jannaleong"},"content":" (Supplier) personToEdit).getPrice());","lastModifiedDate":"2024-03-22"},{"lineNumber":72,"author":{"gitId":"jannaleong"},"content":" editedPerson.setNoteContent(note.toString());","lastModifiedDate":"2024-03-23"},{"lineNumber":73,"author":{"gitId":"jannaleong"},"content":" } else {","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"jannaleong"},"content":" editedPerson \u003d new Person(","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"jannaleong"},"content":" personToEdit.getName(), personToEdit.getPhone(), personToEdit.getEmail(),","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"jannaleong"},"content":" personToEdit.getAddress(), note, personToEdit.getTags());","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"jannaleong"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"jannaleong"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"jannaleong"},"content":" return new CommandResult(generateSuccessMessage(editedPerson));","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"jannaleong"},"content":" * Generates a command execution success message","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"jannaleong"},"content":" * {@code personToEdit}.","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"jannaleong"},"content":" private String generateSuccessMessage(Person personToEdit) {","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"jamessinmaojun"},"content":" return String.format(NoteMessages.MESSAGE_ADD_NOTE_SUCCESS, personToEdit);","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"jannaleong"},"content":" * Finds a person from a List of persons identified by its name.","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"jannaleong"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"jannaleong"},"content":" * @param personList The list of persons to search from.","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"jannaleong"},"content":" * @param targetName The name of the person to return.","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"jannaleong"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":99,"author":{"gitId":"jannaleong"},"content":" * @return The person object with name equals to {@code targetName}.","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"jannaleong"},"content":" * */","lastModifiedDate":"2024-03-20"},{"lineNumber":101,"author":{"gitId":"jannaleong"},"content":" public Person findByName(List\u003cPerson\u003e personList, Name targetName) {","lastModifiedDate":"2024-03-20"},{"lineNumber":102,"author":{"gitId":"jannaleong"},"content":" for (Person person: personList) {","lastModifiedDate":"2024-03-20"},{"lineNumber":103,"author":{"gitId":"jannaleong"},"content":" Name name \u003d person.getName();","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"jannaleong"},"content":" if (name.equals(targetName)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"jannaleong"},"content":" return person;","lastModifiedDate":"2024-03-20"},{"lineNumber":106,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":107,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":108,"author":{"gitId":"jannaleong"},"content":" return null;","lastModifiedDate":"2024-03-20"},{"lineNumber":109,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":110,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":111,"author":{"gitId":"jannaleong"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"jannaleong"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-18"},{"lineNumber":113,"author":{"gitId":"jannaleong"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"jannaleong"},"content":" return true;","lastModifiedDate":"2024-03-18"},{"lineNumber":115,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"jannaleong"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-18"},{"lineNumber":118,"author":{"gitId":"jannaleong"},"content":" if (!(other instanceof NoteCommand)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":119,"author":{"gitId":"jannaleong"},"content":" return false;","lastModifiedDate":"2024-03-18"},{"lineNumber":120,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":121,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":122,"author":{"gitId":"jannaleong"},"content":" NoteCommand e \u003d (NoteCommand) other;","lastModifiedDate":"2024-03-18"},{"lineNumber":123,"author":{"gitId":"jannaleong"},"content":" return name.equals(e.name)","lastModifiedDate":"2024-03-18"},{"lineNumber":124,"author":{"gitId":"jannaleong"},"content":" \u0026\u0026 note.equals(e.note);","lastModifiedDate":"2024-03-18"},{"lineNumber":125,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":126,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"jamessinmaojun":2,"jannaleong":124}},{"path":"src/main/java/seedu/address/logic/commands/SearchCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Joshy837"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"Joshy837"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"Joshy837"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.SearchMessages;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"Joshy837"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"Joshy837"},"content":"import seedu.address.model.person.KeywordPredicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"Joshy837"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"Joshy837"},"content":" * Finds and lists all persons in address book whose name contains any of the argument keywords.","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"Joshy837"},"content":" * Keyword matching is case insensitive.","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"Joshy837"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"Joshy837"},"content":"public class SearchCommand extends Command {","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"Joshy837"},"content":" public static final String COMMAND_WORD \u003d \"/search\";","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"Joshy837"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Searches all persons whose names contain any of \"","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"Joshy837"},"content":" + \"the specified keywords (case-insensitive) and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"Joshy837"},"content":" + \"Parameters: KEYWORD \\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"Joshy837"},"content":" + \"Example: \" + COMMAND_WORD","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"Joshy837"},"content":" + \" /search ; name : [full/partial name]\\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"Joshy837"},"content":" + \"/search ; phone : [full/partial phone]\\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"Joshy837"},"content":" + \"/search ; address : [full/partial address]\\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"Joshy837"},"content":" + \"/search ; email : [full/partial email]\\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"Joshy837"},"content":" + \"/search ; product : [full/partial product name]\\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"Joshy837"},"content":" + \"/search ; employment : [employment]\";","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"Joshy837"},"content":" private final KeywordPredicate predicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"Joshy837"},"content":" public SearchCommand(KeywordPredicate predicate) {","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"Joshy837"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"Joshy837"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"Joshy837"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"Joshy837"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"Joshy837"},"content":" model.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"Joshy837"},"content":" return new CommandResult(","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"jamessinmaojun"},"content":" String.format(SearchMessages.MESSAGE_SEARCH_PERSON_SUCCESS, model.getFilteredPersonList().size()));","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"Joshy837"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"Joshy837"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"Joshy837"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"Joshy837"},"content":" return true;","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"Joshy837"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"Joshy837"},"content":" if (!(other instanceof SearchCommand)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"Joshy837"},"content":" return false;","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"Joshy837"},"content":" SearchCommand otherSearchCommand \u003d (SearchCommand) other;","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"Joshy837"},"content":" return predicate.equals(otherSearchCommand.predicate);","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"Joshy837"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"Joshy837"},"content":" public String toString() {","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"Joshy837"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"Joshy837"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"Joshy837"},"content":" .toString();","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"Joshy837"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"Joshy837":62,"jamessinmaojun":2}},{"path":"src/main/java/seedu/address/logic/messages/AddMessages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jamessinmaojun"},"content":"package seedu.address.logic.messages;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.model.person.Maintainer;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.model.person.Staff;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.model.person.Supplier;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"jamessinmaojun"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"jamessinmaojun"},"content":" * Container for user delete command visible messages.","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"jamessinmaojun"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"jamessinmaojun"},"content":"public class AddMessages extends Messages {","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"jamessinmaojun"},"content":" public static final String MESSAGE_ADD_PERSON_SUCCESS \u003d \"Woof! Added %1$s successfully! \\uD83D\\uDC36\";","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"jamessinmaojun"},"content":" public static final String MESSAGE_ADD_DUPLICATE_PERSON \u003d \"Failed to add Pooch Contact - \"","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"jamessinmaojun"},"content":" + \"Pooch Contact already exists in the planner \\uD83D\\uDC3E\";","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"jamessinmaojun"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"jamessinmaojun"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"jamessinmaojun"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"jamessinmaojun"},"content":" public static String format(Person person) {","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"jamessinmaojun"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"jamessinmaojun"},"content":" if (person instanceof Staff) {","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"jamessinmaojun"},"content":" builder.append(\"Pooch Staff \");","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"jamessinmaojun"},"content":" } else if (person instanceof Supplier) {","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"jamessinmaojun"},"content":" builder.append(\"Supplier \");","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"jamessinmaojun"},"content":" } else if (person instanceof Maintainer) {","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"jamessinmaojun"},"content":" builder.append(\"Maintenance Crew \");","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"jamessinmaojun"},"content":" } else {","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"jamessinmaojun"},"content":" builder.append(\"Other Contact \");","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"jamessinmaojun"},"content":" builder.append(person.getName());","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"jamessinmaojun"},"content":" return builder.toString();","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"jamessinmaojun"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"jamessinmaojun":33}},{"path":"src/main/java/seedu/address/logic/messages/DeleteMessages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jamessinmaojun"},"content":"package seedu.address.logic.messages;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.model.person.Maintainer;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.model.person.Staff;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.model.person.Supplier;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"jamessinmaojun"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"jamessinmaojun"},"content":" * Container for user delete command visible messages.","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"jamessinmaojun"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"jamessinmaojun"},"content":"public class DeleteMessages extends Messages {","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"jamessinmaojun"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Woof! Deleted %1$s successfully! \\uD83D\\uDC36\";","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"jamessinmaojun"},"content":" public static final String MESSAGE_DELETE_NAME_NOT_FOUND \u003d \"Failed to delete Pooch Contact - \"","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"jamessinmaojun"},"content":" + \"Name does not exist in our address book \\uD83D\\uDC3E\";","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"jamessinmaojun"},"content":" public static final String MESSAGE_DELETE_MISSING_NAME \u003d \"Failed to delete Pooch Contact - \"","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"jamessinmaojun"},"content":" + \"Delete requires a name field. \\uD83D\\uDC3E\";","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"jamessinmaojun"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"jamessinmaojun"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"jamessinmaojun"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"jamessinmaojun"},"content":" public static String format(Person person) {","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"jamessinmaojun"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"jamessinmaojun"},"content":" if (person instanceof Staff) {","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"jamessinmaojun"},"content":" builder.append(\"Pooch Staff \");","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"jamessinmaojun"},"content":" } else if (person instanceof Supplier) {","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"jamessinmaojun"},"content":" builder.append(\"Supplier \");","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"jamessinmaojun"},"content":" } else if (person instanceof Maintainer) {","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"jamessinmaojun"},"content":" builder.append(\"Maintenance Crew \");","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"jamessinmaojun"},"content":" } else {","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"jamessinmaojun"},"content":" builder.append(\"Other Contact \");","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"jamessinmaojun"},"content":" builder.append(person.getName());","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"jamessinmaojun"},"content":" return builder.toString();","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"jamessinmaojun"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"jamessinmaojun":35}},{"path":"src/main/java/seedu/address/logic/messages/EditMessages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jamessinmaojun"},"content":"package seedu.address.logic.messages;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.model.person.Maintainer;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.model.person.Staff;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.model.person.Supplier;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"jamessinmaojun"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"jamessinmaojun"},"content":" * Container for user delete command visible messages.","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"jamessinmaojun"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"jamessinmaojun"},"content":"public class EditMessages extends Messages {","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"jamessinmaojun"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Woof! Edited %1$s successfully! \\uD83D\\uDC36\";","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"jamessinmaojun"},"content":" public static final String MESSAGE_EDIT_EMPTY_FIELD \u003d \"Failed to edit Pooch Contact - \"","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"jamessinmaojun"},"content":" + \"Field is empty! %1$s \\uD83D\\uDC3E\";","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"jamessinmaojun"},"content":" public static final String MESSAGE_EDIT_MISSING_FIELD \u003d \"Failed to edit Pooch Contact - \"","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"jamessinmaojun"},"content":" + \"Edit requires a field prefix. %1$s \\uD83D\\uDC3E\";","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"jamessinmaojun"},"content":" public static final String MESSAGE_EDIT_MISSING_NAME \u003d \"Failed to edit Pooch Contact - \"","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"jamessinmaojun"},"content":" + \"Edit requires a name field. %1$s \\uD83D\\uDC3E\";","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"jamessinmaojun"},"content":" public static final String MESSAGE_EDIT_INVALID_NAME \u003d \"Failed to edit Pooch Contact. %1$s \\uD83D\\uDC3E\";","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"jamessinmaojun"},"content":" public static final String MESSAGE_EDITING_NAME \u003d \"Failed to edit Pooch Contact.\"","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"jamessinmaojun"},"content":" + \"Editing Pooch Contact names is not allowed %1$s \\uD83D\\uDC3E\";","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"jamessinmaojun"},"content":" public static final String MESSAGE_EDIT_INVALID_FIELD \u003d \"Failed to edit Pooch Contact - \"","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"jamessinmaojun"},"content":" + \"%1$s \\uD83D\\uDC3E\";","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"jamessinmaojun"},"content":" public static final String MESSAGE_EDIT_NO_DIFFERENCE \u003d \"Failed to edit Pooch Contact - \"","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"jamessinmaojun"},"content":" + \"No difference detected!\";","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"jamessinmaojun"},"content":" public static final String MESSAGE_INVALID_EDIT_PERSON \u003d \"Name does not exist in our address book \\uD83D\\uDC3E\"","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"jamessinmaojun"},"content":" + \"Make sure that you are attempting to edit OTHER.\";","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"jamessinmaojun"},"content":" public static final String MESSAGE_INVALID_EDIT_STAFF \u003d \"Name does not exist in our address book \\uD83D\\uDC3E\"","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"jamessinmaojun"},"content":" + \"Make sure that you are attempting to edit STAFF.\";","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"jamessinmaojun"},"content":" public static final String MESSAGE_INVALID_EDIT_MAINTAINER \u003d \"Name does not exist in our address book \\uD83D\\uDC3E\"","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"jamessinmaojun"},"content":" + \" Make sure that you are attempting to edit MAINTAINER.\";","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"jamessinmaojun"},"content":" public static final String MESSAGE_INVALID_EDIT_SUPPLIER \u003d \"Name does not exist in our address book \\uD83D\\uDC3E\"","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"jamessinmaojun"},"content":" + \" Make sure that you are attempting to edit SUPPLIER.\";","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"jamessinmaojun"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"jamessinmaojun"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"jamessinmaojun"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"jamessinmaojun"},"content":" public static String format(Person person) {","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"jamessinmaojun"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"jamessinmaojun"},"content":" if (person instanceof Staff) {","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"jamessinmaojun"},"content":" builder.append(\"Pooch Staff \");","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"jamessinmaojun"},"content":" } else if (person instanceof Supplier) {","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"jamessinmaojun"},"content":" builder.append(\"Supplier \");","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"jamessinmaojun"},"content":" } else if (person instanceof Maintainer) {","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"jamessinmaojun"},"content":" builder.append(\"Maintenance Crew \");","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"jamessinmaojun"},"content":" } else {","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"jamessinmaojun"},"content":" builder.append(\"Other Contact \");","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"jamessinmaojun"},"content":" builder.append(person.getName());","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"jamessinmaojun"},"content":" return builder.toString();","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"jamessinmaojun"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"jamessinmaojun":52}},{"path":"src/main/java/seedu/address/logic/messages/HelpMessages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jamessinmaojun"},"content":"package seedu.address.logic.messages;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"jamessinmaojun"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"jamessinmaojun"},"content":" * Container for user delete command visible messages.","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"jamessinmaojun"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"jamessinmaojun"},"content":"public class HelpMessages extends Messages {","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"jamessinmaojun"},"content":" public static final String MESSAGES_SHOWING_HELP_MESSAGE \u003d \"Opened help window.\";","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"jamessinmaojun"},"content":" public static final String MESSAGES_SHOWING_DELETE_HELP_MESSAGE \u003d \"Opened help window for delete command.\";","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"jamessinmaojun"},"content":" public static final String MESSAGES_SHOWING_EDIT_HELP_MESSAGE \u003d \"Opened help window for edit command.\";","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"jamessinmaojun"},"content":" public static final String MESSAGES_SHOWING_ADD_MAINTAINER_HELP_MESSAGE \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"jamessinmaojun"},"content":" \"Opened help window for pooch-maintenance command.\";","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"jamessinmaojun"},"content":" public static final String MESSAGES_SHOWING_ADD_STAFF_HELP_MESSAGE \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"jamessinmaojun"},"content":" \"Opened help window for pooch-staff command.\";","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"jamessinmaojun"},"content":" public static final String MESSAGES_SHOWING_ADD_SUPPLIER_HELP_MESSAGE \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"jamessinmaojun"},"content":" \"Opened help window for pooch-supplier command.\";","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"jamessinmaojun"},"content":" public static final String MESSAGES_SHOWING_SEARCH_HELP_MESSAGE \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"jamessinmaojun"},"content":" \"Opened help window for search command.\";","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"jamessinmaojun"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"jamessinmaojun":18}},{"path":"src/main/java/seedu/address/logic/messages/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jamessinmaojun"},"content":"package seedu.address.logic.messages;","lastModifiedDate":"2024-03-18"},{"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":"2024-03-18"},{"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":"jamessinmaojun"},"content":" public static final String MESSAGE_EXTRA_FIELDS \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"jamessinmaojun"},"content":" \"%1$s does not contain the following field(s): %2$s\";","lastModifiedDate":"2024-03-20"},{"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":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":" person.getTags().forEach(builder::append);","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"jamessinmaojun":3,"-":48}},{"path":"src/main/java/seedu/address/logic/messages/NoteMessages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jamessinmaojun"},"content":"package seedu.address.logic.messages;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"jamessinmaojun"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"jamessinmaojun"},"content":" * Container for user delete command visible messages.","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"jamessinmaojun"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"jamessinmaojun"},"content":"public class NoteMessages extends Messages {","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"jamessinmaojun"},"content":" public static final String MESSAGE_ADD_NOTE_SUCCESS \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"jamessinmaojun"},"content":" \"Woof! Added note to Pooch Contact %1$s successfully! \\uD83D\\uDC36\";","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"jamessinmaojun"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"jamessinmaojun":9}},{"path":"src/main/java/seedu/address/logic/messages/SearchMessages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jamessinmaojun"},"content":"package seedu.address.logic.messages;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"jamessinmaojun"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"jamessinmaojun"},"content":" * Container for user delete command visible messages.","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"jamessinmaojun"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"jamessinmaojun"},"content":"public class SearchMessages extends Messages {","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"jamessinmaojun"},"content":" public static final String MESSAGE_SEARCH_PERSON_SUCCESS \u003d \"Woof! %1$s contacts found! \\uD83D\\uDC36\";","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"jamessinmaojun"},"content":" public static final String MESSAGE_SEARCH_MISSING_FIELD \u003d \"Failed to find Pooch Contact - \"","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"jamessinmaojun"},"content":" + \"Search requires a name / phone / address / email / product / employment field. \\uD83D\\uDC3E\";","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"jamessinmaojun"},"content":" public static final String MESSAGE_SEARCH_INVALID_FIELD \u003d \"Failed to find Pooch Contact - \"","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"jamessinmaojun"},"content":" + \"Pooch doesn\u0027t recognise the field \\uD83D\\uDC3E\";","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"jamessinmaojun"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"jamessinmaojun":12}},{"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":"jamessinmaojun"},"content":"import static seedu.address.logic.messages.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-08"},{"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":"jannaleong"},"content":"import seedu.address.model.person.Note;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-03-17"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-03-17"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05"},{"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-02-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":34,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":35,"author":{"gitId":"chiageng"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2024-03-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":37,"author":{"gitId":"-"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL)","lastModifiedDate":"2024-03-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":42,"author":{"gitId":"-"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-07-14"},{"lineNumber":43,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":44,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":46,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":47,"author":{"gitId":"jannaleong"},"content":" Note note \u003d new Note(\"\");","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":" Tag tag \u003d new Tag(\"other\");","lastModifiedDate":"2024-03-08"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":" Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-08"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":" tags.add(tag);","lastModifiedDate":"2024-03-08"},{"lineNumber":51,"author":{"gitId":"jannaleong"},"content":" Person person \u003d new Person(name, phone, email, address, note, tags);","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17"},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":60,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":64,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"jamessinmaojun":1,"chiageng":5,"jannaleong":3,"-":55}},{"path":"src/main/java/seedu/address/logic/parser/AddMaintainerCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chiageng"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-08"},{"lineNumber":2,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":3,"author":{"gitId":"jamessinmaojun"},"content":"import static seedu.address.logic.messages.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-09"},{"lineNumber":5,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COMMISSION;","lastModifiedDate":"2024-03-09"},{"lineNumber":6,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-09"},{"lineNumber":7,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-09"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SKILL;","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-08"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-08"},{"lineNumber":13,"author":{"gitId":"chiageng"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-08"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":"import seedu.address.logic.commands.AddMaintainerCommand;","lastModifiedDate":"2024-03-09"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-09"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-09"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Commission;","lastModifiedDate":"2024-03-09"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-09"},{"lineNumber":20,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Maintainer;","lastModifiedDate":"2024-03-09"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-09"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-09"},{"lineNumber":23,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Skill;","lastModifiedDate":"2024-03-09"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-09"},{"lineNumber":25,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":26,"author":{"gitId":"chiageng"},"content":"/**","lastModifiedDate":"2024-03-08"},{"lineNumber":27,"author":{"gitId":"chiageng"},"content":" * Parses input arguments and creates a new AddStaffCommand object","lastModifiedDate":"2024-03-08"},{"lineNumber":28,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":29,"author":{"gitId":"chiageng"},"content":"public class AddMaintainerCommandParser implements Parser\u003cAddMaintainerCommand\u003e {","lastModifiedDate":"2024-03-08"},{"lineNumber":30,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":31,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-08"},{"lineNumber":32,"author":{"gitId":"chiageng"},"content":" * Parses the given {@code String} of arguments in the context of the AddStaffCommand","lastModifiedDate":"2024-03-08"},{"lineNumber":33,"author":{"gitId":"chiageng"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2024-03-08"},{"lineNumber":34,"author":{"gitId":"chiageng"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-08"},{"lineNumber":35,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":36,"author":{"gitId":"chiageng"},"content":" public AddMaintainerCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-08"},{"lineNumber":37,"author":{"gitId":"chiageng"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-03-08"},{"lineNumber":38,"author":{"gitId":"chiageng"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-03-08"},{"lineNumber":39,"author":{"gitId":"chiageng"},"content":" PREFIX_SKILL, PREFIX_COMMISSION);","lastModifiedDate":"2024-03-08"},{"lineNumber":40,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":41,"author":{"gitId":"chiageng"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-03-08"},{"lineNumber":42,"author":{"gitId":"chiageng"},"content":" PREFIX_SKILL, PREFIX_COMMISSION)","lastModifiedDate":"2024-03-08"},{"lineNumber":43,"author":{"gitId":"chiageng"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-03-08"},{"lineNumber":44,"author":{"gitId":"chiageng"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddMaintainerCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-08"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":46,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-03-08"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":" PREFIX_SKILL, PREFIX_COMMISSION);","lastModifiedDate":"2024-03-08"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2024-03-08"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2024-03-08"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2024-03-08"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2024-03-08"},{"lineNumber":53,"author":{"gitId":"chiageng"},"content":" Tag tag \u003d new Tag(\"maintainer\");","lastModifiedDate":"2024-03-08"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":" Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-08"},{"lineNumber":55,"author":{"gitId":"chiageng"},"content":" tags.add(tag);","lastModifiedDate":"2024-03-08"},{"lineNumber":56,"author":{"gitId":"chiageng"},"content":" Skill skill \u003d ParserUtil.parseSkill(argMultimap.getValue(PREFIX_SKILL).get());","lastModifiedDate":"2024-03-08"},{"lineNumber":57,"author":{"gitId":"chiageng"},"content":" Commission commission \u003d ParserUtil.parseCommission(argMultimap.getValue(PREFIX_COMMISSION).get());","lastModifiedDate":"2024-03-08"},{"lineNumber":58,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":59,"author":{"gitId":"chiageng"},"content":" Maintainer person \u003d new Maintainer(name, phone, email, address, tags, skill, commission);","lastModifiedDate":"2024-03-08"},{"lineNumber":60,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":61,"author":{"gitId":"chiageng"},"content":" return new AddMaintainerCommand(person);","lastModifiedDate":"2024-03-08"},{"lineNumber":62,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":63,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":64,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-08"},{"lineNumber":65,"author":{"gitId":"chiageng"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-03-08"},{"lineNumber":66,"author":{"gitId":"chiageng"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-03-08"},{"lineNumber":67,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":68,"author":{"gitId":"chiageng"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-03-08"},{"lineNumber":69,"author":{"gitId":"chiageng"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-03-08"},{"lineNumber":70,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":71,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":72,"author":{"gitId":"chiageng"},"content":"}","lastModifiedDate":"2024-03-08"}],"authorContributionMap":{"chiageng":71,"jamessinmaojun":1}},{"path":"src/main/java/seedu/address/logic/parser/AddStaffCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chiageng"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-08"},{"lineNumber":2,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":3,"author":{"gitId":"jamessinmaojun"},"content":"import static seedu.address.logic.messages.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-09"},{"lineNumber":5,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-09"},{"lineNumber":6,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMPLOYMENT;","lastModifiedDate":"2024-03-09"},{"lineNumber":7,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-09"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SALARY;","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-09"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-08"},{"lineNumber":13,"author":{"gitId":"chiageng"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-08"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-08"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":"import seedu.address.logic.commands.AddStaffCommand;","lastModifiedDate":"2024-03-09"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-09"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-09"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-09"},{"lineNumber":20,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Employment;","lastModifiedDate":"2024-03-09"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-09"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-09"},{"lineNumber":23,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Salary;","lastModifiedDate":"2024-03-09"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Staff;","lastModifiedDate":"2024-03-09"},{"lineNumber":25,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-09"},{"lineNumber":26,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":27,"author":{"gitId":"chiageng"},"content":"/**","lastModifiedDate":"2024-03-08"},{"lineNumber":28,"author":{"gitId":"chiageng"},"content":" * Parses input arguments and creates a new AddStaffCommand object","lastModifiedDate":"2024-03-08"},{"lineNumber":29,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":30,"author":{"gitId":"chiageng"},"content":"public class AddStaffCommandParser implements Parser\u003cAddStaffCommand\u003e {","lastModifiedDate":"2024-03-08"},{"lineNumber":31,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":32,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-08"},{"lineNumber":33,"author":{"gitId":"chiageng"},"content":" * Parses the given {@code String} of arguments in the context of the AddStaffCommand","lastModifiedDate":"2024-03-08"},{"lineNumber":34,"author":{"gitId":"chiageng"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2024-03-08"},{"lineNumber":35,"author":{"gitId":"chiageng"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-08"},{"lineNumber":36,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":37,"author":{"gitId":"chiageng"},"content":" public AddStaffCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-08"},{"lineNumber":38,"author":{"gitId":"chiageng"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-03-08"},{"lineNumber":39,"author":{"gitId":"chiageng"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG,","lastModifiedDate":"2024-03-08"},{"lineNumber":40,"author":{"gitId":"chiageng"},"content":" PREFIX_SALARY, PREFIX_EMPLOYMENT);","lastModifiedDate":"2024-03-08"},{"lineNumber":41,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":42,"author":{"gitId":"chiageng"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-03-08"},{"lineNumber":43,"author":{"gitId":"chiageng"},"content":" PREFIX_EMPLOYMENT, PREFIX_SALARY)","lastModifiedDate":"2024-03-08"},{"lineNumber":44,"author":{"gitId":"chiageng"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-03-08"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddStaffCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-08"},{"lineNumber":46,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-03-08"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":" PREFIX_SALARY, PREFIX_EMPLOYMENT);","lastModifiedDate":"2024-03-08"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2024-03-08"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2024-03-08"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2024-03-08"},{"lineNumber":53,"author":{"gitId":"chiageng"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2024-03-08"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":" Tag tag \u003d new Tag(\"staff\");","lastModifiedDate":"2024-03-08"},{"lineNumber":55,"author":{"gitId":"chiageng"},"content":" Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-08"},{"lineNumber":56,"author":{"gitId":"chiageng"},"content":" tags.add(tag);","lastModifiedDate":"2024-03-08"},{"lineNumber":57,"author":{"gitId":"chiageng"},"content":" Employment employment \u003d ParserUtil.parseEmployment(argMultimap.getValue(PREFIX_EMPLOYMENT).get());","lastModifiedDate":"2024-03-08"},{"lineNumber":58,"author":{"gitId":"chiageng"},"content":" Salary salary \u003d ParserUtil.parseSalary(argMultimap.getValue(PREFIX_SALARY).get());","lastModifiedDate":"2024-03-08"},{"lineNumber":59,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":60,"author":{"gitId":"chiageng"},"content":" Staff person \u003d new Staff(name, phone, email, address, tags, salary, employment);","lastModifiedDate":"2024-03-08"},{"lineNumber":61,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":62,"author":{"gitId":"chiageng"},"content":" return new AddStaffCommand(person);","lastModifiedDate":"2024-03-08"},{"lineNumber":63,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":64,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":65,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-08"},{"lineNumber":66,"author":{"gitId":"chiageng"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-03-08"},{"lineNumber":67,"author":{"gitId":"chiageng"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-03-08"},{"lineNumber":68,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":69,"author":{"gitId":"chiageng"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-03-08"},{"lineNumber":70,"author":{"gitId":"chiageng"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-03-08"},{"lineNumber":71,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":72,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":73,"author":{"gitId":"chiageng"},"content":"}","lastModifiedDate":"2024-03-08"}],"authorContributionMap":{"chiageng":72,"jamessinmaojun":1}},{"path":"src/main/java/seedu/address/logic/parser/AddSupplierCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chiageng"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-08"},{"lineNumber":2,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":3,"author":{"gitId":"jamessinmaojun"},"content":"import static seedu.address.logic.messages.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-09"},{"lineNumber":5,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-09"},{"lineNumber":6,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-09"},{"lineNumber":7,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-09"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PRICE;","lastModifiedDate":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PRODUCT;","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-08"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-08"},{"lineNumber":13,"author":{"gitId":"chiageng"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-08"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":"import seedu.address.logic.commands.AddSupplierCommand;","lastModifiedDate":"2024-03-09"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-09"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-09"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-09"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-09"},{"lineNumber":20,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-09"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Price;","lastModifiedDate":"2024-03-09"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Product;","lastModifiedDate":"2024-03-09"},{"lineNumber":23,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Supplier;","lastModifiedDate":"2024-03-09"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-09"},{"lineNumber":25,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":26,"author":{"gitId":"chiageng"},"content":"/**","lastModifiedDate":"2024-03-08"},{"lineNumber":27,"author":{"gitId":"chiageng"},"content":" * Parses input arguments and creates a new AddStaffCommand object","lastModifiedDate":"2024-03-08"},{"lineNumber":28,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":29,"author":{"gitId":"chiageng"},"content":"public class AddSupplierCommandParser implements Parser\u003cAddSupplierCommand\u003e {","lastModifiedDate":"2024-03-08"},{"lineNumber":30,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":31,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-08"},{"lineNumber":32,"author":{"gitId":"chiageng"},"content":" * Parses the given {@code String} of arguments in the context of the AddStaffCommand","lastModifiedDate":"2024-03-08"},{"lineNumber":33,"author":{"gitId":"chiageng"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2024-03-08"},{"lineNumber":34,"author":{"gitId":"chiageng"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-08"},{"lineNumber":35,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":36,"author":{"gitId":"chiageng"},"content":" public AddSupplierCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-08"},{"lineNumber":37,"author":{"gitId":"chiageng"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-03-08"},{"lineNumber":38,"author":{"gitId":"chiageng"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-03-08"},{"lineNumber":39,"author":{"gitId":"chiageng"},"content":" PREFIX_PRODUCT, PREFIX_PRICE);","lastModifiedDate":"2024-03-08"},{"lineNumber":40,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":41,"author":{"gitId":"chiageng"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-03-08"},{"lineNumber":42,"author":{"gitId":"chiageng"},"content":" PREFIX_PRODUCT, PREFIX_PRICE)","lastModifiedDate":"2024-03-08"},{"lineNumber":43,"author":{"gitId":"chiageng"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-03-08"},{"lineNumber":44,"author":{"gitId":"chiageng"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddSupplierCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-08"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":46,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-03-08"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":" PREFIX_PRODUCT, PREFIX_PRICE);","lastModifiedDate":"2024-03-08"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2024-03-08"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2024-03-08"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2024-03-08"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2024-03-08"},{"lineNumber":53,"author":{"gitId":"chiageng"},"content":" Tag tag \u003d new Tag(\"supplier\");","lastModifiedDate":"2024-03-08"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":" Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-08"},{"lineNumber":55,"author":{"gitId":"chiageng"},"content":" tags.add(tag);","lastModifiedDate":"2024-03-08"},{"lineNumber":56,"author":{"gitId":"chiageng"},"content":" Price price \u003d ParserUtil.parsePrice(argMultimap.getValue(PREFIX_PRICE).get());","lastModifiedDate":"2024-03-08"},{"lineNumber":57,"author":{"gitId":"chiageng"},"content":" Product product \u003d ParserUtil.parseProduct(argMultimap.getValue(PREFIX_PRODUCT).get());","lastModifiedDate":"2024-03-08"},{"lineNumber":58,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":59,"author":{"gitId":"chiageng"},"content":" Supplier person \u003d new Supplier(name, phone, email, address, tags, product, price);","lastModifiedDate":"2024-03-08"},{"lineNumber":60,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":61,"author":{"gitId":"chiageng"},"content":" return new AddSupplierCommand(person);","lastModifiedDate":"2024-03-08"},{"lineNumber":62,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":63,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":64,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-08"},{"lineNumber":65,"author":{"gitId":"chiageng"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-03-08"},{"lineNumber":66,"author":{"gitId":"chiageng"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-03-08"},{"lineNumber":67,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":68,"author":{"gitId":"chiageng"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-03-08"},{"lineNumber":69,"author":{"gitId":"chiageng"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-03-08"},{"lineNumber":70,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":71,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":72,"author":{"gitId":"chiageng"},"content":"}","lastModifiedDate":"2024-03-08"}],"authorContributionMap":{"chiageng":71,"jamessinmaojun":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":"jamessinmaojun"},"content":"import static seedu.address.logic.messages.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"jamessinmaojun"},"content":"import static seedu.address.logic.messages.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2024-03-18"},{"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":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"Joshy837"},"content":"import seedu.address.logic.commands.AddMaintainerCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"Joshy837"},"content":"import seedu.address.logic.commands.AddStaffCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"Joshy837"},"content":"import seedu.address.logic.commands.AddSupplierCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"Joshy837"},"content":"import seedu.address.logic.commands.EditMaintainerCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"Joshy837"},"content":"import seedu.address.logic.commands.EditStaffCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"Joshy837"},"content":"import seedu.address.logic.commands.EditSupplierCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"Joshy837"},"content":"import seedu.address.logic.commands.HelpDeleteCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"Joshy837"},"content":"import seedu.address.logic.commands.HelpEditCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"Joshy837"},"content":"import seedu.address.logic.commands.HelpPoochMaintenanceCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"Joshy837"},"content":"import seedu.address.logic.commands.HelpPoochStaffCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"Joshy837"},"content":"import seedu.address.logic.commands.HelpPoochSupplierCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"Joshy837"},"content":"import seedu.address.logic.commands.HelpSearchCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"jannaleong"},"content":"import seedu.address.logic.commands.NoteCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"jannaleong"},"content":"import seedu.address.logic.commands.SearchCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22"},{"lineNumber":45,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":55,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":63,"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":64,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29"},{"lineNumber":66,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":68,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":73,"author":{"gitId":"chiageng"},"content":" case AddStaffCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-08"},{"lineNumber":74,"author":{"gitId":"chiageng"},"content":" return new AddStaffCommandParser().parse(arguments);","lastModifiedDate":"2024-03-08"},{"lineNumber":75,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":76,"author":{"gitId":"chiageng"},"content":" case AddSupplierCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-08"},{"lineNumber":77,"author":{"gitId":"chiageng"},"content":" return new AddSupplierCommandParser().parse(arguments);","lastModifiedDate":"2024-03-08"},{"lineNumber":78,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":79,"author":{"gitId":"chiageng"},"content":" case AddMaintainerCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-08"},{"lineNumber":80,"author":{"gitId":"chiageng"},"content":" return new AddMaintainerCommandParser().parse(arguments);","lastModifiedDate":"2024-03-08"},{"lineNumber":81,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":85,"author":{"gitId":"yleeyilin"},"content":" case EditStaffCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"yleeyilin"},"content":" return new EditStaffCommandParser().parse(arguments);","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":88,"author":{"gitId":"yleeyilin"},"content":" case EditSupplierCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"yleeyilin"},"content":" return new EditSupplierCommandParser().parse(arguments);","lastModifiedDate":"2024-03-17"},{"lineNumber":90,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"yleeyilin"},"content":" case EditMaintainerCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"yleeyilin"},"content":" return new EditMaintainerCommandParser().parse(arguments);","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":95,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":97,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":98,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":101,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":103,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":104,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":106,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24"},{"lineNumber":107,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":109,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26"},{"lineNumber":110,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":112,"author":{"gitId":"jannaleong"},"content":" case HelpPoochStaffCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-11"},{"lineNumber":113,"author":{"gitId":"jannaleong"},"content":" return new HelpPoochStaffCommand();","lastModifiedDate":"2024-03-11"},{"lineNumber":114,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":115,"author":{"gitId":"jannaleong"},"content":" case HelpPoochSupplierCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-11"},{"lineNumber":116,"author":{"gitId":"jannaleong"},"content":" return new HelpPoochSupplierCommand();","lastModifiedDate":"2024-03-11"},{"lineNumber":117,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":118,"author":{"gitId":"jannaleong"},"content":" case HelpPoochMaintenanceCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-11"},{"lineNumber":119,"author":{"gitId":"jannaleong"},"content":" return new HelpPoochMaintenanceCommand();","lastModifiedDate":"2024-03-11"},{"lineNumber":120,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":121,"author":{"gitId":"jannaleong"},"content":" case HelpSearchCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-11"},{"lineNumber":122,"author":{"gitId":"jannaleong"},"content":" return new HelpSearchCommand();","lastModifiedDate":"2024-03-11"},{"lineNumber":123,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":124,"author":{"gitId":"jannaleong"},"content":" case HelpDeleteCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-11"},{"lineNumber":125,"author":{"gitId":"jannaleong"},"content":" return new HelpDeleteCommand();","lastModifiedDate":"2024-03-11"},{"lineNumber":126,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":127,"author":{"gitId":"jannaleong"},"content":" case HelpEditCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-11"},{"lineNumber":128,"author":{"gitId":"jannaleong"},"content":" return new HelpEditCommand();","lastModifiedDate":"2024-03-11"},{"lineNumber":129,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":130,"author":{"gitId":"Joshy837"},"content":" case SearchCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-16"},{"lineNumber":131,"author":{"gitId":"Joshy837"},"content":" return new SearchCommandParser().parse(arguments);","lastModifiedDate":"2024-03-16"},{"lineNumber":132,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":133,"author":{"gitId":"jannaleong"},"content":" case NoteCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-18"},{"lineNumber":134,"author":{"gitId":"jannaleong"},"content":" return new NoteCommandParser().parse(arguments);","lastModifiedDate":"2024-03-18"},{"lineNumber":135,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":136,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26"},{"lineNumber":137,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29"},{"lineNumber":138,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":142,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"Joshy837":15,"jamessinmaojun":2,"chiageng":9,"jannaleong":23,"-":84,"yleeyilin":9}},{"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":"jamessinmaojun"},"content":"import seedu.address.logic.messages.Messages;","lastModifiedDate":"2024-03-18"},{"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":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"Joshy837"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"Joshy837"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"Joshy837"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"Joshy837"},"content":" return true;","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"Joshy837"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"Joshy837"},"content":" if (!(other instanceof ArgumentMultimap)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"Joshy837"},"content":" return false;","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"Joshy837"},"content":" ArgumentMultimap otherArgumentMultimap \u003d (ArgumentMultimap) other;","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"Joshy837"},"content":" return argMultimap.equals(otherArgumentMultimap.argMultimap);","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"yleeyilin"},"content":" * Returns a string implementation of Argument Multi Map","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"yleeyilin"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"yleeyilin"},"content":" public String toString() {","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"yleeyilin"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"yleeyilin"},"content":" sb.append(\"ArgumentMultimap{\");","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"yleeyilin"},"content":" for (Map.Entry\u003cPrefix, List\u003cString\u003e\u003e entry : argMultimap.entrySet()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"yleeyilin"},"content":" sb.append(entry.getKey()).append(\"\u003d\").append(entry.getValue()).append(\", \");","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"yleeyilin"},"content":" if (!argMultimap.isEmpty()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"yleeyilin"},"content":" sb.setLength(sb.length() - 2);","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":109,"author":{"gitId":"yleeyilin"},"content":" sb.append(\"}\");","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"yleeyilin"},"content":" return sb.toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-08"}],"authorContributionMap":{"Joshy837":15,"jamessinmaojun":1,"-":77,"yleeyilin":19}},{"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":"chiageng"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"; name : \");","lastModifiedDate":"2024-03-08"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"; phone : \");","lastModifiedDate":"2024-03-08"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"; email : \");","lastModifiedDate":"2024-03-08"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"; address : \");","lastModifiedDate":"2024-03-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":" public static final Prefix PREFIX_EMPLOYMENT \u003d new Prefix(\"; employment : \");","lastModifiedDate":"2024-03-08"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":" public static final Prefix PREFIX_SALARY \u003d new Prefix(\"; salary : \");","lastModifiedDate":"2024-03-08"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":" public static final Prefix PREFIX_PRODUCT \u003d new Prefix(\"; product : \");","lastModifiedDate":"2024-03-08"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":" public static final Prefix PREFIX_PRICE \u003d new Prefix(\"; price : \");","lastModifiedDate":"2024-03-08"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":" public static final Prefix PREFIX_SKILL \u003d new Prefix(\"; skill : \");","lastModifiedDate":"2024-03-08"},{"lineNumber":20,"author":{"gitId":"chiageng"},"content":" public static final Prefix PREFIX_COMMISSION \u003d new Prefix(\"; commission : \");","lastModifiedDate":"2024-03-08"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":22,"author":{"gitId":"yleeyilin"},"content":" public static final Prefix PREFIX_FIELD \u003d new Prefix(\"; field : \");","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":" public static final Prefix PREFIX_NOTE \u003d new Prefix(\"; note : \");","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"Joshy837"},"content":" public static final Prefix[] PREFIX_COLLECTION \u003d new Prefix[] {","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"Joshy837"},"content":" PREFIX_NAME,","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"Joshy837"},"content":" PREFIX_PHONE,","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"Joshy837"},"content":" PREFIX_EMAIL,","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"Joshy837"},"content":" PREFIX_ADDRESS,","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"Joshy837"},"content":" PREFIX_TAG,","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"Joshy837"},"content":" PREFIX_SALARY,","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"Joshy837"},"content":" PREFIX_EMPLOYMENT,","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"Joshy837"},"content":" PREFIX_PRICE,","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"Joshy837"},"content":" PREFIX_PRODUCT,","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"Joshy837"},"content":" PREFIX_SKILL,","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"Joshy837"},"content":" PREFIX_COMMISSION,","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"Joshy837"},"content":" PREFIX_NOTE};","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"Joshy837":14,"chiageng":11,"jannaleong":1,"-":11,"yleeyilin":1}},{"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":"jamessinmaojun"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"jamessinmaojun"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"jamessinmaojun"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"jamessinmaojun"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":8,"author":{"gitId":"jamessinmaojun"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":11,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.DeleteMessages;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":13,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new DeleteCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class DeleteCommandParser implements Parser\u003cDeleteCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * and returns a DeleteCommand object for execution.","lastModifiedDate":"2019-05-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public DeleteCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":26,"author":{"gitId":"jamessinmaojun"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_NAME);","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"jamessinmaojun"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME) || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"jamessinmaojun"},"content":" throw new ParseException(String.format(DeleteMessages.MESSAGE_DELETE_MISSING_NAME,","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"jamessinmaojun"},"content":" DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":32,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"jamessinmaojun"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"jamessinmaojun"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"jamessinmaojun"},"content":" return new DeleteCommand(name);","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":39,"author":{"gitId":"jamessinmaojun"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"jamessinmaojun"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"jamessinmaojun"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"jamessinmaojun"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"jamessinmaojun"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"jamessinmaojun"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"jamessinmaojun":24,"-":22}},{"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":"jamessinmaojun"},"content":"import static seedu.address.logic.messages.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-18"},{"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":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FIELD;","lastModifiedDate":"2024-03-17"},{"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":"","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":"yleeyilin"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-17"},{"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":"yleeyilin"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"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":"jamessinmaojun"},"content":"import seedu.address.logic.messages.EditMessages;","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":22,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":36,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":38,"author":{"gitId":"yleeyilin"},"content":" Name name;","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"yleeyilin"},"content":" String fieldArgs;","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"yleeyilin"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_FIELD);","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"jamessinmaojun"},"content":" // check for missing name","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"jamessinmaojun"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"jamessinmaojun"},"content":" throw new ParseException(String.format(EditMessages.MESSAGE_EDIT_MISSING_NAME,","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"jamessinmaojun"},"content":" EditCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"yleeyilin"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_FIELD)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"jamessinmaojun"},"content":" throw new ParseException(String.format(EditMessages.MESSAGE_EDIT_MISSING_FIELD,","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"jamessinmaojun"},"content":" EditCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"yleeyilin"},"content":" name \u003d mapName(argMultimap);","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"yleeyilin"},"content":" fieldArgs \u003d mapFields(argMultimap);","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":58,"author":{"gitId":"yleeyilin"},"content":" ArgumentMultimap fieldArgMultimap \u003d","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"yleeyilin"},"content":" ArgumentTokenizer.tokenize(fieldArgs, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"yleeyilin"},"content":" fieldArgMultimap.verifyNoDuplicatePrefixesFor(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"jamessinmaojun"},"content":" EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"jamessinmaojun"},"content":" editPersonDescriptor \u003d editPersonDescription(fieldArgMultimap);","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"jamessinmaojun"},"content":" throw new ParseException(String.format(EditMessages.MESSAGE_EDIT_INVALID_FIELD, pe.getMessage()));","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"yleeyilin"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"jamessinmaojun"},"content":" throw new ParseException(EditMessages.MESSAGE_EDIT_EMPTY_FIELD);","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"yleeyilin"},"content":" Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"yleeyilin"},"content":" tags.add(new Tag(\"other\"));","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"yleeyilin"},"content":" editPersonDescriptor.setTags(tags);","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":78,"author":{"gitId":"yleeyilin"},"content":" return new EditCommand(name, editPersonDescriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":80,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"yleeyilin"},"content":" * Returns name value using PREFIX.","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"yleeyilin"},"content":" * @param argMultimap Object that contains mapping of prefix to value.","lastModifiedDate":"2024-03-19"},{"lineNumber":84,"author":{"gitId":"yleeyilin"},"content":" * @return Returns object representing name.","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"yleeyilin"},"content":" * @throws ParseException Thrown when command is in invalid format.","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"yleeyilin"},"content":" public Name mapName(ArgumentMultimap argMultimap) throws ParseException {","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"yleeyilin"},"content":" try {","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"yleeyilin"},"content":" return ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"yleeyilin"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-19"},{"lineNumber":91,"author":{"gitId":"jamessinmaojun"},"content":" throw new ParseException(String.format(EditMessages.MESSAGE_EDIT_INVALID_NAME, pe.getMessage()));","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":95,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"yleeyilin"},"content":" * Returns field values using PREFIX.","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"yleeyilin"},"content":" * @param argMultimap Object that contains mapping of prefix to value.","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"yleeyilin"},"content":" * @return Returns object representing the respective fields.","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"yleeyilin"},"content":" * @throws ParseException Thrown when command is in invalid format.","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"yleeyilin"},"content":" public String mapFields(ArgumentMultimap argMultimap) throws ParseException {","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"yleeyilin"},"content":" try {","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"yleeyilin"},"content":" return ParserUtil.parseField(argMultimap.getValue(PREFIX_FIELD).get());","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"yleeyilin"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"yleeyilin"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-03-19"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":107,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":108,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":110,"author":{"gitId":"yleeyilin"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"yleeyilin"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":113,"author":{"gitId":"yleeyilin"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"yleeyilin"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-03-18"},{"lineNumber":115,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"yleeyilin"},"content":" * Edits the description of a Person.","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"yleeyilin"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"yleeyilin"},"content":" * @param fieldArgMultimap The mapping of field arguments into different specific fields.","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"yleeyilin"},"content":" * @return EditPersonDescriptor that contains the new values from the user.","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"yleeyilin"},"content":" * @throws ParseException Indicates the invalid format that users might have entered.","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"yleeyilin"},"content":" private EditPersonDescriptor editPersonDescription(ArgumentMultimap fieldArgMultimap) throws ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"yleeyilin"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"yleeyilin"},"content":" if (fieldArgMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"yleeyilin"},"content":" editPersonDescriptor.setPhone(ParserUtil.parsePhone(fieldArgMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2024-03-17"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":130,"author":{"gitId":"yleeyilin"},"content":" if (fieldArgMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"yleeyilin"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(fieldArgMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":133,"author":{"gitId":"yleeyilin"},"content":" if (fieldArgMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"yleeyilin"},"content":" editPersonDescriptor.setAddress(ParserUtil.parseAddress(fieldArgMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2024-03-17"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":137,"author":{"gitId":"yleeyilin"},"content":" return editPersonDescriptor;","lastModifiedDate":"2024-03-17"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":140,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":141,"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":142,"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":143,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07"},{"lineNumber":144,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":145,"author":{"gitId":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":146,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":148,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":149,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":151,"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":152,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":155,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"jamessinmaojun":16,"-":67,"yleeyilin":72}},{"path":"src/main/java/seedu/address/logic/parser/EditMaintainerCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yleeyilin"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"yleeyilin"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"jamessinmaojun"},"content":"import static seedu.address.logic.messages.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COMMISSION;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FIELD;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SKILL;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"yleeyilin"},"content":"import java.util.Collection;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"yleeyilin"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"yleeyilin"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"yleeyilin"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"yleeyilin"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"yleeyilin"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.logic.commands.EditMaintainerCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.logic.commands.EditMaintainerCommand.EditMaintainerDescriptor;","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.EditMessages;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"yleeyilin"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"yleeyilin"},"content":" * Parses input arguments and creates a new EditMaintainerCommand object","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"yleeyilin"},"content":"public class EditMaintainerCommandParser implements Parser\u003cEditMaintainerCommand\u003e {","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"yleeyilin"},"content":" * Parses the given {@code String} of arguments in the context of the EditMaintainerCommand","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"yleeyilin"},"content":" * and returns an EditMaintainerCommand object for execution.","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"yleeyilin"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"yleeyilin"},"content":" public EditMaintainerCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"yleeyilin"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"yleeyilin"},"content":" Name name;","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"yleeyilin"},"content":" String fieldArgs;","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"yleeyilin"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_FIELD);","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"jamessinmaojun"},"content":" // check for missing name","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"jamessinmaojun"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"jamessinmaojun"},"content":" throw new ParseException(String.format(EditMessages.MESSAGE_EDIT_MISSING_NAME,","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"jamessinmaojun"},"content":" EditMaintainerCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"yleeyilin"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_FIELD)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"jamessinmaojun"},"content":" throw new ParseException(String.format(EditMessages.MESSAGE_EDIT_MISSING_FIELD,","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"yleeyilin"},"content":" EditMaintainerCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"yleeyilin"},"content":" name \u003d mapName(argMultimap);","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"yleeyilin"},"content":" fieldArgs \u003d mapFields(argMultimap);","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"yleeyilin"},"content":" ArgumentMultimap fieldArgMultimap \u003d ArgumentTokenizer.tokenize(fieldArgs, PREFIX_NAME,","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"yleeyilin"},"content":" PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_SKILL, PREFIX_COMMISSION);","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"yleeyilin"},"content":" fieldArgMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"yleeyilin"},"content":" PREFIX_SKILL, PREFIX_COMMISSION);","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"jamessinmaojun"},"content":" EditMaintainerDescriptor editMaintainerDescriptor;","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"jamessinmaojun"},"content":" try {","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"jamessinmaojun"},"content":" editMaintainerDescriptor \u003d editMaintainerDescription(fieldArgMultimap);","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"jamessinmaojun"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"jamessinmaojun"},"content":" throw new ParseException(String.format(EditMessages.MESSAGE_EDIT_INVALID_FIELD, pe.getMessage()));","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"yleeyilin"},"content":" if (!editMaintainerDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"jamessinmaojun"},"content":" throw new ParseException(EditMessages.MESSAGE_EDIT_EMPTY_FIELD);","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"yleeyilin"},"content":" Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"yleeyilin"},"content":" tags.add(new Tag(\"maintainer\"));","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"yleeyilin"},"content":" editMaintainerDescriptor.setTags(tags);","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"yleeyilin"},"content":" return new EditMaintainerCommand(name, editMaintainerDescriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":84,"author":{"gitId":"yleeyilin"},"content":" * Returns name value using PREFIX.","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"yleeyilin"},"content":" * @param argMultimap Object that contains mapping of prefix to value.","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"yleeyilin"},"content":" * @return Returns object representing name.","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"yleeyilin"},"content":" * @throws ParseException Thrown when command is in invalid format.","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"yleeyilin"},"content":" public Name mapName(ArgumentMultimap argMultimap) throws ParseException {","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"yleeyilin"},"content":" try {","lastModifiedDate":"2024-03-19"},{"lineNumber":91,"author":{"gitId":"yleeyilin"},"content":" return ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2024-03-19"},{"lineNumber":92,"author":{"gitId":"yleeyilin"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"jamessinmaojun"},"content":" throw new ParseException(String.format(EditMessages.MESSAGE_EDIT_INVALID_NAME, pe.getMessage()));","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":95,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"yleeyilin"},"content":" * Returns field values using PREFIX.","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"yleeyilin"},"content":" * @param argMultimap Object that contains mapping of prefix to value.","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"yleeyilin"},"content":" * @return Returns object representing the respective fields.","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"yleeyilin"},"content":" * @throws ParseException Thrown when command is in invalid format.","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"yleeyilin"},"content":" public String mapFields(ArgumentMultimap argMultimap) throws ParseException {","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"yleeyilin"},"content":" try {","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"yleeyilin"},"content":" return ParserUtil.parseField(argMultimap.getValue(PREFIX_FIELD).get());","lastModifiedDate":"2024-03-19"},{"lineNumber":106,"author":{"gitId":"yleeyilin"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-19"},{"lineNumber":107,"author":{"gitId":"yleeyilin"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-19"},{"lineNumber":108,"author":{"gitId":"yleeyilin"},"content":" EditMaintainerCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":110,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":111,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":112,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":113,"author":{"gitId":"yleeyilin"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"yleeyilin"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-03-18"},{"lineNumber":115,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"yleeyilin"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"yleeyilin"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-03-18"},{"lineNumber":118,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":119,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":120,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"yleeyilin"},"content":" * Edits the description of a Maintainer.","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"yleeyilin"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"yleeyilin"},"content":" * @param fieldArgMultimap The mapping of field arguments into different specific fields.","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"yleeyilin"},"content":" * @return EditMaintainerDescriptor that contains the new values from the user.","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"yleeyilin"},"content":" * @throws ParseException Indicates the invalid format that users might have entered.","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"yleeyilin"},"content":" private EditMaintainerDescriptor editMaintainerDescription(","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"yleeyilin"},"content":" ArgumentMultimap fieldArgMultimap) throws ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":129,"author":{"gitId":"yleeyilin"},"content":" EditMaintainerDescriptor editMaintainerDescriptor \u003d new EditMaintainerDescriptor();","lastModifiedDate":"2024-03-17"},{"lineNumber":130,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"yleeyilin"},"content":" if (fieldArgMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"yleeyilin"},"content":" editMaintainerDescriptor.setPhone(ParserUtil.parsePhone(fieldArgMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"yleeyilin"},"content":" if (fieldArgMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":135,"author":{"gitId":"yleeyilin"},"content":" editMaintainerDescriptor.setEmail(ParserUtil.parseEmail(fieldArgMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2024-03-17"},{"lineNumber":136,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"yleeyilin"},"content":" if (fieldArgMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":138,"author":{"gitId":"yleeyilin"},"content":" editMaintainerDescriptor.setAddress(ParserUtil.parseAddress(","lastModifiedDate":"2024-03-17"},{"lineNumber":139,"author":{"gitId":"yleeyilin"},"content":" fieldArgMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2024-03-17"},{"lineNumber":140,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":141,"author":{"gitId":"yleeyilin"},"content":" if (fieldArgMultimap.getValue(PREFIX_SKILL).isPresent()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"yleeyilin"},"content":" editMaintainerDescriptor.setSkill(ParserUtil.parseSkill(fieldArgMultimap.getValue(PREFIX_SKILL).get()));","lastModifiedDate":"2024-03-17"},{"lineNumber":143,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":144,"author":{"gitId":"yleeyilin"},"content":" if (fieldArgMultimap.getValue(PREFIX_COMMISSION).isPresent()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":145,"author":{"gitId":"yleeyilin"},"content":" editMaintainerDescriptor.setCommission(ParserUtil.parseCommission(","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"yleeyilin"},"content":" fieldArgMultimap.getValue(PREFIX_COMMISSION).get()));","lastModifiedDate":"2024-03-17"},{"lineNumber":147,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":148,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":149,"author":{"gitId":"yleeyilin"},"content":" return editMaintainerDescriptor;","lastModifiedDate":"2024-03-17"},{"lineNumber":150,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":151,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":152,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":153,"author":{"gitId":"yleeyilin"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e} if {@code tags} is non-empty.","lastModifiedDate":"2024-03-17"},{"lineNumber":154,"author":{"gitId":"yleeyilin"},"content":" * If {@code tags} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2024-03-17"},{"lineNumber":155,"author":{"gitId":"yleeyilin"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2024-03-17"},{"lineNumber":156,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":157,"author":{"gitId":"yleeyilin"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":158,"author":{"gitId":"yleeyilin"},"content":" assert tags !\u003d null;","lastModifiedDate":"2024-03-17"},{"lineNumber":159,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":160,"author":{"gitId":"yleeyilin"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":161,"author":{"gitId":"yleeyilin"},"content":" return Optional.empty();","lastModifiedDate":"2024-03-17"},{"lineNumber":162,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":163,"author":{"gitId":"yleeyilin"},"content":" Collection\u003cString\u003e tagSet \u003d tags.size() \u003d\u003d 1 \u0026\u0026 tags.contains(\"\") ? Collections.emptySet() : tags;","lastModifiedDate":"2024-03-17"},{"lineNumber":164,"author":{"gitId":"yleeyilin"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2024-03-17"},{"lineNumber":165,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":166,"author":{"gitId":"yleeyilin"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"jamessinmaojun":20,"yleeyilin":146}},{"path":"src/main/java/seedu/address/logic/parser/EditStaffCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yleeyilin"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"yleeyilin"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"jamessinmaojun"},"content":"import static seedu.address.logic.messages.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMPLOYMENT;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FIELD;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SALARY;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"yleeyilin"},"content":"import java.util.Collection;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"yleeyilin"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"yleeyilin"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"yleeyilin"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"yleeyilin"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"yleeyilin"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.logic.commands.EditStaffCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.logic.commands.EditStaffCommand.EditStaffDescriptor;","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.EditMessages;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"yleeyilin"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"yleeyilin"},"content":" * Parses input arguments and creates a new EditStaffCommand object","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"yleeyilin"},"content":"public class EditStaffCommandParser implements Parser\u003cEditStaffCommand\u003e {","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"yleeyilin"},"content":" * Parses the given {@code String} of arguments in the context of the EditStaffCommand","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"yleeyilin"},"content":" * and returns an EditStaffCommand object for execution.","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"yleeyilin"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"yleeyilin"},"content":" public EditStaffCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"yleeyilin"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"yleeyilin"},"content":" Name name;","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"yleeyilin"},"content":" String fieldArgs;","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"yleeyilin"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_FIELD);","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"jamessinmaojun"},"content":" // check for missing name","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"jamessinmaojun"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"jamessinmaojun"},"content":" throw new ParseException(String.format(EditMessages.MESSAGE_EDIT_MISSING_NAME,","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"jamessinmaojun"},"content":" EditStaffCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"yleeyilin"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_FIELD)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"jamessinmaojun"},"content":" throw new ParseException(String.format(EditMessages.MESSAGE_EDIT_MISSING_FIELD,","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"jamessinmaojun"},"content":" EditStaffCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-22"},{"lineNumber":54,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"yleeyilin"},"content":" name \u003d mapName(argMultimap);","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"yleeyilin"},"content":" fieldArgs \u003d mapFields(argMultimap);","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"yleeyilin"},"content":" ArgumentMultimap fieldArgMultimap \u003d","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"yleeyilin"},"content":" ArgumentTokenizer.tokenize(fieldArgs, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"yleeyilin"},"content":" PREFIX_EMPLOYMENT, PREFIX_SALARY);","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"yleeyilin"},"content":" fieldArgMultimap.verifyNoDuplicatePrefixesFor(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"yleeyilin"},"content":" PREFIX_EMPLOYMENT, PREFIX_SALARY);","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"jamessinmaojun"},"content":" EditStaffDescriptor editStaffDescriptor;","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"jamessinmaojun"},"content":" try {","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"jamessinmaojun"},"content":" editStaffDescriptor \u003d editStaffDescription(fieldArgMultimap);","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"jamessinmaojun"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"jamessinmaojun"},"content":" throw new ParseException(String.format(EditMessages.MESSAGE_EDIT_INVALID_FIELD, pe.getMessage()));","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"yleeyilin"},"content":" if (!editStaffDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"jamessinmaojun"},"content":" throw new ParseException(EditMessages.MESSAGE_EDIT_EMPTY_FIELD);","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"yleeyilin"},"content":" Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"yleeyilin"},"content":" tags.add(new Tag(\"staff\"));","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"yleeyilin"},"content":" editStaffDescriptor.setTags(tags);","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"yleeyilin"},"content":" return new EditStaffCommand(name, editStaffDescriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"yleeyilin"},"content":" * Returns name value using PREFIX.","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"yleeyilin"},"content":" * @param argMultimap Object that contains mapping of prefix to value.","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"yleeyilin"},"content":" * @return Returns object representing name.","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"yleeyilin"},"content":" * @throws ParseException Thrown when command is in invalid format.","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"yleeyilin"},"content":" public Name mapName(ArgumentMultimap argMultimap) throws ParseException {","lastModifiedDate":"2024-03-19"},{"lineNumber":91,"author":{"gitId":"yleeyilin"},"content":" try {","lastModifiedDate":"2024-03-19"},{"lineNumber":92,"author":{"gitId":"yleeyilin"},"content":" return ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"yleeyilin"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"jamessinmaojun"},"content":" throw new ParseException(String.format(EditMessages.MESSAGE_EDIT_INVALID_NAME, pe.getMessage()));","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"yleeyilin"},"content":" * Returns field values using PREFIX.","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"yleeyilin"},"content":" * @param argMultimap Object that contains mapping of prefix to value.","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"yleeyilin"},"content":" * @return Returns object representing the respective fields.","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"yleeyilin"},"content":" * @throws ParseException Thrown when command is in invalid format.","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"yleeyilin"},"content":" public String mapFields(ArgumentMultimap argMultimap) throws ParseException {","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"yleeyilin"},"content":" try {","lastModifiedDate":"2024-03-19"},{"lineNumber":106,"author":{"gitId":"yleeyilin"},"content":" return ParserUtil.parseField(argMultimap.getValue(PREFIX_FIELD).get());","lastModifiedDate":"2024-03-19"},{"lineNumber":107,"author":{"gitId":"yleeyilin"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-19"},{"lineNumber":108,"author":{"gitId":"yleeyilin"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditStaffCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":110,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":111,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":112,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":113,"author":{"gitId":"yleeyilin"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"yleeyilin"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-03-18"},{"lineNumber":115,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"yleeyilin"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"yleeyilin"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-03-18"},{"lineNumber":118,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":119,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":120,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"yleeyilin"},"content":" * Edits the description of a Staff.","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"yleeyilin"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"yleeyilin"},"content":" * @param fieldArgMultimap The mapping of field arguments into different specific fields.","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"yleeyilin"},"content":" * @return EditStaffDescriptor that contains the new values from the user.","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"yleeyilin"},"content":" * @throws ParseException Indicates the invalid format that users might have entered.","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"yleeyilin"},"content":" private EditStaffDescriptor editStaffDescription(ArgumentMultimap fieldArgMultimap) throws ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"yleeyilin"},"content":" EditStaffDescriptor editStaffDescription \u003d new EditStaffDescriptor();","lastModifiedDate":"2024-03-17"},{"lineNumber":129,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":130,"author":{"gitId":"yleeyilin"},"content":" if (fieldArgMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"yleeyilin"},"content":" editStaffDescription.setPhone(ParserUtil.parsePhone(fieldArgMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"yleeyilin"},"content":" if (fieldArgMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"yleeyilin"},"content":" editStaffDescription.setEmail(ParserUtil.parseEmail(fieldArgMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2024-03-17"},{"lineNumber":135,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":136,"author":{"gitId":"yleeyilin"},"content":" if (fieldArgMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"yleeyilin"},"content":" editStaffDescription.setAddress(ParserUtil.parseAddress(fieldArgMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2024-03-17"},{"lineNumber":138,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":139,"author":{"gitId":"yleeyilin"},"content":" if (fieldArgMultimap.getValue(PREFIX_SALARY).isPresent()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":140,"author":{"gitId":"yleeyilin"},"content":" editStaffDescription.setSalary(ParserUtil.parseSalary(fieldArgMultimap.getValue(PREFIX_SALARY).get()));","lastModifiedDate":"2024-03-17"},{"lineNumber":141,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"yleeyilin"},"content":" if (fieldArgMultimap.getValue(PREFIX_EMPLOYMENT).isPresent()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":143,"author":{"gitId":"yleeyilin"},"content":" editStaffDescription.setEmployment(ParserUtil.parseEmployment(","lastModifiedDate":"2024-03-17"},{"lineNumber":144,"author":{"gitId":"yleeyilin"},"content":" fieldArgMultimap.getValue(PREFIX_EMPLOYMENT).get()));","lastModifiedDate":"2024-03-17"},{"lineNumber":145,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":147,"author":{"gitId":"yleeyilin"},"content":" return editStaffDescription;","lastModifiedDate":"2024-03-17"},{"lineNumber":148,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":149,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":150,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":151,"author":{"gitId":"yleeyilin"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e} if {@code tags} is non-empty.","lastModifiedDate":"2024-03-17"},{"lineNumber":152,"author":{"gitId":"yleeyilin"},"content":" * If {@code tags} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2024-03-17"},{"lineNumber":153,"author":{"gitId":"yleeyilin"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2024-03-17"},{"lineNumber":154,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":155,"author":{"gitId":"yleeyilin"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":156,"author":{"gitId":"yleeyilin"},"content":" assert tags !\u003d null;","lastModifiedDate":"2024-03-17"},{"lineNumber":157,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":158,"author":{"gitId":"yleeyilin"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":159,"author":{"gitId":"yleeyilin"},"content":" return Optional.empty();","lastModifiedDate":"2024-03-17"},{"lineNumber":160,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":161,"author":{"gitId":"yleeyilin"},"content":" Collection\u003cString\u003e tagSet \u003d tags.size() \u003d\u003d 1 \u0026\u0026 tags.contains(\"\") ? Collections.emptySet() : tags;","lastModifiedDate":"2024-03-17"},{"lineNumber":162,"author":{"gitId":"yleeyilin"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2024-03-17"},{"lineNumber":163,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":164,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":165,"author":{"gitId":"yleeyilin"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"jamessinmaojun":21,"yleeyilin":144}},{"path":"src/main/java/seedu/address/logic/parser/EditSupplierCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yleeyilin"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"yleeyilin"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"jamessinmaojun"},"content":"import static seedu.address.logic.messages.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FIELD;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PRICE;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PRODUCT;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"yleeyilin"},"content":"import java.util.Collection;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"yleeyilin"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"yleeyilin"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"yleeyilin"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"yleeyilin"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"yleeyilin"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.logic.commands.EditSupplierCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.logic.commands.EditSupplierCommand.EditSupplierDescriptor;","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.EditMessages;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"yleeyilin"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"yleeyilin"},"content":" * Parses input arguments and creates a new EditSupplierCommand object","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"yleeyilin"},"content":"public class EditSupplierCommandParser implements Parser\u003cEditSupplierCommand\u003e {","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"yleeyilin"},"content":" * Parses the given {@code String} of arguments in the context of the EditSupplierCommand","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"yleeyilin"},"content":" * and returns an EditSupplierCommand object for execution.","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"yleeyilin"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"yleeyilin"},"content":" public EditSupplierCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"yleeyilin"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"yleeyilin"},"content":" Name name;","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"yleeyilin"},"content":" String fieldArgs;","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"yleeyilin"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"yleeyilin"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_FIELD);","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"jamessinmaojun"},"content":" // check for missing name","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"jamessinmaojun"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"jamessinmaojun"},"content":" throw new ParseException(String.format(EditMessages.MESSAGE_EDIT_MISSING_NAME,","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"jamessinmaojun"},"content":" EditSupplierCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"yleeyilin"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_FIELD)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"jamessinmaojun"},"content":" throw new ParseException(String.format(EditMessages.MESSAGE_EDIT_MISSING_FIELD,","lastModifiedDate":"2024-03-22"},{"lineNumber":54,"author":{"gitId":"jamessinmaojun"},"content":" EditSupplierCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-22"},{"lineNumber":55,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"yleeyilin"},"content":" name \u003d mapName(argMultimap);","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"yleeyilin"},"content":" fieldArgs \u003d mapFields(argMultimap);","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"yleeyilin"},"content":" ArgumentMultimap fieldArgMultimap \u003d","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"yleeyilin"},"content":" ArgumentTokenizer.tokenize(fieldArgs, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"yleeyilin"},"content":" PREFIX_PRODUCT, PREFIX_PRICE);","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"yleeyilin"},"content":" fieldArgMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"jamessinmaojun"},"content":" EditSupplierDescriptor editSupplierDescriptor;","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"jamessinmaojun"},"content":" try {","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"jamessinmaojun"},"content":" editSupplierDescriptor \u003d editSupplierDescription(fieldArgMultimap);","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"jamessinmaojun"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"jamessinmaojun"},"content":" throw new ParseException(String.format(EditMessages.MESSAGE_EDIT_INVALID_FIELD, pe.getMessage()));","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"yleeyilin"},"content":" if (!editSupplierDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"jamessinmaojun"},"content":" throw new ParseException(EditMessages.MESSAGE_EDIT_EMPTY_FIELD);","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"yleeyilin"},"content":" Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"yleeyilin"},"content":" tags.add(new Tag(\"supplier\"));","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"yleeyilin"},"content":" editSupplierDescriptor.setTags(tags);","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"yleeyilin"},"content":" return new EditSupplierCommand(name, editSupplierDescriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"yleeyilin"},"content":" * Returns name value using PREFIX.","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"yleeyilin"},"content":" * @param argMultimap Object that contains mapping of prefix to value.","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"yleeyilin"},"content":" * @return Returns object representing name.","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"yleeyilin"},"content":" * @throws ParseException Thrown when command is in invalid format.","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"yleeyilin"},"content":" public Name mapName(ArgumentMultimap argMultimap) throws ParseException {","lastModifiedDate":"2024-03-19"},{"lineNumber":91,"author":{"gitId":"yleeyilin"},"content":" try {","lastModifiedDate":"2024-03-19"},{"lineNumber":92,"author":{"gitId":"yleeyilin"},"content":" return ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"yleeyilin"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"jamessinmaojun"},"content":" throw new ParseException(String.format(EditMessages.MESSAGE_EDIT_INVALID_NAME, pe.getMessage()));","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"yleeyilin"},"content":" * Returns field values using PREFIX.","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"yleeyilin"},"content":" * @param argMultimap Object that contains mapping of prefix to value.","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"yleeyilin"},"content":" * @return Returns object representing the respective fields.","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"yleeyilin"},"content":" * @throws ParseException Thrown when command is in invalid format.","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"yleeyilin"},"content":" public String mapFields(ArgumentMultimap argMultimap) throws ParseException {","lastModifiedDate":"2024-03-19"},{"lineNumber":106,"author":{"gitId":"yleeyilin"},"content":" try {","lastModifiedDate":"2024-03-19"},{"lineNumber":107,"author":{"gitId":"yleeyilin"},"content":" return ParserUtil.parseField(argMultimap.getValue(PREFIX_FIELD).get());","lastModifiedDate":"2024-03-19"},{"lineNumber":108,"author":{"gitId":"yleeyilin"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"yleeyilin"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-19"},{"lineNumber":110,"author":{"gitId":"yleeyilin"},"content":" EditSupplierCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-03-19"},{"lineNumber":111,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":112,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":113,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":114,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":115,"author":{"gitId":"yleeyilin"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"yleeyilin"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":118,"author":{"gitId":"yleeyilin"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-03-18"},{"lineNumber":119,"author":{"gitId":"yleeyilin"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-03-18"},{"lineNumber":120,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":121,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":122,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"yleeyilin"},"content":" * Edits the description of a Supplier.","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"yleeyilin"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"yleeyilin"},"content":" * @param fieldArgMultimap The mapping of field arguments into different specific fields.","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"yleeyilin"},"content":" * @return EditSupplierDescriptor that contains the new values from the user.","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"yleeyilin"},"content":" * @throws ParseException Indicates the invalid format that users might have entered.","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":129,"author":{"gitId":"yleeyilin"},"content":" private EditSupplierDescriptor editSupplierDescription(ArgumentMultimap fieldArgMultimap) throws ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":130,"author":{"gitId":"yleeyilin"},"content":" EditSupplierDescriptor editSupplierDescription \u003d new EditSupplierDescriptor();","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"yleeyilin"},"content":" if (fieldArgMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"yleeyilin"},"content":" editSupplierDescription.setPhone(ParserUtil.parsePhone(fieldArgMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":135,"author":{"gitId":"yleeyilin"},"content":" if (fieldArgMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":136,"author":{"gitId":"yleeyilin"},"content":" editSupplierDescription.setEmail(ParserUtil.parseEmail(fieldArgMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":138,"author":{"gitId":"yleeyilin"},"content":" if (fieldArgMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":139,"author":{"gitId":"yleeyilin"},"content":" editSupplierDescription.setAddress(ParserUtil.parseAddress(","lastModifiedDate":"2024-03-17"},{"lineNumber":140,"author":{"gitId":"yleeyilin"},"content":" fieldArgMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2024-03-17"},{"lineNumber":141,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"yleeyilin"},"content":" if (fieldArgMultimap.getValue(PREFIX_PRODUCT).isPresent()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":143,"author":{"gitId":"yleeyilin"},"content":" editSupplierDescription.setProduct(ParserUtil.parseProduct(","lastModifiedDate":"2024-03-17"},{"lineNumber":144,"author":{"gitId":"yleeyilin"},"content":" fieldArgMultimap.getValue(PREFIX_PRODUCT).get()));","lastModifiedDate":"2024-03-17"},{"lineNumber":145,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"yleeyilin"},"content":" if (fieldArgMultimap.getValue(PREFIX_PRICE).isPresent()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":147,"author":{"gitId":"yleeyilin"},"content":" editSupplierDescription.setPrice(ParserUtil.parsePrice(fieldArgMultimap.getValue(PREFIX_PRICE).get()));","lastModifiedDate":"2024-03-17"},{"lineNumber":148,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":149,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":150,"author":{"gitId":"yleeyilin"},"content":" return editSupplierDescription;","lastModifiedDate":"2024-03-17"},{"lineNumber":151,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":152,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":153,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":154,"author":{"gitId":"yleeyilin"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e} if {@code tags} is non-empty.","lastModifiedDate":"2024-03-17"},{"lineNumber":155,"author":{"gitId":"yleeyilin"},"content":" * If {@code tags} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2024-03-17"},{"lineNumber":156,"author":{"gitId":"yleeyilin"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2024-03-17"},{"lineNumber":157,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":158,"author":{"gitId":"yleeyilin"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":159,"author":{"gitId":"yleeyilin"},"content":" assert tags !\u003d null;","lastModifiedDate":"2024-03-17"},{"lineNumber":160,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":161,"author":{"gitId":"yleeyilin"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":162,"author":{"gitId":"yleeyilin"},"content":" return Optional.empty();","lastModifiedDate":"2024-03-17"},{"lineNumber":163,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":164,"author":{"gitId":"yleeyilin"},"content":" Collection\u003cString\u003e tagSet \u003d tags.size() \u003d\u003d 1 \u0026\u0026 tags.contains(\"\") ? Collections.emptySet() : tags;","lastModifiedDate":"2024-03-17"},{"lineNumber":165,"author":{"gitId":"yleeyilin"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2024-03-17"},{"lineNumber":166,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":167,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":168,"author":{"gitId":"yleeyilin"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"jamessinmaojun":21,"yleeyilin":147}},{"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":"jamessinmaojun"},"content":"import static seedu.address.logic.messages.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"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":{"jamessinmaojun":1,"-":32}},{"path":"src/main/java/seedu/address/logic/parser/NoteCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"import static seedu.address.logic.messages.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NOTE;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":"import seedu.address.logic.commands.NoteCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":"import seedu.address.model.person.Note;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":" * Parses input arguments and creates a new NoteCommand object","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":"public class NoteCommandParser implements Parser\u003cNoteCommand\u003e {","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":" * Parses the given {@code String} of arguments in the context of the NoteCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":" * and returns a NoteCommand object for execution.","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":" public NoteCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"jannaleong"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args,","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":" PREFIX_NAME, PREFIX_NOTE);","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"jannaleong"},"content":" Name name;","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"jannaleong"},"content":" Note note;","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"jannaleong"},"content":" try {","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"jannaleong"},"content":" name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"jannaleong"},"content":" note \u003d ParserUtil.parseNote(argMultimap.getValue(PREFIX_NOTE).get());","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"jannaleong"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"jannaleong"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"jannaleong"},"content":" NoteCommand.MESSAGE_USAGE), ive);","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"jannaleong"},"content":" return new NoteCommand(name, note);","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"jannaleong":39}},{"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":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-09"},{"lineNumber":13,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Commission;","lastModifiedDate":"2024-03-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-09"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Employment;","lastModifiedDate":"2024-03-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-09"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":"import seedu.address.model.person.Note;","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-09"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Price;","lastModifiedDate":"2024-03-09"},{"lineNumber":20,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Product;","lastModifiedDate":"2024-03-09"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Salary;","lastModifiedDate":"2024-03-09"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Skill;","lastModifiedDate":"2024-03-09"},{"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":"-"},"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":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-08"},{"lineNumber":106,"author":{"gitId":"chiageng"},"content":" * Parses a {@code String employment} into an {@code Employment}.","lastModifiedDate":"2024-03-08"},{"lineNumber":107,"author":{"gitId":"chiageng"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-08"},{"lineNumber":108,"author":{"gitId":"chiageng"},"content":" *","lastModifiedDate":"2024-03-08"},{"lineNumber":109,"author":{"gitId":"chiageng"},"content":" * @throws ParseException if the given {@code employment} is invalid.","lastModifiedDate":"2024-03-08"},{"lineNumber":110,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":111,"author":{"gitId":"chiageng"},"content":" public static Employment parseEmployment(String employment) throws ParseException {","lastModifiedDate":"2024-03-08"},{"lineNumber":112,"author":{"gitId":"chiageng"},"content":" requireNonNull(employment);","lastModifiedDate":"2024-03-08"},{"lineNumber":113,"author":{"gitId":"chiageng"},"content":" String trimmedEmployment \u003d employment.trim();","lastModifiedDate":"2024-03-08"},{"lineNumber":114,"author":{"gitId":"chiageng"},"content":" if (!Employment.isValidEmployment(trimmedEmployment)) {","lastModifiedDate":"2024-03-08"},{"lineNumber":115,"author":{"gitId":"chiageng"},"content":" throw new ParseException(Employment.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-08"},{"lineNumber":116,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":117,"author":{"gitId":"chiageng"},"content":" return new Employment(trimmedEmployment);","lastModifiedDate":"2024-03-08"},{"lineNumber":118,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":119,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":120,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-08"},{"lineNumber":121,"author":{"gitId":"chiageng"},"content":" * Parses a {@code String salary} into an {@code Salary}.","lastModifiedDate":"2024-03-08"},{"lineNumber":122,"author":{"gitId":"chiageng"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-08"},{"lineNumber":123,"author":{"gitId":"chiageng"},"content":" *","lastModifiedDate":"2024-03-08"},{"lineNumber":124,"author":{"gitId":"chiageng"},"content":" * @throws ParseException if the given {@code salary} is invalid.","lastModifiedDate":"2024-03-08"},{"lineNumber":125,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":126,"author":{"gitId":"chiageng"},"content":" public static Salary parseSalary(String salary) throws ParseException {","lastModifiedDate":"2024-03-08"},{"lineNumber":127,"author":{"gitId":"chiageng"},"content":" requireNonNull(salary);","lastModifiedDate":"2024-03-08"},{"lineNumber":128,"author":{"gitId":"chiageng"},"content":" String trimmedSalary \u003d salary.trim();","lastModifiedDate":"2024-03-08"},{"lineNumber":129,"author":{"gitId":"chiageng"},"content":" if (!Salary.isValidSalary(trimmedSalary)) {","lastModifiedDate":"2024-03-08"},{"lineNumber":130,"author":{"gitId":"chiageng"},"content":" throw new ParseException(Salary.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-08"},{"lineNumber":131,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":132,"author":{"gitId":"chiageng"},"content":" return new Salary(trimmedSalary);","lastModifiedDate":"2024-03-08"},{"lineNumber":133,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":134,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":135,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-08"},{"lineNumber":136,"author":{"gitId":"chiageng"},"content":" * Parses a {@code String product} into an {@code Product}.","lastModifiedDate":"2024-03-08"},{"lineNumber":137,"author":{"gitId":"chiageng"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-08"},{"lineNumber":138,"author":{"gitId":"chiageng"},"content":" *","lastModifiedDate":"2024-03-08"},{"lineNumber":139,"author":{"gitId":"chiageng"},"content":" * @throws ParseException if the given {@code product} is invalid.","lastModifiedDate":"2024-03-08"},{"lineNumber":140,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":141,"author":{"gitId":"chiageng"},"content":" public static Product parseProduct(String product) throws ParseException {","lastModifiedDate":"2024-03-08"},{"lineNumber":142,"author":{"gitId":"chiageng"},"content":" requireNonNull(product);","lastModifiedDate":"2024-03-08"},{"lineNumber":143,"author":{"gitId":"chiageng"},"content":" String trimmedProduct \u003d product.trim();","lastModifiedDate":"2024-03-08"},{"lineNumber":144,"author":{"gitId":"chiageng"},"content":" if (!Product.isValidProduct(trimmedProduct)) {","lastModifiedDate":"2024-03-08"},{"lineNumber":145,"author":{"gitId":"chiageng"},"content":" throw new ParseException(Product.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-08"},{"lineNumber":146,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":147,"author":{"gitId":"chiageng"},"content":" return new Product(trimmedProduct);","lastModifiedDate":"2024-03-08"},{"lineNumber":148,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":149,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":150,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-08"},{"lineNumber":151,"author":{"gitId":"chiageng"},"content":" * Parses a {@code String price} into an {@code Price}.","lastModifiedDate":"2024-03-08"},{"lineNumber":152,"author":{"gitId":"chiageng"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-08"},{"lineNumber":153,"author":{"gitId":"chiageng"},"content":" *","lastModifiedDate":"2024-03-08"},{"lineNumber":154,"author":{"gitId":"chiageng"},"content":" * @throws ParseException if the given {@code price} is invalid.","lastModifiedDate":"2024-03-08"},{"lineNumber":155,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":156,"author":{"gitId":"chiageng"},"content":" public static Price parsePrice(String price) throws ParseException {","lastModifiedDate":"2024-03-08"},{"lineNumber":157,"author":{"gitId":"chiageng"},"content":" requireNonNull(price);","lastModifiedDate":"2024-03-08"},{"lineNumber":158,"author":{"gitId":"chiageng"},"content":" String trimmedPrice \u003d price.trim();","lastModifiedDate":"2024-03-08"},{"lineNumber":159,"author":{"gitId":"chiageng"},"content":" if (!Price.isValidPrice(trimmedPrice)) {","lastModifiedDate":"2024-03-08"},{"lineNumber":160,"author":{"gitId":"chiageng"},"content":" throw new ParseException(Price.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-08"},{"lineNumber":161,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":162,"author":{"gitId":"chiageng"},"content":" return new Price(trimmedPrice);","lastModifiedDate":"2024-03-08"},{"lineNumber":163,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":164,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":165,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-08"},{"lineNumber":166,"author":{"gitId":"yleeyilin"},"content":" * Parses a {@code String skill} into an {@code Skill}.","lastModifiedDate":"2024-03-17"},{"lineNumber":167,"author":{"gitId":"chiageng"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-08"},{"lineNumber":168,"author":{"gitId":"chiageng"},"content":" *","lastModifiedDate":"2024-03-08"},{"lineNumber":169,"author":{"gitId":"chiageng"},"content":" * @throws ParseException if the given {@code skill} is invalid.","lastModifiedDate":"2024-03-08"},{"lineNumber":170,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":171,"author":{"gitId":"chiageng"},"content":" public static Skill parseSkill(String skill) throws ParseException {","lastModifiedDate":"2024-03-08"},{"lineNumber":172,"author":{"gitId":"chiageng"},"content":" requireNonNull(skill);","lastModifiedDate":"2024-03-08"},{"lineNumber":173,"author":{"gitId":"chiageng"},"content":" String trimmedSkill \u003d skill.trim();","lastModifiedDate":"2024-03-08"},{"lineNumber":174,"author":{"gitId":"chiageng"},"content":" if (!Skill.isValidSkill(trimmedSkill)) {","lastModifiedDate":"2024-03-08"},{"lineNumber":175,"author":{"gitId":"chiageng"},"content":" throw new ParseException(Skill.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-08"},{"lineNumber":176,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":177,"author":{"gitId":"chiageng"},"content":" return new Skill(trimmedSkill);","lastModifiedDate":"2024-03-08"},{"lineNumber":178,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":179,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":180,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-08"},{"lineNumber":181,"author":{"gitId":"yleeyilin"},"content":" * Parses a {@code String commission} into an {@code Commission}.","lastModifiedDate":"2024-03-17"},{"lineNumber":182,"author":{"gitId":"chiageng"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-08"},{"lineNumber":183,"author":{"gitId":"chiageng"},"content":" *","lastModifiedDate":"2024-03-08"},{"lineNumber":184,"author":{"gitId":"chiageng"},"content":" * @throws ParseException if the given {@code commission} is invalid.","lastModifiedDate":"2024-03-08"},{"lineNumber":185,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":186,"author":{"gitId":"chiageng"},"content":" public static Commission parseCommission(String commission) throws ParseException {","lastModifiedDate":"2024-03-08"},{"lineNumber":187,"author":{"gitId":"chiageng"},"content":" requireNonNull(commission);","lastModifiedDate":"2024-03-08"},{"lineNumber":188,"author":{"gitId":"chiageng"},"content":" String trimmedCommission \u003d commission.trim();","lastModifiedDate":"2024-03-08"},{"lineNumber":189,"author":{"gitId":"chiageng"},"content":" if (!Commission.isValidCommission(trimmedCommission)) {","lastModifiedDate":"2024-03-08"},{"lineNumber":190,"author":{"gitId":"chiageng"},"content":" throw new ParseException(Commission.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-08"},{"lineNumber":191,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":192,"author":{"gitId":"chiageng"},"content":" return new Commission(trimmedCommission);","lastModifiedDate":"2024-03-08"},{"lineNumber":193,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":194,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":195,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":196,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":197,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":198,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":199,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":200,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":201,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":202,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30"},{"lineNumber":203,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":204,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":205,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":206,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":207,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30"},{"lineNumber":208,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":210,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":211,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07"},{"lineNumber":212,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":213,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":214,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15"},{"lineNumber":215,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11"},{"lineNumber":216,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11"},{"lineNumber":217,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30"},{"lineNumber":218,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":219,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07"},{"lineNumber":220,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":221,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":222,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":223,"author":{"gitId":"yleeyilin"},"content":" * Parses a {@code String args} into an {@code String args}.","lastModifiedDate":"2024-03-17"},{"lineNumber":224,"author":{"gitId":"yleeyilin"},"content":" * Leading and trailing whitespaces and curly brackets will be trimmed.","lastModifiedDate":"2024-03-17"},{"lineNumber":225,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":226,"author":{"gitId":"yleeyilin"},"content":" public static String parseField(String args) throws ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":227,"author":{"gitId":"yleeyilin"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-17"},{"lineNumber":228,"author":{"gitId":"yleeyilin"},"content":" String trimmedFields \u003d args.replaceAll(\"[{}]\", \"\").trim();","lastModifiedDate":"2024-03-17"},{"lineNumber":229,"author":{"gitId":"yleeyilin"},"content":" return \" ; \" + trimmedFields;","lastModifiedDate":"2024-03-17"},{"lineNumber":230,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":231,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":232,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":233,"author":{"gitId":"jannaleong"},"content":" * Parses a {@code String note} into a {@code Note}.","lastModifiedDate":"2024-03-18"},{"lineNumber":234,"author":{"gitId":"jannaleong"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-18"},{"lineNumber":235,"author":{"gitId":"jannaleong"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":236,"author":{"gitId":"jannaleong"},"content":" * @throws ParseException if the given {@code note} is invalid.","lastModifiedDate":"2024-03-18"},{"lineNumber":237,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":238,"author":{"gitId":"jannaleong"},"content":" public static Note parseNote(String note) throws ParseException {","lastModifiedDate":"2024-03-18"},{"lineNumber":239,"author":{"gitId":"jannaleong"},"content":" requireNonNull(note);","lastModifiedDate":"2024-03-18"},{"lineNumber":240,"author":{"gitId":"jannaleong"},"content":" String trimmedNote \u003d note.trim();","lastModifiedDate":"2024-03-18"},{"lineNumber":241,"author":{"gitId":"jannaleong"},"content":" if (!Note.isValidNote(trimmedNote)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":242,"author":{"gitId":"jannaleong"},"content":" throw new ParseException(Note.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":243,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":244,"author":{"gitId":"jannaleong"},"content":" return new Note(trimmedNote);","lastModifiedDate":"2024-03-18"},{"lineNumber":245,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":246,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"chiageng":94,"jannaleong":16,"-":124,"yleeyilin":12}},{"path":"src/main/java/seedu/address/logic/parser/SearchCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Joshy837"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"Joshy837"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COLLECTION;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"Joshy837"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"Joshy837"},"content":"import seedu.address.logic.commands.SearchCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.SearchMessages;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"Joshy837"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"Joshy837"},"content":"import seedu.address.model.person.KeywordPredicate;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"Joshy837"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"Joshy837"},"content":" * Parses input arguments and creates a new SearchCommand object","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"Joshy837"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"Joshy837"},"content":"public class SearchCommandParser implements Parser\u003cSearchCommand\u003e {","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"Joshy837"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"Joshy837"},"content":" * Parses the given {@code String} of arguments in the context of the SearchCommand","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"Joshy837"},"content":" * and returns a SearchCommand object for execution.","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"Joshy837"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"Joshy837"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"Joshy837"},"content":" public SearchCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"Joshy837"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_COLLECTION);","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"Joshy837"},"content":" // invalid command syntax","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"Joshy837"},"content":" if (!argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"jamessinmaojun"},"content":" throw new ParseException(SearchMessages.MESSAGE_SEARCH_INVALID_FIELD);","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"Joshy837"},"content":" // no prefixes present","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"Joshy837"},"content":" if (!atLeastOnePrefixPresent(argMultimap, PREFIX_COLLECTION)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"jamessinmaojun"},"content":" throw new ParseException(SearchMessages.MESSAGE_SEARCH_MISSING_FIELD);","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"Joshy837"},"content":" // check for duplicate field entries","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"Joshy837"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_COLLECTION);","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"Joshy837"},"content":" return new SearchCommand(new KeywordPredicate(argMultimap));","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"Joshy837"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"Joshy837"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"Joshy837"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"Joshy837"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"Joshy837"},"content":" private static boolean atLeastOnePrefixPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"Joshy837"},"content":" return Stream.of(prefixes).anyMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"Joshy837"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"Joshy837":46,"jamessinmaojun":3}},{"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":"yleeyilin"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Maintainer;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":12,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Staff;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Supplier;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2017-08-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":" Predicate\u003cPerson\u003e PREDICATE_SHOW_ALL_PERSONS \u003d unused -\u003e true;","lastModifiedDate":"2018-01-10"},{"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":"-"},"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":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * Deletes the given person.","lastModifiedDate":"2018-08-07"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * The person must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":" void deletePerson(Person target);","lastModifiedDate":"2018-08-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Adds the given person.","lastModifiedDate":"2018-08-07"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * {@code person} must not already exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":75,"author":{"gitId":"-"},"content":" void addPerson(Person person);","lastModifiedDate":"2018-08-07"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} with {@code editedPerson}.","lastModifiedDate":"2017-06-07"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":80,"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":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" void setPerson(Person target, Person editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered person list */","lastModifiedDate":"2017-09-01"},{"lineNumber":85,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * Updates the filter of the filtered person list to filter by the given {@code predicate}.","lastModifiedDate":"2017-08-05"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":91,"author":{"gitId":"-"},"content":" void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate);","lastModifiedDate":"2018-01-10"},{"lineNumber":92,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"yleeyilin"},"content":" * Find the person by their name.","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"yleeyilin"},"content":" * @param targetName Refers to the name identifier.","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"yleeyilin"},"content":" * @return Person that matches the name.","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"yleeyilin"},"content":" * @throws CommandException Handles invalid person message.","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"yleeyilin"},"content":" Person findByName(Name targetName) throws CommandException;","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"yleeyilin"},"content":" * Find the maintainer by their name.","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"yleeyilin"},"content":" * @param targetName Refers to the name identifier.","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"yleeyilin"},"content":" * @return Maintainer that matches the name.","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"yleeyilin"},"content":" * @throws CommandException Handles invalid maintainer message.","lastModifiedDate":"2024-03-18"},{"lineNumber":106,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"yleeyilin"},"content":" Maintainer findMaintainerByName(Name targetName) throws CommandException;","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":109,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"yleeyilin"},"content":" * Find the staff by their name.","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"yleeyilin"},"content":" * @param targetName Refers to the name identifier.","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"yleeyilin"},"content":" * @return Staff that matches the name.","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"yleeyilin"},"content":" * @throws CommandException Handles invalid staff message.","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"yleeyilin"},"content":" Staff findStaffByName(Name targetName) throws CommandException;","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"yleeyilin"},"content":" * Find the supplier by their name.","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"yleeyilin"},"content":" * @param targetName Refers to the name identifier.","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"yleeyilin"},"content":" * @return Supplier that matches the name.","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"yleeyilin"},"content":" * @throws CommandException Handles invalid supplier message.","lastModifiedDate":"2024-03-18"},{"lineNumber":122,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"yleeyilin"},"content":" Supplier findSupplierByName(Name targetName) throws CommandException;","lastModifiedDate":"2024-03-18"},{"lineNumber":124,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"-":87,"yleeyilin":37}},{"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":"yleeyilin"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.EditMessages;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Maintainer;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":19,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Staff;","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Supplier;","lastModifiedDate":"2024-03-17"},{"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":"","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2018-01-10"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":42,"author":{"gitId":"-"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(this.addressBook.getPersonList());","lastModifiedDate":"2019-01-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22"},{"lineNumber":46,"author":{"gitId":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"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":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":53,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06"},{"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 ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return userPrefs;","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 GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","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":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","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 Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"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 void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","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":" //\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":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21"},{"lineNumber":93,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"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":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15"},{"lineNumber":104,"author":{"gitId":"-"},"content":" addressBook.removePerson(target);","lastModifiedDate":"2019-01-25"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":109,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":110,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":115,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" addressBook.setPerson(target, editedPerson);","lastModifiedDate":"2019-01-25"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":120,"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":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":123,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10"},{"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":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":128,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09"},{"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":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":133,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05"},{"lineNumber":134,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12"},{"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":"-"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons);","lastModifiedDate":"2023-07-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":154,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":155,"author":{"gitId":"yleeyilin"},"content":" * Find the person by their name.","lastModifiedDate":"2024-03-17"},{"lineNumber":156,"author":{"gitId":"yleeyilin"},"content":" * @param targetName Refers to the name identifier.","lastModifiedDate":"2024-03-17"},{"lineNumber":157,"author":{"gitId":"yleeyilin"},"content":" * @return Person that matches the name.","lastModifiedDate":"2024-03-17"},{"lineNumber":158,"author":{"gitId":"yleeyilin"},"content":" * @throws CommandException Handles invalid person message.","lastModifiedDate":"2024-03-18"},{"lineNumber":159,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":160,"author":{"gitId":"yleeyilin"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":161,"author":{"gitId":"yleeyilin"},"content":" public Person findByName(Name targetName) throws CommandException {","lastModifiedDate":"2024-03-18"},{"lineNumber":162,"author":{"gitId":"yleeyilin"},"content":" for (Person person: filteredPersons) {","lastModifiedDate":"2024-03-17"},{"lineNumber":163,"author":{"gitId":"yleeyilin"},"content":" Name name \u003d person.getName();","lastModifiedDate":"2024-03-17"},{"lineNumber":164,"author":{"gitId":"yleeyilin"},"content":" if (name.equals(targetName)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":165,"author":{"gitId":"yleeyilin"},"content":" if (!(person instanceof Supplier) \u0026\u0026 !(person instanceof Staff)","lastModifiedDate":"2024-03-18"},{"lineNumber":166,"author":{"gitId":"yleeyilin"},"content":" \u0026\u0026 !(person instanceof Maintainer)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":167,"author":{"gitId":"yleeyilin"},"content":" return person;","lastModifiedDate":"2024-03-17"},{"lineNumber":168,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":169,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":170,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":171,"author":{"gitId":"jamessinmaojun"},"content":" throw new CommandException(EditMessages.MESSAGE_INVALID_EDIT_PERSON);","lastModifiedDate":"2024-03-20"},{"lineNumber":172,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":173,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":174,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":175,"author":{"gitId":"yleeyilin"},"content":" * Find the maintainer by their name.","lastModifiedDate":"2024-03-17"},{"lineNumber":176,"author":{"gitId":"yleeyilin"},"content":" * @param targetName Refers to the name identifier.","lastModifiedDate":"2024-03-17"},{"lineNumber":177,"author":{"gitId":"yleeyilin"},"content":" * @return Maintainer that matches the name.","lastModifiedDate":"2024-03-17"},{"lineNumber":178,"author":{"gitId":"yleeyilin"},"content":" * @throws CommandException Handles invalid maintainer message.","lastModifiedDate":"2024-03-18"},{"lineNumber":179,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":180,"author":{"gitId":"yleeyilin"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":181,"author":{"gitId":"yleeyilin"},"content":" public Maintainer findMaintainerByName(Name targetName) throws CommandException {","lastModifiedDate":"2024-03-18"},{"lineNumber":182,"author":{"gitId":"yleeyilin"},"content":" for (Person person: filteredPersons) {","lastModifiedDate":"2024-03-17"},{"lineNumber":183,"author":{"gitId":"yleeyilin"},"content":" Name name \u003d person.getName();","lastModifiedDate":"2024-03-17"},{"lineNumber":184,"author":{"gitId":"yleeyilin"},"content":" if (name.equals(targetName) \u0026\u0026 person instanceof Maintainer) {","lastModifiedDate":"2024-03-17"},{"lineNumber":185,"author":{"gitId":"yleeyilin"},"content":" return (Maintainer) person;","lastModifiedDate":"2024-03-17"},{"lineNumber":186,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":187,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":188,"author":{"gitId":"jamessinmaojun"},"content":" throw new CommandException(EditMessages.MESSAGE_INVALID_EDIT_MAINTAINER);","lastModifiedDate":"2024-03-20"},{"lineNumber":189,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":190,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":191,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":192,"author":{"gitId":"yleeyilin"},"content":" * Find the staff by their name.","lastModifiedDate":"2024-03-17"},{"lineNumber":193,"author":{"gitId":"yleeyilin"},"content":" * @param targetName Refers to the name identifier.","lastModifiedDate":"2024-03-17"},{"lineNumber":194,"author":{"gitId":"yleeyilin"},"content":" * @return Staff that matches the name.","lastModifiedDate":"2024-03-17"},{"lineNumber":195,"author":{"gitId":"yleeyilin"},"content":" * @throws CommandException Handles invalid staff message.","lastModifiedDate":"2024-03-18"},{"lineNumber":196,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":197,"author":{"gitId":"yleeyilin"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":198,"author":{"gitId":"yleeyilin"},"content":" public Staff findStaffByName(Name targetName) throws CommandException {","lastModifiedDate":"2024-03-18"},{"lineNumber":199,"author":{"gitId":"yleeyilin"},"content":" for (Person person: filteredPersons) {","lastModifiedDate":"2024-03-17"},{"lineNumber":200,"author":{"gitId":"yleeyilin"},"content":" Name name \u003d person.getName();","lastModifiedDate":"2024-03-17"},{"lineNumber":201,"author":{"gitId":"jamessinmaojun"},"content":" if (name.equals(targetName) \u0026\u0026 person instanceof Staff) {","lastModifiedDate":"2024-03-20"},{"lineNumber":202,"author":{"gitId":"yleeyilin"},"content":" return (Staff) person;","lastModifiedDate":"2024-03-17"},{"lineNumber":203,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":204,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":205,"author":{"gitId":"jamessinmaojun"},"content":" throw new CommandException(EditMessages.MESSAGE_INVALID_EDIT_STAFF);","lastModifiedDate":"2024-03-20"},{"lineNumber":206,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":207,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":208,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":209,"author":{"gitId":"yleeyilin"},"content":" * Find the supplier by their name.","lastModifiedDate":"2024-03-17"},{"lineNumber":210,"author":{"gitId":"yleeyilin"},"content":" * @param targetName Refers to the name identifier.","lastModifiedDate":"2024-03-17"},{"lineNumber":211,"author":{"gitId":"yleeyilin"},"content":" * @return Supplier that matches the name.","lastModifiedDate":"2024-03-17"},{"lineNumber":212,"author":{"gitId":"yleeyilin"},"content":" * @throws CommandException Handles invalid supplier message.","lastModifiedDate":"2024-03-18"},{"lineNumber":213,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":214,"author":{"gitId":"yleeyilin"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":215,"author":{"gitId":"yleeyilin"},"content":" public Supplier findSupplierByName(Name targetName) throws CommandException {","lastModifiedDate":"2024-03-18"},{"lineNumber":216,"author":{"gitId":"yleeyilin"},"content":" for (Person person: filteredPersons) {","lastModifiedDate":"2024-03-17"},{"lineNumber":217,"author":{"gitId":"yleeyilin"},"content":" Name name \u003d person.getName();","lastModifiedDate":"2024-03-17"},{"lineNumber":218,"author":{"gitId":"jamessinmaojun"},"content":" if (name.equals(targetName) \u0026\u0026 person instanceof Supplier) {","lastModifiedDate":"2024-03-20"},{"lineNumber":219,"author":{"gitId":"yleeyilin"},"content":" return (Supplier) person;","lastModifiedDate":"2024-03-17"},{"lineNumber":220,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":221,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":222,"author":{"gitId":"jamessinmaojun"},"content":" throw new CommandException(EditMessages.MESSAGE_INVALID_EDIT_SUPPLIER);","lastModifiedDate":"2024-03-20"},{"lineNumber":223,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":224,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"jamessinmaojun":7,"-":148,"yleeyilin":69}},{"path":"src/main/java/seedu/address/model/person/Commission.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chiageng"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-08"},{"lineNumber":2,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":3,"author":{"gitId":"chiageng"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-08"},{"lineNumber":4,"author":{"gitId":"chiageng"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-08"},{"lineNumber":5,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":6,"author":{"gitId":"chiageng"},"content":"/**","lastModifiedDate":"2024-03-08"},{"lineNumber":7,"author":{"gitId":"chiageng"},"content":" * Represents a Maitainer\u0027s commission in the address book.","lastModifiedDate":"2024-03-08"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidCommission(String)}","lastModifiedDate":"2024-03-08"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"public class Commission {","lastModifiedDate":"2024-03-08"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-08"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":" \"Commision should in this format of ${amount}/hr\";","lastModifiedDate":"2024-03-08"},{"lineNumber":13,"author":{"gitId":"chiageng"},"content":" public static final String VALIDATION_REGEX \u003d \"^\\\\$\\\\d+/hr$\";","lastModifiedDate":"2024-03-08"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":" public final String value;","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-08"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":" * Constructs an {@code Commission}.","lastModifiedDate":"2024-03-08"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":" *","lastModifiedDate":"2024-03-08"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":" * @param value A valid commission.","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":" public Commission(String value) {","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":" requireNonNull(value);","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"chiageng"},"content":" checkArgument(isValidCommission(value), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":" this.value \u003d value;","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":26,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":27,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-08"},{"lineNumber":28,"author":{"gitId":"chiageng"},"content":" * Returns true if a given string is a valid commission.","lastModifiedDate":"2024-03-08"},{"lineNumber":29,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":30,"author":{"gitId":"chiageng"},"content":" public static boolean isValidCommission(String test) {","lastModifiedDate":"2024-03-08"},{"lineNumber":31,"author":{"gitId":"chiageng"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-08"},{"lineNumber":32,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":33,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":34,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-08"},{"lineNumber":35,"author":{"gitId":"chiageng"},"content":" public String toString() {","lastModifiedDate":"2024-03-08"},{"lineNumber":36,"author":{"gitId":"chiageng"},"content":" return value;","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":38,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":39,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-08"},{"lineNumber":40,"author":{"gitId":"chiageng"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-08"},{"lineNumber":41,"author":{"gitId":"chiageng"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-08"},{"lineNumber":42,"author":{"gitId":"chiageng"},"content":" return true;","lastModifiedDate":"2024-03-08"},{"lineNumber":43,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":44,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-08"},{"lineNumber":46,"author":{"gitId":"chiageng"},"content":" if (!(other instanceof Commission)) {","lastModifiedDate":"2024-03-08"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":" return false;","lastModifiedDate":"2024-03-08"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":" Commission otherCommission \u003d (Commission) other;","lastModifiedDate":"2024-03-08"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":" return value.equals(otherCommission.value);","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":53,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-08"},{"lineNumber":55,"author":{"gitId":"chiageng"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-08"},{"lineNumber":56,"author":{"gitId":"chiageng"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":58,"author":{"gitId":"chiageng"},"content":"}","lastModifiedDate":"2024-03-08"}],"authorContributionMap":{"chiageng":58}},{"path":"src/main/java/seedu/address/model/person/Employment.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chiageng"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-08"},{"lineNumber":2,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":3,"author":{"gitId":"chiageng"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-08"},{"lineNumber":4,"author":{"gitId":"chiageng"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-08"},{"lineNumber":5,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":6,"author":{"gitId":"chiageng"},"content":"/**","lastModifiedDate":"2024-03-08"},{"lineNumber":7,"author":{"gitId":"chiageng"},"content":" * Represents a Staff\u0027s employment status in the address book.","lastModifiedDate":"2024-03-08"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidEmployment(String)} )}","lastModifiedDate":"2024-03-08"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"public class Employment {","lastModifiedDate":"2024-03-08"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-08"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":" \"Employment should be either full-time or part-time\";","lastModifiedDate":"2024-03-08"},{"lineNumber":13,"author":{"gitId":"chiageng"},"content":" public static final String VALIDATION_REGEX1 \u003d \"part-time\";","lastModifiedDate":"2024-03-08"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":" public static final String VALIDATION_REGEX2 \u003d \"full-time\";","lastModifiedDate":"2024-03-08"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":" public final String value;","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-08"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":" * Constructs an {@code Employment}.","lastModifiedDate":"2024-03-08"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":" *","lastModifiedDate":"2024-03-08"},{"lineNumber":20,"author":{"gitId":"chiageng"},"content":" * @param value A valid employment either part-time or full-time.","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":" public Employment(String value) {","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"chiageng"},"content":" requireNonNull(value);","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":" checkArgument(isValidEmployment(value), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"chiageng"},"content":" this.value \u003d value;","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":27,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":28,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-08"},{"lineNumber":29,"author":{"gitId":"chiageng"},"content":" * Returns true if a given string is a valid salary.","lastModifiedDate":"2024-03-08"},{"lineNumber":30,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":31,"author":{"gitId":"chiageng"},"content":" public static boolean isValidEmployment(String test) {","lastModifiedDate":"2024-03-08"},{"lineNumber":32,"author":{"gitId":"chiageng"},"content":" return test.matches(VALIDATION_REGEX1) || test.matches(VALIDATION_REGEX2);","lastModifiedDate":"2024-03-08"},{"lineNumber":33,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":34,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":35,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-08"},{"lineNumber":36,"author":{"gitId":"chiageng"},"content":" public String toString() {","lastModifiedDate":"2024-03-08"},{"lineNumber":37,"author":{"gitId":"chiageng"},"content":" return value;","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":39,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":40,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-08"},{"lineNumber":41,"author":{"gitId":"chiageng"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-08"},{"lineNumber":42,"author":{"gitId":"chiageng"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-08"},{"lineNumber":43,"author":{"gitId":"chiageng"},"content":" return true;","lastModifiedDate":"2024-03-08"},{"lineNumber":44,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":46,"author":{"gitId":"chiageng"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-08"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":" if (!(other instanceof Employment)) {","lastModifiedDate":"2024-03-08"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":" return false;","lastModifiedDate":"2024-03-08"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":" Employment otherEmployment \u003d (Employment) other;","lastModifiedDate":"2024-03-08"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":" return value.equals(otherEmployment.value);","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":55,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-08"},{"lineNumber":56,"author":{"gitId":"chiageng"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-08"},{"lineNumber":57,"author":{"gitId":"chiageng"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":59,"author":{"gitId":"chiageng"},"content":"}","lastModifiedDate":"2024-03-08"}],"authorContributionMap":{"chiageng":59}},{"path":"src/main/java/seedu/address/model/person/KeywordPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Joshy837"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"Joshy837"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"Joshy837"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COMMISSION;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"Joshy837"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"Joshy837"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMPLOYMENT;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"Joshy837"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"Joshy837"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"Joshy837"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PRICE;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"Joshy837"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PRODUCT;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"Joshy837"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SALARY;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"Joshy837"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SKILL;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"Joshy837"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"Joshy837"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"Joshy837"},"content":"import seedu.address.logic.parser.ArgumentMultimap;","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"Joshy837"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"Joshy837"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"Joshy837"},"content":" * Tests that a {@code Person}\u0027s {@code Details} matches any of the keywords given.","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"Joshy837"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"Joshy837"},"content":"public class KeywordPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"Joshy837"},"content":" private final ArgumentMultimap keywords;","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"Joshy837"},"content":" public KeywordPredicate(ArgumentMultimap keywords) {","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"Joshy837"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"Joshy837"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"Joshy837"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"Joshy837"},"content":" // Searches through staff only","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"Joshy837"},"content":" if (hasField(PREFIX_SALARY) || hasField(PREFIX_EMPLOYMENT)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"Joshy837"},"content":" if (!(person instanceof Staff)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"Joshy837"},"content":" return false;","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"Joshy837"},"content":" Staff staff \u003d (Staff) person;","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"Joshy837"},"content":" return checkNamePhoneEmailAndAddress(staff)","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"Joshy837"},"content":" \u0026\u0026 checkSalary(staff)","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"Joshy837"},"content":" \u0026\u0026 checkEmployment(staff);","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"Joshy837"},"content":" // Searches through supplier only","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"Joshy837"},"content":" if (hasField(PREFIX_PRICE) || hasField(PREFIX_PRODUCT)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"Joshy837"},"content":" if (!(person instanceof Supplier)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"Joshy837"},"content":" return false;","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"Joshy837"},"content":" Supplier supplier \u003d (Supplier) person;","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"Joshy837"},"content":" return checkNamePhoneEmailAndAddress(supplier)","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"Joshy837"},"content":" \u0026\u0026 checkPrice(supplier)","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"Joshy837"},"content":" \u0026\u0026 checkProduct(supplier);","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"Joshy837"},"content":" // Searches through maintainer only","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"Joshy837"},"content":" if (hasField(PREFIX_SKILL) || hasField(PREFIX_COMMISSION)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"Joshy837"},"content":" if (!(person instanceof Maintainer)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"Joshy837"},"content":" return false;","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"Joshy837"},"content":" Maintainer maintainer \u003d (Maintainer) person;","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"Joshy837"},"content":" return checkNamePhoneEmailAndAddress(maintainer)","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"Joshy837"},"content":" \u0026\u0026 checkSkill(maintainer)","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"Joshy837"},"content":" \u0026\u0026 checkCommission(maintainer);","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"Joshy837"},"content":" // No specialty","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"Joshy837"},"content":" return checkNamePhoneEmailAndAddress(person);","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"Joshy837"},"content":" boolean hasField(Prefix field) {","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"Joshy837"},"content":" return keywords.getValue(field).isPresent();","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"Joshy837"},"content":" String getValue(Prefix field) {","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"Joshy837"},"content":" return keywords.getValue(field).get();","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"Joshy837"},"content":" boolean contains(String identifier, Prefix field) {","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"Joshy837"},"content":" if (!hasField(field)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"Joshy837"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"Joshy837"},"content":" String lowerCasedIdentifier \u003d identifier.toLowerCase();","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"Joshy837"},"content":" String query \u003d getValue(field);","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"Joshy837"},"content":" String lowerCasedQuery \u003d query.toLowerCase();","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"Joshy837"},"content":" return lowerCasedIdentifier.contains(lowerCasedQuery);","lastModifiedDate":"2024-03-21"},{"lineNumber":90,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":91,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":92,"author":{"gitId":"Joshy837"},"content":" boolean checkName(Person person) {","lastModifiedDate":"2024-03-21"},{"lineNumber":93,"author":{"gitId":"Joshy837"},"content":" return contains(person.getName().toString(), PREFIX_NAME);","lastModifiedDate":"2024-03-21"},{"lineNumber":94,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":95,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":96,"author":{"gitId":"Joshy837"},"content":" boolean checkPhone(Person person) {","lastModifiedDate":"2024-03-21"},{"lineNumber":97,"author":{"gitId":"Joshy837"},"content":" return contains(person.getPhone().toString(), PREFIX_PHONE);","lastModifiedDate":"2024-03-21"},{"lineNumber":98,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":99,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":100,"author":{"gitId":"Joshy837"},"content":" boolean checkEmail(Person person) {","lastModifiedDate":"2024-03-21"},{"lineNumber":101,"author":{"gitId":"Joshy837"},"content":" return contains(person.getEmail().toString(), PREFIX_EMAIL);","lastModifiedDate":"2024-03-21"},{"lineNumber":102,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":103,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":104,"author":{"gitId":"Joshy837"},"content":" boolean checkAddress(Person person) {","lastModifiedDate":"2024-03-21"},{"lineNumber":105,"author":{"gitId":"Joshy837"},"content":" return contains(person.getAddress().toString(), PREFIX_ADDRESS);","lastModifiedDate":"2024-03-21"},{"lineNumber":106,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":107,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":108,"author":{"gitId":"Joshy837"},"content":" boolean checkSalary(Staff staff) {","lastModifiedDate":"2024-03-21"},{"lineNumber":109,"author":{"gitId":"Joshy837"},"content":" return contains(staff.getSalary().toString(), PREFIX_SALARY);","lastModifiedDate":"2024-03-21"},{"lineNumber":110,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":111,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":112,"author":{"gitId":"Joshy837"},"content":" boolean checkEmployment(Staff staff) {","lastModifiedDate":"2024-03-21"},{"lineNumber":113,"author":{"gitId":"Joshy837"},"content":" return contains(staff.getEmployment().toString(), PREFIX_EMPLOYMENT);","lastModifiedDate":"2024-03-21"},{"lineNumber":114,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":115,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":116,"author":{"gitId":"Joshy837"},"content":" boolean checkPrice(Supplier supplier) {","lastModifiedDate":"2024-03-21"},{"lineNumber":117,"author":{"gitId":"Joshy837"},"content":" return contains(supplier.getPrice().toString(), PREFIX_PRICE);","lastModifiedDate":"2024-03-21"},{"lineNumber":118,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":119,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":120,"author":{"gitId":"Joshy837"},"content":" boolean checkProduct(Supplier supplier) {","lastModifiedDate":"2024-03-21"},{"lineNumber":121,"author":{"gitId":"Joshy837"},"content":" return contains(supplier.getProduct().toString(), PREFIX_PRODUCT);","lastModifiedDate":"2024-03-21"},{"lineNumber":122,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":123,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":124,"author":{"gitId":"Joshy837"},"content":" boolean checkSkill(Maintainer maintainer) {","lastModifiedDate":"2024-03-21"},{"lineNumber":125,"author":{"gitId":"Joshy837"},"content":" return contains(maintainer.getSkill().toString(), PREFIX_SKILL);","lastModifiedDate":"2024-03-21"},{"lineNumber":126,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":127,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":128,"author":{"gitId":"Joshy837"},"content":" boolean checkCommission(Maintainer maintainer) {","lastModifiedDate":"2024-03-21"},{"lineNumber":129,"author":{"gitId":"Joshy837"},"content":" return contains(maintainer.getCommission().toString(), PREFIX_COMMISSION);","lastModifiedDate":"2024-03-21"},{"lineNumber":130,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":131,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":132,"author":{"gitId":"Joshy837"},"content":" boolean checkNamePhoneEmailAndAddress(Person person) {","lastModifiedDate":"2024-03-21"},{"lineNumber":133,"author":{"gitId":"Joshy837"},"content":" return checkName(person)","lastModifiedDate":"2024-03-21"},{"lineNumber":134,"author":{"gitId":"Joshy837"},"content":" \u0026\u0026 checkPhone(person)","lastModifiedDate":"2024-03-21"},{"lineNumber":135,"author":{"gitId":"Joshy837"},"content":" \u0026\u0026 checkEmail(person)","lastModifiedDate":"2024-03-21"},{"lineNumber":136,"author":{"gitId":"Joshy837"},"content":" \u0026\u0026 checkAddress(person);","lastModifiedDate":"2024-03-21"},{"lineNumber":137,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":138,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":139,"author":{"gitId":"Joshy837"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":140,"author":{"gitId":"Joshy837"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-16"},{"lineNumber":141,"author":{"gitId":"Joshy837"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-16"},{"lineNumber":142,"author":{"gitId":"Joshy837"},"content":" return true;","lastModifiedDate":"2024-03-16"},{"lineNumber":143,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":144,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":145,"author":{"gitId":"Joshy837"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-16"},{"lineNumber":146,"author":{"gitId":"Joshy837"},"content":" if (!(other instanceof KeywordPredicate)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":147,"author":{"gitId":"Joshy837"},"content":" return false;","lastModifiedDate":"2024-03-16"},{"lineNumber":148,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":149,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":150,"author":{"gitId":"Joshy837"},"content":" KeywordPredicate otherKeywordPredicate \u003d (KeywordPredicate) other;","lastModifiedDate":"2024-03-16"},{"lineNumber":151,"author":{"gitId":"Joshy837"},"content":" return keywords.equals(otherKeywordPredicate.keywords);","lastModifiedDate":"2024-03-16"},{"lineNumber":152,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":153,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":154,"author":{"gitId":"Joshy837"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":155,"author":{"gitId":"Joshy837"},"content":" public String toString() {","lastModifiedDate":"2024-03-16"},{"lineNumber":156,"author":{"gitId":"Joshy837"},"content":" return new ToStringBuilder(this).add(\"keyword\", keywords).toString();","lastModifiedDate":"2024-03-18"},{"lineNumber":157,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":158,"author":{"gitId":"Joshy837"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"Joshy837":158}},{"path":"src/main/java/seedu/address/model/person/Maintainer.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chiageng"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-08"},{"lineNumber":2,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":3,"author":{"gitId":"chiageng"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-09"},{"lineNumber":4,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":5,"author":{"gitId":"chiageng"},"content":"import java.util.Objects;","lastModifiedDate":"2024-03-08"},{"lineNumber":6,"author":{"gitId":"chiageng"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-08"},{"lineNumber":7,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":"/**","lastModifiedDate":"2024-03-08"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":" * Represents a Maintainer in the address book.","lastModifiedDate":"2024-03-08"},{"lineNumber":13,"author":{"gitId":"chiageng"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-03-08"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":"public class Maintainer extends Person {","lastModifiedDate":"2024-03-08"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":" // Data fields","lastModifiedDate":"2024-03-08"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":" private final Skill skill;","lastModifiedDate":"2024-03-08"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":" private final Commission commission;","lastModifiedDate":"2024-03-08"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":20,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-08"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-03-08"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":23,"author":{"gitId":"chiageng"},"content":" public Maintainer(Name name, Phone phone, Email email, Address address, Set\u003cTag\u003e tags,","lastModifiedDate":"2024-03-08"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":" Skill skill, Commission commission) {","lastModifiedDate":"2024-03-08"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":" super(name, phone, email, address, new Note(\"\"), tags);","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"chiageng"},"content":" requireAllNonNull(skill, commission);","lastModifiedDate":"2024-03-08"},{"lineNumber":27,"author":{"gitId":"chiageng"},"content":" this.skill \u003d skill;","lastModifiedDate":"2024-03-08"},{"lineNumber":28,"author":{"gitId":"chiageng"},"content":" this.commission \u003d commission;","lastModifiedDate":"2024-03-08"},{"lineNumber":29,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":30,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":31,"author":{"gitId":"chiageng"},"content":" public Skill getSkill() {","lastModifiedDate":"2024-03-08"},{"lineNumber":32,"author":{"gitId":"chiageng"},"content":" return skill;","lastModifiedDate":"2024-03-08"},{"lineNumber":33,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":34,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":35,"author":{"gitId":"chiageng"},"content":" public Commission getCommission() {","lastModifiedDate":"2024-03-08"},{"lineNumber":36,"author":{"gitId":"chiageng"},"content":" return commission;","lastModifiedDate":"2024-03-08"},{"lineNumber":37,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":38,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":39,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-08"},{"lineNumber":40,"author":{"gitId":"chiageng"},"content":" * Returns true if both Maintainer have the same identity and data fields.","lastModifiedDate":"2024-03-08"},{"lineNumber":41,"author":{"gitId":"chiageng"},"content":" * This defines a stronger notion of equality between two maintainer.","lastModifiedDate":"2024-03-08"},{"lineNumber":42,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":43,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-08"},{"lineNumber":44,"author":{"gitId":"chiageng"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-08"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-08"},{"lineNumber":46,"author":{"gitId":"chiageng"},"content":" return true;","lastModifiedDate":"2024-03-08"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-08"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":" if (!(other instanceof Maintainer)) {","lastModifiedDate":"2024-03-08"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":" return false;","lastModifiedDate":"2024-03-08"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":53,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":" Maintainer otherPerson \u003d (Maintainer) other;","lastModifiedDate":"2024-03-08"},{"lineNumber":55,"author":{"gitId":"chiageng"},"content":" return super.equals(otherPerson)","lastModifiedDate":"2024-03-08"},{"lineNumber":56,"author":{"gitId":"chiageng"},"content":" \u0026\u0026 skill.equals(otherPerson.skill)","lastModifiedDate":"2024-03-08"},{"lineNumber":57,"author":{"gitId":"chiageng"},"content":" \u0026\u0026 commission.equals(otherPerson.commission);","lastModifiedDate":"2024-03-08"},{"lineNumber":58,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":59,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":60,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-08"},{"lineNumber":61,"author":{"gitId":"chiageng"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-08"},{"lineNumber":62,"author":{"gitId":"chiageng"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2024-03-08"},{"lineNumber":63,"author":{"gitId":"chiageng"},"content":" return Objects.hash(super.hashCode(), skill, commission);","lastModifiedDate":"2024-03-08"},{"lineNumber":64,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":65,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":66,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-08"},{"lineNumber":67,"author":{"gitId":"chiageng"},"content":" public String toString() {","lastModifiedDate":"2024-03-08"},{"lineNumber":68,"author":{"gitId":"chiageng"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-09"},{"lineNumber":69,"author":{"gitId":"chiageng"},"content":" .add(\"name\", getName())","lastModifiedDate":"2024-03-09"},{"lineNumber":70,"author":{"gitId":"chiageng"},"content":" .add(\"phone\", getPhone())","lastModifiedDate":"2024-03-09"},{"lineNumber":71,"author":{"gitId":"chiageng"},"content":" .add(\"email\", getEmail())","lastModifiedDate":"2024-03-09"},{"lineNumber":72,"author":{"gitId":"chiageng"},"content":" .add(\"address\", getAddress())","lastModifiedDate":"2024-03-09"},{"lineNumber":73,"author":{"gitId":"chiageng"},"content":" .add(\"tags\", getTags())","lastModifiedDate":"2024-03-09"},{"lineNumber":74,"author":{"gitId":"chiageng"},"content":" .add(\"skill\", skill)","lastModifiedDate":"2024-03-08"},{"lineNumber":75,"author":{"gitId":"chiageng"},"content":" .add(\"commission\", commission)","lastModifiedDate":"2024-03-08"},{"lineNumber":76,"author":{"gitId":"chiageng"},"content":" .toString();","lastModifiedDate":"2024-03-08"},{"lineNumber":77,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":78,"author":{"gitId":"chiageng"},"content":"}","lastModifiedDate":"2024-03-08"}],"authorContributionMap":{"chiageng":77,"jannaleong":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":"-"},"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":"-"},"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":"-"},"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":"chiageng"},"content":" return fullName.toLowerCase().equals(otherName.fullName.toLowerCase());","lastModifiedDate":"2024-03-08"},{"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":{"chiageng":1,"-":66}},{"path":"src/main/java/seedu/address/model/person/Note.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":" * Represents a Person\u0027s Note in the address book.","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidNote(String)}","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":"public class Note {","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Note can take any values, and it should not be blank\";","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":" /*","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":" * The first character of the Note must not be a whitespace,","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":" public static final String VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":" private String value;","lastModifiedDate":"2024-03-23"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":" * Constructs an {@code Note}.","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"jannaleong"},"content":" * @param note A valid note.","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"jannaleong"},"content":" public Note(String note) {","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":" value \u003d note;","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"jannaleong"},"content":" * Returns true if a given string is a valid email.","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"jannaleong"},"content":" public static boolean isValidNote(String test) {","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"jannaleong"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"jannaleong"},"content":" public void setValue(String value) {","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"jannaleong"},"content":" this.value \u003d value;","lastModifiedDate":"2024-03-23"},{"lineNumber":37,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":39,"author":{"gitId":"jannaleong"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"jannaleong"},"content":" public String toString() {","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"jannaleong"},"content":" return value;","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"jannaleong"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"jannaleong"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"jannaleong"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"jannaleong"},"content":" return true;","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"jannaleong"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"jannaleong"},"content":" if (!(other instanceof Note)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"jannaleong"},"content":" return false;","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"jannaleong"},"content":" Note otherNote \u003d (Note) other;","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"jannaleong"},"content":" return value.equals(otherNote.value);","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"jannaleong"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"jannaleong"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"jannaleong"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"jannaleong":63}},{"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":"-"},"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 Address address;","lastModifiedDate":"2018-04-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":27,"author":{"gitId":"jannaleong"},"content":" private Note note;","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"jannaleong"},"content":" public Person(Name name, Phone phone, Email email, Address address, Note note, Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"jannaleong"},"content":" requireAllNonNull(name, phone, email, address, note, tags);","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20"},{"lineNumber":38,"author":{"gitId":"jannaleong"},"content":" this.note \u003d note;","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return name;","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 Phone getPhone() {","lastModifiedDate":"2017-07-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":" return phone;","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":" public Email getEmail() {","lastModifiedDate":"2017-07-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":57,"author":{"gitId":"jannaleong"},"content":" public Note getNote() {","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"jannaleong"},"content":" return note;","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18"},{"lineNumber":71,"author":{"gitId":"chiageng"},"content":" * Name is case-insensitive, Janna and janna is same name.","lastModifiedDate":"2024-03-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return true;","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":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2020-12-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":83,"author":{"gitId":"jannaleong"},"content":" public void setNoteContent(String content) {","lastModifiedDate":"2024-03-23"},{"lineNumber":84,"author":{"gitId":"jannaleong"},"content":" this.note.setValue(content);","lastModifiedDate":"2024-03-23"},{"lineNumber":85,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":86,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-23"},{"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":"jannaleong"},"content":" // does not have to have the same note to be equal","lastModifiedDate":"2024-03-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" \u0026\u0026 tags.equals(otherPerson.tags);","lastModifiedDate":"2023-07-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"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":"jannaleong"},"content":" return Objects.hash(name, phone, email, address, note, tags);","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":124,"author":{"gitId":"jannaleong"},"content":" .add(\"note\", note)","lastModifiedDate":"2024-03-18"},{"lineNumber":125,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":129,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"chiageng":1,"jannaleong":14,"-":114}},{"path":"src/main/java/seedu/address/model/person/Price.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chiageng"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-08"},{"lineNumber":2,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":3,"author":{"gitId":"chiageng"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-08"},{"lineNumber":4,"author":{"gitId":"chiageng"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-08"},{"lineNumber":5,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":6,"author":{"gitId":"chiageng"},"content":"/**","lastModifiedDate":"2024-03-08"},{"lineNumber":7,"author":{"gitId":"chiageng"},"content":" * Represents a Supplier\u0027s product price in the address book.","lastModifiedDate":"2024-03-08"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidPrice(String)}","lastModifiedDate":"2024-03-08"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"public class Price {","lastModifiedDate":"2024-03-08"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-08"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":" \"Salary should in this format of ${amount}/h\";","lastModifiedDate":"2024-03-08"},{"lineNumber":13,"author":{"gitId":"chiageng"},"content":" public static final String VALIDATION_REGEX \u003d \"^\\\\$\\\\d+/.+$\";","lastModifiedDate":"2024-03-08"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":" public final String value;","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-08"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":" * Constructs an {@code Product}.","lastModifiedDate":"2024-03-08"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":" *","lastModifiedDate":"2024-03-08"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":" * @param value A valid price.","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":" public Price(String value) {","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":" requireNonNull(value);","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"chiageng"},"content":" checkArgument(isValidPrice(value), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":" this.value \u003d value;","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":26,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":27,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-08"},{"lineNumber":28,"author":{"gitId":"chiageng"},"content":" * Returns true if a given string is a valid salary.","lastModifiedDate":"2024-03-08"},{"lineNumber":29,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":30,"author":{"gitId":"chiageng"},"content":" public static boolean isValidPrice(String test) {","lastModifiedDate":"2024-03-08"},{"lineNumber":31,"author":{"gitId":"chiageng"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-08"},{"lineNumber":32,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":33,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":34,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-08"},{"lineNumber":35,"author":{"gitId":"chiageng"},"content":" public String toString() {","lastModifiedDate":"2024-03-08"},{"lineNumber":36,"author":{"gitId":"chiageng"},"content":" return value;","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":38,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":39,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-08"},{"lineNumber":40,"author":{"gitId":"chiageng"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-08"},{"lineNumber":41,"author":{"gitId":"chiageng"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-08"},{"lineNumber":42,"author":{"gitId":"chiageng"},"content":" return true;","lastModifiedDate":"2024-03-08"},{"lineNumber":43,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":44,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-08"},{"lineNumber":46,"author":{"gitId":"chiageng"},"content":" if (!(other instanceof Price)) {","lastModifiedDate":"2024-03-08"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":" return false;","lastModifiedDate":"2024-03-08"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":" Price otherPrice \u003d (Price) other;","lastModifiedDate":"2024-03-08"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":" return value.equals(otherPrice.value);","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":53,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-08"},{"lineNumber":55,"author":{"gitId":"chiageng"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-08"},{"lineNumber":56,"author":{"gitId":"chiageng"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":58,"author":{"gitId":"chiageng"},"content":"}","lastModifiedDate":"2024-03-08"}],"authorContributionMap":{"chiageng":58}},{"path":"src/main/java/seedu/address/model/person/Product.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chiageng"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-08"},{"lineNumber":2,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":3,"author":{"gitId":"chiageng"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-08"},{"lineNumber":4,"author":{"gitId":"chiageng"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-08"},{"lineNumber":5,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":6,"author":{"gitId":"chiageng"},"content":"/**","lastModifiedDate":"2024-03-08"},{"lineNumber":7,"author":{"gitId":"chiageng"},"content":" * Represents a Supplier\u0027s product in the address book.","lastModifiedDate":"2024-03-08"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidProduct(String)}","lastModifiedDate":"2024-03-08"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"public class Product {","lastModifiedDate":"2024-03-08"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Product can take any values, and it should not be blank\";","lastModifiedDate":"2024-03-08"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":13,"author":{"gitId":"chiageng"},"content":" /*","lastModifiedDate":"2024-03-08"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":" * The first character of the product must not be a whitespace,","lastModifiedDate":"2024-03-08"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-03-08"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":" public static final String VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2024-03-08"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":" public final String value;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":20,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-08"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":" * Constructs an {@code Product}.","lastModifiedDate":"2024-03-08"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":" *","lastModifiedDate":"2024-03-08"},{"lineNumber":23,"author":{"gitId":"chiageng"},"content":" * @param value A valid product.","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":25,"author":{"gitId":"chiageng"},"content":" public Product(String value) {","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"chiageng"},"content":" requireNonNull(value);","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"chiageng"},"content":" checkArgument(isValidProduct(value), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"chiageng"},"content":" this.value \u003d value;","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":30,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":31,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-08"},{"lineNumber":32,"author":{"gitId":"chiageng"},"content":" * Returns true if a given string is a valid product.","lastModifiedDate":"2024-03-08"},{"lineNumber":33,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":34,"author":{"gitId":"chiageng"},"content":" public static boolean isValidProduct(String test) {","lastModifiedDate":"2024-03-08"},{"lineNumber":35,"author":{"gitId":"chiageng"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-08"},{"lineNumber":36,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":37,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":38,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-08"},{"lineNumber":39,"author":{"gitId":"chiageng"},"content":" public String toString() {","lastModifiedDate":"2024-03-08"},{"lineNumber":40,"author":{"gitId":"chiageng"},"content":" return value;","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":42,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":43,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-08"},{"lineNumber":44,"author":{"gitId":"chiageng"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-08"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-08"},{"lineNumber":46,"author":{"gitId":"chiageng"},"content":" return true;","lastModifiedDate":"2024-03-08"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-08"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":" if (!(other instanceof Product)) {","lastModifiedDate":"2024-03-08"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":" return false;","lastModifiedDate":"2024-03-08"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":53,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":" Product otherProduct \u003d (Product) other;","lastModifiedDate":"2024-03-08"},{"lineNumber":55,"author":{"gitId":"chiageng"},"content":" return value.equals(otherProduct.value);","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":57,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":58,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-08"},{"lineNumber":59,"author":{"gitId":"chiageng"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-08"},{"lineNumber":60,"author":{"gitId":"chiageng"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":62,"author":{"gitId":"chiageng"},"content":"}","lastModifiedDate":"2024-03-08"}],"authorContributionMap":{"chiageng":62}},{"path":"src/main/java/seedu/address/model/person/Salary.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chiageng"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-08"},{"lineNumber":2,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":3,"author":{"gitId":"chiageng"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-08"},{"lineNumber":4,"author":{"gitId":"chiageng"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-08"},{"lineNumber":5,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":6,"author":{"gitId":"chiageng"},"content":"/**","lastModifiedDate":"2024-03-08"},{"lineNumber":7,"author":{"gitId":"chiageng"},"content":" * Represents a Staff\u0027s salary in the address book.","lastModifiedDate":"2024-03-08"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidSalary(String)}","lastModifiedDate":"2024-03-08"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"public class Salary {","lastModifiedDate":"2024-03-08"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-08"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":" \"Salary should in this format of ${amount}/hr\";","lastModifiedDate":"2024-03-08"},{"lineNumber":13,"author":{"gitId":"chiageng"},"content":" public static final String VALIDATION_REGEX \u003d \"^\\\\$\\\\d+/hr$\";","lastModifiedDate":"2024-03-08"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":" public final String value;","lastModifiedDate":"2024-03-08"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-08"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":" * Constructs an {@code Salary}.","lastModifiedDate":"2024-03-08"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":" *","lastModifiedDate":"2024-03-08"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":" * @param value A valid salary value.","lastModifiedDate":"2024-03-08"},{"lineNumber":20,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":" public Salary(String value) {","lastModifiedDate":"2024-03-08"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":" requireNonNull(value);","lastModifiedDate":"2024-03-08"},{"lineNumber":23,"author":{"gitId":"chiageng"},"content":" checkArgument(isValidSalary(value), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-08"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":" this.value \u003d value;","lastModifiedDate":"2024-03-08"},{"lineNumber":25,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":26,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":27,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-08"},{"lineNumber":28,"author":{"gitId":"chiageng"},"content":" * Returns true if a given string is a valid salary.","lastModifiedDate":"2024-03-08"},{"lineNumber":29,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":30,"author":{"gitId":"chiageng"},"content":" public static boolean isValidSalary(String test) {","lastModifiedDate":"2024-03-08"},{"lineNumber":31,"author":{"gitId":"chiageng"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-08"},{"lineNumber":32,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":33,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":34,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-08"},{"lineNumber":35,"author":{"gitId":"chiageng"},"content":" public String toString() {","lastModifiedDate":"2024-03-08"},{"lineNumber":36,"author":{"gitId":"chiageng"},"content":" return value;","lastModifiedDate":"2024-03-08"},{"lineNumber":37,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":38,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":39,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-08"},{"lineNumber":40,"author":{"gitId":"chiageng"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-08"},{"lineNumber":41,"author":{"gitId":"chiageng"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-08"},{"lineNumber":42,"author":{"gitId":"chiageng"},"content":" return true;","lastModifiedDate":"2024-03-08"},{"lineNumber":43,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":44,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-08"},{"lineNumber":46,"author":{"gitId":"chiageng"},"content":" if (!(other instanceof Salary)) {","lastModifiedDate":"2024-03-08"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":" return false;","lastModifiedDate":"2024-03-08"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":" Salary otherSalary \u003d (Salary) other;","lastModifiedDate":"2024-03-08"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":" return value.equals(otherSalary.value);","lastModifiedDate":"2024-03-08"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":53,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-08"},{"lineNumber":55,"author":{"gitId":"chiageng"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-08"},{"lineNumber":56,"author":{"gitId":"chiageng"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-08"},{"lineNumber":57,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":58,"author":{"gitId":"chiageng"},"content":"}","lastModifiedDate":"2024-03-08"}],"authorContributionMap":{"chiageng":58}},{"path":"src/main/java/seedu/address/model/person/Skill.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chiageng"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-08"},{"lineNumber":2,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":3,"author":{"gitId":"chiageng"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-08"},{"lineNumber":4,"author":{"gitId":"chiageng"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-08"},{"lineNumber":5,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":6,"author":{"gitId":"chiageng"},"content":"/**","lastModifiedDate":"2024-03-08"},{"lineNumber":7,"author":{"gitId":"chiageng"},"content":" * Represents a Supplier\u0027s product in the address book.","lastModifiedDate":"2024-03-08"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidSkill(String)}","lastModifiedDate":"2024-03-08"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"public class Skill {","lastModifiedDate":"2024-03-08"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Skill can take any values, and it should not be blank\";","lastModifiedDate":"2024-03-08"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":13,"author":{"gitId":"chiageng"},"content":" /*","lastModifiedDate":"2024-03-08"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":" * The first character of the skill must not be a whitespace,","lastModifiedDate":"2024-03-08"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-03-08"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":" public static final String VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2024-03-08"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":" public final String value;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":20,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-08"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":" * Constructs an {@code Skill}.","lastModifiedDate":"2024-03-08"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":" *","lastModifiedDate":"2024-03-08"},{"lineNumber":23,"author":{"gitId":"chiageng"},"content":" * @param value A valid skill.","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":25,"author":{"gitId":"chiageng"},"content":" public Skill(String value) {","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"chiageng"},"content":" requireNonNull(value);","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"chiageng"},"content":" checkArgument(isValidSkill(value), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"chiageng"},"content":" this.value \u003d value;","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":30,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":31,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-08"},{"lineNumber":32,"author":{"gitId":"chiageng"},"content":" * Returns true if a given string is a valid product.","lastModifiedDate":"2024-03-08"},{"lineNumber":33,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":34,"author":{"gitId":"chiageng"},"content":" public static boolean isValidSkill(String test) {","lastModifiedDate":"2024-03-08"},{"lineNumber":35,"author":{"gitId":"chiageng"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-08"},{"lineNumber":36,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":37,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":38,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-08"},{"lineNumber":39,"author":{"gitId":"chiageng"},"content":" public String toString() {","lastModifiedDate":"2024-03-08"},{"lineNumber":40,"author":{"gitId":"chiageng"},"content":" return value;","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":42,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":43,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-08"},{"lineNumber":44,"author":{"gitId":"chiageng"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-08"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-08"},{"lineNumber":46,"author":{"gitId":"chiageng"},"content":" return true;","lastModifiedDate":"2024-03-08"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-08"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":" if (!(other instanceof Skill)) {","lastModifiedDate":"2024-03-08"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":" return false;","lastModifiedDate":"2024-03-08"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":53,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":" Skill otherSkill \u003d (Skill) other;","lastModifiedDate":"2024-03-08"},{"lineNumber":55,"author":{"gitId":"chiageng"},"content":" return value.equals(otherSkill.value);","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":57,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":58,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-08"},{"lineNumber":59,"author":{"gitId":"chiageng"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-08"},{"lineNumber":60,"author":{"gitId":"chiageng"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":62,"author":{"gitId":"chiageng"},"content":"}","lastModifiedDate":"2024-03-08"}],"authorContributionMap":{"chiageng":62}},{"path":"src/main/java/seedu/address/model/person/Staff.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chiageng"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-08"},{"lineNumber":2,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":3,"author":{"gitId":"chiageng"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-09"},{"lineNumber":4,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":5,"author":{"gitId":"chiageng"},"content":"import java.util.Objects;","lastModifiedDate":"2024-03-08"},{"lineNumber":6,"author":{"gitId":"chiageng"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-08"},{"lineNumber":7,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":"/**","lastModifiedDate":"2024-03-08"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":" * Represents a Staff in the address book.","lastModifiedDate":"2024-03-08"},{"lineNumber":13,"author":{"gitId":"chiageng"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-03-08"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":"public class Staff extends Person {","lastModifiedDate":"2024-03-08"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":" // Data fields","lastModifiedDate":"2024-03-08"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":" private final Salary salary;","lastModifiedDate":"2024-03-08"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":" private final Employment employment;","lastModifiedDate":"2024-03-08"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":20,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-08"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-03-08"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":23,"author":{"gitId":"chiageng"},"content":" public Staff(Name name, Phone phone, Email email, Address address, Set\u003cTag\u003e tags,","lastModifiedDate":"2024-03-08"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":" Salary salary, Employment employment) {","lastModifiedDate":"2024-03-08"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":" super(name, phone, email, address, new Note(\"\"), tags);","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"chiageng"},"content":" requireAllNonNull(salary, employment);","lastModifiedDate":"2024-03-08"},{"lineNumber":27,"author":{"gitId":"chiageng"},"content":" this.salary \u003d salary;","lastModifiedDate":"2024-03-08"},{"lineNumber":28,"author":{"gitId":"chiageng"},"content":" this.employment \u003d employment;","lastModifiedDate":"2024-03-08"},{"lineNumber":29,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":30,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":31,"author":{"gitId":"chiageng"},"content":" public Salary getSalary() {","lastModifiedDate":"2024-03-08"},{"lineNumber":32,"author":{"gitId":"chiageng"},"content":" return salary;","lastModifiedDate":"2024-03-08"},{"lineNumber":33,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":34,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":35,"author":{"gitId":"chiageng"},"content":" public Employment getEmployment() {","lastModifiedDate":"2024-03-08"},{"lineNumber":36,"author":{"gitId":"chiageng"},"content":" return employment;","lastModifiedDate":"2024-03-08"},{"lineNumber":37,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":38,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":39,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-08"},{"lineNumber":40,"author":{"gitId":"chiageng"},"content":" * Returns true if both staffs have the same identity and data fields.","lastModifiedDate":"2024-03-08"},{"lineNumber":41,"author":{"gitId":"chiageng"},"content":" * This defines a stronger notion of equality between two staff.","lastModifiedDate":"2024-03-08"},{"lineNumber":42,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":43,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-08"},{"lineNumber":44,"author":{"gitId":"chiageng"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-08"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-08"},{"lineNumber":46,"author":{"gitId":"chiageng"},"content":" return true;","lastModifiedDate":"2024-03-08"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-08"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":" if (!(other instanceof Staff)) {","lastModifiedDate":"2024-03-08"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":" return false;","lastModifiedDate":"2024-03-08"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":53,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":" Staff otherPerson \u003d (Staff) other;","lastModifiedDate":"2024-03-08"},{"lineNumber":55,"author":{"gitId":"chiageng"},"content":" return super.equals(otherPerson)","lastModifiedDate":"2024-03-08"},{"lineNumber":56,"author":{"gitId":"chiageng"},"content":" \u0026\u0026 salary.equals(otherPerson.salary)","lastModifiedDate":"2024-03-08"},{"lineNumber":57,"author":{"gitId":"chiageng"},"content":" \u0026\u0026 employment.equals(otherPerson.employment);","lastModifiedDate":"2024-03-08"},{"lineNumber":58,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":59,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":60,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-08"},{"lineNumber":61,"author":{"gitId":"chiageng"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-08"},{"lineNumber":62,"author":{"gitId":"chiageng"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2024-03-08"},{"lineNumber":63,"author":{"gitId":"chiageng"},"content":" return Objects.hash(super.hashCode(), salary, employment);","lastModifiedDate":"2024-03-08"},{"lineNumber":64,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":65,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":66,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-08"},{"lineNumber":67,"author":{"gitId":"chiageng"},"content":" public String toString() {","lastModifiedDate":"2024-03-08"},{"lineNumber":68,"author":{"gitId":"chiageng"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-09"},{"lineNumber":69,"author":{"gitId":"chiageng"},"content":" .add(\"name\", getName())","lastModifiedDate":"2024-03-09"},{"lineNumber":70,"author":{"gitId":"chiageng"},"content":" .add(\"phone\", getPhone())","lastModifiedDate":"2024-03-09"},{"lineNumber":71,"author":{"gitId":"chiageng"},"content":" .add(\"email\", getEmail())","lastModifiedDate":"2024-03-09"},{"lineNumber":72,"author":{"gitId":"chiageng"},"content":" .add(\"address\", getAddress())","lastModifiedDate":"2024-03-09"},{"lineNumber":73,"author":{"gitId":"chiageng"},"content":" .add(\"tags\", getTags())","lastModifiedDate":"2024-03-09"},{"lineNumber":74,"author":{"gitId":"chiageng"},"content":" .add(\"salary\", salary)","lastModifiedDate":"2024-03-08"},{"lineNumber":75,"author":{"gitId":"chiageng"},"content":" .add(\"employment\", employment)","lastModifiedDate":"2024-03-08"},{"lineNumber":76,"author":{"gitId":"chiageng"},"content":" .toString();","lastModifiedDate":"2024-03-08"},{"lineNumber":77,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":78,"author":{"gitId":"chiageng"},"content":"}","lastModifiedDate":"2024-03-08"}],"authorContributionMap":{"chiageng":77,"jannaleong":1}},{"path":"src/main/java/seedu/address/model/person/Supplier.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chiageng"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-08"},{"lineNumber":2,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":3,"author":{"gitId":"chiageng"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-09"},{"lineNumber":4,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":5,"author":{"gitId":"chiageng"},"content":"import java.util.Objects;","lastModifiedDate":"2024-03-08"},{"lineNumber":6,"author":{"gitId":"chiageng"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-08"},{"lineNumber":7,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":"/**","lastModifiedDate":"2024-03-08"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":" * Represents a Supplier in the address book.","lastModifiedDate":"2024-03-08"},{"lineNumber":13,"author":{"gitId":"chiageng"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-03-08"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":"public class Supplier extends Person {","lastModifiedDate":"2024-03-08"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":" // Data fields","lastModifiedDate":"2024-03-08"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":" private final Product product;","lastModifiedDate":"2024-03-08"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":" private final Price price;","lastModifiedDate":"2024-03-08"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":20,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-08"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-03-08"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":23,"author":{"gitId":"chiageng"},"content":" public Supplier(Name name, Phone phone, Email email, Address address, Set\u003cTag\u003e tags,","lastModifiedDate":"2024-03-08"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":" Product product, Price price) {","lastModifiedDate":"2024-03-08"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":" super(name, phone, email, address, new Note(\"\"), tags);","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"chiageng"},"content":" requireAllNonNull(product, price);","lastModifiedDate":"2024-03-08"},{"lineNumber":27,"author":{"gitId":"chiageng"},"content":" this.product \u003d product;","lastModifiedDate":"2024-03-08"},{"lineNumber":28,"author":{"gitId":"chiageng"},"content":" this.price \u003d price;","lastModifiedDate":"2024-03-08"},{"lineNumber":29,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":30,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":31,"author":{"gitId":"chiageng"},"content":" public Price getPrice() {","lastModifiedDate":"2024-03-08"},{"lineNumber":32,"author":{"gitId":"chiageng"},"content":" return price;","lastModifiedDate":"2024-03-08"},{"lineNumber":33,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":34,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":35,"author":{"gitId":"chiageng"},"content":" public Product getProduct() {","lastModifiedDate":"2024-03-08"},{"lineNumber":36,"author":{"gitId":"chiageng"},"content":" return product;","lastModifiedDate":"2024-03-08"},{"lineNumber":37,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":38,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":39,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-08"},{"lineNumber":40,"author":{"gitId":"chiageng"},"content":" * Returns true if both staffs have the same identity and data fields.","lastModifiedDate":"2024-03-08"},{"lineNumber":41,"author":{"gitId":"chiageng"},"content":" * This defines a stronger notion of equality between two staff.","lastModifiedDate":"2024-03-08"},{"lineNumber":42,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":43,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-08"},{"lineNumber":44,"author":{"gitId":"chiageng"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-08"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-08"},{"lineNumber":46,"author":{"gitId":"chiageng"},"content":" return true;","lastModifiedDate":"2024-03-08"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-08"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":" if (!(other instanceof Supplier)) {","lastModifiedDate":"2024-03-08"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":" return false;","lastModifiedDate":"2024-03-08"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":53,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":" Supplier otherPerson \u003d (Supplier) other;","lastModifiedDate":"2024-03-08"},{"lineNumber":55,"author":{"gitId":"chiageng"},"content":" return super.equals(otherPerson)","lastModifiedDate":"2024-03-08"},{"lineNumber":56,"author":{"gitId":"chiageng"},"content":" \u0026\u0026 product.equals(otherPerson.product)","lastModifiedDate":"2024-03-08"},{"lineNumber":57,"author":{"gitId":"chiageng"},"content":" \u0026\u0026 price.equals(otherPerson.price);","lastModifiedDate":"2024-03-08"},{"lineNumber":58,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":59,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":60,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-08"},{"lineNumber":61,"author":{"gitId":"chiageng"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-08"},{"lineNumber":62,"author":{"gitId":"chiageng"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2024-03-08"},{"lineNumber":63,"author":{"gitId":"chiageng"},"content":" return Objects.hash(super.hashCode(), product, price);","lastModifiedDate":"2024-03-08"},{"lineNumber":64,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":65,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":66,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-08"},{"lineNumber":67,"author":{"gitId":"chiageng"},"content":" public String toString() {","lastModifiedDate":"2024-03-08"},{"lineNumber":68,"author":{"gitId":"chiageng"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-09"},{"lineNumber":69,"author":{"gitId":"chiageng"},"content":" .add(\"name\", getName())","lastModifiedDate":"2024-03-09"},{"lineNumber":70,"author":{"gitId":"chiageng"},"content":" .add(\"phone\", getPhone())","lastModifiedDate":"2024-03-09"},{"lineNumber":71,"author":{"gitId":"chiageng"},"content":" .add(\"email\", getEmail())","lastModifiedDate":"2024-03-09"},{"lineNumber":72,"author":{"gitId":"chiageng"},"content":" .add(\"address\", getAddress())","lastModifiedDate":"2024-03-09"},{"lineNumber":73,"author":{"gitId":"chiageng"},"content":" .add(\"tags\", getTags())","lastModifiedDate":"2024-03-09"},{"lineNumber":74,"author":{"gitId":"chiageng"},"content":" .add(\"product\", product)","lastModifiedDate":"2024-03-08"},{"lineNumber":75,"author":{"gitId":"chiageng"},"content":" .add(\"price\", price)","lastModifiedDate":"2024-03-08"},{"lineNumber":76,"author":{"gitId":"chiageng"},"content":" .toString();","lastModifiedDate":"2024-03-08"},{"lineNumber":77,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":78,"author":{"gitId":"chiageng"},"content":"}","lastModifiedDate":"2024-03-08"}],"authorContributionMap":{"chiageng":77,"jannaleong":1}},{"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.Person;","lastModifiedDate":"2016-12-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":" /*","lastModifiedDate":"2024-03-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":" new Person(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2024-03-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"),","lastModifiedDate":"2024-03-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":" getTagSet(\"friends\")),","lastModifiedDate":"2024-03-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":" new Person(new Name(\"Bernice Yu\"), new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2024-03-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"),","lastModifiedDate":"2024-03-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":" getTagSet(\"colleagues\", \"friends\")),","lastModifiedDate":"2024-03-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2024-03-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"),","lastModifiedDate":"2024-03-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":" getTagSet(\"neighbours\")),","lastModifiedDate":"2024-03-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":" new Person(new Name(\"David Li\"), new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2024-03-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"),","lastModifiedDate":"2024-03-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":" getTagSet(\"family\")),","lastModifiedDate":"2024-03-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2024-03-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"),","lastModifiedDate":"2024-03-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":" getTagSet(\"classmates\")),","lastModifiedDate":"2024-03-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2024-03-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"),","lastModifiedDate":"2024-03-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" getTagSet(\"colleagues\"))","lastModifiedDate":"2024-03-09"},{"lineNumber":37,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":38,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20"},{"lineNumber":42,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07"},{"lineNumber":43,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":58,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"chiageng":2,"-":56}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedMaintainer.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chiageng"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-09"},{"lineNumber":2,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":3,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Maintainer;","lastModifiedDate":"2024-03-09"},{"lineNumber":4,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-09"},{"lineNumber":5,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":6,"author":{"gitId":"chiageng"},"content":"/**","lastModifiedDate":"2024-03-09"},{"lineNumber":7,"author":{"gitId":"chiageng"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2024-03-09"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":"class JsonAdaptedMaintainer extends JsonAdaptedPerson {","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2024-03-09"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":13,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2024-03-09"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":" public JsonAdaptedMaintainer(Person source) {","lastModifiedDate":"2024-03-09"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":" super(source);","lastModifiedDate":"2024-03-09"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":" Maintainer supplier \u003d (Maintainer) source;","lastModifiedDate":"2024-03-09"},{"lineNumber":20,"author":{"gitId":"chiageng"},"content":" setSkill(supplier.getSkill().value);","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":" setCommission(supplier.getCommission().value);","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":23,"author":{"gitId":"chiageng"},"content":"}","lastModifiedDate":"2024-03-09"}],"authorContributionMap":{"chiageng":23}},{"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":"2024-03-09"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Commission;","lastModifiedDate":"2024-03-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-09"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Employment;","lastModifiedDate":"2024-03-09"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Maintainer;","lastModifiedDate":"2024-03-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-09"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":"import seedu.address.model.person.Note;","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-09"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Price;","lastModifiedDate":"2024-03-09"},{"lineNumber":23,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Product;","lastModifiedDate":"2024-03-09"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Salary;","lastModifiedDate":"2024-03-09"},{"lineNumber":25,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Skill;","lastModifiedDate":"2024-03-09"},{"lineNumber":26,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Staff;","lastModifiedDate":"2024-03-09"},{"lineNumber":27,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Supplier;","lastModifiedDate":"2024-03-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","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":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"chiageng"},"content":" private String employment;","lastModifiedDate":"2024-03-09"},{"lineNumber":42,"author":{"gitId":"chiageng"},"content":" private String salary;","lastModifiedDate":"2024-03-09"},{"lineNumber":43,"author":{"gitId":"chiageng"},"content":" private String product;","lastModifiedDate":"2024-03-09"},{"lineNumber":44,"author":{"gitId":"chiageng"},"content":" private String price;","lastModifiedDate":"2024-03-09"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":" private String skill;","lastModifiedDate":"2024-03-09"},{"lineNumber":46,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":" private String commission;","lastModifiedDate":"2024-03-09"},{"lineNumber":48,"author":{"gitId":"jannaleong"},"content":" private String note;","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"jannaleong"},"content":" @JsonProperty(\"note\") String note,","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"chiageng"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags,","lastModifiedDate":"2024-03-09"},{"lineNumber":59,"author":{"gitId":"chiageng"},"content":" @JsonProperty(\"salary\") String salary,","lastModifiedDate":"2024-03-09"},{"lineNumber":60,"author":{"gitId":"chiageng"},"content":" @JsonProperty(\"employment\") String employment,","lastModifiedDate":"2024-03-09"},{"lineNumber":61,"author":{"gitId":"chiageng"},"content":" @JsonProperty(\"product\") String product,","lastModifiedDate":"2024-03-09"},{"lineNumber":62,"author":{"gitId":"chiageng"},"content":" @JsonProperty(\"price\") String price,","lastModifiedDate":"2024-03-09"},{"lineNumber":63,"author":{"gitId":"chiageng"},"content":" @JsonProperty(\"skill\") String skill,","lastModifiedDate":"2024-03-09"},{"lineNumber":64,"author":{"gitId":"chiageng"},"content":" @JsonProperty(\"commission\") String commission) {","lastModifiedDate":"2024-03-09"},{"lineNumber":65,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"chiageng"},"content":" this.salary \u003d salary;","lastModifiedDate":"2024-03-09"},{"lineNumber":70,"author":{"gitId":"chiageng"},"content":" this.employment \u003d employment;","lastModifiedDate":"2024-03-09"},{"lineNumber":71,"author":{"gitId":"chiageng"},"content":" this.product \u003d product;","lastModifiedDate":"2024-03-09"},{"lineNumber":72,"author":{"gitId":"chiageng"},"content":" this.price \u003d price;","lastModifiedDate":"2024-03-09"},{"lineNumber":73,"author":{"gitId":"chiageng"},"content":" this.skill \u003d skill;","lastModifiedDate":"2024-03-09"},{"lineNumber":74,"author":{"gitId":"jannaleong"},"content":" this.note \u003d note;","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"chiageng"},"content":" this.commission \u003d commission;","lastModifiedDate":"2024-03-09"},{"lineNumber":76,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09"},{"lineNumber":77,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","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":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"jannaleong"},"content":" note \u003d source.getNote().toString();","lastModifiedDate":"2024-03-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09"},{"lineNumber":91,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","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":"chiageng"},"content":" public void setEmployment(String employment) {","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"chiageng"},"content":" this.employment \u003d employment;","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"chiageng"},"content":" public void setSalary(String salary) {","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"chiageng"},"content":" this.salary \u003d salary;","lastModifiedDate":"2024-03-18"},{"lineNumber":101,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":102,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":103,"author":{"gitId":"chiageng"},"content":" public void setProduct(String product) {","lastModifiedDate":"2024-03-18"},{"lineNumber":104,"author":{"gitId":"chiageng"},"content":" this.product \u003d product;","lastModifiedDate":"2024-03-18"},{"lineNumber":105,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":106,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":107,"author":{"gitId":"chiageng"},"content":" public void setPrice(String price) {","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"chiageng"},"content":" this.price \u003d price;","lastModifiedDate":"2024-03-18"},{"lineNumber":109,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":110,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"chiageng"},"content":" public void setSkill(String skill) {","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"chiageng"},"content":" this.skill \u003d skill;","lastModifiedDate":"2024-03-18"},{"lineNumber":113,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":115,"author":{"gitId":"chiageng"},"content":" public void setCommission(String commission) {","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"chiageng"},"content":" this.commission \u003d commission;","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":118,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":119,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09"},{"lineNumber":127,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":130,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":136,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":138,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":139,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":141,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":142,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":144,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":146,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":147,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":149,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":150,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":154,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":155,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":157,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":158,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":160,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13"},{"lineNumber":163,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":164,"author":{"gitId":"chiageng"},"content":" if (salary !\u003d null \u0026\u0026 employment !\u003d null) {","lastModifiedDate":"2024-03-09"},{"lineNumber":165,"author":{"gitId":"chiageng"},"content":" if (!Salary.isValidSalary(salary)) {","lastModifiedDate":"2024-03-09"},{"lineNumber":166,"author":{"gitId":"chiageng"},"content":" throw new IllegalValueException(Salary.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-09"},{"lineNumber":167,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":168,"author":{"gitId":"chiageng"},"content":" if (!Employment.isValidEmployment(employment)) {","lastModifiedDate":"2024-03-09"},{"lineNumber":169,"author":{"gitId":"chiageng"},"content":" throw new IllegalValueException(Employment.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-09"},{"lineNumber":170,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":171,"author":{"gitId":"chiageng"},"content":" final Salary modelSalary \u003d new Salary(salary);","lastModifiedDate":"2024-03-09"},{"lineNumber":172,"author":{"gitId":"chiageng"},"content":" final Employment modelEmployment \u003d new Employment(employment);","lastModifiedDate":"2024-03-09"},{"lineNumber":173,"author":{"gitId":"jannaleong"},"content":" Staff currStaff \u003d new Staff(modelName, modelPhone, modelEmail, modelAddress,","lastModifiedDate":"2024-03-23"},{"lineNumber":174,"author":{"gitId":"jannaleong"},"content":" modelTags, modelSalary, modelEmployment);","lastModifiedDate":"2024-03-23"},{"lineNumber":175,"author":{"gitId":"jannaleong"},"content":" currStaff.setNoteContent(note);","lastModifiedDate":"2024-03-23"},{"lineNumber":176,"author":{"gitId":"jannaleong"},"content":" return currStaff;","lastModifiedDate":"2024-03-23"},{"lineNumber":177,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":178,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":179,"author":{"gitId":"chiageng"},"content":" if (product !\u003d null \u0026\u0026 price !\u003d null) {","lastModifiedDate":"2024-03-09"},{"lineNumber":180,"author":{"gitId":"chiageng"},"content":" if (!Product.isValidProduct(product)) {","lastModifiedDate":"2024-03-09"},{"lineNumber":181,"author":{"gitId":"chiageng"},"content":" throw new IllegalValueException(Product.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-09"},{"lineNumber":182,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":183,"author":{"gitId":"chiageng"},"content":" if (!Price.isValidPrice(price)) {","lastModifiedDate":"2024-03-09"},{"lineNumber":184,"author":{"gitId":"chiageng"},"content":" throw new IllegalValueException(Price.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-09"},{"lineNumber":185,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":186,"author":{"gitId":"chiageng"},"content":" final Product modelProduct \u003d new Product(product);","lastModifiedDate":"2024-03-09"},{"lineNumber":187,"author":{"gitId":"chiageng"},"content":" final Price modelPrice \u003d new Price(price);","lastModifiedDate":"2024-03-09"},{"lineNumber":188,"author":{"gitId":"jannaleong"},"content":" Supplier currSupplier \u003d new Supplier(modelName, modelPhone, modelEmail, modelAddress, modelTags,","lastModifiedDate":"2024-03-23"},{"lineNumber":189,"author":{"gitId":"chiageng"},"content":" modelProduct, modelPrice);","lastModifiedDate":"2024-03-09"},{"lineNumber":190,"author":{"gitId":"jannaleong"},"content":" currSupplier.setNoteContent(note);","lastModifiedDate":"2024-03-23"},{"lineNumber":191,"author":{"gitId":"jannaleong"},"content":" return currSupplier;","lastModifiedDate":"2024-03-23"},{"lineNumber":192,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":193,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":194,"author":{"gitId":"chiageng"},"content":" if (skill !\u003d null \u0026\u0026 commission !\u003d null) {","lastModifiedDate":"2024-03-09"},{"lineNumber":195,"author":{"gitId":"chiageng"},"content":" if (!Skill.isValidSkill(skill)) {","lastModifiedDate":"2024-03-09"},{"lineNumber":196,"author":{"gitId":"chiageng"},"content":" throw new IllegalValueException(Skill.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-09"},{"lineNumber":197,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":198,"author":{"gitId":"chiageng"},"content":" if (!Commission.isValidCommission(commission)) {","lastModifiedDate":"2024-03-09"},{"lineNumber":199,"author":{"gitId":"chiageng"},"content":" throw new IllegalValueException(Commission.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-09"},{"lineNumber":200,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":201,"author":{"gitId":"chiageng"},"content":" final Skill modelSkill \u003d new Skill(skill);","lastModifiedDate":"2024-03-09"},{"lineNumber":202,"author":{"gitId":"chiageng"},"content":" final Commission modelCommission \u003d new Commission(commission);","lastModifiedDate":"2024-03-09"},{"lineNumber":203,"author":{"gitId":"jannaleong"},"content":" Maintainer currMaintainer \u003d new Maintainer(modelName, modelPhone, modelEmail, modelAddress, modelTags,","lastModifiedDate":"2024-03-23"},{"lineNumber":204,"author":{"gitId":"chiageng"},"content":" modelSkill, modelCommission);","lastModifiedDate":"2024-03-09"},{"lineNumber":205,"author":{"gitId":"jannaleong"},"content":" currMaintainer.setNoteContent(note);","lastModifiedDate":"2024-03-23"},{"lineNumber":206,"author":{"gitId":"jannaleong"},"content":" return currMaintainer;","lastModifiedDate":"2024-03-23"},{"lineNumber":207,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":208,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":209,"author":{"gitId":"jannaleong"},"content":" if (note \u003d\u003d null) {","lastModifiedDate":"2024-03-18"},{"lineNumber":210,"author":{"gitId":"jannaleong"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Note.class.getSimpleName()));","lastModifiedDate":"2024-03-18"},{"lineNumber":211,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":212,"author":{"gitId":"jannaleong"},"content":" if (!Note.isValidNote(note)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":213,"author":{"gitId":"jannaleong"},"content":" throw new IllegalValueException(Note.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":214,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":215,"author":{"gitId":"jannaleong"},"content":" final Note modelNote \u003d new Note(note);","lastModifiedDate":"2024-03-18"},{"lineNumber":216,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":217,"author":{"gitId":"jannaleong"},"content":" return new Person(modelName, modelPhone, modelEmail, modelAddress, modelNote, modelTags);","lastModifiedDate":"2024-03-18"},{"lineNumber":218,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":220,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"chiageng":89,"jannaleong":24,"-":107}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedStaff.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chiageng"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-09"},{"lineNumber":2,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":3,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-09"},{"lineNumber":4,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Staff;","lastModifiedDate":"2024-03-09"},{"lineNumber":5,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":6,"author":{"gitId":"chiageng"},"content":"/**","lastModifiedDate":"2024-03-09"},{"lineNumber":7,"author":{"gitId":"chiageng"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2024-03-09"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":"class JsonAdaptedStaff extends JsonAdaptedPerson {","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2024-03-09"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2024-03-09"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":" public JsonAdaptedStaff(Person source) {","lastModifiedDate":"2024-03-09"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":" super(source);","lastModifiedDate":"2024-03-09"},{"lineNumber":20,"author":{"gitId":"chiageng"},"content":" Staff staff \u003d (Staff) source;","lastModifiedDate":"2024-03-09"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":" setSalary(staff.getSalary().value);","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"chiageng"},"content":" setEmployment(staff.getEmployment().value);","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":26,"author":{"gitId":"chiageng"},"content":"}","lastModifiedDate":"2024-03-09"}],"authorContributionMap":{"chiageng":26}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedSupplier.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chiageng"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-09"},{"lineNumber":2,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":3,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-09"},{"lineNumber":4,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Supplier;","lastModifiedDate":"2024-03-09"},{"lineNumber":5,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":6,"author":{"gitId":"chiageng"},"content":"/**","lastModifiedDate":"2024-03-09"},{"lineNumber":7,"author":{"gitId":"chiageng"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2024-03-09"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":"class JsonAdaptedSupplier extends JsonAdaptedPerson {","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2024-03-09"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":13,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2024-03-09"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":" public JsonAdaptedSupplier(Person source) {","lastModifiedDate":"2024-03-09"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":" super(source);","lastModifiedDate":"2024-03-09"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":" Supplier supplier \u003d (Supplier) source;","lastModifiedDate":"2024-03-09"},{"lineNumber":20,"author":{"gitId":"chiageng"},"content":" setProduct(supplier.getProduct().value);","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":" setPrice(supplier.getPrice().value);","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":23,"author":{"gitId":"chiageng"},"content":"}","lastModifiedDate":"2024-03-09"}],"authorContributionMap":{"chiageng":23}},{"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":"chiageng"},"content":"import seedu.address.model.person.Maintainer;","lastModifiedDate":"2024-03-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Staff;","lastModifiedDate":"2024-03-09"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Supplier;","lastModifiedDate":"2024-03-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * An Immutable AddressBook that is serializable to JSON format.","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"@JsonRootName(value \u003d \"addressbook\")","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"class JsonSerializableAddressBook {","lastModifiedDate":"2018-12-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"Persons list contains duplicate person(s).\";","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"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":"-"},"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":"-"},"content":" public JsonSerializableAddressBook(@JsonProperty(\"persons\") List\u003cJsonAdaptedPerson\u003e persons) {","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" this.persons.addAll(persons);","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":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Converts a given {@code ReadOnlyAddressBook} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * @param source future changes to this will not affect the created {@code JsonSerializableAddressBook}.","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public JsonSerializableAddressBook(ReadOnlyAddressBook source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"chiageng"},"content":" persons.addAll(source.getPersonList()","lastModifiedDate":"2024-03-09"},{"lineNumber":44,"author":{"gitId":"chiageng"},"content":" .stream()","lastModifiedDate":"2024-03-09"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":" .map(person -\u003e {","lastModifiedDate":"2024-03-09"},{"lineNumber":46,"author":{"gitId":"chiageng"},"content":" if (person instanceof Staff) {","lastModifiedDate":"2024-03-09"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":" return new JsonAdaptedStaff(person);","lastModifiedDate":"2024-03-09"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":" } else if (person instanceof Maintainer) {","lastModifiedDate":"2024-03-09"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":" return new JsonAdaptedMaintainer(person);","lastModifiedDate":"2024-03-09"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":" } else if (person instanceof Supplier) {","lastModifiedDate":"2024-03-09"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":" return new JsonAdaptedSupplier(person);","lastModifiedDate":"2024-03-09"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":" } else {","lastModifiedDate":"2024-03-09"},{"lineNumber":53,"author":{"gitId":"chiageng"},"content":" return new JsonAdaptedPerson(person);","lastModifiedDate":"2024-03-09"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":55,"author":{"gitId":"chiageng"},"content":" })","lastModifiedDate":"2024-03-09"},{"lineNumber":56,"author":{"gitId":"chiageng"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2024-03-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","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":" * Converts this address book into the model\u0027s {@code AddressBook} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated.","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public AddressBook toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" for (JsonAdaptedPerson jsonAdaptedPerson : persons) {","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" Person person \u003d jsonAdaptedPerson.toModelType();","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":69,"author":{"gitId":"-"},"content":" if (addressBook.hasPerson(person)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"chiageng":18,"-":59}},{"path":"src/main/java/seedu/address/ui/HelpDeleteWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":"import javafx.scene.input.Clipboard;","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":"import javafx.scene.input.ClipboardContent;","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":"/**","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":" * Controller for a help page.","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":"public class HelpDeleteWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":" public static final String USERGUIDE_URL \u003d \"https://ay2324s2-cs2103t-w10-2.github.io/tp/UserGuide.html\";","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":" public static final String HELP_MESSAGE \u003d \"Deletes the specified person from the Pooch Planner\"","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":" + \"\\n\" + \"\" + \"\\n\"","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":" + \"Format: /delete ; name : [name] \"","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"jannaleong"},"content":" + \"\\n\" + \"\" + \"\\n\"","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":" + \"Go to our UG for more information : \" + USERGUIDE_URL;","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(HelpWindow.class);","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"jannaleong"},"content":" private static final String FXML \u003d \"HelpWindow.fxml\";","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"jannaleong"},"content":" @FXML","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"jannaleong"},"content":" private Button copyButton;","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"jannaleong"},"content":" @FXML","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"jannaleong"},"content":" private Label helpMessage;","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"jannaleong"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"jannaleong"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"jannaleong"},"content":" * @param root Stage to use as the root of the HelpWindow.","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"jannaleong"},"content":" public HelpDeleteWindow(Stage root) {","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"jannaleong"},"content":" super(FXML, root);","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"jannaleong"},"content":" helpMessage.setText(HELP_MESSAGE);","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"jannaleong"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"jannaleong"},"content":" public HelpDeleteWindow() {","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"jannaleong"},"content":" this(new Stage());","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"jannaleong"},"content":" * Shows the help window.","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"jannaleong"},"content":" * @throws IllegalStateException","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"jannaleong"},"content":" * \u003cul\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"jannaleong"},"content":" * \u003cli\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"jannaleong"},"content":" * if this method is called on a thread other than the JavaFX Application Thread.","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"jannaleong"},"content":" * \u003c/li\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"jannaleong"},"content":" * \u003cli\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"jannaleong"},"content":" * if this method is called during animation or layout processing.","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"jannaleong"},"content":" * \u003c/li\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"jannaleong"},"content":" * \u003cli\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"jannaleong"},"content":" * if this method is called on the primary stage.","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"jannaleong"},"content":" * \u003c/li\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"jannaleong"},"content":" * \u003cli\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"jannaleong"},"content":" * if {@code dialogStage} is already showing.","lastModifiedDate":"2024-03-11"},{"lineNumber":66,"author":{"gitId":"jannaleong"},"content":" * \u003c/li\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"jannaleong"},"content":" * \u003c/ul\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":68,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"jannaleong"},"content":" public void show() {","lastModifiedDate":"2024-03-11"},{"lineNumber":70,"author":{"gitId":"jannaleong"},"content":" String loggerSuccessMsg \u003d \"Showing help page about the application.\";","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"jannaleong"},"content":" logger.fine(loggerSuccessMsg);","lastModifiedDate":"2024-03-13"},{"lineNumber":72,"author":{"gitId":"jannaleong"},"content":" getRoot().show();","lastModifiedDate":"2024-03-11"},{"lineNumber":73,"author":{"gitId":"jannaleong"},"content":" getRoot().centerOnScreen();","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":75,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":76,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":77,"author":{"gitId":"jannaleong"},"content":" * Returns true if the help window is currently being shown.","lastModifiedDate":"2024-03-11"},{"lineNumber":78,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":79,"author":{"gitId":"jannaleong"},"content":" public boolean isShowing() {","lastModifiedDate":"2024-03-11"},{"lineNumber":80,"author":{"gitId":"jannaleong"},"content":" return getRoot().isShowing();","lastModifiedDate":"2024-03-11"},{"lineNumber":81,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":82,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":83,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":84,"author":{"gitId":"jannaleong"},"content":" * Hides the help window.","lastModifiedDate":"2024-03-11"},{"lineNumber":85,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":86,"author":{"gitId":"jannaleong"},"content":" public void hide() {","lastModifiedDate":"2024-03-11"},{"lineNumber":87,"author":{"gitId":"jannaleong"},"content":" getRoot().hide();","lastModifiedDate":"2024-03-11"},{"lineNumber":88,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":89,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":90,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":91,"author":{"gitId":"jannaleong"},"content":" * Focuses on the help window.","lastModifiedDate":"2024-03-11"},{"lineNumber":92,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":93,"author":{"gitId":"jannaleong"},"content":" public void focus() {","lastModifiedDate":"2024-03-11"},{"lineNumber":94,"author":{"gitId":"jannaleong"},"content":" getRoot().requestFocus();","lastModifiedDate":"2024-03-11"},{"lineNumber":95,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":96,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":97,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":98,"author":{"gitId":"jannaleong"},"content":" * Copies the URL to the user guide to the clipboard.","lastModifiedDate":"2024-03-11"},{"lineNumber":99,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":100,"author":{"gitId":"jannaleong"},"content":" @FXML","lastModifiedDate":"2024-03-11"},{"lineNumber":101,"author":{"gitId":"jannaleong"},"content":" private void copyUrl() {","lastModifiedDate":"2024-03-11"},{"lineNumber":102,"author":{"gitId":"jannaleong"},"content":" final Clipboard clipboard \u003d Clipboard.getSystemClipboard();","lastModifiedDate":"2024-03-11"},{"lineNumber":103,"author":{"gitId":"jannaleong"},"content":" final ClipboardContent url \u003d new ClipboardContent();","lastModifiedDate":"2024-03-11"},{"lineNumber":104,"author":{"gitId":"jannaleong"},"content":" url.putString(USERGUIDE_URL);","lastModifiedDate":"2024-03-11"},{"lineNumber":105,"author":{"gitId":"jannaleong"},"content":" clipboard.setContent(url);","lastModifiedDate":"2024-03-11"},{"lineNumber":106,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":107,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"jannaleong":107}},{"path":"src/main/java/seedu/address/ui/HelpEditWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":"import javafx.scene.input.Clipboard;","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":"import javafx.scene.input.ClipboardContent;","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":"/**","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":" * Controller for a help page.","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":"public class HelpEditWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":" public static final String USERGUIDE_URL \u003d \"https://ay2324s2-cs2103t-w10-2.github.io/tp/UserGuide.html\";","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":" public static final String HELP_MESSAGE \u003d \"Edit the fields of the specified person in the Pooch Planner\"","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":" + \"\\n\" + \"\" + \"\\n\"","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":" + \"Format:\" + \"\\n\"","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"jannaleong"},"content":" + \"/edit ; name : [name] ; field { [field] : [value] }\" + \"\\n\"","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":" + \"/edit-staff ; name : [name] ; field { [field] : [value] }\" + \"\\n\"","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"jannaleong"},"content":" + \"/edit-supplier ; name : [name] ; field { [field] : [value] }\" + \"\\n\"","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":" + \"/edit-maintainer ; name : [name] ; field { [field] : [value] }\" + \"\\n\"","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"jannaleong"},"content":" + \"\\n\" + \"\" + \"\\n\"","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"jannaleong"},"content":" + \"Go to our UG for more information : \" + USERGUIDE_URL;","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"jannaleong"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(HelpWindow.class);","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"jannaleong"},"content":" private static final String FXML \u003d \"HelpWindow.fxml\";","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"jannaleong"},"content":" @FXML","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"jannaleong"},"content":" private Button copyButton;","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"jannaleong"},"content":" @FXML","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"jannaleong"},"content":" private Label helpMessage;","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"jannaleong"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"jannaleong"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"jannaleong"},"content":" * @param root Stage to use as the root of the HelpWindow.","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"jannaleong"},"content":" public HelpEditWindow(Stage root) {","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"jannaleong"},"content":" super(FXML, root);","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"jannaleong"},"content":" helpMessage.setText(HELP_MESSAGE);","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"jannaleong"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"jannaleong"},"content":" public HelpEditWindow() {","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"jannaleong"},"content":" this(new Stage());","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"jannaleong"},"content":" * Shows the help window.","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"jannaleong"},"content":" * @throws IllegalStateException","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"jannaleong"},"content":" * \u003cul\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"jannaleong"},"content":" * \u003cli\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"jannaleong"},"content":" * if this method is called on a thread other than the JavaFX Application Thread.","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"jannaleong"},"content":" * \u003c/li\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"jannaleong"},"content":" * \u003cli\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"jannaleong"},"content":" * if this method is called during animation or layout processing.","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"jannaleong"},"content":" * \u003c/li\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"jannaleong"},"content":" * \u003cli\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":66,"author":{"gitId":"jannaleong"},"content":" * if this method is called on the primary stage.","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"jannaleong"},"content":" * \u003c/li\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":68,"author":{"gitId":"jannaleong"},"content":" * \u003cli\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"jannaleong"},"content":" * if {@code dialogStage} is already showing.","lastModifiedDate":"2024-03-11"},{"lineNumber":70,"author":{"gitId":"jannaleong"},"content":" * \u003c/li\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":71,"author":{"gitId":"jannaleong"},"content":" * \u003c/ul\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":72,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":73,"author":{"gitId":"jannaleong"},"content":" public void show() {","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"jannaleong"},"content":" String loggerSuccessMsg \u003d \"Showing help page about the application.\";","lastModifiedDate":"2024-03-13"},{"lineNumber":75,"author":{"gitId":"jannaleong"},"content":" logger.fine(loggerSuccessMsg);","lastModifiedDate":"2024-03-13"},{"lineNumber":76,"author":{"gitId":"jannaleong"},"content":" getRoot().show();","lastModifiedDate":"2024-03-11"},{"lineNumber":77,"author":{"gitId":"jannaleong"},"content":" getRoot().centerOnScreen();","lastModifiedDate":"2024-03-11"},{"lineNumber":78,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":79,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":80,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":81,"author":{"gitId":"jannaleong"},"content":" * Returns true if the help window is currently being shown.","lastModifiedDate":"2024-03-11"},{"lineNumber":82,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":83,"author":{"gitId":"jannaleong"},"content":" public boolean isShowing() {","lastModifiedDate":"2024-03-11"},{"lineNumber":84,"author":{"gitId":"jannaleong"},"content":" return getRoot().isShowing();","lastModifiedDate":"2024-03-11"},{"lineNumber":85,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":86,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":87,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":88,"author":{"gitId":"jannaleong"},"content":" * Hides the help window.","lastModifiedDate":"2024-03-11"},{"lineNumber":89,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":90,"author":{"gitId":"jannaleong"},"content":" public void hide() {","lastModifiedDate":"2024-03-11"},{"lineNumber":91,"author":{"gitId":"jannaleong"},"content":" getRoot().hide();","lastModifiedDate":"2024-03-11"},{"lineNumber":92,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":93,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":94,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":95,"author":{"gitId":"jannaleong"},"content":" * Focuses on the help window.","lastModifiedDate":"2024-03-11"},{"lineNumber":96,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":97,"author":{"gitId":"jannaleong"},"content":" public void focus() {","lastModifiedDate":"2024-03-11"},{"lineNumber":98,"author":{"gitId":"jannaleong"},"content":" getRoot().requestFocus();","lastModifiedDate":"2024-03-11"},{"lineNumber":99,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":100,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":101,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":102,"author":{"gitId":"jannaleong"},"content":" * Copies the URL to the user guide to the clipboard.","lastModifiedDate":"2024-03-11"},{"lineNumber":103,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":104,"author":{"gitId":"jannaleong"},"content":" @FXML","lastModifiedDate":"2024-03-11"},{"lineNumber":105,"author":{"gitId":"jannaleong"},"content":" private void copyUrl() {","lastModifiedDate":"2024-03-11"},{"lineNumber":106,"author":{"gitId":"jannaleong"},"content":" final Clipboard clipboard \u003d Clipboard.getSystemClipboard();","lastModifiedDate":"2024-03-11"},{"lineNumber":107,"author":{"gitId":"jannaleong"},"content":" final ClipboardContent url \u003d new ClipboardContent();","lastModifiedDate":"2024-03-11"},{"lineNumber":108,"author":{"gitId":"jannaleong"},"content":" url.putString(USERGUIDE_URL);","lastModifiedDate":"2024-03-11"},{"lineNumber":109,"author":{"gitId":"jannaleong"},"content":" clipboard.setContent(url);","lastModifiedDate":"2024-03-11"},{"lineNumber":110,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":111,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"jannaleong":111}},{"path":"src/main/java/seedu/address/ui/HelpPoochMaintenanceWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":"import javafx.scene.input.Clipboard;","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":"import javafx.scene.input.ClipboardContent;","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":"/**","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":" * Controller for a help page.","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":"public class HelpPoochMaintenanceWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":" public static final String USERGUIDE_URL \u003d \"https://ay2324s2-cs2103t-w10-2.github.io/tp/UserGuide.html\";","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":" public static final String HELP_MESSAGE \u003d \"Adds a pooch maintainer to pooch planner\"","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":" + \"\\n\" + \"\" + \"\\n\"","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":" + \"Format:/pooch-maintainer ; name : [name] ; phone : [phone] ; address : [address] ;\"","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"jannaleong"},"content":" + \" email : [email] ; skill : [skill] ; commission : [commission/hr]\"","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":" + \"\\n\" + \"\" + \"\\n\"","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"jannaleong"},"content":" + \"Go to our UG for more information : \" + USERGUIDE_URL;","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"jannaleong"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(HelpWindow.class);","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"jannaleong"},"content":" private static final String FXML \u003d \"HelpWindow.fxml\";","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"jannaleong"},"content":" @FXML","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"jannaleong"},"content":" private Button copyButton;","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"jannaleong"},"content":" @FXML","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"jannaleong"},"content":" private Label helpMessage;","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"jannaleong"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"jannaleong"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"jannaleong"},"content":" * @param root Stage to use as the root of the HelpWindow.","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"jannaleong"},"content":" public HelpPoochMaintenanceWindow(Stage root) {","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"jannaleong"},"content":" super(FXML, root);","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"jannaleong"},"content":" helpMessage.setText(HELP_MESSAGE);","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"jannaleong"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"jannaleong"},"content":" public HelpPoochMaintenanceWindow() {","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"jannaleong"},"content":" this(new Stage());","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"jannaleong"},"content":" * Shows the help window.","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"jannaleong"},"content":" * @throws IllegalStateException","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"jannaleong"},"content":" * \u003cul\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"jannaleong"},"content":" * \u003cli\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"jannaleong"},"content":" * if this method is called on a thread other than the JavaFX Application Thread.","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"jannaleong"},"content":" * \u003c/li\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"jannaleong"},"content":" * \u003cli\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"jannaleong"},"content":" * if this method is called during animation or layout processing.","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"jannaleong"},"content":" * \u003c/li\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"jannaleong"},"content":" * \u003cli\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"jannaleong"},"content":" * if this method is called on the primary stage.","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"jannaleong"},"content":" * \u003c/li\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"jannaleong"},"content":" * \u003cli\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":66,"author":{"gitId":"jannaleong"},"content":" * if {@code dialogStage} is already showing.","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"jannaleong"},"content":" * \u003c/li\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":68,"author":{"gitId":"jannaleong"},"content":" * \u003c/ul\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":70,"author":{"gitId":"jannaleong"},"content":" public void show() {","lastModifiedDate":"2024-03-11"},{"lineNumber":71,"author":{"gitId":"jannaleong"},"content":" String loggerSuccessMsg \u003d \"Showing help page about the application.\";","lastModifiedDate":"2024-03-13"},{"lineNumber":72,"author":{"gitId":"jannaleong"},"content":" logger.fine(loggerSuccessMsg);","lastModifiedDate":"2024-03-13"},{"lineNumber":73,"author":{"gitId":"jannaleong"},"content":" getRoot().show();","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"jannaleong"},"content":" getRoot().centerOnScreen();","lastModifiedDate":"2024-03-11"},{"lineNumber":75,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":76,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":77,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":78,"author":{"gitId":"jannaleong"},"content":" * Returns true if the help window is currently being shown.","lastModifiedDate":"2024-03-11"},{"lineNumber":79,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":80,"author":{"gitId":"jannaleong"},"content":" public boolean isShowing() {","lastModifiedDate":"2024-03-11"},{"lineNumber":81,"author":{"gitId":"jannaleong"},"content":" return getRoot().isShowing();","lastModifiedDate":"2024-03-11"},{"lineNumber":82,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":83,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":84,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":85,"author":{"gitId":"jannaleong"},"content":" * Hides the help window.","lastModifiedDate":"2024-03-11"},{"lineNumber":86,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":87,"author":{"gitId":"jannaleong"},"content":" public void hide() {","lastModifiedDate":"2024-03-11"},{"lineNumber":88,"author":{"gitId":"jannaleong"},"content":" getRoot().hide();","lastModifiedDate":"2024-03-11"},{"lineNumber":89,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":90,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":91,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":92,"author":{"gitId":"jannaleong"},"content":" * Focuses on the help window.","lastModifiedDate":"2024-03-11"},{"lineNumber":93,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":94,"author":{"gitId":"jannaleong"},"content":" public void focus() {","lastModifiedDate":"2024-03-11"},{"lineNumber":95,"author":{"gitId":"jannaleong"},"content":" getRoot().requestFocus();","lastModifiedDate":"2024-03-11"},{"lineNumber":96,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":97,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":98,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":99,"author":{"gitId":"jannaleong"},"content":" * Copies the URL to the user guide to the clipboard.","lastModifiedDate":"2024-03-11"},{"lineNumber":100,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":101,"author":{"gitId":"jannaleong"},"content":" @FXML","lastModifiedDate":"2024-03-11"},{"lineNumber":102,"author":{"gitId":"jannaleong"},"content":" private void copyUrl() {","lastModifiedDate":"2024-03-11"},{"lineNumber":103,"author":{"gitId":"jannaleong"},"content":" final Clipboard clipboard \u003d Clipboard.getSystemClipboard();","lastModifiedDate":"2024-03-11"},{"lineNumber":104,"author":{"gitId":"jannaleong"},"content":" final ClipboardContent url \u003d new ClipboardContent();","lastModifiedDate":"2024-03-11"},{"lineNumber":105,"author":{"gitId":"jannaleong"},"content":" url.putString(USERGUIDE_URL);","lastModifiedDate":"2024-03-11"},{"lineNumber":106,"author":{"gitId":"jannaleong"},"content":" clipboard.setContent(url);","lastModifiedDate":"2024-03-11"},{"lineNumber":107,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":108,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"jannaleong":108}},{"path":"src/main/java/seedu/address/ui/HelpPoochStaffWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":"import javafx.scene.input.Clipboard;","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":"import javafx.scene.input.ClipboardContent;","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":"/**","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":" * Controller for a help page.","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":"public class HelpPoochStaffWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":" public static final String USERGUIDE_URL \u003d \"https://ay2324s2-cs2103t-w10-2.github.io/tp/UserGuide.html\";","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":" public static final String HELP_MESSAGE \u003d \"Adds a pooch staff to pooch planner\"","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":" + \"\\n\" + \"\" + \"\\n\"","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":" + \"Format: /pooch-staff ; name : [name] ; phone : [phone] ; address : [address] ;\"","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"jannaleong"},"content":" + \" email : [email] ; salary : [salary/hr] ; employment : [part/full]\"","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":" + \"\\n\" + \"\" + \"\\n\"","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"jannaleong"},"content":" + \"Go to our UG for more information : \" + USERGUIDE_URL;","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"jannaleong"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(HelpWindow.class);","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"jannaleong"},"content":" private static final String FXML \u003d \"HelpWindow.fxml\";","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"jannaleong"},"content":" @FXML","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"jannaleong"},"content":" private Button copyButton;","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"jannaleong"},"content":" @FXML","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"jannaleong"},"content":" private Label helpMessage;","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"jannaleong"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"jannaleong"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"jannaleong"},"content":" * @param root Stage to use as the root of the HelpWindow.","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"jannaleong"},"content":" public HelpPoochStaffWindow(Stage root) {","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"jannaleong"},"content":" super(FXML, root);","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"jannaleong"},"content":" helpMessage.setText(HELP_MESSAGE);","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"jannaleong"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"jannaleong"},"content":" public HelpPoochStaffWindow() {","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"jannaleong"},"content":" this(new Stage());","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"jannaleong"},"content":" * Shows the help window.","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"jannaleong"},"content":" * @throws IllegalStateException","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"jannaleong"},"content":" * \u003cul\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"jannaleong"},"content":" * \u003cli\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"jannaleong"},"content":" * if this method is called on a thread other than the JavaFX Application Thread.","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"jannaleong"},"content":" * \u003c/li\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"jannaleong"},"content":" * \u003cli\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"jannaleong"},"content":" * if this method is called during animation or layout processing.","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"jannaleong"},"content":" * \u003c/li\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"jannaleong"},"content":" * \u003cli\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"jannaleong"},"content":" * if this method is called on the primary stage.","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"jannaleong"},"content":" * \u003c/li\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"jannaleong"},"content":" * \u003cli\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":66,"author":{"gitId":"jannaleong"},"content":" * if {@code dialogStage} is already showing.","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"jannaleong"},"content":" * \u003c/li\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":68,"author":{"gitId":"jannaleong"},"content":" * \u003c/ul\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":70,"author":{"gitId":"jannaleong"},"content":" public void show() {","lastModifiedDate":"2024-03-11"},{"lineNumber":71,"author":{"gitId":"jannaleong"},"content":" String loggerSuccessMsg \u003d \"Showing help page about the application.\";","lastModifiedDate":"2024-03-13"},{"lineNumber":72,"author":{"gitId":"jannaleong"},"content":" logger.fine(loggerSuccessMsg);","lastModifiedDate":"2024-03-13"},{"lineNumber":73,"author":{"gitId":"jannaleong"},"content":" getRoot().show();","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"jannaleong"},"content":" getRoot().centerOnScreen();","lastModifiedDate":"2024-03-11"},{"lineNumber":75,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":76,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":77,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":78,"author":{"gitId":"jannaleong"},"content":" * Returns true if the help window is currently being shown.","lastModifiedDate":"2024-03-11"},{"lineNumber":79,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":80,"author":{"gitId":"jannaleong"},"content":" public boolean isShowing() {","lastModifiedDate":"2024-03-11"},{"lineNumber":81,"author":{"gitId":"jannaleong"},"content":" return getRoot().isShowing();","lastModifiedDate":"2024-03-11"},{"lineNumber":82,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":83,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":84,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":85,"author":{"gitId":"jannaleong"},"content":" * Hides the help window.","lastModifiedDate":"2024-03-11"},{"lineNumber":86,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":87,"author":{"gitId":"jannaleong"},"content":" public void hide() {","lastModifiedDate":"2024-03-11"},{"lineNumber":88,"author":{"gitId":"jannaleong"},"content":" getRoot().hide();","lastModifiedDate":"2024-03-11"},{"lineNumber":89,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":90,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":91,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":92,"author":{"gitId":"jannaleong"},"content":" * Focuses on the help window.","lastModifiedDate":"2024-03-11"},{"lineNumber":93,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":94,"author":{"gitId":"jannaleong"},"content":" public void focus() {","lastModifiedDate":"2024-03-11"},{"lineNumber":95,"author":{"gitId":"jannaleong"},"content":" getRoot().requestFocus();","lastModifiedDate":"2024-03-11"},{"lineNumber":96,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":97,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":98,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":99,"author":{"gitId":"jannaleong"},"content":" * Copies the URL to the user guide to the clipboard.","lastModifiedDate":"2024-03-11"},{"lineNumber":100,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":101,"author":{"gitId":"jannaleong"},"content":" @FXML","lastModifiedDate":"2024-03-11"},{"lineNumber":102,"author":{"gitId":"jannaleong"},"content":" private void copyUrl() {","lastModifiedDate":"2024-03-11"},{"lineNumber":103,"author":{"gitId":"jannaleong"},"content":" final Clipboard clipboard \u003d Clipboard.getSystemClipboard();","lastModifiedDate":"2024-03-11"},{"lineNumber":104,"author":{"gitId":"jannaleong"},"content":" final ClipboardContent url \u003d new ClipboardContent();","lastModifiedDate":"2024-03-11"},{"lineNumber":105,"author":{"gitId":"jannaleong"},"content":" url.putString(USERGUIDE_URL);","lastModifiedDate":"2024-03-11"},{"lineNumber":106,"author":{"gitId":"jannaleong"},"content":" clipboard.setContent(url);","lastModifiedDate":"2024-03-11"},{"lineNumber":107,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":108,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"jannaleong":108}},{"path":"src/main/java/seedu/address/ui/HelpPoochSupplierWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":"import javafx.scene.input.Clipboard;","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":"import javafx.scene.input.ClipboardContent;","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":"/**","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":" * Controller for a help page.","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":"public class HelpPoochSupplierWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":" public static final String USERGUIDE_URL \u003d \"https://ay2324s2-cs2103t-w10-2.github.io/tp/UserGuide.html\";","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":" public static final String HELP_MESSAGE \u003d \"Adds a pooch supplier to pooch planner\"","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":" + \"\\n\" + \"\" + \"\\n\"","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":" + \"/pooch-supplier ; name : [name] ; phone : [phone] ; address : [address] ;\"","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"jannaleong"},"content":" + \" email : [email] ; product : [product] ; price : [price/(quantity)]\"","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":" + \"\\n\" + \"\" + \"\\n\"","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"jannaleong"},"content":" + \"Go to our UG for more information : \" + USERGUIDE_URL;","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"jannaleong"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(HelpWindow.class);","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"jannaleong"},"content":" private static final String FXML \u003d \"HelpWindow.fxml\";","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"jannaleong"},"content":" @FXML","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"jannaleong"},"content":" private Button copyButton;","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"jannaleong"},"content":" @FXML","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"jannaleong"},"content":" private Label helpMessage;","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"jannaleong"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"jannaleong"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"jannaleong"},"content":" * @param root Stage to use as the root of the HelpWindow.","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"jannaleong"},"content":" public HelpPoochSupplierWindow(Stage root) {","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"jannaleong"},"content":" super(FXML, root);","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"jannaleong"},"content":" helpMessage.setText(HELP_MESSAGE);","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"jannaleong"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"jannaleong"},"content":" public HelpPoochSupplierWindow() {","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"jannaleong"},"content":" this(new Stage());","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"jannaleong"},"content":" * Shows the help window.","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"jannaleong"},"content":" * @throws IllegalStateException","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"jannaleong"},"content":" * \u003cul\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"jannaleong"},"content":" * \u003cli\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"jannaleong"},"content":" * if this method is called on a thread other than the JavaFX Application Thread.","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"jannaleong"},"content":" * \u003c/li\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"jannaleong"},"content":" * \u003cli\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"jannaleong"},"content":" * if this method is called during animation or layout processing.","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"jannaleong"},"content":" * \u003c/li\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"jannaleong"},"content":" * \u003cli\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"jannaleong"},"content":" * if this method is called on the primary stage.","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"jannaleong"},"content":" * \u003c/li\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"jannaleong"},"content":" * \u003cli\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":66,"author":{"gitId":"jannaleong"},"content":" * if {@code dialogStage} is already showing.","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"jannaleong"},"content":" * \u003c/li\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":68,"author":{"gitId":"jannaleong"},"content":" * \u003c/ul\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":70,"author":{"gitId":"jannaleong"},"content":" public void show() {","lastModifiedDate":"2024-03-11"},{"lineNumber":71,"author":{"gitId":"jannaleong"},"content":" String loggerSuccessMsg \u003d \"Showing help page about the application.\";","lastModifiedDate":"2024-03-13"},{"lineNumber":72,"author":{"gitId":"jannaleong"},"content":" logger.fine(loggerSuccessMsg);","lastModifiedDate":"2024-03-13"},{"lineNumber":73,"author":{"gitId":"jannaleong"},"content":" getRoot().show();","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"jannaleong"},"content":" getRoot().centerOnScreen();","lastModifiedDate":"2024-03-11"},{"lineNumber":75,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":76,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":77,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":78,"author":{"gitId":"jannaleong"},"content":" * Returns true if the help window is currently being shown.","lastModifiedDate":"2024-03-11"},{"lineNumber":79,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":80,"author":{"gitId":"jannaleong"},"content":" public boolean isShowing() {","lastModifiedDate":"2024-03-11"},{"lineNumber":81,"author":{"gitId":"jannaleong"},"content":" return getRoot().isShowing();","lastModifiedDate":"2024-03-11"},{"lineNumber":82,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":83,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":84,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":85,"author":{"gitId":"jannaleong"},"content":" * Hides the help window.","lastModifiedDate":"2024-03-11"},{"lineNumber":86,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":87,"author":{"gitId":"jannaleong"},"content":" public void hide() {","lastModifiedDate":"2024-03-11"},{"lineNumber":88,"author":{"gitId":"jannaleong"},"content":" getRoot().hide();","lastModifiedDate":"2024-03-11"},{"lineNumber":89,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":90,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":91,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":92,"author":{"gitId":"jannaleong"},"content":" * Focuses on the help window.","lastModifiedDate":"2024-03-11"},{"lineNumber":93,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":94,"author":{"gitId":"jannaleong"},"content":" public void focus() {","lastModifiedDate":"2024-03-11"},{"lineNumber":95,"author":{"gitId":"jannaleong"},"content":" getRoot().requestFocus();","lastModifiedDate":"2024-03-11"},{"lineNumber":96,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":97,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":98,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":99,"author":{"gitId":"jannaleong"},"content":" * Copies the URL to the user guide to the clipboard.","lastModifiedDate":"2024-03-11"},{"lineNumber":100,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":101,"author":{"gitId":"jannaleong"},"content":" @FXML","lastModifiedDate":"2024-03-11"},{"lineNumber":102,"author":{"gitId":"jannaleong"},"content":" private void copyUrl() {","lastModifiedDate":"2024-03-11"},{"lineNumber":103,"author":{"gitId":"jannaleong"},"content":" final Clipboard clipboard \u003d Clipboard.getSystemClipboard();","lastModifiedDate":"2024-03-11"},{"lineNumber":104,"author":{"gitId":"jannaleong"},"content":" final ClipboardContent url \u003d new ClipboardContent();","lastModifiedDate":"2024-03-11"},{"lineNumber":105,"author":{"gitId":"jannaleong"},"content":" url.putString(USERGUIDE_URL);","lastModifiedDate":"2024-03-11"},{"lineNumber":106,"author":{"gitId":"jannaleong"},"content":" clipboard.setContent(url);","lastModifiedDate":"2024-03-11"},{"lineNumber":107,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":108,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"jannaleong":108}},{"path":"src/main/java/seedu/address/ui/HelpSearchWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":"import javafx.scene.input.Clipboard;","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":"import javafx.scene.input.ClipboardContent;","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":"/**","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":" * Controller for a help page.","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":"public class HelpSearchWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":" public static final String USERGUIDE_URL \u003d \"https://ay2324s2-cs2103t-w10-2.github.io/tp/UserGuide.html\";","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":" public static final String HELP_MESSAGE \u003d \"Searches through the address book using specified fields and keyword\"","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":" + \"\\n\" + \"\" + \"\\n\"","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":" + \"Formats:\" + \"\\n\"","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"jannaleong"},"content":" + \"/search ; name : [full/partial name]\" + \"\\n\"","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":" + \"/search ; phone : [full/partial phone]\" + \"\\n\"","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"jannaleong"},"content":" + \"/search ; address : [full/partial address]\" + \"\\n\"","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":" + \"/search ; email : [full/partial email]\" + \"\\n\"","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"jannaleong"},"content":" + \"/search ; product : [full/partial product name]\" + \"\\n\"","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"jannaleong"},"content":" + \"/search ; employment : [employment]\" + \"\\n\"","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"jannaleong"},"content":" + \"\\n\" + \"\" + \"\\n\"","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"jannaleong"},"content":" + \"Go to our UG for more information : \" + USERGUIDE_URL;","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"jannaleong"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(HelpWindow.class);","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"jannaleong"},"content":" private static final String FXML \u003d \"HelpWindow.fxml\";","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"jannaleong"},"content":" @FXML","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"jannaleong"},"content":" private Button copyButton;","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"jannaleong"},"content":" @FXML","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"jannaleong"},"content":" private Label helpMessage;","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"jannaleong"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"jannaleong"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"jannaleong"},"content":" * @param root Stage to use as the root of the HelpWindow.","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"jannaleong"},"content":" public HelpSearchWindow(Stage root) {","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"jannaleong"},"content":" super(FXML, root);","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"jannaleong"},"content":" helpMessage.setText(HELP_MESSAGE);","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"jannaleong"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"jannaleong"},"content":" public HelpSearchWindow() {","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"jannaleong"},"content":" this(new Stage());","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"jannaleong"},"content":" * Shows the help window.","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"jannaleong"},"content":" * @throws IllegalStateException","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"jannaleong"},"content":" * \u003cul\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"jannaleong"},"content":" * \u003cli\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"jannaleong"},"content":" * if this method is called on a thread other than the JavaFX Application Thread.","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"jannaleong"},"content":" * \u003c/li\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"jannaleong"},"content":" * \u003cli\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"jannaleong"},"content":" * if this method is called during animation or layout processing.","lastModifiedDate":"2024-03-11"},{"lineNumber":66,"author":{"gitId":"jannaleong"},"content":" * \u003c/li\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"jannaleong"},"content":" * \u003cli\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":68,"author":{"gitId":"jannaleong"},"content":" * if this method is called on the primary stage.","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"jannaleong"},"content":" * \u003c/li\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":70,"author":{"gitId":"jannaleong"},"content":" * \u003cli\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":71,"author":{"gitId":"jannaleong"},"content":" * if {@code dialogStage} is already showing.","lastModifiedDate":"2024-03-11"},{"lineNumber":72,"author":{"gitId":"jannaleong"},"content":" * \u003c/li\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":73,"author":{"gitId":"jannaleong"},"content":" * \u003c/ul\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":75,"author":{"gitId":"jannaleong"},"content":" public void show() {","lastModifiedDate":"2024-03-11"},{"lineNumber":76,"author":{"gitId":"jannaleong"},"content":" String loggerSuccessMsg \u003d \"Showing help page about the application.\";","lastModifiedDate":"2024-03-13"},{"lineNumber":77,"author":{"gitId":"jannaleong"},"content":" logger.fine(loggerSuccessMsg);","lastModifiedDate":"2024-03-13"},{"lineNumber":78,"author":{"gitId":"jannaleong"},"content":" getRoot().show();","lastModifiedDate":"2024-03-11"},{"lineNumber":79,"author":{"gitId":"jannaleong"},"content":" getRoot().centerOnScreen();","lastModifiedDate":"2024-03-11"},{"lineNumber":80,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":81,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":82,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":83,"author":{"gitId":"jannaleong"},"content":" * Returns true if the help window is currently being shown.","lastModifiedDate":"2024-03-11"},{"lineNumber":84,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":85,"author":{"gitId":"jannaleong"},"content":" public boolean isShowing() {","lastModifiedDate":"2024-03-11"},{"lineNumber":86,"author":{"gitId":"jannaleong"},"content":" return getRoot().isShowing();","lastModifiedDate":"2024-03-11"},{"lineNumber":87,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":88,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":89,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":90,"author":{"gitId":"jannaleong"},"content":" * Hides the help window.","lastModifiedDate":"2024-03-11"},{"lineNumber":91,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":92,"author":{"gitId":"jannaleong"},"content":" public void hide() {","lastModifiedDate":"2024-03-11"},{"lineNumber":93,"author":{"gitId":"jannaleong"},"content":" getRoot().hide();","lastModifiedDate":"2024-03-11"},{"lineNumber":94,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":95,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":96,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":97,"author":{"gitId":"jannaleong"},"content":" * Focuses on the help window.","lastModifiedDate":"2024-03-11"},{"lineNumber":98,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":99,"author":{"gitId":"jannaleong"},"content":" public void focus() {","lastModifiedDate":"2024-03-11"},{"lineNumber":100,"author":{"gitId":"jannaleong"},"content":" getRoot().requestFocus();","lastModifiedDate":"2024-03-11"},{"lineNumber":101,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":102,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":103,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":104,"author":{"gitId":"jannaleong"},"content":" * Copies the URL to the user guide to the clipboard.","lastModifiedDate":"2024-03-11"},{"lineNumber":105,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":106,"author":{"gitId":"jannaleong"},"content":" @FXML","lastModifiedDate":"2024-03-11"},{"lineNumber":107,"author":{"gitId":"jannaleong"},"content":" private void copyUrl() {","lastModifiedDate":"2024-03-11"},{"lineNumber":108,"author":{"gitId":"jannaleong"},"content":" final Clipboard clipboard \u003d Clipboard.getSystemClipboard();","lastModifiedDate":"2024-03-11"},{"lineNumber":109,"author":{"gitId":"jannaleong"},"content":" final ClipboardContent url \u003d new ClipboardContent();","lastModifiedDate":"2024-03-11"},{"lineNumber":110,"author":{"gitId":"jannaleong"},"content":" url.putString(USERGUIDE_URL);","lastModifiedDate":"2024-03-11"},{"lineNumber":111,"author":{"gitId":"jannaleong"},"content":" clipboard.setContent(url);","lastModifiedDate":"2024-03-11"},{"lineNumber":112,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":113,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"jannaleong":113}},{"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":"jannaleong"},"content":" * Controller for a help page.","lastModifiedDate":"2024-03-13"},{"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":"jannaleong"},"content":" public static final String USERGUIDE_URL \u003d \"https://ay2324s2-cs2103t-w10-2.github.io/tp/UserGuide.html\";","lastModifiedDate":"2024-03-11"},{"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":"jannaleong"},"content":" String loggerSuccessMsg \u003d \"Showing help page about the application.\";","lastModifiedDate":"2024-03-13"},{"lineNumber":67,"author":{"gitId":"jannaleong"},"content":" logger.fine(loggerSuccessMsg);","lastModifiedDate":"2024-03-13"},{"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":{"jannaleong":4,"-":99}},{"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":"jamessinmaojun"},"content":"import seedu.address.logic.messages.HelpMessages;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * The Main Window. Provides the basic application layout containing","lastModifiedDate":"2016-08-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * a menu bar and space where other JavaFX elements can be placed.","lastModifiedDate":"2016-08-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class MainWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-11-29"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"MainWindow.fxml\";","lastModifiedDate":"2016-08-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(getClass());","lastModifiedDate":"2018-08-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Stage primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":" // Independent Ui parts residing in this Ui container","lastModifiedDate":"2016-08-18"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private PersonListPanel personListPanel;","lastModifiedDate":"2016-08-18"},{"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":"jannaleong"},"content":" private HelpPoochStaffWindow helpPoochStaffWindow;","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"jannaleong"},"content":" private HelpPoochSupplierWindow helpPoochSupplierWindow;","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"jannaleong"},"content":" private HelpPoochMaintenanceWindow helpPoochMaintenanceWindow;","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"jannaleong"},"content":" private HelpDeleteWindow helpDeleteWindow;","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"jannaleong"},"content":" private HelpEditWindow helpEditWindow;","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"jannaleong"},"content":" private HelpSearchWindow helpSearchWindow;","lastModifiedDate":"2024-03-11"},{"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 commandBoxPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":49,"author":{"gitId":"-"},"content":" private MenuItem helpMenuItem;","lastModifiedDate":"2016-08-18"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":" private StackPane personListPanelPlaceholder;","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 resultDisplayPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" private StackPane statusbarPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":68,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":75,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15"},{"lineNumber":76,"author":{"gitId":"jannaleong"},"content":" helpPoochStaffWindow \u003d new HelpPoochStaffWindow();","lastModifiedDate":"2024-03-11"},{"lineNumber":77,"author":{"gitId":"jannaleong"},"content":" helpPoochSupplierWindow \u003d new HelpPoochSupplierWindow();","lastModifiedDate":"2024-03-11"},{"lineNumber":78,"author":{"gitId":"jannaleong"},"content":" helpPoochMaintenanceWindow \u003d new HelpPoochMaintenanceWindow();","lastModifiedDate":"2024-03-11"},{"lineNumber":79,"author":{"gitId":"jannaleong"},"content":" helpDeleteWindow \u003d new HelpDeleteWindow();","lastModifiedDate":"2024-03-11"},{"lineNumber":80,"author":{"gitId":"jannaleong"},"content":" helpEditWindow \u003d new HelpEditWindow();","lastModifiedDate":"2024-03-11"},{"lineNumber":81,"author":{"gitId":"jannaleong"},"content":" helpSearchWindow \u003d new HelpSearchWindow();","lastModifiedDate":"2024-03-11"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24"},{"lineNumber":85,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":88,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","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":" /**","lastModifiedDate":"2016-12-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","lastModifiedDate":"2016-12-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-12-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18"},{"lineNumber":109,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":110,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18"},{"lineNumber":111,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18"},{"lineNumber":112,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18"},{"lineNumber":113,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":114,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":115,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18"},{"lineNumber":116,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18"},{"lineNumber":117,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":119,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18"},{"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-08-16"},{"lineNumber":123,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16"},{"lineNumber":124,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":125,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21"},{"lineNumber":126,"author":{"gitId":"-"},"content":" personListPanel \u003d new PersonListPanel(logic.getFilteredPersonList());","lastModifiedDate":"2019-01-25"},{"lineNumber":127,"author":{"gitId":"-"},"content":" personListPanelPlaceholder.getChildren().add(personListPanel.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09"},{"lineNumber":130,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":132,"author":{"gitId":"-"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getAddressBookFilePath());","lastModifiedDate":"2019-01-25"},{"lineNumber":133,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25"},{"lineNumber":136,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14"},{"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":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27"},{"lineNumber":141,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":142,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":143,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27"},{"lineNumber":144,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27"},{"lineNumber":145,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27"},{"lineNumber":146,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27"},{"lineNumber":147,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":151,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":152,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15"},{"lineNumber":153,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":154,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":155,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31"},{"lineNumber":156,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15"},{"lineNumber":157,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":158,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15"},{"lineNumber":159,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":163,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":164,"author":{"gitId":"jannaleong"},"content":" * Opens the help poochstaff window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2024-03-11"},{"lineNumber":165,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":166,"author":{"gitId":"jannaleong"},"content":" @FXML","lastModifiedDate":"2024-03-11"},{"lineNumber":167,"author":{"gitId":"jannaleong"},"content":" public void handlePoochStaffHelp() {","lastModifiedDate":"2024-03-11"},{"lineNumber":168,"author":{"gitId":"jannaleong"},"content":" helpPoochStaffWindow.show();","lastModifiedDate":"2024-03-11"},{"lineNumber":169,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":170,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":171,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":172,"author":{"gitId":"jannaleong"},"content":" * Opens the help poochsupplier window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2024-03-11"},{"lineNumber":173,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":174,"author":{"gitId":"jannaleong"},"content":" @FXML","lastModifiedDate":"2024-03-11"},{"lineNumber":175,"author":{"gitId":"jannaleong"},"content":" public void handlePoochSupplierHelp() {","lastModifiedDate":"2024-03-11"},{"lineNumber":176,"author":{"gitId":"jannaleong"},"content":" helpPoochSupplierWindow.show();","lastModifiedDate":"2024-03-11"},{"lineNumber":177,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":178,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":179,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":180,"author":{"gitId":"jannaleong"},"content":" * Opens the help delete window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2024-03-11"},{"lineNumber":181,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":182,"author":{"gitId":"jannaleong"},"content":" @FXML","lastModifiedDate":"2024-03-11"},{"lineNumber":183,"author":{"gitId":"jannaleong"},"content":" public void handleDeleteHelp() {","lastModifiedDate":"2024-03-11"},{"lineNumber":184,"author":{"gitId":"jannaleong"},"content":" helpDeleteWindow.show();","lastModifiedDate":"2024-03-11"},{"lineNumber":185,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":186,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":187,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":188,"author":{"gitId":"jannaleong"},"content":" * Opens the help edit window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2024-03-11"},{"lineNumber":189,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":190,"author":{"gitId":"jannaleong"},"content":" @FXML","lastModifiedDate":"2024-03-11"},{"lineNumber":191,"author":{"gitId":"jannaleong"},"content":" public void handleEditHelp() {","lastModifiedDate":"2024-03-11"},{"lineNumber":192,"author":{"gitId":"jannaleong"},"content":" helpEditWindow.show();","lastModifiedDate":"2024-03-11"},{"lineNumber":193,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":194,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":195,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":196,"author":{"gitId":"jannaleong"},"content":" * Opens the help search window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2024-03-11"},{"lineNumber":197,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":198,"author":{"gitId":"jannaleong"},"content":" @FXML","lastModifiedDate":"2024-03-11"},{"lineNumber":199,"author":{"gitId":"jannaleong"},"content":" public void handleSearchHelp() {","lastModifiedDate":"2024-03-11"},{"lineNumber":200,"author":{"gitId":"jannaleong"},"content":" helpSearchWindow.show();","lastModifiedDate":"2024-03-11"},{"lineNumber":201,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":202,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":203,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":204,"author":{"gitId":"jannaleong"},"content":" * Opens the help pooch maintenance window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2024-03-11"},{"lineNumber":205,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":206,"author":{"gitId":"jannaleong"},"content":" @FXML","lastModifiedDate":"2024-03-11"},{"lineNumber":207,"author":{"gitId":"jannaleong"},"content":" public void handlePoochMaintenanceHelp() {","lastModifiedDate":"2024-03-11"},{"lineNumber":208,"author":{"gitId":"jannaleong"},"content":" helpPoochMaintenanceWindow.show();","lastModifiedDate":"2024-03-11"},{"lineNumber":209,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":210,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":211,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15"},{"lineNumber":212,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":213,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":215,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":216,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18"},{"lineNumber":217,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":218,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":219,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18"},{"lineNumber":220,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08"},{"lineNumber":221,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08"},{"lineNumber":222,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08"},{"lineNumber":223,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":224,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":225,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":227,"author":{"gitId":"-"},"content":" public PersonListPanel getPersonListPanel() {","lastModifiedDate":"2016-08-25"},{"lineNumber":228,"author":{"gitId":"-"},"content":" return personListPanel;","lastModifiedDate":"2018-08-14"},{"lineNumber":229,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":231,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":232,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":233,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":234,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09"},{"lineNumber":235,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":236,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09"},{"lineNumber":237,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":238,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09"},{"lineNumber":239,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":240,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":242,"author":{"gitId":"jannaleong"},"content":" String userFeedback \u003d commandResult.getFeedbackToUser();","lastModifiedDate":"2024-03-13"},{"lineNumber":243,"author":{"gitId":"jannaleong"},"content":" Boolean isHelpCommand \u003d commandResult.isShowHelp()","lastModifiedDate":"2024-03-13"},{"lineNumber":244,"author":{"gitId":"jamessinmaojun"},"content":" \u0026\u0026 userFeedback.equals(HelpMessages.MESSAGES_SHOWING_HELP_MESSAGE);","lastModifiedDate":"2024-03-20"},{"lineNumber":245,"author":{"gitId":"jannaleong"},"content":" Boolean isPoochStaffHelpCommand \u003d commandResult.isShowHelp()","lastModifiedDate":"2024-03-13"},{"lineNumber":246,"author":{"gitId":"jamessinmaojun"},"content":" \u0026\u0026 userFeedback.equals(HelpMessages.MESSAGES_SHOWING_ADD_STAFF_HELP_MESSAGE);","lastModifiedDate":"2024-03-20"},{"lineNumber":247,"author":{"gitId":"jannaleong"},"content":" Boolean isPoochMaintenanceHelpCommand \u003d commandResult.isShowHelp()","lastModifiedDate":"2024-03-13"},{"lineNumber":248,"author":{"gitId":"jamessinmaojun"},"content":" \u0026\u0026 userFeedback.equals(HelpMessages.MESSAGES_SHOWING_ADD_MAINTAINER_HELP_MESSAGE);","lastModifiedDate":"2024-03-20"},{"lineNumber":249,"author":{"gitId":"jannaleong"},"content":" Boolean isPoochSupplierHelpCommand \u003d commandResult.isShowHelp()","lastModifiedDate":"2024-03-13"},{"lineNumber":250,"author":{"gitId":"jamessinmaojun"},"content":" \u0026\u0026 userFeedback.equals(HelpMessages.MESSAGES_SHOWING_ADD_SUPPLIER_HELP_MESSAGE);","lastModifiedDate":"2024-03-20"},{"lineNumber":251,"author":{"gitId":"jannaleong"},"content":" Boolean isDeleteHelpCommand \u003d commandResult.isShowHelp()","lastModifiedDate":"2024-03-13"},{"lineNumber":252,"author":{"gitId":"jamessinmaojun"},"content":" \u0026\u0026 userFeedback.equals(HelpMessages.MESSAGES_SHOWING_DELETE_HELP_MESSAGE);","lastModifiedDate":"2024-03-20"},{"lineNumber":253,"author":{"gitId":"jannaleong"},"content":" Boolean isEditHelpCommand \u003d commandResult.isShowHelp()","lastModifiedDate":"2024-03-13"},{"lineNumber":254,"author":{"gitId":"jamessinmaojun"},"content":" \u0026\u0026 userFeedback.equals(HelpMessages.MESSAGES_SHOWING_EDIT_HELP_MESSAGE);","lastModifiedDate":"2024-03-20"},{"lineNumber":255,"author":{"gitId":"jannaleong"},"content":" Boolean isSearchHelpCommand \u003d commandResult.isShowHelp()","lastModifiedDate":"2024-03-13"},{"lineNumber":256,"author":{"gitId":"jamessinmaojun"},"content":" \u0026\u0026 userFeedback.equals(HelpMessages.MESSAGES_SHOWING_SEARCH_HELP_MESSAGE);","lastModifiedDate":"2024-03-20"},{"lineNumber":257,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":258,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":259,"author":{"gitId":"jannaleong"},"content":" if (isHelpCommand) {","lastModifiedDate":"2024-03-13"},{"lineNumber":260,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09"},{"lineNumber":261,"author":{"gitId":"jannaleong"},"content":" } else if (isPoochStaffHelpCommand) {","lastModifiedDate":"2024-03-13"},{"lineNumber":262,"author":{"gitId":"jannaleong"},"content":" handlePoochStaffHelp();","lastModifiedDate":"2024-03-11"},{"lineNumber":263,"author":{"gitId":"jannaleong"},"content":" } else if (isPoochSupplierHelpCommand) {","lastModifiedDate":"2024-03-13"},{"lineNumber":264,"author":{"gitId":"jannaleong"},"content":" handlePoochSupplierHelp();","lastModifiedDate":"2024-03-11"},{"lineNumber":265,"author":{"gitId":"jannaleong"},"content":" } else if (isDeleteHelpCommand) {","lastModifiedDate":"2024-03-13"},{"lineNumber":266,"author":{"gitId":"jannaleong"},"content":" handleDeleteHelp();","lastModifiedDate":"2024-03-11"},{"lineNumber":267,"author":{"gitId":"jannaleong"},"content":" } else if (isEditHelpCommand) {","lastModifiedDate":"2024-03-13"},{"lineNumber":268,"author":{"gitId":"jannaleong"},"content":" handleEditHelp();","lastModifiedDate":"2024-03-11"},{"lineNumber":269,"author":{"gitId":"jannaleong"},"content":" } else if (isSearchHelpCommand) {","lastModifiedDate":"2024-03-13"},{"lineNumber":270,"author":{"gitId":"jannaleong"},"content":" handleSearchHelp();","lastModifiedDate":"2024-03-11"},{"lineNumber":271,"author":{"gitId":"jannaleong"},"content":" } else if (isPoochMaintenanceHelpCommand) {","lastModifiedDate":"2024-03-13"},{"lineNumber":272,"author":{"gitId":"jannaleong"},"content":" handlePoochMaintenanceHelp();","lastModifiedDate":"2024-03-11"},{"lineNumber":273,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":274,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":275,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09"},{"lineNumber":276,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":278,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":279,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09"},{"lineNumber":280,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13"},{"lineNumber":281,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09"},{"lineNumber":282,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09"},{"lineNumber":283,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":284,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":285,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"jamessinmaojun":8,"jannaleong":83,"-":194}},{"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":"chiageng"},"content":"import seedu.address.model.person.Maintainer;","lastModifiedDate":"2024-03-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Staff;","lastModifiedDate":"2024-03-09"},{"lineNumber":13,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Supplier;","lastModifiedDate":"2024-03-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2017-08-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2016-09-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25"},{"lineNumber":27,"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":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public final Person person;","lastModifiedDate":"2018-01-10"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private Label address;","lastModifiedDate":"2016-09-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":" private Label salary;","lastModifiedDate":"2024-03-09"},{"lineNumber":46,"author":{"gitId":"chiageng"},"content":" @FXML","lastModifiedDate":"2024-03-09"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":" private Label employment;","lastModifiedDate":"2024-03-09"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":" @FXML","lastModifiedDate":"2024-03-09"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":" private Label product;","lastModifiedDate":"2024-03-09"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":" @FXML","lastModifiedDate":"2024-03-09"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":" private Label price;","lastModifiedDate":"2024-03-09"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":" @FXML","lastModifiedDate":"2024-03-09"},{"lineNumber":53,"author":{"gitId":"chiageng"},"content":" private Label skill;","lastModifiedDate":"2024-03-09"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":" @FXML","lastModifiedDate":"2024-03-09"},{"lineNumber":55,"author":{"gitId":"chiageng"},"content":" private Label commission;","lastModifiedDate":"2024-03-09"},{"lineNumber":56,"author":{"gitId":"chiageng"},"content":" @FXML","lastModifiedDate":"2024-03-09"},{"lineNumber":57,"author":{"gitId":"chiageng"},"content":" private Label className;","lastModifiedDate":"2024-03-09"},{"lineNumber":58,"author":{"gitId":"chiageng"},"content":" @FXML","lastModifiedDate":"2024-03-09"},{"lineNumber":59,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18"},{"lineNumber":60,"author":{"gitId":"jannaleong"},"content":" @FXML","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"jannaleong"},"content":" private Label note;","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10"},{"lineNumber":67,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12"},{"lineNumber":69,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20"},{"lineNumber":71,"author":{"gitId":"-"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":72,"author":{"gitId":"-"},"content":" address.setText(person.getAddress().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":73,"author":{"gitId":"jannaleong"},"content":" note.setText(person.getNote().toString());","lastModifiedDate":"2024-03-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":75,"author":{"gitId":"-"},"content":" person.getTags().stream()","lastModifiedDate":"2019-01-02"},{"lineNumber":76,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02"},{"lineNumber":77,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02"},{"lineNumber":78,"author":{"gitId":"chiageng"},"content":" if (person instanceof Staff) {","lastModifiedDate":"2024-03-09"},{"lineNumber":79,"author":{"gitId":"chiageng"},"content":" Staff staff \u003d (Staff) person;","lastModifiedDate":"2024-03-09"},{"lineNumber":80,"author":{"gitId":"chiageng"},"content":" salary.setText(staff.getSalary().value);","lastModifiedDate":"2024-03-09"},{"lineNumber":81,"author":{"gitId":"chiageng"},"content":" employment.setText(staff.getEmployment().value);","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"chiageng"},"content":" salary.setManaged(true);","lastModifiedDate":"2024-03-09"},{"lineNumber":83,"author":{"gitId":"chiageng"},"content":" employment.setManaged(true);","lastModifiedDate":"2024-03-09"},{"lineNumber":84,"author":{"gitId":"chiageng"},"content":" salary.setVisible(true);","lastModifiedDate":"2024-03-09"},{"lineNumber":85,"author":{"gitId":"chiageng"},"content":" employment.setVisible(true);","lastModifiedDate":"2024-03-09"},{"lineNumber":86,"author":{"gitId":"chiageng"},"content":" } else if (person instanceof Supplier) {","lastModifiedDate":"2024-03-09"},{"lineNumber":87,"author":{"gitId":"chiageng"},"content":" Supplier supplier \u003d (Supplier) person;","lastModifiedDate":"2024-03-09"},{"lineNumber":88,"author":{"gitId":"chiageng"},"content":" product.setText(supplier.getProduct().value);","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"chiageng"},"content":" price.setText(supplier.getPrice().value);","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"chiageng"},"content":" product.setManaged(true);","lastModifiedDate":"2024-03-09"},{"lineNumber":91,"author":{"gitId":"chiageng"},"content":" price.setManaged(true);","lastModifiedDate":"2024-03-09"},{"lineNumber":92,"author":{"gitId":"chiageng"},"content":" product.setVisible(true);","lastModifiedDate":"2024-03-09"},{"lineNumber":93,"author":{"gitId":"chiageng"},"content":" price.setVisible(true);","lastModifiedDate":"2024-03-09"},{"lineNumber":94,"author":{"gitId":"chiageng"},"content":" } else if (person instanceof Maintainer) {","lastModifiedDate":"2024-03-09"},{"lineNumber":95,"author":{"gitId":"chiageng"},"content":" Maintainer maintainer \u003d (Maintainer) person;","lastModifiedDate":"2024-03-09"},{"lineNumber":96,"author":{"gitId":"chiageng"},"content":" skill.setText(maintainer.getSkill().value);","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"chiageng"},"content":" commission.setText(maintainer.getCommission().value);","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"chiageng"},"content":" skill.setManaged(true);","lastModifiedDate":"2024-03-09"},{"lineNumber":99,"author":{"gitId":"chiageng"},"content":" commission.setManaged(true);","lastModifiedDate":"2024-03-09"},{"lineNumber":100,"author":{"gitId":"chiageng"},"content":" skill.setVisible(true);","lastModifiedDate":"2024-03-09"},{"lineNumber":101,"author":{"gitId":"chiageng"},"content":" commission.setVisible(true);","lastModifiedDate":"2024-03-09"},{"lineNumber":102,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":104,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":105,"author":{"gitId":"chiageng"},"content":" public Label getSalary() {","lastModifiedDate":"2024-03-09"},{"lineNumber":106,"author":{"gitId":"chiageng"},"content":" return salary;","lastModifiedDate":"2024-03-09"},{"lineNumber":107,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":108,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":109,"author":{"gitId":"chiageng"},"content":" public Label getEmployment() {","lastModifiedDate":"2024-03-09"},{"lineNumber":110,"author":{"gitId":"chiageng"},"content":" return employment;","lastModifiedDate":"2024-03-09"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"chiageng":49,"jannaleong":3,"-":60}},{"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":"jamessinmaojun"},"content":" title\u003d\"PoochPlanner\" minWidth\u003d\"450\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2024-03-20"},{"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":{"jamessinmaojun":1,"-":59}},{"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":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2016-08-08"},{"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":"chiageng"},"content":" \u003cLabel fx:id\u003d\"salary\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$salary\" managed\u003d\"false\"/\u003e","lastModifiedDate":"2024-03-09"},{"lineNumber":35,"author":{"gitId":"chiageng"},"content":" \u003cLabel fx:id\u003d\"employment\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$employment\" managed\u003d\"false\"/\u003e","lastModifiedDate":"2024-03-09"},{"lineNumber":36,"author":{"gitId":"chiageng"},"content":" \u003cLabel fx:id\u003d\"product\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$product\" managed\u003d\"false\"/\u003e","lastModifiedDate":"2024-03-09"},{"lineNumber":37,"author":{"gitId":"chiageng"},"content":" \u003cLabel fx:id\u003d\"price\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$price\" managed\u003d\"false\"/\u003e","lastModifiedDate":"2024-03-09"},{"lineNumber":38,"author":{"gitId":"chiageng"},"content":" \u003cLabel fx:id\u003d\"skill\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$skill\" managed\u003d\"false\"/\u003e","lastModifiedDate":"2024-03-09"},{"lineNumber":39,"author":{"gitId":"chiageng"},"content":" \u003cLabel fx:id\u003d\"commission\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$commission\" managed\u003d\"false\"/\u003e","lastModifiedDate":"2024-03-09"},{"lineNumber":40,"author":{"gitId":"jannaleong"},"content":" \u003cLabel fx:id\u003d\"note\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$note\" /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"chiageng":6,"jannaleong":1,"-":36}},{"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.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":8,"author":{"gitId":"jamessinmaojun"},"content":"import static seedu.address.logic.messages.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"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":"2017-01-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":24,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.DeleteMessages;","lastModifiedDate":"2024-03-18"},{"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":"jamessinmaojun"},"content":" String deleteCommand \u003d \"/delete ; name : bleh\";","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"jamessinmaojun"},"content":" assertCommandException(deleteCommand, DeleteMessages.MESSAGE_DELETE_NAME_NOT_FOUND);","lastModifiedDate":"2024-03-18"},{"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":"-"},"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":"-"},"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":{"jamessinmaojun":4,"-":171}},{"path":"src/test/java/seedu/address/logic/MessagesTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jamessinmaojun"},"content":"package seedu.address.logic;","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":3,"author":{"gitId":"jamessinmaojun"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"jamessinmaojun"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"jamessinmaojun"},"content":"import static seedu.address.testutil.TypicalPersons.ALICEMAINTAINER;","lastModifiedDate":"2024-03-22"},{"lineNumber":6,"author":{"gitId":"jamessinmaojun"},"content":"import static seedu.address.testutil.TypicalPersons.ALICESTAFF;","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"jamessinmaojun"},"content":"import static seedu.address.testutil.TypicalPersons.ALICESUPPLIER;","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"jamessinmaojun"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.AddMessages;","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.DeleteMessages;","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.EditMessages;","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.Messages;","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"jamessinmaojun"},"content":"/**","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"jamessinmaojun"},"content":" * Contains unit tests for {@code Messages}.","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"jamessinmaojun"},"content":" */","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"jamessinmaojun"},"content":"public class MessagesTest {","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"jamessinmaojun"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"jamessinmaojun"},"content":" public void format() {","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"jamessinmaojun"},"content":" // Normal Person","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"jamessinmaojun"},"content":" String testNormalString \u003d Messages.format(ALICE);","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"jamessinmaojun"},"content":" String expectedNormalString \u003d \"Alice Pauline; \"","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"jamessinmaojun"},"content":" + \"Phone: 94351253; \"","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"jamessinmaojun"},"content":" + \"Email: alice@example.com; \"","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"jamessinmaojun"},"content":" + \"Address: 123, Jurong West Ave 6, #08-111; \"","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"jamessinmaojun"},"content":" + \"Tags: [other]\";","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"jamessinmaojun"},"content":" assertEquals(testNormalString, expectedNormalString);","lastModifiedDate":"2024-03-22"},{"lineNumber":30,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"jamessinmaojun"},"content":" // Staff","lastModifiedDate":"2024-03-22"},{"lineNumber":32,"author":{"gitId":"jamessinmaojun"},"content":" String testStaffString \u003d Messages.format(ALICESTAFF);","lastModifiedDate":"2024-03-22"},{"lineNumber":33,"author":{"gitId":"jamessinmaojun"},"content":" String expectedStaffString \u003d \"Alice Pauline; \"","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"jamessinmaojun"},"content":" + \"Phone: 94351253; \"","lastModifiedDate":"2024-03-22"},{"lineNumber":35,"author":{"gitId":"jamessinmaojun"},"content":" + \"Email: alice@example.com; \"","lastModifiedDate":"2024-03-22"},{"lineNumber":36,"author":{"gitId":"jamessinmaojun"},"content":" + \"Address: 123, Jurong West Ave 6, #08-111; \"","lastModifiedDate":"2024-03-22"},{"lineNumber":37,"author":{"gitId":"jamessinmaojun"},"content":" + \"Tags: [staff]\";","lastModifiedDate":"2024-03-22"},{"lineNumber":38,"author":{"gitId":"jamessinmaojun"},"content":" assertEquals(testStaffString, expectedStaffString);","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"jamessinmaojun"},"content":" // Maintainer","lastModifiedDate":"2024-03-22"},{"lineNumber":41,"author":{"gitId":"jamessinmaojun"},"content":" String testMaintainerString \u003d Messages.format(ALICEMAINTAINER);","lastModifiedDate":"2024-03-22"},{"lineNumber":42,"author":{"gitId":"jamessinmaojun"},"content":" String expectedMaintainerString \u003d \"Alice Pauline; \"","lastModifiedDate":"2024-03-22"},{"lineNumber":43,"author":{"gitId":"jamessinmaojun"},"content":" + \"Phone: 94351253; \"","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"jamessinmaojun"},"content":" + \"Email: alice@example.com; \"","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"jamessinmaojun"},"content":" + \"Address: 123, Jurong West Ave 6, #08-111; \"","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"jamessinmaojun"},"content":" + \"Tags: [maintainer]\";","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"jamessinmaojun"},"content":" assertEquals(testMaintainerString, expectedMaintainerString);","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":49,"author":{"gitId":"jamessinmaojun"},"content":" // Supplier","lastModifiedDate":"2024-03-22"},{"lineNumber":50,"author":{"gitId":"jamessinmaojun"},"content":" String testSupplierString \u003d Messages.format(ALICESUPPLIER);","lastModifiedDate":"2024-03-22"},{"lineNumber":51,"author":{"gitId":"jamessinmaojun"},"content":" String expectedSupplierString \u003d \"Alice Pauline; \"","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"jamessinmaojun"},"content":" + \"Phone: 94351253; \"","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"jamessinmaojun"},"content":" + \"Email: alice@example.com; \"","lastModifiedDate":"2024-03-22"},{"lineNumber":54,"author":{"gitId":"jamessinmaojun"},"content":" + \"Address: 123, Jurong West Ave 6, #08-111; \"","lastModifiedDate":"2024-03-22"},{"lineNumber":55,"author":{"gitId":"jamessinmaojun"},"content":" + \"Tags: [supplier]\";","lastModifiedDate":"2024-03-22"},{"lineNumber":56,"author":{"gitId":"jamessinmaojun"},"content":" assertEquals(testSupplierString, expectedSupplierString);","lastModifiedDate":"2024-03-22"},{"lineNumber":57,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":58,"author":{"gitId":"jamessinmaojun"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":59,"author":{"gitId":"jamessinmaojun"},"content":" public void addFormat() {","lastModifiedDate":"2024-03-22"},{"lineNumber":60,"author":{"gitId":"jamessinmaojun"},"content":" // Normal Person","lastModifiedDate":"2024-03-22"},{"lineNumber":61,"author":{"gitId":"jamessinmaojun"},"content":" String testNormalString \u003d AddMessages.format(ALICE);","lastModifiedDate":"2024-03-22"},{"lineNumber":62,"author":{"gitId":"jamessinmaojun"},"content":" String expectedNormalString \u003d \"Other Contact Alice Pauline\";","lastModifiedDate":"2024-03-22"},{"lineNumber":63,"author":{"gitId":"jamessinmaojun"},"content":" assertEquals(testNormalString, expectedNormalString);","lastModifiedDate":"2024-03-22"},{"lineNumber":64,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":65,"author":{"gitId":"jamessinmaojun"},"content":" // Staff","lastModifiedDate":"2024-03-22"},{"lineNumber":66,"author":{"gitId":"jamessinmaojun"},"content":" String testStaffString \u003d AddMessages.format(ALICESTAFF);","lastModifiedDate":"2024-03-22"},{"lineNumber":67,"author":{"gitId":"jamessinmaojun"},"content":" String expectedStaffString \u003d \"Pooch Staff Alice Pauline\";","lastModifiedDate":"2024-03-22"},{"lineNumber":68,"author":{"gitId":"jamessinmaojun"},"content":" assertEquals(testStaffString, expectedStaffString);","lastModifiedDate":"2024-03-22"},{"lineNumber":69,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":70,"author":{"gitId":"jamessinmaojun"},"content":" // Maintainer","lastModifiedDate":"2024-03-22"},{"lineNumber":71,"author":{"gitId":"jamessinmaojun"},"content":" String testMaintainerString \u003d AddMessages.format(ALICEMAINTAINER);","lastModifiedDate":"2024-03-22"},{"lineNumber":72,"author":{"gitId":"jamessinmaojun"},"content":" String expectedMaintainerString \u003d \"Maintenance Crew Alice Pauline\";","lastModifiedDate":"2024-03-22"},{"lineNumber":73,"author":{"gitId":"jamessinmaojun"},"content":" assertEquals(testMaintainerString, expectedMaintainerString);","lastModifiedDate":"2024-03-22"},{"lineNumber":74,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":75,"author":{"gitId":"jamessinmaojun"},"content":" // Supplier","lastModifiedDate":"2024-03-22"},{"lineNumber":76,"author":{"gitId":"jamessinmaojun"},"content":" String testSupplierString \u003d AddMessages.format(ALICESUPPLIER);","lastModifiedDate":"2024-03-22"},{"lineNumber":77,"author":{"gitId":"jamessinmaojun"},"content":" String expectedSupplierString \u003d \"Supplier Alice Pauline\";","lastModifiedDate":"2024-03-22"},{"lineNumber":78,"author":{"gitId":"jamessinmaojun"},"content":" assertEquals(testSupplierString, expectedSupplierString);","lastModifiedDate":"2024-03-22"},{"lineNumber":79,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":80,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":81,"author":{"gitId":"jamessinmaojun"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":82,"author":{"gitId":"jamessinmaojun"},"content":" public void deleteFormat() {","lastModifiedDate":"2024-03-22"},{"lineNumber":83,"author":{"gitId":"jamessinmaojun"},"content":" // Normal Person","lastModifiedDate":"2024-03-22"},{"lineNumber":84,"author":{"gitId":"jamessinmaojun"},"content":" String testNormalString \u003d DeleteMessages.format(ALICE);","lastModifiedDate":"2024-03-22"},{"lineNumber":85,"author":{"gitId":"jamessinmaojun"},"content":" String expectedNormalString \u003d \"Other Contact Alice Pauline\";","lastModifiedDate":"2024-03-22"},{"lineNumber":86,"author":{"gitId":"jamessinmaojun"},"content":" assertEquals(testNormalString, expectedNormalString);","lastModifiedDate":"2024-03-22"},{"lineNumber":87,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":88,"author":{"gitId":"jamessinmaojun"},"content":" // Staff","lastModifiedDate":"2024-03-22"},{"lineNumber":89,"author":{"gitId":"jamessinmaojun"},"content":" String testStaffString \u003d DeleteMessages.format(ALICESTAFF);","lastModifiedDate":"2024-03-22"},{"lineNumber":90,"author":{"gitId":"jamessinmaojun"},"content":" String expectedStaffString \u003d \"Pooch Staff Alice Pauline\";","lastModifiedDate":"2024-03-22"},{"lineNumber":91,"author":{"gitId":"jamessinmaojun"},"content":" assertEquals(testStaffString, expectedStaffString);","lastModifiedDate":"2024-03-22"},{"lineNumber":92,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":93,"author":{"gitId":"jamessinmaojun"},"content":" // Maintainer","lastModifiedDate":"2024-03-22"},{"lineNumber":94,"author":{"gitId":"jamessinmaojun"},"content":" String testMaintainerString \u003d DeleteMessages.format(ALICEMAINTAINER);","lastModifiedDate":"2024-03-22"},{"lineNumber":95,"author":{"gitId":"jamessinmaojun"},"content":" String expectedMaintainerString \u003d \"Maintenance Crew Alice Pauline\";","lastModifiedDate":"2024-03-22"},{"lineNumber":96,"author":{"gitId":"jamessinmaojun"},"content":" assertEquals(testMaintainerString, expectedMaintainerString);","lastModifiedDate":"2024-03-22"},{"lineNumber":97,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":98,"author":{"gitId":"jamessinmaojun"},"content":" // Supplier","lastModifiedDate":"2024-03-22"},{"lineNumber":99,"author":{"gitId":"jamessinmaojun"},"content":" String testSupplierString \u003d DeleteMessages.format(ALICESUPPLIER);","lastModifiedDate":"2024-03-22"},{"lineNumber":100,"author":{"gitId":"jamessinmaojun"},"content":" String expectedSupplierString \u003d \"Supplier Alice Pauline\";","lastModifiedDate":"2024-03-22"},{"lineNumber":101,"author":{"gitId":"jamessinmaojun"},"content":" assertEquals(testSupplierString, expectedSupplierString);","lastModifiedDate":"2024-03-22"},{"lineNumber":102,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":103,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":104,"author":{"gitId":"jamessinmaojun"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":105,"author":{"gitId":"jamessinmaojun"},"content":" public void editFormat() {","lastModifiedDate":"2024-03-22"},{"lineNumber":106,"author":{"gitId":"jamessinmaojun"},"content":" // Normal Person","lastModifiedDate":"2024-03-22"},{"lineNumber":107,"author":{"gitId":"jamessinmaojun"},"content":" String testNormalString \u003d EditMessages.format(ALICE);","lastModifiedDate":"2024-03-22"},{"lineNumber":108,"author":{"gitId":"jamessinmaojun"},"content":" String expectedNormalString \u003d \"Other Contact Alice Pauline\";","lastModifiedDate":"2024-03-22"},{"lineNumber":109,"author":{"gitId":"jamessinmaojun"},"content":" assertEquals(testNormalString, expectedNormalString);","lastModifiedDate":"2024-03-22"},{"lineNumber":110,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":111,"author":{"gitId":"jamessinmaojun"},"content":" // Staff","lastModifiedDate":"2024-03-22"},{"lineNumber":112,"author":{"gitId":"jamessinmaojun"},"content":" String testStaffString \u003d EditMessages.format(ALICESTAFF);","lastModifiedDate":"2024-03-22"},{"lineNumber":113,"author":{"gitId":"jamessinmaojun"},"content":" String expectedStaffString \u003d \"Pooch Staff Alice Pauline\";","lastModifiedDate":"2024-03-22"},{"lineNumber":114,"author":{"gitId":"jamessinmaojun"},"content":" assertEquals(testStaffString, expectedStaffString);","lastModifiedDate":"2024-03-22"},{"lineNumber":115,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":116,"author":{"gitId":"jamessinmaojun"},"content":" // Maintainer","lastModifiedDate":"2024-03-22"},{"lineNumber":117,"author":{"gitId":"jamessinmaojun"},"content":" String testMaintainerString \u003d EditMessages.format(ALICEMAINTAINER);","lastModifiedDate":"2024-03-22"},{"lineNumber":118,"author":{"gitId":"jamessinmaojun"},"content":" String expectedMaintainerString \u003d \"Maintenance Crew Alice Pauline\";","lastModifiedDate":"2024-03-22"},{"lineNumber":119,"author":{"gitId":"jamessinmaojun"},"content":" assertEquals(testMaintainerString, expectedMaintainerString);","lastModifiedDate":"2024-03-22"},{"lineNumber":120,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":121,"author":{"gitId":"jamessinmaojun"},"content":" // Supplier","lastModifiedDate":"2024-03-22"},{"lineNumber":122,"author":{"gitId":"jamessinmaojun"},"content":" String testSupplierString \u003d EditMessages.format(ALICESUPPLIER);","lastModifiedDate":"2024-03-22"},{"lineNumber":123,"author":{"gitId":"jamessinmaojun"},"content":" String expectedSupplierString \u003d \"Supplier Alice Pauline\";","lastModifiedDate":"2024-03-22"},{"lineNumber":124,"author":{"gitId":"jamessinmaojun"},"content":" assertEquals(testSupplierString, expectedSupplierString);","lastModifiedDate":"2024-03-22"},{"lineNumber":125,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":126,"author":{"gitId":"jamessinmaojun"},"content":"}","lastModifiedDate":"2024-03-22"}],"authorContributionMap":{"jamessinmaojun":126}},{"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":"jamessinmaojun"},"content":"import seedu.address.logic.messages.AddMessages;","lastModifiedDate":"2024-03-20"},{"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":"jamessinmaojun"},"content":" String.format(AddMessages.MESSAGE_ADD_PERSON_SUCCESS, AddMessages.format(validPerson)),","lastModifiedDate":"2024-03-20"},{"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":"jamessinmaojun"},"content":" AddMessages.MESSAGE_ADD_DUPLICATE_PERSON);","lastModifiedDate":"2024-03-20"},{"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":{"jamessinmaojun":3,"-":45}},{"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.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12"},{"lineNumber":20,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.AddMessages;","lastModifiedDate":"2024-03-20"},{"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":"yleeyilin"},"content":"import seedu.address.model.person.Maintainer;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-12"},{"lineNumber":28,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Staff;","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Supplier;","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":"public class AddCommandTest {","lastModifiedDate":"2017-05-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2017-05-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2017-05-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new AddCommand(validPerson).execute(modelStub);","lastModifiedDate":"2019-01-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":46,"author":{"gitId":"jamessinmaojun"},"content":" assertEquals(String.format(AddMessages.MESSAGE_ADD_PERSON_SUCCESS, AddMessages.format(validPerson)),","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(validPerson), modelStub.personsAdded);","lastModifiedDate":"2017-05-12"},{"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-05-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(validPerson);","lastModifiedDate":"2018-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":57,"author":{"gitId":"jamessinmaojun"},"content":" assertThrows(CommandException.class,","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"jamessinmaojun"},"content":" AddMessages.MESSAGE_ADD_DUPLICATE_PERSON, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":63,"author":{"gitId":"-"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" AddCommand addAliceCommand \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":" AddCommand addBobCommand \u003d new AddCommand(bob);","lastModifiedDate":"2017-06-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" AddCommand addAliceCommandCopy \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"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":" AddCommand addCommand \u003d new AddCommand(ALICE);","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" String expected \u003d AddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.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":"2017-05-12"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":95,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"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 ReadOnlyUserPrefs getUserPrefs() {","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 GuiSettings getGuiSettings() {","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 void setGuiSettings(GuiSettings guiSettings) {","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 Path getAddressBookFilePath() {","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":"2018-11-27"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":123,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":127,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"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 void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27"},{"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":"2017-05-12"},{"lineNumber":137,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12"},{"lineNumber":138,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06"},{"lineNumber":143,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":146,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":147,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-08"},{"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 void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"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 ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":158,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":161,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":162,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":163,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":165,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":166,"author":{"gitId":"yleeyilin"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":167,"author":{"gitId":"yleeyilin"},"content":" public Person findByName(Name targetName) {","lastModifiedDate":"2024-03-17"},{"lineNumber":168,"author":{"gitId":"yleeyilin"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":169,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":170,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":171,"author":{"gitId":"yleeyilin"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":172,"author":{"gitId":"yleeyilin"},"content":" public Maintainer findMaintainerByName(Name targetName) {","lastModifiedDate":"2024-03-17"},{"lineNumber":173,"author":{"gitId":"yleeyilin"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":174,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":175,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":176,"author":{"gitId":"yleeyilin"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":177,"author":{"gitId":"yleeyilin"},"content":" public Supplier findSupplierByName(Name targetName) {","lastModifiedDate":"2024-03-17"},{"lineNumber":178,"author":{"gitId":"yleeyilin"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":179,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":180,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":181,"author":{"gitId":"yleeyilin"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":182,"author":{"gitId":"yleeyilin"},"content":" public Staff findStaffByName(Name targetName) {","lastModifiedDate":"2024-03-17"},{"lineNumber":183,"author":{"gitId":"yleeyilin"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":184,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"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 contains a single person.","lastModifiedDate":"2018-08-07"},{"lineNumber":189,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":190,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07"},{"lineNumber":191,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":193,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":194,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":195,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":198,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":199,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":200,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":201,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07"},{"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"},{"lineNumber":206,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12"},{"lineNumber":207,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":208,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12"},{"lineNumber":209,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":211,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07"},{"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 personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":215,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":217,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":218,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08"},{"lineNumber":219,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":220,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":221,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":223,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":224,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04"},{"lineNumber":225,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04"},{"lineNumber":226,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":227,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":229,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12"}],"authorContributionMap":{"jamessinmaojun":4,"-":201,"yleeyilin":24}},{"path":"src/test/java/seedu/address/logic/commands/AddMaintainerCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chiageng"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-09"},{"lineNumber":2,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":3,"author":{"gitId":"chiageng"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-09"},{"lineNumber":4,"author":{"gitId":"chiageng"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-09"},{"lineNumber":5,"author":{"gitId":"chiageng"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-09"},{"lineNumber":6,"author":{"gitId":"chiageng"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-09"},{"lineNumber":7,"author":{"gitId":"chiageng"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-09"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":"import static seedu.address.testutil.TypicalPersons.ALICEMAINTAINER;","lastModifiedDate":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-09"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-09"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-09"},{"lineNumber":13,"author":{"gitId":"chiageng"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-09"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-09"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-09"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2024-03-09"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-09"},{"lineNumber":20,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.AddMessages;","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-03-09"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-09"},{"lineNumber":23,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-09"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-09"},{"lineNumber":25,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Maintainer;","lastModifiedDate":"2024-03-09"},{"lineNumber":26,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-09"},{"lineNumber":28,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Staff;","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Supplier;","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"chiageng"},"content":"import seedu.address.testutil.MaintainerBuilder;","lastModifiedDate":"2024-03-09"},{"lineNumber":31,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":32,"author":{"gitId":"chiageng"},"content":"public class AddMaintainerCommandTest {","lastModifiedDate":"2024-03-09"},{"lineNumber":33,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":34,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":35,"author":{"gitId":"chiageng"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":36,"author":{"gitId":"chiageng"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddMaintainerCommand(null));","lastModifiedDate":"2024-03-09"},{"lineNumber":37,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":38,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":39,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":40,"author":{"gitId":"chiageng"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2024-03-09"},{"lineNumber":41,"author":{"gitId":"chiageng"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2024-03-09"},{"lineNumber":42,"author":{"gitId":"chiageng"},"content":" Maintainer validPerson \u003d new MaintainerBuilder().build();","lastModifiedDate":"2024-03-09"},{"lineNumber":43,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":44,"author":{"gitId":"chiageng"},"content":" CommandResult commandResult \u003d new AddMaintainerCommand(validPerson).execute(modelStub);","lastModifiedDate":"2024-03-09"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":46,"author":{"gitId":"jamessinmaojun"},"content":" assertEquals(String.format(AddMessages.MESSAGE_ADD_PERSON_SUCCESS, AddMessages.format(validPerson)),","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2024-03-09"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":" assertEquals(Arrays.asList(validPerson), modelStub.personsAdded);","lastModifiedDate":"2024-03-09"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":53,"author":{"gitId":"chiageng"},"content":" Maintainer validPerson \u003d new MaintainerBuilder().build();","lastModifiedDate":"2024-03-09"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":" AddMaintainerCommand addCommand \u003d new AddMaintainerCommand(validPerson);","lastModifiedDate":"2024-03-09"},{"lineNumber":55,"author":{"gitId":"chiageng"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPerson);","lastModifiedDate":"2024-03-09"},{"lineNumber":56,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":57,"author":{"gitId":"chiageng"},"content":" assertThrows(CommandException.class,","lastModifiedDate":"2024-03-09"},{"lineNumber":58,"author":{"gitId":"jamessinmaojun"},"content":" AddMessages.MESSAGE_ADD_DUPLICATE_PERSON, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":60,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":61,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":62,"author":{"gitId":"chiageng"},"content":" public void equals() {","lastModifiedDate":"2024-03-09"},{"lineNumber":63,"author":{"gitId":"chiageng"},"content":" Maintainer alice \u003d new MaintainerBuilder().withName(\"Alice\").build();","lastModifiedDate":"2024-03-09"},{"lineNumber":64,"author":{"gitId":"chiageng"},"content":" Maintainer bob \u003d new MaintainerBuilder().withName(\"Bob\").build();","lastModifiedDate":"2024-03-09"},{"lineNumber":65,"author":{"gitId":"chiageng"},"content":" AddMaintainerCommand addAliceCommand \u003d new AddMaintainerCommand(alice);","lastModifiedDate":"2024-03-09"},{"lineNumber":66,"author":{"gitId":"chiageng"},"content":" AddMaintainerCommand addBobCommand \u003d new AddMaintainerCommand(bob);","lastModifiedDate":"2024-03-09"},{"lineNumber":67,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":68,"author":{"gitId":"chiageng"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-09"},{"lineNumber":69,"author":{"gitId":"chiageng"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2024-03-09"},{"lineNumber":70,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":71,"author":{"gitId":"chiageng"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-09"},{"lineNumber":72,"author":{"gitId":"chiageng"},"content":" AddMaintainerCommand addAliceCommandCopy \u003d new AddMaintainerCommand(alice);","lastModifiedDate":"2024-03-09"},{"lineNumber":73,"author":{"gitId":"chiageng"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2024-03-09"},{"lineNumber":74,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":75,"author":{"gitId":"chiageng"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":76,"author":{"gitId":"chiageng"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2024-03-09"},{"lineNumber":77,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":78,"author":{"gitId":"chiageng"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":79,"author":{"gitId":"chiageng"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2024-03-09"},{"lineNumber":80,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":81,"author":{"gitId":"chiageng"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":82,"author":{"gitId":"chiageng"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2024-03-09"},{"lineNumber":83,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":84,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":85,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":86,"author":{"gitId":"chiageng"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-09"},{"lineNumber":87,"author":{"gitId":"chiageng"},"content":" AddMaintainerCommand addCommand \u003d new AddMaintainerCommand(ALICEMAINTAINER);","lastModifiedDate":"2024-03-09"},{"lineNumber":88,"author":{"gitId":"chiageng"},"content":" String expected \u003d AddMaintainerCommand.class.getCanonicalName()","lastModifiedDate":"2024-03-09"},{"lineNumber":89,"author":{"gitId":"chiageng"},"content":" + \"{toAdd\u003d\" + ALICEMAINTAINER + \"}\";","lastModifiedDate":"2024-03-09"},{"lineNumber":90,"author":{"gitId":"chiageng"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2024-03-09"},{"lineNumber":91,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":92,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":93,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":94,"author":{"gitId":"chiageng"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2024-03-09"},{"lineNumber":95,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":96,"author":{"gitId":"chiageng"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2024-03-09"},{"lineNumber":97,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":98,"author":{"gitId":"chiageng"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2024-03-09"},{"lineNumber":99,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":100,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":101,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":102,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":103,"author":{"gitId":"chiageng"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2024-03-09"},{"lineNumber":104,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":105,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":106,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":107,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":108,"author":{"gitId":"chiageng"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2024-03-09"},{"lineNumber":109,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":110,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":111,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":112,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":113,"author":{"gitId":"chiageng"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2024-03-09"},{"lineNumber":114,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":115,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":116,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":117,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":118,"author":{"gitId":"chiageng"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2024-03-09"},{"lineNumber":119,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":120,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":121,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":122,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":123,"author":{"gitId":"chiageng"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2024-03-09"},{"lineNumber":124,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":125,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":126,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":127,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":128,"author":{"gitId":"chiageng"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2024-03-09"},{"lineNumber":129,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":130,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":131,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":132,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":133,"author":{"gitId":"chiageng"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2024-03-09"},{"lineNumber":134,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":135,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":136,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":137,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":138,"author":{"gitId":"chiageng"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2024-03-09"},{"lineNumber":139,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":140,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":141,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":142,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":143,"author":{"gitId":"chiageng"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2024-03-09"},{"lineNumber":144,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":145,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":146,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":147,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":148,"author":{"gitId":"chiageng"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2024-03-09"},{"lineNumber":149,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":150,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":151,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":152,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":153,"author":{"gitId":"chiageng"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2024-03-09"},{"lineNumber":154,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":155,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":156,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":157,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":158,"author":{"gitId":"chiageng"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2024-03-09"},{"lineNumber":159,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":160,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":161,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":162,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":163,"author":{"gitId":"chiageng"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2024-03-09"},{"lineNumber":164,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":165,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":166,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":167,"author":{"gitId":"yleeyilin"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":168,"author":{"gitId":"yleeyilin"},"content":" public Person findByName(Name targetName) {","lastModifiedDate":"2024-03-17"},{"lineNumber":169,"author":{"gitId":"yleeyilin"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":170,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":171,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":172,"author":{"gitId":"yleeyilin"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":173,"author":{"gitId":"yleeyilin"},"content":" public Maintainer findMaintainerByName(Name targetName) {","lastModifiedDate":"2024-03-17"},{"lineNumber":174,"author":{"gitId":"yleeyilin"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":175,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":176,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":177,"author":{"gitId":"yleeyilin"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":178,"author":{"gitId":"yleeyilin"},"content":" public Supplier findSupplierByName(Name targetName) {","lastModifiedDate":"2024-03-17"},{"lineNumber":179,"author":{"gitId":"yleeyilin"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":180,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":181,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":182,"author":{"gitId":"yleeyilin"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":183,"author":{"gitId":"yleeyilin"},"content":" public Staff findStaffByName(Name targetName) {","lastModifiedDate":"2024-03-17"},{"lineNumber":184,"author":{"gitId":"yleeyilin"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":185,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":186,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":187,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":188,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":189,"author":{"gitId":"chiageng"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2024-03-09"},{"lineNumber":190,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":191,"author":{"gitId":"chiageng"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2024-03-09"},{"lineNumber":192,"author":{"gitId":"chiageng"},"content":" private final Person person;","lastModifiedDate":"2024-03-09"},{"lineNumber":193,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":194,"author":{"gitId":"chiageng"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2024-03-09"},{"lineNumber":195,"author":{"gitId":"chiageng"},"content":" requireNonNull(person);","lastModifiedDate":"2024-03-09"},{"lineNumber":196,"author":{"gitId":"chiageng"},"content":" this.person \u003d person;","lastModifiedDate":"2024-03-09"},{"lineNumber":197,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":198,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":199,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":200,"author":{"gitId":"chiageng"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2024-03-09"},{"lineNumber":201,"author":{"gitId":"chiageng"},"content":" requireNonNull(person);","lastModifiedDate":"2024-03-09"},{"lineNumber":202,"author":{"gitId":"chiageng"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2024-03-09"},{"lineNumber":203,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":204,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":205,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":206,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":207,"author":{"gitId":"chiageng"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2024-03-09"},{"lineNumber":208,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":209,"author":{"gitId":"chiageng"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2024-03-09"},{"lineNumber":210,"author":{"gitId":"chiageng"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-09"},{"lineNumber":211,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":212,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":213,"author":{"gitId":"chiageng"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2024-03-09"},{"lineNumber":214,"author":{"gitId":"chiageng"},"content":" requireNonNull(person);","lastModifiedDate":"2024-03-09"},{"lineNumber":215,"author":{"gitId":"chiageng"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2024-03-09"},{"lineNumber":216,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":217,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":218,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":219,"author":{"gitId":"chiageng"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2024-03-09"},{"lineNumber":220,"author":{"gitId":"chiageng"},"content":" requireNonNull(person);","lastModifiedDate":"2024-03-09"},{"lineNumber":221,"author":{"gitId":"chiageng"},"content":" personsAdded.add(person);","lastModifiedDate":"2024-03-09"},{"lineNumber":222,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":223,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":224,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":225,"author":{"gitId":"chiageng"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2024-03-09"},{"lineNumber":226,"author":{"gitId":"chiageng"},"content":" return new AddressBook();","lastModifiedDate":"2024-03-09"},{"lineNumber":227,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":228,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":229,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":230,"author":{"gitId":"chiageng"},"content":"}","lastModifiedDate":"2024-03-09"}],"authorContributionMap":{"chiageng":204,"jamessinmaojun":3,"yleeyilin":23}},{"path":"src/test/java/seedu/address/logic/commands/AddStaffCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chiageng"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-09"},{"lineNumber":2,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":3,"author":{"gitId":"chiageng"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-09"},{"lineNumber":4,"author":{"gitId":"chiageng"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-09"},{"lineNumber":5,"author":{"gitId":"chiageng"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-09"},{"lineNumber":6,"author":{"gitId":"chiageng"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-09"},{"lineNumber":7,"author":{"gitId":"chiageng"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-09"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":"import static seedu.address.testutil.TypicalPersons.ALICESTAFF;","lastModifiedDate":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-09"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-09"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-09"},{"lineNumber":13,"author":{"gitId":"chiageng"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-09"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-09"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-09"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2024-03-09"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-09"},{"lineNumber":20,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.AddMessages;","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-03-09"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-09"},{"lineNumber":23,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-09"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-09"},{"lineNumber":25,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Maintainer;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-09"},{"lineNumber":28,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Staff;","lastModifiedDate":"2024-03-09"},{"lineNumber":29,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Supplier;","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"chiageng"},"content":"import seedu.address.testutil.StaffBuilder;","lastModifiedDate":"2024-03-09"},{"lineNumber":31,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":32,"author":{"gitId":"chiageng"},"content":"public class AddStaffCommandTest {","lastModifiedDate":"2024-03-09"},{"lineNumber":33,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":34,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":35,"author":{"gitId":"chiageng"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":36,"author":{"gitId":"chiageng"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddStaffCommand(null));","lastModifiedDate":"2024-03-09"},{"lineNumber":37,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":38,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":39,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":40,"author":{"gitId":"chiageng"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2024-03-09"},{"lineNumber":41,"author":{"gitId":"chiageng"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2024-03-09"},{"lineNumber":42,"author":{"gitId":"chiageng"},"content":" Staff validPerson \u003d new StaffBuilder().build();","lastModifiedDate":"2024-03-09"},{"lineNumber":43,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":44,"author":{"gitId":"chiageng"},"content":" CommandResult commandResult \u003d new AddStaffCommand(validPerson).execute(modelStub);","lastModifiedDate":"2024-03-09"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":46,"author":{"gitId":"jamessinmaojun"},"content":" assertEquals(String.format(AddMessages.MESSAGE_ADD_PERSON_SUCCESS, AddMessages.format(validPerson)),","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2024-03-09"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":" assertEquals(Arrays.asList(validPerson), modelStub.personsAdded);","lastModifiedDate":"2024-03-09"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":53,"author":{"gitId":"chiageng"},"content":" Staff validPerson \u003d new StaffBuilder().build();","lastModifiedDate":"2024-03-09"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":" AddStaffCommand addCommand \u003d new AddStaffCommand(validPerson);","lastModifiedDate":"2024-03-09"},{"lineNumber":55,"author":{"gitId":"chiageng"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPerson);","lastModifiedDate":"2024-03-09"},{"lineNumber":56,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":57,"author":{"gitId":"chiageng"},"content":" assertThrows(CommandException.class,","lastModifiedDate":"2024-03-09"},{"lineNumber":58,"author":{"gitId":"jamessinmaojun"},"content":" AddMessages.MESSAGE_ADD_DUPLICATE_PERSON, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":60,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":61,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":62,"author":{"gitId":"chiageng"},"content":" public void equals() {","lastModifiedDate":"2024-03-09"},{"lineNumber":63,"author":{"gitId":"chiageng"},"content":" Staff alice \u003d new StaffBuilder().withName(\"Alice\").build();","lastModifiedDate":"2024-03-09"},{"lineNumber":64,"author":{"gitId":"chiageng"},"content":" Staff bob \u003d new StaffBuilder().withName(\"Bob\").build();","lastModifiedDate":"2024-03-09"},{"lineNumber":65,"author":{"gitId":"chiageng"},"content":" AddStaffCommand addAliceCommand \u003d new AddStaffCommand(alice);","lastModifiedDate":"2024-03-09"},{"lineNumber":66,"author":{"gitId":"chiageng"},"content":" AddStaffCommand addBobCommand \u003d new AddStaffCommand(bob);","lastModifiedDate":"2024-03-09"},{"lineNumber":67,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":68,"author":{"gitId":"chiageng"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-09"},{"lineNumber":69,"author":{"gitId":"chiageng"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2024-03-09"},{"lineNumber":70,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":71,"author":{"gitId":"chiageng"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-09"},{"lineNumber":72,"author":{"gitId":"chiageng"},"content":" AddStaffCommand addAliceCommandCopy \u003d new AddStaffCommand(alice);","lastModifiedDate":"2024-03-09"},{"lineNumber":73,"author":{"gitId":"chiageng"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2024-03-09"},{"lineNumber":74,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":75,"author":{"gitId":"chiageng"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":76,"author":{"gitId":"chiageng"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2024-03-09"},{"lineNumber":77,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":78,"author":{"gitId":"chiageng"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":79,"author":{"gitId":"chiageng"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2024-03-09"},{"lineNumber":80,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":81,"author":{"gitId":"chiageng"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":82,"author":{"gitId":"chiageng"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2024-03-09"},{"lineNumber":83,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":84,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":85,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":86,"author":{"gitId":"chiageng"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-09"},{"lineNumber":87,"author":{"gitId":"chiageng"},"content":" AddStaffCommand addCommand \u003d new AddStaffCommand(ALICESTAFF);","lastModifiedDate":"2024-03-09"},{"lineNumber":88,"author":{"gitId":"chiageng"},"content":" String expected \u003d AddStaffCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICESTAFF + \"}\";","lastModifiedDate":"2024-03-09"},{"lineNumber":89,"author":{"gitId":"chiageng"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2024-03-09"},{"lineNumber":90,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":91,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":92,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":93,"author":{"gitId":"chiageng"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2024-03-09"},{"lineNumber":94,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":95,"author":{"gitId":"chiageng"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2024-03-09"},{"lineNumber":96,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":97,"author":{"gitId":"chiageng"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2024-03-09"},{"lineNumber":98,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":99,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":100,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":101,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":102,"author":{"gitId":"chiageng"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2024-03-09"},{"lineNumber":103,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":104,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":105,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":106,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":107,"author":{"gitId":"chiageng"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2024-03-09"},{"lineNumber":108,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":109,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":110,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":111,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":112,"author":{"gitId":"chiageng"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2024-03-09"},{"lineNumber":113,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":114,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":115,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":116,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":117,"author":{"gitId":"chiageng"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2024-03-09"},{"lineNumber":118,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":119,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":120,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":121,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":122,"author":{"gitId":"chiageng"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2024-03-09"},{"lineNumber":123,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":124,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":125,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":126,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":127,"author":{"gitId":"chiageng"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2024-03-09"},{"lineNumber":128,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":129,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":130,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":131,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":132,"author":{"gitId":"chiageng"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2024-03-09"},{"lineNumber":133,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":134,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":135,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":136,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":137,"author":{"gitId":"chiageng"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2024-03-09"},{"lineNumber":138,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":139,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":140,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":141,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":142,"author":{"gitId":"chiageng"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2024-03-09"},{"lineNumber":143,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":144,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":145,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":146,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":147,"author":{"gitId":"chiageng"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2024-03-09"},{"lineNumber":148,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":149,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":150,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":151,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":152,"author":{"gitId":"chiageng"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2024-03-09"},{"lineNumber":153,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":154,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":155,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":156,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":157,"author":{"gitId":"chiageng"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2024-03-09"},{"lineNumber":158,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":159,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":160,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":161,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":162,"author":{"gitId":"chiageng"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2024-03-09"},{"lineNumber":163,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":164,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":165,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":166,"author":{"gitId":"yleeyilin"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":167,"author":{"gitId":"yleeyilin"},"content":" public Person findByName(Name targetName) {","lastModifiedDate":"2024-03-17"},{"lineNumber":168,"author":{"gitId":"yleeyilin"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":169,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":170,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":171,"author":{"gitId":"yleeyilin"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":172,"author":{"gitId":"yleeyilin"},"content":" public Maintainer findMaintainerByName(Name targetName) {","lastModifiedDate":"2024-03-17"},{"lineNumber":173,"author":{"gitId":"yleeyilin"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":174,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":175,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":176,"author":{"gitId":"yleeyilin"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":177,"author":{"gitId":"yleeyilin"},"content":" public Supplier findSupplierByName(Name targetName) {","lastModifiedDate":"2024-03-17"},{"lineNumber":178,"author":{"gitId":"yleeyilin"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":179,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":180,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":181,"author":{"gitId":"yleeyilin"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":182,"author":{"gitId":"yleeyilin"},"content":" public Staff findStaffByName(Name targetName) {","lastModifiedDate":"2024-03-17"},{"lineNumber":183,"author":{"gitId":"yleeyilin"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":184,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":185,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":186,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":187,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":188,"author":{"gitId":"chiageng"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2024-03-09"},{"lineNumber":189,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":190,"author":{"gitId":"chiageng"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2024-03-09"},{"lineNumber":191,"author":{"gitId":"chiageng"},"content":" private final Person person;","lastModifiedDate":"2024-03-09"},{"lineNumber":192,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":193,"author":{"gitId":"chiageng"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2024-03-09"},{"lineNumber":194,"author":{"gitId":"chiageng"},"content":" requireNonNull(person);","lastModifiedDate":"2024-03-09"},{"lineNumber":195,"author":{"gitId":"chiageng"},"content":" this.person \u003d person;","lastModifiedDate":"2024-03-09"},{"lineNumber":196,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":197,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":198,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":199,"author":{"gitId":"chiageng"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2024-03-09"},{"lineNumber":200,"author":{"gitId":"chiageng"},"content":" requireNonNull(person);","lastModifiedDate":"2024-03-09"},{"lineNumber":201,"author":{"gitId":"chiageng"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2024-03-09"},{"lineNumber":202,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":203,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":204,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":205,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":206,"author":{"gitId":"chiageng"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2024-03-09"},{"lineNumber":207,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":208,"author":{"gitId":"chiageng"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2024-03-09"},{"lineNumber":209,"author":{"gitId":"chiageng"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-09"},{"lineNumber":210,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":211,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":212,"author":{"gitId":"chiageng"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2024-03-09"},{"lineNumber":213,"author":{"gitId":"chiageng"},"content":" requireNonNull(person);","lastModifiedDate":"2024-03-09"},{"lineNumber":214,"author":{"gitId":"chiageng"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2024-03-09"},{"lineNumber":215,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":216,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":217,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":218,"author":{"gitId":"chiageng"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2024-03-09"},{"lineNumber":219,"author":{"gitId":"chiageng"},"content":" requireNonNull(person);","lastModifiedDate":"2024-03-09"},{"lineNumber":220,"author":{"gitId":"chiageng"},"content":" personsAdded.add(person);","lastModifiedDate":"2024-03-09"},{"lineNumber":221,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":222,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":223,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":224,"author":{"gitId":"chiageng"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2024-03-09"},{"lineNumber":225,"author":{"gitId":"chiageng"},"content":" return new AddressBook();","lastModifiedDate":"2024-03-09"},{"lineNumber":226,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":227,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":228,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":229,"author":{"gitId":"chiageng"},"content":"}","lastModifiedDate":"2024-03-09"}],"authorContributionMap":{"chiageng":203,"jamessinmaojun":3,"yleeyilin":23}},{"path":"src/test/java/seedu/address/logic/commands/AddSupplierCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chiageng"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-09"},{"lineNumber":2,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":3,"author":{"gitId":"chiageng"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-09"},{"lineNumber":4,"author":{"gitId":"chiageng"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-09"},{"lineNumber":5,"author":{"gitId":"chiageng"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-09"},{"lineNumber":6,"author":{"gitId":"chiageng"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-09"},{"lineNumber":7,"author":{"gitId":"chiageng"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-09"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":"import static seedu.address.testutil.TypicalPersons.ALICESUPPLIER;","lastModifiedDate":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-09"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-09"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-09"},{"lineNumber":13,"author":{"gitId":"chiageng"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-09"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-09"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-09"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2024-03-09"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-09"},{"lineNumber":20,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.AddMessages;","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-03-09"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-09"},{"lineNumber":23,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-09"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-09"},{"lineNumber":25,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Maintainer;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-09"},{"lineNumber":28,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Staff;","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Supplier;","lastModifiedDate":"2024-03-09"},{"lineNumber":30,"author":{"gitId":"chiageng"},"content":"import seedu.address.testutil.SupplierBuilder;","lastModifiedDate":"2024-03-09"},{"lineNumber":31,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":32,"author":{"gitId":"chiageng"},"content":"public class AddSupplierCommandTest {","lastModifiedDate":"2024-03-09"},{"lineNumber":33,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":34,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":35,"author":{"gitId":"chiageng"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":36,"author":{"gitId":"chiageng"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddSupplierCommand(null));","lastModifiedDate":"2024-03-09"},{"lineNumber":37,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":38,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":39,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":40,"author":{"gitId":"chiageng"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2024-03-09"},{"lineNumber":41,"author":{"gitId":"chiageng"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2024-03-09"},{"lineNumber":42,"author":{"gitId":"chiageng"},"content":" Supplier validPerson \u003d new SupplierBuilder().build();","lastModifiedDate":"2024-03-09"},{"lineNumber":43,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":44,"author":{"gitId":"chiageng"},"content":" CommandResult commandResult \u003d new AddSupplierCommand(validPerson).execute(modelStub);","lastModifiedDate":"2024-03-09"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":46,"author":{"gitId":"jamessinmaojun"},"content":" assertEquals(String.format(AddMessages.MESSAGE_ADD_PERSON_SUCCESS, AddMessages.format(validPerson)),","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2024-03-09"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":" assertEquals(Arrays.asList(validPerson), modelStub.personsAdded);","lastModifiedDate":"2024-03-09"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":53,"author":{"gitId":"chiageng"},"content":" Supplier validPerson \u003d new SupplierBuilder().build();","lastModifiedDate":"2024-03-09"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":" AddSupplierCommand addCommand \u003d new AddSupplierCommand(validPerson);","lastModifiedDate":"2024-03-09"},{"lineNumber":55,"author":{"gitId":"chiageng"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPerson);","lastModifiedDate":"2024-03-09"},{"lineNumber":56,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":57,"author":{"gitId":"chiageng"},"content":" assertThrows(CommandException.class,","lastModifiedDate":"2024-03-09"},{"lineNumber":58,"author":{"gitId":"jamessinmaojun"},"content":" AddMessages.MESSAGE_ADD_DUPLICATE_PERSON, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":60,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":61,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":62,"author":{"gitId":"chiageng"},"content":" public void equals() {","lastModifiedDate":"2024-03-09"},{"lineNumber":63,"author":{"gitId":"chiageng"},"content":" Supplier alice \u003d new SupplierBuilder().withName(\"Alice\").build();","lastModifiedDate":"2024-03-09"},{"lineNumber":64,"author":{"gitId":"chiageng"},"content":" Supplier bob \u003d new SupplierBuilder().withName(\"Bob\").build();","lastModifiedDate":"2024-03-09"},{"lineNumber":65,"author":{"gitId":"chiageng"},"content":" AddSupplierCommand addAliceCommand \u003d new AddSupplierCommand(alice);","lastModifiedDate":"2024-03-09"},{"lineNumber":66,"author":{"gitId":"chiageng"},"content":" AddSupplierCommand addBobCommand \u003d new AddSupplierCommand(bob);","lastModifiedDate":"2024-03-09"},{"lineNumber":67,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":68,"author":{"gitId":"chiageng"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-09"},{"lineNumber":69,"author":{"gitId":"chiageng"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2024-03-09"},{"lineNumber":70,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":71,"author":{"gitId":"chiageng"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-09"},{"lineNumber":72,"author":{"gitId":"chiageng"},"content":" AddSupplierCommand addAliceCommandCopy \u003d new AddSupplierCommand(alice);","lastModifiedDate":"2024-03-09"},{"lineNumber":73,"author":{"gitId":"chiageng"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2024-03-09"},{"lineNumber":74,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":75,"author":{"gitId":"chiageng"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":76,"author":{"gitId":"chiageng"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2024-03-09"},{"lineNumber":77,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":78,"author":{"gitId":"chiageng"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":79,"author":{"gitId":"chiageng"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2024-03-09"},{"lineNumber":80,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":81,"author":{"gitId":"chiageng"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":82,"author":{"gitId":"chiageng"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2024-03-09"},{"lineNumber":83,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":84,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":85,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":86,"author":{"gitId":"chiageng"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-09"},{"lineNumber":87,"author":{"gitId":"chiageng"},"content":" AddSupplierCommand addCommand \u003d new AddSupplierCommand(ALICESUPPLIER);","lastModifiedDate":"2024-03-09"},{"lineNumber":88,"author":{"gitId":"chiageng"},"content":" String expected \u003d AddSupplierCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICESUPPLIER + \"}\";","lastModifiedDate":"2024-03-09"},{"lineNumber":89,"author":{"gitId":"chiageng"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2024-03-09"},{"lineNumber":90,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":91,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":92,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":93,"author":{"gitId":"chiageng"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2024-03-09"},{"lineNumber":94,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":95,"author":{"gitId":"chiageng"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2024-03-09"},{"lineNumber":96,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":97,"author":{"gitId":"chiageng"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2024-03-09"},{"lineNumber":98,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":99,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":100,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":101,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":102,"author":{"gitId":"chiageng"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2024-03-09"},{"lineNumber":103,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":104,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":105,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":106,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":107,"author":{"gitId":"chiageng"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2024-03-09"},{"lineNumber":108,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":109,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":110,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":111,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":112,"author":{"gitId":"chiageng"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2024-03-09"},{"lineNumber":113,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":114,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":115,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":116,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":117,"author":{"gitId":"chiageng"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2024-03-09"},{"lineNumber":118,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":119,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":120,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":121,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":122,"author":{"gitId":"chiageng"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2024-03-09"},{"lineNumber":123,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":124,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":125,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":126,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":127,"author":{"gitId":"chiageng"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2024-03-09"},{"lineNumber":128,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":129,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":130,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":131,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":132,"author":{"gitId":"chiageng"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2024-03-09"},{"lineNumber":133,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":134,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":135,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":136,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":137,"author":{"gitId":"chiageng"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2024-03-09"},{"lineNumber":138,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":139,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":140,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":141,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":142,"author":{"gitId":"chiageng"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2024-03-09"},{"lineNumber":143,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":144,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":145,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":146,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":147,"author":{"gitId":"chiageng"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2024-03-09"},{"lineNumber":148,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":149,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":150,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":151,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":152,"author":{"gitId":"chiageng"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2024-03-09"},{"lineNumber":153,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":154,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":155,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":156,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":157,"author":{"gitId":"chiageng"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2024-03-09"},{"lineNumber":158,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":159,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":160,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":161,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":162,"author":{"gitId":"chiageng"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2024-03-09"},{"lineNumber":163,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":164,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":165,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":166,"author":{"gitId":"yleeyilin"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":167,"author":{"gitId":"yleeyilin"},"content":" public Person findByName(Name targetName) {","lastModifiedDate":"2024-03-17"},{"lineNumber":168,"author":{"gitId":"yleeyilin"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":169,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":170,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":171,"author":{"gitId":"yleeyilin"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":172,"author":{"gitId":"yleeyilin"},"content":" public Maintainer findMaintainerByName(Name targetName) {","lastModifiedDate":"2024-03-17"},{"lineNumber":173,"author":{"gitId":"yleeyilin"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":174,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":175,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":176,"author":{"gitId":"yleeyilin"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":177,"author":{"gitId":"yleeyilin"},"content":" public Supplier findSupplierByName(Name targetName) {","lastModifiedDate":"2024-03-17"},{"lineNumber":178,"author":{"gitId":"yleeyilin"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":179,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":180,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":181,"author":{"gitId":"yleeyilin"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":182,"author":{"gitId":"yleeyilin"},"content":" public Staff findStaffByName(Name targetName) {","lastModifiedDate":"2024-03-17"},{"lineNumber":183,"author":{"gitId":"yleeyilin"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":184,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":185,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":186,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":187,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":188,"author":{"gitId":"chiageng"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2024-03-09"},{"lineNumber":189,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":190,"author":{"gitId":"chiageng"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2024-03-09"},{"lineNumber":191,"author":{"gitId":"chiageng"},"content":" private final Person person;","lastModifiedDate":"2024-03-09"},{"lineNumber":192,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":193,"author":{"gitId":"chiageng"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2024-03-09"},{"lineNumber":194,"author":{"gitId":"chiageng"},"content":" requireNonNull(person);","lastModifiedDate":"2024-03-09"},{"lineNumber":195,"author":{"gitId":"chiageng"},"content":" this.person \u003d person;","lastModifiedDate":"2024-03-09"},{"lineNumber":196,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":197,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":198,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":199,"author":{"gitId":"chiageng"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2024-03-09"},{"lineNumber":200,"author":{"gitId":"chiageng"},"content":" requireNonNull(person);","lastModifiedDate":"2024-03-09"},{"lineNumber":201,"author":{"gitId":"chiageng"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2024-03-09"},{"lineNumber":202,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":203,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":204,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":205,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":206,"author":{"gitId":"chiageng"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2024-03-09"},{"lineNumber":207,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":208,"author":{"gitId":"chiageng"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2024-03-09"},{"lineNumber":209,"author":{"gitId":"chiageng"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-09"},{"lineNumber":210,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":211,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":212,"author":{"gitId":"chiageng"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2024-03-09"},{"lineNumber":213,"author":{"gitId":"chiageng"},"content":" requireNonNull(person);","lastModifiedDate":"2024-03-09"},{"lineNumber":214,"author":{"gitId":"chiageng"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2024-03-09"},{"lineNumber":215,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":216,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":217,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":218,"author":{"gitId":"chiageng"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2024-03-09"},{"lineNumber":219,"author":{"gitId":"chiageng"},"content":" requireNonNull(person);","lastModifiedDate":"2024-03-09"},{"lineNumber":220,"author":{"gitId":"chiageng"},"content":" personsAdded.add(person);","lastModifiedDate":"2024-03-09"},{"lineNumber":221,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":222,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":223,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":224,"author":{"gitId":"chiageng"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2024-03-09"},{"lineNumber":225,"author":{"gitId":"chiageng"},"content":" return new AddressBook();","lastModifiedDate":"2024-03-09"},{"lineNumber":226,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":227,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":228,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":229,"author":{"gitId":"chiageng"},"content":"}","lastModifiedDate":"2024-03-09"}],"authorContributionMap":{"chiageng":203,"jamessinmaojun":3,"yleeyilin":23}},{"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":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COMMISSION;","lastModifiedDate":"2024-03-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMPLOYMENT;","lastModifiedDate":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NOTE;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PRICE;","lastModifiedDate":"2024-03-09"},{"lineNumber":13,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PRODUCT;","lastModifiedDate":"2024-03-09"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SALARY;","lastModifiedDate":"2024-03-09"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SKILL;","lastModifiedDate":"2024-03-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":27,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":30,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.testutil.EditMaintainerDescriptorBuilder;","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05"},{"lineNumber":32,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.testutil.EditStaffDescriptorBuilder;","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.testutil.EditSupplierDescriptorBuilder;","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":" public static final String VALID_PRODUCT_AMY \u003d \"pooch food\";","lastModifiedDate":"2024-03-09"},{"lineNumber":46,"author":{"gitId":"chiageng"},"content":" public static final String VALID_PRICE_AMY \u003d \"$50/bag\";","lastModifiedDate":"2024-03-09"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":" public static final String VALID_SKILL_AMY \u003d \"trian dog\";","lastModifiedDate":"2024-03-09"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":" public static final String VALID_COMMISSION_AMY \u003d \"$50/hr\";","lastModifiedDate":"2024-03-09"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":" public static final String VALID_SALARY_AMY \u003d \"$50/hr\";","lastModifiedDate":"2024-03-09"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":" public static final String VALID_EMPLOYMENT_AMY \u003d \"part-time\";","lastModifiedDate":"2024-03-09"},{"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":"jannaleong"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"jannaleong"},"content":" public static final String VALID_NOTE_AMY \u003d \"Cancel shipment with amy\";","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"jannaleong"},"content":" public static final String VALID_NOTE_BOB \u003d \"Cancel shipment with bob\";","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"chiageng"},"content":" public static final String VALID_PRODUCT_BOB \u003d \"pooch food\";","lastModifiedDate":"2024-03-09"},{"lineNumber":58,"author":{"gitId":"chiageng"},"content":" public static final String VALID_PRICE_BOB \u003d \"$50/bag\";","lastModifiedDate":"2024-03-09"},{"lineNumber":59,"author":{"gitId":"chiageng"},"content":" public static final String VALID_SKILL_BOB \u003d \"trian dog\";","lastModifiedDate":"2024-03-09"},{"lineNumber":60,"author":{"gitId":"chiageng"},"content":" public static final String VALID_COMMISSION_BOB \u003d \"$50/hr\";","lastModifiedDate":"2024-03-09"},{"lineNumber":61,"author":{"gitId":"chiageng"},"content":" public static final String VALID_SALARY_BOB \u003d \"$50/hr\";","lastModifiedDate":"2024-03-09"},{"lineNumber":62,"author":{"gitId":"chiageng"},"content":" public static final String VALID_EMPLOYMENT_BOB \u003d \"part-time\";","lastModifiedDate":"2024-03-09"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05"},{"lineNumber":64,"author":{"gitId":"chiageng"},"content":" public static final String VALID_TAG \u003d \"other\";","lastModifiedDate":"2024-03-08"},{"lineNumber":65,"author":{"gitId":"yleeyilin"},"content":" public static final String VALID_TAG_STAFF \u003d \"staff\";","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"yleeyilin"},"content":" public static final String VALID_TAG_SUPPLIER \u003d \"supplier\";","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"yleeyilin"},"content":" public static final String VALID_TAG_MAINTAINER \u003d \"maintainer\";","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":70,"author":{"gitId":"jannaleong"},"content":" public static final String NOTE_DESC_BOB \u003d \" \" + PREFIX_NOTE + \"get kibble\";","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":79,"author":{"gitId":"chiageng"},"content":" public static final String SALARY_DESC_AMY \u003d \" \" + PREFIX_SALARY + VALID_SALARY_AMY;","lastModifiedDate":"2024-03-09"},{"lineNumber":80,"author":{"gitId":"chiageng"},"content":" public static final String EMPLOYMENT_DESC_AMY \u003d \" \" + PREFIX_EMPLOYMENT + VALID_EMPLOYMENT_AMY;","lastModifiedDate":"2024-03-09"},{"lineNumber":81,"author":{"gitId":"chiageng"},"content":" public static final String PRODUCT_DESC_AMY \u003d \" \" + PREFIX_PRODUCT + VALID_PRODUCT_AMY;","lastModifiedDate":"2024-03-09"},{"lineNumber":82,"author":{"gitId":"chiageng"},"content":" public static final String PRICE_DESC_AMY \u003d \" \" + PREFIX_PRICE + VALID_PRICE_AMY;","lastModifiedDate":"2024-03-09"},{"lineNumber":83,"author":{"gitId":"chiageng"},"content":" public static final String SKILL_DESC_AMY \u003d \" \" + PREFIX_SKILL + VALID_SKILL_AMY;","lastModifiedDate":"2024-03-09"},{"lineNumber":84,"author":{"gitId":"chiageng"},"content":" public static final String COMMISSION_DESC_AMY \u003d \" \" + PREFIX_COMMISSION + VALID_COMMISSION_AMY;","lastModifiedDate":"2024-03-09"},{"lineNumber":85,"author":{"gitId":"chiageng"},"content":" public static final String SALARY_DESC_BOB \u003d \" \" + PREFIX_SALARY + VALID_SALARY_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":86,"author":{"gitId":"chiageng"},"content":" public static final String EMPLOYMENT_DESC_BOB \u003d \" \" + PREFIX_EMPLOYMENT + VALID_EMPLOYMENT_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":87,"author":{"gitId":"chiageng"},"content":" public static final String PRODUCT_DESC_BOB \u003d \" \" + PREFIX_PRODUCT + VALID_PRODUCT_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":88,"author":{"gitId":"chiageng"},"content":" public static final String PRICE_DESC_BOB \u003d \" \" + PREFIX_PRICE + VALID_PRICE_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":89,"author":{"gitId":"chiageng"},"content":" public static final String SKILL_DESC_BOB \u003d \" \" + PREFIX_SKILL + VALID_SKILL_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":90,"author":{"gitId":"chiageng"},"content":" public static final String COMMISSION_DESC_BOB \u003d \" \" + PREFIX_COMMISSION + VALID_COMMISSION_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":94,"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":95,"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":96,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05"},{"lineNumber":98,"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":99,"author":{"gitId":"chiageng"},"content":" public static final String INVALID_SALARY_DESC \u003d \" \" + PREFIX_SALARY + \"20\";","lastModifiedDate":"2024-03-09"},{"lineNumber":100,"author":{"gitId":"chiageng"},"content":" public static final String INVALID_EMPLOYMENT_DESC \u003d \" \" + PREFIX_EMPLOYMENT + \"employment\";","lastModifiedDate":"2024-03-09"},{"lineNumber":101,"author":{"gitId":"chiageng"},"content":" public static final String INVALID_PRODUCT_DESC \u003d \" \" + PREFIX_PRODUCT;","lastModifiedDate":"2024-03-09"},{"lineNumber":102,"author":{"gitId":"chiageng"},"content":" public static final String INVALID_PRICE_DESC \u003d \" \" + PREFIX_PRICE + \"20\";","lastModifiedDate":"2024-03-09"},{"lineNumber":103,"author":{"gitId":"chiageng"},"content":" public static final String INVALID_SKILL_DESC \u003d \" \" + PREFIX_SKILL;","lastModifiedDate":"2024-03-09"},{"lineNumber":104,"author":{"gitId":"chiageng"},"content":" public static final String INVALID_COMMISSION_DESC \u003d \" \" + PREFIX_COMMISSION + \"20\";","lastModifiedDate":"2024-03-09"},{"lineNumber":105,"author":{"gitId":"jannaleong"},"content":" public static final String INVALID_DESC_BOB \u003d \" \" + PREFIX_NOTE;","lastModifiedDate":"2024-03-19"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":111,"author":{"gitId":"yleeyilin"},"content":" public static final EditStaffCommand.EditStaffDescriptor DESC_AMY_STAFF;","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"yleeyilin"},"content":" public static final EditStaffCommand.EditStaffDescriptor DESC_BOB_STAFF;","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"yleeyilin"},"content":" public static final EditSupplierCommand.EditSupplierDescriptor DESC_AMY_SUPPLIER;","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"yleeyilin"},"content":" public static final EditSupplierCommand.EditSupplierDescriptor DESC_BOB_SUPPLIER;","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"yleeyilin"},"content":" public static final EditMaintainerCommand.EditMaintainerDescriptor DESC_AMY_MAINTAINER;","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"yleeyilin"},"content":" public static final EditMaintainerCommand.EditMaintainerDescriptor DESC_BOB_MAINTAINER;","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":119,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":120,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":121,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":122,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":123,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":124,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":125,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":126,"author":{"gitId":"yleeyilin"},"content":" DESC_AMY_SUPPLIER \u003d new EditSupplierDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"yleeyilin"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"yleeyilin"},"content":" .withPrice(VALID_PRICE_AMY).withProduct(VALID_PRODUCT_AMY)","lastModifiedDate":"2024-03-17"},{"lineNumber":129,"author":{"gitId":"yleeyilin"},"content":" .withTags(VALID_TAG_SUPPLIER).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":130,"author":{"gitId":"yleeyilin"},"content":" DESC_BOB_SUPPLIER \u003d new EditSupplierDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"yleeyilin"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"yleeyilin"},"content":" .withPrice(VALID_PRICE_BOB).withProduct(VALID_PRODUCT_BOB)","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"yleeyilin"},"content":" .withTags(VALID_TAG_SUPPLIER).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"yleeyilin"},"content":" DESC_AMY_STAFF \u003d new EditStaffDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-03-17"},{"lineNumber":135,"author":{"gitId":"yleeyilin"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2024-03-17"},{"lineNumber":136,"author":{"gitId":"yleeyilin"},"content":" .withEmployment(VALID_EMPLOYMENT_AMY).withSalary(VALID_SALARY_AMY)","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"yleeyilin"},"content":" .withTags(VALID_TAG_SUPPLIER).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":138,"author":{"gitId":"yleeyilin"},"content":" DESC_BOB_STAFF \u003d new EditStaffDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-17"},{"lineNumber":139,"author":{"gitId":"yleeyilin"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-03-17"},{"lineNumber":140,"author":{"gitId":"yleeyilin"},"content":" .withEmployment(VALID_EMPLOYMENT_BOB).withSalary(VALID_SALARY_BOB)","lastModifiedDate":"2024-03-17"},{"lineNumber":141,"author":{"gitId":"yleeyilin"},"content":" .withTags(VALID_TAG_STAFF).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"yleeyilin"},"content":" DESC_AMY_MAINTAINER \u003d new EditMaintainerDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-03-17"},{"lineNumber":143,"author":{"gitId":"yleeyilin"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2024-03-17"},{"lineNumber":144,"author":{"gitId":"yleeyilin"},"content":" .withSkill(VALID_SKILL_AMY).withCommission(VALID_COMMISSION_AMY)","lastModifiedDate":"2024-03-17"},{"lineNumber":145,"author":{"gitId":"yleeyilin"},"content":" .withTags(VALID_TAG_SUPPLIER).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"yleeyilin"},"content":" DESC_BOB_MAINTAINER \u003d new EditMaintainerDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-17"},{"lineNumber":147,"author":{"gitId":"yleeyilin"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-03-17"},{"lineNumber":148,"author":{"gitId":"yleeyilin"},"content":" .withSkill(VALID_SKILL_BOB).withCommission(VALID_COMMISSION_BOB)","lastModifiedDate":"2024-03-17"},{"lineNumber":149,"author":{"gitId":"yleeyilin"},"content":" .withTags(VALID_TAG_STAFF).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":152,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":153,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":154,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":155,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":156,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":157,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25"},{"lineNumber":158,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":159,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":160,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":161,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":163,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":164,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":168,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":169,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25"},{"lineNumber":170,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":171,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":172,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25"},{"lineNumber":173,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":174,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":175,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":178,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":179,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":180,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":181,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":182,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25"},{"lineNumber":183,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":184,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25"},{"lineNumber":185,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":186,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":187,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":188,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":190,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03"},{"lineNumber":191,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":192,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05"},{"lineNumber":193,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":194,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":195,"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":196,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31"},{"lineNumber":197,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":198,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31"},{"lineNumber":199,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":201,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31"},{"lineNumber":202,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20"},{"lineNumber":203,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":205,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08"},{"lineNumber":206,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":208,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":209,"author":{"gitId":"yleeyilin"},"content":" * Updates {@code model}\u0027s filtered list to show only the person at the given {@code targetIndex} in the","lastModifiedDate":"2024-03-17"},{"lineNumber":210,"author":{"gitId":"yleeyilin"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2024-03-17"},{"lineNumber":211,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":212,"author":{"gitId":"yleeyilin"},"content":" public static void showPersonWithName(Model model, Name targetName) {","lastModifiedDate":"2024-03-17"},{"lineNumber":213,"author":{"gitId":"yleeyilin"},"content":" assertTrue(targetName !\u003d null);","lastModifiedDate":"2024-03-17"},{"lineNumber":214,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":215,"author":{"gitId":"yleeyilin"},"content":" Person person;","lastModifiedDate":"2024-03-18"},{"lineNumber":216,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":217,"author":{"gitId":"yleeyilin"},"content":" try {","lastModifiedDate":"2024-03-18"},{"lineNumber":218,"author":{"gitId":"yleeyilin"},"content":" person \u003d model.findByName(targetName);","lastModifiedDate":"2024-03-18"},{"lineNumber":219,"author":{"gitId":"yleeyilin"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2024-03-17"},{"lineNumber":220,"author":{"gitId":"yleeyilin"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2024-03-17"},{"lineNumber":221,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":222,"author":{"gitId":"yleeyilin"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2024-03-17"},{"lineNumber":223,"author":{"gitId":"yleeyilin"},"content":" } catch (CommandException e) {","lastModifiedDate":"2024-03-18"},{"lineNumber":224,"author":{"gitId":"yleeyilin"},"content":" e.printStackTrace();","lastModifiedDate":"2024-03-18"},{"lineNumber":225,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":226,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":227,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":228,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"chiageng":37,"jannaleong":6,"-":127,"yleeyilin":58}},{"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":"jamessinmaojun"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonWithName;","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"jamessinmaojun"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"jamessinmaojun"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-16"},{"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":"jamessinmaojun"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.DeleteMessages;","lastModifiedDate":"2024-03-18"},{"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":"jamessinmaojun"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2018-01-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":33,"author":{"gitId":"jamessinmaojun"},"content":" Person personToDelete \u003d ALICE;","lastModifiedDate":"2024-03-15"},{"lineNumber":34,"author":{"gitId":"jamessinmaojun"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(ALICE.getName());","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":36,"author":{"gitId":"jamessinmaojun"},"content":" String expectedMessage \u003d String.format(DeleteMessages.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"jamessinmaojun"},"content":" DeleteMessages.format(personToDelete));","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":46,"author":{"gitId":"jamessinmaojun"},"content":" public void execute_validNameFilteredList_success() {","lastModifiedDate":"2024-03-15"},{"lineNumber":47,"author":{"gitId":"jamessinmaojun"},"content":" showPersonWithName(model, ALICE.getName());","lastModifiedDate":"2024-03-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":49,"author":{"gitId":"yleeyilin"},"content":" Person personToDelete;","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"yleeyilin"},"content":" try {","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"yleeyilin"},"content":" personToDelete \u003d model.findByName(ALICE.getName());","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"jamessinmaojun"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(ALICE.getName());","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":54,"author":{"gitId":"jamessinmaojun"},"content":" String expectedMessage \u003d String.format(DeleteMessages.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"jamessinmaojun"},"content":" DeleteMessages.format(personToDelete));","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":" showNoPerson(expectedModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":62,"author":{"gitId":"yleeyilin"},"content":" } catch (CommandException e) {","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"yleeyilin"},"content":" e.printStackTrace();","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":68,"author":{"gitId":"jamessinmaojun"},"content":" public void execute_invalidNameFilteredList_throwsCommandException() {","lastModifiedDate":"2024-03-15"},{"lineNumber":69,"author":{"gitId":"jamessinmaojun"},"content":" showPersonWithName(model, ALICE.getName());","lastModifiedDate":"2024-03-15"},{"lineNumber":70,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":71,"author":{"gitId":"jamessinmaojun"},"content":" Name invalidName \u003d BENSON.getName();","lastModifiedDate":"2024-03-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":73,"author":{"gitId":"jamessinmaojun"},"content":" // ensures that the invalid name is not equal to \"Alice Pauline\"","lastModifiedDate":"2024-03-15"},{"lineNumber":74,"author":{"gitId":"jamessinmaojun"},"content":" assertTrue(!invalidName.equals(ALICE.getName()));","lastModifiedDate":"2024-03-15"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":76,"author":{"gitId":"jamessinmaojun"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(invalidName);","lastModifiedDate":"2024-03-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":78,"author":{"gitId":"jamessinmaojun"},"content":" assertCommandFailure(deleteCommand, model, DeleteMessages.MESSAGE_DELETE_NAME_NOT_FOUND);","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":83,"author":{"gitId":"jamessinmaojun"},"content":" DeleteCommand deleteFirstCommand \u003d new DeleteCommand(ALICE.getName());","lastModifiedDate":"2024-03-15"},{"lineNumber":84,"author":{"gitId":"jamessinmaojun"},"content":" DeleteCommand deleteSecondCommand \u003d new DeleteCommand(BENSON.getName());","lastModifiedDate":"2024-03-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"jamessinmaojun"},"content":" DeleteCommand deleteFirstCommandCopy \u003d new DeleteCommand(ALICE.getName());","lastModifiedDate":"2024-03-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","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":"2019-02-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":105,"author":{"gitId":"jamessinmaojun"},"content":" Name targetName \u003d ALICE.getName();","lastModifiedDate":"2024-03-15"},{"lineNumber":106,"author":{"gitId":"jamessinmaojun"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(targetName);","lastModifiedDate":"2024-03-15"},{"lineNumber":107,"author":{"gitId":"jamessinmaojun"},"content":" String expected \u003d DeleteCommand.class.getCanonicalName() + \"{targetName\u003d\" + targetName + \"}\";","lastModifiedDate":"2024-03-15"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertEquals(expected, deleteCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":112,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":" private void showNoPerson(Model model) {","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2017-06-12"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertTrue(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2018-02-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":119,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"jamessinmaojun":29,"-":84,"yleeyilin":6}},{"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":"2024-03-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG;","lastModifiedDate":"2024-03-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-09"},{"lineNumber":13,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonWithName;","lastModifiedDate":"2024-03-17"},{"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":"yleeyilin"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2024-03-17"},{"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.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-08"},{"lineNumber":24,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.EditMessages;","lastModifiedDate":"2024-03-20"},{"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":"yleeyilin"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-04"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":43,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedPerson).build();","lastModifiedDate":"2017-06-05"},{"lineNumber":45,"author":{"gitId":"yleeyilin"},"content":" EditCommand editCommand \u003d new EditCommand(ALICE.getName(), descriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":47,"author":{"gitId":"jamessinmaojun"},"content":" String expectedMessage \u003d String.format(EditMessages.MESSAGE_EDIT_PERSON_SUCCESS,","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"jamessinmaojun"},"content":" EditMessages.format(editedPerson));","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":58,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2017-05-18"},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2017-05-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-18"},{"lineNumber":63,"author":{"gitId":"chiageng"},"content":" .withTags(VALID_TAG).build();","lastModifiedDate":"2024-03-08"},{"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":"chiageng"},"content":" .withPhone(VALID_PHONE_BOB).withTags(VALID_TAG).build();","lastModifiedDate":"2024-03-08"},{"lineNumber":67,"author":{"gitId":"yleeyilin"},"content":" EditCommand editCommand \u003d new EditCommand(lastPerson.getName(), descriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":69,"author":{"gitId":"jamessinmaojun"},"content":" String expectedMessage \u003d String.format(EditMessages.MESSAGE_EDIT_PERSON_SUCCESS,","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"jamessinmaojun"},"content":" EditMessages.format(editedPerson));","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":72,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":80,"author":{"gitId":"yleeyilin"},"content":" EditCommand editCommand \u003d new EditCommand(ALICE.getName(), new EditPersonDescriptor());","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"-"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":83,"author":{"gitId":"jamessinmaojun"},"content":" String expectedMessage \u003d String.format(EditMessages.MESSAGE_EDIT_PERSON_SUCCESS,","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"jamessinmaojun"},"content":" EditMessages.format(editedPerson));","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":93,"author":{"gitId":"yleeyilin"},"content":" showPersonWithName(model, ALICE.getName());","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":96,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder(personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":97,"author":{"gitId":"yleeyilin"},"content":" EditCommand editCommand \u003d new EditCommand(ALICE.getName(),","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":100,"author":{"gitId":"jamessinmaojun"},"content":" String expectedMessage \u003d String.format(EditMessages.MESSAGE_EDIT_PERSON_SUCCESS,","lastModifiedDate":"2024-03-20"},{"lineNumber":101,"author":{"gitId":"jamessinmaojun"},"content":" EditMessages.format(editedPerson));","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":112,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05"},{"lineNumber":113,"author":{"gitId":"yleeyilin"},"content":" EditCommand editCommand \u003d new EditCommand(BENSON.getName(), descriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"jamessinmaojun"},"content":" assertCommandFailure(editCommand, model, EditMessages.MESSAGE_EDIT_NO_DIFFERENCE);","lastModifiedDate":"2024-03-20"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":120,"author":{"gitId":"yleeyilin"},"content":" showPersonWithName(model, ALICE.getName());","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":122,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2017-05-18"},{"lineNumber":123,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":124,"author":{"gitId":"yleeyilin"},"content":" EditCommand editCommand \u003d new EditCommand(ALICE.getName(),","lastModifiedDate":"2024-03-17"},{"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":"jamessinmaojun"},"content":" assertCommandFailure(editCommand, model, EditMessages.MESSAGE_EDIT_NO_DIFFERENCE);","lastModifiedDate":"2024-03-20"},{"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":"yleeyilin"},"content":" public void execute_invalidPersonNameUnfilteredList_failure() {","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"yleeyilin"},"content":" Name invalidName \u003d new Name(\"invalidName\");","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"yleeyilin"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(\"Benson\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"yleeyilin"},"content":" EditCommand editCommand \u003d new EditCommand(invalidName, descriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":136,"author":{"gitId":"jamessinmaojun"},"content":" assertCommandFailure(editCommand, model, EditMessages.MESSAGE_INVALID_EDIT_PERSON);","lastModifiedDate":"2024-03-20"},{"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":"yleeyilin"},"content":" final EditCommand standardCommand \u003d new EditCommand(ALICE.getName(), DESC_AMY);","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08"},{"lineNumber":145,"author":{"gitId":"yleeyilin"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(ALICE.getName(), copyDescriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":148,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":151,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":154,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":155,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":158,"author":{"gitId":"yleeyilin"},"content":" assertFalse(standardCommand.equals(new EditCommand(BENSON.getName(), DESC_AMY)));","lastModifiedDate":"2024-03-17"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":161,"author":{"gitId":"yleeyilin"},"content":" assertFalse(standardCommand.equals(new EditCommand(ALICE.getName(), DESC_BOB)));","lastModifiedDate":"2024-03-17"},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":164,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":166,"author":{"gitId":"yleeyilin"},"content":" Name name \u003d ALICE.getName();","lastModifiedDate":"2024-03-17"},{"lineNumber":167,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":168,"author":{"gitId":"yleeyilin"},"content":" EditCommand editCommand \u003d new EditCommand(ALICE.getName(), editPersonDescriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":169,"author":{"gitId":"yleeyilin"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{name\u003d\" + name + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2024-03-17"},{"lineNumber":170,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08"}],"authorContributionMap":{"chiageng":3,"jamessinmaojun":12,"-":136,"yleeyilin":23}},{"path":"src/test/java/seedu/address/logic/commands/EditMaintainerCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yleeyilin"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"yleeyilin"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"yleeyilin"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"yleeyilin"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY_MAINTAINER;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB_MAINTAINER;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.testutil.TypicalPersons.ALICEMAINTAINER;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.testutil.TypicalPersons.BENSONMAINTAINER;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"yleeyilin"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.logic.commands.EditMaintainerCommand.EditMaintainerDescriptor;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"yleeyilin"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"yleeyilin"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditMaintainerCommand.","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"yleeyilin"},"content":"public class EditMaintainerCommandTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"yleeyilin"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"yleeyilin"},"content":" public void equals() {","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"yleeyilin"},"content":" final EditMaintainerCommand standardCommand \u003d","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"yleeyilin"},"content":" new EditMaintainerCommand(ALICEMAINTAINER.getName(), DESC_AMY_MAINTAINER);","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"yleeyilin"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"yleeyilin"},"content":" EditMaintainerDescriptor copyDescriptor \u003d new EditMaintainerDescriptor(DESC_AMY_MAINTAINER);","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"yleeyilin"},"content":" EditMaintainerCommand commandWithSameValues \u003d","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"yleeyilin"},"content":" new EditMaintainerCommand(ALICEMAINTAINER.getName(), copyDescriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"yleeyilin"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"yleeyilin"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"yleeyilin"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"yleeyilin"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"yleeyilin"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"yleeyilin"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"yleeyilin"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"yleeyilin"},"content":" // different index -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"yleeyilin"},"content":" assertFalse(standardCommand.equals(new EditMaintainerCommand(BENSONMAINTAINER","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"yleeyilin"},"content":" .getName(), DESC_AMY_MAINTAINER)));","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"yleeyilin"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"yleeyilin"},"content":" assertFalse(standardCommand.equals(new EditMaintainerCommand(ALICEMAINTAINER","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"yleeyilin"},"content":" .getName(), DESC_BOB_MAINTAINER)));","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"yleeyilin"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"yleeyilin"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"yleeyilin"},"content":" Name name \u003d ALICEMAINTAINER.getName();","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"yleeyilin"},"content":" EditMaintainerDescriptor editMaintainerDescriptor \u003d new EditMaintainerDescriptor();","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"yleeyilin"},"content":" EditMaintainerCommand editMaintainerCommand \u003d","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"yleeyilin"},"content":" new EditMaintainerCommand(ALICEMAINTAINER.getName(), editMaintainerDescriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"yleeyilin"},"content":" String expected \u003d EditMaintainerCommand.class.getCanonicalName()","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"yleeyilin"},"content":" + \"{name\u003d\" + name + \", editMaintainerDescriptor\u003d\"","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"yleeyilin"},"content":" + editMaintainerDescriptor + \"}\";","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"yleeyilin"},"content":" assertEquals(expected, editMaintainerCommand.toString());","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"yleeyilin"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"yleeyilin":62}},{"path":"src/test/java/seedu/address/logic/commands/EditMaintainerDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yleeyilin"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"yleeyilin"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"yleeyilin"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"yleeyilin"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY_MAINTAINER;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB_MAINTAINER;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"yleeyilin"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.logic.commands.EditMaintainerCommand.EditMaintainerDescriptor;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.testutil.EditMaintainerDescriptorBuilder;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"yleeyilin"},"content":"public class EditMaintainerDescriptorTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"yleeyilin"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"yleeyilin"},"content":" public void equals() {","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"yleeyilin"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"yleeyilin"},"content":" EditMaintainerDescriptor descriptorWithSameValues \u003d new EditMaintainerDescriptor(DESC_AMY_MAINTAINER);","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"yleeyilin"},"content":" assertTrue(DESC_AMY_MAINTAINER.equals(descriptorWithSameValues));","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"yleeyilin"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"yleeyilin"},"content":" assertTrue(DESC_AMY_MAINTAINER.equals(DESC_AMY_MAINTAINER));","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"yleeyilin"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"yleeyilin"},"content":" assertFalse(DESC_AMY_MAINTAINER.equals(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"yleeyilin"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"yleeyilin"},"content":" assertFalse(DESC_AMY_MAINTAINER.equals(5));","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"yleeyilin"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"yleeyilin"},"content":" assertFalse(DESC_AMY_MAINTAINER.equals(DESC_BOB_MAINTAINER));","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"yleeyilin"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"yleeyilin"},"content":" EditMaintainerDescriptor editedAmy \u003d","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"yleeyilin"},"content":" new EditMaintainerDescriptorBuilder(DESC_AMY_MAINTAINER).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"yleeyilin"},"content":" assertFalse(DESC_AMY_MAINTAINER.equals(editedAmy));","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"yleeyilin"},"content":" // different email -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"yleeyilin"},"content":" editedAmy \u003d new EditMaintainerDescriptorBuilder(DESC_AMY_MAINTAINER).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"yleeyilin"},"content":" assertFalse(DESC_AMY_MAINTAINER.equals(editedAmy));","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"yleeyilin"},"content":" // different address -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"yleeyilin"},"content":" editedAmy \u003d new EditMaintainerDescriptorBuilder(DESC_AMY_MAINTAINER).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"yleeyilin"},"content":" assertFalse(DESC_AMY_MAINTAINER.equals(editedAmy));","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"yleeyilin"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"yleeyilin"},"content":" editedAmy \u003d new EditMaintainerDescriptorBuilder(DESC_AMY_MAINTAINER).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"yleeyilin"},"content":" assertFalse(DESC_AMY_MAINTAINER.equals(editedAmy));","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"yleeyilin"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"yleeyilin"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"yleeyilin"},"content":" EditMaintainerDescriptor editMaintainerDescriptor \u003d new EditMaintainerDescriptor();","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"yleeyilin"},"content":" String expected \u003d EditMaintainerDescriptor.class.getCanonicalName() + \"{phone\u003d\"","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"yleeyilin"},"content":" + editMaintainerDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"yleeyilin"},"content":" + editMaintainerDescriptor.getEmail().orElse(null) + \", address\u003d\"","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"yleeyilin"},"content":" + editMaintainerDescriptor.getAddress().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"yleeyilin"},"content":" + editMaintainerDescriptor.getTags().orElse(null) + \", skill\u003d\"","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"yleeyilin"},"content":" + editMaintainerDescriptor.getSkill().orElse(null) + \", commission\u003d\"","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"yleeyilin"},"content":" + editMaintainerDescriptor.getCommission().orElse(null) + \"}\";","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"yleeyilin"},"content":" assertEquals(expected, editMaintainerDescriptor.toString());","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"yleeyilin"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"yleeyilin":68}},{"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_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":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorTest {","lastModifiedDate":"2017-05-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptorWithSameValues \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":39,"author":{"gitId":"yleeyilin"},"content":" EditPersonDescriptor editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-05"},{"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":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"yleeyilin"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{phone\u003d\"","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", address\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getAddress().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getTags().orElse(null) + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"-":63,"yleeyilin":2}},{"path":"src/test/java/seedu/address/logic/commands/EditStaffCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yleeyilin"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"yleeyilin"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"yleeyilin"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"yleeyilin"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY_STAFF;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB_STAFF;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.testutil.TypicalPersons.ALICESTAFF;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.testutil.TypicalPersons.BENSONSTAFF;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"yleeyilin"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.logic.commands.EditStaffCommand.EditStaffDescriptor;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"yleeyilin"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"yleeyilin"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditStaffCommand.","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"yleeyilin"},"content":"public class EditStaffCommandTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"yleeyilin"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"yleeyilin"},"content":" public void equals() {","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"yleeyilin"},"content":" final EditStaffCommand standardCommand \u003d new EditStaffCommand(ALICESTAFF.getName(), DESC_AMY_STAFF);","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"yleeyilin"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"yleeyilin"},"content":" EditStaffDescriptor copyDescriptor \u003d new EditStaffDescriptor(DESC_AMY_STAFF);","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"yleeyilin"},"content":" EditStaffCommand commandWithSameValues \u003d new EditStaffCommand(ALICESTAFF.getName(), copyDescriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"yleeyilin"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"yleeyilin"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"yleeyilin"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"yleeyilin"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"yleeyilin"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"yleeyilin"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"yleeyilin"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"yleeyilin"},"content":" // different index -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"yleeyilin"},"content":" assertFalse(standardCommand.equals(new EditStaffCommand(BENSONSTAFF.getName(), DESC_AMY_STAFF)));","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"yleeyilin"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"yleeyilin"},"content":" assertFalse(standardCommand.equals(new EditStaffCommand(ALICESTAFF.getName(), DESC_BOB_STAFF)));","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"yleeyilin"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"yleeyilin"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"yleeyilin"},"content":" Name name \u003d ALICESTAFF.getName();","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"yleeyilin"},"content":" EditStaffDescriptor editStaffDescriptor \u003d new EditStaffDescriptor();","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"yleeyilin"},"content":" EditStaffCommand editStaffCommand \u003d new EditStaffCommand(ALICESTAFF.getName(), editStaffDescriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"yleeyilin"},"content":" String expected \u003d EditStaffCommand.class.getCanonicalName() + \"{name\u003d\" + name + \", editStaffDescriptor\u003d\"","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"yleeyilin"},"content":" + editStaffDescriptor + \"}\";","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"yleeyilin"},"content":" assertEquals(expected, editStaffCommand.toString());","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"yleeyilin"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"yleeyilin":55}},{"path":"src/test/java/seedu/address/logic/commands/EditStaffDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yleeyilin"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"yleeyilin"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"yleeyilin"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"yleeyilin"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY_STAFF;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB_STAFF;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"yleeyilin"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.logic.commands.EditStaffCommand.EditStaffDescriptor;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.testutil.EditStaffDescriptorBuilder;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"yleeyilin"},"content":"public class EditStaffDescriptorTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"yleeyilin"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"yleeyilin"},"content":" public void equals() {","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"yleeyilin"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"yleeyilin"},"content":" EditStaffDescriptor descriptorWithSameValues \u003d new EditStaffDescriptor(DESC_AMY_STAFF);","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"yleeyilin"},"content":" assertTrue(DESC_AMY_STAFF.equals(descriptorWithSameValues));","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"yleeyilin"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"yleeyilin"},"content":" assertTrue(DESC_AMY_STAFF.equals(DESC_AMY_STAFF));","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"yleeyilin"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"yleeyilin"},"content":" assertFalse(DESC_AMY_STAFF.equals(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"yleeyilin"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"yleeyilin"},"content":" assertFalse(DESC_AMY_STAFF.equals(5));","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"yleeyilin"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"yleeyilin"},"content":" assertFalse(DESC_AMY_STAFF.equals(DESC_BOB_STAFF));","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"yleeyilin"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"yleeyilin"},"content":" EditStaffDescriptor editedAmy \u003d","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"yleeyilin"},"content":" new EditStaffDescriptorBuilder(DESC_AMY_STAFF).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"yleeyilin"},"content":" assertFalse(DESC_AMY_STAFF.equals(editedAmy));","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"yleeyilin"},"content":" // different email -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"yleeyilin"},"content":" editedAmy \u003d new EditStaffDescriptorBuilder(DESC_AMY_STAFF).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"yleeyilin"},"content":" assertFalse(DESC_AMY_STAFF.equals(editedAmy));","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"yleeyilin"},"content":" // different address -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"yleeyilin"},"content":" editedAmy \u003d new EditStaffDescriptorBuilder(DESC_AMY_STAFF).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"yleeyilin"},"content":" assertFalse(DESC_AMY_STAFF.equals(editedAmy));","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"yleeyilin"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"yleeyilin"},"content":" editedAmy \u003d new EditStaffDescriptorBuilder(DESC_AMY_STAFF).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"yleeyilin"},"content":" assertFalse(DESC_AMY_STAFF.equals(editedAmy));","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"yleeyilin"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"yleeyilin"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"yleeyilin"},"content":" EditStaffDescriptor editStaffDescriptor \u003d new EditStaffDescriptor();","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"yleeyilin"},"content":" String expected \u003d EditStaffDescriptor.class.getCanonicalName() + \"{phone\u003d\"","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"yleeyilin"},"content":" + editStaffDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"yleeyilin"},"content":" + editStaffDescriptor.getEmail().orElse(null) + \", address\u003d\"","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"yleeyilin"},"content":" + editStaffDescriptor.getAddress().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"yleeyilin"},"content":" + editStaffDescriptor.getTags().orElse(null) + \", salary\u003d\"","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"yleeyilin"},"content":" + editStaffDescriptor.getSalary().orElse(null) + \", employment\u003d\"","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"yleeyilin"},"content":" + editStaffDescriptor.getEmployment().orElse(null) + \"}\";","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"yleeyilin"},"content":" assertEquals(expected, editStaffDescriptor.toString());","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"yleeyilin"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"yleeyilin":68}},{"path":"src/test/java/seedu/address/logic/commands/EditSupplierCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yleeyilin"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"yleeyilin"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"yleeyilin"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"yleeyilin"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY_SUPPLIER;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB_SUPPLIER;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.testutil.TypicalPersons.ALICESUPPLIER;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.testutil.TypicalPersons.BENSONSUPPLIER;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"yleeyilin"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.logic.commands.EditSupplierCommand.EditSupplierDescriptor;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"yleeyilin"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"yleeyilin"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditSupplierCommand.","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"yleeyilin"},"content":"public class EditSupplierCommandTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"yleeyilin"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"yleeyilin"},"content":" public void equals() {","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"yleeyilin"},"content":" final EditSupplierCommand standardCommand \u003d new EditSupplierCommand(ALICESUPPLIER.getName(), DESC_AMY_SUPPLIER);","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"yleeyilin"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"yleeyilin"},"content":" EditSupplierDescriptor copyDescriptor \u003d new EditSupplierDescriptor(DESC_AMY_SUPPLIER);","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"yleeyilin"},"content":" EditSupplierCommand commandWithSameValues \u003d new EditSupplierCommand(ALICESUPPLIER.getName(), copyDescriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"yleeyilin"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"yleeyilin"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"yleeyilin"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"yleeyilin"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"yleeyilin"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"yleeyilin"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"yleeyilin"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"yleeyilin"},"content":" // different index -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"yleeyilin"},"content":" assertFalse(standardCommand.equals(new EditSupplierCommand(BENSONSUPPLIER.getName(), DESC_AMY_SUPPLIER)));","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"yleeyilin"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"yleeyilin"},"content":" assertFalse(standardCommand.equals(new EditSupplierCommand(ALICESUPPLIER.getName(), DESC_BOB_SUPPLIER)));","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"yleeyilin"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"yleeyilin"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"yleeyilin"},"content":" Name name \u003d ALICESUPPLIER.getName();","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"yleeyilin"},"content":" EditSupplierDescriptor editSupplierDescriptor \u003d new EditSupplierDescriptor();","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"yleeyilin"},"content":" EditSupplierCommand editSupplierCommand \u003d","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"yleeyilin"},"content":" new EditSupplierCommand(ALICESUPPLIER.getName(), editSupplierDescriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"yleeyilin"},"content":" String expected \u003d EditSupplierCommand.class.getCanonicalName() + \"{name\u003d\" + name + \", editSupplierDescriptor\u003d\"","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"yleeyilin"},"content":" + editSupplierDescriptor + \"}\";","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"yleeyilin"},"content":" assertEquals(expected, editSupplierCommand.toString());","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"yleeyilin"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"yleeyilin":56}},{"path":"src/test/java/seedu/address/logic/commands/EditSupplierDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yleeyilin"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"yleeyilin"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"yleeyilin"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"yleeyilin"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY_SUPPLIER;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB_SUPPLIER;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"yleeyilin"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.logic.commands.EditSupplierCommand.EditSupplierDescriptor;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.testutil.EditSupplierDescriptorBuilder;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"yleeyilin"},"content":"public class EditSupplierDescriptorTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"yleeyilin"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"yleeyilin"},"content":" public void equals() {","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"yleeyilin"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"yleeyilin"},"content":" EditSupplierDescriptor descriptorWithSameValues \u003d new EditSupplierDescriptor(DESC_AMY_SUPPLIER);","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"yleeyilin"},"content":" assertTrue(DESC_AMY_SUPPLIER.equals(descriptorWithSameValues));","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"yleeyilin"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"yleeyilin"},"content":" assertTrue(DESC_AMY_SUPPLIER.equals(DESC_AMY_SUPPLIER));","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"yleeyilin"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"yleeyilin"},"content":" assertFalse(DESC_AMY_SUPPLIER.equals(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"yleeyilin"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"yleeyilin"},"content":" assertFalse(DESC_AMY_SUPPLIER.equals(5));","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"yleeyilin"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"yleeyilin"},"content":" assertFalse(DESC_AMY_SUPPLIER.equals(DESC_BOB_SUPPLIER));","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"yleeyilin"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"yleeyilin"},"content":" EditSupplierDescriptor editedAmy \u003d","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"yleeyilin"},"content":" new EditSupplierDescriptorBuilder(DESC_AMY_SUPPLIER).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"yleeyilin"},"content":" assertFalse(DESC_AMY_SUPPLIER.equals(editedAmy));","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"yleeyilin"},"content":" // different email -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"yleeyilin"},"content":" editedAmy \u003d new EditSupplierDescriptorBuilder(DESC_AMY_SUPPLIER).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"yleeyilin"},"content":" assertFalse(DESC_AMY_SUPPLIER.equals(editedAmy));","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"yleeyilin"},"content":" // different address -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"yleeyilin"},"content":" editedAmy \u003d new EditSupplierDescriptorBuilder(DESC_AMY_SUPPLIER).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"yleeyilin"},"content":" assertFalse(DESC_AMY_SUPPLIER.equals(editedAmy));","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"yleeyilin"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"yleeyilin"},"content":" editedAmy \u003d new EditSupplierDescriptorBuilder(DESC_AMY_SUPPLIER).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"yleeyilin"},"content":" assertFalse(DESC_AMY_SUPPLIER.equals(editedAmy));","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"yleeyilin"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"yleeyilin"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"yleeyilin"},"content":" EditSupplierDescriptor editSupplierDescriptor \u003d new EditSupplierDescriptor();","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"yleeyilin"},"content":" String expected \u003d EditSupplierDescriptor.class.getCanonicalName() + \"{phone\u003d\"","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"yleeyilin"},"content":" + editSupplierDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"yleeyilin"},"content":" + editSupplierDescriptor.getEmail().orElse(null) + \", address\u003d\"","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"yleeyilin"},"content":" + editSupplierDescriptor.getAddress().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"yleeyilin"},"content":" + editSupplierDescriptor.getTags().orElse(null) + \", product\u003d\"","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"yleeyilin"},"content":" + editSupplierDescriptor.getProduct().orElse(null) + \", price\u003d\"","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"yleeyilin"},"content":" + editSupplierDescriptor.getPrice().orElse(null) + \"}\";","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"yleeyilin"},"content":" assertEquals(expected, editSupplierDescriptor.toString());","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"yleeyilin"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"yleeyilin":68}},{"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.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-08"},{"lineNumber":7,"author":{"gitId":"jamessinmaojun"},"content":"import static seedu.address.logic.messages.Messages.MESSAGE_PERSONS_LISTED_OVERVIEW;","lastModifiedDate":"2024-03-18"},{"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":{"jamessinmaojun":1,"-":90}},{"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":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":7,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.HelpMessages;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2018-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class HelpCommandTest {","lastModifiedDate":"2017-06-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public void execute_help_success() {","lastModifiedDate":"2017-06-08"},{"lineNumber":17,"author":{"gitId":"jamessinmaojun"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(HelpMessages.MESSAGES_SHOWING_HELP_MESSAGE,","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"jamessinmaojun"},"content":" true, false);","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertCommandSuccess(new HelpCommand(), model, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08"}],"authorContributionMap":{"jamessinmaojun":3,"-":18}},{"path":"src/test/java/seedu/address/logic/commands/HelpDeleteCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.HelpMessages;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":"public class HelpDeleteCommandTest {","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":" private Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":" public void execute_deleteHelp_success() {","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"jamessinmaojun"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(HelpMessages.MESSAGES_SHOWING_DELETE_HELP_MESSAGE,","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"jamessinmaojun"},"content":" true, false);","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":" assertCommandSuccess(new HelpDeleteCommand(), model, expectedCommandResult, expectedModel);","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"jamessinmaojun":3,"jannaleong":18}},{"path":"src/test/java/seedu/address/logic/commands/HelpEditCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.HelpMessages;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":"public class HelpEditCommandTest {","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":" private Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":" public void execute_editHelp_success() {","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"jamessinmaojun"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(HelpMessages.MESSAGES_SHOWING_EDIT_HELP_MESSAGE,","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"jamessinmaojun"},"content":" true, false);","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":" assertCommandSuccess(new HelpEditCommand(), model, expectedCommandResult, expectedModel);","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"jamessinmaojun":3,"jannaleong":18}},{"path":"src/test/java/seedu/address/logic/commands/HelpPoochMaintenanceCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.HelpMessages;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":"public class HelpPoochMaintenanceCommandTest {","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":" private Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":" public void execute_poochMaintenanceHelp_success() {","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"jamessinmaojun"},"content":" CommandResult expectedCommandResult \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"jamessinmaojun"},"content":" new CommandResult(HelpMessages.MESSAGES_SHOWING_ADD_MAINTAINER_HELP_MESSAGE, true, false);","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":" assertCommandSuccess(new HelpPoochMaintenanceCommand(), model, expectedCommandResult, expectedModel);","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"jamessinmaojun":3,"jannaleong":18}},{"path":"src/test/java/seedu/address/logic/commands/HelpPoochStaffCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.HelpMessages;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":"public class HelpPoochStaffCommandTest {","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":" private Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":" public void execute_poochStaffHelp_success() {","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"jamessinmaojun"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(HelpMessages.MESSAGES_SHOWING_ADD_STAFF_HELP_MESSAGE,","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"jamessinmaojun"},"content":" true, false);","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":" assertCommandSuccess(new HelpPoochStaffCommand(), model, expectedCommandResult, expectedModel);","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"jamessinmaojun":3,"jannaleong":18}},{"path":"src/test/java/seedu/address/logic/commands/HelpPoochSupplierCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.HelpMessages;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":"public class HelpPoochSupplierCommandTest {","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":" private Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":" public void execute_poochSupplierHelp_success() {","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"jamessinmaojun"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(HelpMessages.MESSAGES_SHOWING_ADD_SUPPLIER_HELP_MESSAGE,","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"jamessinmaojun"},"content":" true, false);","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":" assertCommandSuccess(new HelpPoochSupplierCommand(), model, expectedCommandResult, expectedModel);","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"jamessinmaojun":3,"jannaleong":18}},{"path":"src/test/java/seedu/address/logic/commands/HelpSearchCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.HelpMessages;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":"public class HelpSearchCommandTest {","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":" private Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":" public void execute_searchHelp_success() {","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"jamessinmaojun"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(HelpMessages.MESSAGES_SHOWING_SEARCH_HELP_MESSAGE,","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"jamessinmaojun"},"content":" true, false);","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":" assertCommandSuccess(new HelpSearchCommand(), model, expectedCommandResult, expectedModel);","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"jamessinmaojun":3,"jannaleong":18}},{"path":"src/test/java/seedu/address/logic/commands/NoteCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.NoteMessages;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":"import seedu.address.model.person.Maintainer;","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":"import seedu.address.model.person.Note;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":"import seedu.address.model.person.Staff;","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":"import seedu.address.model.person.Supplier;","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":"import seedu.address.testutil.MaintainerBuilder;","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"jannaleong"},"content":"import seedu.address.testutil.StaffBuilder;","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":"import seedu.address.testutil.SupplierBuilder;","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":"public class NoteCommandTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"jannaleong"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"jannaleong"},"content":" private Note validNote1 \u003d new Note(\"get kibble today\");","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"jannaleong"},"content":" private Note validNote2 \u003d new Note(\"get bones today\");","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"jannaleong"},"content":" private Staff georgiaStaff \u003d new StaffBuilder().withName(\"Georgia Staff\")","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"jannaleong"},"content":" .withAddress(\"123, Jurong West Ave 45, #08-131\").withEmail(\"georgia@example.com\")","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"jannaleong"},"content":" .withPhone(\"94355453\")","lastModifiedDate":"2024-03-23"},{"lineNumber":33,"author":{"gitId":"jannaleong"},"content":" .withTags(\"friends\")","lastModifiedDate":"2024-03-23"},{"lineNumber":34,"author":{"gitId":"jannaleong"},"content":" .withSalary(\"$50/hr\")","lastModifiedDate":"2024-03-23"},{"lineNumber":35,"author":{"gitId":"jannaleong"},"content":" .withEmployment(\"part-time\").build();","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":37,"author":{"gitId":"jannaleong"},"content":" private Supplier georgiaSupplier \u003d new SupplierBuilder().withName(\"Georgia Supplier\")","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"jannaleong"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2024-03-23"},{"lineNumber":39,"author":{"gitId":"jannaleong"},"content":" .withEmail(\"georgia@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2024-03-23"},{"lineNumber":40,"author":{"gitId":"jannaleong"},"content":" .withTags(\"owesMoney\", \"friends\")","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"jannaleong"},"content":" .withProduct(\"pooch medicine\")","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"jannaleong"},"content":" .withPrice(\"$50/injection\").build();","lastModifiedDate":"2024-03-23"},{"lineNumber":43,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":44,"author":{"gitId":"jannaleong"},"content":" private Maintainer georgiaMaintainer \u003d new MaintainerBuilder().withName(\"Georgia Maintainer\")","lastModifiedDate":"2024-03-23"},{"lineNumber":45,"author":{"gitId":"jannaleong"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2024-03-23"},{"lineNumber":46,"author":{"gitId":"jannaleong"},"content":" .withEmail(\"georgia@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2024-03-23"},{"lineNumber":47,"author":{"gitId":"jannaleong"},"content":" .withTags(\"owesMoney\", \"friends\")","lastModifiedDate":"2024-03-23"},{"lineNumber":48,"author":{"gitId":"jannaleong"},"content":" .withSkill(\"train dog\")","lastModifiedDate":"2024-03-23"},{"lineNumber":49,"author":{"gitId":"jannaleong"},"content":" .withCommission(\"$50/hr\").build();","lastModifiedDate":"2024-03-23"},{"lineNumber":50,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":51,"author":{"gitId":"jannaleong"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"jannaleong"},"content":" public void execute_validNoteOther_addSuccess() {","lastModifiedDate":"2024-03-23"},{"lineNumber":53,"author":{"gitId":"jannaleong"},"content":" Person toAddNotePerson \u003d ALICE;","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"jannaleong"},"content":" Person expectedPerson \u003d new Person(toAddNotePerson.getName(), toAddNotePerson.getPhone(),","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"jannaleong"},"content":" toAddNotePerson.getEmail(), toAddNotePerson.getAddress(),","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"jannaleong"},"content":" validNote1, toAddNotePerson.getTags());","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"jannaleong"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"jannaleong"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), expectedPerson);","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"jannaleong"},"content":" NoteCommand noteCommand \u003d new NoteCommand(toAddNotePerson.getName(), validNote1);","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"jamessinmaojun"},"content":" String expectedMessage \u003d String.format(NoteMessages.MESSAGE_ADD_NOTE_SUCCESS, expectedPerson);","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"jannaleong"},"content":" assertCommandSuccess(noteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"jannaleong"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":67,"author":{"gitId":"jannaleong"},"content":" public void execute_validNoteStaff_addSuccess() {","lastModifiedDate":"2024-03-23"},{"lineNumber":68,"author":{"gitId":"jannaleong"},"content":" Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-23"},{"lineNumber":69,"author":{"gitId":"jannaleong"},"content":" Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-23"},{"lineNumber":70,"author":{"gitId":"jannaleong"},"content":" model.addPerson(georgiaStaff);","lastModifiedDate":"2024-03-23"},{"lineNumber":71,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":72,"author":{"gitId":"jannaleong"},"content":" Staff toAddNotePerson \u003d georgiaStaff;","lastModifiedDate":"2024-03-23"},{"lineNumber":73,"author":{"gitId":"jannaleong"},"content":" Staff expectedPerson \u003d new Staff(toAddNotePerson.getName(), toAddNotePerson.getPhone(),","lastModifiedDate":"2024-03-23"},{"lineNumber":74,"author":{"gitId":"jannaleong"},"content":" toAddNotePerson.getEmail(), toAddNotePerson.getAddress(),","lastModifiedDate":"2024-03-23"},{"lineNumber":75,"author":{"gitId":"jannaleong"},"content":" toAddNotePerson.getTags(), toAddNotePerson.getSalary(), toAddNotePerson.getEmployment());","lastModifiedDate":"2024-03-23"},{"lineNumber":76,"author":{"gitId":"jannaleong"},"content":" expectedPerson.setNoteContent(validNote1.toString());","lastModifiedDate":"2024-03-23"},{"lineNumber":77,"author":{"gitId":"jannaleong"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2024-03-23"},{"lineNumber":78,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":79,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":80,"author":{"gitId":"jannaleong"},"content":" NoteCommand noteCommand \u003d new NoteCommand(toAddNotePerson.getName(), validNote1);","lastModifiedDate":"2024-03-23"},{"lineNumber":81,"author":{"gitId":"jannaleong"},"content":" String expectedMessage \u003d String.format(NoteMessages.MESSAGE_ADD_NOTE_SUCCESS, expectedPerson);","lastModifiedDate":"2024-03-23"},{"lineNumber":82,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":83,"author":{"gitId":"jannaleong"},"content":" assertCommandSuccess(noteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-23"},{"lineNumber":84,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":85,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":86,"author":{"gitId":"jannaleong"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":87,"author":{"gitId":"jannaleong"},"content":" public void execute_validNoteSupplier_addSuccess() {","lastModifiedDate":"2024-03-23"},{"lineNumber":88,"author":{"gitId":"jannaleong"},"content":" Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-23"},{"lineNumber":89,"author":{"gitId":"jannaleong"},"content":" Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-23"},{"lineNumber":90,"author":{"gitId":"jannaleong"},"content":" model.addPerson(georgiaSupplier);","lastModifiedDate":"2024-03-23"},{"lineNumber":91,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":92,"author":{"gitId":"jannaleong"},"content":" Supplier toAddNotePerson \u003d georgiaSupplier;","lastModifiedDate":"2024-03-23"},{"lineNumber":93,"author":{"gitId":"jannaleong"},"content":" Supplier expectedPerson \u003d new Supplier(toAddNotePerson.getName(), toAddNotePerson.getPhone(),","lastModifiedDate":"2024-03-23"},{"lineNumber":94,"author":{"gitId":"jannaleong"},"content":" toAddNotePerson.getEmail(), toAddNotePerson.getAddress(),","lastModifiedDate":"2024-03-23"},{"lineNumber":95,"author":{"gitId":"jannaleong"},"content":" toAddNotePerson.getTags(), toAddNotePerson.getProduct(), toAddNotePerson.getPrice());","lastModifiedDate":"2024-03-23"},{"lineNumber":96,"author":{"gitId":"jannaleong"},"content":" expectedPerson.setNoteContent(validNote1.toString());","lastModifiedDate":"2024-03-23"},{"lineNumber":97,"author":{"gitId":"jannaleong"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2024-03-23"},{"lineNumber":98,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":99,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":100,"author":{"gitId":"jannaleong"},"content":" NoteCommand noteCommand \u003d new NoteCommand(toAddNotePerson.getName(), validNote1);","lastModifiedDate":"2024-03-23"},{"lineNumber":101,"author":{"gitId":"jannaleong"},"content":" String expectedMessage \u003d String.format(NoteMessages.MESSAGE_ADD_NOTE_SUCCESS, expectedPerson);","lastModifiedDate":"2024-03-23"},{"lineNumber":102,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":103,"author":{"gitId":"jannaleong"},"content":" assertCommandSuccess(noteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-23"},{"lineNumber":104,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":105,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":106,"author":{"gitId":"jannaleong"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":107,"author":{"gitId":"jannaleong"},"content":" public void execute_validNoteMaintainer_addSuccess() {","lastModifiedDate":"2024-03-23"},{"lineNumber":108,"author":{"gitId":"jannaleong"},"content":" Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-23"},{"lineNumber":109,"author":{"gitId":"jannaleong"},"content":" Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-23"},{"lineNumber":110,"author":{"gitId":"jannaleong"},"content":" model.addPerson(georgiaMaintainer);","lastModifiedDate":"2024-03-23"},{"lineNumber":111,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":112,"author":{"gitId":"jannaleong"},"content":" Maintainer toAddNotePerson \u003d georgiaMaintainer;","lastModifiedDate":"2024-03-23"},{"lineNumber":113,"author":{"gitId":"jannaleong"},"content":" Maintainer expectedPerson \u003d new Maintainer(toAddNotePerson.getName(), toAddNotePerson.getPhone(),","lastModifiedDate":"2024-03-23"},{"lineNumber":114,"author":{"gitId":"jannaleong"},"content":" toAddNotePerson.getEmail(), toAddNotePerson.getAddress(),","lastModifiedDate":"2024-03-23"},{"lineNumber":115,"author":{"gitId":"jannaleong"},"content":" toAddNotePerson.getTags(), toAddNotePerson.getSkill(), toAddNotePerson.getCommission());","lastModifiedDate":"2024-03-23"},{"lineNumber":116,"author":{"gitId":"jannaleong"},"content":" expectedPerson.setNoteContent(validNote1.toString());","lastModifiedDate":"2024-03-23"},{"lineNumber":117,"author":{"gitId":"jannaleong"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2024-03-23"},{"lineNumber":118,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":119,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":120,"author":{"gitId":"jannaleong"},"content":" NoteCommand noteCommand \u003d new NoteCommand(toAddNotePerson.getName(), validNote1);","lastModifiedDate":"2024-03-23"},{"lineNumber":121,"author":{"gitId":"jannaleong"},"content":" String expectedMessage \u003d String.format(NoteMessages.MESSAGE_ADD_NOTE_SUCCESS, expectedPerson);","lastModifiedDate":"2024-03-23"},{"lineNumber":122,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":123,"author":{"gitId":"jannaleong"},"content":" assertCommandSuccess(noteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-23"},{"lineNumber":124,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":125,"author":{"gitId":"jannaleong"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":126,"author":{"gitId":"jannaleong"},"content":" public void equals() {","lastModifiedDate":"2024-03-19"},{"lineNumber":127,"author":{"gitId":"jannaleong"},"content":" NoteCommand noteFirstCommand \u003d new NoteCommand(ALICE.getName(), validNote1);","lastModifiedDate":"2024-03-19"},{"lineNumber":128,"author":{"gitId":"jannaleong"},"content":" NoteCommand noteSecondCommand \u003d new NoteCommand(BENSON.getName(), validNote1);","lastModifiedDate":"2024-03-19"},{"lineNumber":129,"author":{"gitId":"jannaleong"},"content":" NoteCommand noteThirdCommand \u003d new NoteCommand(ALICE.getName(), validNote2);","lastModifiedDate":"2024-03-19"},{"lineNumber":130,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":131,"author":{"gitId":"jannaleong"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":132,"author":{"gitId":"jannaleong"},"content":" assertTrue(noteFirstCommand.equals(noteFirstCommand));","lastModifiedDate":"2024-03-19"},{"lineNumber":133,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":134,"author":{"gitId":"jannaleong"},"content":" // different names -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":135,"author":{"gitId":"jannaleong"},"content":" assertFalse(noteFirstCommand.equals(noteSecondCommand));","lastModifiedDate":"2024-03-19"},{"lineNumber":136,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":137,"author":{"gitId":"jannaleong"},"content":" // different notes -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":138,"author":{"gitId":"jannaleong"},"content":" assertFalse(noteFirstCommand.equals(noteThirdCommand));","lastModifiedDate":"2024-03-19"},{"lineNumber":139,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":140,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"jamessinmaojun":2,"jannaleong":138}},{"path":"src/test/java/seedu/address/logic/commands/SearchCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Joshy837"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"Joshy837"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"Joshy837"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"Joshy837"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"Joshy837"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"Joshy837"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"Joshy837"},"content":"import static seedu.address.testutil.TypicalPersons.CARL;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"Joshy837"},"content":"import static seedu.address.testutil.TypicalPersons.DANIEL;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"Joshy837"},"content":"import static seedu.address.testutil.TypicalPersons.FIONA;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"Joshy837"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"Joshy837"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"Joshy837"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"Joshy837"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.SearchMessages;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"Joshy837"},"content":"import seedu.address.logic.parser.ArgumentMultimap;","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"Joshy837"},"content":"import seedu.address.logic.parser.ArgumentTokenizer;","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"Joshy837"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"Joshy837"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"Joshy837"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"Joshy837"},"content":"import seedu.address.model.person.KeywordPredicate;","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"Joshy837"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"Joshy837"},"content":" * Contains integration tests (interaction with the Model) for {@code FindCommand}.","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"Joshy837"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"Joshy837"},"content":"public class SearchCommandTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"Joshy837"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"Joshy837"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"Joshy837"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"Joshy837"},"content":" public void equals() {","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"Joshy837"},"content":" String firstKeyword \u003d \" ; name : Poochie\";","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"Joshy837"},"content":" ArgumentMultimap firstToken \u003d ArgumentTokenizer.tokenize(firstKeyword, PREFIX_NAME);","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"Joshy837"},"content":" String secondKeyword \u003d \" ; product : Dog Food\";","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"Joshy837"},"content":" ArgumentMultimap secondToken \u003d ArgumentTokenizer.tokenize(secondKeyword, PREFIX_NAME);","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"Joshy837"},"content":" KeywordPredicate firstPredicate \u003d new KeywordPredicate(firstToken);","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"Joshy837"},"content":" KeywordPredicate secondPredicate \u003d new KeywordPredicate(secondToken);","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"Joshy837"},"content":" SearchCommand findFirstCommand \u003d new SearchCommand(firstPredicate);","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"Joshy837"},"content":" SearchCommand findSecondCommand \u003d new SearchCommand(secondPredicate);","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"Joshy837"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"Joshy837"},"content":" assertEquals(findFirstCommand, findFirstCommand);","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"Joshy837"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"Joshy837"},"content":" SearchCommand findFirstCommandCopy \u003d new SearchCommand(firstPredicate);","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"Joshy837"},"content":" assertEquals(findFirstCommand, findFirstCommandCopy);","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"Joshy837"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"Joshy837"},"content":" assertNotEquals(1, findFirstCommand);","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"Joshy837"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"Joshy837"},"content":" assertNotEquals(null, findFirstCommand);","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"Joshy837"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"Joshy837"},"content":" assertNotEquals(findFirstCommand, findSecondCommand);","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"Joshy837"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"Joshy837"},"content":" public void execute_zeroKeywords_noPersonFound() {","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"jamessinmaojun"},"content":" String expectedMessage \u003d String.format(SearchMessages.MESSAGE_SEARCH_PERSON_SUCCESS, 0);","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"Joshy837"},"content":" KeywordPredicate predicate \u003d preparePredicate(\" ; name : Alicea\");","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"Joshy837"},"content":" SearchCommand command \u003d new SearchCommand(predicate);","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"Joshy837"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"Joshy837"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"Joshy837"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"Joshy837"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"Joshy837"},"content":" public void execute_multiplePersonsFound() {","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"jamessinmaojun"},"content":" String expectedMessage \u003d String.format(SearchMessages.MESSAGE_SEARCH_PERSON_SUCCESS, 4);","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"Joshy837"},"content":" KeywordPredicate predicate \u003d preparePredicate(\" ; name : a\");","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"Joshy837"},"content":" SearchCommand command \u003d new SearchCommand(predicate);","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"Joshy837"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"Joshy837"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"Joshy837"},"content":" assertEquals(Arrays.asList(ALICE, CARL, DANIEL, FIONA), model.getFilteredPersonList());","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"Joshy837"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"Joshy837"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"Joshy837"},"content":" KeywordPredicate predicate \u003d new KeywordPredicate(ArgumentTokenizer.tokenize(\"keyword\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"Joshy837"},"content":" SearchCommand findCommand \u003d new SearchCommand(predicate);","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"Joshy837"},"content":" String expected \u003d SearchCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"Joshy837"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"Joshy837"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"Joshy837"},"content":" * Parses {@code userInput} into a {@code KeywordPredicate}.","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"Joshy837"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"Joshy837"},"content":" private KeywordPredicate preparePredicate(String userInput) {","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"Joshy837"},"content":" return new KeywordPredicate(ArgumentTokenizer.tokenize(userInput, PREFIX_NAME));","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"Joshy837"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"Joshy837":94,"jamessinmaojun":3}},{"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.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05"},{"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":"2024-03-09"},{"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.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","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":"jamessinmaojun"},"content":"import static seedu.address.logic.messages.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","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.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15"},{"lineNumber":35,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.Messages;","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-06-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-06-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2024-03-09"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2024-03-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":" + ADDRESS_DESC_BOB, new AddCommand(expectedPerson));","lastModifiedDate":"2024-03-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":55,"author":{"gitId":"chiageng"},"content":" Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2024-03-09"},{"lineNumber":57,"author":{"gitId":"chiageng"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":58,"author":{"gitId":"-"},"content":" new AddCommand(expectedPersonMultipleTags));","lastModifiedDate":"2024-03-09"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-07-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND;","lastModifiedDate":"2023-07-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":73,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":77,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":79,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":81,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":83,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2023-07-14"},{"lineNumber":86,"author":{"gitId":"-"},"content":" + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":87,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_ADDRESS, PREFIX_EMAIL, PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":99,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":107,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":109,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":111,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":127,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":128,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15"},{"lineNumber":129,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2018-07-25"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + ADDRESS_DESC_AMY,","lastModifiedDate":"2017-12-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2017-12-23"},{"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_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":136,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":138,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":142,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":146,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":147,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":150,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":151,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":154,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15"},{"lineNumber":155,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":159,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":160,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":161,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":162,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":163,"author":{"gitId":"chiageng"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-09"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":165,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15"},{"lineNumber":166,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":167,"author":{"gitId":"chiageng"},"content":" Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-09"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":169,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15"},{"lineNumber":170,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":171,"author":{"gitId":"chiageng"},"content":" Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-09"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":173,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15"},{"lineNumber":174,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC,","lastModifiedDate":"2024-03-09"},{"lineNumber":175,"author":{"gitId":"chiageng"},"content":" Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-09"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":177,"author":{"gitId":"chiageng"},"content":" /*","lastModifiedDate":"2024-03-09"},{"lineNumber":178,"author":{"gitId":"chiageng"},"content":" invalid tag","lastModifiedDate":"2024-03-09"},{"lineNumber":179,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":180,"author":{"gitId":"chiageng"},"content":" Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-09"},{"lineNumber":181,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":183,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":184,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC,","lastModifiedDate":"2017-12-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":189,"author":{"gitId":"chiageng"},"content":" + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-03-08"},{"lineNumber":190,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":192,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"jamessinmaojun":2,"chiageng":18,"-":172}},{"path":"src/test/java/seedu/address/logic/parser/AddMaintainerCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chiageng"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-09"},{"lineNumber":2,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":3,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-03-09"},{"lineNumber":4,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":5,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.COMMISSION_DESC_AMY;","lastModifiedDate":"2024-03-09"},{"lineNumber":6,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.COMMISSION_DESC_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":7,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-09"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_COMMISSION_DESC;","lastModifiedDate":"2024-03-09"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2024-03-09"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-03-09"},{"lineNumber":13,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2024-03-09"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_SKILL_DESC;","lastModifiedDate":"2024-03-09"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-03-09"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-03-09"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2024-03-09"},{"lineNumber":20,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2024-03-09"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SKILL_DESC_AMY;","lastModifiedDate":"2024-03-09"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SKILL_DESC_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":23,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_COMMISSION_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":25,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":26,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":27,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":28,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SKILL_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":29,"author":{"gitId":"jamessinmaojun"},"content":"import static seedu.address.logic.messages.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-09"},{"lineNumber":31,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COMMISSION;","lastModifiedDate":"2024-03-09"},{"lineNumber":32,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-09"},{"lineNumber":33,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-09"},{"lineNumber":34,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-09"},{"lineNumber":35,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SKILL;","lastModifiedDate":"2024-03-09"},{"lineNumber":36,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-09"},{"lineNumber":37,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-09"},{"lineNumber":38,"author":{"gitId":"chiageng"},"content":"import static seedu.address.testutil.TypicalPersons.BOBMAINTAINER;","lastModifiedDate":"2024-03-09"},{"lineNumber":39,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":40,"author":{"gitId":"chiageng"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-09"},{"lineNumber":41,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":42,"author":{"gitId":"chiageng"},"content":"import seedu.address.logic.commands.AddMaintainerCommand;","lastModifiedDate":"2024-03-09"},{"lineNumber":43,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.Messages;","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-09"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Commission;","lastModifiedDate":"2024-03-09"},{"lineNumber":46,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-09"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Maintainer;","lastModifiedDate":"2024-03-09"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-09"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-09"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Skill;","lastModifiedDate":"2024-03-09"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":"import seedu.address.testutil.MaintainerBuilder;","lastModifiedDate":"2024-03-09"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":53,"author":{"gitId":"chiageng"},"content":"public class AddMaintainerCommandParserTest {","lastModifiedDate":"2024-03-09"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":" private AddMaintainerCommandParser parser \u003d new AddMaintainerCommandParser();","lastModifiedDate":"2024-03-09"},{"lineNumber":55,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":56,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":57,"author":{"gitId":"chiageng"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2024-03-09"},{"lineNumber":58,"author":{"gitId":"chiageng"},"content":" Maintainer expectedPerson \u003d new MaintainerBuilder(BOBMAINTAINER).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":59,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":60,"author":{"gitId":"chiageng"},"content":" // whitespace only preamble","lastModifiedDate":"2024-03-09"},{"lineNumber":61,"author":{"gitId":"chiageng"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":62,"author":{"gitId":"chiageng"},"content":" + ADDRESS_DESC_BOB + SKILL_DESC_BOB + COMMISSION_DESC_BOB, new AddMaintainerCommand(expectedPerson));","lastModifiedDate":"2024-03-09"},{"lineNumber":63,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":64,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":65,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":66,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":67,"author":{"gitId":"chiageng"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2024-03-09"},{"lineNumber":68,"author":{"gitId":"chiageng"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":69,"author":{"gitId":"chiageng"},"content":" + ADDRESS_DESC_BOB + SKILL_DESC_BOB + COMMISSION_DESC_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":70,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":71,"author":{"gitId":"chiageng"},"content":" // multiple names","lastModifiedDate":"2024-03-09"},{"lineNumber":72,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-09"},{"lineNumber":73,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2024-03-09"},{"lineNumber":74,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":75,"author":{"gitId":"chiageng"},"content":" // multiple phones","lastModifiedDate":"2024-03-09"},{"lineNumber":76,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-09"},{"lineNumber":77,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2024-03-09"},{"lineNumber":78,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":79,"author":{"gitId":"chiageng"},"content":" // multiple emails","lastModifiedDate":"2024-03-09"},{"lineNumber":80,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-09"},{"lineNumber":81,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2024-03-09"},{"lineNumber":82,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":83,"author":{"gitId":"chiageng"},"content":" // multiple addresses","lastModifiedDate":"2024-03-09"},{"lineNumber":84,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-09"},{"lineNumber":85,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2024-03-09"},{"lineNumber":86,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":87,"author":{"gitId":"chiageng"},"content":" // multiple fields repeated","lastModifiedDate":"2024-03-09"},{"lineNumber":88,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-09"},{"lineNumber":89,"author":{"gitId":"chiageng"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY","lastModifiedDate":"2024-03-09"},{"lineNumber":90,"author":{"gitId":"chiageng"},"content":" + ADDRESS_DESC_AMY + SKILL_DESC_AMY + COMMISSION_DESC_AMY","lastModifiedDate":"2024-03-09"},{"lineNumber":91,"author":{"gitId":"chiageng"},"content":" + validExpectedPersonString,","lastModifiedDate":"2024-03-09"},{"lineNumber":92,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_ADDRESS, PREFIX_EMAIL, PREFIX_PHONE,","lastModifiedDate":"2024-03-09"},{"lineNumber":93,"author":{"gitId":"chiageng"},"content":" PREFIX_SKILL, PREFIX_COMMISSION));","lastModifiedDate":"2024-03-09"},{"lineNumber":94,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":95,"author":{"gitId":"chiageng"},"content":" // invalid value followed by valid value","lastModifiedDate":"2024-03-09"},{"lineNumber":96,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":97,"author":{"gitId":"chiageng"},"content":" // invalid name","lastModifiedDate":"2024-03-09"},{"lineNumber":98,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2024-03-09"},{"lineNumber":99,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2024-03-09"},{"lineNumber":100,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":101,"author":{"gitId":"chiageng"},"content":" // invalid email","lastModifiedDate":"2024-03-09"},{"lineNumber":102,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2024-03-09"},{"lineNumber":103,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2024-03-09"},{"lineNumber":104,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":105,"author":{"gitId":"chiageng"},"content":" // invalid phone","lastModifiedDate":"2024-03-09"},{"lineNumber":106,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2024-03-09"},{"lineNumber":107,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2024-03-09"},{"lineNumber":108,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":109,"author":{"gitId":"chiageng"},"content":" // invalid address","lastModifiedDate":"2024-03-09"},{"lineNumber":110,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2024-03-09"},{"lineNumber":111,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2024-03-09"},{"lineNumber":112,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":113,"author":{"gitId":"chiageng"},"content":" // valid value followed by invalid value","lastModifiedDate":"2024-03-09"},{"lineNumber":114,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":115,"author":{"gitId":"chiageng"},"content":" // invalid name","lastModifiedDate":"2024-03-09"},{"lineNumber":116,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2024-03-09"},{"lineNumber":117,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2024-03-09"},{"lineNumber":118,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":119,"author":{"gitId":"chiageng"},"content":" // invalid email","lastModifiedDate":"2024-03-09"},{"lineNumber":120,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2024-03-09"},{"lineNumber":121,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2024-03-09"},{"lineNumber":122,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":123,"author":{"gitId":"chiageng"},"content":" // invalid phone","lastModifiedDate":"2024-03-09"},{"lineNumber":124,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2024-03-09"},{"lineNumber":125,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2024-03-09"},{"lineNumber":126,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":127,"author":{"gitId":"chiageng"},"content":" // invalid address","lastModifiedDate":"2024-03-09"},{"lineNumber":128,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2024-03-09"},{"lineNumber":129,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2024-03-09"},{"lineNumber":130,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":131,"author":{"gitId":"chiageng"},"content":" // invalid skill","lastModifiedDate":"2024-03-09"},{"lineNumber":132,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_SKILL_DESC,","lastModifiedDate":"2024-03-09"},{"lineNumber":133,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_SKILL));","lastModifiedDate":"2024-03-09"},{"lineNumber":134,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":135,"author":{"gitId":"chiageng"},"content":" // invalid commission","lastModifiedDate":"2024-03-09"},{"lineNumber":136,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_COMMISSION_DESC,","lastModifiedDate":"2024-03-09"},{"lineNumber":137,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_COMMISSION));","lastModifiedDate":"2024-03-09"},{"lineNumber":138,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":139,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":140,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":141,"author":{"gitId":"chiageng"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2024-03-09"},{"lineNumber":142,"author":{"gitId":"chiageng"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddMaintainerCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-09"},{"lineNumber":143,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":144,"author":{"gitId":"chiageng"},"content":" // missing name prefix","lastModifiedDate":"2024-03-09"},{"lineNumber":145,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":146,"author":{"gitId":"chiageng"},"content":" + SKILL_DESC_BOB + COMMISSION_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":147,"author":{"gitId":"chiageng"},"content":" expectedMessage);","lastModifiedDate":"2024-03-09"},{"lineNumber":148,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":149,"author":{"gitId":"chiageng"},"content":" // missing phone prefix","lastModifiedDate":"2024-03-09"},{"lineNumber":150,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":151,"author":{"gitId":"chiageng"},"content":" + SKILL_DESC_BOB + COMMISSION_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":152,"author":{"gitId":"chiageng"},"content":" expectedMessage);","lastModifiedDate":"2024-03-09"},{"lineNumber":153,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":154,"author":{"gitId":"chiageng"},"content":" // missing email prefix","lastModifiedDate":"2024-03-09"},{"lineNumber":155,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":156,"author":{"gitId":"chiageng"},"content":" + SKILL_DESC_BOB + COMMISSION_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":157,"author":{"gitId":"chiageng"},"content":" expectedMessage);","lastModifiedDate":"2024-03-09"},{"lineNumber":158,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":159,"author":{"gitId":"chiageng"},"content":" // missing address prefix","lastModifiedDate":"2024-03-09"},{"lineNumber":160,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":161,"author":{"gitId":"chiageng"},"content":" + SKILL_DESC_BOB + COMMISSION_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":162,"author":{"gitId":"chiageng"},"content":" expectedMessage);","lastModifiedDate":"2024-03-09"},{"lineNumber":163,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":164,"author":{"gitId":"chiageng"},"content":" // missing skill prefix","lastModifiedDate":"2024-03-09"},{"lineNumber":165,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":166,"author":{"gitId":"chiageng"},"content":" + VALID_SKILL_BOB + COMMISSION_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":167,"author":{"gitId":"chiageng"},"content":" expectedMessage);","lastModifiedDate":"2024-03-09"},{"lineNumber":168,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":169,"author":{"gitId":"chiageng"},"content":" // missing commission prefix","lastModifiedDate":"2024-03-09"},{"lineNumber":170,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":171,"author":{"gitId":"chiageng"},"content":" + SKILL_DESC_BOB + VALID_COMMISSION_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":172,"author":{"gitId":"chiageng"},"content":" expectedMessage);","lastModifiedDate":"2024-03-09"},{"lineNumber":173,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":174,"author":{"gitId":"chiageng"},"content":" // all prefixes missing","lastModifiedDate":"2024-03-09"},{"lineNumber":175,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_ADDRESS_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":176,"author":{"gitId":"chiageng"},"content":" + VALID_SKILL_BOB + VALID_COMMISSION_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":177,"author":{"gitId":"chiageng"},"content":" expectedMessage);","lastModifiedDate":"2024-03-09"},{"lineNumber":178,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":179,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":180,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":181,"author":{"gitId":"chiageng"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2024-03-09"},{"lineNumber":182,"author":{"gitId":"chiageng"},"content":" // invalid name","lastModifiedDate":"2024-03-09"},{"lineNumber":183,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":184,"author":{"gitId":"chiageng"},"content":" + SKILL_DESC_BOB + COMMISSION_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":185,"author":{"gitId":"chiageng"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-09"},{"lineNumber":186,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":187,"author":{"gitId":"chiageng"},"content":" // invalid phone","lastModifiedDate":"2024-03-09"},{"lineNumber":188,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":189,"author":{"gitId":"chiageng"},"content":" + SKILL_DESC_BOB + COMMISSION_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":190,"author":{"gitId":"chiageng"},"content":" Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-09"},{"lineNumber":191,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":192,"author":{"gitId":"chiageng"},"content":" // invalid email","lastModifiedDate":"2024-03-09"},{"lineNumber":193,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":194,"author":{"gitId":"chiageng"},"content":" + SKILL_DESC_BOB + COMMISSION_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":195,"author":{"gitId":"chiageng"},"content":" Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-09"},{"lineNumber":196,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":197,"author":{"gitId":"chiageng"},"content":" // invalid address","lastModifiedDate":"2024-03-09"},{"lineNumber":198,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2024-03-09"},{"lineNumber":199,"author":{"gitId":"chiageng"},"content":" + SKILL_DESC_BOB + COMMISSION_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":200,"author":{"gitId":"chiageng"},"content":" Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-09"},{"lineNumber":201,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":202,"author":{"gitId":"chiageng"},"content":" // invalid skill","lastModifiedDate":"2024-03-09"},{"lineNumber":203,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":204,"author":{"gitId":"chiageng"},"content":" + INVALID_SKILL_DESC + COMMISSION_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":205,"author":{"gitId":"chiageng"},"content":" Skill.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-09"},{"lineNumber":206,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":207,"author":{"gitId":"chiageng"},"content":" // invalid commission","lastModifiedDate":"2024-03-09"},{"lineNumber":208,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":209,"author":{"gitId":"chiageng"},"content":" + SKILL_DESC_BOB + INVALID_COMMISSION_DESC,","lastModifiedDate":"2024-03-09"},{"lineNumber":210,"author":{"gitId":"chiageng"},"content":" Commission.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-09"},{"lineNumber":211,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":212,"author":{"gitId":"chiageng"},"content":" /*","lastModifiedDate":"2024-03-09"},{"lineNumber":213,"author":{"gitId":"chiageng"},"content":" invalid tag","lastModifiedDate":"2024-03-09"},{"lineNumber":214,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":215,"author":{"gitId":"chiageng"},"content":" Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-09"},{"lineNumber":216,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":217,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":218,"author":{"gitId":"chiageng"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2024-03-09"},{"lineNumber":219,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2024-03-09"},{"lineNumber":220,"author":{"gitId":"chiageng"},"content":" + INVALID_SKILL_DESC + INVALID_COMMISSION_DESC,","lastModifiedDate":"2024-03-09"},{"lineNumber":221,"author":{"gitId":"chiageng"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-09"},{"lineNumber":222,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":223,"author":{"gitId":"chiageng"},"content":" // non-empty preamble","lastModifiedDate":"2024-03-09"},{"lineNumber":224,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":225,"author":{"gitId":"chiageng"},"content":" + ADDRESS_DESC_BOB + SKILL_DESC_BOB + COMMISSION_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":226,"author":{"gitId":"chiageng"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddMaintainerCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-09"},{"lineNumber":227,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":228,"author":{"gitId":"chiageng"},"content":"}","lastModifiedDate":"2024-03-09"}],"authorContributionMap":{"chiageng":226,"jamessinmaojun":2}},{"path":"src/test/java/seedu/address/logic/parser/AddStaffCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chiageng"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-09"},{"lineNumber":2,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":3,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-03-09"},{"lineNumber":4,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":5,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-09"},{"lineNumber":6,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":7,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMPLOYMENT_DESC_AMY;","lastModifiedDate":"2024-03-09"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMPLOYMENT_DESC_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2024-03-09"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMPLOYMENT_DESC;","lastModifiedDate":"2024-03-09"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-03-09"},{"lineNumber":13,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2024-03-09"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_SALARY_DESC;","lastModifiedDate":"2024-03-09"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-03-09"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-03-09"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2024-03-09"},{"lineNumber":20,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2024-03-09"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SALARY_DESC_AMY;","lastModifiedDate":"2024-03-09"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SALARY_DESC_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":23,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2024-03-09"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":25,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":26,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMPLOYMENT_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":27,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":28,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":29,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SALARY_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":30,"author":{"gitId":"jamessinmaojun"},"content":"import static seedu.address.logic.messages.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-09"},{"lineNumber":32,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-09"},{"lineNumber":33,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMPLOYMENT;","lastModifiedDate":"2024-03-09"},{"lineNumber":34,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-09"},{"lineNumber":35,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-09"},{"lineNumber":36,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SALARY;","lastModifiedDate":"2024-03-09"},{"lineNumber":37,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-09"},{"lineNumber":38,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-09"},{"lineNumber":39,"author":{"gitId":"chiageng"},"content":"import static seedu.address.testutil.TypicalPersons.BOBSTAFF;","lastModifiedDate":"2024-03-09"},{"lineNumber":40,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":41,"author":{"gitId":"chiageng"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-09"},{"lineNumber":42,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":43,"author":{"gitId":"chiageng"},"content":"import seedu.address.logic.commands.AddStaffCommand;","lastModifiedDate":"2024-03-09"},{"lineNumber":44,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.Messages;","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-09"},{"lineNumber":46,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-09"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Employment;","lastModifiedDate":"2024-03-09"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-09"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-09"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Salary;","lastModifiedDate":"2024-03-09"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Staff;","lastModifiedDate":"2024-03-09"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":"import seedu.address.testutil.StaffBuilder;","lastModifiedDate":"2024-03-09"},{"lineNumber":53,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":55,"author":{"gitId":"chiageng"},"content":"public class AddStaffCommandParserTest {","lastModifiedDate":"2024-03-09"},{"lineNumber":56,"author":{"gitId":"chiageng"},"content":" private AddStaffCommandParser parser \u003d new AddStaffCommandParser();","lastModifiedDate":"2024-03-09"},{"lineNumber":57,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":58,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":59,"author":{"gitId":"chiageng"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2024-03-09"},{"lineNumber":60,"author":{"gitId":"chiageng"},"content":" Staff expectedPerson \u003d new StaffBuilder(BOBSTAFF).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":61,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":62,"author":{"gitId":"chiageng"},"content":" // whitespace only preamble","lastModifiedDate":"2024-03-09"},{"lineNumber":63,"author":{"gitId":"chiageng"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":64,"author":{"gitId":"chiageng"},"content":" + ADDRESS_DESC_BOB + SALARY_DESC_BOB + EMPLOYMENT_DESC_BOB, new AddStaffCommand(expectedPerson));","lastModifiedDate":"2024-03-09"},{"lineNumber":65,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":66,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":67,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":68,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":69,"author":{"gitId":"chiageng"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2024-03-09"},{"lineNumber":70,"author":{"gitId":"chiageng"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":71,"author":{"gitId":"chiageng"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND + SALARY_DESC_BOB + EMPLOYMENT_DESC_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":72,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":73,"author":{"gitId":"chiageng"},"content":" // multiple names","lastModifiedDate":"2024-03-09"},{"lineNumber":74,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-09"},{"lineNumber":75,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2024-03-09"},{"lineNumber":76,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":77,"author":{"gitId":"chiageng"},"content":" // multiple phones","lastModifiedDate":"2024-03-09"},{"lineNumber":78,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-09"},{"lineNumber":79,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2024-03-09"},{"lineNumber":80,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":81,"author":{"gitId":"chiageng"},"content":" // multiple emails","lastModifiedDate":"2024-03-09"},{"lineNumber":82,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-09"},{"lineNumber":83,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2024-03-09"},{"lineNumber":84,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":85,"author":{"gitId":"chiageng"},"content":" // multiple addresses","lastModifiedDate":"2024-03-09"},{"lineNumber":86,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-09"},{"lineNumber":87,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2024-03-09"},{"lineNumber":88,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":89,"author":{"gitId":"chiageng"},"content":" // multiple fields repeated","lastModifiedDate":"2024-03-09"},{"lineNumber":90,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-09"},{"lineNumber":91,"author":{"gitId":"chiageng"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY","lastModifiedDate":"2024-03-09"},{"lineNumber":92,"author":{"gitId":"chiageng"},"content":" + ADDRESS_DESC_AMY + SALARY_DESC_AMY + EMPLOYMENT_DESC_AMY","lastModifiedDate":"2024-03-09"},{"lineNumber":93,"author":{"gitId":"chiageng"},"content":" + validExpectedPersonString,","lastModifiedDate":"2024-03-09"},{"lineNumber":94,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_ADDRESS, PREFIX_EMAIL, PREFIX_PHONE,","lastModifiedDate":"2024-03-09"},{"lineNumber":95,"author":{"gitId":"chiageng"},"content":" PREFIX_SALARY, PREFIX_EMPLOYMENT));","lastModifiedDate":"2024-03-09"},{"lineNumber":96,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":97,"author":{"gitId":"chiageng"},"content":" // invalid value followed by valid value","lastModifiedDate":"2024-03-09"},{"lineNumber":98,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":99,"author":{"gitId":"chiageng"},"content":" // invalid name","lastModifiedDate":"2024-03-09"},{"lineNumber":100,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2024-03-09"},{"lineNumber":101,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2024-03-09"},{"lineNumber":102,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":103,"author":{"gitId":"chiageng"},"content":" // invalid email","lastModifiedDate":"2024-03-09"},{"lineNumber":104,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2024-03-09"},{"lineNumber":105,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2024-03-09"},{"lineNumber":106,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":107,"author":{"gitId":"chiageng"},"content":" // invalid phone","lastModifiedDate":"2024-03-09"},{"lineNumber":108,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2024-03-09"},{"lineNumber":109,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2024-03-09"},{"lineNumber":110,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":111,"author":{"gitId":"chiageng"},"content":" // invalid address","lastModifiedDate":"2024-03-09"},{"lineNumber":112,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2024-03-09"},{"lineNumber":113,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2024-03-09"},{"lineNumber":114,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":115,"author":{"gitId":"chiageng"},"content":" // valid value followed by invalid value","lastModifiedDate":"2024-03-09"},{"lineNumber":116,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":117,"author":{"gitId":"chiageng"},"content":" // invalid name","lastModifiedDate":"2024-03-09"},{"lineNumber":118,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2024-03-09"},{"lineNumber":119,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2024-03-09"},{"lineNumber":120,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":121,"author":{"gitId":"chiageng"},"content":" // invalid email","lastModifiedDate":"2024-03-09"},{"lineNumber":122,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2024-03-09"},{"lineNumber":123,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2024-03-09"},{"lineNumber":124,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":125,"author":{"gitId":"chiageng"},"content":" // invalid phone","lastModifiedDate":"2024-03-09"},{"lineNumber":126,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2024-03-09"},{"lineNumber":127,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2024-03-09"},{"lineNumber":128,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":129,"author":{"gitId":"chiageng"},"content":" // invalid address","lastModifiedDate":"2024-03-09"},{"lineNumber":130,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2024-03-09"},{"lineNumber":131,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2024-03-09"},{"lineNumber":132,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":133,"author":{"gitId":"chiageng"},"content":" // invalid salary","lastModifiedDate":"2024-03-09"},{"lineNumber":134,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_SALARY_DESC,","lastModifiedDate":"2024-03-09"},{"lineNumber":135,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_SALARY));","lastModifiedDate":"2024-03-09"},{"lineNumber":136,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":137,"author":{"gitId":"chiageng"},"content":" // invalid employment","lastModifiedDate":"2024-03-09"},{"lineNumber":138,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMPLOYMENT_DESC,","lastModifiedDate":"2024-03-09"},{"lineNumber":139,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMPLOYMENT));","lastModifiedDate":"2024-03-09"},{"lineNumber":140,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":141,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":142,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":143,"author":{"gitId":"chiageng"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2024-03-09"},{"lineNumber":144,"author":{"gitId":"chiageng"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddStaffCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-09"},{"lineNumber":145,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":146,"author":{"gitId":"chiageng"},"content":" // missing name prefix","lastModifiedDate":"2024-03-09"},{"lineNumber":147,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":148,"author":{"gitId":"chiageng"},"content":" + SALARY_DESC_BOB + EMPLOYMENT_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":149,"author":{"gitId":"chiageng"},"content":" expectedMessage);","lastModifiedDate":"2024-03-09"},{"lineNumber":150,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":151,"author":{"gitId":"chiageng"},"content":" // missing phone prefix","lastModifiedDate":"2024-03-09"},{"lineNumber":152,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":153,"author":{"gitId":"chiageng"},"content":" + SALARY_DESC_BOB + EMPLOYMENT_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":154,"author":{"gitId":"chiageng"},"content":" expectedMessage);","lastModifiedDate":"2024-03-09"},{"lineNumber":155,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":156,"author":{"gitId":"chiageng"},"content":" // missing email prefix","lastModifiedDate":"2024-03-09"},{"lineNumber":157,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":158,"author":{"gitId":"chiageng"},"content":" + SALARY_DESC_BOB + EMPLOYMENT_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":159,"author":{"gitId":"chiageng"},"content":" expectedMessage);","lastModifiedDate":"2024-03-09"},{"lineNumber":160,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":161,"author":{"gitId":"chiageng"},"content":" // missing address prefix","lastModifiedDate":"2024-03-09"},{"lineNumber":162,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":163,"author":{"gitId":"chiageng"},"content":" + SALARY_DESC_BOB + EMPLOYMENT_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":164,"author":{"gitId":"chiageng"},"content":" expectedMessage);","lastModifiedDate":"2024-03-09"},{"lineNumber":165,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":166,"author":{"gitId":"chiageng"},"content":" // missing salary prefix","lastModifiedDate":"2024-03-09"},{"lineNumber":167,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":168,"author":{"gitId":"chiageng"},"content":" + VALID_SALARY_BOB + EMPLOYMENT_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":169,"author":{"gitId":"chiageng"},"content":" expectedMessage);","lastModifiedDate":"2024-03-09"},{"lineNumber":170,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":171,"author":{"gitId":"chiageng"},"content":" // missing employment prefix","lastModifiedDate":"2024-03-09"},{"lineNumber":172,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":173,"author":{"gitId":"chiageng"},"content":" + SALARY_DESC_BOB + VALID_EMPLOYMENT_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":174,"author":{"gitId":"chiageng"},"content":" expectedMessage);","lastModifiedDate":"2024-03-09"},{"lineNumber":175,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":176,"author":{"gitId":"chiageng"},"content":" // all prefixes missing","lastModifiedDate":"2024-03-09"},{"lineNumber":177,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_ADDRESS_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":178,"author":{"gitId":"chiageng"},"content":" + VALID_SALARY_BOB + VALID_EMPLOYMENT_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":179,"author":{"gitId":"chiageng"},"content":" expectedMessage);","lastModifiedDate":"2024-03-09"},{"lineNumber":180,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":181,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":182,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":183,"author":{"gitId":"chiageng"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2024-03-09"},{"lineNumber":184,"author":{"gitId":"chiageng"},"content":" // invalid name","lastModifiedDate":"2024-03-09"},{"lineNumber":185,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":186,"author":{"gitId":"chiageng"},"content":" + SALARY_DESC_BOB + EMPLOYMENT_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":187,"author":{"gitId":"chiageng"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-09"},{"lineNumber":188,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":189,"author":{"gitId":"chiageng"},"content":" // invalid phone","lastModifiedDate":"2024-03-09"},{"lineNumber":190,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":191,"author":{"gitId":"chiageng"},"content":" + SALARY_DESC_BOB + EMPLOYMENT_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":192,"author":{"gitId":"chiageng"},"content":" Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-09"},{"lineNumber":193,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":194,"author":{"gitId":"chiageng"},"content":" // invalid email","lastModifiedDate":"2024-03-09"},{"lineNumber":195,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":196,"author":{"gitId":"chiageng"},"content":" + SALARY_DESC_BOB + EMPLOYMENT_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":197,"author":{"gitId":"chiageng"},"content":" Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-09"},{"lineNumber":198,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":199,"author":{"gitId":"chiageng"},"content":" // invalid address","lastModifiedDate":"2024-03-09"},{"lineNumber":200,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2024-03-09"},{"lineNumber":201,"author":{"gitId":"chiageng"},"content":" + SALARY_DESC_BOB + EMPLOYMENT_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":202,"author":{"gitId":"chiageng"},"content":" Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-09"},{"lineNumber":203,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":204,"author":{"gitId":"chiageng"},"content":" // invalid salary","lastModifiedDate":"2024-03-09"},{"lineNumber":205,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":206,"author":{"gitId":"chiageng"},"content":" + INVALID_SALARY_DESC + EMPLOYMENT_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":207,"author":{"gitId":"chiageng"},"content":" Salary.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-09"},{"lineNumber":208,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":209,"author":{"gitId":"chiageng"},"content":" // invalid employment","lastModifiedDate":"2024-03-09"},{"lineNumber":210,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":211,"author":{"gitId":"chiageng"},"content":" + SALARY_DESC_BOB + INVALID_EMPLOYMENT_DESC,","lastModifiedDate":"2024-03-09"},{"lineNumber":212,"author":{"gitId":"chiageng"},"content":" Employment.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-09"},{"lineNumber":213,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":214,"author":{"gitId":"chiageng"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2024-03-09"},{"lineNumber":215,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2024-03-09"},{"lineNumber":216,"author":{"gitId":"chiageng"},"content":" + INVALID_SALARY_DESC + INVALID_EMPLOYMENT_DESC,","lastModifiedDate":"2024-03-09"},{"lineNumber":217,"author":{"gitId":"chiageng"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-09"},{"lineNumber":218,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":219,"author":{"gitId":"chiageng"},"content":" // non-empty preamble","lastModifiedDate":"2024-03-09"},{"lineNumber":220,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":221,"author":{"gitId":"chiageng"},"content":" + ADDRESS_DESC_BOB + SALARY_DESC_BOB + EMPLOYMENT_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":222,"author":{"gitId":"chiageng"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddStaffCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-09"},{"lineNumber":223,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":224,"author":{"gitId":"chiageng"},"content":"}","lastModifiedDate":"2024-03-09"}],"authorContributionMap":{"chiageng":222,"jamessinmaojun":2}},{"path":"src/test/java/seedu/address/logic/parser/AddSupplierCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chiageng"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-09"},{"lineNumber":2,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":3,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-03-09"},{"lineNumber":4,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":5,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-09"},{"lineNumber":6,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":7,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2024-03-09"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2024-03-09"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PRICE_DESC;","lastModifiedDate":"2024-03-09"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PRODUCT_DESC;","lastModifiedDate":"2024-03-09"},{"lineNumber":13,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-03-09"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-03-09"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2024-03-09"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2024-03-09"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PRICE_DESC_AMY;","lastModifiedDate":"2024-03-09"},{"lineNumber":20,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PRICE_DESC_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PRODUCT_DESC_AMY;","lastModifiedDate":"2024-03-09"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PRODUCT_DESC_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":23,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":25,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":26,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":27,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PRICE_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":28,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PRODUCT_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":29,"author":{"gitId":"jamessinmaojun"},"content":"import static seedu.address.logic.messages.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-09"},{"lineNumber":31,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-09"},{"lineNumber":32,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-09"},{"lineNumber":33,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-09"},{"lineNumber":34,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PRICE;","lastModifiedDate":"2024-03-09"},{"lineNumber":35,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PRODUCT;","lastModifiedDate":"2024-03-09"},{"lineNumber":36,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-09"},{"lineNumber":37,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-09"},{"lineNumber":38,"author":{"gitId":"chiageng"},"content":"import static seedu.address.testutil.TypicalPersons.BOBSUPPLIER;","lastModifiedDate":"2024-03-09"},{"lineNumber":39,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":40,"author":{"gitId":"chiageng"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-09"},{"lineNumber":41,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":42,"author":{"gitId":"chiageng"},"content":"import seedu.address.logic.commands.AddSupplierCommand;","lastModifiedDate":"2024-03-09"},{"lineNumber":43,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.Messages;","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-09"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-09"},{"lineNumber":46,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-09"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-09"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Price;","lastModifiedDate":"2024-03-09"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Product;","lastModifiedDate":"2024-03-09"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Supplier;","lastModifiedDate":"2024-03-09"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":"import seedu.address.testutil.SupplierBuilder;","lastModifiedDate":"2024-03-09"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":53,"author":{"gitId":"chiageng"},"content":"public class AddSupplierCommandParserTest {","lastModifiedDate":"2024-03-09"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":" private AddSupplierCommandParser parser \u003d new AddSupplierCommandParser();","lastModifiedDate":"2024-03-09"},{"lineNumber":55,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":56,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":57,"author":{"gitId":"chiageng"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2024-03-09"},{"lineNumber":58,"author":{"gitId":"chiageng"},"content":" Supplier expectedPerson \u003d new SupplierBuilder(BOBSUPPLIER).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":59,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":60,"author":{"gitId":"chiageng"},"content":" // whitespace only preamble","lastModifiedDate":"2024-03-09"},{"lineNumber":61,"author":{"gitId":"chiageng"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":62,"author":{"gitId":"chiageng"},"content":" + ADDRESS_DESC_BOB + PRODUCT_DESC_BOB + PRICE_DESC_BOB, new AddSupplierCommand(expectedPerson));","lastModifiedDate":"2024-03-09"},{"lineNumber":63,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":64,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":65,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":66,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":67,"author":{"gitId":"chiageng"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2024-03-09"},{"lineNumber":68,"author":{"gitId":"chiageng"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":69,"author":{"gitId":"chiageng"},"content":" + ADDRESS_DESC_BOB + PRODUCT_DESC_BOB + PRICE_DESC_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":70,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":71,"author":{"gitId":"chiageng"},"content":" // multiple names","lastModifiedDate":"2024-03-09"},{"lineNumber":72,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-09"},{"lineNumber":73,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2024-03-09"},{"lineNumber":74,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":75,"author":{"gitId":"chiageng"},"content":" // multiple phones","lastModifiedDate":"2024-03-09"},{"lineNumber":76,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-09"},{"lineNumber":77,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2024-03-09"},{"lineNumber":78,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":79,"author":{"gitId":"chiageng"},"content":" // multiple emails","lastModifiedDate":"2024-03-09"},{"lineNumber":80,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-09"},{"lineNumber":81,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2024-03-09"},{"lineNumber":82,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":83,"author":{"gitId":"chiageng"},"content":" // multiple addresses","lastModifiedDate":"2024-03-09"},{"lineNumber":84,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-09"},{"lineNumber":85,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2024-03-09"},{"lineNumber":86,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":87,"author":{"gitId":"chiageng"},"content":" // multiple fields repeated","lastModifiedDate":"2024-03-09"},{"lineNumber":88,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-09"},{"lineNumber":89,"author":{"gitId":"chiageng"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY","lastModifiedDate":"2024-03-09"},{"lineNumber":90,"author":{"gitId":"chiageng"},"content":" + ADDRESS_DESC_AMY + PRODUCT_DESC_AMY + PRICE_DESC_AMY","lastModifiedDate":"2024-03-09"},{"lineNumber":91,"author":{"gitId":"chiageng"},"content":" + validExpectedPersonString,","lastModifiedDate":"2024-03-09"},{"lineNumber":92,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_ADDRESS, PREFIX_EMAIL, PREFIX_PHONE,","lastModifiedDate":"2024-03-09"},{"lineNumber":93,"author":{"gitId":"chiageng"},"content":" PREFIX_PRODUCT, PREFIX_PRICE));","lastModifiedDate":"2024-03-09"},{"lineNumber":94,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":95,"author":{"gitId":"chiageng"},"content":" // invalid name","lastModifiedDate":"2024-03-09"},{"lineNumber":96,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2024-03-09"},{"lineNumber":97,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2024-03-09"},{"lineNumber":98,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":99,"author":{"gitId":"chiageng"},"content":" // invalid email","lastModifiedDate":"2024-03-09"},{"lineNumber":100,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2024-03-09"},{"lineNumber":101,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2024-03-09"},{"lineNumber":102,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":103,"author":{"gitId":"chiageng"},"content":" // invalid phone","lastModifiedDate":"2024-03-09"},{"lineNumber":104,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2024-03-09"},{"lineNumber":105,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2024-03-09"},{"lineNumber":106,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":107,"author":{"gitId":"chiageng"},"content":" // invalid address","lastModifiedDate":"2024-03-09"},{"lineNumber":108,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2024-03-09"},{"lineNumber":109,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2024-03-09"},{"lineNumber":110,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":111,"author":{"gitId":"chiageng"},"content":" // valid value followed by invalid value","lastModifiedDate":"2024-03-09"},{"lineNumber":112,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":113,"author":{"gitId":"chiageng"},"content":" // invalid name","lastModifiedDate":"2024-03-09"},{"lineNumber":114,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2024-03-09"},{"lineNumber":115,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2024-03-09"},{"lineNumber":116,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":117,"author":{"gitId":"chiageng"},"content":" // invalid email","lastModifiedDate":"2024-03-09"},{"lineNumber":118,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2024-03-09"},{"lineNumber":119,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2024-03-09"},{"lineNumber":120,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":121,"author":{"gitId":"chiageng"},"content":" // invalid phone","lastModifiedDate":"2024-03-09"},{"lineNumber":122,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2024-03-09"},{"lineNumber":123,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2024-03-09"},{"lineNumber":124,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":125,"author":{"gitId":"chiageng"},"content":" // invalid address","lastModifiedDate":"2024-03-09"},{"lineNumber":126,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2024-03-09"},{"lineNumber":127,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2024-03-09"},{"lineNumber":128,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":129,"author":{"gitId":"chiageng"},"content":" // invalid product","lastModifiedDate":"2024-03-09"},{"lineNumber":130,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PRODUCT_DESC,","lastModifiedDate":"2024-03-09"},{"lineNumber":131,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PRODUCT));","lastModifiedDate":"2024-03-09"},{"lineNumber":132,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":133,"author":{"gitId":"chiageng"},"content":" // invalid price","lastModifiedDate":"2024-03-09"},{"lineNumber":134,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PRICE_DESC,","lastModifiedDate":"2024-03-09"},{"lineNumber":135,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PRICE));","lastModifiedDate":"2024-03-09"},{"lineNumber":136,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":137,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":138,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":139,"author":{"gitId":"chiageng"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2024-03-09"},{"lineNumber":140,"author":{"gitId":"chiageng"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddSupplierCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-09"},{"lineNumber":141,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":142,"author":{"gitId":"chiageng"},"content":" // missing name prefix","lastModifiedDate":"2024-03-09"},{"lineNumber":143,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":144,"author":{"gitId":"chiageng"},"content":" + PRODUCT_DESC_BOB + PRICE_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":145,"author":{"gitId":"chiageng"},"content":" expectedMessage);","lastModifiedDate":"2024-03-09"},{"lineNumber":146,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":147,"author":{"gitId":"chiageng"},"content":" // missing phone prefix","lastModifiedDate":"2024-03-09"},{"lineNumber":148,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":149,"author":{"gitId":"chiageng"},"content":" + PRODUCT_DESC_BOB + PRICE_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":150,"author":{"gitId":"chiageng"},"content":" expectedMessage);","lastModifiedDate":"2024-03-09"},{"lineNumber":151,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":152,"author":{"gitId":"chiageng"},"content":" // missing email prefix","lastModifiedDate":"2024-03-09"},{"lineNumber":153,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":154,"author":{"gitId":"chiageng"},"content":" + PRODUCT_DESC_BOB + PRICE_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":155,"author":{"gitId":"chiageng"},"content":" expectedMessage);","lastModifiedDate":"2024-03-09"},{"lineNumber":156,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":157,"author":{"gitId":"chiageng"},"content":" // missing address prefix","lastModifiedDate":"2024-03-09"},{"lineNumber":158,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":159,"author":{"gitId":"chiageng"},"content":" + PRODUCT_DESC_BOB + PRICE_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":160,"author":{"gitId":"chiageng"},"content":" expectedMessage);","lastModifiedDate":"2024-03-09"},{"lineNumber":161,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":162,"author":{"gitId":"chiageng"},"content":" // missing product prefix","lastModifiedDate":"2024-03-09"},{"lineNumber":163,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":164,"author":{"gitId":"chiageng"},"content":" + VALID_PRODUCT_BOB + PRICE_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":165,"author":{"gitId":"chiageng"},"content":" expectedMessage);","lastModifiedDate":"2024-03-09"},{"lineNumber":166,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":167,"author":{"gitId":"chiageng"},"content":" // missing price prefix","lastModifiedDate":"2024-03-09"},{"lineNumber":168,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":169,"author":{"gitId":"chiageng"},"content":" + PRODUCT_DESC_BOB + VALID_PRICE_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":170,"author":{"gitId":"chiageng"},"content":" expectedMessage);","lastModifiedDate":"2024-03-09"},{"lineNumber":171,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":172,"author":{"gitId":"chiageng"},"content":" // all prefixes missing","lastModifiedDate":"2024-03-09"},{"lineNumber":173,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_ADDRESS_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":174,"author":{"gitId":"chiageng"},"content":" + VALID_PRODUCT_BOB + VALID_PRICE_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":175,"author":{"gitId":"chiageng"},"content":" expectedMessage);","lastModifiedDate":"2024-03-09"},{"lineNumber":176,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":177,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":178,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":179,"author":{"gitId":"chiageng"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2024-03-09"},{"lineNumber":180,"author":{"gitId":"chiageng"},"content":" // invalid name","lastModifiedDate":"2024-03-09"},{"lineNumber":181,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":182,"author":{"gitId":"chiageng"},"content":" + PRODUCT_DESC_BOB + PRICE_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":183,"author":{"gitId":"chiageng"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-09"},{"lineNumber":184,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":185,"author":{"gitId":"chiageng"},"content":" // invalid phone","lastModifiedDate":"2024-03-09"},{"lineNumber":186,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":187,"author":{"gitId":"chiageng"},"content":" + PRODUCT_DESC_BOB + PRICE_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":188,"author":{"gitId":"chiageng"},"content":" Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-09"},{"lineNumber":189,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":190,"author":{"gitId":"chiageng"},"content":" // invalid email","lastModifiedDate":"2024-03-09"},{"lineNumber":191,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":192,"author":{"gitId":"chiageng"},"content":" + PRODUCT_DESC_BOB + PRICE_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":193,"author":{"gitId":"chiageng"},"content":" Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-09"},{"lineNumber":194,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":195,"author":{"gitId":"chiageng"},"content":" // invalid address","lastModifiedDate":"2024-03-09"},{"lineNumber":196,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2024-03-09"},{"lineNumber":197,"author":{"gitId":"chiageng"},"content":" + PRODUCT_DESC_BOB + PRICE_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":198,"author":{"gitId":"chiageng"},"content":" Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-09"},{"lineNumber":199,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":200,"author":{"gitId":"chiageng"},"content":" // invalid product","lastModifiedDate":"2024-03-09"},{"lineNumber":201,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":202,"author":{"gitId":"chiageng"},"content":" + INVALID_PRODUCT_DESC + PRICE_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":203,"author":{"gitId":"chiageng"},"content":" Product.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-09"},{"lineNumber":204,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":205,"author":{"gitId":"chiageng"},"content":" // invalid employment","lastModifiedDate":"2024-03-09"},{"lineNumber":206,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":207,"author":{"gitId":"chiageng"},"content":" + PRODUCT_DESC_BOB + INVALID_PRICE_DESC,","lastModifiedDate":"2024-03-09"},{"lineNumber":208,"author":{"gitId":"chiageng"},"content":" Price.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-09"},{"lineNumber":209,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":210,"author":{"gitId":"chiageng"},"content":" /*","lastModifiedDate":"2024-03-09"},{"lineNumber":211,"author":{"gitId":"chiageng"},"content":" invalid tag","lastModifiedDate":"2024-03-09"},{"lineNumber":212,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":213,"author":{"gitId":"chiageng"},"content":" Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-09"},{"lineNumber":214,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":215,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":216,"author":{"gitId":"chiageng"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2024-03-09"},{"lineNumber":217,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2024-03-09"},{"lineNumber":218,"author":{"gitId":"chiageng"},"content":" + INVALID_PRODUCT_DESC + INVALID_PRICE_DESC,","lastModifiedDate":"2024-03-09"},{"lineNumber":219,"author":{"gitId":"chiageng"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-09"},{"lineNumber":220,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":221,"author":{"gitId":"chiageng"},"content":" // non-empty preamble","lastModifiedDate":"2024-03-09"},{"lineNumber":222,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":223,"author":{"gitId":"chiageng"},"content":" + ADDRESS_DESC_BOB + PRODUCT_DESC_BOB + PRICE_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":224,"author":{"gitId":"chiageng"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddSupplierCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-09"},{"lineNumber":225,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":226,"author":{"gitId":"chiageng"},"content":"}","lastModifiedDate":"2024-03-09"}],"authorContributionMap":{"chiageng":224,"jamessinmaojun":2}},{"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":"jamessinmaojun"},"content":"import static seedu.address.logic.messages.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"jamessinmaojun"},"content":"import static seedu.address.logic.messages.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"Joshy837"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FIELD;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"Joshy837"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":10,"author":{"gitId":"jamessinmaojun"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-15"},{"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":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"Joshy837"},"content":"import seedu.address.logic.commands.AddMaintainerCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"Joshy837"},"content":"import seedu.address.logic.commands.AddStaffCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"Joshy837"},"content":"import seedu.address.logic.commands.AddSupplierCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-06-27"},{"lineNumber":26,"author":{"gitId":"Joshy837"},"content":"import seedu.address.logic.commands.EditMaintainerCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.logic.commands.EditMaintainerCommand.EditMaintainerDescriptor;","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"Joshy837"},"content":"import seedu.address.logic.commands.EditStaffCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.logic.commands.EditStaffCommand.EditStaffDescriptor;","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"Joshy837"},"content":"import seedu.address.logic.commands.EditSupplierCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.logic.commands.EditSupplierCommand.EditSupplierDescriptor;","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"Joshy837"},"content":"import seedu.address.logic.commands.HelpDeleteCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"Joshy837"},"content":"import seedu.address.logic.commands.HelpEditCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"Joshy837"},"content":"import seedu.address.logic.commands.HelpPoochMaintenanceCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"Joshy837"},"content":"import seedu.address.logic.commands.HelpPoochStaffCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"Joshy837"},"content":"import seedu.address.logic.commands.HelpPoochSupplierCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"Joshy837"},"content":"import seedu.address.logic.commands.HelpSearchCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"jannaleong"},"content":"import seedu.address.logic.commands.NoteCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"Joshy837"},"content":"import seedu.address.logic.commands.SearchCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24"},{"lineNumber":45,"author":{"gitId":"Joshy837"},"content":"import seedu.address.model.person.KeywordPredicate;","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"Joshy837"},"content":"import seedu.address.model.person.Maintainer;","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"Joshy837"},"content":"import seedu.address.model.person.Staff;","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"Joshy837"},"content":"import seedu.address.model.person.Supplier;","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.testutil.EditMaintainerDescriptorBuilder;","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.testutil.EditStaffDescriptorBuilder;","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.testutil.EditSupplierDescriptorBuilder;","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"chiageng"},"content":"import seedu.address.testutil.MaintainerBuilder;","lastModifiedDate":"2024-03-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"chiageng"},"content":"import seedu.address.testutil.StaffBuilder;","lastModifiedDate":"2024-03-09"},{"lineNumber":59,"author":{"gitId":"chiageng"},"content":"import seedu.address.testutil.SupplierBuilder;","lastModifiedDate":"2024-03-09"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","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":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":73,"author":{"gitId":"chiageng"},"content":" public void parseCommand_addStaff() throws Exception {","lastModifiedDate":"2024-03-09"},{"lineNumber":74,"author":{"gitId":"chiageng"},"content":" Staff person \u003d new StaffBuilder().build();","lastModifiedDate":"2024-03-09"},{"lineNumber":75,"author":{"gitId":"chiageng"},"content":" AddStaffCommand command \u003d (AddStaffCommand) parser.parseCommand(","lastModifiedDate":"2024-03-09"},{"lineNumber":76,"author":{"gitId":"chiageng"},"content":" PersonUtil.getAddStaffCommand(person));","lastModifiedDate":"2024-03-09"},{"lineNumber":77,"author":{"gitId":"chiageng"},"content":" assertEquals(new AddStaffCommand(person), command);","lastModifiedDate":"2024-03-09"},{"lineNumber":78,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":79,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":80,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":81,"author":{"gitId":"chiageng"},"content":" public void parseCommand_addSupplier() throws Exception {","lastModifiedDate":"2024-03-09"},{"lineNumber":82,"author":{"gitId":"chiageng"},"content":" Supplier person \u003d new SupplierBuilder().build();","lastModifiedDate":"2024-03-09"},{"lineNumber":83,"author":{"gitId":"chiageng"},"content":" AddSupplierCommand command \u003d (AddSupplierCommand) parser.parseCommand(","lastModifiedDate":"2024-03-09"},{"lineNumber":84,"author":{"gitId":"chiageng"},"content":" PersonUtil.getAddSupplierCommand(person));","lastModifiedDate":"2024-03-09"},{"lineNumber":85,"author":{"gitId":"chiageng"},"content":" assertEquals(new AddSupplierCommand(person), command);","lastModifiedDate":"2024-03-09"},{"lineNumber":86,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":87,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":88,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":89,"author":{"gitId":"chiageng"},"content":" public void parseCommand_addMaintainer() throws Exception {","lastModifiedDate":"2024-03-09"},{"lineNumber":90,"author":{"gitId":"chiageng"},"content":" Maintainer person \u003d new MaintainerBuilder().build();","lastModifiedDate":"2024-03-09"},{"lineNumber":91,"author":{"gitId":"chiageng"},"content":" AddMaintainerCommand command \u003d (AddMaintainerCommand) parser.parseCommand(","lastModifiedDate":"2024-03-09"},{"lineNumber":92,"author":{"gitId":"chiageng"},"content":" PersonUtil.getAddMaintainerCommand(person));","lastModifiedDate":"2024-03-09"},{"lineNumber":93,"author":{"gitId":"chiageng"},"content":" assertEquals(new AddMaintainerCommand(person), command);","lastModifiedDate":"2024-03-09"},{"lineNumber":94,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":95,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","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_delete() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":105,"author":{"gitId":"jamessinmaojun"},"content":" DeleteCommand.COMMAND_WORD + \" ; name : \" + ALICE.getName());","lastModifiedDate":"2024-03-18"},{"lineNumber":106,"author":{"gitId":"jamessinmaojun"},"content":" assertEquals(new DeleteCommand(ALICE.getName()), command);","lastModifiedDate":"2024-03-15"},{"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_edit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":111,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":112,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27"},{"lineNumber":113,"author":{"gitId":"yleeyilin"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"yleeyilin"},"content":" + person.getName() + \" \" + PREFIX_FIELD + \"{ \"","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"yleeyilin"},"content":" + PersonUtil.getEditPersonDescriptorDetails(descriptor) + \"}\");","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"yleeyilin"},"content":" assertEquals(command, new EditCommand(person.getName(), descriptor));","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"yleeyilin"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"yleeyilin"},"content":" public void parseCommand_editStaff() throws Exception {","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"yleeyilin"},"content":" Staff staff \u003d new StaffBuilder().build();","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"yleeyilin"},"content":" EditStaffDescriptor descriptor \u003d new EditStaffDescriptorBuilder(staff).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"yleeyilin"},"content":" EditStaffCommand command \u003d (EditStaffCommand) parser.parseCommand(EditStaffCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"yleeyilin"},"content":" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"yleeyilin"},"content":" + staff.getName() + \" \" + PREFIX_FIELD + \"{ \"","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"yleeyilin"},"content":" + PersonUtil.getEditStaffDescriptorDetails(descriptor) + \"}\");","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"yleeyilin"},"content":" assertEquals(command, new EditStaffCommand(staff.getName(), descriptor));","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":129,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":130,"author":{"gitId":"yleeyilin"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"yleeyilin"},"content":" public void parseCommand_editSupplier() throws Exception {","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"yleeyilin"},"content":" Supplier supplier \u003d new SupplierBuilder().build();","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"yleeyilin"},"content":" EditSupplierDescriptor descriptor \u003d new EditSupplierDescriptorBuilder(supplier).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"yleeyilin"},"content":" EditSupplierCommand command \u003d (EditSupplierCommand) parser.parseCommand(EditSupplierCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2024-03-17"},{"lineNumber":135,"author":{"gitId":"yleeyilin"},"content":" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":136,"author":{"gitId":"yleeyilin"},"content":" + supplier.getName() + \" \" + PREFIX_FIELD + \"{ \"","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"yleeyilin"},"content":" + PersonUtil.getEditSupplierDescriptorDetails(descriptor) + \"}\");","lastModifiedDate":"2024-03-17"},{"lineNumber":138,"author":{"gitId":"yleeyilin"},"content":" assertEquals(new EditSupplierCommand(supplier.getName(), descriptor), command);","lastModifiedDate":"2024-03-17"},{"lineNumber":139,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":140,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":141,"author":{"gitId":"yleeyilin"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"yleeyilin"},"content":" public void parseCommand_editMaintainer() throws Exception {","lastModifiedDate":"2024-03-17"},{"lineNumber":143,"author":{"gitId":"yleeyilin"},"content":" Maintainer maintainer \u003d new MaintainerBuilder().build();","lastModifiedDate":"2024-03-17"},{"lineNumber":144,"author":{"gitId":"yleeyilin"},"content":" EditMaintainerDescriptor descriptor \u003d new EditMaintainerDescriptorBuilder(maintainer).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":145,"author":{"gitId":"yleeyilin"},"content":" EditMaintainerCommand command \u003d (EditMaintainerCommand)","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"yleeyilin"},"content":" parser.parseCommand(EditMaintainerCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2024-03-17"},{"lineNumber":147,"author":{"gitId":"yleeyilin"},"content":" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":148,"author":{"gitId":"yleeyilin"},"content":" + maintainer.getName() + \" \" + PREFIX_FIELD + \"{ \"","lastModifiedDate":"2024-03-17"},{"lineNumber":149,"author":{"gitId":"yleeyilin"},"content":" + PersonUtil.getEditMaintainerDescriptorDetails(descriptor) + \"}\");","lastModifiedDate":"2024-03-17"},{"lineNumber":150,"author":{"gitId":"yleeyilin"},"content":" assertEquals(new EditMaintainerCommand(maintainer.getName(), descriptor), command);","lastModifiedDate":"2024-03-17"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":153,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":154,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":155,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":156,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":159,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":160,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":161,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12"},{"lineNumber":162,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":163,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27"},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":167,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":168,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":169,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":170,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":173,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":174,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":175,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":176,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":179,"author":{"gitId":"jannaleong"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":180,"author":{"gitId":"jannaleong"},"content":" public void parseCommand_helpDelete() throws Exception {","lastModifiedDate":"2024-03-11"},{"lineNumber":181,"author":{"gitId":"jannaleong"},"content":" assertTrue(parser.parseCommand(HelpDeleteCommand.COMMAND_WORD) instanceof HelpDeleteCommand);","lastModifiedDate":"2024-03-11"},{"lineNumber":182,"author":{"gitId":"jannaleong"},"content":" assertTrue(parser.parseCommand(HelpDeleteCommand.COMMAND_WORD + \" 3\") instanceof HelpDeleteCommand);","lastModifiedDate":"2024-03-11"},{"lineNumber":183,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":184,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":185,"author":{"gitId":"jannaleong"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":186,"author":{"gitId":"jannaleong"},"content":" public void parseCommand_helpEdit() throws Exception {","lastModifiedDate":"2024-03-11"},{"lineNumber":187,"author":{"gitId":"jannaleong"},"content":" assertTrue(parser.parseCommand(HelpEditCommand.COMMAND_WORD) instanceof HelpEditCommand);","lastModifiedDate":"2024-03-11"},{"lineNumber":188,"author":{"gitId":"jannaleong"},"content":" assertTrue(parser.parseCommand(HelpEditCommand.COMMAND_WORD + \" 3\") instanceof HelpEditCommand);","lastModifiedDate":"2024-03-11"},{"lineNumber":189,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":190,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":191,"author":{"gitId":"jannaleong"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":192,"author":{"gitId":"jannaleong"},"content":" public void parseCommand_helpSearch() throws Exception {","lastModifiedDate":"2024-03-11"},{"lineNumber":193,"author":{"gitId":"jannaleong"},"content":" assertTrue(parser.parseCommand(HelpSearchCommand.COMMAND_WORD) instanceof HelpSearchCommand);","lastModifiedDate":"2024-03-11"},{"lineNumber":194,"author":{"gitId":"jannaleong"},"content":" assertTrue(parser.parseCommand(HelpSearchCommand.COMMAND_WORD + \" 3\") instanceof HelpSearchCommand);","lastModifiedDate":"2024-03-11"},{"lineNumber":195,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":196,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":197,"author":{"gitId":"jannaleong"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":198,"author":{"gitId":"jannaleong"},"content":" public void parseCommand_helpPoochMaintenance() throws Exception {","lastModifiedDate":"2024-03-11"},{"lineNumber":199,"author":{"gitId":"jannaleong"},"content":" assertTrue(parser.parseCommand(HelpPoochMaintenanceCommand.COMMAND_WORD)","lastModifiedDate":"2024-03-11"},{"lineNumber":200,"author":{"gitId":"jannaleong"},"content":" instanceof HelpPoochMaintenanceCommand);","lastModifiedDate":"2024-03-11"},{"lineNumber":201,"author":{"gitId":"jannaleong"},"content":" assertTrue(parser.parseCommand(HelpPoochMaintenanceCommand.COMMAND_WORD + \" 3\")","lastModifiedDate":"2024-03-11"},{"lineNumber":202,"author":{"gitId":"jannaleong"},"content":" instanceof HelpPoochMaintenanceCommand);","lastModifiedDate":"2024-03-11"},{"lineNumber":203,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":204,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":205,"author":{"gitId":"jannaleong"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":206,"author":{"gitId":"jannaleong"},"content":" public void parseCommand_helpPoochSupplier() throws Exception {","lastModifiedDate":"2024-03-11"},{"lineNumber":207,"author":{"gitId":"jannaleong"},"content":" assertTrue(parser.parseCommand(HelpPoochSupplierCommand.COMMAND_WORD)","lastModifiedDate":"2024-03-11"},{"lineNumber":208,"author":{"gitId":"jannaleong"},"content":" instanceof HelpPoochSupplierCommand);","lastModifiedDate":"2024-03-11"},{"lineNumber":209,"author":{"gitId":"jannaleong"},"content":" assertTrue(parser.parseCommand(HelpPoochSupplierCommand.COMMAND_WORD + \" 3\")","lastModifiedDate":"2024-03-11"},{"lineNumber":210,"author":{"gitId":"jannaleong"},"content":" instanceof HelpPoochSupplierCommand);","lastModifiedDate":"2024-03-11"},{"lineNumber":211,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":212,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":213,"author":{"gitId":"jannaleong"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":214,"author":{"gitId":"jannaleong"},"content":" public void parseCommand_helpPoochStaff() throws Exception {","lastModifiedDate":"2024-03-11"},{"lineNumber":215,"author":{"gitId":"jannaleong"},"content":" assertTrue(parser.parseCommand(HelpPoochStaffCommand.COMMAND_WORD) instanceof HelpPoochStaffCommand);","lastModifiedDate":"2024-03-11"},{"lineNumber":216,"author":{"gitId":"jannaleong"},"content":" assertTrue(parser.parseCommand(HelpPoochStaffCommand.COMMAND_WORD + \" 3\")","lastModifiedDate":"2024-03-11"},{"lineNumber":217,"author":{"gitId":"jannaleong"},"content":" instanceof HelpPoochStaffCommand);","lastModifiedDate":"2024-03-11"},{"lineNumber":218,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":219,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":220,"author":{"gitId":"Joshy837"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":221,"author":{"gitId":"Joshy837"},"content":" public void parseCommand_search() throws Exception {","lastModifiedDate":"2024-03-18"},{"lineNumber":222,"author":{"gitId":"Joshy837"},"content":" String keyword \u003d \" ; name : Poochie\";","lastModifiedDate":"2024-03-18"},{"lineNumber":223,"author":{"gitId":"Joshy837"},"content":" ArgumentMultimap token \u003d ArgumentTokenizer.tokenize(keyword, PREFIX_NAME);","lastModifiedDate":"2024-03-18"},{"lineNumber":224,"author":{"gitId":"Joshy837"},"content":" SearchCommand command \u003d (SearchCommand) parser.parseCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":225,"author":{"gitId":"Joshy837"},"content":" SearchCommand.COMMAND_WORD + keyword);","lastModifiedDate":"2024-03-18"},{"lineNumber":226,"author":{"gitId":"Joshy837"},"content":" assertEquals(new SearchCommand(new KeywordPredicate(token)), command);","lastModifiedDate":"2024-03-18"},{"lineNumber":227,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":228,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":229,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":230,"author":{"gitId":"jannaleong"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":231,"author":{"gitId":"jannaleong"},"content":" public void parseCommand_note() throws Exception {","lastModifiedDate":"2024-03-19"},{"lineNumber":232,"author":{"gitId":"jannaleong"},"content":" NoteCommand command \u003d (NoteCommand) parser.parseCommand(\"/note ; name : Bob Choo ; note : get kibble\");","lastModifiedDate":"2024-03-19"},{"lineNumber":233,"author":{"gitId":"jannaleong"},"content":" assertTrue(command instanceof NoteCommand);","lastModifiedDate":"2024-03-19"},{"lineNumber":234,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":235,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":236,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":237,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":238,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":243,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":244,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":247,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":248,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"Joshy837":28,"jamessinmaojun":5,"chiageng":27,"jannaleong":51,"-":93,"yleeyilin":44}},{"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.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":5,"author":{"gitId":"jamessinmaojun"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-09"},{"lineNumber":10,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.DeleteMessages;","lastModifiedDate":"2024-03-18"},{"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":"jamessinmaojun"},"content":" assertParseSuccess(parser, \" ; name : Alice Pauline\", new DeleteCommand(ALICE.getName()));","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser, \"_\", String.format(DeleteMessages.MESSAGE_DELETE_MISSING_NAME,","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"jamessinmaojun"},"content":" DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09"}],"authorContributionMap":{"jamessinmaojun":5,"-":28}},{"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.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"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.INVALID_ADDRESS_DESC;","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.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":15,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":18,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FIELD;","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":23,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.testutil.TypicalPersons.CARL;","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-04"},{"lineNumber":30,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.EditMessages;","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.Messages;","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-04"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-04"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-04"},{"lineNumber":36,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":44,"author":{"gitId":"yleeyilin"},"content":" String userInput \u003d EditCommand.COMMAND_WORD + \" \" + PREFIX_NAME + \" \"","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"yleeyilin"},"content":" + \" \" + PREFIX_FIELD + \"{\" + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser, userInput, String.format(EditMessages.MESSAGE_EDIT_INVALID_NAME,","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"jamessinmaojun"},"content":" Name.MESSAGE_CONSTRAINTS));","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"jamessinmaojun"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":51,"author":{"gitId":"jamessinmaojun"},"content":" public void parse_missingName_failure() {","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"jamessinmaojun"},"content":" String userInput \u003d EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2024-03-22"},{"lineNumber":54,"author":{"gitId":"jamessinmaojun"},"content":" + \" \" + PREFIX_FIELD + \"{\" + \" }\";","lastModifiedDate":"2024-03-22"},{"lineNumber":55,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser, userInput, String.format(EditMessages.MESSAGE_EDIT_MISSING_NAME,","lastModifiedDate":"2024-03-22"},{"lineNumber":56,"author":{"gitId":"jamessinmaojun"},"content":" EditCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-22"},{"lineNumber":57,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":59,"author":{"gitId":"jamessinmaojun"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":60,"author":{"gitId":"jamessinmaojun"},"content":" public void parse_missingField_failure() {","lastModifiedDate":"2024-03-22"},{"lineNumber":61,"author":{"gitId":"jamessinmaojun"},"content":" // no field specified","lastModifiedDate":"2024-03-22"},{"lineNumber":62,"author":{"gitId":"jamessinmaojun"},"content":" String userInput \u003d EditCommand.COMMAND_WORD + \" \" + PREFIX_NAME;","lastModifiedDate":"2024-03-22"},{"lineNumber":63,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser, userInput, String.format(EditMessages.MESSAGE_EDIT_MISSING_FIELD,","lastModifiedDate":"2024-03-22"},{"lineNumber":64,"author":{"gitId":"jamessinmaojun"},"content":" EditCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06"},{"lineNumber":69,"author":{"gitId":"yleeyilin"},"content":" // invalid name","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"yleeyilin"},"content":" String userInput \u003d EditCommand.COMMAND_WORD + \" \" + PREFIX_NAME + \" \"","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"yleeyilin"},"content":" + \" \" + PREFIX_FIELD + \"{\" + PHONE_DESC_AMY","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"yleeyilin"},"content":" + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"jamessinmaojun"},"content":" userInput, String.format(EditMessages.MESSAGE_EDIT_INVALID_NAME, Name.MESSAGE_CONSTRAINTS));","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":79,"author":{"gitId":"yleeyilin"},"content":" String userInput \u003d EditCommand.COMMAND_WORD + \" \" + PREFIX_NAME + \"Person1\"","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"yleeyilin"},"content":" + \" \" + PREFIX_FIELD + \"{\" + INVALID_PHONE_DESC + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"jamessinmaojun"},"content":" String.format(EditMessages.MESSAGE_EDIT_INVALID_FIELD, Phone.MESSAGE_CONSTRAINTS)); // invalid phone","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"yleeyilin"},"content":" userInput \u003d EditCommand.COMMAND_WORD + \" \" + PREFIX_NAME + \"Person1\"","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"yleeyilin"},"content":" + \" \" + PREFIX_FIELD + \"{\" + INVALID_EMAIL_DESC + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"jamessinmaojun"},"content":" String.format(EditMessages.MESSAGE_EDIT_INVALID_FIELD, Email.MESSAGE_CONSTRAINTS)); // invalid email","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"yleeyilin"},"content":" userInput \u003d EditCommand.COMMAND_WORD + \" \" + PREFIX_NAME + \"Person1\"","lastModifiedDate":"2024-03-17"},{"lineNumber":88,"author":{"gitId":"yleeyilin"},"content":" + \" \" + PREFIX_FIELD + \"{\" + INVALID_ADDRESS_DESC + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"jamessinmaojun"},"content":" EditMessages.MESSAGE_EDIT_EMPTY_FIELD); // invalid address","lastModifiedDate":"2024-03-20"},{"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":"yleeyilin"},"content":" userInput \u003d EditCommand.COMMAND_WORD + \" \" + PREFIX_NAME + \"Person1\"","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"yleeyilin"},"content":" + \" \" + PREFIX_FIELD + \"{\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"jamessinmaojun"},"content":" String.format(EditMessages.MESSAGE_EDIT_INVALID_FIELD, Phone.MESSAGE_CONSTRAINTS));","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":98,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04"},{"lineNumber":99,"author":{"gitId":"yleeyilin"},"content":" userInput \u003d EditCommand.COMMAND_WORD + \" \" + PREFIX_NAME + \"Person1\"","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"yleeyilin"},"content":" + \" \" + PREFIX_FIELD + \"{\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"yleeyilin"},"content":" + VALID_ADDRESS_AMY + VALID_PHONE_AMY + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2024-03-20"},{"lineNumber":103,"author":{"gitId":"jamessinmaojun"},"content":" String.format(EditMessages.MESSAGE_EDIT_INVALID_NAME, Name.MESSAGE_CONSTRAINTS));","lastModifiedDate":"2024-03-20"},{"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":"yleeyilin"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(\"Person1\")","lastModifiedDate":"2024-03-17"},{"lineNumber":109,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-05-04"},{"lineNumber":110,"author":{"gitId":"yleeyilin"},"content":" .withTags(VALID_TAG).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"yleeyilin"},"content":" EditCommand expectedCommand \u003d new EditCommand(new Name(\"Person1\"), descriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"yleeyilin"},"content":" String userInput \u003d EditCommand.COMMAND_WORD + \" \" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"yleeyilin"},"content":" + \"Person1\" + \" \" + PREFIX_FIELD + \"{ \"","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"yleeyilin"},"content":" + PersonUtil.getEditPersonDescriptorDetails(descriptor) + \"}\";","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":120,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-04"},{"lineNumber":121,"author":{"gitId":"yleeyilin"},"content":" .withEmail(VALID_EMAIL_AMY).withTags(VALID_TAG).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"yleeyilin"},"content":" EditCommand expectedCommand \u003d new EditCommand(ALICE.getName(), descriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"yleeyilin"},"content":" String userInput \u003d EditCommand.COMMAND_WORD + \" \" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"yleeyilin"},"content":" + ALICE.getName() + \" \" + PREFIX_FIELD + \"{ \"","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"yleeyilin"},"content":" + PersonUtil.getEditPersonDescriptorDetails(descriptor) + \"}\";","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":130,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":131,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2017-05-04"},{"lineNumber":132,"author":{"gitId":"yleeyilin"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder()","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"yleeyilin"},"content":" .withPhone(VALID_PHONE_AMY).withTags(VALID_TAG).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"yleeyilin"},"content":" EditCommand expectedCommand \u003d new EditCommand(CARL.getName(), descriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":135,"author":{"gitId":"yleeyilin"},"content":" String userInput \u003d EditCommand.COMMAND_WORD + \" \" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":136,"author":{"gitId":"yleeyilin"},"content":" + CARL.getName() + \" \" + PREFIX_FIELD + \"{ \"","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"yleeyilin"},"content":" + PersonUtil.getEditPersonDescriptorDetails(descriptor) + \"}\";","lastModifiedDate":"2024-03-17"},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":140,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04"},{"lineNumber":141,"author":{"gitId":"yleeyilin"},"content":" descriptor \u003d new EditPersonDescriptorBuilder()","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"yleeyilin"},"content":" .withEmail(VALID_EMAIL_AMY).withTags(VALID_TAG).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":143,"author":{"gitId":"yleeyilin"},"content":" expectedCommand \u003d new EditCommand(CARL.getName(), descriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":144,"author":{"gitId":"yleeyilin"},"content":" userInput \u003d EditCommand.COMMAND_WORD + \" \" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":145,"author":{"gitId":"yleeyilin"},"content":" + CARL.getName() + \" \" + PREFIX_FIELD + \"{ \"","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"yleeyilin"},"content":" + PersonUtil.getEditPersonDescriptorDetails(descriptor) + \"}\";","lastModifiedDate":"2024-03-17"},{"lineNumber":147,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":149,"author":{"gitId":"-"},"content":" // address","lastModifiedDate":"2017-05-04"},{"lineNumber":150,"author":{"gitId":"yleeyilin"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2024-03-17"},{"lineNumber":151,"author":{"gitId":"yleeyilin"},"content":" .withTags(VALID_TAG).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":152,"author":{"gitId":"yleeyilin"},"content":" expectedCommand \u003d new EditCommand(CARL.getName(), descriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":153,"author":{"gitId":"yleeyilin"},"content":" userInput \u003d EditCommand.COMMAND_WORD + \" \" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":154,"author":{"gitId":"yleeyilin"},"content":" + CARL.getName() + \" \" + PREFIX_FIELD + \"{ \"","lastModifiedDate":"2024-03-17"},{"lineNumber":155,"author":{"gitId":"yleeyilin"},"content":" + PersonUtil.getEditPersonDescriptorDetails(descriptor) + \"}\";","lastModifiedDate":"2024-03-17"},{"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":"","lastModifiedDate":"2017-05-04"},{"lineNumber":159,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":160,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":161,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14"},{"lineNumber":162,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-07-14"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":164,"author":{"gitId":"yleeyilin"},"content":" // invalid followed by valid","lastModifiedDate":"2024-03-17"},{"lineNumber":165,"author":{"gitId":"yleeyilin"},"content":" String userInput \u003d EditCommand.COMMAND_WORD + \" \" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":166,"author":{"gitId":"yleeyilin"},"content":" + CARL.getName() + \" \" + PREFIX_FIELD + \"{\"","lastModifiedDate":"2024-03-17"},{"lineNumber":167,"author":{"gitId":"yleeyilin"},"content":" + INVALID_PHONE_DESC + PHONE_DESC_BOB + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":169,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":171,"author":{"gitId":"yleeyilin"},"content":" // valid followed by invalid","lastModifiedDate":"2024-03-17"},{"lineNumber":172,"author":{"gitId":"yleeyilin"},"content":" userInput \u003d EditCommand.COMMAND_WORD + \" \" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":173,"author":{"gitId":"yleeyilin"},"content":" + CARL.getName() + \" \" + PREFIX_FIELD + \"{\"","lastModifiedDate":"2024-03-17"},{"lineNumber":174,"author":{"gitId":"yleeyilin"},"content":" + PHONE_DESC_BOB + INVALID_PHONE_DESC + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":176,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":178,"author":{"gitId":"-"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":179,"author":{"gitId":"yleeyilin"},"content":" userInput \u003d EditCommand.COMMAND_WORD + \" \" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":180,"author":{"gitId":"yleeyilin"},"content":" + CARL.getName() + \" \" + PREFIX_FIELD + \"{\"","lastModifiedDate":"2024-03-17"},{"lineNumber":181,"author":{"gitId":"yleeyilin"},"content":" + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2024-03-17"},{"lineNumber":182,"author":{"gitId":"yleeyilin"},"content":" + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":184,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":185,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":187,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14"},{"lineNumber":188,"author":{"gitId":"yleeyilin"},"content":" userInput \u003d EditCommand.COMMAND_WORD + \" \" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":189,"author":{"gitId":"yleeyilin"},"content":" + CARL.getName() + \" \" + PREFIX_FIELD + \"{\"","lastModifiedDate":"2024-03-17"},{"lineNumber":190,"author":{"gitId":"yleeyilin"},"content":" + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2024-03-17"},{"lineNumber":191,"author":{"gitId":"yleeyilin"},"content":" + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":193,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":194,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":196,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04"}],"authorContributionMap":{"jamessinmaojun":29,"-":99,"yleeyilin":68}},{"path":"src/test/java/seedu/address/logic/parser/EditMaintainerCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yleeyilin"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_MAINTAINER;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FIELD;","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.testutil.TypicalPersons.ALICEMAINTAINER;","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.testutil.TypicalPersons.CARL;","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"yleeyilin"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.logic.commands.EditMaintainerCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.logic.commands.EditMaintainerCommand.EditMaintainerDescriptor;","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.EditMessages;","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.Messages;","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.testutil.EditMaintainerDescriptorBuilder;","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"yleeyilin"},"content":"public class EditMaintainerCommandParserTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"yleeyilin"},"content":" private EditMaintainerCommandParser parser \u003d new EditMaintainerCommandParser();","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"yleeyilin"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"yleeyilin"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"yleeyilin"},"content":" // no field specified","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"yleeyilin"},"content":" String userInput \u003d EditMaintainerCommand.COMMAND_WORD + \" \" + PREFIX_NAME + \" \"","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"yleeyilin"},"content":" + \" \" + PREFIX_FIELD + \"{\" + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser, userInput, String.format(EditMessages.MESSAGE_EDIT_INVALID_NAME,","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"jamessinmaojun"},"content":" Name.MESSAGE_CONSTRAINTS));","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"jamessinmaojun"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"jamessinmaojun"},"content":" public void parse_missingName_failure() {","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"jamessinmaojun"},"content":" // no field specified","lastModifiedDate":"2024-03-22"},{"lineNumber":54,"author":{"gitId":"jamessinmaojun"},"content":" String userInput \u003d EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2024-03-22"},{"lineNumber":55,"author":{"gitId":"jamessinmaojun"},"content":" + \" \" + PREFIX_FIELD + \"{\" + \" }\";","lastModifiedDate":"2024-03-22"},{"lineNumber":56,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser, userInput, String.format(EditMessages.MESSAGE_EDIT_MISSING_NAME,","lastModifiedDate":"2024-03-22"},{"lineNumber":57,"author":{"gitId":"jamessinmaojun"},"content":" EditMaintainerCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-22"},{"lineNumber":58,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":59,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":60,"author":{"gitId":"jamessinmaojun"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":61,"author":{"gitId":"jamessinmaojun"},"content":" public void parse_missingField_failure() {","lastModifiedDate":"2024-03-22"},{"lineNumber":62,"author":{"gitId":"jamessinmaojun"},"content":" // no field specified","lastModifiedDate":"2024-03-22"},{"lineNumber":63,"author":{"gitId":"jamessinmaojun"},"content":" String userInput \u003d EditCommand.COMMAND_WORD + \" \" + PREFIX_NAME;","lastModifiedDate":"2024-03-22"},{"lineNumber":64,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser, userInput, String.format(EditMessages.MESSAGE_EDIT_MISSING_FIELD,","lastModifiedDate":"2024-03-22"},{"lineNumber":65,"author":{"gitId":"jamessinmaojun"},"content":" EditMaintainerCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-22"},{"lineNumber":66,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":67,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":68,"author":{"gitId":"yleeyilin"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"yleeyilin"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"yleeyilin"},"content":" // invalid name","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"yleeyilin"},"content":" String userInput \u003d EditMaintainerCommand.COMMAND_WORD + \" \" + PREFIX_NAME + \" \"","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"yleeyilin"},"content":" + \" \" + PREFIX_FIELD + \"{\" + PHONE_DESC_AMY","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"yleeyilin"},"content":" + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"jamessinmaojun"},"content":" userInput, String.format(EditMessages.MESSAGE_EDIT_INVALID_NAME, Name.MESSAGE_CONSTRAINTS));","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"yleeyilin"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"yleeyilin"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"yleeyilin"},"content":" String userInput \u003d EditMaintainerCommand.COMMAND_WORD + \" \" + PREFIX_NAME + \"Tom Tan1\"","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"yleeyilin"},"content":" + \" \" + PREFIX_FIELD + \"{\" + INVALID_PHONE_DESC + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"jamessinmaojun"},"content":" String.format(EditMessages.MESSAGE_EDIT_INVALID_FIELD, Phone.MESSAGE_CONSTRAINTS)); // invalid phone","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"yleeyilin"},"content":" userInput \u003d EditMaintainerCommand.COMMAND_WORD + \" \" + PREFIX_NAME + \"Tom Tan1\"","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"yleeyilin"},"content":" + \" \" + PREFIX_FIELD + \"{\" + INVALID_EMAIL_DESC + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"jamessinmaojun"},"content":" String.format(EditMessages.MESSAGE_EDIT_INVALID_FIELD, Email.MESSAGE_CONSTRAINTS)); // invalid email","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"yleeyilin"},"content":" userInput \u003d EditMaintainerCommand.COMMAND_WORD + \" \" + PREFIX_NAME + \"Tom Tan1\"","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"yleeyilin"},"content":" + \" \" + PREFIX_FIELD + \"{\" + INVALID_ADDRESS_DESC + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":90,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"jamessinmaojun"},"content":" EditMessages.MESSAGE_EDIT_EMPTY_FIELD); // invalid address","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"yleeyilin"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"yleeyilin"},"content":" userInput \u003d EditMaintainerCommand.COMMAND_WORD + \" \" + PREFIX_NAME + \"Tom Tan1\"","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"yleeyilin"},"content":" + \" \" + PREFIX_FIELD + \"{\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"jamessinmaojun"},"content":" String.format(EditMessages.MESSAGE_EDIT_INVALID_FIELD, Phone.MESSAGE_CONSTRAINTS));","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"yleeyilin"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"yleeyilin"},"content":" userInput \u003d EditMaintainerCommand.COMMAND_WORD + \" \" + PREFIX_NAME + \"Tom Tan1\"","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"yleeyilin"},"content":" + \" \" + PREFIX_FIELD + \"{\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"yleeyilin"},"content":" + VALID_ADDRESS_AMY + VALID_PHONE_AMY + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"jamessinmaojun"},"content":" String.format(EditMessages.MESSAGE_EDIT_INVALID_NAME, Name.MESSAGE_CONSTRAINTS));","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"yleeyilin"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"yleeyilin"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":109,"author":{"gitId":"yleeyilin"},"content":" EditMaintainerDescriptor descriptor \u003d new EditMaintainerDescriptorBuilder().withName(\"Tom Tan1\")","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"yleeyilin"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"yleeyilin"},"content":" .withTags(VALID_TAG_MAINTAINER).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"yleeyilin"},"content":" EditMaintainerCommand expectedCommand \u003d new EditMaintainerCommand(new Name(\"Tom Tan1\"), descriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"yleeyilin"},"content":" String userInput \u003d EditMaintainerCommand.COMMAND_WORD + \" \" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"yleeyilin"},"content":" + \"Tom Tan1\" + \" \" + PREFIX_FIELD + \"{ \"","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"yleeyilin"},"content":" + PersonUtil.getEditMaintainerDescriptorDetails(descriptor) + \"}\";","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"yleeyilin"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"yleeyilin"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"yleeyilin"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"yleeyilin"},"content":" EditMaintainerDescriptor descriptor \u003d new EditMaintainerDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"yleeyilin"},"content":" .withEmail(VALID_EMAIL_AMY).withTags(VALID_TAG_MAINTAINER).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"yleeyilin"},"content":" EditMaintainerCommand expectedCommand \u003d new EditMaintainerCommand(ALICEMAINTAINER.getName(), descriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"yleeyilin"},"content":" String userInput \u003d EditMaintainerCommand.COMMAND_WORD + \" \" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"yleeyilin"},"content":" + ALICEMAINTAINER.getName() + \" \" + PREFIX_FIELD + \"{ \"","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"yleeyilin"},"content":" + PersonUtil.getEditMaintainerDescriptorDetails(descriptor) + \"}\";","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"yleeyilin"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":129,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":130,"author":{"gitId":"yleeyilin"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"yleeyilin"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"yleeyilin"},"content":" // phone","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"yleeyilin"},"content":" EditMaintainerDescriptor descriptor \u003d new EditMaintainerDescriptorBuilder()","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"yleeyilin"},"content":" .withPhone(VALID_PHONE_AMY).withTags(VALID_TAG_MAINTAINER).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":135,"author":{"gitId":"yleeyilin"},"content":" EditMaintainerCommand expectedCommand \u003d new EditMaintainerCommand(CARL.getName(), descriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":136,"author":{"gitId":"yleeyilin"},"content":" String userInput \u003d EditMaintainerCommand.COMMAND_WORD + \" \" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"yleeyilin"},"content":" + CARL.getName() + \" \" + PREFIX_FIELD + \"{ \"","lastModifiedDate":"2024-03-17"},{"lineNumber":138,"author":{"gitId":"yleeyilin"},"content":" + PersonUtil.getEditMaintainerDescriptorDetails(descriptor) + \"}\";","lastModifiedDate":"2024-03-17"},{"lineNumber":139,"author":{"gitId":"yleeyilin"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-17"},{"lineNumber":140,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":141,"author":{"gitId":"yleeyilin"},"content":" // email","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"yleeyilin"},"content":" descriptor \u003d new EditMaintainerDescriptorBuilder()","lastModifiedDate":"2024-03-17"},{"lineNumber":143,"author":{"gitId":"yleeyilin"},"content":" .withEmail(VALID_EMAIL_AMY).withTags(VALID_TAG_MAINTAINER).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":144,"author":{"gitId":"yleeyilin"},"content":" expectedCommand \u003d new EditMaintainerCommand(CARL.getName(), descriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":145,"author":{"gitId":"yleeyilin"},"content":" userInput \u003d EditMaintainerCommand.COMMAND_WORD + \" \" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"yleeyilin"},"content":" + CARL.getName() + \" \" + PREFIX_FIELD + \"{ \"","lastModifiedDate":"2024-03-17"},{"lineNumber":147,"author":{"gitId":"yleeyilin"},"content":" + PersonUtil.getEditMaintainerDescriptorDetails(descriptor) + \"}\";","lastModifiedDate":"2024-03-17"},{"lineNumber":148,"author":{"gitId":"yleeyilin"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-17"},{"lineNumber":149,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":150,"author":{"gitId":"yleeyilin"},"content":" // address","lastModifiedDate":"2024-03-17"},{"lineNumber":151,"author":{"gitId":"yleeyilin"},"content":" descriptor \u003d new EditMaintainerDescriptorBuilder().withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2024-03-17"},{"lineNumber":152,"author":{"gitId":"yleeyilin"},"content":" .withTags(VALID_TAG_MAINTAINER).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":153,"author":{"gitId":"yleeyilin"},"content":" expectedCommand \u003d new EditMaintainerCommand(CARL.getName(), descriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":154,"author":{"gitId":"yleeyilin"},"content":" userInput \u003d EditMaintainerCommand.COMMAND_WORD + \" \" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":155,"author":{"gitId":"yleeyilin"},"content":" + CARL.getName() + \" \" + PREFIX_FIELD + \"{ \"","lastModifiedDate":"2024-03-17"},{"lineNumber":156,"author":{"gitId":"yleeyilin"},"content":" + PersonUtil.getEditMaintainerDescriptorDetails(descriptor) + \"}\";","lastModifiedDate":"2024-03-17"},{"lineNumber":157,"author":{"gitId":"yleeyilin"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-17"},{"lineNumber":158,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":159,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":160,"author":{"gitId":"yleeyilin"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":161,"author":{"gitId":"yleeyilin"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2024-03-17"},{"lineNumber":162,"author":{"gitId":"yleeyilin"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2024-03-17"},{"lineNumber":163,"author":{"gitId":"yleeyilin"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2024-03-17"},{"lineNumber":164,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":165,"author":{"gitId":"yleeyilin"},"content":" // invalid followed by valid","lastModifiedDate":"2024-03-17"},{"lineNumber":166,"author":{"gitId":"yleeyilin"},"content":" String userInput \u003d EditMaintainerCommand.COMMAND_WORD + \" \" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":167,"author":{"gitId":"yleeyilin"},"content":" + CARL.getName() + \" \" + PREFIX_FIELD + \"{\"","lastModifiedDate":"2024-03-17"},{"lineNumber":168,"author":{"gitId":"yleeyilin"},"content":" + INVALID_PHONE_DESC + PHONE_DESC_BOB + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":169,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":170,"author":{"gitId":"yleeyilin"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2024-03-17"},{"lineNumber":171,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":172,"author":{"gitId":"yleeyilin"},"content":" // valid followed by invalid","lastModifiedDate":"2024-03-17"},{"lineNumber":173,"author":{"gitId":"yleeyilin"},"content":" userInput \u003d EditMaintainerCommand.COMMAND_WORD + \" \" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":174,"author":{"gitId":"yleeyilin"},"content":" + CARL.getName() + \" \" + PREFIX_FIELD + \"{\"","lastModifiedDate":"2024-03-17"},{"lineNumber":175,"author":{"gitId":"yleeyilin"},"content":" + PHONE_DESC_BOB + INVALID_PHONE_DESC + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":176,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":177,"author":{"gitId":"yleeyilin"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2024-03-17"},{"lineNumber":178,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":179,"author":{"gitId":"yleeyilin"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2024-03-17"},{"lineNumber":180,"author":{"gitId":"yleeyilin"},"content":" userInput \u003d EditMaintainerCommand.COMMAND_WORD + \" \" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":181,"author":{"gitId":"yleeyilin"},"content":" + CARL.getName() + \" \" + PREFIX_FIELD + \"{\"","lastModifiedDate":"2024-03-17"},{"lineNumber":182,"author":{"gitId":"yleeyilin"},"content":" + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2024-03-17"},{"lineNumber":183,"author":{"gitId":"yleeyilin"},"content":" + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":184,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":185,"author":{"gitId":"yleeyilin"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2024-03-17"},{"lineNumber":186,"author":{"gitId":"yleeyilin"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2024-03-17"},{"lineNumber":187,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":188,"author":{"gitId":"yleeyilin"},"content":" // multiple invalid values","lastModifiedDate":"2024-03-17"},{"lineNumber":189,"author":{"gitId":"yleeyilin"},"content":" userInput \u003d EditMaintainerCommand.COMMAND_WORD + \" \" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":190,"author":{"gitId":"yleeyilin"},"content":" + CARL.getName() + \" \" + PREFIX_FIELD + \"{\"","lastModifiedDate":"2024-03-17"},{"lineNumber":191,"author":{"gitId":"yleeyilin"},"content":" + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2024-03-17"},{"lineNumber":192,"author":{"gitId":"yleeyilin"},"content":" + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":193,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":194,"author":{"gitId":"yleeyilin"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2024-03-17"},{"lineNumber":195,"author":{"gitId":"yleeyilin"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2024-03-17"},{"lineNumber":196,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":197,"author":{"gitId":"yleeyilin"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"jamessinmaojun":34,"yleeyilin":163}},{"path":"src/test/java/seedu/address/logic/parser/EditStaffCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yleeyilin"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_STAFF;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FIELD;","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.testutil.TypicalPersons.ALICESTAFF;","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.testutil.TypicalPersons.CARL;","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"yleeyilin"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.logic.commands.EditStaffCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.logic.commands.EditStaffCommand.EditStaffDescriptor;","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.EditMessages;","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.Messages;","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.testutil.EditStaffDescriptorBuilder;","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"yleeyilin"},"content":"public class EditStaffCommandParserTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"yleeyilin"},"content":" private EditStaffCommandParser parser \u003d new EditStaffCommandParser();","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"yleeyilin"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"yleeyilin"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"yleeyilin"},"content":" // no field specified","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"yleeyilin"},"content":" String userInput \u003d EditStaffCommand.COMMAND_WORD + \" \" + PREFIX_NAME + \" \"","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"yleeyilin"},"content":" + \" \" + PREFIX_FIELD + \"{\" + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser, userInput, String.format(EditMessages.MESSAGE_EDIT_INVALID_NAME,","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"jamessinmaojun"},"content":" Name.MESSAGE_CONSTRAINTS));","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"jamessinmaojun"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"jamessinmaojun"},"content":" public void parse_missingName_failure() {","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"jamessinmaojun"},"content":" // no field specified","lastModifiedDate":"2024-03-22"},{"lineNumber":54,"author":{"gitId":"jamessinmaojun"},"content":" String userInput \u003d EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2024-03-22"},{"lineNumber":55,"author":{"gitId":"jamessinmaojun"},"content":" + \" \" + PREFIX_FIELD + \"{\" + \" }\";","lastModifiedDate":"2024-03-22"},{"lineNumber":56,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser, userInput, String.format(EditMessages.MESSAGE_EDIT_MISSING_NAME,","lastModifiedDate":"2024-03-22"},{"lineNumber":57,"author":{"gitId":"jamessinmaojun"},"content":" EditStaffCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-22"},{"lineNumber":58,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":59,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":60,"author":{"gitId":"jamessinmaojun"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":61,"author":{"gitId":"jamessinmaojun"},"content":" public void parse_missingField_failure() {","lastModifiedDate":"2024-03-22"},{"lineNumber":62,"author":{"gitId":"jamessinmaojun"},"content":" // no field specified","lastModifiedDate":"2024-03-22"},{"lineNumber":63,"author":{"gitId":"jamessinmaojun"},"content":" String userInput \u003d EditCommand.COMMAND_WORD + \" \" + PREFIX_NAME;","lastModifiedDate":"2024-03-22"},{"lineNumber":64,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser, userInput, String.format(EditMessages.MESSAGE_EDIT_MISSING_FIELD,","lastModifiedDate":"2024-03-22"},{"lineNumber":65,"author":{"gitId":"jamessinmaojun"},"content":" EditStaffCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-22"},{"lineNumber":66,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":67,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":68,"author":{"gitId":"yleeyilin"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"yleeyilin"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"yleeyilin"},"content":" // invalid name","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"yleeyilin"},"content":" String userInput \u003d EditStaffCommand.COMMAND_WORD + \" \" + PREFIX_NAME + \" \"","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"yleeyilin"},"content":" + \" \" + PREFIX_FIELD + \"{\" + PHONE_DESC_AMY","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"yleeyilin"},"content":" + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"jamessinmaojun"},"content":" userInput, String.format(EditMessages.MESSAGE_EDIT_INVALID_NAME, Name.MESSAGE_CONSTRAINTS));","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"yleeyilin"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"yleeyilin"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"yleeyilin"},"content":" String userInput \u003d EditStaffCommand.COMMAND_WORD + \" \" + PREFIX_NAME + \"Staff1\"","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"yleeyilin"},"content":" + \" \" + PREFIX_FIELD + \"{\" + INVALID_PHONE_DESC + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"jamessinmaojun"},"content":" String.format(EditMessages.MESSAGE_EDIT_INVALID_FIELD, Phone.MESSAGE_CONSTRAINTS)); // invalid phone","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"yleeyilin"},"content":" userInput \u003d EditStaffCommand.COMMAND_WORD + \" \" + PREFIX_NAME + \"Staff1\"","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"yleeyilin"},"content":" + \" \" + PREFIX_FIELD + \"{\" + INVALID_EMAIL_DESC + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"jamessinmaojun"},"content":" String.format(EditMessages.MESSAGE_EDIT_INVALID_FIELD, Email.MESSAGE_CONSTRAINTS)); // invalid email","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"yleeyilin"},"content":" userInput \u003d EditStaffCommand.COMMAND_WORD + \" \" + PREFIX_NAME + \"Staff1\"","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"yleeyilin"},"content":" + \" \" + PREFIX_FIELD + \"{\" + INVALID_ADDRESS_DESC + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":90,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"jamessinmaojun"},"content":" EditMessages.MESSAGE_EDIT_EMPTY_FIELD); // invalid address","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"yleeyilin"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"yleeyilin"},"content":" userInput \u003d EditStaffCommand.COMMAND_WORD + \" \" + PREFIX_NAME + \"Staff1\"","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"yleeyilin"},"content":" + \" \" + PREFIX_FIELD + \"{\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"jamessinmaojun"},"content":" String.format(EditMessages.MESSAGE_EDIT_INVALID_FIELD, Phone.MESSAGE_CONSTRAINTS));","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"yleeyilin"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"yleeyilin"},"content":" userInput \u003d EditStaffCommand.COMMAND_WORD + \" \" + PREFIX_NAME + \"Staff1\"","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"yleeyilin"},"content":" + \" \" + PREFIX_FIELD + \"{\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"yleeyilin"},"content":" + VALID_ADDRESS_AMY + VALID_PHONE_AMY + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"jamessinmaojun"},"content":" String.format(EditMessages.MESSAGE_EDIT_INVALID_NAME, Name.MESSAGE_CONSTRAINTS));","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"yleeyilin"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"yleeyilin"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":109,"author":{"gitId":"yleeyilin"},"content":" EditStaffDescriptor descriptor \u003d new EditStaffDescriptorBuilder().withName(\"Staff1\")","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"yleeyilin"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"yleeyilin"},"content":" .withTags(VALID_TAG_STAFF).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"yleeyilin"},"content":" EditStaffCommand expectedCommand \u003d new EditStaffCommand(new Name(\"Staff1\"), descriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"yleeyilin"},"content":" String userInput \u003d EditStaffCommand.COMMAND_WORD + \" \" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"yleeyilin"},"content":" + \"Staff1\" + \" \" + PREFIX_FIELD + \"{ \"","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"yleeyilin"},"content":" + PersonUtil.getEditStaffDescriptorDetails(descriptor) + \"}\";","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"yleeyilin"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"yleeyilin"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"yleeyilin"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"yleeyilin"},"content":" EditStaffDescriptor descriptor \u003d new EditStaffDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"yleeyilin"},"content":" .withEmail(VALID_EMAIL_AMY).withTags(VALID_TAG_STAFF).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"yleeyilin"},"content":" EditStaffCommand expectedCommand \u003d new EditStaffCommand(ALICESTAFF.getName(), descriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"yleeyilin"},"content":" String userInput \u003d EditStaffCommand.COMMAND_WORD + \" \" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"yleeyilin"},"content":" + ALICESTAFF.getName() + \" \" + PREFIX_FIELD + \"{ \"","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"yleeyilin"},"content":" + PersonUtil.getEditStaffDescriptorDetails(descriptor) + \"}\";","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"yleeyilin"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":129,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":130,"author":{"gitId":"yleeyilin"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"yleeyilin"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"yleeyilin"},"content":" // phone","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"yleeyilin"},"content":" EditStaffDescriptor descriptor \u003d new EditStaffDescriptorBuilder()","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"yleeyilin"},"content":" .withPhone(VALID_PHONE_AMY).withTags(VALID_TAG_STAFF).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":135,"author":{"gitId":"yleeyilin"},"content":" EditStaffCommand expectedCommand \u003d new EditStaffCommand(CARL.getName(), descriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":136,"author":{"gitId":"yleeyilin"},"content":" String userInput \u003d EditStaffCommand.COMMAND_WORD + \" \" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"yleeyilin"},"content":" + CARL.getName() + \" \" + PREFIX_FIELD + \"{ \"","lastModifiedDate":"2024-03-17"},{"lineNumber":138,"author":{"gitId":"yleeyilin"},"content":" + PersonUtil.getEditStaffDescriptorDetails(descriptor) + \"}\";","lastModifiedDate":"2024-03-17"},{"lineNumber":139,"author":{"gitId":"yleeyilin"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-17"},{"lineNumber":140,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":141,"author":{"gitId":"yleeyilin"},"content":" // email","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"yleeyilin"},"content":" descriptor \u003d new EditStaffDescriptorBuilder()","lastModifiedDate":"2024-03-17"},{"lineNumber":143,"author":{"gitId":"yleeyilin"},"content":" .withEmail(VALID_EMAIL_AMY).withTags(VALID_TAG_STAFF).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":144,"author":{"gitId":"yleeyilin"},"content":" expectedCommand \u003d new EditStaffCommand(CARL.getName(), descriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":145,"author":{"gitId":"yleeyilin"},"content":" userInput \u003d EditStaffCommand.COMMAND_WORD + \" \" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"yleeyilin"},"content":" + CARL.getName() + \" \" + PREFIX_FIELD + \"{ \"","lastModifiedDate":"2024-03-17"},{"lineNumber":147,"author":{"gitId":"yleeyilin"},"content":" + PersonUtil.getEditStaffDescriptorDetails(descriptor) + \"}\";","lastModifiedDate":"2024-03-17"},{"lineNumber":148,"author":{"gitId":"yleeyilin"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-17"},{"lineNumber":149,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":150,"author":{"gitId":"yleeyilin"},"content":" // address","lastModifiedDate":"2024-03-17"},{"lineNumber":151,"author":{"gitId":"yleeyilin"},"content":" descriptor \u003d new EditStaffDescriptorBuilder().withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2024-03-17"},{"lineNumber":152,"author":{"gitId":"yleeyilin"},"content":" .withTags(VALID_TAG_STAFF).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":153,"author":{"gitId":"yleeyilin"},"content":" expectedCommand \u003d new EditStaffCommand(CARL.getName(), descriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":154,"author":{"gitId":"yleeyilin"},"content":" userInput \u003d EditStaffCommand.COMMAND_WORD + \" \" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":155,"author":{"gitId":"yleeyilin"},"content":" + CARL.getName() + \" \" + PREFIX_FIELD + \"{ \"","lastModifiedDate":"2024-03-17"},{"lineNumber":156,"author":{"gitId":"yleeyilin"},"content":" + PersonUtil.getEditStaffDescriptorDetails(descriptor) + \"}\";","lastModifiedDate":"2024-03-17"},{"lineNumber":157,"author":{"gitId":"yleeyilin"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-17"},{"lineNumber":158,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":159,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":160,"author":{"gitId":"yleeyilin"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":161,"author":{"gitId":"yleeyilin"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2024-03-17"},{"lineNumber":162,"author":{"gitId":"yleeyilin"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2024-03-17"},{"lineNumber":163,"author":{"gitId":"yleeyilin"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2024-03-17"},{"lineNumber":164,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":165,"author":{"gitId":"yleeyilin"},"content":" // invalid followed by valid","lastModifiedDate":"2024-03-17"},{"lineNumber":166,"author":{"gitId":"yleeyilin"},"content":" String userInput \u003d EditStaffCommand.COMMAND_WORD + \" \" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":167,"author":{"gitId":"yleeyilin"},"content":" + CARL.getName() + \" \" + PREFIX_FIELD + \"{\"","lastModifiedDate":"2024-03-17"},{"lineNumber":168,"author":{"gitId":"yleeyilin"},"content":" + INVALID_PHONE_DESC + PHONE_DESC_BOB + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":169,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":170,"author":{"gitId":"yleeyilin"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2024-03-17"},{"lineNumber":171,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":172,"author":{"gitId":"yleeyilin"},"content":" // valid followed by invalid","lastModifiedDate":"2024-03-17"},{"lineNumber":173,"author":{"gitId":"yleeyilin"},"content":" userInput \u003d EditStaffCommand.COMMAND_WORD + \" \" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":174,"author":{"gitId":"yleeyilin"},"content":" + CARL.getName() + \" \" + PREFIX_FIELD + \"{\"","lastModifiedDate":"2024-03-17"},{"lineNumber":175,"author":{"gitId":"yleeyilin"},"content":" + PHONE_DESC_BOB + INVALID_PHONE_DESC + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":176,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":177,"author":{"gitId":"yleeyilin"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2024-03-17"},{"lineNumber":178,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":179,"author":{"gitId":"yleeyilin"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2024-03-17"},{"lineNumber":180,"author":{"gitId":"yleeyilin"},"content":" userInput \u003d EditStaffCommand.COMMAND_WORD + \" \" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":181,"author":{"gitId":"yleeyilin"},"content":" + CARL.getName() + \" \" + PREFIX_FIELD + \"{\"","lastModifiedDate":"2024-03-17"},{"lineNumber":182,"author":{"gitId":"yleeyilin"},"content":" + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2024-03-17"},{"lineNumber":183,"author":{"gitId":"yleeyilin"},"content":" + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":184,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":185,"author":{"gitId":"yleeyilin"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2024-03-17"},{"lineNumber":186,"author":{"gitId":"yleeyilin"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2024-03-17"},{"lineNumber":187,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":188,"author":{"gitId":"yleeyilin"},"content":" // multiple invalid values","lastModifiedDate":"2024-03-17"},{"lineNumber":189,"author":{"gitId":"yleeyilin"},"content":" userInput \u003d EditStaffCommand.COMMAND_WORD + \" \" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":190,"author":{"gitId":"yleeyilin"},"content":" + CARL.getName() + \" \" + PREFIX_FIELD + \"{\"","lastModifiedDate":"2024-03-17"},{"lineNumber":191,"author":{"gitId":"yleeyilin"},"content":" + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2024-03-17"},{"lineNumber":192,"author":{"gitId":"yleeyilin"},"content":" + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":193,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":194,"author":{"gitId":"yleeyilin"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2024-03-17"},{"lineNumber":195,"author":{"gitId":"yleeyilin"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2024-03-17"},{"lineNumber":196,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":197,"author":{"gitId":"yleeyilin"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"jamessinmaojun":34,"yleeyilin":163}},{"path":"src/test/java/seedu/address/logic/parser/EditSupplierCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yleeyilin"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_SUPPLIER;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FIELD;","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.testutil.TypicalPersons.ALICESUPPLIER;","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.testutil.TypicalPersons.CARL;","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"yleeyilin"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.logic.commands.EditSupplierCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.logic.commands.EditSupplierCommand.EditSupplierDescriptor;","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.EditMessages;","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.Messages;","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.testutil.EditSupplierDescriptorBuilder;","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"yleeyilin"},"content":"public class EditSupplierCommandParserTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"yleeyilin"},"content":" private EditSupplierCommandParser parser \u003d new EditSupplierCommandParser();","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"yleeyilin"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"yleeyilin"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"yleeyilin"},"content":" // no field specified","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"yleeyilin"},"content":" String userInput \u003d EditSupplierCommand.COMMAND_WORD + \" \" + PREFIX_NAME + \" \"","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"yleeyilin"},"content":" + \" \" + PREFIX_FIELD + \"{\" + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser, userInput, String.format(EditMessages.MESSAGE_EDIT_INVALID_NAME,","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"jamessinmaojun"},"content":" Name.MESSAGE_CONSTRAINTS));","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"jamessinmaojun"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"jamessinmaojun"},"content":" public void parse_missingName_failure() {","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"jamessinmaojun"},"content":" // no field specified","lastModifiedDate":"2024-03-22"},{"lineNumber":54,"author":{"gitId":"jamessinmaojun"},"content":" String userInput \u003d EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2024-03-22"},{"lineNumber":55,"author":{"gitId":"jamessinmaojun"},"content":" + \" \" + PREFIX_FIELD + \"{\" + \" }\";","lastModifiedDate":"2024-03-22"},{"lineNumber":56,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser, userInput, String.format(EditMessages.MESSAGE_EDIT_MISSING_NAME,","lastModifiedDate":"2024-03-22"},{"lineNumber":57,"author":{"gitId":"jamessinmaojun"},"content":" EditSupplierCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-22"},{"lineNumber":58,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":59,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":60,"author":{"gitId":"jamessinmaojun"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":61,"author":{"gitId":"jamessinmaojun"},"content":" public void parse_missingField_failure() {","lastModifiedDate":"2024-03-22"},{"lineNumber":62,"author":{"gitId":"jamessinmaojun"},"content":" // no field specified","lastModifiedDate":"2024-03-22"},{"lineNumber":63,"author":{"gitId":"jamessinmaojun"},"content":" String userInput \u003d EditCommand.COMMAND_WORD + \" \" + PREFIX_NAME;","lastModifiedDate":"2024-03-22"},{"lineNumber":64,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser, userInput, String.format(EditMessages.MESSAGE_EDIT_MISSING_FIELD,","lastModifiedDate":"2024-03-22"},{"lineNumber":65,"author":{"gitId":"jamessinmaojun"},"content":" EditSupplierCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-22"},{"lineNumber":66,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":67,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":68,"author":{"gitId":"yleeyilin"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"yleeyilin"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"yleeyilin"},"content":" // invalid name","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"yleeyilin"},"content":" String userInput \u003d EditSupplierCommand.COMMAND_WORD + \" \" + PREFIX_NAME + \" \"","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"yleeyilin"},"content":" + \" \" + PREFIX_FIELD + \"{\" + PHONE_DESC_AMY","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"yleeyilin"},"content":" + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"jamessinmaojun"},"content":" userInput, String.format(EditMessages.MESSAGE_EDIT_INVALID_NAME, Name.MESSAGE_CONSTRAINTS));","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"yleeyilin"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"yleeyilin"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"yleeyilin"},"content":" String userInput \u003d EditSupplierCommand.COMMAND_WORD + \" \" + PREFIX_NAME + \"Supplier1\"","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"yleeyilin"},"content":" + \" \" + PREFIX_FIELD + \"{\" + INVALID_PHONE_DESC + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"jamessinmaojun"},"content":" String.format(EditMessages.MESSAGE_EDIT_INVALID_FIELD, Phone.MESSAGE_CONSTRAINTS)); // invalid phone","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"yleeyilin"},"content":" userInput \u003d EditSupplierCommand.COMMAND_WORD + \" \" + PREFIX_NAME + \"Supplier1\"","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"yleeyilin"},"content":" + \" \" + PREFIX_FIELD + \"{\" + INVALID_EMAIL_DESC + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"jamessinmaojun"},"content":" String.format(EditMessages.MESSAGE_EDIT_INVALID_FIELD, Email.MESSAGE_CONSTRAINTS)); // invalid email","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"yleeyilin"},"content":" userInput \u003d EditSupplierCommand.COMMAND_WORD + \" \" + PREFIX_NAME + \"Supplier1\"","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"yleeyilin"},"content":" + \" \" + PREFIX_FIELD + \"{\" + INVALID_ADDRESS_DESC + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":90,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"jamessinmaojun"},"content":" EditMessages.MESSAGE_EDIT_EMPTY_FIELD); // invalid address","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"yleeyilin"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"yleeyilin"},"content":" userInput \u003d EditSupplierCommand.COMMAND_WORD + \" \" + PREFIX_NAME + \"Supplier1\"","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"yleeyilin"},"content":" + \" \" + PREFIX_FIELD + \"{\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"jamessinmaojun"},"content":" String.format(EditMessages.MESSAGE_EDIT_INVALID_FIELD, Phone.MESSAGE_CONSTRAINTS));","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"yleeyilin"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"yleeyilin"},"content":" userInput \u003d EditSupplierCommand.COMMAND_WORD + \" \" + PREFIX_NAME + \"Supplier1\"","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"yleeyilin"},"content":" + \" \" + PREFIX_FIELD + \"{\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"yleeyilin"},"content":" + VALID_ADDRESS_AMY + VALID_PHONE_AMY + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"jamessinmaojun"},"content":" String.format(EditMessages.MESSAGE_EDIT_INVALID_NAME, Name.MESSAGE_CONSTRAINTS));","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"yleeyilin"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"yleeyilin"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":109,"author":{"gitId":"yleeyilin"},"content":" EditSupplierDescriptor descriptor \u003d new EditSupplierDescriptorBuilder().withName(\"Supplier1\")","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"yleeyilin"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"yleeyilin"},"content":" .withTags(VALID_TAG_SUPPLIER).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"yleeyilin"},"content":" EditSupplierCommand expectedCommand \u003d new EditSupplierCommand(new Name(\"Supplier1\"), descriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"yleeyilin"},"content":" String userInput \u003d EditSupplierCommand.COMMAND_WORD + \" \" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"yleeyilin"},"content":" + \"Supplier1\" + \" \" + PREFIX_FIELD + \"{ \"","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"yleeyilin"},"content":" + PersonUtil.getEditSupplierDescriptorDetails(descriptor) + \"}\";","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"yleeyilin"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"yleeyilin"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"yleeyilin"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"yleeyilin"},"content":" EditSupplierDescriptor descriptor \u003d new EditSupplierDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"yleeyilin"},"content":" .withEmail(VALID_EMAIL_AMY).withTags(VALID_TAG_SUPPLIER).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"yleeyilin"},"content":" EditSupplierCommand expectedCommand \u003d new EditSupplierCommand(ALICESUPPLIER.getName(), descriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"yleeyilin"},"content":" String userInput \u003d EditSupplierCommand.COMMAND_WORD + \" \" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"yleeyilin"},"content":" + ALICESUPPLIER.getName() + \" \" + PREFIX_FIELD + \"{ \"","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"yleeyilin"},"content":" + PersonUtil.getEditSupplierDescriptorDetails(descriptor) + \"}\";","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"yleeyilin"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":129,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":130,"author":{"gitId":"yleeyilin"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"yleeyilin"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"yleeyilin"},"content":" // phone","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"yleeyilin"},"content":" EditSupplierDescriptor descriptor \u003d new EditSupplierDescriptorBuilder()","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"yleeyilin"},"content":" .withPhone(VALID_PHONE_AMY).withTags(VALID_TAG_SUPPLIER).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":135,"author":{"gitId":"yleeyilin"},"content":" EditSupplierCommand expectedCommand \u003d new EditSupplierCommand(CARL.getName(), descriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":136,"author":{"gitId":"yleeyilin"},"content":" String userInput \u003d EditSupplierCommand.COMMAND_WORD + \" \" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"yleeyilin"},"content":" + CARL.getName() + \" \" + PREFIX_FIELD + \"{ \"","lastModifiedDate":"2024-03-17"},{"lineNumber":138,"author":{"gitId":"yleeyilin"},"content":" + PersonUtil.getEditSupplierDescriptorDetails(descriptor) + \"}\";","lastModifiedDate":"2024-03-17"},{"lineNumber":139,"author":{"gitId":"yleeyilin"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-17"},{"lineNumber":140,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":141,"author":{"gitId":"yleeyilin"},"content":" // email","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"yleeyilin"},"content":" descriptor \u003d new EditSupplierDescriptorBuilder()","lastModifiedDate":"2024-03-17"},{"lineNumber":143,"author":{"gitId":"yleeyilin"},"content":" .withEmail(VALID_EMAIL_AMY).withTags(VALID_TAG_SUPPLIER).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":144,"author":{"gitId":"yleeyilin"},"content":" expectedCommand \u003d new EditSupplierCommand(CARL.getName(), descriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":145,"author":{"gitId":"yleeyilin"},"content":" userInput \u003d EditSupplierCommand.COMMAND_WORD + \" \" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"yleeyilin"},"content":" + CARL.getName() + \" \" + PREFIX_FIELD + \"{ \"","lastModifiedDate":"2024-03-17"},{"lineNumber":147,"author":{"gitId":"yleeyilin"},"content":" + PersonUtil.getEditSupplierDescriptorDetails(descriptor) + \"}\";","lastModifiedDate":"2024-03-17"},{"lineNumber":148,"author":{"gitId":"yleeyilin"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-17"},{"lineNumber":149,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":150,"author":{"gitId":"yleeyilin"},"content":" // address","lastModifiedDate":"2024-03-17"},{"lineNumber":151,"author":{"gitId":"yleeyilin"},"content":" descriptor \u003d new EditSupplierDescriptorBuilder().withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2024-03-17"},{"lineNumber":152,"author":{"gitId":"yleeyilin"},"content":" .withTags(VALID_TAG_SUPPLIER).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":153,"author":{"gitId":"yleeyilin"},"content":" expectedCommand \u003d new EditSupplierCommand(CARL.getName(), descriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":154,"author":{"gitId":"yleeyilin"},"content":" userInput \u003d EditSupplierCommand.COMMAND_WORD + \" \" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":155,"author":{"gitId":"yleeyilin"},"content":" + CARL.getName() + \" \" + PREFIX_FIELD + \"{ \"","lastModifiedDate":"2024-03-17"},{"lineNumber":156,"author":{"gitId":"yleeyilin"},"content":" + PersonUtil.getEditSupplierDescriptorDetails(descriptor) + \"}\";","lastModifiedDate":"2024-03-17"},{"lineNumber":157,"author":{"gitId":"yleeyilin"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-17"},{"lineNumber":158,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":159,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":160,"author":{"gitId":"yleeyilin"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":161,"author":{"gitId":"yleeyilin"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2024-03-17"},{"lineNumber":162,"author":{"gitId":"yleeyilin"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2024-03-17"},{"lineNumber":163,"author":{"gitId":"yleeyilin"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2024-03-17"},{"lineNumber":164,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":165,"author":{"gitId":"yleeyilin"},"content":" // invalid followed by valid","lastModifiedDate":"2024-03-17"},{"lineNumber":166,"author":{"gitId":"yleeyilin"},"content":" String userInput \u003d EditSupplierCommand.COMMAND_WORD + \" \" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":167,"author":{"gitId":"yleeyilin"},"content":" + CARL.getName() + \" \" + PREFIX_FIELD + \"{\"","lastModifiedDate":"2024-03-17"},{"lineNumber":168,"author":{"gitId":"yleeyilin"},"content":" + INVALID_PHONE_DESC + PHONE_DESC_BOB + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":169,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":170,"author":{"gitId":"yleeyilin"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2024-03-17"},{"lineNumber":171,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":172,"author":{"gitId":"yleeyilin"},"content":" // valid followed by invalid","lastModifiedDate":"2024-03-17"},{"lineNumber":173,"author":{"gitId":"yleeyilin"},"content":" userInput \u003d EditSupplierCommand.COMMAND_WORD + \" \" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":174,"author":{"gitId":"yleeyilin"},"content":" + CARL.getName() + \" \" + PREFIX_FIELD + \"{\"","lastModifiedDate":"2024-03-17"},{"lineNumber":175,"author":{"gitId":"yleeyilin"},"content":" + PHONE_DESC_BOB + INVALID_PHONE_DESC + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":176,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":177,"author":{"gitId":"yleeyilin"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2024-03-17"},{"lineNumber":178,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":179,"author":{"gitId":"yleeyilin"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2024-03-17"},{"lineNumber":180,"author":{"gitId":"yleeyilin"},"content":" userInput \u003d EditSupplierCommand.COMMAND_WORD + \" \" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":181,"author":{"gitId":"yleeyilin"},"content":" + CARL.getName() + \" \" + PREFIX_FIELD + \"{\"","lastModifiedDate":"2024-03-17"},{"lineNumber":182,"author":{"gitId":"yleeyilin"},"content":" + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2024-03-17"},{"lineNumber":183,"author":{"gitId":"yleeyilin"},"content":" + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":184,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":185,"author":{"gitId":"yleeyilin"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2024-03-17"},{"lineNumber":186,"author":{"gitId":"yleeyilin"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2024-03-17"},{"lineNumber":187,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":188,"author":{"gitId":"yleeyilin"},"content":" // multiple invalid values","lastModifiedDate":"2024-03-17"},{"lineNumber":189,"author":{"gitId":"yleeyilin"},"content":" userInput \u003d EditSupplierCommand.COMMAND_WORD + \" \" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":190,"author":{"gitId":"yleeyilin"},"content":" + CARL.getName() + \" \" + PREFIX_FIELD + \"{\"","lastModifiedDate":"2024-03-17"},{"lineNumber":191,"author":{"gitId":"yleeyilin"},"content":" + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2024-03-17"},{"lineNumber":192,"author":{"gitId":"yleeyilin"},"content":" + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":193,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":194,"author":{"gitId":"yleeyilin"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2024-03-17"},{"lineNumber":195,"author":{"gitId":"yleeyilin"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2024-03-17"},{"lineNumber":196,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":197,"author":{"gitId":"yleeyilin"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"jamessinmaojun":34,"yleeyilin":163}},{"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":"jamessinmaojun"},"content":"import static seedu.address.logic.messages.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-18"},{"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":"-"},"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":{"jamessinmaojun":1,"-":33}},{"path":"src/test/java/seedu/address/logic/parser/NoteCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_DESC_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NOTE_DESC_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":"import static seedu.address.logic.messages.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":"import seedu.address.logic.commands.NoteCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":"import seedu.address.model.person.Note;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":"public class NoteCommandParserTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":" private NoteCommandParser parser \u003d new NoteCommandParser();","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":" private Note validNote \u003d new Note(\"get kibble\");","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"jannaleong"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":" public void parse_validArgs_returnsNoteCommand() {","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"jannaleong"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + NOTE_DESC_BOB,","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":" new NoteCommand(BOB.getName(), validNote));","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"jannaleong"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"jannaleong"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"jannaleong"},"content":" assertParseFailure(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + INVALID_DESC_BOB,","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"jannaleong"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, NoteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"jannaleong":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.Address;","lastModifiedDate":"2017-05-22"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Commission;","lastModifiedDate":"2024-03-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-22"},{"lineNumber":20,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Employment;","lastModifiedDate":"2024-03-09"},{"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":"chiageng"},"content":"import seedu.address.model.person.Price;","lastModifiedDate":"2024-03-09"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Product;","lastModifiedDate":"2024-03-09"},{"lineNumber":25,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Salary;","lastModifiedDate":"2024-03-09"},{"lineNumber":26,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Skill;","lastModifiedDate":"2024-03-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-22"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2017-05-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2017-05-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2017-05-22"},{"lineNumber":35,"author":{"gitId":"chiageng"},"content":" private static final String INVALID_EMPLOYMENT \u003d \"invalid employment\";","lastModifiedDate":"2024-03-09"},{"lineNumber":36,"author":{"gitId":"chiageng"},"content":" private static final String INVALID_SALARY \u003d \"20\";","lastModifiedDate":"2024-03-09"},{"lineNumber":37,"author":{"gitId":"chiageng"},"content":" private static final String INVALID_PRODUCT \u003d \" \";","lastModifiedDate":"2024-03-09"},{"lineNumber":38,"author":{"gitId":"chiageng"},"content":" private static final String INVALID_PRICE \u003d \"20\";","lastModifiedDate":"2024-03-09"},{"lineNumber":39,"author":{"gitId":"chiageng"},"content":" private static final String INVALID_SKILL \u003d \" \";","lastModifiedDate":"2024-03-09"},{"lineNumber":40,"author":{"gitId":"chiageng"},"content":" private static final String INVALID_COMMISSION \u003d \"20\";","lastModifiedDate":"2024-03-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d \"123456\";","lastModifiedDate":"2017-05-22"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d \"123 Main Street #0505\";","lastModifiedDate":"2017-05-22"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":" private static final String VALID_EMPLOYMENT \u003d \"part-time\";","lastModifiedDate":"2024-03-09"},{"lineNumber":46,"author":{"gitId":"chiageng"},"content":" private static final String VALID_SALARY \u003d \"$20/hr\";","lastModifiedDate":"2024-03-09"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":" private static final String VALID_PRODUCT \u003d \"pooch food\";","lastModifiedDate":"2024-03-09"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":" private static final String VALID_PRICE \u003d \"$20/bag\";","lastModifiedDate":"2024-03-09"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":" private static final String VALID_SKILL \u003d \"train dog\";","lastModifiedDate":"2024-03-09"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":" private static final String VALID_COMMISSION \u003d \"$20/hr\";","lastModifiedDate":"2024-03-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_1 \u003d \"friend\";","lastModifiedDate":"2017-05-22"},{"lineNumber":52,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_2 \u003d \"neighbour\";","lastModifiedDate":"2017-05-22"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":54,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2017-05-25"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2017-05-25"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":88,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":94,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29"},{"lineNumber":95,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void parsePhone_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePhone((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void parsePhone_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhone(INVALID_PHONE));","lastModifiedDate":"2019-03-14"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":111,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-22"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(VALID_PHONE));","lastModifiedDate":"2017-05-30"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithWhitespace_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":117,"author":{"gitId":"-"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":118,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-30"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(phoneWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void parseAddress_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseAddress((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":128,"author":{"gitId":"-"},"content":" public void parseAddress_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseAddress(INVALID_ADDRESS));","lastModifiedDate":"2019-03-14"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":134,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-22"},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(VALID_ADDRESS));","lastModifiedDate":"2017-05-30"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":140,"author":{"gitId":"-"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_ADDRESS + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":141,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-30"},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(addressWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":145,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":146,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":147,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":150,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":151,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":156,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":157,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22"},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":161,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":162,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":163,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":164,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30"},{"lineNumber":165,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":168,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":169,"author":{"gitId":"chiageng"},"content":" public void parseEmployment_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":170,"author":{"gitId":"chiageng"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmployment((String) null));","lastModifiedDate":"2024-03-09"},{"lineNumber":171,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":172,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":173,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":174,"author":{"gitId":"chiageng"},"content":" public void parseEmployment_invalidValue_throwsParseException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":175,"author":{"gitId":"chiageng"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmployment(INVALID_EMPLOYMENT));","lastModifiedDate":"2024-03-09"},{"lineNumber":176,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":177,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":178,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":179,"author":{"gitId":"chiageng"},"content":" public void parseEmployment_validValueWithoutWhitespace_returnsEmployment() throws Exception {","lastModifiedDate":"2024-03-09"},{"lineNumber":180,"author":{"gitId":"chiageng"},"content":" Employment expectedEmployment \u003d new Employment(VALID_EMPLOYMENT);","lastModifiedDate":"2024-03-09"},{"lineNumber":181,"author":{"gitId":"chiageng"},"content":" assertEquals(expectedEmployment, ParserUtil.parseEmployment(VALID_EMPLOYMENT));","lastModifiedDate":"2024-03-09"},{"lineNumber":182,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":183,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":184,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":185,"author":{"gitId":"chiageng"},"content":" public void parseEmployment_validValueWithWhitespace_returnsTrimmedEmployment() throws Exception {","lastModifiedDate":"2024-03-09"},{"lineNumber":186,"author":{"gitId":"chiageng"},"content":" String employmentWithWhitespace \u003d WHITESPACE + VALID_EMPLOYMENT + WHITESPACE;","lastModifiedDate":"2024-03-09"},{"lineNumber":187,"author":{"gitId":"chiageng"},"content":" Employment expectedEmployment \u003d new Employment(VALID_EMPLOYMENT);","lastModifiedDate":"2024-03-09"},{"lineNumber":188,"author":{"gitId":"chiageng"},"content":" assertEquals(expectedEmployment, ParserUtil.parseEmployment(employmentWithWhitespace));","lastModifiedDate":"2024-03-09"},{"lineNumber":189,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":190,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":191,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":192,"author":{"gitId":"chiageng"},"content":" public void parseSalary_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":193,"author":{"gitId":"chiageng"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseSalary((String) null));","lastModifiedDate":"2024-03-09"},{"lineNumber":194,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":195,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":196,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":197,"author":{"gitId":"chiageng"},"content":" public void parseSalary_invalidValue_throwsParseException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":198,"author":{"gitId":"chiageng"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseSalary(INVALID_SALARY));","lastModifiedDate":"2024-03-09"},{"lineNumber":199,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":200,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":201,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":202,"author":{"gitId":"chiageng"},"content":" public void parseSalary_validValueWithoutWhitespace_returnsSalary() throws Exception {","lastModifiedDate":"2024-03-09"},{"lineNumber":203,"author":{"gitId":"chiageng"},"content":" Salary expectedSalary \u003d new Salary(VALID_SALARY);","lastModifiedDate":"2024-03-09"},{"lineNumber":204,"author":{"gitId":"chiageng"},"content":" assertEquals(expectedSalary, ParserUtil.parseSalary(VALID_SALARY));","lastModifiedDate":"2024-03-09"},{"lineNumber":205,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":206,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":207,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":208,"author":{"gitId":"chiageng"},"content":" public void parseSalary_validValueWithWhitespace_returnsTrimmedSalary() throws Exception {","lastModifiedDate":"2024-03-09"},{"lineNumber":209,"author":{"gitId":"chiageng"},"content":" String salaryWithWhitespace \u003d WHITESPACE + VALID_SALARY + WHITESPACE;","lastModifiedDate":"2024-03-09"},{"lineNumber":210,"author":{"gitId":"chiageng"},"content":" Salary expectedSalary \u003d new Salary(VALID_SALARY);","lastModifiedDate":"2024-03-09"},{"lineNumber":211,"author":{"gitId":"chiageng"},"content":" assertEquals(expectedSalary, ParserUtil.parseSalary(salaryWithWhitespace));","lastModifiedDate":"2024-03-09"},{"lineNumber":212,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":213,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":214,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":215,"author":{"gitId":"chiageng"},"content":" public void parseProduct_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":216,"author":{"gitId":"chiageng"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseSalary((String) null));","lastModifiedDate":"2024-03-09"},{"lineNumber":217,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":218,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":219,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":220,"author":{"gitId":"chiageng"},"content":" public void parseProduct_invalidValue_throwsParseException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":221,"author":{"gitId":"chiageng"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseProduct(INVALID_PRODUCT));","lastModifiedDate":"2024-03-09"},{"lineNumber":222,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":223,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":224,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":225,"author":{"gitId":"chiageng"},"content":" public void parseProduct_validValueWithoutWhitespace_returnsProduct() throws Exception {","lastModifiedDate":"2024-03-09"},{"lineNumber":226,"author":{"gitId":"chiageng"},"content":" Product expectedProduct \u003d new Product(VALID_PRODUCT);","lastModifiedDate":"2024-03-09"},{"lineNumber":227,"author":{"gitId":"chiageng"},"content":" assertEquals(expectedProduct, ParserUtil.parseProduct(VALID_PRODUCT));","lastModifiedDate":"2024-03-09"},{"lineNumber":228,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":229,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":230,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":231,"author":{"gitId":"chiageng"},"content":" public void parseProduct_validValueWithWhitespace_returnsTrimmedProduct() throws Exception {","lastModifiedDate":"2024-03-09"},{"lineNumber":232,"author":{"gitId":"chiageng"},"content":" String productWithWhitespace \u003d WHITESPACE + VALID_PRODUCT + WHITESPACE;","lastModifiedDate":"2024-03-09"},{"lineNumber":233,"author":{"gitId":"chiageng"},"content":" Product expectedProduct \u003d new Product(VALID_PRODUCT);","lastModifiedDate":"2024-03-09"},{"lineNumber":234,"author":{"gitId":"chiageng"},"content":" assertEquals(expectedProduct, ParserUtil.parseProduct(productWithWhitespace));","lastModifiedDate":"2024-03-09"},{"lineNumber":235,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":236,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":237,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":238,"author":{"gitId":"chiageng"},"content":" public void parsePrice_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":239,"author":{"gitId":"chiageng"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePrice((String) null));","lastModifiedDate":"2024-03-09"},{"lineNumber":240,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":241,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":242,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":243,"author":{"gitId":"chiageng"},"content":" public void parsePrice_invalidValue_throwsParseException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":244,"author":{"gitId":"chiageng"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePrice(INVALID_PRICE));","lastModifiedDate":"2024-03-09"},{"lineNumber":245,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":246,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":247,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":248,"author":{"gitId":"chiageng"},"content":" public void parsePrice_validValueWithoutWhitespace_returnsPrice() throws Exception {","lastModifiedDate":"2024-03-09"},{"lineNumber":249,"author":{"gitId":"chiageng"},"content":" Price expectedPrice \u003d new Price(VALID_PRICE);","lastModifiedDate":"2024-03-09"},{"lineNumber":250,"author":{"gitId":"chiageng"},"content":" assertEquals(expectedPrice, ParserUtil.parsePrice(VALID_PRICE));","lastModifiedDate":"2024-03-09"},{"lineNumber":251,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":252,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":253,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":254,"author":{"gitId":"chiageng"},"content":" public void parsePrice_validValueWithWhitespace_returnsTrimmedPrice() throws Exception {","lastModifiedDate":"2024-03-09"},{"lineNumber":255,"author":{"gitId":"chiageng"},"content":" String priceWithWhitespace \u003d WHITESPACE + VALID_PRICE + WHITESPACE;","lastModifiedDate":"2024-03-09"},{"lineNumber":256,"author":{"gitId":"chiageng"},"content":" Price expectedPrice \u003d new Price(VALID_PRICE);","lastModifiedDate":"2024-03-09"},{"lineNumber":257,"author":{"gitId":"chiageng"},"content":" assertEquals(expectedPrice, ParserUtil.parsePrice(priceWithWhitespace));","lastModifiedDate":"2024-03-09"},{"lineNumber":258,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":259,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":260,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":261,"author":{"gitId":"chiageng"},"content":" public void parseSkill_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":262,"author":{"gitId":"chiageng"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseSkill((String) null));","lastModifiedDate":"2024-03-09"},{"lineNumber":263,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":264,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":265,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":266,"author":{"gitId":"chiageng"},"content":" public void parseSkill_invalidValue_throwsParseException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":267,"author":{"gitId":"chiageng"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseSkill(INVALID_SKILL));","lastModifiedDate":"2024-03-09"},{"lineNumber":268,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":269,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":270,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":271,"author":{"gitId":"chiageng"},"content":" public void parseSkill_validValueWithoutWhitespace_returnsSkill() throws Exception {","lastModifiedDate":"2024-03-09"},{"lineNumber":272,"author":{"gitId":"chiageng"},"content":" Skill expectedSkill \u003d new Skill(VALID_SKILL);","lastModifiedDate":"2024-03-09"},{"lineNumber":273,"author":{"gitId":"chiageng"},"content":" assertEquals(expectedSkill, ParserUtil.parseSkill(VALID_SKILL));","lastModifiedDate":"2024-03-09"},{"lineNumber":274,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":275,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":276,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":277,"author":{"gitId":"chiageng"},"content":" public void parseSkill_validValueWithWhitespace_returnsTrimmedSkill() throws Exception {","lastModifiedDate":"2024-03-09"},{"lineNumber":278,"author":{"gitId":"chiageng"},"content":" String skillWithWhitespace \u003d WHITESPACE + VALID_SKILL + WHITESPACE;","lastModifiedDate":"2024-03-09"},{"lineNumber":279,"author":{"gitId":"chiageng"},"content":" Skill expectedSkill \u003d new Skill(VALID_SKILL);","lastModifiedDate":"2024-03-09"},{"lineNumber":280,"author":{"gitId":"chiageng"},"content":" assertEquals(expectedSkill, ParserUtil.parseSkill(skillWithWhitespace));","lastModifiedDate":"2024-03-09"},{"lineNumber":281,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":282,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":283,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":284,"author":{"gitId":"chiageng"},"content":" public void parseCommission_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":285,"author":{"gitId":"chiageng"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseCommission((String) null));","lastModifiedDate":"2024-03-09"},{"lineNumber":286,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":287,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":288,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":289,"author":{"gitId":"chiageng"},"content":" public void parseCommission_invalidValue_throwsParseException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":290,"author":{"gitId":"chiageng"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseCommission(INVALID_COMMISSION));","lastModifiedDate":"2024-03-09"},{"lineNumber":291,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":292,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":293,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":294,"author":{"gitId":"chiageng"},"content":" public void parseCommission_validValueWithoutWhitespace_returnsCommission() throws Exception {","lastModifiedDate":"2024-03-09"},{"lineNumber":295,"author":{"gitId":"chiageng"},"content":" Commission expectedCommission \u003d new Commission(VALID_COMMISSION);","lastModifiedDate":"2024-03-09"},{"lineNumber":296,"author":{"gitId":"chiageng"},"content":" assertEquals(expectedCommission, ParserUtil.parseCommission(VALID_COMMISSION));","lastModifiedDate":"2024-03-09"},{"lineNumber":297,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":298,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":299,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":300,"author":{"gitId":"chiageng"},"content":" public void parseCommission_validValueWithWhitespace_returnsTrimmedCommission() throws Exception {","lastModifiedDate":"2024-03-09"},{"lineNumber":301,"author":{"gitId":"chiageng"},"content":" String commissionWithWhitespace \u003d WHITESPACE + VALID_COMMISSION + WHITESPACE;","lastModifiedDate":"2024-03-09"},{"lineNumber":302,"author":{"gitId":"chiageng"},"content":" Commission expectedCommission \u003d new Commission(VALID_COMMISSION);","lastModifiedDate":"2024-03-09"},{"lineNumber":303,"author":{"gitId":"chiageng"},"content":" assertEquals(expectedCommission, ParserUtil.parseCommission(commissionWithWhitespace));","lastModifiedDate":"2024-03-09"},{"lineNumber":304,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":305,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":306,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":307,"author":{"gitId":"-"},"content":" public void parseTag_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":308,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":309,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":310,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":311,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":312,"author":{"gitId":"-"},"content":" public void parseTag_invalidValue_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":313,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTag(INVALID_TAG));","lastModifiedDate":"2019-03-23"},{"lineNumber":314,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":315,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":316,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":317,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithoutWhitespace_returnsTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":318,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30"},{"lineNumber":319,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(VALID_TAG_1));","lastModifiedDate":"2017-05-30"},{"lineNumber":320,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":321,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":322,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":323,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithWhitespace_returnsTrimmedTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":324,"author":{"gitId":"-"},"content":" String tagWithWhitespace \u003d WHITESPACE + VALID_TAG_1 + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":325,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30"},{"lineNumber":326,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(tagWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":327,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":328,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":329,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":330,"author":{"gitId":"-"},"content":" public void parseTags_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":331,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTags(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":332,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":333,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":334,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":335,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithInvalidTags_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":336,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, INVALID_TAG)));","lastModifiedDate":"2019-03-23"},{"lineNumber":337,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":338,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":339,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":340,"author":{"gitId":"-"},"content":" public void parseTags_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2017-05-22"},{"lineNumber":341,"author":{"gitId":"-"},"content":" assertTrue(ParserUtil.parseTags(Collections.emptyList()).isEmpty());","lastModifiedDate":"2017-05-22"},{"lineNumber":342,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":343,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":344,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":345,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithValidTags_returnsTagSet() throws Exception {","lastModifiedDate":"2017-05-22"},{"lineNumber":346,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e actualTagSet \u003d ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, VALID_TAG_2));","lastModifiedDate":"2017-05-22"},{"lineNumber":347,"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":348,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":349,"author":{"gitId":"-"},"content":" assertEquals(expectedTagSet, actualTagSet);","lastModifiedDate":"2017-05-22"},{"lineNumber":350,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":351,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22"}],"authorContributionMap":{"chiageng":156,"-":195}},{"path":"src/test/java/seedu/address/logic/parser/SearchCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Joshy837"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"Joshy837"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"Joshy837"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"Joshy837"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"Joshy837"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"Joshy837"},"content":"import seedu.address.logic.commands.SearchCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.SearchMessages;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"Joshy837"},"content":"import seedu.address.model.person.KeywordPredicate;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"Joshy837"},"content":"public class SearchCommandParserTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"Joshy837"},"content":" private SearchCommandParser parser \u003d new SearchCommandParser();","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"Joshy837"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"Joshy837"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser, \" \", SearchMessages.MESSAGE_SEARCH_MISSING_FIELD);","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"Joshy837"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"Joshy837"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser, \" ; name : Poochie\", SearchMessages.MESSAGE_SEARCH_INVALID_FIELD);","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"Joshy837"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"Joshy837"},"content":" public void parse_validArgs_returnsFindCommand() {","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"Joshy837"},"content":" String keyword \u003d \" ; name : Poochie\";","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"Joshy837"},"content":" ArgumentMultimap token \u003d ArgumentTokenizer.tokenize(keyword, PREFIX_NAME);","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"Joshy837"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"Joshy837"},"content":" SearchCommand expectedSearchCommand \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"Joshy837"},"content":" new SearchCommand(new KeywordPredicate(token));","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"Joshy837"},"content":" assertParseSuccess(parser, keyword, expectedSearchCommand);","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"Joshy837"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"Joshy837":34,"jamessinmaojun":3}},{"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":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-22"},{"lineNumber":6,"author":{"gitId":"jamessinmaojun"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"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":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"jamessinmaojun"},"content":"import static seedu.address.testutil.TypicalPersons.ALICEMAINTAINER;","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"jamessinmaojun"},"content":"import static seedu.address.testutil.TypicalPersons.ALICESTAFF;","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"jamessinmaojun"},"content":"import static seedu.address.testutil.TypicalPersons.ALICESUPPLIER;","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-31"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":22,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.EditMessages;","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.testutil.AddressBookBuilder;","lastModifiedDate":"2017-05-31"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class ModelManagerTest {","lastModifiedDate":"2017-05-31"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2018-08-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertEquals(new GuiSettings(), modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertEquals(new AddressBook(), new AddressBook(modelManager.getAddressBook()));","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":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void setUserPrefs_nullUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setUserPrefs(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void setUserPrefs_validUserPrefs_copiesUserPrefs() {","lastModifiedDate":"2018-12-06"},{"lineNumber":46,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"address/book/file/path\"));","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1, 2, 3, 4));","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" modelManager.setUserPrefs(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Modifying userPrefs should not modify modelManager\u0027s userPrefs","lastModifiedDate":"2018-12-06"},{"lineNumber":53,"author":{"gitId":"-"},"content":" UserPrefs oldUserPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":54,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"new/address/book/file/path\"));","lastModifiedDate":"2018-12-06"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertEquals(oldUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setGuiSettings(null));","lastModifiedDate":"2019-03-23"},{"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 setGuiSettings_validGuiSettings_setsGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1, 2, 3, 4);","lastModifiedDate":"2018-11-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" modelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertEquals(guiSettings, modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setAddressBookFilePath(null));","lastModifiedDate":"2019-03-23"},{"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 setAddressBookFilePath_validPath_setsAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" Path path \u003d Paths.get(\"address/book/file/path\");","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" modelManager.setAddressBookFilePath(path);","lastModifiedDate":"2018-11-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertEquals(path, modelManager.getAddressBookFilePath());","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":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasPerson(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertFalse(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":"2018-08-06"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":94,"author":{"gitId":"-"},"content":" modelManager.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertTrue(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":105,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBookBuilder().withPerson(ALICE).withPerson(BENSON).build();","lastModifiedDate":"2017-07-19"},{"lineNumber":106,"author":{"gitId":"-"},"content":" AddressBook differentAddressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31"},{"lineNumber":107,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":109,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":110,"author":{"gitId":"-"},"content":" modelManager \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2018-08-06"},{"lineNumber":111,"author":{"gitId":"-"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2017-05-31"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":114,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":117,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":120,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":123,"author":{"gitId":"-"},"content":" // different addressBook -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(differentAddressBook, userPrefs)));","lastModifiedDate":"2017-05-31"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":126,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":" String[] keywords \u003d ALICE.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-19"},{"lineNumber":128,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(keywords)));","lastModifiedDate":"2017-06-12"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, userPrefs)));","lastModifiedDate":"2017-05-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":131,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2017-08-05"},{"lineNumber":132,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":134,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27"},{"lineNumber":135,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":136,"author":{"gitId":"-"},"content":" differentUserPrefs.setAddressBookFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2018-08-09"},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, differentUserPrefs)));","lastModifiedDate":"2018-11-27"},{"lineNumber":138,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":139,"author":{"gitId":"yleeyilin"},"content":" // finds a valid person by name","lastModifiedDate":"2024-03-17"},{"lineNumber":140,"author":{"gitId":"yleeyilin"},"content":" try {","lastModifiedDate":"2024-03-18"},{"lineNumber":141,"author":{"gitId":"yleeyilin"},"content":" assertEquals(ALICE, modelManagerCopy.findByName(ALICE.getName()));","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"yleeyilin"},"content":" } catch (CommandException e) {","lastModifiedDate":"2024-03-18"},{"lineNumber":143,"author":{"gitId":"yleeyilin"},"content":" e.printStackTrace();","lastModifiedDate":"2024-03-18"},{"lineNumber":144,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":146,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":147,"author":{"gitId":"jamessinmaojun"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":148,"author":{"gitId":"jamessinmaojun"},"content":" public void findByName_success() {","lastModifiedDate":"2024-03-22"},{"lineNumber":149,"author":{"gitId":"jamessinmaojun"},"content":" AddressBook addressBook \u003d new AddressBookBuilder().withPerson(ALICE).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":150,"author":{"gitId":"jamessinmaojun"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2024-03-22"},{"lineNumber":151,"author":{"gitId":"jamessinmaojun"},"content":" modelManager \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2024-03-22"},{"lineNumber":152,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":153,"author":{"gitId":"jamessinmaojun"},"content":" Name nameToFind \u003d ALICE.getName();","lastModifiedDate":"2024-03-22"},{"lineNumber":154,"author":{"gitId":"jamessinmaojun"},"content":" Name nameFound \u003d new Name(\"Not Alice Pauline\");","lastModifiedDate":"2024-03-22"},{"lineNumber":155,"author":{"gitId":"jamessinmaojun"},"content":" try {","lastModifiedDate":"2024-03-22"},{"lineNumber":156,"author":{"gitId":"jamessinmaojun"},"content":" nameFound \u003d modelManager.findByName(nameToFind).getName();","lastModifiedDate":"2024-03-22"},{"lineNumber":157,"author":{"gitId":"jamessinmaojun"},"content":" } catch (CommandException e) {","lastModifiedDate":"2024-03-22"},{"lineNumber":158,"author":{"gitId":"jamessinmaojun"},"content":" fail();","lastModifiedDate":"2024-03-22"},{"lineNumber":159,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":160,"author":{"gitId":"jamessinmaojun"},"content":" assertEquals(nameToFind, nameFound);","lastModifiedDate":"2024-03-22"},{"lineNumber":161,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":162,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":163,"author":{"gitId":"jamessinmaojun"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":164,"author":{"gitId":"jamessinmaojun"},"content":" public void findByNameFailure_throwsCommandException() {","lastModifiedDate":"2024-03-22"},{"lineNumber":165,"author":{"gitId":"jamessinmaojun"},"content":" Name nameToFind \u003d ALICE.getName();","lastModifiedDate":"2024-03-22"},{"lineNumber":166,"author":{"gitId":"jamessinmaojun"},"content":" assertThrows(CommandException.class,","lastModifiedDate":"2024-03-22"},{"lineNumber":167,"author":{"gitId":"jamessinmaojun"},"content":" EditMessages.MESSAGE_INVALID_EDIT_PERSON, () -\u003e modelManager.findByName(nameToFind));","lastModifiedDate":"2024-03-22"},{"lineNumber":168,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":169,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":170,"author":{"gitId":"jamessinmaojun"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":171,"author":{"gitId":"jamessinmaojun"},"content":" public void findMaintainerByName_success() {","lastModifiedDate":"2024-03-22"},{"lineNumber":172,"author":{"gitId":"jamessinmaojun"},"content":" AddressBook addressBook \u003d new AddressBookBuilder().withPerson(ALICEMAINTAINER).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":173,"author":{"gitId":"jamessinmaojun"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2024-03-22"},{"lineNumber":174,"author":{"gitId":"jamessinmaojun"},"content":" modelManager \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2024-03-22"},{"lineNumber":175,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":176,"author":{"gitId":"jamessinmaojun"},"content":" Name nameToFind \u003d ALICEMAINTAINER.getName();","lastModifiedDate":"2024-03-22"},{"lineNumber":177,"author":{"gitId":"jamessinmaojun"},"content":" Name nameFound \u003d new Name(\"Not Alice Pauline\");","lastModifiedDate":"2024-03-22"},{"lineNumber":178,"author":{"gitId":"jamessinmaojun"},"content":" try {","lastModifiedDate":"2024-03-22"},{"lineNumber":179,"author":{"gitId":"jamessinmaojun"},"content":" nameFound \u003d modelManager.findMaintainerByName(nameToFind).getName();","lastModifiedDate":"2024-03-22"},{"lineNumber":180,"author":{"gitId":"jamessinmaojun"},"content":" } catch (CommandException e) {","lastModifiedDate":"2024-03-22"},{"lineNumber":181,"author":{"gitId":"jamessinmaojun"},"content":" fail();","lastModifiedDate":"2024-03-22"},{"lineNumber":182,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":183,"author":{"gitId":"jamessinmaojun"},"content":" assertEquals(nameToFind, nameFound);","lastModifiedDate":"2024-03-22"},{"lineNumber":184,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":185,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":186,"author":{"gitId":"jamessinmaojun"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":187,"author":{"gitId":"jamessinmaojun"},"content":" public void findMaintainerByNameFailure_throwsCommandException() {","lastModifiedDate":"2024-03-22"},{"lineNumber":188,"author":{"gitId":"jamessinmaojun"},"content":" Name nameToFind \u003d ALICEMAINTAINER.getName();","lastModifiedDate":"2024-03-22"},{"lineNumber":189,"author":{"gitId":"jamessinmaojun"},"content":" assertThrows(CommandException.class,","lastModifiedDate":"2024-03-22"},{"lineNumber":190,"author":{"gitId":"jamessinmaojun"},"content":" EditMessages.MESSAGE_INVALID_EDIT_MAINTAINER, () -\u003e modelManager.findMaintainerByName(nameToFind));","lastModifiedDate":"2024-03-22"},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":192,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":193,"author":{"gitId":"jamessinmaojun"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":194,"author":{"gitId":"jamessinmaojun"},"content":" public void findStaffByName_success() {","lastModifiedDate":"2024-03-22"},{"lineNumber":195,"author":{"gitId":"jamessinmaojun"},"content":" AddressBook addressBook \u003d new AddressBookBuilder().withPerson(ALICESTAFF).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":196,"author":{"gitId":"jamessinmaojun"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2024-03-22"},{"lineNumber":197,"author":{"gitId":"jamessinmaojun"},"content":" modelManager \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2024-03-22"},{"lineNumber":198,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":199,"author":{"gitId":"jamessinmaojun"},"content":" Name nameToFind \u003d ALICESTAFF.getName();","lastModifiedDate":"2024-03-22"},{"lineNumber":200,"author":{"gitId":"jamessinmaojun"},"content":" Name nameFound \u003d new Name(\"Not Alice Pauline\");","lastModifiedDate":"2024-03-22"},{"lineNumber":201,"author":{"gitId":"jamessinmaojun"},"content":" try {","lastModifiedDate":"2024-03-22"},{"lineNumber":202,"author":{"gitId":"jamessinmaojun"},"content":" nameFound \u003d modelManager.findStaffByName(nameToFind).getName();","lastModifiedDate":"2024-03-22"},{"lineNumber":203,"author":{"gitId":"jamessinmaojun"},"content":" } catch (CommandException e) {","lastModifiedDate":"2024-03-22"},{"lineNumber":204,"author":{"gitId":"jamessinmaojun"},"content":" fail();","lastModifiedDate":"2024-03-22"},{"lineNumber":205,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":206,"author":{"gitId":"jamessinmaojun"},"content":" assertEquals(nameToFind, nameFound);","lastModifiedDate":"2024-03-22"},{"lineNumber":207,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":208,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":209,"author":{"gitId":"jamessinmaojun"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":210,"author":{"gitId":"jamessinmaojun"},"content":" public void findStaffByNameFailure_throwsCommandException() {","lastModifiedDate":"2024-03-22"},{"lineNumber":211,"author":{"gitId":"jamessinmaojun"},"content":" Name nameToFind \u003d ALICESTAFF.getName();","lastModifiedDate":"2024-03-22"},{"lineNumber":212,"author":{"gitId":"jamessinmaojun"},"content":" assertThrows(CommandException.class,","lastModifiedDate":"2024-03-22"},{"lineNumber":213,"author":{"gitId":"jamessinmaojun"},"content":" EditMessages.MESSAGE_INVALID_EDIT_STAFF, () -\u003e modelManager.findStaffByName(nameToFind));","lastModifiedDate":"2024-03-22"},{"lineNumber":214,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":215,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":216,"author":{"gitId":"jamessinmaojun"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":217,"author":{"gitId":"jamessinmaojun"},"content":" public void findSupplierByName_success() {","lastModifiedDate":"2024-03-22"},{"lineNumber":218,"author":{"gitId":"jamessinmaojun"},"content":" AddressBook addressBook \u003d new AddressBookBuilder().withPerson(ALICESUPPLIER).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":219,"author":{"gitId":"jamessinmaojun"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2024-03-22"},{"lineNumber":220,"author":{"gitId":"jamessinmaojun"},"content":" modelManager \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2024-03-22"},{"lineNumber":221,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":222,"author":{"gitId":"jamessinmaojun"},"content":" Name nameToFind \u003d ALICESUPPLIER.getName();","lastModifiedDate":"2024-03-22"},{"lineNumber":223,"author":{"gitId":"jamessinmaojun"},"content":" Name nameFound \u003d new Name(\"Not Alice Pauline\");","lastModifiedDate":"2024-03-22"},{"lineNumber":224,"author":{"gitId":"jamessinmaojun"},"content":" try {","lastModifiedDate":"2024-03-22"},{"lineNumber":225,"author":{"gitId":"jamessinmaojun"},"content":" nameFound \u003d modelManager.findSupplierByName(nameToFind).getName();","lastModifiedDate":"2024-03-22"},{"lineNumber":226,"author":{"gitId":"jamessinmaojun"},"content":" } catch (CommandException e) {","lastModifiedDate":"2024-03-22"},{"lineNumber":227,"author":{"gitId":"jamessinmaojun"},"content":" fail();","lastModifiedDate":"2024-03-22"},{"lineNumber":228,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":229,"author":{"gitId":"jamessinmaojun"},"content":" assertEquals(nameToFind, nameFound);","lastModifiedDate":"2024-03-22"},{"lineNumber":230,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":231,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":232,"author":{"gitId":"jamessinmaojun"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":233,"author":{"gitId":"jamessinmaojun"},"content":" public void findSupplierByNameFailure_throwsCommandException() {","lastModifiedDate":"2024-03-22"},{"lineNumber":234,"author":{"gitId":"jamessinmaojun"},"content":" Name nameToFind \u003d ALICESUPPLIER.getName();","lastModifiedDate":"2024-03-22"},{"lineNumber":235,"author":{"gitId":"jamessinmaojun"},"content":" assertThrows(CommandException.class,","lastModifiedDate":"2024-03-22"},{"lineNumber":236,"author":{"gitId":"jamessinmaojun"},"content":" EditMessages.MESSAGE_INVALID_EDIT_SUPPLIER, () -\u003e modelManager.findSupplierByName(nameToFind));","lastModifiedDate":"2024-03-22"},{"lineNumber":237,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":238,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":239,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31"}],"authorContributionMap":{"jamessinmaojun":98,"-":133,"yleeyilin":8}},{"path":"src/test/java/seedu/address/model/person/CommissionTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chiageng"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-09"},{"lineNumber":2,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":3,"author":{"gitId":"chiageng"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-09"},{"lineNumber":4,"author":{"gitId":"chiageng"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-09"},{"lineNumber":5,"author":{"gitId":"chiageng"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-09"},{"lineNumber":6,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":7,"author":{"gitId":"chiageng"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-09"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":"public class CommissionTest {","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":13,"author":{"gitId":"chiageng"},"content":" assertThrows(NullPointerException.class, () -\u003e new Commission(null));","lastModifiedDate":"2024-03-09"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":" public void constructor_invalidCommission_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":" String invalidCommission \u003d \"20/hr\";","lastModifiedDate":"2024-03-09"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Commission(invalidCommission));","lastModifiedDate":"2024-03-09"},{"lineNumber":20,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":23,"author":{"gitId":"chiageng"},"content":" public void isValidCommission() {","lastModifiedDate":"2024-03-09"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":" // null commission","lastModifiedDate":"2024-03-09"},{"lineNumber":25,"author":{"gitId":"chiageng"},"content":" assertThrows(NullPointerException.class, () -\u003e Commission.isValidCommission(null));","lastModifiedDate":"2024-03-09"},{"lineNumber":26,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":27,"author":{"gitId":"chiageng"},"content":" // invalid commission","lastModifiedDate":"2024-03-09"},{"lineNumber":28,"author":{"gitId":"chiageng"},"content":" assertFalse(Commission.isValidCommission(\"\")); // empty string","lastModifiedDate":"2024-03-09"},{"lineNumber":29,"author":{"gitId":"chiageng"},"content":" assertFalse(Commission.isValidCommission(\" \")); // spaces only","lastModifiedDate":"2024-03-09"},{"lineNumber":30,"author":{"gitId":"chiageng"},"content":" assertFalse(Commission.isValidCommission(\"50\"));","lastModifiedDate":"2024-03-09"},{"lineNumber":31,"author":{"gitId":"chiageng"},"content":" assertFalse(Commission.isValidCommission(\"50/hr\"));","lastModifiedDate":"2024-03-09"},{"lineNumber":32,"author":{"gitId":"chiageng"},"content":" assertFalse(Commission.isValidCommission(\"$50\"));","lastModifiedDate":"2024-03-09"},{"lineNumber":33,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":34,"author":{"gitId":"chiageng"},"content":" // valid commission","lastModifiedDate":"2024-03-09"},{"lineNumber":35,"author":{"gitId":"chiageng"},"content":" assertTrue(Commission.isValidCommission(\"$500/hr\")); // exactly 3 numbers","lastModifiedDate":"2024-03-09"},{"lineNumber":36,"author":{"gitId":"chiageng"},"content":" assertTrue(Commission.isValidCommission(\"$50/hr\"));","lastModifiedDate":"2024-03-09"},{"lineNumber":37,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":38,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":39,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":40,"author":{"gitId":"chiageng"},"content":" public void equals() {","lastModifiedDate":"2024-03-09"},{"lineNumber":41,"author":{"gitId":"chiageng"},"content":" Commission commission \u003d new Commission(\"$50/hr\");","lastModifiedDate":"2024-03-09"},{"lineNumber":42,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":43,"author":{"gitId":"chiageng"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-09"},{"lineNumber":44,"author":{"gitId":"chiageng"},"content":" assertTrue(commission.equals(new Commission(\"$50/hr\")));","lastModifiedDate":"2024-03-09"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":46,"author":{"gitId":"chiageng"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-09"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":" assertTrue(commission.equals(commission));","lastModifiedDate":"2024-03-09"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":" assertFalse(commission.equals(null));","lastModifiedDate":"2024-03-09"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":53,"author":{"gitId":"chiageng"},"content":" assertFalse(commission.equals(\"$50/hr\"));","lastModifiedDate":"2024-03-09"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":55,"author":{"gitId":"chiageng"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":56,"author":{"gitId":"chiageng"},"content":" assertFalse(commission.equals(new Commission(\"$60/hr\")));","lastModifiedDate":"2024-03-09"},{"lineNumber":57,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":58,"author":{"gitId":"chiageng"},"content":"}","lastModifiedDate":"2024-03-09"}],"authorContributionMap":{"chiageng":58}},{"path":"src/test/java/seedu/address/model/person/EmploymentTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chiageng"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-09"},{"lineNumber":2,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":3,"author":{"gitId":"chiageng"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-09"},{"lineNumber":4,"author":{"gitId":"chiageng"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-09"},{"lineNumber":5,"author":{"gitId":"chiageng"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-09"},{"lineNumber":6,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":7,"author":{"gitId":"chiageng"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-09"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":"public class EmploymentTest {","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":13,"author":{"gitId":"chiageng"},"content":" assertThrows(NullPointerException.class, () -\u003e new Name(null));","lastModifiedDate":"2024-03-09"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":" public void constructor_invalidEmployment_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":" String invalidEmployment \u003d \"\";","lastModifiedDate":"2024-03-09"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Employment(invalidEmployment));","lastModifiedDate":"2024-03-09"},{"lineNumber":20,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":23,"author":{"gitId":"chiageng"},"content":" public void isValidEmployment() {","lastModifiedDate":"2024-03-09"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":" // null Employment","lastModifiedDate":"2024-03-09"},{"lineNumber":25,"author":{"gitId":"chiageng"},"content":" assertThrows(NullPointerException.class, () -\u003e Employment.isValidEmployment(null));","lastModifiedDate":"2024-03-09"},{"lineNumber":26,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":27,"author":{"gitId":"chiageng"},"content":" // invalid Employment","lastModifiedDate":"2024-03-09"},{"lineNumber":28,"author":{"gitId":"chiageng"},"content":" assertFalse(Employment.isValidEmployment(\"\")); // empty string","lastModifiedDate":"2024-03-09"},{"lineNumber":29,"author":{"gitId":"chiageng"},"content":" assertFalse(Employment.isValidEmployment(\" \")); // spaces only","lastModifiedDate":"2024-03-09"},{"lineNumber":30,"author":{"gitId":"chiageng"},"content":" assertFalse(Employment.isValidEmployment(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2024-03-09"},{"lineNumber":31,"author":{"gitId":"chiageng"},"content":" assertFalse(Employment.isValidEmployment(\"peter*\")); // contains non-alphanumeric characters","lastModifiedDate":"2024-03-09"},{"lineNumber":32,"author":{"gitId":"chiageng"},"content":" assertFalse(Employment.isValidEmployment(\"other\"));","lastModifiedDate":"2024-03-09"},{"lineNumber":33,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":34,"author":{"gitId":"chiageng"},"content":" // valid Employment","lastModifiedDate":"2024-03-09"},{"lineNumber":35,"author":{"gitId":"chiageng"},"content":" assertTrue(Employment.isValidEmployment(\"part-time\"));","lastModifiedDate":"2024-03-09"},{"lineNumber":36,"author":{"gitId":"chiageng"},"content":" assertTrue(Employment.isValidEmployment(\"full-time\"));","lastModifiedDate":"2024-03-09"},{"lineNumber":37,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":38,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":39,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":40,"author":{"gitId":"chiageng"},"content":" public void equals() {","lastModifiedDate":"2024-03-09"},{"lineNumber":41,"author":{"gitId":"chiageng"},"content":" Employment employment \u003d new Employment(\"part-time\");","lastModifiedDate":"2024-03-09"},{"lineNumber":42,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":43,"author":{"gitId":"chiageng"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-09"},{"lineNumber":44,"author":{"gitId":"chiageng"},"content":" assertTrue(employment.equals(new Employment(\"part-time\")));","lastModifiedDate":"2024-03-09"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":46,"author":{"gitId":"chiageng"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-09"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":" assertTrue(employment.equals(employment));","lastModifiedDate":"2024-03-09"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":" assertFalse(employment.equals(null));","lastModifiedDate":"2024-03-09"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":53,"author":{"gitId":"chiageng"},"content":" assertFalse(employment.equals(\"part-time\"));","lastModifiedDate":"2024-03-09"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":55,"author":{"gitId":"chiageng"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":56,"author":{"gitId":"chiageng"},"content":" assertFalse(employment.equals(new Employment(\"full-time\")));","lastModifiedDate":"2024-03-09"},{"lineNumber":57,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":58,"author":{"gitId":"chiageng"},"content":"}","lastModifiedDate":"2024-03-09"}],"authorContributionMap":{"chiageng":58}},{"path":"src/test/java/seedu/address/model/person/KeywordPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Joshy837"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"Joshy837"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"Joshy837"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"Joshy837"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"Joshy837"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"Joshy837"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"Joshy837"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COMMISSION;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"Joshy837"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"Joshy837"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMPLOYMENT;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"Joshy837"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"Joshy837"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"Joshy837"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PRICE;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"Joshy837"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PRODUCT;","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"Joshy837"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SALARY;","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"Joshy837"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SKILL;","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"Joshy837"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"Joshy837"},"content":"import seedu.address.logic.parser.ArgumentMultimap;","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"Joshy837"},"content":"import seedu.address.logic.parser.ArgumentTokenizer;","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"Joshy837"},"content":"import seedu.address.testutil.MaintainerBuilder;","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"Joshy837"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"Joshy837"},"content":"import seedu.address.testutil.StaffBuilder;","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"Joshy837"},"content":"import seedu.address.testutil.SupplierBuilder;","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"Joshy837"},"content":"public class KeywordPredicateTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"Joshy837"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"Joshy837"},"content":" public void equals() {","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"Joshy837"},"content":" String firstKeyword \u003d \" ; name : Poochie\";","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"Joshy837"},"content":" ArgumentMultimap firstToken \u003d ArgumentTokenizer.tokenize(firstKeyword, PREFIX_NAME);","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"Joshy837"},"content":" String secondKeyword \u003d \" ; product : Dog Food\";","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"Joshy837"},"content":" ArgumentMultimap secondToken \u003d ArgumentTokenizer.tokenize(secondKeyword, PREFIX_NAME);","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"Joshy837"},"content":" KeywordPredicate firstPredicate \u003d new KeywordPredicate(firstToken);","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"Joshy837"},"content":" KeywordPredicate secondPredicate \u003d new KeywordPredicate(secondToken);","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"Joshy837"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"Joshy837"},"content":" assertEquals(firstPredicate, firstPredicate);","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"Joshy837"},"content":" assertEquals(secondPredicate, secondPredicate);","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"Joshy837"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"Joshy837"},"content":" KeywordPredicate firstPredicateCopy \u003d new KeywordPredicate(firstToken);","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"Joshy837"},"content":" assertEquals(firstPredicate, firstPredicateCopy);","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"Joshy837"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"Joshy837"},"content":" assertNotEquals(1, firstPredicate);","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"Joshy837"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"Joshy837"},"content":" assertNotEquals(null, firstPredicate);","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"Joshy837"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"Joshy837"},"content":" assertNotEquals(firstPredicate, secondPredicate);","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"Joshy837"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"Joshy837"},"content":" public void test_keyword_returnsTrue() {","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"Joshy837"},"content":" // Name","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"Joshy837"},"content":" KeywordPredicate predicate \u003d new KeywordPredicate(","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"Joshy837"},"content":" ArgumentTokenizer.tokenize(\" ; name : Alice\", PREFIX_NAME));","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"Joshy837"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice\").build()));","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"Joshy837"},"content":" // Phone","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"Joshy837"},"content":" predicate \u003d new KeywordPredicate(","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"Joshy837"},"content":" ArgumentTokenizer.tokenize(\" ; phone : 98765432\", PREFIX_PHONE));","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"Joshy837"},"content":" assertTrue(predicate.test(new PersonBuilder().withPhone(\"98765432\").build()));","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"Joshy837"},"content":" // Email","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"Joshy837"},"content":" predicate \u003d new KeywordPredicate(","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"Joshy837"},"content":" ArgumentTokenizer.tokenize(\" ; email : ilovepoochies@gmail.com\", PREFIX_EMAIL));","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"Joshy837"},"content":" assertTrue(predicate.test(new PersonBuilder().withEmail(\"ilovepoochies@gmail.com\").build()));","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"Joshy837"},"content":" // Address","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"Joshy837"},"content":" predicate \u003d new KeywordPredicate(","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"Joshy837"},"content":" ArgumentTokenizer.tokenize(\" ; address : Pooch Street 21\", PREFIX_ADDRESS));","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"Joshy837"},"content":" assertTrue(predicate.test(new PersonBuilder().withAddress(\"Pooch Street 21\").build()));","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"Joshy837"},"content":" // Salary","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"Joshy837"},"content":" predicate \u003d new KeywordPredicate(","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"Joshy837"},"content":" ArgumentTokenizer.tokenize(\" ; salary : $50/hr\", PREFIX_SALARY));","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"Joshy837"},"content":" assertTrue(predicate.test(new StaffBuilder().withSalary(\"$50/hr\").build()));","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"Joshy837"},"content":" // Employment","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"Joshy837"},"content":" predicate \u003d new KeywordPredicate(","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"Joshy837"},"content":" ArgumentTokenizer.tokenize(\" ; employment : part-time\", PREFIX_EMPLOYMENT));","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"Joshy837"},"content":" assertTrue(predicate.test(new StaffBuilder().withEmployment(\"part-time\").build()));","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"Joshy837"},"content":" // Price","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"Joshy837"},"content":" predicate \u003d new KeywordPredicate(","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"Joshy837"},"content":" ArgumentTokenizer.tokenize(\" ; price : $50/h\", PREFIX_PRICE));","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"Joshy837"},"content":" assertTrue(predicate.test(new SupplierBuilder().withPrice(\"$50/h\").build()));","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"Joshy837"},"content":" // Product","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"Joshy837"},"content":" predicate \u003d new KeywordPredicate(","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"Joshy837"},"content":" ArgumentTokenizer.tokenize(\" ; product : dog food\", PREFIX_PRODUCT));","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"Joshy837"},"content":" assertTrue(predicate.test(new SupplierBuilder().withProduct(\"dog food\").build()));","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"Joshy837"},"content":" // Skill","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"Joshy837"},"content":" predicate \u003d new KeywordPredicate(","lastModifiedDate":"2024-03-18"},{"lineNumber":101,"author":{"gitId":"Joshy837"},"content":" ArgumentTokenizer.tokenize(\" ; skill : dog trainer\", PREFIX_SKILL));","lastModifiedDate":"2024-03-18"},{"lineNumber":102,"author":{"gitId":"Joshy837"},"content":" assertTrue(predicate.test(new MaintainerBuilder().withSkill(\"dog trainer\").build()));","lastModifiedDate":"2024-03-18"},{"lineNumber":103,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":104,"author":{"gitId":"Joshy837"},"content":" // Commission","lastModifiedDate":"2024-03-18"},{"lineNumber":105,"author":{"gitId":"Joshy837"},"content":" predicate \u003d new KeywordPredicate(","lastModifiedDate":"2024-03-18"},{"lineNumber":106,"author":{"gitId":"Joshy837"},"content":" ArgumentTokenizer.tokenize(\" ; commission : $100/hr\", PREFIX_COMMISSION));","lastModifiedDate":"2024-03-18"},{"lineNumber":107,"author":{"gitId":"Joshy837"},"content":" assertTrue(predicate.test(new MaintainerBuilder().withCommission(\"$100/hr\").build()));","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":109,"author":{"gitId":"Joshy837"},"content":" // Partial keyword","lastModifiedDate":"2024-03-18"},{"lineNumber":110,"author":{"gitId":"Joshy837"},"content":" predicate \u003d new KeywordPredicate(","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"Joshy837"},"content":" ArgumentTokenizer.tokenize(\" ; name : Al\", PREFIX_NAME));","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"Joshy837"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-03-18"},{"lineNumber":113,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"Joshy837"},"content":" // Mixed-case keyword","lastModifiedDate":"2024-03-18"},{"lineNumber":115,"author":{"gitId":"Joshy837"},"content":" predicate \u003d new KeywordPredicate(","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"Joshy837"},"content":" ArgumentTokenizer.tokenize(\" ; name : AlIcE\", PREFIX_NAME));","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"Joshy837"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-03-18"},{"lineNumber":118,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":119,"author":{"gitId":"Joshy837"},"content":" // Two fields: Name \u0026 Phone","lastModifiedDate":"2024-03-18"},{"lineNumber":120,"author":{"gitId":"Joshy837"},"content":" predicate \u003d new KeywordPredicate(","lastModifiedDate":"2024-03-18"},{"lineNumber":121,"author":{"gitId":"Joshy837"},"content":" ArgumentTokenizer.tokenize(\" ; name : Alice ; phone : 98765432\", PREFIX_NAME, PREFIX_PHONE));","lastModifiedDate":"2024-03-18"},{"lineNumber":122,"author":{"gitId":"Joshy837"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice\").withPhone(\"98765432\").build()));","lastModifiedDate":"2024-03-18"},{"lineNumber":123,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":124,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":125,"author":{"gitId":"Joshy837"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":126,"author":{"gitId":"Joshy837"},"content":" public void test_keyword_returnsFalse() {","lastModifiedDate":"2024-03-18"},{"lineNumber":127,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":128,"author":{"gitId":"Joshy837"},"content":" // Non-matching keyword","lastModifiedDate":"2024-03-18"},{"lineNumber":129,"author":{"gitId":"Joshy837"},"content":" KeywordPredicate predicate \u003d new KeywordPredicate(","lastModifiedDate":"2024-03-18"},{"lineNumber":130,"author":{"gitId":"Joshy837"},"content":" ArgumentTokenizer.tokenize(\" ; name : Carol\", PREFIX_NAME));","lastModifiedDate":"2024-03-18"},{"lineNumber":131,"author":{"gitId":"Joshy837"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").build()));","lastModifiedDate":"2024-03-18"},{"lineNumber":132,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":133,"author":{"gitId":"Joshy837"},"content":" // Keywords match name and phone, but does not match email","lastModifiedDate":"2024-03-18"},{"lineNumber":134,"author":{"gitId":"Joshy837"},"content":" predicate \u003d new KeywordPredicate(","lastModifiedDate":"2024-03-18"},{"lineNumber":135,"author":{"gitId":"Joshy837"},"content":" ArgumentTokenizer.tokenize(\" ; name : Alice ; phone : 98765432 ; email : ihatepoochies@gmail.com\",","lastModifiedDate":"2024-03-18"},{"lineNumber":136,"author":{"gitId":"Joshy837"},"content":" PREFIX_NAME, PREFIX_PHONE));","lastModifiedDate":"2024-03-18"},{"lineNumber":137,"author":{"gitId":"Joshy837"},"content":" assertFalse(predicate.test(","lastModifiedDate":"2024-03-18"},{"lineNumber":138,"author":{"gitId":"Joshy837"},"content":" new PersonBuilder()","lastModifiedDate":"2024-03-18"},{"lineNumber":139,"author":{"gitId":"Joshy837"},"content":" .withName(\"Alice\")","lastModifiedDate":"2024-03-18"},{"lineNumber":140,"author":{"gitId":"Joshy837"},"content":" .withPhone(\"98765432\")","lastModifiedDate":"2024-03-18"},{"lineNumber":141,"author":{"gitId":"Joshy837"},"content":" .withEmail(\"ilovepoochies@gmail.com\")","lastModifiedDate":"2024-03-18"},{"lineNumber":142,"author":{"gitId":"Joshy837"},"content":" .build()));","lastModifiedDate":"2024-03-18"},{"lineNumber":143,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":144,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":145,"author":{"gitId":"Joshy837"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":146,"author":{"gitId":"Joshy837"},"content":" public void test_nameField_returnsTrue() {","lastModifiedDate":"2024-03-21"},{"lineNumber":147,"author":{"gitId":"Joshy837"},"content":" KeywordPredicate predicate \u003d new KeywordPredicate(","lastModifiedDate":"2024-03-21"},{"lineNumber":148,"author":{"gitId":"Joshy837"},"content":" ArgumentTokenizer.tokenize(\" ; name : Alice\", PREFIX_NAME));","lastModifiedDate":"2024-03-21"},{"lineNumber":149,"author":{"gitId":"Joshy837"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice\").build()));","lastModifiedDate":"2024-03-21"},{"lineNumber":150,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":151,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":152,"author":{"gitId":"Joshy837"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":153,"author":{"gitId":"Joshy837"},"content":" public void test_phoneField_returnsTrue() {","lastModifiedDate":"2024-03-21"},{"lineNumber":154,"author":{"gitId":"Joshy837"},"content":" KeywordPredicate predicate \u003d new KeywordPredicate(","lastModifiedDate":"2024-03-21"},{"lineNumber":155,"author":{"gitId":"Joshy837"},"content":" ArgumentTokenizer.tokenize(\" ; phone : 98765432\", PREFIX_PHONE));","lastModifiedDate":"2024-03-21"},{"lineNumber":156,"author":{"gitId":"Joshy837"},"content":" assertTrue(predicate.test(new PersonBuilder().withPhone(\"98765432\").build()));","lastModifiedDate":"2024-03-21"},{"lineNumber":157,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":158,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":159,"author":{"gitId":"Joshy837"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":160,"author":{"gitId":"Joshy837"},"content":" public void test_emailField_returnsTrue() {","lastModifiedDate":"2024-03-21"},{"lineNumber":161,"author":{"gitId":"Joshy837"},"content":" KeywordPredicate predicate \u003d new KeywordPredicate(","lastModifiedDate":"2024-03-21"},{"lineNumber":162,"author":{"gitId":"Joshy837"},"content":" ArgumentTokenizer.tokenize(\" ; email : ilovepoochies@gmail.com\", PREFIX_EMAIL));","lastModifiedDate":"2024-03-21"},{"lineNumber":163,"author":{"gitId":"Joshy837"},"content":" assertTrue(predicate.test(new PersonBuilder().withEmail(\"ilovepoochies@gmail.com\").build()));","lastModifiedDate":"2024-03-21"},{"lineNumber":164,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":165,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":166,"author":{"gitId":"Joshy837"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":167,"author":{"gitId":"Joshy837"},"content":" public void test_addressField_returnsTrue() {","lastModifiedDate":"2024-03-21"},{"lineNumber":168,"author":{"gitId":"Joshy837"},"content":" KeywordPredicate predicate \u003d new KeywordPredicate(","lastModifiedDate":"2024-03-21"},{"lineNumber":169,"author":{"gitId":"Joshy837"},"content":" ArgumentTokenizer.tokenize(\" ; address : Pooch Street 21\", PREFIX_ADDRESS));","lastModifiedDate":"2024-03-21"},{"lineNumber":170,"author":{"gitId":"Joshy837"},"content":" assertTrue(predicate.test(new PersonBuilder().withAddress(\"Pooch Street 21\").build()));","lastModifiedDate":"2024-03-21"},{"lineNumber":171,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":172,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":173,"author":{"gitId":"Joshy837"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":174,"author":{"gitId":"Joshy837"},"content":" public void test_salaryField_returnsTrue() {","lastModifiedDate":"2024-03-21"},{"lineNumber":175,"author":{"gitId":"Joshy837"},"content":" KeywordPredicate predicate \u003d new KeywordPredicate(","lastModifiedDate":"2024-03-21"},{"lineNumber":176,"author":{"gitId":"Joshy837"},"content":" ArgumentTokenizer.tokenize(\" ; salary : $50/hr\", PREFIX_SALARY));","lastModifiedDate":"2024-03-21"},{"lineNumber":177,"author":{"gitId":"Joshy837"},"content":" assertTrue(predicate.test(new StaffBuilder().withSalary(\"$50/hr\").build()));","lastModifiedDate":"2024-03-21"},{"lineNumber":178,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":179,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":180,"author":{"gitId":"Joshy837"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":181,"author":{"gitId":"Joshy837"},"content":" public void test_employmentField_returnsTrue() {","lastModifiedDate":"2024-03-21"},{"lineNumber":182,"author":{"gitId":"Joshy837"},"content":" KeywordPredicate predicate \u003d new KeywordPredicate(","lastModifiedDate":"2024-03-21"},{"lineNumber":183,"author":{"gitId":"Joshy837"},"content":" ArgumentTokenizer.tokenize(\" ; employment : part-time\", PREFIX_EMPLOYMENT));","lastModifiedDate":"2024-03-21"},{"lineNumber":184,"author":{"gitId":"Joshy837"},"content":" assertTrue(predicate.test(new StaffBuilder().withEmployment(\"part-time\").build()));","lastModifiedDate":"2024-03-21"},{"lineNumber":185,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":186,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":187,"author":{"gitId":"Joshy837"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":188,"author":{"gitId":"Joshy837"},"content":" public void test_priceField_returnsTrue() {","lastModifiedDate":"2024-03-21"},{"lineNumber":189,"author":{"gitId":"Joshy837"},"content":" KeywordPredicate predicate \u003d new KeywordPredicate(","lastModifiedDate":"2024-03-21"},{"lineNumber":190,"author":{"gitId":"Joshy837"},"content":" ArgumentTokenizer.tokenize(\" ; price : $50/h\", PREFIX_PRICE));","lastModifiedDate":"2024-03-21"},{"lineNumber":191,"author":{"gitId":"Joshy837"},"content":" assertTrue(predicate.test(new SupplierBuilder().withPrice(\"$50/h\").build()));","lastModifiedDate":"2024-03-21"},{"lineNumber":192,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":193,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":194,"author":{"gitId":"Joshy837"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":195,"author":{"gitId":"Joshy837"},"content":" public void test_productField_returnsTrue() {","lastModifiedDate":"2024-03-21"},{"lineNumber":196,"author":{"gitId":"Joshy837"},"content":" KeywordPredicate predicate \u003d new KeywordPredicate(","lastModifiedDate":"2024-03-21"},{"lineNumber":197,"author":{"gitId":"Joshy837"},"content":" ArgumentTokenizer.tokenize(\" ; product : dog food\", PREFIX_PRODUCT));","lastModifiedDate":"2024-03-21"},{"lineNumber":198,"author":{"gitId":"Joshy837"},"content":" assertTrue(predicate.test(new SupplierBuilder().withProduct(\"dog food\").build()));","lastModifiedDate":"2024-03-21"},{"lineNumber":199,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":200,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":201,"author":{"gitId":"Joshy837"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":202,"author":{"gitId":"Joshy837"},"content":" public void test_skillField_returnsTrue() {","lastModifiedDate":"2024-03-21"},{"lineNumber":203,"author":{"gitId":"Joshy837"},"content":" KeywordPredicate predicate \u003d new KeywordPredicate(","lastModifiedDate":"2024-03-21"},{"lineNumber":204,"author":{"gitId":"Joshy837"},"content":" ArgumentTokenizer.tokenize(\" ; skill : dog trainer\", PREFIX_SKILL));","lastModifiedDate":"2024-03-21"},{"lineNumber":205,"author":{"gitId":"Joshy837"},"content":" assertTrue(predicate.test(new MaintainerBuilder().withSkill(\"dog trainer\").build()));","lastModifiedDate":"2024-03-21"},{"lineNumber":206,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":207,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":208,"author":{"gitId":"Joshy837"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":209,"author":{"gitId":"Joshy837"},"content":" public void test_commissionField_returnsTrue() {","lastModifiedDate":"2024-03-21"},{"lineNumber":210,"author":{"gitId":"Joshy837"},"content":" KeywordPredicate predicate \u003d new KeywordPredicate(","lastModifiedDate":"2024-03-21"},{"lineNumber":211,"author":{"gitId":"Joshy837"},"content":" ArgumentTokenizer.tokenize(\" ; commission : $100/hr\", PREFIX_COMMISSION));","lastModifiedDate":"2024-03-21"},{"lineNumber":212,"author":{"gitId":"Joshy837"},"content":" assertTrue(predicate.test(new MaintainerBuilder().withCommission(\"$100/hr\").build()));","lastModifiedDate":"2024-03-21"},{"lineNumber":213,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":214,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":215,"author":{"gitId":"Joshy837"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":216,"author":{"gitId":"Joshy837"},"content":" public void test_multipleFields_returnsTrue() {","lastModifiedDate":"2024-03-21"},{"lineNumber":217,"author":{"gitId":"Joshy837"},"content":" KeywordPredicate predicate \u003d new KeywordPredicate(","lastModifiedDate":"2024-03-21"},{"lineNumber":218,"author":{"gitId":"Joshy837"},"content":" ArgumentTokenizer.tokenize(\" ; name : Alice ; phone : 98765432\", PREFIX_NAME, PREFIX_PHONE));","lastModifiedDate":"2024-03-21"},{"lineNumber":219,"author":{"gitId":"Joshy837"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice\").withPhone(\"98765432\").build()));","lastModifiedDate":"2024-03-21"},{"lineNumber":220,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":221,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":222,"author":{"gitId":"Joshy837"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":223,"author":{"gitId":"Joshy837"},"content":" public void test_combinationFields_returnsFalse() {","lastModifiedDate":"2024-03-21"},{"lineNumber":224,"author":{"gitId":"Joshy837"},"content":" // Test cases where combination of fields don\u0027t match","lastModifiedDate":"2024-03-21"},{"lineNumber":225,"author":{"gitId":"Joshy837"},"content":" // For example, only name matches","lastModifiedDate":"2024-03-21"},{"lineNumber":226,"author":{"gitId":"Joshy837"},"content":" KeywordPredicate predicate \u003d new KeywordPredicate(","lastModifiedDate":"2024-03-21"},{"lineNumber":227,"author":{"gitId":"Joshy837"},"content":" ArgumentTokenizer.tokenize(\" ; name : Alice ; phone : 12345678\", PREFIX_NAME, PREFIX_PHONE));","lastModifiedDate":"2024-03-21"},{"lineNumber":228,"author":{"gitId":"Joshy837"},"content":" Person person \u003d new PersonBuilder()","lastModifiedDate":"2024-03-21"},{"lineNumber":229,"author":{"gitId":"Joshy837"},"content":" .withName(\"Alice\")","lastModifiedDate":"2024-03-21"},{"lineNumber":230,"author":{"gitId":"Joshy837"},"content":" .withPhone(\"98765432\")","lastModifiedDate":"2024-03-21"},{"lineNumber":231,"author":{"gitId":"Joshy837"},"content":" .withEmail(\"alice@abc.com\")","lastModifiedDate":"2024-03-21"},{"lineNumber":232,"author":{"gitId":"Joshy837"},"content":" .withAddress(\"Pooch123\")","lastModifiedDate":"2024-03-21"},{"lineNumber":233,"author":{"gitId":"Joshy837"},"content":" .build();","lastModifiedDate":"2024-03-21"},{"lineNumber":234,"author":{"gitId":"Joshy837"},"content":" assertFalse(predicate.test(person));","lastModifiedDate":"2024-03-21"},{"lineNumber":235,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":236,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":237,"author":{"gitId":"Joshy837"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":238,"author":{"gitId":"Joshy837"},"content":" public void test_salaryFieldOnPerson_returnsFalse() {","lastModifiedDate":"2024-03-21"},{"lineNumber":239,"author":{"gitId":"Joshy837"},"content":" KeywordPredicate predicate \u003d new KeywordPredicate(","lastModifiedDate":"2024-03-21"},{"lineNumber":240,"author":{"gitId":"Joshy837"},"content":" ArgumentTokenizer.tokenize(\" ; salary : $10/hr\", PREFIX_SALARY));","lastModifiedDate":"2024-03-21"},{"lineNumber":241,"author":{"gitId":"Joshy837"},"content":" Person person \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":242,"author":{"gitId":"Joshy837"},"content":" assertFalse(predicate.test(person));","lastModifiedDate":"2024-03-21"},{"lineNumber":243,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":244,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":245,"author":{"gitId":"Joshy837"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":246,"author":{"gitId":"Joshy837"},"content":" public void test_employmentFieldOnPerson_returnsFalse() {","lastModifiedDate":"2024-03-21"},{"lineNumber":247,"author":{"gitId":"Joshy837"},"content":" KeywordPredicate predicate \u003d new KeywordPredicate(","lastModifiedDate":"2024-03-21"},{"lineNumber":248,"author":{"gitId":"Joshy837"},"content":" ArgumentTokenizer.tokenize(\" ; employment : part-time\", PREFIX_EMPLOYMENT));","lastModifiedDate":"2024-03-21"},{"lineNumber":249,"author":{"gitId":"Joshy837"},"content":" Person person \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":250,"author":{"gitId":"Joshy837"},"content":" assertFalse(predicate.test(person));","lastModifiedDate":"2024-03-21"},{"lineNumber":251,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":252,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":253,"author":{"gitId":"Joshy837"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":254,"author":{"gitId":"Joshy837"},"content":" public void test_priceFieldOnPerson_returnsFalse() {","lastModifiedDate":"2024-03-21"},{"lineNumber":255,"author":{"gitId":"Joshy837"},"content":" KeywordPredicate predicate \u003d new KeywordPredicate(","lastModifiedDate":"2024-03-21"},{"lineNumber":256,"author":{"gitId":"Joshy837"},"content":" ArgumentTokenizer.tokenize(\" ; price : $50/bag\", PREFIX_PRICE));","lastModifiedDate":"2024-03-21"},{"lineNumber":257,"author":{"gitId":"Joshy837"},"content":" Person person \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":258,"author":{"gitId":"Joshy837"},"content":" assertFalse(predicate.test(person));","lastModifiedDate":"2024-03-21"},{"lineNumber":259,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":260,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":261,"author":{"gitId":"Joshy837"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":262,"author":{"gitId":"Joshy837"},"content":" public void test_productFieldOnPerson_returnsFalse() {","lastModifiedDate":"2024-03-21"},{"lineNumber":263,"author":{"gitId":"Joshy837"},"content":" KeywordPredicate predicate \u003d new KeywordPredicate(","lastModifiedDate":"2024-03-21"},{"lineNumber":264,"author":{"gitId":"Joshy837"},"content":" ArgumentTokenizer.tokenize(\" ; product : dog food\", PREFIX_PRODUCT));","lastModifiedDate":"2024-03-21"},{"lineNumber":265,"author":{"gitId":"Joshy837"},"content":" Person person \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":266,"author":{"gitId":"Joshy837"},"content":" assertFalse(predicate.test(person));","lastModifiedDate":"2024-03-21"},{"lineNumber":267,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":268,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":269,"author":{"gitId":"Joshy837"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":270,"author":{"gitId":"Joshy837"},"content":" public void test_skillFieldOnPerson_returnsFalse() {","lastModifiedDate":"2024-03-21"},{"lineNumber":271,"author":{"gitId":"Joshy837"},"content":" KeywordPredicate predicate \u003d new KeywordPredicate(","lastModifiedDate":"2024-03-21"},{"lineNumber":272,"author":{"gitId":"Joshy837"},"content":" ArgumentTokenizer.tokenize(\" ; skill : dog trainer\", PREFIX_SKILL));","lastModifiedDate":"2024-03-21"},{"lineNumber":273,"author":{"gitId":"Joshy837"},"content":" Person person \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":274,"author":{"gitId":"Joshy837"},"content":" assertFalse(predicate.test(person));","lastModifiedDate":"2024-03-21"},{"lineNumber":275,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":276,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":277,"author":{"gitId":"Joshy837"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":278,"author":{"gitId":"Joshy837"},"content":" public void test_commissionFieldOnPerson_returnsFalse() {","lastModifiedDate":"2024-03-21"},{"lineNumber":279,"author":{"gitId":"Joshy837"},"content":" KeywordPredicate predicate \u003d new KeywordPredicate(","lastModifiedDate":"2024-03-21"},{"lineNumber":280,"author":{"gitId":"Joshy837"},"content":" ArgumentTokenizer.tokenize(\" ; commission : $50/hr\", PREFIX_COMMISSION));","lastModifiedDate":"2024-03-21"},{"lineNumber":281,"author":{"gitId":"Joshy837"},"content":" Person person \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":282,"author":{"gitId":"Joshy837"},"content":" assertFalse(predicate.test(person));","lastModifiedDate":"2024-03-21"},{"lineNumber":283,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":284,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":285,"author":{"gitId":"Joshy837"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":286,"author":{"gitId":"Joshy837"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-18"},{"lineNumber":287,"author":{"gitId":"Joshy837"},"content":" ArgumentMultimap keyword \u003d ArgumentTokenizer.tokenize(\" ; name : Alice\", PREFIX_NAME);","lastModifiedDate":"2024-03-18"},{"lineNumber":288,"author":{"gitId":"Joshy837"},"content":" KeywordPredicate predicate \u003d new KeywordPredicate(keyword);","lastModifiedDate":"2024-03-18"},{"lineNumber":289,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":290,"author":{"gitId":"Joshy837"},"content":" String expected \u003d KeywordPredicate.class.getCanonicalName() + \"{keyword\u003d\" + keyword + \"}\";","lastModifiedDate":"2024-03-18"},{"lineNumber":291,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":292,"author":{"gitId":"Joshy837"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2024-03-18"},{"lineNumber":293,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":294,"author":{"gitId":"Joshy837"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"Joshy837":294}},{"path":"src/test/java/seedu/address/model/person/MaintainerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chiageng"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-09"},{"lineNumber":2,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":3,"author":{"gitId":"chiageng"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-09"},{"lineNumber":4,"author":{"gitId":"chiageng"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-09"},{"lineNumber":5,"author":{"gitId":"chiageng"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-09"},{"lineNumber":6,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":7,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-09"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":"import static seedu.address.testutil.TypicalPersons.ALICEMAINTAINER;","lastModifiedDate":"2024-03-09"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":"import static seedu.address.testutil.TypicalPersons.BOBMAINTAINER;","lastModifiedDate":"2024-03-09"},{"lineNumber":13,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-09"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":"import seedu.address.testutil.MaintainerBuilder;","lastModifiedDate":"2024-03-09"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":"public class MaintainerTest {","lastModifiedDate":"2024-03-09"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":20,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":" Maintainer person \u003d new MaintainerBuilder().build();","lastModifiedDate":"2024-03-09"},{"lineNumber":23,"author":{"gitId":"chiageng"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTags().remove(0));","lastModifiedDate":"2024-03-09"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":25,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":26,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":27,"author":{"gitId":"chiageng"},"content":" public void isSameStaff() {","lastModifiedDate":"2024-03-09"},{"lineNumber":28,"author":{"gitId":"chiageng"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-09"},{"lineNumber":29,"author":{"gitId":"chiageng"},"content":" assertTrue(ALICEMAINTAINER.isSamePerson(ALICEMAINTAINER));","lastModifiedDate":"2024-03-09"},{"lineNumber":30,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":31,"author":{"gitId":"chiageng"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":32,"author":{"gitId":"chiageng"},"content":" assertFalse(ALICEMAINTAINER.isSamePerson(null));","lastModifiedDate":"2024-03-09"},{"lineNumber":33,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":34,"author":{"gitId":"chiageng"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2024-03-09"},{"lineNumber":35,"author":{"gitId":"chiageng"},"content":" Person editedAlice \u003d new MaintainerBuilder(ALICEMAINTAINER).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-09"},{"lineNumber":36,"author":{"gitId":"chiageng"},"content":" .withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2024-03-09"},{"lineNumber":37,"author":{"gitId":"chiageng"},"content":" .withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":38,"author":{"gitId":"chiageng"},"content":" assertTrue(ALICEMAINTAINER.isSamePerson(editedAlice));","lastModifiedDate":"2024-03-09"},{"lineNumber":39,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":40,"author":{"gitId":"chiageng"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":41,"author":{"gitId":"chiageng"},"content":" editedAlice \u003d new MaintainerBuilder(ALICEMAINTAINER).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":42,"author":{"gitId":"chiageng"},"content":" assertFalse(ALICEMAINTAINER.isSamePerson(editedAlice));","lastModifiedDate":"2024-03-09"},{"lineNumber":43,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":44,"author":{"gitId":"chiageng"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":" Person editedBob \u003d new MaintainerBuilder(BOBMAINTAINER).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":46,"author":{"gitId":"chiageng"},"content":" assertTrue(BOBMAINTAINER.isSamePerson(editedBob));","lastModifiedDate":"2024-03-09"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2024-03-09"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":" editedBob \u003d new MaintainerBuilder(BOBMAINTAINER).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":" assertFalse(BOBMAINTAINER.isSamePerson(editedBob));","lastModifiedDate":"2024-03-09"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":53,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":55,"author":{"gitId":"chiageng"},"content":" public void equals() {","lastModifiedDate":"2024-03-09"},{"lineNumber":56,"author":{"gitId":"chiageng"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-09"},{"lineNumber":57,"author":{"gitId":"chiageng"},"content":" Person aliceCopy \u003d new MaintainerBuilder(ALICEMAINTAINER).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":58,"author":{"gitId":"chiageng"},"content":" assertTrue(ALICEMAINTAINER.equals(aliceCopy));","lastModifiedDate":"2024-03-09"},{"lineNumber":59,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":60,"author":{"gitId":"chiageng"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-09"},{"lineNumber":61,"author":{"gitId":"chiageng"},"content":" assertTrue(ALICEMAINTAINER.equals(ALICEMAINTAINER));","lastModifiedDate":"2024-03-09"},{"lineNumber":62,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":63,"author":{"gitId":"chiageng"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":64,"author":{"gitId":"chiageng"},"content":" assertFalse(ALICEMAINTAINER.equals(null));","lastModifiedDate":"2024-03-09"},{"lineNumber":65,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":66,"author":{"gitId":"chiageng"},"content":" // different type -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":67,"author":{"gitId":"chiageng"},"content":" assertFalse(ALICEMAINTAINER.equals(5));","lastModifiedDate":"2024-03-09"},{"lineNumber":68,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":69,"author":{"gitId":"chiageng"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":70,"author":{"gitId":"chiageng"},"content":" assertFalse(ALICEMAINTAINER.equals(BOBMAINTAINER));","lastModifiedDate":"2024-03-09"},{"lineNumber":71,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":72,"author":{"gitId":"chiageng"},"content":" // different name -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":73,"author":{"gitId":"chiageng"},"content":" Person editedAlice \u003d new MaintainerBuilder(ALICEMAINTAINER).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":74,"author":{"gitId":"chiageng"},"content":" assertFalse(ALICEMAINTAINER.equals(editedAlice));","lastModifiedDate":"2024-03-09"},{"lineNumber":75,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":76,"author":{"gitId":"chiageng"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":77,"author":{"gitId":"chiageng"},"content":" editedAlice \u003d new MaintainerBuilder(ALICEMAINTAINER).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":78,"author":{"gitId":"chiageng"},"content":" assertFalse(ALICEMAINTAINER.equals(editedAlice));","lastModifiedDate":"2024-03-09"},{"lineNumber":79,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":80,"author":{"gitId":"chiageng"},"content":" // different email -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":81,"author":{"gitId":"chiageng"},"content":" editedAlice \u003d new MaintainerBuilder(ALICEMAINTAINER).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":82,"author":{"gitId":"chiageng"},"content":" assertFalse(ALICEMAINTAINER.equals(editedAlice));","lastModifiedDate":"2024-03-09"},{"lineNumber":83,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":84,"author":{"gitId":"chiageng"},"content":" // different address -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":85,"author":{"gitId":"chiageng"},"content":" editedAlice \u003d new MaintainerBuilder(ALICEMAINTAINER).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":86,"author":{"gitId":"chiageng"},"content":" assertFalse(ALICEMAINTAINER.equals(editedAlice));","lastModifiedDate":"2024-03-09"},{"lineNumber":87,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":88,"author":{"gitId":"chiageng"},"content":" /*","lastModifiedDate":"2024-03-09"},{"lineNumber":89,"author":{"gitId":"chiageng"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":90,"author":{"gitId":"chiageng"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":91,"author":{"gitId":"chiageng"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2024-03-09"},{"lineNumber":92,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":93,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":94,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":95,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":96,"author":{"gitId":"chiageng"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-09"},{"lineNumber":97,"author":{"gitId":"chiageng"},"content":" String expected \u003d Maintainer.class.getCanonicalName() + \"{name\u003d\" + ALICEMAINTAINER.getName()","lastModifiedDate":"2024-03-09"},{"lineNumber":98,"author":{"gitId":"chiageng"},"content":" + \", phone\u003d\"","lastModifiedDate":"2024-03-09"},{"lineNumber":99,"author":{"gitId":"chiageng"},"content":" + ALICEMAINTAINER.getPhone()","lastModifiedDate":"2024-03-09"},{"lineNumber":100,"author":{"gitId":"chiageng"},"content":" + \", email\u003d\" + ALICEMAINTAINER.getEmail() + \", address\u003d\"","lastModifiedDate":"2024-03-09"},{"lineNumber":101,"author":{"gitId":"chiageng"},"content":" + ALICEMAINTAINER.getAddress()","lastModifiedDate":"2024-03-09"},{"lineNumber":102,"author":{"gitId":"chiageng"},"content":" + \", tags\u003d\" + ALICEMAINTAINER.getTags()","lastModifiedDate":"2024-03-09"},{"lineNumber":103,"author":{"gitId":"chiageng"},"content":" + \", skill\u003d\" + ALICEMAINTAINER.getSkill()","lastModifiedDate":"2024-03-09"},{"lineNumber":104,"author":{"gitId":"chiageng"},"content":" + \", commission\u003d\" + ALICEMAINTAINER.getCommission()","lastModifiedDate":"2024-03-09"},{"lineNumber":105,"author":{"gitId":"chiageng"},"content":" + \"}\";","lastModifiedDate":"2024-03-09"},{"lineNumber":106,"author":{"gitId":"chiageng"},"content":" assertEquals(expected, ALICEMAINTAINER.toString());","lastModifiedDate":"2024-03-09"},{"lineNumber":107,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":108,"author":{"gitId":"chiageng"},"content":"}","lastModifiedDate":"2024-03-09"}],"authorContributionMap":{"chiageng":108}},{"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":"-"},"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":"-"},"content":" .withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2020-12-18"},{"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":"chiageng"},"content":" assertTrue(BOB.isSamePerson(editedBob));","lastModifiedDate":"2024-03-08"},{"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":"chiageng"},"content":" /*","lastModifiedDate":"2024-03-09"},{"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":"2024-03-09"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2024-03-09"},{"lineNumber":92,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2019-02-23"},{"lineNumber":98,"author":{"gitId":"jannaleong"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", address\u003d\" + ALICE.getAddress() + \", note\u003d\" + ALICE.getNote()","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"jannaleong"},"content":" + \", tags\u003d\" + ALICE.getTags() + \"}\";","lastModifiedDate":"2024-03-19"},{"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":{"chiageng":3,"jannaleong":2,"-":97}},{"path":"src/test/java/seedu/address/model/person/PriceTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chiageng"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-09"},{"lineNumber":2,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":3,"author":{"gitId":"chiageng"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-09"},{"lineNumber":4,"author":{"gitId":"chiageng"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-09"},{"lineNumber":5,"author":{"gitId":"chiageng"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-09"},{"lineNumber":6,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":7,"author":{"gitId":"chiageng"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-09"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":"public class PriceTest {","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":13,"author":{"gitId":"chiageng"},"content":" assertThrows(NullPointerException.class, () -\u003e new Price(null));","lastModifiedDate":"2024-03-09"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":" public void constructor_invalidPrice_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":" String invalidPrice \u003d \"20/hr\";","lastModifiedDate":"2024-03-09"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Price(invalidPrice));","lastModifiedDate":"2024-03-09"},{"lineNumber":20,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":23,"author":{"gitId":"chiageng"},"content":" public void isValidPrice() {","lastModifiedDate":"2024-03-09"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":" // null Price","lastModifiedDate":"2024-03-09"},{"lineNumber":25,"author":{"gitId":"chiageng"},"content":" assertThrows(NullPointerException.class, () -\u003e Price.isValidPrice(null));","lastModifiedDate":"2024-03-09"},{"lineNumber":26,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":27,"author":{"gitId":"chiageng"},"content":" // invalid Price","lastModifiedDate":"2024-03-09"},{"lineNumber":28,"author":{"gitId":"chiageng"},"content":" assertFalse(Price.isValidPrice(\"\")); // empty string","lastModifiedDate":"2024-03-09"},{"lineNumber":29,"author":{"gitId":"chiageng"},"content":" assertFalse(Price.isValidPrice(\" \")); // spaces only","lastModifiedDate":"2024-03-09"},{"lineNumber":30,"author":{"gitId":"chiageng"},"content":" assertFalse(Price.isValidPrice(\"50\"));","lastModifiedDate":"2024-03-09"},{"lineNumber":31,"author":{"gitId":"chiageng"},"content":" assertFalse(Price.isValidPrice(\"50/bag\"));","lastModifiedDate":"2024-03-09"},{"lineNumber":32,"author":{"gitId":"chiageng"},"content":" assertFalse(Price.isValidPrice(\"$50\"));","lastModifiedDate":"2024-03-09"},{"lineNumber":33,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":34,"author":{"gitId":"chiageng"},"content":" // valid Price","lastModifiedDate":"2024-03-09"},{"lineNumber":35,"author":{"gitId":"chiageng"},"content":" assertTrue(Price.isValidPrice(\"$500/bag\")); // exactly 3 numbers","lastModifiedDate":"2024-03-09"},{"lineNumber":36,"author":{"gitId":"chiageng"},"content":" assertTrue(Price.isValidPrice(\"$50/piece\"));","lastModifiedDate":"2024-03-09"},{"lineNumber":37,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":38,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":39,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":40,"author":{"gitId":"chiageng"},"content":" public void equals() {","lastModifiedDate":"2024-03-09"},{"lineNumber":41,"author":{"gitId":"chiageng"},"content":" Price price \u003d new Price(\"$50/bag\");","lastModifiedDate":"2024-03-09"},{"lineNumber":42,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":43,"author":{"gitId":"chiageng"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-09"},{"lineNumber":44,"author":{"gitId":"chiageng"},"content":" assertTrue(price.equals(new Price(\"$50/bag\")));","lastModifiedDate":"2024-03-09"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":46,"author":{"gitId":"chiageng"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-09"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":" assertTrue(price.equals(price));","lastModifiedDate":"2024-03-09"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":" assertFalse(price.equals(null));","lastModifiedDate":"2024-03-09"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":53,"author":{"gitId":"chiageng"},"content":" assertFalse(price.equals(\"$50/bag\"));","lastModifiedDate":"2024-03-09"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":55,"author":{"gitId":"chiageng"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":56,"author":{"gitId":"chiageng"},"content":" assertFalse(price.equals(new Price(\"$50/piece\")));","lastModifiedDate":"2024-03-09"},{"lineNumber":57,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":58,"author":{"gitId":"chiageng"},"content":"}","lastModifiedDate":"2024-03-09"}],"authorContributionMap":{"chiageng":58}},{"path":"src/test/java/seedu/address/model/person/ProductTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chiageng"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-09"},{"lineNumber":2,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":3,"author":{"gitId":"chiageng"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-09"},{"lineNumber":4,"author":{"gitId":"chiageng"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-09"},{"lineNumber":5,"author":{"gitId":"chiageng"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-09"},{"lineNumber":6,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":7,"author":{"gitId":"chiageng"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-09"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":"public class ProductTest {","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":13,"author":{"gitId":"chiageng"},"content":" assertThrows(NullPointerException.class, () -\u003e new Product(null));","lastModifiedDate":"2024-03-09"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":" public void constructor_invalidProduct_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":" String invalidProduct \u003d \"\";","lastModifiedDate":"2024-03-09"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Product(invalidProduct));","lastModifiedDate":"2024-03-09"},{"lineNumber":20,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":23,"author":{"gitId":"chiageng"},"content":" public void isValidProduct() {","lastModifiedDate":"2024-03-09"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":" // null Product","lastModifiedDate":"2024-03-09"},{"lineNumber":25,"author":{"gitId":"chiageng"},"content":" assertThrows(NullPointerException.class, () -\u003e Product.isValidProduct(null));","lastModifiedDate":"2024-03-09"},{"lineNumber":26,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":27,"author":{"gitId":"chiageng"},"content":" // invalid Product","lastModifiedDate":"2024-03-09"},{"lineNumber":28,"author":{"gitId":"chiageng"},"content":" assertFalse(Product.isValidProduct(\"\")); // empty string","lastModifiedDate":"2024-03-09"},{"lineNumber":29,"author":{"gitId":"chiageng"},"content":" assertFalse(Product.isValidProduct(\" \")); // spaces only","lastModifiedDate":"2024-03-09"},{"lineNumber":30,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":31,"author":{"gitId":"chiageng"},"content":" // valid Product","lastModifiedDate":"2024-03-09"},{"lineNumber":32,"author":{"gitId":"chiageng"},"content":" assertTrue(Product.isValidProduct(\"pooch food\"));","lastModifiedDate":"2024-03-09"},{"lineNumber":33,"author":{"gitId":"chiageng"},"content":" assertTrue(Product.isValidProduct(\"medicine\"));","lastModifiedDate":"2024-03-09"},{"lineNumber":34,"author":{"gitId":"chiageng"},"content":" assertTrue(Product.isValidProduct(\"pooch-toy\"));","lastModifiedDate":"2024-03-09"},{"lineNumber":35,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":36,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":37,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":38,"author":{"gitId":"chiageng"},"content":" public void equals() {","lastModifiedDate":"2024-03-09"},{"lineNumber":39,"author":{"gitId":"chiageng"},"content":" Product product \u003d new Product(\"Valid Product\");","lastModifiedDate":"2024-03-09"},{"lineNumber":40,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":41,"author":{"gitId":"chiageng"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-09"},{"lineNumber":42,"author":{"gitId":"chiageng"},"content":" assertTrue(product.equals(new Product(\"Valid Product\")));","lastModifiedDate":"2024-03-09"},{"lineNumber":43,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":44,"author":{"gitId":"chiageng"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-09"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":" assertTrue(product.equals(product));","lastModifiedDate":"2024-03-09"},{"lineNumber":46,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":" assertFalse(product.equals(null));","lastModifiedDate":"2024-03-09"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":" assertFalse(product.equals(\"Valid Product\"));","lastModifiedDate":"2024-03-09"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":53,"author":{"gitId":"chiageng"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":" assertFalse(product.equals(new Product(\"Other Valid Product\")));","lastModifiedDate":"2024-03-09"},{"lineNumber":55,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":56,"author":{"gitId":"chiageng"},"content":"}","lastModifiedDate":"2024-03-09"}],"authorContributionMap":{"chiageng":56}},{"path":"src/test/java/seedu/address/model/person/SalaryTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chiageng"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-09"},{"lineNumber":2,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":3,"author":{"gitId":"chiageng"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-09"},{"lineNumber":4,"author":{"gitId":"chiageng"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-09"},{"lineNumber":5,"author":{"gitId":"chiageng"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-09"},{"lineNumber":6,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":7,"author":{"gitId":"chiageng"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-09"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":"public class SalaryTest {","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":13,"author":{"gitId":"chiageng"},"content":" assertThrows(NullPointerException.class, () -\u003e new Salary(null));","lastModifiedDate":"2024-03-09"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":" public void constructor_invalidSalary_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":" String invalidSalary \u003d \"20/hr\";","lastModifiedDate":"2024-03-09"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Salary(invalidSalary));","lastModifiedDate":"2024-03-09"},{"lineNumber":20,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":23,"author":{"gitId":"chiageng"},"content":" public void isValidSalary() {","lastModifiedDate":"2024-03-09"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":" // null Salary","lastModifiedDate":"2024-03-09"},{"lineNumber":25,"author":{"gitId":"chiageng"},"content":" assertThrows(NullPointerException.class, () -\u003e Salary.isValidSalary(null));","lastModifiedDate":"2024-03-09"},{"lineNumber":26,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":27,"author":{"gitId":"chiageng"},"content":" // invalid Salary","lastModifiedDate":"2024-03-09"},{"lineNumber":28,"author":{"gitId":"chiageng"},"content":" assertFalse(Salary.isValidSalary(\"\")); // empty string","lastModifiedDate":"2024-03-09"},{"lineNumber":29,"author":{"gitId":"chiageng"},"content":" assertFalse(Salary.isValidSalary(\" \")); // spaces only","lastModifiedDate":"2024-03-09"},{"lineNumber":30,"author":{"gitId":"chiageng"},"content":" assertFalse(Salary.isValidSalary(\"50\"));","lastModifiedDate":"2024-03-09"},{"lineNumber":31,"author":{"gitId":"chiageng"},"content":" assertFalse(Salary.isValidSalary(\"50/hr\"));","lastModifiedDate":"2024-03-09"},{"lineNumber":32,"author":{"gitId":"chiageng"},"content":" assertFalse(Salary.isValidSalary(\"$50\"));","lastModifiedDate":"2024-03-09"},{"lineNumber":33,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":34,"author":{"gitId":"chiageng"},"content":" // valid Salary","lastModifiedDate":"2024-03-09"},{"lineNumber":35,"author":{"gitId":"chiageng"},"content":" assertTrue(Salary.isValidSalary(\"$500/hr\")); // exactly 3 numbers","lastModifiedDate":"2024-03-09"},{"lineNumber":36,"author":{"gitId":"chiageng"},"content":" assertTrue(Salary.isValidSalary(\"$50/hr\"));","lastModifiedDate":"2024-03-09"},{"lineNumber":37,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":38,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":39,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":40,"author":{"gitId":"chiageng"},"content":" public void equals() {","lastModifiedDate":"2024-03-09"},{"lineNumber":41,"author":{"gitId":"chiageng"},"content":" Salary salary \u003d new Salary(\"$50/hr\");","lastModifiedDate":"2024-03-09"},{"lineNumber":42,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":43,"author":{"gitId":"chiageng"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-09"},{"lineNumber":44,"author":{"gitId":"chiageng"},"content":" assertTrue(salary.equals(new Salary(\"$50/hr\")));","lastModifiedDate":"2024-03-09"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":46,"author":{"gitId":"chiageng"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-09"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":" assertTrue(salary.equals(salary));","lastModifiedDate":"2024-03-09"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":" assertFalse(salary.equals(null));","lastModifiedDate":"2024-03-09"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":53,"author":{"gitId":"chiageng"},"content":" assertFalse(salary.equals(\"$50/hr\"));","lastModifiedDate":"2024-03-09"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":55,"author":{"gitId":"chiageng"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":56,"author":{"gitId":"chiageng"},"content":" assertFalse(salary.equals(new Salary(\"$60/hr\")));","lastModifiedDate":"2024-03-09"},{"lineNumber":57,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":58,"author":{"gitId":"chiageng"},"content":"}","lastModifiedDate":"2024-03-09"}],"authorContributionMap":{"chiageng":58}},{"path":"src/test/java/seedu/address/model/person/SkillTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chiageng"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-09"},{"lineNumber":2,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":3,"author":{"gitId":"chiageng"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-09"},{"lineNumber":4,"author":{"gitId":"chiageng"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-09"},{"lineNumber":5,"author":{"gitId":"chiageng"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-09"},{"lineNumber":6,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":7,"author":{"gitId":"chiageng"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-09"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":"public class SkillTest {","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":13,"author":{"gitId":"chiageng"},"content":" assertThrows(NullPointerException.class, () -\u003e new Skill(null));","lastModifiedDate":"2024-03-09"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":" public void constructor_invalidSkill_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":" String invalidSkill \u003d \"\";","lastModifiedDate":"2024-03-09"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Skill(invalidSkill));","lastModifiedDate":"2024-03-09"},{"lineNumber":20,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":23,"author":{"gitId":"chiageng"},"content":" public void isValidSkill() {","lastModifiedDate":"2024-03-09"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":" // null skill","lastModifiedDate":"2024-03-09"},{"lineNumber":25,"author":{"gitId":"chiageng"},"content":" assertThrows(NullPointerException.class, () -\u003e Skill.isValidSkill(null));","lastModifiedDate":"2024-03-09"},{"lineNumber":26,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":27,"author":{"gitId":"chiageng"},"content":" // invalid skills","lastModifiedDate":"2024-03-09"},{"lineNumber":28,"author":{"gitId":"chiageng"},"content":" assertFalse(Skill.isValidSkill(\"\")); // empty string","lastModifiedDate":"2024-03-09"},{"lineNumber":29,"author":{"gitId":"chiageng"},"content":" assertFalse(Skill.isValidSkill(\" \")); // spaces only","lastModifiedDate":"2024-03-09"},{"lineNumber":30,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":31,"author":{"gitId":"chiageng"},"content":" // valid skill","lastModifiedDate":"2024-03-09"},{"lineNumber":32,"author":{"gitId":"chiageng"},"content":" assertTrue(Skill.isValidSkill(\"train dog\")); // exactly 3 numbers","lastModifiedDate":"2024-03-09"},{"lineNumber":33,"author":{"gitId":"chiageng"},"content":" assertTrue(Skill.isValidSkill(\"training dog\"));","lastModifiedDate":"2024-03-09"},{"lineNumber":34,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":35,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":36,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":37,"author":{"gitId":"chiageng"},"content":" public void equals() {","lastModifiedDate":"2024-03-09"},{"lineNumber":38,"author":{"gitId":"chiageng"},"content":" Skill skill \u003d new Skill(\"train dog\");","lastModifiedDate":"2024-03-09"},{"lineNumber":39,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":40,"author":{"gitId":"chiageng"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-09"},{"lineNumber":41,"author":{"gitId":"chiageng"},"content":" assertTrue(skill.equals(new Skill(\"train dog\")));","lastModifiedDate":"2024-03-09"},{"lineNumber":42,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":43,"author":{"gitId":"chiageng"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-09"},{"lineNumber":44,"author":{"gitId":"chiageng"},"content":" assertTrue(skill.equals(skill));","lastModifiedDate":"2024-03-09"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":46,"author":{"gitId":"chiageng"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":" assertFalse(skill.equals(null));","lastModifiedDate":"2024-03-09"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":" assertFalse(skill.equals(\"train dog\"));","lastModifiedDate":"2024-03-09"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":53,"author":{"gitId":"chiageng"},"content":" assertFalse(skill.equals(new Skill(\"train\")));","lastModifiedDate":"2024-03-09"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":55,"author":{"gitId":"chiageng"},"content":"}","lastModifiedDate":"2024-03-09"}],"authorContributionMap":{"chiageng":55}},{"path":"src/test/java/seedu/address/model/person/StaffTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chiageng"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-09"},{"lineNumber":2,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":3,"author":{"gitId":"chiageng"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-09"},{"lineNumber":4,"author":{"gitId":"chiageng"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-09"},{"lineNumber":5,"author":{"gitId":"chiageng"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-09"},{"lineNumber":6,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":7,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-09"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-09"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":"import static seedu.address.testutil.TypicalPersons.ALICESTAFF;","lastModifiedDate":"2024-03-09"},{"lineNumber":13,"author":{"gitId":"chiageng"},"content":"import static seedu.address.testutil.TypicalPersons.BOBSTAFF;","lastModifiedDate":"2024-03-09"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-09"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":"import seedu.address.testutil.StaffBuilder;","lastModifiedDate":"2024-03-09"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":"public class StaffTest {","lastModifiedDate":"2024-03-09"},{"lineNumber":20,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":23,"author":{"gitId":"chiageng"},"content":" Staff person \u003d new StaffBuilder().build();","lastModifiedDate":"2024-03-09"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTags().remove(0));","lastModifiedDate":"2024-03-09"},{"lineNumber":25,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":26,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":27,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":28,"author":{"gitId":"chiageng"},"content":" public void isSameStaff() {","lastModifiedDate":"2024-03-09"},{"lineNumber":29,"author":{"gitId":"chiageng"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-09"},{"lineNumber":30,"author":{"gitId":"chiageng"},"content":" assertTrue(ALICESTAFF.isSamePerson(ALICESTAFF));","lastModifiedDate":"2024-03-09"},{"lineNumber":31,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":32,"author":{"gitId":"chiageng"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":33,"author":{"gitId":"chiageng"},"content":" assertFalse(ALICESTAFF.isSamePerson(null));","lastModifiedDate":"2024-03-09"},{"lineNumber":34,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":35,"author":{"gitId":"chiageng"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2024-03-09"},{"lineNumber":36,"author":{"gitId":"chiageng"},"content":" Person editedAlice \u003d new StaffBuilder(ALICESTAFF).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2024-03-09"},{"lineNumber":37,"author":{"gitId":"chiageng"},"content":" .withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":38,"author":{"gitId":"chiageng"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2024-03-09"},{"lineNumber":39,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":40,"author":{"gitId":"chiageng"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":41,"author":{"gitId":"chiageng"},"content":" editedAlice \u003d new StaffBuilder(ALICESTAFF).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":42,"author":{"gitId":"chiageng"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2024-03-09"},{"lineNumber":43,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":44,"author":{"gitId":"chiageng"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":" Person editedBob \u003d new StaffBuilder(BOBSTAFF).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":46,"author":{"gitId":"chiageng"},"content":" assertTrue(BOBSTAFF.isSamePerson(editedBob));","lastModifiedDate":"2024-03-09"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2024-03-09"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":" editedBob \u003d new StaffBuilder(BOBSTAFF).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":" assertFalse(BOBSTAFF.isSamePerson(editedBob));","lastModifiedDate":"2024-03-09"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":53,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":55,"author":{"gitId":"chiageng"},"content":" public void equals() {","lastModifiedDate":"2024-03-09"},{"lineNumber":56,"author":{"gitId":"chiageng"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-09"},{"lineNumber":57,"author":{"gitId":"chiageng"},"content":" Person aliceCopy \u003d new StaffBuilder(ALICESTAFF).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":58,"author":{"gitId":"chiageng"},"content":" assertTrue(ALICESTAFF.equals(aliceCopy));","lastModifiedDate":"2024-03-09"},{"lineNumber":59,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":60,"author":{"gitId":"chiageng"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-09"},{"lineNumber":61,"author":{"gitId":"chiageng"},"content":" assertTrue(ALICESTAFF.equals(ALICESTAFF));","lastModifiedDate":"2024-03-09"},{"lineNumber":62,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":63,"author":{"gitId":"chiageng"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":64,"author":{"gitId":"chiageng"},"content":" assertFalse(ALICESTAFF.equals(null));","lastModifiedDate":"2024-03-09"},{"lineNumber":65,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":66,"author":{"gitId":"chiageng"},"content":" // different type -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":67,"author":{"gitId":"chiageng"},"content":" assertFalse(ALICESTAFF.equals(5));","lastModifiedDate":"2024-03-09"},{"lineNumber":68,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":69,"author":{"gitId":"chiageng"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":70,"author":{"gitId":"chiageng"},"content":" assertFalse(ALICESTAFF.equals(BOBSTAFF));","lastModifiedDate":"2024-03-09"},{"lineNumber":71,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":72,"author":{"gitId":"chiageng"},"content":" // different name -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":73,"author":{"gitId":"chiageng"},"content":" Person editedAlice \u003d new StaffBuilder(ALICESTAFF).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":74,"author":{"gitId":"chiageng"},"content":" assertFalse(ALICESTAFF.equals(editedAlice));","lastModifiedDate":"2024-03-09"},{"lineNumber":75,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":76,"author":{"gitId":"chiageng"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":77,"author":{"gitId":"chiageng"},"content":" editedAlice \u003d new StaffBuilder(ALICESTAFF).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":78,"author":{"gitId":"chiageng"},"content":" assertFalse(ALICESTAFF.equals(editedAlice));","lastModifiedDate":"2024-03-09"},{"lineNumber":79,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":80,"author":{"gitId":"chiageng"},"content":" // different email -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":81,"author":{"gitId":"chiageng"},"content":" editedAlice \u003d new StaffBuilder(ALICESTAFF).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":82,"author":{"gitId":"chiageng"},"content":" assertFalse(ALICESTAFF.equals(editedAlice));","lastModifiedDate":"2024-03-09"},{"lineNumber":83,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":84,"author":{"gitId":"chiageng"},"content":" // different address -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":85,"author":{"gitId":"chiageng"},"content":" editedAlice \u003d new StaffBuilder(ALICESTAFF).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":86,"author":{"gitId":"chiageng"},"content":" assertFalse(ALICESTAFF.equals(editedAlice));","lastModifiedDate":"2024-03-09"},{"lineNumber":87,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":88,"author":{"gitId":"chiageng"},"content":" /*","lastModifiedDate":"2024-03-09"},{"lineNumber":89,"author":{"gitId":"chiageng"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":90,"author":{"gitId":"chiageng"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":91,"author":{"gitId":"chiageng"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2024-03-09"},{"lineNumber":92,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":93,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":94,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":95,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":96,"author":{"gitId":"chiageng"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-09"},{"lineNumber":97,"author":{"gitId":"chiageng"},"content":" String expected \u003d Staff.class.getCanonicalName() + \"{name\u003d\" + ALICESTAFF.getName() + \", phone\u003d\"","lastModifiedDate":"2024-03-09"},{"lineNumber":98,"author":{"gitId":"chiageng"},"content":" + ALICESTAFF.getPhone()","lastModifiedDate":"2024-03-09"},{"lineNumber":99,"author":{"gitId":"chiageng"},"content":" + \", email\u003d\" + ALICESTAFF.getEmail() + \", address\u003d\"","lastModifiedDate":"2024-03-09"},{"lineNumber":100,"author":{"gitId":"chiageng"},"content":" + ALICESTAFF.getAddress()","lastModifiedDate":"2024-03-09"},{"lineNumber":101,"author":{"gitId":"chiageng"},"content":" + \", tags\u003d\" + ALICESTAFF.getTags()","lastModifiedDate":"2024-03-09"},{"lineNumber":102,"author":{"gitId":"chiageng"},"content":" + \", salary\u003d\" + ALICESTAFF.getSalary()","lastModifiedDate":"2024-03-09"},{"lineNumber":103,"author":{"gitId":"chiageng"},"content":" + \", employment\u003d\" + ALICESTAFF.getEmployment()","lastModifiedDate":"2024-03-09"},{"lineNumber":104,"author":{"gitId":"chiageng"},"content":" + \"}\";","lastModifiedDate":"2024-03-09"},{"lineNumber":105,"author":{"gitId":"chiageng"},"content":" assertEquals(expected, ALICESTAFF.toString());","lastModifiedDate":"2024-03-09"},{"lineNumber":106,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":107,"author":{"gitId":"chiageng"},"content":"}","lastModifiedDate":"2024-03-09"}],"authorContributionMap":{"chiageng":107}},{"path":"src/test/java/seedu/address/model/person/SupplierTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chiageng"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-09"},{"lineNumber":2,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":3,"author":{"gitId":"chiageng"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-09"},{"lineNumber":4,"author":{"gitId":"chiageng"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-09"},{"lineNumber":5,"author":{"gitId":"chiageng"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-09"},{"lineNumber":6,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":7,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-09"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":"import static seedu.address.testutil.TypicalPersons.ALICESUPPLIER;","lastModifiedDate":"2024-03-09"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":"import static seedu.address.testutil.TypicalPersons.BOBSUPPLIER;","lastModifiedDate":"2024-03-09"},{"lineNumber":13,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-09"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":"import seedu.address.testutil.SupplierBuilder;","lastModifiedDate":"2024-03-09"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":"public class SupplierTest {","lastModifiedDate":"2024-03-09"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":20,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":" Supplier person \u003d new SupplierBuilder().build();","lastModifiedDate":"2024-03-09"},{"lineNumber":23,"author":{"gitId":"chiageng"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTags().remove(0));","lastModifiedDate":"2024-03-09"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":25,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":26,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":27,"author":{"gitId":"chiageng"},"content":" public void isSameStaff() {","lastModifiedDate":"2024-03-09"},{"lineNumber":28,"author":{"gitId":"chiageng"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-09"},{"lineNumber":29,"author":{"gitId":"chiageng"},"content":" assertTrue(ALICESUPPLIER.isSamePerson(ALICESUPPLIER));","lastModifiedDate":"2024-03-09"},{"lineNumber":30,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":31,"author":{"gitId":"chiageng"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":32,"author":{"gitId":"chiageng"},"content":" assertFalse(ALICESUPPLIER.isSamePerson(null));","lastModifiedDate":"2024-03-09"},{"lineNumber":33,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":34,"author":{"gitId":"chiageng"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2024-03-09"},{"lineNumber":35,"author":{"gitId":"chiageng"},"content":" Person editedAlice \u003d new SupplierBuilder(ALICESUPPLIER).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2024-03-09"},{"lineNumber":36,"author":{"gitId":"chiageng"},"content":" .withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":37,"author":{"gitId":"chiageng"},"content":" assertTrue(ALICESUPPLIER.isSamePerson(editedAlice));","lastModifiedDate":"2024-03-09"},{"lineNumber":38,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":39,"author":{"gitId":"chiageng"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":40,"author":{"gitId":"chiageng"},"content":" editedAlice \u003d new SupplierBuilder(ALICESUPPLIER).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":41,"author":{"gitId":"chiageng"},"content":" assertFalse(ALICESUPPLIER.isSamePerson(editedAlice));","lastModifiedDate":"2024-03-09"},{"lineNumber":42,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":43,"author":{"gitId":"chiageng"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":44,"author":{"gitId":"chiageng"},"content":" Person editedBob \u003d new SupplierBuilder(BOBSUPPLIER).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":" assertTrue(BOBSUPPLIER.isSamePerson(editedBob));","lastModifiedDate":"2024-03-09"},{"lineNumber":46,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2024-03-09"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":" editedBob \u003d new SupplierBuilder(BOBSUPPLIER).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":" assertFalse(BOBSUPPLIER.isSamePerson(editedBob));","lastModifiedDate":"2024-03-09"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":53,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":" public void equals() {","lastModifiedDate":"2024-03-09"},{"lineNumber":55,"author":{"gitId":"chiageng"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-09"},{"lineNumber":56,"author":{"gitId":"chiageng"},"content":" Person aliceCopy \u003d new SupplierBuilder(ALICESUPPLIER).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":57,"author":{"gitId":"chiageng"},"content":" assertTrue(ALICESUPPLIER.equals(aliceCopy));","lastModifiedDate":"2024-03-09"},{"lineNumber":58,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":59,"author":{"gitId":"chiageng"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-09"},{"lineNumber":60,"author":{"gitId":"chiageng"},"content":" assertTrue(ALICESUPPLIER.equals(ALICESUPPLIER));","lastModifiedDate":"2024-03-09"},{"lineNumber":61,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":62,"author":{"gitId":"chiageng"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":63,"author":{"gitId":"chiageng"},"content":" assertFalse(ALICESUPPLIER.equals(null));","lastModifiedDate":"2024-03-09"},{"lineNumber":64,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":65,"author":{"gitId":"chiageng"},"content":" // different type -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":66,"author":{"gitId":"chiageng"},"content":" assertFalse(ALICESUPPLIER.equals(5));","lastModifiedDate":"2024-03-09"},{"lineNumber":67,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":68,"author":{"gitId":"chiageng"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":69,"author":{"gitId":"chiageng"},"content":" assertFalse(ALICESUPPLIER.equals(BOBSUPPLIER));","lastModifiedDate":"2024-03-09"},{"lineNumber":70,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":71,"author":{"gitId":"chiageng"},"content":" // different name -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":72,"author":{"gitId":"chiageng"},"content":" Person editedAlice \u003d new SupplierBuilder(ALICESUPPLIER).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":73,"author":{"gitId":"chiageng"},"content":" assertFalse(ALICESUPPLIER.equals(editedAlice));","lastModifiedDate":"2024-03-09"},{"lineNumber":74,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":75,"author":{"gitId":"chiageng"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":76,"author":{"gitId":"chiageng"},"content":" editedAlice \u003d new SupplierBuilder(ALICESUPPLIER).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":77,"author":{"gitId":"chiageng"},"content":" assertFalse(ALICESUPPLIER.equals(editedAlice));","lastModifiedDate":"2024-03-09"},{"lineNumber":78,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":79,"author":{"gitId":"chiageng"},"content":" // different email -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":80,"author":{"gitId":"chiageng"},"content":" editedAlice \u003d new SupplierBuilder(ALICESUPPLIER).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":81,"author":{"gitId":"chiageng"},"content":" assertFalse(ALICESUPPLIER.equals(editedAlice));","lastModifiedDate":"2024-03-09"},{"lineNumber":82,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":83,"author":{"gitId":"chiageng"},"content":" // different address -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":84,"author":{"gitId":"chiageng"},"content":" editedAlice \u003d new SupplierBuilder(ALICESUPPLIER).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":85,"author":{"gitId":"chiageng"},"content":" assertFalse(ALICESUPPLIER.equals(editedAlice));","lastModifiedDate":"2024-03-09"},{"lineNumber":86,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":87,"author":{"gitId":"chiageng"},"content":" /*","lastModifiedDate":"2024-03-09"},{"lineNumber":88,"author":{"gitId":"chiageng"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":89,"author":{"gitId":"chiageng"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":90,"author":{"gitId":"chiageng"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2024-03-09"},{"lineNumber":91,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":92,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":93,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":94,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":95,"author":{"gitId":"chiageng"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-09"},{"lineNumber":96,"author":{"gitId":"chiageng"},"content":" String expected \u003d Supplier.class.getCanonicalName() + \"{name\u003d\" + ALICESUPPLIER.getName() + \", phone\u003d\"","lastModifiedDate":"2024-03-09"},{"lineNumber":97,"author":{"gitId":"chiageng"},"content":" + ALICESUPPLIER.getPhone()","lastModifiedDate":"2024-03-09"},{"lineNumber":98,"author":{"gitId":"chiageng"},"content":" + \", email\u003d\" + ALICESUPPLIER.getEmail() + \", address\u003d\"","lastModifiedDate":"2024-03-09"},{"lineNumber":99,"author":{"gitId":"chiageng"},"content":" + ALICESUPPLIER.getAddress()","lastModifiedDate":"2024-03-09"},{"lineNumber":100,"author":{"gitId":"chiageng"},"content":" + \", tags\u003d\" + ALICESUPPLIER.getTags()","lastModifiedDate":"2024-03-09"},{"lineNumber":101,"author":{"gitId":"chiageng"},"content":" + \", product\u003d\" + ALICESUPPLIER.getProduct()","lastModifiedDate":"2024-03-09"},{"lineNumber":102,"author":{"gitId":"chiageng"},"content":" + \", price\u003d\" + ALICESUPPLIER.getPrice()","lastModifiedDate":"2024-03-09"},{"lineNumber":103,"author":{"gitId":"chiageng"},"content":" + \"}\";","lastModifiedDate":"2024-03-09"},{"lineNumber":104,"author":{"gitId":"chiageng"},"content":" assertEquals(expected, ALICESUPPLIER.toString());","lastModifiedDate":"2024-03-09"},{"lineNumber":105,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":106,"author":{"gitId":"chiageng"},"content":"}","lastModifiedDate":"2024-03-09"}],"authorContributionMap":{"chiageng":106}},{"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":"chiageng"},"content":"import static seedu.address.testutil.TypicalPersons.BENSONMAINTAINER;","lastModifiedDate":"2024-03-09"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":"import static seedu.address.testutil.TypicalPersons.BENSONSTAFF;","lastModifiedDate":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":"import static seedu.address.testutil.TypicalPersons.BENSONSUPPLIER;","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","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-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Commission;","lastModifiedDate":"2024-03-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Employment;","lastModifiedDate":"2024-03-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Price;","lastModifiedDate":"2024-03-09"},{"lineNumber":25,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Product;","lastModifiedDate":"2024-03-09"},{"lineNumber":26,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Salary;","lastModifiedDate":"2024-03-09"},{"lineNumber":27,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Skill;","lastModifiedDate":"2024-03-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"chiageng"},"content":" private static final String INVALID_SALARY \u003d \"20\";","lastModifiedDate":"2024-03-09"},{"lineNumber":36,"author":{"gitId":"chiageng"},"content":" private static final String INVALID_PRODUCT \u003d \" \";","lastModifiedDate":"2024-03-09"},{"lineNumber":37,"author":{"gitId":"chiageng"},"content":" private static final String INVALID_EMPLOYMENT \u003d \"employment\";","lastModifiedDate":"2024-03-09"},{"lineNumber":38,"author":{"gitId":"chiageng"},"content":" private static final String INVALID_PRICE \u003d \"20\";","lastModifiedDate":"2024-03-09"},{"lineNumber":39,"author":{"gitId":"chiageng"},"content":" private static final String INVALID_SKILL \u003d \" \";","lastModifiedDate":"2024-03-09"},{"lineNumber":40,"author":{"gitId":"chiageng"},"content":" private static final String INVALID_COMMISSION \u003d \"20\";","lastModifiedDate":"2024-03-09"},{"lineNumber":41,"author":{"gitId":"chiageng"},"content":" private static final String NULL \u003d null;","lastModifiedDate":"2024-03-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"jannaleong"},"content":" private static final String VALID_NOTE \u003d BENSON.getNote().toString();","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":" private static final String VALID_SALARY \u003d BENSONSTAFF.getSalary().toString();","lastModifiedDate":"2024-03-09"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":" private static final String VALID_EMPLOYMENT \u003d BENSONSTAFF.getEmployment().toString();","lastModifiedDate":"2024-03-09"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":" private static final String VALID_PRODUCT \u003d BENSONSUPPLIER.getProduct().toString();","lastModifiedDate":"2024-03-09"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":" private static final String VALID_PRICE \u003d BENSONSUPPLIER.getPrice().toString();","lastModifiedDate":"2024-03-09"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":" private static final String VALID_SKILL \u003d BENSONMAINTAINER.getSkill().toString();","lastModifiedDate":"2024-03-09"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":" private static final String VALID_COMMISSION \u003d BENSONMAINTAINER.getCommission().toString();","lastModifiedDate":"2024-03-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","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_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","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":"chiageng"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":65,"author":{"gitId":"chiageng"},"content":" public void toModelType_validStaffDetails_returnsPerson() throws Exception {","lastModifiedDate":"2024-03-09"},{"lineNumber":66,"author":{"gitId":"chiageng"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedStaff(BENSONSTAFF);","lastModifiedDate":"2024-03-09"},{"lineNumber":67,"author":{"gitId":"chiageng"},"content":" assertEquals(BENSONSTAFF, person.toModelType());","lastModifiedDate":"2024-03-09"},{"lineNumber":68,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":69,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":70,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":71,"author":{"gitId":"chiageng"},"content":" public void toModelType_validSupplierDetails_returnsPerson() throws Exception {","lastModifiedDate":"2024-03-09"},{"lineNumber":72,"author":{"gitId":"chiageng"},"content":" JsonAdaptedSupplier person \u003d new JsonAdaptedSupplier(BENSONSUPPLIER);","lastModifiedDate":"2024-03-09"},{"lineNumber":73,"author":{"gitId":"chiageng"},"content":" assertEquals(BENSONSUPPLIER, person.toModelType());","lastModifiedDate":"2024-03-09"},{"lineNumber":74,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":75,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":76,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":77,"author":{"gitId":"chiageng"},"content":" public void toModelType_validMaintainerDetails_returnsPerson() throws Exception {","lastModifiedDate":"2024-03-09"},{"lineNumber":78,"author":{"gitId":"chiageng"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedMaintainer(BENSONMAINTAINER);","lastModifiedDate":"2024-03-09"},{"lineNumber":79,"author":{"gitId":"chiageng"},"content":" assertEquals(BENSONMAINTAINER, person.toModelType());","lastModifiedDate":"2024-03-09"},{"lineNumber":80,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":81,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":82,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"jannaleong"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_NOTE, VALID_TAGS,","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"chiageng"},"content":" NULL, NULL, NULL, NULL, NULL, NULL);","lastModifiedDate":"2024-03-09"},{"lineNumber":88,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"jannaleong"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_NOTE,","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"jannaleong"},"content":" VALID_TAGS, NULL, NULL, NULL, NULL, NULL, NULL);","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"jannaleong"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_NOTE, VALID_TAGS,","lastModifiedDate":"2024-03-18"},{"lineNumber":104,"author":{"gitId":"chiageng"},"content":" NULL, NULL, NULL, NULL, NULL, NULL);","lastModifiedDate":"2024-03-09"},{"lineNumber":105,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"jannaleong"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL, VALID_ADDRESS, VALID_NOTE,","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"jannaleong"},"content":" VALID_TAGS, NULL, NULL, NULL, NULL, NULL, NULL);","lastModifiedDate":"2024-03-18"},{"lineNumber":113,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":120,"author":{"gitId":"jannaleong"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_ADDRESS, VALID_NOTE, VALID_TAGS,","lastModifiedDate":"2024-03-18"},{"lineNumber":121,"author":{"gitId":"chiageng"},"content":" NULL, NULL, NULL, NULL, NULL, NULL);","lastModifiedDate":"2024-03-09"},{"lineNumber":122,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":128,"author":{"gitId":"jannaleong"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null, VALID_ADDRESS, VALID_NOTE,","lastModifiedDate":"2024-03-18"},{"lineNumber":129,"author":{"gitId":"jannaleong"},"content":" VALID_TAGS, NULL, NULL, NULL, NULL, NULL, NULL);","lastModifiedDate":"2024-03-18"},{"lineNumber":130,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":135,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":136,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":137,"author":{"gitId":"jannaleong"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_ADDRESS, VALID_NOTE, VALID_TAGS,","lastModifiedDate":"2024-03-18"},{"lineNumber":138,"author":{"gitId":"chiageng"},"content":" NULL, NULL, NULL, NULL, NULL, NULL);","lastModifiedDate":"2024-03-09"},{"lineNumber":139,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":144,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":145,"author":{"gitId":"jannaleong"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, null, VALID_NOTE,","lastModifiedDate":"2024-03-18"},{"lineNumber":146,"author":{"gitId":"jannaleong"},"content":" VALID_TAGS, NULL, NULL, NULL, NULL, NULL, NULL);","lastModifiedDate":"2024-03-18"},{"lineNumber":147,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":151,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":152,"author":{"gitId":"chiageng"},"content":" public void toModelType_invalidSalary_throwsIllegalValueException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":153,"author":{"gitId":"chiageng"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-09"},{"lineNumber":154,"author":{"gitId":"jannaleong"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_NOTE, VALID_TAGS,","lastModifiedDate":"2024-03-18"},{"lineNumber":155,"author":{"gitId":"chiageng"},"content":" INVALID_SALARY, VALID_EMPLOYMENT, NULL, NULL, NULL, NULL);","lastModifiedDate":"2024-03-09"},{"lineNumber":156,"author":{"gitId":"chiageng"},"content":" String expectedMessage \u003d Salary.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-09"},{"lineNumber":157,"author":{"gitId":"chiageng"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-09"},{"lineNumber":158,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":159,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":160,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":161,"author":{"gitId":"chiageng"},"content":" public void toModelType_invalidEmployment_throwsIllegalValueException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":162,"author":{"gitId":"chiageng"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-09"},{"lineNumber":163,"author":{"gitId":"jannaleong"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_NOTE, VALID_TAGS,","lastModifiedDate":"2024-03-18"},{"lineNumber":164,"author":{"gitId":"chiageng"},"content":" VALID_SALARY, INVALID_EMPLOYMENT, NULL, NULL, NULL, NULL);","lastModifiedDate":"2024-03-09"},{"lineNumber":165,"author":{"gitId":"chiageng"},"content":" String expectedMessage \u003d Employment.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-09"},{"lineNumber":166,"author":{"gitId":"chiageng"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-09"},{"lineNumber":167,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":168,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":169,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":170,"author":{"gitId":"chiageng"},"content":" public void toModelType_invalidProduct_throwsIllegalValueException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":171,"author":{"gitId":"chiageng"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-09"},{"lineNumber":172,"author":{"gitId":"jannaleong"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_NOTE, VALID_TAGS,","lastModifiedDate":"2024-03-18"},{"lineNumber":173,"author":{"gitId":"chiageng"},"content":" NULL, NULL, INVALID_PRODUCT, VALID_PRICE, NULL, NULL);","lastModifiedDate":"2024-03-09"},{"lineNumber":174,"author":{"gitId":"chiageng"},"content":" String expectedMessage \u003d Product.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-09"},{"lineNumber":175,"author":{"gitId":"chiageng"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-09"},{"lineNumber":176,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":177,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":178,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":179,"author":{"gitId":"chiageng"},"content":" public void toModelType_invalidPrice_throwsIllegalValueException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":180,"author":{"gitId":"chiageng"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-09"},{"lineNumber":181,"author":{"gitId":"jannaleong"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_NOTE, VALID_TAGS,","lastModifiedDate":"2024-03-18"},{"lineNumber":182,"author":{"gitId":"chiageng"},"content":" NULL, NULL, VALID_PRODUCT, INVALID_PRICE, NULL, NULL);","lastModifiedDate":"2024-03-09"},{"lineNumber":183,"author":{"gitId":"chiageng"},"content":" String expectedMessage \u003d Price.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-09"},{"lineNumber":184,"author":{"gitId":"chiageng"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-09"},{"lineNumber":185,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":186,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":187,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":188,"author":{"gitId":"chiageng"},"content":" public void toModelType_invalidSkill_throwsIllegalValueException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":189,"author":{"gitId":"chiageng"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-09"},{"lineNumber":190,"author":{"gitId":"jannaleong"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_NOTE, VALID_TAGS,","lastModifiedDate":"2024-03-18"},{"lineNumber":191,"author":{"gitId":"chiageng"},"content":" NULL, NULL, NULL, NULL, INVALID_SKILL, VALID_COMMISSION);","lastModifiedDate":"2024-03-09"},{"lineNumber":192,"author":{"gitId":"chiageng"},"content":" String expectedMessage \u003d Skill.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-09"},{"lineNumber":193,"author":{"gitId":"chiageng"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-09"},{"lineNumber":194,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":195,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":196,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":197,"author":{"gitId":"chiageng"},"content":" public void toModelType_invalidCommission_throwsIllegalValueException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":198,"author":{"gitId":"chiageng"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-09"},{"lineNumber":199,"author":{"gitId":"jannaleong"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_NOTE, VALID_TAGS,","lastModifiedDate":"2024-03-18"},{"lineNumber":200,"author":{"gitId":"chiageng"},"content":" NULL, NULL, NULL, NULL, VALID_SKILL, INVALID_COMMISSION);","lastModifiedDate":"2024-03-09"},{"lineNumber":201,"author":{"gitId":"chiageng"},"content":" String expectedMessage \u003d Commission.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-09"},{"lineNumber":202,"author":{"gitId":"chiageng"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-09"},{"lineNumber":203,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":204,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":205,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":206,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":207,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13"},{"lineNumber":208,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13"},{"lineNumber":209,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":210,"author":{"gitId":"jannaleong"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_NOTE, invalidTags,","lastModifiedDate":"2024-03-18"},{"lineNumber":211,"author":{"gitId":"chiageng"},"content":" NULL, NULL, NULL, NULL, NULL, NULL);","lastModifiedDate":"2024-03-09"},{"lineNumber":212,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":213,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":215,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"chiageng":95,"jannaleong":20,"-":100}},{"path":"src/test/java/seedu/address/testutil/EditMaintainerDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yleeyilin"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"yleeyilin"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"yleeyilin"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"yleeyilin"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.logic.commands.EditMaintainerCommand.EditMaintainerDescriptor;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Commission;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Maintainer;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Skill;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"yleeyilin"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"yleeyilin"},"content":" * A utility class to help with building EditMaintainerDescriptor objects.","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"yleeyilin"},"content":"public class EditMaintainerDescriptorBuilder {","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"yleeyilin"},"content":" private EditMaintainerDescriptor descriptor;","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"yleeyilin"},"content":" public EditMaintainerDescriptorBuilder() {","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"yleeyilin"},"content":" descriptor \u003d new EditMaintainerDescriptor();","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"yleeyilin"},"content":" public EditMaintainerDescriptorBuilder(EditMaintainerDescriptor descriptor) {","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"yleeyilin"},"content":" this.descriptor \u003d new EditMaintainerDescriptor(descriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"yleeyilin"},"content":" * Returns an {@code EditMaintainerDescriptor} with fields containing {@code maintainer}\u0027s details","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"yleeyilin"},"content":" public EditMaintainerDescriptorBuilder(Maintainer maintainer) {","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"yleeyilin"},"content":" descriptor \u003d new EditMaintainerDescriptor();","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"yleeyilin"},"content":" descriptor.setName(maintainer.getName());","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"yleeyilin"},"content":" descriptor.setPhone(maintainer.getPhone());","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"yleeyilin"},"content":" descriptor.setEmail(maintainer.getEmail());","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"yleeyilin"},"content":" descriptor.setAddress(maintainer.getAddress());","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"yleeyilin"},"content":" descriptor.setSkill(maintainer.getSkill());","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"yleeyilin"},"content":" descriptor.setCommission(maintainer.getCommission());","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"yleeyilin"},"content":" descriptor.setTags(maintainer.getTags());","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"yleeyilin"},"content":" * Sets the {@code Name} of the {@code EditMaintainerDescriptor} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"yleeyilin"},"content":" public EditMaintainerDescriptorBuilder withName(String name) {","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"yleeyilin"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"yleeyilin"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"yleeyilin"},"content":" * Sets the {@code Phone} of the {@code EditMaintainerDescriptor} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"yleeyilin"},"content":" public EditMaintainerDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"yleeyilin"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"yleeyilin"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"yleeyilin"},"content":" * Sets the {@code Email} of the {@code EditMaintainerDescriptor} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"yleeyilin"},"content":" public EditMaintainerDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"yleeyilin"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"yleeyilin"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"yleeyilin"},"content":" * Sets the {@code Address} of the {@code EditMaintainerDescriptor} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"yleeyilin"},"content":" public EditMaintainerDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"yleeyilin"},"content":" descriptor.setAddress(new Address(address));","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"yleeyilin"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"yleeyilin"},"content":" * Sets the {@code Skill} of the {@code EditMaintainerDescriptor} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"yleeyilin"},"content":" public EditMaintainerDescriptorBuilder withSkill(String skill) {","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"yleeyilin"},"content":" descriptor.setSkill(new Skill(skill));","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"yleeyilin"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"yleeyilin"},"content":" * Sets the {@code Commission} of the {@code EditMaintainerDescriptor} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":88,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"yleeyilin"},"content":" public EditMaintainerDescriptorBuilder withCommission(String commission) {","lastModifiedDate":"2024-03-17"},{"lineNumber":90,"author":{"gitId":"yleeyilin"},"content":" descriptor.setCommission(new Commission(commission));","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"yleeyilin"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"yleeyilin"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code EditMaintainerDescriptor}","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"yleeyilin"},"content":" * that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"yleeyilin"},"content":" public EditMaintainerDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"yleeyilin"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"yleeyilin"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"yleeyilin"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"yleeyilin"},"content":" public EditMaintainerDescriptor build() {","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"yleeyilin"},"content":" return descriptor;","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"yleeyilin"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"yleeyilin":107}},{"path":"src/test/java/seedu/address/testutil/EditStaffDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yleeyilin"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"yleeyilin"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"yleeyilin"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"yleeyilin"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.logic.commands.EditStaffCommand.EditStaffDescriptor;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Employment;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Salary;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Staff;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"yleeyilin"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"yleeyilin"},"content":" * A utility class to help with building EditStaffDescriptor objects.","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"yleeyilin"},"content":"public class EditStaffDescriptorBuilder {","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"yleeyilin"},"content":" private EditStaffDescriptor descriptor;","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"yleeyilin"},"content":" public EditStaffDescriptorBuilder() {","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"yleeyilin"},"content":" descriptor \u003d new EditStaffDescriptor();","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"yleeyilin"},"content":" public EditStaffDescriptorBuilder(EditStaffDescriptor descriptor) {","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"yleeyilin"},"content":" this.descriptor \u003d new EditStaffDescriptor(descriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"yleeyilin"},"content":" * Returns an {@code EditStaffDescriptor} with fields containing {@code staff}\u0027s details","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"yleeyilin"},"content":" public EditStaffDescriptorBuilder(Staff staff) {","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"yleeyilin"},"content":" descriptor \u003d new EditStaffDescriptor();","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"yleeyilin"},"content":" descriptor.setName(staff.getName());","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"yleeyilin"},"content":" descriptor.setPhone(staff.getPhone());","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"yleeyilin"},"content":" descriptor.setEmail(staff.getEmail());","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"yleeyilin"},"content":" descriptor.setAddress(staff.getAddress());","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"yleeyilin"},"content":" descriptor.setSalary(staff.getSalary());","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"yleeyilin"},"content":" descriptor.setEmployment(staff.getEmployment());","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"yleeyilin"},"content":" descriptor.setTags(staff.getTags());","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"yleeyilin"},"content":" * Sets the {@code Name} of the {@code EditStaffDescriptor} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"yleeyilin"},"content":" public EditStaffDescriptorBuilder withName(String name) {","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"yleeyilin"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"yleeyilin"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"yleeyilin"},"content":" * Sets the {@code Phone} of the {@code EditStaffDescriptor} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"yleeyilin"},"content":" public EditStaffDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"yleeyilin"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"yleeyilin"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"yleeyilin"},"content":" * Sets the {@code Email} of the {@code EditStaffDescriptor} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"yleeyilin"},"content":" public EditStaffDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"yleeyilin"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"yleeyilin"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"yleeyilin"},"content":" * Sets the {@code Address} of the {@code EditStaffDescriptor} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"yleeyilin"},"content":" public EditStaffDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"yleeyilin"},"content":" descriptor.setAddress(new Address(address));","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"yleeyilin"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"yleeyilin"},"content":" * Sets the {@code Salary} of the {@code EditStaffDescriptor} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"yleeyilin"},"content":" public EditStaffDescriptorBuilder withSalary(String salary) {","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"yleeyilin"},"content":" descriptor.setSalary(new Salary(salary));","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"yleeyilin"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"yleeyilin"},"content":" * Sets the {@code Employment} of the {@code EditStaffDescriptor} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":88,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"yleeyilin"},"content":" public EditStaffDescriptorBuilder withEmployment(String employment) {","lastModifiedDate":"2024-03-17"},{"lineNumber":90,"author":{"gitId":"yleeyilin"},"content":" descriptor.setEmployment(new Employment(employment));","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"yleeyilin"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"yleeyilin"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code EditStaffDescriptor}","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"yleeyilin"},"content":" * that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"yleeyilin"},"content":" public EditStaffDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"yleeyilin"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"yleeyilin"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"yleeyilin"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"yleeyilin"},"content":" public EditStaffDescriptor build() {","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"yleeyilin"},"content":" return descriptor;","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"yleeyilin"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"yleeyilin":107}},{"path":"src/test/java/seedu/address/testutil/EditSupplierDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yleeyilin"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"yleeyilin"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"yleeyilin"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"yleeyilin"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.logic.commands.EditSupplierCommand.EditSupplierDescriptor;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Price;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Product;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Supplier;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"yleeyilin"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"yleeyilin"},"content":" * A utility class to help with building EditSupplierDescriptor objects.","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"yleeyilin"},"content":"public class EditSupplierDescriptorBuilder {","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"yleeyilin"},"content":" private EditSupplierDescriptor descriptor;","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"yleeyilin"},"content":" public EditSupplierDescriptorBuilder() {","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"yleeyilin"},"content":" descriptor \u003d new EditSupplierDescriptor();","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"yleeyilin"},"content":" public EditSupplierDescriptorBuilder(EditSupplierDescriptor descriptor) {","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"yleeyilin"},"content":" this.descriptor \u003d new EditSupplierDescriptor(descriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"yleeyilin"},"content":" * Returns an {@code EditSupplierDescriptor} with fields containing {@code supplier}\u0027s details","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"yleeyilin"},"content":" public EditSupplierDescriptorBuilder(Supplier supplier) {","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"yleeyilin"},"content":" descriptor \u003d new EditSupplierDescriptor();","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"yleeyilin"},"content":" descriptor.setName(supplier.getName());","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"yleeyilin"},"content":" descriptor.setPhone(supplier.getPhone());","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"yleeyilin"},"content":" descriptor.setEmail(supplier.getEmail());","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"yleeyilin"},"content":" descriptor.setAddress(supplier.getAddress());","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"yleeyilin"},"content":" descriptor.setProduct(supplier.getProduct());","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"yleeyilin"},"content":" descriptor.setPrice(supplier.getPrice());","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"yleeyilin"},"content":" descriptor.setTags(supplier.getTags());","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"yleeyilin"},"content":" * Sets the {@code Name} of the {@code EditSupplierDescriptor} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"yleeyilin"},"content":" public EditSupplierDescriptorBuilder withName(String name) {","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"yleeyilin"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"yleeyilin"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"yleeyilin"},"content":" * Sets the {@code Phone} of the {@code EditSupplierDescriptor} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"yleeyilin"},"content":" public EditSupplierDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"yleeyilin"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"yleeyilin"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"yleeyilin"},"content":" * Sets the {@code Email} of the {@code EditSupplierDescriptor} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"yleeyilin"},"content":" public EditSupplierDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"yleeyilin"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"yleeyilin"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"yleeyilin"},"content":" * Sets the {@code Address} of the {@code EditSupplierDescriptor} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"yleeyilin"},"content":" public EditSupplierDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"yleeyilin"},"content":" descriptor.setAddress(new Address(address));","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"yleeyilin"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"yleeyilin"},"content":" * Sets the {@code Product} of the {@code EditSupplierDescriptor} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"yleeyilin"},"content":" public EditSupplierDescriptorBuilder withProduct(String product) {","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"yleeyilin"},"content":" descriptor.setProduct(new Product(product));","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"yleeyilin"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":88,"author":{"gitId":"yleeyilin"},"content":" * Sets the {@code Price} of the {@code EditSupplierDescriptor} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":90,"author":{"gitId":"yleeyilin"},"content":" public EditSupplierDescriptorBuilder withPrice(String price) {","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"yleeyilin"},"content":" descriptor.setPrice(new Price(price));","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"yleeyilin"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"yleeyilin"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code EditSupplierDescriptor}","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"yleeyilin"},"content":" * that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"yleeyilin"},"content":" public EditSupplierDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"yleeyilin"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"yleeyilin"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"yleeyilin"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"yleeyilin"},"content":" public EditSupplierDescriptor build() {","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"yleeyilin"},"content":" return descriptor;","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"yleeyilin"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"yleeyilin":108}},{"path":"src/test/java/seedu/address/testutil/MaintainerBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chiageng"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-09"},{"lineNumber":2,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":3,"author":{"gitId":"chiageng"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-09"},{"lineNumber":4,"author":{"gitId":"chiageng"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-09"},{"lineNumber":5,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":6,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-09"},{"lineNumber":7,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Commission;","lastModifiedDate":"2024-03-09"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Maintainer;","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-09"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-09"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Skill;","lastModifiedDate":"2024-03-09"},{"lineNumber":13,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-09"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":"/**","lastModifiedDate":"2024-03-09"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2024-03-09"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":"public class MaintainerBuilder {","lastModifiedDate":"2024-03-09"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":20,"author":{"gitId":"chiageng"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2024-03-09"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2024-03-09"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2024-03-09"},{"lineNumber":23,"author":{"gitId":"chiageng"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2024-03-09"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":" public static final String DEFAULT_TAG \u003d \"maintainer\";","lastModifiedDate":"2024-03-09"},{"lineNumber":25,"author":{"gitId":"chiageng"},"content":" public static final String DEFAULT_SKILL \u003d \"train dog\";","lastModifiedDate":"2024-03-09"},{"lineNumber":26,"author":{"gitId":"chiageng"},"content":" public static final String DEFAULT_COMMISSION \u003d \"$50/hr\";","lastModifiedDate":"2024-03-09"},{"lineNumber":27,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":28,"author":{"gitId":"chiageng"},"content":" private Name name;","lastModifiedDate":"2024-03-09"},{"lineNumber":29,"author":{"gitId":"chiageng"},"content":" private Phone phone;","lastModifiedDate":"2024-03-09"},{"lineNumber":30,"author":{"gitId":"chiageng"},"content":" private Email email;","lastModifiedDate":"2024-03-09"},{"lineNumber":31,"author":{"gitId":"chiageng"},"content":" private Address address;","lastModifiedDate":"2024-03-09"},{"lineNumber":32,"author":{"gitId":"chiageng"},"content":" private Skill skill;","lastModifiedDate":"2024-03-09"},{"lineNumber":33,"author":{"gitId":"chiageng"},"content":" private Commission commission;","lastModifiedDate":"2024-03-09"},{"lineNumber":34,"author":{"gitId":"chiageng"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2024-03-09"},{"lineNumber":35,"author":{"gitId":"chiageng"},"content":" private Tag tag;","lastModifiedDate":"2024-03-09"},{"lineNumber":36,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":37,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":38,"author":{"gitId":"chiageng"},"content":" * Creates a {@code MaintainerBuilder} with the default details.","lastModifiedDate":"2024-03-09"},{"lineNumber":39,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":40,"author":{"gitId":"chiageng"},"content":" public MaintainerBuilder() {","lastModifiedDate":"2024-03-09"},{"lineNumber":41,"author":{"gitId":"chiageng"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2024-03-09"},{"lineNumber":42,"author":{"gitId":"chiageng"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2024-03-09"},{"lineNumber":43,"author":{"gitId":"chiageng"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2024-03-09"},{"lineNumber":44,"author":{"gitId":"chiageng"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2024-03-09"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-09"},{"lineNumber":46,"author":{"gitId":"chiageng"},"content":" tag \u003d new Tag(DEFAULT_TAG);","lastModifiedDate":"2024-03-09"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":" tags.add(tag);","lastModifiedDate":"2024-03-09"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":" skill \u003d new Skill(DEFAULT_SKILL);","lastModifiedDate":"2024-03-09"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":" commission \u003d new Commission(DEFAULT_COMMISSION);","lastModifiedDate":"2024-03-09"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":53,"author":{"gitId":"chiageng"},"content":" * Initializes the MaintainerBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2024-03-09"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":55,"author":{"gitId":"chiageng"},"content":" public MaintainerBuilder(Maintainer personToCopy) {","lastModifiedDate":"2024-03-09"},{"lineNumber":56,"author":{"gitId":"chiageng"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2024-03-09"},{"lineNumber":57,"author":{"gitId":"chiageng"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2024-03-09"},{"lineNumber":58,"author":{"gitId":"chiageng"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2024-03-09"},{"lineNumber":59,"author":{"gitId":"chiageng"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2024-03-09"},{"lineNumber":60,"author":{"gitId":"chiageng"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2024-03-09"},{"lineNumber":61,"author":{"gitId":"chiageng"},"content":" tag \u003d new Tag(DEFAULT_TAG);","lastModifiedDate":"2024-03-09"},{"lineNumber":62,"author":{"gitId":"chiageng"},"content":" tags.add(tag);","lastModifiedDate":"2024-03-09"},{"lineNumber":63,"author":{"gitId":"chiageng"},"content":" skill \u003d personToCopy.getSkill();","lastModifiedDate":"2024-03-09"},{"lineNumber":64,"author":{"gitId":"chiageng"},"content":" commission \u003d personToCopy.getCommission();","lastModifiedDate":"2024-03-09"},{"lineNumber":65,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":66,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":67,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":68,"author":{"gitId":"chiageng"},"content":" * Sets the {@code Name} of the {@code Maintainer} that we are building.","lastModifiedDate":"2024-03-09"},{"lineNumber":69,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":70,"author":{"gitId":"chiageng"},"content":" public MaintainerBuilder withName(String name) {","lastModifiedDate":"2024-03-09"},{"lineNumber":71,"author":{"gitId":"chiageng"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2024-03-09"},{"lineNumber":72,"author":{"gitId":"chiageng"},"content":" return this;","lastModifiedDate":"2024-03-09"},{"lineNumber":73,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":74,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":75,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":76,"author":{"gitId":"chiageng"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Maintainer} that we are building.","lastModifiedDate":"2024-03-09"},{"lineNumber":77,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":78,"author":{"gitId":"chiageng"},"content":" public MaintainerBuilder withTags(String ... tags) {","lastModifiedDate":"2024-03-09"},{"lineNumber":79,"author":{"gitId":"chiageng"},"content":" /*","lastModifiedDate":"2024-03-09"},{"lineNumber":80,"author":{"gitId":"chiageng"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2024-03-09"},{"lineNumber":81,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":82,"author":{"gitId":"chiageng"},"content":" return this;","lastModifiedDate":"2024-03-09"},{"lineNumber":83,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":84,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":85,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":86,"author":{"gitId":"chiageng"},"content":" * Sets the {@code Address} of the {@code Maintainer} that we are building.","lastModifiedDate":"2024-03-09"},{"lineNumber":87,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":88,"author":{"gitId":"chiageng"},"content":" public MaintainerBuilder withAddress(String address) {","lastModifiedDate":"2024-03-09"},{"lineNumber":89,"author":{"gitId":"chiageng"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2024-03-09"},{"lineNumber":90,"author":{"gitId":"chiageng"},"content":" return this;","lastModifiedDate":"2024-03-09"},{"lineNumber":91,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":92,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":93,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":94,"author":{"gitId":"chiageng"},"content":" * Sets the {@code Phone} of the {@code Maintainer} that we are building.","lastModifiedDate":"2024-03-09"},{"lineNumber":95,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":96,"author":{"gitId":"chiageng"},"content":" public MaintainerBuilder withPhone(String phone) {","lastModifiedDate":"2024-03-09"},{"lineNumber":97,"author":{"gitId":"chiageng"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2024-03-09"},{"lineNumber":98,"author":{"gitId":"chiageng"},"content":" return this;","lastModifiedDate":"2024-03-09"},{"lineNumber":99,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":100,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":101,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":102,"author":{"gitId":"chiageng"},"content":" * Sets the {@code Email} of the {@code Maintainer} that we are building.","lastModifiedDate":"2024-03-09"},{"lineNumber":103,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":104,"author":{"gitId":"chiageng"},"content":" public MaintainerBuilder withEmail(String email) {","lastModifiedDate":"2024-03-09"},{"lineNumber":105,"author":{"gitId":"chiageng"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2024-03-09"},{"lineNumber":106,"author":{"gitId":"chiageng"},"content":" return this;","lastModifiedDate":"2024-03-09"},{"lineNumber":107,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":108,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":109,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":110,"author":{"gitId":"chiageng"},"content":" * Sets the {@code Product} of the {@code Maintainer} that we are building.","lastModifiedDate":"2024-03-09"},{"lineNumber":111,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":112,"author":{"gitId":"chiageng"},"content":" public MaintainerBuilder withSkill(String skill) {","lastModifiedDate":"2024-03-09"},{"lineNumber":113,"author":{"gitId":"chiageng"},"content":" this.skill \u003d new Skill(skill);","lastModifiedDate":"2024-03-09"},{"lineNumber":114,"author":{"gitId":"chiageng"},"content":" return this;","lastModifiedDate":"2024-03-09"},{"lineNumber":115,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":116,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":117,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":118,"author":{"gitId":"chiageng"},"content":" * Sets the {@code Price} of the {@code Maintainer} that we are building.","lastModifiedDate":"2024-03-09"},{"lineNumber":119,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":120,"author":{"gitId":"chiageng"},"content":" public MaintainerBuilder withCommission(String commission) {","lastModifiedDate":"2024-03-09"},{"lineNumber":121,"author":{"gitId":"chiageng"},"content":" this.commission \u003d new Commission(commission);","lastModifiedDate":"2024-03-09"},{"lineNumber":122,"author":{"gitId":"chiageng"},"content":" return this;","lastModifiedDate":"2024-03-09"},{"lineNumber":123,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":124,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":125,"author":{"gitId":"chiageng"},"content":" public Maintainer build() {","lastModifiedDate":"2024-03-09"},{"lineNumber":126,"author":{"gitId":"chiageng"},"content":" return new Maintainer(name, phone, email, address, tags, skill, commission);","lastModifiedDate":"2024-03-09"},{"lineNumber":127,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":128,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":129,"author":{"gitId":"chiageng"},"content":"}","lastModifiedDate":"2024-03-09"}],"authorContributionMap":{"chiageng":129}},{"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":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-01-18"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":"import seedu.address.model.person.Note;","lastModifiedDate":"2024-03-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":"","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":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03"},{"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":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":" public static final String DEFAULT_NOTE \u003d \"\";","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":" public static final String DEFAULT_TAG \u003d \"other\";","lastModifiedDate":"2024-03-08"},{"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":"jannaleong"},"content":" private Note note;","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20"},{"lineNumber":32,"author":{"gitId":"chiageng"},"content":" private Tag tag;","lastModifiedDate":"2024-03-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20"},{"lineNumber":41,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20"},{"lineNumber":42,"author":{"gitId":"jannaleong"},"content":" note \u003d new Note(DEFAULT_NOTE);","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":44,"author":{"gitId":"chiageng"},"content":" tag \u003d new Tag(DEFAULT_TAG);","lastModifiedDate":"2024-03-08"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":" tags.add(tag);","lastModifiedDate":"2024-03-08"},{"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":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20"},{"lineNumber":54,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20"},{"lineNumber":56,"author":{"gitId":"jannaleong"},"content":" note \u003d personToCopy.getNote();","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20"},{"lineNumber":58,"author":{"gitId":"chiageng"},"content":" tag \u003d new Tag(DEFAULT_TAG);","lastModifiedDate":"2024-03-08"},{"lineNumber":59,"author":{"gitId":"chiageng"},"content":" tags.add(tag);","lastModifiedDate":"2024-03-08"},{"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":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":71,"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":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String ... tags) {","lastModifiedDate":"2017-08-15"},{"lineNumber":74,"author":{"gitId":"chiageng"},"content":" /*","lastModifiedDate":"2024-03-09"},{"lineNumber":75,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2024-03-09"},{"lineNumber":76,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"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":"2017-07-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":84,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","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":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"jannaleong"},"content":" * Sets the {@code Note} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"jannaleong"},"content":" public PersonBuilder withNote(String note) {","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"jannaleong"},"content":" this.note \u003d new Note(note);","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"jannaleong"},"content":" return this;","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":100,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20"},{"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":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":108,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20"},{"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":" public Person build() {","lastModifiedDate":"2017-04-05"},{"lineNumber":113,"author":{"gitId":"jannaleong"},"content":" return new Person(name, phone, email, address, note, tags);","lastModifiedDate":"2024-03-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":{"chiageng":8,"jannaleong":14,"-":94}},{"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":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COMMISSION;","lastModifiedDate":"2024-03-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":6,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMPLOYMENT;","lastModifiedDate":"2024-03-09"},{"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":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PRICE;","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PRODUCT;","lastModifiedDate":"2024-03-09"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SALARY;","lastModifiedDate":"2024-03-09"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SKILL;","lastModifiedDate":"2024-03-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":"import seedu.address.logic.commands.AddMaintainerCommand;","lastModifiedDate":"2024-03-09"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":"import seedu.address.logic.commands.AddStaffCommand;","lastModifiedDate":"2024-03-09"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":"import seedu.address.logic.commands.AddSupplierCommand;","lastModifiedDate":"2024-03-09"},{"lineNumber":18,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2018-03-26"},{"lineNumber":20,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.logic.commands.EditMaintainerCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.logic.commands.EditMaintainerCommand.EditMaintainerDescriptor;","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.logic.commands.EditStaffCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.logic.commands.EditStaffCommand.EditStaffDescriptor;","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.logic.commands.EditSupplierCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.logic.commands.EditSupplierCommand.EditSupplierDescriptor;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Maintainer;","lastModifiedDate":"2024-03-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":28,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Staff;","lastModifiedDate":"2024-03-09"},{"lineNumber":29,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Supplier;","lastModifiedDate":"2024-03-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static String getAddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2017-03-29"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06"},{"lineNumber":43,"author":{"gitId":"chiageng"},"content":" public static String getAddStaffCommand(Staff person) {","lastModifiedDate":"2024-03-09"},{"lineNumber":44,"author":{"gitId":"chiageng"},"content":" return AddStaffCommand.COMMAND_WORD + \" \" + getStaffDetails(person);","lastModifiedDate":"2024-03-09"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":46,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":" public static String getAddSupplierCommand(Supplier person) {","lastModifiedDate":"2024-03-09"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":" return AddSupplierCommand.COMMAND_WORD + \" \" + getSupplierDetails(person);","lastModifiedDate":"2024-03-09"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":50,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":" public static String getAddMaintainerCommand(Maintainer person) {","lastModifiedDate":"2024-03-09"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":" return AddMaintainerCommand.COMMAND_WORD + \" \" + getMaintainerDetails(person);","lastModifiedDate":"2024-03-09"},{"lineNumber":53,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":55,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"yleeyilin"},"content":" * Returns an edit command string for adding the {@code person}.","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"yleeyilin"},"content":" public static String getEditCommand(Person person) {","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"yleeyilin"},"content":" return EditCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"yleeyilin"},"content":" public static String getEditStaffCommand(Staff person) {","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"yleeyilin"},"content":" return EditStaffCommand.COMMAND_WORD + \" \" + getStaffDetails(person);","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"yleeyilin"},"content":" public static String getEditSupplierCommand(Supplier person) {","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"yleeyilin"},"content":" return EditSupplierCommand.COMMAND_WORD + \" \" + getSupplierDetails(person);","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"yleeyilin"},"content":" public static String getEditMaintainerCommand(Maintainer person) {","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"yleeyilin"},"content":" return EditMaintainerCommand.COMMAND_WORD + \" \" + getMaintainerDetails(person);","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":79,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05"},{"lineNumber":80,"author":{"gitId":"-"},"content":" sb.append(PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2017-06-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":" sb.append(PREFIX_PHONE + person.getPhone().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":82,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":83,"author":{"gitId":"-"},"content":" sb.append(PREFIX_ADDRESS + person.getAddress().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":84,"author":{"gitId":"chiageng"},"content":" /*","lastModifiedDate":"2024-03-09"},{"lineNumber":85,"author":{"gitId":"-"},"content":" person.getTags().stream().forEach(","lastModifiedDate":"2024-03-09"},{"lineNumber":86,"author":{"gitId":"-"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2024-03-09"},{"lineNumber":87,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2024-03-09"},{"lineNumber":88,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":92,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":93,"author":{"gitId":"chiageng"},"content":" * Returns the part of command string for the given {@code staff}\u0027s details.","lastModifiedDate":"2024-03-09"},{"lineNumber":94,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":95,"author":{"gitId":"chiageng"},"content":" public static String getStaffDetails(Staff person) {","lastModifiedDate":"2024-03-09"},{"lineNumber":96,"author":{"gitId":"chiageng"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-03-09"},{"lineNumber":97,"author":{"gitId":"chiageng"},"content":" sb.append(PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2024-03-09"},{"lineNumber":98,"author":{"gitId":"chiageng"},"content":" sb.append(PREFIX_PHONE + person.getPhone().value + \" \");","lastModifiedDate":"2024-03-09"},{"lineNumber":99,"author":{"gitId":"chiageng"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2024-03-09"},{"lineNumber":100,"author":{"gitId":"chiageng"},"content":" sb.append(PREFIX_ADDRESS + person.getAddress().value + \" \");","lastModifiedDate":"2024-03-09"},{"lineNumber":101,"author":{"gitId":"chiageng"},"content":" sb.append(PREFIX_SALARY + person.getSalary().value + \" \");","lastModifiedDate":"2024-03-09"},{"lineNumber":102,"author":{"gitId":"chiageng"},"content":" sb.append(PREFIX_EMPLOYMENT + person.getEmployment().value + \" \");","lastModifiedDate":"2024-03-18"},{"lineNumber":103,"author":{"gitId":"chiageng"},"content":" return sb.toString();","lastModifiedDate":"2024-03-09"},{"lineNumber":104,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":105,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":106,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":107,"author":{"gitId":"chiageng"},"content":" * Returns the part of command string for the given {@code supplier}\u0027s details.","lastModifiedDate":"2024-03-09"},{"lineNumber":108,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":109,"author":{"gitId":"chiageng"},"content":" public static String getSupplierDetails(Supplier person) {","lastModifiedDate":"2024-03-09"},{"lineNumber":110,"author":{"gitId":"chiageng"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-03-09"},{"lineNumber":111,"author":{"gitId":"chiageng"},"content":" sb.append(PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2024-03-09"},{"lineNumber":112,"author":{"gitId":"chiageng"},"content":" sb.append(PREFIX_PHONE + person.getPhone().value + \" \");","lastModifiedDate":"2024-03-09"},{"lineNumber":113,"author":{"gitId":"chiageng"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2024-03-09"},{"lineNumber":114,"author":{"gitId":"chiageng"},"content":" sb.append(PREFIX_ADDRESS + person.getAddress().value + \" \");","lastModifiedDate":"2024-03-09"},{"lineNumber":115,"author":{"gitId":"chiageng"},"content":" sb.append(PREFIX_PRODUCT + person.getProduct().value + \" \");","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"chiageng"},"content":" sb.append(PREFIX_PRICE + person.getPrice().value + \" \");","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"chiageng"},"content":" return sb.toString();","lastModifiedDate":"2024-03-09"},{"lineNumber":118,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":119,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":120,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":121,"author":{"gitId":"chiageng"},"content":" * Returns the part of command string for the given {@code maintainer}\u0027s details.","lastModifiedDate":"2024-03-09"},{"lineNumber":122,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":123,"author":{"gitId":"chiageng"},"content":" public static String getMaintainerDetails(Maintainer person) {","lastModifiedDate":"2024-03-09"},{"lineNumber":124,"author":{"gitId":"chiageng"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-03-09"},{"lineNumber":125,"author":{"gitId":"chiageng"},"content":" sb.append(PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2024-03-09"},{"lineNumber":126,"author":{"gitId":"chiageng"},"content":" sb.append(PREFIX_PHONE + person.getPhone().value + \" \");","lastModifiedDate":"2024-03-09"},{"lineNumber":127,"author":{"gitId":"chiageng"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2024-03-09"},{"lineNumber":128,"author":{"gitId":"chiageng"},"content":" sb.append(PREFIX_ADDRESS + person.getAddress().value + \" \");","lastModifiedDate":"2024-03-09"},{"lineNumber":129,"author":{"gitId":"chiageng"},"content":" sb.append(PREFIX_SKILL + person.getSkill().value + \" \");","lastModifiedDate":"2024-03-18"},{"lineNumber":130,"author":{"gitId":"chiageng"},"content":" sb.append(PREFIX_COMMISSION + person.getCommission().value + \" \");","lastModifiedDate":"2024-03-18"},{"lineNumber":131,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2024-03-09"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":134,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26"},{"lineNumber":135,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26"},{"lineNumber":136,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26"},{"lineNumber":137,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26"},{"lineNumber":138,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26"},{"lineNumber":139,"author":{"gitId":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":140,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":141,"author":{"gitId":"-"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":142,"author":{"gitId":"yleeyilin"},"content":" return sb.toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":144,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":145,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"yleeyilin"},"content":" * Returns the part of command string for the given {@code EditStaffDescriptor}\u0027s details.","lastModifiedDate":"2024-03-17"},{"lineNumber":147,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":148,"author":{"gitId":"yleeyilin"},"content":" public static String getEditStaffDescriptorDetails(EditStaffDescriptor descriptor) {","lastModifiedDate":"2024-03-17"},{"lineNumber":149,"author":{"gitId":"yleeyilin"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-03-17"},{"lineNumber":150,"author":{"gitId":"yleeyilin"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2024-03-17"},{"lineNumber":151,"author":{"gitId":"yleeyilin"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2024-03-17"},{"lineNumber":152,"author":{"gitId":"yleeyilin"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address.value).append(\" \"));","lastModifiedDate":"2024-03-17"},{"lineNumber":153,"author":{"gitId":"yleeyilin"},"content":" descriptor.getSalary().ifPresent(salary -\u003e sb.append(PREFIX_SALARY).append(salary.value).append(\" \"));","lastModifiedDate":"2024-03-17"},{"lineNumber":154,"author":{"gitId":"yleeyilin"},"content":" descriptor.getEmployment().ifPresent(employment -\u003e sb.append(PREFIX_EMPLOYMENT)","lastModifiedDate":"2024-03-17"},{"lineNumber":155,"author":{"gitId":"chiageng"},"content":" .append(employment.value).append(\" \"));","lastModifiedDate":"2024-03-18"},{"lineNumber":156,"author":{"gitId":"yleeyilin"},"content":" return sb.toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":157,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":158,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":159,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":160,"author":{"gitId":"yleeyilin"},"content":" * Returns the part of command string for the given {@code EditSupplierDescriptor}\u0027s details.","lastModifiedDate":"2024-03-17"},{"lineNumber":161,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":162,"author":{"gitId":"yleeyilin"},"content":" public static String getEditSupplierDescriptorDetails(EditSupplierDescriptor descriptor) {","lastModifiedDate":"2024-03-17"},{"lineNumber":163,"author":{"gitId":"yleeyilin"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-03-17"},{"lineNumber":164,"author":{"gitId":"yleeyilin"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2024-03-17"},{"lineNumber":165,"author":{"gitId":"yleeyilin"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2024-03-17"},{"lineNumber":166,"author":{"gitId":"yleeyilin"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address.value).append(\" \"));","lastModifiedDate":"2024-03-17"},{"lineNumber":167,"author":{"gitId":"chiageng"},"content":" descriptor.getProduct().ifPresent(product -\u003e sb.append(PREFIX_PRODUCT).append(product.value).append(\" \"));","lastModifiedDate":"2024-03-18"},{"lineNumber":168,"author":{"gitId":"chiageng"},"content":" descriptor.getPrice().ifPresent(price -\u003e sb.append(PREFIX_PRICE).append(price.value).append(\" \"));","lastModifiedDate":"2024-03-18"},{"lineNumber":169,"author":{"gitId":"yleeyilin"},"content":" return sb.toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":171,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":172,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":173,"author":{"gitId":"yleeyilin"},"content":" * Returns the part of command string for the given {@code EditMaintainerDescriptor}\u0027s details.","lastModifiedDate":"2024-03-17"},{"lineNumber":174,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":175,"author":{"gitId":"yleeyilin"},"content":" public static String getEditMaintainerDescriptorDetails(EditMaintainerDescriptor descriptor) {","lastModifiedDate":"2024-03-17"},{"lineNumber":176,"author":{"gitId":"yleeyilin"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-03-17"},{"lineNumber":177,"author":{"gitId":"yleeyilin"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2024-03-17"},{"lineNumber":178,"author":{"gitId":"yleeyilin"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2024-03-17"},{"lineNumber":179,"author":{"gitId":"yleeyilin"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address.value).append(\" \"));","lastModifiedDate":"2024-03-17"},{"lineNumber":180,"author":{"gitId":"chiageng"},"content":" descriptor.getSkill().ifPresent(skill -\u003e sb.append(PREFIX_SKILL).append(skill.value).append(\" \"));","lastModifiedDate":"2024-03-18"},{"lineNumber":181,"author":{"gitId":"yleeyilin"},"content":" descriptor.getCommission().ifPresent(commission -\u003e sb.append(PREFIX_COMMISSION)","lastModifiedDate":"2024-03-17"},{"lineNumber":182,"author":{"gitId":"chiageng"},"content":" .append(commission.value).append(\" \"));","lastModifiedDate":"2024-03-18"},{"lineNumber":183,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05"}],"authorContributionMap":{"chiageng":69,"jannaleong":1,"-":54,"yleeyilin":61}},{"path":"src/test/java/seedu/address/testutil/StaffBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chiageng"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-09"},{"lineNumber":2,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":3,"author":{"gitId":"chiageng"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-09"},{"lineNumber":4,"author":{"gitId":"chiageng"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-09"},{"lineNumber":5,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":6,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-09"},{"lineNumber":7,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-09"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Employment;","lastModifiedDate":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-09"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Salary;","lastModifiedDate":"2024-03-09"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Staff;","lastModifiedDate":"2024-03-09"},{"lineNumber":13,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-09"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":"/**","lastModifiedDate":"2024-03-09"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2024-03-09"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":"public class StaffBuilder {","lastModifiedDate":"2024-03-09"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":20,"author":{"gitId":"chiageng"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2024-03-09"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2024-03-09"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2024-03-09"},{"lineNumber":23,"author":{"gitId":"chiageng"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2024-03-09"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":" public static final String DEFAULT_TAG \u003d \"staff\";","lastModifiedDate":"2024-03-09"},{"lineNumber":25,"author":{"gitId":"chiageng"},"content":" public static final String DEFAULT_SALARY \u003d \"$50/hr\";","lastModifiedDate":"2024-03-09"},{"lineNumber":26,"author":{"gitId":"chiageng"},"content":" public static final String DEFAULT_EMPLOYMENT \u003d \"part-time\";","lastModifiedDate":"2024-03-09"},{"lineNumber":27,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":28,"author":{"gitId":"chiageng"},"content":" private Name name;","lastModifiedDate":"2024-03-09"},{"lineNumber":29,"author":{"gitId":"chiageng"},"content":" private Phone phone;","lastModifiedDate":"2024-03-09"},{"lineNumber":30,"author":{"gitId":"chiageng"},"content":" private Email email;","lastModifiedDate":"2024-03-09"},{"lineNumber":31,"author":{"gitId":"chiageng"},"content":" private Address address;","lastModifiedDate":"2024-03-09"},{"lineNumber":32,"author":{"gitId":"chiageng"},"content":" private Salary salary;","lastModifiedDate":"2024-03-09"},{"lineNumber":33,"author":{"gitId":"chiageng"},"content":" private Employment employment;","lastModifiedDate":"2024-03-09"},{"lineNumber":34,"author":{"gitId":"chiageng"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2024-03-09"},{"lineNumber":35,"author":{"gitId":"chiageng"},"content":" private Tag tag;","lastModifiedDate":"2024-03-09"},{"lineNumber":36,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":37,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":38,"author":{"gitId":"chiageng"},"content":" * Creates a {@code StaffBuilder} with the default details.","lastModifiedDate":"2024-03-09"},{"lineNumber":39,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":40,"author":{"gitId":"chiageng"},"content":" public StaffBuilder() {","lastModifiedDate":"2024-03-09"},{"lineNumber":41,"author":{"gitId":"chiageng"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2024-03-09"},{"lineNumber":42,"author":{"gitId":"chiageng"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2024-03-09"},{"lineNumber":43,"author":{"gitId":"chiageng"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2024-03-09"},{"lineNumber":44,"author":{"gitId":"chiageng"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2024-03-09"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-09"},{"lineNumber":46,"author":{"gitId":"chiageng"},"content":" tag \u003d new Tag(DEFAULT_TAG);","lastModifiedDate":"2024-03-09"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":" tags.add(tag);","lastModifiedDate":"2024-03-09"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":" salary \u003d new Salary(DEFAULT_SALARY);","lastModifiedDate":"2024-03-09"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":" employment \u003d new Employment(DEFAULT_EMPLOYMENT);","lastModifiedDate":"2024-03-09"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":53,"author":{"gitId":"chiageng"},"content":" * Initializes the StaffBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2024-03-09"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":55,"author":{"gitId":"chiageng"},"content":" public StaffBuilder(Staff personToCopy) {","lastModifiedDate":"2024-03-09"},{"lineNumber":56,"author":{"gitId":"chiageng"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2024-03-09"},{"lineNumber":57,"author":{"gitId":"chiageng"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2024-03-09"},{"lineNumber":58,"author":{"gitId":"chiageng"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2024-03-09"},{"lineNumber":59,"author":{"gitId":"chiageng"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2024-03-09"},{"lineNumber":60,"author":{"gitId":"chiageng"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2024-03-09"},{"lineNumber":61,"author":{"gitId":"chiageng"},"content":" tag \u003d new Tag(DEFAULT_TAG);","lastModifiedDate":"2024-03-09"},{"lineNumber":62,"author":{"gitId":"chiageng"},"content":" tags.add(tag);","lastModifiedDate":"2024-03-09"},{"lineNumber":63,"author":{"gitId":"chiageng"},"content":" salary \u003d personToCopy.getSalary();","lastModifiedDate":"2024-03-09"},{"lineNumber":64,"author":{"gitId":"chiageng"},"content":" employment \u003d personToCopy.getEmployment();","lastModifiedDate":"2024-03-09"},{"lineNumber":65,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":66,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":67,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":68,"author":{"gitId":"chiageng"},"content":" * Sets the {@code Name} of the {@code Staff} that we are building.","lastModifiedDate":"2024-03-09"},{"lineNumber":69,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":70,"author":{"gitId":"chiageng"},"content":" public StaffBuilder withName(String name) {","lastModifiedDate":"2024-03-09"},{"lineNumber":71,"author":{"gitId":"chiageng"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2024-03-09"},{"lineNumber":72,"author":{"gitId":"chiageng"},"content":" return this;","lastModifiedDate":"2024-03-09"},{"lineNumber":73,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":74,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":75,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":76,"author":{"gitId":"chiageng"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Staff} that we are building.","lastModifiedDate":"2024-03-09"},{"lineNumber":77,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":78,"author":{"gitId":"chiageng"},"content":" public StaffBuilder withTags(String ... tags) {","lastModifiedDate":"2024-03-09"},{"lineNumber":79,"author":{"gitId":"chiageng"},"content":" /*","lastModifiedDate":"2024-03-09"},{"lineNumber":80,"author":{"gitId":"chiageng"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2024-03-09"},{"lineNumber":81,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":82,"author":{"gitId":"chiageng"},"content":" return this;","lastModifiedDate":"2024-03-09"},{"lineNumber":83,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":84,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":85,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":86,"author":{"gitId":"chiageng"},"content":" * Sets the {@code Address} of the {@code Staff} that we are building.","lastModifiedDate":"2024-03-09"},{"lineNumber":87,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":88,"author":{"gitId":"chiageng"},"content":" public StaffBuilder withAddress(String address) {","lastModifiedDate":"2024-03-09"},{"lineNumber":89,"author":{"gitId":"chiageng"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2024-03-09"},{"lineNumber":90,"author":{"gitId":"chiageng"},"content":" return this;","lastModifiedDate":"2024-03-09"},{"lineNumber":91,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":92,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":93,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":94,"author":{"gitId":"chiageng"},"content":" * Sets the {@code Phone} of the {@code Staff} that we are building.","lastModifiedDate":"2024-03-09"},{"lineNumber":95,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":96,"author":{"gitId":"chiageng"},"content":" public StaffBuilder withPhone(String phone) {","lastModifiedDate":"2024-03-09"},{"lineNumber":97,"author":{"gitId":"chiageng"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2024-03-09"},{"lineNumber":98,"author":{"gitId":"chiageng"},"content":" return this;","lastModifiedDate":"2024-03-09"},{"lineNumber":99,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":100,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":101,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":102,"author":{"gitId":"chiageng"},"content":" * Sets the {@code Email} of the {@code Staff} that we are building.","lastModifiedDate":"2024-03-09"},{"lineNumber":103,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":104,"author":{"gitId":"chiageng"},"content":" public StaffBuilder withEmail(String email) {","lastModifiedDate":"2024-03-09"},{"lineNumber":105,"author":{"gitId":"chiageng"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2024-03-09"},{"lineNumber":106,"author":{"gitId":"chiageng"},"content":" return this;","lastModifiedDate":"2024-03-09"},{"lineNumber":107,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":108,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":109,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":110,"author":{"gitId":"chiageng"},"content":" * Sets the {@code Salary} of the {@code Staff} that we are building.","lastModifiedDate":"2024-03-09"},{"lineNumber":111,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":112,"author":{"gitId":"chiageng"},"content":" public StaffBuilder withSalary(String salary) {","lastModifiedDate":"2024-03-09"},{"lineNumber":113,"author":{"gitId":"chiageng"},"content":" this.salary \u003d new Salary(salary);","lastModifiedDate":"2024-03-09"},{"lineNumber":114,"author":{"gitId":"chiageng"},"content":" return this;","lastModifiedDate":"2024-03-09"},{"lineNumber":115,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":116,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":117,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":118,"author":{"gitId":"chiageng"},"content":" * Sets the {@code Employment} of the {@code Staff} that we are building.","lastModifiedDate":"2024-03-09"},{"lineNumber":119,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":120,"author":{"gitId":"chiageng"},"content":" public StaffBuilder withEmployment(String employment) {","lastModifiedDate":"2024-03-09"},{"lineNumber":121,"author":{"gitId":"chiageng"},"content":" this.employment \u003d new Employment(employment);","lastModifiedDate":"2024-03-09"},{"lineNumber":122,"author":{"gitId":"chiageng"},"content":" return this;","lastModifiedDate":"2024-03-09"},{"lineNumber":123,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":124,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":125,"author":{"gitId":"chiageng"},"content":" public Staff build() {","lastModifiedDate":"2024-03-09"},{"lineNumber":126,"author":{"gitId":"chiageng"},"content":" return new Staff(name, phone, email, address, tags, salary, employment);","lastModifiedDate":"2024-03-09"},{"lineNumber":127,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":128,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":129,"author":{"gitId":"chiageng"},"content":"}","lastModifiedDate":"2024-03-09"}],"authorContributionMap":{"chiageng":129}},{"path":"src/test/java/seedu/address/testutil/SupplierBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chiageng"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-09"},{"lineNumber":2,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":3,"author":{"gitId":"chiageng"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-09"},{"lineNumber":4,"author":{"gitId":"chiageng"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-09"},{"lineNumber":5,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":6,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-09"},{"lineNumber":7,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-09"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Price;","lastModifiedDate":"2024-03-09"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Product;","lastModifiedDate":"2024-03-09"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Supplier;","lastModifiedDate":"2024-03-09"},{"lineNumber":13,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-09"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":"/**","lastModifiedDate":"2024-03-09"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2024-03-09"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":"public class SupplierBuilder {","lastModifiedDate":"2024-03-09"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":20,"author":{"gitId":"chiageng"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2024-03-09"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2024-03-09"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2024-03-09"},{"lineNumber":23,"author":{"gitId":"chiageng"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2024-03-09"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":" public static final String DEFAULT_TAG \u003d \"supplier\";","lastModifiedDate":"2024-03-09"},{"lineNumber":25,"author":{"gitId":"chiageng"},"content":" public static final String DEFAULT_PRODUCT \u003d \"pooch food\";","lastModifiedDate":"2024-03-09"},{"lineNumber":26,"author":{"gitId":"chiageng"},"content":" public static final String DEFAULT_PRICE \u003d \"$50/bag\";","lastModifiedDate":"2024-03-09"},{"lineNumber":27,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":28,"author":{"gitId":"chiageng"},"content":" private Name name;","lastModifiedDate":"2024-03-09"},{"lineNumber":29,"author":{"gitId":"chiageng"},"content":" private Phone phone;","lastModifiedDate":"2024-03-09"},{"lineNumber":30,"author":{"gitId":"chiageng"},"content":" private Email email;","lastModifiedDate":"2024-03-09"},{"lineNumber":31,"author":{"gitId":"chiageng"},"content":" private Address address;","lastModifiedDate":"2024-03-09"},{"lineNumber":32,"author":{"gitId":"chiageng"},"content":" private Price price;","lastModifiedDate":"2024-03-09"},{"lineNumber":33,"author":{"gitId":"chiageng"},"content":" private Product product;","lastModifiedDate":"2024-03-09"},{"lineNumber":34,"author":{"gitId":"chiageng"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2024-03-09"},{"lineNumber":35,"author":{"gitId":"chiageng"},"content":" private Tag tag;","lastModifiedDate":"2024-03-09"},{"lineNumber":36,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":37,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":38,"author":{"gitId":"chiageng"},"content":" * Creates a {@code SupplierBuilder} with the default details.","lastModifiedDate":"2024-03-09"},{"lineNumber":39,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":40,"author":{"gitId":"chiageng"},"content":" public SupplierBuilder() {","lastModifiedDate":"2024-03-09"},{"lineNumber":41,"author":{"gitId":"chiageng"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2024-03-09"},{"lineNumber":42,"author":{"gitId":"chiageng"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2024-03-09"},{"lineNumber":43,"author":{"gitId":"chiageng"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2024-03-09"},{"lineNumber":44,"author":{"gitId":"chiageng"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2024-03-09"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-09"},{"lineNumber":46,"author":{"gitId":"chiageng"},"content":" tag \u003d new Tag(DEFAULT_TAG);","lastModifiedDate":"2024-03-09"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":" tags.add(tag);","lastModifiedDate":"2024-03-09"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":" product \u003d new Product(DEFAULT_PRODUCT);","lastModifiedDate":"2024-03-09"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":" price \u003d new Price(DEFAULT_PRICE);","lastModifiedDate":"2024-03-09"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":53,"author":{"gitId":"chiageng"},"content":" * Initializes the SupplierBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2024-03-09"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":55,"author":{"gitId":"chiageng"},"content":" public SupplierBuilder(Supplier personToCopy) {","lastModifiedDate":"2024-03-09"},{"lineNumber":56,"author":{"gitId":"chiageng"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2024-03-09"},{"lineNumber":57,"author":{"gitId":"chiageng"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2024-03-09"},{"lineNumber":58,"author":{"gitId":"chiageng"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2024-03-09"},{"lineNumber":59,"author":{"gitId":"chiageng"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2024-03-09"},{"lineNumber":60,"author":{"gitId":"chiageng"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2024-03-09"},{"lineNumber":61,"author":{"gitId":"chiageng"},"content":" tag \u003d new Tag(DEFAULT_TAG);","lastModifiedDate":"2024-03-09"},{"lineNumber":62,"author":{"gitId":"chiageng"},"content":" tags.add(tag);","lastModifiedDate":"2024-03-09"},{"lineNumber":63,"author":{"gitId":"chiageng"},"content":" product \u003d personToCopy.getProduct();","lastModifiedDate":"2024-03-09"},{"lineNumber":64,"author":{"gitId":"chiageng"},"content":" price \u003d personToCopy.getPrice();","lastModifiedDate":"2024-03-09"},{"lineNumber":65,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":66,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":67,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":68,"author":{"gitId":"chiageng"},"content":" * Sets the {@code Name} of the {@code Supplier} that we are building.","lastModifiedDate":"2024-03-09"},{"lineNumber":69,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":70,"author":{"gitId":"chiageng"},"content":" public SupplierBuilder withName(String name) {","lastModifiedDate":"2024-03-09"},{"lineNumber":71,"author":{"gitId":"chiageng"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2024-03-09"},{"lineNumber":72,"author":{"gitId":"chiageng"},"content":" return this;","lastModifiedDate":"2024-03-09"},{"lineNumber":73,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":74,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":75,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":76,"author":{"gitId":"chiageng"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Supplier} that we are building.","lastModifiedDate":"2024-03-09"},{"lineNumber":77,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":78,"author":{"gitId":"chiageng"},"content":" public SupplierBuilder withTags(String ... tags) {","lastModifiedDate":"2024-03-09"},{"lineNumber":79,"author":{"gitId":"chiageng"},"content":" /*","lastModifiedDate":"2024-03-09"},{"lineNumber":80,"author":{"gitId":"chiageng"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2024-03-09"},{"lineNumber":81,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":82,"author":{"gitId":"chiageng"},"content":" return this;","lastModifiedDate":"2024-03-09"},{"lineNumber":83,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":84,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":85,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":86,"author":{"gitId":"chiageng"},"content":" * Sets the {@code Address} of the {@code Supplier} that we are building.","lastModifiedDate":"2024-03-09"},{"lineNumber":87,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":88,"author":{"gitId":"chiageng"},"content":" public SupplierBuilder withAddress(String address) {","lastModifiedDate":"2024-03-09"},{"lineNumber":89,"author":{"gitId":"chiageng"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2024-03-09"},{"lineNumber":90,"author":{"gitId":"chiageng"},"content":" return this;","lastModifiedDate":"2024-03-09"},{"lineNumber":91,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":92,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":93,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":94,"author":{"gitId":"chiageng"},"content":" * Sets the {@code Phone} of the {@code Supplier} that we are building.","lastModifiedDate":"2024-03-09"},{"lineNumber":95,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":96,"author":{"gitId":"chiageng"},"content":" public SupplierBuilder withPhone(String phone) {","lastModifiedDate":"2024-03-09"},{"lineNumber":97,"author":{"gitId":"chiageng"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2024-03-09"},{"lineNumber":98,"author":{"gitId":"chiageng"},"content":" return this;","lastModifiedDate":"2024-03-09"},{"lineNumber":99,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":100,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":101,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":102,"author":{"gitId":"chiageng"},"content":" * Sets the {@code Email} of the {@code Supplier} that we are building.","lastModifiedDate":"2024-03-09"},{"lineNumber":103,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":104,"author":{"gitId":"chiageng"},"content":" public SupplierBuilder withEmail(String email) {","lastModifiedDate":"2024-03-09"},{"lineNumber":105,"author":{"gitId":"chiageng"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2024-03-09"},{"lineNumber":106,"author":{"gitId":"chiageng"},"content":" return this;","lastModifiedDate":"2024-03-09"},{"lineNumber":107,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":108,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":109,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":110,"author":{"gitId":"chiageng"},"content":" * Sets the {@code Product} of the {@code Supplier} that we are building.","lastModifiedDate":"2024-03-09"},{"lineNumber":111,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":112,"author":{"gitId":"chiageng"},"content":" public SupplierBuilder withProduct(String product) {","lastModifiedDate":"2024-03-09"},{"lineNumber":113,"author":{"gitId":"chiageng"},"content":" this.product \u003d new Product(product);","lastModifiedDate":"2024-03-09"},{"lineNumber":114,"author":{"gitId":"chiageng"},"content":" return this;","lastModifiedDate":"2024-03-09"},{"lineNumber":115,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":116,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":117,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":118,"author":{"gitId":"chiageng"},"content":" * Sets the {@code Price} of the {@code Supplier} that we are building.","lastModifiedDate":"2024-03-09"},{"lineNumber":119,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":120,"author":{"gitId":"chiageng"},"content":" public SupplierBuilder withPrice(String price) {","lastModifiedDate":"2024-03-09"},{"lineNumber":121,"author":{"gitId":"chiageng"},"content":" this.price \u003d new Price(price);","lastModifiedDate":"2024-03-09"},{"lineNumber":122,"author":{"gitId":"chiageng"},"content":" return this;","lastModifiedDate":"2024-03-09"},{"lineNumber":123,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":124,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":125,"author":{"gitId":"chiageng"},"content":" public Supplier build() {","lastModifiedDate":"2024-03-09"},{"lineNumber":126,"author":{"gitId":"chiageng"},"content":" return new Supplier(name, phone, email, address, tags, product, price);","lastModifiedDate":"2024-03-09"},{"lineNumber":127,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":128,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":129,"author":{"gitId":"chiageng"},"content":"}","lastModifiedDate":"2024-03-09"}],"authorContributionMap":{"chiageng":129}},{"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":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_COMMISSION_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMPLOYMENT_BOB;","lastModifiedDate":"2024-03-09"},{"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":"jannaleong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NOTE_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NOTE_BOB;","lastModifiedDate":"2024-03-19"},{"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":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PRICE_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PRODUCT_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SALARY_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SKILL_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-08-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":26,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Maintainer;","lastModifiedDate":"2024-03-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":28,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Staff;","lastModifiedDate":"2024-03-09"},{"lineNumber":29,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Supplier;","lastModifiedDate":"2024-03-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final Person ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2018-01-10"},{"lineNumber":37,"author":{"gitId":"-"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2017-04-05"},{"lineNumber":38,"author":{"gitId":"jannaleong"},"content":" .withPhone(\"94351253\").withNote(\"i love dogs\")","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" .withTags(\"friends\").build();","lastModifiedDate":"2016-09-13"},{"lineNumber":40,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":41,"author":{"gitId":"chiageng"},"content":" public static final Staff ALICESTAFF \u003d new StaffBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2024-03-09"},{"lineNumber":42,"author":{"gitId":"chiageng"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2024-03-09"},{"lineNumber":43,"author":{"gitId":"chiageng"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2024-03-09"},{"lineNumber":44,"author":{"gitId":"chiageng"},"content":" .withTags(\"friends\")","lastModifiedDate":"2024-03-09"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":" .withSalary(\"$50/hr\")","lastModifiedDate":"2024-03-09"},{"lineNumber":46,"author":{"gitId":"chiageng"},"content":" .withEmployment(\"part-time\").build();","lastModifiedDate":"2024-03-09"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":" public static final Supplier ALICESUPPLIER \u003d new SupplierBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2024-03-09"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2024-03-09"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2024-03-09"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":" .withTags(\"friends\")","lastModifiedDate":"2024-03-09"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":" .withProduct(\"pooch food\")","lastModifiedDate":"2024-03-09"},{"lineNumber":53,"author":{"gitId":"chiageng"},"content":" .withPrice(\"$50/bag\").build();","lastModifiedDate":"2024-03-09"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":55,"author":{"gitId":"chiageng"},"content":" public static final Maintainer ALICEMAINTAINER \u003d new MaintainerBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2024-03-09"},{"lineNumber":56,"author":{"gitId":"chiageng"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2024-03-09"},{"lineNumber":57,"author":{"gitId":"chiageng"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2024-03-09"},{"lineNumber":58,"author":{"gitId":"chiageng"},"content":" .withTags(\"friends\")","lastModifiedDate":"2024-03-09"},{"lineNumber":59,"author":{"gitId":"chiageng"},"content":" .withSkill(\"train dog\")","lastModifiedDate":"2024-03-09"},{"lineNumber":60,"author":{"gitId":"chiageng"},"content":" .withCommission(\"$50/hr\").build();","lastModifiedDate":"2024-03-09"},{"lineNumber":61,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10"},{"lineNumber":63,"author":{"gitId":"jannaleong"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\").withNote(\"meet on wednesday\")","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"-"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2017-04-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":" .withTags(\"owesMoney\", \"friends\").build();","lastModifiedDate":"2016-09-13"},{"lineNumber":66,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":67,"author":{"gitId":"chiageng"},"content":" public static final Staff BENSONSTAFF \u003d new StaffBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2024-03-09"},{"lineNumber":68,"author":{"gitId":"chiageng"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2024-03-09"},{"lineNumber":69,"author":{"gitId":"chiageng"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2024-03-09"},{"lineNumber":70,"author":{"gitId":"chiageng"},"content":" .withTags(\"staff\")","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"chiageng"},"content":" .withEmployment(\"part-time\")","lastModifiedDate":"2024-03-09"},{"lineNumber":72,"author":{"gitId":"chiageng"},"content":" .withSalary(\"$50/hr\").build();","lastModifiedDate":"2024-03-09"},{"lineNumber":73,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":74,"author":{"gitId":"chiageng"},"content":" public static final Supplier BENSONSUPPLIER \u003d new SupplierBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2024-03-09"},{"lineNumber":75,"author":{"gitId":"chiageng"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2024-03-09"},{"lineNumber":76,"author":{"gitId":"chiageng"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2024-03-09"},{"lineNumber":77,"author":{"gitId":"chiageng"},"content":" .withTags(\"owesMoney\", \"friends\")","lastModifiedDate":"2024-03-09"},{"lineNumber":78,"author":{"gitId":"chiageng"},"content":" .withProduct(\"pooch medicine\")","lastModifiedDate":"2024-03-09"},{"lineNumber":79,"author":{"gitId":"chiageng"},"content":" .withPrice(\"$50/injection\").build();","lastModifiedDate":"2024-03-09"},{"lineNumber":80,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":81,"author":{"gitId":"chiageng"},"content":" public static final Maintainer BENSONMAINTAINER \u003d new MaintainerBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2024-03-09"},{"lineNumber":82,"author":{"gitId":"chiageng"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2024-03-09"},{"lineNumber":83,"author":{"gitId":"chiageng"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2024-03-09"},{"lineNumber":84,"author":{"gitId":"chiageng"},"content":" .withTags(\"owesMoney\", \"friends\")","lastModifiedDate":"2024-03-09"},{"lineNumber":85,"author":{"gitId":"chiageng"},"content":" .withSkill(\"train dog\")","lastModifiedDate":"2024-03-09"},{"lineNumber":86,"author":{"gitId":"chiageng"},"content":" .withCommission(\"$50/hr\").build();","lastModifiedDate":"2024-03-09"},{"lineNumber":87,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2018-01-10"},{"lineNumber":89,"author":{"gitId":"jannaleong"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\").withNote(\"meet on wednesday\").build();","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2018-01-10"},{"lineNumber":91,"author":{"gitId":"jannaleong"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\").withNote(\"meet on wednesday\")","lastModifiedDate":"2024-03-19"},{"lineNumber":92,"author":{"gitId":"jannaleong"},"content":" .withTags(\"friends\").build();","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"jannaleong"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withNote(\"meet on wednesday\")","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"jannaleong"},"content":" .withPhone(\"9482224\")","lastModifiedDate":"2024-03-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":96,"author":{"gitId":"jannaleong"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\")","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"jannaleong"},"content":" .withNote(\"meet on wednesday\").withPhone(\"9482427\")","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":99,"author":{"gitId":"jannaleong"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\")","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"jannaleong"},"content":" .withNote(\"meet on wednesday\").withPhone(\"9482442\")","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2018-01-10"},{"lineNumber":105,"author":{"gitId":"jannaleong"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\").withNote(\"meet on wednesday\").build();","lastModifiedDate":"2024-03-19"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2018-01-10"},{"lineNumber":107,"author":{"gitId":"jannaleong"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\").withNote(\"meet on wednesday\").build();","lastModifiedDate":"2024-03-19"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":109,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2018-01-10"},{"lineNumber":111,"author":{"gitId":"jannaleong"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withTags(VALID_TAG_FRIEND)","lastModifiedDate":"2024-03-19"},{"lineNumber":112,"author":{"gitId":"jannaleong"},"content":" .withNote(VALID_NOTE_AMY).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2018-01-10"},{"lineNumber":114,"author":{"gitId":"jannaleong"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withNote(VALID_NOTE_BOB)","lastModifiedDate":"2024-03-19"},{"lineNumber":115,"author":{"gitId":"chiageng"},"content":" .build();","lastModifiedDate":"2024-03-09"},{"lineNumber":116,"author":{"gitId":"chiageng"},"content":" public static final Staff BOBSTAFF \u003d new StaffBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-09"},{"lineNumber":117,"author":{"gitId":"chiageng"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-03-09"},{"lineNumber":118,"author":{"gitId":"chiageng"},"content":" .withEmployment(VALID_EMPLOYMENT_BOB).withSalary(VALID_SALARY_BOB)","lastModifiedDate":"2024-03-09"},{"lineNumber":119,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2024-03-09"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":121,"author":{"gitId":"chiageng"},"content":" public static final Supplier BOBSUPPLIER \u003d new SupplierBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-09"},{"lineNumber":122,"author":{"gitId":"chiageng"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-03-09"},{"lineNumber":123,"author":{"gitId":"chiageng"},"content":" .withProduct(VALID_PRODUCT_BOB).withPrice(VALID_PRICE_BOB)","lastModifiedDate":"2024-03-09"},{"lineNumber":124,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2017-09-21"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21"},{"lineNumber":126,"author":{"gitId":"chiageng"},"content":" public static final Maintainer BOBMAINTAINER \u003d new MaintainerBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-09"},{"lineNumber":127,"author":{"gitId":"chiageng"},"content":" .withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-09"},{"lineNumber":128,"author":{"gitId":"chiageng"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-03-09"},{"lineNumber":129,"author":{"gitId":"chiageng"},"content":" .withSkill(VALID_SKILL_BOB).withCommission(VALID_COMMISSION_BOB)","lastModifiedDate":"2024-03-09"},{"lineNumber":130,"author":{"gitId":"chiageng"},"content":" .build();","lastModifiedDate":"2024-03-09"},{"lineNumber":131,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":135,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":136,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05"},{"lineNumber":137,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":138,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05"},{"lineNumber":139,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05"},{"lineNumber":140,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10"},{"lineNumber":141,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13"},{"lineNumber":143,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04"},{"lineNumber":146,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10"},{"lineNumber":147,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04"},{"lineNumber":149,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13"}],"authorContributionMap":{"chiageng":63,"jannaleong":19,"-":66,"yleeyilin":1}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Joshy837"},"content":"[![CI Status](https://github.com/AY2324S2-CS2103T-W10-2/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S2-CS2103T-W10-2/tp/actions)","lastModifiedDate":"2024-03-06"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":3,"author":{"gitId":"Joshy837"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2024-03-06"},{"lineNumber":4,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":5,"author":{"gitId":"Joshy837"},"content":"## PoochPlanner","lastModifiedDate":"2024-03-06"},{"lineNumber":6,"author":{"gitId":"Joshy837"},"content":"This is an **address book for dog cafe owners**.\u003cbr\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":7,"author":{"gitId":"Joshy837"},"content":"Example usages:","lastModifiedDate":"2024-03-06"},{"lineNumber":8,"author":{"gitId":"Joshy837"},"content":"* as an address book to store contacts","lastModifiedDate":"2024-03-06"},{"lineNumber":9,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":10,"author":{"gitId":"Joshy837"},"content":"The project simulates an ongoing software project for a desktop application (called _PoochPlanner_) used for managing contact details.","lastModifiedDate":"2024-03-06"},{"lineNumber":11,"author":{"gitId":"Joshy837"},"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":"2024-03-06"},{"lineNumber":12,"author":{"gitId":"Joshy837"},"content":" * It comes with a **reasonable level of user and developer documentation**.","lastModifiedDate":"2024-03-06"},{"lineNumber":13,"author":{"gitId":"Joshy837"},"content":"* It is named `PoochPlanner` because it is meant for pooch (dog) cafe owners to manage their address books.","lastModifiedDate":"2024-03-06"},{"lineNumber":14,"author":{"gitId":"Joshy837"},"content":"* For the detailed documentation of this project, see **[PoochPlanner\u0027s Product Website](https://ay2324s2-cs2103t-w10-2.github.io/tp/)**.","lastModifiedDate":"2024-03-06"},{"lineNumber":15,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":16,"author":{"gitId":"Joshy837"},"content":"This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"Joshy837":15,"-":1}},{"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":"yleeyilin"},"content":"### Lee Yi Lin","lastModifiedDate":"2024-02-28"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"yleeyilin"},"content":"\u003cimg src\u003d\"images/yleeyilin.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"yleeyilin"},"content":"[[github](https://github.com/yleeyilin)]","lastModifiedDate":"2024-02-28"},{"lineNumber":15,"author":{"gitId":"yleeyilin"},"content":"[[portfolio](team/yleeyilin.md)]","lastModifiedDate":"2024-02-28"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"yleeyilin"},"content":"* Role: Developer","lastModifiedDate":"2024-02-28"},{"lineNumber":18,"author":{"gitId":"yleeyilin"},"content":"* Responsibilities: Code Quality","lastModifiedDate":"2024-02-28"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"jamessinmaojun"},"content":"### James Sin","lastModifiedDate":"2024-02-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"jamessinmaojun"},"content":"\u003cimg src\u003d\"images/jamessinmaojun.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-07"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"jamessinmaojun"},"content":"[[github](http://github.com/jamessinmaojun)]","lastModifiedDate":"2024-02-29"},{"lineNumber":25,"author":{"gitId":"jamessinmaojun"},"content":"[[portfolio](team/jamessinmaojun.md)]","lastModifiedDate":"2024-02-29"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"jamessinmaojun"},"content":"* Role: Developer","lastModifiedDate":"2024-02-29"},{"lineNumber":28,"author":{"gitId":"jamessinmaojun"},"content":"* Responsibilities: Documentation","lastModifiedDate":"2024-02-29"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"jannaleong"},"content":"### Leong Jia Yi, Janna","lastModifiedDate":"2024-03-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"jannaleong"},"content":"\u003cimg src\u003d\"images/jannaleong.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"jannaleong"},"content":"[[github](http://github.com/jannaleong)] [[portfolio](team/jannaleong.md)]","lastModifiedDate":"2024-03-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"jannaleong"},"content":"* Role: Team Lead","lastModifiedDate":"2024-03-06"},{"lineNumber":37,"author":{"gitId":"jannaleong"},"content":"* Responsibilities: Overall project coordination, deliverables and deadlines","lastModifiedDate":"2024-03-06"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"Joshy837"},"content":"### Joshua Yip Sujun","lastModifiedDate":"2024-03-06"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"chiageng"},"content":"\u003cimg src\u003d\"images/joshy837.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-07"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"chiageng"},"content":"[[github](http://github.com/joshy837)]","lastModifiedDate":"2024-03-07"},{"lineNumber":44,"author":{"gitId":"chiageng"},"content":"[[portfolio](team/joshy837.md)]","lastModifiedDate":"2024-03-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"Joshy837"},"content":"* Responsibilities: Testing","lastModifiedDate":"2024-03-06"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":"### Chng Chia Geng","lastModifiedDate":"2024-03-01"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":"\u003cimg src\u003d\"images/chiageng.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"chiageng"},"content":"[[github](http://github.com/chiageng)]","lastModifiedDate":"2024-03-01"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":"[[portfolio](team/chiageng.md)]","lastModifiedDate":"2024-03-01"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"chiageng"},"content":"* Responsibilities: Integration","lastModifiedDate":"2024-03-01"}],"authorContributionMap":{"Joshy837":2,"jamessinmaojun":6,"chiageng":8,"jannaleong":5,"-":30,"yleeyilin":6}},{"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":"yleeyilin"},"content":"Note that `HelpXYZWindow` refers to the variations of Help Windows implemented, i.e. `HelpWindow`, `HelpPoochStaffWindow`,`HelpPoochSupplierWindow`,`HelpPoochMaintenanceWindow`,`HelpDeleteWindow`,`HelpEditWindow`,`HelpSearchWindow`","lastModifiedDate":"2024-03-19"},{"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 continues till the end of diagram.","lastModifiedDate":"2024-02-09"},{"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).\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-02-09"},{"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 an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Logic.png)","lastModifiedDate":"2024-02-09"},{"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":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":207,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Model.png)","lastModifiedDate":"2024-02-09"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"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":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"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":"jannaleong"},"content":"* Dog cafe owners who need to manage a team of staff, F\u0026B vendors \u0026 a dog maintainence team.","lastModifiedDate":"2024-03-06"},{"lineNumber":266,"author":{"gitId":"jannaleong"},"content":"* Prefer typing over other types and is comfortable using CLI applications.","lastModifiedDate":"2024-03-06"},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":268,"author":{"gitId":"jannaleong"},"content":"**Value proposition**: PoochPlanner is a desktop application to track details of various groups (vendors, staff, dog maintainence) that dog cafe owners have to regularly interact with. ","lastModifiedDate":"2024-03-06"},{"lineNumber":269,"author":{"gitId":"jannaleong"},"content":"The app is optimised for use using Command Line Interface (CLI) while still encompassing a user-friendly Graphical User Interface (GUI).","lastModifiedDate":"2024-03-06"},{"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":"jannaleong"},"content":"| Priority | \u003cdiv style\u003d\"width:50px\"\u003eAs a …​\u003c/div\u003e | I want to …​ | So that I can…​ |","lastModifiedDate":"2024-03-06"},{"lineNumber":277,"author":{"gitId":"jannaleong"},"content":"|---------------|----------------------------------------|------------------------------------------------------------|-------------------------------------------------------|","lastModifiedDate":"2024-03-07"},{"lineNumber":278,"author":{"gitId":"jannaleong"},"content":"| `* * *` | well connected user | search contacts | save time |","lastModifiedDate":"2024-03-06"},{"lineNumber":279,"author":{"gitId":"jannaleong"},"content":"| `* * *` | well connected user | add contacts | have the address to contact others in the future |","lastModifiedDate":"2024-03-06"},{"lineNumber":280,"author":{"gitId":"jannaleong"},"content":"| `* * *` | cafe owner user | delete the contacts of people | keep my contacts updated and remove outdated contacts |","lastModifiedDate":"2024-03-06"},{"lineNumber":281,"author":{"gitId":"jannaleong"},"content":"| `* * *` | long-term user | edit contacts | update some contact information |","lastModifiedDate":"2024-03-06"},{"lineNumber":282,"author":{"gitId":"jannaleong"},"content":"| `* * *` | first-time user | get help about what commnads I can use on the contact book | easily know how to navigate the system |","lastModifiedDate":"2024-03-06"},{"lineNumber":283,"author":{"gitId":"jannaleong"},"content":"| `**` | frugal user | sort my vendors in ascending order of price | view the vendors selling the cheapest products easily |","lastModifiedDate":"2024-03-06"},{"lineNumber":284,"author":{"gitId":"jannaleong"},"content":"| `**` | careless user | undo my commands | fix mistakes easily |","lastModifiedDate":"2024-03-07"},{"lineNumber":285,"author":{"gitId":"jannaleong"},"content":"| `**` | forgetful user | star contacts that are important | remember to contact them easily |","lastModifiedDate":"2024-03-07"},{"lineNumber":286,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":288,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":291,"author":{"gitId":"yleeyilin"},"content":"---","lastModifiedDate":"2024-02-29"},{"lineNumber":292,"author":{"gitId":"yleeyilin"},"content":"**System**: `PoochPlanner`","lastModifiedDate":"2024-02-29"},{"lineNumber":293,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":294,"author":{"gitId":"yleeyilin"},"content":"**Use case**: `UC01 - Add Contact of a Person`","lastModifiedDate":"2024-02-29"},{"lineNumber":295,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":296,"author":{"gitId":"yleeyilin"},"content":"**Actor**: `User`","lastModifiedDate":"2024-02-29"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":298,"author":{"gitId":"chiageng"},"content":"**Guarantee**: `If MSS reach step 3, a new contact is added into list`","lastModifiedDate":"2024-03-01"},{"lineNumber":299,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":300,"author":{"gitId":"yleeyilin"},"content":"**MSS**:","lastModifiedDate":"2024-02-29"},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":302,"author":{"gitId":"yleeyilin"},"content":"1. User requests to add contact of a person.","lastModifiedDate":"2024-02-29"},{"lineNumber":303,"author":{"gitId":"yleeyilin"},"content":"2. PoochPlanner updates list of persons.","lastModifiedDate":"2024-02-29"},{"lineNumber":304,"author":{"gitId":"yleeyilin"},"content":"3. PoochPlanner confirms success update.","lastModifiedDate":"2024-02-29"},{"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":"yleeyilin"},"content":"**Extensions**:","lastModifiedDate":"2024-02-29"},{"lineNumber":309,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":310,"author":{"gitId":"yleeyilin"},"content":"* 1a. PoochPlanner detects a missing field in the entered input.","lastModifiedDate":"2024-02-29"},{"lineNumber":311,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":312,"author":{"gitId":"yleeyilin"},"content":" * 1a1. PoochPlanner displays the error message.","lastModifiedDate":"2024-02-29"},{"lineNumber":313,"author":{"gitId":"yleeyilin"},"content":" * 1a2. User re-enters the correct command with the required field.","lastModifiedDate":"2024-02-29"},{"lineNumber":314,"author":{"gitId":"yleeyilin"},"content":" * Steps 1a1 - 1a2 are repeated until the input entered are correct.","lastModifiedDate":"2024-02-29"},{"lineNumber":315,"author":{"gitId":"yleeyilin"},"content":" * Use case resumes from step 2.","lastModifiedDate":"2024-02-29"},{"lineNumber":316,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":317,"author":{"gitId":"yleeyilin"},"content":"* 1b. PoochPlanner detects a duplicate name entry.","lastModifiedDate":"2024-02-29"},{"lineNumber":318,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":319,"author":{"gitId":"yleeyilin"},"content":" * 1b1. PoochPlanner displays the error message.","lastModifiedDate":"2024-02-29"},{"lineNumber":320,"author":{"gitId":"yleeyilin"},"content":" * 1b2. User re-enters the correct command with another name.","lastModifiedDate":"2024-02-29"},{"lineNumber":321,"author":{"gitId":"yleeyilin"},"content":" * Steps 1b1 - 1b2 are repeated until there is no duplicate entry in input.","lastModifiedDate":"2024-02-29"},{"lineNumber":322,"author":{"gitId":"yleeyilin"},"content":" * Use case resumes from step 2.","lastModifiedDate":"2024-02-29"},{"lineNumber":323,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":324,"author":{"gitId":"chiageng"},"content":"* 1c. PoochPlanner detects wrong format for email.","lastModifiedDate":"2024-03-01"},{"lineNumber":325,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":326,"author":{"gitId":"chiageng"},"content":" * 1c1. PoochPlanner displays the error message.","lastModifiedDate":"2024-03-02"},{"lineNumber":327,"author":{"gitId":"chiageng"},"content":" * 1c2. User re-enters the correct email format.","lastModifiedDate":"2024-03-02"},{"lineNumber":328,"author":{"gitId":"chiageng"},"content":" * Steps 1c1 - 1c2 are repeated until there is no error in input.","lastModifiedDate":"2024-03-02"},{"lineNumber":329,"author":{"gitId":"chiageng"},"content":" * Use case resumes from step 2.","lastModifiedDate":"2024-03-01"},{"lineNumber":330,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":331,"author":{"gitId":"chiageng"},"content":"* 1d. PoochPlanner detect unknown input for employment.","lastModifiedDate":"2024-03-02"},{"lineNumber":332,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":333,"author":{"gitId":"chiageng"},"content":" * 1d1. PoochPlanner displays the error message.","lastModifiedDate":"2024-03-02"},{"lineNumber":334,"author":{"gitId":"chiageng"},"content":" * 1d2. User re-enters the correct input for employment.","lastModifiedDate":"2024-03-02"},{"lineNumber":335,"author":{"gitId":"chiageng"},"content":" * Steps 1d1 - 1d2 are repeated until there is no error in input.","lastModifiedDate":"2024-03-02"},{"lineNumber":336,"author":{"gitId":"chiageng"},"content":" * Use case resumes from step 2.","lastModifiedDate":"2024-03-01"},{"lineNumber":337,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":338,"author":{"gitId":"yleeyilin"},"content":"---","lastModifiedDate":"2024-02-29"},{"lineNumber":339,"author":{"gitId":"yleeyilin"},"content":"**System**: `PoochPlanner`","lastModifiedDate":"2024-02-29"},{"lineNumber":340,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":341,"author":{"gitId":"yleeyilin"},"content":"**Use case**: `UC02 - Delete Contact of a Person`","lastModifiedDate":"2024-02-29"},{"lineNumber":342,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":343,"author":{"gitId":"yleeyilin"},"content":"**Actor**: `User`","lastModifiedDate":"2024-02-29"},{"lineNumber":344,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":345,"author":{"gitId":"chiageng"},"content":"**Guarantee**: `If MSS reach step 3, a contact is deleted from list`","lastModifiedDate":"2024-03-01"},{"lineNumber":346,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":347,"author":{"gitId":"yleeyilin"},"content":"**MSS**:","lastModifiedDate":"2024-02-29"},{"lineNumber":348,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":349,"author":{"gitId":"yleeyilin"},"content":"1. User requests to delete contact of a person.","lastModifiedDate":"2024-02-29"},{"lineNumber":350,"author":{"gitId":"yleeyilin"},"content":"2. PoochPlanner removes person and updates list of persons.","lastModifiedDate":"2024-02-29"},{"lineNumber":351,"author":{"gitId":"yleeyilin"},"content":"3. PoochPlanner confirms successful deletion.","lastModifiedDate":"2024-02-29"},{"lineNumber":352,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":353,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":355,"author":{"gitId":"yleeyilin"},"content":"**Extensions**:","lastModifiedDate":"2024-02-29"},{"lineNumber":356,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":357,"author":{"gitId":"yleeyilin"},"content":"* 1a. PoochPlanner detects a missing name field in the entered input.","lastModifiedDate":"2024-02-29"},{"lineNumber":358,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":359,"author":{"gitId":"yleeyilin"},"content":" * 1a1. PoochPlanner displays the error message.","lastModifiedDate":"2024-02-29"},{"lineNumber":360,"author":{"gitId":"yleeyilin"},"content":" * 1a2. User re-enters the correct command with the name field.","lastModifiedDate":"2024-02-29"},{"lineNumber":361,"author":{"gitId":"yleeyilin"},"content":" * Steps 1a1 - 1a2 are repeated until the input entered are correct.","lastModifiedDate":"2024-02-29"},{"lineNumber":362,"author":{"gitId":"yleeyilin"},"content":" * Use case resumes from step 2.","lastModifiedDate":"2024-02-29"},{"lineNumber":363,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":364,"author":{"gitId":"yleeyilin"},"content":"* 1b. PoochPlanner is unable to find the Person.","lastModifiedDate":"2024-02-29"},{"lineNumber":365,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":366,"author":{"gitId":"yleeyilin"},"content":" * 1b1. PoochPlanner displays the error message.","lastModifiedDate":"2024-02-29"},{"lineNumber":367,"author":{"gitId":"yleeyilin"},"content":" * 1b2. User re-enters a new command with another name.","lastModifiedDate":"2024-02-29"},{"lineNumber":368,"author":{"gitId":"yleeyilin"},"content":" * Steps 1b1 - 1b2 are repeated until the input references a Person that exists in PoochPlanner.","lastModifiedDate":"2024-02-29"},{"lineNumber":369,"author":{"gitId":"yleeyilin"},"content":" * Use case resumes from step 2.","lastModifiedDate":"2024-02-29"},{"lineNumber":370,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":371,"author":{"gitId":"yleeyilin"},"content":"---","lastModifiedDate":"2024-02-29"},{"lineNumber":372,"author":{"gitId":"yleeyilin"},"content":"**System**: `PoochPlanner`","lastModifiedDate":"2024-02-29"},{"lineNumber":373,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":374,"author":{"gitId":"yleeyilin"},"content":"**Use case**: `UC03 - Edit Contact of a Person`","lastModifiedDate":"2024-02-29"},{"lineNumber":375,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":376,"author":{"gitId":"yleeyilin"},"content":"**Actor**: `User`","lastModifiedDate":"2024-02-29"},{"lineNumber":377,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":378,"author":{"gitId":"chiageng"},"content":"**Guarantee**: `If MSS reach step 3, a contact is edited successfully in the list`","lastModifiedDate":"2024-03-01"},{"lineNumber":379,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":380,"author":{"gitId":"yleeyilin"},"content":"**MSS**:","lastModifiedDate":"2024-02-29"},{"lineNumber":381,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":382,"author":{"gitId":"yleeyilin"},"content":"1. User requests to edit the field of a person.","lastModifiedDate":"2024-02-29"},{"lineNumber":383,"author":{"gitId":"yleeyilin"},"content":"2. PoochPlanner updates the field of specified person.","lastModifiedDate":"2024-02-29"},{"lineNumber":384,"author":{"gitId":"yleeyilin"},"content":"3. PoochPlanner confirms successful edit.","lastModifiedDate":"2024-02-29"},{"lineNumber":385,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":386,"author":{"gitId":"yleeyilin"},"content":" Use case ends.","lastModifiedDate":"2024-02-29"},{"lineNumber":387,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":388,"author":{"gitId":"yleeyilin"},"content":"**Extensions**:","lastModifiedDate":"2024-02-29"},{"lineNumber":389,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":390,"author":{"gitId":"yleeyilin"},"content":"* 1a. PoochPlanner detects a missing name field in the entered input.","lastModifiedDate":"2024-02-29"},{"lineNumber":391,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":392,"author":{"gitId":"yleeyilin"},"content":" * 1a1. PoochPlanner displays the error message.","lastModifiedDate":"2024-02-29"},{"lineNumber":393,"author":{"gitId":"yleeyilin"},"content":" * 1a2. User re-enters the correct command with the name field.","lastModifiedDate":"2024-02-29"},{"lineNumber":394,"author":{"gitId":"yleeyilin"},"content":" * Steps 1a1 - 1a2 are repeated until the input entered are correct.","lastModifiedDate":"2024-02-29"},{"lineNumber":395,"author":{"gitId":"yleeyilin"},"content":" * Use case resumes from step 2.","lastModifiedDate":"2024-02-29"},{"lineNumber":396,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":397,"author":{"gitId":"yleeyilin"},"content":"* 1b. PoochPlanner is unable to find the Person.","lastModifiedDate":"2024-02-29"},{"lineNumber":398,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":399,"author":{"gitId":"yleeyilin"},"content":" * 1b1. PoochPlanner displays the error message.","lastModifiedDate":"2024-02-29"},{"lineNumber":400,"author":{"gitId":"yleeyilin"},"content":" * 1b2. User re-enters a new command with another name.","lastModifiedDate":"2024-02-29"},{"lineNumber":401,"author":{"gitId":"yleeyilin"},"content":" * Steps 1b1 - 1b2 are repeated until the input references a Person that exists in PoochPlanner.","lastModifiedDate":"2024-02-29"},{"lineNumber":402,"author":{"gitId":"yleeyilin"},"content":" * Use case resumes from step 2.","lastModifiedDate":"2024-02-29"},{"lineNumber":403,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":404,"author":{"gitId":"yleeyilin"},"content":"* 1c. User requests to edit the name field to a name that already exists in PoochPlanner.","lastModifiedDate":"2024-02-29"},{"lineNumber":405,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":406,"author":{"gitId":"yleeyilin"},"content":" * 1c1. PoochPlanner displays the error message.","lastModifiedDate":"2024-02-29"},{"lineNumber":407,"author":{"gitId":"chiageng"},"content":" * 1c2. User re-enters the command with a different name.","lastModifiedDate":"2024-03-02"},{"lineNumber":408,"author":{"gitId":"yleeyilin"},"content":" * Steps 1c1 - 1c2 are repeated until the new name field is valid.","lastModifiedDate":"2024-02-29"},{"lineNumber":409,"author":{"gitId":"yleeyilin"},"content":" * Use case resumes from step 2.","lastModifiedDate":"2024-02-29"},{"lineNumber":410,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":411,"author":{"gitId":"yleeyilin"},"content":"* 1d. User did not specify the field that they want to edit.","lastModifiedDate":"2024-02-29"},{"lineNumber":412,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":413,"author":{"gitId":"yleeyilin"},"content":" * 1d1. PoochPlanner displays the error message.","lastModifiedDate":"2024-02-29"},{"lineNumber":414,"author":{"gitId":"yleeyilin"},"content":" * 1d2. User re-enters the command and specify the field/s to edit.","lastModifiedDate":"2024-02-29"},{"lineNumber":415,"author":{"gitId":"yleeyilin"},"content":" * Steps 1d1 - 1d2 are repeated until there exist a specified field to edit.","lastModifiedDate":"2024-02-29"},{"lineNumber":416,"author":{"gitId":"yleeyilin"},"content":" * Use case resumes from step 2.","lastModifiedDate":"2024-02-29"},{"lineNumber":417,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":418,"author":{"gitId":"yleeyilin"},"content":"* 1e. User specified an invalid field.","lastModifiedDate":"2024-02-29"},{"lineNumber":419,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":420,"author":{"gitId":"yleeyilin"},"content":" * 1e1. PoochPlanner displays the error message.","lastModifiedDate":"2024-02-29"},{"lineNumber":421,"author":{"gitId":"yleeyilin"},"content":" * 1e2. User re-enters the command and edits a different field.","lastModifiedDate":"2024-02-29"},{"lineNumber":422,"author":{"gitId":"yleeyilin"},"content":" * Steps 1e1 - 1e2 are repeated until there exist a valid field in the input.","lastModifiedDate":"2024-02-29"},{"lineNumber":423,"author":{"gitId":"yleeyilin"},"content":" * Use case resumes from step 2.","lastModifiedDate":"2024-02-29"},{"lineNumber":424,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":425,"author":{"gitId":"chiageng"},"content":"* 1f. PoochPlanner detects wrong format for email.","lastModifiedDate":"2024-03-01"},{"lineNumber":426,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":427,"author":{"gitId":"chiageng"},"content":" * 1f1. PoochPlanner displays the error message.","lastModifiedDate":"2024-03-02"},{"lineNumber":428,"author":{"gitId":"chiageng"},"content":" * 1f2. User re-enters the correct email format.","lastModifiedDate":"2024-03-02"},{"lineNumber":429,"author":{"gitId":"chiageng"},"content":" * Steps 1f1 - 1f2 are repeated until there is no error in input.","lastModifiedDate":"2024-03-02"},{"lineNumber":430,"author":{"gitId":"chiageng"},"content":" * Use case resumes from step 2.","lastModifiedDate":"2024-03-01"},{"lineNumber":431,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":432,"author":{"gitId":"yleeyilin"},"content":"---","lastModifiedDate":"2024-02-29"},{"lineNumber":433,"author":{"gitId":"yleeyilin"},"content":"**System**: `PoochPlanner`","lastModifiedDate":"2024-02-29"},{"lineNumber":434,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":435,"author":{"gitId":"yleeyilin"},"content":"**Use case**: `UC04 - Search Contact of a Person`","lastModifiedDate":"2024-02-29"},{"lineNumber":436,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":437,"author":{"gitId":"yleeyilin"},"content":"**Actor**: `User`","lastModifiedDate":"2024-02-29"},{"lineNumber":438,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":439,"author":{"gitId":"yleeyilin"},"content":"**MSS**:","lastModifiedDate":"2024-02-29"},{"lineNumber":440,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":441,"author":{"gitId":"yleeyilin"},"content":"1. User requests to search for the contact of a person with a keyword for a specified field.","lastModifiedDate":"2024-02-29"},{"lineNumber":442,"author":{"gitId":"yleeyilin"},"content":"2. PoochPlanner confirms successful search.","lastModifiedDate":"2024-02-29"},{"lineNumber":443,"author":{"gitId":"yleeyilin"},"content":"3. PoochPlanner returns the sublist of contacts that contains the keyword specified by the user.","lastModifiedDate":"2024-02-29"},{"lineNumber":444,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":445,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2024-02-29"},{"lineNumber":446,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":447,"author":{"gitId":"yleeyilin"},"content":"**Extensions**:","lastModifiedDate":"2024-02-29"},{"lineNumber":448,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":449,"author":{"gitId":"yleeyilin"},"content":"* 1a. PoochPlanner detects a missing field in the entered input.","lastModifiedDate":"2024-02-29"},{"lineNumber":450,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":451,"author":{"gitId":"yleeyilin"},"content":" * 1a1. PoochPlanner displays the error message.","lastModifiedDate":"2024-02-29"},{"lineNumber":452,"author":{"gitId":"yleeyilin"},"content":" * 1a2. User re-enters the correct command with a specified field.","lastModifiedDate":"2024-02-29"},{"lineNumber":453,"author":{"gitId":"yleeyilin"},"content":" * Steps 1a1 - 1a2 are repeated until a valid field is inputted by the User.","lastModifiedDate":"2024-02-29"},{"lineNumber":454,"author":{"gitId":"yleeyilin"},"content":" * Use case resumes from step 2.","lastModifiedDate":"2024-02-29"},{"lineNumber":455,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":456,"author":{"gitId":"yleeyilin"},"content":"* 1b. PoochPlanner detects multiple fields in the entered input.","lastModifiedDate":"2024-02-29"},{"lineNumber":457,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":458,"author":{"gitId":"yleeyilin"},"content":" * 1b1. PoochPlanner displays the error message.","lastModifiedDate":"2024-02-29"},{"lineNumber":459,"author":{"gitId":"yleeyilin"},"content":" * 1b2. User re-enters a new command with only one field.","lastModifiedDate":"2024-02-29"},{"lineNumber":460,"author":{"gitId":"yleeyilin"},"content":" * Steps 1b1 - 1b2 are repeated until the input references a Person that exists in PoochPlanner.","lastModifiedDate":"2024-02-29"},{"lineNumber":461,"author":{"gitId":"yleeyilin"},"content":" * Use case resumes from step 2.","lastModifiedDate":"2024-02-29"},{"lineNumber":462,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":463,"author":{"gitId":"yleeyilin"},"content":"* 1c. PoochPlanner detects invalid field in the entered input.","lastModifiedDate":"2024-02-29"},{"lineNumber":464,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":465,"author":{"gitId":"yleeyilin"},"content":" * 1c1. PoochPlanner displays the error message.","lastModifiedDate":"2024-02-29"},{"lineNumber":466,"author":{"gitId":"yleeyilin"},"content":" * 1c2. User re-enters a new command with another field.","lastModifiedDate":"2024-02-29"},{"lineNumber":467,"author":{"gitId":"yleeyilin"},"content":" * Steps 1c1 - 1c2 are repeated until a valid field is inputted by the User.","lastModifiedDate":"2024-02-29"},{"lineNumber":468,"author":{"gitId":"yleeyilin"},"content":" * Use case resumes from step 2.","lastModifiedDate":"2024-02-29"},{"lineNumber":469,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":470,"author":{"gitId":"yleeyilin"},"content":"---","lastModifiedDate":"2024-02-29"},{"lineNumber":471,"author":{"gitId":"yleeyilin"},"content":"**System**: `PoochPlanner`","lastModifiedDate":"2024-02-29"},{"lineNumber":472,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":473,"author":{"gitId":"yleeyilin"},"content":"**Use case**: `UC05 - Help Tutorial`","lastModifiedDate":"2024-02-29"},{"lineNumber":474,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":475,"author":{"gitId":"yleeyilin"},"content":"**Actor**: `User`","lastModifiedDate":"2024-02-29"},{"lineNumber":476,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":477,"author":{"gitId":"yleeyilin"},"content":"**MSS**:","lastModifiedDate":"2024-02-29"},{"lineNumber":478,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":479,"author":{"gitId":"yleeyilin"},"content":"1. User requests to learn more about the commands.","lastModifiedDate":"2024-02-29"},{"lineNumber":480,"author":{"gitId":"yleeyilin"},"content":"2. PoochPlanner displays a tutorial information.","lastModifiedDate":"2024-02-29"},{"lineNumber":481,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":482,"author":{"gitId":"yleeyilin"},"content":" Use case ends.","lastModifiedDate":"2024-02-29"},{"lineNumber":483,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":484,"author":{"gitId":"yleeyilin"},"content":"**Extensions**:","lastModifiedDate":"2024-02-29"},{"lineNumber":485,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":486,"author":{"gitId":"yleeyilin"},"content":"* 1a. User requests to learn about an invalid command.","lastModifiedDate":"2024-02-29"},{"lineNumber":487,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":488,"author":{"gitId":"yleeyilin"},"content":" * 1a1. PoochPlanner displays the error message.","lastModifiedDate":"2024-02-29"},{"lineNumber":489,"author":{"gitId":"yleeyilin"},"content":" * 1a2. User re-enters the command and request to learn about a valid command.","lastModifiedDate":"2024-02-29"},{"lineNumber":490,"author":{"gitId":"yleeyilin"},"content":" * Steps 1a1 - 1a2 are repeated until a valid command is inputted by the User.","lastModifiedDate":"2024-02-29"},{"lineNumber":491,"author":{"gitId":"yleeyilin"},"content":" * Use case resumes from step 2.","lastModifiedDate":"2024-02-29"},{"lineNumber":492,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":493,"author":{"gitId":"yleeyilin"},"content":"---","lastModifiedDate":"2024-02-29"},{"lineNumber":494,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":495,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":496,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":497,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":498,"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":499,"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":500,"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":501,"author":{"gitId":"chiageng"},"content":"4. All code snippets presented in the developer guides shall follow a consistent coding style and formatting, adhering to the company\u0027s coding standards and best practices.","lastModifiedDate":"2024-03-01"},{"lineNumber":502,"author":{"gitId":"chiageng"},"content":"5. The developer guides shall undergo regular content audits, with outdated or deprecated information flagged for removal or revision, and new features or updates documented within one week of release.","lastModifiedDate":"2024-03-01"},{"lineNumber":503,"author":{"gitId":"chiageng"},"content":"6. The system should respond within 2 seconds.","lastModifiedDate":"2024-03-01"},{"lineNumber":504,"author":{"gitId":"chiageng"},"content":"7. The data should store locally and not accessible from other device for privacy issue.","lastModifiedDate":"2024-03-01"},{"lineNumber":505,"author":{"gitId":"chiageng"},"content":"8. The project is expected to adhere to schedule closely to deliver new feature.","lastModifiedDate":"2024-03-01"},{"lineNumber":506,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":507,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":508,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":509,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":510,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":511,"author":{"gitId":"jamessinmaojun"},"content":"* **PoochPlanner**: An address book CLI software that stores contacts.","lastModifiedDate":"2024-03-06"},{"lineNumber":512,"author":{"gitId":"jamessinmaojun"},"content":"* **Pooch Contact**: A contact that is stored in PoochPlanner.","lastModifiedDate":"2024-03-06"},{"lineNumber":513,"author":{"gitId":"jamessinmaojun"},"content":"* **Pooch Owner**: The target user of PoochPlanner; Dog Cafe owners.","lastModifiedDate":"2024-03-06"},{"lineNumber":514,"author":{"gitId":"jamessinmaojun"},"content":"* **Pooch Client**: Patrons of the Dog Cafe.","lastModifiedDate":"2024-03-06"},{"lineNumber":515,"author":{"gitId":"jamessinmaojun"},"content":"* **Pooch Supplier**: External suppliers that sell the logistics required for the sustenance of Dog Cafe operations, for example Pooch Food, to the Pooch Cafe Owners at a fixed price.","lastModifiedDate":"2024-03-06"},{"lineNumber":516,"author":{"gitId":"jamessinmaojun"},"content":"* **Pooch Staff**: Employees of the Dog Cafe that handle the running of the cafe.","lastModifiedDate":"2024-03-06"},{"lineNumber":517,"author":{"gitId":"jamessinmaojun"},"content":"* **Pooch Maintenance Staff**: Specialised external workers that take special care and maintenance of dogs.","lastModifiedDate":"2024-03-06"},{"lineNumber":518,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":519,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":520,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":521,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":522,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":523,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":524,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":525,"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":526,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":527,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":528,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":529,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":530,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":531,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":532,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":533,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":534,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":535,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":536,"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":537,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":538,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":539,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":540,"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":541,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":542,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":543,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":544,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":545,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":546,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":547,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":548,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":549,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":550,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":551,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":552,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":553,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":554,"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":555,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":556,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":557,"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":558,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":559,"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":560,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":561,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":562,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":563,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":564,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":565,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":566,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":567,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":568,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":569,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":570,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"chiageng":35,"jamessinmaojun":7,"jannaleong":14,"-":362,"yleeyilin":152}},{"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":"Joshy837"},"content":"PoochPlanner is an **address book manager for managing contacts, optimised for use via a Command Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, PoochPlanner can get your contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2024-03-06"},{"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":"chiageng"},"content":"1. Download the latest `poochplanner.jar` from [here](https://github.com/AY2324S2-CS2103T-W10-2/tp/releases).","lastModifiedDate":"2024-03-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your PoochPlanner.","lastModifiedDate":"2024-03-07"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar poochplanner.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2024-03-08"},{"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":"jannaleong"},"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":"2024-03-18"},{"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":"chiageng"},"content":" * `/pooch-staff ; name : Poochie ; phone : 98765435 ; address : Poochie Street 21 ; email : ilovecatstoo@gmail.com ; salary : $50/hr ; employment : part-time` : Adds a staff contact named `Poochie` to the Pooch Planner.","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":30,"author":{"gitId":"chiageng"},"content":" * `/pooch-supplier ; name : PetCo ; phone : 98673098 ; address : Meow Street 24 ; email : ilovewombatstoo@gmail.com ; product : kibble ; price : $98/bag` : Adds a supplier contact named `PetCo` to the Pooch Planner.","lastModifiedDate":"2024-03-01"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":32,"author":{"gitId":"chiageng"},"content":" * `/pooch-maintenance ; name : Tom Tan ; phone : 98765435 ; address : Poochie Street 24 ; email : ihelppooches@gmail.com ; skill : trainer ; commission : $60/hr` : Adds a helper contact named `Tom Tan` to the Pooch Planner.","lastModifiedDate":"2024-03-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"chiageng"},"content":" * `/delete ; name : Poochie` : Deletes the contact with associated contact name.","lastModifiedDate":"2024-03-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"chiageng"},"content":" * `/exit` : Exits the app.","lastModifiedDate":"2024-03-07"},{"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":"chiageng"},"content":"* Words in `[parameter name]` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":" e.g. in `/pooch-staff ; name : [name]`, `[name]` is a parameter which can be used as `/pooch-staff ; name : Poochie`.","lastModifiedDate":"2024-03-01"},{"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":"chiageng"},"content":" e.g. if the command specifies `name : [name] ; phone : [phone]`, `phone : [phone] ; name : [name]` is also acceptable.","lastModifiedDate":"2024-03-01"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":"* Extraneous parameters for commands that do not take in parameters (such as `/list`, `/exit`) will be ignored.\u003cbr\u003e","lastModifiedDate":"2024-03-07"},{"lineNumber":55,"author":{"gitId":"chiageng"},"content":" e.g. if the command specifies `/list 123`, it will be interpreted as `/list`.","lastModifiedDate":"2024-03-07"},{"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":"jannaleong"},"content":"### Viewing help : `/help`","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"jannaleong"},"content":"Shows a message of how to write commands for all commands or a specfic command.","lastModifiedDate":"2024-03-06"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"jannaleong"},"content":"### Get help for all commands","lastModifiedDate":"2024-03-06"},{"lineNumber":65,"author":{"gitId":"jannaleong"},"content":"Format: `/help`","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"jannaleong"},"content":"### Get help for a specific command","lastModifiedDate":"2024-03-06"},{"lineNumber":68,"author":{"gitId":"jannaleong"},"content":"Format: `/help-[command type]`","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":70,"author":{"gitId":"jannaleong"},"content":"Examples:","lastModifiedDate":"2024-03-06"},{"lineNumber":71,"author":{"gitId":"jannaleong"},"content":"* `/help-poochstaff`","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"jannaleong"},"content":"* `/help-poochsupplier`","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"jannaleong"},"content":"* `/help-poochmaintenance`","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"jannaleong"},"content":"* `/help-edit`","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"jannaleong"},"content":"* `/help-delete`","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"jannaleong"},"content":"* `/help-search`","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"chiageng"},"content":"### Adding a contact: `Add`","lastModifiedDate":"2024-03-01"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"chiageng"},"content":"Adds a staff / supplier / maintainer / other to the Pooch Planner.","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"chiageng"},"content":"#### Adds a staff","lastModifiedDate":"2024-03-01"},{"lineNumber":84,"author":{"gitId":"chiageng"},"content":"Format: `/pooch-staff ; name : [name] ; phone : [phone] ; address : [address] ; email : [email] ; salary : [salary/hr] ; employment : [part/full] ;`","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"chiageng"},"content":"#### Adds a supplier","lastModifiedDate":"2024-03-01"},{"lineNumber":87,"author":{"gitId":"chiageng"},"content":"Format: `/pooch-supplier ; name : [name] ; phone : [phone] ; address : [address] ; email : [email] ; product : [product] ; price : [price/(quantity)] ;`","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":89,"author":{"gitId":"chiageng"},"content":"#### Adds a maintainer","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"chiageng"},"content":"Format: `/pooch-maintainer ; name : [name] ; phone : [phone] ; address : [address] ; email : [email] ; skill : [skill] ; commission : [commission/hr] ;`","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"chiageng"},"content":"#### Adds a general contact","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"chiageng"},"content":"Format: `/pooch-add ; name : [name] ; phone : [phone] ; address : [address] ; email : [email] ;`","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"chiageng"},"content":"* `/pooch-staff ; name : Poochie ; phone : 98765435 ; address : Poochie Street 21 ; email : ilovecatstoo@gmail.com ; salary : $50/hr ; employment : part-time`","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"chiageng"},"content":"* `/pooch-supplier ; name : PetCo ; phone : 98673098 ; address : Meow Street 24 ; email : ilovewombatstoo@gmail.com ; product : kibble ; price : $98/bag`","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"chiageng"},"content":"* `/pooch-maintainer ; name : Tom Tan ; phone : 98765435 ; address : Poochie Street 24 ; email : ihelppooches@gmail.com ; skill : trainer ; commission : $60/hr`","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"chiageng"},"content":"* `/pooch-add ; name : Janna ; phone : 98765435 ; address : Poochie Street 24 ; email : ihelppooches@gmail.com`","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":102,"author":{"gitId":"jannaleong"},"content":"Constraints :","lastModifiedDate":"2024-03-06"},{"lineNumber":103,"author":{"gitId":"chiageng"},"content":"* `Duplicate name will not be allowed`","lastModifiedDate":"2024-03-01"},{"lineNumber":104,"author":{"gitId":"chiageng"},"content":"* `For instance, to check whether a name is unique (case-insensitive), we parse in the .lower() String method to convert all fields to lowercase.`","lastModifiedDate":"2024-03-01"},{"lineNumber":105,"author":{"gitId":"chiageng"},"content":"* `Name field is case-insensitive but space-sensitive`","lastModifiedDate":"2024-03-01"},{"lineNumber":106,"author":{"gitId":"chiageng"},"content":"* `Salary and commission must be in format ${Number}/hr`","lastModifiedDate":"2024-03-18"},{"lineNumber":107,"author":{"gitId":"chiageng"},"content":"* `Price must be in format ${Number}/{quantity}`","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"yleeyilin"},"content":"### Editing a contact : `Edit`","lastModifiedDate":"2024-03-18"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"yleeyilin"},"content":"Edit the fields of the specified **person / staff / supplier / maintainer** in the Pooch Planner.","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"yleeyilin"},"content":"#### Edits a person","lastModifiedDate":"2024-03-18"},{"lineNumber":115,"author":{"gitId":"yleeyilin"},"content":"Format: `/edit ; name : [name] ; field : { phone : [phone] ; address : [address] ; email : [email] }`","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":118,"author":{"gitId":"yleeyilin"},"content":"#### Edits a staff","lastModifiedDate":"2024-03-18"},{"lineNumber":119,"author":{"gitId":"yleeyilin"},"content":"Format: `/edit-staff ; name : [name] ; field : { phone : [phone] ; address : [address] ; email : [email] ; salary : [salary] ; employment : [part/full] }`","lastModifiedDate":"2024-03-18"},{"lineNumber":120,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":122,"author":{"gitId":"yleeyilin"},"content":"#### Edits a supplier","lastModifiedDate":"2024-03-18"},{"lineNumber":123,"author":{"gitId":"yleeyilin"},"content":"Format: `/edit-supplier ; name : [name] ; field : { phone : [phone] ; address : [address] ; email : [email] ; product : [product] ; price : [price] }`","lastModifiedDate":"2024-03-18"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":126,"author":{"gitId":"yleeyilin"},"content":"#### Edits a maintainer","lastModifiedDate":"2024-03-18"},{"lineNumber":127,"author":{"gitId":"yleeyilin"},"content":"Format: `/edit-maintainer ; name : [name] ; field : { phone : [phone] ; address : [address] ; email : [email] ; skill : [skill] ; commission : [commission] }`","lastModifiedDate":"2024-03-18"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":129,"author":{"gitId":"yleeyilin"},"content":"* Edits the specified `field`(s) of the person with the specified `name`. Note that the specified person must first exist in Pooch Contact Book.","lastModifiedDate":"2024-02-28"},{"lineNumber":130,"author":{"gitId":"yleeyilin"},"content":"* The name is a compulsory field that is case-insensitive but space-sensitive.","lastModifiedDate":"2024-02-28"},{"lineNumber":131,"author":{"gitId":"yleeyilin"},"content":"* At least one field must be provided.","lastModifiedDate":"2024-02-28"},{"lineNumber":132,"author":{"gitId":"yleeyilin"},"content":"* More than one field can be updated at the same time.","lastModifiedDate":"2024-02-28"},{"lineNumber":133,"author":{"gitId":"yleeyilin"},"content":"* The field(s) to be edited must be a valid field within their contact type, i.e. Pooch Staff, Pooch Supplier, Pooch Maintenance.","lastModifiedDate":"2024-03-18"},{"lineNumber":134,"author":{"gitId":"yleeyilin"},"content":"* **_Caution_** : Editing `name` field is strictly **not** allowed and **will** be ignored.","lastModifiedDate":"2024-03-18"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":136,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2024-02-28"},{"lineNumber":137,"author":{"gitId":"chiageng"},"content":"* `/edit ; name : Poochie ; field : { name : Mochie }`","lastModifiedDate":"2024-03-07"},{"lineNumber":138,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":139,"author":{"gitId":"yleeyilin"},"content":" The above command edits the name of the person, from **_Poochie_** to **_Mochie_**, given that there are no other persons with the name, **_Mochie_**, in the Pooch Contact Book.","lastModifiedDate":"2024-02-28"},{"lineNumber":140,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":141,"author":{"gitId":"yleeyilin"},"content":"* `/edit-staff ; name : Thomas ; field : { address : Poochie Street 25 ; employment : full-time }`","lastModifiedDate":"2024-03-18"},{"lineNumber":142,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":143,"author":{"gitId":"yleeyilin"},"content":" The above command edits the address of **_Thomas_** to **_Poochie Street 25_**.","lastModifiedDate":"2024-02-28"},{"lineNumber":144,"author":{"gitId":"yleeyilin"},"content":" The above command also edits the employment of **_Thomas_**, which **must** be a **_Pooch Staff_**, to **_full-time_**.","lastModifiedDate":"2024-02-28"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"chiageng"},"content":"Deletes the specified person from the Pooch Planner.","lastModifiedDate":"2024-03-07"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"chiageng"},"content":"Format: `/delete ; name : [name]`","lastModifiedDate":"2024-03-07"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"jamessinmaojun"},"content":"* Deletes the contact with the specified `name`. Note that the specified person must first exist in Pooch Contact Book.","lastModifiedDate":"2024-02-29"},{"lineNumber":153,"author":{"gitId":"jamessinmaojun"},"content":"* The name is a compulsory field that is case-insensitive but space-sensitive.","lastModifiedDate":"2024-02-29"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"chiageng"},"content":"* `/delete ; name : Poochie`","lastModifiedDate":"2024-03-07"},{"lineNumber":157,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":158,"author":{"gitId":"jamessinmaojun"},"content":" The above command deletes the contact with name **_Poochie_**, provided **_Poochie_** exists as a name of a contact in Pooch Contact Book","lastModifiedDate":"2024-02-29"},{"lineNumber":159,"author":{"gitId":"jamessinmaojun"},"content":" ","lastModifiedDate":"2024-02-29"},{"lineNumber":160,"author":{"gitId":"chiageng"},"content":"* `/delete ; name : Moochie`","lastModifiedDate":"2024-03-07"},{"lineNumber":161,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":162,"author":{"gitId":"jamessinmaojun"},"content":" The above command deletes the contact with name **_Moochie_**, provided **_Moochie_** exists as a name of a contact in Pooch Contact Book","lastModifiedDate":"2024-02-29"},{"lineNumber":163,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"Joshy837"},"content":"### Searching a contact : `search`","lastModifiedDate":"2024-03-06"},{"lineNumber":166,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":167,"author":{"gitId":"Joshy837"},"content":"Searches through the address book using specified fields and keyword.","lastModifiedDate":"2024-03-06"},{"lineNumber":168,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":169,"author":{"gitId":"Joshy837"},"content":"Formats:","lastModifiedDate":"2024-03-06"},{"lineNumber":170,"author":{"gitId":"Joshy837"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":171,"author":{"gitId":"Joshy837"},"content":"/search ; name : [full/partial name]","lastModifiedDate":"2024-03-06"},{"lineNumber":172,"author":{"gitId":"Joshy837"},"content":"/search ; phone : [full/partial phone]","lastModifiedDate":"2024-03-06"},{"lineNumber":173,"author":{"gitId":"Joshy837"},"content":"/search ; address : [full/partial address]","lastModifiedDate":"2024-03-06"},{"lineNumber":174,"author":{"gitId":"Joshy837"},"content":"/search ; email : [full/partial email]","lastModifiedDate":"2024-03-06"},{"lineNumber":175,"author":{"gitId":"Joshy837"},"content":"/search ; product : [full/partial product name]","lastModifiedDate":"2024-03-06"},{"lineNumber":176,"author":{"gitId":"Joshy837"},"content":"/search ; employment : [employment]","lastModifiedDate":"2024-03-06"},{"lineNumber":177,"author":{"gitId":"Joshy837"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":178,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":179,"author":{"gitId":"Joshy837"},"content":"* Searches the person by specifying field (i.e. `name`, `phone`, `address`, etc.), followed by the partial or full keyword","lastModifiedDate":"2024-03-06"},{"lineNumber":180,"author":{"gitId":"Joshy837"},"content":"* Current feature does not allow users to search for `commission`, `salary`, and `price`","lastModifiedDate":"2024-03-06"},{"lineNumber":181,"author":{"gitId":"Joshy837"},"content":"* All fields are **case-insensitive**.","lastModifiedDate":"2024-03-06"},{"lineNumber":182,"author":{"gitId":"Joshy837"},"content":"For instance, to check whether a name is unique (case-insensitive)","lastModifiedDate":"2024-03-06"},{"lineNumber":183,"author":{"gitId":"Joshy837"},"content":" * Eg : `Janna` and `janna` are both equivalent","lastModifiedDate":"2024-03-06"},{"lineNumber":184,"author":{"gitId":"Joshy837"},"content":"* Spaces within each input are considered","lastModifiedDate":"2024-03-06"},{"lineNumber":185,"author":{"gitId":"Joshy837"},"content":" * Eg: `Tom Tan Er` is different from `Tom Taner`","lastModifiedDate":"2024-03-06"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":188,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2024-03-06"},{"lineNumber":189,"author":{"gitId":"Joshy837"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":190,"author":{"gitId":"Joshy837"},"content":"/search ; name : Poochie","lastModifiedDate":"2024-03-06"},{"lineNumber":191,"author":{"gitId":"Joshy837"},"content":"/search ; phone : 98765432","lastModifiedDate":"2024-03-06"},{"lineNumber":192,"author":{"gitId":"Joshy837"},"content":"/search ; address : Poochie Street 21","lastModifiedDate":"2024-03-06"},{"lineNumber":193,"author":{"gitId":"Joshy837"},"content":"/search ; email : ilovecatstoo@gmail.com","lastModifiedDate":"2024-03-06"},{"lineNumber":194,"author":{"gitId":"Joshy837"},"content":"/search ; address : Pooch","lastModifiedDate":"2024-03-06"},{"lineNumber":195,"author":{"gitId":"Joshy837"},"content":"/search ; description : Food","lastModifiedDate":"2024-03-06"},{"lineNumber":196,"author":{"gitId":"Joshy837"},"content":"```","lastModifiedDate":"2024-03-06"},{"lineNumber":197,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":198,"author":{"gitId":"jannaleong"},"content":"### Adding a note : `note`","lastModifiedDate":"2024-03-19"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":200,"author":{"gitId":"jannaleong"},"content":"Adds a note to a specified person from the Pooch Planner.","lastModifiedDate":"2024-03-19"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":202,"author":{"gitId":"jannaleong"},"content":"Format: `/note ; name : [name] ; note : [note message]`","lastModifiedDate":"2024-03-19"},{"lineNumber":203,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":204,"author":{"gitId":"jannaleong"},"content":"* Adds a note to the contact with the specified `name`. ","lastModifiedDate":"2024-03-19"},{"lineNumber":205,"author":{"gitId":"jannaleong"},"content":"* Note that the specified person must first exist in Pooch Contact Book.","lastModifiedDate":"2024-03-19"},{"lineNumber":206,"author":{"gitId":"jannaleong"},"content":"* The name and note is a compulsory field that is case-insensitive but space-sensitive.","lastModifiedDate":"2024-03-19"},{"lineNumber":207,"author":{"gitId":"jannaleong"},"content":"* Note command can only be done on general persons classes. (eg. not Maintainer, Staff, Supplier)","lastModifiedDate":"2024-03-19"},{"lineNumber":208,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":209,"author":{"gitId":"jannaleong"},"content":"Examples:","lastModifiedDate":"2024-03-19"},{"lineNumber":210,"author":{"gitId":"jannaleong"},"content":"* `/note ; name : Poochie ; note : meet poochie tonight to get kibble`","lastModifiedDate":"2024-03-19"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":212,"author":{"gitId":"jannaleong"},"content":" The above command adds the note \"meet poochie tonight to get kibble\" to ","lastModifiedDate":"2024-03-19"},{"lineNumber":213,"author":{"gitId":"jannaleong"},"content":" the contact with name **_Poochie_**, provided **_Poochie_** exists as a name of a contact in Pooch Contact Book","lastModifiedDate":"2024-03-19"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":215,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":219,"author":{"gitId":"chiageng"},"content":"Format: `/exit`","lastModifiedDate":"2024-03-07"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"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":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":227,"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":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":229,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e:exclamation: **Caution:**","lastModifiedDate":"2021-02-04"},{"lineNumber":230,"author":{"gitId":"chiageng"},"content":"If your changes to the data file makes its format invalid, PoochPlanner 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.\u003cbr\u003e","lastModifiedDate":"2024-03-07"},{"lineNumber":231,"author":{"gitId":"chiageng"},"content":"Furthermore, certain edits can cause the PoochPlanner to behave in unexpected ways (e.g., if a value entered is outside of the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.","lastModifiedDate":"2024-03-07"},{"lineNumber":232,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-02-04"},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":234,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04"},{"lineNumber":237,"author":{"gitId":"-"},"content":"","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":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"chiageng"},"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 PoochPlanner home folder.","lastModifiedDate":"2024-03-07"},{"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":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":249,"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":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":251,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":252,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":253,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":"--------|------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"chiageng"},"content":"**Add Staff** | `/pooch-staff ; name : [name] ; phone : [phone] ; address : [address] ; email : [email] ; salary : [salary] ; employment : [part/full]` \u003cbr\u003e e.g., `/pooch-staff ; name : Poochie ; phone : 98765435 ; address : Poochie Street 21 ; email : ilovecatstoo@gmail.com ; salary : $50/h ; employment : part-time`","lastModifiedDate":"2024-03-07"},{"lineNumber":258,"author":{"gitId":"chiageng"},"content":"**Add Supplier** | `/pooch-supplier ; name : [name] ; phone : [phone] ; address : [address] ; email : [email] ; product : [product] ; price : [price]` \u003cbr\u003e e.g., `/pooch-supplier ; name : PetCo ; phone : 98673098 ; address : Meow Street 24 ; email : ilovewombatstoo@gmail.com ; product : kibble ; price : $98/bag`","lastModifiedDate":"2024-03-07"},{"lineNumber":259,"author":{"gitId":"chiageng"},"content":"**Add Helper** | `/pooch-maintainer ; name : [name] ; phone : [phone] ; address : [address] ; email : [email] ; skill : [skill] ; commission : [commission]` \u003cbr\u003e e.g., `/pooch-maintainer ; name : Tom Tan ; phone : 98765435 ; address : Poochie Street 24 ; email : ihelppooches@gmail.com ; skill : trainer ; commission : $60/hr`","lastModifiedDate":"2024-03-18"},{"lineNumber":260,"author":{"gitId":"chiageng"},"content":"**Add General Contact** | `/pooch-add ; name : [name] ; phone : [phone] ; address : [address] ; email : [email] ; skill : [skill] ; commission : [commission]` \u003cbr\u003e e.g., `/pooch-add ; name : Janna ; phone : 98765435 ; address : Poochie Street 24 ; email : iamjanna@gmail.com`","lastModifiedDate":"2024-03-18"},{"lineNumber":261,"author":{"gitId":"chiageng"},"content":"**Delete** | `/delete name : [name] `\u003cbr\u003e e.g., `delete ; name : Poochie`","lastModifiedDate":"2024-03-07"},{"lineNumber":262,"author":{"gitId":"chiageng"},"content":"**Edit** | `/edit ; name : [name] ; field : { field : data ; field : data }`\u003cbr\u003e e.g., `/edit ; name : Poochie ; field : { name : Mochi }` \u003cbr\u003e e.g.,`/edit ; name : Poochie ; field : { address : Poochie Street 25 ; employment : full-time }`","lastModifiedDate":"2024-03-07"},{"lineNumber":263,"author":{"gitId":"chiageng"},"content":"**Search** | `/search ; parameter : [value]`\u003cbr\u003e e.g., `/search ; name : Poochie`","lastModifiedDate":"2024-03-07"},{"lineNumber":264,"author":{"gitId":"chiageng"},"content":"**List** | `/list`","lastModifiedDate":"2024-03-07"},{"lineNumber":265,"author":{"gitId":"jannaleong"},"content":"**Help** | `/help`","lastModifiedDate":"2024-03-18"},{"lineNumber":266,"author":{"gitId":"jannaleong"},"content":"**Help PoochStaff** | `/help-poochstaff`","lastModifiedDate":"2024-03-18"},{"lineNumber":267,"author":{"gitId":"jannaleong"},"content":"**Help PoochSupplier** | `/help-poochsupplier`","lastModifiedDate":"2024-03-18"},{"lineNumber":268,"author":{"gitId":"jannaleong"},"content":"**Help PoochMaintenance** | `/help-poochmaintenance`","lastModifiedDate":"2024-03-18"},{"lineNumber":269,"author":{"gitId":"jannaleong"},"content":"**Help Delete** | `/help-delete`","lastModifiedDate":"2024-03-18"},{"lineNumber":270,"author":{"gitId":"jannaleong"},"content":"**Help Edit** | `/help-edit`","lastModifiedDate":"2024-03-18"},{"lineNumber":271,"author":{"gitId":"jannaleong"},"content":"**Help Search** | `/help-search`","lastModifiedDate":"2024-03-18"},{"lineNumber":272,"author":{"gitId":"chiageng"},"content":"`","lastModifiedDate":"2024-03-07"}],"authorContributionMap":{"Joshy837":31,"chiageng":52,"jamessinmaojun":8,"jannaleong":35,"-":122,"yleeyilin":24}},{"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":"jamessinmaojun"},"content":" content: \"PoochPlanner\";","lastModifiedDate":"2024-02-29"},{"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":{"jamessinmaojun":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":"jamessinmaojun"},"content":"user -[USER_COLOR]\u003e ui : \"/delete ; name : Poochie\"","lastModifiedDate":"2024-03-18"},{"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":"jamessinmaojun"},"content":"ui -[UI_COLOR]\u003e logic : execute(\"/delete ; name : Poochie\")","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":"logic -[LOGIC_COLOR]\u003e model : deletePerson(p)","lastModifiedDate":"2019-07-03"},{"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":{"jamessinmaojun":2,"-":37}},{"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 \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-02-09"},{"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 \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-02-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":"[-\u003e LogicManager : execute(\"/delete Poochie\")","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"activate LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"delete Poochie\")","lastModifiedDate":"2024-03-18"},{"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":"jannaleong"},"content":"AddressBookParser -\u003e DeleteCommandParser : parse(\"Poochie\")","lastModifiedDate":"2024-03-18"},{"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 :","lastModifiedDate":"2024-02-09"},{"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(m)","lastModifiedDate":"2024-02-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":"activate DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":52,"author":{"gitId":"jannaleong"},"content":"DeleteCommand -\u003e Model : deletePerson(Poochie)","lastModifiedDate":"2024-03-18"},{"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 : r","lastModifiedDate":"2024-02-09"},{"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":{"jannaleong":4,"-":66}},{"path":"docs/diagrams/LogicClassDiagram.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 LOGIC_COLOR_T4","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"package Logic as LogicPackage {","lastModifiedDate":"2023-07-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"package \"Parser Classes\" as ParserClasses{","lastModifiedDate":"2024-02-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-02-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"Class XYZCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"Class CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"Class \"{abstract}\\nCommand\" as Command","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nLogic\" as Logic","lastModifiedDate":"2022-01-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Class LogicManager","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 {","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 Storage {","lastModifiedDate":"2021-03-30"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-03-30"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-03-30"},{"lineNumber":27,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Logic","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"LogicManager .right.|\u003e Logic","lastModifiedDate":"2021-07-31"},{"lineNumber":31,"author":{"gitId":"-"},"content":"LogicManager -right-\u003e\"1\" ParserClasses","lastModifiedDate":"2024-02-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":"ParserClasses ..\u003e XYZCommand : \u003c\u003ccreate\u003e\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"XYZCommand -up-|\u003e Command","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"LogicManager .left.\u003e Command : \u003c\u003ccall\u003e\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":37,"author":{"gitId":"-"},"content":"LogicManager --\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"LogicManager --\u003e Storage","lastModifiedDate":"2021-03-30"},{"lineNumber":39,"author":{"gitId":"-"},"content":"Storage --[hidden] Model","lastModifiedDate":"2021-03-30"},{"lineNumber":40,"author":{"gitId":"-"},"content":"Command .[hidden]up.\u003e Storage","lastModifiedDate":"2021-03-30"},{"lineNumber":41,"author":{"gitId":"-"},"content":"Command .right.\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":42,"author":{"gitId":"jannaleong"},"content":"note right of XYZCommand: XYZCommand \u003d AddStaffCommand, \\nSearchCommand, etc","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"Logic ..\u003e CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"LogicManager .down.\u003e CommandResult","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"Command .up.\u003e CommandResult : \u003c\u003ccreate\u003e\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"jannaleong":1,"-":46}},{"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":"-"},"content":"Class UniquePersonList","lastModifiedDate":"2021-07-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Class Person","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"Joshy837"},"content":"Class Staff","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"Joshy837"},"content":"Class Supplier","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"Joshy837"},"content":"Class Maintainer","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Class Name","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"Class Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"Joshy837"},"content":"Class Email","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"Joshy837"},"content":"Class Address","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"Joshy837"},"content":"Class Salary","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"Joshy837"},"content":"Class Employment","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"Joshy837"},"content":"Class Price","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"Joshy837"},"content":"Class Product","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"Joshy837"},"content":"Class Skill","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"Joshy837"},"content":"Class Commission","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":"Class Tag","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"Class I #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":36,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"AddressBook .up.|\u003e ReadOnlyAddressBook","lastModifiedDate":"2019-07-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":"ModelManager .up.|\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"Model .right.\u003e ReadOnlyUserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":42,"author":{"gitId":"-"},"content":"Model .left.\u003e ReadOnlyAddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":43,"author":{"gitId":"-"},"content":"ModelManager -left-\u003e \"1\" AddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":44,"author":{"gitId":"-"},"content":"ModelManager -right-\u003e \"1\" UserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":45,"author":{"gitId":"-"},"content":"UserPrefs .up.|\u003e ReadOnlyUserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":47,"author":{"gitId":"-"},"content":"AddressBook *--\u003e \"1\" UniquePersonList","lastModifiedDate":"2019-07-30"},{"lineNumber":48,"author":{"gitId":"-"},"content":"UniquePersonList --\u003e \"~* all\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":"Person *--\u003e \"1\" Name","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":"Person *--\u003e \"1\" Phone","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":"Person *--\u003e \"1\" Email","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":"Person *--\u003e \"1\" Address","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":"Person *--\u003e \"*\" Tag","lastModifiedDate":"2019-07-03"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":55,"author":{"gitId":"Joshy837"},"content":"Person \u003c|-- Staff","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"Joshy837"},"content":"Person \u003c|-- Supplier","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"Joshy837"},"content":"Person \u003c|-- Maintainer","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"Joshy837"},"content":"Staff *--\u003e Salary","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"Joshy837"},"content":"Staff *--\u003e Employment","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"Joshy837"},"content":"Supplier *--\u003e Price","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"Joshy837"},"content":"Supplier *--\u003e Product","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"Joshy837"},"content":"Maintainer *--\u003e Skill","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"Joshy837"},"content":"Maintainer *--\u003e Commission","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":"Person -[hidden]up--\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":"UniquePersonList -[hidden]right-\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":"Name -[hidden]right-\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":72,"author":{"gitId":"-"},"content":"Phone -[hidden]right-\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":73,"author":{"gitId":"-"},"content":"Address -[hidden]right-\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":75,"author":{"gitId":"-"},"content":"ModelManager --\u003e \"~* filtered\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":76,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"Joshy837":24,"chiageng":4,"-":48}},{"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":"-"},"content":"Class JsonAdaptedPerson","lastModifiedDate":"2021-07-31"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":"class JsonAdaptedXYZ","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":"Class JsonAdaptedTag","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":"","lastModifiedDate":"2021-07-31"},{"lineNumber":28,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2021-07-31"},{"lineNumber":29,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Storage","lastModifiedDate":"2021-07-31"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":31,"author":{"gitId":"-"},"content":"StorageManager .up.|\u003e Storage","lastModifiedDate":"2021-07-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"StorageManager -up-\u003e \"1\" UserPrefsStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":33,"author":{"gitId":"-"},"content":"StorageManager -up-\u003e \"1\" AddressBookStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"Storage -left-|\u003e UserPrefsStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"Storage -right-|\u003e AddressBookStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"JsonUserPrefsStorage .up.|\u003e UserPrefsStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":39,"author":{"gitId":"-"},"content":"JsonAddressBookStorage .up.|\u003e AddressBookStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":40,"author":{"gitId":"-"},"content":"JsonAddressBookStorage ..\u003e JsonSerializableAddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":41,"author":{"gitId":"-"},"content":"JsonSerializableAddressBook --\u003e \"*\" JsonAdaptedPerson","lastModifiedDate":"2021-07-31"},{"lineNumber":42,"author":{"gitId":"chiageng"},"content":"JsonAdaptedPerson -right-\u003e \"*\" JsonAdaptedTag","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"chiageng"},"content":"JsonAdaptedPerson \u003c|-down- JsonAdaptedXYZ","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-03-31"},{"lineNumber":45,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"chiageng":3,"-":42}},{"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":"yleeyilin"},"content":"Class HelpXYZWindow","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"Class ResultDisplay","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"Class PersonListPanel","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"Class PersonCard","lastModifiedDate":"2019-07-03"},{"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":"-"},"content":"MainWindow *-down-\u003e \"1\" PersonListPanel","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" StatusBarFooter","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"yleeyilin"},"content":"MainWindow --\u003e \"0..*\" HelpXYZWindow","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"PersonListPanel -down-\u003e \"*\" PersonCard","lastModifiedDate":"2021-07-31"},{"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":"-"},"content":"PersonListPanel --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"PersonCard --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":47,"author":{"gitId":"-"},"content":"StatusBarFooter --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":48,"author":{"gitId":"yleeyilin"},"content":"HelpXYZWindow --|\u003e UiPart","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":50,"author":{"gitId":"-"},"content":"PersonCard ..\u003e Model","lastModifiedDate":"2019-07-03"},{"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":"yleeyilin"},"content":"PersonListPanel -[hidden]left- HelpXYZWindow","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"yleeyilin"},"content":"HelpXYZWindow -[hidden]left- CommandBox","lastModifiedDate":"2024-03-19"},{"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":{"-":55,"yleeyilin":5}},{"path":"docs/diagrams/UndoSequenceDiagram-Logic.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 \"u:UndoCommand\" as UndoCommand LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"participant \":Model\" as Model MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"jamessinmaojun"},"content":"[-\u003e LogicManager : execute(\"/undo\")","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"activate LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"jamessinmaojun"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"/undo\")","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"activate AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"create UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"AddressBookParser -\u003e UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"activate UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"UndoCommand --\u003e AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":"deactivate UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"AddressBookParser --\u003e LogicManager : u","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"deactivate AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"LogicManager -\u003e UndoCommand : execute()","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"activate UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"UndoCommand -\u003e Model : undoAddressBook()","lastModifiedDate":"2019-07-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"activate Model","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":36,"author":{"gitId":"-"},"content":"Model --\u003e UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":37,"author":{"gitId":"-"},"content":"deactivate Model","lastModifiedDate":"2019-07-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"UndoCommand --\u003e LogicManager : result","lastModifiedDate":"2019-07-03"},{"lineNumber":40,"author":{"gitId":"-"},"content":"deactivate UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"UndoCommand -[hidden]-\u003e LogicManager : result","lastModifiedDate":"2019-07-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"destroy UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"[\u003c--LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"deactivate LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"jamessinmaojun":2,"-":44}},{"path":"docs/team/chiageng.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"chiageng"},"content":"---","lastModifiedDate":"2024-03-01"},{"lineNumber":2,"author":{"gitId":"chiageng"},"content":"layout: page","lastModifiedDate":"2024-03-01"},{"lineNumber":3,"author":{"gitId":"chiageng"},"content":"title: Chia Geng\u0027s Project Portfolio Page","lastModifiedDate":"2024-03-01"},{"lineNumber":4,"author":{"gitId":"chiageng"},"content":"---","lastModifiedDate":"2024-03-01"},{"lineNumber":5,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":6,"author":{"gitId":"chiageng"},"content":"### Project: PoochPlanner","lastModifiedDate":"2024-03-01"},{"lineNumber":7,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":"PoochPlanner is a desktop application to track details of various groups (vendors, staff) that dog cafe owners have to regularly interact with. The app is optimised for use using Command Line Interface (CLI) while still encompassing a user-friend Graphical User Interface (GUI).","lastModifiedDate":"2024-03-01"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-01"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":"* **New Feature**: Added the ability to add 4 different type of contacts. (Pull requests [\\#57](https://github.com/AY2324S2-CS2103T-W10-2/tp/pull/57))","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"chiageng"},"content":" * What it does: allows the user to add a new contact.","lastModifiedDate":"2024-03-01"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":" * Justification: This feature improves the product significantly because a user can store all contacts in this address book.","lastModifiedDate":"2024-03-01"},{"lineNumber":15,"author":{"gitId":"chiageng"},"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":"2024-03-01"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":"* **Storing Json** : Handled the serialization of different type of contacts to store as JSON objects. (Pull requests [\\#57](https://github.com/AY2324S2-CS2103T-W10-2/tp/pull/57))","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":" * What it does: store different type of contact into JSON object.","lastModifiedDate":"2024-03-09"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":" * Justification: This feature improves the product significantly because a user can store all contacts into local storage.","lastModifiedDate":"2024-03-09"},{"lineNumber":20,"author":{"gitId":"chiageng"},"content":" * Highlights: This enhancement affects existing project structure. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changes to existing project structure.","lastModifiedDate":"2024-03-09"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":"* **Reading Json** : Handled the serialization of reading different type of contacts from JSON file. (Pull requests [\\#57](https://github.com/AY2324S2-CS2103T-W10-2/tp/pull/57))","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"chiageng"},"content":" * What it does: read different type of contact from JSON file.","lastModifiedDate":"2024-03-09"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":" * Justification: This feature improves the product significantly because a user can retrieve all contacts from local storage.","lastModifiedDate":"2024-03-09"},{"lineNumber":25,"author":{"gitId":"chiageng"},"content":" * Highlights: This enhancement affects existing project structure. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changes to existing project structure.","lastModifiedDate":"2024-03-09"},{"lineNumber":26,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":27,"author":{"gitId":"chiageng"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-03-01"},{"lineNumber":28,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":29,"author":{"gitId":"chiageng"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-03-09"},{"lineNumber":30,"author":{"gitId":"chiageng"},"content":" * Updated the GUI for display different type of contacts (Pull requests [\\#57](https://github.com/AY2324S2-CS2103T-W10-2/tp/pull/57)","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":32,"author":{"gitId":"chiageng"},"content":"* **Documentation**:","lastModifiedDate":"2024-03-01"},{"lineNumber":33,"author":{"gitId":"chiageng"},"content":" * User Guide:","lastModifiedDate":"2024-03-01"},{"lineNumber":34,"author":{"gitId":"chiageng"},"content":" * Added documentation for the features `add`","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"chiageng"},"content":" * Developer Guide:","lastModifiedDate":"2024-03-01"},{"lineNumber":36,"author":{"gitId":"chiageng"},"content":" * Added non functional requirements.","lastModifiedDate":"2024-03-01"},{"lineNumber":37,"author":{"gitId":"chiageng"},"content":" * Updated use cases for PoochPlanner.","lastModifiedDate":"2024-03-02"}],"authorContributionMap":{"chiageng":37}},{"path":"docs/team/jamessinmaojun.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"jamessinmaojun"},"content":"---","lastModifiedDate":"2024-02-29"},{"lineNumber":2,"author":{"gitId":"jamessinmaojun"},"content":"layout: page","lastModifiedDate":"2024-02-29"},{"lineNumber":3,"author":{"gitId":"jamessinmaojun"},"content":"title: James\u0027 Project Portfolio Page","lastModifiedDate":"2024-02-29"},{"lineNumber":4,"author":{"gitId":"jamessinmaojun"},"content":"---","lastModifiedDate":"2024-02-29"},{"lineNumber":5,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":6,"author":{"gitId":"jamessinmaojun"},"content":"### Project: PoochPlanner","lastModifiedDate":"2024-02-29"},{"lineNumber":7,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":8,"author":{"gitId":"jamessinmaojun"},"content":"PoochPlanner is a desktop application to track details of various groups (vendors, staff) that dog cafe owners have to regularly interact with. The app is optimised for use using Command Line Interface (CLI) while still encompassing a user-friend Graphical User Interface (GUI).","lastModifiedDate":"2024-02-29"},{"lineNumber":9,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":10,"author":{"gitId":"jamessinmaojun"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-02-29"},{"lineNumber":11,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":12,"author":{"gitId":"jamessinmaojun"},"content":"* **New Feature**: Added the ability to delete contacts.","lastModifiedDate":"2024-02-29"},{"lineNumber":13,"author":{"gitId":"jamessinmaojun"},"content":" * What it does: allows the user to delete a certain contact, one at a time.","lastModifiedDate":"2024-02-29"},{"lineNumber":14,"author":{"gitId":"jamessinmaojun"},"content":" * Justification: This feature improves the product significantly because the address book can become too long and cluttered over time. Given the nature of the target users\u0027 business, contact turnover rate is expected to be very high and thus deleting unused contacts proves to be useful.","lastModifiedDate":"2024-02-29"},{"lineNumber":15,"author":{"gitId":"jamessinmaojun"},"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":"2024-02-29"},{"lineNumber":16,"author":{"gitId":"jamessinmaojun"},"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":"2024-02-29"},{"lineNumber":17,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":18,"author":{"gitId":"jamessinmaojun"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-02-29"},{"lineNumber":19,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":20,"author":{"gitId":"jamessinmaojun"},"content":"* **Documentation**:","lastModifiedDate":"2024-02-29"},{"lineNumber":21,"author":{"gitId":"jamessinmaojun"},"content":" * User Guide:","lastModifiedDate":"2024-02-29"},{"lineNumber":22,"author":{"gitId":"jamessinmaojun"},"content":" * Added documentation for the feature `delete` [\\#29]()","lastModifiedDate":"2024-02-29"},{"lineNumber":23,"author":{"gitId":"jamessinmaojun"},"content":" * Developer Guide:","lastModifiedDate":"2024-02-29"},{"lineNumber":24,"author":{"gitId":"jamessinmaojun"},"content":" * Added use cases for PoochPlanner [\\#30]()","lastModifiedDate":"2024-02-29"}],"authorContributionMap":{"jamessinmaojun":24}},{"path":"docs/team/jannaleong.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"---","lastModifiedDate":"2024-03-06"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"layout: page","lastModifiedDate":"2024-03-06"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"title: Janna\u0027s Project Portfolio Page","lastModifiedDate":"2024-03-06"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"---","lastModifiedDate":"2024-03-06"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"### Project: PoochPlanner","lastModifiedDate":"2024-03-06"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":"PoochPlanner is a desktop application to track details of various groups (vendors, staff) that dog cafe owners have to regularly interact with. The app is optimised for use using Command Line Interface (CLI) while still encompassing a user-friend Graphical User Interface (GUI).","lastModifiedDate":"2024-03-06"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-06"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":"* **New Feature**: Added the ability to give help to users regarding commands.","lastModifiedDate":"2024-03-06"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":" * What it does: Returns the user the correct command format for specific commands or all commands.","lastModifiedDate":"2024-03-06"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":" * Justification: This feature is crucial for first time users who are unfamiliar to the commands.","lastModifiedDate":"2024-03-06"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":" * Highlights: This enhancement is affected by existing commands and must be updated to accomodate to new commands.","lastModifiedDate":"2024-03-06"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"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":"2024-03-06"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-03-06"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":"* **Documentation**:","lastModifiedDate":"2024-03-06"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":" * User Guide:","lastModifiedDate":"2024-03-06"},{"lineNumber":22,"author":{"gitId":"jannaleong"},"content":" * Added documentation for the feature `help` [\\#17]())","lastModifiedDate":"2024-03-06"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":" * Developer Guide:","lastModifiedDate":"2024-03-06"},{"lineNumber":24,"author":{"gitId":"jannaleong"},"content":" * Added target user profile, value proposition, and user stories [\\#19]())","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"jannaleong":24}},{"path":"docs/team/joshy837.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Joshy837"},"content":"---","lastModifiedDate":"2024-03-06"},{"lineNumber":2,"author":{"gitId":"Joshy837"},"content":"layout: page","lastModifiedDate":"2024-03-06"},{"lineNumber":3,"author":{"gitId":"Joshy837"},"content":"title: Joshua Yip\u0027s Project Portfolio Page","lastModifiedDate":"2024-03-06"},{"lineNumber":4,"author":{"gitId":"Joshy837"},"content":"---","lastModifiedDate":"2024-03-06"},{"lineNumber":5,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":6,"author":{"gitId":"Joshy837"},"content":"### Project: PoochPlanner","lastModifiedDate":"2024-03-06"},{"lineNumber":7,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":8,"author":{"gitId":"Joshy837"},"content":"PoochPlanner is a desktop application to track details of various groups (vendors, staff) that dog cafe owners have to regularly interact with. The app is optimised for use using Command Line Interface (CLI) while still encompassing a user-friend Graphical User Interface (GUI).","lastModifiedDate":"2024-03-06"},{"lineNumber":9,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":10,"author":{"gitId":"Joshy837"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-06"},{"lineNumber":11,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":12,"author":{"gitId":"Joshy837"},"content":"* **New Feature**: Added the ability to search contact.","lastModifiedDate":"2024-03-06"},{"lineNumber":13,"author":{"gitId":"Joshy837"},"content":" * What it does: allows the user to search a contact within a field using a specified keyword.","lastModifiedDate":"2024-03-06"},{"lineNumber":14,"author":{"gitId":"Joshy837"},"content":" * Justification: This feature improves the product significantly because a user can search contacts in this address book.","lastModifiedDate":"2024-03-06"},{"lineNumber":15,"author":{"gitId":"Joshy837"},"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":"2024-03-06"},{"lineNumber":16,"author":{"gitId":"Joshy837"},"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":"2024-03-06"},{"lineNumber":17,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":18,"author":{"gitId":"Joshy837"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-03-06"},{"lineNumber":19,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":20,"author":{"gitId":"Joshy837"},"content":"* **Documentation**:","lastModifiedDate":"2024-03-06"},{"lineNumber":21,"author":{"gitId":"Joshy837"},"content":" * README:","lastModifiedDate":"2024-03-06"},{"lineNumber":22,"author":{"gitId":"Joshy837"},"content":" * Updated README for PoochPlanner [\\#15]()","lastModifiedDate":"2024-03-06"},{"lineNumber":23,"author":{"gitId":"Joshy837"},"content":" * User Guide:","lastModifiedDate":"2024-03-06"},{"lineNumber":24,"author":{"gitId":"Joshy837"},"content":" * Added documentation for the features `search` [\\#25]()","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"Joshy837":24}},{"path":"docs/team/yleeyilin.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"yleeyilin"},"content":"---","lastModifiedDate":"2024-02-28"},{"lineNumber":2,"author":{"gitId":"yleeyilin"},"content":"layout: page","lastModifiedDate":"2024-02-28"},{"lineNumber":3,"author":{"gitId":"yleeyilin"},"content":"title: Yi Lin\u0027s Project Portfolio Page","lastModifiedDate":"2024-02-28"},{"lineNumber":4,"author":{"gitId":"yleeyilin"},"content":"---","lastModifiedDate":"2024-02-28"},{"lineNumber":5,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":6,"author":{"gitId":"yleeyilin"},"content":"### Project: PoochPlanner","lastModifiedDate":"2024-02-29"},{"lineNumber":7,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":8,"author":{"gitId":"yleeyilin"},"content":"PoochPlanner is a desktop application to track details of various groups (vendors, staff) that dog cafe owners have to regularly interact with. The app is optimised for use using Command Line Interface (CLI) while still encompassing a user-friend Graphical User Interface (GUI).","lastModifiedDate":"2024-02-29"},{"lineNumber":9,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":10,"author":{"gitId":"yleeyilin"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-02-28"},{"lineNumber":11,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":12,"author":{"gitId":"yleeyilin"},"content":"* **New Feature**: Added the ability to edit previous contacts. (Pull requests [\\#62]())","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"yleeyilin"},"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":"2024-02-28"},{"lineNumber":14,"author":{"gitId":"yleeyilin"},"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":"2024-02-28"},{"lineNumber":15,"author":{"gitId":"yleeyilin"},"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":"2024-02-28"},{"lineNumber":16,"author":{"gitId":"yleeyilin"},"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":"2024-02-28"},{"lineNumber":17,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":18,"author":{"gitId":"yleeyilin"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-02-28"},{"lineNumber":19,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":20,"author":{"gitId":"yleeyilin"},"content":"* **Documentation**:","lastModifiedDate":"2024-02-28"},{"lineNumber":21,"author":{"gitId":"yleeyilin"},"content":" * User Guide:","lastModifiedDate":"2024-02-28"},{"lineNumber":22,"author":{"gitId":"yleeyilin"},"content":" * Added documentation for the feature `edit` [\\#29]())","lastModifiedDate":"2024-02-29"},{"lineNumber":23,"author":{"gitId":"yleeyilin"},"content":" * Developer Guide:","lastModifiedDate":"2024-02-28"},{"lineNumber":24,"author":{"gitId":"yleeyilin"},"content":" * Added use cases for PoochPlanner [\\#30]())","lastModifiedDate":"2024-02-29"}],"authorContributionMap":{"yleeyilin":24}},{"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":"-"},"content":" * Changes the remark of an existing person in the address book.","lastModifiedDate":"2020-07-29"},{"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":"-"},"content":" + \": Edits the remark of the person identified \"","lastModifiedDate":"2021-08-01"},{"lineNumber":69,"author":{"gitId":"-"},"content":" + \"by the index number used in the last person listing. \"","lastModifiedDate":"2020-07-29"},{"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":"-"},"content":" * @param index of the person in the filtered person list to edit the remark","lastModifiedDate":"2020-07-29"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * @param remark of the person to be updated to","lastModifiedDate":"2020-07-29"},{"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":"-"},"content":" * object that maps prefixes to their respective argument values. Only the","lastModifiedDate":"2020-07-29"},{"lineNumber":155,"author":{"gitId":"-"},"content":" * given prefixes will be recognized in the arguments string.","lastModifiedDate":"2020-07-29"},{"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":"-"},"content":" * {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2020-07-29"},{"lineNumber":159,"author":{"gitId":"-"},"content":" * @param prefixes Prefixes to tokenize the arguments string with","lastModifiedDate":"2020-07-29"},{"lineNumber":160,"author":{"gitId":"-"},"content":" * @return ArgumentMultimap object that maps prefixes to their","lastModifiedDate":"2020-07-29"},{"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":"-"},"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":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":"-"},"content":" * Returns the last value of {@code prefix}.","lastModifiedDate":"2020-07-29"},{"lineNumber":172,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":173,"author":{"gitId":"-"},"content":"public Optional\u003cString\u003e getValue(Prefix prefix) {","lastModifiedDate":"2020-07-29"},{"lineNumber":174,"author":{"gitId":"-"},"content":" List\u003cString\u003e values \u003d getAllValues(prefix);","lastModifiedDate":"2020-07-29"},{"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":"-"},"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":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":"-"},"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":"2020-07-29"},{"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":"-"},"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":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":243,"author":{"gitId":"-"},"content":"Simply add the following to [`seedu.address.ui.PersonCard`](https://github.com/se-edu/addressbook-level3/commit/850b78879582f38accb05dd20c245963c65ea599#diff-639834f1e05afe2276a86372adf0fe5f69314642c2d93cfa543d614ce5a76688).","lastModifiedDate":"2022-01-02"},{"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":"-"},"content":":exclamation: You must delete AddressBook’s storage file located at `/data/addressbook.json` before running it! Not doing so will cause AddressBook to default to an empty address book!","lastModifiedDate":"2020-07-29"},{"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":"-"},"content":"public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2020-07-29"},{"lineNumber":313,"author":{"gitId":"-"},"content":" //...","lastModifiedDate":"2020-07-29"},{"lineNumber":314,"author":{"gitId":"-"},"content":" remark.setText(person.getRemark().value);","lastModifiedDate":"2020-07-29"},{"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":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2020-07-29"},{"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":"yleeyilin"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_NAME);","lastModifiedDate":"2024-03-17"},{"lineNumber":342,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":343,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":344,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2020-07-29"},{"lineNumber":345,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new Person(","lastModifiedDate":"2021-08-01"},{"lineNumber":346,"author":{"gitId":"-"},"content":" personToEdit.getName(), personToEdit.getPhone(), personToEdit.getEmail(),","lastModifiedDate":"2021-08-01"},{"lineNumber":347,"author":{"gitId":"-"},"content":" personToEdit.getAddress(), remark, personToEdit.getTags());","lastModifiedDate":"2020-07-29"},{"lineNumber":348,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":349,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2020-07-29"},{"lineNumber":350,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2020-07-29"},{"lineNumber":351,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":352,"author":{"gitId":"-"},"content":" return new CommandResult(generateSuccessMessage(editedPerson));","lastModifiedDate":"2020-07-29"},{"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":"-"},"content":" * {@code personToEdit}.","lastModifiedDate":"2020-07-29"},{"lineNumber":359,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":360,"author":{"gitId":"-"},"content":" private String generateSuccessMessage(Person personToEdit) {","lastModifiedDate":"2020-07-29"},{"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":"-"},"content":" return String.format(message, personToEdit);","lastModifiedDate":"2020-07-29"},{"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":{"-":398,"yleeyilin":1}},{"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":"-"},"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":"","lastModifiedDate":"2017-05-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":11,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.AddMessages;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-01-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"chiageng"},"content":" public static final String COMMAND_WORD \u003d \"/pooch-add\";","lastModifiedDate":"2024-03-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a person to the address book. \"","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2017-05-09"},{"lineNumber":28,"author":{"gitId":"chiageng"},"content":" + \"\\n\"","lastModifiedDate":"2024-03-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06"},{"lineNumber":30,"author":{"gitId":"chiageng"},"content":" + PREFIX_NAME + \"John Doe other \"","lastModifiedDate":"2024-03-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09"},{"lineNumber":33,"author":{"gitId":"chiageng"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \";","lastModifiedDate":"2024-03-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":41,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":42,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10"},{"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-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":50,"author":{"gitId":"jamessinmaojun"},"content":" throw new CommandException(AddMessages.MESSAGE_ADD_DUPLICATE_PERSON);","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":53,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25"},{"lineNumber":54,"author":{"gitId":"jamessinmaojun"},"content":" return new CommandResult(String.format(AddMessages.MESSAGE_ADD_PERSON_SUCCESS, AddMessages.format(toAdd)));","lastModifiedDate":"2024-03-20"},{"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":"2017-06-22"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22"},{"lineNumber":59,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return true;","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":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return false;","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":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"jamessinmaojun":3,"chiageng":4,"-":71}},{"path":"src/main/java/seedu/address/logic/commands/AddMaintainerCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chiageng"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-08"},{"lineNumber":2,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":3,"author":{"gitId":"chiageng"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-09"},{"lineNumber":4,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-09"},{"lineNumber":5,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COMMISSION;","lastModifiedDate":"2024-03-09"},{"lineNumber":6,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-09"},{"lineNumber":7,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-09"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SKILL;","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-08"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-08"},{"lineNumber":13,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.AddMessages;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-08"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Maintainer;","lastModifiedDate":"2024-03-08"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":"/**","lastModifiedDate":"2024-03-08"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":" * Adds a person to the address book.","lastModifiedDate":"2024-03-08"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":20,"author":{"gitId":"chiageng"},"content":"public class AddMaintainerCommand extends Command {","lastModifiedDate":"2024-03-08"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":" public static final String COMMAND_WORD \u003d \"/pooch-maintainer\";","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a maintainer to the address book. \"","lastModifiedDate":"2024-03-08"},{"lineNumber":25,"author":{"gitId":"chiageng"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-03-08"},{"lineNumber":26,"author":{"gitId":"chiageng"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2024-03-08"},{"lineNumber":27,"author":{"gitId":"chiageng"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2024-03-08"},{"lineNumber":28,"author":{"gitId":"chiageng"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2024-03-08"},{"lineNumber":29,"author":{"gitId":"chiageng"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2024-03-08"},{"lineNumber":30,"author":{"gitId":"chiageng"},"content":" + PREFIX_SKILL + \"SKILL \"","lastModifiedDate":"2024-03-08"},{"lineNumber":31,"author":{"gitId":"chiageng"},"content":" + PREFIX_COMMISSION + \"COMMISSION \\n\"","lastModifiedDate":"2024-03-08"},{"lineNumber":32,"author":{"gitId":"chiageng"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2024-03-08"},{"lineNumber":33,"author":{"gitId":"chiageng"},"content":" + PREFIX_NAME + \"John Doe trainer \"","lastModifiedDate":"2024-03-08"},{"lineNumber":34,"author":{"gitId":"chiageng"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2024-03-08"},{"lineNumber":35,"author":{"gitId":"chiageng"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2024-03-08"},{"lineNumber":36,"author":{"gitId":"chiageng"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2024-03-08"},{"lineNumber":37,"author":{"gitId":"chiageng"},"content":" + PREFIX_SKILL + \"train dog \"","lastModifiedDate":"2024-03-08"},{"lineNumber":38,"author":{"gitId":"chiageng"},"content":" + PREFIX_COMMISSION + \"$50/hr\";","lastModifiedDate":"2024-03-08"},{"lineNumber":39,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":40,"author":{"gitId":"chiageng"},"content":" private final Maintainer toAdd;","lastModifiedDate":"2024-03-08"},{"lineNumber":41,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":42,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-08"},{"lineNumber":43,"author":{"gitId":"chiageng"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2024-03-08"},{"lineNumber":44,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":" public AddMaintainerCommand(Maintainer person) {","lastModifiedDate":"2024-03-08"},{"lineNumber":46,"author":{"gitId":"chiageng"},"content":" requireNonNull(person);","lastModifiedDate":"2024-03-08"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":" toAdd \u003d person;","lastModifiedDate":"2024-03-08"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-08"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-08"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-08"},{"lineNumber":53,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2024-03-08"},{"lineNumber":55,"author":{"gitId":"jamessinmaojun"},"content":" throw new CommandException(AddMessages.MESSAGE_ADD_DUPLICATE_PERSON);","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":57,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":58,"author":{"gitId":"chiageng"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2024-03-08"},{"lineNumber":59,"author":{"gitId":"jamessinmaojun"},"content":" return new CommandResult(String.format(AddMessages.MESSAGE_ADD_PERSON_SUCCESS, AddMessages.format(toAdd)));","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":61,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":62,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-08"},{"lineNumber":63,"author":{"gitId":"chiageng"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-08"},{"lineNumber":64,"author":{"gitId":"chiageng"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-08"},{"lineNumber":65,"author":{"gitId":"chiageng"},"content":" return true;","lastModifiedDate":"2024-03-08"},{"lineNumber":66,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":67,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":68,"author":{"gitId":"chiageng"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-08"},{"lineNumber":69,"author":{"gitId":"chiageng"},"content":" if (!(other instanceof AddMaintainerCommand)) {","lastModifiedDate":"2024-03-08"},{"lineNumber":70,"author":{"gitId":"chiageng"},"content":" return false;","lastModifiedDate":"2024-03-08"},{"lineNumber":71,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":72,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":73,"author":{"gitId":"chiageng"},"content":" AddMaintainerCommand otherAddCommand \u003d (AddMaintainerCommand) other;","lastModifiedDate":"2024-03-08"},{"lineNumber":74,"author":{"gitId":"chiageng"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2024-03-08"},{"lineNumber":75,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":76,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":77,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-08"},{"lineNumber":78,"author":{"gitId":"chiageng"},"content":" public String toString() {","lastModifiedDate":"2024-03-08"},{"lineNumber":79,"author":{"gitId":"chiageng"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-08"},{"lineNumber":80,"author":{"gitId":"chiageng"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2024-03-08"},{"lineNumber":81,"author":{"gitId":"chiageng"},"content":" .toString();","lastModifiedDate":"2024-03-08"},{"lineNumber":82,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":83,"author":{"gitId":"chiageng"},"content":"}","lastModifiedDate":"2024-03-08"}],"authorContributionMap":{"chiageng":80,"jamessinmaojun":3}},{"path":"src/main/java/seedu/address/logic/commands/AddStaffCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chiageng"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-08"},{"lineNumber":2,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":3,"author":{"gitId":"chiageng"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-09"},{"lineNumber":4,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-09"},{"lineNumber":5,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-09"},{"lineNumber":6,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMPLOYMENT;","lastModifiedDate":"2024-03-09"},{"lineNumber":7,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-09"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SALARY;","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-08"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-08"},{"lineNumber":13,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.AddMessages;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-08"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Staff;","lastModifiedDate":"2024-03-08"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":"/**","lastModifiedDate":"2024-03-08"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":" * Adds a person to the address book.","lastModifiedDate":"2024-03-08"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":20,"author":{"gitId":"chiageng"},"content":"public class AddStaffCommand extends Command {","lastModifiedDate":"2024-03-08"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":" public static final String COMMAND_WORD \u003d \"/pooch-staff\";","lastModifiedDate":"2024-03-08"},{"lineNumber":23,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a staff to the address book. \"","lastModifiedDate":"2024-03-08"},{"lineNumber":25,"author":{"gitId":"chiageng"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-03-08"},{"lineNumber":26,"author":{"gitId":"chiageng"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2024-03-08"},{"lineNumber":27,"author":{"gitId":"chiageng"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2024-03-08"},{"lineNumber":28,"author":{"gitId":"chiageng"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2024-03-08"},{"lineNumber":29,"author":{"gitId":"chiageng"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2024-03-08"},{"lineNumber":30,"author":{"gitId":"chiageng"},"content":" + PREFIX_SALARY + \"SALARY \"","lastModifiedDate":"2024-03-08"},{"lineNumber":31,"author":{"gitId":"chiageng"},"content":" + PREFIX_EMPLOYMENT + \"EMPLOYMENT \\n\"","lastModifiedDate":"2024-03-09"},{"lineNumber":32,"author":{"gitId":"chiageng"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2024-03-08"},{"lineNumber":33,"author":{"gitId":"chiageng"},"content":" + PREFIX_NAME + \"John Doe staff \"","lastModifiedDate":"2024-03-08"},{"lineNumber":34,"author":{"gitId":"chiageng"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2024-03-08"},{"lineNumber":35,"author":{"gitId":"chiageng"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2024-03-08"},{"lineNumber":36,"author":{"gitId":"chiageng"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2024-03-08"},{"lineNumber":37,"author":{"gitId":"chiageng"},"content":" + PREFIX_SALARY + \"$50/hr \"","lastModifiedDate":"2024-03-08"},{"lineNumber":38,"author":{"gitId":"chiageng"},"content":" + PREFIX_EMPLOYMENT + \"part-time\";","lastModifiedDate":"2024-03-08"},{"lineNumber":39,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":40,"author":{"gitId":"chiageng"},"content":" private final Staff toAdd;","lastModifiedDate":"2024-03-08"},{"lineNumber":41,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":42,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-08"},{"lineNumber":43,"author":{"gitId":"chiageng"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2024-03-08"},{"lineNumber":44,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":" public AddStaffCommand(Staff person) {","lastModifiedDate":"2024-03-08"},{"lineNumber":46,"author":{"gitId":"chiageng"},"content":" requireNonNull(person);","lastModifiedDate":"2024-03-08"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":" toAdd \u003d person;","lastModifiedDate":"2024-03-08"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-08"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-08"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-08"},{"lineNumber":53,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2024-03-08"},{"lineNumber":55,"author":{"gitId":"jamessinmaojun"},"content":" throw new CommandException(AddMessages.MESSAGE_ADD_DUPLICATE_PERSON);","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":57,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":58,"author":{"gitId":"chiageng"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2024-03-08"},{"lineNumber":59,"author":{"gitId":"jamessinmaojun"},"content":" return new CommandResult(String.format(AddMessages.MESSAGE_ADD_PERSON_SUCCESS, AddMessages.format(toAdd)));","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":61,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":62,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-08"},{"lineNumber":63,"author":{"gitId":"chiageng"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-08"},{"lineNumber":64,"author":{"gitId":"chiageng"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-08"},{"lineNumber":65,"author":{"gitId":"chiageng"},"content":" return true;","lastModifiedDate":"2024-03-08"},{"lineNumber":66,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":67,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":68,"author":{"gitId":"chiageng"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-08"},{"lineNumber":69,"author":{"gitId":"chiageng"},"content":" if (!(other instanceof AddStaffCommand)) {","lastModifiedDate":"2024-03-08"},{"lineNumber":70,"author":{"gitId":"chiageng"},"content":" return false;","lastModifiedDate":"2024-03-08"},{"lineNumber":71,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":72,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":73,"author":{"gitId":"chiageng"},"content":" AddStaffCommand otherAddCommand \u003d (AddStaffCommand) other;","lastModifiedDate":"2024-03-08"},{"lineNumber":74,"author":{"gitId":"chiageng"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2024-03-08"},{"lineNumber":75,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":76,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":77,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-08"},{"lineNumber":78,"author":{"gitId":"chiageng"},"content":" public String toString() {","lastModifiedDate":"2024-03-08"},{"lineNumber":79,"author":{"gitId":"chiageng"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-08"},{"lineNumber":80,"author":{"gitId":"chiageng"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2024-03-08"},{"lineNumber":81,"author":{"gitId":"chiageng"},"content":" .toString();","lastModifiedDate":"2024-03-08"},{"lineNumber":82,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":83,"author":{"gitId":"chiageng"},"content":"}","lastModifiedDate":"2024-03-08"}],"authorContributionMap":{"chiageng":80,"jamessinmaojun":3}},{"path":"src/main/java/seedu/address/logic/commands/AddSupplierCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chiageng"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-08"},{"lineNumber":2,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":3,"author":{"gitId":"chiageng"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-09"},{"lineNumber":4,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-09"},{"lineNumber":5,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-09"},{"lineNumber":6,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-09"},{"lineNumber":7,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-09"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PRICE;","lastModifiedDate":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PRODUCT;","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-08"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-08"},{"lineNumber":13,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.AddMessages;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-08"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Supplier;","lastModifiedDate":"2024-03-08"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":"/**","lastModifiedDate":"2024-03-08"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":" * Adds a person to the address book.","lastModifiedDate":"2024-03-08"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":20,"author":{"gitId":"chiageng"},"content":"public class AddSupplierCommand extends Command {","lastModifiedDate":"2024-03-08"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":" public static final String COMMAND_WORD \u003d \"/pooch-supplier\";","lastModifiedDate":"2024-03-08"},{"lineNumber":23,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a supplier to the address book. \"","lastModifiedDate":"2024-03-08"},{"lineNumber":25,"author":{"gitId":"chiageng"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-03-08"},{"lineNumber":26,"author":{"gitId":"chiageng"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2024-03-08"},{"lineNumber":27,"author":{"gitId":"chiageng"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2024-03-08"},{"lineNumber":28,"author":{"gitId":"chiageng"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2024-03-08"},{"lineNumber":29,"author":{"gitId":"chiageng"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2024-03-08"},{"lineNumber":30,"author":{"gitId":"chiageng"},"content":" + PREFIX_PRODUCT + \"PRODUCT \"","lastModifiedDate":"2024-03-08"},{"lineNumber":31,"author":{"gitId":"chiageng"},"content":" + PREFIX_PRICE + \"PRICE \\n\"","lastModifiedDate":"2024-03-08"},{"lineNumber":32,"author":{"gitId":"chiageng"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2024-03-08"},{"lineNumber":33,"author":{"gitId":"chiageng"},"content":" + PREFIX_NAME + \"John Doe supplier \"","lastModifiedDate":"2024-03-08"},{"lineNumber":34,"author":{"gitId":"chiageng"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2024-03-08"},{"lineNumber":35,"author":{"gitId":"chiageng"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2024-03-08"},{"lineNumber":36,"author":{"gitId":"chiageng"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2024-03-08"},{"lineNumber":37,"author":{"gitId":"chiageng"},"content":" + PREFIX_PRODUCT + \"poochie food \"","lastModifiedDate":"2024-03-08"},{"lineNumber":38,"author":{"gitId":"chiageng"},"content":" + PREFIX_PRICE + \"$50/bag\";","lastModifiedDate":"2024-03-08"},{"lineNumber":39,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":40,"author":{"gitId":"chiageng"},"content":" private final Supplier toAdd;","lastModifiedDate":"2024-03-08"},{"lineNumber":41,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":42,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-08"},{"lineNumber":43,"author":{"gitId":"chiageng"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2024-03-08"},{"lineNumber":44,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":" public AddSupplierCommand(Supplier person) {","lastModifiedDate":"2024-03-08"},{"lineNumber":46,"author":{"gitId":"chiageng"},"content":" requireNonNull(person);","lastModifiedDate":"2024-03-08"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":" toAdd \u003d person;","lastModifiedDate":"2024-03-08"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-08"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-08"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-08"},{"lineNumber":53,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2024-03-08"},{"lineNumber":55,"author":{"gitId":"jamessinmaojun"},"content":" throw new CommandException(AddMessages.MESSAGE_ADD_DUPLICATE_PERSON);","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":57,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":58,"author":{"gitId":"chiageng"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2024-03-08"},{"lineNumber":59,"author":{"gitId":"jamessinmaojun"},"content":" return new CommandResult(String.format(AddMessages.MESSAGE_ADD_PERSON_SUCCESS, AddMessages.format(toAdd)));","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":61,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":62,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-08"},{"lineNumber":63,"author":{"gitId":"chiageng"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-08"},{"lineNumber":64,"author":{"gitId":"chiageng"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-08"},{"lineNumber":65,"author":{"gitId":"chiageng"},"content":" return true;","lastModifiedDate":"2024-03-08"},{"lineNumber":66,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":67,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":68,"author":{"gitId":"chiageng"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-08"},{"lineNumber":69,"author":{"gitId":"chiageng"},"content":" if (!(other instanceof AddSupplierCommand)) {","lastModifiedDate":"2024-03-08"},{"lineNumber":70,"author":{"gitId":"chiageng"},"content":" return false;","lastModifiedDate":"2024-03-08"},{"lineNumber":71,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":72,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":73,"author":{"gitId":"chiageng"},"content":" AddSupplierCommand otherAddCommand \u003d (AddSupplierCommand) other;","lastModifiedDate":"2024-03-08"},{"lineNumber":74,"author":{"gitId":"chiageng"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2024-03-08"},{"lineNumber":75,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":76,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":77,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-08"},{"lineNumber":78,"author":{"gitId":"chiageng"},"content":" public String toString() {","lastModifiedDate":"2024-03-08"},{"lineNumber":79,"author":{"gitId":"chiageng"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-08"},{"lineNumber":80,"author":{"gitId":"chiageng"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2024-03-08"},{"lineNumber":81,"author":{"gitId":"chiageng"},"content":" .toString();","lastModifiedDate":"2024-03-08"},{"lineNumber":82,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":83,"author":{"gitId":"chiageng"},"content":"}","lastModifiedDate":"2024-03-08"}],"authorContributionMap":{"chiageng":80,"jamessinmaojun":3}},{"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":"jamessinmaojun"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-09-01"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":10,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.DeleteMessages;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":12,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"jamessinmaojun"},"content":" * Deletes a person identified using it\u0027s displayed name from the address book.","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":19,"author":{"gitId":"jamessinmaojun"},"content":" public static final String COMMAND_WORD \u003d \"/delete\";","lastModifiedDate":"2024-03-15"},{"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":"jamessinmaojun"},"content":" + \": Deletes the person identified by their name.\\n\"","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"jamessinmaojun"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"jamessinmaojun"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"jamessinmaojun"},"content":" + \"Example: \" + COMMAND_WORD + \" Moochie\";","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"jamessinmaojun"},"content":" private final Name targetName;","lastModifiedDate":"2024-03-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"jamessinmaojun"},"content":" public DeleteCommand(Name name) {","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"jamessinmaojun"},"content":" this.targetName \u003d name;","lastModifiedDate":"2024-03-15"},{"lineNumber":31,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"jamessinmaojun"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"jamessinmaojun"},"content":" * Finds a person from a List of persons identified by its name.","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"jamessinmaojun"},"content":" *","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"jamessinmaojun"},"content":" * @param personList The list of persons to search from.","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"jamessinmaojun"},"content":" * @param targetName The name of the person to return.","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"jamessinmaojun"},"content":" *","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"jamessinmaojun"},"content":" * @return The person object with name equals to {@code targetName}.","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"jamessinmaojun"},"content":" * */","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"jamessinmaojun"},"content":" public Person findByName(List\u003cPerson\u003e personList, Name targetName) {","lastModifiedDate":"2024-03-15"},{"lineNumber":42,"author":{"gitId":"jamessinmaojun"},"content":" for (Person person: personList) {","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"jamessinmaojun"},"content":" Name name \u003d person.getName();","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"jamessinmaojun"},"content":" if (name.equals(targetName)) {","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"jamessinmaojun"},"content":" return person;","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":47,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":48,"author":{"gitId":"jamessinmaojun"},"content":" return null;","lastModifiedDate":"2024-03-15"},{"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 CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":56,"author":{"gitId":"jamessinmaojun"},"content":" Person personToDelete;","lastModifiedDate":"2024-03-15"},{"lineNumber":57,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":58,"author":{"gitId":"jamessinmaojun"},"content":" personToDelete \u003d findByName(lastShownList, targetName);","lastModifiedDate":"2024-03-15"},{"lineNumber":59,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":60,"author":{"gitId":"jamessinmaojun"},"content":" if (personToDelete \u003d\u003d null) {","lastModifiedDate":"2024-03-15"},{"lineNumber":61,"author":{"gitId":"jamessinmaojun"},"content":" throw new CommandException(DeleteMessages.MESSAGE_DELETE_NAME_NOT_FOUND);","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" model.deletePerson(personToDelete);","lastModifiedDate":"2016-09-25"},{"lineNumber":65,"author":{"gitId":"jamessinmaojun"},"content":" return new CommandResult(String.format(DeleteMessages.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"jamessinmaojun"},"content":" DeleteMessages.format(personToDelete)));","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"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 DeleteCommand)) {","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":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":81,"author":{"gitId":"jamessinmaojun"},"content":" return targetName.equals(otherDeleteCommand.targetName);","lastModifiedDate":"2024-03-15"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-15"},{"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":"jamessinmaojun"},"content":" .add(\"targetName\", targetName)","lastModifiedDate":"2024-03-15"},{"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":{"jamessinmaojun":40,"-":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":"-"},"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":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FIELD;","lastModifiedDate":"2024-03-17"},{"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.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.Objects;","lastModifiedDate":"2023-07-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":20,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.EditMessages;","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-26"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":"import seedu.address.model.person.Note;","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":35,"author":{"gitId":"yleeyilin"},"content":" public static final String COMMAND_WORD \u003d \"/edit\";","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the person identified \"","lastModifiedDate":"2016-12-26"},{"lineNumber":38,"author":{"gitId":"yleeyilin"},"content":" + \"by the name used in the displayed person list.\\n\"","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"yleeyilin"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06"},{"lineNumber":41,"author":{"gitId":"yleeyilin"},"content":" + \"[\" + PREFIX_FIELD + \"FIELD] \"","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":44,"author":{"gitId":"yleeyilin"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"yleeyilin"},"content":" + \"Example: \" + COMMAND_WORD","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"yleeyilin"},"content":" + PREFIX_NAME + \"John Doe Others \"","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"yleeyilin"},"content":" + PREFIX_FIELD + \"{ \"","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"yleeyilin"},"content":" + \"phone : \" + \"99820550 \"","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"yleeyilin"},"content":" + PREFIX_ADDRESS + \"NUS College Avenue\"","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"yleeyilin"},"content":" + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":52,"author":{"gitId":"yleeyilin"},"content":" private final Name name;","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":56,"author":{"gitId":"yleeyilin"},"content":" * @param name of the person in the filtered person list to edit","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":59,"author":{"gitId":"yleeyilin"},"content":" public EditCommand(Name name, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"yleeyilin"},"content":" requireNonNull(name);","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":63,"author":{"gitId":"yleeyilin"},"content":" this.name \u003d name;","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":69,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":71,"author":{"gitId":"yleeyilin"},"content":" Person personToEdit \u003d model.findByName(name);","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":76,"author":{"gitId":"jamessinmaojun"},"content":" throw new CommandException(EditMessages.MESSAGE_EDIT_NO_DIFFERENCE);","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":79,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":80,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":81,"author":{"gitId":"jamessinmaojun"},"content":" return new CommandResult(String.format(EditMessages.MESSAGE_EDIT_PERSON_SUCCESS,","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"jamessinmaojun"},"content":" EditMessages.format(editedPerson)));","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":89,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":92,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":93,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21"},{"lineNumber":94,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":95,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2017-06-21"},{"lineNumber":96,"author":{"gitId":"jannaleong"},"content":" Note presentNote \u003d personToEdit.getNote(); //edit cannot change note","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2017-06-21"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":99,"author":{"gitId":"jannaleong"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress, presentNote, updatedTags);","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":113,"author":{"gitId":"yleeyilin"},"content":" return name.equals(otherEditCommand.name)","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":120,"author":{"gitId":"yleeyilin"},"content":" .add(\"name\", name)","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":126,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26"},{"lineNumber":127,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26"},{"lineNumber":128,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26"},{"lineNumber":130,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21"},{"lineNumber":131,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":132,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":133,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21"},{"lineNumber":134,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":136,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":138,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":139,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11"},{"lineNumber":140,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":141,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26"},{"lineNumber":143,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15"},{"lineNumber":144,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15"},{"lineNumber":145,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15"},{"lineNumber":146,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15"},{"lineNumber":147,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":150,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":151,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26"},{"lineNumber":152,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":153,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26"},{"lineNumber":154,"author":{"gitId":"-"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, tags);","lastModifiedDate":"2018-08-14"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21"},{"lineNumber":158,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":161,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":162,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":165,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21"},{"lineNumber":166,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":169,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26"},{"lineNumber":170,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":173,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21"},{"lineNumber":174,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21"},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":177,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":178,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21"},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":181,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21"},{"lineNumber":182,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21"},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":185,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26"},{"lineNumber":186,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":189,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":190,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11"},{"lineNumber":191,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":192,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":193,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21"},{"lineNumber":194,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":197,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":198,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11"},{"lineNumber":199,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11"},{"lineNumber":200,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11"},{"lineNumber":201,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":202,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":203,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11"},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":206,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":207,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":208,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":209,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":212,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05"},{"lineNumber":213,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":214,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":216,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":217,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":218,"author":{"gitId":"yleeyilin"},"content":" boolean phoneEquals \u003d Objects.equals(phone, otherEditPersonDescriptor.phone);","lastModifiedDate":"2024-03-17"},{"lineNumber":219,"author":{"gitId":"yleeyilin"},"content":" boolean emailEquals \u003d Objects.equals(email, otherEditPersonDescriptor.email);","lastModifiedDate":"2024-03-17"},{"lineNumber":220,"author":{"gitId":"yleeyilin"},"content":" boolean addressEquals \u003d Objects.equals(address, otherEditPersonDescriptor.address);","lastModifiedDate":"2024-03-17"},{"lineNumber":221,"author":{"gitId":"yleeyilin"},"content":" boolean tagsEquals \u003d Objects.equals(tags, otherEditPersonDescriptor.tags);","lastModifiedDate":"2024-03-17"},{"lineNumber":222,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":223,"author":{"gitId":"yleeyilin"},"content":" return phoneEquals \u0026\u0026 emailEquals \u0026\u0026 addressEquals \u0026\u0026 tagsEquals;","lastModifiedDate":"2024-03-17"},{"lineNumber":224,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":226,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":227,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":237,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"jamessinmaojun":4,"jannaleong":3,"-":202,"yleeyilin":28}},{"path":"src/main/java/seedu/address/logic/commands/EditMaintainerCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yleeyilin"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"yleeyilin"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COMMISSION;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FIELD;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SKILL;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"yleeyilin"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"yleeyilin"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"yleeyilin"},"content":"import java.util.Objects;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"yleeyilin"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"yleeyilin"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.EditMessages;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Commission;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Maintainer;","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Skill;","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"yleeyilin"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"yleeyilin"},"content":" * Edits the details of an existing maintainer in the address book.","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"yleeyilin"},"content":"public class EditMaintainerCommand extends Command {","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"yleeyilin"},"content":" public static final String COMMAND_WORD \u003d \"/edit-maintainer\";","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"yleeyilin"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the maintainer identified \"","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"yleeyilin"},"content":" + \"by the name used in the displayed person list.\\n\"","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"yleeyilin"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"yleeyilin"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"yleeyilin"},"content":" + \"[\" + PREFIX_FIELD + \"FIELD] \"","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"yleeyilin"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"yleeyilin"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"yleeyilin"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"yleeyilin"},"content":" + \"[\" + PREFIX_SKILL + \"SKILL] \"","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"yleeyilin"},"content":" + \"[\" + PREFIX_COMMISSION + \"COMMISSION] \\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"yleeyilin"},"content":" + \"Example: \" + COMMAND_WORD","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"yleeyilin"},"content":" + PREFIX_NAME + \"John Doe Maintainer \"","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"yleeyilin"},"content":" + PREFIX_FIELD + \"{ \"","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"yleeyilin"},"content":" + \"phone : \" + \"99820550 \"","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"yleeyilin"},"content":" + PREFIX_ADDRESS + \"NUS College Avenue\"","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"yleeyilin"},"content":" + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"yleeyilin"},"content":" private final Name name;","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"yleeyilin"},"content":" private final EditMaintainerDescriptor editMaintainerDescriptor;","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"yleeyilin"},"content":" * @param name of the maintainer in the filtered person list to edit","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"yleeyilin"},"content":" * @param editMaintainerDescriptor details to edit the maintainer with","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"yleeyilin"},"content":" public EditMaintainerCommand(Name name, EditMaintainerDescriptor editMaintainerDescriptor) {","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"yleeyilin"},"content":" requireNonNull(name);","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"yleeyilin"},"content":" requireNonNull(editMaintainerDescriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"yleeyilin"},"content":" this.name \u003d name;","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"yleeyilin"},"content":" this.editMaintainerDescriptor \u003d new EditMaintainerDescriptor(editMaintainerDescriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"yleeyilin"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"yleeyilin"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"yleeyilin"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"yleeyilin"},"content":" Maintainer maintainerToEdit \u003d model.findMaintainerByName(name);","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"jamessinmaojun"},"content":" Maintainer editedMaintainer \u003d createEditedMaintainer(maintainerToEdit, editMaintainerDescriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"jamessinmaojun"},"content":" if (!maintainerToEdit.isSamePerson(editedMaintainer) \u0026\u0026 model.hasPerson(editedMaintainer)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"jamessinmaojun"},"content":" throw new CommandException(EditMessages.MESSAGE_EDIT_NO_DIFFERENCE);","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"jamessinmaojun"},"content":" model.setPerson(maintainerToEdit, editedMaintainer);","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"yleeyilin"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"jamessinmaojun"},"content":" return new CommandResult(String.format(EditMessages.MESSAGE_EDIT_PERSON_SUCCESS,","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"jamessinmaojun"},"content":" EditMessages.format(editedMaintainer)));","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":90,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"yleeyilin"},"content":" * Creates and returns a {@code Maintainer} with the details of {@code maintainerToEdit}","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"yleeyilin"},"content":" * edited with {@code editMaintainerDescriptor}.","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"yleeyilin"},"content":" private static Maintainer createEditedMaintainer(Maintainer maintainerToEdit,","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"yleeyilin"},"content":" EditMaintainerDescriptor editMaintainerDescriptor) {","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"yleeyilin"},"content":" assert maintainerToEdit !\u003d null;","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"yleeyilin"},"content":" Name updatedName \u003d editMaintainerDescriptor.getName().orElse(maintainerToEdit.getName());","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"yleeyilin"},"content":" Phone updatedPhone \u003d editMaintainerDescriptor.getPhone().orElse(maintainerToEdit.getPhone());","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"yleeyilin"},"content":" Email updatedEmail \u003d editMaintainerDescriptor.getEmail().orElse(maintainerToEdit.getEmail());","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"yleeyilin"},"content":" Address updatedAddress \u003d editMaintainerDescriptor.getAddress().orElse(maintainerToEdit.getAddress());","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"yleeyilin"},"content":" Set\u003cTag\u003e updatedTags \u003d editMaintainerDescriptor.getTags().orElse(maintainerToEdit.getTags());","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"yleeyilin"},"content":" Skill updatedSkill \u003d editMaintainerDescriptor.getSkill().orElse(maintainerToEdit.getSkill());","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"yleeyilin"},"content":" Commission updatedCommission \u003d editMaintainerDescriptor.getCommission()","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"yleeyilin"},"content":" .orElse(maintainerToEdit.getCommission());","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"yleeyilin"},"content":" return new Maintainer(updatedName, updatedPhone, updatedEmail, updatedAddress,","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"yleeyilin"},"content":" updatedTags, updatedSkill, updatedCommission);","lastModifiedDate":"2024-03-17"},{"lineNumber":109,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"yleeyilin"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"yleeyilin"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"yleeyilin"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"yleeyilin"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"yleeyilin"},"content":" if (!(other instanceof EditMaintainerCommand)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"yleeyilin"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"yleeyilin"},"content":" EditMaintainerCommand otherEditMaintainerCommand \u003d (EditMaintainerCommand) other;","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"yleeyilin"},"content":" return name.equals(otherEditMaintainerCommand.name)","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"yleeyilin"},"content":" \u0026\u0026 editMaintainerDescriptor.equals(otherEditMaintainerCommand.editMaintainerDescriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"yleeyilin"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"yleeyilin"},"content":" public String toString() {","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"yleeyilin"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-17"},{"lineNumber":129,"author":{"gitId":"yleeyilin"},"content":" .add(\"name\", name)","lastModifiedDate":"2024-03-17"},{"lineNumber":130,"author":{"gitId":"yleeyilin"},"content":" .add(\"editMaintainerDescriptor\", editMaintainerDescriptor)","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"yleeyilin"},"content":" .toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":135,"author":{"gitId":"yleeyilin"},"content":" * Stores the details to edit the maintainer with. Each non-empty field value will replace the","lastModifiedDate":"2024-03-17"},{"lineNumber":136,"author":{"gitId":"yleeyilin"},"content":" * corresponding field value of the maintainer.","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":138,"author":{"gitId":"yleeyilin"},"content":" public static class EditMaintainerDescriptor {","lastModifiedDate":"2024-03-17"},{"lineNumber":139,"author":{"gitId":"yleeyilin"},"content":" private Name name;","lastModifiedDate":"2024-03-17"},{"lineNumber":140,"author":{"gitId":"yleeyilin"},"content":" private Phone phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":141,"author":{"gitId":"yleeyilin"},"content":" private Email email;","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"yleeyilin"},"content":" private Address address;","lastModifiedDate":"2024-03-17"},{"lineNumber":143,"author":{"gitId":"yleeyilin"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2024-03-17"},{"lineNumber":144,"author":{"gitId":"yleeyilin"},"content":" private Skill skill;","lastModifiedDate":"2024-03-17"},{"lineNumber":145,"author":{"gitId":"yleeyilin"},"content":" private Commission commission;","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":147,"author":{"gitId":"yleeyilin"},"content":" public EditMaintainerDescriptor() {}","lastModifiedDate":"2024-03-17"},{"lineNumber":148,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":149,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":150,"author":{"gitId":"yleeyilin"},"content":" * Copy constructor.","lastModifiedDate":"2024-03-17"},{"lineNumber":151,"author":{"gitId":"yleeyilin"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2024-03-17"},{"lineNumber":152,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":153,"author":{"gitId":"yleeyilin"},"content":" public EditMaintainerDescriptor(EditMaintainerDescriptor toCopy) {","lastModifiedDate":"2024-03-17"},{"lineNumber":154,"author":{"gitId":"yleeyilin"},"content":" setName(toCopy.name);","lastModifiedDate":"2024-03-17"},{"lineNumber":155,"author":{"gitId":"yleeyilin"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2024-03-17"},{"lineNumber":156,"author":{"gitId":"yleeyilin"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2024-03-17"},{"lineNumber":157,"author":{"gitId":"yleeyilin"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2024-03-17"},{"lineNumber":158,"author":{"gitId":"yleeyilin"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2024-03-17"},{"lineNumber":159,"author":{"gitId":"yleeyilin"},"content":" setSkill(toCopy.skill);","lastModifiedDate":"2024-03-17"},{"lineNumber":160,"author":{"gitId":"yleeyilin"},"content":" setCommission(toCopy.commission);","lastModifiedDate":"2024-03-17"},{"lineNumber":161,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":162,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":163,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":164,"author":{"gitId":"yleeyilin"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2024-03-17"},{"lineNumber":165,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":166,"author":{"gitId":"yleeyilin"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2024-03-17"},{"lineNumber":167,"author":{"gitId":"yleeyilin"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, tags, skill, commission);","lastModifiedDate":"2024-03-17"},{"lineNumber":168,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":169,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":170,"author":{"gitId":"yleeyilin"},"content":" public void setName(Name name) {","lastModifiedDate":"2024-03-17"},{"lineNumber":171,"author":{"gitId":"yleeyilin"},"content":" this.name \u003d name;","lastModifiedDate":"2024-03-17"},{"lineNumber":172,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":173,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":174,"author":{"gitId":"yleeyilin"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2024-03-17"},{"lineNumber":175,"author":{"gitId":"yleeyilin"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2024-03-17"},{"lineNumber":176,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":177,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":178,"author":{"gitId":"yleeyilin"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2024-03-17"},{"lineNumber":179,"author":{"gitId":"yleeyilin"},"content":" this.phone \u003d phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":180,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":181,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":182,"author":{"gitId":"yleeyilin"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2024-03-17"},{"lineNumber":183,"author":{"gitId":"yleeyilin"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2024-03-17"},{"lineNumber":184,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":185,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":186,"author":{"gitId":"yleeyilin"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2024-03-17"},{"lineNumber":187,"author":{"gitId":"yleeyilin"},"content":" this.email \u003d email;","lastModifiedDate":"2024-03-17"},{"lineNumber":188,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":189,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":190,"author":{"gitId":"yleeyilin"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2024-03-17"},{"lineNumber":191,"author":{"gitId":"yleeyilin"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2024-03-17"},{"lineNumber":192,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":193,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":194,"author":{"gitId":"yleeyilin"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2024-03-17"},{"lineNumber":195,"author":{"gitId":"yleeyilin"},"content":" this.address \u003d address;","lastModifiedDate":"2024-03-17"},{"lineNumber":196,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":197,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":198,"author":{"gitId":"yleeyilin"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2024-03-17"},{"lineNumber":199,"author":{"gitId":"yleeyilin"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2024-03-17"},{"lineNumber":200,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":201,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":202,"author":{"gitId":"yleeyilin"},"content":" public void setSkill(Skill skill) {","lastModifiedDate":"2024-03-17"},{"lineNumber":203,"author":{"gitId":"yleeyilin"},"content":" this.skill \u003d skill;","lastModifiedDate":"2024-03-17"},{"lineNumber":204,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":205,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":206,"author":{"gitId":"yleeyilin"},"content":" public Optional\u003cSkill\u003e getSkill() {","lastModifiedDate":"2024-03-17"},{"lineNumber":207,"author":{"gitId":"yleeyilin"},"content":" return Optional.ofNullable(skill);","lastModifiedDate":"2024-03-17"},{"lineNumber":208,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":209,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":210,"author":{"gitId":"yleeyilin"},"content":" public void setCommission(Commission commission) {","lastModifiedDate":"2024-03-17"},{"lineNumber":211,"author":{"gitId":"yleeyilin"},"content":" this.commission \u003d commission;","lastModifiedDate":"2024-03-17"},{"lineNumber":212,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":213,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":214,"author":{"gitId":"yleeyilin"},"content":" public Optional\u003cCommission\u003e getCommission() {","lastModifiedDate":"2024-03-17"},{"lineNumber":215,"author":{"gitId":"yleeyilin"},"content":" return Optional.ofNullable(commission);","lastModifiedDate":"2024-03-17"},{"lineNumber":216,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":217,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":218,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":219,"author":{"gitId":"yleeyilin"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2024-03-17"},{"lineNumber":220,"author":{"gitId":"yleeyilin"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2024-03-17"},{"lineNumber":221,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":222,"author":{"gitId":"yleeyilin"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-03-17"},{"lineNumber":223,"author":{"gitId":"yleeyilin"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2024-03-17"},{"lineNumber":224,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":225,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":226,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":227,"author":{"gitId":"yleeyilin"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2024-03-17"},{"lineNumber":228,"author":{"gitId":"yleeyilin"},"content":" * if modification is attempted.","lastModifiedDate":"2024-03-17"},{"lineNumber":229,"author":{"gitId":"yleeyilin"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2024-03-17"},{"lineNumber":230,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":231,"author":{"gitId":"yleeyilin"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2024-03-17"},{"lineNumber":232,"author":{"gitId":"yleeyilin"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2024-03-17"},{"lineNumber":233,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":234,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":235,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":236,"author":{"gitId":"yleeyilin"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":237,"author":{"gitId":"yleeyilin"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-17"},{"lineNumber":238,"author":{"gitId":"yleeyilin"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-17"},{"lineNumber":239,"author":{"gitId":"yleeyilin"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":240,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":241,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":242,"author":{"gitId":"yleeyilin"},"content":" if (!(other instanceof EditMaintainerDescriptor)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":243,"author":{"gitId":"yleeyilin"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":244,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":245,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":246,"author":{"gitId":"yleeyilin"},"content":" EditMaintainerDescriptor otherEditMaintainerDescriptor \u003d (EditMaintainerDescriptor) other;","lastModifiedDate":"2024-03-17"},{"lineNumber":247,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":248,"author":{"gitId":"yleeyilin"},"content":" boolean arePhoneEqual \u003d Objects.equals(phone, otherEditMaintainerDescriptor.phone);","lastModifiedDate":"2024-03-17"},{"lineNumber":249,"author":{"gitId":"yleeyilin"},"content":" boolean areEmailEqual \u003d Objects.equals(email, otherEditMaintainerDescriptor.email);","lastModifiedDate":"2024-03-17"},{"lineNumber":250,"author":{"gitId":"yleeyilin"},"content":" boolean areAddressEqual \u003d Objects.equals(address, otherEditMaintainerDescriptor.address);","lastModifiedDate":"2024-03-17"},{"lineNumber":251,"author":{"gitId":"yleeyilin"},"content":" boolean areTagsEqual \u003d Objects.equals(tags, otherEditMaintainerDescriptor.tags);","lastModifiedDate":"2024-03-17"},{"lineNumber":252,"author":{"gitId":"yleeyilin"},"content":" boolean areSkillEqual \u003d Objects.equals(skill, otherEditMaintainerDescriptor.skill);","lastModifiedDate":"2024-03-17"},{"lineNumber":253,"author":{"gitId":"yleeyilin"},"content":" boolean areCommissionEqual \u003d Objects.equals(commission,","lastModifiedDate":"2024-03-17"},{"lineNumber":254,"author":{"gitId":"yleeyilin"},"content":" otherEditMaintainerDescriptor.commission);","lastModifiedDate":"2024-03-17"},{"lineNumber":255,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":256,"author":{"gitId":"yleeyilin"},"content":" return arePhoneEqual \u0026\u0026 areEmailEqual \u0026\u0026 areAddressEqual","lastModifiedDate":"2024-03-17"},{"lineNumber":257,"author":{"gitId":"yleeyilin"},"content":" \u0026\u0026 areTagsEqual \u0026\u0026 areSkillEqual \u0026\u0026 areCommissionEqual;","lastModifiedDate":"2024-03-17"},{"lineNumber":258,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":259,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":260,"author":{"gitId":"yleeyilin"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":261,"author":{"gitId":"yleeyilin"},"content":" public String toString() {","lastModifiedDate":"2024-03-17"},{"lineNumber":262,"author":{"gitId":"yleeyilin"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-17"},{"lineNumber":263,"author":{"gitId":"yleeyilin"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2024-03-17"},{"lineNumber":264,"author":{"gitId":"yleeyilin"},"content":" .add(\"email\", email)","lastModifiedDate":"2024-03-17"},{"lineNumber":265,"author":{"gitId":"yleeyilin"},"content":" .add(\"address\", address)","lastModifiedDate":"2024-03-17"},{"lineNumber":266,"author":{"gitId":"yleeyilin"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2024-03-17"},{"lineNumber":267,"author":{"gitId":"yleeyilin"},"content":" .add(\"skill\", skill)","lastModifiedDate":"2024-03-17"},{"lineNumber":268,"author":{"gitId":"yleeyilin"},"content":" .add(\"commission\", commission)","lastModifiedDate":"2024-03-17"},{"lineNumber":269,"author":{"gitId":"yleeyilin"},"content":" .toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":270,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":271,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":272,"author":{"gitId":"yleeyilin"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"jamessinmaojun":7,"yleeyilin":265}},{"path":"src/main/java/seedu/address/logic/commands/EditStaffCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yleeyilin"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"yleeyilin"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMPLOYMENT;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FIELD;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SALARY;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"yleeyilin"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"yleeyilin"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"yleeyilin"},"content":"import java.util.Objects;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"yleeyilin"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"yleeyilin"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.EditMessages;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Employment;","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Salary;","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Staff;","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"yleeyilin"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"yleeyilin"},"content":" * Edits the details of an existing staff in the address book.","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"yleeyilin"},"content":"public class EditStaffCommand extends Command {","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"yleeyilin"},"content":" public static final String COMMAND_WORD \u003d \"/edit-staff\";","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"yleeyilin"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the staff identified \"","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"yleeyilin"},"content":" + \"by the name used in the displayed person list.\\n\"","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"yleeyilin"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"yleeyilin"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"yleeyilin"},"content":" + \"[\" + PREFIX_FIELD + \"FIELD] \"","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"yleeyilin"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"yleeyilin"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"yleeyilin"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"yleeyilin"},"content":" + \"[\" + PREFIX_SALARY + \"SALARY] \"","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"yleeyilin"},"content":" + \"[\" + PREFIX_EMPLOYMENT + \"EMPLOYMENT] \\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"yleeyilin"},"content":" + \"Example: \" + COMMAND_WORD","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"yleeyilin"},"content":" + PREFIX_NAME + \"John Doe Staff \"","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"yleeyilin"},"content":" + PREFIX_FIELD + \"{ \"","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"yleeyilin"},"content":" + \"phone : \" + \"99820550 \"","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"yleeyilin"},"content":" + PREFIX_ADDRESS + \"NUS College Avenue\"","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"yleeyilin"},"content":" + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"yleeyilin"},"content":" private final Name name;","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"yleeyilin"},"content":" private final EditStaffDescriptor editStaffDescriptor;","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"yleeyilin"},"content":" * @param name of the staff in the filtered person list to edit","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"yleeyilin"},"content":" * @param editStaffDescriptor details to edit the staff with","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"yleeyilin"},"content":" public EditStaffCommand(Name name, EditStaffDescriptor editStaffDescriptor) {","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"yleeyilin"},"content":" requireNonNull(name);","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"yleeyilin"},"content":" requireNonNull(editStaffDescriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"yleeyilin"},"content":" this.name \u003d name;","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"yleeyilin"},"content":" this.editStaffDescriptor \u003d new EditStaffDescriptor(editStaffDescriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"yleeyilin"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"yleeyilin"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"yleeyilin"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"yleeyilin"},"content":" Staff staffToEdit \u003d model.findStaffByName(name);","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"yleeyilin"},"content":" Staff editedStaff \u003d createEditedStaff(staffToEdit, editStaffDescriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"yleeyilin"},"content":" if (!staffToEdit.isSamePerson(editedStaff) \u0026\u0026 model.hasPerson(editedStaff)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"jamessinmaojun"},"content":" throw new CommandException(EditMessages.MESSAGE_EDIT_NO_DIFFERENCE);","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"yleeyilin"},"content":" model.setPerson(staffToEdit, editedStaff);","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"yleeyilin"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"jamessinmaojun"},"content":" return new CommandResult(String.format(EditMessages.MESSAGE_EDIT_PERSON_SUCCESS,","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"jamessinmaojun"},"content":" EditMessages.format(editedStaff)));","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":90,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"yleeyilin"},"content":" * Creates and returns a {@code Staff} with the details of {@code staffToEdit}","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"yleeyilin"},"content":" * edited with {@code editStaffDescriptor}.","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"yleeyilin"},"content":" private static Staff createEditedStaff(Staff staffToEdit, EditStaffDescriptor editStaffDescriptor) {","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"yleeyilin"},"content":" assert staffToEdit !\u003d null;","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"yleeyilin"},"content":" Name updatedName \u003d editStaffDescriptor.getName().orElse(staffToEdit.getName());","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"yleeyilin"},"content":" Phone updatedPhone \u003d editStaffDescriptor.getPhone().orElse(staffToEdit.getPhone());","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"yleeyilin"},"content":" Email updatedEmail \u003d editStaffDescriptor.getEmail().orElse(staffToEdit.getEmail());","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"yleeyilin"},"content":" Address updatedAddress \u003d editStaffDescriptor.getAddress().orElse(staffToEdit.getAddress());","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"yleeyilin"},"content":" Set\u003cTag\u003e updatedTags \u003d editStaffDescriptor.getTags().orElse(staffToEdit.getTags());","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"yleeyilin"},"content":" Salary updatedSalary \u003d editStaffDescriptor.getSalary().orElse(staffToEdit.getSalary());","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"yleeyilin"},"content":" Employment updatedEmployment \u003d editStaffDescriptor.getEmployment().orElse(staffToEdit.getEmployment());","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"yleeyilin"},"content":" return new Staff(updatedName, updatedPhone, updatedEmail, updatedAddress,","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"yleeyilin"},"content":" updatedTags, updatedSalary, updatedEmployment);","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":109,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"yleeyilin"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"yleeyilin"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"yleeyilin"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"yleeyilin"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"yleeyilin"},"content":" if (!(other instanceof EditStaffCommand)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"yleeyilin"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"yleeyilin"},"content":" EditStaffCommand otherEditCommand \u003d (EditStaffCommand) other;","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"yleeyilin"},"content":" return name.equals(otherEditCommand.name)","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"yleeyilin"},"content":" \u0026\u0026 editStaffDescriptor.equals(otherEditCommand.editStaffDescriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"yleeyilin"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"yleeyilin"},"content":" public String toString() {","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"yleeyilin"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"yleeyilin"},"content":" .add(\"name\", name)","lastModifiedDate":"2024-03-17"},{"lineNumber":129,"author":{"gitId":"yleeyilin"},"content":" .add(\"editStaffDescriptor\", editStaffDescriptor)","lastModifiedDate":"2024-03-17"},{"lineNumber":130,"author":{"gitId":"yleeyilin"},"content":" .toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":135,"author":{"gitId":"yleeyilin"},"content":" * Stores the details to edit the staff with. Each non-empty field value will replace the","lastModifiedDate":"2024-03-17"},{"lineNumber":136,"author":{"gitId":"yleeyilin"},"content":" * corresponding field value of the staff.","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":138,"author":{"gitId":"yleeyilin"},"content":" public static class EditStaffDescriptor {","lastModifiedDate":"2024-03-17"},{"lineNumber":139,"author":{"gitId":"yleeyilin"},"content":" private Name name;","lastModifiedDate":"2024-03-17"},{"lineNumber":140,"author":{"gitId":"yleeyilin"},"content":" private Phone phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":141,"author":{"gitId":"yleeyilin"},"content":" private Email email;","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"yleeyilin"},"content":" private Address address;","lastModifiedDate":"2024-03-17"},{"lineNumber":143,"author":{"gitId":"yleeyilin"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2024-03-17"},{"lineNumber":144,"author":{"gitId":"yleeyilin"},"content":" private Salary salary;","lastModifiedDate":"2024-03-17"},{"lineNumber":145,"author":{"gitId":"yleeyilin"},"content":" private Employment employment;","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":147,"author":{"gitId":"yleeyilin"},"content":" public EditStaffDescriptor() {}","lastModifiedDate":"2024-03-17"},{"lineNumber":148,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":149,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":150,"author":{"gitId":"yleeyilin"},"content":" * Copy constructor.","lastModifiedDate":"2024-03-17"},{"lineNumber":151,"author":{"gitId":"yleeyilin"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2024-03-17"},{"lineNumber":152,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":153,"author":{"gitId":"yleeyilin"},"content":" public EditStaffDescriptor(EditStaffDescriptor toCopy) {","lastModifiedDate":"2024-03-17"},{"lineNumber":154,"author":{"gitId":"yleeyilin"},"content":" setName(toCopy.name);","lastModifiedDate":"2024-03-17"},{"lineNumber":155,"author":{"gitId":"yleeyilin"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2024-03-17"},{"lineNumber":156,"author":{"gitId":"yleeyilin"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2024-03-17"},{"lineNumber":157,"author":{"gitId":"yleeyilin"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2024-03-17"},{"lineNumber":158,"author":{"gitId":"yleeyilin"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2024-03-17"},{"lineNumber":159,"author":{"gitId":"yleeyilin"},"content":" setSalary(toCopy.salary);","lastModifiedDate":"2024-03-17"},{"lineNumber":160,"author":{"gitId":"yleeyilin"},"content":" setEmployment(toCopy.employment);","lastModifiedDate":"2024-03-17"},{"lineNumber":161,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":162,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":163,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":164,"author":{"gitId":"yleeyilin"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2024-03-17"},{"lineNumber":165,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":166,"author":{"gitId":"yleeyilin"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2024-03-17"},{"lineNumber":167,"author":{"gitId":"yleeyilin"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, tags, salary, employment);","lastModifiedDate":"2024-03-17"},{"lineNumber":168,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":169,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":170,"author":{"gitId":"yleeyilin"},"content":" public void setName(Name name) {","lastModifiedDate":"2024-03-17"},{"lineNumber":171,"author":{"gitId":"yleeyilin"},"content":" this.name \u003d name;","lastModifiedDate":"2024-03-17"},{"lineNumber":172,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":173,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":174,"author":{"gitId":"yleeyilin"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2024-03-17"},{"lineNumber":175,"author":{"gitId":"yleeyilin"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2024-03-17"},{"lineNumber":176,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":177,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":178,"author":{"gitId":"yleeyilin"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2024-03-17"},{"lineNumber":179,"author":{"gitId":"yleeyilin"},"content":" this.phone \u003d phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":180,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":181,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":182,"author":{"gitId":"yleeyilin"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2024-03-17"},{"lineNumber":183,"author":{"gitId":"yleeyilin"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2024-03-17"},{"lineNumber":184,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":185,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":186,"author":{"gitId":"yleeyilin"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2024-03-17"},{"lineNumber":187,"author":{"gitId":"yleeyilin"},"content":" this.email \u003d email;","lastModifiedDate":"2024-03-17"},{"lineNumber":188,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":189,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":190,"author":{"gitId":"yleeyilin"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2024-03-17"},{"lineNumber":191,"author":{"gitId":"yleeyilin"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2024-03-17"},{"lineNumber":192,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":193,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":194,"author":{"gitId":"yleeyilin"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2024-03-17"},{"lineNumber":195,"author":{"gitId":"yleeyilin"},"content":" this.address \u003d address;","lastModifiedDate":"2024-03-17"},{"lineNumber":196,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":197,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":198,"author":{"gitId":"yleeyilin"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2024-03-17"},{"lineNumber":199,"author":{"gitId":"yleeyilin"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2024-03-17"},{"lineNumber":200,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":201,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":202,"author":{"gitId":"yleeyilin"},"content":" public void setSalary(Salary salary) {","lastModifiedDate":"2024-03-17"},{"lineNumber":203,"author":{"gitId":"yleeyilin"},"content":" this.salary \u003d salary;","lastModifiedDate":"2024-03-17"},{"lineNumber":204,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":205,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":206,"author":{"gitId":"yleeyilin"},"content":" public Optional\u003cSalary\u003e getSalary() {","lastModifiedDate":"2024-03-17"},{"lineNumber":207,"author":{"gitId":"yleeyilin"},"content":" return Optional.ofNullable(salary);","lastModifiedDate":"2024-03-17"},{"lineNumber":208,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":209,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":210,"author":{"gitId":"yleeyilin"},"content":" public void setEmployment(Employment employment) {","lastModifiedDate":"2024-03-17"},{"lineNumber":211,"author":{"gitId":"yleeyilin"},"content":" this.employment \u003d employment;","lastModifiedDate":"2024-03-17"},{"lineNumber":212,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":213,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":214,"author":{"gitId":"yleeyilin"},"content":" public Optional\u003cEmployment\u003e getEmployment() {","lastModifiedDate":"2024-03-17"},{"lineNumber":215,"author":{"gitId":"yleeyilin"},"content":" return Optional.ofNullable(employment);","lastModifiedDate":"2024-03-17"},{"lineNumber":216,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":217,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":218,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":219,"author":{"gitId":"yleeyilin"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2024-03-17"},{"lineNumber":220,"author":{"gitId":"yleeyilin"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2024-03-17"},{"lineNumber":221,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":222,"author":{"gitId":"yleeyilin"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-03-17"},{"lineNumber":223,"author":{"gitId":"yleeyilin"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2024-03-17"},{"lineNumber":224,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":225,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":226,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":227,"author":{"gitId":"yleeyilin"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2024-03-17"},{"lineNumber":228,"author":{"gitId":"yleeyilin"},"content":" * if modification is attempted.","lastModifiedDate":"2024-03-17"},{"lineNumber":229,"author":{"gitId":"yleeyilin"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2024-03-17"},{"lineNumber":230,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":231,"author":{"gitId":"yleeyilin"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2024-03-17"},{"lineNumber":232,"author":{"gitId":"yleeyilin"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2024-03-17"},{"lineNumber":233,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":234,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":235,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":236,"author":{"gitId":"yleeyilin"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":237,"author":{"gitId":"yleeyilin"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-17"},{"lineNumber":238,"author":{"gitId":"yleeyilin"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-17"},{"lineNumber":239,"author":{"gitId":"yleeyilin"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":240,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":241,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":242,"author":{"gitId":"yleeyilin"},"content":" if (!(other instanceof EditStaffDescriptor)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":243,"author":{"gitId":"yleeyilin"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":244,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":245,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":246,"author":{"gitId":"yleeyilin"},"content":" EditStaffDescriptor otherEditStaffDescriptor \u003d (EditStaffDescriptor) other;","lastModifiedDate":"2024-03-17"},{"lineNumber":247,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":248,"author":{"gitId":"yleeyilin"},"content":" boolean arePhoneEqual \u003d Objects.equals(phone, otherEditStaffDescriptor.phone);","lastModifiedDate":"2024-03-19"},{"lineNumber":249,"author":{"gitId":"yleeyilin"},"content":" boolean areEmailEqual \u003d Objects.equals(email, otherEditStaffDescriptor.email);","lastModifiedDate":"2024-03-19"},{"lineNumber":250,"author":{"gitId":"yleeyilin"},"content":" boolean areAddressEqual \u003d Objects.equals(address, otherEditStaffDescriptor.address);","lastModifiedDate":"2024-03-19"},{"lineNumber":251,"author":{"gitId":"yleeyilin"},"content":" boolean areTagsEqual \u003d Objects.equals(tags, otherEditStaffDescriptor.tags);","lastModifiedDate":"2024-03-19"},{"lineNumber":252,"author":{"gitId":"yleeyilin"},"content":" boolean areSalaryEqual \u003d Objects.equals(salary, otherEditStaffDescriptor.salary);","lastModifiedDate":"2024-03-19"},{"lineNumber":253,"author":{"gitId":"yleeyilin"},"content":" boolean areEmploymentEqual \u003d Objects.equals(employment, otherEditStaffDescriptor.employment);","lastModifiedDate":"2024-03-19"},{"lineNumber":254,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":255,"author":{"gitId":"yleeyilin"},"content":" return arePhoneEqual \u0026\u0026 areEmailEqual \u0026\u0026 areAddressEqual","lastModifiedDate":"2024-03-19"},{"lineNumber":256,"author":{"gitId":"yleeyilin"},"content":" \u0026\u0026 areTagsEqual \u0026\u0026 areSalaryEqual \u0026\u0026 areEmploymentEqual;","lastModifiedDate":"2024-03-19"},{"lineNumber":257,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":258,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":259,"author":{"gitId":"yleeyilin"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":260,"author":{"gitId":"yleeyilin"},"content":" public String toString() {","lastModifiedDate":"2024-03-17"},{"lineNumber":261,"author":{"gitId":"yleeyilin"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-17"},{"lineNumber":262,"author":{"gitId":"yleeyilin"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2024-03-17"},{"lineNumber":263,"author":{"gitId":"yleeyilin"},"content":" .add(\"email\", email)","lastModifiedDate":"2024-03-17"},{"lineNumber":264,"author":{"gitId":"yleeyilin"},"content":" .add(\"address\", address)","lastModifiedDate":"2024-03-17"},{"lineNumber":265,"author":{"gitId":"yleeyilin"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2024-03-17"},{"lineNumber":266,"author":{"gitId":"yleeyilin"},"content":" .add(\"salary\", salary)","lastModifiedDate":"2024-03-17"},{"lineNumber":267,"author":{"gitId":"yleeyilin"},"content":" .add(\"employment\", employment)","lastModifiedDate":"2024-03-17"},{"lineNumber":268,"author":{"gitId":"yleeyilin"},"content":" .toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":269,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":270,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":271,"author":{"gitId":"yleeyilin"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"jamessinmaojun":4,"yleeyilin":267}},{"path":"src/main/java/seedu/address/logic/commands/EditSupplierCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yleeyilin"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"yleeyilin"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FIELD;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PRICE;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PRODUCT;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"yleeyilin"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"yleeyilin"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"yleeyilin"},"content":"import java.util.Objects;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"yleeyilin"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"yleeyilin"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.EditMessages;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Price;","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Product;","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Supplier;","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"yleeyilin"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"yleeyilin"},"content":" * Edits the details of an existing supplier in the address book.","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"yleeyilin"},"content":"public class EditSupplierCommand extends Command {","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"yleeyilin"},"content":" public static final String COMMAND_WORD \u003d \"/edit-supplier\";","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"yleeyilin"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the supplier identified \"","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"yleeyilin"},"content":" + \"by the name used in the displayed person list.\\n\"","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"yleeyilin"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"yleeyilin"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"yleeyilin"},"content":" + \"[\" + PREFIX_FIELD + \"FIELD] \"","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"yleeyilin"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"yleeyilin"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"yleeyilin"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"yleeyilin"},"content":" + \"[\" + PREFIX_PRODUCT + \"PRODUCT] \"","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"yleeyilin"},"content":" + \"[\" + PREFIX_PRICE + \"PRICE] \\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"yleeyilin"},"content":" + \"Example: \" + COMMAND_WORD","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"yleeyilin"},"content":" + PREFIX_NAME + \"John Doe Supplier \"","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"yleeyilin"},"content":" + PREFIX_FIELD + \"{ \"","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"yleeyilin"},"content":" + \"phone : \" + \"99820550 \"","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"yleeyilin"},"content":" + PREFIX_ADDRESS + \"NUS College Avenue\"","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"yleeyilin"},"content":" + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"yleeyilin"},"content":" private final Name name;","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"yleeyilin"},"content":" private final EditSupplierDescriptor editSupplierDescriptor;","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"yleeyilin"},"content":" * @param name of the supplier in the filtered person list to edit","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"yleeyilin"},"content":" * @param editSupplierDescriptor details to edit the supplier with","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"yleeyilin"},"content":" public EditSupplierCommand(Name name, EditSupplierDescriptor editSupplierDescriptor) {","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"yleeyilin"},"content":" requireNonNull(name);","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"yleeyilin"},"content":" requireNonNull(editSupplierDescriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"yleeyilin"},"content":" this.name \u003d name;","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"yleeyilin"},"content":" this.editSupplierDescriptor \u003d new EditSupplierDescriptor(editSupplierDescriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"yleeyilin"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"yleeyilin"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"yleeyilin"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"yleeyilin"},"content":" Supplier supplierToEdit \u003d model.findSupplierByName(name);","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"yleeyilin"},"content":" Supplier editedSupplier \u003d createEditedSupplier(supplierToEdit, editSupplierDescriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"yleeyilin"},"content":" if (!supplierToEdit.isSamePerson(editedSupplier) \u0026\u0026 model.hasPerson(editedSupplier)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"jamessinmaojun"},"content":" throw new CommandException(EditMessages.MESSAGE_EDIT_NO_DIFFERENCE);","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"yleeyilin"},"content":" model.setPerson(supplierToEdit, editedSupplier);","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"yleeyilin"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"jamessinmaojun"},"content":" return new CommandResult(String.format(EditMessages.MESSAGE_EDIT_PERSON_SUCCESS,","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"jamessinmaojun"},"content":" EditMessages.format(editedSupplier)));","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":90,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"yleeyilin"},"content":" * Creates and returns a {@code Supplier} with the details of {@code supplierToEdit}","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"yleeyilin"},"content":" * edited with {@code editSupplierDescriptor}.","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"yleeyilin"},"content":" private static Supplier createEditedSupplier(Supplier supplierToEdit,","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"yleeyilin"},"content":" EditSupplierDescriptor editSupplierDescriptor) {","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"yleeyilin"},"content":" assert supplierToEdit !\u003d null;","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"yleeyilin"},"content":" Name updatedName \u003d editSupplierDescriptor.getName().orElse(supplierToEdit.getName());","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"yleeyilin"},"content":" Phone updatedPhone \u003d editSupplierDescriptor.getPhone().orElse(supplierToEdit.getPhone());","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"yleeyilin"},"content":" Email updatedEmail \u003d editSupplierDescriptor.getEmail().orElse(supplierToEdit.getEmail());","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"yleeyilin"},"content":" Address updatedAddress \u003d editSupplierDescriptor.getAddress().orElse(supplierToEdit.getAddress());","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"yleeyilin"},"content":" Set\u003cTag\u003e updatedTags \u003d editSupplierDescriptor.getTags().orElse(supplierToEdit.getTags());","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"yleeyilin"},"content":" Product updatedProduct \u003d editSupplierDescriptor.getProduct().orElse(supplierToEdit.getProduct());","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"yleeyilin"},"content":" Price updatedPrice \u003d editSupplierDescriptor.getPrice().orElse(supplierToEdit.getPrice());","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"yleeyilin"},"content":" return new Supplier(updatedName, updatedPhone, updatedEmail, updatedAddress,","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"yleeyilin"},"content":" updatedTags, updatedProduct, updatedPrice);","lastModifiedDate":"2024-03-17"},{"lineNumber":109,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"yleeyilin"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"yleeyilin"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"yleeyilin"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"yleeyilin"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"yleeyilin"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"yleeyilin"},"content":" if (!(other instanceof EditSupplierCommand)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"yleeyilin"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"yleeyilin"},"content":" EditSupplierCommand otherEditCommand \u003d (EditSupplierCommand) other;","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"yleeyilin"},"content":" return name.equals(otherEditCommand.name)","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"yleeyilin"},"content":" \u0026\u0026 editSupplierDescriptor.equals(otherEditCommand.editSupplierDescriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"yleeyilin"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"yleeyilin"},"content":" public String toString() {","lastModifiedDate":"2024-03-17"},{"lineNumber":129,"author":{"gitId":"yleeyilin"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-17"},{"lineNumber":130,"author":{"gitId":"yleeyilin"},"content":" .add(\"name\", name)","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"yleeyilin"},"content":" .add(\"editSupplierDescriptor\", editSupplierDescriptor)","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"yleeyilin"},"content":" .toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":135,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":136,"author":{"gitId":"yleeyilin"},"content":" * Stores the details to edit the supplier with. Each non-empty field value will replace the","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"yleeyilin"},"content":" * corresponding field value of the supplier.","lastModifiedDate":"2024-03-17"},{"lineNumber":138,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":139,"author":{"gitId":"yleeyilin"},"content":" public static class EditSupplierDescriptor {","lastModifiedDate":"2024-03-17"},{"lineNumber":140,"author":{"gitId":"yleeyilin"},"content":" private Name name;","lastModifiedDate":"2024-03-17"},{"lineNumber":141,"author":{"gitId":"yleeyilin"},"content":" private Phone phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"yleeyilin"},"content":" private Email email;","lastModifiedDate":"2024-03-17"},{"lineNumber":143,"author":{"gitId":"yleeyilin"},"content":" private Address address;","lastModifiedDate":"2024-03-17"},{"lineNumber":144,"author":{"gitId":"yleeyilin"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2024-03-17"},{"lineNumber":145,"author":{"gitId":"yleeyilin"},"content":" private Product product;","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"yleeyilin"},"content":" private Price price;","lastModifiedDate":"2024-03-17"},{"lineNumber":147,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":148,"author":{"gitId":"yleeyilin"},"content":" public EditSupplierDescriptor() {}","lastModifiedDate":"2024-03-17"},{"lineNumber":149,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":150,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":151,"author":{"gitId":"yleeyilin"},"content":" * Copy constructor.","lastModifiedDate":"2024-03-17"},{"lineNumber":152,"author":{"gitId":"yleeyilin"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2024-03-17"},{"lineNumber":153,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":154,"author":{"gitId":"yleeyilin"},"content":" public EditSupplierDescriptor(EditSupplierDescriptor toCopy) {","lastModifiedDate":"2024-03-17"},{"lineNumber":155,"author":{"gitId":"yleeyilin"},"content":" setName(toCopy.name);","lastModifiedDate":"2024-03-17"},{"lineNumber":156,"author":{"gitId":"yleeyilin"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2024-03-17"},{"lineNumber":157,"author":{"gitId":"yleeyilin"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2024-03-17"},{"lineNumber":158,"author":{"gitId":"yleeyilin"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2024-03-17"},{"lineNumber":159,"author":{"gitId":"yleeyilin"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2024-03-17"},{"lineNumber":160,"author":{"gitId":"yleeyilin"},"content":" setProduct(toCopy.product);","lastModifiedDate":"2024-03-17"},{"lineNumber":161,"author":{"gitId":"yleeyilin"},"content":" setPrice(toCopy.price);","lastModifiedDate":"2024-03-17"},{"lineNumber":162,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":163,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":164,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":165,"author":{"gitId":"yleeyilin"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2024-03-17"},{"lineNumber":166,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":167,"author":{"gitId":"yleeyilin"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2024-03-17"},{"lineNumber":168,"author":{"gitId":"yleeyilin"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, tags, product, price);","lastModifiedDate":"2024-03-17"},{"lineNumber":169,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":170,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":171,"author":{"gitId":"yleeyilin"},"content":" public void setName(Name name) {","lastModifiedDate":"2024-03-17"},{"lineNumber":172,"author":{"gitId":"yleeyilin"},"content":" this.name \u003d name;","lastModifiedDate":"2024-03-17"},{"lineNumber":173,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":174,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":175,"author":{"gitId":"yleeyilin"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2024-03-17"},{"lineNumber":176,"author":{"gitId":"yleeyilin"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2024-03-17"},{"lineNumber":177,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":178,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":179,"author":{"gitId":"yleeyilin"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2024-03-17"},{"lineNumber":180,"author":{"gitId":"yleeyilin"},"content":" this.phone \u003d phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":181,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":182,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":183,"author":{"gitId":"yleeyilin"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2024-03-17"},{"lineNumber":184,"author":{"gitId":"yleeyilin"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2024-03-17"},{"lineNumber":185,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":186,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":187,"author":{"gitId":"yleeyilin"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2024-03-17"},{"lineNumber":188,"author":{"gitId":"yleeyilin"},"content":" this.email \u003d email;","lastModifiedDate":"2024-03-17"},{"lineNumber":189,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":190,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":191,"author":{"gitId":"yleeyilin"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2024-03-17"},{"lineNumber":192,"author":{"gitId":"yleeyilin"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2024-03-17"},{"lineNumber":193,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":194,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":195,"author":{"gitId":"yleeyilin"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2024-03-17"},{"lineNumber":196,"author":{"gitId":"yleeyilin"},"content":" this.address \u003d address;","lastModifiedDate":"2024-03-17"},{"lineNumber":197,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":198,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":199,"author":{"gitId":"yleeyilin"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2024-03-17"},{"lineNumber":200,"author":{"gitId":"yleeyilin"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2024-03-17"},{"lineNumber":201,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":202,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":203,"author":{"gitId":"yleeyilin"},"content":" public void setProduct(Product product) {","lastModifiedDate":"2024-03-17"},{"lineNumber":204,"author":{"gitId":"yleeyilin"},"content":" this.product \u003d product;","lastModifiedDate":"2024-03-17"},{"lineNumber":205,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":206,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":207,"author":{"gitId":"yleeyilin"},"content":" public Optional\u003cProduct\u003e getProduct() {","lastModifiedDate":"2024-03-17"},{"lineNumber":208,"author":{"gitId":"yleeyilin"},"content":" return Optional.ofNullable(product);","lastModifiedDate":"2024-03-17"},{"lineNumber":209,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":210,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":211,"author":{"gitId":"yleeyilin"},"content":" public void setPrice(Price price) {","lastModifiedDate":"2024-03-17"},{"lineNumber":212,"author":{"gitId":"yleeyilin"},"content":" this.price \u003d price;","lastModifiedDate":"2024-03-17"},{"lineNumber":213,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":214,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":215,"author":{"gitId":"yleeyilin"},"content":" public Optional\u003cPrice\u003e getPrice() {","lastModifiedDate":"2024-03-17"},{"lineNumber":216,"author":{"gitId":"yleeyilin"},"content":" return Optional.ofNullable(price);","lastModifiedDate":"2024-03-17"},{"lineNumber":217,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":218,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":219,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":220,"author":{"gitId":"yleeyilin"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2024-03-17"},{"lineNumber":221,"author":{"gitId":"yleeyilin"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2024-03-17"},{"lineNumber":222,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":223,"author":{"gitId":"yleeyilin"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-03-17"},{"lineNumber":224,"author":{"gitId":"yleeyilin"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2024-03-17"},{"lineNumber":225,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":226,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":227,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":228,"author":{"gitId":"yleeyilin"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2024-03-17"},{"lineNumber":229,"author":{"gitId":"yleeyilin"},"content":" * if modification is attempted.","lastModifiedDate":"2024-03-17"},{"lineNumber":230,"author":{"gitId":"yleeyilin"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2024-03-17"},{"lineNumber":231,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":232,"author":{"gitId":"yleeyilin"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2024-03-17"},{"lineNumber":233,"author":{"gitId":"yleeyilin"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2024-03-17"},{"lineNumber":234,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":235,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":236,"author":{"gitId":"yleeyilin"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":237,"author":{"gitId":"yleeyilin"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-17"},{"lineNumber":238,"author":{"gitId":"yleeyilin"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-17"},{"lineNumber":239,"author":{"gitId":"yleeyilin"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":240,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":241,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":242,"author":{"gitId":"yleeyilin"},"content":" if (!(other instanceof EditSupplierDescriptor)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":243,"author":{"gitId":"yleeyilin"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":244,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":245,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":246,"author":{"gitId":"yleeyilin"},"content":" EditSupplierDescriptor otherEditSupplierDescriptor \u003d (EditSupplierDescriptor) other;","lastModifiedDate":"2024-03-17"},{"lineNumber":247,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":248,"author":{"gitId":"yleeyilin"},"content":" boolean phoneEquals \u003d Objects.equals(phone, otherEditSupplierDescriptor.phone);","lastModifiedDate":"2024-03-17"},{"lineNumber":249,"author":{"gitId":"yleeyilin"},"content":" boolean emailEquals \u003d Objects.equals(email, otherEditSupplierDescriptor.email);","lastModifiedDate":"2024-03-17"},{"lineNumber":250,"author":{"gitId":"yleeyilin"},"content":" boolean addressEquals \u003d Objects.equals(address, otherEditSupplierDescriptor.address);","lastModifiedDate":"2024-03-17"},{"lineNumber":251,"author":{"gitId":"yleeyilin"},"content":" boolean tagsEquals \u003d Objects.equals(tags, otherEditSupplierDescriptor.tags);","lastModifiedDate":"2024-03-17"},{"lineNumber":252,"author":{"gitId":"yleeyilin"},"content":" boolean productEquals \u003d Objects.equals(tags, otherEditSupplierDescriptor.tags);","lastModifiedDate":"2024-03-17"},{"lineNumber":253,"author":{"gitId":"yleeyilin"},"content":" boolean priceEquals \u003d Objects.equals(tags, otherEditSupplierDescriptor.tags);","lastModifiedDate":"2024-03-17"},{"lineNumber":254,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":255,"author":{"gitId":"yleeyilin"},"content":" return phoneEquals \u0026\u0026 emailEquals \u0026\u0026 addressEquals \u0026\u0026 tagsEquals \u0026\u0026 productEquals \u0026\u0026 priceEquals;","lastModifiedDate":"2024-03-17"},{"lineNumber":256,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":257,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":258,"author":{"gitId":"yleeyilin"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":259,"author":{"gitId":"yleeyilin"},"content":" public String toString() {","lastModifiedDate":"2024-03-17"},{"lineNumber":260,"author":{"gitId":"yleeyilin"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-17"},{"lineNumber":261,"author":{"gitId":"yleeyilin"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2024-03-17"},{"lineNumber":262,"author":{"gitId":"yleeyilin"},"content":" .add(\"email\", email)","lastModifiedDate":"2024-03-17"},{"lineNumber":263,"author":{"gitId":"yleeyilin"},"content":" .add(\"address\", address)","lastModifiedDate":"2024-03-17"},{"lineNumber":264,"author":{"gitId":"yleeyilin"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2024-03-17"},{"lineNumber":265,"author":{"gitId":"yleeyilin"},"content":" .add(\"product\", product)","lastModifiedDate":"2024-03-17"},{"lineNumber":266,"author":{"gitId":"yleeyilin"},"content":" .add(\"price\", product)","lastModifiedDate":"2024-03-17"},{"lineNumber":267,"author":{"gitId":"yleeyilin"},"content":" .toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":268,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":269,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":270,"author":{"gitId":"yleeyilin"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"jamessinmaojun":4,"yleeyilin":266}},{"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":"jamessinmaojun"},"content":"import seedu.address.logic.messages.Messages;","lastModifiedDate":"2024-03-18"},{"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":"-"},"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":{"jamessinmaojun":1,"-":57}},{"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":"jannaleong"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-24"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-24"},{"lineNumber":6,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.HelpMessages;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-31"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Format full help instructions for every command for display.","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class HelpCommand extends Command {","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":" public static final String COMMAND_WORD \u003d \"/help\";","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":" public static final String MESSAGE_USAGE \u003d \"Shows program usage instructions.\\n\"","lastModifiedDate":"2024-03-24"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":" + \"Example: /help ; command : exit\";","lastModifiedDate":"2024-03-24"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Only accepts add, clear, delete, edit, exit,\"","lastModifiedDate":"2024-03-24"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":" + \"list, note as valid command type inputs.\";","lastModifiedDate":"2024-03-24"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":" private String commandType;","lastModifiedDate":"2024-03-24"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":" //did not include find as it will be removed in the future","lastModifiedDate":"2024-03-24"},{"lineNumber":22,"author":{"gitId":"jannaleong"},"content":" enum CommandTypes {","lastModifiedDate":"2024-03-24"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":" GENERAL,","lastModifiedDate":"2024-03-24"},{"lineNumber":24,"author":{"gitId":"jannaleong"},"content":" ADD,","lastModifiedDate":"2024-03-24"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":" CLEAR,","lastModifiedDate":"2024-03-24"},{"lineNumber":26,"author":{"gitId":"jannaleong"},"content":" DELETE,","lastModifiedDate":"2024-03-24"},{"lineNumber":27,"author":{"gitId":"jannaleong"},"content":" EDIT,","lastModifiedDate":"2024-03-24"},{"lineNumber":28,"author":{"gitId":"jannaleong"},"content":" EXIT,","lastModifiedDate":"2024-03-24"},{"lineNumber":29,"author":{"gitId":"jannaleong"},"content":" SEARCH,","lastModifiedDate":"2024-03-24"},{"lineNumber":30,"author":{"gitId":"jannaleong"},"content":" LIST,","lastModifiedDate":"2024-03-24"},{"lineNumber":31,"author":{"gitId":"jannaleong"},"content":" NOTE","lastModifiedDate":"2024-03-24"},{"lineNumber":32,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":33,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":34,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-24"},{"lineNumber":35,"author":{"gitId":"jannaleong"},"content":" * @param commandType of command to get help for.","lastModifiedDate":"2024-03-24"},{"lineNumber":36,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-24"},{"lineNumber":37,"author":{"gitId":"jannaleong"},"content":" public HelpCommand(String commandType) {","lastModifiedDate":"2024-03-24"},{"lineNumber":38,"author":{"gitId":"jannaleong"},"content":" requireAllNonNull(commandType);","lastModifiedDate":"2024-03-24"},{"lineNumber":39,"author":{"gitId":"jannaleong"},"content":" this.commandType \u003d commandType;","lastModifiedDate":"2024-03-24"},{"lineNumber":40,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":42,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-24"},{"lineNumber":43,"author":{"gitId":"jannaleong"},"content":" * Checks if command provided is a valid command.","lastModifiedDate":"2024-03-24"},{"lineNumber":44,"author":{"gitId":"jannaleong"},"content":" *","lastModifiedDate":"2024-03-24"},{"lineNumber":45,"author":{"gitId":"jannaleong"},"content":" * @param commandType command type that user needs help for.","lastModifiedDate":"2024-03-24"},{"lineNumber":46,"author":{"gitId":"jannaleong"},"content":" *","lastModifiedDate":"2024-03-24"},{"lineNumber":47,"author":{"gitId":"jannaleong"},"content":" * @return boolean showing whether the command type is valid.","lastModifiedDate":"2024-03-24"},{"lineNumber":48,"author":{"gitId":"jannaleong"},"content":" * */","lastModifiedDate":"2024-03-24"},{"lineNumber":49,"author":{"gitId":"jannaleong"},"content":" public static boolean isValidCommandType(String commandType) {","lastModifiedDate":"2024-03-24"},{"lineNumber":50,"author":{"gitId":"jannaleong"},"content":" for (CommandTypes c : CommandTypes.values()) {","lastModifiedDate":"2024-03-24"},{"lineNumber":51,"author":{"gitId":"jannaleong"},"content":" if (c.name().toLowerCase().equals(commandType.toLowerCase())) {","lastModifiedDate":"2024-03-24"},{"lineNumber":52,"author":{"gitId":"jannaleong"},"content":" return true;","lastModifiedDate":"2024-03-24"},{"lineNumber":53,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":54,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":55,"author":{"gitId":"jannaleong"},"content":" return false;","lastModifiedDate":"2024-03-24"},{"lineNumber":56,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"jannaleong"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-24"},{"lineNumber":60,"author":{"gitId":"jannaleong"},"content":" if (commandType.equals(\"general\")) {","lastModifiedDate":"2024-03-24"},{"lineNumber":61,"author":{"gitId":"jamessinmaojun"},"content":" return new CommandResult(HelpMessages.MESSAGES_SHOWING_HELP_MESSAGE, true, false);","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"jannaleong"},"content":" } else if (commandType.equals(\"add\")) {","lastModifiedDate":"2024-03-24"},{"lineNumber":63,"author":{"gitId":"jannaleong"},"content":" return new CommandResult(HelpMessages.MESSAGES_SHOWING_ADD_HELP_MESSAGE, true, false);","lastModifiedDate":"2024-03-24"},{"lineNumber":64,"author":{"gitId":"jannaleong"},"content":" } else if (commandType.equals(\"delete\")) {","lastModifiedDate":"2024-03-24"},{"lineNumber":65,"author":{"gitId":"jannaleong"},"content":" return new CommandResult(HelpMessages.MESSAGES_SHOWING_DELETE_HELP_MESSAGE, true, false);","lastModifiedDate":"2024-03-24"},{"lineNumber":66,"author":{"gitId":"jannaleong"},"content":" } else if (commandType.equals(\"edit\")) {","lastModifiedDate":"2024-03-24"},{"lineNumber":67,"author":{"gitId":"jannaleong"},"content":" return new CommandResult(HelpMessages.MESSAGES_SHOWING_EDIT_HELP_MESSAGE, true, false);","lastModifiedDate":"2024-03-24"},{"lineNumber":68,"author":{"gitId":"jannaleong"},"content":" } else if (commandType.equals(\"search\")) {","lastModifiedDate":"2024-03-24"},{"lineNumber":69,"author":{"gitId":"jannaleong"},"content":" return new CommandResult(HelpMessages.MESSAGES_SHOWING_SEARCH_HELP_MESSAGE, true, false);","lastModifiedDate":"2024-03-24"},{"lineNumber":70,"author":{"gitId":"jannaleong"},"content":" } else {","lastModifiedDate":"2024-03-24"},{"lineNumber":71,"author":{"gitId":"jannaleong"},"content":" throw new CommandException(HelpMessages.MESSAGES_INVALID_COMMAND_TYPE);","lastModifiedDate":"2024-03-24"},{"lineNumber":72,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":73,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-03-24"},{"lineNumber":76,"author":{"gitId":"jannaleong"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-24"},{"lineNumber":77,"author":{"gitId":"jannaleong"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-24"},{"lineNumber":78,"author":{"gitId":"jannaleong"},"content":" return true;","lastModifiedDate":"2024-03-24"},{"lineNumber":79,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":80,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":81,"author":{"gitId":"jannaleong"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-24"},{"lineNumber":82,"author":{"gitId":"jannaleong"},"content":" if (!(other instanceof HelpCommand)) {","lastModifiedDate":"2024-03-24"},{"lineNumber":83,"author":{"gitId":"jannaleong"},"content":" return false;","lastModifiedDate":"2024-03-24"},{"lineNumber":84,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":85,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":86,"author":{"gitId":"jannaleong"},"content":" HelpCommand otherHelpCommand \u003d (HelpCommand) other;","lastModifiedDate":"2024-03-24"},{"lineNumber":87,"author":{"gitId":"jannaleong"},"content":" return commandType.equals(otherHelpCommand.commandType);","lastModifiedDate":"2024-03-24"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":89,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"jamessinmaojun":2,"jannaleong":71,"-":16}},{"path":"src/main/java/seedu/address/logic/commands/NoteCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NOTE;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":"import java.util.List;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.NoteMessages;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":"import seedu.address.model.person.Maintainer;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":"import seedu.address.model.person.Note;","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":"import seedu.address.model.person.Staff;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":"import seedu.address.model.person.Supplier;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":" * Adds a note of an existing person in the address book.","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"jannaleong"},"content":" * A non-empty note must be specified.","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"jannaleong"},"content":"public class NoteCommand extends Command {","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"jannaleong"},"content":" public static final String COMMAND_WORD \u003d \"/note\";","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"jannaleong"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"jannaleong"},"content":" + \": Adds note to person.\\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"jannaleong"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"jannaleong"},"content":" + PREFIX_NAME + \"NAME\"","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"jannaleong"},"content":" + PREFIX_NOTE + \"NOTE\"","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"jannaleong"},"content":" + \"Example: \" + COMMAND_WORD + PREFIX_NAME","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"jannaleong"},"content":" + \" Moochie\" + PREFIX_NOTE + \"Meet at 6pm Tuesday\";","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"jannaleong"},"content":" private final Name name;","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"jannaleong"},"content":" private final Note note;","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"jannaleong"},"content":" * @param name of the person in the filtered person list to edit the note","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"jannaleong"},"content":" * @param note of the person to be updated to","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"jannaleong"},"content":" public NoteCommand(Name name, Note note) {","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"jannaleong"},"content":" requireAllNonNull(name, note);","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"jannaleong"},"content":" this.name \u003d name;","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"jannaleong"},"content":" this.note \u003d note;","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"jannaleong"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"jannaleong"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"jannaleong"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"jannaleong"},"content":" Person personToEdit \u003d findByName(lastShownList, name);","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"jannaleong"},"content":" Person editedPerson;","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"jannaleong"},"content":" if (personToEdit instanceof Maintainer) {","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"jannaleong"},"content":" editedPerson \u003d new Maintainer(","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"jannaleong"},"content":" personToEdit.getName(), personToEdit.getPhone(), personToEdit.getEmail(),","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"jannaleong"},"content":" personToEdit.getAddress(), personToEdit.getTags(), ((Maintainer) personToEdit).getSkill(), (","lastModifiedDate":"2024-03-22"},{"lineNumber":59,"author":{"gitId":"jannaleong"},"content":" (Maintainer) personToEdit).getCommission());","lastModifiedDate":"2024-03-22"},{"lineNumber":60,"author":{"gitId":"jannaleong"},"content":" editedPerson.setNoteContent(note.toString());","lastModifiedDate":"2024-03-23"},{"lineNumber":61,"author":{"gitId":"jannaleong"},"content":" } else if (personToEdit instanceof Staff) {","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"jannaleong"},"content":" editedPerson \u003d new Staff(","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"jannaleong"},"content":" personToEdit.getName(), personToEdit.getPhone(), personToEdit.getEmail(),","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"jannaleong"},"content":" personToEdit.getAddress(), personToEdit.getTags(), ((Staff) personToEdit).getSalary(), (","lastModifiedDate":"2024-03-22"},{"lineNumber":65,"author":{"gitId":"jannaleong"},"content":" (Staff) personToEdit).getEmployment());","lastModifiedDate":"2024-03-22"},{"lineNumber":66,"author":{"gitId":"jannaleong"},"content":" editedPerson.setNoteContent(note.toString());","lastModifiedDate":"2024-03-23"},{"lineNumber":67,"author":{"gitId":"jannaleong"},"content":" } else if (personToEdit instanceof Supplier) {","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"jannaleong"},"content":" editedPerson \u003d new Supplier(","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"jannaleong"},"content":" personToEdit.getName(), personToEdit.getPhone(), personToEdit.getEmail(),","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"jannaleong"},"content":" personToEdit.getAddress(), personToEdit.getTags(), ((Supplier) personToEdit).getProduct(), (","lastModifiedDate":"2024-03-22"},{"lineNumber":71,"author":{"gitId":"jannaleong"},"content":" (Supplier) personToEdit).getPrice());","lastModifiedDate":"2024-03-22"},{"lineNumber":72,"author":{"gitId":"jannaleong"},"content":" editedPerson.setNoteContent(note.toString());","lastModifiedDate":"2024-03-23"},{"lineNumber":73,"author":{"gitId":"jannaleong"},"content":" } else {","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"jannaleong"},"content":" editedPerson \u003d new Person(","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"jannaleong"},"content":" personToEdit.getName(), personToEdit.getPhone(), personToEdit.getEmail(),","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"jannaleong"},"content":" personToEdit.getAddress(), note, personToEdit.getTags());","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"jannaleong"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"jannaleong"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"jannaleong"},"content":" return new CommandResult(generateSuccessMessage(editedPerson));","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"jannaleong"},"content":" * Generates a command execution success message","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"jannaleong"},"content":" * {@code personToEdit}.","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"jannaleong"},"content":" private String generateSuccessMessage(Person personToEdit) {","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"jamessinmaojun"},"content":" return String.format(NoteMessages.MESSAGE_ADD_NOTE_SUCCESS, personToEdit);","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"jannaleong"},"content":" * Finds a person from a List of persons identified by its name.","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"jannaleong"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"jannaleong"},"content":" * @param personList The list of persons to search from.","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"jannaleong"},"content":" * @param targetName The name of the person to return.","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"jannaleong"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":99,"author":{"gitId":"jannaleong"},"content":" * @return The person object with name equals to {@code targetName}.","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"jannaleong"},"content":" * */","lastModifiedDate":"2024-03-20"},{"lineNumber":101,"author":{"gitId":"jannaleong"},"content":" public Person findByName(List\u003cPerson\u003e personList, Name targetName) {","lastModifiedDate":"2024-03-20"},{"lineNumber":102,"author":{"gitId":"jannaleong"},"content":" for (Person person: personList) {","lastModifiedDate":"2024-03-20"},{"lineNumber":103,"author":{"gitId":"jannaleong"},"content":" Name name \u003d person.getName();","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"jannaleong"},"content":" if (name.equals(targetName)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"jannaleong"},"content":" return person;","lastModifiedDate":"2024-03-20"},{"lineNumber":106,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":107,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":108,"author":{"gitId":"jannaleong"},"content":" return null;","lastModifiedDate":"2024-03-20"},{"lineNumber":109,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":110,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":111,"author":{"gitId":"jannaleong"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"jannaleong"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-18"},{"lineNumber":113,"author":{"gitId":"jannaleong"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"jannaleong"},"content":" return true;","lastModifiedDate":"2024-03-18"},{"lineNumber":115,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"jannaleong"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-18"},{"lineNumber":118,"author":{"gitId":"jannaleong"},"content":" if (!(other instanceof NoteCommand)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":119,"author":{"gitId":"jannaleong"},"content":" return false;","lastModifiedDate":"2024-03-18"},{"lineNumber":120,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":121,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":122,"author":{"gitId":"jannaleong"},"content":" NoteCommand e \u003d (NoteCommand) other;","lastModifiedDate":"2024-03-18"},{"lineNumber":123,"author":{"gitId":"jannaleong"},"content":" return name.equals(e.name)","lastModifiedDate":"2024-03-18"},{"lineNumber":124,"author":{"gitId":"jannaleong"},"content":" \u0026\u0026 note.equals(e.note);","lastModifiedDate":"2024-03-18"},{"lineNumber":125,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":126,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"jamessinmaojun":2,"jannaleong":124}},{"path":"src/main/java/seedu/address/logic/commands/SearchCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Joshy837"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"Joshy837"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"Joshy837"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.SearchMessages;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"Joshy837"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"Joshy837"},"content":"import seedu.address.model.person.KeywordPredicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"Joshy837"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"Joshy837"},"content":" * Finds and lists all persons in address book whose name contains any of the argument keywords.","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"Joshy837"},"content":" * Keyword matching is case insensitive.","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"Joshy837"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"Joshy837"},"content":"public class SearchCommand extends Command {","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"Joshy837"},"content":" public static final String COMMAND_WORD \u003d \"/search\";","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"Joshy837"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Searches all persons whose names contain any of \"","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"Joshy837"},"content":" + \"the specified keywords (case-insensitive) and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"Joshy837"},"content":" + \"Parameters: KEYWORD \\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"Joshy837"},"content":" + \"Example: \" + COMMAND_WORD","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"Joshy837"},"content":" + \" /search ; name : [full/partial name]\\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"Joshy837"},"content":" + \"/search ; phone : [full/partial phone]\\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"Joshy837"},"content":" + \"/search ; address : [full/partial address]\\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"Joshy837"},"content":" + \"/search ; email : [full/partial email]\\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"Joshy837"},"content":" + \"/search ; product : [full/partial product name]\\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"Joshy837"},"content":" + \"/search ; employment : [employment]\";","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"Joshy837"},"content":" private final KeywordPredicate predicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"Joshy837"},"content":" public SearchCommand(KeywordPredicate predicate) {","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"Joshy837"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"Joshy837"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"Joshy837"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"Joshy837"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"Joshy837"},"content":" model.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"Joshy837"},"content":" return new CommandResult(","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"jamessinmaojun"},"content":" String.format(SearchMessages.MESSAGE_SEARCH_PERSON_SUCCESS, model.getFilteredPersonList().size()));","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"Joshy837"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"Joshy837"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"Joshy837"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"Joshy837"},"content":" return true;","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"Joshy837"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"Joshy837"},"content":" if (!(other instanceof SearchCommand)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"Joshy837"},"content":" return false;","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"Joshy837"},"content":" SearchCommand otherSearchCommand \u003d (SearchCommand) other;","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"Joshy837"},"content":" return predicate.equals(otherSearchCommand.predicate);","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"Joshy837"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"Joshy837"},"content":" public String toString() {","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"Joshy837"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"Joshy837"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"Joshy837"},"content":" .toString();","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"Joshy837"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"Joshy837":62,"jamessinmaojun":2}},{"path":"src/main/java/seedu/address/logic/messages/AddMessages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jamessinmaojun"},"content":"package seedu.address.logic.messages;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.model.person.Maintainer;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.model.person.Staff;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.model.person.Supplier;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"jamessinmaojun"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"jamessinmaojun"},"content":" * Container for user delete command visible messages.","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"jamessinmaojun"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"jamessinmaojun"},"content":"public class AddMessages extends Messages {","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"jamessinmaojun"},"content":" public static final String MESSAGE_ADD_PERSON_SUCCESS \u003d \"Woof! Added %1$s successfully! \\uD83D\\uDC36\";","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"jamessinmaojun"},"content":" public static final String MESSAGE_ADD_DUPLICATE_PERSON \u003d \"Failed to add Pooch Contact - \"","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"jamessinmaojun"},"content":" + \"Pooch Contact already exists in the planner \\uD83D\\uDC3E\";","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"jamessinmaojun"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"jamessinmaojun"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"jamessinmaojun"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"jamessinmaojun"},"content":" public static String format(Person person) {","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"jamessinmaojun"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"jamessinmaojun"},"content":" if (person instanceof Staff) {","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"jamessinmaojun"},"content":" builder.append(\"Pooch Staff \");","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"jamessinmaojun"},"content":" } else if (person instanceof Supplier) {","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"jamessinmaojun"},"content":" builder.append(\"Supplier \");","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"jamessinmaojun"},"content":" } else if (person instanceof Maintainer) {","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"jamessinmaojun"},"content":" builder.append(\"Maintenance Crew \");","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"jamessinmaojun"},"content":" } else {","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"jamessinmaojun"},"content":" builder.append(\"Other Contact \");","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"jamessinmaojun"},"content":" builder.append(person.getName());","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"jamessinmaojun"},"content":" return builder.toString();","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"jamessinmaojun"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"jamessinmaojun":33}},{"path":"src/main/java/seedu/address/logic/messages/DeleteMessages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jamessinmaojun"},"content":"package seedu.address.logic.messages;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.model.person.Maintainer;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.model.person.Staff;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.model.person.Supplier;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"jamessinmaojun"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"jamessinmaojun"},"content":" * Container for user delete command visible messages.","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"jamessinmaojun"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"jamessinmaojun"},"content":"public class DeleteMessages extends Messages {","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"jamessinmaojun"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Woof! Deleted %1$s successfully! \\uD83D\\uDC36\";","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"jamessinmaojun"},"content":" public static final String MESSAGE_DELETE_NAME_NOT_FOUND \u003d \"Failed to delete Pooch Contact - \"","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"jamessinmaojun"},"content":" + \"Name does not exist in our address book \\uD83D\\uDC3E\";","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"jamessinmaojun"},"content":" public static final String MESSAGE_DELETE_MISSING_NAME \u003d \"Failed to delete Pooch Contact - \"","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"jamessinmaojun"},"content":" + \"Delete requires a name field. \\uD83D\\uDC3E\";","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"jamessinmaojun"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"jamessinmaojun"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"jamessinmaojun"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"jamessinmaojun"},"content":" public static String format(Person person) {","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"jamessinmaojun"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"jamessinmaojun"},"content":" if (person instanceof Staff) {","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"jamessinmaojun"},"content":" builder.append(\"Pooch Staff \");","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"jamessinmaojun"},"content":" } else if (person instanceof Supplier) {","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"jamessinmaojun"},"content":" builder.append(\"Supplier \");","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"jamessinmaojun"},"content":" } else if (person instanceof Maintainer) {","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"jamessinmaojun"},"content":" builder.append(\"Maintenance Crew \");","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"jamessinmaojun"},"content":" } else {","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"jamessinmaojun"},"content":" builder.append(\"Other Contact \");","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"jamessinmaojun"},"content":" builder.append(person.getName());","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"jamessinmaojun"},"content":" return builder.toString();","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"jamessinmaojun"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"jamessinmaojun":35}},{"path":"src/main/java/seedu/address/logic/messages/EditMessages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jamessinmaojun"},"content":"package seedu.address.logic.messages;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.model.person.Maintainer;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.model.person.Staff;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.model.person.Supplier;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"jamessinmaojun"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"jamessinmaojun"},"content":" * Container for user delete command visible messages.","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"jamessinmaojun"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"jamessinmaojun"},"content":"public class EditMessages extends Messages {","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"jamessinmaojun"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Woof! Edited %1$s successfully! \\uD83D\\uDC36\";","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"jamessinmaojun"},"content":" public static final String MESSAGE_EDIT_EMPTY_FIELD \u003d \"Failed to edit Pooch Contact - \"","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"jamessinmaojun"},"content":" + \"Field is empty! %1$s \\uD83D\\uDC3E\";","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"jamessinmaojun"},"content":" public static final String MESSAGE_EDIT_MISSING_FIELD \u003d \"Failed to edit Pooch Contact - \"","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"jamessinmaojun"},"content":" + \"Edit requires a field prefix. %1$s \\uD83D\\uDC3E\";","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"jamessinmaojun"},"content":" public static final String MESSAGE_EDIT_MISSING_NAME \u003d \"Failed to edit Pooch Contact - \"","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"jamessinmaojun"},"content":" + \"Edit requires a name field. %1$s \\uD83D\\uDC3E\";","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"jamessinmaojun"},"content":" public static final String MESSAGE_EDIT_INVALID_NAME \u003d \"Failed to edit Pooch Contact. %1$s \\uD83D\\uDC3E\";","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"jamessinmaojun"},"content":" public static final String MESSAGE_EDITING_NAME \u003d \"Failed to edit Pooch Contact.\"","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"jamessinmaojun"},"content":" + \"Editing Pooch Contact names is not allowed %1$s \\uD83D\\uDC3E\";","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"jamessinmaojun"},"content":" public static final String MESSAGE_EDIT_INVALID_FIELD \u003d \"Failed to edit Pooch Contact - \"","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"jamessinmaojun"},"content":" + \"%1$s \\uD83D\\uDC3E\";","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"jamessinmaojun"},"content":" public static final String MESSAGE_EDIT_NO_DIFFERENCE \u003d \"Failed to edit Pooch Contact - \"","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"jamessinmaojun"},"content":" + \"No difference detected!\";","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"jamessinmaojun"},"content":" public static final String MESSAGE_INVALID_EDIT_PERSON \u003d \"Name does not exist in our address book \\uD83D\\uDC3E\"","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"jamessinmaojun"},"content":" + \"Make sure that you are attempting to edit OTHER.\";","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"jamessinmaojun"},"content":" public static final String MESSAGE_INVALID_EDIT_STAFF \u003d \"Name does not exist in our address book \\uD83D\\uDC3E\"","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"jamessinmaojun"},"content":" + \"Make sure that you are attempting to edit STAFF.\";","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"jamessinmaojun"},"content":" public static final String MESSAGE_INVALID_EDIT_MAINTAINER \u003d \"Name does not exist in our address book \\uD83D\\uDC3E\"","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"jamessinmaojun"},"content":" + \" Make sure that you are attempting to edit MAINTAINER.\";","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"jamessinmaojun"},"content":" public static final String MESSAGE_INVALID_EDIT_SUPPLIER \u003d \"Name does not exist in our address book \\uD83D\\uDC3E\"","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"jamessinmaojun"},"content":" + \" Make sure that you are attempting to edit SUPPLIER.\";","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"jamessinmaojun"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"jamessinmaojun"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"jamessinmaojun"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"jamessinmaojun"},"content":" public static String format(Person person) {","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"jamessinmaojun"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"jamessinmaojun"},"content":" if (person instanceof Staff) {","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"jamessinmaojun"},"content":" builder.append(\"Pooch Staff \");","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"jamessinmaojun"},"content":" } else if (person instanceof Supplier) {","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"jamessinmaojun"},"content":" builder.append(\"Supplier \");","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"jamessinmaojun"},"content":" } else if (person instanceof Maintainer) {","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"jamessinmaojun"},"content":" builder.append(\"Maintenance Crew \");","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"jamessinmaojun"},"content":" } else {","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"jamessinmaojun"},"content":" builder.append(\"Other Contact \");","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"jamessinmaojun"},"content":" builder.append(person.getName());","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"jamessinmaojun"},"content":" return builder.toString();","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"jamessinmaojun"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"jamessinmaojun":52}},{"path":"src/main/java/seedu/address/logic/messages/HelpMessages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jamessinmaojun"},"content":"package seedu.address.logic.messages;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"jamessinmaojun"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"jamessinmaojun"},"content":" * Container for user delete command visible messages.","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"jamessinmaojun"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"jamessinmaojun"},"content":"public class HelpMessages extends Messages {","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"jamessinmaojun"},"content":" public static final String MESSAGES_SHOWING_HELP_MESSAGE \u003d \"Opened help window.\";","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"jamessinmaojun"},"content":" public static final String MESSAGES_SHOWING_DELETE_HELP_MESSAGE \u003d \"Opened help window for delete command.\";","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"jamessinmaojun"},"content":" public static final String MESSAGES_SHOWING_EDIT_HELP_MESSAGE \u003d \"Opened help window for edit command.\";","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":" public static final String MESSAGES_SHOWING_ADD_HELP_MESSAGE \u003d","lastModifiedDate":"2024-03-24"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":" \"Opened help window for add command.\";","lastModifiedDate":"2024-03-24"},{"lineNumber":12,"author":{"gitId":"jamessinmaojun"},"content":" public static final String MESSAGES_SHOWING_SEARCH_HELP_MESSAGE \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"jamessinmaojun"},"content":" \"Opened help window for search command.\";","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":" public static final String MESSAGES_INVALID_COMMAND_TYPE \u003d \"Invalid command type given.\";","lastModifiedDate":"2024-03-24"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":" public static final String MESSAGE_HELP_MISSING_COMMAND \u003d \"Failed to give help - \"","lastModifiedDate":"2024-03-24"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":" + \"Delete requires a command field. \\uD83D\\uDC3E\";","lastModifiedDate":"2024-03-24"},{"lineNumber":18,"author":{"gitId":"jamessinmaojun"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"jamessinmaojun":12,"jannaleong":6}},{"path":"src/main/java/seedu/address/logic/messages/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jamessinmaojun"},"content":"package seedu.address.logic.messages;","lastModifiedDate":"2024-03-18"},{"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":"2024-03-18"},{"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":"jamessinmaojun"},"content":" public static final String MESSAGE_EXTRA_FIELDS \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"jamessinmaojun"},"content":" \"%1$s does not contain the following field(s): %2$s\";","lastModifiedDate":"2024-03-20"},{"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":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":" person.getTags().forEach(builder::append);","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"jamessinmaojun":3,"-":48}},{"path":"src/main/java/seedu/address/logic/messages/NoteMessages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jamessinmaojun"},"content":"package seedu.address.logic.messages;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"jamessinmaojun"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"jamessinmaojun"},"content":" * Container for user delete command visible messages.","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"jamessinmaojun"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"jamessinmaojun"},"content":"public class NoteMessages extends Messages {","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"jamessinmaojun"},"content":" public static final String MESSAGE_ADD_NOTE_SUCCESS \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"jamessinmaojun"},"content":" \"Woof! Added note to Pooch Contact %1$s successfully! \\uD83D\\uDC36\";","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"jamessinmaojun"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"jamessinmaojun":9}},{"path":"src/main/java/seedu/address/logic/messages/SearchMessages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jamessinmaojun"},"content":"package seedu.address.logic.messages;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"jamessinmaojun"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"jamessinmaojun"},"content":" * Container for user delete command visible messages.","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"jamessinmaojun"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"jamessinmaojun"},"content":"public class SearchMessages extends Messages {","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"jamessinmaojun"},"content":" public static final String MESSAGE_SEARCH_PERSON_SUCCESS \u003d \"Woof! %1$s contacts found! \\uD83D\\uDC36\";","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"jamessinmaojun"},"content":" public static final String MESSAGE_SEARCH_MISSING_FIELD \u003d \"Failed to find Pooch Contact - \"","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"jamessinmaojun"},"content":" + \"Search requires a name / phone / address / email / product / employment field. \\uD83D\\uDC3E\";","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"jamessinmaojun"},"content":" public static final String MESSAGE_SEARCH_INVALID_FIELD \u003d \"Failed to find Pooch Contact - \"","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"jamessinmaojun"},"content":" + \"Pooch doesn\u0027t recognise the field \\uD83D\\uDC3E\";","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"jamessinmaojun"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"jamessinmaojun":12}},{"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":"jamessinmaojun"},"content":"import static seedu.address.logic.messages.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-08"},{"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":"jannaleong"},"content":"import seedu.address.model.person.Note;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-03-17"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-03-17"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05"},{"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-02-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":34,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":35,"author":{"gitId":"chiageng"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2024-03-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":37,"author":{"gitId":"-"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL)","lastModifiedDate":"2024-03-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":42,"author":{"gitId":"-"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-07-14"},{"lineNumber":43,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":44,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":46,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":47,"author":{"gitId":"jannaleong"},"content":" Note note \u003d new Note(\"No additional note set\");","lastModifiedDate":"2024-03-24"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":" Tag tag \u003d new Tag(\"other\");","lastModifiedDate":"2024-03-08"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":" Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-08"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":" tags.add(tag);","lastModifiedDate":"2024-03-08"},{"lineNumber":51,"author":{"gitId":"jannaleong"},"content":" Person person \u003d new Person(name, phone, email, address, note, tags);","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17"},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":60,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":64,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"jamessinmaojun":1,"chiageng":5,"jannaleong":3,"-":55}},{"path":"src/main/java/seedu/address/logic/parser/AddMaintainerCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chiageng"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-08"},{"lineNumber":2,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":3,"author":{"gitId":"jamessinmaojun"},"content":"import static seedu.address.logic.messages.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-09"},{"lineNumber":5,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COMMISSION;","lastModifiedDate":"2024-03-09"},{"lineNumber":6,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-09"},{"lineNumber":7,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-09"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SKILL;","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-08"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-08"},{"lineNumber":13,"author":{"gitId":"chiageng"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-08"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":"import seedu.address.logic.commands.AddMaintainerCommand;","lastModifiedDate":"2024-03-09"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-09"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-09"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Commission;","lastModifiedDate":"2024-03-09"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-09"},{"lineNumber":20,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Maintainer;","lastModifiedDate":"2024-03-09"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-09"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-09"},{"lineNumber":23,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Skill;","lastModifiedDate":"2024-03-09"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-09"},{"lineNumber":25,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":26,"author":{"gitId":"chiageng"},"content":"/**","lastModifiedDate":"2024-03-08"},{"lineNumber":27,"author":{"gitId":"chiageng"},"content":" * Parses input arguments and creates a new AddStaffCommand object","lastModifiedDate":"2024-03-08"},{"lineNumber":28,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":29,"author":{"gitId":"chiageng"},"content":"public class AddMaintainerCommandParser implements Parser\u003cAddMaintainerCommand\u003e {","lastModifiedDate":"2024-03-08"},{"lineNumber":30,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":31,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-08"},{"lineNumber":32,"author":{"gitId":"chiageng"},"content":" * Parses the given {@code String} of arguments in the context of the AddStaffCommand","lastModifiedDate":"2024-03-08"},{"lineNumber":33,"author":{"gitId":"chiageng"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2024-03-08"},{"lineNumber":34,"author":{"gitId":"chiageng"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-08"},{"lineNumber":35,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":36,"author":{"gitId":"chiageng"},"content":" public AddMaintainerCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-08"},{"lineNumber":37,"author":{"gitId":"chiageng"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-03-08"},{"lineNumber":38,"author":{"gitId":"chiageng"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-03-08"},{"lineNumber":39,"author":{"gitId":"chiageng"},"content":" PREFIX_SKILL, PREFIX_COMMISSION);","lastModifiedDate":"2024-03-08"},{"lineNumber":40,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":41,"author":{"gitId":"chiageng"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-03-08"},{"lineNumber":42,"author":{"gitId":"chiageng"},"content":" PREFIX_SKILL, PREFIX_COMMISSION)","lastModifiedDate":"2024-03-08"},{"lineNumber":43,"author":{"gitId":"chiageng"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-03-08"},{"lineNumber":44,"author":{"gitId":"chiageng"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddMaintainerCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-08"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":46,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-03-08"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":" PREFIX_SKILL, PREFIX_COMMISSION);","lastModifiedDate":"2024-03-08"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2024-03-08"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2024-03-08"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2024-03-08"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2024-03-08"},{"lineNumber":53,"author":{"gitId":"chiageng"},"content":" Tag tag \u003d new Tag(\"maintainer\");","lastModifiedDate":"2024-03-08"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":" Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-08"},{"lineNumber":55,"author":{"gitId":"chiageng"},"content":" tags.add(tag);","lastModifiedDate":"2024-03-08"},{"lineNumber":56,"author":{"gitId":"chiageng"},"content":" Skill skill \u003d ParserUtil.parseSkill(argMultimap.getValue(PREFIX_SKILL).get());","lastModifiedDate":"2024-03-08"},{"lineNumber":57,"author":{"gitId":"chiageng"},"content":" Commission commission \u003d ParserUtil.parseCommission(argMultimap.getValue(PREFIX_COMMISSION).get());","lastModifiedDate":"2024-03-08"},{"lineNumber":58,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":59,"author":{"gitId":"chiageng"},"content":" Maintainer person \u003d new Maintainer(name, phone, email, address, tags, skill, commission);","lastModifiedDate":"2024-03-08"},{"lineNumber":60,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":61,"author":{"gitId":"chiageng"},"content":" return new AddMaintainerCommand(person);","lastModifiedDate":"2024-03-08"},{"lineNumber":62,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":63,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":64,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-08"},{"lineNumber":65,"author":{"gitId":"chiageng"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-03-08"},{"lineNumber":66,"author":{"gitId":"chiageng"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-03-08"},{"lineNumber":67,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":68,"author":{"gitId":"chiageng"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-03-08"},{"lineNumber":69,"author":{"gitId":"chiageng"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-03-08"},{"lineNumber":70,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":71,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":72,"author":{"gitId":"chiageng"},"content":"}","lastModifiedDate":"2024-03-08"}],"authorContributionMap":{"chiageng":71,"jamessinmaojun":1}},{"path":"src/main/java/seedu/address/logic/parser/AddStaffCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chiageng"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-08"},{"lineNumber":2,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":3,"author":{"gitId":"jamessinmaojun"},"content":"import static seedu.address.logic.messages.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-09"},{"lineNumber":5,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-09"},{"lineNumber":6,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMPLOYMENT;","lastModifiedDate":"2024-03-09"},{"lineNumber":7,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-09"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SALARY;","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-09"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-08"},{"lineNumber":13,"author":{"gitId":"chiageng"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-08"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-08"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":"import seedu.address.logic.commands.AddStaffCommand;","lastModifiedDate":"2024-03-09"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-09"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-09"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-09"},{"lineNumber":20,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Employment;","lastModifiedDate":"2024-03-09"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-09"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-09"},{"lineNumber":23,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Salary;","lastModifiedDate":"2024-03-09"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Staff;","lastModifiedDate":"2024-03-09"},{"lineNumber":25,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-09"},{"lineNumber":26,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":27,"author":{"gitId":"chiageng"},"content":"/**","lastModifiedDate":"2024-03-08"},{"lineNumber":28,"author":{"gitId":"chiageng"},"content":" * Parses input arguments and creates a new AddStaffCommand object","lastModifiedDate":"2024-03-08"},{"lineNumber":29,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":30,"author":{"gitId":"chiageng"},"content":"public class AddStaffCommandParser implements Parser\u003cAddStaffCommand\u003e {","lastModifiedDate":"2024-03-08"},{"lineNumber":31,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":32,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-08"},{"lineNumber":33,"author":{"gitId":"chiageng"},"content":" * Parses the given {@code String} of arguments in the context of the AddStaffCommand","lastModifiedDate":"2024-03-08"},{"lineNumber":34,"author":{"gitId":"chiageng"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2024-03-08"},{"lineNumber":35,"author":{"gitId":"chiageng"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-08"},{"lineNumber":36,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":37,"author":{"gitId":"chiageng"},"content":" public AddStaffCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-08"},{"lineNumber":38,"author":{"gitId":"chiageng"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-03-08"},{"lineNumber":39,"author":{"gitId":"chiageng"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG,","lastModifiedDate":"2024-03-08"},{"lineNumber":40,"author":{"gitId":"chiageng"},"content":" PREFIX_SALARY, PREFIX_EMPLOYMENT);","lastModifiedDate":"2024-03-08"},{"lineNumber":41,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":42,"author":{"gitId":"chiageng"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-03-08"},{"lineNumber":43,"author":{"gitId":"chiageng"},"content":" PREFIX_EMPLOYMENT, PREFIX_SALARY)","lastModifiedDate":"2024-03-08"},{"lineNumber":44,"author":{"gitId":"chiageng"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-03-08"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddStaffCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-08"},{"lineNumber":46,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-03-08"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":" PREFIX_SALARY, PREFIX_EMPLOYMENT);","lastModifiedDate":"2024-03-08"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2024-03-08"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2024-03-08"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2024-03-08"},{"lineNumber":53,"author":{"gitId":"chiageng"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2024-03-08"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":" Tag tag \u003d new Tag(\"staff\");","lastModifiedDate":"2024-03-08"},{"lineNumber":55,"author":{"gitId":"chiageng"},"content":" Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-08"},{"lineNumber":56,"author":{"gitId":"chiageng"},"content":" tags.add(tag);","lastModifiedDate":"2024-03-08"},{"lineNumber":57,"author":{"gitId":"chiageng"},"content":" Employment employment \u003d ParserUtil.parseEmployment(argMultimap.getValue(PREFIX_EMPLOYMENT).get());","lastModifiedDate":"2024-03-08"},{"lineNumber":58,"author":{"gitId":"chiageng"},"content":" Salary salary \u003d ParserUtil.parseSalary(argMultimap.getValue(PREFIX_SALARY).get());","lastModifiedDate":"2024-03-08"},{"lineNumber":59,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":60,"author":{"gitId":"chiageng"},"content":" Staff person \u003d new Staff(name, phone, email, address, tags, salary, employment);","lastModifiedDate":"2024-03-08"},{"lineNumber":61,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":62,"author":{"gitId":"chiageng"},"content":" return new AddStaffCommand(person);","lastModifiedDate":"2024-03-08"},{"lineNumber":63,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":64,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":65,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-08"},{"lineNumber":66,"author":{"gitId":"chiageng"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-03-08"},{"lineNumber":67,"author":{"gitId":"chiageng"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-03-08"},{"lineNumber":68,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":69,"author":{"gitId":"chiageng"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-03-08"},{"lineNumber":70,"author":{"gitId":"chiageng"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-03-08"},{"lineNumber":71,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":72,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":73,"author":{"gitId":"chiageng"},"content":"}","lastModifiedDate":"2024-03-08"}],"authorContributionMap":{"chiageng":72,"jamessinmaojun":1}},{"path":"src/main/java/seedu/address/logic/parser/AddSupplierCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chiageng"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-08"},{"lineNumber":2,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":3,"author":{"gitId":"jamessinmaojun"},"content":"import static seedu.address.logic.messages.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-09"},{"lineNumber":5,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-09"},{"lineNumber":6,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-09"},{"lineNumber":7,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-09"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PRICE;","lastModifiedDate":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PRODUCT;","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-08"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-08"},{"lineNumber":13,"author":{"gitId":"chiageng"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-08"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":"import seedu.address.logic.commands.AddSupplierCommand;","lastModifiedDate":"2024-03-09"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-09"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-09"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-09"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-09"},{"lineNumber":20,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-09"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Price;","lastModifiedDate":"2024-03-09"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Product;","lastModifiedDate":"2024-03-09"},{"lineNumber":23,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Supplier;","lastModifiedDate":"2024-03-09"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-09"},{"lineNumber":25,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":26,"author":{"gitId":"chiageng"},"content":"/**","lastModifiedDate":"2024-03-08"},{"lineNumber":27,"author":{"gitId":"chiageng"},"content":" * Parses input arguments and creates a new AddStaffCommand object","lastModifiedDate":"2024-03-08"},{"lineNumber":28,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":29,"author":{"gitId":"chiageng"},"content":"public class AddSupplierCommandParser implements Parser\u003cAddSupplierCommand\u003e {","lastModifiedDate":"2024-03-08"},{"lineNumber":30,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":31,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-08"},{"lineNumber":32,"author":{"gitId":"chiageng"},"content":" * Parses the given {@code String} of arguments in the context of the AddStaffCommand","lastModifiedDate":"2024-03-08"},{"lineNumber":33,"author":{"gitId":"chiageng"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2024-03-08"},{"lineNumber":34,"author":{"gitId":"chiageng"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-08"},{"lineNumber":35,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":36,"author":{"gitId":"chiageng"},"content":" public AddSupplierCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-08"},{"lineNumber":37,"author":{"gitId":"chiageng"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-03-08"},{"lineNumber":38,"author":{"gitId":"chiageng"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-03-08"},{"lineNumber":39,"author":{"gitId":"chiageng"},"content":" PREFIX_PRODUCT, PREFIX_PRICE);","lastModifiedDate":"2024-03-08"},{"lineNumber":40,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":41,"author":{"gitId":"chiageng"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-03-08"},{"lineNumber":42,"author":{"gitId":"chiageng"},"content":" PREFIX_PRODUCT, PREFIX_PRICE)","lastModifiedDate":"2024-03-08"},{"lineNumber":43,"author":{"gitId":"chiageng"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-03-08"},{"lineNumber":44,"author":{"gitId":"chiageng"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddSupplierCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-08"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":46,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-03-08"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":" PREFIX_PRODUCT, PREFIX_PRICE);","lastModifiedDate":"2024-03-08"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2024-03-08"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2024-03-08"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2024-03-08"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2024-03-08"},{"lineNumber":53,"author":{"gitId":"chiageng"},"content":" Tag tag \u003d new Tag(\"supplier\");","lastModifiedDate":"2024-03-08"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":" Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-08"},{"lineNumber":55,"author":{"gitId":"chiageng"},"content":" tags.add(tag);","lastModifiedDate":"2024-03-08"},{"lineNumber":56,"author":{"gitId":"chiageng"},"content":" Price price \u003d ParserUtil.parsePrice(argMultimap.getValue(PREFIX_PRICE).get());","lastModifiedDate":"2024-03-08"},{"lineNumber":57,"author":{"gitId":"chiageng"},"content":" Product product \u003d ParserUtil.parseProduct(argMultimap.getValue(PREFIX_PRODUCT).get());","lastModifiedDate":"2024-03-08"},{"lineNumber":58,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":59,"author":{"gitId":"chiageng"},"content":" Supplier person \u003d new Supplier(name, phone, email, address, tags, product, price);","lastModifiedDate":"2024-03-08"},{"lineNumber":60,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":61,"author":{"gitId":"chiageng"},"content":" return new AddSupplierCommand(person);","lastModifiedDate":"2024-03-08"},{"lineNumber":62,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":63,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":64,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-08"},{"lineNumber":65,"author":{"gitId":"chiageng"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-03-08"},{"lineNumber":66,"author":{"gitId":"chiageng"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-03-08"},{"lineNumber":67,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":68,"author":{"gitId":"chiageng"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-03-08"},{"lineNumber":69,"author":{"gitId":"chiageng"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-03-08"},{"lineNumber":70,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":71,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":72,"author":{"gitId":"chiageng"},"content":"}","lastModifiedDate":"2024-03-08"}],"authorContributionMap":{"chiageng":71,"jamessinmaojun":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":"jamessinmaojun"},"content":"import static seedu.address.logic.messages.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"jamessinmaojun"},"content":"import static seedu.address.logic.messages.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2024-03-18"},{"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":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"Joshy837"},"content":"import seedu.address.logic.commands.AddMaintainerCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"Joshy837"},"content":"import seedu.address.logic.commands.AddStaffCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"Joshy837"},"content":"import seedu.address.logic.commands.AddSupplierCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"Joshy837"},"content":"import seedu.address.logic.commands.EditMaintainerCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"Joshy837"},"content":"import seedu.address.logic.commands.EditStaffCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"Joshy837"},"content":"import seedu.address.logic.commands.EditSupplierCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"jannaleong"},"content":"import seedu.address.logic.commands.NoteCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"jannaleong"},"content":"import seedu.address.logic.commands.SearchCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":49,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":57,"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":58,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":62,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":67,"author":{"gitId":"chiageng"},"content":" case AddStaffCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-08"},{"lineNumber":68,"author":{"gitId":"chiageng"},"content":" return new AddStaffCommandParser().parse(arguments);","lastModifiedDate":"2024-03-08"},{"lineNumber":69,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":70,"author":{"gitId":"chiageng"},"content":" case AddSupplierCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-08"},{"lineNumber":71,"author":{"gitId":"chiageng"},"content":" return new AddSupplierCommandParser().parse(arguments);","lastModifiedDate":"2024-03-08"},{"lineNumber":72,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":73,"author":{"gitId":"chiageng"},"content":" case AddMaintainerCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-08"},{"lineNumber":74,"author":{"gitId":"chiageng"},"content":" return new AddMaintainerCommandParser().parse(arguments);","lastModifiedDate":"2024-03-08"},{"lineNumber":75,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":79,"author":{"gitId":"yleeyilin"},"content":" case EditStaffCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"yleeyilin"},"content":" return new EditStaffCommandParser().parse(arguments);","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"yleeyilin"},"content":" case EditSupplierCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"yleeyilin"},"content":" return new EditSupplierCommandParser().parse(arguments);","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"yleeyilin"},"content":" case EditMaintainerCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"yleeyilin"},"content":" return new EditMaintainerCommandParser().parse(arguments);","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":88,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":91,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":92,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":94,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":95,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":97,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":98,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":103,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26"},{"lineNumber":104,"author":{"gitId":"jannaleong"},"content":" return new HelpCommandParser().parse(arguments);","lastModifiedDate":"2024-03-24"},{"lineNumber":105,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":106,"author":{"gitId":"Joshy837"},"content":" case SearchCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-16"},{"lineNumber":107,"author":{"gitId":"Joshy837"},"content":" return new SearchCommandParser().parse(arguments);","lastModifiedDate":"2024-03-16"},{"lineNumber":108,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":109,"author":{"gitId":"jannaleong"},"content":" case NoteCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-18"},{"lineNumber":110,"author":{"gitId":"jannaleong"},"content":" return new NoteCommandParser().parse(arguments);","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26"},{"lineNumber":113,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29"},{"lineNumber":114,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":118,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"Joshy837":9,"jamessinmaojun":2,"chiageng":9,"jannaleong":6,"-":83,"yleeyilin":9}},{"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":"jamessinmaojun"},"content":"import seedu.address.logic.messages.Messages;","lastModifiedDate":"2024-03-18"},{"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":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"Joshy837"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"Joshy837"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"Joshy837"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"Joshy837"},"content":" return true;","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"Joshy837"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"Joshy837"},"content":" if (!(other instanceof ArgumentMultimap)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"Joshy837"},"content":" return false;","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"Joshy837"},"content":" ArgumentMultimap otherArgumentMultimap \u003d (ArgumentMultimap) other;","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"Joshy837"},"content":" return argMultimap.equals(otherArgumentMultimap.argMultimap);","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"yleeyilin"},"content":" * Returns a string implementation of Argument Multi Map","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"yleeyilin"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"yleeyilin"},"content":" public String toString() {","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"yleeyilin"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"yleeyilin"},"content":" sb.append(\"ArgumentMultimap{\");","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"yleeyilin"},"content":" for (Map.Entry\u003cPrefix, List\u003cString\u003e\u003e entry : argMultimap.entrySet()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"yleeyilin"},"content":" sb.append(entry.getKey()).append(\"\u003d\").append(entry.getValue()).append(\", \");","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"yleeyilin"},"content":" if (!argMultimap.isEmpty()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"yleeyilin"},"content":" sb.setLength(sb.length() - 2);","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":109,"author":{"gitId":"yleeyilin"},"content":" sb.append(\"}\");","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"yleeyilin"},"content":" return sb.toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-08"}],"authorContributionMap":{"Joshy837":15,"jamessinmaojun":1,"-":77,"yleeyilin":19}},{"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":"chiageng"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"; name : \");","lastModifiedDate":"2024-03-08"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"; phone : \");","lastModifiedDate":"2024-03-08"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"; email : \");","lastModifiedDate":"2024-03-08"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"; address : \");","lastModifiedDate":"2024-03-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":" public static final Prefix PREFIX_EMPLOYMENT \u003d new Prefix(\"; employment : \");","lastModifiedDate":"2024-03-08"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":" public static final Prefix PREFIX_SALARY \u003d new Prefix(\"; salary : \");","lastModifiedDate":"2024-03-08"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":" public static final Prefix PREFIX_PRODUCT \u003d new Prefix(\"; product : \");","lastModifiedDate":"2024-03-08"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":" public static final Prefix PREFIX_PRICE \u003d new Prefix(\"; price : \");","lastModifiedDate":"2024-03-08"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":" public static final Prefix PREFIX_SKILL \u003d new Prefix(\"; skill : \");","lastModifiedDate":"2024-03-08"},{"lineNumber":20,"author":{"gitId":"chiageng"},"content":" public static final Prefix PREFIX_COMMISSION \u003d new Prefix(\"; commission : \");","lastModifiedDate":"2024-03-08"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":22,"author":{"gitId":"yleeyilin"},"content":" public static final Prefix PREFIX_FIELD \u003d new Prefix(\"; field : \");","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":" public static final Prefix PREFIX_NOTE \u003d new Prefix(\"; note : \");","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"jannaleong"},"content":" public static final Prefix PREFIX_HELP \u003d new Prefix(\"; command : \");","lastModifiedDate":"2024-03-24"},{"lineNumber":25,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"Joshy837"},"content":" public static final Prefix[] PREFIX_COLLECTION \u003d new Prefix[] {","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"Joshy837"},"content":" PREFIX_NAME,","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"Joshy837"},"content":" PREFIX_PHONE,","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"Joshy837"},"content":" PREFIX_EMAIL,","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"Joshy837"},"content":" PREFIX_ADDRESS,","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"Joshy837"},"content":" PREFIX_TAG,","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"Joshy837"},"content":" PREFIX_SALARY,","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"Joshy837"},"content":" PREFIX_EMPLOYMENT,","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"Joshy837"},"content":" PREFIX_PRICE,","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"Joshy837"},"content":" PREFIX_PRODUCT,","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"Joshy837"},"content":" PREFIX_SKILL,","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"Joshy837"},"content":" PREFIX_COMMISSION,","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"jannaleong"},"content":" PREFIX_NOTE,","lastModifiedDate":"2024-03-24"},{"lineNumber":39,"author":{"gitId":"jannaleong"},"content":" PREFIX_HELP","lastModifiedDate":"2024-03-24"},{"lineNumber":40,"author":{"gitId":"jannaleong"},"content":" };","lastModifiedDate":"2024-03-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"Joshy837":13,"chiageng":11,"jannaleong":5,"-":11,"yleeyilin":1}},{"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":"jamessinmaojun"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"jamessinmaojun"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"jamessinmaojun"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"jamessinmaojun"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":8,"author":{"gitId":"jamessinmaojun"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":11,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.DeleteMessages;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":13,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new DeleteCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class DeleteCommandParser implements Parser\u003cDeleteCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * and returns a DeleteCommand object for execution.","lastModifiedDate":"2019-05-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public DeleteCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":26,"author":{"gitId":"jamessinmaojun"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_NAME);","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"jamessinmaojun"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME) || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"jamessinmaojun"},"content":" throw new ParseException(String.format(DeleteMessages.MESSAGE_DELETE_MISSING_NAME,","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"jamessinmaojun"},"content":" DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":32,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"jamessinmaojun"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"jamessinmaojun"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"jamessinmaojun"},"content":" return new DeleteCommand(name);","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":39,"author":{"gitId":"jamessinmaojun"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"jamessinmaojun"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"jamessinmaojun"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"jamessinmaojun"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"jamessinmaojun"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"jamessinmaojun"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"jamessinmaojun":24,"-":22}},{"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":"jamessinmaojun"},"content":"import static seedu.address.logic.messages.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-18"},{"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":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FIELD;","lastModifiedDate":"2024-03-17"},{"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":"","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":"yleeyilin"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-17"},{"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":"yleeyilin"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"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":"jamessinmaojun"},"content":"import seedu.address.logic.messages.EditMessages;","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":22,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":36,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":38,"author":{"gitId":"yleeyilin"},"content":" Name name;","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"yleeyilin"},"content":" String fieldArgs;","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"yleeyilin"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_FIELD);","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"jamessinmaojun"},"content":" // check for missing name","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"jamessinmaojun"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"jamessinmaojun"},"content":" throw new ParseException(String.format(EditMessages.MESSAGE_EDIT_MISSING_NAME,","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"jamessinmaojun"},"content":" EditCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"yleeyilin"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_FIELD)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"jamessinmaojun"},"content":" throw new ParseException(String.format(EditMessages.MESSAGE_EDIT_MISSING_FIELD,","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"jamessinmaojun"},"content":" EditCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"yleeyilin"},"content":" name \u003d mapName(argMultimap);","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"yleeyilin"},"content":" fieldArgs \u003d mapFields(argMultimap);","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":58,"author":{"gitId":"yleeyilin"},"content":" ArgumentMultimap fieldArgMultimap \u003d","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"yleeyilin"},"content":" ArgumentTokenizer.tokenize(fieldArgs, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"yleeyilin"},"content":" fieldArgMultimap.verifyNoDuplicatePrefixesFor(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"jamessinmaojun"},"content":" EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"jamessinmaojun"},"content":" editPersonDescriptor \u003d editPersonDescription(fieldArgMultimap);","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"jamessinmaojun"},"content":" throw new ParseException(String.format(EditMessages.MESSAGE_EDIT_INVALID_FIELD, pe.getMessage()));","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"yleeyilin"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"jamessinmaojun"},"content":" throw new ParseException(EditMessages.MESSAGE_EDIT_EMPTY_FIELD);","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"yleeyilin"},"content":" Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"yleeyilin"},"content":" tags.add(new Tag(\"other\"));","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"yleeyilin"},"content":" editPersonDescriptor.setTags(tags);","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":78,"author":{"gitId":"yleeyilin"},"content":" return new EditCommand(name, editPersonDescriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":80,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"yleeyilin"},"content":" * Returns name value using PREFIX.","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"yleeyilin"},"content":" * @param argMultimap Object that contains mapping of prefix to value.","lastModifiedDate":"2024-03-19"},{"lineNumber":84,"author":{"gitId":"yleeyilin"},"content":" * @return Returns object representing name.","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"yleeyilin"},"content":" * @throws ParseException Thrown when command is in invalid format.","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"yleeyilin"},"content":" public Name mapName(ArgumentMultimap argMultimap) throws ParseException {","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"yleeyilin"},"content":" try {","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"yleeyilin"},"content":" return ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"yleeyilin"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-19"},{"lineNumber":91,"author":{"gitId":"jamessinmaojun"},"content":" throw new ParseException(String.format(EditMessages.MESSAGE_EDIT_INVALID_NAME, pe.getMessage()));","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":95,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"yleeyilin"},"content":" * Returns field values using PREFIX.","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"yleeyilin"},"content":" * @param argMultimap Object that contains mapping of prefix to value.","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"yleeyilin"},"content":" * @return Returns object representing the respective fields.","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"yleeyilin"},"content":" * @throws ParseException Thrown when command is in invalid format.","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"yleeyilin"},"content":" public String mapFields(ArgumentMultimap argMultimap) throws ParseException {","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"yleeyilin"},"content":" try {","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"yleeyilin"},"content":" return ParserUtil.parseField(argMultimap.getValue(PREFIX_FIELD).get());","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"yleeyilin"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"yleeyilin"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-03-19"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":107,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":108,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":110,"author":{"gitId":"yleeyilin"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"yleeyilin"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":113,"author":{"gitId":"yleeyilin"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"yleeyilin"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-03-18"},{"lineNumber":115,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"yleeyilin"},"content":" * Edits the description of a Person.","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"yleeyilin"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"yleeyilin"},"content":" * @param fieldArgMultimap The mapping of field arguments into different specific fields.","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"yleeyilin"},"content":" * @return EditPersonDescriptor that contains the new values from the user.","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"yleeyilin"},"content":" * @throws ParseException Indicates the invalid format that users might have entered.","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"yleeyilin"},"content":" private EditPersonDescriptor editPersonDescription(ArgumentMultimap fieldArgMultimap) throws ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"yleeyilin"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"yleeyilin"},"content":" if (fieldArgMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"yleeyilin"},"content":" editPersonDescriptor.setPhone(ParserUtil.parsePhone(fieldArgMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2024-03-17"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":130,"author":{"gitId":"yleeyilin"},"content":" if (fieldArgMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"yleeyilin"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(fieldArgMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":133,"author":{"gitId":"yleeyilin"},"content":" if (fieldArgMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"yleeyilin"},"content":" editPersonDescriptor.setAddress(ParserUtil.parseAddress(fieldArgMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2024-03-17"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":137,"author":{"gitId":"yleeyilin"},"content":" return editPersonDescriptor;","lastModifiedDate":"2024-03-17"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":140,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":141,"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":142,"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":143,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07"},{"lineNumber":144,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":145,"author":{"gitId":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":146,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":148,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":149,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":151,"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":152,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":155,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"jamessinmaojun":16,"-":67,"yleeyilin":72}},{"path":"src/main/java/seedu/address/logic/parser/EditMaintainerCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yleeyilin"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"yleeyilin"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"jamessinmaojun"},"content":"import static seedu.address.logic.messages.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COMMISSION;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FIELD;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SKILL;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"yleeyilin"},"content":"import java.util.Collection;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"yleeyilin"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"yleeyilin"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"yleeyilin"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"yleeyilin"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"yleeyilin"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.logic.commands.EditMaintainerCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.logic.commands.EditMaintainerCommand.EditMaintainerDescriptor;","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.EditMessages;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"yleeyilin"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"yleeyilin"},"content":" * Parses input arguments and creates a new EditMaintainerCommand object","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"yleeyilin"},"content":"public class EditMaintainerCommandParser implements Parser\u003cEditMaintainerCommand\u003e {","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"yleeyilin"},"content":" * Parses the given {@code String} of arguments in the context of the EditMaintainerCommand","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"yleeyilin"},"content":" * and returns an EditMaintainerCommand object for execution.","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"yleeyilin"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"yleeyilin"},"content":" public EditMaintainerCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"yleeyilin"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"yleeyilin"},"content":" Name name;","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"yleeyilin"},"content":" String fieldArgs;","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"yleeyilin"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_FIELD);","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"jamessinmaojun"},"content":" // check for missing name","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"jamessinmaojun"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"jamessinmaojun"},"content":" throw new ParseException(String.format(EditMessages.MESSAGE_EDIT_MISSING_NAME,","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"jamessinmaojun"},"content":" EditMaintainerCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"yleeyilin"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_FIELD)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"jamessinmaojun"},"content":" throw new ParseException(String.format(EditMessages.MESSAGE_EDIT_MISSING_FIELD,","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"yleeyilin"},"content":" EditMaintainerCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"yleeyilin"},"content":" name \u003d mapName(argMultimap);","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"yleeyilin"},"content":" fieldArgs \u003d mapFields(argMultimap);","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"yleeyilin"},"content":" ArgumentMultimap fieldArgMultimap \u003d ArgumentTokenizer.tokenize(fieldArgs, PREFIX_NAME,","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"yleeyilin"},"content":" PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_SKILL, PREFIX_COMMISSION);","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"yleeyilin"},"content":" fieldArgMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"yleeyilin"},"content":" PREFIX_SKILL, PREFIX_COMMISSION);","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"jamessinmaojun"},"content":" EditMaintainerDescriptor editMaintainerDescriptor;","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"jamessinmaojun"},"content":" try {","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"jamessinmaojun"},"content":" editMaintainerDescriptor \u003d editMaintainerDescription(fieldArgMultimap);","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"jamessinmaojun"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"jamessinmaojun"},"content":" throw new ParseException(String.format(EditMessages.MESSAGE_EDIT_INVALID_FIELD, pe.getMessage()));","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"yleeyilin"},"content":" if (!editMaintainerDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"jamessinmaojun"},"content":" throw new ParseException(EditMessages.MESSAGE_EDIT_EMPTY_FIELD);","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"yleeyilin"},"content":" Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"yleeyilin"},"content":" tags.add(new Tag(\"maintainer\"));","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"yleeyilin"},"content":" editMaintainerDescriptor.setTags(tags);","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"yleeyilin"},"content":" return new EditMaintainerCommand(name, editMaintainerDescriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":84,"author":{"gitId":"yleeyilin"},"content":" * Returns name value using PREFIX.","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"yleeyilin"},"content":" * @param argMultimap Object that contains mapping of prefix to value.","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"yleeyilin"},"content":" * @return Returns object representing name.","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"yleeyilin"},"content":" * @throws ParseException Thrown when command is in invalid format.","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"yleeyilin"},"content":" public Name mapName(ArgumentMultimap argMultimap) throws ParseException {","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"yleeyilin"},"content":" try {","lastModifiedDate":"2024-03-19"},{"lineNumber":91,"author":{"gitId":"yleeyilin"},"content":" return ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2024-03-19"},{"lineNumber":92,"author":{"gitId":"yleeyilin"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"jamessinmaojun"},"content":" throw new ParseException(String.format(EditMessages.MESSAGE_EDIT_INVALID_NAME, pe.getMessage()));","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":95,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"yleeyilin"},"content":" * Returns field values using PREFIX.","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"yleeyilin"},"content":" * @param argMultimap Object that contains mapping of prefix to value.","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"yleeyilin"},"content":" * @return Returns object representing the respective fields.","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"yleeyilin"},"content":" * @throws ParseException Thrown when command is in invalid format.","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"yleeyilin"},"content":" public String mapFields(ArgumentMultimap argMultimap) throws ParseException {","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"yleeyilin"},"content":" try {","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"yleeyilin"},"content":" return ParserUtil.parseField(argMultimap.getValue(PREFIX_FIELD).get());","lastModifiedDate":"2024-03-19"},{"lineNumber":106,"author":{"gitId":"yleeyilin"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-19"},{"lineNumber":107,"author":{"gitId":"yleeyilin"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-19"},{"lineNumber":108,"author":{"gitId":"yleeyilin"},"content":" EditMaintainerCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":110,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":111,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":112,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":113,"author":{"gitId":"yleeyilin"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"yleeyilin"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-03-18"},{"lineNumber":115,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"yleeyilin"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"yleeyilin"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-03-18"},{"lineNumber":118,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":119,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":120,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"yleeyilin"},"content":" * Edits the description of a Maintainer.","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"yleeyilin"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"yleeyilin"},"content":" * @param fieldArgMultimap The mapping of field arguments into different specific fields.","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"yleeyilin"},"content":" * @return EditMaintainerDescriptor that contains the new values from the user.","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"yleeyilin"},"content":" * @throws ParseException Indicates the invalid format that users might have entered.","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"yleeyilin"},"content":" private EditMaintainerDescriptor editMaintainerDescription(","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"yleeyilin"},"content":" ArgumentMultimap fieldArgMultimap) throws ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":129,"author":{"gitId":"yleeyilin"},"content":" EditMaintainerDescriptor editMaintainerDescriptor \u003d new EditMaintainerDescriptor();","lastModifiedDate":"2024-03-17"},{"lineNumber":130,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"yleeyilin"},"content":" if (fieldArgMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"yleeyilin"},"content":" editMaintainerDescriptor.setPhone(ParserUtil.parsePhone(fieldArgMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"yleeyilin"},"content":" if (fieldArgMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":135,"author":{"gitId":"yleeyilin"},"content":" editMaintainerDescriptor.setEmail(ParserUtil.parseEmail(fieldArgMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2024-03-17"},{"lineNumber":136,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"yleeyilin"},"content":" if (fieldArgMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":138,"author":{"gitId":"yleeyilin"},"content":" editMaintainerDescriptor.setAddress(ParserUtil.parseAddress(","lastModifiedDate":"2024-03-17"},{"lineNumber":139,"author":{"gitId":"yleeyilin"},"content":" fieldArgMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2024-03-17"},{"lineNumber":140,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":141,"author":{"gitId":"yleeyilin"},"content":" if (fieldArgMultimap.getValue(PREFIX_SKILL).isPresent()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"yleeyilin"},"content":" editMaintainerDescriptor.setSkill(ParserUtil.parseSkill(fieldArgMultimap.getValue(PREFIX_SKILL).get()));","lastModifiedDate":"2024-03-17"},{"lineNumber":143,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":144,"author":{"gitId":"yleeyilin"},"content":" if (fieldArgMultimap.getValue(PREFIX_COMMISSION).isPresent()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":145,"author":{"gitId":"yleeyilin"},"content":" editMaintainerDescriptor.setCommission(ParserUtil.parseCommission(","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"yleeyilin"},"content":" fieldArgMultimap.getValue(PREFIX_COMMISSION).get()));","lastModifiedDate":"2024-03-17"},{"lineNumber":147,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":148,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":149,"author":{"gitId":"yleeyilin"},"content":" return editMaintainerDescriptor;","lastModifiedDate":"2024-03-17"},{"lineNumber":150,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":151,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":152,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":153,"author":{"gitId":"yleeyilin"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e} if {@code tags} is non-empty.","lastModifiedDate":"2024-03-17"},{"lineNumber":154,"author":{"gitId":"yleeyilin"},"content":" * If {@code tags} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2024-03-17"},{"lineNumber":155,"author":{"gitId":"yleeyilin"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2024-03-17"},{"lineNumber":156,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":157,"author":{"gitId":"yleeyilin"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":158,"author":{"gitId":"yleeyilin"},"content":" assert tags !\u003d null;","lastModifiedDate":"2024-03-17"},{"lineNumber":159,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":160,"author":{"gitId":"yleeyilin"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":161,"author":{"gitId":"yleeyilin"},"content":" return Optional.empty();","lastModifiedDate":"2024-03-17"},{"lineNumber":162,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":163,"author":{"gitId":"yleeyilin"},"content":" Collection\u003cString\u003e tagSet \u003d tags.size() \u003d\u003d 1 \u0026\u0026 tags.contains(\"\") ? Collections.emptySet() : tags;","lastModifiedDate":"2024-03-17"},{"lineNumber":164,"author":{"gitId":"yleeyilin"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2024-03-17"},{"lineNumber":165,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":166,"author":{"gitId":"yleeyilin"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"jamessinmaojun":20,"yleeyilin":146}},{"path":"src/main/java/seedu/address/logic/parser/EditStaffCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yleeyilin"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"yleeyilin"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"jamessinmaojun"},"content":"import static seedu.address.logic.messages.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMPLOYMENT;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FIELD;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SALARY;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"yleeyilin"},"content":"import java.util.Collection;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"yleeyilin"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"yleeyilin"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"yleeyilin"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"yleeyilin"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"yleeyilin"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.logic.commands.EditStaffCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.logic.commands.EditStaffCommand.EditStaffDescriptor;","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.EditMessages;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"yleeyilin"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"yleeyilin"},"content":" * Parses input arguments and creates a new EditStaffCommand object","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"yleeyilin"},"content":"public class EditStaffCommandParser implements Parser\u003cEditStaffCommand\u003e {","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"yleeyilin"},"content":" * Parses the given {@code String} of arguments in the context of the EditStaffCommand","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"yleeyilin"},"content":" * and returns an EditStaffCommand object for execution.","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"yleeyilin"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"yleeyilin"},"content":" public EditStaffCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"yleeyilin"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"yleeyilin"},"content":" Name name;","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"yleeyilin"},"content":" String fieldArgs;","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"yleeyilin"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_FIELD);","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"jamessinmaojun"},"content":" // check for missing name","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"jamessinmaojun"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"jamessinmaojun"},"content":" throw new ParseException(String.format(EditMessages.MESSAGE_EDIT_MISSING_NAME,","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"jamessinmaojun"},"content":" EditStaffCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"yleeyilin"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_FIELD)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"jamessinmaojun"},"content":" throw new ParseException(String.format(EditMessages.MESSAGE_EDIT_MISSING_FIELD,","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"jamessinmaojun"},"content":" EditStaffCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-22"},{"lineNumber":54,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"yleeyilin"},"content":" name \u003d mapName(argMultimap);","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"yleeyilin"},"content":" fieldArgs \u003d mapFields(argMultimap);","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"yleeyilin"},"content":" ArgumentMultimap fieldArgMultimap \u003d","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"yleeyilin"},"content":" ArgumentTokenizer.tokenize(fieldArgs, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"yleeyilin"},"content":" PREFIX_EMPLOYMENT, PREFIX_SALARY);","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"yleeyilin"},"content":" fieldArgMultimap.verifyNoDuplicatePrefixesFor(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"yleeyilin"},"content":" PREFIX_EMPLOYMENT, PREFIX_SALARY);","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"jamessinmaojun"},"content":" EditStaffDescriptor editStaffDescriptor;","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"jamessinmaojun"},"content":" try {","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"jamessinmaojun"},"content":" editStaffDescriptor \u003d editStaffDescription(fieldArgMultimap);","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"jamessinmaojun"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"jamessinmaojun"},"content":" throw new ParseException(String.format(EditMessages.MESSAGE_EDIT_INVALID_FIELD, pe.getMessage()));","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"yleeyilin"},"content":" if (!editStaffDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"jamessinmaojun"},"content":" throw new ParseException(EditMessages.MESSAGE_EDIT_EMPTY_FIELD);","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"yleeyilin"},"content":" Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"yleeyilin"},"content":" tags.add(new Tag(\"staff\"));","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"yleeyilin"},"content":" editStaffDescriptor.setTags(tags);","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"yleeyilin"},"content":" return new EditStaffCommand(name, editStaffDescriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"yleeyilin"},"content":" * Returns name value using PREFIX.","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"yleeyilin"},"content":" * @param argMultimap Object that contains mapping of prefix to value.","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"yleeyilin"},"content":" * @return Returns object representing name.","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"yleeyilin"},"content":" * @throws ParseException Thrown when command is in invalid format.","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"yleeyilin"},"content":" public Name mapName(ArgumentMultimap argMultimap) throws ParseException {","lastModifiedDate":"2024-03-19"},{"lineNumber":91,"author":{"gitId":"yleeyilin"},"content":" try {","lastModifiedDate":"2024-03-19"},{"lineNumber":92,"author":{"gitId":"yleeyilin"},"content":" return ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"yleeyilin"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"jamessinmaojun"},"content":" throw new ParseException(String.format(EditMessages.MESSAGE_EDIT_INVALID_NAME, pe.getMessage()));","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"yleeyilin"},"content":" * Returns field values using PREFIX.","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"yleeyilin"},"content":" * @param argMultimap Object that contains mapping of prefix to value.","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"yleeyilin"},"content":" * @return Returns object representing the respective fields.","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"yleeyilin"},"content":" * @throws ParseException Thrown when command is in invalid format.","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"yleeyilin"},"content":" public String mapFields(ArgumentMultimap argMultimap) throws ParseException {","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"yleeyilin"},"content":" try {","lastModifiedDate":"2024-03-19"},{"lineNumber":106,"author":{"gitId":"yleeyilin"},"content":" return ParserUtil.parseField(argMultimap.getValue(PREFIX_FIELD).get());","lastModifiedDate":"2024-03-19"},{"lineNumber":107,"author":{"gitId":"yleeyilin"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-19"},{"lineNumber":108,"author":{"gitId":"yleeyilin"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditStaffCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":110,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":111,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":112,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":113,"author":{"gitId":"yleeyilin"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"yleeyilin"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-03-18"},{"lineNumber":115,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"yleeyilin"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"yleeyilin"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-03-18"},{"lineNumber":118,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":119,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":120,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"yleeyilin"},"content":" * Edits the description of a Staff.","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"yleeyilin"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"yleeyilin"},"content":" * @param fieldArgMultimap The mapping of field arguments into different specific fields.","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"yleeyilin"},"content":" * @return EditStaffDescriptor that contains the new values from the user.","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"yleeyilin"},"content":" * @throws ParseException Indicates the invalid format that users might have entered.","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"yleeyilin"},"content":" private EditStaffDescriptor editStaffDescription(ArgumentMultimap fieldArgMultimap) throws ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"yleeyilin"},"content":" EditStaffDescriptor editStaffDescription \u003d new EditStaffDescriptor();","lastModifiedDate":"2024-03-17"},{"lineNumber":129,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":130,"author":{"gitId":"yleeyilin"},"content":" if (fieldArgMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"yleeyilin"},"content":" editStaffDescription.setPhone(ParserUtil.parsePhone(fieldArgMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"yleeyilin"},"content":" if (fieldArgMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"yleeyilin"},"content":" editStaffDescription.setEmail(ParserUtil.parseEmail(fieldArgMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2024-03-17"},{"lineNumber":135,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":136,"author":{"gitId":"yleeyilin"},"content":" if (fieldArgMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"yleeyilin"},"content":" editStaffDescription.setAddress(ParserUtil.parseAddress(fieldArgMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2024-03-17"},{"lineNumber":138,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":139,"author":{"gitId":"yleeyilin"},"content":" if (fieldArgMultimap.getValue(PREFIX_SALARY).isPresent()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":140,"author":{"gitId":"yleeyilin"},"content":" editStaffDescription.setSalary(ParserUtil.parseSalary(fieldArgMultimap.getValue(PREFIX_SALARY).get()));","lastModifiedDate":"2024-03-17"},{"lineNumber":141,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"yleeyilin"},"content":" if (fieldArgMultimap.getValue(PREFIX_EMPLOYMENT).isPresent()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":143,"author":{"gitId":"yleeyilin"},"content":" editStaffDescription.setEmployment(ParserUtil.parseEmployment(","lastModifiedDate":"2024-03-17"},{"lineNumber":144,"author":{"gitId":"yleeyilin"},"content":" fieldArgMultimap.getValue(PREFIX_EMPLOYMENT).get()));","lastModifiedDate":"2024-03-17"},{"lineNumber":145,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":147,"author":{"gitId":"yleeyilin"},"content":" return editStaffDescription;","lastModifiedDate":"2024-03-17"},{"lineNumber":148,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":149,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":150,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":151,"author":{"gitId":"yleeyilin"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e} if {@code tags} is non-empty.","lastModifiedDate":"2024-03-17"},{"lineNumber":152,"author":{"gitId":"yleeyilin"},"content":" * If {@code tags} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2024-03-17"},{"lineNumber":153,"author":{"gitId":"yleeyilin"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2024-03-17"},{"lineNumber":154,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":155,"author":{"gitId":"yleeyilin"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":156,"author":{"gitId":"yleeyilin"},"content":" assert tags !\u003d null;","lastModifiedDate":"2024-03-17"},{"lineNumber":157,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":158,"author":{"gitId":"yleeyilin"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":159,"author":{"gitId":"yleeyilin"},"content":" return Optional.empty();","lastModifiedDate":"2024-03-17"},{"lineNumber":160,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":161,"author":{"gitId":"yleeyilin"},"content":" Collection\u003cString\u003e tagSet \u003d tags.size() \u003d\u003d 1 \u0026\u0026 tags.contains(\"\") ? Collections.emptySet() : tags;","lastModifiedDate":"2024-03-17"},{"lineNumber":162,"author":{"gitId":"yleeyilin"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2024-03-17"},{"lineNumber":163,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":164,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":165,"author":{"gitId":"yleeyilin"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"jamessinmaojun":21,"yleeyilin":144}},{"path":"src/main/java/seedu/address/logic/parser/EditSupplierCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yleeyilin"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"yleeyilin"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"jamessinmaojun"},"content":"import static seedu.address.logic.messages.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FIELD;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PRICE;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PRODUCT;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"yleeyilin"},"content":"import java.util.Collection;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"yleeyilin"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"yleeyilin"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"yleeyilin"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"yleeyilin"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"yleeyilin"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.logic.commands.EditSupplierCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.logic.commands.EditSupplierCommand.EditSupplierDescriptor;","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.EditMessages;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"yleeyilin"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"yleeyilin"},"content":" * Parses input arguments and creates a new EditSupplierCommand object","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"yleeyilin"},"content":"public class EditSupplierCommandParser implements Parser\u003cEditSupplierCommand\u003e {","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"yleeyilin"},"content":" * Parses the given {@code String} of arguments in the context of the EditSupplierCommand","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"yleeyilin"},"content":" * and returns an EditSupplierCommand object for execution.","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"yleeyilin"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"yleeyilin"},"content":" public EditSupplierCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"yleeyilin"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"yleeyilin"},"content":" Name name;","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"yleeyilin"},"content":" String fieldArgs;","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"yleeyilin"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"yleeyilin"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_FIELD);","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"jamessinmaojun"},"content":" // check for missing name","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"jamessinmaojun"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"jamessinmaojun"},"content":" throw new ParseException(String.format(EditMessages.MESSAGE_EDIT_MISSING_NAME,","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"jamessinmaojun"},"content":" EditSupplierCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"yleeyilin"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_FIELD)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"jamessinmaojun"},"content":" throw new ParseException(String.format(EditMessages.MESSAGE_EDIT_MISSING_FIELD,","lastModifiedDate":"2024-03-22"},{"lineNumber":54,"author":{"gitId":"jamessinmaojun"},"content":" EditSupplierCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-22"},{"lineNumber":55,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"yleeyilin"},"content":" name \u003d mapName(argMultimap);","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"yleeyilin"},"content":" fieldArgs \u003d mapFields(argMultimap);","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"yleeyilin"},"content":" ArgumentMultimap fieldArgMultimap \u003d","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"yleeyilin"},"content":" ArgumentTokenizer.tokenize(fieldArgs, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"yleeyilin"},"content":" PREFIX_PRODUCT, PREFIX_PRICE);","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"yleeyilin"},"content":" fieldArgMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"jamessinmaojun"},"content":" EditSupplierDescriptor editSupplierDescriptor;","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"jamessinmaojun"},"content":" try {","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"jamessinmaojun"},"content":" editSupplierDescriptor \u003d editSupplierDescription(fieldArgMultimap);","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"jamessinmaojun"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"jamessinmaojun"},"content":" throw new ParseException(String.format(EditMessages.MESSAGE_EDIT_INVALID_FIELD, pe.getMessage()));","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"yleeyilin"},"content":" if (!editSupplierDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"jamessinmaojun"},"content":" throw new ParseException(EditMessages.MESSAGE_EDIT_EMPTY_FIELD);","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"yleeyilin"},"content":" Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"yleeyilin"},"content":" tags.add(new Tag(\"supplier\"));","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"yleeyilin"},"content":" editSupplierDescriptor.setTags(tags);","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"yleeyilin"},"content":" return new EditSupplierCommand(name, editSupplierDescriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"yleeyilin"},"content":" * Returns name value using PREFIX.","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"yleeyilin"},"content":" * @param argMultimap Object that contains mapping of prefix to value.","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"yleeyilin"},"content":" * @return Returns object representing name.","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"yleeyilin"},"content":" * @throws ParseException Thrown when command is in invalid format.","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"yleeyilin"},"content":" public Name mapName(ArgumentMultimap argMultimap) throws ParseException {","lastModifiedDate":"2024-03-19"},{"lineNumber":91,"author":{"gitId":"yleeyilin"},"content":" try {","lastModifiedDate":"2024-03-19"},{"lineNumber":92,"author":{"gitId":"yleeyilin"},"content":" return ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"yleeyilin"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"jamessinmaojun"},"content":" throw new ParseException(String.format(EditMessages.MESSAGE_EDIT_INVALID_NAME, pe.getMessage()));","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"yleeyilin"},"content":" * Returns field values using PREFIX.","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"yleeyilin"},"content":" * @param argMultimap Object that contains mapping of prefix to value.","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"yleeyilin"},"content":" * @return Returns object representing the respective fields.","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"yleeyilin"},"content":" * @throws ParseException Thrown when command is in invalid format.","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"yleeyilin"},"content":" public String mapFields(ArgumentMultimap argMultimap) throws ParseException {","lastModifiedDate":"2024-03-19"},{"lineNumber":106,"author":{"gitId":"yleeyilin"},"content":" try {","lastModifiedDate":"2024-03-19"},{"lineNumber":107,"author":{"gitId":"yleeyilin"},"content":" return ParserUtil.parseField(argMultimap.getValue(PREFIX_FIELD).get());","lastModifiedDate":"2024-03-19"},{"lineNumber":108,"author":{"gitId":"yleeyilin"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"yleeyilin"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-19"},{"lineNumber":110,"author":{"gitId":"yleeyilin"},"content":" EditSupplierCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-03-19"},{"lineNumber":111,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":112,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":113,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":114,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":115,"author":{"gitId":"yleeyilin"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"yleeyilin"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":118,"author":{"gitId":"yleeyilin"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-03-18"},{"lineNumber":119,"author":{"gitId":"yleeyilin"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-03-18"},{"lineNumber":120,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":121,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":122,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"yleeyilin"},"content":" * Edits the description of a Supplier.","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"yleeyilin"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"yleeyilin"},"content":" * @param fieldArgMultimap The mapping of field arguments into different specific fields.","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"yleeyilin"},"content":" * @return EditSupplierDescriptor that contains the new values from the user.","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"yleeyilin"},"content":" * @throws ParseException Indicates the invalid format that users might have entered.","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":129,"author":{"gitId":"yleeyilin"},"content":" private EditSupplierDescriptor editSupplierDescription(ArgumentMultimap fieldArgMultimap) throws ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":130,"author":{"gitId":"yleeyilin"},"content":" EditSupplierDescriptor editSupplierDescription \u003d new EditSupplierDescriptor();","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"yleeyilin"},"content":" if (fieldArgMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"yleeyilin"},"content":" editSupplierDescription.setPhone(ParserUtil.parsePhone(fieldArgMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":135,"author":{"gitId":"yleeyilin"},"content":" if (fieldArgMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":136,"author":{"gitId":"yleeyilin"},"content":" editSupplierDescription.setEmail(ParserUtil.parseEmail(fieldArgMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":138,"author":{"gitId":"yleeyilin"},"content":" if (fieldArgMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":139,"author":{"gitId":"yleeyilin"},"content":" editSupplierDescription.setAddress(ParserUtil.parseAddress(","lastModifiedDate":"2024-03-17"},{"lineNumber":140,"author":{"gitId":"yleeyilin"},"content":" fieldArgMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2024-03-17"},{"lineNumber":141,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"yleeyilin"},"content":" if (fieldArgMultimap.getValue(PREFIX_PRODUCT).isPresent()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":143,"author":{"gitId":"yleeyilin"},"content":" editSupplierDescription.setProduct(ParserUtil.parseProduct(","lastModifiedDate":"2024-03-17"},{"lineNumber":144,"author":{"gitId":"yleeyilin"},"content":" fieldArgMultimap.getValue(PREFIX_PRODUCT).get()));","lastModifiedDate":"2024-03-17"},{"lineNumber":145,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"yleeyilin"},"content":" if (fieldArgMultimap.getValue(PREFIX_PRICE).isPresent()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":147,"author":{"gitId":"yleeyilin"},"content":" editSupplierDescription.setPrice(ParserUtil.parsePrice(fieldArgMultimap.getValue(PREFIX_PRICE).get()));","lastModifiedDate":"2024-03-17"},{"lineNumber":148,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":149,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":150,"author":{"gitId":"yleeyilin"},"content":" return editSupplierDescription;","lastModifiedDate":"2024-03-17"},{"lineNumber":151,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":152,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":153,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":154,"author":{"gitId":"yleeyilin"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e} if {@code tags} is non-empty.","lastModifiedDate":"2024-03-17"},{"lineNumber":155,"author":{"gitId":"yleeyilin"},"content":" * If {@code tags} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2024-03-17"},{"lineNumber":156,"author":{"gitId":"yleeyilin"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2024-03-17"},{"lineNumber":157,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":158,"author":{"gitId":"yleeyilin"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":159,"author":{"gitId":"yleeyilin"},"content":" assert tags !\u003d null;","lastModifiedDate":"2024-03-17"},{"lineNumber":160,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":161,"author":{"gitId":"yleeyilin"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":162,"author":{"gitId":"yleeyilin"},"content":" return Optional.empty();","lastModifiedDate":"2024-03-17"},{"lineNumber":163,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":164,"author":{"gitId":"yleeyilin"},"content":" Collection\u003cString\u003e tagSet \u003d tags.size() \u003d\u003d 1 \u0026\u0026 tags.contains(\"\") ? Collections.emptySet() : tags;","lastModifiedDate":"2024-03-17"},{"lineNumber":165,"author":{"gitId":"yleeyilin"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2024-03-17"},{"lineNumber":166,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":167,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":168,"author":{"gitId":"yleeyilin"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"jamessinmaojun":21,"yleeyilin":147}},{"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":"jamessinmaojun"},"content":"import static seedu.address.logic.messages.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"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":{"jamessinmaojun":1,"-":32}},{"path":"src/main/java/seedu/address/logic/parser/HelpCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-24"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_HELP;","lastModifiedDate":"2024-03-24"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-24"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2024-03-24"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":"import seedu.address.logic.messages.HelpMessages;","lastModifiedDate":"2024-03-24"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-24"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":"/**","lastModifiedDate":"2024-03-24"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":" * Parses input arguments and creates a new HelpCommand object","lastModifiedDate":"2024-03-24"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-24"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":"public class HelpCommandParser implements Parser\u003cHelpCommand\u003e {","lastModifiedDate":"2024-03-24"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-24"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":" * Parses the given {@code String} of arguments in the context of the NoteCommand","lastModifiedDate":"2024-03-24"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":" * and returns a NoteCommand object for execution.","lastModifiedDate":"2024-03-24"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-24"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-24"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":" public HelpCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-24"},{"lineNumber":22,"author":{"gitId":"jannaleong"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args,","lastModifiedDate":"2024-03-24"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":" PREFIX_HELP);","lastModifiedDate":"2024-03-24"},{"lineNumber":24,"author":{"gitId":"jannaleong"},"content":" String commandType;","lastModifiedDate":"2024-03-24"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_HELP) || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-03-24"},{"lineNumber":26,"author":{"gitId":"jannaleong"},"content":" throw new ParseException(String.format(HelpMessages.MESSAGE_HELP_MISSING_COMMAND,","lastModifiedDate":"2024-03-24"},{"lineNumber":27,"author":{"gitId":"jannaleong"},"content":" HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-24"},{"lineNumber":28,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":29,"author":{"gitId":"jannaleong"},"content":" commandType \u003d ParserUtil.parseHelp(argMultimap.getValue(PREFIX_HELP).get());","lastModifiedDate":"2024-03-24"},{"lineNumber":30,"author":{"gitId":"jannaleong"},"content":" return new HelpCommand(commandType);","lastModifiedDate":"2024-03-24"},{"lineNumber":31,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":32,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":33,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-24"},{"lineNumber":34,"author":{"gitId":"jannaleong"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-03-24"},{"lineNumber":35,"author":{"gitId":"jannaleong"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-03-24"},{"lineNumber":36,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-24"},{"lineNumber":37,"author":{"gitId":"jannaleong"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-03-24"},{"lineNumber":38,"author":{"gitId":"jannaleong"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-03-24"},{"lineNumber":39,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":40,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":41,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-03-24"}],"authorContributionMap":{"jannaleong":41}},{"path":"src/main/java/seedu/address/logic/parser/NoteCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"import static seedu.address.logic.messages.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NOTE;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":"import seedu.address.logic.commands.NoteCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":"import seedu.address.model.person.Note;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":" * Parses input arguments and creates a new NoteCommand object","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":"public class NoteCommandParser implements Parser\u003cNoteCommand\u003e {","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":" * Parses the given {@code String} of arguments in the context of the NoteCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":" * and returns a NoteCommand object for execution.","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":" public NoteCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"jannaleong"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args,","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":" PREFIX_NAME, PREFIX_NOTE);","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"jannaleong"},"content":" Name name;","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"jannaleong"},"content":" Note note;","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"jannaleong"},"content":" try {","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"jannaleong"},"content":" name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"jannaleong"},"content":" note \u003d ParserUtil.parseNote(argMultimap.getValue(PREFIX_NOTE).get());","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"jannaleong"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"jannaleong"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"jannaleong"},"content":" NoteCommand.MESSAGE_USAGE), ive);","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"jannaleong"},"content":" return new NoteCommand(name, note);","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"jannaleong":39}},{"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":"jannaleong"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2024-03-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-09"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Commission;","lastModifiedDate":"2024-03-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-09"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Employment;","lastModifiedDate":"2024-03-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-09"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":"import seedu.address.model.person.Note;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-09"},{"lineNumber":20,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Price;","lastModifiedDate":"2024-03-09"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Product;","lastModifiedDate":"2024-03-09"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Salary;","lastModifiedDate":"2024-03-09"},{"lineNumber":23,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Skill;","lastModifiedDate":"2024-03-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10"},{"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":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-08"},{"lineNumber":107,"author":{"gitId":"chiageng"},"content":" * Parses a {@code String employment} into an {@code Employment}.","lastModifiedDate":"2024-03-08"},{"lineNumber":108,"author":{"gitId":"chiageng"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-08"},{"lineNumber":109,"author":{"gitId":"chiageng"},"content":" *","lastModifiedDate":"2024-03-08"},{"lineNumber":110,"author":{"gitId":"chiageng"},"content":" * @throws ParseException if the given {@code employment} is invalid.","lastModifiedDate":"2024-03-08"},{"lineNumber":111,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":112,"author":{"gitId":"chiageng"},"content":" public static Employment parseEmployment(String employment) throws ParseException {","lastModifiedDate":"2024-03-08"},{"lineNumber":113,"author":{"gitId":"chiageng"},"content":" requireNonNull(employment);","lastModifiedDate":"2024-03-08"},{"lineNumber":114,"author":{"gitId":"chiageng"},"content":" String trimmedEmployment \u003d employment.trim();","lastModifiedDate":"2024-03-08"},{"lineNumber":115,"author":{"gitId":"chiageng"},"content":" if (!Employment.isValidEmployment(trimmedEmployment)) {","lastModifiedDate":"2024-03-08"},{"lineNumber":116,"author":{"gitId":"chiageng"},"content":" throw new ParseException(Employment.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-08"},{"lineNumber":117,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":118,"author":{"gitId":"chiageng"},"content":" return new Employment(trimmedEmployment);","lastModifiedDate":"2024-03-08"},{"lineNumber":119,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":120,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":121,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-08"},{"lineNumber":122,"author":{"gitId":"chiageng"},"content":" * Parses a {@code String salary} into an {@code Salary}.","lastModifiedDate":"2024-03-08"},{"lineNumber":123,"author":{"gitId":"chiageng"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-08"},{"lineNumber":124,"author":{"gitId":"chiageng"},"content":" *","lastModifiedDate":"2024-03-08"},{"lineNumber":125,"author":{"gitId":"chiageng"},"content":" * @throws ParseException if the given {@code salary} is invalid.","lastModifiedDate":"2024-03-08"},{"lineNumber":126,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":127,"author":{"gitId":"chiageng"},"content":" public static Salary parseSalary(String salary) throws ParseException {","lastModifiedDate":"2024-03-08"},{"lineNumber":128,"author":{"gitId":"chiageng"},"content":" requireNonNull(salary);","lastModifiedDate":"2024-03-08"},{"lineNumber":129,"author":{"gitId":"chiageng"},"content":" String trimmedSalary \u003d salary.trim();","lastModifiedDate":"2024-03-08"},{"lineNumber":130,"author":{"gitId":"chiageng"},"content":" if (!Salary.isValidSalary(trimmedSalary)) {","lastModifiedDate":"2024-03-08"},{"lineNumber":131,"author":{"gitId":"chiageng"},"content":" throw new ParseException(Salary.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-08"},{"lineNumber":132,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":133,"author":{"gitId":"chiageng"},"content":" return new Salary(trimmedSalary);","lastModifiedDate":"2024-03-08"},{"lineNumber":134,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":135,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":136,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-08"},{"lineNumber":137,"author":{"gitId":"chiageng"},"content":" * Parses a {@code String product} into an {@code Product}.","lastModifiedDate":"2024-03-08"},{"lineNumber":138,"author":{"gitId":"chiageng"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-08"},{"lineNumber":139,"author":{"gitId":"chiageng"},"content":" *","lastModifiedDate":"2024-03-08"},{"lineNumber":140,"author":{"gitId":"chiageng"},"content":" * @throws ParseException if the given {@code product} is invalid.","lastModifiedDate":"2024-03-08"},{"lineNumber":141,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":142,"author":{"gitId":"chiageng"},"content":" public static Product parseProduct(String product) throws ParseException {","lastModifiedDate":"2024-03-08"},{"lineNumber":143,"author":{"gitId":"chiageng"},"content":" requireNonNull(product);","lastModifiedDate":"2024-03-08"},{"lineNumber":144,"author":{"gitId":"chiageng"},"content":" String trimmedProduct \u003d product.trim();","lastModifiedDate":"2024-03-08"},{"lineNumber":145,"author":{"gitId":"chiageng"},"content":" if (!Product.isValidProduct(trimmedProduct)) {","lastModifiedDate":"2024-03-08"},{"lineNumber":146,"author":{"gitId":"chiageng"},"content":" throw new ParseException(Product.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-08"},{"lineNumber":147,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":148,"author":{"gitId":"chiageng"},"content":" return new Product(trimmedProduct);","lastModifiedDate":"2024-03-08"},{"lineNumber":149,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":150,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":151,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-08"},{"lineNumber":152,"author":{"gitId":"chiageng"},"content":" * Parses a {@code String price} into an {@code Price}.","lastModifiedDate":"2024-03-08"},{"lineNumber":153,"author":{"gitId":"chiageng"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-08"},{"lineNumber":154,"author":{"gitId":"chiageng"},"content":" *","lastModifiedDate":"2024-03-08"},{"lineNumber":155,"author":{"gitId":"chiageng"},"content":" * @throws ParseException if the given {@code price} is invalid.","lastModifiedDate":"2024-03-08"},{"lineNumber":156,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":157,"author":{"gitId":"chiageng"},"content":" public static Price parsePrice(String price) throws ParseException {","lastModifiedDate":"2024-03-08"},{"lineNumber":158,"author":{"gitId":"chiageng"},"content":" requireNonNull(price);","lastModifiedDate":"2024-03-08"},{"lineNumber":159,"author":{"gitId":"chiageng"},"content":" String trimmedPrice \u003d price.trim();","lastModifiedDate":"2024-03-08"},{"lineNumber":160,"author":{"gitId":"chiageng"},"content":" if (!Price.isValidPrice(trimmedPrice)) {","lastModifiedDate":"2024-03-08"},{"lineNumber":161,"author":{"gitId":"chiageng"},"content":" throw new ParseException(Price.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-08"},{"lineNumber":162,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":163,"author":{"gitId":"chiageng"},"content":" return new Price(trimmedPrice);","lastModifiedDate":"2024-03-08"},{"lineNumber":164,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":165,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":166,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-08"},{"lineNumber":167,"author":{"gitId":"yleeyilin"},"content":" * Parses a {@code String skill} into an {@code Skill}.","lastModifiedDate":"2024-03-17"},{"lineNumber":168,"author":{"gitId":"chiageng"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-08"},{"lineNumber":169,"author":{"gitId":"chiageng"},"content":" *","lastModifiedDate":"2024-03-08"},{"lineNumber":170,"author":{"gitId":"chiageng"},"content":" * @throws ParseException if the given {@code skill} is invalid.","lastModifiedDate":"2024-03-08"},{"lineNumber":171,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":172,"author":{"gitId":"chiageng"},"content":" public static Skill parseSkill(String skill) throws ParseException {","lastModifiedDate":"2024-03-08"},{"lineNumber":173,"author":{"gitId":"chiageng"},"content":" requireNonNull(skill);","lastModifiedDate":"2024-03-08"},{"lineNumber":174,"author":{"gitId":"chiageng"},"content":" String trimmedSkill \u003d skill.trim();","lastModifiedDate":"2024-03-08"},{"lineNumber":175,"author":{"gitId":"chiageng"},"content":" if (!Skill.isValidSkill(trimmedSkill)) {","lastModifiedDate":"2024-03-08"},{"lineNumber":176,"author":{"gitId":"chiageng"},"content":" throw new ParseException(Skill.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-08"},{"lineNumber":177,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":178,"author":{"gitId":"chiageng"},"content":" return new Skill(trimmedSkill);","lastModifiedDate":"2024-03-08"},{"lineNumber":179,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":180,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":181,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-08"},{"lineNumber":182,"author":{"gitId":"yleeyilin"},"content":" * Parses a {@code String commission} into an {@code Commission}.","lastModifiedDate":"2024-03-17"},{"lineNumber":183,"author":{"gitId":"chiageng"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-08"},{"lineNumber":184,"author":{"gitId":"chiageng"},"content":" *","lastModifiedDate":"2024-03-08"},{"lineNumber":185,"author":{"gitId":"chiageng"},"content":" * @throws ParseException if the given {@code commission} is invalid.","lastModifiedDate":"2024-03-08"},{"lineNumber":186,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":187,"author":{"gitId":"chiageng"},"content":" public static Commission parseCommission(String commission) throws ParseException {","lastModifiedDate":"2024-03-08"},{"lineNumber":188,"author":{"gitId":"chiageng"},"content":" requireNonNull(commission);","lastModifiedDate":"2024-03-08"},{"lineNumber":189,"author":{"gitId":"chiageng"},"content":" String trimmedCommission \u003d commission.trim();","lastModifiedDate":"2024-03-08"},{"lineNumber":190,"author":{"gitId":"chiageng"},"content":" if (!Commission.isValidCommission(trimmedCommission)) {","lastModifiedDate":"2024-03-08"},{"lineNumber":191,"author":{"gitId":"chiageng"},"content":" throw new ParseException(Commission.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-08"},{"lineNumber":192,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":193,"author":{"gitId":"chiageng"},"content":" return new Commission(trimmedCommission);","lastModifiedDate":"2024-03-08"},{"lineNumber":194,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":195,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":196,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":197,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":198,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":199,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":200,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":201,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":202,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":203,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30"},{"lineNumber":204,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":205,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":206,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":208,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30"},{"lineNumber":209,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":211,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":212,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07"},{"lineNumber":213,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":214,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":215,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15"},{"lineNumber":216,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11"},{"lineNumber":217,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11"},{"lineNumber":218,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30"},{"lineNumber":219,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":220,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07"},{"lineNumber":221,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":222,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":223,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":224,"author":{"gitId":"yleeyilin"},"content":" * Parses a {@code String args} into an {@code String args}.","lastModifiedDate":"2024-03-17"},{"lineNumber":225,"author":{"gitId":"yleeyilin"},"content":" * Leading and trailing whitespaces and curly brackets will be trimmed.","lastModifiedDate":"2024-03-17"},{"lineNumber":226,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":227,"author":{"gitId":"yleeyilin"},"content":" public static String parseField(String args) throws ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":228,"author":{"gitId":"yleeyilin"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-17"},{"lineNumber":229,"author":{"gitId":"yleeyilin"},"content":" String trimmedFields \u003d args.replaceAll(\"[{}]\", \"\").trim();","lastModifiedDate":"2024-03-17"},{"lineNumber":230,"author":{"gitId":"yleeyilin"},"content":" return \" ; \" + trimmedFields;","lastModifiedDate":"2024-03-17"},{"lineNumber":231,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":232,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":233,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":234,"author":{"gitId":"jannaleong"},"content":" * Parses a {@code String note} into a {@code Note}.","lastModifiedDate":"2024-03-18"},{"lineNumber":235,"author":{"gitId":"jannaleong"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-18"},{"lineNumber":236,"author":{"gitId":"jannaleong"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":237,"author":{"gitId":"jannaleong"},"content":" * @throws ParseException if the given {@code note} is invalid.","lastModifiedDate":"2024-03-18"},{"lineNumber":238,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":239,"author":{"gitId":"jannaleong"},"content":" public static Note parseNote(String note) throws ParseException {","lastModifiedDate":"2024-03-18"},{"lineNumber":240,"author":{"gitId":"jannaleong"},"content":" requireNonNull(note);","lastModifiedDate":"2024-03-18"},{"lineNumber":241,"author":{"gitId":"jannaleong"},"content":" String trimmedNote \u003d note.trim();","lastModifiedDate":"2024-03-18"},{"lineNumber":242,"author":{"gitId":"jannaleong"},"content":" if (!Note.isValidNote(trimmedNote)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":243,"author":{"gitId":"jannaleong"},"content":" throw new ParseException(Note.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":244,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":245,"author":{"gitId":"jannaleong"},"content":" return new Note(trimmedNote);","lastModifiedDate":"2024-03-18"},{"lineNumber":246,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":247,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":248,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-24"},{"lineNumber":249,"author":{"gitId":"jannaleong"},"content":" * Parses a {@code String note}.","lastModifiedDate":"2024-03-24"},{"lineNumber":250,"author":{"gitId":"jannaleong"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-24"},{"lineNumber":251,"author":{"gitId":"jannaleong"},"content":" *","lastModifiedDate":"2024-03-24"},{"lineNumber":252,"author":{"gitId":"jannaleong"},"content":" * @throws ParseException if the given {@code commandType} is invalid.","lastModifiedDate":"2024-03-24"},{"lineNumber":253,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-24"},{"lineNumber":254,"author":{"gitId":"jannaleong"},"content":" public static String parseHelp(String commandType) throws ParseException {","lastModifiedDate":"2024-03-24"},{"lineNumber":255,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":256,"author":{"gitId":"jannaleong"},"content":" requireNonNull(commandType);","lastModifiedDate":"2024-03-24"},{"lineNumber":257,"author":{"gitId":"jannaleong"},"content":" String trimmedCommand \u003d commandType.trim();","lastModifiedDate":"2024-03-24"},{"lineNumber":258,"author":{"gitId":"jannaleong"},"content":" if (!HelpCommand.isValidCommandType(commandType)) {","lastModifiedDate":"2024-03-24"},{"lineNumber":259,"author":{"gitId":"jannaleong"},"content":" throw new ParseException(HelpCommand.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-24"},{"lineNumber":260,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":261,"author":{"gitId":"jannaleong"},"content":" return trimmedCommand;","lastModifiedDate":"2024-03-24"},{"lineNumber":262,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":263,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"chiageng":94,"jannaleong":33,"-":124,"yleeyilin":12}},{"path":"src/main/java/seedu/address/logic/parser/SearchCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Joshy837"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"Joshy837"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COLLECTION;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"Joshy837"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"Joshy837"},"content":"import seedu.address.logic.commands.SearchCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.SearchMessages;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"Joshy837"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"Joshy837"},"content":"import seedu.address.model.person.KeywordPredicate;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"Joshy837"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"Joshy837"},"content":" * Parses input arguments and creates a new SearchCommand object","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"Joshy837"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"Joshy837"},"content":"public class SearchCommandParser implements Parser\u003cSearchCommand\u003e {","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"Joshy837"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"Joshy837"},"content":" * Parses the given {@code String} of arguments in the context of the SearchCommand","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"Joshy837"},"content":" * and returns a SearchCommand object for execution.","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"Joshy837"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"Joshy837"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"Joshy837"},"content":" public SearchCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"Joshy837"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_COLLECTION);","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"Joshy837"},"content":" // invalid command syntax","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"Joshy837"},"content":" if (!argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"jamessinmaojun"},"content":" throw new ParseException(SearchMessages.MESSAGE_SEARCH_INVALID_FIELD);","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"Joshy837"},"content":" // no prefixes present","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"Joshy837"},"content":" if (!atLeastOnePrefixPresent(argMultimap, PREFIX_COLLECTION)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"jamessinmaojun"},"content":" throw new ParseException(SearchMessages.MESSAGE_SEARCH_MISSING_FIELD);","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"Joshy837"},"content":" // check for duplicate field entries","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"Joshy837"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_COLLECTION);","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"Joshy837"},"content":" return new SearchCommand(new KeywordPredicate(argMultimap));","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"Joshy837"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"Joshy837"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"Joshy837"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"Joshy837"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"Joshy837"},"content":" private static boolean atLeastOnePrefixPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"Joshy837"},"content":" return Stream.of(prefixes).anyMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"Joshy837"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"Joshy837":46,"jamessinmaojun":3}},{"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":"yleeyilin"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Maintainer;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":12,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Staff;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Supplier;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2017-08-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":" Predicate\u003cPerson\u003e PREDICATE_SHOW_ALL_PERSONS \u003d unused -\u003e true;","lastModifiedDate":"2018-01-10"},{"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":"-"},"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":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * Deletes the given person.","lastModifiedDate":"2018-08-07"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * The person must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":" void deletePerson(Person target);","lastModifiedDate":"2018-08-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Adds the given person.","lastModifiedDate":"2018-08-07"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * {@code person} must not already exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":75,"author":{"gitId":"-"},"content":" void addPerson(Person person);","lastModifiedDate":"2018-08-07"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} with {@code editedPerson}.","lastModifiedDate":"2017-06-07"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":80,"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":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" void setPerson(Person target, Person editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered person list */","lastModifiedDate":"2017-09-01"},{"lineNumber":85,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * Updates the filter of the filtered person list to filter by the given {@code predicate}.","lastModifiedDate":"2017-08-05"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":91,"author":{"gitId":"-"},"content":" void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate);","lastModifiedDate":"2018-01-10"},{"lineNumber":92,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"yleeyilin"},"content":" * Find the person by their name.","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"yleeyilin"},"content":" * @param targetName Refers to the name identifier.","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"yleeyilin"},"content":" * @return Person that matches the name.","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"yleeyilin"},"content":" * @throws CommandException Handles invalid person message.","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"yleeyilin"},"content":" Person findByName(Name targetName) throws CommandException;","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"yleeyilin"},"content":" * Find the maintainer by their name.","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"yleeyilin"},"content":" * @param targetName Refers to the name identifier.","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"yleeyilin"},"content":" * @return Maintainer that matches the name.","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"yleeyilin"},"content":" * @throws CommandException Handles invalid maintainer message.","lastModifiedDate":"2024-03-18"},{"lineNumber":106,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"yleeyilin"},"content":" Maintainer findMaintainerByName(Name targetName) throws CommandException;","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":109,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"yleeyilin"},"content":" * Find the staff by their name.","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"yleeyilin"},"content":" * @param targetName Refers to the name identifier.","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"yleeyilin"},"content":" * @return Staff that matches the name.","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"yleeyilin"},"content":" * @throws CommandException Handles invalid staff message.","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"yleeyilin"},"content":" Staff findStaffByName(Name targetName) throws CommandException;","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"yleeyilin"},"content":" * Find the supplier by their name.","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"yleeyilin"},"content":" * @param targetName Refers to the name identifier.","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"yleeyilin"},"content":" * @return Supplier that matches the name.","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"yleeyilin"},"content":" * @throws CommandException Handles invalid supplier message.","lastModifiedDate":"2024-03-18"},{"lineNumber":122,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"yleeyilin"},"content":" Supplier findSupplierByName(Name targetName) throws CommandException;","lastModifiedDate":"2024-03-18"},{"lineNumber":124,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"-":87,"yleeyilin":37}},{"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":"yleeyilin"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.EditMessages;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Maintainer;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":19,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Staff;","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Supplier;","lastModifiedDate":"2024-03-17"},{"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":"","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2018-01-10"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":42,"author":{"gitId":"-"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(this.addressBook.getPersonList());","lastModifiedDate":"2019-01-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22"},{"lineNumber":46,"author":{"gitId":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"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":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":53,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06"},{"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 ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return userPrefs;","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 GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","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":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","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 Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"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 void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","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":" //\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":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21"},{"lineNumber":93,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"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":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15"},{"lineNumber":104,"author":{"gitId":"-"},"content":" addressBook.removePerson(target);","lastModifiedDate":"2019-01-25"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":109,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":110,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":115,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" addressBook.setPerson(target, editedPerson);","lastModifiedDate":"2019-01-25"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":120,"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":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":123,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10"},{"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":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":128,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09"},{"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":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":133,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05"},{"lineNumber":134,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12"},{"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":"-"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons);","lastModifiedDate":"2023-07-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":154,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":155,"author":{"gitId":"yleeyilin"},"content":" * Find the person by their name.","lastModifiedDate":"2024-03-17"},{"lineNumber":156,"author":{"gitId":"yleeyilin"},"content":" * @param targetName Refers to the name identifier.","lastModifiedDate":"2024-03-17"},{"lineNumber":157,"author":{"gitId":"yleeyilin"},"content":" * @return Person that matches the name.","lastModifiedDate":"2024-03-17"},{"lineNumber":158,"author":{"gitId":"yleeyilin"},"content":" * @throws CommandException Handles invalid person message.","lastModifiedDate":"2024-03-18"},{"lineNumber":159,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":160,"author":{"gitId":"yleeyilin"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":161,"author":{"gitId":"yleeyilin"},"content":" public Person findByName(Name targetName) throws CommandException {","lastModifiedDate":"2024-03-18"},{"lineNumber":162,"author":{"gitId":"yleeyilin"},"content":" for (Person person: filteredPersons) {","lastModifiedDate":"2024-03-17"},{"lineNumber":163,"author":{"gitId":"yleeyilin"},"content":" Name name \u003d person.getName();","lastModifiedDate":"2024-03-17"},{"lineNumber":164,"author":{"gitId":"yleeyilin"},"content":" if (name.equals(targetName)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":165,"author":{"gitId":"yleeyilin"},"content":" if (!(person instanceof Supplier) \u0026\u0026 !(person instanceof Staff)","lastModifiedDate":"2024-03-18"},{"lineNumber":166,"author":{"gitId":"yleeyilin"},"content":" \u0026\u0026 !(person instanceof Maintainer)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":167,"author":{"gitId":"yleeyilin"},"content":" return person;","lastModifiedDate":"2024-03-17"},{"lineNumber":168,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":169,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":170,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":171,"author":{"gitId":"jamessinmaojun"},"content":" throw new CommandException(EditMessages.MESSAGE_INVALID_EDIT_PERSON);","lastModifiedDate":"2024-03-20"},{"lineNumber":172,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":173,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":174,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":175,"author":{"gitId":"yleeyilin"},"content":" * Find the maintainer by their name.","lastModifiedDate":"2024-03-17"},{"lineNumber":176,"author":{"gitId":"yleeyilin"},"content":" * @param targetName Refers to the name identifier.","lastModifiedDate":"2024-03-17"},{"lineNumber":177,"author":{"gitId":"yleeyilin"},"content":" * @return Maintainer that matches the name.","lastModifiedDate":"2024-03-17"},{"lineNumber":178,"author":{"gitId":"yleeyilin"},"content":" * @throws CommandException Handles invalid maintainer message.","lastModifiedDate":"2024-03-18"},{"lineNumber":179,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":180,"author":{"gitId":"yleeyilin"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":181,"author":{"gitId":"yleeyilin"},"content":" public Maintainer findMaintainerByName(Name targetName) throws CommandException {","lastModifiedDate":"2024-03-18"},{"lineNumber":182,"author":{"gitId":"yleeyilin"},"content":" for (Person person: filteredPersons) {","lastModifiedDate":"2024-03-17"},{"lineNumber":183,"author":{"gitId":"yleeyilin"},"content":" Name name \u003d person.getName();","lastModifiedDate":"2024-03-17"},{"lineNumber":184,"author":{"gitId":"yleeyilin"},"content":" if (name.equals(targetName) \u0026\u0026 person instanceof Maintainer) {","lastModifiedDate":"2024-03-17"},{"lineNumber":185,"author":{"gitId":"yleeyilin"},"content":" return (Maintainer) person;","lastModifiedDate":"2024-03-17"},{"lineNumber":186,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":187,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":188,"author":{"gitId":"jamessinmaojun"},"content":" throw new CommandException(EditMessages.MESSAGE_INVALID_EDIT_MAINTAINER);","lastModifiedDate":"2024-03-20"},{"lineNumber":189,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":190,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":191,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":192,"author":{"gitId":"yleeyilin"},"content":" * Find the staff by their name.","lastModifiedDate":"2024-03-17"},{"lineNumber":193,"author":{"gitId":"yleeyilin"},"content":" * @param targetName Refers to the name identifier.","lastModifiedDate":"2024-03-17"},{"lineNumber":194,"author":{"gitId":"yleeyilin"},"content":" * @return Staff that matches the name.","lastModifiedDate":"2024-03-17"},{"lineNumber":195,"author":{"gitId":"yleeyilin"},"content":" * @throws CommandException Handles invalid staff message.","lastModifiedDate":"2024-03-18"},{"lineNumber":196,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":197,"author":{"gitId":"yleeyilin"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":198,"author":{"gitId":"yleeyilin"},"content":" public Staff findStaffByName(Name targetName) throws CommandException {","lastModifiedDate":"2024-03-18"},{"lineNumber":199,"author":{"gitId":"yleeyilin"},"content":" for (Person person: filteredPersons) {","lastModifiedDate":"2024-03-17"},{"lineNumber":200,"author":{"gitId":"yleeyilin"},"content":" Name name \u003d person.getName();","lastModifiedDate":"2024-03-17"},{"lineNumber":201,"author":{"gitId":"jamessinmaojun"},"content":" if (name.equals(targetName) \u0026\u0026 person instanceof Staff) {","lastModifiedDate":"2024-03-20"},{"lineNumber":202,"author":{"gitId":"yleeyilin"},"content":" return (Staff) person;","lastModifiedDate":"2024-03-17"},{"lineNumber":203,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":204,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":205,"author":{"gitId":"jamessinmaojun"},"content":" throw new CommandException(EditMessages.MESSAGE_INVALID_EDIT_STAFF);","lastModifiedDate":"2024-03-20"},{"lineNumber":206,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":207,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":208,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":209,"author":{"gitId":"yleeyilin"},"content":" * Find the supplier by their name.","lastModifiedDate":"2024-03-17"},{"lineNumber":210,"author":{"gitId":"yleeyilin"},"content":" * @param targetName Refers to the name identifier.","lastModifiedDate":"2024-03-17"},{"lineNumber":211,"author":{"gitId":"yleeyilin"},"content":" * @return Supplier that matches the name.","lastModifiedDate":"2024-03-17"},{"lineNumber":212,"author":{"gitId":"yleeyilin"},"content":" * @throws CommandException Handles invalid supplier message.","lastModifiedDate":"2024-03-18"},{"lineNumber":213,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":214,"author":{"gitId":"yleeyilin"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":215,"author":{"gitId":"yleeyilin"},"content":" public Supplier findSupplierByName(Name targetName) throws CommandException {","lastModifiedDate":"2024-03-18"},{"lineNumber":216,"author":{"gitId":"yleeyilin"},"content":" for (Person person: filteredPersons) {","lastModifiedDate":"2024-03-17"},{"lineNumber":217,"author":{"gitId":"yleeyilin"},"content":" Name name \u003d person.getName();","lastModifiedDate":"2024-03-17"},{"lineNumber":218,"author":{"gitId":"jamessinmaojun"},"content":" if (name.equals(targetName) \u0026\u0026 person instanceof Supplier) {","lastModifiedDate":"2024-03-20"},{"lineNumber":219,"author":{"gitId":"yleeyilin"},"content":" return (Supplier) person;","lastModifiedDate":"2024-03-17"},{"lineNumber":220,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":221,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":222,"author":{"gitId":"jamessinmaojun"},"content":" throw new CommandException(EditMessages.MESSAGE_INVALID_EDIT_SUPPLIER);","lastModifiedDate":"2024-03-20"},{"lineNumber":223,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":224,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"jamessinmaojun":7,"-":148,"yleeyilin":69}},{"path":"src/main/java/seedu/address/model/person/Commission.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chiageng"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-08"},{"lineNumber":2,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":3,"author":{"gitId":"chiageng"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-08"},{"lineNumber":4,"author":{"gitId":"chiageng"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-08"},{"lineNumber":5,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":6,"author":{"gitId":"chiageng"},"content":"/**","lastModifiedDate":"2024-03-08"},{"lineNumber":7,"author":{"gitId":"chiageng"},"content":" * Represents a Maitainer\u0027s commission in the address book.","lastModifiedDate":"2024-03-08"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidCommission(String)}","lastModifiedDate":"2024-03-08"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"public class Commission {","lastModifiedDate":"2024-03-08"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-08"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":" \"Commision should in this format of ${amount}/hr\";","lastModifiedDate":"2024-03-08"},{"lineNumber":13,"author":{"gitId":"chiageng"},"content":" public static final String VALIDATION_REGEX \u003d \"^\\\\$\\\\d+/hr$\";","lastModifiedDate":"2024-03-08"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":" public final String value;","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-08"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":" * Constructs an {@code Commission}.","lastModifiedDate":"2024-03-08"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":" *","lastModifiedDate":"2024-03-08"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":" * @param value A valid commission.","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":" public Commission(String value) {","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":" requireNonNull(value);","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"chiageng"},"content":" checkArgument(isValidCommission(value), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":" this.value \u003d value;","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":26,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":27,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-08"},{"lineNumber":28,"author":{"gitId":"chiageng"},"content":" * Returns true if a given string is a valid commission.","lastModifiedDate":"2024-03-08"},{"lineNumber":29,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":30,"author":{"gitId":"chiageng"},"content":" public static boolean isValidCommission(String test) {","lastModifiedDate":"2024-03-08"},{"lineNumber":31,"author":{"gitId":"chiageng"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-08"},{"lineNumber":32,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":33,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":34,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-08"},{"lineNumber":35,"author":{"gitId":"chiageng"},"content":" public String toString() {","lastModifiedDate":"2024-03-08"},{"lineNumber":36,"author":{"gitId":"chiageng"},"content":" return value;","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":38,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":39,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-08"},{"lineNumber":40,"author":{"gitId":"chiageng"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-08"},{"lineNumber":41,"author":{"gitId":"chiageng"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-08"},{"lineNumber":42,"author":{"gitId":"chiageng"},"content":" return true;","lastModifiedDate":"2024-03-08"},{"lineNumber":43,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":44,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-08"},{"lineNumber":46,"author":{"gitId":"chiageng"},"content":" if (!(other instanceof Commission)) {","lastModifiedDate":"2024-03-08"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":" return false;","lastModifiedDate":"2024-03-08"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":" Commission otherCommission \u003d (Commission) other;","lastModifiedDate":"2024-03-08"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":" return value.equals(otherCommission.value);","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":53,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-08"},{"lineNumber":55,"author":{"gitId":"chiageng"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-08"},{"lineNumber":56,"author":{"gitId":"chiageng"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":58,"author":{"gitId":"chiageng"},"content":"}","lastModifiedDate":"2024-03-08"}],"authorContributionMap":{"chiageng":58}},{"path":"src/main/java/seedu/address/model/person/Employment.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chiageng"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-08"},{"lineNumber":2,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":3,"author":{"gitId":"chiageng"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-08"},{"lineNumber":4,"author":{"gitId":"chiageng"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-08"},{"lineNumber":5,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":6,"author":{"gitId":"chiageng"},"content":"/**","lastModifiedDate":"2024-03-08"},{"lineNumber":7,"author":{"gitId":"chiageng"},"content":" * Represents a Staff\u0027s employment status in the address book.","lastModifiedDate":"2024-03-08"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidEmployment(String)} )}","lastModifiedDate":"2024-03-08"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"public class Employment {","lastModifiedDate":"2024-03-08"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-08"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":" \"Employment should be either full-time or part-time\";","lastModifiedDate":"2024-03-08"},{"lineNumber":13,"author":{"gitId":"chiageng"},"content":" public static final String VALIDATION_REGEX1 \u003d \"part-time\";","lastModifiedDate":"2024-03-08"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":" public static final String VALIDATION_REGEX2 \u003d \"full-time\";","lastModifiedDate":"2024-03-08"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":" public final String value;","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-08"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":" * Constructs an {@code Employment}.","lastModifiedDate":"2024-03-08"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":" *","lastModifiedDate":"2024-03-08"},{"lineNumber":20,"author":{"gitId":"chiageng"},"content":" * @param value A valid employment either part-time or full-time.","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":" public Employment(String value) {","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"chiageng"},"content":" requireNonNull(value);","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":" checkArgument(isValidEmployment(value), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"chiageng"},"content":" this.value \u003d value;","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":27,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":28,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-08"},{"lineNumber":29,"author":{"gitId":"chiageng"},"content":" * Returns true if a given string is a valid salary.","lastModifiedDate":"2024-03-08"},{"lineNumber":30,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":31,"author":{"gitId":"chiageng"},"content":" public static boolean isValidEmployment(String test) {","lastModifiedDate":"2024-03-08"},{"lineNumber":32,"author":{"gitId":"chiageng"},"content":" return test.matches(VALIDATION_REGEX1) || test.matches(VALIDATION_REGEX2);","lastModifiedDate":"2024-03-08"},{"lineNumber":33,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":34,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":35,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-08"},{"lineNumber":36,"author":{"gitId":"chiageng"},"content":" public String toString() {","lastModifiedDate":"2024-03-08"},{"lineNumber":37,"author":{"gitId":"chiageng"},"content":" return value;","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":39,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":40,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-08"},{"lineNumber":41,"author":{"gitId":"chiageng"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-08"},{"lineNumber":42,"author":{"gitId":"chiageng"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-08"},{"lineNumber":43,"author":{"gitId":"chiageng"},"content":" return true;","lastModifiedDate":"2024-03-08"},{"lineNumber":44,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":46,"author":{"gitId":"chiageng"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-08"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":" if (!(other instanceof Employment)) {","lastModifiedDate":"2024-03-08"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":" return false;","lastModifiedDate":"2024-03-08"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":" Employment otherEmployment \u003d (Employment) other;","lastModifiedDate":"2024-03-08"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":" return value.equals(otherEmployment.value);","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":55,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-08"},{"lineNumber":56,"author":{"gitId":"chiageng"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-08"},{"lineNumber":57,"author":{"gitId":"chiageng"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":59,"author":{"gitId":"chiageng"},"content":"}","lastModifiedDate":"2024-03-08"}],"authorContributionMap":{"chiageng":59}},{"path":"src/main/java/seedu/address/model/person/KeywordPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Joshy837"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"Joshy837"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"Joshy837"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COMMISSION;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"Joshy837"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"Joshy837"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMPLOYMENT;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"Joshy837"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"Joshy837"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"Joshy837"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PRICE;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"Joshy837"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PRODUCT;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"Joshy837"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SALARY;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"Joshy837"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SKILL;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"Joshy837"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"Joshy837"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"Joshy837"},"content":"import seedu.address.logic.parser.ArgumentMultimap;","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"Joshy837"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"Joshy837"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"Joshy837"},"content":" * Tests that a {@code Person}\u0027s {@code Details} matches any of the keywords given.","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"Joshy837"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"Joshy837"},"content":"public class KeywordPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"Joshy837"},"content":" private final ArgumentMultimap keywords;","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"Joshy837"},"content":" public KeywordPredicate(ArgumentMultimap keywords) {","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"Joshy837"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"Joshy837"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"Joshy837"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"Joshy837"},"content":" // Searches through staff only","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"Joshy837"},"content":" if (hasField(PREFIX_SALARY) || hasField(PREFIX_EMPLOYMENT)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"Joshy837"},"content":" if (!(person instanceof Staff)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"Joshy837"},"content":" return false;","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"Joshy837"},"content":" Staff staff \u003d (Staff) person;","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"Joshy837"},"content":" return checkNamePhoneEmailAndAddress(staff)","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"Joshy837"},"content":" \u0026\u0026 checkSalary(staff)","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"Joshy837"},"content":" \u0026\u0026 checkEmployment(staff);","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"Joshy837"},"content":" // Searches through supplier only","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"Joshy837"},"content":" if (hasField(PREFIX_PRICE) || hasField(PREFIX_PRODUCT)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"Joshy837"},"content":" if (!(person instanceof Supplier)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"Joshy837"},"content":" return false;","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"Joshy837"},"content":" Supplier supplier \u003d (Supplier) person;","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"Joshy837"},"content":" return checkNamePhoneEmailAndAddress(supplier)","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"Joshy837"},"content":" \u0026\u0026 checkPrice(supplier)","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"Joshy837"},"content":" \u0026\u0026 checkProduct(supplier);","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"Joshy837"},"content":" // Searches through maintainer only","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"Joshy837"},"content":" if (hasField(PREFIX_SKILL) || hasField(PREFIX_COMMISSION)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"Joshy837"},"content":" if (!(person instanceof Maintainer)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"Joshy837"},"content":" return false;","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"Joshy837"},"content":" Maintainer maintainer \u003d (Maintainer) person;","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"Joshy837"},"content":" return checkNamePhoneEmailAndAddress(maintainer)","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"Joshy837"},"content":" \u0026\u0026 checkSkill(maintainer)","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"Joshy837"},"content":" \u0026\u0026 checkCommission(maintainer);","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"Joshy837"},"content":" // No specialty","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"Joshy837"},"content":" return checkNamePhoneEmailAndAddress(person);","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"Joshy837"},"content":" boolean hasField(Prefix field) {","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"Joshy837"},"content":" return keywords.getValue(field).isPresent();","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"Joshy837"},"content":" String getValue(Prefix field) {","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"Joshy837"},"content":" return keywords.getValue(field).get();","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"Joshy837"},"content":" boolean contains(String identifier, Prefix field) {","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"Joshy837"},"content":" if (!hasField(field)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"Joshy837"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"Joshy837"},"content":" String lowerCasedIdentifier \u003d identifier.toLowerCase();","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"Joshy837"},"content":" String query \u003d getValue(field);","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"Joshy837"},"content":" String lowerCasedQuery \u003d query.toLowerCase();","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"Joshy837"},"content":" return lowerCasedIdentifier.contains(lowerCasedQuery);","lastModifiedDate":"2024-03-21"},{"lineNumber":90,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":91,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":92,"author":{"gitId":"Joshy837"},"content":" boolean checkName(Person person) {","lastModifiedDate":"2024-03-21"},{"lineNumber":93,"author":{"gitId":"Joshy837"},"content":" return contains(person.getName().toString(), PREFIX_NAME);","lastModifiedDate":"2024-03-21"},{"lineNumber":94,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":95,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":96,"author":{"gitId":"Joshy837"},"content":" boolean checkPhone(Person person) {","lastModifiedDate":"2024-03-21"},{"lineNumber":97,"author":{"gitId":"Joshy837"},"content":" return contains(person.getPhone().toString(), PREFIX_PHONE);","lastModifiedDate":"2024-03-21"},{"lineNumber":98,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":99,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":100,"author":{"gitId":"Joshy837"},"content":" boolean checkEmail(Person person) {","lastModifiedDate":"2024-03-21"},{"lineNumber":101,"author":{"gitId":"Joshy837"},"content":" return contains(person.getEmail().toString(), PREFIX_EMAIL);","lastModifiedDate":"2024-03-21"},{"lineNumber":102,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":103,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":104,"author":{"gitId":"Joshy837"},"content":" boolean checkAddress(Person person) {","lastModifiedDate":"2024-03-21"},{"lineNumber":105,"author":{"gitId":"Joshy837"},"content":" return contains(person.getAddress().toString(), PREFIX_ADDRESS);","lastModifiedDate":"2024-03-21"},{"lineNumber":106,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":107,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":108,"author":{"gitId":"Joshy837"},"content":" boolean checkSalary(Staff staff) {","lastModifiedDate":"2024-03-21"},{"lineNumber":109,"author":{"gitId":"Joshy837"},"content":" return contains(staff.getSalary().toString(), PREFIX_SALARY);","lastModifiedDate":"2024-03-21"},{"lineNumber":110,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":111,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":112,"author":{"gitId":"Joshy837"},"content":" boolean checkEmployment(Staff staff) {","lastModifiedDate":"2024-03-21"},{"lineNumber":113,"author":{"gitId":"Joshy837"},"content":" return contains(staff.getEmployment().toString(), PREFIX_EMPLOYMENT);","lastModifiedDate":"2024-03-21"},{"lineNumber":114,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":115,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":116,"author":{"gitId":"Joshy837"},"content":" boolean checkPrice(Supplier supplier) {","lastModifiedDate":"2024-03-21"},{"lineNumber":117,"author":{"gitId":"Joshy837"},"content":" return contains(supplier.getPrice().toString(), PREFIX_PRICE);","lastModifiedDate":"2024-03-21"},{"lineNumber":118,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":119,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":120,"author":{"gitId":"Joshy837"},"content":" boolean checkProduct(Supplier supplier) {","lastModifiedDate":"2024-03-21"},{"lineNumber":121,"author":{"gitId":"Joshy837"},"content":" return contains(supplier.getProduct().toString(), PREFIX_PRODUCT);","lastModifiedDate":"2024-03-21"},{"lineNumber":122,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":123,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":124,"author":{"gitId":"Joshy837"},"content":" boolean checkSkill(Maintainer maintainer) {","lastModifiedDate":"2024-03-21"},{"lineNumber":125,"author":{"gitId":"Joshy837"},"content":" return contains(maintainer.getSkill().toString(), PREFIX_SKILL);","lastModifiedDate":"2024-03-21"},{"lineNumber":126,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":127,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":128,"author":{"gitId":"Joshy837"},"content":" boolean checkCommission(Maintainer maintainer) {","lastModifiedDate":"2024-03-21"},{"lineNumber":129,"author":{"gitId":"Joshy837"},"content":" return contains(maintainer.getCommission().toString(), PREFIX_COMMISSION);","lastModifiedDate":"2024-03-21"},{"lineNumber":130,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":131,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":132,"author":{"gitId":"Joshy837"},"content":" boolean checkNamePhoneEmailAndAddress(Person person) {","lastModifiedDate":"2024-03-21"},{"lineNumber":133,"author":{"gitId":"Joshy837"},"content":" return checkName(person)","lastModifiedDate":"2024-03-21"},{"lineNumber":134,"author":{"gitId":"Joshy837"},"content":" \u0026\u0026 checkPhone(person)","lastModifiedDate":"2024-03-21"},{"lineNumber":135,"author":{"gitId":"Joshy837"},"content":" \u0026\u0026 checkEmail(person)","lastModifiedDate":"2024-03-21"},{"lineNumber":136,"author":{"gitId":"Joshy837"},"content":" \u0026\u0026 checkAddress(person);","lastModifiedDate":"2024-03-21"},{"lineNumber":137,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":138,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":139,"author":{"gitId":"Joshy837"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":140,"author":{"gitId":"Joshy837"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-16"},{"lineNumber":141,"author":{"gitId":"Joshy837"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-16"},{"lineNumber":142,"author":{"gitId":"Joshy837"},"content":" return true;","lastModifiedDate":"2024-03-16"},{"lineNumber":143,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":144,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":145,"author":{"gitId":"Joshy837"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-16"},{"lineNumber":146,"author":{"gitId":"Joshy837"},"content":" if (!(other instanceof KeywordPredicate)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":147,"author":{"gitId":"Joshy837"},"content":" return false;","lastModifiedDate":"2024-03-16"},{"lineNumber":148,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":149,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":150,"author":{"gitId":"Joshy837"},"content":" KeywordPredicate otherKeywordPredicate \u003d (KeywordPredicate) other;","lastModifiedDate":"2024-03-16"},{"lineNumber":151,"author":{"gitId":"Joshy837"},"content":" return keywords.equals(otherKeywordPredicate.keywords);","lastModifiedDate":"2024-03-16"},{"lineNumber":152,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":153,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":154,"author":{"gitId":"Joshy837"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":155,"author":{"gitId":"Joshy837"},"content":" public String toString() {","lastModifiedDate":"2024-03-16"},{"lineNumber":156,"author":{"gitId":"Joshy837"},"content":" return new ToStringBuilder(this).add(\"keyword\", keywords).toString();","lastModifiedDate":"2024-03-18"},{"lineNumber":157,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":158,"author":{"gitId":"Joshy837"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"Joshy837":158}},{"path":"src/main/java/seedu/address/model/person/Maintainer.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chiageng"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-08"},{"lineNumber":2,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":3,"author":{"gitId":"chiageng"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-09"},{"lineNumber":4,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":5,"author":{"gitId":"chiageng"},"content":"import java.util.Objects;","lastModifiedDate":"2024-03-08"},{"lineNumber":6,"author":{"gitId":"chiageng"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-08"},{"lineNumber":7,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":"/**","lastModifiedDate":"2024-03-08"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":" * Represents a Maintainer in the address book.","lastModifiedDate":"2024-03-08"},{"lineNumber":13,"author":{"gitId":"chiageng"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-03-08"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":"public class Maintainer extends Person {","lastModifiedDate":"2024-03-08"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":" // Data fields","lastModifiedDate":"2024-03-08"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":" private final Skill skill;","lastModifiedDate":"2024-03-08"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":" private final Commission commission;","lastModifiedDate":"2024-03-08"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":20,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-08"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-03-08"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":23,"author":{"gitId":"chiageng"},"content":" public Maintainer(Name name, Phone phone, Email email, Address address, Set\u003cTag\u003e tags,","lastModifiedDate":"2024-03-08"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":" Skill skill, Commission commission) {","lastModifiedDate":"2024-03-08"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":" super(name, phone, email, address, new Note(\"No additional note set\"), tags);","lastModifiedDate":"2024-03-24"},{"lineNumber":26,"author":{"gitId":"chiageng"},"content":" requireAllNonNull(skill, commission);","lastModifiedDate":"2024-03-08"},{"lineNumber":27,"author":{"gitId":"chiageng"},"content":" this.skill \u003d skill;","lastModifiedDate":"2024-03-08"},{"lineNumber":28,"author":{"gitId":"chiageng"},"content":" this.commission \u003d commission;","lastModifiedDate":"2024-03-08"},{"lineNumber":29,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":30,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":31,"author":{"gitId":"chiageng"},"content":" public Skill getSkill() {","lastModifiedDate":"2024-03-08"},{"lineNumber":32,"author":{"gitId":"chiageng"},"content":" return skill;","lastModifiedDate":"2024-03-08"},{"lineNumber":33,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":34,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":35,"author":{"gitId":"chiageng"},"content":" public Commission getCommission() {","lastModifiedDate":"2024-03-08"},{"lineNumber":36,"author":{"gitId":"chiageng"},"content":" return commission;","lastModifiedDate":"2024-03-08"},{"lineNumber":37,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":38,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":39,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-08"},{"lineNumber":40,"author":{"gitId":"chiageng"},"content":" * Returns true if both Maintainer have the same identity and data fields.","lastModifiedDate":"2024-03-08"},{"lineNumber":41,"author":{"gitId":"chiageng"},"content":" * This defines a stronger notion of equality between two maintainer.","lastModifiedDate":"2024-03-08"},{"lineNumber":42,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":43,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-08"},{"lineNumber":44,"author":{"gitId":"chiageng"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-08"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-08"},{"lineNumber":46,"author":{"gitId":"chiageng"},"content":" return true;","lastModifiedDate":"2024-03-08"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-08"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":" if (!(other instanceof Maintainer)) {","lastModifiedDate":"2024-03-08"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":" return false;","lastModifiedDate":"2024-03-08"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":53,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":" Maintainer otherPerson \u003d (Maintainer) other;","lastModifiedDate":"2024-03-08"},{"lineNumber":55,"author":{"gitId":"chiageng"},"content":" return super.equals(otherPerson)","lastModifiedDate":"2024-03-08"},{"lineNumber":56,"author":{"gitId":"chiageng"},"content":" \u0026\u0026 skill.equals(otherPerson.skill)","lastModifiedDate":"2024-03-08"},{"lineNumber":57,"author":{"gitId":"chiageng"},"content":" \u0026\u0026 commission.equals(otherPerson.commission);","lastModifiedDate":"2024-03-08"},{"lineNumber":58,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":59,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":60,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-08"},{"lineNumber":61,"author":{"gitId":"chiageng"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-08"},{"lineNumber":62,"author":{"gitId":"chiageng"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2024-03-08"},{"lineNumber":63,"author":{"gitId":"chiageng"},"content":" return Objects.hash(super.hashCode(), skill, commission);","lastModifiedDate":"2024-03-08"},{"lineNumber":64,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":65,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":66,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-08"},{"lineNumber":67,"author":{"gitId":"chiageng"},"content":" public String toString() {","lastModifiedDate":"2024-03-08"},{"lineNumber":68,"author":{"gitId":"chiageng"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-09"},{"lineNumber":69,"author":{"gitId":"chiageng"},"content":" .add(\"name\", getName())","lastModifiedDate":"2024-03-09"},{"lineNumber":70,"author":{"gitId":"chiageng"},"content":" .add(\"phone\", getPhone())","lastModifiedDate":"2024-03-09"},{"lineNumber":71,"author":{"gitId":"chiageng"},"content":" .add(\"email\", getEmail())","lastModifiedDate":"2024-03-09"},{"lineNumber":72,"author":{"gitId":"chiageng"},"content":" .add(\"address\", getAddress())","lastModifiedDate":"2024-03-09"},{"lineNumber":73,"author":{"gitId":"chiageng"},"content":" .add(\"tags\", getTags())","lastModifiedDate":"2024-03-09"},{"lineNumber":74,"author":{"gitId":"chiageng"},"content":" .add(\"skill\", skill)","lastModifiedDate":"2024-03-08"},{"lineNumber":75,"author":{"gitId":"chiageng"},"content":" .add(\"commission\", commission)","lastModifiedDate":"2024-03-08"},{"lineNumber":76,"author":{"gitId":"chiageng"},"content":" .toString();","lastModifiedDate":"2024-03-08"},{"lineNumber":77,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":78,"author":{"gitId":"chiageng"},"content":"}","lastModifiedDate":"2024-03-08"}],"authorContributionMap":{"chiageng":77,"jannaleong":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":"-"},"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":"-"},"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":"-"},"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":"chiageng"},"content":" return fullName.toLowerCase().equals(otherName.fullName.toLowerCase());","lastModifiedDate":"2024-03-08"},{"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":{"chiageng":1,"-":66}},{"path":"src/main/java/seedu/address/model/person/Note.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":" * Represents a Person\u0027s Note in the address book.","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidNote(String)}","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":"public class Note {","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Note can take any values, and it should not be blank\";","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":" /*","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":" * The first character of the Note must not be a whitespace,","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":" public static final String VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":" private String value;","lastModifiedDate":"2024-03-23"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":" * Constructs an {@code Note}.","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"jannaleong"},"content":" * @param note A valid note.","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"jannaleong"},"content":" public Note(String note) {","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":" value \u003d note;","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"jannaleong"},"content":" * Returns true if a given string is a valid email.","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"jannaleong"},"content":" public static boolean isValidNote(String test) {","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"jannaleong"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"jannaleong"},"content":" public void setValue(String value) {","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"jannaleong"},"content":" this.value \u003d value;","lastModifiedDate":"2024-03-23"},{"lineNumber":37,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":39,"author":{"gitId":"jannaleong"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"jannaleong"},"content":" public String toString() {","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"jannaleong"},"content":" return value;","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"jannaleong"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"jannaleong"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"jannaleong"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"jannaleong"},"content":" return true;","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"jannaleong"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"jannaleong"},"content":" if (!(other instanceof Note)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"jannaleong"},"content":" return false;","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"jannaleong"},"content":" Note otherNote \u003d (Note) other;","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"jannaleong"},"content":" return value.equals(otherNote.value);","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"jannaleong"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"jannaleong"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"jannaleong"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"jannaleong":63}},{"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":"-"},"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 Address address;","lastModifiedDate":"2018-04-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":27,"author":{"gitId":"jannaleong"},"content":" private Note note;","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"jannaleong"},"content":" public Person(Name name, Phone phone, Email email, Address address, Note note, Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"jannaleong"},"content":" requireAllNonNull(name, phone, email, address, note, tags);","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20"},{"lineNumber":38,"author":{"gitId":"jannaleong"},"content":" this.note \u003d note;","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return name;","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 Phone getPhone() {","lastModifiedDate":"2017-07-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":" return phone;","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":" public Email getEmail() {","lastModifiedDate":"2017-07-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":57,"author":{"gitId":"jannaleong"},"content":" public Note getNote() {","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"jannaleong"},"content":" return note;","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18"},{"lineNumber":71,"author":{"gitId":"chiageng"},"content":" * Name is case-insensitive, Janna and janna is same name.","lastModifiedDate":"2024-03-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return true;","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":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2020-12-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":83,"author":{"gitId":"jannaleong"},"content":" public void setNoteContent(String content) {","lastModifiedDate":"2024-03-23"},{"lineNumber":84,"author":{"gitId":"jannaleong"},"content":" this.note.setValue(content);","lastModifiedDate":"2024-03-23"},{"lineNumber":85,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":86,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-23"},{"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":"jannaleong"},"content":" // does not have to have the same note to be equal","lastModifiedDate":"2024-03-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" \u0026\u0026 tags.equals(otherPerson.tags);","lastModifiedDate":"2023-07-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"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":"jannaleong"},"content":" return Objects.hash(name, phone, email, address, note, tags);","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":124,"author":{"gitId":"jannaleong"},"content":" .add(\"note\", note)","lastModifiedDate":"2024-03-18"},{"lineNumber":125,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":129,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"chiageng":1,"jannaleong":14,"-":114}},{"path":"src/main/java/seedu/address/model/person/Price.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chiageng"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-08"},{"lineNumber":2,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":3,"author":{"gitId":"chiageng"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-08"},{"lineNumber":4,"author":{"gitId":"chiageng"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-08"},{"lineNumber":5,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":6,"author":{"gitId":"chiageng"},"content":"/**","lastModifiedDate":"2024-03-08"},{"lineNumber":7,"author":{"gitId":"chiageng"},"content":" * Represents a Supplier\u0027s product price in the address book.","lastModifiedDate":"2024-03-08"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidPrice(String)}","lastModifiedDate":"2024-03-08"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"public class Price {","lastModifiedDate":"2024-03-08"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-08"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":" \"Salary should in this format of ${amount}/h\";","lastModifiedDate":"2024-03-08"},{"lineNumber":13,"author":{"gitId":"chiageng"},"content":" public static final String VALIDATION_REGEX \u003d \"^\\\\$\\\\d+/.+$\";","lastModifiedDate":"2024-03-08"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":" public final String value;","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-08"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":" * Constructs an {@code Product}.","lastModifiedDate":"2024-03-08"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":" *","lastModifiedDate":"2024-03-08"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":" * @param value A valid price.","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":" public Price(String value) {","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":" requireNonNull(value);","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"chiageng"},"content":" checkArgument(isValidPrice(value), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":" this.value \u003d value;","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":26,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":27,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-08"},{"lineNumber":28,"author":{"gitId":"chiageng"},"content":" * Returns true if a given string is a valid salary.","lastModifiedDate":"2024-03-08"},{"lineNumber":29,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":30,"author":{"gitId":"chiageng"},"content":" public static boolean isValidPrice(String test) {","lastModifiedDate":"2024-03-08"},{"lineNumber":31,"author":{"gitId":"chiageng"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-08"},{"lineNumber":32,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":33,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":34,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-08"},{"lineNumber":35,"author":{"gitId":"chiageng"},"content":" public String toString() {","lastModifiedDate":"2024-03-08"},{"lineNumber":36,"author":{"gitId":"chiageng"},"content":" return value;","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":38,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":39,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-08"},{"lineNumber":40,"author":{"gitId":"chiageng"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-08"},{"lineNumber":41,"author":{"gitId":"chiageng"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-08"},{"lineNumber":42,"author":{"gitId":"chiageng"},"content":" return true;","lastModifiedDate":"2024-03-08"},{"lineNumber":43,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":44,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-08"},{"lineNumber":46,"author":{"gitId":"chiageng"},"content":" if (!(other instanceof Price)) {","lastModifiedDate":"2024-03-08"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":" return false;","lastModifiedDate":"2024-03-08"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":" Price otherPrice \u003d (Price) other;","lastModifiedDate":"2024-03-08"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":" return value.equals(otherPrice.value);","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":53,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-08"},{"lineNumber":55,"author":{"gitId":"chiageng"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-08"},{"lineNumber":56,"author":{"gitId":"chiageng"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":58,"author":{"gitId":"chiageng"},"content":"}","lastModifiedDate":"2024-03-08"}],"authorContributionMap":{"chiageng":58}},{"path":"src/main/java/seedu/address/model/person/Product.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chiageng"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-08"},{"lineNumber":2,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":3,"author":{"gitId":"chiageng"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-08"},{"lineNumber":4,"author":{"gitId":"chiageng"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-08"},{"lineNumber":5,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":6,"author":{"gitId":"chiageng"},"content":"/**","lastModifiedDate":"2024-03-08"},{"lineNumber":7,"author":{"gitId":"chiageng"},"content":" * Represents a Supplier\u0027s product in the address book.","lastModifiedDate":"2024-03-08"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidProduct(String)}","lastModifiedDate":"2024-03-08"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"public class Product {","lastModifiedDate":"2024-03-08"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Product can take any values, and it should not be blank\";","lastModifiedDate":"2024-03-08"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":13,"author":{"gitId":"chiageng"},"content":" /*","lastModifiedDate":"2024-03-08"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":" * The first character of the product must not be a whitespace,","lastModifiedDate":"2024-03-08"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-03-08"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":" public static final String VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2024-03-08"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":" public final String value;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":20,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-08"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":" * Constructs an {@code Product}.","lastModifiedDate":"2024-03-08"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":" *","lastModifiedDate":"2024-03-08"},{"lineNumber":23,"author":{"gitId":"chiageng"},"content":" * @param value A valid product.","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":25,"author":{"gitId":"chiageng"},"content":" public Product(String value) {","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"chiageng"},"content":" requireNonNull(value);","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"chiageng"},"content":" checkArgument(isValidProduct(value), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"chiageng"},"content":" this.value \u003d value;","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":30,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":31,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-08"},{"lineNumber":32,"author":{"gitId":"chiageng"},"content":" * Returns true if a given string is a valid product.","lastModifiedDate":"2024-03-08"},{"lineNumber":33,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":34,"author":{"gitId":"chiageng"},"content":" public static boolean isValidProduct(String test) {","lastModifiedDate":"2024-03-08"},{"lineNumber":35,"author":{"gitId":"chiageng"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-08"},{"lineNumber":36,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":37,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":38,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-08"},{"lineNumber":39,"author":{"gitId":"chiageng"},"content":" public String toString() {","lastModifiedDate":"2024-03-08"},{"lineNumber":40,"author":{"gitId":"chiageng"},"content":" return value;","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":42,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":43,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-08"},{"lineNumber":44,"author":{"gitId":"chiageng"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-08"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-08"},{"lineNumber":46,"author":{"gitId":"chiageng"},"content":" return true;","lastModifiedDate":"2024-03-08"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-08"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":" if (!(other instanceof Product)) {","lastModifiedDate":"2024-03-08"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":" return false;","lastModifiedDate":"2024-03-08"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":53,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":" Product otherProduct \u003d (Product) other;","lastModifiedDate":"2024-03-08"},{"lineNumber":55,"author":{"gitId":"chiageng"},"content":" return value.equals(otherProduct.value);","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":57,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":58,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-08"},{"lineNumber":59,"author":{"gitId":"chiageng"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-08"},{"lineNumber":60,"author":{"gitId":"chiageng"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":62,"author":{"gitId":"chiageng"},"content":"}","lastModifiedDate":"2024-03-08"}],"authorContributionMap":{"chiageng":62}},{"path":"src/main/java/seedu/address/model/person/Salary.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chiageng"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-08"},{"lineNumber":2,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":3,"author":{"gitId":"chiageng"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-08"},{"lineNumber":4,"author":{"gitId":"chiageng"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-08"},{"lineNumber":5,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":6,"author":{"gitId":"chiageng"},"content":"/**","lastModifiedDate":"2024-03-08"},{"lineNumber":7,"author":{"gitId":"chiageng"},"content":" * Represents a Staff\u0027s salary in the address book.","lastModifiedDate":"2024-03-08"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidSalary(String)}","lastModifiedDate":"2024-03-08"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"public class Salary {","lastModifiedDate":"2024-03-08"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-08"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":" \"Salary should in this format of ${amount}/hr\";","lastModifiedDate":"2024-03-08"},{"lineNumber":13,"author":{"gitId":"chiageng"},"content":" public static final String VALIDATION_REGEX \u003d \"^\\\\$\\\\d+/hr$\";","lastModifiedDate":"2024-03-08"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":" public final String value;","lastModifiedDate":"2024-03-08"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-08"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":" * Constructs an {@code Salary}.","lastModifiedDate":"2024-03-08"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":" *","lastModifiedDate":"2024-03-08"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":" * @param value A valid salary value.","lastModifiedDate":"2024-03-08"},{"lineNumber":20,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":" public Salary(String value) {","lastModifiedDate":"2024-03-08"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":" requireNonNull(value);","lastModifiedDate":"2024-03-08"},{"lineNumber":23,"author":{"gitId":"chiageng"},"content":" checkArgument(isValidSalary(value), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-08"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":" this.value \u003d value;","lastModifiedDate":"2024-03-08"},{"lineNumber":25,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":26,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":27,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-08"},{"lineNumber":28,"author":{"gitId":"chiageng"},"content":" * Returns true if a given string is a valid salary.","lastModifiedDate":"2024-03-08"},{"lineNumber":29,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":30,"author":{"gitId":"chiageng"},"content":" public static boolean isValidSalary(String test) {","lastModifiedDate":"2024-03-08"},{"lineNumber":31,"author":{"gitId":"chiageng"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-08"},{"lineNumber":32,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":33,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":34,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-08"},{"lineNumber":35,"author":{"gitId":"chiageng"},"content":" public String toString() {","lastModifiedDate":"2024-03-08"},{"lineNumber":36,"author":{"gitId":"chiageng"},"content":" return value;","lastModifiedDate":"2024-03-08"},{"lineNumber":37,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":38,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":39,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-08"},{"lineNumber":40,"author":{"gitId":"chiageng"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-08"},{"lineNumber":41,"author":{"gitId":"chiageng"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-08"},{"lineNumber":42,"author":{"gitId":"chiageng"},"content":" return true;","lastModifiedDate":"2024-03-08"},{"lineNumber":43,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":44,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-08"},{"lineNumber":46,"author":{"gitId":"chiageng"},"content":" if (!(other instanceof Salary)) {","lastModifiedDate":"2024-03-08"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":" return false;","lastModifiedDate":"2024-03-08"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":" Salary otherSalary \u003d (Salary) other;","lastModifiedDate":"2024-03-08"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":" return value.equals(otherSalary.value);","lastModifiedDate":"2024-03-08"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":53,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-08"},{"lineNumber":55,"author":{"gitId":"chiageng"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-08"},{"lineNumber":56,"author":{"gitId":"chiageng"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-08"},{"lineNumber":57,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":58,"author":{"gitId":"chiageng"},"content":"}","lastModifiedDate":"2024-03-08"}],"authorContributionMap":{"chiageng":58}},{"path":"src/main/java/seedu/address/model/person/Skill.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chiageng"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-08"},{"lineNumber":2,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":3,"author":{"gitId":"chiageng"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-08"},{"lineNumber":4,"author":{"gitId":"chiageng"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-08"},{"lineNumber":5,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":6,"author":{"gitId":"chiageng"},"content":"/**","lastModifiedDate":"2024-03-08"},{"lineNumber":7,"author":{"gitId":"chiageng"},"content":" * Represents a Supplier\u0027s product in the address book.","lastModifiedDate":"2024-03-08"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidSkill(String)}","lastModifiedDate":"2024-03-08"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"public class Skill {","lastModifiedDate":"2024-03-08"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Skill can take any values, and it should not be blank\";","lastModifiedDate":"2024-03-08"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":13,"author":{"gitId":"chiageng"},"content":" /*","lastModifiedDate":"2024-03-08"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":" * The first character of the skill must not be a whitespace,","lastModifiedDate":"2024-03-08"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-03-08"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":" public static final String VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2024-03-08"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":" public final String value;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":20,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-08"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":" * Constructs an {@code Skill}.","lastModifiedDate":"2024-03-08"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":" *","lastModifiedDate":"2024-03-08"},{"lineNumber":23,"author":{"gitId":"chiageng"},"content":" * @param value A valid skill.","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":25,"author":{"gitId":"chiageng"},"content":" public Skill(String value) {","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"chiageng"},"content":" requireNonNull(value);","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"chiageng"},"content":" checkArgument(isValidSkill(value), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"chiageng"},"content":" this.value \u003d value;","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":30,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":31,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-08"},{"lineNumber":32,"author":{"gitId":"chiageng"},"content":" * Returns true if a given string is a valid product.","lastModifiedDate":"2024-03-08"},{"lineNumber":33,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":34,"author":{"gitId":"chiageng"},"content":" public static boolean isValidSkill(String test) {","lastModifiedDate":"2024-03-08"},{"lineNumber":35,"author":{"gitId":"chiageng"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-08"},{"lineNumber":36,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":37,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":38,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-08"},{"lineNumber":39,"author":{"gitId":"chiageng"},"content":" public String toString() {","lastModifiedDate":"2024-03-08"},{"lineNumber":40,"author":{"gitId":"chiageng"},"content":" return value;","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":42,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":43,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-08"},{"lineNumber":44,"author":{"gitId":"chiageng"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-08"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-08"},{"lineNumber":46,"author":{"gitId":"chiageng"},"content":" return true;","lastModifiedDate":"2024-03-08"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-08"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":" if (!(other instanceof Skill)) {","lastModifiedDate":"2024-03-08"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":" return false;","lastModifiedDate":"2024-03-08"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":53,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":" Skill otherSkill \u003d (Skill) other;","lastModifiedDate":"2024-03-08"},{"lineNumber":55,"author":{"gitId":"chiageng"},"content":" return value.equals(otherSkill.value);","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":57,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":58,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-08"},{"lineNumber":59,"author":{"gitId":"chiageng"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-08"},{"lineNumber":60,"author":{"gitId":"chiageng"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":62,"author":{"gitId":"chiageng"},"content":"}","lastModifiedDate":"2024-03-08"}],"authorContributionMap":{"chiageng":62}},{"path":"src/main/java/seedu/address/model/person/Staff.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chiageng"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-08"},{"lineNumber":2,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":3,"author":{"gitId":"chiageng"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-09"},{"lineNumber":4,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":5,"author":{"gitId":"chiageng"},"content":"import java.util.Objects;","lastModifiedDate":"2024-03-08"},{"lineNumber":6,"author":{"gitId":"chiageng"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-08"},{"lineNumber":7,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":"/**","lastModifiedDate":"2024-03-08"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":" * Represents a Staff in the address book.","lastModifiedDate":"2024-03-08"},{"lineNumber":13,"author":{"gitId":"chiageng"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-03-08"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":"public class Staff extends Person {","lastModifiedDate":"2024-03-08"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":" // Data fields","lastModifiedDate":"2024-03-08"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":" private final Salary salary;","lastModifiedDate":"2024-03-08"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":" private final Employment employment;","lastModifiedDate":"2024-03-08"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":20,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-08"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-03-08"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":23,"author":{"gitId":"chiageng"},"content":" public Staff(Name name, Phone phone, Email email, Address address, Set\u003cTag\u003e tags,","lastModifiedDate":"2024-03-08"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":" Salary salary, Employment employment) {","lastModifiedDate":"2024-03-08"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":" super(name, phone, email, address, new Note(\"No additional note set\"), tags);","lastModifiedDate":"2024-03-24"},{"lineNumber":26,"author":{"gitId":"chiageng"},"content":" requireAllNonNull(salary, employment);","lastModifiedDate":"2024-03-08"},{"lineNumber":27,"author":{"gitId":"chiageng"},"content":" this.salary \u003d salary;","lastModifiedDate":"2024-03-08"},{"lineNumber":28,"author":{"gitId":"chiageng"},"content":" this.employment \u003d employment;","lastModifiedDate":"2024-03-08"},{"lineNumber":29,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":30,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":31,"author":{"gitId":"chiageng"},"content":" public Salary getSalary() {","lastModifiedDate":"2024-03-08"},{"lineNumber":32,"author":{"gitId":"chiageng"},"content":" return salary;","lastModifiedDate":"2024-03-08"},{"lineNumber":33,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":34,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":35,"author":{"gitId":"chiageng"},"content":" public Employment getEmployment() {","lastModifiedDate":"2024-03-08"},{"lineNumber":36,"author":{"gitId":"chiageng"},"content":" return employment;","lastModifiedDate":"2024-03-08"},{"lineNumber":37,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":38,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":39,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-08"},{"lineNumber":40,"author":{"gitId":"chiageng"},"content":" * Returns true if both staffs have the same identity and data fields.","lastModifiedDate":"2024-03-08"},{"lineNumber":41,"author":{"gitId":"chiageng"},"content":" * This defines a stronger notion of equality between two staff.","lastModifiedDate":"2024-03-08"},{"lineNumber":42,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":43,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-08"},{"lineNumber":44,"author":{"gitId":"chiageng"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-08"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-08"},{"lineNumber":46,"author":{"gitId":"chiageng"},"content":" return true;","lastModifiedDate":"2024-03-08"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-08"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":" if (!(other instanceof Staff)) {","lastModifiedDate":"2024-03-08"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":" return false;","lastModifiedDate":"2024-03-08"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":53,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":" Staff otherPerson \u003d (Staff) other;","lastModifiedDate":"2024-03-08"},{"lineNumber":55,"author":{"gitId":"chiageng"},"content":" return super.equals(otherPerson)","lastModifiedDate":"2024-03-08"},{"lineNumber":56,"author":{"gitId":"chiageng"},"content":" \u0026\u0026 salary.equals(otherPerson.salary)","lastModifiedDate":"2024-03-08"},{"lineNumber":57,"author":{"gitId":"chiageng"},"content":" \u0026\u0026 employment.equals(otherPerson.employment);","lastModifiedDate":"2024-03-08"},{"lineNumber":58,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":59,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":60,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-08"},{"lineNumber":61,"author":{"gitId":"chiageng"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-08"},{"lineNumber":62,"author":{"gitId":"chiageng"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2024-03-08"},{"lineNumber":63,"author":{"gitId":"chiageng"},"content":" return Objects.hash(super.hashCode(), salary, employment);","lastModifiedDate":"2024-03-08"},{"lineNumber":64,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":65,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":66,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-08"},{"lineNumber":67,"author":{"gitId":"chiageng"},"content":" public String toString() {","lastModifiedDate":"2024-03-08"},{"lineNumber":68,"author":{"gitId":"chiageng"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-09"},{"lineNumber":69,"author":{"gitId":"chiageng"},"content":" .add(\"name\", getName())","lastModifiedDate":"2024-03-09"},{"lineNumber":70,"author":{"gitId":"chiageng"},"content":" .add(\"phone\", getPhone())","lastModifiedDate":"2024-03-09"},{"lineNumber":71,"author":{"gitId":"chiageng"},"content":" .add(\"email\", getEmail())","lastModifiedDate":"2024-03-09"},{"lineNumber":72,"author":{"gitId":"chiageng"},"content":" .add(\"address\", getAddress())","lastModifiedDate":"2024-03-09"},{"lineNumber":73,"author":{"gitId":"chiageng"},"content":" .add(\"tags\", getTags())","lastModifiedDate":"2024-03-09"},{"lineNumber":74,"author":{"gitId":"chiageng"},"content":" .add(\"salary\", salary)","lastModifiedDate":"2024-03-08"},{"lineNumber":75,"author":{"gitId":"chiageng"},"content":" .add(\"employment\", employment)","lastModifiedDate":"2024-03-08"},{"lineNumber":76,"author":{"gitId":"chiageng"},"content":" .toString();","lastModifiedDate":"2024-03-08"},{"lineNumber":77,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":78,"author":{"gitId":"chiageng"},"content":"}","lastModifiedDate":"2024-03-08"}],"authorContributionMap":{"chiageng":77,"jannaleong":1}},{"path":"src/main/java/seedu/address/model/person/Supplier.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chiageng"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-08"},{"lineNumber":2,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":3,"author":{"gitId":"chiageng"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-09"},{"lineNumber":4,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":5,"author":{"gitId":"chiageng"},"content":"import java.util.Objects;","lastModifiedDate":"2024-03-08"},{"lineNumber":6,"author":{"gitId":"chiageng"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-08"},{"lineNumber":7,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":"/**","lastModifiedDate":"2024-03-08"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":" * Represents a Supplier in the address book.","lastModifiedDate":"2024-03-08"},{"lineNumber":13,"author":{"gitId":"chiageng"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-03-08"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":"public class Supplier extends Person {","lastModifiedDate":"2024-03-08"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":" // Data fields","lastModifiedDate":"2024-03-08"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":" private final Product product;","lastModifiedDate":"2024-03-08"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":" private final Price price;","lastModifiedDate":"2024-03-08"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":20,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-08"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-03-08"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":23,"author":{"gitId":"chiageng"},"content":" public Supplier(Name name, Phone phone, Email email, Address address, Set\u003cTag\u003e tags,","lastModifiedDate":"2024-03-08"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":" Product product, Price price) {","lastModifiedDate":"2024-03-08"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":" super(name, phone, email, address, new Note(\"No additional note set\"), tags);","lastModifiedDate":"2024-03-24"},{"lineNumber":26,"author":{"gitId":"chiageng"},"content":" requireAllNonNull(product, price);","lastModifiedDate":"2024-03-08"},{"lineNumber":27,"author":{"gitId":"chiageng"},"content":" this.product \u003d product;","lastModifiedDate":"2024-03-08"},{"lineNumber":28,"author":{"gitId":"chiageng"},"content":" this.price \u003d price;","lastModifiedDate":"2024-03-08"},{"lineNumber":29,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":30,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":31,"author":{"gitId":"chiageng"},"content":" public Price getPrice() {","lastModifiedDate":"2024-03-08"},{"lineNumber":32,"author":{"gitId":"chiageng"},"content":" return price;","lastModifiedDate":"2024-03-08"},{"lineNumber":33,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":34,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":35,"author":{"gitId":"chiageng"},"content":" public Product getProduct() {","lastModifiedDate":"2024-03-08"},{"lineNumber":36,"author":{"gitId":"chiageng"},"content":" return product;","lastModifiedDate":"2024-03-08"},{"lineNumber":37,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":38,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":39,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-08"},{"lineNumber":40,"author":{"gitId":"chiageng"},"content":" * Returns true if both staffs have the same identity and data fields.","lastModifiedDate":"2024-03-08"},{"lineNumber":41,"author":{"gitId":"chiageng"},"content":" * This defines a stronger notion of equality between two staff.","lastModifiedDate":"2024-03-08"},{"lineNumber":42,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":43,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-08"},{"lineNumber":44,"author":{"gitId":"chiageng"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-08"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-08"},{"lineNumber":46,"author":{"gitId":"chiageng"},"content":" return true;","lastModifiedDate":"2024-03-08"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-08"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":" if (!(other instanceof Supplier)) {","lastModifiedDate":"2024-03-08"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":" return false;","lastModifiedDate":"2024-03-08"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":53,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":" Supplier otherPerson \u003d (Supplier) other;","lastModifiedDate":"2024-03-08"},{"lineNumber":55,"author":{"gitId":"chiageng"},"content":" return super.equals(otherPerson)","lastModifiedDate":"2024-03-08"},{"lineNumber":56,"author":{"gitId":"chiageng"},"content":" \u0026\u0026 product.equals(otherPerson.product)","lastModifiedDate":"2024-03-08"},{"lineNumber":57,"author":{"gitId":"chiageng"},"content":" \u0026\u0026 price.equals(otherPerson.price);","lastModifiedDate":"2024-03-08"},{"lineNumber":58,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":59,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":60,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-08"},{"lineNumber":61,"author":{"gitId":"chiageng"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-08"},{"lineNumber":62,"author":{"gitId":"chiageng"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2024-03-08"},{"lineNumber":63,"author":{"gitId":"chiageng"},"content":" return Objects.hash(super.hashCode(), product, price);","lastModifiedDate":"2024-03-08"},{"lineNumber":64,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":65,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":66,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-08"},{"lineNumber":67,"author":{"gitId":"chiageng"},"content":" public String toString() {","lastModifiedDate":"2024-03-08"},{"lineNumber":68,"author":{"gitId":"chiageng"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-09"},{"lineNumber":69,"author":{"gitId":"chiageng"},"content":" .add(\"name\", getName())","lastModifiedDate":"2024-03-09"},{"lineNumber":70,"author":{"gitId":"chiageng"},"content":" .add(\"phone\", getPhone())","lastModifiedDate":"2024-03-09"},{"lineNumber":71,"author":{"gitId":"chiageng"},"content":" .add(\"email\", getEmail())","lastModifiedDate":"2024-03-09"},{"lineNumber":72,"author":{"gitId":"chiageng"},"content":" .add(\"address\", getAddress())","lastModifiedDate":"2024-03-09"},{"lineNumber":73,"author":{"gitId":"chiageng"},"content":" .add(\"tags\", getTags())","lastModifiedDate":"2024-03-09"},{"lineNumber":74,"author":{"gitId":"chiageng"},"content":" .add(\"product\", product)","lastModifiedDate":"2024-03-08"},{"lineNumber":75,"author":{"gitId":"chiageng"},"content":" .add(\"price\", price)","lastModifiedDate":"2024-03-08"},{"lineNumber":76,"author":{"gitId":"chiageng"},"content":" .toString();","lastModifiedDate":"2024-03-08"},{"lineNumber":77,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":78,"author":{"gitId":"chiageng"},"content":"}","lastModifiedDate":"2024-03-08"}],"authorContributionMap":{"chiageng":77,"jannaleong":1}},{"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.Person;","lastModifiedDate":"2016-12-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":" /*","lastModifiedDate":"2024-03-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":" new Person(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2024-03-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"),","lastModifiedDate":"2024-03-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":" getTagSet(\"friends\")),","lastModifiedDate":"2024-03-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":" new Person(new Name(\"Bernice Yu\"), new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2024-03-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"),","lastModifiedDate":"2024-03-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":" getTagSet(\"colleagues\", \"friends\")),","lastModifiedDate":"2024-03-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2024-03-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"),","lastModifiedDate":"2024-03-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":" getTagSet(\"neighbours\")),","lastModifiedDate":"2024-03-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":" new Person(new Name(\"David Li\"), new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2024-03-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"),","lastModifiedDate":"2024-03-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":" getTagSet(\"family\")),","lastModifiedDate":"2024-03-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2024-03-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"),","lastModifiedDate":"2024-03-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":" getTagSet(\"classmates\")),","lastModifiedDate":"2024-03-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2024-03-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"),","lastModifiedDate":"2024-03-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" getTagSet(\"colleagues\"))","lastModifiedDate":"2024-03-09"},{"lineNumber":37,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":38,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20"},{"lineNumber":42,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07"},{"lineNumber":43,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":58,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"chiageng":2,"-":56}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedMaintainer.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chiageng"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-09"},{"lineNumber":2,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":3,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Maintainer;","lastModifiedDate":"2024-03-09"},{"lineNumber":4,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-09"},{"lineNumber":5,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":6,"author":{"gitId":"chiageng"},"content":"/**","lastModifiedDate":"2024-03-09"},{"lineNumber":7,"author":{"gitId":"chiageng"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2024-03-09"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":"class JsonAdaptedMaintainer extends JsonAdaptedPerson {","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2024-03-09"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":13,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2024-03-09"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":" public JsonAdaptedMaintainer(Person source) {","lastModifiedDate":"2024-03-09"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":" super(source);","lastModifiedDate":"2024-03-09"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":" Maintainer supplier \u003d (Maintainer) source;","lastModifiedDate":"2024-03-09"},{"lineNumber":20,"author":{"gitId":"chiageng"},"content":" setSkill(supplier.getSkill().value);","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":" setCommission(supplier.getCommission().value);","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":23,"author":{"gitId":"chiageng"},"content":"}","lastModifiedDate":"2024-03-09"}],"authorContributionMap":{"chiageng":23}},{"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":"2024-03-09"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Commission;","lastModifiedDate":"2024-03-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-09"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Employment;","lastModifiedDate":"2024-03-09"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Maintainer;","lastModifiedDate":"2024-03-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-09"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":"import seedu.address.model.person.Note;","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-09"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Price;","lastModifiedDate":"2024-03-09"},{"lineNumber":23,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Product;","lastModifiedDate":"2024-03-09"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Salary;","lastModifiedDate":"2024-03-09"},{"lineNumber":25,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Skill;","lastModifiedDate":"2024-03-09"},{"lineNumber":26,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Staff;","lastModifiedDate":"2024-03-09"},{"lineNumber":27,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Supplier;","lastModifiedDate":"2024-03-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","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":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"chiageng"},"content":" private String employment;","lastModifiedDate":"2024-03-09"},{"lineNumber":42,"author":{"gitId":"chiageng"},"content":" private String salary;","lastModifiedDate":"2024-03-09"},{"lineNumber":43,"author":{"gitId":"chiageng"},"content":" private String product;","lastModifiedDate":"2024-03-09"},{"lineNumber":44,"author":{"gitId":"chiageng"},"content":" private String price;","lastModifiedDate":"2024-03-09"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":" private String skill;","lastModifiedDate":"2024-03-09"},{"lineNumber":46,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":" private String commission;","lastModifiedDate":"2024-03-09"},{"lineNumber":48,"author":{"gitId":"jannaleong"},"content":" private String note;","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"jannaleong"},"content":" @JsonProperty(\"note\") String note,","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"chiageng"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags,","lastModifiedDate":"2024-03-09"},{"lineNumber":59,"author":{"gitId":"chiageng"},"content":" @JsonProperty(\"salary\") String salary,","lastModifiedDate":"2024-03-09"},{"lineNumber":60,"author":{"gitId":"chiageng"},"content":" @JsonProperty(\"employment\") String employment,","lastModifiedDate":"2024-03-09"},{"lineNumber":61,"author":{"gitId":"chiageng"},"content":" @JsonProperty(\"product\") String product,","lastModifiedDate":"2024-03-09"},{"lineNumber":62,"author":{"gitId":"chiageng"},"content":" @JsonProperty(\"price\") String price,","lastModifiedDate":"2024-03-09"},{"lineNumber":63,"author":{"gitId":"chiageng"},"content":" @JsonProperty(\"skill\") String skill,","lastModifiedDate":"2024-03-09"},{"lineNumber":64,"author":{"gitId":"chiageng"},"content":" @JsonProperty(\"commission\") String commission) {","lastModifiedDate":"2024-03-09"},{"lineNumber":65,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"chiageng"},"content":" this.salary \u003d salary;","lastModifiedDate":"2024-03-09"},{"lineNumber":70,"author":{"gitId":"chiageng"},"content":" this.employment \u003d employment;","lastModifiedDate":"2024-03-09"},{"lineNumber":71,"author":{"gitId":"chiageng"},"content":" this.product \u003d product;","lastModifiedDate":"2024-03-09"},{"lineNumber":72,"author":{"gitId":"chiageng"},"content":" this.price \u003d price;","lastModifiedDate":"2024-03-09"},{"lineNumber":73,"author":{"gitId":"chiageng"},"content":" this.skill \u003d skill;","lastModifiedDate":"2024-03-09"},{"lineNumber":74,"author":{"gitId":"jannaleong"},"content":" this.note \u003d note;","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"chiageng"},"content":" this.commission \u003d commission;","lastModifiedDate":"2024-03-09"},{"lineNumber":76,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09"},{"lineNumber":77,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","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":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"jannaleong"},"content":" note \u003d source.getNote().toString();","lastModifiedDate":"2024-03-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09"},{"lineNumber":91,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","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":"chiageng"},"content":" public void setEmployment(String employment) {","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"chiageng"},"content":" this.employment \u003d employment;","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"chiageng"},"content":" public void setSalary(String salary) {","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"chiageng"},"content":" this.salary \u003d salary;","lastModifiedDate":"2024-03-18"},{"lineNumber":101,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":102,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":103,"author":{"gitId":"chiageng"},"content":" public void setProduct(String product) {","lastModifiedDate":"2024-03-18"},{"lineNumber":104,"author":{"gitId":"chiageng"},"content":" this.product \u003d product;","lastModifiedDate":"2024-03-18"},{"lineNumber":105,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":106,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":107,"author":{"gitId":"chiageng"},"content":" public void setPrice(String price) {","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"chiageng"},"content":" this.price \u003d price;","lastModifiedDate":"2024-03-18"},{"lineNumber":109,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":110,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"chiageng"},"content":" public void setSkill(String skill) {","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"chiageng"},"content":" this.skill \u003d skill;","lastModifiedDate":"2024-03-18"},{"lineNumber":113,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":115,"author":{"gitId":"chiageng"},"content":" public void setCommission(String commission) {","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"chiageng"},"content":" this.commission \u003d commission;","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":118,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":119,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09"},{"lineNumber":127,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":130,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":136,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":138,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":139,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":141,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":142,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":144,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":146,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":147,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":149,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":150,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":154,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":155,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":157,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":158,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":160,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13"},{"lineNumber":163,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":164,"author":{"gitId":"chiageng"},"content":" if (salary !\u003d null \u0026\u0026 employment !\u003d null) {","lastModifiedDate":"2024-03-09"},{"lineNumber":165,"author":{"gitId":"chiageng"},"content":" if (!Salary.isValidSalary(salary)) {","lastModifiedDate":"2024-03-09"},{"lineNumber":166,"author":{"gitId":"chiageng"},"content":" throw new IllegalValueException(Salary.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-09"},{"lineNumber":167,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":168,"author":{"gitId":"chiageng"},"content":" if (!Employment.isValidEmployment(employment)) {","lastModifiedDate":"2024-03-09"},{"lineNumber":169,"author":{"gitId":"chiageng"},"content":" throw new IllegalValueException(Employment.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-09"},{"lineNumber":170,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":171,"author":{"gitId":"chiageng"},"content":" final Salary modelSalary \u003d new Salary(salary);","lastModifiedDate":"2024-03-09"},{"lineNumber":172,"author":{"gitId":"chiageng"},"content":" final Employment modelEmployment \u003d new Employment(employment);","lastModifiedDate":"2024-03-09"},{"lineNumber":173,"author":{"gitId":"jannaleong"},"content":" Staff currStaff \u003d new Staff(modelName, modelPhone, modelEmail, modelAddress,","lastModifiedDate":"2024-03-23"},{"lineNumber":174,"author":{"gitId":"jannaleong"},"content":" modelTags, modelSalary, modelEmployment);","lastModifiedDate":"2024-03-23"},{"lineNumber":175,"author":{"gitId":"jannaleong"},"content":" currStaff.setNoteContent(note);","lastModifiedDate":"2024-03-23"},{"lineNumber":176,"author":{"gitId":"jannaleong"},"content":" return currStaff;","lastModifiedDate":"2024-03-23"},{"lineNumber":177,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":178,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":179,"author":{"gitId":"chiageng"},"content":" if (product !\u003d null \u0026\u0026 price !\u003d null) {","lastModifiedDate":"2024-03-09"},{"lineNumber":180,"author":{"gitId":"chiageng"},"content":" if (!Product.isValidProduct(product)) {","lastModifiedDate":"2024-03-09"},{"lineNumber":181,"author":{"gitId":"chiageng"},"content":" throw new IllegalValueException(Product.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-09"},{"lineNumber":182,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":183,"author":{"gitId":"chiageng"},"content":" if (!Price.isValidPrice(price)) {","lastModifiedDate":"2024-03-09"},{"lineNumber":184,"author":{"gitId":"chiageng"},"content":" throw new IllegalValueException(Price.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-09"},{"lineNumber":185,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":186,"author":{"gitId":"chiageng"},"content":" final Product modelProduct \u003d new Product(product);","lastModifiedDate":"2024-03-09"},{"lineNumber":187,"author":{"gitId":"chiageng"},"content":" final Price modelPrice \u003d new Price(price);","lastModifiedDate":"2024-03-09"},{"lineNumber":188,"author":{"gitId":"jannaleong"},"content":" Supplier currSupplier \u003d new Supplier(modelName, modelPhone, modelEmail, modelAddress, modelTags,","lastModifiedDate":"2024-03-23"},{"lineNumber":189,"author":{"gitId":"chiageng"},"content":" modelProduct, modelPrice);","lastModifiedDate":"2024-03-09"},{"lineNumber":190,"author":{"gitId":"jannaleong"},"content":" currSupplier.setNoteContent(note);","lastModifiedDate":"2024-03-23"},{"lineNumber":191,"author":{"gitId":"jannaleong"},"content":" return currSupplier;","lastModifiedDate":"2024-03-23"},{"lineNumber":192,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":193,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":194,"author":{"gitId":"chiageng"},"content":" if (skill !\u003d null \u0026\u0026 commission !\u003d null) {","lastModifiedDate":"2024-03-09"},{"lineNumber":195,"author":{"gitId":"chiageng"},"content":" if (!Skill.isValidSkill(skill)) {","lastModifiedDate":"2024-03-09"},{"lineNumber":196,"author":{"gitId":"chiageng"},"content":" throw new IllegalValueException(Skill.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-09"},{"lineNumber":197,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":198,"author":{"gitId":"chiageng"},"content":" if (!Commission.isValidCommission(commission)) {","lastModifiedDate":"2024-03-09"},{"lineNumber":199,"author":{"gitId":"chiageng"},"content":" throw new IllegalValueException(Commission.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-09"},{"lineNumber":200,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":201,"author":{"gitId":"chiageng"},"content":" final Skill modelSkill \u003d new Skill(skill);","lastModifiedDate":"2024-03-09"},{"lineNumber":202,"author":{"gitId":"chiageng"},"content":" final Commission modelCommission \u003d new Commission(commission);","lastModifiedDate":"2024-03-09"},{"lineNumber":203,"author":{"gitId":"jannaleong"},"content":" Maintainer currMaintainer \u003d new Maintainer(modelName, modelPhone, modelEmail, modelAddress, modelTags,","lastModifiedDate":"2024-03-23"},{"lineNumber":204,"author":{"gitId":"chiageng"},"content":" modelSkill, modelCommission);","lastModifiedDate":"2024-03-09"},{"lineNumber":205,"author":{"gitId":"jannaleong"},"content":" currMaintainer.setNoteContent(note);","lastModifiedDate":"2024-03-23"},{"lineNumber":206,"author":{"gitId":"jannaleong"},"content":" return currMaintainer;","lastModifiedDate":"2024-03-23"},{"lineNumber":207,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":208,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":209,"author":{"gitId":"jannaleong"},"content":" if (note \u003d\u003d null) {","lastModifiedDate":"2024-03-18"},{"lineNumber":210,"author":{"gitId":"jannaleong"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Note.class.getSimpleName()));","lastModifiedDate":"2024-03-18"},{"lineNumber":211,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":212,"author":{"gitId":"jannaleong"},"content":" if (!Note.isValidNote(note)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":213,"author":{"gitId":"jannaleong"},"content":" throw new IllegalValueException(Note.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":214,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":215,"author":{"gitId":"jannaleong"},"content":" final Note modelNote \u003d new Note(note);","lastModifiedDate":"2024-03-18"},{"lineNumber":216,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":217,"author":{"gitId":"jannaleong"},"content":" return new Person(modelName, modelPhone, modelEmail, modelAddress, modelNote, modelTags);","lastModifiedDate":"2024-03-18"},{"lineNumber":218,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":220,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"chiageng":89,"jannaleong":24,"-":107}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedStaff.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chiageng"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-09"},{"lineNumber":2,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":3,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-09"},{"lineNumber":4,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Staff;","lastModifiedDate":"2024-03-09"},{"lineNumber":5,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":6,"author":{"gitId":"chiageng"},"content":"/**","lastModifiedDate":"2024-03-09"},{"lineNumber":7,"author":{"gitId":"chiageng"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2024-03-09"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":"class JsonAdaptedStaff extends JsonAdaptedPerson {","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2024-03-09"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2024-03-09"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":" public JsonAdaptedStaff(Person source) {","lastModifiedDate":"2024-03-09"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":" super(source);","lastModifiedDate":"2024-03-09"},{"lineNumber":20,"author":{"gitId":"chiageng"},"content":" Staff staff \u003d (Staff) source;","lastModifiedDate":"2024-03-09"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":" setSalary(staff.getSalary().value);","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"chiageng"},"content":" setEmployment(staff.getEmployment().value);","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":26,"author":{"gitId":"chiageng"},"content":"}","lastModifiedDate":"2024-03-09"}],"authorContributionMap":{"chiageng":26}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedSupplier.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chiageng"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-09"},{"lineNumber":2,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":3,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-09"},{"lineNumber":4,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Supplier;","lastModifiedDate":"2024-03-09"},{"lineNumber":5,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":6,"author":{"gitId":"chiageng"},"content":"/**","lastModifiedDate":"2024-03-09"},{"lineNumber":7,"author":{"gitId":"chiageng"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2024-03-09"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":"class JsonAdaptedSupplier extends JsonAdaptedPerson {","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2024-03-09"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":13,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2024-03-09"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":" public JsonAdaptedSupplier(Person source) {","lastModifiedDate":"2024-03-09"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":" super(source);","lastModifiedDate":"2024-03-09"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":" Supplier supplier \u003d (Supplier) source;","lastModifiedDate":"2024-03-09"},{"lineNumber":20,"author":{"gitId":"chiageng"},"content":" setProduct(supplier.getProduct().value);","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":" setPrice(supplier.getPrice().value);","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":23,"author":{"gitId":"chiageng"},"content":"}","lastModifiedDate":"2024-03-09"}],"authorContributionMap":{"chiageng":23}},{"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":"chiageng"},"content":"import seedu.address.model.person.Maintainer;","lastModifiedDate":"2024-03-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Staff;","lastModifiedDate":"2024-03-09"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Supplier;","lastModifiedDate":"2024-03-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * An Immutable AddressBook that is serializable to JSON format.","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"@JsonRootName(value \u003d \"addressbook\")","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"class JsonSerializableAddressBook {","lastModifiedDate":"2018-12-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"Persons list contains duplicate person(s).\";","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"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":"-"},"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":"-"},"content":" public JsonSerializableAddressBook(@JsonProperty(\"persons\") List\u003cJsonAdaptedPerson\u003e persons) {","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" this.persons.addAll(persons);","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":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Converts a given {@code ReadOnlyAddressBook} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * @param source future changes to this will not affect the created {@code JsonSerializableAddressBook}.","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public JsonSerializableAddressBook(ReadOnlyAddressBook source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"chiageng"},"content":" persons.addAll(source.getPersonList()","lastModifiedDate":"2024-03-09"},{"lineNumber":44,"author":{"gitId":"chiageng"},"content":" .stream()","lastModifiedDate":"2024-03-09"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":" .map(person -\u003e {","lastModifiedDate":"2024-03-09"},{"lineNumber":46,"author":{"gitId":"chiageng"},"content":" if (person instanceof Staff) {","lastModifiedDate":"2024-03-09"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":" return new JsonAdaptedStaff(person);","lastModifiedDate":"2024-03-09"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":" } else if (person instanceof Maintainer) {","lastModifiedDate":"2024-03-09"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":" return new JsonAdaptedMaintainer(person);","lastModifiedDate":"2024-03-09"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":" } else if (person instanceof Supplier) {","lastModifiedDate":"2024-03-09"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":" return new JsonAdaptedSupplier(person);","lastModifiedDate":"2024-03-09"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":" } else {","lastModifiedDate":"2024-03-09"},{"lineNumber":53,"author":{"gitId":"chiageng"},"content":" return new JsonAdaptedPerson(person);","lastModifiedDate":"2024-03-09"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":55,"author":{"gitId":"chiageng"},"content":" })","lastModifiedDate":"2024-03-09"},{"lineNumber":56,"author":{"gitId":"chiageng"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2024-03-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","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":" * Converts this address book into the model\u0027s {@code AddressBook} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated.","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public AddressBook toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" for (JsonAdaptedPerson jsonAdaptedPerson : persons) {","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" Person person \u003d jsonAdaptedPerson.toModelType();","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":69,"author":{"gitId":"-"},"content":" if (addressBook.hasPerson(person)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"chiageng":18,"-":59}},{"path":"src/main/java/seedu/address/ui/HelpAddWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":"import javafx.scene.input.Clipboard;","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":"import javafx.scene.input.ClipboardContent;","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":"/**","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":" * Controller for a help page.","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":"public class HelpAddWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2024-03-24"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":" public static final String USERGUIDE_URL \u003d \"https://ay2324s2-cs2103t-w10-2.github.io/tp/UserGuide.html\";","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":" public static final String HELP_MESSAGE \u003d \"Adds a other/maintainer/supplier/staff person to pooch planner\"","lastModifiedDate":"2024-03-24"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":" + \"\\n\" + \"\" + \"\\n\"","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":" + \"Format:\" + \"\\n\"","lastModifiedDate":"2024-03-24"},{"lineNumber":22,"author":{"gitId":"jannaleong"},"content":" + \"/pooch-add ; name : [name] ; phone : [phone] ; address : [address] ; email : [email]\" + \"\\n\"","lastModifiedDate":"2024-03-24"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":" + \"/pooch-maintainer ; name : [name] ; phone : [phone] ; address : [address] ;\"","lastModifiedDate":"2024-03-24"},{"lineNumber":24,"author":{"gitId":"jannaleong"},"content":" + \" email : [email] ; skill : [skill] ; commission : [commission/hr]\" + \"\\n\"","lastModifiedDate":"2024-03-24"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":" + \"/pooch-supplier ; name : [name] ; phone : [phone] ; address : [address] ;\"","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"jannaleong"},"content":" + \" email : [email] ; product : [product] ; price : [price/(quantity)]\" + \"\\n\"","lastModifiedDate":"2024-03-24"},{"lineNumber":27,"author":{"gitId":"jannaleong"},"content":" + \"/pooch-staff ; name : [name] ; phone : [phone] ; address : [address] ;\"","lastModifiedDate":"2024-03-24"},{"lineNumber":28,"author":{"gitId":"jannaleong"},"content":" + \" email : [email] ; salary : [salary/hr] ; employment : [part/full]\" + \"\\n\"","lastModifiedDate":"2024-03-24"},{"lineNumber":29,"author":{"gitId":"jannaleong"},"content":" + \"\\n\" + \"\" + \"\\n\"","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"jannaleong"},"content":" + \"Go to our UG for more information : \" + USERGUIDE_URL;","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"jannaleong"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(HelpWindow.class);","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"jannaleong"},"content":" private static final String FXML \u003d \"HelpWindow.fxml\";","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"jannaleong"},"content":" @FXML","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"jannaleong"},"content":" private Button copyButton;","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"jannaleong"},"content":" @FXML","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"jannaleong"},"content":" private Label helpMessage;","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"jannaleong"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"jannaleong"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"jannaleong"},"content":" * @param root Stage to use as the root of the HelpWindow.","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"jannaleong"},"content":" public HelpAddWindow(Stage root) {","lastModifiedDate":"2024-03-24"},{"lineNumber":47,"author":{"gitId":"jannaleong"},"content":" super(FXML, root);","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"jannaleong"},"content":" helpMessage.setText(HELP_MESSAGE);","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"jannaleong"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"jannaleong"},"content":" public HelpAddWindow() {","lastModifiedDate":"2024-03-24"},{"lineNumber":55,"author":{"gitId":"jannaleong"},"content":" this(new Stage());","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"jannaleong"},"content":" * Shows the help window.","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"jannaleong"},"content":" * @throws IllegalStateException","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"jannaleong"},"content":" * \u003cul\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"jannaleong"},"content":" * \u003cli\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"jannaleong"},"content":" * if this method is called on a thread other than the JavaFX Application Thread.","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"jannaleong"},"content":" * \u003c/li\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"jannaleong"},"content":" * \u003cli\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":66,"author":{"gitId":"jannaleong"},"content":" * if this method is called during animation or layout processing.","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"jannaleong"},"content":" * \u003c/li\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":68,"author":{"gitId":"jannaleong"},"content":" * \u003cli\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"jannaleong"},"content":" * if this method is called on the primary stage.","lastModifiedDate":"2024-03-11"},{"lineNumber":70,"author":{"gitId":"jannaleong"},"content":" * \u003c/li\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":71,"author":{"gitId":"jannaleong"},"content":" * \u003cli\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":72,"author":{"gitId":"jannaleong"},"content":" * if {@code dialogStage} is already showing.","lastModifiedDate":"2024-03-11"},{"lineNumber":73,"author":{"gitId":"jannaleong"},"content":" * \u003c/li\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"jannaleong"},"content":" * \u003c/ul\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":75,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":76,"author":{"gitId":"jannaleong"},"content":" public void show() {","lastModifiedDate":"2024-03-11"},{"lineNumber":77,"author":{"gitId":"jannaleong"},"content":" String loggerSuccessMsg \u003d \"Showing help page about the application.\";","lastModifiedDate":"2024-03-13"},{"lineNumber":78,"author":{"gitId":"jannaleong"},"content":" logger.fine(loggerSuccessMsg);","lastModifiedDate":"2024-03-13"},{"lineNumber":79,"author":{"gitId":"jannaleong"},"content":" getRoot().show();","lastModifiedDate":"2024-03-11"},{"lineNumber":80,"author":{"gitId":"jannaleong"},"content":" getRoot().centerOnScreen();","lastModifiedDate":"2024-03-11"},{"lineNumber":81,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":82,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":83,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":84,"author":{"gitId":"jannaleong"},"content":" * Returns true if the help window is currently being shown.","lastModifiedDate":"2024-03-11"},{"lineNumber":85,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":86,"author":{"gitId":"jannaleong"},"content":" public boolean isShowing() {","lastModifiedDate":"2024-03-11"},{"lineNumber":87,"author":{"gitId":"jannaleong"},"content":" return getRoot().isShowing();","lastModifiedDate":"2024-03-11"},{"lineNumber":88,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":89,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":90,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":91,"author":{"gitId":"jannaleong"},"content":" * Hides the help window.","lastModifiedDate":"2024-03-11"},{"lineNumber":92,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":93,"author":{"gitId":"jannaleong"},"content":" public void hide() {","lastModifiedDate":"2024-03-11"},{"lineNumber":94,"author":{"gitId":"jannaleong"},"content":" getRoot().hide();","lastModifiedDate":"2024-03-11"},{"lineNumber":95,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":96,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":97,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":98,"author":{"gitId":"jannaleong"},"content":" * Focuses on the help window.","lastModifiedDate":"2024-03-11"},{"lineNumber":99,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":100,"author":{"gitId":"jannaleong"},"content":" public void focus() {","lastModifiedDate":"2024-03-11"},{"lineNumber":101,"author":{"gitId":"jannaleong"},"content":" getRoot().requestFocus();","lastModifiedDate":"2024-03-11"},{"lineNumber":102,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":103,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":104,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":105,"author":{"gitId":"jannaleong"},"content":" * Copies the URL to the user guide to the clipboard.","lastModifiedDate":"2024-03-11"},{"lineNumber":106,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":107,"author":{"gitId":"jannaleong"},"content":" @FXML","lastModifiedDate":"2024-03-11"},{"lineNumber":108,"author":{"gitId":"jannaleong"},"content":" private void copyUrl() {","lastModifiedDate":"2024-03-11"},{"lineNumber":109,"author":{"gitId":"jannaleong"},"content":" final Clipboard clipboard \u003d Clipboard.getSystemClipboard();","lastModifiedDate":"2024-03-11"},{"lineNumber":110,"author":{"gitId":"jannaleong"},"content":" final ClipboardContent url \u003d new ClipboardContent();","lastModifiedDate":"2024-03-11"},{"lineNumber":111,"author":{"gitId":"jannaleong"},"content":" url.putString(USERGUIDE_URL);","lastModifiedDate":"2024-03-11"},{"lineNumber":112,"author":{"gitId":"jannaleong"},"content":" clipboard.setContent(url);","lastModifiedDate":"2024-03-11"},{"lineNumber":113,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":114,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"jannaleong":114}},{"path":"src/main/java/seedu/address/ui/HelpDeleteWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":"import javafx.scene.input.Clipboard;","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":"import javafx.scene.input.ClipboardContent;","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":"/**","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":" * Controller for a help page.","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":"public class HelpDeleteWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":" public static final String USERGUIDE_URL \u003d \"https://ay2324s2-cs2103t-w10-2.github.io/tp/UserGuide.html\";","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":" public static final String HELP_MESSAGE \u003d \"Deletes the specified person from the Pooch Planner\"","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":" + \"\\n\" + \"\" + \"\\n\"","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":" + \"Format: /delete ; name : [name] \"","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"jannaleong"},"content":" + \"\\n\" + \"\" + \"\\n\"","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":" + \"Go to our UG for more information : \" + USERGUIDE_URL;","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(HelpWindow.class);","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"jannaleong"},"content":" private static final String FXML \u003d \"HelpWindow.fxml\";","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"jannaleong"},"content":" @FXML","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"jannaleong"},"content":" private Button copyButton;","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"jannaleong"},"content":" @FXML","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"jannaleong"},"content":" private Label helpMessage;","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"jannaleong"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"jannaleong"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"jannaleong"},"content":" * @param root Stage to use as the root of the HelpWindow.","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"jannaleong"},"content":" public HelpDeleteWindow(Stage root) {","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"jannaleong"},"content":" super(FXML, root);","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"jannaleong"},"content":" helpMessage.setText(HELP_MESSAGE);","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"jannaleong"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"jannaleong"},"content":" public HelpDeleteWindow() {","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"jannaleong"},"content":" this(new Stage());","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"jannaleong"},"content":" * Shows the help window.","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"jannaleong"},"content":" * @throws IllegalStateException","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"jannaleong"},"content":" * \u003cul\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"jannaleong"},"content":" * \u003cli\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"jannaleong"},"content":" * if this method is called on a thread other than the JavaFX Application Thread.","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"jannaleong"},"content":" * \u003c/li\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"jannaleong"},"content":" * \u003cli\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"jannaleong"},"content":" * if this method is called during animation or layout processing.","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"jannaleong"},"content":" * \u003c/li\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"jannaleong"},"content":" * \u003cli\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"jannaleong"},"content":" * if this method is called on the primary stage.","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"jannaleong"},"content":" * \u003c/li\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"jannaleong"},"content":" * \u003cli\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"jannaleong"},"content":" * if {@code dialogStage} is already showing.","lastModifiedDate":"2024-03-11"},{"lineNumber":66,"author":{"gitId":"jannaleong"},"content":" * \u003c/li\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"jannaleong"},"content":" * \u003c/ul\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":68,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"jannaleong"},"content":" public void show() {","lastModifiedDate":"2024-03-11"},{"lineNumber":70,"author":{"gitId":"jannaleong"},"content":" String loggerSuccessMsg \u003d \"Showing help page about the application.\";","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"jannaleong"},"content":" logger.fine(loggerSuccessMsg);","lastModifiedDate":"2024-03-13"},{"lineNumber":72,"author":{"gitId":"jannaleong"},"content":" getRoot().show();","lastModifiedDate":"2024-03-11"},{"lineNumber":73,"author":{"gitId":"jannaleong"},"content":" getRoot().centerOnScreen();","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":75,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":76,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":77,"author":{"gitId":"jannaleong"},"content":" * Returns true if the help window is currently being shown.","lastModifiedDate":"2024-03-11"},{"lineNumber":78,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":79,"author":{"gitId":"jannaleong"},"content":" public boolean isShowing() {","lastModifiedDate":"2024-03-11"},{"lineNumber":80,"author":{"gitId":"jannaleong"},"content":" return getRoot().isShowing();","lastModifiedDate":"2024-03-11"},{"lineNumber":81,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":82,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":83,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":84,"author":{"gitId":"jannaleong"},"content":" * Hides the help window.","lastModifiedDate":"2024-03-11"},{"lineNumber":85,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":86,"author":{"gitId":"jannaleong"},"content":" public void hide() {","lastModifiedDate":"2024-03-11"},{"lineNumber":87,"author":{"gitId":"jannaleong"},"content":" getRoot().hide();","lastModifiedDate":"2024-03-11"},{"lineNumber":88,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":89,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":90,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":91,"author":{"gitId":"jannaleong"},"content":" * Focuses on the help window.","lastModifiedDate":"2024-03-11"},{"lineNumber":92,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":93,"author":{"gitId":"jannaleong"},"content":" public void focus() {","lastModifiedDate":"2024-03-11"},{"lineNumber":94,"author":{"gitId":"jannaleong"},"content":" getRoot().requestFocus();","lastModifiedDate":"2024-03-11"},{"lineNumber":95,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":96,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":97,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":98,"author":{"gitId":"jannaleong"},"content":" * Copies the URL to the user guide to the clipboard.","lastModifiedDate":"2024-03-11"},{"lineNumber":99,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":100,"author":{"gitId":"jannaleong"},"content":" @FXML","lastModifiedDate":"2024-03-11"},{"lineNumber":101,"author":{"gitId":"jannaleong"},"content":" private void copyUrl() {","lastModifiedDate":"2024-03-11"},{"lineNumber":102,"author":{"gitId":"jannaleong"},"content":" final Clipboard clipboard \u003d Clipboard.getSystemClipboard();","lastModifiedDate":"2024-03-11"},{"lineNumber":103,"author":{"gitId":"jannaleong"},"content":" final ClipboardContent url \u003d new ClipboardContent();","lastModifiedDate":"2024-03-11"},{"lineNumber":104,"author":{"gitId":"jannaleong"},"content":" url.putString(USERGUIDE_URL);","lastModifiedDate":"2024-03-11"},{"lineNumber":105,"author":{"gitId":"jannaleong"},"content":" clipboard.setContent(url);","lastModifiedDate":"2024-03-11"},{"lineNumber":106,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":107,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"jannaleong":107}},{"path":"src/main/java/seedu/address/ui/HelpEditWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":"import javafx.scene.input.Clipboard;","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":"import javafx.scene.input.ClipboardContent;","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":"/**","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":" * Controller for a help page.","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":"public class HelpEditWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":" public static final String USERGUIDE_URL \u003d \"https://ay2324s2-cs2103t-w10-2.github.io/tp/UserGuide.html\";","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":" public static final String HELP_MESSAGE \u003d \"Edit the fields of the specified person in the Pooch Planner\"","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":" + \"\\n\" + \"\" + \"\\n\"","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":" + \"Format:\" + \"\\n\"","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"jannaleong"},"content":" + \"/edit ; name : [name] ; field { [field] : [value] }\" + \"\\n\"","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":" + \"/edit-staff ; name : [name] ; field { [field] : [value] }\" + \"\\n\"","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"jannaleong"},"content":" + \"/edit-supplier ; name : [name] ; field { [field] : [value] }\" + \"\\n\"","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":" + \"/edit-maintainer ; name : [name] ; field { [field] : [value] }\" + \"\\n\"","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"jannaleong"},"content":" + \"\\n\" + \"\" + \"\\n\"","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"jannaleong"},"content":" + \"Go to our UG for more information : \" + USERGUIDE_URL;","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"jannaleong"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(HelpWindow.class);","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"jannaleong"},"content":" private static final String FXML \u003d \"HelpWindow.fxml\";","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"jannaleong"},"content":" @FXML","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"jannaleong"},"content":" private Button copyButton;","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"jannaleong"},"content":" @FXML","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"jannaleong"},"content":" private Label helpMessage;","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"jannaleong"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"jannaleong"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"jannaleong"},"content":" * @param root Stage to use as the root of the HelpWindow.","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"jannaleong"},"content":" public HelpEditWindow(Stage root) {","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"jannaleong"},"content":" super(FXML, root);","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"jannaleong"},"content":" helpMessage.setText(HELP_MESSAGE);","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"jannaleong"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"jannaleong"},"content":" public HelpEditWindow() {","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"jannaleong"},"content":" this(new Stage());","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"jannaleong"},"content":" * Shows the help window.","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"jannaleong"},"content":" * @throws IllegalStateException","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"jannaleong"},"content":" * \u003cul\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"jannaleong"},"content":" * \u003cli\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"jannaleong"},"content":" * if this method is called on a thread other than the JavaFX Application Thread.","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"jannaleong"},"content":" * \u003c/li\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"jannaleong"},"content":" * \u003cli\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"jannaleong"},"content":" * if this method is called during animation or layout processing.","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"jannaleong"},"content":" * \u003c/li\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"jannaleong"},"content":" * \u003cli\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":66,"author":{"gitId":"jannaleong"},"content":" * if this method is called on the primary stage.","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"jannaleong"},"content":" * \u003c/li\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":68,"author":{"gitId":"jannaleong"},"content":" * \u003cli\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"jannaleong"},"content":" * if {@code dialogStage} is already showing.","lastModifiedDate":"2024-03-11"},{"lineNumber":70,"author":{"gitId":"jannaleong"},"content":" * \u003c/li\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":71,"author":{"gitId":"jannaleong"},"content":" * \u003c/ul\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":72,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":73,"author":{"gitId":"jannaleong"},"content":" public void show() {","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"jannaleong"},"content":" String loggerSuccessMsg \u003d \"Showing help page about the application.\";","lastModifiedDate":"2024-03-13"},{"lineNumber":75,"author":{"gitId":"jannaleong"},"content":" logger.fine(loggerSuccessMsg);","lastModifiedDate":"2024-03-13"},{"lineNumber":76,"author":{"gitId":"jannaleong"},"content":" getRoot().show();","lastModifiedDate":"2024-03-11"},{"lineNumber":77,"author":{"gitId":"jannaleong"},"content":" getRoot().centerOnScreen();","lastModifiedDate":"2024-03-11"},{"lineNumber":78,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":79,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":80,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":81,"author":{"gitId":"jannaleong"},"content":" * Returns true if the help window is currently being shown.","lastModifiedDate":"2024-03-11"},{"lineNumber":82,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":83,"author":{"gitId":"jannaleong"},"content":" public boolean isShowing() {","lastModifiedDate":"2024-03-11"},{"lineNumber":84,"author":{"gitId":"jannaleong"},"content":" return getRoot().isShowing();","lastModifiedDate":"2024-03-11"},{"lineNumber":85,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":86,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":87,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":88,"author":{"gitId":"jannaleong"},"content":" * Hides the help window.","lastModifiedDate":"2024-03-11"},{"lineNumber":89,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":90,"author":{"gitId":"jannaleong"},"content":" public void hide() {","lastModifiedDate":"2024-03-11"},{"lineNumber":91,"author":{"gitId":"jannaleong"},"content":" getRoot().hide();","lastModifiedDate":"2024-03-11"},{"lineNumber":92,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":93,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":94,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":95,"author":{"gitId":"jannaleong"},"content":" * Focuses on the help window.","lastModifiedDate":"2024-03-11"},{"lineNumber":96,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":97,"author":{"gitId":"jannaleong"},"content":" public void focus() {","lastModifiedDate":"2024-03-11"},{"lineNumber":98,"author":{"gitId":"jannaleong"},"content":" getRoot().requestFocus();","lastModifiedDate":"2024-03-11"},{"lineNumber":99,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":100,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":101,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":102,"author":{"gitId":"jannaleong"},"content":" * Copies the URL to the user guide to the clipboard.","lastModifiedDate":"2024-03-11"},{"lineNumber":103,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":104,"author":{"gitId":"jannaleong"},"content":" @FXML","lastModifiedDate":"2024-03-11"},{"lineNumber":105,"author":{"gitId":"jannaleong"},"content":" private void copyUrl() {","lastModifiedDate":"2024-03-11"},{"lineNumber":106,"author":{"gitId":"jannaleong"},"content":" final Clipboard clipboard \u003d Clipboard.getSystemClipboard();","lastModifiedDate":"2024-03-11"},{"lineNumber":107,"author":{"gitId":"jannaleong"},"content":" final ClipboardContent url \u003d new ClipboardContent();","lastModifiedDate":"2024-03-11"},{"lineNumber":108,"author":{"gitId":"jannaleong"},"content":" url.putString(USERGUIDE_URL);","lastModifiedDate":"2024-03-11"},{"lineNumber":109,"author":{"gitId":"jannaleong"},"content":" clipboard.setContent(url);","lastModifiedDate":"2024-03-11"},{"lineNumber":110,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":111,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"jannaleong":111}},{"path":"src/main/java/seedu/address/ui/HelpSearchWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":"import javafx.scene.input.Clipboard;","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":"import javafx.scene.input.ClipboardContent;","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":"/**","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":" * Controller for a help page.","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":"public class HelpSearchWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":" public static final String USERGUIDE_URL \u003d \"https://ay2324s2-cs2103t-w10-2.github.io/tp/UserGuide.html\";","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":" public static final String HELP_MESSAGE \u003d \"Searches through the address book using specified fields and keyword\"","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":" + \"\\n\" + \"\" + \"\\n\"","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":" + \"Formats:\" + \"\\n\"","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"jannaleong"},"content":" + \"/search ; name : [full/partial name]\" + \"\\n\"","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":" + \"/search ; phone : [full/partial phone]\" + \"\\n\"","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"jannaleong"},"content":" + \"/search ; address : [full/partial address]\" + \"\\n\"","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":" + \"/search ; email : [full/partial email]\" + \"\\n\"","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"jannaleong"},"content":" + \"/search ; product : [full/partial product name]\" + \"\\n\"","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"jannaleong"},"content":" + \"/search ; employment : [employment]\" + \"\\n\"","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"jannaleong"},"content":" + \"\\n\" + \"\" + \"\\n\"","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"jannaleong"},"content":" + \"Go to our UG for more information : \" + USERGUIDE_URL;","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"jannaleong"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(HelpWindow.class);","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"jannaleong"},"content":" private static final String FXML \u003d \"HelpWindow.fxml\";","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"jannaleong"},"content":" @FXML","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"jannaleong"},"content":" private Button copyButton;","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"jannaleong"},"content":" @FXML","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"jannaleong"},"content":" private Label helpMessage;","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"jannaleong"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"jannaleong"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"jannaleong"},"content":" * @param root Stage to use as the root of the HelpWindow.","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"jannaleong"},"content":" public HelpSearchWindow(Stage root) {","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"jannaleong"},"content":" super(FXML, root);","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"jannaleong"},"content":" helpMessage.setText(HELP_MESSAGE);","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"jannaleong"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"jannaleong"},"content":" public HelpSearchWindow() {","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"jannaleong"},"content":" this(new Stage());","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"jannaleong"},"content":" * Shows the help window.","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"jannaleong"},"content":" * @throws IllegalStateException","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"jannaleong"},"content":" * \u003cul\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"jannaleong"},"content":" * \u003cli\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"jannaleong"},"content":" * if this method is called on a thread other than the JavaFX Application Thread.","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"jannaleong"},"content":" * \u003c/li\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"jannaleong"},"content":" * \u003cli\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"jannaleong"},"content":" * if this method is called during animation or layout processing.","lastModifiedDate":"2024-03-11"},{"lineNumber":66,"author":{"gitId":"jannaleong"},"content":" * \u003c/li\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"jannaleong"},"content":" * \u003cli\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":68,"author":{"gitId":"jannaleong"},"content":" * if this method is called on the primary stage.","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"jannaleong"},"content":" * \u003c/li\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":70,"author":{"gitId":"jannaleong"},"content":" * \u003cli\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":71,"author":{"gitId":"jannaleong"},"content":" * if {@code dialogStage} is already showing.","lastModifiedDate":"2024-03-11"},{"lineNumber":72,"author":{"gitId":"jannaleong"},"content":" * \u003c/li\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":73,"author":{"gitId":"jannaleong"},"content":" * \u003c/ul\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":75,"author":{"gitId":"jannaleong"},"content":" public void show() {","lastModifiedDate":"2024-03-11"},{"lineNumber":76,"author":{"gitId":"jannaleong"},"content":" String loggerSuccessMsg \u003d \"Showing help page about the application.\";","lastModifiedDate":"2024-03-13"},{"lineNumber":77,"author":{"gitId":"jannaleong"},"content":" logger.fine(loggerSuccessMsg);","lastModifiedDate":"2024-03-13"},{"lineNumber":78,"author":{"gitId":"jannaleong"},"content":" getRoot().show();","lastModifiedDate":"2024-03-11"},{"lineNumber":79,"author":{"gitId":"jannaleong"},"content":" getRoot().centerOnScreen();","lastModifiedDate":"2024-03-11"},{"lineNumber":80,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":81,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":82,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":83,"author":{"gitId":"jannaleong"},"content":" * Returns true if the help window is currently being shown.","lastModifiedDate":"2024-03-11"},{"lineNumber":84,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":85,"author":{"gitId":"jannaleong"},"content":" public boolean isShowing() {","lastModifiedDate":"2024-03-11"},{"lineNumber":86,"author":{"gitId":"jannaleong"},"content":" return getRoot().isShowing();","lastModifiedDate":"2024-03-11"},{"lineNumber":87,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":88,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":89,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":90,"author":{"gitId":"jannaleong"},"content":" * Hides the help window.","lastModifiedDate":"2024-03-11"},{"lineNumber":91,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":92,"author":{"gitId":"jannaleong"},"content":" public void hide() {","lastModifiedDate":"2024-03-11"},{"lineNumber":93,"author":{"gitId":"jannaleong"},"content":" getRoot().hide();","lastModifiedDate":"2024-03-11"},{"lineNumber":94,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":95,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":96,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":97,"author":{"gitId":"jannaleong"},"content":" * Focuses on the help window.","lastModifiedDate":"2024-03-11"},{"lineNumber":98,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":99,"author":{"gitId":"jannaleong"},"content":" public void focus() {","lastModifiedDate":"2024-03-11"},{"lineNumber":100,"author":{"gitId":"jannaleong"},"content":" getRoot().requestFocus();","lastModifiedDate":"2024-03-11"},{"lineNumber":101,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":102,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":103,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":104,"author":{"gitId":"jannaleong"},"content":" * Copies the URL to the user guide to the clipboard.","lastModifiedDate":"2024-03-11"},{"lineNumber":105,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":106,"author":{"gitId":"jannaleong"},"content":" @FXML","lastModifiedDate":"2024-03-11"},{"lineNumber":107,"author":{"gitId":"jannaleong"},"content":" private void copyUrl() {","lastModifiedDate":"2024-03-11"},{"lineNumber":108,"author":{"gitId":"jannaleong"},"content":" final Clipboard clipboard \u003d Clipboard.getSystemClipboard();","lastModifiedDate":"2024-03-11"},{"lineNumber":109,"author":{"gitId":"jannaleong"},"content":" final ClipboardContent url \u003d new ClipboardContent();","lastModifiedDate":"2024-03-11"},{"lineNumber":110,"author":{"gitId":"jannaleong"},"content":" url.putString(USERGUIDE_URL);","lastModifiedDate":"2024-03-11"},{"lineNumber":111,"author":{"gitId":"jannaleong"},"content":" clipboard.setContent(url);","lastModifiedDate":"2024-03-11"},{"lineNumber":112,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":113,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"jannaleong":113}},{"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":"jannaleong"},"content":" * Controller for a help page.","lastModifiedDate":"2024-03-13"},{"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":"jannaleong"},"content":" public static final String USERGUIDE_URL \u003d \"https://ay2324s2-cs2103t-w10-2.github.io/tp/UserGuide.html\";","lastModifiedDate":"2024-03-11"},{"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":"jannaleong"},"content":" String loggerSuccessMsg \u003d \"Showing help page about the application.\";","lastModifiedDate":"2024-03-13"},{"lineNumber":67,"author":{"gitId":"jannaleong"},"content":" logger.fine(loggerSuccessMsg);","lastModifiedDate":"2024-03-13"},{"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":{"jannaleong":4,"-":99}},{"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":"jamessinmaojun"},"content":"import seedu.address.logic.messages.HelpMessages;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * The Main Window. Provides the basic application layout containing","lastModifiedDate":"2016-08-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * a menu bar and space where other JavaFX elements can be placed.","lastModifiedDate":"2016-08-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class MainWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-11-29"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"MainWindow.fxml\";","lastModifiedDate":"2016-08-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(getClass());","lastModifiedDate":"2018-08-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Stage primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":" // Independent Ui parts residing in this Ui container","lastModifiedDate":"2016-08-18"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private PersonListPanel personListPanel;","lastModifiedDate":"2016-08-18"},{"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":"jannaleong"},"content":" private HelpDeleteWindow helpDeleteWindow;","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"jannaleong"},"content":" private HelpEditWindow helpEditWindow;","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"jannaleong"},"content":" private HelpSearchWindow helpSearchWindow;","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"jannaleong"},"content":" private HelpAddWindow helpAddWindow;","lastModifiedDate":"2024-03-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private StackPane commandBoxPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":" private MenuItem helpMenuItem;","lastModifiedDate":"2016-08-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" private StackPane personListPanelPlaceholder;","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 resultDisplayPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" private StackPane statusbarPlaceholder;","lastModifiedDate":"2017-05-09"},{"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 MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":66,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21"},{"lineNumber":69,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15"},{"lineNumber":74,"author":{"gitId":"jannaleong"},"content":" helpDeleteWindow \u003d new HelpDeleteWindow();","lastModifiedDate":"2024-03-11"},{"lineNumber":75,"author":{"gitId":"jannaleong"},"content":" helpEditWindow \u003d new HelpEditWindow();","lastModifiedDate":"2024-03-11"},{"lineNumber":76,"author":{"gitId":"jannaleong"},"content":" helpSearchWindow \u003d new HelpSearchWindow();","lastModifiedDate":"2024-03-11"},{"lineNumber":77,"author":{"gitId":"jannaleong"},"content":" helpAddWindow \u003d new HelpAddWindow();","lastModifiedDate":"2024-03-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21"},{"lineNumber":85,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","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":" /**","lastModifiedDate":"2016-12-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","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":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18"},{"lineNumber":109,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":110,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":111,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18"},{"lineNumber":112,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18"},{"lineNumber":113,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":115,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":118,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":119,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16"},{"lineNumber":120,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":121,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21"},{"lineNumber":122,"author":{"gitId":"-"},"content":" personListPanel \u003d new PersonListPanel(logic.getFilteredPersonList());","lastModifiedDate":"2019-01-25"},{"lineNumber":123,"author":{"gitId":"-"},"content":" personListPanelPlaceholder.getChildren().add(personListPanel.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09"},{"lineNumber":126,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getAddressBookFilePath());","lastModifiedDate":"2019-01-25"},{"lineNumber":129,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25"},{"lineNumber":132,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":135,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":136,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27"},{"lineNumber":137,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":138,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":139,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27"},{"lineNumber":140,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27"},{"lineNumber":141,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27"},{"lineNumber":142,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27"},{"lineNumber":143,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27"},{"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":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":148,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15"},{"lineNumber":149,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":150,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":151,"author":{"gitId":"jannaleong"},"content":" public void handleAllHelp(CommandResult commandResult) {","lastModifiedDate":"2024-03-24"},{"lineNumber":152,"author":{"gitId":"jannaleong"},"content":" String userFeedback \u003d commandResult.getFeedbackToUser();","lastModifiedDate":"2024-03-24"},{"lineNumber":153,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":154,"author":{"gitId":"jannaleong"},"content":" Boolean isHelpCommand \u003d commandResult.isShowHelp()","lastModifiedDate":"2024-03-24"},{"lineNumber":155,"author":{"gitId":"jannaleong"},"content":" \u0026\u0026 userFeedback.equals(HelpMessages.MESSAGES_SHOWING_HELP_MESSAGE);","lastModifiedDate":"2024-03-24"},{"lineNumber":156,"author":{"gitId":"jannaleong"},"content":" Boolean isDeleteHelpCommand \u003d commandResult.isShowHelp()","lastModifiedDate":"2024-03-24"},{"lineNumber":157,"author":{"gitId":"jannaleong"},"content":" \u0026\u0026 userFeedback.equals(HelpMessages.MESSAGES_SHOWING_DELETE_HELP_MESSAGE);","lastModifiedDate":"2024-03-24"},{"lineNumber":158,"author":{"gitId":"jannaleong"},"content":" Boolean isEditHelpCommand \u003d commandResult.isShowHelp()","lastModifiedDate":"2024-03-24"},{"lineNumber":159,"author":{"gitId":"jannaleong"},"content":" \u0026\u0026 userFeedback.equals(HelpMessages.MESSAGES_SHOWING_EDIT_HELP_MESSAGE);","lastModifiedDate":"2024-03-24"},{"lineNumber":160,"author":{"gitId":"jannaleong"},"content":" Boolean isSearchHelpCommand \u003d commandResult.isShowHelp()","lastModifiedDate":"2024-03-24"},{"lineNumber":161,"author":{"gitId":"jannaleong"},"content":" \u0026\u0026 userFeedback.equals(HelpMessages.MESSAGES_SHOWING_SEARCH_HELP_MESSAGE);","lastModifiedDate":"2024-03-24"},{"lineNumber":162,"author":{"gitId":"jannaleong"},"content":" Boolean isAddHelpCommand \u003d commandResult.isShowHelp()","lastModifiedDate":"2024-03-24"},{"lineNumber":163,"author":{"gitId":"jannaleong"},"content":" \u0026\u0026 userFeedback.equals(HelpMessages.MESSAGES_SHOWING_ADD_HELP_MESSAGE);","lastModifiedDate":"2024-03-24"},{"lineNumber":164,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":165,"author":{"gitId":"jannaleong"},"content":" if (isHelpCommand) {","lastModifiedDate":"2024-03-24"},{"lineNumber":166,"author":{"gitId":"jannaleong"},"content":" handleHelp();","lastModifiedDate":"2024-03-24"},{"lineNumber":167,"author":{"gitId":"jannaleong"},"content":" } else if (isDeleteHelpCommand) {","lastModifiedDate":"2024-03-24"},{"lineNumber":168,"author":{"gitId":"jannaleong"},"content":" handleDeleteHelp();","lastModifiedDate":"2024-03-24"},{"lineNumber":169,"author":{"gitId":"jannaleong"},"content":" } else if (isEditHelpCommand) {","lastModifiedDate":"2024-03-24"},{"lineNumber":170,"author":{"gitId":"jannaleong"},"content":" handleEditHelp();","lastModifiedDate":"2024-03-24"},{"lineNumber":171,"author":{"gitId":"jannaleong"},"content":" } else if (isSearchHelpCommand) {","lastModifiedDate":"2024-03-24"},{"lineNumber":172,"author":{"gitId":"jannaleong"},"content":" handleSearchHelp();","lastModifiedDate":"2024-03-24"},{"lineNumber":173,"author":{"gitId":"jannaleong"},"content":" } else if (isAddHelpCommand) {","lastModifiedDate":"2024-03-24"},{"lineNumber":174,"author":{"gitId":"jannaleong"},"content":" handleAddHelp();","lastModifiedDate":"2024-03-24"},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":177,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":178,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":179,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":180,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2024-03-24"},{"lineNumber":181,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":182,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2024-03-11"},{"lineNumber":183,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2024-03-24"},{"lineNumber":184,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2024-03-24"},{"lineNumber":185,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2024-03-24"},{"lineNumber":186,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2024-03-24"},{"lineNumber":187,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2024-03-24"},{"lineNumber":188,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":189,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":191,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":192,"author":{"gitId":"jannaleong"},"content":" * Opens the help delete window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2024-03-11"},{"lineNumber":193,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":194,"author":{"gitId":"jannaleong"},"content":" @FXML","lastModifiedDate":"2024-03-11"},{"lineNumber":195,"author":{"gitId":"jannaleong"},"content":" public void handleDeleteHelp() {","lastModifiedDate":"2024-03-11"},{"lineNumber":196,"author":{"gitId":"jannaleong"},"content":" if (!helpDeleteWindow.isShowing()) {","lastModifiedDate":"2024-03-24"},{"lineNumber":197,"author":{"gitId":"jannaleong"},"content":" helpDeleteWindow.show();","lastModifiedDate":"2024-03-11"},{"lineNumber":198,"author":{"gitId":"jannaleong"},"content":" } else {","lastModifiedDate":"2024-03-24"},{"lineNumber":199,"author":{"gitId":"jannaleong"},"content":" helpDeleteWindow.focus();","lastModifiedDate":"2024-03-24"},{"lineNumber":200,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":201,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":202,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":203,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":204,"author":{"gitId":"jannaleong"},"content":" * Opens the help edit window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2024-03-11"},{"lineNumber":205,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":206,"author":{"gitId":"jannaleong"},"content":" @FXML","lastModifiedDate":"2024-03-11"},{"lineNumber":207,"author":{"gitId":"jannaleong"},"content":" public void handleEditHelp() {","lastModifiedDate":"2024-03-11"},{"lineNumber":208,"author":{"gitId":"jannaleong"},"content":" if (!helpEditWindow.isShowing()) {","lastModifiedDate":"2024-03-24"},{"lineNumber":209,"author":{"gitId":"jannaleong"},"content":" helpEditWindow.show();","lastModifiedDate":"2024-03-11"},{"lineNumber":210,"author":{"gitId":"jannaleong"},"content":" } else {","lastModifiedDate":"2024-03-24"},{"lineNumber":211,"author":{"gitId":"jannaleong"},"content":" helpEditWindow.focus();","lastModifiedDate":"2024-03-24"},{"lineNumber":212,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":213,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":214,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":215,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":216,"author":{"gitId":"jannaleong"},"content":" * Opens the help search window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2024-03-11"},{"lineNumber":217,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":218,"author":{"gitId":"jannaleong"},"content":" @FXML","lastModifiedDate":"2024-03-11"},{"lineNumber":219,"author":{"gitId":"jannaleong"},"content":" public void handleSearchHelp() {","lastModifiedDate":"2024-03-11"},{"lineNumber":220,"author":{"gitId":"jannaleong"},"content":" if (!helpSearchWindow.isShowing()) {","lastModifiedDate":"2024-03-24"},{"lineNumber":221,"author":{"gitId":"jannaleong"},"content":" helpSearchWindow.show();","lastModifiedDate":"2024-03-11"},{"lineNumber":222,"author":{"gitId":"jannaleong"},"content":" } else {","lastModifiedDate":"2024-03-24"},{"lineNumber":223,"author":{"gitId":"jannaleong"},"content":" helpSearchWindow.focus();","lastModifiedDate":"2024-03-24"},{"lineNumber":224,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":225,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":226,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":227,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":228,"author":{"gitId":"jannaleong"},"content":" * Opens the help search window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2024-03-24"},{"lineNumber":229,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":230,"author":{"gitId":"jannaleong"},"content":" @FXML","lastModifiedDate":"2024-03-11"},{"lineNumber":231,"author":{"gitId":"jannaleong"},"content":" public void handleAddHelp() {","lastModifiedDate":"2024-03-24"},{"lineNumber":232,"author":{"gitId":"jannaleong"},"content":" if (!helpAddWindow.isShowing()) {","lastModifiedDate":"2024-03-24"},{"lineNumber":233,"author":{"gitId":"jannaleong"},"content":" helpAddWindow.show();","lastModifiedDate":"2024-03-24"},{"lineNumber":234,"author":{"gitId":"jannaleong"},"content":" } else {","lastModifiedDate":"2024-03-24"},{"lineNumber":235,"author":{"gitId":"jannaleong"},"content":" helpAddWindow.focus();","lastModifiedDate":"2024-03-24"},{"lineNumber":236,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":237,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":238,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":239,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15"},{"lineNumber":240,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":241,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":243,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":244,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18"},{"lineNumber":245,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":246,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":247,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18"},{"lineNumber":248,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08"},{"lineNumber":249,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08"},{"lineNumber":250,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08"},{"lineNumber":251,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":252,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":253,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":255,"author":{"gitId":"-"},"content":" public PersonListPanel getPersonListPanel() {","lastModifiedDate":"2016-08-25"},{"lineNumber":256,"author":{"gitId":"-"},"content":" return personListPanel;","lastModifiedDate":"2018-08-14"},{"lineNumber":257,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":259,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":260,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":261,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":262,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09"},{"lineNumber":263,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":264,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09"},{"lineNumber":265,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":266,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09"},{"lineNumber":267,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":268,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":269,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":270,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2024-03-24"},{"lineNumber":271,"author":{"gitId":"jannaleong"},"content":" handleAllHelp(commandResult);","lastModifiedDate":"2024-03-24"},{"lineNumber":272,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":273,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":274,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09"},{"lineNumber":275,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":276,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":277,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09"},{"lineNumber":278,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13"},{"lineNumber":279,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09"},{"lineNumber":280,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09"},{"lineNumber":281,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":282,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":283,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"jamessinmaojun":1,"jannaleong":83,"-":199}},{"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":"chiageng"},"content":"import seedu.address.model.person.Maintainer;","lastModifiedDate":"2024-03-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Staff;","lastModifiedDate":"2024-03-09"},{"lineNumber":13,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Supplier;","lastModifiedDate":"2024-03-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2017-08-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2016-09-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25"},{"lineNumber":27,"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":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public final Person person;","lastModifiedDate":"2018-01-10"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private Label address;","lastModifiedDate":"2016-09-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":" private Label salary;","lastModifiedDate":"2024-03-09"},{"lineNumber":46,"author":{"gitId":"chiageng"},"content":" @FXML","lastModifiedDate":"2024-03-09"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":" private Label employment;","lastModifiedDate":"2024-03-09"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":" @FXML","lastModifiedDate":"2024-03-09"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":" private Label product;","lastModifiedDate":"2024-03-09"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":" @FXML","lastModifiedDate":"2024-03-09"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":" private Label price;","lastModifiedDate":"2024-03-09"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":" @FXML","lastModifiedDate":"2024-03-09"},{"lineNumber":53,"author":{"gitId":"chiageng"},"content":" private Label skill;","lastModifiedDate":"2024-03-09"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":" @FXML","lastModifiedDate":"2024-03-09"},{"lineNumber":55,"author":{"gitId":"chiageng"},"content":" private Label commission;","lastModifiedDate":"2024-03-09"},{"lineNumber":56,"author":{"gitId":"chiageng"},"content":" @FXML","lastModifiedDate":"2024-03-09"},{"lineNumber":57,"author":{"gitId":"chiageng"},"content":" private Label className;","lastModifiedDate":"2024-03-09"},{"lineNumber":58,"author":{"gitId":"chiageng"},"content":" @FXML","lastModifiedDate":"2024-03-09"},{"lineNumber":59,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18"},{"lineNumber":60,"author":{"gitId":"jannaleong"},"content":" @FXML","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"jannaleong"},"content":" private Label note;","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10"},{"lineNumber":67,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12"},{"lineNumber":69,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20"},{"lineNumber":71,"author":{"gitId":"-"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":72,"author":{"gitId":"-"},"content":" address.setText(person.getAddress().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":73,"author":{"gitId":"jannaleong"},"content":" note.setText(person.getNote().toString());","lastModifiedDate":"2024-03-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":75,"author":{"gitId":"-"},"content":" person.getTags().stream()","lastModifiedDate":"2019-01-02"},{"lineNumber":76,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02"},{"lineNumber":77,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02"},{"lineNumber":78,"author":{"gitId":"chiageng"},"content":" if (person instanceof Staff) {","lastModifiedDate":"2024-03-09"},{"lineNumber":79,"author":{"gitId":"chiageng"},"content":" Staff staff \u003d (Staff) person;","lastModifiedDate":"2024-03-09"},{"lineNumber":80,"author":{"gitId":"chiageng"},"content":" salary.setText(staff.getSalary().value);","lastModifiedDate":"2024-03-09"},{"lineNumber":81,"author":{"gitId":"chiageng"},"content":" employment.setText(staff.getEmployment().value);","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"chiageng"},"content":" salary.setManaged(true);","lastModifiedDate":"2024-03-09"},{"lineNumber":83,"author":{"gitId":"chiageng"},"content":" employment.setManaged(true);","lastModifiedDate":"2024-03-09"},{"lineNumber":84,"author":{"gitId":"chiageng"},"content":" salary.setVisible(true);","lastModifiedDate":"2024-03-09"},{"lineNumber":85,"author":{"gitId":"chiageng"},"content":" employment.setVisible(true);","lastModifiedDate":"2024-03-09"},{"lineNumber":86,"author":{"gitId":"chiageng"},"content":" } else if (person instanceof Supplier) {","lastModifiedDate":"2024-03-09"},{"lineNumber":87,"author":{"gitId":"chiageng"},"content":" Supplier supplier \u003d (Supplier) person;","lastModifiedDate":"2024-03-09"},{"lineNumber":88,"author":{"gitId":"chiageng"},"content":" product.setText(supplier.getProduct().value);","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"chiageng"},"content":" price.setText(supplier.getPrice().value);","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"chiageng"},"content":" product.setManaged(true);","lastModifiedDate":"2024-03-09"},{"lineNumber":91,"author":{"gitId":"chiageng"},"content":" price.setManaged(true);","lastModifiedDate":"2024-03-09"},{"lineNumber":92,"author":{"gitId":"chiageng"},"content":" product.setVisible(true);","lastModifiedDate":"2024-03-09"},{"lineNumber":93,"author":{"gitId":"chiageng"},"content":" price.setVisible(true);","lastModifiedDate":"2024-03-09"},{"lineNumber":94,"author":{"gitId":"chiageng"},"content":" } else if (person instanceof Maintainer) {","lastModifiedDate":"2024-03-09"},{"lineNumber":95,"author":{"gitId":"chiageng"},"content":" Maintainer maintainer \u003d (Maintainer) person;","lastModifiedDate":"2024-03-09"},{"lineNumber":96,"author":{"gitId":"chiageng"},"content":" skill.setText(maintainer.getSkill().value);","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"chiageng"},"content":" commission.setText(maintainer.getCommission().value);","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"chiageng"},"content":" skill.setManaged(true);","lastModifiedDate":"2024-03-09"},{"lineNumber":99,"author":{"gitId":"chiageng"},"content":" commission.setManaged(true);","lastModifiedDate":"2024-03-09"},{"lineNumber":100,"author":{"gitId":"chiageng"},"content":" skill.setVisible(true);","lastModifiedDate":"2024-03-09"},{"lineNumber":101,"author":{"gitId":"chiageng"},"content":" commission.setVisible(true);","lastModifiedDate":"2024-03-09"},{"lineNumber":102,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":104,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":105,"author":{"gitId":"chiageng"},"content":" public Label getSalary() {","lastModifiedDate":"2024-03-09"},{"lineNumber":106,"author":{"gitId":"chiageng"},"content":" return salary;","lastModifiedDate":"2024-03-09"},{"lineNumber":107,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":108,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":109,"author":{"gitId":"chiageng"},"content":" public Label getEmployment() {","lastModifiedDate":"2024-03-09"},{"lineNumber":110,"author":{"gitId":"chiageng"},"content":" return employment;","lastModifiedDate":"2024-03-09"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"chiageng":49,"jannaleong":3,"-":60}},{"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":"jamessinmaojun"},"content":" title\u003d\"PoochPlanner\" minWidth\u003d\"450\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2024-03-20"},{"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":{"jamessinmaojun":1,"-":59}},{"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":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2016-08-08"},{"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":"chiageng"},"content":" \u003cLabel fx:id\u003d\"salary\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$salary\" managed\u003d\"false\"/\u003e","lastModifiedDate":"2024-03-09"},{"lineNumber":35,"author":{"gitId":"chiageng"},"content":" \u003cLabel fx:id\u003d\"employment\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$employment\" managed\u003d\"false\"/\u003e","lastModifiedDate":"2024-03-09"},{"lineNumber":36,"author":{"gitId":"chiageng"},"content":" \u003cLabel fx:id\u003d\"product\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$product\" managed\u003d\"false\"/\u003e","lastModifiedDate":"2024-03-09"},{"lineNumber":37,"author":{"gitId":"chiageng"},"content":" \u003cLabel fx:id\u003d\"price\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$price\" managed\u003d\"false\"/\u003e","lastModifiedDate":"2024-03-09"},{"lineNumber":38,"author":{"gitId":"chiageng"},"content":" \u003cLabel fx:id\u003d\"skill\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$skill\" managed\u003d\"false\"/\u003e","lastModifiedDate":"2024-03-09"},{"lineNumber":39,"author":{"gitId":"chiageng"},"content":" \u003cLabel fx:id\u003d\"commission\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$commission\" managed\u003d\"false\"/\u003e","lastModifiedDate":"2024-03-09"},{"lineNumber":40,"author":{"gitId":"jannaleong"},"content":" \u003cLabel fx:id\u003d\"note\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$note\" /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"chiageng":6,"jannaleong":1,"-":36}},{"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.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":8,"author":{"gitId":"jamessinmaojun"},"content":"import static seedu.address.logic.messages.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"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":"2017-01-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2018-12-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":24,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.DeleteMessages;","lastModifiedDate":"2024-03-18"},{"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":"jamessinmaojun"},"content":" String deleteCommand \u003d \"/delete ; name : bleh\";","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"jamessinmaojun"},"content":" assertCommandException(deleteCommand, DeleteMessages.MESSAGE_DELETE_NAME_NOT_FOUND);","lastModifiedDate":"2024-03-18"},{"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":"-"},"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":"-"},"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":{"jamessinmaojun":4,"-":171}},{"path":"src/test/java/seedu/address/logic/MessagesTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jamessinmaojun"},"content":"package seedu.address.logic;","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":3,"author":{"gitId":"jamessinmaojun"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"jamessinmaojun"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"jamessinmaojun"},"content":"import static seedu.address.testutil.TypicalPersons.ALICEMAINTAINER;","lastModifiedDate":"2024-03-22"},{"lineNumber":6,"author":{"gitId":"jamessinmaojun"},"content":"import static seedu.address.testutil.TypicalPersons.ALICESTAFF;","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"jamessinmaojun"},"content":"import static seedu.address.testutil.TypicalPersons.ALICESUPPLIER;","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"jamessinmaojun"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.AddMessages;","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.DeleteMessages;","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.EditMessages;","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.Messages;","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"jamessinmaojun"},"content":"/**","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"jamessinmaojun"},"content":" * Contains unit tests for {@code Messages}.","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"jamessinmaojun"},"content":" */","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"jamessinmaojun"},"content":"public class MessagesTest {","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"jamessinmaojun"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"jamessinmaojun"},"content":" public void format() {","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"jamessinmaojun"},"content":" // Normal Person","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"jamessinmaojun"},"content":" String testNormalString \u003d Messages.format(ALICE);","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"jamessinmaojun"},"content":" String expectedNormalString \u003d \"Alice Pauline; \"","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"jamessinmaojun"},"content":" + \"Phone: 94351253; \"","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"jamessinmaojun"},"content":" + \"Email: alice@example.com; \"","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"jamessinmaojun"},"content":" + \"Address: 123, Jurong West Ave 6, #08-111; \"","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"jamessinmaojun"},"content":" + \"Tags: [other]\";","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"jamessinmaojun"},"content":" assertEquals(testNormalString, expectedNormalString);","lastModifiedDate":"2024-03-22"},{"lineNumber":30,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"jamessinmaojun"},"content":" // Staff","lastModifiedDate":"2024-03-22"},{"lineNumber":32,"author":{"gitId":"jamessinmaojun"},"content":" String testStaffString \u003d Messages.format(ALICESTAFF);","lastModifiedDate":"2024-03-22"},{"lineNumber":33,"author":{"gitId":"jamessinmaojun"},"content":" String expectedStaffString \u003d \"Alice Pauline; \"","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"jamessinmaojun"},"content":" + \"Phone: 94351253; \"","lastModifiedDate":"2024-03-22"},{"lineNumber":35,"author":{"gitId":"jamessinmaojun"},"content":" + \"Email: alice@example.com; \"","lastModifiedDate":"2024-03-22"},{"lineNumber":36,"author":{"gitId":"jamessinmaojun"},"content":" + \"Address: 123, Jurong West Ave 6, #08-111; \"","lastModifiedDate":"2024-03-22"},{"lineNumber":37,"author":{"gitId":"jamessinmaojun"},"content":" + \"Tags: [staff]\";","lastModifiedDate":"2024-03-22"},{"lineNumber":38,"author":{"gitId":"jamessinmaojun"},"content":" assertEquals(testStaffString, expectedStaffString);","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"jamessinmaojun"},"content":" // Maintainer","lastModifiedDate":"2024-03-22"},{"lineNumber":41,"author":{"gitId":"jamessinmaojun"},"content":" String testMaintainerString \u003d Messages.format(ALICEMAINTAINER);","lastModifiedDate":"2024-03-22"},{"lineNumber":42,"author":{"gitId":"jamessinmaojun"},"content":" String expectedMaintainerString \u003d \"Alice Pauline; \"","lastModifiedDate":"2024-03-22"},{"lineNumber":43,"author":{"gitId":"jamessinmaojun"},"content":" + \"Phone: 94351253; \"","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"jamessinmaojun"},"content":" + \"Email: alice@example.com; \"","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"jamessinmaojun"},"content":" + \"Address: 123, Jurong West Ave 6, #08-111; \"","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"jamessinmaojun"},"content":" + \"Tags: [maintainer]\";","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"jamessinmaojun"},"content":" assertEquals(testMaintainerString, expectedMaintainerString);","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":49,"author":{"gitId":"jamessinmaojun"},"content":" // Supplier","lastModifiedDate":"2024-03-22"},{"lineNumber":50,"author":{"gitId":"jamessinmaojun"},"content":" String testSupplierString \u003d Messages.format(ALICESUPPLIER);","lastModifiedDate":"2024-03-22"},{"lineNumber":51,"author":{"gitId":"jamessinmaojun"},"content":" String expectedSupplierString \u003d \"Alice Pauline; \"","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"jamessinmaojun"},"content":" + \"Phone: 94351253; \"","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"jamessinmaojun"},"content":" + \"Email: alice@example.com; \"","lastModifiedDate":"2024-03-22"},{"lineNumber":54,"author":{"gitId":"jamessinmaojun"},"content":" + \"Address: 123, Jurong West Ave 6, #08-111; \"","lastModifiedDate":"2024-03-22"},{"lineNumber":55,"author":{"gitId":"jamessinmaojun"},"content":" + \"Tags: [supplier]\";","lastModifiedDate":"2024-03-22"},{"lineNumber":56,"author":{"gitId":"jamessinmaojun"},"content":" assertEquals(testSupplierString, expectedSupplierString);","lastModifiedDate":"2024-03-22"},{"lineNumber":57,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":58,"author":{"gitId":"jamessinmaojun"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":59,"author":{"gitId":"jamessinmaojun"},"content":" public void addFormat() {","lastModifiedDate":"2024-03-22"},{"lineNumber":60,"author":{"gitId":"jamessinmaojun"},"content":" // Normal Person","lastModifiedDate":"2024-03-22"},{"lineNumber":61,"author":{"gitId":"jamessinmaojun"},"content":" String testNormalString \u003d AddMessages.format(ALICE);","lastModifiedDate":"2024-03-22"},{"lineNumber":62,"author":{"gitId":"jamessinmaojun"},"content":" String expectedNormalString \u003d \"Other Contact Alice Pauline\";","lastModifiedDate":"2024-03-22"},{"lineNumber":63,"author":{"gitId":"jamessinmaojun"},"content":" assertEquals(testNormalString, expectedNormalString);","lastModifiedDate":"2024-03-22"},{"lineNumber":64,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":65,"author":{"gitId":"jamessinmaojun"},"content":" // Staff","lastModifiedDate":"2024-03-22"},{"lineNumber":66,"author":{"gitId":"jamessinmaojun"},"content":" String testStaffString \u003d AddMessages.format(ALICESTAFF);","lastModifiedDate":"2024-03-22"},{"lineNumber":67,"author":{"gitId":"jamessinmaojun"},"content":" String expectedStaffString \u003d \"Pooch Staff Alice Pauline\";","lastModifiedDate":"2024-03-22"},{"lineNumber":68,"author":{"gitId":"jamessinmaojun"},"content":" assertEquals(testStaffString, expectedStaffString);","lastModifiedDate":"2024-03-22"},{"lineNumber":69,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":70,"author":{"gitId":"jamessinmaojun"},"content":" // Maintainer","lastModifiedDate":"2024-03-22"},{"lineNumber":71,"author":{"gitId":"jamessinmaojun"},"content":" String testMaintainerString \u003d AddMessages.format(ALICEMAINTAINER);","lastModifiedDate":"2024-03-22"},{"lineNumber":72,"author":{"gitId":"jamessinmaojun"},"content":" String expectedMaintainerString \u003d \"Maintenance Crew Alice Pauline\";","lastModifiedDate":"2024-03-22"},{"lineNumber":73,"author":{"gitId":"jamessinmaojun"},"content":" assertEquals(testMaintainerString, expectedMaintainerString);","lastModifiedDate":"2024-03-22"},{"lineNumber":74,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":75,"author":{"gitId":"jamessinmaojun"},"content":" // Supplier","lastModifiedDate":"2024-03-22"},{"lineNumber":76,"author":{"gitId":"jamessinmaojun"},"content":" String testSupplierString \u003d AddMessages.format(ALICESUPPLIER);","lastModifiedDate":"2024-03-22"},{"lineNumber":77,"author":{"gitId":"jamessinmaojun"},"content":" String expectedSupplierString \u003d \"Supplier Alice Pauline\";","lastModifiedDate":"2024-03-22"},{"lineNumber":78,"author":{"gitId":"jamessinmaojun"},"content":" assertEquals(testSupplierString, expectedSupplierString);","lastModifiedDate":"2024-03-22"},{"lineNumber":79,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":80,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":81,"author":{"gitId":"jamessinmaojun"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":82,"author":{"gitId":"jamessinmaojun"},"content":" public void deleteFormat() {","lastModifiedDate":"2024-03-22"},{"lineNumber":83,"author":{"gitId":"jamessinmaojun"},"content":" // Normal Person","lastModifiedDate":"2024-03-22"},{"lineNumber":84,"author":{"gitId":"jamessinmaojun"},"content":" String testNormalString \u003d DeleteMessages.format(ALICE);","lastModifiedDate":"2024-03-22"},{"lineNumber":85,"author":{"gitId":"jamessinmaojun"},"content":" String expectedNormalString \u003d \"Other Contact Alice Pauline\";","lastModifiedDate":"2024-03-22"},{"lineNumber":86,"author":{"gitId":"jamessinmaojun"},"content":" assertEquals(testNormalString, expectedNormalString);","lastModifiedDate":"2024-03-22"},{"lineNumber":87,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":88,"author":{"gitId":"jamessinmaojun"},"content":" // Staff","lastModifiedDate":"2024-03-22"},{"lineNumber":89,"author":{"gitId":"jamessinmaojun"},"content":" String testStaffString \u003d DeleteMessages.format(ALICESTAFF);","lastModifiedDate":"2024-03-22"},{"lineNumber":90,"author":{"gitId":"jamessinmaojun"},"content":" String expectedStaffString \u003d \"Pooch Staff Alice Pauline\";","lastModifiedDate":"2024-03-22"},{"lineNumber":91,"author":{"gitId":"jamessinmaojun"},"content":" assertEquals(testStaffString, expectedStaffString);","lastModifiedDate":"2024-03-22"},{"lineNumber":92,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":93,"author":{"gitId":"jamessinmaojun"},"content":" // Maintainer","lastModifiedDate":"2024-03-22"},{"lineNumber":94,"author":{"gitId":"jamessinmaojun"},"content":" String testMaintainerString \u003d DeleteMessages.format(ALICEMAINTAINER);","lastModifiedDate":"2024-03-22"},{"lineNumber":95,"author":{"gitId":"jamessinmaojun"},"content":" String expectedMaintainerString \u003d \"Maintenance Crew Alice Pauline\";","lastModifiedDate":"2024-03-22"},{"lineNumber":96,"author":{"gitId":"jamessinmaojun"},"content":" assertEquals(testMaintainerString, expectedMaintainerString);","lastModifiedDate":"2024-03-22"},{"lineNumber":97,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":98,"author":{"gitId":"jamessinmaojun"},"content":" // Supplier","lastModifiedDate":"2024-03-22"},{"lineNumber":99,"author":{"gitId":"jamessinmaojun"},"content":" String testSupplierString \u003d DeleteMessages.format(ALICESUPPLIER);","lastModifiedDate":"2024-03-22"},{"lineNumber":100,"author":{"gitId":"jamessinmaojun"},"content":" String expectedSupplierString \u003d \"Supplier Alice Pauline\";","lastModifiedDate":"2024-03-22"},{"lineNumber":101,"author":{"gitId":"jamessinmaojun"},"content":" assertEquals(testSupplierString, expectedSupplierString);","lastModifiedDate":"2024-03-22"},{"lineNumber":102,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":103,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":104,"author":{"gitId":"jamessinmaojun"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":105,"author":{"gitId":"jamessinmaojun"},"content":" public void editFormat() {","lastModifiedDate":"2024-03-22"},{"lineNumber":106,"author":{"gitId":"jamessinmaojun"},"content":" // Normal Person","lastModifiedDate":"2024-03-22"},{"lineNumber":107,"author":{"gitId":"jamessinmaojun"},"content":" String testNormalString \u003d EditMessages.format(ALICE);","lastModifiedDate":"2024-03-22"},{"lineNumber":108,"author":{"gitId":"jamessinmaojun"},"content":" String expectedNormalString \u003d \"Other Contact Alice Pauline\";","lastModifiedDate":"2024-03-22"},{"lineNumber":109,"author":{"gitId":"jamessinmaojun"},"content":" assertEquals(testNormalString, expectedNormalString);","lastModifiedDate":"2024-03-22"},{"lineNumber":110,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":111,"author":{"gitId":"jamessinmaojun"},"content":" // Staff","lastModifiedDate":"2024-03-22"},{"lineNumber":112,"author":{"gitId":"jamessinmaojun"},"content":" String testStaffString \u003d EditMessages.format(ALICESTAFF);","lastModifiedDate":"2024-03-22"},{"lineNumber":113,"author":{"gitId":"jamessinmaojun"},"content":" String expectedStaffString \u003d \"Pooch Staff Alice Pauline\";","lastModifiedDate":"2024-03-22"},{"lineNumber":114,"author":{"gitId":"jamessinmaojun"},"content":" assertEquals(testStaffString, expectedStaffString);","lastModifiedDate":"2024-03-22"},{"lineNumber":115,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":116,"author":{"gitId":"jamessinmaojun"},"content":" // Maintainer","lastModifiedDate":"2024-03-22"},{"lineNumber":117,"author":{"gitId":"jamessinmaojun"},"content":" String testMaintainerString \u003d EditMessages.format(ALICEMAINTAINER);","lastModifiedDate":"2024-03-22"},{"lineNumber":118,"author":{"gitId":"jamessinmaojun"},"content":" String expectedMaintainerString \u003d \"Maintenance Crew Alice Pauline\";","lastModifiedDate":"2024-03-22"},{"lineNumber":119,"author":{"gitId":"jamessinmaojun"},"content":" assertEquals(testMaintainerString, expectedMaintainerString);","lastModifiedDate":"2024-03-22"},{"lineNumber":120,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":121,"author":{"gitId":"jamessinmaojun"},"content":" // Supplier","lastModifiedDate":"2024-03-22"},{"lineNumber":122,"author":{"gitId":"jamessinmaojun"},"content":" String testSupplierString \u003d EditMessages.format(ALICESUPPLIER);","lastModifiedDate":"2024-03-22"},{"lineNumber":123,"author":{"gitId":"jamessinmaojun"},"content":" String expectedSupplierString \u003d \"Supplier Alice Pauline\";","lastModifiedDate":"2024-03-22"},{"lineNumber":124,"author":{"gitId":"jamessinmaojun"},"content":" assertEquals(testSupplierString, expectedSupplierString);","lastModifiedDate":"2024-03-22"},{"lineNumber":125,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":126,"author":{"gitId":"jamessinmaojun"},"content":"}","lastModifiedDate":"2024-03-22"}],"authorContributionMap":{"jamessinmaojun":126}},{"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":"jamessinmaojun"},"content":"import seedu.address.logic.messages.AddMessages;","lastModifiedDate":"2024-03-20"},{"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":"jamessinmaojun"},"content":" String.format(AddMessages.MESSAGE_ADD_PERSON_SUCCESS, AddMessages.format(validPerson)),","lastModifiedDate":"2024-03-20"},{"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":"jamessinmaojun"},"content":" AddMessages.MESSAGE_ADD_DUPLICATE_PERSON);","lastModifiedDate":"2024-03-20"},{"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":{"jamessinmaojun":3,"-":45}},{"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.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12"},{"lineNumber":20,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.AddMessages;","lastModifiedDate":"2024-03-20"},{"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":"yleeyilin"},"content":"import seedu.address.model.person.Maintainer;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-12"},{"lineNumber":28,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Staff;","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Supplier;","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":"public class AddCommandTest {","lastModifiedDate":"2017-05-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2017-05-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2017-05-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new AddCommand(validPerson).execute(modelStub);","lastModifiedDate":"2019-01-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":46,"author":{"gitId":"jamessinmaojun"},"content":" assertEquals(String.format(AddMessages.MESSAGE_ADD_PERSON_SUCCESS, AddMessages.format(validPerson)),","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(validPerson), modelStub.personsAdded);","lastModifiedDate":"2017-05-12"},{"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-05-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(validPerson);","lastModifiedDate":"2018-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":57,"author":{"gitId":"jamessinmaojun"},"content":" assertThrows(CommandException.class,","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"jamessinmaojun"},"content":" AddMessages.MESSAGE_ADD_DUPLICATE_PERSON, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":63,"author":{"gitId":"-"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" AddCommand addAliceCommand \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":" AddCommand addBobCommand \u003d new AddCommand(bob);","lastModifiedDate":"2017-06-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" AddCommand addAliceCommandCopy \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"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":" AddCommand addCommand \u003d new AddCommand(ALICE);","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" String expected \u003d AddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.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":"2017-05-12"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":95,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"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 ReadOnlyUserPrefs getUserPrefs() {","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 GuiSettings getGuiSettings() {","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 void setGuiSettings(GuiSettings guiSettings) {","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 Path getAddressBookFilePath() {","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":"2018-11-27"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":123,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":127,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"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 void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27"},{"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":"2017-05-12"},{"lineNumber":137,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12"},{"lineNumber":138,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06"},{"lineNumber":143,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":146,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":147,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-08"},{"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 void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"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 ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":158,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":161,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":162,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":163,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":165,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":166,"author":{"gitId":"yleeyilin"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":167,"author":{"gitId":"yleeyilin"},"content":" public Person findByName(Name targetName) {","lastModifiedDate":"2024-03-17"},{"lineNumber":168,"author":{"gitId":"yleeyilin"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":169,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":170,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":171,"author":{"gitId":"yleeyilin"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":172,"author":{"gitId":"yleeyilin"},"content":" public Maintainer findMaintainerByName(Name targetName) {","lastModifiedDate":"2024-03-17"},{"lineNumber":173,"author":{"gitId":"yleeyilin"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":174,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":175,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":176,"author":{"gitId":"yleeyilin"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":177,"author":{"gitId":"yleeyilin"},"content":" public Supplier findSupplierByName(Name targetName) {","lastModifiedDate":"2024-03-17"},{"lineNumber":178,"author":{"gitId":"yleeyilin"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":179,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":180,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":181,"author":{"gitId":"yleeyilin"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":182,"author":{"gitId":"yleeyilin"},"content":" public Staff findStaffByName(Name targetName) {","lastModifiedDate":"2024-03-17"},{"lineNumber":183,"author":{"gitId":"yleeyilin"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":184,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"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 contains a single person.","lastModifiedDate":"2018-08-07"},{"lineNumber":189,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":190,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07"},{"lineNumber":191,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":193,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":194,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":195,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":198,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":199,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":200,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":201,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07"},{"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"},{"lineNumber":206,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12"},{"lineNumber":207,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":208,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12"},{"lineNumber":209,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":211,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07"},{"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 personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":215,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":217,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":218,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08"},{"lineNumber":219,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":220,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":221,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":223,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":224,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04"},{"lineNumber":225,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04"},{"lineNumber":226,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":227,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":229,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12"}],"authorContributionMap":{"jamessinmaojun":4,"-":201,"yleeyilin":24}},{"path":"src/test/java/seedu/address/logic/commands/AddMaintainerCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chiageng"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-09"},{"lineNumber":2,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":3,"author":{"gitId":"chiageng"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-09"},{"lineNumber":4,"author":{"gitId":"chiageng"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-09"},{"lineNumber":5,"author":{"gitId":"chiageng"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-09"},{"lineNumber":6,"author":{"gitId":"chiageng"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-09"},{"lineNumber":7,"author":{"gitId":"chiageng"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-09"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":"import static seedu.address.testutil.TypicalPersons.ALICEMAINTAINER;","lastModifiedDate":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-09"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-09"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-09"},{"lineNumber":13,"author":{"gitId":"chiageng"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-09"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-09"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-09"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2024-03-09"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-09"},{"lineNumber":20,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.AddMessages;","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-03-09"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-09"},{"lineNumber":23,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-09"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-09"},{"lineNumber":25,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Maintainer;","lastModifiedDate":"2024-03-09"},{"lineNumber":26,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-09"},{"lineNumber":28,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Staff;","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Supplier;","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"chiageng"},"content":"import seedu.address.testutil.MaintainerBuilder;","lastModifiedDate":"2024-03-09"},{"lineNumber":31,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":32,"author":{"gitId":"chiageng"},"content":"public class AddMaintainerCommandTest {","lastModifiedDate":"2024-03-09"},{"lineNumber":33,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":34,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":35,"author":{"gitId":"chiageng"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":36,"author":{"gitId":"chiageng"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddMaintainerCommand(null));","lastModifiedDate":"2024-03-09"},{"lineNumber":37,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":38,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":39,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":40,"author":{"gitId":"chiageng"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2024-03-09"},{"lineNumber":41,"author":{"gitId":"chiageng"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2024-03-09"},{"lineNumber":42,"author":{"gitId":"chiageng"},"content":" Maintainer validPerson \u003d new MaintainerBuilder().build();","lastModifiedDate":"2024-03-09"},{"lineNumber":43,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":44,"author":{"gitId":"chiageng"},"content":" CommandResult commandResult \u003d new AddMaintainerCommand(validPerson).execute(modelStub);","lastModifiedDate":"2024-03-09"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":46,"author":{"gitId":"jamessinmaojun"},"content":" assertEquals(String.format(AddMessages.MESSAGE_ADD_PERSON_SUCCESS, AddMessages.format(validPerson)),","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2024-03-09"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":" assertEquals(Arrays.asList(validPerson), modelStub.personsAdded);","lastModifiedDate":"2024-03-09"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":53,"author":{"gitId":"chiageng"},"content":" Maintainer validPerson \u003d new MaintainerBuilder().build();","lastModifiedDate":"2024-03-09"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":" AddMaintainerCommand addCommand \u003d new AddMaintainerCommand(validPerson);","lastModifiedDate":"2024-03-09"},{"lineNumber":55,"author":{"gitId":"chiageng"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPerson);","lastModifiedDate":"2024-03-09"},{"lineNumber":56,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":57,"author":{"gitId":"chiageng"},"content":" assertThrows(CommandException.class,","lastModifiedDate":"2024-03-09"},{"lineNumber":58,"author":{"gitId":"jamessinmaojun"},"content":" AddMessages.MESSAGE_ADD_DUPLICATE_PERSON, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":60,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":61,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":62,"author":{"gitId":"chiageng"},"content":" public void equals() {","lastModifiedDate":"2024-03-09"},{"lineNumber":63,"author":{"gitId":"chiageng"},"content":" Maintainer alice \u003d new MaintainerBuilder().withName(\"Alice\").build();","lastModifiedDate":"2024-03-09"},{"lineNumber":64,"author":{"gitId":"chiageng"},"content":" Maintainer bob \u003d new MaintainerBuilder().withName(\"Bob\").build();","lastModifiedDate":"2024-03-09"},{"lineNumber":65,"author":{"gitId":"chiageng"},"content":" AddMaintainerCommand addAliceCommand \u003d new AddMaintainerCommand(alice);","lastModifiedDate":"2024-03-09"},{"lineNumber":66,"author":{"gitId":"chiageng"},"content":" AddMaintainerCommand addBobCommand \u003d new AddMaintainerCommand(bob);","lastModifiedDate":"2024-03-09"},{"lineNumber":67,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":68,"author":{"gitId":"chiageng"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-09"},{"lineNumber":69,"author":{"gitId":"chiageng"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2024-03-09"},{"lineNumber":70,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":71,"author":{"gitId":"chiageng"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-09"},{"lineNumber":72,"author":{"gitId":"chiageng"},"content":" AddMaintainerCommand addAliceCommandCopy \u003d new AddMaintainerCommand(alice);","lastModifiedDate":"2024-03-09"},{"lineNumber":73,"author":{"gitId":"chiageng"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2024-03-09"},{"lineNumber":74,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":75,"author":{"gitId":"chiageng"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":76,"author":{"gitId":"chiageng"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2024-03-09"},{"lineNumber":77,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":78,"author":{"gitId":"chiageng"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":79,"author":{"gitId":"chiageng"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2024-03-09"},{"lineNumber":80,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":81,"author":{"gitId":"chiageng"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":82,"author":{"gitId":"chiageng"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2024-03-09"},{"lineNumber":83,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":84,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":85,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":86,"author":{"gitId":"chiageng"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-09"},{"lineNumber":87,"author":{"gitId":"chiageng"},"content":" AddMaintainerCommand addCommand \u003d new AddMaintainerCommand(ALICEMAINTAINER);","lastModifiedDate":"2024-03-09"},{"lineNumber":88,"author":{"gitId":"chiageng"},"content":" String expected \u003d AddMaintainerCommand.class.getCanonicalName()","lastModifiedDate":"2024-03-09"},{"lineNumber":89,"author":{"gitId":"chiageng"},"content":" + \"{toAdd\u003d\" + ALICEMAINTAINER + \"}\";","lastModifiedDate":"2024-03-09"},{"lineNumber":90,"author":{"gitId":"chiageng"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2024-03-09"},{"lineNumber":91,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":92,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":93,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":94,"author":{"gitId":"chiageng"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2024-03-09"},{"lineNumber":95,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":96,"author":{"gitId":"chiageng"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2024-03-09"},{"lineNumber":97,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":98,"author":{"gitId":"chiageng"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2024-03-09"},{"lineNumber":99,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":100,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":101,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":102,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":103,"author":{"gitId":"chiageng"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2024-03-09"},{"lineNumber":104,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":105,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":106,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":107,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":108,"author":{"gitId":"chiageng"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2024-03-09"},{"lineNumber":109,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":110,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":111,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":112,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":113,"author":{"gitId":"chiageng"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2024-03-09"},{"lineNumber":114,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":115,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":116,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":117,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":118,"author":{"gitId":"chiageng"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2024-03-09"},{"lineNumber":119,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":120,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":121,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":122,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":123,"author":{"gitId":"chiageng"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2024-03-09"},{"lineNumber":124,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":125,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":126,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":127,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":128,"author":{"gitId":"chiageng"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2024-03-09"},{"lineNumber":129,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":130,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":131,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":132,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":133,"author":{"gitId":"chiageng"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2024-03-09"},{"lineNumber":134,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":135,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":136,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":137,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":138,"author":{"gitId":"chiageng"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2024-03-09"},{"lineNumber":139,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":140,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":141,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":142,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":143,"author":{"gitId":"chiageng"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2024-03-09"},{"lineNumber":144,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":145,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":146,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":147,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":148,"author":{"gitId":"chiageng"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2024-03-09"},{"lineNumber":149,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":150,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":151,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":152,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":153,"author":{"gitId":"chiageng"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2024-03-09"},{"lineNumber":154,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":155,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":156,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":157,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":158,"author":{"gitId":"chiageng"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2024-03-09"},{"lineNumber":159,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":160,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":161,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":162,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":163,"author":{"gitId":"chiageng"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2024-03-09"},{"lineNumber":164,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":165,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":166,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":167,"author":{"gitId":"yleeyilin"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":168,"author":{"gitId":"yleeyilin"},"content":" public Person findByName(Name targetName) {","lastModifiedDate":"2024-03-17"},{"lineNumber":169,"author":{"gitId":"yleeyilin"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":170,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":171,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":172,"author":{"gitId":"yleeyilin"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":173,"author":{"gitId":"yleeyilin"},"content":" public Maintainer findMaintainerByName(Name targetName) {","lastModifiedDate":"2024-03-17"},{"lineNumber":174,"author":{"gitId":"yleeyilin"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":175,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":176,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":177,"author":{"gitId":"yleeyilin"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":178,"author":{"gitId":"yleeyilin"},"content":" public Supplier findSupplierByName(Name targetName) {","lastModifiedDate":"2024-03-17"},{"lineNumber":179,"author":{"gitId":"yleeyilin"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":180,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":181,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":182,"author":{"gitId":"yleeyilin"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":183,"author":{"gitId":"yleeyilin"},"content":" public Staff findStaffByName(Name targetName) {","lastModifiedDate":"2024-03-17"},{"lineNumber":184,"author":{"gitId":"yleeyilin"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":185,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":186,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":187,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":188,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":189,"author":{"gitId":"chiageng"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2024-03-09"},{"lineNumber":190,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":191,"author":{"gitId":"chiageng"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2024-03-09"},{"lineNumber":192,"author":{"gitId":"chiageng"},"content":" private final Person person;","lastModifiedDate":"2024-03-09"},{"lineNumber":193,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":194,"author":{"gitId":"chiageng"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2024-03-09"},{"lineNumber":195,"author":{"gitId":"chiageng"},"content":" requireNonNull(person);","lastModifiedDate":"2024-03-09"},{"lineNumber":196,"author":{"gitId":"chiageng"},"content":" this.person \u003d person;","lastModifiedDate":"2024-03-09"},{"lineNumber":197,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":198,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":199,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":200,"author":{"gitId":"chiageng"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2024-03-09"},{"lineNumber":201,"author":{"gitId":"chiageng"},"content":" requireNonNull(person);","lastModifiedDate":"2024-03-09"},{"lineNumber":202,"author":{"gitId":"chiageng"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2024-03-09"},{"lineNumber":203,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":204,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":205,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":206,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":207,"author":{"gitId":"chiageng"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2024-03-09"},{"lineNumber":208,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":209,"author":{"gitId":"chiageng"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2024-03-09"},{"lineNumber":210,"author":{"gitId":"chiageng"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-09"},{"lineNumber":211,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":212,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":213,"author":{"gitId":"chiageng"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2024-03-09"},{"lineNumber":214,"author":{"gitId":"chiageng"},"content":" requireNonNull(person);","lastModifiedDate":"2024-03-09"},{"lineNumber":215,"author":{"gitId":"chiageng"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2024-03-09"},{"lineNumber":216,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":217,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":218,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":219,"author":{"gitId":"chiageng"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2024-03-09"},{"lineNumber":220,"author":{"gitId":"chiageng"},"content":" requireNonNull(person);","lastModifiedDate":"2024-03-09"},{"lineNumber":221,"author":{"gitId":"chiageng"},"content":" personsAdded.add(person);","lastModifiedDate":"2024-03-09"},{"lineNumber":222,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":223,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":224,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":225,"author":{"gitId":"chiageng"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2024-03-09"},{"lineNumber":226,"author":{"gitId":"chiageng"},"content":" return new AddressBook();","lastModifiedDate":"2024-03-09"},{"lineNumber":227,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":228,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":229,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":230,"author":{"gitId":"chiageng"},"content":"}","lastModifiedDate":"2024-03-09"}],"authorContributionMap":{"chiageng":204,"jamessinmaojun":3,"yleeyilin":23}},{"path":"src/test/java/seedu/address/logic/commands/AddStaffCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chiageng"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-09"},{"lineNumber":2,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":3,"author":{"gitId":"chiageng"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-09"},{"lineNumber":4,"author":{"gitId":"chiageng"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-09"},{"lineNumber":5,"author":{"gitId":"chiageng"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-09"},{"lineNumber":6,"author":{"gitId":"chiageng"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-09"},{"lineNumber":7,"author":{"gitId":"chiageng"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-09"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":"import static seedu.address.testutil.TypicalPersons.ALICESTAFF;","lastModifiedDate":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-09"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-09"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-09"},{"lineNumber":13,"author":{"gitId":"chiageng"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-09"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-09"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-09"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2024-03-09"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-09"},{"lineNumber":20,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.AddMessages;","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-03-09"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-09"},{"lineNumber":23,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-09"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-09"},{"lineNumber":25,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Maintainer;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-09"},{"lineNumber":28,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Staff;","lastModifiedDate":"2024-03-09"},{"lineNumber":29,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Supplier;","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"chiageng"},"content":"import seedu.address.testutil.StaffBuilder;","lastModifiedDate":"2024-03-09"},{"lineNumber":31,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":32,"author":{"gitId":"chiageng"},"content":"public class AddStaffCommandTest {","lastModifiedDate":"2024-03-09"},{"lineNumber":33,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":34,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":35,"author":{"gitId":"chiageng"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":36,"author":{"gitId":"chiageng"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddStaffCommand(null));","lastModifiedDate":"2024-03-09"},{"lineNumber":37,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":38,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":39,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":40,"author":{"gitId":"chiageng"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2024-03-09"},{"lineNumber":41,"author":{"gitId":"chiageng"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2024-03-09"},{"lineNumber":42,"author":{"gitId":"chiageng"},"content":" Staff validPerson \u003d new StaffBuilder().build();","lastModifiedDate":"2024-03-09"},{"lineNumber":43,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":44,"author":{"gitId":"chiageng"},"content":" CommandResult commandResult \u003d new AddStaffCommand(validPerson).execute(modelStub);","lastModifiedDate":"2024-03-09"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":46,"author":{"gitId":"jamessinmaojun"},"content":" assertEquals(String.format(AddMessages.MESSAGE_ADD_PERSON_SUCCESS, AddMessages.format(validPerson)),","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2024-03-09"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":" assertEquals(Arrays.asList(validPerson), modelStub.personsAdded);","lastModifiedDate":"2024-03-09"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":53,"author":{"gitId":"chiageng"},"content":" Staff validPerson \u003d new StaffBuilder().build();","lastModifiedDate":"2024-03-09"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":" AddStaffCommand addCommand \u003d new AddStaffCommand(validPerson);","lastModifiedDate":"2024-03-09"},{"lineNumber":55,"author":{"gitId":"chiageng"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPerson);","lastModifiedDate":"2024-03-09"},{"lineNumber":56,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":57,"author":{"gitId":"chiageng"},"content":" assertThrows(CommandException.class,","lastModifiedDate":"2024-03-09"},{"lineNumber":58,"author":{"gitId":"jamessinmaojun"},"content":" AddMessages.MESSAGE_ADD_DUPLICATE_PERSON, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":60,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":61,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":62,"author":{"gitId":"chiageng"},"content":" public void equals() {","lastModifiedDate":"2024-03-09"},{"lineNumber":63,"author":{"gitId":"chiageng"},"content":" Staff alice \u003d new StaffBuilder().withName(\"Alice\").build();","lastModifiedDate":"2024-03-09"},{"lineNumber":64,"author":{"gitId":"chiageng"},"content":" Staff bob \u003d new StaffBuilder().withName(\"Bob\").build();","lastModifiedDate":"2024-03-09"},{"lineNumber":65,"author":{"gitId":"chiageng"},"content":" AddStaffCommand addAliceCommand \u003d new AddStaffCommand(alice);","lastModifiedDate":"2024-03-09"},{"lineNumber":66,"author":{"gitId":"chiageng"},"content":" AddStaffCommand addBobCommand \u003d new AddStaffCommand(bob);","lastModifiedDate":"2024-03-09"},{"lineNumber":67,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":68,"author":{"gitId":"chiageng"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-09"},{"lineNumber":69,"author":{"gitId":"chiageng"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2024-03-09"},{"lineNumber":70,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":71,"author":{"gitId":"chiageng"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-09"},{"lineNumber":72,"author":{"gitId":"chiageng"},"content":" AddStaffCommand addAliceCommandCopy \u003d new AddStaffCommand(alice);","lastModifiedDate":"2024-03-09"},{"lineNumber":73,"author":{"gitId":"chiageng"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2024-03-09"},{"lineNumber":74,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":75,"author":{"gitId":"chiageng"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":76,"author":{"gitId":"chiageng"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2024-03-09"},{"lineNumber":77,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":78,"author":{"gitId":"chiageng"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":79,"author":{"gitId":"chiageng"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2024-03-09"},{"lineNumber":80,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":81,"author":{"gitId":"chiageng"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":82,"author":{"gitId":"chiageng"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2024-03-09"},{"lineNumber":83,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":84,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":85,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":86,"author":{"gitId":"chiageng"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-09"},{"lineNumber":87,"author":{"gitId":"chiageng"},"content":" AddStaffCommand addCommand \u003d new AddStaffCommand(ALICESTAFF);","lastModifiedDate":"2024-03-09"},{"lineNumber":88,"author":{"gitId":"chiageng"},"content":" String expected \u003d AddStaffCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICESTAFF + \"}\";","lastModifiedDate":"2024-03-09"},{"lineNumber":89,"author":{"gitId":"chiageng"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2024-03-09"},{"lineNumber":90,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":91,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":92,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":93,"author":{"gitId":"chiageng"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2024-03-09"},{"lineNumber":94,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":95,"author":{"gitId":"chiageng"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2024-03-09"},{"lineNumber":96,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":97,"author":{"gitId":"chiageng"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2024-03-09"},{"lineNumber":98,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":99,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":100,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":101,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":102,"author":{"gitId":"chiageng"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2024-03-09"},{"lineNumber":103,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":104,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":105,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":106,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":107,"author":{"gitId":"chiageng"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2024-03-09"},{"lineNumber":108,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":109,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":110,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":111,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":112,"author":{"gitId":"chiageng"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2024-03-09"},{"lineNumber":113,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":114,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":115,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":116,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":117,"author":{"gitId":"chiageng"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2024-03-09"},{"lineNumber":118,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":119,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":120,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":121,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":122,"author":{"gitId":"chiageng"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2024-03-09"},{"lineNumber":123,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":124,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":125,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":126,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":127,"author":{"gitId":"chiageng"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2024-03-09"},{"lineNumber":128,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":129,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":130,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":131,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":132,"author":{"gitId":"chiageng"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2024-03-09"},{"lineNumber":133,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":134,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":135,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":136,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":137,"author":{"gitId":"chiageng"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2024-03-09"},{"lineNumber":138,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":139,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":140,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":141,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":142,"author":{"gitId":"chiageng"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2024-03-09"},{"lineNumber":143,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":144,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":145,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":146,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":147,"author":{"gitId":"chiageng"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2024-03-09"},{"lineNumber":148,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":149,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":150,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":151,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":152,"author":{"gitId":"chiageng"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2024-03-09"},{"lineNumber":153,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":154,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":155,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":156,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":157,"author":{"gitId":"chiageng"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2024-03-09"},{"lineNumber":158,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":159,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":160,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":161,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":162,"author":{"gitId":"chiageng"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2024-03-09"},{"lineNumber":163,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":164,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":165,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":166,"author":{"gitId":"yleeyilin"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":167,"author":{"gitId":"yleeyilin"},"content":" public Person findByName(Name targetName) {","lastModifiedDate":"2024-03-17"},{"lineNumber":168,"author":{"gitId":"yleeyilin"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":169,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":170,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":171,"author":{"gitId":"yleeyilin"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":172,"author":{"gitId":"yleeyilin"},"content":" public Maintainer findMaintainerByName(Name targetName) {","lastModifiedDate":"2024-03-17"},{"lineNumber":173,"author":{"gitId":"yleeyilin"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":174,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":175,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":176,"author":{"gitId":"yleeyilin"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":177,"author":{"gitId":"yleeyilin"},"content":" public Supplier findSupplierByName(Name targetName) {","lastModifiedDate":"2024-03-17"},{"lineNumber":178,"author":{"gitId":"yleeyilin"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":179,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":180,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":181,"author":{"gitId":"yleeyilin"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":182,"author":{"gitId":"yleeyilin"},"content":" public Staff findStaffByName(Name targetName) {","lastModifiedDate":"2024-03-17"},{"lineNumber":183,"author":{"gitId":"yleeyilin"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":184,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":185,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":186,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":187,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":188,"author":{"gitId":"chiageng"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2024-03-09"},{"lineNumber":189,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":190,"author":{"gitId":"chiageng"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2024-03-09"},{"lineNumber":191,"author":{"gitId":"chiageng"},"content":" private final Person person;","lastModifiedDate":"2024-03-09"},{"lineNumber":192,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":193,"author":{"gitId":"chiageng"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2024-03-09"},{"lineNumber":194,"author":{"gitId":"chiageng"},"content":" requireNonNull(person);","lastModifiedDate":"2024-03-09"},{"lineNumber":195,"author":{"gitId":"chiageng"},"content":" this.person \u003d person;","lastModifiedDate":"2024-03-09"},{"lineNumber":196,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":197,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":198,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":199,"author":{"gitId":"chiageng"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2024-03-09"},{"lineNumber":200,"author":{"gitId":"chiageng"},"content":" requireNonNull(person);","lastModifiedDate":"2024-03-09"},{"lineNumber":201,"author":{"gitId":"chiageng"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2024-03-09"},{"lineNumber":202,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":203,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":204,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":205,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":206,"author":{"gitId":"chiageng"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2024-03-09"},{"lineNumber":207,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":208,"author":{"gitId":"chiageng"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2024-03-09"},{"lineNumber":209,"author":{"gitId":"chiageng"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-09"},{"lineNumber":210,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":211,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":212,"author":{"gitId":"chiageng"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2024-03-09"},{"lineNumber":213,"author":{"gitId":"chiageng"},"content":" requireNonNull(person);","lastModifiedDate":"2024-03-09"},{"lineNumber":214,"author":{"gitId":"chiageng"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2024-03-09"},{"lineNumber":215,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":216,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":217,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":218,"author":{"gitId":"chiageng"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2024-03-09"},{"lineNumber":219,"author":{"gitId":"chiageng"},"content":" requireNonNull(person);","lastModifiedDate":"2024-03-09"},{"lineNumber":220,"author":{"gitId":"chiageng"},"content":" personsAdded.add(person);","lastModifiedDate":"2024-03-09"},{"lineNumber":221,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":222,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":223,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":224,"author":{"gitId":"chiageng"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2024-03-09"},{"lineNumber":225,"author":{"gitId":"chiageng"},"content":" return new AddressBook();","lastModifiedDate":"2024-03-09"},{"lineNumber":226,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":227,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":228,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":229,"author":{"gitId":"chiageng"},"content":"}","lastModifiedDate":"2024-03-09"}],"authorContributionMap":{"chiageng":203,"jamessinmaojun":3,"yleeyilin":23}},{"path":"src/test/java/seedu/address/logic/commands/AddSupplierCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chiageng"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-09"},{"lineNumber":2,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":3,"author":{"gitId":"chiageng"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-09"},{"lineNumber":4,"author":{"gitId":"chiageng"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-09"},{"lineNumber":5,"author":{"gitId":"chiageng"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-09"},{"lineNumber":6,"author":{"gitId":"chiageng"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-09"},{"lineNumber":7,"author":{"gitId":"chiageng"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-09"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":"import static seedu.address.testutil.TypicalPersons.ALICESUPPLIER;","lastModifiedDate":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-09"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-09"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-09"},{"lineNumber":13,"author":{"gitId":"chiageng"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-09"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-09"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-09"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2024-03-09"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-09"},{"lineNumber":20,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.AddMessages;","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-03-09"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-09"},{"lineNumber":23,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-09"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-09"},{"lineNumber":25,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Maintainer;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-09"},{"lineNumber":28,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Staff;","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Supplier;","lastModifiedDate":"2024-03-09"},{"lineNumber":30,"author":{"gitId":"chiageng"},"content":"import seedu.address.testutil.SupplierBuilder;","lastModifiedDate":"2024-03-09"},{"lineNumber":31,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":32,"author":{"gitId":"chiageng"},"content":"public class AddSupplierCommandTest {","lastModifiedDate":"2024-03-09"},{"lineNumber":33,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":34,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":35,"author":{"gitId":"chiageng"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":36,"author":{"gitId":"chiageng"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddSupplierCommand(null));","lastModifiedDate":"2024-03-09"},{"lineNumber":37,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":38,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":39,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":40,"author":{"gitId":"chiageng"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2024-03-09"},{"lineNumber":41,"author":{"gitId":"chiageng"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2024-03-09"},{"lineNumber":42,"author":{"gitId":"chiageng"},"content":" Supplier validPerson \u003d new SupplierBuilder().build();","lastModifiedDate":"2024-03-09"},{"lineNumber":43,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":44,"author":{"gitId":"chiageng"},"content":" CommandResult commandResult \u003d new AddSupplierCommand(validPerson).execute(modelStub);","lastModifiedDate":"2024-03-09"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":46,"author":{"gitId":"jamessinmaojun"},"content":" assertEquals(String.format(AddMessages.MESSAGE_ADD_PERSON_SUCCESS, AddMessages.format(validPerson)),","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2024-03-09"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":" assertEquals(Arrays.asList(validPerson), modelStub.personsAdded);","lastModifiedDate":"2024-03-09"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":53,"author":{"gitId":"chiageng"},"content":" Supplier validPerson \u003d new SupplierBuilder().build();","lastModifiedDate":"2024-03-09"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":" AddSupplierCommand addCommand \u003d new AddSupplierCommand(validPerson);","lastModifiedDate":"2024-03-09"},{"lineNumber":55,"author":{"gitId":"chiageng"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPerson);","lastModifiedDate":"2024-03-09"},{"lineNumber":56,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":57,"author":{"gitId":"chiageng"},"content":" assertThrows(CommandException.class,","lastModifiedDate":"2024-03-09"},{"lineNumber":58,"author":{"gitId":"jamessinmaojun"},"content":" AddMessages.MESSAGE_ADD_DUPLICATE_PERSON, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":60,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":61,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":62,"author":{"gitId":"chiageng"},"content":" public void equals() {","lastModifiedDate":"2024-03-09"},{"lineNumber":63,"author":{"gitId":"chiageng"},"content":" Supplier alice \u003d new SupplierBuilder().withName(\"Alice\").build();","lastModifiedDate":"2024-03-09"},{"lineNumber":64,"author":{"gitId":"chiageng"},"content":" Supplier bob \u003d new SupplierBuilder().withName(\"Bob\").build();","lastModifiedDate":"2024-03-09"},{"lineNumber":65,"author":{"gitId":"chiageng"},"content":" AddSupplierCommand addAliceCommand \u003d new AddSupplierCommand(alice);","lastModifiedDate":"2024-03-09"},{"lineNumber":66,"author":{"gitId":"chiageng"},"content":" AddSupplierCommand addBobCommand \u003d new AddSupplierCommand(bob);","lastModifiedDate":"2024-03-09"},{"lineNumber":67,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":68,"author":{"gitId":"chiageng"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-09"},{"lineNumber":69,"author":{"gitId":"chiageng"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2024-03-09"},{"lineNumber":70,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":71,"author":{"gitId":"chiageng"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-09"},{"lineNumber":72,"author":{"gitId":"chiageng"},"content":" AddSupplierCommand addAliceCommandCopy \u003d new AddSupplierCommand(alice);","lastModifiedDate":"2024-03-09"},{"lineNumber":73,"author":{"gitId":"chiageng"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2024-03-09"},{"lineNumber":74,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":75,"author":{"gitId":"chiageng"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":76,"author":{"gitId":"chiageng"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2024-03-09"},{"lineNumber":77,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":78,"author":{"gitId":"chiageng"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":79,"author":{"gitId":"chiageng"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2024-03-09"},{"lineNumber":80,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":81,"author":{"gitId":"chiageng"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":82,"author":{"gitId":"chiageng"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2024-03-09"},{"lineNumber":83,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":84,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":85,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":86,"author":{"gitId":"chiageng"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-09"},{"lineNumber":87,"author":{"gitId":"chiageng"},"content":" AddSupplierCommand addCommand \u003d new AddSupplierCommand(ALICESUPPLIER);","lastModifiedDate":"2024-03-09"},{"lineNumber":88,"author":{"gitId":"chiageng"},"content":" String expected \u003d AddSupplierCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICESUPPLIER + \"}\";","lastModifiedDate":"2024-03-09"},{"lineNumber":89,"author":{"gitId":"chiageng"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2024-03-09"},{"lineNumber":90,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":91,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":92,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":93,"author":{"gitId":"chiageng"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2024-03-09"},{"lineNumber":94,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":95,"author":{"gitId":"chiageng"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2024-03-09"},{"lineNumber":96,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":97,"author":{"gitId":"chiageng"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2024-03-09"},{"lineNumber":98,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":99,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":100,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":101,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":102,"author":{"gitId":"chiageng"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2024-03-09"},{"lineNumber":103,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":104,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":105,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":106,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":107,"author":{"gitId":"chiageng"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2024-03-09"},{"lineNumber":108,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":109,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":110,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":111,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":112,"author":{"gitId":"chiageng"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2024-03-09"},{"lineNumber":113,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":114,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":115,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":116,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":117,"author":{"gitId":"chiageng"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2024-03-09"},{"lineNumber":118,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":119,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":120,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":121,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":122,"author":{"gitId":"chiageng"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2024-03-09"},{"lineNumber":123,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":124,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":125,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":126,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":127,"author":{"gitId":"chiageng"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2024-03-09"},{"lineNumber":128,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":129,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":130,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":131,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":132,"author":{"gitId":"chiageng"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2024-03-09"},{"lineNumber":133,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":134,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":135,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":136,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":137,"author":{"gitId":"chiageng"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2024-03-09"},{"lineNumber":138,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":139,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":140,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":141,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":142,"author":{"gitId":"chiageng"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2024-03-09"},{"lineNumber":143,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":144,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":145,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":146,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":147,"author":{"gitId":"chiageng"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2024-03-09"},{"lineNumber":148,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":149,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":150,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":151,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":152,"author":{"gitId":"chiageng"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2024-03-09"},{"lineNumber":153,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":154,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":155,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":156,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":157,"author":{"gitId":"chiageng"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2024-03-09"},{"lineNumber":158,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":159,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":160,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":161,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":162,"author":{"gitId":"chiageng"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2024-03-09"},{"lineNumber":163,"author":{"gitId":"chiageng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-09"},{"lineNumber":164,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":165,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":166,"author":{"gitId":"yleeyilin"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":167,"author":{"gitId":"yleeyilin"},"content":" public Person findByName(Name targetName) {","lastModifiedDate":"2024-03-17"},{"lineNumber":168,"author":{"gitId":"yleeyilin"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":169,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":170,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":171,"author":{"gitId":"yleeyilin"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":172,"author":{"gitId":"yleeyilin"},"content":" public Maintainer findMaintainerByName(Name targetName) {","lastModifiedDate":"2024-03-17"},{"lineNumber":173,"author":{"gitId":"yleeyilin"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":174,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":175,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":176,"author":{"gitId":"yleeyilin"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":177,"author":{"gitId":"yleeyilin"},"content":" public Supplier findSupplierByName(Name targetName) {","lastModifiedDate":"2024-03-17"},{"lineNumber":178,"author":{"gitId":"yleeyilin"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":179,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":180,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":181,"author":{"gitId":"yleeyilin"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":182,"author":{"gitId":"yleeyilin"},"content":" public Staff findStaffByName(Name targetName) {","lastModifiedDate":"2024-03-17"},{"lineNumber":183,"author":{"gitId":"yleeyilin"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":184,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":185,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":186,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":187,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":188,"author":{"gitId":"chiageng"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2024-03-09"},{"lineNumber":189,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":190,"author":{"gitId":"chiageng"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2024-03-09"},{"lineNumber":191,"author":{"gitId":"chiageng"},"content":" private final Person person;","lastModifiedDate":"2024-03-09"},{"lineNumber":192,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":193,"author":{"gitId":"chiageng"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2024-03-09"},{"lineNumber":194,"author":{"gitId":"chiageng"},"content":" requireNonNull(person);","lastModifiedDate":"2024-03-09"},{"lineNumber":195,"author":{"gitId":"chiageng"},"content":" this.person \u003d person;","lastModifiedDate":"2024-03-09"},{"lineNumber":196,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":197,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":198,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":199,"author":{"gitId":"chiageng"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2024-03-09"},{"lineNumber":200,"author":{"gitId":"chiageng"},"content":" requireNonNull(person);","lastModifiedDate":"2024-03-09"},{"lineNumber":201,"author":{"gitId":"chiageng"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2024-03-09"},{"lineNumber":202,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":203,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":204,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":205,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":206,"author":{"gitId":"chiageng"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2024-03-09"},{"lineNumber":207,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":208,"author":{"gitId":"chiageng"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2024-03-09"},{"lineNumber":209,"author":{"gitId":"chiageng"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-09"},{"lineNumber":210,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":211,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":212,"author":{"gitId":"chiageng"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2024-03-09"},{"lineNumber":213,"author":{"gitId":"chiageng"},"content":" requireNonNull(person);","lastModifiedDate":"2024-03-09"},{"lineNumber":214,"author":{"gitId":"chiageng"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2024-03-09"},{"lineNumber":215,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":216,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":217,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":218,"author":{"gitId":"chiageng"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2024-03-09"},{"lineNumber":219,"author":{"gitId":"chiageng"},"content":" requireNonNull(person);","lastModifiedDate":"2024-03-09"},{"lineNumber":220,"author":{"gitId":"chiageng"},"content":" personsAdded.add(person);","lastModifiedDate":"2024-03-09"},{"lineNumber":221,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":222,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":223,"author":{"gitId":"chiageng"},"content":" @Override","lastModifiedDate":"2024-03-09"},{"lineNumber":224,"author":{"gitId":"chiageng"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2024-03-09"},{"lineNumber":225,"author":{"gitId":"chiageng"},"content":" return new AddressBook();","lastModifiedDate":"2024-03-09"},{"lineNumber":226,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":227,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":228,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":229,"author":{"gitId":"chiageng"},"content":"}","lastModifiedDate":"2024-03-09"}],"authorContributionMap":{"chiageng":203,"jamessinmaojun":3,"yleeyilin":23}},{"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":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COMMISSION;","lastModifiedDate":"2024-03-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMPLOYMENT;","lastModifiedDate":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NOTE;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PRICE;","lastModifiedDate":"2024-03-09"},{"lineNumber":13,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PRODUCT;","lastModifiedDate":"2024-03-09"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SALARY;","lastModifiedDate":"2024-03-09"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SKILL;","lastModifiedDate":"2024-03-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":27,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":30,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.testutil.EditMaintainerDescriptorBuilder;","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05"},{"lineNumber":32,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.testutil.EditStaffDescriptorBuilder;","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.testutil.EditSupplierDescriptorBuilder;","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":" public static final String VALID_PRODUCT_AMY \u003d \"pooch food\";","lastModifiedDate":"2024-03-09"},{"lineNumber":46,"author":{"gitId":"chiageng"},"content":" public static final String VALID_PRICE_AMY \u003d \"$50/bag\";","lastModifiedDate":"2024-03-09"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":" public static final String VALID_SKILL_AMY \u003d \"trian dog\";","lastModifiedDate":"2024-03-09"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":" public static final String VALID_COMMISSION_AMY \u003d \"$50/hr\";","lastModifiedDate":"2024-03-09"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":" public static final String VALID_SALARY_AMY \u003d \"$50/hr\";","lastModifiedDate":"2024-03-09"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":" public static final String VALID_EMPLOYMENT_AMY \u003d \"part-time\";","lastModifiedDate":"2024-03-09"},{"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":"jannaleong"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"jannaleong"},"content":" public static final String VALID_NOTE_AMY \u003d \"Cancel shipment with amy\";","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"jannaleong"},"content":" public static final String VALID_NOTE_BOB \u003d \"Cancel shipment with bob\";","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"chiageng"},"content":" public static final String VALID_PRODUCT_BOB \u003d \"pooch food\";","lastModifiedDate":"2024-03-09"},{"lineNumber":58,"author":{"gitId":"chiageng"},"content":" public static final String VALID_PRICE_BOB \u003d \"$50/bag\";","lastModifiedDate":"2024-03-09"},{"lineNumber":59,"author":{"gitId":"chiageng"},"content":" public static final String VALID_SKILL_BOB \u003d \"trian dog\";","lastModifiedDate":"2024-03-09"},{"lineNumber":60,"author":{"gitId":"chiageng"},"content":" public static final String VALID_COMMISSION_BOB \u003d \"$50/hr\";","lastModifiedDate":"2024-03-09"},{"lineNumber":61,"author":{"gitId":"chiageng"},"content":" public static final String VALID_SALARY_BOB \u003d \"$50/hr\";","lastModifiedDate":"2024-03-09"},{"lineNumber":62,"author":{"gitId":"chiageng"},"content":" public static final String VALID_EMPLOYMENT_BOB \u003d \"part-time\";","lastModifiedDate":"2024-03-09"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05"},{"lineNumber":64,"author":{"gitId":"chiageng"},"content":" public static final String VALID_TAG \u003d \"other\";","lastModifiedDate":"2024-03-08"},{"lineNumber":65,"author":{"gitId":"yleeyilin"},"content":" public static final String VALID_TAG_STAFF \u003d \"staff\";","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"yleeyilin"},"content":" public static final String VALID_TAG_SUPPLIER \u003d \"supplier\";","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"yleeyilin"},"content":" public static final String VALID_TAG_MAINTAINER \u003d \"maintainer\";","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":70,"author":{"gitId":"jannaleong"},"content":" public static final String NOTE_DESC_BOB \u003d \" \" + PREFIX_NOTE + \"get kibble\";","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":79,"author":{"gitId":"chiageng"},"content":" public static final String SALARY_DESC_AMY \u003d \" \" + PREFIX_SALARY + VALID_SALARY_AMY;","lastModifiedDate":"2024-03-09"},{"lineNumber":80,"author":{"gitId":"chiageng"},"content":" public static final String EMPLOYMENT_DESC_AMY \u003d \" \" + PREFIX_EMPLOYMENT + VALID_EMPLOYMENT_AMY;","lastModifiedDate":"2024-03-09"},{"lineNumber":81,"author":{"gitId":"chiageng"},"content":" public static final String PRODUCT_DESC_AMY \u003d \" \" + PREFIX_PRODUCT + VALID_PRODUCT_AMY;","lastModifiedDate":"2024-03-09"},{"lineNumber":82,"author":{"gitId":"chiageng"},"content":" public static final String PRICE_DESC_AMY \u003d \" \" + PREFIX_PRICE + VALID_PRICE_AMY;","lastModifiedDate":"2024-03-09"},{"lineNumber":83,"author":{"gitId":"chiageng"},"content":" public static final String SKILL_DESC_AMY \u003d \" \" + PREFIX_SKILL + VALID_SKILL_AMY;","lastModifiedDate":"2024-03-09"},{"lineNumber":84,"author":{"gitId":"chiageng"},"content":" public static final String COMMISSION_DESC_AMY \u003d \" \" + PREFIX_COMMISSION + VALID_COMMISSION_AMY;","lastModifiedDate":"2024-03-09"},{"lineNumber":85,"author":{"gitId":"chiageng"},"content":" public static final String SALARY_DESC_BOB \u003d \" \" + PREFIX_SALARY + VALID_SALARY_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":86,"author":{"gitId":"chiageng"},"content":" public static final String EMPLOYMENT_DESC_BOB \u003d \" \" + PREFIX_EMPLOYMENT + VALID_EMPLOYMENT_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":87,"author":{"gitId":"chiageng"},"content":" public static final String PRODUCT_DESC_BOB \u003d \" \" + PREFIX_PRODUCT + VALID_PRODUCT_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":88,"author":{"gitId":"chiageng"},"content":" public static final String PRICE_DESC_BOB \u003d \" \" + PREFIX_PRICE + VALID_PRICE_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":89,"author":{"gitId":"chiageng"},"content":" public static final String SKILL_DESC_BOB \u003d \" \" + PREFIX_SKILL + VALID_SKILL_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":90,"author":{"gitId":"chiageng"},"content":" public static final String COMMISSION_DESC_BOB \u003d \" \" + PREFIX_COMMISSION + VALID_COMMISSION_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":94,"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":95,"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":96,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05"},{"lineNumber":98,"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":99,"author":{"gitId":"chiageng"},"content":" public static final String INVALID_SALARY_DESC \u003d \" \" + PREFIX_SALARY + \"20\";","lastModifiedDate":"2024-03-09"},{"lineNumber":100,"author":{"gitId":"chiageng"},"content":" public static final String INVALID_EMPLOYMENT_DESC \u003d \" \" + PREFIX_EMPLOYMENT + \"employment\";","lastModifiedDate":"2024-03-09"},{"lineNumber":101,"author":{"gitId":"chiageng"},"content":" public static final String INVALID_PRODUCT_DESC \u003d \" \" + PREFIX_PRODUCT;","lastModifiedDate":"2024-03-09"},{"lineNumber":102,"author":{"gitId":"chiageng"},"content":" public static final String INVALID_PRICE_DESC \u003d \" \" + PREFIX_PRICE + \"20\";","lastModifiedDate":"2024-03-09"},{"lineNumber":103,"author":{"gitId":"chiageng"},"content":" public static final String INVALID_SKILL_DESC \u003d \" \" + PREFIX_SKILL;","lastModifiedDate":"2024-03-09"},{"lineNumber":104,"author":{"gitId":"chiageng"},"content":" public static final String INVALID_COMMISSION_DESC \u003d \" \" + PREFIX_COMMISSION + \"20\";","lastModifiedDate":"2024-03-09"},{"lineNumber":105,"author":{"gitId":"jannaleong"},"content":" public static final String INVALID_DESC_BOB \u003d \" \" + PREFIX_NOTE;","lastModifiedDate":"2024-03-19"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":111,"author":{"gitId":"yleeyilin"},"content":" public static final EditStaffCommand.EditStaffDescriptor DESC_AMY_STAFF;","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"yleeyilin"},"content":" public static final EditStaffCommand.EditStaffDescriptor DESC_BOB_STAFF;","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"yleeyilin"},"content":" public static final EditSupplierCommand.EditSupplierDescriptor DESC_AMY_SUPPLIER;","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"yleeyilin"},"content":" public static final EditSupplierCommand.EditSupplierDescriptor DESC_BOB_SUPPLIER;","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"yleeyilin"},"content":" public static final EditMaintainerCommand.EditMaintainerDescriptor DESC_AMY_MAINTAINER;","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"yleeyilin"},"content":" public static final EditMaintainerCommand.EditMaintainerDescriptor DESC_BOB_MAINTAINER;","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":119,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":120,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":121,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":122,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":123,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":124,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":125,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":126,"author":{"gitId":"yleeyilin"},"content":" DESC_AMY_SUPPLIER \u003d new EditSupplierDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"yleeyilin"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"yleeyilin"},"content":" .withPrice(VALID_PRICE_AMY).withProduct(VALID_PRODUCT_AMY)","lastModifiedDate":"2024-03-17"},{"lineNumber":129,"author":{"gitId":"yleeyilin"},"content":" .withTags(VALID_TAG_SUPPLIER).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":130,"author":{"gitId":"yleeyilin"},"content":" DESC_BOB_SUPPLIER \u003d new EditSupplierDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"yleeyilin"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"yleeyilin"},"content":" .withPrice(VALID_PRICE_BOB).withProduct(VALID_PRODUCT_BOB)","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"yleeyilin"},"content":" .withTags(VALID_TAG_SUPPLIER).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"yleeyilin"},"content":" DESC_AMY_STAFF \u003d new EditStaffDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-03-17"},{"lineNumber":135,"author":{"gitId":"yleeyilin"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2024-03-17"},{"lineNumber":136,"author":{"gitId":"yleeyilin"},"content":" .withEmployment(VALID_EMPLOYMENT_AMY).withSalary(VALID_SALARY_AMY)","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"yleeyilin"},"content":" .withTags(VALID_TAG_SUPPLIER).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":138,"author":{"gitId":"yleeyilin"},"content":" DESC_BOB_STAFF \u003d new EditStaffDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-17"},{"lineNumber":139,"author":{"gitId":"yleeyilin"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-03-17"},{"lineNumber":140,"author":{"gitId":"yleeyilin"},"content":" .withEmployment(VALID_EMPLOYMENT_BOB).withSalary(VALID_SALARY_BOB)","lastModifiedDate":"2024-03-17"},{"lineNumber":141,"author":{"gitId":"yleeyilin"},"content":" .withTags(VALID_TAG_STAFF).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"yleeyilin"},"content":" DESC_AMY_MAINTAINER \u003d new EditMaintainerDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-03-17"},{"lineNumber":143,"author":{"gitId":"yleeyilin"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2024-03-17"},{"lineNumber":144,"author":{"gitId":"yleeyilin"},"content":" .withSkill(VALID_SKILL_AMY).withCommission(VALID_COMMISSION_AMY)","lastModifiedDate":"2024-03-17"},{"lineNumber":145,"author":{"gitId":"yleeyilin"},"content":" .withTags(VALID_TAG_SUPPLIER).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"yleeyilin"},"content":" DESC_BOB_MAINTAINER \u003d new EditMaintainerDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-17"},{"lineNumber":147,"author":{"gitId":"yleeyilin"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-03-17"},{"lineNumber":148,"author":{"gitId":"yleeyilin"},"content":" .withSkill(VALID_SKILL_BOB).withCommission(VALID_COMMISSION_BOB)","lastModifiedDate":"2024-03-17"},{"lineNumber":149,"author":{"gitId":"yleeyilin"},"content":" .withTags(VALID_TAG_STAFF).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":152,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":153,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":154,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":155,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":156,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":157,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25"},{"lineNumber":158,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":159,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":160,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":161,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":163,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":164,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":168,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":169,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25"},{"lineNumber":170,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":171,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":172,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25"},{"lineNumber":173,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":174,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":175,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":178,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":179,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":180,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":181,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":182,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25"},{"lineNumber":183,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":184,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25"},{"lineNumber":185,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":186,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":187,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":188,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":190,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03"},{"lineNumber":191,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":192,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05"},{"lineNumber":193,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":194,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":195,"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":196,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31"},{"lineNumber":197,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":198,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31"},{"lineNumber":199,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":201,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31"},{"lineNumber":202,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20"},{"lineNumber":203,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":205,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08"},{"lineNumber":206,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":208,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":209,"author":{"gitId":"yleeyilin"},"content":" * Updates {@code model}\u0027s filtered list to show only the person at the given {@code targetIndex} in the","lastModifiedDate":"2024-03-17"},{"lineNumber":210,"author":{"gitId":"yleeyilin"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2024-03-17"},{"lineNumber":211,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":212,"author":{"gitId":"yleeyilin"},"content":" public static void showPersonWithName(Model model, Name targetName) {","lastModifiedDate":"2024-03-17"},{"lineNumber":213,"author":{"gitId":"yleeyilin"},"content":" assertTrue(targetName !\u003d null);","lastModifiedDate":"2024-03-17"},{"lineNumber":214,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":215,"author":{"gitId":"yleeyilin"},"content":" Person person;","lastModifiedDate":"2024-03-18"},{"lineNumber":216,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":217,"author":{"gitId":"yleeyilin"},"content":" try {","lastModifiedDate":"2024-03-18"},{"lineNumber":218,"author":{"gitId":"yleeyilin"},"content":" person \u003d model.findByName(targetName);","lastModifiedDate":"2024-03-18"},{"lineNumber":219,"author":{"gitId":"yleeyilin"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2024-03-17"},{"lineNumber":220,"author":{"gitId":"yleeyilin"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2024-03-17"},{"lineNumber":221,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":222,"author":{"gitId":"yleeyilin"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2024-03-17"},{"lineNumber":223,"author":{"gitId":"yleeyilin"},"content":" } catch (CommandException e) {","lastModifiedDate":"2024-03-18"},{"lineNumber":224,"author":{"gitId":"yleeyilin"},"content":" e.printStackTrace();","lastModifiedDate":"2024-03-18"},{"lineNumber":225,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":226,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":227,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":228,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"chiageng":37,"jannaleong":6,"-":127,"yleeyilin":58}},{"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":"jamessinmaojun"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonWithName;","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"jamessinmaojun"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"jamessinmaojun"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-16"},{"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":"jamessinmaojun"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.DeleteMessages;","lastModifiedDate":"2024-03-18"},{"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":"jamessinmaojun"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2018-01-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":33,"author":{"gitId":"jamessinmaojun"},"content":" Person personToDelete \u003d ALICE;","lastModifiedDate":"2024-03-15"},{"lineNumber":34,"author":{"gitId":"jamessinmaojun"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(ALICE.getName());","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":36,"author":{"gitId":"jamessinmaojun"},"content":" String expectedMessage \u003d String.format(DeleteMessages.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"jamessinmaojun"},"content":" DeleteMessages.format(personToDelete));","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":46,"author":{"gitId":"jamessinmaojun"},"content":" public void execute_validNameFilteredList_success() {","lastModifiedDate":"2024-03-15"},{"lineNumber":47,"author":{"gitId":"jamessinmaojun"},"content":" showPersonWithName(model, ALICE.getName());","lastModifiedDate":"2024-03-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":49,"author":{"gitId":"yleeyilin"},"content":" Person personToDelete;","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"yleeyilin"},"content":" try {","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"yleeyilin"},"content":" personToDelete \u003d model.findByName(ALICE.getName());","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"jamessinmaojun"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(ALICE.getName());","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":54,"author":{"gitId":"jamessinmaojun"},"content":" String expectedMessage \u003d String.format(DeleteMessages.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"jamessinmaojun"},"content":" DeleteMessages.format(personToDelete));","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":" showNoPerson(expectedModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":62,"author":{"gitId":"yleeyilin"},"content":" } catch (CommandException e) {","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"yleeyilin"},"content":" e.printStackTrace();","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":68,"author":{"gitId":"jamessinmaojun"},"content":" public void execute_invalidNameFilteredList_throwsCommandException() {","lastModifiedDate":"2024-03-15"},{"lineNumber":69,"author":{"gitId":"jamessinmaojun"},"content":" showPersonWithName(model, ALICE.getName());","lastModifiedDate":"2024-03-15"},{"lineNumber":70,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":71,"author":{"gitId":"jamessinmaojun"},"content":" Name invalidName \u003d BENSON.getName();","lastModifiedDate":"2024-03-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":73,"author":{"gitId":"jamessinmaojun"},"content":" // ensures that the invalid name is not equal to \"Alice Pauline\"","lastModifiedDate":"2024-03-15"},{"lineNumber":74,"author":{"gitId":"jamessinmaojun"},"content":" assertTrue(!invalidName.equals(ALICE.getName()));","lastModifiedDate":"2024-03-15"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":76,"author":{"gitId":"jamessinmaojun"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(invalidName);","lastModifiedDate":"2024-03-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":78,"author":{"gitId":"jamessinmaojun"},"content":" assertCommandFailure(deleteCommand, model, DeleteMessages.MESSAGE_DELETE_NAME_NOT_FOUND);","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":83,"author":{"gitId":"jamessinmaojun"},"content":" DeleteCommand deleteFirstCommand \u003d new DeleteCommand(ALICE.getName());","lastModifiedDate":"2024-03-15"},{"lineNumber":84,"author":{"gitId":"jamessinmaojun"},"content":" DeleteCommand deleteSecondCommand \u003d new DeleteCommand(BENSON.getName());","lastModifiedDate":"2024-03-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"jamessinmaojun"},"content":" DeleteCommand deleteFirstCommandCopy \u003d new DeleteCommand(ALICE.getName());","lastModifiedDate":"2024-03-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","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":"2019-02-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":105,"author":{"gitId":"jamessinmaojun"},"content":" Name targetName \u003d ALICE.getName();","lastModifiedDate":"2024-03-15"},{"lineNumber":106,"author":{"gitId":"jamessinmaojun"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(targetName);","lastModifiedDate":"2024-03-15"},{"lineNumber":107,"author":{"gitId":"jamessinmaojun"},"content":" String expected \u003d DeleteCommand.class.getCanonicalName() + \"{targetName\u003d\" + targetName + \"}\";","lastModifiedDate":"2024-03-15"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertEquals(expected, deleteCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":112,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":" private void showNoPerson(Model model) {","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2017-06-12"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertTrue(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2018-02-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":119,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"jamessinmaojun":29,"-":84,"yleeyilin":6}},{"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":"2024-03-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG;","lastModifiedDate":"2024-03-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-09"},{"lineNumber":13,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonWithName;","lastModifiedDate":"2024-03-17"},{"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":"yleeyilin"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2024-03-17"},{"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.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-08"},{"lineNumber":24,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.EditMessages;","lastModifiedDate":"2024-03-20"},{"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":"yleeyilin"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-04"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":43,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-26"},{"lineNumber":44,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedPerson).build();","lastModifiedDate":"2017-06-05"},{"lineNumber":45,"author":{"gitId":"yleeyilin"},"content":" EditCommand editCommand \u003d new EditCommand(ALICE.getName(), descriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":47,"author":{"gitId":"jamessinmaojun"},"content":" String expectedMessage \u003d String.format(EditMessages.MESSAGE_EDIT_PERSON_SUCCESS,","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"jamessinmaojun"},"content":" EditMessages.format(editedPerson));","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":58,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2017-05-18"},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2017-05-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-18"},{"lineNumber":63,"author":{"gitId":"chiageng"},"content":" .withTags(VALID_TAG).build();","lastModifiedDate":"2024-03-08"},{"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":"chiageng"},"content":" .withPhone(VALID_PHONE_BOB).withTags(VALID_TAG).build();","lastModifiedDate":"2024-03-08"},{"lineNumber":67,"author":{"gitId":"yleeyilin"},"content":" EditCommand editCommand \u003d new EditCommand(lastPerson.getName(), descriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":69,"author":{"gitId":"jamessinmaojun"},"content":" String expectedMessage \u003d String.format(EditMessages.MESSAGE_EDIT_PERSON_SUCCESS,","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"jamessinmaojun"},"content":" EditMessages.format(editedPerson));","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":72,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":80,"author":{"gitId":"yleeyilin"},"content":" EditCommand editCommand \u003d new EditCommand(ALICE.getName(), new EditPersonDescriptor());","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"-"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":83,"author":{"gitId":"jamessinmaojun"},"content":" String expectedMessage \u003d String.format(EditMessages.MESSAGE_EDIT_PERSON_SUCCESS,","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"jamessinmaojun"},"content":" EditMessages.format(editedPerson));","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":93,"author":{"gitId":"yleeyilin"},"content":" showPersonWithName(model, ALICE.getName());","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":96,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder(personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":97,"author":{"gitId":"yleeyilin"},"content":" EditCommand editCommand \u003d new EditCommand(ALICE.getName(),","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":100,"author":{"gitId":"jamessinmaojun"},"content":" String expectedMessage \u003d String.format(EditMessages.MESSAGE_EDIT_PERSON_SUCCESS,","lastModifiedDate":"2024-03-20"},{"lineNumber":101,"author":{"gitId":"jamessinmaojun"},"content":" EditMessages.format(editedPerson));","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":112,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05"},{"lineNumber":113,"author":{"gitId":"yleeyilin"},"content":" EditCommand editCommand \u003d new EditCommand(BENSON.getName(), descriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"jamessinmaojun"},"content":" assertCommandFailure(editCommand, model, EditMessages.MESSAGE_EDIT_NO_DIFFERENCE);","lastModifiedDate":"2024-03-20"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":120,"author":{"gitId":"yleeyilin"},"content":" showPersonWithName(model, ALICE.getName());","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":122,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2017-05-18"},{"lineNumber":123,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":124,"author":{"gitId":"yleeyilin"},"content":" EditCommand editCommand \u003d new EditCommand(ALICE.getName(),","lastModifiedDate":"2024-03-17"},{"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":"jamessinmaojun"},"content":" assertCommandFailure(editCommand, model, EditMessages.MESSAGE_EDIT_NO_DIFFERENCE);","lastModifiedDate":"2024-03-20"},{"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":"yleeyilin"},"content":" public void execute_invalidPersonNameUnfilteredList_failure() {","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"yleeyilin"},"content":" Name invalidName \u003d new Name(\"invalidName\");","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"yleeyilin"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(\"Benson\").build();","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"yleeyilin"},"content":" EditCommand editCommand \u003d new EditCommand(invalidName, descriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":136,"author":{"gitId":"jamessinmaojun"},"content":" assertCommandFailure(editCommand, model, EditMessages.MESSAGE_INVALID_EDIT_PERSON);","lastModifiedDate":"2024-03-20"},{"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":"yleeyilin"},"content":" final EditCommand standardCommand \u003d new EditCommand(ALICE.getName(), DESC_AMY);","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08"},{"lineNumber":145,"author":{"gitId":"yleeyilin"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(ALICE.getName(), copyDescriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":148,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":151,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":154,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":155,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":158,"author":{"gitId":"yleeyilin"},"content":" assertFalse(standardCommand.equals(new EditCommand(BENSON.getName(), DESC_AMY)));","lastModifiedDate":"2024-03-17"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":161,"author":{"gitId":"yleeyilin"},"content":" assertFalse(standardCommand.equals(new EditCommand(ALICE.getName(), DESC_BOB)));","lastModifiedDate":"2024-03-17"},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":164,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":166,"author":{"gitId":"yleeyilin"},"content":" Name name \u003d ALICE.getName();","lastModifiedDate":"2024-03-17"},{"lineNumber":167,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":168,"author":{"gitId":"yleeyilin"},"content":" EditCommand editCommand \u003d new EditCommand(ALICE.getName(), editPersonDescriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":169,"author":{"gitId":"yleeyilin"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{name\u003d\" + name + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2024-03-17"},{"lineNumber":170,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08"}],"authorContributionMap":{"chiageng":3,"jamessinmaojun":12,"-":136,"yleeyilin":23}},{"path":"src/test/java/seedu/address/logic/commands/EditMaintainerCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yleeyilin"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"yleeyilin"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"yleeyilin"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"yleeyilin"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY_MAINTAINER;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB_MAINTAINER;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.testutil.TypicalPersons.ALICEMAINTAINER;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.testutil.TypicalPersons.BENSONMAINTAINER;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"yleeyilin"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.logic.commands.EditMaintainerCommand.EditMaintainerDescriptor;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"yleeyilin"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"yleeyilin"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditMaintainerCommand.","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"yleeyilin"},"content":"public class EditMaintainerCommandTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"yleeyilin"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"yleeyilin"},"content":" public void equals() {","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"yleeyilin"},"content":" final EditMaintainerCommand standardCommand \u003d","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"yleeyilin"},"content":" new EditMaintainerCommand(ALICEMAINTAINER.getName(), DESC_AMY_MAINTAINER);","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"yleeyilin"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"yleeyilin"},"content":" EditMaintainerDescriptor copyDescriptor \u003d new EditMaintainerDescriptor(DESC_AMY_MAINTAINER);","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"yleeyilin"},"content":" EditMaintainerCommand commandWithSameValues \u003d","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"yleeyilin"},"content":" new EditMaintainerCommand(ALICEMAINTAINER.getName(), copyDescriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"yleeyilin"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"yleeyilin"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"yleeyilin"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"yleeyilin"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"yleeyilin"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"yleeyilin"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"yleeyilin"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"yleeyilin"},"content":" // different index -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"yleeyilin"},"content":" assertFalse(standardCommand.equals(new EditMaintainerCommand(BENSONMAINTAINER","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"yleeyilin"},"content":" .getName(), DESC_AMY_MAINTAINER)));","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"yleeyilin"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"yleeyilin"},"content":" assertFalse(standardCommand.equals(new EditMaintainerCommand(ALICEMAINTAINER","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"yleeyilin"},"content":" .getName(), DESC_BOB_MAINTAINER)));","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"yleeyilin"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"yleeyilin"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"yleeyilin"},"content":" Name name \u003d ALICEMAINTAINER.getName();","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"yleeyilin"},"content":" EditMaintainerDescriptor editMaintainerDescriptor \u003d new EditMaintainerDescriptor();","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"yleeyilin"},"content":" EditMaintainerCommand editMaintainerCommand \u003d","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"yleeyilin"},"content":" new EditMaintainerCommand(ALICEMAINTAINER.getName(), editMaintainerDescriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"yleeyilin"},"content":" String expected \u003d EditMaintainerCommand.class.getCanonicalName()","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"yleeyilin"},"content":" + \"{name\u003d\" + name + \", editMaintainerDescriptor\u003d\"","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"yleeyilin"},"content":" + editMaintainerDescriptor + \"}\";","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"yleeyilin"},"content":" assertEquals(expected, editMaintainerCommand.toString());","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"yleeyilin"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"yleeyilin":62}},{"path":"src/test/java/seedu/address/logic/commands/EditMaintainerDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yleeyilin"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"yleeyilin"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"yleeyilin"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"yleeyilin"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY_MAINTAINER;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB_MAINTAINER;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"yleeyilin"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.logic.commands.EditMaintainerCommand.EditMaintainerDescriptor;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.testutil.EditMaintainerDescriptorBuilder;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"yleeyilin"},"content":"public class EditMaintainerDescriptorTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"yleeyilin"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"yleeyilin"},"content":" public void equals() {","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"yleeyilin"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"yleeyilin"},"content":" EditMaintainerDescriptor descriptorWithSameValues \u003d new EditMaintainerDescriptor(DESC_AMY_MAINTAINER);","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"yleeyilin"},"content":" assertTrue(DESC_AMY_MAINTAINER.equals(descriptorWithSameValues));","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"yleeyilin"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"yleeyilin"},"content":" assertTrue(DESC_AMY_MAINTAINER.equals(DESC_AMY_MAINTAINER));","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"yleeyilin"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"yleeyilin"},"content":" assertFalse(DESC_AMY_MAINTAINER.equals(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"yleeyilin"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"yleeyilin"},"content":" assertFalse(DESC_AMY_MAINTAINER.equals(5));","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"yleeyilin"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"yleeyilin"},"content":" assertFalse(DESC_AMY_MAINTAINER.equals(DESC_BOB_MAINTAINER));","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"yleeyilin"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"yleeyilin"},"content":" EditMaintainerDescriptor editedAmy \u003d","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"yleeyilin"},"content":" new EditMaintainerDescriptorBuilder(DESC_AMY_MAINTAINER).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"yleeyilin"},"content":" assertFalse(DESC_AMY_MAINTAINER.equals(editedAmy));","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"yleeyilin"},"content":" // different email -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"yleeyilin"},"content":" editedAmy \u003d new EditMaintainerDescriptorBuilder(DESC_AMY_MAINTAINER).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"yleeyilin"},"content":" assertFalse(DESC_AMY_MAINTAINER.equals(editedAmy));","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"yleeyilin"},"content":" // different address -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"yleeyilin"},"content":" editedAmy \u003d new EditMaintainerDescriptorBuilder(DESC_AMY_MAINTAINER).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"yleeyilin"},"content":" assertFalse(DESC_AMY_MAINTAINER.equals(editedAmy));","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"yleeyilin"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"yleeyilin"},"content":" editedAmy \u003d new EditMaintainerDescriptorBuilder(DESC_AMY_MAINTAINER).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"yleeyilin"},"content":" assertFalse(DESC_AMY_MAINTAINER.equals(editedAmy));","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"yleeyilin"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"yleeyilin"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"yleeyilin"},"content":" EditMaintainerDescriptor editMaintainerDescriptor \u003d new EditMaintainerDescriptor();","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"yleeyilin"},"content":" String expected \u003d EditMaintainerDescriptor.class.getCanonicalName() + \"{phone\u003d\"","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"yleeyilin"},"content":" + editMaintainerDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"yleeyilin"},"content":" + editMaintainerDescriptor.getEmail().orElse(null) + \", address\u003d\"","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"yleeyilin"},"content":" + editMaintainerDescriptor.getAddress().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"yleeyilin"},"content":" + editMaintainerDescriptor.getTags().orElse(null) + \", skill\u003d\"","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"yleeyilin"},"content":" + editMaintainerDescriptor.getSkill().orElse(null) + \", commission\u003d\"","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"yleeyilin"},"content":" + editMaintainerDescriptor.getCommission().orElse(null) + \"}\";","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"yleeyilin"},"content":" assertEquals(expected, editMaintainerDescriptor.toString());","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"yleeyilin"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"yleeyilin":68}},{"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_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":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorTest {","lastModifiedDate":"2017-05-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptorWithSameValues \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":39,"author":{"gitId":"yleeyilin"},"content":" EditPersonDescriptor editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-05"},{"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":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"yleeyilin"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{phone\u003d\"","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", address\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getAddress().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getTags().orElse(null) + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"-":63,"yleeyilin":2}},{"path":"src/test/java/seedu/address/logic/commands/EditStaffCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yleeyilin"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"yleeyilin"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"yleeyilin"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"yleeyilin"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY_STAFF;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB_STAFF;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.testutil.TypicalPersons.ALICESTAFF;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.testutil.TypicalPersons.BENSONSTAFF;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"yleeyilin"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.logic.commands.EditStaffCommand.EditStaffDescriptor;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"yleeyilin"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"yleeyilin"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditStaffCommand.","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"yleeyilin"},"content":"public class EditStaffCommandTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"yleeyilin"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"yleeyilin"},"content":" public void equals() {","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"yleeyilin"},"content":" final EditStaffCommand standardCommand \u003d new EditStaffCommand(ALICESTAFF.getName(), DESC_AMY_STAFF);","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"yleeyilin"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"yleeyilin"},"content":" EditStaffDescriptor copyDescriptor \u003d new EditStaffDescriptor(DESC_AMY_STAFF);","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"yleeyilin"},"content":" EditStaffCommand commandWithSameValues \u003d new EditStaffCommand(ALICESTAFF.getName(), copyDescriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"yleeyilin"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"yleeyilin"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"yleeyilin"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"yleeyilin"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"yleeyilin"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"yleeyilin"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"yleeyilin"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"yleeyilin"},"content":" // different index -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"yleeyilin"},"content":" assertFalse(standardCommand.equals(new EditStaffCommand(BENSONSTAFF.getName(), DESC_AMY_STAFF)));","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"yleeyilin"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"yleeyilin"},"content":" assertFalse(standardCommand.equals(new EditStaffCommand(ALICESTAFF.getName(), DESC_BOB_STAFF)));","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"yleeyilin"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"yleeyilin"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"yleeyilin"},"content":" Name name \u003d ALICESTAFF.getName();","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"yleeyilin"},"content":" EditStaffDescriptor editStaffDescriptor \u003d new EditStaffDescriptor();","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"yleeyilin"},"content":" EditStaffCommand editStaffCommand \u003d new EditStaffCommand(ALICESTAFF.getName(), editStaffDescriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"yleeyilin"},"content":" String expected \u003d EditStaffCommand.class.getCanonicalName() + \"{name\u003d\" + name + \", editStaffDescriptor\u003d\"","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"yleeyilin"},"content":" + editStaffDescriptor + \"}\";","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"yleeyilin"},"content":" assertEquals(expected, editStaffCommand.toString());","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"yleeyilin"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"yleeyilin":55}},{"path":"src/test/java/seedu/address/logic/commands/EditStaffDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yleeyilin"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"yleeyilin"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"yleeyilin"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"yleeyilin"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY_STAFF;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB_STAFF;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"yleeyilin"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.logic.commands.EditStaffCommand.EditStaffDescriptor;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.testutil.EditStaffDescriptorBuilder;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"yleeyilin"},"content":"public class EditStaffDescriptorTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"yleeyilin"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"yleeyilin"},"content":" public void equals() {","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"yleeyilin"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"yleeyilin"},"content":" EditStaffDescriptor descriptorWithSameValues \u003d new EditStaffDescriptor(DESC_AMY_STAFF);","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"yleeyilin"},"content":" assertTrue(DESC_AMY_STAFF.equals(descriptorWithSameValues));","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"yleeyilin"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"yleeyilin"},"content":" assertTrue(DESC_AMY_STAFF.equals(DESC_AMY_STAFF));","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"yleeyilin"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"yleeyilin"},"content":" assertFalse(DESC_AMY_STAFF.equals(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"yleeyilin"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"yleeyilin"},"content":" assertFalse(DESC_AMY_STAFF.equals(5));","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"yleeyilin"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"yleeyilin"},"content":" assertFalse(DESC_AMY_STAFF.equals(DESC_BOB_STAFF));","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"yleeyilin"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"yleeyilin"},"content":" EditStaffDescriptor editedAmy \u003d","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"yleeyilin"},"content":" new EditStaffDescriptorBuilder(DESC_AMY_STAFF).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"yleeyilin"},"content":" assertFalse(DESC_AMY_STAFF.equals(editedAmy));","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"yleeyilin"},"content":" // different email -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"yleeyilin"},"content":" editedAmy \u003d new EditStaffDescriptorBuilder(DESC_AMY_STAFF).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"yleeyilin"},"content":" assertFalse(DESC_AMY_STAFF.equals(editedAmy));","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"yleeyilin"},"content":" // different address -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"yleeyilin"},"content":" editedAmy \u003d new EditStaffDescriptorBuilder(DESC_AMY_STAFF).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"yleeyilin"},"content":" assertFalse(DESC_AMY_STAFF.equals(editedAmy));","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"yleeyilin"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"yleeyilin"},"content":" editedAmy \u003d new EditStaffDescriptorBuilder(DESC_AMY_STAFF).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"yleeyilin"},"content":" assertFalse(DESC_AMY_STAFF.equals(editedAmy));","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"yleeyilin"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"yleeyilin"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"yleeyilin"},"content":" EditStaffDescriptor editStaffDescriptor \u003d new EditStaffDescriptor();","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"yleeyilin"},"content":" String expected \u003d EditStaffDescriptor.class.getCanonicalName() + \"{phone\u003d\"","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"yleeyilin"},"content":" + editStaffDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"yleeyilin"},"content":" + editStaffDescriptor.getEmail().orElse(null) + \", address\u003d\"","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"yleeyilin"},"content":" + editStaffDescriptor.getAddress().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"yleeyilin"},"content":" + editStaffDescriptor.getTags().orElse(null) + \", salary\u003d\"","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"yleeyilin"},"content":" + editStaffDescriptor.getSalary().orElse(null) + \", employment\u003d\"","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"yleeyilin"},"content":" + editStaffDescriptor.getEmployment().orElse(null) + \"}\";","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"yleeyilin"},"content":" assertEquals(expected, editStaffDescriptor.toString());","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"yleeyilin"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"yleeyilin":68}},{"path":"src/test/java/seedu/address/logic/commands/EditSupplierCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yleeyilin"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"yleeyilin"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"yleeyilin"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"yleeyilin"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY_SUPPLIER;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB_SUPPLIER;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.testutil.TypicalPersons.ALICESUPPLIER;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.testutil.TypicalPersons.BENSONSUPPLIER;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"yleeyilin"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.logic.commands.EditSupplierCommand.EditSupplierDescriptor;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"yleeyilin"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"yleeyilin"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditSupplierCommand.","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"yleeyilin"},"content":"public class EditSupplierCommandTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"yleeyilin"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"yleeyilin"},"content":" public void equals() {","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"yleeyilin"},"content":" final EditSupplierCommand standardCommand \u003d new EditSupplierCommand(ALICESUPPLIER.getName(), DESC_AMY_SUPPLIER);","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"yleeyilin"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"yleeyilin"},"content":" EditSupplierDescriptor copyDescriptor \u003d new EditSupplierDescriptor(DESC_AMY_SUPPLIER);","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"yleeyilin"},"content":" EditSupplierCommand commandWithSameValues \u003d new EditSupplierCommand(ALICESUPPLIER.getName(), copyDescriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"yleeyilin"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"yleeyilin"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"yleeyilin"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"yleeyilin"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"yleeyilin"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"yleeyilin"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"yleeyilin"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"yleeyilin"},"content":" // different index -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"yleeyilin"},"content":" assertFalse(standardCommand.equals(new EditSupplierCommand(BENSONSUPPLIER.getName(), DESC_AMY_SUPPLIER)));","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"yleeyilin"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"yleeyilin"},"content":" assertFalse(standardCommand.equals(new EditSupplierCommand(ALICESUPPLIER.getName(), DESC_BOB_SUPPLIER)));","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"yleeyilin"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"yleeyilin"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"yleeyilin"},"content":" Name name \u003d ALICESUPPLIER.getName();","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"yleeyilin"},"content":" EditSupplierDescriptor editSupplierDescriptor \u003d new EditSupplierDescriptor();","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"yleeyilin"},"content":" EditSupplierCommand editSupplierCommand \u003d","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"yleeyilin"},"content":" new EditSupplierCommand(ALICESUPPLIER.getName(), editSupplierDescriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"yleeyilin"},"content":" String expected \u003d EditSupplierCommand.class.getCanonicalName() + \"{name\u003d\" + name + \", editSupplierDescriptor\u003d\"","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"yleeyilin"},"content":" + editSupplierDescriptor + \"}\";","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"yleeyilin"},"content":" assertEquals(expected, editSupplierCommand.toString());","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"yleeyilin"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"yleeyilin":56}},{"path":"src/test/java/seedu/address/logic/commands/EditSupplierDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yleeyilin"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"yleeyilin"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"yleeyilin"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"yleeyilin"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY_SUPPLIER;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB_SUPPLIER;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"yleeyilin"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.logic.commands.EditSupplierCommand.EditSupplierDescriptor;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.testutil.EditSupplierDescriptorBuilder;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"yleeyilin"},"content":"public class EditSupplierDescriptorTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"yleeyilin"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"yleeyilin"},"content":" public void equals() {","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"yleeyilin"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"yleeyilin"},"content":" EditSupplierDescriptor descriptorWithSameValues \u003d new EditSupplierDescriptor(DESC_AMY_SUPPLIER);","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"yleeyilin"},"content":" assertTrue(DESC_AMY_SUPPLIER.equals(descriptorWithSameValues));","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"yleeyilin"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"yleeyilin"},"content":" assertTrue(DESC_AMY_SUPPLIER.equals(DESC_AMY_SUPPLIER));","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"yleeyilin"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"yleeyilin"},"content":" assertFalse(DESC_AMY_SUPPLIER.equals(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"yleeyilin"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"yleeyilin"},"content":" assertFalse(DESC_AMY_SUPPLIER.equals(5));","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"yleeyilin"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"yleeyilin"},"content":" assertFalse(DESC_AMY_SUPPLIER.equals(DESC_BOB_SUPPLIER));","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"yleeyilin"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"yleeyilin"},"content":" EditSupplierDescriptor editedAmy \u003d","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"yleeyilin"},"content":" new EditSupplierDescriptorBuilder(DESC_AMY_SUPPLIER).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"yleeyilin"},"content":" assertFalse(DESC_AMY_SUPPLIER.equals(editedAmy));","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"yleeyilin"},"content":" // different email -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"yleeyilin"},"content":" editedAmy \u003d new EditSupplierDescriptorBuilder(DESC_AMY_SUPPLIER).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"yleeyilin"},"content":" assertFalse(DESC_AMY_SUPPLIER.equals(editedAmy));","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"yleeyilin"},"content":" // different address -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"yleeyilin"},"content":" editedAmy \u003d new EditSupplierDescriptorBuilder(DESC_AMY_SUPPLIER).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"yleeyilin"},"content":" assertFalse(DESC_AMY_SUPPLIER.equals(editedAmy));","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"yleeyilin"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"yleeyilin"},"content":" editedAmy \u003d new EditSupplierDescriptorBuilder(DESC_AMY_SUPPLIER).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"yleeyilin"},"content":" assertFalse(DESC_AMY_SUPPLIER.equals(editedAmy));","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"yleeyilin"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"yleeyilin"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"yleeyilin"},"content":" EditSupplierDescriptor editSupplierDescriptor \u003d new EditSupplierDescriptor();","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"yleeyilin"},"content":" String expected \u003d EditSupplierDescriptor.class.getCanonicalName() + \"{phone\u003d\"","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"yleeyilin"},"content":" + editSupplierDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"yleeyilin"},"content":" + editSupplierDescriptor.getEmail().orElse(null) + \", address\u003d\"","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"yleeyilin"},"content":" + editSupplierDescriptor.getAddress().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"yleeyilin"},"content":" + editSupplierDescriptor.getTags().orElse(null) + \", product\u003d\"","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"yleeyilin"},"content":" + editSupplierDescriptor.getProduct().orElse(null) + \", price\u003d\"","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"yleeyilin"},"content":" + editSupplierDescriptor.getPrice().orElse(null) + \"}\";","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"yleeyilin"},"content":" assertEquals(expected, editSupplierDescriptor.toString());","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"yleeyilin"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"yleeyilin":68}},{"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.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-08"},{"lineNumber":7,"author":{"gitId":"jamessinmaojun"},"content":"import static seedu.address.logic.messages.Messages.MESSAGE_PERSONS_LISTED_OVERVIEW;","lastModifiedDate":"2024-03-18"},{"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":{"jamessinmaojun":1,"-":90}},{"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":"jannaleong"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-24"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-24"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-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":"jamessinmaojun"},"content":"import seedu.address.logic.messages.HelpMessages;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2018-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class HelpCommandTest {","lastModifiedDate":"2017-06-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":" public void execute_generalHelp_success() {","lastModifiedDate":"2024-03-24"},{"lineNumber":20,"author":{"gitId":"jamessinmaojun"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(HelpMessages.MESSAGES_SHOWING_HELP_MESSAGE,","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"jamessinmaojun"},"content":" true, false);","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"jannaleong"},"content":" assertCommandSuccess(new HelpCommand(\"general\"), model, expectedCommandResult, expectedModel);","lastModifiedDate":"2024-03-24"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":24,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":26,"author":{"gitId":"jannaleong"},"content":" public void execute_deleteHelp_success() {","lastModifiedDate":"2024-03-24"},{"lineNumber":27,"author":{"gitId":"jannaleong"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(HelpMessages.MESSAGES_SHOWING_DELETE_HELP_MESSAGE,","lastModifiedDate":"2024-03-24"},{"lineNumber":28,"author":{"gitId":"jannaleong"},"content":" true, false);","lastModifiedDate":"2024-03-24"},{"lineNumber":29,"author":{"gitId":"jannaleong"},"content":" assertCommandSuccess(new HelpCommand(\"delete\"), model, expectedCommandResult, expectedModel);","lastModifiedDate":"2024-03-24"},{"lineNumber":30,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":31,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":32,"author":{"gitId":"jannaleong"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":33,"author":{"gitId":"jannaleong"},"content":" public void execute_searchHelp_success() {","lastModifiedDate":"2024-03-24"},{"lineNumber":34,"author":{"gitId":"jannaleong"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(HelpMessages.MESSAGES_SHOWING_SEARCH_HELP_MESSAGE,","lastModifiedDate":"2024-03-24"},{"lineNumber":35,"author":{"gitId":"jannaleong"},"content":" true, false);","lastModifiedDate":"2024-03-24"},{"lineNumber":36,"author":{"gitId":"jannaleong"},"content":" assertCommandSuccess(new HelpCommand(\"search\"), model, expectedCommandResult, expectedModel);","lastModifiedDate":"2024-03-24"},{"lineNumber":37,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":38,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":39,"author":{"gitId":"jannaleong"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":40,"author":{"gitId":"jannaleong"},"content":" public void execute_editHelp_success() {","lastModifiedDate":"2024-03-24"},{"lineNumber":41,"author":{"gitId":"jannaleong"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(HelpMessages.MESSAGES_SHOWING_EDIT_HELP_MESSAGE,","lastModifiedDate":"2024-03-24"},{"lineNumber":42,"author":{"gitId":"jannaleong"},"content":" true, false);","lastModifiedDate":"2024-03-24"},{"lineNumber":43,"author":{"gitId":"jannaleong"},"content":" assertCommandSuccess(new HelpCommand(\"edit\"), model, expectedCommandResult, expectedModel);","lastModifiedDate":"2024-03-24"},{"lineNumber":44,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":45,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":46,"author":{"gitId":"jannaleong"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":47,"author":{"gitId":"jannaleong"},"content":" public void execute_addHelp_success() {","lastModifiedDate":"2024-03-24"},{"lineNumber":48,"author":{"gitId":"jannaleong"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(HelpMessages.MESSAGES_SHOWING_ADD_HELP_MESSAGE,","lastModifiedDate":"2024-03-24"},{"lineNumber":49,"author":{"gitId":"jannaleong"},"content":" true, false);","lastModifiedDate":"2024-03-24"},{"lineNumber":50,"author":{"gitId":"jannaleong"},"content":" assertCommandSuccess(new HelpCommand(\"add\"), model, expectedCommandResult, expectedModel);","lastModifiedDate":"2024-03-24"},{"lineNumber":51,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":52,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":53,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":54,"author":{"gitId":"jannaleong"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":55,"author":{"gitId":"jannaleong"},"content":" public void execute_invalidCommandType_throwsCommandException() {","lastModifiedDate":"2024-03-24"},{"lineNumber":56,"author":{"gitId":"jannaleong"},"content":" String invalidCommand \u003d \"poodles\";","lastModifiedDate":"2024-03-24"},{"lineNumber":57,"author":{"gitId":"jannaleong"},"content":" HelpCommand helpCommand \u003d new HelpCommand(invalidCommand);","lastModifiedDate":"2024-03-24"},{"lineNumber":58,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":59,"author":{"gitId":"jannaleong"},"content":" assertCommandFailure(helpCommand, model, HelpMessages.MESSAGES_INVALID_COMMAND_TYPE);","lastModifiedDate":"2024-03-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":61,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":62,"author":{"gitId":"jannaleong"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":63,"author":{"gitId":"jannaleong"},"content":" public void equals() {","lastModifiedDate":"2024-03-24"},{"lineNumber":64,"author":{"gitId":"jannaleong"},"content":" HelpCommand noteFirstCommand \u003d new HelpCommand(\"delete\");","lastModifiedDate":"2024-03-24"},{"lineNumber":65,"author":{"gitId":"jannaleong"},"content":" HelpCommand noteSecondCommand \u003d new HelpCommand(\"add\");","lastModifiedDate":"2024-03-24"},{"lineNumber":66,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":67,"author":{"gitId":"jannaleong"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-24"},{"lineNumber":68,"author":{"gitId":"jannaleong"},"content":" assertTrue(noteFirstCommand.equals(noteFirstCommand));","lastModifiedDate":"2024-03-24"},{"lineNumber":69,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":70,"author":{"gitId":"jannaleong"},"content":" // different names -\u003e returns false","lastModifiedDate":"2024-03-24"},{"lineNumber":71,"author":{"gitId":"jannaleong"},"content":" assertFalse(noteFirstCommand.equals(noteSecondCommand));","lastModifiedDate":"2024-03-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08"}],"authorContributionMap":{"jamessinmaojun":3,"jannaleong":53,"-":17}},{"path":"src/test/java/seedu/address/logic/commands/NoteCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.NoteMessages;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":"import seedu.address.model.person.Maintainer;","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":"import seedu.address.model.person.Note;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":"import seedu.address.model.person.Staff;","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":"import seedu.address.model.person.Supplier;","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":"import seedu.address.testutil.MaintainerBuilder;","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"jannaleong"},"content":"import seedu.address.testutil.StaffBuilder;","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":"import seedu.address.testutil.SupplierBuilder;","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":"public class NoteCommandTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"jannaleong"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"jannaleong"},"content":" private Note validNote1 \u003d new Note(\"get kibble today\");","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"jannaleong"},"content":" private Note validNote2 \u003d new Note(\"get bones today\");","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"jannaleong"},"content":" private Staff georgiaStaff \u003d new StaffBuilder().withName(\"Georgia Staff\")","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"jannaleong"},"content":" .withAddress(\"123, Jurong West Ave 45, #08-131\").withEmail(\"georgia@example.com\")","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"jannaleong"},"content":" .withPhone(\"94355453\")","lastModifiedDate":"2024-03-23"},{"lineNumber":33,"author":{"gitId":"jannaleong"},"content":" .withTags(\"friends\")","lastModifiedDate":"2024-03-23"},{"lineNumber":34,"author":{"gitId":"jannaleong"},"content":" .withSalary(\"$50/hr\")","lastModifiedDate":"2024-03-23"},{"lineNumber":35,"author":{"gitId":"jannaleong"},"content":" .withEmployment(\"part-time\").build();","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":37,"author":{"gitId":"jannaleong"},"content":" private Supplier georgiaSupplier \u003d new SupplierBuilder().withName(\"Georgia Supplier\")","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"jannaleong"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2024-03-23"},{"lineNumber":39,"author":{"gitId":"jannaleong"},"content":" .withEmail(\"georgia@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2024-03-23"},{"lineNumber":40,"author":{"gitId":"jannaleong"},"content":" .withTags(\"owesMoney\", \"friends\")","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"jannaleong"},"content":" .withProduct(\"pooch medicine\")","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"jannaleong"},"content":" .withPrice(\"$50/injection\").build();","lastModifiedDate":"2024-03-23"},{"lineNumber":43,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":44,"author":{"gitId":"jannaleong"},"content":" private Maintainer georgiaMaintainer \u003d new MaintainerBuilder().withName(\"Georgia Maintainer\")","lastModifiedDate":"2024-03-23"},{"lineNumber":45,"author":{"gitId":"jannaleong"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2024-03-23"},{"lineNumber":46,"author":{"gitId":"jannaleong"},"content":" .withEmail(\"georgia@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2024-03-23"},{"lineNumber":47,"author":{"gitId":"jannaleong"},"content":" .withTags(\"owesMoney\", \"friends\")","lastModifiedDate":"2024-03-23"},{"lineNumber":48,"author":{"gitId":"jannaleong"},"content":" .withSkill(\"train dog\")","lastModifiedDate":"2024-03-23"},{"lineNumber":49,"author":{"gitId":"jannaleong"},"content":" .withCommission(\"$50/hr\").build();","lastModifiedDate":"2024-03-23"},{"lineNumber":50,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":51,"author":{"gitId":"jannaleong"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"jannaleong"},"content":" public void execute_validNoteOther_addSuccess() {","lastModifiedDate":"2024-03-23"},{"lineNumber":53,"author":{"gitId":"jannaleong"},"content":" Person toAddNotePerson \u003d ALICE;","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"jannaleong"},"content":" Person expectedPerson \u003d new Person(toAddNotePerson.getName(), toAddNotePerson.getPhone(),","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"jannaleong"},"content":" toAddNotePerson.getEmail(), toAddNotePerson.getAddress(),","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"jannaleong"},"content":" validNote1, toAddNotePerson.getTags());","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"jannaleong"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"jannaleong"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), expectedPerson);","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"jannaleong"},"content":" NoteCommand noteCommand \u003d new NoteCommand(toAddNotePerson.getName(), validNote1);","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"jamessinmaojun"},"content":" String expectedMessage \u003d String.format(NoteMessages.MESSAGE_ADD_NOTE_SUCCESS, expectedPerson);","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"jannaleong"},"content":" assertCommandSuccess(noteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"jannaleong"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":67,"author":{"gitId":"jannaleong"},"content":" public void execute_validNoteStaff_addSuccess() {","lastModifiedDate":"2024-03-23"},{"lineNumber":68,"author":{"gitId":"jannaleong"},"content":" Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-23"},{"lineNumber":69,"author":{"gitId":"jannaleong"},"content":" Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-23"},{"lineNumber":70,"author":{"gitId":"jannaleong"},"content":" model.addPerson(georgiaStaff);","lastModifiedDate":"2024-03-23"},{"lineNumber":71,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":72,"author":{"gitId":"jannaleong"},"content":" Staff toAddNotePerson \u003d georgiaStaff;","lastModifiedDate":"2024-03-23"},{"lineNumber":73,"author":{"gitId":"jannaleong"},"content":" Staff expectedPerson \u003d new Staff(toAddNotePerson.getName(), toAddNotePerson.getPhone(),","lastModifiedDate":"2024-03-23"},{"lineNumber":74,"author":{"gitId":"jannaleong"},"content":" toAddNotePerson.getEmail(), toAddNotePerson.getAddress(),","lastModifiedDate":"2024-03-23"},{"lineNumber":75,"author":{"gitId":"jannaleong"},"content":" toAddNotePerson.getTags(), toAddNotePerson.getSalary(), toAddNotePerson.getEmployment());","lastModifiedDate":"2024-03-23"},{"lineNumber":76,"author":{"gitId":"jannaleong"},"content":" expectedPerson.setNoteContent(validNote1.toString());","lastModifiedDate":"2024-03-23"},{"lineNumber":77,"author":{"gitId":"jannaleong"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2024-03-23"},{"lineNumber":78,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":79,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":80,"author":{"gitId":"jannaleong"},"content":" NoteCommand noteCommand \u003d new NoteCommand(toAddNotePerson.getName(), validNote1);","lastModifiedDate":"2024-03-23"},{"lineNumber":81,"author":{"gitId":"jannaleong"},"content":" String expectedMessage \u003d String.format(NoteMessages.MESSAGE_ADD_NOTE_SUCCESS, expectedPerson);","lastModifiedDate":"2024-03-23"},{"lineNumber":82,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":83,"author":{"gitId":"jannaleong"},"content":" assertCommandSuccess(noteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-23"},{"lineNumber":84,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":85,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":86,"author":{"gitId":"jannaleong"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":87,"author":{"gitId":"jannaleong"},"content":" public void execute_validNoteSupplier_addSuccess() {","lastModifiedDate":"2024-03-23"},{"lineNumber":88,"author":{"gitId":"jannaleong"},"content":" Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-23"},{"lineNumber":89,"author":{"gitId":"jannaleong"},"content":" Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-23"},{"lineNumber":90,"author":{"gitId":"jannaleong"},"content":" model.addPerson(georgiaSupplier);","lastModifiedDate":"2024-03-23"},{"lineNumber":91,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":92,"author":{"gitId":"jannaleong"},"content":" Supplier toAddNotePerson \u003d georgiaSupplier;","lastModifiedDate":"2024-03-23"},{"lineNumber":93,"author":{"gitId":"jannaleong"},"content":" Supplier expectedPerson \u003d new Supplier(toAddNotePerson.getName(), toAddNotePerson.getPhone(),","lastModifiedDate":"2024-03-23"},{"lineNumber":94,"author":{"gitId":"jannaleong"},"content":" toAddNotePerson.getEmail(), toAddNotePerson.getAddress(),","lastModifiedDate":"2024-03-23"},{"lineNumber":95,"author":{"gitId":"jannaleong"},"content":" toAddNotePerson.getTags(), toAddNotePerson.getProduct(), toAddNotePerson.getPrice());","lastModifiedDate":"2024-03-23"},{"lineNumber":96,"author":{"gitId":"jannaleong"},"content":" expectedPerson.setNoteContent(validNote1.toString());","lastModifiedDate":"2024-03-23"},{"lineNumber":97,"author":{"gitId":"jannaleong"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2024-03-23"},{"lineNumber":98,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":99,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":100,"author":{"gitId":"jannaleong"},"content":" NoteCommand noteCommand \u003d new NoteCommand(toAddNotePerson.getName(), validNote1);","lastModifiedDate":"2024-03-23"},{"lineNumber":101,"author":{"gitId":"jannaleong"},"content":" String expectedMessage \u003d String.format(NoteMessages.MESSAGE_ADD_NOTE_SUCCESS, expectedPerson);","lastModifiedDate":"2024-03-23"},{"lineNumber":102,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":103,"author":{"gitId":"jannaleong"},"content":" assertCommandSuccess(noteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-23"},{"lineNumber":104,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":105,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":106,"author":{"gitId":"jannaleong"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":107,"author":{"gitId":"jannaleong"},"content":" public void execute_validNoteMaintainer_addSuccess() {","lastModifiedDate":"2024-03-23"},{"lineNumber":108,"author":{"gitId":"jannaleong"},"content":" Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-23"},{"lineNumber":109,"author":{"gitId":"jannaleong"},"content":" Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-23"},{"lineNumber":110,"author":{"gitId":"jannaleong"},"content":" model.addPerson(georgiaMaintainer);","lastModifiedDate":"2024-03-23"},{"lineNumber":111,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":112,"author":{"gitId":"jannaleong"},"content":" Maintainer toAddNotePerson \u003d georgiaMaintainer;","lastModifiedDate":"2024-03-23"},{"lineNumber":113,"author":{"gitId":"jannaleong"},"content":" Maintainer expectedPerson \u003d new Maintainer(toAddNotePerson.getName(), toAddNotePerson.getPhone(),","lastModifiedDate":"2024-03-23"},{"lineNumber":114,"author":{"gitId":"jannaleong"},"content":" toAddNotePerson.getEmail(), toAddNotePerson.getAddress(),","lastModifiedDate":"2024-03-23"},{"lineNumber":115,"author":{"gitId":"jannaleong"},"content":" toAddNotePerson.getTags(), toAddNotePerson.getSkill(), toAddNotePerson.getCommission());","lastModifiedDate":"2024-03-23"},{"lineNumber":116,"author":{"gitId":"jannaleong"},"content":" expectedPerson.setNoteContent(validNote1.toString());","lastModifiedDate":"2024-03-23"},{"lineNumber":117,"author":{"gitId":"jannaleong"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2024-03-23"},{"lineNumber":118,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":119,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":120,"author":{"gitId":"jannaleong"},"content":" NoteCommand noteCommand \u003d new NoteCommand(toAddNotePerson.getName(), validNote1);","lastModifiedDate":"2024-03-23"},{"lineNumber":121,"author":{"gitId":"jannaleong"},"content":" String expectedMessage \u003d String.format(NoteMessages.MESSAGE_ADD_NOTE_SUCCESS, expectedPerson);","lastModifiedDate":"2024-03-23"},{"lineNumber":122,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":123,"author":{"gitId":"jannaleong"},"content":" assertCommandSuccess(noteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-23"},{"lineNumber":124,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":125,"author":{"gitId":"jannaleong"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":126,"author":{"gitId":"jannaleong"},"content":" public void equals() {","lastModifiedDate":"2024-03-19"},{"lineNumber":127,"author":{"gitId":"jannaleong"},"content":" NoteCommand noteFirstCommand \u003d new NoteCommand(ALICE.getName(), validNote1);","lastModifiedDate":"2024-03-19"},{"lineNumber":128,"author":{"gitId":"jannaleong"},"content":" NoteCommand noteSecondCommand \u003d new NoteCommand(BENSON.getName(), validNote1);","lastModifiedDate":"2024-03-19"},{"lineNumber":129,"author":{"gitId":"jannaleong"},"content":" NoteCommand noteThirdCommand \u003d new NoteCommand(ALICE.getName(), validNote2);","lastModifiedDate":"2024-03-19"},{"lineNumber":130,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":131,"author":{"gitId":"jannaleong"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":132,"author":{"gitId":"jannaleong"},"content":" assertTrue(noteFirstCommand.equals(noteFirstCommand));","lastModifiedDate":"2024-03-19"},{"lineNumber":133,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":134,"author":{"gitId":"jannaleong"},"content":" // different names -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":135,"author":{"gitId":"jannaleong"},"content":" assertFalse(noteFirstCommand.equals(noteSecondCommand));","lastModifiedDate":"2024-03-19"},{"lineNumber":136,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":137,"author":{"gitId":"jannaleong"},"content":" // different notes -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":138,"author":{"gitId":"jannaleong"},"content":" assertFalse(noteFirstCommand.equals(noteThirdCommand));","lastModifiedDate":"2024-03-19"},{"lineNumber":139,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":140,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"jamessinmaojun":2,"jannaleong":138}},{"path":"src/test/java/seedu/address/logic/commands/SearchCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Joshy837"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"Joshy837"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"Joshy837"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"Joshy837"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"Joshy837"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"Joshy837"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"Joshy837"},"content":"import static seedu.address.testutil.TypicalPersons.CARL;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"Joshy837"},"content":"import static seedu.address.testutil.TypicalPersons.DANIEL;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"Joshy837"},"content":"import static seedu.address.testutil.TypicalPersons.FIONA;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"Joshy837"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"Joshy837"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"Joshy837"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"Joshy837"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.SearchMessages;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"Joshy837"},"content":"import seedu.address.logic.parser.ArgumentMultimap;","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"Joshy837"},"content":"import seedu.address.logic.parser.ArgumentTokenizer;","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"Joshy837"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"Joshy837"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"Joshy837"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"Joshy837"},"content":"import seedu.address.model.person.KeywordPredicate;","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"Joshy837"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"Joshy837"},"content":" * Contains integration tests (interaction with the Model) for {@code FindCommand}.","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"Joshy837"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"Joshy837"},"content":"public class SearchCommandTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"Joshy837"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"Joshy837"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"Joshy837"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"Joshy837"},"content":" public void equals() {","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"Joshy837"},"content":" String firstKeyword \u003d \" ; name : Poochie\";","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"Joshy837"},"content":" ArgumentMultimap firstToken \u003d ArgumentTokenizer.tokenize(firstKeyword, PREFIX_NAME);","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"Joshy837"},"content":" String secondKeyword \u003d \" ; product : Dog Food\";","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"Joshy837"},"content":" ArgumentMultimap secondToken \u003d ArgumentTokenizer.tokenize(secondKeyword, PREFIX_NAME);","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"Joshy837"},"content":" KeywordPredicate firstPredicate \u003d new KeywordPredicate(firstToken);","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"Joshy837"},"content":" KeywordPredicate secondPredicate \u003d new KeywordPredicate(secondToken);","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"Joshy837"},"content":" SearchCommand findFirstCommand \u003d new SearchCommand(firstPredicate);","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"Joshy837"},"content":" SearchCommand findSecondCommand \u003d new SearchCommand(secondPredicate);","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"Joshy837"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"Joshy837"},"content":" assertEquals(findFirstCommand, findFirstCommand);","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"Joshy837"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"Joshy837"},"content":" SearchCommand findFirstCommandCopy \u003d new SearchCommand(firstPredicate);","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"Joshy837"},"content":" assertEquals(findFirstCommand, findFirstCommandCopy);","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"Joshy837"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"Joshy837"},"content":" assertNotEquals(1, findFirstCommand);","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"Joshy837"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"Joshy837"},"content":" assertNotEquals(null, findFirstCommand);","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"Joshy837"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"Joshy837"},"content":" assertNotEquals(findFirstCommand, findSecondCommand);","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"Joshy837"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"Joshy837"},"content":" public void execute_zeroKeywords_noPersonFound() {","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"jamessinmaojun"},"content":" String expectedMessage \u003d String.format(SearchMessages.MESSAGE_SEARCH_PERSON_SUCCESS, 0);","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"Joshy837"},"content":" KeywordPredicate predicate \u003d preparePredicate(\" ; name : Alicea\");","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"Joshy837"},"content":" SearchCommand command \u003d new SearchCommand(predicate);","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"Joshy837"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"Joshy837"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"Joshy837"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"Joshy837"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"Joshy837"},"content":" public void execute_multiplePersonsFound() {","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"jamessinmaojun"},"content":" String expectedMessage \u003d String.format(SearchMessages.MESSAGE_SEARCH_PERSON_SUCCESS, 4);","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"Joshy837"},"content":" KeywordPredicate predicate \u003d preparePredicate(\" ; name : a\");","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"Joshy837"},"content":" SearchCommand command \u003d new SearchCommand(predicate);","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"Joshy837"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"Joshy837"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"Joshy837"},"content":" assertEquals(Arrays.asList(ALICE, CARL, DANIEL, FIONA), model.getFilteredPersonList());","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"Joshy837"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"Joshy837"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"Joshy837"},"content":" KeywordPredicate predicate \u003d new KeywordPredicate(ArgumentTokenizer.tokenize(\"keyword\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"Joshy837"},"content":" SearchCommand findCommand \u003d new SearchCommand(predicate);","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"Joshy837"},"content":" String expected \u003d SearchCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"Joshy837"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"Joshy837"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"Joshy837"},"content":" * Parses {@code userInput} into a {@code KeywordPredicate}.","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"Joshy837"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"Joshy837"},"content":" private KeywordPredicate preparePredicate(String userInput) {","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"Joshy837"},"content":" return new KeywordPredicate(ArgumentTokenizer.tokenize(userInput, PREFIX_NAME));","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"Joshy837"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"Joshy837":94,"jamessinmaojun":3}},{"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.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05"},{"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":"2024-03-09"},{"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.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","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":"jamessinmaojun"},"content":"import static seedu.address.logic.messages.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","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.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15"},{"lineNumber":35,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.Messages;","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-06-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-06-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2024-03-09"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2024-03-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":" + ADDRESS_DESC_BOB, new AddCommand(expectedPerson));","lastModifiedDate":"2024-03-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":55,"author":{"gitId":"chiageng"},"content":" Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2024-03-09"},{"lineNumber":57,"author":{"gitId":"chiageng"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":58,"author":{"gitId":"-"},"content":" new AddCommand(expectedPersonMultipleTags));","lastModifiedDate":"2024-03-09"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-07-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND;","lastModifiedDate":"2023-07-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":73,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":77,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":79,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":81,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":83,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2023-07-14"},{"lineNumber":86,"author":{"gitId":"-"},"content":" + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":87,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_ADDRESS, PREFIX_EMAIL, PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":99,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":107,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":109,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":111,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":127,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":128,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15"},{"lineNumber":129,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2018-07-25"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + ADDRESS_DESC_AMY,","lastModifiedDate":"2017-12-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2017-12-23"},{"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_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":136,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":138,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":142,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":146,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":147,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":150,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":151,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":154,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15"},{"lineNumber":155,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":159,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":160,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":161,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":162,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":163,"author":{"gitId":"chiageng"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-09"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":165,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15"},{"lineNumber":166,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":167,"author":{"gitId":"chiageng"},"content":" Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-09"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":169,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15"},{"lineNumber":170,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":171,"author":{"gitId":"chiageng"},"content":" Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-09"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":173,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15"},{"lineNumber":174,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC,","lastModifiedDate":"2024-03-09"},{"lineNumber":175,"author":{"gitId":"chiageng"},"content":" Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-09"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":177,"author":{"gitId":"chiageng"},"content":" /*","lastModifiedDate":"2024-03-09"},{"lineNumber":178,"author":{"gitId":"chiageng"},"content":" invalid tag","lastModifiedDate":"2024-03-09"},{"lineNumber":179,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":180,"author":{"gitId":"chiageng"},"content":" Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-09"},{"lineNumber":181,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":183,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":184,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC,","lastModifiedDate":"2017-12-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":189,"author":{"gitId":"chiageng"},"content":" + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-03-08"},{"lineNumber":190,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":192,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"jamessinmaojun":2,"chiageng":18,"-":172}},{"path":"src/test/java/seedu/address/logic/parser/AddMaintainerCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chiageng"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-09"},{"lineNumber":2,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":3,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-03-09"},{"lineNumber":4,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":5,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.COMMISSION_DESC_AMY;","lastModifiedDate":"2024-03-09"},{"lineNumber":6,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.COMMISSION_DESC_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":7,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-09"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_COMMISSION_DESC;","lastModifiedDate":"2024-03-09"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2024-03-09"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-03-09"},{"lineNumber":13,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2024-03-09"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_SKILL_DESC;","lastModifiedDate":"2024-03-09"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-03-09"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-03-09"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2024-03-09"},{"lineNumber":20,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2024-03-09"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SKILL_DESC_AMY;","lastModifiedDate":"2024-03-09"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SKILL_DESC_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":23,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_COMMISSION_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":25,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":26,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":27,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":28,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SKILL_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":29,"author":{"gitId":"jamessinmaojun"},"content":"import static seedu.address.logic.messages.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-09"},{"lineNumber":31,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COMMISSION;","lastModifiedDate":"2024-03-09"},{"lineNumber":32,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-09"},{"lineNumber":33,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-09"},{"lineNumber":34,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-09"},{"lineNumber":35,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SKILL;","lastModifiedDate":"2024-03-09"},{"lineNumber":36,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-09"},{"lineNumber":37,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-09"},{"lineNumber":38,"author":{"gitId":"chiageng"},"content":"import static seedu.address.testutil.TypicalPersons.BOBMAINTAINER;","lastModifiedDate":"2024-03-09"},{"lineNumber":39,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":40,"author":{"gitId":"chiageng"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-09"},{"lineNumber":41,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":42,"author":{"gitId":"chiageng"},"content":"import seedu.address.logic.commands.AddMaintainerCommand;","lastModifiedDate":"2024-03-09"},{"lineNumber":43,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.Messages;","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-09"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Commission;","lastModifiedDate":"2024-03-09"},{"lineNumber":46,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-09"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Maintainer;","lastModifiedDate":"2024-03-09"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-09"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-09"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Skill;","lastModifiedDate":"2024-03-09"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":"import seedu.address.testutil.MaintainerBuilder;","lastModifiedDate":"2024-03-09"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":53,"author":{"gitId":"chiageng"},"content":"public class AddMaintainerCommandParserTest {","lastModifiedDate":"2024-03-09"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":" private AddMaintainerCommandParser parser \u003d new AddMaintainerCommandParser();","lastModifiedDate":"2024-03-09"},{"lineNumber":55,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":56,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":57,"author":{"gitId":"chiageng"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2024-03-09"},{"lineNumber":58,"author":{"gitId":"chiageng"},"content":" Maintainer expectedPerson \u003d new MaintainerBuilder(BOBMAINTAINER).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":59,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":60,"author":{"gitId":"chiageng"},"content":" // whitespace only preamble","lastModifiedDate":"2024-03-09"},{"lineNumber":61,"author":{"gitId":"chiageng"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":62,"author":{"gitId":"chiageng"},"content":" + ADDRESS_DESC_BOB + SKILL_DESC_BOB + COMMISSION_DESC_BOB, new AddMaintainerCommand(expectedPerson));","lastModifiedDate":"2024-03-09"},{"lineNumber":63,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":64,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":65,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":66,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":67,"author":{"gitId":"chiageng"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2024-03-09"},{"lineNumber":68,"author":{"gitId":"chiageng"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":69,"author":{"gitId":"chiageng"},"content":" + ADDRESS_DESC_BOB + SKILL_DESC_BOB + COMMISSION_DESC_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":70,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":71,"author":{"gitId":"chiageng"},"content":" // multiple names","lastModifiedDate":"2024-03-09"},{"lineNumber":72,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-09"},{"lineNumber":73,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2024-03-09"},{"lineNumber":74,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":75,"author":{"gitId":"chiageng"},"content":" // multiple phones","lastModifiedDate":"2024-03-09"},{"lineNumber":76,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-09"},{"lineNumber":77,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2024-03-09"},{"lineNumber":78,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":79,"author":{"gitId":"chiageng"},"content":" // multiple emails","lastModifiedDate":"2024-03-09"},{"lineNumber":80,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-09"},{"lineNumber":81,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2024-03-09"},{"lineNumber":82,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":83,"author":{"gitId":"chiageng"},"content":" // multiple addresses","lastModifiedDate":"2024-03-09"},{"lineNumber":84,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-09"},{"lineNumber":85,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2024-03-09"},{"lineNumber":86,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":87,"author":{"gitId":"chiageng"},"content":" // multiple fields repeated","lastModifiedDate":"2024-03-09"},{"lineNumber":88,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-09"},{"lineNumber":89,"author":{"gitId":"chiageng"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY","lastModifiedDate":"2024-03-09"},{"lineNumber":90,"author":{"gitId":"chiageng"},"content":" + ADDRESS_DESC_AMY + SKILL_DESC_AMY + COMMISSION_DESC_AMY","lastModifiedDate":"2024-03-09"},{"lineNumber":91,"author":{"gitId":"chiageng"},"content":" + validExpectedPersonString,","lastModifiedDate":"2024-03-09"},{"lineNumber":92,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_ADDRESS, PREFIX_EMAIL, PREFIX_PHONE,","lastModifiedDate":"2024-03-09"},{"lineNumber":93,"author":{"gitId":"chiageng"},"content":" PREFIX_SKILL, PREFIX_COMMISSION));","lastModifiedDate":"2024-03-09"},{"lineNumber":94,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":95,"author":{"gitId":"chiageng"},"content":" // invalid value followed by valid value","lastModifiedDate":"2024-03-09"},{"lineNumber":96,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":97,"author":{"gitId":"chiageng"},"content":" // invalid name","lastModifiedDate":"2024-03-09"},{"lineNumber":98,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2024-03-09"},{"lineNumber":99,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2024-03-09"},{"lineNumber":100,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":101,"author":{"gitId":"chiageng"},"content":" // invalid email","lastModifiedDate":"2024-03-09"},{"lineNumber":102,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2024-03-09"},{"lineNumber":103,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2024-03-09"},{"lineNumber":104,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":105,"author":{"gitId":"chiageng"},"content":" // invalid phone","lastModifiedDate":"2024-03-09"},{"lineNumber":106,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2024-03-09"},{"lineNumber":107,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2024-03-09"},{"lineNumber":108,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":109,"author":{"gitId":"chiageng"},"content":" // invalid address","lastModifiedDate":"2024-03-09"},{"lineNumber":110,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2024-03-09"},{"lineNumber":111,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2024-03-09"},{"lineNumber":112,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":113,"author":{"gitId":"chiageng"},"content":" // valid value followed by invalid value","lastModifiedDate":"2024-03-09"},{"lineNumber":114,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":115,"author":{"gitId":"chiageng"},"content":" // invalid name","lastModifiedDate":"2024-03-09"},{"lineNumber":116,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2024-03-09"},{"lineNumber":117,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2024-03-09"},{"lineNumber":118,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":119,"author":{"gitId":"chiageng"},"content":" // invalid email","lastModifiedDate":"2024-03-09"},{"lineNumber":120,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2024-03-09"},{"lineNumber":121,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2024-03-09"},{"lineNumber":122,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":123,"author":{"gitId":"chiageng"},"content":" // invalid phone","lastModifiedDate":"2024-03-09"},{"lineNumber":124,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2024-03-09"},{"lineNumber":125,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2024-03-09"},{"lineNumber":126,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":127,"author":{"gitId":"chiageng"},"content":" // invalid address","lastModifiedDate":"2024-03-09"},{"lineNumber":128,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2024-03-09"},{"lineNumber":129,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2024-03-09"},{"lineNumber":130,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":131,"author":{"gitId":"chiageng"},"content":" // invalid skill","lastModifiedDate":"2024-03-09"},{"lineNumber":132,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_SKILL_DESC,","lastModifiedDate":"2024-03-09"},{"lineNumber":133,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_SKILL));","lastModifiedDate":"2024-03-09"},{"lineNumber":134,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":135,"author":{"gitId":"chiageng"},"content":" // invalid commission","lastModifiedDate":"2024-03-09"},{"lineNumber":136,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_COMMISSION_DESC,","lastModifiedDate":"2024-03-09"},{"lineNumber":137,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_COMMISSION));","lastModifiedDate":"2024-03-09"},{"lineNumber":138,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":139,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":140,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":141,"author":{"gitId":"chiageng"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2024-03-09"},{"lineNumber":142,"author":{"gitId":"chiageng"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddMaintainerCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-09"},{"lineNumber":143,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":144,"author":{"gitId":"chiageng"},"content":" // missing name prefix","lastModifiedDate":"2024-03-09"},{"lineNumber":145,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":146,"author":{"gitId":"chiageng"},"content":" + SKILL_DESC_BOB + COMMISSION_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":147,"author":{"gitId":"chiageng"},"content":" expectedMessage);","lastModifiedDate":"2024-03-09"},{"lineNumber":148,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":149,"author":{"gitId":"chiageng"},"content":" // missing phone prefix","lastModifiedDate":"2024-03-09"},{"lineNumber":150,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":151,"author":{"gitId":"chiageng"},"content":" + SKILL_DESC_BOB + COMMISSION_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":152,"author":{"gitId":"chiageng"},"content":" expectedMessage);","lastModifiedDate":"2024-03-09"},{"lineNumber":153,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":154,"author":{"gitId":"chiageng"},"content":" // missing email prefix","lastModifiedDate":"2024-03-09"},{"lineNumber":155,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":156,"author":{"gitId":"chiageng"},"content":" + SKILL_DESC_BOB + COMMISSION_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":157,"author":{"gitId":"chiageng"},"content":" expectedMessage);","lastModifiedDate":"2024-03-09"},{"lineNumber":158,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":159,"author":{"gitId":"chiageng"},"content":" // missing address prefix","lastModifiedDate":"2024-03-09"},{"lineNumber":160,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":161,"author":{"gitId":"chiageng"},"content":" + SKILL_DESC_BOB + COMMISSION_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":162,"author":{"gitId":"chiageng"},"content":" expectedMessage);","lastModifiedDate":"2024-03-09"},{"lineNumber":163,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":164,"author":{"gitId":"chiageng"},"content":" // missing skill prefix","lastModifiedDate":"2024-03-09"},{"lineNumber":165,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":166,"author":{"gitId":"chiageng"},"content":" + VALID_SKILL_BOB + COMMISSION_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":167,"author":{"gitId":"chiageng"},"content":" expectedMessage);","lastModifiedDate":"2024-03-09"},{"lineNumber":168,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":169,"author":{"gitId":"chiageng"},"content":" // missing commission prefix","lastModifiedDate":"2024-03-09"},{"lineNumber":170,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":171,"author":{"gitId":"chiageng"},"content":" + SKILL_DESC_BOB + VALID_COMMISSION_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":172,"author":{"gitId":"chiageng"},"content":" expectedMessage);","lastModifiedDate":"2024-03-09"},{"lineNumber":173,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":174,"author":{"gitId":"chiageng"},"content":" // all prefixes missing","lastModifiedDate":"2024-03-09"},{"lineNumber":175,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_ADDRESS_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":176,"author":{"gitId":"chiageng"},"content":" + VALID_SKILL_BOB + VALID_COMMISSION_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":177,"author":{"gitId":"chiageng"},"content":" expectedMessage);","lastModifiedDate":"2024-03-09"},{"lineNumber":178,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":179,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":180,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":181,"author":{"gitId":"chiageng"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2024-03-09"},{"lineNumber":182,"author":{"gitId":"chiageng"},"content":" // invalid name","lastModifiedDate":"2024-03-09"},{"lineNumber":183,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":184,"author":{"gitId":"chiageng"},"content":" + SKILL_DESC_BOB + COMMISSION_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":185,"author":{"gitId":"chiageng"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-09"},{"lineNumber":186,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":187,"author":{"gitId":"chiageng"},"content":" // invalid phone","lastModifiedDate":"2024-03-09"},{"lineNumber":188,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":189,"author":{"gitId":"chiageng"},"content":" + SKILL_DESC_BOB + COMMISSION_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":190,"author":{"gitId":"chiageng"},"content":" Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-09"},{"lineNumber":191,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":192,"author":{"gitId":"chiageng"},"content":" // invalid email","lastModifiedDate":"2024-03-09"},{"lineNumber":193,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":194,"author":{"gitId":"chiageng"},"content":" + SKILL_DESC_BOB + COMMISSION_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":195,"author":{"gitId":"chiageng"},"content":" Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-09"},{"lineNumber":196,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":197,"author":{"gitId":"chiageng"},"content":" // invalid address","lastModifiedDate":"2024-03-09"},{"lineNumber":198,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2024-03-09"},{"lineNumber":199,"author":{"gitId":"chiageng"},"content":" + SKILL_DESC_BOB + COMMISSION_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":200,"author":{"gitId":"chiageng"},"content":" Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-09"},{"lineNumber":201,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":202,"author":{"gitId":"chiageng"},"content":" // invalid skill","lastModifiedDate":"2024-03-09"},{"lineNumber":203,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":204,"author":{"gitId":"chiageng"},"content":" + INVALID_SKILL_DESC + COMMISSION_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":205,"author":{"gitId":"chiageng"},"content":" Skill.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-09"},{"lineNumber":206,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":207,"author":{"gitId":"chiageng"},"content":" // invalid commission","lastModifiedDate":"2024-03-09"},{"lineNumber":208,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":209,"author":{"gitId":"chiageng"},"content":" + SKILL_DESC_BOB + INVALID_COMMISSION_DESC,","lastModifiedDate":"2024-03-09"},{"lineNumber":210,"author":{"gitId":"chiageng"},"content":" Commission.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-09"},{"lineNumber":211,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":212,"author":{"gitId":"chiageng"},"content":" /*","lastModifiedDate":"2024-03-09"},{"lineNumber":213,"author":{"gitId":"chiageng"},"content":" invalid tag","lastModifiedDate":"2024-03-09"},{"lineNumber":214,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":215,"author":{"gitId":"chiageng"},"content":" Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-09"},{"lineNumber":216,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":217,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":218,"author":{"gitId":"chiageng"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2024-03-09"},{"lineNumber":219,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2024-03-09"},{"lineNumber":220,"author":{"gitId":"chiageng"},"content":" + INVALID_SKILL_DESC + INVALID_COMMISSION_DESC,","lastModifiedDate":"2024-03-09"},{"lineNumber":221,"author":{"gitId":"chiageng"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-09"},{"lineNumber":222,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":223,"author":{"gitId":"chiageng"},"content":" // non-empty preamble","lastModifiedDate":"2024-03-09"},{"lineNumber":224,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":225,"author":{"gitId":"chiageng"},"content":" + ADDRESS_DESC_BOB + SKILL_DESC_BOB + COMMISSION_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":226,"author":{"gitId":"chiageng"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddMaintainerCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-09"},{"lineNumber":227,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":228,"author":{"gitId":"chiageng"},"content":"}","lastModifiedDate":"2024-03-09"}],"authorContributionMap":{"chiageng":226,"jamessinmaojun":2}},{"path":"src/test/java/seedu/address/logic/parser/AddStaffCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chiageng"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-09"},{"lineNumber":2,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":3,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-03-09"},{"lineNumber":4,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":5,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-09"},{"lineNumber":6,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":7,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMPLOYMENT_DESC_AMY;","lastModifiedDate":"2024-03-09"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMPLOYMENT_DESC_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2024-03-09"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMPLOYMENT_DESC;","lastModifiedDate":"2024-03-09"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-03-09"},{"lineNumber":13,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2024-03-09"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_SALARY_DESC;","lastModifiedDate":"2024-03-09"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-03-09"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-03-09"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2024-03-09"},{"lineNumber":20,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2024-03-09"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SALARY_DESC_AMY;","lastModifiedDate":"2024-03-09"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SALARY_DESC_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":23,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2024-03-09"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":25,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":26,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMPLOYMENT_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":27,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":28,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":29,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SALARY_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":30,"author":{"gitId":"jamessinmaojun"},"content":"import static seedu.address.logic.messages.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-09"},{"lineNumber":32,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-09"},{"lineNumber":33,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMPLOYMENT;","lastModifiedDate":"2024-03-09"},{"lineNumber":34,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-09"},{"lineNumber":35,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-09"},{"lineNumber":36,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SALARY;","lastModifiedDate":"2024-03-09"},{"lineNumber":37,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-09"},{"lineNumber":38,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-09"},{"lineNumber":39,"author":{"gitId":"chiageng"},"content":"import static seedu.address.testutil.TypicalPersons.BOBSTAFF;","lastModifiedDate":"2024-03-09"},{"lineNumber":40,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":41,"author":{"gitId":"chiageng"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-09"},{"lineNumber":42,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":43,"author":{"gitId":"chiageng"},"content":"import seedu.address.logic.commands.AddStaffCommand;","lastModifiedDate":"2024-03-09"},{"lineNumber":44,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.Messages;","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-09"},{"lineNumber":46,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-09"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Employment;","lastModifiedDate":"2024-03-09"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-09"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-09"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Salary;","lastModifiedDate":"2024-03-09"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Staff;","lastModifiedDate":"2024-03-09"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":"import seedu.address.testutil.StaffBuilder;","lastModifiedDate":"2024-03-09"},{"lineNumber":53,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":55,"author":{"gitId":"chiageng"},"content":"public class AddStaffCommandParserTest {","lastModifiedDate":"2024-03-09"},{"lineNumber":56,"author":{"gitId":"chiageng"},"content":" private AddStaffCommandParser parser \u003d new AddStaffCommandParser();","lastModifiedDate":"2024-03-09"},{"lineNumber":57,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":58,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":59,"author":{"gitId":"chiageng"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2024-03-09"},{"lineNumber":60,"author":{"gitId":"chiageng"},"content":" Staff expectedPerson \u003d new StaffBuilder(BOBSTAFF).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":61,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":62,"author":{"gitId":"chiageng"},"content":" // whitespace only preamble","lastModifiedDate":"2024-03-09"},{"lineNumber":63,"author":{"gitId":"chiageng"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":64,"author":{"gitId":"chiageng"},"content":" + ADDRESS_DESC_BOB + SALARY_DESC_BOB + EMPLOYMENT_DESC_BOB, new AddStaffCommand(expectedPerson));","lastModifiedDate":"2024-03-09"},{"lineNumber":65,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":66,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":67,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":68,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":69,"author":{"gitId":"chiageng"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2024-03-09"},{"lineNumber":70,"author":{"gitId":"chiageng"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":71,"author":{"gitId":"chiageng"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND + SALARY_DESC_BOB + EMPLOYMENT_DESC_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":72,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":73,"author":{"gitId":"chiageng"},"content":" // multiple names","lastModifiedDate":"2024-03-09"},{"lineNumber":74,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-09"},{"lineNumber":75,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2024-03-09"},{"lineNumber":76,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":77,"author":{"gitId":"chiageng"},"content":" // multiple phones","lastModifiedDate":"2024-03-09"},{"lineNumber":78,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-09"},{"lineNumber":79,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2024-03-09"},{"lineNumber":80,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":81,"author":{"gitId":"chiageng"},"content":" // multiple emails","lastModifiedDate":"2024-03-09"},{"lineNumber":82,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-09"},{"lineNumber":83,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2024-03-09"},{"lineNumber":84,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":85,"author":{"gitId":"chiageng"},"content":" // multiple addresses","lastModifiedDate":"2024-03-09"},{"lineNumber":86,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-09"},{"lineNumber":87,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2024-03-09"},{"lineNumber":88,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":89,"author":{"gitId":"chiageng"},"content":" // multiple fields repeated","lastModifiedDate":"2024-03-09"},{"lineNumber":90,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-09"},{"lineNumber":91,"author":{"gitId":"chiageng"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY","lastModifiedDate":"2024-03-09"},{"lineNumber":92,"author":{"gitId":"chiageng"},"content":" + ADDRESS_DESC_AMY + SALARY_DESC_AMY + EMPLOYMENT_DESC_AMY","lastModifiedDate":"2024-03-09"},{"lineNumber":93,"author":{"gitId":"chiageng"},"content":" + validExpectedPersonString,","lastModifiedDate":"2024-03-09"},{"lineNumber":94,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_ADDRESS, PREFIX_EMAIL, PREFIX_PHONE,","lastModifiedDate":"2024-03-09"},{"lineNumber":95,"author":{"gitId":"chiageng"},"content":" PREFIX_SALARY, PREFIX_EMPLOYMENT));","lastModifiedDate":"2024-03-09"},{"lineNumber":96,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":97,"author":{"gitId":"chiageng"},"content":" // invalid value followed by valid value","lastModifiedDate":"2024-03-09"},{"lineNumber":98,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":99,"author":{"gitId":"chiageng"},"content":" // invalid name","lastModifiedDate":"2024-03-09"},{"lineNumber":100,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2024-03-09"},{"lineNumber":101,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2024-03-09"},{"lineNumber":102,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":103,"author":{"gitId":"chiageng"},"content":" // invalid email","lastModifiedDate":"2024-03-09"},{"lineNumber":104,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2024-03-09"},{"lineNumber":105,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2024-03-09"},{"lineNumber":106,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":107,"author":{"gitId":"chiageng"},"content":" // invalid phone","lastModifiedDate":"2024-03-09"},{"lineNumber":108,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2024-03-09"},{"lineNumber":109,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2024-03-09"},{"lineNumber":110,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":111,"author":{"gitId":"chiageng"},"content":" // invalid address","lastModifiedDate":"2024-03-09"},{"lineNumber":112,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2024-03-09"},{"lineNumber":113,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2024-03-09"},{"lineNumber":114,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":115,"author":{"gitId":"chiageng"},"content":" // valid value followed by invalid value","lastModifiedDate":"2024-03-09"},{"lineNumber":116,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":117,"author":{"gitId":"chiageng"},"content":" // invalid name","lastModifiedDate":"2024-03-09"},{"lineNumber":118,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2024-03-09"},{"lineNumber":119,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2024-03-09"},{"lineNumber":120,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":121,"author":{"gitId":"chiageng"},"content":" // invalid email","lastModifiedDate":"2024-03-09"},{"lineNumber":122,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2024-03-09"},{"lineNumber":123,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2024-03-09"},{"lineNumber":124,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":125,"author":{"gitId":"chiageng"},"content":" // invalid phone","lastModifiedDate":"2024-03-09"},{"lineNumber":126,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2024-03-09"},{"lineNumber":127,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2024-03-09"},{"lineNumber":128,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":129,"author":{"gitId":"chiageng"},"content":" // invalid address","lastModifiedDate":"2024-03-09"},{"lineNumber":130,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2024-03-09"},{"lineNumber":131,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2024-03-09"},{"lineNumber":132,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":133,"author":{"gitId":"chiageng"},"content":" // invalid salary","lastModifiedDate":"2024-03-09"},{"lineNumber":134,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_SALARY_DESC,","lastModifiedDate":"2024-03-09"},{"lineNumber":135,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_SALARY));","lastModifiedDate":"2024-03-09"},{"lineNumber":136,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":137,"author":{"gitId":"chiageng"},"content":" // invalid employment","lastModifiedDate":"2024-03-09"},{"lineNumber":138,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMPLOYMENT_DESC,","lastModifiedDate":"2024-03-09"},{"lineNumber":139,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMPLOYMENT));","lastModifiedDate":"2024-03-09"},{"lineNumber":140,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":141,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":142,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":143,"author":{"gitId":"chiageng"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2024-03-09"},{"lineNumber":144,"author":{"gitId":"chiageng"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddStaffCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-09"},{"lineNumber":145,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":146,"author":{"gitId":"chiageng"},"content":" // missing name prefix","lastModifiedDate":"2024-03-09"},{"lineNumber":147,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":148,"author":{"gitId":"chiageng"},"content":" + SALARY_DESC_BOB + EMPLOYMENT_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":149,"author":{"gitId":"chiageng"},"content":" expectedMessage);","lastModifiedDate":"2024-03-09"},{"lineNumber":150,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":151,"author":{"gitId":"chiageng"},"content":" // missing phone prefix","lastModifiedDate":"2024-03-09"},{"lineNumber":152,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":153,"author":{"gitId":"chiageng"},"content":" + SALARY_DESC_BOB + EMPLOYMENT_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":154,"author":{"gitId":"chiageng"},"content":" expectedMessage);","lastModifiedDate":"2024-03-09"},{"lineNumber":155,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":156,"author":{"gitId":"chiageng"},"content":" // missing email prefix","lastModifiedDate":"2024-03-09"},{"lineNumber":157,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":158,"author":{"gitId":"chiageng"},"content":" + SALARY_DESC_BOB + EMPLOYMENT_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":159,"author":{"gitId":"chiageng"},"content":" expectedMessage);","lastModifiedDate":"2024-03-09"},{"lineNumber":160,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":161,"author":{"gitId":"chiageng"},"content":" // missing address prefix","lastModifiedDate":"2024-03-09"},{"lineNumber":162,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":163,"author":{"gitId":"chiageng"},"content":" + SALARY_DESC_BOB + EMPLOYMENT_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":164,"author":{"gitId":"chiageng"},"content":" expectedMessage);","lastModifiedDate":"2024-03-09"},{"lineNumber":165,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":166,"author":{"gitId":"chiageng"},"content":" // missing salary prefix","lastModifiedDate":"2024-03-09"},{"lineNumber":167,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":168,"author":{"gitId":"chiageng"},"content":" + VALID_SALARY_BOB + EMPLOYMENT_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":169,"author":{"gitId":"chiageng"},"content":" expectedMessage);","lastModifiedDate":"2024-03-09"},{"lineNumber":170,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":171,"author":{"gitId":"chiageng"},"content":" // missing employment prefix","lastModifiedDate":"2024-03-09"},{"lineNumber":172,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":173,"author":{"gitId":"chiageng"},"content":" + SALARY_DESC_BOB + VALID_EMPLOYMENT_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":174,"author":{"gitId":"chiageng"},"content":" expectedMessage);","lastModifiedDate":"2024-03-09"},{"lineNumber":175,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":176,"author":{"gitId":"chiageng"},"content":" // all prefixes missing","lastModifiedDate":"2024-03-09"},{"lineNumber":177,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_ADDRESS_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":178,"author":{"gitId":"chiageng"},"content":" + VALID_SALARY_BOB + VALID_EMPLOYMENT_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":179,"author":{"gitId":"chiageng"},"content":" expectedMessage);","lastModifiedDate":"2024-03-09"},{"lineNumber":180,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":181,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":182,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":183,"author":{"gitId":"chiageng"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2024-03-09"},{"lineNumber":184,"author":{"gitId":"chiageng"},"content":" // invalid name","lastModifiedDate":"2024-03-09"},{"lineNumber":185,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":186,"author":{"gitId":"chiageng"},"content":" + SALARY_DESC_BOB + EMPLOYMENT_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":187,"author":{"gitId":"chiageng"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-09"},{"lineNumber":188,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":189,"author":{"gitId":"chiageng"},"content":" // invalid phone","lastModifiedDate":"2024-03-09"},{"lineNumber":190,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":191,"author":{"gitId":"chiageng"},"content":" + SALARY_DESC_BOB + EMPLOYMENT_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":192,"author":{"gitId":"chiageng"},"content":" Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-09"},{"lineNumber":193,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":194,"author":{"gitId":"chiageng"},"content":" // invalid email","lastModifiedDate":"2024-03-09"},{"lineNumber":195,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":196,"author":{"gitId":"chiageng"},"content":" + SALARY_DESC_BOB + EMPLOYMENT_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":197,"author":{"gitId":"chiageng"},"content":" Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-09"},{"lineNumber":198,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":199,"author":{"gitId":"chiageng"},"content":" // invalid address","lastModifiedDate":"2024-03-09"},{"lineNumber":200,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2024-03-09"},{"lineNumber":201,"author":{"gitId":"chiageng"},"content":" + SALARY_DESC_BOB + EMPLOYMENT_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":202,"author":{"gitId":"chiageng"},"content":" Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-09"},{"lineNumber":203,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":204,"author":{"gitId":"chiageng"},"content":" // invalid salary","lastModifiedDate":"2024-03-09"},{"lineNumber":205,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":206,"author":{"gitId":"chiageng"},"content":" + INVALID_SALARY_DESC + EMPLOYMENT_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":207,"author":{"gitId":"chiageng"},"content":" Salary.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-09"},{"lineNumber":208,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":209,"author":{"gitId":"chiageng"},"content":" // invalid employment","lastModifiedDate":"2024-03-09"},{"lineNumber":210,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":211,"author":{"gitId":"chiageng"},"content":" + SALARY_DESC_BOB + INVALID_EMPLOYMENT_DESC,","lastModifiedDate":"2024-03-09"},{"lineNumber":212,"author":{"gitId":"chiageng"},"content":" Employment.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-09"},{"lineNumber":213,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":214,"author":{"gitId":"chiageng"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2024-03-09"},{"lineNumber":215,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2024-03-09"},{"lineNumber":216,"author":{"gitId":"chiageng"},"content":" + INVALID_SALARY_DESC + INVALID_EMPLOYMENT_DESC,","lastModifiedDate":"2024-03-09"},{"lineNumber":217,"author":{"gitId":"chiageng"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-09"},{"lineNumber":218,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":219,"author":{"gitId":"chiageng"},"content":" // non-empty preamble","lastModifiedDate":"2024-03-09"},{"lineNumber":220,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":221,"author":{"gitId":"chiageng"},"content":" + ADDRESS_DESC_BOB + SALARY_DESC_BOB + EMPLOYMENT_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":222,"author":{"gitId":"chiageng"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddStaffCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-09"},{"lineNumber":223,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":224,"author":{"gitId":"chiageng"},"content":"}","lastModifiedDate":"2024-03-09"}],"authorContributionMap":{"chiageng":222,"jamessinmaojun":2}},{"path":"src/test/java/seedu/address/logic/parser/AddSupplierCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chiageng"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-09"},{"lineNumber":2,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":3,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-03-09"},{"lineNumber":4,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":5,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-09"},{"lineNumber":6,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":7,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2024-03-09"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2024-03-09"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PRICE_DESC;","lastModifiedDate":"2024-03-09"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PRODUCT_DESC;","lastModifiedDate":"2024-03-09"},{"lineNumber":13,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-03-09"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-03-09"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2024-03-09"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2024-03-09"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PRICE_DESC_AMY;","lastModifiedDate":"2024-03-09"},{"lineNumber":20,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PRICE_DESC_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PRODUCT_DESC_AMY;","lastModifiedDate":"2024-03-09"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PRODUCT_DESC_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":23,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":25,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":26,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":27,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PRICE_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":28,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PRODUCT_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":29,"author":{"gitId":"jamessinmaojun"},"content":"import static seedu.address.logic.messages.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-09"},{"lineNumber":31,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-09"},{"lineNumber":32,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-09"},{"lineNumber":33,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-09"},{"lineNumber":34,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PRICE;","lastModifiedDate":"2024-03-09"},{"lineNumber":35,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PRODUCT;","lastModifiedDate":"2024-03-09"},{"lineNumber":36,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-09"},{"lineNumber":37,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-09"},{"lineNumber":38,"author":{"gitId":"chiageng"},"content":"import static seedu.address.testutil.TypicalPersons.BOBSUPPLIER;","lastModifiedDate":"2024-03-09"},{"lineNumber":39,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":40,"author":{"gitId":"chiageng"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-09"},{"lineNumber":41,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":42,"author":{"gitId":"chiageng"},"content":"import seedu.address.logic.commands.AddSupplierCommand;","lastModifiedDate":"2024-03-09"},{"lineNumber":43,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.Messages;","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-09"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-09"},{"lineNumber":46,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-09"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-09"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Price;","lastModifiedDate":"2024-03-09"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Product;","lastModifiedDate":"2024-03-09"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Supplier;","lastModifiedDate":"2024-03-09"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":"import seedu.address.testutil.SupplierBuilder;","lastModifiedDate":"2024-03-09"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":53,"author":{"gitId":"chiageng"},"content":"public class AddSupplierCommandParserTest {","lastModifiedDate":"2024-03-09"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":" private AddSupplierCommandParser parser \u003d new AddSupplierCommandParser();","lastModifiedDate":"2024-03-09"},{"lineNumber":55,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":56,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":57,"author":{"gitId":"chiageng"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2024-03-09"},{"lineNumber":58,"author":{"gitId":"chiageng"},"content":" Supplier expectedPerson \u003d new SupplierBuilder(BOBSUPPLIER).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":59,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":60,"author":{"gitId":"chiageng"},"content":" // whitespace only preamble","lastModifiedDate":"2024-03-09"},{"lineNumber":61,"author":{"gitId":"chiageng"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":62,"author":{"gitId":"chiageng"},"content":" + ADDRESS_DESC_BOB + PRODUCT_DESC_BOB + PRICE_DESC_BOB, new AddSupplierCommand(expectedPerson));","lastModifiedDate":"2024-03-09"},{"lineNumber":63,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":64,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":65,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":66,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":67,"author":{"gitId":"chiageng"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2024-03-09"},{"lineNumber":68,"author":{"gitId":"chiageng"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":69,"author":{"gitId":"chiageng"},"content":" + ADDRESS_DESC_BOB + PRODUCT_DESC_BOB + PRICE_DESC_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":70,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":71,"author":{"gitId":"chiageng"},"content":" // multiple names","lastModifiedDate":"2024-03-09"},{"lineNumber":72,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-09"},{"lineNumber":73,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2024-03-09"},{"lineNumber":74,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":75,"author":{"gitId":"chiageng"},"content":" // multiple phones","lastModifiedDate":"2024-03-09"},{"lineNumber":76,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-09"},{"lineNumber":77,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2024-03-09"},{"lineNumber":78,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":79,"author":{"gitId":"chiageng"},"content":" // multiple emails","lastModifiedDate":"2024-03-09"},{"lineNumber":80,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-09"},{"lineNumber":81,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2024-03-09"},{"lineNumber":82,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":83,"author":{"gitId":"chiageng"},"content":" // multiple addresses","lastModifiedDate":"2024-03-09"},{"lineNumber":84,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-09"},{"lineNumber":85,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2024-03-09"},{"lineNumber":86,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":87,"author":{"gitId":"chiageng"},"content":" // multiple fields repeated","lastModifiedDate":"2024-03-09"},{"lineNumber":88,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-09"},{"lineNumber":89,"author":{"gitId":"chiageng"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY","lastModifiedDate":"2024-03-09"},{"lineNumber":90,"author":{"gitId":"chiageng"},"content":" + ADDRESS_DESC_AMY + PRODUCT_DESC_AMY + PRICE_DESC_AMY","lastModifiedDate":"2024-03-09"},{"lineNumber":91,"author":{"gitId":"chiageng"},"content":" + validExpectedPersonString,","lastModifiedDate":"2024-03-09"},{"lineNumber":92,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_ADDRESS, PREFIX_EMAIL, PREFIX_PHONE,","lastModifiedDate":"2024-03-09"},{"lineNumber":93,"author":{"gitId":"chiageng"},"content":" PREFIX_PRODUCT, PREFIX_PRICE));","lastModifiedDate":"2024-03-09"},{"lineNumber":94,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":95,"author":{"gitId":"chiageng"},"content":" // invalid name","lastModifiedDate":"2024-03-09"},{"lineNumber":96,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2024-03-09"},{"lineNumber":97,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2024-03-09"},{"lineNumber":98,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":99,"author":{"gitId":"chiageng"},"content":" // invalid email","lastModifiedDate":"2024-03-09"},{"lineNumber":100,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2024-03-09"},{"lineNumber":101,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2024-03-09"},{"lineNumber":102,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":103,"author":{"gitId":"chiageng"},"content":" // invalid phone","lastModifiedDate":"2024-03-09"},{"lineNumber":104,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2024-03-09"},{"lineNumber":105,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2024-03-09"},{"lineNumber":106,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":107,"author":{"gitId":"chiageng"},"content":" // invalid address","lastModifiedDate":"2024-03-09"},{"lineNumber":108,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2024-03-09"},{"lineNumber":109,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2024-03-09"},{"lineNumber":110,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":111,"author":{"gitId":"chiageng"},"content":" // valid value followed by invalid value","lastModifiedDate":"2024-03-09"},{"lineNumber":112,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":113,"author":{"gitId":"chiageng"},"content":" // invalid name","lastModifiedDate":"2024-03-09"},{"lineNumber":114,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2024-03-09"},{"lineNumber":115,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2024-03-09"},{"lineNumber":116,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":117,"author":{"gitId":"chiageng"},"content":" // invalid email","lastModifiedDate":"2024-03-09"},{"lineNumber":118,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2024-03-09"},{"lineNumber":119,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2024-03-09"},{"lineNumber":120,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":121,"author":{"gitId":"chiageng"},"content":" // invalid phone","lastModifiedDate":"2024-03-09"},{"lineNumber":122,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2024-03-09"},{"lineNumber":123,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2024-03-09"},{"lineNumber":124,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":125,"author":{"gitId":"chiageng"},"content":" // invalid address","lastModifiedDate":"2024-03-09"},{"lineNumber":126,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2024-03-09"},{"lineNumber":127,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2024-03-09"},{"lineNumber":128,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":129,"author":{"gitId":"chiageng"},"content":" // invalid product","lastModifiedDate":"2024-03-09"},{"lineNumber":130,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PRODUCT_DESC,","lastModifiedDate":"2024-03-09"},{"lineNumber":131,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PRODUCT));","lastModifiedDate":"2024-03-09"},{"lineNumber":132,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":133,"author":{"gitId":"chiageng"},"content":" // invalid price","lastModifiedDate":"2024-03-09"},{"lineNumber":134,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PRICE_DESC,","lastModifiedDate":"2024-03-09"},{"lineNumber":135,"author":{"gitId":"chiageng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PRICE));","lastModifiedDate":"2024-03-09"},{"lineNumber":136,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":137,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":138,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":139,"author":{"gitId":"chiageng"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2024-03-09"},{"lineNumber":140,"author":{"gitId":"chiageng"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddSupplierCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-09"},{"lineNumber":141,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":142,"author":{"gitId":"chiageng"},"content":" // missing name prefix","lastModifiedDate":"2024-03-09"},{"lineNumber":143,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":144,"author":{"gitId":"chiageng"},"content":" + PRODUCT_DESC_BOB + PRICE_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":145,"author":{"gitId":"chiageng"},"content":" expectedMessage);","lastModifiedDate":"2024-03-09"},{"lineNumber":146,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":147,"author":{"gitId":"chiageng"},"content":" // missing phone prefix","lastModifiedDate":"2024-03-09"},{"lineNumber":148,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":149,"author":{"gitId":"chiageng"},"content":" + PRODUCT_DESC_BOB + PRICE_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":150,"author":{"gitId":"chiageng"},"content":" expectedMessage);","lastModifiedDate":"2024-03-09"},{"lineNumber":151,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":152,"author":{"gitId":"chiageng"},"content":" // missing email prefix","lastModifiedDate":"2024-03-09"},{"lineNumber":153,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":154,"author":{"gitId":"chiageng"},"content":" + PRODUCT_DESC_BOB + PRICE_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":155,"author":{"gitId":"chiageng"},"content":" expectedMessage);","lastModifiedDate":"2024-03-09"},{"lineNumber":156,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":157,"author":{"gitId":"chiageng"},"content":" // missing address prefix","lastModifiedDate":"2024-03-09"},{"lineNumber":158,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":159,"author":{"gitId":"chiageng"},"content":" + PRODUCT_DESC_BOB + PRICE_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":160,"author":{"gitId":"chiageng"},"content":" expectedMessage);","lastModifiedDate":"2024-03-09"},{"lineNumber":161,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":162,"author":{"gitId":"chiageng"},"content":" // missing product prefix","lastModifiedDate":"2024-03-09"},{"lineNumber":163,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":164,"author":{"gitId":"chiageng"},"content":" + VALID_PRODUCT_BOB + PRICE_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":165,"author":{"gitId":"chiageng"},"content":" expectedMessage);","lastModifiedDate":"2024-03-09"},{"lineNumber":166,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":167,"author":{"gitId":"chiageng"},"content":" // missing price prefix","lastModifiedDate":"2024-03-09"},{"lineNumber":168,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":169,"author":{"gitId":"chiageng"},"content":" + PRODUCT_DESC_BOB + VALID_PRICE_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":170,"author":{"gitId":"chiageng"},"content":" expectedMessage);","lastModifiedDate":"2024-03-09"},{"lineNumber":171,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":172,"author":{"gitId":"chiageng"},"content":" // all prefixes missing","lastModifiedDate":"2024-03-09"},{"lineNumber":173,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_ADDRESS_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":174,"author":{"gitId":"chiageng"},"content":" + VALID_PRODUCT_BOB + VALID_PRICE_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":175,"author":{"gitId":"chiageng"},"content":" expectedMessage);","lastModifiedDate":"2024-03-09"},{"lineNumber":176,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":177,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":178,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":179,"author":{"gitId":"chiageng"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2024-03-09"},{"lineNumber":180,"author":{"gitId":"chiageng"},"content":" // invalid name","lastModifiedDate":"2024-03-09"},{"lineNumber":181,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":182,"author":{"gitId":"chiageng"},"content":" + PRODUCT_DESC_BOB + PRICE_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":183,"author":{"gitId":"chiageng"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-09"},{"lineNumber":184,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":185,"author":{"gitId":"chiageng"},"content":" // invalid phone","lastModifiedDate":"2024-03-09"},{"lineNumber":186,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":187,"author":{"gitId":"chiageng"},"content":" + PRODUCT_DESC_BOB + PRICE_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":188,"author":{"gitId":"chiageng"},"content":" Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-09"},{"lineNumber":189,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":190,"author":{"gitId":"chiageng"},"content":" // invalid email","lastModifiedDate":"2024-03-09"},{"lineNumber":191,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":192,"author":{"gitId":"chiageng"},"content":" + PRODUCT_DESC_BOB + PRICE_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":193,"author":{"gitId":"chiageng"},"content":" Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-09"},{"lineNumber":194,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":195,"author":{"gitId":"chiageng"},"content":" // invalid address","lastModifiedDate":"2024-03-09"},{"lineNumber":196,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2024-03-09"},{"lineNumber":197,"author":{"gitId":"chiageng"},"content":" + PRODUCT_DESC_BOB + PRICE_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":198,"author":{"gitId":"chiageng"},"content":" Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-09"},{"lineNumber":199,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":200,"author":{"gitId":"chiageng"},"content":" // invalid product","lastModifiedDate":"2024-03-09"},{"lineNumber":201,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":202,"author":{"gitId":"chiageng"},"content":" + INVALID_PRODUCT_DESC + PRICE_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":203,"author":{"gitId":"chiageng"},"content":" Product.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-09"},{"lineNumber":204,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":205,"author":{"gitId":"chiageng"},"content":" // invalid employment","lastModifiedDate":"2024-03-09"},{"lineNumber":206,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":207,"author":{"gitId":"chiageng"},"content":" + PRODUCT_DESC_BOB + INVALID_PRICE_DESC,","lastModifiedDate":"2024-03-09"},{"lineNumber":208,"author":{"gitId":"chiageng"},"content":" Price.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-09"},{"lineNumber":209,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":210,"author":{"gitId":"chiageng"},"content":" /*","lastModifiedDate":"2024-03-09"},{"lineNumber":211,"author":{"gitId":"chiageng"},"content":" invalid tag","lastModifiedDate":"2024-03-09"},{"lineNumber":212,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":213,"author":{"gitId":"chiageng"},"content":" Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-09"},{"lineNumber":214,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":215,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":216,"author":{"gitId":"chiageng"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2024-03-09"},{"lineNumber":217,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2024-03-09"},{"lineNumber":218,"author":{"gitId":"chiageng"},"content":" + INVALID_PRODUCT_DESC + INVALID_PRICE_DESC,","lastModifiedDate":"2024-03-09"},{"lineNumber":219,"author":{"gitId":"chiageng"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-09"},{"lineNumber":220,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":221,"author":{"gitId":"chiageng"},"content":" // non-empty preamble","lastModifiedDate":"2024-03-09"},{"lineNumber":222,"author":{"gitId":"chiageng"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-09"},{"lineNumber":223,"author":{"gitId":"chiageng"},"content":" + ADDRESS_DESC_BOB + PRODUCT_DESC_BOB + PRICE_DESC_BOB,","lastModifiedDate":"2024-03-09"},{"lineNumber":224,"author":{"gitId":"chiageng"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddSupplierCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-09"},{"lineNumber":225,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":226,"author":{"gitId":"chiageng"},"content":"}","lastModifiedDate":"2024-03-09"}],"authorContributionMap":{"chiageng":224,"jamessinmaojun":2}},{"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":"jamessinmaojun"},"content":"import static seedu.address.logic.messages.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"jamessinmaojun"},"content":"import static seedu.address.logic.messages.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"Joshy837"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FIELD;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"Joshy837"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":10,"author":{"gitId":"jamessinmaojun"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-15"},{"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":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"Joshy837"},"content":"import seedu.address.logic.commands.AddMaintainerCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"Joshy837"},"content":"import seedu.address.logic.commands.AddStaffCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"Joshy837"},"content":"import seedu.address.logic.commands.AddSupplierCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-06-27"},{"lineNumber":26,"author":{"gitId":"Joshy837"},"content":"import seedu.address.logic.commands.EditMaintainerCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.logic.commands.EditMaintainerCommand.EditMaintainerDescriptor;","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"Joshy837"},"content":"import seedu.address.logic.commands.EditStaffCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.logic.commands.EditStaffCommand.EditStaffDescriptor;","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"Joshy837"},"content":"import seedu.address.logic.commands.EditSupplierCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.logic.commands.EditSupplierCommand.EditSupplierDescriptor;","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"jannaleong"},"content":"import seedu.address.logic.commands.NoteCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"Joshy837"},"content":"import seedu.address.logic.commands.SearchCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24"},{"lineNumber":39,"author":{"gitId":"Joshy837"},"content":"import seedu.address.model.person.KeywordPredicate;","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"Joshy837"},"content":"import seedu.address.model.person.Maintainer;","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"Joshy837"},"content":"import seedu.address.model.person.Staff;","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"Joshy837"},"content":"import seedu.address.model.person.Supplier;","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.testutil.EditMaintainerDescriptorBuilder;","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.testutil.EditStaffDescriptorBuilder;","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.testutil.EditSupplierDescriptorBuilder;","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":"import seedu.address.testutil.MaintainerBuilder;","lastModifiedDate":"2024-03-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":"import seedu.address.testutil.StaffBuilder;","lastModifiedDate":"2024-03-09"},{"lineNumber":53,"author":{"gitId":"chiageng"},"content":"import seedu.address.testutil.SupplierBuilder;","lastModifiedDate":"2024-03-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), 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":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":67,"author":{"gitId":"chiageng"},"content":" public void parseCommand_addStaff() throws Exception {","lastModifiedDate":"2024-03-09"},{"lineNumber":68,"author":{"gitId":"chiageng"},"content":" Staff person \u003d new StaffBuilder().build();","lastModifiedDate":"2024-03-09"},{"lineNumber":69,"author":{"gitId":"chiageng"},"content":" AddStaffCommand command \u003d (AddStaffCommand) parser.parseCommand(","lastModifiedDate":"2024-03-09"},{"lineNumber":70,"author":{"gitId":"chiageng"},"content":" PersonUtil.getAddStaffCommand(person));","lastModifiedDate":"2024-03-09"},{"lineNumber":71,"author":{"gitId":"chiageng"},"content":" assertEquals(new AddStaffCommand(person), command);","lastModifiedDate":"2024-03-09"},{"lineNumber":72,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":73,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":74,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":75,"author":{"gitId":"chiageng"},"content":" public void parseCommand_addSupplier() throws Exception {","lastModifiedDate":"2024-03-09"},{"lineNumber":76,"author":{"gitId":"chiageng"},"content":" Supplier person \u003d new SupplierBuilder().build();","lastModifiedDate":"2024-03-09"},{"lineNumber":77,"author":{"gitId":"chiageng"},"content":" AddSupplierCommand command \u003d (AddSupplierCommand) parser.parseCommand(","lastModifiedDate":"2024-03-09"},{"lineNumber":78,"author":{"gitId":"chiageng"},"content":" PersonUtil.getAddSupplierCommand(person));","lastModifiedDate":"2024-03-09"},{"lineNumber":79,"author":{"gitId":"chiageng"},"content":" assertEquals(new AddSupplierCommand(person), command);","lastModifiedDate":"2024-03-09"},{"lineNumber":80,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":81,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":82,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":83,"author":{"gitId":"chiageng"},"content":" public void parseCommand_addMaintainer() throws Exception {","lastModifiedDate":"2024-03-09"},{"lineNumber":84,"author":{"gitId":"chiageng"},"content":" Maintainer person \u003d new MaintainerBuilder().build();","lastModifiedDate":"2024-03-09"},{"lineNumber":85,"author":{"gitId":"chiageng"},"content":" AddMaintainerCommand command \u003d (AddMaintainerCommand) parser.parseCommand(","lastModifiedDate":"2024-03-09"},{"lineNumber":86,"author":{"gitId":"chiageng"},"content":" PersonUtil.getAddMaintainerCommand(person));","lastModifiedDate":"2024-03-09"},{"lineNumber":87,"author":{"gitId":"chiageng"},"content":" assertEquals(new AddMaintainerCommand(person), command);","lastModifiedDate":"2024-03-09"},{"lineNumber":88,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":89,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"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_delete() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":99,"author":{"gitId":"jamessinmaojun"},"content":" DeleteCommand.COMMAND_WORD + \" ; name : \" + ALICE.getName());","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"jamessinmaojun"},"content":" assertEquals(new DeleteCommand(ALICE.getName()), command);","lastModifiedDate":"2024-03-15"},{"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_edit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27"},{"lineNumber":107,"author":{"gitId":"yleeyilin"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"yleeyilin"},"content":" + person.getName() + \" \" + PREFIX_FIELD + \"{ \"","lastModifiedDate":"2024-03-17"},{"lineNumber":109,"author":{"gitId":"yleeyilin"},"content":" + PersonUtil.getEditPersonDescriptorDetails(descriptor) + \"}\");","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"yleeyilin"},"content":" assertEquals(command, new EditCommand(person.getName(), descriptor));","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"yleeyilin"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"yleeyilin"},"content":" public void parseCommand_editStaff() throws Exception {","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"yleeyilin"},"content":" Staff staff \u003d new StaffBuilder().build();","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"yleeyilin"},"content":" EditStaffDescriptor descriptor \u003d new EditStaffDescriptorBuilder(staff).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"yleeyilin"},"content":" EditStaffCommand command \u003d (EditStaffCommand) parser.parseCommand(EditStaffCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"yleeyilin"},"content":" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"yleeyilin"},"content":" + staff.getName() + \" \" + PREFIX_FIELD + \"{ \"","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"yleeyilin"},"content":" + PersonUtil.getEditStaffDescriptorDetails(descriptor) + \"}\");","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"yleeyilin"},"content":" assertEquals(command, new EditStaffCommand(staff.getName(), descriptor));","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"yleeyilin"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"yleeyilin"},"content":" public void parseCommand_editSupplier() throws Exception {","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"yleeyilin"},"content":" Supplier supplier \u003d new SupplierBuilder().build();","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"yleeyilin"},"content":" EditSupplierDescriptor descriptor \u003d new EditSupplierDescriptorBuilder(supplier).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"yleeyilin"},"content":" EditSupplierCommand command \u003d (EditSupplierCommand) parser.parseCommand(EditSupplierCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2024-03-17"},{"lineNumber":129,"author":{"gitId":"yleeyilin"},"content":" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":130,"author":{"gitId":"yleeyilin"},"content":" + supplier.getName() + \" \" + PREFIX_FIELD + \"{ \"","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"yleeyilin"},"content":" + PersonUtil.getEditSupplierDescriptorDetails(descriptor) + \"}\");","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"yleeyilin"},"content":" assertEquals(new EditSupplierCommand(supplier.getName(), descriptor), command);","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":135,"author":{"gitId":"yleeyilin"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":136,"author":{"gitId":"yleeyilin"},"content":" public void parseCommand_editMaintainer() throws Exception {","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"yleeyilin"},"content":" Maintainer maintainer \u003d new MaintainerBuilder().build();","lastModifiedDate":"2024-03-17"},{"lineNumber":138,"author":{"gitId":"yleeyilin"},"content":" EditMaintainerDescriptor descriptor \u003d new EditMaintainerDescriptorBuilder(maintainer).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":139,"author":{"gitId":"yleeyilin"},"content":" EditMaintainerCommand command \u003d (EditMaintainerCommand)","lastModifiedDate":"2024-03-17"},{"lineNumber":140,"author":{"gitId":"yleeyilin"},"content":" parser.parseCommand(EditMaintainerCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2024-03-17"},{"lineNumber":141,"author":{"gitId":"yleeyilin"},"content":" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"yleeyilin"},"content":" + maintainer.getName() + \" \" + PREFIX_FIELD + \"{ \"","lastModifiedDate":"2024-03-17"},{"lineNumber":143,"author":{"gitId":"yleeyilin"},"content":" + PersonUtil.getEditMaintainerDescriptorDetails(descriptor) + \"}\");","lastModifiedDate":"2024-03-17"},{"lineNumber":144,"author":{"gitId":"yleeyilin"},"content":" assertEquals(new EditMaintainerCommand(maintainer.getName(), descriptor), command);","lastModifiedDate":"2024-03-17"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":147,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":148,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":150,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":153,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":154,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":155,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12"},{"lineNumber":156,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":157,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27"},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":161,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":162,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":163,"author":{"gitId":"jannaleong"},"content":" HelpCommand command \u003d (HelpCommand) parser.parseCommand(","lastModifiedDate":"2024-03-24"},{"lineNumber":164,"author":{"gitId":"jannaleong"},"content":" HelpCommand.COMMAND_WORD + \" ; command : \" + \"add\");","lastModifiedDate":"2024-03-24"},{"lineNumber":165,"author":{"gitId":"jannaleong"},"content":" assertEquals(new HelpCommand(\"add\"), command);","lastModifiedDate":"2024-03-24"},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":168,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":169,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":170,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":171,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":174,"author":{"gitId":"Joshy837"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":175,"author":{"gitId":"Joshy837"},"content":" public void parseCommand_search() throws Exception {","lastModifiedDate":"2024-03-18"},{"lineNumber":176,"author":{"gitId":"Joshy837"},"content":" String keyword \u003d \" ; name : Poochie\";","lastModifiedDate":"2024-03-18"},{"lineNumber":177,"author":{"gitId":"Joshy837"},"content":" ArgumentMultimap token \u003d ArgumentTokenizer.tokenize(keyword, PREFIX_NAME);","lastModifiedDate":"2024-03-18"},{"lineNumber":178,"author":{"gitId":"Joshy837"},"content":" SearchCommand command \u003d (SearchCommand) parser.parseCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":179,"author":{"gitId":"Joshy837"},"content":" SearchCommand.COMMAND_WORD + keyword);","lastModifiedDate":"2024-03-18"},{"lineNumber":180,"author":{"gitId":"Joshy837"},"content":" assertEquals(new SearchCommand(new KeywordPredicate(token)), command);","lastModifiedDate":"2024-03-18"},{"lineNumber":181,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":182,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":183,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":184,"author":{"gitId":"jannaleong"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":185,"author":{"gitId":"jannaleong"},"content":" public void parseCommand_note() throws Exception {","lastModifiedDate":"2024-03-19"},{"lineNumber":186,"author":{"gitId":"jannaleong"},"content":" NoteCommand command \u003d (NoteCommand) parser.parseCommand(\"/note ; name : Bob Choo ; note : get kibble\");","lastModifiedDate":"2024-03-19"},{"lineNumber":187,"author":{"gitId":"jannaleong"},"content":" assertTrue(command instanceof NoteCommand);","lastModifiedDate":"2024-03-19"},{"lineNumber":188,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":189,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":190,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":191,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":192,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":197,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":198,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":201,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":202,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"Joshy837":22,"jamessinmaojun":5,"chiageng":27,"jannaleong":13,"-":91,"yleeyilin":44}},{"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.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":5,"author":{"gitId":"jamessinmaojun"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-09"},{"lineNumber":10,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.DeleteMessages;","lastModifiedDate":"2024-03-18"},{"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":"jamessinmaojun"},"content":" assertParseSuccess(parser, \" ; name : Alice Pauline\", new DeleteCommand(ALICE.getName()));","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser, \"_\", String.format(DeleteMessages.MESSAGE_DELETE_MISSING_NAME,","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"jamessinmaojun"},"content":" DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09"}],"authorContributionMap":{"jamessinmaojun":5,"-":28}},{"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.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"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.INVALID_ADDRESS_DESC;","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.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":15,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":18,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FIELD;","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":23,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.testutil.TypicalPersons.CARL;","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-04"},{"lineNumber":30,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.EditMessages;","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.Messages;","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-04"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-04"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-04"},{"lineNumber":36,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":44,"author":{"gitId":"yleeyilin"},"content":" String userInput \u003d EditCommand.COMMAND_WORD + \" \" + PREFIX_NAME + \" \"","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"yleeyilin"},"content":" + \" \" + PREFIX_FIELD + \"{\" + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser, userInput, String.format(EditMessages.MESSAGE_EDIT_INVALID_NAME,","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"jamessinmaojun"},"content":" Name.MESSAGE_CONSTRAINTS));","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"jamessinmaojun"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":51,"author":{"gitId":"jamessinmaojun"},"content":" public void parse_missingName_failure() {","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"jamessinmaojun"},"content":" String userInput \u003d EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2024-03-22"},{"lineNumber":54,"author":{"gitId":"jamessinmaojun"},"content":" + \" \" + PREFIX_FIELD + \"{\" + \" }\";","lastModifiedDate":"2024-03-22"},{"lineNumber":55,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser, userInput, String.format(EditMessages.MESSAGE_EDIT_MISSING_NAME,","lastModifiedDate":"2024-03-22"},{"lineNumber":56,"author":{"gitId":"jamessinmaojun"},"content":" EditCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-22"},{"lineNumber":57,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":59,"author":{"gitId":"jamessinmaojun"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":60,"author":{"gitId":"jamessinmaojun"},"content":" public void parse_missingField_failure() {","lastModifiedDate":"2024-03-22"},{"lineNumber":61,"author":{"gitId":"jamessinmaojun"},"content":" // no field specified","lastModifiedDate":"2024-03-22"},{"lineNumber":62,"author":{"gitId":"jamessinmaojun"},"content":" String userInput \u003d EditCommand.COMMAND_WORD + \" \" + PREFIX_NAME;","lastModifiedDate":"2024-03-22"},{"lineNumber":63,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser, userInput, String.format(EditMessages.MESSAGE_EDIT_MISSING_FIELD,","lastModifiedDate":"2024-03-22"},{"lineNumber":64,"author":{"gitId":"jamessinmaojun"},"content":" EditCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06"},{"lineNumber":69,"author":{"gitId":"yleeyilin"},"content":" // invalid name","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"yleeyilin"},"content":" String userInput \u003d EditCommand.COMMAND_WORD + \" \" + PREFIX_NAME + \" \"","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"yleeyilin"},"content":" + \" \" + PREFIX_FIELD + \"{\" + PHONE_DESC_AMY","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"yleeyilin"},"content":" + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"jamessinmaojun"},"content":" userInput, String.format(EditMessages.MESSAGE_EDIT_INVALID_NAME, Name.MESSAGE_CONSTRAINTS));","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":79,"author":{"gitId":"yleeyilin"},"content":" String userInput \u003d EditCommand.COMMAND_WORD + \" \" + PREFIX_NAME + \"Person1\"","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"yleeyilin"},"content":" + \" \" + PREFIX_FIELD + \"{\" + INVALID_PHONE_DESC + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"jamessinmaojun"},"content":" String.format(EditMessages.MESSAGE_EDIT_INVALID_FIELD, Phone.MESSAGE_CONSTRAINTS)); // invalid phone","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"yleeyilin"},"content":" userInput \u003d EditCommand.COMMAND_WORD + \" \" + PREFIX_NAME + \"Person1\"","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"yleeyilin"},"content":" + \" \" + PREFIX_FIELD + \"{\" + INVALID_EMAIL_DESC + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"jamessinmaojun"},"content":" String.format(EditMessages.MESSAGE_EDIT_INVALID_FIELD, Email.MESSAGE_CONSTRAINTS)); // invalid email","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"yleeyilin"},"content":" userInput \u003d EditCommand.COMMAND_WORD + \" \" + PREFIX_NAME + \"Person1\"","lastModifiedDate":"2024-03-17"},{"lineNumber":88,"author":{"gitId":"yleeyilin"},"content":" + \" \" + PREFIX_FIELD + \"{\" + INVALID_ADDRESS_DESC + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"jamessinmaojun"},"content":" EditMessages.MESSAGE_EDIT_EMPTY_FIELD); // invalid address","lastModifiedDate":"2024-03-20"},{"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":"yleeyilin"},"content":" userInput \u003d EditCommand.COMMAND_WORD + \" \" + PREFIX_NAME + \"Person1\"","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"yleeyilin"},"content":" + \" \" + PREFIX_FIELD + \"{\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"jamessinmaojun"},"content":" String.format(EditMessages.MESSAGE_EDIT_INVALID_FIELD, Phone.MESSAGE_CONSTRAINTS));","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":98,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04"},{"lineNumber":99,"author":{"gitId":"yleeyilin"},"content":" userInput \u003d EditCommand.COMMAND_WORD + \" \" + PREFIX_NAME + \"Person1\"","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"yleeyilin"},"content":" + \" \" + PREFIX_FIELD + \"{\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"yleeyilin"},"content":" + VALID_ADDRESS_AMY + VALID_PHONE_AMY + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2024-03-20"},{"lineNumber":103,"author":{"gitId":"jamessinmaojun"},"content":" String.format(EditMessages.MESSAGE_EDIT_INVALID_NAME, Name.MESSAGE_CONSTRAINTS));","lastModifiedDate":"2024-03-20"},{"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":"yleeyilin"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(\"Person1\")","lastModifiedDate":"2024-03-17"},{"lineNumber":109,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-05-04"},{"lineNumber":110,"author":{"gitId":"yleeyilin"},"content":" .withTags(VALID_TAG).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"yleeyilin"},"content":" EditCommand expectedCommand \u003d new EditCommand(new Name(\"Person1\"), descriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"yleeyilin"},"content":" String userInput \u003d EditCommand.COMMAND_WORD + \" \" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"yleeyilin"},"content":" + \"Person1\" + \" \" + PREFIX_FIELD + \"{ \"","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"yleeyilin"},"content":" + PersonUtil.getEditPersonDescriptorDetails(descriptor) + \"}\";","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":120,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-04"},{"lineNumber":121,"author":{"gitId":"yleeyilin"},"content":" .withEmail(VALID_EMAIL_AMY).withTags(VALID_TAG).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"yleeyilin"},"content":" EditCommand expectedCommand \u003d new EditCommand(ALICE.getName(), descriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"yleeyilin"},"content":" String userInput \u003d EditCommand.COMMAND_WORD + \" \" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"yleeyilin"},"content":" + ALICE.getName() + \" \" + PREFIX_FIELD + \"{ \"","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"yleeyilin"},"content":" + PersonUtil.getEditPersonDescriptorDetails(descriptor) + \"}\";","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":130,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":131,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2017-05-04"},{"lineNumber":132,"author":{"gitId":"yleeyilin"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder()","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"yleeyilin"},"content":" .withPhone(VALID_PHONE_AMY).withTags(VALID_TAG).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"yleeyilin"},"content":" EditCommand expectedCommand \u003d new EditCommand(CARL.getName(), descriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":135,"author":{"gitId":"yleeyilin"},"content":" String userInput \u003d EditCommand.COMMAND_WORD + \" \" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":136,"author":{"gitId":"yleeyilin"},"content":" + CARL.getName() + \" \" + PREFIX_FIELD + \"{ \"","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"yleeyilin"},"content":" + PersonUtil.getEditPersonDescriptorDetails(descriptor) + \"}\";","lastModifiedDate":"2024-03-17"},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":140,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04"},{"lineNumber":141,"author":{"gitId":"yleeyilin"},"content":" descriptor \u003d new EditPersonDescriptorBuilder()","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"yleeyilin"},"content":" .withEmail(VALID_EMAIL_AMY).withTags(VALID_TAG).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":143,"author":{"gitId":"yleeyilin"},"content":" expectedCommand \u003d new EditCommand(CARL.getName(), descriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":144,"author":{"gitId":"yleeyilin"},"content":" userInput \u003d EditCommand.COMMAND_WORD + \" \" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":145,"author":{"gitId":"yleeyilin"},"content":" + CARL.getName() + \" \" + PREFIX_FIELD + \"{ \"","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"yleeyilin"},"content":" + PersonUtil.getEditPersonDescriptorDetails(descriptor) + \"}\";","lastModifiedDate":"2024-03-17"},{"lineNumber":147,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":149,"author":{"gitId":"-"},"content":" // address","lastModifiedDate":"2017-05-04"},{"lineNumber":150,"author":{"gitId":"yleeyilin"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2024-03-17"},{"lineNumber":151,"author":{"gitId":"yleeyilin"},"content":" .withTags(VALID_TAG).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":152,"author":{"gitId":"yleeyilin"},"content":" expectedCommand \u003d new EditCommand(CARL.getName(), descriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":153,"author":{"gitId":"yleeyilin"},"content":" userInput \u003d EditCommand.COMMAND_WORD + \" \" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":154,"author":{"gitId":"yleeyilin"},"content":" + CARL.getName() + \" \" + PREFIX_FIELD + \"{ \"","lastModifiedDate":"2024-03-17"},{"lineNumber":155,"author":{"gitId":"yleeyilin"},"content":" + PersonUtil.getEditPersonDescriptorDetails(descriptor) + \"}\";","lastModifiedDate":"2024-03-17"},{"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":"","lastModifiedDate":"2017-05-04"},{"lineNumber":159,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":160,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":161,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14"},{"lineNumber":162,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-07-14"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":164,"author":{"gitId":"yleeyilin"},"content":" // invalid followed by valid","lastModifiedDate":"2024-03-17"},{"lineNumber":165,"author":{"gitId":"yleeyilin"},"content":" String userInput \u003d EditCommand.COMMAND_WORD + \" \" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":166,"author":{"gitId":"yleeyilin"},"content":" + CARL.getName() + \" \" + PREFIX_FIELD + \"{\"","lastModifiedDate":"2024-03-17"},{"lineNumber":167,"author":{"gitId":"yleeyilin"},"content":" + INVALID_PHONE_DESC + PHONE_DESC_BOB + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":169,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":171,"author":{"gitId":"yleeyilin"},"content":" // valid followed by invalid","lastModifiedDate":"2024-03-17"},{"lineNumber":172,"author":{"gitId":"yleeyilin"},"content":" userInput \u003d EditCommand.COMMAND_WORD + \" \" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":173,"author":{"gitId":"yleeyilin"},"content":" + CARL.getName() + \" \" + PREFIX_FIELD + \"{\"","lastModifiedDate":"2024-03-17"},{"lineNumber":174,"author":{"gitId":"yleeyilin"},"content":" + PHONE_DESC_BOB + INVALID_PHONE_DESC + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":176,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":178,"author":{"gitId":"-"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":179,"author":{"gitId":"yleeyilin"},"content":" userInput \u003d EditCommand.COMMAND_WORD + \" \" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":180,"author":{"gitId":"yleeyilin"},"content":" + CARL.getName() + \" \" + PREFIX_FIELD + \"{\"","lastModifiedDate":"2024-03-17"},{"lineNumber":181,"author":{"gitId":"yleeyilin"},"content":" + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2024-03-17"},{"lineNumber":182,"author":{"gitId":"yleeyilin"},"content":" + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":184,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":185,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":187,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14"},{"lineNumber":188,"author":{"gitId":"yleeyilin"},"content":" userInput \u003d EditCommand.COMMAND_WORD + \" \" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":189,"author":{"gitId":"yleeyilin"},"content":" + CARL.getName() + \" \" + PREFIX_FIELD + \"{\"","lastModifiedDate":"2024-03-17"},{"lineNumber":190,"author":{"gitId":"yleeyilin"},"content":" + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2024-03-17"},{"lineNumber":191,"author":{"gitId":"yleeyilin"},"content":" + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":193,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":194,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":196,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04"}],"authorContributionMap":{"jamessinmaojun":29,"-":99,"yleeyilin":68}},{"path":"src/test/java/seedu/address/logic/parser/EditMaintainerCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yleeyilin"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_MAINTAINER;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FIELD;","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.testutil.TypicalPersons.ALICEMAINTAINER;","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.testutil.TypicalPersons.CARL;","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"yleeyilin"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.logic.commands.EditMaintainerCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.logic.commands.EditMaintainerCommand.EditMaintainerDescriptor;","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.EditMessages;","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.Messages;","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.testutil.EditMaintainerDescriptorBuilder;","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"yleeyilin"},"content":"public class EditMaintainerCommandParserTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"yleeyilin"},"content":" private EditMaintainerCommandParser parser \u003d new EditMaintainerCommandParser();","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"yleeyilin"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"yleeyilin"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"yleeyilin"},"content":" // no field specified","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"yleeyilin"},"content":" String userInput \u003d EditMaintainerCommand.COMMAND_WORD + \" \" + PREFIX_NAME + \" \"","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"yleeyilin"},"content":" + \" \" + PREFIX_FIELD + \"{\" + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser, userInput, String.format(EditMessages.MESSAGE_EDIT_INVALID_NAME,","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"jamessinmaojun"},"content":" Name.MESSAGE_CONSTRAINTS));","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"jamessinmaojun"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"jamessinmaojun"},"content":" public void parse_missingName_failure() {","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"jamessinmaojun"},"content":" // no field specified","lastModifiedDate":"2024-03-22"},{"lineNumber":54,"author":{"gitId":"jamessinmaojun"},"content":" String userInput \u003d EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2024-03-22"},{"lineNumber":55,"author":{"gitId":"jamessinmaojun"},"content":" + \" \" + PREFIX_FIELD + \"{\" + \" }\";","lastModifiedDate":"2024-03-22"},{"lineNumber":56,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser, userInput, String.format(EditMessages.MESSAGE_EDIT_MISSING_NAME,","lastModifiedDate":"2024-03-22"},{"lineNumber":57,"author":{"gitId":"jamessinmaojun"},"content":" EditMaintainerCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-22"},{"lineNumber":58,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":59,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":60,"author":{"gitId":"jamessinmaojun"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":61,"author":{"gitId":"jamessinmaojun"},"content":" public void parse_missingField_failure() {","lastModifiedDate":"2024-03-22"},{"lineNumber":62,"author":{"gitId":"jamessinmaojun"},"content":" // no field specified","lastModifiedDate":"2024-03-22"},{"lineNumber":63,"author":{"gitId":"jamessinmaojun"},"content":" String userInput \u003d EditCommand.COMMAND_WORD + \" \" + PREFIX_NAME;","lastModifiedDate":"2024-03-22"},{"lineNumber":64,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser, userInput, String.format(EditMessages.MESSAGE_EDIT_MISSING_FIELD,","lastModifiedDate":"2024-03-22"},{"lineNumber":65,"author":{"gitId":"jamessinmaojun"},"content":" EditMaintainerCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-22"},{"lineNumber":66,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":67,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":68,"author":{"gitId":"yleeyilin"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"yleeyilin"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"yleeyilin"},"content":" // invalid name","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"yleeyilin"},"content":" String userInput \u003d EditMaintainerCommand.COMMAND_WORD + \" \" + PREFIX_NAME + \" \"","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"yleeyilin"},"content":" + \" \" + PREFIX_FIELD + \"{\" + PHONE_DESC_AMY","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"yleeyilin"},"content":" + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"jamessinmaojun"},"content":" userInput, String.format(EditMessages.MESSAGE_EDIT_INVALID_NAME, Name.MESSAGE_CONSTRAINTS));","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"yleeyilin"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"yleeyilin"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"yleeyilin"},"content":" String userInput \u003d EditMaintainerCommand.COMMAND_WORD + \" \" + PREFIX_NAME + \"Tom Tan1\"","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"yleeyilin"},"content":" + \" \" + PREFIX_FIELD + \"{\" + INVALID_PHONE_DESC + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"jamessinmaojun"},"content":" String.format(EditMessages.MESSAGE_EDIT_INVALID_FIELD, Phone.MESSAGE_CONSTRAINTS)); // invalid phone","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"yleeyilin"},"content":" userInput \u003d EditMaintainerCommand.COMMAND_WORD + \" \" + PREFIX_NAME + \"Tom Tan1\"","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"yleeyilin"},"content":" + \" \" + PREFIX_FIELD + \"{\" + INVALID_EMAIL_DESC + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"jamessinmaojun"},"content":" String.format(EditMessages.MESSAGE_EDIT_INVALID_FIELD, Email.MESSAGE_CONSTRAINTS)); // invalid email","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"yleeyilin"},"content":" userInput \u003d EditMaintainerCommand.COMMAND_WORD + \" \" + PREFIX_NAME + \"Tom Tan1\"","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"yleeyilin"},"content":" + \" \" + PREFIX_FIELD + \"{\" + INVALID_ADDRESS_DESC + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":90,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"jamessinmaojun"},"content":" EditMessages.MESSAGE_EDIT_EMPTY_FIELD); // invalid address","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"yleeyilin"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"yleeyilin"},"content":" userInput \u003d EditMaintainerCommand.COMMAND_WORD + \" \" + PREFIX_NAME + \"Tom Tan1\"","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"yleeyilin"},"content":" + \" \" + PREFIX_FIELD + \"{\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"jamessinmaojun"},"content":" String.format(EditMessages.MESSAGE_EDIT_INVALID_FIELD, Phone.MESSAGE_CONSTRAINTS));","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"yleeyilin"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"yleeyilin"},"content":" userInput \u003d EditMaintainerCommand.COMMAND_WORD + \" \" + PREFIX_NAME + \"Tom Tan1\"","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"yleeyilin"},"content":" + \" \" + PREFIX_FIELD + \"{\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"yleeyilin"},"content":" + VALID_ADDRESS_AMY + VALID_PHONE_AMY + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"jamessinmaojun"},"content":" String.format(EditMessages.MESSAGE_EDIT_INVALID_NAME, Name.MESSAGE_CONSTRAINTS));","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"yleeyilin"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"yleeyilin"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":109,"author":{"gitId":"yleeyilin"},"content":" EditMaintainerDescriptor descriptor \u003d new EditMaintainerDescriptorBuilder().withName(\"Tom Tan1\")","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"yleeyilin"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"yleeyilin"},"content":" .withTags(VALID_TAG_MAINTAINER).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"yleeyilin"},"content":" EditMaintainerCommand expectedCommand \u003d new EditMaintainerCommand(new Name(\"Tom Tan1\"), descriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"yleeyilin"},"content":" String userInput \u003d EditMaintainerCommand.COMMAND_WORD + \" \" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"yleeyilin"},"content":" + \"Tom Tan1\" + \" \" + PREFIX_FIELD + \"{ \"","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"yleeyilin"},"content":" + PersonUtil.getEditMaintainerDescriptorDetails(descriptor) + \"}\";","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"yleeyilin"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"yleeyilin"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"yleeyilin"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"yleeyilin"},"content":" EditMaintainerDescriptor descriptor \u003d new EditMaintainerDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"yleeyilin"},"content":" .withEmail(VALID_EMAIL_AMY).withTags(VALID_TAG_MAINTAINER).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"yleeyilin"},"content":" EditMaintainerCommand expectedCommand \u003d new EditMaintainerCommand(ALICEMAINTAINER.getName(), descriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"yleeyilin"},"content":" String userInput \u003d EditMaintainerCommand.COMMAND_WORD + \" \" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"yleeyilin"},"content":" + ALICEMAINTAINER.getName() + \" \" + PREFIX_FIELD + \"{ \"","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"yleeyilin"},"content":" + PersonUtil.getEditMaintainerDescriptorDetails(descriptor) + \"}\";","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"yleeyilin"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":129,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":130,"author":{"gitId":"yleeyilin"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"yleeyilin"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"yleeyilin"},"content":" // phone","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"yleeyilin"},"content":" EditMaintainerDescriptor descriptor \u003d new EditMaintainerDescriptorBuilder()","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"yleeyilin"},"content":" .withPhone(VALID_PHONE_AMY).withTags(VALID_TAG_MAINTAINER).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":135,"author":{"gitId":"yleeyilin"},"content":" EditMaintainerCommand expectedCommand \u003d new EditMaintainerCommand(CARL.getName(), descriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":136,"author":{"gitId":"yleeyilin"},"content":" String userInput \u003d EditMaintainerCommand.COMMAND_WORD + \" \" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"yleeyilin"},"content":" + CARL.getName() + \" \" + PREFIX_FIELD + \"{ \"","lastModifiedDate":"2024-03-17"},{"lineNumber":138,"author":{"gitId":"yleeyilin"},"content":" + PersonUtil.getEditMaintainerDescriptorDetails(descriptor) + \"}\";","lastModifiedDate":"2024-03-17"},{"lineNumber":139,"author":{"gitId":"yleeyilin"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-17"},{"lineNumber":140,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":141,"author":{"gitId":"yleeyilin"},"content":" // email","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"yleeyilin"},"content":" descriptor \u003d new EditMaintainerDescriptorBuilder()","lastModifiedDate":"2024-03-17"},{"lineNumber":143,"author":{"gitId":"yleeyilin"},"content":" .withEmail(VALID_EMAIL_AMY).withTags(VALID_TAG_MAINTAINER).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":144,"author":{"gitId":"yleeyilin"},"content":" expectedCommand \u003d new EditMaintainerCommand(CARL.getName(), descriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":145,"author":{"gitId":"yleeyilin"},"content":" userInput \u003d EditMaintainerCommand.COMMAND_WORD + \" \" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"yleeyilin"},"content":" + CARL.getName() + \" \" + PREFIX_FIELD + \"{ \"","lastModifiedDate":"2024-03-17"},{"lineNumber":147,"author":{"gitId":"yleeyilin"},"content":" + PersonUtil.getEditMaintainerDescriptorDetails(descriptor) + \"}\";","lastModifiedDate":"2024-03-17"},{"lineNumber":148,"author":{"gitId":"yleeyilin"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-17"},{"lineNumber":149,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":150,"author":{"gitId":"yleeyilin"},"content":" // address","lastModifiedDate":"2024-03-17"},{"lineNumber":151,"author":{"gitId":"yleeyilin"},"content":" descriptor \u003d new EditMaintainerDescriptorBuilder().withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2024-03-17"},{"lineNumber":152,"author":{"gitId":"yleeyilin"},"content":" .withTags(VALID_TAG_MAINTAINER).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":153,"author":{"gitId":"yleeyilin"},"content":" expectedCommand \u003d new EditMaintainerCommand(CARL.getName(), descriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":154,"author":{"gitId":"yleeyilin"},"content":" userInput \u003d EditMaintainerCommand.COMMAND_WORD + \" \" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":155,"author":{"gitId":"yleeyilin"},"content":" + CARL.getName() + \" \" + PREFIX_FIELD + \"{ \"","lastModifiedDate":"2024-03-17"},{"lineNumber":156,"author":{"gitId":"yleeyilin"},"content":" + PersonUtil.getEditMaintainerDescriptorDetails(descriptor) + \"}\";","lastModifiedDate":"2024-03-17"},{"lineNumber":157,"author":{"gitId":"yleeyilin"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-17"},{"lineNumber":158,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":159,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":160,"author":{"gitId":"yleeyilin"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":161,"author":{"gitId":"yleeyilin"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2024-03-17"},{"lineNumber":162,"author":{"gitId":"yleeyilin"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2024-03-17"},{"lineNumber":163,"author":{"gitId":"yleeyilin"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2024-03-17"},{"lineNumber":164,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":165,"author":{"gitId":"yleeyilin"},"content":" // invalid followed by valid","lastModifiedDate":"2024-03-17"},{"lineNumber":166,"author":{"gitId":"yleeyilin"},"content":" String userInput \u003d EditMaintainerCommand.COMMAND_WORD + \" \" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":167,"author":{"gitId":"yleeyilin"},"content":" + CARL.getName() + \" \" + PREFIX_FIELD + \"{\"","lastModifiedDate":"2024-03-17"},{"lineNumber":168,"author":{"gitId":"yleeyilin"},"content":" + INVALID_PHONE_DESC + PHONE_DESC_BOB + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":169,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":170,"author":{"gitId":"yleeyilin"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2024-03-17"},{"lineNumber":171,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":172,"author":{"gitId":"yleeyilin"},"content":" // valid followed by invalid","lastModifiedDate":"2024-03-17"},{"lineNumber":173,"author":{"gitId":"yleeyilin"},"content":" userInput \u003d EditMaintainerCommand.COMMAND_WORD + \" \" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":174,"author":{"gitId":"yleeyilin"},"content":" + CARL.getName() + \" \" + PREFIX_FIELD + \"{\"","lastModifiedDate":"2024-03-17"},{"lineNumber":175,"author":{"gitId":"yleeyilin"},"content":" + PHONE_DESC_BOB + INVALID_PHONE_DESC + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":176,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":177,"author":{"gitId":"yleeyilin"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2024-03-17"},{"lineNumber":178,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":179,"author":{"gitId":"yleeyilin"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2024-03-17"},{"lineNumber":180,"author":{"gitId":"yleeyilin"},"content":" userInput \u003d EditMaintainerCommand.COMMAND_WORD + \" \" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":181,"author":{"gitId":"yleeyilin"},"content":" + CARL.getName() + \" \" + PREFIX_FIELD + \"{\"","lastModifiedDate":"2024-03-17"},{"lineNumber":182,"author":{"gitId":"yleeyilin"},"content":" + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2024-03-17"},{"lineNumber":183,"author":{"gitId":"yleeyilin"},"content":" + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":184,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":185,"author":{"gitId":"yleeyilin"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2024-03-17"},{"lineNumber":186,"author":{"gitId":"yleeyilin"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2024-03-17"},{"lineNumber":187,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":188,"author":{"gitId":"yleeyilin"},"content":" // multiple invalid values","lastModifiedDate":"2024-03-17"},{"lineNumber":189,"author":{"gitId":"yleeyilin"},"content":" userInput \u003d EditMaintainerCommand.COMMAND_WORD + \" \" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":190,"author":{"gitId":"yleeyilin"},"content":" + CARL.getName() + \" \" + PREFIX_FIELD + \"{\"","lastModifiedDate":"2024-03-17"},{"lineNumber":191,"author":{"gitId":"yleeyilin"},"content":" + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2024-03-17"},{"lineNumber":192,"author":{"gitId":"yleeyilin"},"content":" + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":193,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":194,"author":{"gitId":"yleeyilin"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2024-03-17"},{"lineNumber":195,"author":{"gitId":"yleeyilin"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2024-03-17"},{"lineNumber":196,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":197,"author":{"gitId":"yleeyilin"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"jamessinmaojun":34,"yleeyilin":163}},{"path":"src/test/java/seedu/address/logic/parser/EditStaffCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yleeyilin"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_STAFF;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FIELD;","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.testutil.TypicalPersons.ALICESTAFF;","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.testutil.TypicalPersons.CARL;","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"yleeyilin"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.logic.commands.EditStaffCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.logic.commands.EditStaffCommand.EditStaffDescriptor;","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.EditMessages;","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.Messages;","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.testutil.EditStaffDescriptorBuilder;","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"yleeyilin"},"content":"public class EditStaffCommandParserTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"yleeyilin"},"content":" private EditStaffCommandParser parser \u003d new EditStaffCommandParser();","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"yleeyilin"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"yleeyilin"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"yleeyilin"},"content":" // no field specified","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"yleeyilin"},"content":" String userInput \u003d EditStaffCommand.COMMAND_WORD + \" \" + PREFIX_NAME + \" \"","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"yleeyilin"},"content":" + \" \" + PREFIX_FIELD + \"{\" + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser, userInput, String.format(EditMessages.MESSAGE_EDIT_INVALID_NAME,","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"jamessinmaojun"},"content":" Name.MESSAGE_CONSTRAINTS));","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"jamessinmaojun"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"jamessinmaojun"},"content":" public void parse_missingName_failure() {","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"jamessinmaojun"},"content":" // no field specified","lastModifiedDate":"2024-03-22"},{"lineNumber":54,"author":{"gitId":"jamessinmaojun"},"content":" String userInput \u003d EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2024-03-22"},{"lineNumber":55,"author":{"gitId":"jamessinmaojun"},"content":" + \" \" + PREFIX_FIELD + \"{\" + \" }\";","lastModifiedDate":"2024-03-22"},{"lineNumber":56,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser, userInput, String.format(EditMessages.MESSAGE_EDIT_MISSING_NAME,","lastModifiedDate":"2024-03-22"},{"lineNumber":57,"author":{"gitId":"jamessinmaojun"},"content":" EditStaffCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-22"},{"lineNumber":58,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":59,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":60,"author":{"gitId":"jamessinmaojun"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":61,"author":{"gitId":"jamessinmaojun"},"content":" public void parse_missingField_failure() {","lastModifiedDate":"2024-03-22"},{"lineNumber":62,"author":{"gitId":"jamessinmaojun"},"content":" // no field specified","lastModifiedDate":"2024-03-22"},{"lineNumber":63,"author":{"gitId":"jamessinmaojun"},"content":" String userInput \u003d EditCommand.COMMAND_WORD + \" \" + PREFIX_NAME;","lastModifiedDate":"2024-03-22"},{"lineNumber":64,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser, userInput, String.format(EditMessages.MESSAGE_EDIT_MISSING_FIELD,","lastModifiedDate":"2024-03-22"},{"lineNumber":65,"author":{"gitId":"jamessinmaojun"},"content":" EditStaffCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-22"},{"lineNumber":66,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":67,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":68,"author":{"gitId":"yleeyilin"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"yleeyilin"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"yleeyilin"},"content":" // invalid name","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"yleeyilin"},"content":" String userInput \u003d EditStaffCommand.COMMAND_WORD + \" \" + PREFIX_NAME + \" \"","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"yleeyilin"},"content":" + \" \" + PREFIX_FIELD + \"{\" + PHONE_DESC_AMY","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"yleeyilin"},"content":" + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"jamessinmaojun"},"content":" userInput, String.format(EditMessages.MESSAGE_EDIT_INVALID_NAME, Name.MESSAGE_CONSTRAINTS));","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"yleeyilin"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"yleeyilin"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"yleeyilin"},"content":" String userInput \u003d EditStaffCommand.COMMAND_WORD + \" \" + PREFIX_NAME + \"Staff1\"","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"yleeyilin"},"content":" + \" \" + PREFIX_FIELD + \"{\" + INVALID_PHONE_DESC + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"jamessinmaojun"},"content":" String.format(EditMessages.MESSAGE_EDIT_INVALID_FIELD, Phone.MESSAGE_CONSTRAINTS)); // invalid phone","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"yleeyilin"},"content":" userInput \u003d EditStaffCommand.COMMAND_WORD + \" \" + PREFIX_NAME + \"Staff1\"","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"yleeyilin"},"content":" + \" \" + PREFIX_FIELD + \"{\" + INVALID_EMAIL_DESC + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"jamessinmaojun"},"content":" String.format(EditMessages.MESSAGE_EDIT_INVALID_FIELD, Email.MESSAGE_CONSTRAINTS)); // invalid email","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"yleeyilin"},"content":" userInput \u003d EditStaffCommand.COMMAND_WORD + \" \" + PREFIX_NAME + \"Staff1\"","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"yleeyilin"},"content":" + \" \" + PREFIX_FIELD + \"{\" + INVALID_ADDRESS_DESC + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":90,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"jamessinmaojun"},"content":" EditMessages.MESSAGE_EDIT_EMPTY_FIELD); // invalid address","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"yleeyilin"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"yleeyilin"},"content":" userInput \u003d EditStaffCommand.COMMAND_WORD + \" \" + PREFIX_NAME + \"Staff1\"","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"yleeyilin"},"content":" + \" \" + PREFIX_FIELD + \"{\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"jamessinmaojun"},"content":" String.format(EditMessages.MESSAGE_EDIT_INVALID_FIELD, Phone.MESSAGE_CONSTRAINTS));","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"yleeyilin"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"yleeyilin"},"content":" userInput \u003d EditStaffCommand.COMMAND_WORD + \" \" + PREFIX_NAME + \"Staff1\"","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"yleeyilin"},"content":" + \" \" + PREFIX_FIELD + \"{\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"yleeyilin"},"content":" + VALID_ADDRESS_AMY + VALID_PHONE_AMY + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"jamessinmaojun"},"content":" String.format(EditMessages.MESSAGE_EDIT_INVALID_NAME, Name.MESSAGE_CONSTRAINTS));","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"yleeyilin"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"yleeyilin"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":109,"author":{"gitId":"yleeyilin"},"content":" EditStaffDescriptor descriptor \u003d new EditStaffDescriptorBuilder().withName(\"Staff1\")","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"yleeyilin"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"yleeyilin"},"content":" .withTags(VALID_TAG_STAFF).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"yleeyilin"},"content":" EditStaffCommand expectedCommand \u003d new EditStaffCommand(new Name(\"Staff1\"), descriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"yleeyilin"},"content":" String userInput \u003d EditStaffCommand.COMMAND_WORD + \" \" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"yleeyilin"},"content":" + \"Staff1\" + \" \" + PREFIX_FIELD + \"{ \"","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"yleeyilin"},"content":" + PersonUtil.getEditStaffDescriptorDetails(descriptor) + \"}\";","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"yleeyilin"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"yleeyilin"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"yleeyilin"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"yleeyilin"},"content":" EditStaffDescriptor descriptor \u003d new EditStaffDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"yleeyilin"},"content":" .withEmail(VALID_EMAIL_AMY).withTags(VALID_TAG_STAFF).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"yleeyilin"},"content":" EditStaffCommand expectedCommand \u003d new EditStaffCommand(ALICESTAFF.getName(), descriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"yleeyilin"},"content":" String userInput \u003d EditStaffCommand.COMMAND_WORD + \" \" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"yleeyilin"},"content":" + ALICESTAFF.getName() + \" \" + PREFIX_FIELD + \"{ \"","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"yleeyilin"},"content":" + PersonUtil.getEditStaffDescriptorDetails(descriptor) + \"}\";","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"yleeyilin"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":129,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":130,"author":{"gitId":"yleeyilin"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"yleeyilin"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"yleeyilin"},"content":" // phone","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"yleeyilin"},"content":" EditStaffDescriptor descriptor \u003d new EditStaffDescriptorBuilder()","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"yleeyilin"},"content":" .withPhone(VALID_PHONE_AMY).withTags(VALID_TAG_STAFF).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":135,"author":{"gitId":"yleeyilin"},"content":" EditStaffCommand expectedCommand \u003d new EditStaffCommand(CARL.getName(), descriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":136,"author":{"gitId":"yleeyilin"},"content":" String userInput \u003d EditStaffCommand.COMMAND_WORD + \" \" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"yleeyilin"},"content":" + CARL.getName() + \" \" + PREFIX_FIELD + \"{ \"","lastModifiedDate":"2024-03-17"},{"lineNumber":138,"author":{"gitId":"yleeyilin"},"content":" + PersonUtil.getEditStaffDescriptorDetails(descriptor) + \"}\";","lastModifiedDate":"2024-03-17"},{"lineNumber":139,"author":{"gitId":"yleeyilin"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-17"},{"lineNumber":140,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":141,"author":{"gitId":"yleeyilin"},"content":" // email","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"yleeyilin"},"content":" descriptor \u003d new EditStaffDescriptorBuilder()","lastModifiedDate":"2024-03-17"},{"lineNumber":143,"author":{"gitId":"yleeyilin"},"content":" .withEmail(VALID_EMAIL_AMY).withTags(VALID_TAG_STAFF).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":144,"author":{"gitId":"yleeyilin"},"content":" expectedCommand \u003d new EditStaffCommand(CARL.getName(), descriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":145,"author":{"gitId":"yleeyilin"},"content":" userInput \u003d EditStaffCommand.COMMAND_WORD + \" \" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"yleeyilin"},"content":" + CARL.getName() + \" \" + PREFIX_FIELD + \"{ \"","lastModifiedDate":"2024-03-17"},{"lineNumber":147,"author":{"gitId":"yleeyilin"},"content":" + PersonUtil.getEditStaffDescriptorDetails(descriptor) + \"}\";","lastModifiedDate":"2024-03-17"},{"lineNumber":148,"author":{"gitId":"yleeyilin"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-17"},{"lineNumber":149,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":150,"author":{"gitId":"yleeyilin"},"content":" // address","lastModifiedDate":"2024-03-17"},{"lineNumber":151,"author":{"gitId":"yleeyilin"},"content":" descriptor \u003d new EditStaffDescriptorBuilder().withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2024-03-17"},{"lineNumber":152,"author":{"gitId":"yleeyilin"},"content":" .withTags(VALID_TAG_STAFF).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":153,"author":{"gitId":"yleeyilin"},"content":" expectedCommand \u003d new EditStaffCommand(CARL.getName(), descriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":154,"author":{"gitId":"yleeyilin"},"content":" userInput \u003d EditStaffCommand.COMMAND_WORD + \" \" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":155,"author":{"gitId":"yleeyilin"},"content":" + CARL.getName() + \" \" + PREFIX_FIELD + \"{ \"","lastModifiedDate":"2024-03-17"},{"lineNumber":156,"author":{"gitId":"yleeyilin"},"content":" + PersonUtil.getEditStaffDescriptorDetails(descriptor) + \"}\";","lastModifiedDate":"2024-03-17"},{"lineNumber":157,"author":{"gitId":"yleeyilin"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-17"},{"lineNumber":158,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":159,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":160,"author":{"gitId":"yleeyilin"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":161,"author":{"gitId":"yleeyilin"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2024-03-17"},{"lineNumber":162,"author":{"gitId":"yleeyilin"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2024-03-17"},{"lineNumber":163,"author":{"gitId":"yleeyilin"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2024-03-17"},{"lineNumber":164,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":165,"author":{"gitId":"yleeyilin"},"content":" // invalid followed by valid","lastModifiedDate":"2024-03-17"},{"lineNumber":166,"author":{"gitId":"yleeyilin"},"content":" String userInput \u003d EditStaffCommand.COMMAND_WORD + \" \" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":167,"author":{"gitId":"yleeyilin"},"content":" + CARL.getName() + \" \" + PREFIX_FIELD + \"{\"","lastModifiedDate":"2024-03-17"},{"lineNumber":168,"author":{"gitId":"yleeyilin"},"content":" + INVALID_PHONE_DESC + PHONE_DESC_BOB + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":169,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":170,"author":{"gitId":"yleeyilin"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2024-03-17"},{"lineNumber":171,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":172,"author":{"gitId":"yleeyilin"},"content":" // valid followed by invalid","lastModifiedDate":"2024-03-17"},{"lineNumber":173,"author":{"gitId":"yleeyilin"},"content":" userInput \u003d EditStaffCommand.COMMAND_WORD + \" \" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":174,"author":{"gitId":"yleeyilin"},"content":" + CARL.getName() + \" \" + PREFIX_FIELD + \"{\"","lastModifiedDate":"2024-03-17"},{"lineNumber":175,"author":{"gitId":"yleeyilin"},"content":" + PHONE_DESC_BOB + INVALID_PHONE_DESC + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":176,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":177,"author":{"gitId":"yleeyilin"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2024-03-17"},{"lineNumber":178,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":179,"author":{"gitId":"yleeyilin"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2024-03-17"},{"lineNumber":180,"author":{"gitId":"yleeyilin"},"content":" userInput \u003d EditStaffCommand.COMMAND_WORD + \" \" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":181,"author":{"gitId":"yleeyilin"},"content":" + CARL.getName() + \" \" + PREFIX_FIELD + \"{\"","lastModifiedDate":"2024-03-17"},{"lineNumber":182,"author":{"gitId":"yleeyilin"},"content":" + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2024-03-17"},{"lineNumber":183,"author":{"gitId":"yleeyilin"},"content":" + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":184,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":185,"author":{"gitId":"yleeyilin"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2024-03-17"},{"lineNumber":186,"author":{"gitId":"yleeyilin"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2024-03-17"},{"lineNumber":187,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":188,"author":{"gitId":"yleeyilin"},"content":" // multiple invalid values","lastModifiedDate":"2024-03-17"},{"lineNumber":189,"author":{"gitId":"yleeyilin"},"content":" userInput \u003d EditStaffCommand.COMMAND_WORD + \" \" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":190,"author":{"gitId":"yleeyilin"},"content":" + CARL.getName() + \" \" + PREFIX_FIELD + \"{\"","lastModifiedDate":"2024-03-17"},{"lineNumber":191,"author":{"gitId":"yleeyilin"},"content":" + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2024-03-17"},{"lineNumber":192,"author":{"gitId":"yleeyilin"},"content":" + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":193,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":194,"author":{"gitId":"yleeyilin"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2024-03-17"},{"lineNumber":195,"author":{"gitId":"yleeyilin"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2024-03-17"},{"lineNumber":196,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":197,"author":{"gitId":"yleeyilin"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"jamessinmaojun":34,"yleeyilin":163}},{"path":"src/test/java/seedu/address/logic/parser/EditSupplierCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yleeyilin"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_SUPPLIER;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FIELD;","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.testutil.TypicalPersons.ALICESUPPLIER;","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"yleeyilin"},"content":"import static seedu.address.testutil.TypicalPersons.CARL;","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"yleeyilin"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.logic.commands.EditSupplierCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.logic.commands.EditSupplierCommand.EditSupplierDescriptor;","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.EditMessages;","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.Messages;","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.testutil.EditSupplierDescriptorBuilder;","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"yleeyilin"},"content":"public class EditSupplierCommandParserTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"yleeyilin"},"content":" private EditSupplierCommandParser parser \u003d new EditSupplierCommandParser();","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"yleeyilin"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"yleeyilin"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"yleeyilin"},"content":" // no field specified","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"yleeyilin"},"content":" String userInput \u003d EditSupplierCommand.COMMAND_WORD + \" \" + PREFIX_NAME + \" \"","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"yleeyilin"},"content":" + \" \" + PREFIX_FIELD + \"{\" + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser, userInput, String.format(EditMessages.MESSAGE_EDIT_INVALID_NAME,","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"jamessinmaojun"},"content":" Name.MESSAGE_CONSTRAINTS));","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"jamessinmaojun"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"jamessinmaojun"},"content":" public void parse_missingName_failure() {","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"jamessinmaojun"},"content":" // no field specified","lastModifiedDate":"2024-03-22"},{"lineNumber":54,"author":{"gitId":"jamessinmaojun"},"content":" String userInput \u003d EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2024-03-22"},{"lineNumber":55,"author":{"gitId":"jamessinmaojun"},"content":" + \" \" + PREFIX_FIELD + \"{\" + \" }\";","lastModifiedDate":"2024-03-22"},{"lineNumber":56,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser, userInput, String.format(EditMessages.MESSAGE_EDIT_MISSING_NAME,","lastModifiedDate":"2024-03-22"},{"lineNumber":57,"author":{"gitId":"jamessinmaojun"},"content":" EditSupplierCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-22"},{"lineNumber":58,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":59,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":60,"author":{"gitId":"jamessinmaojun"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":61,"author":{"gitId":"jamessinmaojun"},"content":" public void parse_missingField_failure() {","lastModifiedDate":"2024-03-22"},{"lineNumber":62,"author":{"gitId":"jamessinmaojun"},"content":" // no field specified","lastModifiedDate":"2024-03-22"},{"lineNumber":63,"author":{"gitId":"jamessinmaojun"},"content":" String userInput \u003d EditCommand.COMMAND_WORD + \" \" + PREFIX_NAME;","lastModifiedDate":"2024-03-22"},{"lineNumber":64,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser, userInput, String.format(EditMessages.MESSAGE_EDIT_MISSING_FIELD,","lastModifiedDate":"2024-03-22"},{"lineNumber":65,"author":{"gitId":"jamessinmaojun"},"content":" EditSupplierCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-22"},{"lineNumber":66,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":67,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":68,"author":{"gitId":"yleeyilin"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"yleeyilin"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"yleeyilin"},"content":" // invalid name","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"yleeyilin"},"content":" String userInput \u003d EditSupplierCommand.COMMAND_WORD + \" \" + PREFIX_NAME + \" \"","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"yleeyilin"},"content":" + \" \" + PREFIX_FIELD + \"{\" + PHONE_DESC_AMY","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"yleeyilin"},"content":" + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"jamessinmaojun"},"content":" userInput, String.format(EditMessages.MESSAGE_EDIT_INVALID_NAME, Name.MESSAGE_CONSTRAINTS));","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"yleeyilin"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"yleeyilin"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"yleeyilin"},"content":" String userInput \u003d EditSupplierCommand.COMMAND_WORD + \" \" + PREFIX_NAME + \"Supplier1\"","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"yleeyilin"},"content":" + \" \" + PREFIX_FIELD + \"{\" + INVALID_PHONE_DESC + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"jamessinmaojun"},"content":" String.format(EditMessages.MESSAGE_EDIT_INVALID_FIELD, Phone.MESSAGE_CONSTRAINTS)); // invalid phone","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"yleeyilin"},"content":" userInput \u003d EditSupplierCommand.COMMAND_WORD + \" \" + PREFIX_NAME + \"Supplier1\"","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"yleeyilin"},"content":" + \" \" + PREFIX_FIELD + \"{\" + INVALID_EMAIL_DESC + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"jamessinmaojun"},"content":" String.format(EditMessages.MESSAGE_EDIT_INVALID_FIELD, Email.MESSAGE_CONSTRAINTS)); // invalid email","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"yleeyilin"},"content":" userInput \u003d EditSupplierCommand.COMMAND_WORD + \" \" + PREFIX_NAME + \"Supplier1\"","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"yleeyilin"},"content":" + \" \" + PREFIX_FIELD + \"{\" + INVALID_ADDRESS_DESC + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":90,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"jamessinmaojun"},"content":" EditMessages.MESSAGE_EDIT_EMPTY_FIELD); // invalid address","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"yleeyilin"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"yleeyilin"},"content":" userInput \u003d EditSupplierCommand.COMMAND_WORD + \" \" + PREFIX_NAME + \"Supplier1\"","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"yleeyilin"},"content":" + \" \" + PREFIX_FIELD + \"{\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"jamessinmaojun"},"content":" String.format(EditMessages.MESSAGE_EDIT_INVALID_FIELD, Phone.MESSAGE_CONSTRAINTS));","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"yleeyilin"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"yleeyilin"},"content":" userInput \u003d EditSupplierCommand.COMMAND_WORD + \" \" + PREFIX_NAME + \"Supplier1\"","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"yleeyilin"},"content":" + \" \" + PREFIX_FIELD + \"{\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"yleeyilin"},"content":" + VALID_ADDRESS_AMY + VALID_PHONE_AMY + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"jamessinmaojun"},"content":" String.format(EditMessages.MESSAGE_EDIT_INVALID_NAME, Name.MESSAGE_CONSTRAINTS));","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"yleeyilin"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"yleeyilin"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":109,"author":{"gitId":"yleeyilin"},"content":" EditSupplierDescriptor descriptor \u003d new EditSupplierDescriptorBuilder().withName(\"Supplier1\")","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"yleeyilin"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"yleeyilin"},"content":" .withTags(VALID_TAG_SUPPLIER).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"yleeyilin"},"content":" EditSupplierCommand expectedCommand \u003d new EditSupplierCommand(new Name(\"Supplier1\"), descriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"yleeyilin"},"content":" String userInput \u003d EditSupplierCommand.COMMAND_WORD + \" \" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"yleeyilin"},"content":" + \"Supplier1\" + \" \" + PREFIX_FIELD + \"{ \"","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"yleeyilin"},"content":" + PersonUtil.getEditSupplierDescriptorDetails(descriptor) + \"}\";","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"yleeyilin"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"yleeyilin"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"yleeyilin"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"yleeyilin"},"content":" EditSupplierDescriptor descriptor \u003d new EditSupplierDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"yleeyilin"},"content":" .withEmail(VALID_EMAIL_AMY).withTags(VALID_TAG_SUPPLIER).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"yleeyilin"},"content":" EditSupplierCommand expectedCommand \u003d new EditSupplierCommand(ALICESUPPLIER.getName(), descriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"yleeyilin"},"content":" String userInput \u003d EditSupplierCommand.COMMAND_WORD + \" \" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"yleeyilin"},"content":" + ALICESUPPLIER.getName() + \" \" + PREFIX_FIELD + \"{ \"","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"yleeyilin"},"content":" + PersonUtil.getEditSupplierDescriptorDetails(descriptor) + \"}\";","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"yleeyilin"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":129,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":130,"author":{"gitId":"yleeyilin"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"yleeyilin"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"yleeyilin"},"content":" // phone","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"yleeyilin"},"content":" EditSupplierDescriptor descriptor \u003d new EditSupplierDescriptorBuilder()","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"yleeyilin"},"content":" .withPhone(VALID_PHONE_AMY).withTags(VALID_TAG_SUPPLIER).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":135,"author":{"gitId":"yleeyilin"},"content":" EditSupplierCommand expectedCommand \u003d new EditSupplierCommand(CARL.getName(), descriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":136,"author":{"gitId":"yleeyilin"},"content":" String userInput \u003d EditSupplierCommand.COMMAND_WORD + \" \" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"yleeyilin"},"content":" + CARL.getName() + \" \" + PREFIX_FIELD + \"{ \"","lastModifiedDate":"2024-03-17"},{"lineNumber":138,"author":{"gitId":"yleeyilin"},"content":" + PersonUtil.getEditSupplierDescriptorDetails(descriptor) + \"}\";","lastModifiedDate":"2024-03-17"},{"lineNumber":139,"author":{"gitId":"yleeyilin"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-17"},{"lineNumber":140,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":141,"author":{"gitId":"yleeyilin"},"content":" // email","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"yleeyilin"},"content":" descriptor \u003d new EditSupplierDescriptorBuilder()","lastModifiedDate":"2024-03-17"},{"lineNumber":143,"author":{"gitId":"yleeyilin"},"content":" .withEmail(VALID_EMAIL_AMY).withTags(VALID_TAG_SUPPLIER).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":144,"author":{"gitId":"yleeyilin"},"content":" expectedCommand \u003d new EditSupplierCommand(CARL.getName(), descriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":145,"author":{"gitId":"yleeyilin"},"content":" userInput \u003d EditSupplierCommand.COMMAND_WORD + \" \" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"yleeyilin"},"content":" + CARL.getName() + \" \" + PREFIX_FIELD + \"{ \"","lastModifiedDate":"2024-03-17"},{"lineNumber":147,"author":{"gitId":"yleeyilin"},"content":" + PersonUtil.getEditSupplierDescriptorDetails(descriptor) + \"}\";","lastModifiedDate":"2024-03-17"},{"lineNumber":148,"author":{"gitId":"yleeyilin"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-17"},{"lineNumber":149,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":150,"author":{"gitId":"yleeyilin"},"content":" // address","lastModifiedDate":"2024-03-17"},{"lineNumber":151,"author":{"gitId":"yleeyilin"},"content":" descriptor \u003d new EditSupplierDescriptorBuilder().withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2024-03-17"},{"lineNumber":152,"author":{"gitId":"yleeyilin"},"content":" .withTags(VALID_TAG_SUPPLIER).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":153,"author":{"gitId":"yleeyilin"},"content":" expectedCommand \u003d new EditSupplierCommand(CARL.getName(), descriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":154,"author":{"gitId":"yleeyilin"},"content":" userInput \u003d EditSupplierCommand.COMMAND_WORD + \" \" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":155,"author":{"gitId":"yleeyilin"},"content":" + CARL.getName() + \" \" + PREFIX_FIELD + \"{ \"","lastModifiedDate":"2024-03-17"},{"lineNumber":156,"author":{"gitId":"yleeyilin"},"content":" + PersonUtil.getEditSupplierDescriptorDetails(descriptor) + \"}\";","lastModifiedDate":"2024-03-17"},{"lineNumber":157,"author":{"gitId":"yleeyilin"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-17"},{"lineNumber":158,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":159,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":160,"author":{"gitId":"yleeyilin"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":161,"author":{"gitId":"yleeyilin"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2024-03-17"},{"lineNumber":162,"author":{"gitId":"yleeyilin"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2024-03-17"},{"lineNumber":163,"author":{"gitId":"yleeyilin"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2024-03-17"},{"lineNumber":164,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":165,"author":{"gitId":"yleeyilin"},"content":" // invalid followed by valid","lastModifiedDate":"2024-03-17"},{"lineNumber":166,"author":{"gitId":"yleeyilin"},"content":" String userInput \u003d EditSupplierCommand.COMMAND_WORD + \" \" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":167,"author":{"gitId":"yleeyilin"},"content":" + CARL.getName() + \" \" + PREFIX_FIELD + \"{\"","lastModifiedDate":"2024-03-17"},{"lineNumber":168,"author":{"gitId":"yleeyilin"},"content":" + INVALID_PHONE_DESC + PHONE_DESC_BOB + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":169,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":170,"author":{"gitId":"yleeyilin"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2024-03-17"},{"lineNumber":171,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":172,"author":{"gitId":"yleeyilin"},"content":" // valid followed by invalid","lastModifiedDate":"2024-03-17"},{"lineNumber":173,"author":{"gitId":"yleeyilin"},"content":" userInput \u003d EditSupplierCommand.COMMAND_WORD + \" \" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":174,"author":{"gitId":"yleeyilin"},"content":" + CARL.getName() + \" \" + PREFIX_FIELD + \"{\"","lastModifiedDate":"2024-03-17"},{"lineNumber":175,"author":{"gitId":"yleeyilin"},"content":" + PHONE_DESC_BOB + INVALID_PHONE_DESC + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":176,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":177,"author":{"gitId":"yleeyilin"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2024-03-17"},{"lineNumber":178,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":179,"author":{"gitId":"yleeyilin"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2024-03-17"},{"lineNumber":180,"author":{"gitId":"yleeyilin"},"content":" userInput \u003d EditSupplierCommand.COMMAND_WORD + \" \" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":181,"author":{"gitId":"yleeyilin"},"content":" + CARL.getName() + \" \" + PREFIX_FIELD + \"{\"","lastModifiedDate":"2024-03-17"},{"lineNumber":182,"author":{"gitId":"yleeyilin"},"content":" + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2024-03-17"},{"lineNumber":183,"author":{"gitId":"yleeyilin"},"content":" + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":184,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":185,"author":{"gitId":"yleeyilin"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2024-03-17"},{"lineNumber":186,"author":{"gitId":"yleeyilin"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2024-03-17"},{"lineNumber":187,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":188,"author":{"gitId":"yleeyilin"},"content":" // multiple invalid values","lastModifiedDate":"2024-03-17"},{"lineNumber":189,"author":{"gitId":"yleeyilin"},"content":" userInput \u003d EditSupplierCommand.COMMAND_WORD + \" \" + PREFIX_NAME","lastModifiedDate":"2024-03-17"},{"lineNumber":190,"author":{"gitId":"yleeyilin"},"content":" + CARL.getName() + \" \" + PREFIX_FIELD + \"{\"","lastModifiedDate":"2024-03-17"},{"lineNumber":191,"author":{"gitId":"yleeyilin"},"content":" + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2024-03-17"},{"lineNumber":192,"author":{"gitId":"yleeyilin"},"content":" + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC + \" }\";","lastModifiedDate":"2024-03-17"},{"lineNumber":193,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":194,"author":{"gitId":"yleeyilin"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2024-03-17"},{"lineNumber":195,"author":{"gitId":"yleeyilin"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2024-03-17"},{"lineNumber":196,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":197,"author":{"gitId":"yleeyilin"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"jamessinmaojun":34,"yleeyilin":163}},{"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":"jamessinmaojun"},"content":"import static seedu.address.logic.messages.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-18"},{"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":"-"},"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":{"jamessinmaojun":1,"-":33}},{"path":"src/test/java/seedu/address/logic/parser/HelpCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-24"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2024-03-24"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"import static seedu.address.logic.messages.HelpMessages.MESSAGE_HELP_MISSING_COMMAND;","lastModifiedDate":"2024-03-24"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_HELP;","lastModifiedDate":"2024-03-24"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-24"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-24"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-24"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2024-03-24"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":"public class HelpCommandParserTest {","lastModifiedDate":"2024-03-24"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":" private HelpCommandParser parser \u003d new HelpCommandParser();","lastModifiedDate":"2024-03-24"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":" private String validCommand \u003d \"delete\";","lastModifiedDate":"2024-03-24"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":" private String invalidCommand \u003d \"poodle\";","lastModifiedDate":"2024-03-24"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":" public final String validHelpDesc \u003d \" \" + PREFIX_HELP + validCommand;","lastModifiedDate":"2024-03-24"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":" public final String invalidCommandHelpDesc \u003d \" \" + PREFIX_HELP + invalidCommand;","lastModifiedDate":"2024-03-24"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":22,"author":{"gitId":"jannaleong"},"content":" public void parse_validArgs_returnsNoteCommand() {","lastModifiedDate":"2024-03-24"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + validHelpDesc,","lastModifiedDate":"2024-03-24"},{"lineNumber":24,"author":{"gitId":"jannaleong"},"content":" new HelpCommand(validCommand));","lastModifiedDate":"2024-03-24"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":26,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":27,"author":{"gitId":"jannaleong"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":28,"author":{"gitId":"jannaleong"},"content":" public void parse_invalidCommand_throwsParseException() {","lastModifiedDate":"2024-03-24"},{"lineNumber":29,"author":{"gitId":"jannaleong"},"content":" assertParseFailure(parser, PREAMBLE_WHITESPACE + invalidCommandHelpDesc,","lastModifiedDate":"2024-03-24"},{"lineNumber":30,"author":{"gitId":"jannaleong"},"content":" String.format(HelpCommand.MESSAGE_CONSTRAINTS, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-24"},{"lineNumber":31,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":32,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":33,"author":{"gitId":"jannaleong"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":34,"author":{"gitId":"jannaleong"},"content":" public void parse_missingCommand_throwsParseException() {","lastModifiedDate":"2024-03-24"},{"lineNumber":35,"author":{"gitId":"jannaleong"},"content":" assertParseFailure(parser, PREAMBLE_WHITESPACE + \"/help ; command :\",","lastModifiedDate":"2024-03-24"},{"lineNumber":36,"author":{"gitId":"jannaleong"},"content":" String.format(MESSAGE_HELP_MISSING_COMMAND, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-24"},{"lineNumber":37,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":38,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-03-24"}],"authorContributionMap":{"jannaleong":38}},{"path":"src/test/java/seedu/address/logic/parser/NoteCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_DESC_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NOTE_DESC_BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":"import static seedu.address.logic.messages.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":"import seedu.address.logic.commands.NoteCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":"import seedu.address.model.person.Note;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":"public class NoteCommandParserTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":" private NoteCommandParser parser \u003d new NoteCommandParser();","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":" private Note validNote \u003d new Note(\"get kibble\");","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"jannaleong"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":" public void parse_validArgs_returnsNoteCommand() {","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"jannaleong"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + NOTE_DESC_BOB,","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":" new NoteCommand(BOB.getName(), validNote));","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"jannaleong"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"jannaleong"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"jannaleong"},"content":" assertParseFailure(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + INVALID_DESC_BOB,","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"jannaleong"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, NoteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"jannaleong":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.Address;","lastModifiedDate":"2017-05-22"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Commission;","lastModifiedDate":"2024-03-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-22"},{"lineNumber":20,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Employment;","lastModifiedDate":"2024-03-09"},{"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":"chiageng"},"content":"import seedu.address.model.person.Price;","lastModifiedDate":"2024-03-09"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Product;","lastModifiedDate":"2024-03-09"},{"lineNumber":25,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Salary;","lastModifiedDate":"2024-03-09"},{"lineNumber":26,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Skill;","lastModifiedDate":"2024-03-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-22"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2017-05-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2017-05-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2017-05-22"},{"lineNumber":35,"author":{"gitId":"chiageng"},"content":" private static final String INVALID_EMPLOYMENT \u003d \"invalid employment\";","lastModifiedDate":"2024-03-09"},{"lineNumber":36,"author":{"gitId":"chiageng"},"content":" private static final String INVALID_SALARY \u003d \"20\";","lastModifiedDate":"2024-03-09"},{"lineNumber":37,"author":{"gitId":"chiageng"},"content":" private static final String INVALID_PRODUCT \u003d \" \";","lastModifiedDate":"2024-03-09"},{"lineNumber":38,"author":{"gitId":"chiageng"},"content":" private static final String INVALID_PRICE \u003d \"20\";","lastModifiedDate":"2024-03-09"},{"lineNumber":39,"author":{"gitId":"chiageng"},"content":" private static final String INVALID_SKILL \u003d \" \";","lastModifiedDate":"2024-03-09"},{"lineNumber":40,"author":{"gitId":"chiageng"},"content":" private static final String INVALID_COMMISSION \u003d \"20\";","lastModifiedDate":"2024-03-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d \"123456\";","lastModifiedDate":"2017-05-22"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d \"123 Main Street #0505\";","lastModifiedDate":"2017-05-22"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":" private static final String VALID_EMPLOYMENT \u003d \"part-time\";","lastModifiedDate":"2024-03-09"},{"lineNumber":46,"author":{"gitId":"chiageng"},"content":" private static final String VALID_SALARY \u003d \"$20/hr\";","lastModifiedDate":"2024-03-09"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":" private static final String VALID_PRODUCT \u003d \"pooch food\";","lastModifiedDate":"2024-03-09"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":" private static final String VALID_PRICE \u003d \"$20/bag\";","lastModifiedDate":"2024-03-09"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":" private static final String VALID_SKILL \u003d \"train dog\";","lastModifiedDate":"2024-03-09"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":" private static final String VALID_COMMISSION \u003d \"$20/hr\";","lastModifiedDate":"2024-03-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_1 \u003d \"friend\";","lastModifiedDate":"2017-05-22"},{"lineNumber":52,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_2 \u003d \"neighbour\";","lastModifiedDate":"2017-05-22"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":54,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2017-05-25"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2017-05-25"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":88,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":94,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29"},{"lineNumber":95,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void parsePhone_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePhone((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void parsePhone_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhone(INVALID_PHONE));","lastModifiedDate":"2019-03-14"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":111,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-22"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(VALID_PHONE));","lastModifiedDate":"2017-05-30"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithWhitespace_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":117,"author":{"gitId":"-"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":118,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-30"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(phoneWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void parseAddress_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseAddress((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":128,"author":{"gitId":"-"},"content":" public void parseAddress_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseAddress(INVALID_ADDRESS));","lastModifiedDate":"2019-03-14"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":134,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-22"},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(VALID_ADDRESS));","lastModifiedDate":"2017-05-30"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":140,"author":{"gitId":"-"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_ADDRESS + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":141,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-30"},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(addressWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":145,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":146,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":147,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":150,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":151,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":156,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":157,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22"},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":161,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":162,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":163,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":164,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30"},{"lineNumber":165,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":168,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":169,"author":{"gitId":"chiageng"},"content":" public void parseEmployment_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":170,"author":{"gitId":"chiageng"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmployment((String) null));","lastModifiedDate":"2024-03-09"},{"lineNumber":171,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":172,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":173,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":174,"author":{"gitId":"chiageng"},"content":" public void parseEmployment_invalidValue_throwsParseException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":175,"author":{"gitId":"chiageng"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmployment(INVALID_EMPLOYMENT));","lastModifiedDate":"2024-03-09"},{"lineNumber":176,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":177,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":178,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":179,"author":{"gitId":"chiageng"},"content":" public void parseEmployment_validValueWithoutWhitespace_returnsEmployment() throws Exception {","lastModifiedDate":"2024-03-09"},{"lineNumber":180,"author":{"gitId":"chiageng"},"content":" Employment expectedEmployment \u003d new Employment(VALID_EMPLOYMENT);","lastModifiedDate":"2024-03-09"},{"lineNumber":181,"author":{"gitId":"chiageng"},"content":" assertEquals(expectedEmployment, ParserUtil.parseEmployment(VALID_EMPLOYMENT));","lastModifiedDate":"2024-03-09"},{"lineNumber":182,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":183,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":184,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":185,"author":{"gitId":"chiageng"},"content":" public void parseEmployment_validValueWithWhitespace_returnsTrimmedEmployment() throws Exception {","lastModifiedDate":"2024-03-09"},{"lineNumber":186,"author":{"gitId":"chiageng"},"content":" String employmentWithWhitespace \u003d WHITESPACE + VALID_EMPLOYMENT + WHITESPACE;","lastModifiedDate":"2024-03-09"},{"lineNumber":187,"author":{"gitId":"chiageng"},"content":" Employment expectedEmployment \u003d new Employment(VALID_EMPLOYMENT);","lastModifiedDate":"2024-03-09"},{"lineNumber":188,"author":{"gitId":"chiageng"},"content":" assertEquals(expectedEmployment, ParserUtil.parseEmployment(employmentWithWhitespace));","lastModifiedDate":"2024-03-09"},{"lineNumber":189,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":190,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":191,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":192,"author":{"gitId":"chiageng"},"content":" public void parseSalary_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":193,"author":{"gitId":"chiageng"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseSalary((String) null));","lastModifiedDate":"2024-03-09"},{"lineNumber":194,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":195,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":196,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":197,"author":{"gitId":"chiageng"},"content":" public void parseSalary_invalidValue_throwsParseException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":198,"author":{"gitId":"chiageng"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseSalary(INVALID_SALARY));","lastModifiedDate":"2024-03-09"},{"lineNumber":199,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":200,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":201,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":202,"author":{"gitId":"chiageng"},"content":" public void parseSalary_validValueWithoutWhitespace_returnsSalary() throws Exception {","lastModifiedDate":"2024-03-09"},{"lineNumber":203,"author":{"gitId":"chiageng"},"content":" Salary expectedSalary \u003d new Salary(VALID_SALARY);","lastModifiedDate":"2024-03-09"},{"lineNumber":204,"author":{"gitId":"chiageng"},"content":" assertEquals(expectedSalary, ParserUtil.parseSalary(VALID_SALARY));","lastModifiedDate":"2024-03-09"},{"lineNumber":205,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":206,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":207,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":208,"author":{"gitId":"chiageng"},"content":" public void parseSalary_validValueWithWhitespace_returnsTrimmedSalary() throws Exception {","lastModifiedDate":"2024-03-09"},{"lineNumber":209,"author":{"gitId":"chiageng"},"content":" String salaryWithWhitespace \u003d WHITESPACE + VALID_SALARY + WHITESPACE;","lastModifiedDate":"2024-03-09"},{"lineNumber":210,"author":{"gitId":"chiageng"},"content":" Salary expectedSalary \u003d new Salary(VALID_SALARY);","lastModifiedDate":"2024-03-09"},{"lineNumber":211,"author":{"gitId":"chiageng"},"content":" assertEquals(expectedSalary, ParserUtil.parseSalary(salaryWithWhitespace));","lastModifiedDate":"2024-03-09"},{"lineNumber":212,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":213,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":214,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":215,"author":{"gitId":"chiageng"},"content":" public void parseProduct_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":216,"author":{"gitId":"chiageng"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseSalary((String) null));","lastModifiedDate":"2024-03-09"},{"lineNumber":217,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":218,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":219,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":220,"author":{"gitId":"chiageng"},"content":" public void parseProduct_invalidValue_throwsParseException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":221,"author":{"gitId":"chiageng"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseProduct(INVALID_PRODUCT));","lastModifiedDate":"2024-03-09"},{"lineNumber":222,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":223,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":224,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":225,"author":{"gitId":"chiageng"},"content":" public void parseProduct_validValueWithoutWhitespace_returnsProduct() throws Exception {","lastModifiedDate":"2024-03-09"},{"lineNumber":226,"author":{"gitId":"chiageng"},"content":" Product expectedProduct \u003d new Product(VALID_PRODUCT);","lastModifiedDate":"2024-03-09"},{"lineNumber":227,"author":{"gitId":"chiageng"},"content":" assertEquals(expectedProduct, ParserUtil.parseProduct(VALID_PRODUCT));","lastModifiedDate":"2024-03-09"},{"lineNumber":228,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":229,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":230,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":231,"author":{"gitId":"chiageng"},"content":" public void parseProduct_validValueWithWhitespace_returnsTrimmedProduct() throws Exception {","lastModifiedDate":"2024-03-09"},{"lineNumber":232,"author":{"gitId":"chiageng"},"content":" String productWithWhitespace \u003d WHITESPACE + VALID_PRODUCT + WHITESPACE;","lastModifiedDate":"2024-03-09"},{"lineNumber":233,"author":{"gitId":"chiageng"},"content":" Product expectedProduct \u003d new Product(VALID_PRODUCT);","lastModifiedDate":"2024-03-09"},{"lineNumber":234,"author":{"gitId":"chiageng"},"content":" assertEquals(expectedProduct, ParserUtil.parseProduct(productWithWhitespace));","lastModifiedDate":"2024-03-09"},{"lineNumber":235,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":236,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":237,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":238,"author":{"gitId":"chiageng"},"content":" public void parsePrice_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":239,"author":{"gitId":"chiageng"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePrice((String) null));","lastModifiedDate":"2024-03-09"},{"lineNumber":240,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":241,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":242,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":243,"author":{"gitId":"chiageng"},"content":" public void parsePrice_invalidValue_throwsParseException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":244,"author":{"gitId":"chiageng"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePrice(INVALID_PRICE));","lastModifiedDate":"2024-03-09"},{"lineNumber":245,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":246,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":247,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":248,"author":{"gitId":"chiageng"},"content":" public void parsePrice_validValueWithoutWhitespace_returnsPrice() throws Exception {","lastModifiedDate":"2024-03-09"},{"lineNumber":249,"author":{"gitId":"chiageng"},"content":" Price expectedPrice \u003d new Price(VALID_PRICE);","lastModifiedDate":"2024-03-09"},{"lineNumber":250,"author":{"gitId":"chiageng"},"content":" assertEquals(expectedPrice, ParserUtil.parsePrice(VALID_PRICE));","lastModifiedDate":"2024-03-09"},{"lineNumber":251,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":252,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":253,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":254,"author":{"gitId":"chiageng"},"content":" public void parsePrice_validValueWithWhitespace_returnsTrimmedPrice() throws Exception {","lastModifiedDate":"2024-03-09"},{"lineNumber":255,"author":{"gitId":"chiageng"},"content":" String priceWithWhitespace \u003d WHITESPACE + VALID_PRICE + WHITESPACE;","lastModifiedDate":"2024-03-09"},{"lineNumber":256,"author":{"gitId":"chiageng"},"content":" Price expectedPrice \u003d new Price(VALID_PRICE);","lastModifiedDate":"2024-03-09"},{"lineNumber":257,"author":{"gitId":"chiageng"},"content":" assertEquals(expectedPrice, ParserUtil.parsePrice(priceWithWhitespace));","lastModifiedDate":"2024-03-09"},{"lineNumber":258,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":259,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":260,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":261,"author":{"gitId":"chiageng"},"content":" public void parseSkill_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":262,"author":{"gitId":"chiageng"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseSkill((String) null));","lastModifiedDate":"2024-03-09"},{"lineNumber":263,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":264,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":265,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":266,"author":{"gitId":"chiageng"},"content":" public void parseSkill_invalidValue_throwsParseException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":267,"author":{"gitId":"chiageng"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseSkill(INVALID_SKILL));","lastModifiedDate":"2024-03-09"},{"lineNumber":268,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":269,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":270,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":271,"author":{"gitId":"chiageng"},"content":" public void parseSkill_validValueWithoutWhitespace_returnsSkill() throws Exception {","lastModifiedDate":"2024-03-09"},{"lineNumber":272,"author":{"gitId":"chiageng"},"content":" Skill expectedSkill \u003d new Skill(VALID_SKILL);","lastModifiedDate":"2024-03-09"},{"lineNumber":273,"author":{"gitId":"chiageng"},"content":" assertEquals(expectedSkill, ParserUtil.parseSkill(VALID_SKILL));","lastModifiedDate":"2024-03-09"},{"lineNumber":274,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":275,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":276,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":277,"author":{"gitId":"chiageng"},"content":" public void parseSkill_validValueWithWhitespace_returnsTrimmedSkill() throws Exception {","lastModifiedDate":"2024-03-09"},{"lineNumber":278,"author":{"gitId":"chiageng"},"content":" String skillWithWhitespace \u003d WHITESPACE + VALID_SKILL + WHITESPACE;","lastModifiedDate":"2024-03-09"},{"lineNumber":279,"author":{"gitId":"chiageng"},"content":" Skill expectedSkill \u003d new Skill(VALID_SKILL);","lastModifiedDate":"2024-03-09"},{"lineNumber":280,"author":{"gitId":"chiageng"},"content":" assertEquals(expectedSkill, ParserUtil.parseSkill(skillWithWhitespace));","lastModifiedDate":"2024-03-09"},{"lineNumber":281,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":282,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":283,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":284,"author":{"gitId":"chiageng"},"content":" public void parseCommission_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":285,"author":{"gitId":"chiageng"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseCommission((String) null));","lastModifiedDate":"2024-03-09"},{"lineNumber":286,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":287,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":288,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":289,"author":{"gitId":"chiageng"},"content":" public void parseCommission_invalidValue_throwsParseException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":290,"author":{"gitId":"chiageng"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseCommission(INVALID_COMMISSION));","lastModifiedDate":"2024-03-09"},{"lineNumber":291,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":292,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":293,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":294,"author":{"gitId":"chiageng"},"content":" public void parseCommission_validValueWithoutWhitespace_returnsCommission() throws Exception {","lastModifiedDate":"2024-03-09"},{"lineNumber":295,"author":{"gitId":"chiageng"},"content":" Commission expectedCommission \u003d new Commission(VALID_COMMISSION);","lastModifiedDate":"2024-03-09"},{"lineNumber":296,"author":{"gitId":"chiageng"},"content":" assertEquals(expectedCommission, ParserUtil.parseCommission(VALID_COMMISSION));","lastModifiedDate":"2024-03-09"},{"lineNumber":297,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":298,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":299,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":300,"author":{"gitId":"chiageng"},"content":" public void parseCommission_validValueWithWhitespace_returnsTrimmedCommission() throws Exception {","lastModifiedDate":"2024-03-09"},{"lineNumber":301,"author":{"gitId":"chiageng"},"content":" String commissionWithWhitespace \u003d WHITESPACE + VALID_COMMISSION + WHITESPACE;","lastModifiedDate":"2024-03-09"},{"lineNumber":302,"author":{"gitId":"chiageng"},"content":" Commission expectedCommission \u003d new Commission(VALID_COMMISSION);","lastModifiedDate":"2024-03-09"},{"lineNumber":303,"author":{"gitId":"chiageng"},"content":" assertEquals(expectedCommission, ParserUtil.parseCommission(commissionWithWhitespace));","lastModifiedDate":"2024-03-09"},{"lineNumber":304,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":305,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":306,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":307,"author":{"gitId":"-"},"content":" public void parseTag_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":308,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":309,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":310,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":311,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":312,"author":{"gitId":"-"},"content":" public void parseTag_invalidValue_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":313,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTag(INVALID_TAG));","lastModifiedDate":"2019-03-23"},{"lineNumber":314,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":315,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":316,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":317,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithoutWhitespace_returnsTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":318,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30"},{"lineNumber":319,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(VALID_TAG_1));","lastModifiedDate":"2017-05-30"},{"lineNumber":320,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":321,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":322,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":323,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithWhitespace_returnsTrimmedTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":324,"author":{"gitId":"-"},"content":" String tagWithWhitespace \u003d WHITESPACE + VALID_TAG_1 + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":325,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30"},{"lineNumber":326,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(tagWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":327,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":328,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":329,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":330,"author":{"gitId":"-"},"content":" public void parseTags_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":331,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTags(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":332,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":333,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":334,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":335,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithInvalidTags_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":336,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, INVALID_TAG)));","lastModifiedDate":"2019-03-23"},{"lineNumber":337,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":338,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":339,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":340,"author":{"gitId":"-"},"content":" public void parseTags_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2017-05-22"},{"lineNumber":341,"author":{"gitId":"-"},"content":" assertTrue(ParserUtil.parseTags(Collections.emptyList()).isEmpty());","lastModifiedDate":"2017-05-22"},{"lineNumber":342,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":343,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":344,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":345,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithValidTags_returnsTagSet() throws Exception {","lastModifiedDate":"2017-05-22"},{"lineNumber":346,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e actualTagSet \u003d ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, VALID_TAG_2));","lastModifiedDate":"2017-05-22"},{"lineNumber":347,"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":348,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":349,"author":{"gitId":"-"},"content":" assertEquals(expectedTagSet, actualTagSet);","lastModifiedDate":"2017-05-22"},{"lineNumber":350,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":351,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22"}],"authorContributionMap":{"chiageng":156,"-":195}},{"path":"src/test/java/seedu/address/logic/parser/SearchCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Joshy837"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"Joshy837"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"Joshy837"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"Joshy837"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"Joshy837"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"Joshy837"},"content":"import seedu.address.logic.commands.SearchCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.SearchMessages;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"Joshy837"},"content":"import seedu.address.model.person.KeywordPredicate;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"Joshy837"},"content":"public class SearchCommandParserTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"Joshy837"},"content":" private SearchCommandParser parser \u003d new SearchCommandParser();","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"Joshy837"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"Joshy837"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser, \" \", SearchMessages.MESSAGE_SEARCH_MISSING_FIELD);","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"Joshy837"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"Joshy837"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"jamessinmaojun"},"content":" assertParseFailure(parser, \" ; name : Poochie\", SearchMessages.MESSAGE_SEARCH_INVALID_FIELD);","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"Joshy837"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"Joshy837"},"content":" public void parse_validArgs_returnsFindCommand() {","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"Joshy837"},"content":" String keyword \u003d \" ; name : Poochie\";","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"Joshy837"},"content":" ArgumentMultimap token \u003d ArgumentTokenizer.tokenize(keyword, PREFIX_NAME);","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"Joshy837"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"Joshy837"},"content":" SearchCommand expectedSearchCommand \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"Joshy837"},"content":" new SearchCommand(new KeywordPredicate(token));","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"Joshy837"},"content":" assertParseSuccess(parser, keyword, expectedSearchCommand);","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"Joshy837"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"Joshy837":34,"jamessinmaojun":3}},{"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":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-22"},{"lineNumber":6,"author":{"gitId":"jamessinmaojun"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"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":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"jamessinmaojun"},"content":"import static seedu.address.testutil.TypicalPersons.ALICEMAINTAINER;","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"jamessinmaojun"},"content":"import static seedu.address.testutil.TypicalPersons.ALICESTAFF;","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"jamessinmaojun"},"content":"import static seedu.address.testutil.TypicalPersons.ALICESUPPLIER;","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-31"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":22,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.logic.messages.EditMessages;","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"jamessinmaojun"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.testutil.AddressBookBuilder;","lastModifiedDate":"2017-05-31"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class ModelManagerTest {","lastModifiedDate":"2017-05-31"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2018-08-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertEquals(new GuiSettings(), modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertEquals(new AddressBook(), new AddressBook(modelManager.getAddressBook()));","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":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void setUserPrefs_nullUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setUserPrefs(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void setUserPrefs_validUserPrefs_copiesUserPrefs() {","lastModifiedDate":"2018-12-06"},{"lineNumber":46,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"address/book/file/path\"));","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1, 2, 3, 4));","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" modelManager.setUserPrefs(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Modifying userPrefs should not modify modelManager\u0027s userPrefs","lastModifiedDate":"2018-12-06"},{"lineNumber":53,"author":{"gitId":"-"},"content":" UserPrefs oldUserPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":54,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"new/address/book/file/path\"));","lastModifiedDate":"2018-12-06"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertEquals(oldUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setGuiSettings(null));","lastModifiedDate":"2019-03-23"},{"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 setGuiSettings_validGuiSettings_setsGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1, 2, 3, 4);","lastModifiedDate":"2018-11-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" modelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertEquals(guiSettings, modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setAddressBookFilePath(null));","lastModifiedDate":"2019-03-23"},{"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 setAddressBookFilePath_validPath_setsAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" Path path \u003d Paths.get(\"address/book/file/path\");","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" modelManager.setAddressBookFilePath(path);","lastModifiedDate":"2018-11-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertEquals(path, modelManager.getAddressBookFilePath());","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":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasPerson(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertFalse(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":"2018-08-06"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":94,"author":{"gitId":"-"},"content":" modelManager.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertTrue(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":105,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBookBuilder().withPerson(ALICE).withPerson(BENSON).build();","lastModifiedDate":"2017-07-19"},{"lineNumber":106,"author":{"gitId":"-"},"content":" AddressBook differentAddressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31"},{"lineNumber":107,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":109,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":110,"author":{"gitId":"-"},"content":" modelManager \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2018-08-06"},{"lineNumber":111,"author":{"gitId":"-"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2017-05-31"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":114,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":117,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":120,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":123,"author":{"gitId":"-"},"content":" // different addressBook -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(differentAddressBook, userPrefs)));","lastModifiedDate":"2017-05-31"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":126,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":" String[] keywords \u003d ALICE.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-19"},{"lineNumber":128,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(keywords)));","lastModifiedDate":"2017-06-12"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, userPrefs)));","lastModifiedDate":"2017-05-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":131,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2017-08-05"},{"lineNumber":132,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":134,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27"},{"lineNumber":135,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":136,"author":{"gitId":"-"},"content":" differentUserPrefs.setAddressBookFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2018-08-09"},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, differentUserPrefs)));","lastModifiedDate":"2018-11-27"},{"lineNumber":138,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":139,"author":{"gitId":"yleeyilin"},"content":" // finds a valid person by name","lastModifiedDate":"2024-03-17"},{"lineNumber":140,"author":{"gitId":"yleeyilin"},"content":" try {","lastModifiedDate":"2024-03-18"},{"lineNumber":141,"author":{"gitId":"yleeyilin"},"content":" assertEquals(ALICE, modelManagerCopy.findByName(ALICE.getName()));","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"yleeyilin"},"content":" } catch (CommandException e) {","lastModifiedDate":"2024-03-18"},{"lineNumber":143,"author":{"gitId":"yleeyilin"},"content":" e.printStackTrace();","lastModifiedDate":"2024-03-18"},{"lineNumber":144,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":146,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":147,"author":{"gitId":"jamessinmaojun"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":148,"author":{"gitId":"jamessinmaojun"},"content":" public void findByName_success() {","lastModifiedDate":"2024-03-22"},{"lineNumber":149,"author":{"gitId":"jamessinmaojun"},"content":" AddressBook addressBook \u003d new AddressBookBuilder().withPerson(ALICE).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":150,"author":{"gitId":"jamessinmaojun"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2024-03-22"},{"lineNumber":151,"author":{"gitId":"jamessinmaojun"},"content":" modelManager \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2024-03-22"},{"lineNumber":152,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":153,"author":{"gitId":"jamessinmaojun"},"content":" Name nameToFind \u003d ALICE.getName();","lastModifiedDate":"2024-03-22"},{"lineNumber":154,"author":{"gitId":"jamessinmaojun"},"content":" Name nameFound \u003d new Name(\"Not Alice Pauline\");","lastModifiedDate":"2024-03-22"},{"lineNumber":155,"author":{"gitId":"jamessinmaojun"},"content":" try {","lastModifiedDate":"2024-03-22"},{"lineNumber":156,"author":{"gitId":"jamessinmaojun"},"content":" nameFound \u003d modelManager.findByName(nameToFind).getName();","lastModifiedDate":"2024-03-22"},{"lineNumber":157,"author":{"gitId":"jamessinmaojun"},"content":" } catch (CommandException e) {","lastModifiedDate":"2024-03-22"},{"lineNumber":158,"author":{"gitId":"jamessinmaojun"},"content":" fail();","lastModifiedDate":"2024-03-22"},{"lineNumber":159,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":160,"author":{"gitId":"jamessinmaojun"},"content":" assertEquals(nameToFind, nameFound);","lastModifiedDate":"2024-03-22"},{"lineNumber":161,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":162,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":163,"author":{"gitId":"jamessinmaojun"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":164,"author":{"gitId":"jamessinmaojun"},"content":" public void findByNameFailure_throwsCommandException() {","lastModifiedDate":"2024-03-22"},{"lineNumber":165,"author":{"gitId":"jamessinmaojun"},"content":" Name nameToFind \u003d ALICE.getName();","lastModifiedDate":"2024-03-22"},{"lineNumber":166,"author":{"gitId":"jamessinmaojun"},"content":" assertThrows(CommandException.class,","lastModifiedDate":"2024-03-22"},{"lineNumber":167,"author":{"gitId":"jamessinmaojun"},"content":" EditMessages.MESSAGE_INVALID_EDIT_PERSON, () -\u003e modelManager.findByName(nameToFind));","lastModifiedDate":"2024-03-22"},{"lineNumber":168,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":169,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":170,"author":{"gitId":"jamessinmaojun"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":171,"author":{"gitId":"jamessinmaojun"},"content":" public void findMaintainerByName_success() {","lastModifiedDate":"2024-03-22"},{"lineNumber":172,"author":{"gitId":"jamessinmaojun"},"content":" AddressBook addressBook \u003d new AddressBookBuilder().withPerson(ALICEMAINTAINER).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":173,"author":{"gitId":"jamessinmaojun"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2024-03-22"},{"lineNumber":174,"author":{"gitId":"jamessinmaojun"},"content":" modelManager \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2024-03-22"},{"lineNumber":175,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":176,"author":{"gitId":"jamessinmaojun"},"content":" Name nameToFind \u003d ALICEMAINTAINER.getName();","lastModifiedDate":"2024-03-22"},{"lineNumber":177,"author":{"gitId":"jamessinmaojun"},"content":" Name nameFound \u003d new Name(\"Not Alice Pauline\");","lastModifiedDate":"2024-03-22"},{"lineNumber":178,"author":{"gitId":"jamessinmaojun"},"content":" try {","lastModifiedDate":"2024-03-22"},{"lineNumber":179,"author":{"gitId":"jamessinmaojun"},"content":" nameFound \u003d modelManager.findMaintainerByName(nameToFind).getName();","lastModifiedDate":"2024-03-22"},{"lineNumber":180,"author":{"gitId":"jamessinmaojun"},"content":" } catch (CommandException e) {","lastModifiedDate":"2024-03-22"},{"lineNumber":181,"author":{"gitId":"jamessinmaojun"},"content":" fail();","lastModifiedDate":"2024-03-22"},{"lineNumber":182,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":183,"author":{"gitId":"jamessinmaojun"},"content":" assertEquals(nameToFind, nameFound);","lastModifiedDate":"2024-03-22"},{"lineNumber":184,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":185,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":186,"author":{"gitId":"jamessinmaojun"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":187,"author":{"gitId":"jamessinmaojun"},"content":" public void findMaintainerByNameFailure_throwsCommandException() {","lastModifiedDate":"2024-03-22"},{"lineNumber":188,"author":{"gitId":"jamessinmaojun"},"content":" Name nameToFind \u003d ALICEMAINTAINER.getName();","lastModifiedDate":"2024-03-22"},{"lineNumber":189,"author":{"gitId":"jamessinmaojun"},"content":" assertThrows(CommandException.class,","lastModifiedDate":"2024-03-22"},{"lineNumber":190,"author":{"gitId":"jamessinmaojun"},"content":" EditMessages.MESSAGE_INVALID_EDIT_MAINTAINER, () -\u003e modelManager.findMaintainerByName(nameToFind));","lastModifiedDate":"2024-03-22"},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":192,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":193,"author":{"gitId":"jamessinmaojun"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":194,"author":{"gitId":"jamessinmaojun"},"content":" public void findStaffByName_success() {","lastModifiedDate":"2024-03-22"},{"lineNumber":195,"author":{"gitId":"jamessinmaojun"},"content":" AddressBook addressBook \u003d new AddressBookBuilder().withPerson(ALICESTAFF).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":196,"author":{"gitId":"jamessinmaojun"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2024-03-22"},{"lineNumber":197,"author":{"gitId":"jamessinmaojun"},"content":" modelManager \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2024-03-22"},{"lineNumber":198,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":199,"author":{"gitId":"jamessinmaojun"},"content":" Name nameToFind \u003d ALICESTAFF.getName();","lastModifiedDate":"2024-03-22"},{"lineNumber":200,"author":{"gitId":"jamessinmaojun"},"content":" Name nameFound \u003d new Name(\"Not Alice Pauline\");","lastModifiedDate":"2024-03-22"},{"lineNumber":201,"author":{"gitId":"jamessinmaojun"},"content":" try {","lastModifiedDate":"2024-03-22"},{"lineNumber":202,"author":{"gitId":"jamessinmaojun"},"content":" nameFound \u003d modelManager.findStaffByName(nameToFind).getName();","lastModifiedDate":"2024-03-22"},{"lineNumber":203,"author":{"gitId":"jamessinmaojun"},"content":" } catch (CommandException e) {","lastModifiedDate":"2024-03-22"},{"lineNumber":204,"author":{"gitId":"jamessinmaojun"},"content":" fail();","lastModifiedDate":"2024-03-22"},{"lineNumber":205,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":206,"author":{"gitId":"jamessinmaojun"},"content":" assertEquals(nameToFind, nameFound);","lastModifiedDate":"2024-03-22"},{"lineNumber":207,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":208,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":209,"author":{"gitId":"jamessinmaojun"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":210,"author":{"gitId":"jamessinmaojun"},"content":" public void findStaffByNameFailure_throwsCommandException() {","lastModifiedDate":"2024-03-22"},{"lineNumber":211,"author":{"gitId":"jamessinmaojun"},"content":" Name nameToFind \u003d ALICESTAFF.getName();","lastModifiedDate":"2024-03-22"},{"lineNumber":212,"author":{"gitId":"jamessinmaojun"},"content":" assertThrows(CommandException.class,","lastModifiedDate":"2024-03-22"},{"lineNumber":213,"author":{"gitId":"jamessinmaojun"},"content":" EditMessages.MESSAGE_INVALID_EDIT_STAFF, () -\u003e modelManager.findStaffByName(nameToFind));","lastModifiedDate":"2024-03-22"},{"lineNumber":214,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":215,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":216,"author":{"gitId":"jamessinmaojun"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":217,"author":{"gitId":"jamessinmaojun"},"content":" public void findSupplierByName_success() {","lastModifiedDate":"2024-03-22"},{"lineNumber":218,"author":{"gitId":"jamessinmaojun"},"content":" AddressBook addressBook \u003d new AddressBookBuilder().withPerson(ALICESUPPLIER).build();","lastModifiedDate":"2024-03-22"},{"lineNumber":219,"author":{"gitId":"jamessinmaojun"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2024-03-22"},{"lineNumber":220,"author":{"gitId":"jamessinmaojun"},"content":" modelManager \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2024-03-22"},{"lineNumber":221,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":222,"author":{"gitId":"jamessinmaojun"},"content":" Name nameToFind \u003d ALICESUPPLIER.getName();","lastModifiedDate":"2024-03-22"},{"lineNumber":223,"author":{"gitId":"jamessinmaojun"},"content":" Name nameFound \u003d new Name(\"Not Alice Pauline\");","lastModifiedDate":"2024-03-22"},{"lineNumber":224,"author":{"gitId":"jamessinmaojun"},"content":" try {","lastModifiedDate":"2024-03-22"},{"lineNumber":225,"author":{"gitId":"jamessinmaojun"},"content":" nameFound \u003d modelManager.findSupplierByName(nameToFind).getName();","lastModifiedDate":"2024-03-22"},{"lineNumber":226,"author":{"gitId":"jamessinmaojun"},"content":" } catch (CommandException e) {","lastModifiedDate":"2024-03-22"},{"lineNumber":227,"author":{"gitId":"jamessinmaojun"},"content":" fail();","lastModifiedDate":"2024-03-22"},{"lineNumber":228,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":229,"author":{"gitId":"jamessinmaojun"},"content":" assertEquals(nameToFind, nameFound);","lastModifiedDate":"2024-03-22"},{"lineNumber":230,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":231,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":232,"author":{"gitId":"jamessinmaojun"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":233,"author":{"gitId":"jamessinmaojun"},"content":" public void findSupplierByNameFailure_throwsCommandException() {","lastModifiedDate":"2024-03-22"},{"lineNumber":234,"author":{"gitId":"jamessinmaojun"},"content":" Name nameToFind \u003d ALICESUPPLIER.getName();","lastModifiedDate":"2024-03-22"},{"lineNumber":235,"author":{"gitId":"jamessinmaojun"},"content":" assertThrows(CommandException.class,","lastModifiedDate":"2024-03-22"},{"lineNumber":236,"author":{"gitId":"jamessinmaojun"},"content":" EditMessages.MESSAGE_INVALID_EDIT_SUPPLIER, () -\u003e modelManager.findSupplierByName(nameToFind));","lastModifiedDate":"2024-03-22"},{"lineNumber":237,"author":{"gitId":"jamessinmaojun"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":238,"author":{"gitId":"jamessinmaojun"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":239,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31"}],"authorContributionMap":{"jamessinmaojun":98,"-":133,"yleeyilin":8}},{"path":"src/test/java/seedu/address/model/person/CommissionTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chiageng"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-09"},{"lineNumber":2,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":3,"author":{"gitId":"chiageng"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-09"},{"lineNumber":4,"author":{"gitId":"chiageng"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-09"},{"lineNumber":5,"author":{"gitId":"chiageng"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-09"},{"lineNumber":6,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":7,"author":{"gitId":"chiageng"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-09"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":"public class CommissionTest {","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":13,"author":{"gitId":"chiageng"},"content":" assertThrows(NullPointerException.class, () -\u003e new Commission(null));","lastModifiedDate":"2024-03-09"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":" public void constructor_invalidCommission_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":" String invalidCommission \u003d \"20/hr\";","lastModifiedDate":"2024-03-09"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Commission(invalidCommission));","lastModifiedDate":"2024-03-09"},{"lineNumber":20,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":23,"author":{"gitId":"chiageng"},"content":" public void isValidCommission() {","lastModifiedDate":"2024-03-09"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":" // null commission","lastModifiedDate":"2024-03-09"},{"lineNumber":25,"author":{"gitId":"chiageng"},"content":" assertThrows(NullPointerException.class, () -\u003e Commission.isValidCommission(null));","lastModifiedDate":"2024-03-09"},{"lineNumber":26,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":27,"author":{"gitId":"chiageng"},"content":" // invalid commission","lastModifiedDate":"2024-03-09"},{"lineNumber":28,"author":{"gitId":"chiageng"},"content":" assertFalse(Commission.isValidCommission(\"\")); // empty string","lastModifiedDate":"2024-03-09"},{"lineNumber":29,"author":{"gitId":"chiageng"},"content":" assertFalse(Commission.isValidCommission(\" \")); // spaces only","lastModifiedDate":"2024-03-09"},{"lineNumber":30,"author":{"gitId":"chiageng"},"content":" assertFalse(Commission.isValidCommission(\"50\"));","lastModifiedDate":"2024-03-09"},{"lineNumber":31,"author":{"gitId":"chiageng"},"content":" assertFalse(Commission.isValidCommission(\"50/hr\"));","lastModifiedDate":"2024-03-09"},{"lineNumber":32,"author":{"gitId":"chiageng"},"content":" assertFalse(Commission.isValidCommission(\"$50\"));","lastModifiedDate":"2024-03-09"},{"lineNumber":33,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":34,"author":{"gitId":"chiageng"},"content":" // valid commission","lastModifiedDate":"2024-03-09"},{"lineNumber":35,"author":{"gitId":"chiageng"},"content":" assertTrue(Commission.isValidCommission(\"$500/hr\")); // exactly 3 numbers","lastModifiedDate":"2024-03-09"},{"lineNumber":36,"author":{"gitId":"chiageng"},"content":" assertTrue(Commission.isValidCommission(\"$50/hr\"));","lastModifiedDate":"2024-03-09"},{"lineNumber":37,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":38,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":39,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":40,"author":{"gitId":"chiageng"},"content":" public void equals() {","lastModifiedDate":"2024-03-09"},{"lineNumber":41,"author":{"gitId":"chiageng"},"content":" Commission commission \u003d new Commission(\"$50/hr\");","lastModifiedDate":"2024-03-09"},{"lineNumber":42,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":43,"author":{"gitId":"chiageng"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-09"},{"lineNumber":44,"author":{"gitId":"chiageng"},"content":" assertTrue(commission.equals(new Commission(\"$50/hr\")));","lastModifiedDate":"2024-03-09"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":46,"author":{"gitId":"chiageng"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-09"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":" assertTrue(commission.equals(commission));","lastModifiedDate":"2024-03-09"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":" assertFalse(commission.equals(null));","lastModifiedDate":"2024-03-09"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":53,"author":{"gitId":"chiageng"},"content":" assertFalse(commission.equals(\"$50/hr\"));","lastModifiedDate":"2024-03-09"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":55,"author":{"gitId":"chiageng"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":56,"author":{"gitId":"chiageng"},"content":" assertFalse(commission.equals(new Commission(\"$60/hr\")));","lastModifiedDate":"2024-03-09"},{"lineNumber":57,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":58,"author":{"gitId":"chiageng"},"content":"}","lastModifiedDate":"2024-03-09"}],"authorContributionMap":{"chiageng":58}},{"path":"src/test/java/seedu/address/model/person/EmploymentTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chiageng"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-09"},{"lineNumber":2,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":3,"author":{"gitId":"chiageng"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-09"},{"lineNumber":4,"author":{"gitId":"chiageng"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-09"},{"lineNumber":5,"author":{"gitId":"chiageng"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-09"},{"lineNumber":6,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":7,"author":{"gitId":"chiageng"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-09"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":"public class EmploymentTest {","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":13,"author":{"gitId":"chiageng"},"content":" assertThrows(NullPointerException.class, () -\u003e new Name(null));","lastModifiedDate":"2024-03-09"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":" public void constructor_invalidEmployment_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":" String invalidEmployment \u003d \"\";","lastModifiedDate":"2024-03-09"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Employment(invalidEmployment));","lastModifiedDate":"2024-03-09"},{"lineNumber":20,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":23,"author":{"gitId":"chiageng"},"content":" public void isValidEmployment() {","lastModifiedDate":"2024-03-09"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":" // null Employment","lastModifiedDate":"2024-03-09"},{"lineNumber":25,"author":{"gitId":"chiageng"},"content":" assertThrows(NullPointerException.class, () -\u003e Employment.isValidEmployment(null));","lastModifiedDate":"2024-03-09"},{"lineNumber":26,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":27,"author":{"gitId":"chiageng"},"content":" // invalid Employment","lastModifiedDate":"2024-03-09"},{"lineNumber":28,"author":{"gitId":"chiageng"},"content":" assertFalse(Employment.isValidEmployment(\"\")); // empty string","lastModifiedDate":"2024-03-09"},{"lineNumber":29,"author":{"gitId":"chiageng"},"content":" assertFalse(Employment.isValidEmployment(\" \")); // spaces only","lastModifiedDate":"2024-03-09"},{"lineNumber":30,"author":{"gitId":"chiageng"},"content":" assertFalse(Employment.isValidEmployment(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2024-03-09"},{"lineNumber":31,"author":{"gitId":"chiageng"},"content":" assertFalse(Employment.isValidEmployment(\"peter*\")); // contains non-alphanumeric characters","lastModifiedDate":"2024-03-09"},{"lineNumber":32,"author":{"gitId":"chiageng"},"content":" assertFalse(Employment.isValidEmployment(\"other\"));","lastModifiedDate":"2024-03-09"},{"lineNumber":33,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":34,"author":{"gitId":"chiageng"},"content":" // valid Employment","lastModifiedDate":"2024-03-09"},{"lineNumber":35,"author":{"gitId":"chiageng"},"content":" assertTrue(Employment.isValidEmployment(\"part-time\"));","lastModifiedDate":"2024-03-09"},{"lineNumber":36,"author":{"gitId":"chiageng"},"content":" assertTrue(Employment.isValidEmployment(\"full-time\"));","lastModifiedDate":"2024-03-09"},{"lineNumber":37,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":38,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":39,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":40,"author":{"gitId":"chiageng"},"content":" public void equals() {","lastModifiedDate":"2024-03-09"},{"lineNumber":41,"author":{"gitId":"chiageng"},"content":" Employment employment \u003d new Employment(\"part-time\");","lastModifiedDate":"2024-03-09"},{"lineNumber":42,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":43,"author":{"gitId":"chiageng"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-09"},{"lineNumber":44,"author":{"gitId":"chiageng"},"content":" assertTrue(employment.equals(new Employment(\"part-time\")));","lastModifiedDate":"2024-03-09"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":46,"author":{"gitId":"chiageng"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-09"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":" assertTrue(employment.equals(employment));","lastModifiedDate":"2024-03-09"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":" assertFalse(employment.equals(null));","lastModifiedDate":"2024-03-09"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":53,"author":{"gitId":"chiageng"},"content":" assertFalse(employment.equals(\"part-time\"));","lastModifiedDate":"2024-03-09"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":55,"author":{"gitId":"chiageng"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":56,"author":{"gitId":"chiageng"},"content":" assertFalse(employment.equals(new Employment(\"full-time\")));","lastModifiedDate":"2024-03-09"},{"lineNumber":57,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":58,"author":{"gitId":"chiageng"},"content":"}","lastModifiedDate":"2024-03-09"}],"authorContributionMap":{"chiageng":58}},{"path":"src/test/java/seedu/address/model/person/KeywordPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Joshy837"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"Joshy837"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"Joshy837"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"Joshy837"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"Joshy837"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"Joshy837"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"Joshy837"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COMMISSION;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"Joshy837"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"Joshy837"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMPLOYMENT;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"Joshy837"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"Joshy837"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"Joshy837"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PRICE;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"Joshy837"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PRODUCT;","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"Joshy837"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SALARY;","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"Joshy837"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SKILL;","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"Joshy837"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"Joshy837"},"content":"import seedu.address.logic.parser.ArgumentMultimap;","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"Joshy837"},"content":"import seedu.address.logic.parser.ArgumentTokenizer;","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"Joshy837"},"content":"import seedu.address.testutil.MaintainerBuilder;","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"Joshy837"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"Joshy837"},"content":"import seedu.address.testutil.StaffBuilder;","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"Joshy837"},"content":"import seedu.address.testutil.SupplierBuilder;","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"Joshy837"},"content":"public class KeywordPredicateTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"Joshy837"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"Joshy837"},"content":" public void equals() {","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"Joshy837"},"content":" String firstKeyword \u003d \" ; name : Poochie\";","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"Joshy837"},"content":" ArgumentMultimap firstToken \u003d ArgumentTokenizer.tokenize(firstKeyword, PREFIX_NAME);","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"Joshy837"},"content":" String secondKeyword \u003d \" ; product : Dog Food\";","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"Joshy837"},"content":" ArgumentMultimap secondToken \u003d ArgumentTokenizer.tokenize(secondKeyword, PREFIX_NAME);","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"Joshy837"},"content":" KeywordPredicate firstPredicate \u003d new KeywordPredicate(firstToken);","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"Joshy837"},"content":" KeywordPredicate secondPredicate \u003d new KeywordPredicate(secondToken);","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"Joshy837"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"Joshy837"},"content":" assertEquals(firstPredicate, firstPredicate);","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"Joshy837"},"content":" assertEquals(secondPredicate, secondPredicate);","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"Joshy837"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"Joshy837"},"content":" KeywordPredicate firstPredicateCopy \u003d new KeywordPredicate(firstToken);","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"Joshy837"},"content":" assertEquals(firstPredicate, firstPredicateCopy);","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"Joshy837"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"Joshy837"},"content":" assertNotEquals(1, firstPredicate);","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"Joshy837"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"Joshy837"},"content":" assertNotEquals(null, firstPredicate);","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"Joshy837"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"Joshy837"},"content":" assertNotEquals(firstPredicate, secondPredicate);","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"Joshy837"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"Joshy837"},"content":" public void test_keyword_returnsTrue() {","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"Joshy837"},"content":" // Name","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"Joshy837"},"content":" KeywordPredicate predicate \u003d new KeywordPredicate(","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"Joshy837"},"content":" ArgumentTokenizer.tokenize(\" ; name : Alice\", PREFIX_NAME));","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"Joshy837"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice\").build()));","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"Joshy837"},"content":" // Phone","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"Joshy837"},"content":" predicate \u003d new KeywordPredicate(","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"Joshy837"},"content":" ArgumentTokenizer.tokenize(\" ; phone : 98765432\", PREFIX_PHONE));","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"Joshy837"},"content":" assertTrue(predicate.test(new PersonBuilder().withPhone(\"98765432\").build()));","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"Joshy837"},"content":" // Email","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"Joshy837"},"content":" predicate \u003d new KeywordPredicate(","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"Joshy837"},"content":" ArgumentTokenizer.tokenize(\" ; email : ilovepoochies@gmail.com\", PREFIX_EMAIL));","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"Joshy837"},"content":" assertTrue(predicate.test(new PersonBuilder().withEmail(\"ilovepoochies@gmail.com\").build()));","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"Joshy837"},"content":" // Address","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"Joshy837"},"content":" predicate \u003d new KeywordPredicate(","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"Joshy837"},"content":" ArgumentTokenizer.tokenize(\" ; address : Pooch Street 21\", PREFIX_ADDRESS));","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"Joshy837"},"content":" assertTrue(predicate.test(new PersonBuilder().withAddress(\"Pooch Street 21\").build()));","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"Joshy837"},"content":" // Salary","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"Joshy837"},"content":" predicate \u003d new KeywordPredicate(","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"Joshy837"},"content":" ArgumentTokenizer.tokenize(\" ; salary : $50/hr\", PREFIX_SALARY));","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"Joshy837"},"content":" assertTrue(predicate.test(new StaffBuilder().withSalary(\"$50/hr\").build()));","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"Joshy837"},"content":" // Employment","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"Joshy837"},"content":" predicate \u003d new KeywordPredicate(","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"Joshy837"},"content":" ArgumentTokenizer.tokenize(\" ; employment : part-time\", PREFIX_EMPLOYMENT));","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"Joshy837"},"content":" assertTrue(predicate.test(new StaffBuilder().withEmployment(\"part-time\").build()));","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"Joshy837"},"content":" // Price","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"Joshy837"},"content":" predicate \u003d new KeywordPredicate(","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"Joshy837"},"content":" ArgumentTokenizer.tokenize(\" ; price : $50/h\", PREFIX_PRICE));","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"Joshy837"},"content":" assertTrue(predicate.test(new SupplierBuilder().withPrice(\"$50/h\").build()));","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"Joshy837"},"content":" // Product","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"Joshy837"},"content":" predicate \u003d new KeywordPredicate(","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"Joshy837"},"content":" ArgumentTokenizer.tokenize(\" ; product : dog food\", PREFIX_PRODUCT));","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"Joshy837"},"content":" assertTrue(predicate.test(new SupplierBuilder().withProduct(\"dog food\").build()));","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"Joshy837"},"content":" // Skill","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"Joshy837"},"content":" predicate \u003d new KeywordPredicate(","lastModifiedDate":"2024-03-18"},{"lineNumber":101,"author":{"gitId":"Joshy837"},"content":" ArgumentTokenizer.tokenize(\" ; skill : dog trainer\", PREFIX_SKILL));","lastModifiedDate":"2024-03-18"},{"lineNumber":102,"author":{"gitId":"Joshy837"},"content":" assertTrue(predicate.test(new MaintainerBuilder().withSkill(\"dog trainer\").build()));","lastModifiedDate":"2024-03-18"},{"lineNumber":103,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":104,"author":{"gitId":"Joshy837"},"content":" // Commission","lastModifiedDate":"2024-03-18"},{"lineNumber":105,"author":{"gitId":"Joshy837"},"content":" predicate \u003d new KeywordPredicate(","lastModifiedDate":"2024-03-18"},{"lineNumber":106,"author":{"gitId":"Joshy837"},"content":" ArgumentTokenizer.tokenize(\" ; commission : $100/hr\", PREFIX_COMMISSION));","lastModifiedDate":"2024-03-18"},{"lineNumber":107,"author":{"gitId":"Joshy837"},"content":" assertTrue(predicate.test(new MaintainerBuilder().withCommission(\"$100/hr\").build()));","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":109,"author":{"gitId":"Joshy837"},"content":" // Partial keyword","lastModifiedDate":"2024-03-18"},{"lineNumber":110,"author":{"gitId":"Joshy837"},"content":" predicate \u003d new KeywordPredicate(","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"Joshy837"},"content":" ArgumentTokenizer.tokenize(\" ; name : Al\", PREFIX_NAME));","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"Joshy837"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-03-18"},{"lineNumber":113,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"Joshy837"},"content":" // Mixed-case keyword","lastModifiedDate":"2024-03-18"},{"lineNumber":115,"author":{"gitId":"Joshy837"},"content":" predicate \u003d new KeywordPredicate(","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"Joshy837"},"content":" ArgumentTokenizer.tokenize(\" ; name : AlIcE\", PREFIX_NAME));","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"Joshy837"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-03-18"},{"lineNumber":118,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":119,"author":{"gitId":"Joshy837"},"content":" // Two fields: Name \u0026 Phone","lastModifiedDate":"2024-03-18"},{"lineNumber":120,"author":{"gitId":"Joshy837"},"content":" predicate \u003d new KeywordPredicate(","lastModifiedDate":"2024-03-18"},{"lineNumber":121,"author":{"gitId":"Joshy837"},"content":" ArgumentTokenizer.tokenize(\" ; name : Alice ; phone : 98765432\", PREFIX_NAME, PREFIX_PHONE));","lastModifiedDate":"2024-03-18"},{"lineNumber":122,"author":{"gitId":"Joshy837"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice\").withPhone(\"98765432\").build()));","lastModifiedDate":"2024-03-18"},{"lineNumber":123,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":124,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":125,"author":{"gitId":"Joshy837"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":126,"author":{"gitId":"Joshy837"},"content":" public void test_keyword_returnsFalse() {","lastModifiedDate":"2024-03-18"},{"lineNumber":127,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":128,"author":{"gitId":"Joshy837"},"content":" // Non-matching keyword","lastModifiedDate":"2024-03-18"},{"lineNumber":129,"author":{"gitId":"Joshy837"},"content":" KeywordPredicate predicate \u003d new KeywordPredicate(","lastModifiedDate":"2024-03-18"},{"lineNumber":130,"author":{"gitId":"Joshy837"},"content":" ArgumentTokenizer.tokenize(\" ; name : Carol\", PREFIX_NAME));","lastModifiedDate":"2024-03-18"},{"lineNumber":131,"author":{"gitId":"Joshy837"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").build()));","lastModifiedDate":"2024-03-18"},{"lineNumber":132,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":133,"author":{"gitId":"Joshy837"},"content":" // Keywords match name and phone, but does not match email","lastModifiedDate":"2024-03-18"},{"lineNumber":134,"author":{"gitId":"Joshy837"},"content":" predicate \u003d new KeywordPredicate(","lastModifiedDate":"2024-03-18"},{"lineNumber":135,"author":{"gitId":"Joshy837"},"content":" ArgumentTokenizer.tokenize(\" ; name : Alice ; phone : 98765432 ; email : ihatepoochies@gmail.com\",","lastModifiedDate":"2024-03-18"},{"lineNumber":136,"author":{"gitId":"Joshy837"},"content":" PREFIX_NAME, PREFIX_PHONE));","lastModifiedDate":"2024-03-18"},{"lineNumber":137,"author":{"gitId":"Joshy837"},"content":" assertFalse(predicate.test(","lastModifiedDate":"2024-03-18"},{"lineNumber":138,"author":{"gitId":"Joshy837"},"content":" new PersonBuilder()","lastModifiedDate":"2024-03-18"},{"lineNumber":139,"author":{"gitId":"Joshy837"},"content":" .withName(\"Alice\")","lastModifiedDate":"2024-03-18"},{"lineNumber":140,"author":{"gitId":"Joshy837"},"content":" .withPhone(\"98765432\")","lastModifiedDate":"2024-03-18"},{"lineNumber":141,"author":{"gitId":"Joshy837"},"content":" .withEmail(\"ilovepoochies@gmail.com\")","lastModifiedDate":"2024-03-18"},{"lineNumber":142,"author":{"gitId":"Joshy837"},"content":" .build()));","lastModifiedDate":"2024-03-18"},{"lineNumber":143,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":144,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":145,"author":{"gitId":"Joshy837"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":146,"author":{"gitId":"Joshy837"},"content":" public void test_nameField_returnsTrue() {","lastModifiedDate":"2024-03-21"},{"lineNumber":147,"author":{"gitId":"Joshy837"},"content":" KeywordPredicate predicate \u003d new KeywordPredicate(","lastModifiedDate":"2024-03-21"},{"lineNumber":148,"author":{"gitId":"Joshy837"},"content":" ArgumentTokenizer.tokenize(\" ; name : Alice\", PREFIX_NAME));","lastModifiedDate":"2024-03-21"},{"lineNumber":149,"author":{"gitId":"Joshy837"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice\").build()));","lastModifiedDate":"2024-03-21"},{"lineNumber":150,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":151,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":152,"author":{"gitId":"Joshy837"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":153,"author":{"gitId":"Joshy837"},"content":" public void test_phoneField_returnsTrue() {","lastModifiedDate":"2024-03-21"},{"lineNumber":154,"author":{"gitId":"Joshy837"},"content":" KeywordPredicate predicate \u003d new KeywordPredicate(","lastModifiedDate":"2024-03-21"},{"lineNumber":155,"author":{"gitId":"Joshy837"},"content":" ArgumentTokenizer.tokenize(\" ; phone : 98765432\", PREFIX_PHONE));","lastModifiedDate":"2024-03-21"},{"lineNumber":156,"author":{"gitId":"Joshy837"},"content":" assertTrue(predicate.test(new PersonBuilder().withPhone(\"98765432\").build()));","lastModifiedDate":"2024-03-21"},{"lineNumber":157,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":158,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":159,"author":{"gitId":"Joshy837"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":160,"author":{"gitId":"Joshy837"},"content":" public void test_emailField_returnsTrue() {","lastModifiedDate":"2024-03-21"},{"lineNumber":161,"author":{"gitId":"Joshy837"},"content":" KeywordPredicate predicate \u003d new KeywordPredicate(","lastModifiedDate":"2024-03-21"},{"lineNumber":162,"author":{"gitId":"Joshy837"},"content":" ArgumentTokenizer.tokenize(\" ; email : ilovepoochies@gmail.com\", PREFIX_EMAIL));","lastModifiedDate":"2024-03-21"},{"lineNumber":163,"author":{"gitId":"Joshy837"},"content":" assertTrue(predicate.test(new PersonBuilder().withEmail(\"ilovepoochies@gmail.com\").build()));","lastModifiedDate":"2024-03-21"},{"lineNumber":164,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":165,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":166,"author":{"gitId":"Joshy837"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":167,"author":{"gitId":"Joshy837"},"content":" public void test_addressField_returnsTrue() {","lastModifiedDate":"2024-03-21"},{"lineNumber":168,"author":{"gitId":"Joshy837"},"content":" KeywordPredicate predicate \u003d new KeywordPredicate(","lastModifiedDate":"2024-03-21"},{"lineNumber":169,"author":{"gitId":"Joshy837"},"content":" ArgumentTokenizer.tokenize(\" ; address : Pooch Street 21\", PREFIX_ADDRESS));","lastModifiedDate":"2024-03-21"},{"lineNumber":170,"author":{"gitId":"Joshy837"},"content":" assertTrue(predicate.test(new PersonBuilder().withAddress(\"Pooch Street 21\").build()));","lastModifiedDate":"2024-03-21"},{"lineNumber":171,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":172,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":173,"author":{"gitId":"Joshy837"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":174,"author":{"gitId":"Joshy837"},"content":" public void test_salaryField_returnsTrue() {","lastModifiedDate":"2024-03-21"},{"lineNumber":175,"author":{"gitId":"Joshy837"},"content":" KeywordPredicate predicate \u003d new KeywordPredicate(","lastModifiedDate":"2024-03-21"},{"lineNumber":176,"author":{"gitId":"Joshy837"},"content":" ArgumentTokenizer.tokenize(\" ; salary : $50/hr\", PREFIX_SALARY));","lastModifiedDate":"2024-03-21"},{"lineNumber":177,"author":{"gitId":"Joshy837"},"content":" assertTrue(predicate.test(new StaffBuilder().withSalary(\"$50/hr\").build()));","lastModifiedDate":"2024-03-21"},{"lineNumber":178,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":179,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":180,"author":{"gitId":"Joshy837"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":181,"author":{"gitId":"Joshy837"},"content":" public void test_employmentField_returnsTrue() {","lastModifiedDate":"2024-03-21"},{"lineNumber":182,"author":{"gitId":"Joshy837"},"content":" KeywordPredicate predicate \u003d new KeywordPredicate(","lastModifiedDate":"2024-03-21"},{"lineNumber":183,"author":{"gitId":"Joshy837"},"content":" ArgumentTokenizer.tokenize(\" ; employment : part-time\", PREFIX_EMPLOYMENT));","lastModifiedDate":"2024-03-21"},{"lineNumber":184,"author":{"gitId":"Joshy837"},"content":" assertTrue(predicate.test(new StaffBuilder().withEmployment(\"part-time\").build()));","lastModifiedDate":"2024-03-21"},{"lineNumber":185,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":186,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":187,"author":{"gitId":"Joshy837"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":188,"author":{"gitId":"Joshy837"},"content":" public void test_priceField_returnsTrue() {","lastModifiedDate":"2024-03-21"},{"lineNumber":189,"author":{"gitId":"Joshy837"},"content":" KeywordPredicate predicate \u003d new KeywordPredicate(","lastModifiedDate":"2024-03-21"},{"lineNumber":190,"author":{"gitId":"Joshy837"},"content":" ArgumentTokenizer.tokenize(\" ; price : $50/h\", PREFIX_PRICE));","lastModifiedDate":"2024-03-21"},{"lineNumber":191,"author":{"gitId":"Joshy837"},"content":" assertTrue(predicate.test(new SupplierBuilder().withPrice(\"$50/h\").build()));","lastModifiedDate":"2024-03-21"},{"lineNumber":192,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":193,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":194,"author":{"gitId":"Joshy837"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":195,"author":{"gitId":"Joshy837"},"content":" public void test_productField_returnsTrue() {","lastModifiedDate":"2024-03-21"},{"lineNumber":196,"author":{"gitId":"Joshy837"},"content":" KeywordPredicate predicate \u003d new KeywordPredicate(","lastModifiedDate":"2024-03-21"},{"lineNumber":197,"author":{"gitId":"Joshy837"},"content":" ArgumentTokenizer.tokenize(\" ; product : dog food\", PREFIX_PRODUCT));","lastModifiedDate":"2024-03-21"},{"lineNumber":198,"author":{"gitId":"Joshy837"},"content":" assertTrue(predicate.test(new SupplierBuilder().withProduct(\"dog food\").build()));","lastModifiedDate":"2024-03-21"},{"lineNumber":199,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":200,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":201,"author":{"gitId":"Joshy837"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":202,"author":{"gitId":"Joshy837"},"content":" public void test_skillField_returnsTrue() {","lastModifiedDate":"2024-03-21"},{"lineNumber":203,"author":{"gitId":"Joshy837"},"content":" KeywordPredicate predicate \u003d new KeywordPredicate(","lastModifiedDate":"2024-03-21"},{"lineNumber":204,"author":{"gitId":"Joshy837"},"content":" ArgumentTokenizer.tokenize(\" ; skill : dog trainer\", PREFIX_SKILL));","lastModifiedDate":"2024-03-21"},{"lineNumber":205,"author":{"gitId":"Joshy837"},"content":" assertTrue(predicate.test(new MaintainerBuilder().withSkill(\"dog trainer\").build()));","lastModifiedDate":"2024-03-21"},{"lineNumber":206,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":207,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":208,"author":{"gitId":"Joshy837"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":209,"author":{"gitId":"Joshy837"},"content":" public void test_commissionField_returnsTrue() {","lastModifiedDate":"2024-03-21"},{"lineNumber":210,"author":{"gitId":"Joshy837"},"content":" KeywordPredicate predicate \u003d new KeywordPredicate(","lastModifiedDate":"2024-03-21"},{"lineNumber":211,"author":{"gitId":"Joshy837"},"content":" ArgumentTokenizer.tokenize(\" ; commission : $100/hr\", PREFIX_COMMISSION));","lastModifiedDate":"2024-03-21"},{"lineNumber":212,"author":{"gitId":"Joshy837"},"content":" assertTrue(predicate.test(new MaintainerBuilder().withCommission(\"$100/hr\").build()));","lastModifiedDate":"2024-03-21"},{"lineNumber":213,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":214,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":215,"author":{"gitId":"Joshy837"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":216,"author":{"gitId":"Joshy837"},"content":" public void test_multipleFields_returnsTrue() {","lastModifiedDate":"2024-03-21"},{"lineNumber":217,"author":{"gitId":"Joshy837"},"content":" KeywordPredicate predicate \u003d new KeywordPredicate(","lastModifiedDate":"2024-03-21"},{"lineNumber":218,"author":{"gitId":"Joshy837"},"content":" ArgumentTokenizer.tokenize(\" ; name : Alice ; phone : 98765432\", PREFIX_NAME, PREFIX_PHONE));","lastModifiedDate":"2024-03-21"},{"lineNumber":219,"author":{"gitId":"Joshy837"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice\").withPhone(\"98765432\").build()));","lastModifiedDate":"2024-03-21"},{"lineNumber":220,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":221,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":222,"author":{"gitId":"Joshy837"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":223,"author":{"gitId":"Joshy837"},"content":" public void test_combinationFields_returnsFalse() {","lastModifiedDate":"2024-03-21"},{"lineNumber":224,"author":{"gitId":"Joshy837"},"content":" // Test cases where combination of fields don\u0027t match","lastModifiedDate":"2024-03-21"},{"lineNumber":225,"author":{"gitId":"Joshy837"},"content":" // For example, only name matches","lastModifiedDate":"2024-03-21"},{"lineNumber":226,"author":{"gitId":"Joshy837"},"content":" KeywordPredicate predicate \u003d new KeywordPredicate(","lastModifiedDate":"2024-03-21"},{"lineNumber":227,"author":{"gitId":"Joshy837"},"content":" ArgumentTokenizer.tokenize(\" ; name : Alice ; phone : 12345678\", PREFIX_NAME, PREFIX_PHONE));","lastModifiedDate":"2024-03-21"},{"lineNumber":228,"author":{"gitId":"Joshy837"},"content":" Person person \u003d new PersonBuilder()","lastModifiedDate":"2024-03-21"},{"lineNumber":229,"author":{"gitId":"Joshy837"},"content":" .withName(\"Alice\")","lastModifiedDate":"2024-03-21"},{"lineNumber":230,"author":{"gitId":"Joshy837"},"content":" .withPhone(\"98765432\")","lastModifiedDate":"2024-03-21"},{"lineNumber":231,"author":{"gitId":"Joshy837"},"content":" .withEmail(\"alice@abc.com\")","lastModifiedDate":"2024-03-21"},{"lineNumber":232,"author":{"gitId":"Joshy837"},"content":" .withAddress(\"Pooch123\")","lastModifiedDate":"2024-03-21"},{"lineNumber":233,"author":{"gitId":"Joshy837"},"content":" .build();","lastModifiedDate":"2024-03-21"},{"lineNumber":234,"author":{"gitId":"Joshy837"},"content":" assertFalse(predicate.test(person));","lastModifiedDate":"2024-03-21"},{"lineNumber":235,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":236,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":237,"author":{"gitId":"Joshy837"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":238,"author":{"gitId":"Joshy837"},"content":" public void test_salaryFieldOnPerson_returnsFalse() {","lastModifiedDate":"2024-03-21"},{"lineNumber":239,"author":{"gitId":"Joshy837"},"content":" KeywordPredicate predicate \u003d new KeywordPredicate(","lastModifiedDate":"2024-03-21"},{"lineNumber":240,"author":{"gitId":"Joshy837"},"content":" ArgumentTokenizer.tokenize(\" ; salary : $10/hr\", PREFIX_SALARY));","lastModifiedDate":"2024-03-21"},{"lineNumber":241,"author":{"gitId":"Joshy837"},"content":" Person person \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":242,"author":{"gitId":"Joshy837"},"content":" assertFalse(predicate.test(person));","lastModifiedDate":"2024-03-21"},{"lineNumber":243,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":244,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":245,"author":{"gitId":"Joshy837"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":246,"author":{"gitId":"Joshy837"},"content":" public void test_employmentFieldOnPerson_returnsFalse() {","lastModifiedDate":"2024-03-21"},{"lineNumber":247,"author":{"gitId":"Joshy837"},"content":" KeywordPredicate predicate \u003d new KeywordPredicate(","lastModifiedDate":"2024-03-21"},{"lineNumber":248,"author":{"gitId":"Joshy837"},"content":" ArgumentTokenizer.tokenize(\" ; employment : part-time\", PREFIX_EMPLOYMENT));","lastModifiedDate":"2024-03-21"},{"lineNumber":249,"author":{"gitId":"Joshy837"},"content":" Person person \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":250,"author":{"gitId":"Joshy837"},"content":" assertFalse(predicate.test(person));","lastModifiedDate":"2024-03-21"},{"lineNumber":251,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":252,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":253,"author":{"gitId":"Joshy837"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":254,"author":{"gitId":"Joshy837"},"content":" public void test_priceFieldOnPerson_returnsFalse() {","lastModifiedDate":"2024-03-21"},{"lineNumber":255,"author":{"gitId":"Joshy837"},"content":" KeywordPredicate predicate \u003d new KeywordPredicate(","lastModifiedDate":"2024-03-21"},{"lineNumber":256,"author":{"gitId":"Joshy837"},"content":" ArgumentTokenizer.tokenize(\" ; price : $50/bag\", PREFIX_PRICE));","lastModifiedDate":"2024-03-21"},{"lineNumber":257,"author":{"gitId":"Joshy837"},"content":" Person person \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":258,"author":{"gitId":"Joshy837"},"content":" assertFalse(predicate.test(person));","lastModifiedDate":"2024-03-21"},{"lineNumber":259,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":260,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":261,"author":{"gitId":"Joshy837"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":262,"author":{"gitId":"Joshy837"},"content":" public void test_productFieldOnPerson_returnsFalse() {","lastModifiedDate":"2024-03-21"},{"lineNumber":263,"author":{"gitId":"Joshy837"},"content":" KeywordPredicate predicate \u003d new KeywordPredicate(","lastModifiedDate":"2024-03-21"},{"lineNumber":264,"author":{"gitId":"Joshy837"},"content":" ArgumentTokenizer.tokenize(\" ; product : dog food\", PREFIX_PRODUCT));","lastModifiedDate":"2024-03-21"},{"lineNumber":265,"author":{"gitId":"Joshy837"},"content":" Person person \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":266,"author":{"gitId":"Joshy837"},"content":" assertFalse(predicate.test(person));","lastModifiedDate":"2024-03-21"},{"lineNumber":267,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":268,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":269,"author":{"gitId":"Joshy837"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":270,"author":{"gitId":"Joshy837"},"content":" public void test_skillFieldOnPerson_returnsFalse() {","lastModifiedDate":"2024-03-21"},{"lineNumber":271,"author":{"gitId":"Joshy837"},"content":" KeywordPredicate predicate \u003d new KeywordPredicate(","lastModifiedDate":"2024-03-21"},{"lineNumber":272,"author":{"gitId":"Joshy837"},"content":" ArgumentTokenizer.tokenize(\" ; skill : dog trainer\", PREFIX_SKILL));","lastModifiedDate":"2024-03-21"},{"lineNumber":273,"author":{"gitId":"Joshy837"},"content":" Person person \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":274,"author":{"gitId":"Joshy837"},"content":" assertFalse(predicate.test(person));","lastModifiedDate":"2024-03-21"},{"lineNumber":275,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":276,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":277,"author":{"gitId":"Joshy837"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":278,"author":{"gitId":"Joshy837"},"content":" public void test_commissionFieldOnPerson_returnsFalse() {","lastModifiedDate":"2024-03-21"},{"lineNumber":279,"author":{"gitId":"Joshy837"},"content":" KeywordPredicate predicate \u003d new KeywordPredicate(","lastModifiedDate":"2024-03-21"},{"lineNumber":280,"author":{"gitId":"Joshy837"},"content":" ArgumentTokenizer.tokenize(\" ; commission : $50/hr\", PREFIX_COMMISSION));","lastModifiedDate":"2024-03-21"},{"lineNumber":281,"author":{"gitId":"Joshy837"},"content":" Person person \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":282,"author":{"gitId":"Joshy837"},"content":" assertFalse(predicate.test(person));","lastModifiedDate":"2024-03-21"},{"lineNumber":283,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":284,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":285,"author":{"gitId":"Joshy837"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":286,"author":{"gitId":"Joshy837"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-18"},{"lineNumber":287,"author":{"gitId":"Joshy837"},"content":" ArgumentMultimap keyword \u003d ArgumentTokenizer.tokenize(\" ; name : Alice\", PREFIX_NAME);","lastModifiedDate":"2024-03-18"},{"lineNumber":288,"author":{"gitId":"Joshy837"},"content":" KeywordPredicate predicate \u003d new KeywordPredicate(keyword);","lastModifiedDate":"2024-03-18"},{"lineNumber":289,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":290,"author":{"gitId":"Joshy837"},"content":" String expected \u003d KeywordPredicate.class.getCanonicalName() + \"{keyword\u003d\" + keyword + \"}\";","lastModifiedDate":"2024-03-18"},{"lineNumber":291,"author":{"gitId":"Joshy837"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":292,"author":{"gitId":"Joshy837"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2024-03-18"},{"lineNumber":293,"author":{"gitId":"Joshy837"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":294,"author":{"gitId":"Joshy837"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"Joshy837":294}},{"path":"src/test/java/seedu/address/model/person/MaintainerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chiageng"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-09"},{"lineNumber":2,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":3,"author":{"gitId":"chiageng"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-09"},{"lineNumber":4,"author":{"gitId":"chiageng"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-09"},{"lineNumber":5,"author":{"gitId":"chiageng"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-09"},{"lineNumber":6,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":7,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-09"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":"import static seedu.address.testutil.TypicalPersons.ALICEMAINTAINER;","lastModifiedDate":"2024-03-09"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":"import static seedu.address.testutil.TypicalPersons.BOBMAINTAINER;","lastModifiedDate":"2024-03-09"},{"lineNumber":13,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-09"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":"import seedu.address.testutil.MaintainerBuilder;","lastModifiedDate":"2024-03-09"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":"public class MaintainerTest {","lastModifiedDate":"2024-03-09"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":20,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":" Maintainer person \u003d new MaintainerBuilder().build();","lastModifiedDate":"2024-03-09"},{"lineNumber":23,"author":{"gitId":"chiageng"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTags().remove(0));","lastModifiedDate":"2024-03-09"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":25,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":26,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":27,"author":{"gitId":"chiageng"},"content":" public void isSameStaff() {","lastModifiedDate":"2024-03-09"},{"lineNumber":28,"author":{"gitId":"chiageng"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-09"},{"lineNumber":29,"author":{"gitId":"chiageng"},"content":" assertTrue(ALICEMAINTAINER.isSamePerson(ALICEMAINTAINER));","lastModifiedDate":"2024-03-09"},{"lineNumber":30,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":31,"author":{"gitId":"chiageng"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":32,"author":{"gitId":"chiageng"},"content":" assertFalse(ALICEMAINTAINER.isSamePerson(null));","lastModifiedDate":"2024-03-09"},{"lineNumber":33,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":34,"author":{"gitId":"chiageng"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2024-03-09"},{"lineNumber":35,"author":{"gitId":"chiageng"},"content":" Person editedAlice \u003d new MaintainerBuilder(ALICEMAINTAINER).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-09"},{"lineNumber":36,"author":{"gitId":"chiageng"},"content":" .withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2024-03-09"},{"lineNumber":37,"author":{"gitId":"chiageng"},"content":" .withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":38,"author":{"gitId":"chiageng"},"content":" assertTrue(ALICEMAINTAINER.isSamePerson(editedAlice));","lastModifiedDate":"2024-03-09"},{"lineNumber":39,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":40,"author":{"gitId":"chiageng"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":41,"author":{"gitId":"chiageng"},"content":" editedAlice \u003d new MaintainerBuilder(ALICEMAINTAINER).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":42,"author":{"gitId":"chiageng"},"content":" assertFalse(ALICEMAINTAINER.isSamePerson(editedAlice));","lastModifiedDate":"2024-03-09"},{"lineNumber":43,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":44,"author":{"gitId":"chiageng"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":" Person editedBob \u003d new MaintainerBuilder(BOBMAINTAINER).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":46,"author":{"gitId":"chiageng"},"content":" assertTrue(BOBMAINTAINER.isSamePerson(editedBob));","lastModifiedDate":"2024-03-09"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2024-03-09"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":" editedBob \u003d new MaintainerBuilder(BOBMAINTAINER).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":" assertFalse(BOBMAINTAINER.isSamePerson(editedBob));","lastModifiedDate":"2024-03-09"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":53,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":55,"author":{"gitId":"chiageng"},"content":" public void equals() {","lastModifiedDate":"2024-03-09"},{"lineNumber":56,"author":{"gitId":"chiageng"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-09"},{"lineNumber":57,"author":{"gitId":"chiageng"},"content":" Person aliceCopy \u003d new MaintainerBuilder(ALICEMAINTAINER).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":58,"author":{"gitId":"chiageng"},"content":" assertTrue(ALICEMAINTAINER.equals(aliceCopy));","lastModifiedDate":"2024-03-09"},{"lineNumber":59,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":60,"author":{"gitId":"chiageng"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-09"},{"lineNumber":61,"author":{"gitId":"chiageng"},"content":" assertTrue(ALICEMAINTAINER.equals(ALICEMAINTAINER));","lastModifiedDate":"2024-03-09"},{"lineNumber":62,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":63,"author":{"gitId":"chiageng"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":64,"author":{"gitId":"chiageng"},"content":" assertFalse(ALICEMAINTAINER.equals(null));","lastModifiedDate":"2024-03-09"},{"lineNumber":65,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":66,"author":{"gitId":"chiageng"},"content":" // different type -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":67,"author":{"gitId":"chiageng"},"content":" assertFalse(ALICEMAINTAINER.equals(5));","lastModifiedDate":"2024-03-09"},{"lineNumber":68,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":69,"author":{"gitId":"chiageng"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":70,"author":{"gitId":"chiageng"},"content":" assertFalse(ALICEMAINTAINER.equals(BOBMAINTAINER));","lastModifiedDate":"2024-03-09"},{"lineNumber":71,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":72,"author":{"gitId":"chiageng"},"content":" // different name -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":73,"author":{"gitId":"chiageng"},"content":" Person editedAlice \u003d new MaintainerBuilder(ALICEMAINTAINER).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":74,"author":{"gitId":"chiageng"},"content":" assertFalse(ALICEMAINTAINER.equals(editedAlice));","lastModifiedDate":"2024-03-09"},{"lineNumber":75,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":76,"author":{"gitId":"chiageng"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":77,"author":{"gitId":"chiageng"},"content":" editedAlice \u003d new MaintainerBuilder(ALICEMAINTAINER).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":78,"author":{"gitId":"chiageng"},"content":" assertFalse(ALICEMAINTAINER.equals(editedAlice));","lastModifiedDate":"2024-03-09"},{"lineNumber":79,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":80,"author":{"gitId":"chiageng"},"content":" // different email -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":81,"author":{"gitId":"chiageng"},"content":" editedAlice \u003d new MaintainerBuilder(ALICEMAINTAINER).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":82,"author":{"gitId":"chiageng"},"content":" assertFalse(ALICEMAINTAINER.equals(editedAlice));","lastModifiedDate":"2024-03-09"},{"lineNumber":83,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":84,"author":{"gitId":"chiageng"},"content":" // different address -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":85,"author":{"gitId":"chiageng"},"content":" editedAlice \u003d new MaintainerBuilder(ALICEMAINTAINER).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":86,"author":{"gitId":"chiageng"},"content":" assertFalse(ALICEMAINTAINER.equals(editedAlice));","lastModifiedDate":"2024-03-09"},{"lineNumber":87,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":88,"author":{"gitId":"chiageng"},"content":" /*","lastModifiedDate":"2024-03-09"},{"lineNumber":89,"author":{"gitId":"chiageng"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":90,"author":{"gitId":"chiageng"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":91,"author":{"gitId":"chiageng"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2024-03-09"},{"lineNumber":92,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":93,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":94,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":95,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":96,"author":{"gitId":"chiageng"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-09"},{"lineNumber":97,"author":{"gitId":"chiageng"},"content":" String expected \u003d Maintainer.class.getCanonicalName() + \"{name\u003d\" + ALICEMAINTAINER.getName()","lastModifiedDate":"2024-03-09"},{"lineNumber":98,"author":{"gitId":"chiageng"},"content":" + \", phone\u003d\"","lastModifiedDate":"2024-03-09"},{"lineNumber":99,"author":{"gitId":"chiageng"},"content":" + ALICEMAINTAINER.getPhone()","lastModifiedDate":"2024-03-09"},{"lineNumber":100,"author":{"gitId":"chiageng"},"content":" + \", email\u003d\" + ALICEMAINTAINER.getEmail() + \", address\u003d\"","lastModifiedDate":"2024-03-09"},{"lineNumber":101,"author":{"gitId":"chiageng"},"content":" + ALICEMAINTAINER.getAddress()","lastModifiedDate":"2024-03-09"},{"lineNumber":102,"author":{"gitId":"chiageng"},"content":" + \", tags\u003d\" + ALICEMAINTAINER.getTags()","lastModifiedDate":"2024-03-09"},{"lineNumber":103,"author":{"gitId":"chiageng"},"content":" + \", skill\u003d\" + ALICEMAINTAINER.getSkill()","lastModifiedDate":"2024-03-09"},{"lineNumber":104,"author":{"gitId":"chiageng"},"content":" + \", commission\u003d\" + ALICEMAINTAINER.getCommission()","lastModifiedDate":"2024-03-09"},{"lineNumber":105,"author":{"gitId":"chiageng"},"content":" + \"}\";","lastModifiedDate":"2024-03-09"},{"lineNumber":106,"author":{"gitId":"chiageng"},"content":" assertEquals(expected, ALICEMAINTAINER.toString());","lastModifiedDate":"2024-03-09"},{"lineNumber":107,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":108,"author":{"gitId":"chiageng"},"content":"}","lastModifiedDate":"2024-03-09"}],"authorContributionMap":{"chiageng":108}},{"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":"-"},"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":"-"},"content":" .withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2020-12-18"},{"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":"chiageng"},"content":" assertTrue(BOB.isSamePerson(editedBob));","lastModifiedDate":"2024-03-08"},{"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":"chiageng"},"content":" /*","lastModifiedDate":"2024-03-09"},{"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":"2024-03-09"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2024-03-09"},{"lineNumber":92,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2019-02-23"},{"lineNumber":98,"author":{"gitId":"jannaleong"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", address\u003d\" + ALICE.getAddress() + \", note\u003d\" + ALICE.getNote()","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"jannaleong"},"content":" + \", tags\u003d\" + ALICE.getTags() + \"}\";","lastModifiedDate":"2024-03-19"},{"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":{"chiageng":3,"jannaleong":2,"-":97}},{"path":"src/test/java/seedu/address/model/person/PriceTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chiageng"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-09"},{"lineNumber":2,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":3,"author":{"gitId":"chiageng"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-09"},{"lineNumber":4,"author":{"gitId":"chiageng"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-09"},{"lineNumber":5,"author":{"gitId":"chiageng"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-09"},{"lineNumber":6,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":7,"author":{"gitId":"chiageng"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-09"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":"public class PriceTest {","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":13,"author":{"gitId":"chiageng"},"content":" assertThrows(NullPointerException.class, () -\u003e new Price(null));","lastModifiedDate":"2024-03-09"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":" public void constructor_invalidPrice_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":" String invalidPrice \u003d \"20/hr\";","lastModifiedDate":"2024-03-09"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Price(invalidPrice));","lastModifiedDate":"2024-03-09"},{"lineNumber":20,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":23,"author":{"gitId":"chiageng"},"content":" public void isValidPrice() {","lastModifiedDate":"2024-03-09"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":" // null Price","lastModifiedDate":"2024-03-09"},{"lineNumber":25,"author":{"gitId":"chiageng"},"content":" assertThrows(NullPointerException.class, () -\u003e Price.isValidPrice(null));","lastModifiedDate":"2024-03-09"},{"lineNumber":26,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":27,"author":{"gitId":"chiageng"},"content":" // invalid Price","lastModifiedDate":"2024-03-09"},{"lineNumber":28,"author":{"gitId":"chiageng"},"content":" assertFalse(Price.isValidPrice(\"\")); // empty string","lastModifiedDate":"2024-03-09"},{"lineNumber":29,"author":{"gitId":"chiageng"},"content":" assertFalse(Price.isValidPrice(\" \")); // spaces only","lastModifiedDate":"2024-03-09"},{"lineNumber":30,"author":{"gitId":"chiageng"},"content":" assertFalse(Price.isValidPrice(\"50\"));","lastModifiedDate":"2024-03-09"},{"lineNumber":31,"author":{"gitId":"chiageng"},"content":" assertFalse(Price.isValidPrice(\"50/bag\"));","lastModifiedDate":"2024-03-09"},{"lineNumber":32,"author":{"gitId":"chiageng"},"content":" assertFalse(Price.isValidPrice(\"$50\"));","lastModifiedDate":"2024-03-09"},{"lineNumber":33,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":34,"author":{"gitId":"chiageng"},"content":" // valid Price","lastModifiedDate":"2024-03-09"},{"lineNumber":35,"author":{"gitId":"chiageng"},"content":" assertTrue(Price.isValidPrice(\"$500/bag\")); // exactly 3 numbers","lastModifiedDate":"2024-03-09"},{"lineNumber":36,"author":{"gitId":"chiageng"},"content":" assertTrue(Price.isValidPrice(\"$50/piece\"));","lastModifiedDate":"2024-03-09"},{"lineNumber":37,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":38,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":39,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":40,"author":{"gitId":"chiageng"},"content":" public void equals() {","lastModifiedDate":"2024-03-09"},{"lineNumber":41,"author":{"gitId":"chiageng"},"content":" Price price \u003d new Price(\"$50/bag\");","lastModifiedDate":"2024-03-09"},{"lineNumber":42,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":43,"author":{"gitId":"chiageng"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-09"},{"lineNumber":44,"author":{"gitId":"chiageng"},"content":" assertTrue(price.equals(new Price(\"$50/bag\")));","lastModifiedDate":"2024-03-09"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":46,"author":{"gitId":"chiageng"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-09"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":" assertTrue(price.equals(price));","lastModifiedDate":"2024-03-09"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":" assertFalse(price.equals(null));","lastModifiedDate":"2024-03-09"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":53,"author":{"gitId":"chiageng"},"content":" assertFalse(price.equals(\"$50/bag\"));","lastModifiedDate":"2024-03-09"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":55,"author":{"gitId":"chiageng"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":56,"author":{"gitId":"chiageng"},"content":" assertFalse(price.equals(new Price(\"$50/piece\")));","lastModifiedDate":"2024-03-09"},{"lineNumber":57,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":58,"author":{"gitId":"chiageng"},"content":"}","lastModifiedDate":"2024-03-09"}],"authorContributionMap":{"chiageng":58}},{"path":"src/test/java/seedu/address/model/person/ProductTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chiageng"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-09"},{"lineNumber":2,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":3,"author":{"gitId":"chiageng"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-09"},{"lineNumber":4,"author":{"gitId":"chiageng"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-09"},{"lineNumber":5,"author":{"gitId":"chiageng"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-09"},{"lineNumber":6,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":7,"author":{"gitId":"chiageng"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-09"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":"public class ProductTest {","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":13,"author":{"gitId":"chiageng"},"content":" assertThrows(NullPointerException.class, () -\u003e new Product(null));","lastModifiedDate":"2024-03-09"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":" public void constructor_invalidProduct_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":" String invalidProduct \u003d \"\";","lastModifiedDate":"2024-03-09"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Product(invalidProduct));","lastModifiedDate":"2024-03-09"},{"lineNumber":20,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":23,"author":{"gitId":"chiageng"},"content":" public void isValidProduct() {","lastModifiedDate":"2024-03-09"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":" // null Product","lastModifiedDate":"2024-03-09"},{"lineNumber":25,"author":{"gitId":"chiageng"},"content":" assertThrows(NullPointerException.class, () -\u003e Product.isValidProduct(null));","lastModifiedDate":"2024-03-09"},{"lineNumber":26,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":27,"author":{"gitId":"chiageng"},"content":" // invalid Product","lastModifiedDate":"2024-03-09"},{"lineNumber":28,"author":{"gitId":"chiageng"},"content":" assertFalse(Product.isValidProduct(\"\")); // empty string","lastModifiedDate":"2024-03-09"},{"lineNumber":29,"author":{"gitId":"chiageng"},"content":" assertFalse(Product.isValidProduct(\" \")); // spaces only","lastModifiedDate":"2024-03-09"},{"lineNumber":30,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":31,"author":{"gitId":"chiageng"},"content":" // valid Product","lastModifiedDate":"2024-03-09"},{"lineNumber":32,"author":{"gitId":"chiageng"},"content":" assertTrue(Product.isValidProduct(\"pooch food\"));","lastModifiedDate":"2024-03-09"},{"lineNumber":33,"author":{"gitId":"chiageng"},"content":" assertTrue(Product.isValidProduct(\"medicine\"));","lastModifiedDate":"2024-03-09"},{"lineNumber":34,"author":{"gitId":"chiageng"},"content":" assertTrue(Product.isValidProduct(\"pooch-toy\"));","lastModifiedDate":"2024-03-09"},{"lineNumber":35,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":36,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":37,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":38,"author":{"gitId":"chiageng"},"content":" public void equals() {","lastModifiedDate":"2024-03-09"},{"lineNumber":39,"author":{"gitId":"chiageng"},"content":" Product product \u003d new Product(\"Valid Product\");","lastModifiedDate":"2024-03-09"},{"lineNumber":40,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":41,"author":{"gitId":"chiageng"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-09"},{"lineNumber":42,"author":{"gitId":"chiageng"},"content":" assertTrue(product.equals(new Product(\"Valid Product\")));","lastModifiedDate":"2024-03-09"},{"lineNumber":43,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":44,"author":{"gitId":"chiageng"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-09"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":" assertTrue(product.equals(product));","lastModifiedDate":"2024-03-09"},{"lineNumber":46,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":" assertFalse(product.equals(null));","lastModifiedDate":"2024-03-09"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":" assertFalse(product.equals(\"Valid Product\"));","lastModifiedDate":"2024-03-09"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":53,"author":{"gitId":"chiageng"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":" assertFalse(product.equals(new Product(\"Other Valid Product\")));","lastModifiedDate":"2024-03-09"},{"lineNumber":55,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":56,"author":{"gitId":"chiageng"},"content":"}","lastModifiedDate":"2024-03-09"}],"authorContributionMap":{"chiageng":56}},{"path":"src/test/java/seedu/address/model/person/SalaryTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chiageng"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-09"},{"lineNumber":2,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":3,"author":{"gitId":"chiageng"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-09"},{"lineNumber":4,"author":{"gitId":"chiageng"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-09"},{"lineNumber":5,"author":{"gitId":"chiageng"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-09"},{"lineNumber":6,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":7,"author":{"gitId":"chiageng"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-09"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":"public class SalaryTest {","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":13,"author":{"gitId":"chiageng"},"content":" assertThrows(NullPointerException.class, () -\u003e new Salary(null));","lastModifiedDate":"2024-03-09"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":" public void constructor_invalidSalary_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":" String invalidSalary \u003d \"20/hr\";","lastModifiedDate":"2024-03-09"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Salary(invalidSalary));","lastModifiedDate":"2024-03-09"},{"lineNumber":20,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":23,"author":{"gitId":"chiageng"},"content":" public void isValidSalary() {","lastModifiedDate":"2024-03-09"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":" // null Salary","lastModifiedDate":"2024-03-09"},{"lineNumber":25,"author":{"gitId":"chiageng"},"content":" assertThrows(NullPointerException.class, () -\u003e Salary.isValidSalary(null));","lastModifiedDate":"2024-03-09"},{"lineNumber":26,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":27,"author":{"gitId":"chiageng"},"content":" // invalid Salary","lastModifiedDate":"2024-03-09"},{"lineNumber":28,"author":{"gitId":"chiageng"},"content":" assertFalse(Salary.isValidSalary(\"\")); // empty string","lastModifiedDate":"2024-03-09"},{"lineNumber":29,"author":{"gitId":"chiageng"},"content":" assertFalse(Salary.isValidSalary(\" \")); // spaces only","lastModifiedDate":"2024-03-09"},{"lineNumber":30,"author":{"gitId":"chiageng"},"content":" assertFalse(Salary.isValidSalary(\"50\"));","lastModifiedDate":"2024-03-09"},{"lineNumber":31,"author":{"gitId":"chiageng"},"content":" assertFalse(Salary.isValidSalary(\"50/hr\"));","lastModifiedDate":"2024-03-09"},{"lineNumber":32,"author":{"gitId":"chiageng"},"content":" assertFalse(Salary.isValidSalary(\"$50\"));","lastModifiedDate":"2024-03-09"},{"lineNumber":33,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":34,"author":{"gitId":"chiageng"},"content":" // valid Salary","lastModifiedDate":"2024-03-09"},{"lineNumber":35,"author":{"gitId":"chiageng"},"content":" assertTrue(Salary.isValidSalary(\"$500/hr\")); // exactly 3 numbers","lastModifiedDate":"2024-03-09"},{"lineNumber":36,"author":{"gitId":"chiageng"},"content":" assertTrue(Salary.isValidSalary(\"$50/hr\"));","lastModifiedDate":"2024-03-09"},{"lineNumber":37,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":38,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":39,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":40,"author":{"gitId":"chiageng"},"content":" public void equals() {","lastModifiedDate":"2024-03-09"},{"lineNumber":41,"author":{"gitId":"chiageng"},"content":" Salary salary \u003d new Salary(\"$50/hr\");","lastModifiedDate":"2024-03-09"},{"lineNumber":42,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":43,"author":{"gitId":"chiageng"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-09"},{"lineNumber":44,"author":{"gitId":"chiageng"},"content":" assertTrue(salary.equals(new Salary(\"$50/hr\")));","lastModifiedDate":"2024-03-09"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":46,"author":{"gitId":"chiageng"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-09"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":" assertTrue(salary.equals(salary));","lastModifiedDate":"2024-03-09"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":" assertFalse(salary.equals(null));","lastModifiedDate":"2024-03-09"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":53,"author":{"gitId":"chiageng"},"content":" assertFalse(salary.equals(\"$50/hr\"));","lastModifiedDate":"2024-03-09"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":55,"author":{"gitId":"chiageng"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":56,"author":{"gitId":"chiageng"},"content":" assertFalse(salary.equals(new Salary(\"$60/hr\")));","lastModifiedDate":"2024-03-09"},{"lineNumber":57,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":58,"author":{"gitId":"chiageng"},"content":"}","lastModifiedDate":"2024-03-09"}],"authorContributionMap":{"chiageng":58}},{"path":"src/test/java/seedu/address/model/person/SkillTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chiageng"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-09"},{"lineNumber":2,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":3,"author":{"gitId":"chiageng"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-09"},{"lineNumber":4,"author":{"gitId":"chiageng"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-09"},{"lineNumber":5,"author":{"gitId":"chiageng"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-09"},{"lineNumber":6,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":7,"author":{"gitId":"chiageng"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-09"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":"public class SkillTest {","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":13,"author":{"gitId":"chiageng"},"content":" assertThrows(NullPointerException.class, () -\u003e new Skill(null));","lastModifiedDate":"2024-03-09"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":" public void constructor_invalidSkill_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":" String invalidSkill \u003d \"\";","lastModifiedDate":"2024-03-09"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Skill(invalidSkill));","lastModifiedDate":"2024-03-09"},{"lineNumber":20,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":23,"author":{"gitId":"chiageng"},"content":" public void isValidSkill() {","lastModifiedDate":"2024-03-09"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":" // null skill","lastModifiedDate":"2024-03-09"},{"lineNumber":25,"author":{"gitId":"chiageng"},"content":" assertThrows(NullPointerException.class, () -\u003e Skill.isValidSkill(null));","lastModifiedDate":"2024-03-09"},{"lineNumber":26,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":27,"author":{"gitId":"chiageng"},"content":" // invalid skills","lastModifiedDate":"2024-03-09"},{"lineNumber":28,"author":{"gitId":"chiageng"},"content":" assertFalse(Skill.isValidSkill(\"\")); // empty string","lastModifiedDate":"2024-03-09"},{"lineNumber":29,"author":{"gitId":"chiageng"},"content":" assertFalse(Skill.isValidSkill(\" \")); // spaces only","lastModifiedDate":"2024-03-09"},{"lineNumber":30,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":31,"author":{"gitId":"chiageng"},"content":" // valid skill","lastModifiedDate":"2024-03-09"},{"lineNumber":32,"author":{"gitId":"chiageng"},"content":" assertTrue(Skill.isValidSkill(\"train dog\")); // exactly 3 numbers","lastModifiedDate":"2024-03-09"},{"lineNumber":33,"author":{"gitId":"chiageng"},"content":" assertTrue(Skill.isValidSkill(\"training dog\"));","lastModifiedDate":"2024-03-09"},{"lineNumber":34,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":35,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":36,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":37,"author":{"gitId":"chiageng"},"content":" public void equals() {","lastModifiedDate":"2024-03-09"},{"lineNumber":38,"author":{"gitId":"chiageng"},"content":" Skill skill \u003d new Skill(\"train dog\");","lastModifiedDate":"2024-03-09"},{"lineNumber":39,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":40,"author":{"gitId":"chiageng"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-09"},{"lineNumber":41,"author":{"gitId":"chiageng"},"content":" assertTrue(skill.equals(new Skill(\"train dog\")));","lastModifiedDate":"2024-03-09"},{"lineNumber":42,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":43,"author":{"gitId":"chiageng"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-09"},{"lineNumber":44,"author":{"gitId":"chiageng"},"content":" assertTrue(skill.equals(skill));","lastModifiedDate":"2024-03-09"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":46,"author":{"gitId":"chiageng"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":" assertFalse(skill.equals(null));","lastModifiedDate":"2024-03-09"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":" assertFalse(skill.equals(\"train dog\"));","lastModifiedDate":"2024-03-09"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":53,"author":{"gitId":"chiageng"},"content":" assertFalse(skill.equals(new Skill(\"train\")));","lastModifiedDate":"2024-03-09"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":55,"author":{"gitId":"chiageng"},"content":"}","lastModifiedDate":"2024-03-09"}],"authorContributionMap":{"chiageng":55}},{"path":"src/test/java/seedu/address/model/person/StaffTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chiageng"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-09"},{"lineNumber":2,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":3,"author":{"gitId":"chiageng"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-09"},{"lineNumber":4,"author":{"gitId":"chiageng"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-09"},{"lineNumber":5,"author":{"gitId":"chiageng"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-09"},{"lineNumber":6,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":7,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-09"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-09"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":"import static seedu.address.testutil.TypicalPersons.ALICESTAFF;","lastModifiedDate":"2024-03-09"},{"lineNumber":13,"author":{"gitId":"chiageng"},"content":"import static seedu.address.testutil.TypicalPersons.BOBSTAFF;","lastModifiedDate":"2024-03-09"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-09"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":"import seedu.address.testutil.StaffBuilder;","lastModifiedDate":"2024-03-09"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":"public class StaffTest {","lastModifiedDate":"2024-03-09"},{"lineNumber":20,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":23,"author":{"gitId":"chiageng"},"content":" Staff person \u003d new StaffBuilder().build();","lastModifiedDate":"2024-03-09"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTags().remove(0));","lastModifiedDate":"2024-03-09"},{"lineNumber":25,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":26,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":27,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":28,"author":{"gitId":"chiageng"},"content":" public void isSameStaff() {","lastModifiedDate":"2024-03-09"},{"lineNumber":29,"author":{"gitId":"chiageng"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-09"},{"lineNumber":30,"author":{"gitId":"chiageng"},"content":" assertTrue(ALICESTAFF.isSamePerson(ALICESTAFF));","lastModifiedDate":"2024-03-09"},{"lineNumber":31,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":32,"author":{"gitId":"chiageng"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":33,"author":{"gitId":"chiageng"},"content":" assertFalse(ALICESTAFF.isSamePerson(null));","lastModifiedDate":"2024-03-09"},{"lineNumber":34,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":35,"author":{"gitId":"chiageng"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2024-03-09"},{"lineNumber":36,"author":{"gitId":"chiageng"},"content":" Person editedAlice \u003d new StaffBuilder(ALICESTAFF).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2024-03-09"},{"lineNumber":37,"author":{"gitId":"chiageng"},"content":" .withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":38,"author":{"gitId":"chiageng"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2024-03-09"},{"lineNumber":39,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":40,"author":{"gitId":"chiageng"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":41,"author":{"gitId":"chiageng"},"content":" editedAlice \u003d new StaffBuilder(ALICESTAFF).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":42,"author":{"gitId":"chiageng"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2024-03-09"},{"lineNumber":43,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":44,"author":{"gitId":"chiageng"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":" Person editedBob \u003d new StaffBuilder(BOBSTAFF).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":46,"author":{"gitId":"chiageng"},"content":" assertTrue(BOBSTAFF.isSamePerson(editedBob));","lastModifiedDate":"2024-03-09"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2024-03-09"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":" editedBob \u003d new StaffBuilder(BOBSTAFF).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":" assertFalse(BOBSTAFF.isSamePerson(editedBob));","lastModifiedDate":"2024-03-09"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":53,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":55,"author":{"gitId":"chiageng"},"content":" public void equals() {","lastModifiedDate":"2024-03-09"},{"lineNumber":56,"author":{"gitId":"chiageng"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-09"},{"lineNumber":57,"author":{"gitId":"chiageng"},"content":" Person aliceCopy \u003d new StaffBuilder(ALICESTAFF).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":58,"author":{"gitId":"chiageng"},"content":" assertTrue(ALICESTAFF.equals(aliceCopy));","lastModifiedDate":"2024-03-09"},{"lineNumber":59,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":60,"author":{"gitId":"chiageng"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-09"},{"lineNumber":61,"author":{"gitId":"chiageng"},"content":" assertTrue(ALICESTAFF.equals(ALICESTAFF));","lastModifiedDate":"2024-03-09"},{"lineNumber":62,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":63,"author":{"gitId":"chiageng"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":64,"author":{"gitId":"chiageng"},"content":" assertFalse(ALICESTAFF.equals(null));","lastModifiedDate":"2024-03-09"},{"lineNumber":65,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":66,"author":{"gitId":"chiageng"},"content":" // different type -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":67,"author":{"gitId":"chiageng"},"content":" assertFalse(ALICESTAFF.equals(5));","lastModifiedDate":"2024-03-09"},{"lineNumber":68,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":69,"author":{"gitId":"chiageng"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":70,"author":{"gitId":"chiageng"},"content":" assertFalse(ALICESTAFF.equals(BOBSTAFF));","lastModifiedDate":"2024-03-09"},{"lineNumber":71,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":72,"author":{"gitId":"chiageng"},"content":" // different name -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":73,"author":{"gitId":"chiageng"},"content":" Person editedAlice \u003d new StaffBuilder(ALICESTAFF).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":74,"author":{"gitId":"chiageng"},"content":" assertFalse(ALICESTAFF.equals(editedAlice));","lastModifiedDate":"2024-03-09"},{"lineNumber":75,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":76,"author":{"gitId":"chiageng"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":77,"author":{"gitId":"chiageng"},"content":" editedAlice \u003d new StaffBuilder(ALICESTAFF).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":78,"author":{"gitId":"chiageng"},"content":" assertFalse(ALICESTAFF.equals(editedAlice));","lastModifiedDate":"2024-03-09"},{"lineNumber":79,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":80,"author":{"gitId":"chiageng"},"content":" // different email -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":81,"author":{"gitId":"chiageng"},"content":" editedAlice \u003d new StaffBuilder(ALICESTAFF).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":82,"author":{"gitId":"chiageng"},"content":" assertFalse(ALICESTAFF.equals(editedAlice));","lastModifiedDate":"2024-03-09"},{"lineNumber":83,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":84,"author":{"gitId":"chiageng"},"content":" // different address -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":85,"author":{"gitId":"chiageng"},"content":" editedAlice \u003d new StaffBuilder(ALICESTAFF).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":86,"author":{"gitId":"chiageng"},"content":" assertFalse(ALICESTAFF.equals(editedAlice));","lastModifiedDate":"2024-03-09"},{"lineNumber":87,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":88,"author":{"gitId":"chiageng"},"content":" /*","lastModifiedDate":"2024-03-09"},{"lineNumber":89,"author":{"gitId":"chiageng"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":90,"author":{"gitId":"chiageng"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":91,"author":{"gitId":"chiageng"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2024-03-09"},{"lineNumber":92,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":93,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":94,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":95,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":96,"author":{"gitId":"chiageng"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-09"},{"lineNumber":97,"author":{"gitId":"chiageng"},"content":" String expected \u003d Staff.class.getCanonicalName() + \"{name\u003d\" + ALICESTAFF.getName() + \", phone\u003d\"","lastModifiedDate":"2024-03-09"},{"lineNumber":98,"author":{"gitId":"chiageng"},"content":" + ALICESTAFF.getPhone()","lastModifiedDate":"2024-03-09"},{"lineNumber":99,"author":{"gitId":"chiageng"},"content":" + \", email\u003d\" + ALICESTAFF.getEmail() + \", address\u003d\"","lastModifiedDate":"2024-03-09"},{"lineNumber":100,"author":{"gitId":"chiageng"},"content":" + ALICESTAFF.getAddress()","lastModifiedDate":"2024-03-09"},{"lineNumber":101,"author":{"gitId":"chiageng"},"content":" + \", tags\u003d\" + ALICESTAFF.getTags()","lastModifiedDate":"2024-03-09"},{"lineNumber":102,"author":{"gitId":"chiageng"},"content":" + \", salary\u003d\" + ALICESTAFF.getSalary()","lastModifiedDate":"2024-03-09"},{"lineNumber":103,"author":{"gitId":"chiageng"},"content":" + \", employment\u003d\" + ALICESTAFF.getEmployment()","lastModifiedDate":"2024-03-09"},{"lineNumber":104,"author":{"gitId":"chiageng"},"content":" + \"}\";","lastModifiedDate":"2024-03-09"},{"lineNumber":105,"author":{"gitId":"chiageng"},"content":" assertEquals(expected, ALICESTAFF.toString());","lastModifiedDate":"2024-03-09"},{"lineNumber":106,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":107,"author":{"gitId":"chiageng"},"content":"}","lastModifiedDate":"2024-03-09"}],"authorContributionMap":{"chiageng":107}},{"path":"src/test/java/seedu/address/model/person/SupplierTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chiageng"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-09"},{"lineNumber":2,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":3,"author":{"gitId":"chiageng"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-09"},{"lineNumber":4,"author":{"gitId":"chiageng"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-09"},{"lineNumber":5,"author":{"gitId":"chiageng"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-09"},{"lineNumber":6,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":7,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-09"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":"import static seedu.address.testutil.TypicalPersons.ALICESUPPLIER;","lastModifiedDate":"2024-03-09"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":"import static seedu.address.testutil.TypicalPersons.BOBSUPPLIER;","lastModifiedDate":"2024-03-09"},{"lineNumber":13,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-09"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":"import seedu.address.testutil.SupplierBuilder;","lastModifiedDate":"2024-03-09"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":"public class SupplierTest {","lastModifiedDate":"2024-03-09"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":20,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":" Supplier person \u003d new SupplierBuilder().build();","lastModifiedDate":"2024-03-09"},{"lineNumber":23,"author":{"gitId":"chiageng"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTags().remove(0));","lastModifiedDate":"2024-03-09"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":25,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":26,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":27,"author":{"gitId":"chiageng"},"content":" public void isSameStaff() {","lastModifiedDate":"2024-03-09"},{"lineNumber":28,"author":{"gitId":"chiageng"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-09"},{"lineNumber":29,"author":{"gitId":"chiageng"},"content":" assertTrue(ALICESUPPLIER.isSamePerson(ALICESUPPLIER));","lastModifiedDate":"2024-03-09"},{"lineNumber":30,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":31,"author":{"gitId":"chiageng"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":32,"author":{"gitId":"chiageng"},"content":" assertFalse(ALICESUPPLIER.isSamePerson(null));","lastModifiedDate":"2024-03-09"},{"lineNumber":33,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":34,"author":{"gitId":"chiageng"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2024-03-09"},{"lineNumber":35,"author":{"gitId":"chiageng"},"content":" Person editedAlice \u003d new SupplierBuilder(ALICESUPPLIER).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2024-03-09"},{"lineNumber":36,"author":{"gitId":"chiageng"},"content":" .withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":37,"author":{"gitId":"chiageng"},"content":" assertTrue(ALICESUPPLIER.isSamePerson(editedAlice));","lastModifiedDate":"2024-03-09"},{"lineNumber":38,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":39,"author":{"gitId":"chiageng"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":40,"author":{"gitId":"chiageng"},"content":" editedAlice \u003d new SupplierBuilder(ALICESUPPLIER).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":41,"author":{"gitId":"chiageng"},"content":" assertFalse(ALICESUPPLIER.isSamePerson(editedAlice));","lastModifiedDate":"2024-03-09"},{"lineNumber":42,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":43,"author":{"gitId":"chiageng"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":44,"author":{"gitId":"chiageng"},"content":" Person editedBob \u003d new SupplierBuilder(BOBSUPPLIER).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":" assertTrue(BOBSUPPLIER.isSamePerson(editedBob));","lastModifiedDate":"2024-03-09"},{"lineNumber":46,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2024-03-09"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":" editedBob \u003d new SupplierBuilder(BOBSUPPLIER).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":" assertFalse(BOBSUPPLIER.isSamePerson(editedBob));","lastModifiedDate":"2024-03-09"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":53,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":" public void equals() {","lastModifiedDate":"2024-03-09"},{"lineNumber":55,"author":{"gitId":"chiageng"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-09"},{"lineNumber":56,"author":{"gitId":"chiageng"},"content":" Person aliceCopy \u003d new SupplierBuilder(ALICESUPPLIER).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":57,"author":{"gitId":"chiageng"},"content":" assertTrue(ALICESUPPLIER.equals(aliceCopy));","lastModifiedDate":"2024-03-09"},{"lineNumber":58,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":59,"author":{"gitId":"chiageng"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-09"},{"lineNumber":60,"author":{"gitId":"chiageng"},"content":" assertTrue(ALICESUPPLIER.equals(ALICESUPPLIER));","lastModifiedDate":"2024-03-09"},{"lineNumber":61,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":62,"author":{"gitId":"chiageng"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":63,"author":{"gitId":"chiageng"},"content":" assertFalse(ALICESUPPLIER.equals(null));","lastModifiedDate":"2024-03-09"},{"lineNumber":64,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":65,"author":{"gitId":"chiageng"},"content":" // different type -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":66,"author":{"gitId":"chiageng"},"content":" assertFalse(ALICESUPPLIER.equals(5));","lastModifiedDate":"2024-03-09"},{"lineNumber":67,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":68,"author":{"gitId":"chiageng"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":69,"author":{"gitId":"chiageng"},"content":" assertFalse(ALICESUPPLIER.equals(BOBSUPPLIER));","lastModifiedDate":"2024-03-09"},{"lineNumber":70,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":71,"author":{"gitId":"chiageng"},"content":" // different name -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":72,"author":{"gitId":"chiageng"},"content":" Person editedAlice \u003d new SupplierBuilder(ALICESUPPLIER).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":73,"author":{"gitId":"chiageng"},"content":" assertFalse(ALICESUPPLIER.equals(editedAlice));","lastModifiedDate":"2024-03-09"},{"lineNumber":74,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":75,"author":{"gitId":"chiageng"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":76,"author":{"gitId":"chiageng"},"content":" editedAlice \u003d new SupplierBuilder(ALICESUPPLIER).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":77,"author":{"gitId":"chiageng"},"content":" assertFalse(ALICESUPPLIER.equals(editedAlice));","lastModifiedDate":"2024-03-09"},{"lineNumber":78,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":79,"author":{"gitId":"chiageng"},"content":" // different email -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":80,"author":{"gitId":"chiageng"},"content":" editedAlice \u003d new SupplierBuilder(ALICESUPPLIER).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":81,"author":{"gitId":"chiageng"},"content":" assertFalse(ALICESUPPLIER.equals(editedAlice));","lastModifiedDate":"2024-03-09"},{"lineNumber":82,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":83,"author":{"gitId":"chiageng"},"content":" // different address -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":84,"author":{"gitId":"chiageng"},"content":" editedAlice \u003d new SupplierBuilder(ALICESUPPLIER).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":85,"author":{"gitId":"chiageng"},"content":" assertFalse(ALICESUPPLIER.equals(editedAlice));","lastModifiedDate":"2024-03-09"},{"lineNumber":86,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":87,"author":{"gitId":"chiageng"},"content":" /*","lastModifiedDate":"2024-03-09"},{"lineNumber":88,"author":{"gitId":"chiageng"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2024-03-09"},{"lineNumber":89,"author":{"gitId":"chiageng"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":90,"author":{"gitId":"chiageng"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2024-03-09"},{"lineNumber":91,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":92,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":93,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":94,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":95,"author":{"gitId":"chiageng"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-09"},{"lineNumber":96,"author":{"gitId":"chiageng"},"content":" String expected \u003d Supplier.class.getCanonicalName() + \"{name\u003d\" + ALICESUPPLIER.getName() + \", phone\u003d\"","lastModifiedDate":"2024-03-09"},{"lineNumber":97,"author":{"gitId":"chiageng"},"content":" + ALICESUPPLIER.getPhone()","lastModifiedDate":"2024-03-09"},{"lineNumber":98,"author":{"gitId":"chiageng"},"content":" + \", email\u003d\" + ALICESUPPLIER.getEmail() + \", address\u003d\"","lastModifiedDate":"2024-03-09"},{"lineNumber":99,"author":{"gitId":"chiageng"},"content":" + ALICESUPPLIER.getAddress()","lastModifiedDate":"2024-03-09"},{"lineNumber":100,"author":{"gitId":"chiageng"},"content":" + \", tags\u003d\" + ALICESUPPLIER.getTags()","lastModifiedDate":"2024-03-09"},{"lineNumber":101,"author":{"gitId":"chiageng"},"content":" + \", product\u003d\" + ALICESUPPLIER.getProduct()","lastModifiedDate":"2024-03-09"},{"lineNumber":102,"author":{"gitId":"chiageng"},"content":" + \", price\u003d\" + ALICESUPPLIER.getPrice()","lastModifiedDate":"2024-03-09"},{"lineNumber":103,"author":{"gitId":"chiageng"},"content":" + \"}\";","lastModifiedDate":"2024-03-09"},{"lineNumber":104,"author":{"gitId":"chiageng"},"content":" assertEquals(expected, ALICESUPPLIER.toString());","lastModifiedDate":"2024-03-09"},{"lineNumber":105,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":106,"author":{"gitId":"chiageng"},"content":"}","lastModifiedDate":"2024-03-09"}],"authorContributionMap":{"chiageng":106}},{"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":"chiageng"},"content":"import static seedu.address.testutil.TypicalPersons.BENSONMAINTAINER;","lastModifiedDate":"2024-03-09"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":"import static seedu.address.testutil.TypicalPersons.BENSONSTAFF;","lastModifiedDate":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":"import static seedu.address.testutil.TypicalPersons.BENSONSUPPLIER;","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","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-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Commission;","lastModifiedDate":"2024-03-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Employment;","lastModifiedDate":"2024-03-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Price;","lastModifiedDate":"2024-03-09"},{"lineNumber":25,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Product;","lastModifiedDate":"2024-03-09"},{"lineNumber":26,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Salary;","lastModifiedDate":"2024-03-09"},{"lineNumber":27,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Skill;","lastModifiedDate":"2024-03-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"chiageng"},"content":" private static final String INVALID_SALARY \u003d \"20\";","lastModifiedDate":"2024-03-09"},{"lineNumber":36,"author":{"gitId":"chiageng"},"content":" private static final String INVALID_PRODUCT \u003d \" \";","lastModifiedDate":"2024-03-09"},{"lineNumber":37,"author":{"gitId":"chiageng"},"content":" private static final String INVALID_EMPLOYMENT \u003d \"employment\";","lastModifiedDate":"2024-03-09"},{"lineNumber":38,"author":{"gitId":"chiageng"},"content":" private static final String INVALID_PRICE \u003d \"20\";","lastModifiedDate":"2024-03-09"},{"lineNumber":39,"author":{"gitId":"chiageng"},"content":" private static final String INVALID_SKILL \u003d \" \";","lastModifiedDate":"2024-03-09"},{"lineNumber":40,"author":{"gitId":"chiageng"},"content":" private static final String INVALID_COMMISSION \u003d \"20\";","lastModifiedDate":"2024-03-09"},{"lineNumber":41,"author":{"gitId":"chiageng"},"content":" private static final String NULL \u003d null;","lastModifiedDate":"2024-03-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"jannaleong"},"content":" private static final String VALID_NOTE \u003d BENSON.getNote().toString();","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":" private static final String VALID_SALARY \u003d BENSONSTAFF.getSalary().toString();","lastModifiedDate":"2024-03-09"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":" private static final String VALID_EMPLOYMENT \u003d BENSONSTAFF.getEmployment().toString();","lastModifiedDate":"2024-03-09"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":" private static final String VALID_PRODUCT \u003d BENSONSUPPLIER.getProduct().toString();","lastModifiedDate":"2024-03-09"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":" private static final String VALID_PRICE \u003d BENSONSUPPLIER.getPrice().toString();","lastModifiedDate":"2024-03-09"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":" private static final String VALID_SKILL \u003d BENSONMAINTAINER.getSkill().toString();","lastModifiedDate":"2024-03-09"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":" private static final String VALID_COMMISSION \u003d BENSONMAINTAINER.getCommission().toString();","lastModifiedDate":"2024-03-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","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_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","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":"chiageng"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":65,"author":{"gitId":"chiageng"},"content":" public void toModelType_validStaffDetails_returnsPerson() throws Exception {","lastModifiedDate":"2024-03-09"},{"lineNumber":66,"author":{"gitId":"chiageng"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedStaff(BENSONSTAFF);","lastModifiedDate":"2024-03-09"},{"lineNumber":67,"author":{"gitId":"chiageng"},"content":" assertEquals(BENSONSTAFF, person.toModelType());","lastModifiedDate":"2024-03-09"},{"lineNumber":68,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":69,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":70,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":71,"author":{"gitId":"chiageng"},"content":" public void toModelType_validSupplierDetails_returnsPerson() throws Exception {","lastModifiedDate":"2024-03-09"},{"lineNumber":72,"author":{"gitId":"chiageng"},"content":" JsonAdaptedSupplier person \u003d new JsonAdaptedSupplier(BENSONSUPPLIER);","lastModifiedDate":"2024-03-09"},{"lineNumber":73,"author":{"gitId":"chiageng"},"content":" assertEquals(BENSONSUPPLIER, person.toModelType());","lastModifiedDate":"2024-03-09"},{"lineNumber":74,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":75,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":76,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":77,"author":{"gitId":"chiageng"},"content":" public void toModelType_validMaintainerDetails_returnsPerson() throws Exception {","lastModifiedDate":"2024-03-09"},{"lineNumber":78,"author":{"gitId":"chiageng"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedMaintainer(BENSONMAINTAINER);","lastModifiedDate":"2024-03-09"},{"lineNumber":79,"author":{"gitId":"chiageng"},"content":" assertEquals(BENSONMAINTAINER, person.toModelType());","lastModifiedDate":"2024-03-09"},{"lineNumber":80,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":81,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":82,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"jannaleong"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_NOTE, VALID_TAGS,","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"chiageng"},"content":" NULL, NULL, NULL, NULL, NULL, NULL);","lastModifiedDate":"2024-03-09"},{"lineNumber":88,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"jannaleong"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_NOTE,","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"jannaleong"},"content":" VALID_TAGS, NULL, NULL, NULL, NULL, NULL, NULL);","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"jannaleong"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_NOTE, VALID_TAGS,","lastModifiedDate":"2024-03-18"},{"lineNumber":104,"author":{"gitId":"chiageng"},"content":" NULL, NULL, NULL, NULL, NULL, NULL);","lastModifiedDate":"2024-03-09"},{"lineNumber":105,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"jannaleong"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL, VALID_ADDRESS, VALID_NOTE,","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"jannaleong"},"content":" VALID_TAGS, NULL, NULL, NULL, NULL, NULL, NULL);","lastModifiedDate":"2024-03-18"},{"lineNumber":113,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":120,"author":{"gitId":"jannaleong"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_ADDRESS, VALID_NOTE, VALID_TAGS,","lastModifiedDate":"2024-03-18"},{"lineNumber":121,"author":{"gitId":"chiageng"},"content":" NULL, NULL, NULL, NULL, NULL, NULL);","lastModifiedDate":"2024-03-09"},{"lineNumber":122,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":128,"author":{"gitId":"jannaleong"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null, VALID_ADDRESS, VALID_NOTE,","lastModifiedDate":"2024-03-18"},{"lineNumber":129,"author":{"gitId":"jannaleong"},"content":" VALID_TAGS, NULL, NULL, NULL, NULL, NULL, NULL);","lastModifiedDate":"2024-03-18"},{"lineNumber":130,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":135,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":136,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":137,"author":{"gitId":"jannaleong"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_ADDRESS, VALID_NOTE, VALID_TAGS,","lastModifiedDate":"2024-03-18"},{"lineNumber":138,"author":{"gitId":"chiageng"},"content":" NULL, NULL, NULL, NULL, NULL, NULL);","lastModifiedDate":"2024-03-09"},{"lineNumber":139,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":144,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":145,"author":{"gitId":"jannaleong"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, null, VALID_NOTE,","lastModifiedDate":"2024-03-18"},{"lineNumber":146,"author":{"gitId":"jannaleong"},"content":" VALID_TAGS, NULL, NULL, NULL, NULL, NULL, NULL);","lastModifiedDate":"2024-03-18"},{"lineNumber":147,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":151,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":152,"author":{"gitId":"chiageng"},"content":" public void toModelType_invalidSalary_throwsIllegalValueException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":153,"author":{"gitId":"chiageng"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-09"},{"lineNumber":154,"author":{"gitId":"jannaleong"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_NOTE, VALID_TAGS,","lastModifiedDate":"2024-03-18"},{"lineNumber":155,"author":{"gitId":"chiageng"},"content":" INVALID_SALARY, VALID_EMPLOYMENT, NULL, NULL, NULL, NULL);","lastModifiedDate":"2024-03-09"},{"lineNumber":156,"author":{"gitId":"chiageng"},"content":" String expectedMessage \u003d Salary.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-09"},{"lineNumber":157,"author":{"gitId":"chiageng"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-09"},{"lineNumber":158,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":159,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":160,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":161,"author":{"gitId":"chiageng"},"content":" public void toModelType_invalidEmployment_throwsIllegalValueException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":162,"author":{"gitId":"chiageng"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-09"},{"lineNumber":163,"author":{"gitId":"jannaleong"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_NOTE, VALID_TAGS,","lastModifiedDate":"2024-03-18"},{"lineNumber":164,"author":{"gitId":"chiageng"},"content":" VALID_SALARY, INVALID_EMPLOYMENT, NULL, NULL, NULL, NULL);","lastModifiedDate":"2024-03-09"},{"lineNumber":165,"author":{"gitId":"chiageng"},"content":" String expectedMessage \u003d Employment.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-09"},{"lineNumber":166,"author":{"gitId":"chiageng"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-09"},{"lineNumber":167,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":168,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":169,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":170,"author":{"gitId":"chiageng"},"content":" public void toModelType_invalidProduct_throwsIllegalValueException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":171,"author":{"gitId":"chiageng"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-09"},{"lineNumber":172,"author":{"gitId":"jannaleong"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_NOTE, VALID_TAGS,","lastModifiedDate":"2024-03-18"},{"lineNumber":173,"author":{"gitId":"chiageng"},"content":" NULL, NULL, INVALID_PRODUCT, VALID_PRICE, NULL, NULL);","lastModifiedDate":"2024-03-09"},{"lineNumber":174,"author":{"gitId":"chiageng"},"content":" String expectedMessage \u003d Product.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-09"},{"lineNumber":175,"author":{"gitId":"chiageng"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-09"},{"lineNumber":176,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":177,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":178,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":179,"author":{"gitId":"chiageng"},"content":" public void toModelType_invalidPrice_throwsIllegalValueException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":180,"author":{"gitId":"chiageng"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-09"},{"lineNumber":181,"author":{"gitId":"jannaleong"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_NOTE, VALID_TAGS,","lastModifiedDate":"2024-03-18"},{"lineNumber":182,"author":{"gitId":"chiageng"},"content":" NULL, NULL, VALID_PRODUCT, INVALID_PRICE, NULL, NULL);","lastModifiedDate":"2024-03-09"},{"lineNumber":183,"author":{"gitId":"chiageng"},"content":" String expectedMessage \u003d Price.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-09"},{"lineNumber":184,"author":{"gitId":"chiageng"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-09"},{"lineNumber":185,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":186,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":187,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":188,"author":{"gitId":"chiageng"},"content":" public void toModelType_invalidSkill_throwsIllegalValueException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":189,"author":{"gitId":"chiageng"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-09"},{"lineNumber":190,"author":{"gitId":"jannaleong"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_NOTE, VALID_TAGS,","lastModifiedDate":"2024-03-18"},{"lineNumber":191,"author":{"gitId":"chiageng"},"content":" NULL, NULL, NULL, NULL, INVALID_SKILL, VALID_COMMISSION);","lastModifiedDate":"2024-03-09"},{"lineNumber":192,"author":{"gitId":"chiageng"},"content":" String expectedMessage \u003d Skill.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-09"},{"lineNumber":193,"author":{"gitId":"chiageng"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-09"},{"lineNumber":194,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":195,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":196,"author":{"gitId":"chiageng"},"content":" @Test","lastModifiedDate":"2024-03-09"},{"lineNumber":197,"author":{"gitId":"chiageng"},"content":" public void toModelType_invalidCommission_throwsIllegalValueException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":198,"author":{"gitId":"chiageng"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-09"},{"lineNumber":199,"author":{"gitId":"jannaleong"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_NOTE, VALID_TAGS,","lastModifiedDate":"2024-03-18"},{"lineNumber":200,"author":{"gitId":"chiageng"},"content":" NULL, NULL, NULL, NULL, VALID_SKILL, INVALID_COMMISSION);","lastModifiedDate":"2024-03-09"},{"lineNumber":201,"author":{"gitId":"chiageng"},"content":" String expectedMessage \u003d Commission.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-09"},{"lineNumber":202,"author":{"gitId":"chiageng"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-09"},{"lineNumber":203,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":204,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":205,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":206,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":207,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13"},{"lineNumber":208,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13"},{"lineNumber":209,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":210,"author":{"gitId":"jannaleong"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_NOTE, invalidTags,","lastModifiedDate":"2024-03-18"},{"lineNumber":211,"author":{"gitId":"chiageng"},"content":" NULL, NULL, NULL, NULL, NULL, NULL);","lastModifiedDate":"2024-03-09"},{"lineNumber":212,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":213,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":215,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"chiageng":95,"jannaleong":20,"-":100}},{"path":"src/test/java/seedu/address/testutil/EditMaintainerDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yleeyilin"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"yleeyilin"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"yleeyilin"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"yleeyilin"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.logic.commands.EditMaintainerCommand.EditMaintainerDescriptor;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Commission;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Maintainer;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Skill;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"yleeyilin"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"yleeyilin"},"content":" * A utility class to help with building EditMaintainerDescriptor objects.","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"yleeyilin"},"content":"public class EditMaintainerDescriptorBuilder {","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"yleeyilin"},"content":" private EditMaintainerDescriptor descriptor;","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"yleeyilin"},"content":" public EditMaintainerDescriptorBuilder() {","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"yleeyilin"},"content":" descriptor \u003d new EditMaintainerDescriptor();","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"yleeyilin"},"content":" public EditMaintainerDescriptorBuilder(EditMaintainerDescriptor descriptor) {","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"yleeyilin"},"content":" this.descriptor \u003d new EditMaintainerDescriptor(descriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"yleeyilin"},"content":" * Returns an {@code EditMaintainerDescriptor} with fields containing {@code maintainer}\u0027s details","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"yleeyilin"},"content":" public EditMaintainerDescriptorBuilder(Maintainer maintainer) {","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"yleeyilin"},"content":" descriptor \u003d new EditMaintainerDescriptor();","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"yleeyilin"},"content":" descriptor.setName(maintainer.getName());","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"yleeyilin"},"content":" descriptor.setPhone(maintainer.getPhone());","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"yleeyilin"},"content":" descriptor.setEmail(maintainer.getEmail());","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"yleeyilin"},"content":" descriptor.setAddress(maintainer.getAddress());","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"yleeyilin"},"content":" descriptor.setSkill(maintainer.getSkill());","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"yleeyilin"},"content":" descriptor.setCommission(maintainer.getCommission());","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"yleeyilin"},"content":" descriptor.setTags(maintainer.getTags());","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"yleeyilin"},"content":" * Sets the {@code Name} of the {@code EditMaintainerDescriptor} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"yleeyilin"},"content":" public EditMaintainerDescriptorBuilder withName(String name) {","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"yleeyilin"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"yleeyilin"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"yleeyilin"},"content":" * Sets the {@code Phone} of the {@code EditMaintainerDescriptor} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"yleeyilin"},"content":" public EditMaintainerDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"yleeyilin"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"yleeyilin"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"yleeyilin"},"content":" * Sets the {@code Email} of the {@code EditMaintainerDescriptor} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"yleeyilin"},"content":" public EditMaintainerDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"yleeyilin"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"yleeyilin"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"yleeyilin"},"content":" * Sets the {@code Address} of the {@code EditMaintainerDescriptor} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"yleeyilin"},"content":" public EditMaintainerDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"yleeyilin"},"content":" descriptor.setAddress(new Address(address));","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"yleeyilin"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"yleeyilin"},"content":" * Sets the {@code Skill} of the {@code EditMaintainerDescriptor} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"yleeyilin"},"content":" public EditMaintainerDescriptorBuilder withSkill(String skill) {","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"yleeyilin"},"content":" descriptor.setSkill(new Skill(skill));","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"yleeyilin"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"yleeyilin"},"content":" * Sets the {@code Commission} of the {@code EditMaintainerDescriptor} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":88,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"yleeyilin"},"content":" public EditMaintainerDescriptorBuilder withCommission(String commission) {","lastModifiedDate":"2024-03-17"},{"lineNumber":90,"author":{"gitId":"yleeyilin"},"content":" descriptor.setCommission(new Commission(commission));","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"yleeyilin"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"yleeyilin"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code EditMaintainerDescriptor}","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"yleeyilin"},"content":" * that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"yleeyilin"},"content":" public EditMaintainerDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"yleeyilin"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"yleeyilin"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"yleeyilin"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"yleeyilin"},"content":" public EditMaintainerDescriptor build() {","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"yleeyilin"},"content":" return descriptor;","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"yleeyilin"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"yleeyilin":107}},{"path":"src/test/java/seedu/address/testutil/EditStaffDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yleeyilin"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"yleeyilin"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"yleeyilin"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"yleeyilin"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.logic.commands.EditStaffCommand.EditStaffDescriptor;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Employment;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Salary;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Staff;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"yleeyilin"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"yleeyilin"},"content":" * A utility class to help with building EditStaffDescriptor objects.","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"yleeyilin"},"content":"public class EditStaffDescriptorBuilder {","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"yleeyilin"},"content":" private EditStaffDescriptor descriptor;","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"yleeyilin"},"content":" public EditStaffDescriptorBuilder() {","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"yleeyilin"},"content":" descriptor \u003d new EditStaffDescriptor();","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"yleeyilin"},"content":" public EditStaffDescriptorBuilder(EditStaffDescriptor descriptor) {","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"yleeyilin"},"content":" this.descriptor \u003d new EditStaffDescriptor(descriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"yleeyilin"},"content":" * Returns an {@code EditStaffDescriptor} with fields containing {@code staff}\u0027s details","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"yleeyilin"},"content":" public EditStaffDescriptorBuilder(Staff staff) {","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"yleeyilin"},"content":" descriptor \u003d new EditStaffDescriptor();","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"yleeyilin"},"content":" descriptor.setName(staff.getName());","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"yleeyilin"},"content":" descriptor.setPhone(staff.getPhone());","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"yleeyilin"},"content":" descriptor.setEmail(staff.getEmail());","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"yleeyilin"},"content":" descriptor.setAddress(staff.getAddress());","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"yleeyilin"},"content":" descriptor.setSalary(staff.getSalary());","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"yleeyilin"},"content":" descriptor.setEmployment(staff.getEmployment());","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"yleeyilin"},"content":" descriptor.setTags(staff.getTags());","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"yleeyilin"},"content":" * Sets the {@code Name} of the {@code EditStaffDescriptor} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"yleeyilin"},"content":" public EditStaffDescriptorBuilder withName(String name) {","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"yleeyilin"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"yleeyilin"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"yleeyilin"},"content":" * Sets the {@code Phone} of the {@code EditStaffDescriptor} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"yleeyilin"},"content":" public EditStaffDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"yleeyilin"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"yleeyilin"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"yleeyilin"},"content":" * Sets the {@code Email} of the {@code EditStaffDescriptor} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"yleeyilin"},"content":" public EditStaffDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"yleeyilin"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"yleeyilin"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"yleeyilin"},"content":" * Sets the {@code Address} of the {@code EditStaffDescriptor} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"yleeyilin"},"content":" public EditStaffDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"yleeyilin"},"content":" descriptor.setAddress(new Address(address));","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"yleeyilin"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"yleeyilin"},"content":" * Sets the {@code Salary} of the {@code EditStaffDescriptor} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"yleeyilin"},"content":" public EditStaffDescriptorBuilder withSalary(String salary) {","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"yleeyilin"},"content":" descriptor.setSalary(new Salary(salary));","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"yleeyilin"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"yleeyilin"},"content":" * Sets the {@code Employment} of the {@code EditStaffDescriptor} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":88,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"yleeyilin"},"content":" public EditStaffDescriptorBuilder withEmployment(String employment) {","lastModifiedDate":"2024-03-17"},{"lineNumber":90,"author":{"gitId":"yleeyilin"},"content":" descriptor.setEmployment(new Employment(employment));","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"yleeyilin"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"yleeyilin"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code EditStaffDescriptor}","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"yleeyilin"},"content":" * that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"yleeyilin"},"content":" public EditStaffDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"yleeyilin"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"yleeyilin"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"yleeyilin"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"yleeyilin"},"content":" public EditStaffDescriptor build() {","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"yleeyilin"},"content":" return descriptor;","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"yleeyilin"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"yleeyilin":107}},{"path":"src/test/java/seedu/address/testutil/EditSupplierDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yleeyilin"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"yleeyilin"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"yleeyilin"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"yleeyilin"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.logic.commands.EditSupplierCommand.EditSupplierDescriptor;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Price;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Product;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.person.Supplier;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"yleeyilin"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"yleeyilin"},"content":" * A utility class to help with building EditSupplierDescriptor objects.","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"yleeyilin"},"content":"public class EditSupplierDescriptorBuilder {","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"yleeyilin"},"content":" private EditSupplierDescriptor descriptor;","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"yleeyilin"},"content":" public EditSupplierDescriptorBuilder() {","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"yleeyilin"},"content":" descriptor \u003d new EditSupplierDescriptor();","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"yleeyilin"},"content":" public EditSupplierDescriptorBuilder(EditSupplierDescriptor descriptor) {","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"yleeyilin"},"content":" this.descriptor \u003d new EditSupplierDescriptor(descriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"yleeyilin"},"content":" * Returns an {@code EditSupplierDescriptor} with fields containing {@code supplier}\u0027s details","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"yleeyilin"},"content":" public EditSupplierDescriptorBuilder(Supplier supplier) {","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"yleeyilin"},"content":" descriptor \u003d new EditSupplierDescriptor();","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"yleeyilin"},"content":" descriptor.setName(supplier.getName());","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"yleeyilin"},"content":" descriptor.setPhone(supplier.getPhone());","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"yleeyilin"},"content":" descriptor.setEmail(supplier.getEmail());","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"yleeyilin"},"content":" descriptor.setAddress(supplier.getAddress());","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"yleeyilin"},"content":" descriptor.setProduct(supplier.getProduct());","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"yleeyilin"},"content":" descriptor.setPrice(supplier.getPrice());","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"yleeyilin"},"content":" descriptor.setTags(supplier.getTags());","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"yleeyilin"},"content":" * Sets the {@code Name} of the {@code EditSupplierDescriptor} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"yleeyilin"},"content":" public EditSupplierDescriptorBuilder withName(String name) {","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"yleeyilin"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"yleeyilin"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"yleeyilin"},"content":" * Sets the {@code Phone} of the {@code EditSupplierDescriptor} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"yleeyilin"},"content":" public EditSupplierDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"yleeyilin"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"yleeyilin"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"yleeyilin"},"content":" * Sets the {@code Email} of the {@code EditSupplierDescriptor} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"yleeyilin"},"content":" public EditSupplierDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"yleeyilin"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"yleeyilin"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"yleeyilin"},"content":" * Sets the {@code Address} of the {@code EditSupplierDescriptor} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"yleeyilin"},"content":" public EditSupplierDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"yleeyilin"},"content":" descriptor.setAddress(new Address(address));","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"yleeyilin"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"yleeyilin"},"content":" * Sets the {@code Product} of the {@code EditSupplierDescriptor} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"yleeyilin"},"content":" public EditSupplierDescriptorBuilder withProduct(String product) {","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"yleeyilin"},"content":" descriptor.setProduct(new Product(product));","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"yleeyilin"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":88,"author":{"gitId":"yleeyilin"},"content":" * Sets the {@code Price} of the {@code EditSupplierDescriptor} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":90,"author":{"gitId":"yleeyilin"},"content":" public EditSupplierDescriptorBuilder withPrice(String price) {","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"yleeyilin"},"content":" descriptor.setPrice(new Price(price));","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"yleeyilin"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"yleeyilin"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code EditSupplierDescriptor}","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"yleeyilin"},"content":" * that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"yleeyilin"},"content":" public EditSupplierDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"yleeyilin"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"yleeyilin"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"yleeyilin"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"yleeyilin"},"content":" public EditSupplierDescriptor build() {","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"yleeyilin"},"content":" return descriptor;","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"yleeyilin"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"yleeyilin":108}},{"path":"src/test/java/seedu/address/testutil/MaintainerBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chiageng"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-09"},{"lineNumber":2,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":3,"author":{"gitId":"chiageng"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-09"},{"lineNumber":4,"author":{"gitId":"chiageng"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-09"},{"lineNumber":5,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":6,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-09"},{"lineNumber":7,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Commission;","lastModifiedDate":"2024-03-09"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Maintainer;","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-09"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-09"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Skill;","lastModifiedDate":"2024-03-09"},{"lineNumber":13,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-09"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":"/**","lastModifiedDate":"2024-03-09"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2024-03-09"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":"public class MaintainerBuilder {","lastModifiedDate":"2024-03-09"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":20,"author":{"gitId":"chiageng"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2024-03-09"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2024-03-09"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2024-03-09"},{"lineNumber":23,"author":{"gitId":"chiageng"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2024-03-09"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":" public static final String DEFAULT_TAG \u003d \"maintainer\";","lastModifiedDate":"2024-03-09"},{"lineNumber":25,"author":{"gitId":"chiageng"},"content":" public static final String DEFAULT_SKILL \u003d \"train dog\";","lastModifiedDate":"2024-03-09"},{"lineNumber":26,"author":{"gitId":"chiageng"},"content":" public static final String DEFAULT_COMMISSION \u003d \"$50/hr\";","lastModifiedDate":"2024-03-09"},{"lineNumber":27,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":28,"author":{"gitId":"chiageng"},"content":" private Name name;","lastModifiedDate":"2024-03-09"},{"lineNumber":29,"author":{"gitId":"chiageng"},"content":" private Phone phone;","lastModifiedDate":"2024-03-09"},{"lineNumber":30,"author":{"gitId":"chiageng"},"content":" private Email email;","lastModifiedDate":"2024-03-09"},{"lineNumber":31,"author":{"gitId":"chiageng"},"content":" private Address address;","lastModifiedDate":"2024-03-09"},{"lineNumber":32,"author":{"gitId":"chiageng"},"content":" private Skill skill;","lastModifiedDate":"2024-03-09"},{"lineNumber":33,"author":{"gitId":"chiageng"},"content":" private Commission commission;","lastModifiedDate":"2024-03-09"},{"lineNumber":34,"author":{"gitId":"chiageng"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2024-03-09"},{"lineNumber":35,"author":{"gitId":"chiageng"},"content":" private Tag tag;","lastModifiedDate":"2024-03-09"},{"lineNumber":36,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":37,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":38,"author":{"gitId":"chiageng"},"content":" * Creates a {@code MaintainerBuilder} with the default details.","lastModifiedDate":"2024-03-09"},{"lineNumber":39,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":40,"author":{"gitId":"chiageng"},"content":" public MaintainerBuilder() {","lastModifiedDate":"2024-03-09"},{"lineNumber":41,"author":{"gitId":"chiageng"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2024-03-09"},{"lineNumber":42,"author":{"gitId":"chiageng"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2024-03-09"},{"lineNumber":43,"author":{"gitId":"chiageng"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2024-03-09"},{"lineNumber":44,"author":{"gitId":"chiageng"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2024-03-09"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-09"},{"lineNumber":46,"author":{"gitId":"chiageng"},"content":" tag \u003d new Tag(DEFAULT_TAG);","lastModifiedDate":"2024-03-09"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":" tags.add(tag);","lastModifiedDate":"2024-03-09"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":" skill \u003d new Skill(DEFAULT_SKILL);","lastModifiedDate":"2024-03-09"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":" commission \u003d new Commission(DEFAULT_COMMISSION);","lastModifiedDate":"2024-03-09"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":53,"author":{"gitId":"chiageng"},"content":" * Initializes the MaintainerBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2024-03-09"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":55,"author":{"gitId":"chiageng"},"content":" public MaintainerBuilder(Maintainer personToCopy) {","lastModifiedDate":"2024-03-09"},{"lineNumber":56,"author":{"gitId":"chiageng"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2024-03-09"},{"lineNumber":57,"author":{"gitId":"chiageng"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2024-03-09"},{"lineNumber":58,"author":{"gitId":"chiageng"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2024-03-09"},{"lineNumber":59,"author":{"gitId":"chiageng"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2024-03-09"},{"lineNumber":60,"author":{"gitId":"chiageng"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2024-03-09"},{"lineNumber":61,"author":{"gitId":"chiageng"},"content":" tag \u003d new Tag(DEFAULT_TAG);","lastModifiedDate":"2024-03-09"},{"lineNumber":62,"author":{"gitId":"chiageng"},"content":" tags.add(tag);","lastModifiedDate":"2024-03-09"},{"lineNumber":63,"author":{"gitId":"chiageng"},"content":" skill \u003d personToCopy.getSkill();","lastModifiedDate":"2024-03-09"},{"lineNumber":64,"author":{"gitId":"chiageng"},"content":" commission \u003d personToCopy.getCommission();","lastModifiedDate":"2024-03-09"},{"lineNumber":65,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":66,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":67,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":68,"author":{"gitId":"chiageng"},"content":" * Sets the {@code Name} of the {@code Maintainer} that we are building.","lastModifiedDate":"2024-03-09"},{"lineNumber":69,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":70,"author":{"gitId":"chiageng"},"content":" public MaintainerBuilder withName(String name) {","lastModifiedDate":"2024-03-09"},{"lineNumber":71,"author":{"gitId":"chiageng"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2024-03-09"},{"lineNumber":72,"author":{"gitId":"chiageng"},"content":" return this;","lastModifiedDate":"2024-03-09"},{"lineNumber":73,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":74,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":75,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":76,"author":{"gitId":"chiageng"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Maintainer} that we are building.","lastModifiedDate":"2024-03-09"},{"lineNumber":77,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":78,"author":{"gitId":"chiageng"},"content":" public MaintainerBuilder withTags(String ... tags) {","lastModifiedDate":"2024-03-09"},{"lineNumber":79,"author":{"gitId":"chiageng"},"content":" /*","lastModifiedDate":"2024-03-09"},{"lineNumber":80,"author":{"gitId":"chiageng"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2024-03-09"},{"lineNumber":81,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":82,"author":{"gitId":"chiageng"},"content":" return this;","lastModifiedDate":"2024-03-09"},{"lineNumber":83,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":84,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":85,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":86,"author":{"gitId":"chiageng"},"content":" * Sets the {@code Address} of the {@code Maintainer} that we are building.","lastModifiedDate":"2024-03-09"},{"lineNumber":87,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":88,"author":{"gitId":"chiageng"},"content":" public MaintainerBuilder withAddress(String address) {","lastModifiedDate":"2024-03-09"},{"lineNumber":89,"author":{"gitId":"chiageng"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2024-03-09"},{"lineNumber":90,"author":{"gitId":"chiageng"},"content":" return this;","lastModifiedDate":"2024-03-09"},{"lineNumber":91,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":92,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":93,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":94,"author":{"gitId":"chiageng"},"content":" * Sets the {@code Phone} of the {@code Maintainer} that we are building.","lastModifiedDate":"2024-03-09"},{"lineNumber":95,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":96,"author":{"gitId":"chiageng"},"content":" public MaintainerBuilder withPhone(String phone) {","lastModifiedDate":"2024-03-09"},{"lineNumber":97,"author":{"gitId":"chiageng"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2024-03-09"},{"lineNumber":98,"author":{"gitId":"chiageng"},"content":" return this;","lastModifiedDate":"2024-03-09"},{"lineNumber":99,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":100,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":101,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":102,"author":{"gitId":"chiageng"},"content":" * Sets the {@code Email} of the {@code Maintainer} that we are building.","lastModifiedDate":"2024-03-09"},{"lineNumber":103,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":104,"author":{"gitId":"chiageng"},"content":" public MaintainerBuilder withEmail(String email) {","lastModifiedDate":"2024-03-09"},{"lineNumber":105,"author":{"gitId":"chiageng"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2024-03-09"},{"lineNumber":106,"author":{"gitId":"chiageng"},"content":" return this;","lastModifiedDate":"2024-03-09"},{"lineNumber":107,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":108,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":109,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":110,"author":{"gitId":"chiageng"},"content":" * Sets the {@code Product} of the {@code Maintainer} that we are building.","lastModifiedDate":"2024-03-09"},{"lineNumber":111,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":112,"author":{"gitId":"chiageng"},"content":" public MaintainerBuilder withSkill(String skill) {","lastModifiedDate":"2024-03-09"},{"lineNumber":113,"author":{"gitId":"chiageng"},"content":" this.skill \u003d new Skill(skill);","lastModifiedDate":"2024-03-09"},{"lineNumber":114,"author":{"gitId":"chiageng"},"content":" return this;","lastModifiedDate":"2024-03-09"},{"lineNumber":115,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":116,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":117,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":118,"author":{"gitId":"chiageng"},"content":" * Sets the {@code Price} of the {@code Maintainer} that we are building.","lastModifiedDate":"2024-03-09"},{"lineNumber":119,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":120,"author":{"gitId":"chiageng"},"content":" public MaintainerBuilder withCommission(String commission) {","lastModifiedDate":"2024-03-09"},{"lineNumber":121,"author":{"gitId":"chiageng"},"content":" this.commission \u003d new Commission(commission);","lastModifiedDate":"2024-03-09"},{"lineNumber":122,"author":{"gitId":"chiageng"},"content":" return this;","lastModifiedDate":"2024-03-09"},{"lineNumber":123,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":124,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":125,"author":{"gitId":"chiageng"},"content":" public Maintainer build() {","lastModifiedDate":"2024-03-09"},{"lineNumber":126,"author":{"gitId":"chiageng"},"content":" return new Maintainer(name, phone, email, address, tags, skill, commission);","lastModifiedDate":"2024-03-09"},{"lineNumber":127,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":128,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":129,"author":{"gitId":"chiageng"},"content":"}","lastModifiedDate":"2024-03-09"}],"authorContributionMap":{"chiageng":129}},{"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":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-01-18"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":"import seedu.address.model.person.Note;","lastModifiedDate":"2024-03-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":"","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":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03"},{"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":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":" public static final String DEFAULT_NOTE \u003d \"\";","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":" public static final String DEFAULT_TAG \u003d \"other\";","lastModifiedDate":"2024-03-08"},{"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":"jannaleong"},"content":" private Note note;","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20"},{"lineNumber":32,"author":{"gitId":"chiageng"},"content":" private Tag tag;","lastModifiedDate":"2024-03-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20"},{"lineNumber":41,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20"},{"lineNumber":42,"author":{"gitId":"jannaleong"},"content":" note \u003d new Note(DEFAULT_NOTE);","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":44,"author":{"gitId":"chiageng"},"content":" tag \u003d new Tag(DEFAULT_TAG);","lastModifiedDate":"2024-03-08"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":" tags.add(tag);","lastModifiedDate":"2024-03-08"},{"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":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20"},{"lineNumber":54,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20"},{"lineNumber":56,"author":{"gitId":"jannaleong"},"content":" note \u003d personToCopy.getNote();","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20"},{"lineNumber":58,"author":{"gitId":"chiageng"},"content":" tag \u003d new Tag(DEFAULT_TAG);","lastModifiedDate":"2024-03-08"},{"lineNumber":59,"author":{"gitId":"chiageng"},"content":" tags.add(tag);","lastModifiedDate":"2024-03-08"},{"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":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":71,"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":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String ... tags) {","lastModifiedDate":"2017-08-15"},{"lineNumber":74,"author":{"gitId":"chiageng"},"content":" /*","lastModifiedDate":"2024-03-09"},{"lineNumber":75,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2024-03-09"},{"lineNumber":76,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"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":"2017-07-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":84,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","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":"jannaleong"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"jannaleong"},"content":" * Sets the {@code Note} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"jannaleong"},"content":" public PersonBuilder withNote(String note) {","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"jannaleong"},"content":" this.note \u003d new Note(note);","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"jannaleong"},"content":" return this;","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":100,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20"},{"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":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":108,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20"},{"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":" public Person build() {","lastModifiedDate":"2017-04-05"},{"lineNumber":113,"author":{"gitId":"jannaleong"},"content":" return new Person(name, phone, email, address, note, tags);","lastModifiedDate":"2024-03-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":{"chiageng":8,"jannaleong":14,"-":94}},{"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":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COMMISSION;","lastModifiedDate":"2024-03-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":6,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMPLOYMENT;","lastModifiedDate":"2024-03-09"},{"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":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PRICE;","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PRODUCT;","lastModifiedDate":"2024-03-09"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SALARY;","lastModifiedDate":"2024-03-09"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SKILL;","lastModifiedDate":"2024-03-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":"import seedu.address.logic.commands.AddMaintainerCommand;","lastModifiedDate":"2024-03-09"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":"import seedu.address.logic.commands.AddStaffCommand;","lastModifiedDate":"2024-03-09"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":"import seedu.address.logic.commands.AddSupplierCommand;","lastModifiedDate":"2024-03-09"},{"lineNumber":18,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2018-03-26"},{"lineNumber":20,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.logic.commands.EditMaintainerCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.logic.commands.EditMaintainerCommand.EditMaintainerDescriptor;","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.logic.commands.EditStaffCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.logic.commands.EditStaffCommand.EditStaffDescriptor;","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.logic.commands.EditSupplierCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"yleeyilin"},"content":"import seedu.address.logic.commands.EditSupplierCommand.EditSupplierDescriptor;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Maintainer;","lastModifiedDate":"2024-03-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":28,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Staff;","lastModifiedDate":"2024-03-09"},{"lineNumber":29,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Supplier;","lastModifiedDate":"2024-03-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static String getAddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2017-03-29"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06"},{"lineNumber":43,"author":{"gitId":"chiageng"},"content":" public static String getAddStaffCommand(Staff person) {","lastModifiedDate":"2024-03-09"},{"lineNumber":44,"author":{"gitId":"chiageng"},"content":" return AddStaffCommand.COMMAND_WORD + \" \" + getStaffDetails(person);","lastModifiedDate":"2024-03-09"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":46,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":" public static String getAddSupplierCommand(Supplier person) {","lastModifiedDate":"2024-03-09"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":" return AddSupplierCommand.COMMAND_WORD + \" \" + getSupplierDetails(person);","lastModifiedDate":"2024-03-09"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":50,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":" public static String getAddMaintainerCommand(Maintainer person) {","lastModifiedDate":"2024-03-09"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":" return AddMaintainerCommand.COMMAND_WORD + \" \" + getMaintainerDetails(person);","lastModifiedDate":"2024-03-09"},{"lineNumber":53,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":55,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"yleeyilin"},"content":" * Returns an edit command string for adding the {@code person}.","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"yleeyilin"},"content":" public static String getEditCommand(Person person) {","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"yleeyilin"},"content":" return EditCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"yleeyilin"},"content":" public static String getEditStaffCommand(Staff person) {","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"yleeyilin"},"content":" return EditStaffCommand.COMMAND_WORD + \" \" + getStaffDetails(person);","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"yleeyilin"},"content":" public static String getEditSupplierCommand(Supplier person) {","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"yleeyilin"},"content":" return EditSupplierCommand.COMMAND_WORD + \" \" + getSupplierDetails(person);","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"yleeyilin"},"content":" public static String getEditMaintainerCommand(Maintainer person) {","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"yleeyilin"},"content":" return EditMaintainerCommand.COMMAND_WORD + \" \" + getMaintainerDetails(person);","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":79,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05"},{"lineNumber":80,"author":{"gitId":"-"},"content":" sb.append(PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2017-06-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":" sb.append(PREFIX_PHONE + person.getPhone().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":82,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":83,"author":{"gitId":"-"},"content":" sb.append(PREFIX_ADDRESS + person.getAddress().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":84,"author":{"gitId":"chiageng"},"content":" /*","lastModifiedDate":"2024-03-09"},{"lineNumber":85,"author":{"gitId":"-"},"content":" person.getTags().stream().forEach(","lastModifiedDate":"2024-03-09"},{"lineNumber":86,"author":{"gitId":"-"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2024-03-09"},{"lineNumber":87,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2024-03-09"},{"lineNumber":88,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":92,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":93,"author":{"gitId":"chiageng"},"content":" * Returns the part of command string for the given {@code staff}\u0027s details.","lastModifiedDate":"2024-03-09"},{"lineNumber":94,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":95,"author":{"gitId":"chiageng"},"content":" public static String getStaffDetails(Staff person) {","lastModifiedDate":"2024-03-09"},{"lineNumber":96,"author":{"gitId":"chiageng"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-03-09"},{"lineNumber":97,"author":{"gitId":"chiageng"},"content":" sb.append(PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2024-03-09"},{"lineNumber":98,"author":{"gitId":"chiageng"},"content":" sb.append(PREFIX_PHONE + person.getPhone().value + \" \");","lastModifiedDate":"2024-03-09"},{"lineNumber":99,"author":{"gitId":"chiageng"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2024-03-09"},{"lineNumber":100,"author":{"gitId":"chiageng"},"content":" sb.append(PREFIX_ADDRESS + person.getAddress().value + \" \");","lastModifiedDate":"2024-03-09"},{"lineNumber":101,"author":{"gitId":"chiageng"},"content":" sb.append(PREFIX_SALARY + person.getSalary().value + \" \");","lastModifiedDate":"2024-03-09"},{"lineNumber":102,"author":{"gitId":"chiageng"},"content":" sb.append(PREFIX_EMPLOYMENT + person.getEmployment().value + \" \");","lastModifiedDate":"2024-03-18"},{"lineNumber":103,"author":{"gitId":"chiageng"},"content":" return sb.toString();","lastModifiedDate":"2024-03-09"},{"lineNumber":104,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":105,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":106,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":107,"author":{"gitId":"chiageng"},"content":" * Returns the part of command string for the given {@code supplier}\u0027s details.","lastModifiedDate":"2024-03-09"},{"lineNumber":108,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":109,"author":{"gitId":"chiageng"},"content":" public static String getSupplierDetails(Supplier person) {","lastModifiedDate":"2024-03-09"},{"lineNumber":110,"author":{"gitId":"chiageng"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-03-09"},{"lineNumber":111,"author":{"gitId":"chiageng"},"content":" sb.append(PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2024-03-09"},{"lineNumber":112,"author":{"gitId":"chiageng"},"content":" sb.append(PREFIX_PHONE + person.getPhone().value + \" \");","lastModifiedDate":"2024-03-09"},{"lineNumber":113,"author":{"gitId":"chiageng"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2024-03-09"},{"lineNumber":114,"author":{"gitId":"chiageng"},"content":" sb.append(PREFIX_ADDRESS + person.getAddress().value + \" \");","lastModifiedDate":"2024-03-09"},{"lineNumber":115,"author":{"gitId":"chiageng"},"content":" sb.append(PREFIX_PRODUCT + person.getProduct().value + \" \");","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"chiageng"},"content":" sb.append(PREFIX_PRICE + person.getPrice().value + \" \");","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"chiageng"},"content":" return sb.toString();","lastModifiedDate":"2024-03-09"},{"lineNumber":118,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":119,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":120,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":121,"author":{"gitId":"chiageng"},"content":" * Returns the part of command string for the given {@code maintainer}\u0027s details.","lastModifiedDate":"2024-03-09"},{"lineNumber":122,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":123,"author":{"gitId":"chiageng"},"content":" public static String getMaintainerDetails(Maintainer person) {","lastModifiedDate":"2024-03-09"},{"lineNumber":124,"author":{"gitId":"chiageng"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-03-09"},{"lineNumber":125,"author":{"gitId":"chiageng"},"content":" sb.append(PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2024-03-09"},{"lineNumber":126,"author":{"gitId":"chiageng"},"content":" sb.append(PREFIX_PHONE + person.getPhone().value + \" \");","lastModifiedDate":"2024-03-09"},{"lineNumber":127,"author":{"gitId":"chiageng"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2024-03-09"},{"lineNumber":128,"author":{"gitId":"chiageng"},"content":" sb.append(PREFIX_ADDRESS + person.getAddress().value + \" \");","lastModifiedDate":"2024-03-09"},{"lineNumber":129,"author":{"gitId":"chiageng"},"content":" sb.append(PREFIX_SKILL + person.getSkill().value + \" \");","lastModifiedDate":"2024-03-18"},{"lineNumber":130,"author":{"gitId":"chiageng"},"content":" sb.append(PREFIX_COMMISSION + person.getCommission().value + \" \");","lastModifiedDate":"2024-03-18"},{"lineNumber":131,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2024-03-09"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":134,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26"},{"lineNumber":135,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26"},{"lineNumber":136,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26"},{"lineNumber":137,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26"},{"lineNumber":138,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26"},{"lineNumber":139,"author":{"gitId":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":140,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":141,"author":{"gitId":"-"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":142,"author":{"gitId":"yleeyilin"},"content":" return sb.toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":144,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":145,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"yleeyilin"},"content":" * Returns the part of command string for the given {@code EditStaffDescriptor}\u0027s details.","lastModifiedDate":"2024-03-17"},{"lineNumber":147,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":148,"author":{"gitId":"yleeyilin"},"content":" public static String getEditStaffDescriptorDetails(EditStaffDescriptor descriptor) {","lastModifiedDate":"2024-03-17"},{"lineNumber":149,"author":{"gitId":"yleeyilin"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-03-17"},{"lineNumber":150,"author":{"gitId":"yleeyilin"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2024-03-17"},{"lineNumber":151,"author":{"gitId":"yleeyilin"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2024-03-17"},{"lineNumber":152,"author":{"gitId":"yleeyilin"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address.value).append(\" \"));","lastModifiedDate":"2024-03-17"},{"lineNumber":153,"author":{"gitId":"yleeyilin"},"content":" descriptor.getSalary().ifPresent(salary -\u003e sb.append(PREFIX_SALARY).append(salary.value).append(\" \"));","lastModifiedDate":"2024-03-17"},{"lineNumber":154,"author":{"gitId":"yleeyilin"},"content":" descriptor.getEmployment().ifPresent(employment -\u003e sb.append(PREFIX_EMPLOYMENT)","lastModifiedDate":"2024-03-17"},{"lineNumber":155,"author":{"gitId":"chiageng"},"content":" .append(employment.value).append(\" \"));","lastModifiedDate":"2024-03-18"},{"lineNumber":156,"author":{"gitId":"yleeyilin"},"content":" return sb.toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":157,"author":{"gitId":"yleeyilin"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":158,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":159,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":160,"author":{"gitId":"yleeyilin"},"content":" * Returns the part of command string for the given {@code EditSupplierDescriptor}\u0027s details.","lastModifiedDate":"2024-03-17"},{"lineNumber":161,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":162,"author":{"gitId":"yleeyilin"},"content":" public static String getEditSupplierDescriptorDetails(EditSupplierDescriptor descriptor) {","lastModifiedDate":"2024-03-17"},{"lineNumber":163,"author":{"gitId":"yleeyilin"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-03-17"},{"lineNumber":164,"author":{"gitId":"yleeyilin"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2024-03-17"},{"lineNumber":165,"author":{"gitId":"yleeyilin"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2024-03-17"},{"lineNumber":166,"author":{"gitId":"yleeyilin"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address.value).append(\" \"));","lastModifiedDate":"2024-03-17"},{"lineNumber":167,"author":{"gitId":"chiageng"},"content":" descriptor.getProduct().ifPresent(product -\u003e sb.append(PREFIX_PRODUCT).append(product.value).append(\" \"));","lastModifiedDate":"2024-03-18"},{"lineNumber":168,"author":{"gitId":"chiageng"},"content":" descriptor.getPrice().ifPresent(price -\u003e sb.append(PREFIX_PRICE).append(price.value).append(\" \"));","lastModifiedDate":"2024-03-18"},{"lineNumber":169,"author":{"gitId":"yleeyilin"},"content":" return sb.toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":171,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":172,"author":{"gitId":"yleeyilin"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":173,"author":{"gitId":"yleeyilin"},"content":" * Returns the part of command string for the given {@code EditMaintainerDescriptor}\u0027s details.","lastModifiedDate":"2024-03-17"},{"lineNumber":174,"author":{"gitId":"yleeyilin"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":175,"author":{"gitId":"yleeyilin"},"content":" public static String getEditMaintainerDescriptorDetails(EditMaintainerDescriptor descriptor) {","lastModifiedDate":"2024-03-17"},{"lineNumber":176,"author":{"gitId":"yleeyilin"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-03-17"},{"lineNumber":177,"author":{"gitId":"yleeyilin"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2024-03-17"},{"lineNumber":178,"author":{"gitId":"yleeyilin"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2024-03-17"},{"lineNumber":179,"author":{"gitId":"yleeyilin"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address.value).append(\" \"));","lastModifiedDate":"2024-03-17"},{"lineNumber":180,"author":{"gitId":"chiageng"},"content":" descriptor.getSkill().ifPresent(skill -\u003e sb.append(PREFIX_SKILL).append(skill.value).append(\" \"));","lastModifiedDate":"2024-03-18"},{"lineNumber":181,"author":{"gitId":"yleeyilin"},"content":" descriptor.getCommission().ifPresent(commission -\u003e sb.append(PREFIX_COMMISSION)","lastModifiedDate":"2024-03-17"},{"lineNumber":182,"author":{"gitId":"chiageng"},"content":" .append(commission.value).append(\" \"));","lastModifiedDate":"2024-03-18"},{"lineNumber":183,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05"}],"authorContributionMap":{"chiageng":69,"jannaleong":1,"-":54,"yleeyilin":61}},{"path":"src/test/java/seedu/address/testutil/StaffBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chiageng"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-09"},{"lineNumber":2,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":3,"author":{"gitId":"chiageng"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-09"},{"lineNumber":4,"author":{"gitId":"chiageng"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-09"},{"lineNumber":5,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":6,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-09"},{"lineNumber":7,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-09"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Employment;","lastModifiedDate":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-09"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Salary;","lastModifiedDate":"2024-03-09"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Staff;","lastModifiedDate":"2024-03-09"},{"lineNumber":13,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-09"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":"/**","lastModifiedDate":"2024-03-09"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2024-03-09"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":"public class StaffBuilder {","lastModifiedDate":"2024-03-09"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":20,"author":{"gitId":"chiageng"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2024-03-09"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2024-03-09"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2024-03-09"},{"lineNumber":23,"author":{"gitId":"chiageng"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2024-03-09"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":" public static final String DEFAULT_TAG \u003d \"staff\";","lastModifiedDate":"2024-03-09"},{"lineNumber":25,"author":{"gitId":"chiageng"},"content":" public static final String DEFAULT_SALARY \u003d \"$50/hr\";","lastModifiedDate":"2024-03-09"},{"lineNumber":26,"author":{"gitId":"chiageng"},"content":" public static final String DEFAULT_EMPLOYMENT \u003d \"part-time\";","lastModifiedDate":"2024-03-09"},{"lineNumber":27,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":28,"author":{"gitId":"chiageng"},"content":" private Name name;","lastModifiedDate":"2024-03-09"},{"lineNumber":29,"author":{"gitId":"chiageng"},"content":" private Phone phone;","lastModifiedDate":"2024-03-09"},{"lineNumber":30,"author":{"gitId":"chiageng"},"content":" private Email email;","lastModifiedDate":"2024-03-09"},{"lineNumber":31,"author":{"gitId":"chiageng"},"content":" private Address address;","lastModifiedDate":"2024-03-09"},{"lineNumber":32,"author":{"gitId":"chiageng"},"content":" private Salary salary;","lastModifiedDate":"2024-03-09"},{"lineNumber":33,"author":{"gitId":"chiageng"},"content":" private Employment employment;","lastModifiedDate":"2024-03-09"},{"lineNumber":34,"author":{"gitId":"chiageng"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2024-03-09"},{"lineNumber":35,"author":{"gitId":"chiageng"},"content":" private Tag tag;","lastModifiedDate":"2024-03-09"},{"lineNumber":36,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":37,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":38,"author":{"gitId":"chiageng"},"content":" * Creates a {@code StaffBuilder} with the default details.","lastModifiedDate":"2024-03-09"},{"lineNumber":39,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":40,"author":{"gitId":"chiageng"},"content":" public StaffBuilder() {","lastModifiedDate":"2024-03-09"},{"lineNumber":41,"author":{"gitId":"chiageng"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2024-03-09"},{"lineNumber":42,"author":{"gitId":"chiageng"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2024-03-09"},{"lineNumber":43,"author":{"gitId":"chiageng"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2024-03-09"},{"lineNumber":44,"author":{"gitId":"chiageng"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2024-03-09"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-09"},{"lineNumber":46,"author":{"gitId":"chiageng"},"content":" tag \u003d new Tag(DEFAULT_TAG);","lastModifiedDate":"2024-03-09"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":" tags.add(tag);","lastModifiedDate":"2024-03-09"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":" salary \u003d new Salary(DEFAULT_SALARY);","lastModifiedDate":"2024-03-09"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":" employment \u003d new Employment(DEFAULT_EMPLOYMENT);","lastModifiedDate":"2024-03-09"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":53,"author":{"gitId":"chiageng"},"content":" * Initializes the StaffBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2024-03-09"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":55,"author":{"gitId":"chiageng"},"content":" public StaffBuilder(Staff personToCopy) {","lastModifiedDate":"2024-03-09"},{"lineNumber":56,"author":{"gitId":"chiageng"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2024-03-09"},{"lineNumber":57,"author":{"gitId":"chiageng"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2024-03-09"},{"lineNumber":58,"author":{"gitId":"chiageng"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2024-03-09"},{"lineNumber":59,"author":{"gitId":"chiageng"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2024-03-09"},{"lineNumber":60,"author":{"gitId":"chiageng"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2024-03-09"},{"lineNumber":61,"author":{"gitId":"chiageng"},"content":" tag \u003d new Tag(DEFAULT_TAG);","lastModifiedDate":"2024-03-09"},{"lineNumber":62,"author":{"gitId":"chiageng"},"content":" tags.add(tag);","lastModifiedDate":"2024-03-09"},{"lineNumber":63,"author":{"gitId":"chiageng"},"content":" salary \u003d personToCopy.getSalary();","lastModifiedDate":"2024-03-09"},{"lineNumber":64,"author":{"gitId":"chiageng"},"content":" employment \u003d personToCopy.getEmployment();","lastModifiedDate":"2024-03-09"},{"lineNumber":65,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":66,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":67,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":68,"author":{"gitId":"chiageng"},"content":" * Sets the {@code Name} of the {@code Staff} that we are building.","lastModifiedDate":"2024-03-09"},{"lineNumber":69,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":70,"author":{"gitId":"chiageng"},"content":" public StaffBuilder withName(String name) {","lastModifiedDate":"2024-03-09"},{"lineNumber":71,"author":{"gitId":"chiageng"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2024-03-09"},{"lineNumber":72,"author":{"gitId":"chiageng"},"content":" return this;","lastModifiedDate":"2024-03-09"},{"lineNumber":73,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":74,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":75,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":76,"author":{"gitId":"chiageng"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Staff} that we are building.","lastModifiedDate":"2024-03-09"},{"lineNumber":77,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":78,"author":{"gitId":"chiageng"},"content":" public StaffBuilder withTags(String ... tags) {","lastModifiedDate":"2024-03-09"},{"lineNumber":79,"author":{"gitId":"chiageng"},"content":" /*","lastModifiedDate":"2024-03-09"},{"lineNumber":80,"author":{"gitId":"chiageng"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2024-03-09"},{"lineNumber":81,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":82,"author":{"gitId":"chiageng"},"content":" return this;","lastModifiedDate":"2024-03-09"},{"lineNumber":83,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":84,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":85,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":86,"author":{"gitId":"chiageng"},"content":" * Sets the {@code Address} of the {@code Staff} that we are building.","lastModifiedDate":"2024-03-09"},{"lineNumber":87,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":88,"author":{"gitId":"chiageng"},"content":" public StaffBuilder withAddress(String address) {","lastModifiedDate":"2024-03-09"},{"lineNumber":89,"author":{"gitId":"chiageng"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2024-03-09"},{"lineNumber":90,"author":{"gitId":"chiageng"},"content":" return this;","lastModifiedDate":"2024-03-09"},{"lineNumber":91,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":92,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":93,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":94,"author":{"gitId":"chiageng"},"content":" * Sets the {@code Phone} of the {@code Staff} that we are building.","lastModifiedDate":"2024-03-09"},{"lineNumber":95,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":96,"author":{"gitId":"chiageng"},"content":" public StaffBuilder withPhone(String phone) {","lastModifiedDate":"2024-03-09"},{"lineNumber":97,"author":{"gitId":"chiageng"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2024-03-09"},{"lineNumber":98,"author":{"gitId":"chiageng"},"content":" return this;","lastModifiedDate":"2024-03-09"},{"lineNumber":99,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":100,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":101,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":102,"author":{"gitId":"chiageng"},"content":" * Sets the {@code Email} of the {@code Staff} that we are building.","lastModifiedDate":"2024-03-09"},{"lineNumber":103,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":104,"author":{"gitId":"chiageng"},"content":" public StaffBuilder withEmail(String email) {","lastModifiedDate":"2024-03-09"},{"lineNumber":105,"author":{"gitId":"chiageng"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2024-03-09"},{"lineNumber":106,"author":{"gitId":"chiageng"},"content":" return this;","lastModifiedDate":"2024-03-09"},{"lineNumber":107,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":108,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":109,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":110,"author":{"gitId":"chiageng"},"content":" * Sets the {@code Salary} of the {@code Staff} that we are building.","lastModifiedDate":"2024-03-09"},{"lineNumber":111,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":112,"author":{"gitId":"chiageng"},"content":" public StaffBuilder withSalary(String salary) {","lastModifiedDate":"2024-03-09"},{"lineNumber":113,"author":{"gitId":"chiageng"},"content":" this.salary \u003d new Salary(salary);","lastModifiedDate":"2024-03-09"},{"lineNumber":114,"author":{"gitId":"chiageng"},"content":" return this;","lastModifiedDate":"2024-03-09"},{"lineNumber":115,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":116,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":117,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":118,"author":{"gitId":"chiageng"},"content":" * Sets the {@code Employment} of the {@code Staff} that we are building.","lastModifiedDate":"2024-03-09"},{"lineNumber":119,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":120,"author":{"gitId":"chiageng"},"content":" public StaffBuilder withEmployment(String employment) {","lastModifiedDate":"2024-03-09"},{"lineNumber":121,"author":{"gitId":"chiageng"},"content":" this.employment \u003d new Employment(employment);","lastModifiedDate":"2024-03-09"},{"lineNumber":122,"author":{"gitId":"chiageng"},"content":" return this;","lastModifiedDate":"2024-03-09"},{"lineNumber":123,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":124,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":125,"author":{"gitId":"chiageng"},"content":" public Staff build() {","lastModifiedDate":"2024-03-09"},{"lineNumber":126,"author":{"gitId":"chiageng"},"content":" return new Staff(name, phone, email, address, tags, salary, employment);","lastModifiedDate":"2024-03-09"},{"lineNumber":127,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":128,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":129,"author":{"gitId":"chiageng"},"content":"}","lastModifiedDate":"2024-03-09"}],"authorContributionMap":{"chiageng":129}},{"path":"src/test/java/seedu/address/testutil/SupplierBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chiageng"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-09"},{"lineNumber":2,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":3,"author":{"gitId":"chiageng"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-09"},{"lineNumber":4,"author":{"gitId":"chiageng"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-09"},{"lineNumber":5,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":6,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-09"},{"lineNumber":7,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-09"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Price;","lastModifiedDate":"2024-03-09"},{"lineNumber":11,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Product;","lastModifiedDate":"2024-03-09"},{"lineNumber":12,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Supplier;","lastModifiedDate":"2024-03-09"},{"lineNumber":13,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-09"},{"lineNumber":14,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":15,"author":{"gitId":"chiageng"},"content":"/**","lastModifiedDate":"2024-03-09"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2024-03-09"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":"public class SupplierBuilder {","lastModifiedDate":"2024-03-09"},{"lineNumber":19,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":20,"author":{"gitId":"chiageng"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2024-03-09"},{"lineNumber":21,"author":{"gitId":"chiageng"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2024-03-09"},{"lineNumber":22,"author":{"gitId":"chiageng"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2024-03-09"},{"lineNumber":23,"author":{"gitId":"chiageng"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2024-03-09"},{"lineNumber":24,"author":{"gitId":"chiageng"},"content":" public static final String DEFAULT_TAG \u003d \"supplier\";","lastModifiedDate":"2024-03-09"},{"lineNumber":25,"author":{"gitId":"chiageng"},"content":" public static final String DEFAULT_PRODUCT \u003d \"pooch food\";","lastModifiedDate":"2024-03-09"},{"lineNumber":26,"author":{"gitId":"chiageng"},"content":" public static final String DEFAULT_PRICE \u003d \"$50/bag\";","lastModifiedDate":"2024-03-09"},{"lineNumber":27,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":28,"author":{"gitId":"chiageng"},"content":" private Name name;","lastModifiedDate":"2024-03-09"},{"lineNumber":29,"author":{"gitId":"chiageng"},"content":" private Phone phone;","lastModifiedDate":"2024-03-09"},{"lineNumber":30,"author":{"gitId":"chiageng"},"content":" private Email email;","lastModifiedDate":"2024-03-09"},{"lineNumber":31,"author":{"gitId":"chiageng"},"content":" private Address address;","lastModifiedDate":"2024-03-09"},{"lineNumber":32,"author":{"gitId":"chiageng"},"content":" private Price price;","lastModifiedDate":"2024-03-09"},{"lineNumber":33,"author":{"gitId":"chiageng"},"content":" private Product product;","lastModifiedDate":"2024-03-09"},{"lineNumber":34,"author":{"gitId":"chiageng"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2024-03-09"},{"lineNumber":35,"author":{"gitId":"chiageng"},"content":" private Tag tag;","lastModifiedDate":"2024-03-09"},{"lineNumber":36,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":37,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":38,"author":{"gitId":"chiageng"},"content":" * Creates a {@code SupplierBuilder} with the default details.","lastModifiedDate":"2024-03-09"},{"lineNumber":39,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":40,"author":{"gitId":"chiageng"},"content":" public SupplierBuilder() {","lastModifiedDate":"2024-03-09"},{"lineNumber":41,"author":{"gitId":"chiageng"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2024-03-09"},{"lineNumber":42,"author":{"gitId":"chiageng"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2024-03-09"},{"lineNumber":43,"author":{"gitId":"chiageng"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2024-03-09"},{"lineNumber":44,"author":{"gitId":"chiageng"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2024-03-09"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-09"},{"lineNumber":46,"author":{"gitId":"chiageng"},"content":" tag \u003d new Tag(DEFAULT_TAG);","lastModifiedDate":"2024-03-09"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":" tags.add(tag);","lastModifiedDate":"2024-03-09"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":" product \u003d new Product(DEFAULT_PRODUCT);","lastModifiedDate":"2024-03-09"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":" price \u003d new Price(DEFAULT_PRICE);","lastModifiedDate":"2024-03-09"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":53,"author":{"gitId":"chiageng"},"content":" * Initializes the SupplierBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2024-03-09"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":55,"author":{"gitId":"chiageng"},"content":" public SupplierBuilder(Supplier personToCopy) {","lastModifiedDate":"2024-03-09"},{"lineNumber":56,"author":{"gitId":"chiageng"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2024-03-09"},{"lineNumber":57,"author":{"gitId":"chiageng"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2024-03-09"},{"lineNumber":58,"author":{"gitId":"chiageng"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2024-03-09"},{"lineNumber":59,"author":{"gitId":"chiageng"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2024-03-09"},{"lineNumber":60,"author":{"gitId":"chiageng"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2024-03-09"},{"lineNumber":61,"author":{"gitId":"chiageng"},"content":" tag \u003d new Tag(DEFAULT_TAG);","lastModifiedDate":"2024-03-09"},{"lineNumber":62,"author":{"gitId":"chiageng"},"content":" tags.add(tag);","lastModifiedDate":"2024-03-09"},{"lineNumber":63,"author":{"gitId":"chiageng"},"content":" product \u003d personToCopy.getProduct();","lastModifiedDate":"2024-03-09"},{"lineNumber":64,"author":{"gitId":"chiageng"},"content":" price \u003d personToCopy.getPrice();","lastModifiedDate":"2024-03-09"},{"lineNumber":65,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":66,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":67,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":68,"author":{"gitId":"chiageng"},"content":" * Sets the {@code Name} of the {@code Supplier} that we are building.","lastModifiedDate":"2024-03-09"},{"lineNumber":69,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":70,"author":{"gitId":"chiageng"},"content":" public SupplierBuilder withName(String name) {","lastModifiedDate":"2024-03-09"},{"lineNumber":71,"author":{"gitId":"chiageng"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2024-03-09"},{"lineNumber":72,"author":{"gitId":"chiageng"},"content":" return this;","lastModifiedDate":"2024-03-09"},{"lineNumber":73,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":74,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":75,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":76,"author":{"gitId":"chiageng"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Supplier} that we are building.","lastModifiedDate":"2024-03-09"},{"lineNumber":77,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":78,"author":{"gitId":"chiageng"},"content":" public SupplierBuilder withTags(String ... tags) {","lastModifiedDate":"2024-03-09"},{"lineNumber":79,"author":{"gitId":"chiageng"},"content":" /*","lastModifiedDate":"2024-03-09"},{"lineNumber":80,"author":{"gitId":"chiageng"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2024-03-09"},{"lineNumber":81,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":82,"author":{"gitId":"chiageng"},"content":" return this;","lastModifiedDate":"2024-03-09"},{"lineNumber":83,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":84,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":85,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":86,"author":{"gitId":"chiageng"},"content":" * Sets the {@code Address} of the {@code Supplier} that we are building.","lastModifiedDate":"2024-03-09"},{"lineNumber":87,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":88,"author":{"gitId":"chiageng"},"content":" public SupplierBuilder withAddress(String address) {","lastModifiedDate":"2024-03-09"},{"lineNumber":89,"author":{"gitId":"chiageng"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2024-03-09"},{"lineNumber":90,"author":{"gitId":"chiageng"},"content":" return this;","lastModifiedDate":"2024-03-09"},{"lineNumber":91,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":92,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":93,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":94,"author":{"gitId":"chiageng"},"content":" * Sets the {@code Phone} of the {@code Supplier} that we are building.","lastModifiedDate":"2024-03-09"},{"lineNumber":95,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":96,"author":{"gitId":"chiageng"},"content":" public SupplierBuilder withPhone(String phone) {","lastModifiedDate":"2024-03-09"},{"lineNumber":97,"author":{"gitId":"chiageng"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2024-03-09"},{"lineNumber":98,"author":{"gitId":"chiageng"},"content":" return this;","lastModifiedDate":"2024-03-09"},{"lineNumber":99,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":100,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":101,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":102,"author":{"gitId":"chiageng"},"content":" * Sets the {@code Email} of the {@code Supplier} that we are building.","lastModifiedDate":"2024-03-09"},{"lineNumber":103,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":104,"author":{"gitId":"chiageng"},"content":" public SupplierBuilder withEmail(String email) {","lastModifiedDate":"2024-03-09"},{"lineNumber":105,"author":{"gitId":"chiageng"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2024-03-09"},{"lineNumber":106,"author":{"gitId":"chiageng"},"content":" return this;","lastModifiedDate":"2024-03-09"},{"lineNumber":107,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":108,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":109,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":110,"author":{"gitId":"chiageng"},"content":" * Sets the {@code Product} of the {@code Supplier} that we are building.","lastModifiedDate":"2024-03-09"},{"lineNumber":111,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":112,"author":{"gitId":"chiageng"},"content":" public SupplierBuilder withProduct(String product) {","lastModifiedDate":"2024-03-09"},{"lineNumber":113,"author":{"gitId":"chiageng"},"content":" this.product \u003d new Product(product);","lastModifiedDate":"2024-03-09"},{"lineNumber":114,"author":{"gitId":"chiageng"},"content":" return this;","lastModifiedDate":"2024-03-09"},{"lineNumber":115,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":116,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":117,"author":{"gitId":"chiageng"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":118,"author":{"gitId":"chiageng"},"content":" * Sets the {@code Price} of the {@code Supplier} that we are building.","lastModifiedDate":"2024-03-09"},{"lineNumber":119,"author":{"gitId":"chiageng"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":120,"author":{"gitId":"chiageng"},"content":" public SupplierBuilder withPrice(String price) {","lastModifiedDate":"2024-03-09"},{"lineNumber":121,"author":{"gitId":"chiageng"},"content":" this.price \u003d new Price(price);","lastModifiedDate":"2024-03-09"},{"lineNumber":122,"author":{"gitId":"chiageng"},"content":" return this;","lastModifiedDate":"2024-03-09"},{"lineNumber":123,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":124,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":125,"author":{"gitId":"chiageng"},"content":" public Supplier build() {","lastModifiedDate":"2024-03-09"},{"lineNumber":126,"author":{"gitId":"chiageng"},"content":" return new Supplier(name, phone, email, address, tags, product, price);","lastModifiedDate":"2024-03-09"},{"lineNumber":127,"author":{"gitId":"chiageng"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":128,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":129,"author":{"gitId":"chiageng"},"content":"}","lastModifiedDate":"2024-03-09"}],"authorContributionMap":{"chiageng":129}},{"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":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_COMMISSION_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":8,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMPLOYMENT_BOB;","lastModifiedDate":"2024-03-09"},{"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":"jannaleong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NOTE_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NOTE_BOB;","lastModifiedDate":"2024-03-19"},{"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":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PRICE_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":16,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PRODUCT_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":17,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SALARY_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":18,"author":{"gitId":"chiageng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SKILL_BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-08-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":26,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Maintainer;","lastModifiedDate":"2024-03-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":28,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Staff;","lastModifiedDate":"2024-03-09"},{"lineNumber":29,"author":{"gitId":"chiageng"},"content":"import seedu.address.model.person.Supplier;","lastModifiedDate":"2024-03-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final Person ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2018-01-10"},{"lineNumber":37,"author":{"gitId":"-"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2017-04-05"},{"lineNumber":38,"author":{"gitId":"jannaleong"},"content":" .withPhone(\"94351253\").withNote(\"i love dogs\")","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" .withTags(\"friends\").build();","lastModifiedDate":"2016-09-13"},{"lineNumber":40,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":41,"author":{"gitId":"chiageng"},"content":" public static final Staff ALICESTAFF \u003d new StaffBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2024-03-09"},{"lineNumber":42,"author":{"gitId":"chiageng"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2024-03-09"},{"lineNumber":43,"author":{"gitId":"chiageng"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2024-03-09"},{"lineNumber":44,"author":{"gitId":"chiageng"},"content":" .withTags(\"friends\")","lastModifiedDate":"2024-03-09"},{"lineNumber":45,"author":{"gitId":"chiageng"},"content":" .withSalary(\"$50/hr\")","lastModifiedDate":"2024-03-09"},{"lineNumber":46,"author":{"gitId":"chiageng"},"content":" .withEmployment(\"part-time\").build();","lastModifiedDate":"2024-03-09"},{"lineNumber":47,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":48,"author":{"gitId":"chiageng"},"content":" public static final Supplier ALICESUPPLIER \u003d new SupplierBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2024-03-09"},{"lineNumber":49,"author":{"gitId":"chiageng"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2024-03-09"},{"lineNumber":50,"author":{"gitId":"chiageng"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2024-03-09"},{"lineNumber":51,"author":{"gitId":"chiageng"},"content":" .withTags(\"friends\")","lastModifiedDate":"2024-03-09"},{"lineNumber":52,"author":{"gitId":"chiageng"},"content":" .withProduct(\"pooch food\")","lastModifiedDate":"2024-03-09"},{"lineNumber":53,"author":{"gitId":"chiageng"},"content":" .withPrice(\"$50/bag\").build();","lastModifiedDate":"2024-03-09"},{"lineNumber":54,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":55,"author":{"gitId":"chiageng"},"content":" public static final Maintainer ALICEMAINTAINER \u003d new MaintainerBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2024-03-09"},{"lineNumber":56,"author":{"gitId":"chiageng"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2024-03-09"},{"lineNumber":57,"author":{"gitId":"chiageng"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2024-03-09"},{"lineNumber":58,"author":{"gitId":"chiageng"},"content":" .withTags(\"friends\")","lastModifiedDate":"2024-03-09"},{"lineNumber":59,"author":{"gitId":"chiageng"},"content":" .withSkill(\"train dog\")","lastModifiedDate":"2024-03-09"},{"lineNumber":60,"author":{"gitId":"chiageng"},"content":" .withCommission(\"$50/hr\").build();","lastModifiedDate":"2024-03-09"},{"lineNumber":61,"author":{"gitId":"yleeyilin"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10"},{"lineNumber":63,"author":{"gitId":"jannaleong"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\").withNote(\"meet on wednesday\")","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"-"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2017-04-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":" .withTags(\"owesMoney\", \"friends\").build();","lastModifiedDate":"2016-09-13"},{"lineNumber":66,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":67,"author":{"gitId":"chiageng"},"content":" public static final Staff BENSONSTAFF \u003d new StaffBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2024-03-09"},{"lineNumber":68,"author":{"gitId":"chiageng"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2024-03-09"},{"lineNumber":69,"author":{"gitId":"chiageng"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2024-03-09"},{"lineNumber":70,"author":{"gitId":"chiageng"},"content":" .withTags(\"staff\")","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"chiageng"},"content":" .withEmployment(\"part-time\")","lastModifiedDate":"2024-03-09"},{"lineNumber":72,"author":{"gitId":"chiageng"},"content":" .withSalary(\"$50/hr\").build();","lastModifiedDate":"2024-03-09"},{"lineNumber":73,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":74,"author":{"gitId":"chiageng"},"content":" public static final Supplier BENSONSUPPLIER \u003d new SupplierBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2024-03-09"},{"lineNumber":75,"author":{"gitId":"chiageng"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2024-03-09"},{"lineNumber":76,"author":{"gitId":"chiageng"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2024-03-09"},{"lineNumber":77,"author":{"gitId":"chiageng"},"content":" .withTags(\"owesMoney\", \"friends\")","lastModifiedDate":"2024-03-09"},{"lineNumber":78,"author":{"gitId":"chiageng"},"content":" .withProduct(\"pooch medicine\")","lastModifiedDate":"2024-03-09"},{"lineNumber":79,"author":{"gitId":"chiageng"},"content":" .withPrice(\"$50/injection\").build();","lastModifiedDate":"2024-03-09"},{"lineNumber":80,"author":{"gitId":"chiageng"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":81,"author":{"gitId":"chiageng"},"content":" public static final Maintainer BENSONMAINTAINER \u003d new MaintainerBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2024-03-09"},{"lineNumber":82,"author":{"gitId":"chiageng"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2024-03-09"},{"lineNumber":83,"author":{"gitId":"chiageng"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2024-03-09"},{"lineNumber":84,"author":{"gitId":"chiageng"},"content":" .withTags(\"owesMoney\", \"friends\")","lastModifiedDate":"2024-03-09"},{"lineNumber":85,"author":{"gitId":"chiageng"},"content":" .withSkill(\"train dog\")","lastModifiedDate":"2024-03-09"},{"lineNumber":86,"author":{"gitId":"chiageng"},"content":" .withCommission(\"$50/hr\").build();","lastModifiedDate":"2024-03-09"},{"lineNumber":87,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2018-01-10"},{"lineNumber":89,"author":{"gitId":"jannaleong"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\").withNote(\"meet on wednesday\").build();","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2018-01-10"},{"lineNumber":91,"author":{"gitId":"jannaleong"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\").withNote(\"meet on wednesday\")","lastModifiedDate":"2024-03-19"},{"lineNumber":92,"author":{"gitId":"jannaleong"},"content":" .withTags(\"friends\").build();","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"jannaleong"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withNote(\"meet on wednesday\")","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"jannaleong"},"content":" .withPhone(\"9482224\")","lastModifiedDate":"2024-03-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":96,"author":{"gitId":"jannaleong"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\")","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"jannaleong"},"content":" .withNote(\"meet on wednesday\").withPhone(\"9482427\")","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":99,"author":{"gitId":"jannaleong"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\")","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"jannaleong"},"content":" .withNote(\"meet on wednesday\").withPhone(\"9482442\")","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2018-01-10"},{"lineNumber":105,"author":{"gitId":"jannaleong"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\").withNote(\"meet on wednesday\").build();","lastModifiedDate":"2024-03-19"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2018-01-10"},{"lineNumber":107,"author":{"gitId":"jannaleong"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\").withNote(\"meet on wednesday\").build();","lastModifiedDate":"2024-03-19"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":109,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2018-01-10"},{"lineNumber":111,"author":{"gitId":"jannaleong"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withTags(VALID_TAG_FRIEND)","lastModifiedDate":"2024-03-19"},{"lineNumber":112,"author":{"gitId":"jannaleong"},"content":" .withNote(VALID_NOTE_AMY).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2018-01-10"},{"lineNumber":114,"author":{"gitId":"jannaleong"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withNote(VALID_NOTE_BOB)","lastModifiedDate":"2024-03-19"},{"lineNumber":115,"author":{"gitId":"chiageng"},"content":" .build();","lastModifiedDate":"2024-03-09"},{"lineNumber":116,"author":{"gitId":"chiageng"},"content":" public static final Staff BOBSTAFF \u003d new StaffBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-09"},{"lineNumber":117,"author":{"gitId":"chiageng"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-03-09"},{"lineNumber":118,"author":{"gitId":"chiageng"},"content":" .withEmployment(VALID_EMPLOYMENT_BOB).withSalary(VALID_SALARY_BOB)","lastModifiedDate":"2024-03-09"},{"lineNumber":119,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2024-03-09"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":121,"author":{"gitId":"chiageng"},"content":" public static final Supplier BOBSUPPLIER \u003d new SupplierBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-09"},{"lineNumber":122,"author":{"gitId":"chiageng"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-03-09"},{"lineNumber":123,"author":{"gitId":"chiageng"},"content":" .withProduct(VALID_PRODUCT_BOB).withPrice(VALID_PRICE_BOB)","lastModifiedDate":"2024-03-09"},{"lineNumber":124,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2017-09-21"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21"},{"lineNumber":126,"author":{"gitId":"chiageng"},"content":" public static final Maintainer BOBMAINTAINER \u003d new MaintainerBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-09"},{"lineNumber":127,"author":{"gitId":"chiageng"},"content":" .withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-09"},{"lineNumber":128,"author":{"gitId":"chiageng"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-03-09"},{"lineNumber":129,"author":{"gitId":"chiageng"},"content":" .withSkill(VALID_SKILL_BOB).withCommission(VALID_COMMISSION_BOB)","lastModifiedDate":"2024-03-09"},{"lineNumber":130,"author":{"gitId":"chiageng"},"content":" .build();","lastModifiedDate":"2024-03-09"},{"lineNumber":131,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":135,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":136,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05"},{"lineNumber":137,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":138,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05"},{"lineNumber":139,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05"},{"lineNumber":140,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10"},{"lineNumber":141,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13"},{"lineNumber":143,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04"},{"lineNumber":146,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10"},{"lineNumber":147,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04"},{"lineNumber":149,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13"}],"authorContributionMap":{"chiageng":63,"jannaleong":19,"-":66,"yleeyilin":1}}] diff --git a/AY2324S2-CS2103T-W10-2_tp_master/commits.json b/AY2324S2-CS2103T-W10-2_tp_master/commits.json index 268ece90..62ae2bcc 100644 --- a/AY2324S2-CS2103T-W10-2_tp_master/commits.json +++ b/AY2324S2-CS2103T-W10-2_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Joshy837":[{"date":"2024-02-28","commitResults":[{"hash":"83bd77e2c927eb71330a172350bbeb2c4354c520","isMergeCommit":true,"messageTitle":"Merge pull request #27 from yleeyilin/Update-UG-Edit-Command","messageBody":"Update user guide for edit command","fileTypesAndContributionMap":{}}]},{"date":"2024-03-06","commitResults":[{"hash":"9362d7c59af2aef8085369da97a6270abd3c3de9","isMergeCommit":false,"messageTitle":"Update AboutUs for Joshua","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"45608234968e00d33d132bb89c73e7ecf3745051","isMergeCommit":false,"messageTitle":"Update the UG (Search command)","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":33,"deletions":0}}},{"hash":"a90cca88103979eb145814e1639f626c0e8935f6","isMergeCommit":false,"messageTitle":"Update Joshua\u0027s Portfolio page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":24,"deletions":0}}},{"hash":"c7a6a283a990aade8825fa3bcf1b0b618e6f0c89","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":15,"deletions":1}}},{"hash":"1c12015820507b4515cfbfb6762599d1201c3af4","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/Joshy837/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"745bcde05582028a1eee51b5842a21acbfe65f5e","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-W10-2/tp","messageBody":"# Conflicts:\n#\tREADME.md\n","fileTypesAndContributionMap":{}},{"hash":"9dd49354fbfe26b3477ba26b2a60e2a25fa3ad0b","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":13,"deletions":1}}},{"hash":"3f5fe05599fcb7aa94b2164978d233843a79802a","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":14}}},{"hash":"5347523a871cef9c8c13559455f47b5b1d20f810","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/Joshy837/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a42049c7b085a1522bef594f2c01401f1c18f660","isMergeCommit":true,"messageTitle":"Update README.md and fix merge conflict","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9991889b06b52e9eb91fe051c7c41bae11336b69","isMergeCommit":false,"messageTitle":"Remove all AB3 references","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-07","commitResults":[{"hash":"718471ce494c5c1591bb3f88f9f51b9cd609237f","isMergeCommit":true,"messageTitle":"Merge pull request #43 from Joshy837/branch-readme","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-15","commitResults":[{"hash":"405e7296da481e1c3ac4763a06b06414508d3aab","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-W10-2/tp","messageBody":"* \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-W10-2/tp:\n Address peer review\n Fix checkstyle issues in addressbooktest\n Add more test case for address book\n Add specific help command\n Update UserGuide.md\n","fileTypesAndContributionMap":{}}]},{"date":"2024-03-16","commitResults":[{"hash":"be62ad818e2b01758fe00158bc9ea98d336b3c7d","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-W10-2/tp","messageBody":"* \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-W10-2/tp:\n Improve delete command test coverage\n Fix delete command build bug\n Implement delete command.\n","fileTypesAndContributionMap":{}},{"hash":"a319e127a7e97c82ad93ccf0f370c73a7e955313","isMergeCommit":false,"messageTitle":"Add Search Name functionality","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":135,"deletions":18}}},{"hash":"5a35448926534f3399dc6aa97ed72bf833490eee","isMergeCommit":false,"messageTitle":"Add search feature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":161,"deletions":74},"other":{"insertions":14,"deletions":9}}}]},{"date":"2024-03-17","commitResults":[{"hash":"6c12c803e691273953845967b23c305ede794bcb","isMergeCommit":false,"messageTitle":"Refactor code in KeywordPredicate","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":36}}}]},{"date":"2024-03-18","commitResults":[{"hash":"c8825c520e590761de48600b2abc5102a008f35b","isMergeCommit":true,"messageTitle":"Fix merge conflicts in AddressBookParser.java","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ecf6cb2117263a493d7a81516e6601612ccd37fd","isMergeCommit":false,"messageTitle":"Add parseCommand_search testing","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":18,"deletions":2},"test-code":{"insertions":12,"deletions":27}}},{"hash":"6678994b642b986ac05091e2f1e0be13fba2b84a","isMergeCommit":false,"messageTitle":"Add SearchCommandParserTest tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":36,"deletions":0}}},{"hash":"debc2353e99ed4b40a67ba09297767072f1a3010","isMergeCommit":false,"messageTitle":"Add KeywordPredicateTest testcases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"test-code":{"insertions":124,"deletions":0}}},{"hash":"62d0b19bd0a6f8ebe931964cc864d4de9dd40dca","isMergeCommit":false,"messageTitle":"Add SearchCommandTest testcases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":92,"deletions":0}}},{"hash":"1e4cb04eda51acedaa744ea99aff042bb40336dd","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-W10-2/tp into branch-add-search-command","messageBody":"* \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-W10-2/tp:\n Make help command consistent\n Update help section in UG\n","fileTypesAndContributionMap":{}},{"hash":"e9d1eb0ee1cbba1457a599403d1631b4356a5903","isMergeCommit":false,"messageTitle":"Fixes all checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":51,"deletions":15},"test-code":{"insertions":106,"deletions":43}}},{"hash":"a44c2fe5d2b1bad2214550f6b55b4cf69679c547","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-W10-2/tp","messageBody":"* \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-W10-2/tp: (21 commits)\n Fixes all checkstyle issues\n Add SearchCommandTest testcases\n Add KeywordPredicateTest testcases\n Make help command consistent\n Update help section in UG\n Add SearchCommandParserTest tests\n Add parseCommand_search testing\n Fix checkstyle issues\n Add basic command tests\n Add descriptor builder test\n Fix checkstyle\n Fix tests\n Add more parser tests\n Fix minor checkstyle\n Add command parser test\n Fix checkstyle issues\n Fix tests\n Update edit functions\n Refactor code in KeywordPredicate\n Add search feature\n ...\n","fileTypesAndContributionMap":{}}]},{"date":"2024-03-19","commitResults":[{"hash":"7914d0526f7eb826cc92df03ad81e4651ffdf2ef","isMergeCommit":true,"messageTitle":"Merge pull request #78 from jannaleong/EditLogicAndParseUML","messageBody":"Change name of commands","fileTypesAndContributionMap":{}},{"hash":"59124b8eec6ee8a026002a660abf457ce89407cb","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-W10-2/tp","messageBody":"* \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-W10-2/tp:\n Change name of commands\n Fix typo in user guide\n Update user guide and portfolio\n Fix edit commands error bug\n Standardise maintainer\n Fix invalid message format\n Update UserGuide.md for add\n Update command name to /pooch-maintainer\n Add test cases for JSON\n Update naming convention in class\n Update success messages for add command\n","fileTypesAndContributionMap":{}},{"hash":"4604549ed3b3336a59c68d78098b4daf665fe1ad","isMergeCommit":false,"messageTitle":"Update model UML","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":24,"deletions":2}}},{"hash":"d6e3e65802a30fc9e7cb5bc437cde55db9e912f5","isMergeCommit":true,"messageTitle":"Merge pull request #73 from jamessinmaojun/branchDelete","messageBody":"Fix delete command bugs","fileTypesAndContributionMap":{}},{"hash":"161ed748895a5c3dad16cfde11d14635f5313e10","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-W10-2/tp","messageBody":"* \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-W10-2/tp:\n Fix deleteFormat testcase\n Update model UML\n Update UML and sequence diagrams\n Add deleteFormat test case\n Fix delete command bugs\n","fileTypesAndContributionMap":{}},{"hash":"61275729b77b4ac04ed957554a090fb9de08069b","isMergeCommit":true,"messageTitle":"Merge pull request #84 from chiageng/branch-UML","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"76356143fe762fb16262d5004556834a3c422409","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-W10-2/tp","messageBody":"* \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-W10-2/tp:\n Address comment on example\n Update UG for note command\n Address pr comments\n Improve edit command code quality\n Throw errors for note command\n Update UG with note command\n Clean code\n Update team contribution\n Update UML diagram\n Fix merge conflict\n Fix build bug\n Fix checkstyle issue in added testcases\n Add test case for note command\n Add note command to accept notes\n Update help window naming convention\n Add note functionality\n Update UI Uml\n Replace string note with Note class\n Note command takes in params\n","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"0055af8a2dfe0a71173546bda99e81b530b55b88","isMergeCommit":false,"messageTitle":"Fix search command bug","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":90,"deletions":19}}},{"hash":"655d0147890159cbb997bceee0a9eeb99b5a18be","isMergeCommit":false,"messageTitle":"Fixes search message and error messages","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":34,"deletions":46}}},{"hash":"147f659388d35973ceb88b260a582fb6f046bc8d","isMergeCommit":false,"messageTitle":"Update checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":29,"deletions":16},"test-code":{"insertions":3,"deletions":4}}},{"hash":"276a408e9fde3bddc33a5bbc6aa3b370a432f027","isMergeCommit":false,"messageTitle":"Add SearchMessagesTest testcase","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":26,"deletions":10}}},{"hash":"41161c7c84745262a78411884827f55de83d2392","isMergeCommit":false,"messageTitle":"Add test cases for SearchCommandParserTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":12},"test-code":{"insertions":89,"deletions":18}}},{"hash":"945f1afc022b0e77fdd7b623ad1d24eff99c08bf","isMergeCommit":false,"messageTitle":"Add new line to KeywordPredicateTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"7aac74ae7509762a7fbc83c5dfb235436fb7d231","isMergeCommit":false,"messageTitle":"Add invalid fields for person test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":48,"deletions":0}}},{"hash":"01e4a524dedb99d71163153757267a9c43071c90","isMergeCommit":false,"messageTitle":"Update combination fields testcase","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":8,"deletions":2}}}]},{"date":"2024-03-22","commitResults":[{"hash":"019f051c4b607a9cd1999186d76a8bb168465e49","isMergeCommit":true,"messageTitle":"Merge pull request #88 from jamessinmaojun/branchRefactorMessages","messageBody":"Refactor Messages","fileTypesAndContributionMap":{}}]}],"chiageng":[{"date":"2024-03-01","commitResults":[{"hash":"c9d32a2812847939a6e3b9481807385d0f8d68eb","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-W10-2/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"481d16a1dd2443288f46f447b8aa6faefa88fb98","isMergeCommit":false,"messageTitle":"Update AboutUs.md and chiageng.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":34,"deletions":4}}},{"hash":"f012713ded2d80524e6fb8ca2dde135d0895b610","isMergeCommit":false,"messageTitle":"Add User Guide for feature add","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":26,"deletions":22}}},{"hash":"054e6a41a3956961f5c0b130393882a8d82dca49","isMergeCommit":false,"messageTitle":"Update developer guide on non functional requirements","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":0}}},{"hash":"3fec7d1e12a7d3d08cd37930b3c84aa878341e39","isMergeCommit":false,"messageTitle":"Update use cases in developer guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":64,"deletions":0}}},{"hash":"e26c4db963811a434ee64222507e81f687482493","isMergeCommit":false,"messageTitle":"Update non functional requirements in developer guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":0}}}]},{"date":"2024-03-02","commitResults":[{"hash":"129f406a219d9e0791d8bcd8ca766ad47e9b5f63","isMergeCommit":false,"messageTitle":"Update Developer Guide and fix minor mistakes","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":43}}}]},{"date":"2024-03-06","commitResults":[{"hash":"ecf1b6d1a3403397e593d7219076b28ccaedf131","isMergeCommit":true,"messageTitle":"Merge pull request #34 from chiageng/branch-v1.1","messageBody":"Update AboutUs, User Guides and Developer Guide","fileTypesAndContributionMap":{}},{"hash":"0f9973b861864de5be8f23dcf578bcea5fbdb333","isMergeCommit":true,"messageTitle":"Merge pull request #31 from jamessinmaojun/master","messageBody":"Update AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"6d18ea6233cde84df23dd9e4e6d782338c64c5fd","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-W10-2/tp into branch-v1.1","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8c1ad56a7d3a43769043a6232604b8018ab911c0","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-v1.1\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c900b20f07834410568ca87b2df944e1c81638f9","isMergeCommit":true,"messageTitle":"Merge pull request #36 from Joshy837/master","messageBody":"Fix Joshua\u0027s Issues for V1.1","fileTypesAndContributionMap":{}},{"hash":"19b9f76fda0a5524aa5a1de6d89eba2c97ff06f0","isMergeCommit":true,"messageTitle":"Merge pull request #37 from jamessinmaojun/master","messageBody":"Update DeveloperGuide.md","fileTypesAndContributionMap":{}},{"hash":"0a95734a867cd7a8aa4283da71b8b6f540383772","isMergeCommit":true,"messageTitle":"Merge pull request #35 from jannaleong/UpdateAboutUs_UG_DG","messageBody":"Update about us ug dg","fileTypesAndContributionMap":{}},{"hash":"d5585801fb7d45b88a30ff12a9bc63505d4d5bad","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-W10-2/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"90567398bf81518b3c54e6064273d40b94bb747f","isMergeCommit":true,"messageTitle":"Merge pull request #38 from jannaleong/UpdateAboutUs_UG_DG","messageBody":"Fix formatting issues in dg","fileTypesAndContributionMap":{}}]},{"date":"2024-03-07","commitResults":[{"hash":"ee0ae6eff0f622e2e92637ce6a04741cc8c16d7f","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-W10-2/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"aa00dd0c2e6dae7cce9b833cdfeddf3d4bebe39c","isMergeCommit":false,"messageTitle":"Fix AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"de4cd18c87fd0a2cf0a085f6697ae9f69a46a6c0","isMergeCommit":true,"messageTitle":"Merge pull request #46 from chiageng/branch-fix-portfolio","messageBody":"Fix AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"4924a345fc4c51987b443e42659f48f8fb454cba","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":30,"deletions":58}}},{"hash":"da3356e211ae6669db8e7326eab6e7e4a20c93ed","isMergeCommit":true,"messageTitle":"Merge pull request #47 from chiageng/branch-fix-portfolio","messageBody":"Fix _config.yml and Update UserGuide.md","fileTypesAndContributionMap":{}}]},{"date":"2024-03-08","commitResults":[{"hash":"175913f8c2f4f4791bfcfccf839cfbcd19f8f068","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-W10-2/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a7b0ad7ea1934fc596127102aec9c151f6baf709","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-fix-portfolio","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"0eb4649aacd1d0870ea0a6edf45c94625c71a38a","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"e0259a1f0c290411db269623cb0da84c327be5d3","isMergeCommit":false,"messageTitle":"Update checking name to be case-insensitive","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1},"test-code":{"insertions":1,"deletions":1}}},{"hash":"b0bc00ee7413d2280ba715e8a4ebcaf2e79beba5","isMergeCommit":false,"messageTitle":"Update format of add command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":5}}},{"hash":"776cd27a46ab2cb5c38f52ea5229d4e1ed7c4513","isMergeCommit":false,"messageTitle":"Insert staff instead of person in add command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":273,"deletions":34}}},{"hash":"0983cfdf012d9e43f62043b2ff638b2a94320ea7","isMergeCommit":false,"messageTitle":"Use /pooch-staff to add staff","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":150,"deletions":47}}},{"hash":"2d36837e36dd0e32343b8137fa365c5aee004bb3","isMergeCommit":false,"messageTitle":"Assign tag to Person and Staff","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":11},"test-code":{"insertions":39,"deletions":39}}},{"hash":"91a782f9ceeec9233ffc38de4fe5c550806d0aa3","isMergeCommit":false,"messageTitle":"Add addsupplier command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":384,"deletions":10}}},{"hash":"ff8325f3cad90d74cf8802f8989170eb8eb46950","isMergeCommit":false,"messageTitle":"Add addmaintainer command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":391,"deletions":4}}}]},{"date":"2024-03-09","commitResults":[{"hash":"57c41fa71b5fbefbc4605a88616191e9371e1b44","isMergeCommit":false,"messageTitle":"Update JSON serialization for staff, supplier and maintainer, then update UI display for staff, supplier and maintainer","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":235,"deletions":11},"test-code":{"insertions":19,"deletions":10}}},{"hash":"3e62a38d7ac6e0f7699c3cf76a56cbffae886bd6","isMergeCommit":false,"messageTitle":"Fix checkstyles","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":155,"deletions":110},"test-code":{"insertions":53,"deletions":43}}},{"hash":"3490db11da24434d2b999ef8db95e5678a4eb0c5","isMergeCommit":false,"messageTitle":"Update chiageng.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":14,"deletions":2}}},{"hash":"5f61f1d50537fcf33c8c4332402a44ece12746a9","isMergeCommit":false,"messageTitle":"Create Testing for AddStaffCommand","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":344,"deletions":0}}},{"hash":"a13e7e531dbfecabb15af4dfafa1c5a5664c4f07","isMergeCommit":false,"messageTitle":"Create Testing for AddSupplierCommand","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":363,"deletions":19}}},{"hash":"38cfc312fd3e96e56a4a4b58e24c34f36e51bae5","isMergeCommit":false,"messageTitle":"Update ParserUtilTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":156,"deletions":1}}},{"hash":"ee1ba89e8838e829f2a788e3fe4ce9b18c668337","isMergeCommit":false,"messageTitle":"Update JsonAdapterPersonTest.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":7},"test-code":{"insertions":64,"deletions":0}}},{"hash":"3a28c0e881913e16723a4dc8e0999c80d95c898b","isMergeCommit":false,"messageTitle":"Create AddMaintainerCommand Testing","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":400,"deletions":5}}},{"hash":"c7af968762c59496cc36847d64eb32e2b99728e9","isMergeCommit":false,"messageTitle":"Create AddStaffCommandParser.java testing","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":294,"deletions":12}}},{"hash":"f29fda1a1da3bb5fe45977a5729e5c04210be950","isMergeCommit":false,"messageTitle":"Create AddSupplierCommandParser and AddMaintainerCommandParser testing","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":458,"deletions":2}}},{"hash":"d255ded1d81768a4f377318e123b2d1e3157bf61","isMergeCommit":false,"messageTitle":"Create Unit Testing for Commission, Employment, Salary, Price, Skill, Product","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":0},"test-code":{"insertions":343,"deletions":0}}},{"hash":"44703bbdb9ab1e836571a99f0624fcee1170205d","isMergeCommit":false,"messageTitle":"Create Unit Testing for Maintainer, Staff and Supplier","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":18,"deletions":3},"test-code":{"insertions":321,"deletions":0}}},{"hash":"01aaa0603d740fa34ab3a8a0400e61c2f872a00c","isMergeCommit":false,"messageTitle":"Update AddressBookParser testing","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":113,"deletions":0}}}]},{"date":"2024-03-13","commitResults":[{"hash":"451d870c2ec78e486c4c0a5b8a9f9e134cffe247","isMergeCommit":true,"messageTitle":"Merge pull request #50 from chiageng/branch-fix-portfolio","messageBody":"Update UserGuide.md and release link","fileTypesAndContributionMap":{}}]},{"date":"2024-03-17","commitResults":[{"hash":"b5a298ed6cc420dfb695e24288ab6fcdd774d049","isMergeCommit":true,"messageTitle":"Merge pull request #62 from yleeyilin/Update-Edit-Command","messageBody":"Update edit command","fileTypesAndContributionMap":{}}]},{"date":"2024-03-18","commitResults":[{"hash":"e973c364e8f149fad3e681ab41db220323f063cf","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-W10-2/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"627238bf92d11177f5bd6afcb8eff3d8c6023f79","isMergeCommit":false,"messageTitle":"Update success messages for add command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":66,"deletions":1}}},{"hash":"bfb5e4cd93ba29722dbaf1bf735f78f831d08a98","isMergeCommit":false,"messageTitle":"Update naming convention in class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":55,"deletions":55},"test-code":{"insertions":10,"deletions":10}}},{"hash":"8e3f167be49b17f0585c933a4ce53351facd255e","isMergeCommit":false,"messageTitle":"Add test cases for JSON","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":35,"deletions":13},"test-code":{"insertions":2,"deletions":3}}},{"hash":"b1c3b7b2b77b89f7ce4a2504cfac40870c8b293b","isMergeCommit":false,"messageTitle":"Update command name to /pooch-maintainer","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"2a7ce562b5ceefc0febb4907c533914a20f8689f","isMergeCommit":false,"messageTitle":"Update UserGuide.md for add","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":18,"deletions":10}}},{"hash":"2519e37a8263e863c7cbeea969039b9f8bbe7da3","isMergeCommit":true,"messageTitle":"Merge pull request #71 from chiageng/branch-addCommandDebug","messageBody":"Add Command Debug \u0026 Add Test Cases","fileTypesAndContributionMap":{}},{"hash":"82eb4954cc5c7a5ceec45e9fa046a10a8283875f","isMergeCommit":true,"messageTitle":"Merge pull request #76 from yleeyilin/Fix-Edit-Bugs","messageBody":"Fix edit command bugs","fileTypesAndContributionMap":{}}]},{"date":"2024-03-19","commitResults":[{"hash":"58d1f720430932f186a40ed8803dca99f7df767b","isMergeCommit":true,"messageTitle":"Merge pull request #77 from yleeyilin/Update-UI-UML","messageBody":"Update Ui Class Uml","fileTypesAndContributionMap":{}},{"hash":"dbed9471e5a6c94782dd46e1b2e3a7e662de1bd0","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-W10-2/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"7b23097315bc35d36c13c92e28c834acb2dbacb4","isMergeCommit":false,"messageTitle":"Update UML diagram","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":5}}},{"hash":"fe3ae2351cdc449603394394e8533c7cf1588eca","isMergeCommit":false,"messageTitle":"Update team contribution","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}}]},{"date":"2024-03-21","commitResults":[{"hash":"63d401e78e54c7000b93bfd83ec632294daaf40e","isMergeCommit":true,"messageTitle":"Merge pull request #93 from jannaleong/UpdateHelpMessages","messageBody":"Update messages","fileTypesAndContributionMap":{}},{"hash":"dca36b64a1913166884b022d1c340a49703f4708","isMergeCommit":true,"messageTitle":"Merge pull request #94 from Joshy837/branch-fix-search-command-bug","messageBody":"Branch fix search command bug","tags":["v1.2"],"fileTypesAndContributionMap":{}}]}],"jamessinmaojun":[{"date":"2024-02-29","commitResults":[{"hash":"6f9b1109117a980007ea1ba7c145cec05687552a","isMergeCommit":false,"messageTitle":"Update James Sin\u0027s Info for AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}},{"hash":"9f4c7d68911725985805a89390dce4355343ebf1","isMergeCommit":false,"messageTitle":"Create jamessinmaojun.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":24,"deletions":0}}},{"hash":"84698158b446bc92404f95a2e64db344994d4bcc","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":23}}}]},{"date":"2024-03-06","commitResults":[{"hash":"a28da82aec82722a8d9a35860b6d0d75a3f03a69","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"Add glossary","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"0e256e6aa8c10564eaff21f4ec7a30c42a75d27d","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"Update glossary","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":1}}}]},{"date":"2024-03-07","commitResults":[{"hash":"cba4fded808b1e5cfb9012d909ea21f1cb610aa1","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"a4a632f051b72c57e018aacbea4814a4de68faf4","isMergeCommit":true,"messageTitle":"Merge pull request #45 from jamessinmaojun/branchAboutUs","messageBody":"Update AboutUs.md","fileTypesAndContributionMap":{}}]},{"date":"2024-03-13","commitResults":[{"hash":"abce4e74d2050183508843a2fcfa2d146e963dfb","isMergeCommit":true,"messageTitle":"Merge pull request #60 from jannaleong/AddHelpCommand","messageBody":"Add specific help command","fileTypesAndContributionMap":{}}]},{"date":"2024-03-15","commitResults":[{"hash":"ab2295f4f81be6051b671fb322aa9bf55552d760","isMergeCommit":false,"messageTitle":"Implement delete command.","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":49,"deletions":16},"test-code":{"insertions":67,"deletions":32}}}]},{"date":"2024-03-16","commitResults":[{"hash":"3f4fcc903324bba9609ae22f378bd8ee501c0f4e","isMergeCommit":false,"messageTitle":"Fix delete command build bug","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":4},"test-code":{"insertions":5,"deletions":14}}},{"hash":"a9181752f3e5ad9e59154a98480c3a1925729d9e","isMergeCommit":false,"messageTitle":"Improve delete command test coverage","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":0}}}]},{"date":"2024-03-18","commitResults":[{"hash":"c04849092677d4383fd877436767f4c18656b40a","isMergeCommit":false,"messageTitle":"Fix delete command bugs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":85,"deletions":34},"other":{"insertions":1,"deletions":2},"test-code":{"insertions":41,"deletions":40}}},{"hash":"e59058056a96518ca3139d8bcd48129a4c5411ee","isMergeCommit":true,"messageTitle":"Merge pull request #72 from jannaleong/Update-Ug-HelpCommand","messageBody":"Update help section in UG","fileTypesAndContributionMap":{}},{"hash":"fd8f535a7e226b3b7af062e3837c762ac33f827f","isMergeCommit":false,"messageTitle":"Add deleteFormat test case","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":26,"deletions":0}}},{"hash":"265b37c62db801ab804cee9e95852eb6df9f2e9a","isMergeCommit":true,"messageTitle":"Merge branch \u0027branchDelete\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4418400d297830b04e92636d5bc68782b66906a7","isMergeCommit":false,"messageTitle":"Update UML and sequence diagrams","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}}]},{"date":"2024-03-19","commitResults":[{"hash":"7efdfee49c023c52f0c45feabadf2d073c909a76","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-W10-2/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"77ce41f1ba9f88ec8bc2adff162d0dd3469027e5","isMergeCommit":true,"messageTitle":"Fix delete command bugs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"880734234564458038def232ec6755bed78a3da3","isMergeCommit":false,"messageTitle":"Fix deleteFormat testcase","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"test-code":{"insertions":14,"deletions":10}}},{"hash":"a5edbb920e6b361fbb7ee23f15ccd4468934be12","isMergeCommit":true,"messageTitle":"Merge pull request #80 from Joshy837/branch-update-model-UML","messageBody":"Update Model UML Diagram","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"3023ea07fe2e9e662f80c7b46ee09b12cbf71896","isMergeCommit":true,"messageTitle":"Merge pull request #83 from jannaleong/AddNoteCommand","messageBody":"Add note command","fileTypesAndContributionMap":{}},{"hash":"22ab7fe53040cf41dbcec9db83a54d3fe4f835bf","isMergeCommit":true,"messageTitle":"Resolve refactor merge conflict","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"98192c6c312929efca8d97bbc923b32391485ad7","isMergeCommit":false,"messageTitle":"Refactor Messages","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":278,"deletions":242},"test-code":{"insertions":117,"deletions":87}}}]},{"date":"2024-03-22","commitResults":[{"hash":"be1e562c373cd5f05e7faa92a44f89d010c13699","isMergeCommit":true,"messageTitle":"Merge group master into individual branchReFactorMessages","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"09d729c1084fbf8f819cc0359e81b9242ace08d0","isMergeCommit":false,"messageTitle":"Merge group master with individual refactor","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":5},"test-code":{"insertions":1,"deletions":13}}},{"hash":"4cb2eea378fe7b04a3ef1d7a0ee86a51ad3dfb42","isMergeCommit":false,"messageTitle":"Add test cases for Messages","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":126,"deletions":26}}},{"hash":"903743fb7108122b2e6e47951a5755baa6df1fa7","isMergeCommit":false,"messageTitle":"Fix build errors","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":10}}},{"hash":"4446d962465c13f24993b4a435e02e9d980a0498","isMergeCommit":false,"messageTitle":"Add Test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":19},"test-code":{"insertions":71,"deletions":0}}},{"hash":"44f124ba33a5ca506a6d53c2634b20eaaa0a73c4","isMergeCommit":false,"messageTitle":"Add findByName test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":104,"deletions":5}}},{"hash":"31a1a5ea989c0d68a872b1561f55a93a1f30d648","isMergeCommit":false,"messageTitle":"Fix imports for ModelManagerTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":9,"deletions":9}}}]},{"date":"2024-03-23","commitResults":[{"hash":"be8998c045e7e2f1e4b6c43fbefa2a906273ebbc","isMergeCommit":true,"messageTitle":"Merge pull request #107 from jannaleong/ExpandNoteToAllClasses","messageBody":"Expand note to all classes","fileTypesAndContributionMap":{}}]}],"jannaleong":[{"date":"2024-03-06","commitResults":[{"hash":"8d5b72795bc362fc0c4232fee81f32be64eb856b","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-W10-2/tp","messageBody":"* \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-W10-2/tp:\n Update Developer Guide and fix minor mistakes\n Update non functional requirements in developer guide\n Update use cases in developer guide\n Update developer guide on non functional requirements\n Add User Guide for feature add\n Update AboutUs.md and chiageng.md\n Update DeveloperGuide.md\n Update DeveloperGuide.md\n Update AboutUs.md\n Update yleeyilin.md\n Update yleeyilin.md\n Update use case for DG\n Add descriptions\n Revert \"Update user guide for edit command\"\n Specify new constraint\n Fix extra line\n Update user guide for edit command\n Update AboutUs.md\n Update index.md\n Update README.md\n","fileTypesAndContributionMap":{}},{"hash":"0772456a20185d3c5e425333d4043748ad09e2c8","isMergeCommit":false,"messageTitle":"Update aboutus, dg and ug","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":56,"deletions":23}}},{"hash":"4f1d904a8ea79888560366103327bed8a8787785","isMergeCommit":false,"messageTitle":"Fix ubuntu build failure","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":19}}},{"hash":"e891563423723798ec7b2399e5001b329a4b3810","isMergeCommit":false,"messageTitle":"Fix build ubuntu","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"49bb2d38eb92f24beda35ffd6795faf62caec06f","isMergeCommit":false,"messageTitle":"Fix formatting issues in dg","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":7}}}]},{"date":"2024-03-07","commitResults":[{"hash":"0bb32628b667696d794118280f62bd096249ccef","isMergeCommit":false,"messageTitle":"Add more user stories","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":10}}},{"hash":"aae79403e444e0f1358e9331cd4911edcf661d77","isMergeCommit":true,"messageTitle":"Merge pull request #42 from jannaleong/UpdateMoreUsecases","messageBody":"Add more user stories","fileTypesAndContributionMap":{}}]},{"date":"2024-03-10","commitResults":[{"hash":"5869c21d2abf3e535858e3fc33a42142461d4ab9","isMergeCommit":true,"messageTitle":"Merge pull request #57 from chiageng/branch-addCommand","messageBody":"Create Add Command and Create Serialization to store different JSON objects","fileTypesAndContributionMap":{}}]},{"date":"2024-03-11","commitResults":[{"hash":"4074814bc2ffd81b7ebcb6dbebb13af3613c59b9","isMergeCommit":false,"messageTitle":"Add specific help command","messageBody":"First-time users may be confused when\nfirst using the application.\n\nSpecific help commands help users\neasily find help for each specific command.\n\nCreate separate classes for each type of\ncommand and a corresponding help window.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":887,"deletions":3},"test-code":{"insertions":120,"deletions":0}}},{"hash":"08c530591e2ab50bb5d717eff8938b55d3a49dda","isMergeCommit":false,"messageTitle":"Add more test case for address book","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":44,"deletions":0}}},{"hash":"8bc6526d430c1f6ee7c27aed9f29ee0c97ffcc3d","isMergeCommit":false,"messageTitle":"Fix checkstyle issues in addressbooktest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":10,"deletions":5}}}]},{"date":"2024-03-13","commitResults":[{"hash":"d8d3b7f5741f68251e2d8f02dd75f62c9d63a298","isMergeCommit":false,"messageTitle":"Address peer review","messageBody":"Improve on javadoc comment by\nconsistenty placing periods.\n\nImprove code quality by reducing\nverbose if statements and\nmagic strings.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":45,"deletions":28}}}]},{"date":"2024-03-16","commitResults":[{"hash":"3dabf27077b59873cc5022da58c0edd9ffc1f8c0","isMergeCommit":true,"messageTitle":"Merge pull request #61 from jamessinmaojun/branchDelete","messageBody":"Implement delete command","fileTypesAndContributionMap":{}}]},{"date":"2024-03-18","commitResults":[{"hash":"b8d639aa7858de55343aa1b3351dd6f2aa2790fe","isMergeCommit":false,"messageTitle":"Update help section in UG","messageBody":"UG does not reflect current status\nof help command.\n\nUpdate UG for consistency\n","fileTypesAndContributionMap":{"docs":{"insertions":15,"deletions":10}}},{"hash":"043a0c451557a607c69300285e2b4713060e5337","isMergeCommit":false,"messageTitle":"Make help command consistent","messageBody":"Other commands begin with slash.\n\nHelp command is not consistent\nwith the rest of commands.\n\nAdd slash to the beginning of all\nhelp commands.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":7},"docs":{"insertions":17,"deletions":17}}},{"hash":"5a2fc937fdca1e286c18fa28753abeac801f0fa5","isMergeCommit":false,"messageTitle":"Note command takes in params","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":187,"deletions":0}}},{"hash":"722d1974fe8484269dd3cd8fd58d22f3861ee7fb","isMergeCommit":true,"messageTitle":"Merge pull request #75 from Joshy837/branch-add-search-command","messageBody":"Branch add search command","fileTypesAndContributionMap":{}},{"hash":"a1f2fbe3704af3266b5ca53b87d51de29129f927","isMergeCommit":false,"messageTitle":"Replace string note with Note class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":7}}},{"hash":"bbc49dc2d770da911c0909fef26912ff74274b94","isMergeCommit":true,"messageTitle":"Add Note command","messageBody":"Note command can accept\nparameters of class name\nand class note.\n","fileTypesAndContributionMap":{}},{"hash":"00973d2063a1523ed77d62963e7418812414e7c8","isMergeCommit":false,"messageTitle":"Add note functionality","messageBody":"Able to add a note to contacts.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":99,"deletions":16},"test-code":{"insertions":36,"deletions":22}}},{"hash":"62ca4a2cda395fb874bf75f90797e3316f01c7bd","isMergeCommit":false,"messageTitle":"Change name of commands","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}}]},{"date":"2024-03-19","commitResults":[{"hash":"ed6223f0cfb5af34268454da8c415e2be131aa9e","isMergeCommit":true,"messageTitle":"Merge pull request #81 from jamessinmaojun/branchUML","messageBody":"Update Architecture Sequence Diagrams","fileTypesAndContributionMap":{}},{"hash":"392ed4e16d182ecaa0b093f7cde83f466d5e504c","isMergeCommit":false,"messageTitle":"Add note command to accept notes","messageBody":"Note command can accept notes\nand update model.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":39},"test-code":{"insertions":21,"deletions":10}}},{"hash":"d96cc9450eb64e9adbae7fb9415d5478677cccaf","isMergeCommit":false,"messageTitle":"Add test case for note command","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":110,"deletions":0}}},{"hash":"c8b73df6a8a4082bdf9d29a3027046c072a1740f","isMergeCommit":false,"messageTitle":"Fix checkstyle issue in added testcases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":15}}},{"hash":"db7c9a0b5ba6749191d93d477a578d2b5935dddf","isMergeCommit":false,"messageTitle":"Fix build bug","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2}}},{"hash":"a0fbda9955d055b14b1bdfb3bf61343511b87ad3","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-W10-2/tp into AddNoteCommand","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c6ae0cb30037174e349344084f90b7e827feed56","isMergeCommit":false,"messageTitle":"Fix merge conflict","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":1,"deletions":1}}},{"hash":"16e677165a5cacbfd9c0f655aaeda517f996cdca","isMergeCommit":false,"messageTitle":"Clean code","messageBody":"Remove redundant comments and\nclarified specifications\n","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":6}}},{"hash":"abe46264838ac74f336083fc49f202d0886b885f","isMergeCommit":false,"messageTitle":"Update UG with note command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":16,"deletions":0}}},{"hash":"dfc67fd68a64dff44f6d356e638b65906653c5b6","isMergeCommit":false,"messageTitle":"Throw errors for note command","messageBody":"As note command will change the attributes\nof the non general person classes, we restrict\nthe use of note command to only general\nperson class.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":0}}},{"hash":"fccf6d7a51f58144e28e3bc717edf5c0430995be","isMergeCommit":false,"messageTitle":"Address pr comments","messageBody":"Use model findByName model to make\ncode more concise.\n\nClarified specifications regarding note\nwhere it can only be performed on\ngeneral person class.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":22}}},{"hash":"bf744743446ff5ea2df470ea609b5a3451bf58c0","isMergeCommit":true,"messageTitle":"Merge pull request #86 from yleeyilin/Improve-Edit-Code-Quality","messageBody":"Improve edit code quality","fileTypesAndContributionMap":{}},{"hash":"65b5f8e8829e1ea9da151fcc7fc64cd6b84ec302","isMergeCommit":false,"messageTitle":"Update UG for note command","messageBody":"Specifications were not specific\nenough.\n\nTo specify that note command\nonly works with general persons\nclasses.\n","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":1}}},{"hash":"7b3e36f9e5d46371e138fd8edd8ae4fb08be8a53","isMergeCommit":false,"messageTitle":"Address comment on example","messageBody":"NoteCommand.java specifies wrong example.\n\nFix example to reflect actual command.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":3}}}]},{"date":"2024-03-20","commitResults":[{"hash":"f5a67aad5e4d003e4e73952587b68a68ad3526cc","isMergeCommit":false,"messageTitle":"Allow note command to work for all classes","messageBody":"Return different constructors based on\nthe instances of the class.\n\nUse a setter to update the note command\nin the parent person class.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":57,"deletions":8}}}]},{"date":"2024-03-21","commitResults":[{"hash":"07c09989751f4822d868ce3acfeebb06008585c5","isMergeCommit":false,"messageTitle":"Update messages","messageBody":"Messages in help commands\nare not updated.\n\nUpdate them to fit new command\nformat.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":8}}},{"hash":"0d7032418a5fab6e013a30888c315e13d51dbf44","isMergeCommit":false,"messageTitle":"Update edit command message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":7}}}]},{"date":"2024-03-22","commitResults":[{"hash":"f615db84cd91e809f198acbe24cc6f6a202dd139","isMergeCommit":false,"messageTitle":"Fix code quality","messageBody":"Removed redundant imports.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":15}}}]},{"date":"2024-03-23","commitResults":[{"hash":"baace991aa3765e7047accc70235f0c302a1d9cd","isMergeCommit":false,"messageTitle":"Remove direct setter for note","messageBody":"Direct setter for note violates OOP.\n\nChange to a function that calls the note\nobject to change its value internally.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":7}}},{"hash":"1f2f2ac434bd60d6f30874f746677ba7abb8238e","isMergeCommit":false,"messageTitle":"Fix storage bug","messageBody":"Unable to store and reload\nnote in maintainer, staff, supplier\nclass.\n\nRectify this updating the new\npersons object with new note\nwhen created when the app is\nloaded again.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":6}}},{"hash":"6e27445bed11d6e508fe44c429526e95ba329a4f","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into ExpandNoteToAllClasses","messageBody":"* master:\n Fix imports for ModelManagerTest\n Add findByName test cases\n Add Test cases\n Fix build errors\n Add test cases for Messages\n Merge group master with individual refactor\n Update combination fields testcase\n Add invalid fields for person test cases\n Add new line to KeywordPredicateTest\n Add test cases for SearchCommandParserTest\n Add SearchMessagesTest testcase\n Update checkstyle\n Fixes search message and error messages\n Fix search command bug\n Update edit command message\n Update messages\n Refactor Messages\n\n# Conflicts:\n#\tsrc/main/java/seedu/address/logic/commands/NoteCommand.java\n","fileTypesAndContributionMap":{}},{"hash":"cd0c5131d86363a39ca02b529a152f00b9b338ca","isMergeCommit":false,"messageTitle":"Add new test case","messageBody":"Add test case to add notes\n to staff class.\n","fileTypesAndContributionMap":{"test-code":{"insertions":40,"deletions":1}}},{"hash":"eec0d3d884082d2772abf01dc7acbcfe7a42b9ff","isMergeCommit":false,"messageTitle":"Add more tests","messageBody":"Add test for adding notes\nto Maintainer class and\nSupplier class.\n","fileTypesAndContributionMap":{"test-code":{"insertions":61,"deletions":13}}}]}],"yleeyilin":[{"date":"2024-02-28","commitResults":[{"hash":"513e1e7f53d2d120abc6b8f507957691d1252b14","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":53,"deletions":7}}},{"hash":"62061f70307ee501af14d5cad43bff53a70315f4","isMergeCommit":false,"messageTitle":"Update user guide for edit command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":21,"deletions":3}}},{"hash":"9271fdd4fbcb869cf5fc222e4f08bd880151599b","isMergeCommit":false,"messageTitle":"Fix extra line","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":1}}},{"hash":"c2c9ba82b2aa6ae5ae7f56563099b5d568ef5934","isMergeCommit":false,"messageTitle":"Specify new constraint","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"3d2abf6a8c3a7d2bc96d90904dd454ffa16f4e5c","isMergeCommit":false,"messageTitle":"Revert \"Update user guide for edit command\"","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":20}}},{"hash":"90aad7645a196caa6627e5c65b9582d7c59edcdb","isMergeCommit":true,"messageTitle":"Merge pull request #28 from AY2324S2-CS2103T-W10-2/revert-27-Update-UG-Edit-Command","messageBody":"Revert \"Update user guide for edit command\"","fileTypesAndContributionMap":{}},{"hash":"613dad4320429e6a970575653be02cfd7bee3ca2","isMergeCommit":false,"messageTitle":"Add descriptions","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"facd6d8cf4568105184d87df193a807bafa281d0","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into Update-UG-Edit-Command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9759588f35a06c091ebf956d9a90c5a51276286e","isMergeCommit":true,"messageTitle":"Merge pull request #29 from yleeyilin/Update-UG-Edit-Command","messageBody":"Update User Guide for Edit Command","fileTypesAndContributionMap":{}}]},{"date":"2024-02-29","commitResults":[{"hash":"774d831795c694fc1b1fe5630347f8311fb97403","isMergeCommit":false,"messageTitle":"Update use case for DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":197,"deletions":13}}},{"hash":"d9b8bf2c9e7f6a89317de3eeed40591aa78e2ce8","isMergeCommit":false,"messageTitle":"Update yleeyilin.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"d67b158b565918ca1282632eadd6e13facefeacc","isMergeCommit":false,"messageTitle":"Update yleeyilin.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":25}}},{"hash":"ea6d5c8730c5b5b1482f61c49b48b782c65cb83c","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":2}}},{"hash":"df138564ce343ade0bebd670d6c608e81048ab00","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":14,"deletions":15}}},{"hash":"d1a38ffa8215cfd04f6aa62743f719f4fc197bf9","isMergeCommit":true,"messageTitle":"Merge pull request #26 from yleeyilin/Update-AboutUs-YiLin","messageBody":"Update AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"fe5b4a72e017bdc44d58082f64f464a28129c6f0","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":42}}},{"hash":"5767e13c04cb8c8257a26e6698f85192624d0f80","isMergeCommit":true,"messageTitle":"Merge pull request #30 from yleeyilin/Update-DG-Use-Cases","messageBody":"Update use case for DG","fileTypesAndContributionMap":{}}]},{"date":"2024-03-06","commitResults":[{"hash":"8e41a7d99796b14dd7d5a2787b0afb4a117b87c4","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of github.com:AY2324S2-CS2103T-W10-2/tp","messageBody":"* \u0027master\u0027 of github.com:AY2324S2-CS2103T-W10-2/tp:\n Update DeveloperGuide.md\n Update DeveloperGuide.md\n Update use case for DG\n","fileTypesAndContributionMap":{}},{"hash":"95ec3108e014e7f85c3c88f777c12a9711667336","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of github.com:AY2324S2-CS2103T-W10-2/tp","messageBody":"* \u0027master\u0027 of github.com:AY2324S2-CS2103T-W10-2/tp:\n Update Developer Guide and fix minor mistakes\n Update non functional requirements in developer guide\n Update use cases in developer guide\n Update developer guide on non functional requirements\n Add User Guide for feature add\n Update AboutUs.md and chiageng.md\n","fileTypesAndContributionMap":{}}]},{"date":"2024-03-12","commitResults":[{"hash":"d4ca6601b7cf1cafddaaff2f4b8ca5816fc6040b","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of github.com:AY2324S2-CS2103T-W10-2/tp","messageBody":"* \u0027master\u0027 of github.com:AY2324S2-CS2103T-W10-2/tp: (46 commits)\n Update AddressBookParser testing\n Create Unit Testing for Maintainer, Staff and Supplier\n Create Unit Testing for Commission, Employment, Salary, Price, Skill, Product\n Create AddSupplierCommandParser and AddMaintainerCommandParser testing\n Create AddStaffCommandParser.java testing\n Create AddMaintainerCommand Testing\n Update JsonAdapterPersonTest.java\n Update ParserUtilTest.java\n Create Testing for AddSupplierCommand\n Create Testing for AddStaffCommand\n Update chiageng.md\n Fix checkstyles\n Update JSON serialization for staff, supplier and maintainer, then update UI display for staff, supplier and maintainer\n Add addmaintainer command\n Add addsupplier command\n Assign tag to Person and Staff\n Use /pooch-staff to add staff\n Insert staff instead of person in add command\n Update format of add command\n Update checking name to be case-insensitive\n ...\n","fileTypesAndContributionMap":{}}]},{"date":"2024-03-14","commitResults":[{"hash":"54584db33df83209b89cdc52449a989bad29ef9f","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of github.com:AY2324S2-CS2103T-W10-2/tp","messageBody":"* \u0027master\u0027 of github.com:AY2324S2-CS2103T-W10-2/tp:\n Address peer review\n Fix checkstyle issues in addressbooktest\n Add more test case for address book\n Add specific help command\n Update UserGuide.md\n","fileTypesAndContributionMap":{}}]},{"date":"2024-03-17","commitResults":[{"hash":"3a9079d28d2744d3ecec8a47af4904473cce1146","isMergeCommit":false,"messageTitle":"Update edit functions","messageBody":"The original edit function from AB3 searches by index, which is\nnot intuitive. Additionally, it only accounts for one type of person\nwith limited attributes.\n\nWe expanded to different categories of person, specific for our niche\ntarget group, dog cafe owners.\n\nI implemented a search by name function into edit and also expanded the\nedit function to allow edit of the different categories of people, namely\nsupplier, staff, maintainer, while keeping the original functionality intact.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":1442,"deletions":53},"docs":{"insertions":1,"deletions":1},"test-code":{"insertions":648,"deletions":193}}},{"hash":"78f9374037d9008575cf8b6e407d7c8d2acd0b95","isMergeCommit":false,"messageTitle":"Fix tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":6}}},{"hash":"4640408a1888bdd1d78ae62cf656e99439889c18","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into Update-Edit-Command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f29ad121daa8009e76522cc85136b224c0b7fe0e","isMergeCommit":false,"messageTitle":"Fix checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1},"test-code":{"insertions":0,"deletions":4}}},{"hash":"1bb2deae13dcadcdf20d1bcc57f919b57dab3186","isMergeCommit":false,"messageTitle":"Add command parser test","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":4},"test-code":{"insertions":521,"deletions":3}}},{"hash":"fb451a11473cfd99f1eaaae264e4ce3c21f43bf2","isMergeCommit":false,"messageTitle":"Fix minor checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"65c40b83445c6949bf7ae10b0dc523c2b4f243fe","isMergeCommit":false,"messageTitle":"Add more parser tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":13},"test-code":{"insertions":186,"deletions":0}}},{"hash":"b09d579923c503ed64d0ce41007d4f9a607df049","isMergeCommit":false,"messageTitle":"Fix tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":180}}},{"hash":"af8916ec4b7203304524776ab44957aa5ddde278","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":4}}},{"hash":"abdfe993f07e77f04e83cc80521310cbe3996c1f","isMergeCommit":false,"messageTitle":"Add descriptor builder test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":238,"deletions":0}}},{"hash":"9428cacf6c1b08c2ec0f6ba58c7095689d563b86","isMergeCommit":false,"messageTitle":"Add basic command tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":162,"deletions":0}}},{"hash":"06452468c46f4c9f7fbf61f4039d036256a5b080","isMergeCommit":false,"messageTitle":"Fix checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":18,"deletions":7}}}]},{"date":"2024-03-18","commitResults":[{"hash":"fa6532fd6cd88c07365f489b5554a4fef0a88149","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of github.com:AY2324S2-CS2103T-W10-2/tp","messageBody":"* \u0027master\u0027 of github.com:AY2324S2-CS2103T-W10-2/tp:\n Fix checkstyle issues\n Add basic command tests\n Add descriptor builder test\n Fix checkstyle\n Fix tests\n Add more parser tests\n Fix minor checkstyle\n Add command parser test\n Fix checkstyle issues\n Fix tests\n Update edit functions\n Improve delete command test coverage\n Fix delete command build bug\n Implement delete command.\n","fileTypesAndContributionMap":{}},{"hash":"cf00b1efe30134c8cec9193c5a90402a12e7df97","isMergeCommit":false,"messageTitle":"Fix invalid message format","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":21,"deletions":12}}},{"hash":"87c33e2beffce09fa38890b004ff9fee6cce021f","isMergeCommit":false,"messageTitle":"Standardise maintainer","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"e44bdfef17554dc24f7ff451127e1e33d73eaf77","isMergeCommit":false,"messageTitle":"Fix edit commands error bug","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":116,"deletions":28},"test-code":{"insertions":30,"deletions":13}}},{"hash":"4b7d89de4bf6432b360b02f3ae19f7b2c1f6001e","isMergeCommit":false,"messageTitle":"Update user guide and portfolio","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":21,"deletions":7}}},{"hash":"e5c626d13f38b6678c5e251440aac7dcc1355550","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of github.com:AY2324S2-CS2103T-W10-2/tp","messageBody":"* \u0027master\u0027 of github.com:AY2324S2-CS2103T-W10-2/tp:\n Fixes all checkstyle issues\n Add SearchCommandTest testcases\n Add KeywordPredicateTest testcases\n Make help command consistent\n Update help section in UG\n Add SearchCommandParserTest tests\n Add parseCommand_search testing\n Refactor code in KeywordPredicate\n Add search feature\n Add Search Name functionality\n","fileTypesAndContributionMap":{}},{"hash":"60d9ad8242bf547128ac5d3a5493c0630ec873be","isMergeCommit":false,"messageTitle":"Update UI Uml","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}},{"hash":"e4135a2e2abe7efd03e1f46aefbbf38488c8cedb","isMergeCommit":false,"messageTitle":"Fix typo in user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-19","commitResults":[{"hash":"01cddbc8641b6137158bf3e98aa86c5d668e913b","isMergeCommit":false,"messageTitle":"Update help window naming convention","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}},{"hash":"1dfac5a815f676595aea08a57b925ba9895b92d3","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of github.com:AY2324S2-CS2103T-W10-2/tp","messageBody":"* \u0027master\u0027 of github.com:AY2324S2-CS2103T-W10-2/tp:\n Update team contribution\n Update UML diagram\n Fix deleteFormat testcase\n Update help window naming convention\n Update model UML\n Update UML and sequence diagrams\n Change name of commands\n Fix typo in user guide\n Update UI Uml\n Update user guide and portfolio\n Fix edit commands error bug\n Add deleteFormat test case\n Standardise maintainer\n Fix invalid message format\n Fix delete command bugs\n Update UserGuide.md for add\n Update command name to /pooch-maintainer\n Add test cases for JSON\n Update naming convention in class\n Update success messages for add command\n","fileTypesAndContributionMap":{}},{"hash":"8aaebb879da4f70c49df7ae3c3360d0c38a04332","isMergeCommit":false,"messageTitle":"Improve edit command code quality","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":148,"deletions":95}}}]}]},"authorFileTypeContributionMap":{"Joshy837":{"docs":96,"functional-code":310,"test-code":450},"chiageng":{"docs":139,"functional-code":1403,"test-code":2812},"jamessinmaojun":{"docs":49,"functional-code":384,"test-code":465,"other":1},"jannaleong":{"docs":83,"functional-code":1159,"test-code":392},"yleeyilin":{"docs":212,"functional-code":1482,"test-code":1552}},"authorContributionVariance":{"Joshy837":19889.982,"chiageng":463601.78,"jamessinmaojun":23169.781,"jannaleong":43681.977,"yleeyilin":440882.22},"authorDisplayNameMap":{"Joshy837":"CS2103T-W10-2 JOSH..UJUN","chiageng":"CS2103T-W10-2 CHNG..GENG","jamessinmaojun":"CS2103T-W10-2 JAME.. JUN","jannaleong":"CS2103T-W10-2 LEON..ANNA","yleeyilin":"CS2103T-W10-2 LEE .. LIN"}} +{"authorDailyContributionsMap":{"Joshy837":[{"date":"2024-02-28","commitResults":[{"hash":"83bd77e2c927eb71330a172350bbeb2c4354c520","isMergeCommit":true,"messageTitle":"Merge pull request #27 from yleeyilin/Update-UG-Edit-Command","messageBody":"Update user guide for edit command","fileTypesAndContributionMap":{}}]},{"date":"2024-03-06","commitResults":[{"hash":"9362d7c59af2aef8085369da97a6270abd3c3de9","isMergeCommit":false,"messageTitle":"Update AboutUs for Joshua","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"45608234968e00d33d132bb89c73e7ecf3745051","isMergeCommit":false,"messageTitle":"Update the UG (Search command)","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":33,"deletions":0}}},{"hash":"a90cca88103979eb145814e1639f626c0e8935f6","isMergeCommit":false,"messageTitle":"Update Joshua\u0027s Portfolio page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":24,"deletions":0}}},{"hash":"c7a6a283a990aade8825fa3bcf1b0b618e6f0c89","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":15,"deletions":1}}},{"hash":"1c12015820507b4515cfbfb6762599d1201c3af4","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/Joshy837/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"745bcde05582028a1eee51b5842a21acbfe65f5e","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-W10-2/tp","messageBody":"# Conflicts:\n#\tREADME.md\n","fileTypesAndContributionMap":{}},{"hash":"9dd49354fbfe26b3477ba26b2a60e2a25fa3ad0b","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":13,"deletions":1}}},{"hash":"3f5fe05599fcb7aa94b2164978d233843a79802a","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":14}}},{"hash":"5347523a871cef9c8c13559455f47b5b1d20f810","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/Joshy837/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a42049c7b085a1522bef594f2c01401f1c18f660","isMergeCommit":true,"messageTitle":"Update README.md and fix merge conflict","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9991889b06b52e9eb91fe051c7c41bae11336b69","isMergeCommit":false,"messageTitle":"Remove all AB3 references","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-07","commitResults":[{"hash":"718471ce494c5c1591bb3f88f9f51b9cd609237f","isMergeCommit":true,"messageTitle":"Merge pull request #43 from Joshy837/branch-readme","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-15","commitResults":[{"hash":"405e7296da481e1c3ac4763a06b06414508d3aab","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-W10-2/tp","messageBody":"* \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-W10-2/tp:\n Address peer review\n Fix checkstyle issues in addressbooktest\n Add more test case for address book\n Add specific help command\n Update UserGuide.md\n","fileTypesAndContributionMap":{}}]},{"date":"2024-03-16","commitResults":[{"hash":"be62ad818e2b01758fe00158bc9ea98d336b3c7d","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-W10-2/tp","messageBody":"* \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-W10-2/tp:\n Improve delete command test coverage\n Fix delete command build bug\n Implement delete command.\n","fileTypesAndContributionMap":{}},{"hash":"a319e127a7e97c82ad93ccf0f370c73a7e955313","isMergeCommit":false,"messageTitle":"Add Search Name functionality","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":135,"deletions":18}}},{"hash":"5a35448926534f3399dc6aa97ed72bf833490eee","isMergeCommit":false,"messageTitle":"Add search feature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":161,"deletions":74},"other":{"insertions":14,"deletions":9}}}]},{"date":"2024-03-17","commitResults":[{"hash":"6c12c803e691273953845967b23c305ede794bcb","isMergeCommit":false,"messageTitle":"Refactor code in KeywordPredicate","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":36}}}]},{"date":"2024-03-18","commitResults":[{"hash":"c8825c520e590761de48600b2abc5102a008f35b","isMergeCommit":true,"messageTitle":"Fix merge conflicts in AddressBookParser.java","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ecf6cb2117263a493d7a81516e6601612ccd37fd","isMergeCommit":false,"messageTitle":"Add parseCommand_search testing","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":18,"deletions":2},"test-code":{"insertions":12,"deletions":27}}},{"hash":"6678994b642b986ac05091e2f1e0be13fba2b84a","isMergeCommit":false,"messageTitle":"Add SearchCommandParserTest tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":36,"deletions":0}}},{"hash":"debc2353e99ed4b40a67ba09297767072f1a3010","isMergeCommit":false,"messageTitle":"Add KeywordPredicateTest testcases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"test-code":{"insertions":124,"deletions":0}}},{"hash":"62d0b19bd0a6f8ebe931964cc864d4de9dd40dca","isMergeCommit":false,"messageTitle":"Add SearchCommandTest testcases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":92,"deletions":0}}},{"hash":"1e4cb04eda51acedaa744ea99aff042bb40336dd","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-W10-2/tp into branch-add-search-command","messageBody":"* \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-W10-2/tp:\n Make help command consistent\n Update help section in UG\n","fileTypesAndContributionMap":{}},{"hash":"e9d1eb0ee1cbba1457a599403d1631b4356a5903","isMergeCommit":false,"messageTitle":"Fixes all checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":51,"deletions":15},"test-code":{"insertions":106,"deletions":43}}},{"hash":"a44c2fe5d2b1bad2214550f6b55b4cf69679c547","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-W10-2/tp","messageBody":"* \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-W10-2/tp: (21 commits)\n Fixes all checkstyle issues\n Add SearchCommandTest testcases\n Add KeywordPredicateTest testcases\n Make help command consistent\n Update help section in UG\n Add SearchCommandParserTest tests\n Add parseCommand_search testing\n Fix checkstyle issues\n Add basic command tests\n Add descriptor builder test\n Fix checkstyle\n Fix tests\n Add more parser tests\n Fix minor checkstyle\n Add command parser test\n Fix checkstyle issues\n Fix tests\n Update edit functions\n Refactor code in KeywordPredicate\n Add search feature\n ...\n","fileTypesAndContributionMap":{}}]},{"date":"2024-03-19","commitResults":[{"hash":"7914d0526f7eb826cc92df03ad81e4651ffdf2ef","isMergeCommit":true,"messageTitle":"Merge pull request #78 from jannaleong/EditLogicAndParseUML","messageBody":"Change name of commands","fileTypesAndContributionMap":{}},{"hash":"59124b8eec6ee8a026002a660abf457ce89407cb","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-W10-2/tp","messageBody":"* \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-W10-2/tp:\n Change name of commands\n Fix typo in user guide\n Update user guide and portfolio\n Fix edit commands error bug\n Standardise maintainer\n Fix invalid message format\n Update UserGuide.md for add\n Update command name to /pooch-maintainer\n Add test cases for JSON\n Update naming convention in class\n Update success messages for add command\n","fileTypesAndContributionMap":{}},{"hash":"4604549ed3b3336a59c68d78098b4daf665fe1ad","isMergeCommit":false,"messageTitle":"Update model UML","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":24,"deletions":2}}},{"hash":"d6e3e65802a30fc9e7cb5bc437cde55db9e912f5","isMergeCommit":true,"messageTitle":"Merge pull request #73 from jamessinmaojun/branchDelete","messageBody":"Fix delete command bugs","fileTypesAndContributionMap":{}},{"hash":"161ed748895a5c3dad16cfde11d14635f5313e10","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-W10-2/tp","messageBody":"* \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-W10-2/tp:\n Fix deleteFormat testcase\n Update model UML\n Update UML and sequence diagrams\n Add deleteFormat test case\n Fix delete command bugs\n","fileTypesAndContributionMap":{}},{"hash":"61275729b77b4ac04ed957554a090fb9de08069b","isMergeCommit":true,"messageTitle":"Merge pull request #84 from chiageng/branch-UML","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"76356143fe762fb16262d5004556834a3c422409","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-W10-2/tp","messageBody":"* \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-W10-2/tp:\n Address comment on example\n Update UG for note command\n Address pr comments\n Improve edit command code quality\n Throw errors for note command\n Update UG with note command\n Clean code\n Update team contribution\n Update UML diagram\n Fix merge conflict\n Fix build bug\n Fix checkstyle issue in added testcases\n Add test case for note command\n Add note command to accept notes\n Update help window naming convention\n Add note functionality\n Update UI Uml\n Replace string note with Note class\n Note command takes in params\n","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"0055af8a2dfe0a71173546bda99e81b530b55b88","isMergeCommit":false,"messageTitle":"Fix search command bug","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":90,"deletions":19}}},{"hash":"655d0147890159cbb997bceee0a9eeb99b5a18be","isMergeCommit":false,"messageTitle":"Fixes search message and error messages","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":34,"deletions":46}}},{"hash":"147f659388d35973ceb88b260a582fb6f046bc8d","isMergeCommit":false,"messageTitle":"Update checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":29,"deletions":16},"test-code":{"insertions":3,"deletions":4}}},{"hash":"276a408e9fde3bddc33a5bbc6aa3b370a432f027","isMergeCommit":false,"messageTitle":"Add SearchMessagesTest testcase","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":26,"deletions":10}}},{"hash":"41161c7c84745262a78411884827f55de83d2392","isMergeCommit":false,"messageTitle":"Add test cases for SearchCommandParserTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":12},"test-code":{"insertions":89,"deletions":18}}},{"hash":"945f1afc022b0e77fdd7b623ad1d24eff99c08bf","isMergeCommit":false,"messageTitle":"Add new line to KeywordPredicateTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"7aac74ae7509762a7fbc83c5dfb235436fb7d231","isMergeCommit":false,"messageTitle":"Add invalid fields for person test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":48,"deletions":0}}},{"hash":"01e4a524dedb99d71163153757267a9c43071c90","isMergeCommit":false,"messageTitle":"Update combination fields testcase","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":8,"deletions":2}}}]},{"date":"2024-03-22","commitResults":[{"hash":"019f051c4b607a9cd1999186d76a8bb168465e49","isMergeCommit":true,"messageTitle":"Merge pull request #88 from jamessinmaojun/branchRefactorMessages","messageBody":"Refactor Messages","fileTypesAndContributionMap":{}}]}],"chiageng":[{"date":"2024-03-01","commitResults":[{"hash":"c9d32a2812847939a6e3b9481807385d0f8d68eb","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-W10-2/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"481d16a1dd2443288f46f447b8aa6faefa88fb98","isMergeCommit":false,"messageTitle":"Update AboutUs.md and chiageng.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":34,"deletions":4}}},{"hash":"f012713ded2d80524e6fb8ca2dde135d0895b610","isMergeCommit":false,"messageTitle":"Add User Guide for feature add","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":26,"deletions":22}}},{"hash":"054e6a41a3956961f5c0b130393882a8d82dca49","isMergeCommit":false,"messageTitle":"Update developer guide on non functional requirements","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":0}}},{"hash":"3fec7d1e12a7d3d08cd37930b3c84aa878341e39","isMergeCommit":false,"messageTitle":"Update use cases in developer guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":64,"deletions":0}}},{"hash":"e26c4db963811a434ee64222507e81f687482493","isMergeCommit":false,"messageTitle":"Update non functional requirements in developer guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":0}}}]},{"date":"2024-03-02","commitResults":[{"hash":"129f406a219d9e0791d8bcd8ca766ad47e9b5f63","isMergeCommit":false,"messageTitle":"Update Developer Guide and fix minor mistakes","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":43}}}]},{"date":"2024-03-06","commitResults":[{"hash":"ecf1b6d1a3403397e593d7219076b28ccaedf131","isMergeCommit":true,"messageTitle":"Merge pull request #34 from chiageng/branch-v1.1","messageBody":"Update AboutUs, User Guides and Developer Guide","fileTypesAndContributionMap":{}},{"hash":"0f9973b861864de5be8f23dcf578bcea5fbdb333","isMergeCommit":true,"messageTitle":"Merge pull request #31 from jamessinmaojun/master","messageBody":"Update AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"6d18ea6233cde84df23dd9e4e6d782338c64c5fd","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-W10-2/tp into branch-v1.1","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8c1ad56a7d3a43769043a6232604b8018ab911c0","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-v1.1\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c900b20f07834410568ca87b2df944e1c81638f9","isMergeCommit":true,"messageTitle":"Merge pull request #36 from Joshy837/master","messageBody":"Fix Joshua\u0027s Issues for V1.1","fileTypesAndContributionMap":{}},{"hash":"19b9f76fda0a5524aa5a1de6d89eba2c97ff06f0","isMergeCommit":true,"messageTitle":"Merge pull request #37 from jamessinmaojun/master","messageBody":"Update DeveloperGuide.md","fileTypesAndContributionMap":{}},{"hash":"0a95734a867cd7a8aa4283da71b8b6f540383772","isMergeCommit":true,"messageTitle":"Merge pull request #35 from jannaleong/UpdateAboutUs_UG_DG","messageBody":"Update about us ug dg","fileTypesAndContributionMap":{}},{"hash":"d5585801fb7d45b88a30ff12a9bc63505d4d5bad","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-W10-2/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"90567398bf81518b3c54e6064273d40b94bb747f","isMergeCommit":true,"messageTitle":"Merge pull request #38 from jannaleong/UpdateAboutUs_UG_DG","messageBody":"Fix formatting issues in dg","fileTypesAndContributionMap":{}}]},{"date":"2024-03-07","commitResults":[{"hash":"ee0ae6eff0f622e2e92637ce6a04741cc8c16d7f","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-W10-2/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"aa00dd0c2e6dae7cce9b833cdfeddf3d4bebe39c","isMergeCommit":false,"messageTitle":"Fix AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"de4cd18c87fd0a2cf0a085f6697ae9f69a46a6c0","isMergeCommit":true,"messageTitle":"Merge pull request #46 from chiageng/branch-fix-portfolio","messageBody":"Fix AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"4924a345fc4c51987b443e42659f48f8fb454cba","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":30,"deletions":58}}},{"hash":"da3356e211ae6669db8e7326eab6e7e4a20c93ed","isMergeCommit":true,"messageTitle":"Merge pull request #47 from chiageng/branch-fix-portfolio","messageBody":"Fix _config.yml and Update UserGuide.md","fileTypesAndContributionMap":{}}]},{"date":"2024-03-08","commitResults":[{"hash":"175913f8c2f4f4791bfcfccf839cfbcd19f8f068","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-W10-2/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a7b0ad7ea1934fc596127102aec9c151f6baf709","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-fix-portfolio","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"0eb4649aacd1d0870ea0a6edf45c94625c71a38a","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"e0259a1f0c290411db269623cb0da84c327be5d3","isMergeCommit":false,"messageTitle":"Update checking name to be case-insensitive","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1},"test-code":{"insertions":1,"deletions":1}}},{"hash":"b0bc00ee7413d2280ba715e8a4ebcaf2e79beba5","isMergeCommit":false,"messageTitle":"Update format of add command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":5}}},{"hash":"776cd27a46ab2cb5c38f52ea5229d4e1ed7c4513","isMergeCommit":false,"messageTitle":"Insert staff instead of person in add command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":273,"deletions":34}}},{"hash":"0983cfdf012d9e43f62043b2ff638b2a94320ea7","isMergeCommit":false,"messageTitle":"Use /pooch-staff to add staff","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":150,"deletions":47}}},{"hash":"2d36837e36dd0e32343b8137fa365c5aee004bb3","isMergeCommit":false,"messageTitle":"Assign tag to Person and Staff","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":11},"test-code":{"insertions":39,"deletions":39}}},{"hash":"91a782f9ceeec9233ffc38de4fe5c550806d0aa3","isMergeCommit":false,"messageTitle":"Add addsupplier command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":384,"deletions":10}}},{"hash":"ff8325f3cad90d74cf8802f8989170eb8eb46950","isMergeCommit":false,"messageTitle":"Add addmaintainer command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":391,"deletions":4}}}]},{"date":"2024-03-09","commitResults":[{"hash":"57c41fa71b5fbefbc4605a88616191e9371e1b44","isMergeCommit":false,"messageTitle":"Update JSON serialization for staff, supplier and maintainer, then update UI display for staff, supplier and maintainer","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":235,"deletions":11},"test-code":{"insertions":19,"deletions":10}}},{"hash":"3e62a38d7ac6e0f7699c3cf76a56cbffae886bd6","isMergeCommit":false,"messageTitle":"Fix checkstyles","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":155,"deletions":110},"test-code":{"insertions":53,"deletions":43}}},{"hash":"3490db11da24434d2b999ef8db95e5678a4eb0c5","isMergeCommit":false,"messageTitle":"Update chiageng.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":14,"deletions":2}}},{"hash":"5f61f1d50537fcf33c8c4332402a44ece12746a9","isMergeCommit":false,"messageTitle":"Create Testing for AddStaffCommand","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":344,"deletions":0}}},{"hash":"a13e7e531dbfecabb15af4dfafa1c5a5664c4f07","isMergeCommit":false,"messageTitle":"Create Testing for AddSupplierCommand","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":363,"deletions":19}}},{"hash":"38cfc312fd3e96e56a4a4b58e24c34f36e51bae5","isMergeCommit":false,"messageTitle":"Update ParserUtilTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":156,"deletions":1}}},{"hash":"ee1ba89e8838e829f2a788e3fe4ce9b18c668337","isMergeCommit":false,"messageTitle":"Update JsonAdapterPersonTest.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":7},"test-code":{"insertions":64,"deletions":0}}},{"hash":"3a28c0e881913e16723a4dc8e0999c80d95c898b","isMergeCommit":false,"messageTitle":"Create AddMaintainerCommand Testing","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":400,"deletions":5}}},{"hash":"c7af968762c59496cc36847d64eb32e2b99728e9","isMergeCommit":false,"messageTitle":"Create AddStaffCommandParser.java testing","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":294,"deletions":12}}},{"hash":"f29fda1a1da3bb5fe45977a5729e5c04210be950","isMergeCommit":false,"messageTitle":"Create AddSupplierCommandParser and AddMaintainerCommandParser testing","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":458,"deletions":2}}},{"hash":"d255ded1d81768a4f377318e123b2d1e3157bf61","isMergeCommit":false,"messageTitle":"Create Unit Testing for Commission, Employment, Salary, Price, Skill, Product","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":0},"test-code":{"insertions":343,"deletions":0}}},{"hash":"44703bbdb9ab1e836571a99f0624fcee1170205d","isMergeCommit":false,"messageTitle":"Create Unit Testing for Maintainer, Staff and Supplier","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":18,"deletions":3},"test-code":{"insertions":321,"deletions":0}}},{"hash":"01aaa0603d740fa34ab3a8a0400e61c2f872a00c","isMergeCommit":false,"messageTitle":"Update AddressBookParser testing","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":113,"deletions":0}}}]},{"date":"2024-03-13","commitResults":[{"hash":"451d870c2ec78e486c4c0a5b8a9f9e134cffe247","isMergeCommit":true,"messageTitle":"Merge pull request #50 from chiageng/branch-fix-portfolio","messageBody":"Update UserGuide.md and release link","fileTypesAndContributionMap":{}}]},{"date":"2024-03-17","commitResults":[{"hash":"b5a298ed6cc420dfb695e24288ab6fcdd774d049","isMergeCommit":true,"messageTitle":"Merge pull request #62 from yleeyilin/Update-Edit-Command","messageBody":"Update edit command","fileTypesAndContributionMap":{}}]},{"date":"2024-03-18","commitResults":[{"hash":"e973c364e8f149fad3e681ab41db220323f063cf","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-W10-2/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"627238bf92d11177f5bd6afcb8eff3d8c6023f79","isMergeCommit":false,"messageTitle":"Update success messages for add command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":66,"deletions":1}}},{"hash":"bfb5e4cd93ba29722dbaf1bf735f78f831d08a98","isMergeCommit":false,"messageTitle":"Update naming convention in class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":55,"deletions":55},"test-code":{"insertions":10,"deletions":10}}},{"hash":"8e3f167be49b17f0585c933a4ce53351facd255e","isMergeCommit":false,"messageTitle":"Add test cases for JSON","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":35,"deletions":13},"test-code":{"insertions":2,"deletions":3}}},{"hash":"b1c3b7b2b77b89f7ce4a2504cfac40870c8b293b","isMergeCommit":false,"messageTitle":"Update command name to /pooch-maintainer","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"2a7ce562b5ceefc0febb4907c533914a20f8689f","isMergeCommit":false,"messageTitle":"Update UserGuide.md for add","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":18,"deletions":10}}},{"hash":"2519e37a8263e863c7cbeea969039b9f8bbe7da3","isMergeCommit":true,"messageTitle":"Merge pull request #71 from chiageng/branch-addCommandDebug","messageBody":"Add Command Debug \u0026 Add Test Cases","fileTypesAndContributionMap":{}},{"hash":"82eb4954cc5c7a5ceec45e9fa046a10a8283875f","isMergeCommit":true,"messageTitle":"Merge pull request #76 from yleeyilin/Fix-Edit-Bugs","messageBody":"Fix edit command bugs","fileTypesAndContributionMap":{}}]},{"date":"2024-03-19","commitResults":[{"hash":"58d1f720430932f186a40ed8803dca99f7df767b","isMergeCommit":true,"messageTitle":"Merge pull request #77 from yleeyilin/Update-UI-UML","messageBody":"Update Ui Class Uml","fileTypesAndContributionMap":{}},{"hash":"dbed9471e5a6c94782dd46e1b2e3a7e662de1bd0","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-W10-2/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"7b23097315bc35d36c13c92e28c834acb2dbacb4","isMergeCommit":false,"messageTitle":"Update UML diagram","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":5}}},{"hash":"fe3ae2351cdc449603394394e8533c7cf1588eca","isMergeCommit":false,"messageTitle":"Update team contribution","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}}]},{"date":"2024-03-21","commitResults":[{"hash":"63d401e78e54c7000b93bfd83ec632294daaf40e","isMergeCommit":true,"messageTitle":"Merge pull request #93 from jannaleong/UpdateHelpMessages","messageBody":"Update messages","fileTypesAndContributionMap":{}},{"hash":"dca36b64a1913166884b022d1c340a49703f4708","isMergeCommit":true,"messageTitle":"Merge pull request #94 from Joshy837/branch-fix-search-command-bug","messageBody":"Branch fix search command bug","tags":["v1.2"],"fileTypesAndContributionMap":{}}]}],"jamessinmaojun":[{"date":"2024-02-29","commitResults":[{"hash":"6f9b1109117a980007ea1ba7c145cec05687552a","isMergeCommit":false,"messageTitle":"Update James Sin\u0027s Info for AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}},{"hash":"9f4c7d68911725985805a89390dce4355343ebf1","isMergeCommit":false,"messageTitle":"Create jamessinmaojun.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":24,"deletions":0}}},{"hash":"84698158b446bc92404f95a2e64db344994d4bcc","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":23}}}]},{"date":"2024-03-06","commitResults":[{"hash":"a28da82aec82722a8d9a35860b6d0d75a3f03a69","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"Add glossary","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"0e256e6aa8c10564eaff21f4ec7a30c42a75d27d","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"Update glossary","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":1}}}]},{"date":"2024-03-07","commitResults":[{"hash":"cba4fded808b1e5cfb9012d909ea21f1cb610aa1","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"a4a632f051b72c57e018aacbea4814a4de68faf4","isMergeCommit":true,"messageTitle":"Merge pull request #45 from jamessinmaojun/branchAboutUs","messageBody":"Update AboutUs.md","fileTypesAndContributionMap":{}}]},{"date":"2024-03-13","commitResults":[{"hash":"abce4e74d2050183508843a2fcfa2d146e963dfb","isMergeCommit":true,"messageTitle":"Merge pull request #60 from jannaleong/AddHelpCommand","messageBody":"Add specific help command","fileTypesAndContributionMap":{}}]},{"date":"2024-03-15","commitResults":[{"hash":"ab2295f4f81be6051b671fb322aa9bf55552d760","isMergeCommit":false,"messageTitle":"Implement delete command.","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":49,"deletions":16},"test-code":{"insertions":67,"deletions":32}}}]},{"date":"2024-03-16","commitResults":[{"hash":"3f4fcc903324bba9609ae22f378bd8ee501c0f4e","isMergeCommit":false,"messageTitle":"Fix delete command build bug","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":4},"test-code":{"insertions":5,"deletions":14}}},{"hash":"a9181752f3e5ad9e59154a98480c3a1925729d9e","isMergeCommit":false,"messageTitle":"Improve delete command test coverage","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":0}}}]},{"date":"2024-03-18","commitResults":[{"hash":"c04849092677d4383fd877436767f4c18656b40a","isMergeCommit":false,"messageTitle":"Fix delete command bugs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":85,"deletions":34},"other":{"insertions":1,"deletions":2},"test-code":{"insertions":41,"deletions":40}}},{"hash":"e59058056a96518ca3139d8bcd48129a4c5411ee","isMergeCommit":true,"messageTitle":"Merge pull request #72 from jannaleong/Update-Ug-HelpCommand","messageBody":"Update help section in UG","fileTypesAndContributionMap":{}},{"hash":"fd8f535a7e226b3b7af062e3837c762ac33f827f","isMergeCommit":false,"messageTitle":"Add deleteFormat test case","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":26,"deletions":0}}},{"hash":"265b37c62db801ab804cee9e95852eb6df9f2e9a","isMergeCommit":true,"messageTitle":"Merge branch \u0027branchDelete\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4418400d297830b04e92636d5bc68782b66906a7","isMergeCommit":false,"messageTitle":"Update UML and sequence diagrams","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}}]},{"date":"2024-03-19","commitResults":[{"hash":"7efdfee49c023c52f0c45feabadf2d073c909a76","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-W10-2/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"77ce41f1ba9f88ec8bc2adff162d0dd3469027e5","isMergeCommit":true,"messageTitle":"Fix delete command bugs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"880734234564458038def232ec6755bed78a3da3","isMergeCommit":false,"messageTitle":"Fix deleteFormat testcase","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"test-code":{"insertions":14,"deletions":10}}},{"hash":"a5edbb920e6b361fbb7ee23f15ccd4468934be12","isMergeCommit":true,"messageTitle":"Merge pull request #80 from Joshy837/branch-update-model-UML","messageBody":"Update Model UML Diagram","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"3023ea07fe2e9e662f80c7b46ee09b12cbf71896","isMergeCommit":true,"messageTitle":"Merge pull request #83 from jannaleong/AddNoteCommand","messageBody":"Add note command","fileTypesAndContributionMap":{}},{"hash":"22ab7fe53040cf41dbcec9db83a54d3fe4f835bf","isMergeCommit":true,"messageTitle":"Resolve refactor merge conflict","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"98192c6c312929efca8d97bbc923b32391485ad7","isMergeCommit":false,"messageTitle":"Refactor Messages","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":278,"deletions":242},"test-code":{"insertions":117,"deletions":87}}}]},{"date":"2024-03-22","commitResults":[{"hash":"be1e562c373cd5f05e7faa92a44f89d010c13699","isMergeCommit":true,"messageTitle":"Merge group master into individual branchReFactorMessages","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"09d729c1084fbf8f819cc0359e81b9242ace08d0","isMergeCommit":false,"messageTitle":"Merge group master with individual refactor","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":5},"test-code":{"insertions":1,"deletions":13}}},{"hash":"4cb2eea378fe7b04a3ef1d7a0ee86a51ad3dfb42","isMergeCommit":false,"messageTitle":"Add test cases for Messages","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":126,"deletions":26}}},{"hash":"903743fb7108122b2e6e47951a5755baa6df1fa7","isMergeCommit":false,"messageTitle":"Fix build errors","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":10}}},{"hash":"4446d962465c13f24993b4a435e02e9d980a0498","isMergeCommit":false,"messageTitle":"Add Test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":19},"test-code":{"insertions":71,"deletions":0}}},{"hash":"44f124ba33a5ca506a6d53c2634b20eaaa0a73c4","isMergeCommit":false,"messageTitle":"Add findByName test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":104,"deletions":5}}},{"hash":"31a1a5ea989c0d68a872b1561f55a93a1f30d648","isMergeCommit":false,"messageTitle":"Fix imports for ModelManagerTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":9,"deletions":9}}}]},{"date":"2024-03-23","commitResults":[{"hash":"be8998c045e7e2f1e4b6c43fbefa2a906273ebbc","isMergeCommit":true,"messageTitle":"Merge pull request #107 from jannaleong/ExpandNoteToAllClasses","messageBody":"Expand note to all classes","fileTypesAndContributionMap":{}}]}],"jannaleong":[{"date":"2024-03-06","commitResults":[{"hash":"8d5b72795bc362fc0c4232fee81f32be64eb856b","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-W10-2/tp","messageBody":"* \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-W10-2/tp:\n Update Developer Guide and fix minor mistakes\n Update non functional requirements in developer guide\n Update use cases in developer guide\n Update developer guide on non functional requirements\n Add User Guide for feature add\n Update AboutUs.md and chiageng.md\n Update DeveloperGuide.md\n Update DeveloperGuide.md\n Update AboutUs.md\n Update yleeyilin.md\n Update yleeyilin.md\n Update use case for DG\n Add descriptions\n Revert \"Update user guide for edit command\"\n Specify new constraint\n Fix extra line\n Update user guide for edit command\n Update AboutUs.md\n Update index.md\n Update README.md\n","fileTypesAndContributionMap":{}},{"hash":"0772456a20185d3c5e425333d4043748ad09e2c8","isMergeCommit":false,"messageTitle":"Update aboutus, dg and ug","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":56,"deletions":23}}},{"hash":"4f1d904a8ea79888560366103327bed8a8787785","isMergeCommit":false,"messageTitle":"Fix ubuntu build failure","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":19}}},{"hash":"e891563423723798ec7b2399e5001b329a4b3810","isMergeCommit":false,"messageTitle":"Fix build ubuntu","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"49bb2d38eb92f24beda35ffd6795faf62caec06f","isMergeCommit":false,"messageTitle":"Fix formatting issues in dg","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":7}}}]},{"date":"2024-03-07","commitResults":[{"hash":"0bb32628b667696d794118280f62bd096249ccef","isMergeCommit":false,"messageTitle":"Add more user stories","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":10}}},{"hash":"aae79403e444e0f1358e9331cd4911edcf661d77","isMergeCommit":true,"messageTitle":"Merge pull request #42 from jannaleong/UpdateMoreUsecases","messageBody":"Add more user stories","fileTypesAndContributionMap":{}}]},{"date":"2024-03-10","commitResults":[{"hash":"5869c21d2abf3e535858e3fc33a42142461d4ab9","isMergeCommit":true,"messageTitle":"Merge pull request #57 from chiageng/branch-addCommand","messageBody":"Create Add Command and Create Serialization to store different JSON objects","fileTypesAndContributionMap":{}}]},{"date":"2024-03-11","commitResults":[{"hash":"4074814bc2ffd81b7ebcb6dbebb13af3613c59b9","isMergeCommit":false,"messageTitle":"Add specific help command","messageBody":"First-time users may be confused when\nfirst using the application.\n\nSpecific help commands help users\neasily find help for each specific command.\n\nCreate separate classes for each type of\ncommand and a corresponding help window.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":887,"deletions":3},"test-code":{"insertions":120,"deletions":0}}},{"hash":"08c530591e2ab50bb5d717eff8938b55d3a49dda","isMergeCommit":false,"messageTitle":"Add more test case for address book","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":44,"deletions":0}}},{"hash":"8bc6526d430c1f6ee7c27aed9f29ee0c97ffcc3d","isMergeCommit":false,"messageTitle":"Fix checkstyle issues in addressbooktest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":10,"deletions":5}}}]},{"date":"2024-03-13","commitResults":[{"hash":"d8d3b7f5741f68251e2d8f02dd75f62c9d63a298","isMergeCommit":false,"messageTitle":"Address peer review","messageBody":"Improve on javadoc comment by\nconsistenty placing periods.\n\nImprove code quality by reducing\nverbose if statements and\nmagic strings.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":45,"deletions":28}}}]},{"date":"2024-03-16","commitResults":[{"hash":"3dabf27077b59873cc5022da58c0edd9ffc1f8c0","isMergeCommit":true,"messageTitle":"Merge pull request #61 from jamessinmaojun/branchDelete","messageBody":"Implement delete command","fileTypesAndContributionMap":{}}]},{"date":"2024-03-18","commitResults":[{"hash":"b8d639aa7858de55343aa1b3351dd6f2aa2790fe","isMergeCommit":false,"messageTitle":"Update help section in UG","messageBody":"UG does not reflect current status\nof help command.\n\nUpdate UG for consistency\n","fileTypesAndContributionMap":{"docs":{"insertions":15,"deletions":10}}},{"hash":"043a0c451557a607c69300285e2b4713060e5337","isMergeCommit":false,"messageTitle":"Make help command consistent","messageBody":"Other commands begin with slash.\n\nHelp command is not consistent\nwith the rest of commands.\n\nAdd slash to the beginning of all\nhelp commands.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":7},"docs":{"insertions":17,"deletions":17}}},{"hash":"5a2fc937fdca1e286c18fa28753abeac801f0fa5","isMergeCommit":false,"messageTitle":"Note command takes in params","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":187,"deletions":0}}},{"hash":"722d1974fe8484269dd3cd8fd58d22f3861ee7fb","isMergeCommit":true,"messageTitle":"Merge pull request #75 from Joshy837/branch-add-search-command","messageBody":"Branch add search command","fileTypesAndContributionMap":{}},{"hash":"a1f2fbe3704af3266b5ca53b87d51de29129f927","isMergeCommit":false,"messageTitle":"Replace string note with Note class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":7}}},{"hash":"bbc49dc2d770da911c0909fef26912ff74274b94","isMergeCommit":true,"messageTitle":"Add Note command","messageBody":"Note command can accept\nparameters of class name\nand class note.\n","fileTypesAndContributionMap":{}},{"hash":"00973d2063a1523ed77d62963e7418812414e7c8","isMergeCommit":false,"messageTitle":"Add note functionality","messageBody":"Able to add a note to contacts.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":99,"deletions":16},"test-code":{"insertions":36,"deletions":22}}},{"hash":"62ca4a2cda395fb874bf75f90797e3316f01c7bd","isMergeCommit":false,"messageTitle":"Change name of commands","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}}]},{"date":"2024-03-19","commitResults":[{"hash":"ed6223f0cfb5af34268454da8c415e2be131aa9e","isMergeCommit":true,"messageTitle":"Merge pull request #81 from jamessinmaojun/branchUML","messageBody":"Update Architecture Sequence Diagrams","fileTypesAndContributionMap":{}},{"hash":"392ed4e16d182ecaa0b093f7cde83f466d5e504c","isMergeCommit":false,"messageTitle":"Add note command to accept notes","messageBody":"Note command can accept notes\nand update model.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":39},"test-code":{"insertions":21,"deletions":10}}},{"hash":"d96cc9450eb64e9adbae7fb9415d5478677cccaf","isMergeCommit":false,"messageTitle":"Add test case for note command","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":110,"deletions":0}}},{"hash":"c8b73df6a8a4082bdf9d29a3027046c072a1740f","isMergeCommit":false,"messageTitle":"Fix checkstyle issue in added testcases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":15}}},{"hash":"db7c9a0b5ba6749191d93d477a578d2b5935dddf","isMergeCommit":false,"messageTitle":"Fix build bug","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2}}},{"hash":"a0fbda9955d055b14b1bdfb3bf61343511b87ad3","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-W10-2/tp into AddNoteCommand","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c6ae0cb30037174e349344084f90b7e827feed56","isMergeCommit":false,"messageTitle":"Fix merge conflict","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":1,"deletions":1}}},{"hash":"16e677165a5cacbfd9c0f655aaeda517f996cdca","isMergeCommit":false,"messageTitle":"Clean code","messageBody":"Remove redundant comments and\nclarified specifications\n","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":6}}},{"hash":"abe46264838ac74f336083fc49f202d0886b885f","isMergeCommit":false,"messageTitle":"Update UG with note command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":16,"deletions":0}}},{"hash":"dfc67fd68a64dff44f6d356e638b65906653c5b6","isMergeCommit":false,"messageTitle":"Throw errors for note command","messageBody":"As note command will change the attributes\nof the non general person classes, we restrict\nthe use of note command to only general\nperson class.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":0}}},{"hash":"fccf6d7a51f58144e28e3bc717edf5c0430995be","isMergeCommit":false,"messageTitle":"Address pr comments","messageBody":"Use model findByName model to make\ncode more concise.\n\nClarified specifications regarding note\nwhere it can only be performed on\ngeneral person class.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":22}}},{"hash":"bf744743446ff5ea2df470ea609b5a3451bf58c0","isMergeCommit":true,"messageTitle":"Merge pull request #86 from yleeyilin/Improve-Edit-Code-Quality","messageBody":"Improve edit code quality","fileTypesAndContributionMap":{}},{"hash":"65b5f8e8829e1ea9da151fcc7fc64cd6b84ec302","isMergeCommit":false,"messageTitle":"Update UG for note command","messageBody":"Specifications were not specific\nenough.\n\nTo specify that note command\nonly works with general persons\nclasses.\n","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":1}}},{"hash":"7b3e36f9e5d46371e138fd8edd8ae4fb08be8a53","isMergeCommit":false,"messageTitle":"Address comment on example","messageBody":"NoteCommand.java specifies wrong example.\n\nFix example to reflect actual command.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":3}}}]},{"date":"2024-03-20","commitResults":[{"hash":"f5a67aad5e4d003e4e73952587b68a68ad3526cc","isMergeCommit":false,"messageTitle":"Allow note command to work for all classes","messageBody":"Return different constructors based on\nthe instances of the class.\n\nUse a setter to update the note command\nin the parent person class.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":57,"deletions":8}}}]},{"date":"2024-03-21","commitResults":[{"hash":"07c09989751f4822d868ce3acfeebb06008585c5","isMergeCommit":false,"messageTitle":"Update messages","messageBody":"Messages in help commands\nare not updated.\n\nUpdate them to fit new command\nformat.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":8}}},{"hash":"0d7032418a5fab6e013a30888c315e13d51dbf44","isMergeCommit":false,"messageTitle":"Update edit command message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":7}}}]},{"date":"2024-03-22","commitResults":[{"hash":"f615db84cd91e809f198acbe24cc6f6a202dd139","isMergeCommit":false,"messageTitle":"Fix code quality","messageBody":"Removed redundant imports.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":15}}}]},{"date":"2024-03-23","commitResults":[{"hash":"baace991aa3765e7047accc70235f0c302a1d9cd","isMergeCommit":false,"messageTitle":"Remove direct setter for note","messageBody":"Direct setter for note violates OOP.\n\nChange to a function that calls the note\nobject to change its value internally.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":7}}},{"hash":"1f2f2ac434bd60d6f30874f746677ba7abb8238e","isMergeCommit":false,"messageTitle":"Fix storage bug","messageBody":"Unable to store and reload\nnote in maintainer, staff, supplier\nclass.\n\nRectify this updating the new\npersons object with new note\nwhen created when the app is\nloaded again.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":6}}},{"hash":"6e27445bed11d6e508fe44c429526e95ba329a4f","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into ExpandNoteToAllClasses","messageBody":"* master:\n Fix imports for ModelManagerTest\n Add findByName test cases\n Add Test cases\n Fix build errors\n Add test cases for Messages\n Merge group master with individual refactor\n Update combination fields testcase\n Add invalid fields for person test cases\n Add new line to KeywordPredicateTest\n Add test cases for SearchCommandParserTest\n Add SearchMessagesTest testcase\n Update checkstyle\n Fixes search message and error messages\n Fix search command bug\n Update edit command message\n Update messages\n Refactor Messages\n\n# Conflicts:\n#\tsrc/main/java/seedu/address/logic/commands/NoteCommand.java\n","fileTypesAndContributionMap":{}},{"hash":"cd0c5131d86363a39ca02b529a152f00b9b338ca","isMergeCommit":false,"messageTitle":"Add new test case","messageBody":"Add test case to add notes\n to staff class.\n","fileTypesAndContributionMap":{"test-code":{"insertions":40,"deletions":1}}},{"hash":"eec0d3d884082d2772abf01dc7acbcfe7a42b9ff","isMergeCommit":false,"messageTitle":"Add more tests","messageBody":"Add test for adding notes\nto Maintainer class and\nSupplier class.\n","fileTypesAndContributionMap":{"test-code":{"insertions":61,"deletions":13}}}]},{"date":"2024-03-24","commitResults":[{"hash":"81b5b827358f45fbcf85c32551aefa3001c5eb60","isMergeCommit":false,"messageTitle":"Edit help command structure","messageBody":"Help command is split into many\ndifferent help commands. This makes\ncode hard to read and long-winded.\n\nCombine all help commands into\na single help command by taking in\ncommand type as a parameter.\n\nThis leads to a more user friendly\ndesign as a single help command\ncan provide help for many different\ncommands.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":203,"deletions":425},"other":{"insertions":11,"deletions":5},"test-code":{"insertions":81,"deletions":177}}},{"hash":"70943cab8c7df49cf303d4797b0806b46fa36d70","isMergeCommit":false,"messageTitle":"Add testcase for helpcommand","messageBody":"Equal method was not tested.\n\nAdd testcase to ensure equal\nfunction works.\n","fileTypesAndContributionMap":{"test-code":{"insertions":14,"deletions":0}}},{"hash":"a3c8ec561958263a0dc62aa0c911f266862c932c","isMergeCommit":false,"messageTitle":"Clean code in helpcommand","messageBody":"Remove extra redundant lines.\n\nRearrange commands such that\ngeneral command is displayed first.\n\nThis makes the view more user\nfriendly and code cleaner.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":4}}},{"hash":"fa7e48ce788e7b0af1f1267e6e8005b78a45ee2e","isMergeCommit":false,"messageTitle":"Fix bug with person class","messageBody":"Adding a new person has a default note\nof \"\". This empty string causes bugs as\nfor note to be valid, note must be empty.\nThis then causes data to not reload.\n\nSolve by setting default note to nonempty\nstring.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":4}}},{"hash":"d7870cfd0906806e3ce95e9c7b0e78b41bdf79ca","isMergeCommit":false,"messageTitle":"Remove redundant comment","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}}]}],"yleeyilin":[{"date":"2024-02-28","commitResults":[{"hash":"513e1e7f53d2d120abc6b8f507957691d1252b14","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":53,"deletions":7}}},{"hash":"62061f70307ee501af14d5cad43bff53a70315f4","isMergeCommit":false,"messageTitle":"Update user guide for edit command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":21,"deletions":3}}},{"hash":"9271fdd4fbcb869cf5fc222e4f08bd880151599b","isMergeCommit":false,"messageTitle":"Fix extra line","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":1}}},{"hash":"c2c9ba82b2aa6ae5ae7f56563099b5d568ef5934","isMergeCommit":false,"messageTitle":"Specify new constraint","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"3d2abf6a8c3a7d2bc96d90904dd454ffa16f4e5c","isMergeCommit":false,"messageTitle":"Revert \"Update user guide for edit command\"","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":20}}},{"hash":"90aad7645a196caa6627e5c65b9582d7c59edcdb","isMergeCommit":true,"messageTitle":"Merge pull request #28 from AY2324S2-CS2103T-W10-2/revert-27-Update-UG-Edit-Command","messageBody":"Revert \"Update user guide for edit command\"","fileTypesAndContributionMap":{}},{"hash":"613dad4320429e6a970575653be02cfd7bee3ca2","isMergeCommit":false,"messageTitle":"Add descriptions","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"facd6d8cf4568105184d87df193a807bafa281d0","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into Update-UG-Edit-Command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9759588f35a06c091ebf956d9a90c5a51276286e","isMergeCommit":true,"messageTitle":"Merge pull request #29 from yleeyilin/Update-UG-Edit-Command","messageBody":"Update User Guide for Edit Command","fileTypesAndContributionMap":{}}]},{"date":"2024-02-29","commitResults":[{"hash":"774d831795c694fc1b1fe5630347f8311fb97403","isMergeCommit":false,"messageTitle":"Update use case for DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":197,"deletions":13}}},{"hash":"d9b8bf2c9e7f6a89317de3eeed40591aa78e2ce8","isMergeCommit":false,"messageTitle":"Update yleeyilin.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"d67b158b565918ca1282632eadd6e13facefeacc","isMergeCommit":false,"messageTitle":"Update yleeyilin.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":25}}},{"hash":"ea6d5c8730c5b5b1482f61c49b48b782c65cb83c","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":2}}},{"hash":"df138564ce343ade0bebd670d6c608e81048ab00","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":14,"deletions":15}}},{"hash":"d1a38ffa8215cfd04f6aa62743f719f4fc197bf9","isMergeCommit":true,"messageTitle":"Merge pull request #26 from yleeyilin/Update-AboutUs-YiLin","messageBody":"Update AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"fe5b4a72e017bdc44d58082f64f464a28129c6f0","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":42}}},{"hash":"5767e13c04cb8c8257a26e6698f85192624d0f80","isMergeCommit":true,"messageTitle":"Merge pull request #30 from yleeyilin/Update-DG-Use-Cases","messageBody":"Update use case for DG","fileTypesAndContributionMap":{}}]},{"date":"2024-03-06","commitResults":[{"hash":"8e41a7d99796b14dd7d5a2787b0afb4a117b87c4","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of github.com:AY2324S2-CS2103T-W10-2/tp","messageBody":"* \u0027master\u0027 of github.com:AY2324S2-CS2103T-W10-2/tp:\n Update DeveloperGuide.md\n Update DeveloperGuide.md\n Update use case for DG\n","fileTypesAndContributionMap":{}},{"hash":"95ec3108e014e7f85c3c88f777c12a9711667336","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of github.com:AY2324S2-CS2103T-W10-2/tp","messageBody":"* \u0027master\u0027 of github.com:AY2324S2-CS2103T-W10-2/tp:\n Update Developer Guide and fix minor mistakes\n Update non functional requirements in developer guide\n Update use cases in developer guide\n Update developer guide on non functional requirements\n Add User Guide for feature add\n Update AboutUs.md and chiageng.md\n","fileTypesAndContributionMap":{}}]},{"date":"2024-03-12","commitResults":[{"hash":"d4ca6601b7cf1cafddaaff2f4b8ca5816fc6040b","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of github.com:AY2324S2-CS2103T-W10-2/tp","messageBody":"* \u0027master\u0027 of github.com:AY2324S2-CS2103T-W10-2/tp: (46 commits)\n Update AddressBookParser testing\n Create Unit Testing for Maintainer, Staff and Supplier\n Create Unit Testing for Commission, Employment, Salary, Price, Skill, Product\n Create AddSupplierCommandParser and AddMaintainerCommandParser testing\n Create AddStaffCommandParser.java testing\n Create AddMaintainerCommand Testing\n Update JsonAdapterPersonTest.java\n Update ParserUtilTest.java\n Create Testing for AddSupplierCommand\n Create Testing for AddStaffCommand\n Update chiageng.md\n Fix checkstyles\n Update JSON serialization for staff, supplier and maintainer, then update UI display for staff, supplier and maintainer\n Add addmaintainer command\n Add addsupplier command\n Assign tag to Person and Staff\n Use /pooch-staff to add staff\n Insert staff instead of person in add command\n Update format of add command\n Update checking name to be case-insensitive\n ...\n","fileTypesAndContributionMap":{}}]},{"date":"2024-03-14","commitResults":[{"hash":"54584db33df83209b89cdc52449a989bad29ef9f","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of github.com:AY2324S2-CS2103T-W10-2/tp","messageBody":"* \u0027master\u0027 of github.com:AY2324S2-CS2103T-W10-2/tp:\n Address peer review\n Fix checkstyle issues in addressbooktest\n Add more test case for address book\n Add specific help command\n Update UserGuide.md\n","fileTypesAndContributionMap":{}}]},{"date":"2024-03-17","commitResults":[{"hash":"3a9079d28d2744d3ecec8a47af4904473cce1146","isMergeCommit":false,"messageTitle":"Update edit functions","messageBody":"The original edit function from AB3 searches by index, which is\nnot intuitive. Additionally, it only accounts for one type of person\nwith limited attributes.\n\nWe expanded to different categories of person, specific for our niche\ntarget group, dog cafe owners.\n\nI implemented a search by name function into edit and also expanded the\nedit function to allow edit of the different categories of people, namely\nsupplier, staff, maintainer, while keeping the original functionality intact.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":1442,"deletions":53},"docs":{"insertions":1,"deletions":1},"test-code":{"insertions":648,"deletions":193}}},{"hash":"78f9374037d9008575cf8b6e407d7c8d2acd0b95","isMergeCommit":false,"messageTitle":"Fix tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":6}}},{"hash":"4640408a1888bdd1d78ae62cf656e99439889c18","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into Update-Edit-Command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f29ad121daa8009e76522cc85136b224c0b7fe0e","isMergeCommit":false,"messageTitle":"Fix checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1},"test-code":{"insertions":0,"deletions":4}}},{"hash":"1bb2deae13dcadcdf20d1bcc57f919b57dab3186","isMergeCommit":false,"messageTitle":"Add command parser test","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":4},"test-code":{"insertions":521,"deletions":3}}},{"hash":"fb451a11473cfd99f1eaaae264e4ce3c21f43bf2","isMergeCommit":false,"messageTitle":"Fix minor checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"65c40b83445c6949bf7ae10b0dc523c2b4f243fe","isMergeCommit":false,"messageTitle":"Add more parser tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":13},"test-code":{"insertions":186,"deletions":0}}},{"hash":"b09d579923c503ed64d0ce41007d4f9a607df049","isMergeCommit":false,"messageTitle":"Fix tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":180}}},{"hash":"af8916ec4b7203304524776ab44957aa5ddde278","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":4}}},{"hash":"abdfe993f07e77f04e83cc80521310cbe3996c1f","isMergeCommit":false,"messageTitle":"Add descriptor builder test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":238,"deletions":0}}},{"hash":"9428cacf6c1b08c2ec0f6ba58c7095689d563b86","isMergeCommit":false,"messageTitle":"Add basic command tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":162,"deletions":0}}},{"hash":"06452468c46f4c9f7fbf61f4039d036256a5b080","isMergeCommit":false,"messageTitle":"Fix checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":18,"deletions":7}}}]},{"date":"2024-03-18","commitResults":[{"hash":"fa6532fd6cd88c07365f489b5554a4fef0a88149","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of github.com:AY2324S2-CS2103T-W10-2/tp","messageBody":"* \u0027master\u0027 of github.com:AY2324S2-CS2103T-W10-2/tp:\n Fix checkstyle issues\n Add basic command tests\n Add descriptor builder test\n Fix checkstyle\n Fix tests\n Add more parser tests\n Fix minor checkstyle\n Add command parser test\n Fix checkstyle issues\n Fix tests\n Update edit functions\n Improve delete command test coverage\n Fix delete command build bug\n Implement delete command.\n","fileTypesAndContributionMap":{}},{"hash":"cf00b1efe30134c8cec9193c5a90402a12e7df97","isMergeCommit":false,"messageTitle":"Fix invalid message format","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":21,"deletions":12}}},{"hash":"87c33e2beffce09fa38890b004ff9fee6cce021f","isMergeCommit":false,"messageTitle":"Standardise maintainer","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"e44bdfef17554dc24f7ff451127e1e33d73eaf77","isMergeCommit":false,"messageTitle":"Fix edit commands error bug","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":116,"deletions":28},"test-code":{"insertions":30,"deletions":13}}},{"hash":"4b7d89de4bf6432b360b02f3ae19f7b2c1f6001e","isMergeCommit":false,"messageTitle":"Update user guide and portfolio","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":21,"deletions":7}}},{"hash":"e5c626d13f38b6678c5e251440aac7dcc1355550","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of github.com:AY2324S2-CS2103T-W10-2/tp","messageBody":"* \u0027master\u0027 of github.com:AY2324S2-CS2103T-W10-2/tp:\n Fixes all checkstyle issues\n Add SearchCommandTest testcases\n Add KeywordPredicateTest testcases\n Make help command consistent\n Update help section in UG\n Add SearchCommandParserTest tests\n Add parseCommand_search testing\n Refactor code in KeywordPredicate\n Add search feature\n Add Search Name functionality\n","fileTypesAndContributionMap":{}},{"hash":"60d9ad8242bf547128ac5d3a5493c0630ec873be","isMergeCommit":false,"messageTitle":"Update UI Uml","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}},{"hash":"e4135a2e2abe7efd03e1f46aefbbf38488c8cedb","isMergeCommit":false,"messageTitle":"Fix typo in user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-19","commitResults":[{"hash":"01cddbc8641b6137158bf3e98aa86c5d668e913b","isMergeCommit":false,"messageTitle":"Update help window naming convention","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}},{"hash":"1dfac5a815f676595aea08a57b925ba9895b92d3","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of github.com:AY2324S2-CS2103T-W10-2/tp","messageBody":"* \u0027master\u0027 of github.com:AY2324S2-CS2103T-W10-2/tp:\n Update team contribution\n Update UML diagram\n Fix deleteFormat testcase\n Update help window naming convention\n Update model UML\n Update UML and sequence diagrams\n Change name of commands\n Fix typo in user guide\n Update UI Uml\n Update user guide and portfolio\n Fix edit commands error bug\n Add deleteFormat test case\n Standardise maintainer\n Fix invalid message format\n Fix delete command bugs\n Update UserGuide.md for add\n Update command name to /pooch-maintainer\n Add test cases for JSON\n Update naming convention in class\n Update success messages for add command\n","fileTypesAndContributionMap":{}},{"hash":"8aaebb879da4f70c49df7ae3c3360d0c38a04332","isMergeCommit":false,"messageTitle":"Improve edit command code quality","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":148,"deletions":95}}}]},{"date":"2024-03-24","commitResults":[{"hash":"7b1fe72c6b81d9347ed58ecd2dc0db8f79eeb899","isMergeCommit":true,"messageTitle":"Merge pull request #115 from jannaleong/EditHelpCommand","messageBody":"Edit help command structure","fileTypesAndContributionMap":{}},{"hash":"cc2595ffde96a4d781fb67aeb2f6128fb8b65df1","isMergeCommit":true,"messageTitle":"Merge pull request #119 from jannaleong/FixNotePersonClassBug","messageBody":"Fix note person class bug","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Joshy837":{"docs":96,"functional-code":303,"test-code":444},"chiageng":{"docs":139,"functional-code":1403,"test-code":2812},"jamessinmaojun":{"docs":49,"functional-code":356,"test-code":447,"other":1},"jannaleong":{"docs":83,"functional-code":971,"test-code":337},"yleeyilin":{"docs":212,"functional-code":1482,"test-code":1552}},"authorContributionVariance":{"Joshy837":19337.723,"chiageng":449736.2,"jamessinmaojun":22522.256,"jannaleong":65081.176,"yleeyilin":427411.75},"authorDisplayNameMap":{"Joshy837":"CS2103T-W10-2 JOSH..UJUN","chiageng":"CS2103T-W10-2 CHNG..GENG","jamessinmaojun":"CS2103T-W10-2 JAME.. JUN","jannaleong":"CS2103T-W10-2 LEON..ANNA","yleeyilin":"CS2103T-W10-2 LEE .. LIN"}} diff --git a/AY2324S2-CS2103T-W10-3_tp_master/authorship.json b/AY2324S2-CS2103T-W10-3_tp_master/authorship.json index ada9fa78..78bd37e5 100644 --- a/AY2324S2-CS2103T-W10-3_tp_master/authorship.json +++ b/AY2324S2-CS2103T-W10-3_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"[![CI Status](https://github.com/AY2324S2-CS2103T-W10-3/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S2-CS2103T-W10-3/tp/actions)","lastModifiedDate":"2024-02-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"[![codecov](https://codecov.io/gh/AY2324S2-CS2103T-W10-3/tp/graph/badge.svg?token\u003dPXSE5NPSA4)](https://codecov.io/gh/AY2324S2-CS2103T-W10-3/tp)","lastModifiedDate":"2024-02-17"},{"lineNumber":3,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"ongzhili"},"content":"![Ui.png](docs%2Fimages%2FUi.png)","lastModifiedDate":"2024-03-04"},{"lineNumber":5,"author":{"gitId":"ongzhili"},"content":"# PedagoguePages","lastModifiedDate":"2024-03-04"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"ongzhili"},"content":"\u003e \"Building Bridges, Bridging Gaps: PedagoguePages, Your Contact Map\"","lastModifiedDate":"2024-03-04"},{"lineNumber":8,"author":{"gitId":"ongzhili"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":9,"author":{"gitId":"ongzhili"},"content":"## What is PedagoguePages?","lastModifiedDate":"2024-03-04"},{"lineNumber":10,"author":{"gitId":"ongzhili"},"content":"* `PedagoguePages` (`PePes` for short) is a **contact management application**.","lastModifiedDate":"2024-03-04"},{"lineNumber":11,"author":{"gitId":"ongzhili"},"content":"* Naming:","lastModifiedDate":"2024-03-04"},{"lineNumber":12,"author":{"gitId":"ongzhili"},"content":" * Product Name:","lastModifiedDate":"2024-03-04"},{"lineNumber":13,"author":{"gitId":"ongzhili"},"content":" * `Pedagogue` - Pedagogy, education.","lastModifiedDate":"2024-03-04"},{"lineNumber":14,"author":{"gitId":"ongzhili"},"content":" * `Pages` - Lists of contacts","lastModifiedDate":"2024-03-04"},{"lineNumber":15,"author":{"gitId":"ongzhili"},"content":" * Together, forming a contact list for educators!","lastModifiedDate":"2024-03-04"},{"lineNumber":16,"author":{"gitId":"ongzhili"},"content":" * Catchy abbreviation:","lastModifiedDate":"2024-03-04"},{"lineNumber":17,"author":{"gitId":"ongzhili"},"content":" * `Pe` from Pedagogue, and `Pes` from pages (`PAY-ge-S`)","lastModifiedDate":"2024-03-04"},{"lineNumber":18,"author":{"gitId":"ongzhili"},"content":" ","lastModifiedDate":"2024-03-04"},{"lineNumber":19,"author":{"gitId":"ongzhili"},"content":"* PedagogyPages is a **Command Line Interface** (CLI) based system.","lastModifiedDate":"2024-03-04"},{"lineNumber":20,"author":{"gitId":"ongzhili"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":21,"author":{"gitId":"ongzhili"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":22,"author":{"gitId":"ongzhili"},"content":"## What is PedagogyPages for?","lastModifiedDate":"2024-03-04"},{"lineNumber":23,"author":{"gitId":"ongzhili"},"content":"* PedagogyPages is optimized for **Educators**, specifically in the primary / secondary school area, where class sizes are large.\u003cbr\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":24,"author":{"gitId":"ongzhili"},"content":"* PedagogyPages is more optimized for users who are:","lastModifiedDate":"2024-03-04"},{"lineNumber":25,"author":{"gitId":"ongzhili"},"content":" * Generally faster typists","lastModifiedDate":"2024-03-04"},{"lineNumber":26,"author":{"gitId":"ongzhili"},"content":" * Users that prefer command line interfaces","lastModifiedDate":"2024-03-04"},{"lineNumber":27,"author":{"gitId":"ongzhili"},"content":"* PedagogyPages boasts features such as:","lastModifiedDate":"2024-03-04"},{"lineNumber":28,"author":{"gitId":"ongzhili"},"content":" * Basic **Create, Read, Update, Delete (CRUD)** operations on student contact information.","lastModifiedDate":"2024-03-04"},{"lineNumber":29,"author":{"gitId":"ongzhili"},"content":" * Search functionality based on different modes (e.g classes, student ID, etc)","lastModifiedDate":"2024-03-04"},{"lineNumber":30,"author":{"gitId":"ongzhili"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":31,"author":{"gitId":"ongzhili"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":32,"author":{"gitId":"ongzhili"},"content":"## What is PedagogyPages based on?","lastModifiedDate":"2024-03-04"},{"lineNumber":33,"author":{"gitId":"ongzhili"},"content":"* PedagogyPages is also our (CS2103-W10-3\u0027s) brownfield development project, based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-03-04"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * The project simulates an ongoing software project for a desktop application (called _AddressBook_) used for managing contact details.","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"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":36,"author":{"gitId":"-"},"content":" * It comes with a **reasonable level of user and developer documentation**.","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"* For the detailed documentation of this project, see the **[Address Book Product Website](https://se-education.org/addressbook-level3)**.","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"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":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-24"}],"authorContributionMap":{"ongzhili":29,"wallacexuhanxiao":1,"-":9}},{"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":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"J-wang-CSMA"},"content":"### Jeremy Wang","lastModifiedDate":"2024-02-28"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"J-wang-CSMA"},"content":"\u003cimg src\u003d\"images/j-wang-csma.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"J-wang-CSMA"},"content":"[[github](http://github.com/J-wang-CSMA)]","lastModifiedDate":"2024-02-28"},{"lineNumber":16,"author":{"gitId":"J-wang-CSMA"},"content":"[[portfolio](team/j-wang-csma.md)]","lastModifiedDate":"2024-02-28"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"J-wang-CSMA"},"content":"* Role: Developer, Deliverables and deadlines","lastModifiedDate":"2024-02-28"},{"lineNumber":19,"author":{"gitId":"J-wang-CSMA"},"content":"* Responsibilities: Data + UI","lastModifiedDate":"2024-02-28"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"wallacexuhanxiao"},"content":"### XU HANXIAO","lastModifiedDate":"2024-02-28"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"wallacexuhanxiao"},"content":"\u003cimg src\u003d\"images/wallacexuhanxiao.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"wallacexuhanxiao"},"content":"[[github](http://github.com/wallacexuhanxiao)]","lastModifiedDate":"2024-03-08"},{"lineNumber":26,"author":{"gitId":"wallacexuhanxiao"},"content":"[[portfolio](team/wallacexuhanxiao.md)]","lastModifiedDate":"2024-03-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"wallacexuhanxiao"},"content":"* Responsibilities: Develop","lastModifiedDate":"2024-02-28"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"ongzhili"},"content":"### Ong Zhi Li","lastModifiedDate":"2024-02-28"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"ongzhili"},"content":"\u003cimg src\u003d\"images/ongzhili.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"ongzhili"},"content":"[[github](http://github.com/ongzhili)]","lastModifiedDate":"2024-02-28"},{"lineNumber":36,"author":{"gitId":"ongzhili"},"content":"[[portfolio](team/ongzhili.md)]","lastModifiedDate":"2024-02-28"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"ongzhili"},"content":"* Responsibilities: UI + Logic handling","lastModifiedDate":"2024-02-28"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"IamZhenHong"},"content":"### Seng Zhen Hong","lastModifiedDate":"2024-03-07"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":43,"author":{"gitId":"IamZhenHong"},"content":"\u003cimg src\u003d\"images/iamzhenhong.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-07"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":45,"author":{"gitId":"IamZhenHong"},"content":"[[github](http://github.com/IamZhenHong)]","lastModifiedDate":"2024-03-07"},{"lineNumber":46,"author":{"gitId":"IamZhenHong"},"content":"[[portfolio](team/iamzhenhong.md)]","lastModifiedDate":"2024-03-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":48,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2024-03-08"},{"lineNumber":49,"author":{"gitId":"wallacexuhanxiao"},"content":"* Responsibilities: Develop","lastModifiedDate":"2024-03-08"},{"lineNumber":50,"author":{"gitId":"wallacexuhanxiao"},"content":"* ","lastModifiedDate":"2024-03-08"}],"authorContributionMap":{"IamZhenHong":4,"wallacexuhanxiao":7,"ongzhili":5,"-":28,"J-wang-CSMA":6}},{"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":"wallacexuhanxiao"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-02-28"},{"lineNumber":13,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","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":"## **Design**","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"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":26,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-07-31"},{"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":"\u003cimg src\u003d\"images/ArchitectureDiagram.png\" width\u003d\"280\" /\u003e","lastModifiedDate":"2021-07-31"},{"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":"-"},"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":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":"\u003cimg src\u003d\"images/ArchitectureSequenceDiagram.png\" width\u003d\"574\" /\u003e","lastModifiedDate":"2020-06-07"},{"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":"\u003cimg src\u003d\"images/ComponentManagers.png\" width\u003d\"300\" /\u003e","lastModifiedDate":"2021-07-31"},{"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":"-"},"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":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"![Structure of the UI Component](images/UiClassDiagram.png)","lastModifiedDate":"2021-07-31"},{"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":"-"},"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":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":"-"},"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":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":"\u003cimg src\u003d\"images/LogicClassDiagram.png\" width\u003d\"550\"/\u003e","lastModifiedDate":"2021-07-31"},{"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":"![Interactions Inside the Logic Component for the `delete 1` Command](images/DeleteSequenceDiagram.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"wallacexuhanxiao"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"find 1 Bob\")` API call as an example.","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"wallacexuhanxiao"},"content":"![Interactions Inside the Logic Component for the `find 1 Bob` Command](images/SearchSequenceDiagram.png)","lastModifiedDate":"2024-03-20"},{"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 continues till the end of diagram.","lastModifiedDate":"2024-02-09"},{"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).\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-02-09"},{"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":"2020-05-23"},{"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":"2021-07-31"},{"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":"2020-05-23"},{"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-09-03"},{"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":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23"},{"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":"2020-05-23"},{"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":"2020-05-23"},{"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":"-"},"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":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"![UndoRedoState2](images/UndoRedoState2.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"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":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"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":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":"![UndoRedoState3](images/UndoRedoState3.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"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":194,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Logic.png)","lastModifiedDate":"2024-02-09"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"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":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":208,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Model.png)","lastModifiedDate":"2024-02-09"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":210,"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":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"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":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"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":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":"![UndoRedoState4](images/UndoRedoState4.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"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":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":"![UndoRedoState5](images/UndoRedoState5.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":226,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/CommitActivityDiagram.png\" width\u003d\"250\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","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":"","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":253,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":254,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":255,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":256,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"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":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":262,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":264,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"wallacexuhanxiao"},"content":"* is an educator working with the education of primary / secondary students ","lastModifiedDate":"2024-02-28"},{"lineNumber":267,"author":{"gitId":"wallacexuhanxiao"},"content":"* require fast and organized access to students\u0027 and parents\u0027 contact detail ","lastModifiedDate":"2024-02-28"},{"lineNumber":268,"author":{"gitId":"wallacexuhanxiao"},"content":"* have many students\u0027 information to manage ","lastModifiedDate":"2024-02-28"},{"lineNumber":269,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23"},{"lineNumber":270,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26"},{"lineNumber":272,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":274,"author":{"gitId":"wallacexuhanxiao"},"content":"**Value proposition**: Provide fast and organized access to students’ and parents’ contact details for the educator across multiple classes with large class sizes.","lastModifiedDate":"2024-02-28"},{"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":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":282,"author":{"gitId":"-"},"content":"| -------- | ------------------------------------------ | ------------------------------ | ---------------------------------------------------------------------- |","lastModifiedDate":"2020-05-23"},{"lineNumber":283,"author":{"gitId":"-"},"content":"| `* * *` | new user | see usage instructions | refer to instructions when I forget how to use the App |","lastModifiedDate":"2020-05-23"},{"lineNumber":284,"author":{"gitId":"wallacexuhanxiao"},"content":"| `* * *` | teacher | view student and his/her parents’ contact records fully | contact them when needed. |","lastModifiedDate":"2024-02-28"},{"lineNumber":285,"author":{"gitId":"wallacexuhanxiao"},"content":"|`* * *` | teacher | easily update students’ contact records via their ID |track students’ latest contact information|","lastModifiedDate":"2024-02-28"},{"lineNumber":286,"author":{"gitId":"wallacexuhanxiao"},"content":"| `* * *` | teacher | delete student contact records | remove unnecessary data when a student graduates / drops out |","lastModifiedDate":"2024-02-28"},{"lineNumber":287,"author":{"gitId":"wallacexuhanxiao"},"content":"| `* * *` | teacher | easily identify duplicate entries | make sure there is no repetition of student records|","lastModifiedDate":"2024-02-28"},{"lineNumber":288,"author":{"gitId":"wallacexuhanxiao"},"content":"| `* *` | teacher | tag my students | find them easily|","lastModifiedDate":"2024-02-28"},{"lineNumber":289,"author":{"gitId":"wallacexuhanxiao"},"content":"| `* *` | administrator | delete all student info in one go| delete the whole class in one command after each semester|","lastModifiedDate":"2024-02-28"},{"lineNumber":290,"author":{"gitId":"wallacexuhanxiao"},"content":"| `* *` | expert teacher user | search for students by tags | view each class/CCA/tutoring group I am in charge of at a glance |","lastModifiedDate":"2024-02-28"},{"lineNumber":291,"author":{"gitId":"wallacexuhanxiao"},"content":"| `* *` | teacher | search for students by name | find specific student\u0027s information by their name |","lastModifiedDate":"2024-02-28"},{"lineNumber":292,"author":{"gitId":"wallacexuhanxiao"},"content":"| `* *` | teacher | search for students by id | find specific students by their unique student id |","lastModifiedDate":"2024-02-28"},{"lineNumber":293,"author":{"gitId":"wallacexuhanxiao"},"content":"| `* *` | busy teacher (teaching multiple subjects at once) | obtain class lists per class easily||","lastModifiedDate":"2024-02-28"},{"lineNumber":294,"author":{"gitId":"wallacexuhanxiao"},"content":"| `* *` | teacher | view my class roster at a glance| |","lastModifiedDate":"2024-02-28"},{"lineNumber":295,"author":{"gitId":"wallacexuhanxiao"},"content":"| `* *` | careful teacher | back up my students’ information| avoid losing any student\u0027s information|","lastModifiedDate":"2024-02-28"},{"lineNumber":296,"author":{"gitId":"wallacexuhanxiao"},"content":"| `* *` | school staff member |export contact lists for emergency purposes| ensure student safety in case of emergencies |","lastModifiedDate":"2024-02-28"},{"lineNumber":297,"author":{"gitId":"wallacexuhanxiao"},"content":"| `* *` | careless (but fast typing) teacher | run the command with some minor typo | use the application with greater ease|","lastModifiedDate":"2024-02-28"},{"lineNumber":298,"author":{"gitId":"wallacexuhanxiao"},"content":"| `* *`| forgetful teacher | add notes or additional information to each student | remember important details about them |","lastModifiedDate":"2024-02-28"},{"lineNumber":299,"author":{"gitId":"wallacexuhanxiao"},"content":"| `*` | careless teacher | undo my previous command | avoid making mistake like delete the wrong student | ","lastModifiedDate":"2024-02-28"},{"lineNumber":300,"author":{"gitId":"wallacexuhanxiao"},"content":"| `* ` | teacher | mark students’ attendance for each class session| |","lastModifiedDate":"2024-02-28"},{"lineNumber":301,"author":{"gitId":"wallacexuhanxiao"},"content":"| `* ` | teacher | set reminders for events such as parent-teacher/student-teacher meetings| I don\u0027t miss any important appointments|","lastModifiedDate":"2024-02-28"},{"lineNumber":302,"author":{"gitId":"wallacexuhanxiao"},"content":"| `*` | teacher | utilize the application to understand the geographic distribution of my students | planning school trips or outreach programs |","lastModifiedDate":"2024-02-28"},{"lineNumber":303,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":304,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":306,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":307,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":308,"author":{"gitId":"wallacexuhanxiao"},"content":"(For all use cases below, the **System** is the `PedagoguePages` and the **Actor** is the `teacher`, unless specified otherwise)","lastModifiedDate":"2024-02-28"},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":310,"author":{"gitId":"wallacexuhanxiao"},"content":"**Use case: View the usage help list**","lastModifiedDate":"2024-02-28"},{"lineNumber":311,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":312,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":313,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":314,"author":{"gitId":"wallacexuhanxiao"},"content":"1. Teacher requests to view the user guide of PedagoguePages","lastModifiedDate":"2024-02-28"},{"lineNumber":315,"author":{"gitId":"wallacexuhanxiao"},"content":"2. PedagoguePages shows the user guide to teacher","lastModifiedDate":"2024-02-28"},{"lineNumber":316,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":317,"author":{"gitId":"wallacexuhanxiao"},"content":" Use case ends.","lastModifiedDate":"2024-02-28"},{"lineNumber":318,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":319,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":320,"author":{"gitId":"wallacexuhanxiao"},"content":"**Use case: View the student list**","lastModifiedDate":"2024-02-28"},{"lineNumber":321,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":322,"author":{"gitId":"wallacexuhanxiao"},"content":"**MSS**","lastModifiedDate":"2024-02-28"},{"lineNumber":323,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":324,"author":{"gitId":"wallacexuhanxiao"},"content":"1. Teacher requests to view all the info in PedagoguePages","lastModifiedDate":"2024-02-28"},{"lineNumber":325,"author":{"gitId":"wallacexuhanxiao"},"content":"2. PedagoguePages shows a list of students\u0027 info","lastModifiedDate":"2024-02-28"},{"lineNumber":326,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":327,"author":{"gitId":"wallacexuhanxiao"},"content":" Use case ends.","lastModifiedDate":"2024-02-28"},{"lineNumber":328,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":329,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":330,"author":{"gitId":"wallacexuhanxiao"},"content":"**Use case: Delete a student**","lastModifiedDate":"2024-02-28"},{"lineNumber":331,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":332,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2024-02-28"},{"lineNumber":333,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":334,"author":{"gitId":"wallacexuhanxiao"},"content":"1. Teacher requests to find a student by his name","lastModifiedDate":"2024-02-28"},{"lineNumber":335,"author":{"gitId":"wallacexuhanxiao"},"content":"2. PedagoguePages shows a list of matched students","lastModifiedDate":"2024-02-28"},{"lineNumber":336,"author":{"gitId":"wallacexuhanxiao"},"content":"3. Teacher requests to delete a specific person in the list","lastModifiedDate":"2024-02-28"},{"lineNumber":337,"author":{"gitId":"wallacexuhanxiao"},"content":"4. PedagoguePages deletes the person","lastModifiedDate":"2024-02-28"},{"lineNumber":338,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":339,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2024-02-28"},{"lineNumber":340,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":341,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2024-02-28"},{"lineNumber":342,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":343,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-02-28"},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":345,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2024-02-28"},{"lineNumber":346,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":347,"author":{"gitId":"wallacexuhanxiao"},"content":"* 3a. The given student_id is invalid.","lastModifiedDate":"2024-02-28"},{"lineNumber":348,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":349,"author":{"gitId":"wallacexuhanxiao"},"content":" * 3a1. PedagoguePages shows an error message.","lastModifiedDate":"2024-02-28"},{"lineNumber":350,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":351,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-02-28"},{"lineNumber":352,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":353,"author":{"gitId":"wallacexuhanxiao"},"content":"**Use case: Add a student**","lastModifiedDate":"2024-02-28"},{"lineNumber":354,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":355,"author":{"gitId":"wallacexuhanxiao"},"content":"**MSS**","lastModifiedDate":"2024-02-28"},{"lineNumber":356,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":357,"author":{"gitId":"wallacexuhanxiao"},"content":"1. Teacher enter the student info","lastModifiedDate":"2024-02-28"},{"lineNumber":358,"author":{"gitId":"wallacexuhanxiao"},"content":"2. PedagoguePages shows a success message and add the student\u0027s info","lastModifiedDate":"2024-02-28"},{"lineNumber":359,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":360,"author":{"gitId":"wallacexuhanxiao"},"content":" Use case ends.","lastModifiedDate":"2024-02-28"},{"lineNumber":361,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":362,"author":{"gitId":"wallacexuhanxiao"},"content":"**Extensions**","lastModifiedDate":"2024-02-28"},{"lineNumber":363,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":364,"author":{"gitId":"wallacexuhanxiao"},"content":"* 2a. Teacher enter a invalid command.","lastModifiedDate":"2024-02-28"},{"lineNumber":365,"author":{"gitId":"wallacexuhanxiao"},"content":" * 2a1. PedagoguePages shows an error message and give a hint.","lastModifiedDate":"2024-02-28"},{"lineNumber":366,"author":{"gitId":"wallacexuhanxiao"},"content":" ","lastModifiedDate":"2024-02-28"},{"lineNumber":367,"author":{"gitId":"wallacexuhanxiao"},"content":" Use case ends.","lastModifiedDate":"2024-02-28"},{"lineNumber":368,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":369,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":370,"author":{"gitId":"wallacexuhanxiao"},"content":"**Use case: Update the info of a student**","lastModifiedDate":"2024-02-28"},{"lineNumber":371,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":372,"author":{"gitId":"wallacexuhanxiao"},"content":"**MSS**","lastModifiedDate":"2024-02-28"},{"lineNumber":373,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":374,"author":{"gitId":"wallacexuhanxiao"},"content":"1. Teacher requests to find a student by his name","lastModifiedDate":"2024-02-28"},{"lineNumber":375,"author":{"gitId":"wallacexuhanxiao"},"content":"2. PedagoguePages shows a list of matched students","lastModifiedDate":"2024-02-28"},{"lineNumber":376,"author":{"gitId":"wallacexuhanxiao"},"content":"3. Teacher requests to update the info of a specific person in the list","lastModifiedDate":"2024-02-28"},{"lineNumber":377,"author":{"gitId":"wallacexuhanxiao"},"content":"4. PedagoguePages update the info for the student","lastModifiedDate":"2024-02-28"},{"lineNumber":378,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23"},{"lineNumber":379,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":380,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":381,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":382,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":383,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2020-05-23"},{"lineNumber":384,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":385,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":386,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":387,"author":{"gitId":"wallacexuhanxiao"},"content":"* 3a. The given student_id is invalid.","lastModifiedDate":"2024-02-28"},{"lineNumber":388,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":389,"author":{"gitId":"wallacexuhanxiao"},"content":" * 3a1. PedagoguePages shows an error message.","lastModifiedDate":"2024-02-28"},{"lineNumber":390,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":391,"author":{"gitId":"wallacexuhanxiao"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-02-28"},{"lineNumber":392,"author":{"gitId":"wallacexuhanxiao"},"content":" ","lastModifiedDate":"2024-02-28"},{"lineNumber":393,"author":{"gitId":"wallacexuhanxiao"},"content":"* 3b. The updated field is in a wrong format","lastModifiedDate":"2024-02-28"},{"lineNumber":394,"author":{"gitId":"wallacexuhanxiao"},"content":" * 3b1. PedagoguePages shows an error message.","lastModifiedDate":"2024-03-04"},{"lineNumber":395,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":396,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23"},{"lineNumber":397,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":398,"author":{"gitId":"wallacexuhanxiao"},"content":"**Use case: find a group of a students by tag**","lastModifiedDate":"2024-02-28"},{"lineNumber":399,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":400,"author":{"gitId":"wallacexuhanxiao"},"content":"**MSS**","lastModifiedDate":"2024-02-28"},{"lineNumber":401,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":402,"author":{"gitId":"wallacexuhanxiao"},"content":"1. Teacher requests to find a group of students by specific tag","lastModifiedDate":"2024-02-28"},{"lineNumber":403,"author":{"gitId":"wallacexuhanxiao"},"content":"2. PedagoguePages shows a list of matched students","lastModifiedDate":"2024-02-28"},{"lineNumber":404,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":405,"author":{"gitId":"wallacexuhanxiao"},"content":" Use case ends.","lastModifiedDate":"2024-02-28"},{"lineNumber":406,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":407,"author":{"gitId":"wallacexuhanxiao"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":408,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":409,"author":{"gitId":"wallacexuhanxiao"},"content":"* 2a. The tag is invalid","lastModifiedDate":"2024-03-04"},{"lineNumber":410,"author":{"gitId":"wallacexuhanxiao"},"content":" * 2a1. PedagoguePages shows an error message.","lastModifiedDate":"2024-03-04"},{"lineNumber":411,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":412,"author":{"gitId":"wallacexuhanxiao"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":413,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":414,"author":{"gitId":"wallacexuhanxiao"},"content":"**Use case: find a specific student by name**","lastModifiedDate":"2024-02-28"},{"lineNumber":415,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":416,"author":{"gitId":"wallacexuhanxiao"},"content":"**MSS**","lastModifiedDate":"2024-02-28"},{"lineNumber":417,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":418,"author":{"gitId":"wallacexuhanxiao"},"content":"1. Teacher requests to find a student by student\u0027s name","lastModifiedDate":"2024-02-28"},{"lineNumber":419,"author":{"gitId":"wallacexuhanxiao"},"content":"2. PedagoguePages shows a list of matched students","lastModifiedDate":"2024-02-28"},{"lineNumber":420,"author":{"gitId":"wallacexuhanxiao"},"content":"3. Teacher select the student from the list","lastModifiedDate":"2024-02-28"},{"lineNumber":421,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":422,"author":{"gitId":"wallacexuhanxiao"},"content":" Use case ends.","lastModifiedDate":"2024-02-28"},{"lineNumber":423,"author":{"gitId":"wallacexuhanxiao"},"content":" ","lastModifiedDate":"2024-02-28"},{"lineNumber":424,"author":{"gitId":"wallacexuhanxiao"},"content":"**Extensions**","lastModifiedDate":"2024-02-28"},{"lineNumber":425,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":426,"author":{"gitId":"wallacexuhanxiao"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-02-28"},{"lineNumber":427,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":428,"author":{"gitId":"wallacexuhanxiao"},"content":" Use case ends.","lastModifiedDate":"2024-02-28"},{"lineNumber":429,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":430,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":431,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":432,"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":433,"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":434,"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":435,"author":{"gitId":"wallacexuhanxiao"},"content":"4. The system should respond all request within 1 minute.","lastModifiedDate":"2024-03-10"},{"lineNumber":436,"author":{"gitId":"wallacexuhanxiao"},"content":"5. Should not take more than 500 MB memory while running.","lastModifiedDate":"2024-03-10"},{"lineNumber":437,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":438,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":439,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":440,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":441,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09"},{"lineNumber":442,"author":{"gitId":"IamZhenHong"},"content":"* **PedadoguePages**: The name of the application","lastModifiedDate":"2024-03-07"},{"lineNumber":443,"author":{"gitId":"IamZhenHong"},"content":"* **Student_id**: Each students\u0027 unique identifier","lastModifiedDate":"2024-03-07"},{"lineNumber":444,"author":{"gitId":"wallacexuhanxiao"},"content":"* **MB**: Mega Bytes","lastModifiedDate":"2024-03-10"},{"lineNumber":445,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":446,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":447,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":448,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":449,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":450,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":451,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":452,"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":453,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":454,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":455,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":456,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":457,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":458,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":459,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":460,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":461,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":462,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":463,"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":464,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":465,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":466,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":467,"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":468,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":469,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":470,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":471,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":472,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":473,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":474,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":475,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":476,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":477,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":478,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":479,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":480,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":481,"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":482,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":483,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":484,"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":485,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":486,"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":487,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":488,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":489,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":490,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":491,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":492,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":493,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":494,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":495,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":496,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":497,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"IamZhenHong":2,"wallacexuhanxiao":117,"-":378}},{"path":"docs/diagrams/AddSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"J-wang-CSMA"},"content":"@startuml","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"J-wang-CSMA"},"content":"!include style.puml","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"J-wang-CSMA"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"J-wang-CSMA"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"J-wang-CSMA"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"J-wang-CSMA"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"J-wang-CSMA"},"content":"participant \":AddCommandParser\" as AddCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"J-wang-CSMA"},"content":"participant \"p:Person\" as Person LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"J-wang-CSMA"},"content":"participant \"a:AddCommand\" as AddCommand LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"J-wang-CSMA"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"J-wang-CSMA"},"content":"end box","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"J-wang-CSMA"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"J-wang-CSMA"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"J-wang-CSMA"},"content":"end box","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"J-wang-CSMA"},"content":"[-\u003e LogicManager : execute(\"add ...\")","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"J-wang-CSMA"},"content":"activate LogicManager","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"J-wang-CSMA"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"add ...\")","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"J-wang-CSMA"},"content":"activate AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"J-wang-CSMA"},"content":"create AddCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"J-wang-CSMA"},"content":"AddressBookParser -\u003eAddCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"J-wang-CSMA"},"content":"activate AddCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"J-wang-CSMA"},"content":"AddCommandParser --\u003e AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"J-wang-CSMA"},"content":"deactivate AddCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"J-wang-CSMA"},"content":"AddressBookParser -\u003e AddCommandParser : parse(\" ... \")","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"J-wang-CSMA"},"content":"activate AddCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"J-wang-CSMA"},"content":"create Person","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"J-wang-CSMA"},"content":"AddCommandParser -\u003e Person : Person( ... )","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"J-wang-CSMA"},"content":"activate Person","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"J-wang-CSMA"},"content":"Person --\u003e AddCommandParser : p","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"J-wang-CSMA"},"content":"deactivate Person","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"J-wang-CSMA"},"content":"create AddCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"J-wang-CSMA"},"content":"AddCommandParser -\u003e AddCommand : AddCommand(p)","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"J-wang-CSMA"},"content":"activate AddCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"J-wang-CSMA"},"content":"AddCommand --\u003e AddCommandParser : a","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"J-wang-CSMA"},"content":"deactivate AddCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"J-wang-CSMA"},"content":"AddCommandParser --\u003e AddressBookParser : a","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"J-wang-CSMA"},"content":"deactivate AddCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"J-wang-CSMA"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"J-wang-CSMA"},"content":"AddCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"J-wang-CSMA"},"content":"destroy AddCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"J-wang-CSMA"},"content":"AddressBookParser --\u003e LogicManager : a","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"J-wang-CSMA"},"content":"deactivate AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"J-wang-CSMA"},"content":"LogicManager -\u003e AddCommand : execute(m)","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"J-wang-CSMA"},"content":"activate AddCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"J-wang-CSMA"},"content":"AddCommand -\u003e Model : addPerson(p)","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"J-wang-CSMA"},"content":"activate Model","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"J-wang-CSMA"},"content":"Model --\u003e AddCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"J-wang-CSMA"},"content":"deactivate Model","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"J-wang-CSMA"},"content":"create CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"J-wang-CSMA"},"content":"AddCommand -\u003e CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"J-wang-CSMA"},"content":"activate CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"J-wang-CSMA"},"content":"CommandResult --\u003e AddCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"J-wang-CSMA"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"J-wang-CSMA"},"content":"AddCommand --\u003e LogicManager : r","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"J-wang-CSMA"},"content":"deactivate AddCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"J-wang-CSMA"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"J-wang-CSMA"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"J-wang-CSMA"},"content":"@enduml","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"J-wang-CSMA":80}},{"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 \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-02-09"},{"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 \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-02-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"ongzhili"},"content":"[-\u003e LogicManager : execute(\"delete \u003cid\u003e\")","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":"activate LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"ongzhili"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"delete \u003cid\u003e\")","lastModifiedDate":"2024-03-20"},{"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":"ongzhili"},"content":"AddressBookParser -\u003e DeleteCommandParser : parse(\"\u003cid\u003e\")","lastModifiedDate":"2024-03-20"},{"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 :","lastModifiedDate":"2024-02-09"},{"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(m)","lastModifiedDate":"2024-02-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":"activate DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":52,"author":{"gitId":"ongzhili"},"content":"DeleteCommand -\u003e Model : deletePerson(id)","lastModifiedDate":"2024-03-20"},{"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 : r","lastModifiedDate":"2024-02-09"},{"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":{"ongzhili":4,"-":66}},{"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":"-"},"content":"Class UniquePersonList","lastModifiedDate":"2021-07-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Class Person","lastModifiedDate":"2019-07-03"},{"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":"-"},"content":"Class Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"Class Tag","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":23,"author":{"gitId":"-"},"content":"Class I #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"AddressBook .up.|\u003e ReadOnlyAddressBook","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"ModelManager .up.|\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"Model .right.\u003e ReadOnlyUserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":33,"author":{"gitId":"-"},"content":"Model .left.\u003e ReadOnlyAddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"ModelManager -left-\u003e \"1\" AddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":"ModelManager -right-\u003e \"1\" UserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"UserPrefs .up.|\u003e ReadOnlyUserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"AddressBook *--\u003e \"1\" UniquePersonList","lastModifiedDate":"2019-07-30"},{"lineNumber":39,"author":{"gitId":"-"},"content":"UniquePersonList --\u003e \"~* all\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":40,"author":{"gitId":"J-wang-CSMA"},"content":"Person *--\u003e \"1\" Name","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"J-wang-CSMA"},"content":"Person *--\u003e \"2\" Phone","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"J-wang-CSMA"},"content":"Person *--\u003e \"1\" Email","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"J-wang-CSMA"},"content":"Person *--\u003e \"1\" Address","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":"Person *--\u003e \"*\" Tag","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"Person -[hidden]up--\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":"UniquePersonList -[hidden]right-\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"Name -[hidden]right-\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":50,"author":{"gitId":"-"},"content":"Phone -[hidden]right-\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"Address -[hidden]right-\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":53,"author":{"gitId":"-"},"content":"ModelManager --\u003e \"~* filtered\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":54,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"-":50,"J-wang-CSMA":4}},{"path":"docs/diagrams/SearchSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"wallacexuhanxiao"},"content":"@startuml","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"wallacexuhanxiao"},"content":"!include style.puml","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"wallacexuhanxiao"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"wallacexuhanxiao"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"wallacexuhanxiao"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"wallacexuhanxiao"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"wallacexuhanxiao"},"content":"participant \":FindCommandParser\" as FindCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"wallacexuhanxiao"},"content":"participant \"f:FindCommand\" as FindCommand LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"wallacexuhanxiao"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"wallacexuhanxiao"},"content":"end box","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"wallacexuhanxiao"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"wallacexuhanxiao"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"wallacexuhanxiao"},"content":"end box","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"wallacexuhanxiao"},"content":"[-\u003e LogicManager : execute(\"find 1 Bob\")","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"wallacexuhanxiao"},"content":"activate LogicManager","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"wallacexuhanxiao"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"find 1 Bob\")","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"wallacexuhanxiao"},"content":"activate AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"wallacexuhanxiao"},"content":"create FindCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"wallacexuhanxiao"},"content":"AddressBookParser -\u003e FindCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"wallacexuhanxiao"},"content":"activate FindCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"wallacexuhanxiao"},"content":"FindCommandParser --\u003e AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"wallacexuhanxiao"},"content":"deactivate FindCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"wallacexuhanxiao"},"content":"AddressBookParser -\u003e FindCommandParser : parse(\"1 Bob\")","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"wallacexuhanxiao"},"content":"activate FindCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"wallacexuhanxiao"},"content":"create FindCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"wallacexuhanxiao"},"content":"FindCommandParser -\u003e FindCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"wallacexuhanxiao"},"content":"activate FindCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"wallacexuhanxiao"},"content":"FindCommand --\u003e FindCommandParser :","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"wallacexuhanxiao"},"content":"deactivate FindCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"wallacexuhanxiao"},"content":"FindCommandParser --\u003e AddressBookParser : f","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"wallacexuhanxiao"},"content":"deactivate FindCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"wallacexuhanxiao"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"wallacexuhanxiao"},"content":"FindCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"wallacexuhanxiao"},"content":"destroy FindCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"wallacexuhanxiao"},"content":"AddressBookParser --\u003e LogicManager : f","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"wallacexuhanxiao"},"content":"deactivate AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"wallacexuhanxiao"},"content":"LogicManager -\u003e FindCommand : execute(m)","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"wallacexuhanxiao"},"content":"activate FindCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"wallacexuhanxiao"},"content":"FindCommand -\u003e Model : updateFilteredPersonList(Predicate)","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"wallacexuhanxiao"},"content":"activate Model","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"wallacexuhanxiao"},"content":"Model --\u003e FindCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"wallacexuhanxiao"},"content":"deactivate Model","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"wallacexuhanxiao"},"content":"create CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"wallacexuhanxiao"},"content":"FindCommand -\u003e CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"wallacexuhanxiao"},"content":"activate CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"wallacexuhanxiao"},"content":"CommandResult --\u003e FindCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"wallacexuhanxiao"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"wallacexuhanxiao"},"content":"FindCommand --\u003e LogicManager : r","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"wallacexuhanxiao"},"content":"deactivate FindCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"wallacexuhanxiao"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"wallacexuhanxiao"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"wallacexuhanxiao"},"content":"@enduml","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"wallacexuhanxiao":70}},{"path":"docs/team/iamzhenhong.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"IamZhenHong"},"content":"# zhen hong \u0027s Project Portfolio Page","lastModifiedDate":"2024-03-07"}],"authorContributionMap":{"IamZhenHong":1}},{"path":"docs/team/j-wang-csma.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"J-wang-CSMA"},"content":"---","lastModifiedDate":"2024-02-28"},{"lineNumber":2,"author":{"gitId":"J-wang-CSMA"},"content":"layout: page","lastModifiedDate":"2024-02-28"},{"lineNumber":3,"author":{"gitId":"J-wang-CSMA"},"content":"title: Jeremy Wang\u0027s Project Portfolio Page","lastModifiedDate":"2024-02-28"},{"lineNumber":4,"author":{"gitId":"J-wang-CSMA"},"content":"---","lastModifiedDate":"2024-02-28"},{"lineNumber":5,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":6,"author":{"gitId":"J-wang-CSMA"},"content":"### Project: PedagoguePages","lastModifiedDate":"2024-02-28"},{"lineNumber":7,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":8,"author":{"gitId":"J-wang-CSMA"},"content":"PedagoguePages is a desktop address book application for teachers to manage their students\u0027 contact information.","lastModifiedDate":"2024-02-28"},{"lineNumber":9,"author":{"gitId":"J-wang-CSMA"},"content":"The user interacts with it using a CLI, and it has a GUI created with JavaFX.","lastModifiedDate":"2024-02-28"},{"lineNumber":10,"author":{"gitId":"J-wang-CSMA"},"content":"It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-02-28"},{"lineNumber":11,"author":{"gitId":"J-wang-CSMA"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-02-28"},{"lineNumber":12,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":13,"author":{"gitId":"J-wang-CSMA"},"content":"* **New Features**: ","lastModifiedDate":"2024-02-28"},{"lineNumber":14,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":15,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":16,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":17,"author":{"gitId":"J-wang-CSMA"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-02-28"},{"lineNumber":18,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":19,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":20,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":21,"author":{"gitId":"J-wang-CSMA"},"content":"* **Project management**:","lastModifiedDate":"2024-02-28"},{"lineNumber":22,"author":{"gitId":"J-wang-CSMA"},"content":" * Managed releases: ","lastModifiedDate":"2024-02-28"},{"lineNumber":23,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":24,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":25,"author":{"gitId":"J-wang-CSMA"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-02-28"},{"lineNumber":26,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":27,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":28,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":29,"author":{"gitId":"J-wang-CSMA"},"content":"* **Documentation**:","lastModifiedDate":"2024-02-28"},{"lineNumber":30,"author":{"gitId":"J-wang-CSMA"},"content":" * User Guide:","lastModifiedDate":"2024-02-28"},{"lineNumber":31,"author":{"gitId":"J-wang-CSMA"},"content":" * Developer Guide:","lastModifiedDate":"2024-02-28"},{"lineNumber":32,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":33,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":34,"author":{"gitId":"J-wang-CSMA"},"content":"* **Community**:","lastModifiedDate":"2024-02-28"},{"lineNumber":35,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":36,"author":{"gitId":"J-wang-CSMA"},"content":"* **Tools**:","lastModifiedDate":"2024-02-28"},{"lineNumber":37,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-02-28"}],"authorContributionMap":{"J-wang-CSMA":37}},{"path":"docs/team/ongzhili.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"ongzhili"},"content":"---","lastModifiedDate":"2024-02-28"},{"lineNumber":2,"author":{"gitId":"ongzhili"},"content":"layout: page","lastModifiedDate":"2024-02-28"},{"lineNumber":3,"author":{"gitId":"ongzhili"},"content":"title: John Doe\u0027s Project Portfolio Page","lastModifiedDate":"2024-02-28"},{"lineNumber":4,"author":{"gitId":"ongzhili"},"content":"---","lastModifiedDate":"2024-02-28"},{"lineNumber":5,"author":{"gitId":"ongzhili"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":6,"author":{"gitId":"ongzhili"},"content":"### Project: PedagogyPages","lastModifiedDate":"2024-02-28"},{"lineNumber":7,"author":{"gitId":"ongzhili"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":8,"author":{"gitId":"ongzhili"},"content":"PedagogyPages is a desktop address book","lastModifiedDate":"2024-02-28"},{"lineNumber":9,"author":{"gitId":"ongzhili"},"content":"application used for teachers to manage their students\u0027 contact information. ","lastModifiedDate":"2024-02-28"},{"lineNumber":10,"author":{"gitId":"ongzhili"},"content":"The user interacts with it using a CLI, and it has a GUI created with JavaFX. ","lastModifiedDate":"2024-02-28"},{"lineNumber":11,"author":{"gitId":"ongzhili"},"content":"It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-02-28"},{"lineNumber":12,"author":{"gitId":"ongzhili"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":13,"author":{"gitId":"ongzhili"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-02-28"},{"lineNumber":14,"author":{"gitId":"ongzhili"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":15,"author":{"gitId":"ongzhili"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-02-28"},{"lineNumber":16,"author":{"gitId":"ongzhili"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":17,"author":{"gitId":"ongzhili"},"content":"* **Documentation**:","lastModifiedDate":"2024-02-28"},{"lineNumber":18,"author":{"gitId":"ongzhili"},"content":" * User Guide:","lastModifiedDate":"2024-02-28"},{"lineNumber":19,"author":{"gitId":"ongzhili"},"content":" * Updated AboutUs with own information","lastModifiedDate":"2024-02-28"},{"lineNumber":20,"author":{"gitId":"ongzhili"},"content":" * Added portfolio file (this file)","lastModifiedDate":"2024-02-28"}],"authorContributionMap":{"ongzhili":20}},{"path":"docs/team/wallacexuhanxiao.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"wallacexuhanxiao"},"content":"# Hanxiao\u0027s Project Portfolio Page","lastModifiedDate":"2024-02-28"}],"authorContributionMap":{"wallacexuhanxiao":1}},{"path":"src/main/java/seedu/address/commons/core/Config.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.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":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"J-wang-CSMA"},"content":" * Config values used by Pedagogue Pages","lastModifiedDate":"2024-03-21"},{"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":{"-":65,"J-wang-CSMA":1}},{"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":"J-wang-CSMA"},"content":" private static final String LOG_FILE \u003d \"pedagoguePages.log\";","lastModifiedDate":"2024-03-21"},{"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":{"-":105,"J-wang-CSMA":1}},{"path":"src/main/java/seedu/address/commons/util/StringFormatter.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"J-wang-CSMA"},"content":"package seedu.address.commons.util;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"J-wang-CSMA"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"J-wang-CSMA"},"content":" * Helper functions to handle Strings while changing them.","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"J-wang-CSMA"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"J-wang-CSMA"},"content":"public class StringFormatter {","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"J-wang-CSMA"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"J-wang-CSMA"},"content":" * Capitalizes every first letter of the input String. Only capitalizes the first character if it is a letter","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"J-wang-CSMA"},"content":" * otherwise it does not attempt to capitalize the first character.","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"J-wang-CSMA"},"content":" *","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"J-wang-CSMA"},"content":" * @param input Input string.","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"J-wang-CSMA"},"content":" * @return The same string, except the first letter of every word is now capitalised.","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"J-wang-CSMA"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"J-wang-CSMA"},"content":" public static String capitalizeWords(String input) {","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"J-wang-CSMA"},"content":" if (input \u003d\u003d null || input.isEmpty()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"J-wang-CSMA"},"content":" return input;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"J-wang-CSMA"},"content":" StringBuilder capitalized \u003d new StringBuilder();","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"J-wang-CSMA"},"content":" String[] words \u003d input.split(\"\\\\s+\");","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"J-wang-CSMA"},"content":" for (String word : words) {","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"J-wang-CSMA"},"content":" if (word.isEmpty()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"J-wang-CSMA"},"content":" continue; // Skip empty words","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"J-wang-CSMA"},"content":" char firstChar \u003d word.charAt(0);","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"J-wang-CSMA"},"content":" capitalized.append(Character.isLetter(firstChar) ? Character.toUpperCase(firstChar) : firstChar);","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"J-wang-CSMA"},"content":" capitalized.append(word.substring(1)).append(\" \");","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"J-wang-CSMA"},"content":" return capitalized.toString().trim();","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"J-wang-CSMA"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"J-wang-CSMA":35}},{"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":"J-wang-CSMA"},"content":" * Helper functions for handling strings without changing them.","lastModifiedDate":"2024-03-21"},{"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":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"-":67,"J-wang-CSMA":1}},{"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":"ongzhili"},"content":" public static final String MESSAGE_INVALID_STUDENT_ID \u003d \"The student ID provided is invalid\";","lastModifiedDate":"2024-03-17"},{"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":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"J-wang-CSMA"},"content":" .append(\"; First parent phone: \")","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"J-wang-CSMA"},"content":" .append(person.getParentPhoneOne())","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"J-wang-CSMA"},"content":" .append(\"; Second parent phone: \")","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"J-wang-CSMA"},"content":" .append(person.getParentPhoneTwo())","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" .append(\"; STUDENT_ID: \")","lastModifiedDate":"2024-02-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" .append(person.getStudentId())","lastModifiedDate":"2024-02-19"},{"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":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"ongzhili":1,"-":51,"J-wang-CSMA":4}},{"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":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":7,"author":{"gitId":"J-wang-CSMA"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PARENT_PHONES;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_ID;","lastModifiedDate":"2024-02-18"},{"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":"J-wang-CSMA"},"content":" * Adds a student to PedagoguePages.","lastModifiedDate":"2024-03-21"},{"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":"J-wang-CSMA"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a student to PedagoguePages. \"","lastModifiedDate":"2024-03-21"},{"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":"J-wang-CSMA"},"content":" + PREFIX_PARENT_PHONES + \"PARENT PHONE NUMBERS \"","lastModifiedDate":"2024-03-18"},{"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_STUDENT_ID + \"STUDENT_ID \"","lastModifiedDate":"2024-02-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06"},{"lineNumber":34,"author":{"gitId":"J-wang-CSMA"},"content":" + PREFIX_PARENT_PHONES + \"98765432, 91233322 \"","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":" + PREFIX_STUDENT_ID + \"00001 \"","lastModifiedDate":"2024-02-18"},{"lineNumber":38,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2017-05-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"owesMoney\";","lastModifiedDate":"2017-05-09"},{"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":"J-wang-CSMA"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the contact list.\";","lastModifiedDate":"2024-03-21"},{"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":{"-":81,"J-wang-CSMA":6}},{"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":"J-wang-CSMA"},"content":" * Clears Pedagogue Pages.","lastModifiedDate":"2024-03-21"},{"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":"J-wang-CSMA"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Contact list has been cleared!\";","lastModifiedDate":"2024-03-21"},{"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":{"-":21,"J-wang-CSMA":2}},{"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.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"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":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":12,"author":{"gitId":"ongzhili"},"content":"import seedu.address.model.person.StudentId;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"J-wang-CSMA"},"content":" * Deletes a student identified with their student ID from the contact list.","lastModifiedDate":"2024-03-21"},{"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":"J-wang-CSMA"},"content":" + \": Deletes the person identified by student ID used in the displayed person list.\\n\"","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"ongzhili"},"content":" + \"Parameters: INDEX (must be a 5 digit student ID)\\n\"","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"ongzhili"},"content":" + \"Example: \" + COMMAND_WORD + \" 12345\";","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Person: %1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"ongzhili"},"content":" private final StudentId targetId;","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"ongzhili"},"content":" public DeleteCommand(StudentId targetId) {","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"ongzhili"},"content":" this.targetId \u003d targetId;","lastModifiedDate":"2024-03-17"},{"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":"IamZhenHong"},"content":" boolean found \u003d false;","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"ongzhili"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"IamZhenHong"},"content":" // Iterate through the list to find the person with the target student ID","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"IamZhenHong"},"content":" for (Person candidate : lastShownList) {","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"ongzhili"},"content":" if (candidate.getStudentId().equals(targetId)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"IamZhenHong"},"content":" // If the person with the target student ID is found, delete it","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"IamZhenHong"},"content":" model.deletePerson(candidate);","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"IamZhenHong"},"content":" found \u003d true;","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"IamZhenHong"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(candidate)));","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"ongzhili"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"ongzhili"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"IamZhenHong"},"content":" // If the person with the target student ID is not found, throw an exception","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"IamZhenHong"},"content":" if (!found) {","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"ongzhili"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_STUDENT_ID);","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":55,"author":{"gitId":"IamZhenHong"},"content":" return new CommandResult(MESSAGE_DELETE_PERSON_SUCCESS);","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"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 DeleteCommand)) {","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":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":71,"author":{"gitId":"ongzhili"},"content":" return targetId.equals(otherDeleteCommand.targetId);","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"ongzhili"},"content":" .add(\"targetId\", targetId)","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"IamZhenHong":10,"ongzhili":13,"-":55,"J-wang-CSMA":2}},{"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":"J-wang-CSMA"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PARENT_PHONES;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_ID;","lastModifiedDate":"2024-02-18"},{"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.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.person.StudentId;","lastModifiedDate":"2024-02-18"},{"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":"J-wang-CSMA"},"content":" * Edits the details of an existing student Pedagogue Pages.","lastModifiedDate":"2024-03-21"},{"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":"J-wang-CSMA"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the student identified \"","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"J-wang-CSMA"},"content":" + \"by the student ID used in the displayed person list. \"","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26"},{"lineNumber":42,"author":{"gitId":"IamZhenHong"},"content":" + \"Parameters: STUDENT_ID (must be positive 5-digit integers) \"","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06"},{"lineNumber":44,"author":{"gitId":"J-wang-CSMA"},"content":" + \"[\" + PREFIX_PARENT_PHONES + \"PHONE, WHICH PHONE NUMBER TO EDIT] \"","lastModifiedDate":"2024-03-18"},{"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_STUDENT_ID + \"STUDENT_ID] \"","lastModifiedDate":"2024-02-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":50,"author":{"gitId":"J-wang-CSMA"},"content":" + PREFIX_PARENT_PHONES + \"91234567, 2\"","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26"},{"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":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":56,"author":{"gitId":"IamZhenHong"},"content":" private final StudentId studentId;","lastModifiedDate":"2024-03-20"},{"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":"IamZhenHong"},"content":" * @param studentId of the person in the filtered person list to edit","lastModifiedDate":"2024-03-20"},{"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":"IamZhenHong"},"content":" public EditCommand(StudentId studentId, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"IamZhenHong"},"content":" requireNonNull(studentId);","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":67,"author":{"gitId":"IamZhenHong"},"content":" this.studentId \u003d studentId;","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"IamZhenHong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26"},{"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":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":77,"author":{"gitId":"IamZhenHong"},"content":" Person personToEdit \u003d null;","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"IamZhenHong"},"content":" boolean found \u003d false;","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"IamZhenHong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"IamZhenHong"},"content":" for (Person person : lastShownList) {","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"IamZhenHong"},"content":" if (person.getStudentId().equals(this.studentId)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"IamZhenHong"},"content":" personToEdit \u003d person;","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"IamZhenHong"},"content":" found \u003d true;","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"IamZhenHong"},"content":" break;","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"IamZhenHong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"IamZhenHong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"IamZhenHong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"IamZhenHong"},"content":" if (!found) {","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"IamZhenHong"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_STUDENT_ID);","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","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":"J-wang-CSMA"},"content":" Phone updatedParentPhoneOne \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"J-wang-CSMA"},"content":" editPersonDescriptor.getFirstParentPhone().orElse(personToEdit.getParentPhoneOne());","lastModifiedDate":"2024-03-18"},{"lineNumber":113,"author":{"gitId":"J-wang-CSMA"},"content":" Phone updatedParentPhoneTwo \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"J-wang-CSMA"},"content":" editPersonDescriptor.getSecondParentPhone().orElse(personToEdit.getParentPhoneTwo());","lastModifiedDate":"2024-03-18"},{"lineNumber":115,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":116,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2017-06-21"},{"lineNumber":117,"author":{"gitId":"-"},"content":" StudentId updatedStudentId \u003d editPersonDescriptor.getStudentId().orElse(personToEdit.getStudentId());","lastModifiedDate":"2024-02-18"},{"lineNumber":118,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2017-06-21"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":120,"author":{"gitId":"J-wang-CSMA"},"content":" return new Person(updatedName, updatedParentPhoneOne, updatedParentPhoneTwo, updatedEmail, updatedAddress,","lastModifiedDate":"2024-03-18"},{"lineNumber":121,"author":{"gitId":"J-wang-CSMA"},"content":" updatedStudentId, updatedTags);","lastModifiedDate":"2024-03-18"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":124,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" return true;","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":" // instanceof handles nulls","lastModifiedDate":"2017-05-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":136,"author":{"gitId":"IamZhenHong"},"content":" return studentId.equals(otherEditCommand.studentId)","lastModifiedDate":"2024-03-20"},{"lineNumber":137,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":143,"author":{"gitId":"IamZhenHong"},"content":" .add(\"studentId\", studentId)","lastModifiedDate":"2024-03-20"},{"lineNumber":144,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":149,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26"},{"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":"J-wang-CSMA"},"content":" private Phone firstParentPhone;","lastModifiedDate":"2024-03-18"},{"lineNumber":155,"author":{"gitId":"J-wang-CSMA"},"content":" private Phone secondParentPhone;","lastModifiedDate":"2024-03-18"},{"lineNumber":156,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":157,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21"},{"lineNumber":158,"author":{"gitId":"-"},"content":" private StudentId studentId;","lastModifiedDate":"2024-02-18"},{"lineNumber":159,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":161,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":163,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":164,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11"},{"lineNumber":165,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":166,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":167,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26"},{"lineNumber":168,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15"},{"lineNumber":169,"author":{"gitId":"J-wang-CSMA"},"content":" setFirstParentPhone(toCopy.firstParentPhone);","lastModifiedDate":"2024-03-18"},{"lineNumber":170,"author":{"gitId":"J-wang-CSMA"},"content":" setSecondParentPhone(toCopy.secondParentPhone);","lastModifiedDate":"2024-03-18"},{"lineNumber":171,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15"},{"lineNumber":172,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15"},{"lineNumber":173,"author":{"gitId":"-"},"content":" setStudentId(toCopy.studentId);","lastModifiedDate":"2024-02-18"},{"lineNumber":174,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11"},{"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":"J-wang-CSMA"},"content":" return CollectionUtil.isAnyNonNull(name, firstParentPhone, secondParentPhone, email, address, studentId,","lastModifiedDate":"2024-03-18"},{"lineNumber":182,"author":{"gitId":"J-wang-CSMA"},"content":" tags);","lastModifiedDate":"2024-03-18"},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":185,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21"},{"lineNumber":186,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":189,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":190,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21"},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":193,"author":{"gitId":"J-wang-CSMA"},"content":" public void setPhone(Phone phone, String numberToEdit) {","lastModifiedDate":"2024-03-18"},{"lineNumber":194,"author":{"gitId":"J-wang-CSMA"},"content":" if (\"1\".equals(numberToEdit)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":195,"author":{"gitId":"J-wang-CSMA"},"content":" setFirstParentPhone(phone);","lastModifiedDate":"2024-03-18"},{"lineNumber":196,"author":{"gitId":"J-wang-CSMA"},"content":" } else if (\"2\".equals(numberToEdit)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":197,"author":{"gitId":"J-wang-CSMA"},"content":" setSecondParentPhone(phone);","lastModifiedDate":"2024-03-18"},{"lineNumber":198,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":199,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":200,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":201,"author":{"gitId":"J-wang-CSMA"},"content":" public void setFirstParentPhone(Phone phone) {","lastModifiedDate":"2024-03-18"},{"lineNumber":202,"author":{"gitId":"J-wang-CSMA"},"content":" this.firstParentPhone \u003d phone;","lastModifiedDate":"2024-03-18"},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":205,"author":{"gitId":"J-wang-CSMA"},"content":" public void setSecondParentPhone(Phone phone) {","lastModifiedDate":"2024-03-18"},{"lineNumber":206,"author":{"gitId":"J-wang-CSMA"},"content":" this.secondParentPhone \u003d phone;","lastModifiedDate":"2024-03-18"},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":209,"author":{"gitId":"J-wang-CSMA"},"content":" public Optional\u003cPhone\u003e getFirstParentPhone() {","lastModifiedDate":"2024-03-18"},{"lineNumber":210,"author":{"gitId":"J-wang-CSMA"},"content":" return Optional.ofNullable(firstParentPhone);","lastModifiedDate":"2024-03-18"},{"lineNumber":211,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":212,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":213,"author":{"gitId":"IamZhenHong"},"content":" public Optional\u003cPhone\u003e getSecondParentPhone() {","lastModifiedDate":"2024-03-20"},{"lineNumber":214,"author":{"gitId":"IamZhenHong"},"content":" return Optional.ofNullable(secondParentPhone);","lastModifiedDate":"2024-03-20"},{"lineNumber":215,"author":{"gitId":"IamZhenHong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":216,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":217,"author":{"gitId":"J-wang-CSMA"},"content":" public Optional\u003cPhone\u003e getEditedPhone() {","lastModifiedDate":"2024-03-18"},{"lineNumber":218,"author":{"gitId":"J-wang-CSMA"},"content":" if (firstParentPhone !\u003d null) {","lastModifiedDate":"2024-03-18"},{"lineNumber":219,"author":{"gitId":"J-wang-CSMA"},"content":" return Optional.ofNullable(firstParentPhone);","lastModifiedDate":"2024-03-18"},{"lineNumber":220,"author":{"gitId":"J-wang-CSMA"},"content":" } else {","lastModifiedDate":"2024-03-18"},{"lineNumber":221,"author":{"gitId":"J-wang-CSMA"},"content":" return Optional.ofNullable(secondParentPhone);","lastModifiedDate":"2024-03-18"},{"lineNumber":222,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":223,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":225,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21"},{"lineNumber":226,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21"},{"lineNumber":227,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":229,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":230,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21"},{"lineNumber":231,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":233,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21"},{"lineNumber":234,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21"},{"lineNumber":235,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":237,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26"},{"lineNumber":238,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21"},{"lineNumber":239,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":241,"author":{"gitId":"-"},"content":" public void setStudentId(StudentId studentId) {","lastModifiedDate":"2024-02-18"},{"lineNumber":242,"author":{"gitId":"-"},"content":" this.studentId \u003d studentId;","lastModifiedDate":"2024-02-18"},{"lineNumber":243,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-18"},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-18"},{"lineNumber":245,"author":{"gitId":"-"},"content":" public Optional\u003cStudentId\u003e getStudentId() {","lastModifiedDate":"2024-02-18"},{"lineNumber":246,"author":{"gitId":"-"},"content":" return Optional.ofNullable(studentId);","lastModifiedDate":"2024-02-18"},{"lineNumber":247,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-18"},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-18"},{"lineNumber":249,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":250,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11"},{"lineNumber":251,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":252,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":253,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21"},{"lineNumber":254,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11"},{"lineNumber":255,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":257,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":258,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11"},{"lineNumber":259,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11"},{"lineNumber":260,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11"},{"lineNumber":261,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":262,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":263,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11"},{"lineNumber":264,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":266,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":267,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":268,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":269,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":270,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":272,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":273,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05"},{"lineNumber":274,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":275,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":277,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":278,"author":{"gitId":"J-wang-CSMA"},"content":" if (firstParentPhone !\u003d null) {","lastModifiedDate":"2024-03-18"},{"lineNumber":279,"author":{"gitId":"J-wang-CSMA"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2024-03-18"},{"lineNumber":280,"author":{"gitId":"J-wang-CSMA"},"content":" \u0026\u0026 Objects.equals(firstParentPhone, otherEditPersonDescriptor.firstParentPhone)","lastModifiedDate":"2024-03-18"},{"lineNumber":281,"author":{"gitId":"J-wang-CSMA"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2024-03-18"},{"lineNumber":282,"author":{"gitId":"J-wang-CSMA"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2024-03-18"},{"lineNumber":283,"author":{"gitId":"J-wang-CSMA"},"content":" \u0026\u0026 Objects.equals(studentId, otherEditPersonDescriptor.studentId)","lastModifiedDate":"2024-03-18"},{"lineNumber":284,"author":{"gitId":"J-wang-CSMA"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags);","lastModifiedDate":"2024-03-18"},{"lineNumber":285,"author":{"gitId":"J-wang-CSMA"},"content":" } else {","lastModifiedDate":"2024-03-18"},{"lineNumber":286,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":287,"author":{"gitId":"J-wang-CSMA"},"content":" \u0026\u0026 Objects.equals(secondParentPhone, otherEditPersonDescriptor.secondParentPhone)","lastModifiedDate":"2024-03-18"},{"lineNumber":288,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":289,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":290,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(studentId, otherEditPersonDescriptor.studentId)","lastModifiedDate":"2024-02-18"},{"lineNumber":291,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags);","lastModifiedDate":"2023-07-13"},{"lineNumber":292,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":293,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-18"},{"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":"J-wang-CSMA"},"content":" if (firstParentPhone !\u003d null) {","lastModifiedDate":"2024-03-18"},{"lineNumber":298,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":299,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":300,"author":{"gitId":"J-wang-CSMA"},"content":" .add(\"edited phone\", firstParentPhone)","lastModifiedDate":"2024-03-18"},{"lineNumber":301,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":302,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":303,"author":{"gitId":"-"},"content":" .add(\"student id\", studentId)","lastModifiedDate":"2024-02-18"},{"lineNumber":304,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":305,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":306,"author":{"gitId":"J-wang-CSMA"},"content":" } else {","lastModifiedDate":"2024-03-18"},{"lineNumber":307,"author":{"gitId":"J-wang-CSMA"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-18"},{"lineNumber":308,"author":{"gitId":"J-wang-CSMA"},"content":" .add(\"name\", name)","lastModifiedDate":"2024-03-18"},{"lineNumber":309,"author":{"gitId":"J-wang-CSMA"},"content":" .add(\"edited phone\", secondParentPhone)","lastModifiedDate":"2024-03-18"},{"lineNumber":310,"author":{"gitId":"J-wang-CSMA"},"content":" .add(\"email\", email)","lastModifiedDate":"2024-03-18"},{"lineNumber":311,"author":{"gitId":"J-wang-CSMA"},"content":" .add(\"address\", address)","lastModifiedDate":"2024-03-18"},{"lineNumber":312,"author":{"gitId":"J-wang-CSMA"},"content":" .add(\"student id\", studentId)","lastModifiedDate":"2024-03-18"},{"lineNumber":313,"author":{"gitId":"J-wang-CSMA"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2024-03-18"},{"lineNumber":314,"author":{"gitId":"J-wang-CSMA"},"content":" .toString();","lastModifiedDate":"2024-03-18"},{"lineNumber":315,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":316,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":317,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":318,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"IamZhenHong":25,"-":231,"J-wang-CSMA":62}},{"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":"wallacexuhanxiao"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-10"},{"lineNumber":6,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-10"},{"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-07-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":10,"author":{"gitId":"wallacexuhanxiao"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all persons whose names contain any of \"","lastModifiedDate":"2016-09-22"},{"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":"wallacexuhanxiao"},"content":" private Predicate\u003cPerson\u003e predicate;","lastModifiedDate":"2024-03-10"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":27,"author":{"gitId":"wallacexuhanxiao"},"content":" public FindCommand(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2024-03-10"},{"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":"2024-03-10"},{"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":{"wallacexuhanxiao":5,"-":55}},{"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":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":7,"author":{"gitId":"J-wang-CSMA"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PARENT_PHONES;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_ID;","lastModifiedDate":"2024-02-18"},{"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":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05"},{"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.person.Address;","lastModifiedDate":"2017-03-17"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-03-17"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-03-17"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-03-17"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.StudentId;","lastModifiedDate":"2024-02-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05"},{"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-02-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":35,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":36,"author":{"gitId":"J-wang-CSMA"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PARENT_PHONES, PREFIX_EMAIL,","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"-"},"content":" PREFIX_ADDRESS, PREFIX_STUDENT_ID, PREFIX_TAG);","lastModifiedDate":"2024-02-18"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":39,"author":{"gitId":"J-wang-CSMA"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_PARENT_PHONES, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"J-wang-CSMA"},"content":" PREFIX_STUDENT_ID)","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":45,"author":{"gitId":"J-wang-CSMA"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PARENT_PHONES, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":47,"author":{"gitId":"J-wang-CSMA"},"content":" Phone parentPhoneOne \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PARENT_PHONES).get())[0];","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"J-wang-CSMA"},"content":" Phone parentPhoneTwo \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PARENT_PHONES).get())[1];","lastModifiedDate":"2024-03-18"},{"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":" StudentId studentId \u003d ParserUtil.parseStudentId(argMultimap.getValue(PREFIX_STUDENT_ID).get());","lastModifiedDate":"2024-02-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":54,"author":{"gitId":"J-wang-CSMA"},"content":" Person person \u003d new Person(name, parentPhoneOne, parentPhoneTwo, email, address, studentId, tagList);","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":63,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":67,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"-":59,"J-wang-CSMA":8}},{"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":"J-wang-CSMA"},"content":" public static final Prefix PREFIX_PARENT_PHONES \u003d new Prefix(\"p/\");","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":" public static final Prefix PREFIX_STUDENT_ID \u003d new Prefix(\"id/\");","lastModifiedDate":"2024-02-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"-":14,"J-wang-CSMA":1}},{"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.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":"ongzhili"},"content":"import seedu.address.model.person.StudentId;","lastModifiedDate":"2024-03-17"},{"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":"-"},"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":"2017-03-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":21,"author":{"gitId":"ongzhili"},"content":" StudentId targetId \u003d ParserUtil.parseStudentId(args);","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"ongzhili"},"content":" return new DeleteCommand(targetId);","lastModifiedDate":"2024-03-17"},{"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":{"ongzhili":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":"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":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":8,"author":{"gitId":"J-wang-CSMA"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PARENT_PHONES;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_ID;","lastModifiedDate":"2024-02-18"},{"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.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":"J-wang-CSMA"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"IamZhenHong"},"content":"import seedu.address.model.person.StudentId;","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":36,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":38,"author":{"gitId":"J-wang-CSMA"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PARENT_PHONES,","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_STUDENT_ID, PREFIX_TAG);","lastModifiedDate":"2024-02-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":42,"author":{"gitId":"IamZhenHong"},"content":" StudentId studentId \u003d null;","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"IamZhenHong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"IamZhenHong"},"content":" String preamble \u003d argMultimap.getPreamble().trim();","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"IamZhenHong"},"content":" if (StudentId.isValidStudentId(preamble)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"IamZhenHong"},"content":" studentId \u003d new StudentId(preamble);","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"IamZhenHong"},"content":" } else {","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"IamZhenHong"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":51,"author":{"gitId":"J-wang-CSMA"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PARENT_PHONES,","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":" PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_STUDENT_ID);","lastModifiedDate":"2024-02-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":"J-wang-CSMA"},"content":" if (argMultimap.getValue(PREFIX_PARENT_PHONES).isPresent()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"J-wang-CSMA"},"content":" String[] phoneArray \u003d ParserUtil.parsePhoneForEdit(argMultimap.getValue(PREFIX_PARENT_PHONES).get());","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"J-wang-CSMA"},"content":" String phoneString \u003d phoneArray[0].trim();","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"J-wang-CSMA"},"content":" String numberToEdit \u003d phoneArray[1].trim();","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"J-wang-CSMA"},"content":" Phone phone \u003d new Phone(phoneString);","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"J-wang-CSMA"},"content":" editPersonDescriptor.setPhone(phone, numberToEdit);","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":67,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":69,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":70,"author":{"gitId":"-"},"content":" editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_STUDENT_ID).isPresent()) {","lastModifiedDate":"2024-02-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":" editPersonDescriptor.setStudentId(ParserUtil.parseStudentId(argMultimap.getValue(PREFIX_STUDENT_ID).get()));","lastModifiedDate":"2024-02-18"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-18"},{"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":"IamZhenHong"},"content":" return new EditCommand(studentId, editPersonDescriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"IamZhenHong"},"content":"","lastModifiedDate":"2024-03-20"},{"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"},{"lineNumber":86,"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":87,"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":88,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07"},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":90,"author":{"gitId":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":93,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":94,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":96,"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":97,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"IamZhenHong":10,"-":80,"J-wang-CSMA":10}},{"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":"wallacexuhanxiao"},"content":"import seedu.address.model.person.IdMatchesPredicate;","lastModifiedDate":"2024-03-10"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"wallacexuhanxiao"},"content":"import seedu.address.model.person.StudentId;","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"wallacexuhanxiao"},"content":"import seedu.address.model.person.TagMatchesPredicate;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"wallacexuhanxiao"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new FindCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class FindCommandParser implements Parser\u003cFindCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the FindCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * and returns a FindCommand object for execution.","lastModifiedDate":"2019-05-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public FindCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2017-02-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2017-02-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11"},{"lineNumber":29,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-01-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":" String[] nameKeywords \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2017-06-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"wallacexuhanxiao"},"content":" String modeToken \u003d nameKeywords[0];","lastModifiedDate":"2024-03-10"},{"lineNumber":35,"author":{"gitId":"wallacexuhanxiao"},"content":" nameKeywords \u003d Arrays.copyOfRange(nameKeywords, 1, nameKeywords.length);","lastModifiedDate":"2024-03-10"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":37,"author":{"gitId":"wallacexuhanxiao"},"content":" if (modeToken.equals(\"1\")) {","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"wallacexuhanxiao"},"content":" return new FindCommand(new NameContainsKeywordsPredicate(Arrays.asList(nameKeywords)));","lastModifiedDate":"2024-03-10"},{"lineNumber":39,"author":{"gitId":"wallacexuhanxiao"},"content":" } else if (modeToken.equals(\"2\")) {","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"wallacexuhanxiao"},"content":" return new FindCommand(new IdMatchesPredicate(new StudentId(nameKeywords[0])));","lastModifiedDate":"2024-03-10"},{"lineNumber":41,"author":{"gitId":"wallacexuhanxiao"},"content":" } else if (modeToken.equals(\"3\")) {","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"wallacexuhanxiao"},"content":" return new FindCommand(new TagMatchesPredicate(new Tag(nameKeywords[0])));","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"wallacexuhanxiao"},"content":" } else {","lastModifiedDate":"2024-03-10"},{"lineNumber":44,"author":{"gitId":"wallacexuhanxiao"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-10"},{"lineNumber":45,"author":{"gitId":"wallacexuhanxiao"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-10"},{"lineNumber":46,"author":{"gitId":"wallacexuhanxiao"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":47,"author":{"gitId":"wallacexuhanxiao"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":48,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"wallacexuhanxiao":17,"-":31}},{"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":"J-wang-CSMA"},"content":"import seedu.address.commons.util.StringFormatter;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-02-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-02-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.StudentId;","lastModifiedDate":"2024-02-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11"},{"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":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"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":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"J-wang-CSMA"},"content":" String capitalisedName \u003d StringFormatter.capitalizeWords(name);","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"J-wang-CSMA"},"content":" return new Name(capitalisedName);","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-02-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Parses a {@code String studentId} into a {@code StudentId}.","lastModifiedDate":"2024-02-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-02-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2024-02-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code studentId} is invalid.","lastModifiedDate":"2024-02-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static StudentId parseStudentId(String studentId) throws ParseException {","lastModifiedDate":"2024-02-18"},{"lineNumber":49,"author":{"gitId":"-"},"content":" requireNonNull(studentId);","lastModifiedDate":"2024-02-18"},{"lineNumber":50,"author":{"gitId":"-"},"content":" String trimmedStudentId \u003d studentId.trim();","lastModifiedDate":"2024-02-18"},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (!StudentId.isValidStudentId(trimmedStudentId)) {","lastModifiedDate":"2024-02-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":" throw new ParseException(StudentId.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-18"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-18"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return new StudentId(trimmedStudentId);","lastModifiedDate":"2024-02-18"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-18"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-18"},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":58,"author":{"gitId":"J-wang-CSMA"},"content":" * Parses a {@code String phone} into an array of 2 {@code Phone}.","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":60,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":61,"author":{"gitId":"J-wang-CSMA"},"content":" * @throws ParseException if the given {@code phone} is invalid and if less than 2 phone numbers are provided.","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":63,"author":{"gitId":"J-wang-CSMA"},"content":" public static Phone[] parsePhone(String phones) throws ParseException {","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"J-wang-CSMA"},"content":" requireNonNull(phones);","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"J-wang-CSMA"},"content":" String[] splitPhones \u003d phones.split(\",\");","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"J-wang-CSMA"},"content":" Phone[] phoneArray \u003d new Phone[2];","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"wallacexuhanxiao"},"content":" if (splitPhones.length \u003d\u003d 2) {","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"J-wang-CSMA"},"content":" for (int i \u003d 0; i \u003c splitPhones.length; i++) {","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"J-wang-CSMA"},"content":" String trimmedPhone \u003d splitPhones[i].trim();","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"J-wang-CSMA"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"J-wang-CSMA"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"J-wang-CSMA"},"content":" phoneArray[i] \u003d new Phone(trimmedPhone);","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"J-wang-CSMA"},"content":" return phoneArray;","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"wallacexuhanxiao"},"content":" } else if (splitPhones.length \u003d\u003d 1) {","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"wallacexuhanxiao"},"content":" String trimmedPhone \u003d splitPhones[0].trim();","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"wallacexuhanxiao"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"wallacexuhanxiao"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"wallacexuhanxiao"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"wallacexuhanxiao"},"content":" phoneArray[0] \u003d new Phone(trimmedPhone);","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"wallacexuhanxiao"},"content":" phoneArray[1] \u003d new Phone(trimmedPhone);","lastModifiedDate":"2024-03-19"},{"lineNumber":84,"author":{"gitId":"wallacexuhanxiao"},"content":" return phoneArray;","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"wallacexuhanxiao"},"content":" } else {","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"wallacexuhanxiao"},"content":" throw new ParseException(Phone.INVALID_NUMBER_OF_PHONES);","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"wallacexuhanxiao"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"J-wang-CSMA"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"J-wang-CSMA"},"content":" * Parses a {@code String phone} into an array of the {@code Phone} to edit and a {@code number} to designate","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"J-wang-CSMA"},"content":" * which parent phone number to edit.","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"J-wang-CSMA"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"J-wang-CSMA"},"content":" * @throws ParseException if the given {@code phone} is invalid and if the second input is invalid.","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"J-wang-CSMA"},"content":" public static String[] parsePhoneForEdit(String phone) throws ParseException {","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30"},{"lineNumber":99,"author":{"gitId":"J-wang-CSMA"},"content":" String[] splitInput \u003d phone.split(\",\");","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":101,"author":{"gitId":"J-wang-CSMA"},"content":" if (splitInput.length !\u003d 2) {","lastModifiedDate":"2024-03-18"},{"lineNumber":102,"author":{"gitId":"J-wang-CSMA"},"content":" throw new ParseException(Phone.INVALID_EDIT_INPUT);","lastModifiedDate":"2024-03-18"},{"lineNumber":103,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":104,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":105,"author":{"gitId":"J-wang-CSMA"},"content":" String trimmedPhone \u003d splitInput[0].trim();","lastModifiedDate":"2024-03-18"},{"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":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":110,"author":{"gitId":"J-wang-CSMA"},"content":" String number \u003d splitInput[1].trim();","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"J-wang-CSMA"},"content":" //Checks if it is either \"1\" or \"2\"","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"J-wang-CSMA"},"content":" if (!number.equals(\"1\") \u0026\u0026 !number.equals(\"2\")) {","lastModifiedDate":"2024-03-18"},{"lineNumber":113,"author":{"gitId":"J-wang-CSMA"},"content":" throw new ParseException(Phone.INVALID_EDIT_INPUT);","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":115,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"J-wang-CSMA"},"content":" return splitInput;","lastModifiedDate":"2024-03-18"},{"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-05-30"},{"lineNumber":120,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30"},{"lineNumber":121,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":122,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":123,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":124,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":125,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":126,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30"},{"lineNumber":127,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":128,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":129,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":131,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":132,"author":{"gitId":"J-wang-CSMA"},"content":" String capitalizedAddress \u003d StringFormatter.capitalizeWords(trimmedAddress);","lastModifiedDate":"2024-03-21"},{"lineNumber":133,"author":{"gitId":"J-wang-CSMA"},"content":" return new Address(capitalizedAddress);","lastModifiedDate":"2024-03-21"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":136,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":137,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","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 email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":141,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":143,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":144,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":145,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":146,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":148,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","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-05-30"},{"lineNumber":152,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":153,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":154,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":155,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":156,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":157,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":158,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30"},{"lineNumber":159,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":160,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":161,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":163,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":164,"author":{"gitId":"J-wang-CSMA"},"content":" String capitalizedTag \u003d StringFormatter.capitalizeWords(trimmedTag);","lastModifiedDate":"2024-03-21"},{"lineNumber":165,"author":{"gitId":"J-wang-CSMA"},"content":" return new Tag(capitalizedTag);","lastModifiedDate":"2024-03-21"},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":168,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":169,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07"},{"lineNumber":170,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":171,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":172,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15"},{"lineNumber":173,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11"},{"lineNumber":174,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11"},{"lineNumber":175,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30"},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":177,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":179,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"wallacexuhanxiao":13,"-":118,"J-wang-CSMA":48}},{"path":"src/main/java/seedu/address/model/person/IdMatchesPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"wallacexuhanxiao"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":3,"author":{"gitId":"wallacexuhanxiao"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-10"},{"lineNumber":4,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":5,"author":{"gitId":"wallacexuhanxiao"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-10"},{"lineNumber":6,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":7,"author":{"gitId":"wallacexuhanxiao"},"content":"/**","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"wallacexuhanxiao"},"content":" * Tests that a {@code Person}\u0027s {@code StudentId} matches the Student Id given.","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"wallacexuhanxiao"},"content":" */","lastModifiedDate":"2024-03-10"},{"lineNumber":10,"author":{"gitId":"wallacexuhanxiao"},"content":"public class IdMatchesPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-03-10"},{"lineNumber":11,"author":{"gitId":"wallacexuhanxiao"},"content":" private final StudentId studentId;","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":13,"author":{"gitId":"wallacexuhanxiao"},"content":" public IdMatchesPredicate(StudentId studentId) {","lastModifiedDate":"2024-03-10"},{"lineNumber":14,"author":{"gitId":"wallacexuhanxiao"},"content":" this.studentId \u003d studentId;","lastModifiedDate":"2024-03-10"},{"lineNumber":15,"author":{"gitId":"wallacexuhanxiao"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":16,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":17,"author":{"gitId":"wallacexuhanxiao"},"content":" @Override","lastModifiedDate":"2024-03-10"},{"lineNumber":18,"author":{"gitId":"wallacexuhanxiao"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-03-10"},{"lineNumber":19,"author":{"gitId":"wallacexuhanxiao"},"content":" return person.getStudentId().equals(studentId);","lastModifiedDate":"2024-03-10"},{"lineNumber":20,"author":{"gitId":"wallacexuhanxiao"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":21,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":22,"author":{"gitId":"wallacexuhanxiao"},"content":" @Override","lastModifiedDate":"2024-03-10"},{"lineNumber":23,"author":{"gitId":"wallacexuhanxiao"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-10"},{"lineNumber":24,"author":{"gitId":"wallacexuhanxiao"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-10"},{"lineNumber":25,"author":{"gitId":"wallacexuhanxiao"},"content":" return true;","lastModifiedDate":"2024-03-10"},{"lineNumber":26,"author":{"gitId":"wallacexuhanxiao"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":27,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":28,"author":{"gitId":"wallacexuhanxiao"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-10"},{"lineNumber":29,"author":{"gitId":"wallacexuhanxiao"},"content":" if (!(other instanceof IdMatchesPredicate)) {","lastModifiedDate":"2024-03-10"},{"lineNumber":30,"author":{"gitId":"wallacexuhanxiao"},"content":" return false;","lastModifiedDate":"2024-03-10"},{"lineNumber":31,"author":{"gitId":"wallacexuhanxiao"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":32,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":33,"author":{"gitId":"wallacexuhanxiao"},"content":" IdMatchesPredicate otherId \u003d (IdMatchesPredicate) other;","lastModifiedDate":"2024-03-10"},{"lineNumber":34,"author":{"gitId":"wallacexuhanxiao"},"content":" return studentId.equals(otherId.studentId);","lastModifiedDate":"2024-03-10"},{"lineNumber":35,"author":{"gitId":"wallacexuhanxiao"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":36,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":37,"author":{"gitId":"wallacexuhanxiao"},"content":" @Override","lastModifiedDate":"2024-03-10"},{"lineNumber":38,"author":{"gitId":"wallacexuhanxiao"},"content":" public String toString() {","lastModifiedDate":"2024-03-10"},{"lineNumber":39,"author":{"gitId":"wallacexuhanxiao"},"content":" return new ToStringBuilder(this).add(\"student id\", studentId).toString();","lastModifiedDate":"2024-03-10"},{"lineNumber":40,"author":{"gitId":"wallacexuhanxiao"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":41,"author":{"gitId":"wallacexuhanxiao"},"content":"}","lastModifiedDate":"2024-03-10"},{"lineNumber":42,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-10"}],"authorContributionMap":{"wallacexuhanxiao":42}},{"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 StudentId studentId;","lastModifiedDate":"2024-02-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":22,"author":{"gitId":"J-wang-CSMA"},"content":" private final Phone parentPhoneOne;","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"J-wang-CSMA"},"content":" private final Phone parentPhoneTwo;","lastModifiedDate":"2024-03-18"},{"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":"J-wang-CSMA"},"content":" public Person(Name name, Phone parentPhoneOne, Phone parentPhoneTwo, Email email, Address address,","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"J-wang-CSMA"},"content":" StudentId studentId, Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"J-wang-CSMA"},"content":" requireAllNonNull(name, parentPhoneOne, parentPhoneTwo, email, address, tags, studentId);","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.studentId \u003d studentId;","lastModifiedDate":"2024-02-18"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20"},{"lineNumber":38,"author":{"gitId":"J-wang-CSMA"},"content":" this.parentPhoneOne \u003d parentPhoneOne;","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"J-wang-CSMA"},"content":" this.parentPhoneTwo \u003d parentPhoneTwo;","lastModifiedDate":"2024-03-18"},{"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 StudentId getStudentId() {","lastModifiedDate":"2024-02-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":" return studentId;","lastModifiedDate":"2024-02-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-18"},{"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":"J-wang-CSMA"},"content":" public Phone getParentPhoneOne() {","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"J-wang-CSMA"},"content":" return parentPhoneOne;","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"IamZhenHong"},"content":" public Phone getParentPhoneTwo() {","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"IamZhenHong"},"content":" return parentPhoneTwo;","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":68,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07"},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26"},{"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":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-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":"-"},"content":" \u0026\u0026 otherPerson.getStudentId().equals(getStudentId());","lastModifiedDate":"2024-02-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":"J-wang-CSMA"},"content":" \u0026\u0026 parentPhoneOne.equals(otherPerson.parentPhoneOne)","lastModifiedDate":"2024-03-18"},{"lineNumber":107,"author":{"gitId":"J-wang-CSMA"},"content":" \u0026\u0026 parentPhoneTwo.equals(otherPerson.parentPhoneTwo)","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" \u0026\u0026 tags.equals(otherPerson.tags)","lastModifiedDate":"2024-02-18"},{"lineNumber":111,"author":{"gitId":"-"},"content":" \u0026\u0026 studentId.equals(otherPerson.studentId);","lastModifiedDate":"2024-02-18"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-18"},{"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":"J-wang-CSMA"},"content":" return Objects.hash(name, parentPhoneOne, parentPhoneTwo, email, address, studentId, tags);","lastModifiedDate":"2024-03-18"},{"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":"J-wang-CSMA"},"content":" .add(\"parent phone 1\", parentPhoneOne)","lastModifiedDate":"2024-03-18"},{"lineNumber":126,"author":{"gitId":"J-wang-CSMA"},"content":" .add(\"parent phone 2\", parentPhoneTwo)","lastModifiedDate":"2024-03-18"},{"lineNumber":127,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":" .add(\"student id\", studentId)","lastModifiedDate":"2024-02-18"},{"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":{"IamZhenHong":2,"-":118,"J-wang-CSMA":14}},{"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":"J-wang-CSMA"},"content":" * Represents a student\u0027s parents\u0027 phone numbers in the address book.","lastModifiedDate":"2024-03-18"},{"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":"J-wang-CSMA"},"content":" \"Phone numbers should be an 8 digits positive number with a non-zero number as the first digit.\";","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"J-wang-CSMA"},"content":" public static final String INVALID_NUMBER_OF_PHONES \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"J-wang-CSMA"},"content":" \"Two parent phone numbers need to be provided.\";","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"J-wang-CSMA"},"content":" public static final String INVALID_EDIT_INPUT \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"J-wang-CSMA"},"content":" \"The valid input for an edit phone input is: {new phone number}, {number of phone number to edit}.\";","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"J-wang-CSMA"},"content":" public static final String VALIDATION_REGEX \u003d \"^[1-9]\\\\d{7}$\";","lastModifiedDate":"2024-03-18"},{"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 a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":24,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * @param phone A valid phone number.","lastModifiedDate":"2017-05-30"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public Phone(String phone) {","lastModifiedDate":"2017-05-30"},{"lineNumber":28,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" checkArgument(isValidPhone(phone), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":" value \u003d phone;","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 phone number.","lastModifiedDate":"2018-04-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static boolean isValidPhone(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 Phone)) {","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":" Phone otherPhone \u003d (Phone) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return value.equals(otherPhone.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":{"-":58,"J-wang-CSMA":7}},{"path":"src/main/java/seedu/address/model/person/TagMatchesPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"wallacexuhanxiao"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"wallacexuhanxiao"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"wallacexuhanxiao"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"wallacexuhanxiao"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"wallacexuhanxiao"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"wallacexuhanxiao"},"content":" * Tests that a {@code Person}\u0027s {@code Tag} matches the Tag given.","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"wallacexuhanxiao"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"wallacexuhanxiao"},"content":"public class TagMatchesPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"wallacexuhanxiao"},"content":" private final Tag tag;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"wallacexuhanxiao"},"content":" public TagMatchesPredicate(Tag tag) {","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"wallacexuhanxiao"},"content":" this.tag \u003d tag;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"wallacexuhanxiao"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"wallacexuhanxiao"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"wallacexuhanxiao"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"wallacexuhanxiao"},"content":" return person.getTags().contains(tag);","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"wallacexuhanxiao"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"wallacexuhanxiao"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"wallacexuhanxiao"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"wallacexuhanxiao"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"wallacexuhanxiao"},"content":" return true;","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"wallacexuhanxiao"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"wallacexuhanxiao"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"wallacexuhanxiao"},"content":" if (!(other instanceof TagMatchesPredicate)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"wallacexuhanxiao"},"content":" return false;","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"wallacexuhanxiao"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"wallacexuhanxiao"},"content":" TagMatchesPredicate otherTag \u003d (TagMatchesPredicate) other;","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"wallacexuhanxiao"},"content":" return tag.equals(otherTag.tag);","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"wallacexuhanxiao"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"wallacexuhanxiao"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"wallacexuhanxiao"},"content":" public String toString() {","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"wallacexuhanxiao"},"content":" return new ToStringBuilder(this).add(\"tag\", tag).toString();","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"wallacexuhanxiao"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"wallacexuhanxiao"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"wallacexuhanxiao":42}},{"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":"-"},"content":"public class Tag {","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"J-wang-CSMA"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Tags names should be alphanumeric and at most 2 words long.\";","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"J-wang-CSMA"},"content":" public static final String VALIDATION_REGEX \u003d \"^\\\\p{Alnum}+(?:\\\\s\\\\p{Alnum}+)?$\";","lastModifiedDate":"2024-03-21"},{"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,"J-wang-CSMA":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":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.StudentId;","lastModifiedDate":"2024-02-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20"},{"lineNumber":23,"author":{"gitId":"J-wang-CSMA"},"content":" new Person(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"), new Phone(\"99149687\"),","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"J-wang-CSMA"},"content":" new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"), new StudentId(\"00001\"),","lastModifiedDate":"2024-02-18"},{"lineNumber":26,"author":{"gitId":"-"},"content":" getTagSet(\"friends\")),","lastModifiedDate":"2017-03-14"},{"lineNumber":27,"author":{"gitId":"J-wang-CSMA"},"content":" new Person(new Name(\"Bernice Yu\"), new Phone(\"99272758\"), new Phone(\"86898742\"), new Email(\"berniceyu\"","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"J-wang-CSMA"},"content":" + \"@example.com\"),","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"), new StudentId(\"00002\"),","lastModifiedDate":"2024-02-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":" getTagSet(\"colleagues\", \"friends\")),","lastModifiedDate":"2017-03-14"},{"lineNumber":31,"author":{"gitId":"J-wang-CSMA"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"), new Phone(\"92532563\"), new Email(","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"J-wang-CSMA"},"content":" \"charlotte@example.com\"),","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"-"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"), new StudentId(\"00003\"),","lastModifiedDate":"2024-02-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":" getTagSet(\"neighbours\")),","lastModifiedDate":"2017-03-14"},{"lineNumber":35,"author":{"gitId":"J-wang-CSMA"},"content":" new Person(new Name(\"David Li\"), new Phone(\"91031282\"), new Phone(\"83496437\"), new Email(\"lidavid\"","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"J-wang-CSMA"},"content":" + \"@example.com\"),","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"-"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"), new StudentId(\"00004\"),","lastModifiedDate":"2024-02-18"},{"lineNumber":38,"author":{"gitId":"-"},"content":" getTagSet(\"family\")),","lastModifiedDate":"2017-03-14"},{"lineNumber":39,"author":{"gitId":"J-wang-CSMA"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"), new Phone(\"88548559\"), new Email(\"irfan\"","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"J-wang-CSMA"},"content":" + \"@example.com\"),","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"), new StudentId(\"00005\"),","lastModifiedDate":"2024-02-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" getTagSet(\"classmates\")),","lastModifiedDate":"2017-03-14"},{"lineNumber":43,"author":{"gitId":"J-wang-CSMA"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"), new Phone(\"99811124\"), new Email(\"royb\"","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"J-wang-CSMA"},"content":" + \"@example.com\"),","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"), new StudentId(\"00006\"),","lastModifiedDate":"2024-02-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":" getTagSet(\"colleagues\"))","lastModifiedDate":"2017-03-14"},{"lineNumber":47,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07"},{"lineNumber":52,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20"},{"lineNumber":53,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14"},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"-":55,"J-wang-CSMA":12}},{"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":"-"},"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.Person;","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.StudentId;","lastModifiedDate":"2024-02-18"},{"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":"J-wang-CSMA"},"content":" private final String parentPhoneNumberOne;","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"J-wang-CSMA"},"content":" private final String parentPhoneNumberTwo;","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final String studentId;","lastModifiedDate":"2024-02-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"J-wang-CSMA"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name,","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"J-wang-CSMA"},"content":" @JsonProperty(\"parent phone one\") String parentPhoneNumberOne,","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"J-wang-CSMA"},"content":" @JsonProperty(\"parent phone two\") String parentPhoneNumberTwo,","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @JsonProperty(\"email\") String email,","lastModifiedDate":"2024-02-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @JsonProperty(\"address\") String address,","lastModifiedDate":"2024-02-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @JsonProperty(\"studentId\") String studentId,","lastModifiedDate":"2024-02-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags) {","lastModifiedDate":"2023-05-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"J-wang-CSMA"},"content":" this.parentPhoneNumberOne \u003d parentPhoneNumberOne;","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"J-wang-CSMA"},"content":" this.parentPhoneNumberTwo \u003d parentPhoneNumberTwo;","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.studentId \u003d studentId;","lastModifiedDate":"2024-02-18"},{"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":"J-wang-CSMA"},"content":" parentPhoneNumberOne \u003d source.getParentPhoneOne().value;","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"J-wang-CSMA"},"content":" parentPhoneNumberTwo \u003d source.getParentPhoneTwo().value;","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" studentId \u003d source.getStudentId().value;","lastModifiedDate":"2024-02-18"},{"lineNumber":68,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09"},{"lineNumber":69,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09"},{"lineNumber":81,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"J-wang-CSMA"},"content":" if (parentPhoneNumberOne \u003d\u003d null || parentPhoneNumberTwo \u003d\u003d null) {","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"J-wang-CSMA"},"content":" if (!Phone.isValidPhone(parentPhoneNumberOne) || !Phone.isValidPhone(parentPhoneNumberTwo)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"J-wang-CSMA"},"content":" final Phone modelFirstParentPhone \u003d new Phone(parentPhoneNumberOne);","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"J-wang-CSMA"},"content":" final Phone modelSecondParentPhone \u003d new Phone(parentPhoneNumberTwo);","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" if (studentId \u003d\u003d null) {","lastModifiedDate":"2024-02-18"},{"lineNumber":118,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-02-18"},{"lineNumber":119,"author":{"gitId":"-"},"content":" StudentId.class.getSimpleName()));","lastModifiedDate":"2024-02-18"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-18"},{"lineNumber":121,"author":{"gitId":"-"},"content":" if (!StudentId.isValidStudentId(studentId)) {","lastModifiedDate":"2024-02-18"},{"lineNumber":122,"author":{"gitId":"-"},"content":" throw new IllegalValueException(StudentId.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-18"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-18"},{"lineNumber":124,"author":{"gitId":"-"},"content":" final StudentId modelStudentId \u003d new StudentId(studentId);","lastModifiedDate":"2024-02-18"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-18"},{"lineNumber":126,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13"},{"lineNumber":127,"author":{"gitId":"J-wang-CSMA"},"content":" return new Person(modelName, modelFirstParentPhone, modelSecondParentPhone, modelEmail, modelAddress,","lastModifiedDate":"2024-03-18"},{"lineNumber":128,"author":{"gitId":"J-wang-CSMA"},"content":" modelStudentId, modelTags);","lastModifiedDate":"2024-03-18"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"-":116,"J-wang-CSMA":15}},{"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":"J-wang-CSMA"},"content":" private Label phones;","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private Label address;","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":"-"},"content":" private Label studentId;","lastModifiedDate":"2024-02-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2024-02-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10"},{"lineNumber":50,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20"},{"lineNumber":54,"author":{"gitId":"J-wang-CSMA"},"content":" phones.setText(\"Parent 1: \" + person.getParentPhoneOne().value + \", Parent 2: \" + person.getParentPhoneTwo());","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"-"},"content":" address.setText(person.getAddress().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" studentId.setText(person.getStudentId().value);","lastModifiedDate":"2024-02-18"},{"lineNumber":58,"author":{"gitId":"-"},"content":" person.getTags().stream()","lastModifiedDate":"2019-01-02"},{"lineNumber":59,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02"},{"lineNumber":60,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"-":60,"J-wang-CSMA":2}},{"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":"J-wang-CSMA"},"content":" \u003cLabel fx:id\u003d\"phones\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2016-08-08"},{"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":"-"},"content":" \u003cLabel fx:id\u003d\"studentId\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$studentId\" /\u003e","lastModifiedDate":"2024-02-18"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"-":36,"J-wang-CSMA":1}},{"path":"src/test/java/seedu/address/commons/util/StringFormatterTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"J-wang-CSMA"},"content":"package seedu.address.commons.util;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"J-wang-CSMA"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"J-wang-CSMA"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"J-wang-CSMA"},"content":"public class StringFormatterTest {","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"J-wang-CSMA"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"J-wang-CSMA"},"content":" public void capitalizeWords_nullInput_throwsNullPointerException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"J-wang-CSMA"},"content":" assertEquals(null, StringFormatter.capitalizeWords(null));","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"J-wang-CSMA"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"J-wang-CSMA"},"content":" public void capitalizeWords_emptyString_emptyStringReturned() {","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"J-wang-CSMA"},"content":" assertEquals(\"\", StringFormatter.capitalizeWords(\"\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"J-wang-CSMA"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"J-wang-CSMA"},"content":" public void capitalizeWords_onlySpaces_emptyStringReturned() {","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"J-wang-CSMA"},"content":" assertEquals(\"\", StringFormatter.capitalizeWords(\" \"));","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"J-wang-CSMA"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"J-wang-CSMA"},"content":" public void capitalizeWords_singleWord_capitalizedWordReturned() {","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"J-wang-CSMA"},"content":" assertEquals(\"Java\", StringFormatter.capitalizeWords(\"java\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"J-wang-CSMA"},"content":" assertEquals(\"3java\", StringFormatter.capitalizeWords(\"3java\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"J-wang-CSMA"},"content":" assertEquals(\"#java\", StringFormatter.capitalizeWords(\"#java\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"J-wang-CSMA"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"J-wang-CSMA"},"content":" public void capitalizeWords_multipleWords_allWordsCapitalized() {","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"J-wang-CSMA"},"content":" assertEquals(\"Hello World\", StringFormatter.capitalizeWords(\"hello world\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"J-wang-CSMA"},"content":" assertEquals(\"Hello World 3a #home\", StringFormatter.capitalizeWords(\"hello world 3a #home\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"J-wang-CSMA"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"J-wang-CSMA"},"content":" public void capitalizeWords_inputWithExtraSpaces_correctlyCapitalizedWords() {","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"J-wang-CSMA"},"content":" assertEquals(\"Java Is Fun\", StringFormatter.capitalizeWords(\" java is fun \"));","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"J-wang-CSMA"},"content":" assertEquals(\"A B C\", StringFormatter.capitalizeWords(\" a b c \").trim());","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"J-wang-CSMA"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"J-wang-CSMA"},"content":" public void capitalizeWords_mixedCaseInput_correctlyCapitalizedWords() {","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"J-wang-CSMA"},"content":" assertEquals(\"JaVa IS GReAt\", StringFormatter.capitalizeWords(\"JaVa iS gReAt\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"J-wang-CSMA"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"J-wang-CSMA":48}},{"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":"ongzhili"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_STUDENT_ID;","lastModifiedDate":"2024-03-17"},{"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":"J-wang-CSMA"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_ADD_AMY;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.STUDENT_ID_DESC_AMY;","lastModifiedDate":"2024-02-19"},{"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":"-"},"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":"ongzhili"},"content":" String deleteCommand \u003d \"delete 55555\";","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"ongzhili"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_STUDENT_ID);","lastModifiedDate":"2024-03-17"},{"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":"J-wang-CSMA"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_ADD_AMY","lastModifiedDate":"2024-03-18"},{"lineNumber":170,"author":{"gitId":"-"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + STUDENT_ID_DESC_AMY;","lastModifiedDate":"2024-02-19"},{"lineNumber":171,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2023-06-13"},{"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":{"ongzhili":3,"-":171,"J-wang-CSMA":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_ADDRESS;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"J-wang-CSMA"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PARENT_PHONES;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_ID;","lastModifiedDate":"2024-02-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"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":"-"},"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":"2017-06-05"},{"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":"IamZhenHong"},"content":"import seedu.address.model.person.StudentId;","lastModifiedDate":"2024-03-20"},{"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":"J-wang-CSMA"},"content":" public static final String VALID_PHONE_ONE_AMY \u003d \"11111111\";","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"J-wang-CSMA"},"content":" public static final String VALID_PHONE_TWO_AMY \u003d \"22222222\";","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"J-wang-CSMA"},"content":" public static final String VALID_PHONE_ONE_BOB \u003d \"33333333\";","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"J-wang-CSMA"},"content":" public static final String VALID_PHONE_TWO_BOB \u003d \"44444444\";","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":" public static final String VALID_STUDENT_ID_AMY \u003d \"00001\";","lastModifiedDate":"2024-02-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String VALID_STUDENT_ID_BOB \u003d \"00002\";","lastModifiedDate":"2024-02-18"},{"lineNumber":42,"author":{"gitId":"J-wang-CSMA"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"Husband\";","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"J-wang-CSMA"},"content":" public static final String VALID_TAG_FRIEND \u003d \"Friend\";","lastModifiedDate":"2024-03-21"},{"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":"J-wang-CSMA"},"content":" public static final String PHONE_DESC_ADD_AMY \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"J-wang-CSMA"},"content":" \" \" + PREFIX_PARENT_PHONES + VALID_PHONE_ONE_AMY + \", \" + VALID_PHONE_TWO_AMY;","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"J-wang-CSMA"},"content":" public static final String PHONE_DESC_EDIT_AMY \u003d \" \" + PREFIX_PARENT_PHONES + VALID_PHONE_ONE_AMY + \", 2\";","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"J-wang-CSMA"},"content":" public static final String PHONE_DESC_ADD_BOB \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"J-wang-CSMA"},"content":" \" \" + PREFIX_PARENT_PHONES + VALID_PHONE_ONE_BOB + \", \" + VALID_PHONE_TWO_BOB;","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"J-wang-CSMA"},"content":" public static final String PHONE_DESC_EDIT_BOB \u003d \" \" + PREFIX_PARENT_PHONES + VALID_PHONE_ONE_BOB + \", 1\";","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String STUDENT_ID_DESC_AMY \u003d \" \" + PREFIX_STUDENT_ID + VALID_STUDENT_ID_AMY;","lastModifiedDate":"2024-02-18"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String STUDENT_ID_DESC_BOB \u003d \" \" + PREFIX_STUDENT_ID + VALID_STUDENT_ID_BOB;","lastModifiedDate":"2024-02-18"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"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":"J-wang-CSMA"},"content":" public static final String INVALID_PHONE_ADD_DESC \u003d \" \" + PREFIX_PARENT_PHONES + \"911a, \" + \"912a\"; // \u0027a\u0027 not","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"J-wang-CSMA"},"content":" // allowed in","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"J-wang-CSMA"},"content":" // phones","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"J-wang-CSMA"},"content":" public static final String INVALID_PHONE_EDIT_DESC \u003d \" \" + PREFIX_PARENT_PHONES + \"911a, 1\";","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05"},{"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_STUDENT_ID_DESC \u003d \" \" + PREFIX_STUDENT_ID + \"12345678A\";","lastModifiedDate":"2024-02-18"},{"lineNumber":70,"author":{"gitId":"J-wang-CSMA"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"Hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":78,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":79,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":80,"author":{"gitId":"J-wang-CSMA"},"content":" .withPhone(VALID_PHONE_ONE_AMY, \"2\")","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"J-wang-CSMA"},"content":" .withEmail(VALID_EMAIL_AMY)","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"J-wang-CSMA"},"content":" .withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":85,"author":{"gitId":"J-wang-CSMA"},"content":" .withPhone(VALID_PHONE_TWO_BOB, \"1\")","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"J-wang-CSMA"},"content":" .withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"J-wang-CSMA"},"content":" .withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":95,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25"},{"lineNumber":97,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":98,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":99,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":102,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":103,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":107,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25"},{"lineNumber":109,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":110,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":111,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25"},{"lineNumber":112,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":113,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":117,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":118,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":119,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":120,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":121,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25"},{"lineNumber":122,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25"},{"lineNumber":124,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":125,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":126,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":127,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":131,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":133,"author":{"gitId":"IamZhenHong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":134,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":135,"author":{"gitId":"IamZhenHong"},"content":" * Updates {@code model}\u0027s filtered list to show only the person with the given {@code studentId} in the","lastModifiedDate":"2024-03-20"},{"lineNumber":136,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31"},{"lineNumber":137,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":138,"author":{"gitId":"IamZhenHong"},"content":" public static void showPersonWithStudentId(Model model, StudentId studentId) {","lastModifiedDate":"2024-03-20"},{"lineNumber":139,"author":{"gitId":"IamZhenHong"},"content":" boolean personFound \u003d false;","lastModifiedDate":"2024-03-20"},{"lineNumber":140,"author":{"gitId":"IamZhenHong"},"content":" List\u003cPerson\u003e filteredList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-20"},{"lineNumber":141,"author":{"gitId":"IamZhenHong"},"content":" for (Person person : filteredList) {","lastModifiedDate":"2024-03-20"},{"lineNumber":142,"author":{"gitId":"IamZhenHong"},"content":" if (person.getStudentId().equals(studentId)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":143,"author":{"gitId":"IamZhenHong"},"content":" personFound \u003d true;","lastModifiedDate":"2024-03-20"},{"lineNumber":144,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20"},{"lineNumber":145,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20"},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08"},{"lineNumber":147,"author":{"gitId":"IamZhenHong"},"content":" break;","lastModifiedDate":"2024-03-20"},{"lineNumber":148,"author":{"gitId":"IamZhenHong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":150,"author":{"gitId":"IamZhenHong"},"content":" assertTrue(personFound); // Ensure the person with the specified studentId exists","lastModifiedDate":"2024-03-20"},{"lineNumber":151,"author":{"gitId":"IamZhenHong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":155,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"IamZhenHong":13,"-":118,"J-wang-CSMA":24}},{"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":"IamZhenHong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonWithStudentId;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":10,"author":{"gitId":"ongzhili"},"content":"import static seedu.address.testutil.TypicalStudentIds.ID_FIRST_PERSON;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"ongzhili"},"content":"import static seedu.address.testutil.TypicalStudentIds.ID_SECOND_PERSON;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":13,"author":{"gitId":"IamZhenHong"},"content":"import java.util.List;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":22,"author":{"gitId":"ongzhili"},"content":"import seedu.address.model.person.StudentId;","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2018-01-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2017-06-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":34,"author":{"gitId":"IamZhenHong"},"content":" boolean personFound \u003d false;","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"IamZhenHong"},"content":" Person personToDelete \u003d null;","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"IamZhenHong"},"content":" List\u003cPerson\u003e filteredList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"IamZhenHong"},"content":" for (Person person : filteredList) {","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"IamZhenHong"},"content":" if (person.getStudentId().equals(new StudentId(\"00001\"))) {","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"IamZhenHong"},"content":" personFound \u003d true;","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"IamZhenHong"},"content":" personToDelete \u003d person;","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"IamZhenHong"},"content":" break;","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"IamZhenHong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"IamZhenHong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"IamZhenHong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"IamZhenHong"},"content":" assertTrue(personFound); // Ensure the person with the specified studentId exists","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"IamZhenHong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"ongzhili"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(new StudentId(\"00001\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","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":"IamZhenHong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":60,"author":{"gitId":"ongzhili"},"content":" public void execute_invalidStudentIdUnfilteredList_throwsCommandException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"ongzhili"},"content":" StudentId invalidId \u003d new StudentId(\"99999\");","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"ongzhili"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(invalidId);","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":64,"author":{"gitId":"ongzhili"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_STUDENT_ID);","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":68,"author":{"gitId":"ongzhili"},"content":" public void execute_validStudentIdFilteredList_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"IamZhenHong"},"content":" showPersonWithStudentId(model, ID_FIRST_PERSON);","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"IamZhenHong"},"content":" boolean personFound \u003d false;","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"IamZhenHong"},"content":" Person personToDelete \u003d null;","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"IamZhenHong"},"content":" List\u003cPerson\u003e filteredList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"IamZhenHong"},"content":" for (Person person : filteredList) {","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"IamZhenHong"},"content":" if (person.getStudentId().equals(new StudentId(\"00001\"))) {","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"IamZhenHong"},"content":" personFound \u003d true;","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"IamZhenHong"},"content":" personToDelete \u003d person;","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"IamZhenHong"},"content":" break;","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"IamZhenHong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"IamZhenHong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"IamZhenHong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"IamZhenHong"},"content":" assertTrue(personFound); // Ensure the person with the specified studentId exists","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":84,"author":{"gitId":"ongzhili"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(new StudentId(\"00001\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":89,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05"},{"lineNumber":91,"author":{"gitId":"-"},"content":" showNoPerson(expectedModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":96,"author":{"gitId":"IamZhenHong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":98,"author":{"gitId":"ongzhili"},"content":" public void execute_invalidStudentIdFilteredList_throwsCommandException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"IamZhenHong"},"content":" showPersonWithStudentId(model, ID_FIRST_PERSON);","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":101,"author":{"gitId":"ongzhili"},"content":" StudentId invalidId \u003d new StudentId(\"99999\");","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":103,"author":{"gitId":"ongzhili"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(invalidId);","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":105,"author":{"gitId":"ongzhili"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_STUDENT_ID);","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":110,"author":{"gitId":"ongzhili"},"content":" DeleteCommand deleteFirstCommand \u003d new DeleteCommand(ID_FIRST_PERSON);","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"ongzhili"},"content":" DeleteCommand deleteSecondCommand \u003d new DeleteCommand(ID_SECOND_PERSON);","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":113,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":116,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":117,"author":{"gitId":"ongzhili"},"content":" DeleteCommand deleteFirstCommandCopy \u003d new DeleteCommand(ID_FIRST_PERSON);","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":120,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":123,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":126,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":130,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":132,"author":{"gitId":"ongzhili"},"content":" StudentId targetId \u003d new StudentId(\"00001\");","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"ongzhili"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(targetId);","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"ongzhili"},"content":" String expected \u003d DeleteCommand.class.getCanonicalName() + \"{targetId\u003d\" + targetId + \"}\";","lastModifiedDate":"2024-03-17"},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertEquals(expected, deleteCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":139,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05"},{"lineNumber":140,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":141,"author":{"gitId":"-"},"content":" private void showNoPerson(Model model) {","lastModifiedDate":"2017-06-05"},{"lineNumber":142,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2017-06-12"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":144,"author":{"gitId":"-"},"content":" assertTrue(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2018-02-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":146,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"IamZhenHong":31,"ongzhili":20,"-":95}},{"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":"IamZhenHong"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2024-03-20"},{"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.DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_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":"J-wang-CSMA"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_ONE_BOB;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"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":"IamZhenHong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonWithStudentId;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":16,"author":{"gitId":"IamZhenHong"},"content":"import static seedu.address.testutil.TypicalStudentIds.ID_FIRST_PERSON;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"IamZhenHong"},"content":"import static seedu.address.testutil.TypicalStudentIds.ID_SECOND_PERSON;","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":19,"author":{"gitId":"IamZhenHong"},"content":"import java.util.List;","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"J-wang-CSMA"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"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":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-04"},{"lineNumber":31,"author":{"gitId":"J-wang-CSMA"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"IamZhenHong"},"content":"import seedu.address.model.person.StudentId;","lastModifiedDate":"2024-03-20"},{"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":"IamZhenHong"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"IamZhenHong"},"content":" * EditCommand.","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"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":"IamZhenHong"},"content":" EditCommand editCommand \u003d new EditCommand(ID_FIRST_PERSON, descriptor);","lastModifiedDate":"2024-03-20"},{"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":"IamZhenHong"},"content":" Person firstPerson \u003d null;","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"IamZhenHong"},"content":" List\u003cPerson\u003e filteredList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"IamZhenHong"},"content":" for (Person person : filteredList) {","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"IamZhenHong"},"content":" if (person.getStudentId().equals(ID_FIRST_PERSON)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"IamZhenHong"},"content":" firstPerson \u003d person;","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"IamZhenHong"},"content":" break;","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"IamZhenHong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"IamZhenHong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":69,"author":{"gitId":"IamZhenHong"},"content":" assertNotNull(firstPerson); // Ensure the person with ID_FIRST_PERSON exists","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"IamZhenHong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"IamZhenHong"},"content":" PersonBuilder personInList \u003d new PersonBuilder(firstPerson);","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"J-wang-CSMA"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"J-wang-CSMA"},"content":" .withSecondParentPhone(VALID_PHONE_ONE_BOB)","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":76,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-05-18"},{"lineNumber":77,"author":{"gitId":"J-wang-CSMA"},"content":" .withPhone(VALID_PHONE_ONE_BOB, \"2\")","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"J-wang-CSMA"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"IamZhenHong"},"content":" EditCommand editCommand \u003d new EditCommand(ID_FIRST_PERSON, descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"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":"IamZhenHong"},"content":" expectedModel.setPerson(firstPerson, editedPerson);","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":91,"author":{"gitId":"IamZhenHong"},"content":" Person editedPerson \u003d null;","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"IamZhenHong"},"content":" List\u003cPerson\u003e filteredList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"IamZhenHong"},"content":" for (Person person : filteredList) {","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"IamZhenHong"},"content":" if (person.getStudentId().equals(ID_FIRST_PERSON)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"IamZhenHong"},"content":" editedPerson \u003d person;","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"IamZhenHong"},"content":" break;","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"IamZhenHong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"IamZhenHong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":99,"author":{"gitId":"IamZhenHong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"IamZhenHong"},"content":" assertNotNull(editedPerson); // Ensure the person with ID_FIRST_PERSON exists","lastModifiedDate":"2024-03-20"},{"lineNumber":101,"author":{"gitId":"IamZhenHong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":102,"author":{"gitId":"IamZhenHong"},"content":" EditCommand editCommand \u003d new EditCommand(ID_FIRST_PERSON, new EditPersonDescriptor());","lastModifiedDate":"2024-03-20"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"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_filteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":113,"author":{"gitId":"IamZhenHong"},"content":" // Show only the person with the specified student ID in the filtered list","lastModifiedDate":"2024-03-20"},{"lineNumber":114,"author":{"gitId":"IamZhenHong"},"content":" showPersonWithStudentId(model, ID_FIRST_PERSON);","lastModifiedDate":"2024-03-20"},{"lineNumber":115,"author":{"gitId":"IamZhenHong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":116,"author":{"gitId":"IamZhenHong"},"content":" // Retrieve the person from the filtered list using the specified student ID","lastModifiedDate":"2024-03-20"},{"lineNumber":117,"author":{"gitId":"IamZhenHong"},"content":" boolean personFound \u003d false;","lastModifiedDate":"2024-03-20"},{"lineNumber":118,"author":{"gitId":"IamZhenHong"},"content":" Person personInFilteredList \u003d null;","lastModifiedDate":"2024-03-20"},{"lineNumber":119,"author":{"gitId":"IamZhenHong"},"content":" List\u003cPerson\u003e filteredList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-20"},{"lineNumber":120,"author":{"gitId":"IamZhenHong"},"content":" for (Person person : filteredList) {","lastModifiedDate":"2024-03-20"},{"lineNumber":121,"author":{"gitId":"IamZhenHong"},"content":" if (person.getStudentId().equals(ID_FIRST_PERSON)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":122,"author":{"gitId":"IamZhenHong"},"content":" personInFilteredList \u003d person;","lastModifiedDate":"2024-03-20"},{"lineNumber":123,"author":{"gitId":"IamZhenHong"},"content":" personFound \u003d true;","lastModifiedDate":"2024-03-20"},{"lineNumber":124,"author":{"gitId":"IamZhenHong"},"content":" break;","lastModifiedDate":"2024-03-20"},{"lineNumber":125,"author":{"gitId":"IamZhenHong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":126,"author":{"gitId":"IamZhenHong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":127,"author":{"gitId":"IamZhenHong"},"content":" assertTrue(personFound); // Ensure the person with the specified student ID exists","lastModifiedDate":"2024-03-20"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":129,"author":{"gitId":"IamZhenHong"},"content":" // Edit the person\u0027s name","lastModifiedDate":"2024-03-20"},{"lineNumber":130,"author":{"gitId":"IamZhenHong"},"content":" Person editedPerson \u003d new PersonBuilder(personInFilteredList)","lastModifiedDate":"2024-03-20"},{"lineNumber":131,"author":{"gitId":"IamZhenHong"},"content":" .withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-20"},{"lineNumber":132,"author":{"gitId":"IamZhenHong"},"content":" .build();","lastModifiedDate":"2024-03-20"},{"lineNumber":133,"author":{"gitId":"IamZhenHong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":134,"author":{"gitId":"IamZhenHong"},"content":" // Create the edit command","lastModifiedDate":"2024-03-20"},{"lineNumber":135,"author":{"gitId":"IamZhenHong"},"content":" EditCommand editCommand \u003d new EditCommand(ID_FIRST_PERSON,","lastModifiedDate":"2024-03-20"},{"lineNumber":136,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":138,"author":{"gitId":"IamZhenHong"},"content":" // Define the expected message after executing the edit command","lastModifiedDate":"2024-03-20"},{"lineNumber":139,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":141,"author":{"gitId":"IamZhenHong"},"content":" // Create the expected model after executing the edit command","lastModifiedDate":"2024-03-20"},{"lineNumber":142,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":143,"author":{"gitId":"IamZhenHong"},"content":" expectedModel.setPerson(personInFilteredList, editedPerson);","lastModifiedDate":"2024-03-20"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":145,"author":{"gitId":"IamZhenHong"},"content":" // Assert the success of the command execution","lastModifiedDate":"2024-03-20"},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":149,"author":{"gitId":"IamZhenHong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":150,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":151,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":152,"author":{"gitId":"IamZhenHong"},"content":" // Retrieve the first person from the unfiltered list using the specified student ID","lastModifiedDate":"2024-03-20"},{"lineNumber":153,"author":{"gitId":"IamZhenHong"},"content":" Person firstPerson \u003d null;","lastModifiedDate":"2024-03-20"},{"lineNumber":154,"author":{"gitId":"IamZhenHong"},"content":" List\u003cPerson\u003e unfilteredList \u003d model.getAddressBook().getPersonList();","lastModifiedDate":"2024-03-20"},{"lineNumber":155,"author":{"gitId":"IamZhenHong"},"content":" for (Person person : unfilteredList) {","lastModifiedDate":"2024-03-20"},{"lineNumber":156,"author":{"gitId":"IamZhenHong"},"content":" if (person.getStudentId().equals(ID_FIRST_PERSON)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":157,"author":{"gitId":"IamZhenHong"},"content":" firstPerson \u003d person;","lastModifiedDate":"2024-03-20"},{"lineNumber":158,"author":{"gitId":"IamZhenHong"},"content":" break;","lastModifiedDate":"2024-03-20"},{"lineNumber":159,"author":{"gitId":"IamZhenHong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":160,"author":{"gitId":"IamZhenHong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":161,"author":{"gitId":"IamZhenHong"},"content":" assertNotNull(firstPerson); // Ensure the person with the specified student ID exists","lastModifiedDate":"2024-03-20"},{"lineNumber":162,"author":{"gitId":"IamZhenHong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":163,"author":{"gitId":"IamZhenHong"},"content":" // Create the edit command with the student ID of the second person and the descriptor of the first person","lastModifiedDate":"2024-03-20"},{"lineNumber":164,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05"},{"lineNumber":165,"author":{"gitId":"IamZhenHong"},"content":" EditCommand editCommand \u003d new EditCommand(new StudentId(\"00002\"), descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":167,"author":{"gitId":"IamZhenHong"},"content":" // Assert that executing this command results in failure with the expected error message","lastModifiedDate":"2024-03-20"},{"lineNumber":168,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":171,"author":{"gitId":"IamZhenHong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":172,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":173,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":174,"author":{"gitId":"IamZhenHong"},"content":" showPersonWithStudentId(model, ID_FIRST_PERSON);","lastModifiedDate":"2024-03-20"},{"lineNumber":175,"author":{"gitId":"IamZhenHong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":176,"author":{"gitId":"IamZhenHong"},"content":" // Retrieve the person from the filtered list using the specified student ID","lastModifiedDate":"2024-03-20"},{"lineNumber":177,"author":{"gitId":"IamZhenHong"},"content":" boolean personFound \u003d false;","lastModifiedDate":"2024-03-20"},{"lineNumber":178,"author":{"gitId":"IamZhenHong"},"content":" Person personInList \u003d null;","lastModifiedDate":"2024-03-20"},{"lineNumber":179,"author":{"gitId":"IamZhenHong"},"content":" List\u003cPerson\u003e unfilteredList \u003d model.getAddressBook().getPersonList();","lastModifiedDate":"2024-03-20"},{"lineNumber":180,"author":{"gitId":"IamZhenHong"},"content":" for (Person person : unfilteredList) {","lastModifiedDate":"2024-03-20"},{"lineNumber":181,"author":{"gitId":"IamZhenHong"},"content":" if (person.getStudentId().equals(ID_SECOND_PERSON)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":182,"author":{"gitId":"IamZhenHong"},"content":" personInList \u003d person;","lastModifiedDate":"2024-03-20"},{"lineNumber":183,"author":{"gitId":"IamZhenHong"},"content":" personFound \u003d true;","lastModifiedDate":"2024-03-20"},{"lineNumber":184,"author":{"gitId":"IamZhenHong"},"content":" break;","lastModifiedDate":"2024-03-20"},{"lineNumber":185,"author":{"gitId":"IamZhenHong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":186,"author":{"gitId":"IamZhenHong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":187,"author":{"gitId":"IamZhenHong"},"content":" assertTrue(personFound); // Ensure the person with the specified student ID exists","lastModifiedDate":"2024-03-20"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":189,"author":{"gitId":"IamZhenHong"},"content":" // Create the edit command with the student ID of the first person and the descriptor of the second person","lastModifiedDate":"2024-03-20"},{"lineNumber":190,"author":{"gitId":"IamZhenHong"},"content":" EditCommand editCommand \u003d new EditCommand(ID_FIRST_PERSON,","lastModifiedDate":"2024-03-20"},{"lineNumber":191,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":192,"author":{"gitId":"IamZhenHong"},"content":" System.out.println(EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2024-03-20"},{"lineNumber":193,"author":{"gitId":"IamZhenHong"},"content":" System.out.println(editCommand);","lastModifiedDate":"2024-03-20"},{"lineNumber":194,"author":{"gitId":"IamZhenHong"},"content":" // Assert that executing this command results in failure with the expected error message","lastModifiedDate":"2024-03-20"},{"lineNumber":195,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":198,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":199,"author":{"gitId":"IamZhenHong"},"content":" public void execute_invalidStudentIdUnfilteredList_failure() {","lastModifiedDate":"2024-03-20"},{"lineNumber":200,"author":{"gitId":"IamZhenHong"},"content":" // Create the edit command with an invalid student ID","lastModifiedDate":"2024-03-20"},{"lineNumber":201,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":202,"author":{"gitId":"IamZhenHong"},"content":" EditCommand editCommand \u003d new EditCommand(new StudentId(\"99999\"), descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":204,"author":{"gitId":"IamZhenHong"},"content":" // Assert that executing this command results in failure with the expected error message","lastModifiedDate":"2024-03-20"},{"lineNumber":205,"author":{"gitId":"IamZhenHong"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_STUDENT_ID);","lastModifiedDate":"2024-03-20"},{"lineNumber":206,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":210,"author":{"gitId":"IamZhenHong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":212,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":214,"author":{"gitId":"IamZhenHong"},"content":" final EditCommand standardCommand \u003d new EditCommand(ID_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2024-03-20"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":216,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":217,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08"},{"lineNumber":218,"author":{"gitId":"IamZhenHong"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(ID_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":219,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":221,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":222,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":224,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":225,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":227,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":228,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":230,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":231,"author":{"gitId":"IamZhenHong"},"content":" assertFalse(standardCommand.equals(new EditCommand(ID_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2024-03-20"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":233,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":234,"author":{"gitId":"IamZhenHong"},"content":" assertFalse(standardCommand.equals(new EditCommand(ID_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2024-03-20"},{"lineNumber":235,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":237,"author":{"gitId":"IamZhenHong"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":238,"author":{"gitId":"IamZhenHong"},"content":" public void getEditedPhone_bothPhonesNull_returnsEmpty() {","lastModifiedDate":"2024-03-20"},{"lineNumber":239,"author":{"gitId":"IamZhenHong"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2024-03-20"},{"lineNumber":240,"author":{"gitId":"IamZhenHong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":241,"author":{"gitId":"IamZhenHong"},"content":" Optional\u003cPhone\u003e result \u003d descriptor.getEditedPhone();","lastModifiedDate":"2024-03-20"},{"lineNumber":242,"author":{"gitId":"IamZhenHong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":243,"author":{"gitId":"IamZhenHong"},"content":" assertFalse(result.isPresent());","lastModifiedDate":"2024-03-20"},{"lineNumber":244,"author":{"gitId":"IamZhenHong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":245,"author":{"gitId":"IamZhenHong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":246,"author":{"gitId":"J-wang-CSMA"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":247,"author":{"gitId":"J-wang-CSMA"},"content":" public void getEditedPhone_firstParentPhoneNotNull_returnsFirstParentPhone() {","lastModifiedDate":"2024-03-18"},{"lineNumber":248,"author":{"gitId":"J-wang-CSMA"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2024-03-18"},{"lineNumber":249,"author":{"gitId":"J-wang-CSMA"},"content":" Phone expectedPhone \u003d new Phone(\"12345678\");","lastModifiedDate":"2024-03-18"},{"lineNumber":250,"author":{"gitId":"J-wang-CSMA"},"content":" descriptor.setFirstParentPhone(expectedPhone);","lastModifiedDate":"2024-03-18"},{"lineNumber":251,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":252,"author":{"gitId":"J-wang-CSMA"},"content":" Optional\u003cPhone\u003e result \u003d descriptor.getEditedPhone();","lastModifiedDate":"2024-03-18"},{"lineNumber":253,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":254,"author":{"gitId":"J-wang-CSMA"},"content":" assertTrue(result.isPresent());","lastModifiedDate":"2024-03-18"},{"lineNumber":255,"author":{"gitId":"J-wang-CSMA"},"content":" assertEquals(expectedPhone, result.get());","lastModifiedDate":"2024-03-18"},{"lineNumber":256,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":257,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":258,"author":{"gitId":"J-wang-CSMA"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":259,"author":{"gitId":"J-wang-CSMA"},"content":" public void getEditedPhone_firstParentPhoneNull_returnsSecondParentPhone() {","lastModifiedDate":"2024-03-18"},{"lineNumber":260,"author":{"gitId":"J-wang-CSMA"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2024-03-18"},{"lineNumber":261,"author":{"gitId":"J-wang-CSMA"},"content":" Phone expectedPhone \u003d new Phone(\"87654321\");","lastModifiedDate":"2024-03-18"},{"lineNumber":262,"author":{"gitId":"J-wang-CSMA"},"content":" descriptor.setSecondParentPhone(expectedPhone);","lastModifiedDate":"2024-03-18"},{"lineNumber":263,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":264,"author":{"gitId":"J-wang-CSMA"},"content":" Optional\u003cPhone\u003e result \u003d descriptor.getEditedPhone();","lastModifiedDate":"2024-03-18"},{"lineNumber":265,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":266,"author":{"gitId":"J-wang-CSMA"},"content":" assertTrue(result.isPresent());","lastModifiedDate":"2024-03-18"},{"lineNumber":267,"author":{"gitId":"J-wang-CSMA"},"content":" assertEquals(expectedPhone, result.get());","lastModifiedDate":"2024-03-18"},{"lineNumber":268,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":269,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":270,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":272,"author":{"gitId":"IamZhenHong"},"content":" StudentId targetId \u003d new StudentId(\"00001\");","lastModifiedDate":"2024-03-20"},{"lineNumber":273,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":274,"author":{"gitId":"J-wang-CSMA"},"content":" // Case 1: firstParentPhone is not null","lastModifiedDate":"2024-03-18"},{"lineNumber":275,"author":{"gitId":"J-wang-CSMA"},"content":" EditPersonDescriptor descriptorWithFirstParentPhone \u003d new EditPersonDescriptor();","lastModifiedDate":"2024-03-18"},{"lineNumber":276,"author":{"gitId":"J-wang-CSMA"},"content":" Phone firstParentPhone \u003d new Phone(\"12345678\");","lastModifiedDate":"2024-03-18"},{"lineNumber":277,"author":{"gitId":"J-wang-CSMA"},"content":" descriptorWithFirstParentPhone.setFirstParentPhone(firstParentPhone);","lastModifiedDate":"2024-03-18"},{"lineNumber":278,"author":{"gitId":"IamZhenHong"},"content":" EditCommand editCommandWithFirstParentPhone \u003d new EditCommand(targetId, descriptorWithFirstParentPhone);","lastModifiedDate":"2024-03-20"},{"lineNumber":279,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":280,"author":{"gitId":"IamZhenHong"},"content":" String expectedWithFirstParentPhone \u003d \"seedu.address.logic.commands.EditCommand{studentId\u003d\"","lastModifiedDate":"2024-03-20"},{"lineNumber":281,"author":{"gitId":"IamZhenHong"},"content":" + targetId","lastModifiedDate":"2024-03-20"},{"lineNumber":282,"author":{"gitId":"J-wang-CSMA"},"content":" + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2024-03-18"},{"lineNumber":283,"author":{"gitId":"J-wang-CSMA"},"content":" + descriptorWithFirstParentPhone","lastModifiedDate":"2024-03-18"},{"lineNumber":284,"author":{"gitId":"J-wang-CSMA"},"content":" + \"}\";","lastModifiedDate":"2024-03-18"},{"lineNumber":285,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":286,"author":{"gitId":"J-wang-CSMA"},"content":" assertEquals(expectedWithFirstParentPhone, editCommandWithFirstParentPhone.toString());","lastModifiedDate":"2024-03-18"},{"lineNumber":287,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":288,"author":{"gitId":"J-wang-CSMA"},"content":" // Case 2: firstParentPhone is null, secondParentPhone is not null","lastModifiedDate":"2024-03-18"},{"lineNumber":289,"author":{"gitId":"J-wang-CSMA"},"content":" EditPersonDescriptor descriptorWithSecondParentPhone \u003d new EditPersonDescriptor();","lastModifiedDate":"2024-03-18"},{"lineNumber":290,"author":{"gitId":"J-wang-CSMA"},"content":" Phone secondParentPhone \u003d new Phone(\"87654321\");","lastModifiedDate":"2024-03-18"},{"lineNumber":291,"author":{"gitId":"J-wang-CSMA"},"content":" descriptorWithSecondParentPhone.setSecondParentPhone(secondParentPhone);","lastModifiedDate":"2024-03-18"},{"lineNumber":292,"author":{"gitId":"IamZhenHong"},"content":" EditCommand editCommandWithSecondParentPhone \u003d new EditCommand(targetId, descriptorWithSecondParentPhone);","lastModifiedDate":"2024-03-20"},{"lineNumber":293,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":294,"author":{"gitId":"IamZhenHong"},"content":" String expectedWithSecondParentPhone \u003d \"seedu.address.logic.commands.EditCommand{studentId\u003d\"","lastModifiedDate":"2024-03-20"},{"lineNumber":295,"author":{"gitId":"IamZhenHong"},"content":" + targetId","lastModifiedDate":"2024-03-20"},{"lineNumber":296,"author":{"gitId":"J-wang-CSMA"},"content":" + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2024-03-18"},{"lineNumber":297,"author":{"gitId":"J-wang-CSMA"},"content":" + descriptorWithSecondParentPhone","lastModifiedDate":"2024-03-18"},{"lineNumber":298,"author":{"gitId":"J-wang-CSMA"},"content":" + \"}\";","lastModifiedDate":"2024-03-18"},{"lineNumber":299,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":300,"author":{"gitId":"J-wang-CSMA"},"content":" assertEquals(expectedWithSecondParentPhone, editCommandWithSecondParentPhone.toString());","lastModifiedDate":"2024-03-18"},{"lineNumber":301,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":302,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":303,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08"}],"authorContributionMap":{"IamZhenHong":121,"-":131,"J-wang-CSMA":51}},{"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":"J-wang-CSMA"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_ONE_BOB;","lastModifiedDate":"2024-03-18"},{"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":"J-wang-CSMA"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_ONE_BOB, \"2\").build();","lastModifiedDate":"2024-03-18"},{"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":"J-wang-CSMA"},"content":" String expected;","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"J-wang-CSMA"},"content":" if (editPersonDescriptor.getFirstParentPhone().isPresent()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"J-wang-CSMA"},"content":" expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"J-wang-CSMA"},"content":" + editPersonDescriptor.getName().orElse(null) + \", edited phone\u003d\"","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"J-wang-CSMA"},"content":" + editPersonDescriptor.getFirstParentPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", address\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getAddress().orElse(null) + \", student id\u003d\"","lastModifiedDate":"2024-02-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getStudentId().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2024-02-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getTags().orElse(null) + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"J-wang-CSMA"},"content":" } else {","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"J-wang-CSMA"},"content":" expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"J-wang-CSMA"},"content":" + editPersonDescriptor.getName().orElse(null) + \", edited phone\u003d\"","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"J-wang-CSMA"},"content":" + editPersonDescriptor.getSecondParentPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"J-wang-CSMA"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", address\u003d\"","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"J-wang-CSMA"},"content":" + editPersonDescriptor.getAddress().orElse(null) + \", student id\u003d\"","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"J-wang-CSMA"},"content":" + editPersonDescriptor.getStudentId().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"J-wang-CSMA"},"content":" + editPersonDescriptor.getTags().orElse(null) + \"}\";","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"-":67,"J-wang-CSMA":18}},{"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":"IamZhenHong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonWithStudentId;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":6,"author":{"gitId":"IamZhenHong"},"content":"import static seedu.address.testutil.TypicalStudentIds.ID_FIRST_PERSON;","lastModifiedDate":"2024-03-20"},{"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":"IamZhenHong"},"content":" showPersonWithStudentId(model, ID_FIRST_PERSON);","lastModifiedDate":"2024-03-20"},{"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":{"IamZhenHong":3,"-":36}},{"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":"J-wang-CSMA"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_ADD_DESC;","lastModifiedDate":"2024-03-18"},{"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":"J-wang-CSMA"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_ADD_AMY;","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"J-wang-CSMA"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_ADD_BOB;","lastModifiedDate":"2024-03-18"},{"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.STUDENT_ID_DESC_AMY;","lastModifiedDate":"2024-02-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.STUDENT_ID_DESC_BOB;","lastModifiedDate":"2024-02-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":26,"author":{"gitId":"J-wang-CSMA"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_ONE_BOB;","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"J-wang-CSMA"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_TWO_BOB;","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"J-wang-CSMA"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PARENT_PHONES;","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25"},{"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":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-06-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-06-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15"},{"lineNumber":49,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":51,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2018-07-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":59,"author":{"gitId":"J-wang-CSMA"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_ADD_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + STUDENT_ID_DESC_BOB + TAG_DESC_FRIEND, new AddCommand(expectedPerson));","lastModifiedDate":"2024-02-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":62,"author":{"gitId":"wallacexuhanxiao"},"content":" //with one parent phone","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"wallacexuhanxiao"},"content":" Person singleParent \u003d new PersonBuilder(BOB).withFirstParentPhone(\"12345678\")","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"wallacexuhanxiao"},"content":" .withSecondParentPhone(\"12345678\").build();","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"wallacexuhanxiao"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + \" p/12345678\" + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"wallacexuhanxiao"},"content":" + ADDRESS_DESC_BOB + STUDENT_ID_DESC_BOB + TAG_DESC_FRIEND","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"wallacexuhanxiao"},"content":" + TAG_DESC_HUSBAND, new AddCommand(singleParent));","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15"},{"lineNumber":70,"author":{"gitId":"-"},"content":" Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND)","lastModifiedDate":"2018-07-25"},{"lineNumber":71,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":73,"author":{"gitId":"J-wang-CSMA"},"content":" NAME_DESC_BOB + PHONE_DESC_ADD_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB + STUDENT_ID_DESC_BOB","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2024-02-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":" new AddCommand(expectedPersonMultipleTags));","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":"-"},"content":" @Test","lastModifiedDate":"2023-07-14"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":80,"author":{"gitId":"J-wang-CSMA"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_ADD_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + STUDENT_ID_DESC_BOB + TAG_DESC_FRIEND;","lastModifiedDate":"2024-02-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":83,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14"},{"lineNumber":88,"author":{"gitId":"J-wang-CSMA"},"content":" assertParseFailure(parser, PHONE_DESC_ADD_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"J-wang-CSMA"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PARENT_PHONES));","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":99,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":101,"author":{"gitId":"J-wang-CSMA"},"content":" validExpectedPersonString + PHONE_DESC_ADD_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2024-03-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" + STUDENT_ID_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-02-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_ADDRESS,","lastModifiedDate":"2024-02-18"},{"lineNumber":104,"author":{"gitId":"J-wang-CSMA"},"content":" PREFIX_EMAIL, PREFIX_PARENT_PHONES));","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":110,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":112,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":117,"author":{"gitId":"J-wang-CSMA"},"content":" assertParseFailure(parser, INVALID_PHONE_ADD_DESC + validExpectedPersonString,","lastModifiedDate":"2024-03-18"},{"lineNumber":118,"author":{"gitId":"J-wang-CSMA"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PARENT_PHONES));","lastModifiedDate":"2024-03-18"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":130,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":132,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":135,"author":{"gitId":"J-wang-CSMA"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_ADD_DESC,","lastModifiedDate":"2024-03-18"},{"lineNumber":136,"author":{"gitId":"J-wang-CSMA"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PARENT_PHONES));","lastModifiedDate":"2024-03-18"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":138,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":140,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":144,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":145,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15"},{"lineNumber":146,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2018-07-25"},{"lineNumber":147,"author":{"gitId":"J-wang-CSMA"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_ADD_AMY + EMAIL_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2024-03-18"},{"lineNumber":148,"author":{"gitId":"-"},"content":" + STUDENT_ID_DESC_AMY, new AddCommand(expectedPerson));","lastModifiedDate":"2024-02-19"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":151,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":152,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":153,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":155,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":156,"author":{"gitId":"J-wang-CSMA"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_ADD_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-03-18"},{"lineNumber":157,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":159,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":160,"author":{"gitId":"J-wang-CSMA"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-18"},{"lineNumber":161,"author":{"gitId":"J-wang-CSMA"},"content":" NAME_DESC_BOB + VALID_PHONE_ONE_BOB + \", \" + VALID_PHONE_TWO_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-03-18"},{"lineNumber":162,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":164,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":165,"author":{"gitId":"J-wang-CSMA"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_ADD_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-03-18"},{"lineNumber":166,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":168,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":169,"author":{"gitId":"J-wang-CSMA"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_ADD_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2024-03-18"},{"lineNumber":170,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":172,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15"},{"lineNumber":173,"author":{"gitId":"J-wang-CSMA"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-18"},{"lineNumber":174,"author":{"gitId":"J-wang-CSMA"},"content":" VALID_NAME_BOB + VALID_PHONE_ONE_BOB + \", \" + VALID_PHONE_TWO_BOB + VALID_EMAIL_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2024-03-18"},{"lineNumber":175,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":178,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":179,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":180,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":181,"author":{"gitId":"J-wang-CSMA"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_ADD_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-18"},{"lineNumber":182,"author":{"gitId":"-"},"content":" + STUDENT_ID_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-19"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":184,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15"},{"lineNumber":185,"author":{"gitId":"J-wang-CSMA"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_ADD_DESC + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-18"},{"lineNumber":186,"author":{"gitId":"-"},"content":" + STUDENT_ID_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-19"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":188,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15"},{"lineNumber":189,"author":{"gitId":"J-wang-CSMA"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_ADD_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-18"},{"lineNumber":190,"author":{"gitId":"-"},"content":" + STUDENT_ID_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-19"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":192,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15"},{"lineNumber":193,"author":{"gitId":"J-wang-CSMA"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_ADD_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2024-03-18"},{"lineNumber":194,"author":{"gitId":"-"},"content":" + STUDENT_ID_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-19"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":196,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15"},{"lineNumber":197,"author":{"gitId":"J-wang-CSMA"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_ADD_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-18"},{"lineNumber":198,"author":{"gitId":"-"},"content":" + STUDENT_ID_DESC_BOB + INVALID_TAG_DESC + VALID_TAG_FRIEND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-19"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":200,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":201,"author":{"gitId":"J-wang-CSMA"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_ADD_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2024-03-18"},{"lineNumber":202,"author":{"gitId":"-"},"content":" + STUDENT_ID_DESC_BOB, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-19"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":205,"author":{"gitId":"J-wang-CSMA"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_ADD_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-18"},{"lineNumber":206,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + STUDENT_ID_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2024-02-19"},{"lineNumber":207,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":209,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"wallacexuhanxiao":6,"-":171,"J-wang-CSMA":32}},{"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":"IamZhenHong"},"content":"import static seedu.address.testutil.TypicalStudentIds.ID_FIRST_PERSON;","lastModifiedDate":"2024-03-20"},{"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":"-"},"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":"ongzhili"},"content":"import seedu.address.model.person.StudentId;","lastModifiedDate":"2024-03-17"},{"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":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"ongzhili"},"content":" DeleteCommand.COMMAND_WORD + \" \" + \"00001\");","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"ongzhili"},"content":" assertEquals(new DeleteCommand(new StudentId(\"00001\")), command);","lastModifiedDate":"2024-03-17"},{"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_edit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27"},{"lineNumber":61,"author":{"gitId":"J-wang-CSMA"},"content":" System.out.println(PersonUtil.getEditPersonDescriptorDetails(descriptor).toString());","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27"},{"lineNumber":63,"author":{"gitId":"IamZhenHong"},"content":" + ID_FIRST_PERSON + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"IamZhenHong"},"content":" assertEquals(new EditCommand(ID_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","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_find() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":77,"author":{"gitId":"wallacexuhanxiao"},"content":" FindCommand.COMMAND_WORD + \" \" + \"1 \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2024-03-10"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"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_list() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","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_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23"},{"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_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"IamZhenHong":3,"ongzhili":3,"wallacexuhanxiao":1,"-":95,"J-wang-CSMA":1}},{"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":"ongzhili"},"content":"import static seedu.address.testutil.TypicalStudentIds.ID_FIRST_PERSON;","lastModifiedDate":"2024-03-17"},{"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":"ongzhili"},"content":" assertParseSuccess(parser, \"00001\", new DeleteCommand(ID_FIRST_PERSON));","lastModifiedDate":"2024-03-17"},{"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":{"ongzhili":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":"J-wang-CSMA"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_EDIT_DESC;","lastModifiedDate":"2024-03-18"},{"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":"J-wang-CSMA"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_EDIT_AMY;","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"J-wang-CSMA"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_EDIT_BOB;","lastModifiedDate":"2024-03-18"},{"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":"J-wang-CSMA"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_ONE_AMY;","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"J-wang-CSMA"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_ONE_BOB;","lastModifiedDate":"2024-03-18"},{"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":"J-wang-CSMA"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PARENT_PHONES;","lastModifiedDate":"2024-03-18"},{"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":"IamZhenHong"},"content":"import static seedu.address.testutil.TypicalStudentIds.ID_SECOND_PERSON;","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-04"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-04"},{"lineNumber":42,"author":{"gitId":"IamZhenHong"},"content":"import seedu.address.model.person.StudentId;","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":46,"author":{"gitId":"IamZhenHong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":49,"author":{"gitId":"-"},"content":" private static final String TAG_EMPTY \u003d \" \" + PREFIX_TAG;","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":61,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":62,"author":{"gitId":"IamZhenHong"},"content":" assertParseFailure(parser, \"00001\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":64,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":77,"author":{"gitId":"IamZhenHong"},"content":" assertParseFailure(parser, \"00001 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":80,"author":{"gitId":"IamZhenHong"},"content":" assertParseFailure(parser, \"00001 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":85,"author":{"gitId":"IamZhenHong"},"content":" assertParseFailure(parser, \"00001\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"IamZhenHong"},"content":" assertParseFailure(parser, \"00001\" + INVALID_PHONE_EDIT_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"IamZhenHong"},"content":" assertParseFailure(parser, \"00001\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"IamZhenHong"},"content":" assertParseFailure(parser, \"00001\" + INVALID_ADDRESS_DESC, Address.MESSAGE_CONSTRAINTS); // invalid address","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"IamZhenHong"},"content":" assertParseFailure(parser, \"00001\" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":91,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04"},{"lineNumber":92,"author":{"gitId":"IamZhenHong"},"content":" assertParseFailure(parser, \"00001\" + INVALID_PHONE_EDIT_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":94,"author":{"gitId":"-"},"content":" // while parsing {@code PREFIX_TAG} alone will reset the tags of the {@code Person} being edited,","lastModifiedDate":"2017-05-04"},{"lineNumber":95,"author":{"gitId":"-"},"content":" // parsing it together with a valid tag results in error","lastModifiedDate":"2017-05-04"},{"lineNumber":96,"author":{"gitId":"IamZhenHong"},"content":" assertParseFailure(parser, \"00001\" + TAG_DESC_FRIEND + TAG_DESC_HUSBAND + TAG_EMPTY, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"IamZhenHong"},"content":" assertParseFailure(parser, \"00001\" + TAG_DESC_FRIEND + TAG_EMPTY + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"IamZhenHong"},"content":" assertParseFailure(parser, \"00001\" + TAG_EMPTY + TAG_DESC_FRIEND + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-20"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":100,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04"},{"lineNumber":101,"author":{"gitId":"J-wang-CSMA"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-18"},{"lineNumber":102,"author":{"gitId":"IamZhenHong"},"content":" \"00001\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_ADDRESS_AMY + VALID_PHONE_ONE_AMY,","lastModifiedDate":"2024-03-20"},{"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":"IamZhenHong"},"content":" StudentId targetId \u003d ID_SECOND_PERSON;","lastModifiedDate":"2024-03-20"},{"lineNumber":109,"author":{"gitId":"IamZhenHong"},"content":" String userInput \u003d targetId + PHONE_DESC_EDIT_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2024-03-20"},{"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":"IamZhenHong"},"content":" .withPhone(VALID_PHONE_ONE_BOB, \"00001\").withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2024-03-20"},{"lineNumber":114,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":115,"author":{"gitId":"IamZhenHong"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetId, descriptor);","lastModifiedDate":"2024-03-20"},{"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":"IamZhenHong"},"content":" StudentId targetId \u003d ID_SECOND_PERSON;","lastModifiedDate":"2024-03-20"},{"lineNumber":123,"author":{"gitId":"IamZhenHong"},"content":" String userInput \u003d targetId + PHONE_DESC_EDIT_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":125,"author":{"gitId":"IamZhenHong"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_ONE_BOB, \"00001\")","lastModifiedDate":"2024-03-20"},{"lineNumber":126,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":127,"author":{"gitId":"IamZhenHong"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetId, descriptor);","lastModifiedDate":"2024-03-20"},{"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":"IamZhenHong"},"content":" StudentId targetId \u003d ID_SECOND_PERSON;","lastModifiedDate":"2024-03-20"},{"lineNumber":136,"author":{"gitId":"IamZhenHong"},"content":" String userInput \u003d targetId + NAME_DESC_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":137,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":138,"author":{"gitId":"IamZhenHong"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetId, descriptor);","lastModifiedDate":"2024-03-20"},{"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":"IamZhenHong"},"content":" userInput \u003d targetId + PHONE_DESC_EDIT_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":143,"author":{"gitId":"J-wang-CSMA"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_ONE_AMY, \"2\").build();","lastModifiedDate":"2024-03-18"},{"lineNumber":144,"author":{"gitId":"IamZhenHong"},"content":" expectedCommand \u003d new EditCommand(targetId, descriptor);","lastModifiedDate":"2024-03-20"},{"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":"IamZhenHong"},"content":" userInput \u003d targetId + EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":149,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":150,"author":{"gitId":"IamZhenHong"},"content":" expectedCommand \u003d new EditCommand(targetId, descriptor);","lastModifiedDate":"2024-03-20"},{"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":"IamZhenHong"},"content":" userInput \u003d targetId + ADDRESS_DESC_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":155,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":156,"author":{"gitId":"IamZhenHong"},"content":" expectedCommand \u003d new EditCommand(targetId, descriptor);","lastModifiedDate":"2024-03-20"},{"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":"IamZhenHong"},"content":" userInput \u003d targetId + TAG_DESC_FRIEND;","lastModifiedDate":"2024-03-20"},{"lineNumber":161,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":162,"author":{"gitId":"IamZhenHong"},"content":" expectedCommand \u003d new EditCommand(targetId, descriptor);","lastModifiedDate":"2024-03-20"},{"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":"IamZhenHong"},"content":" StudentId targetId \u003d ID_SECOND_PERSON;","lastModifiedDate":"2024-03-20"},{"lineNumber":173,"author":{"gitId":"IamZhenHong"},"content":" String userInput \u003d targetId + PHONE_DESC_EDIT_BOB + INVALID_PHONE_EDIT_DESC;","lastModifiedDate":"2024-03-20"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":175,"author":{"gitId":"J-wang-CSMA"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PARENT_PHONES));","lastModifiedDate":"2024-03-18"},{"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":"IamZhenHong"},"content":" userInput \u003d targetId + INVALID_PHONE_EDIT_DESC + PHONE_DESC_EDIT_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":180,"author":{"gitId":"J-wang-CSMA"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PARENT_PHONES));","lastModifiedDate":"2024-03-18"},{"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":"IamZhenHong"},"content":" userInput \u003d targetId + PHONE_DESC_EDIT_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2024-03-20"},{"lineNumber":184,"author":{"gitId":"J-wang-CSMA"},"content":" + TAG_DESC_FRIEND + PHONE_DESC_EDIT_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + TAG_DESC_FRIEND","lastModifiedDate":"2024-03-18"},{"lineNumber":185,"author":{"gitId":"J-wang-CSMA"},"content":" + PHONE_DESC_EDIT_BOB + ADDRESS_DESC_BOB + EMAIL_DESC_BOB + TAG_DESC_HUSBAND;","lastModifiedDate":"2024-03-18"},{"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":"J-wang-CSMA"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PARENT_PHONES, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2024-03-18"},{"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":"IamZhenHong"},"content":" userInput \u003d targetId + INVALID_PHONE_EDIT_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2024-03-20"},{"lineNumber":192,"author":{"gitId":"J-wang-CSMA"},"content":" + INVALID_PHONE_EDIT_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2024-03-18"},{"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":"J-wang-CSMA"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PARENT_PHONES, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2024-03-18"},{"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":"IamZhenHong"},"content":" StudentId targetId \u003d ID_SECOND_PERSON;","lastModifiedDate":"2024-03-20"},{"lineNumber":201,"author":{"gitId":"IamZhenHong"},"content":" String userInput \u003d targetId + TAG_EMPTY;","lastModifiedDate":"2024-03-20"},{"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":"IamZhenHong"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetId, descriptor);","lastModifiedDate":"2024-03-20"},{"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":{"IamZhenHong":43,"-":150,"J-wang-CSMA":15}},{"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":"wallacexuhanxiao"},"content":"import seedu.address.model.person.IdMatchesPredicate;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"wallacexuhanxiao"},"content":"import seedu.address.model.person.StudentId;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"wallacexuhanxiao"},"content":"import seedu.address.model.person.TagMatchesPredicate;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"wallacexuhanxiao"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class FindCommandParserTest {","lastModifiedDate":"2017-06-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private FindCommandParser parser \u003d new FindCommandParser();","lastModifiedDate":"2017-06-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2017-06-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \" \", String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-07-06"},{"lineNumber":25,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"wallacexuhanxiao"},"content":" assertParseFailure(parser, \"5 00001\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsFindCommand() {","lastModifiedDate":"2017-08-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2017-06-27"},{"lineNumber":32,"author":{"gitId":"wallacexuhanxiao"},"content":" FindCommand expectedFindNameCommand \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" new FindCommand(new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\")));","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"wallacexuhanxiao"},"content":" FindCommand expectedFindIdCommand \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"wallacexuhanxiao"},"content":" new FindCommand(new IdMatchesPredicate(new StudentId(\"00001\")));","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"wallacexuhanxiao"},"content":" FindCommand expectedFindTagCommand \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"wallacexuhanxiao"},"content":" new FindCommand(new TagMatchesPredicate(new Tag(\"someTag\")));","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"wallacexuhanxiao"},"content":" assertParseSuccess(parser, \"1 Alice Bob\", expectedFindNameCommand);","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"wallacexuhanxiao"},"content":" assertParseSuccess(parser, \"1 \\n Alice \\n \\t Bob \\t\", expectedFindNameCommand);","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"wallacexuhanxiao"},"content":" assertParseSuccess(parser, \"2 00001\", expectedFindIdCommand);","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"wallacexuhanxiao"},"content":" //expected to change when implemented 3","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"wallacexuhanxiao"},"content":" assertParseSuccess(parser, \"3 someTag\", expectedFindTagCommand);","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-27"}],"authorContributionMap":{"wallacexuhanxiao":19,"-":31}},{"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":"J-wang-CSMA"},"content":"import static org.junit.jupiter.api.Assertions.assertArrayEquals;","lastModifiedDate":"2024-03-18"},{"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.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":"2017-05-22"},{"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":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-05-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2017-05-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2017-05-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2017-05-22"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d \"12345678\";","lastModifiedDate":"2024-02-19"},{"lineNumber":31,"author":{"gitId":"J-wang-CSMA"},"content":" private static final String VALID_PHONE_TWO \u003d \"87654321\";","lastModifiedDate":"2024-03-18"},{"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":"J-wang-CSMA"},"content":" private static final String VALID_TAG_1 \u003d \"Friend\";","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"J-wang-CSMA"},"content":" private static final String VALID_TAG_2 \u003d \"Neighbour\";","lastModifiedDate":"2024-03-21"},{"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-22"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29"},{"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 parsePhone_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePhone((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 parsePhone_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhone(INVALID_PHONE));","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":"J-wang-CSMA"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"J-wang-CSMA"},"content":" public void parsePhoneForEdit_validInput_success() throws Exception {","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"J-wang-CSMA"},"content":" String phone \u003d \"12345678, 1\";","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"J-wang-CSMA"},"content":" String[] expected \u003d new String[]{\"12345678\", \" 1\"};","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"J-wang-CSMA"},"content":" assertArrayEquals(expected, ParserUtil.parsePhoneForEdit(phone));","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"J-wang-CSMA"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"J-wang-CSMA"},"content":" public void parsePhoneForEdit_invalidPhone_throwsParseException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"J-wang-CSMA"},"content":" String invalidPhone \u003d \"abcd, 1\";","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"J-wang-CSMA"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhoneForEdit(invalidPhone));","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"J-wang-CSMA"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"J-wang-CSMA"},"content":" public void parsePhoneForEdit_invalidNumberToEdit_throwsParseException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"J-wang-CSMA"},"content":" String invalidEditNumber \u003d \"12345678, 3\";","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"J-wang-CSMA"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhoneForEdit(invalidEditNumber));","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"J-wang-CSMA"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"J-wang-CSMA"},"content":" public void parsePhoneForEdit_incorrectFormat_throwsParseException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"J-wang-CSMA"},"content":" String incorrectFormat \u003d \"12345678\";","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"J-wang-CSMA"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhoneForEdit(incorrectFormat));","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":102,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":103,"author":{"gitId":"J-wang-CSMA"},"content":" String phoneString \u003d VALID_PHONE + \",\" + VALID_PHONE_TWO;","lastModifiedDate":"2024-03-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-22"},{"lineNumber":105,"author":{"gitId":"J-wang-CSMA"},"content":" Phone expectedPhoneTwo \u003d new Phone(VALID_PHONE_TWO);","lastModifiedDate":"2024-03-18"},{"lineNumber":106,"author":{"gitId":"J-wang-CSMA"},"content":" Phone[] expectedPhoneArray \u003d new Phone[2];","lastModifiedDate":"2024-03-18"},{"lineNumber":107,"author":{"gitId":"J-wang-CSMA"},"content":" expectedPhoneArray[0] \u003d expectedPhone;","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"J-wang-CSMA"},"content":" expectedPhoneArray[1] \u003d expectedPhoneTwo;","lastModifiedDate":"2024-03-18"},{"lineNumber":109,"author":{"gitId":"J-wang-CSMA"},"content":" assertEquals(expectedPhoneArray[0], ParserUtil.parsePhone(phoneString)[0]);","lastModifiedDate":"2024-03-18"},{"lineNumber":110,"author":{"gitId":"J-wang-CSMA"},"content":" assertEquals(expectedPhoneArray[1], ParserUtil.parsePhone(phoneString)[1]);","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithWhitespace_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":115,"author":{"gitId":"J-wang-CSMA"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE + \" , \" + VALID_PHONE_TWO + WHITESPACE;","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"J-wang-CSMA"},"content":" Phone expectedPhoneOne \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"J-wang-CSMA"},"content":" Phone expectedPhoneTwo \u003d new Phone(VALID_PHONE_TWO);","lastModifiedDate":"2024-03-18"},{"lineNumber":118,"author":{"gitId":"J-wang-CSMA"},"content":" Phone[] expectedPhoneArray \u003d new Phone[2];","lastModifiedDate":"2024-03-18"},{"lineNumber":119,"author":{"gitId":"J-wang-CSMA"},"content":" expectedPhoneArray[0] \u003d expectedPhoneOne;","lastModifiedDate":"2024-03-18"},{"lineNumber":120,"author":{"gitId":"J-wang-CSMA"},"content":" expectedPhoneArray[1] \u003d expectedPhoneTwo;","lastModifiedDate":"2024-03-18"},{"lineNumber":121,"author":{"gitId":"J-wang-CSMA"},"content":" assertEquals(expectedPhoneArray[0], ParserUtil.parsePhone(phoneWithWhitespace)[0]);","lastModifiedDate":"2024-03-18"},{"lineNumber":122,"author":{"gitId":"J-wang-CSMA"},"content":" assertEquals(expectedPhoneArray[1], ParserUtil.parsePhone(phoneWithWhitespace)[1]);","lastModifiedDate":"2024-03-18"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":126,"author":{"gitId":"-"},"content":" public void parseAddress_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseAddress((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":130,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":131,"author":{"gitId":"-"},"content":" public void parseAddress_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseAddress(INVALID_ADDRESS));","lastModifiedDate":"2019-03-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":136,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":137,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-22"},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(VALID_ADDRESS));","lastModifiedDate":"2017-05-30"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":143,"author":{"gitId":"-"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_ADDRESS + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":144,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-30"},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(addressWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":148,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":149,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":150,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":153,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":154,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":155,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":158,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":159,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":160,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22"},{"lineNumber":161,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30"},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":164,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":165,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":166,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":167,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30"},{"lineNumber":168,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":171,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":172,"author":{"gitId":"-"},"content":" public void parseTag_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":176,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":177,"author":{"gitId":"-"},"content":" public void parseTag_invalidValue_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTag(INVALID_TAG));","lastModifiedDate":"2019-03-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":181,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":182,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithoutWhitespace_returnsTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":183,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30"},{"lineNumber":184,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(VALID_TAG_1));","lastModifiedDate":"2017-05-30"},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":187,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":188,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithWhitespace_returnsTrimmedTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":189,"author":{"gitId":"-"},"content":" String tagWithWhitespace \u003d WHITESPACE + VALID_TAG_1 + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":190,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30"},{"lineNumber":191,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(tagWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":194,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":195,"author":{"gitId":"-"},"content":" public void parseTags_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTags(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":199,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":200,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithInvalidTags_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, INVALID_TAG)));","lastModifiedDate":"2019-03-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":204,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":205,"author":{"gitId":"-"},"content":" public void parseTags_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2017-05-22"},{"lineNumber":206,"author":{"gitId":"-"},"content":" assertTrue(ParserUtil.parseTags(Collections.emptyList()).isEmpty());","lastModifiedDate":"2017-05-22"},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":209,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":210,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithValidTags_returnsTagSet() throws Exception {","lastModifiedDate":"2017-05-22"},{"lineNumber":211,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e actualTagSet \u003d ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, VALID_TAG_2));","lastModifiedDate":"2017-05-22"},{"lineNumber":212,"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":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":214,"author":{"gitId":"-"},"content":" assertEquals(expectedTagSet, actualTagSet);","lastModifiedDate":"2017-05-22"},{"lineNumber":215,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":216,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":217,"author":{"gitId":"J-wang-CSMA"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":218,"author":{"gitId":"J-wang-CSMA"},"content":" public void parseName_capitalizationCheck() throws Exception {","lastModifiedDate":"2024-03-21"},{"lineNumber":219,"author":{"gitId":"J-wang-CSMA"},"content":" String inputName \u003d \"john doe\";","lastModifiedDate":"2024-03-21"},{"lineNumber":220,"author":{"gitId":"J-wang-CSMA"},"content":" Name expectedName \u003d new Name(\"John Doe\");","lastModifiedDate":"2024-03-21"},{"lineNumber":221,"author":{"gitId":"J-wang-CSMA"},"content":" assertEquals(expectedName, ParserUtil.parseName(inputName));","lastModifiedDate":"2024-03-21"},{"lineNumber":222,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":223,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":224,"author":{"gitId":"J-wang-CSMA"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":225,"author":{"gitId":"J-wang-CSMA"},"content":" public void parseName_capitalizationCheckWithNumbers() throws Exception {","lastModifiedDate":"2024-03-21"},{"lineNumber":226,"author":{"gitId":"J-wang-CSMA"},"content":" String inputNameWithNumbers \u003d \"mary jane 2nd\";","lastModifiedDate":"2024-03-21"},{"lineNumber":227,"author":{"gitId":"J-wang-CSMA"},"content":" Name expectedNameWithNumbers \u003d new Name(\"Mary Jane 2nd\");","lastModifiedDate":"2024-03-21"},{"lineNumber":228,"author":{"gitId":"J-wang-CSMA"},"content":" assertEquals(expectedNameWithNumbers, ParserUtil.parseName(inputNameWithNumbers));","lastModifiedDate":"2024-03-21"},{"lineNumber":229,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":230,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":231,"author":{"gitId":"J-wang-CSMA"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":232,"author":{"gitId":"J-wang-CSMA"},"content":" public void parseAddress_capitalizationCheck() throws Exception {","lastModifiedDate":"2024-03-21"},{"lineNumber":233,"author":{"gitId":"J-wang-CSMA"},"content":" String inputAddress \u003d \"123 baker street\";","lastModifiedDate":"2024-03-21"},{"lineNumber":234,"author":{"gitId":"J-wang-CSMA"},"content":" Address expectedAddress \u003d new Address(\"123 Baker Street\");","lastModifiedDate":"2024-03-21"},{"lineNumber":235,"author":{"gitId":"J-wang-CSMA"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(inputAddress));","lastModifiedDate":"2024-03-21"},{"lineNumber":236,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":237,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":238,"author":{"gitId":"J-wang-CSMA"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":239,"author":{"gitId":"J-wang-CSMA"},"content":" public void parseAddress_capitalizationCheckWithSpecialCharacters() throws Exception {","lastModifiedDate":"2024-03-21"},{"lineNumber":240,"author":{"gitId":"J-wang-CSMA"},"content":" String inputAddressWithSpecialChar \u003d \"4th avenue, #05-06\";","lastModifiedDate":"2024-03-21"},{"lineNumber":241,"author":{"gitId":"J-wang-CSMA"},"content":" Address expectedAddressWithSpecialChar \u003d new Address(\"4th Avenue, #05-06\");","lastModifiedDate":"2024-03-21"},{"lineNumber":242,"author":{"gitId":"J-wang-CSMA"},"content":" assertEquals(expectedAddressWithSpecialChar, ParserUtil.parseAddress(inputAddressWithSpecialChar));","lastModifiedDate":"2024-03-21"},{"lineNumber":243,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":244,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":245,"author":{"gitId":"J-wang-CSMA"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":246,"author":{"gitId":"J-wang-CSMA"},"content":" public void parseTag_capitalizationCheck() throws Exception {","lastModifiedDate":"2024-03-21"},{"lineNumber":247,"author":{"gitId":"J-wang-CSMA"},"content":" String inputTag \u003d \"Friend\";","lastModifiedDate":"2024-03-21"},{"lineNumber":248,"author":{"gitId":"J-wang-CSMA"},"content":" Tag expectedTag \u003d new Tag(\"Friend\");","lastModifiedDate":"2024-03-21"},{"lineNumber":249,"author":{"gitId":"J-wang-CSMA"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(inputTag));","lastModifiedDate":"2024-03-21"},{"lineNumber":250,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":251,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":252,"author":{"gitId":"J-wang-CSMA"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":253,"author":{"gitId":"J-wang-CSMA"},"content":" public void parseTag_capitalizationCheckWithNumbers() throws Exception {","lastModifiedDate":"2024-03-21"},{"lineNumber":254,"author":{"gitId":"J-wang-CSMA"},"content":" String inputTag \u003d \"3a\";","lastModifiedDate":"2024-03-21"},{"lineNumber":255,"author":{"gitId":"J-wang-CSMA"},"content":" Tag expectedTag \u003d new Tag(\"3a\");","lastModifiedDate":"2024-03-21"},{"lineNumber":256,"author":{"gitId":"J-wang-CSMA"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(inputTag));","lastModifiedDate":"2024-03-21"},{"lineNumber":257,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":258,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":259,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22"}],"authorContributionMap":{"-":168,"J-wang-CSMA":91}},{"path":"src/test/java/seedu/address/model/person/IdMatchesPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"wallacexuhanxiao"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"wallacexuhanxiao"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"wallacexuhanxiao"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"wallacexuhanxiao"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"wallacexuhanxiao"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"wallacexuhanxiao"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"wallacexuhanxiao"},"content":"class IdMatchesPredicateTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"wallacexuhanxiao"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"wallacexuhanxiao"},"content":" void test_idMatchesPredicate_returnsTrue() {","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"wallacexuhanxiao"},"content":" IdMatchesPredicate predicate \u003d new IdMatchesPredicate(new StudentId(\"00001\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"wallacexuhanxiao"},"content":" assertTrue(predicate.test(new PersonBuilder().withStudentId(\"00001\").build()));","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"wallacexuhanxiao"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"wallacexuhanxiao"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"wallacexuhanxiao"},"content":" void test_idMatchesPredicate_returnsFalse() {","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"wallacexuhanxiao"},"content":" IdMatchesPredicate predicate \u003d new IdMatchesPredicate(new StudentId(\"00001\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"wallacexuhanxiao"},"content":" assertFalse(predicate.test(new PersonBuilder().withStudentId(\"00002\").build()));","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"wallacexuhanxiao"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"wallacexuhanxiao"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"wallacexuhanxiao"},"content":" void equals() {","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"wallacexuhanxiao"},"content":" IdMatchesPredicate firstPredicateId \u003d new IdMatchesPredicate(new StudentId(\"00001\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"wallacexuhanxiao"},"content":" IdMatchesPredicate secondPredicateId \u003d new IdMatchesPredicate(new StudentId(\"00002\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"wallacexuhanxiao"},"content":" IdMatchesPredicate thirdPredicateId \u003d new IdMatchesPredicate(new StudentId(\"00001\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"wallacexuhanxiao"},"content":" assertTrue(firstPredicateId.equals(firstPredicateId));","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"wallacexuhanxiao"},"content":" assertTrue(firstPredicateId.equals(thirdPredicateId));","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"wallacexuhanxiao"},"content":" assertFalse(firstPredicateId.equals(secondPredicateId));","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"wallacexuhanxiao"},"content":" assertFalse(firstPredicateId.equals(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"wallacexuhanxiao"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"wallacexuhanxiao"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"wallacexuhanxiao"},"content":" void toStringMethod() {","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"wallacexuhanxiao"},"content":" String keywords \u003d \"00001\";","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"wallacexuhanxiao"},"content":" IdMatchesPredicate predicate \u003d new IdMatchesPredicate(new StudentId(keywords));","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"wallacexuhanxiao"},"content":" String expected \u003d IdMatchesPredicate.class.getCanonicalName() + \"{student id\u003d\" + keywords + \"}\";","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"wallacexuhanxiao"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"wallacexuhanxiao"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"wallacexuhanxiao"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"wallacexuhanxiao":48}},{"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":"-"},"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":"J-wang-CSMA"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\")","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"J-wang-CSMA"},"content":" .withFirstParentPhone(\"12345678\")","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"J-wang-CSMA"},"content":" .withSecondParentPhone(\"33333332\")","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"J-wang-CSMA"},"content":" .withEmail(\"alice@email.com\")","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"J-wang-CSMA"},"content":" .withAddress(\"Main Street\")","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"J-wang-CSMA"},"content":" .withStudentId(\"00001\").build()));","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"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":" List\u003cString\u003e keywords \u003d List.of(\"keyword1\", \"keyword2\");","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(keywords);","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" String expected \u003d NameContainsKeywordsPredicate.class.getCanonicalName() + \"{keywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"-":83,"J-wang-CSMA":6}},{"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":"J-wang-CSMA"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-18"},{"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_ADDRESS_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":10,"author":{"gitId":"J-wang-CSMA"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_ONE_BOB;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"J-wang-CSMA"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_TWO_BOB;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_STUDENT_ID_AMY;","lastModifiedDate":"2024-02-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_STUDENT_ID_BOB;","lastModifiedDate":"2024-02-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":27,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2018-03-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTags().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18"},{"lineNumber":40,"author":{"gitId":"J-wang-CSMA"},"content":" Person editedAlice \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"J-wang-CSMA"},"content":" new PersonBuilder(ALICE).withFirstParentPhone(VALID_PHONE_ONE_BOB)","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"J-wang-CSMA"},"content":" .withSecondParentPhone(VALID_PHONE_TWO_BOB)","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"J-wang-CSMA"},"content":" .withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"J-wang-CSMA"},"content":" .withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"J-wang-CSMA"},"content":" .withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"J-wang-CSMA"},"content":" .withStudentId(VALID_STUDENT_ID_AMY).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":50,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).withStudentId(VALID_STUDENT_ID_BOB).build();","lastModifiedDate":"2024-02-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":54,"author":{"gitId":"-"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase())","lastModifiedDate":"2024-02-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" .withStudentId(VALID_STUDENT_ID_AMY).build();","lastModifiedDate":"2024-02-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":59,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18"},{"lineNumber":60,"author":{"gitId":"-"},"content":" editedBob \u003d new PersonBuilder(BOB).withName(nameWithTrailingSpaces).withStudentId(VALID_STUDENT_ID_AMY).build();","lastModifiedDate":"2024-02-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"J-wang-CSMA"},"content":" editedAlice \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"J-wang-CSMA"},"content":" new PersonBuilder(ALICE)","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"J-wang-CSMA"},"content":" .withFirstParentPhone(VALID_PHONE_ONE_BOB)","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"J-wang-CSMA"},"content":" .withSecondParentPhone(VALID_PHONE_TWO_BOB)","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"J-wang-CSMA"},"content":" .build();","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2018-04-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":107,"author":{"gitId":"J-wang-CSMA"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"J-wang-CSMA"},"content":" public void hashCode_sameObject_consistentValue() {","lastModifiedDate":"2024-03-18"},{"lineNumber":109,"author":{"gitId":"J-wang-CSMA"},"content":" Person person \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":110,"author":{"gitId":"J-wang-CSMA"},"content":" int initialHashCode \u003d person.hashCode();","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"J-wang-CSMA"},"content":" assertEquals(initialHashCode, person.hashCode());","lastModifiedDate":"2024-03-18"},{"lineNumber":113,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":115,"author":{"gitId":"J-wang-CSMA"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"J-wang-CSMA"},"content":" public void hashCode_equalObjects_sameValue() {","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"J-wang-CSMA"},"content":" Person person1 \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":118,"author":{"gitId":"J-wang-CSMA"},"content":" Person person2 \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":119,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":120,"author":{"gitId":"J-wang-CSMA"},"content":" assertEquals(person1.hashCode(), person2.hashCode());","lastModifiedDate":"2024-03-18"},{"lineNumber":121,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":122,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":123,"author":{"gitId":"J-wang-CSMA"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":124,"author":{"gitId":"J-wang-CSMA"},"content":" public void hashCode_differentObjects_differentValue() {","lastModifiedDate":"2024-03-18"},{"lineNumber":125,"author":{"gitId":"J-wang-CSMA"},"content":" Person person1 \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":126,"author":{"gitId":"J-wang-CSMA"},"content":" Person person2 \u003d new PersonBuilder(BOB).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":127,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":128,"author":{"gitId":"J-wang-CSMA"},"content":" assertNotEquals(person1.hashCode(), person2.hashCode());","lastModifiedDate":"2024-03-18"},{"lineNumber":129,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":130,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":133,"author":{"gitId":"J-wang-CSMA"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName()","lastModifiedDate":"2024-03-18"},{"lineNumber":134,"author":{"gitId":"J-wang-CSMA"},"content":" + \", parent phone 1\u003d\" + ALICE.getParentPhoneOne()","lastModifiedDate":"2024-03-18"},{"lineNumber":135,"author":{"gitId":"J-wang-CSMA"},"content":" + \", parent phone 2\u003d\" + ALICE.getParentPhoneTwo()","lastModifiedDate":"2024-03-18"},{"lineNumber":136,"author":{"gitId":"J-wang-CSMA"},"content":" + \", email\u003d\" + ALICE.getEmail()","lastModifiedDate":"2024-03-18"},{"lineNumber":137,"author":{"gitId":"J-wang-CSMA"},"content":" + \", address\u003d\" + ALICE.getAddress()","lastModifiedDate":"2024-03-18"},{"lineNumber":138,"author":{"gitId":"J-wang-CSMA"},"content":" + \", student id\u003d\" + ALICE.getStudentId()","lastModifiedDate":"2024-03-18"},{"lineNumber":139,"author":{"gitId":"J-wang-CSMA"},"content":" + \", tags\u003d\" + ALICE.getTags() + \"}\";","lastModifiedDate":"2024-03-18"},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"-":96,"J-wang-CSMA":46}},{"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":"J-wang-CSMA"},"content":" assertFalse(Phone.isValidPhone(\"9132123\")); // less than 8 numbers","lastModifiedDate":"2024-03-18"},{"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":"J-wang-CSMA"},"content":" assertFalse(Phone.isValidPhone(\"01000100\")); // 0 as first digit","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // valid phone numbers","lastModifiedDate":"2017-01-16"},{"lineNumber":37,"author":{"gitId":"J-wang-CSMA"},"content":" assertTrue(Phone.isValidPhone(\"91191121\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(Phone.isValidPhone(\"93121534\"));","lastModifiedDate":"2017-01-16"},{"lineNumber":39,"author":{"gitId":"J-wang-CSMA"},"content":" assertTrue(Phone.isValidPhone(\"12429384\"));","lastModifiedDate":"2024-03-18"},{"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":" Phone phone \u003d new Phone(\"99999999\");","lastModifiedDate":"2024-02-19"},{"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(phone.equals(new Phone(\"99999999\")));","lastModifiedDate":"2024-02-19"},{"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(phone.equals(phone));","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(phone.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(phone.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(phone.equals(new Phone(\"99555555\")));","lastModifiedDate":"2024-02-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"-":57,"J-wang-CSMA":4}},{"path":"src/test/java/seedu/address/model/person/StudentIdTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"wallacexuhanxiao"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"wallacexuhanxiao"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"wallacexuhanxiao"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"wallacexuhanxiao"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"wallacexuhanxiao"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"wallacexuhanxiao"},"content":"class StudentIdTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"wallacexuhanxiao"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"wallacexuhanxiao"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"wallacexuhanxiao"},"content":" assertThrows(NullPointerException.class, () -\u003e new StudentId(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"wallacexuhanxiao"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"wallacexuhanxiao"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"wallacexuhanxiao"},"content":" public void constructor_invalidPhone_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"wallacexuhanxiao"},"content":" String invalidStringId \u003d \"\";","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"wallacexuhanxiao"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new StudentId(invalidStringId));","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"wallacexuhanxiao"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"wallacexuhanxiao"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"wallacexuhanxiao"},"content":" void isValidStudentId() {","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"wallacexuhanxiao"},"content":" assertThrows(NullPointerException.class, () -\u003e StudentId.isValidStudentId(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"wallacexuhanxiao"},"content":" // invalid","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"wallacexuhanxiao"},"content":" assertFalse(StudentId.isValidStudentId(\"\")); // empty string","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"wallacexuhanxiao"},"content":" assertFalse(StudentId.isValidStudentId(\" \")); // spaces only","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"wallacexuhanxiao"},"content":" assertFalse(StudentId.isValidStudentId(\"91\")); // less than 3 numbers","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"wallacexuhanxiao"},"content":" assertFalse(StudentId.isValidStudentId(\"phone\")); // non-numeric","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"wallacexuhanxiao"},"content":" assertFalse(StudentId.isValidStudentId(\"9011p041\")); // alphabets within digits","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"wallacexuhanxiao"},"content":" assertFalse(StudentId.isValidStudentId(\"9312 1534\")); // spaces within digits","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"wallacexuhanxiao"},"content":" // valid","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"wallacexuhanxiao"},"content":" assertTrue(StudentId.isValidStudentId(\"91191\")); // exactly 3 numbers","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"wallacexuhanxiao"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"wallacexuhanxiao"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"wallacexuhanxiao"},"content":" public void equals() {","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"wallacexuhanxiao"},"content":" StudentId studentId \u003d new StudentId(\"00001\");","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"wallacexuhanxiao"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"wallacexuhanxiao"},"content":" assertTrue(studentId.equals(new StudentId(\"00001\")));","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"wallacexuhanxiao"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"wallacexuhanxiao"},"content":" assertTrue(studentId.equals(studentId));","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"wallacexuhanxiao"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"wallacexuhanxiao"},"content":" assertFalse(studentId.equals(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"wallacexuhanxiao"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"wallacexuhanxiao"},"content":" assertFalse(studentId.equals(5.0f));","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"wallacexuhanxiao"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"wallacexuhanxiao"},"content":" assertFalse(studentId.equals(new StudentId(\"91255\")));","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"wallacexuhanxiao"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"wallacexuhanxiao"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"wallacexuhanxiao":58}},{"path":"src/test/java/seedu/address/model/person/TagMatchesPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"wallacexuhanxiao"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"wallacexuhanxiao"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"wallacexuhanxiao"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"wallacexuhanxiao"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"wallacexuhanxiao"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"wallacexuhanxiao"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"wallacexuhanxiao"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"wallacexuhanxiao"},"content":"class TagMatchesPredicateTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"wallacexuhanxiao"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"wallacexuhanxiao"},"content":" void test_tagMatchesPredicate_returnsTrue() {","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"wallacexuhanxiao"},"content":" TagMatchesPredicate predicate \u003d new TagMatchesPredicate(new Tag(\"tag\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"wallacexuhanxiao"},"content":" assertTrue(predicate.test(new PersonBuilder().withTags(\"tag\", \"tagg\", \"tags\").build()));","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"wallacexuhanxiao"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"wallacexuhanxiao"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"wallacexuhanxiao"},"content":" void test_tagMatchesPredicate_returnsFalse() {","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"wallacexuhanxiao"},"content":" TagMatchesPredicate predicate \u003d new TagMatchesPredicate(new Tag(\"tag\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"wallacexuhanxiao"},"content":" assertFalse(predicate.test(new PersonBuilder().withTags(\"tags\", \"tagg\").build()));","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"wallacexuhanxiao"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"wallacexuhanxiao"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"wallacexuhanxiao"},"content":" void equals() {","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"wallacexuhanxiao"},"content":" TagMatchesPredicate firstPredicateTag \u003d new TagMatchesPredicate(new Tag(\"tag1\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"wallacexuhanxiao"},"content":" TagMatchesPredicate secondPredicateTag \u003d new TagMatchesPredicate(new Tag(\"tag2\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"wallacexuhanxiao"},"content":" TagMatchesPredicate thirdPredicateTag \u003d new TagMatchesPredicate(new Tag(\"tag1\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"wallacexuhanxiao"},"content":" assertTrue(firstPredicateTag.equals(firstPredicateTag));","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"wallacexuhanxiao"},"content":" assertTrue(firstPredicateTag.equals(thirdPredicateTag));","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"wallacexuhanxiao"},"content":" assertFalse(firstPredicateTag.equals(secondPredicateTag));","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"wallacexuhanxiao"},"content":" assertFalse(firstPredicateTag.equals(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"wallacexuhanxiao"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"wallacexuhanxiao"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"wallacexuhanxiao"},"content":" void toStringMethod() {","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"wallacexuhanxiao"},"content":" String keywords \u003d \"taggg\";","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"wallacexuhanxiao"},"content":" TagMatchesPredicate predicate \u003d new TagMatchesPredicate(new Tag(keywords));","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"wallacexuhanxiao"},"content":" String expected \u003d TagMatchesPredicate.class.getCanonicalName() + \"{tag\u003d[\" + keywords + \"]}\";","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"wallacexuhanxiao"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"wallacexuhanxiao"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"wallacexuhanxiao"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"wallacexuhanxiao":49}},{"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":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Tag(null));","lastModifiedDate":"2019-03-14"},{"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":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Tag(invalidTagName));","lastModifiedDate":"2019-03-14"},{"lineNumber":18,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":20,"author":{"gitId":"J-wang-CSMA"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"J-wang-CSMA"},"content":" public void constructor_moreThanTwoWords_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"J-wang-CSMA"},"content":" String invalidTagName \u003d \"Track and Field\";","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"J-wang-CSMA"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Tag(invalidTagName));","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void isValidTagName() {","lastModifiedDate":"2017-12-04"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // null tag name","lastModifiedDate":"2017-12-04"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Tag.isValidTagName(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-12-04"}],"authorContributionMap":{"-":26,"J-wang-CSMA":6}},{"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":"-"},"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":"J-wang-CSMA"},"content":" private static final String VALID_PHONE_ONE \u003d BENSON.getParentPhoneOne().toString();","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"J-wang-CSMA"},"content":" private static final String VALID_PHONE_TWO \u003d BENSON.getParentPhoneTwo().toString();","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":" private static final String VALID_STUDENT_ID \u003d BENSON.getStudentId().toString();","lastModifiedDate":"2024-02-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":"J-wang-CSMA"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE_ONE, VALID_PHONE_TWO, VALID_EMAIL,","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":" VALID_ADDRESS, VALID_STUDENT_ID, VALID_TAGS);","lastModifiedDate":"2024-02-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"J-wang-CSMA"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_PHONE_ONE, VALID_PHONE_TWO, VALID_EMAIL,","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"-"},"content":" VALID_ADDRESS, VALID_STUDENT_ID, VALID_TAGS);","lastModifiedDate":"2024-02-18"},{"lineNumber":56,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-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 toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"J-wang-CSMA"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_PHONE_TWO, VALID_EMAIL,","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"-"},"content":" VALID_ADDRESS, VALID_STUDENT_ID, VALID_TAGS);","lastModifiedDate":"2024-02-18"},{"lineNumber":65,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.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_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"J-wang-CSMA"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_PHONE_TWO, VALID_EMAIL,","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"-"},"content":" VALID_ADDRESS, VALID_STUDENT_ID, VALID_TAGS);","lastModifiedDate":"2024-02-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"J-wang-CSMA"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE_ONE, VALID_PHONE_TWO, INVALID_EMAIL,","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" VALID_ADDRESS, VALID_STUDENT_ID, VALID_TAGS);","lastModifiedDate":"2024-02-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"J-wang-CSMA"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE_ONE, VALID_PHONE_TWO, null,","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" VALID_ADDRESS, VALID_STUDENT_ID, VALID_TAGS);","lastModifiedDate":"2024-02-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"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":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"J-wang-CSMA"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE_ONE, VALID_PHONE_TWO, VALID_EMAIL,","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" INVALID_ADDRESS, VALID_STUDENT_ID, VALID_TAGS);","lastModifiedDate":"2024-02-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"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_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"J-wang-CSMA"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE_ONE, VALID_PHONE_TWO,","lastModifiedDate":"2024-03-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":" VALID_EMAIL, null, VALID_STUDENT_ID, VALID_TAGS);","lastModifiedDate":"2024-02-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"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 toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":116,"author":{"gitId":"J-wang-CSMA"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE_ONE, VALID_PHONE_TWO,","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"-"},"content":" VALID_EMAIL, VALID_ADDRESS, VALID_STUDENT_ID, invalidTags);","lastModifiedDate":"2024-02-18"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, 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":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"-":110,"J-wang-CSMA":11}},{"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.Address;","lastModifiedDate":"2017-12-23"},{"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":"-"},"content":"import seedu.address.model.person.StudentId;","lastModifiedDate":"2024-02-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-12-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * A utility class to help with building EditPersonDescriptor objects.","lastModifiedDate":"2017-05-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorBuilder {","lastModifiedDate":"2017-05-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private EditPersonDescriptor descriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder() {","lastModifiedDate":"2017-05-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-05-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(EditPersonDescriptor descriptor) {","lastModifiedDate":"2017-05-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" this.descriptor \u003d new EditPersonDescriptor(descriptor);","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":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Returns an {@code EditPersonDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2017-06-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-06-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" descriptor.setName(person.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":37,"author":{"gitId":"J-wang-CSMA"},"content":" descriptor.setFirstParentPhone(person.getParentPhoneOne());","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"J-wang-CSMA"},"content":" descriptor.setSecondParentPhone(person.getParentPhoneTwo());","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" descriptor.setAddress(person.getAddress());","lastModifiedDate":"2017-06-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" descriptor.setStudentId(person.getStudentId());","lastModifiedDate":"2024-02-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" descriptor.setTags(person.getTags());","lastModifiedDate":"2017-06-21"},{"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":"-"},"content":" * Sets the {@code Phone} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":56,"author":{"gitId":"J-wang-CSMA"},"content":" public EditPersonDescriptorBuilder withPhone(String phone, String number) {","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"J-wang-CSMA"},"content":" descriptor.setPhone(new Phone(phone), number);","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-02-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-02-18"},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-18"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withStudentId(String studentId) {","lastModifiedDate":"2024-02-18"},{"lineNumber":65,"author":{"gitId":"-"},"content":" descriptor.setStudentId(new StudentId(studentId));","lastModifiedDate":"2024-02-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2024-02-18"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-18"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-18"},{"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":"-"},"content":" * Sets the {@code Address} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":81,"author":{"gitId":"-"},"content":" descriptor.setAddress(new Address(address));","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":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":86,"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":87,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2017-12-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2017-12-23"},{"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":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05"},{"lineNumber":96,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":98,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"-":94,"J-wang-CSMA":4}},{"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":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18"},{"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.person.StudentId;","lastModifiedDate":"2024-02-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":"J-wang-CSMA"},"content":" public static final String DEFAULT_FIRST_PARENT_PHONE \u003d \"85355255\";","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"J-wang-CSMA"},"content":" public static final String DEFAULT_SECOND_PARENT_PHONE \u003d \"91234544\";","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String DEFAULT_STUDENT_ID \u003d \"10001\";","lastModifiedDate":"2024-02-19"},{"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":"J-wang-CSMA"},"content":" private Phone firstParentPhone;","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"J-wang-CSMA"},"content":" private Phone secondParentPhone;","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private StudentId studentId;","lastModifiedDate":"2024-02-18"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"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":"J-wang-CSMA"},"content":" firstParentPhone \u003d new Phone(DEFAULT_FIRST_PARENT_PHONE);","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"J-wang-CSMA"},"content":" secondParentPhone \u003d new Phone(DEFAULT_SECOND_PARENT_PHONE);","lastModifiedDate":"2024-03-18"},{"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":" studentId \u003d new StudentId(DEFAULT_STUDENT_ID);","lastModifiedDate":"2024-02-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"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":"J-wang-CSMA"},"content":" firstParentPhone \u003d personToCopy.getParentPhoneOne();","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"J-wang-CSMA"},"content":" secondParentPhone \u003d personToCopy.getParentPhoneTwo();","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" studentId \u003d personToCopy.getStudentId();","lastModifiedDate":"2024-02-18"},{"lineNumber":58,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20"},{"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":"-"},"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":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String ... tags) {","lastModifiedDate":"2017-08-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2017-12-20"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":81,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":86,"author":{"gitId":"J-wang-CSMA"},"content":" * Sets the {@code First parent phone} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":88,"author":{"gitId":"J-wang-CSMA"},"content":" public PersonBuilder withFirstParentPhone(String firstParentPhone) {","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"J-wang-CSMA"},"content":" this.firstParentPhone \u003d new Phone(firstParentPhone);","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"J-wang-CSMA"},"content":" return this;","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"J-wang-CSMA"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"J-wang-CSMA"},"content":" * Sets the {@code Second parent phone} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"J-wang-CSMA"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"J-wang-CSMA"},"content":" public PersonBuilder withSecondParentPhone(String secondParentPhone) {","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"J-wang-CSMA"},"content":" this.secondParentPhone \u003d new Phone(secondParentPhone);","lastModifiedDate":"2024-03-18"},{"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":"2024-02-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Sets the {@code StudentId} of the {@code StudentId} that we are building.","lastModifiedDate":"2024-02-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public PersonBuilder withStudentId(String studentId) {","lastModifiedDate":"2024-02-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":" this.studentId \u003d new StudentId(studentId);","lastModifiedDate":"2024-02-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2024-02-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-18"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-18"},{"lineNumber":109,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":110,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":111,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":113,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20"},{"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":"J-wang-CSMA"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":118,"author":{"gitId":"J-wang-CSMA"},"content":" * Builds the person as designated by the PersonBuilder.","lastModifiedDate":"2024-03-18"},{"lineNumber":119,"author":{"gitId":"J-wang-CSMA"},"content":" * @returns A person based on the fields of the PersonBuilder.","lastModifiedDate":"2024-03-18"},{"lineNumber":120,"author":{"gitId":"J-wang-CSMA"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":121,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05"},{"lineNumber":122,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":123,"author":{"gitId":"J-wang-CSMA"},"content":" return new Person(name, firstParentPhone, secondParentPhone, email, address, studentId, tags);","lastModifiedDate":"2024-03-18"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":126,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03"}],"authorContributionMap":{"-":101,"J-wang-CSMA":25}},{"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":"J-wang-CSMA"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PARENT_PHONES;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_ID;","lastModifiedDate":"2024-02-19"},{"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":"J-wang-CSMA"},"content":" sb.append(PREFIX_PARENT_PHONES","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"J-wang-CSMA"},"content":" + person.getParentPhoneOne().value + \", \" + person.getParentPhoneTwo().value + \" \");","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":38,"author":{"gitId":"-"},"content":" sb.append(PREFIX_ADDRESS + person.getAddress().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" sb.append(PREFIX_STUDENT_ID + person.getStudentId().value + \" \");","lastModifiedDate":"2024-02-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" person.getTags().stream().forEach(","lastModifiedDate":"2017-05-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2017-05-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09"},{"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":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26"},{"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":"J-wang-CSMA"},"content":" if (descriptor.getFirstParentPhone().isPresent() || descriptor.getSecondParentPhone().isPresent()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"J-wang-CSMA"},"content":" if (descriptor.getFirstParentPhone().isPresent()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"J-wang-CSMA"},"content":" sb.append(PREFIX_PARENT_PHONES).append(descriptor.getFirstParentPhone().get().value).append(\", 1 \");","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"J-wang-CSMA"},"content":" } else if (descriptor.getSecondParentPhone().isPresent()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"J-wang-CSMA"},"content":" sb.append(PREFIX_PARENT_PHONES).append(descriptor.getSecondParentPhone().get().value).append(\", 2 \");","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" descriptor.getStudentId()","lastModifiedDate":"2024-02-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" .ifPresent(studentId -\u003e sb.append(PREFIX_STUDENT_ID).append(studentId.value).append(\" \"));","lastModifiedDate":"2024-02-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" sb.append(PREFIX_TAG);","lastModifiedDate":"2018-03-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":72,"author":{"gitId":"J-wang-CSMA"},"content":" //System.out.println(sb.toString());","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05"}],"authorContributionMap":{"-":63,"J-wang-CSMA":12}},{"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.model.Model;","lastModifiedDate":"2017-07-30"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":10,"author":{"gitId":"IamZhenHong"},"content":"import seedu.address.model.person.StudentId;","lastModifiedDate":"2024-03-20"},{"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 person in the {@code model}\u0027s person list at {@code index}.","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30"},{"lineNumber":38,"author":{"gitId":"IamZhenHong"},"content":" public static Person getPerson(Model model, StudentId studentId) {","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"IamZhenHong"},"content":" for (Person person : model.getFilteredPersonList()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"IamZhenHong"},"content":" if (person.getStudentId().equals(studentId)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"IamZhenHong"},"content":" return person;","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30"},{"lineNumber":44,"author":{"gitId":"IamZhenHong"},"content":" return null;","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30"},{"lineNumber":46,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"IamZhenHong":6,"-":40}},{"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":"J-wang-CSMA"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_ONE_AMY;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"J-wang-CSMA"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_ONE_BOB;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"J-wang-CSMA"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_TWO_AMY;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"J-wang-CSMA"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_TWO_BOB;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_STUDENT_ID_AMY;","lastModifiedDate":"2024-02-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_STUDENT_ID_BOB;","lastModifiedDate":"2024-02-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-08-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-08-22"},{"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":"-"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2017-04-05"},{"lineNumber":32,"author":{"gitId":"J-wang-CSMA"},"content":" .withFirstParentPhone(\"94351253\")","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"J-wang-CSMA"},"content":" .withSecondParentPhone(\"88312868\")","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":" .withStudentId(\"00001\")","lastModifiedDate":"2024-02-18"},{"lineNumber":35,"author":{"gitId":"J-wang-CSMA"},"content":" .withTags(\"Friends\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10"},{"lineNumber":37,"author":{"gitId":"-"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2017-09-21"},{"lineNumber":38,"author":{"gitId":"J-wang-CSMA"},"content":" .withEmail(\"johnd@example.com\")","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"J-wang-CSMA"},"content":" .withFirstParentPhone(\"98765432\")","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"J-wang-CSMA"},"content":" .withSecondParentPhone(\"83789072\")","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"J-wang-CSMA"},"content":" .withStudentId(\"00002\")","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"J-wang-CSMA"},"content":" .withTags(\"OwesMoney\", \"Friends\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"J-wang-CSMA"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\")","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"J-wang-CSMA"},"content":" .withFirstParentPhone(\"95352563\")","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"J-wang-CSMA"},"content":" .withSecondParentPhone(\"86070439\")","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"J-wang-CSMA"},"content":" .withEmail(\"heinz@example.com\")","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"J-wang-CSMA"},"content":" .withAddress(\"Wall Street\")","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"J-wang-CSMA"},"content":" .withStudentId(\"00003\").build();","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"J-wang-CSMA"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\")","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"J-wang-CSMA"},"content":" .withFirstParentPhone(\"87652533\")","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"J-wang-CSMA"},"content":" .withSecondParentPhone(\"93690682\")","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"J-wang-CSMA"},"content":" .withEmail(\"cornelia@example.com\")","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"J-wang-CSMA"},"content":" .withStudentId(\"00004\")","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"J-wang-CSMA"},"content":" .withAddress(\"10th street\")","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"J-wang-CSMA"},"content":" .withTags(\"Friends\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"J-wang-CSMA"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\")","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"J-wang-CSMA"},"content":" .withFirstParentPhone(\"94822224\")","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"J-wang-CSMA"},"content":" .withSecondParentPhone(\"93846702\")","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"J-wang-CSMA"},"content":" .withStudentId(\"00005\")","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"J-wang-CSMA"},"content":" .withEmail(\"werner@example.com\")","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"J-wang-CSMA"},"content":" .withAddress(\"Michegan Ave\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"J-wang-CSMA"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\")","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"J-wang-CSMA"},"content":" .withFirstParentPhone(\"94821427\")","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"J-wang-CSMA"},"content":" .withSecondParentPhone(\"85777773\")","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"J-wang-CSMA"},"content":" .withStudentId(\"00006\")","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"J-wang-CSMA"},"content":" .withEmail(\"lydia@example.com\")","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"J-wang-CSMA"},"content":" .withAddress(\"Little Tokyo\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"J-wang-CSMA"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\")","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"J-wang-CSMA"},"content":" .withFirstParentPhone(\"94822442\")","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"J-wang-CSMA"},"content":" .withSecondParentPhone(\"92136499\")","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"J-wang-CSMA"},"content":" .withStudentId(\"00007\")","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"J-wang-CSMA"},"content":" .withEmail(\"anna@example.com\")","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"J-wang-CSMA"},"content":" .withAddress(\"4th Street\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":76,"author":{"gitId":"J-wang-CSMA"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\")","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"J-wang-CSMA"},"content":" .withFirstParentPhone(\"84842424\")","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"J-wang-CSMA"},"content":" .withSecondParentPhone(\"89058882\")","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"J-wang-CSMA"},"content":" .withStudentId(\"00008\")","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"J-wang-CSMA"},"content":" .withEmail(\"stefan@example.com\")","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"J-wang-CSMA"},"content":" .withAddress(\"Little India\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"J-wang-CSMA"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\")","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"J-wang-CSMA"},"content":" .withFirstParentPhone(\"84821531\")","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"J-wang-CSMA"},"content":" .withSecondParentPhone(\"90434552\")","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"J-wang-CSMA"},"content":" .withStudentId(\"00009\")","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"J-wang-CSMA"},"content":" .withEmail(\"hans@example.com\")","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"J-wang-CSMA"},"content":" .withAddress(\"Chicago Ave\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":89,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22"},{"lineNumber":90,"author":{"gitId":"J-wang-CSMA"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"J-wang-CSMA"},"content":" .withFirstParentPhone(VALID_PHONE_ONE_AMY)","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"J-wang-CSMA"},"content":" .withSecondParentPhone(VALID_PHONE_TWO_AMY)","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"J-wang-CSMA"},"content":" .withStudentId(VALID_STUDENT_ID_AMY)","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"J-wang-CSMA"},"content":" .withEmail(VALID_EMAIL_AMY)","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"J-wang-CSMA"},"content":" .withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-02-18"},{"lineNumber":97,"author":{"gitId":"J-wang-CSMA"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"J-wang-CSMA"},"content":" .withFirstParentPhone(VALID_PHONE_ONE_BOB)","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"J-wang-CSMA"},"content":" .withSecondParentPhone(VALID_PHONE_TWO_BOB)","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" .withStudentId(VALID_STUDENT_ID_BOB)","lastModifiedDate":"2024-02-18"},{"lineNumber":101,"author":{"gitId":"J-wang-CSMA"},"content":" .withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2024-03-18"},{"lineNumber":102,"author":{"gitId":"J-wang-CSMA"},"content":" .withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-03-18"},{"lineNumber":103,"author":{"gitId":"J-wang-CSMA"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":110,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":111,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05"},{"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":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10"},{"lineNumber":116,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05"},{"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":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10"},{"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":{"-":57,"J-wang-CSMA":67}},{"path":"src/test/java/seedu/address/testutil/TypicalStudentIds.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ongzhili"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"ongzhili"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"ongzhili"},"content":"import seedu.address.model.person.StudentId;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"ongzhili"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"ongzhili"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"ongzhili"},"content":" * A utility class containing a list of {@code Index} objects to be used in tests.","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"ongzhili"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"ongzhili"},"content":"public class TypicalStudentIds {","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"ongzhili"},"content":" public static final StudentId ID_FIRST_PERSON \u003d new StudentId(\"00001\");","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"ongzhili"},"content":" public static final StudentId ID_SECOND_PERSON \u003d new StudentId(\"00002\");","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"ongzhili"},"content":" public static final StudentId ID_THIRD_PERSON \u003d new StudentId(\"00003\");","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"ongzhili"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"ongzhili":12}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"[![CI Status](https://github.com/AY2324S2-CS2103T-W10-3/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S2-CS2103T-W10-3/tp/actions)","lastModifiedDate":"2024-02-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"[![codecov](https://codecov.io/gh/AY2324S2-CS2103T-W10-3/tp/graph/badge.svg?token\u003dPXSE5NPSA4)](https://codecov.io/gh/AY2324S2-CS2103T-W10-3/tp)","lastModifiedDate":"2024-02-17"},{"lineNumber":3,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"ongzhili"},"content":"![Ui.png](docs%2Fimages%2FUi.png)","lastModifiedDate":"2024-03-04"},{"lineNumber":5,"author":{"gitId":"ongzhili"},"content":"# PedagoguePages","lastModifiedDate":"2024-03-04"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"ongzhili"},"content":"\u003e \"Building Bridges, Bridging Gaps: PedagoguePages, Your Contact Map\"","lastModifiedDate":"2024-03-04"},{"lineNumber":8,"author":{"gitId":"ongzhili"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":9,"author":{"gitId":"ongzhili"},"content":"## What is PedagoguePages?","lastModifiedDate":"2024-03-04"},{"lineNumber":10,"author":{"gitId":"ongzhili"},"content":"* `PedagoguePages` (`PePes` for short) is a **contact management application**.","lastModifiedDate":"2024-03-04"},{"lineNumber":11,"author":{"gitId":"ongzhili"},"content":"* Naming:","lastModifiedDate":"2024-03-04"},{"lineNumber":12,"author":{"gitId":"ongzhili"},"content":" * Product Name:","lastModifiedDate":"2024-03-04"},{"lineNumber":13,"author":{"gitId":"ongzhili"},"content":" * `Pedagogue` - Pedagogy, education.","lastModifiedDate":"2024-03-04"},{"lineNumber":14,"author":{"gitId":"ongzhili"},"content":" * `Pages` - Lists of contacts","lastModifiedDate":"2024-03-04"},{"lineNumber":15,"author":{"gitId":"ongzhili"},"content":" * Together, forming a contact list for educators!","lastModifiedDate":"2024-03-04"},{"lineNumber":16,"author":{"gitId":"ongzhili"},"content":" * Catchy abbreviation:","lastModifiedDate":"2024-03-04"},{"lineNumber":17,"author":{"gitId":"ongzhili"},"content":" * `Pe` from Pedagogue, and `Pes` from pages (`PAY-ge-S`)","lastModifiedDate":"2024-03-04"},{"lineNumber":18,"author":{"gitId":"ongzhili"},"content":" ","lastModifiedDate":"2024-03-04"},{"lineNumber":19,"author":{"gitId":"ongzhili"},"content":"* PedagogyPages is a **Command Line Interface** (CLI) based system.","lastModifiedDate":"2024-03-04"},{"lineNumber":20,"author":{"gitId":"ongzhili"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":21,"author":{"gitId":"ongzhili"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":22,"author":{"gitId":"ongzhili"},"content":"## What is PedagogyPages for?","lastModifiedDate":"2024-03-04"},{"lineNumber":23,"author":{"gitId":"ongzhili"},"content":"* PedagogyPages is optimized for **Educators**, specifically in the primary / secondary school area, where class sizes are large.\u003cbr\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":24,"author":{"gitId":"ongzhili"},"content":"* PedagogyPages is more optimized for users who are:","lastModifiedDate":"2024-03-04"},{"lineNumber":25,"author":{"gitId":"ongzhili"},"content":" * Generally faster typists","lastModifiedDate":"2024-03-04"},{"lineNumber":26,"author":{"gitId":"ongzhili"},"content":" * Users that prefer command line interfaces","lastModifiedDate":"2024-03-04"},{"lineNumber":27,"author":{"gitId":"ongzhili"},"content":"* PedagogyPages boasts features such as:","lastModifiedDate":"2024-03-04"},{"lineNumber":28,"author":{"gitId":"ongzhili"},"content":" * Basic **Create, Read, Update, Delete (CRUD)** operations on student contact information.","lastModifiedDate":"2024-03-04"},{"lineNumber":29,"author":{"gitId":"ongzhili"},"content":" * Search functionality based on different modes (e.g classes, student ID, etc)","lastModifiedDate":"2024-03-04"},{"lineNumber":30,"author":{"gitId":"ongzhili"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":31,"author":{"gitId":"ongzhili"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":32,"author":{"gitId":"ongzhili"},"content":"## What is PedagogyPages based on?","lastModifiedDate":"2024-03-04"},{"lineNumber":33,"author":{"gitId":"ongzhili"},"content":"* PedagogyPages is also our (CS2103-W10-3\u0027s) brownfield development project, based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-03-04"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * The project simulates an ongoing software project for a desktop application (called _AddressBook_) used for managing contact details.","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"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":36,"author":{"gitId":"-"},"content":" * It comes with a **reasonable level of user and developer documentation**.","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"* For the detailed documentation of this project, see the **[Address Book Product Website](https://se-education.org/addressbook-level3)**.","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"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":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-24"}],"authorContributionMap":{"ongzhili":29,"wallacexuhanxiao":1,"-":9}},{"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":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"J-wang-CSMA"},"content":"### Jeremy Wang","lastModifiedDate":"2024-02-28"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"J-wang-CSMA"},"content":"\u003cimg src\u003d\"images/j-wang-csma.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"J-wang-CSMA"},"content":"[[github](http://github.com/J-wang-CSMA)]","lastModifiedDate":"2024-02-28"},{"lineNumber":16,"author":{"gitId":"J-wang-CSMA"},"content":"[[portfolio](team/j-wang-csma.md)]","lastModifiedDate":"2024-02-28"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"J-wang-CSMA"},"content":"* Role: Developer, Deliverables and deadlines","lastModifiedDate":"2024-02-28"},{"lineNumber":19,"author":{"gitId":"J-wang-CSMA"},"content":"* Responsibilities: Data + UI","lastModifiedDate":"2024-02-28"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"wallacexuhanxiao"},"content":"### XU HANXIAO","lastModifiedDate":"2024-02-28"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"wallacexuhanxiao"},"content":"\u003cimg src\u003d\"images/wallacexuhanxiao.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"wallacexuhanxiao"},"content":"[[github](http://github.com/wallacexuhanxiao)]","lastModifiedDate":"2024-03-08"},{"lineNumber":26,"author":{"gitId":"wallacexuhanxiao"},"content":"[[portfolio](team/wallacexuhanxiao.md)]","lastModifiedDate":"2024-03-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"wallacexuhanxiao"},"content":"* Responsibilities: Develop","lastModifiedDate":"2024-02-28"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"ongzhili"},"content":"### Ong Zhi Li","lastModifiedDate":"2024-02-28"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"ongzhili"},"content":"\u003cimg src\u003d\"images/ongzhili.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"ongzhili"},"content":"[[github](http://github.com/ongzhili)]","lastModifiedDate":"2024-02-28"},{"lineNumber":36,"author":{"gitId":"ongzhili"},"content":"[[portfolio](team/ongzhili.md)]","lastModifiedDate":"2024-02-28"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"ongzhili"},"content":"* Responsibilities: UI + Logic handling","lastModifiedDate":"2024-02-28"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"IamZhenHong"},"content":"### Seng Zhen Hong","lastModifiedDate":"2024-03-07"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":43,"author":{"gitId":"IamZhenHong"},"content":"\u003cimg src\u003d\"images/iamzhenhong.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-07"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":45,"author":{"gitId":"IamZhenHong"},"content":"[[github](http://github.com/IamZhenHong)]","lastModifiedDate":"2024-03-07"},{"lineNumber":46,"author":{"gitId":"IamZhenHong"},"content":"[[portfolio](team/iamzhenhong.md)]","lastModifiedDate":"2024-03-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":48,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2024-03-08"},{"lineNumber":49,"author":{"gitId":"wallacexuhanxiao"},"content":"* Responsibilities: Develop","lastModifiedDate":"2024-03-08"},{"lineNumber":50,"author":{"gitId":"wallacexuhanxiao"},"content":"* ","lastModifiedDate":"2024-03-08"}],"authorContributionMap":{"IamZhenHong":4,"wallacexuhanxiao":7,"ongzhili":5,"-":28,"J-wang-CSMA":6}},{"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":"wallacexuhanxiao"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-02-28"},{"lineNumber":13,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","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":"## **Design**","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"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":26,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-07-31"},{"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":"\u003cimg src\u003d\"images/ArchitectureDiagram.png\" width\u003d\"280\" /\u003e","lastModifiedDate":"2021-07-31"},{"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":"-"},"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":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":"\u003cimg src\u003d\"images/ArchitectureSequenceDiagram.png\" width\u003d\"574\" /\u003e","lastModifiedDate":"2020-06-07"},{"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":"\u003cimg src\u003d\"images/ComponentManagers.png\" width\u003d\"300\" /\u003e","lastModifiedDate":"2021-07-31"},{"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":"-"},"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":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"![Structure of the UI Component](images/UiClassDiagram.png)","lastModifiedDate":"2021-07-31"},{"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":"-"},"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":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":"-"},"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":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":"\u003cimg src\u003d\"images/LogicClassDiagram.png\" width\u003d\"550\"/\u003e","lastModifiedDate":"2021-07-31"},{"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":"![Interactions Inside the Logic Component for the `delete 1` Command](images/DeleteSequenceDiagram.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"wallacexuhanxiao"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"find 1 Bob\")` API call as an example.","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"wallacexuhanxiao"},"content":"![Interactions Inside the Logic Component for the `find 1 Bob` Command](images/SearchSequenceDiagram.png)","lastModifiedDate":"2024-03-20"},{"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 continues till the end of diagram.","lastModifiedDate":"2024-02-09"},{"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).\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-02-09"},{"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":"2020-05-23"},{"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":"2021-07-31"},{"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":"2020-05-23"},{"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-09-03"},{"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":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23"},{"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":"2020-05-23"},{"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":"2020-05-23"},{"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":"-"},"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":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"![UndoRedoState2](images/UndoRedoState2.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"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":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"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":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":"![UndoRedoState3](images/UndoRedoState3.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"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":194,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Logic.png)","lastModifiedDate":"2024-02-09"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"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":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":208,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Model.png)","lastModifiedDate":"2024-02-09"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":210,"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":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"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":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"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":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":"![UndoRedoState4](images/UndoRedoState4.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"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":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":"![UndoRedoState5](images/UndoRedoState5.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":226,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/CommitActivityDiagram.png\" width\u003d\"250\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","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":"","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":253,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":254,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":255,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":256,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"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":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":262,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":264,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"wallacexuhanxiao"},"content":"* is an educator working with the education of primary / secondary students ","lastModifiedDate":"2024-02-28"},{"lineNumber":267,"author":{"gitId":"wallacexuhanxiao"},"content":"* require fast and organized access to students\u0027 and parents\u0027 contact detail ","lastModifiedDate":"2024-02-28"},{"lineNumber":268,"author":{"gitId":"wallacexuhanxiao"},"content":"* have many students\u0027 information to manage ","lastModifiedDate":"2024-02-28"},{"lineNumber":269,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23"},{"lineNumber":270,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26"},{"lineNumber":272,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":274,"author":{"gitId":"wallacexuhanxiao"},"content":"**Value proposition**: Provide fast and organized access to students’ and parents’ contact details for the educator across multiple classes with large class sizes.","lastModifiedDate":"2024-02-28"},{"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":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":282,"author":{"gitId":"-"},"content":"| -------- | ------------------------------------------ | ------------------------------ | ---------------------------------------------------------------------- |","lastModifiedDate":"2020-05-23"},{"lineNumber":283,"author":{"gitId":"-"},"content":"| `* * *` | new user | see usage instructions | refer to instructions when I forget how to use the App |","lastModifiedDate":"2020-05-23"},{"lineNumber":284,"author":{"gitId":"wallacexuhanxiao"},"content":"| `* * *` | teacher | view student and his/her parents’ contact records fully | contact them when needed. |","lastModifiedDate":"2024-02-28"},{"lineNumber":285,"author":{"gitId":"wallacexuhanxiao"},"content":"|`* * *` | teacher | easily update students’ contact records via their ID |track students’ latest contact information|","lastModifiedDate":"2024-02-28"},{"lineNumber":286,"author":{"gitId":"wallacexuhanxiao"},"content":"| `* * *` | teacher | delete student contact records | remove unnecessary data when a student graduates / drops out |","lastModifiedDate":"2024-02-28"},{"lineNumber":287,"author":{"gitId":"wallacexuhanxiao"},"content":"| `* * *` | teacher | easily identify duplicate entries | make sure there is no repetition of student records|","lastModifiedDate":"2024-02-28"},{"lineNumber":288,"author":{"gitId":"wallacexuhanxiao"},"content":"| `* *` | teacher | tag my students | find them easily|","lastModifiedDate":"2024-02-28"},{"lineNumber":289,"author":{"gitId":"wallacexuhanxiao"},"content":"| `* *` | administrator | delete all student info in one go| delete the whole class in one command after each semester|","lastModifiedDate":"2024-02-28"},{"lineNumber":290,"author":{"gitId":"wallacexuhanxiao"},"content":"| `* *` | expert teacher user | search for students by tags | view each class/CCA/tutoring group I am in charge of at a glance |","lastModifiedDate":"2024-02-28"},{"lineNumber":291,"author":{"gitId":"wallacexuhanxiao"},"content":"| `* *` | teacher | search for students by name | find specific student\u0027s information by their name |","lastModifiedDate":"2024-02-28"},{"lineNumber":292,"author":{"gitId":"wallacexuhanxiao"},"content":"| `* *` | teacher | search for students by id | find specific students by their unique student id |","lastModifiedDate":"2024-02-28"},{"lineNumber":293,"author":{"gitId":"wallacexuhanxiao"},"content":"| `* *` | busy teacher (teaching multiple subjects at once) | obtain class lists per class easily||","lastModifiedDate":"2024-02-28"},{"lineNumber":294,"author":{"gitId":"wallacexuhanxiao"},"content":"| `* *` | teacher | view my class roster at a glance| |","lastModifiedDate":"2024-02-28"},{"lineNumber":295,"author":{"gitId":"wallacexuhanxiao"},"content":"| `* *` | careful teacher | back up my students’ information| avoid losing any student\u0027s information|","lastModifiedDate":"2024-02-28"},{"lineNumber":296,"author":{"gitId":"wallacexuhanxiao"},"content":"| `* *` | school staff member |export contact lists for emergency purposes| ensure student safety in case of emergencies |","lastModifiedDate":"2024-02-28"},{"lineNumber":297,"author":{"gitId":"wallacexuhanxiao"},"content":"| `* *` | careless (but fast typing) teacher | run the command with some minor typo | use the application with greater ease|","lastModifiedDate":"2024-02-28"},{"lineNumber":298,"author":{"gitId":"wallacexuhanxiao"},"content":"| `* *`| forgetful teacher | add notes or additional information to each student | remember important details about them |","lastModifiedDate":"2024-02-28"},{"lineNumber":299,"author":{"gitId":"wallacexuhanxiao"},"content":"| `*` | careless teacher | undo my previous command | avoid making mistake like delete the wrong student | ","lastModifiedDate":"2024-02-28"},{"lineNumber":300,"author":{"gitId":"wallacexuhanxiao"},"content":"| `* ` | teacher | mark students’ attendance for each class session| |","lastModifiedDate":"2024-02-28"},{"lineNumber":301,"author":{"gitId":"wallacexuhanxiao"},"content":"| `* ` | teacher | set reminders for events such as parent-teacher/student-teacher meetings| I don\u0027t miss any important appointments|","lastModifiedDate":"2024-02-28"},{"lineNumber":302,"author":{"gitId":"wallacexuhanxiao"},"content":"| `*` | teacher | utilize the application to understand the geographic distribution of my students | planning school trips or outreach programs |","lastModifiedDate":"2024-02-28"},{"lineNumber":303,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":304,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":306,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":307,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":308,"author":{"gitId":"wallacexuhanxiao"},"content":"(For all use cases below, the **System** is the `PedagoguePages` and the **Actor** is the `teacher`, unless specified otherwise)","lastModifiedDate":"2024-02-28"},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":310,"author":{"gitId":"wallacexuhanxiao"},"content":"**Use case: View the usage help list**","lastModifiedDate":"2024-02-28"},{"lineNumber":311,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":312,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":313,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":314,"author":{"gitId":"wallacexuhanxiao"},"content":"1. Teacher requests to view the user guide of PedagoguePages","lastModifiedDate":"2024-02-28"},{"lineNumber":315,"author":{"gitId":"wallacexuhanxiao"},"content":"2. PedagoguePages shows the user guide to teacher","lastModifiedDate":"2024-02-28"},{"lineNumber":316,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":317,"author":{"gitId":"wallacexuhanxiao"},"content":" Use case ends.","lastModifiedDate":"2024-02-28"},{"lineNumber":318,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":319,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":320,"author":{"gitId":"wallacexuhanxiao"},"content":"**Use case: View the student list**","lastModifiedDate":"2024-02-28"},{"lineNumber":321,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":322,"author":{"gitId":"wallacexuhanxiao"},"content":"**MSS**","lastModifiedDate":"2024-02-28"},{"lineNumber":323,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":324,"author":{"gitId":"wallacexuhanxiao"},"content":"1. Teacher requests to view all the info in PedagoguePages","lastModifiedDate":"2024-02-28"},{"lineNumber":325,"author":{"gitId":"wallacexuhanxiao"},"content":"2. PedagoguePages shows a list of students\u0027 info","lastModifiedDate":"2024-02-28"},{"lineNumber":326,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":327,"author":{"gitId":"wallacexuhanxiao"},"content":" Use case ends.","lastModifiedDate":"2024-02-28"},{"lineNumber":328,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":329,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":330,"author":{"gitId":"wallacexuhanxiao"},"content":"**Use case: Delete a student**","lastModifiedDate":"2024-02-28"},{"lineNumber":331,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":332,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2024-02-28"},{"lineNumber":333,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":334,"author":{"gitId":"wallacexuhanxiao"},"content":"1. Teacher requests to find a student by his name","lastModifiedDate":"2024-02-28"},{"lineNumber":335,"author":{"gitId":"wallacexuhanxiao"},"content":"2. PedagoguePages shows a list of matched students","lastModifiedDate":"2024-02-28"},{"lineNumber":336,"author":{"gitId":"wallacexuhanxiao"},"content":"3. Teacher requests to delete a specific person in the list","lastModifiedDate":"2024-02-28"},{"lineNumber":337,"author":{"gitId":"wallacexuhanxiao"},"content":"4. PedagoguePages deletes the person","lastModifiedDate":"2024-02-28"},{"lineNumber":338,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":339,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2024-02-28"},{"lineNumber":340,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":341,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2024-02-28"},{"lineNumber":342,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":343,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-02-28"},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":345,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2024-02-28"},{"lineNumber":346,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":347,"author":{"gitId":"wallacexuhanxiao"},"content":"* 3a. The given student_id is invalid.","lastModifiedDate":"2024-02-28"},{"lineNumber":348,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":349,"author":{"gitId":"wallacexuhanxiao"},"content":" * 3a1. PedagoguePages shows an error message.","lastModifiedDate":"2024-02-28"},{"lineNumber":350,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":351,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-02-28"},{"lineNumber":352,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":353,"author":{"gitId":"wallacexuhanxiao"},"content":"**Use case: Add a student**","lastModifiedDate":"2024-02-28"},{"lineNumber":354,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":355,"author":{"gitId":"wallacexuhanxiao"},"content":"**MSS**","lastModifiedDate":"2024-02-28"},{"lineNumber":356,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":357,"author":{"gitId":"wallacexuhanxiao"},"content":"1. Teacher enter the student info","lastModifiedDate":"2024-02-28"},{"lineNumber":358,"author":{"gitId":"wallacexuhanxiao"},"content":"2. PedagoguePages shows a success message and add the student\u0027s info","lastModifiedDate":"2024-02-28"},{"lineNumber":359,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":360,"author":{"gitId":"wallacexuhanxiao"},"content":" Use case ends.","lastModifiedDate":"2024-02-28"},{"lineNumber":361,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":362,"author":{"gitId":"wallacexuhanxiao"},"content":"**Extensions**","lastModifiedDate":"2024-02-28"},{"lineNumber":363,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":364,"author":{"gitId":"wallacexuhanxiao"},"content":"* 2a. Teacher enter a invalid command.","lastModifiedDate":"2024-02-28"},{"lineNumber":365,"author":{"gitId":"wallacexuhanxiao"},"content":" * 2a1. PedagoguePages shows an error message and give a hint.","lastModifiedDate":"2024-02-28"},{"lineNumber":366,"author":{"gitId":"wallacexuhanxiao"},"content":" ","lastModifiedDate":"2024-02-28"},{"lineNumber":367,"author":{"gitId":"wallacexuhanxiao"},"content":" Use case ends.","lastModifiedDate":"2024-02-28"},{"lineNumber":368,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":369,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":370,"author":{"gitId":"wallacexuhanxiao"},"content":"**Use case: Update the info of a student**","lastModifiedDate":"2024-02-28"},{"lineNumber":371,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":372,"author":{"gitId":"wallacexuhanxiao"},"content":"**MSS**","lastModifiedDate":"2024-02-28"},{"lineNumber":373,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":374,"author":{"gitId":"wallacexuhanxiao"},"content":"1. Teacher requests to find a student by his name","lastModifiedDate":"2024-02-28"},{"lineNumber":375,"author":{"gitId":"wallacexuhanxiao"},"content":"2. PedagoguePages shows a list of matched students","lastModifiedDate":"2024-02-28"},{"lineNumber":376,"author":{"gitId":"wallacexuhanxiao"},"content":"3. Teacher requests to update the info of a specific person in the list","lastModifiedDate":"2024-02-28"},{"lineNumber":377,"author":{"gitId":"wallacexuhanxiao"},"content":"4. PedagoguePages update the info for the student","lastModifiedDate":"2024-02-28"},{"lineNumber":378,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23"},{"lineNumber":379,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":380,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":381,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":382,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":383,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2020-05-23"},{"lineNumber":384,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":385,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":386,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":387,"author":{"gitId":"wallacexuhanxiao"},"content":"* 3a. The given student_id is invalid.","lastModifiedDate":"2024-02-28"},{"lineNumber":388,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":389,"author":{"gitId":"wallacexuhanxiao"},"content":" * 3a1. PedagoguePages shows an error message.","lastModifiedDate":"2024-02-28"},{"lineNumber":390,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":391,"author":{"gitId":"wallacexuhanxiao"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-02-28"},{"lineNumber":392,"author":{"gitId":"wallacexuhanxiao"},"content":" ","lastModifiedDate":"2024-02-28"},{"lineNumber":393,"author":{"gitId":"wallacexuhanxiao"},"content":"* 3b. The updated field is in a wrong format","lastModifiedDate":"2024-02-28"},{"lineNumber":394,"author":{"gitId":"wallacexuhanxiao"},"content":" * 3b1. PedagoguePages shows an error message.","lastModifiedDate":"2024-03-04"},{"lineNumber":395,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":396,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23"},{"lineNumber":397,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":398,"author":{"gitId":"wallacexuhanxiao"},"content":"**Use case: find a group of a students by tag**","lastModifiedDate":"2024-02-28"},{"lineNumber":399,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":400,"author":{"gitId":"wallacexuhanxiao"},"content":"**MSS**","lastModifiedDate":"2024-02-28"},{"lineNumber":401,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":402,"author":{"gitId":"wallacexuhanxiao"},"content":"1. Teacher requests to find a group of students by specific tag","lastModifiedDate":"2024-02-28"},{"lineNumber":403,"author":{"gitId":"wallacexuhanxiao"},"content":"2. PedagoguePages shows a list of matched students","lastModifiedDate":"2024-02-28"},{"lineNumber":404,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":405,"author":{"gitId":"wallacexuhanxiao"},"content":" Use case ends.","lastModifiedDate":"2024-02-28"},{"lineNumber":406,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":407,"author":{"gitId":"wallacexuhanxiao"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":408,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":409,"author":{"gitId":"wallacexuhanxiao"},"content":"* 2a. The tag is invalid","lastModifiedDate":"2024-03-04"},{"lineNumber":410,"author":{"gitId":"wallacexuhanxiao"},"content":" * 2a1. PedagoguePages shows an error message.","lastModifiedDate":"2024-03-04"},{"lineNumber":411,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":412,"author":{"gitId":"wallacexuhanxiao"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":413,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":414,"author":{"gitId":"wallacexuhanxiao"},"content":"**Use case: find a specific student by name**","lastModifiedDate":"2024-02-28"},{"lineNumber":415,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":416,"author":{"gitId":"wallacexuhanxiao"},"content":"**MSS**","lastModifiedDate":"2024-02-28"},{"lineNumber":417,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":418,"author":{"gitId":"wallacexuhanxiao"},"content":"1. Teacher requests to find a student by student\u0027s name","lastModifiedDate":"2024-02-28"},{"lineNumber":419,"author":{"gitId":"wallacexuhanxiao"},"content":"2. PedagoguePages shows a list of matched students","lastModifiedDate":"2024-02-28"},{"lineNumber":420,"author":{"gitId":"wallacexuhanxiao"},"content":"3. Teacher select the student from the list","lastModifiedDate":"2024-02-28"},{"lineNumber":421,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":422,"author":{"gitId":"wallacexuhanxiao"},"content":" Use case ends.","lastModifiedDate":"2024-02-28"},{"lineNumber":423,"author":{"gitId":"wallacexuhanxiao"},"content":" ","lastModifiedDate":"2024-02-28"},{"lineNumber":424,"author":{"gitId":"wallacexuhanxiao"},"content":"**Extensions**","lastModifiedDate":"2024-02-28"},{"lineNumber":425,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":426,"author":{"gitId":"wallacexuhanxiao"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-02-28"},{"lineNumber":427,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":428,"author":{"gitId":"wallacexuhanxiao"},"content":" Use case ends.","lastModifiedDate":"2024-02-28"},{"lineNumber":429,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":430,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":431,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":432,"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":433,"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":434,"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":435,"author":{"gitId":"wallacexuhanxiao"},"content":"4. The system should respond all request within 1 minute.","lastModifiedDate":"2024-03-10"},{"lineNumber":436,"author":{"gitId":"wallacexuhanxiao"},"content":"5. Should not take more than 500 MB memory while running.","lastModifiedDate":"2024-03-10"},{"lineNumber":437,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":438,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":439,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":440,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":441,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09"},{"lineNumber":442,"author":{"gitId":"IamZhenHong"},"content":"* **PedadoguePages**: The name of the application","lastModifiedDate":"2024-03-07"},{"lineNumber":443,"author":{"gitId":"IamZhenHong"},"content":"* **Student_id**: Each students\u0027 unique identifier","lastModifiedDate":"2024-03-07"},{"lineNumber":444,"author":{"gitId":"wallacexuhanxiao"},"content":"* **MB**: Mega Bytes","lastModifiedDate":"2024-03-10"},{"lineNumber":445,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":446,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":447,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":448,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":449,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":450,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":451,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":452,"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":453,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":454,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":455,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":456,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":457,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":458,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":459,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":460,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":461,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":462,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":463,"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":464,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":465,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":466,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":467,"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":468,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":469,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":470,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":471,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":472,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":473,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":474,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":475,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":476,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":477,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":478,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":479,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":480,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":481,"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":482,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":483,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":484,"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":485,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":486,"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":487,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":488,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":489,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":490,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":491,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":492,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":493,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":494,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":495,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":496,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":497,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"IamZhenHong":2,"wallacexuhanxiao":117,"-":378}},{"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":"J-wang-CSMA"},"content":"Pedagogue Pages is a **desktop app for teachers of young children to manage class rosters, optimized for use via a Command Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI). Pedagogue Pages holds many advantages over traditional rostering methods, such as Excel and physical methods due to it being tailored for teachers of young children.","lastModifiedDate":"2024-03-24"},{"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":"J-wang-CSMA"},"content":"1. Download the latest `pedagoguepages.jar` from [here](https://github.com/AY2324S2-CS2103T-W10-3/tp/releases/tag/v1.2).","lastModifiedDate":"2024-03-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"J-wang-CSMA"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for Pedagogue Pages.","lastModifiedDate":"2024-03-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"J-wang-CSMA"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar pedagoguepages.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2024-03-24"},{"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":"J-wang-CSMA"},"content":" * `list` : Lists all students.","lastModifiedDate":"2024-03-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"J-wang-CSMA"},"content":" * `add n/John Doe p/98765432, 91233322 e/johnd@example.com a/311, Clementi Ave 2, #02-25 id/00007 t/Friends t/Owes Money` : Adds a student named `John Doe` with `Student ID` 00007 to Pedagogue Pages.","lastModifiedDate":"2024-03-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"J-wang-CSMA"},"content":" * `delete 00003` : Deletes the student with `Student ID` 00003 from the list.","lastModifiedDate":"2024-03-24"},{"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":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"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":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"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":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"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":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"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":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"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":60,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":62,"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":63,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"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":"J-wang-CSMA"},"content":"### Adding a student: `add`","lastModifiedDate":"2024-03-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"J-wang-CSMA"},"content":"Adds a student to Pedagogue Pages.","lastModifiedDate":"2024-03-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"J-wang-CSMA"},"content":"Format: `add n/NAME p/PARENT_PHONE_NUMBER_1, PARENT_PHONE_NUMBER_2 e/STUDENT_EMAIL a/ADDRESS id/STUDENT_ID [t/TAG]…​`","lastModifiedDate":"2024-03-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Tip:**","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"J-wang-CSMA"},"content":"A student can have any number of tags (including 0)","lastModifiedDate":"2024-03-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"J-wang-CSMA"},"content":"* `add n/John Doe p/98765432, 91233322 e/johnd@example.com a/311, Clementi Ave 2, #02-25 id/00001 t/Class 3A t/Owes Money`","lastModifiedDate":"2024-03-24"},{"lineNumber":86,"author":{"gitId":"J-wang-CSMA"},"content":"* `add n/Betsy Crowe t/Friend e/betsycrowe@example.com a/611, Queenstown Road, #05-24 p/81948732, 95738132 id/00002 `","lastModifiedDate":"2024-03-24"},{"lineNumber":87,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":88,"author":{"gitId":"J-wang-CSMA"},"content":"Input restrictions for each field can be found in this [table](##input restrictions).","lastModifiedDate":"2024-03-24"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"J-wang-CSMA"},"content":"### Listing all students : `list`","lastModifiedDate":"2024-03-24"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"J-wang-CSMA"},"content":"Shows a list of all students in Pedagogue Pages.","lastModifiedDate":"2024-03-24"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"J-wang-CSMA"},"content":"### Editing a student : `edit`","lastModifiedDate":"2024-03-24"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"J-wang-CSMA"},"content":"Edits an existing student in Pedagogue Pages.","lastModifiedDate":"2024-03-24"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"J-wang-CSMA"},"content":"Format: `edit STUDENT_ID [n/NAME] [p/PARENT_PHONE_NUMBER, WHICH_TO_EDIT] [e/EMAIL] [a/ADDRESS] [id/STUDENT ID] [t/TAG]…​`","lastModifiedDate":"2024-03-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"J-wang-CSMA"},"content":"* Edits the student with the specified `STUDENT_ID`.","lastModifiedDate":"2024-03-24"},{"lineNumber":103,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"J-wang-CSMA"},"content":"* When editing tags, the existing tags of the student will be removed i.e adding of tags is not cumulative.","lastModifiedDate":"2024-03-24"},{"lineNumber":106,"author":{"gitId":"J-wang-CSMA"},"content":"* You can remove all the student’s tags by typing `t/` without","lastModifiedDate":"2024-03-24"},{"lineNumber":107,"author":{"gitId":"-"},"content":" specifying any tags after it.","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"J-wang-CSMA"},"content":"* `edit 00001 p/91234567, 2 e/johndoe@example.com` Edits the second parent phone number and email address of the student with `STUDENT ID` 00001 to be `91234567` and `johndoe@example.com` respectively.","lastModifiedDate":"2024-03-24"},{"lineNumber":111,"author":{"gitId":"J-wang-CSMA"},"content":"* `edit 00002 n/Betsy Crower t/` Edits the name of the student with `STUDENT ID` 00002 to be `Betsy Crower` and clears all existing tags of the student.","lastModifiedDate":"2024-03-24"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"J-wang-CSMA"},"content":"### Locating students by name: `find`","lastModifiedDate":"2024-03-24"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"J-wang-CSMA"},"content":"Finds students based on the provided keywords.","lastModifiedDate":"2024-03-24"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"J-wang-CSMA"},"content":"Format: `find MODE KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2024-03-24"},{"lineNumber":118,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":119,"author":{"gitId":"J-wang-CSMA"},"content":"* The mode decides which parameter to search.","lastModifiedDate":"2024-03-24"},{"lineNumber":120,"author":{"gitId":"J-wang-CSMA"},"content":" * Mode 1: Find by `Name`","lastModifiedDate":"2024-03-24"},{"lineNumber":121,"author":{"gitId":"J-wang-CSMA"},"content":" * Mode 2: Find by `Student ID`","lastModifiedDate":"2024-03-24"},{"lineNumber":122,"author":{"gitId":"J-wang-CSMA"},"content":" * Mode 3: Find by `Tag`","lastModifiedDate":"2024-03-24"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"J-wang-CSMA"},"content":"* Students matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2024-03-24"},{"lineNumber":128,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"J-wang-CSMA"},"content":"* `find 1 John` returns `john` and `John Doe`","lastModifiedDate":"2024-03-24"},{"lineNumber":132,"author":{"gitId":"J-wang-CSMA"},"content":"* `find 2 00001` returns the student with `Student ID` 00001.","lastModifiedDate":"2024-03-24"},{"lineNumber":133,"author":{"gitId":"J-wang-CSMA"},"content":"* `find 3 Class 3A` returns all students with `Tag` Class 3A.","lastModifiedDate":"2024-03-24"},{"lineNumber":134,"author":{"gitId":"J-wang-CSMA"},"content":"* `find 1 alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2024-03-24"},{"lineNumber":135,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"J-wang-CSMA"},"content":"### Deleting a student : `delete`","lastModifiedDate":"2024-03-24"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"J-wang-CSMA"},"content":"Deletes the specified student from Pedagogue Pages.","lastModifiedDate":"2024-03-24"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"J-wang-CSMA"},"content":"Format: `delete STUDENT ID`","lastModifiedDate":"2024-03-24"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"J-wang-CSMA"},"content":"* Deletes the student with the specified `STUDENT ID`.","lastModifiedDate":"2024-03-24"},{"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":"J-wang-CSMA"},"content":"Clears all entries from Pedagogue Pages.","lastModifiedDate":"2024-03-24"},{"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":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"J-wang-CSMA"},"content":"Pedagogue Pages data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.","lastModifiedDate":"2024-03-24"},{"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":"J-wang-CSMA"},"content":"Pedagogue Pages data are saved automatically as a JSON file `[JAR file location]/data/pedagoguepages.json`. Advanced users are welcome to update data directly by editing that data file.","lastModifiedDate":"2024-03-24"},{"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":"J-wang-CSMA"},"content":"If your changes to the data file makes its format invalid, Pedagogue Pages 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.\u003cbr\u003e","lastModifiedDate":"2024-03-24"},{"lineNumber":167,"author":{"gitId":"J-wang-CSMA"},"content":"Furthermore, certain edits can cause the Pedagogue Pages to behave in unexpected ways (e.g., if a value entered is outside of the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.","lastModifiedDate":"2024-03-24"},{"lineNumber":168,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-02-04"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":170,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":171,"author":{"gitId":"J-wang-CSMA"},"content":"### Importing and exporting data files `[coming in v1.3]`","lastModifiedDate":"2024-03-24"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"J-wang-CSMA"},"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 Pedagogue Pages home folder.","lastModifiedDate":"2024-03-24"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","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":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":186,"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":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":188,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":190,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":"--------|------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"J-wang-CSMA"},"content":"**Add** | `add n/NAME p/PARENT_PHONE_NUMBER_1, PARENT_PHONE_NUMBER_2 e/STUDENT_EMAIL a/ADDRESS id/STUDENT_ID [t/TAG]…` \u003cbr\u003e e.g., `add n/John Doe p/98765432, 91233322 e/johnd@example.com a/311, Clementi Ave 2, #02-25 id/00007 t/Friends t/Owes Money` ","lastModifiedDate":"2024-03-24"},{"lineNumber":195,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"J-wang-CSMA"},"content":"**Delete** | `delete STUDENT ID`\u003cbr\u003e e.g., `delete 00003` ","lastModifiedDate":"2024-03-24"},{"lineNumber":197,"author":{"gitId":"J-wang-CSMA"},"content":"**Edit** | `edit STUDENT_ID [n/NAME] [p/PARENT_PHONE_NUMBER, WHICH_TO_EDIT] [e/EMAIL] [a/ADDRESS] [id/STUDENT ID] [t/TAG]…`\u003cbr\u003e e.g.,`edit 00002 n/James Lee e/jameslee@example.com` ","lastModifiedDate":"2024-03-24"},{"lineNumber":198,"author":{"gitId":"J-wang-CSMA"},"content":"**Find** | `find MODE KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find 1 James Jake`, `find 2 00005`, `find 3 Class 3B` ","lastModifiedDate":"2024-03-24"},{"lineNumber":199,"author":{"gitId":"-"},"content":"**List** | `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":202,"author":{"gitId":"J-wang-CSMA"},"content":"## Input restrictions","lastModifiedDate":"2024-03-24"},{"lineNumber":203,"author":{"gitId":"J-wang-CSMA"},"content":"Field | Restrictions","lastModifiedDate":"2024-03-24"},{"lineNumber":204,"author":{"gitId":"J-wang-CSMA"},"content":"--------|------------------","lastModifiedDate":"2024-03-24"},{"lineNumber":205,"author":{"gitId":"J-wang-CSMA"},"content":"**Name** | Type: Alphanumeric String, Other restrictions: - ","lastModifiedDate":"2024-03-24"},{"lineNumber":206,"author":{"gitId":"J-wang-CSMA"},"content":"**Parent phone number** | Type: 8 digit positive integer, Other restrictions: Must not begin with `0`. ","lastModifiedDate":"2024-03-24"},{"lineNumber":207,"author":{"gitId":"J-wang-CSMA"},"content":"**Email** | Type: Alphanumeric username followed by an \"@\", then an alphanumeric domain","lastModifiedDate":"2024-03-24"},{"lineNumber":208,"author":{"gitId":"J-wang-CSMA"},"content":"**Address** | Type: Alphanumeric String, Other restrictions: -","lastModifiedDate":"2024-03-24"},{"lineNumber":209,"author":{"gitId":"J-wang-CSMA"},"content":"**Student ID** | Type: 5 digit positive integer, Other restrictions: - ","lastModifiedDate":"2024-03-24"},{"lineNumber":210,"author":{"gitId":"J-wang-CSMA"},"content":"**Tags** | Type: Alphanumeric String, Other restrictions: Maximum length of `2` words ","lastModifiedDate":"2024-03-24"},{"lineNumber":211,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-24"}],"authorContributionMap":{"-":146,"J-wang-CSMA":65}},{"path":"docs/diagrams/AddSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"J-wang-CSMA"},"content":"@startuml","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"J-wang-CSMA"},"content":"!include style.puml","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"J-wang-CSMA"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"J-wang-CSMA"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"J-wang-CSMA"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"J-wang-CSMA"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"J-wang-CSMA"},"content":"participant \":AddCommandParser\" as AddCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"J-wang-CSMA"},"content":"participant \"p:Person\" as Person LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"J-wang-CSMA"},"content":"participant \"a:AddCommand\" as AddCommand LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"J-wang-CSMA"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"J-wang-CSMA"},"content":"end box","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"J-wang-CSMA"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"J-wang-CSMA"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"J-wang-CSMA"},"content":"end box","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"J-wang-CSMA"},"content":"[-\u003e LogicManager : execute(\"add ...\")","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"J-wang-CSMA"},"content":"activate LogicManager","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"J-wang-CSMA"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"add ...\")","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"J-wang-CSMA"},"content":"activate AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"J-wang-CSMA"},"content":"create AddCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"J-wang-CSMA"},"content":"AddressBookParser -\u003eAddCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"J-wang-CSMA"},"content":"activate AddCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"J-wang-CSMA"},"content":"AddCommandParser --\u003e AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"J-wang-CSMA"},"content":"deactivate AddCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"J-wang-CSMA"},"content":"AddressBookParser -\u003e AddCommandParser : parse(\" ... \")","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"J-wang-CSMA"},"content":"activate AddCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"J-wang-CSMA"},"content":"create Person","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"J-wang-CSMA"},"content":"AddCommandParser -\u003e Person : Person( ... )","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"J-wang-CSMA"},"content":"activate Person","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"J-wang-CSMA"},"content":"Person --\u003e AddCommandParser : p","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"J-wang-CSMA"},"content":"deactivate Person","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"J-wang-CSMA"},"content":"create AddCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"J-wang-CSMA"},"content":"AddCommandParser -\u003e AddCommand : AddCommand(p)","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"J-wang-CSMA"},"content":"activate AddCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"J-wang-CSMA"},"content":"AddCommand --\u003e AddCommandParser : a","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"J-wang-CSMA"},"content":"deactivate AddCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"J-wang-CSMA"},"content":"AddCommandParser --\u003e AddressBookParser : a","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"J-wang-CSMA"},"content":"deactivate AddCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"J-wang-CSMA"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"J-wang-CSMA"},"content":"AddCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"J-wang-CSMA"},"content":"destroy AddCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"J-wang-CSMA"},"content":"AddressBookParser --\u003e LogicManager : a","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"J-wang-CSMA"},"content":"deactivate AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"J-wang-CSMA"},"content":"LogicManager -\u003e AddCommand : execute(m)","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"J-wang-CSMA"},"content":"activate AddCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"J-wang-CSMA"},"content":"AddCommand -\u003e Model : addPerson(p)","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"J-wang-CSMA"},"content":"activate Model","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"J-wang-CSMA"},"content":"Model --\u003e AddCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"J-wang-CSMA"},"content":"deactivate Model","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"J-wang-CSMA"},"content":"create CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"J-wang-CSMA"},"content":"AddCommand -\u003e CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"J-wang-CSMA"},"content":"activate CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"J-wang-CSMA"},"content":"CommandResult --\u003e AddCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"J-wang-CSMA"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"J-wang-CSMA"},"content":"AddCommand --\u003e LogicManager : r","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"J-wang-CSMA"},"content":"deactivate AddCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"J-wang-CSMA"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"J-wang-CSMA"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"J-wang-CSMA"},"content":"@enduml","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"J-wang-CSMA":80}},{"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 \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-02-09"},{"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 \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-02-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"ongzhili"},"content":"[-\u003e LogicManager : execute(\"delete \u003cid\u003e\")","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":"activate LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"ongzhili"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"delete \u003cid\u003e\")","lastModifiedDate":"2024-03-20"},{"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":"ongzhili"},"content":"AddressBookParser -\u003e DeleteCommandParser : parse(\"\u003cid\u003e\")","lastModifiedDate":"2024-03-20"},{"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 :","lastModifiedDate":"2024-02-09"},{"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(m)","lastModifiedDate":"2024-02-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":"activate DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":52,"author":{"gitId":"ongzhili"},"content":"DeleteCommand -\u003e Model : deletePerson(id)","lastModifiedDate":"2024-03-20"},{"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 : r","lastModifiedDate":"2024-02-09"},{"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":{"ongzhili":4,"-":66}},{"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":"-"},"content":"Class UniquePersonList","lastModifiedDate":"2021-07-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Class Person","lastModifiedDate":"2019-07-03"},{"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":"-"},"content":"Class Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"Class Tag","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":23,"author":{"gitId":"-"},"content":"Class I #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"AddressBook .up.|\u003e ReadOnlyAddressBook","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"ModelManager .up.|\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"Model .right.\u003e ReadOnlyUserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":33,"author":{"gitId":"-"},"content":"Model .left.\u003e ReadOnlyAddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"ModelManager -left-\u003e \"1\" AddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":"ModelManager -right-\u003e \"1\" UserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"UserPrefs .up.|\u003e ReadOnlyUserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"AddressBook *--\u003e \"1\" UniquePersonList","lastModifiedDate":"2019-07-30"},{"lineNumber":39,"author":{"gitId":"-"},"content":"UniquePersonList --\u003e \"~* all\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":40,"author":{"gitId":"J-wang-CSMA"},"content":"Person *--\u003e \"1\" Name","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"J-wang-CSMA"},"content":"Person *--\u003e \"2\" Phone","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"J-wang-CSMA"},"content":"Person *--\u003e \"1\" Email","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"J-wang-CSMA"},"content":"Person *--\u003e \"1\" Address","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":"Person *--\u003e \"*\" Tag","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"Person -[hidden]up--\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":"UniquePersonList -[hidden]right-\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"Name -[hidden]right-\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":50,"author":{"gitId":"-"},"content":"Phone -[hidden]right-\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"Address -[hidden]right-\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":53,"author":{"gitId":"-"},"content":"ModelManager --\u003e \"~* filtered\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":54,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"-":50,"J-wang-CSMA":4}},{"path":"docs/diagrams/SearchSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"wallacexuhanxiao"},"content":"@startuml","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"wallacexuhanxiao"},"content":"!include style.puml","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"wallacexuhanxiao"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"wallacexuhanxiao"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"wallacexuhanxiao"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"wallacexuhanxiao"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"wallacexuhanxiao"},"content":"participant \":FindCommandParser\" as FindCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"wallacexuhanxiao"},"content":"participant \"f:FindCommand\" as FindCommand LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"wallacexuhanxiao"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"wallacexuhanxiao"},"content":"end box","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"wallacexuhanxiao"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"wallacexuhanxiao"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"wallacexuhanxiao"},"content":"end box","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"wallacexuhanxiao"},"content":"[-\u003e LogicManager : execute(\"find 1 Bob\")","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"wallacexuhanxiao"},"content":"activate LogicManager","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"wallacexuhanxiao"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"find 1 Bob\")","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"wallacexuhanxiao"},"content":"activate AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"wallacexuhanxiao"},"content":"create FindCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"wallacexuhanxiao"},"content":"AddressBookParser -\u003e FindCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"wallacexuhanxiao"},"content":"activate FindCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"wallacexuhanxiao"},"content":"FindCommandParser --\u003e AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"wallacexuhanxiao"},"content":"deactivate FindCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"wallacexuhanxiao"},"content":"AddressBookParser -\u003e FindCommandParser : parse(\"1 Bob\")","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"wallacexuhanxiao"},"content":"activate FindCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"wallacexuhanxiao"},"content":"create FindCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"wallacexuhanxiao"},"content":"FindCommandParser -\u003e FindCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"wallacexuhanxiao"},"content":"activate FindCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"wallacexuhanxiao"},"content":"FindCommand --\u003e FindCommandParser :","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"wallacexuhanxiao"},"content":"deactivate FindCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"wallacexuhanxiao"},"content":"FindCommandParser --\u003e AddressBookParser : f","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"wallacexuhanxiao"},"content":"deactivate FindCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"wallacexuhanxiao"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"wallacexuhanxiao"},"content":"FindCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"wallacexuhanxiao"},"content":"destroy FindCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"wallacexuhanxiao"},"content":"AddressBookParser --\u003e LogicManager : f","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"wallacexuhanxiao"},"content":"deactivate AddressBookParser","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"wallacexuhanxiao"},"content":"LogicManager -\u003e FindCommand : execute(m)","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"wallacexuhanxiao"},"content":"activate FindCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"wallacexuhanxiao"},"content":"FindCommand -\u003e Model : updateFilteredPersonList(Predicate)","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"wallacexuhanxiao"},"content":"activate Model","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"wallacexuhanxiao"},"content":"Model --\u003e FindCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"wallacexuhanxiao"},"content":"deactivate Model","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"wallacexuhanxiao"},"content":"create CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"wallacexuhanxiao"},"content":"FindCommand -\u003e CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"wallacexuhanxiao"},"content":"activate CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"wallacexuhanxiao"},"content":"CommandResult --\u003e FindCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"wallacexuhanxiao"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"wallacexuhanxiao"},"content":"FindCommand --\u003e LogicManager : r","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"wallacexuhanxiao"},"content":"deactivate FindCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"wallacexuhanxiao"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"wallacexuhanxiao"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"wallacexuhanxiao"},"content":"@enduml","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"wallacexuhanxiao":70}},{"path":"docs/team/iamzhenhong.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"IamZhenHong"},"content":"# zhen hong \u0027s Project Portfolio Page","lastModifiedDate":"2024-03-07"}],"authorContributionMap":{"IamZhenHong":1}},{"path":"docs/team/j-wang-csma.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"J-wang-CSMA"},"content":"---","lastModifiedDate":"2024-02-28"},{"lineNumber":2,"author":{"gitId":"J-wang-CSMA"},"content":"layout: page","lastModifiedDate":"2024-02-28"},{"lineNumber":3,"author":{"gitId":"J-wang-CSMA"},"content":"title: Jeremy Wang\u0027s Project Portfolio Page","lastModifiedDate":"2024-02-28"},{"lineNumber":4,"author":{"gitId":"J-wang-CSMA"},"content":"---","lastModifiedDate":"2024-02-28"},{"lineNumber":5,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":6,"author":{"gitId":"J-wang-CSMA"},"content":"### Project: PedagoguePages","lastModifiedDate":"2024-02-28"},{"lineNumber":7,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":8,"author":{"gitId":"J-wang-CSMA"},"content":"PedagoguePages is a desktop address book application for teachers to manage their students\u0027 contact information.","lastModifiedDate":"2024-02-28"},{"lineNumber":9,"author":{"gitId":"J-wang-CSMA"},"content":"The user interacts with it using a CLI, and it has a GUI created with JavaFX.","lastModifiedDate":"2024-02-28"},{"lineNumber":10,"author":{"gitId":"J-wang-CSMA"},"content":"It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-02-28"},{"lineNumber":11,"author":{"gitId":"J-wang-CSMA"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-02-28"},{"lineNumber":12,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":13,"author":{"gitId":"J-wang-CSMA"},"content":"* **New Features**: ","lastModifiedDate":"2024-02-28"},{"lineNumber":14,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":15,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":16,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":17,"author":{"gitId":"J-wang-CSMA"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-02-28"},{"lineNumber":18,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":19,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":20,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":21,"author":{"gitId":"J-wang-CSMA"},"content":"* **Project management**:","lastModifiedDate":"2024-02-28"},{"lineNumber":22,"author":{"gitId":"J-wang-CSMA"},"content":" * Managed releases: ","lastModifiedDate":"2024-02-28"},{"lineNumber":23,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":24,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":25,"author":{"gitId":"J-wang-CSMA"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-02-28"},{"lineNumber":26,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":27,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":28,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":29,"author":{"gitId":"J-wang-CSMA"},"content":"* **Documentation**:","lastModifiedDate":"2024-02-28"},{"lineNumber":30,"author":{"gitId":"J-wang-CSMA"},"content":" * User Guide:","lastModifiedDate":"2024-02-28"},{"lineNumber":31,"author":{"gitId":"J-wang-CSMA"},"content":" * Developer Guide:","lastModifiedDate":"2024-02-28"},{"lineNumber":32,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":33,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":34,"author":{"gitId":"J-wang-CSMA"},"content":"* **Community**:","lastModifiedDate":"2024-02-28"},{"lineNumber":35,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":36,"author":{"gitId":"J-wang-CSMA"},"content":"* **Tools**:","lastModifiedDate":"2024-02-28"},{"lineNumber":37,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-02-28"}],"authorContributionMap":{"J-wang-CSMA":37}},{"path":"docs/team/ongzhili.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"ongzhili"},"content":"---","lastModifiedDate":"2024-02-28"},{"lineNumber":2,"author":{"gitId":"ongzhili"},"content":"layout: page","lastModifiedDate":"2024-02-28"},{"lineNumber":3,"author":{"gitId":"ongzhili"},"content":"title: John Doe\u0027s Project Portfolio Page","lastModifiedDate":"2024-02-28"},{"lineNumber":4,"author":{"gitId":"ongzhili"},"content":"---","lastModifiedDate":"2024-02-28"},{"lineNumber":5,"author":{"gitId":"ongzhili"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":6,"author":{"gitId":"ongzhili"},"content":"### Project: PedagogyPages","lastModifiedDate":"2024-02-28"},{"lineNumber":7,"author":{"gitId":"ongzhili"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":8,"author":{"gitId":"ongzhili"},"content":"PedagogyPages is a desktop address book","lastModifiedDate":"2024-02-28"},{"lineNumber":9,"author":{"gitId":"ongzhili"},"content":"application used for teachers to manage their students\u0027 contact information. ","lastModifiedDate":"2024-02-28"},{"lineNumber":10,"author":{"gitId":"ongzhili"},"content":"The user interacts with it using a CLI, and it has a GUI created with JavaFX. ","lastModifiedDate":"2024-02-28"},{"lineNumber":11,"author":{"gitId":"ongzhili"},"content":"It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-02-28"},{"lineNumber":12,"author":{"gitId":"ongzhili"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":13,"author":{"gitId":"ongzhili"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-02-28"},{"lineNumber":14,"author":{"gitId":"ongzhili"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":15,"author":{"gitId":"ongzhili"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-02-28"},{"lineNumber":16,"author":{"gitId":"ongzhili"},"content":"","lastModifiedDate":"2024-02-28"},{"lineNumber":17,"author":{"gitId":"ongzhili"},"content":"* **Documentation**:","lastModifiedDate":"2024-02-28"},{"lineNumber":18,"author":{"gitId":"ongzhili"},"content":" * User Guide:","lastModifiedDate":"2024-02-28"},{"lineNumber":19,"author":{"gitId":"ongzhili"},"content":" * Updated AboutUs with own information","lastModifiedDate":"2024-02-28"},{"lineNumber":20,"author":{"gitId":"ongzhili"},"content":" * Added portfolio file (this file)","lastModifiedDate":"2024-02-28"}],"authorContributionMap":{"ongzhili":20}},{"path":"docs/team/wallacexuhanxiao.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"wallacexuhanxiao"},"content":"# Hanxiao\u0027s Project Portfolio Page","lastModifiedDate":"2024-02-28"}],"authorContributionMap":{"wallacexuhanxiao":1}},{"path":"src/main/java/seedu/address/commons/core/Config.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.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":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"J-wang-CSMA"},"content":" * Config values used by Pedagogue Pages","lastModifiedDate":"2024-03-21"},{"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":{"-":65,"J-wang-CSMA":1}},{"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":"J-wang-CSMA"},"content":" private static final String LOG_FILE \u003d \"pedagoguePages.log\";","lastModifiedDate":"2024-03-21"},{"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":{"-":105,"J-wang-CSMA":1}},{"path":"src/main/java/seedu/address/commons/util/StringFormatter.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"J-wang-CSMA"},"content":"package seedu.address.commons.util;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"J-wang-CSMA"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"J-wang-CSMA"},"content":" * Helper functions to handle Strings while changing them.","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"J-wang-CSMA"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"J-wang-CSMA"},"content":"public class StringFormatter {","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"J-wang-CSMA"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"J-wang-CSMA"},"content":" * Capitalizes every first letter of the input String. Only capitalizes the first character if it is a letter","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"J-wang-CSMA"},"content":" * otherwise it does not attempt to capitalize the first character.","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"J-wang-CSMA"},"content":" *","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"J-wang-CSMA"},"content":" * @param input Input string.","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"J-wang-CSMA"},"content":" * @return The same string, except the first letter of every word is now capitalised.","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"J-wang-CSMA"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"J-wang-CSMA"},"content":" public static String capitalizeWords(String input) {","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"J-wang-CSMA"},"content":" if (input \u003d\u003d null || input.isEmpty()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"J-wang-CSMA"},"content":" return input;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"J-wang-CSMA"},"content":" StringBuilder capitalized \u003d new StringBuilder();","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"J-wang-CSMA"},"content":" String[] words \u003d input.split(\"\\\\s+\");","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"J-wang-CSMA"},"content":" for (String word : words) {","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"J-wang-CSMA"},"content":" if (word.isEmpty()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"J-wang-CSMA"},"content":" continue; // Skip empty words","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"J-wang-CSMA"},"content":" char firstChar \u003d word.charAt(0);","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"J-wang-CSMA"},"content":" capitalized.append(Character.isLetter(firstChar) ? Character.toUpperCase(firstChar) : firstChar);","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"J-wang-CSMA"},"content":" capitalized.append(word.substring(1)).append(\" \");","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"J-wang-CSMA"},"content":" return capitalized.toString().trim();","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"J-wang-CSMA"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"J-wang-CSMA":35}},{"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":"J-wang-CSMA"},"content":" * Helper functions for handling strings without changing them.","lastModifiedDate":"2024-03-21"},{"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":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"-":67,"J-wang-CSMA":1}},{"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":"ongzhili"},"content":" public static final String MESSAGE_INVALID_STUDENT_ID \u003d \"The student ID provided is invalid\";","lastModifiedDate":"2024-03-17"},{"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":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"J-wang-CSMA"},"content":" .append(\"; First parent phone: \")","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"J-wang-CSMA"},"content":" .append(person.getParentPhoneOne())","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"J-wang-CSMA"},"content":" .append(\"; Second parent phone: \")","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"J-wang-CSMA"},"content":" .append(person.getParentPhoneTwo())","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" .append(\"; STUDENT_ID: \")","lastModifiedDate":"2024-02-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" .append(person.getStudentId())","lastModifiedDate":"2024-02-19"},{"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":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"ongzhili":1,"-":51,"J-wang-CSMA":4}},{"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":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":7,"author":{"gitId":"J-wang-CSMA"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PARENT_PHONES;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_ID;","lastModifiedDate":"2024-02-18"},{"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":"J-wang-CSMA"},"content":" * Adds a student to PedagoguePages.","lastModifiedDate":"2024-03-21"},{"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":"J-wang-CSMA"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a student to PedagoguePages. \"","lastModifiedDate":"2024-03-21"},{"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":"J-wang-CSMA"},"content":" + PREFIX_PARENT_PHONES + \"PARENT PHONE NUMBERS \"","lastModifiedDate":"2024-03-18"},{"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_STUDENT_ID + \"STUDENT_ID \"","lastModifiedDate":"2024-02-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09"},{"lineNumber":32,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06"},{"lineNumber":34,"author":{"gitId":"J-wang-CSMA"},"content":" + PREFIX_PARENT_PHONES + \"98765432, 91233322 \"","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":" + PREFIX_STUDENT_ID + \"00001 \"","lastModifiedDate":"2024-02-18"},{"lineNumber":38,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2017-05-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"owesMoney\";","lastModifiedDate":"2017-05-09"},{"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":"J-wang-CSMA"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the contact list.\";","lastModifiedDate":"2024-03-21"},{"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":{"-":81,"J-wang-CSMA":6}},{"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":"J-wang-CSMA"},"content":" * Clears Pedagogue Pages.","lastModifiedDate":"2024-03-21"},{"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":"J-wang-CSMA"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Contact list has been cleared!\";","lastModifiedDate":"2024-03-21"},{"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":{"-":21,"J-wang-CSMA":2}},{"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.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"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":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":12,"author":{"gitId":"ongzhili"},"content":"import seedu.address.model.person.StudentId;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"J-wang-CSMA"},"content":" * Deletes a student identified with their student ID from the contact list.","lastModifiedDate":"2024-03-21"},{"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":"J-wang-CSMA"},"content":" + \": Deletes the person identified by student ID used in the displayed person list.\\n\"","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"ongzhili"},"content":" + \"Parameters: INDEX (must be a 5 digit student ID)\\n\"","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"ongzhili"},"content":" + \"Example: \" + COMMAND_WORD + \" 12345\";","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Person: %1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"ongzhili"},"content":" private final StudentId targetId;","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"ongzhili"},"content":" public DeleteCommand(StudentId targetId) {","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"ongzhili"},"content":" this.targetId \u003d targetId;","lastModifiedDate":"2024-03-17"},{"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":"IamZhenHong"},"content":" boolean found \u003d false;","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"ongzhili"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"IamZhenHong"},"content":" // Iterate through the list to find the person with the target student ID","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"IamZhenHong"},"content":" for (Person candidate : lastShownList) {","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"ongzhili"},"content":" if (candidate.getStudentId().equals(targetId)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"IamZhenHong"},"content":" // If the person with the target student ID is found, delete it","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"IamZhenHong"},"content":" model.deletePerson(candidate);","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"IamZhenHong"},"content":" found \u003d true;","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"IamZhenHong"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(candidate)));","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"ongzhili"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"ongzhili"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"IamZhenHong"},"content":" // If the person with the target student ID is not found, throw an exception","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"IamZhenHong"},"content":" if (!found) {","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"ongzhili"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_STUDENT_ID);","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":55,"author":{"gitId":"IamZhenHong"},"content":" return new CommandResult(MESSAGE_DELETE_PERSON_SUCCESS);","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"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 DeleteCommand)) {","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":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":71,"author":{"gitId":"ongzhili"},"content":" return targetId.equals(otherDeleteCommand.targetId);","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"ongzhili"},"content":" .add(\"targetId\", targetId)","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"IamZhenHong":10,"ongzhili":13,"-":55,"J-wang-CSMA":2}},{"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":"J-wang-CSMA"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PARENT_PHONES;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_ID;","lastModifiedDate":"2024-02-18"},{"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.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.person.StudentId;","lastModifiedDate":"2024-02-18"},{"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":"J-wang-CSMA"},"content":" * Edits the details of an existing student Pedagogue Pages.","lastModifiedDate":"2024-03-21"},{"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":"J-wang-CSMA"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the student identified \"","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"J-wang-CSMA"},"content":" + \"by the student ID used in the displayed person list. \"","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26"},{"lineNumber":42,"author":{"gitId":"IamZhenHong"},"content":" + \"Parameters: STUDENT_ID (must be positive 5-digit integers) \"","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06"},{"lineNumber":44,"author":{"gitId":"J-wang-CSMA"},"content":" + \"[\" + PREFIX_PARENT_PHONES + \"PHONE, WHICH PHONE NUMBER TO EDIT] \"","lastModifiedDate":"2024-03-18"},{"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_STUDENT_ID + \"STUDENT_ID] \"","lastModifiedDate":"2024-02-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":50,"author":{"gitId":"J-wang-CSMA"},"content":" + PREFIX_PARENT_PHONES + \"91234567, 2\"","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26"},{"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":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":56,"author":{"gitId":"IamZhenHong"},"content":" private final StudentId studentId;","lastModifiedDate":"2024-03-20"},{"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":"IamZhenHong"},"content":" * @param studentId of the person in the filtered person list to edit","lastModifiedDate":"2024-03-20"},{"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":"IamZhenHong"},"content":" public EditCommand(StudentId studentId, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"IamZhenHong"},"content":" requireNonNull(studentId);","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":67,"author":{"gitId":"IamZhenHong"},"content":" this.studentId \u003d studentId;","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"IamZhenHong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26"},{"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":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":77,"author":{"gitId":"IamZhenHong"},"content":" Person personToEdit \u003d null;","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"IamZhenHong"},"content":" boolean found \u003d false;","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"IamZhenHong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"IamZhenHong"},"content":" for (Person person : lastShownList) {","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"IamZhenHong"},"content":" if (person.getStudentId().equals(this.studentId)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"IamZhenHong"},"content":" personToEdit \u003d person;","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"IamZhenHong"},"content":" found \u003d true;","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"IamZhenHong"},"content":" break;","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"IamZhenHong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"IamZhenHong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"IamZhenHong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"IamZhenHong"},"content":" if (!found) {","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"IamZhenHong"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_STUDENT_ID);","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","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":"J-wang-CSMA"},"content":" Phone updatedParentPhoneOne \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"J-wang-CSMA"},"content":" editPersonDescriptor.getFirstParentPhone().orElse(personToEdit.getParentPhoneOne());","lastModifiedDate":"2024-03-18"},{"lineNumber":113,"author":{"gitId":"J-wang-CSMA"},"content":" Phone updatedParentPhoneTwo \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"J-wang-CSMA"},"content":" editPersonDescriptor.getSecondParentPhone().orElse(personToEdit.getParentPhoneTwo());","lastModifiedDate":"2024-03-18"},{"lineNumber":115,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":116,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2017-06-21"},{"lineNumber":117,"author":{"gitId":"-"},"content":" StudentId updatedStudentId \u003d editPersonDescriptor.getStudentId().orElse(personToEdit.getStudentId());","lastModifiedDate":"2024-02-18"},{"lineNumber":118,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2017-06-21"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":120,"author":{"gitId":"J-wang-CSMA"},"content":" return new Person(updatedName, updatedParentPhoneOne, updatedParentPhoneTwo, updatedEmail, updatedAddress,","lastModifiedDate":"2024-03-18"},{"lineNumber":121,"author":{"gitId":"J-wang-CSMA"},"content":" updatedStudentId, updatedTags);","lastModifiedDate":"2024-03-18"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":124,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" return true;","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":" // instanceof handles nulls","lastModifiedDate":"2017-05-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":136,"author":{"gitId":"IamZhenHong"},"content":" return studentId.equals(otherEditCommand.studentId)","lastModifiedDate":"2024-03-20"},{"lineNumber":137,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":143,"author":{"gitId":"IamZhenHong"},"content":" .add(\"studentId\", studentId)","lastModifiedDate":"2024-03-20"},{"lineNumber":144,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":149,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26"},{"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":"J-wang-CSMA"},"content":" private Phone firstParentPhone;","lastModifiedDate":"2024-03-18"},{"lineNumber":155,"author":{"gitId":"J-wang-CSMA"},"content":" private Phone secondParentPhone;","lastModifiedDate":"2024-03-18"},{"lineNumber":156,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":157,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21"},{"lineNumber":158,"author":{"gitId":"-"},"content":" private StudentId studentId;","lastModifiedDate":"2024-02-18"},{"lineNumber":159,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":161,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":163,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":164,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11"},{"lineNumber":165,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":166,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":167,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26"},{"lineNumber":168,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15"},{"lineNumber":169,"author":{"gitId":"J-wang-CSMA"},"content":" setFirstParentPhone(toCopy.firstParentPhone);","lastModifiedDate":"2024-03-18"},{"lineNumber":170,"author":{"gitId":"J-wang-CSMA"},"content":" setSecondParentPhone(toCopy.secondParentPhone);","lastModifiedDate":"2024-03-18"},{"lineNumber":171,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15"},{"lineNumber":172,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15"},{"lineNumber":173,"author":{"gitId":"-"},"content":" setStudentId(toCopy.studentId);","lastModifiedDate":"2024-02-18"},{"lineNumber":174,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11"},{"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":"J-wang-CSMA"},"content":" return CollectionUtil.isAnyNonNull(name, firstParentPhone, secondParentPhone, email, address, studentId,","lastModifiedDate":"2024-03-18"},{"lineNumber":182,"author":{"gitId":"J-wang-CSMA"},"content":" tags);","lastModifiedDate":"2024-03-18"},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":185,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21"},{"lineNumber":186,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":189,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":190,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21"},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":193,"author":{"gitId":"J-wang-CSMA"},"content":" public void setPhone(Phone phone, String numberToEdit) {","lastModifiedDate":"2024-03-18"},{"lineNumber":194,"author":{"gitId":"J-wang-CSMA"},"content":" if (\"1\".equals(numberToEdit)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":195,"author":{"gitId":"J-wang-CSMA"},"content":" setFirstParentPhone(phone);","lastModifiedDate":"2024-03-18"},{"lineNumber":196,"author":{"gitId":"J-wang-CSMA"},"content":" } else if (\"2\".equals(numberToEdit)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":197,"author":{"gitId":"J-wang-CSMA"},"content":" setSecondParentPhone(phone);","lastModifiedDate":"2024-03-18"},{"lineNumber":198,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":199,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":200,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":201,"author":{"gitId":"J-wang-CSMA"},"content":" public void setFirstParentPhone(Phone phone) {","lastModifiedDate":"2024-03-18"},{"lineNumber":202,"author":{"gitId":"J-wang-CSMA"},"content":" this.firstParentPhone \u003d phone;","lastModifiedDate":"2024-03-18"},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":205,"author":{"gitId":"J-wang-CSMA"},"content":" public void setSecondParentPhone(Phone phone) {","lastModifiedDate":"2024-03-18"},{"lineNumber":206,"author":{"gitId":"J-wang-CSMA"},"content":" this.secondParentPhone \u003d phone;","lastModifiedDate":"2024-03-18"},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":209,"author":{"gitId":"J-wang-CSMA"},"content":" public Optional\u003cPhone\u003e getFirstParentPhone() {","lastModifiedDate":"2024-03-18"},{"lineNumber":210,"author":{"gitId":"J-wang-CSMA"},"content":" return Optional.ofNullable(firstParentPhone);","lastModifiedDate":"2024-03-18"},{"lineNumber":211,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":212,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":213,"author":{"gitId":"IamZhenHong"},"content":" public Optional\u003cPhone\u003e getSecondParentPhone() {","lastModifiedDate":"2024-03-20"},{"lineNumber":214,"author":{"gitId":"IamZhenHong"},"content":" return Optional.ofNullable(secondParentPhone);","lastModifiedDate":"2024-03-20"},{"lineNumber":215,"author":{"gitId":"IamZhenHong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":216,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":217,"author":{"gitId":"J-wang-CSMA"},"content":" public Optional\u003cPhone\u003e getEditedPhone() {","lastModifiedDate":"2024-03-18"},{"lineNumber":218,"author":{"gitId":"J-wang-CSMA"},"content":" if (firstParentPhone !\u003d null) {","lastModifiedDate":"2024-03-18"},{"lineNumber":219,"author":{"gitId":"J-wang-CSMA"},"content":" return Optional.ofNullable(firstParentPhone);","lastModifiedDate":"2024-03-18"},{"lineNumber":220,"author":{"gitId":"J-wang-CSMA"},"content":" } else {","lastModifiedDate":"2024-03-18"},{"lineNumber":221,"author":{"gitId":"J-wang-CSMA"},"content":" return Optional.ofNullable(secondParentPhone);","lastModifiedDate":"2024-03-18"},{"lineNumber":222,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":223,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":225,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21"},{"lineNumber":226,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21"},{"lineNumber":227,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":229,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":230,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21"},{"lineNumber":231,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":233,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21"},{"lineNumber":234,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21"},{"lineNumber":235,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":237,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26"},{"lineNumber":238,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21"},{"lineNumber":239,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":241,"author":{"gitId":"-"},"content":" public void setStudentId(StudentId studentId) {","lastModifiedDate":"2024-02-18"},{"lineNumber":242,"author":{"gitId":"-"},"content":" this.studentId \u003d studentId;","lastModifiedDate":"2024-02-18"},{"lineNumber":243,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-18"},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-18"},{"lineNumber":245,"author":{"gitId":"-"},"content":" public Optional\u003cStudentId\u003e getStudentId() {","lastModifiedDate":"2024-02-18"},{"lineNumber":246,"author":{"gitId":"-"},"content":" return Optional.ofNullable(studentId);","lastModifiedDate":"2024-02-18"},{"lineNumber":247,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-18"},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-18"},{"lineNumber":249,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":250,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11"},{"lineNumber":251,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":252,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":253,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21"},{"lineNumber":254,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11"},{"lineNumber":255,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":257,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":258,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11"},{"lineNumber":259,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11"},{"lineNumber":260,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11"},{"lineNumber":261,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":262,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":263,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11"},{"lineNumber":264,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":266,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":267,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":268,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":269,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":270,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":272,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":273,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05"},{"lineNumber":274,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":275,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":277,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":278,"author":{"gitId":"J-wang-CSMA"},"content":" if (firstParentPhone !\u003d null) {","lastModifiedDate":"2024-03-18"},{"lineNumber":279,"author":{"gitId":"J-wang-CSMA"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2024-03-18"},{"lineNumber":280,"author":{"gitId":"J-wang-CSMA"},"content":" \u0026\u0026 Objects.equals(firstParentPhone, otherEditPersonDescriptor.firstParentPhone)","lastModifiedDate":"2024-03-18"},{"lineNumber":281,"author":{"gitId":"J-wang-CSMA"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2024-03-18"},{"lineNumber":282,"author":{"gitId":"J-wang-CSMA"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2024-03-18"},{"lineNumber":283,"author":{"gitId":"J-wang-CSMA"},"content":" \u0026\u0026 Objects.equals(studentId, otherEditPersonDescriptor.studentId)","lastModifiedDate":"2024-03-18"},{"lineNumber":284,"author":{"gitId":"J-wang-CSMA"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags);","lastModifiedDate":"2024-03-18"},{"lineNumber":285,"author":{"gitId":"J-wang-CSMA"},"content":" } else {","lastModifiedDate":"2024-03-18"},{"lineNumber":286,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":287,"author":{"gitId":"J-wang-CSMA"},"content":" \u0026\u0026 Objects.equals(secondParentPhone, otherEditPersonDescriptor.secondParentPhone)","lastModifiedDate":"2024-03-18"},{"lineNumber":288,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":289,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":290,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(studentId, otherEditPersonDescriptor.studentId)","lastModifiedDate":"2024-02-18"},{"lineNumber":291,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags);","lastModifiedDate":"2023-07-13"},{"lineNumber":292,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":293,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-18"},{"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":"J-wang-CSMA"},"content":" if (firstParentPhone !\u003d null) {","lastModifiedDate":"2024-03-18"},{"lineNumber":298,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":299,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":300,"author":{"gitId":"J-wang-CSMA"},"content":" .add(\"edited phone\", firstParentPhone)","lastModifiedDate":"2024-03-18"},{"lineNumber":301,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":302,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":303,"author":{"gitId":"-"},"content":" .add(\"student id\", studentId)","lastModifiedDate":"2024-02-18"},{"lineNumber":304,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":305,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":306,"author":{"gitId":"J-wang-CSMA"},"content":" } else {","lastModifiedDate":"2024-03-18"},{"lineNumber":307,"author":{"gitId":"J-wang-CSMA"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-18"},{"lineNumber":308,"author":{"gitId":"J-wang-CSMA"},"content":" .add(\"name\", name)","lastModifiedDate":"2024-03-18"},{"lineNumber":309,"author":{"gitId":"J-wang-CSMA"},"content":" .add(\"edited phone\", secondParentPhone)","lastModifiedDate":"2024-03-18"},{"lineNumber":310,"author":{"gitId":"J-wang-CSMA"},"content":" .add(\"email\", email)","lastModifiedDate":"2024-03-18"},{"lineNumber":311,"author":{"gitId":"J-wang-CSMA"},"content":" .add(\"address\", address)","lastModifiedDate":"2024-03-18"},{"lineNumber":312,"author":{"gitId":"J-wang-CSMA"},"content":" .add(\"student id\", studentId)","lastModifiedDate":"2024-03-18"},{"lineNumber":313,"author":{"gitId":"J-wang-CSMA"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2024-03-18"},{"lineNumber":314,"author":{"gitId":"J-wang-CSMA"},"content":" .toString();","lastModifiedDate":"2024-03-18"},{"lineNumber":315,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":316,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":317,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":318,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"IamZhenHong":25,"-":231,"J-wang-CSMA":62}},{"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":"wallacexuhanxiao"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-10"},{"lineNumber":6,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-10"},{"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-07-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":10,"author":{"gitId":"wallacexuhanxiao"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all persons whose names contain any of \"","lastModifiedDate":"2016-09-22"},{"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":"wallacexuhanxiao"},"content":" private Predicate\u003cPerson\u003e predicate;","lastModifiedDate":"2024-03-10"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":27,"author":{"gitId":"wallacexuhanxiao"},"content":" public FindCommand(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2024-03-10"},{"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":"2024-03-10"},{"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":{"wallacexuhanxiao":5,"-":55}},{"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":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":7,"author":{"gitId":"J-wang-CSMA"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PARENT_PHONES;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_ID;","lastModifiedDate":"2024-02-18"},{"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":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05"},{"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.person.Address;","lastModifiedDate":"2017-03-17"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-03-17"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-03-17"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-03-17"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.StudentId;","lastModifiedDate":"2024-02-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05"},{"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-02-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":35,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":36,"author":{"gitId":"J-wang-CSMA"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PARENT_PHONES, PREFIX_EMAIL,","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"-"},"content":" PREFIX_ADDRESS, PREFIX_STUDENT_ID, PREFIX_TAG);","lastModifiedDate":"2024-02-18"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":39,"author":{"gitId":"J-wang-CSMA"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_PARENT_PHONES, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"J-wang-CSMA"},"content":" PREFIX_STUDENT_ID)","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":45,"author":{"gitId":"J-wang-CSMA"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PARENT_PHONES, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":47,"author":{"gitId":"J-wang-CSMA"},"content":" Phone parentPhoneOne \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PARENT_PHONES).get())[0];","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"J-wang-CSMA"},"content":" Phone parentPhoneTwo \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PARENT_PHONES).get())[1];","lastModifiedDate":"2024-03-18"},{"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":" StudentId studentId \u003d ParserUtil.parseStudentId(argMultimap.getValue(PREFIX_STUDENT_ID).get());","lastModifiedDate":"2024-02-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":54,"author":{"gitId":"J-wang-CSMA"},"content":" Person person \u003d new Person(name, parentPhoneOne, parentPhoneTwo, email, address, studentId, tagList);","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":63,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":67,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"-":59,"J-wang-CSMA":8}},{"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":"J-wang-CSMA"},"content":" public static final Prefix PREFIX_PARENT_PHONES \u003d new Prefix(\"p/\");","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":" public static final Prefix PREFIX_STUDENT_ID \u003d new Prefix(\"id/\");","lastModifiedDate":"2024-02-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"-":14,"J-wang-CSMA":1}},{"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.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":"ongzhili"},"content":"import seedu.address.model.person.StudentId;","lastModifiedDate":"2024-03-17"},{"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":"-"},"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":"2017-03-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":21,"author":{"gitId":"ongzhili"},"content":" StudentId targetId \u003d ParserUtil.parseStudentId(args);","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"ongzhili"},"content":" return new DeleteCommand(targetId);","lastModifiedDate":"2024-03-17"},{"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":{"ongzhili":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":"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":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":8,"author":{"gitId":"J-wang-CSMA"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PARENT_PHONES;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_ID;","lastModifiedDate":"2024-02-18"},{"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.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":"J-wang-CSMA"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"IamZhenHong"},"content":"import seedu.address.model.person.StudentId;","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":36,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":38,"author":{"gitId":"J-wang-CSMA"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PARENT_PHONES,","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_STUDENT_ID, PREFIX_TAG);","lastModifiedDate":"2024-02-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":42,"author":{"gitId":"IamZhenHong"},"content":" StudentId studentId \u003d null;","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"IamZhenHong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"IamZhenHong"},"content":" String preamble \u003d argMultimap.getPreamble().trim();","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"IamZhenHong"},"content":" if (StudentId.isValidStudentId(preamble)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"IamZhenHong"},"content":" studentId \u003d new StudentId(preamble);","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"IamZhenHong"},"content":" } else {","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"IamZhenHong"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":51,"author":{"gitId":"J-wang-CSMA"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PARENT_PHONES,","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":" PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_STUDENT_ID);","lastModifiedDate":"2024-02-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":"J-wang-CSMA"},"content":" if (argMultimap.getValue(PREFIX_PARENT_PHONES).isPresent()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"J-wang-CSMA"},"content":" String[] phoneArray \u003d ParserUtil.parsePhoneForEdit(argMultimap.getValue(PREFIX_PARENT_PHONES).get());","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"J-wang-CSMA"},"content":" String phoneString \u003d phoneArray[0].trim();","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"J-wang-CSMA"},"content":" String numberToEdit \u003d phoneArray[1].trim();","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"J-wang-CSMA"},"content":" Phone phone \u003d new Phone(phoneString);","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"J-wang-CSMA"},"content":" editPersonDescriptor.setPhone(phone, numberToEdit);","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":67,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":69,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":70,"author":{"gitId":"-"},"content":" editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_STUDENT_ID).isPresent()) {","lastModifiedDate":"2024-02-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":" editPersonDescriptor.setStudentId(ParserUtil.parseStudentId(argMultimap.getValue(PREFIX_STUDENT_ID).get()));","lastModifiedDate":"2024-02-18"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-18"},{"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":"IamZhenHong"},"content":" return new EditCommand(studentId, editPersonDescriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"IamZhenHong"},"content":"","lastModifiedDate":"2024-03-20"},{"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"},{"lineNumber":86,"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":87,"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":88,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07"},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":90,"author":{"gitId":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":93,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":94,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":96,"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":97,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"IamZhenHong":10,"-":80,"J-wang-CSMA":10}},{"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":"wallacexuhanxiao"},"content":"import seedu.address.model.person.IdMatchesPredicate;","lastModifiedDate":"2024-03-10"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"wallacexuhanxiao"},"content":"import seedu.address.model.person.StudentId;","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"wallacexuhanxiao"},"content":"import seedu.address.model.person.TagMatchesPredicate;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"wallacexuhanxiao"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new FindCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class FindCommandParser implements Parser\u003cFindCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the FindCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * and returns a FindCommand object for execution.","lastModifiedDate":"2019-05-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public FindCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2017-02-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2017-02-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11"},{"lineNumber":29,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-01-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":" String[] nameKeywords \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2017-06-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"wallacexuhanxiao"},"content":" String modeToken \u003d nameKeywords[0];","lastModifiedDate":"2024-03-10"},{"lineNumber":35,"author":{"gitId":"wallacexuhanxiao"},"content":" nameKeywords \u003d Arrays.copyOfRange(nameKeywords, 1, nameKeywords.length);","lastModifiedDate":"2024-03-10"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":37,"author":{"gitId":"wallacexuhanxiao"},"content":" if (modeToken.equals(\"1\")) {","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"wallacexuhanxiao"},"content":" return new FindCommand(new NameContainsKeywordsPredicate(Arrays.asList(nameKeywords)));","lastModifiedDate":"2024-03-10"},{"lineNumber":39,"author":{"gitId":"wallacexuhanxiao"},"content":" } else if (modeToken.equals(\"2\")) {","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"wallacexuhanxiao"},"content":" return new FindCommand(new IdMatchesPredicate(new StudentId(nameKeywords[0])));","lastModifiedDate":"2024-03-10"},{"lineNumber":41,"author":{"gitId":"wallacexuhanxiao"},"content":" } else if (modeToken.equals(\"3\")) {","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"wallacexuhanxiao"},"content":" return new FindCommand(new TagMatchesPredicate(new Tag(nameKeywords[0])));","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"wallacexuhanxiao"},"content":" } else {","lastModifiedDate":"2024-03-10"},{"lineNumber":44,"author":{"gitId":"wallacexuhanxiao"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-10"},{"lineNumber":45,"author":{"gitId":"wallacexuhanxiao"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-10"},{"lineNumber":46,"author":{"gitId":"wallacexuhanxiao"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":47,"author":{"gitId":"wallacexuhanxiao"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":48,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"wallacexuhanxiao":17,"-":31}},{"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":"J-wang-CSMA"},"content":"import seedu.address.commons.util.StringFormatter;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-02-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-02-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.StudentId;","lastModifiedDate":"2024-02-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11"},{"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":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"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":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"J-wang-CSMA"},"content":" String capitalisedName \u003d StringFormatter.capitalizeWords(name);","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"J-wang-CSMA"},"content":" return new Name(capitalisedName);","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-02-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Parses a {@code String studentId} into a {@code StudentId}.","lastModifiedDate":"2024-02-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-02-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2024-02-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code studentId} is invalid.","lastModifiedDate":"2024-02-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static StudentId parseStudentId(String studentId) throws ParseException {","lastModifiedDate":"2024-02-18"},{"lineNumber":49,"author":{"gitId":"-"},"content":" requireNonNull(studentId);","lastModifiedDate":"2024-02-18"},{"lineNumber":50,"author":{"gitId":"-"},"content":" String trimmedStudentId \u003d studentId.trim();","lastModifiedDate":"2024-02-18"},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (!StudentId.isValidStudentId(trimmedStudentId)) {","lastModifiedDate":"2024-02-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":" throw new ParseException(StudentId.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-18"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-18"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return new StudentId(trimmedStudentId);","lastModifiedDate":"2024-02-18"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-18"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-18"},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":58,"author":{"gitId":"J-wang-CSMA"},"content":" * Parses a {@code String phone} into an array of 2 {@code Phone}.","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":60,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":61,"author":{"gitId":"J-wang-CSMA"},"content":" * @throws ParseException if the given {@code phone} is invalid and if less than 2 phone numbers are provided.","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":63,"author":{"gitId":"J-wang-CSMA"},"content":" public static Phone[] parsePhone(String phones) throws ParseException {","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"J-wang-CSMA"},"content":" requireNonNull(phones);","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"J-wang-CSMA"},"content":" String[] splitPhones \u003d phones.split(\",\");","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"J-wang-CSMA"},"content":" Phone[] phoneArray \u003d new Phone[2];","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"wallacexuhanxiao"},"content":" if (splitPhones.length \u003d\u003d 2) {","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"J-wang-CSMA"},"content":" for (int i \u003d 0; i \u003c splitPhones.length; i++) {","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"J-wang-CSMA"},"content":" String trimmedPhone \u003d splitPhones[i].trim();","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"J-wang-CSMA"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"J-wang-CSMA"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"J-wang-CSMA"},"content":" phoneArray[i] \u003d new Phone(trimmedPhone);","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"J-wang-CSMA"},"content":" return phoneArray;","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"wallacexuhanxiao"},"content":" } else if (splitPhones.length \u003d\u003d 1) {","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"wallacexuhanxiao"},"content":" String trimmedPhone \u003d splitPhones[0].trim();","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"wallacexuhanxiao"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"wallacexuhanxiao"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"wallacexuhanxiao"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"wallacexuhanxiao"},"content":" phoneArray[0] \u003d new Phone(trimmedPhone);","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"wallacexuhanxiao"},"content":" phoneArray[1] \u003d new Phone(trimmedPhone);","lastModifiedDate":"2024-03-19"},{"lineNumber":84,"author":{"gitId":"wallacexuhanxiao"},"content":" return phoneArray;","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"wallacexuhanxiao"},"content":" } else {","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"wallacexuhanxiao"},"content":" throw new ParseException(Phone.INVALID_NUMBER_OF_PHONES);","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"wallacexuhanxiao"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"J-wang-CSMA"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"J-wang-CSMA"},"content":" * Parses a {@code String phone} into an array of the {@code Phone} to edit and a {@code number} to designate","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"J-wang-CSMA"},"content":" * which parent phone number to edit.","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"J-wang-CSMA"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"J-wang-CSMA"},"content":" * @throws ParseException if the given {@code phone} is invalid and if the second input is invalid.","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"J-wang-CSMA"},"content":" public static String[] parsePhoneForEdit(String phone) throws ParseException {","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30"},{"lineNumber":99,"author":{"gitId":"J-wang-CSMA"},"content":" String[] splitInput \u003d phone.split(\",\");","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":101,"author":{"gitId":"J-wang-CSMA"},"content":" if (splitInput.length !\u003d 2) {","lastModifiedDate":"2024-03-18"},{"lineNumber":102,"author":{"gitId":"J-wang-CSMA"},"content":" throw new ParseException(Phone.INVALID_EDIT_INPUT);","lastModifiedDate":"2024-03-18"},{"lineNumber":103,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":104,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":105,"author":{"gitId":"J-wang-CSMA"},"content":" String trimmedPhone \u003d splitInput[0].trim();","lastModifiedDate":"2024-03-18"},{"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":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":110,"author":{"gitId":"J-wang-CSMA"},"content":" String number \u003d splitInput[1].trim();","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"J-wang-CSMA"},"content":" //Checks if it is either \"1\" or \"2\"","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"J-wang-CSMA"},"content":" if (!number.equals(\"1\") \u0026\u0026 !number.equals(\"2\")) {","lastModifiedDate":"2024-03-18"},{"lineNumber":113,"author":{"gitId":"J-wang-CSMA"},"content":" throw new ParseException(Phone.INVALID_EDIT_INPUT);","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":115,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"J-wang-CSMA"},"content":" return splitInput;","lastModifiedDate":"2024-03-18"},{"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-05-30"},{"lineNumber":120,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30"},{"lineNumber":121,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":122,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":123,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":124,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":125,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":126,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30"},{"lineNumber":127,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":128,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":129,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":131,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":132,"author":{"gitId":"J-wang-CSMA"},"content":" String capitalizedAddress \u003d StringFormatter.capitalizeWords(trimmedAddress);","lastModifiedDate":"2024-03-21"},{"lineNumber":133,"author":{"gitId":"J-wang-CSMA"},"content":" return new Address(capitalizedAddress);","lastModifiedDate":"2024-03-21"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":136,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":137,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","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 email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":141,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":143,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":144,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":145,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":146,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":148,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","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-05-30"},{"lineNumber":152,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":153,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":154,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":155,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":156,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":157,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":158,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30"},{"lineNumber":159,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":160,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":161,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":163,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":164,"author":{"gitId":"J-wang-CSMA"},"content":" String capitalizedTag \u003d StringFormatter.capitalizeWords(trimmedTag);","lastModifiedDate":"2024-03-21"},{"lineNumber":165,"author":{"gitId":"J-wang-CSMA"},"content":" return new Tag(capitalizedTag);","lastModifiedDate":"2024-03-21"},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":168,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":169,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07"},{"lineNumber":170,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":171,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":172,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15"},{"lineNumber":173,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11"},{"lineNumber":174,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11"},{"lineNumber":175,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30"},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":177,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":179,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"wallacexuhanxiao":13,"-":118,"J-wang-CSMA":48}},{"path":"src/main/java/seedu/address/model/person/IdMatchesPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"wallacexuhanxiao"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":3,"author":{"gitId":"wallacexuhanxiao"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-10"},{"lineNumber":4,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":5,"author":{"gitId":"wallacexuhanxiao"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-10"},{"lineNumber":6,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":7,"author":{"gitId":"wallacexuhanxiao"},"content":"/**","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"wallacexuhanxiao"},"content":" * Tests that a {@code Person}\u0027s {@code StudentId} matches the Student Id given.","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"wallacexuhanxiao"},"content":" */","lastModifiedDate":"2024-03-10"},{"lineNumber":10,"author":{"gitId":"wallacexuhanxiao"},"content":"public class IdMatchesPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-03-10"},{"lineNumber":11,"author":{"gitId":"wallacexuhanxiao"},"content":" private final StudentId studentId;","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":13,"author":{"gitId":"wallacexuhanxiao"},"content":" public IdMatchesPredicate(StudentId studentId) {","lastModifiedDate":"2024-03-10"},{"lineNumber":14,"author":{"gitId":"wallacexuhanxiao"},"content":" this.studentId \u003d studentId;","lastModifiedDate":"2024-03-10"},{"lineNumber":15,"author":{"gitId":"wallacexuhanxiao"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":16,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":17,"author":{"gitId":"wallacexuhanxiao"},"content":" @Override","lastModifiedDate":"2024-03-10"},{"lineNumber":18,"author":{"gitId":"wallacexuhanxiao"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-03-10"},{"lineNumber":19,"author":{"gitId":"wallacexuhanxiao"},"content":" return person.getStudentId().equals(studentId);","lastModifiedDate":"2024-03-10"},{"lineNumber":20,"author":{"gitId":"wallacexuhanxiao"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":21,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":22,"author":{"gitId":"wallacexuhanxiao"},"content":" @Override","lastModifiedDate":"2024-03-10"},{"lineNumber":23,"author":{"gitId":"wallacexuhanxiao"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-10"},{"lineNumber":24,"author":{"gitId":"wallacexuhanxiao"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-10"},{"lineNumber":25,"author":{"gitId":"wallacexuhanxiao"},"content":" return true;","lastModifiedDate":"2024-03-10"},{"lineNumber":26,"author":{"gitId":"wallacexuhanxiao"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":27,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":28,"author":{"gitId":"wallacexuhanxiao"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-10"},{"lineNumber":29,"author":{"gitId":"wallacexuhanxiao"},"content":" if (!(other instanceof IdMatchesPredicate)) {","lastModifiedDate":"2024-03-10"},{"lineNumber":30,"author":{"gitId":"wallacexuhanxiao"},"content":" return false;","lastModifiedDate":"2024-03-10"},{"lineNumber":31,"author":{"gitId":"wallacexuhanxiao"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":32,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":33,"author":{"gitId":"wallacexuhanxiao"},"content":" IdMatchesPredicate otherId \u003d (IdMatchesPredicate) other;","lastModifiedDate":"2024-03-10"},{"lineNumber":34,"author":{"gitId":"wallacexuhanxiao"},"content":" return studentId.equals(otherId.studentId);","lastModifiedDate":"2024-03-10"},{"lineNumber":35,"author":{"gitId":"wallacexuhanxiao"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":36,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":37,"author":{"gitId":"wallacexuhanxiao"},"content":" @Override","lastModifiedDate":"2024-03-10"},{"lineNumber":38,"author":{"gitId":"wallacexuhanxiao"},"content":" public String toString() {","lastModifiedDate":"2024-03-10"},{"lineNumber":39,"author":{"gitId":"wallacexuhanxiao"},"content":" return new ToStringBuilder(this).add(\"student id\", studentId).toString();","lastModifiedDate":"2024-03-10"},{"lineNumber":40,"author":{"gitId":"wallacexuhanxiao"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":41,"author":{"gitId":"wallacexuhanxiao"},"content":"}","lastModifiedDate":"2024-03-10"},{"lineNumber":42,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-10"}],"authorContributionMap":{"wallacexuhanxiao":42}},{"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 StudentId studentId;","lastModifiedDate":"2024-02-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":22,"author":{"gitId":"J-wang-CSMA"},"content":" private final Phone parentPhoneOne;","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"J-wang-CSMA"},"content":" private final Phone parentPhoneTwo;","lastModifiedDate":"2024-03-18"},{"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":"J-wang-CSMA"},"content":" public Person(Name name, Phone parentPhoneOne, Phone parentPhoneTwo, Email email, Address address,","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"J-wang-CSMA"},"content":" StudentId studentId, Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"J-wang-CSMA"},"content":" requireAllNonNull(name, parentPhoneOne, parentPhoneTwo, email, address, tags, studentId);","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.studentId \u003d studentId;","lastModifiedDate":"2024-02-18"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20"},{"lineNumber":38,"author":{"gitId":"J-wang-CSMA"},"content":" this.parentPhoneOne \u003d parentPhoneOne;","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"J-wang-CSMA"},"content":" this.parentPhoneTwo \u003d parentPhoneTwo;","lastModifiedDate":"2024-03-18"},{"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 StudentId getStudentId() {","lastModifiedDate":"2024-02-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":" return studentId;","lastModifiedDate":"2024-02-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-18"},{"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":"J-wang-CSMA"},"content":" public Phone getParentPhoneOne() {","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"J-wang-CSMA"},"content":" return parentPhoneOne;","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"IamZhenHong"},"content":" public Phone getParentPhoneTwo() {","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"IamZhenHong"},"content":" return parentPhoneTwo;","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":68,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07"},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26"},{"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":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-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":"-"},"content":" \u0026\u0026 otherPerson.getStudentId().equals(getStudentId());","lastModifiedDate":"2024-02-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":"J-wang-CSMA"},"content":" \u0026\u0026 parentPhoneOne.equals(otherPerson.parentPhoneOne)","lastModifiedDate":"2024-03-18"},{"lineNumber":107,"author":{"gitId":"J-wang-CSMA"},"content":" \u0026\u0026 parentPhoneTwo.equals(otherPerson.parentPhoneTwo)","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" \u0026\u0026 tags.equals(otherPerson.tags)","lastModifiedDate":"2024-02-18"},{"lineNumber":111,"author":{"gitId":"-"},"content":" \u0026\u0026 studentId.equals(otherPerson.studentId);","lastModifiedDate":"2024-02-18"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-18"},{"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":"J-wang-CSMA"},"content":" return Objects.hash(name, parentPhoneOne, parentPhoneTwo, email, address, studentId, tags);","lastModifiedDate":"2024-03-18"},{"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":"J-wang-CSMA"},"content":" .add(\"parent phone 1\", parentPhoneOne)","lastModifiedDate":"2024-03-18"},{"lineNumber":126,"author":{"gitId":"J-wang-CSMA"},"content":" .add(\"parent phone 2\", parentPhoneTwo)","lastModifiedDate":"2024-03-18"},{"lineNumber":127,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":" .add(\"student id\", studentId)","lastModifiedDate":"2024-02-18"},{"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":{"IamZhenHong":2,"-":118,"J-wang-CSMA":14}},{"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":"J-wang-CSMA"},"content":" * Represents a student\u0027s parents\u0027 phone numbers in the address book.","lastModifiedDate":"2024-03-18"},{"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":"J-wang-CSMA"},"content":" \"Phone numbers should be an 8 digits positive number with a non-zero number as the first digit.\";","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"J-wang-CSMA"},"content":" public static final String INVALID_NUMBER_OF_PHONES \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"J-wang-CSMA"},"content":" \"Two parent phone numbers need to be provided.\";","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"J-wang-CSMA"},"content":" public static final String INVALID_EDIT_INPUT \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"J-wang-CSMA"},"content":" \"The valid input for an edit phone input is: {new phone number}, {number of phone number to edit}.\";","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"J-wang-CSMA"},"content":" public static final String VALIDATION_REGEX \u003d \"^[1-9]\\\\d{7}$\";","lastModifiedDate":"2024-03-18"},{"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 a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":24,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * @param phone A valid phone number.","lastModifiedDate":"2017-05-30"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public Phone(String phone) {","lastModifiedDate":"2017-05-30"},{"lineNumber":28,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" checkArgument(isValidPhone(phone), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":" value \u003d phone;","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 phone number.","lastModifiedDate":"2018-04-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static boolean isValidPhone(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 Phone)) {","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":" Phone otherPhone \u003d (Phone) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return value.equals(otherPhone.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":{"-":58,"J-wang-CSMA":7}},{"path":"src/main/java/seedu/address/model/person/TagMatchesPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"wallacexuhanxiao"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"wallacexuhanxiao"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"wallacexuhanxiao"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"wallacexuhanxiao"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"wallacexuhanxiao"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"wallacexuhanxiao"},"content":" * Tests that a {@code Person}\u0027s {@code Tag} matches the Tag given.","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"wallacexuhanxiao"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"wallacexuhanxiao"},"content":"public class TagMatchesPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"wallacexuhanxiao"},"content":" private final Tag tag;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"wallacexuhanxiao"},"content":" public TagMatchesPredicate(Tag tag) {","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"wallacexuhanxiao"},"content":" this.tag \u003d tag;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"wallacexuhanxiao"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"wallacexuhanxiao"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"wallacexuhanxiao"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"wallacexuhanxiao"},"content":" return person.getTags().contains(tag);","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"wallacexuhanxiao"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"wallacexuhanxiao"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"wallacexuhanxiao"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"wallacexuhanxiao"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"wallacexuhanxiao"},"content":" return true;","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"wallacexuhanxiao"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"wallacexuhanxiao"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"wallacexuhanxiao"},"content":" if (!(other instanceof TagMatchesPredicate)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"wallacexuhanxiao"},"content":" return false;","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"wallacexuhanxiao"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"wallacexuhanxiao"},"content":" TagMatchesPredicate otherTag \u003d (TagMatchesPredicate) other;","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"wallacexuhanxiao"},"content":" return tag.equals(otherTag.tag);","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"wallacexuhanxiao"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"wallacexuhanxiao"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"wallacexuhanxiao"},"content":" public String toString() {","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"wallacexuhanxiao"},"content":" return new ToStringBuilder(this).add(\"tag\", tag).toString();","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"wallacexuhanxiao"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"wallacexuhanxiao"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"wallacexuhanxiao":42}},{"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":"-"},"content":"public class Tag {","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"J-wang-CSMA"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Tags names should be alphanumeric and at most 2 words long.\";","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"J-wang-CSMA"},"content":" public static final String VALIDATION_REGEX \u003d \"^\\\\p{Alnum}+(?:\\\\s\\\\p{Alnum}+)?$\";","lastModifiedDate":"2024-03-21"},{"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,"J-wang-CSMA":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":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.StudentId;","lastModifiedDate":"2024-02-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20"},{"lineNumber":23,"author":{"gitId":"J-wang-CSMA"},"content":" new Person(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"), new Phone(\"99149687\"),","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"J-wang-CSMA"},"content":" new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"), new StudentId(\"00001\"),","lastModifiedDate":"2024-02-18"},{"lineNumber":26,"author":{"gitId":"-"},"content":" getTagSet(\"friends\")),","lastModifiedDate":"2017-03-14"},{"lineNumber":27,"author":{"gitId":"J-wang-CSMA"},"content":" new Person(new Name(\"Bernice Yu\"), new Phone(\"99272758\"), new Phone(\"86898742\"), new Email(\"berniceyu\"","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"J-wang-CSMA"},"content":" + \"@example.com\"),","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"), new StudentId(\"00002\"),","lastModifiedDate":"2024-02-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":" getTagSet(\"colleagues\", \"friends\")),","lastModifiedDate":"2017-03-14"},{"lineNumber":31,"author":{"gitId":"J-wang-CSMA"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"), new Phone(\"92532563\"), new Email(","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"J-wang-CSMA"},"content":" \"charlotte@example.com\"),","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"-"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"), new StudentId(\"00003\"),","lastModifiedDate":"2024-02-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":" getTagSet(\"neighbours\")),","lastModifiedDate":"2017-03-14"},{"lineNumber":35,"author":{"gitId":"J-wang-CSMA"},"content":" new Person(new Name(\"David Li\"), new Phone(\"91031282\"), new Phone(\"83496437\"), new Email(\"lidavid\"","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"J-wang-CSMA"},"content":" + \"@example.com\"),","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"-"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"), new StudentId(\"00004\"),","lastModifiedDate":"2024-02-18"},{"lineNumber":38,"author":{"gitId":"-"},"content":" getTagSet(\"family\")),","lastModifiedDate":"2017-03-14"},{"lineNumber":39,"author":{"gitId":"J-wang-CSMA"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"), new Phone(\"88548559\"), new Email(\"irfan\"","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"J-wang-CSMA"},"content":" + \"@example.com\"),","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"), new StudentId(\"00005\"),","lastModifiedDate":"2024-02-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" getTagSet(\"classmates\")),","lastModifiedDate":"2017-03-14"},{"lineNumber":43,"author":{"gitId":"J-wang-CSMA"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"), new Phone(\"99811124\"), new Email(\"royb\"","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"J-wang-CSMA"},"content":" + \"@example.com\"),","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"), new StudentId(\"00006\"),","lastModifiedDate":"2024-02-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":" getTagSet(\"colleagues\"))","lastModifiedDate":"2017-03-14"},{"lineNumber":47,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07"},{"lineNumber":52,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20"},{"lineNumber":53,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14"},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"-":55,"J-wang-CSMA":12}},{"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":"-"},"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.Person;","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.StudentId;","lastModifiedDate":"2024-02-18"},{"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":"J-wang-CSMA"},"content":" private final String parentPhoneNumberOne;","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"J-wang-CSMA"},"content":" private final String parentPhoneNumberTwo;","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final String studentId;","lastModifiedDate":"2024-02-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"J-wang-CSMA"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name,","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"J-wang-CSMA"},"content":" @JsonProperty(\"parent phone one\") String parentPhoneNumberOne,","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"J-wang-CSMA"},"content":" @JsonProperty(\"parent phone two\") String parentPhoneNumberTwo,","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @JsonProperty(\"email\") String email,","lastModifiedDate":"2024-02-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @JsonProperty(\"address\") String address,","lastModifiedDate":"2024-02-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @JsonProperty(\"studentId\") String studentId,","lastModifiedDate":"2024-02-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags) {","lastModifiedDate":"2023-05-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"J-wang-CSMA"},"content":" this.parentPhoneNumberOne \u003d parentPhoneNumberOne;","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"J-wang-CSMA"},"content":" this.parentPhoneNumberTwo \u003d parentPhoneNumberTwo;","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.studentId \u003d studentId;","lastModifiedDate":"2024-02-18"},{"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":"J-wang-CSMA"},"content":" parentPhoneNumberOne \u003d source.getParentPhoneOne().value;","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"J-wang-CSMA"},"content":" parentPhoneNumberTwo \u003d source.getParentPhoneTwo().value;","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" studentId \u003d source.getStudentId().value;","lastModifiedDate":"2024-02-18"},{"lineNumber":68,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09"},{"lineNumber":69,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09"},{"lineNumber":81,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"J-wang-CSMA"},"content":" if (parentPhoneNumberOne \u003d\u003d null || parentPhoneNumberTwo \u003d\u003d null) {","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"J-wang-CSMA"},"content":" if (!Phone.isValidPhone(parentPhoneNumberOne) || !Phone.isValidPhone(parentPhoneNumberTwo)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"J-wang-CSMA"},"content":" final Phone modelFirstParentPhone \u003d new Phone(parentPhoneNumberOne);","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"J-wang-CSMA"},"content":" final Phone modelSecondParentPhone \u003d new Phone(parentPhoneNumberTwo);","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" if (studentId \u003d\u003d null) {","lastModifiedDate":"2024-02-18"},{"lineNumber":118,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-02-18"},{"lineNumber":119,"author":{"gitId":"-"},"content":" StudentId.class.getSimpleName()));","lastModifiedDate":"2024-02-18"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-18"},{"lineNumber":121,"author":{"gitId":"-"},"content":" if (!StudentId.isValidStudentId(studentId)) {","lastModifiedDate":"2024-02-18"},{"lineNumber":122,"author":{"gitId":"-"},"content":" throw new IllegalValueException(StudentId.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-18"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-18"},{"lineNumber":124,"author":{"gitId":"-"},"content":" final StudentId modelStudentId \u003d new StudentId(studentId);","lastModifiedDate":"2024-02-18"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-18"},{"lineNumber":126,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13"},{"lineNumber":127,"author":{"gitId":"J-wang-CSMA"},"content":" return new Person(modelName, modelFirstParentPhone, modelSecondParentPhone, modelEmail, modelAddress,","lastModifiedDate":"2024-03-18"},{"lineNumber":128,"author":{"gitId":"J-wang-CSMA"},"content":" modelStudentId, modelTags);","lastModifiedDate":"2024-03-18"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"-":116,"J-wang-CSMA":15}},{"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":"J-wang-CSMA"},"content":" private Label phones;","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private Label address;","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":"-"},"content":" private Label studentId;","lastModifiedDate":"2024-02-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2024-02-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10"},{"lineNumber":50,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20"},{"lineNumber":54,"author":{"gitId":"J-wang-CSMA"},"content":" phones.setText(\"Parent 1: \" + person.getParentPhoneOne().value + \", Parent 2: \" + person.getParentPhoneTwo());","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"-"},"content":" address.setText(person.getAddress().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" studentId.setText(person.getStudentId().value);","lastModifiedDate":"2024-02-18"},{"lineNumber":58,"author":{"gitId":"-"},"content":" person.getTags().stream()","lastModifiedDate":"2019-01-02"},{"lineNumber":59,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02"},{"lineNumber":60,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"-":60,"J-wang-CSMA":2}},{"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":"J-wang-CSMA"},"content":" \u003cLabel fx:id\u003d\"phones\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2016-08-08"},{"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":"-"},"content":" \u003cLabel fx:id\u003d\"studentId\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$studentId\" /\u003e","lastModifiedDate":"2024-02-18"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"-":36,"J-wang-CSMA":1}},{"path":"src/test/java/seedu/address/commons/util/StringFormatterTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"J-wang-CSMA"},"content":"package seedu.address.commons.util;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"J-wang-CSMA"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"J-wang-CSMA"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"J-wang-CSMA"},"content":"public class StringFormatterTest {","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"J-wang-CSMA"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"J-wang-CSMA"},"content":" public void capitalizeWords_nullInput_throwsNullPointerException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"J-wang-CSMA"},"content":" assertEquals(null, StringFormatter.capitalizeWords(null));","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"J-wang-CSMA"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"J-wang-CSMA"},"content":" public void capitalizeWords_emptyString_emptyStringReturned() {","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"J-wang-CSMA"},"content":" assertEquals(\"\", StringFormatter.capitalizeWords(\"\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"J-wang-CSMA"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"J-wang-CSMA"},"content":" public void capitalizeWords_onlySpaces_emptyStringReturned() {","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"J-wang-CSMA"},"content":" assertEquals(\"\", StringFormatter.capitalizeWords(\" \"));","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"J-wang-CSMA"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"J-wang-CSMA"},"content":" public void capitalizeWords_singleWord_capitalizedWordReturned() {","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"J-wang-CSMA"},"content":" assertEquals(\"Java\", StringFormatter.capitalizeWords(\"java\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"J-wang-CSMA"},"content":" assertEquals(\"3java\", StringFormatter.capitalizeWords(\"3java\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"J-wang-CSMA"},"content":" assertEquals(\"#java\", StringFormatter.capitalizeWords(\"#java\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"J-wang-CSMA"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"J-wang-CSMA"},"content":" public void capitalizeWords_multipleWords_allWordsCapitalized() {","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"J-wang-CSMA"},"content":" assertEquals(\"Hello World\", StringFormatter.capitalizeWords(\"hello world\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"J-wang-CSMA"},"content":" assertEquals(\"Hello World 3a #home\", StringFormatter.capitalizeWords(\"hello world 3a #home\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"J-wang-CSMA"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"J-wang-CSMA"},"content":" public void capitalizeWords_inputWithExtraSpaces_correctlyCapitalizedWords() {","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"J-wang-CSMA"},"content":" assertEquals(\"Java Is Fun\", StringFormatter.capitalizeWords(\" java is fun \"));","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"J-wang-CSMA"},"content":" assertEquals(\"A B C\", StringFormatter.capitalizeWords(\" a b c \").trim());","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"J-wang-CSMA"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"J-wang-CSMA"},"content":" public void capitalizeWords_mixedCaseInput_correctlyCapitalizedWords() {","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"J-wang-CSMA"},"content":" assertEquals(\"JaVa IS GReAt\", StringFormatter.capitalizeWords(\"JaVa iS gReAt\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"J-wang-CSMA"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"J-wang-CSMA":48}},{"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":"ongzhili"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_STUDENT_ID;","lastModifiedDate":"2024-03-17"},{"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":"J-wang-CSMA"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_ADD_AMY;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.STUDENT_ID_DESC_AMY;","lastModifiedDate":"2024-02-19"},{"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":"-"},"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":"ongzhili"},"content":" String deleteCommand \u003d \"delete 55555\";","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"ongzhili"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_STUDENT_ID);","lastModifiedDate":"2024-03-17"},{"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":"J-wang-CSMA"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_ADD_AMY","lastModifiedDate":"2024-03-18"},{"lineNumber":170,"author":{"gitId":"-"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + STUDENT_ID_DESC_AMY;","lastModifiedDate":"2024-02-19"},{"lineNumber":171,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2023-06-13"},{"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":{"ongzhili":3,"-":171,"J-wang-CSMA":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_ADDRESS;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"J-wang-CSMA"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PARENT_PHONES;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_ID;","lastModifiedDate":"2024-02-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"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":"-"},"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":"2017-06-05"},{"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":"IamZhenHong"},"content":"import seedu.address.model.person.StudentId;","lastModifiedDate":"2024-03-20"},{"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":"J-wang-CSMA"},"content":" public static final String VALID_PHONE_ONE_AMY \u003d \"11111111\";","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"J-wang-CSMA"},"content":" public static final String VALID_PHONE_TWO_AMY \u003d \"22222222\";","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"J-wang-CSMA"},"content":" public static final String VALID_PHONE_ONE_BOB \u003d \"33333333\";","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"J-wang-CSMA"},"content":" public static final String VALID_PHONE_TWO_BOB \u003d \"44444444\";","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":" public static final String VALID_STUDENT_ID_AMY \u003d \"00001\";","lastModifiedDate":"2024-02-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String VALID_STUDENT_ID_BOB \u003d \"00002\";","lastModifiedDate":"2024-02-18"},{"lineNumber":42,"author":{"gitId":"J-wang-CSMA"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"Husband\";","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"J-wang-CSMA"},"content":" public static final String VALID_TAG_FRIEND \u003d \"Friend\";","lastModifiedDate":"2024-03-21"},{"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":"J-wang-CSMA"},"content":" public static final String PHONE_DESC_ADD_AMY \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"J-wang-CSMA"},"content":" \" \" + PREFIX_PARENT_PHONES + VALID_PHONE_ONE_AMY + \", \" + VALID_PHONE_TWO_AMY;","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"J-wang-CSMA"},"content":" public static final String PHONE_DESC_EDIT_AMY \u003d \" \" + PREFIX_PARENT_PHONES + VALID_PHONE_ONE_AMY + \", 2\";","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"J-wang-CSMA"},"content":" public static final String PHONE_DESC_ADD_BOB \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"J-wang-CSMA"},"content":" \" \" + PREFIX_PARENT_PHONES + VALID_PHONE_ONE_BOB + \", \" + VALID_PHONE_TWO_BOB;","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"J-wang-CSMA"},"content":" public static final String PHONE_DESC_EDIT_BOB \u003d \" \" + PREFIX_PARENT_PHONES + VALID_PHONE_ONE_BOB + \", 1\";","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String STUDENT_ID_DESC_AMY \u003d \" \" + PREFIX_STUDENT_ID + VALID_STUDENT_ID_AMY;","lastModifiedDate":"2024-02-18"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String STUDENT_ID_DESC_BOB \u003d \" \" + PREFIX_STUDENT_ID + VALID_STUDENT_ID_BOB;","lastModifiedDate":"2024-02-18"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"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":"J-wang-CSMA"},"content":" public static final String INVALID_PHONE_ADD_DESC \u003d \" \" + PREFIX_PARENT_PHONES + \"911a, \" + \"912a\"; // \u0027a\u0027 not","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"J-wang-CSMA"},"content":" // allowed in","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"J-wang-CSMA"},"content":" // phones","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"J-wang-CSMA"},"content":" public static final String INVALID_PHONE_EDIT_DESC \u003d \" \" + PREFIX_PARENT_PHONES + \"911a, 1\";","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05"},{"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_STUDENT_ID_DESC \u003d \" \" + PREFIX_STUDENT_ID + \"12345678A\";","lastModifiedDate":"2024-02-18"},{"lineNumber":70,"author":{"gitId":"J-wang-CSMA"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"Hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":78,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":79,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":80,"author":{"gitId":"J-wang-CSMA"},"content":" .withPhone(VALID_PHONE_ONE_AMY, \"2\")","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"J-wang-CSMA"},"content":" .withEmail(VALID_EMAIL_AMY)","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"J-wang-CSMA"},"content":" .withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":85,"author":{"gitId":"J-wang-CSMA"},"content":" .withPhone(VALID_PHONE_TWO_BOB, \"1\")","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"J-wang-CSMA"},"content":" .withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"J-wang-CSMA"},"content":" .withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":95,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25"},{"lineNumber":97,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":98,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":99,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":102,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":103,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":107,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25"},{"lineNumber":109,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":110,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":111,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25"},{"lineNumber":112,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":113,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":117,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":118,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":119,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":120,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":121,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25"},{"lineNumber":122,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25"},{"lineNumber":124,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":125,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":126,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":127,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":131,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":133,"author":{"gitId":"IamZhenHong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":134,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":135,"author":{"gitId":"IamZhenHong"},"content":" * Updates {@code model}\u0027s filtered list to show only the person with the given {@code studentId} in the","lastModifiedDate":"2024-03-20"},{"lineNumber":136,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31"},{"lineNumber":137,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":138,"author":{"gitId":"IamZhenHong"},"content":" public static void showPersonWithStudentId(Model model, StudentId studentId) {","lastModifiedDate":"2024-03-20"},{"lineNumber":139,"author":{"gitId":"IamZhenHong"},"content":" boolean personFound \u003d false;","lastModifiedDate":"2024-03-20"},{"lineNumber":140,"author":{"gitId":"IamZhenHong"},"content":" List\u003cPerson\u003e filteredList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-20"},{"lineNumber":141,"author":{"gitId":"IamZhenHong"},"content":" for (Person person : filteredList) {","lastModifiedDate":"2024-03-20"},{"lineNumber":142,"author":{"gitId":"IamZhenHong"},"content":" if (person.getStudentId().equals(studentId)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":143,"author":{"gitId":"IamZhenHong"},"content":" personFound \u003d true;","lastModifiedDate":"2024-03-20"},{"lineNumber":144,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20"},{"lineNumber":145,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20"},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08"},{"lineNumber":147,"author":{"gitId":"IamZhenHong"},"content":" break;","lastModifiedDate":"2024-03-20"},{"lineNumber":148,"author":{"gitId":"IamZhenHong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":150,"author":{"gitId":"IamZhenHong"},"content":" assertTrue(personFound); // Ensure the person with the specified studentId exists","lastModifiedDate":"2024-03-20"},{"lineNumber":151,"author":{"gitId":"IamZhenHong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":155,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"IamZhenHong":13,"-":118,"J-wang-CSMA":24}},{"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":"IamZhenHong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonWithStudentId;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":10,"author":{"gitId":"ongzhili"},"content":"import static seedu.address.testutil.TypicalStudentIds.ID_FIRST_PERSON;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"ongzhili"},"content":"import static seedu.address.testutil.TypicalStudentIds.ID_SECOND_PERSON;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":13,"author":{"gitId":"IamZhenHong"},"content":"import java.util.List;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":22,"author":{"gitId":"ongzhili"},"content":"import seedu.address.model.person.StudentId;","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2018-01-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2017-06-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":34,"author":{"gitId":"IamZhenHong"},"content":" boolean personFound \u003d false;","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"IamZhenHong"},"content":" Person personToDelete \u003d null;","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"IamZhenHong"},"content":" List\u003cPerson\u003e filteredList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"IamZhenHong"},"content":" for (Person person : filteredList) {","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"IamZhenHong"},"content":" if (person.getStudentId().equals(new StudentId(\"00001\"))) {","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"IamZhenHong"},"content":" personFound \u003d true;","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"IamZhenHong"},"content":" personToDelete \u003d person;","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"IamZhenHong"},"content":" break;","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"IamZhenHong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"IamZhenHong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"IamZhenHong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"IamZhenHong"},"content":" assertTrue(personFound); // Ensure the person with the specified studentId exists","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"IamZhenHong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"ongzhili"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(new StudentId(\"00001\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","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":"IamZhenHong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":60,"author":{"gitId":"ongzhili"},"content":" public void execute_invalidStudentIdUnfilteredList_throwsCommandException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"ongzhili"},"content":" StudentId invalidId \u003d new StudentId(\"99999\");","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"ongzhili"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(invalidId);","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":64,"author":{"gitId":"ongzhili"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_STUDENT_ID);","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":68,"author":{"gitId":"ongzhili"},"content":" public void execute_validStudentIdFilteredList_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"IamZhenHong"},"content":" showPersonWithStudentId(model, ID_FIRST_PERSON);","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"IamZhenHong"},"content":" boolean personFound \u003d false;","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"IamZhenHong"},"content":" Person personToDelete \u003d null;","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"IamZhenHong"},"content":" List\u003cPerson\u003e filteredList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"IamZhenHong"},"content":" for (Person person : filteredList) {","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"IamZhenHong"},"content":" if (person.getStudentId().equals(new StudentId(\"00001\"))) {","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"IamZhenHong"},"content":" personFound \u003d true;","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"IamZhenHong"},"content":" personToDelete \u003d person;","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"IamZhenHong"},"content":" break;","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"IamZhenHong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"IamZhenHong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"IamZhenHong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"IamZhenHong"},"content":" assertTrue(personFound); // Ensure the person with the specified studentId exists","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":84,"author":{"gitId":"ongzhili"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(new StudentId(\"00001\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":89,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05"},{"lineNumber":91,"author":{"gitId":"-"},"content":" showNoPerson(expectedModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":96,"author":{"gitId":"IamZhenHong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":98,"author":{"gitId":"ongzhili"},"content":" public void execute_invalidStudentIdFilteredList_throwsCommandException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"IamZhenHong"},"content":" showPersonWithStudentId(model, ID_FIRST_PERSON);","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":101,"author":{"gitId":"ongzhili"},"content":" StudentId invalidId \u003d new StudentId(\"99999\");","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":103,"author":{"gitId":"ongzhili"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(invalidId);","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":105,"author":{"gitId":"ongzhili"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_STUDENT_ID);","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":110,"author":{"gitId":"ongzhili"},"content":" DeleteCommand deleteFirstCommand \u003d new DeleteCommand(ID_FIRST_PERSON);","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"ongzhili"},"content":" DeleteCommand deleteSecondCommand \u003d new DeleteCommand(ID_SECOND_PERSON);","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":113,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":116,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":117,"author":{"gitId":"ongzhili"},"content":" DeleteCommand deleteFirstCommandCopy \u003d new DeleteCommand(ID_FIRST_PERSON);","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":120,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":123,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":126,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":130,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":132,"author":{"gitId":"ongzhili"},"content":" StudentId targetId \u003d new StudentId(\"00001\");","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"ongzhili"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(targetId);","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"ongzhili"},"content":" String expected \u003d DeleteCommand.class.getCanonicalName() + \"{targetId\u003d\" + targetId + \"}\";","lastModifiedDate":"2024-03-17"},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertEquals(expected, deleteCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":139,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05"},{"lineNumber":140,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":141,"author":{"gitId":"-"},"content":" private void showNoPerson(Model model) {","lastModifiedDate":"2017-06-05"},{"lineNumber":142,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2017-06-12"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":144,"author":{"gitId":"-"},"content":" assertTrue(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2018-02-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":146,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"IamZhenHong":31,"ongzhili":20,"-":95}},{"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":"IamZhenHong"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2024-03-20"},{"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.DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_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":"J-wang-CSMA"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_ONE_BOB;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"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":"IamZhenHong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonWithStudentId;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":16,"author":{"gitId":"IamZhenHong"},"content":"import static seedu.address.testutil.TypicalStudentIds.ID_FIRST_PERSON;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"IamZhenHong"},"content":"import static seedu.address.testutil.TypicalStudentIds.ID_SECOND_PERSON;","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":19,"author":{"gitId":"IamZhenHong"},"content":"import java.util.List;","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"J-wang-CSMA"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"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":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-04"},{"lineNumber":31,"author":{"gitId":"J-wang-CSMA"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"IamZhenHong"},"content":"import seedu.address.model.person.StudentId;","lastModifiedDate":"2024-03-20"},{"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":"IamZhenHong"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"IamZhenHong"},"content":" * EditCommand.","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"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":"IamZhenHong"},"content":" EditCommand editCommand \u003d new EditCommand(ID_FIRST_PERSON, descriptor);","lastModifiedDate":"2024-03-20"},{"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":"IamZhenHong"},"content":" Person firstPerson \u003d null;","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"IamZhenHong"},"content":" List\u003cPerson\u003e filteredList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"IamZhenHong"},"content":" for (Person person : filteredList) {","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"IamZhenHong"},"content":" if (person.getStudentId().equals(ID_FIRST_PERSON)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"IamZhenHong"},"content":" firstPerson \u003d person;","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"IamZhenHong"},"content":" break;","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"IamZhenHong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"IamZhenHong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":69,"author":{"gitId":"IamZhenHong"},"content":" assertNotNull(firstPerson); // Ensure the person with ID_FIRST_PERSON exists","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"IamZhenHong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"IamZhenHong"},"content":" PersonBuilder personInList \u003d new PersonBuilder(firstPerson);","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"J-wang-CSMA"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"J-wang-CSMA"},"content":" .withSecondParentPhone(VALID_PHONE_ONE_BOB)","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":76,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-05-18"},{"lineNumber":77,"author":{"gitId":"J-wang-CSMA"},"content":" .withPhone(VALID_PHONE_ONE_BOB, \"2\")","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"J-wang-CSMA"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"IamZhenHong"},"content":" EditCommand editCommand \u003d new EditCommand(ID_FIRST_PERSON, descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"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":"IamZhenHong"},"content":" expectedModel.setPerson(firstPerson, editedPerson);","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":91,"author":{"gitId":"IamZhenHong"},"content":" Person editedPerson \u003d null;","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"IamZhenHong"},"content":" List\u003cPerson\u003e filteredList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"IamZhenHong"},"content":" for (Person person : filteredList) {","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"IamZhenHong"},"content":" if (person.getStudentId().equals(ID_FIRST_PERSON)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"IamZhenHong"},"content":" editedPerson \u003d person;","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"IamZhenHong"},"content":" break;","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"IamZhenHong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"IamZhenHong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":99,"author":{"gitId":"IamZhenHong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"IamZhenHong"},"content":" assertNotNull(editedPerson); // Ensure the person with ID_FIRST_PERSON exists","lastModifiedDate":"2024-03-20"},{"lineNumber":101,"author":{"gitId":"IamZhenHong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":102,"author":{"gitId":"IamZhenHong"},"content":" EditCommand editCommand \u003d new EditCommand(ID_FIRST_PERSON, new EditPersonDescriptor());","lastModifiedDate":"2024-03-20"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"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_filteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":113,"author":{"gitId":"IamZhenHong"},"content":" // Show only the person with the specified student ID in the filtered list","lastModifiedDate":"2024-03-20"},{"lineNumber":114,"author":{"gitId":"IamZhenHong"},"content":" showPersonWithStudentId(model, ID_FIRST_PERSON);","lastModifiedDate":"2024-03-20"},{"lineNumber":115,"author":{"gitId":"IamZhenHong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":116,"author":{"gitId":"IamZhenHong"},"content":" // Retrieve the person from the filtered list using the specified student ID","lastModifiedDate":"2024-03-20"},{"lineNumber":117,"author":{"gitId":"IamZhenHong"},"content":" boolean personFound \u003d false;","lastModifiedDate":"2024-03-20"},{"lineNumber":118,"author":{"gitId":"IamZhenHong"},"content":" Person personInFilteredList \u003d null;","lastModifiedDate":"2024-03-20"},{"lineNumber":119,"author":{"gitId":"IamZhenHong"},"content":" List\u003cPerson\u003e filteredList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-20"},{"lineNumber":120,"author":{"gitId":"IamZhenHong"},"content":" for (Person person : filteredList) {","lastModifiedDate":"2024-03-20"},{"lineNumber":121,"author":{"gitId":"IamZhenHong"},"content":" if (person.getStudentId().equals(ID_FIRST_PERSON)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":122,"author":{"gitId":"IamZhenHong"},"content":" personInFilteredList \u003d person;","lastModifiedDate":"2024-03-20"},{"lineNumber":123,"author":{"gitId":"IamZhenHong"},"content":" personFound \u003d true;","lastModifiedDate":"2024-03-20"},{"lineNumber":124,"author":{"gitId":"IamZhenHong"},"content":" break;","lastModifiedDate":"2024-03-20"},{"lineNumber":125,"author":{"gitId":"IamZhenHong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":126,"author":{"gitId":"IamZhenHong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":127,"author":{"gitId":"IamZhenHong"},"content":" assertTrue(personFound); // Ensure the person with the specified student ID exists","lastModifiedDate":"2024-03-20"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":129,"author":{"gitId":"IamZhenHong"},"content":" // Edit the person\u0027s name","lastModifiedDate":"2024-03-20"},{"lineNumber":130,"author":{"gitId":"IamZhenHong"},"content":" Person editedPerson \u003d new PersonBuilder(personInFilteredList)","lastModifiedDate":"2024-03-20"},{"lineNumber":131,"author":{"gitId":"IamZhenHong"},"content":" .withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-20"},{"lineNumber":132,"author":{"gitId":"IamZhenHong"},"content":" .build();","lastModifiedDate":"2024-03-20"},{"lineNumber":133,"author":{"gitId":"IamZhenHong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":134,"author":{"gitId":"IamZhenHong"},"content":" // Create the edit command","lastModifiedDate":"2024-03-20"},{"lineNumber":135,"author":{"gitId":"IamZhenHong"},"content":" EditCommand editCommand \u003d new EditCommand(ID_FIRST_PERSON,","lastModifiedDate":"2024-03-20"},{"lineNumber":136,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":138,"author":{"gitId":"IamZhenHong"},"content":" // Define the expected message after executing the edit command","lastModifiedDate":"2024-03-20"},{"lineNumber":139,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":141,"author":{"gitId":"IamZhenHong"},"content":" // Create the expected model after executing the edit command","lastModifiedDate":"2024-03-20"},{"lineNumber":142,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18"},{"lineNumber":143,"author":{"gitId":"IamZhenHong"},"content":" expectedModel.setPerson(personInFilteredList, editedPerson);","lastModifiedDate":"2024-03-20"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":145,"author":{"gitId":"IamZhenHong"},"content":" // Assert the success of the command execution","lastModifiedDate":"2024-03-20"},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":149,"author":{"gitId":"IamZhenHong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":150,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":151,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":152,"author":{"gitId":"IamZhenHong"},"content":" // Retrieve the first person from the unfiltered list using the specified student ID","lastModifiedDate":"2024-03-20"},{"lineNumber":153,"author":{"gitId":"IamZhenHong"},"content":" Person firstPerson \u003d null;","lastModifiedDate":"2024-03-20"},{"lineNumber":154,"author":{"gitId":"IamZhenHong"},"content":" List\u003cPerson\u003e unfilteredList \u003d model.getAddressBook().getPersonList();","lastModifiedDate":"2024-03-20"},{"lineNumber":155,"author":{"gitId":"IamZhenHong"},"content":" for (Person person : unfilteredList) {","lastModifiedDate":"2024-03-20"},{"lineNumber":156,"author":{"gitId":"IamZhenHong"},"content":" if (person.getStudentId().equals(ID_FIRST_PERSON)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":157,"author":{"gitId":"IamZhenHong"},"content":" firstPerson \u003d person;","lastModifiedDate":"2024-03-20"},{"lineNumber":158,"author":{"gitId":"IamZhenHong"},"content":" break;","lastModifiedDate":"2024-03-20"},{"lineNumber":159,"author":{"gitId":"IamZhenHong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":160,"author":{"gitId":"IamZhenHong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":161,"author":{"gitId":"IamZhenHong"},"content":" assertNotNull(firstPerson); // Ensure the person with the specified student ID exists","lastModifiedDate":"2024-03-20"},{"lineNumber":162,"author":{"gitId":"IamZhenHong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":163,"author":{"gitId":"IamZhenHong"},"content":" // Create the edit command with the student ID of the second person and the descriptor of the first person","lastModifiedDate":"2024-03-20"},{"lineNumber":164,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05"},{"lineNumber":165,"author":{"gitId":"IamZhenHong"},"content":" EditCommand editCommand \u003d new EditCommand(new StudentId(\"00002\"), descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":167,"author":{"gitId":"IamZhenHong"},"content":" // Assert that executing this command results in failure with the expected error message","lastModifiedDate":"2024-03-20"},{"lineNumber":168,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":171,"author":{"gitId":"IamZhenHong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":172,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":173,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":174,"author":{"gitId":"IamZhenHong"},"content":" showPersonWithStudentId(model, ID_FIRST_PERSON);","lastModifiedDate":"2024-03-20"},{"lineNumber":175,"author":{"gitId":"IamZhenHong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":176,"author":{"gitId":"IamZhenHong"},"content":" // Retrieve the person from the filtered list using the specified student ID","lastModifiedDate":"2024-03-20"},{"lineNumber":177,"author":{"gitId":"IamZhenHong"},"content":" boolean personFound \u003d false;","lastModifiedDate":"2024-03-20"},{"lineNumber":178,"author":{"gitId":"IamZhenHong"},"content":" Person personInList \u003d null;","lastModifiedDate":"2024-03-20"},{"lineNumber":179,"author":{"gitId":"IamZhenHong"},"content":" List\u003cPerson\u003e unfilteredList \u003d model.getAddressBook().getPersonList();","lastModifiedDate":"2024-03-20"},{"lineNumber":180,"author":{"gitId":"IamZhenHong"},"content":" for (Person person : unfilteredList) {","lastModifiedDate":"2024-03-20"},{"lineNumber":181,"author":{"gitId":"IamZhenHong"},"content":" if (person.getStudentId().equals(ID_SECOND_PERSON)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":182,"author":{"gitId":"IamZhenHong"},"content":" personInList \u003d person;","lastModifiedDate":"2024-03-20"},{"lineNumber":183,"author":{"gitId":"IamZhenHong"},"content":" personFound \u003d true;","lastModifiedDate":"2024-03-20"},{"lineNumber":184,"author":{"gitId":"IamZhenHong"},"content":" break;","lastModifiedDate":"2024-03-20"},{"lineNumber":185,"author":{"gitId":"IamZhenHong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":186,"author":{"gitId":"IamZhenHong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":187,"author":{"gitId":"IamZhenHong"},"content":" assertTrue(personFound); // Ensure the person with the specified student ID exists","lastModifiedDate":"2024-03-20"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":189,"author":{"gitId":"IamZhenHong"},"content":" // Create the edit command with the student ID of the first person and the descriptor of the second person","lastModifiedDate":"2024-03-20"},{"lineNumber":190,"author":{"gitId":"IamZhenHong"},"content":" EditCommand editCommand \u003d new EditCommand(ID_FIRST_PERSON,","lastModifiedDate":"2024-03-20"},{"lineNumber":191,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":192,"author":{"gitId":"IamZhenHong"},"content":" System.out.println(EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2024-03-20"},{"lineNumber":193,"author":{"gitId":"IamZhenHong"},"content":" System.out.println(editCommand);","lastModifiedDate":"2024-03-20"},{"lineNumber":194,"author":{"gitId":"IamZhenHong"},"content":" // Assert that executing this command results in failure with the expected error message","lastModifiedDate":"2024-03-20"},{"lineNumber":195,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":198,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":199,"author":{"gitId":"IamZhenHong"},"content":" public void execute_invalidStudentIdUnfilteredList_failure() {","lastModifiedDate":"2024-03-20"},{"lineNumber":200,"author":{"gitId":"IamZhenHong"},"content":" // Create the edit command with an invalid student ID","lastModifiedDate":"2024-03-20"},{"lineNumber":201,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":202,"author":{"gitId":"IamZhenHong"},"content":" EditCommand editCommand \u003d new EditCommand(new StudentId(\"99999\"), descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":204,"author":{"gitId":"IamZhenHong"},"content":" // Assert that executing this command results in failure with the expected error message","lastModifiedDate":"2024-03-20"},{"lineNumber":205,"author":{"gitId":"IamZhenHong"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_STUDENT_ID);","lastModifiedDate":"2024-03-20"},{"lineNumber":206,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":210,"author":{"gitId":"IamZhenHong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":212,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":214,"author":{"gitId":"IamZhenHong"},"content":" final EditCommand standardCommand \u003d new EditCommand(ID_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2024-03-20"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":216,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":217,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08"},{"lineNumber":218,"author":{"gitId":"IamZhenHong"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(ID_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":219,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":221,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":222,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":224,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":225,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":227,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":228,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":230,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":231,"author":{"gitId":"IamZhenHong"},"content":" assertFalse(standardCommand.equals(new EditCommand(ID_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2024-03-20"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":233,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":234,"author":{"gitId":"IamZhenHong"},"content":" assertFalse(standardCommand.equals(new EditCommand(ID_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2024-03-20"},{"lineNumber":235,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":237,"author":{"gitId":"IamZhenHong"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":238,"author":{"gitId":"IamZhenHong"},"content":" public void getEditedPhone_bothPhonesNull_returnsEmpty() {","lastModifiedDate":"2024-03-20"},{"lineNumber":239,"author":{"gitId":"IamZhenHong"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2024-03-20"},{"lineNumber":240,"author":{"gitId":"IamZhenHong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":241,"author":{"gitId":"IamZhenHong"},"content":" Optional\u003cPhone\u003e result \u003d descriptor.getEditedPhone();","lastModifiedDate":"2024-03-20"},{"lineNumber":242,"author":{"gitId":"IamZhenHong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":243,"author":{"gitId":"IamZhenHong"},"content":" assertFalse(result.isPresent());","lastModifiedDate":"2024-03-20"},{"lineNumber":244,"author":{"gitId":"IamZhenHong"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":245,"author":{"gitId":"IamZhenHong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":246,"author":{"gitId":"J-wang-CSMA"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":247,"author":{"gitId":"J-wang-CSMA"},"content":" public void getEditedPhone_firstParentPhoneNotNull_returnsFirstParentPhone() {","lastModifiedDate":"2024-03-18"},{"lineNumber":248,"author":{"gitId":"J-wang-CSMA"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2024-03-18"},{"lineNumber":249,"author":{"gitId":"J-wang-CSMA"},"content":" Phone expectedPhone \u003d new Phone(\"12345678\");","lastModifiedDate":"2024-03-18"},{"lineNumber":250,"author":{"gitId":"J-wang-CSMA"},"content":" descriptor.setFirstParentPhone(expectedPhone);","lastModifiedDate":"2024-03-18"},{"lineNumber":251,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":252,"author":{"gitId":"J-wang-CSMA"},"content":" Optional\u003cPhone\u003e result \u003d descriptor.getEditedPhone();","lastModifiedDate":"2024-03-18"},{"lineNumber":253,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":254,"author":{"gitId":"J-wang-CSMA"},"content":" assertTrue(result.isPresent());","lastModifiedDate":"2024-03-18"},{"lineNumber":255,"author":{"gitId":"J-wang-CSMA"},"content":" assertEquals(expectedPhone, result.get());","lastModifiedDate":"2024-03-18"},{"lineNumber":256,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":257,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":258,"author":{"gitId":"J-wang-CSMA"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":259,"author":{"gitId":"J-wang-CSMA"},"content":" public void getEditedPhone_firstParentPhoneNull_returnsSecondParentPhone() {","lastModifiedDate":"2024-03-18"},{"lineNumber":260,"author":{"gitId":"J-wang-CSMA"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2024-03-18"},{"lineNumber":261,"author":{"gitId":"J-wang-CSMA"},"content":" Phone expectedPhone \u003d new Phone(\"87654321\");","lastModifiedDate":"2024-03-18"},{"lineNumber":262,"author":{"gitId":"J-wang-CSMA"},"content":" descriptor.setSecondParentPhone(expectedPhone);","lastModifiedDate":"2024-03-18"},{"lineNumber":263,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":264,"author":{"gitId":"J-wang-CSMA"},"content":" Optional\u003cPhone\u003e result \u003d descriptor.getEditedPhone();","lastModifiedDate":"2024-03-18"},{"lineNumber":265,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":266,"author":{"gitId":"J-wang-CSMA"},"content":" assertTrue(result.isPresent());","lastModifiedDate":"2024-03-18"},{"lineNumber":267,"author":{"gitId":"J-wang-CSMA"},"content":" assertEquals(expectedPhone, result.get());","lastModifiedDate":"2024-03-18"},{"lineNumber":268,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":269,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":270,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":272,"author":{"gitId":"IamZhenHong"},"content":" StudentId targetId \u003d new StudentId(\"00001\");","lastModifiedDate":"2024-03-20"},{"lineNumber":273,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":274,"author":{"gitId":"J-wang-CSMA"},"content":" // Case 1: firstParentPhone is not null","lastModifiedDate":"2024-03-18"},{"lineNumber":275,"author":{"gitId":"J-wang-CSMA"},"content":" EditPersonDescriptor descriptorWithFirstParentPhone \u003d new EditPersonDescriptor();","lastModifiedDate":"2024-03-18"},{"lineNumber":276,"author":{"gitId":"J-wang-CSMA"},"content":" Phone firstParentPhone \u003d new Phone(\"12345678\");","lastModifiedDate":"2024-03-18"},{"lineNumber":277,"author":{"gitId":"J-wang-CSMA"},"content":" descriptorWithFirstParentPhone.setFirstParentPhone(firstParentPhone);","lastModifiedDate":"2024-03-18"},{"lineNumber":278,"author":{"gitId":"IamZhenHong"},"content":" EditCommand editCommandWithFirstParentPhone \u003d new EditCommand(targetId, descriptorWithFirstParentPhone);","lastModifiedDate":"2024-03-20"},{"lineNumber":279,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":280,"author":{"gitId":"IamZhenHong"},"content":" String expectedWithFirstParentPhone \u003d \"seedu.address.logic.commands.EditCommand{studentId\u003d\"","lastModifiedDate":"2024-03-20"},{"lineNumber":281,"author":{"gitId":"IamZhenHong"},"content":" + targetId","lastModifiedDate":"2024-03-20"},{"lineNumber":282,"author":{"gitId":"J-wang-CSMA"},"content":" + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2024-03-18"},{"lineNumber":283,"author":{"gitId":"J-wang-CSMA"},"content":" + descriptorWithFirstParentPhone","lastModifiedDate":"2024-03-18"},{"lineNumber":284,"author":{"gitId":"J-wang-CSMA"},"content":" + \"}\";","lastModifiedDate":"2024-03-18"},{"lineNumber":285,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":286,"author":{"gitId":"J-wang-CSMA"},"content":" assertEquals(expectedWithFirstParentPhone, editCommandWithFirstParentPhone.toString());","lastModifiedDate":"2024-03-18"},{"lineNumber":287,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":288,"author":{"gitId":"J-wang-CSMA"},"content":" // Case 2: firstParentPhone is null, secondParentPhone is not null","lastModifiedDate":"2024-03-18"},{"lineNumber":289,"author":{"gitId":"J-wang-CSMA"},"content":" EditPersonDescriptor descriptorWithSecondParentPhone \u003d new EditPersonDescriptor();","lastModifiedDate":"2024-03-18"},{"lineNumber":290,"author":{"gitId":"J-wang-CSMA"},"content":" Phone secondParentPhone \u003d new Phone(\"87654321\");","lastModifiedDate":"2024-03-18"},{"lineNumber":291,"author":{"gitId":"J-wang-CSMA"},"content":" descriptorWithSecondParentPhone.setSecondParentPhone(secondParentPhone);","lastModifiedDate":"2024-03-18"},{"lineNumber":292,"author":{"gitId":"IamZhenHong"},"content":" EditCommand editCommandWithSecondParentPhone \u003d new EditCommand(targetId, descriptorWithSecondParentPhone);","lastModifiedDate":"2024-03-20"},{"lineNumber":293,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":294,"author":{"gitId":"IamZhenHong"},"content":" String expectedWithSecondParentPhone \u003d \"seedu.address.logic.commands.EditCommand{studentId\u003d\"","lastModifiedDate":"2024-03-20"},{"lineNumber":295,"author":{"gitId":"IamZhenHong"},"content":" + targetId","lastModifiedDate":"2024-03-20"},{"lineNumber":296,"author":{"gitId":"J-wang-CSMA"},"content":" + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2024-03-18"},{"lineNumber":297,"author":{"gitId":"J-wang-CSMA"},"content":" + descriptorWithSecondParentPhone","lastModifiedDate":"2024-03-18"},{"lineNumber":298,"author":{"gitId":"J-wang-CSMA"},"content":" + \"}\";","lastModifiedDate":"2024-03-18"},{"lineNumber":299,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":300,"author":{"gitId":"J-wang-CSMA"},"content":" assertEquals(expectedWithSecondParentPhone, editCommandWithSecondParentPhone.toString());","lastModifiedDate":"2024-03-18"},{"lineNumber":301,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":302,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":303,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08"}],"authorContributionMap":{"IamZhenHong":121,"-":131,"J-wang-CSMA":51}},{"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":"J-wang-CSMA"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_ONE_BOB;","lastModifiedDate":"2024-03-18"},{"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":"J-wang-CSMA"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_ONE_BOB, \"2\").build();","lastModifiedDate":"2024-03-18"},{"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":"J-wang-CSMA"},"content":" String expected;","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"J-wang-CSMA"},"content":" if (editPersonDescriptor.getFirstParentPhone().isPresent()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"J-wang-CSMA"},"content":" expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"J-wang-CSMA"},"content":" + editPersonDescriptor.getName().orElse(null) + \", edited phone\u003d\"","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"J-wang-CSMA"},"content":" + editPersonDescriptor.getFirstParentPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", address\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getAddress().orElse(null) + \", student id\u003d\"","lastModifiedDate":"2024-02-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getStudentId().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2024-02-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getTags().orElse(null) + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"J-wang-CSMA"},"content":" } else {","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"J-wang-CSMA"},"content":" expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"J-wang-CSMA"},"content":" + editPersonDescriptor.getName().orElse(null) + \", edited phone\u003d\"","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"J-wang-CSMA"},"content":" + editPersonDescriptor.getSecondParentPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"J-wang-CSMA"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", address\u003d\"","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"J-wang-CSMA"},"content":" + editPersonDescriptor.getAddress().orElse(null) + \", student id\u003d\"","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"J-wang-CSMA"},"content":" + editPersonDescriptor.getStudentId().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"J-wang-CSMA"},"content":" + editPersonDescriptor.getTags().orElse(null) + \"}\";","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"-":67,"J-wang-CSMA":18}},{"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":"IamZhenHong"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonWithStudentId;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":6,"author":{"gitId":"IamZhenHong"},"content":"import static seedu.address.testutil.TypicalStudentIds.ID_FIRST_PERSON;","lastModifiedDate":"2024-03-20"},{"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":"IamZhenHong"},"content":" showPersonWithStudentId(model, ID_FIRST_PERSON);","lastModifiedDate":"2024-03-20"},{"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":{"IamZhenHong":3,"-":36}},{"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":"J-wang-CSMA"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_ADD_DESC;","lastModifiedDate":"2024-03-18"},{"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":"J-wang-CSMA"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_ADD_AMY;","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"J-wang-CSMA"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_ADD_BOB;","lastModifiedDate":"2024-03-18"},{"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.STUDENT_ID_DESC_AMY;","lastModifiedDate":"2024-02-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.STUDENT_ID_DESC_BOB;","lastModifiedDate":"2024-02-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":26,"author":{"gitId":"J-wang-CSMA"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_ONE_BOB;","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"J-wang-CSMA"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_TWO_BOB;","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"J-wang-CSMA"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PARENT_PHONES;","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25"},{"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":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-06-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-06-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15"},{"lineNumber":49,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":51,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2018-07-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":59,"author":{"gitId":"J-wang-CSMA"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_ADD_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + STUDENT_ID_DESC_BOB + TAG_DESC_FRIEND, new AddCommand(expectedPerson));","lastModifiedDate":"2024-02-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":62,"author":{"gitId":"wallacexuhanxiao"},"content":" //with one parent phone","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"wallacexuhanxiao"},"content":" Person singleParent \u003d new PersonBuilder(BOB).withFirstParentPhone(\"12345678\")","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"wallacexuhanxiao"},"content":" .withSecondParentPhone(\"12345678\").build();","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"wallacexuhanxiao"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + \" p/12345678\" + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"wallacexuhanxiao"},"content":" + ADDRESS_DESC_BOB + STUDENT_ID_DESC_BOB + TAG_DESC_FRIEND","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"wallacexuhanxiao"},"content":" + TAG_DESC_HUSBAND, new AddCommand(singleParent));","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15"},{"lineNumber":70,"author":{"gitId":"-"},"content":" Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND)","lastModifiedDate":"2018-07-25"},{"lineNumber":71,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":73,"author":{"gitId":"J-wang-CSMA"},"content":" NAME_DESC_BOB + PHONE_DESC_ADD_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB + STUDENT_ID_DESC_BOB","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2024-02-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":" new AddCommand(expectedPersonMultipleTags));","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":"-"},"content":" @Test","lastModifiedDate":"2023-07-14"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":80,"author":{"gitId":"J-wang-CSMA"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_ADD_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + STUDENT_ID_DESC_BOB + TAG_DESC_FRIEND;","lastModifiedDate":"2024-02-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":83,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14"},{"lineNumber":88,"author":{"gitId":"J-wang-CSMA"},"content":" assertParseFailure(parser, PHONE_DESC_ADD_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"J-wang-CSMA"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PARENT_PHONES));","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":99,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":101,"author":{"gitId":"J-wang-CSMA"},"content":" validExpectedPersonString + PHONE_DESC_ADD_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2024-03-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" + STUDENT_ID_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-02-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_ADDRESS,","lastModifiedDate":"2024-02-18"},{"lineNumber":104,"author":{"gitId":"J-wang-CSMA"},"content":" PREFIX_EMAIL, PREFIX_PARENT_PHONES));","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":110,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":112,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":117,"author":{"gitId":"J-wang-CSMA"},"content":" assertParseFailure(parser, INVALID_PHONE_ADD_DESC + validExpectedPersonString,","lastModifiedDate":"2024-03-18"},{"lineNumber":118,"author":{"gitId":"J-wang-CSMA"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PARENT_PHONES));","lastModifiedDate":"2024-03-18"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":130,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":132,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":135,"author":{"gitId":"J-wang-CSMA"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_ADD_DESC,","lastModifiedDate":"2024-03-18"},{"lineNumber":136,"author":{"gitId":"J-wang-CSMA"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PARENT_PHONES));","lastModifiedDate":"2024-03-18"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":138,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":140,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":144,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":145,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15"},{"lineNumber":146,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2018-07-25"},{"lineNumber":147,"author":{"gitId":"J-wang-CSMA"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_ADD_AMY + EMAIL_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2024-03-18"},{"lineNumber":148,"author":{"gitId":"-"},"content":" + STUDENT_ID_DESC_AMY, new AddCommand(expectedPerson));","lastModifiedDate":"2024-02-19"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":151,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":152,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":153,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":155,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":156,"author":{"gitId":"J-wang-CSMA"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_ADD_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-03-18"},{"lineNumber":157,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":159,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":160,"author":{"gitId":"J-wang-CSMA"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-18"},{"lineNumber":161,"author":{"gitId":"J-wang-CSMA"},"content":" NAME_DESC_BOB + VALID_PHONE_ONE_BOB + \", \" + VALID_PHONE_TWO_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-03-18"},{"lineNumber":162,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":164,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":165,"author":{"gitId":"J-wang-CSMA"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_ADD_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-03-18"},{"lineNumber":166,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":168,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":169,"author":{"gitId":"J-wang-CSMA"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_ADD_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2024-03-18"},{"lineNumber":170,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":172,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15"},{"lineNumber":173,"author":{"gitId":"J-wang-CSMA"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-18"},{"lineNumber":174,"author":{"gitId":"J-wang-CSMA"},"content":" VALID_NAME_BOB + VALID_PHONE_ONE_BOB + \", \" + VALID_PHONE_TWO_BOB + VALID_EMAIL_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2024-03-18"},{"lineNumber":175,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":178,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":179,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":180,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":181,"author":{"gitId":"J-wang-CSMA"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_ADD_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-18"},{"lineNumber":182,"author":{"gitId":"-"},"content":" + STUDENT_ID_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-19"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":184,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15"},{"lineNumber":185,"author":{"gitId":"J-wang-CSMA"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_ADD_DESC + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-18"},{"lineNumber":186,"author":{"gitId":"-"},"content":" + STUDENT_ID_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-19"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":188,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15"},{"lineNumber":189,"author":{"gitId":"J-wang-CSMA"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_ADD_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-18"},{"lineNumber":190,"author":{"gitId":"-"},"content":" + STUDENT_ID_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-19"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":192,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15"},{"lineNumber":193,"author":{"gitId":"J-wang-CSMA"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_ADD_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2024-03-18"},{"lineNumber":194,"author":{"gitId":"-"},"content":" + STUDENT_ID_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-19"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":196,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15"},{"lineNumber":197,"author":{"gitId":"J-wang-CSMA"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_ADD_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-18"},{"lineNumber":198,"author":{"gitId":"-"},"content":" + STUDENT_ID_DESC_BOB + INVALID_TAG_DESC + VALID_TAG_FRIEND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-19"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":200,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":201,"author":{"gitId":"J-wang-CSMA"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_ADD_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2024-03-18"},{"lineNumber":202,"author":{"gitId":"-"},"content":" + STUDENT_ID_DESC_BOB, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-02-19"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":205,"author":{"gitId":"J-wang-CSMA"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_ADD_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-18"},{"lineNumber":206,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + STUDENT_ID_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2024-02-19"},{"lineNumber":207,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":209,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"wallacexuhanxiao":6,"-":171,"J-wang-CSMA":32}},{"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":"IamZhenHong"},"content":"import static seedu.address.testutil.TypicalStudentIds.ID_FIRST_PERSON;","lastModifiedDate":"2024-03-20"},{"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":"-"},"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":"ongzhili"},"content":"import seedu.address.model.person.StudentId;","lastModifiedDate":"2024-03-17"},{"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":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"ongzhili"},"content":" DeleteCommand.COMMAND_WORD + \" \" + \"00001\");","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"ongzhili"},"content":" assertEquals(new DeleteCommand(new StudentId(\"00001\")), command);","lastModifiedDate":"2024-03-17"},{"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_edit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27"},{"lineNumber":61,"author":{"gitId":"J-wang-CSMA"},"content":" System.out.println(PersonUtil.getEditPersonDescriptorDetails(descriptor).toString());","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27"},{"lineNumber":63,"author":{"gitId":"IamZhenHong"},"content":" + ID_FIRST_PERSON + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"IamZhenHong"},"content":" assertEquals(new EditCommand(ID_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","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_find() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":77,"author":{"gitId":"wallacexuhanxiao"},"content":" FindCommand.COMMAND_WORD + \" \" + \"1 \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2024-03-10"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"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_list() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","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_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23"},{"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_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"IamZhenHong":3,"ongzhili":3,"wallacexuhanxiao":1,"-":95,"J-wang-CSMA":1}},{"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":"ongzhili"},"content":"import static seedu.address.testutil.TypicalStudentIds.ID_FIRST_PERSON;","lastModifiedDate":"2024-03-17"},{"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":"ongzhili"},"content":" assertParseSuccess(parser, \"00001\", new DeleteCommand(ID_FIRST_PERSON));","lastModifiedDate":"2024-03-17"},{"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":{"ongzhili":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":"J-wang-CSMA"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_EDIT_DESC;","lastModifiedDate":"2024-03-18"},{"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":"J-wang-CSMA"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_EDIT_AMY;","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"J-wang-CSMA"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_EDIT_BOB;","lastModifiedDate":"2024-03-18"},{"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":"J-wang-CSMA"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_ONE_AMY;","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"J-wang-CSMA"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_ONE_BOB;","lastModifiedDate":"2024-03-18"},{"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":"J-wang-CSMA"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PARENT_PHONES;","lastModifiedDate":"2024-03-18"},{"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":"IamZhenHong"},"content":"import static seedu.address.testutil.TypicalStudentIds.ID_SECOND_PERSON;","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-04"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-04"},{"lineNumber":42,"author":{"gitId":"IamZhenHong"},"content":"import seedu.address.model.person.StudentId;","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":46,"author":{"gitId":"IamZhenHong"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":49,"author":{"gitId":"-"},"content":" private static final String TAG_EMPTY \u003d \" \" + PREFIX_TAG;","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":61,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":62,"author":{"gitId":"IamZhenHong"},"content":" assertParseFailure(parser, \"00001\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":64,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":77,"author":{"gitId":"IamZhenHong"},"content":" assertParseFailure(parser, \"00001 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":80,"author":{"gitId":"IamZhenHong"},"content":" assertParseFailure(parser, \"00001 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":85,"author":{"gitId":"IamZhenHong"},"content":" assertParseFailure(parser, \"00001\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"IamZhenHong"},"content":" assertParseFailure(parser, \"00001\" + INVALID_PHONE_EDIT_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"IamZhenHong"},"content":" assertParseFailure(parser, \"00001\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"IamZhenHong"},"content":" assertParseFailure(parser, \"00001\" + INVALID_ADDRESS_DESC, Address.MESSAGE_CONSTRAINTS); // invalid address","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"IamZhenHong"},"content":" assertParseFailure(parser, \"00001\" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":91,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04"},{"lineNumber":92,"author":{"gitId":"IamZhenHong"},"content":" assertParseFailure(parser, \"00001\" + INVALID_PHONE_EDIT_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":94,"author":{"gitId":"-"},"content":" // while parsing {@code PREFIX_TAG} alone will reset the tags of the {@code Person} being edited,","lastModifiedDate":"2017-05-04"},{"lineNumber":95,"author":{"gitId":"-"},"content":" // parsing it together with a valid tag results in error","lastModifiedDate":"2017-05-04"},{"lineNumber":96,"author":{"gitId":"IamZhenHong"},"content":" assertParseFailure(parser, \"00001\" + TAG_DESC_FRIEND + TAG_DESC_HUSBAND + TAG_EMPTY, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"IamZhenHong"},"content":" assertParseFailure(parser, \"00001\" + TAG_DESC_FRIEND + TAG_EMPTY + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"IamZhenHong"},"content":" assertParseFailure(parser, \"00001\" + TAG_EMPTY + TAG_DESC_FRIEND + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-20"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":100,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04"},{"lineNumber":101,"author":{"gitId":"J-wang-CSMA"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-03-18"},{"lineNumber":102,"author":{"gitId":"IamZhenHong"},"content":" \"00001\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_ADDRESS_AMY + VALID_PHONE_ONE_AMY,","lastModifiedDate":"2024-03-20"},{"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":"IamZhenHong"},"content":" StudentId targetId \u003d ID_SECOND_PERSON;","lastModifiedDate":"2024-03-20"},{"lineNumber":109,"author":{"gitId":"IamZhenHong"},"content":" String userInput \u003d targetId + PHONE_DESC_EDIT_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2024-03-20"},{"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":"IamZhenHong"},"content":" .withPhone(VALID_PHONE_ONE_BOB, \"00001\").withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2024-03-20"},{"lineNumber":114,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":115,"author":{"gitId":"IamZhenHong"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetId, descriptor);","lastModifiedDate":"2024-03-20"},{"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":"IamZhenHong"},"content":" StudentId targetId \u003d ID_SECOND_PERSON;","lastModifiedDate":"2024-03-20"},{"lineNumber":123,"author":{"gitId":"IamZhenHong"},"content":" String userInput \u003d targetId + PHONE_DESC_EDIT_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":125,"author":{"gitId":"IamZhenHong"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_ONE_BOB, \"00001\")","lastModifiedDate":"2024-03-20"},{"lineNumber":126,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":127,"author":{"gitId":"IamZhenHong"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetId, descriptor);","lastModifiedDate":"2024-03-20"},{"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":"IamZhenHong"},"content":" StudentId targetId \u003d ID_SECOND_PERSON;","lastModifiedDate":"2024-03-20"},{"lineNumber":136,"author":{"gitId":"IamZhenHong"},"content":" String userInput \u003d targetId + NAME_DESC_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":137,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":138,"author":{"gitId":"IamZhenHong"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetId, descriptor);","lastModifiedDate":"2024-03-20"},{"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":"IamZhenHong"},"content":" userInput \u003d targetId + PHONE_DESC_EDIT_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":143,"author":{"gitId":"J-wang-CSMA"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_ONE_AMY, \"2\").build();","lastModifiedDate":"2024-03-18"},{"lineNumber":144,"author":{"gitId":"IamZhenHong"},"content":" expectedCommand \u003d new EditCommand(targetId, descriptor);","lastModifiedDate":"2024-03-20"},{"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":"IamZhenHong"},"content":" userInput \u003d targetId + EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":149,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":150,"author":{"gitId":"IamZhenHong"},"content":" expectedCommand \u003d new EditCommand(targetId, descriptor);","lastModifiedDate":"2024-03-20"},{"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":"IamZhenHong"},"content":" userInput \u003d targetId + ADDRESS_DESC_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":155,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":156,"author":{"gitId":"IamZhenHong"},"content":" expectedCommand \u003d new EditCommand(targetId, descriptor);","lastModifiedDate":"2024-03-20"},{"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":"IamZhenHong"},"content":" userInput \u003d targetId + TAG_DESC_FRIEND;","lastModifiedDate":"2024-03-20"},{"lineNumber":161,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":162,"author":{"gitId":"IamZhenHong"},"content":" expectedCommand \u003d new EditCommand(targetId, descriptor);","lastModifiedDate":"2024-03-20"},{"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":"IamZhenHong"},"content":" StudentId targetId \u003d ID_SECOND_PERSON;","lastModifiedDate":"2024-03-20"},{"lineNumber":173,"author":{"gitId":"IamZhenHong"},"content":" String userInput \u003d targetId + PHONE_DESC_EDIT_BOB + INVALID_PHONE_EDIT_DESC;","lastModifiedDate":"2024-03-20"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":175,"author":{"gitId":"J-wang-CSMA"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PARENT_PHONES));","lastModifiedDate":"2024-03-18"},{"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":"IamZhenHong"},"content":" userInput \u003d targetId + INVALID_PHONE_EDIT_DESC + PHONE_DESC_EDIT_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":180,"author":{"gitId":"J-wang-CSMA"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PARENT_PHONES));","lastModifiedDate":"2024-03-18"},{"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":"IamZhenHong"},"content":" userInput \u003d targetId + PHONE_DESC_EDIT_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2024-03-20"},{"lineNumber":184,"author":{"gitId":"J-wang-CSMA"},"content":" + TAG_DESC_FRIEND + PHONE_DESC_EDIT_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + TAG_DESC_FRIEND","lastModifiedDate":"2024-03-18"},{"lineNumber":185,"author":{"gitId":"J-wang-CSMA"},"content":" + PHONE_DESC_EDIT_BOB + ADDRESS_DESC_BOB + EMAIL_DESC_BOB + TAG_DESC_HUSBAND;","lastModifiedDate":"2024-03-18"},{"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":"J-wang-CSMA"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PARENT_PHONES, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2024-03-18"},{"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":"IamZhenHong"},"content":" userInput \u003d targetId + INVALID_PHONE_EDIT_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2024-03-20"},{"lineNumber":192,"author":{"gitId":"J-wang-CSMA"},"content":" + INVALID_PHONE_EDIT_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2024-03-18"},{"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":"J-wang-CSMA"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PARENT_PHONES, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2024-03-18"},{"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":"IamZhenHong"},"content":" StudentId targetId \u003d ID_SECOND_PERSON;","lastModifiedDate":"2024-03-20"},{"lineNumber":201,"author":{"gitId":"IamZhenHong"},"content":" String userInput \u003d targetId + TAG_EMPTY;","lastModifiedDate":"2024-03-20"},{"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":"IamZhenHong"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetId, descriptor);","lastModifiedDate":"2024-03-20"},{"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":{"IamZhenHong":43,"-":150,"J-wang-CSMA":15}},{"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":"wallacexuhanxiao"},"content":"import seedu.address.model.person.IdMatchesPredicate;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"wallacexuhanxiao"},"content":"import seedu.address.model.person.StudentId;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"wallacexuhanxiao"},"content":"import seedu.address.model.person.TagMatchesPredicate;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"wallacexuhanxiao"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class FindCommandParserTest {","lastModifiedDate":"2017-06-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private FindCommandParser parser \u003d new FindCommandParser();","lastModifiedDate":"2017-06-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2017-06-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \" \", String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-07-06"},{"lineNumber":25,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"wallacexuhanxiao"},"content":" assertParseFailure(parser, \"5 00001\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsFindCommand() {","lastModifiedDate":"2017-08-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2017-06-27"},{"lineNumber":32,"author":{"gitId":"wallacexuhanxiao"},"content":" FindCommand expectedFindNameCommand \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" new FindCommand(new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\")));","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"wallacexuhanxiao"},"content":" FindCommand expectedFindIdCommand \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"wallacexuhanxiao"},"content":" new FindCommand(new IdMatchesPredicate(new StudentId(\"00001\")));","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"wallacexuhanxiao"},"content":" FindCommand expectedFindTagCommand \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"wallacexuhanxiao"},"content":" new FindCommand(new TagMatchesPredicate(new Tag(\"someTag\")));","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"wallacexuhanxiao"},"content":" assertParseSuccess(parser, \"1 Alice Bob\", expectedFindNameCommand);","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"wallacexuhanxiao"},"content":" assertParseSuccess(parser, \"1 \\n Alice \\n \\t Bob \\t\", expectedFindNameCommand);","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"wallacexuhanxiao"},"content":" assertParseSuccess(parser, \"2 00001\", expectedFindIdCommand);","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"wallacexuhanxiao"},"content":" //expected to change when implemented 3","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"wallacexuhanxiao"},"content":" assertParseSuccess(parser, \"3 someTag\", expectedFindTagCommand);","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-27"}],"authorContributionMap":{"wallacexuhanxiao":19,"-":31}},{"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":"J-wang-CSMA"},"content":"import static org.junit.jupiter.api.Assertions.assertArrayEquals;","lastModifiedDate":"2024-03-18"},{"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.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":"2017-05-22"},{"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":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-05-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2017-05-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2017-05-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2017-05-22"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d \"12345678\";","lastModifiedDate":"2024-02-19"},{"lineNumber":31,"author":{"gitId":"J-wang-CSMA"},"content":" private static final String VALID_PHONE_TWO \u003d \"87654321\";","lastModifiedDate":"2024-03-18"},{"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":"J-wang-CSMA"},"content":" private static final String VALID_TAG_1 \u003d \"Friend\";","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"J-wang-CSMA"},"content":" private static final String VALID_TAG_2 \u003d \"Neighbour\";","lastModifiedDate":"2024-03-21"},{"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-22"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29"},{"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 parsePhone_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePhone((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 parsePhone_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhone(INVALID_PHONE));","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":"J-wang-CSMA"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"J-wang-CSMA"},"content":" public void parsePhoneForEdit_validInput_success() throws Exception {","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"J-wang-CSMA"},"content":" String phone \u003d \"12345678, 1\";","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"J-wang-CSMA"},"content":" String[] expected \u003d new String[]{\"12345678\", \" 1\"};","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"J-wang-CSMA"},"content":" assertArrayEquals(expected, ParserUtil.parsePhoneForEdit(phone));","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"J-wang-CSMA"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"J-wang-CSMA"},"content":" public void parsePhoneForEdit_invalidPhone_throwsParseException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"J-wang-CSMA"},"content":" String invalidPhone \u003d \"abcd, 1\";","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"J-wang-CSMA"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhoneForEdit(invalidPhone));","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"J-wang-CSMA"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"J-wang-CSMA"},"content":" public void parsePhoneForEdit_invalidNumberToEdit_throwsParseException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"J-wang-CSMA"},"content":" String invalidEditNumber \u003d \"12345678, 3\";","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"J-wang-CSMA"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhoneForEdit(invalidEditNumber));","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"J-wang-CSMA"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"J-wang-CSMA"},"content":" public void parsePhoneForEdit_incorrectFormat_throwsParseException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"J-wang-CSMA"},"content":" String incorrectFormat \u003d \"12345678\";","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"J-wang-CSMA"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhoneForEdit(incorrectFormat));","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":102,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":103,"author":{"gitId":"J-wang-CSMA"},"content":" String phoneString \u003d VALID_PHONE + \",\" + VALID_PHONE_TWO;","lastModifiedDate":"2024-03-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-22"},{"lineNumber":105,"author":{"gitId":"J-wang-CSMA"},"content":" Phone expectedPhoneTwo \u003d new Phone(VALID_PHONE_TWO);","lastModifiedDate":"2024-03-18"},{"lineNumber":106,"author":{"gitId":"J-wang-CSMA"},"content":" Phone[] expectedPhoneArray \u003d new Phone[2];","lastModifiedDate":"2024-03-18"},{"lineNumber":107,"author":{"gitId":"J-wang-CSMA"},"content":" expectedPhoneArray[0] \u003d expectedPhone;","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"J-wang-CSMA"},"content":" expectedPhoneArray[1] \u003d expectedPhoneTwo;","lastModifiedDate":"2024-03-18"},{"lineNumber":109,"author":{"gitId":"J-wang-CSMA"},"content":" assertEquals(expectedPhoneArray[0], ParserUtil.parsePhone(phoneString)[0]);","lastModifiedDate":"2024-03-18"},{"lineNumber":110,"author":{"gitId":"J-wang-CSMA"},"content":" assertEquals(expectedPhoneArray[1], ParserUtil.parsePhone(phoneString)[1]);","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithWhitespace_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":115,"author":{"gitId":"J-wang-CSMA"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE + \" , \" + VALID_PHONE_TWO + WHITESPACE;","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"J-wang-CSMA"},"content":" Phone expectedPhoneOne \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"J-wang-CSMA"},"content":" Phone expectedPhoneTwo \u003d new Phone(VALID_PHONE_TWO);","lastModifiedDate":"2024-03-18"},{"lineNumber":118,"author":{"gitId":"J-wang-CSMA"},"content":" Phone[] expectedPhoneArray \u003d new Phone[2];","lastModifiedDate":"2024-03-18"},{"lineNumber":119,"author":{"gitId":"J-wang-CSMA"},"content":" expectedPhoneArray[0] \u003d expectedPhoneOne;","lastModifiedDate":"2024-03-18"},{"lineNumber":120,"author":{"gitId":"J-wang-CSMA"},"content":" expectedPhoneArray[1] \u003d expectedPhoneTwo;","lastModifiedDate":"2024-03-18"},{"lineNumber":121,"author":{"gitId":"J-wang-CSMA"},"content":" assertEquals(expectedPhoneArray[0], ParserUtil.parsePhone(phoneWithWhitespace)[0]);","lastModifiedDate":"2024-03-18"},{"lineNumber":122,"author":{"gitId":"J-wang-CSMA"},"content":" assertEquals(expectedPhoneArray[1], ParserUtil.parsePhone(phoneWithWhitespace)[1]);","lastModifiedDate":"2024-03-18"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":126,"author":{"gitId":"-"},"content":" public void parseAddress_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseAddress((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":130,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":131,"author":{"gitId":"-"},"content":" public void parseAddress_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseAddress(INVALID_ADDRESS));","lastModifiedDate":"2019-03-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":136,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":137,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-22"},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(VALID_ADDRESS));","lastModifiedDate":"2017-05-30"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":143,"author":{"gitId":"-"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_ADDRESS + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":144,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-30"},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(addressWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":148,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":149,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":150,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":153,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":154,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":155,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":158,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":159,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":160,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22"},{"lineNumber":161,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30"},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":164,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":165,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":166,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":167,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30"},{"lineNumber":168,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":171,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":172,"author":{"gitId":"-"},"content":" public void parseTag_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":176,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":177,"author":{"gitId":"-"},"content":" public void parseTag_invalidValue_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTag(INVALID_TAG));","lastModifiedDate":"2019-03-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":181,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":182,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithoutWhitespace_returnsTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":183,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30"},{"lineNumber":184,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(VALID_TAG_1));","lastModifiedDate":"2017-05-30"},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":187,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":188,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithWhitespace_returnsTrimmedTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":189,"author":{"gitId":"-"},"content":" String tagWithWhitespace \u003d WHITESPACE + VALID_TAG_1 + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":190,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30"},{"lineNumber":191,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(tagWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":194,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":195,"author":{"gitId":"-"},"content":" public void parseTags_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTags(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":199,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":200,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithInvalidTags_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, INVALID_TAG)));","lastModifiedDate":"2019-03-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":204,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":205,"author":{"gitId":"-"},"content":" public void parseTags_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2017-05-22"},{"lineNumber":206,"author":{"gitId":"-"},"content":" assertTrue(ParserUtil.parseTags(Collections.emptyList()).isEmpty());","lastModifiedDate":"2017-05-22"},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":209,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":210,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithValidTags_returnsTagSet() throws Exception {","lastModifiedDate":"2017-05-22"},{"lineNumber":211,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e actualTagSet \u003d ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, VALID_TAG_2));","lastModifiedDate":"2017-05-22"},{"lineNumber":212,"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":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":214,"author":{"gitId":"-"},"content":" assertEquals(expectedTagSet, actualTagSet);","lastModifiedDate":"2017-05-22"},{"lineNumber":215,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":216,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":217,"author":{"gitId":"J-wang-CSMA"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":218,"author":{"gitId":"J-wang-CSMA"},"content":" public void parseName_capitalizationCheck() throws Exception {","lastModifiedDate":"2024-03-21"},{"lineNumber":219,"author":{"gitId":"J-wang-CSMA"},"content":" String inputName \u003d \"john doe\";","lastModifiedDate":"2024-03-21"},{"lineNumber":220,"author":{"gitId":"J-wang-CSMA"},"content":" Name expectedName \u003d new Name(\"John Doe\");","lastModifiedDate":"2024-03-21"},{"lineNumber":221,"author":{"gitId":"J-wang-CSMA"},"content":" assertEquals(expectedName, ParserUtil.parseName(inputName));","lastModifiedDate":"2024-03-21"},{"lineNumber":222,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":223,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":224,"author":{"gitId":"J-wang-CSMA"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":225,"author":{"gitId":"J-wang-CSMA"},"content":" public void parseName_capitalizationCheckWithNumbers() throws Exception {","lastModifiedDate":"2024-03-21"},{"lineNumber":226,"author":{"gitId":"J-wang-CSMA"},"content":" String inputNameWithNumbers \u003d \"mary jane 2nd\";","lastModifiedDate":"2024-03-21"},{"lineNumber":227,"author":{"gitId":"J-wang-CSMA"},"content":" Name expectedNameWithNumbers \u003d new Name(\"Mary Jane 2nd\");","lastModifiedDate":"2024-03-21"},{"lineNumber":228,"author":{"gitId":"J-wang-CSMA"},"content":" assertEquals(expectedNameWithNumbers, ParserUtil.parseName(inputNameWithNumbers));","lastModifiedDate":"2024-03-21"},{"lineNumber":229,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":230,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":231,"author":{"gitId":"J-wang-CSMA"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":232,"author":{"gitId":"J-wang-CSMA"},"content":" public void parseAddress_capitalizationCheck() throws Exception {","lastModifiedDate":"2024-03-21"},{"lineNumber":233,"author":{"gitId":"J-wang-CSMA"},"content":" String inputAddress \u003d \"123 baker street\";","lastModifiedDate":"2024-03-21"},{"lineNumber":234,"author":{"gitId":"J-wang-CSMA"},"content":" Address expectedAddress \u003d new Address(\"123 Baker Street\");","lastModifiedDate":"2024-03-21"},{"lineNumber":235,"author":{"gitId":"J-wang-CSMA"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(inputAddress));","lastModifiedDate":"2024-03-21"},{"lineNumber":236,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":237,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":238,"author":{"gitId":"J-wang-CSMA"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":239,"author":{"gitId":"J-wang-CSMA"},"content":" public void parseAddress_capitalizationCheckWithSpecialCharacters() throws Exception {","lastModifiedDate":"2024-03-21"},{"lineNumber":240,"author":{"gitId":"J-wang-CSMA"},"content":" String inputAddressWithSpecialChar \u003d \"4th avenue, #05-06\";","lastModifiedDate":"2024-03-21"},{"lineNumber":241,"author":{"gitId":"J-wang-CSMA"},"content":" Address expectedAddressWithSpecialChar \u003d new Address(\"4th Avenue, #05-06\");","lastModifiedDate":"2024-03-21"},{"lineNumber":242,"author":{"gitId":"J-wang-CSMA"},"content":" assertEquals(expectedAddressWithSpecialChar, ParserUtil.parseAddress(inputAddressWithSpecialChar));","lastModifiedDate":"2024-03-21"},{"lineNumber":243,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":244,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":245,"author":{"gitId":"J-wang-CSMA"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":246,"author":{"gitId":"J-wang-CSMA"},"content":" public void parseTag_capitalizationCheck() throws Exception {","lastModifiedDate":"2024-03-21"},{"lineNumber":247,"author":{"gitId":"J-wang-CSMA"},"content":" String inputTag \u003d \"Friend\";","lastModifiedDate":"2024-03-21"},{"lineNumber":248,"author":{"gitId":"J-wang-CSMA"},"content":" Tag expectedTag \u003d new Tag(\"Friend\");","lastModifiedDate":"2024-03-21"},{"lineNumber":249,"author":{"gitId":"J-wang-CSMA"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(inputTag));","lastModifiedDate":"2024-03-21"},{"lineNumber":250,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":251,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":252,"author":{"gitId":"J-wang-CSMA"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":253,"author":{"gitId":"J-wang-CSMA"},"content":" public void parseTag_capitalizationCheckWithNumbers() throws Exception {","lastModifiedDate":"2024-03-21"},{"lineNumber":254,"author":{"gitId":"J-wang-CSMA"},"content":" String inputTag \u003d \"3a\";","lastModifiedDate":"2024-03-21"},{"lineNumber":255,"author":{"gitId":"J-wang-CSMA"},"content":" Tag expectedTag \u003d new Tag(\"3a\");","lastModifiedDate":"2024-03-21"},{"lineNumber":256,"author":{"gitId":"J-wang-CSMA"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(inputTag));","lastModifiedDate":"2024-03-21"},{"lineNumber":257,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":258,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":259,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22"}],"authorContributionMap":{"-":168,"J-wang-CSMA":91}},{"path":"src/test/java/seedu/address/model/person/IdMatchesPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"wallacexuhanxiao"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"wallacexuhanxiao"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"wallacexuhanxiao"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"wallacexuhanxiao"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"wallacexuhanxiao"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"wallacexuhanxiao"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"wallacexuhanxiao"},"content":"class IdMatchesPredicateTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"wallacexuhanxiao"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"wallacexuhanxiao"},"content":" void test_idMatchesPredicate_returnsTrue() {","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"wallacexuhanxiao"},"content":" IdMatchesPredicate predicate \u003d new IdMatchesPredicate(new StudentId(\"00001\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"wallacexuhanxiao"},"content":" assertTrue(predicate.test(new PersonBuilder().withStudentId(\"00001\").build()));","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"wallacexuhanxiao"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"wallacexuhanxiao"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"wallacexuhanxiao"},"content":" void test_idMatchesPredicate_returnsFalse() {","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"wallacexuhanxiao"},"content":" IdMatchesPredicate predicate \u003d new IdMatchesPredicate(new StudentId(\"00001\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"wallacexuhanxiao"},"content":" assertFalse(predicate.test(new PersonBuilder().withStudentId(\"00002\").build()));","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"wallacexuhanxiao"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"wallacexuhanxiao"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"wallacexuhanxiao"},"content":" void equals() {","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"wallacexuhanxiao"},"content":" IdMatchesPredicate firstPredicateId \u003d new IdMatchesPredicate(new StudentId(\"00001\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"wallacexuhanxiao"},"content":" IdMatchesPredicate secondPredicateId \u003d new IdMatchesPredicate(new StudentId(\"00002\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"wallacexuhanxiao"},"content":" IdMatchesPredicate thirdPredicateId \u003d new IdMatchesPredicate(new StudentId(\"00001\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"wallacexuhanxiao"},"content":" assertTrue(firstPredicateId.equals(firstPredicateId));","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"wallacexuhanxiao"},"content":" assertTrue(firstPredicateId.equals(thirdPredicateId));","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"wallacexuhanxiao"},"content":" assertFalse(firstPredicateId.equals(secondPredicateId));","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"wallacexuhanxiao"},"content":" assertFalse(firstPredicateId.equals(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"wallacexuhanxiao"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"wallacexuhanxiao"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"wallacexuhanxiao"},"content":" void toStringMethod() {","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"wallacexuhanxiao"},"content":" String keywords \u003d \"00001\";","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"wallacexuhanxiao"},"content":" IdMatchesPredicate predicate \u003d new IdMatchesPredicate(new StudentId(keywords));","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"wallacexuhanxiao"},"content":" String expected \u003d IdMatchesPredicate.class.getCanonicalName() + \"{student id\u003d\" + keywords + \"}\";","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"wallacexuhanxiao"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"wallacexuhanxiao"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"wallacexuhanxiao"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"wallacexuhanxiao":48}},{"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":"-"},"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":"J-wang-CSMA"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\")","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"J-wang-CSMA"},"content":" .withFirstParentPhone(\"12345678\")","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"J-wang-CSMA"},"content":" .withSecondParentPhone(\"33333332\")","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"J-wang-CSMA"},"content":" .withEmail(\"alice@email.com\")","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"J-wang-CSMA"},"content":" .withAddress(\"Main Street\")","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"J-wang-CSMA"},"content":" .withStudentId(\"00001\").build()));","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"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":" List\u003cString\u003e keywords \u003d List.of(\"keyword1\", \"keyword2\");","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(keywords);","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" String expected \u003d NameContainsKeywordsPredicate.class.getCanonicalName() + \"{keywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"-":83,"J-wang-CSMA":6}},{"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":"J-wang-CSMA"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-18"},{"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_ADDRESS_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":10,"author":{"gitId":"J-wang-CSMA"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_ONE_BOB;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"J-wang-CSMA"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_TWO_BOB;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_STUDENT_ID_AMY;","lastModifiedDate":"2024-02-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_STUDENT_ID_BOB;","lastModifiedDate":"2024-02-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":27,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2018-03-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTags().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18"},{"lineNumber":40,"author":{"gitId":"J-wang-CSMA"},"content":" Person editedAlice \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"J-wang-CSMA"},"content":" new PersonBuilder(ALICE).withFirstParentPhone(VALID_PHONE_ONE_BOB)","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"J-wang-CSMA"},"content":" .withSecondParentPhone(VALID_PHONE_TWO_BOB)","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"J-wang-CSMA"},"content":" .withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"J-wang-CSMA"},"content":" .withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"J-wang-CSMA"},"content":" .withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"J-wang-CSMA"},"content":" .withStudentId(VALID_STUDENT_ID_AMY).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":50,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).withStudentId(VALID_STUDENT_ID_BOB).build();","lastModifiedDate":"2024-02-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":54,"author":{"gitId":"-"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase())","lastModifiedDate":"2024-02-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" .withStudentId(VALID_STUDENT_ID_AMY).build();","lastModifiedDate":"2024-02-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":59,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18"},{"lineNumber":60,"author":{"gitId":"-"},"content":" editedBob \u003d new PersonBuilder(BOB).withName(nameWithTrailingSpaces).withStudentId(VALID_STUDENT_ID_AMY).build();","lastModifiedDate":"2024-02-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"J-wang-CSMA"},"content":" editedAlice \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"J-wang-CSMA"},"content":" new PersonBuilder(ALICE)","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"J-wang-CSMA"},"content":" .withFirstParentPhone(VALID_PHONE_ONE_BOB)","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"J-wang-CSMA"},"content":" .withSecondParentPhone(VALID_PHONE_TWO_BOB)","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"J-wang-CSMA"},"content":" .build();","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2018-04-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":107,"author":{"gitId":"J-wang-CSMA"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"J-wang-CSMA"},"content":" public void hashCode_sameObject_consistentValue() {","lastModifiedDate":"2024-03-18"},{"lineNumber":109,"author":{"gitId":"J-wang-CSMA"},"content":" Person person \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":110,"author":{"gitId":"J-wang-CSMA"},"content":" int initialHashCode \u003d person.hashCode();","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"J-wang-CSMA"},"content":" assertEquals(initialHashCode, person.hashCode());","lastModifiedDate":"2024-03-18"},{"lineNumber":113,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":115,"author":{"gitId":"J-wang-CSMA"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"J-wang-CSMA"},"content":" public void hashCode_equalObjects_sameValue() {","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"J-wang-CSMA"},"content":" Person person1 \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":118,"author":{"gitId":"J-wang-CSMA"},"content":" Person person2 \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":119,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":120,"author":{"gitId":"J-wang-CSMA"},"content":" assertEquals(person1.hashCode(), person2.hashCode());","lastModifiedDate":"2024-03-18"},{"lineNumber":121,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":122,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":123,"author":{"gitId":"J-wang-CSMA"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":124,"author":{"gitId":"J-wang-CSMA"},"content":" public void hashCode_differentObjects_differentValue() {","lastModifiedDate":"2024-03-18"},{"lineNumber":125,"author":{"gitId":"J-wang-CSMA"},"content":" Person person1 \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":126,"author":{"gitId":"J-wang-CSMA"},"content":" Person person2 \u003d new PersonBuilder(BOB).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":127,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":128,"author":{"gitId":"J-wang-CSMA"},"content":" assertNotEquals(person1.hashCode(), person2.hashCode());","lastModifiedDate":"2024-03-18"},{"lineNumber":129,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":130,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":133,"author":{"gitId":"J-wang-CSMA"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName()","lastModifiedDate":"2024-03-18"},{"lineNumber":134,"author":{"gitId":"J-wang-CSMA"},"content":" + \", parent phone 1\u003d\" + ALICE.getParentPhoneOne()","lastModifiedDate":"2024-03-18"},{"lineNumber":135,"author":{"gitId":"J-wang-CSMA"},"content":" + \", parent phone 2\u003d\" + ALICE.getParentPhoneTwo()","lastModifiedDate":"2024-03-18"},{"lineNumber":136,"author":{"gitId":"J-wang-CSMA"},"content":" + \", email\u003d\" + ALICE.getEmail()","lastModifiedDate":"2024-03-18"},{"lineNumber":137,"author":{"gitId":"J-wang-CSMA"},"content":" + \", address\u003d\" + ALICE.getAddress()","lastModifiedDate":"2024-03-18"},{"lineNumber":138,"author":{"gitId":"J-wang-CSMA"},"content":" + \", student id\u003d\" + ALICE.getStudentId()","lastModifiedDate":"2024-03-18"},{"lineNumber":139,"author":{"gitId":"J-wang-CSMA"},"content":" + \", tags\u003d\" + ALICE.getTags() + \"}\";","lastModifiedDate":"2024-03-18"},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"-":96,"J-wang-CSMA":46}},{"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":"J-wang-CSMA"},"content":" assertFalse(Phone.isValidPhone(\"9132123\")); // less than 8 numbers","lastModifiedDate":"2024-03-18"},{"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":"J-wang-CSMA"},"content":" assertFalse(Phone.isValidPhone(\"01000100\")); // 0 as first digit","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // valid phone numbers","lastModifiedDate":"2017-01-16"},{"lineNumber":37,"author":{"gitId":"J-wang-CSMA"},"content":" assertTrue(Phone.isValidPhone(\"91191121\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(Phone.isValidPhone(\"93121534\"));","lastModifiedDate":"2017-01-16"},{"lineNumber":39,"author":{"gitId":"J-wang-CSMA"},"content":" assertTrue(Phone.isValidPhone(\"12429384\"));","lastModifiedDate":"2024-03-18"},{"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":" Phone phone \u003d new Phone(\"99999999\");","lastModifiedDate":"2024-02-19"},{"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(phone.equals(new Phone(\"99999999\")));","lastModifiedDate":"2024-02-19"},{"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(phone.equals(phone));","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(phone.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(phone.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(phone.equals(new Phone(\"99555555\")));","lastModifiedDate":"2024-02-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"-":57,"J-wang-CSMA":4}},{"path":"src/test/java/seedu/address/model/person/StudentIdTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"wallacexuhanxiao"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"wallacexuhanxiao"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"wallacexuhanxiao"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"wallacexuhanxiao"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"wallacexuhanxiao"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"wallacexuhanxiao"},"content":"class StudentIdTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"wallacexuhanxiao"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"wallacexuhanxiao"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"wallacexuhanxiao"},"content":" assertThrows(NullPointerException.class, () -\u003e new StudentId(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"wallacexuhanxiao"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"wallacexuhanxiao"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"wallacexuhanxiao"},"content":" public void constructor_invalidPhone_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"wallacexuhanxiao"},"content":" String invalidStringId \u003d \"\";","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"wallacexuhanxiao"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new StudentId(invalidStringId));","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"wallacexuhanxiao"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"wallacexuhanxiao"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"wallacexuhanxiao"},"content":" void isValidStudentId() {","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"wallacexuhanxiao"},"content":" assertThrows(NullPointerException.class, () -\u003e StudentId.isValidStudentId(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"wallacexuhanxiao"},"content":" // invalid","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"wallacexuhanxiao"},"content":" assertFalse(StudentId.isValidStudentId(\"\")); // empty string","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"wallacexuhanxiao"},"content":" assertFalse(StudentId.isValidStudentId(\" \")); // spaces only","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"wallacexuhanxiao"},"content":" assertFalse(StudentId.isValidStudentId(\"91\")); // less than 3 numbers","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"wallacexuhanxiao"},"content":" assertFalse(StudentId.isValidStudentId(\"phone\")); // non-numeric","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"wallacexuhanxiao"},"content":" assertFalse(StudentId.isValidStudentId(\"9011p041\")); // alphabets within digits","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"wallacexuhanxiao"},"content":" assertFalse(StudentId.isValidStudentId(\"9312 1534\")); // spaces within digits","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"wallacexuhanxiao"},"content":" // valid","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"wallacexuhanxiao"},"content":" assertTrue(StudentId.isValidStudentId(\"91191\")); // exactly 3 numbers","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"wallacexuhanxiao"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"wallacexuhanxiao"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"wallacexuhanxiao"},"content":" public void equals() {","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"wallacexuhanxiao"},"content":" StudentId studentId \u003d new StudentId(\"00001\");","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"wallacexuhanxiao"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"wallacexuhanxiao"},"content":" assertTrue(studentId.equals(new StudentId(\"00001\")));","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"wallacexuhanxiao"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"wallacexuhanxiao"},"content":" assertTrue(studentId.equals(studentId));","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"wallacexuhanxiao"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"wallacexuhanxiao"},"content":" assertFalse(studentId.equals(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"wallacexuhanxiao"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"wallacexuhanxiao"},"content":" assertFalse(studentId.equals(5.0f));","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"wallacexuhanxiao"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"wallacexuhanxiao"},"content":" assertFalse(studentId.equals(new StudentId(\"91255\")));","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"wallacexuhanxiao"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"wallacexuhanxiao"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"wallacexuhanxiao":58}},{"path":"src/test/java/seedu/address/model/person/TagMatchesPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"wallacexuhanxiao"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"wallacexuhanxiao"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"wallacexuhanxiao"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"wallacexuhanxiao"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"wallacexuhanxiao"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"wallacexuhanxiao"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"wallacexuhanxiao"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"wallacexuhanxiao"},"content":"class TagMatchesPredicateTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"wallacexuhanxiao"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"wallacexuhanxiao"},"content":" void test_tagMatchesPredicate_returnsTrue() {","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"wallacexuhanxiao"},"content":" TagMatchesPredicate predicate \u003d new TagMatchesPredicate(new Tag(\"tag\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"wallacexuhanxiao"},"content":" assertTrue(predicate.test(new PersonBuilder().withTags(\"tag\", \"tagg\", \"tags\").build()));","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"wallacexuhanxiao"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"wallacexuhanxiao"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"wallacexuhanxiao"},"content":" void test_tagMatchesPredicate_returnsFalse() {","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"wallacexuhanxiao"},"content":" TagMatchesPredicate predicate \u003d new TagMatchesPredicate(new Tag(\"tag\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"wallacexuhanxiao"},"content":" assertFalse(predicate.test(new PersonBuilder().withTags(\"tags\", \"tagg\").build()));","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"wallacexuhanxiao"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"wallacexuhanxiao"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"wallacexuhanxiao"},"content":" void equals() {","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"wallacexuhanxiao"},"content":" TagMatchesPredicate firstPredicateTag \u003d new TagMatchesPredicate(new Tag(\"tag1\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"wallacexuhanxiao"},"content":" TagMatchesPredicate secondPredicateTag \u003d new TagMatchesPredicate(new Tag(\"tag2\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"wallacexuhanxiao"},"content":" TagMatchesPredicate thirdPredicateTag \u003d new TagMatchesPredicate(new Tag(\"tag1\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"wallacexuhanxiao"},"content":" assertTrue(firstPredicateTag.equals(firstPredicateTag));","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"wallacexuhanxiao"},"content":" assertTrue(firstPredicateTag.equals(thirdPredicateTag));","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"wallacexuhanxiao"},"content":" assertFalse(firstPredicateTag.equals(secondPredicateTag));","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"wallacexuhanxiao"},"content":" assertFalse(firstPredicateTag.equals(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"wallacexuhanxiao"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"wallacexuhanxiao"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"wallacexuhanxiao"},"content":" void toStringMethod() {","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"wallacexuhanxiao"},"content":" String keywords \u003d \"taggg\";","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"wallacexuhanxiao"},"content":" TagMatchesPredicate predicate \u003d new TagMatchesPredicate(new Tag(keywords));","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"wallacexuhanxiao"},"content":" String expected \u003d TagMatchesPredicate.class.getCanonicalName() + \"{tag\u003d[\" + keywords + \"]}\";","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"wallacexuhanxiao"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"wallacexuhanxiao"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"wallacexuhanxiao"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"wallacexuhanxiao"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"wallacexuhanxiao":49}},{"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":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Tag(null));","lastModifiedDate":"2019-03-14"},{"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":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Tag(invalidTagName));","lastModifiedDate":"2019-03-14"},{"lineNumber":18,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":20,"author":{"gitId":"J-wang-CSMA"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"J-wang-CSMA"},"content":" public void constructor_moreThanTwoWords_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"J-wang-CSMA"},"content":" String invalidTagName \u003d \"Track and Field\";","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"J-wang-CSMA"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Tag(invalidTagName));","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void isValidTagName() {","lastModifiedDate":"2017-12-04"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // null tag name","lastModifiedDate":"2017-12-04"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Tag.isValidTagName(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-12-04"}],"authorContributionMap":{"-":26,"J-wang-CSMA":6}},{"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":"-"},"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":"J-wang-CSMA"},"content":" private static final String VALID_PHONE_ONE \u003d BENSON.getParentPhoneOne().toString();","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"J-wang-CSMA"},"content":" private static final String VALID_PHONE_TWO \u003d BENSON.getParentPhoneTwo().toString();","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":" private static final String VALID_STUDENT_ID \u003d BENSON.getStudentId().toString();","lastModifiedDate":"2024-02-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":"J-wang-CSMA"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE_ONE, VALID_PHONE_TWO, VALID_EMAIL,","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":" VALID_ADDRESS, VALID_STUDENT_ID, VALID_TAGS);","lastModifiedDate":"2024-02-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"J-wang-CSMA"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_PHONE_ONE, VALID_PHONE_TWO, VALID_EMAIL,","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"-"},"content":" VALID_ADDRESS, VALID_STUDENT_ID, VALID_TAGS);","lastModifiedDate":"2024-02-18"},{"lineNumber":56,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-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 toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"J-wang-CSMA"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_PHONE_TWO, VALID_EMAIL,","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"-"},"content":" VALID_ADDRESS, VALID_STUDENT_ID, VALID_TAGS);","lastModifiedDate":"2024-02-18"},{"lineNumber":65,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.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_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"J-wang-CSMA"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_PHONE_TWO, VALID_EMAIL,","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"-"},"content":" VALID_ADDRESS, VALID_STUDENT_ID, VALID_TAGS);","lastModifiedDate":"2024-02-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"J-wang-CSMA"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE_ONE, VALID_PHONE_TWO, INVALID_EMAIL,","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" VALID_ADDRESS, VALID_STUDENT_ID, VALID_TAGS);","lastModifiedDate":"2024-02-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"J-wang-CSMA"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE_ONE, VALID_PHONE_TWO, null,","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" VALID_ADDRESS, VALID_STUDENT_ID, VALID_TAGS);","lastModifiedDate":"2024-02-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"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":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"J-wang-CSMA"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE_ONE, VALID_PHONE_TWO, VALID_EMAIL,","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" INVALID_ADDRESS, VALID_STUDENT_ID, VALID_TAGS);","lastModifiedDate":"2024-02-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"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_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"J-wang-CSMA"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE_ONE, VALID_PHONE_TWO,","lastModifiedDate":"2024-03-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":" VALID_EMAIL, null, VALID_STUDENT_ID, VALID_TAGS);","lastModifiedDate":"2024-02-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"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 toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":116,"author":{"gitId":"J-wang-CSMA"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE_ONE, VALID_PHONE_TWO,","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"-"},"content":" VALID_EMAIL, VALID_ADDRESS, VALID_STUDENT_ID, invalidTags);","lastModifiedDate":"2024-02-18"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, 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":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"-":110,"J-wang-CSMA":11}},{"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.Address;","lastModifiedDate":"2017-12-23"},{"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":"-"},"content":"import seedu.address.model.person.StudentId;","lastModifiedDate":"2024-02-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-12-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * A utility class to help with building EditPersonDescriptor objects.","lastModifiedDate":"2017-05-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorBuilder {","lastModifiedDate":"2017-05-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private EditPersonDescriptor descriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder() {","lastModifiedDate":"2017-05-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-05-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(EditPersonDescriptor descriptor) {","lastModifiedDate":"2017-05-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" this.descriptor \u003d new EditPersonDescriptor(descriptor);","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":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Returns an {@code EditPersonDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2017-06-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-06-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" descriptor.setName(person.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":37,"author":{"gitId":"J-wang-CSMA"},"content":" descriptor.setFirstParentPhone(person.getParentPhoneOne());","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"J-wang-CSMA"},"content":" descriptor.setSecondParentPhone(person.getParentPhoneTwo());","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" descriptor.setAddress(person.getAddress());","lastModifiedDate":"2017-06-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" descriptor.setStudentId(person.getStudentId());","lastModifiedDate":"2024-02-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" descriptor.setTags(person.getTags());","lastModifiedDate":"2017-06-21"},{"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":"-"},"content":" * Sets the {@code Phone} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":56,"author":{"gitId":"J-wang-CSMA"},"content":" public EditPersonDescriptorBuilder withPhone(String phone, String number) {","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"J-wang-CSMA"},"content":" descriptor.setPhone(new Phone(phone), number);","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-02-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-02-18"},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-18"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withStudentId(String studentId) {","lastModifiedDate":"2024-02-18"},{"lineNumber":65,"author":{"gitId":"-"},"content":" descriptor.setStudentId(new StudentId(studentId));","lastModifiedDate":"2024-02-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2024-02-18"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-18"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-18"},{"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":"-"},"content":" * Sets the {@code Address} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":81,"author":{"gitId":"-"},"content":" descriptor.setAddress(new Address(address));","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":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":86,"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":87,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2017-12-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2017-12-23"},{"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":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05"},{"lineNumber":96,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":98,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"-":94,"J-wang-CSMA":4}},{"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":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18"},{"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.person.StudentId;","lastModifiedDate":"2024-02-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":"J-wang-CSMA"},"content":" public static final String DEFAULT_FIRST_PARENT_PHONE \u003d \"85355255\";","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"J-wang-CSMA"},"content":" public static final String DEFAULT_SECOND_PARENT_PHONE \u003d \"91234544\";","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String DEFAULT_STUDENT_ID \u003d \"10001\";","lastModifiedDate":"2024-02-19"},{"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":"J-wang-CSMA"},"content":" private Phone firstParentPhone;","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"J-wang-CSMA"},"content":" private Phone secondParentPhone;","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private StudentId studentId;","lastModifiedDate":"2024-02-18"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"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":"J-wang-CSMA"},"content":" firstParentPhone \u003d new Phone(DEFAULT_FIRST_PARENT_PHONE);","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"J-wang-CSMA"},"content":" secondParentPhone \u003d new Phone(DEFAULT_SECOND_PARENT_PHONE);","lastModifiedDate":"2024-03-18"},{"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":" studentId \u003d new StudentId(DEFAULT_STUDENT_ID);","lastModifiedDate":"2024-02-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"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":"J-wang-CSMA"},"content":" firstParentPhone \u003d personToCopy.getParentPhoneOne();","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"J-wang-CSMA"},"content":" secondParentPhone \u003d personToCopy.getParentPhoneTwo();","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" studentId \u003d personToCopy.getStudentId();","lastModifiedDate":"2024-02-18"},{"lineNumber":58,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20"},{"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":"-"},"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":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String ... tags) {","lastModifiedDate":"2017-08-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2017-12-20"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":81,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":86,"author":{"gitId":"J-wang-CSMA"},"content":" * Sets the {@code First parent phone} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":88,"author":{"gitId":"J-wang-CSMA"},"content":" public PersonBuilder withFirstParentPhone(String firstParentPhone) {","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"J-wang-CSMA"},"content":" this.firstParentPhone \u003d new Phone(firstParentPhone);","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"J-wang-CSMA"},"content":" return this;","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"J-wang-CSMA"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"J-wang-CSMA"},"content":" * Sets the {@code Second parent phone} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"J-wang-CSMA"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"J-wang-CSMA"},"content":" public PersonBuilder withSecondParentPhone(String secondParentPhone) {","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"J-wang-CSMA"},"content":" this.secondParentPhone \u003d new Phone(secondParentPhone);","lastModifiedDate":"2024-03-18"},{"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":"2024-02-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Sets the {@code StudentId} of the {@code StudentId} that we are building.","lastModifiedDate":"2024-02-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-02-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public PersonBuilder withStudentId(String studentId) {","lastModifiedDate":"2024-02-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":" this.studentId \u003d new StudentId(studentId);","lastModifiedDate":"2024-02-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2024-02-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-18"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-18"},{"lineNumber":109,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":110,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":111,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":113,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20"},{"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":"J-wang-CSMA"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":118,"author":{"gitId":"J-wang-CSMA"},"content":" * Builds the person as designated by the PersonBuilder.","lastModifiedDate":"2024-03-18"},{"lineNumber":119,"author":{"gitId":"J-wang-CSMA"},"content":" * @returns A person based on the fields of the PersonBuilder.","lastModifiedDate":"2024-03-18"},{"lineNumber":120,"author":{"gitId":"J-wang-CSMA"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":121,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05"},{"lineNumber":122,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":123,"author":{"gitId":"J-wang-CSMA"},"content":" return new Person(name, firstParentPhone, secondParentPhone, email, address, studentId, tags);","lastModifiedDate":"2024-03-18"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":126,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03"}],"authorContributionMap":{"-":101,"J-wang-CSMA":25}},{"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":"J-wang-CSMA"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PARENT_PHONES;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_ID;","lastModifiedDate":"2024-02-19"},{"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":"J-wang-CSMA"},"content":" sb.append(PREFIX_PARENT_PHONES","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"J-wang-CSMA"},"content":" + person.getParentPhoneOne().value + \", \" + person.getParentPhoneTwo().value + \" \");","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":38,"author":{"gitId":"-"},"content":" sb.append(PREFIX_ADDRESS + person.getAddress().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" sb.append(PREFIX_STUDENT_ID + person.getStudentId().value + \" \");","lastModifiedDate":"2024-02-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" person.getTags().stream().forEach(","lastModifiedDate":"2017-05-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2017-05-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09"},{"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":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26"},{"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":"J-wang-CSMA"},"content":" if (descriptor.getFirstParentPhone().isPresent() || descriptor.getSecondParentPhone().isPresent()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"J-wang-CSMA"},"content":" if (descriptor.getFirstParentPhone().isPresent()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"J-wang-CSMA"},"content":" sb.append(PREFIX_PARENT_PHONES).append(descriptor.getFirstParentPhone().get().value).append(\", 1 \");","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"J-wang-CSMA"},"content":" } else if (descriptor.getSecondParentPhone().isPresent()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"J-wang-CSMA"},"content":" sb.append(PREFIX_PARENT_PHONES).append(descriptor.getSecondParentPhone().get().value).append(\", 2 \");","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"J-wang-CSMA"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"J-wang-CSMA"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" descriptor.getStudentId()","lastModifiedDate":"2024-02-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" .ifPresent(studentId -\u003e sb.append(PREFIX_STUDENT_ID).append(studentId.value).append(\" \"));","lastModifiedDate":"2024-02-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" sb.append(PREFIX_TAG);","lastModifiedDate":"2018-03-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":72,"author":{"gitId":"J-wang-CSMA"},"content":" //System.out.println(sb.toString());","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05"}],"authorContributionMap":{"-":63,"J-wang-CSMA":12}},{"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.model.Model;","lastModifiedDate":"2017-07-30"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":10,"author":{"gitId":"IamZhenHong"},"content":"import seedu.address.model.person.StudentId;","lastModifiedDate":"2024-03-20"},{"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 person in the {@code model}\u0027s person list at {@code index}.","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30"},{"lineNumber":38,"author":{"gitId":"IamZhenHong"},"content":" public static Person getPerson(Model model, StudentId studentId) {","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"IamZhenHong"},"content":" for (Person person : model.getFilteredPersonList()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"IamZhenHong"},"content":" if (person.getStudentId().equals(studentId)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"IamZhenHong"},"content":" return person;","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30"},{"lineNumber":44,"author":{"gitId":"IamZhenHong"},"content":" return null;","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30"},{"lineNumber":46,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"IamZhenHong":6,"-":40}},{"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":"J-wang-CSMA"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_ONE_AMY;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"J-wang-CSMA"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_ONE_BOB;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"J-wang-CSMA"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_TWO_AMY;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"J-wang-CSMA"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_TWO_BOB;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_STUDENT_ID_AMY;","lastModifiedDate":"2024-02-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_STUDENT_ID_BOB;","lastModifiedDate":"2024-02-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-08-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-08-22"},{"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":"-"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2017-04-05"},{"lineNumber":32,"author":{"gitId":"J-wang-CSMA"},"content":" .withFirstParentPhone(\"94351253\")","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"J-wang-CSMA"},"content":" .withSecondParentPhone(\"88312868\")","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":" .withStudentId(\"00001\")","lastModifiedDate":"2024-02-18"},{"lineNumber":35,"author":{"gitId":"J-wang-CSMA"},"content":" .withTags(\"Friends\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10"},{"lineNumber":37,"author":{"gitId":"-"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2017-09-21"},{"lineNumber":38,"author":{"gitId":"J-wang-CSMA"},"content":" .withEmail(\"johnd@example.com\")","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"J-wang-CSMA"},"content":" .withFirstParentPhone(\"98765432\")","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"J-wang-CSMA"},"content":" .withSecondParentPhone(\"83789072\")","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"J-wang-CSMA"},"content":" .withStudentId(\"00002\")","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"J-wang-CSMA"},"content":" .withTags(\"OwesMoney\", \"Friends\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"J-wang-CSMA"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\")","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"J-wang-CSMA"},"content":" .withFirstParentPhone(\"95352563\")","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"J-wang-CSMA"},"content":" .withSecondParentPhone(\"86070439\")","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"J-wang-CSMA"},"content":" .withEmail(\"heinz@example.com\")","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"J-wang-CSMA"},"content":" .withAddress(\"Wall Street\")","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"J-wang-CSMA"},"content":" .withStudentId(\"00003\").build();","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"J-wang-CSMA"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\")","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"J-wang-CSMA"},"content":" .withFirstParentPhone(\"87652533\")","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"J-wang-CSMA"},"content":" .withSecondParentPhone(\"93690682\")","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"J-wang-CSMA"},"content":" .withEmail(\"cornelia@example.com\")","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"J-wang-CSMA"},"content":" .withStudentId(\"00004\")","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"J-wang-CSMA"},"content":" .withAddress(\"10th street\")","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"J-wang-CSMA"},"content":" .withTags(\"Friends\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"J-wang-CSMA"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\")","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"J-wang-CSMA"},"content":" .withFirstParentPhone(\"94822224\")","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"J-wang-CSMA"},"content":" .withSecondParentPhone(\"93846702\")","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"J-wang-CSMA"},"content":" .withStudentId(\"00005\")","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"J-wang-CSMA"},"content":" .withEmail(\"werner@example.com\")","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"J-wang-CSMA"},"content":" .withAddress(\"Michegan Ave\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"J-wang-CSMA"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\")","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"J-wang-CSMA"},"content":" .withFirstParentPhone(\"94821427\")","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"J-wang-CSMA"},"content":" .withSecondParentPhone(\"85777773\")","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"J-wang-CSMA"},"content":" .withStudentId(\"00006\")","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"J-wang-CSMA"},"content":" .withEmail(\"lydia@example.com\")","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"J-wang-CSMA"},"content":" .withAddress(\"Little Tokyo\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"J-wang-CSMA"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\")","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"J-wang-CSMA"},"content":" .withFirstParentPhone(\"94822442\")","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"J-wang-CSMA"},"content":" .withSecondParentPhone(\"92136499\")","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"J-wang-CSMA"},"content":" .withStudentId(\"00007\")","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"J-wang-CSMA"},"content":" .withEmail(\"anna@example.com\")","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"J-wang-CSMA"},"content":" .withAddress(\"4th Street\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":76,"author":{"gitId":"J-wang-CSMA"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\")","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"J-wang-CSMA"},"content":" .withFirstParentPhone(\"84842424\")","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"J-wang-CSMA"},"content":" .withSecondParentPhone(\"89058882\")","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"J-wang-CSMA"},"content":" .withStudentId(\"00008\")","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"J-wang-CSMA"},"content":" .withEmail(\"stefan@example.com\")","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"J-wang-CSMA"},"content":" .withAddress(\"Little India\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"J-wang-CSMA"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\")","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"J-wang-CSMA"},"content":" .withFirstParentPhone(\"84821531\")","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"J-wang-CSMA"},"content":" .withSecondParentPhone(\"90434552\")","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"J-wang-CSMA"},"content":" .withStudentId(\"00009\")","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"J-wang-CSMA"},"content":" .withEmail(\"hans@example.com\")","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"J-wang-CSMA"},"content":" .withAddress(\"Chicago Ave\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":89,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22"},{"lineNumber":90,"author":{"gitId":"J-wang-CSMA"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"J-wang-CSMA"},"content":" .withFirstParentPhone(VALID_PHONE_ONE_AMY)","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"J-wang-CSMA"},"content":" .withSecondParentPhone(VALID_PHONE_TWO_AMY)","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"J-wang-CSMA"},"content":" .withStudentId(VALID_STUDENT_ID_AMY)","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"J-wang-CSMA"},"content":" .withEmail(VALID_EMAIL_AMY)","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"J-wang-CSMA"},"content":" .withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-02-18"},{"lineNumber":97,"author":{"gitId":"J-wang-CSMA"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"J-wang-CSMA"},"content":" .withFirstParentPhone(VALID_PHONE_ONE_BOB)","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"J-wang-CSMA"},"content":" .withSecondParentPhone(VALID_PHONE_TWO_BOB)","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" .withStudentId(VALID_STUDENT_ID_BOB)","lastModifiedDate":"2024-02-18"},{"lineNumber":101,"author":{"gitId":"J-wang-CSMA"},"content":" .withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2024-03-18"},{"lineNumber":102,"author":{"gitId":"J-wang-CSMA"},"content":" .withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-03-18"},{"lineNumber":103,"author":{"gitId":"J-wang-CSMA"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":110,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":111,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05"},{"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":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10"},{"lineNumber":116,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05"},{"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":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10"},{"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":{"-":57,"J-wang-CSMA":67}},{"path":"src/test/java/seedu/address/testutil/TypicalStudentIds.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ongzhili"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"ongzhili"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"ongzhili"},"content":"import seedu.address.model.person.StudentId;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"ongzhili"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"ongzhili"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"ongzhili"},"content":" * A utility class containing a list of {@code Index} objects to be used in tests.","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"ongzhili"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"ongzhili"},"content":"public class TypicalStudentIds {","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"ongzhili"},"content":" public static final StudentId ID_FIRST_PERSON \u003d new StudentId(\"00001\");","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"ongzhili"},"content":" public static final StudentId ID_SECOND_PERSON \u003d new StudentId(\"00002\");","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"ongzhili"},"content":" public static final StudentId ID_THIRD_PERSON \u003d new StudentId(\"00003\");","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"ongzhili"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"ongzhili":12}}] diff --git a/AY2324S2-CS2103T-W10-3_tp_master/commits.json b/AY2324S2-CS2103T-W10-3_tp_master/commits.json index b539785a..79e8d6e3 100644 --- a/AY2324S2-CS2103T-W10-3_tp_master/commits.json +++ b/AY2324S2-CS2103T-W10-3_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"IamZhenHong":[{"date":"2024-03-07","commitResults":[{"hash":"6c03658084af0e8f0dd45447382129947931c609","isMergeCommit":false,"messageTitle":"Update AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":0}}},{"hash":"70153128a94d6a73ea4d0694401041b2ff0bd2b1","isMergeCommit":false,"messageTitle":"Update NFRs and GLossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":1}}},{"hash":"92f4e27d22a1d3538509fa7c939f7fdc34498503","isMergeCommit":true,"messageTitle":"Merge pull request #26 from IamZhenHong/Update-ZhenHong_AboutUs","messageBody":"Update AboutUs","fileTypesAndContributionMap":{}}]},{"date":"2024-03-13","commitResults":[{"hash":"1d02128c4663f84f4e4780990d53fce4d653d859","isMergeCommit":true,"messageTitle":"Merge pull request #42 from wallacexuhanxiao/Search-By-Tag","messageBody":"Add find by tag function","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"f09b47d9ae002dcb8bff427dd7483692ffc26c49","isMergeCommit":false,"messageTitle":"Replace edit-by-index with edit-by-studentID functionality","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":88,"deletions":20}}},{"hash":"797c8b5cc573452201a128db27f48fe77df4a753","isMergeCommit":false,"messageTitle":"Replace index-based tests with studentId-based tests.","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":217,"deletions":134}}},{"hash":"8182e43fe65f3c90add149a339dd2522e50e1798","isMergeCommit":false,"messageTitle":"Fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":8,"deletions":8}}},{"hash":"222841973f279d956874806710cdbfccf1c06f83","isMergeCommit":false,"messageTitle":"Fix more checkstyles","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":8},"test-code":{"insertions":4,"deletions":9}}},{"hash":"17a7d31ab7568b5259eeaedf1c07dc5f94eab99e","isMergeCommit":false,"messageTitle":"Remove unnecessary classes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":124}}},{"hash":"0601d13cd5585b60389b47cc35a43061d7f0922d","isMergeCommit":false,"messageTitle":"Fix delete functionalities that uses index","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":29},"test-code":{"insertions":8,"deletions":118}}},{"hash":"f7e623a65b3ca11b3bade471788cea213a90d3aa","isMergeCommit":false,"messageTitle":"Add tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":9,"deletions":1}}},{"hash":"6b0959168f2c1f69abd2d9c2129d6785eba8f045","isMergeCommit":false,"messageTitle":"Add more tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":13,"deletions":0}}}]},{"date":"2024-03-21","commitResults":[{"hash":"8c6efa87b36f3d53f743d52efaf5cef605c7b7ad","isMergeCommit":true,"messageTitle":"Merge pull request #59 from IamZhenHong/Update-Info-By-StudentID","messageBody":"Update info by student","fileTypesAndContributionMap":{}}]}],"ongzhili":[{"date":"2024-02-28","commitResults":[{"hash":"9385799409105c26b28c56cef388d382521797e8","isMergeCommit":false,"messageTitle":"Update AboutUs and add portfolio document","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":25,"deletions":14}}},{"hash":"0d4d8dde6bc98ef5b9f7aa17b474ce30744715d5","isMergeCommit":true,"messageTitle":"Merge branch \u0027ongzhili-aboutus\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"1cdca2a8236930177923a58a23db170bcbc34658","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-W10-3/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b92aa4cf1a7fa10d192874fa2ac256960bd5de86","isMergeCommit":true,"messageTitle":"Merge pull request #12 from ongzhili/master","messageBody":"Update Zhi Li\u0027s information and add porfolio document","fileTypesAndContributionMap":{}}]},{"date":"2024-03-04","commitResults":[{"hash":"02d00ce9d38c44b1adc0de95ab432b7302f15c4c","isMergeCommit":false,"messageTitle":"Update Readme and Ui mockup","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":33,"deletions":11}}},{"hash":"7dba2bd9811194cec98ef1fd9ce0833fad676a8a","isMergeCommit":true,"messageTitle":"Merge branch \u0027ongzhili-readme\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-06","commitResults":[{"hash":"303c97cc2458edc8079556dc5cc01c9dd4395790","isMergeCommit":true,"messageTitle":"Merge pull request #18 from wallacexuhanxiao/tutorial-adding-command","messageBody":"Trival commit to fullfil the task","fileTypesAndContributionMap":{}}]},{"date":"2024-03-07","commitResults":[{"hash":"256a9a93e5475c7d2cbb7909d48b4c99addb2aa5","isMergeCommit":false,"messageTitle":"Update ongzhili.PNG filename and corresponding references","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-12","commitResults":[{"hash":"ad39fa72d9b98ea4f91bc1dda3e6b959abee6b35","isMergeCommit":true,"messageTitle":"Merge pull request #37 from wallacexuhanxiao/Update-Search-Id","messageBody":"Update search with id","fileTypesAndContributionMap":{}}]},{"date":"2024-03-17","commitResults":[{"hash":"38608766a5d168301e13d9d9ddefa4d5d8886c86","isMergeCommit":false,"messageTitle":"Update delete function to be ID based instead of index based","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":25,"deletions":10},"test-code":{"insertions":40,"deletions":28}}},{"hash":"ff86f0af3aa82fdc0a5565147ef30822faf95ff8","isMergeCommit":true,"messageTitle":"Merge pull request #44 from ongzhili/ongzhili-update-delete-command","messageBody":"Update delete function to be ID based instead of index based","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"c104533a3ac6fc316a4480aed8c9c4f1e7754dbb","isMergeCommit":false,"messageTitle":"Update delete uml diagram to match id deletion instead of index","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}}]},{"date":"2024-03-21","commitResults":[{"hash":"dcb91b939e7c1e61ece8f0c5800de81a6caca1b7","isMergeCommit":true,"messageTitle":"Merge pull request #63 from J-wang-CSMA/branch-2-word-tags","messageBody":"Add support for 2 word tags","tags":["v1.2"],"fileTypesAndContributionMap":{}}]}],"wallacexuhanxiao":[{"date":"2024-02-24","commitResults":[{"hash":"c9f7c4d577bee6bc5230f9e5123d6cf4a1c9ba1c","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":0}}}]},{"date":"2024-02-28","commitResults":[{"hash":"919ecb18046289168a7eaf90c02cc309261b679e","isMergeCommit":false,"messageTitle":"Update about us for Hanxiao","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":4}}},{"hash":"4e09887f7596159395ec7d397e1df70dd84dc7ab","isMergeCommit":false,"messageTitle":"Fix minor bug","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"14a7036a7cfd60bd09d7909e394ceeb83a4715f6","isMergeCommit":true,"messageTitle":"Merge branch \u0027Update-Hanxiao_AboutUs\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b4a351ff43dd7d1c15719dbd263a1dff03179eae","isMergeCommit":true,"messageTitle":"Merge pull request #10 from wallacexuhanxiao/Update-Hanxiao_AboutUs","messageBody":"Update about us for Hanxiao","fileTypesAndContributionMap":{}},{"hash":"7296ae707a6d00ea992fc5fb17bb707e4fa7cfcd","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W10-3:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ed843ebaa8031e8fddb0f5b79e4dedd96ddb905c","isMergeCommit":false,"messageTitle":"Update developer guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":25,"deletions":10}}},{"hash":"a62de54094445ca0bb6fd6bbb1ab57878a3c8e6f","isMergeCommit":false,"messageTitle":"Update use cases","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":97,"deletions":9}}}]},{"date":"2024-03-04","commitResults":[{"hash":"26e9cbe6fde203eb0cadfa7e2c9bc010d337a048","isMergeCommit":false,"messageTitle":"Add extension on one of use case","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":1}}},{"hash":"210877125a8899c968f0feefa46e45ec780c1034","isMergeCommit":true,"messageTitle":"Merge pull request","messageBody":"Update user story and use case","fileTypesAndContributionMap":{}}]},{"date":"2024-03-05","commitResults":[{"hash":"d5d40cb05359c517c61ba677e2a7cbf6bfa6db0f","isMergeCommit":false,"messageTitle":"Trival commit to fullfil the task","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-06","commitResults":[{"hash":"a87b8b983aacee0240f60c9d434f0c849e3d38fe","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"cbfde2c3e413724d73c55a6c2a5a0d4f3e933392","isMergeCommit":true,"messageTitle":"Merge pull request #16 from ongzhili/master","messageBody":"Update README.md and Ui.png","fileTypesAndContributionMap":{}}]},{"date":"2024-03-07","commitResults":[{"hash":"f957dced0a7cb777b2322bcfadb664f8a055f0ed","isMergeCommit":false,"messageTitle":"Some minor update on about us","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"93ba48f6c63def592ca8bc686c7d0b435b43c726","isMergeCommit":true,"messageTitle":"Merge pull request #21 from wallacexuhanxiao/Clear-AB3","messageBody":"Clear AB3 on the website","fileTypesAndContributionMap":{}},{"hash":"33b24443ad46b16ef14f70d2e21108e2d16458e6","isMergeCommit":true,"messageTitle":"Merge pull request #27 from ongzhili/ongzhili-image-renaming","messageBody":"Update ongzhili.PNG filename and corresponding references","fileTypesAndContributionMap":{}},{"hash":"f12928f714cd072675cf8838fbf3057933c25128","isMergeCommit":false,"messageTitle":"Delete john doe from about us","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":9}}}]},{"date":"2024-03-08","commitResults":[{"hash":"c45b029d4c092923e7dfd07b006dde9b7b229460","isMergeCommit":true,"messageTitle":"Merge pull request #31 from wallacexuhanxiao/Clear-Placeholder-Text","messageBody":"Clear placeholder text in about us","fileTypesAndContributionMap":{}},{"hash":"dce400cf4062c5b882131e8ed84b759fb74a1d80","isMergeCommit":false,"messageTitle":"Fix minor bug in aboutus","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":3}}},{"hash":"948814cba2d02fcc3ab661541d80b68d7338b347","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"Add new line at EOF","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":1}}},{"hash":"d03a78a672d1b7005f259831dfad016037a94bc3","isMergeCommit":true,"messageTitle":"Merge pull request #33 from wallacexuhanxiao/Change-Aboutus","messageBody":"Fix minor bug in aboutus","fileTypesAndContributionMap":{}}]},{"date":"2024-03-10","commitResults":[{"hash":"57d5fcaff80e8d6cec8b0272df01ea7a86acaea6","isMergeCommit":true,"messageTitle":"Merge pull request #29 from IamZhenHong/Update-DG-NFRs_Glossary","messageBody":"Update NFRs and GLossary","fileTypesAndContributionMap":{}},{"hash":"8025e507935a29ee6744edd67245b393bf65680b","isMergeCommit":false,"messageTitle":"Updates two NFRs on developer guides","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":0}}},{"hash":"d348f3b0a227bcbbea19973d698af9dad7fe7901","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":1}}},{"hash":"5fdeafb475941db13a28569fb46f65b7317c4b56","isMergeCommit":true,"messageTitle":"Merge pull request #35 from wallacexuhanxiao/Update-NFRs","messageBody":"Update NFRs for developer guide","fileTypesAndContributionMap":{}},{"hash":"ec81ea7c60a0643cab06b7e2a5f01942739eac18","isMergeCommit":false,"messageTitle":"Add search by Id funtion","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":65,"deletions":5}}},{"hash":"18a9190211ee05fdb388be7672a86e9204a7c756","isMergeCommit":false,"messageTitle":"Clear the failed tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":3}}},{"hash":"223d27033c222690bc4100b27beb4ab32ebc672e","isMergeCommit":false,"messageTitle":"Remove unused import and add Javadoc","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":3}}}]},{"date":"2024-03-12","commitResults":[{"hash":"38f0dc50bf4ab9a344b015fa91b3cf4fbae3a9c8","isMergeCommit":false,"messageTitle":"Add test to IdMatchesPredicate class","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":44,"deletions":0}}},{"hash":"5ec3ef28305abe1dd913ecb7c5f4a55881d65b5b","isMergeCommit":false,"messageTitle":"Add new line to EOF","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":1}}},{"hash":"9ff168c91574edd24da889236f7198c8de02c721","isMergeCommit":false,"messageTitle":"Fix check style issue","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":2}}},{"hash":"e602bdfd5a54e537a00c58f3d8e6b3c7b7035ad9","isMergeCommit":false,"messageTitle":"Add test cases for student id","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":73,"deletions":3}}},{"hash":"14ace534b8e292538a62d558b0593026f7116988","isMergeCommit":false,"messageTitle":"Add basic functions","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":47,"deletions":0}}},{"hash":"8b15b637afb2b1c30624e49b9cd95eb02c4fe969","isMergeCommit":false,"messageTitle":"Add test case for search by tag","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1},"test-code":{"insertions":53,"deletions":1}}},{"hash":"841ea1d57086aedd90c4f974ed1a081f9311ef14","isMergeCommit":false,"messageTitle":"Add new lines in EOF","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":1}}},{"hash":"cb88f780a982c91b43398c2d806835eb6807df42","isMergeCommit":false,"messageTitle":"Delete some extra part in FindCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":9}}}]},{"date":"2024-03-19","commitResults":[{"hash":"296c0cefe9eca62ec2d0500b56f9b8fecba8b23b","isMergeCommit":false,"messageTitle":"Add support for students with only 1 parent contact number","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":8}}},{"hash":"a8d5c0e05960c0827d0cd44be2284f5f16ad63b2","isMergeCommit":false,"messageTitle":"Update an test case to cover the new function","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":0}}},{"hash":"d5cc2ca81ab27b1549be5531bbcd7764a02a632a","isMergeCommit":false,"messageTitle":"Fix checkstyle error","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":1}}}]},{"date":"2024-03-20","commitResults":[{"hash":"53fb4004b6486cee2d8c8094b36ccfca80e4ceed","isMergeCommit":false,"messageTitle":"Update an sequence uml on find function","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":72,"deletions":0}}},{"hash":"f12d323856d373b458951281e45138954040513a","isMergeCommit":true,"messageTitle":"Merge pull request #51 from wallacexuhanxiao/Update-UML-Search_Function","messageBody":"Update an sequence uml on find function","fileTypesAndContributionMap":{}},{"hash":"c15407878b5441b95b8190a01a8fb894087981bf","isMergeCommit":true,"messageTitle":"Merge pull request #49 from wallacexuhanxiao/Student-With-One-Parent","messageBody":"Add support for students with only 1 parent contact number","fileTypesAndContributionMap":{}}]}],"J-wang-CSMA":[{"date":"2024-02-28","commitResults":[{"hash":"6904df26d33ff50f462fe6761cea38f33bced0ee","isMergeCommit":false,"messageTitle":"Edit AboutUs page and add relevant documents","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":49,"deletions":6}}},{"hash":"23c5fc971ff7b838b6ec07055f5931ea1b285465","isMergeCommit":false,"messageTitle":"Update project portfolio page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":10}}},{"hash":"e045d19f119c818d5d636c633b1d4e17b1ea998e","isMergeCommit":true,"messageTitle":"Merge pull request #8 from J-wang-CSMA/branch-AboutUsJeremy","messageBody":"Edit AboutUs page and add relevant documents for J-Wang-CSMA","fileTypesAndContributionMap":{}}]},{"date":"2024-03-18","commitResults":[{"hash":"5e1e9bc65d44e6ea61f0a96b053793429d25a134","isMergeCommit":false,"messageTitle":"Change phone number requirements","messageBody":"Change phone number requirements to match those in feature\nspecification.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":3},"test-code":{"insertions":4,"deletions":3}}},{"hash":"1f1c1dd086a798943ffa87668da6d5bfe7ccd2ba","isMergeCommit":false,"messageTitle":"Fix style to pass check","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2}}},{"hash":"f02fb3e487a445c045c1a8533e647660a6ca05f8","isMergeCommit":false,"messageTitle":"Add parent phone number functionality","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":193,"deletions":74},"test-code":{"insertions":271,"deletions":136}}},{"hash":"86f8ddade28554e91d065659b9686f8b1af88143","isMergeCommit":false,"messageTitle":"Fix coding style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":10}}},{"hash":"0109d3599164e8ca8ca8d7a2f544cf8e8bf03040","isMergeCommit":false,"messageTitle":"Fix more style","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":7}}},{"hash":"175fe3407fa87695127ce96e117b7e50255e5f4c","isMergeCommit":false,"messageTitle":"Fix more style","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":0}}},{"hash":"b9ed9a0fbe20b6289f3e41d09a2725798149a3dc","isMergeCommit":false,"messageTitle":"Fix more style","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}},{"hash":"283caeaba51f80b58e3d35a8bf8f5e39f15b866f","isMergeCommit":false,"messageTitle":"Add more test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0},"test-code":{"insertions":110,"deletions":5}}},{"hash":"f862dc7b5038f02f827a8751714b688cf15e93e0","isMergeCommit":false,"messageTitle":"Fix style","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-19","commitResults":[{"hash":"94a58f47026f1a02cab2e00e649f3f11bdabad48","isMergeCommit":true,"messageTitle":"Merge pull request #45 from J-wang-CSMA/branch-parent-phone-number","messageBody":"Add parent phone number functionality","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"fd7a098d08d6e71ac9c3793193d103dbe7a8532e","isMergeCommit":false,"messageTitle":"Add UML diagram for add command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":84,"deletions":4}}},{"hash":"ccbb6deef8619fbbada948fb11d7a1f0c046e277","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W10-3:master\u0027 into branch-UML","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e9c0507479f99c60f3857eb9a89293377c9acbda","isMergeCommit":true,"messageTitle":"Merge pull request #53 from J-wang-CSMA/branch-UML","messageBody":"Create sequence diagram for add command","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"f0c99e45fd9db9117c5b6652b66d86c192dd3443","isMergeCommit":true,"messageTitle":"Merge pull request #54 from ongzhili/ongzhili-update-deleteuml","messageBody":"Update delete uml diagram to match id deletion instead of index","fileTypesAndContributionMap":{}},{"hash":"344037d0d6304ae03ad3a98f32f460b48d705b4b","isMergeCommit":false,"messageTitle":"Add autocapitalization feature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":54,"deletions":15},"test-code":{"insertions":105,"deletions":14}}},{"hash":"e8b4466fbbc829dbb9409f760087b0108244d91e","isMergeCommit":false,"messageTitle":"Fix style","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"91a5d0ed0dffc0405d8855eb92670e8bce7e7501","isMergeCommit":false,"messageTitle":"Fix style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":1}}},{"hash":"67343ce14e272dad1bd37ee46a1ff93abdebd1ab","isMergeCommit":true,"messageTitle":"Merge pull request #62 from J-wang-CSMA/branch-auto-capitalisation","messageBody":"Add autocapitalization feature","fileTypesAndContributionMap":{}},{"hash":"0de5503e5fe6db7fcf20ce3c8ecd9e9a1dbcd60d","isMergeCommit":false,"messageTitle":"Add support for 2 word tags","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":6,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"IamZhenHong":{"docs":7,"functional-code":47,"test-code":220},"ongzhili":{"docs":58,"functional-code":17,"test-code":40},"wallacexuhanxiao":{"docs":196,"functional-code":119,"test-code":181},"J-wang-CSMA":{"docs":127,"functional-code":234,"test-code":463}},"authorContributionVariance":{"IamZhenHong":23250.83,"ongzhili":455.7857,"wallacexuhanxiao":3005.9587,"J-wang-CSMA":25532.924},"authorDisplayNameMap":{"IamZhenHong":"CS2103T-W10-3 SENG..HONG","ongzhili":"CS2103T-W10-3 ONG ..I LI","wallacexuhanxiao":"CS2103T-W10-3 XU H..XIAO","J-wang-CSMA":"CS2103T-W10-3 WANG..REMY"}} +{"authorDailyContributionsMap":{"IamZhenHong":[{"date":"2024-03-07","commitResults":[{"hash":"6c03658084af0e8f0dd45447382129947931c609","isMergeCommit":false,"messageTitle":"Update AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":0}}},{"hash":"70153128a94d6a73ea4d0694401041b2ff0bd2b1","isMergeCommit":false,"messageTitle":"Update NFRs and GLossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":1}}},{"hash":"92f4e27d22a1d3538509fa7c939f7fdc34498503","isMergeCommit":true,"messageTitle":"Merge pull request #26 from IamZhenHong/Update-ZhenHong_AboutUs","messageBody":"Update AboutUs","fileTypesAndContributionMap":{}}]},{"date":"2024-03-13","commitResults":[{"hash":"1d02128c4663f84f4e4780990d53fce4d653d859","isMergeCommit":true,"messageTitle":"Merge pull request #42 from wallacexuhanxiao/Search-By-Tag","messageBody":"Add find by tag function","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"f09b47d9ae002dcb8bff427dd7483692ffc26c49","isMergeCommit":false,"messageTitle":"Replace edit-by-index with edit-by-studentID functionality","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":88,"deletions":20}}},{"hash":"797c8b5cc573452201a128db27f48fe77df4a753","isMergeCommit":false,"messageTitle":"Replace index-based tests with studentId-based tests.","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":217,"deletions":134}}},{"hash":"8182e43fe65f3c90add149a339dd2522e50e1798","isMergeCommit":false,"messageTitle":"Fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":8,"deletions":8}}},{"hash":"222841973f279d956874806710cdbfccf1c06f83","isMergeCommit":false,"messageTitle":"Fix more checkstyles","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":8},"test-code":{"insertions":4,"deletions":9}}},{"hash":"17a7d31ab7568b5259eeaedf1c07dc5f94eab99e","isMergeCommit":false,"messageTitle":"Remove unnecessary classes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":124}}},{"hash":"0601d13cd5585b60389b47cc35a43061d7f0922d","isMergeCommit":false,"messageTitle":"Fix delete functionalities that uses index","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":29},"test-code":{"insertions":8,"deletions":118}}},{"hash":"f7e623a65b3ca11b3bade471788cea213a90d3aa","isMergeCommit":false,"messageTitle":"Add tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":9,"deletions":1}}},{"hash":"6b0959168f2c1f69abd2d9c2129d6785eba8f045","isMergeCommit":false,"messageTitle":"Add more tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":13,"deletions":0}}}]},{"date":"2024-03-21","commitResults":[{"hash":"8c6efa87b36f3d53f743d52efaf5cef605c7b7ad","isMergeCommit":true,"messageTitle":"Merge pull request #59 from IamZhenHong/Update-Info-By-StudentID","messageBody":"Update info by student","fileTypesAndContributionMap":{}}]}],"ongzhili":[{"date":"2024-02-28","commitResults":[{"hash":"9385799409105c26b28c56cef388d382521797e8","isMergeCommit":false,"messageTitle":"Update AboutUs and add portfolio document","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":25,"deletions":14}}},{"hash":"0d4d8dde6bc98ef5b9f7aa17b474ce30744715d5","isMergeCommit":true,"messageTitle":"Merge branch \u0027ongzhili-aboutus\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"1cdca2a8236930177923a58a23db170bcbc34658","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-W10-3/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b92aa4cf1a7fa10d192874fa2ac256960bd5de86","isMergeCommit":true,"messageTitle":"Merge pull request #12 from ongzhili/master","messageBody":"Update Zhi Li\u0027s information and add porfolio document","fileTypesAndContributionMap":{}}]},{"date":"2024-03-04","commitResults":[{"hash":"02d00ce9d38c44b1adc0de95ab432b7302f15c4c","isMergeCommit":false,"messageTitle":"Update Readme and Ui mockup","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":33,"deletions":11}}},{"hash":"7dba2bd9811194cec98ef1fd9ce0833fad676a8a","isMergeCommit":true,"messageTitle":"Merge branch \u0027ongzhili-readme\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-06","commitResults":[{"hash":"303c97cc2458edc8079556dc5cc01c9dd4395790","isMergeCommit":true,"messageTitle":"Merge pull request #18 from wallacexuhanxiao/tutorial-adding-command","messageBody":"Trival commit to fullfil the task","fileTypesAndContributionMap":{}}]},{"date":"2024-03-07","commitResults":[{"hash":"256a9a93e5475c7d2cbb7909d48b4c99addb2aa5","isMergeCommit":false,"messageTitle":"Update ongzhili.PNG filename and corresponding references","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-12","commitResults":[{"hash":"ad39fa72d9b98ea4f91bc1dda3e6b959abee6b35","isMergeCommit":true,"messageTitle":"Merge pull request #37 from wallacexuhanxiao/Update-Search-Id","messageBody":"Update search with id","fileTypesAndContributionMap":{}}]},{"date":"2024-03-17","commitResults":[{"hash":"38608766a5d168301e13d9d9ddefa4d5d8886c86","isMergeCommit":false,"messageTitle":"Update delete function to be ID based instead of index based","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":25,"deletions":10},"test-code":{"insertions":40,"deletions":28}}},{"hash":"ff86f0af3aa82fdc0a5565147ef30822faf95ff8","isMergeCommit":true,"messageTitle":"Merge pull request #44 from ongzhili/ongzhili-update-delete-command","messageBody":"Update delete function to be ID based instead of index based","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"c104533a3ac6fc316a4480aed8c9c4f1e7754dbb","isMergeCommit":false,"messageTitle":"Update delete uml diagram to match id deletion instead of index","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}}]},{"date":"2024-03-21","commitResults":[{"hash":"dcb91b939e7c1e61ece8f0c5800de81a6caca1b7","isMergeCommit":true,"messageTitle":"Merge pull request #63 from J-wang-CSMA/branch-2-word-tags","messageBody":"Add support for 2 word tags","tags":["v1.2"],"fileTypesAndContributionMap":{}}]}],"wallacexuhanxiao":[{"date":"2024-02-24","commitResults":[{"hash":"c9f7c4d577bee6bc5230f9e5123d6cf4a1c9ba1c","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":0}}}]},{"date":"2024-02-28","commitResults":[{"hash":"919ecb18046289168a7eaf90c02cc309261b679e","isMergeCommit":false,"messageTitle":"Update about us for Hanxiao","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":4}}},{"hash":"4e09887f7596159395ec7d397e1df70dd84dc7ab","isMergeCommit":false,"messageTitle":"Fix minor bug","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"14a7036a7cfd60bd09d7909e394ceeb83a4715f6","isMergeCommit":true,"messageTitle":"Merge branch \u0027Update-Hanxiao_AboutUs\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b4a351ff43dd7d1c15719dbd263a1dff03179eae","isMergeCommit":true,"messageTitle":"Merge pull request #10 from wallacexuhanxiao/Update-Hanxiao_AboutUs","messageBody":"Update about us for Hanxiao","fileTypesAndContributionMap":{}},{"hash":"7296ae707a6d00ea992fc5fb17bb707e4fa7cfcd","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W10-3:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ed843ebaa8031e8fddb0f5b79e4dedd96ddb905c","isMergeCommit":false,"messageTitle":"Update developer guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":25,"deletions":10}}},{"hash":"a62de54094445ca0bb6fd6bbb1ab57878a3c8e6f","isMergeCommit":false,"messageTitle":"Update use cases","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":97,"deletions":9}}}]},{"date":"2024-03-04","commitResults":[{"hash":"26e9cbe6fde203eb0cadfa7e2c9bc010d337a048","isMergeCommit":false,"messageTitle":"Add extension on one of use case","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":1}}},{"hash":"210877125a8899c968f0feefa46e45ec780c1034","isMergeCommit":true,"messageTitle":"Merge pull request","messageBody":"Update user story and use case","fileTypesAndContributionMap":{}}]},{"date":"2024-03-05","commitResults":[{"hash":"d5d40cb05359c517c61ba677e2a7cbf6bfa6db0f","isMergeCommit":false,"messageTitle":"Trival commit to fullfil the task","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-06","commitResults":[{"hash":"a87b8b983aacee0240f60c9d434f0c849e3d38fe","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"cbfde2c3e413724d73c55a6c2a5a0d4f3e933392","isMergeCommit":true,"messageTitle":"Merge pull request #16 from ongzhili/master","messageBody":"Update README.md and Ui.png","fileTypesAndContributionMap":{}}]},{"date":"2024-03-07","commitResults":[{"hash":"f957dced0a7cb777b2322bcfadb664f8a055f0ed","isMergeCommit":false,"messageTitle":"Some minor update on about us","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"93ba48f6c63def592ca8bc686c7d0b435b43c726","isMergeCommit":true,"messageTitle":"Merge pull request #21 from wallacexuhanxiao/Clear-AB3","messageBody":"Clear AB3 on the website","fileTypesAndContributionMap":{}},{"hash":"33b24443ad46b16ef14f70d2e21108e2d16458e6","isMergeCommit":true,"messageTitle":"Merge pull request #27 from ongzhili/ongzhili-image-renaming","messageBody":"Update ongzhili.PNG filename and corresponding references","fileTypesAndContributionMap":{}},{"hash":"f12928f714cd072675cf8838fbf3057933c25128","isMergeCommit":false,"messageTitle":"Delete john doe from about us","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":9}}}]},{"date":"2024-03-08","commitResults":[{"hash":"c45b029d4c092923e7dfd07b006dde9b7b229460","isMergeCommit":true,"messageTitle":"Merge pull request #31 from wallacexuhanxiao/Clear-Placeholder-Text","messageBody":"Clear placeholder text in about us","fileTypesAndContributionMap":{}},{"hash":"dce400cf4062c5b882131e8ed84b759fb74a1d80","isMergeCommit":false,"messageTitle":"Fix minor bug in aboutus","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":3}}},{"hash":"948814cba2d02fcc3ab661541d80b68d7338b347","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"Add new line at EOF","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":1}}},{"hash":"d03a78a672d1b7005f259831dfad016037a94bc3","isMergeCommit":true,"messageTitle":"Merge pull request #33 from wallacexuhanxiao/Change-Aboutus","messageBody":"Fix minor bug in aboutus","fileTypesAndContributionMap":{}}]},{"date":"2024-03-10","commitResults":[{"hash":"57d5fcaff80e8d6cec8b0272df01ea7a86acaea6","isMergeCommit":true,"messageTitle":"Merge pull request #29 from IamZhenHong/Update-DG-NFRs_Glossary","messageBody":"Update NFRs and GLossary","fileTypesAndContributionMap":{}},{"hash":"8025e507935a29ee6744edd67245b393bf65680b","isMergeCommit":false,"messageTitle":"Updates two NFRs on developer guides","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":0}}},{"hash":"d348f3b0a227bcbbea19973d698af9dad7fe7901","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":1}}},{"hash":"5fdeafb475941db13a28569fb46f65b7317c4b56","isMergeCommit":true,"messageTitle":"Merge pull request #35 from wallacexuhanxiao/Update-NFRs","messageBody":"Update NFRs for developer guide","fileTypesAndContributionMap":{}},{"hash":"ec81ea7c60a0643cab06b7e2a5f01942739eac18","isMergeCommit":false,"messageTitle":"Add search by Id funtion","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":65,"deletions":5}}},{"hash":"18a9190211ee05fdb388be7672a86e9204a7c756","isMergeCommit":false,"messageTitle":"Clear the failed tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":3}}},{"hash":"223d27033c222690bc4100b27beb4ab32ebc672e","isMergeCommit":false,"messageTitle":"Remove unused import and add Javadoc","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":3}}}]},{"date":"2024-03-12","commitResults":[{"hash":"38f0dc50bf4ab9a344b015fa91b3cf4fbae3a9c8","isMergeCommit":false,"messageTitle":"Add test to IdMatchesPredicate class","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":44,"deletions":0}}},{"hash":"5ec3ef28305abe1dd913ecb7c5f4a55881d65b5b","isMergeCommit":false,"messageTitle":"Add new line to EOF","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":1}}},{"hash":"9ff168c91574edd24da889236f7198c8de02c721","isMergeCommit":false,"messageTitle":"Fix check style issue","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":2}}},{"hash":"e602bdfd5a54e537a00c58f3d8e6b3c7b7035ad9","isMergeCommit":false,"messageTitle":"Add test cases for student id","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":73,"deletions":3}}},{"hash":"14ace534b8e292538a62d558b0593026f7116988","isMergeCommit":false,"messageTitle":"Add basic functions","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":47,"deletions":0}}},{"hash":"8b15b637afb2b1c30624e49b9cd95eb02c4fe969","isMergeCommit":false,"messageTitle":"Add test case for search by tag","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1},"test-code":{"insertions":53,"deletions":1}}},{"hash":"841ea1d57086aedd90c4f974ed1a081f9311ef14","isMergeCommit":false,"messageTitle":"Add new lines in EOF","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":1}}},{"hash":"cb88f780a982c91b43398c2d806835eb6807df42","isMergeCommit":false,"messageTitle":"Delete some extra part in FindCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":9}}}]},{"date":"2024-03-19","commitResults":[{"hash":"296c0cefe9eca62ec2d0500b56f9b8fecba8b23b","isMergeCommit":false,"messageTitle":"Add support for students with only 1 parent contact number","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":8}}},{"hash":"a8d5c0e05960c0827d0cd44be2284f5f16ad63b2","isMergeCommit":false,"messageTitle":"Update an test case to cover the new function","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":0}}},{"hash":"d5cc2ca81ab27b1549be5531bbcd7764a02a632a","isMergeCommit":false,"messageTitle":"Fix checkstyle error","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":1}}}]},{"date":"2024-03-20","commitResults":[{"hash":"53fb4004b6486cee2d8c8094b36ccfca80e4ceed","isMergeCommit":false,"messageTitle":"Update an sequence uml on find function","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":72,"deletions":0}}},{"hash":"f12d323856d373b458951281e45138954040513a","isMergeCommit":true,"messageTitle":"Merge pull request #51 from wallacexuhanxiao/Update-UML-Search_Function","messageBody":"Update an sequence uml on find function","fileTypesAndContributionMap":{}},{"hash":"c15407878b5441b95b8190a01a8fb894087981bf","isMergeCommit":true,"messageTitle":"Merge pull request #49 from wallacexuhanxiao/Student-With-One-Parent","messageBody":"Add support for students with only 1 parent contact number","fileTypesAndContributionMap":{}}]}],"J-wang-CSMA":[{"date":"2024-02-28","commitResults":[{"hash":"6904df26d33ff50f462fe6761cea38f33bced0ee","isMergeCommit":false,"messageTitle":"Edit AboutUs page and add relevant documents","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":49,"deletions":6}}},{"hash":"23c5fc971ff7b838b6ec07055f5931ea1b285465","isMergeCommit":false,"messageTitle":"Update project portfolio page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":10}}},{"hash":"e045d19f119c818d5d636c633b1d4e17b1ea998e","isMergeCommit":true,"messageTitle":"Merge pull request #8 from J-wang-CSMA/branch-AboutUsJeremy","messageBody":"Edit AboutUs page and add relevant documents for J-Wang-CSMA","fileTypesAndContributionMap":{}}]},{"date":"2024-03-18","commitResults":[{"hash":"5e1e9bc65d44e6ea61f0a96b053793429d25a134","isMergeCommit":false,"messageTitle":"Change phone number requirements","messageBody":"Change phone number requirements to match those in feature\nspecification.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":3},"test-code":{"insertions":4,"deletions":3}}},{"hash":"1f1c1dd086a798943ffa87668da6d5bfe7ccd2ba","isMergeCommit":false,"messageTitle":"Fix style to pass check","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2}}},{"hash":"f02fb3e487a445c045c1a8533e647660a6ca05f8","isMergeCommit":false,"messageTitle":"Add parent phone number functionality","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":193,"deletions":74},"test-code":{"insertions":271,"deletions":136}}},{"hash":"86f8ddade28554e91d065659b9686f8b1af88143","isMergeCommit":false,"messageTitle":"Fix coding style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":10}}},{"hash":"0109d3599164e8ca8ca8d7a2f544cf8e8bf03040","isMergeCommit":false,"messageTitle":"Fix more style","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":7}}},{"hash":"175fe3407fa87695127ce96e117b7e50255e5f4c","isMergeCommit":false,"messageTitle":"Fix more style","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":0}}},{"hash":"b9ed9a0fbe20b6289f3e41d09a2725798149a3dc","isMergeCommit":false,"messageTitle":"Fix more style","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}},{"hash":"283caeaba51f80b58e3d35a8bf8f5e39f15b866f","isMergeCommit":false,"messageTitle":"Add more test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0},"test-code":{"insertions":110,"deletions":5}}},{"hash":"f862dc7b5038f02f827a8751714b688cf15e93e0","isMergeCommit":false,"messageTitle":"Fix style","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-19","commitResults":[{"hash":"94a58f47026f1a02cab2e00e649f3f11bdabad48","isMergeCommit":true,"messageTitle":"Merge pull request #45 from J-wang-CSMA/branch-parent-phone-number","messageBody":"Add parent phone number functionality","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"fd7a098d08d6e71ac9c3793193d103dbe7a8532e","isMergeCommit":false,"messageTitle":"Add UML diagram for add command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":84,"deletions":4}}},{"hash":"ccbb6deef8619fbbada948fb11d7a1f0c046e277","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W10-3:master\u0027 into branch-UML","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e9c0507479f99c60f3857eb9a89293377c9acbda","isMergeCommit":true,"messageTitle":"Merge pull request #53 from J-wang-CSMA/branch-UML","messageBody":"Create sequence diagram for add command","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"f0c99e45fd9db9117c5b6652b66d86c192dd3443","isMergeCommit":true,"messageTitle":"Merge pull request #54 from ongzhili/ongzhili-update-deleteuml","messageBody":"Update delete uml diagram to match id deletion instead of index","fileTypesAndContributionMap":{}},{"hash":"344037d0d6304ae03ad3a98f32f460b48d705b4b","isMergeCommit":false,"messageTitle":"Add autocapitalization feature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":54,"deletions":15},"test-code":{"insertions":105,"deletions":14}}},{"hash":"e8b4466fbbc829dbb9409f760087b0108244d91e","isMergeCommit":false,"messageTitle":"Fix style","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"91a5d0ed0dffc0405d8855eb92670e8bce7e7501","isMergeCommit":false,"messageTitle":"Fix style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":1}}},{"hash":"67343ce14e272dad1bd37ee46a1ff93abdebd1ab","isMergeCommit":true,"messageTitle":"Merge pull request #62 from J-wang-CSMA/branch-auto-capitalisation","messageBody":"Add autocapitalization feature","fileTypesAndContributionMap":{}},{"hash":"0de5503e5fe6db7fcf20ce3c8ecd9e9a1dbcd60d","isMergeCommit":false,"messageTitle":"Add support for 2 word tags","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":6,"deletions":0}}}]},{"date":"2024-03-24","commitResults":[{"hash":"4ffd4392f763cf3bb1199c2f79adbb923f380981","isMergeCommit":false,"messageTitle":"Update user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":70,"deletions":54}}},{"hash":"261d686f3d9e369594316a746492c554566723e3","isMergeCommit":false,"messageTitle":"Edit user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":4}}},{"hash":"2da91f97d67bd9e77f67dcecb4015ad8d163ae47","isMergeCommit":true,"messageTitle":"Merge pull request #65 from J-wang-CSMA/branch-UserGuide","messageBody":"Update user guide for v1.2","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"IamZhenHong":{"docs":7,"functional-code":47,"test-code":220},"ongzhili":{"docs":58,"functional-code":17,"test-code":40},"wallacexuhanxiao":{"docs":196,"functional-code":119,"test-code":181},"J-wang-CSMA":{"docs":192,"functional-code":234,"test-code":463}},"authorContributionVariance":{"IamZhenHong":21078.113,"ongzhili":415.9604,"wallacexuhanxiao":2759.0308,"J-wang-CSMA":23419.87},"authorDisplayNameMap":{"IamZhenHong":"CS2103T-W10-3 SENG..HONG","ongzhili":"CS2103T-W10-3 ONG ..I LI","wallacexuhanxiao":"CS2103T-W10-3 XU H..XIAO","J-wang-CSMA":"CS2103T-W10-3 WANG..REMY"}} diff --git a/AY2324S2-CS2103T-W10-4_tp_master/authorship.json b/AY2324S2-CS2103T-W10-4_tp_master/authorship.json index 14449859..13e1c177 100644 --- a/AY2324S2-CS2103T-W10-4_tp_master/authorship.json +++ b/AY2324S2-CS2103T-W10-4_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"doyelee0313"},"content":"[![CI Status](https://github.com/se-edu/addressbook-level3/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S2-CS2103T-W10-4/tp/actions)","lastModifiedDate":"2024-03-06"},{"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":"doyelee0313"},"content":"# TutorsContactsPro","lastModifiedDate":"2024-03-06"},{"lineNumber":6,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":7,"author":{"gitId":"doyelee0313"},"content":"* TutorsContactsPro is a app for computer science tutor managing students for tutorials (all cs course or type of teaching)","lastModifiedDate":"2024-03-06"},{"lineNumber":8,"author":{"gitId":"doyelee0313"},"content":"* TutorsContactsPro allows tutors to have faster and more convenient access to their list of students (from different classes), optimized for those who prefer a clean UI with the use of CLI.","lastModifiedDate":"2024-03-06"},{"lineNumber":9,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":"* The project simulates an ongoing software project for a desktop application (called _AddressBook_) used for managing contact details.","lastModifiedDate":"2020-05-23"},{"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":"doyelee0313"},"content":"* It is named `TutorsContactsPro` (`TCP` for short) which means it is a pro-version app for tutors to manage their students","lastModifiedDate":"2024-03-06"},{"lineNumber":14,"author":{"gitId":"doyelee0313"},"content":"* For the detailed documentation of this project, see the **[Address Book Product Website](https://ay2324s2-cs2103t-w10-4.github.io/tp/index.html)**.","lastModifiedDate":"2024-03-06"},{"lineNumber":15,"author":{"gitId":"-"},"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":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"doyelee0313"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"doyelee0313":9,"-":7}},{"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":"doyelee0313"},"content":"### Doye Lee","lastModifiedDate":"2024-03-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"doyelee0313"},"content":"\u003cimg src\u003d\"images/doyelee0313.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"doyelee0313"},"content":"[[github](https://github.com/doyelee0313)]","lastModifiedDate":"2024-03-05"},{"lineNumber":19,"author":{"gitId":"doyelee0313"},"content":"[[portfolio](team/doyelee0313.md)]","lastModifiedDate":"2024-03-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"doyelee0313"},"content":"* Role: Developer","lastModifiedDate":"2024-03-06"},{"lineNumber":22,"author":{"gitId":"doyelee0313"},"content":"* Responsibilities: Development + UI + Documentation","lastModifiedDate":"2024-03-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"jocelyn-soh"},"content":"### Soh Kia Hwee Jocelyn","lastModifiedDate":"2024-03-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"jocelyn-soh"},"content":"\u003cimg src\u003d\"images/jocelyn-soh.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"jocelyn-soh"},"content":"[[github](https://github.com/jocelyn-soh)]","lastModifiedDate":"2024-03-06"},{"lineNumber":29,"author":{"gitId":"jocelyn-soh"},"content":"[[portfolio](team/jocelyn-soh.md)]","lastModifiedDate":"2024-03-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2024-03-06"},{"lineNumber":32,"author":{"gitId":"jocelyn-soh"},"content":"* Responsibilities: Dev Ops + Development + Code Quality","lastModifiedDate":"2024-03-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"STELLA-LYE"},"content":"### Stella Lye Si Yu","lastModifiedDate":"2024-03-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"STELLA-LYE"},"content":"\u003cimg src\u003d\"images/stella-lye.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"STELLA-LYE"},"content":"[[homepage](http://STELLA-LYE.github.io)]","lastModifiedDate":"2024-03-04"},{"lineNumber":39,"author":{"gitId":"STELLA-LYE"},"content":"[[github](https://github.com/STELLA-LYE)]","lastModifiedDate":"2024-03-04"},{"lineNumber":40,"author":{"gitId":"STELLA-LYE"},"content":"[[portfolio](team/stella-lye.md)]","lastModifiedDate":"2024-03-07"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"STELLA-LYE"},"content":"* Responsibilities: Dev Ops + Development + UI","lastModifiedDate":"2024-03-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"tohlh"},"content":"### Toh Li Heng","lastModifiedDate":"2024-03-04"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"tohlh"},"content":"\u003cimg src\u003d\"images/tohlh.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"tohlh"},"content":"[[homepage](http://tohlh.github.io)]","lastModifiedDate":"2024-03-04"},{"lineNumber":50,"author":{"gitId":"tohlh"},"content":"[[github](http://github.com/tohlh)]","lastModifiedDate":"2024-03-04"},{"lineNumber":51,"author":{"gitId":"tohlh"},"content":"[[portfolio](team/tohlh.md)]","lastModifiedDate":"2024-03-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"tohlh"},"content":"* Responsibilities: Dev Ops + Development","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"doyelee0313":6,"STELLA-LYE":6,"-":31,"jocelyn-soh":5,"tohlh":6}},{"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":"STELLA-LYE"},"content":"1. Update the version number in [`MainApp.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/major/MainApp.java).","lastModifiedDate":"2024-03-17"},{"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":{"STELLA-LYE":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":"jocelyn-soh"},"content":"# TutorsContactsPro Developer Guide","lastModifiedDate":"2024-03-06"},{"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":"STELLA-LYE"},"content":"**`Main`** (consisting of classes [`Main`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/major/Main.java) and [`MainApp`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/major/MainApp.java)) is in charge of the app launch and shut down.","lastModifiedDate":"2024-03-17"},{"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":"STELLA-LYE"},"content":"The **API** of this component is specified in [`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/major/ui/Ui.java)","lastModifiedDate":"2024-03-17"},{"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":"STELLA-LYE"},"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/major/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2024-03-17"},{"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":"STELLA-LYE"},"content":"**API** : [`Logic.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/major/logic/Logic.java)","lastModifiedDate":"2024-03-17"},{"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 continues till 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).\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-02-09"},{"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":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12"},{"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":"STELLA-LYE"},"content":"**API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/major/model/Model.java)","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"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":"STELLA-LYE"},"content":"* stores the major book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2024-03-17"},{"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":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":133,"author":{"gitId":"doyelee0313"},"content":"**Note:** An alternative (arguably, a more OOP) model is given below. It has a `Group` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Group` object per unique group, instead of each `Person` needing their own `Group` objects.\u003cbr\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":135,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"STELLA-LYE"},"content":"**API** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/major/storage/Storage.java)","lastModifiedDate":"2024-03-17"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"STELLA-LYE"},"content":"* can save both major book data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2024-03-17"},{"lineNumber":148,"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":149,"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":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","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":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"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":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"STELLA-LYE"},"content":"* `VersionedAddressBook#commit()` — Saves the current major book state in its history.","lastModifiedDate":"2024-03-17"},{"lineNumber":168,"author":{"gitId":"STELLA-LYE"},"content":"* `VersionedAddressBook#undo()` — Restores the previous major book state from its history.","lastModifiedDate":"2024-03-17"},{"lineNumber":169,"author":{"gitId":"STELLA-LYE"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone major book state from its history.","lastModifiedDate":"2024-03-17"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"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":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"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":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"STELLA-LYE"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial major book state, and the `currentStatePointer` pointing to that single major book state.","lastModifiedDate":"2024-03-17"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"STELLA-LYE"},"content":"Step 2. The user executes `delete 5` command to delete the 5th person in the major book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the major book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted major book state.","lastModifiedDate":"2024-03-17"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"STELLA-LYE"},"content":"Step 3. The user executes `add n/David …​` to add a new person. The `add` command also calls `Model#commitAddressBook()`, causing another modified major book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2024-03-17"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"STELLA-LYE"},"content":"**Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the major book state will not be saved into the `addressBookStateList`.","lastModifiedDate":"2024-03-17"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":191,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"STELLA-LYE"},"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 major book state, and restores the major book to that state.","lastModifiedDate":"2024-03-17"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":198,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"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":201,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"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":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":213,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":217,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":219,"author":{"gitId":"STELLA-LYE"},"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 major book to that state.","lastModifiedDate":"2024-03-17"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":223,"author":{"gitId":"STELLA-LYE"},"content":"**Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest major 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":"2024-03-17"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"STELLA-LYE"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the major book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2024-03-17"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"STELLA-LYE"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all major 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":"2024-03-17"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"STELLA-LYE"},"content":"* **Alternative 1 (current choice):** Saves the entire major book.","lastModifiedDate":"2024-03-17"},{"lineNumber":244,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","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":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":264,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":265,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":266,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":267,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"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":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":277,"author":{"gitId":"STELLA-LYE"},"content":"* A computer science tutor managing students for tutorials","lastModifiedDate":"2024-03-06"},{"lineNumber":278,"author":{"gitId":"STELLA-LYE"},"content":"* has numerous of students to manage in a tutorial slot","lastModifiedDate":"2024-03-06"},{"lineNumber":279,"author":{"gitId":"STELLA-LYE"},"content":"* has to add, list, delete, sort, search students in the app","lastModifiedDate":"2024-03-06"},{"lineNumber":280,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23"},{"lineNumber":281,"author":{"gitId":"STELLA-LYE"},"content":"* can type fast","lastModifiedDate":"2024-03-06"},{"lineNumber":282,"author":{"gitId":"STELLA-LYE"},"content":"* can switch between different tutorial classes","lastModifiedDate":"2024-03-06"},{"lineNumber":283,"author":{"gitId":"STELLA-LYE"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2024-03-06"},{"lineNumber":284,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":286,"author":{"gitId":"STELLA-LYE"},"content":"**Value proposition**: manage students faster than a typical GUI driven app","lastModifiedDate":"2024-03-06"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":288,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":289,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":291,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":293,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":294,"author":{"gitId":"STELLA-LYE"},"content":"|----------|----------------|---------------------------------------------|------------------------------------------------------------------|","lastModifiedDate":"2024-03-06"},{"lineNumber":295,"author":{"gitId":"STELLA-LYE"},"content":"| `* * *` | Tutor | add new students to the app | keep track of their information |","lastModifiedDate":"2024-03-06"},{"lineNumber":296,"author":{"gitId":"STELLA-LYE"},"content":"| `* * *` | Tutor | edit student profiles | keep their information up to date. |","lastModifiedDate":"2024-03-06"},{"lineNumber":297,"author":{"gitId":"STELLA-LYE"},"content":"| `* * *` | Tutor | delete students from my class | track the existing number of students in my tutorial class |","lastModifiedDate":"2024-03-06"},{"lineNumber":298,"author":{"gitId":"STELLA-LYE"},"content":"| `* * *` | Tutor | list all students in my class(es) | view all of my students’ details at one glance |","lastModifiedDate":"2024-03-06"},{"lineNumber":299,"author":{"gitId":"STELLA-LYE"},"content":"| `* * *` | Tutor | search for specific students using keywords | quickly find relevant information |","lastModifiedDate":"2024-03-06"},{"lineNumber":300,"author":{"gitId":"STELLA-LYE"},"content":"| `* *` | new tutor user | be able to access a help window | easily seek help for the errors encountered |","lastModifiedDate":"2024-03-06"},{"lineNumber":301,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":302,"author":{"gitId":"-"},"content":"","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":"STELLA-LYE"},"content":"(For all use cases below, the **System** is the `TutorsContactsPro` and the **Actor** is the `Tutor`, unless specified otherwise)","lastModifiedDate":"2024-03-06"},{"lineNumber":307,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":308,"author":{"gitId":"STELLA-LYE"},"content":"**Use case: UC01 - Add a student**","lastModifiedDate":"2024-03-06"},{"lineNumber":309,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":310,"author":{"gitId":"STELLA-LYE"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":311,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":312,"author":{"gitId":"STELLA-LYE"},"content":"1. Tutor requests to list students","lastModifiedDate":"2024-03-06"},{"lineNumber":313,"author":{"gitId":"STELLA-LYE"},"content":"2. System shows a list of students","lastModifiedDate":"2024-03-06"},{"lineNumber":314,"author":{"gitId":"STELLA-LYE"},"content":"3. Tutor requests to add a specific student to the list","lastModifiedDate":"2024-03-06"},{"lineNumber":315,"author":{"gitId":"STELLA-LYE"},"content":"4. System adds the student","lastModifiedDate":"2024-03-06"},{"lineNumber":316,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":317,"author":{"gitId":"STELLA-LYE"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":318,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":319,"author":{"gitId":"STELLA-LYE"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":320,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":321,"author":{"gitId":"STELLA-LYE"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-03-06"},{"lineNumber":322,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":323,"author":{"gitId":"STELLA-LYE"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":324,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":325,"author":{"gitId":"STELLA-LYE"},"content":"* 3a. The add command parameters are invalid or incomplete.","lastModifiedDate":"2024-03-06"},{"lineNumber":326,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":327,"author":{"gitId":"STELLA-LYE"},"content":" * 3a1. TutorsContactsPro shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":328,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":329,"author":{"gitId":"STELLA-LYE"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-06"},{"lineNumber":330,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":331,"author":{"gitId":"STELLA-LYE"},"content":"* 3b. TutorsContactsPro detects that the student already exists on the list.","lastModifiedDate":"2024-03-06"},{"lineNumber":332,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":333,"author":{"gitId":"STELLA-LYE"},"content":" * 3b1. TutorsContactsPro informs the tutor that the student already exists on the list.","lastModifiedDate":"2024-03-06"},{"lineNumber":334,"author":{"gitId":"STELLA-LYE"},"content":" * 3b2. Tutor confirms cancellation of adding the student.","lastModifiedDate":"2024-03-06"},{"lineNumber":335,"author":{"gitId":"STELLA-LYE"},"content":" ","lastModifiedDate":"2024-03-06"},{"lineNumber":336,"author":{"gitId":"STELLA-LYE"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":337,"author":{"gitId":"STELLA-LYE"},"content":" ","lastModifiedDate":"2024-03-06"},{"lineNumber":338,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":339,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":340,"author":{"gitId":"STELLA-LYE"},"content":"**Use case: UC02 - Edit a student**","lastModifiedDate":"2024-03-06"},{"lineNumber":341,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":342,"author":{"gitId":"STELLA-LYE"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":343,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":344,"author":{"gitId":"STELLA-LYE"},"content":"1. Tutor requests to list students","lastModifiedDate":"2024-03-06"},{"lineNumber":345,"author":{"gitId":"STELLA-LYE"},"content":"2. System shows a list of students","lastModifiedDate":"2024-03-06"},{"lineNumber":346,"author":{"gitId":"STELLA-LYE"},"content":"3. Tutor requests to edits the particulars of the student","lastModifiedDate":"2024-03-06"},{"lineNumber":347,"author":{"gitId":"STELLA-LYE"},"content":"4. System records the changes","lastModifiedDate":"2024-03-06"},{"lineNumber":348,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":349,"author":{"gitId":"STELLA-LYE"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":350,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":351,"author":{"gitId":"STELLA-LYE"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":352,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":353,"author":{"gitId":"STELLA-LYE"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-03-06"},{"lineNumber":354,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":355,"author":{"gitId":"STELLA-LYE"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":356,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":357,"author":{"gitId":"STELLA-LYE"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2024-03-06"},{"lineNumber":358,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":359,"author":{"gitId":"STELLA-LYE"},"content":" * 3a1. TutorsContactsPro shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":360,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":361,"author":{"gitId":"STELLA-LYE"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-06"},{"lineNumber":362,"author":{"gitId":"STELLA-LYE"},"content":" ","lastModifiedDate":"2024-03-06"},{"lineNumber":363,"author":{"gitId":"STELLA-LYE"},"content":"* 3b. The edit command parameters are invalid or incomplete.","lastModifiedDate":"2024-03-06"},{"lineNumber":364,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":365,"author":{"gitId":"STELLA-LYE"},"content":" * 3b1. TutorsContactsPro shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":366,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":367,"author":{"gitId":"STELLA-LYE"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-06"},{"lineNumber":368,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":369,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":370,"author":{"gitId":"STELLA-LYE"},"content":"**Use case: UC03 - Delete a student**","lastModifiedDate":"2024-03-06"},{"lineNumber":371,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":372,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":373,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":374,"author":{"gitId":"STELLA-LYE"},"content":"1. Tutor requests to list students","lastModifiedDate":"2024-03-06"},{"lineNumber":375,"author":{"gitId":"STELLA-LYE"},"content":"2. System shows a list of students","lastModifiedDate":"2024-03-06"},{"lineNumber":376,"author":{"gitId":"STELLA-LYE"},"content":"3. Tutor requests to delete a student","lastModifiedDate":"2024-03-06"},{"lineNumber":377,"author":{"gitId":"STELLA-LYE"},"content":"4. System records the changes","lastModifiedDate":"2024-03-06"},{"lineNumber":378,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":379,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":380,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":381,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":382,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":383,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2020-05-23"},{"lineNumber":384,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":385,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":386,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":387,"author":{"gitId":"-"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2020-05-23"},{"lineNumber":388,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":389,"author":{"gitId":"STELLA-LYE"},"content":" * 3a1. TutorsContactsPro shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":390,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":391,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-06"},{"lineNumber":392,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":393,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":394,"author":{"gitId":"STELLA-LYE"},"content":"**Use case: UC04 - List all students**","lastModifiedDate":"2024-03-06"},{"lineNumber":395,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":396,"author":{"gitId":"STELLA-LYE"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":397,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":398,"author":{"gitId":"STELLA-LYE"},"content":"1. Tutor requests to list students","lastModifiedDate":"2024-03-06"},{"lineNumber":399,"author":{"gitId":"STELLA-LYE"},"content":"2. System shows a list of students","lastModifiedDate":"2024-03-06"},{"lineNumber":400,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":401,"author":{"gitId":"STELLA-LYE"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":402,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":403,"author":{"gitId":"STELLA-LYE"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":404,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":405,"author":{"gitId":"STELLA-LYE"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-03-06"},{"lineNumber":406,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":407,"author":{"gitId":"STELLA-LYE"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":408,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":409,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":410,"author":{"gitId":"STELLA-LYE"},"content":"**Use case: UC05 - Find a student**","lastModifiedDate":"2024-03-06"},{"lineNumber":411,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":412,"author":{"gitId":"STELLA-LYE"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":413,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":414,"author":{"gitId":"STELLA-LYE"},"content":"1. Tutor requests to list students","lastModifiedDate":"2024-03-06"},{"lineNumber":415,"author":{"gitId":"STELLA-LYE"},"content":"2. System shows a list of students","lastModifiedDate":"2024-03-06"},{"lineNumber":416,"author":{"gitId":"STELLA-LYE"},"content":"3. Tutor finds student(s) by keyword","lastModifiedDate":"2024-03-06"},{"lineNumber":417,"author":{"gitId":"STELLA-LYE"},"content":"4. System shows a list of students matching the keyword","lastModifiedDate":"2024-03-06"},{"lineNumber":418,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":419,"author":{"gitId":"STELLA-LYE"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":420,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":421,"author":{"gitId":"STELLA-LYE"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":422,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":423,"author":{"gitId":"STELLA-LYE"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-03-06"},{"lineNumber":424,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":425,"author":{"gitId":"STELLA-LYE"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":426,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":427,"author":{"gitId":"STELLA-LYE"},"content":"* 3a. The given keyword is in an incorrect format (e.g., contains special characters not allowed, exceeds maximum length).","lastModifiedDate":"2024-03-06"},{"lineNumber":428,"author":{"gitId":"STELLA-LYE"},"content":" ","lastModifiedDate":"2024-03-06"},{"lineNumber":429,"author":{"gitId":"STELLA-LYE"},"content":" * 3a1. TutorsContactsPro shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":430,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23"},{"lineNumber":431,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":432,"author":{"gitId":"STELLA-LYE"},"content":"* 4a. The list of search results is empty.","lastModifiedDate":"2024-03-06"},{"lineNumber":433,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":434,"author":{"gitId":"STELLA-LYE"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":435,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":436,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":437,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":438,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":439,"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":440,"author":{"gitId":"STELLA-LYE"},"content":"2. 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":"2024-03-06"},{"lineNumber":441,"author":{"gitId":"STELLA-LYE"},"content":"3. Should be able to list a maximum of 50 students within a single tutorial slot.","lastModifiedDate":"2024-03-06"},{"lineNumber":442,"author":{"gitId":"STELLA-LYE"},"content":"4. Should be able to hold a maximum of 300 students in total without any significant decrease in performance.","lastModifiedDate":"2024-03-06"},{"lineNumber":443,"author":{"gitId":"STELLA-LYE"},"content":"5. Any command should be visible within 3 seconds, ensuring a smooth and efficient user experience.","lastModifiedDate":"2024-03-06"},{"lineNumber":444,"author":{"gitId":"STELLA-LYE"},"content":"6. The system should have an uptime of at least 99%, allowing tutors to access student information reliably at any time.","lastModifiedDate":"2024-03-06"},{"lineNumber":445,"author":{"gitId":"STELLA-LYE"},"content":"7. Student important information (i.e name, email, telegram handle, contact number) should be encrypted both in transit and at rest to prevent unauthorized access.","lastModifiedDate":"2024-03-06"},{"lineNumber":446,"author":{"gitId":"STELLA-LYE"},"content":"8. The system should implement secure authentication mechanisms, such as multi-factor authentication, to verify the identity of users.","lastModifiedDate":"2024-03-06"},{"lineNumber":447,"author":{"gitId":"STELLA-LYE"},"content":"9. Tutors should only have access to student information for classes they are assigned to, ensuring data privacy.","lastModifiedDate":"2024-03-06"},{"lineNumber":448,"author":{"gitId":"STELLA-LYE"},"content":"10. The system should be able to scale horizontally to accommodate an increase in the number of users and classes without compromising performance.","lastModifiedDate":"2024-03-06"},{"lineNumber":449,"author":{"gitId":"STELLA-LYE"},"content":"11. Regular backups of the system database should be performed, with a robust disaster recovery plan in place to restore data in case of any unexpected failures or outages.","lastModifiedDate":"2024-03-06"},{"lineNumber":450,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":451,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":452,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":453,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":454,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09"},{"lineNumber":455,"author":{"gitId":"STELLA-LYE"},"content":"* **Tutor**: Tutor refers to the person who teaches in a single tutorial group. ","lastModifiedDate":"2024-03-06"},{"lineNumber":456,"author":{"gitId":"STELLA-LYE"},"content":"* **Student**: Student refers to an individual who attends a tutorial class taught by the tutor.","lastModifiedDate":"2024-03-06"},{"lineNumber":457,"author":{"gitId":"STELLA-LYE"},"content":"* **Tutorial**: Smaller classes in university which allow discussion of lecture content and assignment.","lastModifiedDate":"2024-03-06"},{"lineNumber":458,"author":{"gitId":"STELLA-LYE"},"content":"* **CLI (Command-Line Interface)**: A text-based interface used to interact with the software by entering commands into a terminal or console window, typically preferred by users who prefer efficiency and automation.","lastModifiedDate":"2024-03-06"},{"lineNumber":459,"author":{"gitId":"STELLA-LYE"},"content":"* **GUI (Graphical User Interface)**: A GUI is a user interface that employs graphical elements such as icons, buttons, and menus for user interaction, providing an intuitive and visually appealing way to navigate and use software.","lastModifiedDate":"2024-03-06"},{"lineNumber":460,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":461,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":462,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":463,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":464,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":465,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":466,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":467,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":468,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":469,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":470,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":471,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12"},{"lineNumber":472,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":473,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":474,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":475,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":476,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":477,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":478,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":479,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":480,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":481,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":482,"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":483,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":484,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":485,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":486,"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":487,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":488,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":489,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","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"},{"lineNumber":492,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":493,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":494,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":495,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":496,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":497,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":498,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":499,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":500,"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":501,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":502,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":503,"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":504,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":505,"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":506,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":507,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":508,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":509,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":510,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":511,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":512,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":513,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":514,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":515,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":516,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"doyelee0313":1,"STELLA-LYE":162,"-":352,"jocelyn-soh":1}},{"path":"docs/SettingUp.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: \"Setting up and getting started\"","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":"# Setting up and getting started","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":"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":"## Setting up the project in your computer","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"**Caution:**","lastModifiedDate":"2023-09-12"},{"lineNumber":19,"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":20,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"First, **fork** this repo, and **clone** the fork into your computer.","lastModifiedDate":"2020-06-07"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-07"},{"lineNumber":24,"author":{"gitId":"-"},"content":"If you plan to use Intellij IDEA (highly recommended):","lastModifiedDate":"2020-06-07"},{"lineNumber":25,"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":26,"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.","lastModifiedDate":"2023-09-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" Note: Importing a Gradle project is slightly different from importing a normal Java project.","lastModifiedDate":"2023-09-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"1. **Verify the setup**:","lastModifiedDate":"2020-06-07"},{"lineNumber":31,"author":{"gitId":"STELLA-LYE"},"content":" 1. Run the `seedu.major.Main` and try a few commands.","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"-"},"content":" 1. [Run the tests](Testing.md) to ensure they all pass.","lastModifiedDate":"2020-06-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"## Before writing code","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"1. **Configure the coding style**","lastModifiedDate":"2020-06-07"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"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":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" **Tip:**","lastModifiedDate":"2023-09-12"},{"lineNumber":45,"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":46,"author":{"gitId":"-"},"content":" \u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"1. **Set up CI**","lastModifiedDate":"2020-06-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"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":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"1. **Learn the design**","lastModifiedDate":"2020-06-07"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"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":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"1. **Do the tutorials**","lastModifiedDate":"2020-06-07"},{"lineNumber":57,"author":{"gitId":"-"},"content":" These tutorials will help you get acquainted with the codebase.","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * [Tracing code](tutorials/TracingCode.md)","lastModifiedDate":"2020-07-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * [Adding a new command](tutorials/AddRemark.md)","lastModifiedDate":"2020-07-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * [Removing fields](tutorials/RemovingFields.md)","lastModifiedDate":"2021-08-01"}],"authorContributionMap":{"STELLA-LYE":1,"-":60}},{"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":"STELLA-LYE"},"content":" e.g. `seedu.major.commons.StringUtilTest`","lastModifiedDate":"2024-03-17"},{"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":"STELLA-LYE"},"content":" e.g. `seedu.major.storage.StorageManagerTest`","lastModifiedDate":"2024-03-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":"STELLA-LYE"},"content":" e.g. `seedu.major.logic.LogicManagerTest`","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"STELLA-LYE":3,"-":38}},{"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":"jocelyn-soh"},"content":"# TutorsContactsPro User Guide","lastModifiedDate":"2024-03-06"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"jocelyn-soh"},"content":"TutorsContactsPro is a **desktop app for tutors teaching Computer Science courses to manage their students, optimized for use via a Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, TutorsContactsPro can help you to gain faster and more convenient access to your list of students, even if they are from different classes.","lastModifiedDate":"2024-03-06"},{"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":"STELLA-LYE"},"content":"## Quick Overview","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"STELLA-LYE"},"content":"* [Quick start ](#feature-start)","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"STELLA-LYE"},"content":"* [Features ](#feature-features)","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"STELLA-LYE"},"content":" * [Viewing help: `help` ](#feature-help)","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"STELLA-LYE"},"content":" * [Listing all students: `list` ](#feature-list)","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"STELLA-LYE"},"content":" * [Adding a student: `add`](#feature-add)","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"STELLA-LYE"},"content":" * [Editing a student: `edit`](#feature-edit)","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"STELLA-LYE"},"content":" * [Locating students using keyword: `find`](#feature-find)","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"STELLA-LYE"},"content":" * [Filtering students using group: `filter`](#feature-filter)","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"STELLA-LYE"},"content":" * [Deleting a student: `delete`](#feature-delete)","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"STELLA-LYE"},"content":" * [Clearing all entries: `clear`](#feature-clear)","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"STELLA-LYE"},"content":" * [Exiting the program: `exit` ](#feature-exit)","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"STELLA-LYE"},"content":"* [FAQ](#feature-faq)","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"STELLA-LYE"},"content":"* [Known issues](#feature-issues)","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"STELLA-LYE"},"content":"* [Command Summary](#feature-summary)","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"STELLA-LYE"},"content":"## \u003cspan id\u003d\u0027feature-start\u0027\u003e Quick start \u003cspan\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"STELLA-LYE"},"content":"\u003e [!important]","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"STELLA-LYE"},"content":"\u003e 1. Ensure you have Java `11` or above installed in your Computer.","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"STELLA-LYE"},"content":"[//]: # (\u003cbox type\u003d\"info\" seamless\u003e)","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"STELLA-LYE"},"content":"2. Download the latest `addressbook.jar` from [here](https://github.com/se-edu/addressbook-level3/releases).","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"STELLA-LYE"},"content":"3. Copy the file to the folder you want to use as the _home folder_ for your AddressBook.","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"STELLA-LYE"},"content":"4. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar addressbook.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"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":59,"author":{"gitId":"STELLA-LYE"},"content":" ![Ui](images/UpdatedUi.png)","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"STELLA-LYE"},"content":"4. 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":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"STELLA-LYE"},"content":" * `list` : Lists all students.","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"doyelee0313"},"content":" * `add n/John Doe p/98765432 e/johnd@example.com y/2 m/Computer Science tg/johndoe r/Very quiet student g/TUT04 g/LAB10 ` : Adds a student named `John Doe` to the list.","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"doyelee0313"},"content":" * `edit 1 p/93840823 y/3 tg/jiejfh203` : Edits the first student on the current list. ","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"jocelyn-soh"},"content":" * `find John Tan` : Lists all the students with names that matches \u0027John\u0027 or \u0027Tan\u0027.","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"jocelyn-soh"},"content":" * `filter TUT10` : Lists all the students in group \u0027TUT10\u0027","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"STELLA-LYE"},"content":" * `delete 3` : Deletes the 3rd student shown in the current list.","lastModifiedDate":"2024-03-11"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":76,"author":{"gitId":"STELLA-LYE"},"content":" * `clear` : Deletes all students on the list.","lastModifiedDate":"2024-03-11"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":81,"author":{"gitId":"STELLA-LYE"},"content":"5. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2024-03-11"},{"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":"STELLA-LYE"},"content":"## \u003cspan id\u003d\u0027feature-features\u0027\u003e Features \u003cspan\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"STELLA-LYE"},"content":"[//]: # (\u003cbox type\u003d\"info\" seamless\u003e)","lastModifiedDate":"2024-03-11"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"**Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"STELLA-LYE"},"content":"| Command format | Representation | Examples |","lastModifiedDate":"2024-03-11"},{"lineNumber":92,"author":{"gitId":"STELLA-LYE"},"content":"|-----------------------|---------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------|","lastModifiedDate":"2024-03-11"},{"lineNumber":93,"author":{"gitId":"STELLA-LYE"},"content":"| `UPPER_CASE` | Words in `UPPER_CASE` are the parameters to be supplied by the user | in `add n/NAME`, `NAME` is a parameter which can be used as `add n/John Doe` |","lastModifiedDate":"2024-03-11"},{"lineNumber":94,"author":{"gitId":"doyelee0313"},"content":"| square brackets `[]` | Items in square brackets are optional | `n/NAME [g/Group]` can be used as `n/John Doe g/TUT` or as `n/John Doe` |","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"doyelee0313"},"content":"| `…` | Items with `…`​ after them can be used multiple times including zero times | `[g/GROUP]…​` can be used as `g/TUT03`, `g/LAB01`, `g/REC08` etc |","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"STELLA-LYE"},"content":"| Order | Parameters can be in any order | if the command specifies `n/NAME p/PHONE_NUMBER`, `p/PHONE_NUMBER n/NAME` is also acceptable. |","lastModifiedDate":"2024-03-11"},{"lineNumber":97,"author":{"gitId":"STELLA-LYE"},"content":"| Extraneous parameters | Extraneous parameters for commands that do not take in parameters (such as `help`, `list`, `exit` and `clear`) will be ignored | if the command specifies `help 123`, it will be interpreted as `help` | | Singapore phone number, 8 digits, without country code |","lastModifiedDate":"2024-03-11"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"STELLA-LYE"},"content":"\u003e [!Note]","lastModifiedDate":"2024-03-11"},{"lineNumber":100,"author":{"gitId":"STELLA-LYE"},"content":"\u003e 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":"2024-03-11"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"STELLA-LYE"},"content":"### \u003cspan id\u003d\u0027feature-help\u0027\u003e Viewing help : `help` \u003c/span\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"STELLA-LYE"},"content":"Allows you to easily access tge features in TutorsContactsPro","lastModifiedDate":"2024-03-11"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":106,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2024-03-11"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2024-03-11"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"STELLA-LYE"},"content":"### \u003cspan id\u003d\u0027feature-list\u0027\u003e Listing all students : `list` \u003c/span\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"STELLA-LYE"},"content":"Shows a list of all your students.","lastModifiedDate":"2024-03-11"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"STELLA-LYE"},"content":"Format: `list`","lastModifiedDate":"2024-03-11"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"STELLA-LYE"},"content":"**Tip:** Auto-capitalization will be handled. Extra/trailing/leading spaces will be removed","lastModifiedDate":"2024-03-11"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"STELLA-LYE"},"content":"### \u003cspan id\u003d\u0027feature-add\u0027\u003e Adding a student: `add` \u003c/span\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"STELLA-LYE"},"content":"You can add a student to the list.","lastModifiedDate":"2024-03-11"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":124,"author":{"gitId":"doyelee0313"},"content":"Format: `add n/NAME p/PHONE_NUMBER e/EMAIL y/YEAR m/MAJOR tg/TELEGRAM_HANDLE [r/REMARK] [g/Group]...`","lastModifiedDate":"2024-03-20"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"STELLA-LYE"},"content":"| Parameter | Representation | Constraints |","lastModifiedDate":"2024-03-11"},{"lineNumber":128,"author":{"gitId":"jocelyn-soh"},"content":"|-------------------|---------------------------------------|------------------------------------------------------------------------------------|","lastModifiedDate":"2024-03-21"},{"lineNumber":129,"author":{"gitId":"jocelyn-soh"},"content":"| `NAME` | Name of the student | Auto-capitalization will be handled. Extra/trailing/leading spaces will be removed |","lastModifiedDate":"2024-03-21"},{"lineNumber":130,"author":{"gitId":"doyelee0313"},"content":"| `PHONE_NUMBER` | Phone number of the student | Singapore phone number, 8 digits, without country code |","lastModifiedDate":"2024-03-20"},{"lineNumber":131,"author":{"gitId":"STELLA-LYE"},"content":"| `EMAIL` | Email of the student | Must be in email format `username`@`email`.com |","lastModifiedDate":"2024-03-11"},{"lineNumber":132,"author":{"gitId":"doyelee0313"},"content":"| `YEAR` | Academic Year of the student | A number ranging from 1 - 6, inclusive |","lastModifiedDate":"2024-03-20"},{"lineNumber":133,"author":{"gitId":"STELLA-LYE"},"content":"| `MAJOR` | Academic Major of the student contact | String to represent the major |","lastModifiedDate":"2024-03-11"},{"lineNumber":134,"author":{"gitId":"STELLA-LYE"},"content":"| `TELEGRAM_HANDLE` | Telegram handle of the student | Telegram handle format (a-z, 0-9 and underscores, case-insensitive), without prefix “@” |","lastModifiedDate":"2024-03-11"},{"lineNumber":135,"author":{"gitId":"jocelyn-soh"},"content":"| `REMARKS` | Additional remarks of the student | A case-sensitive string. This can be anything |","lastModifiedDate":"2024-03-21"},{"lineNumber":136,"author":{"gitId":"doyelee0313"},"content":"| `GROUP` | Tutorial/Lab/Recitation slot | Must be in correct slot format TUT/LAB/REC`2-digit number` |","lastModifiedDate":"2024-03-20"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"STELLA-LYE"},"content":"Examples:","lastModifiedDate":"2024-03-11"},{"lineNumber":139,"author":{"gitId":"doyelee0313"},"content":"* `add n/John Doe p/98765432 e/johnd@example.com y/2 m/Computer Science tg/johndoe r/Very quiet student g/TUT04 g/LAB10 `","lastModifiedDate":"2024-03-20"},{"lineNumber":140,"author":{"gitId":"STELLA-LYE"},"content":"* `add n/Kendra Huetta p/98765367 e/Kendra@example.com y/1 m/Computer Science tg/KendraHuetta r/quiet student g/LAB10 `","lastModifiedDate":"2024-03-21"},{"lineNumber":141,"author":{"gitId":"STELLA-LYE"},"content":" ![result for \u0027add Kendra Huetta\u0027](images/addFeature.png)","lastModifiedDate":"2024-03-21"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"STELLA-LYE"},"content":"### \u003cspan id\u003d\u0027feature-edit\u0027\u003e Editing a student : `edit` \u003cspan\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"STELLA-LYE"},"content":"Edits an existing student you have selected.","lastModifiedDate":"2024-03-11"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"doyelee0313"},"content":"Format: `edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [y/YEAR] [m/MAJOR] [tg/TELEGRAM_HANDLE] [r/REMARK] [g/Group]`","lastModifiedDate":"2024-03-21"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"STELLA-LYE"},"content":"* Edits the student at the specified `INDEX`. The index refers to the index number shown in the displayed student list. The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-03-11"},{"lineNumber":150,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"doyelee0313"},"content":"* When editing groups, the existing groups of the student will be removed i.e adding of groups is not cumulative.","lastModifiedDate":"2024-03-20"},{"lineNumber":153,"author":{"gitId":"jocelyn-soh"},"content":"* You can remove all the student’s groups by typing `g/` without specifying any groups after it.","lastModifiedDate":"2024-03-21"},{"lineNumber":154,"author":{"gitId":"jocelyn-soh"},"content":"* You can remove the remark of a student by typing `r/` without specifying any groups after it. ","lastModifiedDate":"2024-03-21"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"doyelee0313"},"content":"* `edit 1 n/John e/john01@example.com` Edits the name of the first student to `John` and email to `john01@example.com` respectively.","lastModifiedDate":"2024-03-21"},{"lineNumber":158,"author":{"gitId":"jocelyn-soh"},"content":"* `edit 2 n/Betty tg/` Edits the name of the 2nd student to be `Betty` and clears her telegram handle.","lastModifiedDate":"2024-03-21"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"STELLA-LYE"},"content":"### \u003cspan id\u003d\u0027feature-find\u0027\u003e Locating students by keyword: `find` \u003cspan\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"STELLA-LYE"},"content":"Finds students whose details contain any of the given keywords.","lastModifiedDate":"2024-03-11"},{"lineNumber":163,"author":{"gitId":"STELLA-LYE"},"content":"You can find the student even if the keywords **matches partially**. ","lastModifiedDate":"2024-03-21"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"jocelyn-soh"},"content":"* Only the student\u0027s name is searched.","lastModifiedDate":"2024-03-21"},{"lineNumber":170,"author":{"gitId":"STELLA-LYE"},"content":"* Students matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2024-03-21"},{"lineNumber":171,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"STELLA-LYE"},"content":"* `find Jo` returns `John Doe`, `Johan Louis`\u003cbr\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":176,"author":{"gitId":"STELLA-LYE"},"content":" ![result for \u0027find Jo\u0027](images/findFeature.png)","lastModifiedDate":"2024-03-21"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"STELLA-LYE"},"content":"### \u003cspan id\u003d\u0027feature-filter\u0027\u003e Filtering students using group: `filter` \u003cspan\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":179,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":180,"author":{"gitId":"STELLA-LYE"},"content":"Filters and list students belonging to any of the given group name keyword.","lastModifiedDate":"2024-03-21"},{"lineNumber":181,"author":{"gitId":"STELLA-LYE"},"content":"You can filter students when the keywords **matches fully**.","lastModifiedDate":"2024-03-21"},{"lineNumber":182,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":183,"author":{"gitId":"STELLA-LYE"},"content":"Format: `filter KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2024-03-21"},{"lineNumber":184,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":185,"author":{"gitId":"STELLA-LYE"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2024-03-21"},{"lineNumber":186,"author":{"gitId":"STELLA-LYE"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2024-03-21"},{"lineNumber":187,"author":{"gitId":"STELLA-LYE"},"content":"* Only student\u0027s group name is searched.","lastModifiedDate":"2024-03-21"},{"lineNumber":188,"author":{"gitId":"STELLA-LYE"},"content":"* Students matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2024-03-21"},{"lineNumber":189,"author":{"gitId":"STELLA-LYE"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2024-03-21"},{"lineNumber":190,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":191,"author":{"gitId":"STELLA-LYE"},"content":"Examples:","lastModifiedDate":"2024-03-21"},{"lineNumber":192,"author":{"gitId":"STELLA-LYE"},"content":"* `filter TUT04 ` returns `John Doe` and `Johan Louis` belonging to the tutorial group `TUT04`","lastModifiedDate":"2024-03-21"},{"lineNumber":193,"author":{"gitId":"STELLA-LYE"},"content":" ![result for \u0027filter TU\u0027](images/filterFeature.png)","lastModifiedDate":"2024-03-21"},{"lineNumber":194,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"STELLA-LYE"},"content":"### \u003cspan id\u003d\u0027feature-delete\u0027\u003e Deleting a student : `delete` \u003cspan\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"STELLA-LYE"},"content":"Deletes your specified student from the current list.","lastModifiedDate":"2024-03-11"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"STELLA-LYE"},"content":"* Deletes the student at the specified `INDEX`.","lastModifiedDate":"2024-03-21"},{"lineNumber":203,"author":{"gitId":"STELLA-LYE"},"content":"* The index refers to the index number shown in the current displayed student list.","lastModifiedDate":"2024-03-11"},{"lineNumber":204,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"STELLA-LYE"},"content":"* `list` followed by `delete 2` deletes the 2nd student in the major book.","lastModifiedDate":"2024-03-21"},{"lineNumber":208,"author":{"gitId":"STELLA-LYE"},"content":"* `find Betsy` followed by `delete 1` deletes the 1st student in the results of the `find` command.","lastModifiedDate":"2024-03-21"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"STELLA-LYE"},"content":"### \u003cspan id\u003d\u0027feature-clear\u0027\u003e Clearing all entries : `clear` \u003cspan\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"STELLA-LYE"},"content":"Clears all student entries from TutorsContactsPro.","lastModifiedDate":"2024-03-11"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"author":{"gitId":"STELLA-LYE"},"content":"### \u003cspan id\u003d\u0027feature-exit\u0027\u003e Exiting the program : `exit` \u003cspan\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"STELLA-LYE"},"content":"TutorsContactsPro data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.","lastModifiedDate":"2024-03-11"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":226,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":228,"author":{"gitId":"STELLA-LYE"},"content":"TutorsContactsPro data are saved automatically as a JSON file `[JAR file location]/data/TutorsContactsPro.json`. Advanced users are welcome to update data directly by editing that data file.","lastModifiedDate":"2024-03-21"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":230,"author":{"gitId":"STELLA-LYE"},"content":"[//]: # (\u003cbox type\u003d\"warning\" seamless\u003e)","lastModifiedDate":"2024-03-11"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":232,"author":{"gitId":"STELLA-LYE"},"content":"\u003e [**Caution:**]","lastModifiedDate":"2024-03-21"},{"lineNumber":233,"author":{"gitId":"STELLA-LYE"},"content":"If your changes to the data file makes its format invalid, TutorsContactsPro 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.\u003cbr\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":234,"author":{"gitId":"STELLA-LYE"},"content":"Furthermore, certain edits can cause the TutorsContactsPro to behave in unexpected ways (e.g., if a value entered is outside the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.","lastModifiedDate":"2024-03-11"},{"lineNumber":235,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":237,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04"},{"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":"STELLA-LYE"},"content":"## \u003cspan id\u003d\u0027feature-faq\u0027\u003e FAQ \u003cspan\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"STELLA-LYE"},"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 TutorsContactsPro home folder.","lastModifiedDate":"2024-03-21"},{"lineNumber":247,"author":{"gitId":"-"},"content":"","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":"STELLA-LYE"},"content":"## \u003cspan id\u003d\u0027feature-issues\u0027\u003e Known issues \u003cspan\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":252,"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":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":254,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":256,"author":{"gitId":"STELLA-LYE"},"content":"## \u003cspan id\u003d\u0027feature-summary\u0027\u003e Command summary \u003cspan\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":257,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":258,"author":{"gitId":"STELLA-LYE"},"content":"| Action | Format, Examples |","lastModifiedDate":"2024-03-11"},{"lineNumber":259,"author":{"gitId":"STELLA-LYE"},"content":"|------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|","lastModifiedDate":"2024-03-21"},{"lineNumber":260,"author":{"gitId":"STELLA-LYE"},"content":"| **Help** | `help` |","lastModifiedDate":"2024-03-11"},{"lineNumber":261,"author":{"gitId":"STELLA-LYE"},"content":"| **List** | `list` |","lastModifiedDate":"2024-03-11"},{"lineNumber":262,"author":{"gitId":"STELLA-LYE"},"content":"| **Add** | `add n/NAME p/PHONE e/EMAIL y/YEAR m/MAJOR tg/TELEGRAM [r/REMARK] [g/Group]...` \u003cbr\u003e e.g., `add n/John Doe p/98765432 e/johnd@example.com y/2 m/Computer Science tg/johndoe r/Very quiet student g/TUT04 g/LAB10 ` |","lastModifiedDate":"2024-03-21"},{"lineNumber":263,"author":{"gitId":"doyelee0313"},"content":"| **Edit** | `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [y/NUMBER] [m/MAJOR] [tg/TELEGRAM] [r/REMARK] [g/Group]`\u003cbr\u003e e.g., `edit 1 n/John e/john01@example.com` |","lastModifiedDate":"2024-03-21"},{"lineNumber":264,"author":{"gitId":"jocelyn-soh"},"content":"| **Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g.,`find john tan` |","lastModifiedDate":"2024-03-21"},{"lineNumber":265,"author":{"gitId":"STELLA-LYE"},"content":"| **Filter** | `filter KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g.,`filter TUT01` |","lastModifiedDate":"2024-03-21"},{"lineNumber":266,"author":{"gitId":"STELLA-LYE"},"content":"| **Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 1` | ","lastModifiedDate":"2024-03-11"},{"lineNumber":267,"author":{"gitId":"STELLA-LYE"},"content":"| **Clear** | `clear` |","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"doyelee0313":13,"STELLA-LYE":122,"-":120,"jocelyn-soh":12}},{"path":"docs/_markbind/layouts/default.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003chead-bottom\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003clink rel\u003d\"stylesheet\" href\u003d\"{{baseUrl}}/stylesheets/main.css\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c/head-bottom\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003cheader sticky\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cnavbar type\u003d\"dark\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"jocelyn-soh"},"content":" \u003ca slot\u003d\"brand\" href\u003d\"{{baseUrl}}/index.html\" title\u003d\"Home\" class\u003d\"navbar-brand\"\u003eTutorsContactsPro\u003c/a\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/index.html\" class\u003d\"nav-link\"\u003eHome\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/UserGuide.html\" class\u003d\"nav-link\"\u003eUser Guide\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/DeveloperGuide.html\" class\u003d\"nav-link\"\u003eDeveloper Guide\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/AboutUs.html\" class\u003d\"nav-link\"\u003eAbout Us\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"https://github.com/se-edu/addressbook-level3\" target\u003d\"_blank\" class\u003d\"nav-link\"\u003e\u003cmd\u003e:fab-github:\u003c/md\u003e\u003c/a\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cli slot\u003d\"right\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cform class\u003d\"navbar-form\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003csearchbar :data\u003d\"searchData\" placeholder\u003d\"Search\" :on-hit\u003d\"searchCallback\" menu-align-right\u003e\u003c/searchbar\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/form\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/navbar\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"\u003c/header\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"flex-body\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"site-nav\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"site-nav-top\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"fw-bold mb-2\" style\u003d\"font-size: 1.25rem;\"\u003eSite Map\u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003csite-nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"* [Home]({{ baseUrl }}/index.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"* [User Guide]({{ baseUrl }}/UserGuide.html) :expanded:","lastModifiedDate":"2023-09-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * [Quick Start]({{ baseUrl }}/UserGuide.html#quick-start)","lastModifiedDate":"2023-09-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * [Features]({{ baseUrl }}/UserGuide.html#features)","lastModifiedDate":"2023-09-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * [FAQ]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * [Command Summary]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":"* [Developer Guide]({{ baseUrl }}/DeveloperGuide.html) :expanded:","lastModifiedDate":"2023-09-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * [Acknowledgements]({{ baseUrl }}/DeveloperGuide.html#acknowledgements)","lastModifiedDate":"2023-09-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * [Setting Up]({{ baseUrl }}/DeveloperGuide.html#setting-up-getting-started)","lastModifiedDate":"2023-09-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * [Design]({{ baseUrl }}/DeveloperGuide.html#design)","lastModifiedDate":"2023-09-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * [Implementation]({{ baseUrl }}/DeveloperGuide.html#implementation)","lastModifiedDate":"2023-09-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * [Documentation, logging, testing, configuration, dev-ops]({{ baseUrl }}/DeveloperGuide.html#documentation-logging-testing-configuration-dev-ops)","lastModifiedDate":"2023-09-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * [Appendix: Requirements]({{ baseUrl }}/DeveloperGuide.html#appendix-requirements)","lastModifiedDate":"2023-09-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * [Appendix: Instructions for manual testing]({{ baseUrl }}/DeveloperGuide.html#appendix-instructions-for-manual-testing)","lastModifiedDate":"2023-09-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":"* Tutorials","lastModifiedDate":"2023-09-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * [Tracing code]({{ baseUrl }}/tutorials/TracingCode.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * [Adding a command]({{ baseUrl }}/tutorials/AddRemark.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * [Removing Fields]({{ baseUrl }}/tutorials/RemovingFields.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [About Us]({{ baseUrl }}/AboutUs.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/site-nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cdiv id\u003d\"content-wrapper\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" {{ content }}","lastModifiedDate":"2023-09-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"page-nav\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cpage-nav /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003cscroll-top-button\u003e\u003c/scroll-top-button\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":"\u003cfooter\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003c!-- Support MarkBind by including a link to us on your landing page! --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"text-center\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u003csmall\u003e[\u003cmd\u003e**Powered by**\u003c/md\u003e \u003cimg src\u003d\"https://markbind.org/favicon.ico\" width\u003d\"30\"\u003e {{MarkBind}}, generated on {{timestamp}}]\u003c/small\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003c/footer\u003e","lastModifiedDate":"2023-09-12"}],"authorContributionMap":{"-":66,"jocelyn-soh":1}},{"path":"docs/diagrams/BetterModelClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":"!pragma layout smetana","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam arrowColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"AddressBook *-right-\u003e \"1\" UniquePersonList","lastModifiedDate":"2019-07-30"},{"lineNumber":9,"author":{"gitId":"doyelee0313"},"content":"AddressBook *-right-\u003e \"1\" UniqueGroupList","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"doyelee0313"},"content":"UniqueGroupList -[hidden]down- UniquePersonList","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"doyelee0313"},"content":"UniqueGroupList -[hidden]down- UniquePersonList","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"doyelee0313"},"content":"UniqueGroupList -right-\u003e \"*\" Group","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":"UniquePersonList -right-\u003e Person","lastModifiedDate":"2021-07-31"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"doyelee0313"},"content":"Person -up-\u003e \"*\" Group","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Person *--\u003e Name","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Person *--\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Person *--\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"STELLA-LYE"},"content":"Person *--\u003e Major","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"tohlh"},"content":"Person *--\u003e Year","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"tohlh"},"content":"Person *--\u003e Telegram","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"jocelyn-soh"},"content":"Person *--\u003e \"0..1\" Remark","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"doyelee0313":5,"STELLA-LYE":2,"-":15,"jocelyn-soh":1,"tohlh":2}},{"path":"docs/diagrams/DeleteActivityDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"STELLA-LYE"},"content":"@startuml","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":"start","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":":Student TA executes add command;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":"if () then ([command is in invalid format])","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":" :Show invalid command format as error message;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":"else ([else])","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"STELLA-LYE"},"content":" if () then ([Student already exists in TutorsContactsPro])","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":" : Show duplicate group error message;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"STELLA-LYE"},"content":" else([else])","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"STELLA-LYE"},"content":" : Add student to the contact list;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"STELLA-LYE"},"content":" : Displays student list in the GUI;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"STELLA-LYE"},"content":" endif","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"STELLA-LYE"},"content":"endif","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"STELLA-LYE"},"content":"stop","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"STELLA-LYE"},"content":"@enduml","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"STELLA-LYE":18}},{"path":"docs/diagrams/FindSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"jocelyn-soh"},"content":"@startuml","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"jocelyn-soh"},"content":"!include style.puml","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"jocelyn-soh"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"jocelyn-soh"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"jocelyn-soh"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"jocelyn-soh"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"jocelyn-soh"},"content":"participant \":FindCommandParser\" as FindCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"jocelyn-soh"},"content":"participant \"f:FindCommand\" as FindCommand LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"jocelyn-soh"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"jocelyn-soh"},"content":"participant \"n:NameContainsKeywordPredicate\" as NameContainsKeywordPredicate LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"jocelyn-soh"},"content":"end box","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"jocelyn-soh"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"jocelyn-soh"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"jocelyn-soh"},"content":"end box","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"jocelyn-soh"},"content":"[-\u003e LogicManager : execute(\"find John\")","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"jocelyn-soh"},"content":"activate LogicManager","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"jocelyn-soh"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"find John\")","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"jocelyn-soh"},"content":"activate AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"jocelyn-soh"},"content":"create FindCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"jocelyn-soh"},"content":"AddressBookParser -\u003e FindCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"jocelyn-soh"},"content":"activate FindCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"jocelyn-soh"},"content":"FindCommandParser --\u003e AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"jocelyn-soh"},"content":"deactivate FindCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"jocelyn-soh"},"content":"AddressBookParser -\u003e FindCommandParser : parse(\"John\")","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"jocelyn-soh"},"content":"activate FindCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"jocelyn-soh"},"content":"create FindCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"jocelyn-soh"},"content":"FindCommandParser -\u003e FindCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"jocelyn-soh"},"content":"activate FindCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"jocelyn-soh"},"content":"create NameContainsKeywordPredicate","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"jocelyn-soh"},"content":"FindCommand --\u003e NameContainsKeywordPredicate : n","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"jocelyn-soh"},"content":"activate NameContainsKeywordPredicate","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"jocelyn-soh"},"content":"NameContainsKeywordPredicate --\u003e FindCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"jocelyn-soh"},"content":"deactivate NameContainsKeywordPredicate","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"jocelyn-soh"},"content":"FindCommand --\u003e FindCommandParser :","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"jocelyn-soh"},"content":"deactivate FindCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"jocelyn-soh"},"content":"FindCommandParser --\u003e AddressBookParser : f","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"jocelyn-soh"},"content":"deactivate FindCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"jocelyn-soh"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"jocelyn-soh"},"content":"FindCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"jocelyn-soh"},"content":"destroy FindCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"jocelyn-soh"},"content":"AddressBookParser --\u003e LogicManager : f","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"jocelyn-soh"},"content":"deactivate AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"jocelyn-soh"},"content":"LogicManager -\u003e FindCommand : execute(m)","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"jocelyn-soh"},"content":"activate FindCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"jocelyn-soh"},"content":"FindCommand -\u003e Model : updateFilteredPersonList(f.predicate)","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"jocelyn-soh"},"content":"activate Model","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"jocelyn-soh"},"content":"Model --\u003e FindCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"jocelyn-soh"},"content":"deactivate Model","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"jocelyn-soh"},"content":"create CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"jocelyn-soh"},"content":"FindCommand -\u003e CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"jocelyn-soh"},"content":"activate CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"jocelyn-soh"},"content":"CommandResult --\u003e FindCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"jocelyn-soh"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"jocelyn-soh"},"content":"FindCommand --\u003e LogicManager : r","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"jocelyn-soh"},"content":"deactivate FindCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"jocelyn-soh"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"jocelyn-soh"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"jocelyn-soh"},"content":"@enduml","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"jocelyn-soh":79}},{"path":"docs/diagrams/ListSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"jocelyn-soh"},"content":"@startuml","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"jocelyn-soh"},"content":"!include style.puml","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"jocelyn-soh"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"jocelyn-soh"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"jocelyn-soh"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"jocelyn-soh"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"jocelyn-soh"},"content":"participant \"l:ListCommand\" as ListCommand LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"jocelyn-soh"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"jocelyn-soh"},"content":"end box","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"jocelyn-soh"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"jocelyn-soh"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"jocelyn-soh"},"content":"end box","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"jocelyn-soh"},"content":"[-\u003e LogicManager : execute(\"list\")","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"jocelyn-soh"},"content":"activate LogicManager","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"jocelyn-soh"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"list\")","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"jocelyn-soh"},"content":"activate AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"jocelyn-soh"},"content":"AddressBookParser -\u003e ListCommand :","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"jocelyn-soh"},"content":"activate ListCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"jocelyn-soh"},"content":"ListCommand --\u003e AddressBookParser : l","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"jocelyn-soh"},"content":"deactivate ListCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"jocelyn-soh"},"content":"AddressBookParser --\u003e LogicManager : l","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"jocelyn-soh"},"content":"deactivate AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"jocelyn-soh"},"content":"LogicManager -\u003e ListCommand : execute(m)","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"jocelyn-soh"},"content":"activate ListCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"jocelyn-soh"},"content":"ListCommand -\u003e Model : updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS)","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"jocelyn-soh"},"content":"activate Model","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"jocelyn-soh"},"content":"Model --\u003e ListCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"jocelyn-soh"},"content":"deactivate Model","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"jocelyn-soh"},"content":"create CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"jocelyn-soh"},"content":"ListCommand -\u003e CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"jocelyn-soh"},"content":"activate CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"jocelyn-soh"},"content":"CommandResult --\u003e ListCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"jocelyn-soh"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"jocelyn-soh"},"content":"ListCommand --\u003e LogicManager : r","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"jocelyn-soh"},"content":"deactivate ListCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"jocelyn-soh"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"jocelyn-soh"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"jocelyn-soh"},"content":"@enduml","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"jocelyn-soh":52}},{"path":"docs/diagrams/ModelClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":"!pragma layout smetana","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam arrowColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"Package Model as ModelPackage \u003c\u003cRectangle\u003e\u003e{","lastModifiedDate":"2023-07-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyAddressBook\" as ReadOnlyAddressBook","lastModifiedDate":"2022-01-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyUserPrefs\" as ReadOnlyUserPrefs","lastModifiedDate":"2022-01-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nModel\" as Model","lastModifiedDate":"2022-01-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"Class AddressBook","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"Class ModelManager","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"Class UserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Class UniquePersonList","lastModifiedDate":"2021-07-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Class Person","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":"-"},"content":"Class Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"doyelee0313"},"content":"Class Group","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"jocelyn-soh"},"content":"Class Remark","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":24,"author":{"gitId":"-"},"content":"Class I #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"AddressBook .up.|\u003e ReadOnlyAddressBook","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"ModelManager .up.|\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"Model .right.\u003e ReadOnlyUserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"Model .left.\u003e ReadOnlyAddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":"ModelManager -left-\u003e \"1\" AddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"ModelManager -right-\u003e \"1\" UserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"UserPrefs .up.|\u003e ReadOnlyUserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"AddressBook *--\u003e \"1\" UniquePersonList","lastModifiedDate":"2019-07-30"},{"lineNumber":40,"author":{"gitId":"-"},"content":"UniquePersonList --\u003e \"~* all\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":41,"author":{"gitId":"-"},"content":"Person *--\u003e Name","lastModifiedDate":"2019-07-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"Person *--\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"Person *--\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":44,"author":{"gitId":"tohlh"},"content":"Person *--\u003e Year","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"jocelyn-soh"},"content":"Person *-up-\u003e Telegram","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"jocelyn-soh"},"content":"Person *-right-\u003e Major","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"doyelee0313"},"content":"Person *--\u003e \"*\" Group","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"jocelyn-soh"},"content":"Person *--\u003e \"0..1\" Remark","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":50,"author":{"gitId":"-"},"content":"Person -[hidden]up--\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"UniquePersonList -[hidden]right-\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":"Name -[hidden]right-\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":54,"author":{"gitId":"jocelyn-soh"},"content":"Phone -[hidden]right-\u003e Email","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":"ModelManager --\u003e \"~* filtered\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":57,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"doyelee0313":2,"STELLA-LYE":1,"-":48,"jocelyn-soh":5,"tohlh":1}},{"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":"-"},"content":"Class JsonAdaptedPerson","lastModifiedDate":"2021-07-31"},{"lineNumber":22,"author":{"gitId":"doyelee0313"},"content":"Class JsonAdaptedGroup","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":"JsonSerializableAddressBook --\u003e \"*\" JsonAdaptedPerson","lastModifiedDate":"2021-07-31"},{"lineNumber":41,"author":{"gitId":"doyelee0313"},"content":"JsonAdaptedPerson --\u003e \"*\" JsonAdaptedGroup","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-03-31"},{"lineNumber":43,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"doyelee0313":2,"-":41}},{"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":"jocelyn-soh"},"content":"# TutorsContactsPro","lastModifiedDate":"2024-03-06"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"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":9,"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":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":"jocelyn-soh"},"content":"**TutorsContactsPro is a desktop application for tutors teaching Computer Science courses to manage their students.** While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface).","lastModifiedDate":"2024-03-06"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"jocelyn-soh"},"content":"* If you are interested in using TutorsContactsPro, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).","lastModifiedDate":"2024-03-06"},{"lineNumber":16,"author":{"gitId":"jocelyn-soh"},"content":"* If you are interested about developing TutorsContactsPro, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.","lastModifiedDate":"2024-03-06"},{"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":{"-":17,"jocelyn-soh":4}},{"path":"docs/team/doyelee0313.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"doyelee0313"},"content":"---","lastModifiedDate":"2024-03-05"},{"lineNumber":2,"author":{"gitId":"doyelee0313"},"content":" layout: default.md","lastModifiedDate":"2024-03-05"},{"lineNumber":3,"author":{"gitId":"doyelee0313"},"content":" title: \"Doye\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-03-05"},{"lineNumber":4,"author":{"gitId":"doyelee0313"},"content":"---","lastModifiedDate":"2024-03-05"},{"lineNumber":5,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":6,"author":{"gitId":"doyelee0313"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-03-05"},{"lineNumber":7,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":"AddressBook - Level 3 is a desktop major 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":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":10,"author":{"gitId":"doyelee0313"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-05"},{"lineNumber":11,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-03-05"}],"authorContributionMap":{"doyelee0313":10,"STELLA-LYE":1}},{"path":"docs/team/jocelyn-soh.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"jocelyn-soh"},"content":"---","lastModifiedDate":"2024-03-06"},{"lineNumber":2,"author":{"gitId":"jocelyn-soh"},"content":" layout: default.md","lastModifiedDate":"2024-03-06"},{"lineNumber":3,"author":{"gitId":"jocelyn-soh"},"content":" title: \"Jocelyn\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-03-06"},{"lineNumber":4,"author":{"gitId":"jocelyn-soh"},"content":"---","lastModifiedDate":"2024-03-06"},{"lineNumber":5,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":6,"author":{"gitId":"jocelyn-soh"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-03-06"},{"lineNumber":7,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":"AddressBook - Level 3 is a desktop major 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":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":10,"author":{"gitId":"jocelyn-soh"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"STELLA-LYE":1,"jocelyn-soh":9}},{"path":"docs/team/stella-lye.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"STELLA-LYE"},"content":"---","lastModifiedDate":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":"layout: default.md","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":"title: \"Stella\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-03-04"},{"lineNumber":4,"author":{"gitId":"STELLA-LYE"},"content":"---","lastModifiedDate":"2024-03-04"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-03-04"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":"AddressBook - Level 3 is a desktop major 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":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-04"},{"lineNumber":11,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"STELLA-LYE":11}},{"path":"docs/team/tohlh.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"tohlh"},"content":"---","lastModifiedDate":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"tohlh"},"content":" layout: default.md","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"tohlh"},"content":" title: \"Li Heng\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-03-04"},{"lineNumber":4,"author":{"gitId":"tohlh"},"content":"---","lastModifiedDate":"2024-03-04"},{"lineNumber":5,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":6,"author":{"gitId":"tohlh"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-03-04"},{"lineNumber":7,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":"AddressBook - Level 3 is a desktop major 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":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":10,"author":{"gitId":"tohlh"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-04"},{"lineNumber":11,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"STELLA-LYE":1,"tohlh":10}},{"path":"docs/tutorials/AddRemark.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-07-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Tutorial: Adding a command\"","lastModifiedDate":"2020-07-29"},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-07-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"# Tutorial: Adding a command","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"Let\u0027s walk you through the implementation of a new command — `remark`.","lastModifiedDate":"2020-07-29"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":11,"author":{"gitId":"STELLA-LYE"},"content":"This command allows users of the AddressBook application to add optional remarks to people in their major book and edit it if required. The command should have the following format:","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":13,"author":{"gitId":"-"},"content":"`remark INDEX r/REMARK` (e.g., `remark 2 r/Likes baseball`)","lastModifiedDate":"2020-07-29"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":15,"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":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":"## Create a new `remark` command","lastModifiedDate":"2020-07-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":20,"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":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":22,"author":{"gitId":"STELLA-LYE"},"content":"Let’s start by creating a new `RemarkCommand` class in the `src/main/java/seedu/major/logic/command` directory.","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":24,"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":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":26,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":28,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":29,"author":{"gitId":"STELLA-LYE"},"content":"package seedu.major.logic.commands;","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":31,"author":{"gitId":"STELLA-LYE"},"content":"import seedu.major.model.Model;","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":33,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":34,"author":{"gitId":"STELLA-LYE"},"content":" * Changes the remark of an existing person in the major book.","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":36,"author":{"gitId":"-"},"content":"public class RemarkCommand extends Command {","lastModifiedDate":"2020-07-29"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"remark\";","lastModifiedDate":"2020-07-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2020-07-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return new CommandResult(\"Hello from remark\");","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":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":"### Hook `RemarkCommand` into the application","lastModifiedDate":"2020-07-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":49,"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":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":51,"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":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":"### Run the application","lastModifiedDate":"2020-07-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":55,"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":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":"![Output displayed](../images/add-remark/RemarkHello.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":"## Change `RemarkCommand` to throw an exception","lastModifiedDate":"2020-07-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":61,"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":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":63,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"../diagrams/add-remark/RemarkClass.puml\" alt\u003d\"The relationship between RemarkCommand and Command\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":65,"author":{"gitId":"-"},"content":"Following the convention in other commands, we add relevant messages as constants and use them.","lastModifiedDate":"2020-07-29"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":67,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":69,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2021-08-01"},{"lineNumber":71,"author":{"gitId":"-"},"content":" + \": Edits the remark of the person identified \"","lastModifiedDate":"2021-08-01"},{"lineNumber":72,"author":{"gitId":"-"},"content":" + \"by the index number used in the last person listing. \"","lastModifiedDate":"2020-07-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":" + \"Existing remark will be overwritten by the input.\\n\"","lastModifiedDate":"2020-07-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2020-07-29"},{"lineNumber":75,"author":{"gitId":"-"},"content":" + \"r/ [REMARK]\\n\"","lastModifiedDate":"2020-07-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2020-07-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":" + \"r/ Likes to swim.\";","lastModifiedDate":"2020-07-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_IMPLEMENTED_YET \u003d","lastModifiedDate":"2021-08-01"},{"lineNumber":80,"author":{"gitId":"-"},"content":" \"Remark command not implemented yet\";","lastModifiedDate":"2021-08-01"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":84,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_NOT_IMPLEMENTED_YET);","lastModifiedDate":"2020-07-29"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":86,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":88,"author":{"gitId":"-"},"content":"## Enhancing `RemarkCommand`","lastModifiedDate":"2020-07-29"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":90,"author":{"gitId":"-"},"content":"Let’s change `RemarkCommand` to parse input from the user.","lastModifiedDate":"2020-07-29"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":92,"author":{"gitId":"-"},"content":"### Make the command accept parameters","lastModifiedDate":"2020-07-29"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":94,"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":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":96,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":97,"author":{"gitId":"STELLA-LYE"},"content":"import static seedu.major.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":99,"author":{"gitId":"-"},"content":"public class RemarkCommand extends Command {","lastModifiedDate":"2020-07-29"},{"lineNumber":100,"author":{"gitId":"-"},"content":" //...","lastModifiedDate":"2020-07-29"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public static final String MESSAGE_ARGUMENTS \u003d \"Index: %1$d, Remark: %2$s\";","lastModifiedDate":"2020-07-29"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":103,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2020-07-29"},{"lineNumber":104,"author":{"gitId":"-"},"content":" private final String remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":106,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-07-29"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit the remark","lastModifiedDate":"2020-07-29"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * @param remark of the person to be updated to","lastModifiedDate":"2020-07-29"},{"lineNumber":109,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public RemarkCommand(Index index, String remark) {","lastModifiedDate":"2020-07-29"},{"lineNumber":111,"author":{"gitId":"-"},"content":" requireAllNonNull(index, remark);","lastModifiedDate":"2020-07-29"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":113,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2020-07-29"},{"lineNumber":114,"author":{"gitId":"-"},"content":" this.remark \u003d remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":118,"author":{"gitId":"-"},"content":" throw new CommandException(","lastModifiedDate":"2021-08-01"},{"lineNumber":119,"author":{"gitId":"-"},"content":" String.format(MESSAGE_ARGUMENTS, index.getOneBased(), remark));","lastModifiedDate":"2021-08-01"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2020-07-29"},{"lineNumber":124,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2020-07-29"},{"lineNumber":125,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2020-07-29"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":128,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2020-07-29"},{"lineNumber":129,"author":{"gitId":"-"},"content":" if (!(other instanceof RemarkCommand)) {","lastModifiedDate":"2020-07-29"},{"lineNumber":130,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2020-07-29"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":133,"author":{"gitId":"-"},"content":" RemarkCommand e \u003d (RemarkCommand) other;","lastModifiedDate":"2020-07-29"},{"lineNumber":134,"author":{"gitId":"-"},"content":" return index.equals(e.index)","lastModifiedDate":"2020-07-29"},{"lineNumber":135,"author":{"gitId":"-"},"content":" \u0026\u0026 remark.equals(e.remark);","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":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":140,"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":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":142,"author":{"gitId":"-"},"content":"### Parse user input","lastModifiedDate":"2020-07-29"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":144,"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":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":146,"author":{"gitId":"STELLA-LYE"},"content":"Create a `RemarkCommandParser` class in the `seedu.major.logic.parser` package. The class must extend the `Parser` interface.","lastModifiedDate":"2024-03-17"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":148,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"../diagrams/add-remark/ParserClass.puml\" alt\u003d\"The relationship between Parser and RemarkCommandParser\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":150,"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":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":152,"author":{"gitId":"-"},"content":"**`ArgumentTokenizer.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":154,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":155,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":156,"author":{"gitId":"-"},"content":" * Tokenizes an arguments string and returns an {@code ArgumentMultimap}","lastModifiedDate":"2020-07-29"},{"lineNumber":157,"author":{"gitId":"-"},"content":" * object that maps prefixes to their respective argument values. Only the","lastModifiedDate":"2020-07-29"},{"lineNumber":158,"author":{"gitId":"-"},"content":" * given prefixes will be recognized in the arguments string.","lastModifiedDate":"2020-07-29"},{"lineNumber":159,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2020-07-29"},{"lineNumber":160,"author":{"gitId":"-"},"content":" * @param argsString Arguments string of the form:","lastModifiedDate":"2020-07-29"},{"lineNumber":161,"author":{"gitId":"-"},"content":" * {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2020-07-29"},{"lineNumber":162,"author":{"gitId":"-"},"content":" * @param prefixes Prefixes to tokenize the arguments string with","lastModifiedDate":"2020-07-29"},{"lineNumber":163,"author":{"gitId":"-"},"content":" * @return ArgumentMultimap object that maps prefixes to their","lastModifiedDate":"2020-07-29"},{"lineNumber":164,"author":{"gitId":"-"},"content":" * arguments","lastModifiedDate":"2020-07-29"},{"lineNumber":165,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":166,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":168,"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":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":170,"author":{"gitId":"-"},"content":"**`ArgumentMultimap.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":172,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":173,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":174,"author":{"gitId":"-"},"content":" * Returns the last value of {@code prefix}.","lastModifiedDate":"2020-07-29"},{"lineNumber":175,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":176,"author":{"gitId":"-"},"content":"public Optional\u003cString\u003e getValue(Prefix prefix) {","lastModifiedDate":"2020-07-29"},{"lineNumber":177,"author":{"gitId":"-"},"content":" List\u003cString\u003e values \u003d getAllValues(prefix);","lastModifiedDate":"2020-07-29"},{"lineNumber":178,"author":{"gitId":"-"},"content":" return values.isEmpty() ? Optional.empty() :","lastModifiedDate":"2020-07-29"},{"lineNumber":179,"author":{"gitId":"-"},"content":" Optional.of(values.get(values.size() - 1));","lastModifiedDate":"2020-07-29"},{"lineNumber":180,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":181,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":183,"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":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":185,"author":{"gitId":"-"},"content":"**`DeleteCommandParser.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":187,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":188,"author":{"gitId":"-"},"content":"Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2020-07-29"},{"lineNumber":189,"author":{"gitId":"-"},"content":"return new DeleteCommand(index);","lastModifiedDate":"2020-07-29"},{"lineNumber":190,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":192,"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":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":194,"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":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":196,"author":{"gitId":"-"},"content":"**`RemarkCommandParser.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":198,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":199,"author":{"gitId":"-"},"content":"public RemarkCommand parse(String args) throws ParseException {","lastModifiedDate":"2020-07-29"},{"lineNumber":200,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2020-07-29"},{"lineNumber":201,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args,","lastModifiedDate":"2020-07-29"},{"lineNumber":202,"author":{"gitId":"-"},"content":" PREFIX_REMARK);","lastModifiedDate":"2020-07-29"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":204,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2020-07-29"},{"lineNumber":205,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2020-07-29"},{"lineNumber":206,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2020-07-29"},{"lineNumber":207,"author":{"gitId":"-"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2020-07-29"},{"lineNumber":208,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2020-07-29"},{"lineNumber":209,"author":{"gitId":"-"},"content":" RemarkCommand.MESSAGE_USAGE), ive);","lastModifiedDate":"2020-07-29"},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":212,"author":{"gitId":"-"},"content":" String remark \u003d argMultimap.getValue(PREFIX_REMARK).orElse(\"\");","lastModifiedDate":"2020-07-29"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":214,"author":{"gitId":"-"},"content":" return new RemarkCommand(index, remark);","lastModifiedDate":"2020-07-29"},{"lineNumber":215,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":216,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":218,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":220,"author":{"gitId":"-"},"content":"Don’t forget to update `AddressBookParser` to use our new `RemarkCommandParser`!","lastModifiedDate":"2023-09-12"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":222,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":224,"author":{"gitId":"-"},"content":"If you are stuck, check out the sample","lastModifiedDate":"2020-07-29"},{"lineNumber":225,"author":{"gitId":"-"},"content":"[here](https://github.com/se-edu/addressbook-level3/commit/dc6d5139d08f6403da0ec624ea32bd79a2ae0cbf#diff-8bf239e8e9529369b577701303ddd96af93178b4ed6735f91c2d8488b20c6b4a).","lastModifiedDate":"2022-01-02"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":227,"author":{"gitId":"-"},"content":"## Add `Remark` to the model","lastModifiedDate":"2020-07-29"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":229,"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":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":231,"author":{"gitId":"-"},"content":"### Add a new `Remark` class","lastModifiedDate":"2020-07-29"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":233,"author":{"gitId":"STELLA-LYE"},"content":"Create a new `Remark` in `seedu.major.model.person`. Since a `Remark` is a field that is similar to `Address`, we can reuse a significant bit of code.","lastModifiedDate":"2024-03-17"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":235,"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":236,"author":{"gitId":"-"},"content":"validation.","lastModifiedDate":"2020-07-29"},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":238,"author":{"gitId":"-"},"content":"### Make use of `Remark`","lastModifiedDate":"2020-07-29"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":240,"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":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":242,"author":{"gitId":"-"},"content":"## Add a placeholder element for remark to the UI","lastModifiedDate":"2020-07-29"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":244,"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":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":246,"author":{"gitId":"STELLA-LYE"},"content":"Simply add the following to [`seedu.major.ui.PersonCard`](https://github.com/se-edu/addressbook-level3/commit/850b78879582f38accb05dd20c245963c65ea599#diff-639834f1e05afe2276a86372adf0fe5f69314642c2d93cfa543d614ce5a76688).","lastModifiedDate":"2024-03-17"},{"lineNumber":247,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":248,"author":{"gitId":"-"},"content":"**`PersonCard.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":250,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":251,"author":{"gitId":"-"},"content":"@FXML","lastModifiedDate":"2020-07-29"},{"lineNumber":252,"author":{"gitId":"-"},"content":"private Label remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":253,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":256,"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":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":258,"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":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":260,"author":{"gitId":"-"},"content":"**`PersonListCard.fxml`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":261,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":262,"author":{"gitId":"-"},"content":"``` xml","lastModifiedDate":"2020-07-29"},{"lineNumber":263,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"remark\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$remark\" /\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":264,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":266,"author":{"gitId":"-"},"content":"That’s it! Fire up the application again and you should see something like this:","lastModifiedDate":"2020-07-29"},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":268,"author":{"gitId":"-"},"content":"![$remark shows up in each entry](../images/add-remark/$Remark.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":269,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":270,"author":{"gitId":"-"},"content":"## Modify `Person` to support a `Remark` field","lastModifiedDate":"2020-07-29"},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":272,"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":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":274,"author":{"gitId":"-"},"content":"### Modify `Person`","lastModifiedDate":"2020-07-29"},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":276,"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":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":278,"author":{"gitId":"-"},"content":"### Update other usages of `Person`","lastModifiedDate":"2020-07-29"},{"lineNumber":279,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":280,"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":281,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":282,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":284,"author":{"gitId":"-"},"content":"Use the `Find Usages` feature in IntelliJ IDEA on the `Person` class to find these commands.","lastModifiedDate":"2023-09-12"},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":286,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":288,"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":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":291,"author":{"gitId":"-"},"content":"## Updating Storage","lastModifiedDate":"2020-07-29"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":293,"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":294,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":295,"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":296,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":297,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":298,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":299,"author":{"gitId":"STELLA-LYE"},"content":"You must delete AddressBook’s storage file located at `/data/addressbook.json` before running it! Not doing so will cause AddressBook to default to an empty major book!","lastModifiedDate":"2024-03-17"},{"lineNumber":300,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":301,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":302,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":303,"author":{"gitId":"-"},"content":"Check out [this commit](https://github.com/se-edu/addressbook-level3/commit/556cbd0e03ff224d7a68afba171ad2eb0ce56bbf)","lastModifiedDate":"2020-07-29"},{"lineNumber":304,"author":{"gitId":"-"},"content":"to see what the changes entail.","lastModifiedDate":"2020-07-29"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":306,"author":{"gitId":"-"},"content":"## Finalizing the UI","lastModifiedDate":"2020-07-29"},{"lineNumber":307,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":308,"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":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":310,"author":{"gitId":"-"},"content":"Just add [this one line of code!](https://github.com/se-edu/addressbook-level3/commit/5b98fee11b6b3f5749b6b943c4f3bd3aa049b692)","lastModifiedDate":"2020-07-29"},{"lineNumber":311,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":312,"author":{"gitId":"-"},"content":"**`PersonCard.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":313,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":314,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":315,"author":{"gitId":"-"},"content":"public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2020-07-29"},{"lineNumber":316,"author":{"gitId":"-"},"content":" //...","lastModifiedDate":"2020-07-29"},{"lineNumber":317,"author":{"gitId":"-"},"content":" remark.setText(person.getRemark().value);","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":"","lastModifiedDate":"2020-07-29"},{"lineNumber":321,"author":{"gitId":"-"},"content":"![The remark label is bound properly!](../images/add-remark/RemarkBound.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":322,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":323,"author":{"gitId":"-"},"content":"## Putting everything together","lastModifiedDate":"2020-07-29"},{"lineNumber":324,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":325,"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":326,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":327,"author":{"gitId":"-"},"content":"### Update `RemarkCommand` and `RemarkCommandParser`","lastModifiedDate":"2020-07-29"},{"lineNumber":328,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":329,"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":330,"author":{"gitId":"-"},"content":"save it with `Model#setPerson()`.","lastModifiedDate":"2020-07-29"},{"lineNumber":331,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":332,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":333,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":334,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":335,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":336,"author":{"gitId":"-"},"content":" public static final String MESSAGE_ADD_REMARK_SUCCESS \u003d \"Added remark to Person: %1$s\";","lastModifiedDate":"2020-07-29"},{"lineNumber":337,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_REMARK_SUCCESS \u003d \"Removed remark from Person: %1$s\";","lastModifiedDate":"2020-07-29"},{"lineNumber":338,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":339,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":340,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":341,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2020-07-29"},{"lineNumber":342,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":343,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2020-07-29"},{"lineNumber":344,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2020-07-29"},{"lineNumber":345,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":346,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":347,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2020-07-29"},{"lineNumber":348,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new Person(","lastModifiedDate":"2021-08-01"},{"lineNumber":349,"author":{"gitId":"-"},"content":" personToEdit.getName(), personToEdit.getPhone(), personToEdit.getEmail(),","lastModifiedDate":"2021-08-01"},{"lineNumber":350,"author":{"gitId":"doyelee0313"},"content":" personToEdit.getAddress(), remark, personToEdit.getGroups());","lastModifiedDate":"2024-03-20"},{"lineNumber":351,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":352,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2020-07-29"},{"lineNumber":353,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2020-07-29"},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":355,"author":{"gitId":"-"},"content":" return new CommandResult(generateSuccessMessage(editedPerson));","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":" /**","lastModifiedDate":"2020-07-29"},{"lineNumber":359,"author":{"gitId":"-"},"content":" * Generates a command execution success message based on whether","lastModifiedDate":"2021-08-01"},{"lineNumber":360,"author":{"gitId":"-"},"content":" * the remark is added to or removed from","lastModifiedDate":"2021-08-01"},{"lineNumber":361,"author":{"gitId":"-"},"content":" * {@code personToEdit}.","lastModifiedDate":"2020-07-29"},{"lineNumber":362,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":363,"author":{"gitId":"-"},"content":" private String generateSuccessMessage(Person personToEdit) {","lastModifiedDate":"2020-07-29"},{"lineNumber":364,"author":{"gitId":"-"},"content":" String message \u003d !remark.value.isEmpty() ? MESSAGE_ADD_REMARK_SUCCESS : MESSAGE_DELETE_REMARK_SUCCESS;","lastModifiedDate":"2020-07-29"},{"lineNumber":365,"author":{"gitId":"-"},"content":" return String.format(message, personToEdit);","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":"","lastModifiedDate":"2020-07-29"},{"lineNumber":369,"author":{"gitId":"-"},"content":"![Congratulations!](../images/add-remark/RemarkComplete.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":370,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":371,"author":{"gitId":"-"},"content":"## Writing tests","lastModifiedDate":"2020-07-29"},{"lineNumber":372,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":373,"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":374,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":375,"author":{"gitId":"-"},"content":"Let’s verify the correctness of our code by writing some tests!","lastModifiedDate":"2020-07-29"},{"lineNumber":376,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":377,"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":378,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-01"},{"lineNumber":379,"author":{"gitId":"-"},"content":"### Automatically generating tests","lastModifiedDate":"2020-07-29"},{"lineNumber":380,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":381,"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":382,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":383,"author":{"gitId":"-"},"content":"The convention for test names is `methodName_testScenario_expectedResult`. An example would be","lastModifiedDate":"2020-07-29"},{"lineNumber":384,"author":{"gitId":"-"},"content":"`execute_filteredList_success`.","lastModifiedDate":"2020-07-29"},{"lineNumber":385,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":386,"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":387,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":388,"author":{"gitId":"-"},"content":"![Using the context menu to jump to tests](../images/add-remark/ContextMenu.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":389,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":390,"author":{"gitId":"-"},"content":"Then, create a test for the `execute` method.","lastModifiedDate":"2020-07-29"},{"lineNumber":391,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":392,"author":{"gitId":"-"},"content":"![Creating a test for `execute`.](../images/add-remark/CreateTest.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":393,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":394,"author":{"gitId":"-"},"content":"Following convention, let’s change the name of the generated method to `execute_addRemarkUnfilteredList_success`.","lastModifiedDate":"2020-07-29"},{"lineNumber":395,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":396,"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":397,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":398,"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":399,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":400,"author":{"gitId":"-"},"content":"## Conclusion","lastModifiedDate":"2020-07-29"},{"lineNumber":401,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":402,"author":{"gitId":"-"},"content":"This concludes the tutorial for adding a new `Command` to AddressBook.","lastModifiedDate":"2020-07-29"}],"authorContributionMap":{"doyelee0313":1,"STELLA-LYE":10,"-":391}},{"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":"STELLA-LYE"},"content":"This tutorial aims to give you some practice on such a code \u0027removal\u0027 activity by removing the `major` field from `Person` class.","lastModifiedDate":"2024-03-17"},{"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":"STELLA-LYE"},"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 `major` field can be done similarly.","lastModifiedDate":"2024-03-17"},{"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":"STELLA-LYE"},"content":"The `major` field in `Person` is actually an instance of the `seedu.address.model.person.Majorclass. 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":"2024-03-17"},{"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":"STELLA-LYE"},"content":"1. Safe delete the field `major` in `EditPersonDescriptor`.","lastModifiedDate":"2024-03-17"},{"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":"STELLA-LYE"},"content":"1. Remove the usages of `major` and select `Do refactor` when you are done.","lastModifiedDate":"2024-03-17"},{"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":"STELLA-LYE"},"content":" **Tip:** Removing usages may result in errors. Exercise discretion and fix them. For example, removing the `major` field from the `Person` class will require you to modify its constructor.","lastModifiedDate":"2024-03-17"},{"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":"STELLA-LYE"},"content":"Unfortunately, there are usages of `Address` that IntelliJ IDEA cannot identify. You can find them by searching for instances of the word `major` in your code (`Edit` \\\u003e `Find` \\\u003e `Find in path`).","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"STELLA-LYE"},"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 `$major` in each `PersonCard` that has not been removed nor identified.","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"STELLA-LYE"},"content":"![$major](../images/remove/$major.png)","lastModifiedDate":"2024-03-17"},{"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":"STELLA-LYE"},"content":"private Label major;","lastModifiedDate":"2024-03-17"},{"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":"STELLA-LYE"},"content":"\u003cLabel fx:id\u003d\"major\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$major\" /\u003e","lastModifiedDate":"2024-03-17"},{"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":"STELLA-LYE"},"content":"In `src/test/data/`, data meant for testing purposes are stored. While keeping the `major` 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":"2024-03-17"},{"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":"-"},"content":" \"persons\": [ {","lastModifiedDate":"2020-05-23"},{"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":"STELLA-LYE"},"content":" \"major\": \"4th street\"","lastModifiedDate":"2024-03-17"},{"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":"STELLA-LYE"},"content":"You can go through each individual `json` file and manually remove the `major` field.","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"STELLA-LYE":14,"-":101}},{"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":"STELLA-LYE"},"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.major.logic.Logic`.","lastModifiedDate":"2024-03-17"},{"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":"STELLA-LYE"},"content":"A quick look at the `seedu.major.logic.Logic` (an extract given below) confirms that this indeed might be what we’re looking for.","lastModifiedDate":"2024-03-17"},{"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":"doyelee0313"},"content":"Recall from the User Guide that the `edit` command has the format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/Group]…​` For this tutorial we will be issuing the command `edit 1 n/Alice Yeoh`.","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":" * it uses the `updateFilteredPersonList` method to ask the `Model` to populate the \u0027filtered list\u0027 with _all_ persons.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":212,"author":{"gitId":"-"},"content":" FYI, The \u0027filtered list\u0027 is the list of persons 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 persons so that the user can see the edited person along with all other persons. If this was a `find` command, we would be setting that list to contain the search results instead.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":213,"author":{"gitId":"-"},"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 persons is being tracked.","lastModifiedDate":"2021-07-31"},{"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":"-"},"content":" persons.addAll(","lastModifiedDate":"2020-05-23"},{"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":"STELLA-LYE"},"content":" 3. Save the major book in the CSV format instead","lastModifiedDate":"2024-03-17"},{"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":"STELLA-LYE"},"content":" 6. Add a new entity to the major book","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"doyelee0313":1,"STELLA-LYE":4,"-":306}},{"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":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"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":"jocelyn-soh"},"content":" * Returns true if the {@code sentence} contains the {@code word} at the beginning of any word.","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"jocelyn-soh"},"content":" * Ignores case, a partial word match is allowed","lastModifiedDate":"2024-03-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":"jocelyn-soh"},"content":" * containsWordIgnoreCase(\"ABc def\", \"AB\") \u003d\u003d true //partial word match","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"jocelyn-soh"},"content":" * containsWordIgnoreCase(\"ABc def\", \"Bc\") \u003d\u003d false //contains but not at the beginning of any word","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * \u003c/pre\u003e","lastModifiedDate":"2016-10-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @param sentence cannot be null","lastModifiedDate":"2016-10-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * @param word cannot be null, cannot be empty, must be a single word","lastModifiedDate":"2016-10-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-13"},{"lineNumber":27,"author":{"gitId":"jocelyn-soh"},"content":" public static boolean containsStartingWordIgnoreCase(String sentence, String word) {","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" requireNonNull(sentence);","lastModifiedDate":"2017-05-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" requireNonNull(word);","lastModifiedDate":"2017-05-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":31,"author":{"gitId":"jocelyn-soh"},"content":" String preppedWord \u003d word.trim().toLowerCase();","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" checkArgument(!preppedWord.isEmpty(), \"Word parameter cannot be empty\");","lastModifiedDate":"2017-05-15"},{"lineNumber":33,"author":{"gitId":"jocelyn-soh"},"content":" checkArgument(preppedWord.split(\"\\\\s+\").length \u003d\u003d 1, \"Word parameter should be a \"","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"jocelyn-soh"},"content":" + \"single word\");","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":36,"author":{"gitId":"jocelyn-soh"},"content":" String preppedSentence \u003d sentence.toLowerCase();","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" String[] wordsInPreppedSentence \u003d preppedSentence.split(\"\\\\s+\");","lastModifiedDate":"2016-10-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return Arrays.stream(wordsInPreppedSentence)","lastModifiedDate":"2018-01-21"},{"lineNumber":40,"author":{"gitId":"jocelyn-soh"},"content":" .anyMatch(currWord -\u003e currWord.startsWith(preppedWord));","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Returns a detailed message of the t, including the stack trace.","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static String getDetails(Throwable t) {","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" requireNonNull(t);","lastModifiedDate":"2017-05-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":" StringWriter sw \u003d new StringWriter();","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" t.printStackTrace(new PrintWriter(sw));","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return t.getMessage() + \"\\n\" + sw.toString();","lastModifiedDate":"2016-09-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-22"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Returns true if {@code s} represents a non-zero unsigned integer","lastModifiedDate":"2017-06-02"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * e.g. 1, 2, 3, ..., {@code Integer.MAX_VALUE} \u003cbr\u003e","lastModifiedDate":"2017-06-02"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Will return false for any other non-null string input","lastModifiedDate":"2017-06-02"},{"lineNumber":57,"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":58,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code s} is null.","lastModifiedDate":"2017-06-02"},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static boolean isNonZeroUnsignedInteger(String s) {","lastModifiedDate":"2017-06-02"},{"lineNumber":61,"author":{"gitId":"-"},"content":" requireNonNull(s);","lastModifiedDate":"2017-06-02"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":63,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-06-02"},{"lineNumber":64,"author":{"gitId":"-"},"content":" int value \u003d Integer.parseInt(s);","lastModifiedDate":"2017-06-02"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return value \u003e 0 \u0026\u0026 !s.startsWith(\"+\"); // \"+1\" is successfully parsed by Integer#parseInt(String)","lastModifiedDate":"2017-06-02"},{"lineNumber":66,"author":{"gitId":"-"},"content":" } catch (NumberFormatException nfe) {","lastModifiedDate":"2017-06-02"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-06-02"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-02"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"-":60,"jocelyn-soh":10}},{"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":"STELLA-LYE"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX \u003d \"The student index provided is invalid\";","lastModifiedDate":"2024-03-09"},{"lineNumber":18,"author":{"gitId":"STELLA-LYE"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d students listed!\";","lastModifiedDate":"2024-03-09"},{"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":"tohlh"},"content":" .append(\"; Year: \")","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"tohlh"},"content":" .append(person.getYear())","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"STELLA-LYE"},"content":" .append(\"; Major: \")","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"STELLA-LYE"},"content":" .append(person.getMajor())","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"tohlh"},"content":" .append(\"; Telegram: \")","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"tohlh"},"content":" .append(person.getTelegram())","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"jocelyn-soh"},"content":" .append(\"; Remark: \")","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"jocelyn-soh"},"content":" .append(person.getRemark())","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"doyelee0313"},"content":" .append(\"; Groups: \");","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"doyelee0313"},"content":" person.getGroups().forEach(builder::append);","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"doyelee0313":2,"STELLA-LYE":4,"-":45,"jocelyn-soh":2,"tohlh":4}},{"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":"doyelee0313"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GROUP;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MAJOR;","lastModifiedDate":"2024-03-18"},{"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":"jocelyn-soh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_YEAR;","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-01-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-08-24"},{"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":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a person to the address book. \"","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09"},{"lineNumber":31,"author":{"gitId":"tohlh"},"content":" + PREFIX_YEAR + \"YEAR \"","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"STELLA-LYE"},"content":" + PREFIX_MAJOR + \"MAJOR \"","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"tohlh"},"content":" + PREFIX_TELEGRAM + \"TELEGRAM \"","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"jocelyn-soh"},"content":" + \"[\" + PREFIX_REMARK + \"REMARK] \"","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"doyelee0313"},"content":" + \"[\" + PREFIX_GROUP + \"Group]...\\n\"","lastModifiedDate":"2024-03-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":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09"},{"lineNumber":40,"author":{"gitId":"tohlh"},"content":" + PREFIX_YEAR + \"2 \"","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"STELLA-LYE"},"content":" + PREFIX_MAJOR + \"Computer Science \"","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"tohlh"},"content":" + PREFIX_TELEGRAM + \"johndoe \"","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"jocelyn-soh"},"content":" + PREFIX_REMARK + \"Very quiet student \"","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"doyelee0313"},"content":" + PREFIX_GROUP + \"TUT04 \"","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"doyelee0313"},"content":" + PREFIX_GROUP + \"LAB10 \";","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: %1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book\";","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":56,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":64,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":65,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"doyelee0313":4,"STELLA-LYE":3,"-":77,"jocelyn-soh":3,"tohlh":6}},{"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":"STELLA-LYE"},"content":" + \": Deletes the student identified by the index number used in the displayed person list.\\n\"","lastModifiedDate":"2024-03-09"},{"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":"STELLA-LYE"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Student: %1$s\";","lastModifiedDate":"2024-03-09"},{"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":{"STELLA-LYE":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":"doyelee0313"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GROUP;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MAJOR;","lastModifiedDate":"2024-03-18"},{"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":"jocelyn-soh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_YEAR;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":27,"author":{"gitId":"doyelee0313"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26"},{"lineNumber":29,"author":{"gitId":"STELLA-LYE"},"content":"import seedu.address.model.person.Major;","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-26"},{"lineNumber":33,"author":{"gitId":"jocelyn-soh"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"tohlh"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"tohlh"},"content":"import seedu.address.model.person.Year;","lastModifiedDate":"2024-03-13"},{"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":"tohlh"},"content":" + \"[\" + PREFIX_YEAR + \"YEAR] \"","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"STELLA-LYE"},"content":" + \"[\" + PREFIX_MAJOR + \"MAJOR] \"","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"tohlh"},"content":" + \"[\" + PREFIX_TELEGRAM + \"TELEGRAM]\"","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"jocelyn-soh"},"content":" + \"[\" + PREFIX_REMARK + \"REMARK]\"","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"doyelee0313"},"content":" + \"[\" + PREFIX_GROUP + \"Group]...\\n\"","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09"},{"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":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26"},{"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":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26"},{"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":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21"},{"lineNumber":109,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":110,"author":{"gitId":"tohlh"},"content":" Year updatedYear \u003d editPersonDescriptor.getYear().orElse(personToEdit.getYear());","lastModifiedDate":"2024-03-13"},{"lineNumber":111,"author":{"gitId":"STELLA-LYE"},"content":" Major updatedMajor \u003d editPersonDescriptor.getMajor().orElse(personToEdit.getMajor());","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"tohlh"},"content":" Telegram updatedTelegram \u003d editPersonDescriptor.getTelegram().orElse(personToEdit.getTelegram());","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"jocelyn-soh"},"content":" Remark updatedRemark \u003d editPersonDescriptor.getRemark().orElse(personToEdit.getRemark());","lastModifiedDate":"2024-03-19"},{"lineNumber":114,"author":{"gitId":"doyelee0313"},"content":" Set\u003cGroup\u003e updatedGroups \u003d editPersonDescriptor.getGroups().orElse(personToEdit.getGroups());","lastModifiedDate":"2024-03-20"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":116,"author":{"gitId":"tohlh"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedYear, updatedTelegram,","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"doyelee0313"},"content":" updatedMajor, updatedRemark, updatedGroups);","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13"},{"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":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23"},{"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":"2016-12-26"},{"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":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":151,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":152,"author":{"gitId":"tohlh"},"content":" private Year year;","lastModifiedDate":"2024-03-13"},{"lineNumber":153,"author":{"gitId":"STELLA-LYE"},"content":" private Major major;","lastModifiedDate":"2024-03-17"},{"lineNumber":154,"author":{"gitId":"tohlh"},"content":" private Telegram telegram;","lastModifiedDate":"2024-03-17"},{"lineNumber":155,"author":{"gitId":"jocelyn-soh"},"content":" private Remark remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":156,"author":{"gitId":"doyelee0313"},"content":" private Set\u003cGroup\u003e groups;","lastModifiedDate":"2024-03-20"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":158,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":160,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":161,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11"},{"lineNumber":162,"author":{"gitId":"doyelee0313"},"content":" * A defensive copy of {@code groups} is used internally.","lastModifiedDate":"2024-03-20"},{"lineNumber":163,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":164,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26"},{"lineNumber":165,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15"},{"lineNumber":166,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15"},{"lineNumber":167,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15"},{"lineNumber":168,"author":{"gitId":"tohlh"},"content":" setYear(toCopy.year);","lastModifiedDate":"2024-03-13"},{"lineNumber":169,"author":{"gitId":"STELLA-LYE"},"content":" setMajor(toCopy.major);","lastModifiedDate":"2024-03-17"},{"lineNumber":170,"author":{"gitId":"tohlh"},"content":" setTelegram(toCopy.telegram);","lastModifiedDate":"2024-03-17"},{"lineNumber":171,"author":{"gitId":"jocelyn-soh"},"content":" setRemark(toCopy.remark);","lastModifiedDate":"2024-03-19"},{"lineNumber":172,"author":{"gitId":"doyelee0313"},"content":" setGroups(toCopy.groups);","lastModifiedDate":"2024-03-20"},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":175,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":176,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26"},{"lineNumber":177,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":178,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26"},{"lineNumber":179,"author":{"gitId":"doyelee0313"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, year, major, telegram, remark, groups);","lastModifiedDate":"2024-03-20"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":182,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21"},{"lineNumber":183,"author":{"gitId":"-"},"content":" this.name \u003d 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 Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":187,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","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 void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21"},{"lineNumber":191,"author":{"gitId":"-"},"content":" this.phone \u003d 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 Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26"},{"lineNumber":195,"author":{"gitId":"-"},"content":" return Optional.ofNullable(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 void setEmail(Email email) {","lastModifiedDate":"2017-06-21"},{"lineNumber":199,"author":{"gitId":"-"},"content":" this.email \u003d 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 Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":203,"author":{"gitId":"-"},"content":" return Optional.ofNullable(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":"tohlh"},"content":" public void setYear(Year year) {","lastModifiedDate":"2024-03-13"},{"lineNumber":207,"author":{"gitId":"tohlh"},"content":" this.year \u003d year;","lastModifiedDate":"2024-03-13"},{"lineNumber":208,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":209,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":210,"author":{"gitId":"tohlh"},"content":" public Optional\u003cYear\u003e getYear() {","lastModifiedDate":"2024-03-13"},{"lineNumber":211,"author":{"gitId":"tohlh"},"content":" return Optional.ofNullable(year);","lastModifiedDate":"2024-03-13"},{"lineNumber":212,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":213,"author":{"gitId":"tohlh"},"content":" public void setTelegram(Telegram telegram) {","lastModifiedDate":"2024-03-17"},{"lineNumber":214,"author":{"gitId":"tohlh"},"content":" this.telegram \u003d telegram;","lastModifiedDate":"2024-03-17"},{"lineNumber":215,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":216,"author":{"gitId":"tohlh"},"content":" public Optional\u003cTelegram\u003e getTelegram() {","lastModifiedDate":"2024-03-17"},{"lineNumber":217,"author":{"gitId":"tohlh"},"content":" return Optional.ofNullable(telegram);","lastModifiedDate":"2024-03-17"},{"lineNumber":218,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":219,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":220,"author":{"gitId":"STELLA-LYE"},"content":" public void setMajor(Major major) {","lastModifiedDate":"2024-03-17"},{"lineNumber":221,"author":{"gitId":"STELLA-LYE"},"content":" this.major \u003d major;","lastModifiedDate":"2024-03-17"},{"lineNumber":222,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":224,"author":{"gitId":"STELLA-LYE"},"content":" public Optional\u003cMajor\u003e getMajor() {","lastModifiedDate":"2024-03-17"},{"lineNumber":225,"author":{"gitId":"STELLA-LYE"},"content":" return Optional.ofNullable(major);","lastModifiedDate":"2024-03-17"},{"lineNumber":226,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":227,"author":{"gitId":"jocelyn-soh"},"content":" public void setRemark(Remark remark) {","lastModifiedDate":"2024-03-19"},{"lineNumber":228,"author":{"gitId":"jocelyn-soh"},"content":" this.remark \u003d remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":229,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":231,"author":{"gitId":"jocelyn-soh"},"content":" public Optional\u003cRemark\u003e getRemark() {","lastModifiedDate":"2024-03-19"},{"lineNumber":232,"author":{"gitId":"jocelyn-soh"},"content":" return Optional.ofNullable(remark);","lastModifiedDate":"2024-03-19"},{"lineNumber":233,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":235,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":236,"author":{"gitId":"doyelee0313"},"content":" * Sets {@code groups} to this object\u0027s {@code groups}.","lastModifiedDate":"2024-03-20"},{"lineNumber":237,"author":{"gitId":"doyelee0313"},"content":" * A defensive copy of {@code groups} is used internally.","lastModifiedDate":"2024-03-20"},{"lineNumber":238,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":239,"author":{"gitId":"doyelee0313"},"content":" public void setGroups(Set\u003cGroup\u003e groups) {","lastModifiedDate":"2024-03-20"},{"lineNumber":240,"author":{"gitId":"doyelee0313"},"content":" this.groups \u003d (groups !\u003d null) ? new HashSet\u003c\u003e(groups) : null;","lastModifiedDate":"2024-03-20"},{"lineNumber":241,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":243,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":244,"author":{"gitId":"doyelee0313"},"content":" * Returns an unmodifiable group set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2024-03-20"},{"lineNumber":245,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11"},{"lineNumber":246,"author":{"gitId":"doyelee0313"},"content":" * Returns {@code Optional#empty()} if {@code groups} is null.","lastModifiedDate":"2024-03-20"},{"lineNumber":247,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":248,"author":{"gitId":"doyelee0313"},"content":" public Optional\u003cSet\u003cGroup\u003e\u003e getGroups() {","lastModifiedDate":"2024-03-20"},{"lineNumber":249,"author":{"gitId":"doyelee0313"},"content":" return (groups !\u003d null) ? Optional.of(Collections.unmodifiableSet(groups)) : Optional.empty();","lastModifiedDate":"2024-03-20"},{"lineNumber":250,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":252,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":253,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":254,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":255,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":256,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":258,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":259,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05"},{"lineNumber":260,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":261,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":263,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":264,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":265,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":266,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":267,"author":{"gitId":"tohlh"},"content":" \u0026\u0026 Objects.equals(year, otherEditPersonDescriptor.year)","lastModifiedDate":"2024-03-19"},{"lineNumber":268,"author":{"gitId":"tohlh"},"content":" \u0026\u0026 Objects.equals(telegram, otherEditPersonDescriptor.telegram)","lastModifiedDate":"2024-03-19"},{"lineNumber":269,"author":{"gitId":"STELLA-LYE"},"content":" \u0026\u0026 Objects.equals(major, otherEditPersonDescriptor.major)","lastModifiedDate":"2024-03-17"},{"lineNumber":270,"author":{"gitId":"tohlh"},"content":" \u0026\u0026 Objects.equals(remark, otherEditPersonDescriptor.remark)","lastModifiedDate":"2024-03-19"},{"lineNumber":271,"author":{"gitId":"doyelee0313"},"content":" \u0026\u0026 Objects.equals(groups, otherEditPersonDescriptor.groups);","lastModifiedDate":"2024-03-20"},{"lineNumber":272,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":277,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":278,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":279,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":280,"author":{"gitId":"tohlh"},"content":" .add(\"year\", year)","lastModifiedDate":"2024-03-13"},{"lineNumber":281,"author":{"gitId":"STELLA-LYE"},"content":" .add(\"major\", major)","lastModifiedDate":"2024-03-17"},{"lineNumber":282,"author":{"gitId":"tohlh"},"content":" .add(\"telegram\", telegram)","lastModifiedDate":"2024-03-17"},{"lineNumber":283,"author":{"gitId":"jocelyn-soh"},"content":" .add(\"remark\", remark)","lastModifiedDate":"2024-03-19"},{"lineNumber":284,"author":{"gitId":"doyelee0313"},"content":" .add(\"groups\", groups)","lastModifiedDate":"2024-03-20"},{"lineNumber":285,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":286,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":287,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":288,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"doyelee0313":19,"STELLA-LYE":12,"-":214,"jocelyn-soh":11,"tohlh":32}},{"path":"src/main/java/seedu/address/logic/commands/FilterCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"STELLA-LYE"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":"import seedu.address.model.group.GroupContainsKeywordsPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"STELLA-LYE"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"STELLA-LYE"},"content":" * filters and lists all students in address book whose attribute contains any of the argument keywords.","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"STELLA-LYE"},"content":" * Keyword matching is case insensitive.","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"STELLA-LYE"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"STELLA-LYE"},"content":"public class FilterCommand extends Command {","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"STELLA-LYE"},"content":" public static final String COMMAND_WORD \u003d \"filter\";","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"STELLA-LYE"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": filters all students who are in group \"","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"STELLA-LYE"},"content":" + \"the specified keywords (case-insensitive) and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"STELLA-LYE"},"content":" + \"Parameters: KEYWORD [MORE_KEYWORDS]...\\n\"","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"STELLA-LYE"},"content":" + \"Example: \" + COMMAND_WORD + \" LAB10 TUT04\";","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"STELLA-LYE"},"content":" private final GroupContainsKeywordsPredicate predicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"STELLA-LYE"},"content":" public FilterCommand(GroupContainsKeywordsPredicate predicate) {","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"STELLA-LYE"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"STELLA-LYE"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"STELLA-LYE"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"STELLA-LYE"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"STELLA-LYE"},"content":" model.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"STELLA-LYE"},"content":" return new CommandResult(","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"STELLA-LYE"},"content":" String.format(Messages.MESSAGE_PERSONS_LISTED_OVERVIEW, model.getFilteredPersonList().size()));","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"STELLA-LYE"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"STELLA-LYE"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"STELLA-LYE"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"STELLA-LYE"},"content":" return true;","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"STELLA-LYE"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"STELLA-LYE"},"content":" if (!(other instanceof FilterCommand)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"STELLA-LYE"},"content":" return false;","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"STELLA-LYE"},"content":" FilterCommand otherFilterCommand \u003d (FilterCommand) other;","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"STELLA-LYE"},"content":" return predicate.equals(otherFilterCommand.predicate);","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"STELLA-LYE"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"STELLA-LYE"},"content":" public String toString() {","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"STELLA-LYE"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"STELLA-LYE"},"content":" .add(\"group\", predicate)","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"STELLA-LYE"},"content":" .toString();","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"STELLA-LYE":62}},{"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":"doyelee0313"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GROUP;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MAJOR;","lastModifiedDate":"2024-03-18"},{"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":"jocelyn-soh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_YEAR;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"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":"doyelee0313"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17"},{"lineNumber":20,"author":{"gitId":"STELLA-LYE"},"content":"import seedu.address.model.person.Major;","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-03-17"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-03-17"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-03-17"},{"lineNumber":24,"author":{"gitId":"jocelyn-soh"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"tohlh"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"tohlh"},"content":"import seedu.address.model.person.Year;","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05"},{"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-02-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":40,"author":{"gitId":"tohlh"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_YEAR,","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"doyelee0313"},"content":" PREFIX_TELEGRAM, PREFIX_MAJOR, PREFIX_REMARK, PREFIX_GROUP);","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":43,"author":{"gitId":"doyelee0313"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_MAJOR, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_YEAR)","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":48,"author":{"gitId":"tohlh"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_YEAR, PREFIX_TELEGRAM,","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"jocelyn-soh"},"content":" PREFIX_MAJOR, PREFIX_REMARK);","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":52,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":54,"author":{"gitId":"tohlh"},"content":" Year year \u003d ParserUtil.parseYear(argMultimap.getValue(PREFIX_YEAR).get());","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"STELLA-LYE"},"content":" Major major \u003d ParserUtil.parseMajor(argMultimap.getValue(PREFIX_MAJOR).get());","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"tohlh"},"content":" Telegram telegram \u003d ParserUtil.parseTelegram(argMultimap.getValue(PREFIX_TELEGRAM).get());","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"jocelyn-soh"},"content":" Remark remark \u003d ParserUtil.parseRemark(argMultimap.getValue(PREFIX_REMARK).orElse(\"\"));","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"doyelee0313"},"content":" Set\u003cGroup\u003e groupList \u003d ParserUtil.parseGroups(argMultimap.getAllValues(PREFIX_GROUP));","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":60,"author":{"gitId":"doyelee0313"},"content":" Person person \u003d new Person(name, phone, email, year, telegram, major, remark, groupList);","lastModifiedDate":"2024-03-20"},{"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-03-17"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17"},{"lineNumber":68,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":69,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"doyelee0313":6,"STELLA-LYE":4,"-":51,"jocelyn-soh":4,"tohlh":8}},{"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":"STELLA-LYE"},"content":"import seedu.address.logic.commands.FilterCommand;","lastModifiedDate":"2024-03-21"},{"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":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24"},{"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":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":50,"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":51,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":69,"author":{"gitId":"STELLA-LYE"},"content":" case FilterCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"STELLA-LYE"},"content":" return new FilterCommandParser().parse(arguments);","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26"},{"lineNumber":85,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29"},{"lineNumber":86,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11"},{"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":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"STELLA-LYE":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":"tohlh"},"content":" public static final Prefix PREFIX_YEAR \u003d new Prefix(\"y/\");","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"STELLA-LYE"},"content":" public static final Prefix PREFIX_MAJOR \u003d new Prefix(\"m/\");","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"tohlh"},"content":" public static final Prefix PREFIX_TELEGRAM \u003d new Prefix(\"tg/\");","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"jocelyn-soh"},"content":" public static final Prefix PREFIX_REMARK \u003d new Prefix(\"r/\");","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"doyelee0313"},"content":" public static final Prefix PREFIX_GROUP \u003d new Prefix(\"g/\");","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"doyelee0313":1,"STELLA-LYE":1,"-":13,"jocelyn-soh":1,"tohlh":2}},{"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":"doyelee0313"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GROUP;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MAJOR;","lastModifiedDate":"2024-03-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":"jocelyn-soh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_YEAR;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26"},{"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.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-01-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":23,"author":{"gitId":"doyelee0313"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"jocelyn-soh"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-03-19"},{"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":"2017-01-26"},{"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":"2017-01-26"},{"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":"tohlh"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"doyelee0313"},"content":" PREFIX_YEAR, PREFIX_TELEGRAM, PREFIX_MAJOR, PREFIX_REMARK, PREFIX_GROUP);","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06"},{"lineNumber":45,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10"},{"lineNumber":46,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":49,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"tohlh"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_YEAR,","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"jocelyn-soh"},"content":" PREFIX_TELEGRAM, PREFIX_MAJOR, PREFIX_REMARK);","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":59,"author":{"gitId":"-"},"content":" editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":62,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":64,"author":{"gitId":"tohlh"},"content":" if (argMultimap.getValue(PREFIX_YEAR).isPresent()) {","lastModifiedDate":"2024-03-13"},{"lineNumber":65,"author":{"gitId":"tohlh"},"content":" editPersonDescriptor.setYear(ParserUtil.parseYear(argMultimap.getValue(PREFIX_YEAR).get()));","lastModifiedDate":"2024-03-13"},{"lineNumber":66,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":67,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"STELLA-LYE"},"content":" if (argMultimap.getValue(PREFIX_MAJOR).isPresent()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"STELLA-LYE"},"content":" editPersonDescriptor.setMajor(ParserUtil.parseMajor(argMultimap.getValue(PREFIX_MAJOR).get()));","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":71,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"tohlh"},"content":" if (argMultimap.getValue(PREFIX_TELEGRAM).isPresent()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"tohlh"},"content":" editPersonDescriptor.setTelegram(ParserUtil.parseTelegram(argMultimap.getValue(PREFIX_TELEGRAM).get()));","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"jocelyn-soh"},"content":" parseRemarkForEdit(argMultimap.getValue(PREFIX_REMARK)).ifPresent(editPersonDescriptor::setRemark);","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"doyelee0313"},"content":" parseGroupsForEdit(argMultimap.getAllValues(PREFIX_GROUP)).ifPresent(editPersonDescriptor::setGroups);","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2017-05-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":"doyelee0313"},"content":" * Parses {@code Collection\u003cString\u003e groups} into a {@code Set\u003cGroup\u003e} if {@code groups} is non-empty.","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"doyelee0313"},"content":" * If {@code groups} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"doyelee0313"},"content":" * {@code Set\u003cGroup\u003e} containing zero groups.","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":92,"author":{"gitId":"doyelee0313"},"content":" private Optional\u003cSet\u003cGroup\u003e\u003e parseGroupsForEdit(Collection\u003cString\u003e groups) throws ParseException {","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"doyelee0313"},"content":" assert groups !\u003d null;","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":95,"author":{"gitId":"doyelee0313"},"content":" if (groups.isEmpty()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":98,"author":{"gitId":"doyelee0313"},"content":" Collection\u003cString\u003e groupSet \u003d groups.size() \u003d\u003d 1 \u0026\u0026 groups.contains(\"\") ? Collections.emptySet() : groups;","lastModifiedDate":"2024-03-20"},{"lineNumber":99,"author":{"gitId":"doyelee0313"},"content":" return Optional.of(ParserUtil.parseGroups(groupSet));","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":102,"author":{"gitId":"jocelyn-soh"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"jocelyn-soh"},"content":" * Parses {@code Optional\u003cString\u003e remark} into a {@code Optional\u003cRemark\u003e}.","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"jocelyn-soh"},"content":" * If {@code remark} is empty, it will return an empty {@code Optional\u003cRemark\u003e}.","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"jocelyn-soh"},"content":" * If {@code remark} is present, it will parse it into a {@code Remark} object.","lastModifiedDate":"2024-03-19"},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":107,"author":{"gitId":"jocelyn-soh"},"content":" private Optional\u003cRemark\u003e parseRemarkForEdit(Optional\u003cString\u003e remark) throws ParseException {","lastModifiedDate":"2024-03-19"},{"lineNumber":108,"author":{"gitId":"jocelyn-soh"},"content":" requireNonNull(remark);","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":110,"author":{"gitId":"jocelyn-soh"},"content":" if (remark.isEmpty()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":111,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2024-03-19"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":113,"author":{"gitId":"jocelyn-soh"},"content":" return Optional.of(ParserUtil.parseRemark(remark.get()));","lastModifiedDate":"2024-03-19"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":116,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"doyelee0313":12,"STELLA-LYE":8,"-":74,"jocelyn-soh":12,"tohlh":10}},{"path":"src/main/java/seedu/address/logic/parser/FilterCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"STELLA-LYE"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":"import seedu.address.logic.commands.FilterCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"STELLA-LYE"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":"import seedu.address.model.group.GroupContainsKeywordsPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"STELLA-LYE"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"STELLA-LYE"},"content":" * Parses input arguments and creates a new FilterCommand object","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"STELLA-LYE"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"STELLA-LYE"},"content":"public class FilterCommandParser implements Parser\u003cFilterCommand\u003e {","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"STELLA-LYE"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"STELLA-LYE"},"content":" * Parses the given {@code String} of arguments in the context of the FilterCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"STELLA-LYE"},"content":" * and returns a FilterCommand object for execution.","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"STELLA-LYE"},"content":" * @throws ParseException if the user input does not conform the expected format where parameter is empty","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"STELLA-LYE"},"content":" * @throws ParseException if the user input does not conform the expected group naming format","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"STELLA-LYE"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"STELLA-LYE"},"content":" public FilterCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"STELLA-LYE"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"STELLA-LYE"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"STELLA-LYE"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"STELLA-LYE"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FilterCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"STELLA-LYE"},"content":" String[] groupKeywords \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"STELLA-LYE"},"content":" for (String keyword : groupKeywords) {","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"STELLA-LYE"},"content":" if (!Group.isValidGroupName(keyword)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"STELLA-LYE"},"content":" throw new ParseException(Group.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"STELLA-LYE"},"content":" return new FilterCommand(new GroupContainsKeywordsPredicate(Arrays.asList(groupKeywords)));","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"STELLA-LYE":41}},{"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":"doyelee0313"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11"},{"lineNumber":14,"author":{"gitId":"STELLA-LYE"},"content":"import seedu.address.model.person.Major;","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-02-11"},{"lineNumber":17,"author":{"gitId":"jocelyn-soh"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"tohlh"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"tohlh"},"content":"import seedu.address.model.person.Year;","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18"},{"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":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":59,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":63,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30"},{"lineNumber":64,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":65,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":66,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","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":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":72,"author":{"gitId":"STELLA-LYE"},"content":" * Parses a {@code String address} into an {@code Major}.","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":74,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":77,"author":{"gitId":"STELLA-LYE"},"content":" public static Major parseMajor(String major) throws ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"STELLA-LYE"},"content":" requireNonNull(major);","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"STELLA-LYE"},"content":" String trimmedMajor \u003d major.trim();","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"STELLA-LYE"},"content":" if (!Major.isValidMajor(trimmedMajor)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"STELLA-LYE"},"content":" throw new ParseException(Major.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":83,"author":{"gitId":"STELLA-LYE"},"content":" return new Major(trimmedMajor);","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":89,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":93,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":94,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":95,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":96,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":98,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","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":"-"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"tohlh"},"content":" * Parses a {@code String year} into an {@code Year}.","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"tohlh"},"content":" * @throws ParseException if the given {@code year} is invalid.","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"tohlh"},"content":" public static Telegram parseTelegram(String telegram) throws ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"tohlh"},"content":" requireNonNull(telegram);","lastModifiedDate":"2024-03-17"},{"lineNumber":109,"author":{"gitId":"tohlh"},"content":" String trimmedTelegram \u003d telegram.trim();","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"tohlh"},"content":" if (!Telegram.isValidTelegram(trimmedTelegram)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"tohlh"},"content":" throw new ParseException(Telegram.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-19"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"tohlh"},"content":" return new Telegram(trimmedTelegram);","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"tohlh"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":116,"author":{"gitId":"tohlh"},"content":" * Parses a {@code String year} into an {@code Year}.","lastModifiedDate":"2024-03-13"},{"lineNumber":117,"author":{"gitId":"tohlh"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-13"},{"lineNumber":118,"author":{"gitId":"tohlh"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":119,"author":{"gitId":"tohlh"},"content":" * @throws ParseException if the given {@code year} is invalid.","lastModifiedDate":"2024-03-13"},{"lineNumber":120,"author":{"gitId":"tohlh"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":121,"author":{"gitId":"tohlh"},"content":" public static Year parseYear(String year) throws ParseException {","lastModifiedDate":"2024-03-13"},{"lineNumber":122,"author":{"gitId":"tohlh"},"content":" requireNonNull(year);","lastModifiedDate":"2024-03-13"},{"lineNumber":123,"author":{"gitId":"tohlh"},"content":" String trimmedYear \u003d year.trim();","lastModifiedDate":"2024-03-13"},{"lineNumber":124,"author":{"gitId":"tohlh"},"content":" if (!Year.isValidYear(trimmedYear)) {","lastModifiedDate":"2024-03-13"},{"lineNumber":125,"author":{"gitId":"tohlh"},"content":" throw new ParseException(Year.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-13"},{"lineNumber":126,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":127,"author":{"gitId":"tohlh"},"content":" return new Year(trimmedYear);","lastModifiedDate":"2024-03-13"},{"lineNumber":128,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":129,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":130,"author":{"gitId":"jocelyn-soh"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":131,"author":{"gitId":"jocelyn-soh"},"content":" * Parses a {@code String remark} into an {@code Remark}.","lastModifiedDate":"2024-03-19"},{"lineNumber":132,"author":{"gitId":"jocelyn-soh"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-19"},{"lineNumber":133,"author":{"gitId":"jocelyn-soh"},"content":" *","lastModifiedDate":"2024-03-19"},{"lineNumber":134,"author":{"gitId":"jocelyn-soh"},"content":" * @throws ParseException if the given {@code remark} is invalid.","lastModifiedDate":"2024-03-19"},{"lineNumber":135,"author":{"gitId":"jocelyn-soh"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":136,"author":{"gitId":"jocelyn-soh"},"content":" public static Remark parseRemark(String remark) throws ParseException {","lastModifiedDate":"2024-03-19"},{"lineNumber":137,"author":{"gitId":"jocelyn-soh"},"content":" requireNonNull(remark);","lastModifiedDate":"2024-03-19"},{"lineNumber":138,"author":{"gitId":"jocelyn-soh"},"content":" String trimmedRemark \u003d remark.trim();","lastModifiedDate":"2024-03-19"},{"lineNumber":139,"author":{"gitId":"jocelyn-soh"},"content":" return new Remark(trimmedRemark);","lastModifiedDate":"2024-03-19"},{"lineNumber":140,"author":{"gitId":"jocelyn-soh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":141,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":142,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":143,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":144,"author":{"gitId":"doyelee0313"},"content":" * Parses a {@code String group} into a {@code Group}.","lastModifiedDate":"2024-03-20"},{"lineNumber":145,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":146,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":147,"author":{"gitId":"doyelee0313"},"content":" * @throws ParseException if the given {@code group} is invalid.","lastModifiedDate":"2024-03-20"},{"lineNumber":148,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":149,"author":{"gitId":"doyelee0313"},"content":" public static Group parseGroup(String group) throws ParseException {","lastModifiedDate":"2024-03-20"},{"lineNumber":150,"author":{"gitId":"doyelee0313"},"content":" requireNonNull(group);","lastModifiedDate":"2024-03-20"},{"lineNumber":151,"author":{"gitId":"doyelee0313"},"content":" String trimmedGroup \u003d group.trim();","lastModifiedDate":"2024-03-20"},{"lineNumber":152,"author":{"gitId":"doyelee0313"},"content":" if (!Group.isValidGroupName(trimmedGroup)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":153,"author":{"gitId":"doyelee0313"},"content":" throw new ParseException(Group.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-20"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":155,"author":{"gitId":"doyelee0313"},"content":" return new Group(trimmedGroup);","lastModifiedDate":"2024-03-20"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":158,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":159,"author":{"gitId":"doyelee0313"},"content":" * Parses {@code Collection\u003cString\u003e groups} into a {@code Set\u003cGroup\u003e}.","lastModifiedDate":"2024-03-20"},{"lineNumber":160,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":161,"author":{"gitId":"doyelee0313"},"content":" public static Set\u003cGroup\u003e parseGroups(Collection\u003cString\u003e groups) throws ParseException {","lastModifiedDate":"2024-03-20"},{"lineNumber":162,"author":{"gitId":"doyelee0313"},"content":" requireNonNull(groups);","lastModifiedDate":"2024-03-20"},{"lineNumber":163,"author":{"gitId":"doyelee0313"},"content":" final Set\u003cGroup\u003e groupSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-20"},{"lineNumber":164,"author":{"gitId":"doyelee0313"},"content":" for (String groupName : groups) {","lastModifiedDate":"2024-03-20"},{"lineNumber":165,"author":{"gitId":"doyelee0313"},"content":" groupSet.add(parseGroup(groupName));","lastModifiedDate":"2024-03-20"},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":167,"author":{"gitId":"doyelee0313"},"content":" return groupSet;","lastModifiedDate":"2024-03-20"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":169,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"doyelee0313":16,"STELLA-LYE":8,"-":105,"jocelyn-soh":14,"tohlh":26}},{"path":"src/main/java/seedu/address/logic/parser/Prefix.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-03-11"},{"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":"doyelee0313"},"content":" * E.g. \u0027g/\u0027 in \u0027add James g/ \"TUT04\"\u0027.","lastModifiedDate":"2024-03-20"},{"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":{"doyelee0313":1,"-":41}},{"path":"src/main/java/seedu/address/model/group/Group.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"doyelee0313"},"content":"package seedu.address.model.group;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"doyelee0313"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"doyelee0313"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"doyelee0313"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"doyelee0313"},"content":" * Represents a Group in the address book.","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"doyelee0313"},"content":" * Guarantees: immutable; name is valid as declared in {@link #isValidGroupName(String)}","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"doyelee0313"},"content":"public class Group {","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"doyelee0313"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Groups names should be in correct format with 2 digit number. \"","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"doyelee0313"},"content":" + \"EX) g/TUT04, g/LAB10, g/REC09\";","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"doyelee0313"},"content":" public static final String VALIDATION_REGEX \u003d \"^(TUT|LAB|REC)\\\\d{2}$\";","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"doyelee0313"},"content":" public final String groupName;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"doyelee0313"},"content":" * Constructs a {@code Group}.","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"doyelee0313"},"content":" * @param groupName A valid group name.","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"doyelee0313"},"content":" public Group(String groupName) {","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"doyelee0313"},"content":" requireNonNull(groupName);","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"doyelee0313"},"content":" checkArgument(isValidGroupName(groupName), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"doyelee0313"},"content":" this.groupName \u003d groupName;","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"doyelee0313"},"content":" * Returns true if a given string is a valid group name.","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"doyelee0313"},"content":" public static boolean isValidGroupName(String test) {","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"doyelee0313"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"doyelee0313"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"doyelee0313"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"doyelee0313"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"doyelee0313"},"content":" return true;","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"doyelee0313"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"doyelee0313"},"content":" if (!(other instanceof Group)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"doyelee0313"},"content":" return false;","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"doyelee0313"},"content":" Group otherGroup \u003d (Group) other;","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"doyelee0313"},"content":" return groupName.equals(otherGroup.groupName);","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"doyelee0313"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"doyelee0313"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"doyelee0313"},"content":" return groupName.hashCode();","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"doyelee0313"},"content":" * Format state as text for viewing.","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"doyelee0313"},"content":" public String toString() {","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"doyelee0313"},"content":" return \u0027[\u0027 + groupName + \u0027]\u0027;","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"doyelee0313"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"doyelee0313":63}},{"path":"src/main/java/seedu/address/model/group/GroupContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"STELLA-LYE"},"content":"package seedu.address.model.group;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":"import java.util.List;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"STELLA-LYE"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"STELLA-LYE"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"STELLA-LYE"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"STELLA-LYE"},"content":" * Tests that a {@code Person}\u0027s {@code Name} matches any of the keywords given.","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"STELLA-LYE"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"STELLA-LYE"},"content":"public class GroupContainsKeywordsPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"STELLA-LYE"},"content":" private final List\u003cGroup\u003e groups;","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"STELLA-LYE"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"STELLA-LYE"},"content":" * Returns a GroupContainsKeywordsPredicate object by taking a list of the group names.","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"STELLA-LYE"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"STELLA-LYE"},"content":" public GroupContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"STELLA-LYE"},"content":" this.groups \u003d keywords.stream().map(Group::new).collect(Collectors.toList());","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"STELLA-LYE"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"STELLA-LYE"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"STELLA-LYE"},"content":" Set\u003cGroup\u003e personGroup \u003d person.getGroups();","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"STELLA-LYE"},"content":" return groups.stream()","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"STELLA-LYE"},"content":" .anyMatch(personGroup::contains);","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"STELLA-LYE"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"STELLA-LYE"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"STELLA-LYE"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"STELLA-LYE"},"content":" return true;","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"STELLA-LYE"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"STELLA-LYE"},"content":" if (!(other instanceof GroupContainsKeywordsPredicate)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"STELLA-LYE"},"content":" return false;","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"STELLA-LYE"},"content":" GroupContainsKeywordsPredicate otherGroupContainsKeywordsPredicate \u003d (GroupContainsKeywordsPredicate) other;","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"STELLA-LYE"},"content":" return groups.equals(otherGroupContainsKeywordsPredicate.groups);","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"STELLA-LYE"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"STELLA-LYE"},"content":" public String toString() {","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"STELLA-LYE"},"content":" return new ToStringBuilder(this).add(\"groups\", groups).toString();","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"STELLA-LYE":52}},{"path":"src/main/java/seedu/address/model/person/Major.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":"STELLA-LYE"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidMajor(String)}","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":"public class Major {","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"STELLA-LYE"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Major should only consist of Computing majors, \"","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"STELLA-LYE"},"content":" + \"and it should mot be blank\";","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2018-09-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public final String value;","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":"STELLA-LYE"},"content":" * Constructs an {@code Major}.","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"STELLA-LYE"},"content":" * @param major A valid address.","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"STELLA-LYE"},"content":" public Major(String major) {","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"STELLA-LYE"},"content":" requireNonNull(major);","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"STELLA-LYE"},"content":" checkArgument(isValidMajor(major), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"STELLA-LYE"},"content":" value \u003d major;","lastModifiedDate":"2024-03-17"},{"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 email.","lastModifiedDate":"2018-04-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"STELLA-LYE"},"content":" public static boolean isValidMajor(String test) {","lastModifiedDate":"2024-03-17"},{"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":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24"},{"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 boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return true;","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":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"STELLA-LYE"},"content":" if (!(other instanceof Major)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return false;","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":"STELLA-LYE"},"content":" Major otherMajor \u003d (Major) other;","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"STELLA-LYE"},"content":" return value.equals(otherMajor.value);","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"STELLA-LYE":14,"-":52}},{"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":"jocelyn-soh"},"content":" .anyMatch(keyword -\u003e StringUtil.containsStartingWordIgnoreCase(person.getName().fullName, keyword));","lastModifiedDate":"2024-03-13"},{"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":{"-":43,"jocelyn-soh":1}},{"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":"doyelee0313"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"STELLA-LYE"},"content":" * Represents a Person in the major book.","lastModifiedDate":"2024-03-17"},{"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":"-"},"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":"tohlh"},"content":" private final Year year;","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"tohlh"},"content":" private final Telegram telegram;","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19"},{"lineNumber":27,"author":{"gitId":"STELLA-LYE"},"content":" private final Major major;","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"jocelyn-soh"},"content":" private final Remark remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"doyelee0313"},"content":" private final Set\u003cGroup\u003e groups \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-20"},{"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":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"jocelyn-soh"},"content":" public Person(Name name, Phone phone, Email email, Year year, Telegram telegram, Major major, Remark remark,","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"doyelee0313"},"content":" Set\u003cGroup\u003e groups) {","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"doyelee0313"},"content":" requireAllNonNull(name, phone, email, major, remark, groups);","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20"},{"lineNumber":42,"author":{"gitId":"tohlh"},"content":" this.year \u003d year;","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"STELLA-LYE"},"content":" this.major \u003d major;","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"tohlh"},"content":" this.telegram \u003d telegram;","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"jocelyn-soh"},"content":" this.remark \u003d remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"doyelee0313"},"content":" this.groups.addAll(groups);","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return email;","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":"STELLA-LYE"},"content":" public Major getMajor() {","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"STELLA-LYE"},"content":" return major;","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":64,"author":{"gitId":"tohlh"},"content":" public Year getYear() {","lastModifiedDate":"2024-03-13"},{"lineNumber":65,"author":{"gitId":"tohlh"},"content":" return year;","lastModifiedDate":"2024-03-13"},{"lineNumber":66,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":67,"author":{"gitId":"tohlh"},"content":" public Telegram getTelegram() {","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"tohlh"},"content":" return telegram;","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"jocelyn-soh"},"content":" public Remark getRemark() {","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"jocelyn-soh"},"content":" return remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07"},{"lineNumber":75,"author":{"gitId":"doyelee0313"},"content":" * Returns an immutable group set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07"},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07"},{"lineNumber":78,"author":{"gitId":"doyelee0313"},"content":" public Set\u003cGroup\u003e getGroups() {","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"doyelee0313"},"content":" return Collections.unmodifiableSet(groups);","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":82,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":" return true;","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":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2020-12-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","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":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":102,"author":{"gitId":"-"},"content":" return true;","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":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10"},{"lineNumber":107,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":110,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10"},{"lineNumber":111,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":114,"author":{"gitId":"tohlh"},"content":" \u0026\u0026 year.equals(otherPerson.year)","lastModifiedDate":"2024-03-19"},{"lineNumber":115,"author":{"gitId":"tohlh"},"content":" \u0026\u0026 telegram.equals(otherPerson.telegram)","lastModifiedDate":"2024-03-19"},{"lineNumber":116,"author":{"gitId":"STELLA-LYE"},"content":" \u0026\u0026 major.equals(otherPerson.major)","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"jocelyn-soh"},"content":" \u0026\u0026 remark.equals(otherPerson.remark)","lastModifiedDate":"2024-03-19"},{"lineNumber":118,"author":{"gitId":"doyelee0313"},"content":" \u0026\u0026 groups.equals(otherPerson.groups);","lastModifiedDate":"2024-03-20"},{"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 int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":123,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":124,"author":{"gitId":"doyelee0313"},"content":" return Objects.hash(name, phone, email, year, telegram, major, remark, groups);","lastModifiedDate":"2024-03-20"},{"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 String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":129,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":133,"author":{"gitId":"tohlh"},"content":" .add(\"year\", year)","lastModifiedDate":"2024-03-13"},{"lineNumber":134,"author":{"gitId":"tohlh"},"content":" .add(\"telegram\", telegram)","lastModifiedDate":"2024-03-17"},{"lineNumber":135,"author":{"gitId":"tohlh"},"content":" .add(\"major\", major)","lastModifiedDate":"2024-03-19"},{"lineNumber":136,"author":{"gitId":"jocelyn-soh"},"content":" .add(\"remark\", remark)","lastModifiedDate":"2024-03-19"},{"lineNumber":137,"author":{"gitId":"doyelee0313"},"content":" .add(\"groups\", groups)","lastModifiedDate":"2024-03-20"},{"lineNumber":138,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":141,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"doyelee0313":11,"STELLA-LYE":8,"-":100,"jocelyn-soh":7,"tohlh":15}},{"path":"src/main/java/seedu/address/model/person/Remark.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jocelyn-soh"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"jocelyn-soh"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"jocelyn-soh"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"jocelyn-soh"},"content":" * Represents a remark for a Person in the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"jocelyn-soh"},"content":" * Guarantees: immutable; is always valid","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"jocelyn-soh"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"jocelyn-soh"},"content":"public class Remark {","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"jocelyn-soh"},"content":" public final String value;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"jocelyn-soh"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"jocelyn-soh"},"content":" * Constructs a {@code Remark}.","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"jocelyn-soh"},"content":" * If the given remark is null or empty, an empty string will be used.","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"jocelyn-soh"},"content":" *","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"jocelyn-soh"},"content":" * @param remark A valid remark, or null.","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"jocelyn-soh"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"jocelyn-soh"},"content":" public Remark(String remark) {","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"jocelyn-soh"},"content":" requireNonNull(remark);","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"jocelyn-soh"},"content":" this.value \u003d remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"jocelyn-soh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"jocelyn-soh"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"jocelyn-soh"},"content":" public String toString() {","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"jocelyn-soh"},"content":" return value;","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"jocelyn-soh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"jocelyn-soh"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"jocelyn-soh"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"jocelyn-soh"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"jocelyn-soh"},"content":" return true;","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"jocelyn-soh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"jocelyn-soh"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"jocelyn-soh"},"content":" if (!(other instanceof Remark)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"jocelyn-soh"},"content":" return false;","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"jocelyn-soh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"jocelyn-soh"},"content":" Remark otherRemark \u003d (Remark) other;","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"jocelyn-soh"},"content":" return value.equals(otherRemark.value);","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"jocelyn-soh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"jocelyn-soh"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"jocelyn-soh"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"jocelyn-soh"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"jocelyn-soh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"jocelyn-soh"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"jocelyn-soh":46}},{"path":"src/main/java/seedu/address/model/person/Telegram.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"tohlh"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"tohlh"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"tohlh"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"tohlh"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"tohlh"},"content":" * Represents a Person\u0027s Telegram handle in the address book.","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"tohlh"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidTelegram(String)}","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"tohlh"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"tohlh"},"content":"public class Telegram {","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"tohlh"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"tohlh"},"content":" \"Telegram handles should be alphanumeric and containing underscores, \"","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"tohlh"},"content":" + \"and must be at least 3 characters long.\";","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"tohlh"},"content":" public static final String VALIDATION_REGEX \u003d \"^[a-zA-Z0-9_]{3,}$\";","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"tohlh"},"content":" public final String value;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"tohlh"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"tohlh"},"content":" * Constructs a {@code Handle}.","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"tohlh"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"tohlh"},"content":" * @param handle A valid Telegram handle.","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"tohlh"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"tohlh"},"content":" public Telegram(String handle) {","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"tohlh"},"content":" requireNonNull(handle);","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"tohlh"},"content":" checkArgument(isValidTelegram(handle), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"tohlh"},"content":" value \u003d handle;","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"tohlh"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"tohlh"},"content":" * Returns true if a given string is a valid phone number.","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"tohlh"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"tohlh"},"content":" public static boolean isValidTelegram(String test) {","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"tohlh"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"tohlh"},"content":" public String toString() {","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"tohlh"},"content":" return value;","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"tohlh"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"tohlh"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"tohlh"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"tohlh"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"tohlh"},"content":" if (!(other instanceof Telegram)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"tohlh"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"tohlh"},"content":" Telegram otherTelegram \u003d (Telegram) other;","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"tohlh"},"content":" return value.equals(otherTelegram.value);","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"tohlh"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"tohlh"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"tohlh"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"tohlh":62}},{"path":"src/main/java/seedu/address/model/person/Year.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"tohlh"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"tohlh"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"tohlh"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"tohlh"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"tohlh"},"content":" * Represents a Person\u0027s year in the address book.","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"tohlh"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidYear(String)}","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"tohlh"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"tohlh"},"content":"public class Year {","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"tohlh"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"tohlh"},"content":" \"Year should only contain a single digit ranging from 1 - 5, and it should not be blank\";","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"tohlh"},"content":" public static final String VALIDATION_REGEX \u003d \"[1-5]\";","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"tohlh"},"content":" public final String value;","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"tohlh"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"tohlh"},"content":" * Constructs a {@code Year}.","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"tohlh"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"tohlh"},"content":" * @param value A valid year.","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"tohlh"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"tohlh"},"content":" public Year(String value) {","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"tohlh"},"content":" requireNonNull(value);","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"tohlh"},"content":" checkArgument(isValidYear(value), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"tohlh"},"content":" this.value \u003d value;","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"tohlh"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"tohlh"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"tohlh"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"tohlh"},"content":" public static boolean isValidYear(String test) {","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"tohlh"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"tohlh"},"content":" public String toString() {","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"tohlh"},"content":" return value;","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"tohlh"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"tohlh"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"tohlh"},"content":" return true;","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"tohlh"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"tohlh"},"content":" if (!(other instanceof Year)) {","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"tohlh"},"content":" return false;","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"tohlh"},"content":" Year otherYear \u003d (Year) other;","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"tohlh"},"content":" return value.equals(otherYear.value);","lastModifiedDate":"2024-03-13"},{"lineNumber":56,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"tohlh"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-13"},{"lineNumber":60,"author":{"gitId":"tohlh"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-13"},{"lineNumber":61,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":62,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":63,"author":{"gitId":"tohlh"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"tohlh":63}},{"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":"doyelee0313"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20"},{"lineNumber":11,"author":{"gitId":"STELLA-LYE"},"content":"import seedu.address.model.person.Major;","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-20"},{"lineNumber":15,"author":{"gitId":"jocelyn-soh"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"tohlh"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"tohlh"},"content":"import seedu.address.model.person.Year;","lastModifiedDate":"2024-03-13"},{"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":"-"},"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":"-"},"content":" new Person(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":26,"author":{"gitId":"tohlh"},"content":" new Year(\"1\"), new Telegram(\"alexyeoh1\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"STELLA-LYE"},"content":" new Major(\"Computer Science\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"jocelyn-soh"},"content":" new Remark(\"Very quiet\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"doyelee0313"},"content":" getGroupSet(\"TUT04\")),","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":" new Person(new Name(\"Bernice Yu\"), new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":31,"author":{"gitId":"tohlh"},"content":" new Year(\"1\"), new Telegram(\"berniceyu123\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"STELLA-LYE"},"content":" new Major(\"Computer Science\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"jocelyn-soh"},"content":" new Remark(\"Outspoken\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"doyelee0313"},"content":" getGroupSet(\"TUT04\", \"LAB05\")),","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":36,"author":{"gitId":"tohlh"},"content":" new Year(\"2\"), new Telegram(\"charlotte7\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"STELLA-LYE"},"content":" new Major(\"Computer Science\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"jocelyn-soh"},"content":" new Remark(\"Weak technical foundation\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"doyelee0313"},"content":" getGroupSet(\"TUT04\")),","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":" new Person(new Name(\"David Li\"), new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":41,"author":{"gitId":"tohlh"},"content":" new Year(\"4\"), new Telegram(\"davidli456\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"STELLA-LYE"},"content":" new Major(\"Business Analytics\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"jocelyn-soh"},"content":" new Remark(\"Second time taking the course\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"doyelee0313"},"content":" getGroupSet(\"TUT04\")),","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"-"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":46,"author":{"gitId":"tohlh"},"content":" new Year(\"3\"), new Telegram(\"irfan123\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"STELLA-LYE"},"content":" new Major(\"Computer Engineering\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"jocelyn-soh"},"content":" new Remark(\"Hardworking\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"doyelee0313"},"content":" getGroupSet(\"TUT04\")),","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":51,"author":{"gitId":"tohlh"},"content":" new Year(\"5\"), new Telegram(\"roy5\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"STELLA-LYE"},"content":" new Major(\"Computer Engineering\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"jocelyn-soh"},"content":" new Remark(\"Always submits problem sets late\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"doyelee0313"},"content":" getGroupSet(\"LAB05\"))","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07"},{"lineNumber":60,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14"},{"lineNumber":67,"author":{"gitId":"doyelee0313"},"content":" * Returns a group set containing the list of strings given.","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14"},{"lineNumber":69,"author":{"gitId":"doyelee0313"},"content":" public static Set\u003cGroup\u003e getGroupSet(String... strings) {","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21"},{"lineNumber":71,"author":{"gitId":"doyelee0313"},"content":" .map(Group::new)","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"doyelee0313":10,"STELLA-LYE":7,"-":43,"jocelyn-soh":7,"tohlh":8}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedGroup.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"doyelee0313"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"doyelee0313"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"doyelee0313"},"content":"import com.fasterxml.jackson.annotation.JsonValue;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"doyelee0313"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"doyelee0313"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"doyelee0313"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"doyelee0313"},"content":" * Jackson-friendly version of {@link Group}.","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"doyelee0313"},"content":"class JsonAdaptedGroup {","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"doyelee0313"},"content":" private final String groupName;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"doyelee0313"},"content":" * Constructs a {@code JsonAdaptedGroup} with the given {@code groupName}.","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"doyelee0313"},"content":" @JsonCreator","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"doyelee0313"},"content":" public JsonAdaptedGroup(String groupName) {","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"doyelee0313"},"content":" this.groupName \u003d groupName;","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"doyelee0313"},"content":" * Converts a given {@code Group} into this class for Jackson use.","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"doyelee0313"},"content":" public JsonAdaptedGroup(Group source) {","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"doyelee0313"},"content":" groupName \u003d source.groupName;","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"doyelee0313"},"content":" @JsonValue","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"doyelee0313"},"content":" public String getGroupName() {","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"doyelee0313"},"content":" return groupName;","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"doyelee0313"},"content":" * Converts this Jackson-friendly adapted group object into the model\u0027s {@code Group} object.","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"doyelee0313"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted group.","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"doyelee0313"},"content":" public Group toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"doyelee0313"},"content":" if (!Group.isValidGroupName(groupName)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"doyelee0313"},"content":" throw new IllegalValueException(Group.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"doyelee0313"},"content":" return new Group(groupName);","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"doyelee0313"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"doyelee0313":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":"-"},"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":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"doyelee0313"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"STELLA-LYE"},"content":"import seedu.address.model.person.Major;","lastModifiedDate":"2024-03-18"},{"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":"jocelyn-soh"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"tohlh"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"tohlh"},"content":"import seedu.address.model.person.Year;","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"tohlh"},"content":" private final String year;","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"STELLA-LYE"},"content":" private final String major;","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"tohlh"},"content":" private final String telegram;","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"jocelyn-soh"},"content":" private final String remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"doyelee0313"},"content":" private final List\u003cJsonAdaptedGroup\u003e groups \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"tohlh"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"year\") String year,","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"STELLA-LYE"},"content":" @JsonProperty(\"telegram\") String telegram, @JsonProperty(\"major\") String major,","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"doyelee0313"},"content":" @JsonProperty(\"remark\") String remark, @JsonProperty(\"groups\") List\u003cJsonAdaptedGroup\u003e groups) {","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-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":"tohlh"},"content":" this.year \u003d year;","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"STELLA-LYE"},"content":" this.major \u003d major;","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"tohlh"},"content":" this.telegram \u003d telegram;","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"jocelyn-soh"},"content":" this.remark \u003d remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"doyelee0313"},"content":" if (groups !\u003d null) {","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"doyelee0313"},"content":" this.groups.addAll(groups);","lastModifiedDate":"2024-03-20"},{"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":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"tohlh"},"content":" year \u003d source.getYear().value;","lastModifiedDate":"2024-03-13"},{"lineNumber":67,"author":{"gitId":"STELLA-LYE"},"content":" major \u003d source.getMajor().value;","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"tohlh"},"content":" telegram \u003d source.getTelegram().value;","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"jocelyn-soh"},"content":" remark \u003d source.getRemark().value;","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"doyelee0313"},"content":" groups.addAll(source.getGroups().stream()","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"doyelee0313"},"content":" .map(JsonAdaptedGroup::new)","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","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":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"doyelee0313"},"content":" final List\u003cGroup\u003e personGroups \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"doyelee0313"},"content":" for (JsonAdaptedGroup group : groups) {","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"doyelee0313"},"content":" personGroups.add(group.toModelType());","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"tohlh"},"content":" if (year \u003d\u003d null) {","lastModifiedDate":"2024-03-13"},{"lineNumber":111,"author":{"gitId":"tohlh"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Year.class.getSimpleName()));","lastModifiedDate":"2024-03-15"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":113,"author":{"gitId":"tohlh"},"content":" if (!Year.isValidYear(year)) {","lastModifiedDate":"2024-03-13"},{"lineNumber":114,"author":{"gitId":"tohlh"},"content":" throw new IllegalValueException(Year.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":116,"author":{"gitId":"tohlh"},"content":" final Year modelYear \u003d new Year(year);","lastModifiedDate":"2024-03-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":118,"author":{"gitId":"tohlh"},"content":" if (telegram \u003d\u003d null) {","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"tohlh"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"tohlh"},"content":" Telegram.class.getSimpleName()));","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"tohlh"},"content":" if (!Telegram.isValidTelegram(telegram)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"tohlh"},"content":" throw new IllegalValueException(Telegram.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"tohlh"},"content":" final Telegram modelTelegram \u003d new Telegram(telegram);","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"STELLA-LYE"},"content":" if (major \u003d\u003d null) {","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"STELLA-LYE"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Major.class.getSimpleName()));","lastModifiedDate":"2024-03-17"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":130,"author":{"gitId":"STELLA-LYE"},"content":" if (!Major.isValidMajor(major)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"STELLA-LYE"},"content":" throw new IllegalValueException(Major.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":133,"author":{"gitId":"STELLA-LYE"},"content":" final Major modelMajor \u003d new Major(major);","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":135,"author":{"gitId":"jocelyn-soh"},"content":" final Remark modelRemark \u003d new Remark(remark);","lastModifiedDate":"2024-03-19"},{"lineNumber":136,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":137,"author":{"gitId":"doyelee0313"},"content":" final Set\u003cGroup\u003e modelGroups \u003d new HashSet\u003c\u003e(personGroups);","lastModifiedDate":"2024-03-20"},{"lineNumber":138,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":139,"author":{"gitId":"jocelyn-soh"},"content":" return new Person(modelName, modelPhone, modelEmail, modelYear, modelTelegram, modelMajor, modelRemark,","lastModifiedDate":"2024-03-19"},{"lineNumber":140,"author":{"gitId":"doyelee0313"},"content":" modelGroups);","lastModifiedDate":"2024-03-20"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":143,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"doyelee0313":12,"STELLA-LYE":11,"-":90,"jocelyn-soh":7,"tohlh":23}},{"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":"doyelee0313"},"content":" public static final String USERGUIDE_URL \u003d \"https://ay2324s2-cs2103t-w10-4.github.io/tp/UserGuide.html#quick-start\";","lastModifiedDate":"2024-03-11"},{"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":{"doyelee0313":1,"-":101}},{"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":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"jocelyn-soh"},"content":" private Label year;","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"jocelyn-soh"},"content":" @FXML","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"STELLA-LYE"},"content":" private Label major;","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":44,"author":{"gitId":"jocelyn-soh"},"content":" private Label telegram;","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"jocelyn-soh"},"content":" @FXML","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"jocelyn-soh"},"content":" private Label remark;","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":48,"author":{"gitId":"doyelee0313"},"content":" private FlowPane groups;","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":60,"author":{"gitId":"jocelyn-soh"},"content":" year.setText(\"Year \" + person.getYear().value);","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"jocelyn-soh"},"content":" major.setText(person.getMajor().value);","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"jocelyn-soh"},"content":" telegram.setText(\"@\" + person.getTelegram().value);","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"jocelyn-soh"},"content":" remark.setText(person.getRemark().value);","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"doyelee0313"},"content":" person.getGroups().stream()","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"doyelee0313"},"content":" .sorted(Comparator.comparing(group -\u003e group.groupName))","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"doyelee0313"},"content":" .forEach(group -\u003e groups.getChildren().add(new Label(group.groupName)));","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"doyelee0313":4,"STELLA-LYE":1,"-":54,"jocelyn-soh":9}},{"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":"STELLA-LYE"},"content":" -fx-background-color: derive(#104A53, 20%);","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":" background-color: #FFFFFF; /* Used in the default.html file */","lastModifiedDate":"2024-03-21"},{"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":"STELLA-LYE"},"content":" -fx-base: #FFFFFF;","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"STELLA-LYE"},"content":" -fx-control-inner-background: #104A53;","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"STELLA-LYE"},"content":" -fx-background-color: #104A53;","lastModifiedDate":"2024-03-21"},{"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":"STELLA-LYE"},"content":" -fx-background-color: derive(#E6ECF0, 20%);","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"STELLA-LYE"},"content":" -fx-border-color: transparent transparent transparent #FFFFFF;","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"STELLA-LYE"},"content":" -fx-border-insets: 4 4 4 4;","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":".split-pane {","lastModifiedDate":"2016-08-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":88,"author":{"gitId":"STELLA-LYE"},"content":" -fx-background-color: derive(#104A53, 20%);","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"STELLA-LYE"},"content":" -fx-border-insets: 4 4 4 4;","lastModifiedDate":"2024-03-21"},{"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":"STELLA-LYE"},"content":" -fx-padding: 5;","lastModifiedDate":"2024-03-21"},{"lineNumber":95,"author":{"gitId":"STELLA-LYE"},"content":" -fx-background-color: derive(#104A53, 20%);","lastModifiedDate":"2024-03-21"},{"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":"STELLA-LYE"},"content":" -fx-padding: 4px;","lastModifiedDate":"2024-03-21"},{"lineNumber":102,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":".list-cell:filled:even {","lastModifiedDate":"2017-03-02"},{"lineNumber":105,"author":{"gitId":"STELLA-LYE"},"content":" -fx-background-color: #B0EDE2;","lastModifiedDate":"2024-03-21"},{"lineNumber":106,"author":{"gitId":"STELLA-LYE"},"content":" -fx-background-radius: 20px;","lastModifiedDate":"2024-03-21"},{"lineNumber":107,"author":{"gitId":"STELLA-LYE"},"content":" -fx-background-insets: 4 0 4 0;","lastModifiedDate":"2024-03-21"},{"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":"STELLA-LYE"},"content":" -fx-background-color: #B0EDE2;","lastModifiedDate":"2024-03-21"},{"lineNumber":112,"author":{"gitId":"STELLA-LYE"},"content":" -fx-background-radius: 20px;","lastModifiedDate":"2024-03-21"},{"lineNumber":113,"author":{"gitId":"STELLA-LYE"},"content":" -fx-background-insets: 4 0 4 0;","lastModifiedDate":"2024-03-21"},{"lineNumber":114,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":116,"author":{"gitId":"-"},"content":".list-cell:filled:selected {","lastModifiedDate":"2017-03-02"},{"lineNumber":117,"author":{"gitId":"STELLA-LYE"},"content":" -fx-background-color: #F9F0D2;","lastModifiedDate":"2024-03-21"},{"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":"STELLA-LYE"},"content":" -fx-border-width: 0;","lastModifiedDate":"2024-03-21"},{"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":"STELLA-LYE"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-21"},{"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":"-"},"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":"-"},"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":"-"},"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":"STELLA-LYE"},"content":" -fx-background-color: derive(#104A53, 20%);","lastModifiedDate":"2024-03-21"},{"lineNumber":143,"author":{"gitId":"STELLA-LYE"},"content":" -fx-border-insets: 10 10 10 10;","lastModifiedDate":"2024-03-21"},{"lineNumber":144,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":146,"author":{"gitId":"-"},"content":".pane-with-border {","lastModifiedDate":"2017-05-15"},{"lineNumber":147,"author":{"gitId":"STELLA-LYE"},"content":" -fx-background-color: derive(#104A53, 20%);","lastModifiedDate":"2024-03-21"},{"lineNumber":148,"author":{"gitId":"STELLA-LYE"},"content":" -fx-border-color: derive(#104A53, 10%);","lastModifiedDate":"2024-03-21"},{"lineNumber":149,"author":{"gitId":"-"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2017-05-09"},{"lineNumber":150,"author":{"gitId":"STELLA-LYE"},"content":" -fx-border-radius: 2px;","lastModifiedDate":"2024-03-21"},{"lineNumber":151,"author":{"gitId":"STELLA-LYE"},"content":" -fx-background-radius: 2px;","lastModifiedDate":"2024-03-21"},{"lineNumber":152,"author":{"gitId":"STELLA-LYE"},"content":" -fx-border-insets: 4 4 4 4;","lastModifiedDate":"2024-03-21"},{"lineNumber":153,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":155,"author":{"gitId":"-"},"content":".status-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":156,"author":{"gitId":"STELLA-LYE"},"content":" -fx-background-color: #104A53;","lastModifiedDate":"2024-03-21"},{"lineNumber":157,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":159,"author":{"gitId":"-"},"content":".result-display {","lastModifiedDate":"2016-09-14"},{"lineNumber":160,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2017-03-02"},{"lineNumber":161,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":163,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":164,"author":{"gitId":"STELLA-LYE"},"content":" -fx-border-insets: 10 10 10 10;","lastModifiedDate":"2024-03-21"},{"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":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"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":"STELLA-LYE"},"content":" -fx-background-color: derive(#104A53, 30%);","lastModifiedDate":"2024-03-21"},{"lineNumber":180,"author":{"gitId":"STELLA-LYE"},"content":" -fx-border-color: derive(#104A53, 25%);","lastModifiedDate":"2024-03-21"},{"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":"STELLA-LYE"},"content":" -fx-text-fill: #104A53;","lastModifiedDate":"2024-03-21"},{"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":"STELLA-LYE"},"content":" -fx-background-color: derive(#104A53, 30%);","lastModifiedDate":"2024-03-21"},{"lineNumber":190,"author":{"gitId":"STELLA-LYE"},"content":" -fx-border-color: derive(#104A53, 30%);","lastModifiedDate":"2024-03-21"},{"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":"STELLA-LYE"},"content":" -fx-background-color: derive(#104A53, 30%);","lastModifiedDate":"2024-03-21"},{"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":"STELLA-LYE"},"content":" -fx-background-color: derive(#104A53, 50%);","lastModifiedDate":"2024-03-21"},{"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":"-"},"content":" -fx-text-fill: white;","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-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":207,"author":{"gitId":"STELLA-LYE"},"content":" -fx-background-color: derive(#FFFFFF, 20%);","lastModifiedDate":"2024-03-21"},{"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":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"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":"-"},"content":" -fx-background-color: black;","lastModifiedDate":"2016-08-08"},{"lineNumber":219,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":221,"author":{"gitId":"-"},"content":"/*","lastModifiedDate":"2016-08-08"},{"lineNumber":222,"author":{"gitId":"-"},"content":" * Metro style Push Button","lastModifiedDate":"2016-08-08"},{"lineNumber":223,"author":{"gitId":"-"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2016-08-08"},{"lineNumber":224,"author":{"gitId":"-"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2016-08-08"},{"lineNumber":225,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":226,"author":{"gitId":"-"},"content":".button {","lastModifiedDate":"2016-08-08"},{"lineNumber":227,"author":{"gitId":"-"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2016-08-08"},{"lineNumber":228,"author":{"gitId":"-"},"content":" -fx-border-color: #e2e2e2;","lastModifiedDate":"2016-08-08"},{"lineNumber":229,"author":{"gitId":"-"},"content":" -fx-border-width: 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":230,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":231,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":232,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2022-01-13"},{"lineNumber":233,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":234,"author":{"gitId":"-"},"content":" -fx-text-fill: #d8d8d8;","lastModifiedDate":"2016-08-08"},{"lineNumber":235,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":236,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":238,"author":{"gitId":"-"},"content":".button:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":239,"author":{"gitId":"-"},"content":" -fx-background-color: #3a3a3a;","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:pressed, .button:default:hover:pressed {","lastModifiedDate":"2016-08-08"},{"lineNumber":243,"author":{"gitId":"-"},"content":" -fx-background-color: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":244,"author":{"gitId":"-"},"content":" -fx-text-fill: #1d1d1d;","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":".button:focused {","lastModifiedDate":"2016-08-08"},{"lineNumber":248,"author":{"gitId":"-"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2016-08-08"},{"lineNumber":249,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":250,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08"},{"lineNumber":251,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":252,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","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:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08"},{"lineNumber":256,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08"},{"lineNumber":257,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":258,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","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 {","lastModifiedDate":"2016-08-08"},{"lineNumber":262,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":263,"author":{"gitId":"-"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2016-08-08"},{"lineNumber":264,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":266,"author":{"gitId":"-"},"content":".button:default:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":267,"author":{"gitId":"-"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2016-08-08"},{"lineNumber":268,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":269,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":270,"author":{"gitId":"-"},"content":".dialog-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":271,"author":{"gitId":"STELLA-LYE"},"content":" -fx-background-color: #FFFFFF;","lastModifiedDate":"2024-03-21"},{"lineNumber":272,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":274,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2016-08-08"},{"lineNumber":275,"author":{"gitId":"STELLA-LYE"},"content":" -fx-background-color: #FFFFFF;","lastModifiedDate":"2024-03-21"},{"lineNumber":276,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":278,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2016-08-08"},{"lineNumber":279,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08"},{"lineNumber":280,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","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":".dialog-pane:header *.header-panel {","lastModifiedDate":"2016-08-08"},{"lineNumber":285,"author":{"gitId":"STELLA-LYE"},"content":" -fx-background-color: derive(#FFFFFF, 25%);","lastModifiedDate":"2024-03-21"},{"lineNumber":286,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":288,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2016-08-08"},{"lineNumber":289,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08"},{"lineNumber":290,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08"},{"lineNumber":291,"author":{"gitId":"-"},"content":" -fx-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":292,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":293,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":294,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":295,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02"},{"lineNumber":296,"author":{"gitId":"STELLA-LYE"},"content":" -fx-background-color: derive(#FFFFFF, 20%);","lastModifiedDate":"2024-03-21"},{"lineNumber":297,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":298,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":299,"author":{"gitId":"-"},"content":".scroll-bar .thumb {","lastModifiedDate":"2016-08-15"},{"lineNumber":300,"author":{"gitId":"STELLA-LYE"},"content":" -fx-background-color: derive(#C4C4C4, 50%);","lastModifiedDate":"2024-03-21"},{"lineNumber":301,"author":{"gitId":"-"},"content":" -fx-background-insets: 3;","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-button, .scroll-bar .decrement-button {","lastModifiedDate":"2016-08-15"},{"lineNumber":305,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-15"},{"lineNumber":306,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-15"},{"lineNumber":307,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":308,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":309,"author":{"gitId":"-"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2016-08-15"},{"lineNumber":310,"author":{"gitId":"-"},"content":" -fx-shape: \" \";","lastModifiedDate":"2016-08-15"},{"lineNumber":311,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":312,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":313,"author":{"gitId":"-"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":314,"author":{"gitId":"STELLA-LYE"},"content":" -fx-padding: 1 6 1 6;","lastModifiedDate":"2024-03-21"},{"lineNumber":315,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":316,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":317,"author":{"gitId":"-"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":318,"author":{"gitId":"-"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2016-08-18"},{"lineNumber":319,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":320,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":321,"author":{"gitId":"-"},"content":"#cardPane {","lastModifiedDate":"2016-08-08"},{"lineNumber":322,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":323,"author":{"gitId":"-"},"content":" -fx-border-width: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":324,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":326,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08"},{"lineNumber":327,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08"},{"lineNumber":328,"author":{"gitId":"-"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2016-08-08"},{"lineNumber":329,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":331,"author":{"gitId":"-"},"content":"#commandTextField {","lastModifiedDate":"2017-03-02"},{"lineNumber":332,"author":{"gitId":"STELLA-LYE"},"content":" -fx-background-color: #FFFFFF;","lastModifiedDate":"2024-03-21"},{"lineNumber":333,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":334,"author":{"gitId":"-"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":335,"author":{"gitId":"STELLA-LYE"},"content":" -fx-border-width: 0;","lastModifiedDate":"2024-03-21"},{"lineNumber":336,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":337,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":338,"author":{"gitId":"STELLA-LYE"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-21"},{"lineNumber":339,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":340,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":341,"author":{"gitId":"-"},"content":"#filterField, #personListPanel, #personWebpage {","lastModifiedDate":"2016-08-15"},{"lineNumber":342,"author":{"gitId":"-"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2016-08-15"},{"lineNumber":343,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":345,"author":{"gitId":"STELLA-LYE"},"content":"#resultDisplay {","lastModifiedDate":"2024-03-21"},{"lineNumber":346,"author":{"gitId":"STELLA-LYE"},"content":" -fx-background-color: #104A53;","lastModifiedDate":"2024-03-21"},{"lineNumber":347,"author":{"gitId":"STELLA-LYE"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-21"},{"lineNumber":348,"author":{"gitId":"STELLA-LYE"},"content":" -fx-background-radius: 1px;","lastModifiedDate":"2024-03-21"},{"lineNumber":349,"author":{"gitId":"STELLA-LYE"},"content":" -fx-border-radius: 2px;","lastModifiedDate":"2024-03-21"},{"lineNumber":350,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":351,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":352,"author":{"gitId":"-"},"content":"#resultDisplay .content {","lastModifiedDate":"2017-03-02"},{"lineNumber":353,"author":{"gitId":"STELLA-LYE"},"content":" -fx-background-color: derive(#D4FBEF, 0%);","lastModifiedDate":"2024-03-21"},{"lineNumber":354,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":355,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":356,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":357,"author":{"gitId":"doyelee0313"},"content":"#groups {","lastModifiedDate":"2024-03-20"},{"lineNumber":358,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2016-12-18"},{"lineNumber":359,"author":{"gitId":"-"},"content":" -fx-vgap: 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":360,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":361,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":362,"author":{"gitId":"doyelee0313"},"content":"#groups .label {","lastModifiedDate":"2024-03-20"},{"lineNumber":363,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-12-18"},{"lineNumber":364,"author":{"gitId":"STELLA-LYE"},"content":" -fx-background-color: #104A53;","lastModifiedDate":"2024-03-21"},{"lineNumber":365,"author":{"gitId":"STELLA-LYE"},"content":" -fx-padding: 2 4 2 4;","lastModifiedDate":"2024-03-21"},{"lineNumber":366,"author":{"gitId":"STELLA-LYE"},"content":" -fx-border-radius: 1px;","lastModifiedDate":"2024-03-21"},{"lineNumber":367,"author":{"gitId":"STELLA-LYE"},"content":" -fx-background-radius: 1px;","lastModifiedDate":"2024-03-21"},{"lineNumber":368,"author":{"gitId":"STELLA-LYE"},"content":" -fx-font-size: 11;","lastModifiedDate":"2024-03-21"},{"lineNumber":369,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":370,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":371,"author":{"gitId":"STELLA-LYE"},"content":"#personName {","lastModifiedDate":"2024-03-21"},{"lineNumber":372,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2024-03-21"},{"lineNumber":373,"author":{"gitId":"-"},"content":" -fx-vgap: 3;","lastModifiedDate":"2024-03-21"},{"lineNumber":374,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":375,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":376,"author":{"gitId":"STELLA-LYE"},"content":"#personName .label {","lastModifiedDate":"2024-03-21"},{"lineNumber":377,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-21"},{"lineNumber":378,"author":{"gitId":"STELLA-LYE"},"content":" -fx-background-color: #104A53;","lastModifiedDate":"2024-03-21"},{"lineNumber":379,"author":{"gitId":"STELLA-LYE"},"content":" -fx-padding: 2 4 2 4;","lastModifiedDate":"2024-03-21"},{"lineNumber":380,"author":{"gitId":"STELLA-LYE"},"content":" -fx-border-radius: 10px;","lastModifiedDate":"2024-03-21"},{"lineNumber":381,"author":{"gitId":"STELLA-LYE"},"content":" -fx-background-radius: 10px;","lastModifiedDate":"2024-03-21"},{"lineNumber":382,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2016-12-18"},{"lineNumber":383,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":384,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":385,"author":{"gitId":"STELLA-LYE"},"content":"#personListTitle, #groupListTitle {","lastModifiedDate":"2024-03-21"},{"lineNumber":386,"author":{"gitId":"STELLA-LYE"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-21"},{"lineNumber":387,"author":{"gitId":"STELLA-LYE"},"content":" -fx-padding: 4 20 4 20;","lastModifiedDate":"2024-03-21"},{"lineNumber":388,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":389,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":390,"author":{"gitId":"STELLA-LYE"},"content":".list-cell:filled:selected #taskContainer {","lastModifiedDate":"2024-03-21"},{"lineNumber":391,"author":{"gitId":"STELLA-LYE"},"content":" -fx-border-color: #3e7b91;","lastModifiedDate":"2024-03-21"},{"lineNumber":392,"author":{"gitId":"STELLA-LYE"},"content":" -fx-border-width: 0;","lastModifiedDate":"2024-03-21"},{"lineNumber":393,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":394,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":395,"author":{"gitId":"STELLA-LYE"},"content":".scroll-pane \u003e .viewport {","lastModifiedDate":"2024-03-21"},{"lineNumber":396,"author":{"gitId":"STELLA-LYE"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-21"},{"lineNumber":397,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":398,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":399,"author":{"gitId":"STELLA-LYE"},"content":".scroll-pane {","lastModifiedDate":"2024-03-21"},{"lineNumber":400,"author":{"gitId":"STELLA-LYE"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-21"},{"lineNumber":401,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"doyelee0313":2,"STELLA-LYE":87,"-":312}},{"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":"doyelee0313"},"content":".group-selector {","lastModifiedDate":"2024-03-20"},{"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":{"doyelee0313":1,"-":19}},{"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":"STELLA-LYE"},"content":"\u003c?import javafx.stage.Stage?\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":15,"author":{"gitId":"STELLA-LYE"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"STELLA-LYE"},"content":"\u003cfx:root minHeight\u003d\"750\" minWidth\u003d\"1000\" onCloseRequest\u003d\"#handleExit\" title\u003d\"TutorsContactsPro\" type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/8\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":18,"author":{"gitId":"STELLA-LYE"},"content":" \u003cImage url\u003d\"@/images/clock.png\" /\u003e","lastModifiedDate":"2024-03-21"},{"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":"STELLA-LYE"},"content":" \u003cVBox VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"STELLA-LYE"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" style\u003d\"-fx-background-color:#104A53;\" VBox.vgrow\u003d\"SOMETIMES\"\u003e","lastModifiedDate":"2024-03-21"},{"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":"STELLA-LYE"},"content":" \u003cStackPane fx:id\u003d\"commandBoxPlaceholder\" prefWidth\u003d\"550.0\" style\u003d\"-fx-background-color: #104A53;\" styleClass\u003d\"pane-with-border\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":39,"author":{"gitId":"STELLA-LYE"},"content":" \u003cInsets bottom\u003d\"5\" left\u003d\"10\" right\u003d\"10\" top\u003d\"5\" /\u003e","lastModifiedDate":"2024-03-21"},{"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":"STELLA-LYE"},"content":" \u003cSplitPane orientation\u003d\"VERTICAL\" style\u003d\"-fx-background-color: #104A53;\"\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"STELLA-LYE"},"content":" \u003cStackPane fx:id\u003d\"resultDisplayPlaceholder\" prefHeight\u003d\"100\" style\u003d\"-fx-background-color: #104A53;\" styleClass\u003d\"pane-with-border\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":46,"author":{"gitId":"STELLA-LYE"},"content":" \u003cInsets bottom\u003d\"5\" left\u003d\"10\" right\u003d\"10\" top\u003d\"5\" /\u003e","lastModifiedDate":"2024-03-21"},{"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":"STELLA-LYE"},"content":" \u003cVBox fx:id\u003d\"personList\" minWidth\u003d\"340\" prefWidth\u003d\"340\" prefHeight\u003d\"600\" styleClass\u003d\"pane-with-border\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"STELLA-LYE"},"content":" \u003cLabel fx:id\u003d\"personListTitle\" styleClass\u003d\"cell_big_label\" style\u003d\"-fx-font-size: 20px;\" text\u003d\"Student Details\"/\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":53,"author":{"gitId":"STELLA-LYE"},"content":" \u003cInsets bottom\u003d\"10\" left\u003d\"10\" right\u003d\"10\" top\u003d\"10\" /\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":55,"author":{"gitId":"STELLA-LYE"},"content":" \u003cStackPane fx:id\u003d\"personListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\" style\u003d\"-fx-background-color: #104A53;\"/\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":57,"author":{"gitId":"STELLA-LYE"},"content":" \u003c/SplitPane\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":59,"author":{"gitId":"STELLA-LYE"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" style\u003d\"-fx-background-color: #104A53;\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":62,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":63,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29"}],"authorContributionMap":{"STELLA-LYE":17,"-":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":"jocelyn-soh"},"content":"\u003c?import javafx.geometry.*?\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"jocelyn-soh"},"content":"\u003c?import javafx.scene.control.*?\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"jocelyn-soh"},"content":"\u003c?import javafx.scene.layout.*?\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":7,"author":{"gitId":"jocelyn-soh"},"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":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"jocelyn-soh"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" prefWidth\u003d\"150.0\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"jocelyn-soh"},"content":" \u003cInsets bottom\u003d\"5\" left\u003d\"15\" right\u003d\"5\" top\u003d\"5\" /\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"jocelyn-soh"},"content":" \u003cHBox alignment\u003d\"CENTER_LEFT\" spacing\u003d\"5\"\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":23,"author":{"gitId":"jocelyn-soh"},"content":" \u003cLabel fx:id\u003d\"name\" styleClass\u003d\"cell_big_label\" text\u003d\"\\$first\" /\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03"},{"lineNumber":25,"author":{"gitId":"doyelee0313"},"content":" \u003cFlowPane fx:id\u003d\"groups\" /\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"jocelyn-soh"},"content":" \u003cLabel fx:id\u003d\"year\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$year\" /\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"jocelyn-soh"},"content":" \u003cLabel fx:id\u003d\"major\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$major\" /\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"jocelyn-soh"},"content":" \u003cLabel fx:id\u003d\"telegram\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$telegram\" /\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"jocelyn-soh"},"content":" \u003cLabel fx:id\u003d\"remark\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$remark\" /\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"jocelyn-soh"},"content":" \u003crowConstraints\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"jocelyn-soh"},"content":" \u003cRowConstraints /\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"jocelyn-soh"},"content":" \u003c/rowConstraints\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"doyelee0313":1,"-":21,"jocelyn-soh":15}},{"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":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"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":"jocelyn-soh"},"content":" //---------------- Tests for containsStartingWordIgnoreCase --------------------------------------","lastModifiedDate":"2024-03-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":"jocelyn-soh"},"content":" public void containsStartingWordIgnoreCase_nullWord_throwsNullPointerException() {","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"jocelyn-soh"},"content":" assertThrows(NullPointerException.class, () -\u003e StringUtil.containsStartingWordIgnoreCase(","lastModifiedDate":"2024-03-13"},{"lineNumber":60,"author":{"gitId":"jocelyn-soh"},"content":" \"typical sentence\", null));","lastModifiedDate":"2024-03-13"},{"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":"jocelyn-soh"},"content":" public void containsStartingWordIgnoreCase_emptyWord_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, \"Word parameter cannot be empty\", ()","lastModifiedDate":"2019-03-23"},{"lineNumber":66,"author":{"gitId":"jocelyn-soh"},"content":" -\u003e StringUtil.containsStartingWordIgnoreCase(\"typical sentence\", \" \"));","lastModifiedDate":"2024-03-13"},{"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":"jocelyn-soh"},"content":" public void containsStartingWordIgnoreCase_multipleWords_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, \"Word parameter should be a single word\", ()","lastModifiedDate":"2019-03-23"},{"lineNumber":72,"author":{"gitId":"jocelyn-soh"},"content":" -\u003e StringUtil.containsStartingWordIgnoreCase(\"typical sentence\", \"aaa BBB\"));","lastModifiedDate":"2024-03-13"},{"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":"jocelyn-soh"},"content":" public void containsStartingWordIgnoreCase_nullSentence_throwsNullPointerException() {","lastModifiedDate":"2024-03-13"},{"lineNumber":77,"author":{"gitId":"jocelyn-soh"},"content":" assertThrows(NullPointerException.class, () -\u003e StringUtil.containsStartingWordIgnoreCase(null,","lastModifiedDate":"2024-03-13"},{"lineNumber":78,"author":{"gitId":"jocelyn-soh"},"content":" \"abc\"));","lastModifiedDate":"2024-03-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * Valid equivalence partitions for word:","lastModifiedDate":"2016-10-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * - any word","lastModifiedDate":"2016-10-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * - word containing symbols/numbers","lastModifiedDate":"2016-10-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * - word with leading/trailing spaces","lastModifiedDate":"2016-10-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Valid equivalence partitions for sentence:","lastModifiedDate":"2016-10-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * - empty string","lastModifiedDate":"2016-10-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * - one word","lastModifiedDate":"2016-10-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * - multiple words","lastModifiedDate":"2016-10-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * - sentence with extra spaces","lastModifiedDate":"2016-10-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Possible scenarios returning true:","lastModifiedDate":"2016-10-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - matches first word in sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * - last word in sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * - middle word in sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * - matches multiple words","lastModifiedDate":"2016-10-13"},{"lineNumber":98,"author":{"gitId":"jocelyn-soh"},"content":" * - query word matches part of a sentence word","lastModifiedDate":"2024-03-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * Possible scenarios returning false:","lastModifiedDate":"2016-10-13"},{"lineNumber":101,"author":{"gitId":"jocelyn-soh"},"content":" * -","lastModifiedDate":"2024-03-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * - sentence word matches part of the query word","lastModifiedDate":"2016-10-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-13"},{"lineNumber":104,"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":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void containsWordIgnoreCase_validInputs_correctResult() {","lastModifiedDate":"2016-10-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" // Empty sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":111,"author":{"gitId":"jocelyn-soh"},"content":" assertFalse(StringUtil.containsStartingWordIgnoreCase(\"\", \"abc\")); // Boundary case","lastModifiedDate":"2024-03-13"},{"lineNumber":112,"author":{"gitId":"jocelyn-soh"},"content":" assertFalse(StringUtil.containsStartingWordIgnoreCase(\" \", \"123\"));","lastModifiedDate":"2024-03-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":114,"author":{"gitId":"jocelyn-soh"},"content":" // Matches a partial word only and starts with query word","lastModifiedDate":"2024-03-13"},{"lineNumber":115,"author":{"gitId":"jocelyn-soh"},"content":" assertTrue(StringUtil.containsStartingWordIgnoreCase(\"anna betty carol\", \"car\"));","lastModifiedDate":"2024-03-13"},{"lineNumber":116,"author":{"gitId":"jocelyn-soh"},"content":" // Query word starts with sentence word","lastModifiedDate":"2024-03-13"},{"lineNumber":117,"author":{"gitId":"jocelyn-soh"},"content":" assertFalse(StringUtil.containsStartingWordIgnoreCase(\"anna betty carol\", \"na\"));","lastModifiedDate":"2024-03-13"},{"lineNumber":118,"author":{"gitId":"jocelyn-soh"},"content":" // Query word does not start with sentence word","lastModifiedDate":"2024-03-13"},{"lineNumber":119,"author":{"gitId":"jocelyn-soh"},"content":" assertFalse(StringUtil.containsStartingWordIgnoreCase(\"aaa bbb ccc\", \"bbbb\"));","lastModifiedDate":"2024-03-13"},{"lineNumber":120,"author":{"gitId":"jocelyn-soh"},"content":" // Query word bigger than sentence word","lastModifiedDate":"2024-03-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":" // Matches word in the sentence, different upper/lower case letters","lastModifiedDate":"2016-10-13"},{"lineNumber":123,"author":{"gitId":"jocelyn-soh"},"content":" assertTrue(StringUtil.containsStartingWordIgnoreCase(\"aaa bBb ccc\", \"Bbb\"));","lastModifiedDate":"2024-03-13"},{"lineNumber":124,"author":{"gitId":"jocelyn-soh"},"content":" // First word (boundary case)","lastModifiedDate":"2024-03-13"},{"lineNumber":125,"author":{"gitId":"jocelyn-soh"},"content":" assertTrue(StringUtil.containsStartingWordIgnoreCase(\"aaa bBb ccc@1\", \"CCc@1\"));","lastModifiedDate":"2024-03-13"},{"lineNumber":126,"author":{"gitId":"jocelyn-soh"},"content":" // Last word (boundary case)","lastModifiedDate":"2024-03-13"},{"lineNumber":127,"author":{"gitId":"jocelyn-soh"},"content":" assertTrue(StringUtil.containsStartingWordIgnoreCase(\" AAA bBb ccc \", \"aaa\"));","lastModifiedDate":"2024-03-13"},{"lineNumber":128,"author":{"gitId":"jocelyn-soh"},"content":" // Sentence has extra spaces","lastModifiedDate":"2024-03-13"},{"lineNumber":129,"author":{"gitId":"jocelyn-soh"},"content":" assertTrue(StringUtil.containsStartingWordIgnoreCase(\"Aaa\", \"aaa\"));","lastModifiedDate":"2024-03-13"},{"lineNumber":130,"author":{"gitId":"jocelyn-soh"},"content":" // Only one word in sentence (boundary case)","lastModifiedDate":"2024-03-13"},{"lineNumber":131,"author":{"gitId":"jocelyn-soh"},"content":" assertTrue(StringUtil.containsStartingWordIgnoreCase(\"aaa bbb ccc\", \" ccc \"));","lastModifiedDate":"2024-03-13"},{"lineNumber":132,"author":{"gitId":"jocelyn-soh"},"content":" // Leading/trailing spaces","lastModifiedDate":"2024-03-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":" // Matches multiple words in sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":135,"author":{"gitId":"jocelyn-soh"},"content":" assertTrue(StringUtil.containsStartingWordIgnoreCase(\"AAA bBb ccc bbb\", \"bbB\"));","lastModifiedDate":"2024-03-13"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":138,"author":{"gitId":"-"},"content":" //---------------- Tests for getDetails --------------------------------------","lastModifiedDate":"2016-10-13"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":140,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-13"},{"lineNumber":141,"author":{"gitId":"-"},"content":" * Equivalence Partitions: null, valid throwable object","lastModifiedDate":"2016-10-13"},{"lineNumber":142,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-13"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-30"},{"lineNumber":145,"author":{"gitId":"-"},"content":" public void getDetails_exceptionGiven() {","lastModifiedDate":"2016-09-30"},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.getDetails(new FileNotFoundException(\"file not found\"))","lastModifiedDate":"2019-03-14"},{"lineNumber":147,"author":{"gitId":"-"},"content":" .contains(\"java.io.FileNotFoundException: file not found\"));","lastModifiedDate":"2019-03-14"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":150,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-30"},{"lineNumber":151,"author":{"gitId":"-"},"content":" public void getDetails_nullGiven_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e StringUtil.getDetails(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":155,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"-":122,"jocelyn-soh":33}},{"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":"STELLA-LYE"},"content":"import static seedu.address.logic.commands.CommandTestUtil.MAJOR_DESC_AMY;","lastModifiedDate":"2024-03-18"},{"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":"jocelyn-soh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.REMARK_DESC_SHY;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.YEAR_DESC_AMY;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2018-12-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"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":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-12-09"},{"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":"2017-06-14"},{"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":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2017-06-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2017-06-19"},{"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":"tohlh"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY + YEAR_DESC_AMY","lastModifiedDate":"2024-03-13"},{"lineNumber":172,"author":{"gitId":"jocelyn-soh"},"content":" + TELEGRAM_DESC_AMY + EMAIL_DESC_AMY + MAJOR_DESC_AMY + REMARK_DESC_SHY;","lastModifiedDate":"2024-03-19"},{"lineNumber":173,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":174,"author":{"gitId":"doyelee0313"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withGroups().build();","lastModifiedDate":"2024-03-20"},{"lineNumber":175,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13"},{"lineNumber":176,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13"},{"lineNumber":177,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":179,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"doyelee0313":1,"STELLA-LYE":2,"-":171,"jocelyn-soh":2,"tohlh":3}},{"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":"doyelee0313"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GROUP;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MAJOR;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"jocelyn-soh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_YEAR;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05"},{"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":"-"},"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":"tohlh"},"content":" public static final String VALID_YEAR_AMY \u003d \"1\";","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"tohlh"},"content":" public static final String VALID_YEAR_BOB \u003d \"2\";","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"STELLA-LYE"},"content":" public static final String VALID_MAJOR_AMY \u003d \"Computer Science\";","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"STELLA-LYE"},"content":" public static final String VALID_MAJOR_BOB \u003d \"Business Analytics\";","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"tohlh"},"content":" public static final String VALID_TELEGRAM_AMY \u003d \"amy123\";","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"tohlh"},"content":" public static final String VALID_TELEGRAM_BOB \u003d \"bob456\";","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"jocelyn-soh"},"content":" public static final String VALID_REMARK_SHY \u003d \"shy\";","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"jocelyn-soh"},"content":" public static final String VALID_REMARK_OUTSPOKEN \u003d \"outspoken\";","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"doyelee0313"},"content":" public static final String VALID_GROUP_TUTORIAL \u003d \"TUT04\";","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"doyelee0313"},"content":" public static final String VALID_GROUP_LAB \u003d \"LAB10\";","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"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":"tohlh"},"content":" public static final String YEAR_DESC_AMY \u003d \" \" + PREFIX_YEAR + VALID_YEAR_AMY;","lastModifiedDate":"2024-03-13"},{"lineNumber":56,"author":{"gitId":"tohlh"},"content":" public static final String YEAR_DESC_BOB \u003d \" \" + PREFIX_YEAR + VALID_YEAR_BOB;","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"STELLA-LYE"},"content":" public static final String MAJOR_DESC_AMY \u003d \" \" + PREFIX_MAJOR + VALID_MAJOR_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"STELLA-LYE"},"content":" public static final String MAJOR_DESC_BOB \u003d \" \" + PREFIX_MAJOR + VALID_MAJOR_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"tohlh"},"content":" public static final String TELEGRAM_DESC_AMY \u003d \" \" + PREFIX_TELEGRAM + VALID_TELEGRAM_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"tohlh"},"content":" public static final String TELEGRAM_DESC_BOB \u003d \" \" + PREFIX_TELEGRAM + VALID_TELEGRAM_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"jocelyn-soh"},"content":" public static final String REMARK_DESC_SHY \u003d \" \" + PREFIX_REMARK + VALID_REMARK_SHY;","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"jocelyn-soh"},"content":" public static final String REMARK_DESC_OUTSPOKEN \u003d \" \" + PREFIX_REMARK + VALID_REMARK_OUTSPOKEN;","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"doyelee0313"},"content":" public static final String GROUP_DESC_TUTORIAL \u003d \" \" + PREFIX_GROUP + VALID_GROUP_TUTORIAL;","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"doyelee0313"},"content":" public static final String GROUP_DESC_LAB \u003d \" \" + PREFIX_GROUP + VALID_GROUP_LAB;","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":66,"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":67,"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":68,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05"},{"lineNumber":69,"author":{"gitId":"tohlh"},"content":" public static final String INVALID_YEAR_DESC \u003d \" \" + PREFIX_YEAR + \"7\";","lastModifiedDate":"2024-03-13"},{"lineNumber":70,"author":{"gitId":"STELLA-LYE"},"content":" public static final String INVALID_MAJOR_DESC \u003d \" \" + PREFIX_MAJOR; // empty string not allowed for major","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"tohlh"},"content":" public static final String INVALID_TELEGRAM_DESC \u003d \" \" + PREFIX_TELEGRAM + \"inval!d\";","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"doyelee0313"},"content":" public static final String INVALID_GROUP_DESC \u003d \" \" + PREFIX_GROUP + \"TUT903029\"; // \u0027group name should be 2 digits\u0027","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":80,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":82,"author":{"gitId":"STELLA-LYE"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withMajor(VALID_MAJOR_AMY)","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"doyelee0313"},"content":" .withRemark(VALID_REMARK_SHY).withGroups(VALID_GROUP_TUTORIAL).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":85,"author":{"gitId":"STELLA-LYE"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withMajor(VALID_MAJOR_BOB)","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"doyelee0313"},"content":" .withRemark(VALID_REMARK_OUTSPOKEN).withGroups(VALID_GROUP_LAB, VALID_GROUP_TUTORIAL).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25"},{"lineNumber":95,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":96,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":97,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":100,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":101,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":105,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":108,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":109,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25"},{"lineNumber":110,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":111,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":115,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":116,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":117,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":118,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":119,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25"},{"lineNumber":120,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":121,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25"},{"lineNumber":122,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":123,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":124,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":125,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03"},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":131,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":132,"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":133,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31"},{"lineNumber":134,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":135,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31"},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":138,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31"},{"lineNumber":139,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20"},{"lineNumber":140,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":145,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"doyelee0313":8,"STELLA-LYE":8,"-":112,"jocelyn-soh":5,"tohlh":12}},{"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":"doyelee0313"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GROUP_LAB;","lastModifiedDate":"2024-03-20"},{"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.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":"doyelee0313"},"content":" .withGroups(VALID_GROUP_LAB).build();","lastModifiedDate":"2024-03-20"},{"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":"doyelee0313"},"content":" .withPhone(VALID_PHONE_BOB).withGroups(VALID_GROUP_LAB).build();","lastModifiedDate":"2024-03-20"},{"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-04"},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18"},{"lineNumber":134,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18"},{"lineNumber":135,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18"},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":137,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":138,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":139,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18"},{"lineNumber":140,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-05-18"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":143,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":149,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":151,"author":{"gitId":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2018-08-08"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":153,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":154,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08"},{"lineNumber":155,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":156,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":158,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2017-05-25"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2017-05-25"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":174,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2019-02-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08"}],"authorContributionMap":{"doyelee0313":3,"-":181}},{"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":"doyelee0313"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GROUP_LAB;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MAJOR_BOB;","lastModifiedDate":"2024-03-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":"jocelyn-soh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_REMARK_OUTSPOKEN;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_YEAR_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05"},{"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":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05"},{"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":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05"},{"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":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05"},{"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":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05"},{"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":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"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":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":50,"author":{"gitId":"tohlh"},"content":" // different year -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"tohlh"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withYear(VALID_YEAR_AMY).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"tohlh"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"tohlh"},"content":" // different telegram -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"tohlh"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withTelegram(VALID_TELEGRAM_AMY).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"tohlh"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":62,"author":{"gitId":"STELLA-LYE"},"content":" // different major -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"STELLA-LYE"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withMajor(VALID_MAJOR_BOB).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":66,"author":{"gitId":"jocelyn-soh"},"content":" // different remark -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"jocelyn-soh"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withRemark(VALID_REMARK_OUTSPOKEN).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"doyelee0313"},"content":" // different groups -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"doyelee0313"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withGroups(VALID_GROUP_LAB).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"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":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"tohlh"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", year\u003d\"","lastModifiedDate":"2024-03-13"},{"lineNumber":82,"author":{"gitId":"STELLA-LYE"},"content":" + editPersonDescriptor.getYear().orElse(null) + \", major\u003d\"","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"STELLA-LYE"},"content":" + editPersonDescriptor.getMajor().orElse(null) + \", telegram\u003d\"","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"jocelyn-soh"},"content":" + editPersonDescriptor.getTelegram().orElse(null) + \", remark\u003d\"","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"doyelee0313"},"content":" + editPersonDescriptor.getRemark().orElse(null) + \", groups\u003d\"","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"doyelee0313"},"content":" + editPersonDescriptor.getGroups().orElse(null) + \"}\";","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"doyelee0313":5,"STELLA-LYE":5,"-":64,"jocelyn-soh":4,"tohlh":11}},{"path":"src/test/java/seedu/address/logic/commands/FilterCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"STELLA-LYE"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"STELLA-LYE"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":"import static seedu.address.logic.Messages.MESSAGE_PERSONS_LISTED_OVERVIEW;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"STELLA-LYE"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"STELLA-LYE"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"STELLA-LYE"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"STELLA-LYE"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"STELLA-LYE"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"STELLA-LYE"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"STELLA-LYE"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"STELLA-LYE"},"content":"import seedu.address.model.group.GroupContainsKeywordsPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"STELLA-LYE"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"STELLA-LYE"},"content":" * Contains integration tests (interaction with the Model) for {@code FilterCommand}.","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"STELLA-LYE"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"STELLA-LYE"},"content":"public class FilterCommandTest {","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"STELLA-LYE"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"STELLA-LYE"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"STELLA-LYE"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"STELLA-LYE"},"content":" public void equals() {","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"STELLA-LYE"},"content":" GroupContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"STELLA-LYE"},"content":" new GroupContainsKeywordsPredicate(Collections.singletonList(\"TUT01\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"STELLA-LYE"},"content":" GroupContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"STELLA-LYE"},"content":" new GroupContainsKeywordsPredicate(Collections.singletonList(\"TUT02\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"STELLA-LYE"},"content":" FilterCommand findFirstCommand \u003d new FilterCommand(firstPredicate);","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"STELLA-LYE"},"content":" FilterCommand findSecondCommand \u003d new FilterCommand(secondPredicate);","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"STELLA-LYE"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"STELLA-LYE"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"STELLA-LYE"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"STELLA-LYE"},"content":" FilterCommand findFirstCommandCopy \u003d new FilterCommand(firstPredicate);","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"STELLA-LYE"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"STELLA-LYE"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"STELLA-LYE"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"STELLA-LYE"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"STELLA-LYE"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"STELLA-LYE"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"STELLA-LYE"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"STELLA-LYE"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"STELLA-LYE"},"content":" public void execute_zeroKeywords_noPersonFound() {","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"STELLA-LYE"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"STELLA-LYE"},"content":" GroupContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"STELLA-LYE"},"content":" FilterCommand command \u003d new FilterCommand(predicate);","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"STELLA-LYE"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"STELLA-LYE"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"STELLA-LYE"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"STELLA-LYE"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"STELLA-LYE"},"content":" public void execute_multipleKeywords_multiplePersonsFound() {","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"STELLA-LYE"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 2);","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"STELLA-LYE"},"content":" GroupContainsKeywordsPredicate predicate \u003d preparePredicate(\"LAB05\");","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"STELLA-LYE"},"content":" FilterCommand command \u003d new FilterCommand(predicate);","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"STELLA-LYE"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"STELLA-LYE"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"STELLA-LYE"},"content":" assertEquals(Arrays.asList(ALICE, BENSON), model.getFilteredPersonList());","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"STELLA-LYE"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"STELLA-LYE"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"STELLA-LYE"},"content":" GroupContainsKeywordsPredicate predicate \u003d new GroupContainsKeywordsPredicate(Arrays.asList(\"TUT10\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"STELLA-LYE"},"content":" FilterCommand filterCommand \u003d new FilterCommand(predicate);","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"STELLA-LYE"},"content":" String expected \u003d FilterCommand.class.getCanonicalName() + \"{group\u003d\" + predicate + \"}\";","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"STELLA-LYE"},"content":" assertEquals(expected, filterCommand.toString());","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"STELLA-LYE"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"STELLA-LYE"},"content":" * Parses {@code userInput} into a {@code GroupContainsKeywordsPredicate}.","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"STELLA-LYE"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"STELLA-LYE"},"content":" private GroupContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"STELLA-LYE"},"content":" return new GroupContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2024-03-21"},{"lineNumber":90,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":91,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"STELLA-LYE":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":"-"},"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":"doyelee0313"},"content":"import static seedu.address.logic.commands.CommandTestUtil.GROUP_DESC_LAB;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"doyelee0313"},"content":"import static seedu.address.logic.commands.CommandTestUtil.GROUP_DESC_TUTORIAL;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"doyelee0313"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_GROUP_DESC;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_MAJOR_DESC;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TELEGRAM_DESC;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_YEAR_DESC;","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"STELLA-LYE"},"content":"import static seedu.address.logic.commands.CommandTestUtil.MAJOR_DESC_AMY;","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"STELLA-LYE"},"content":"import static seedu.address.logic.commands.CommandTestUtil.MAJOR_DESC_BOB;","lastModifiedDate":"2024-03-18"},{"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":"jocelyn-soh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.REMARK_DESC_OUTSPOKEN;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"jocelyn-soh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.REMARK_DESC_SHY;","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":28,"author":{"gitId":"doyelee0313"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GROUP_LAB;","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"doyelee0313"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GROUP_TUTORIAL;","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"STELLA-LYE"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MAJOR_BOB;","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":33,"author":{"gitId":"jocelyn-soh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_REMARK_OUTSPOKEN;","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_YEAR_BOB;","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.YEAR_DESC_AMY;","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.YEAR_DESC_BOB;","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":39,"author":{"gitId":"STELLA-LYE"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MAJOR;","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":42,"author":{"gitId":"jocelyn-soh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_YEAR;","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":46,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":47,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":53,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15"},{"lineNumber":54,"author":{"gitId":"doyelee0313"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15"},{"lineNumber":56,"author":{"gitId":"STELLA-LYE"},"content":"import seedu.address.model.person.Major;","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-06-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":63,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","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_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":67,"author":{"gitId":"doyelee0313"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withRemark(VALID_REMARK_OUTSPOKEN)","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"doyelee0313"},"content":" .withGroups(VALID_GROUP_TUTORIAL)","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"jocelyn-soh"},"content":" .build();","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":73,"author":{"gitId":"doyelee0313"},"content":" + YEAR_DESC_BOB + MAJOR_DESC_BOB + TELEGRAM_DESC_BOB","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"doyelee0313"},"content":" + REMARK_DESC_OUTSPOKEN + GROUP_DESC_TUTORIAL,","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"tohlh"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":78,"author":{"gitId":"doyelee0313"},"content":" // multiple groups - all accepted","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"doyelee0313"},"content":" Person expectedPersonMultipleGroups \u003d new PersonBuilder(BOB).withRemark(VALID_REMARK_OUTSPOKEN).withGroups(","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"doyelee0313"},"content":" VALID_GROUP_TUTORIAL, VALID_GROUP_LAB)","lastModifiedDate":"2024-03-20"},{"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":"STELLA-LYE"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + YEAR_DESC_BOB + MAJOR_DESC_BOB","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"doyelee0313"},"content":" + TELEGRAM_DESC_BOB + REMARK_DESC_OUTSPOKEN + GROUP_DESC_LAB + GROUP_DESC_TUTORIAL,","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"doyelee0313"},"content":" new AddCommand(expectedPersonMultipleGroups));","lastModifiedDate":"2024-03-20"},{"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":"doyelee0313"},"content":" public void parse_repeatedNonGroupValue_failure() {","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"tohlh"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + YEAR_DESC_BOB","lastModifiedDate":"2024-03-13"},{"lineNumber":91,"author":{"gitId":"doyelee0313"},"content":" + TELEGRAM_DESC_BOB + MAJOR_DESC_BOB + REMARK_DESC_OUTSPOKEN + GROUP_DESC_TUTORIAL;","lastModifiedDate":"2024-03-20"},{"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":"tohlh"},"content":" // multiple years","lastModifiedDate":"2024-03-15"},{"lineNumber":106,"author":{"gitId":"tohlh"},"content":" assertParseFailure(parser, YEAR_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-15"},{"lineNumber":107,"author":{"gitId":"tohlh"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_YEAR));","lastModifiedDate":"2024-03-15"},{"lineNumber":108,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":109,"author":{"gitId":"STELLA-LYE"},"content":" // multiple majors","lastModifiedDate":"2024-03-18"},{"lineNumber":110,"author":{"gitId":"STELLA-LYE"},"content":" assertParseFailure(parser, MAJOR_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"STELLA-LYE"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_MAJOR));","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":113,"author":{"gitId":"tohlh"},"content":" // multiple telegrams","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"tohlh"},"content":" assertParseFailure(parser, TELEGRAM_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"tohlh"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TELEGRAM));","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":117,"author":{"gitId":"jocelyn-soh"},"content":" // multiple remarks","lastModifiedDate":"2024-03-19"},{"lineNumber":118,"author":{"gitId":"jocelyn-soh"},"content":" assertParseFailure(parser, REMARK_DESC_SHY + validExpectedPersonString,","lastModifiedDate":"2024-03-19"},{"lineNumber":119,"author":{"gitId":"jocelyn-soh"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_REMARK));","lastModifiedDate":"2024-03-19"},{"lineNumber":120,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":124,"author":{"gitId":"STELLA-LYE"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY + MAJOR_DESC_AMY","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"-"},"content":" + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":126,"author":{"gitId":"STELLA-LYE"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_MAJOR, PREFIX_EMAIL, PREFIX_YEAR,","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"jocelyn-soh"},"content":" PREFIX_TELEGRAM, PREFIX_REMARK, PREFIX_PHONE));","lastModifiedDate":"2024-03-19"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":137,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":139,"author":{"gitId":"tohlh"},"content":" // invalid year","lastModifiedDate":"2024-03-15"},{"lineNumber":140,"author":{"gitId":"tohlh"},"content":" assertParseFailure(parser, INVALID_YEAR_DESC + validExpectedPersonString,","lastModifiedDate":"2024-03-15"},{"lineNumber":141,"author":{"gitId":"tohlh"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_YEAR));","lastModifiedDate":"2024-03-15"},{"lineNumber":142,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":143,"author":{"gitId":"tohlh"},"content":" // invalid telegram","lastModifiedDate":"2024-03-17"},{"lineNumber":144,"author":{"gitId":"tohlh"},"content":" assertParseFailure(parser, INVALID_TELEGRAM_DESC + validExpectedPersonString,","lastModifiedDate":"2024-03-17"},{"lineNumber":145,"author":{"gitId":"tohlh"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TELEGRAM));","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":147,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":149,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":151,"author":{"gitId":"STELLA-LYE"},"content":" // invalid major","lastModifiedDate":"2024-03-17"},{"lineNumber":152,"author":{"gitId":"STELLA-LYE"},"content":" assertParseFailure(parser, INVALID_MAJOR_DESC + validExpectedPersonString,","lastModifiedDate":"2024-03-17"},{"lineNumber":153,"author":{"gitId":"STELLA-LYE"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_MAJOR));","lastModifiedDate":"2024-03-17"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":156,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":158,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":159,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":160,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":162,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":163,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":164,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":166,"author":{"gitId":"tohlh"},"content":" // invalid year","lastModifiedDate":"2024-03-15"},{"lineNumber":167,"author":{"gitId":"tohlh"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_YEAR_DESC,","lastModifiedDate":"2024-03-15"},{"lineNumber":168,"author":{"gitId":"tohlh"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_YEAR));","lastModifiedDate":"2024-03-15"},{"lineNumber":169,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":170,"author":{"gitId":"tohlh"},"content":" // invalid telegram","lastModifiedDate":"2024-03-17"},{"lineNumber":171,"author":{"gitId":"tohlh"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_TELEGRAM_DESC,","lastModifiedDate":"2024-03-17"},{"lineNumber":172,"author":{"gitId":"tohlh"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TELEGRAM));","lastModifiedDate":"2024-03-17"},{"lineNumber":173,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":174,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":175,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":176,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":178,"author":{"gitId":"STELLA-LYE"},"content":" // invalid major","lastModifiedDate":"2024-03-17"},{"lineNumber":179,"author":{"gitId":"STELLA-LYE"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_MAJOR_DESC,","lastModifiedDate":"2024-03-17"},{"lineNumber":180,"author":{"gitId":"STELLA-LYE"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_MAJOR));","lastModifiedDate":"2024-03-17"},{"lineNumber":181,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":184,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":185,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":186,"author":{"gitId":"doyelee0313"},"content":" // no remark and zero groups","lastModifiedDate":"2024-03-20"},{"lineNumber":187,"author":{"gitId":"doyelee0313"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withRemark(\"\").withGroups().build();","lastModifiedDate":"2024-03-20"},{"lineNumber":188,"author":{"gitId":"tohlh"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + YEAR_DESC_AMY","lastModifiedDate":"2024-03-17"},{"lineNumber":189,"author":{"gitId":"STELLA-LYE"},"content":" + TELEGRAM_DESC_AMY + MAJOR_DESC_AMY, new AddCommand(expectedPerson));","lastModifiedDate":"2024-03-18"},{"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_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":194,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":196,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":197,"author":{"gitId":"tohlh"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-13"},{"lineNumber":198,"author":{"gitId":"STELLA-LYE"},"content":" + YEAR_DESC_BOB + TELEGRAM_DESC_BOB + MAJOR_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-03-18"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":200,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":201,"author":{"gitId":"tohlh"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-13"},{"lineNumber":202,"author":{"gitId":"STELLA-LYE"},"content":" + YEAR_DESC_BOB + TELEGRAM_DESC_BOB + MAJOR_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-03-18"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":204,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":205,"author":{"gitId":"tohlh"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB","lastModifiedDate":"2024-03-13"},{"lineNumber":206,"author":{"gitId":"STELLA-LYE"},"content":" + YEAR_DESC_BOB + TELEGRAM_DESC_BOB + MAJOR_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-03-18"},{"lineNumber":207,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":208,"author":{"gitId":"tohlh"},"content":" // missing year prefix","lastModifiedDate":"2024-03-13"},{"lineNumber":209,"author":{"gitId":"tohlh"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB","lastModifiedDate":"2024-03-13"},{"lineNumber":210,"author":{"gitId":"STELLA-LYE"},"content":" + VALID_YEAR_BOB + TELEGRAM_DESC_BOB + MAJOR_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-03-18"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":212,"author":{"gitId":"tohlh"},"content":" // missing telegram prefix","lastModifiedDate":"2024-03-17"},{"lineNumber":213,"author":{"gitId":"tohlh"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB","lastModifiedDate":"2024-03-17"},{"lineNumber":214,"author":{"gitId":"STELLA-LYE"},"content":" + YEAR_DESC_BOB + VALID_TELEGRAM_BOB + MAJOR_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-03-18"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":216,"author":{"gitId":"STELLA-LYE"},"content":" // missing major prefix","lastModifiedDate":"2024-03-17"},{"lineNumber":217,"author":{"gitId":"tohlh"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-13"},{"lineNumber":218,"author":{"gitId":"STELLA-LYE"},"content":" + YEAR_DESC_BOB + VALID_TELEGRAM_BOB + VALID_MAJOR_BOB, expectedMessage);","lastModifiedDate":"2024-03-18"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":220,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15"},{"lineNumber":221,"author":{"gitId":"tohlh"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB","lastModifiedDate":"2024-03-13"},{"lineNumber":222,"author":{"gitId":"STELLA-LYE"},"content":" + VALID_YEAR_BOB + VALID_TELEGRAM_BOB + VALID_MAJOR_BOB, expectedMessage);","lastModifiedDate":"2024-03-18"},{"lineNumber":223,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":225,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":226,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":227,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":228,"author":{"gitId":"STELLA-LYE"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + MAJOR_DESC_BOB","lastModifiedDate":"2024-03-18"},{"lineNumber":229,"author":{"gitId":"doyelee0313"},"content":" + YEAR_DESC_BOB + TELEGRAM_DESC_BOB + GROUP_DESC_LAB + GROUP_DESC_TUTORIAL, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-20"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":231,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15"},{"lineNumber":232,"author":{"gitId":"STELLA-LYE"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + MAJOR_DESC_BOB","lastModifiedDate":"2024-03-18"},{"lineNumber":233,"author":{"gitId":"doyelee0313"},"content":" + YEAR_DESC_BOB + TELEGRAM_DESC_BOB + GROUP_DESC_LAB + GROUP_DESC_TUTORIAL, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-20"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":235,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15"},{"lineNumber":236,"author":{"gitId":"STELLA-LYE"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + MAJOR_DESC_BOB","lastModifiedDate":"2024-03-18"},{"lineNumber":237,"author":{"gitId":"doyelee0313"},"content":" + YEAR_DESC_BOB + TELEGRAM_DESC_BOB + GROUP_DESC_LAB + GROUP_DESC_TUTORIAL, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-20"},{"lineNumber":238,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":239,"author":{"gitId":"tohlh"},"content":" // invalid year","lastModifiedDate":"2024-03-13"},{"lineNumber":240,"author":{"gitId":"STELLA-LYE"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + MAJOR_DESC_BOB","lastModifiedDate":"2024-03-17"},{"lineNumber":241,"author":{"gitId":"doyelee0313"},"content":" + INVALID_YEAR_DESC + TELEGRAM_DESC_BOB + GROUP_DESC_LAB + GROUP_DESC_TUTORIAL,","lastModifiedDate":"2024-03-20"},{"lineNumber":242,"author":{"gitId":"tohlh"},"content":" Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":244,"author":{"gitId":"tohlh"},"content":" // invalid telegram","lastModifiedDate":"2024-03-17"},{"lineNumber":245,"author":{"gitId":"STELLA-LYE"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + MAJOR_DESC_BOB","lastModifiedDate":"2024-03-18"},{"lineNumber":246,"author":{"gitId":"doyelee0313"},"content":" + YEAR_DESC_BOB + INVALID_TELEGRAM_DESC + GROUP_DESC_LAB + GROUP_DESC_TUTORIAL,","lastModifiedDate":"2024-03-20"},{"lineNumber":247,"author":{"gitId":"tohlh"},"content":" Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":249,"author":{"gitId":"STELLA-LYE"},"content":" // invalid major","lastModifiedDate":"2024-03-17"},{"lineNumber":250,"author":{"gitId":"STELLA-LYE"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_MAJOR_DESC","lastModifiedDate":"2024-03-17"},{"lineNumber":251,"author":{"gitId":"doyelee0313"},"content":" + YEAR_DESC_BOB + GROUP_DESC_LAB + GROUP_DESC_TUTORIAL, Major.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-20"},{"lineNumber":252,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":253,"author":{"gitId":"doyelee0313"},"content":" // invalid group","lastModifiedDate":"2024-03-20"},{"lineNumber":254,"author":{"gitId":"STELLA-LYE"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + MAJOR_DESC_BOB","lastModifiedDate":"2024-03-17"},{"lineNumber":255,"author":{"gitId":"doyelee0313"},"content":" + YEAR_DESC_BOB + TELEGRAM_DESC_BOB + INVALID_GROUP_DESC + VALID_GROUP_TUTORIAL,","lastModifiedDate":"2024-03-20"},{"lineNumber":256,"author":{"gitId":"doyelee0313"},"content":" Group.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-20"},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":258,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":259,"author":{"gitId":"STELLA-LYE"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_MAJOR_DESC","lastModifiedDate":"2024-03-18"},{"lineNumber":260,"author":{"gitId":"tohlh"},"content":" + YEAR_DESC_BOB, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":261,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":262,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":264,"author":{"gitId":"doyelee0313"},"content":" + MAJOR_DESC_BOB + TELEGRAM_DESC_BOB + GROUP_DESC_LAB + GROUP_DESC_TUTORIAL,","lastModifiedDate":"2024-03-20"},{"lineNumber":265,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":266,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":268,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"doyelee0313":29,"STELLA-LYE":38,"-":138,"jocelyn-soh":10,"tohlh":53}},{"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":"STELLA-LYE"},"content":"import seedu.address.logic.commands.FilterCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24"},{"lineNumber":27,"author":{"gitId":"STELLA-LYE"},"content":"import seedu.address.model.group.GroupContainsKeywordsPredicate;","lastModifiedDate":"2024-03-21"},{"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":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2018-03-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","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":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"STELLA-LYE"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"STELLA-LYE"},"content":" public void parseCommand_filter() throws Exception {","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"STELLA-LYE"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"TUT01\", \"LAB02\", \"REC03\");","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"STELLA-LYE"},"content":" FilterCommand command \u003d (FilterCommand) parser.parseCommand(","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"STELLA-LYE"},"content":" FilterCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"STELLA-LYE"},"content":" assertEquals(new FilterCommand(new GroupContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12"},{"lineNumber":85,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"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_list() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","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_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"STELLA-LYE":11,"-":101}},{"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":"-"},"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":"doyelee0313"},"content":" String argsString \u003d \" some random string /g group with leading and trailing spaces \";","lastModifiedDate":"2024-03-20"},{"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":{"doyelee0313":1,"-":149}},{"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":"doyelee0313"},"content":"import static seedu.address.logic.commands.CommandTestUtil.GROUP_DESC_LAB;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"doyelee0313"},"content":"import static seedu.address.logic.commands.CommandTestUtil.GROUP_DESC_TUTORIAL;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"doyelee0313"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_GROUP_DESC;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_MAJOR_DESC;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_YEAR_DESC;","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"STELLA-LYE"},"content":"import static seedu.address.logic.commands.CommandTestUtil.MAJOR_DESC_AMY;","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"STELLA-LYE"},"content":"import static seedu.address.logic.commands.CommandTestUtil.MAJOR_DESC_BOB;","lastModifiedDate":"2024-03-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.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","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":"doyelee0313"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GROUP_LAB;","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"doyelee0313"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GROUP_TUTORIAL;","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"STELLA-LYE"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MAJOR_AMY;","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":26,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_YEAR_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.YEAR_DESC_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":29,"author":{"gitId":"doyelee0313"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GROUP;","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"STELLA-LYE"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MAJOR;","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_YEAR;","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-04"},{"lineNumber":45,"author":{"gitId":"doyelee0313"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-04"},{"lineNumber":47,"author":{"gitId":"STELLA-LYE"},"content":"import seedu.address.model.person.Major;","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-04"},{"lineNumber":49,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":54,"author":{"gitId":"doyelee0313"},"content":" private static final String GROUP_EMPTY \u003d \" \" + PREFIX_GROUP;","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","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":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-07-06"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06"},{"lineNumber":75,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":78,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"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":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"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":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2018-09-22"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2018-09-22"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2018-09-22"},{"lineNumber":93,"author":{"gitId":"STELLA-LYE"},"content":" assertParseFailure(parser, \"1\" + INVALID_MAJOR_DESC, Major.MESSAGE_CONSTRAINTS); // invalid major","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"doyelee0313"},"content":" assertParseFailure(parser, \"1\" + INVALID_GROUP_DESC, Group.MESSAGE_CONSTRAINTS); // invalid group","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":96,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":99,"author":{"gitId":"doyelee0313"},"content":" // while parsing {@code PREFIX_GROUP} alone will reset the group of the {@code Person} being edited,","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"doyelee0313"},"content":" // parsing it together with a valid group results in error","lastModifiedDate":"2024-03-20"},{"lineNumber":101,"author":{"gitId":"doyelee0313"},"content":" assertParseFailure(parser, \"1\" + GROUP_DESC_TUTORIAL + GROUP_DESC_LAB + GROUP_EMPTY, Group.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-20"},{"lineNumber":102,"author":{"gitId":"doyelee0313"},"content":" assertParseFailure(parser, \"1\" + GROUP_DESC_TUTORIAL + GROUP_EMPTY + GROUP_DESC_LAB, Group.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-20"},{"lineNumber":103,"author":{"gitId":"doyelee0313"},"content":" assertParseFailure(parser, \"1\" + GROUP_EMPTY + GROUP_DESC_TUTORIAL + GROUP_DESC_LAB, Group.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-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":"STELLA-LYE"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_MAJOR_AMY + VALID_PHONE_AMY,","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":112,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":113,"author":{"gitId":"doyelee0313"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + GROUP_DESC_LAB","lastModifiedDate":"2024-03-20"},{"lineNumber":114,"author":{"gitId":"doyelee0313"},"content":" + EMAIL_DESC_AMY + MAJOR_DESC_AMY + NAME_DESC_AMY + GROUP_DESC_TUTORIAL;","lastModifiedDate":"2024-03-20"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":116,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-05-04"},{"lineNumber":117,"author":{"gitId":"STELLA-LYE"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withMajor(VALID_MAJOR_AMY)","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"doyelee0313"},"content":" .withGroups(VALID_GROUP_LAB, VALID_GROUP_TUTORIAL).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":119,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":124,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":125,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":126,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":127,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":129,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-04"},{"lineNumber":130,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":131,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"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_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":138,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04"},{"lineNumber":139,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":140,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":141,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_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":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":145,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2017-05-04"},{"lineNumber":146,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":147,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":148,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":151,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04"},{"lineNumber":152,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":153,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":154,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":155,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":157,"author":{"gitId":"tohlh"},"content":" // year","lastModifiedDate":"2024-03-15"},{"lineNumber":158,"author":{"gitId":"tohlh"},"content":" userInput \u003d targetIndex.getOneBased() + YEAR_DESC_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":159,"author":{"gitId":"tohlh"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withYear(VALID_YEAR_AMY).build();","lastModifiedDate":"2024-03-15"},{"lineNumber":160,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-15"},{"lineNumber":161,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-15"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":163,"author":{"gitId":"STELLA-LYE"},"content":" // major","lastModifiedDate":"2024-03-17"},{"lineNumber":164,"author":{"gitId":"STELLA-LYE"},"content":" userInput \u003d targetIndex.getOneBased() + MAJOR_DESC_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":165,"author":{"gitId":"STELLA-LYE"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withMajor(VALID_MAJOR_AMY).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":166,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":167,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":169,"author":{"gitId":"doyelee0313"},"content":" // groups","lastModifiedDate":"2024-03-20"},{"lineNumber":170,"author":{"gitId":"doyelee0313"},"content":" userInput \u003d targetIndex.getOneBased() + GROUP_DESC_TUTORIAL;","lastModifiedDate":"2024-03-20"},{"lineNumber":171,"author":{"gitId":"doyelee0313"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withGroups(VALID_GROUP_TUTORIAL).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":172,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":173,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"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":"doyelee0313"},"content":" // AddCommandParserTest#parse_repeatedNonGroupValue_failure()","lastModifiedDate":"2024-03-20"},{"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":"-"},"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":" // invalid followed by valid","lastModifiedDate":"2023-07-14"},{"lineNumber":188,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2023-07-14"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":190,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":192,"author":{"gitId":"-"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":193,"author":{"gitId":"STELLA-LYE"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY + MAJOR_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2024-03-17"},{"lineNumber":194,"author":{"gitId":"doyelee0313"},"content":" + GROUP_DESC_TUTORIAL + PHONE_DESC_AMY + MAJOR_DESC_AMY + EMAIL_DESC_AMY + GROUP_DESC_TUTORIAL","lastModifiedDate":"2024-03-20"},{"lineNumber":195,"author":{"gitId":"doyelee0313"},"content":" + PHONE_DESC_BOB + MAJOR_DESC_BOB + EMAIL_DESC_BOB + GROUP_DESC_LAB;","lastModifiedDate":"2024-03-20"},{"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":"STELLA-LYE"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_MAJOR));","lastModifiedDate":"2024-03-17"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":200,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14"},{"lineNumber":201,"author":{"gitId":"STELLA-LYE"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + INVALID_MAJOR_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2024-03-17"},{"lineNumber":202,"author":{"gitId":"STELLA-LYE"},"content":" + INVALID_YEAR_DESC + INVALID_PHONE_DESC + INVALID_MAJOR_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2024-03-17"},{"lineNumber":203,"author":{"gitId":"tohlh"},"content":" + INVALID_YEAR_DESC;","lastModifiedDate":"2024-03-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":"STELLA-LYE"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_MAJOR, PREFIX_YEAR));","lastModifiedDate":"2024-03-17"},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":209,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":210,"author":{"gitId":"doyelee0313"},"content":" public void parse_resetGroups_success() {","lastModifiedDate":"2024-03-20"},{"lineNumber":211,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":212,"author":{"gitId":"doyelee0313"},"content":" String userInput \u003d targetIndex.getOneBased() + GROUP_EMPTY;","lastModifiedDate":"2024-03-20"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":214,"author":{"gitId":"doyelee0313"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withGroups().build();","lastModifiedDate":"2024-03-20"},{"lineNumber":215,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":217,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":218,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":219,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04"}],"authorContributionMap":{"doyelee0313":26,"STELLA-LYE":17,"-":168,"tohlh":8}},{"path":"src/test/java/seedu/address/logic/parser/FilterCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"STELLA-LYE"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"STELLA-LYE"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"STELLA-LYE"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"STELLA-LYE"},"content":"import seedu.address.logic.commands.FilterCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"STELLA-LYE"},"content":"import seedu.address.model.group.GroupContainsKeywordsPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"STELLA-LYE"},"content":"public class FilterCommandParserTest {","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"STELLA-LYE"},"content":" private FilterCommandParser parser \u003d new FilterCommandParser();","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"STELLA-LYE"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"STELLA-LYE"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"STELLA-LYE"},"content":" assertParseFailure(parser, \" \", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"STELLA-LYE"},"content":" FilterCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"STELLA-LYE"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"STELLA-LYE"},"content":" public void parse_validArgs_returnsFilterCommand() {","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"STELLA-LYE"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"STELLA-LYE"},"content":" FilterCommand expectedFilterCommand \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"STELLA-LYE"},"content":" new FilterCommand(new GroupContainsKeywordsPredicate(Arrays.asList(\"TUT10\", \"LAB05\")));","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"STELLA-LYE"},"content":" assertParseSuccess(parser, \"TUT10 LAB05\", expectedFilterCommand);","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"STELLA-LYE"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"STELLA-LYE"},"content":" assertParseSuccess(parser, \" \\n TUT10 \\n \\t LAB05 \\t\", expectedFilterCommand);","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"STELLA-LYE":34}},{"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":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":17,"author":{"gitId":"doyelee0313"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-22"},{"lineNumber":19,"author":{"gitId":"STELLA-LYE"},"content":"import seedu.address.model.person.Major;","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-22"},{"lineNumber":22,"author":{"gitId":"jocelyn-soh"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"tohlh"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-03-17"},{"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":"STELLA-LYE"},"content":" private static final String INVALID_MAJOR \u003d \" \";","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":30,"author":{"gitId":"tohlh"},"content":" private static final String INVALID_YEAR \u003d \"7\";","lastModifiedDate":"2024-03-15"},{"lineNumber":31,"author":{"gitId":"tohlh"},"content":" private static final String INVALID_TELEGRAM \u003d \"inval!d\";","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"doyelee0313"},"content":" private static final String INVALID_GROUP \u003d \"TUT93828\";","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d \"123456\";","lastModifiedDate":"2017-05-22"},{"lineNumber":36,"author":{"gitId":"STELLA-LYE"},"content":" private static final String VALID_MAJOR \u003d \"Computer Science\";","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":38,"author":{"gitId":"tohlh"},"content":" private static final String VALID_YEAR \u003d \"7\";","lastModifiedDate":"2024-03-15"},{"lineNumber":39,"author":{"gitId":"tohlh"},"content":" private static final String VALID_TELEGRAM \u003d \"telegram\";","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"jocelyn-soh"},"content":" private static final String VALID_REMARK \u003d \"shy\";","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"doyelee0313"},"content":" private static final String VALID_GROUP_1 \u003d \"TUT04\";","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"doyelee0313"},"content":" private static final String VALID_GROUP_2 \u003d \"LAB10\";","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","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_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23"},{"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-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2017-05-25"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2017-05-25"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":84,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29"},{"lineNumber":85,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void parsePhone_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePhone((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":95,"author":{"gitId":"-"},"content":" public void parsePhone_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhone(INVALID_PHONE));","lastModifiedDate":"2019-03-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":101,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-22"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(VALID_PHONE));","lastModifiedDate":"2017-05-30"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithWhitespace_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":107,"author":{"gitId":"-"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":108,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-30"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(phoneWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":113,"author":{"gitId":"STELLA-LYE"},"content":" public void parseMajor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"STELLA-LYE"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseMajor((String) null));","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":118,"author":{"gitId":"STELLA-LYE"},"content":" public void parseMajor_invalidValue_throwsParseException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":119,"author":{"gitId":"STELLA-LYE"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseMajor(INVALID_MAJOR));","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":123,"author":{"gitId":"STELLA-LYE"},"content":" public void parseMajor_validValueWithoutWhitespace_returnsMajor() throws Exception {","lastModifiedDate":"2024-03-18"},{"lineNumber":124,"author":{"gitId":"STELLA-LYE"},"content":" Major expectedMajor \u003d new Major(VALID_MAJOR);","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"STELLA-LYE"},"content":" assertEquals(expectedMajor, ParserUtil.parseMajor(VALID_MAJOR));","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":129,"author":{"gitId":"STELLA-LYE"},"content":" public void parseMajor_validValueWithWhitespace_returnsTrimmedMajor() throws Exception {","lastModifiedDate":"2024-03-18"},{"lineNumber":130,"author":{"gitId":"STELLA-LYE"},"content":" String majorWithWhitespace \u003d WHITESPACE + VALID_MAJOR + WHITESPACE;","lastModifiedDate":"2024-03-18"},{"lineNumber":131,"author":{"gitId":"STELLA-LYE"},"content":" Major expectedMajor \u003d new Major(VALID_MAJOR);","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"STELLA-LYE"},"content":" assertEquals(expectedMajor, ParserUtil.parseMajor(majorWithWhitespace));","lastModifiedDate":"2024-03-18"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":136,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":140,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":141,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":145,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":146,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":147,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22"},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"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 parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":153,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":154,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30"},{"lineNumber":155,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":158,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":159,"author":{"gitId":"tohlh"},"content":" public void parseYear_invalidValue_throwsParseException() {","lastModifiedDate":"2024-03-15"},{"lineNumber":160,"author":{"gitId":"tohlh"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseYear(INVALID_YEAR));","lastModifiedDate":"2024-03-15"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":163,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":164,"author":{"gitId":"tohlh"},"content":" public void parseYear_null_throwsNullPointerException() throws Exception {","lastModifiedDate":"2024-03-15"},{"lineNumber":165,"author":{"gitId":"tohlh"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseYear(null));","lastModifiedDate":"2024-03-15"},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":168,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":169,"author":{"gitId":"tohlh"},"content":" public void parseTelegram_invalidTelegram_throwsParseException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":170,"author":{"gitId":"tohlh"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTelegram(INVALID_TELEGRAM));","lastModifiedDate":"2024-03-17"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":173,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":174,"author":{"gitId":"tohlh"},"content":" public void parseTelegram_null_throwsNullPointerException() throws Exception {","lastModifiedDate":"2024-03-17"},{"lineNumber":175,"author":{"gitId":"tohlh"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTelegram(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":178,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":179,"author":{"gitId":"tohlh"},"content":" public void parseTelegram_validValueWithoutWhitespace_returnsTelegram() throws Exception {","lastModifiedDate":"2024-03-17"},{"lineNumber":180,"author":{"gitId":"tohlh"},"content":" Telegram expectedTelegram \u003d new Telegram(VALID_TELEGRAM);","lastModifiedDate":"2024-03-17"},{"lineNumber":181,"author":{"gitId":"tohlh"},"content":" assertEquals(expectedTelegram, ParserUtil.parseTelegram(VALID_TELEGRAM));","lastModifiedDate":"2024-03-17"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":184,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":185,"author":{"gitId":"tohlh"},"content":" public void parseTelegram_validValueWithWhitespace_returnsTrimmedTelegram() throws Exception {","lastModifiedDate":"2024-03-17"},{"lineNumber":186,"author":{"gitId":"tohlh"},"content":" String telegramWithWhitespace \u003d WHITESPACE + VALID_TELEGRAM + WHITESPACE;","lastModifiedDate":"2024-03-17"},{"lineNumber":187,"author":{"gitId":"tohlh"},"content":" Telegram expectedTelegram \u003d new Telegram(VALID_TELEGRAM);","lastModifiedDate":"2024-03-17"},{"lineNumber":188,"author":{"gitId":"tohlh"},"content":" assertEquals(expectedTelegram, ParserUtil.parseTelegram(telegramWithWhitespace));","lastModifiedDate":"2024-03-17"},{"lineNumber":189,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":191,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":192,"author":{"gitId":"jocelyn-soh"},"content":" public void parseRemark_null_throwsNullPointerException() throws Exception {","lastModifiedDate":"2024-03-19"},{"lineNumber":193,"author":{"gitId":"jocelyn-soh"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseRemark(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":194,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":196,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":197,"author":{"gitId":"jocelyn-soh"},"content":" public void parseRemark_validValueWithoutWhitespace_returnsRemark() throws Exception {","lastModifiedDate":"2024-03-19"},{"lineNumber":198,"author":{"gitId":"jocelyn-soh"},"content":" Remark expectedRemark \u003d new Remark(VALID_REMARK);","lastModifiedDate":"2024-03-19"},{"lineNumber":199,"author":{"gitId":"jocelyn-soh"},"content":" assertEquals(expectedRemark, ParserUtil.parseRemark(VALID_REMARK));","lastModifiedDate":"2024-03-19"},{"lineNumber":200,"author":{"gitId":"jocelyn-soh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":201,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":202,"author":{"gitId":"jocelyn-soh"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":203,"author":{"gitId":"jocelyn-soh"},"content":" public void parseRemark_validValueWithWhitespace_returnsTrimmedRemark() throws Exception {","lastModifiedDate":"2024-03-19"},{"lineNumber":204,"author":{"gitId":"jocelyn-soh"},"content":" String remarkWithWhitespace \u003d WHITESPACE + VALID_REMARK + WHITESPACE;","lastModifiedDate":"2024-03-19"},{"lineNumber":205,"author":{"gitId":"jocelyn-soh"},"content":" Remark expectedRemark \u003d new Remark(VALID_REMARK);","lastModifiedDate":"2024-03-19"},{"lineNumber":206,"author":{"gitId":"jocelyn-soh"},"content":" assertEquals(expectedRemark, ParserUtil.parseRemark(remarkWithWhitespace));","lastModifiedDate":"2024-03-19"},{"lineNumber":207,"author":{"gitId":"jocelyn-soh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":208,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":209,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":210,"author":{"gitId":"doyelee0313"},"content":" public void parseGroup_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":211,"author":{"gitId":"doyelee0313"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseGroup(null));","lastModifiedDate":"2024-03-20"},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":214,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":215,"author":{"gitId":"doyelee0313"},"content":" public void parseGroup_invalidValue_throwsParseException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":216,"author":{"gitId":"doyelee0313"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseGroup(INVALID_GROUP));","lastModifiedDate":"2024-03-20"},{"lineNumber":217,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":219,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":220,"author":{"gitId":"doyelee0313"},"content":" public void parseGroup_validValueWithoutWhitespace_returnsGroup() throws Exception {","lastModifiedDate":"2024-03-20"},{"lineNumber":221,"author":{"gitId":"doyelee0313"},"content":" Group expectedGroup \u003d new Group(VALID_GROUP_1);","lastModifiedDate":"2024-03-20"},{"lineNumber":222,"author":{"gitId":"doyelee0313"},"content":" assertEquals(expectedGroup, ParserUtil.parseGroup(VALID_GROUP_1));","lastModifiedDate":"2024-03-20"},{"lineNumber":223,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":225,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":226,"author":{"gitId":"doyelee0313"},"content":" public void parseGroup_validValueWithWhitespace_returnsTrimmedGroup() throws Exception {","lastModifiedDate":"2024-03-20"},{"lineNumber":227,"author":{"gitId":"doyelee0313"},"content":" String groupWithWhitespace \u003d WHITESPACE + VALID_GROUP_1 + WHITESPACE;","lastModifiedDate":"2024-03-20"},{"lineNumber":228,"author":{"gitId":"doyelee0313"},"content":" Group expectedGroup \u003d new Group(VALID_GROUP_1);","lastModifiedDate":"2024-03-20"},{"lineNumber":229,"author":{"gitId":"doyelee0313"},"content":" assertEquals(expectedGroup, ParserUtil.parseGroup(groupWithWhitespace));","lastModifiedDate":"2024-03-20"},{"lineNumber":230,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":232,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":233,"author":{"gitId":"doyelee0313"},"content":" public void parseGroups_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":234,"author":{"gitId":"doyelee0313"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseGroups(null));","lastModifiedDate":"2024-03-20"},{"lineNumber":235,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":237,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":238,"author":{"gitId":"doyelee0313"},"content":" public void parseGroups_collectionWithInvalidGroups_throwsParseException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":239,"author":{"gitId":"doyelee0313"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseGroups(Arrays.asList(VALID_GROUP_1, INVALID_GROUP)));","lastModifiedDate":"2024-03-20"},{"lineNumber":240,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":242,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":243,"author":{"gitId":"doyelee0313"},"content":" public void parseGroups_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2024-03-20"},{"lineNumber":244,"author":{"gitId":"doyelee0313"},"content":" assertTrue(ParserUtil.parseGroups(Collections.emptyList()).isEmpty());","lastModifiedDate":"2024-03-20"},{"lineNumber":245,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":247,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":248,"author":{"gitId":"doyelee0313"},"content":" public void parseGroups_collectionWithValidGroups_returnsGroupSet() throws Exception {","lastModifiedDate":"2024-03-20"},{"lineNumber":249,"author":{"gitId":"doyelee0313"},"content":" Set\u003cGroup\u003e actualGroupSet \u003d ParserUtil.parseGroups(Arrays.asList(VALID_GROUP_1, VALID_GROUP_2));","lastModifiedDate":"2024-03-20"},{"lineNumber":250,"author":{"gitId":"doyelee0313"},"content":" Set\u003cGroup\u003e expectedGroupSet \u003d new HashSet\u003cGroup\u003e(Arrays.asList(new Group(VALID_GROUP_1),","lastModifiedDate":"2024-03-20"},{"lineNumber":251,"author":{"gitId":"doyelee0313"},"content":" new Group(VALID_GROUP_2)));","lastModifiedDate":"2024-03-20"},{"lineNumber":252,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":253,"author":{"gitId":"doyelee0313"},"content":" assertEquals(expectedGroupSet, actualGroupSet);","lastModifiedDate":"2024-03-20"},{"lineNumber":254,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":255,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22"}],"authorContributionMap":{"doyelee0313":26,"STELLA-LYE":14,"-":179,"jocelyn-soh":16,"tohlh":20}},{"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":"doyelee0313"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GROUP_LAB;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MAJOR_BOB;","lastModifiedDate":"2024-03-17"},{"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":"2024-03-17"},{"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":"doyelee0313"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withMajor(VALID_MAJOR_BOB).withGroups(VALID_GROUP_LAB)","lastModifiedDate":"2024-03-20"},{"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":"doyelee0313"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withMajor(VALID_MAJOR_BOB).withGroups(VALID_GROUP_LAB)","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":"}","lastModifiedDate":"2016-12-24"}],"authorContributionMap":{"doyelee0313":3,"STELLA-LYE":1,"-":104}},{"path":"src/test/java/seedu/address/model/group/GroupContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"STELLA-LYE"},"content":"package seedu.address.model.group;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"STELLA-LYE"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"STELLA-LYE"},"content":"import java.util.List;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"STELLA-LYE"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"STELLA-LYE"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"STELLA-LYE"},"content":"public class GroupContainsKeywordsPredicateTest {","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"STELLA-LYE"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"STELLA-LYE"},"content":" public void equals() {","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"STELLA-LYE"},"content":" List\u003cString\u003e firstPredicateKeywordList \u003d Collections.singletonList(\"TUT01\");","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"STELLA-LYE"},"content":" List\u003cString\u003e secondPredicateKeywordList \u003d Arrays.asList(\"TUT01\", \"TUT02\");","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"STELLA-LYE"},"content":" GroupContainsKeywordsPredicate firstPredicate \u003d new GroupContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"STELLA-LYE"},"content":" GroupContainsKeywordsPredicate secondPredicate \u003d new GroupContainsKeywordsPredicate(secondPredicateKeywordList);","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"STELLA-LYE"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"STELLA-LYE"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"STELLA-LYE"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"STELLA-LYE"},"content":" GroupContainsKeywordsPredicate firstPredicateCopy \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"STELLA-LYE"},"content":" new GroupContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"STELLA-LYE"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"STELLA-LYE"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"STELLA-LYE"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"STELLA-LYE"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"STELLA-LYE"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"STELLA-LYE"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"STELLA-LYE"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"STELLA-LYE"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"STELLA-LYE"},"content":" public void test_nameContainsKeywords_returnsTrue() {","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"STELLA-LYE"},"content":" // One keyword","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"STELLA-LYE"},"content":" GroupContainsKeywordsPredicate predicate \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"STELLA-LYE"},"content":" new GroupContainsKeywordsPredicate(Collections.singletonList(\"TUT10\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"STELLA-LYE"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").withGroups(\"TUT10\").build()));","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"STELLA-LYE"},"content":" // Multiple keywords","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"STELLA-LYE"},"content":" predicate \u003d new GroupContainsKeywordsPredicate(Arrays.asList(\"TUT10\", \"LAB05\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"STELLA-LYE"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").withGroups(\"TUT10\").build()));","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"STELLA-LYE"},"content":" // Only one matching keyword","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"STELLA-LYE"},"content":" predicate \u003d new GroupContainsKeywordsPredicate(Arrays.asList(\"TUT10\", \"LAB05\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"STELLA-LYE"},"content":" assertTrue(predicate.test(","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"STELLA-LYE"},"content":" new PersonBuilder().withName(\"Alice Carol\").withGroups(\"TUT10\", \"LAB05\").build()));","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"STELLA-LYE"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"STELLA-LYE"},"content":" public void test_nameDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"STELLA-LYE"},"content":" // Zero keywords","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"STELLA-LYE"},"content":" GroupContainsKeywordsPredicate predicate \u003d new GroupContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"STELLA-LYE"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").build()));","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"STELLA-LYE"},"content":" // Non-matching keyword","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"STELLA-LYE"},"content":" predicate \u003d new GroupContainsKeywordsPredicate(Arrays.asList(\"TUT10\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"STELLA-LYE"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice Bob\").withGroups(\"TUT11\").build()));","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"STELLA-LYE"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"STELLA-LYE"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"STELLA-LYE"},"content":" List\u003cString\u003e keywords \u003d List.of(\"TUT01\", \"TUT02\");","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"STELLA-LYE"},"content":" GroupContainsKeywordsPredicate predicate \u003d new GroupContainsKeywordsPredicate(keywords);","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"STELLA-LYE"},"content":" String expected \u003d GroupContainsKeywordsPredicate.class.getCanonicalName() + \"{groups\u003d\"","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"STELLA-LYE"},"content":" + keywords.stream().map(Group::new).collect(Collectors.toList()) + \"}\";","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"STELLA-LYE"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"STELLA-LYE":83}},{"path":"src/test/java/seedu/address/model/group/GroupTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"doyelee0313"},"content":"package seedu.address.model.group;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"doyelee0313"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"doyelee0313"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"doyelee0313"},"content":"public class GroupTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"doyelee0313"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"doyelee0313"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"doyelee0313"},"content":" assertThrows(NullPointerException.class, () -\u003e new Group(null));","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"doyelee0313"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"doyelee0313"},"content":" public void constructor_invalidGroupName_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"doyelee0313"},"content":" String invalidGroupName \u003d \"\";","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"doyelee0313"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Group(invalidGroupName));","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"doyelee0313"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"doyelee0313"},"content":" public void isValidGroupName() {","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"doyelee0313"},"content":" // null group name","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"doyelee0313"},"content":" assertThrows(NullPointerException.class, () -\u003e Group.isValidGroupName(null));","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"doyelee0313"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"doyelee0313":26}},{"path":"src/test/java/seedu/address/model/person/MajorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"STELLA-LYE"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"STELLA-LYE"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"STELLA-LYE"},"content":"public class MajorTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"STELLA-LYE"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"STELLA-LYE"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"STELLA-LYE"},"content":" assertThrows(NullPointerException.class, () -\u003e new Major(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"STELLA-LYE"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"STELLA-LYE"},"content":" public void constructor_invalidMajor_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"STELLA-LYE"},"content":" String invalidMajor \u003d \"\";","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"STELLA-LYE"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Major(invalidMajor));","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"STELLA-LYE"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"STELLA-LYE"},"content":" public void isValidMajor() {","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"STELLA-LYE"},"content":" // null major","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"STELLA-LYE"},"content":" assertThrows(NullPointerException.class, () -\u003e Major.isValidMajor(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"STELLA-LYE"},"content":" // invalid majors","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"STELLA-LYE"},"content":" assertFalse(Major.isValidMajor(\"\")); // empty string","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"STELLA-LYE"},"content":" assertFalse(Major.isValidMajor(\" \")); // spaces only","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"STELLA-LYE"},"content":" // valid majors (Computing majors)","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"STELLA-LYE"},"content":" assertTrue(Major.isValidMajor(\"-\")); // one character","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"STELLA-LYE"},"content":" assertTrue(Major.isValidMajor(\"Business Analytics\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"STELLA-LYE"},"content":" assertTrue(Major.isValidMajor(\"Computer Science\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"STELLA-LYE"},"content":" assertTrue(Major.isValidMajor(\"Computer Engineering\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"STELLA-LYE"},"content":" assertTrue(Major.isValidMajor(\"Information Systems\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"STELLA-LYE"},"content":" assertTrue(Major.isValidMajor(\"Information Security\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"STELLA-LYE"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"STELLA-LYE"},"content":" public void equals() {","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"STELLA-LYE"},"content":" Major major \u003d new Major(\"Valid Major\");","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"STELLA-LYE"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"STELLA-LYE"},"content":" assertTrue(major.equals(new Major(\"Valid Major\")));","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"STELLA-LYE"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"STELLA-LYE"},"content":" assertTrue(major.equals(major));","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"STELLA-LYE"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"STELLA-LYE"},"content":" assertFalse(major.equals(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"STELLA-LYE"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"STELLA-LYE"},"content":" assertFalse(major.equals(5.0f));","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"STELLA-LYE"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"STELLA-LYE"},"content":" assertFalse(major.equals(new Major(\"Other Valid Major\")));","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"STELLA-LYE":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":"-"},"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":"-"},"content":" // Keywords match phone, email and address, but does not match name","lastModifiedDate":"2017-06-12"},{"lineNumber":72,"author":{"gitId":"STELLA-LYE"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"12345\", \"alice@email.com\", \"Computer\", \"Science\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").withPhone(\"12345\")","lastModifiedDate":"2017-06-12"},{"lineNumber":74,"author":{"gitId":"STELLA-LYE"},"content":" .withEmail(\"alice@email.com\").withMajor(\"Computer Science\").build()));","lastModifiedDate":"2024-03-17"},{"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":{"STELLA-LYE":2,"-":83}},{"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":"doyelee0313"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GROUP_LAB;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MAJOR_BOB;","lastModifiedDate":"2024-03-18"},{"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":"jocelyn-soh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_REMARK_OUTSPOKEN;","lastModifiedDate":"2024-03-19"},{"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":"doyelee0313"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getGroups().remove(0));","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18"},{"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":"doyelee0313"},"content":" .withMajor(VALID_MAJOR_BOB).withRemark(VALID_REMARK_OUTSPOKEN).withGroups(VALID_GROUP_LAB).build();","lastModifiedDate":"2024-03-20"},{"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":"jocelyn-soh"},"content":" // different major -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"STELLA-LYE"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withMajor(VALID_MAJOR_BOB).build();","lastModifiedDate":"2024-03-17"},{"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":"jocelyn-soh"},"content":" // different remark -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"jocelyn-soh"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withRemark(VALID_REMARK_OUTSPOKEN).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2024-03-19"},{"lineNumber":92,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"doyelee0313"},"content":" // different groups -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"doyelee0313"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withGroups(VALID_GROUP_LAB).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":98,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"tohlh"},"content":" public void hashCodeMethod() {","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"tohlh"},"content":" // same values -\u003e returns same hashcode","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"tohlh"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"tohlh"},"content":" assertEquals(ALICE.hashCode(), aliceCopy.hashCode());","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"tohlh"},"content":" // different name -\u003e returns different hashcode","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"tohlh"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":106,"author":{"gitId":"tohlh"},"content":" assertFalse(ALICE.hashCode() \u003d\u003d editedAlice.hashCode());","lastModifiedDate":"2024-03-19"},{"lineNumber":107,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":108,"author":{"gitId":"tohlh"},"content":" // different phone -\u003e returns different hashcode","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"tohlh"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":110,"author":{"gitId":"tohlh"},"content":" assertFalse(ALICE.hashCode() \u003d\u003d editedAlice.hashCode());","lastModifiedDate":"2024-03-19"},{"lineNumber":111,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":112,"author":{"gitId":"tohlh"},"content":" // different email -\u003e returns different hashcode","lastModifiedDate":"2024-03-19"},{"lineNumber":113,"author":{"gitId":"tohlh"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":114,"author":{"gitId":"tohlh"},"content":" assertFalse(ALICE.hashCode() \u003d\u003d editedAlice.hashCode());","lastModifiedDate":"2024-03-19"},{"lineNumber":115,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":116,"author":{"gitId":"tohlh"},"content":" // different major -\u003e returns different hashcode","lastModifiedDate":"2024-03-19"},{"lineNumber":117,"author":{"gitId":"tohlh"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withMajor(VALID_MAJOR_BOB).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":118,"author":{"gitId":"tohlh"},"content":" assertFalse(ALICE.hashCode() \u003d\u003d editedAlice.hashCode());","lastModifiedDate":"2024-03-19"},{"lineNumber":119,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":120,"author":{"gitId":"jocelyn-soh"},"content":" // different remark -\u003e returns different hashcode","lastModifiedDate":"2024-03-19"},{"lineNumber":121,"author":{"gitId":"jocelyn-soh"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withRemark(VALID_REMARK_OUTSPOKEN).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":122,"author":{"gitId":"jocelyn-soh"},"content":" assertFalse(ALICE.hashCode() \u003d\u003d editedAlice.hashCode());","lastModifiedDate":"2024-03-19"},{"lineNumber":123,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":124,"author":{"gitId":"doyelee0313"},"content":" // different groups -\u003e returns different hashcode","lastModifiedDate":"2024-03-20"},{"lineNumber":125,"author":{"gitId":"doyelee0313"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withGroups(VALID_GROUP_LAB).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":126,"author":{"gitId":"tohlh"},"content":" assertFalse(ALICE.hashCode() \u003d\u003d editedAlice.hashCode());","lastModifiedDate":"2024-03-19"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2019-02-23"},{"lineNumber":132,"author":{"gitId":"tohlh"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", year\u003d\" + ALICE.getYear() + \", telegram\u003d\" + ALICE.getTelegram()","lastModifiedDate":"2024-03-19"},{"lineNumber":133,"author":{"gitId":"doyelee0313"},"content":" + \", major\u003d\" + ALICE.getMajor() + \", remark\u003d\" + ALICE.getRemark()","lastModifiedDate":"2024-03-20"},{"lineNumber":134,"author":{"gitId":"doyelee0313"},"content":" + \", groups\u003d\" + ALICE.getGroups() + \"}\";","lastModifiedDate":"2024-03-20"},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"doyelee0313":9,"STELLA-LYE":2,"-":93,"jocelyn-soh":9,"tohlh":24}},{"path":"src/test/java/seedu/address/model/person/RemarkTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jocelyn-soh"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"jocelyn-soh"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"jocelyn-soh"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"jocelyn-soh"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"jocelyn-soh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"jocelyn-soh"},"content":"public class RemarkTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"jocelyn-soh"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"jocelyn-soh"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"jocelyn-soh"},"content":" assertThrows(NullPointerException.class, () -\u003e new Remark(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"jocelyn-soh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"jocelyn-soh"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"jocelyn-soh"},"content":" public void equals() {","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"jocelyn-soh"},"content":" Remark remark \u003d new Remark(\"#shy123\");","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"jocelyn-soh"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"jocelyn-soh"},"content":" assertTrue(remark.equals(new Remark(\"#shy123\")));","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"jocelyn-soh"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"jocelyn-soh"},"content":" assertTrue(remark.equals(remark));","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"jocelyn-soh"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"jocelyn-soh"},"content":" assertFalse(remark.equals(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"jocelyn-soh"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"jocelyn-soh"},"content":" assertFalse(remark.equals(5.0f));","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"jocelyn-soh"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"jocelyn-soh"},"content":" assertFalse(remark.equals(new Remark(\"different value\")));","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"jocelyn-soh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"jocelyn-soh"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"jocelyn-soh":35}},{"path":"src/test/java/seedu/address/model/person/TelegramTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"tohlh"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"tohlh"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"tohlh"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"tohlh"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"tohlh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"tohlh"},"content":"public class TelegramTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"tohlh"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"tohlh"},"content":" assertThrows(NullPointerException.class, () -\u003e new Telegram(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"tohlh"},"content":" public void constructor_invalidTelegram_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"tohlh"},"content":" String invalidTelegram \u003d \"\";","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"tohlh"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Telegram(invalidTelegram));","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"tohlh"},"content":" public void isValidTelegram() {","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"tohlh"},"content":" // null telegram","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"tohlh"},"content":" assertThrows(NullPointerException.class, () -\u003e Telegram.isValidTelegram(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"tohlh"},"content":" // invalid telegrams","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"tohlh"},"content":" assertFalse(Telegram.isValidTelegram(\"\")); // empty string","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"tohlh"},"content":" assertFalse(Telegram.isValidTelegram(\" \")); // spaces only","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"tohlh"},"content":" assertFalse(Telegram.isValidTelegram(\"a\")); // less than 3 characters","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"tohlh"},"content":" assertFalse(Telegram.isValidTelegram(\"asdf!\")); // alphabets with invalid characters","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"tohlh"},"content":" // valid telegrams","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"tohlh"},"content":" assertTrue(Telegram.isValidTelegram(\"asdf123\")); // alphanumeric","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"tohlh"},"content":" assertTrue(Telegram.isValidTelegram(\"asdf123_\")); // alphanumeric with underscore","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"tohlh"},"content":" public void equals() {","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"tohlh"},"content":" Telegram telegram \u003d new Telegram(\"telegram123\");","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"tohlh"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"tohlh"},"content":" assertTrue(telegram.equals(new Telegram(\"telegram123\")));","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"tohlh"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"tohlh"},"content":" assertTrue(telegram.equals(telegram));","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"tohlh"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"tohlh"},"content":" assertFalse(telegram.equals(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"tohlh"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"tohlh"},"content":" assertFalse(telegram.equals(5.0f));","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"tohlh"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"tohlh"},"content":" assertFalse(telegram.equals(new Telegram(\"123telegram\")));","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"tohlh"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"tohlh":57}},{"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":"doyelee0313"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GROUP_LAB;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MAJOR_BOB;","lastModifiedDate":"2024-03-17"},{"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":"doyelee0313"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withMajor(VALID_MAJOR_BOB).withGroups(VALID_GROUP_LAB)","lastModifiedDate":"2024-03-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":"doyelee0313"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withMajor(VALID_MAJOR_BOB).withGroups(VALID_GROUP_LAB)","lastModifiedDate":"2024-03-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":{"doyelee0313":3,"STELLA-LYE":1,"-":171}},{"path":"src/test/java/seedu/address/model/person/YearTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"tohlh"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-15"},{"lineNumber":2,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":3,"author":{"gitId":"tohlh"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"tohlh"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-15"},{"lineNumber":5,"author":{"gitId":"tohlh"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"tohlh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"tohlh"},"content":"public class YearTest {","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"tohlh"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"tohlh"},"content":" assertThrows(NullPointerException.class, () -\u003e new Year(null));","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"tohlh"},"content":" public void constructor_invalidPhone_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"tohlh"},"content":" String invalidPhone \u003d \"\";","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"tohlh"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Year(invalidPhone));","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":21,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"tohlh"},"content":" public void isValidYear() {","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"tohlh"},"content":" // null phone number","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"tohlh"},"content":" assertThrows(NullPointerException.class, () -\u003e Year.isValidYear(null));","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"tohlh"},"content":" // invalid years","lastModifiedDate":"2024-03-15"},{"lineNumber":28,"author":{"gitId":"tohlh"},"content":" assertFalse(Year.isValidYear(\"\")); // empty string","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"tohlh"},"content":" assertFalse(Year.isValidYear(\" \")); // spaces only","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"tohlh"},"content":" assertFalse(Year.isValidYear(\"7\")); // less than 3 numbers","lastModifiedDate":"2024-03-15"},{"lineNumber":31,"author":{"gitId":"tohlh"},"content":" assertFalse(Year.isValidYear(\"year\")); // non-numeric","lastModifiedDate":"2024-03-15"},{"lineNumber":32,"author":{"gitId":"tohlh"},"content":" assertFalse(Year.isValidYear(\"a1\")); // alphabets with digit","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":34,"author":{"gitId":"tohlh"},"content":" // valid years","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"tohlh"},"content":" assertTrue(Year.isValidYear(\"1\")); // exactly year 1","lastModifiedDate":"2024-03-15"},{"lineNumber":36,"author":{"gitId":"tohlh"},"content":" assertTrue(Year.isValidYear(\"2\")); // exactly year 2","lastModifiedDate":"2024-03-15"},{"lineNumber":37,"author":{"gitId":"tohlh"},"content":" assertTrue(Year.isValidYear(\"3\")); // exactly year 3","lastModifiedDate":"2024-03-15"},{"lineNumber":38,"author":{"gitId":"tohlh"},"content":" assertTrue(Year.isValidYear(\"4\")); // exactly year 4","lastModifiedDate":"2024-03-15"},{"lineNumber":39,"author":{"gitId":"tohlh"},"content":" assertTrue(Year.isValidYear(\"5\")); // exactly year 5","lastModifiedDate":"2024-03-15"},{"lineNumber":40,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":42,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"tohlh"},"content":" public void equals() {","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"tohlh"},"content":" Year year \u003d new Year(\"1\");","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"tohlh"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-15"},{"lineNumber":47,"author":{"gitId":"tohlh"},"content":" assertTrue(year.equals(new Year(\"1\")));","lastModifiedDate":"2024-03-15"},{"lineNumber":48,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":49,"author":{"gitId":"tohlh"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"tohlh"},"content":" assertTrue(year.equals(year));","lastModifiedDate":"2024-03-15"},{"lineNumber":51,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":52,"author":{"gitId":"tohlh"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"tohlh"},"content":" assertFalse(year.equals(null));","lastModifiedDate":"2024-03-15"},{"lineNumber":54,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":55,"author":{"gitId":"tohlh"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-15"},{"lineNumber":56,"author":{"gitId":"tohlh"},"content":" assertFalse(year.equals(5.0f));","lastModifiedDate":"2024-03-15"},{"lineNumber":57,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":58,"author":{"gitId":"tohlh"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-15"},{"lineNumber":59,"author":{"gitId":"tohlh"},"content":" assertFalse(year.equals(new Year(\"2\")));","lastModifiedDate":"2024-03-15"},{"lineNumber":60,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":61,"author":{"gitId":"tohlh"},"content":"}","lastModifiedDate":"2024-03-15"}],"authorContributionMap":{"tohlh":61}},{"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":"2024-03-19"},{"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":"STELLA-LYE"},"content":"import seedu.address.model.person.Major;","lastModifiedDate":"2024-03-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.Phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"tohlh"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"tohlh"},"content":"import seedu.address.model.person.Year;","lastModifiedDate":"2024-03-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":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"STELLA-LYE"},"content":" private static final String INVALID_MAJOR \u003d \" \";","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"tohlh"},"content":" private static final String INVALID_YEAR \u003d \"7\";","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"tohlh"},"content":" private static final String INVALID_TELEGRAM \u003d \"inval!d\";","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"doyelee0313"},"content":" private static final String INVALID_GROUP \u003d \"TUT9301391\";","lastModifiedDate":"2024-03-20"},{"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":"tohlh"},"content":" private static final String VALID_YEAR \u003d BENSON.getYear().toString();","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"STELLA-LYE"},"content":" private static final String VALID_MAJOR \u003d BENSON.getMajor().toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"tohlh"},"content":" private static final String VALID_TELEGRAM \u003d BENSON.getTelegram().toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"jocelyn-soh"},"content":" private static final String VALID_REMARK \u003d BENSON.getRemark().toString();","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"doyelee0313"},"content":" private static final List\u003cJsonAdaptedGroup\u003e VALID_GROUPS \u003d BENSON.getGroups().stream()","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"doyelee0313"},"content":" .map(JsonAdaptedGroup::new)","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","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_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":"tohlh"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_YEAR,","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"doyelee0313"},"content":" VALID_TELEGRAM, VALID_MAJOR, VALID_REMARK, VALID_GROUPS);","lastModifiedDate":"2024-03-20"},{"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":"tohlh"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL, VALID_YEAR,","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"doyelee0313"},"content":" VALID_TELEGRAM, VALID_MAJOR, VALID_REMARK, VALID_GROUPS);","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-18"},{"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":"tohlh"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_YEAR,","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"doyelee0313"},"content":" VALID_TELEGRAM, VALID_MAJOR, VALID_REMARK, VALID_GROUPS);","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-18"},{"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":"tohlh"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL, VALID_YEAR,","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"doyelee0313"},"content":" VALID_TELEGRAM, VALID_MAJOR, VALID_REMARK, VALID_GROUPS);","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","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_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"tohlh"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_YEAR,","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"doyelee0313"},"content":" VALID_TELEGRAM, VALID_MAJOR, VALID_REMARK, VALID_GROUPS);","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","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_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"tohlh"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null, VALID_YEAR,","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"doyelee0313"},"content":" VALID_TELEGRAM, VALID_MAJOR, VALID_REMARK, VALID_GROUPS);","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"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":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"tohlh"},"content":" public void toModelType_invalidTelegram_throwsIllegalValueException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"tohlh"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_YEAR,","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"doyelee0313"},"content":" INVALID_TELEGRAM, VALID_MAJOR, VALID_REMARK, VALID_GROUPS);","lastModifiedDate":"2024-03-20"},{"lineNumber":106,"author":{"gitId":"tohlh"},"content":" String expectedMessage \u003d Telegram.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"tohlh"},"content":" public void toModelType_nullTelegram_throwsIllegalValueException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"tohlh"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_YEAR,","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"doyelee0313"},"content":" null, VALID_MAJOR, VALID_REMARK, VALID_GROUPS);","lastModifiedDate":"2024-03-20"},{"lineNumber":114,"author":{"gitId":"tohlh"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Telegram.class.getSimpleName());","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":119,"author":{"gitId":"STELLA-LYE"},"content":" public void toModelType_invalidMajor_throwsIllegalValueException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":121,"author":{"gitId":"STELLA-LYE"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_YEAR, VALID_TELEGRAM,","lastModifiedDate":"2024-03-18"},{"lineNumber":122,"author":{"gitId":"doyelee0313"},"content":" INVALID_MAJOR, VALID_REMARK, VALID_GROUPS);","lastModifiedDate":"2024-03-20"},{"lineNumber":123,"author":{"gitId":"STELLA-LYE"},"content":" String expectedMessage \u003d Major.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":128,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":129,"author":{"gitId":"tohlh"},"content":" public void toModelType_invalidYear_throwsIllegalValueException() {","lastModifiedDate":"2024-03-13"},{"lineNumber":130,"author":{"gitId":"tohlh"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_YEAR,","lastModifiedDate":"2024-03-15"},{"lineNumber":131,"author":{"gitId":"doyelee0313"},"content":" VALID_TELEGRAM, VALID_MAJOR, VALID_REMARK, VALID_GROUPS);","lastModifiedDate":"2024-03-20"},{"lineNumber":132,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":133,"author":{"gitId":"tohlh"},"content":" String expectedMessage \u003d Year.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-15"},{"lineNumber":134,"author":{"gitId":"tohlh"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-13"},{"lineNumber":135,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":136,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":137,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":138,"author":{"gitId":"tohlh"},"content":" public void toModelType_nullYear_throwsIllegalValueException() {","lastModifiedDate":"2024-03-13"},{"lineNumber":139,"author":{"gitId":"tohlh"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, null,","lastModifiedDate":"2024-03-15"},{"lineNumber":140,"author":{"gitId":"doyelee0313"},"content":" VALID_TELEGRAM, VALID_MAJOR, VALID_REMARK, VALID_GROUPS);","lastModifiedDate":"2024-03-20"},{"lineNumber":141,"author":{"gitId":"tohlh"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Year.class.getSimpleName());","lastModifiedDate":"2024-03-15"},{"lineNumber":142,"author":{"gitId":"tohlh"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-13"},{"lineNumber":143,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":145,"author":{"gitId":"STELLA-LYE"},"content":" public void toModelType_nullMajor_throwsIllegalValueException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"tohlh"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_YEAR,","lastModifiedDate":"2024-03-13"},{"lineNumber":147,"author":{"gitId":"doyelee0313"},"content":" VALID_TELEGRAM, null, VALID_REMARK, VALID_GROUPS);","lastModifiedDate":"2024-03-20"},{"lineNumber":148,"author":{"gitId":"STELLA-LYE"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Major.class.getSimpleName());","lastModifiedDate":"2024-03-17"},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":153,"author":{"gitId":"doyelee0313"},"content":" public void toModelType_invalidGroups_throwsIllegalValueException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":154,"author":{"gitId":"doyelee0313"},"content":" List\u003cJsonAdaptedGroup\u003e invalidGroups \u003d new ArrayList\u003c\u003e(VALID_GROUPS);","lastModifiedDate":"2024-03-20"},{"lineNumber":155,"author":{"gitId":"doyelee0313"},"content":" invalidGroups.add(new JsonAdaptedGroup(INVALID_GROUP));","lastModifiedDate":"2024-03-20"},{"lineNumber":156,"author":{"gitId":"tohlh"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_YEAR,","lastModifiedDate":"2024-03-17"},{"lineNumber":157,"author":{"gitId":"doyelee0313"},"content":" VALID_TELEGRAM, VALID_MAJOR, VALID_REMARK, invalidGroups);","lastModifiedDate":"2024-03-20"},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":161,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"doyelee0313":19,"STELLA-LYE":15,"-":93,"jocelyn-soh":1,"tohlh":33}},{"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":"doyelee0313"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-12-23"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":"import seedu.address.model.person.Major;","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-12-23"},{"lineNumber":14,"author":{"gitId":"jocelyn-soh"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"tohlh"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"tohlh"},"content":"import seedu.address.model.person.Year;","lastModifiedDate":"2024-03-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":"-"},"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":"STELLA-LYE"},"content":" descriptor.setMajor(person.getMajor());","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"tohlh"},"content":" descriptor.setTelegram(person.getTelegram());","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"jocelyn-soh"},"content":" descriptor.setRemark(person.getRemark());","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"doyelee0313"},"content":" descriptor.setGroups(person.getGroups());","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":51,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2017-12-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2017-12-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":67,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2017-12-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":72,"author":{"gitId":"tohlh"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-15"},{"lineNumber":73,"author":{"gitId":"tohlh"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":74,"author":{"gitId":"tohlh"},"content":" public EditPersonDescriptorBuilder withYear(String year) {","lastModifiedDate":"2024-03-15"},{"lineNumber":75,"author":{"gitId":"tohlh"},"content":" descriptor.setYear(new Year(year));","lastModifiedDate":"2024-03-15"},{"lineNumber":76,"author":{"gitId":"tohlh"},"content":" return this;","lastModifiedDate":"2024-03-15"},{"lineNumber":77,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":78,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":79,"author":{"gitId":"tohlh"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"tohlh"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"tohlh"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"tohlh"},"content":" public EditPersonDescriptorBuilder withTelegram(String year) {","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"tohlh"},"content":" descriptor.setTelegram(new Telegram(year));","lastModifiedDate":"2024-03-19"},{"lineNumber":84,"author":{"gitId":"tohlh"},"content":" return this;","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":88,"author":{"gitId":"STELLA-LYE"},"content":" * Sets the {@code Major} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":90,"author":{"gitId":"STELLA-LYE"},"content":" public EditPersonDescriptorBuilder withMajor(String major) {","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"STELLA-LYE"},"content":" descriptor.setMajor(new Major(major));","lastModifiedDate":"2024-03-17"},{"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":"jocelyn-soh"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"jocelyn-soh"},"content":" * Sets the {@code Remark} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"jocelyn-soh"},"content":" public EditPersonDescriptorBuilder withRemark(String remark) {","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"jocelyn-soh"},"content":" descriptor.setRemark(new Remark(remark));","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":104,"author":{"gitId":"doyelee0313"},"content":" * Parses the {@code groups} into a {@code Set\u003cGroup\u003e} and set it to the {@code EditPersonDescriptor}","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":107,"author":{"gitId":"doyelee0313"},"content":" public EditPersonDescriptorBuilder withGroups(String... groups) {","lastModifiedDate":"2024-03-20"},{"lineNumber":108,"author":{"gitId":"doyelee0313"},"content":" Set\u003cGroup\u003e groupSet \u003d Stream.of(groups).map(Group::new).collect(Collectors.toSet());","lastModifiedDate":"2024-03-20"},{"lineNumber":109,"author":{"gitId":"doyelee0313"},"content":" descriptor.setGroups(groupSet);","lastModifiedDate":"2024-03-20"},{"lineNumber":110,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":116,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"doyelee0313":6,"STELLA-LYE":5,"-":81,"jocelyn-soh":6,"tohlh":18}},{"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":"doyelee0313"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":"import seedu.address.model.person.Major;","lastModifiedDate":"2024-03-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":"jocelyn-soh"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"tohlh"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"tohlh"},"content":"import seedu.address.model.person.Year;","lastModifiedDate":"2024-03-13"},{"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":"tohlh"},"content":" public static final String DEFAULT_YEAR \u003d \"1\";","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"STELLA-LYE"},"content":" public static final String DEFAULT_MAJOR \u003d \"Computer Science\";","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"tohlh"},"content":" public static final String DEFAULT_TELEGRAM \u003d \"amy123\";","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"jocelyn-soh"},"content":" public static final String DEFAULT_REMARK \u003d \"shy\";","lastModifiedDate":"2024-03-19"},{"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":"tohlh"},"content":" private Year year;","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"STELLA-LYE"},"content":" private Major major;","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"tohlh"},"content":" private Telegram telegram;","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"jocelyn-soh"},"content":" private Remark remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"doyelee0313"},"content":" private Set\u003cGroup\u003e groups;","lastModifiedDate":"2024-03-20"},{"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":"tohlh"},"content":" year \u003d new Year(DEFAULT_YEAR);","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"STELLA-LYE"},"content":" major \u003d new Major(DEFAULT_MAJOR);","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"tohlh"},"content":" telegram \u003d new Telegram(DEFAULT_TELEGRAM);","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"jocelyn-soh"},"content":" remark \u003d new Remark(DEFAULT_REMARK);","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"doyelee0313"},"content":" groups \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-20"},{"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":"tohlh"},"content":" year \u003d personToCopy.getYear();","lastModifiedDate":"2024-03-13"},{"lineNumber":60,"author":{"gitId":"STELLA-LYE"},"content":" major \u003d personToCopy.getMajor();","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"tohlh"},"content":" telegram \u003d personToCopy.getTelegram();","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"jocelyn-soh"},"content":" remark \u003d personToCopy.getRemark();","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"doyelee0313"},"content":" groups \u003d new HashSet\u003c\u003e(personToCopy.getGroups());","lastModifiedDate":"2024-03-20"},{"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":"doyelee0313"},"content":" * Parses the {@code groups} into a {@code Set\u003cGroup\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":77,"author":{"gitId":"doyelee0313"},"content":" public PersonBuilder withGroups(String ... groups) {","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"doyelee0313"},"content":" this.groups \u003d SampleDataUtil.getGroupSet(groups);","lastModifiedDate":"2024-03-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":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":83,"author":{"gitId":"STELLA-LYE"},"content":" * Sets the {@code Major} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":85,"author":{"gitId":"STELLA-LYE"},"content":" public PersonBuilder withMajor(String major) {","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"STELLA-LYE"},"content":" this.major \u003d new Major(major);","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} 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":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":94,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20"},{"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":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":100,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":102,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20"},{"lineNumber":103,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":106,"author":{"gitId":"tohlh"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"tohlh"},"content":" * Sets the {@code Telegram} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"tohlh"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":109,"author":{"gitId":"tohlh"},"content":" public PersonBuilder withTelegram(String telegram) {","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"tohlh"},"content":" this.telegram \u003d new Telegram(telegram);","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"tohlh"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"tohlh"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":115,"author":{"gitId":"tohlh"},"content":" * Sets the {@code Year} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-13"},{"lineNumber":116,"author":{"gitId":"tohlh"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":117,"author":{"gitId":"tohlh"},"content":" public PersonBuilder withYear(String year) {","lastModifiedDate":"2024-03-13"},{"lineNumber":118,"author":{"gitId":"tohlh"},"content":" this.year \u003d new Year(year);","lastModifiedDate":"2024-03-13"},{"lineNumber":119,"author":{"gitId":"tohlh"},"content":" return this;","lastModifiedDate":"2024-03-13"},{"lineNumber":120,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":121,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":122,"author":{"gitId":"jocelyn-soh"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":123,"author":{"gitId":"jocelyn-soh"},"content":" * Sets the {@code Remark} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":124,"author":{"gitId":"jocelyn-soh"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":125,"author":{"gitId":"jocelyn-soh"},"content":" public PersonBuilder withRemark(String remark) {","lastModifiedDate":"2024-03-19"},{"lineNumber":126,"author":{"gitId":"jocelyn-soh"},"content":" this.remark \u003d new Remark(remark);","lastModifiedDate":"2024-03-19"},{"lineNumber":127,"author":{"gitId":"jocelyn-soh"},"content":" return this;","lastModifiedDate":"2024-03-19"},{"lineNumber":128,"author":{"gitId":"jocelyn-soh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":129,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":130,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05"},{"lineNumber":131,"author":{"gitId":"doyelee0313"},"content":" return new Person(name, phone, email, year, telegram, major, remark, groups);","lastModifiedDate":"2024-03-20"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":134,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03"}],"authorContributionMap":{"doyelee0313":8,"STELLA-LYE":8,"-":79,"jocelyn-soh":13,"tohlh":26}},{"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":"doyelee0313"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GROUP;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MAJOR;","lastModifiedDate":"2024-03-18"},{"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":"jocelyn-soh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_YEAR;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2018-03-26"},{"lineNumber":16,"author":{"gitId":"doyelee0313"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static String getAddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":28,"author":{"gitId":"-"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2017-03-29"},{"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":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" sb.append(PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2017-06-06"},{"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":"tohlh"},"content":" sb.append(PREFIX_YEAR + person.getYear().value + \" \");","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"STELLA-LYE"},"content":" sb.append(PREFIX_MAJOR + person.getMajor().value + \" \");","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"tohlh"},"content":" sb.append(PREFIX_TELEGRAM + person.getTelegram().value + \" \");","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"jocelyn-soh"},"content":" sb.append(PREFIX_REMARK + person.getRemark().value + \" \");","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"doyelee0313"},"content":" person.getGroups().stream().forEach(","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"doyelee0313"},"content":" s -\u003e sb.append(PREFIX_GROUP + s.groupName + \" \")","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":57,"author":{"gitId":"STELLA-LYE"},"content":" descriptor.getMajor().ifPresent(major -\u003e sb.append(PREFIX_MAJOR).append(major.value).append(\" \"));","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"tohlh"},"content":" descriptor.getYear().ifPresent(year -\u003e sb.append(PREFIX_YEAR).append(year.value).append(\" \"));","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"jocelyn-soh"},"content":" descriptor.getTelegram().ifPresent(telegram -\u003e sb.append(PREFIX_TELEGRAM).append(telegram.value).append(\" \"));","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"jocelyn-soh"},"content":" descriptor.getRemark().ifPresent(remark-\u003e sb.append(PREFIX_REMARK).append(remark.value).append(\" \"));","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"doyelee0313"},"content":" if (descriptor.getGroups().isPresent()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"doyelee0313"},"content":" Set\u003cGroup\u003e groups \u003d descriptor.getGroups().get();","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"doyelee0313"},"content":" if (groups.isEmpty()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"doyelee0313"},"content":" sb.append(PREFIX_GROUP);","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26"},{"lineNumber":66,"author":{"gitId":"doyelee0313"},"content":" groups.forEach(s -\u003e sb.append(PREFIX_GROUP).append(s.groupName).append(\" \"));","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05"}],"authorContributionMap":{"doyelee0313":9,"STELLA-LYE":3,"-":50,"jocelyn-soh":4,"tohlh":5}},{"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":"2017-08-22"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":5,"author":{"gitId":"doyelee0313"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GROUP_LAB;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"doyelee0313"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GROUP_TUTORIAL;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MAJOR_AMY;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MAJOR_BOB;","lastModifiedDate":"2024-03-18"},{"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":"jocelyn-soh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_REMARK_OUTSPOKEN;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"jocelyn-soh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_REMARK_SHY;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_YEAR_AMY;","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_YEAR_BOB;","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07"},{"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":"STELLA-LYE"},"content":" .withMajor(\"Computer Science\").withEmail(\"alice@example.com\")","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"tohlh"},"content":" .withYear(\"1\").withTelegram(\"alicepauline\")","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"jocelyn-soh"},"content":" .withPhone(\"94351253\").withRemark(\"shy\")","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"STELLA-LYE"},"content":" .withGroups(\"TUT10\", \"LAB05\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10"},{"lineNumber":38,"author":{"gitId":"STELLA-LYE"},"content":" .withMajor(\"Computer Science\")","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"tohlh"},"content":" .withYear(\"1\").withTelegram(\"bensonmeier\")","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"jocelyn-soh"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\").withRemark(\"always skip tutorials\")","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"doyelee0313"},"content":" .withGroups(\"TUT10\", \"LAB05\").build();","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"STELLA-LYE"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\")","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"tohlh"},"content":" .withPhone(\"95352563\").withTelegram(\"carlkurz\")","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"jocelyn-soh"},"content":" .withMajor(\"Computer Science\").withEmail(\"heinz@example.com\").withRemark(\"\")","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"doyelee0313"},"content":" .withYear(\"1\").withGroups(\"TUT10\").build();","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"STELLA-LYE"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\")","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"STELLA-LYE"},"content":" .withPhone(\"87652533\")","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"STELLA-LYE"},"content":" .withMajor(\"Computer Engineering\").withEmail(\"corelia@example.com\")","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"jocelyn-soh"},"content":" .withYear(\"1\").withTelegram(\"danielmeier\").withRemark(\"hardworking\")","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"doyelee0313"},"content":" .withGroups(\"TUT10\").build();","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"STELLA-LYE"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\")","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"STELLA-LYE"},"content":" .withPhone(\"9482224\")","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"STELLA-LYE"},"content":" .withEmail(\"werner@example.com\").withMajor(\"Computer Engineering\")","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"doyelee0313"},"content":" .withYear(\"2\").withTelegram(\"ellemeyer\").withRemark(\"strong foundations\")","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"doyelee0313"},"content":" .withGroups(\"TUT10\").build();","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"STELLA-LYE"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\")","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"STELLA-LYE"},"content":" .withPhone(\"9482427\")","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"STELLA-LYE"},"content":" .withEmail(\"lydia@example.com\").withMajor(\"Business Analytics\")","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"doyelee0313"},"content":" .withYear(\"2\").withTelegram(\"fionakunz1\").withRemark(\"Always ask questions in class\")","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"doyelee0313"},"content":" .withGroups(\"TUT10\").build();","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"STELLA-LYE"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\")","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"STELLA-LYE"},"content":" .withPhone(\"9482442\")","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"STELLA-LYE"},"content":" .withEmail(\"anna@example.com\").withMajor(\"Business Analytics\")","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"doyelee0313"},"content":" .withYear(\"2\").withTelegram(\"georgebest1\").withRemark(\"\")","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"doyelee0313"},"content":" .withGroups(\"TUT10\").build();","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2018-01-10"},{"lineNumber":69,"author":{"gitId":"STELLA-LYE"},"content":" .withEmail(\"stefan@example.com\").withYear(\"2\").withTelegram(\"hoon\").withMajor(\"Computer Science\").build();","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2018-01-10"},{"lineNumber":71,"author":{"gitId":"STELLA-LYE"},"content":" .withEmail(\"hans@example.com\").withYear(\"3\").withTelegram(\"ida1\").withMajor(\"Business Analytics\").build();","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2018-01-10"},{"lineNumber":75,"author":{"gitId":"tohlh"},"content":" .withEmail(VALID_EMAIL_AMY).withYear(VALID_YEAR_AMY).withTelegram(VALID_TELEGRAM_AMY)","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"doyelee0313"},"content":" .withMajor(VALID_MAJOR_AMY).withRemark(VALID_REMARK_SHY).withGroups(VALID_GROUP_TUTORIAL).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2018-01-10"},{"lineNumber":78,"author":{"gitId":"tohlh"},"content":" .withEmail(VALID_EMAIL_BOB).withYear(VALID_YEAR_BOB).withTelegram(VALID_TELEGRAM_BOB)","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"doyelee0313"},"content":" .withMajor(VALID_MAJOR_BOB).withRemark(VALID_REMARK_OUTSPOKEN).withGroups(VALID_GROUP_LAB,","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"doyelee0313"},"content":" VALID_GROUP_TUTORIAL)","lastModifiedDate":"2024-03-20"},{"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":{"doyelee0313":14,"STELLA-LYE":20,"-":52,"jocelyn-soh":6,"tohlh":9}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"doyelee0313"},"content":"[![CI Status](https://github.com/se-edu/addressbook-level3/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S2-CS2103T-W10-4/tp/actions)","lastModifiedDate":"2024-03-06"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":"![Ui](docs/images/UpdatedUi.png)","lastModifiedDate":"2024-03-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"doyelee0313"},"content":"# TutorsContactsPro","lastModifiedDate":"2024-03-06"},{"lineNumber":6,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":7,"author":{"gitId":"doyelee0313"},"content":"* TutorsContactsPro is a app for computer science tutor managing students for tutorials (all cs course or type of teaching)","lastModifiedDate":"2024-03-06"},{"lineNumber":8,"author":{"gitId":"doyelee0313"},"content":"* TutorsContactsPro allows tutors to have faster and more convenient access to their list of students (from different classes), optimized for those who prefer a clean UI with the use of CLI.","lastModifiedDate":"2024-03-06"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":"* The project simulates an ongoing software project for a desktop application (called _AddressBook_) used for managing contact details.","lastModifiedDate":"2020-05-23"},{"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":"doyelee0313"},"content":"* It is named `TutorsContactsPro` (`TCP` for short) which means it is a pro-version app for tutors to manage their students","lastModifiedDate":"2024-03-06"},{"lineNumber":14,"author":{"gitId":"doyelee0313"},"content":"* For the detailed documentation of this project, see the **[Address Book Product Website](https://ay2324s2-cs2103t-w10-4.github.io/tp/index.html)**.","lastModifiedDate":"2024-03-06"},{"lineNumber":15,"author":{"gitId":"-"},"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":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"doyelee0313"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"doyelee0313":8,"STELLA-LYE":1,"-":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":"-"},"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":"STELLA-LYE"},"content":" archiveFileName \u003d \u0027TutorsContactsPro.jar\u0027","lastModifiedDate":"2024-03-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"STELLA-LYE"},"content":"run {","lastModifiedDate":"2024-03-22"},{"lineNumber":73,"author":{"gitId":"STELLA-LYE"},"content":" enableAssertions \u003d true","lastModifiedDate":"2024-03-22"},{"lineNumber":74,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-03-22"},{"lineNumber":75,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":76,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":"defaultTasks \u0027clean\u0027, \u0027test\u0027","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"STELLA-LYE":6,"-":71}},{"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":"doyelee0313"},"content":"### Doye Lee","lastModifiedDate":"2024-03-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"doyelee0313"},"content":"\u003cimg src\u003d\"images/doyelee0313.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"doyelee0313"},"content":"[[github](https://github.com/doyelee0313)]","lastModifiedDate":"2024-03-05"},{"lineNumber":19,"author":{"gitId":"doyelee0313"},"content":"[[portfolio](team/doyelee0313.md)]","lastModifiedDate":"2024-03-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"doyelee0313"},"content":"* Role: Developer","lastModifiedDate":"2024-03-06"},{"lineNumber":22,"author":{"gitId":"doyelee0313"},"content":"* Responsibilities: Development + UI + Documentation","lastModifiedDate":"2024-03-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"jocelyn-soh"},"content":"### Soh Kia Hwee Jocelyn","lastModifiedDate":"2024-03-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"jocelyn-soh"},"content":"\u003cimg src\u003d\"images/jocelyn-soh.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"jocelyn-soh"},"content":"[[github](https://github.com/jocelyn-soh)]","lastModifiedDate":"2024-03-06"},{"lineNumber":29,"author":{"gitId":"jocelyn-soh"},"content":"[[portfolio](team/jocelyn-soh.md)]","lastModifiedDate":"2024-03-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2024-03-06"},{"lineNumber":32,"author":{"gitId":"jocelyn-soh"},"content":"* Responsibilities: Dev Ops + Development + Code Quality","lastModifiedDate":"2024-03-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"STELLA-LYE"},"content":"### Stella Lye Si Yu","lastModifiedDate":"2024-03-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"STELLA-LYE"},"content":"\u003cimg src\u003d\"images/stella-lye.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"STELLA-LYE"},"content":"[[homepage](http://STELLA-LYE.github.io)]","lastModifiedDate":"2024-03-04"},{"lineNumber":39,"author":{"gitId":"STELLA-LYE"},"content":"[[github](https://github.com/STELLA-LYE)]","lastModifiedDate":"2024-03-04"},{"lineNumber":40,"author":{"gitId":"STELLA-LYE"},"content":"[[portfolio](team/stella-lye.md)]","lastModifiedDate":"2024-03-07"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"STELLA-LYE"},"content":"* Responsibilities: Dev Ops + Development + UI","lastModifiedDate":"2024-03-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"tohlh"},"content":"### Toh Li Heng","lastModifiedDate":"2024-03-04"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"tohlh"},"content":"\u003cimg src\u003d\"images/tohlh.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"tohlh"},"content":"[[homepage](http://tohlh.github.io)]","lastModifiedDate":"2024-03-04"},{"lineNumber":50,"author":{"gitId":"tohlh"},"content":"[[github](http://github.com/tohlh)]","lastModifiedDate":"2024-03-04"},{"lineNumber":51,"author":{"gitId":"tohlh"},"content":"[[portfolio](team/tohlh.md)]","lastModifiedDate":"2024-03-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"tohlh"},"content":"* Responsibilities: Dev Ops + Development","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"doyelee0313":6,"STELLA-LYE":6,"-":31,"jocelyn-soh":5,"tohlh":6}},{"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":"STELLA-LYE"},"content":"1. Update the version number in [`MainApp.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/major/MainApp.java).","lastModifiedDate":"2024-03-17"},{"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":{"STELLA-LYE":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":"jocelyn-soh"},"content":"# TutorsContactsPro Developer Guide","lastModifiedDate":"2024-03-06"},{"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":"STELLA-LYE"},"content":"**`Main`** (consisting of classes [`Main`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/major/Main.java) and [`MainApp`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/major/MainApp.java)) is in charge of the app launch and shut down.","lastModifiedDate":"2024-03-17"},{"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":"STELLA-LYE"},"content":"The **API** of this component is specified in [`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/major/ui/Ui.java)","lastModifiedDate":"2024-03-17"},{"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":"STELLA-LYE"},"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/major/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2024-03-17"},{"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":"STELLA-LYE"},"content":"**API** : [`Logic.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/major/logic/Logic.java)","lastModifiedDate":"2024-03-17"},{"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 continues till 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).\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-02-09"},{"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":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12"},{"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":"STELLA-LYE"},"content":"**API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/major/model/Model.java)","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"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":"STELLA-LYE"},"content":"* stores the major book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2024-03-17"},{"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":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":133,"author":{"gitId":"doyelee0313"},"content":"**Note:** An alternative (arguably, a more OOP) model is given below. It has a `Group` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Group` object per unique group, instead of each `Person` needing their own `Group` objects.\u003cbr\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":135,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"STELLA-LYE"},"content":"**API** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/major/storage/Storage.java)","lastModifiedDate":"2024-03-17"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"STELLA-LYE"},"content":"* can save both major book data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2024-03-17"},{"lineNumber":148,"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":149,"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":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","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":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"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":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"STELLA-LYE"},"content":"* `VersionedAddressBook#commit()` — Saves the current major book state in its history.","lastModifiedDate":"2024-03-17"},{"lineNumber":168,"author":{"gitId":"STELLA-LYE"},"content":"* `VersionedAddressBook#undo()` — Restores the previous major book state from its history.","lastModifiedDate":"2024-03-17"},{"lineNumber":169,"author":{"gitId":"STELLA-LYE"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone major book state from its history.","lastModifiedDate":"2024-03-17"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"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":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"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":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"STELLA-LYE"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial major book state, and the `currentStatePointer` pointing to that single major book state.","lastModifiedDate":"2024-03-17"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"STELLA-LYE"},"content":"Step 2. The user executes `delete 5` command to delete the 5th person in the major book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the major book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted major book state.","lastModifiedDate":"2024-03-17"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"STELLA-LYE"},"content":"Step 3. The user executes `add n/David …​` to add a new person. The `add` command also calls `Model#commitAddressBook()`, causing another modified major book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2024-03-17"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"STELLA-LYE"},"content":"**Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the major book state will not be saved into the `addressBookStateList`.","lastModifiedDate":"2024-03-17"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":191,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"STELLA-LYE"},"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 major book state, and restores the major book to that state.","lastModifiedDate":"2024-03-17"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":198,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"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":201,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"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":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":213,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":217,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":219,"author":{"gitId":"STELLA-LYE"},"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 major book to that state.","lastModifiedDate":"2024-03-17"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":223,"author":{"gitId":"STELLA-LYE"},"content":"**Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest major 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":"2024-03-17"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"STELLA-LYE"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the major book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2024-03-17"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"STELLA-LYE"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all major 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":"2024-03-17"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"STELLA-LYE"},"content":"* **Alternative 1 (current choice):** Saves the entire major book.","lastModifiedDate":"2024-03-17"},{"lineNumber":244,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","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":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":264,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":265,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":266,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":267,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"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":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":277,"author":{"gitId":"STELLA-LYE"},"content":"* A computer science tutor managing students for tutorials","lastModifiedDate":"2024-03-06"},{"lineNumber":278,"author":{"gitId":"STELLA-LYE"},"content":"* has numerous of students to manage in a tutorial slot","lastModifiedDate":"2024-03-06"},{"lineNumber":279,"author":{"gitId":"STELLA-LYE"},"content":"* has to add, list, delete, sort, search students in the app","lastModifiedDate":"2024-03-06"},{"lineNumber":280,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23"},{"lineNumber":281,"author":{"gitId":"STELLA-LYE"},"content":"* can type fast","lastModifiedDate":"2024-03-06"},{"lineNumber":282,"author":{"gitId":"STELLA-LYE"},"content":"* can switch between different tutorial classes","lastModifiedDate":"2024-03-06"},{"lineNumber":283,"author":{"gitId":"STELLA-LYE"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2024-03-06"},{"lineNumber":284,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":286,"author":{"gitId":"STELLA-LYE"},"content":"**Value proposition**: manage students faster than a typical GUI driven app","lastModifiedDate":"2024-03-06"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":288,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":289,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":291,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":293,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":294,"author":{"gitId":"STELLA-LYE"},"content":"|----------|----------------|---------------------------------------------|------------------------------------------------------------------|","lastModifiedDate":"2024-03-06"},{"lineNumber":295,"author":{"gitId":"STELLA-LYE"},"content":"| `* * *` | Tutor | add new students to the app | keep track of their information |","lastModifiedDate":"2024-03-06"},{"lineNumber":296,"author":{"gitId":"STELLA-LYE"},"content":"| `* * *` | Tutor | edit student profiles | keep their information up to date. |","lastModifiedDate":"2024-03-06"},{"lineNumber":297,"author":{"gitId":"STELLA-LYE"},"content":"| `* * *` | Tutor | delete students from my class | track the existing number of students in my tutorial class |","lastModifiedDate":"2024-03-06"},{"lineNumber":298,"author":{"gitId":"STELLA-LYE"},"content":"| `* * *` | Tutor | list all students in my class(es) | view all of my students’ details at one glance |","lastModifiedDate":"2024-03-06"},{"lineNumber":299,"author":{"gitId":"STELLA-LYE"},"content":"| `* * *` | Tutor | search for specific students using keywords | quickly find relevant information |","lastModifiedDate":"2024-03-06"},{"lineNumber":300,"author":{"gitId":"STELLA-LYE"},"content":"| `* *` | new tutor user | be able to access a help window | easily seek help for the errors encountered |","lastModifiedDate":"2024-03-06"},{"lineNumber":301,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":302,"author":{"gitId":"-"},"content":"","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":"STELLA-LYE"},"content":"(For all use cases below, the **System** is the `TutorsContactsPro` and the **Actor** is the `Tutor`, unless specified otherwise)","lastModifiedDate":"2024-03-06"},{"lineNumber":307,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":308,"author":{"gitId":"STELLA-LYE"},"content":"**Use case: UC01 - Add a student**","lastModifiedDate":"2024-03-06"},{"lineNumber":309,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":310,"author":{"gitId":"STELLA-LYE"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":311,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":312,"author":{"gitId":"STELLA-LYE"},"content":"1. Tutor requests to list students","lastModifiedDate":"2024-03-06"},{"lineNumber":313,"author":{"gitId":"STELLA-LYE"},"content":"2. System shows a list of students","lastModifiedDate":"2024-03-06"},{"lineNumber":314,"author":{"gitId":"STELLA-LYE"},"content":"3. Tutor requests to add a specific student to the list","lastModifiedDate":"2024-03-06"},{"lineNumber":315,"author":{"gitId":"STELLA-LYE"},"content":"4. System adds the student","lastModifiedDate":"2024-03-06"},{"lineNumber":316,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":317,"author":{"gitId":"STELLA-LYE"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":318,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":319,"author":{"gitId":"STELLA-LYE"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":320,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":321,"author":{"gitId":"STELLA-LYE"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-03-06"},{"lineNumber":322,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":323,"author":{"gitId":"STELLA-LYE"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":324,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":325,"author":{"gitId":"STELLA-LYE"},"content":"* 3a. The add command parameters are invalid or incomplete.","lastModifiedDate":"2024-03-06"},{"lineNumber":326,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":327,"author":{"gitId":"STELLA-LYE"},"content":" * 3a1. TutorsContactsPro shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":328,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":329,"author":{"gitId":"STELLA-LYE"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-06"},{"lineNumber":330,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":331,"author":{"gitId":"STELLA-LYE"},"content":"* 3b. TutorsContactsPro detects that the student already exists on the list.","lastModifiedDate":"2024-03-06"},{"lineNumber":332,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":333,"author":{"gitId":"STELLA-LYE"},"content":" * 3b1. TutorsContactsPro informs the tutor that the student already exists on the list.","lastModifiedDate":"2024-03-06"},{"lineNumber":334,"author":{"gitId":"STELLA-LYE"},"content":" * 3b2. Tutor confirms cancellation of adding the student.","lastModifiedDate":"2024-03-06"},{"lineNumber":335,"author":{"gitId":"STELLA-LYE"},"content":" ","lastModifiedDate":"2024-03-06"},{"lineNumber":336,"author":{"gitId":"STELLA-LYE"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":337,"author":{"gitId":"STELLA-LYE"},"content":" ","lastModifiedDate":"2024-03-06"},{"lineNumber":338,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":339,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":340,"author":{"gitId":"STELLA-LYE"},"content":"**Use case: UC02 - Edit a student**","lastModifiedDate":"2024-03-06"},{"lineNumber":341,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":342,"author":{"gitId":"STELLA-LYE"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":343,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":344,"author":{"gitId":"STELLA-LYE"},"content":"1. Tutor requests to list students","lastModifiedDate":"2024-03-06"},{"lineNumber":345,"author":{"gitId":"STELLA-LYE"},"content":"2. System shows a list of students","lastModifiedDate":"2024-03-06"},{"lineNumber":346,"author":{"gitId":"STELLA-LYE"},"content":"3. Tutor requests to edits the particulars of the student","lastModifiedDate":"2024-03-06"},{"lineNumber":347,"author":{"gitId":"STELLA-LYE"},"content":"4. System records the changes","lastModifiedDate":"2024-03-06"},{"lineNumber":348,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":349,"author":{"gitId":"STELLA-LYE"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":350,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":351,"author":{"gitId":"STELLA-LYE"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":352,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":353,"author":{"gitId":"STELLA-LYE"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-03-06"},{"lineNumber":354,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":355,"author":{"gitId":"STELLA-LYE"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":356,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":357,"author":{"gitId":"STELLA-LYE"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2024-03-06"},{"lineNumber":358,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":359,"author":{"gitId":"STELLA-LYE"},"content":" * 3a1. TutorsContactsPro shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":360,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":361,"author":{"gitId":"STELLA-LYE"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-06"},{"lineNumber":362,"author":{"gitId":"STELLA-LYE"},"content":" ","lastModifiedDate":"2024-03-06"},{"lineNumber":363,"author":{"gitId":"STELLA-LYE"},"content":"* 3b. The edit command parameters are invalid or incomplete.","lastModifiedDate":"2024-03-06"},{"lineNumber":364,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":365,"author":{"gitId":"STELLA-LYE"},"content":" * 3b1. TutorsContactsPro shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":366,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":367,"author":{"gitId":"STELLA-LYE"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-06"},{"lineNumber":368,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":369,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":370,"author":{"gitId":"STELLA-LYE"},"content":"**Use case: UC03 - Delete a student**","lastModifiedDate":"2024-03-06"},{"lineNumber":371,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":372,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":373,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":374,"author":{"gitId":"STELLA-LYE"},"content":"1. Tutor requests to list students","lastModifiedDate":"2024-03-06"},{"lineNumber":375,"author":{"gitId":"STELLA-LYE"},"content":"2. System shows a list of students","lastModifiedDate":"2024-03-06"},{"lineNumber":376,"author":{"gitId":"STELLA-LYE"},"content":"3. Tutor requests to delete a student","lastModifiedDate":"2024-03-06"},{"lineNumber":377,"author":{"gitId":"STELLA-LYE"},"content":"4. System records the changes","lastModifiedDate":"2024-03-06"},{"lineNumber":378,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":379,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":380,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":381,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":382,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":383,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2020-05-23"},{"lineNumber":384,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":385,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":386,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":387,"author":{"gitId":"-"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2020-05-23"},{"lineNumber":388,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":389,"author":{"gitId":"STELLA-LYE"},"content":" * 3a1. TutorsContactsPro shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":390,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":391,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-06"},{"lineNumber":392,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":393,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":394,"author":{"gitId":"STELLA-LYE"},"content":"**Use case: UC04 - List all students**","lastModifiedDate":"2024-03-06"},{"lineNumber":395,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":396,"author":{"gitId":"STELLA-LYE"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":397,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":398,"author":{"gitId":"STELLA-LYE"},"content":"1. Tutor requests to list students","lastModifiedDate":"2024-03-06"},{"lineNumber":399,"author":{"gitId":"STELLA-LYE"},"content":"2. System shows a list of students","lastModifiedDate":"2024-03-06"},{"lineNumber":400,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":401,"author":{"gitId":"STELLA-LYE"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":402,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":403,"author":{"gitId":"STELLA-LYE"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":404,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":405,"author":{"gitId":"STELLA-LYE"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-03-06"},{"lineNumber":406,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":407,"author":{"gitId":"STELLA-LYE"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":408,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":409,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":410,"author":{"gitId":"STELLA-LYE"},"content":"**Use case: UC05 - Find a student**","lastModifiedDate":"2024-03-06"},{"lineNumber":411,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":412,"author":{"gitId":"STELLA-LYE"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":413,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":414,"author":{"gitId":"STELLA-LYE"},"content":"1. Tutor requests to list students","lastModifiedDate":"2024-03-06"},{"lineNumber":415,"author":{"gitId":"STELLA-LYE"},"content":"2. System shows a list of students","lastModifiedDate":"2024-03-06"},{"lineNumber":416,"author":{"gitId":"STELLA-LYE"},"content":"3. Tutor finds student(s) by keyword","lastModifiedDate":"2024-03-06"},{"lineNumber":417,"author":{"gitId":"STELLA-LYE"},"content":"4. System shows a list of students matching the keyword","lastModifiedDate":"2024-03-06"},{"lineNumber":418,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":419,"author":{"gitId":"STELLA-LYE"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":420,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":421,"author":{"gitId":"STELLA-LYE"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":422,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":423,"author":{"gitId":"STELLA-LYE"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-03-06"},{"lineNumber":424,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":425,"author":{"gitId":"STELLA-LYE"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":426,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":427,"author":{"gitId":"STELLA-LYE"},"content":"* 3a. The given keyword is in an incorrect format (e.g., contains special characters not allowed, exceeds maximum length).","lastModifiedDate":"2024-03-06"},{"lineNumber":428,"author":{"gitId":"STELLA-LYE"},"content":" ","lastModifiedDate":"2024-03-06"},{"lineNumber":429,"author":{"gitId":"STELLA-LYE"},"content":" * 3a1. TutorsContactsPro shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":430,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23"},{"lineNumber":431,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":432,"author":{"gitId":"STELLA-LYE"},"content":"* 4a. The list of search results is empty.","lastModifiedDate":"2024-03-06"},{"lineNumber":433,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":434,"author":{"gitId":"STELLA-LYE"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":435,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":436,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":437,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":438,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":439,"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":440,"author":{"gitId":"STELLA-LYE"},"content":"2. 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":"2024-03-06"},{"lineNumber":441,"author":{"gitId":"STELLA-LYE"},"content":"3. Should be able to list a maximum of 50 students within a single tutorial slot.","lastModifiedDate":"2024-03-06"},{"lineNumber":442,"author":{"gitId":"STELLA-LYE"},"content":"4. Should be able to hold a maximum of 300 students in total without any significant decrease in performance.","lastModifiedDate":"2024-03-06"},{"lineNumber":443,"author":{"gitId":"STELLA-LYE"},"content":"5. Any command should be visible within 3 seconds, ensuring a smooth and efficient user experience.","lastModifiedDate":"2024-03-06"},{"lineNumber":444,"author":{"gitId":"STELLA-LYE"},"content":"6. The system should have an uptime of at least 99%, allowing tutors to access student information reliably at any time.","lastModifiedDate":"2024-03-06"},{"lineNumber":445,"author":{"gitId":"STELLA-LYE"},"content":"7. Student important information (i.e name, email, telegram handle, contact number) should be encrypted both in transit and at rest to prevent unauthorized access.","lastModifiedDate":"2024-03-06"},{"lineNumber":446,"author":{"gitId":"STELLA-LYE"},"content":"8. The system should implement secure authentication mechanisms, such as multi-factor authentication, to verify the identity of users.","lastModifiedDate":"2024-03-06"},{"lineNumber":447,"author":{"gitId":"STELLA-LYE"},"content":"9. Tutors should only have access to student information for classes they are assigned to, ensuring data privacy.","lastModifiedDate":"2024-03-06"},{"lineNumber":448,"author":{"gitId":"STELLA-LYE"},"content":"10. The system should be able to scale horizontally to accommodate an increase in the number of users and classes without compromising performance.","lastModifiedDate":"2024-03-06"},{"lineNumber":449,"author":{"gitId":"STELLA-LYE"},"content":"11. Regular backups of the system database should be performed, with a robust disaster recovery plan in place to restore data in case of any unexpected failures or outages.","lastModifiedDate":"2024-03-06"},{"lineNumber":450,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":451,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":452,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":453,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":454,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09"},{"lineNumber":455,"author":{"gitId":"STELLA-LYE"},"content":"* **Tutor**: Tutor refers to the person who teaches in a single tutorial group. ","lastModifiedDate":"2024-03-06"},{"lineNumber":456,"author":{"gitId":"STELLA-LYE"},"content":"* **Student**: Student refers to an individual who attends a tutorial class taught by the tutor.","lastModifiedDate":"2024-03-06"},{"lineNumber":457,"author":{"gitId":"STELLA-LYE"},"content":"* **Tutorial**: Smaller classes in university which allow discussion of lecture content and assignment.","lastModifiedDate":"2024-03-06"},{"lineNumber":458,"author":{"gitId":"STELLA-LYE"},"content":"* **CLI (Command-Line Interface)**: A text-based interface used to interact with the software by entering commands into a terminal or console window, typically preferred by users who prefer efficiency and automation.","lastModifiedDate":"2024-03-06"},{"lineNumber":459,"author":{"gitId":"STELLA-LYE"},"content":"* **GUI (Graphical User Interface)**: A GUI is a user interface that employs graphical elements such as icons, buttons, and menus for user interaction, providing an intuitive and visually appealing way to navigate and use software.","lastModifiedDate":"2024-03-06"},{"lineNumber":460,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":461,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":462,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":463,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":464,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":465,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":466,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":467,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":468,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":469,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":470,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":471,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12"},{"lineNumber":472,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":473,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":474,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":475,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":476,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":477,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":478,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":479,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":480,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":481,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":482,"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":483,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":484,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":485,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":486,"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":487,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":488,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":489,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","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"},{"lineNumber":492,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":493,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":494,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":495,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":496,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":497,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":498,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":499,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":500,"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":501,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":502,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":503,"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":504,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":505,"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":506,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":507,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":508,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":509,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":510,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":511,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":512,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":513,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":514,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":515,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":516,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"doyelee0313":1,"STELLA-LYE":162,"-":352,"jocelyn-soh":1}},{"path":"docs/SettingUp.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: \"Setting up and getting started\"","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":"# Setting up and getting started","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":"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":"## Setting up the project in your computer","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"**Caution:**","lastModifiedDate":"2023-09-12"},{"lineNumber":19,"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":20,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"First, **fork** this repo, and **clone** the fork into your computer.","lastModifiedDate":"2020-06-07"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-07"},{"lineNumber":24,"author":{"gitId":"-"},"content":"If you plan to use Intellij IDEA (highly recommended):","lastModifiedDate":"2020-06-07"},{"lineNumber":25,"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":26,"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.","lastModifiedDate":"2023-09-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" Note: Importing a Gradle project is slightly different from importing a normal Java project.","lastModifiedDate":"2023-09-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"1. **Verify the setup**:","lastModifiedDate":"2020-06-07"},{"lineNumber":31,"author":{"gitId":"STELLA-LYE"},"content":" 1. Run the `seedu.major.Main` and try a few commands.","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"-"},"content":" 1. [Run the tests](Testing.md) to ensure they all pass.","lastModifiedDate":"2020-06-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"## Before writing code","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"1. **Configure the coding style**","lastModifiedDate":"2020-06-07"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"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":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" **Tip:**","lastModifiedDate":"2023-09-12"},{"lineNumber":45,"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":46,"author":{"gitId":"-"},"content":" \u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"1. **Set up CI**","lastModifiedDate":"2020-06-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"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":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"1. **Learn the design**","lastModifiedDate":"2020-06-07"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"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":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"1. **Do the tutorials**","lastModifiedDate":"2020-06-07"},{"lineNumber":57,"author":{"gitId":"-"},"content":" These tutorials will help you get acquainted with the codebase.","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * [Tracing code](tutorials/TracingCode.md)","lastModifiedDate":"2020-07-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * [Adding a new command](tutorials/AddRemark.md)","lastModifiedDate":"2020-07-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * [Removing fields](tutorials/RemovingFields.md)","lastModifiedDate":"2021-08-01"}],"authorContributionMap":{"STELLA-LYE":1,"-":60}},{"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":"STELLA-LYE"},"content":" e.g. `seedu.major.commons.StringUtilTest`","lastModifiedDate":"2024-03-17"},{"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":"STELLA-LYE"},"content":" e.g. `seedu.major.storage.StorageManagerTest`","lastModifiedDate":"2024-03-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":"STELLA-LYE"},"content":" e.g. `seedu.major.logic.LogicManagerTest`","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"STELLA-LYE":3,"-":38}},{"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":"jocelyn-soh"},"content":"# TutorsContactsPro User Guide","lastModifiedDate":"2024-03-06"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"jocelyn-soh"},"content":"TutorsContactsPro is a **desktop app for tutors teaching Computer Science courses to manage their students, optimized for use via a Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, TutorsContactsPro can help you to gain faster and more convenient access to your list of students, even if they are from different classes.","lastModifiedDate":"2024-03-06"},{"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":"STELLA-LYE"},"content":"## Quick Overview","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"STELLA-LYE"},"content":"* [Quick start ](#feature-start)","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"STELLA-LYE"},"content":"* [Features ](#feature-features)","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"STELLA-LYE"},"content":" * [Viewing help: `help` ](#feature-help)","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"STELLA-LYE"},"content":" * [Listing all students: `list` ](#feature-list)","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"STELLA-LYE"},"content":" * [Adding a student: `add`](#feature-add)","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"STELLA-LYE"},"content":" * [Editing a student: `edit`](#feature-edit)","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"STELLA-LYE"},"content":" * [Locating students using keyword: `find`](#feature-find)","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"STELLA-LYE"},"content":" * [Filtering students using group: `filter`](#feature-filter)","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"STELLA-LYE"},"content":" * [Deleting a student: `delete`](#feature-delete)","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"STELLA-LYE"},"content":" * [Mail broadcast: `mail`](#feature-mail)","lastModifiedDate":"2024-03-24"},{"lineNumber":35,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":36,"author":{"gitId":"STELLA-LYE"},"content":" * [Clearing all entries: `clear`](#feature-clear)","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"STELLA-LYE"},"content":" * [Exiting the program: `exit` ](#feature-exit)","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"STELLA-LYE"},"content":"* [FAQ](#feature-faq)","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"STELLA-LYE"},"content":"* [Known issues](#feature-issues)","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"STELLA-LYE"},"content":"* [Command Summary](#feature-summary)","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"STELLA-LYE"},"content":"## \u003cspan id\u003d\u0027feature-start\u0027\u003e Quick start \u003cspan\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"STELLA-LYE"},"content":"\u003e [!important]","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"STELLA-LYE"},"content":"\u003e 1. Ensure you have Java `11` or above installed in your Computer.","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"STELLA-LYE"},"content":"[//]: # (\u003cbox type\u003d\"info\" seamless\u003e)","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"STELLA-LYE"},"content":"2. Download the latest `addressbook.jar` from [here](https://github.com/se-edu/addressbook-level3/releases).","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"STELLA-LYE"},"content":"3. Copy the file to the folder you want to use as the _home folder_ for your AddressBook.","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"STELLA-LYE"},"content":"4. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar addressbook.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"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":61,"author":{"gitId":"STELLA-LYE"},"content":" ![Ui](images/UpdatedUi.png)","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"STELLA-LYE"},"content":"4. 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":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"STELLA-LYE"},"content":" * `list` : Lists all students.","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"doyelee0313"},"content":" * `add n/John Doe p/98765432 e/johnd@example.com y/2 m/Computer Science tg/johndoe r/Very quiet student g/TUT04 g/LAB10 ` : Adds a student named `John Doe` to the list.","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"doyelee0313"},"content":" * `edit 1 p/93840823 y/3 tg/jiejfh203` : Edits the first student on the current list. ","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"jocelyn-soh"},"content":" * `find John Tan` : Lists all the students with names that matches \u0027John\u0027 or \u0027Tan\u0027.","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"jocelyn-soh"},"content":" * `filter TUT10` : Lists all the students in group \u0027TUT10\u0027","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":76,"author":{"gitId":"STELLA-LYE"},"content":" * `delete 3` : Deletes the 3rd student shown in the current list.","lastModifiedDate":"2024-03-11"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":78,"author":{"gitId":"STELLA-LYE"},"content":" * `clear` : Deletes all students on the list.","lastModifiedDate":"2024-03-11"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":83,"author":{"gitId":"STELLA-LYE"},"content":"5. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2024-03-11"},{"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":"STELLA-LYE"},"content":"## \u003cspan id\u003d\u0027feature-features\u0027\u003e Features \u003cspan\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"STELLA-LYE"},"content":"[//]: # (\u003cbox type\u003d\"info\" seamless\u003e)","lastModifiedDate":"2024-03-11"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"**Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"STELLA-LYE"},"content":"| Command format | Representation | Examples |","lastModifiedDate":"2024-03-11"},{"lineNumber":94,"author":{"gitId":"STELLA-LYE"},"content":"|-----------------------|---------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------|","lastModifiedDate":"2024-03-11"},{"lineNumber":95,"author":{"gitId":"STELLA-LYE"},"content":"| `UPPER_CASE` | Words in `UPPER_CASE` are the parameters to be supplied by the user | in `add n/NAME`, `NAME` is a parameter which can be used as `add n/John Doe` |","lastModifiedDate":"2024-03-11"},{"lineNumber":96,"author":{"gitId":"doyelee0313"},"content":"| square brackets `[]` | Items in square brackets are optional | `n/NAME [g/Group]` can be used as `n/John Doe g/TUT` or as `n/John Doe` |","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"doyelee0313"},"content":"| `…` | Items with `…`​ after them can be used multiple times including zero times | `[g/GROUP]…​` can be used as `g/TUT03`, `g/LAB01`, `g/REC08` etc |","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"STELLA-LYE"},"content":"| Order | Parameters can be in any order | if the command specifies `n/NAME p/PHONE_NUMBER`, `p/PHONE_NUMBER n/NAME` is also acceptable. |","lastModifiedDate":"2024-03-11"},{"lineNumber":99,"author":{"gitId":"STELLA-LYE"},"content":"| Extraneous parameters | Extraneous parameters for commands that do not take in parameters (such as `help`, `list`, `exit` and `clear`) will be ignored | if the command specifies `help 123`, it will be interpreted as `help` | | Singapore phone number, 8 digits, without country code |","lastModifiedDate":"2024-03-11"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"STELLA-LYE"},"content":"\u003e [!Note]","lastModifiedDate":"2024-03-11"},{"lineNumber":102,"author":{"gitId":"STELLA-LYE"},"content":"\u003e 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":"2024-03-11"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"STELLA-LYE"},"content":"### \u003cspan id\u003d\u0027feature-help\u0027\u003e Viewing help : `help` \u003c/span\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"STELLA-LYE"},"content":"Allows you to easily access tge features in TutorsContactsPro","lastModifiedDate":"2024-03-11"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":108,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2024-03-11"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2024-03-11"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"STELLA-LYE"},"content":"### \u003cspan id\u003d\u0027feature-list\u0027\u003e Listing all students : `list` \u003c/span\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"STELLA-LYE"},"content":"Shows a list of all your students.","lastModifiedDate":"2024-03-11"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"STELLA-LYE"},"content":"Format: `list`","lastModifiedDate":"2024-03-11"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"STELLA-LYE"},"content":"**Tip:** Auto-capitalization will be handled. Extra/trailing/leading spaces will be removed","lastModifiedDate":"2024-03-11"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","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":"STELLA-LYE"},"content":"### \u003cspan id\u003d\u0027feature-add\u0027\u003e Adding a student: `add` \u003c/span\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"STELLA-LYE"},"content":"You can add a student to the list.","lastModifiedDate":"2024-03-11"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":126,"author":{"gitId":"doyelee0313"},"content":"Format: `add n/NAME p/PHONE_NUMBER e/EMAIL y/YEAR m/MAJOR tg/TELEGRAM_HANDLE [r/REMARK] [g/Group]...`","lastModifiedDate":"2024-03-20"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"STELLA-LYE"},"content":"| Parameter | Representation | Constraints |","lastModifiedDate":"2024-03-11"},{"lineNumber":130,"author":{"gitId":"STELLA-LYE"},"content":"|-------------------|---------------------------------------|-----------------------------------------------------------------------------------------|","lastModifiedDate":"2024-03-24"},{"lineNumber":131,"author":{"gitId":"jocelyn-soh"},"content":"| `NAME` | Name of the student | Auto-capitalization will be handled. Extra/trailing/leading spaces will be removed |","lastModifiedDate":"2024-03-21"},{"lineNumber":132,"author":{"gitId":"doyelee0313"},"content":"| `PHONE_NUMBER` | Phone number of the student | Singapore phone number, 8 digits, without country code |","lastModifiedDate":"2024-03-20"},{"lineNumber":133,"author":{"gitId":"STELLA-LYE"},"content":"| `EMAIL` | Email of the student | Must be in email format `username`@`email`.com |","lastModifiedDate":"2024-03-11"},{"lineNumber":134,"author":{"gitId":"doyelee0313"},"content":"| `YEAR` | Academic Year of the student | A number ranging from 1 - 6, inclusive |","lastModifiedDate":"2024-03-20"},{"lineNumber":135,"author":{"gitId":"STELLA-LYE"},"content":"| `MAJOR` | Academic Major of the student contact | String to represent the major |","lastModifiedDate":"2024-03-11"},{"lineNumber":136,"author":{"gitId":"STELLA-LYE"},"content":"| `TELEGRAM_HANDLE` | Telegram handle of the student | Telegram handle format (a-z, 0-9 and underscores, case-insensitive), without prefix “@” |","lastModifiedDate":"2024-03-11"},{"lineNumber":137,"author":{"gitId":"jocelyn-soh"},"content":"| `REMARKS` | Additional remarks of the student | A case-sensitive string. This can be anything |","lastModifiedDate":"2024-03-21"},{"lineNumber":138,"author":{"gitId":"doyelee0313"},"content":"| `GROUP` | Tutorial/Lab/Recitation slot | Must be in correct slot format TUT/LAB/REC`2-digit number` |","lastModifiedDate":"2024-03-20"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"STELLA-LYE"},"content":"Examples:","lastModifiedDate":"2024-03-11"},{"lineNumber":141,"author":{"gitId":"doyelee0313"},"content":"* `add n/John Doe p/98765432 e/johnd@example.com y/2 m/Computer Science tg/johndoe r/Very quiet student g/TUT04 g/LAB10 `","lastModifiedDate":"2024-03-20"},{"lineNumber":142,"author":{"gitId":"STELLA-LYE"},"content":"* `add n/Kendra Huetta p/98765367 e/Kendra@example.com y/1 m/Computer Science tg/KendraHuetta r/quiet student g/LAB10 `","lastModifiedDate":"2024-03-21"},{"lineNumber":143,"author":{"gitId":"STELLA-LYE"},"content":" ![result for \u0027add Kendra Huetta\u0027](images/addFeature.png)","lastModifiedDate":"2024-03-21"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"STELLA-LYE"},"content":"### \u003cspan id\u003d\u0027feature-edit\u0027\u003e Editing a student : `edit` \u003cspan\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"STELLA-LYE"},"content":"Edits an existing student you have selected.","lastModifiedDate":"2024-03-11"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"doyelee0313"},"content":"Format: `edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [y/YEAR] [m/MAJOR] [tg/TELEGRAM_HANDLE] [r/REMARK] [g/Group]`","lastModifiedDate":"2024-03-21"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"STELLA-LYE"},"content":"* Edits the student at the specified `INDEX`. The index refers to the index number shown in the displayed student list. The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-03-11"},{"lineNumber":152,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"doyelee0313"},"content":"* When editing groups, the existing groups of the student will be removed i.e adding of groups is not cumulative.","lastModifiedDate":"2024-03-20"},{"lineNumber":155,"author":{"gitId":"jocelyn-soh"},"content":"* You can remove all the student’s groups by typing `g/` without specifying any groups after it.","lastModifiedDate":"2024-03-21"},{"lineNumber":156,"author":{"gitId":"jocelyn-soh"},"content":"* You can remove the remark of a student by typing `r/` without specifying any groups after it. ","lastModifiedDate":"2024-03-21"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"doyelee0313"},"content":"* `edit 1 n/John e/john01@example.com` Edits the name of the first student to `John` and email to `john01@example.com` respectively.","lastModifiedDate":"2024-03-21"},{"lineNumber":160,"author":{"gitId":"jocelyn-soh"},"content":"* `edit 2 n/Betty tg/` Edits the name of the 2nd student to be `Betty` and clears her telegram handle.","lastModifiedDate":"2024-03-21"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"STELLA-LYE"},"content":"### \u003cspan id\u003d\u0027feature-find\u0027\u003e Locating students by keyword: `find` \u003cspan\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"STELLA-LYE"},"content":"Finds students whose details contain any of the given keywords.","lastModifiedDate":"2024-03-11"},{"lineNumber":165,"author":{"gitId":"STELLA-LYE"},"content":"You can find the student even if the keywords **matches partially**. ","lastModifiedDate":"2024-03-21"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"jocelyn-soh"},"content":"* Only the student\u0027s name is searched.","lastModifiedDate":"2024-03-21"},{"lineNumber":172,"author":{"gitId":"STELLA-LYE"},"content":"* Students matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2024-03-21"},{"lineNumber":173,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"STELLA-LYE"},"content":"* `find Jo` returns `John Doe`, `Johan Louis`\u003cbr\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":178,"author":{"gitId":"STELLA-LYE"},"content":" ![result for \u0027find Jo\u0027](images/findFeature.png)","lastModifiedDate":"2024-03-21"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"STELLA-LYE"},"content":"### \u003cspan id\u003d\u0027feature-filter\u0027\u003e Filtering students using group: `filter` \u003cspan\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":181,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":182,"author":{"gitId":"STELLA-LYE"},"content":"Filters and list students belonging to any of the given group name keyword.","lastModifiedDate":"2024-03-21"},{"lineNumber":183,"author":{"gitId":"STELLA-LYE"},"content":"You can filter students when the keywords **matches fully**.","lastModifiedDate":"2024-03-21"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":185,"author":{"gitId":"STELLA-LYE"},"content":"Format: `filter KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2024-03-21"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":187,"author":{"gitId":"STELLA-LYE"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2024-03-21"},{"lineNumber":188,"author":{"gitId":"STELLA-LYE"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2024-03-21"},{"lineNumber":189,"author":{"gitId":"STELLA-LYE"},"content":"* Only student\u0027s group name is searched.","lastModifiedDate":"2024-03-21"},{"lineNumber":190,"author":{"gitId":"STELLA-LYE"},"content":"* Students matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2024-03-21"},{"lineNumber":191,"author":{"gitId":"STELLA-LYE"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2024-03-21"},{"lineNumber":192,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":193,"author":{"gitId":"STELLA-LYE"},"content":"Examples:","lastModifiedDate":"2024-03-21"},{"lineNumber":194,"author":{"gitId":"STELLA-LYE"},"content":"* `filter TUT04 ` returns `John Doe` and `Johan Louis` belonging to the tutorial group `TUT04`","lastModifiedDate":"2024-03-21"},{"lineNumber":195,"author":{"gitId":"STELLA-LYE"},"content":" ![result for \u0027filter TU\u0027](images/filterFeature.png)","lastModifiedDate":"2024-03-21"},{"lineNumber":196,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"STELLA-LYE"},"content":"### \u003cspan id\u003d\u0027feature-delete\u0027\u003e Deleting a student : `delete` \u003cspan\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"STELLA-LYE"},"content":"Deletes your specified student from the current list.","lastModifiedDate":"2024-03-11"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"STELLA-LYE"},"content":"* Deletes the student at the specified `INDEX`.","lastModifiedDate":"2024-03-21"},{"lineNumber":205,"author":{"gitId":"STELLA-LYE"},"content":"* The index refers to the index number shown in the current displayed student list.","lastModifiedDate":"2024-03-11"},{"lineNumber":206,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"STELLA-LYE"},"content":"* `list` followed by `delete 2` deletes the 2nd student in the major book.","lastModifiedDate":"2024-03-21"},{"lineNumber":210,"author":{"gitId":"STELLA-LYE"},"content":"* `find Betsy` followed by `delete 1` deletes the 1st student in the results of the `find` command.","lastModifiedDate":"2024-03-21"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"STELLA-LYE"},"content":"### \u003cspan id\u003d\u0027feature-mail\u0027\u003e Mail broadcast : `mail` \u003cspan\u003e","lastModifiedDate":"2024-03-24"},{"lineNumber":213,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":214,"author":{"gitId":"STELLA-LYE"},"content":"You can generate a mailto link with email addresses pre-filled based on specific keyword entered.","lastModifiedDate":"2024-03-24"},{"lineNumber":215,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":216,"author":{"gitId":"STELLA-LYE"},"content":"Format: `mail [KEYWORDS]`","lastModifiedDate":"2024-03-24"},{"lineNumber":217,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":218,"author":{"gitId":"STELLA-LYE"},"content":"* `[KEYWORDS]` are based on student\u0027s group name","lastModifiedDate":"2024-03-24"},{"lineNumber":219,"author":{"gitId":"STELLA-LYE"},"content":"* It requires a **full match** for the keyword ","lastModifiedDate":"2024-03-24"},{"lineNumber":220,"author":{"gitId":"STELLA-LYE"},"content":"* `[KEYWORDS]` is optional and when no `[KEYWORDS]` is entered, email addresses of all students on the current list will be included","lastModifiedDate":"2024-03-24"},{"lineNumber":221,"author":{"gitId":"STELLA-LYE"},"content":"* If `[KEYWORDS]` is entered, only email addresses of students belonging to the group name that fully matches the `[KEYWORDS]` will be included","lastModifiedDate":"2024-03-24"},{"lineNumber":222,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":223,"author":{"gitId":"STELLA-LYE"},"content":"Examples:","lastModifiedDate":"2024-03-24"},{"lineNumber":224,"author":{"gitId":"STELLA-LYE"},"content":"* `mail` generates a mailto link with email addresses of all students on the current list. ","lastModifiedDate":"2024-03-24"},{"lineNumber":225,"author":{"gitId":"STELLA-LYE"},"content":"* `mail LAB05` generates a mailto link with email addresses of all students belonging to `LAB05`.","lastModifiedDate":"2024-03-24"},{"lineNumber":226,"author":{"gitId":"STELLA-LYE"},"content":"![result for \u0027mail LAB05\u0027](images/MailFeature.png)","lastModifiedDate":"2024-03-24"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":228,"author":{"gitId":"STELLA-LYE"},"content":"### \u003cspan id\u003d\u0027feature-clear\u0027\u003e Clearing all entries : `clear` \u003cspan\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"STELLA-LYE"},"content":"Clears all student entries from TutorsContactsPro.","lastModifiedDate":"2024-03-11"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"STELLA-LYE"},"content":"### \u003cspan id\u003d\u0027feature-exit\u0027\u003e Exiting the program : `exit` \u003cspan\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"STELLA-LYE"},"content":"TutorsContactsPro data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.","lastModifiedDate":"2024-03-11"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":246,"author":{"gitId":"STELLA-LYE"},"content":"TutorsContactsPro data are saved automatically as a JSON file `[JAR file location]/data/TutorsContactsPro.json`. Advanced users are welcome to update data directly by editing that data file.","lastModifiedDate":"2024-03-21"},{"lineNumber":247,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":248,"author":{"gitId":"STELLA-LYE"},"content":"[//]: # (\u003cbox type\u003d\"warning\" seamless\u003e)","lastModifiedDate":"2024-03-11"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":250,"author":{"gitId":"STELLA-LYE"},"content":"\u003e [**Caution:**]","lastModifiedDate":"2024-03-21"},{"lineNumber":251,"author":{"gitId":"STELLA-LYE"},"content":"If your changes to the data file makes its format invalid, TutorsContactsPro 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.\u003cbr\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":252,"author":{"gitId":"STELLA-LYE"},"content":"Furthermore, certain edits can cause the TutorsContactsPro to behave in unexpected ways (e.g., if a value entered is outside the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.","lastModifiedDate":"2024-03-11"},{"lineNumber":253,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":255,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04"},{"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":"STELLA-LYE"},"content":"## \u003cspan id\u003d\u0027feature-faq\u0027\u003e FAQ \u003cspan\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":264,"author":{"gitId":"STELLA-LYE"},"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 TutorsContactsPro home folder.","lastModifiedDate":"2024-03-21"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":268,"author":{"gitId":"STELLA-LYE"},"content":"## \u003cspan id\u003d\u0027feature-issues\u0027\u003e Known issues \u003cspan\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":269,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":270,"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":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":272,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":274,"author":{"gitId":"STELLA-LYE"},"content":"## \u003cspan id\u003d\u0027feature-summary\u0027\u003e Command summary \u003cspan\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":275,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":276,"author":{"gitId":"STELLA-LYE"},"content":"| Action | Format, Examples |","lastModifiedDate":"2024-03-11"},{"lineNumber":277,"author":{"gitId":"STELLA-LYE"},"content":"|------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|","lastModifiedDate":"2024-03-21"},{"lineNumber":278,"author":{"gitId":"STELLA-LYE"},"content":"| **Help** | `help` |","lastModifiedDate":"2024-03-11"},{"lineNumber":279,"author":{"gitId":"STELLA-LYE"},"content":"| **List** | `list` |","lastModifiedDate":"2024-03-11"},{"lineNumber":280,"author":{"gitId":"STELLA-LYE"},"content":"| **Add** | `add n/NAME p/PHONE e/EMAIL y/YEAR m/MAJOR tg/TELEGRAM [r/REMARK] [g/Group]...` \u003cbr\u003e e.g., `add n/John Doe p/98765432 e/johnd@example.com y/2 m/Computer Science tg/johndoe r/Very quiet student g/TUT04 g/LAB10 ` |","lastModifiedDate":"2024-03-21"},{"lineNumber":281,"author":{"gitId":"doyelee0313"},"content":"| **Edit** | `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [y/NUMBER] [m/MAJOR] [tg/TELEGRAM] [r/REMARK] [g/Group]`\u003cbr\u003e e.g., `edit 1 n/John e/john01@example.com` |","lastModifiedDate":"2024-03-21"},{"lineNumber":282,"author":{"gitId":"jocelyn-soh"},"content":"| **Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g.,`find john tan` |","lastModifiedDate":"2024-03-21"},{"lineNumber":283,"author":{"gitId":"STELLA-LYE"},"content":"| **Filter** | `filter KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g.,`filter TUT01` |","lastModifiedDate":"2024-03-21"},{"lineNumber":284,"author":{"gitId":"STELLA-LYE"},"content":"| **Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 1` | ","lastModifiedDate":"2024-03-11"},{"lineNumber":285,"author":{"gitId":"STELLA-LYE"},"content":"| **Clear** | `clear` |","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"doyelee0313":13,"STELLA-LYE":139,"-":122,"jocelyn-soh":11}},{"path":"docs/_markbind/layouts/default.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003chead-bottom\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003clink rel\u003d\"stylesheet\" href\u003d\"{{baseUrl}}/stylesheets/main.css\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c/head-bottom\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003cheader sticky\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cnavbar type\u003d\"dark\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"jocelyn-soh"},"content":" \u003ca slot\u003d\"brand\" href\u003d\"{{baseUrl}}/index.html\" title\u003d\"Home\" class\u003d\"navbar-brand\"\u003eTutorsContactsPro\u003c/a\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/index.html\" class\u003d\"nav-link\"\u003eHome\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/UserGuide.html\" class\u003d\"nav-link\"\u003eUser Guide\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/DeveloperGuide.html\" class\u003d\"nav-link\"\u003eDeveloper Guide\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/AboutUs.html\" class\u003d\"nav-link\"\u003eAbout Us\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"https://github.com/se-edu/addressbook-level3\" target\u003d\"_blank\" class\u003d\"nav-link\"\u003e\u003cmd\u003e:fab-github:\u003c/md\u003e\u003c/a\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cli slot\u003d\"right\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cform class\u003d\"navbar-form\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003csearchbar :data\u003d\"searchData\" placeholder\u003d\"Search\" :on-hit\u003d\"searchCallback\" menu-align-right\u003e\u003c/searchbar\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/form\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/navbar\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"\u003c/header\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"flex-body\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"site-nav\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"site-nav-top\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"fw-bold mb-2\" style\u003d\"font-size: 1.25rem;\"\u003eSite Map\u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003csite-nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"* [Home]({{ baseUrl }}/index.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"* [User Guide]({{ baseUrl }}/UserGuide.html) :expanded:","lastModifiedDate":"2023-09-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * [Quick Start]({{ baseUrl }}/UserGuide.html#quick-start)","lastModifiedDate":"2023-09-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * [Features]({{ baseUrl }}/UserGuide.html#features)","lastModifiedDate":"2023-09-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * [FAQ]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * [Command Summary]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":"* [Developer Guide]({{ baseUrl }}/DeveloperGuide.html) :expanded:","lastModifiedDate":"2023-09-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * [Acknowledgements]({{ baseUrl }}/DeveloperGuide.html#acknowledgements)","lastModifiedDate":"2023-09-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * [Setting Up]({{ baseUrl }}/DeveloperGuide.html#setting-up-getting-started)","lastModifiedDate":"2023-09-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * [Design]({{ baseUrl }}/DeveloperGuide.html#design)","lastModifiedDate":"2023-09-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * [Implementation]({{ baseUrl }}/DeveloperGuide.html#implementation)","lastModifiedDate":"2023-09-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * [Documentation, logging, testing, configuration, dev-ops]({{ baseUrl }}/DeveloperGuide.html#documentation-logging-testing-configuration-dev-ops)","lastModifiedDate":"2023-09-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * [Appendix: Requirements]({{ baseUrl }}/DeveloperGuide.html#appendix-requirements)","lastModifiedDate":"2023-09-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * [Appendix: Instructions for manual testing]({{ baseUrl }}/DeveloperGuide.html#appendix-instructions-for-manual-testing)","lastModifiedDate":"2023-09-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":"* Tutorials","lastModifiedDate":"2023-09-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * [Tracing code]({{ baseUrl }}/tutorials/TracingCode.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * [Adding a command]({{ baseUrl }}/tutorials/AddRemark.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * [Removing Fields]({{ baseUrl }}/tutorials/RemovingFields.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [About Us]({{ baseUrl }}/AboutUs.html)","lastModifiedDate":"2023-09-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/site-nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cdiv id\u003d\"content-wrapper\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" {{ content }}","lastModifiedDate":"2023-09-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"page-nav\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cpage-nav /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003cscroll-top-button\u003e\u003c/scroll-top-button\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":"\u003cfooter\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003c!-- Support MarkBind by including a link to us on your landing page! --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"text-center\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u003csmall\u003e[\u003cmd\u003e**Powered by**\u003c/md\u003e \u003cimg src\u003d\"https://markbind.org/favicon.ico\" width\u003d\"30\"\u003e {{MarkBind}}, generated on {{timestamp}}]\u003c/small\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003c/footer\u003e","lastModifiedDate":"2023-09-12"}],"authorContributionMap":{"-":66,"jocelyn-soh":1}},{"path":"docs/diagrams/BetterModelClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":"!pragma layout smetana","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam arrowColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"AddressBook *-right-\u003e \"1\" UniquePersonList","lastModifiedDate":"2019-07-30"},{"lineNumber":9,"author":{"gitId":"doyelee0313"},"content":"AddressBook *-right-\u003e \"1\" UniqueGroupList","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"doyelee0313"},"content":"UniqueGroupList -[hidden]down- UniquePersonList","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"doyelee0313"},"content":"UniqueGroupList -[hidden]down- UniquePersonList","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"doyelee0313"},"content":"UniqueGroupList -right-\u003e \"*\" Group","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":"UniquePersonList -right-\u003e Person","lastModifiedDate":"2021-07-31"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"doyelee0313"},"content":"Person -up-\u003e \"*\" Group","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Person *--\u003e Name","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Person *--\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Person *--\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"STELLA-LYE"},"content":"Person *--\u003e Major","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"tohlh"},"content":"Person *--\u003e Year","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"tohlh"},"content":"Person *--\u003e Telegram","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"jocelyn-soh"},"content":"Person *--\u003e \"0..1\" Remark","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"doyelee0313":5,"STELLA-LYE":2,"-":15,"jocelyn-soh":1,"tohlh":2}},{"path":"docs/diagrams/DeleteActivityDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"STELLA-LYE"},"content":"@startuml","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":"start","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":":Student TA executes add command;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":"if () then ([command is in invalid format])","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":" :Show invalid command format as error message;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":"else ([else])","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"STELLA-LYE"},"content":" if () then ([Student already exists in TutorsContactsPro])","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":" : Show duplicate group error message;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"STELLA-LYE"},"content":" else([else])","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"STELLA-LYE"},"content":" : Add student to the contact list;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"STELLA-LYE"},"content":" : Displays student list in the GUI;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"STELLA-LYE"},"content":" endif","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"STELLA-LYE"},"content":"endif","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"STELLA-LYE"},"content":"stop","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"STELLA-LYE"},"content":"@enduml","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"STELLA-LYE":18}},{"path":"docs/diagrams/FindSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"jocelyn-soh"},"content":"@startuml","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"jocelyn-soh"},"content":"!include style.puml","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"jocelyn-soh"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"jocelyn-soh"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"jocelyn-soh"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"jocelyn-soh"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"jocelyn-soh"},"content":"participant \":FindCommandParser\" as FindCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"jocelyn-soh"},"content":"participant \"f:FindCommand\" as FindCommand LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"jocelyn-soh"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"jocelyn-soh"},"content":"participant \"n:NameContainsKeywordPredicate\" as NameContainsKeywordPredicate LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"jocelyn-soh"},"content":"end box","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"jocelyn-soh"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"jocelyn-soh"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"jocelyn-soh"},"content":"end box","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"jocelyn-soh"},"content":"[-\u003e LogicManager : execute(\"find John\")","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"jocelyn-soh"},"content":"activate LogicManager","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"jocelyn-soh"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"find John\")","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"jocelyn-soh"},"content":"activate AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"jocelyn-soh"},"content":"create FindCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"jocelyn-soh"},"content":"AddressBookParser -\u003e FindCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"jocelyn-soh"},"content":"activate FindCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"jocelyn-soh"},"content":"FindCommandParser --\u003e AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"jocelyn-soh"},"content":"deactivate FindCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"jocelyn-soh"},"content":"AddressBookParser -\u003e FindCommandParser : parse(\"John\")","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"jocelyn-soh"},"content":"activate FindCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"jocelyn-soh"},"content":"create FindCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"jocelyn-soh"},"content":"FindCommandParser -\u003e FindCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"jocelyn-soh"},"content":"activate FindCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"jocelyn-soh"},"content":"create NameContainsKeywordPredicate","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"jocelyn-soh"},"content":"FindCommand --\u003e NameContainsKeywordPredicate : n","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"jocelyn-soh"},"content":"activate NameContainsKeywordPredicate","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"jocelyn-soh"},"content":"NameContainsKeywordPredicate --\u003e FindCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"jocelyn-soh"},"content":"deactivate NameContainsKeywordPredicate","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"jocelyn-soh"},"content":"FindCommand --\u003e FindCommandParser :","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"jocelyn-soh"},"content":"deactivate FindCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"jocelyn-soh"},"content":"FindCommandParser --\u003e AddressBookParser : f","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"jocelyn-soh"},"content":"deactivate FindCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"jocelyn-soh"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"jocelyn-soh"},"content":"FindCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"jocelyn-soh"},"content":"destroy FindCommandParser","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"jocelyn-soh"},"content":"AddressBookParser --\u003e LogicManager : f","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"jocelyn-soh"},"content":"deactivate AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"jocelyn-soh"},"content":"LogicManager -\u003e FindCommand : execute(m)","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"jocelyn-soh"},"content":"activate FindCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"jocelyn-soh"},"content":"FindCommand -\u003e Model : updateFilteredPersonList(f.predicate)","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"jocelyn-soh"},"content":"activate Model","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"jocelyn-soh"},"content":"Model --\u003e FindCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"jocelyn-soh"},"content":"deactivate Model","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"jocelyn-soh"},"content":"create CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"jocelyn-soh"},"content":"FindCommand -\u003e CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"jocelyn-soh"},"content":"activate CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"jocelyn-soh"},"content":"CommandResult --\u003e FindCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"jocelyn-soh"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"jocelyn-soh"},"content":"FindCommand --\u003e LogicManager : r","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"jocelyn-soh"},"content":"deactivate FindCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"jocelyn-soh"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"jocelyn-soh"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"jocelyn-soh"},"content":"@enduml","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"jocelyn-soh":79}},{"path":"docs/diagrams/ListSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"jocelyn-soh"},"content":"@startuml","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"jocelyn-soh"},"content":"!include style.puml","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"jocelyn-soh"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"jocelyn-soh"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"jocelyn-soh"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"jocelyn-soh"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"jocelyn-soh"},"content":"participant \"l:ListCommand\" as ListCommand LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"jocelyn-soh"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"jocelyn-soh"},"content":"end box","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"jocelyn-soh"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"jocelyn-soh"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"jocelyn-soh"},"content":"end box","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"jocelyn-soh"},"content":"[-\u003e LogicManager : execute(\"list\")","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"jocelyn-soh"},"content":"activate LogicManager","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"jocelyn-soh"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"list\")","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"jocelyn-soh"},"content":"activate AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"jocelyn-soh"},"content":"AddressBookParser -\u003e ListCommand :","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"jocelyn-soh"},"content":"activate ListCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"jocelyn-soh"},"content":"ListCommand --\u003e AddressBookParser : l","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"jocelyn-soh"},"content":"deactivate ListCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"jocelyn-soh"},"content":"AddressBookParser --\u003e LogicManager : l","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"jocelyn-soh"},"content":"deactivate AddressBookParser","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"jocelyn-soh"},"content":"LogicManager -\u003e ListCommand : execute(m)","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"jocelyn-soh"},"content":"activate ListCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"jocelyn-soh"},"content":"ListCommand -\u003e Model : updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS)","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"jocelyn-soh"},"content":"activate Model","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"jocelyn-soh"},"content":"Model --\u003e ListCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"jocelyn-soh"},"content":"deactivate Model","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"jocelyn-soh"},"content":"create CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"jocelyn-soh"},"content":"ListCommand -\u003e CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"jocelyn-soh"},"content":"activate CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"jocelyn-soh"},"content":"CommandResult --\u003e ListCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"jocelyn-soh"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"jocelyn-soh"},"content":"ListCommand --\u003e LogicManager : r","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"jocelyn-soh"},"content":"deactivate ListCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"jocelyn-soh"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"jocelyn-soh"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"jocelyn-soh"},"content":"@enduml","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"jocelyn-soh":52}},{"path":"docs/diagrams/ModelClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":"!pragma layout smetana","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam arrowColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"Package Model as ModelPackage \u003c\u003cRectangle\u003e\u003e{","lastModifiedDate":"2023-07-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyAddressBook\" as ReadOnlyAddressBook","lastModifiedDate":"2022-01-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyUserPrefs\" as ReadOnlyUserPrefs","lastModifiedDate":"2022-01-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nModel\" as Model","lastModifiedDate":"2022-01-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"Class AddressBook","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"Class ModelManager","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"Class UserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Class UniquePersonList","lastModifiedDate":"2021-07-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Class Person","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":"-"},"content":"Class Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"doyelee0313"},"content":"Class Group","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"jocelyn-soh"},"content":"Class Remark","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":24,"author":{"gitId":"-"},"content":"Class I #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"AddressBook .up.|\u003e ReadOnlyAddressBook","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"ModelManager .up.|\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"Model .right.\u003e ReadOnlyUserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"Model .left.\u003e ReadOnlyAddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":"ModelManager -left-\u003e \"1\" AddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"ModelManager -right-\u003e \"1\" UserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"UserPrefs .up.|\u003e ReadOnlyUserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"AddressBook *--\u003e \"1\" UniquePersonList","lastModifiedDate":"2019-07-30"},{"lineNumber":40,"author":{"gitId":"-"},"content":"UniquePersonList --\u003e \"~* all\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":41,"author":{"gitId":"-"},"content":"Person *--\u003e Name","lastModifiedDate":"2019-07-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"Person *--\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"Person *--\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":44,"author":{"gitId":"tohlh"},"content":"Person *--\u003e Year","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"jocelyn-soh"},"content":"Person *-up-\u003e Telegram","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"jocelyn-soh"},"content":"Person *-right-\u003e Major","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"doyelee0313"},"content":"Person *--\u003e \"*\" Group","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"jocelyn-soh"},"content":"Person *--\u003e \"0..1\" Remark","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":50,"author":{"gitId":"-"},"content":"Person -[hidden]up--\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"UniquePersonList -[hidden]right-\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":"Name -[hidden]right-\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":54,"author":{"gitId":"jocelyn-soh"},"content":"Phone -[hidden]right-\u003e Email","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":"ModelManager --\u003e \"~* filtered\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":57,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"doyelee0313":2,"STELLA-LYE":1,"-":48,"jocelyn-soh":5,"tohlh":1}},{"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":"-"},"content":"Class JsonAdaptedPerson","lastModifiedDate":"2021-07-31"},{"lineNumber":22,"author":{"gitId":"doyelee0313"},"content":"Class JsonAdaptedGroup","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":"JsonSerializableAddressBook --\u003e \"*\" JsonAdaptedPerson","lastModifiedDate":"2021-07-31"},{"lineNumber":41,"author":{"gitId":"doyelee0313"},"content":"JsonAdaptedPerson --\u003e \"*\" JsonAdaptedGroup","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-03-31"},{"lineNumber":43,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"doyelee0313":2,"-":41}},{"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":"jocelyn-soh"},"content":"# TutorsContactsPro","lastModifiedDate":"2024-03-06"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"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":9,"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":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":"jocelyn-soh"},"content":"**TutorsContactsPro is a desktop application for tutors teaching Computer Science courses to manage their students.** While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface).","lastModifiedDate":"2024-03-06"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"jocelyn-soh"},"content":"* If you are interested in using TutorsContactsPro, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).","lastModifiedDate":"2024-03-06"},{"lineNumber":16,"author":{"gitId":"jocelyn-soh"},"content":"* If you are interested about developing TutorsContactsPro, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.","lastModifiedDate":"2024-03-06"},{"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":{"-":17,"jocelyn-soh":4}},{"path":"docs/team/doyelee0313.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"doyelee0313"},"content":"---","lastModifiedDate":"2024-03-05"},{"lineNumber":2,"author":{"gitId":"doyelee0313"},"content":" layout: default.md","lastModifiedDate":"2024-03-05"},{"lineNumber":3,"author":{"gitId":"doyelee0313"},"content":" title: \"Doye\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-03-05"},{"lineNumber":4,"author":{"gitId":"doyelee0313"},"content":"---","lastModifiedDate":"2024-03-05"},{"lineNumber":5,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":6,"author":{"gitId":"doyelee0313"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-03-05"},{"lineNumber":7,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":"AddressBook - Level 3 is a desktop major 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":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-03-05"},{"lineNumber":10,"author":{"gitId":"doyelee0313"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-05"},{"lineNumber":11,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-03-05"}],"authorContributionMap":{"doyelee0313":10,"STELLA-LYE":1}},{"path":"docs/team/jocelyn-soh.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"jocelyn-soh"},"content":"---","lastModifiedDate":"2024-03-06"},{"lineNumber":2,"author":{"gitId":"jocelyn-soh"},"content":" layout: default.md","lastModifiedDate":"2024-03-06"},{"lineNumber":3,"author":{"gitId":"jocelyn-soh"},"content":" title: \"Jocelyn\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-03-06"},{"lineNumber":4,"author":{"gitId":"jocelyn-soh"},"content":"---","lastModifiedDate":"2024-03-06"},{"lineNumber":5,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":6,"author":{"gitId":"jocelyn-soh"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-03-06"},{"lineNumber":7,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":"AddressBook - Level 3 is a desktop major 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":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":10,"author":{"gitId":"jocelyn-soh"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"STELLA-LYE":1,"jocelyn-soh":9}},{"path":"docs/team/stella-lye.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"STELLA-LYE"},"content":"---","lastModifiedDate":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":"layout: default.md","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":"title: \"Stella\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-03-04"},{"lineNumber":4,"author":{"gitId":"STELLA-LYE"},"content":"---","lastModifiedDate":"2024-03-04"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-03-04"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":"AddressBook - Level 3 is a desktop major 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":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-04"},{"lineNumber":11,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"STELLA-LYE":11}},{"path":"docs/team/tohlh.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"tohlh"},"content":"---","lastModifiedDate":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"tohlh"},"content":" layout: default.md","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"tohlh"},"content":" title: \"Li Heng\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-03-04"},{"lineNumber":4,"author":{"gitId":"tohlh"},"content":"---","lastModifiedDate":"2024-03-04"},{"lineNumber":5,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":6,"author":{"gitId":"tohlh"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-03-04"},{"lineNumber":7,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":"AddressBook - Level 3 is a desktop major 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":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":10,"author":{"gitId":"tohlh"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-03-04"},{"lineNumber":11,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"STELLA-LYE":1,"tohlh":10}},{"path":"docs/tutorials/AddRemark.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-07-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Tutorial: Adding a command\"","lastModifiedDate":"2020-07-29"},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-07-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":7,"author":{"gitId":"-"},"content":"# Tutorial: Adding a command","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"Let\u0027s walk you through the implementation of a new command — `remark`.","lastModifiedDate":"2020-07-29"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":11,"author":{"gitId":"STELLA-LYE"},"content":"This command allows users of the AddressBook application to add optional remarks to people in their major book and edit it if required. The command should have the following format:","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":13,"author":{"gitId":"-"},"content":"`remark INDEX r/REMARK` (e.g., `remark 2 r/Likes baseball`)","lastModifiedDate":"2020-07-29"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":15,"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":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":"## Create a new `remark` command","lastModifiedDate":"2020-07-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":20,"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":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":22,"author":{"gitId":"STELLA-LYE"},"content":"Let’s start by creating a new `RemarkCommand` class in the `src/main/java/seedu/major/logic/command` directory.","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":24,"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":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":26,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":28,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":29,"author":{"gitId":"STELLA-LYE"},"content":"package seedu.major.logic.commands;","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":31,"author":{"gitId":"STELLA-LYE"},"content":"import seedu.major.model.Model;","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":33,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":34,"author":{"gitId":"STELLA-LYE"},"content":" * Changes the remark of an existing person in the major book.","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":36,"author":{"gitId":"-"},"content":"public class RemarkCommand extends Command {","lastModifiedDate":"2020-07-29"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"remark\";","lastModifiedDate":"2020-07-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2020-07-29"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return new CommandResult(\"Hello from remark\");","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":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":"### Hook `RemarkCommand` into the application","lastModifiedDate":"2020-07-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":49,"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":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":51,"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":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":"### Run the application","lastModifiedDate":"2020-07-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":55,"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":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":"![Output displayed](../images/add-remark/RemarkHello.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":"## Change `RemarkCommand` to throw an exception","lastModifiedDate":"2020-07-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":61,"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":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":63,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"../diagrams/add-remark/RemarkClass.puml\" alt\u003d\"The relationship between RemarkCommand and Command\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":65,"author":{"gitId":"-"},"content":"Following the convention in other commands, we add relevant messages as constants and use them.","lastModifiedDate":"2020-07-29"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":67,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":69,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2021-08-01"},{"lineNumber":71,"author":{"gitId":"-"},"content":" + \": Edits the remark of the person identified \"","lastModifiedDate":"2021-08-01"},{"lineNumber":72,"author":{"gitId":"-"},"content":" + \"by the index number used in the last person listing. \"","lastModifiedDate":"2020-07-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":" + \"Existing remark will be overwritten by the input.\\n\"","lastModifiedDate":"2020-07-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2020-07-29"},{"lineNumber":75,"author":{"gitId":"-"},"content":" + \"r/ [REMARK]\\n\"","lastModifiedDate":"2020-07-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2020-07-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":" + \"r/ Likes to swim.\";","lastModifiedDate":"2020-07-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_IMPLEMENTED_YET \u003d","lastModifiedDate":"2021-08-01"},{"lineNumber":80,"author":{"gitId":"-"},"content":" \"Remark command not implemented yet\";","lastModifiedDate":"2021-08-01"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":84,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_NOT_IMPLEMENTED_YET);","lastModifiedDate":"2020-07-29"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":86,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":88,"author":{"gitId":"-"},"content":"## Enhancing `RemarkCommand`","lastModifiedDate":"2020-07-29"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":90,"author":{"gitId":"-"},"content":"Let’s change `RemarkCommand` to parse input from the user.","lastModifiedDate":"2020-07-29"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":92,"author":{"gitId":"-"},"content":"### Make the command accept parameters","lastModifiedDate":"2020-07-29"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":94,"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":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":96,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":97,"author":{"gitId":"STELLA-LYE"},"content":"import static seedu.major.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":99,"author":{"gitId":"-"},"content":"public class RemarkCommand extends Command {","lastModifiedDate":"2020-07-29"},{"lineNumber":100,"author":{"gitId":"-"},"content":" //...","lastModifiedDate":"2020-07-29"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public static final String MESSAGE_ARGUMENTS \u003d \"Index: %1$d, Remark: %2$s\";","lastModifiedDate":"2020-07-29"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":103,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2020-07-29"},{"lineNumber":104,"author":{"gitId":"-"},"content":" private final String remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":106,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-07-29"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit the remark","lastModifiedDate":"2020-07-29"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * @param remark of the person to be updated to","lastModifiedDate":"2020-07-29"},{"lineNumber":109,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public RemarkCommand(Index index, String remark) {","lastModifiedDate":"2020-07-29"},{"lineNumber":111,"author":{"gitId":"-"},"content":" requireAllNonNull(index, remark);","lastModifiedDate":"2020-07-29"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":113,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2020-07-29"},{"lineNumber":114,"author":{"gitId":"-"},"content":" this.remark \u003d remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":118,"author":{"gitId":"-"},"content":" throw new CommandException(","lastModifiedDate":"2021-08-01"},{"lineNumber":119,"author":{"gitId":"-"},"content":" String.format(MESSAGE_ARGUMENTS, index.getOneBased(), remark));","lastModifiedDate":"2021-08-01"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2020-07-29"},{"lineNumber":124,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2020-07-29"},{"lineNumber":125,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2020-07-29"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":128,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2020-07-29"},{"lineNumber":129,"author":{"gitId":"-"},"content":" if (!(other instanceof RemarkCommand)) {","lastModifiedDate":"2020-07-29"},{"lineNumber":130,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2020-07-29"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":133,"author":{"gitId":"-"},"content":" RemarkCommand e \u003d (RemarkCommand) other;","lastModifiedDate":"2020-07-29"},{"lineNumber":134,"author":{"gitId":"-"},"content":" return index.equals(e.index)","lastModifiedDate":"2020-07-29"},{"lineNumber":135,"author":{"gitId":"-"},"content":" \u0026\u0026 remark.equals(e.remark);","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":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":140,"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":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":142,"author":{"gitId":"-"},"content":"### Parse user input","lastModifiedDate":"2020-07-29"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":144,"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":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":146,"author":{"gitId":"STELLA-LYE"},"content":"Create a `RemarkCommandParser` class in the `seedu.major.logic.parser` package. The class must extend the `Parser` interface.","lastModifiedDate":"2024-03-17"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":148,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"../diagrams/add-remark/ParserClass.puml\" alt\u003d\"The relationship between Parser and RemarkCommandParser\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":150,"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":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":152,"author":{"gitId":"-"},"content":"**`ArgumentTokenizer.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":154,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":155,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":156,"author":{"gitId":"-"},"content":" * Tokenizes an arguments string and returns an {@code ArgumentMultimap}","lastModifiedDate":"2020-07-29"},{"lineNumber":157,"author":{"gitId":"-"},"content":" * object that maps prefixes to their respective argument values. Only the","lastModifiedDate":"2020-07-29"},{"lineNumber":158,"author":{"gitId":"-"},"content":" * given prefixes will be recognized in the arguments string.","lastModifiedDate":"2020-07-29"},{"lineNumber":159,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2020-07-29"},{"lineNumber":160,"author":{"gitId":"-"},"content":" * @param argsString Arguments string of the form:","lastModifiedDate":"2020-07-29"},{"lineNumber":161,"author":{"gitId":"-"},"content":" * {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2020-07-29"},{"lineNumber":162,"author":{"gitId":"-"},"content":" * @param prefixes Prefixes to tokenize the arguments string with","lastModifiedDate":"2020-07-29"},{"lineNumber":163,"author":{"gitId":"-"},"content":" * @return ArgumentMultimap object that maps prefixes to their","lastModifiedDate":"2020-07-29"},{"lineNumber":164,"author":{"gitId":"-"},"content":" * arguments","lastModifiedDate":"2020-07-29"},{"lineNumber":165,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":166,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":168,"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":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":170,"author":{"gitId":"-"},"content":"**`ArgumentMultimap.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":172,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":173,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-07-29"},{"lineNumber":174,"author":{"gitId":"-"},"content":" * Returns the last value of {@code prefix}.","lastModifiedDate":"2020-07-29"},{"lineNumber":175,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":176,"author":{"gitId":"-"},"content":"public Optional\u003cString\u003e getValue(Prefix prefix) {","lastModifiedDate":"2020-07-29"},{"lineNumber":177,"author":{"gitId":"-"},"content":" List\u003cString\u003e values \u003d getAllValues(prefix);","lastModifiedDate":"2020-07-29"},{"lineNumber":178,"author":{"gitId":"-"},"content":" return values.isEmpty() ? Optional.empty() :","lastModifiedDate":"2020-07-29"},{"lineNumber":179,"author":{"gitId":"-"},"content":" Optional.of(values.get(values.size() - 1));","lastModifiedDate":"2020-07-29"},{"lineNumber":180,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":181,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":183,"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":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":185,"author":{"gitId":"-"},"content":"**`DeleteCommandParser.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":187,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":188,"author":{"gitId":"-"},"content":"Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2020-07-29"},{"lineNumber":189,"author":{"gitId":"-"},"content":"return new DeleteCommand(index);","lastModifiedDate":"2020-07-29"},{"lineNumber":190,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":192,"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":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":194,"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":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":196,"author":{"gitId":"-"},"content":"**`RemarkCommandParser.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":198,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":199,"author":{"gitId":"-"},"content":"public RemarkCommand parse(String args) throws ParseException {","lastModifiedDate":"2020-07-29"},{"lineNumber":200,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2020-07-29"},{"lineNumber":201,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args,","lastModifiedDate":"2020-07-29"},{"lineNumber":202,"author":{"gitId":"-"},"content":" PREFIX_REMARK);","lastModifiedDate":"2020-07-29"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":204,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2020-07-29"},{"lineNumber":205,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2020-07-29"},{"lineNumber":206,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2020-07-29"},{"lineNumber":207,"author":{"gitId":"-"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2020-07-29"},{"lineNumber":208,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2020-07-29"},{"lineNumber":209,"author":{"gitId":"-"},"content":" RemarkCommand.MESSAGE_USAGE), ive);","lastModifiedDate":"2020-07-29"},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":212,"author":{"gitId":"-"},"content":" String remark \u003d argMultimap.getValue(PREFIX_REMARK).orElse(\"\");","lastModifiedDate":"2020-07-29"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":214,"author":{"gitId":"-"},"content":" return new RemarkCommand(index, remark);","lastModifiedDate":"2020-07-29"},{"lineNumber":215,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-07-29"},{"lineNumber":216,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":218,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":220,"author":{"gitId":"-"},"content":"Don’t forget to update `AddressBookParser` to use our new `RemarkCommandParser`!","lastModifiedDate":"2023-09-12"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":222,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":224,"author":{"gitId":"-"},"content":"If you are stuck, check out the sample","lastModifiedDate":"2020-07-29"},{"lineNumber":225,"author":{"gitId":"-"},"content":"[here](https://github.com/se-edu/addressbook-level3/commit/dc6d5139d08f6403da0ec624ea32bd79a2ae0cbf#diff-8bf239e8e9529369b577701303ddd96af93178b4ed6735f91c2d8488b20c6b4a).","lastModifiedDate":"2022-01-02"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":227,"author":{"gitId":"-"},"content":"## Add `Remark` to the model","lastModifiedDate":"2020-07-29"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":229,"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":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":231,"author":{"gitId":"-"},"content":"### Add a new `Remark` class","lastModifiedDate":"2020-07-29"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":233,"author":{"gitId":"STELLA-LYE"},"content":"Create a new `Remark` in `seedu.major.model.person`. Since a `Remark` is a field that is similar to `Address`, we can reuse a significant bit of code.","lastModifiedDate":"2024-03-17"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":235,"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":236,"author":{"gitId":"-"},"content":"validation.","lastModifiedDate":"2020-07-29"},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":238,"author":{"gitId":"-"},"content":"### Make use of `Remark`","lastModifiedDate":"2020-07-29"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":240,"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":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":242,"author":{"gitId":"-"},"content":"## Add a placeholder element for remark to the UI","lastModifiedDate":"2020-07-29"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":244,"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":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":246,"author":{"gitId":"STELLA-LYE"},"content":"Simply add the following to [`seedu.major.ui.PersonCard`](https://github.com/se-edu/addressbook-level3/commit/850b78879582f38accb05dd20c245963c65ea599#diff-639834f1e05afe2276a86372adf0fe5f69314642c2d93cfa543d614ce5a76688).","lastModifiedDate":"2024-03-17"},{"lineNumber":247,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":248,"author":{"gitId":"-"},"content":"**`PersonCard.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":250,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":251,"author":{"gitId":"-"},"content":"@FXML","lastModifiedDate":"2020-07-29"},{"lineNumber":252,"author":{"gitId":"-"},"content":"private Label remark;","lastModifiedDate":"2020-07-29"},{"lineNumber":253,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":256,"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":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":258,"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":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":260,"author":{"gitId":"-"},"content":"**`PersonListCard.fxml`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":261,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":262,"author":{"gitId":"-"},"content":"``` xml","lastModifiedDate":"2020-07-29"},{"lineNumber":263,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"remark\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$remark\" /\u003e","lastModifiedDate":"2020-07-29"},{"lineNumber":264,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-07-29"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":266,"author":{"gitId":"-"},"content":"That’s it! Fire up the application again and you should see something like this:","lastModifiedDate":"2020-07-29"},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":268,"author":{"gitId":"-"},"content":"![$remark shows up in each entry](../images/add-remark/$Remark.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":269,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":270,"author":{"gitId":"-"},"content":"## Modify `Person` to support a `Remark` field","lastModifiedDate":"2020-07-29"},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":272,"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":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":274,"author":{"gitId":"-"},"content":"### Modify `Person`","lastModifiedDate":"2020-07-29"},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":276,"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":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":278,"author":{"gitId":"-"},"content":"### Update other usages of `Person`","lastModifiedDate":"2020-07-29"},{"lineNumber":279,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":280,"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":281,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":282,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":284,"author":{"gitId":"-"},"content":"Use the `Find Usages` feature in IntelliJ IDEA on the `Person` class to find these commands.","lastModifiedDate":"2023-09-12"},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":286,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":288,"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":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":291,"author":{"gitId":"-"},"content":"## Updating Storage","lastModifiedDate":"2020-07-29"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":293,"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":294,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":295,"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":296,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":297,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":298,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":299,"author":{"gitId":"STELLA-LYE"},"content":"You must delete AddressBook’s storage file located at `/data/addressbook.json` before running it! Not doing so will cause AddressBook to default to an empty major book!","lastModifiedDate":"2024-03-17"},{"lineNumber":300,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":301,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":302,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":303,"author":{"gitId":"-"},"content":"Check out [this commit](https://github.com/se-edu/addressbook-level3/commit/556cbd0e03ff224d7a68afba171ad2eb0ce56bbf)","lastModifiedDate":"2020-07-29"},{"lineNumber":304,"author":{"gitId":"-"},"content":"to see what the changes entail.","lastModifiedDate":"2020-07-29"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":306,"author":{"gitId":"-"},"content":"## Finalizing the UI","lastModifiedDate":"2020-07-29"},{"lineNumber":307,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":308,"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":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":310,"author":{"gitId":"-"},"content":"Just add [this one line of code!](https://github.com/se-edu/addressbook-level3/commit/5b98fee11b6b3f5749b6b943c4f3bd3aa049b692)","lastModifiedDate":"2020-07-29"},{"lineNumber":311,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":312,"author":{"gitId":"-"},"content":"**`PersonCard.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":313,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":314,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":315,"author":{"gitId":"-"},"content":"public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2020-07-29"},{"lineNumber":316,"author":{"gitId":"-"},"content":" //...","lastModifiedDate":"2020-07-29"},{"lineNumber":317,"author":{"gitId":"-"},"content":" remark.setText(person.getRemark().value);","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":"","lastModifiedDate":"2020-07-29"},{"lineNumber":321,"author":{"gitId":"-"},"content":"![The remark label is bound properly!](../images/add-remark/RemarkBound.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":322,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":323,"author":{"gitId":"-"},"content":"## Putting everything together","lastModifiedDate":"2020-07-29"},{"lineNumber":324,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":325,"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":326,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":327,"author":{"gitId":"-"},"content":"### Update `RemarkCommand` and `RemarkCommandParser`","lastModifiedDate":"2020-07-29"},{"lineNumber":328,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":329,"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":330,"author":{"gitId":"-"},"content":"save it with `Model#setPerson()`.","lastModifiedDate":"2020-07-29"},{"lineNumber":331,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":332,"author":{"gitId":"-"},"content":"**`RemarkCommand.java`:**","lastModifiedDate":"2020-07-29"},{"lineNumber":333,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":334,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-07-29"},{"lineNumber":335,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":336,"author":{"gitId":"-"},"content":" public static final String MESSAGE_ADD_REMARK_SUCCESS \u003d \"Added remark to Person: %1$s\";","lastModifiedDate":"2020-07-29"},{"lineNumber":337,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_REMARK_SUCCESS \u003d \"Removed remark from Person: %1$s\";","lastModifiedDate":"2020-07-29"},{"lineNumber":338,"author":{"gitId":"-"},"content":"//...","lastModifiedDate":"2020-07-29"},{"lineNumber":339,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-07-29"},{"lineNumber":340,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-07-29"},{"lineNumber":341,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2020-07-29"},{"lineNumber":342,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":343,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2020-07-29"},{"lineNumber":344,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2020-07-29"},{"lineNumber":345,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-07-29"},{"lineNumber":346,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":347,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2020-07-29"},{"lineNumber":348,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new Person(","lastModifiedDate":"2021-08-01"},{"lineNumber":349,"author":{"gitId":"-"},"content":" personToEdit.getName(), personToEdit.getPhone(), personToEdit.getEmail(),","lastModifiedDate":"2021-08-01"},{"lineNumber":350,"author":{"gitId":"doyelee0313"},"content":" personToEdit.getAddress(), remark, personToEdit.getGroups());","lastModifiedDate":"2024-03-20"},{"lineNumber":351,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":352,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2020-07-29"},{"lineNumber":353,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2020-07-29"},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":355,"author":{"gitId":"-"},"content":" return new CommandResult(generateSuccessMessage(editedPerson));","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":" /**","lastModifiedDate":"2020-07-29"},{"lineNumber":359,"author":{"gitId":"-"},"content":" * Generates a command execution success message based on whether","lastModifiedDate":"2021-08-01"},{"lineNumber":360,"author":{"gitId":"-"},"content":" * the remark is added to or removed from","lastModifiedDate":"2021-08-01"},{"lineNumber":361,"author":{"gitId":"-"},"content":" * {@code personToEdit}.","lastModifiedDate":"2020-07-29"},{"lineNumber":362,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":363,"author":{"gitId":"-"},"content":" private String generateSuccessMessage(Person personToEdit) {","lastModifiedDate":"2020-07-29"},{"lineNumber":364,"author":{"gitId":"-"},"content":" String message \u003d !remark.value.isEmpty() ? MESSAGE_ADD_REMARK_SUCCESS : MESSAGE_DELETE_REMARK_SUCCESS;","lastModifiedDate":"2020-07-29"},{"lineNumber":365,"author":{"gitId":"-"},"content":" return String.format(message, personToEdit);","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":"","lastModifiedDate":"2020-07-29"},{"lineNumber":369,"author":{"gitId":"-"},"content":"![Congratulations!](../images/add-remark/RemarkComplete.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":370,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":371,"author":{"gitId":"-"},"content":"## Writing tests","lastModifiedDate":"2020-07-29"},{"lineNumber":372,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":373,"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":374,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":375,"author":{"gitId":"-"},"content":"Let’s verify the correctness of our code by writing some tests!","lastModifiedDate":"2020-07-29"},{"lineNumber":376,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":377,"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":378,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-01"},{"lineNumber":379,"author":{"gitId":"-"},"content":"### Automatically generating tests","lastModifiedDate":"2020-07-29"},{"lineNumber":380,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":381,"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":382,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":383,"author":{"gitId":"-"},"content":"The convention for test names is `methodName_testScenario_expectedResult`. An example would be","lastModifiedDate":"2020-07-29"},{"lineNumber":384,"author":{"gitId":"-"},"content":"`execute_filteredList_success`.","lastModifiedDate":"2020-07-29"},{"lineNumber":385,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":386,"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":387,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":388,"author":{"gitId":"-"},"content":"![Using the context menu to jump to tests](../images/add-remark/ContextMenu.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":389,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":390,"author":{"gitId":"-"},"content":"Then, create a test for the `execute` method.","lastModifiedDate":"2020-07-29"},{"lineNumber":391,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":392,"author":{"gitId":"-"},"content":"![Creating a test for `execute`.](../images/add-remark/CreateTest.png)","lastModifiedDate":"2020-07-29"},{"lineNumber":393,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":394,"author":{"gitId":"-"},"content":"Following convention, let’s change the name of the generated method to `execute_addRemarkUnfilteredList_success`.","lastModifiedDate":"2020-07-29"},{"lineNumber":395,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":396,"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":397,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":398,"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":399,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":400,"author":{"gitId":"-"},"content":"## Conclusion","lastModifiedDate":"2020-07-29"},{"lineNumber":401,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":402,"author":{"gitId":"-"},"content":"This concludes the tutorial for adding a new `Command` to AddressBook.","lastModifiedDate":"2020-07-29"}],"authorContributionMap":{"doyelee0313":1,"STELLA-LYE":10,"-":391}},{"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":"STELLA-LYE"},"content":"This tutorial aims to give you some practice on such a code \u0027removal\u0027 activity by removing the `major` field from `Person` class.","lastModifiedDate":"2024-03-17"},{"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":"STELLA-LYE"},"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 `major` field can be done similarly.","lastModifiedDate":"2024-03-17"},{"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":"STELLA-LYE"},"content":"The `major` field in `Person` is actually an instance of the `seedu.address.model.person.Majorclass. 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":"2024-03-17"},{"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":"STELLA-LYE"},"content":"1. Safe delete the field `major` in `EditPersonDescriptor`.","lastModifiedDate":"2024-03-17"},{"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":"STELLA-LYE"},"content":"1. Remove the usages of `major` and select `Do refactor` when you are done.","lastModifiedDate":"2024-03-17"},{"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":"STELLA-LYE"},"content":" **Tip:** Removing usages may result in errors. Exercise discretion and fix them. For example, removing the `major` field from the `Person` class will require you to modify its constructor.","lastModifiedDate":"2024-03-17"},{"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":"STELLA-LYE"},"content":"Unfortunately, there are usages of `Address` that IntelliJ IDEA cannot identify. You can find them by searching for instances of the word `major` in your code (`Edit` \\\u003e `Find` \\\u003e `Find in path`).","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"STELLA-LYE"},"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 `$major` in each `PersonCard` that has not been removed nor identified.","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"STELLA-LYE"},"content":"![$major](../images/remove/$major.png)","lastModifiedDate":"2024-03-17"},{"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":"STELLA-LYE"},"content":"private Label major;","lastModifiedDate":"2024-03-17"},{"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":"STELLA-LYE"},"content":"\u003cLabel fx:id\u003d\"major\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$major\" /\u003e","lastModifiedDate":"2024-03-17"},{"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":"STELLA-LYE"},"content":"In `src/test/data/`, data meant for testing purposes are stored. While keeping the `major` 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":"2024-03-17"},{"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":"-"},"content":" \"persons\": [ {","lastModifiedDate":"2020-05-23"},{"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":"STELLA-LYE"},"content":" \"major\": \"4th street\"","lastModifiedDate":"2024-03-17"},{"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":"STELLA-LYE"},"content":"You can go through each individual `json` file and manually remove the `major` field.","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"STELLA-LYE":14,"-":101}},{"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":"STELLA-LYE"},"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.major.logic.Logic`.","lastModifiedDate":"2024-03-17"},{"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":"STELLA-LYE"},"content":"A quick look at the `seedu.major.logic.Logic` (an extract given below) confirms that this indeed might be what we’re looking for.","lastModifiedDate":"2024-03-17"},{"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":"doyelee0313"},"content":"Recall from the User Guide that the `edit` command has the format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/Group]…​` For this tutorial we will be issuing the command `edit 1 n/Alice Yeoh`.","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":" * it uses the `updateFilteredPersonList` method to ask the `Model` to populate the \u0027filtered list\u0027 with _all_ persons.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":212,"author":{"gitId":"-"},"content":" FYI, The \u0027filtered list\u0027 is the list of persons 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 persons so that the user can see the edited person along with all other persons. If this was a `find` command, we would be setting that list to contain the search results instead.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":213,"author":{"gitId":"-"},"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 persons is being tracked.","lastModifiedDate":"2021-07-31"},{"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":"-"},"content":" persons.addAll(","lastModifiedDate":"2020-05-23"},{"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":"STELLA-LYE"},"content":" 3. Save the major book in the CSV format instead","lastModifiedDate":"2024-03-17"},{"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":"STELLA-LYE"},"content":" 6. Add a new entity to the major book","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"doyelee0313":1,"STELLA-LYE":4,"-":306}},{"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":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"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":"jocelyn-soh"},"content":" * Returns true if the {@code sentence} contains the {@code word} at the beginning of any word.","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"jocelyn-soh"},"content":" * Ignores case, a partial word match is allowed","lastModifiedDate":"2024-03-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":"jocelyn-soh"},"content":" * containsWordIgnoreCase(\"ABc def\", \"AB\") \u003d\u003d true //partial word match","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"jocelyn-soh"},"content":" * containsWordIgnoreCase(\"ABc def\", \"Bc\") \u003d\u003d false //contains but not at the beginning of any word","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * \u003c/pre\u003e","lastModifiedDate":"2016-10-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @param sentence cannot be null","lastModifiedDate":"2016-10-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * @param word cannot be null, cannot be empty, must be a single word","lastModifiedDate":"2016-10-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-13"},{"lineNumber":27,"author":{"gitId":"jocelyn-soh"},"content":" public static boolean containsStartingWordIgnoreCase(String sentence, String word) {","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" requireNonNull(sentence);","lastModifiedDate":"2017-05-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" requireNonNull(word);","lastModifiedDate":"2017-05-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":31,"author":{"gitId":"jocelyn-soh"},"content":" String preppedWord \u003d word.trim().toLowerCase();","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" checkArgument(!preppedWord.isEmpty(), \"Word parameter cannot be empty\");","lastModifiedDate":"2017-05-15"},{"lineNumber":33,"author":{"gitId":"jocelyn-soh"},"content":" checkArgument(preppedWord.split(\"\\\\s+\").length \u003d\u003d 1, \"Word parameter should be a \"","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"jocelyn-soh"},"content":" + \"single word\");","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":36,"author":{"gitId":"jocelyn-soh"},"content":" String preppedSentence \u003d sentence.toLowerCase();","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" String[] wordsInPreppedSentence \u003d preppedSentence.split(\"\\\\s+\");","lastModifiedDate":"2016-10-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return Arrays.stream(wordsInPreppedSentence)","lastModifiedDate":"2018-01-21"},{"lineNumber":40,"author":{"gitId":"jocelyn-soh"},"content":" .anyMatch(currWord -\u003e currWord.startsWith(preppedWord));","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Returns a detailed message of the t, including the stack trace.","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static String getDetails(Throwable t) {","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" requireNonNull(t);","lastModifiedDate":"2017-05-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":" StringWriter sw \u003d new StringWriter();","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" t.printStackTrace(new PrintWriter(sw));","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return t.getMessage() + \"\\n\" + sw.toString();","lastModifiedDate":"2016-09-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-22"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Returns true if {@code s} represents a non-zero unsigned integer","lastModifiedDate":"2017-06-02"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * e.g. 1, 2, 3, ..., {@code Integer.MAX_VALUE} \u003cbr\u003e","lastModifiedDate":"2017-06-02"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Will return false for any other non-null string input","lastModifiedDate":"2017-06-02"},{"lineNumber":57,"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":58,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code s} is null.","lastModifiedDate":"2017-06-02"},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static boolean isNonZeroUnsignedInteger(String s) {","lastModifiedDate":"2017-06-02"},{"lineNumber":61,"author":{"gitId":"-"},"content":" requireNonNull(s);","lastModifiedDate":"2017-06-02"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":63,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-06-02"},{"lineNumber":64,"author":{"gitId":"-"},"content":" int value \u003d Integer.parseInt(s);","lastModifiedDate":"2017-06-02"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return value \u003e 0 \u0026\u0026 !s.startsWith(\"+\"); // \"+1\" is successfully parsed by Integer#parseInt(String)","lastModifiedDate":"2017-06-02"},{"lineNumber":66,"author":{"gitId":"-"},"content":" } catch (NumberFormatException nfe) {","lastModifiedDate":"2017-06-02"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-06-02"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-02"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"-":60,"jocelyn-soh":10}},{"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":"STELLA-LYE"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX \u003d \"The student index provided is invalid\";","lastModifiedDate":"2024-03-09"},{"lineNumber":18,"author":{"gitId":"STELLA-LYE"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d students listed!\";","lastModifiedDate":"2024-03-09"},{"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":"tohlh"},"content":" .append(\"; Year: \")","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"tohlh"},"content":" .append(person.getYear())","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"STELLA-LYE"},"content":" .append(\"; Major: \")","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"STELLA-LYE"},"content":" .append(person.getMajor())","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"tohlh"},"content":" .append(\"; Telegram: \")","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"tohlh"},"content":" .append(person.getTelegram())","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"jocelyn-soh"},"content":" .append(\"; Remark: \")","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"jocelyn-soh"},"content":" .append(person.getRemark())","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"doyelee0313"},"content":" .append(\"; Groups: \");","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"doyelee0313"},"content":" person.getGroups().forEach(builder::append);","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"doyelee0313":2,"STELLA-LYE":4,"-":45,"jocelyn-soh":2,"tohlh":4}},{"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":"doyelee0313"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GROUP;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MAJOR;","lastModifiedDate":"2024-03-18"},{"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":"jocelyn-soh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_YEAR;","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-01-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-08-24"},{"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":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a person to the address book. \"","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09"},{"lineNumber":31,"author":{"gitId":"tohlh"},"content":" + PREFIX_YEAR + \"YEAR \"","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"STELLA-LYE"},"content":" + PREFIX_MAJOR + \"MAJOR \"","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"tohlh"},"content":" + PREFIX_TELEGRAM + \"TELEGRAM \"","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"jocelyn-soh"},"content":" + \"[\" + PREFIX_REMARK + \"REMARK] \"","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"doyelee0313"},"content":" + \"[\" + PREFIX_GROUP + \"Group]...\\n\"","lastModifiedDate":"2024-03-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":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09"},{"lineNumber":40,"author":{"gitId":"tohlh"},"content":" + PREFIX_YEAR + \"2 \"","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"STELLA-LYE"},"content":" + PREFIX_MAJOR + \"Computer Science \"","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"tohlh"},"content":" + PREFIX_TELEGRAM + \"johndoe \"","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"jocelyn-soh"},"content":" + PREFIX_REMARK + \"Very quiet student \"","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"doyelee0313"},"content":" + PREFIX_GROUP + \"TUT04 \"","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"doyelee0313"},"content":" + PREFIX_GROUP + \"LAB10 \";","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: %1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book\";","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":56,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":64,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":65,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"doyelee0313":4,"STELLA-LYE":3,"-":77,"jocelyn-soh":3,"tohlh":6}},{"path":"src/main/java/seedu/address/logic/commands/AddGroupCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"tohlh"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-23"},{"lineNumber":2,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":3,"author":{"gitId":"tohlh"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-23"},{"lineNumber":4,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GROUP;","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"tohlh"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"tohlh"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"tohlh"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-23"},{"lineNumber":9,"author":{"gitId":"tohlh"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"tohlh"},"content":"/**","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"tohlh"},"content":" * Adds a group to the address book.","lastModifiedDate":"2024-03-24"},{"lineNumber":13,"author":{"gitId":"tohlh"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"tohlh"},"content":"public class AddGroupCommand extends Command {","lastModifiedDate":"2024-03-23"},{"lineNumber":15,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":16,"author":{"gitId":"tohlh"},"content":" public static final String COMMAND_WORD \u003d \"addgroup\";","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":18,"author":{"gitId":"tohlh"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a group to the address book. \"","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"tohlh"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"tohlh"},"content":" + PREFIX_GROUP + \"GROUP NAME \";","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"tohlh"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New group added: %1$s\";","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"tohlh"},"content":" public static final String MESSAGE_DUPLICATE_GROUP \u003d \"This group already exists in the address book\";","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"tohlh"},"content":" private final Group toAdd;","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":27,"author":{"gitId":"tohlh"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":28,"author":{"gitId":"tohlh"},"content":" * Creates an AddGroupCommand","lastModifiedDate":"2024-03-24"},{"lineNumber":29,"author":{"gitId":"tohlh"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"tohlh"},"content":" public AddGroupCommand(Group group) {","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"tohlh"},"content":" requireNonNull(group);","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"tohlh"},"content":" toAdd \u003d group;","lastModifiedDate":"2024-03-23"},{"lineNumber":33,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":34,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":35,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"tohlh"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-23"},{"lineNumber":37,"author":{"gitId":"tohlh"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":39,"author":{"gitId":"tohlh"},"content":" if (model.hasGroup(toAdd)) {","lastModifiedDate":"2024-03-23"},{"lineNumber":40,"author":{"gitId":"tohlh"},"content":" throw new CommandException(MESSAGE_DUPLICATE_GROUP);","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":43,"author":{"gitId":"tohlh"},"content":" model.addGroup(toAdd);","lastModifiedDate":"2024-03-23"},{"lineNumber":44,"author":{"gitId":"tohlh"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, toAdd));","lastModifiedDate":"2024-03-23"},{"lineNumber":45,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":46,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":47,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":48,"author":{"gitId":"tohlh"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-23"},{"lineNumber":49,"author":{"gitId":"tohlh"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-23"},{"lineNumber":50,"author":{"gitId":"tohlh"},"content":" return true;","lastModifiedDate":"2024-03-23"},{"lineNumber":51,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":52,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":53,"author":{"gitId":"tohlh"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-23"},{"lineNumber":54,"author":{"gitId":"tohlh"},"content":" if (!(other instanceof AddGroupCommand)) {","lastModifiedDate":"2024-03-23"},{"lineNumber":55,"author":{"gitId":"tohlh"},"content":" return false;","lastModifiedDate":"2024-03-23"},{"lineNumber":56,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":57,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":58,"author":{"gitId":"tohlh"},"content":" AddGroupCommand otherAddGroupCommand \u003d (AddGroupCommand) other;","lastModifiedDate":"2024-03-23"},{"lineNumber":59,"author":{"gitId":"tohlh"},"content":" return toAdd.equals(otherAddGroupCommand.toAdd);","lastModifiedDate":"2024-03-23"},{"lineNumber":60,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":61,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":62,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":63,"author":{"gitId":"tohlh"},"content":" public String toString() {","lastModifiedDate":"2024-03-23"},{"lineNumber":64,"author":{"gitId":"tohlh"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-23"},{"lineNumber":65,"author":{"gitId":"tohlh"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2024-03-23"},{"lineNumber":66,"author":{"gitId":"tohlh"},"content":" .toString();","lastModifiedDate":"2024-03-23"},{"lineNumber":67,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":68,"author":{"gitId":"tohlh"},"content":"}","lastModifiedDate":"2024-03-23"}],"authorContributionMap":{"tohlh":68}},{"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":"STELLA-LYE"},"content":" + \": Deletes the student identified by the index number used in the displayed person list.\\n\"","lastModifiedDate":"2024-03-09"},{"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":"STELLA-LYE"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Student: %1$s\";","lastModifiedDate":"2024-03-09"},{"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":{"STELLA-LYE":2,"-":67}},{"path":"src/main/java/seedu/address/logic/commands/DeleteGroupCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"tohlh"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-24"},{"lineNumber":2,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":3,"author":{"gitId":"tohlh"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-24"},{"lineNumber":4,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GROUP;","lastModifiedDate":"2024-03-24"},{"lineNumber":5,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":6,"author":{"gitId":"tohlh"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-24"},{"lineNumber":7,"author":{"gitId":"tohlh"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-24"},{"lineNumber":8,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":9,"author":{"gitId":"tohlh"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-24"},{"lineNumber":10,"author":{"gitId":"tohlh"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-24"},{"lineNumber":11,"author":{"gitId":"tohlh"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-24"},{"lineNumber":12,"author":{"gitId":"tohlh"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-24"},{"lineNumber":13,"author":{"gitId":"tohlh"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-24"},{"lineNumber":14,"author":{"gitId":"tohlh"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-24"},{"lineNumber":15,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":16,"author":{"gitId":"tohlh"},"content":"/**","lastModifiedDate":"2024-03-24"},{"lineNumber":17,"author":{"gitId":"tohlh"},"content":" * Deletes a group from the address book.","lastModifiedDate":"2024-03-24"},{"lineNumber":18,"author":{"gitId":"tohlh"},"content":" */","lastModifiedDate":"2024-03-24"},{"lineNumber":19,"author":{"gitId":"tohlh"},"content":"public class DeleteGroupCommand extends Command {","lastModifiedDate":"2024-03-24"},{"lineNumber":20,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":21,"author":{"gitId":"tohlh"},"content":" public static final String COMMAND_WORD \u003d \"deletegroup\";","lastModifiedDate":"2024-03-24"},{"lineNumber":22,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":23,"author":{"gitId":"tohlh"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Deletes a group to the address book. \"","lastModifiedDate":"2024-03-24"},{"lineNumber":24,"author":{"gitId":"tohlh"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-03-24"},{"lineNumber":25,"author":{"gitId":"tohlh"},"content":" + PREFIX_GROUP + \"GROUP NAME \";","lastModifiedDate":"2024-03-24"},{"lineNumber":26,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":27,"author":{"gitId":"tohlh"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Group removed: %1$s\";","lastModifiedDate":"2024-03-24"},{"lineNumber":28,"author":{"gitId":"tohlh"},"content":" public static final String MESSAGE_NOT_FOUND \u003d \"Group is not found\";","lastModifiedDate":"2024-03-24"},{"lineNumber":29,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":30,"author":{"gitId":"tohlh"},"content":" private final Group toRemove;","lastModifiedDate":"2024-03-24"},{"lineNumber":31,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":32,"author":{"gitId":"tohlh"},"content":" /**","lastModifiedDate":"2024-03-24"},{"lineNumber":33,"author":{"gitId":"tohlh"},"content":" * Creates a DeleteGroupCommand","lastModifiedDate":"2024-03-24"},{"lineNumber":34,"author":{"gitId":"tohlh"},"content":" */","lastModifiedDate":"2024-03-24"},{"lineNumber":35,"author":{"gitId":"tohlh"},"content":" public DeleteGroupCommand(Group group) {","lastModifiedDate":"2024-03-24"},{"lineNumber":36,"author":{"gitId":"tohlh"},"content":" requireNonNull(group);","lastModifiedDate":"2024-03-24"},{"lineNumber":37,"author":{"gitId":"tohlh"},"content":" toRemove \u003d group;","lastModifiedDate":"2024-03-24"},{"lineNumber":38,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":39,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":40,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-24"},{"lineNumber":41,"author":{"gitId":"tohlh"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-24"},{"lineNumber":42,"author":{"gitId":"tohlh"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-24"},{"lineNumber":43,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":44,"author":{"gitId":"tohlh"},"content":" if (!model.hasGroup(toRemove)) {","lastModifiedDate":"2024-03-24"},{"lineNumber":45,"author":{"gitId":"tohlh"},"content":" throw new CommandException(MESSAGE_NOT_FOUND);","lastModifiedDate":"2024-03-24"},{"lineNumber":46,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":47,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":48,"author":{"gitId":"tohlh"},"content":" ObservableList\u003cPerson\u003e persons \u003d model.getAddressBook().getPersonList();","lastModifiedDate":"2024-03-24"},{"lineNumber":49,"author":{"gitId":"tohlh"},"content":" for (Person person : persons) {","lastModifiedDate":"2024-03-24"},{"lineNumber":50,"author":{"gitId":"tohlh"},"content":" if (person.getGroups().contains(toRemove)) {","lastModifiedDate":"2024-03-24"},{"lineNumber":51,"author":{"gitId":"tohlh"},"content":" Set\u003cGroup\u003e editedGroups \u003d new HashSet\u003c\u003e(person.getGroups());","lastModifiedDate":"2024-03-24"},{"lineNumber":52,"author":{"gitId":"tohlh"},"content":" editedGroups.remove(toRemove);","lastModifiedDate":"2024-03-24"},{"lineNumber":53,"author":{"gitId":"tohlh"},"content":" Person editedPerson \u003d new Person(person.getName(), person.getPhone(), person.getEmail(),","lastModifiedDate":"2024-03-24"},{"lineNumber":54,"author":{"gitId":"tohlh"},"content":" person.getYear(), person.getTelegram(), person.getMajor(), person.getRemark(),","lastModifiedDate":"2024-03-24"},{"lineNumber":55,"author":{"gitId":"tohlh"},"content":" editedGroups);","lastModifiedDate":"2024-03-24"},{"lineNumber":56,"author":{"gitId":"tohlh"},"content":" model.setPerson(person, editedPerson);","lastModifiedDate":"2024-03-24"},{"lineNumber":57,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":58,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":59,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":60,"author":{"gitId":"tohlh"},"content":" model.deleteGroup(toRemove);","lastModifiedDate":"2024-03-24"},{"lineNumber":61,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":62,"author":{"gitId":"tohlh"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, toRemove));","lastModifiedDate":"2024-03-24"},{"lineNumber":63,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":64,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":65,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-24"},{"lineNumber":66,"author":{"gitId":"tohlh"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-24"},{"lineNumber":67,"author":{"gitId":"tohlh"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-24"},{"lineNumber":68,"author":{"gitId":"tohlh"},"content":" return true;","lastModifiedDate":"2024-03-24"},{"lineNumber":69,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":70,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":71,"author":{"gitId":"tohlh"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-24"},{"lineNumber":72,"author":{"gitId":"tohlh"},"content":" if (!(other instanceof DeleteGroupCommand)) {","lastModifiedDate":"2024-03-24"},{"lineNumber":73,"author":{"gitId":"tohlh"},"content":" return false;","lastModifiedDate":"2024-03-24"},{"lineNumber":74,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":75,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":76,"author":{"gitId":"tohlh"},"content":" DeleteGroupCommand otherAddGroupCommand \u003d (DeleteGroupCommand) other;","lastModifiedDate":"2024-03-24"},{"lineNumber":77,"author":{"gitId":"tohlh"},"content":" return toRemove.equals(otherAddGroupCommand.toRemove);","lastModifiedDate":"2024-03-24"},{"lineNumber":78,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":79,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":80,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-24"},{"lineNumber":81,"author":{"gitId":"tohlh"},"content":" public String toString() {","lastModifiedDate":"2024-03-24"},{"lineNumber":82,"author":{"gitId":"tohlh"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-24"},{"lineNumber":83,"author":{"gitId":"tohlh"},"content":" .add(\"toRemove\", toRemove)","lastModifiedDate":"2024-03-24"},{"lineNumber":84,"author":{"gitId":"tohlh"},"content":" .toString();","lastModifiedDate":"2024-03-24"},{"lineNumber":85,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":86,"author":{"gitId":"tohlh"},"content":"}","lastModifiedDate":"2024-03-24"}],"authorContributionMap":{"tohlh":86}},{"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":"doyelee0313"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GROUP;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MAJOR;","lastModifiedDate":"2024-03-18"},{"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":"jocelyn-soh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_YEAR;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":27,"author":{"gitId":"doyelee0313"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26"},{"lineNumber":29,"author":{"gitId":"STELLA-LYE"},"content":"import seedu.address.model.person.Major;","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-26"},{"lineNumber":33,"author":{"gitId":"jocelyn-soh"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"tohlh"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"tohlh"},"content":"import seedu.address.model.person.Year;","lastModifiedDate":"2024-03-13"},{"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":"tohlh"},"content":" + \"[\" + PREFIX_YEAR + \"YEAR] \"","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"STELLA-LYE"},"content":" + \"[\" + PREFIX_MAJOR + \"MAJOR] \"","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"tohlh"},"content":" + \"[\" + PREFIX_TELEGRAM + \"TELEGRAM]\"","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"jocelyn-soh"},"content":" + \"[\" + PREFIX_REMARK + \"REMARK]\"","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"doyelee0313"},"content":" + \"[\" + PREFIX_GROUP + \"Group]...\\n\"","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09"},{"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":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26"},{"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":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26"},{"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":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21"},{"lineNumber":109,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":110,"author":{"gitId":"tohlh"},"content":" Year updatedYear \u003d editPersonDescriptor.getYear().orElse(personToEdit.getYear());","lastModifiedDate":"2024-03-13"},{"lineNumber":111,"author":{"gitId":"STELLA-LYE"},"content":" Major updatedMajor \u003d editPersonDescriptor.getMajor().orElse(personToEdit.getMajor());","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"tohlh"},"content":" Telegram updatedTelegram \u003d editPersonDescriptor.getTelegram().orElse(personToEdit.getTelegram());","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"jocelyn-soh"},"content":" Remark updatedRemark \u003d editPersonDescriptor.getRemark().orElse(personToEdit.getRemark());","lastModifiedDate":"2024-03-19"},{"lineNumber":114,"author":{"gitId":"doyelee0313"},"content":" Set\u003cGroup\u003e updatedGroups \u003d editPersonDescriptor.getGroups().orElse(personToEdit.getGroups());","lastModifiedDate":"2024-03-20"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":116,"author":{"gitId":"tohlh"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedYear, updatedTelegram,","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"doyelee0313"},"content":" updatedMajor, updatedRemark, updatedGroups);","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13"},{"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":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23"},{"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":"2016-12-26"},{"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":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":151,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":152,"author":{"gitId":"tohlh"},"content":" private Year year;","lastModifiedDate":"2024-03-13"},{"lineNumber":153,"author":{"gitId":"STELLA-LYE"},"content":" private Major major;","lastModifiedDate":"2024-03-17"},{"lineNumber":154,"author":{"gitId":"tohlh"},"content":" private Telegram telegram;","lastModifiedDate":"2024-03-17"},{"lineNumber":155,"author":{"gitId":"jocelyn-soh"},"content":" private Remark remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":156,"author":{"gitId":"doyelee0313"},"content":" private Set\u003cGroup\u003e groups;","lastModifiedDate":"2024-03-20"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":158,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":160,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":161,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11"},{"lineNumber":162,"author":{"gitId":"doyelee0313"},"content":" * A defensive copy of {@code groups} is used internally.","lastModifiedDate":"2024-03-20"},{"lineNumber":163,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":164,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26"},{"lineNumber":165,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15"},{"lineNumber":166,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15"},{"lineNumber":167,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15"},{"lineNumber":168,"author":{"gitId":"tohlh"},"content":" setYear(toCopy.year);","lastModifiedDate":"2024-03-13"},{"lineNumber":169,"author":{"gitId":"STELLA-LYE"},"content":" setMajor(toCopy.major);","lastModifiedDate":"2024-03-17"},{"lineNumber":170,"author":{"gitId":"tohlh"},"content":" setTelegram(toCopy.telegram);","lastModifiedDate":"2024-03-17"},{"lineNumber":171,"author":{"gitId":"jocelyn-soh"},"content":" setRemark(toCopy.remark);","lastModifiedDate":"2024-03-19"},{"lineNumber":172,"author":{"gitId":"doyelee0313"},"content":" setGroups(toCopy.groups);","lastModifiedDate":"2024-03-20"},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":175,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":176,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26"},{"lineNumber":177,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":178,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26"},{"lineNumber":179,"author":{"gitId":"doyelee0313"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, year, major, telegram, remark, groups);","lastModifiedDate":"2024-03-20"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":182,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21"},{"lineNumber":183,"author":{"gitId":"-"},"content":" this.name \u003d 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 Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":187,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","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 void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21"},{"lineNumber":191,"author":{"gitId":"-"},"content":" this.phone \u003d 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 Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26"},{"lineNumber":195,"author":{"gitId":"-"},"content":" return Optional.ofNullable(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 void setEmail(Email email) {","lastModifiedDate":"2017-06-21"},{"lineNumber":199,"author":{"gitId":"-"},"content":" this.email \u003d 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 Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":203,"author":{"gitId":"-"},"content":" return Optional.ofNullable(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":"tohlh"},"content":" public void setYear(Year year) {","lastModifiedDate":"2024-03-13"},{"lineNumber":207,"author":{"gitId":"tohlh"},"content":" this.year \u003d year;","lastModifiedDate":"2024-03-13"},{"lineNumber":208,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":209,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":210,"author":{"gitId":"tohlh"},"content":" public Optional\u003cYear\u003e getYear() {","lastModifiedDate":"2024-03-13"},{"lineNumber":211,"author":{"gitId":"tohlh"},"content":" return Optional.ofNullable(year);","lastModifiedDate":"2024-03-13"},{"lineNumber":212,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":213,"author":{"gitId":"tohlh"},"content":" public void setTelegram(Telegram telegram) {","lastModifiedDate":"2024-03-17"},{"lineNumber":214,"author":{"gitId":"tohlh"},"content":" this.telegram \u003d telegram;","lastModifiedDate":"2024-03-17"},{"lineNumber":215,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":216,"author":{"gitId":"tohlh"},"content":" public Optional\u003cTelegram\u003e getTelegram() {","lastModifiedDate":"2024-03-17"},{"lineNumber":217,"author":{"gitId":"tohlh"},"content":" return Optional.ofNullable(telegram);","lastModifiedDate":"2024-03-17"},{"lineNumber":218,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":219,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":220,"author":{"gitId":"STELLA-LYE"},"content":" public void setMajor(Major major) {","lastModifiedDate":"2024-03-17"},{"lineNumber":221,"author":{"gitId":"STELLA-LYE"},"content":" this.major \u003d major;","lastModifiedDate":"2024-03-17"},{"lineNumber":222,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":224,"author":{"gitId":"STELLA-LYE"},"content":" public Optional\u003cMajor\u003e getMajor() {","lastModifiedDate":"2024-03-17"},{"lineNumber":225,"author":{"gitId":"STELLA-LYE"},"content":" return Optional.ofNullable(major);","lastModifiedDate":"2024-03-17"},{"lineNumber":226,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":227,"author":{"gitId":"jocelyn-soh"},"content":" public void setRemark(Remark remark) {","lastModifiedDate":"2024-03-19"},{"lineNumber":228,"author":{"gitId":"jocelyn-soh"},"content":" this.remark \u003d remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":229,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":231,"author":{"gitId":"jocelyn-soh"},"content":" public Optional\u003cRemark\u003e getRemark() {","lastModifiedDate":"2024-03-19"},{"lineNumber":232,"author":{"gitId":"jocelyn-soh"},"content":" return Optional.ofNullable(remark);","lastModifiedDate":"2024-03-19"},{"lineNumber":233,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":235,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":236,"author":{"gitId":"doyelee0313"},"content":" * Sets {@code groups} to this object\u0027s {@code groups}.","lastModifiedDate":"2024-03-20"},{"lineNumber":237,"author":{"gitId":"doyelee0313"},"content":" * A defensive copy of {@code groups} is used internally.","lastModifiedDate":"2024-03-20"},{"lineNumber":238,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":239,"author":{"gitId":"doyelee0313"},"content":" public void setGroups(Set\u003cGroup\u003e groups) {","lastModifiedDate":"2024-03-20"},{"lineNumber":240,"author":{"gitId":"doyelee0313"},"content":" this.groups \u003d (groups !\u003d null) ? new HashSet\u003c\u003e(groups) : null;","lastModifiedDate":"2024-03-20"},{"lineNumber":241,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":243,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":244,"author":{"gitId":"doyelee0313"},"content":" * Returns an unmodifiable group set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2024-03-20"},{"lineNumber":245,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11"},{"lineNumber":246,"author":{"gitId":"doyelee0313"},"content":" * Returns {@code Optional#empty()} if {@code groups} is null.","lastModifiedDate":"2024-03-20"},{"lineNumber":247,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":248,"author":{"gitId":"doyelee0313"},"content":" public Optional\u003cSet\u003cGroup\u003e\u003e getGroups() {","lastModifiedDate":"2024-03-20"},{"lineNumber":249,"author":{"gitId":"doyelee0313"},"content":" return (groups !\u003d null) ? Optional.of(Collections.unmodifiableSet(groups)) : Optional.empty();","lastModifiedDate":"2024-03-20"},{"lineNumber":250,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":252,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":253,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":254,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":255,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":256,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":258,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":259,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05"},{"lineNumber":260,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":261,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":263,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":264,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":265,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":266,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":267,"author":{"gitId":"tohlh"},"content":" \u0026\u0026 Objects.equals(year, otherEditPersonDescriptor.year)","lastModifiedDate":"2024-03-19"},{"lineNumber":268,"author":{"gitId":"tohlh"},"content":" \u0026\u0026 Objects.equals(telegram, otherEditPersonDescriptor.telegram)","lastModifiedDate":"2024-03-19"},{"lineNumber":269,"author":{"gitId":"STELLA-LYE"},"content":" \u0026\u0026 Objects.equals(major, otherEditPersonDescriptor.major)","lastModifiedDate":"2024-03-17"},{"lineNumber":270,"author":{"gitId":"tohlh"},"content":" \u0026\u0026 Objects.equals(remark, otherEditPersonDescriptor.remark)","lastModifiedDate":"2024-03-19"},{"lineNumber":271,"author":{"gitId":"doyelee0313"},"content":" \u0026\u0026 Objects.equals(groups, otherEditPersonDescriptor.groups);","lastModifiedDate":"2024-03-20"},{"lineNumber":272,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":277,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":278,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":279,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":280,"author":{"gitId":"tohlh"},"content":" .add(\"year\", year)","lastModifiedDate":"2024-03-13"},{"lineNumber":281,"author":{"gitId":"STELLA-LYE"},"content":" .add(\"major\", major)","lastModifiedDate":"2024-03-17"},{"lineNumber":282,"author":{"gitId":"tohlh"},"content":" .add(\"telegram\", telegram)","lastModifiedDate":"2024-03-17"},{"lineNumber":283,"author":{"gitId":"jocelyn-soh"},"content":" .add(\"remark\", remark)","lastModifiedDate":"2024-03-19"},{"lineNumber":284,"author":{"gitId":"doyelee0313"},"content":" .add(\"groups\", groups)","lastModifiedDate":"2024-03-20"},{"lineNumber":285,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":286,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":287,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":288,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"doyelee0313":19,"STELLA-LYE":12,"-":214,"jocelyn-soh":11,"tohlh":32}},{"path":"src/main/java/seedu/address/logic/commands/EditGroupCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"tohlh"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-24"},{"lineNumber":2,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":3,"author":{"gitId":"tohlh"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-24"},{"lineNumber":4,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GROUP;","lastModifiedDate":"2024-03-24"},{"lineNumber":5,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-03-24"},{"lineNumber":6,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":7,"author":{"gitId":"tohlh"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-24"},{"lineNumber":8,"author":{"gitId":"tohlh"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-24"},{"lineNumber":9,"author":{"gitId":"tohlh"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-24"},{"lineNumber":10,"author":{"gitId":"tohlh"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-24"},{"lineNumber":11,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":12,"author":{"gitId":"tohlh"},"content":"/**","lastModifiedDate":"2024-03-24"},{"lineNumber":13,"author":{"gitId":"tohlh"},"content":" * Adds a group to the address book.","lastModifiedDate":"2024-03-24"},{"lineNumber":14,"author":{"gitId":"tohlh"},"content":" */","lastModifiedDate":"2024-03-24"},{"lineNumber":15,"author":{"gitId":"tohlh"},"content":"public class EditGroupCommand extends Command {","lastModifiedDate":"2024-03-24"},{"lineNumber":16,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":17,"author":{"gitId":"tohlh"},"content":" public static final String COMMAND_WORD \u003d \"editgroup\";","lastModifiedDate":"2024-03-24"},{"lineNumber":18,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":19,"author":{"gitId":"tohlh"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edit the Telegram group link \"","lastModifiedDate":"2024-03-24"},{"lineNumber":20,"author":{"gitId":"tohlh"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-03-24"},{"lineNumber":21,"author":{"gitId":"tohlh"},"content":" + PREFIX_GROUP + \"GROUP NAME \"","lastModifiedDate":"2024-03-24"},{"lineNumber":22,"author":{"gitId":"tohlh"},"content":" + PREFIX_TELEGRAM + \"TELEGRAM INVITE LINK \";","lastModifiedDate":"2024-03-24"},{"lineNumber":23,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":24,"author":{"gitId":"tohlh"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Group edited: %1$s\";","lastModifiedDate":"2024-03-24"},{"lineNumber":25,"author":{"gitId":"tohlh"},"content":" public static final String MESSAGE_NOT_FOUND \u003d \"Group is not found\";","lastModifiedDate":"2024-03-24"},{"lineNumber":26,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":27,"author":{"gitId":"tohlh"},"content":" private final Group toEdit;","lastModifiedDate":"2024-03-24"},{"lineNumber":28,"author":{"gitId":"tohlh"},"content":" private final String link;","lastModifiedDate":"2024-03-24"},{"lineNumber":29,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":30,"author":{"gitId":"tohlh"},"content":" /**","lastModifiedDate":"2024-03-24"},{"lineNumber":31,"author":{"gitId":"tohlh"},"content":" * Creates an AddGroupCommand","lastModifiedDate":"2024-03-24"},{"lineNumber":32,"author":{"gitId":"tohlh"},"content":" */","lastModifiedDate":"2024-03-24"},{"lineNumber":33,"author":{"gitId":"tohlh"},"content":" public EditGroupCommand(Group group, String link) {","lastModifiedDate":"2024-03-24"},{"lineNumber":34,"author":{"gitId":"tohlh"},"content":" requireNonNull(group);","lastModifiedDate":"2024-03-24"},{"lineNumber":35,"author":{"gitId":"tohlh"},"content":" this.toEdit \u003d group;","lastModifiedDate":"2024-03-24"},{"lineNumber":36,"author":{"gitId":"tohlh"},"content":" this.link \u003d link;","lastModifiedDate":"2024-03-24"},{"lineNumber":37,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":38,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":39,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-24"},{"lineNumber":40,"author":{"gitId":"tohlh"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-24"},{"lineNumber":41,"author":{"gitId":"tohlh"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-24"},{"lineNumber":42,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":43,"author":{"gitId":"tohlh"},"content":" if (!model.hasGroup(toEdit)) {","lastModifiedDate":"2024-03-24"},{"lineNumber":44,"author":{"gitId":"tohlh"},"content":" throw new CommandException(MESSAGE_NOT_FOUND);","lastModifiedDate":"2024-03-24"},{"lineNumber":45,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":46,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":47,"author":{"gitId":"tohlh"},"content":" Group editedGroup \u003d new Group(toEdit.groupName, this.link);","lastModifiedDate":"2024-03-24"},{"lineNumber":48,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":49,"author":{"gitId":"tohlh"},"content":" model.setGroup(toEdit, editedGroup);","lastModifiedDate":"2024-03-24"},{"lineNumber":50,"author":{"gitId":"tohlh"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, toEdit));","lastModifiedDate":"2024-03-24"},{"lineNumber":51,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":52,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":53,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-24"},{"lineNumber":54,"author":{"gitId":"tohlh"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-24"},{"lineNumber":55,"author":{"gitId":"tohlh"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-24"},{"lineNumber":56,"author":{"gitId":"tohlh"},"content":" return true;","lastModifiedDate":"2024-03-24"},{"lineNumber":57,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":58,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":59,"author":{"gitId":"tohlh"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-24"},{"lineNumber":60,"author":{"gitId":"tohlh"},"content":" if (!(other instanceof EditGroupCommand)) {","lastModifiedDate":"2024-03-24"},{"lineNumber":61,"author":{"gitId":"tohlh"},"content":" return false;","lastModifiedDate":"2024-03-24"},{"lineNumber":62,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":63,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":64,"author":{"gitId":"tohlh"},"content":" EditGroupCommand otherAddGroupCommand \u003d (EditGroupCommand) other;","lastModifiedDate":"2024-03-24"},{"lineNumber":65,"author":{"gitId":"tohlh"},"content":" return toEdit.equals(otherAddGroupCommand.toEdit);","lastModifiedDate":"2024-03-24"},{"lineNumber":66,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":67,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":68,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-24"},{"lineNumber":69,"author":{"gitId":"tohlh"},"content":" public String toString() {","lastModifiedDate":"2024-03-24"},{"lineNumber":70,"author":{"gitId":"tohlh"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-24"},{"lineNumber":71,"author":{"gitId":"tohlh"},"content":" .add(\"toAdd\", toEdit)","lastModifiedDate":"2024-03-24"},{"lineNumber":72,"author":{"gitId":"tohlh"},"content":" .toString();","lastModifiedDate":"2024-03-24"},{"lineNumber":73,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":74,"author":{"gitId":"tohlh"},"content":"}","lastModifiedDate":"2024-03-24"}],"authorContributionMap":{"tohlh":74}},{"path":"src/main/java/seedu/address/logic/commands/FilterCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"STELLA-LYE"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":"import seedu.address.model.group.GroupContainsKeywordsPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"STELLA-LYE"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"STELLA-LYE"},"content":" * filters and lists all students in address book whose attribute contains any of the argument keywords.","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"STELLA-LYE"},"content":" * Keyword matching is case insensitive.","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"STELLA-LYE"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"STELLA-LYE"},"content":"public class FilterCommand extends Command {","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"STELLA-LYE"},"content":" public static final String COMMAND_WORD \u003d \"filter\";","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"STELLA-LYE"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": filters all students who are in group \"","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"STELLA-LYE"},"content":" + \"the specified keywords (case-insensitive) and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"STELLA-LYE"},"content":" + \"Parameters: KEYWORD [MORE_KEYWORDS]...\\n\"","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"STELLA-LYE"},"content":" + \"Example: \" + COMMAND_WORD + \" LAB10 TUT04\";","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"STELLA-LYE"},"content":" private final GroupContainsKeywordsPredicate predicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"STELLA-LYE"},"content":" public FilterCommand(GroupContainsKeywordsPredicate predicate) {","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"STELLA-LYE"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"STELLA-LYE"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"STELLA-LYE"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"STELLA-LYE"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"STELLA-LYE"},"content":" model.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"STELLA-LYE"},"content":" return new CommandResult(","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"STELLA-LYE"},"content":" String.format(Messages.MESSAGE_PERSONS_LISTED_OVERVIEW, model.getFilteredPersonList().size()));","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"STELLA-LYE"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"STELLA-LYE"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"STELLA-LYE"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"STELLA-LYE"},"content":" return true;","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"STELLA-LYE"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"STELLA-LYE"},"content":" if (!(other instanceof FilterCommand)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"STELLA-LYE"},"content":" return false;","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"STELLA-LYE"},"content":" FilterCommand otherFilterCommand \u003d (FilterCommand) other;","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"STELLA-LYE"},"content":" return predicate.equals(otherFilterCommand.predicate);","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"STELLA-LYE"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"STELLA-LYE"},"content":" public String toString() {","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"STELLA-LYE"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"STELLA-LYE"},"content":" .add(\"group\", predicate)","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"STELLA-LYE"},"content":" .toString();","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"STELLA-LYE":62}},{"path":"src/main/java/seedu/address/logic/commands/MailCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"STELLA-LYE"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-23"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-23"},{"lineNumber":4,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":"import java.util.List;","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-23"},{"lineNumber":9,"author":{"gitId":"STELLA-LYE"},"content":"import seedu.address.model.group.GroupContainsKeywordsPredicate;","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"STELLA-LYE"},"content":"/**","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"STELLA-LYE"},"content":" * Directs users to the HTML website with email links to all the students in the current list.","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"STELLA-LYE"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":15,"author":{"gitId":"STELLA-LYE"},"content":"public class MailCommand extends Command {","lastModifiedDate":"2024-03-23"},{"lineNumber":16,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"STELLA-LYE"},"content":" public static final String COMMAND_WORD \u003d \"mail\";","lastModifiedDate":"2024-03-23"},{"lineNumber":18,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"STELLA-LYE"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": generates mailto link to students from \"","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"STELLA-LYE"},"content":" + \"the specified keywords (case-insensitive) and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"STELLA-LYE"},"content":" + \"Parameters: KEYWORD [MORE_KEYWORDS]...\\n\"","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"STELLA-LYE"},"content":" + \"Example: \" + COMMAND_WORD + \" LAB10 TUT04\";","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"STELLA-LYE"},"content":" private final GroupContainsKeywordsPredicate predicate;","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"STELLA-LYE"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":27,"author":{"gitId":"STELLA-LYE"},"content":" * Constructs a MailCommand with a predicate.","lastModifiedDate":"2024-03-23"},{"lineNumber":28,"author":{"gitId":"STELLA-LYE"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":29,"author":{"gitId":"STELLA-LYE"},"content":" public MailCommand(GroupContainsKeywordsPredicate predicate) {","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"STELLA-LYE"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":33,"author":{"gitId":"STELLA-LYE"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":34,"author":{"gitId":"STELLA-LYE"},"content":" * Constructs a MailCommand without any predicate.","lastModifiedDate":"2024-03-23"},{"lineNumber":35,"author":{"gitId":"STELLA-LYE"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"STELLA-LYE"},"content":" public MailCommand() {","lastModifiedDate":"2024-03-23"},{"lineNumber":37,"author":{"gitId":"STELLA-LYE"},"content":" this.predicate \u003d null;","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":39,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":40,"author":{"gitId":"STELLA-LYE"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"STELLA-LYE"},"content":" * Generates a mailto link consisting of emails of students filtered accordingly","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"STELLA-LYE"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":43,"author":{"gitId":"STELLA-LYE"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":44,"author":{"gitId":"STELLA-LYE"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2024-03-23"},{"lineNumber":45,"author":{"gitId":"STELLA-LYE"},"content":" if (predicate !\u003d null) {","lastModifiedDate":"2024-03-23"},{"lineNumber":46,"author":{"gitId":"STELLA-LYE"},"content":" model.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-23"},{"lineNumber":47,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":48,"author":{"gitId":"STELLA-LYE"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-23"},{"lineNumber":49,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":50,"author":{"gitId":"STELLA-LYE"},"content":" // Extract email addresses of filtered students","lastModifiedDate":"2024-03-23"},{"lineNumber":51,"author":{"gitId":"STELLA-LYE"},"content":" List\u003cString\u003e emailList \u003d model.getFilteredPersonList().stream()","lastModifiedDate":"2024-03-23"},{"lineNumber":52,"author":{"gitId":"STELLA-LYE"},"content":" .map(Person::getEmail)","lastModifiedDate":"2024-03-23"},{"lineNumber":53,"author":{"gitId":"STELLA-LYE"},"content":" .filter(email -\u003e !email.value.isEmpty())","lastModifiedDate":"2024-03-23"},{"lineNumber":54,"author":{"gitId":"STELLA-LYE"},"content":" .map(email -\u003e email.value)","lastModifiedDate":"2024-03-23"},{"lineNumber":55,"author":{"gitId":"STELLA-LYE"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2024-03-23"},{"lineNumber":56,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":57,"author":{"gitId":"STELLA-LYE"},"content":" // Generate the mailto link","lastModifiedDate":"2024-03-23"},{"lineNumber":58,"author":{"gitId":"STELLA-LYE"},"content":" String mailtoLink \u003d \"mailto:\" + String.join(\";\", emailList);","lastModifiedDate":"2024-03-23"},{"lineNumber":59,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":60,"author":{"gitId":"STELLA-LYE"},"content":" return new CommandResult(mailtoLink);","lastModifiedDate":"2024-03-23"},{"lineNumber":61,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":62,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":63,"author":{"gitId":"STELLA-LYE"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":64,"author":{"gitId":"STELLA-LYE"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-23"},{"lineNumber":65,"author":{"gitId":"STELLA-LYE"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-23"},{"lineNumber":66,"author":{"gitId":"STELLA-LYE"},"content":" return true;","lastModifiedDate":"2024-03-23"},{"lineNumber":67,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":68,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":69,"author":{"gitId":"STELLA-LYE"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-23"},{"lineNumber":70,"author":{"gitId":"STELLA-LYE"},"content":" if (!(other instanceof MailCommand)) {","lastModifiedDate":"2024-03-23"},{"lineNumber":71,"author":{"gitId":"STELLA-LYE"},"content":" return false;","lastModifiedDate":"2024-03-23"},{"lineNumber":72,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":73,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":74,"author":{"gitId":"STELLA-LYE"},"content":" MailCommand otherMailCommand \u003d (MailCommand) other;","lastModifiedDate":"2024-03-23"},{"lineNumber":75,"author":{"gitId":"STELLA-LYE"},"content":" return predicate.equals(otherMailCommand.predicate);","lastModifiedDate":"2024-03-23"},{"lineNumber":76,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":77,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-03-23"}],"authorContributionMap":{"STELLA-LYE":77}},{"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":"doyelee0313"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GROUP;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MAJOR;","lastModifiedDate":"2024-03-18"},{"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":"jocelyn-soh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_YEAR;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"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":"doyelee0313"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17"},{"lineNumber":20,"author":{"gitId":"STELLA-LYE"},"content":"import seedu.address.model.person.Major;","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-03-17"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-03-17"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-03-17"},{"lineNumber":24,"author":{"gitId":"jocelyn-soh"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"tohlh"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"tohlh"},"content":"import seedu.address.model.person.Year;","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05"},{"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-02-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":40,"author":{"gitId":"tohlh"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_YEAR,","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"doyelee0313"},"content":" PREFIX_TELEGRAM, PREFIX_MAJOR, PREFIX_REMARK, PREFIX_GROUP);","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":43,"author":{"gitId":"doyelee0313"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_MAJOR, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_YEAR)","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":48,"author":{"gitId":"tohlh"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_YEAR, PREFIX_TELEGRAM,","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"jocelyn-soh"},"content":" PREFIX_MAJOR, PREFIX_REMARK);","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":52,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":54,"author":{"gitId":"tohlh"},"content":" Year year \u003d ParserUtil.parseYear(argMultimap.getValue(PREFIX_YEAR).get());","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"STELLA-LYE"},"content":" Major major \u003d ParserUtil.parseMajor(argMultimap.getValue(PREFIX_MAJOR).get());","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"tohlh"},"content":" Telegram telegram \u003d ParserUtil.parseTelegram(argMultimap.getValue(PREFIX_TELEGRAM).get());","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"jocelyn-soh"},"content":" Remark remark \u003d ParserUtil.parseRemark(argMultimap.getValue(PREFIX_REMARK).orElse(\"\"));","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"doyelee0313"},"content":" Set\u003cGroup\u003e groupList \u003d ParserUtil.parseGroups(argMultimap.getAllValues(PREFIX_GROUP));","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":60,"author":{"gitId":"doyelee0313"},"content":" Person person \u003d new Person(name, phone, email, year, telegram, major, remark, groupList);","lastModifiedDate":"2024-03-20"},{"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-03-17"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17"},{"lineNumber":68,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":69,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"doyelee0313":6,"STELLA-LYE":4,"-":51,"jocelyn-soh":4,"tohlh":8}},{"path":"src/main/java/seedu/address/logic/parser/AddGroupCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"tohlh"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-23"},{"lineNumber":2,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":3,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-23"},{"lineNumber":4,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GROUP;","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"tohlh"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"tohlh"},"content":"import seedu.address.logic.commands.AddGroupCommand;","lastModifiedDate":"2024-03-23"},{"lineNumber":9,"author":{"gitId":"tohlh"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"tohlh"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"tohlh"},"content":"/**","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"tohlh"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"tohlh"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":15,"author":{"gitId":"tohlh"},"content":"public class AddGroupCommandParser implements Parser\u003cAddGroupCommand\u003e {","lastModifiedDate":"2024-03-23"},{"lineNumber":16,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"tohlh"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":18,"author":{"gitId":"tohlh"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"tohlh"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"tohlh"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"tohlh"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"tohlh"},"content":" public AddGroupCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"tohlh"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_GROUP);","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"tohlh"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_GROUP) || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"tohlh"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddGroupCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-23"},{"lineNumber":27,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":28,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":29,"author":{"gitId":"tohlh"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_GROUP);","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"tohlh"},"content":" Group group \u003d ParserUtil.parseGroup(argMultimap.getValue(PREFIX_GROUP).get());","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":33,"author":{"gitId":"tohlh"},"content":" return new AddGroupCommand(group);","lastModifiedDate":"2024-03-23"},{"lineNumber":34,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":35,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"tohlh"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":37,"author":{"gitId":"tohlh"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"tohlh"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-03-23"},{"lineNumber":39,"author":{"gitId":"tohlh"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":40,"author":{"gitId":"tohlh"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"tohlh"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":43,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":44,"author":{"gitId":"tohlh"},"content":"}","lastModifiedDate":"2024-03-23"}],"authorContributionMap":{"tohlh":44}},{"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":"tohlh"},"content":"import seedu.address.logic.commands.AddGroupCommand;","lastModifiedDate":"2024-03-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":"tohlh"},"content":"import seedu.address.logic.commands.DeleteGroupCommand;","lastModifiedDate":"2024-03-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":18,"author":{"gitId":"tohlh"},"content":"import seedu.address.logic.commands.EditGroupCommand;","lastModifiedDate":"2024-03-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":20,"author":{"gitId":"STELLA-LYE"},"content":"import seedu.address.logic.commands.FilterCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":24,"author":{"gitId":"STELLA-LYE"},"content":"import seedu.address.logic.commands.MailCommand;","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":46,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":54,"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":55,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"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":"tohlh"},"content":" case AddGroupCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-24"},{"lineNumber":71,"author":{"gitId":"tohlh"},"content":" return new AddGroupCommandParser().parse(arguments);","lastModifiedDate":"2024-03-24"},{"lineNumber":72,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":73,"author":{"gitId":"tohlh"},"content":" case DeleteGroupCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-24"},{"lineNumber":74,"author":{"gitId":"tohlh"},"content":" return new DeleteGroupCommandParser().parse(arguments);","lastModifiedDate":"2024-03-24"},{"lineNumber":75,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":76,"author":{"gitId":"tohlh"},"content":" case EditGroupCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-24"},{"lineNumber":77,"author":{"gitId":"tohlh"},"content":" return new EditGroupCommandParser().parse(arguments);","lastModifiedDate":"2024-03-24"},{"lineNumber":78,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":82,"author":{"gitId":"STELLA-LYE"},"content":" case FilterCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"STELLA-LYE"},"content":" return new FilterCommandParser().parse(arguments);","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":88,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":91,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24"},{"lineNumber":92,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":94,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26"},{"lineNumber":95,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":97,"author":{"gitId":"STELLA-LYE"},"content":" case MailCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-23"},{"lineNumber":98,"author":{"gitId":"STELLA-LYE"},"content":" return new MailCommandParser().parse(arguments);","lastModifiedDate":"2024-03-23"},{"lineNumber":99,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26"},{"lineNumber":101,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29"},{"lineNumber":102,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":106,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"STELLA-LYE":8,"-":86,"tohlh":12}},{"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":"tohlh"},"content":" public static final Prefix PREFIX_YEAR \u003d new Prefix(\"y/\");","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"STELLA-LYE"},"content":" public static final Prefix PREFIX_MAJOR \u003d new Prefix(\"m/\");","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"tohlh"},"content":" public static final Prefix PREFIX_TELEGRAM \u003d new Prefix(\"tg/\");","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"jocelyn-soh"},"content":" public static final Prefix PREFIX_REMARK \u003d new Prefix(\"r/\");","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"doyelee0313"},"content":" public static final Prefix PREFIX_GROUP \u003d new Prefix(\"g/\");","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"doyelee0313":1,"STELLA-LYE":1,"-":13,"jocelyn-soh":1,"tohlh":2}},{"path":"src/main/java/seedu/address/logic/parser/DeleteGroupCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"tohlh"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-24"},{"lineNumber":2,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":3,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-24"},{"lineNumber":4,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GROUP;","lastModifiedDate":"2024-03-24"},{"lineNumber":5,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":6,"author":{"gitId":"tohlh"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-24"},{"lineNumber":7,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":8,"author":{"gitId":"tohlh"},"content":"import seedu.address.logic.commands.DeleteGroupCommand;","lastModifiedDate":"2024-03-24"},{"lineNumber":9,"author":{"gitId":"tohlh"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-24"},{"lineNumber":10,"author":{"gitId":"tohlh"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-24"},{"lineNumber":11,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":12,"author":{"gitId":"tohlh"},"content":"/**","lastModifiedDate":"2024-03-24"},{"lineNumber":13,"author":{"gitId":"tohlh"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2024-03-24"},{"lineNumber":14,"author":{"gitId":"tohlh"},"content":" */","lastModifiedDate":"2024-03-24"},{"lineNumber":15,"author":{"gitId":"tohlh"},"content":"public class DeleteGroupCommandParser implements Parser\u003cDeleteGroupCommand\u003e {","lastModifiedDate":"2024-03-24"},{"lineNumber":16,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":17,"author":{"gitId":"tohlh"},"content":" /**","lastModifiedDate":"2024-03-24"},{"lineNumber":18,"author":{"gitId":"tohlh"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2024-03-24"},{"lineNumber":19,"author":{"gitId":"tohlh"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2024-03-24"},{"lineNumber":20,"author":{"gitId":"tohlh"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-24"},{"lineNumber":21,"author":{"gitId":"tohlh"},"content":" */","lastModifiedDate":"2024-03-24"},{"lineNumber":22,"author":{"gitId":"tohlh"},"content":" public DeleteGroupCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-24"},{"lineNumber":23,"author":{"gitId":"tohlh"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_GROUP);","lastModifiedDate":"2024-03-24"},{"lineNumber":24,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":25,"author":{"gitId":"tohlh"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_GROUP) || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-03-24"},{"lineNumber":26,"author":{"gitId":"tohlh"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteGroupCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-24"},{"lineNumber":27,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":28,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":29,"author":{"gitId":"tohlh"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_GROUP);","lastModifiedDate":"2024-03-24"},{"lineNumber":30,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":31,"author":{"gitId":"tohlh"},"content":" Group group \u003d ParserUtil.parseGroup(argMultimap.getValue(PREFIX_GROUP).get());","lastModifiedDate":"2024-03-24"},{"lineNumber":32,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":33,"author":{"gitId":"tohlh"},"content":" return new DeleteGroupCommand(group);","lastModifiedDate":"2024-03-24"},{"lineNumber":34,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":35,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":36,"author":{"gitId":"tohlh"},"content":" /**","lastModifiedDate":"2024-03-24"},{"lineNumber":37,"author":{"gitId":"tohlh"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-03-24"},{"lineNumber":38,"author":{"gitId":"tohlh"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-03-24"},{"lineNumber":39,"author":{"gitId":"tohlh"},"content":" */","lastModifiedDate":"2024-03-24"},{"lineNumber":40,"author":{"gitId":"tohlh"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-03-24"},{"lineNumber":41,"author":{"gitId":"tohlh"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-03-24"},{"lineNumber":42,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":43,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":44,"author":{"gitId":"tohlh"},"content":"}","lastModifiedDate":"2024-03-24"}],"authorContributionMap":{"tohlh":44}},{"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":"doyelee0313"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GROUP;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MAJOR;","lastModifiedDate":"2024-03-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":"jocelyn-soh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_YEAR;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26"},{"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.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-01-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":23,"author":{"gitId":"doyelee0313"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"jocelyn-soh"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-03-19"},{"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":"2017-01-26"},{"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":"2017-01-26"},{"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":"tohlh"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"doyelee0313"},"content":" PREFIX_YEAR, PREFIX_TELEGRAM, PREFIX_MAJOR, PREFIX_REMARK, PREFIX_GROUP);","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06"},{"lineNumber":45,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10"},{"lineNumber":46,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":49,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"tohlh"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_YEAR,","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"jocelyn-soh"},"content":" PREFIX_TELEGRAM, PREFIX_MAJOR, PREFIX_REMARK);","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":59,"author":{"gitId":"-"},"content":" editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":62,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":64,"author":{"gitId":"tohlh"},"content":" if (argMultimap.getValue(PREFIX_YEAR).isPresent()) {","lastModifiedDate":"2024-03-13"},{"lineNumber":65,"author":{"gitId":"tohlh"},"content":" editPersonDescriptor.setYear(ParserUtil.parseYear(argMultimap.getValue(PREFIX_YEAR).get()));","lastModifiedDate":"2024-03-13"},{"lineNumber":66,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":67,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"STELLA-LYE"},"content":" if (argMultimap.getValue(PREFIX_MAJOR).isPresent()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"STELLA-LYE"},"content":" editPersonDescriptor.setMajor(ParserUtil.parseMajor(argMultimap.getValue(PREFIX_MAJOR).get()));","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":71,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"tohlh"},"content":" if (argMultimap.getValue(PREFIX_TELEGRAM).isPresent()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"tohlh"},"content":" editPersonDescriptor.setTelegram(ParserUtil.parseTelegram(argMultimap.getValue(PREFIX_TELEGRAM).get()));","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"jocelyn-soh"},"content":" parseRemarkForEdit(argMultimap.getValue(PREFIX_REMARK)).ifPresent(editPersonDescriptor::setRemark);","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"doyelee0313"},"content":" parseGroupsForEdit(argMultimap.getAllValues(PREFIX_GROUP)).ifPresent(editPersonDescriptor::setGroups);","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2017-05-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":"doyelee0313"},"content":" * Parses {@code Collection\u003cString\u003e groups} into a {@code Set\u003cGroup\u003e} if {@code groups} is non-empty.","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"doyelee0313"},"content":" * If {@code groups} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"doyelee0313"},"content":" * {@code Set\u003cGroup\u003e} containing zero groups.","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":92,"author":{"gitId":"doyelee0313"},"content":" private Optional\u003cSet\u003cGroup\u003e\u003e parseGroupsForEdit(Collection\u003cString\u003e groups) throws ParseException {","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"doyelee0313"},"content":" assert groups !\u003d null;","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":95,"author":{"gitId":"doyelee0313"},"content":" if (groups.isEmpty()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":98,"author":{"gitId":"doyelee0313"},"content":" Collection\u003cString\u003e groupSet \u003d groups.size() \u003d\u003d 1 \u0026\u0026 groups.contains(\"\") ? Collections.emptySet() : groups;","lastModifiedDate":"2024-03-20"},{"lineNumber":99,"author":{"gitId":"doyelee0313"},"content":" return Optional.of(ParserUtil.parseGroups(groupSet));","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":102,"author":{"gitId":"jocelyn-soh"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"jocelyn-soh"},"content":" * Parses {@code Optional\u003cString\u003e remark} into a {@code Optional\u003cRemark\u003e}.","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"jocelyn-soh"},"content":" * If {@code remark} is empty, it will return an empty {@code Optional\u003cRemark\u003e}.","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"jocelyn-soh"},"content":" * If {@code remark} is present, it will parse it into a {@code Remark} object.","lastModifiedDate":"2024-03-19"},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":107,"author":{"gitId":"jocelyn-soh"},"content":" private Optional\u003cRemark\u003e parseRemarkForEdit(Optional\u003cString\u003e remark) throws ParseException {","lastModifiedDate":"2024-03-19"},{"lineNumber":108,"author":{"gitId":"jocelyn-soh"},"content":" requireNonNull(remark);","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":110,"author":{"gitId":"jocelyn-soh"},"content":" if (remark.isEmpty()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":111,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2024-03-19"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":113,"author":{"gitId":"jocelyn-soh"},"content":" return Optional.of(ParserUtil.parseRemark(remark.get()));","lastModifiedDate":"2024-03-19"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":116,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"doyelee0313":12,"STELLA-LYE":8,"-":74,"jocelyn-soh":12,"tohlh":10}},{"path":"src/main/java/seedu/address/logic/parser/EditGroupCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"tohlh"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-24"},{"lineNumber":2,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":3,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-24"},{"lineNumber":4,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GROUP;","lastModifiedDate":"2024-03-24"},{"lineNumber":5,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-03-24"},{"lineNumber":6,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":7,"author":{"gitId":"tohlh"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-24"},{"lineNumber":8,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":9,"author":{"gitId":"tohlh"},"content":"import seedu.address.logic.commands.EditGroupCommand;","lastModifiedDate":"2024-03-24"},{"lineNumber":10,"author":{"gitId":"tohlh"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-24"},{"lineNumber":11,"author":{"gitId":"tohlh"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-24"},{"lineNumber":12,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":13,"author":{"gitId":"tohlh"},"content":"/**","lastModifiedDate":"2024-03-24"},{"lineNumber":14,"author":{"gitId":"tohlh"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2024-03-24"},{"lineNumber":15,"author":{"gitId":"tohlh"},"content":" */","lastModifiedDate":"2024-03-24"},{"lineNumber":16,"author":{"gitId":"tohlh"},"content":"public class EditGroupCommandParser implements Parser\u003cEditGroupCommand\u003e {","lastModifiedDate":"2024-03-24"},{"lineNumber":17,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":18,"author":{"gitId":"tohlh"},"content":" /**","lastModifiedDate":"2024-03-24"},{"lineNumber":19,"author":{"gitId":"tohlh"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2024-03-24"},{"lineNumber":20,"author":{"gitId":"tohlh"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2024-03-24"},{"lineNumber":21,"author":{"gitId":"tohlh"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-24"},{"lineNumber":22,"author":{"gitId":"tohlh"},"content":" */","lastModifiedDate":"2024-03-24"},{"lineNumber":23,"author":{"gitId":"tohlh"},"content":" public EditGroupCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-24"},{"lineNumber":24,"author":{"gitId":"tohlh"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_GROUP, PREFIX_TELEGRAM);","lastModifiedDate":"2024-03-24"},{"lineNumber":25,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":26,"author":{"gitId":"tohlh"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_GROUP, PREFIX_TELEGRAM) || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-03-24"},{"lineNumber":27,"author":{"gitId":"tohlh"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditGroupCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-24"},{"lineNumber":28,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":29,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":30,"author":{"gitId":"tohlh"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_GROUP, PREFIX_TELEGRAM);","lastModifiedDate":"2024-03-24"},{"lineNumber":31,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":32,"author":{"gitId":"tohlh"},"content":" Group group \u003d ParserUtil.parseGroup(argMultimap.getValue(PREFIX_GROUP).get());","lastModifiedDate":"2024-03-24"},{"lineNumber":33,"author":{"gitId":"tohlh"},"content":" String link \u003d ParserUtil.parseLink(argMultimap.getValue(PREFIX_TELEGRAM).get());","lastModifiedDate":"2024-03-24"},{"lineNumber":34,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":35,"author":{"gitId":"tohlh"},"content":" return new EditGroupCommand(group, link);","lastModifiedDate":"2024-03-24"},{"lineNumber":36,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":37,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":38,"author":{"gitId":"tohlh"},"content":" /**","lastModifiedDate":"2024-03-24"},{"lineNumber":39,"author":{"gitId":"tohlh"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-03-24"},{"lineNumber":40,"author":{"gitId":"tohlh"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-03-24"},{"lineNumber":41,"author":{"gitId":"tohlh"},"content":" */","lastModifiedDate":"2024-03-24"},{"lineNumber":42,"author":{"gitId":"tohlh"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-03-24"},{"lineNumber":43,"author":{"gitId":"tohlh"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-03-24"},{"lineNumber":44,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":45,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":46,"author":{"gitId":"tohlh"},"content":"}","lastModifiedDate":"2024-03-24"}],"authorContributionMap":{"tohlh":46}},{"path":"src/main/java/seedu/address/logic/parser/FilterCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"STELLA-LYE"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":"import seedu.address.logic.commands.FilterCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"STELLA-LYE"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":"import seedu.address.model.group.GroupContainsKeywordsPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"STELLA-LYE"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"STELLA-LYE"},"content":" * Parses input arguments and creates a new FilterCommand object","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"STELLA-LYE"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"STELLA-LYE"},"content":"public class FilterCommandParser implements Parser\u003cFilterCommand\u003e {","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"STELLA-LYE"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"STELLA-LYE"},"content":" * Parses the given {@code String} of arguments in the context of the FilterCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"STELLA-LYE"},"content":" * and returns a FilterCommand object for execution.","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"STELLA-LYE"},"content":" * @throws ParseException if the user input does not conform the expected format where parameter is empty","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"STELLA-LYE"},"content":" * @throws ParseException if the user input does not conform the expected group naming format","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"STELLA-LYE"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"STELLA-LYE"},"content":" public FilterCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"STELLA-LYE"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"STELLA-LYE"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"STELLA-LYE"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"STELLA-LYE"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FilterCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"STELLA-LYE"},"content":" String[] groupKeywords \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"STELLA-LYE"},"content":" for (String keyword : groupKeywords) {","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"STELLA-LYE"},"content":" if (!Group.isValidGroupName(keyword)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"STELLA-LYE"},"content":" throw new ParseException(Group.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"STELLA-LYE"},"content":" return new FilterCommand(new GroupContainsKeywordsPredicate(Arrays.asList(groupKeywords)));","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"STELLA-LYE":41}},{"path":"src/main/java/seedu/address/logic/parser/MailCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"STELLA-LYE"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-23"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-23"},{"lineNumber":4,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":"import seedu.address.logic.commands.MailCommand;","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":"import seedu.address.model.group.GroupContainsKeywordsPredicate;","lastModifiedDate":"2024-03-23"},{"lineNumber":9,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":"/**","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"STELLA-LYE"},"content":" * Parses input arguments and creates a new FilterCommand object","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"STELLA-LYE"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"STELLA-LYE"},"content":"public class MailCommandParser implements Parser\u003cMailCommand\u003e {","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":15,"author":{"gitId":"STELLA-LYE"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":16,"author":{"gitId":"STELLA-LYE"},"content":" * Parses the given {@code String} of arguments in the context of the FilterCommand","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"STELLA-LYE"},"content":" * and returns a FilterCommand object for execution.","lastModifiedDate":"2024-03-23"},{"lineNumber":18,"author":{"gitId":"STELLA-LYE"},"content":" * @throws ParseException if the user input does not conform the expected format where parameter is empty","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"STELLA-LYE"},"content":" * @throws ParseException if the user input does not conform the expected group naming format","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"STELLA-LYE"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"STELLA-LYE"},"content":" public MailCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"STELLA-LYE"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"STELLA-LYE"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"STELLA-LYE"},"content":" return new MailCommand();","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":27,"author":{"gitId":"STELLA-LYE"},"content":" String[] groupKeywords \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2024-03-23"},{"lineNumber":28,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":29,"author":{"gitId":"STELLA-LYE"},"content":" for (String keyword : groupKeywords) {","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"STELLA-LYE"},"content":" if (!Group.isValidGroupName(keyword)) {","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"STELLA-LYE"},"content":" throw new ParseException(Group.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":33,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":34,"author":{"gitId":"STELLA-LYE"},"content":" return new MailCommand(new GroupContainsKeywordsPredicate(Arrays.asList(groupKeywords)));","lastModifiedDate":"2024-03-23"},{"lineNumber":35,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-03-23"}],"authorContributionMap":{"STELLA-LYE":36}},{"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":"doyelee0313"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11"},{"lineNumber":14,"author":{"gitId":"STELLA-LYE"},"content":"import seedu.address.model.person.Major;","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-02-11"},{"lineNumber":17,"author":{"gitId":"jocelyn-soh"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"tohlh"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"tohlh"},"content":"import seedu.address.model.person.Year;","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18"},{"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":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":59,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":63,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30"},{"lineNumber":64,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":65,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":66,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","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":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":72,"author":{"gitId":"STELLA-LYE"},"content":" * Parses a {@code String address} into an {@code Major}.","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":74,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":77,"author":{"gitId":"STELLA-LYE"},"content":" public static Major parseMajor(String major) throws ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"STELLA-LYE"},"content":" requireNonNull(major);","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"STELLA-LYE"},"content":" String trimmedMajor \u003d major.trim();","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"STELLA-LYE"},"content":" if (!Major.isValidMajor(trimmedMajor)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"STELLA-LYE"},"content":" throw new ParseException(Major.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":83,"author":{"gitId":"STELLA-LYE"},"content":" return new Major(trimmedMajor);","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":89,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":93,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":94,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":95,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":96,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":98,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","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":"-"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"tohlh"},"content":" * Parses a {@code String year} into an {@code Year}.","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"tohlh"},"content":" * @throws ParseException if the given {@code year} is invalid.","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"tohlh"},"content":" public static Telegram parseTelegram(String telegram) throws ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"tohlh"},"content":" requireNonNull(telegram);","lastModifiedDate":"2024-03-17"},{"lineNumber":109,"author":{"gitId":"tohlh"},"content":" String trimmedTelegram \u003d telegram.trim();","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"tohlh"},"content":" if (!Telegram.isValidTelegram(trimmedTelegram)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"tohlh"},"content":" throw new ParseException(Telegram.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-19"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"tohlh"},"content":" return new Telegram(trimmedTelegram);","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"tohlh"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":116,"author":{"gitId":"tohlh"},"content":" * Parses a {@code String year} into an {@code Year}.","lastModifiedDate":"2024-03-13"},{"lineNumber":117,"author":{"gitId":"tohlh"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-13"},{"lineNumber":118,"author":{"gitId":"tohlh"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":119,"author":{"gitId":"tohlh"},"content":" * @throws ParseException if the given {@code year} is invalid.","lastModifiedDate":"2024-03-13"},{"lineNumber":120,"author":{"gitId":"tohlh"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":121,"author":{"gitId":"tohlh"},"content":" public static Year parseYear(String year) throws ParseException {","lastModifiedDate":"2024-03-13"},{"lineNumber":122,"author":{"gitId":"tohlh"},"content":" requireNonNull(year);","lastModifiedDate":"2024-03-13"},{"lineNumber":123,"author":{"gitId":"tohlh"},"content":" String trimmedYear \u003d year.trim();","lastModifiedDate":"2024-03-13"},{"lineNumber":124,"author":{"gitId":"tohlh"},"content":" if (!Year.isValidYear(trimmedYear)) {","lastModifiedDate":"2024-03-13"},{"lineNumber":125,"author":{"gitId":"tohlh"},"content":" throw new ParseException(Year.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-13"},{"lineNumber":126,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":127,"author":{"gitId":"tohlh"},"content":" return new Year(trimmedYear);","lastModifiedDate":"2024-03-13"},{"lineNumber":128,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":129,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":130,"author":{"gitId":"jocelyn-soh"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":131,"author":{"gitId":"jocelyn-soh"},"content":" * Parses a {@code String remark} into an {@code Remark}.","lastModifiedDate":"2024-03-19"},{"lineNumber":132,"author":{"gitId":"jocelyn-soh"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-19"},{"lineNumber":133,"author":{"gitId":"jocelyn-soh"},"content":" *","lastModifiedDate":"2024-03-19"},{"lineNumber":134,"author":{"gitId":"jocelyn-soh"},"content":" * @throws ParseException if the given {@code remark} is invalid.","lastModifiedDate":"2024-03-19"},{"lineNumber":135,"author":{"gitId":"jocelyn-soh"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":136,"author":{"gitId":"jocelyn-soh"},"content":" public static Remark parseRemark(String remark) throws ParseException {","lastModifiedDate":"2024-03-19"},{"lineNumber":137,"author":{"gitId":"jocelyn-soh"},"content":" requireNonNull(remark);","lastModifiedDate":"2024-03-19"},{"lineNumber":138,"author":{"gitId":"jocelyn-soh"},"content":" String trimmedRemark \u003d remark.trim();","lastModifiedDate":"2024-03-19"},{"lineNumber":139,"author":{"gitId":"jocelyn-soh"},"content":" return new Remark(trimmedRemark);","lastModifiedDate":"2024-03-19"},{"lineNumber":140,"author":{"gitId":"jocelyn-soh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":141,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":143,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":144,"author":{"gitId":"doyelee0313"},"content":" * Parses a {@code String group} into a {@code Group}.","lastModifiedDate":"2024-03-20"},{"lineNumber":145,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":146,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":147,"author":{"gitId":"doyelee0313"},"content":" * @throws ParseException if the given {@code group} is invalid.","lastModifiedDate":"2024-03-20"},{"lineNumber":148,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":149,"author":{"gitId":"doyelee0313"},"content":" public static Group parseGroup(String group) throws ParseException {","lastModifiedDate":"2024-03-20"},{"lineNumber":150,"author":{"gitId":"doyelee0313"},"content":" requireNonNull(group);","lastModifiedDate":"2024-03-20"},{"lineNumber":151,"author":{"gitId":"doyelee0313"},"content":" String trimmedGroup \u003d group.trim();","lastModifiedDate":"2024-03-20"},{"lineNumber":152,"author":{"gitId":"doyelee0313"},"content":" if (!Group.isValidGroupName(trimmedGroup)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":153,"author":{"gitId":"doyelee0313"},"content":" throw new ParseException(Group.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-20"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":155,"author":{"gitId":"doyelee0313"},"content":" return new Group(trimmedGroup);","lastModifiedDate":"2024-03-20"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":158,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":159,"author":{"gitId":"doyelee0313"},"content":" * Parses {@code Collection\u003cString\u003e groups} into a {@code Set\u003cGroup\u003e}.","lastModifiedDate":"2024-03-20"},{"lineNumber":160,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":161,"author":{"gitId":"doyelee0313"},"content":" public static Set\u003cGroup\u003e parseGroups(Collection\u003cString\u003e groups) throws ParseException {","lastModifiedDate":"2024-03-20"},{"lineNumber":162,"author":{"gitId":"doyelee0313"},"content":" requireNonNull(groups);","lastModifiedDate":"2024-03-20"},{"lineNumber":163,"author":{"gitId":"doyelee0313"},"content":" final Set\u003cGroup\u003e groupSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-20"},{"lineNumber":164,"author":{"gitId":"doyelee0313"},"content":" for (String groupName : groups) {","lastModifiedDate":"2024-03-20"},{"lineNumber":165,"author":{"gitId":"doyelee0313"},"content":" groupSet.add(parseGroup(groupName));","lastModifiedDate":"2024-03-20"},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":167,"author":{"gitId":"doyelee0313"},"content":" return groupSet;","lastModifiedDate":"2024-03-20"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":169,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":170,"author":{"gitId":"tohlh"},"content":" /**","lastModifiedDate":"2024-03-24"},{"lineNumber":171,"author":{"gitId":"tohlh"},"content":" * Parses a {@code String link} into a {@code Group}.","lastModifiedDate":"2024-03-24"},{"lineNumber":172,"author":{"gitId":"tohlh"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-24"},{"lineNumber":173,"author":{"gitId":"tohlh"},"content":" *","lastModifiedDate":"2024-03-24"},{"lineNumber":174,"author":{"gitId":"tohlh"},"content":" * @throws ParseException if the given {@code link} is invalid.","lastModifiedDate":"2024-03-24"},{"lineNumber":175,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-24"},{"lineNumber":176,"author":{"gitId":"tohlh"},"content":" public static String parseLink(String link) throws ParseException {","lastModifiedDate":"2024-03-24"},{"lineNumber":177,"author":{"gitId":"tohlh"},"content":" requireNonNull(link);","lastModifiedDate":"2024-03-24"},{"lineNumber":178,"author":{"gitId":"tohlh"},"content":" String trimmedGroup \u003d link.trim();","lastModifiedDate":"2024-03-24"},{"lineNumber":179,"author":{"gitId":"tohlh"},"content":" if (!Group.isValidLink(trimmedGroup)) {","lastModifiedDate":"2024-03-24"},{"lineNumber":180,"author":{"gitId":"tohlh"},"content":" throw new ParseException(Group.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-24"},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":182,"author":{"gitId":"tohlh"},"content":" return link;","lastModifiedDate":"2024-03-24"},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":184,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"doyelee0313":16,"STELLA-LYE":8,"-":110,"jocelyn-soh":13,"tohlh":37}},{"path":"src/main/java/seedu/address/logic/parser/Prefix.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-03-11"},{"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":"doyelee0313"},"content":" * E.g. \u0027g/\u0027 in \u0027add James g/ \"TUT04\"\u0027.","lastModifiedDate":"2024-03-20"},{"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":{"doyelee0313":1,"-":41}},{"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":"tohlh"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"tohlh"},"content":"import seedu.address.model.group.UniqueGroupList;","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.UniquePersonList;","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Wraps all data at the address-book level","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Duplicates are not allowed (by .isSamePerson comparison)","lastModifiedDate":"2018-04-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class AddressBook implements ReadOnlyAddressBook {","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final UniquePersonList persons;","lastModifiedDate":"2016-08-26"},{"lineNumber":21,"author":{"gitId":"tohlh"},"content":" private final UniqueGroupList groups;","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-19"},{"lineNumber":24,"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":25,"author":{"gitId":"-"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2016-10-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-19"},{"lineNumber":27,"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":28,"author":{"gitId":"-"},"content":" * among constructors.","lastModifiedDate":"2016-10-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":" {","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" persons \u003d new UniquePersonList();","lastModifiedDate":"2016-08-26"},{"lineNumber":32,"author":{"gitId":"tohlh"},"content":" groups \u003d new UniqueGroupList();","lastModifiedDate":"2024-03-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public AddressBook() {}","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":" * Creates an AddressBook using the Persons in the {@code toBeCopied}","lastModifiedDate":"2018-03-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public AddressBook(ReadOnlyAddressBook toBeCopied) {","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2016-12-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" resetData(toBeCopied);","lastModifiedDate":"2016-12-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":45,"author":{"gitId":"-"},"content":" //// list overwrite operations","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Replaces the contents of the person list with {@code persons}.","lastModifiedDate":"2018-08-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2018-08-07"},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void setPersons(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-08-07"},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.persons.setPersons(persons);","lastModifiedDate":"2016-10-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"tohlh"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":56,"author":{"gitId":"tohlh"},"content":" * Replaces the contents of the group list with {@code groups}.","lastModifiedDate":"2024-03-23"},{"lineNumber":57,"author":{"gitId":"tohlh"},"content":" * {@code groups} must not contain duplicate groups.","lastModifiedDate":"2024-03-23"},{"lineNumber":58,"author":{"gitId":"tohlh"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":59,"author":{"gitId":"tohlh"},"content":" public void setGroups(List\u003cGroup\u003e groups) {","lastModifiedDate":"2024-03-23"},{"lineNumber":60,"author":{"gitId":"tohlh"},"content":" this.groups.setGroups(groups);","lastModifiedDate":"2024-03-23"},{"lineNumber":61,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":62,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code AddressBook} with {@code newData}.","lastModifiedDate":"2017-08-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyAddressBook newData) {","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" requireNonNull(newData);","lastModifiedDate":"2017-05-15"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-20"},{"lineNumber":69,"author":{"gitId":"-"},"content":" setPersons(newData.getPersonList());","lastModifiedDate":"2018-03-29"},{"lineNumber":70,"author":{"gitId":"tohlh"},"content":" setGroups(newData.getGroupList());","lastModifiedDate":"2024-03-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" //// person-level operations","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":76,"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":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return persons.contains(person);","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":"tohlh"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":84,"author":{"gitId":"tohlh"},"content":" * Returns true if a group with the same identity as {@code group} exists in the address book.","lastModifiedDate":"2024-03-23"},{"lineNumber":85,"author":{"gitId":"tohlh"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":86,"author":{"gitId":"tohlh"},"content":" public boolean hasGroup(Group group) {","lastModifiedDate":"2024-03-23"},{"lineNumber":87,"author":{"gitId":"tohlh"},"content":" requireNonNull(group);","lastModifiedDate":"2024-03-23"},{"lineNumber":88,"author":{"gitId":"tohlh"},"content":" return groups.contains(group);","lastModifiedDate":"2024-03-23"},{"lineNumber":89,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":90,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-09-21"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * The person must not already exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":95,"author":{"gitId":"-"},"content":" public void addPerson(Person p) {","lastModifiedDate":"2018-08-07"},{"lineNumber":96,"author":{"gitId":"-"},"content":" persons.add(p);","lastModifiedDate":"2018-03-29"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"tohlh"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":100,"author":{"gitId":"tohlh"},"content":" * Adds a group to the address book.","lastModifiedDate":"2024-03-23"},{"lineNumber":101,"author":{"gitId":"tohlh"},"content":" * The group must not already exist in the address book.","lastModifiedDate":"2024-03-23"},{"lineNumber":102,"author":{"gitId":"tohlh"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":103,"author":{"gitId":"tohlh"},"content":" public void addGroup(Group g) {","lastModifiedDate":"2024-03-23"},{"lineNumber":104,"author":{"gitId":"tohlh"},"content":" groups.add(g);","lastModifiedDate":"2024-03-23"},{"lineNumber":105,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":106,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2018-01-10"},{"lineNumber":109,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":110,"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":111,"author":{"gitId":"-"},"content":" */","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":" requireNonNull(editedPerson);","lastModifiedDate":"2018-01-10"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" persons.setPerson(target, editedPerson);","lastModifiedDate":"2018-03-29"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":118,"author":{"gitId":"tohlh"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":119,"author":{"gitId":"tohlh"},"content":" * Replaces the given group {@code target} in the list with {@code editedGroup}.","lastModifiedDate":"2024-03-23"},{"lineNumber":120,"author":{"gitId":"tohlh"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2024-03-23"},{"lineNumber":121,"author":{"gitId":"tohlh"},"content":" * The group identity of {@code editedGroup} must not be the same as another existing group in the address book.","lastModifiedDate":"2024-03-23"},{"lineNumber":122,"author":{"gitId":"tohlh"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":123,"author":{"gitId":"tohlh"},"content":" public void setGroup(Group target, Group editedGroup) {","lastModifiedDate":"2024-03-23"},{"lineNumber":124,"author":{"gitId":"tohlh"},"content":" requireNonNull(editedGroup);","lastModifiedDate":"2024-03-23"},{"lineNumber":125,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":126,"author":{"gitId":"tohlh"},"content":" groups.setGroup(target, editedGroup);","lastModifiedDate":"2024-03-23"},{"lineNumber":127,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":128,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":130,"author":{"gitId":"-"},"content":" * Removes {@code key} from this {@code AddressBook}.","lastModifiedDate":"2017-08-16"},{"lineNumber":131,"author":{"gitId":"-"},"content":" * {@code key} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":132,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void removePerson(Person key) {","lastModifiedDate":"2018-08-07"},{"lineNumber":134,"author":{"gitId":"-"},"content":" persons.remove(key);","lastModifiedDate":"2018-02-28"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":137,"author":{"gitId":"tohlh"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":138,"author":{"gitId":"tohlh"},"content":" * Removes {@code key} from this {@code AddressBook}.","lastModifiedDate":"2024-03-23"},{"lineNumber":139,"author":{"gitId":"tohlh"},"content":" * {@code key} must exist in the address book.","lastModifiedDate":"2024-03-23"},{"lineNumber":140,"author":{"gitId":"tohlh"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":141,"author":{"gitId":"tohlh"},"content":" public void removeGroup(Group key) {","lastModifiedDate":"2024-03-23"},{"lineNumber":142,"author":{"gitId":"tohlh"},"content":" groups.remove(key);","lastModifiedDate":"2024-03-23"},{"lineNumber":143,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":144,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":" //// util methods","lastModifiedDate":"2016-08-08"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":147,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":148,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-08"},{"lineNumber":149,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":" .add(\"persons\", persons)","lastModifiedDate":"2019-02-23"},{"lineNumber":151,"author":{"gitId":"tohlh"},"content":" .add(\"groups\", groups)","lastModifiedDate":"2024-03-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":156,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":157,"author":{"gitId":"-"},"content":" return persons.asUnmodifiableObservableList();","lastModifiedDate":"2018-04-05"},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-01"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-01"},{"lineNumber":160,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":161,"author":{"gitId":"tohlh"},"content":" public ObservableList\u003cGroup\u003e getGroupList() {","lastModifiedDate":"2024-03-23"},{"lineNumber":162,"author":{"gitId":"tohlh"},"content":" return groups.asUnmodifiableObservableList();","lastModifiedDate":"2024-03-23"},{"lineNumber":163,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":164,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":166,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"lineNumber":167,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":168,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":171,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":172,"author":{"gitId":"-"},"content":" if (!(other instanceof AddressBook)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":173,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":176,"author":{"gitId":"-"},"content":" AddressBook otherAddressBook \u003d (AddressBook) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":177,"author":{"gitId":"tohlh"},"content":" return persons.equals(otherAddressBook.persons)","lastModifiedDate":"2024-03-23"},{"lineNumber":178,"author":{"gitId":"tohlh"},"content":" \u0026\u0026 groups.equals(otherAddressBook.groups);","lastModifiedDate":"2024-03-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":181,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":182,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":183,"author":{"gitId":"tohlh"},"content":" return persons.hashCode() + groups.hashCode();","lastModifiedDate":"2024-03-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"-":128,"tohlh":57}},{"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":"tohlh"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-23"},{"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":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":89,"author":{"gitId":"tohlh"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":90,"author":{"gitId":"tohlh"},"content":" * Returns true if a group with the same name as {@code group} exists in the address book.","lastModifiedDate":"2024-03-23"},{"lineNumber":91,"author":{"gitId":"tohlh"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":92,"author":{"gitId":"tohlh"},"content":" boolean hasGroup(Group group);","lastModifiedDate":"2024-03-23"},{"lineNumber":93,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":94,"author":{"gitId":"tohlh"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":95,"author":{"gitId":"tohlh"},"content":" * Deletes the given group.","lastModifiedDate":"2024-03-23"},{"lineNumber":96,"author":{"gitId":"tohlh"},"content":" * The group must exist in the address book.","lastModifiedDate":"2024-03-23"},{"lineNumber":97,"author":{"gitId":"tohlh"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":98,"author":{"gitId":"tohlh"},"content":" void deleteGroup(Group target);","lastModifiedDate":"2024-03-23"},{"lineNumber":99,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":100,"author":{"gitId":"tohlh"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":101,"author":{"gitId":"tohlh"},"content":" * Adds the given group.","lastModifiedDate":"2024-03-23"},{"lineNumber":102,"author":{"gitId":"tohlh"},"content":" * {@code group} must not already exist in the address book.","lastModifiedDate":"2024-03-23"},{"lineNumber":103,"author":{"gitId":"tohlh"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":104,"author":{"gitId":"tohlh"},"content":" void addGroup(Group group);","lastModifiedDate":"2024-03-23"},{"lineNumber":105,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":106,"author":{"gitId":"tohlh"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":107,"author":{"gitId":"tohlh"},"content":" * Replaces the given group {@code target} with {@code editedGroup}.","lastModifiedDate":"2024-03-23"},{"lineNumber":108,"author":{"gitId":"tohlh"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2024-03-23"},{"lineNumber":109,"author":{"gitId":"tohlh"},"content":" * The group name of {@code editedGroup} must not be the same as another existing group in the address book.","lastModifiedDate":"2024-03-23"},{"lineNumber":110,"author":{"gitId":"tohlh"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":111,"author":{"gitId":"tohlh"},"content":" void setGroup(Group target, Group editedGroup);","lastModifiedDate":"2024-03-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"-":87,"tohlh":25}},{"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":"tohlh"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-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":"-"},"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":"-"},"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":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":93,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":94,"author":{"gitId":"-"},"content":" return addressBook.hasPerson(person);","lastModifiedDate":"2019-01-25"},{"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":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15"},{"lineNumber":99,"author":{"gitId":"-"},"content":" addressBook.removePerson(target);","lastModifiedDate":"2019-01-25"},{"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":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":104,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":105,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"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":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":110,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" addressBook.setPerson(target, editedPerson);","lastModifiedDate":"2019-01-25"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":115,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":116,"author":{"gitId":"tohlh"},"content":" public boolean hasGroup(Group group) {","lastModifiedDate":"2024-03-23"},{"lineNumber":117,"author":{"gitId":"tohlh"},"content":" requireNonNull(group);","lastModifiedDate":"2024-03-23"},{"lineNumber":118,"author":{"gitId":"tohlh"},"content":" return addressBook.hasGroup(group);","lastModifiedDate":"2024-03-23"},{"lineNumber":119,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":120,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":121,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":122,"author":{"gitId":"tohlh"},"content":" public void deleteGroup(Group target) {","lastModifiedDate":"2024-03-23"},{"lineNumber":123,"author":{"gitId":"tohlh"},"content":" addressBook.removeGroup(target);","lastModifiedDate":"2024-03-23"},{"lineNumber":124,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":125,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":126,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":127,"author":{"gitId":"tohlh"},"content":" public void addGroup(Group group) {","lastModifiedDate":"2024-03-23"},{"lineNumber":128,"author":{"gitId":"tohlh"},"content":" addressBook.addGroup(group);","lastModifiedDate":"2024-03-23"},{"lineNumber":129,"author":{"gitId":"tohlh"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-23"},{"lineNumber":130,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":131,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":132,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":133,"author":{"gitId":"tohlh"},"content":" public void setGroup(Group target, Group editedGroup) {","lastModifiedDate":"2024-03-23"},{"lineNumber":134,"author":{"gitId":"tohlh"},"content":" requireAllNonNull(target, editedGroup);","lastModifiedDate":"2024-03-23"},{"lineNumber":135,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":136,"author":{"gitId":"tohlh"},"content":" addressBook.setGroup(target, editedGroup);","lastModifiedDate":"2024-03-23"},{"lineNumber":137,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":138,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":139,"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":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":142,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10"},{"lineNumber":143,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11"},{"lineNumber":144,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":145,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":146,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":147,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":150,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":151,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":152,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05"},{"lineNumber":153,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31"},{"lineNumber":157,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":158,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":159,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":162,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31"},{"lineNumber":163,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":164,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":167,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":168,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13"},{"lineNumber":169,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13"},{"lineNumber":170,"author":{"gitId":"-"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons);","lastModifiedDate":"2023-07-13"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":173,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"-":148,"tohlh":25}},{"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":"tohlh"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-23"},{"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":"tohlh"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"tohlh"},"content":" * Returns an unmodifiable view of the groups list.","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"tohlh"},"content":" * This list will not contain any duplicate groups.","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"tohlh"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"tohlh"},"content":" ObservableList\u003cGroup\u003e getGroupList();","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"-":17,"tohlh":7}},{"path":"src/main/java/seedu/address/model/group/Group.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"doyelee0313"},"content":"package seedu.address.model.group;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"doyelee0313"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"doyelee0313"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"doyelee0313"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"doyelee0313"},"content":" * Represents a Group in the address book.","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"doyelee0313"},"content":" * Guarantees: immutable; name is valid as declared in {@link #isValidGroupName(String)}","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"doyelee0313"},"content":"public class Group {","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"doyelee0313"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Groups names should be in correct format with 2 digit number. \"","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"tohlh"},"content":" + \"EX) g/TUT04, g/LAB10, g/REC09\u003e. Link should be a valid Telegram invite link.\";","lastModifiedDate":"2024-03-24"},{"lineNumber":14,"author":{"gitId":"tohlh"},"content":" public static final String GROUP_NAME_VALIDATION_REGEX \u003d \"^(TUT|LAB|REC)\\\\d{2}$\";","lastModifiedDate":"2024-03-24"},{"lineNumber":15,"author":{"gitId":"tohlh"},"content":" public static final String LINK_VALIDATION_REGEX \u003d \"https://t\\\\.me/[A-Za-z0-9_]+\";","lastModifiedDate":"2024-03-24"},{"lineNumber":16,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"doyelee0313"},"content":" public final String groupName;","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"tohlh"},"content":" public final String telegramLink;","lastModifiedDate":"2024-03-24"},{"lineNumber":19,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"doyelee0313"},"content":" * Constructs a {@code Group}.","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"doyelee0313"},"content":" * @param groupName A valid group name.","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"doyelee0313"},"content":" public Group(String groupName) {","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"doyelee0313"},"content":" requireNonNull(groupName);","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"doyelee0313"},"content":" checkArgument(isValidGroupName(groupName), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"doyelee0313"},"content":" this.groupName \u003d groupName;","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"tohlh"},"content":" this.telegramLink \u003d \"\";","lastModifiedDate":"2024-03-24"},{"lineNumber":30,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":31,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":32,"author":{"gitId":"tohlh"},"content":" /**","lastModifiedDate":"2024-03-24"},{"lineNumber":33,"author":{"gitId":"tohlh"},"content":" * Constructs a {@code Group}.","lastModifiedDate":"2024-03-24"},{"lineNumber":34,"author":{"gitId":"tohlh"},"content":" *","lastModifiedDate":"2024-03-24"},{"lineNumber":35,"author":{"gitId":"tohlh"},"content":" * @param groupName A valid group name.","lastModifiedDate":"2024-03-24"},{"lineNumber":36,"author":{"gitId":"tohlh"},"content":" */","lastModifiedDate":"2024-03-24"},{"lineNumber":37,"author":{"gitId":"tohlh"},"content":" public Group(String groupName, String link) {","lastModifiedDate":"2024-03-24"},{"lineNumber":38,"author":{"gitId":"tohlh"},"content":" requireNonNull(groupName);","lastModifiedDate":"2024-03-24"},{"lineNumber":39,"author":{"gitId":"tohlh"},"content":" checkArgument(isValidGroupName(groupName), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-24"},{"lineNumber":40,"author":{"gitId":"tohlh"},"content":" this.groupName \u003d groupName;","lastModifiedDate":"2024-03-24"},{"lineNumber":41,"author":{"gitId":"tohlh"},"content":" this.telegramLink \u003d link;","lastModifiedDate":"2024-03-24"},{"lineNumber":42,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"doyelee0313"},"content":" * Returns true if a given string is a valid group name.","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"doyelee0313"},"content":" public static boolean isValidGroupName(String test) {","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"tohlh"},"content":" return test.matches(GROUP_NAME_VALIDATION_REGEX);","lastModifiedDate":"2024-03-24"},{"lineNumber":49,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":50,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":51,"author":{"gitId":"tohlh"},"content":" /**","lastModifiedDate":"2024-03-24"},{"lineNumber":52,"author":{"gitId":"tohlh"},"content":" * Returns true if a given string is a valid link.","lastModifiedDate":"2024-03-24"},{"lineNumber":53,"author":{"gitId":"tohlh"},"content":" */","lastModifiedDate":"2024-03-24"},{"lineNumber":54,"author":{"gitId":"tohlh"},"content":" public static boolean isValidLink(String test) {","lastModifiedDate":"2024-03-24"},{"lineNumber":55,"author":{"gitId":"tohlh"},"content":" return test.matches(LINK_VALIDATION_REGEX);","lastModifiedDate":"2024-03-24"},{"lineNumber":56,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"doyelee0313"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"doyelee0313"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"doyelee0313"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"doyelee0313"},"content":" return true;","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"doyelee0313"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"doyelee0313"},"content":" if (!(other instanceof Group)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"doyelee0313"},"content":" return false;","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"doyelee0313"},"content":" Group otherGroup \u003d (Group) other;","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"doyelee0313"},"content":" return groupName.equals(otherGroup.groupName);","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"tohlh"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":74,"author":{"gitId":"tohlh"},"content":" * Returns true if both groups have the same name.","lastModifiedDate":"2024-03-23"},{"lineNumber":75,"author":{"gitId":"tohlh"},"content":" * This defines a weaker notion of equality between two groups.","lastModifiedDate":"2024-03-23"},{"lineNumber":76,"author":{"gitId":"tohlh"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":77,"author":{"gitId":"tohlh"},"content":" public boolean isSameGroup(Group otherGroup) {","lastModifiedDate":"2024-03-23"},{"lineNumber":78,"author":{"gitId":"tohlh"},"content":" if (otherGroup \u003d\u003d this) {","lastModifiedDate":"2024-03-23"},{"lineNumber":79,"author":{"gitId":"tohlh"},"content":" return true;","lastModifiedDate":"2024-03-23"},{"lineNumber":80,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":81,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":82,"author":{"gitId":"tohlh"},"content":" return otherGroup !\u003d null \u0026\u0026 otherGroup.groupName.equals(this.groupName);","lastModifiedDate":"2024-03-24"},{"lineNumber":83,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":84,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":85,"author":{"gitId":"doyelee0313"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"doyelee0313"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"doyelee0313"},"content":" return groupName.hashCode();","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"doyelee0313"},"content":" * Format state as text for viewing.","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"doyelee0313"},"content":" public String toString() {","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"doyelee0313"},"content":" return \u0027[\u0027 + groupName + \u0027]\u0027;","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"doyelee0313"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"doyelee0313":60,"tohlh":37}},{"path":"src/main/java/seedu/address/model/group/GroupContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"STELLA-LYE"},"content":"package seedu.address.model.group;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":"import java.util.List;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"STELLA-LYE"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"STELLA-LYE"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"STELLA-LYE"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"STELLA-LYE"},"content":" * Tests that a {@code Person}\u0027s {@code Name} matches any of the keywords given.","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"STELLA-LYE"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"STELLA-LYE"},"content":"public class GroupContainsKeywordsPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"STELLA-LYE"},"content":" private final List\u003cGroup\u003e groups;","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"STELLA-LYE"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"STELLA-LYE"},"content":" * Returns a GroupContainsKeywordsPredicate object by taking a list of the group names.","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"STELLA-LYE"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"STELLA-LYE"},"content":" public GroupContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"STELLA-LYE"},"content":" this.groups \u003d keywords.stream().map(Group::new).collect(Collectors.toList());","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"STELLA-LYE"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"STELLA-LYE"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"STELLA-LYE"},"content":" Set\u003cGroup\u003e personGroup \u003d person.getGroups();","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"STELLA-LYE"},"content":" return groups.stream()","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"STELLA-LYE"},"content":" .anyMatch(personGroup::contains);","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"STELLA-LYE"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"STELLA-LYE"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"STELLA-LYE"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"STELLA-LYE"},"content":" return true;","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"STELLA-LYE"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"STELLA-LYE"},"content":" if (!(other instanceof GroupContainsKeywordsPredicate)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"STELLA-LYE"},"content":" return false;","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"STELLA-LYE"},"content":" GroupContainsKeywordsPredicate otherGroupContainsKeywordsPredicate \u003d (GroupContainsKeywordsPredicate) other;","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"STELLA-LYE"},"content":" return groups.equals(otherGroupContainsKeywordsPredicate.groups);","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"STELLA-LYE"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"STELLA-LYE"},"content":" public String toString() {","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"STELLA-LYE"},"content":" return new ToStringBuilder(this).add(\"groups\", groups).toString();","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"STELLA-LYE":52}},{"path":"src/main/java/seedu/address/model/group/UniqueGroupList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"tohlh"},"content":"package seedu.address.model.group;","lastModifiedDate":"2024-03-23"},{"lineNumber":2,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":3,"author":{"gitId":"tohlh"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-23"},{"lineNumber":4,"author":{"gitId":"tohlh"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"tohlh"},"content":"import java.util.Iterator;","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"tohlh"},"content":"import java.util.List;","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":9,"author":{"gitId":"tohlh"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"tohlh"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"tohlh"},"content":"import seedu.address.model.group.exceptions.DuplicateGroupException;","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"tohlh"},"content":"import seedu.address.model.group.exceptions.GroupNotFoundException;","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"tohlh"},"content":"/**","lastModifiedDate":"2024-03-23"},{"lineNumber":15,"author":{"gitId":"tohlh"},"content":" * A list of groups that enforces uniqueness between its elements and does not allow nulls.","lastModifiedDate":"2024-03-23"},{"lineNumber":16,"author":{"gitId":"tohlh"},"content":" * A group is considered unique by comparing using {@code Group#isSameGroup(Group)}. As such, adding and updating of","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"tohlh"},"content":" * groups uses Group#isSameGroup(Group) for equality so as to ensure that the group being added or updated is","lastModifiedDate":"2024-03-23"},{"lineNumber":18,"author":{"gitId":"tohlh"},"content":" * unique in terms of identity in the UniqueGroupList. However, the removal of a group uses Group#equals(Object) so","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"tohlh"},"content":" * as to ensure that the group with exactly the same fields will be removed.","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"tohlh"},"content":" *","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"tohlh"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"tohlh"},"content":" *","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"tohlh"},"content":" * @see Group#isSameGroup(Group)","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"tohlh"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"tohlh"},"content":"public class UniqueGroupList implements Iterable\u003cGroup\u003e {","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":27,"author":{"gitId":"tohlh"},"content":" private final ObservableList\u003cGroup\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-03-23"},{"lineNumber":28,"author":{"gitId":"tohlh"},"content":" private final ObservableList\u003cGroup\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2024-03-23"},{"lineNumber":29,"author":{"gitId":"tohlh"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"tohlh"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"tohlh"},"content":" * Returns true if the list contains an equivalent group as the given argument.","lastModifiedDate":"2024-03-23"},{"lineNumber":33,"author":{"gitId":"tohlh"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":34,"author":{"gitId":"tohlh"},"content":" public boolean contains(Group toCheck) {","lastModifiedDate":"2024-03-23"},{"lineNumber":35,"author":{"gitId":"tohlh"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"tohlh"},"content":" return internalList.stream().anyMatch(toCheck::isSameGroup);","lastModifiedDate":"2024-03-23"},{"lineNumber":37,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":39,"author":{"gitId":"tohlh"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":40,"author":{"gitId":"tohlh"},"content":" * Adds a group to the list.","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"tohlh"},"content":" * The group must not already exist in the list.","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"tohlh"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":43,"author":{"gitId":"tohlh"},"content":" public void add(Group toAdd) {","lastModifiedDate":"2024-03-23"},{"lineNumber":44,"author":{"gitId":"tohlh"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2024-03-23"},{"lineNumber":45,"author":{"gitId":"tohlh"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2024-03-23"},{"lineNumber":46,"author":{"gitId":"tohlh"},"content":" throw new DuplicateGroupException();","lastModifiedDate":"2024-03-23"},{"lineNumber":47,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":48,"author":{"gitId":"tohlh"},"content":" internalList.add(toAdd);","lastModifiedDate":"2024-03-23"},{"lineNumber":49,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":50,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":51,"author":{"gitId":"tohlh"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":52,"author":{"gitId":"tohlh"},"content":" * Replaces the group {@code target} in the list with {@code editedGroup}.","lastModifiedDate":"2024-03-23"},{"lineNumber":53,"author":{"gitId":"tohlh"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2024-03-23"},{"lineNumber":54,"author":{"gitId":"tohlh"},"content":" * The group identity of {@code editedGroup} must not be the same as another existing group in the list.","lastModifiedDate":"2024-03-23"},{"lineNumber":55,"author":{"gitId":"tohlh"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":56,"author":{"gitId":"tohlh"},"content":" public void setGroup(Group target, Group editedGroup) {","lastModifiedDate":"2024-03-23"},{"lineNumber":57,"author":{"gitId":"tohlh"},"content":" requireAllNonNull(target, editedGroup);","lastModifiedDate":"2024-03-23"},{"lineNumber":58,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":59,"author":{"gitId":"tohlh"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2024-03-23"},{"lineNumber":60,"author":{"gitId":"tohlh"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2024-03-23"},{"lineNumber":61,"author":{"gitId":"tohlh"},"content":" throw new GroupNotFoundException();","lastModifiedDate":"2024-03-23"},{"lineNumber":62,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":63,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":64,"author":{"gitId":"tohlh"},"content":" if (!target.isSameGroup(editedGroup) \u0026\u0026 contains(editedGroup)) {","lastModifiedDate":"2024-03-23"},{"lineNumber":65,"author":{"gitId":"tohlh"},"content":" throw new DuplicateGroupException();","lastModifiedDate":"2024-03-23"},{"lineNumber":66,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":67,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":68,"author":{"gitId":"tohlh"},"content":" internalList.set(index, editedGroup);","lastModifiedDate":"2024-03-23"},{"lineNumber":69,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":70,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":71,"author":{"gitId":"tohlh"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":72,"author":{"gitId":"tohlh"},"content":" * Removes the equivalent group from the list.","lastModifiedDate":"2024-03-23"},{"lineNumber":73,"author":{"gitId":"tohlh"},"content":" * The group must exist in the list.","lastModifiedDate":"2024-03-23"},{"lineNumber":74,"author":{"gitId":"tohlh"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":75,"author":{"gitId":"tohlh"},"content":" public void remove(Group toRemove) {","lastModifiedDate":"2024-03-23"},{"lineNumber":76,"author":{"gitId":"tohlh"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2024-03-23"},{"lineNumber":77,"author":{"gitId":"tohlh"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2024-03-23"},{"lineNumber":78,"author":{"gitId":"tohlh"},"content":" throw new GroupNotFoundException();","lastModifiedDate":"2024-03-23"},{"lineNumber":79,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":80,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":81,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":82,"author":{"gitId":"tohlh"},"content":" public void setGroups(UniqueGroupList replacement) {","lastModifiedDate":"2024-03-23"},{"lineNumber":83,"author":{"gitId":"tohlh"},"content":" requireNonNull(replacement);","lastModifiedDate":"2024-03-23"},{"lineNumber":84,"author":{"gitId":"tohlh"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2024-03-23"},{"lineNumber":85,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":86,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":87,"author":{"gitId":"tohlh"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":88,"author":{"gitId":"tohlh"},"content":" * Replaces the contents of this list with {@code groups}.","lastModifiedDate":"2024-03-23"},{"lineNumber":89,"author":{"gitId":"tohlh"},"content":" * {@code groups} must not contain duplicate groups.","lastModifiedDate":"2024-03-23"},{"lineNumber":90,"author":{"gitId":"tohlh"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":91,"author":{"gitId":"tohlh"},"content":" public void setGroups(List\u003cGroup\u003e groups) {","lastModifiedDate":"2024-03-23"},{"lineNumber":92,"author":{"gitId":"tohlh"},"content":" requireAllNonNull(groups);","lastModifiedDate":"2024-03-23"},{"lineNumber":93,"author":{"gitId":"tohlh"},"content":" if (!groupsAreUnique(groups)) {","lastModifiedDate":"2024-03-23"},{"lineNumber":94,"author":{"gitId":"tohlh"},"content":" throw new DuplicateGroupException();","lastModifiedDate":"2024-03-23"},{"lineNumber":95,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":96,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":97,"author":{"gitId":"tohlh"},"content":" internalList.setAll(groups);","lastModifiedDate":"2024-03-23"},{"lineNumber":98,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":99,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":100,"author":{"gitId":"tohlh"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":101,"author":{"gitId":"tohlh"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2024-03-23"},{"lineNumber":102,"author":{"gitId":"tohlh"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":103,"author":{"gitId":"tohlh"},"content":" public ObservableList\u003cGroup\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2024-03-23"},{"lineNumber":104,"author":{"gitId":"tohlh"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2024-03-23"},{"lineNumber":105,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":106,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":107,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":108,"author":{"gitId":"tohlh"},"content":" public Iterator\u003cGroup\u003e iterator() {","lastModifiedDate":"2024-03-23"},{"lineNumber":109,"author":{"gitId":"tohlh"},"content":" return internalList.iterator();","lastModifiedDate":"2024-03-23"},{"lineNumber":110,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":111,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":112,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":113,"author":{"gitId":"tohlh"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-23"},{"lineNumber":114,"author":{"gitId":"tohlh"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-23"},{"lineNumber":115,"author":{"gitId":"tohlh"},"content":" return true;","lastModifiedDate":"2024-03-23"},{"lineNumber":116,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":117,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":118,"author":{"gitId":"tohlh"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-23"},{"lineNumber":119,"author":{"gitId":"tohlh"},"content":" if (!(other instanceof UniqueGroupList)) {","lastModifiedDate":"2024-03-23"},{"lineNumber":120,"author":{"gitId":"tohlh"},"content":" return false;","lastModifiedDate":"2024-03-23"},{"lineNumber":121,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":122,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":123,"author":{"gitId":"tohlh"},"content":" UniqueGroupList otherUniqueGroupList \u003d (UniqueGroupList) other;","lastModifiedDate":"2024-03-23"},{"lineNumber":124,"author":{"gitId":"tohlh"},"content":" return internalList.equals(otherUniqueGroupList.internalList);","lastModifiedDate":"2024-03-23"},{"lineNumber":125,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":126,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":127,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":128,"author":{"gitId":"tohlh"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-23"},{"lineNumber":129,"author":{"gitId":"tohlh"},"content":" return internalList.hashCode();","lastModifiedDate":"2024-03-23"},{"lineNumber":130,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":131,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":132,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":133,"author":{"gitId":"tohlh"},"content":" public String toString() {","lastModifiedDate":"2024-03-23"},{"lineNumber":134,"author":{"gitId":"tohlh"},"content":" return internalList.toString();","lastModifiedDate":"2024-03-23"},{"lineNumber":135,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":136,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":137,"author":{"gitId":"tohlh"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":138,"author":{"gitId":"tohlh"},"content":" * Returns true if {@code groups} contains only unique groups.","lastModifiedDate":"2024-03-23"},{"lineNumber":139,"author":{"gitId":"tohlh"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":140,"author":{"gitId":"tohlh"},"content":" private boolean groupsAreUnique(List\u003cGroup\u003e groups) {","lastModifiedDate":"2024-03-23"},{"lineNumber":141,"author":{"gitId":"tohlh"},"content":" for (int i \u003d 0; i \u003c groups.size() - 1; i++) {","lastModifiedDate":"2024-03-23"},{"lineNumber":142,"author":{"gitId":"tohlh"},"content":" for (int j \u003d i + 1; j \u003c groups.size(); j++) {","lastModifiedDate":"2024-03-23"},{"lineNumber":143,"author":{"gitId":"tohlh"},"content":" if (groups.get(i).isSameGroup(groups.get(j))) {","lastModifiedDate":"2024-03-23"},{"lineNumber":144,"author":{"gitId":"tohlh"},"content":" return false;","lastModifiedDate":"2024-03-23"},{"lineNumber":145,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":146,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":147,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":148,"author":{"gitId":"tohlh"},"content":" return true;","lastModifiedDate":"2024-03-23"},{"lineNumber":149,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":150,"author":{"gitId":"tohlh"},"content":"}","lastModifiedDate":"2024-03-23"}],"authorContributionMap":{"tohlh":150}},{"path":"src/main/java/seedu/address/model/group/exceptions/DuplicateGroupException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"tohlh"},"content":"package seedu.address.model.group.exceptions;","lastModifiedDate":"2024-03-23"},{"lineNumber":2,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":3,"author":{"gitId":"tohlh"},"content":"/**","lastModifiedDate":"2024-03-23"},{"lineNumber":4,"author":{"gitId":"tohlh"},"content":" * Signals that the operation will result in duplicate Persons (Persons are considered duplicates if they have the same","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"tohlh"},"content":" * identity).","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"tohlh"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"tohlh"},"content":"public class DuplicateGroupException extends RuntimeException {","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"tohlh"},"content":" public DuplicateGroupException() {","lastModifiedDate":"2024-03-23"},{"lineNumber":9,"author":{"gitId":"tohlh"},"content":" super(\"Operation would result in duplicate groups\");","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"tohlh"},"content":"}","lastModifiedDate":"2024-03-23"}],"authorContributionMap":{"tohlh":11}},{"path":"src/main/java/seedu/address/model/group/exceptions/GroupNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"tohlh"},"content":"package seedu.address.model.group.exceptions;","lastModifiedDate":"2024-03-23"},{"lineNumber":2,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":3,"author":{"gitId":"tohlh"},"content":"/**","lastModifiedDate":"2024-03-23"},{"lineNumber":4,"author":{"gitId":"tohlh"},"content":" * Signals that the operation is unable to find the specified person.","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"tohlh"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"tohlh"},"content":"public class GroupNotFoundException extends RuntimeException {}","lastModifiedDate":"2024-03-23"}],"authorContributionMap":{"tohlh":6}},{"path":"src/main/java/seedu/address/model/person/Major.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":"STELLA-LYE"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidMajor(String)}","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":"public class Major {","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"STELLA-LYE"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Major should only consist of Computing majors, \"","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"STELLA-LYE"},"content":" + \"and it should mot be blank\";","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2018-09-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public final String value;","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":"STELLA-LYE"},"content":" * Constructs an {@code Major}.","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"STELLA-LYE"},"content":" * @param major A valid address.","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"STELLA-LYE"},"content":" public Major(String major) {","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"STELLA-LYE"},"content":" requireNonNull(major);","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"STELLA-LYE"},"content":" checkArgument(isValidMajor(major), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"STELLA-LYE"},"content":" value \u003d major;","lastModifiedDate":"2024-03-17"},{"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 email.","lastModifiedDate":"2018-04-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"STELLA-LYE"},"content":" public static boolean isValidMajor(String test) {","lastModifiedDate":"2024-03-17"},{"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":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24"},{"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 boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return true;","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":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":53,"author":{"gitId":"STELLA-LYE"},"content":" if (!(other instanceof Major)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return false;","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":"STELLA-LYE"},"content":" Major otherMajor \u003d (Major) other;","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"STELLA-LYE"},"content":" return value.equals(otherMajor.value);","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"STELLA-LYE":14,"-":52}},{"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":"jocelyn-soh"},"content":" .anyMatch(keyword -\u003e StringUtil.containsStartingWordIgnoreCase(person.getName().fullName, keyword));","lastModifiedDate":"2024-03-13"},{"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":{"-":43,"jocelyn-soh":1}},{"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":"doyelee0313"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"STELLA-LYE"},"content":" * Represents a Person in the major book.","lastModifiedDate":"2024-03-17"},{"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":"-"},"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":"tohlh"},"content":" private final Year year;","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"tohlh"},"content":" private final Telegram telegram;","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19"},{"lineNumber":27,"author":{"gitId":"STELLA-LYE"},"content":" private final Major major;","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"jocelyn-soh"},"content":" private final Remark remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"doyelee0313"},"content":" private final Set\u003cGroup\u003e groups \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-20"},{"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":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"jocelyn-soh"},"content":" public Person(Name name, Phone phone, Email email, Year year, Telegram telegram, Major major, Remark remark,","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"doyelee0313"},"content":" Set\u003cGroup\u003e groups) {","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"doyelee0313"},"content":" requireAllNonNull(name, phone, email, major, remark, groups);","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20"},{"lineNumber":42,"author":{"gitId":"tohlh"},"content":" this.year \u003d year;","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"STELLA-LYE"},"content":" this.major \u003d major;","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"tohlh"},"content":" this.telegram \u003d telegram;","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"jocelyn-soh"},"content":" this.remark \u003d remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"doyelee0313"},"content":" this.groups.addAll(groups);","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return email;","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":"STELLA-LYE"},"content":" public Major getMajor() {","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"STELLA-LYE"},"content":" return major;","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":64,"author":{"gitId":"tohlh"},"content":" public Year getYear() {","lastModifiedDate":"2024-03-13"},{"lineNumber":65,"author":{"gitId":"tohlh"},"content":" return year;","lastModifiedDate":"2024-03-13"},{"lineNumber":66,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":67,"author":{"gitId":"tohlh"},"content":" public Telegram getTelegram() {","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"tohlh"},"content":" return telegram;","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"jocelyn-soh"},"content":" public Remark getRemark() {","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"jocelyn-soh"},"content":" return remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07"},{"lineNumber":75,"author":{"gitId":"doyelee0313"},"content":" * Returns an immutable group set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07"},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07"},{"lineNumber":78,"author":{"gitId":"doyelee0313"},"content":" public Set\u003cGroup\u003e getGroups() {","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"doyelee0313"},"content":" return Collections.unmodifiableSet(groups);","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":82,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":" return true;","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":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":" \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2020-12-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","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":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":102,"author":{"gitId":"-"},"content":" return true;","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":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10"},{"lineNumber":107,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":110,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10"},{"lineNumber":111,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":114,"author":{"gitId":"tohlh"},"content":" \u0026\u0026 year.equals(otherPerson.year)","lastModifiedDate":"2024-03-19"},{"lineNumber":115,"author":{"gitId":"tohlh"},"content":" \u0026\u0026 telegram.equals(otherPerson.telegram)","lastModifiedDate":"2024-03-19"},{"lineNumber":116,"author":{"gitId":"STELLA-LYE"},"content":" \u0026\u0026 major.equals(otherPerson.major)","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"jocelyn-soh"},"content":" \u0026\u0026 remark.equals(otherPerson.remark)","lastModifiedDate":"2024-03-19"},{"lineNumber":118,"author":{"gitId":"doyelee0313"},"content":" \u0026\u0026 groups.equals(otherPerson.groups);","lastModifiedDate":"2024-03-20"},{"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 int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":123,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":124,"author":{"gitId":"doyelee0313"},"content":" return Objects.hash(name, phone, email, year, telegram, major, remark, groups);","lastModifiedDate":"2024-03-20"},{"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 String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":129,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":133,"author":{"gitId":"tohlh"},"content":" .add(\"year\", year)","lastModifiedDate":"2024-03-13"},{"lineNumber":134,"author":{"gitId":"tohlh"},"content":" .add(\"telegram\", telegram)","lastModifiedDate":"2024-03-17"},{"lineNumber":135,"author":{"gitId":"tohlh"},"content":" .add(\"major\", major)","lastModifiedDate":"2024-03-19"},{"lineNumber":136,"author":{"gitId":"jocelyn-soh"},"content":" .add(\"remark\", remark)","lastModifiedDate":"2024-03-19"},{"lineNumber":137,"author":{"gitId":"doyelee0313"},"content":" .add(\"groups\", groups)","lastModifiedDate":"2024-03-20"},{"lineNumber":138,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":141,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"doyelee0313":11,"STELLA-LYE":8,"-":100,"jocelyn-soh":7,"tohlh":15}},{"path":"src/main/java/seedu/address/model/person/Remark.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jocelyn-soh"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"jocelyn-soh"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"jocelyn-soh"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"jocelyn-soh"},"content":" * Represents a remark for a Person in the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"jocelyn-soh"},"content":" * Guarantees: immutable; is always valid","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"jocelyn-soh"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"jocelyn-soh"},"content":"public class Remark {","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"jocelyn-soh"},"content":" public final String value;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"jocelyn-soh"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"jocelyn-soh"},"content":" * Constructs a {@code Remark}.","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"jocelyn-soh"},"content":" * If the given remark is null or empty, an empty string will be used.","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"jocelyn-soh"},"content":" *","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"jocelyn-soh"},"content":" * @param remark A valid remark, or null.","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"jocelyn-soh"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"jocelyn-soh"},"content":" public Remark(String remark) {","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"jocelyn-soh"},"content":" requireNonNull(remark);","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"jocelyn-soh"},"content":" this.value \u003d remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"jocelyn-soh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"jocelyn-soh"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"jocelyn-soh"},"content":" public String toString() {","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"jocelyn-soh"},"content":" return value;","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"jocelyn-soh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"jocelyn-soh"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"jocelyn-soh"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"jocelyn-soh"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"jocelyn-soh"},"content":" return true;","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"jocelyn-soh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"jocelyn-soh"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"jocelyn-soh"},"content":" if (!(other instanceof Remark)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"jocelyn-soh"},"content":" return false;","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"jocelyn-soh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"jocelyn-soh"},"content":" Remark otherRemark \u003d (Remark) other;","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"jocelyn-soh"},"content":" return value.equals(otherRemark.value);","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"jocelyn-soh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"jocelyn-soh"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"jocelyn-soh"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"jocelyn-soh"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"jocelyn-soh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"jocelyn-soh"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"jocelyn-soh":46}},{"path":"src/main/java/seedu/address/model/person/Telegram.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"tohlh"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"tohlh"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"tohlh"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"tohlh"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"tohlh"},"content":" * Represents a Person\u0027s Telegram handle in the address book.","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"tohlh"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidTelegram(String)}","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"tohlh"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"tohlh"},"content":"public class Telegram {","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"tohlh"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"tohlh"},"content":" \"Telegram handles should be alphanumeric and containing underscores, \"","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"tohlh"},"content":" + \"and must be at least 3 characters long.\";","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"tohlh"},"content":" public static final String VALIDATION_REGEX \u003d \"^[a-zA-Z0-9_]{3,}$\";","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"tohlh"},"content":" public final String value;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"tohlh"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"tohlh"},"content":" * Constructs a {@code Handle}.","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"tohlh"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"tohlh"},"content":" * @param handle A valid Telegram handle.","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"tohlh"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"tohlh"},"content":" public Telegram(String handle) {","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"tohlh"},"content":" requireNonNull(handle);","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"tohlh"},"content":" checkArgument(isValidTelegram(handle), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"tohlh"},"content":" value \u003d handle;","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"tohlh"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"tohlh"},"content":" * Returns true if a given string is a valid phone number.","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"tohlh"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"tohlh"},"content":" public static boolean isValidTelegram(String test) {","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"tohlh"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"tohlh"},"content":" public String toString() {","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"tohlh"},"content":" return value;","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"tohlh"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"tohlh"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"tohlh"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"tohlh"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"tohlh"},"content":" if (!(other instanceof Telegram)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"tohlh"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"tohlh"},"content":" Telegram otherTelegram \u003d (Telegram) other;","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"tohlh"},"content":" return value.equals(otherTelegram.value);","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"tohlh"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"tohlh"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"tohlh"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"tohlh":62}},{"path":"src/main/java/seedu/address/model/person/Year.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"tohlh"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"tohlh"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"tohlh"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"tohlh"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"tohlh"},"content":" * Represents a Person\u0027s year in the address book.","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"tohlh"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidYear(String)}","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"tohlh"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"tohlh"},"content":"public class Year {","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"tohlh"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"tohlh"},"content":" \"Year should only contain a single digit ranging from 1 - 5, and it should not be blank\";","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"tohlh"},"content":" public static final String VALIDATION_REGEX \u003d \"[1-5]\";","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"tohlh"},"content":" public final String value;","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"tohlh"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"tohlh"},"content":" * Constructs a {@code Year}.","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"tohlh"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"tohlh"},"content":" * @param value A valid year.","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"tohlh"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"tohlh"},"content":" public Year(String value) {","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"tohlh"},"content":" requireNonNull(value);","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"tohlh"},"content":" checkArgument(isValidYear(value), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"tohlh"},"content":" this.value \u003d value;","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"tohlh"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"tohlh"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"tohlh"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"tohlh"},"content":" public static boolean isValidYear(String test) {","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"tohlh"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"tohlh"},"content":" public String toString() {","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"tohlh"},"content":" return value;","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"tohlh"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"tohlh"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"tohlh"},"content":" return true;","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"tohlh"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"tohlh"},"content":" if (!(other instanceof Year)) {","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"tohlh"},"content":" return false;","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"tohlh"},"content":" Year otherYear \u003d (Year) other;","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"tohlh"},"content":" return value.equals(otherYear.value);","lastModifiedDate":"2024-03-13"},{"lineNumber":56,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"tohlh"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-13"},{"lineNumber":60,"author":{"gitId":"tohlh"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-13"},{"lineNumber":61,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":62,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":63,"author":{"gitId":"tohlh"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"tohlh":63}},{"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":"doyelee0313"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20"},{"lineNumber":11,"author":{"gitId":"STELLA-LYE"},"content":"import seedu.address.model.person.Major;","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-20"},{"lineNumber":15,"author":{"gitId":"jocelyn-soh"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"tohlh"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"tohlh"},"content":"import seedu.address.model.person.Year;","lastModifiedDate":"2024-03-13"},{"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":"-"},"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":"-"},"content":" new Person(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":26,"author":{"gitId":"tohlh"},"content":" new Year(\"1\"), new Telegram(\"alexyeoh1\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"STELLA-LYE"},"content":" new Major(\"Computer Science\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"jocelyn-soh"},"content":" new Remark(\"Very quiet\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"doyelee0313"},"content":" getGroupSet(\"TUT04\")),","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":" new Person(new Name(\"Bernice Yu\"), new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":31,"author":{"gitId":"tohlh"},"content":" new Year(\"1\"), new Telegram(\"berniceyu123\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"STELLA-LYE"},"content":" new Major(\"Computer Science\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"jocelyn-soh"},"content":" new Remark(\"Outspoken\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"doyelee0313"},"content":" getGroupSet(\"TUT04\", \"LAB05\")),","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":36,"author":{"gitId":"tohlh"},"content":" new Year(\"2\"), new Telegram(\"charlotte7\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"STELLA-LYE"},"content":" new Major(\"Computer Science\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"jocelyn-soh"},"content":" new Remark(\"Weak technical foundation\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"doyelee0313"},"content":" getGroupSet(\"TUT04\")),","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":" new Person(new Name(\"David Li\"), new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":41,"author":{"gitId":"tohlh"},"content":" new Year(\"4\"), new Telegram(\"davidli456\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"STELLA-LYE"},"content":" new Major(\"Business Analytics\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"jocelyn-soh"},"content":" new Remark(\"Second time taking the course\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"doyelee0313"},"content":" getGroupSet(\"TUT04\")),","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"-"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":46,"author":{"gitId":"tohlh"},"content":" new Year(\"3\"), new Telegram(\"irfan123\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"STELLA-LYE"},"content":" new Major(\"Computer Engineering\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"jocelyn-soh"},"content":" new Remark(\"Hardworking\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"doyelee0313"},"content":" getGroupSet(\"TUT04\")),","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2017-04-05"},{"lineNumber":51,"author":{"gitId":"tohlh"},"content":" new Year(\"5\"), new Telegram(\"roy5\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"STELLA-LYE"},"content":" new Major(\"Computer Engineering\"),","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"jocelyn-soh"},"content":" new Remark(\"Always submits problem sets late\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"doyelee0313"},"content":" getGroupSet(\"LAB05\"))","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":58,"author":{"gitId":"tohlh"},"content":" public static Group[] getSampleGroups() {","lastModifiedDate":"2024-03-23"},{"lineNumber":59,"author":{"gitId":"tohlh"},"content":" return new Group[] {","lastModifiedDate":"2024-03-23"},{"lineNumber":60,"author":{"gitId":"tohlh"},"content":" new Group(\"TUT04\"),","lastModifiedDate":"2024-03-23"},{"lineNumber":61,"author":{"gitId":"tohlh"},"content":" new Group(\"LAB05\")","lastModifiedDate":"2024-03-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2024-03-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07"},{"lineNumber":67,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20"},{"lineNumber":68,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":70,"author":{"gitId":"tohlh"},"content":" for (Group sampleGroup : getSampleGroups()) {","lastModifiedDate":"2024-03-23"},{"lineNumber":71,"author":{"gitId":"tohlh"},"content":" sampleAb.addGroup(sampleGroup);","lastModifiedDate":"2024-03-23"},{"lineNumber":72,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14"},{"lineNumber":77,"author":{"gitId":"doyelee0313"},"content":" * Returns a group set containing the list of strings given.","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14"},{"lineNumber":79,"author":{"gitId":"doyelee0313"},"content":" public static Set\u003cGroup\u003e getGroupSet(String... strings) {","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21"},{"lineNumber":81,"author":{"gitId":"doyelee0313"},"content":" .map(Group::new)","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"doyelee0313":10,"STELLA-LYE":7,"-":46,"jocelyn-soh":7,"tohlh":15}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedGroup.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"doyelee0313"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"doyelee0313"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"tohlh"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"doyelee0313"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"doyelee0313"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"doyelee0313"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"doyelee0313"},"content":" * Jackson-friendly version of {@link Group}.","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"doyelee0313"},"content":"class JsonAdaptedGroup {","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"doyelee0313"},"content":" private final String groupName;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"tohlh"},"content":" private final String telegramLink;","lastModifiedDate":"2024-03-24"},{"lineNumber":16,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"doyelee0313"},"content":" * Constructs a {@code JsonAdaptedGroup} with the given {@code groupName}.","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"doyelee0313"},"content":" @JsonCreator","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"tohlh"},"content":" public JsonAdaptedGroup(@JsonProperty(\"groupName\") String groupName, @JsonProperty(\"telegramLink\") String link) {","lastModifiedDate":"2024-03-24"},{"lineNumber":22,"author":{"gitId":"doyelee0313"},"content":" this.groupName \u003d groupName;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"tohlh"},"content":" this.telegramLink \u003d link;","lastModifiedDate":"2024-03-24"},{"lineNumber":24,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":25,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":26,"author":{"gitId":"tohlh"},"content":" /**","lastModifiedDate":"2024-03-24"},{"lineNumber":27,"author":{"gitId":"tohlh"},"content":" * Constructs a {@code JsonAdaptedGroup} with the given {@code groupName}.","lastModifiedDate":"2024-03-24"},{"lineNumber":28,"author":{"gitId":"tohlh"},"content":" */","lastModifiedDate":"2024-03-24"},{"lineNumber":29,"author":{"gitId":"tohlh"},"content":" public JsonAdaptedGroup(String groupName) {","lastModifiedDate":"2024-03-24"},{"lineNumber":30,"author":{"gitId":"tohlh"},"content":" this.groupName \u003d groupName;","lastModifiedDate":"2024-03-24"},{"lineNumber":31,"author":{"gitId":"tohlh"},"content":" this.telegramLink \u003d \"\";","lastModifiedDate":"2024-03-24"},{"lineNumber":32,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"doyelee0313"},"content":" * Converts a given {@code Group} into this class for Jackson use.","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"doyelee0313"},"content":" public JsonAdaptedGroup(Group source) {","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"doyelee0313"},"content":" groupName \u003d source.groupName;","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"tohlh"},"content":" telegramLink \u003d source.telegramLink;","lastModifiedDate":"2024-03-24"},{"lineNumber":40,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"doyelee0313"},"content":" public String getGroupName() {","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"doyelee0313"},"content":" return groupName;","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"doyelee0313"},"content":" * Converts this Jackson-friendly adapted group object into the model\u0027s {@code Group} object.","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"doyelee0313"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted group.","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"doyelee0313"},"content":" public Group toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"doyelee0313"},"content":" if (!Group.isValidGroupName(groupName)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"doyelee0313"},"content":" throw new IllegalValueException(Group.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"doyelee0313"},"content":" return new Group(groupName);","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"doyelee0313"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"doyelee0313":45,"tohlh":13}},{"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":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"doyelee0313"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"STELLA-LYE"},"content":"import seedu.address.model.person.Major;","lastModifiedDate":"2024-03-18"},{"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":"jocelyn-soh"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"tohlh"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"tohlh"},"content":"import seedu.address.model.person.Year;","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"tohlh"},"content":" private final String year;","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"STELLA-LYE"},"content":" private final String major;","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"tohlh"},"content":" private final String telegram;","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"jocelyn-soh"},"content":" private final String remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"tohlh"},"content":" private final List\u003cString\u003e groups \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-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":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"tohlh"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"year\") String year,","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"STELLA-LYE"},"content":" @JsonProperty(\"telegram\") String telegram, @JsonProperty(\"major\") String major,","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"tohlh"},"content":" @JsonProperty(\"remark\") String remark, @JsonProperty(\"groups\") List\u003cString\u003e groups) {","lastModifiedDate":"2024-03-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-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":"tohlh"},"content":" this.year \u003d year;","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"STELLA-LYE"},"content":" this.major \u003d major;","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"tohlh"},"content":" this.telegram \u003d telegram;","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"jocelyn-soh"},"content":" this.remark \u003d remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"doyelee0313"},"content":" if (groups !\u003d null) {","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"doyelee0313"},"content":" this.groups.addAll(groups);","lastModifiedDate":"2024-03-20"},{"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":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"tohlh"},"content":" year \u003d source.getYear().value;","lastModifiedDate":"2024-03-13"},{"lineNumber":67,"author":{"gitId":"STELLA-LYE"},"content":" major \u003d source.getMajor().value;","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"tohlh"},"content":" telegram \u003d source.getTelegram().value;","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"jocelyn-soh"},"content":" remark \u003d source.getRemark().value;","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"doyelee0313"},"content":" groups.addAll(source.getGroups().stream()","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"doyelee0313"},"content":" .map(JsonAdaptedGroup::new)","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"tohlh"},"content":" .map(JsonAdaptedGroup::getGroupName)","lastModifiedDate":"2024-03-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","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"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"doyelee0313"},"content":" final List\u003cGroup\u003e personGroups \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"tohlh"},"content":" for (String group : groups) {","lastModifiedDate":"2024-03-23"},{"lineNumber":84,"author":{"gitId":"tohlh"},"content":" personGroups.add(new JsonAdaptedGroup(group).toModelType());","lastModifiedDate":"2024-03-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"tohlh"},"content":" if (year \u003d\u003d null) {","lastModifiedDate":"2024-03-13"},{"lineNumber":112,"author":{"gitId":"tohlh"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Year.class.getSimpleName()));","lastModifiedDate":"2024-03-15"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":114,"author":{"gitId":"tohlh"},"content":" if (!Year.isValidYear(year)) {","lastModifiedDate":"2024-03-13"},{"lineNumber":115,"author":{"gitId":"tohlh"},"content":" throw new IllegalValueException(Year.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":117,"author":{"gitId":"tohlh"},"content":" final Year modelYear \u003d new Year(year);","lastModifiedDate":"2024-03-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":119,"author":{"gitId":"tohlh"},"content":" if (telegram \u003d\u003d null) {","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"tohlh"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"tohlh"},"content":" Telegram.class.getSimpleName()));","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"tohlh"},"content":" if (!Telegram.isValidTelegram(telegram)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"tohlh"},"content":" throw new IllegalValueException(Telegram.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"tohlh"},"content":" final Telegram modelTelegram \u003d new Telegram(telegram);","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"STELLA-LYE"},"content":" if (major \u003d\u003d null) {","lastModifiedDate":"2024-03-17"},{"lineNumber":129,"author":{"gitId":"STELLA-LYE"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Major.class.getSimpleName()));","lastModifiedDate":"2024-03-17"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":131,"author":{"gitId":"STELLA-LYE"},"content":" if (!Major.isValidMajor(major)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"STELLA-LYE"},"content":" throw new IllegalValueException(Major.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":134,"author":{"gitId":"STELLA-LYE"},"content":" final Major modelMajor \u003d new Major(major);","lastModifiedDate":"2024-03-17"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":136,"author":{"gitId":"jocelyn-soh"},"content":" final Remark modelRemark \u003d new Remark(remark);","lastModifiedDate":"2024-03-19"},{"lineNumber":137,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":138,"author":{"gitId":"doyelee0313"},"content":" final Set\u003cGroup\u003e modelGroups \u003d new HashSet\u003c\u003e(personGroups);","lastModifiedDate":"2024-03-20"},{"lineNumber":139,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":140,"author":{"gitId":"jocelyn-soh"},"content":" return new Person(modelName, modelPhone, modelEmail, modelYear, modelTelegram, modelMajor, modelRemark,","lastModifiedDate":"2024-03-19"},{"lineNumber":141,"author":{"gitId":"doyelee0313"},"content":" modelGroups);","lastModifiedDate":"2024-03-20"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":144,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"doyelee0313":8,"STELLA-LYE":11,"-":90,"jocelyn-soh":7,"tohlh":28}},{"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":"tohlh"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-23"},{"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":"-"},"content":" private final List\u003cJsonAdaptedPerson\u003e persons \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"tohlh"},"content":" private final List\u003cJsonAdaptedGroup\u003e groups \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-23"},{"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 JsonSerializableAddressBook} with the given persons.","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":"tohlh"},"content":" public JsonSerializableAddressBook(@JsonProperty(\"persons\") List\u003cJsonAdaptedPerson\u003e persons,","lastModifiedDate":"2024-03-23"},{"lineNumber":33,"author":{"gitId":"tohlh"},"content":" @JsonProperty(\"groups\") List\u003cJsonAdaptedGroup\u003e groups) {","lastModifiedDate":"2024-03-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" this.persons.addAll(persons);","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"tohlh"},"content":" this.groups.addAll(groups);","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","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":" * Converts a given {@code ReadOnlyAddressBook} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * @param source future changes to this will not affect the created {@code JsonSerializableAddressBook}.","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public JsonSerializableAddressBook(ReadOnlyAddressBook source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" persons.addAll(source.getPersonList().stream().map(JsonAdaptedPerson::new).collect(Collectors.toList()));","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"tohlh"},"content":" groups.addAll(source.getGroupList().stream().map(JsonAdaptedGroup::new).collect(Collectors.toList()));","lastModifiedDate":"2024-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"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Converts this address book into the model\u0027s {@code AddressBook} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated.","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public AddressBook toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" for (JsonAdaptedPerson jsonAdaptedPerson : persons) {","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" Person person \u003d jsonAdaptedPerson.toModelType();","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" if (addressBook.hasPerson(person)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":63,"author":{"gitId":"tohlh"},"content":" for (JsonAdaptedGroup jsonAdaptedGroup : groups) {","lastModifiedDate":"2024-03-23"},{"lineNumber":64,"author":{"gitId":"tohlh"},"content":" Group group \u003d jsonAdaptedGroup.toModelType();","lastModifiedDate":"2024-03-23"},{"lineNumber":65,"author":{"gitId":"tohlh"},"content":" if (addressBook.hasGroup(group)) {","lastModifiedDate":"2024-03-23"},{"lineNumber":66,"author":{"gitId":"tohlh"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2024-03-23"},{"lineNumber":67,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":68,"author":{"gitId":"tohlh"},"content":" addressBook.addGroup(group);","lastModifiedDate":"2024-03-23"},{"lineNumber":69,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":70,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"-":59,"tohlh":15}},{"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":"doyelee0313"},"content":" public static final String USERGUIDE_URL \u003d \"https://ay2324s2-cs2103t-w10-4.github.io/tp/UserGuide.html#quick-start\";","lastModifiedDate":"2024-03-11"},{"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":{"doyelee0313":1,"-":101}},{"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":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"jocelyn-soh"},"content":" private Label year;","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"jocelyn-soh"},"content":" @FXML","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"STELLA-LYE"},"content":" private Label major;","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":44,"author":{"gitId":"jocelyn-soh"},"content":" private Label telegram;","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"jocelyn-soh"},"content":" @FXML","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"jocelyn-soh"},"content":" private Label remark;","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":48,"author":{"gitId":"doyelee0313"},"content":" private FlowPane groups;","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":60,"author":{"gitId":"jocelyn-soh"},"content":" year.setText(\"Year \" + person.getYear().value);","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"jocelyn-soh"},"content":" major.setText(person.getMajor().value);","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"jocelyn-soh"},"content":" telegram.setText(\"@\" + person.getTelegram().value);","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"jocelyn-soh"},"content":" remark.setText(person.getRemark().value);","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"doyelee0313"},"content":" person.getGroups().stream()","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"doyelee0313"},"content":" .sorted(Comparator.comparing(group -\u003e group.groupName))","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"doyelee0313"},"content":" .forEach(group -\u003e groups.getChildren().add(new Label(group.groupName)));","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"doyelee0313":4,"STELLA-LYE":1,"-":54,"jocelyn-soh":9}},{"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":"STELLA-LYE"},"content":" -fx-background-color: derive(#104A53, 20%);","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":" background-color: #FFFFFF; /* Used in the default.html file */","lastModifiedDate":"2024-03-21"},{"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":"STELLA-LYE"},"content":" -fx-base: #FFFFFF;","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"STELLA-LYE"},"content":" -fx-control-inner-background: #104A53;","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"STELLA-LYE"},"content":" -fx-background-color: #104A53;","lastModifiedDate":"2024-03-21"},{"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":"STELLA-LYE"},"content":" -fx-background-color: derive(#E6ECF0, 20%);","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"STELLA-LYE"},"content":" -fx-border-color: transparent transparent transparent #FFFFFF;","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"STELLA-LYE"},"content":" -fx-border-insets: 4 4 4 4;","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":".split-pane {","lastModifiedDate":"2016-08-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":88,"author":{"gitId":"STELLA-LYE"},"content":" -fx-background-color: derive(#104A53, 20%);","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"STELLA-LYE"},"content":" -fx-border-insets: 4 4 4 4;","lastModifiedDate":"2024-03-21"},{"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":"STELLA-LYE"},"content":" -fx-padding: 5;","lastModifiedDate":"2024-03-21"},{"lineNumber":95,"author":{"gitId":"STELLA-LYE"},"content":" -fx-background-color: derive(#104A53, 20%);","lastModifiedDate":"2024-03-21"},{"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":"STELLA-LYE"},"content":" -fx-padding: 4px;","lastModifiedDate":"2024-03-21"},{"lineNumber":102,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":".list-cell:filled:even {","lastModifiedDate":"2017-03-02"},{"lineNumber":105,"author":{"gitId":"STELLA-LYE"},"content":" -fx-background-color: #B0EDE2;","lastModifiedDate":"2024-03-21"},{"lineNumber":106,"author":{"gitId":"STELLA-LYE"},"content":" -fx-background-radius: 20px;","lastModifiedDate":"2024-03-21"},{"lineNumber":107,"author":{"gitId":"STELLA-LYE"},"content":" -fx-background-insets: 4 0 4 0;","lastModifiedDate":"2024-03-21"},{"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":"STELLA-LYE"},"content":" -fx-background-color: #B0EDE2;","lastModifiedDate":"2024-03-21"},{"lineNumber":112,"author":{"gitId":"STELLA-LYE"},"content":" -fx-background-radius: 20px;","lastModifiedDate":"2024-03-21"},{"lineNumber":113,"author":{"gitId":"STELLA-LYE"},"content":" -fx-background-insets: 4 0 4 0;","lastModifiedDate":"2024-03-21"},{"lineNumber":114,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":116,"author":{"gitId":"-"},"content":".list-cell:filled:selected {","lastModifiedDate":"2017-03-02"},{"lineNumber":117,"author":{"gitId":"STELLA-LYE"},"content":" -fx-background-color: #F9F0D2;","lastModifiedDate":"2024-03-21"},{"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":"STELLA-LYE"},"content":" -fx-border-width: 0;","lastModifiedDate":"2024-03-21"},{"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":"STELLA-LYE"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-21"},{"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":"-"},"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":"-"},"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":"-"},"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":"STELLA-LYE"},"content":" -fx-background-color: derive(#104A53, 20%);","lastModifiedDate":"2024-03-21"},{"lineNumber":143,"author":{"gitId":"STELLA-LYE"},"content":" -fx-border-insets: 10 10 10 10;","lastModifiedDate":"2024-03-21"},{"lineNumber":144,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":146,"author":{"gitId":"-"},"content":".pane-with-border {","lastModifiedDate":"2017-05-15"},{"lineNumber":147,"author":{"gitId":"STELLA-LYE"},"content":" -fx-background-color: derive(#104A53, 20%);","lastModifiedDate":"2024-03-21"},{"lineNumber":148,"author":{"gitId":"STELLA-LYE"},"content":" -fx-border-color: derive(#104A53, 10%);","lastModifiedDate":"2024-03-21"},{"lineNumber":149,"author":{"gitId":"-"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2017-05-09"},{"lineNumber":150,"author":{"gitId":"STELLA-LYE"},"content":" -fx-border-radius: 2px;","lastModifiedDate":"2024-03-21"},{"lineNumber":151,"author":{"gitId":"STELLA-LYE"},"content":" -fx-background-radius: 2px;","lastModifiedDate":"2024-03-21"},{"lineNumber":152,"author":{"gitId":"STELLA-LYE"},"content":" -fx-border-insets: 4 4 4 4;","lastModifiedDate":"2024-03-21"},{"lineNumber":153,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":155,"author":{"gitId":"-"},"content":".status-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":156,"author":{"gitId":"STELLA-LYE"},"content":" -fx-background-color: #104A53;","lastModifiedDate":"2024-03-21"},{"lineNumber":157,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":159,"author":{"gitId":"-"},"content":".result-display {","lastModifiedDate":"2016-09-14"},{"lineNumber":160,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2017-03-02"},{"lineNumber":161,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":163,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":164,"author":{"gitId":"STELLA-LYE"},"content":" -fx-border-insets: 10 10 10 10;","lastModifiedDate":"2024-03-21"},{"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":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"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":"STELLA-LYE"},"content":" -fx-background-color: derive(#104A53, 30%);","lastModifiedDate":"2024-03-21"},{"lineNumber":180,"author":{"gitId":"STELLA-LYE"},"content":" -fx-border-color: derive(#104A53, 25%);","lastModifiedDate":"2024-03-21"},{"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":"STELLA-LYE"},"content":" -fx-text-fill: #104A53;","lastModifiedDate":"2024-03-21"},{"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":"STELLA-LYE"},"content":" -fx-background-color: derive(#104A53, 30%);","lastModifiedDate":"2024-03-21"},{"lineNumber":190,"author":{"gitId":"STELLA-LYE"},"content":" -fx-border-color: derive(#104A53, 30%);","lastModifiedDate":"2024-03-21"},{"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":"STELLA-LYE"},"content":" -fx-background-color: derive(#104A53, 30%);","lastModifiedDate":"2024-03-21"},{"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":"STELLA-LYE"},"content":" -fx-background-color: derive(#104A53, 50%);","lastModifiedDate":"2024-03-21"},{"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":"-"},"content":" -fx-text-fill: white;","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-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":207,"author":{"gitId":"STELLA-LYE"},"content":" -fx-background-color: derive(#FFFFFF, 20%);","lastModifiedDate":"2024-03-21"},{"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":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"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":"-"},"content":" -fx-background-color: black;","lastModifiedDate":"2016-08-08"},{"lineNumber":219,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":221,"author":{"gitId":"-"},"content":"/*","lastModifiedDate":"2016-08-08"},{"lineNumber":222,"author":{"gitId":"-"},"content":" * Metro style Push Button","lastModifiedDate":"2016-08-08"},{"lineNumber":223,"author":{"gitId":"-"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2016-08-08"},{"lineNumber":224,"author":{"gitId":"-"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2016-08-08"},{"lineNumber":225,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":226,"author":{"gitId":"-"},"content":".button {","lastModifiedDate":"2016-08-08"},{"lineNumber":227,"author":{"gitId":"-"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2016-08-08"},{"lineNumber":228,"author":{"gitId":"-"},"content":" -fx-border-color: #e2e2e2;","lastModifiedDate":"2016-08-08"},{"lineNumber":229,"author":{"gitId":"-"},"content":" -fx-border-width: 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":230,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":231,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":232,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2022-01-13"},{"lineNumber":233,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":234,"author":{"gitId":"-"},"content":" -fx-text-fill: #d8d8d8;","lastModifiedDate":"2016-08-08"},{"lineNumber":235,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":236,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":238,"author":{"gitId":"-"},"content":".button:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":239,"author":{"gitId":"-"},"content":" -fx-background-color: #3a3a3a;","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:pressed, .button:default:hover:pressed {","lastModifiedDate":"2016-08-08"},{"lineNumber":243,"author":{"gitId":"-"},"content":" -fx-background-color: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":244,"author":{"gitId":"-"},"content":" -fx-text-fill: #1d1d1d;","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":".button:focused {","lastModifiedDate":"2016-08-08"},{"lineNumber":248,"author":{"gitId":"-"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2016-08-08"},{"lineNumber":249,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":250,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08"},{"lineNumber":251,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":252,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","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:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08"},{"lineNumber":256,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08"},{"lineNumber":257,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":258,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","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 {","lastModifiedDate":"2016-08-08"},{"lineNumber":262,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":263,"author":{"gitId":"-"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2016-08-08"},{"lineNumber":264,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":266,"author":{"gitId":"-"},"content":".button:default:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":267,"author":{"gitId":"-"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2016-08-08"},{"lineNumber":268,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":269,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":270,"author":{"gitId":"-"},"content":".dialog-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":271,"author":{"gitId":"STELLA-LYE"},"content":" -fx-background-color: #FFFFFF;","lastModifiedDate":"2024-03-21"},{"lineNumber":272,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":274,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2016-08-08"},{"lineNumber":275,"author":{"gitId":"STELLA-LYE"},"content":" -fx-background-color: #FFFFFF;","lastModifiedDate":"2024-03-21"},{"lineNumber":276,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":278,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2016-08-08"},{"lineNumber":279,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08"},{"lineNumber":280,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","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":".dialog-pane:header *.header-panel {","lastModifiedDate":"2016-08-08"},{"lineNumber":285,"author":{"gitId":"STELLA-LYE"},"content":" -fx-background-color: derive(#FFFFFF, 25%);","lastModifiedDate":"2024-03-21"},{"lineNumber":286,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":288,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2016-08-08"},{"lineNumber":289,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08"},{"lineNumber":290,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08"},{"lineNumber":291,"author":{"gitId":"-"},"content":" -fx-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":292,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":293,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":294,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":295,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02"},{"lineNumber":296,"author":{"gitId":"STELLA-LYE"},"content":" -fx-background-color: derive(#FFFFFF, 20%);","lastModifiedDate":"2024-03-21"},{"lineNumber":297,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":298,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":299,"author":{"gitId":"-"},"content":".scroll-bar .thumb {","lastModifiedDate":"2016-08-15"},{"lineNumber":300,"author":{"gitId":"STELLA-LYE"},"content":" -fx-background-color: derive(#C4C4C4, 50%);","lastModifiedDate":"2024-03-21"},{"lineNumber":301,"author":{"gitId":"-"},"content":" -fx-background-insets: 3;","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-button, .scroll-bar .decrement-button {","lastModifiedDate":"2016-08-15"},{"lineNumber":305,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-15"},{"lineNumber":306,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-15"},{"lineNumber":307,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":308,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":309,"author":{"gitId":"-"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2016-08-15"},{"lineNumber":310,"author":{"gitId":"-"},"content":" -fx-shape: \" \";","lastModifiedDate":"2016-08-15"},{"lineNumber":311,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":312,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":313,"author":{"gitId":"-"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":314,"author":{"gitId":"STELLA-LYE"},"content":" -fx-padding: 1 6 1 6;","lastModifiedDate":"2024-03-21"},{"lineNumber":315,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":316,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":317,"author":{"gitId":"-"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":318,"author":{"gitId":"-"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2016-08-18"},{"lineNumber":319,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":320,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":321,"author":{"gitId":"-"},"content":"#cardPane {","lastModifiedDate":"2016-08-08"},{"lineNumber":322,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":323,"author":{"gitId":"-"},"content":" -fx-border-width: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":324,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":326,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08"},{"lineNumber":327,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08"},{"lineNumber":328,"author":{"gitId":"-"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2016-08-08"},{"lineNumber":329,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":331,"author":{"gitId":"-"},"content":"#commandTextField {","lastModifiedDate":"2017-03-02"},{"lineNumber":332,"author":{"gitId":"STELLA-LYE"},"content":" -fx-background-color: #FFFFFF;","lastModifiedDate":"2024-03-21"},{"lineNumber":333,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":334,"author":{"gitId":"-"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":335,"author":{"gitId":"STELLA-LYE"},"content":" -fx-border-width: 0;","lastModifiedDate":"2024-03-21"},{"lineNumber":336,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":337,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":338,"author":{"gitId":"STELLA-LYE"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-21"},{"lineNumber":339,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":340,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":341,"author":{"gitId":"-"},"content":"#filterField, #personListPanel, #personWebpage {","lastModifiedDate":"2016-08-15"},{"lineNumber":342,"author":{"gitId":"-"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2016-08-15"},{"lineNumber":343,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":345,"author":{"gitId":"STELLA-LYE"},"content":"#resultDisplay {","lastModifiedDate":"2024-03-21"},{"lineNumber":346,"author":{"gitId":"STELLA-LYE"},"content":" -fx-background-color: #104A53;","lastModifiedDate":"2024-03-21"},{"lineNumber":347,"author":{"gitId":"STELLA-LYE"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-21"},{"lineNumber":348,"author":{"gitId":"STELLA-LYE"},"content":" -fx-background-radius: 1px;","lastModifiedDate":"2024-03-21"},{"lineNumber":349,"author":{"gitId":"STELLA-LYE"},"content":" -fx-border-radius: 2px;","lastModifiedDate":"2024-03-21"},{"lineNumber":350,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":351,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":352,"author":{"gitId":"-"},"content":"#resultDisplay .content {","lastModifiedDate":"2017-03-02"},{"lineNumber":353,"author":{"gitId":"STELLA-LYE"},"content":" -fx-background-color: derive(#D4FBEF, 0%);","lastModifiedDate":"2024-03-21"},{"lineNumber":354,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":355,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":356,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":357,"author":{"gitId":"doyelee0313"},"content":"#groups {","lastModifiedDate":"2024-03-20"},{"lineNumber":358,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2016-12-18"},{"lineNumber":359,"author":{"gitId":"-"},"content":" -fx-vgap: 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":360,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":361,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":362,"author":{"gitId":"doyelee0313"},"content":"#groups .label {","lastModifiedDate":"2024-03-20"},{"lineNumber":363,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-12-18"},{"lineNumber":364,"author":{"gitId":"STELLA-LYE"},"content":" -fx-background-color: #104A53;","lastModifiedDate":"2024-03-21"},{"lineNumber":365,"author":{"gitId":"STELLA-LYE"},"content":" -fx-padding: 2 4 2 4;","lastModifiedDate":"2024-03-21"},{"lineNumber":366,"author":{"gitId":"STELLA-LYE"},"content":" -fx-border-radius: 1px;","lastModifiedDate":"2024-03-21"},{"lineNumber":367,"author":{"gitId":"STELLA-LYE"},"content":" -fx-background-radius: 1px;","lastModifiedDate":"2024-03-21"},{"lineNumber":368,"author":{"gitId":"STELLA-LYE"},"content":" -fx-font-size: 11;","lastModifiedDate":"2024-03-21"},{"lineNumber":369,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":370,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":371,"author":{"gitId":"STELLA-LYE"},"content":"#personName {","lastModifiedDate":"2024-03-21"},{"lineNumber":372,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2024-03-21"},{"lineNumber":373,"author":{"gitId":"-"},"content":" -fx-vgap: 3;","lastModifiedDate":"2024-03-21"},{"lineNumber":374,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":375,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":376,"author":{"gitId":"STELLA-LYE"},"content":"#personName .label {","lastModifiedDate":"2024-03-21"},{"lineNumber":377,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-21"},{"lineNumber":378,"author":{"gitId":"STELLA-LYE"},"content":" -fx-background-color: #104A53;","lastModifiedDate":"2024-03-21"},{"lineNumber":379,"author":{"gitId":"STELLA-LYE"},"content":" -fx-padding: 2 4 2 4;","lastModifiedDate":"2024-03-21"},{"lineNumber":380,"author":{"gitId":"STELLA-LYE"},"content":" -fx-border-radius: 10px;","lastModifiedDate":"2024-03-21"},{"lineNumber":381,"author":{"gitId":"STELLA-LYE"},"content":" -fx-background-radius: 10px;","lastModifiedDate":"2024-03-21"},{"lineNumber":382,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2016-12-18"},{"lineNumber":383,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":384,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":385,"author":{"gitId":"STELLA-LYE"},"content":"#personListTitle, #groupListTitle {","lastModifiedDate":"2024-03-21"},{"lineNumber":386,"author":{"gitId":"STELLA-LYE"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-21"},{"lineNumber":387,"author":{"gitId":"STELLA-LYE"},"content":" -fx-padding: 4 20 4 20;","lastModifiedDate":"2024-03-21"},{"lineNumber":388,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":389,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":390,"author":{"gitId":"STELLA-LYE"},"content":".list-cell:filled:selected #taskContainer {","lastModifiedDate":"2024-03-21"},{"lineNumber":391,"author":{"gitId":"STELLA-LYE"},"content":" -fx-border-color: #3e7b91;","lastModifiedDate":"2024-03-21"},{"lineNumber":392,"author":{"gitId":"STELLA-LYE"},"content":" -fx-border-width: 0;","lastModifiedDate":"2024-03-21"},{"lineNumber":393,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":394,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":395,"author":{"gitId":"STELLA-LYE"},"content":".scroll-pane \u003e .viewport {","lastModifiedDate":"2024-03-21"},{"lineNumber":396,"author":{"gitId":"STELLA-LYE"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-21"},{"lineNumber":397,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":398,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":399,"author":{"gitId":"STELLA-LYE"},"content":".scroll-pane {","lastModifiedDate":"2024-03-21"},{"lineNumber":400,"author":{"gitId":"STELLA-LYE"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-21"},{"lineNumber":401,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"doyelee0313":2,"STELLA-LYE":87,"-":312}},{"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":"doyelee0313"},"content":".group-selector {","lastModifiedDate":"2024-03-20"},{"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":{"doyelee0313":1,"-":19}},{"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":"STELLA-LYE"},"content":"\u003c?import javafx.stage.Stage?\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":15,"author":{"gitId":"STELLA-LYE"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"STELLA-LYE"},"content":"\u003cfx:root minHeight\u003d\"750\" minWidth\u003d\"1000\" onCloseRequest\u003d\"#handleExit\" title\u003d\"TutorsContactsPro\" type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/8\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":18,"author":{"gitId":"STELLA-LYE"},"content":" \u003cImage url\u003d\"@/images/clock.png\" /\u003e","lastModifiedDate":"2024-03-21"},{"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":"STELLA-LYE"},"content":" \u003cVBox VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"STELLA-LYE"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" style\u003d\"-fx-background-color:#104A53;\" VBox.vgrow\u003d\"SOMETIMES\"\u003e","lastModifiedDate":"2024-03-21"},{"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":"STELLA-LYE"},"content":" \u003cStackPane fx:id\u003d\"commandBoxPlaceholder\" prefWidth\u003d\"550.0\" style\u003d\"-fx-background-color: #104A53;\" styleClass\u003d\"pane-with-border\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":39,"author":{"gitId":"STELLA-LYE"},"content":" \u003cInsets bottom\u003d\"5\" left\u003d\"10\" right\u003d\"10\" top\u003d\"5\" /\u003e","lastModifiedDate":"2024-03-21"},{"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":"STELLA-LYE"},"content":" \u003cSplitPane orientation\u003d\"VERTICAL\" style\u003d\"-fx-background-color: #104A53;\"\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"STELLA-LYE"},"content":" \u003cStackPane fx:id\u003d\"resultDisplayPlaceholder\" prefHeight\u003d\"100\" style\u003d\"-fx-background-color: #104A53;\" styleClass\u003d\"pane-with-border\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":46,"author":{"gitId":"STELLA-LYE"},"content":" \u003cInsets bottom\u003d\"5\" left\u003d\"10\" right\u003d\"10\" top\u003d\"5\" /\u003e","lastModifiedDate":"2024-03-21"},{"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":"STELLA-LYE"},"content":" \u003cVBox fx:id\u003d\"personList\" minWidth\u003d\"340\" prefWidth\u003d\"340\" prefHeight\u003d\"600\" styleClass\u003d\"pane-with-border\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"STELLA-LYE"},"content":" \u003cLabel fx:id\u003d\"personListTitle\" styleClass\u003d\"cell_big_label\" style\u003d\"-fx-font-size: 20px;\" text\u003d\"Student Details\"/\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":53,"author":{"gitId":"STELLA-LYE"},"content":" \u003cInsets bottom\u003d\"10\" left\u003d\"10\" right\u003d\"10\" top\u003d\"10\" /\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":55,"author":{"gitId":"STELLA-LYE"},"content":" \u003cStackPane fx:id\u003d\"personListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\" style\u003d\"-fx-background-color: #104A53;\"/\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":57,"author":{"gitId":"STELLA-LYE"},"content":" \u003c/SplitPane\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":59,"author":{"gitId":"STELLA-LYE"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" style\u003d\"-fx-background-color: #104A53;\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":62,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":63,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29"}],"authorContributionMap":{"STELLA-LYE":17,"-":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":"jocelyn-soh"},"content":"\u003c?import javafx.geometry.*?\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"jocelyn-soh"},"content":"\u003c?import javafx.scene.control.*?\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"jocelyn-soh"},"content":"\u003c?import javafx.scene.layout.*?\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":7,"author":{"gitId":"jocelyn-soh"},"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":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"jocelyn-soh"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" prefWidth\u003d\"150.0\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"jocelyn-soh"},"content":" \u003cInsets bottom\u003d\"5\" left\u003d\"15\" right\u003d\"5\" top\u003d\"5\" /\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"jocelyn-soh"},"content":" \u003cHBox alignment\u003d\"CENTER_LEFT\" spacing\u003d\"5\"\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":23,"author":{"gitId":"jocelyn-soh"},"content":" \u003cLabel fx:id\u003d\"name\" styleClass\u003d\"cell_big_label\" text\u003d\"\\$first\" /\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03"},{"lineNumber":25,"author":{"gitId":"doyelee0313"},"content":" \u003cFlowPane fx:id\u003d\"groups\" /\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"jocelyn-soh"},"content":" \u003cLabel fx:id\u003d\"year\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$year\" /\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"jocelyn-soh"},"content":" \u003cLabel fx:id\u003d\"major\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$major\" /\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"jocelyn-soh"},"content":" \u003cLabel fx:id\u003d\"telegram\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$telegram\" /\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"jocelyn-soh"},"content":" \u003cLabel fx:id\u003d\"remark\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$remark\" /\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"jocelyn-soh"},"content":" \u003crowConstraints\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"jocelyn-soh"},"content":" \u003cRowConstraints /\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"jocelyn-soh"},"content":" \u003c/rowConstraints\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"doyelee0313":1,"-":21,"jocelyn-soh":15}},{"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":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"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":"jocelyn-soh"},"content":" //---------------- Tests for containsStartingWordIgnoreCase --------------------------------------","lastModifiedDate":"2024-03-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":"jocelyn-soh"},"content":" public void containsStartingWordIgnoreCase_nullWord_throwsNullPointerException() {","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"jocelyn-soh"},"content":" assertThrows(NullPointerException.class, () -\u003e StringUtil.containsStartingWordIgnoreCase(","lastModifiedDate":"2024-03-13"},{"lineNumber":60,"author":{"gitId":"jocelyn-soh"},"content":" \"typical sentence\", null));","lastModifiedDate":"2024-03-13"},{"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":"jocelyn-soh"},"content":" public void containsStartingWordIgnoreCase_emptyWord_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, \"Word parameter cannot be empty\", ()","lastModifiedDate":"2019-03-23"},{"lineNumber":66,"author":{"gitId":"jocelyn-soh"},"content":" -\u003e StringUtil.containsStartingWordIgnoreCase(\"typical sentence\", \" \"));","lastModifiedDate":"2024-03-13"},{"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":"jocelyn-soh"},"content":" public void containsStartingWordIgnoreCase_multipleWords_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, \"Word parameter should be a single word\", ()","lastModifiedDate":"2019-03-23"},{"lineNumber":72,"author":{"gitId":"jocelyn-soh"},"content":" -\u003e StringUtil.containsStartingWordIgnoreCase(\"typical sentence\", \"aaa BBB\"));","lastModifiedDate":"2024-03-13"},{"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":"jocelyn-soh"},"content":" public void containsStartingWordIgnoreCase_nullSentence_throwsNullPointerException() {","lastModifiedDate":"2024-03-13"},{"lineNumber":77,"author":{"gitId":"jocelyn-soh"},"content":" assertThrows(NullPointerException.class, () -\u003e StringUtil.containsStartingWordIgnoreCase(null,","lastModifiedDate":"2024-03-13"},{"lineNumber":78,"author":{"gitId":"jocelyn-soh"},"content":" \"abc\"));","lastModifiedDate":"2024-03-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * Valid equivalence partitions for word:","lastModifiedDate":"2016-10-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * - any word","lastModifiedDate":"2016-10-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * - word containing symbols/numbers","lastModifiedDate":"2016-10-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * - word with leading/trailing spaces","lastModifiedDate":"2016-10-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Valid equivalence partitions for sentence:","lastModifiedDate":"2016-10-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * - empty string","lastModifiedDate":"2016-10-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * - one word","lastModifiedDate":"2016-10-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * - multiple words","lastModifiedDate":"2016-10-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * - sentence with extra spaces","lastModifiedDate":"2016-10-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Possible scenarios returning true:","lastModifiedDate":"2016-10-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - matches first word in sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * - last word in sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * - middle word in sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * - matches multiple words","lastModifiedDate":"2016-10-13"},{"lineNumber":98,"author":{"gitId":"jocelyn-soh"},"content":" * - query word matches part of a sentence word","lastModifiedDate":"2024-03-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * Possible scenarios returning false:","lastModifiedDate":"2016-10-13"},{"lineNumber":101,"author":{"gitId":"jocelyn-soh"},"content":" * -","lastModifiedDate":"2024-03-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * - sentence word matches part of the query word","lastModifiedDate":"2016-10-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-13"},{"lineNumber":104,"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":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void containsWordIgnoreCase_validInputs_correctResult() {","lastModifiedDate":"2016-10-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" // Empty sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":111,"author":{"gitId":"jocelyn-soh"},"content":" assertFalse(StringUtil.containsStartingWordIgnoreCase(\"\", \"abc\")); // Boundary case","lastModifiedDate":"2024-03-13"},{"lineNumber":112,"author":{"gitId":"jocelyn-soh"},"content":" assertFalse(StringUtil.containsStartingWordIgnoreCase(\" \", \"123\"));","lastModifiedDate":"2024-03-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":114,"author":{"gitId":"jocelyn-soh"},"content":" // Matches a partial word only and starts with query word","lastModifiedDate":"2024-03-13"},{"lineNumber":115,"author":{"gitId":"jocelyn-soh"},"content":" assertTrue(StringUtil.containsStartingWordIgnoreCase(\"anna betty carol\", \"car\"));","lastModifiedDate":"2024-03-13"},{"lineNumber":116,"author":{"gitId":"jocelyn-soh"},"content":" // Query word starts with sentence word","lastModifiedDate":"2024-03-13"},{"lineNumber":117,"author":{"gitId":"jocelyn-soh"},"content":" assertFalse(StringUtil.containsStartingWordIgnoreCase(\"anna betty carol\", \"na\"));","lastModifiedDate":"2024-03-13"},{"lineNumber":118,"author":{"gitId":"jocelyn-soh"},"content":" // Query word does not start with sentence word","lastModifiedDate":"2024-03-13"},{"lineNumber":119,"author":{"gitId":"jocelyn-soh"},"content":" assertFalse(StringUtil.containsStartingWordIgnoreCase(\"aaa bbb ccc\", \"bbbb\"));","lastModifiedDate":"2024-03-13"},{"lineNumber":120,"author":{"gitId":"jocelyn-soh"},"content":" // Query word bigger than sentence word","lastModifiedDate":"2024-03-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":" // Matches word in the sentence, different upper/lower case letters","lastModifiedDate":"2016-10-13"},{"lineNumber":123,"author":{"gitId":"jocelyn-soh"},"content":" assertTrue(StringUtil.containsStartingWordIgnoreCase(\"aaa bBb ccc\", \"Bbb\"));","lastModifiedDate":"2024-03-13"},{"lineNumber":124,"author":{"gitId":"jocelyn-soh"},"content":" // First word (boundary case)","lastModifiedDate":"2024-03-13"},{"lineNumber":125,"author":{"gitId":"jocelyn-soh"},"content":" assertTrue(StringUtil.containsStartingWordIgnoreCase(\"aaa bBb ccc@1\", \"CCc@1\"));","lastModifiedDate":"2024-03-13"},{"lineNumber":126,"author":{"gitId":"jocelyn-soh"},"content":" // Last word (boundary case)","lastModifiedDate":"2024-03-13"},{"lineNumber":127,"author":{"gitId":"jocelyn-soh"},"content":" assertTrue(StringUtil.containsStartingWordIgnoreCase(\" AAA bBb ccc \", \"aaa\"));","lastModifiedDate":"2024-03-13"},{"lineNumber":128,"author":{"gitId":"jocelyn-soh"},"content":" // Sentence has extra spaces","lastModifiedDate":"2024-03-13"},{"lineNumber":129,"author":{"gitId":"jocelyn-soh"},"content":" assertTrue(StringUtil.containsStartingWordIgnoreCase(\"Aaa\", \"aaa\"));","lastModifiedDate":"2024-03-13"},{"lineNumber":130,"author":{"gitId":"jocelyn-soh"},"content":" // Only one word in sentence (boundary case)","lastModifiedDate":"2024-03-13"},{"lineNumber":131,"author":{"gitId":"jocelyn-soh"},"content":" assertTrue(StringUtil.containsStartingWordIgnoreCase(\"aaa bbb ccc\", \" ccc \"));","lastModifiedDate":"2024-03-13"},{"lineNumber":132,"author":{"gitId":"jocelyn-soh"},"content":" // Leading/trailing spaces","lastModifiedDate":"2024-03-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":" // Matches multiple words in sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":135,"author":{"gitId":"jocelyn-soh"},"content":" assertTrue(StringUtil.containsStartingWordIgnoreCase(\"AAA bBb ccc bbb\", \"bbB\"));","lastModifiedDate":"2024-03-13"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":138,"author":{"gitId":"-"},"content":" //---------------- Tests for getDetails --------------------------------------","lastModifiedDate":"2016-10-13"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":140,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-13"},{"lineNumber":141,"author":{"gitId":"-"},"content":" * Equivalence Partitions: null, valid throwable object","lastModifiedDate":"2016-10-13"},{"lineNumber":142,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-13"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-30"},{"lineNumber":145,"author":{"gitId":"-"},"content":" public void getDetails_exceptionGiven() {","lastModifiedDate":"2016-09-30"},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.getDetails(new FileNotFoundException(\"file not found\"))","lastModifiedDate":"2019-03-14"},{"lineNumber":147,"author":{"gitId":"-"},"content":" .contains(\"java.io.FileNotFoundException: file not found\"));","lastModifiedDate":"2019-03-14"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":150,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-30"},{"lineNumber":151,"author":{"gitId":"-"},"content":" public void getDetails_nullGiven_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e StringUtil.getDetails(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":155,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"-":122,"jocelyn-soh":33}},{"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":"STELLA-LYE"},"content":"import static seedu.address.logic.commands.CommandTestUtil.MAJOR_DESC_AMY;","lastModifiedDate":"2024-03-18"},{"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":"jocelyn-soh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.REMARK_DESC_SHY;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.YEAR_DESC_AMY;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2018-12-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"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":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-12-09"},{"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":"2017-06-14"},{"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":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2017-06-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2017-06-19"},{"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":"tohlh"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY + YEAR_DESC_AMY","lastModifiedDate":"2024-03-13"},{"lineNumber":172,"author":{"gitId":"jocelyn-soh"},"content":" + TELEGRAM_DESC_AMY + EMAIL_DESC_AMY + MAJOR_DESC_AMY + REMARK_DESC_SHY;","lastModifiedDate":"2024-03-19"},{"lineNumber":173,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":174,"author":{"gitId":"doyelee0313"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withGroups().build();","lastModifiedDate":"2024-03-20"},{"lineNumber":175,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13"},{"lineNumber":176,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13"},{"lineNumber":177,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":179,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"doyelee0313":1,"STELLA-LYE":2,"-":171,"jocelyn-soh":2,"tohlh":3}},{"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":"tohlh"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-23"},{"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":"-"},"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":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15"},{"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":"-"},"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":"-"},"content":" CommandResult commandResult \u003d new AddCommand(validPerson).execute(modelStub);","lastModifiedDate":"2019-01-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23"},{"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":"-"},"content":" AddCommand addCommand \u003d new AddCommand(validPerson);","lastModifiedDate":"2018-08-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":"-"},"content":" assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2019-05-03"},{"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":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":153,"author":{"gitId":"tohlh"},"content":" public boolean hasGroup(Group group) {","lastModifiedDate":"2024-03-23"},{"lineNumber":154,"author":{"gitId":"tohlh"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":155,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":156,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":157,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":158,"author":{"gitId":"tohlh"},"content":" public void deleteGroup(Group target) {","lastModifiedDate":"2024-03-23"},{"lineNumber":159,"author":{"gitId":"tohlh"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":160,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":161,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":162,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":163,"author":{"gitId":"tohlh"},"content":" public void addGroup(Group group) {","lastModifiedDate":"2024-03-23"},{"lineNumber":164,"author":{"gitId":"tohlh"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":165,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":166,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":167,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":168,"author":{"gitId":"tohlh"},"content":" public void setGroup(Group target, Group editedGroup) {","lastModifiedDate":"2024-03-23"},{"lineNumber":169,"author":{"gitId":"tohlh"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":170,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":171,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":173,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":174,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":177,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":178,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":179,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":183,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":184,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07"},{"lineNumber":185,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":186,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07"},{"lineNumber":187,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":189,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":190,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":191,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07"},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":194,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":195,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":196,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":197,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":198,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":199,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":201,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":202,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12"},{"lineNumber":203,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":204,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12"},{"lineNumber":205,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":207,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07"},{"lineNumber":208,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":209,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":210,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":211,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":213,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":214,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08"},{"lineNumber":215,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":216,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":217,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":219,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":220,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04"},{"lineNumber":221,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04"},{"lineNumber":222,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":223,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":225,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12"}],"authorContributionMap":{"-":204,"tohlh":21}},{"path":"src/test/java/seedu/address/logic/commands/AddGroupCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"tohlh"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-23"},{"lineNumber":2,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":3,"author":{"gitId":"tohlh"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-23"},{"lineNumber":4,"author":{"gitId":"tohlh"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"tohlh"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"tohlh"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"tohlh"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"tohlh"},"content":"import static seedu.address.testutil.TypicalGroups.LAB10;","lastModifiedDate":"2024-03-23"},{"lineNumber":9,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"tohlh"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"tohlh"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"tohlh"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"tohlh"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":15,"author":{"gitId":"tohlh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-23"},{"lineNumber":16,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"tohlh"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-23"},{"lineNumber":18,"author":{"gitId":"tohlh"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"tohlh"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"tohlh"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"tohlh"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"tohlh"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"tohlh"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"tohlh"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"tohlh"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":27,"author":{"gitId":"tohlh"},"content":"public class AddGroupCommandTest {","lastModifiedDate":"2024-03-23"},{"lineNumber":28,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":29,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"tohlh"},"content":" public void constructor_nullGroup_throwsNullPointerException() {","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"tohlh"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddGroupCommand(null));","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":33,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":34,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":35,"author":{"gitId":"tohlh"},"content":" public void execute_groupAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"tohlh"},"content":" ModelStubAcceptingGroupAdded modelStub \u003d new ModelStubAcceptingGroupAdded();","lastModifiedDate":"2024-03-23"},{"lineNumber":37,"author":{"gitId":"tohlh"},"content":" Group validGroup \u003d new Group(\"TUT10\");","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":39,"author":{"gitId":"tohlh"},"content":" CommandResult commandResult \u003d new AddGroupCommand(validGroup).execute(modelStub);","lastModifiedDate":"2024-03-23"},{"lineNumber":40,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"tohlh"},"content":" assertEquals(String.format(AddGroupCommand.MESSAGE_SUCCESS, validGroup),","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"tohlh"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2024-03-23"},{"lineNumber":43,"author":{"gitId":"tohlh"},"content":" assertEquals(Arrays.asList(validGroup), modelStub.groupsAdded);","lastModifiedDate":"2024-03-23"},{"lineNumber":44,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":45,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":46,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":47,"author":{"gitId":"tohlh"},"content":" public void execute_duplicateGroup_throwsCommandException() {","lastModifiedDate":"2024-03-23"},{"lineNumber":48,"author":{"gitId":"tohlh"},"content":" Group validGroup \u003d new Group(\"TUT10\");","lastModifiedDate":"2024-03-23"},{"lineNumber":49,"author":{"gitId":"tohlh"},"content":" AddGroupCommand addGroupCommand \u003d new AddGroupCommand(validGroup);","lastModifiedDate":"2024-03-23"},{"lineNumber":50,"author":{"gitId":"tohlh"},"content":" ModelStub modelStub \u003d new ModelStubWithGroup(validGroup);","lastModifiedDate":"2024-03-23"},{"lineNumber":51,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":52,"author":{"gitId":"tohlh"},"content":" assertThrows(CommandException.class,","lastModifiedDate":"2024-03-23"},{"lineNumber":53,"author":{"gitId":"tohlh"},"content":" AddGroupCommand.MESSAGE_DUPLICATE_GROUP, () -\u003e addGroupCommand.execute(modelStub));","lastModifiedDate":"2024-03-23"},{"lineNumber":54,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":55,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":56,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":57,"author":{"gitId":"tohlh"},"content":" public void equals() {","lastModifiedDate":"2024-03-23"},{"lineNumber":58,"author":{"gitId":"tohlh"},"content":" Group tut01 \u003d new Group(\"TUT01\");","lastModifiedDate":"2024-03-23"},{"lineNumber":59,"author":{"gitId":"tohlh"},"content":" Group lab01 \u003d new Group(\"LAB01\");","lastModifiedDate":"2024-03-23"},{"lineNumber":60,"author":{"gitId":"tohlh"},"content":" AddGroupCommand addTut01Command \u003d new AddGroupCommand(tut01);","lastModifiedDate":"2024-03-23"},{"lineNumber":61,"author":{"gitId":"tohlh"},"content":" AddGroupCommand addLab01Command \u003d new AddGroupCommand(lab01);","lastModifiedDate":"2024-03-23"},{"lineNumber":62,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":63,"author":{"gitId":"tohlh"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-23"},{"lineNumber":64,"author":{"gitId":"tohlh"},"content":" assertTrue(addTut01Command.equals(addTut01Command));","lastModifiedDate":"2024-03-23"},{"lineNumber":65,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":66,"author":{"gitId":"tohlh"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-23"},{"lineNumber":67,"author":{"gitId":"tohlh"},"content":" AddGroupCommand addTut01CommandCopy \u003d new AddGroupCommand(tut01);","lastModifiedDate":"2024-03-23"},{"lineNumber":68,"author":{"gitId":"tohlh"},"content":" assertTrue(addTut01Command.equals(addTut01CommandCopy));","lastModifiedDate":"2024-03-23"},{"lineNumber":69,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":70,"author":{"gitId":"tohlh"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-23"},{"lineNumber":71,"author":{"gitId":"tohlh"},"content":" assertFalse(addTut01Command.equals(1));","lastModifiedDate":"2024-03-23"},{"lineNumber":72,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":73,"author":{"gitId":"tohlh"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-23"},{"lineNumber":74,"author":{"gitId":"tohlh"},"content":" assertFalse(addTut01Command.equals(null));","lastModifiedDate":"2024-03-23"},{"lineNumber":75,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":76,"author":{"gitId":"tohlh"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-23"},{"lineNumber":77,"author":{"gitId":"tohlh"},"content":" assertFalse(addTut01Command.equals(addLab01Command));","lastModifiedDate":"2024-03-23"},{"lineNumber":78,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":79,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":80,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":81,"author":{"gitId":"tohlh"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-23"},{"lineNumber":82,"author":{"gitId":"tohlh"},"content":" AddGroupCommand addGroupCommand \u003d new AddGroupCommand(LAB10);","lastModifiedDate":"2024-03-23"},{"lineNumber":83,"author":{"gitId":"tohlh"},"content":" String expected \u003d AddGroupCommand.class.getCanonicalName() + \"{toAdd\u003d\" + LAB10 + \"}\";","lastModifiedDate":"2024-03-23"},{"lineNumber":84,"author":{"gitId":"tohlh"},"content":" assertEquals(expected, addGroupCommand.toString());","lastModifiedDate":"2024-03-23"},{"lineNumber":85,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":86,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":87,"author":{"gitId":"tohlh"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":88,"author":{"gitId":"tohlh"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2024-03-23"},{"lineNumber":89,"author":{"gitId":"tohlh"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":90,"author":{"gitId":"tohlh"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2024-03-23"},{"lineNumber":91,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":92,"author":{"gitId":"tohlh"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2024-03-23"},{"lineNumber":93,"author":{"gitId":"tohlh"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":94,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":95,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":96,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":97,"author":{"gitId":"tohlh"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2024-03-23"},{"lineNumber":98,"author":{"gitId":"tohlh"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":99,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":100,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":101,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":102,"author":{"gitId":"tohlh"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2024-03-23"},{"lineNumber":103,"author":{"gitId":"tohlh"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":104,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":105,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":106,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":107,"author":{"gitId":"tohlh"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2024-03-23"},{"lineNumber":108,"author":{"gitId":"tohlh"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":109,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":110,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":111,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":112,"author":{"gitId":"tohlh"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2024-03-23"},{"lineNumber":113,"author":{"gitId":"tohlh"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":114,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":115,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":116,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":117,"author":{"gitId":"tohlh"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2024-03-23"},{"lineNumber":118,"author":{"gitId":"tohlh"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":119,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":120,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":121,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":122,"author":{"gitId":"tohlh"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2024-03-23"},{"lineNumber":123,"author":{"gitId":"tohlh"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":124,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":125,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":126,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":127,"author":{"gitId":"tohlh"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2024-03-23"},{"lineNumber":128,"author":{"gitId":"tohlh"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":129,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":130,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":131,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":132,"author":{"gitId":"tohlh"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2024-03-23"},{"lineNumber":133,"author":{"gitId":"tohlh"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":134,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":135,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":136,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":137,"author":{"gitId":"tohlh"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2024-03-23"},{"lineNumber":138,"author":{"gitId":"tohlh"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":139,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":140,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":141,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":142,"author":{"gitId":"tohlh"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2024-03-23"},{"lineNumber":143,"author":{"gitId":"tohlh"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":144,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":145,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":146,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":147,"author":{"gitId":"tohlh"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2024-03-23"},{"lineNumber":148,"author":{"gitId":"tohlh"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":149,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":150,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":151,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":152,"author":{"gitId":"tohlh"},"content":" public boolean hasGroup(Group group) {","lastModifiedDate":"2024-03-23"},{"lineNumber":153,"author":{"gitId":"tohlh"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":154,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":155,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":156,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":157,"author":{"gitId":"tohlh"},"content":" public void deleteGroup(Group target) {","lastModifiedDate":"2024-03-23"},{"lineNumber":158,"author":{"gitId":"tohlh"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":159,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":160,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":161,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":162,"author":{"gitId":"tohlh"},"content":" public void addGroup(Group group) {","lastModifiedDate":"2024-03-23"},{"lineNumber":163,"author":{"gitId":"tohlh"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":164,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":165,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":166,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":167,"author":{"gitId":"tohlh"},"content":" public void setGroup(Group target, Group editedGroup) {","lastModifiedDate":"2024-03-23"},{"lineNumber":168,"author":{"gitId":"tohlh"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":169,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":170,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":171,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":172,"author":{"gitId":"tohlh"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2024-03-23"},{"lineNumber":173,"author":{"gitId":"tohlh"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":174,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":175,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":176,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":177,"author":{"gitId":"tohlh"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2024-03-23"},{"lineNumber":178,"author":{"gitId":"tohlh"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":179,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":180,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":181,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":182,"author":{"gitId":"tohlh"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":183,"author":{"gitId":"tohlh"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2024-03-23"},{"lineNumber":184,"author":{"gitId":"tohlh"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":185,"author":{"gitId":"tohlh"},"content":" private class ModelStubWithGroup extends ModelStub {","lastModifiedDate":"2024-03-23"},{"lineNumber":186,"author":{"gitId":"tohlh"},"content":" private final Group group;","lastModifiedDate":"2024-03-23"},{"lineNumber":187,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":188,"author":{"gitId":"tohlh"},"content":" ModelStubWithGroup(Group group) {","lastModifiedDate":"2024-03-23"},{"lineNumber":189,"author":{"gitId":"tohlh"},"content":" requireNonNull(group);","lastModifiedDate":"2024-03-23"},{"lineNumber":190,"author":{"gitId":"tohlh"},"content":" this.group \u003d group;","lastModifiedDate":"2024-03-23"},{"lineNumber":191,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":192,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":193,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":194,"author":{"gitId":"tohlh"},"content":" public boolean hasGroup(Group group) {","lastModifiedDate":"2024-03-23"},{"lineNumber":195,"author":{"gitId":"tohlh"},"content":" requireNonNull(group);","lastModifiedDate":"2024-03-23"},{"lineNumber":196,"author":{"gitId":"tohlh"},"content":" return this.group.isSameGroup(group);","lastModifiedDate":"2024-03-23"},{"lineNumber":197,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":198,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":199,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":200,"author":{"gitId":"tohlh"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":201,"author":{"gitId":"tohlh"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2024-03-23"},{"lineNumber":202,"author":{"gitId":"tohlh"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":203,"author":{"gitId":"tohlh"},"content":" private class ModelStubAcceptingGroupAdded extends ModelStub {","lastModifiedDate":"2024-03-23"},{"lineNumber":204,"author":{"gitId":"tohlh"},"content":" final ArrayList\u003cGroup\u003e groupsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-23"},{"lineNumber":205,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":206,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":207,"author":{"gitId":"tohlh"},"content":" public boolean hasGroup(Group group) {","lastModifiedDate":"2024-03-23"},{"lineNumber":208,"author":{"gitId":"tohlh"},"content":" requireNonNull(group);","lastModifiedDate":"2024-03-23"},{"lineNumber":209,"author":{"gitId":"tohlh"},"content":" return groupsAdded.stream().anyMatch(group::isSameGroup);","lastModifiedDate":"2024-03-23"},{"lineNumber":210,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":211,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":212,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":213,"author":{"gitId":"tohlh"},"content":" public void addGroup(Group group) {","lastModifiedDate":"2024-03-23"},{"lineNumber":214,"author":{"gitId":"tohlh"},"content":" requireNonNull(group);","lastModifiedDate":"2024-03-23"},{"lineNumber":215,"author":{"gitId":"tohlh"},"content":" groupsAdded.add(group);","lastModifiedDate":"2024-03-23"},{"lineNumber":216,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":217,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":218,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":219,"author":{"gitId":"tohlh"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2024-03-23"},{"lineNumber":220,"author":{"gitId":"tohlh"},"content":" return new AddressBook();","lastModifiedDate":"2024-03-23"},{"lineNumber":221,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":222,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":223,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":224,"author":{"gitId":"tohlh"},"content":"}","lastModifiedDate":"2024-03-23"}],"authorContributionMap":{"tohlh":224}},{"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":"doyelee0313"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GROUP;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MAJOR;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"jocelyn-soh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_YEAR;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05"},{"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":"-"},"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":"tohlh"},"content":" public static final String VALID_YEAR_AMY \u003d \"1\";","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"tohlh"},"content":" public static final String VALID_YEAR_BOB \u003d \"2\";","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"STELLA-LYE"},"content":" public static final String VALID_MAJOR_AMY \u003d \"Computer Science\";","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"STELLA-LYE"},"content":" public static final String VALID_MAJOR_BOB \u003d \"Business Analytics\";","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"tohlh"},"content":" public static final String VALID_TELEGRAM_AMY \u003d \"amy123\";","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"tohlh"},"content":" public static final String VALID_TELEGRAM_BOB \u003d \"bob456\";","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"jocelyn-soh"},"content":" public static final String VALID_REMARK_SHY \u003d \"shy\";","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"jocelyn-soh"},"content":" public static final String VALID_REMARK_OUTSPOKEN \u003d \"outspoken\";","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"doyelee0313"},"content":" public static final String VALID_GROUP_TUTORIAL \u003d \"TUT04\";","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"doyelee0313"},"content":" public static final String VALID_GROUP_LAB \u003d \"LAB10\";","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"tohlh"},"content":" public static final String VALID_TELEGRAM_LINK \u003d \"https://t.me/abcdefghijklmnopqrstu\";","lastModifiedDate":"2024-03-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"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":"tohlh"},"content":" public static final String YEAR_DESC_AMY \u003d \" \" + PREFIX_YEAR + VALID_YEAR_AMY;","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"tohlh"},"content":" public static final String YEAR_DESC_BOB \u003d \" \" + PREFIX_YEAR + VALID_YEAR_BOB;","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"STELLA-LYE"},"content":" public static final String MAJOR_DESC_AMY \u003d \" \" + PREFIX_MAJOR + VALID_MAJOR_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"STELLA-LYE"},"content":" public static final String MAJOR_DESC_BOB \u003d \" \" + PREFIX_MAJOR + VALID_MAJOR_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"tohlh"},"content":" public static final String TELEGRAM_DESC_AMY \u003d \" \" + PREFIX_TELEGRAM + VALID_TELEGRAM_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"tohlh"},"content":" public static final String TELEGRAM_DESC_BOB \u003d \" \" + PREFIX_TELEGRAM + VALID_TELEGRAM_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"jocelyn-soh"},"content":" public static final String REMARK_DESC_SHY \u003d \" \" + PREFIX_REMARK + VALID_REMARK_SHY;","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"jocelyn-soh"},"content":" public static final String REMARK_DESC_OUTSPOKEN \u003d \" \" + PREFIX_REMARK + VALID_REMARK_OUTSPOKEN;","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"doyelee0313"},"content":" public static final String GROUP_DESC_TUTORIAL \u003d \" \" + PREFIX_GROUP + VALID_GROUP_TUTORIAL;","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"doyelee0313"},"content":" public static final String GROUP_DESC_LAB \u003d \" \" + PREFIX_GROUP + VALID_GROUP_LAB;","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":67,"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":68,"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":69,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05"},{"lineNumber":70,"author":{"gitId":"tohlh"},"content":" public static final String INVALID_YEAR_DESC \u003d \" \" + PREFIX_YEAR + \"7\";","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"STELLA-LYE"},"content":" public static final String INVALID_MAJOR_DESC \u003d \" \" + PREFIX_MAJOR; // empty string not allowed for major","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"tohlh"},"content":" public static final String INVALID_TELEGRAM_DESC \u003d \" \" + PREFIX_TELEGRAM + \"inval!d\";","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"doyelee0313"},"content":" public static final String INVALID_GROUP_DESC \u003d \" \" + PREFIX_GROUP + \"TUT903029\"; // \u0027group name should be 2 digits\u0027","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":82,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":83,"author":{"gitId":"STELLA-LYE"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withMajor(VALID_MAJOR_AMY)","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"doyelee0313"},"content":" .withRemark(VALID_REMARK_SHY).withGroups(VALID_GROUP_TUTORIAL).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":86,"author":{"gitId":"STELLA-LYE"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withMajor(VALID_MAJOR_BOB)","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"doyelee0313"},"content":" .withRemark(VALID_REMARK_OUTSPOKEN).withGroups(VALID_GROUP_LAB, VALID_GROUP_TUTORIAL).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":95,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25"},{"lineNumber":96,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":97,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":101,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":102,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":106,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":109,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25"},{"lineNumber":111,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":112,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"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":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":119,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":120,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25"},{"lineNumber":121,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25"},{"lineNumber":123,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":124,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":125,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":126,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":133,"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":134,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31"},{"lineNumber":135,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":136,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31"},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":139,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31"},{"lineNumber":140,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20"},{"lineNumber":141,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":146,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"doyelee0313":8,"STELLA-LYE":8,"-":112,"jocelyn-soh":5,"tohlh":13}},{"path":"src/test/java/seedu/address/logic/commands/DeleteGroupCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"tohlh"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-24"},{"lineNumber":2,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":3,"author":{"gitId":"tohlh"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-24"},{"lineNumber":4,"author":{"gitId":"tohlh"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-24"},{"lineNumber":5,"author":{"gitId":"tohlh"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-24"},{"lineNumber":6,"author":{"gitId":"tohlh"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-24"},{"lineNumber":7,"author":{"gitId":"tohlh"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-24"},{"lineNumber":8,"author":{"gitId":"tohlh"},"content":"import static seedu.address.testutil.TypicalGroups.LAB10;","lastModifiedDate":"2024-03-24"},{"lineNumber":9,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":10,"author":{"gitId":"tohlh"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-24"},{"lineNumber":11,"author":{"gitId":"tohlh"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-24"},{"lineNumber":12,"author":{"gitId":"tohlh"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-24"},{"lineNumber":13,"author":{"gitId":"tohlh"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-24"},{"lineNumber":14,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":15,"author":{"gitId":"tohlh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-24"},{"lineNumber":16,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":17,"author":{"gitId":"tohlh"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-24"},{"lineNumber":18,"author":{"gitId":"tohlh"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2024-03-24"},{"lineNumber":19,"author":{"gitId":"tohlh"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-24"},{"lineNumber":20,"author":{"gitId":"tohlh"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-03-24"},{"lineNumber":21,"author":{"gitId":"tohlh"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-24"},{"lineNumber":22,"author":{"gitId":"tohlh"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-24"},{"lineNumber":23,"author":{"gitId":"tohlh"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-24"},{"lineNumber":24,"author":{"gitId":"tohlh"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-24"},{"lineNumber":25,"author":{"gitId":"tohlh"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-24"},{"lineNumber":26,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":27,"author":{"gitId":"tohlh"},"content":"public class DeleteGroupCommandTest {","lastModifiedDate":"2024-03-24"},{"lineNumber":28,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":29,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":30,"author":{"gitId":"tohlh"},"content":" public void constructor_nullGroup_throwsNullPointerException() {","lastModifiedDate":"2024-03-24"},{"lineNumber":31,"author":{"gitId":"tohlh"},"content":" assertThrows(NullPointerException.class, () -\u003e new DeleteGroupCommand(null));","lastModifiedDate":"2024-03-24"},{"lineNumber":32,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":33,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":34,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":35,"author":{"gitId":"tohlh"},"content":" public void execute_groupIsDeletedFromModel_deleteSuccessful() throws Exception {","lastModifiedDate":"2024-03-24"},{"lineNumber":36,"author":{"gitId":"tohlh"},"content":" ModelStubAcceptingGroupAdded modelStub \u003d new ModelStubAcceptingGroupAdded();","lastModifiedDate":"2024-03-24"},{"lineNumber":37,"author":{"gitId":"tohlh"},"content":" Group validGroup \u003d new Group(\"TUT10\");","lastModifiedDate":"2024-03-24"},{"lineNumber":38,"author":{"gitId":"tohlh"},"content":" modelStub.addGroup(validGroup);","lastModifiedDate":"2024-03-24"},{"lineNumber":39,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":40,"author":{"gitId":"tohlh"},"content":" CommandResult commandResult \u003d new DeleteGroupCommand(validGroup).execute(modelStub);","lastModifiedDate":"2024-03-24"},{"lineNumber":41,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":42,"author":{"gitId":"tohlh"},"content":" assertEquals(String.format(DeleteGroupCommand.MESSAGE_SUCCESS, validGroup),","lastModifiedDate":"2024-03-24"},{"lineNumber":43,"author":{"gitId":"tohlh"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2024-03-24"},{"lineNumber":44,"author":{"gitId":"tohlh"},"content":" assertEquals(Collections.emptyList(), modelStub.groupsAdded);","lastModifiedDate":"2024-03-24"},{"lineNumber":45,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":46,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":47,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":48,"author":{"gitId":"tohlh"},"content":" public void execute_groupNotInAddressBook_throwsCommandException() {","lastModifiedDate":"2024-03-24"},{"lineNumber":49,"author":{"gitId":"tohlh"},"content":" ModelStubAcceptingGroupAdded modelStub \u003d new ModelStubAcceptingGroupAdded();","lastModifiedDate":"2024-03-24"},{"lineNumber":50,"author":{"gitId":"tohlh"},"content":" Group validGroup \u003d new Group(\"TUT10\");","lastModifiedDate":"2024-03-24"},{"lineNumber":51,"author":{"gitId":"tohlh"},"content":" modelStub.addGroup(validGroup);","lastModifiedDate":"2024-03-24"},{"lineNumber":52,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":53,"author":{"gitId":"tohlh"},"content":" DeleteGroupCommand deleteGroupCommand \u003d new DeleteGroupCommand(new Group(\"LAB01\"));","lastModifiedDate":"2024-03-24"},{"lineNumber":54,"author":{"gitId":"tohlh"},"content":" assertThrows(CommandException.class,","lastModifiedDate":"2024-03-24"},{"lineNumber":55,"author":{"gitId":"tohlh"},"content":" DeleteGroupCommand.MESSAGE_NOT_FOUND, () -\u003e deleteGroupCommand.execute(modelStub));","lastModifiedDate":"2024-03-24"},{"lineNumber":56,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":57,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":58,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":59,"author":{"gitId":"tohlh"},"content":" public void equals() {","lastModifiedDate":"2024-03-24"},{"lineNumber":60,"author":{"gitId":"tohlh"},"content":" Group tut01 \u003d new Group(\"TUT01\");","lastModifiedDate":"2024-03-24"},{"lineNumber":61,"author":{"gitId":"tohlh"},"content":" Group lab01 \u003d new Group(\"LAB01\");","lastModifiedDate":"2024-03-24"},{"lineNumber":62,"author":{"gitId":"tohlh"},"content":" DeleteGroupCommand deleteTut01Command \u003d new DeleteGroupCommand(tut01);","lastModifiedDate":"2024-03-24"},{"lineNumber":63,"author":{"gitId":"tohlh"},"content":" DeleteGroupCommand deleteLab01Command \u003d new DeleteGroupCommand(lab01);","lastModifiedDate":"2024-03-24"},{"lineNumber":64,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":65,"author":{"gitId":"tohlh"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-24"},{"lineNumber":66,"author":{"gitId":"tohlh"},"content":" assertTrue(deleteTut01Command.equals(deleteTut01Command));","lastModifiedDate":"2024-03-24"},{"lineNumber":67,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":68,"author":{"gitId":"tohlh"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-24"},{"lineNumber":69,"author":{"gitId":"tohlh"},"content":" DeleteGroupCommand deleteTut01CommandCopy \u003d new DeleteGroupCommand(tut01);","lastModifiedDate":"2024-03-24"},{"lineNumber":70,"author":{"gitId":"tohlh"},"content":" assertTrue(deleteTut01Command.equals(deleteTut01CommandCopy));","lastModifiedDate":"2024-03-24"},{"lineNumber":71,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":72,"author":{"gitId":"tohlh"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-24"},{"lineNumber":73,"author":{"gitId":"tohlh"},"content":" assertFalse(deleteTut01Command.equals(1));","lastModifiedDate":"2024-03-24"},{"lineNumber":74,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":75,"author":{"gitId":"tohlh"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-24"},{"lineNumber":76,"author":{"gitId":"tohlh"},"content":" assertFalse(deleteTut01Command.equals(null));","lastModifiedDate":"2024-03-24"},{"lineNumber":77,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":78,"author":{"gitId":"tohlh"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-24"},{"lineNumber":79,"author":{"gitId":"tohlh"},"content":" assertFalse(deleteTut01Command.equals(deleteLab01Command));","lastModifiedDate":"2024-03-24"},{"lineNumber":80,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":81,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":82,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":83,"author":{"gitId":"tohlh"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-24"},{"lineNumber":84,"author":{"gitId":"tohlh"},"content":" AddGroupCommand addGroupCommand \u003d new AddGroupCommand(LAB10);","lastModifiedDate":"2024-03-24"},{"lineNumber":85,"author":{"gitId":"tohlh"},"content":" String expected \u003d AddGroupCommand.class.getCanonicalName() + \"{toAdd\u003d\" + LAB10 + \"}\";","lastModifiedDate":"2024-03-24"},{"lineNumber":86,"author":{"gitId":"tohlh"},"content":" assertEquals(expected, addGroupCommand.toString());","lastModifiedDate":"2024-03-24"},{"lineNumber":87,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":88,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":89,"author":{"gitId":"tohlh"},"content":" /**","lastModifiedDate":"2024-03-24"},{"lineNumber":90,"author":{"gitId":"tohlh"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2024-03-24"},{"lineNumber":91,"author":{"gitId":"tohlh"},"content":" */","lastModifiedDate":"2024-03-24"},{"lineNumber":92,"author":{"gitId":"tohlh"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2024-03-24"},{"lineNumber":93,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-24"},{"lineNumber":94,"author":{"gitId":"tohlh"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2024-03-24"},{"lineNumber":95,"author":{"gitId":"tohlh"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-24"},{"lineNumber":96,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":97,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":98,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-24"},{"lineNumber":99,"author":{"gitId":"tohlh"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2024-03-24"},{"lineNumber":100,"author":{"gitId":"tohlh"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-24"},{"lineNumber":101,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":102,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":103,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-24"},{"lineNumber":104,"author":{"gitId":"tohlh"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2024-03-24"},{"lineNumber":105,"author":{"gitId":"tohlh"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-24"},{"lineNumber":106,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":107,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":108,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-24"},{"lineNumber":109,"author":{"gitId":"tohlh"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2024-03-24"},{"lineNumber":110,"author":{"gitId":"tohlh"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-24"},{"lineNumber":111,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":112,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":113,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-24"},{"lineNumber":114,"author":{"gitId":"tohlh"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2024-03-24"},{"lineNumber":115,"author":{"gitId":"tohlh"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-24"},{"lineNumber":116,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":117,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":118,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-24"},{"lineNumber":119,"author":{"gitId":"tohlh"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2024-03-24"},{"lineNumber":120,"author":{"gitId":"tohlh"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-24"},{"lineNumber":121,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":122,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":123,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-24"},{"lineNumber":124,"author":{"gitId":"tohlh"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2024-03-24"},{"lineNumber":125,"author":{"gitId":"tohlh"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-24"},{"lineNumber":126,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":127,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":128,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-24"},{"lineNumber":129,"author":{"gitId":"tohlh"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2024-03-24"},{"lineNumber":130,"author":{"gitId":"tohlh"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-24"},{"lineNumber":131,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":132,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":133,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-24"},{"lineNumber":134,"author":{"gitId":"tohlh"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2024-03-24"},{"lineNumber":135,"author":{"gitId":"tohlh"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-24"},{"lineNumber":136,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":137,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":138,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-24"},{"lineNumber":139,"author":{"gitId":"tohlh"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2024-03-24"},{"lineNumber":140,"author":{"gitId":"tohlh"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-24"},{"lineNumber":141,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":142,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":143,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-24"},{"lineNumber":144,"author":{"gitId":"tohlh"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2024-03-24"},{"lineNumber":145,"author":{"gitId":"tohlh"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-24"},{"lineNumber":146,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":147,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":148,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-24"},{"lineNumber":149,"author":{"gitId":"tohlh"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2024-03-24"},{"lineNumber":150,"author":{"gitId":"tohlh"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-24"},{"lineNumber":151,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":152,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":153,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-24"},{"lineNumber":154,"author":{"gitId":"tohlh"},"content":" public boolean hasGroup(Group group) {","lastModifiedDate":"2024-03-24"},{"lineNumber":155,"author":{"gitId":"tohlh"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-24"},{"lineNumber":156,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":157,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":158,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-24"},{"lineNumber":159,"author":{"gitId":"tohlh"},"content":" public void deleteGroup(Group target) {","lastModifiedDate":"2024-03-24"},{"lineNumber":160,"author":{"gitId":"tohlh"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-24"},{"lineNumber":161,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":162,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":163,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-24"},{"lineNumber":164,"author":{"gitId":"tohlh"},"content":" public void addGroup(Group group) {","lastModifiedDate":"2024-03-24"},{"lineNumber":165,"author":{"gitId":"tohlh"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-24"},{"lineNumber":166,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":167,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":168,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-24"},{"lineNumber":169,"author":{"gitId":"tohlh"},"content":" public void setGroup(Group target, Group editedGroup) {","lastModifiedDate":"2024-03-24"},{"lineNumber":170,"author":{"gitId":"tohlh"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-24"},{"lineNumber":171,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":172,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":173,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-24"},{"lineNumber":174,"author":{"gitId":"tohlh"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2024-03-24"},{"lineNumber":175,"author":{"gitId":"tohlh"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-24"},{"lineNumber":176,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":177,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":178,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-24"},{"lineNumber":179,"author":{"gitId":"tohlh"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2024-03-24"},{"lineNumber":180,"author":{"gitId":"tohlh"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-24"},{"lineNumber":181,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":182,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":183,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":184,"author":{"gitId":"tohlh"},"content":" /**","lastModifiedDate":"2024-03-24"},{"lineNumber":185,"author":{"gitId":"tohlh"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2024-03-24"},{"lineNumber":186,"author":{"gitId":"tohlh"},"content":" */","lastModifiedDate":"2024-03-24"},{"lineNumber":187,"author":{"gitId":"tohlh"},"content":" private class ModelStubWithGroup extends ModelStub {","lastModifiedDate":"2024-03-24"},{"lineNumber":188,"author":{"gitId":"tohlh"},"content":" private final Group group;","lastModifiedDate":"2024-03-24"},{"lineNumber":189,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":190,"author":{"gitId":"tohlh"},"content":" ModelStubWithGroup(Group group) {","lastModifiedDate":"2024-03-24"},{"lineNumber":191,"author":{"gitId":"tohlh"},"content":" requireNonNull(group);","lastModifiedDate":"2024-03-24"},{"lineNumber":192,"author":{"gitId":"tohlh"},"content":" this.group \u003d group;","lastModifiedDate":"2024-03-24"},{"lineNumber":193,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":194,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":195,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-24"},{"lineNumber":196,"author":{"gitId":"tohlh"},"content":" public boolean hasGroup(Group group) {","lastModifiedDate":"2024-03-24"},{"lineNumber":197,"author":{"gitId":"tohlh"},"content":" requireNonNull(group);","lastModifiedDate":"2024-03-24"},{"lineNumber":198,"author":{"gitId":"tohlh"},"content":" return this.group.isSameGroup(group);","lastModifiedDate":"2024-03-24"},{"lineNumber":199,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":200,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":201,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":202,"author":{"gitId":"tohlh"},"content":" /**","lastModifiedDate":"2024-03-24"},{"lineNumber":203,"author":{"gitId":"tohlh"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2024-03-24"},{"lineNumber":204,"author":{"gitId":"tohlh"},"content":" */","lastModifiedDate":"2024-03-24"},{"lineNumber":205,"author":{"gitId":"tohlh"},"content":" private class ModelStubAcceptingGroupAdded extends ModelStub {","lastModifiedDate":"2024-03-24"},{"lineNumber":206,"author":{"gitId":"tohlh"},"content":" final ArrayList\u003cGroup\u003e groupsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-24"},{"lineNumber":207,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":208,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-24"},{"lineNumber":209,"author":{"gitId":"tohlh"},"content":" public boolean hasGroup(Group group) {","lastModifiedDate":"2024-03-24"},{"lineNumber":210,"author":{"gitId":"tohlh"},"content":" requireNonNull(group);","lastModifiedDate":"2024-03-24"},{"lineNumber":211,"author":{"gitId":"tohlh"},"content":" return groupsAdded.stream().anyMatch(group::isSameGroup);","lastModifiedDate":"2024-03-24"},{"lineNumber":212,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":213,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":214,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-24"},{"lineNumber":215,"author":{"gitId":"tohlh"},"content":" public void addGroup(Group group) {","lastModifiedDate":"2024-03-24"},{"lineNumber":216,"author":{"gitId":"tohlh"},"content":" requireNonNull(group);","lastModifiedDate":"2024-03-24"},{"lineNumber":217,"author":{"gitId":"tohlh"},"content":" groupsAdded.add(group);","lastModifiedDate":"2024-03-24"},{"lineNumber":218,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":219,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":220,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-24"},{"lineNumber":221,"author":{"gitId":"tohlh"},"content":" public void deleteGroup(Group group) {","lastModifiedDate":"2024-03-24"},{"lineNumber":222,"author":{"gitId":"tohlh"},"content":" requireNonNull(group);","lastModifiedDate":"2024-03-24"},{"lineNumber":223,"author":{"gitId":"tohlh"},"content":" groupsAdded.remove(group);","lastModifiedDate":"2024-03-24"},{"lineNumber":224,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":225,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":226,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-24"},{"lineNumber":227,"author":{"gitId":"tohlh"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2024-03-24"},{"lineNumber":228,"author":{"gitId":"tohlh"},"content":" return new AddressBook();","lastModifiedDate":"2024-03-24"},{"lineNumber":229,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":230,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":231,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":232,"author":{"gitId":"tohlh"},"content":"}","lastModifiedDate":"2024-03-24"}],"authorContributionMap":{"tohlh":232}},{"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":"doyelee0313"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GROUP_LAB;","lastModifiedDate":"2024-03-20"},{"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.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":"doyelee0313"},"content":" .withGroups(VALID_GROUP_LAB).build();","lastModifiedDate":"2024-03-20"},{"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":"doyelee0313"},"content":" .withPhone(VALID_PHONE_BOB).withGroups(VALID_GROUP_LAB).build();","lastModifiedDate":"2024-03-20"},{"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-04"},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18"},{"lineNumber":134,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18"},{"lineNumber":135,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18"},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":137,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":138,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":139,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18"},{"lineNumber":140,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-05-18"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":143,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":149,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":151,"author":{"gitId":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2018-08-08"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":153,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":154,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08"},{"lineNumber":155,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":156,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":158,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":161,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2017-05-25"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2017-05-25"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":174,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2019-02-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08"}],"authorContributionMap":{"doyelee0313":3,"-":181}},{"path":"src/test/java/seedu/address/logic/commands/EditGroupCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"tohlh"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-24"},{"lineNumber":2,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":3,"author":{"gitId":"tohlh"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-24"},{"lineNumber":4,"author":{"gitId":"tohlh"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-24"},{"lineNumber":5,"author":{"gitId":"tohlh"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-24"},{"lineNumber":6,"author":{"gitId":"tohlh"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-24"},{"lineNumber":7,"author":{"gitId":"tohlh"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-24"},{"lineNumber":8,"author":{"gitId":"tohlh"},"content":"import static seedu.address.testutil.TypicalGroups.LAB10;","lastModifiedDate":"2024-03-24"},{"lineNumber":9,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":10,"author":{"gitId":"tohlh"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-24"},{"lineNumber":11,"author":{"gitId":"tohlh"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-24"},{"lineNumber":12,"author":{"gitId":"tohlh"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-24"},{"lineNumber":13,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":14,"author":{"gitId":"tohlh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-24"},{"lineNumber":15,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":16,"author":{"gitId":"tohlh"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-24"},{"lineNumber":17,"author":{"gitId":"tohlh"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2024-03-24"},{"lineNumber":18,"author":{"gitId":"tohlh"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-24"},{"lineNumber":19,"author":{"gitId":"tohlh"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-03-24"},{"lineNumber":20,"author":{"gitId":"tohlh"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-24"},{"lineNumber":21,"author":{"gitId":"tohlh"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-24"},{"lineNumber":22,"author":{"gitId":"tohlh"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-24"},{"lineNumber":23,"author":{"gitId":"tohlh"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-24"},{"lineNumber":24,"author":{"gitId":"tohlh"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-24"},{"lineNumber":25,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":26,"author":{"gitId":"tohlh"},"content":"public class EditGroupCommandTest {","lastModifiedDate":"2024-03-24"},{"lineNumber":27,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":28,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":29,"author":{"gitId":"tohlh"},"content":" public void constructor_nullGroup_throwsNullPointerException() {","lastModifiedDate":"2024-03-24"},{"lineNumber":30,"author":{"gitId":"tohlh"},"content":" assertThrows(NullPointerException.class, () -\u003e new EditGroupCommand(null, null));","lastModifiedDate":"2024-03-24"},{"lineNumber":31,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":32,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":33,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":34,"author":{"gitId":"tohlh"},"content":" public void execute_groupIsEdited_editSuccessful() throws Exception {","lastModifiedDate":"2024-03-24"},{"lineNumber":35,"author":{"gitId":"tohlh"},"content":" ModelStubAcceptingGroupAdded modelStub \u003d new ModelStubAcceptingGroupAdded();","lastModifiedDate":"2024-03-24"},{"lineNumber":36,"author":{"gitId":"tohlh"},"content":" Group validGroup \u003d new Group(\"TUT10\");","lastModifiedDate":"2024-03-24"},{"lineNumber":37,"author":{"gitId":"tohlh"},"content":" modelStub.addGroup(validGroup);","lastModifiedDate":"2024-03-24"},{"lineNumber":38,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":39,"author":{"gitId":"tohlh"},"content":" CommandResult commandResult \u003d new EditGroupCommand(validGroup, \"\").execute(modelStub);","lastModifiedDate":"2024-03-24"},{"lineNumber":40,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":41,"author":{"gitId":"tohlh"},"content":" assertEquals(String.format(EditGroupCommand.MESSAGE_SUCCESS, validGroup),","lastModifiedDate":"2024-03-24"},{"lineNumber":42,"author":{"gitId":"tohlh"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2024-03-24"},{"lineNumber":43,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":44,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":45,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":46,"author":{"gitId":"tohlh"},"content":" public void execute_groupNotInAddressBook_throwsCommandException() {","lastModifiedDate":"2024-03-24"},{"lineNumber":47,"author":{"gitId":"tohlh"},"content":" ModelStubAcceptingGroupAdded modelStub \u003d new ModelStubAcceptingGroupAdded();","lastModifiedDate":"2024-03-24"},{"lineNumber":48,"author":{"gitId":"tohlh"},"content":" Group validGroup \u003d new Group(\"TUT10\");","lastModifiedDate":"2024-03-24"},{"lineNumber":49,"author":{"gitId":"tohlh"},"content":" modelStub.addGroup(validGroup);","lastModifiedDate":"2024-03-24"},{"lineNumber":50,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":51,"author":{"gitId":"tohlh"},"content":" EditGroupCommand deleteGroupCommand \u003d new EditGroupCommand(new Group(\"LAB01\"), \"\");","lastModifiedDate":"2024-03-24"},{"lineNumber":52,"author":{"gitId":"tohlh"},"content":" assertThrows(CommandException.class,","lastModifiedDate":"2024-03-24"},{"lineNumber":53,"author":{"gitId":"tohlh"},"content":" EditGroupCommand.MESSAGE_NOT_FOUND, () -\u003e deleteGroupCommand.execute(modelStub));","lastModifiedDate":"2024-03-24"},{"lineNumber":54,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":55,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":56,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":57,"author":{"gitId":"tohlh"},"content":" public void equals() {","lastModifiedDate":"2024-03-24"},{"lineNumber":58,"author":{"gitId":"tohlh"},"content":" Group tut01 \u003d new Group(\"TUT01\");","lastModifiedDate":"2024-03-24"},{"lineNumber":59,"author":{"gitId":"tohlh"},"content":" Group lab01 \u003d new Group(\"LAB01\");","lastModifiedDate":"2024-03-24"},{"lineNumber":60,"author":{"gitId":"tohlh"},"content":" EditGroupCommand editTut01Command \u003d new EditGroupCommand(tut01, \"https://t.me/abcdefg\");","lastModifiedDate":"2024-03-24"},{"lineNumber":61,"author":{"gitId":"tohlh"},"content":" EditGroupCommand editLab01Command \u003d new EditGroupCommand(lab01, \"https://t.me/abcedfg\");","lastModifiedDate":"2024-03-24"},{"lineNumber":62,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":63,"author":{"gitId":"tohlh"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-24"},{"lineNumber":64,"author":{"gitId":"tohlh"},"content":" assertTrue(editTut01Command.equals(editTut01Command));","lastModifiedDate":"2024-03-24"},{"lineNumber":65,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":66,"author":{"gitId":"tohlh"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-24"},{"lineNumber":67,"author":{"gitId":"tohlh"},"content":" EditGroupCommand editTut01CommandCopy \u003d new EditGroupCommand(tut01, \"https://t.me/abcdefg\");","lastModifiedDate":"2024-03-24"},{"lineNumber":68,"author":{"gitId":"tohlh"},"content":" assertTrue(editTut01Command.equals(editTut01CommandCopy));","lastModifiedDate":"2024-03-24"},{"lineNumber":69,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":70,"author":{"gitId":"tohlh"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-24"},{"lineNumber":71,"author":{"gitId":"tohlh"},"content":" assertFalse(editTut01Command.equals(1));","lastModifiedDate":"2024-03-24"},{"lineNumber":72,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":73,"author":{"gitId":"tohlh"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-24"},{"lineNumber":74,"author":{"gitId":"tohlh"},"content":" assertFalse(editTut01Command.equals(null));","lastModifiedDate":"2024-03-24"},{"lineNumber":75,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":76,"author":{"gitId":"tohlh"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-24"},{"lineNumber":77,"author":{"gitId":"tohlh"},"content":" assertFalse(editTut01Command.equals(editLab01Command));","lastModifiedDate":"2024-03-24"},{"lineNumber":78,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":79,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":80,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":81,"author":{"gitId":"tohlh"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-24"},{"lineNumber":82,"author":{"gitId":"tohlh"},"content":" AddGroupCommand addGroupCommand \u003d new AddGroupCommand(LAB10);","lastModifiedDate":"2024-03-24"},{"lineNumber":83,"author":{"gitId":"tohlh"},"content":" String expected \u003d AddGroupCommand.class.getCanonicalName() + \"{toAdd\u003d\" + LAB10 + \"}\";","lastModifiedDate":"2024-03-24"},{"lineNumber":84,"author":{"gitId":"tohlh"},"content":" assertEquals(expected, addGroupCommand.toString());","lastModifiedDate":"2024-03-24"},{"lineNumber":85,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":86,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":87,"author":{"gitId":"tohlh"},"content":" /**","lastModifiedDate":"2024-03-24"},{"lineNumber":88,"author":{"gitId":"tohlh"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2024-03-24"},{"lineNumber":89,"author":{"gitId":"tohlh"},"content":" */","lastModifiedDate":"2024-03-24"},{"lineNumber":90,"author":{"gitId":"tohlh"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2024-03-24"},{"lineNumber":91,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-24"},{"lineNumber":92,"author":{"gitId":"tohlh"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2024-03-24"},{"lineNumber":93,"author":{"gitId":"tohlh"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-24"},{"lineNumber":94,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":95,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":96,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-24"},{"lineNumber":97,"author":{"gitId":"tohlh"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2024-03-24"},{"lineNumber":98,"author":{"gitId":"tohlh"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-24"},{"lineNumber":99,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":100,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":101,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-24"},{"lineNumber":102,"author":{"gitId":"tohlh"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2024-03-24"},{"lineNumber":103,"author":{"gitId":"tohlh"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-24"},{"lineNumber":104,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":105,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":106,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-24"},{"lineNumber":107,"author":{"gitId":"tohlh"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2024-03-24"},{"lineNumber":108,"author":{"gitId":"tohlh"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-24"},{"lineNumber":109,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":110,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":111,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-24"},{"lineNumber":112,"author":{"gitId":"tohlh"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2024-03-24"},{"lineNumber":113,"author":{"gitId":"tohlh"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-24"},{"lineNumber":114,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":115,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":116,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-24"},{"lineNumber":117,"author":{"gitId":"tohlh"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2024-03-24"},{"lineNumber":118,"author":{"gitId":"tohlh"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-24"},{"lineNumber":119,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":120,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":121,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-24"},{"lineNumber":122,"author":{"gitId":"tohlh"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2024-03-24"},{"lineNumber":123,"author":{"gitId":"tohlh"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-24"},{"lineNumber":124,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":125,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":126,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-24"},{"lineNumber":127,"author":{"gitId":"tohlh"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2024-03-24"},{"lineNumber":128,"author":{"gitId":"tohlh"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-24"},{"lineNumber":129,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":130,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":131,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-24"},{"lineNumber":132,"author":{"gitId":"tohlh"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2024-03-24"},{"lineNumber":133,"author":{"gitId":"tohlh"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-24"},{"lineNumber":134,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":135,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":136,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-24"},{"lineNumber":137,"author":{"gitId":"tohlh"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2024-03-24"},{"lineNumber":138,"author":{"gitId":"tohlh"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-24"},{"lineNumber":139,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":140,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":141,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-24"},{"lineNumber":142,"author":{"gitId":"tohlh"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2024-03-24"},{"lineNumber":143,"author":{"gitId":"tohlh"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-24"},{"lineNumber":144,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":145,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":146,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-24"},{"lineNumber":147,"author":{"gitId":"tohlh"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2024-03-24"},{"lineNumber":148,"author":{"gitId":"tohlh"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-24"},{"lineNumber":149,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":150,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":151,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-24"},{"lineNumber":152,"author":{"gitId":"tohlh"},"content":" public boolean hasGroup(Group group) {","lastModifiedDate":"2024-03-24"},{"lineNumber":153,"author":{"gitId":"tohlh"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-24"},{"lineNumber":154,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":155,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":156,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-24"},{"lineNumber":157,"author":{"gitId":"tohlh"},"content":" public void deleteGroup(Group target) {","lastModifiedDate":"2024-03-24"},{"lineNumber":158,"author":{"gitId":"tohlh"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-24"},{"lineNumber":159,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":160,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":161,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-24"},{"lineNumber":162,"author":{"gitId":"tohlh"},"content":" public void addGroup(Group group) {","lastModifiedDate":"2024-03-24"},{"lineNumber":163,"author":{"gitId":"tohlh"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-24"},{"lineNumber":164,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":165,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":166,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-24"},{"lineNumber":167,"author":{"gitId":"tohlh"},"content":" public void setGroup(Group target, Group editedGroup) {","lastModifiedDate":"2024-03-24"},{"lineNumber":168,"author":{"gitId":"tohlh"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-24"},{"lineNumber":169,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":170,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":171,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-24"},{"lineNumber":172,"author":{"gitId":"tohlh"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2024-03-24"},{"lineNumber":173,"author":{"gitId":"tohlh"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-24"},{"lineNumber":174,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":175,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":176,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-24"},{"lineNumber":177,"author":{"gitId":"tohlh"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2024-03-24"},{"lineNumber":178,"author":{"gitId":"tohlh"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-24"},{"lineNumber":179,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":180,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":181,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":182,"author":{"gitId":"tohlh"},"content":" /**","lastModifiedDate":"2024-03-24"},{"lineNumber":183,"author":{"gitId":"tohlh"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2024-03-24"},{"lineNumber":184,"author":{"gitId":"tohlh"},"content":" */","lastModifiedDate":"2024-03-24"},{"lineNumber":185,"author":{"gitId":"tohlh"},"content":" private class ModelStubWithGroup extends ModelStub {","lastModifiedDate":"2024-03-24"},{"lineNumber":186,"author":{"gitId":"tohlh"},"content":" private final Group group;","lastModifiedDate":"2024-03-24"},{"lineNumber":187,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":188,"author":{"gitId":"tohlh"},"content":" ModelStubWithGroup(Group group) {","lastModifiedDate":"2024-03-24"},{"lineNumber":189,"author":{"gitId":"tohlh"},"content":" requireNonNull(group);","lastModifiedDate":"2024-03-24"},{"lineNumber":190,"author":{"gitId":"tohlh"},"content":" this.group \u003d group;","lastModifiedDate":"2024-03-24"},{"lineNumber":191,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":192,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":193,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-24"},{"lineNumber":194,"author":{"gitId":"tohlh"},"content":" public boolean hasGroup(Group group) {","lastModifiedDate":"2024-03-24"},{"lineNumber":195,"author":{"gitId":"tohlh"},"content":" requireNonNull(group);","lastModifiedDate":"2024-03-24"},{"lineNumber":196,"author":{"gitId":"tohlh"},"content":" return this.group.isSameGroup(group);","lastModifiedDate":"2024-03-24"},{"lineNumber":197,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":198,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":199,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":200,"author":{"gitId":"tohlh"},"content":" /**","lastModifiedDate":"2024-03-24"},{"lineNumber":201,"author":{"gitId":"tohlh"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2024-03-24"},{"lineNumber":202,"author":{"gitId":"tohlh"},"content":" */","lastModifiedDate":"2024-03-24"},{"lineNumber":203,"author":{"gitId":"tohlh"},"content":" private class ModelStubAcceptingGroupAdded extends ModelStub {","lastModifiedDate":"2024-03-24"},{"lineNumber":204,"author":{"gitId":"tohlh"},"content":" final ArrayList\u003cGroup\u003e groupsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-24"},{"lineNumber":205,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":206,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-24"},{"lineNumber":207,"author":{"gitId":"tohlh"},"content":" public boolean hasGroup(Group group) {","lastModifiedDate":"2024-03-24"},{"lineNumber":208,"author":{"gitId":"tohlh"},"content":" requireNonNull(group);","lastModifiedDate":"2024-03-24"},{"lineNumber":209,"author":{"gitId":"tohlh"},"content":" return groupsAdded.stream().anyMatch(group::isSameGroup);","lastModifiedDate":"2024-03-24"},{"lineNumber":210,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":211,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":212,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-24"},{"lineNumber":213,"author":{"gitId":"tohlh"},"content":" public void addGroup(Group group) {","lastModifiedDate":"2024-03-24"},{"lineNumber":214,"author":{"gitId":"tohlh"},"content":" requireNonNull(group);","lastModifiedDate":"2024-03-24"},{"lineNumber":215,"author":{"gitId":"tohlh"},"content":" groupsAdded.add(group);","lastModifiedDate":"2024-03-24"},{"lineNumber":216,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":217,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":218,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-24"},{"lineNumber":219,"author":{"gitId":"tohlh"},"content":" public void setGroup(Group target, Group group) {","lastModifiedDate":"2024-03-24"},{"lineNumber":220,"author":{"gitId":"tohlh"},"content":" requireNonNull(group);","lastModifiedDate":"2024-03-24"},{"lineNumber":221,"author":{"gitId":"tohlh"},"content":" int index \u003d groupsAdded.indexOf(target);","lastModifiedDate":"2024-03-24"},{"lineNumber":222,"author":{"gitId":"tohlh"},"content":" groupsAdded.set(index, group);","lastModifiedDate":"2024-03-24"},{"lineNumber":223,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":224,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":225,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-24"},{"lineNumber":226,"author":{"gitId":"tohlh"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2024-03-24"},{"lineNumber":227,"author":{"gitId":"tohlh"},"content":" return new AddressBook();","lastModifiedDate":"2024-03-24"},{"lineNumber":228,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":229,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":230,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":231,"author":{"gitId":"tohlh"},"content":"}","lastModifiedDate":"2024-03-24"}],"authorContributionMap":{"tohlh":231}},{"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":"doyelee0313"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GROUP_LAB;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MAJOR_BOB;","lastModifiedDate":"2024-03-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":"jocelyn-soh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_REMARK_OUTSPOKEN;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_YEAR_AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05"},{"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":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05"},{"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":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05"},{"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":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05"},{"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":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05"},{"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":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"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":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":50,"author":{"gitId":"tohlh"},"content":" // different year -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"tohlh"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withYear(VALID_YEAR_AMY).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"tohlh"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"tohlh"},"content":" // different telegram -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"tohlh"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withTelegram(VALID_TELEGRAM_AMY).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"tohlh"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":62,"author":{"gitId":"STELLA-LYE"},"content":" // different major -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"STELLA-LYE"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withMajor(VALID_MAJOR_BOB).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":66,"author":{"gitId":"jocelyn-soh"},"content":" // different remark -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"jocelyn-soh"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withRemark(VALID_REMARK_OUTSPOKEN).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"doyelee0313"},"content":" // different groups -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"doyelee0313"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withGroups(VALID_GROUP_LAB).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"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":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"tohlh"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", year\u003d\"","lastModifiedDate":"2024-03-13"},{"lineNumber":82,"author":{"gitId":"STELLA-LYE"},"content":" + editPersonDescriptor.getYear().orElse(null) + \", major\u003d\"","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"STELLA-LYE"},"content":" + editPersonDescriptor.getMajor().orElse(null) + \", telegram\u003d\"","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"jocelyn-soh"},"content":" + editPersonDescriptor.getTelegram().orElse(null) + \", remark\u003d\"","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"doyelee0313"},"content":" + editPersonDescriptor.getRemark().orElse(null) + \", groups\u003d\"","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"doyelee0313"},"content":" + editPersonDescriptor.getGroups().orElse(null) + \"}\";","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"doyelee0313":5,"STELLA-LYE":5,"-":64,"jocelyn-soh":4,"tohlh":11}},{"path":"src/test/java/seedu/address/logic/commands/FilterCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"STELLA-LYE"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"STELLA-LYE"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":"import static seedu.address.logic.Messages.MESSAGE_PERSONS_LISTED_OVERVIEW;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"STELLA-LYE"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"STELLA-LYE"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"STELLA-LYE"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"STELLA-LYE"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"STELLA-LYE"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"STELLA-LYE"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"STELLA-LYE"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"STELLA-LYE"},"content":"import seedu.address.model.group.GroupContainsKeywordsPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"STELLA-LYE"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"STELLA-LYE"},"content":" * Contains integration tests (interaction with the Model) for {@code FilterCommand}.","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"STELLA-LYE"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"STELLA-LYE"},"content":"public class FilterCommandTest {","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"STELLA-LYE"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"STELLA-LYE"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"STELLA-LYE"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"STELLA-LYE"},"content":" public void equals() {","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"STELLA-LYE"},"content":" GroupContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"STELLA-LYE"},"content":" new GroupContainsKeywordsPredicate(Collections.singletonList(\"TUT01\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"STELLA-LYE"},"content":" GroupContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"STELLA-LYE"},"content":" new GroupContainsKeywordsPredicate(Collections.singletonList(\"TUT02\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"STELLA-LYE"},"content":" FilterCommand findFirstCommand \u003d new FilterCommand(firstPredicate);","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"STELLA-LYE"},"content":" FilterCommand findSecondCommand \u003d new FilterCommand(secondPredicate);","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"STELLA-LYE"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"STELLA-LYE"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"STELLA-LYE"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"STELLA-LYE"},"content":" FilterCommand findFirstCommandCopy \u003d new FilterCommand(firstPredicate);","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"STELLA-LYE"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"STELLA-LYE"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"STELLA-LYE"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"STELLA-LYE"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"STELLA-LYE"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"STELLA-LYE"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"STELLA-LYE"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"STELLA-LYE"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"STELLA-LYE"},"content":" public void execute_zeroKeywords_noPersonFound() {","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"STELLA-LYE"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"STELLA-LYE"},"content":" GroupContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"STELLA-LYE"},"content":" FilterCommand command \u003d new FilterCommand(predicate);","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"STELLA-LYE"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"STELLA-LYE"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"STELLA-LYE"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"STELLA-LYE"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"STELLA-LYE"},"content":" public void execute_multipleKeywords_multiplePersonsFound() {","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"STELLA-LYE"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 2);","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"STELLA-LYE"},"content":" GroupContainsKeywordsPredicate predicate \u003d preparePredicate(\"LAB05\");","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"STELLA-LYE"},"content":" FilterCommand command \u003d new FilterCommand(predicate);","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"STELLA-LYE"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"STELLA-LYE"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"STELLA-LYE"},"content":" assertEquals(Arrays.asList(ALICE, BENSON), model.getFilteredPersonList());","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"STELLA-LYE"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"STELLA-LYE"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"STELLA-LYE"},"content":" GroupContainsKeywordsPredicate predicate \u003d new GroupContainsKeywordsPredicate(Arrays.asList(\"TUT10\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"STELLA-LYE"},"content":" FilterCommand filterCommand \u003d new FilterCommand(predicate);","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"STELLA-LYE"},"content":" String expected \u003d FilterCommand.class.getCanonicalName() + \"{group\u003d\" + predicate + \"}\";","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"STELLA-LYE"},"content":" assertEquals(expected, filterCommand.toString());","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"STELLA-LYE"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"STELLA-LYE"},"content":" * Parses {@code userInput} into a {@code GroupContainsKeywordsPredicate}.","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"STELLA-LYE"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"STELLA-LYE"},"content":" private GroupContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"STELLA-LYE"},"content":" return new GroupContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2024-03-21"},{"lineNumber":90,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":91,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"STELLA-LYE":91}},{"path":"src/test/java/seedu/address/logic/commands/MailCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"STELLA-LYE"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-23"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-23"},{"lineNumber":4,"author":{"gitId":"STELLA-LYE"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-23"},{"lineNumber":9,"author":{"gitId":"STELLA-LYE"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":"import java.util.List;","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"STELLA-LYE"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"STELLA-LYE"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":15,"author":{"gitId":"STELLA-LYE"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-23"},{"lineNumber":16,"author":{"gitId":"STELLA-LYE"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"STELLA-LYE"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-23"},{"lineNumber":18,"author":{"gitId":"STELLA-LYE"},"content":"import seedu.address.model.group.GroupContainsKeywordsPredicate;","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"STELLA-LYE"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"STELLA-LYE"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"STELLA-LYE"},"content":"public class MailCommandTest {","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"STELLA-LYE"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"STELLA-LYE"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":27,"author":{"gitId":"STELLA-LYE"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":28,"author":{"gitId":"STELLA-LYE"},"content":" public void equals() {","lastModifiedDate":"2024-03-23"},{"lineNumber":29,"author":{"gitId":"STELLA-LYE"},"content":" GroupContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"STELLA-LYE"},"content":" new GroupContainsKeywordsPredicate(Collections.singletonList(\"TUT01\"));","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"STELLA-LYE"},"content":" GroupContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"STELLA-LYE"},"content":" new GroupContainsKeywordsPredicate(Collections.singletonList(\"TUT02\"));","lastModifiedDate":"2024-03-23"},{"lineNumber":33,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":34,"author":{"gitId":"STELLA-LYE"},"content":" MailCommand findFirstCommand \u003d new MailCommand(firstPredicate);","lastModifiedDate":"2024-03-23"},{"lineNumber":35,"author":{"gitId":"STELLA-LYE"},"content":" MailCommand findSecondCommand \u003d new MailCommand(secondPredicate);","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":37,"author":{"gitId":"STELLA-LYE"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"STELLA-LYE"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2024-03-23"},{"lineNumber":39,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":40,"author":{"gitId":"STELLA-LYE"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"STELLA-LYE"},"content":" MailCommand findFirstCommandCopy \u003d new MailCommand(firstPredicate);","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"STELLA-LYE"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2024-03-23"},{"lineNumber":43,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":44,"author":{"gitId":"STELLA-LYE"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-23"},{"lineNumber":45,"author":{"gitId":"STELLA-LYE"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2024-03-23"},{"lineNumber":46,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":47,"author":{"gitId":"STELLA-LYE"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-23"},{"lineNumber":48,"author":{"gitId":"STELLA-LYE"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2024-03-23"},{"lineNumber":49,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":50,"author":{"gitId":"STELLA-LYE"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-23"},{"lineNumber":51,"author":{"gitId":"STELLA-LYE"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2024-03-23"},{"lineNumber":52,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":53,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":54,"author":{"gitId":"STELLA-LYE"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":55,"author":{"gitId":"STELLA-LYE"},"content":" public void execute_noPredicate_success() {","lastModifiedDate":"2024-03-23"},{"lineNumber":56,"author":{"gitId":"STELLA-LYE"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2024-03-23"},{"lineNumber":57,"author":{"gitId":"STELLA-LYE"},"content":" MailCommand mailCommand \u003d new MailCommand();","lastModifiedDate":"2024-03-23"},{"lineNumber":58,"author":{"gitId":"STELLA-LYE"},"content":" CommandResult commandResult \u003d mailCommand.execute(model);","lastModifiedDate":"2024-03-23"},{"lineNumber":59,"author":{"gitId":"STELLA-LYE"},"content":" assertEquals(\"mailto:\", commandResult.getFeedbackToUser());","lastModifiedDate":"2024-03-23"},{"lineNumber":60,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":61,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":62,"author":{"gitId":"STELLA-LYE"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":63,"author":{"gitId":"STELLA-LYE"},"content":" public void execute_withMultiplePredicate_success() {","lastModifiedDate":"2024-03-23"},{"lineNumber":64,"author":{"gitId":"STELLA-LYE"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2024-03-23"},{"lineNumber":65,"author":{"gitId":"STELLA-LYE"},"content":" List\u003cPerson\u003e personList \u003d Arrays.asList(","lastModifiedDate":"2024-03-23"},{"lineNumber":66,"author":{"gitId":"STELLA-LYE"},"content":" new PersonBuilder().withName(\"Alice\").withEmail(\"test1@example.com\").build(),","lastModifiedDate":"2024-03-23"},{"lineNumber":67,"author":{"gitId":"STELLA-LYE"},"content":" new PersonBuilder().withName(\"Bob\").withEmail(\"test2@example.com\").build()","lastModifiedDate":"2024-03-23"},{"lineNumber":68,"author":{"gitId":"STELLA-LYE"},"content":" );","lastModifiedDate":"2024-03-23"},{"lineNumber":69,"author":{"gitId":"STELLA-LYE"},"content":" model.addPerson(personList.get(0));","lastModifiedDate":"2024-03-23"},{"lineNumber":70,"author":{"gitId":"STELLA-LYE"},"content":" model.addPerson(personList.get(1));","lastModifiedDate":"2024-03-23"},{"lineNumber":71,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":72,"author":{"gitId":"STELLA-LYE"},"content":" GroupContainsKeywordsPredicate predicate \u003d new GroupContainsKeywordsPredicate(Arrays.asList(\"TUT01\"));","lastModifiedDate":"2024-03-23"},{"lineNumber":73,"author":{"gitId":"STELLA-LYE"},"content":" model.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-03-23"},{"lineNumber":74,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":75,"author":{"gitId":"STELLA-LYE"},"content":" MailCommand mailCommand \u003d new MailCommand(predicate);","lastModifiedDate":"2024-03-23"},{"lineNumber":76,"author":{"gitId":"STELLA-LYE"},"content":" CommandResult commandResult \u003d mailCommand.execute(model);","lastModifiedDate":"2024-03-23"},{"lineNumber":77,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":78,"author":{"gitId":"STELLA-LYE"},"content":" // Extract emails from personList filtered by the predicate","lastModifiedDate":"2024-03-23"},{"lineNumber":79,"author":{"gitId":"STELLA-LYE"},"content":" List\u003cString\u003e emails \u003d personList.stream()","lastModifiedDate":"2024-03-23"},{"lineNumber":80,"author":{"gitId":"STELLA-LYE"},"content":" .filter(person -\u003e predicate.test(person))","lastModifiedDate":"2024-03-23"},{"lineNumber":81,"author":{"gitId":"STELLA-LYE"},"content":" .map(person -\u003e person.getEmail().toString())","lastModifiedDate":"2024-03-23"},{"lineNumber":82,"author":{"gitId":"STELLA-LYE"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2024-03-23"},{"lineNumber":83,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":84,"author":{"gitId":"STELLA-LYE"},"content":" // Generate the expected mailto link","lastModifiedDate":"2024-03-23"},{"lineNumber":85,"author":{"gitId":"STELLA-LYE"},"content":" String expectedLink \u003d \"mailto:\" + String.join(\";\", emails);","lastModifiedDate":"2024-03-23"},{"lineNumber":86,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":87,"author":{"gitId":"STELLA-LYE"},"content":" // Ensure that the generated mailto link matches the expected one","lastModifiedDate":"2024-03-23"},{"lineNumber":88,"author":{"gitId":"STELLA-LYE"},"content":" assertEquals(expectedLink, commandResult.getFeedbackToUser());","lastModifiedDate":"2024-03-23"},{"lineNumber":89,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":90,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-03-23"}],"authorContributionMap":{"STELLA-LYE":90}},{"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":"doyelee0313"},"content":"import static seedu.address.logic.commands.CommandTestUtil.GROUP_DESC_LAB;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"doyelee0313"},"content":"import static seedu.address.logic.commands.CommandTestUtil.GROUP_DESC_TUTORIAL;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"doyelee0313"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_GROUP_DESC;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_MAJOR_DESC;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TELEGRAM_DESC;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_YEAR_DESC;","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"STELLA-LYE"},"content":"import static seedu.address.logic.commands.CommandTestUtil.MAJOR_DESC_AMY;","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"STELLA-LYE"},"content":"import static seedu.address.logic.commands.CommandTestUtil.MAJOR_DESC_BOB;","lastModifiedDate":"2024-03-18"},{"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":"jocelyn-soh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.REMARK_DESC_OUTSPOKEN;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"jocelyn-soh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.REMARK_DESC_SHY;","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":28,"author":{"gitId":"doyelee0313"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GROUP_LAB;","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"doyelee0313"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GROUP_TUTORIAL;","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"STELLA-LYE"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MAJOR_BOB;","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":33,"author":{"gitId":"jocelyn-soh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_REMARK_OUTSPOKEN;","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_YEAR_BOB;","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.YEAR_DESC_AMY;","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.YEAR_DESC_BOB;","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":39,"author":{"gitId":"STELLA-LYE"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MAJOR;","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":42,"author":{"gitId":"jocelyn-soh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_YEAR;","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":46,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":47,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":53,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15"},{"lineNumber":54,"author":{"gitId":"doyelee0313"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15"},{"lineNumber":56,"author":{"gitId":"STELLA-LYE"},"content":"import seedu.address.model.person.Major;","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-06-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":63,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","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_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":67,"author":{"gitId":"doyelee0313"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withRemark(VALID_REMARK_OUTSPOKEN)","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"doyelee0313"},"content":" .withGroups(VALID_GROUP_TUTORIAL)","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"jocelyn-soh"},"content":" .build();","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":73,"author":{"gitId":"doyelee0313"},"content":" + YEAR_DESC_BOB + MAJOR_DESC_BOB + TELEGRAM_DESC_BOB","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"doyelee0313"},"content":" + REMARK_DESC_OUTSPOKEN + GROUP_DESC_TUTORIAL,","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"tohlh"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":78,"author":{"gitId":"doyelee0313"},"content":" // multiple groups - all accepted","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"doyelee0313"},"content":" Person expectedPersonMultipleGroups \u003d new PersonBuilder(BOB).withRemark(VALID_REMARK_OUTSPOKEN).withGroups(","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"doyelee0313"},"content":" VALID_GROUP_TUTORIAL, VALID_GROUP_LAB)","lastModifiedDate":"2024-03-20"},{"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":"STELLA-LYE"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + YEAR_DESC_BOB + MAJOR_DESC_BOB","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"doyelee0313"},"content":" + TELEGRAM_DESC_BOB + REMARK_DESC_OUTSPOKEN + GROUP_DESC_LAB + GROUP_DESC_TUTORIAL,","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"doyelee0313"},"content":" new AddCommand(expectedPersonMultipleGroups));","lastModifiedDate":"2024-03-20"},{"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":"doyelee0313"},"content":" public void parse_repeatedNonGroupValue_failure() {","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"tohlh"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + YEAR_DESC_BOB","lastModifiedDate":"2024-03-13"},{"lineNumber":91,"author":{"gitId":"doyelee0313"},"content":" + TELEGRAM_DESC_BOB + MAJOR_DESC_BOB + REMARK_DESC_OUTSPOKEN + GROUP_DESC_TUTORIAL;","lastModifiedDate":"2024-03-20"},{"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":"tohlh"},"content":" // multiple years","lastModifiedDate":"2024-03-15"},{"lineNumber":106,"author":{"gitId":"tohlh"},"content":" assertParseFailure(parser, YEAR_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-15"},{"lineNumber":107,"author":{"gitId":"tohlh"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_YEAR));","lastModifiedDate":"2024-03-15"},{"lineNumber":108,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":109,"author":{"gitId":"STELLA-LYE"},"content":" // multiple majors","lastModifiedDate":"2024-03-18"},{"lineNumber":110,"author":{"gitId":"STELLA-LYE"},"content":" assertParseFailure(parser, MAJOR_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"STELLA-LYE"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_MAJOR));","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":113,"author":{"gitId":"tohlh"},"content":" // multiple telegrams","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"tohlh"},"content":" assertParseFailure(parser, TELEGRAM_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"tohlh"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TELEGRAM));","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":117,"author":{"gitId":"jocelyn-soh"},"content":" // multiple remarks","lastModifiedDate":"2024-03-19"},{"lineNumber":118,"author":{"gitId":"jocelyn-soh"},"content":" assertParseFailure(parser, REMARK_DESC_SHY + validExpectedPersonString,","lastModifiedDate":"2024-03-19"},{"lineNumber":119,"author":{"gitId":"jocelyn-soh"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_REMARK));","lastModifiedDate":"2024-03-19"},{"lineNumber":120,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":124,"author":{"gitId":"STELLA-LYE"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY + MAJOR_DESC_AMY","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"-"},"content":" + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":126,"author":{"gitId":"STELLA-LYE"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_MAJOR, PREFIX_EMAIL, PREFIX_YEAR,","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"jocelyn-soh"},"content":" PREFIX_TELEGRAM, PREFIX_REMARK, PREFIX_PHONE));","lastModifiedDate":"2024-03-19"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":137,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":139,"author":{"gitId":"tohlh"},"content":" // invalid year","lastModifiedDate":"2024-03-15"},{"lineNumber":140,"author":{"gitId":"tohlh"},"content":" assertParseFailure(parser, INVALID_YEAR_DESC + validExpectedPersonString,","lastModifiedDate":"2024-03-15"},{"lineNumber":141,"author":{"gitId":"tohlh"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_YEAR));","lastModifiedDate":"2024-03-15"},{"lineNumber":142,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":143,"author":{"gitId":"tohlh"},"content":" // invalid telegram","lastModifiedDate":"2024-03-17"},{"lineNumber":144,"author":{"gitId":"tohlh"},"content":" assertParseFailure(parser, INVALID_TELEGRAM_DESC + validExpectedPersonString,","lastModifiedDate":"2024-03-17"},{"lineNumber":145,"author":{"gitId":"tohlh"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TELEGRAM));","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":147,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":149,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":151,"author":{"gitId":"STELLA-LYE"},"content":" // invalid major","lastModifiedDate":"2024-03-17"},{"lineNumber":152,"author":{"gitId":"STELLA-LYE"},"content":" assertParseFailure(parser, INVALID_MAJOR_DESC + validExpectedPersonString,","lastModifiedDate":"2024-03-17"},{"lineNumber":153,"author":{"gitId":"STELLA-LYE"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_MAJOR));","lastModifiedDate":"2024-03-17"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":156,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":158,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":159,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":160,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":162,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":163,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":164,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":166,"author":{"gitId":"tohlh"},"content":" // invalid year","lastModifiedDate":"2024-03-15"},{"lineNumber":167,"author":{"gitId":"tohlh"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_YEAR_DESC,","lastModifiedDate":"2024-03-15"},{"lineNumber":168,"author":{"gitId":"tohlh"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_YEAR));","lastModifiedDate":"2024-03-15"},{"lineNumber":169,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":170,"author":{"gitId":"tohlh"},"content":" // invalid telegram","lastModifiedDate":"2024-03-17"},{"lineNumber":171,"author":{"gitId":"tohlh"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_TELEGRAM_DESC,","lastModifiedDate":"2024-03-17"},{"lineNumber":172,"author":{"gitId":"tohlh"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TELEGRAM));","lastModifiedDate":"2024-03-17"},{"lineNumber":173,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":174,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":175,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":176,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":178,"author":{"gitId":"STELLA-LYE"},"content":" // invalid major","lastModifiedDate":"2024-03-17"},{"lineNumber":179,"author":{"gitId":"STELLA-LYE"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_MAJOR_DESC,","lastModifiedDate":"2024-03-17"},{"lineNumber":180,"author":{"gitId":"STELLA-LYE"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_MAJOR));","lastModifiedDate":"2024-03-17"},{"lineNumber":181,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":184,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":185,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":186,"author":{"gitId":"doyelee0313"},"content":" // no remark and zero groups","lastModifiedDate":"2024-03-20"},{"lineNumber":187,"author":{"gitId":"doyelee0313"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withRemark(\"\").withGroups().build();","lastModifiedDate":"2024-03-20"},{"lineNumber":188,"author":{"gitId":"tohlh"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + YEAR_DESC_AMY","lastModifiedDate":"2024-03-17"},{"lineNumber":189,"author":{"gitId":"STELLA-LYE"},"content":" + TELEGRAM_DESC_AMY + MAJOR_DESC_AMY, new AddCommand(expectedPerson));","lastModifiedDate":"2024-03-18"},{"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_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":194,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":196,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":197,"author":{"gitId":"tohlh"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-13"},{"lineNumber":198,"author":{"gitId":"STELLA-LYE"},"content":" + YEAR_DESC_BOB + TELEGRAM_DESC_BOB + MAJOR_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-03-18"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":200,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":201,"author":{"gitId":"tohlh"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-13"},{"lineNumber":202,"author":{"gitId":"STELLA-LYE"},"content":" + YEAR_DESC_BOB + TELEGRAM_DESC_BOB + MAJOR_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-03-18"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":204,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":205,"author":{"gitId":"tohlh"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB","lastModifiedDate":"2024-03-13"},{"lineNumber":206,"author":{"gitId":"STELLA-LYE"},"content":" + YEAR_DESC_BOB + TELEGRAM_DESC_BOB + MAJOR_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-03-18"},{"lineNumber":207,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":208,"author":{"gitId":"tohlh"},"content":" // missing year prefix","lastModifiedDate":"2024-03-13"},{"lineNumber":209,"author":{"gitId":"tohlh"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB","lastModifiedDate":"2024-03-13"},{"lineNumber":210,"author":{"gitId":"STELLA-LYE"},"content":" + VALID_YEAR_BOB + TELEGRAM_DESC_BOB + MAJOR_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-03-18"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":212,"author":{"gitId":"tohlh"},"content":" // missing telegram prefix","lastModifiedDate":"2024-03-17"},{"lineNumber":213,"author":{"gitId":"tohlh"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB","lastModifiedDate":"2024-03-17"},{"lineNumber":214,"author":{"gitId":"STELLA-LYE"},"content":" + YEAR_DESC_BOB + VALID_TELEGRAM_BOB + MAJOR_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-03-18"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":216,"author":{"gitId":"STELLA-LYE"},"content":" // missing major prefix","lastModifiedDate":"2024-03-17"},{"lineNumber":217,"author":{"gitId":"tohlh"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-13"},{"lineNumber":218,"author":{"gitId":"STELLA-LYE"},"content":" + YEAR_DESC_BOB + VALID_TELEGRAM_BOB + VALID_MAJOR_BOB, expectedMessage);","lastModifiedDate":"2024-03-18"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":220,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15"},{"lineNumber":221,"author":{"gitId":"tohlh"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB","lastModifiedDate":"2024-03-13"},{"lineNumber":222,"author":{"gitId":"STELLA-LYE"},"content":" + VALID_YEAR_BOB + VALID_TELEGRAM_BOB + VALID_MAJOR_BOB, expectedMessage);","lastModifiedDate":"2024-03-18"},{"lineNumber":223,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":225,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":226,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":227,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":228,"author":{"gitId":"STELLA-LYE"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + MAJOR_DESC_BOB","lastModifiedDate":"2024-03-18"},{"lineNumber":229,"author":{"gitId":"doyelee0313"},"content":" + YEAR_DESC_BOB + TELEGRAM_DESC_BOB + GROUP_DESC_LAB + GROUP_DESC_TUTORIAL, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-20"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":231,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15"},{"lineNumber":232,"author":{"gitId":"STELLA-LYE"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + MAJOR_DESC_BOB","lastModifiedDate":"2024-03-18"},{"lineNumber":233,"author":{"gitId":"doyelee0313"},"content":" + YEAR_DESC_BOB + TELEGRAM_DESC_BOB + GROUP_DESC_LAB + GROUP_DESC_TUTORIAL, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-20"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":235,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15"},{"lineNumber":236,"author":{"gitId":"STELLA-LYE"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + MAJOR_DESC_BOB","lastModifiedDate":"2024-03-18"},{"lineNumber":237,"author":{"gitId":"doyelee0313"},"content":" + YEAR_DESC_BOB + TELEGRAM_DESC_BOB + GROUP_DESC_LAB + GROUP_DESC_TUTORIAL, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-20"},{"lineNumber":238,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":239,"author":{"gitId":"tohlh"},"content":" // invalid year","lastModifiedDate":"2024-03-13"},{"lineNumber":240,"author":{"gitId":"STELLA-LYE"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + MAJOR_DESC_BOB","lastModifiedDate":"2024-03-17"},{"lineNumber":241,"author":{"gitId":"doyelee0313"},"content":" + INVALID_YEAR_DESC + TELEGRAM_DESC_BOB + GROUP_DESC_LAB + GROUP_DESC_TUTORIAL,","lastModifiedDate":"2024-03-20"},{"lineNumber":242,"author":{"gitId":"tohlh"},"content":" Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":244,"author":{"gitId":"tohlh"},"content":" // invalid telegram","lastModifiedDate":"2024-03-17"},{"lineNumber":245,"author":{"gitId":"STELLA-LYE"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + MAJOR_DESC_BOB","lastModifiedDate":"2024-03-18"},{"lineNumber":246,"author":{"gitId":"doyelee0313"},"content":" + YEAR_DESC_BOB + INVALID_TELEGRAM_DESC + GROUP_DESC_LAB + GROUP_DESC_TUTORIAL,","lastModifiedDate":"2024-03-20"},{"lineNumber":247,"author":{"gitId":"tohlh"},"content":" Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":249,"author":{"gitId":"STELLA-LYE"},"content":" // invalid major","lastModifiedDate":"2024-03-17"},{"lineNumber":250,"author":{"gitId":"STELLA-LYE"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_MAJOR_DESC","lastModifiedDate":"2024-03-17"},{"lineNumber":251,"author":{"gitId":"doyelee0313"},"content":" + YEAR_DESC_BOB + GROUP_DESC_LAB + GROUP_DESC_TUTORIAL, Major.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-20"},{"lineNumber":252,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":253,"author":{"gitId":"doyelee0313"},"content":" // invalid group","lastModifiedDate":"2024-03-20"},{"lineNumber":254,"author":{"gitId":"STELLA-LYE"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + MAJOR_DESC_BOB","lastModifiedDate":"2024-03-17"},{"lineNumber":255,"author":{"gitId":"doyelee0313"},"content":" + YEAR_DESC_BOB + TELEGRAM_DESC_BOB + INVALID_GROUP_DESC + VALID_GROUP_TUTORIAL,","lastModifiedDate":"2024-03-20"},{"lineNumber":256,"author":{"gitId":"doyelee0313"},"content":" Group.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-20"},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":258,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":259,"author":{"gitId":"STELLA-LYE"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_MAJOR_DESC","lastModifiedDate":"2024-03-18"},{"lineNumber":260,"author":{"gitId":"tohlh"},"content":" + YEAR_DESC_BOB, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":261,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":262,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":264,"author":{"gitId":"doyelee0313"},"content":" + MAJOR_DESC_BOB + TELEGRAM_DESC_BOB + GROUP_DESC_LAB + GROUP_DESC_TUTORIAL,","lastModifiedDate":"2024-03-20"},{"lineNumber":265,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":266,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":268,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"doyelee0313":29,"STELLA-LYE":38,"-":138,"jocelyn-soh":10,"tohlh":53}},{"path":"src/test/java/seedu/address/logic/parser/AddGroupCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"tohlh"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-23"},{"lineNumber":2,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":3,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-23"},{"lineNumber":4,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GROUP_TUTORIAL;","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"tohlh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-23"},{"lineNumber":9,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"tohlh"},"content":"import seedu.address.logic.commands.AddGroupCommand;","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"tohlh"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"tohlh"},"content":"public class AddGroupCommandParserTest {","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"tohlh"},"content":" private AddGroupCommandParser parser \u003d new AddGroupCommandParser();","lastModifiedDate":"2024-03-23"},{"lineNumber":15,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":16,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"tohlh"},"content":" public void parse_validArgs_returnsAddGroupCommand() {","lastModifiedDate":"2024-03-23"},{"lineNumber":18,"author":{"gitId":"tohlh"},"content":" assertParseSuccess(parser, \" g/TUT04\", new AddGroupCommand(new Group(VALID_GROUP_TUTORIAL)));","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"tohlh"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"tohlh"},"content":" assertParseFailure(parser, \" a\",","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"tohlh"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddGroupCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":27,"author":{"gitId":"tohlh"},"content":"}","lastModifiedDate":"2024-03-23"}],"authorContributionMap":{"tohlh":27}},{"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":"tohlh"},"content":"import seedu.address.logic.commands.AddGroupCommand;","lastModifiedDate":"2024-03-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":20,"author":{"gitId":"tohlh"},"content":"import seedu.address.logic.commands.DeleteGroupCommand;","lastModifiedDate":"2024-03-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-06-27"},{"lineNumber":23,"author":{"gitId":"tohlh"},"content":"import seedu.address.logic.commands.EditGroupCommand;","lastModifiedDate":"2024-03-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":25,"author":{"gitId":"STELLA-LYE"},"content":"import seedu.address.logic.commands.FilterCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27"},{"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":"STELLA-LYE"},"content":"import seedu.address.logic.commands.MailCommand;","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24"},{"lineNumber":31,"author":{"gitId":"tohlh"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-24"},{"lineNumber":32,"author":{"gitId":"STELLA-LYE"},"content":"import seedu.address.model.group.GroupContainsKeywordsPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","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_delete() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2017-06-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command);","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-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2018-03-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":72,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":73,"author":{"gitId":"tohlh"},"content":" public void parseCommand_addGroup() throws Exception {","lastModifiedDate":"2024-03-24"},{"lineNumber":74,"author":{"gitId":"tohlh"},"content":" AddGroupCommand command \u003d (AddGroupCommand) parser.parseCommand(AddGroupCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2024-03-24"},{"lineNumber":75,"author":{"gitId":"tohlh"},"content":" + \"g/TUT01\");","lastModifiedDate":"2024-03-24"},{"lineNumber":76,"author":{"gitId":"tohlh"},"content":" assertEquals(new AddGroupCommand(new Group(\"TUT01\")), command);","lastModifiedDate":"2024-03-24"},{"lineNumber":77,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":78,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":79,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":80,"author":{"gitId":"tohlh"},"content":" public void parseCommand_deleteGroup() throws Exception {","lastModifiedDate":"2024-03-24"},{"lineNumber":81,"author":{"gitId":"tohlh"},"content":" DeleteGroupCommand command \u003d (DeleteGroupCommand) parser.parseCommand(DeleteGroupCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2024-03-24"},{"lineNumber":82,"author":{"gitId":"tohlh"},"content":" + \"g/TUT01\");","lastModifiedDate":"2024-03-24"},{"lineNumber":83,"author":{"gitId":"tohlh"},"content":" assertEquals(new DeleteGroupCommand(new Group(\"TUT01\")), command);","lastModifiedDate":"2024-03-24"},{"lineNumber":84,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":85,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":86,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":87,"author":{"gitId":"tohlh"},"content":" public void parseCommand_editGroup() throws Exception {","lastModifiedDate":"2024-03-24"},{"lineNumber":88,"author":{"gitId":"tohlh"},"content":" EditGroupCommand command \u003d (EditGroupCommand) parser.parseCommand(EditGroupCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2024-03-24"},{"lineNumber":89,"author":{"gitId":"tohlh"},"content":" + \"g/TUT01 tg/https://t.me/abcdefg\");","lastModifiedDate":"2024-03-24"},{"lineNumber":90,"author":{"gitId":"tohlh"},"content":" assertEquals(new EditGroupCommand(new Group(\"TUT01\"), \"https://t.me/abcdefg\"), command);","lastModifiedDate":"2024-03-24"},{"lineNumber":91,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"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_exit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","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":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":100,"author":{"gitId":"STELLA-LYE"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":101,"author":{"gitId":"STELLA-LYE"},"content":" public void parseCommand_filter() throws Exception {","lastModifiedDate":"2024-03-21"},{"lineNumber":102,"author":{"gitId":"STELLA-LYE"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"TUT01\", \"LAB02\", \"REC03\");","lastModifiedDate":"2024-03-21"},{"lineNumber":103,"author":{"gitId":"STELLA-LYE"},"content":" FilterCommand command \u003d (FilterCommand) parser.parseCommand(","lastModifiedDate":"2024-03-21"},{"lineNumber":104,"author":{"gitId":"STELLA-LYE"},"content":" FilterCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2024-03-21"},{"lineNumber":105,"author":{"gitId":"STELLA-LYE"},"content":" assertEquals(new FilterCommand(new GroupContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2024-03-21"},{"lineNumber":106,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":107,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":110,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12"},{"lineNumber":111,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":112,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":128,"author":{"gitId":"STELLA-LYE"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":129,"author":{"gitId":"STELLA-LYE"},"content":" public void parseCommand_mail() throws Exception {","lastModifiedDate":"2024-03-23"},{"lineNumber":130,"author":{"gitId":"STELLA-LYE"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"TUT01\", \"LAB02\", \"REC03\");","lastModifiedDate":"2024-03-23"},{"lineNumber":131,"author":{"gitId":"STELLA-LYE"},"content":" MailCommand command \u003d (MailCommand) parser.parseCommand(","lastModifiedDate":"2024-03-23"},{"lineNumber":132,"author":{"gitId":"STELLA-LYE"},"content":" MailCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2024-03-23"},{"lineNumber":133,"author":{"gitId":"STELLA-LYE"},"content":" assertEquals(new MailCommand(new GroupContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2024-03-23"},{"lineNumber":134,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":135,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":137,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":143,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":146,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"STELLA-LYE":20,"-":102,"tohlh":24}},{"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":"-"},"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":"doyelee0313"},"content":" String argsString \u003d \" some random string /g group with leading and trailing spaces \";","lastModifiedDate":"2024-03-20"},{"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":{"doyelee0313":1,"-":149}},{"path":"src/test/java/seedu/address/logic/parser/DeleteGroupCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"tohlh"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-24"},{"lineNumber":2,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":3,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-24"},{"lineNumber":4,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GROUP_TUTORIAL;","lastModifiedDate":"2024-03-24"},{"lineNumber":5,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-24"},{"lineNumber":6,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-24"},{"lineNumber":7,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":8,"author":{"gitId":"tohlh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-24"},{"lineNumber":9,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":10,"author":{"gitId":"tohlh"},"content":"import seedu.address.logic.commands.DeleteGroupCommand;","lastModifiedDate":"2024-03-24"},{"lineNumber":11,"author":{"gitId":"tohlh"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-24"},{"lineNumber":12,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":13,"author":{"gitId":"tohlh"},"content":"public class DeleteGroupCommandParserTest {","lastModifiedDate":"2024-03-24"},{"lineNumber":14,"author":{"gitId":"tohlh"},"content":" private DeleteGroupCommandParser parser \u003d new DeleteGroupCommandParser();","lastModifiedDate":"2024-03-24"},{"lineNumber":15,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":16,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":17,"author":{"gitId":"tohlh"},"content":" public void parse_validArgs_returnsDeleteGroupCommand() {","lastModifiedDate":"2024-03-24"},{"lineNumber":18,"author":{"gitId":"tohlh"},"content":" assertParseSuccess(parser, \" g/TUT04\", new DeleteGroupCommand(new Group(VALID_GROUP_TUTORIAL)));","lastModifiedDate":"2024-03-24"},{"lineNumber":19,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":20,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":21,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":22,"author":{"gitId":"tohlh"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-24"},{"lineNumber":23,"author":{"gitId":"tohlh"},"content":" assertParseFailure(parser, \" a\",","lastModifiedDate":"2024-03-24"},{"lineNumber":24,"author":{"gitId":"tohlh"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteGroupCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-24"},{"lineNumber":25,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":26,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":27,"author":{"gitId":"tohlh"},"content":"}","lastModifiedDate":"2024-03-24"}],"authorContributionMap":{"tohlh":27}},{"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":"doyelee0313"},"content":"import static seedu.address.logic.commands.CommandTestUtil.GROUP_DESC_LAB;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"doyelee0313"},"content":"import static seedu.address.logic.commands.CommandTestUtil.GROUP_DESC_TUTORIAL;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"doyelee0313"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_GROUP_DESC;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_MAJOR_DESC;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_YEAR_DESC;","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"STELLA-LYE"},"content":"import static seedu.address.logic.commands.CommandTestUtil.MAJOR_DESC_AMY;","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"STELLA-LYE"},"content":"import static seedu.address.logic.commands.CommandTestUtil.MAJOR_DESC_BOB;","lastModifiedDate":"2024-03-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.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","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":"doyelee0313"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GROUP_LAB;","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"doyelee0313"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GROUP_TUTORIAL;","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"STELLA-LYE"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MAJOR_AMY;","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":26,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_YEAR_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.YEAR_DESC_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":29,"author":{"gitId":"doyelee0313"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GROUP;","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"STELLA-LYE"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MAJOR;","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_YEAR;","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-04"},{"lineNumber":45,"author":{"gitId":"doyelee0313"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-04"},{"lineNumber":47,"author":{"gitId":"STELLA-LYE"},"content":"import seedu.address.model.person.Major;","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-04"},{"lineNumber":49,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":54,"author":{"gitId":"doyelee0313"},"content":" private static final String GROUP_EMPTY \u003d \" \" + PREFIX_GROUP;","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","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":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-07-06"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06"},{"lineNumber":75,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":78,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"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":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"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":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2018-09-22"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2018-09-22"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2018-09-22"},{"lineNumber":93,"author":{"gitId":"STELLA-LYE"},"content":" assertParseFailure(parser, \"1\" + INVALID_MAJOR_DESC, Major.MESSAGE_CONSTRAINTS); // invalid major","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"doyelee0313"},"content":" assertParseFailure(parser, \"1\" + INVALID_GROUP_DESC, Group.MESSAGE_CONSTRAINTS); // invalid group","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":96,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":99,"author":{"gitId":"doyelee0313"},"content":" // while parsing {@code PREFIX_GROUP} alone will reset the group of the {@code Person} being edited,","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"doyelee0313"},"content":" // parsing it together with a valid group results in error","lastModifiedDate":"2024-03-20"},{"lineNumber":101,"author":{"gitId":"doyelee0313"},"content":" assertParseFailure(parser, \"1\" + GROUP_DESC_TUTORIAL + GROUP_DESC_LAB + GROUP_EMPTY, Group.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-20"},{"lineNumber":102,"author":{"gitId":"doyelee0313"},"content":" assertParseFailure(parser, \"1\" + GROUP_DESC_TUTORIAL + GROUP_EMPTY + GROUP_DESC_LAB, Group.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-20"},{"lineNumber":103,"author":{"gitId":"doyelee0313"},"content":" assertParseFailure(parser, \"1\" + GROUP_EMPTY + GROUP_DESC_TUTORIAL + GROUP_DESC_LAB, Group.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-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":"STELLA-LYE"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_MAJOR_AMY + VALID_PHONE_AMY,","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":112,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":113,"author":{"gitId":"doyelee0313"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + GROUP_DESC_LAB","lastModifiedDate":"2024-03-20"},{"lineNumber":114,"author":{"gitId":"doyelee0313"},"content":" + EMAIL_DESC_AMY + MAJOR_DESC_AMY + NAME_DESC_AMY + GROUP_DESC_TUTORIAL;","lastModifiedDate":"2024-03-20"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":116,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-05-04"},{"lineNumber":117,"author":{"gitId":"STELLA-LYE"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withMajor(VALID_MAJOR_AMY)","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"doyelee0313"},"content":" .withGroups(VALID_GROUP_LAB, VALID_GROUP_TUTORIAL).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":119,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":124,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":125,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":126,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":127,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":129,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-04"},{"lineNumber":130,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":131,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"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_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":138,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04"},{"lineNumber":139,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":140,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":141,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_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":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":145,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2017-05-04"},{"lineNumber":146,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":147,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":148,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":151,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04"},{"lineNumber":152,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":153,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":154,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":155,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":157,"author":{"gitId":"tohlh"},"content":" // year","lastModifiedDate":"2024-03-15"},{"lineNumber":158,"author":{"gitId":"tohlh"},"content":" userInput \u003d targetIndex.getOneBased() + YEAR_DESC_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":159,"author":{"gitId":"tohlh"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withYear(VALID_YEAR_AMY).build();","lastModifiedDate":"2024-03-15"},{"lineNumber":160,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-15"},{"lineNumber":161,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-15"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":163,"author":{"gitId":"STELLA-LYE"},"content":" // major","lastModifiedDate":"2024-03-17"},{"lineNumber":164,"author":{"gitId":"STELLA-LYE"},"content":" userInput \u003d targetIndex.getOneBased() + MAJOR_DESC_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":165,"author":{"gitId":"STELLA-LYE"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withMajor(VALID_MAJOR_AMY).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":166,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":167,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":169,"author":{"gitId":"doyelee0313"},"content":" // groups","lastModifiedDate":"2024-03-20"},{"lineNumber":170,"author":{"gitId":"doyelee0313"},"content":" userInput \u003d targetIndex.getOneBased() + GROUP_DESC_TUTORIAL;","lastModifiedDate":"2024-03-20"},{"lineNumber":171,"author":{"gitId":"doyelee0313"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withGroups(VALID_GROUP_TUTORIAL).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":172,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":173,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"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":"doyelee0313"},"content":" // AddCommandParserTest#parse_repeatedNonGroupValue_failure()","lastModifiedDate":"2024-03-20"},{"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":"-"},"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":" // invalid followed by valid","lastModifiedDate":"2023-07-14"},{"lineNumber":188,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2023-07-14"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":190,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":192,"author":{"gitId":"-"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":193,"author":{"gitId":"STELLA-LYE"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY + MAJOR_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2024-03-17"},{"lineNumber":194,"author":{"gitId":"doyelee0313"},"content":" + GROUP_DESC_TUTORIAL + PHONE_DESC_AMY + MAJOR_DESC_AMY + EMAIL_DESC_AMY + GROUP_DESC_TUTORIAL","lastModifiedDate":"2024-03-20"},{"lineNumber":195,"author":{"gitId":"doyelee0313"},"content":" + PHONE_DESC_BOB + MAJOR_DESC_BOB + EMAIL_DESC_BOB + GROUP_DESC_LAB;","lastModifiedDate":"2024-03-20"},{"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":"STELLA-LYE"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_MAJOR));","lastModifiedDate":"2024-03-17"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":200,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14"},{"lineNumber":201,"author":{"gitId":"STELLA-LYE"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + INVALID_MAJOR_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2024-03-17"},{"lineNumber":202,"author":{"gitId":"STELLA-LYE"},"content":" + INVALID_YEAR_DESC + INVALID_PHONE_DESC + INVALID_MAJOR_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2024-03-17"},{"lineNumber":203,"author":{"gitId":"tohlh"},"content":" + INVALID_YEAR_DESC;","lastModifiedDate":"2024-03-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":"STELLA-LYE"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_MAJOR, PREFIX_YEAR));","lastModifiedDate":"2024-03-17"},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":209,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":210,"author":{"gitId":"doyelee0313"},"content":" public void parse_resetGroups_success() {","lastModifiedDate":"2024-03-20"},{"lineNumber":211,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25"},{"lineNumber":212,"author":{"gitId":"doyelee0313"},"content":" String userInput \u003d targetIndex.getOneBased() + GROUP_EMPTY;","lastModifiedDate":"2024-03-20"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":214,"author":{"gitId":"doyelee0313"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withGroups().build();","lastModifiedDate":"2024-03-20"},{"lineNumber":215,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":217,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":218,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":219,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04"}],"authorContributionMap":{"doyelee0313":26,"STELLA-LYE":17,"-":168,"tohlh":8}},{"path":"src/test/java/seedu/address/logic/parser/EditGroupCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"tohlh"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-24"},{"lineNumber":2,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":3,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-24"},{"lineNumber":4,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GROUP_TUTORIAL;","lastModifiedDate":"2024-03-24"},{"lineNumber":5,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_LINK;","lastModifiedDate":"2024-03-24"},{"lineNumber":6,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-24"},{"lineNumber":7,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-24"},{"lineNumber":8,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":9,"author":{"gitId":"tohlh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-24"},{"lineNumber":10,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":11,"author":{"gitId":"tohlh"},"content":"import seedu.address.logic.commands.EditGroupCommand;","lastModifiedDate":"2024-03-24"},{"lineNumber":12,"author":{"gitId":"tohlh"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-24"},{"lineNumber":13,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":14,"author":{"gitId":"tohlh"},"content":"public class EditGroupCommandParserTest {","lastModifiedDate":"2024-03-24"},{"lineNumber":15,"author":{"gitId":"tohlh"},"content":" private EditGroupCommandParser parser \u003d new EditGroupCommandParser();","lastModifiedDate":"2024-03-24"},{"lineNumber":16,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":17,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":18,"author":{"gitId":"tohlh"},"content":" public void parse_validArgs_returnsEditGroupCommand() {","lastModifiedDate":"2024-03-24"},{"lineNumber":19,"author":{"gitId":"tohlh"},"content":" assertParseSuccess(parser, \" g/TUT04 tg/https://t.me/abcdefg\",","lastModifiedDate":"2024-03-24"},{"lineNumber":20,"author":{"gitId":"tohlh"},"content":" new EditGroupCommand(new Group(VALID_GROUP_TUTORIAL), VALID_TELEGRAM_LINK));","lastModifiedDate":"2024-03-24"},{"lineNumber":21,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":22,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":23,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":24,"author":{"gitId":"tohlh"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-24"},{"lineNumber":25,"author":{"gitId":"tohlh"},"content":" assertParseFailure(parser, \" g/abcd tg/https://t.me/abcdef\", Group.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-24"},{"lineNumber":26,"author":{"gitId":"tohlh"},"content":" assertParseFailure(parser, \" g/TUT01 tg/www.google.com\", Group.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-24"},{"lineNumber":27,"author":{"gitId":"tohlh"},"content":" assertParseFailure(parser, \" a\",","lastModifiedDate":"2024-03-24"},{"lineNumber":28,"author":{"gitId":"tohlh"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditGroupCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-24"},{"lineNumber":29,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":30,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":31,"author":{"gitId":"tohlh"},"content":"}","lastModifiedDate":"2024-03-24"}],"authorContributionMap":{"tohlh":31}},{"path":"src/test/java/seedu/address/logic/parser/FilterCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"STELLA-LYE"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"STELLA-LYE"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"STELLA-LYE"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"STELLA-LYE"},"content":"import seedu.address.logic.commands.FilterCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"STELLA-LYE"},"content":"import seedu.address.model.group.GroupContainsKeywordsPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"STELLA-LYE"},"content":"public class FilterCommandParserTest {","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"STELLA-LYE"},"content":" private FilterCommandParser parser \u003d new FilterCommandParser();","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"STELLA-LYE"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"STELLA-LYE"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"STELLA-LYE"},"content":" assertParseFailure(parser, \" \", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"STELLA-LYE"},"content":" FilterCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"STELLA-LYE"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"STELLA-LYE"},"content":" public void parse_validArgs_returnsFilterCommand() {","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"STELLA-LYE"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"STELLA-LYE"},"content":" FilterCommand expectedFilterCommand \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"STELLA-LYE"},"content":" new FilterCommand(new GroupContainsKeywordsPredicate(Arrays.asList(\"TUT10\", \"LAB05\")));","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"STELLA-LYE"},"content":" assertParseSuccess(parser, \"TUT10 LAB05\", expectedFilterCommand);","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"STELLA-LYE"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"STELLA-LYE"},"content":" assertParseSuccess(parser, \" \\n TUT10 \\n \\t LAB05 \\t\", expectedFilterCommand);","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"STELLA-LYE":34}},{"path":"src/test/java/seedu/address/logic/parser/MailCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"STELLA-LYE"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-23"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-23"},{"lineNumber":4,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":9,"author":{"gitId":"STELLA-LYE"},"content":"import seedu.address.logic.commands.MailCommand;","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":"import seedu.address.model.group.GroupContainsKeywordsPredicate;","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"STELLA-LYE"},"content":"public class MailCommandParserTest {","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"STELLA-LYE"},"content":" private MailCommandParser parser \u003d new MailCommandParser();","lastModifiedDate":"2024-03-23"},{"lineNumber":15,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":16,"author":{"gitId":"STELLA-LYE"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"STELLA-LYE"},"content":" public void parse_validArgs_returnsFilterCommand() {","lastModifiedDate":"2024-03-23"},{"lineNumber":18,"author":{"gitId":"STELLA-LYE"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"STELLA-LYE"},"content":" MailCommand expectedMailCommand \u003d","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"STELLA-LYE"},"content":" new MailCommand(new GroupContainsKeywordsPredicate(Arrays.asList(\"TUT10\", \"LAB05\")));","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"STELLA-LYE"},"content":" assertParseSuccess(parser, \"TUT10 LAB05\", expectedMailCommand);","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"STELLA-LYE"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"STELLA-LYE"},"content":" assertParseSuccess(parser, \" \\n TUT10 \\n \\t LAB05 \\t\", expectedMailCommand);","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-03-23"}],"authorContributionMap":{"STELLA-LYE":26}},{"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":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":17,"author":{"gitId":"doyelee0313"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-22"},{"lineNumber":19,"author":{"gitId":"STELLA-LYE"},"content":"import seedu.address.model.person.Major;","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-22"},{"lineNumber":22,"author":{"gitId":"jocelyn-soh"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"tohlh"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-03-17"},{"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":"STELLA-LYE"},"content":" private static final String INVALID_MAJOR \u003d \" \";","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":30,"author":{"gitId":"tohlh"},"content":" private static final String INVALID_YEAR \u003d \"7\";","lastModifiedDate":"2024-03-15"},{"lineNumber":31,"author":{"gitId":"tohlh"},"content":" private static final String INVALID_TELEGRAM \u003d \"inval!d\";","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"doyelee0313"},"content":" private static final String INVALID_GROUP \u003d \"TUT93828\";","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d \"123456\";","lastModifiedDate":"2017-05-22"},{"lineNumber":36,"author":{"gitId":"STELLA-LYE"},"content":" private static final String VALID_MAJOR \u003d \"Computer Science\";","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":38,"author":{"gitId":"tohlh"},"content":" private static final String VALID_YEAR \u003d \"7\";","lastModifiedDate":"2024-03-15"},{"lineNumber":39,"author":{"gitId":"tohlh"},"content":" private static final String VALID_TELEGRAM \u003d \"telegram\";","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"jocelyn-soh"},"content":" private static final String VALID_REMARK \u003d \"shy\";","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"doyelee0313"},"content":" private static final String VALID_GROUP_1 \u003d \"TUT04\";","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"doyelee0313"},"content":" private static final String VALID_GROUP_2 \u003d \"LAB10\";","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","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_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23"},{"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-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2017-05-25"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2017-05-25"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":78,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":84,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29"},{"lineNumber":85,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void parsePhone_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePhone((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":95,"author":{"gitId":"-"},"content":" public void parsePhone_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhone(INVALID_PHONE));","lastModifiedDate":"2019-03-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":101,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-22"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(VALID_PHONE));","lastModifiedDate":"2017-05-30"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithWhitespace_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":107,"author":{"gitId":"-"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":108,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-30"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(phoneWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":113,"author":{"gitId":"STELLA-LYE"},"content":" public void parseMajor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"STELLA-LYE"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseMajor((String) null));","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":118,"author":{"gitId":"STELLA-LYE"},"content":" public void parseMajor_invalidValue_throwsParseException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":119,"author":{"gitId":"STELLA-LYE"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseMajor(INVALID_MAJOR));","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":123,"author":{"gitId":"STELLA-LYE"},"content":" public void parseMajor_validValueWithoutWhitespace_returnsMajor() throws Exception {","lastModifiedDate":"2024-03-18"},{"lineNumber":124,"author":{"gitId":"STELLA-LYE"},"content":" Major expectedMajor \u003d new Major(VALID_MAJOR);","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"STELLA-LYE"},"content":" assertEquals(expectedMajor, ParserUtil.parseMajor(VALID_MAJOR));","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":129,"author":{"gitId":"STELLA-LYE"},"content":" public void parseMajor_validValueWithWhitespace_returnsTrimmedMajor() throws Exception {","lastModifiedDate":"2024-03-18"},{"lineNumber":130,"author":{"gitId":"STELLA-LYE"},"content":" String majorWithWhitespace \u003d WHITESPACE + VALID_MAJOR + WHITESPACE;","lastModifiedDate":"2024-03-18"},{"lineNumber":131,"author":{"gitId":"STELLA-LYE"},"content":" Major expectedMajor \u003d new Major(VALID_MAJOR);","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"STELLA-LYE"},"content":" assertEquals(expectedMajor, ParserUtil.parseMajor(majorWithWhitespace));","lastModifiedDate":"2024-03-18"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":136,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":140,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":141,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":145,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":146,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":147,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22"},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"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 parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":153,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":154,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30"},{"lineNumber":155,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":158,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":159,"author":{"gitId":"tohlh"},"content":" public void parseYear_invalidValue_throwsParseException() {","lastModifiedDate":"2024-03-15"},{"lineNumber":160,"author":{"gitId":"tohlh"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseYear(INVALID_YEAR));","lastModifiedDate":"2024-03-15"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":163,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":164,"author":{"gitId":"tohlh"},"content":" public void parseYear_null_throwsNullPointerException() throws Exception {","lastModifiedDate":"2024-03-15"},{"lineNumber":165,"author":{"gitId":"tohlh"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseYear(null));","lastModifiedDate":"2024-03-15"},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":168,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":169,"author":{"gitId":"tohlh"},"content":" public void parseTelegram_invalidTelegram_throwsParseException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":170,"author":{"gitId":"tohlh"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTelegram(INVALID_TELEGRAM));","lastModifiedDate":"2024-03-17"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":173,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":174,"author":{"gitId":"tohlh"},"content":" public void parseTelegram_null_throwsNullPointerException() throws Exception {","lastModifiedDate":"2024-03-17"},{"lineNumber":175,"author":{"gitId":"tohlh"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTelegram(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":178,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":179,"author":{"gitId":"tohlh"},"content":" public void parseTelegram_validValueWithoutWhitespace_returnsTelegram() throws Exception {","lastModifiedDate":"2024-03-17"},{"lineNumber":180,"author":{"gitId":"tohlh"},"content":" Telegram expectedTelegram \u003d new Telegram(VALID_TELEGRAM);","lastModifiedDate":"2024-03-17"},{"lineNumber":181,"author":{"gitId":"tohlh"},"content":" assertEquals(expectedTelegram, ParserUtil.parseTelegram(VALID_TELEGRAM));","lastModifiedDate":"2024-03-17"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":184,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":185,"author":{"gitId":"tohlh"},"content":" public void parseTelegram_validValueWithWhitespace_returnsTrimmedTelegram() throws Exception {","lastModifiedDate":"2024-03-17"},{"lineNumber":186,"author":{"gitId":"tohlh"},"content":" String telegramWithWhitespace \u003d WHITESPACE + VALID_TELEGRAM + WHITESPACE;","lastModifiedDate":"2024-03-17"},{"lineNumber":187,"author":{"gitId":"tohlh"},"content":" Telegram expectedTelegram \u003d new Telegram(VALID_TELEGRAM);","lastModifiedDate":"2024-03-17"},{"lineNumber":188,"author":{"gitId":"tohlh"},"content":" assertEquals(expectedTelegram, ParserUtil.parseTelegram(telegramWithWhitespace));","lastModifiedDate":"2024-03-17"},{"lineNumber":189,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":191,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":192,"author":{"gitId":"jocelyn-soh"},"content":" public void parseRemark_null_throwsNullPointerException() throws Exception {","lastModifiedDate":"2024-03-19"},{"lineNumber":193,"author":{"gitId":"jocelyn-soh"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseRemark(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":194,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":196,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":197,"author":{"gitId":"jocelyn-soh"},"content":" public void parseRemark_validValueWithoutWhitespace_returnsRemark() throws Exception {","lastModifiedDate":"2024-03-19"},{"lineNumber":198,"author":{"gitId":"jocelyn-soh"},"content":" Remark expectedRemark \u003d new Remark(VALID_REMARK);","lastModifiedDate":"2024-03-19"},{"lineNumber":199,"author":{"gitId":"jocelyn-soh"},"content":" assertEquals(expectedRemark, ParserUtil.parseRemark(VALID_REMARK));","lastModifiedDate":"2024-03-19"},{"lineNumber":200,"author":{"gitId":"jocelyn-soh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":201,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":202,"author":{"gitId":"jocelyn-soh"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":203,"author":{"gitId":"jocelyn-soh"},"content":" public void parseRemark_validValueWithWhitespace_returnsTrimmedRemark() throws Exception {","lastModifiedDate":"2024-03-19"},{"lineNumber":204,"author":{"gitId":"jocelyn-soh"},"content":" String remarkWithWhitespace \u003d WHITESPACE + VALID_REMARK + WHITESPACE;","lastModifiedDate":"2024-03-19"},{"lineNumber":205,"author":{"gitId":"jocelyn-soh"},"content":" Remark expectedRemark \u003d new Remark(VALID_REMARK);","lastModifiedDate":"2024-03-19"},{"lineNumber":206,"author":{"gitId":"jocelyn-soh"},"content":" assertEquals(expectedRemark, ParserUtil.parseRemark(remarkWithWhitespace));","lastModifiedDate":"2024-03-19"},{"lineNumber":207,"author":{"gitId":"jocelyn-soh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":208,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":209,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":210,"author":{"gitId":"doyelee0313"},"content":" public void parseGroup_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":211,"author":{"gitId":"doyelee0313"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseGroup(null));","lastModifiedDate":"2024-03-20"},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":214,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":215,"author":{"gitId":"doyelee0313"},"content":" public void parseGroup_invalidValue_throwsParseException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":216,"author":{"gitId":"doyelee0313"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseGroup(INVALID_GROUP));","lastModifiedDate":"2024-03-20"},{"lineNumber":217,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":219,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":220,"author":{"gitId":"doyelee0313"},"content":" public void parseGroup_validValueWithoutWhitespace_returnsGroup() throws Exception {","lastModifiedDate":"2024-03-20"},{"lineNumber":221,"author":{"gitId":"doyelee0313"},"content":" Group expectedGroup \u003d new Group(VALID_GROUP_1);","lastModifiedDate":"2024-03-20"},{"lineNumber":222,"author":{"gitId":"doyelee0313"},"content":" assertEquals(expectedGroup, ParserUtil.parseGroup(VALID_GROUP_1));","lastModifiedDate":"2024-03-20"},{"lineNumber":223,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":225,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":226,"author":{"gitId":"doyelee0313"},"content":" public void parseGroup_validValueWithWhitespace_returnsTrimmedGroup() throws Exception {","lastModifiedDate":"2024-03-20"},{"lineNumber":227,"author":{"gitId":"doyelee0313"},"content":" String groupWithWhitespace \u003d WHITESPACE + VALID_GROUP_1 + WHITESPACE;","lastModifiedDate":"2024-03-20"},{"lineNumber":228,"author":{"gitId":"doyelee0313"},"content":" Group expectedGroup \u003d new Group(VALID_GROUP_1);","lastModifiedDate":"2024-03-20"},{"lineNumber":229,"author":{"gitId":"doyelee0313"},"content":" assertEquals(expectedGroup, ParserUtil.parseGroup(groupWithWhitespace));","lastModifiedDate":"2024-03-20"},{"lineNumber":230,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":232,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":233,"author":{"gitId":"doyelee0313"},"content":" public void parseGroups_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":234,"author":{"gitId":"doyelee0313"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseGroups(null));","lastModifiedDate":"2024-03-20"},{"lineNumber":235,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":237,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":238,"author":{"gitId":"doyelee0313"},"content":" public void parseGroups_collectionWithInvalidGroups_throwsParseException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":239,"author":{"gitId":"doyelee0313"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseGroups(Arrays.asList(VALID_GROUP_1, INVALID_GROUP)));","lastModifiedDate":"2024-03-20"},{"lineNumber":240,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":242,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":243,"author":{"gitId":"doyelee0313"},"content":" public void parseGroups_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2024-03-20"},{"lineNumber":244,"author":{"gitId":"doyelee0313"},"content":" assertTrue(ParserUtil.parseGroups(Collections.emptyList()).isEmpty());","lastModifiedDate":"2024-03-20"},{"lineNumber":245,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":247,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":248,"author":{"gitId":"doyelee0313"},"content":" public void parseGroups_collectionWithValidGroups_returnsGroupSet() throws Exception {","lastModifiedDate":"2024-03-20"},{"lineNumber":249,"author":{"gitId":"doyelee0313"},"content":" Set\u003cGroup\u003e actualGroupSet \u003d ParserUtil.parseGroups(Arrays.asList(VALID_GROUP_1, VALID_GROUP_2));","lastModifiedDate":"2024-03-20"},{"lineNumber":250,"author":{"gitId":"doyelee0313"},"content":" Set\u003cGroup\u003e expectedGroupSet \u003d new HashSet\u003cGroup\u003e(Arrays.asList(new Group(VALID_GROUP_1),","lastModifiedDate":"2024-03-20"},{"lineNumber":251,"author":{"gitId":"doyelee0313"},"content":" new Group(VALID_GROUP_2)));","lastModifiedDate":"2024-03-20"},{"lineNumber":252,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":253,"author":{"gitId":"doyelee0313"},"content":" assertEquals(expectedGroupSet, actualGroupSet);","lastModifiedDate":"2024-03-20"},{"lineNumber":254,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":255,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22"}],"authorContributionMap":{"doyelee0313":26,"STELLA-LYE":14,"-":179,"jocelyn-soh":16,"tohlh":20}},{"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":"doyelee0313"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GROUP_LAB;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GROUP_TUTORIAL;","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MAJOR_BOB;","lastModifiedDate":"2024-03-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.TypicalPersons.ALICE;","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":"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":"tohlh"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"tohlh"},"content":"import seedu.address.model.group.exceptions.DuplicateGroupException;","lastModifiedDate":"2024-03-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2018-08-07"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-04-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class AddressBookTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2016-12-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2016-12-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), addressBook.getPersonList());","lastModifiedDate":"2016-12-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.resetData(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void resetData_withValidReadOnlyAddressBook_replacesData() {","lastModifiedDate":"2016-12-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" AddressBook newData \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19"},{"lineNumber":45,"author":{"gitId":"-"},"content":" addressBook.resetData(newData);","lastModifiedDate":"2016-12-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertEquals(newData, addressBook);","lastModifiedDate":"2016-12-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void resetData_withDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // Two persons with the same identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":52,"author":{"gitId":"doyelee0313"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withMajor(VALID_MAJOR_BOB).withGroups(VALID_GROUP_LAB)","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-04-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e newPersons \u003d Arrays.asList(ALICE, editedAlice);","lastModifiedDate":"2018-04-19"},{"lineNumber":55,"author":{"gitId":"tohlh"},"content":" List\u003cGroup\u003e newGroups \u003d Arrays.asList(new Group(VALID_GROUP_TUTORIAL), new Group(VALID_GROUP_LAB));","lastModifiedDate":"2024-03-23"},{"lineNumber":56,"author":{"gitId":"tohlh"},"content":" AddressBookStub newData \u003d new AddressBookStub(newPersons, newGroups);","lastModifiedDate":"2024-03-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e addressBook.resetData(newData));","lastModifiedDate":"2019-03-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasPerson(null));","lastModifiedDate":"2019-03-23"},{"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_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertFalse(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_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":73,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void hasPerson_personWithSameIdentityFieldsInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":79,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":80,"author":{"gitId":"doyelee0313"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withMajor(VALID_MAJOR_BOB).withGroups(VALID_GROUP_LAB)","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-06"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(editedAlice));","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":"2017-09-01"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void getPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e addressBook.getPersonList().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":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"tohlh"},"content":" public void resetData_withDuplicateGroups_throwsDuplicatePersonException() {","lastModifiedDate":"2024-03-24"},{"lineNumber":92,"author":{"gitId":"tohlh"},"content":" // Two persons with the same identity fields","lastModifiedDate":"2024-03-24"},{"lineNumber":93,"author":{"gitId":"tohlh"},"content":" List\u003cPerson\u003e newPersons \u003d Arrays.asList(ALICE);","lastModifiedDate":"2024-03-24"},{"lineNumber":94,"author":{"gitId":"tohlh"},"content":" List\u003cGroup\u003e newGroups \u003d Arrays.asList(new Group(VALID_GROUP_TUTORIAL), new Group(VALID_GROUP_TUTORIAL));","lastModifiedDate":"2024-03-24"},{"lineNumber":95,"author":{"gitId":"tohlh"},"content":" AddressBookStub newData \u003d new AddressBookStub(newPersons, newGroups);","lastModifiedDate":"2024-03-24"},{"lineNumber":96,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":97,"author":{"gitId":"tohlh"},"content":" assertThrows(DuplicateGroupException.class, () -\u003e addressBook.resetData(newData));","lastModifiedDate":"2024-03-24"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":100,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":101,"author":{"gitId":"tohlh"},"content":" public void hasGroup_nullGroup_throwsNullPointerException() {","lastModifiedDate":"2024-03-23"},{"lineNumber":102,"author":{"gitId":"tohlh"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasGroup(null));","lastModifiedDate":"2024-03-23"},{"lineNumber":103,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":104,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":105,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":106,"author":{"gitId":"tohlh"},"content":" public void hasGroup_groupNotInAddressBook_returnsFalse() {","lastModifiedDate":"2024-03-23"},{"lineNumber":107,"author":{"gitId":"tohlh"},"content":" assertFalse(addressBook.hasGroup(new Group(VALID_GROUP_LAB)));","lastModifiedDate":"2024-03-23"},{"lineNumber":108,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":109,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":110,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":111,"author":{"gitId":"tohlh"},"content":" public void hasGroup_groupInAddressBook_returnsTrue() {","lastModifiedDate":"2024-03-23"},{"lineNumber":112,"author":{"gitId":"tohlh"},"content":" addressBook.addGroup(new Group(VALID_GROUP_LAB));","lastModifiedDate":"2024-03-23"},{"lineNumber":113,"author":{"gitId":"tohlh"},"content":" assertTrue(addressBook.hasGroup(new Group(VALID_GROUP_LAB)));","lastModifiedDate":"2024-03-23"},{"lineNumber":114,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":115,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":116,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":117,"author":{"gitId":"tohlh"},"content":" public void hasGroup_groupWithSameIdentityFieldsInAddressBook_returnsTrue() {","lastModifiedDate":"2024-03-23"},{"lineNumber":118,"author":{"gitId":"tohlh"},"content":" addressBook.addGroup(new Group(VALID_GROUP_LAB));","lastModifiedDate":"2024-03-23"},{"lineNumber":119,"author":{"gitId":"tohlh"},"content":" assertTrue(addressBook.hasGroup(new Group(VALID_GROUP_LAB)));","lastModifiedDate":"2024-03-23"},{"lineNumber":120,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":121,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":122,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":123,"author":{"gitId":"tohlh"},"content":" public void getGroupList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-23"},{"lineNumber":124,"author":{"gitId":"tohlh"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e addressBook.getGroupList().remove(0));","lastModifiedDate":"2024-03-23"},{"lineNumber":125,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":126,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":128,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-24"},{"lineNumber":129,"author":{"gitId":"tohlh"},"content":" String expected \u003d AddressBook.class.getCanonicalName() + \"{persons\u003d\" + addressBook.getPersonList()","lastModifiedDate":"2024-03-24"},{"lineNumber":130,"author":{"gitId":"tohlh"},"content":" + \", groups\u003d\" + addressBook.getGroupList() + \"}\";","lastModifiedDate":"2024-03-24"},{"lineNumber":131,"author":{"gitId":"-"},"content":" assertEquals(expected, addressBook.toString());","lastModifiedDate":"2024-03-24"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":134,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-24"},{"lineNumber":135,"author":{"gitId":"-"},"content":" * A stub ReadOnlyAddressBook whose persons list can violate interface constraints.","lastModifiedDate":"2018-03-29"},{"lineNumber":136,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-24"},{"lineNumber":137,"author":{"gitId":"-"},"content":" private static class AddressBookStub implements ReadOnlyAddressBook {","lastModifiedDate":"2016-12-24"},{"lineNumber":138,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e persons \u003d FXCollections.observableArrayList();","lastModifiedDate":"2018-01-10"},{"lineNumber":139,"author":{"gitId":"tohlh"},"content":" private final ObservableList\u003cGroup\u003e groups \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-03-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":141,"author":{"gitId":"tohlh"},"content":" AddressBookStub(Collection\u003cPerson\u003e persons, Collection\u003cGroup\u003e groups) {","lastModifiedDate":"2024-03-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":" this.persons.setAll(persons);","lastModifiedDate":"2016-12-24"},{"lineNumber":143,"author":{"gitId":"tohlh"},"content":" this.groups.setAll(groups);","lastModifiedDate":"2024-03-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":146,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-24"},{"lineNumber":147,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":148,"author":{"gitId":"-"},"content":" return persons;","lastModifiedDate":"2016-12-24"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":150,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":151,"author":{"gitId":"tohlh"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":152,"author":{"gitId":"tohlh"},"content":" public ObservableList\u003cGroup\u003e getGroupList() {","lastModifiedDate":"2024-03-24"},{"lineNumber":153,"author":{"gitId":"tohlh"},"content":" return groups;","lastModifiedDate":"2024-03-24"},{"lineNumber":154,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":155,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":158,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-24"}],"authorContributionMap":{"doyelee0313":3,"STELLA-LYE":1,"-":104,"tohlh":50}},{"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":"tohlh"},"content":"import static seedu.address.testutil.TypicalGroups.TUT04;","lastModifiedDate":"2024-03-24"},{"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.BENSON;","lastModifiedDate":"2017-07-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-31"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"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":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasPerson(null));","lastModifiedDate":"2019-03-23"},{"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":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":93,"author":{"gitId":"tohlh"},"content":" public void hasGroup_nullGroup_throwsNullPointerException() {","lastModifiedDate":"2024-03-24"},{"lineNumber":94,"author":{"gitId":"tohlh"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasGroup(null));","lastModifiedDate":"2024-03-24"},{"lineNumber":95,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":96,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":97,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":98,"author":{"gitId":"tohlh"},"content":" public void hasGroup_groupNotInAddressBook_returnsFalse() {","lastModifiedDate":"2024-03-24"},{"lineNumber":99,"author":{"gitId":"tohlh"},"content":" assertFalse(modelManager.hasGroup(TUT04));","lastModifiedDate":"2024-03-24"},{"lineNumber":100,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":101,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":102,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":103,"author":{"gitId":"tohlh"},"content":" public void hasGroup_groupInAddressBook_returnsTrue() {","lastModifiedDate":"2024-03-24"},{"lineNumber":104,"author":{"gitId":"tohlh"},"content":" modelManager.addGroup(TUT04);","lastModifiedDate":"2024-03-24"},{"lineNumber":105,"author":{"gitId":"tohlh"},"content":" assertTrue(modelManager.hasGroup(TUT04));","lastModifiedDate":"2024-03-24"},{"lineNumber":106,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":107,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":115,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBookBuilder().withPerson(ALICE).withPerson(BENSON).build();","lastModifiedDate":"2017-07-19"},{"lineNumber":116,"author":{"gitId":"-"},"content":" AddressBook differentAddressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31"},{"lineNumber":117,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":119,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":120,"author":{"gitId":"-"},"content":" modelManager \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2018-08-06"},{"lineNumber":121,"author":{"gitId":"-"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2017-05-31"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":124,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":131,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":133,"author":{"gitId":"-"},"content":" // different addressBook -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(differentAddressBook, userPrefs)));","lastModifiedDate":"2017-05-31"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":136,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":137,"author":{"gitId":"-"},"content":" String[] keywords \u003d ALICE.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-19"},{"lineNumber":138,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(keywords)));","lastModifiedDate":"2017-06-12"},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, userPrefs)));","lastModifiedDate":"2017-05-31"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":141,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2017-08-05"},{"lineNumber":142,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":144,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27"},{"lineNumber":145,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":" differentUserPrefs.setAddressBookFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2018-08-09"},{"lineNumber":147,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, differentUserPrefs)));","lastModifiedDate":"2018-11-27"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":149,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31"}],"authorContributionMap":{"-":132,"tohlh":17}},{"path":"src/test/java/seedu/address/model/group/GroupContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"STELLA-LYE"},"content":"package seedu.address.model.group;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"STELLA-LYE"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"STELLA-LYE"},"content":"import java.util.List;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"STELLA-LYE"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"STELLA-LYE"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"STELLA-LYE"},"content":"public class GroupContainsKeywordsPredicateTest {","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"STELLA-LYE"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"STELLA-LYE"},"content":" public void equals() {","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"STELLA-LYE"},"content":" List\u003cString\u003e firstPredicateKeywordList \u003d Collections.singletonList(\"TUT01\");","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"STELLA-LYE"},"content":" List\u003cString\u003e secondPredicateKeywordList \u003d Arrays.asList(\"TUT01\", \"TUT02\");","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"STELLA-LYE"},"content":" GroupContainsKeywordsPredicate firstPredicate \u003d new GroupContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"STELLA-LYE"},"content":" GroupContainsKeywordsPredicate secondPredicate \u003d new GroupContainsKeywordsPredicate(secondPredicateKeywordList);","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"STELLA-LYE"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"STELLA-LYE"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"STELLA-LYE"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"STELLA-LYE"},"content":" GroupContainsKeywordsPredicate firstPredicateCopy \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"STELLA-LYE"},"content":" new GroupContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"STELLA-LYE"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"STELLA-LYE"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"STELLA-LYE"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"STELLA-LYE"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"STELLA-LYE"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"STELLA-LYE"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"STELLA-LYE"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"STELLA-LYE"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"STELLA-LYE"},"content":" public void test_nameContainsKeywords_returnsTrue() {","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"STELLA-LYE"},"content":" // One keyword","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"STELLA-LYE"},"content":" GroupContainsKeywordsPredicate predicate \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"STELLA-LYE"},"content":" new GroupContainsKeywordsPredicate(Collections.singletonList(\"TUT10\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"STELLA-LYE"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").withGroups(\"TUT10\").build()));","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"STELLA-LYE"},"content":" // Multiple keywords","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"STELLA-LYE"},"content":" predicate \u003d new GroupContainsKeywordsPredicate(Arrays.asList(\"TUT10\", \"LAB05\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"STELLA-LYE"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").withGroups(\"TUT10\").build()));","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"STELLA-LYE"},"content":" // Only one matching keyword","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"STELLA-LYE"},"content":" predicate \u003d new GroupContainsKeywordsPredicate(Arrays.asList(\"TUT10\", \"LAB05\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"STELLA-LYE"},"content":" assertTrue(predicate.test(","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"STELLA-LYE"},"content":" new PersonBuilder().withName(\"Alice Carol\").withGroups(\"TUT10\", \"LAB05\").build()));","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"STELLA-LYE"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"STELLA-LYE"},"content":" public void test_nameDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"STELLA-LYE"},"content":" // Zero keywords","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"STELLA-LYE"},"content":" GroupContainsKeywordsPredicate predicate \u003d new GroupContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"STELLA-LYE"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").build()));","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"STELLA-LYE"},"content":" // Non-matching keyword","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"STELLA-LYE"},"content":" predicate \u003d new GroupContainsKeywordsPredicate(Arrays.asList(\"TUT10\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"STELLA-LYE"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice Bob\").withGroups(\"TUT11\").build()));","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"STELLA-LYE"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"STELLA-LYE"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"STELLA-LYE"},"content":" List\u003cString\u003e keywords \u003d List.of(\"TUT01\", \"TUT02\");","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"STELLA-LYE"},"content":" GroupContainsKeywordsPredicate predicate \u003d new GroupContainsKeywordsPredicate(keywords);","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"STELLA-LYE"},"content":" String expected \u003d GroupContainsKeywordsPredicate.class.getCanonicalName() + \"{groups\u003d\"","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"STELLA-LYE"},"content":" + keywords.stream().map(Group::new).collect(Collectors.toList()) + \"}\";","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"STELLA-LYE"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"STELLA-LYE":83}},{"path":"src/test/java/seedu/address/model/group/GroupTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"doyelee0313"},"content":"package seedu.address.model.group;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"tohlh"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-24"},{"lineNumber":4,"author":{"gitId":"tohlh"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-24"},{"lineNumber":5,"author":{"gitId":"doyelee0313"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"doyelee0313"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"doyelee0313"},"content":"public class GroupTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"doyelee0313"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"doyelee0313"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"doyelee0313"},"content":" assertThrows(NullPointerException.class, () -\u003e new Group(null));","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"doyelee0313"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"doyelee0313"},"content":" public void constructor_invalidGroupName_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"doyelee0313"},"content":" String invalidGroupName \u003d \"\";","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"doyelee0313"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Group(invalidGroupName));","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"doyelee0313"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"doyelee0313"},"content":" public void isValidGroupName() {","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"doyelee0313"},"content":" // null group name","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"doyelee0313"},"content":" assertThrows(NullPointerException.class, () -\u003e Group.isValidGroupName(null));","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"tohlh"},"content":" assertTrue(Group.isValidGroupName(\"TUT01\"));","lastModifiedDate":"2024-03-24"},{"lineNumber":27,"author":{"gitId":"tohlh"},"content":" assertTrue(Group.isValidGroupName(\"LAB01\"));","lastModifiedDate":"2024-03-24"},{"lineNumber":28,"author":{"gitId":"tohlh"},"content":" assertTrue(Group.isValidGroupName(\"REC01\"));","lastModifiedDate":"2024-03-24"},{"lineNumber":29,"author":{"gitId":"tohlh"},"content":" assertFalse(Group.isValidGroupName(\"a\"));","lastModifiedDate":"2024-03-24"},{"lineNumber":30,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":31,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":32,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":33,"author":{"gitId":"tohlh"},"content":" public void isValidLink() {","lastModifiedDate":"2024-03-24"},{"lineNumber":34,"author":{"gitId":"tohlh"},"content":" // null group name","lastModifiedDate":"2024-03-24"},{"lineNumber":35,"author":{"gitId":"tohlh"},"content":" assertThrows(NullPointerException.class, () -\u003e Group.isValidLink(null));","lastModifiedDate":"2024-03-24"},{"lineNumber":36,"author":{"gitId":"tohlh"},"content":" assertTrue(Group.isValidLink(\"https://t.me/asdfasdf\"));","lastModifiedDate":"2024-03-24"},{"lineNumber":37,"author":{"gitId":"tohlh"},"content":" assertFalse(Group.isValidLink(\"a\"));","lastModifiedDate":"2024-03-24"},{"lineNumber":38,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":41,"author":{"gitId":"tohlh"},"content":" public void isSameGroup() {","lastModifiedDate":"2024-03-24"},{"lineNumber":42,"author":{"gitId":"tohlh"},"content":" Group group \u003d new Group(\"TUT01\");","lastModifiedDate":"2024-03-24"},{"lineNumber":43,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":44,"author":{"gitId":"tohlh"},"content":" assertTrue(group.isSameGroup(group)); // same group","lastModifiedDate":"2024-03-24"},{"lineNumber":45,"author":{"gitId":"tohlh"},"content":" assertTrue(group.isSameGroup(new Group(\"TUT01\"))); // same group name","lastModifiedDate":"2024-03-24"},{"lineNumber":46,"author":{"gitId":"tohlh"},"content":" assertTrue(group.isSameGroup(new Group(\"TUT01\", \"https://t.me/abcdefghij\")));","lastModifiedDate":"2024-03-24"},{"lineNumber":47,"author":{"gitId":"tohlh"},"content":" assertFalse(group.isSameGroup(new Group(\"LAB01\")));","lastModifiedDate":"2024-03-24"},{"lineNumber":48,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":49,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":50,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":51,"author":{"gitId":"tohlh"},"content":" public void equals() {","lastModifiedDate":"2024-03-24"},{"lineNumber":52,"author":{"gitId":"tohlh"},"content":" Group group \u003d new Group(\"TUT01\");","lastModifiedDate":"2024-03-24"},{"lineNumber":53,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":54,"author":{"gitId":"tohlh"},"content":" assertTrue(group.equals(group)); // same object","lastModifiedDate":"2024-03-24"},{"lineNumber":55,"author":{"gitId":"tohlh"},"content":" assertTrue(group.equals(new Group(\"TUT01\"))); // same group name","lastModifiedDate":"2024-03-24"},{"lineNumber":56,"author":{"gitId":"tohlh"},"content":" assertTrue(group.equals(new Group(\"TUT01\", \"https://t.me/abcdefghij\")));","lastModifiedDate":"2024-03-24"},{"lineNumber":57,"author":{"gitId":"tohlh"},"content":" assertFalse(group.equals(new Group(\"LAB01\")));","lastModifiedDate":"2024-03-24"},{"lineNumber":58,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":59,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":60,"author":{"gitId":"doyelee0313"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"doyelee0313":26,"tohlh":34}},{"path":"src/test/java/seedu/address/model/group/UniqueGroupListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"tohlh"},"content":"package seedu.address.model.group;","lastModifiedDate":"2024-03-24"},{"lineNumber":2,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":3,"author":{"gitId":"tohlh"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-24"},{"lineNumber":4,"author":{"gitId":"tohlh"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-24"},{"lineNumber":5,"author":{"gitId":"tohlh"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-24"},{"lineNumber":6,"author":{"gitId":"tohlh"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-24"},{"lineNumber":7,"author":{"gitId":"tohlh"},"content":"import static seedu.address.testutil.TypicalGroups.LAB10;","lastModifiedDate":"2024-03-24"},{"lineNumber":8,"author":{"gitId":"tohlh"},"content":"import static seedu.address.testutil.TypicalGroups.TUT04;","lastModifiedDate":"2024-03-24"},{"lineNumber":9,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":10,"author":{"gitId":"tohlh"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-24"},{"lineNumber":11,"author":{"gitId":"tohlh"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-24"},{"lineNumber":12,"author":{"gitId":"tohlh"},"content":"import java.util.List;","lastModifiedDate":"2024-03-24"},{"lineNumber":13,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":14,"author":{"gitId":"tohlh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-24"},{"lineNumber":15,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":16,"author":{"gitId":"tohlh"},"content":"import seedu.address.model.group.exceptions.DuplicateGroupException;","lastModifiedDate":"2024-03-24"},{"lineNumber":17,"author":{"gitId":"tohlh"},"content":"import seedu.address.model.group.exceptions.GroupNotFoundException;","lastModifiedDate":"2024-03-24"},{"lineNumber":18,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":19,"author":{"gitId":"tohlh"},"content":"public class UniqueGroupListTest {","lastModifiedDate":"2024-03-24"},{"lineNumber":20,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":21,"author":{"gitId":"tohlh"},"content":" private final UniqueGroupList uniqueGroupList \u003d new UniqueGroupList();","lastModifiedDate":"2024-03-24"},{"lineNumber":22,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":23,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":24,"author":{"gitId":"tohlh"},"content":" public void contains_nullGroup_throwsNullPointerException() {","lastModifiedDate":"2024-03-24"},{"lineNumber":25,"author":{"gitId":"tohlh"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueGroupList.contains(null));","lastModifiedDate":"2024-03-24"},{"lineNumber":26,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":27,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":28,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":29,"author":{"gitId":"tohlh"},"content":" public void contains_groupNotInList_returnsFalse() {","lastModifiedDate":"2024-03-24"},{"lineNumber":30,"author":{"gitId":"tohlh"},"content":" assertFalse(uniqueGroupList.contains(TUT04));","lastModifiedDate":"2024-03-24"},{"lineNumber":31,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":32,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":33,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":34,"author":{"gitId":"tohlh"},"content":" public void contains_groupInList_returnsTrue() {","lastModifiedDate":"2024-03-24"},{"lineNumber":35,"author":{"gitId":"tohlh"},"content":" uniqueGroupList.add(TUT04);","lastModifiedDate":"2024-03-24"},{"lineNumber":36,"author":{"gitId":"tohlh"},"content":" assertTrue(uniqueGroupList.contains(TUT04));","lastModifiedDate":"2024-03-24"},{"lineNumber":37,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":38,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":39,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":40,"author":{"gitId":"tohlh"},"content":" public void add_nullGroup_throwsNullPointerException() {","lastModifiedDate":"2024-03-24"},{"lineNumber":41,"author":{"gitId":"tohlh"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueGroupList.add(null));","lastModifiedDate":"2024-03-24"},{"lineNumber":42,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":43,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":44,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":45,"author":{"gitId":"tohlh"},"content":" public void add_duplicateGroup_throwsDuplicateGroupException() {","lastModifiedDate":"2024-03-24"},{"lineNumber":46,"author":{"gitId":"tohlh"},"content":" uniqueGroupList.add(TUT04);","lastModifiedDate":"2024-03-24"},{"lineNumber":47,"author":{"gitId":"tohlh"},"content":" assertThrows(DuplicateGroupException.class, () -\u003e uniqueGroupList.add(TUT04));","lastModifiedDate":"2024-03-24"},{"lineNumber":48,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":49,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":50,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":51,"author":{"gitId":"tohlh"},"content":" public void setGroup_nullTargetGroup_throwsNullPointerException() {","lastModifiedDate":"2024-03-24"},{"lineNumber":52,"author":{"gitId":"tohlh"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueGroupList.setGroup(null, TUT04));","lastModifiedDate":"2024-03-24"},{"lineNumber":53,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":54,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":55,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":56,"author":{"gitId":"tohlh"},"content":" public void setGroup_nullEditedGroup_throwsNullPointerException() {","lastModifiedDate":"2024-03-24"},{"lineNumber":57,"author":{"gitId":"tohlh"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueGroupList.setGroup(TUT04, null));","lastModifiedDate":"2024-03-24"},{"lineNumber":58,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":59,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":60,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":61,"author":{"gitId":"tohlh"},"content":" public void setGroup_targetGroupNotInList_throwsGroupNotFoundException() {","lastModifiedDate":"2024-03-24"},{"lineNumber":62,"author":{"gitId":"tohlh"},"content":" assertThrows(GroupNotFoundException.class, () -\u003e uniqueGroupList.setGroup(TUT04, TUT04));","lastModifiedDate":"2024-03-24"},{"lineNumber":63,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":64,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":65,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":66,"author":{"gitId":"tohlh"},"content":" public void setGroup_editedGroupIsSameGroup_success() {","lastModifiedDate":"2024-03-24"},{"lineNumber":67,"author":{"gitId":"tohlh"},"content":" uniqueGroupList.add(TUT04);","lastModifiedDate":"2024-03-24"},{"lineNumber":68,"author":{"gitId":"tohlh"},"content":" uniqueGroupList.setGroup(TUT04, TUT04);","lastModifiedDate":"2024-03-24"},{"lineNumber":69,"author":{"gitId":"tohlh"},"content":" UniqueGroupList expectedUniqueGroupList \u003d new UniqueGroupList();","lastModifiedDate":"2024-03-24"},{"lineNumber":70,"author":{"gitId":"tohlh"},"content":" expectedUniqueGroupList.add(TUT04);","lastModifiedDate":"2024-03-24"},{"lineNumber":71,"author":{"gitId":"tohlh"},"content":" assertEquals(expectedUniqueGroupList, uniqueGroupList);","lastModifiedDate":"2024-03-24"},{"lineNumber":72,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":73,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":74,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":75,"author":{"gitId":"tohlh"},"content":" public void setGroup_editedGroupHasDifferentIdentity_success() {","lastModifiedDate":"2024-03-24"},{"lineNumber":76,"author":{"gitId":"tohlh"},"content":" uniqueGroupList.add(TUT04);","lastModifiedDate":"2024-03-24"},{"lineNumber":77,"author":{"gitId":"tohlh"},"content":" uniqueGroupList.setGroup(TUT04, LAB10);","lastModifiedDate":"2024-03-24"},{"lineNumber":78,"author":{"gitId":"tohlh"},"content":" UniqueGroupList expectedUniqueGroupList \u003d new UniqueGroupList();","lastModifiedDate":"2024-03-24"},{"lineNumber":79,"author":{"gitId":"tohlh"},"content":" expectedUniqueGroupList.add(LAB10);","lastModifiedDate":"2024-03-24"},{"lineNumber":80,"author":{"gitId":"tohlh"},"content":" assertEquals(expectedUniqueGroupList, uniqueGroupList);","lastModifiedDate":"2024-03-24"},{"lineNumber":81,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":82,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":83,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":84,"author":{"gitId":"tohlh"},"content":" public void setGroup_editedGroupHasNonUniqueIdentity_throwsDuplicateGroupException() {","lastModifiedDate":"2024-03-24"},{"lineNumber":85,"author":{"gitId":"tohlh"},"content":" uniqueGroupList.add(TUT04);","lastModifiedDate":"2024-03-24"},{"lineNumber":86,"author":{"gitId":"tohlh"},"content":" uniqueGroupList.add(LAB10);","lastModifiedDate":"2024-03-24"},{"lineNumber":87,"author":{"gitId":"tohlh"},"content":" assertThrows(DuplicateGroupException.class, () -\u003e uniqueGroupList.setGroup(TUT04, LAB10));","lastModifiedDate":"2024-03-24"},{"lineNumber":88,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":89,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":90,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":91,"author":{"gitId":"tohlh"},"content":" public void remove_nullGroup_throwsNullPointerException() {","lastModifiedDate":"2024-03-24"},{"lineNumber":92,"author":{"gitId":"tohlh"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueGroupList.remove(null));","lastModifiedDate":"2024-03-24"},{"lineNumber":93,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":94,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":95,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":96,"author":{"gitId":"tohlh"},"content":" public void remove_groupDoesNotExist_throwsGroupNotFoundException() {","lastModifiedDate":"2024-03-24"},{"lineNumber":97,"author":{"gitId":"tohlh"},"content":" assertThrows(GroupNotFoundException.class, () -\u003e uniqueGroupList.remove(TUT04));","lastModifiedDate":"2024-03-24"},{"lineNumber":98,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":99,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":100,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":101,"author":{"gitId":"tohlh"},"content":" public void remove_existingGroup_removesGroup() {","lastModifiedDate":"2024-03-24"},{"lineNumber":102,"author":{"gitId":"tohlh"},"content":" uniqueGroupList.add(TUT04);","lastModifiedDate":"2024-03-24"},{"lineNumber":103,"author":{"gitId":"tohlh"},"content":" uniqueGroupList.remove(TUT04);","lastModifiedDate":"2024-03-24"},{"lineNumber":104,"author":{"gitId":"tohlh"},"content":" UniqueGroupList expectedUniqueGroupList \u003d new UniqueGroupList();","lastModifiedDate":"2024-03-24"},{"lineNumber":105,"author":{"gitId":"tohlh"},"content":" assertEquals(expectedUniqueGroupList, uniqueGroupList);","lastModifiedDate":"2024-03-24"},{"lineNumber":106,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":107,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":108,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":109,"author":{"gitId":"tohlh"},"content":" public void setGroups_nullUniqueGroupList_throwsNullPointerException() {","lastModifiedDate":"2024-03-24"},{"lineNumber":110,"author":{"gitId":"tohlh"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueGroupList.setGroups((UniqueGroupList) null));","lastModifiedDate":"2024-03-24"},{"lineNumber":111,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":112,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":113,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":114,"author":{"gitId":"tohlh"},"content":" public void setGroups_uniqueGroupList_replacesOwnListWithProvidedUniqueGroupList() {","lastModifiedDate":"2024-03-24"},{"lineNumber":115,"author":{"gitId":"tohlh"},"content":" uniqueGroupList.add(TUT04);","lastModifiedDate":"2024-03-24"},{"lineNumber":116,"author":{"gitId":"tohlh"},"content":" UniqueGroupList expectedUniqueGroupList \u003d new UniqueGroupList();","lastModifiedDate":"2024-03-24"},{"lineNumber":117,"author":{"gitId":"tohlh"},"content":" expectedUniqueGroupList.add(LAB10);","lastModifiedDate":"2024-03-24"},{"lineNumber":118,"author":{"gitId":"tohlh"},"content":" uniqueGroupList.setGroups(expectedUniqueGroupList);","lastModifiedDate":"2024-03-24"},{"lineNumber":119,"author":{"gitId":"tohlh"},"content":" assertEquals(expectedUniqueGroupList, uniqueGroupList);","lastModifiedDate":"2024-03-24"},{"lineNumber":120,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":121,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":122,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":123,"author":{"gitId":"tohlh"},"content":" public void setGroups_nullList_throwsNullPointerException() {","lastModifiedDate":"2024-03-24"},{"lineNumber":124,"author":{"gitId":"tohlh"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueGroupList.setGroups((List\u003cGroup\u003e) null));","lastModifiedDate":"2024-03-24"},{"lineNumber":125,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":126,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":127,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":128,"author":{"gitId":"tohlh"},"content":" public void setGroups_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2024-03-24"},{"lineNumber":129,"author":{"gitId":"tohlh"},"content":" uniqueGroupList.add(TUT04);","lastModifiedDate":"2024-03-24"},{"lineNumber":130,"author":{"gitId":"tohlh"},"content":" List\u003cGroup\u003e groupList \u003d Collections.singletonList(LAB10);","lastModifiedDate":"2024-03-24"},{"lineNumber":131,"author":{"gitId":"tohlh"},"content":" uniqueGroupList.setGroups(groupList);","lastModifiedDate":"2024-03-24"},{"lineNumber":132,"author":{"gitId":"tohlh"},"content":" UniqueGroupList expectedUniqueGroupList \u003d new UniqueGroupList();","lastModifiedDate":"2024-03-24"},{"lineNumber":133,"author":{"gitId":"tohlh"},"content":" expectedUniqueGroupList.add(LAB10);","lastModifiedDate":"2024-03-24"},{"lineNumber":134,"author":{"gitId":"tohlh"},"content":" assertEquals(expectedUniqueGroupList, uniqueGroupList);","lastModifiedDate":"2024-03-24"},{"lineNumber":135,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":136,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":137,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":138,"author":{"gitId":"tohlh"},"content":" public void setGroups_listWithDuplicateGroups_throwsDuplicateGroupException() {","lastModifiedDate":"2024-03-24"},{"lineNumber":139,"author":{"gitId":"tohlh"},"content":" List\u003cGroup\u003e listWithDuplicateGroups \u003d Arrays.asList(TUT04, TUT04);","lastModifiedDate":"2024-03-24"},{"lineNumber":140,"author":{"gitId":"tohlh"},"content":" assertThrows(DuplicateGroupException.class, () -\u003e uniqueGroupList.setGroups(listWithDuplicateGroups));","lastModifiedDate":"2024-03-24"},{"lineNumber":141,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":142,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":143,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":144,"author":{"gitId":"tohlh"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-24"},{"lineNumber":145,"author":{"gitId":"tohlh"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2024-03-24"},{"lineNumber":146,"author":{"gitId":"tohlh"},"content":" -\u003e uniqueGroupList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2024-03-24"},{"lineNumber":147,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":148,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":149,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":150,"author":{"gitId":"tohlh"},"content":" public void equals() {","lastModifiedDate":"2024-03-24"},{"lineNumber":151,"author":{"gitId":"tohlh"},"content":" UniqueGroupList uniqueGroupListCopy \u003d new UniqueGroupList();","lastModifiedDate":"2024-03-24"},{"lineNumber":152,"author":{"gitId":"tohlh"},"content":" uniqueGroupListCopy.add(TUT04);","lastModifiedDate":"2024-03-24"},{"lineNumber":153,"author":{"gitId":"tohlh"},"content":" uniqueGroupList.add(TUT04);","lastModifiedDate":"2024-03-24"},{"lineNumber":154,"author":{"gitId":"tohlh"},"content":" assertTrue(uniqueGroupList.equals(uniqueGroupListCopy));","lastModifiedDate":"2024-03-24"},{"lineNumber":155,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":156,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":157,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":158,"author":{"gitId":"tohlh"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-24"},{"lineNumber":159,"author":{"gitId":"tohlh"},"content":" assertEquals(uniqueGroupList.asUnmodifiableObservableList().toString(), uniqueGroupList.toString());","lastModifiedDate":"2024-03-24"},{"lineNumber":160,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":161,"author":{"gitId":"tohlh"},"content":"}","lastModifiedDate":"2024-03-24"}],"authorContributionMap":{"tohlh":161}},{"path":"src/test/java/seedu/address/model/person/MajorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"STELLA-LYE"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"STELLA-LYE"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"STELLA-LYE"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"STELLA-LYE"},"content":"public class MajorTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"STELLA-LYE"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"STELLA-LYE"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"STELLA-LYE"},"content":" assertThrows(NullPointerException.class, () -\u003e new Major(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"STELLA-LYE"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"STELLA-LYE"},"content":" public void constructor_invalidMajor_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"STELLA-LYE"},"content":" String invalidMajor \u003d \"\";","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"STELLA-LYE"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Major(invalidMajor));","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"STELLA-LYE"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"STELLA-LYE"},"content":" public void isValidMajor() {","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"STELLA-LYE"},"content":" // null major","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"STELLA-LYE"},"content":" assertThrows(NullPointerException.class, () -\u003e Major.isValidMajor(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"STELLA-LYE"},"content":" // invalid majors","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"STELLA-LYE"},"content":" assertFalse(Major.isValidMajor(\"\")); // empty string","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"STELLA-LYE"},"content":" assertFalse(Major.isValidMajor(\" \")); // spaces only","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"STELLA-LYE"},"content":" // valid majors (Computing majors)","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"STELLA-LYE"},"content":" assertTrue(Major.isValidMajor(\"-\")); // one character","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"STELLA-LYE"},"content":" assertTrue(Major.isValidMajor(\"Business Analytics\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"STELLA-LYE"},"content":" assertTrue(Major.isValidMajor(\"Computer Science\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"STELLA-LYE"},"content":" assertTrue(Major.isValidMajor(\"Computer Engineering\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"STELLA-LYE"},"content":" assertTrue(Major.isValidMajor(\"Information Systems\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"STELLA-LYE"},"content":" assertTrue(Major.isValidMajor(\"Information Security\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"STELLA-LYE"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"STELLA-LYE"},"content":" public void equals() {","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"STELLA-LYE"},"content":" Major major \u003d new Major(\"Valid Major\");","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"STELLA-LYE"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"STELLA-LYE"},"content":" assertTrue(major.equals(new Major(\"Valid Major\")));","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"STELLA-LYE"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"STELLA-LYE"},"content":" assertTrue(major.equals(major));","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"STELLA-LYE"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"STELLA-LYE"},"content":" assertFalse(major.equals(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"STELLA-LYE"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"STELLA-LYE"},"content":" assertFalse(major.equals(5.0f));","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"STELLA-LYE"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"STELLA-LYE"},"content":" assertFalse(major.equals(new Major(\"Other Valid Major\")));","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"STELLA-LYE"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"STELLA-LYE"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"STELLA-LYE":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":"-"},"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":"-"},"content":" // Keywords match phone, email and address, but does not match name","lastModifiedDate":"2017-06-12"},{"lineNumber":72,"author":{"gitId":"STELLA-LYE"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"12345\", \"alice@email.com\", \"Computer\", \"Science\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").withPhone(\"12345\")","lastModifiedDate":"2017-06-12"},{"lineNumber":74,"author":{"gitId":"STELLA-LYE"},"content":" .withEmail(\"alice@email.com\").withMajor(\"Computer Science\").build()));","lastModifiedDate":"2024-03-17"},{"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":{"STELLA-LYE":2,"-":83}},{"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":"doyelee0313"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GROUP_LAB;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MAJOR_BOB;","lastModifiedDate":"2024-03-18"},{"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":"jocelyn-soh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_REMARK_OUTSPOKEN;","lastModifiedDate":"2024-03-19"},{"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":"doyelee0313"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getGroups().remove(0));","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18"},{"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":"doyelee0313"},"content":" .withMajor(VALID_MAJOR_BOB).withRemark(VALID_REMARK_OUTSPOKEN).withGroups(VALID_GROUP_LAB).build();","lastModifiedDate":"2024-03-20"},{"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":"jocelyn-soh"},"content":" // different major -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"STELLA-LYE"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withMajor(VALID_MAJOR_BOB).build();","lastModifiedDate":"2024-03-17"},{"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":"jocelyn-soh"},"content":" // different remark -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"jocelyn-soh"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withRemark(VALID_REMARK_OUTSPOKEN).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2024-03-19"},{"lineNumber":92,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"doyelee0313"},"content":" // different groups -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"doyelee0313"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withGroups(VALID_GROUP_LAB).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":98,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"tohlh"},"content":" public void hashCodeMethod() {","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"tohlh"},"content":" // same values -\u003e returns same hashcode","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"tohlh"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"tohlh"},"content":" assertEquals(ALICE.hashCode(), aliceCopy.hashCode());","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"tohlh"},"content":" // different name -\u003e returns different hashcode","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"tohlh"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":106,"author":{"gitId":"tohlh"},"content":" assertFalse(ALICE.hashCode() \u003d\u003d editedAlice.hashCode());","lastModifiedDate":"2024-03-19"},{"lineNumber":107,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":108,"author":{"gitId":"tohlh"},"content":" // different phone -\u003e returns different hashcode","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"tohlh"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":110,"author":{"gitId":"tohlh"},"content":" assertFalse(ALICE.hashCode() \u003d\u003d editedAlice.hashCode());","lastModifiedDate":"2024-03-19"},{"lineNumber":111,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":112,"author":{"gitId":"tohlh"},"content":" // different email -\u003e returns different hashcode","lastModifiedDate":"2024-03-19"},{"lineNumber":113,"author":{"gitId":"tohlh"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":114,"author":{"gitId":"tohlh"},"content":" assertFalse(ALICE.hashCode() \u003d\u003d editedAlice.hashCode());","lastModifiedDate":"2024-03-19"},{"lineNumber":115,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":116,"author":{"gitId":"tohlh"},"content":" // different major -\u003e returns different hashcode","lastModifiedDate":"2024-03-19"},{"lineNumber":117,"author":{"gitId":"tohlh"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withMajor(VALID_MAJOR_BOB).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":118,"author":{"gitId":"tohlh"},"content":" assertFalse(ALICE.hashCode() \u003d\u003d editedAlice.hashCode());","lastModifiedDate":"2024-03-19"},{"lineNumber":119,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":120,"author":{"gitId":"jocelyn-soh"},"content":" // different remark -\u003e returns different hashcode","lastModifiedDate":"2024-03-19"},{"lineNumber":121,"author":{"gitId":"jocelyn-soh"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withRemark(VALID_REMARK_OUTSPOKEN).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":122,"author":{"gitId":"jocelyn-soh"},"content":" assertFalse(ALICE.hashCode() \u003d\u003d editedAlice.hashCode());","lastModifiedDate":"2024-03-19"},{"lineNumber":123,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":124,"author":{"gitId":"doyelee0313"},"content":" // different groups -\u003e returns different hashcode","lastModifiedDate":"2024-03-20"},{"lineNumber":125,"author":{"gitId":"doyelee0313"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withGroups(VALID_GROUP_LAB).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":126,"author":{"gitId":"tohlh"},"content":" assertFalse(ALICE.hashCode() \u003d\u003d editedAlice.hashCode());","lastModifiedDate":"2024-03-19"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2019-02-23"},{"lineNumber":132,"author":{"gitId":"tohlh"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", year\u003d\" + ALICE.getYear() + \", telegram\u003d\" + ALICE.getTelegram()","lastModifiedDate":"2024-03-19"},{"lineNumber":133,"author":{"gitId":"doyelee0313"},"content":" + \", major\u003d\" + ALICE.getMajor() + \", remark\u003d\" + ALICE.getRemark()","lastModifiedDate":"2024-03-20"},{"lineNumber":134,"author":{"gitId":"doyelee0313"},"content":" + \", groups\u003d\" + ALICE.getGroups() + \"}\";","lastModifiedDate":"2024-03-20"},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"doyelee0313":9,"STELLA-LYE":2,"-":93,"jocelyn-soh":9,"tohlh":24}},{"path":"src/test/java/seedu/address/model/person/RemarkTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jocelyn-soh"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"jocelyn-soh"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"jocelyn-soh"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"jocelyn-soh"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"jocelyn-soh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"jocelyn-soh"},"content":"public class RemarkTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"jocelyn-soh"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"jocelyn-soh"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"jocelyn-soh"},"content":" assertThrows(NullPointerException.class, () -\u003e new Remark(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"jocelyn-soh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"jocelyn-soh"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"jocelyn-soh"},"content":" public void equals() {","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"jocelyn-soh"},"content":" Remark remark \u003d new Remark(\"#shy123\");","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"jocelyn-soh"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"jocelyn-soh"},"content":" assertTrue(remark.equals(new Remark(\"#shy123\")));","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"jocelyn-soh"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"jocelyn-soh"},"content":" assertTrue(remark.equals(remark));","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"jocelyn-soh"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"jocelyn-soh"},"content":" assertFalse(remark.equals(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"jocelyn-soh"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"jocelyn-soh"},"content":" assertFalse(remark.equals(5.0f));","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"jocelyn-soh"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"jocelyn-soh"},"content":" assertFalse(remark.equals(new Remark(\"different value\")));","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"jocelyn-soh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"jocelyn-soh"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"jocelyn-soh":35}},{"path":"src/test/java/seedu/address/model/person/TelegramTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"tohlh"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"tohlh"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"tohlh"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"tohlh"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"tohlh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"tohlh"},"content":"public class TelegramTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"tohlh"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"tohlh"},"content":" assertThrows(NullPointerException.class, () -\u003e new Telegram(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"tohlh"},"content":" public void constructor_invalidTelegram_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"tohlh"},"content":" String invalidTelegram \u003d \"\";","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"tohlh"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Telegram(invalidTelegram));","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"tohlh"},"content":" public void isValidTelegram() {","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"tohlh"},"content":" // null telegram","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"tohlh"},"content":" assertThrows(NullPointerException.class, () -\u003e Telegram.isValidTelegram(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"tohlh"},"content":" // invalid telegrams","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"tohlh"},"content":" assertFalse(Telegram.isValidTelegram(\"\")); // empty string","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"tohlh"},"content":" assertFalse(Telegram.isValidTelegram(\" \")); // spaces only","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"tohlh"},"content":" assertFalse(Telegram.isValidTelegram(\"a\")); // less than 3 characters","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"tohlh"},"content":" assertFalse(Telegram.isValidTelegram(\"asdf!\")); // alphabets with invalid characters","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"tohlh"},"content":" // valid telegrams","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"tohlh"},"content":" assertTrue(Telegram.isValidTelegram(\"asdf123\")); // alphanumeric","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"tohlh"},"content":" assertTrue(Telegram.isValidTelegram(\"asdf123_\")); // alphanumeric with underscore","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"tohlh"},"content":" public void equals() {","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"tohlh"},"content":" Telegram telegram \u003d new Telegram(\"telegram123\");","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"tohlh"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"tohlh"},"content":" assertTrue(telegram.equals(new Telegram(\"telegram123\")));","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"tohlh"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"tohlh"},"content":" assertTrue(telegram.equals(telegram));","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"tohlh"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"tohlh"},"content":" assertFalse(telegram.equals(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"tohlh"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"tohlh"},"content":" assertFalse(telegram.equals(5.0f));","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"tohlh"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"tohlh"},"content":" assertFalse(telegram.equals(new Telegram(\"123telegram\")));","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"tohlh"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"tohlh":57}},{"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":"doyelee0313"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GROUP_LAB;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MAJOR_BOB;","lastModifiedDate":"2024-03-17"},{"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":"doyelee0313"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withMajor(VALID_MAJOR_BOB).withGroups(VALID_GROUP_LAB)","lastModifiedDate":"2024-03-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":"doyelee0313"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withMajor(VALID_MAJOR_BOB).withGroups(VALID_GROUP_LAB)","lastModifiedDate":"2024-03-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":{"doyelee0313":3,"STELLA-LYE":1,"-":171}},{"path":"src/test/java/seedu/address/model/person/YearTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"tohlh"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-15"},{"lineNumber":2,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":3,"author":{"gitId":"tohlh"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"tohlh"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-15"},{"lineNumber":5,"author":{"gitId":"tohlh"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"tohlh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"tohlh"},"content":"public class YearTest {","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"tohlh"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"tohlh"},"content":" assertThrows(NullPointerException.class, () -\u003e new Year(null));","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"tohlh"},"content":" public void constructor_invalidPhone_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"tohlh"},"content":" String invalidPhone \u003d \"\";","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"tohlh"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Year(invalidPhone));","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":21,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"tohlh"},"content":" public void isValidYear() {","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"tohlh"},"content":" // null phone number","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"tohlh"},"content":" assertThrows(NullPointerException.class, () -\u003e Year.isValidYear(null));","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"tohlh"},"content":" // invalid years","lastModifiedDate":"2024-03-15"},{"lineNumber":28,"author":{"gitId":"tohlh"},"content":" assertFalse(Year.isValidYear(\"\")); // empty string","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"tohlh"},"content":" assertFalse(Year.isValidYear(\" \")); // spaces only","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"tohlh"},"content":" assertFalse(Year.isValidYear(\"7\")); // less than 3 numbers","lastModifiedDate":"2024-03-15"},{"lineNumber":31,"author":{"gitId":"tohlh"},"content":" assertFalse(Year.isValidYear(\"year\")); // non-numeric","lastModifiedDate":"2024-03-15"},{"lineNumber":32,"author":{"gitId":"tohlh"},"content":" assertFalse(Year.isValidYear(\"a1\")); // alphabets with digit","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":34,"author":{"gitId":"tohlh"},"content":" // valid years","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"tohlh"},"content":" assertTrue(Year.isValidYear(\"1\")); // exactly year 1","lastModifiedDate":"2024-03-15"},{"lineNumber":36,"author":{"gitId":"tohlh"},"content":" assertTrue(Year.isValidYear(\"2\")); // exactly year 2","lastModifiedDate":"2024-03-15"},{"lineNumber":37,"author":{"gitId":"tohlh"},"content":" assertTrue(Year.isValidYear(\"3\")); // exactly year 3","lastModifiedDate":"2024-03-15"},{"lineNumber":38,"author":{"gitId":"tohlh"},"content":" assertTrue(Year.isValidYear(\"4\")); // exactly year 4","lastModifiedDate":"2024-03-15"},{"lineNumber":39,"author":{"gitId":"tohlh"},"content":" assertTrue(Year.isValidYear(\"5\")); // exactly year 5","lastModifiedDate":"2024-03-15"},{"lineNumber":40,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":42,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"tohlh"},"content":" public void equals() {","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"tohlh"},"content":" Year year \u003d new Year(\"1\");","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"tohlh"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-15"},{"lineNumber":47,"author":{"gitId":"tohlh"},"content":" assertTrue(year.equals(new Year(\"1\")));","lastModifiedDate":"2024-03-15"},{"lineNumber":48,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":49,"author":{"gitId":"tohlh"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"tohlh"},"content":" assertTrue(year.equals(year));","lastModifiedDate":"2024-03-15"},{"lineNumber":51,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":52,"author":{"gitId":"tohlh"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"tohlh"},"content":" assertFalse(year.equals(null));","lastModifiedDate":"2024-03-15"},{"lineNumber":54,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":55,"author":{"gitId":"tohlh"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-15"},{"lineNumber":56,"author":{"gitId":"tohlh"},"content":" assertFalse(year.equals(5.0f));","lastModifiedDate":"2024-03-15"},{"lineNumber":57,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":58,"author":{"gitId":"tohlh"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-15"},{"lineNumber":59,"author":{"gitId":"tohlh"},"content":" assertFalse(year.equals(new Year(\"2\")));","lastModifiedDate":"2024-03-15"},{"lineNumber":60,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":61,"author":{"gitId":"tohlh"},"content":"}","lastModifiedDate":"2024-03-15"}],"authorContributionMap":{"tohlh":61}},{"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":"2024-03-19"},{"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":"STELLA-LYE"},"content":"import seedu.address.model.person.Major;","lastModifiedDate":"2024-03-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.Phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"tohlh"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"tohlh"},"content":"import seedu.address.model.person.Year;","lastModifiedDate":"2024-03-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":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"STELLA-LYE"},"content":" private static final String INVALID_MAJOR \u003d \" \";","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"tohlh"},"content":" private static final String INVALID_YEAR \u003d \"7\";","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"tohlh"},"content":" private static final String INVALID_TELEGRAM \u003d \"inval!d\";","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"doyelee0313"},"content":" private static final String INVALID_GROUP \u003d \"TUT9301391\";","lastModifiedDate":"2024-03-20"},{"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":"tohlh"},"content":" private static final String VALID_YEAR \u003d BENSON.getYear().toString();","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"STELLA-LYE"},"content":" private static final String VALID_MAJOR \u003d BENSON.getMajor().toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"tohlh"},"content":" private static final String VALID_TELEGRAM \u003d BENSON.getTelegram().toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"jocelyn-soh"},"content":" private static final String VALID_REMARK \u003d BENSON.getRemark().toString();","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"tohlh"},"content":" private static final List\u003cString\u003e VALID_GROUPS \u003d BENSON.getGroups().stream()","lastModifiedDate":"2024-03-23"},{"lineNumber":39,"author":{"gitId":"doyelee0313"},"content":" .map(JsonAdaptedGroup::new)","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"tohlh"},"content":" .map(JsonAdaptedGroup::getGroupName)","lastModifiedDate":"2024-03-23"},{"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":"tohlh"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_YEAR,","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"doyelee0313"},"content":" VALID_TELEGRAM, VALID_MAJOR, VALID_REMARK, VALID_GROUPS);","lastModifiedDate":"2024-03-20"},{"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":"tohlh"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL, VALID_YEAR,","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"doyelee0313"},"content":" VALID_TELEGRAM, VALID_MAJOR, VALID_REMARK, VALID_GROUPS);","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"tohlh"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_YEAR,","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"doyelee0313"},"content":" VALID_TELEGRAM, VALID_MAJOR, VALID_REMARK, VALID_GROUPS);","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","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_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"tohlh"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL, VALID_YEAR,","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"doyelee0313"},"content":" VALID_TELEGRAM, VALID_MAJOR, VALID_REMARK, VALID_GROUPS);","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"tohlh"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_YEAR,","lastModifiedDate":"2024-03-17"},{"lineNumber":88,"author":{"gitId":"doyelee0313"},"content":" VALID_TELEGRAM, VALID_MAJOR, VALID_REMARK, VALID_GROUPS);","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"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":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"tohlh"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null, VALID_YEAR,","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"doyelee0313"},"content":" VALID_TELEGRAM, VALID_MAJOR, VALID_REMARK, VALID_GROUPS);","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"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":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"tohlh"},"content":" public void toModelType_invalidTelegram_throwsIllegalValueException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"tohlh"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_YEAR,","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"doyelee0313"},"content":" INVALID_TELEGRAM, VALID_MAJOR, VALID_REMARK, VALID_GROUPS);","lastModifiedDate":"2024-03-20"},{"lineNumber":107,"author":{"gitId":"tohlh"},"content":" String expectedMessage \u003d Telegram.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-17"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"tohlh"},"content":" public void toModelType_nullTelegram_throwsIllegalValueException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"tohlh"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_YEAR,","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"doyelee0313"},"content":" null, VALID_MAJOR, VALID_REMARK, VALID_GROUPS);","lastModifiedDate":"2024-03-20"},{"lineNumber":115,"author":{"gitId":"tohlh"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Telegram.class.getSimpleName());","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":120,"author":{"gitId":"STELLA-LYE"},"content":" public void toModelType_invalidMajor_throwsIllegalValueException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":122,"author":{"gitId":"STELLA-LYE"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_YEAR, VALID_TELEGRAM,","lastModifiedDate":"2024-03-18"},{"lineNumber":123,"author":{"gitId":"doyelee0313"},"content":" INVALID_MAJOR, VALID_REMARK, VALID_GROUPS);","lastModifiedDate":"2024-03-20"},{"lineNumber":124,"author":{"gitId":"STELLA-LYE"},"content":" String expectedMessage \u003d Major.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":129,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":130,"author":{"gitId":"tohlh"},"content":" public void toModelType_invalidYear_throwsIllegalValueException() {","lastModifiedDate":"2024-03-13"},{"lineNumber":131,"author":{"gitId":"tohlh"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_YEAR,","lastModifiedDate":"2024-03-15"},{"lineNumber":132,"author":{"gitId":"doyelee0313"},"content":" VALID_TELEGRAM, VALID_MAJOR, VALID_REMARK, VALID_GROUPS);","lastModifiedDate":"2024-03-20"},{"lineNumber":133,"author":{"gitId":"STELLA-LYE"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":134,"author":{"gitId":"tohlh"},"content":" String expectedMessage \u003d Year.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-15"},{"lineNumber":135,"author":{"gitId":"tohlh"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-13"},{"lineNumber":136,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":137,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":138,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":139,"author":{"gitId":"tohlh"},"content":" public void toModelType_nullYear_throwsIllegalValueException() {","lastModifiedDate":"2024-03-13"},{"lineNumber":140,"author":{"gitId":"tohlh"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, null,","lastModifiedDate":"2024-03-15"},{"lineNumber":141,"author":{"gitId":"doyelee0313"},"content":" VALID_TELEGRAM, VALID_MAJOR, VALID_REMARK, VALID_GROUPS);","lastModifiedDate":"2024-03-20"},{"lineNumber":142,"author":{"gitId":"tohlh"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Year.class.getSimpleName());","lastModifiedDate":"2024-03-15"},{"lineNumber":143,"author":{"gitId":"tohlh"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-13"},{"lineNumber":144,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":145,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":146,"author":{"gitId":"STELLA-LYE"},"content":" public void toModelType_nullMajor_throwsIllegalValueException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":147,"author":{"gitId":"tohlh"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_YEAR,","lastModifiedDate":"2024-03-13"},{"lineNumber":148,"author":{"gitId":"doyelee0313"},"content":" VALID_TELEGRAM, null, VALID_REMARK, VALID_GROUPS);","lastModifiedDate":"2024-03-20"},{"lineNumber":149,"author":{"gitId":"STELLA-LYE"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Major.class.getSimpleName());","lastModifiedDate":"2024-03-17"},{"lineNumber":150,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":153,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":154,"author":{"gitId":"doyelee0313"},"content":" public void toModelType_invalidGroups_throwsIllegalValueException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":155,"author":{"gitId":"tohlh"},"content":" List\u003cString\u003e invalidGroups \u003d new ArrayList\u003c\u003e(VALID_GROUPS);","lastModifiedDate":"2024-03-23"},{"lineNumber":156,"author":{"gitId":"tohlh"},"content":" invalidGroups.add(INVALID_GROUP);","lastModifiedDate":"2024-03-23"},{"lineNumber":157,"author":{"gitId":"tohlh"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_YEAR,","lastModifiedDate":"2024-03-17"},{"lineNumber":158,"author":{"gitId":"doyelee0313"},"content":" VALID_TELEGRAM, VALID_MAJOR, VALID_REMARK, invalidGroups);","lastModifiedDate":"2024-03-20"},{"lineNumber":159,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"doyelee0313":16,"STELLA-LYE":15,"-":93,"jocelyn-soh":1,"tohlh":37}},{"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":"tohlh"},"content":"import seedu.address.testutil.TypicalGroups;","lastModifiedDate":"2024-03-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.testutil.TypicalPersons;","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class JsonSerializableAddressBookTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonSerializableAddressBookTest\");","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final Path TYPICAL_PERSONS_FILE \u003d TEST_DATA_FOLDER.resolve(\"typicalPersonsAddressBook.json\");","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Path INVALID_PERSON_FILE \u003d TEST_DATA_FOLDER.resolve(\"invalidPersonAddressBook.json\");","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final Path DUPLICATE_PERSON_FILE \u003d TEST_DATA_FOLDER.resolve(\"duplicatePersonAddressBook.json\");","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"tohlh"},"content":" private static final Path TYPICAL_GROUPS_FILE \u003d TEST_DATA_FOLDER.resolve(\"typicalGroupsAddressBook.json\");","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void toModelType_typicalPersonsFile_success() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(TYPICAL_PERSONS_FILE,","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" AddressBook addressBookFromFile \u003d dataFromFile.toModelType();","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" AddressBook typicalPersonsAddressBook \u003d TypicalPersons.getTypicalAddressBook();","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertEquals(addressBookFromFile, typicalPersonsAddressBook);","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":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void toModelType_invalidPersonFile_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(INVALID_PERSON_FILE,","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, dataFromFile::toModelType);","lastModifiedDate":"2019-03-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","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_duplicatePersons_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(DUPLICATE_PERSON_FILE,","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, JsonSerializableAddressBook.MESSAGE_DUPLICATE_PERSON,","lastModifiedDate":"2019-03-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" dataFromFile::toModelType);","lastModifiedDate":"2019-03-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"tohlh"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":50,"author":{"gitId":"tohlh"},"content":" public void toModelType_typicalGroupsFile_success() throws Exception {","lastModifiedDate":"2024-03-23"},{"lineNumber":51,"author":{"gitId":"tohlh"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(TYPICAL_GROUPS_FILE,","lastModifiedDate":"2024-03-23"},{"lineNumber":52,"author":{"gitId":"tohlh"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2024-03-23"},{"lineNumber":53,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":54,"author":{"gitId":"tohlh"},"content":" System.out.println(\"asdfasdfasdf\" + dataFromFile);","lastModifiedDate":"2024-03-23"},{"lineNumber":55,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":56,"author":{"gitId":"tohlh"},"content":" AddressBook addressBookFromFile \u003d dataFromFile.toModelType();","lastModifiedDate":"2024-03-23"},{"lineNumber":57,"author":{"gitId":"tohlh"},"content":" AddressBook typicalGroupsAddressBook \u003d TypicalGroups.getTypicalAddressBook();","lastModifiedDate":"2024-03-23"},{"lineNumber":58,"author":{"gitId":"tohlh"},"content":" assertEquals(addressBookFromFile, typicalGroupsAddressBook);","lastModifiedDate":"2024-03-23"},{"lineNumber":59,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"-":47,"tohlh":13}},{"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":"doyelee0313"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-12-23"},{"lineNumber":10,"author":{"gitId":"STELLA-LYE"},"content":"import seedu.address.model.person.Major;","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-12-23"},{"lineNumber":14,"author":{"gitId":"jocelyn-soh"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"tohlh"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"tohlh"},"content":"import seedu.address.model.person.Year;","lastModifiedDate":"2024-03-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":"-"},"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":"STELLA-LYE"},"content":" descriptor.setMajor(person.getMajor());","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"tohlh"},"content":" descriptor.setTelegram(person.getTelegram());","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"jocelyn-soh"},"content":" descriptor.setRemark(person.getRemark());","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"doyelee0313"},"content":" descriptor.setGroups(person.getGroups());","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":51,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2017-12-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2017-12-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":67,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2017-12-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":72,"author":{"gitId":"tohlh"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-15"},{"lineNumber":73,"author":{"gitId":"tohlh"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":74,"author":{"gitId":"tohlh"},"content":" public EditPersonDescriptorBuilder withYear(String year) {","lastModifiedDate":"2024-03-15"},{"lineNumber":75,"author":{"gitId":"tohlh"},"content":" descriptor.setYear(new Year(year));","lastModifiedDate":"2024-03-15"},{"lineNumber":76,"author":{"gitId":"tohlh"},"content":" return this;","lastModifiedDate":"2024-03-15"},{"lineNumber":77,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":78,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":79,"author":{"gitId":"tohlh"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"tohlh"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"tohlh"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"tohlh"},"content":" public EditPersonDescriptorBuilder withTelegram(String year) {","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"tohlh"},"content":" descriptor.setTelegram(new Telegram(year));","lastModifiedDate":"2024-03-19"},{"lineNumber":84,"author":{"gitId":"tohlh"},"content":" return this;","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":88,"author":{"gitId":"STELLA-LYE"},"content":" * Sets the {@code Major} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":90,"author":{"gitId":"STELLA-LYE"},"content":" public EditPersonDescriptorBuilder withMajor(String major) {","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"STELLA-LYE"},"content":" descriptor.setMajor(new Major(major));","lastModifiedDate":"2024-03-17"},{"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":"jocelyn-soh"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"jocelyn-soh"},"content":" * Sets the {@code Remark} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"jocelyn-soh"},"content":" public EditPersonDescriptorBuilder withRemark(String remark) {","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"jocelyn-soh"},"content":" descriptor.setRemark(new Remark(remark));","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":104,"author":{"gitId":"doyelee0313"},"content":" * Parses the {@code groups} into a {@code Set\u003cGroup\u003e} and set it to the {@code EditPersonDescriptor}","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":107,"author":{"gitId":"doyelee0313"},"content":" public EditPersonDescriptorBuilder withGroups(String... groups) {","lastModifiedDate":"2024-03-20"},{"lineNumber":108,"author":{"gitId":"doyelee0313"},"content":" Set\u003cGroup\u003e groupSet \u003d Stream.of(groups).map(Group::new).collect(Collectors.toSet());","lastModifiedDate":"2024-03-20"},{"lineNumber":109,"author":{"gitId":"doyelee0313"},"content":" descriptor.setGroups(groupSet);","lastModifiedDate":"2024-03-20"},{"lineNumber":110,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":116,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"doyelee0313":6,"STELLA-LYE":5,"-":81,"jocelyn-soh":6,"tohlh":18}},{"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":"doyelee0313"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":"import seedu.address.model.person.Major;","lastModifiedDate":"2024-03-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":"jocelyn-soh"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"tohlh"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"tohlh"},"content":"import seedu.address.model.person.Year;","lastModifiedDate":"2024-03-13"},{"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":"tohlh"},"content":" public static final String DEFAULT_YEAR \u003d \"1\";","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"STELLA-LYE"},"content":" public static final String DEFAULT_MAJOR \u003d \"Computer Science\";","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"tohlh"},"content":" public static final String DEFAULT_TELEGRAM \u003d \"amy123\";","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"jocelyn-soh"},"content":" public static final String DEFAULT_REMARK \u003d \"shy\";","lastModifiedDate":"2024-03-19"},{"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":"tohlh"},"content":" private Year year;","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"STELLA-LYE"},"content":" private Major major;","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"tohlh"},"content":" private Telegram telegram;","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"jocelyn-soh"},"content":" private Remark remark;","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"doyelee0313"},"content":" private Set\u003cGroup\u003e groups;","lastModifiedDate":"2024-03-20"},{"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":"tohlh"},"content":" year \u003d new Year(DEFAULT_YEAR);","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"STELLA-LYE"},"content":" major \u003d new Major(DEFAULT_MAJOR);","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"tohlh"},"content":" telegram \u003d new Telegram(DEFAULT_TELEGRAM);","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"jocelyn-soh"},"content":" remark \u003d new Remark(DEFAULT_REMARK);","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"doyelee0313"},"content":" groups \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-20"},{"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":"tohlh"},"content":" year \u003d personToCopy.getYear();","lastModifiedDate":"2024-03-13"},{"lineNumber":60,"author":{"gitId":"STELLA-LYE"},"content":" major \u003d personToCopy.getMajor();","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"tohlh"},"content":" telegram \u003d personToCopy.getTelegram();","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"jocelyn-soh"},"content":" remark \u003d personToCopy.getRemark();","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"doyelee0313"},"content":" groups \u003d new HashSet\u003c\u003e(personToCopy.getGroups());","lastModifiedDate":"2024-03-20"},{"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":"doyelee0313"},"content":" * Parses the {@code groups} into a {@code Set\u003cGroup\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":77,"author":{"gitId":"doyelee0313"},"content":" public PersonBuilder withGroups(String ... groups) {","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"doyelee0313"},"content":" this.groups \u003d SampleDataUtil.getGroupSet(groups);","lastModifiedDate":"2024-03-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":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":83,"author":{"gitId":"STELLA-LYE"},"content":" * Sets the {@code Major} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":85,"author":{"gitId":"STELLA-LYE"},"content":" public PersonBuilder withMajor(String major) {","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"STELLA-LYE"},"content":" this.major \u003d new Major(major);","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} 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":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":94,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20"},{"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":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":100,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":102,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20"},{"lineNumber":103,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":106,"author":{"gitId":"tohlh"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"tohlh"},"content":" * Sets the {@code Telegram} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"tohlh"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":109,"author":{"gitId":"tohlh"},"content":" public PersonBuilder withTelegram(String telegram) {","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"tohlh"},"content":" this.telegram \u003d new Telegram(telegram);","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"tohlh"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"tohlh"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":115,"author":{"gitId":"tohlh"},"content":" * Sets the {@code Year} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-13"},{"lineNumber":116,"author":{"gitId":"tohlh"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":117,"author":{"gitId":"tohlh"},"content":" public PersonBuilder withYear(String year) {","lastModifiedDate":"2024-03-13"},{"lineNumber":118,"author":{"gitId":"tohlh"},"content":" this.year \u003d new Year(year);","lastModifiedDate":"2024-03-13"},{"lineNumber":119,"author":{"gitId":"tohlh"},"content":" return this;","lastModifiedDate":"2024-03-13"},{"lineNumber":120,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":121,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":122,"author":{"gitId":"jocelyn-soh"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":123,"author":{"gitId":"jocelyn-soh"},"content":" * Sets the {@code Remark} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-19"},{"lineNumber":124,"author":{"gitId":"jocelyn-soh"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":125,"author":{"gitId":"jocelyn-soh"},"content":" public PersonBuilder withRemark(String remark) {","lastModifiedDate":"2024-03-19"},{"lineNumber":126,"author":{"gitId":"jocelyn-soh"},"content":" this.remark \u003d new Remark(remark);","lastModifiedDate":"2024-03-19"},{"lineNumber":127,"author":{"gitId":"jocelyn-soh"},"content":" return this;","lastModifiedDate":"2024-03-19"},{"lineNumber":128,"author":{"gitId":"jocelyn-soh"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":129,"author":{"gitId":"jocelyn-soh"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":130,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05"},{"lineNumber":131,"author":{"gitId":"doyelee0313"},"content":" return new Person(name, phone, email, year, telegram, major, remark, groups);","lastModifiedDate":"2024-03-20"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":134,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03"}],"authorContributionMap":{"doyelee0313":8,"STELLA-LYE":8,"-":79,"jocelyn-soh":13,"tohlh":26}},{"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":"doyelee0313"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GROUP;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"STELLA-LYE"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MAJOR;","lastModifiedDate":"2024-03-18"},{"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":"jocelyn-soh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_YEAR;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2018-03-26"},{"lineNumber":16,"author":{"gitId":"doyelee0313"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static String getAddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":28,"author":{"gitId":"-"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2017-03-29"},{"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":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" sb.append(PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2017-06-06"},{"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":"tohlh"},"content":" sb.append(PREFIX_YEAR + person.getYear().value + \" \");","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"STELLA-LYE"},"content":" sb.append(PREFIX_MAJOR + person.getMajor().value + \" \");","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"tohlh"},"content":" sb.append(PREFIX_TELEGRAM + person.getTelegram().value + \" \");","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"jocelyn-soh"},"content":" sb.append(PREFIX_REMARK + person.getRemark().value + \" \");","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"doyelee0313"},"content":" person.getGroups().stream().forEach(","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"doyelee0313"},"content":" s -\u003e sb.append(PREFIX_GROUP + s.groupName + \" \")","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":57,"author":{"gitId":"STELLA-LYE"},"content":" descriptor.getMajor().ifPresent(major -\u003e sb.append(PREFIX_MAJOR).append(major.value).append(\" \"));","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"tohlh"},"content":" descriptor.getYear().ifPresent(year -\u003e sb.append(PREFIX_YEAR).append(year.value).append(\" \"));","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"jocelyn-soh"},"content":" descriptor.getTelegram().ifPresent(telegram -\u003e sb.append(PREFIX_TELEGRAM).append(telegram.value).append(\" \"));","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"jocelyn-soh"},"content":" descriptor.getRemark().ifPresent(remark-\u003e sb.append(PREFIX_REMARK).append(remark.value).append(\" \"));","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"doyelee0313"},"content":" if (descriptor.getGroups().isPresent()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"doyelee0313"},"content":" Set\u003cGroup\u003e groups \u003d descriptor.getGroups().get();","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"doyelee0313"},"content":" if (groups.isEmpty()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"doyelee0313"},"content":" sb.append(PREFIX_GROUP);","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26"},{"lineNumber":66,"author":{"gitId":"doyelee0313"},"content":" groups.forEach(s -\u003e sb.append(PREFIX_GROUP).append(s.groupName).append(\" \"));","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05"}],"authorContributionMap":{"doyelee0313":9,"STELLA-LYE":3,"-":50,"jocelyn-soh":4,"tohlh":5}},{"path":"src/test/java/seedu/address/testutil/TypicalGroups.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"tohlh"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-23"},{"lineNumber":2,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":3,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GROUP_LAB;","lastModifiedDate":"2024-03-23"},{"lineNumber":4,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GROUP_TUTORIAL;","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"tohlh"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"tohlh"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"tohlh"},"content":"import java.util.List;","lastModifiedDate":"2024-03-23"},{"lineNumber":9,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"tohlh"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"tohlh"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"tohlh"},"content":"/**","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"tohlh"},"content":" * A utility class containing a list of {@code Group} objects to be used in tests.","lastModifiedDate":"2024-03-23"},{"lineNumber":15,"author":{"gitId":"tohlh"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":16,"author":{"gitId":"tohlh"},"content":"public class TypicalGroups {","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":18,"author":{"gitId":"tohlh"},"content":" public static final Group TUT04 \u003d new Group(VALID_GROUP_TUTORIAL);","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"tohlh"},"content":" public static final Group LAB10 \u003d new Group(VALID_GROUP_LAB);","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"tohlh"},"content":" private TypicalGroups() {} // prevents instantiation","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"tohlh"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"tohlh"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"tohlh"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"tohlh"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2024-03-23"},{"lineNumber":27,"author":{"gitId":"tohlh"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2024-03-23"},{"lineNumber":28,"author":{"gitId":"tohlh"},"content":" for (Group group : getTypicalGroups()) {","lastModifiedDate":"2024-03-23"},{"lineNumber":29,"author":{"gitId":"tohlh"},"content":" ab.addGroup(group);","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"tohlh"},"content":" return ab;","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":33,"author":{"gitId":"tohlh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":34,"author":{"gitId":"tohlh"},"content":" public static List\u003cGroup\u003e getTypicalGroups() {","lastModifiedDate":"2024-03-23"},{"lineNumber":35,"author":{"gitId":"tohlh"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(TUT04, LAB10));","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"tohlh"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":37,"author":{"gitId":"tohlh"},"content":"}","lastModifiedDate":"2024-03-23"}],"authorContributionMap":{"tohlh":37}},{"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":"2017-08-22"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":5,"author":{"gitId":"doyelee0313"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GROUP_LAB;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"doyelee0313"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GROUP_TUTORIAL;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"STELLA-LYE"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MAJOR_AMY;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"STELLA-LYE"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MAJOR_BOB;","lastModifiedDate":"2024-03-18"},{"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":"jocelyn-soh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_REMARK_OUTSPOKEN;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"jocelyn-soh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_REMARK_SHY;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_YEAR_AMY;","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"tohlh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_YEAR_BOB;","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07"},{"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":"STELLA-LYE"},"content":" .withMajor(\"Computer Science\").withEmail(\"alice@example.com\")","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"tohlh"},"content":" .withYear(\"1\").withTelegram(\"alicepauline\")","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"jocelyn-soh"},"content":" .withPhone(\"94351253\").withRemark(\"shy\")","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"STELLA-LYE"},"content":" .withGroups(\"TUT10\", \"LAB05\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10"},{"lineNumber":38,"author":{"gitId":"STELLA-LYE"},"content":" .withMajor(\"Computer Science\")","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"tohlh"},"content":" .withYear(\"1\").withTelegram(\"bensonmeier\")","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"jocelyn-soh"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\").withRemark(\"always skip tutorials\")","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"doyelee0313"},"content":" .withGroups(\"TUT10\", \"LAB05\").build();","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"STELLA-LYE"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\")","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"tohlh"},"content":" .withPhone(\"95352563\").withTelegram(\"carlkurz\")","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"jocelyn-soh"},"content":" .withMajor(\"Computer Science\").withEmail(\"heinz@example.com\").withRemark(\"\")","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"doyelee0313"},"content":" .withYear(\"1\").withGroups(\"TUT10\").build();","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"STELLA-LYE"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\")","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"STELLA-LYE"},"content":" .withPhone(\"87652533\")","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"STELLA-LYE"},"content":" .withMajor(\"Computer Engineering\").withEmail(\"corelia@example.com\")","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"jocelyn-soh"},"content":" .withYear(\"1\").withTelegram(\"danielmeier\").withRemark(\"hardworking\")","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"doyelee0313"},"content":" .withGroups(\"TUT10\").build();","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"STELLA-LYE"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\")","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"STELLA-LYE"},"content":" .withPhone(\"9482224\")","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"STELLA-LYE"},"content":" .withEmail(\"werner@example.com\").withMajor(\"Computer Engineering\")","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"doyelee0313"},"content":" .withYear(\"2\").withTelegram(\"ellemeyer\").withRemark(\"strong foundations\")","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"doyelee0313"},"content":" .withGroups(\"TUT10\").build();","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"STELLA-LYE"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\")","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"STELLA-LYE"},"content":" .withPhone(\"9482427\")","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"STELLA-LYE"},"content":" .withEmail(\"lydia@example.com\").withMajor(\"Business Analytics\")","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"doyelee0313"},"content":" .withYear(\"2\").withTelegram(\"fionakunz1\").withRemark(\"Always ask questions in class\")","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"doyelee0313"},"content":" .withGroups(\"TUT10\").build();","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"STELLA-LYE"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\")","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"STELLA-LYE"},"content":" .withPhone(\"9482442\")","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"STELLA-LYE"},"content":" .withEmail(\"anna@example.com\").withMajor(\"Business Analytics\")","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"doyelee0313"},"content":" .withYear(\"2\").withTelegram(\"georgebest1\").withRemark(\"\")","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"doyelee0313"},"content":" .withGroups(\"TUT10\").build();","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2018-01-10"},{"lineNumber":69,"author":{"gitId":"STELLA-LYE"},"content":" .withEmail(\"stefan@example.com\").withYear(\"2\").withTelegram(\"hoon\").withMajor(\"Computer Science\").build();","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2018-01-10"},{"lineNumber":71,"author":{"gitId":"STELLA-LYE"},"content":" .withEmail(\"hans@example.com\").withYear(\"3\").withTelegram(\"ida1\").withMajor(\"Business Analytics\").build();","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2018-01-10"},{"lineNumber":75,"author":{"gitId":"tohlh"},"content":" .withEmail(VALID_EMAIL_AMY).withYear(VALID_YEAR_AMY).withTelegram(VALID_TELEGRAM_AMY)","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"doyelee0313"},"content":" .withMajor(VALID_MAJOR_AMY).withRemark(VALID_REMARK_SHY).withGroups(VALID_GROUP_TUTORIAL).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2018-01-10"},{"lineNumber":78,"author":{"gitId":"tohlh"},"content":" .withEmail(VALID_EMAIL_BOB).withYear(VALID_YEAR_BOB).withTelegram(VALID_TELEGRAM_BOB)","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"doyelee0313"},"content":" .withMajor(VALID_MAJOR_BOB).withRemark(VALID_REMARK_OUTSPOKEN).withGroups(VALID_GROUP_LAB,","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"doyelee0313"},"content":" VALID_GROUP_TUTORIAL)","lastModifiedDate":"2024-03-20"},{"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":{"doyelee0313":14,"STELLA-LYE":20,"-":52,"jocelyn-soh":6,"tohlh":9}}] diff --git a/AY2324S2-CS2103T-W10-4_tp_master/commits.json b/AY2324S2-CS2103T-W10-4_tp_master/commits.json index a2d0da4f..3dd236b8 100644 --- a/AY2324S2-CS2103T-W10-4_tp_master/commits.json +++ b/AY2324S2-CS2103T-W10-4_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"doyelee0313":[{"date":"2024-03-05","commitResults":[{"hash":"21e7fd316d98570476976d8bfa3a73cc647c0439","isMergeCommit":false,"messageTitle":"Update Doye AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":16,"deletions":15}}},{"hash":"11996a91c0bd56c04e83706baa8ec3280adb5487","isMergeCommit":true,"messageTitle":"Merge pull request #1 from AY2324S2-CS2103T-W10-4/master","messageBody":"Update Doye AboutUs","fileTypesAndContributionMap":{}}]},{"date":"2024-03-06","commitResults":[{"hash":"3cd2515a6a52d379fb164e314655685b905a8a78","isMergeCommit":false,"messageTitle":"Updated README","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":7}}},{"hash":"9eae64f12dcf5243dcfd1162642bcf9deb24791b","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W10-4:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"90799a21f0f5973cb73f121dc973693e749c53dd","isMergeCommit":false,"messageTitle":"Update AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-11","commitResults":[{"hash":"0d895a76bc39d3d60115b7aacd6ac439a94a7a49","isMergeCommit":false,"messageTitle":"changed help window URL","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-20","commitResults":[{"hash":"708eac1b923901d68a6dedd18dcebbc504037bc9","isMergeCommit":false,"messageTitle":"changed tag function to group function","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":212,"deletions":211},"docs":{"insertions":18,"deletions":18},"test-code":{"insertions":197,"deletions":189}}},{"hash":"e30e212c79165451e50429d81dc75d4d961a7e9a","isMergeCommit":false,"messageTitle":"made group compulsory","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"407eb42489c91bcfd6d3b787c0d7b9ee25a752f2","isMergeCommit":false,"messageTitle":"undo","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"a77e3157eb98cf6408ae9e134438046a4dd86aa0","isMergeCommit":false,"messageTitle":"update UserGuide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":9}}}]},{"date":"2024-03-21","commitResults":[{"hash":"9e7f03c5e8c71424bfd077e2e7a66203e26075fe","isMergeCommit":false,"messageTitle":"update UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}},{"hash":"d37345f5cd09dd71fd96c987e1b98d7849691b2f","isMergeCommit":true,"messageTitle":"Merge pull request #49 from jocelyn-soh/update-user-guide","messageBody":"Update user guide","tags":["v1.2"],"fileTypesAndContributionMap":{}}]}],"STELLA-LYE":[{"date":"2024-03-04","commitResults":[{"hash":"09ba9eb1ce42d538c3a5ccc09292c0b27252ceb3","isMergeCommit":true,"messageTitle":"Merge pull request #6 from tohlh/update-about-me","messageBody":"Add tohlh\u0027s personal info","fileTypesAndContributionMap":{}},{"hash":"a79bf0389bed7ba3dfee07f868f51863ca55fa37","isMergeCommit":false,"messageTitle":"Update Stella AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":17,"deletions":4}}}]},{"date":"2024-03-06","commitResults":[{"hash":"9c42c06c77fd31f9b7a7d25fb1571db8eb05abfe","isMergeCommit":false,"messageTitle":"Change stella image to png file","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"54fbc751a8b00134cc6d6d724f110ff7f504af2e","isMergeCommit":true,"messageTitle":"Merge pull request #17 from jocelyn-soh/site-wide-settings","messageBody":"Update site-wide settings","fileTypesAndContributionMap":{}},{"hash":"cac0ce66c72aad670f38aabfcb17baaa9cafd6fc","isMergeCommit":false,"messageTitle":"Update DeveloperGuide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":146,"deletions":26}}}]},{"date":"2024-03-07","commitResults":[{"hash":"e6b52d7b54a2a7366474f78ece3e37878de76d55","isMergeCommit":false,"messageTitle":"Update png file","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-09","commitResults":[{"hash":"13c1cd4d82ec512adccb0ac6a5917965e3a5ddb3","isMergeCommit":false,"messageTitle":"Update delete command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4}}}]},{"date":"2024-03-11","commitResults":[{"hash":"1ea243fb0031b17bdc49beb7ce45bcfcd4995201","isMergeCommit":true,"messageTitle":"Merge pull request #26 from doyelee0313/help-window-modification","messageBody":"Changed help window URL","fileTypesAndContributionMap":{}},{"hash":"6e0328bbe19c75c8f3d604ad5c1af05cd732fe65","isMergeCommit":false,"messageTitle":"Update UserGuide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":117,"deletions":77}}},{"hash":"b09b292491c4916632d398a76da9d1a1c556efdd","isMergeCommit":false,"messageTitle":"Update UserGuide for merge","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-17","commitResults":[{"hash":"af73f8af4fa2fee122b8ddc0773bfe1142b1b348","isMergeCommit":false,"messageTitle":"Update Address field to Major","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":71,"deletions":71},"other":{"insertions":19,"deletions":19},"docs":{"insertions":59,"deletions":59},"test-code":{"insertions":81,"deletions":81}}},{"hash":"b3dbc1aa8b03e04b1d02bfb10065b1093bb41c27","isMergeCommit":false,"messageTitle":"Update Student Major test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":119,"deletions":119}}},{"hash":"abfb02c6e1f2fe44b5dd69c58a8f21daaa24be7b","isMergeCommit":false,"messageTitle":"Debug major test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"test-code":{"insertions":31,"deletions":31}}},{"hash":"a8456d8b6b3ef0ccb901a5d6bad19994369a4bb2","isMergeCommit":false,"messageTitle":"Debug file names and test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"other":{"insertions":6,"deletions":6},"test-code":{"insertions":3,"deletions":3}}}]},{"date":"2024-03-18","commitResults":[{"hash":"967a886bbc2fd2427455f5243442a292e73da355","isMergeCommit":false,"messageTitle":"Debug Checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":9},"test-code":{"insertions":25,"deletions":24}}},{"hash":"f243ba1e567073008ad2d5082cc01d40db3090ef","isMergeCommit":false,"messageTitle":"Add restricted computing majors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1},"test-code":{"insertions":21,"deletions":18}}},{"hash":"5934c874cf486a1ed4c894c19ccd02553a124bd9","isMergeCommit":false,"messageTitle":"Debug all test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":4,"deletions":0}}},{"hash":"8825db4296937db4b3ccedf7c3a9b537c5eb44dd","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into Update-Studentmajor","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"0efb2292a329d3ffadcf7dafe3a4a904046f4259","isMergeCommit":false,"messageTitle":"Debug checkstyle error","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"ff64c2e9fb056352fc7b2a68c7392551dc9e5a23","isMergeCommit":true,"messageTitle":"Update with tutorial","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b794b3c3729d9dc62f52d5e446a50919be7c9a96","isMergeCommit":false,"messageTitle":"Resolve merge errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"test-code":{"insertions":11,"deletions":11}}}]},{"date":"2024-03-19","commitResults":[{"hash":"8ddcd5a386c0b0f684a40745d9c9cf94d7cdb79d","isMergeCommit":true,"messageTitle":"Merge pull request #37 from jocelyn-soh/add-remarks","messageBody":"Add Remark field to Person","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"01a41922b56717975e0cf293b12dbb491e250aaf","isMergeCommit":true,"messageTitle":"Merge pull request #39 from doyelee0313/tag-to-group","messageBody":"changed tag function to group function","fileTypesAndContributionMap":{}},{"hash":"a1a2dd0f8016a9dda655a14a4c4716ba06703de0","isMergeCommit":true,"messageTitle":"Merge pull request #44 from tohlh/update-uml","messageBody":"Add Year and Telegram fields","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"dd24d4ff46ef971d65bf5740178f52561caf3be6","isMergeCommit":false,"messageTitle":"Update filter by group feature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":190,"deletions":0}}},{"hash":"78e0ace91bb97f7ed5dd90a258d0e2da0e0ddea3","isMergeCommit":false,"messageTitle":"Update filter feature to display error message when invalid group format is entered","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":38}}},{"hash":"d55951cf211a329e8c882345ff034629403ef1c2","isMergeCommit":false,"messageTitle":"Update javaDoc comments q","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":9}}},{"hash":"831d3b79c4053e7c44d1ce2b43f4c6ae86d8e9a8","isMergeCommit":false,"messageTitle":"Add test cases for filter feature and pass all checkstyle tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":220,"deletions":2}}},{"hash":"4c8824ebf056cdc8a1f643c7b960e8a6fb1d3219","isMergeCommit":false,"messageTitle":"Update UML diagrams","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":23,"deletions":2}}},{"hash":"4bb759deace6e8885d45f5ac02cf0365f3c6626d","isMergeCommit":false,"messageTitle":"Add delete activity diagram","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":1}}},{"hash":"fd6aacc664930c88c1885afb004d4d8688cae4f8","isMergeCommit":false,"messageTitle":"Fix checkstyle error","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"c68da104904ef2ab95e442bcd125e7b6460df2a9","isMergeCommit":true,"messageTitle":"Merge pull request #47 from doyelee0313/Update-UG","messageBody":"Update UG","fileTypesAndContributionMap":{}},{"hash":"36c8f9713eabb34932a14c6ad30299eabd0f6fef","isMergeCommit":false,"messageTitle":"Update user guide with most recent commands and features","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":51,"deletions":28}}},{"hash":"74164ecf1d4bbcd3504e488cadfcc98ddba0fa2e","isMergeCommit":false,"messageTitle":"Update Ui","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":109,"deletions":57}}},{"hash":"f45d75c519b84faa1f963edf82be660532ed7d72","isMergeCommit":false,"messageTitle":"Update user guide images","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"docs":{"insertions":7,"deletions":6}}}]}],"jocelyn-soh":[{"date":"2024-03-06","commitResults":[{"hash":"fa540c85f9e944c25cf7f5d4cb0e417073cbb9c2","isMergeCommit":true,"messageTitle":"Merge pull request #10 from tohlh/update-about-me","messageBody":"Change picture to PNG","fileTypesAndContributionMap":{}},{"hash":"4b61d1733359d3630fefacffccdc9c538096254d","isMergeCommit":false,"messageTitle":"Update Jocelyn\u0027s AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":16,"deletions":52}}},{"hash":"3db2a4f846676ad07fb0c133e880bc804bd74d46","isMergeCommit":true,"messageTitle":"Merge pull request #12 from STELLA-LYE/Update-Stella-AboutUs","messageBody":"Change stella image to png file","fileTypesAndContributionMap":{}},{"hash":"0cb2eb404ff9a410156de0ca0b01b871da78f76b","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/jocelyn-soh/tp into branch-AboutUs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"6bd129a3acc610c618221f18ee185e3a901e45ea","isMergeCommit":false,"messageTitle":"Remove whitespaces in AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"f019c6f317ec721faf9e14d38bb355f728ca6980","isMergeCommit":false,"messageTitle":"Update site-wide settings","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":8}}}]},{"date":"2024-03-13","commitResults":[{"hash":"d277565d858bf91856b6c6829bca447891fc46b9","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/jocelyn-soh/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ce556ec37bb9557792eed34ad2df67f829fa2cb8","isMergeCommit":false,"messageTitle":"Update StringUtil.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":10}}},{"hash":"4c8ed2e98dba41c98e125fe3bde5c063f99027e0","isMergeCommit":false,"messageTitle":"Update test cases and method names","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":27,"deletions":25}}},{"hash":"5a92282e0989585c01fe61cc208633b1341daa2b","isMergeCommit":false,"messageTitle":"Rearrange import statements in StringUtil.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"ad6d22b7e208c1f417fbbfbf5d8c2c6ed9a65c87","isMergeCommit":false,"messageTitle":"Rearrange import statements in StringUtilTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":4}}},{"hash":"5c92e70ad8a99aef6908dc61671a7cf184bbba0d","isMergeCommit":false,"messageTitle":"Fix checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1},"test-code":{"insertions":22,"deletions":12}}},{"hash":"7a8f60df74f112a6162933e62457e9d8f4ca7c71","isMergeCommit":false,"messageTitle":"Fix checkstyle issue","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"85ea6f7779c0f675c9dd79fadf78a73760bedcf8","isMergeCommit":false,"messageTitle":"Update UserGuide for find command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":1}}},{"hash":"94698245f047162f4957294a15dbd8cea7f9959d","isMergeCommit":false,"messageTitle":"Update find command\u0027s examples in UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-15","commitResults":[{"hash":"aea933366009300ff68b84a25a01c422b170b3ce","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W10-4:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"85ca1efef176a957cc9237c3e3896986bac70013","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/jocelyn-soh/tp","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-17","commitResults":[{"hash":"a8db2941fdea53a9b4a2719df556125c604aaa05","isMergeCommit":true,"messageTitle":"Merge pull request #33 from tohlh/person-fields","messageBody":"Add Telegram field","fileTypesAndContributionMap":{}}]},{"date":"2024-03-18","commitResults":[{"hash":"df14b410d9ef6ec50ea2ebc9cdd19aac30014d81","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W10-4:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"08ad3f6f085e5958b086ae9e4107294f7d328e00","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/jocelyn-soh/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"bd833b17527fc5456dd380eb3c1742ab49028c73","isMergeCommit":true,"messageTitle":"Merge pull request #36 from STELLA-LYE/Update-Studentmajor","messageBody":"Update studentmajor","fileTypesAndContributionMap":{}},{"hash":"aefb0ca574af1dbcd9d87883e037591fc3fcd45b","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W10-4:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"128c0a5b240aaeecef238a3a2c46cec36bca3c35","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/jocelyn-soh/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d573cc7fa7017f60f847c59bc542f1359d8f6888","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/jocelyn-soh/tp into add-remarks","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-19","commitResults":[{"hash":"e32c9569387927e1d951b24b228057f63e2fd8cc","isMergeCommit":false,"messageTitle":"Add an optional remark field in Person","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":154,"deletions":10}}},{"hash":"9a85a06764f33026dba270ed871c6b11fdf1bc5f","isMergeCommit":true,"messageTitle":"Merge pull request #38 from tohlh/fix-edit-person-descriptor-fields","messageBody":"Fix edit person descriptor fields","fileTypesAndContributionMap":{}},{"hash":"a169f64681467b33a46bd4dac4d5d04a4da1410f","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W10-4:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"721b7c6a71a77603496b82fa034d1800acb278ef","isMergeCommit":false,"messageTitle":"Update Remark.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":5},"test-code":{"insertions":2,"deletions":0}}},{"hash":"21161f9562c331dc452c18211873107890b98bba","isMergeCommit":false,"messageTitle":"Update test cases for remark field","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":3},"test-code":{"insertions":68,"deletions":25}}},{"hash":"cf1e87bcb080efb28749f32ed49cf38cace8c604","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/jocelyn-soh/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ebe571eda327b00f2db1b686b1a77447f3a0cbbd","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/jocelyn-soh/tp into add-remarks","messageBody":"# Conflicts:\n#\tsrc/main/java/seedu/address/model/person/Person.java\n#\tsrc/test/java/seedu/address/testutil/EditPersonDescriptorBuilder.java\n","fileTypesAndContributionMap":{}},{"hash":"91ba862fcf467c732ac6eab4ac5328104f55dfdb","isMergeCommit":false,"messageTitle":"Update Remark.java to remove unnecessary checking","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":8},"docs":{"insertions":1,"deletions":1}}},{"hash":"4a7ce727155b435f955f4fffdafa251e17ff269f","isMergeCommit":false,"messageTitle":"Update test cases to remove unnecessary remark checking","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":10},"test-code":{"insertions":0,"deletions":1}}},{"hash":"1bb7c7955e1c7b703ab5d91df94ac89f61c1c474","isMergeCommit":false,"messageTitle":"Update parser\u0027s test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":30,"deletions":7}}},{"hash":"1c9535d35f0e7d811a78b510f8d040527db3876e","isMergeCommit":false,"messageTitle":"Update address test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":16,"deletions":10}}},{"hash":"6f07bff5777bf5f6dd6e52173f51a61f2394daeb","isMergeCommit":false,"messageTitle":"Update test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":10},"test-code":{"insertions":47,"deletions":10}}}]},{"date":"2024-03-20","commitResults":[{"hash":"db16d28c56bfca8162ec7d6cb7432258da2f2f9d","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/jocelyn-soh/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"83232bee5e54570b041a468445fa124713975928","isMergeCommit":true,"messageTitle":"Merge pull request #41 from doyelee0313/Update-UG","messageBody":"update UserGuide","fileTypesAndContributionMap":{}},{"hash":"2a5156a7b63b82a2ba60c275a4568215d2bde08a","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W10-4:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"1ad33c2d8d03262807444ee6221189fa0f8e81c9","isMergeCommit":false,"messageTitle":"Update PersonCard with year, telegram and remark","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":26,"deletions":16}}},{"hash":"c906b7031f9977d2757ad615eee703a36912a66f","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/jocelyn-soh/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"448d628802df6c3e0d0f8253bd4fa4a5cf92bc88","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/jocelyn-soh/tp into ui-personcard","messageBody":"# Conflicts:\n#\tsrc/main/java/seedu/address/ui/PersonCard.java\n","fileTypesAndContributionMap":{}},{"hash":"36b13bfa4bc5be6480c660b41e386ee91daa3986","isMergeCommit":false,"messageTitle":"Add PersonCardTest.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":28,"deletions":0},"other":{"insertions":12,"deletions":0},"test-code":{"insertions":53,"deletions":0}}},{"hash":"28ff501c260ec88d26b135ecf85d788e927dea1b","isMergeCommit":false,"messageTitle":"Remove test cases for group","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":18}}},{"hash":"c7e5c8829200b30ab17f99f1b157c076aab80e65","isMergeCommit":false,"messageTitle":"Debug PersonCardTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":3}}},{"hash":"1c6b797572215e1a88ae7e63deea05de983c8632","isMergeCommit":false,"messageTitle":"Revert \"Debug PersonCardTest.java\"","messageBody":"This reverts commit c7e5c8829200b30ab17f99f1b157c076aab80e65.\n","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":0}}},{"hash":"f186aee8d3d9c3f5aa1f8b93ac0b3cd9797a060a","isMergeCommit":false,"messageTitle":"Revert \"Remove test cases for group\"","messageBody":"This reverts commit 28ff501c260ec88d26b135ecf85d788e927dea1b.\n","fileTypesAndContributionMap":{"test-code":{"insertions":18,"deletions":0}}},{"hash":"edde8361a6e9d5f2d848824415e921d5bb7b5dcd","isMergeCommit":false,"messageTitle":"Revert \"Add PersonCardTest.java\"","messageBody":"This reverts commit 36b13bfa4bc5be6480c660b41e386ee91daa3986.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":28},"other":{"insertions":0,"deletions":12},"test-code":{"insertions":0,"deletions":53}}}]},{"date":"2024-03-21","commitResults":[{"hash":"4e7887e979c83259bcd639a048b0ee4cb2193d66","isMergeCommit":true,"messageTitle":"Merge pull request #46 from STELLA-LYE/Update-UML","messageBody":"Update uml","fileTypesAndContributionMap":{}},{"hash":"bb42cb333ec978d405bdb53e7740da196411ca83","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/jocelyn-soh/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"538392a8c31477ab38579780b32b2c5e502c52e2","isMergeCommit":false,"messageTitle":"Update existing UML diagrams","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":0}}},{"hash":"da9d11c9f8c1ca29cbb60c7f0b1ce0e28a46004b","isMergeCommit":false,"messageTitle":"Update ModelClassDiagram.puml","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":5}}},{"hash":"81f68140afa0e92e3ee96bc41580a89f9d86005b","isMergeCommit":false,"messageTitle":"Add FindSequenceDiagram.puml","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":79,"deletions":0}}},{"hash":"0f233c1cd9a93c7cb3957faad8de02c7ddb6b1a0","isMergeCommit":false,"messageTitle":"Update FindSequenceDiagram.uml","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"3e7018003c7f80a0c3bb92c24577a3697f94cf8e","isMergeCommit":false,"messageTitle":"Add ListSequenceDiagram.uml","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":52,"deletions":0}}},{"hash":"c8779de710bcd1cfd7448c7e8c59fe24341d2296","isMergeCommit":true,"messageTitle":"Merge pull request #48 from STELLA-LYE/Update-UG","messageBody":"Update ug","fileTypesAndContributionMap":{}},{"hash":"fde590a50b3b9cbe980c5dfc9d37dc96e783780a","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W10-4:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"464ed4940512d289d84d7f249610c002bba45a76","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":10}}},{"hash":"13422dfb3e89894a9c42799f3fd15ebc071e1e7a","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/jocelyn-soh/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"62ca28c85f954e29fee76c8acc07169ccda6be91","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/jocelyn-soh/tp into update-user-guide","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"1de8b1b774d1fa60219570dd3c00ce5f8154bb4d","isMergeCommit":true,"messageTitle":"Merge pull request #45 from STELLA-LYE/Update-filterGroup","messageBody":"Update filter group","fileTypesAndContributionMap":{}},{"hash":"ae0d1d945396bc9f24436867d842fbf259a71138","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":12}}},{"hash":"2f94e54e45ca1e5bec36c826039d83ff0c77984d","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W10-4:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4d2af4fc21ecb5d71a8ed67e5fedcecbbf9e75b3","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/jocelyn-soh/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"16312381b5e4efbb76e94be083542fd00e1bd0e7","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/jocelyn-soh/tp into update-user-guide","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4515fa881057e79be8c159736db5c998eac44fba","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"9d53e6d6c8a097e59d5393583a9592dc998a5185","isMergeCommit":false,"messageTitle":"FIx error in UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]}],"tohlh":[{"date":"2024-03-04","commitResults":[{"hash":"558a8e598a3c6d1e65235ce3657ed47ef99709d2","isMergeCommit":true,"messageTitle":"Merge pull request #1 from AY2324S2-CS2103T-W10-4/switch-docs-to-markbind","messageBody":"Switch docs to markbind","fileTypesAndContributionMap":{}},{"hash":"b225ac386ca9d8d71bdfb4561bc458d960f69a45","isMergeCommit":false,"messageTitle":"Add tohlh\u0027s personal info","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":17,"deletions":5}}}]},{"date":"2024-03-05","commitResults":[{"hash":"ba5c14fb443856d3fb504f76b5bac2c036f0004a","isMergeCommit":true,"messageTitle":"Merge pull request #7 from STELLA-LYE/Update-AboutUs","messageBody":"Update Stella AboutUs","fileTypesAndContributionMap":{}}]},{"date":"2024-03-06","commitResults":[{"hash":"da432b2cc0b646fe8a646a7009aceb48831061bf","isMergeCommit":false,"messageTitle":"Change picture to PNG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"88c4d454be61763b339febc55caf1503bc376bca","isMergeCommit":true,"messageTitle":"Merge pull request #9 from doyelee0313/Update-Doye-AboutUs","messageBody":"Update Doye AboutUs","fileTypesAndContributionMap":{}},{"hash":"3e69cb945261cabcad1bb06220461a188f6c3114","isMergeCommit":true,"messageTitle":"Merge pull request #16 from jocelyn-soh/branch-AboutUs","messageBody":"Add Jocelyn\u0027s AboutUs","fileTypesAndContributionMap":{}},{"hash":"115dc42921d474d4d75a164753a78fcbdeffffdb","isMergeCommit":true,"messageTitle":"Merge pull request #18 from STELLA-LYE/Update-DG","messageBody":"Update DeveloperGuide","fileTypesAndContributionMap":{}}]},{"date":"2024-03-07","commitResults":[{"hash":"6d42c922741b5da7697ffb65328d116c6c88ae13","isMergeCommit":true,"messageTitle":"Merge pull request #19 from STELLA-LYE/Update-AboutUs","messageBody":"Update png file","fileTypesAndContributionMap":{}}]},{"date":"2024-03-13","commitResults":[{"hash":"1a506396ecbfffc3dd52cb0d5b873787eefe5091","isMergeCommit":false,"messageTitle":"Add Year field to Person","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":144,"deletions":10},"test-code":{"insertions":112,"deletions":47}}}]},{"date":"2024-03-15","commitResults":[{"hash":"7f366d77def10992239211a04bea851ce2c0c6bf","isMergeCommit":false,"messageTitle":"Prevent duplicate of Year argument","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"bd642fb9181f9a41f97c9e8261ebb9fbba9c924b","isMergeCommit":false,"messageTitle":"Fix null Year argument message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"cc89bda48750d6f36fd8a9823fe946a255c1381d","isMergeCommit":false,"messageTitle":"Add unit tests for Year field","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":117,"deletions":9}}},{"hash":"79ebbd48a2e15cc40e302c12ba2133d3c217f15f","isMergeCommit":true,"messageTitle":"Merge pull request #32 from tohlh/add-student","messageBody":"Add Year field to Person","fileTypesAndContributionMap":{}},{"hash":"a0d843d2d615c59ea40f7330fe59c77b5e501e43","isMergeCommit":true,"messageTitle":"Merge pull request #31 from jocelyn-soh/find-command","messageBody":"Update find command","fileTypesAndContributionMap":{}},{"hash":"fb5a6f15e3dded147ecc2c1f472fc6620f770618","isMergeCommit":true,"messageTitle":"Merge pull request #29 from STELLA-LYE/Update-delete","messageBody":"Update delete command","fileTypesAndContributionMap":{}},{"hash":"d30f87b167cfb4486b8df36f9e51dd341d215fdc","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into Update-UserGuide","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f699fbb9c463be4fdbb221e6d51912f57edfde3d","isMergeCommit":true,"messageTitle":"Merge pull request #28 from STELLA-LYE/Update-UserGuide","messageBody":"Update user guide","fileTypesAndContributionMap":{}}]},{"date":"2024-03-17","commitResults":[{"hash":"275b296874b4565b272e12516213671b42aa6633","isMergeCommit":false,"messageTitle":"Add Telegram field","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":151,"deletions":31},"test-code":{"insertions":188,"deletions":60}}},{"hash":"31b82d1d8098009ffcd9b657bb350286d3a04b85","isMergeCommit":false,"messageTitle":"Add tests for Telegram field","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":34,"deletions":0}}}]},{"date":"2024-03-19","commitResults":[{"hash":"a6bcfa2da74e277fa537e053266a7a69fc6d4d1e","isMergeCommit":false,"messageTitle":"Fix invalid Telegram MESSAGE_CONSTRAINTS","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"5e230ed4d27dbfde9efde93826f9ff12be6c537c","isMergeCommit":false,"messageTitle":"Fix Person equals","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":4},"test-code":{"insertions":28,"deletions":9}}},{"hash":"bcec7be54d1c80905152efb52af9b71d587d21fb","isMergeCommit":false,"messageTitle":"Add hashCodeMethod test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":27,"deletions":0}}},{"hash":"a3ad5e977d7268da2c51aa2b4eb57059725751fe","isMergeCommit":false,"messageTitle":"Require Telegram field","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2}}},{"hash":"a7a2b04d0bbf152644cb24390e3e98859adb5582","isMergeCommit":false,"messageTitle":"Fix code style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"f6eafe02a9c12b7e0ca6635437026e5f3af7361c","isMergeCommit":false,"messageTitle":"Fix EditCommand equals method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0},"test-code":{"insertions":8,"deletions":3}}}]},{"date":"2024-03-20","commitResults":[{"hash":"6d6c15147bf75c3a4dccffabd7ec2a719a12bda5","isMergeCommit":false,"messageTitle":"Add Year and Telegram fields","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":0}}}]},{"date":"2024-03-21","commitResults":[{"hash":"0116eec290048a4d418882308d92de2a40888a7b","isMergeCommit":true,"messageTitle":"Merge pull request #42 from jocelyn-soh/ui-personcard","messageBody":"Update PersonCard fields ","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"doyelee0313":{"docs":50,"functional-code":214,"test-code":196},"STELLA-LYE":{"docs":358,"functional-code":346,"test-code":419},"jocelyn-soh":{"docs":169,"functional-code":149,"test-code":144},"tohlh":{"docs":19,"functional-code":259,"test-code":340}},"authorContributionVariance":{"doyelee0313":25734.504,"STELLA-LYE":40905.31,"jocelyn-soh":10008.401,"tohlh":10810.1045},"authorDisplayNameMap":{"doyelee0313":"CS2103T-W10-4 LEE ..DOYE","STELLA-LYE":"CS2103T-W10-4 STEL..I YU","jocelyn-soh":"CS2103T-W10-4 SOH ..ELYN","tohlh":"CS2103T-W10-4 TOH ..HENG"}} +{"authorDailyContributionsMap":{"doyelee0313":[{"date":"2024-03-05","commitResults":[{"hash":"21e7fd316d98570476976d8bfa3a73cc647c0439","isMergeCommit":false,"messageTitle":"Update Doye AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":16,"deletions":15}}},{"hash":"11996a91c0bd56c04e83706baa8ec3280adb5487","isMergeCommit":true,"messageTitle":"Merge pull request #1 from AY2324S2-CS2103T-W10-4/master","messageBody":"Update Doye AboutUs","fileTypesAndContributionMap":{}}]},{"date":"2024-03-06","commitResults":[{"hash":"3cd2515a6a52d379fb164e314655685b905a8a78","isMergeCommit":false,"messageTitle":"Updated README","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":7}}},{"hash":"9eae64f12dcf5243dcfd1162642bcf9deb24791b","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W10-4:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"90799a21f0f5973cb73f121dc973693e749c53dd","isMergeCommit":false,"messageTitle":"Update AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-11","commitResults":[{"hash":"0d895a76bc39d3d60115b7aacd6ac439a94a7a49","isMergeCommit":false,"messageTitle":"changed help window URL","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-20","commitResults":[{"hash":"708eac1b923901d68a6dedd18dcebbc504037bc9","isMergeCommit":false,"messageTitle":"changed tag function to group function","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":212,"deletions":211},"docs":{"insertions":18,"deletions":18},"test-code":{"insertions":197,"deletions":189}}},{"hash":"e30e212c79165451e50429d81dc75d4d961a7e9a","isMergeCommit":false,"messageTitle":"made group compulsory","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"407eb42489c91bcfd6d3b787c0d7b9ee25a752f2","isMergeCommit":false,"messageTitle":"undo","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"a77e3157eb98cf6408ae9e134438046a4dd86aa0","isMergeCommit":false,"messageTitle":"update UserGuide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":9}}}]},{"date":"2024-03-21","commitResults":[{"hash":"9e7f03c5e8c71424bfd077e2e7a66203e26075fe","isMergeCommit":false,"messageTitle":"update UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}},{"hash":"d37345f5cd09dd71fd96c987e1b98d7849691b2f","isMergeCommit":true,"messageTitle":"Merge pull request #49 from jocelyn-soh/update-user-guide","messageBody":"Update user guide","tags":["v1.2"],"fileTypesAndContributionMap":{}}]}],"STELLA-LYE":[{"date":"2024-03-04","commitResults":[{"hash":"09ba9eb1ce42d538c3a5ccc09292c0b27252ceb3","isMergeCommit":true,"messageTitle":"Merge pull request #6 from tohlh/update-about-me","messageBody":"Add tohlh\u0027s personal info","fileTypesAndContributionMap":{}},{"hash":"a79bf0389bed7ba3dfee07f868f51863ca55fa37","isMergeCommit":false,"messageTitle":"Update Stella AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":17,"deletions":4}}}]},{"date":"2024-03-06","commitResults":[{"hash":"9c42c06c77fd31f9b7a7d25fb1571db8eb05abfe","isMergeCommit":false,"messageTitle":"Change stella image to png file","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"54fbc751a8b00134cc6d6d724f110ff7f504af2e","isMergeCommit":true,"messageTitle":"Merge pull request #17 from jocelyn-soh/site-wide-settings","messageBody":"Update site-wide settings","fileTypesAndContributionMap":{}},{"hash":"cac0ce66c72aad670f38aabfcb17baaa9cafd6fc","isMergeCommit":false,"messageTitle":"Update DeveloperGuide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":146,"deletions":26}}}]},{"date":"2024-03-07","commitResults":[{"hash":"e6b52d7b54a2a7366474f78ece3e37878de76d55","isMergeCommit":false,"messageTitle":"Update png file","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-09","commitResults":[{"hash":"13c1cd4d82ec512adccb0ac6a5917965e3a5ddb3","isMergeCommit":false,"messageTitle":"Update delete command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4}}}]},{"date":"2024-03-11","commitResults":[{"hash":"1ea243fb0031b17bdc49beb7ce45bcfcd4995201","isMergeCommit":true,"messageTitle":"Merge pull request #26 from doyelee0313/help-window-modification","messageBody":"Changed help window URL","fileTypesAndContributionMap":{}},{"hash":"6e0328bbe19c75c8f3d604ad5c1af05cd732fe65","isMergeCommit":false,"messageTitle":"Update UserGuide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":117,"deletions":77}}},{"hash":"b09b292491c4916632d398a76da9d1a1c556efdd","isMergeCommit":false,"messageTitle":"Update UserGuide for merge","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-17","commitResults":[{"hash":"af73f8af4fa2fee122b8ddc0773bfe1142b1b348","isMergeCommit":false,"messageTitle":"Update Address field to Major","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":71,"deletions":71},"other":{"insertions":19,"deletions":19},"docs":{"insertions":59,"deletions":59},"test-code":{"insertions":81,"deletions":81}}},{"hash":"b3dbc1aa8b03e04b1d02bfb10065b1093bb41c27","isMergeCommit":false,"messageTitle":"Update Student Major test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":119,"deletions":119}}},{"hash":"abfb02c6e1f2fe44b5dd69c58a8f21daaa24be7b","isMergeCommit":false,"messageTitle":"Debug major test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"test-code":{"insertions":31,"deletions":31}}},{"hash":"a8456d8b6b3ef0ccb901a5d6bad19994369a4bb2","isMergeCommit":false,"messageTitle":"Debug file names and test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"other":{"insertions":6,"deletions":6},"test-code":{"insertions":3,"deletions":3}}}]},{"date":"2024-03-18","commitResults":[{"hash":"967a886bbc2fd2427455f5243442a292e73da355","isMergeCommit":false,"messageTitle":"Debug Checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":9},"test-code":{"insertions":25,"deletions":24}}},{"hash":"f243ba1e567073008ad2d5082cc01d40db3090ef","isMergeCommit":false,"messageTitle":"Add restricted computing majors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1},"test-code":{"insertions":21,"deletions":18}}},{"hash":"5934c874cf486a1ed4c894c19ccd02553a124bd9","isMergeCommit":false,"messageTitle":"Debug all test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":4,"deletions":0}}},{"hash":"8825db4296937db4b3ccedf7c3a9b537c5eb44dd","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into Update-Studentmajor","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"0efb2292a329d3ffadcf7dafe3a4a904046f4259","isMergeCommit":false,"messageTitle":"Debug checkstyle error","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"ff64c2e9fb056352fc7b2a68c7392551dc9e5a23","isMergeCommit":true,"messageTitle":"Update with tutorial","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b794b3c3729d9dc62f52d5e446a50919be7c9a96","isMergeCommit":false,"messageTitle":"Resolve merge errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"test-code":{"insertions":11,"deletions":11}}}]},{"date":"2024-03-19","commitResults":[{"hash":"8ddcd5a386c0b0f684a40745d9c9cf94d7cdb79d","isMergeCommit":true,"messageTitle":"Merge pull request #37 from jocelyn-soh/add-remarks","messageBody":"Add Remark field to Person","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"01a41922b56717975e0cf293b12dbb491e250aaf","isMergeCommit":true,"messageTitle":"Merge pull request #39 from doyelee0313/tag-to-group","messageBody":"changed tag function to group function","fileTypesAndContributionMap":{}},{"hash":"a1a2dd0f8016a9dda655a14a4c4716ba06703de0","isMergeCommit":true,"messageTitle":"Merge pull request #44 from tohlh/update-uml","messageBody":"Add Year and Telegram fields","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"dd24d4ff46ef971d65bf5740178f52561caf3be6","isMergeCommit":false,"messageTitle":"Update filter by group feature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":190,"deletions":0}}},{"hash":"78e0ace91bb97f7ed5dd90a258d0e2da0e0ddea3","isMergeCommit":false,"messageTitle":"Update filter feature to display error message when invalid group format is entered","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":38}}},{"hash":"d55951cf211a329e8c882345ff034629403ef1c2","isMergeCommit":false,"messageTitle":"Update javaDoc comments q","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":9}}},{"hash":"831d3b79c4053e7c44d1ce2b43f4c6ae86d8e9a8","isMergeCommit":false,"messageTitle":"Add test cases for filter feature and pass all checkstyle tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":220,"deletions":2}}},{"hash":"4c8824ebf056cdc8a1f643c7b960e8a6fb1d3219","isMergeCommit":false,"messageTitle":"Update UML diagrams","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":23,"deletions":2}}},{"hash":"4bb759deace6e8885d45f5ac02cf0365f3c6626d","isMergeCommit":false,"messageTitle":"Add delete activity diagram","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":1}}},{"hash":"fd6aacc664930c88c1885afb004d4d8688cae4f8","isMergeCommit":false,"messageTitle":"Fix checkstyle error","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"c68da104904ef2ab95e442bcd125e7b6460df2a9","isMergeCommit":true,"messageTitle":"Merge pull request #47 from doyelee0313/Update-UG","messageBody":"Update UG","fileTypesAndContributionMap":{}},{"hash":"36c8f9713eabb34932a14c6ad30299eabd0f6fef","isMergeCommit":false,"messageTitle":"Update user guide with most recent commands and features","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":51,"deletions":28}}},{"hash":"74164ecf1d4bbcd3504e488cadfcc98ddba0fa2e","isMergeCommit":false,"messageTitle":"Update Ui","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":109,"deletions":57}}},{"hash":"f45d75c519b84faa1f963edf82be660532ed7d72","isMergeCommit":false,"messageTitle":"Update user guide images","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"docs":{"insertions":7,"deletions":6}}}]},{"date":"2024-03-22","commitResults":[{"hash":"6a672a2c43989c510907b63545d9fa8a6a0e4f97","isMergeCommit":false,"messageTitle":"Update files","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":6,"deletions":1}}}]},{"date":"2024-03-23","commitResults":[{"hash":"2f5da0b1a0084fe94fee9c7871056fe2111eb825","isMergeCommit":false,"messageTitle":"Add mailCommand feature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":38,"deletions":0}}},{"hash":"56d14ba29a7db3c060f6f7d0cc277f066a67ae78","isMergeCommit":false,"messageTitle":"Add test cases for MailCOmmand","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":37,"deletions":0}}},{"hash":"0d0a93bd5e536434527a49a3808cab6438e8a986","isMergeCommit":false,"messageTitle":"Update checkstyle and Readme","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":6},"docs":{"insertions":1,"deletions":1},"test-code":{"insertions":3,"deletions":6}}},{"hash":"e710bab3e1e715ab927cd8e86e3b8df3ad27e2cd","isMergeCommit":false,"messageTitle":"Update MailCommand to take in group parameters","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":62,"deletions":8},"test-code":{"insertions":8,"deletions":0}}},{"hash":"75eca9d515db0bec3b92f6589188a0c9cff365d5","isMergeCommit":false,"messageTitle":"Add test cases for MailCommand and MailCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":33,"deletions":5},"test-code":{"insertions":104,"deletions":18}}},{"hash":"e98466277abd022606e1f987eb01c26626ab59fc","isMergeCommit":false,"messageTitle":"Debug and fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":5},"test-code":{"insertions":10,"deletions":13}}}]},{"date":"2024-03-24","commitResults":[{"hash":"d3cf97c09125ad8dd4bdc36590646b9144a9aeaa","isMergeCommit":false,"messageTitle":"Update User Guide with mail broadcast feature","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":29,"deletions":11}}},{"hash":"1d914eef8f371062e3d55ff46ea746b484aa5937","isMergeCommit":true,"messageTitle":"Merge pull request #52 from AY2324S2-CS2103T-W10-4/group-model","messageBody":"Group model","fileTypesAndContributionMap":{}}]}],"jocelyn-soh":[{"date":"2024-03-06","commitResults":[{"hash":"fa540c85f9e944c25cf7f5d4cb0e417073cbb9c2","isMergeCommit":true,"messageTitle":"Merge pull request #10 from tohlh/update-about-me","messageBody":"Change picture to PNG","fileTypesAndContributionMap":{}},{"hash":"4b61d1733359d3630fefacffccdc9c538096254d","isMergeCommit":false,"messageTitle":"Update Jocelyn\u0027s AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":16,"deletions":52}}},{"hash":"3db2a4f846676ad07fb0c133e880bc804bd74d46","isMergeCommit":true,"messageTitle":"Merge pull request #12 from STELLA-LYE/Update-Stella-AboutUs","messageBody":"Change stella image to png file","fileTypesAndContributionMap":{}},{"hash":"0cb2eb404ff9a410156de0ca0b01b871da78f76b","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/jocelyn-soh/tp into branch-AboutUs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"6bd129a3acc610c618221f18ee185e3a901e45ea","isMergeCommit":false,"messageTitle":"Remove whitespaces in AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"f019c6f317ec721faf9e14d38bb355f728ca6980","isMergeCommit":false,"messageTitle":"Update site-wide settings","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":8}}}]},{"date":"2024-03-13","commitResults":[{"hash":"d277565d858bf91856b6c6829bca447891fc46b9","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/jocelyn-soh/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ce556ec37bb9557792eed34ad2df67f829fa2cb8","isMergeCommit":false,"messageTitle":"Update StringUtil.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":10}}},{"hash":"4c8ed2e98dba41c98e125fe3bde5c063f99027e0","isMergeCommit":false,"messageTitle":"Update test cases and method names","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":27,"deletions":25}}},{"hash":"5a92282e0989585c01fe61cc208633b1341daa2b","isMergeCommit":false,"messageTitle":"Rearrange import statements in StringUtil.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"ad6d22b7e208c1f417fbbfbf5d8c2c6ed9a65c87","isMergeCommit":false,"messageTitle":"Rearrange import statements in StringUtilTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":4}}},{"hash":"5c92e70ad8a99aef6908dc61671a7cf184bbba0d","isMergeCommit":false,"messageTitle":"Fix checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1},"test-code":{"insertions":22,"deletions":12}}},{"hash":"7a8f60df74f112a6162933e62457e9d8f4ca7c71","isMergeCommit":false,"messageTitle":"Fix checkstyle issue","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"85ea6f7779c0f675c9dd79fadf78a73760bedcf8","isMergeCommit":false,"messageTitle":"Update UserGuide for find command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":1}}},{"hash":"94698245f047162f4957294a15dbd8cea7f9959d","isMergeCommit":false,"messageTitle":"Update find command\u0027s examples in UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-15","commitResults":[{"hash":"aea933366009300ff68b84a25a01c422b170b3ce","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W10-4:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"85ca1efef176a957cc9237c3e3896986bac70013","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/jocelyn-soh/tp","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-17","commitResults":[{"hash":"a8db2941fdea53a9b4a2719df556125c604aaa05","isMergeCommit":true,"messageTitle":"Merge pull request #33 from tohlh/person-fields","messageBody":"Add Telegram field","fileTypesAndContributionMap":{}}]},{"date":"2024-03-18","commitResults":[{"hash":"df14b410d9ef6ec50ea2ebc9cdd19aac30014d81","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W10-4:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"08ad3f6f085e5958b086ae9e4107294f7d328e00","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/jocelyn-soh/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"bd833b17527fc5456dd380eb3c1742ab49028c73","isMergeCommit":true,"messageTitle":"Merge pull request #36 from STELLA-LYE/Update-Studentmajor","messageBody":"Update studentmajor","fileTypesAndContributionMap":{}},{"hash":"aefb0ca574af1dbcd9d87883e037591fc3fcd45b","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W10-4:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"128c0a5b240aaeecef238a3a2c46cec36bca3c35","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/jocelyn-soh/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d573cc7fa7017f60f847c59bc542f1359d8f6888","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/jocelyn-soh/tp into add-remarks","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-19","commitResults":[{"hash":"e32c9569387927e1d951b24b228057f63e2fd8cc","isMergeCommit":false,"messageTitle":"Add an optional remark field in Person","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":154,"deletions":10}}},{"hash":"9a85a06764f33026dba270ed871c6b11fdf1bc5f","isMergeCommit":true,"messageTitle":"Merge pull request #38 from tohlh/fix-edit-person-descriptor-fields","messageBody":"Fix edit person descriptor fields","fileTypesAndContributionMap":{}},{"hash":"a169f64681467b33a46bd4dac4d5d04a4da1410f","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W10-4:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"721b7c6a71a77603496b82fa034d1800acb278ef","isMergeCommit":false,"messageTitle":"Update Remark.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":5},"test-code":{"insertions":2,"deletions":0}}},{"hash":"21161f9562c331dc452c18211873107890b98bba","isMergeCommit":false,"messageTitle":"Update test cases for remark field","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":3},"test-code":{"insertions":68,"deletions":25}}},{"hash":"cf1e87bcb080efb28749f32ed49cf38cace8c604","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/jocelyn-soh/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ebe571eda327b00f2db1b686b1a77447f3a0cbbd","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/jocelyn-soh/tp into add-remarks","messageBody":"# Conflicts:\n#\tsrc/main/java/seedu/address/model/person/Person.java\n#\tsrc/test/java/seedu/address/testutil/EditPersonDescriptorBuilder.java\n","fileTypesAndContributionMap":{}},{"hash":"91ba862fcf467c732ac6eab4ac5328104f55dfdb","isMergeCommit":false,"messageTitle":"Update Remark.java to remove unnecessary checking","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":8},"docs":{"insertions":1,"deletions":1}}},{"hash":"4a7ce727155b435f955f4fffdafa251e17ff269f","isMergeCommit":false,"messageTitle":"Update test cases to remove unnecessary remark checking","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":10},"test-code":{"insertions":0,"deletions":1}}},{"hash":"1bb7c7955e1c7b703ab5d91df94ac89f61c1c474","isMergeCommit":false,"messageTitle":"Update parser\u0027s test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":30,"deletions":7}}},{"hash":"1c9535d35f0e7d811a78b510f8d040527db3876e","isMergeCommit":false,"messageTitle":"Update address test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":16,"deletions":10}}},{"hash":"6f07bff5777bf5f6dd6e52173f51a61f2394daeb","isMergeCommit":false,"messageTitle":"Update test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":10},"test-code":{"insertions":47,"deletions":10}}}]},{"date":"2024-03-20","commitResults":[{"hash":"db16d28c56bfca8162ec7d6cb7432258da2f2f9d","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/jocelyn-soh/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"83232bee5e54570b041a468445fa124713975928","isMergeCommit":true,"messageTitle":"Merge pull request #41 from doyelee0313/Update-UG","messageBody":"update UserGuide","fileTypesAndContributionMap":{}},{"hash":"2a5156a7b63b82a2ba60c275a4568215d2bde08a","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W10-4:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"1ad33c2d8d03262807444ee6221189fa0f8e81c9","isMergeCommit":false,"messageTitle":"Update PersonCard with year, telegram and remark","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":26,"deletions":16}}},{"hash":"c906b7031f9977d2757ad615eee703a36912a66f","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/jocelyn-soh/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"448d628802df6c3e0d0f8253bd4fa4a5cf92bc88","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/jocelyn-soh/tp into ui-personcard","messageBody":"# Conflicts:\n#\tsrc/main/java/seedu/address/ui/PersonCard.java\n","fileTypesAndContributionMap":{}},{"hash":"36b13bfa4bc5be6480c660b41e386ee91daa3986","isMergeCommit":false,"messageTitle":"Add PersonCardTest.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":28,"deletions":0},"other":{"insertions":12,"deletions":0},"test-code":{"insertions":53,"deletions":0}}},{"hash":"28ff501c260ec88d26b135ecf85d788e927dea1b","isMergeCommit":false,"messageTitle":"Remove test cases for group","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":18}}},{"hash":"c7e5c8829200b30ab17f99f1b157c076aab80e65","isMergeCommit":false,"messageTitle":"Debug PersonCardTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":3}}},{"hash":"1c6b797572215e1a88ae7e63deea05de983c8632","isMergeCommit":false,"messageTitle":"Revert \"Debug PersonCardTest.java\"","messageBody":"This reverts commit c7e5c8829200b30ab17f99f1b157c076aab80e65.\n","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":0}}},{"hash":"f186aee8d3d9c3f5aa1f8b93ac0b3cd9797a060a","isMergeCommit":false,"messageTitle":"Revert \"Remove test cases for group\"","messageBody":"This reverts commit 28ff501c260ec88d26b135ecf85d788e927dea1b.\n","fileTypesAndContributionMap":{"test-code":{"insertions":18,"deletions":0}}},{"hash":"edde8361a6e9d5f2d848824415e921d5bb7b5dcd","isMergeCommit":false,"messageTitle":"Revert \"Add PersonCardTest.java\"","messageBody":"This reverts commit 36b13bfa4bc5be6480c660b41e386ee91daa3986.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":28},"other":{"insertions":0,"deletions":12},"test-code":{"insertions":0,"deletions":53}}}]},{"date":"2024-03-21","commitResults":[{"hash":"4e7887e979c83259bcd639a048b0ee4cb2193d66","isMergeCommit":true,"messageTitle":"Merge pull request #46 from STELLA-LYE/Update-UML","messageBody":"Update uml","fileTypesAndContributionMap":{}},{"hash":"bb42cb333ec978d405bdb53e7740da196411ca83","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/jocelyn-soh/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"538392a8c31477ab38579780b32b2c5e502c52e2","isMergeCommit":false,"messageTitle":"Update existing UML diagrams","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":0}}},{"hash":"da9d11c9f8c1ca29cbb60c7f0b1ce0e28a46004b","isMergeCommit":false,"messageTitle":"Update ModelClassDiagram.puml","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":5}}},{"hash":"81f68140afa0e92e3ee96bc41580a89f9d86005b","isMergeCommit":false,"messageTitle":"Add FindSequenceDiagram.puml","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":79,"deletions":0}}},{"hash":"0f233c1cd9a93c7cb3957faad8de02c7ddb6b1a0","isMergeCommit":false,"messageTitle":"Update FindSequenceDiagram.uml","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"3e7018003c7f80a0c3bb92c24577a3697f94cf8e","isMergeCommit":false,"messageTitle":"Add ListSequenceDiagram.uml","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":52,"deletions":0}}},{"hash":"c8779de710bcd1cfd7448c7e8c59fe24341d2296","isMergeCommit":true,"messageTitle":"Merge pull request #48 from STELLA-LYE/Update-UG","messageBody":"Update ug","fileTypesAndContributionMap":{}},{"hash":"fde590a50b3b9cbe980c5dfc9d37dc96e783780a","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W10-4:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"464ed4940512d289d84d7f249610c002bba45a76","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":10}}},{"hash":"13422dfb3e89894a9c42799f3fd15ebc071e1e7a","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/jocelyn-soh/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"62ca28c85f954e29fee76c8acc07169ccda6be91","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/jocelyn-soh/tp into update-user-guide","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"1de8b1b774d1fa60219570dd3c00ce5f8154bb4d","isMergeCommit":true,"messageTitle":"Merge pull request #45 from STELLA-LYE/Update-filterGroup","messageBody":"Update filter group","fileTypesAndContributionMap":{}},{"hash":"ae0d1d945396bc9f24436867d842fbf259a71138","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":12}}},{"hash":"2f94e54e45ca1e5bec36c826039d83ff0c77984d","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W10-4:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4d2af4fc21ecb5d71a8ed67e5fedcecbbf9e75b3","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/jocelyn-soh/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"16312381b5e4efbb76e94be083542fd00e1bd0e7","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/jocelyn-soh/tp into update-user-guide","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4515fa881057e79be8c159736db5c998eac44fba","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"9d53e6d6c8a097e59d5393583a9592dc998a5185","isMergeCommit":false,"messageTitle":"FIx error in UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-24","commitResults":[{"hash":"cf4e2980ddab61aadb8d0b80a1d95d68b5babf85","isMergeCommit":true,"messageTitle":"Merge pull request #51 from STELLA-LYE/Update-mailBroadcast","messageBody":"Update mail broadcast","fileTypesAndContributionMap":{}}]}],"tohlh":[{"date":"2024-03-04","commitResults":[{"hash":"558a8e598a3c6d1e65235ce3657ed47ef99709d2","isMergeCommit":true,"messageTitle":"Merge pull request #1 from AY2324S2-CS2103T-W10-4/switch-docs-to-markbind","messageBody":"Switch docs to markbind","fileTypesAndContributionMap":{}},{"hash":"b225ac386ca9d8d71bdfb4561bc458d960f69a45","isMergeCommit":false,"messageTitle":"Add tohlh\u0027s personal info","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":17,"deletions":5}}}]},{"date":"2024-03-05","commitResults":[{"hash":"ba5c14fb443856d3fb504f76b5bac2c036f0004a","isMergeCommit":true,"messageTitle":"Merge pull request #7 from STELLA-LYE/Update-AboutUs","messageBody":"Update Stella AboutUs","fileTypesAndContributionMap":{}}]},{"date":"2024-03-06","commitResults":[{"hash":"da432b2cc0b646fe8a646a7009aceb48831061bf","isMergeCommit":false,"messageTitle":"Change picture to PNG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"88c4d454be61763b339febc55caf1503bc376bca","isMergeCommit":true,"messageTitle":"Merge pull request #9 from doyelee0313/Update-Doye-AboutUs","messageBody":"Update Doye AboutUs","fileTypesAndContributionMap":{}},{"hash":"3e69cb945261cabcad1bb06220461a188f6c3114","isMergeCommit":true,"messageTitle":"Merge pull request #16 from jocelyn-soh/branch-AboutUs","messageBody":"Add Jocelyn\u0027s AboutUs","fileTypesAndContributionMap":{}},{"hash":"115dc42921d474d4d75a164753a78fcbdeffffdb","isMergeCommit":true,"messageTitle":"Merge pull request #18 from STELLA-LYE/Update-DG","messageBody":"Update DeveloperGuide","fileTypesAndContributionMap":{}}]},{"date":"2024-03-07","commitResults":[{"hash":"6d42c922741b5da7697ffb65328d116c6c88ae13","isMergeCommit":true,"messageTitle":"Merge pull request #19 from STELLA-LYE/Update-AboutUs","messageBody":"Update png file","fileTypesAndContributionMap":{}}]},{"date":"2024-03-13","commitResults":[{"hash":"1a506396ecbfffc3dd52cb0d5b873787eefe5091","isMergeCommit":false,"messageTitle":"Add Year field to Person","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":144,"deletions":10},"test-code":{"insertions":112,"deletions":47}}}]},{"date":"2024-03-15","commitResults":[{"hash":"7f366d77def10992239211a04bea851ce2c0c6bf","isMergeCommit":false,"messageTitle":"Prevent duplicate of Year argument","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"bd642fb9181f9a41f97c9e8261ebb9fbba9c924b","isMergeCommit":false,"messageTitle":"Fix null Year argument message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"cc89bda48750d6f36fd8a9823fe946a255c1381d","isMergeCommit":false,"messageTitle":"Add unit tests for Year field","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":117,"deletions":9}}},{"hash":"79ebbd48a2e15cc40e302c12ba2133d3c217f15f","isMergeCommit":true,"messageTitle":"Merge pull request #32 from tohlh/add-student","messageBody":"Add Year field to Person","fileTypesAndContributionMap":{}},{"hash":"a0d843d2d615c59ea40f7330fe59c77b5e501e43","isMergeCommit":true,"messageTitle":"Merge pull request #31 from jocelyn-soh/find-command","messageBody":"Update find command","fileTypesAndContributionMap":{}},{"hash":"fb5a6f15e3dded147ecc2c1f472fc6620f770618","isMergeCommit":true,"messageTitle":"Merge pull request #29 from STELLA-LYE/Update-delete","messageBody":"Update delete command","fileTypesAndContributionMap":{}},{"hash":"d30f87b167cfb4486b8df36f9e51dd341d215fdc","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into Update-UserGuide","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f699fbb9c463be4fdbb221e6d51912f57edfde3d","isMergeCommit":true,"messageTitle":"Merge pull request #28 from STELLA-LYE/Update-UserGuide","messageBody":"Update user guide","fileTypesAndContributionMap":{}}]},{"date":"2024-03-17","commitResults":[{"hash":"275b296874b4565b272e12516213671b42aa6633","isMergeCommit":false,"messageTitle":"Add Telegram field","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":151,"deletions":31},"test-code":{"insertions":188,"deletions":60}}},{"hash":"31b82d1d8098009ffcd9b657bb350286d3a04b85","isMergeCommit":false,"messageTitle":"Add tests for Telegram field","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":34,"deletions":0}}}]},{"date":"2024-03-19","commitResults":[{"hash":"a6bcfa2da74e277fa537e053266a7a69fc6d4d1e","isMergeCommit":false,"messageTitle":"Fix invalid Telegram MESSAGE_CONSTRAINTS","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"5e230ed4d27dbfde9efde93826f9ff12be6c537c","isMergeCommit":false,"messageTitle":"Fix Person equals","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":4},"test-code":{"insertions":28,"deletions":9}}},{"hash":"bcec7be54d1c80905152efb52af9b71d587d21fb","isMergeCommit":false,"messageTitle":"Add hashCodeMethod test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":27,"deletions":0}}},{"hash":"a3ad5e977d7268da2c51aa2b4eb57059725751fe","isMergeCommit":false,"messageTitle":"Require Telegram field","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2}}},{"hash":"a7a2b04d0bbf152644cb24390e3e98859adb5582","isMergeCommit":false,"messageTitle":"Fix code style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"f6eafe02a9c12b7e0ca6635437026e5f3af7361c","isMergeCommit":false,"messageTitle":"Fix EditCommand equals method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0},"test-code":{"insertions":8,"deletions":3}}}]},{"date":"2024-03-20","commitResults":[{"hash":"6d6c15147bf75c3a4dccffabd7ec2a719a12bda5","isMergeCommit":false,"messageTitle":"Add Year and Telegram fields","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":0}}}]},{"date":"2024-03-21","commitResults":[{"hash":"0116eec290048a4d418882308d92de2a40888a7b","isMergeCommit":true,"messageTitle":"Merge pull request #42 from jocelyn-soh/ui-personcard","messageBody":"Update PersonCard fields ","fileTypesAndContributionMap":{}}]},{"date":"2024-03-23","commitResults":[{"hash":"0be742704e45f4d195bc6f28fce7d46f9f7cc1eb","isMergeCommit":false,"messageTitle":"Use group as a collection in AddressBook","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":244,"deletions":2},"test-code":{"insertions":39,"deletions":3}}},{"hash":"97b32156b44cca72b2a2df4df2b6c6c785669824","isMergeCommit":false,"messageTitle":"Serialize storage of JSON of group","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":6},"test-code":{"insertions":55,"deletions":3}}},{"hash":"7b44b459162a623e028e912ba1923af8893d32bf","isMergeCommit":false,"messageTitle":"Add sample groups","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":0}}},{"hash":"e66af79cc539e8c55372211dc0cebebd8505ad4f","isMergeCommit":false,"messageTitle":"Fix groups field in saved JSON","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"e4540a852941b2780892b9010ef14d562c4282cf","isMergeCommit":false,"messageTitle":"Add AddGroupCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":167,"deletions":1},"test-code":{"insertions":21,"deletions":0}}},{"hash":"934baf90b88977d3bba2b3000dc3c9afd5c34747","isMergeCommit":false,"messageTitle":"Add unit tests for AddGroupCommand and its parser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2},"test-code":{"insertions":252,"deletions":0}}}]},{"date":"2024-03-24","commitResults":[{"hash":"b738b3f3344c2e1d457706b549ebee2e52ff5afb","isMergeCommit":false,"messageTitle":"Add DeleteGroupCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":147,"deletions":5},"test-code":{"insertions":220,"deletions":0}}},{"hash":"157057f284f3e3cebd84378edfbae00b13fb98a6","isMergeCommit":false,"messageTitle":"Add EditGroupCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":151,"deletions":3},"test-code":{"insertions":15,"deletions":1}}},{"hash":"40a51f00374a240869e9d9ac190c993a780308d4","isMergeCommit":false,"messageTitle":"Add unit tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":29,"deletions":6},"test-code":{"insertions":314,"deletions":1}}},{"hash":"c7872676e68dd7dcf707e77c9543560e25571159","isMergeCommit":false,"messageTitle":"Add tests for AddressBookParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":25,"deletions":0}}},{"hash":"5cd9d7af7fdafedd49aa60bd19ec53698ac7525d","isMergeCommit":false,"messageTitle":"Add tests toUniqueGroupListTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":152,"deletions":0}}},{"hash":"859039526b6837c973a0dea50110f8196517e3ca","isMergeCommit":false,"messageTitle":"Fix code style","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":142,"deletions":141}}},{"hash":"93d5829743c5353352802055e9c4840c6744ae2b","isMergeCommit":false,"messageTitle":"Fix equals test for EditGroupCommandTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":8,"deletions":8}}},{"hash":"609170a759ee28ef5e3700114618601214afc15c","isMergeCommit":false,"messageTitle":"Add equals test for UniqueGroupList","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":8,"deletions":0}}},{"hash":"53ed8b86a4a8d44fe90ea9caa18aad60fb632664","isMergeCommit":false,"messageTitle":"Add Group tests for ModelManagerTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":17,"deletions":0}}},{"hash":"9b6e8978a7b3573c6f3ec5e62d5115c8d761b626","isMergeCommit":false,"messageTitle":"Fix style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":11}}},{"hash":"c66308ff944cb28b994955e83736ffd16a516532","isMergeCommit":false,"messageTitle":"Duplicate Groups tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":15,"deletions":4}}},{"hash":"3481a60adaab5d5c58779c54ea6f6f4df847407b","isMergeCommit":false,"messageTitle":"Add equals test for Group","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":10,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"doyelee0313":{"docs":49,"functional-code":204,"test-code":193},"STELLA-LYE":{"docs":376,"functional-code":463,"test-code":544,"other":6},"jocelyn-soh":{"docs":168,"functional-code":148,"test-code":144},"tohlh":{"docs":19,"functional-code":1002,"test-code":1474}},"authorContributionVariance":{"doyelee0313":23340.291,"STELLA-LYE":39825.984,"jocelyn-soh":9181.457,"tohlh":88354.44},"authorDisplayNameMap":{"doyelee0313":"CS2103T-W10-4 LEE ..DOYE","STELLA-LYE":"CS2103T-W10-4 STEL..I YU","jocelyn-soh":"CS2103T-W10-4 SOH ..ELYN","tohlh":"CS2103T-W10-4 TOH ..HENG"}} diff --git a/AY2324S2-CS2103T-W11-3_tp_master/authorship.json b/AY2324S2-CS2103T-W11-3_tp_master/authorship.json index e227dfba..3438237b 100644 --- a/AY2324S2-CS2103T-W11-3_tp_master/authorship.json +++ b/AY2324S2-CS2103T-W11-3_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"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":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"[![codecov](https://codecov.io/gh/AY2324S2-CS2103T-W11-3/tp/graph/badge.svg?token\u003dF7G5FM6BNJ)](https://codecov.io/gh/AY2324S2-CS2103T-W11-3/tp)","lastModifiedDate":"2024-02-16"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-16"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"![Ui](docs/images/NewUI.png)","lastModifiedDate":"2024-03-22"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"* This is an application for **NUS School of Computing (SoC) students to find contacts within SoC** and **book consultation slots with Professors and Teaching Assistants**.\u003cbr\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":8,"author":{"gitId":"-"},"content":" Example usages:","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":" * retrieves all contact details of a user within NUS SoC","lastModifiedDate":"2024-03-04"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":" * create and delete user contact details","lastModifiedDate":"2024-03-04"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":" * retrieves all consultation timings of a user","lastModifiedDate":"2024-03-04"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":" * create and delete consultation timings","lastModifiedDate":"2024-03-04"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":"* The project is an ongoing software project for a desktop application (called _Dook_) used for managing contact details.","lastModifiedDate":"2024-03-04"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" * It is built on the AddressBook-Level3 project.","lastModifiedDate":"2024-03-04"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" * It is **written in OOP fashion**. It provides a **reasonably well-written** code base **bigger** than what students usually write in beginner-level SE modules, without being overwhelmingly big.","lastModifiedDate":"2024-03-04"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":"* It is named `Dook` because it is a moniker from the individual project (iP) that all CS2103T students do.","lastModifiedDate":"2024-03-04"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":"* For the detailed documentation of this project, see the **[User Guide](https://github.com/AY2324S2-CS2103T-W11-3/tp/blob/master/docs/UserGuide.md)**, or the **[Developer Guide](https://github.com/AY2324S2-CS2103T-W11-3/tp/blob/master/docs/DeveloperGuide.md)** if you are interested in contributing to Dook.","lastModifiedDate":"2024-03-04"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"cyqjoseph":12,"-":6}},{"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":"cyqjoseph"},"content":"### Joseph Chan ","lastModifiedDate":"2024-02-28"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":"\u003cimg src\u003d\"images/cyqjoseph.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":"[[github](https://github.com/cyqjoseph)]","lastModifiedDate":"2024-02-28"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":"* Role: DevOps","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":"### Wang Minhong","lastModifiedDate":"2024-02-28"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":"\u003cimg src\u003d\"images/chrysanthemumt.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":"[[github](http://github.com/chrysanthemumt)]","lastModifiedDate":"2024-02-28"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":"* Role: Developer","lastModifiedDate":"2024-02-28"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"jerremyng"},"content":"### Jerremy Ng","lastModifiedDate":"2024-02-28"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"jerremyng"},"content":"\u003cimg src\u003d\"images/jerremyng.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"jerremyng"},"content":"[[github](http://github.com/jerremyng)]","lastModifiedDate":"2024-02-28"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"jerremyng"},"content":"* Responsibilities: Code","lastModifiedDate":"2024-02-28"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"gauravuj"},"content":"### Ujjwal Gaurav","lastModifiedDate":"2024-02-28"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"gauravuj"},"content":"\u003cimg src\u003d\"images/gauravuj.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"gauravuj"},"content":"[[github](http://github.com/gauravuj)]","lastModifiedDate":"2024-02-28"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"gauravuj"},"content":"* Role: UI/UX \u0026 Frontend Developer","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"gauravuj"},"content":"* Responsibilities: Enhance product aesthetics, refine UI functionality,","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"gauravuj"},"content":" ensure seamless frontend-backend integration.","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"zhenghuil"},"content":"### Low Zheng Hui","lastModifiedDate":"2024-02-28"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"zhenghuil"},"content":"\u003cimg src\u003d\"images/zhenghuil.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"zhenghuil"},"content":"[[github](https://github.com/zhenghuil)]","lastModifiedDate":"2024-02-28"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"jerremyng":4,"gauravuj":6,"cyqjoseph":8,"-":32,"zhenghuil":3}},{"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 continues till the end of diagram.","lastModifiedDate":"2024-02-09"},{"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).\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-02-09"},{"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 an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Logic.png)","lastModifiedDate":"2024-02-09"},{"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":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":207,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Model.png)","lastModifiedDate":"2024-02-09"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"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":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"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":"jerremyng"},"content":"* currently in NUS school of computing","lastModifiedDate":"2024-03-06"},{"lineNumber":266,"author":{"gitId":"-"},"content":"* has a need to manage a significant number of contacts","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"jerremyng"},"content":"* needs to book many consultations and meetings with professors/students","lastModifiedDate":"2024-03-06"},{"lineNumber":268,"author":{"gitId":"jerremyng"},"content":"* has a busy schedule which constantly changes","lastModifiedDate":"2024-03-06"},{"lineNumber":269,"author":{"gitId":"jerremyng"},"content":"* frequently needs a quick overview of their schedule","lastModifiedDate":"2024-03-06"},{"lineNumber":270,"author":{"gitId":"jerremyng"},"content":"* prefer desktop apps","lastModifiedDate":"2024-03-06"},{"lineNumber":271,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26"},{"lineNumber":272,"author":{"gitId":"jerremyng"},"content":"* is comfortable using CLI apps","lastModifiedDate":"2024-03-06"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":274,"author":{"gitId":"jerremyng"},"content":"**Value proposition**: Help students manage booking consultations/meeting with professors/students.","lastModifiedDate":"2024-03-06"},{"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":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":282,"author":{"gitId":"cyqjoseph"},"content":"|----------|----------|-----------------------------------|------------------------------------------------------------------------|","lastModifiedDate":"2024-03-21"},{"lineNumber":283,"author":{"gitId":"-"},"content":"| `* * *` | new user | see usage instructions | refer to instructions when I forget how to use the App |","lastModifiedDate":"2020-05-23"},{"lineNumber":284,"author":{"gitId":"ChrysanthemumT"},"content":"| `* * *` | user | add a contact | |","lastModifiedDate":"2024-03-05"},{"lineNumber":285,"author":{"gitId":"ChrysanthemumT"},"content":"| `* * *` | user | delete a contact | remove entries that I no longer need |","lastModifiedDate":"2024-03-05"},{"lineNumber":286,"author":{"gitId":"ChrysanthemumT"},"content":"| `* * *` | user | update a contact | |","lastModifiedDate":"2024-03-05"},{"lineNumber":287,"author":{"gitId":"cyqjoseph"},"content":"| `* * *` | user | view professors calendar | see the available timings |","lastModifiedDate":"2024-03-07"},{"lineNumber":288,"author":{"gitId":"cyqjoseph"},"content":"| `* * *` | user | view professors\u0027s office hours | know when to contact them |","lastModifiedDate":"2024-03-07"},{"lineNumber":289,"author":{"gitId":"cyqjoseph"},"content":"| `* * *` | user | view professors\u0027s office location | know where to find them | ","lastModifiedDate":"2024-03-07"},{"lineNumber":290,"author":{"gitId":"cyqjoseph"},"content":"| `* * *` | user | find a prof by name | locate details of persons without having to go through the entire list |","lastModifiedDate":"2024-03-07"},{"lineNumber":291,"author":{"gitId":"-"},"content":"| `* *` | user | hide private contact details | minimize chance of someone else seeing them by accident |","lastModifiedDate":"2020-05-23"},{"lineNumber":292,"author":{"gitId":"ChrysanthemumT"},"content":"| `*` | user | update my calendar | change my schedule |","lastModifiedDate":"2024-03-05"},{"lineNumber":293,"author":{"gitId":"ChrysanthemumT"},"content":"| `*` | user | create event/consultations | it can be recorded |","lastModifiedDate":"2024-03-05"},{"lineNumber":294,"author":{"gitId":"ChrysanthemumT"},"content":"| `*` | user | delete event | |","lastModifiedDate":"2024-03-05"},{"lineNumber":295,"author":{"gitId":"ChrysanthemumT"},"content":"| `*` | user | update event | |","lastModifiedDate":"2024-03-05"},{"lineNumber":296,"author":{"gitId":"ChrysanthemumT"},"content":"| `*` | user | view the current week\u0027s consults | change my schedule |","lastModifiedDate":"2024-03-05"},{"lineNumber":297,"author":{"gitId":"ChrysanthemumT"},"content":"| `*` | user | view a TA\u0027s calendar | book a consult |","lastModifiedDate":"2024-03-05"},{"lineNumber":298,"author":{"gitId":"ChrysanthemumT"},"content":"| `*` | user | generate email to contact | easily send out communications |","lastModifiedDate":"2024-03-05"},{"lineNumber":299,"author":{"gitId":"cyqjoseph"},"content":"| `*` | user | delete all contacts | | ","lastModifiedDate":"2024-03-07"},{"lineNumber":300,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":302,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":303,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":304,"author":{"gitId":"cyqjoseph"},"content":"(For all use cases below, the **System** is `Dook` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2024-03-07"},{"lineNumber":305,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":306,"author":{"gitId":"cyqjoseph"},"content":"**Use case: Add a contact**","lastModifiedDate":"2024-03-07"},{"lineNumber":307,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":308,"author":{"gitId":"cyqjoseph"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":309,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":310,"author":{"gitId":"cyqjoseph"},"content":"1. User requests to add a contact","lastModifiedDate":"2024-03-07"},{"lineNumber":311,"author":{"gitId":"cyqjoseph"},"content":"2. Dook adds the contact","lastModifiedDate":"2024-03-07"},{"lineNumber":312,"author":{"gitId":"cyqjoseph"},"content":"3. Dook displays the details of the contact added","lastModifiedDate":"2024-03-07"},{"lineNumber":313,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":314,"author":{"gitId":"cyqjoseph"},"content":" Use case ends","lastModifiedDate":"2024-03-07"},{"lineNumber":315,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":316,"author":{"gitId":"cyqjoseph"},"content":"**Extensions**","lastModifiedDate":"2024-03-07"},{"lineNumber":317,"author":{"gitId":"cyqjoseph"},"content":"* **2a. The contact details are invalid**","lastModifiedDate":"2024-03-07"},{"lineNumber":318,"author":{"gitId":"cyqjoseph"},"content":" * **2a1. Dook shows an error message**","lastModifiedDate":"2024-03-07"},{"lineNumber":319,"author":{"gitId":"cyqjoseph"},"content":" ","lastModifiedDate":"2024-03-07"},{"lineNumber":320,"author":{"gitId":"cyqjoseph"},"content":" Use Case ends","lastModifiedDate":"2024-03-07"},{"lineNumber":321,"author":{"gitId":"cyqjoseph"},"content":"* **3a. Duplicate contact added**","lastModifiedDate":"2024-03-07"},{"lineNumber":322,"author":{"gitId":"cyqjoseph"},"content":" * **3a1. Dook shows an error message**","lastModifiedDate":"2024-03-07"},{"lineNumber":323,"author":{"gitId":"cyqjoseph"},"content":" ","lastModifiedDate":"2024-03-07"},{"lineNumber":324,"author":{"gitId":"cyqjoseph"},"content":" Use case ends","lastModifiedDate":"2024-03-07"},{"lineNumber":325,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":326,"author":{"gitId":"cyqjoseph"},"content":"**Use Case: Delete a Contact**","lastModifiedDate":"2024-03-07"},{"lineNumber":327,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":328,"author":{"gitId":"cyqjoseph"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":329,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":330,"author":{"gitId":"cyqjoseph"},"content":"1. User requests to delete a contact by name or index.","lastModifiedDate":"2024-03-07"},{"lineNumber":331,"author":{"gitId":"cyqjoseph"},"content":"2. Dook confirms the deletion request (if applicable).","lastModifiedDate":"2024-03-07"},{"lineNumber":332,"author":{"gitId":"cyqjoseph"},"content":"3. Dook deletes the contact.","lastModifiedDate":"2024-03-07"},{"lineNumber":333,"author":{"gitId":"cyqjoseph"},"content":"4. Dook confirms the contact has been deleted.","lastModifiedDate":"2024-03-07"},{"lineNumber":334,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":335,"author":{"gitId":"cyqjoseph"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":336,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":337,"author":{"gitId":"cyqjoseph"},"content":"**Extensions**","lastModifiedDate":"2024-03-07"},{"lineNumber":338,"author":{"gitId":"cyqjoseph"},"content":"* **2a. User requests to delete all contacts.**","lastModifiedDate":"2024-03-07"},{"lineNumber":339,"author":{"gitId":"cyqjoseph"},"content":" - **2a1. Dook asks for confirmation.**","lastModifiedDate":"2024-03-07"},{"lineNumber":340,"author":{"gitId":"cyqjoseph"},"content":" - **2a2. If confirmed, Dook deletes all contacts and confirms deletion.**","lastModifiedDate":"2024-03-07"},{"lineNumber":341,"author":{"gitId":"cyqjoseph"},"content":" - **2a3. If not confirmed, Dook cancels the deletion process.**","lastModifiedDate":"2024-03-07"},{"lineNumber":342,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":343,"author":{"gitId":"cyqjoseph"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":344,"author":{"gitId":"cyqjoseph"},"content":"* **3a. The specified contact does not exist.**","lastModifiedDate":"2024-03-07"},{"lineNumber":345,"author":{"gitId":"cyqjoseph"},"content":" - **3a1. Dook shows an error message.**","lastModifiedDate":"2024-03-07"},{"lineNumber":346,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":347,"author":{"gitId":"cyqjoseph"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":348,"author":{"gitId":"cyqjoseph"},"content":"* **3b. The contact index is out of range.**","lastModifiedDate":"2024-03-07"},{"lineNumber":349,"author":{"gitId":"cyqjoseph"},"content":" - **3b1. Dook shows an error message.**","lastModifiedDate":"2024-03-07"},{"lineNumber":350,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":351,"author":{"gitId":"cyqjoseph"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":352,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":353,"author":{"gitId":"cyqjoseph"},"content":"**Use Case: View All Contacts**","lastModifiedDate":"2024-03-07"},{"lineNumber":354,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":355,"author":{"gitId":"cyqjoseph"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":356,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":357,"author":{"gitId":"cyqjoseph"},"content":"1. User requests to view all contacts.","lastModifiedDate":"2024-03-07"},{"lineNumber":358,"author":{"gitId":"cyqjoseph"},"content":"2. Dook retrieves and displays all contacts.","lastModifiedDate":"2024-03-07"},{"lineNumber":359,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":360,"author":{"gitId":"cyqjoseph"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":361,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":362,"author":{"gitId":"cyqjoseph"},"content":"**Extensions**","lastModifiedDate":"2024-03-07"},{"lineNumber":363,"author":{"gitId":"cyqjoseph"},"content":"* **2a. There are no contacts to display.**","lastModifiedDate":"2024-03-07"},{"lineNumber":364,"author":{"gitId":"cyqjoseph"},"content":" - **2a1. Dook shows a message indicating there are no contacts.**","lastModifiedDate":"2024-03-07"},{"lineNumber":365,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":366,"author":{"gitId":"cyqjoseph"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":367,"author":{"gitId":"cyqjoseph"},"content":"* **2b. An unexpected error occurs while fetching contacts.**","lastModifiedDate":"2024-03-07"},{"lineNumber":368,"author":{"gitId":"cyqjoseph"},"content":" - **2b1. Dook shows an error message.**","lastModifiedDate":"2024-03-07"},{"lineNumber":369,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":370,"author":{"gitId":"cyqjoseph"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":371,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":372,"author":{"gitId":"cyqjoseph"},"content":"**Use Case: Find Contacts**","lastModifiedDate":"2024-03-07"},{"lineNumber":373,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":374,"author":{"gitId":"cyqjoseph"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":375,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":376,"author":{"gitId":"cyqjoseph"},"content":"1. User requests to find contacts by name or contact type.","lastModifiedDate":"2024-03-07"},{"lineNumber":377,"author":{"gitId":"cyqjoseph"},"content":"2. Dook searches and displays matching contacts.","lastModifiedDate":"2024-03-07"},{"lineNumber":378,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":379,"author":{"gitId":"cyqjoseph"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":380,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":381,"author":{"gitId":"cyqjoseph"},"content":"**Extensions**","lastModifiedDate":"2024-03-07"},{"lineNumber":382,"author":{"gitId":"cyqjoseph"},"content":"* **2a. No contacts match the search criteria.**","lastModifiedDate":"2024-03-07"},{"lineNumber":383,"author":{"gitId":"cyqjoseph"},"content":" - **2a1. Dook shows a message indicating no matches found.**","lastModifiedDate":"2024-03-07"},{"lineNumber":384,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":385,"author":{"gitId":"cyqjoseph"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":386,"author":{"gitId":"cyqjoseph"},"content":"* **2b. An error occurs during the search.**","lastModifiedDate":"2024-03-07"},{"lineNumber":387,"author":{"gitId":"cyqjoseph"},"content":" - **2b1. Dook shows an error message.**","lastModifiedDate":"2024-03-07"},{"lineNumber":388,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":389,"author":{"gitId":"cyqjoseph"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":390,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":391,"author":{"gitId":"cyqjoseph"},"content":"### Booking System Use Cases","lastModifiedDate":"2024-03-07"},{"lineNumber":392,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":393,"author":{"gitId":"cyqjoseph"},"content":"**Use case: Book a Consultation Slot**","lastModifiedDate":"2024-03-07"},{"lineNumber":394,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":395,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":396,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":397,"author":{"gitId":"cyqjoseph"},"content":"1. User inputs `/book` command with necessary details.","lastModifiedDate":"2024-03-07"},{"lineNumber":398,"author":{"gitId":"cyqjoseph"},"content":"2. Dook schedules the booking.","lastModifiedDate":"2024-03-07"},{"lineNumber":399,"author":{"gitId":"cyqjoseph"},"content":"3. Dook confirms the booking details to the user.","lastModifiedDate":"2024-03-07"},{"lineNumber":400,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":401,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":402,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":403,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":404,"author":{"gitId":"cyqjoseph"},"content":"* **2a. The booking details are invalid.**","lastModifiedDate":"2024-03-07"},{"lineNumber":405,"author":{"gitId":"cyqjoseph"},"content":" * **2a1. Dook shows an error message.**","lastModifiedDate":"2024-03-07"},{"lineNumber":406,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":407,"author":{"gitId":"cyqjoseph"},"content":" Use Case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":408,"author":{"gitId":"cyqjoseph"},"content":"* **2b. The requested time slot overlaps with an existing booking.**","lastModifiedDate":"2024-03-07"},{"lineNumber":409,"author":{"gitId":"cyqjoseph"},"content":" * **2b1. Dook shows an error message.**","lastModifiedDate":"2024-03-07"},{"lineNumber":410,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":411,"author":{"gitId":"cyqjoseph"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":412,"author":{"gitId":"cyqjoseph"},"content":"* **2c. The specified user does not match any contacts.**","lastModifiedDate":"2024-03-07"},{"lineNumber":413,"author":{"gitId":"cyqjoseph"},"content":" * **2c1. Dook prompts the user to select a valid contact.**","lastModifiedDate":"2024-03-07"},{"lineNumber":414,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":415,"author":{"gitId":"cyqjoseph"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-07"},{"lineNumber":416,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":417,"author":{"gitId":"cyqjoseph"},"content":"**Use Case: View All Bookings**","lastModifiedDate":"2024-03-07"},{"lineNumber":418,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":419,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":420,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":421,"author":{"gitId":"cyqjoseph"},"content":"1. User requests to view all bookings.","lastModifiedDate":"2024-03-07"},{"lineNumber":422,"author":{"gitId":"cyqjoseph"},"content":"2. Dook retrieves and displays all bookings.","lastModifiedDate":"2024-03-07"},{"lineNumber":423,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":424,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":425,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":426,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2024-03-07"},{"lineNumber":427,"author":{"gitId":"cyqjoseph"},"content":"* **2a. Unable to retrieve bookings.**","lastModifiedDate":"2024-03-07"},{"lineNumber":428,"author":{"gitId":"cyqjoseph"},"content":" * **2a1. Dook shows an error message.**","lastModifiedDate":"2024-03-07"},{"lineNumber":429,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":430,"author":{"gitId":"cyqjoseph"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":431,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":432,"author":{"gitId":"cyqjoseph"},"content":"**Use Case: Cancel Bookings**","lastModifiedDate":"2024-03-07"},{"lineNumber":433,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":434,"author":{"gitId":"cyqjoseph"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":435,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":436,"author":{"gitId":"cyqjoseph"},"content":"1. User requests to cancel a booking or all bookings.","lastModifiedDate":"2024-03-07"},{"lineNumber":437,"author":{"gitId":"cyqjoseph"},"content":"2. Dook asks for confirmation (if applicable).","lastModifiedDate":"2024-03-07"},{"lineNumber":438,"author":{"gitId":"cyqjoseph"},"content":"3. User confirms cancellation.","lastModifiedDate":"2024-03-07"},{"lineNumber":439,"author":{"gitId":"cyqjoseph"},"content":"4. Dook cancels the booking(s) and confirms to the user.","lastModifiedDate":"2024-03-07"},{"lineNumber":440,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":441,"author":{"gitId":"cyqjoseph"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":442,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":443,"author":{"gitId":"cyqjoseph"},"content":"**Extensions**","lastModifiedDate":"2024-03-07"},{"lineNumber":444,"author":{"gitId":"cyqjoseph"},"content":"* **2a. User decides not to cancel after all.**","lastModifiedDate":"2024-03-07"},{"lineNumber":445,"author":{"gitId":"cyqjoseph"},"content":" * **2a1. Dook cancels the cancellation process.**","lastModifiedDate":"2024-03-07"},{"lineNumber":446,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":447,"author":{"gitId":"cyqjoseph"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":448,"author":{"gitId":"cyqjoseph"},"content":"* **3a. The specified booking does not exist.**","lastModifiedDate":"2024-03-07"},{"lineNumber":449,"author":{"gitId":"cyqjoseph"},"content":" * **3a1. Dook shows an error message.**","lastModifiedDate":"2024-03-07"},{"lineNumber":450,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":451,"author":{"gitId":"cyqjoseph"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":452,"author":{"gitId":"cyqjoseph"},"content":"* **4a. Error in deleting bookings.**","lastModifiedDate":"2024-03-07"},{"lineNumber":453,"author":{"gitId":"cyqjoseph"},"content":" * **4a1. Dook shows an error message.**","lastModifiedDate":"2024-03-07"},{"lineNumber":454,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":455,"author":{"gitId":"cyqjoseph"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":456,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":457,"author":{"gitId":"cyqjoseph"},"content":"**Use Case: Find Free Time**","lastModifiedDate":"2024-03-07"},{"lineNumber":458,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":459,"author":{"gitId":"cyqjoseph"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":460,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":461,"author":{"gitId":"cyqjoseph"},"content":"1. User requests to find free time for a contact.","lastModifiedDate":"2024-03-07"},{"lineNumber":462,"author":{"gitId":"cyqjoseph"},"content":"2. Dook retrieves and displays available time slots.","lastModifiedDate":"2024-03-07"},{"lineNumber":463,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":464,"author":{"gitId":"cyqjoseph"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":465,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":466,"author":{"gitId":"cyqjoseph"},"content":"**Extensions**","lastModifiedDate":"2024-03-07"},{"lineNumber":467,"author":{"gitId":"cyqjoseph"},"content":"* **2a. No free time slots are available.**","lastModifiedDate":"2024-03-07"},{"lineNumber":468,"author":{"gitId":"cyqjoseph"},"content":" * **2a1. Dook shows a message indicating no available time slots.**","lastModifiedDate":"2024-03-07"},{"lineNumber":469,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":470,"author":{"gitId":"cyqjoseph"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":471,"author":{"gitId":"cyqjoseph"},"content":"* **2b. The specified contact does not exist.**","lastModifiedDate":"2024-03-07"},{"lineNumber":472,"author":{"gitId":"cyqjoseph"},"content":" * **2b1. Dook prompts the user to select a valid contact.**","lastModifiedDate":"2024-03-07"},{"lineNumber":473,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":474,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23"},{"lineNumber":475,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":476,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":477,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":478,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":479,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":480,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":481,"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":482,"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":483,"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":484,"author":{"gitId":"cyqjoseph"},"content":"4. The system architecture should be designed to efficiently handle growth in data volume, capable of supporting at least 10 times the initial data volume without a complete overhaul.","lastModifiedDate":"2024-03-07"},{"lineNumber":485,"author":{"gitId":"cyqjoseph"},"content":"5. The system should include automated backup capabilities to prevent data loss and provide options for data recovery in case of system failure.","lastModifiedDate":"2024-03-07"},{"lineNumber":486,"author":{"gitId":"cyqjoseph"},"content":"6. Application should be able to use online and offline. ","lastModifiedDate":"2024-03-07"},{"lineNumber":487,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":488,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":489,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":490,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":491,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":492,"author":{"gitId":"cyqjoseph"},"content":"* **Professor**: Lecturer / Researcher in the National University of Singapore ","lastModifiedDate":"2024-03-07"},{"lineNumber":493,"author":{"gitId":"cyqjoseph"},"content":"* **SoC**: School of Computing in NUS","lastModifiedDate":"2024-03-07"},{"lineNumber":494,"author":{"gitId":"cyqjoseph"},"content":"* **Tutor**: Professor or Teaching Assistant in NUS SoC","lastModifiedDate":"2024-03-07"},{"lineNumber":495,"author":{"gitId":"cyqjoseph"},"content":"* **Consultation slot**: Time interval dedicated to a meeting","lastModifiedDate":"2024-03-07"},{"lineNumber":496,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":497,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":498,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":499,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":500,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":501,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":502,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":503,"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":504,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":505,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":506,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":507,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":508,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":509,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":510,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":511,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":512,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":513,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":514,"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":515,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":516,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":517,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":518,"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":519,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":520,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":521,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":522,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":523,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":524,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":525,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":526,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":527,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":528,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":529,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":530,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":531,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":532,"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":533,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":534,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":535,"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":536,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":537,"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":538,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":539,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":540,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":541,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":542,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":543,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":544,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":545,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":546,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":547,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":548,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"jerremyng":7,"cyqjoseph":161,"ChrysanthemumT":10,"-":370}},{"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":"gauravuj"},"content":"Introducing Dook: a **cutting-edge desktop application** engineered for the ","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"gauravuj"},"content":"seamless management of consultations and contacts, blending the power of a","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"gauravuj"},"content":"**Command Line Interface (CLI)** with the intuitive accessibility of a **Graphical User","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"gauravuj"},"content":"Interface (GUI)**. Designed specifically for the dynamic needs of the NUS ","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"gauravuj"},"content":"School of Computing community, Dook centralizes faculty information","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"gauravuj"},"content":"in an innovative manner, standing on the foundation of AddressBook Level 3","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"gauravuj"},"content":"(AB3) as an advanced brownfield project. For the quick typist, Dook elevates","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"gauravuj"},"content":"your ability to swiftly organize your academic consultations with professors","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"gauravuj"},"content":"and teaching assistants, outpacing conventional GUI-based applications.","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","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":"## Quick start","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"1. Ensure you have Java `11` or above installed in your Computer.","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"1. Download the latest `addressbook.jar` from [here](https://github.com/se-edu/addressbook-level3/releases).","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your AddressBook.","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar addressbook.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2023-01-01"},{"lineNumber":30,"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":31,"author":{"gitId":"ChrysanthemumT"},"content":" ![Ui](images/NewUI.png)","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"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":34,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"cyqjoseph"},"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":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2023-01-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","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":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"block\" class\u003d\"alert alert-info\"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"**:information_source: Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"cyqjoseph"},"content":" e.g. in `add -n NAME`, `NAME` is a parameter which can be used as `add -n John Doe`.","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"cyqjoseph"},"content":" e.g `-n NAME [-t TAG]` can be used as `-n John Doe -t friend` or as `-n John Doe`.","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"cyqjoseph"},"content":" e.g. `[-t TAG]…​` can be used as ` ` (i.e. 0 times), `-t friend`, `-t friend -t family` etc.","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"cyqjoseph"},"content":" e.g. if the command specifies `-n NAME -p PHONE_NUMBER`, `-p PHONE_NUMBER -n NAME` is also acceptable.","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"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":69,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":71,"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":72,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"Format: `help`","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":"### Adding a person: `add`","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"Adds a person to the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"cyqjoseph"},"content":"Format: `add -n NAME -p PHONE_NUMBER -e EMAIL -a ADDRESS [t/TAG]…​`","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Tip:**","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"A person can have any number of tags (including 0)","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"cyqjoseph"},"content":"* `add -n John Doe -p 98765432 -e johnd@example.com -a John street, block 123, #01-01`","lastModifiedDate":"2024-03-21"},{"lineNumber":95,"author":{"gitId":"cyqjoseph"},"content":"* `add -n Betsy Crowe -t friend -e betsycrowe@example.com -a Newgate Prison -p 1234567 -t criminal`","lastModifiedDate":"2024-03-21"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"### Listing all persons : `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"Shows a list of all persons in the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":"### Editing a person : `edit`","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":"Edits an existing person in the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"cyqjoseph"},"content":"Format: `edit INDEX [-n NAME] [-p PHONE] [-e EMAIL] [-a ADDRESS] [-t TAG]…​`","lastModifiedDate":"2024-03-21"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"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":110,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"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":113,"author":{"gitId":"cyqjoseph"},"content":"* You can remove all the person’s tags by typing `-t` without","lastModifiedDate":"2024-03-21"},{"lineNumber":114,"author":{"gitId":"-"},"content":" specifying any tags after it.","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"cyqjoseph"},"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":"2024-03-21"},{"lineNumber":118,"author":{"gitId":"cyqjoseph"},"content":"* `edit 2 -n Betsy Crower -t` Edits the name of the 2nd person to be `Betsy Crower` and clears all existing tags.","lastModifiedDate":"2024-03-21"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"### Locating persons by name: `find`","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":"Finds persons whose names contain any of the given keywords.","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","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":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"* `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"Deletes the specified person from the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"* Deletes the person at the specified `INDEX`.","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":"* `list` followed by `delete 2` deletes the 2nd person in the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"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":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"cyqjoseph"},"content":"### Adding a booking : `book`","lastModifiedDate":"2024-03-21"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"cyqjoseph"},"content":"Adds the specified booking to the address book.","lastModifiedDate":"2024-03-21"},{"lineNumber":155,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":156,"author":{"gitId":"cyqjoseph"},"content":"Format: `-n [description] -s [start_time] -e [end_time] …​","lastModifiedDate":"2024-03-21"},{"lineNumber":157,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":158,"author":{"gitId":"cyqjoseph"},"content":"* Creates a booking with the specified parameters. ","lastModifiedDate":"2024-03-21"},{"lineNumber":159,"author":{"gitId":"cyqjoseph"},"content":"* Start and end time formats are in yyyy-mm-dd","lastModifiedDate":"2024-03-21"},{"lineNumber":160,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":161,"author":{"gitId":"cyqjoseph"},"content":"Examples:","lastModifiedDate":"2024-03-21"},{"lineNumber":162,"author":{"gitId":"cyqjoseph"},"content":"* `book -n John\u0027s Birthday Party -s 2023-12-31 19:00 -e 2023-12-31 23:00`","lastModifiedDate":"2024-03-21"},{"lineNumber":163,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":164,"author":{"gitId":"cyqjoseph"},"content":"### Cancelling a booking : `cancel`","lastModifiedDate":"2024-03-21"},{"lineNumber":165,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":166,"author":{"gitId":"cyqjoseph"},"content":"Cancels the specified booking from the address book.","lastModifiedDate":"2024-03-21"},{"lineNumber":167,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":168,"author":{"gitId":"cyqjoseph"},"content":"Format: `cancel INDEX`","lastModifiedDate":"2024-03-21"},{"lineNumber":169,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":170,"author":{"gitId":"cyqjoseph"},"content":"* Deletes the person at the specified `INDEX`.","lastModifiedDate":"2024-03-21"},{"lineNumber":171,"author":{"gitId":"cyqjoseph"},"content":"* The index refers to the index number shown in the displayed booking list.","lastModifiedDate":"2024-03-21"},{"lineNumber":172,"author":{"gitId":"cyqjoseph"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-03-21"},{"lineNumber":173,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":174,"author":{"gitId":"cyqjoseph"},"content":"### Clearing all contact entries : `clear`","lastModifiedDate":"2024-03-21"},{"lineNumber":175,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":176,"author":{"gitId":"cyqjoseph"},"content":"Clears all contact entries from the address book.","lastModifiedDate":"2024-03-21"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"cyqjoseph"},"content":"Examples:","lastModifiedDate":"2024-03-21"},{"lineNumber":181,"author":{"gitId":"cyqjoseph"},"content":"* `list` followed by `delete 2` deletes the 2nd person in the address book.","lastModifiedDate":"2024-03-21"},{"lineNumber":182,"author":{"gitId":"cyqjoseph"},"content":"* `find Betsy` followed by `delete 1` deletes the 1st person in the results of the `find` command.","lastModifiedDate":"2024-03-21"},{"lineNumber":183,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":184,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"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":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":196,"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":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":198,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e:exclamation: **Caution:**","lastModifiedDate":"2021-02-04"},{"lineNumber":199,"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.\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":200,"author":{"gitId":"-"},"content":"Furthermore, certain edits can cause the AddressBook to behave in unexpected ways (e.g., if a value entered is outside of the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.","lastModifiedDate":"2024-02-09"},{"lineNumber":201,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-02-04"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":203,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04"},{"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":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"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":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":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":218,"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":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":220,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":222,"author":{"gitId":"gauravuj"},"content":"## Address Book Command summary","lastModifiedDate":"2024-03-20"},{"lineNumber":223,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":224,"author":{"gitId":"cyqjoseph"},"content":"| Action | Format, Examples |","lastModifiedDate":"2024-03-21"},{"lineNumber":225,"author":{"gitId":"cyqjoseph"},"content":"|------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|","lastModifiedDate":"2024-03-21"},{"lineNumber":226,"author":{"gitId":"cyqjoseph"},"content":"| **Add** | `add -n NAME -p PHONE_NUMBER -e EMAIL -a ADDRESS [-t TAG]…​` \u003cbr\u003e e.g., `add -n John Doe -p 22224444 -e jamesho@example.com -a 123, Clementi Rd, 1234665 -t friend t/colleague` |","lastModifiedDate":"2024-03-21"},{"lineNumber":227,"author":{"gitId":"cyqjoseph"},"content":"| **Clear** | `clear` |","lastModifiedDate":"2024-03-21"},{"lineNumber":228,"author":{"gitId":"cyqjoseph"},"content":"| **Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3` |","lastModifiedDate":"2024-03-21"},{"lineNumber":229,"author":{"gitId":"cyqjoseph"},"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":"2024-03-21"},{"lineNumber":230,"author":{"gitId":"cyqjoseph"},"content":"| **Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake` |","lastModifiedDate":"2024-03-21"},{"lineNumber":231,"author":{"gitId":"cyqjoseph"},"content":"| **List** | `list` |","lastModifiedDate":"2024-03-21"},{"lineNumber":232,"author":{"gitId":"cyqjoseph"},"content":"| **Help** | `help` |","lastModifiedDate":"2024-03-21"},{"lineNumber":233,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":234,"author":{"gitId":"gauravuj"},"content":"## Booking List Command summary","lastModifiedDate":"2024-03-20"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"cyqjoseph"},"content":"| Action | Format, Examples |","lastModifiedDate":"2024-03-19"},{"lineNumber":237,"author":{"gitId":"gauravuj"},"content":"|---------------|------------------------------------------------------------------------------------------------------------------------------------|","lastModifiedDate":"2024-03-20"},{"lineNumber":238,"author":{"gitId":"gauravuj"},"content":"| **Book** | `book -n DESCRIPTION -s START_TIME -e END_TIME` \u003cbr\u003e e.g., `book -n John\u0027s Birthday Party -s 2024-03-01 19:00 -e 2024-03-01 23:00` |","lastModifiedDate":"2024-03-20"},{"lineNumber":239,"author":{"gitId":"gauravuj"},"content":"| **View** | `view -b` |","lastModifiedDate":"2024-03-20"},{"lineNumber":240,"author":{"gitId":"gauravuj"},"content":"| **Cancel** | `cancel INDEX` or `cancel -a` or `cancel sudo -a` \u003cbr\u003e e.g., `cancel 2` |","lastModifiedDate":"2024-03-20"},{"lineNumber":241,"author":{"gitId":"gauravuj"},"content":"| **Edit** | `edit INDEX [-n DESCRIPTION] [-s START_TIME] [-e END_TIME]`\u003cbr\u003e e.g.,`edit 2 -n Prof Aaron\u0027s Consultation -s 2024-03-01 14:30` |","lastModifiedDate":"2024-03-20"},{"lineNumber":242,"author":{"gitId":"gauravuj"},"content":"| **Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find Prof Lee\u0027s Consultation` |","lastModifiedDate":"2024-03-20"},{"lineNumber":243,"author":{"gitId":"gauravuj"},"content":"| **Free Time** | `find -ft -n NAME`\u003cbr\u003e e.g., `find -ft -n Prof Damith` |","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"gauravuj":20,"ChrysanthemumT":1,"cyqjoseph":50,"-":172}},{"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":"jerremyng"},"content":" content: \"dook\";","lastModifiedDate":"2024-03-06"},{"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":{"jerremyng":1,"-":294}},{"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":"jerremyng"},"content":"skinparam {","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"jerremyng"},"content":" arrowThickness 1.1","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"jerremyng"},"content":" arrowColor MODEL_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"jerremyng"},"content":" classBackgroundColor MODEL_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"jerremyng"},"content":" classBorderColor MODEL_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"jerremyng"},"content":" ClassStereotypeFontColor MODEL_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"jerremyng"},"content":" classBorderColor\u003c\u003chide\u003e\u003e #FFFFFF","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"jerremyng"},"content":" ClassStereotypeFontColor\u003c\u003chide\u003e\u003e #FFFFFF","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"jerremyng"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"Package Model as ModelPackage \u003c\u003cRectangle\u003e\u003e{","lastModifiedDate":"2023-07-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyAddressBook\" as ReadOnlyAddressBook","lastModifiedDate":"2022-01-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyUserPrefs\" as ReadOnlyUserPrefs","lastModifiedDate":"2022-01-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nModel\" as Model","lastModifiedDate":"2022-01-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Class AddressBook","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Class ModelManager","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Class UserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":"Class UniqueBookingList","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Class UniquePersonList","lastModifiedDate":"2021-07-31"},{"lineNumber":23,"author":{"gitId":"jerremyng"},"content":"together{","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"jerremyng"},"content":" Class \"FilteredList \u003cPerson\u003e\" as FilteredListPerson","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"jerremyng"},"content":" Class \"FilteredList \u003cBooking\u003e\" as FilteredListBooking","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"jerremyng"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"jerremyng"},"content":"note \"Used by UI component for display to user\" as N1","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"jerremyng"},"content":"FilteredListPerson .right. N1","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"jerremyng"},"content":"FilteredListBooking .. N1","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"jerremyng"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":"Class Person","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"Class Address","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"Class Email","lastModifiedDate":"2019-07-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"Class Name","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"Class Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":36,"author":{"gitId":"-"},"content":"Class Tag","lastModifiedDate":"2019-07-03"},{"lineNumber":37,"author":{"gitId":"cyqjoseph"},"content":"Class Booking","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"cyqjoseph"},"content":"Class Description","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"cyqjoseph"},"content":"Class StartTime","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"cyqjoseph"},"content":"Class EndTime","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":44,"author":{"gitId":"jerremyng"},"content":"Class HiddenOutside \u003c\u003chide\u003e\u003e #FFFFFF","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":47,"author":{"gitId":"-"},"content":"Model .right.\u003e ReadOnlyUserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":48,"author":{"gitId":"-"},"content":"Model .left.\u003e ReadOnlyAddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":49,"author":{"gitId":"jerremyng"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"jerremyng"},"content":"ModelManager .up.|\u003e Model","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"jerremyng"},"content":"AddressBook .up.|\u003e ReadOnlyAddressBook","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"jerremyng"},"content":"UserPrefs .up.|\u003e ReadOnlyUserPrefs","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"jerremyng"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"-"},"content":"ModelManager -left-\u003e \"1\" AddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":55,"author":{"gitId":"-"},"content":"ModelManager -right-\u003e \"1\" UserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":56,"author":{"gitId":"jerremyng"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"jerremyng"},"content":"ModelManager --\u003e \"1\" FilteredListPerson","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"jerremyng"},"content":"ModelManager --\u003e \"1\" FilteredListBooking","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":60,"author":{"gitId":"-"},"content":"AddressBook *--\u003e \"1\" UniquePersonList","lastModifiedDate":"2019-07-30"},{"lineNumber":61,"author":{"gitId":"cyqjoseph"},"content":"AddressBook *--\u003e \"1\" UniqueBookingList","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"jerremyng"},"content":"UniqueBookingList --\u003e \"~*\" Booking","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"jerremyng"},"content":"UniquePersonList --\u003e \"~*\" Person","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"jerremyng"},"content":"Person *--\u003e \"1\" Name","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"jerremyng"},"content":"Person *--\u003e \"0..1\" Phone","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"jerremyng"},"content":"Person *--\u003e \"0..1\" Email","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"jerremyng"},"content":"Person *--\u003e \"0..1\" Address","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"-"},"content":"Person *--\u003e \"*\" Tag","lastModifiedDate":"2019-07-03"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":71,"author":{"gitId":"-"},"content":"Name -[hidden]right-\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":72,"author":{"gitId":"-"},"content":"Phone -[hidden]right-\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":73,"author":{"gitId":"-"},"content":"Address -[hidden]right-\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":74,"author":{"gitId":"jerremyng"},"content":"Email -[hidden]right-\u003e Tag","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":76,"author":{"gitId":"jerremyng"},"content":"Booking *--\u003e\"1\" Description","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"jerremyng"},"content":"Booking *--\u003e \"1\" StartTime","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"jerremyng"},"content":"Booking *--\u003e \"1\" EndTime","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"jerremyng":36,"cyqjoseph":6,"-":38}},{"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":"cyqjoseph"},"content":"Class JsonAdaptedBooking","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Class JsonAdaptedPerson","lastModifiedDate":"2021-07-31"},{"lineNumber":23,"author":{"gitId":"-"},"content":"Class JsonAdaptedTag","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":"","lastModifiedDate":"2021-07-31"},{"lineNumber":28,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2021-07-31"},{"lineNumber":29,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Storage","lastModifiedDate":"2021-07-31"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":31,"author":{"gitId":"-"},"content":"StorageManager .up.|\u003e Storage","lastModifiedDate":"2021-07-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"StorageManager -up-\u003e \"1\" UserPrefsStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":33,"author":{"gitId":"-"},"content":"StorageManager -up-\u003e \"1\" AddressBookStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"Storage -left-|\u003e UserPrefsStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"Storage -right-|\u003e AddressBookStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"JsonUserPrefsStorage .up.|\u003e UserPrefsStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":39,"author":{"gitId":"-"},"content":"JsonAddressBookStorage .up.|\u003e AddressBookStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":40,"author":{"gitId":"-"},"content":"JsonAddressBookStorage ..\u003e JsonSerializableAddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":41,"author":{"gitId":"-"},"content":"JsonSerializableAddressBook --\u003e \"*\" JsonAdaptedPerson","lastModifiedDate":"2021-07-31"},{"lineNumber":42,"author":{"gitId":"cyqjoseph"},"content":"JsonSerializableAddressBook --\u003e \"*\" JsonAdaptedBooking","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":"JsonAdaptedPerson --\u003e \"*\" JsonAdaptedTag","lastModifiedDate":"2021-07-31"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-03-31"},{"lineNumber":45,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"cyqjoseph":2,"-":43}},{"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":"-"},"content":"Class PersonListPanel","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"Class PersonCard","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"gauravuj"},"content":"Class BookingListPanel","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"gauravuj"},"content":"Class BookingCard","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Class StatusBarFooter","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Class CommandBox","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"package Model \u003c\u003cRectangle\u003e\u003e {","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"Class HiddenModel #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"package Logic \u003c\u003cRectangle\u003e\u003e {","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"Class HiddenLogic #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Ui","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"UiManager .left.|\u003e Ui","lastModifiedDate":"2019-07-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"UiManager -down-\u003e \"1\" MainWindow","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" CommandBox","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" ResultDisplay","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" PersonListPanel","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" StatusBarFooter","lastModifiedDate":"2021-07-31"},{"lineNumber":39,"author":{"gitId":"-"},"content":"MainWindow --\u003e \"0..1\" HelpWindow","lastModifiedDate":"2021-07-31"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"PersonListPanel -down-\u003e \"*\" PersonCard","lastModifiedDate":"2021-07-31"},{"lineNumber":42,"author":{"gitId":"gauravuj"},"content":"MainWindow *-down-\u003e \"1\" BookingListPanel","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"gauravuj"},"content":"BookingListPanel -down-\u003e \"*\" BookingCard","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"MainWindow -left-|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":47,"author":{"gitId":"-"},"content":"ResultDisplay --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":48,"author":{"gitId":"-"},"content":"CommandBox --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":49,"author":{"gitId":"-"},"content":"PersonListPanel --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":50,"author":{"gitId":"-"},"content":"PersonCard --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"StatusBarFooter --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":52,"author":{"gitId":"-"},"content":"HelpWindow --|\u003e UiPart","lastModifiedDate":"2021-07-31"},{"lineNumber":53,"author":{"gitId":"gauravuj"},"content":"BookingListPanel --|\u003e UiPart","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"gauravuj"},"content":"BookingCard --|\u003e UiPart","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":"PersonCard ..\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":57,"author":{"gitId":"gauravuj"},"content":"BookingCard ..\u003e Model","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":"UiManager -right-\u003e Logic","lastModifiedDate":"2019-07-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":"MainWindow -left-\u003e Logic","lastModifiedDate":"2019-07-03"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":61,"author":{"gitId":"-"},"content":"PersonListPanel -[hidden]left- HelpWindow","lastModifiedDate":"2019-07-03"},{"lineNumber":62,"author":{"gitId":"-"},"content":"HelpWindow -[hidden]left- CommandBox","lastModifiedDate":"2019-07-03"},{"lineNumber":63,"author":{"gitId":"-"},"content":"CommandBox -[hidden]left- ResultDisplay","lastModifiedDate":"2019-07-03"},{"lineNumber":64,"author":{"gitId":"-"},"content":"ResultDisplay -[hidden]left- StatusBarFooter","lastModifiedDate":"2019-07-30"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":66,"author":{"gitId":"-"},"content":"MainWindow -[hidden]-|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":67,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"gauravuj":7,"-":60}},{"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":"cyqjoseph"},"content":"title: Dook","lastModifiedDate":"2024-03-06"},{"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":"cyqjoseph"},"content":"**Dook** is an application for **NUS School of Computing (SoC) students to find contacts within SoC** and **book consultation slots with Professors and Teaching Assistants**.\u003cbr\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":"* If you are interested in using Dook, head over to the [_Quick Start_ section of the **User Guide**](https://github.com/AY2324S2-CS2103T-W11-3/tp/blob/master/docs/UserGuide.md).","lastModifiedDate":"2024-03-06"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":"* If you are interested about developing Dook, the [**Developer Guide**](https://github.com/AY2324S2-CS2103T-W11-3/tp/blob/master/docs/DeveloperGuide.md) is a good place to start.","lastModifiedDate":"2024-03-06"},{"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":{"cyqjoseph":4,"-":14}},{"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.storage.AddressBookStorage;","lastModifiedDate":"2017-02-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2017-02-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2016-09-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.storage.UserPrefsStorage;","lastModifiedDate":"2017-02-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.ui.Ui;","lastModifiedDate":"2016-09-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.ui.UiManager;","lastModifiedDate":"2016-09-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Runs the application.","lastModifiedDate":"2019-02-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":"public class MainApp extends Application {","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final Version VERSION \u003d new Version(0, 2, 2, true);","lastModifiedDate":"2023-08-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(MainApp.class);","lastModifiedDate":"2017-04-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":" protected Ui ui;","lastModifiedDate":"2016-09-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" protected Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" protected Storage storage;","lastModifiedDate":"2016-09-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" protected Model model;","lastModifiedDate":"2016-09-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" protected Config config;","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void init() throws Exception {","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"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":51,"author":{"gitId":"-"},"content":" super.init();","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" AppParameters appParameters \u003d AppParameters.parse(getParameters());","lastModifiedDate":"2018-04-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" config \u003d initConfig(appParameters.getConfigPath());","lastModifiedDate":"2018-04-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" initLogging(config);","lastModifiedDate":"2023-07-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":" UserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(config.getUserPrefsFilePath());","lastModifiedDate":"2017-02-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d initPrefs(userPrefsStorage);","lastModifiedDate":"2018-12-06"},{"lineNumber":59,"author":{"gitId":"-"},"content":" AddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(userPrefs.getAddressBookFilePath());","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2017-02-25"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" model \u003d initModelManager(storage, userPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":" ui \u003d new UiManager(logic);","lastModifiedDate":"2018-12-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":70,"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":71,"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":72,"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":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":74,"author":{"gitId":"-"},"content":" private Model initModelManager(Storage storage, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":75,"author":{"gitId":"-"},"content":" logger.info(\"Using data file : \" + storage.getAddressBookFilePath());","lastModifiedDate":"2023-07-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":" Optional\u003cReadOnlyAddressBook\u003e addressBookOptional;","lastModifiedDate":"2016-09-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook initialData;","lastModifiedDate":"2016-09-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":" addressBookOptional \u003d storage.readAddressBook();","lastModifiedDate":"2016-09-25"},{"lineNumber":81,"author":{"gitId":"-"},"content":" if (!addressBookOptional.isPresent()) {","lastModifiedDate":"2016-09-24"},{"lineNumber":82,"author":{"gitId":"jerremyng"},"content":" logger.info(\"Creating a new data file \" + storage.getAddressBookFilePath());","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":84,"author":{"gitId":"jerremyng"},"content":" initialData \u003d addressBookOptional.orElseGet(() -\u003e new AddressBook());","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":86,"author":{"gitId":"-"},"content":" logger.warning(\"Data file at \" + storage.getAddressBookFilePath() + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" + \" Will be starting with an empty AddressBook.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":" initialData \u003d new AddressBook();","lastModifiedDate":"2016-09-24"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":" return new ModelManager(initialData, userPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":94,"author":{"gitId":"-"},"content":" private void initLogging(Config config) {","lastModifiedDate":"2016-09-24"},{"lineNumber":95,"author":{"gitId":"-"},"content":" LogsCenter.init(config);","lastModifiedDate":"2016-09-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":98,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * Returns a {@code Config} using the file at {@code configFilePath}. \u003cbr\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * The default file path {@code Config#DEFAULT_CONFIG_FILE} will be used instead","lastModifiedDate":"2017-08-16"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * if {@code configFilePath} is null.","lastModifiedDate":"2017-08-16"},{"lineNumber":102,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":103,"author":{"gitId":"-"},"content":" protected Config initConfig(Path configFilePath) {","lastModifiedDate":"2018-04-21"},{"lineNumber":104,"author":{"gitId":"-"},"content":" Config initializedConfig;","lastModifiedDate":"2016-09-24"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Path configFilePathUsed;","lastModifiedDate":"2018-04-21"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":107,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d Config.DEFAULT_CONFIG_FILE;","lastModifiedDate":"2016-09-24"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":" if (configFilePath !\u003d null) {","lastModifiedDate":"2016-09-24"},{"lineNumber":110,"author":{"gitId":"-"},"content":" logger.info(\"Custom Config file specified \" + configFilePath);","lastModifiedDate":"2016-09-24"},{"lineNumber":111,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d configFilePath;","lastModifiedDate":"2016-09-24"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" logger.info(\"Using config file : \" + configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":116,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":117,"author":{"gitId":"-"},"content":" Optional\u003cConfig\u003e configOptional \u003d ConfigUtil.readConfig(configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":118,"author":{"gitId":"-"},"content":" if (!configOptional.isPresent()) {","lastModifiedDate":"2023-01-03"},{"lineNumber":119,"author":{"gitId":"-"},"content":" logger.info(\"Creating new config file \" + configFilePathUsed);","lastModifiedDate":"2023-05-15"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03"},{"lineNumber":121,"author":{"gitId":"-"},"content":" initializedConfig \u003d configOptional.orElse(new Config());","lastModifiedDate":"2016-09-24"},{"lineNumber":122,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" logger.warning(\"Config file at \" + configFilePathUsed + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":124,"author":{"gitId":"-"},"content":" + \" Using default config properties.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":125,"author":{"gitId":"-"},"content":" initializedConfig \u003d new Config();","lastModifiedDate":"2016-09-24"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":128,"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":129,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":130,"author":{"gitId":"-"},"content":" ConfigUtil.saveConfig(initializedConfig, configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":131,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":132,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":134,"author":{"gitId":"-"},"content":" return initializedConfig;","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":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":138,"author":{"gitId":"-"},"content":" * Returns a {@code UserPrefs} using the file at {@code storage}\u0027s user prefs file path,","lastModifiedDate":"2017-08-16"},{"lineNumber":139,"author":{"gitId":"-"},"content":" * or a new {@code UserPrefs} with default configuration if errors occur when","lastModifiedDate":"2017-08-16"},{"lineNumber":140,"author":{"gitId":"-"},"content":" * reading from the file.","lastModifiedDate":"2017-08-16"},{"lineNumber":141,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":142,"author":{"gitId":"-"},"content":" protected UserPrefs initPrefs(UserPrefsStorage storage) {","lastModifiedDate":"2017-02-25"},{"lineNumber":143,"author":{"gitId":"-"},"content":" Path prefsFilePath \u003d storage.getUserPrefsFilePath();","lastModifiedDate":"2018-04-21"},{"lineNumber":144,"author":{"gitId":"-"},"content":" logger.info(\"Using preference file : \" + prefsFilePath);","lastModifiedDate":"2023-05-15"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":146,"author":{"gitId":"-"},"content":" UserPrefs initializedPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":147,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":148,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e prefsOptional \u003d storage.readUserPrefs();","lastModifiedDate":"2016-09-25"},{"lineNumber":149,"author":{"gitId":"-"},"content":" if (!prefsOptional.isPresent()) {","lastModifiedDate":"2023-01-03"},{"lineNumber":150,"author":{"gitId":"-"},"content":" logger.info(\"Creating new preference file \" + prefsFilePath);","lastModifiedDate":"2023-05-15"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03"},{"lineNumber":152,"author":{"gitId":"-"},"content":" initializedPrefs \u003d prefsOptional.orElse(new UserPrefs());","lastModifiedDate":"2016-09-24"},{"lineNumber":153,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":154,"author":{"gitId":"-"},"content":" logger.warning(\"Preference file at \" + prefsFilePath + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":155,"author":{"gitId":"-"},"content":" + \" Using default preferences.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":156,"author":{"gitId":"-"},"content":" initializedPrefs \u003d new UserPrefs();","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":" //Update prefs file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24"},{"lineNumber":160,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":161,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(initializedPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":162,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":163,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":166,"author":{"gitId":"-"},"content":" return initializedPrefs;","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":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":" public void start(Stage primaryStage) {","lastModifiedDate":"2016-08-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":" logger.info(\"Starting AddressBook \" + MainApp.VERSION);","lastModifiedDate":"2016-09-29"},{"lineNumber":172,"author":{"gitId":"-"},"content":" ui.start(primaryStage);","lastModifiedDate":"2016-09-25"},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":" public void stop() {","lastModifiedDate":"2016-08-08"},{"lineNumber":177,"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":178,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":179,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(model.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":180,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":181,"author":{"gitId":"-"},"content":" logger.severe(\"Failed to save preferences \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":184,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"jerremyng":2,"-":182}},{"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":"-"},"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":"ChrysanthemumT"},"content":" private static final String DEFAULT_THEME \u003d \"DarkTheme\";","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private final double windowWidth;","lastModifiedDate":"2018-11-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final double windowHeight;","lastModifiedDate":"2018-11-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final Point windowCoordinates;","lastModifiedDate":"2018-11-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"ChrysanthemumT"},"content":" private Theme theme;","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Constructs a {@code GuiSettings} with the default height, width and position.","lastModifiedDate":"2020-05-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public GuiSettings() {","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" windowWidth \u003d DEFAULT_WIDTH;","lastModifiedDate":"2018-08-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":" windowHeight \u003d DEFAULT_HEIGHT;","lastModifiedDate":"2018-08-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":" windowCoordinates \u003d null; // null represent no coordinates","lastModifiedDate":"2018-08-14"},{"lineNumber":32,"author":{"gitId":"ChrysanthemumT"},"content":" theme \u003d Theme.DARKTHEME;","lastModifiedDate":"2024-03-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":"2020-05-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Constructs a {@code GuiSettings} with the specified height, width and position.","lastModifiedDate":"2020-05-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":38,"author":{"gitId":"ChrysanthemumT"},"content":" public GuiSettings(double windowWidth, double windowHeight, int xPosition, int yPosition, String theme) {","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.windowWidth \u003d windowWidth;","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.windowHeight \u003d windowHeight;","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" windowCoordinates \u003d new Point(xPosition, yPosition);","lastModifiedDate":"2018-08-14"},{"lineNumber":42,"author":{"gitId":"ChrysanthemumT"},"content":" this.theme \u003d Theme.valueOf(theme);","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public double getWindowWidth() {","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" return windowWidth;","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":" public double getWindowHeight() {","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return windowHeight;","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":" public Point getWindowCoordinates() {","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return windowCoordinates !\u003d null ? new Point(windowCoordinates) : null;","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":57,"author":{"gitId":"ChrysanthemumT"},"content":" public Theme getDefaultTheme() {","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"ChrysanthemumT"},"content":" return Theme.DARKTHEME;","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"ChrysanthemumT"},"content":" public Theme getTheme() {","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"ChrysanthemumT"},"content":" return this.theme;","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"ChrysanthemumT"},"content":" public String getStringTheme() {","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"ChrysanthemumT"},"content":" return this.theme.toString();","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"ChrysanthemumT"},"content":" public void setTheme(Theme theme) {","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"ChrysanthemumT"},"content":" this.theme \u003d theme;","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2016-09-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2016-09-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" if (!(other instanceof GuiSettings)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2016-09-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":" GuiSettings otherGuiSettings \u003d (GuiSettings) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return windowWidth \u003d\u003d otherGuiSettings.windowWidth","lastModifiedDate":"2023-07-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" \u0026\u0026 windowHeight \u003d\u003d otherGuiSettings.windowHeight","lastModifiedDate":"2023-07-13"},{"lineNumber":86,"author":{"gitId":"ChrysanthemumT"},"content":" \u0026\u0026 Objects.equals(windowCoordinates, otherGuiSettings.windowCoordinates)","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"ChrysanthemumT"},"content":" \u0026\u0026 theme.equals(otherGuiSettings.theme);","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-24"},{"lineNumber":92,"author":{"gitId":"ChrysanthemumT"},"content":" return Objects.hash(windowWidth, windowHeight, windowCoordinates, theme);","lastModifiedDate":"2024-03-21"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-09-24"},{"lineNumber":97,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":" .add(\"windowWidth\", windowWidth)","lastModifiedDate":"2019-02-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":" .add(\"windowHeight\", windowHeight)","lastModifiedDate":"2019-02-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":" .add(\"windowCoordinates\", windowCoordinates)","lastModifiedDate":"2019-02-23"},{"lineNumber":101,"author":{"gitId":"ChrysanthemumT"},"content":" .add(\"theme\", theme)","lastModifiedDate":"2024-03-21"},{"lineNumber":102,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":104,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"ChrysanthemumT":25,"-":79}},{"path":"src/main/java/seedu/address/commons/core/Theme.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package seedu.address.commons.core;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":" * Represents the available themes for the application.","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":"public enum Theme {","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":" LIGHTTHEME, DARKTHEME,","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"ChrysanthemumT":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":"-"},"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":"gauravuj"},"content":"import seedu.address.model.booking.Booking;","lastModifiedDate":"2024-03-18"},{"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":"gauravuj"},"content":" ObservableList\u003cBooking\u003e getFilteredBookingList();","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-18"},{"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":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","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":" * Set the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"gauravuj":3,"-":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":"-"},"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":"gauravuj"},"content":"import seedu.address.model.booking.Booking;","lastModifiedDate":"2024-03-18"},{"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":"gauravuj"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"gauravuj"},"content":" public ObservableList\u003cBooking\u003e getFilteredBookingList() {","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"gauravuj"},"content":" return model.getFilteredBookingList();","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"gauravuj"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-18"},{"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":{"gauravuj":6,"-":88}},{"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":"jerremyng"},"content":"import seedu.address.model.booking.Booking;","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23"},{"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":"-"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX \u003d \"The person index provided is invalid\";","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"zhenghuil"},"content":" public static final String MESSAGE_INVALID_BOOKING_DISPLAYED_INDEX \u003d \"The booking index provided is invalid\";","lastModifiedDate":"2024-03-19"},{"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":"-"},"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":"-"},"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":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"jerremyng"},"content":" /**","lastModifiedDate":"2024-03-10"},{"lineNumber":54,"author":{"gitId":"jerremyng"},"content":" * Formats the {@code booking} for display to the user.","lastModifiedDate":"2024-03-10"},{"lineNumber":55,"author":{"gitId":"jerremyng"},"content":" */","lastModifiedDate":"2024-03-10"},{"lineNumber":56,"author":{"gitId":"cyqjoseph"},"content":" public static String formatBooking(Booking booking) {","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"cyqjoseph"},"content":" return \"Booking created!\";","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"jerremyng"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":59,"author":{"gitId":"jerremyng"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"jerremyng":6,"cyqjoseph":2,"-":51,"zhenghuil":1}},{"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":"-"},"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 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":"jerremyng"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a person to the address book.\\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06"},{"lineNumber":25,"author":{"gitId":"jerremyng"},"content":" + PREFIX_NAME + \"{name} \"","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"jerremyng"},"content":" + PREFIX_PHONE + \"{phone} \"","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"jerremyng"},"content":" + PREFIX_EMAIL + \"{email} \"","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"jerremyng"},"content":" + PREFIX_ADDRESS + \"{address} \"","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"jerremyng"},"content":" + \"[\" + PREFIX_TAG + \"{tag}]...\\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"jerremyng"},"content":" + \"Example usage: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2017-05-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"owesMoney\";","lastModifiedDate":"2017-05-09"},{"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":{"jerremyng":7,"-":77}},{"path":"src/main/java/seedu/address/logic/commands/BookCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jerremyng"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"jerremyng"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":3,"author":{"gitId":"jerremyng"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-10"},{"lineNumber":4,"author":{"gitId":"jerremyng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_END_TIME;","lastModifiedDate":"2024-03-10"},{"lineNumber":5,"author":{"gitId":"jerremyng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-10"},{"lineNumber":6,"author":{"gitId":"jerremyng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_START_TIME;","lastModifiedDate":"2024-03-10"},{"lineNumber":7,"author":{"gitId":"jerremyng"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"jerremyng"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"jerremyng"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"jerremyng"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-10"},{"lineNumber":11,"author":{"gitId":"jerremyng"},"content":"import seedu.address.model.booking.Booking;","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"jerremyng"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":13,"author":{"gitId":"jerremyng"},"content":"/**","lastModifiedDate":"2024-03-10"},{"lineNumber":14,"author":{"gitId":"jerremyng"},"content":" * Lists all persons in the address book to the user.","lastModifiedDate":"2024-03-10"},{"lineNumber":15,"author":{"gitId":"jerremyng"},"content":" */","lastModifiedDate":"2024-03-10"},{"lineNumber":16,"author":{"gitId":"jerremyng"},"content":"public class BookCommand extends Command {","lastModifiedDate":"2024-03-10"},{"lineNumber":17,"author":{"gitId":"jerremyng"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":18,"author":{"gitId":"jerremyng"},"content":" public static final String COMMAND_WORD \u003d \"book\";","lastModifiedDate":"2024-03-10"},{"lineNumber":19,"author":{"gitId":"jerremyng"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":20,"author":{"gitId":"jerremyng"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Booking created!\";","lastModifiedDate":"2024-03-10"},{"lineNumber":21,"author":{"gitId":"jerremyng"},"content":" public static final String MESSAGE_DUPLICATE_BOOKING \u003d \"Error: This booking already exists.\";","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"jerremyng"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":23,"author":{"gitId":"jerremyng"},"content":" public static final String MESSAGE_USAGE \u003d BookCommand.COMMAND_WORD + \": Adds a booking to the system.\\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"jerremyng"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-03-10"},{"lineNumber":25,"author":{"gitId":"jerremyng"},"content":" + PREFIX_NAME + \"{description} \"","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"jerremyng"},"content":" + PREFIX_START_TIME + \"{start_time} \"","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"jerremyng"},"content":" + PREFIX_END_TIME + \"{end_time}\\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"jerremyng"},"content":" + \"Example usage: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"jerremyng"},"content":" + PREFIX_NAME + \"John\u0027s Birthday Party \"","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"jerremyng"},"content":" + PREFIX_START_TIME + \"2023-12-31 19:00 \"","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"jerremyng"},"content":" + PREFIX_END_TIME + \"2023-12-31 23:00\";","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"jerremyng"},"content":" private final Booking toAdd;","lastModifiedDate":"2024-03-10"},{"lineNumber":33,"author":{"gitId":"jerremyng"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":34,"author":{"gitId":"jerremyng"},"content":" /**","lastModifiedDate":"2024-03-10"},{"lineNumber":35,"author":{"gitId":"jerremyng"},"content":" * Creates a BookCommand to add {@code booking}","lastModifiedDate":"2024-03-10"},{"lineNumber":36,"author":{"gitId":"jerremyng"},"content":" * @param booking","lastModifiedDate":"2024-03-10"},{"lineNumber":37,"author":{"gitId":"jerremyng"},"content":" */","lastModifiedDate":"2024-03-10"},{"lineNumber":38,"author":{"gitId":"jerremyng"},"content":" public BookCommand(Booking booking) {","lastModifiedDate":"2024-03-10"},{"lineNumber":39,"author":{"gitId":"jerremyng"},"content":" requireNonNull(booking);","lastModifiedDate":"2024-03-10"},{"lineNumber":40,"author":{"gitId":"jerremyng"},"content":" this.toAdd \u003d booking;","lastModifiedDate":"2024-03-10"},{"lineNumber":41,"author":{"gitId":"jerremyng"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":42,"author":{"gitId":"jerremyng"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":43,"author":{"gitId":"jerremyng"},"content":" @Override","lastModifiedDate":"2024-03-10"},{"lineNumber":44,"author":{"gitId":"jerremyng"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"jerremyng"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-10"},{"lineNumber":46,"author":{"gitId":"jerremyng"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":47,"author":{"gitId":"jerremyng"},"content":" if (model.hasBooking(toAdd)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"jerremyng"},"content":" throw new CommandException(MESSAGE_DUPLICATE_BOOKING);","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"jerremyng"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"jerremyng"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"jerremyng"},"content":" model.addBooking(toAdd);","lastModifiedDate":"2024-03-10"},{"lineNumber":52,"author":{"gitId":"cyqjoseph"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.formatBooking(toAdd)));","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"jerremyng"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":54,"author":{"gitId":"jerremyng"},"content":"}","lastModifiedDate":"2024-03-10"}],"authorContributionMap":{"jerremyng":53,"cyqjoseph":1}},{"path":"src/main/java/seedu/address/logic/commands/CancelCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zhenghuil"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"zhenghuil"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"zhenghuil"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"zhenghuil"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"zhenghuil"},"content":"import java.util.List;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"zhenghuil"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"zhenghuil"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"zhenghuil"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"zhenghuil"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"zhenghuil"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"zhenghuil"},"content":"import seedu.address.model.booking.Booking;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"zhenghuil"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"zhenghuil"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"zhenghuil"},"content":" * Deletes a booking identified using it\u0027s displayed index from the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"zhenghuil"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"zhenghuil"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"zhenghuil"},"content":"public class CancelCommand extends Command {","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"zhenghuil"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"zhenghuil"},"content":" public static final String COMMAND_WORD \u003d \"cancel\";","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"zhenghuil"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"zhenghuil"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"zhenghuil"},"content":" + \": Deletes the booking identified by the index number used in the displayed booking list.\\n\"","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"zhenghuil"},"content":" + \"Parameters: {index} (must be a positive integer)\\n\"","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"zhenghuil"},"content":" + \"Example usage: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"zhenghuil"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"zhenghuil"},"content":" public static final String MESSAGE_CANCEL_BOOKING_SUCCESS \u003d \"Cancelled Booking: %1$s\";","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"zhenghuil"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"zhenghuil"},"content":" private final Index targetIndex;","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"zhenghuil"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"zhenghuil"},"content":" public CancelCommand(Index targetIndex) {","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"zhenghuil"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"zhenghuil"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"zhenghuil"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"zhenghuil"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"zhenghuil"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"zhenghuil"},"content":" List\u003cBooking\u003e lastShownList \u003d model.getFilteredBookingList();","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"zhenghuil"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"zhenghuil"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"zhenghuil"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_BOOKING_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"zhenghuil"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"zhenghuil"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"zhenghuil"},"content":" Booking bookingToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"zhenghuil"},"content":" model.cancelBooking(bookingToDelete);","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"zhenghuil"},"content":" return new CommandResult(String.format(MESSAGE_CANCEL_BOOKING_SUCCESS,","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"zhenghuil"},"content":" Messages.formatBooking(bookingToDelete)));","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"zhenghuil"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"zhenghuil"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"zhenghuil"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"zhenghuil"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"zhenghuil"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"zhenghuil"},"content":" return true;","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"zhenghuil"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"zhenghuil"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"zhenghuil"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"zhenghuil"},"content":" if (!(other instanceof CancelCommand)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"zhenghuil"},"content":" return false;","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"zhenghuil"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"zhenghuil"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"zhenghuil"},"content":" CancelCommand otherCancelCommand \u003d (CancelCommand) other;","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"zhenghuil"},"content":" return targetIndex.equals(otherCancelCommand.targetIndex);","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"zhenghuil"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"zhenghuil"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"zhenghuil":62}},{"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":"cyqjoseph"},"content":"import java.util.List;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.model.booking.Booking;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Clears the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class ClearCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"clear\";","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Address book has been cleared!\";","lastModifiedDate":"2016-08-24"},{"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":"2017-05-15"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" List\u003cBooking\u003e bookings \u003d model.getFilteredBookingList();","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" AddressBook newAddressBook \u003d new AddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" newAddressBook.setBookings(bookings);","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" model.setAddressBook(newAddressBook);","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"cyqjoseph":7,"-":22}},{"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":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"ChrysanthemumT"},"content":" private final boolean theme;","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Constructs a {@code CommandResult} with the specified fields.","lastModifiedDate":"2018-12-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public CommandResult(String feedbackToUser, boolean showHelp, boolean exit) {","lastModifiedDate":"2018-12-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":" this.feedbackToUser \u003d requireNonNull(feedbackToUser);","lastModifiedDate":"2017-05-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" this.showHelp \u003d showHelp;","lastModifiedDate":"2018-12-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":" this.exit \u003d exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":31,"author":{"gitId":"ChrysanthemumT"},"content":" this.theme \u003d false;","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"ChrysanthemumT"},"content":" * Constructs a {@code CommandResult} with the specified fields for theme","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"ChrysanthemumT"},"content":" public CommandResult(String feedbackToUser, boolean showHelp, boolean exit, boolean theme) {","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"ChrysanthemumT"},"content":" this.feedbackToUser \u003d requireNonNull(feedbackToUser);","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"ChrysanthemumT"},"content":" this.showHelp \u003d showHelp;","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"ChrysanthemumT"},"content":" this.exit \u003d exit;","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"ChrysanthemumT"},"content":" this.theme \u003d theme;","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Constructs a {@code CommandResult} with the specified {@code feedbackToUser},","lastModifiedDate":"2018-12-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * and other fields set to their default value.","lastModifiedDate":"2018-12-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public CommandResult(String feedbackToUser) {","lastModifiedDate":"2018-12-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" this(feedbackToUser, false, false);","lastModifiedDate":"2018-12-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public String getFeedbackToUser() {","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return feedbackToUser;","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public boolean isShowHelp() {","lastModifiedDate":"2018-12-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return showHelp;","lastModifiedDate":"2018-12-09"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public boolean isExit() {","lastModifiedDate":"2018-12-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":64,"author":{"gitId":"ChrysanthemumT"},"content":" public boolean isTheme() {","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"ChrysanthemumT"},"content":" return theme;","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2018-12-09"},{"lineNumber":70,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-12-09"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-12-09"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2018-12-09"},{"lineNumber":75,"author":{"gitId":"-"},"content":" if (!(other instanceof CommandResult)) {","lastModifiedDate":"2018-12-09"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-12-09"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":79,"author":{"gitId":"-"},"content":" CommandResult otherCommandResult \u003d (CommandResult) other;","lastModifiedDate":"2018-12-09"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return feedbackToUser.equals(otherCommandResult.feedbackToUser)","lastModifiedDate":"2018-12-09"},{"lineNumber":81,"author":{"gitId":"-"},"content":" \u0026\u0026 showHelp \u003d\u003d otherCommandResult.showHelp","lastModifiedDate":"2018-12-09"},{"lineNumber":82,"author":{"gitId":"-"},"content":" \u0026\u0026 exit \u003d\u003d otherCommandResult.exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2018-12-09"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return Objects.hash(feedbackToUser, showHelp, exit);","lastModifiedDate":"2018-12-09"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"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(\"feedbackToUser\", feedbackToUser)","lastModifiedDate":"2019-02-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" .add(\"showHelp\", showHelp)","lastModifiedDate":"2019-02-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" .add(\"exit\", exit)","lastModifiedDate":"2019-02-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"ChrysanthemumT":17,"-":82}},{"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":"jerremyng"},"content":" + \"Parameters: {index} (must be a positive integer)\\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"jerremyng"},"content":" + \"Example usage: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Person: %1$s\";","lastModifiedDate":"2016-08-24"},{"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":{"jerremyng":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_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":"-"},"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":"jerremyng"},"content":" + \"Parameters: {index} (must be a positive integer) \"","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"jerremyng"},"content":" + \"[\" + PREFIX_NAME + \"{name}] \"","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"jerremyng"},"content":" + \"[\" + PREFIX_PHONE + \"{phone] \"","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"jerremyng"},"content":" + \"[\" + PREFIX_EMAIL + \"{email}] \"","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"jerremyng"},"content":" + \"[\" + PREFIX_ADDRESS + \"{address}] \"","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"jerremyng"},"content":" + \"[\" + PREFIX_TAG + \"{tag}]...\\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"jerremyng"},"content":" + \"Example usage: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09"},{"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":"jerremyng"},"content":" private Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-18"},{"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":"jerremyng"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address) || !tags.isEmpty();","lastModifiedDate":"2024-03-18"},{"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":"jerremyng"},"content":" this.tags \u003d (tags \u003d\u003d null) ? new HashSet\u003c\u003e() : new HashSet\u003c\u003e(tags);","lastModifiedDate":"2024-03-18"},{"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":"jerremyng"},"content":" return (tags !\u003d null \u0026\u0026 !tags.isEmpty())","lastModifiedDate":"2024-03-18"},{"lineNumber":210,"author":{"gitId":"jerremyng"},"content":" ? Optional.of(Collections.unmodifiableSet(tags))","lastModifiedDate":"2024-03-18"},{"lineNumber":211,"author":{"gitId":"jerremyng"},"content":" : Optional.empty();","lastModifiedDate":"2024-03-18"},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":214,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":215,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":216,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":217,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":218,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":220,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":221,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05"},{"lineNumber":222,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":223,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":225,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":226,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":227,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":228,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":229,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":230,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags);","lastModifiedDate":"2023-07-13"},{"lineNumber":231,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":244,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"jerremyng":13,"-":231}},{"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":"-"},"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":"jerremyng"},"content":" + \"Parameters: {keyword} [MORE_KEYWORDS]...\\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"jerremyng"},"content":" + \"Example usage: \" + COMMAND_WORD + \" alice bob charlie\";","lastModifiedDate":"2024-03-18"},{"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":{"jerremyng":2,"-":56}},{"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":"jerremyng"},"content":" + \"Example usage: \" + COMMAND_WORD;","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"jerremyng":1,"-":20}},{"path":"src/main/java/seedu/address/logic/commands/ThemeCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_THEME;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":"import seedu.address.commons.core.Theme;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":" * Command to change the theme of the application.","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"ChrysanthemumT"},"content":"public class ThemeCommand extends Command {","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"ChrysanthemumT"},"content":" public static final String COMMAND_WORD \u003d \"theme\";","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"ChrysanthemumT"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Theme updated!\";","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"ChrysanthemumT"},"content":" public static final String MESSAGE_USAGE \u003d ThemeCommand.COMMAND_WORD","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"ChrysanthemumT"},"content":" + \" \"","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"ChrysanthemumT"},"content":" + PREFIX_THEME + \"{theme}\";","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"ChrysanthemumT"},"content":" private final Theme toChange;","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"ChrysanthemumT"},"content":" * Creates a ThemeCommand to change {@code Theme}","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"ChrysanthemumT"},"content":" * @param theme","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"ChrysanthemumT"},"content":" public ThemeCommand(Theme theme) {","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"ChrysanthemumT"},"content":" requireNonNull(theme);","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"ChrysanthemumT"},"content":" this.toChange \u003d theme;","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"ChrysanthemumT"},"content":" * Executes the theme change command.","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"ChrysanthemumT"},"content":" * @param model {@code Model} which the command should operate on.","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"ChrysanthemumT"},"content":" * @return A {@code CommandResult} representing the result of the command execution.","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"ChrysanthemumT"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"ChrysanthemumT"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"ChrysanthemumT"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"ChrysanthemumT"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"ChrysanthemumT"},"content":" model.setTheme(toChange);","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"ChrysanthemumT"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, toChange), false, false, true);","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"ChrysanthemumT":44}},{"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":"-"},"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":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":10,"author":{"gitId":"jerremyng"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05"},{"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.person.Address;","lastModifiedDate":"2017-03-17"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-03-17"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-03-17"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-03-17"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06"},{"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":"-"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG);","lastModifiedDate":"2017-06-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":36,"author":{"gitId":"jerremyng"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME) || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":40,"author":{"gitId":"-"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-07-14"},{"lineNumber":41,"author":{"gitId":"jerremyng"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"jerremyng"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":44,"author":{"gitId":"jerremyng"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"jerremyng"},"content":" // Parse phone only if the prefix is present","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"jerremyng"},"content":" Phone phone \u003d argMultimap.getValue(PREFIX_PHONE).isPresent()","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"jerremyng"},"content":" ? ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get())","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"jerremyng"},"content":" : null;","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"jerremyng"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"jerremyng"},"content":" // Parse email only if the prefix is present","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"jerremyng"},"content":" Email email \u003d argMultimap.getValue(PREFIX_EMAIL).isPresent()","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"jerremyng"},"content":" ? ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get())","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"jerremyng"},"content":" : null;","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"jerremyng"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"jerremyng"},"content":" // Parse address only if the prefix is present","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"jerremyng"},"content":" Address address \u003d argMultimap.getValue(PREFIX_ADDRESS).isPresent()","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"jerremyng"},"content":" ? ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get())","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"jerremyng"},"content":" : null;","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"jerremyng"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"jerremyng"},"content":" // Parse tags only if the prefix is present","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"jerremyng"},"content":" Set\u003cTag\u003e tagList \u003d argMultimap.getValue(PREFIX_TAG).isPresent()","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"jerremyng"},"content":" ? ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG))","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"jerremyng"},"content":" : Collections.emptySet();","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"jerremyng"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":66,"author":{"gitId":"-"},"content":" Person person \u003d new Person(name, phone, email, address, tagList);","lastModifiedDate":"2018-01-10"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":75,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":79,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"jerremyng":25,"-":54}},{"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":"jerremyng"},"content":"import seedu.address.logic.commands.BookCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"zhenghuil"},"content":"import seedu.address.logic.commands.CancelCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18"},{"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":"ChrysanthemumT"},"content":"import seedu.address.logic.commands.ThemeCommand;","lastModifiedDate":"2024-03-21"},{"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":"jerremyng"},"content":" case BookCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"jerremyng"},"content":" return new BookCommandParser().parse(arguments);","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"jerremyng"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"zhenghuil"},"content":" case CancelCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"zhenghuil"},"content":" return new CancelCommandParser().parse(arguments);","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"zhenghuil"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":89,"author":{"gitId":"ChrysanthemumT"},"content":" case ThemeCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-21"},{"lineNumber":90,"author":{"gitId":"ChrysanthemumT"},"content":" return new ThemeCommandParser().parse(arguments);","lastModifiedDate":"2024-03-21"},{"lineNumber":91,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-21"},{"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":{"jerremyng":4,"ChrysanthemumT":4,"-":86,"zhenghuil":4}},{"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":"jerremyng"},"content":" List\u003cString\u003e values \u003d this.getAllValues(prefix);","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":"}","lastModifiedDate":"2017-03-08"}],"authorContributionMap":{"jerremyng":1,"-":77}},{"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":"-"},"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":"jerremyng"},"content":" return ArgumentTokenizer.extractArguments(argsString, positions);","lastModifiedDate":"2024-03-18"},{"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":{"jerremyng":1,"-":147}},{"path":"src/main/java/seedu/address/logic/parser/BookCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"jerremyng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_END_TIME;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_START_TIME;","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"jerremyng"},"content":"import seedu.address.logic.commands.BookCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.model.booking.Booking;","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.model.booking.Description;","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.model.booking.EndTime;","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"jerremyng"},"content":"import seedu.address.model.booking.StartTime;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"jerremyng"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" * Parses input arguments and creates a new AddBookingCommand object","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"jerremyng"},"content":"public class BookCommandParser implements Parser\u003cBookCommand\u003e {","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" * Parses the given {@code String} of arguments in the context of the AddBookingCommand","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" * and returns an AddBookingCommand object for execution.","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"jerremyng"},"content":" public BookCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_START_TIME, PREFIX_END_TIME);","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"cyqjoseph"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_START_TIME, PREFIX_END_TIME)","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"cyqjoseph"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"jerremyng"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, BookCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"cyqjoseph"},"content":" Description description \u003d ParserUtil.parseBookingName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"cyqjoseph"},"content":" StartTime start \u003d ParserUtil.parseStartTime(argMultimap.getValue(PREFIX_START_TIME).get());","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"cyqjoseph"},"content":" EndTime end \u003d ParserUtil.parseEndTime(argMultimap.getValue(PREFIX_END_TIME).get());","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"cyqjoseph"},"content":" Booking booking \u003d new Booking(description, start, end);","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"jerremyng"},"content":" return new BookCommand(booking);","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"cyqjoseph"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"cyqjoseph"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"cyqjoseph"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"cyqjoseph"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"jerremyng":8,"cyqjoseph":44}},{"path":"src/main/java/seedu/address/logic/parser/CancelCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zhenghuil"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"zhenghuil"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"zhenghuil"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"zhenghuil"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"zhenghuil"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"zhenghuil"},"content":"import seedu.address.logic.commands.CancelCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"zhenghuil"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"zhenghuil"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"zhenghuil"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"zhenghuil"},"content":" * Parses input arguments and creates a new CancelCommand object","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"zhenghuil"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"zhenghuil"},"content":"public class CancelCommandParser implements Parser\u003cCancelCommand\u003e {","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"zhenghuil"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"zhenghuil"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"zhenghuil"},"content":" * Parses the given {@code String} of arguments in the context of the CancelCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"zhenghuil"},"content":" * and returns a CancelCommand object for execution.","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"zhenghuil"},"content":" *","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"zhenghuil"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"zhenghuil"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"zhenghuil"},"content":" public CancelCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"zhenghuil"},"content":" try {","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"zhenghuil"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"zhenghuil"},"content":" return new CancelCommand(index);","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"zhenghuil"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"zhenghuil"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"zhenghuil"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, CancelCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"zhenghuil"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"zhenghuil"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"zhenghuil"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"zhenghuil":29}},{"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":"jerremyng"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"-n \");","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"jerremyng"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"-p \");","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"jerremyng"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"-e \");","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"jerremyng"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"-a \");","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"jerremyng"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"-t \");","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"jerremyng"},"content":" public static final Prefix PREFIX_START_TIME \u003d new Prefix(\"-s \");","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"jerremyng"},"content":" public static final Prefix PREFIX_END_TIME \u003d new Prefix(\"-e \");","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"ChrysanthemumT"},"content":" public static final Prefix PREFIX_THEME \u003d new Prefix(\"-bg \");","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"jerremyng":7,"ChrysanthemumT":1,"-":10}},{"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":"ChrysanthemumT"},"content":"import seedu.address.commons.core.Theme;","lastModifiedDate":"2024-03-21"},{"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":"cyqjoseph"},"content":"import seedu.address.model.booking.Description;","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.model.booking.EndTime;","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.model.booking.StartTime;","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-02-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-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":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02"},{"lineNumber":37,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":49,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":52,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":60,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":64,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30"},{"lineNumber":65,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":67,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":75,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":79,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30"},{"lineNumber":80,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":81,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":82,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","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 email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":94,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":95,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":96,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":97,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":99,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","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 tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":105,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":107,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":109,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30"},{"lineNumber":110,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":111,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":112,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":114,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","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":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":118,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07"},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":120,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":121,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15"},{"lineNumber":122,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11"},{"lineNumber":123,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11"},{"lineNumber":124,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":126,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":128,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":129,"author":{"gitId":"cyqjoseph"},"content":" * Parses a {@code String description} into a {@code Description} for a booking.","lastModifiedDate":"2024-03-14"},{"lineNumber":130,"author":{"gitId":"cyqjoseph"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-11"},{"lineNumber":131,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":132,"author":{"gitId":"cyqjoseph"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2024-03-11"},{"lineNumber":133,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":134,"author":{"gitId":"cyqjoseph"},"content":" public static Description parseBookingName(String description) throws ParseException {","lastModifiedDate":"2024-03-14"},{"lineNumber":135,"author":{"gitId":"cyqjoseph"},"content":" requireNonNull(description);","lastModifiedDate":"2024-03-14"},{"lineNumber":136,"author":{"gitId":"cyqjoseph"},"content":" String trimmedDescription \u003d description.trim();","lastModifiedDate":"2024-03-14"},{"lineNumber":137,"author":{"gitId":"cyqjoseph"},"content":" if (!Description.isValidDescription(trimmedDescription)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":138,"author":{"gitId":"cyqjoseph"},"content":" throw new ParseException(Description.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-14"},{"lineNumber":139,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":140,"author":{"gitId":"cyqjoseph"},"content":" return new Description(trimmedDescription);","lastModifiedDate":"2024-03-14"},{"lineNumber":141,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":142,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":143,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":144,"author":{"gitId":"cyqjoseph"},"content":" * Parses a {@code String start} into a {@code StartTime}.","lastModifiedDate":"2024-03-11"},{"lineNumber":145,"author":{"gitId":"cyqjoseph"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-11"},{"lineNumber":146,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":147,"author":{"gitId":"cyqjoseph"},"content":" * @throws ParseException if the given {@code start} is invalid.","lastModifiedDate":"2024-03-11"},{"lineNumber":148,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":149,"author":{"gitId":"cyqjoseph"},"content":" public static StartTime parseStartTime(String start) throws ParseException {","lastModifiedDate":"2024-03-11"},{"lineNumber":150,"author":{"gitId":"cyqjoseph"},"content":" requireNonNull(start);","lastModifiedDate":"2024-03-11"},{"lineNumber":151,"author":{"gitId":"cyqjoseph"},"content":" String trimmedStart \u003d start.trim();","lastModifiedDate":"2024-03-11"},{"lineNumber":152,"author":{"gitId":"cyqjoseph"},"content":" if (!StartTime.isValidStartTime(trimmedStart)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":153,"author":{"gitId":"cyqjoseph"},"content":" throw new ParseException(StartTime.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-11"},{"lineNumber":154,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":155,"author":{"gitId":"cyqjoseph"},"content":" return new StartTime(trimmedStart);","lastModifiedDate":"2024-03-11"},{"lineNumber":156,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":157,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":158,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":159,"author":{"gitId":"cyqjoseph"},"content":" * Parses a {@code String end} into an {@code EndTime}.","lastModifiedDate":"2024-03-11"},{"lineNumber":160,"author":{"gitId":"cyqjoseph"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-11"},{"lineNumber":161,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":162,"author":{"gitId":"cyqjoseph"},"content":" * @throws ParseException if the given {@code end} is invalid.","lastModifiedDate":"2024-03-11"},{"lineNumber":163,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":164,"author":{"gitId":"cyqjoseph"},"content":" public static EndTime parseEndTime(String end) throws ParseException {","lastModifiedDate":"2024-03-11"},{"lineNumber":165,"author":{"gitId":"cyqjoseph"},"content":" requireNonNull(end);","lastModifiedDate":"2024-03-11"},{"lineNumber":166,"author":{"gitId":"cyqjoseph"},"content":" String trimmedEnd \u003d end.trim();","lastModifiedDate":"2024-03-11"},{"lineNumber":167,"author":{"gitId":"cyqjoseph"},"content":" if (!EndTime.isValidEndTime(trimmedEnd)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":168,"author":{"gitId":"cyqjoseph"},"content":" throw new ParseException(EndTime.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-11"},{"lineNumber":169,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":170,"author":{"gitId":"cyqjoseph"},"content":" return new EndTime(trimmedEnd);","lastModifiedDate":"2024-03-11"},{"lineNumber":171,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":172,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":173,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":174,"author":{"gitId":"ChrysanthemumT"},"content":" * Parses a theme string into a Theme enum value.","lastModifiedDate":"2024-03-21"},{"lineNumber":175,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-03-21"},{"lineNumber":176,"author":{"gitId":"ChrysanthemumT"},"content":" * @param theme The theme string to parse.","lastModifiedDate":"2024-03-21"},{"lineNumber":177,"author":{"gitId":"ChrysanthemumT"},"content":" * @return The corresponding Theme enum value.","lastModifiedDate":"2024-03-21"},{"lineNumber":178,"author":{"gitId":"ChrysanthemumT"},"content":" * @throws ParseException If the theme string does not match any known theme.","lastModifiedDate":"2024-03-21"},{"lineNumber":179,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":180,"author":{"gitId":"ChrysanthemumT"},"content":" public static Theme parseTheme(String theme) throws ParseException {","lastModifiedDate":"2024-03-21"},{"lineNumber":181,"author":{"gitId":"ChrysanthemumT"},"content":" Theme guiTheme;","lastModifiedDate":"2024-03-21"},{"lineNumber":182,"author":{"gitId":"ChrysanthemumT"},"content":" switch(theme.toUpperCase()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":183,"author":{"gitId":"ChrysanthemumT"},"content":" case \"LIGHT\":","lastModifiedDate":"2024-03-21"},{"lineNumber":184,"author":{"gitId":"ChrysanthemumT"},"content":" guiTheme \u003d Theme.LIGHTTHEME;","lastModifiedDate":"2024-03-21"},{"lineNumber":185,"author":{"gitId":"ChrysanthemumT"},"content":" break;","lastModifiedDate":"2024-03-21"},{"lineNumber":186,"author":{"gitId":"ChrysanthemumT"},"content":" case \"DARK\":","lastModifiedDate":"2024-03-21"},{"lineNumber":187,"author":{"gitId":"ChrysanthemumT"},"content":" // Fall through","lastModifiedDate":"2024-03-21"},{"lineNumber":188,"author":{"gitId":"ChrysanthemumT"},"content":" default:","lastModifiedDate":"2024-03-21"},{"lineNumber":189,"author":{"gitId":"ChrysanthemumT"},"content":" guiTheme \u003d Theme.DARKTHEME;","lastModifiedDate":"2024-03-21"},{"lineNumber":190,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":191,"author":{"gitId":"ChrysanthemumT"},"content":" return guiTheme;","lastModifiedDate":"2024-03-21"},{"lineNumber":192,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"ChrysanthemumT":22,"cyqjoseph":47,"-":124}},{"path":"src/main/java/seedu/address/logic/parser/ThemeCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_THEME;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":"import seedu.address.commons.core.Theme;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":"import seedu.address.logic.commands.ThemeCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"ChrysanthemumT"},"content":" * Parses input arguments and creates a new ThemeCommandParser object.","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"ChrysanthemumT"},"content":"public class ThemeCommandParser implements Parser\u003cThemeCommand\u003e {","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"ChrysanthemumT"},"content":" * Parses the given {@code String} of arguments in the context of the ThemeCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"ChrysanthemumT"},"content":" * and returns a ThemeCommand object for execution.","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"ChrysanthemumT"},"content":" * @param args The user input string.","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"ChrysanthemumT"},"content":" * @return A parsed ThemeCommand.","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"ChrysanthemumT"},"content":" * @throws ParseException If the user input does not conform to the expected format.","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"ChrysanthemumT"},"content":" public ThemeCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"ChrysanthemumT"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"ChrysanthemumT"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_THEME);","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"ChrysanthemumT"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_THEME) || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"ChrysanthemumT"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, ThemeCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"ChrysanthemumT"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_THEME);","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"ChrysanthemumT"},"content":" Theme theme \u003d ParserUtil.parseTheme(argMultimap.getValue(PREFIX_THEME).get());","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"ChrysanthemumT"},"content":" return new ThemeCommand(theme);","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"ChrysanthemumT"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"ChrysanthemumT"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"ChrysanthemumT"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"ChrysanthemumT"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"ChrysanthemumT":46}},{"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":"cyqjoseph"},"content":"import seedu.address.model.booking.Booking;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.model.booking.UniqueBookingList;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.UniquePersonList;","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Wraps all data at the address-book level","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Duplicates are not allowed (by .isSamePerson comparison)","lastModifiedDate":"2018-04-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class AddressBook implements ReadOnlyAddressBook {","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final UniquePersonList persons;","lastModifiedDate":"2016-08-26"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" private final UniqueBookingList bookings;","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-19"},{"lineNumber":25,"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":26,"author":{"gitId":"-"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2016-10-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-19"},{"lineNumber":28,"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":29,"author":{"gitId":"-"},"content":" * among constructors.","lastModifiedDate":"2016-10-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" {","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" persons \u003d new UniquePersonList();","lastModifiedDate":"2016-08-26"},{"lineNumber":33,"author":{"gitId":"cyqjoseph"},"content":" bookings \u003d new UniqueBookingList();","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public AddressBook() {}","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":" * Creates an AddressBook using the Persons in the {@code toBeCopied}","lastModifiedDate":"2018-03-29"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public AddressBook(ReadOnlyAddressBook toBeCopied) {","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2016-12-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" resetData(toBeCopied);","lastModifiedDate":"2016-12-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":46,"author":{"gitId":"-"},"content":" //// list overwrite operations","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Replaces the contents of the person list with {@code persons}.","lastModifiedDate":"2018-08-07"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2018-08-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void setPersons(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-08-07"},{"lineNumber":53,"author":{"gitId":"-"},"content":" this.persons.setPersons(persons);","lastModifiedDate":"2016-10-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"cyqjoseph"},"content":" * Replaces the contents of the bookings list with {@code bookings}.","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"cyqjoseph"},"content":" * {@code bookings} must not contain duplicate bookings.","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"cyqjoseph"},"content":" public void setBookings(List\u003cBooking\u003e bookings) {","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"cyqjoseph"},"content":" this.bookings.setBookings(bookings);","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code AddressBook} with {@code newData}.","lastModifiedDate":"2017-08-16"},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyAddressBook newData) {","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" requireNonNull(newData);","lastModifiedDate":"2017-05-15"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-20"},{"lineNumber":70,"author":{"gitId":"-"},"content":" setPersons(newData.getPersonList());","lastModifiedDate":"2018-03-29"},{"lineNumber":71,"author":{"gitId":"ChrysanthemumT"},"content":" setBookings(newData.getBookingList());","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":75,"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":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06"},{"lineNumber":78,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return persons.contains(person);","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":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-09-21"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * The person must not already exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void addPerson(Person p) {","lastModifiedDate":"2018-08-07"},{"lineNumber":87,"author":{"gitId":"-"},"content":" persons.add(p);","lastModifiedDate":"2018-03-29"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2018-01-10"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":93,"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":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":96,"author":{"gitId":"-"},"content":" requireNonNull(editedPerson);","lastModifiedDate":"2018-01-10"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" persons.setPerson(target, editedPerson);","lastModifiedDate":"2018-03-29"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":101,"author":{"gitId":"ChrysanthemumT"},"content":" public void setBooking(Booking target, Booking editedBooking) {","lastModifiedDate":"2024-03-16"},{"lineNumber":102,"author":{"gitId":"ChrysanthemumT"},"content":" requireNonNull(editedBooking);","lastModifiedDate":"2024-03-16"},{"lineNumber":103,"author":{"gitId":"ChrysanthemumT"},"content":" bookings.setBooking(target, editedBooking);","lastModifiedDate":"2024-03-16"},{"lineNumber":104,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":105,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":106,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * Removes {@code key} from this {@code AddressBook}.","lastModifiedDate":"2017-08-16"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * {@code key} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":109,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void removePerson(Person key) {","lastModifiedDate":"2018-08-07"},{"lineNumber":111,"author":{"gitId":"-"},"content":" persons.remove(key);","lastModifiedDate":"2018-02-28"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":114,"author":{"gitId":"cyqjoseph"},"content":" //// booking methods","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"cyqjoseph"},"content":" * Adds a booking to the address book.","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"cyqjoseph"},"content":" * The booking must not already exist in the address book.","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"cyqjoseph"},"content":" public void addBooking(Booking booking) {","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"cyqjoseph"},"content":" bookings.add(booking);","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"cyqjoseph"},"content":" * Returns true if a booking with the same identity as {@code booking} exists in the address book.","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"cyqjoseph"},"content":" public boolean hasBooking(Booking booking) {","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"cyqjoseph"},"content":" requireNonNull(booking);","lastModifiedDate":"2024-03-17"},{"lineNumber":129,"author":{"gitId":"cyqjoseph"},"content":" return bookings.contains(booking);","lastModifiedDate":"2024-03-17"},{"lineNumber":130,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"cyqjoseph"},"content":" * Removes {@code booking} from this {@code AddressBook}.","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"cyqjoseph"},"content":" * {@code booking} must exist in the address book.","lastModifiedDate":"2024-03-17"},{"lineNumber":135,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":136,"author":{"gitId":"cyqjoseph"},"content":" public void removeBooking(Booking booking) {","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"cyqjoseph"},"content":" bookings.remove(booking);","lastModifiedDate":"2024-03-17"},{"lineNumber":138,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":139,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":140,"author":{"gitId":"-"},"content":" //// util methods","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 String toString() {","lastModifiedDate":"2016-08-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":" .add(\"persons\", persons)","lastModifiedDate":"2019-02-23"},{"lineNumber":146,"author":{"gitId":"ChrysanthemumT"},"content":" .add(\"bookings\", bookings)","lastModifiedDate":"2024-03-16"},{"lineNumber":147,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"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-08-08"},{"lineNumber":151,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":152,"author":{"gitId":"-"},"content":" return persons.asUnmodifiableObservableList();","lastModifiedDate":"2018-04-05"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-01"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-01"},{"lineNumber":155,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":156,"author":{"gitId":"cyqjoseph"},"content":" public ObservableList\u003cBooking\u003e getBookingList() {","lastModifiedDate":"2024-03-17"},{"lineNumber":157,"author":{"gitId":"cyqjoseph"},"content":" return bookings.asUnmodifiableObservableList();","lastModifiedDate":"2024-03-17"},{"lineNumber":158,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":159,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":160,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":161,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"lineNumber":162,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":163,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":166,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":" if (!(other instanceof AddressBook)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":168,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":171,"author":{"gitId":"-"},"content":" AddressBook otherAddressBook \u003d (AddressBook) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":172,"author":{"gitId":"-"},"content":" return persons.equals(otherAddressBook.persons);","lastModifiedDate":"2024-03-17"},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":175,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":176,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":177,"author":{"gitId":"-"},"content":" return persons.hashCode();","lastModifiedDate":"2024-03-17"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":179,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"cyqjoseph":41,"ChrysanthemumT":9,"-":129}},{"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":"ChrysanthemumT"},"content":"import seedu.address.commons.core.Theme;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"jerremyng"},"content":"import seedu.address.model.booking.Booking;","lastModifiedDate":"2024-03-10"},{"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":"cyqjoseph"},"content":" Predicate\u003cBooking\u003e PREDICATE_SHOW_ALL_BOOKINGS \u003d unused -\u003e true;","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"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":" * Sets 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":" void setAddressBookFilePath(Path addressBookFilePath);","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":" * Replaces address book data with the data in {@code addressBook}.","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" void setAddressBook(ReadOnlyAddressBook addressBook);","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /** Returns the AddressBook */","lastModifiedDate":"2016-09-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2016-09-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":59,"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":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":61,"author":{"gitId":"-"},"content":" boolean hasPerson(Person person);","lastModifiedDate":"2018-08-06"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Deletes the given person.","lastModifiedDate":"2018-08-07"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * The person must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":67,"author":{"gitId":"-"},"content":" void deletePerson(Person target);","lastModifiedDate":"2018-08-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Adds the given person.","lastModifiedDate":"2018-08-07"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * {@code person} must not already exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":73,"author":{"gitId":"-"},"content":" void addPerson(Person person);","lastModifiedDate":"2018-08-07"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} with {@code editedPerson}.","lastModifiedDate":"2017-06-07"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":78,"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":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" void setPerson(Person target, Person editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered person list */","lastModifiedDate":"2017-09-01"},{"lineNumber":83,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Updates the filter of the filtered person list to filter by the given {@code predicate}.","lastModifiedDate":"2017-08-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":89,"author":{"gitId":"-"},"content":" void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate);","lastModifiedDate":"2018-01-10"},{"lineNumber":90,"author":{"gitId":"jerremyng"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":91,"author":{"gitId":"jerremyng"},"content":" /**","lastModifiedDate":"2024-03-10"},{"lineNumber":92,"author":{"gitId":"jerremyng"},"content":" * Adds the given booking","lastModifiedDate":"2024-03-10"},{"lineNumber":93,"author":{"gitId":"jerremyng"},"content":" */","lastModifiedDate":"2024-03-10"},{"lineNumber":94,"author":{"gitId":"jerremyng"},"content":" void addBooking(Booking booking);","lastModifiedDate":"2024-03-10"},{"lineNumber":95,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":96,"author":{"gitId":"zhenghuil"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"zhenghuil"},"content":" * Deletes the given Booking.","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"zhenghuil"},"content":" * The Booking must exist in the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"zhenghuil"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"zhenghuil"},"content":" void cancelBooking(Booking target);","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"zhenghuil"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"cyqjoseph"},"content":" * Returns True if booking exists, else False","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"cyqjoseph"},"content":" boolean hasBooking(Booking booking);","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"cyqjoseph"},"content":" ObservableList\u003cBooking\u003e getFilteredBookingList();","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":109,"author":{"gitId":"ChrysanthemumT"},"content":" void setTheme(Theme theme);","lastModifiedDate":"2024-03-21"},{"lineNumber":110,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"jerremyng":6,"ChrysanthemumT":3,"cyqjoseph":8,"-":87,"zhenghuil":6}},{"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":"ChrysanthemumT"},"content":"import seedu.address.commons.core.Theme;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"jerremyng"},"content":"import seedu.address.model.booking.Booking;","lastModifiedDate":"2024-03-10"},{"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":"cyqjoseph"},"content":" private final FilteredList\u003cBooking\u003e filteredBookings;","lastModifiedDate":"2024-03-17"},{"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":"cyqjoseph"},"content":" filteredBookings \u003d new FilteredList\u003c\u003e(this.addressBook.getBookingList());","lastModifiedDate":"2024-03-17"},{"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":"jerremyng"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Bookings \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-03-10"},{"lineNumber":153,"author":{"gitId":"jerremyng"},"content":" @Override","lastModifiedDate":"2024-03-10"},{"lineNumber":154,"author":{"gitId":"jerremyng"},"content":" public void addBooking(Booking booking) {","lastModifiedDate":"2024-03-10"},{"lineNumber":155,"author":{"gitId":"cyqjoseph"},"content":" addressBook.addBooking(booking);","lastModifiedDate":"2024-03-17"},{"lineNumber":156,"author":{"gitId":"cyqjoseph"},"content":" updateFilteredBookingList(PREDICATE_SHOW_ALL_BOOKINGS);","lastModifiedDate":"2024-03-17"},{"lineNumber":157,"author":{"gitId":"jerremyng"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":158,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":159,"author":{"gitId":"zhenghuil"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":160,"author":{"gitId":"zhenghuil"},"content":" public void cancelBooking(Booking target) {","lastModifiedDate":"2024-03-19"},{"lineNumber":161,"author":{"gitId":"zhenghuil"},"content":" addressBook.removeBooking(target);","lastModifiedDate":"2024-03-19"},{"lineNumber":162,"author":{"gitId":"zhenghuil"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":163,"author":{"gitId":"zhenghuil"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":164,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":165,"author":{"gitId":"cyqjoseph"},"content":" public boolean hasBooking(Booking booking) {","lastModifiedDate":"2024-03-17"},{"lineNumber":166,"author":{"gitId":"cyqjoseph"},"content":" requireNonNull(booking);","lastModifiedDate":"2024-03-17"},{"lineNumber":167,"author":{"gitId":"cyqjoseph"},"content":" return addressBook.hasBooking(booking);","lastModifiedDate":"2024-03-17"},{"lineNumber":168,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":169,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":170,"author":{"gitId":"cyqjoseph"},"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":"2024-03-17"},{"lineNumber":171,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":172,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":173,"author":{"gitId":"cyqjoseph"},"content":" * Returns an unmodifiable view of the list of {@code Booking} backed by the","lastModifiedDate":"2024-03-17"},{"lineNumber":174,"author":{"gitId":"cyqjoseph"},"content":" * internal list of","lastModifiedDate":"2024-03-17"},{"lineNumber":175,"author":{"gitId":"cyqjoseph"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2024-03-17"},{"lineNumber":176,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":177,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":178,"author":{"gitId":"cyqjoseph"},"content":" public ObservableList\u003cBooking\u003e getFilteredBookingList() {","lastModifiedDate":"2024-03-17"},{"lineNumber":179,"author":{"gitId":"cyqjoseph"},"content":" return filteredBookings;","lastModifiedDate":"2024-03-17"},{"lineNumber":180,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":181,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":182,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":183,"author":{"gitId":"cyqjoseph"},"content":" * Updates an unmodifiable view of the list of {@code Booking} backed by the","lastModifiedDate":"2024-03-17"},{"lineNumber":184,"author":{"gitId":"cyqjoseph"},"content":" * internal list of","lastModifiedDate":"2024-03-17"},{"lineNumber":185,"author":{"gitId":"cyqjoseph"},"content":" * {@code predicate}","lastModifiedDate":"2024-03-17"},{"lineNumber":186,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":187,"author":{"gitId":"cyqjoseph"},"content":" public void updateFilteredBookingList(Predicate\u003cBooking\u003e predicate) {","lastModifiedDate":"2024-03-17"},{"lineNumber":188,"author":{"gitId":"cyqjoseph"},"content":" requireNonNull(predicate);","lastModifiedDate":"2024-03-17"},{"lineNumber":189,"author":{"gitId":"cyqjoseph"},"content":" filteredBookings.setPredicate(predicate);","lastModifiedDate":"2024-03-17"},{"lineNumber":190,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":191,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":192,"author":{"gitId":"ChrysanthemumT"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Change Theme \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":193,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":194,"author":{"gitId":"ChrysanthemumT"},"content":" public void setTheme(Theme theme) {","lastModifiedDate":"2024-03-21"},{"lineNumber":195,"author":{"gitId":"ChrysanthemumT"},"content":" userPrefs.setTheme(theme);","lastModifiedDate":"2024-03-21"},{"lineNumber":196,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":197,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":198,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":199,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"jerremyng":5,"ChrysanthemumT":7,"cyqjoseph":34,"-":148,"zhenghuil":5}},{"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":"cyqjoseph"},"content":"import seedu.address.model.booking.Booking;","lastModifiedDate":"2024-03-17"},{"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":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" * Returns an unmodifiable view of the bookings list.","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" * This list will not contain any duplicate bookings.","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" ObservableList\u003cBooking\u003e getBookingList();","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"cyqjoseph":7,"-":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":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":16,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-11-27"}],"authorContributionMap":{"ChrysanthemumT":2,"-":16}},{"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":"ChrysanthemumT"},"content":"import seedu.address.commons.core.Theme;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Represents User\u0027s preferences.","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class UserPrefs implements ReadOnlyUserPrefs {","lastModifiedDate":"2018-11-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private GuiSettings guiSettings \u003d new GuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private Path addressBookFilePath \u003d Paths.get(\"data\" , \"addressbook.json\");","lastModifiedDate":"2018-11-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Creates a {@code UserPrefs} with default values.","lastModifiedDate":"2018-12-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public UserPrefs() {}","lastModifiedDate":"2018-12-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Creates a {@code UserPrefs} with the prefs in {@code userPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public UserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2018-12-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":" resetData(userPrefs);","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":" /**","lastModifiedDate":"2018-12-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code UserPrefs} with {@code newUserPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyUserPrefs newUserPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":38,"author":{"gitId":"-"},"content":" requireNonNull(newUserPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":39,"author":{"gitId":"-"},"content":" setGuiSettings(newUserPrefs.getGuiSettings());","lastModifiedDate":"2018-12-06"},{"lineNumber":40,"author":{"gitId":"-"},"content":" setAddressBookFilePath(newUserPrefs.getAddressBookFilePath());","lastModifiedDate":"2018-12-06"},{"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":"ChrysanthemumT"},"content":" public void setTheme(Theme theme) {","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"ChrysanthemumT"},"content":" requireNonNull(theme);","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"ChrysanthemumT"},"content":" this.guiSettings.setTheme(theme);","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return addressBookFilePath;","lastModifiedDate":"2017-02-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-04-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" this.addressBookFilePath \u003d addressBookFilePath;","lastModifiedDate":"2017-02-25"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2016-09-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2016-09-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"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 UserPrefs)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2016-09-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":" UserPrefs otherUserPrefs \u003d (UserPrefs) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return guiSettings.equals(otherUserPrefs.guiSettings)","lastModifiedDate":"2023-07-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" \u0026\u0026 addressBookFilePath.equals(otherUserPrefs.addressBookFilePath);","lastModifiedDate":"2023-07-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return Objects.hash(guiSettings, addressBookFilePath);","lastModifiedDate":"2018-08-09"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-09-24"},{"lineNumber":89,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-02-25"},{"lineNumber":90,"author":{"gitId":"-"},"content":" sb.append(\"Gui Settings : \" + guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" sb.append(\"\\nLocal data file location : \" + addressBookFilePath);","lastModifiedDate":"2017-02-25"},{"lineNumber":92,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-02-25"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":95,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"ChrysanthemumT":7,"-":88}},{"path":"src/main/java/seedu/address/model/booking/Booking.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jerremyng"},"content":"package seedu.address.model.booking;","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"jerremyng"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"jerremyng"},"content":"import java.util.Objects;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"jerremyng"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"jerremyng"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"jerremyng"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"jerremyng"},"content":"/**","lastModifiedDate":"2024-03-10"},{"lineNumber":11,"author":{"gitId":"jerremyng"},"content":" * Represents a booking","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"jerremyng"},"content":" */","lastModifiedDate":"2024-03-10"},{"lineNumber":13,"author":{"gitId":"jerremyng"},"content":"public class Booking {","lastModifiedDate":"2024-03-10"},{"lineNumber":14,"author":{"gitId":"jerremyng"},"content":" /** Name of the booking */","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" private Description description;","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"jerremyng"},"content":" /** Start time of the booking */","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" private StartTime start;","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"jerremyng"},"content":" /** End time of the booking */","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" private EndTime end;","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"jerremyng"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"jerremyng"},"content":" * Constructs a booking","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" * @param description Description of the booking","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"jerremyng"},"content":" * @param start Start time in ISO_LOCAL_DATE_TIME format (2023-12-31T19:00)","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"jerremyng"},"content":" * @param end End time in ISO_LOCAL_DATE_TIME format","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"jerremyng"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":" public Booking(Description description, StartTime start, EndTime end) {","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":" requireAllNonNull(description, start, end);","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":" this.description \u003d description;","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":" this.start \u003d start;","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"cyqjoseph"},"content":" this.end \u003d end;","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"cyqjoseph"},"content":" public Description getDescription() {","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"cyqjoseph"},"content":" return description;","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"cyqjoseph"},"content":" public StartTime getStart() {","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"cyqjoseph"},"content":" return start;","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"cyqjoseph"},"content":" public EndTime getEnd() {","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"cyqjoseph"},"content":" return end;","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"cyqjoseph"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"jerremyng"},"content":" if (this \u003d\u003d other) {","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"jerremyng"},"content":" return true;","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"jerremyng"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"jerremyng"},"content":" if (!(other instanceof Booking)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"jerremyng"},"content":" return false;","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"jerremyng"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"cyqjoseph"},"content":" Booking otherBooking \u003d (Booking) other;","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"jerremyng"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"cyqjoseph"},"content":" return Objects.equals(description, otherBooking.description)","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"jerremyng"},"content":" \u0026\u0026 Objects.equals(start, otherBooking.start)","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"jerremyng"},"content":" \u0026\u0026 Objects.equals(end, otherBooking.end);","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"cyqjoseph"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"cyqjoseph"},"content":" return Objects.hash(description, start, end);","lastModifiedDate":"2024-03-14"},{"lineNumber":64,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":66,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"cyqjoseph"},"content":" public String toString() {","lastModifiedDate":"2024-03-11"},{"lineNumber":68,"author":{"gitId":"cyqjoseph"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"cyqjoseph"},"content":" .add(\"description\", description)","lastModifiedDate":"2024-03-14"},{"lineNumber":70,"author":{"gitId":"cyqjoseph"},"content":" .add(\"start\", start)","lastModifiedDate":"2024-03-11"},{"lineNumber":71,"author":{"gitId":"cyqjoseph"},"content":" .add(\"end\", end)","lastModifiedDate":"2024-03-11"},{"lineNumber":72,"author":{"gitId":"cyqjoseph"},"content":" .toString();","lastModifiedDate":"2024-03-11"},{"lineNumber":73,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"jerremyng"},"content":"}","lastModifiedDate":"2024-03-10"}],"authorContributionMap":{"jerremyng":28,"cyqjoseph":46}},{"path":"src/main/java/seedu/address/model/booking/Description.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package seedu.address.model.booking;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":" * Represents a Booking\u0027s description in the address book.","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidDescription(String)}","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"public class Description {","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"jerremyng"},"content":" \"Booking description cannot be blank.\";","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" public final String description;","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" * Constructs a {@code Description}.","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" * @param description A valid description.","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" public Description(String description) {","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" requireNonNull(description);","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" this.description \u003d description;","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"jerremyng"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"jerremyng"},"content":" * Must not be empty or made of spaces.","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"cyqjoseph"},"content":" public static boolean isValidDescription(String test) {","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"jerremyng"},"content":" return !test.isEmpty();","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"cyqjoseph"},"content":" public String toString() {","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"cyqjoseph"},"content":" return description;","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"cyqjoseph"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"jerremyng"},"content":" if (this \u003d\u003d other) {","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"jerremyng"},"content":" return true;","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"jerremyng"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"cyqjoseph"},"content":" if (!(other instanceof Description)) {","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"jerremyng"},"content":" return false;","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"jerremyng"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"cyqjoseph"},"content":" Description otherName \u003d (Description) other;","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"cyqjoseph"},"content":" return description.equals(otherName.description);","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"cyqjoseph"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"cyqjoseph"},"content":" return description.hashCode();","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"jerremyng":9,"cyqjoseph":47}},{"path":"src/main/java/seedu/address/model/booking/EndTime.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package seedu.address.model.booking;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"jerremyng"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"jerremyng"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":" * Represents a Booking\u0027s end time in the address book.","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidEndTime(String)}","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":"public class EndTime {","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"End times must be in the format of YYYY-MM-DD HH:MM \"","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"jerremyng"},"content":" + \"(ISO_LOCAL_DATE_TIME).\";","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" private static final DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-M-d HH:mm\");","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" public final String endTimeString;","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" public final LocalDateTime endTime;","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" * Constructs a {@code EndTime}.","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" * @param endTime A valid end time.","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" public EndTime(String endTime) {","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":" checkArgument(isValidEndTime(endTime), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":" this.endTimeString \u003d endTime;","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":" this.endTime \u003d LocalDateTime.parse(endTime, formatter);","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"cyqjoseph"},"content":" * Returns true if a given string is a valid end time.","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"cyqjoseph"},"content":" public static boolean isValidEndTime(String test) {","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"cyqjoseph"},"content":" try {","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"cyqjoseph"},"content":" LocalDateTime.parse(test, formatter);","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"cyqjoseph"},"content":" return true;","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"cyqjoseph"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"cyqjoseph"},"content":" return false;","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"cyqjoseph"},"content":" public String toString() {","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"cyqjoseph"},"content":" return endTime.format(formatter);","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"cyqjoseph"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"jerremyng"},"content":" if (this \u003d\u003d other) {","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"jerremyng"},"content":" return true;","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"jerremyng"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"jerremyng"},"content":" if (!(other instanceof EndTime)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"jerremyng"},"content":" return false;","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"jerremyng"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"cyqjoseph"},"content":" EndTime that \u003d (EndTime) other;","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"cyqjoseph"},"content":" return endTime.equals(that.endTime);","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"cyqjoseph"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"cyqjoseph"},"content":" return endTime.hashCode();","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"jerremyng":9,"cyqjoseph":56}},{"path":"src/main/java/seedu/address/model/booking/StartTime.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package seedu.address.model.booking;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"jerremyng"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"jerremyng"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":" * Represents a Booking\u0027s start time in the address book.","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidStartTime(String)}","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":"public class StartTime {","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Start times must be in the format of YYYY-MM-DD HH:MM \"","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"jerremyng"},"content":" + \"(ISO_LOCAL_DATE_TIME).\";","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" private static final DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-M-d HH:mm\");","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" public final String startTimeString;","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" public final LocalDateTime startTime;","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" * Constructs a {@code StartTime}.","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" * @param startTime A valid start time.","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" public StartTime(String startTime) {","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":" checkArgument(isValidStartTime(startTime), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":" this.startTimeString \u003d startTime;","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":" this.startTime \u003d LocalDateTime.parse(startTime, formatter);","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"cyqjoseph"},"content":" * Returns true if a given string is a valid start time.","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"cyqjoseph"},"content":" public static boolean isValidStartTime(String test) {","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"cyqjoseph"},"content":" try {","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"cyqjoseph"},"content":" LocalDateTime.parse(test, formatter);","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"cyqjoseph"},"content":" return true;","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"cyqjoseph"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"cyqjoseph"},"content":" return false;","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"cyqjoseph"},"content":" public String toString() {","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"cyqjoseph"},"content":" return startTime.format(formatter);","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"cyqjoseph"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"jerremyng"},"content":" if (this \u003d\u003d other) {","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"jerremyng"},"content":" return true;","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"jerremyng"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"jerremyng"},"content":" if (!(other instanceof StartTime)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"jerremyng"},"content":" return false;","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"jerremyng"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"cyqjoseph"},"content":" StartTime that \u003d (StartTime) other;","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"cyqjoseph"},"content":" return startTime.equals(that.startTime);","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"cyqjoseph"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"cyqjoseph"},"content":" return startTime.hashCode();","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"jerremyng":9,"cyqjoseph":56}},{"path":"src/main/java/seedu/address/model/booking/UniqueBookingList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package seedu.address.model.booking;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":"import java.util.Iterator;","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":"import java.util.List;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":"import seedu.address.model.person.exceptions.PersonNotFoundException;","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"ChrysanthemumT"},"content":"/**","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"ChrysanthemumT"},"content":" * Represents a list of unique bookings.","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"ChrysanthemumT"},"content":"public class UniqueBookingList implements Iterable\u003cBooking\u003e {","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"ChrysanthemumT"},"content":" private final ObservableList\u003cBooking\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"ChrysanthemumT"},"content":" private final ObservableList\u003cBooking\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"ChrysanthemumT"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"ChrysanthemumT"},"content":" * Checks if the list contains a given booking.","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"ChrysanthemumT"},"content":" * @param toCheck The booking to check for.","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"ChrysanthemumT"},"content":" * @return true if the list contains the booking, false otherwise.","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"ChrysanthemumT"},"content":" public boolean contains(Booking toCheck) {","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"ChrysanthemumT"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"ChrysanthemumT"},"content":" return internalList.stream().anyMatch(toCheck::equals);","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"ChrysanthemumT"},"content":" * Adds a booking to the list.","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"ChrysanthemumT"},"content":" * @param toAdd The booking to add.","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"ChrysanthemumT"},"content":" * @throws DuplicatePersonException if the booking already exists in the list.","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"ChrysanthemumT"},"content":" public void add(Booking toAdd) {","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"ChrysanthemumT"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"ChrysanthemumT"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"cyqjoseph"},"content":" // TO CHANGE","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"ChrysanthemumT"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"ChrysanthemumT"},"content":" internalList.add(toAdd);","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"ChrysanthemumT"},"content":" public void setBooking(Booking target, Booking editedBooking) {","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"ChrysanthemumT"},"content":" requireAllNonNull(target, editedBooking);","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"ChrysanthemumT"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"ChrysanthemumT"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"ChrysanthemumT"},"content":" throw new PersonNotFoundException();","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"ChrysanthemumT"},"content":" if (!target.equals(editedBooking) \u0026\u0026 contains(editedBooking)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"ChrysanthemumT"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"ChrysanthemumT"},"content":" internalList.set(index, editedBooking);","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"ChrysanthemumT"},"content":" public void setBookings(UniqueBookingList replacement) {","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"ChrysanthemumT"},"content":" requireNonNull(replacement);","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"ChrysanthemumT"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"ChrysanthemumT"},"content":" public void setBookings(List\u003cBooking\u003e bookings) {","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"ChrysanthemumT"},"content":" requireAllNonNull(bookings);","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"ChrysanthemumT"},"content":" if (!bookingsAreUnique(bookings)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"ChrysanthemumT"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"ChrysanthemumT"},"content":" internalList.setAll(bookings);","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":79,"author":{"gitId":"ChrysanthemumT"},"content":" * Removes a booking from the list.","lastModifiedDate":"2024-03-11"},{"lineNumber":80,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":81,"author":{"gitId":"ChrysanthemumT"},"content":" * @param toRemove The booking to remove.","lastModifiedDate":"2024-03-11"},{"lineNumber":82,"author":{"gitId":"ChrysanthemumT"},"content":" * @throws PersonNotFoundException if the booking does not exist in the list.","lastModifiedDate":"2024-03-11"},{"lineNumber":83,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":84,"author":{"gitId":"ChrysanthemumT"},"content":" public void remove(Booking toRemove) {","lastModifiedDate":"2024-03-11"},{"lineNumber":85,"author":{"gitId":"ChrysanthemumT"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2024-03-11"},{"lineNumber":86,"author":{"gitId":"ChrysanthemumT"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":87,"author":{"gitId":"ChrysanthemumT"},"content":" throw new PersonNotFoundException();","lastModifiedDate":"2024-03-11"},{"lineNumber":88,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":89,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":90,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":91,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":92,"author":{"gitId":"ChrysanthemumT"},"content":" * Returns an unmodifiable view of the list.","lastModifiedDate":"2024-03-11"},{"lineNumber":93,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":94,"author":{"gitId":"ChrysanthemumT"},"content":" * @return An unmodifiable ObservableList of bookings.","lastModifiedDate":"2024-03-11"},{"lineNumber":95,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":96,"author":{"gitId":"ChrysanthemumT"},"content":" public ObservableList\u003cBooking\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2024-03-11"},{"lineNumber":97,"author":{"gitId":"ChrysanthemumT"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2024-03-11"},{"lineNumber":98,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":99,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":100,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":101,"author":{"gitId":"ChrysanthemumT"},"content":" * Returns an iterator over the elements in this list.","lastModifiedDate":"2024-03-11"},{"lineNumber":102,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":103,"author":{"gitId":"ChrysanthemumT"},"content":" * @return An iterator.","lastModifiedDate":"2024-03-11"},{"lineNumber":104,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":105,"author":{"gitId":"ChrysanthemumT"},"content":" public Iterator\u003cBooking\u003e iterator() {","lastModifiedDate":"2024-03-11"},{"lineNumber":106,"author":{"gitId":"ChrysanthemumT"},"content":" return internalList.iterator();","lastModifiedDate":"2024-03-11"},{"lineNumber":107,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":108,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":109,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":110,"author":{"gitId":"ChrysanthemumT"},"content":" * Returns the hash code value for this list.","lastModifiedDate":"2024-03-11"},{"lineNumber":111,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":112,"author":{"gitId":"ChrysanthemumT"},"content":" * @return The hash code value for this list.","lastModifiedDate":"2024-03-11"},{"lineNumber":113,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":114,"author":{"gitId":"ChrysanthemumT"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":115,"author":{"gitId":"ChrysanthemumT"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-11"},{"lineNumber":116,"author":{"gitId":"ChrysanthemumT"},"content":" return internalList.hashCode();","lastModifiedDate":"2024-03-11"},{"lineNumber":117,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":118,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":119,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":120,"author":{"gitId":"ChrysanthemumT"},"content":" * Returns a string representation of the list.","lastModifiedDate":"2024-03-11"},{"lineNumber":121,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":122,"author":{"gitId":"ChrysanthemumT"},"content":" * @return A string representation of the list.","lastModifiedDate":"2024-03-11"},{"lineNumber":123,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":124,"author":{"gitId":"ChrysanthemumT"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":125,"author":{"gitId":"ChrysanthemumT"},"content":" public String toString() {","lastModifiedDate":"2024-03-11"},{"lineNumber":126,"author":{"gitId":"ChrysanthemumT"},"content":" return internalList.toString();","lastModifiedDate":"2024-03-11"},{"lineNumber":127,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":128,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":129,"author":{"gitId":"ChrysanthemumT"},"content":" private boolean bookingsAreUnique(List\u003cBooking\u003e bookings) {","lastModifiedDate":"2024-03-16"},{"lineNumber":130,"author":{"gitId":"ChrysanthemumT"},"content":" for (int i \u003d 0; i \u003c bookings.size() - 1; i++) {","lastModifiedDate":"2024-03-16"},{"lineNumber":131,"author":{"gitId":"ChrysanthemumT"},"content":" for (int j \u003d i + 1; j \u003c bookings.size(); j++) {","lastModifiedDate":"2024-03-16"},{"lineNumber":132,"author":{"gitId":"ChrysanthemumT"},"content":" if (bookings.get(i).equals(bookings.get(j))) {","lastModifiedDate":"2024-03-16"},{"lineNumber":133,"author":{"gitId":"ChrysanthemumT"},"content":" return false;","lastModifiedDate":"2024-03-16"},{"lineNumber":134,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":135,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":136,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":137,"author":{"gitId":"ChrysanthemumT"},"content":" return true;","lastModifiedDate":"2024-03-16"},{"lineNumber":138,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":139,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"ChrysanthemumT":138,"cyqjoseph":1}},{"path":"src/main/java/seedu/address/model/person/Address.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.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Represents a Person\u0027s address in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidAddress(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class Address {","lastModifiedDate":"2016-09-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"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":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2017-01-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2017-01-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2017-01-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2018-09-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public final String value;","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Constructs an {@code Address}.","lastModifiedDate":"2017-05-30"},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @param address A valid address.","lastModifiedDate":"2017-05-30"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public Address(String address) {","lastModifiedDate":"2017-05-30"},{"lineNumber":27,"author":{"gitId":"-"},"content":" checkArgument(isValidAddress(address), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":28,"author":{"gitId":"-"},"content":" value \u003d address;","lastModifiedDate":"2018-08-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"cyqjoseph"},"content":" * Returns true if a given string is a valid address.","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static boolean isValidAddress(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"jerremyng"},"content":" return test \u003d\u003d null || test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-18"},{"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 String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24"},{"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 boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" if (!(other instanceof Address)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return false;","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":" Address otherAddress \u003d (Address) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return value.equals(otherAddress.value);","lastModifiedDate":"2023-07-13"},{"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 int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return value.hashCode();","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":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"jerremyng":1,"cyqjoseph":1,"-":61}},{"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 seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Represents a Person\u0027s email in the address book.","lastModifiedDate":"2018-02-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidEmail(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class Email {","lastModifiedDate":"2016-09-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" private static final String SPECIAL_CHARACTERS \u003d \"+_.-\";","lastModifiedDate":"2021-07-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Emails should be of the format local-part@domain \"","lastModifiedDate":"2018-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":" + \"and adhere to the following constraints:\\n\"","lastModifiedDate":"2018-02-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":" + \"1. The local-part should only contain alphanumeric characters and these special characters, excluding \"","lastModifiedDate":"2018-02-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":" + \"the parentheses, (\" + SPECIAL_CHARACTERS + \"). The local-part may not start or end with any special \"","lastModifiedDate":"2021-07-20"},{"lineNumber":16,"author":{"gitId":"-"},"content":" + \"characters.\\n\"","lastModifiedDate":"2021-07-20"},{"lineNumber":17,"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":18,"author":{"gitId":"-"},"content":" + \"separated by periods.\\n\"","lastModifiedDate":"2021-07-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":" + \"The domain name must:\\n\"","lastModifiedDate":"2018-02-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":" + \" - end with a domain label at least 2 characters long\\n\"","lastModifiedDate":"2021-07-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \" - have each domain label start and end with alphanumeric characters\\n\"","lastModifiedDate":"2021-07-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \" - have each domain label consist of alphanumeric characters, separated only by hyphens, if any.\";","lastModifiedDate":"2021-07-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" // alphanumeric and special characters","lastModifiedDate":"2018-02-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String ALPHANUMERIC_NO_UNDERSCORE \u003d \"[^\\\\W_]+\"; // alphanumeric characters except underscore","lastModifiedDate":"2021-07-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String LOCAL_PART_REGEX \u003d \"^\" + ALPHANUMERIC_NO_UNDERSCORE + \"([\" + SPECIAL_CHARACTERS + \"]\"","lastModifiedDate":"2021-07-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" + ALPHANUMERIC_NO_UNDERSCORE + \")*\";","lastModifiedDate":"2021-07-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String DOMAIN_PART_REGEX \u003d ALPHANUMERIC_NO_UNDERSCORE","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_LAST_PART_REGEX \u003d \"(\" + DOMAIN_PART_REGEX + \"){2,}$\"; // At least two chars","lastModifiedDate":"2021-07-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String DOMAIN_REGEX \u003d \"(\" + DOMAIN_PART_REGEX + \"\\\\.)*\" + DOMAIN_LAST_PART_REGEX;","lastModifiedDate":"2021-07-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d LOCAL_PART_REGEX + \"@\" + DOMAIN_REGEX;","lastModifiedDate":"2021-07-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public final String value;","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":" * Constructs an {@code Email}.","lastModifiedDate":"2017-05-30"},{"lineNumber":37,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @param email A valid email address.","lastModifiedDate":"2017-05-30"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public Email(String email) {","lastModifiedDate":"2017-05-30"},{"lineNumber":41,"author":{"gitId":"-"},"content":" checkArgument(isValidEmail(email), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":42,"author":{"gitId":"-"},"content":" value \u003d email;","lastModifiedDate":"2018-08-14"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Returns if a given string is a valid email.","lastModifiedDate":"2018-04-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static boolean isValidEmail(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"jerremyng"},"content":" return test \u003d\u003d null || test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24"},{"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 boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return true;","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":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" if (!(other instanceof Email)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return false;","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":" Email otherEmail \u003d (Email) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return value.equals(otherEmail.value);","lastModifiedDate":"2023-07-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"jerremyng":1,"-":76}},{"path":"src/main/java/seedu/address/model/person/ImagePath.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":" * Represents the file path of an image.","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":"public class ImagePath {","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":" private static final Path DEFAULT_IMAGE_PATH \u003d Paths.get(\"/images/default_image.png\");","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"ChrysanthemumT"},"content":" private Path filePath \u003d DEFAULT_IMAGE_PATH;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"ChrysanthemumT"},"content":" * Constructs an ImagePath object with the default file path.","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"ChrysanthemumT"},"content":" public ImagePath() {","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"ChrysanthemumT"},"content":" this.filePath \u003d DEFAULT_IMAGE_PATH;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"ChrysanthemumT"},"content":" * Constructs an ImagePath object with the specified file path.","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"ChrysanthemumT"},"content":" * @param path The file path of the image.","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"ChrysanthemumT"},"content":" public ImagePath(Path path) {","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"ChrysanthemumT"},"content":" this.filePath \u003d path;","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"ChrysanthemumT"},"content":" * Gets the file path of the image.","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"ChrysanthemumT"},"content":" * @return The file path of the image.","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"ChrysanthemumT"},"content":" public Path getFilePath() {","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"ChrysanthemumT"},"content":" return this.filePath;","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"ChrysanthemumT":39}},{"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":"-"},"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":" // Data fields","lastModifiedDate":"2018-04-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19"},{"lineNumber":25,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":27,"author":{"gitId":"ChrysanthemumT"},"content":" private ImagePath image;","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"ChrysanthemumT"},"content":" private Rating rating;","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"jerremyng"},"content":" * Name must not be null","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public Person(Name name, Phone phone, Email email, Address address, Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-03-14"},{"lineNumber":34,"author":{"gitId":"jerremyng"},"content":" requireAllNonNull(name);","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20"},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":40,"author":{"gitId":"ChrysanthemumT"},"content":" this.image \u003d new ImagePath();","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"ChrysanthemumT"},"content":" * Constructs a Person object with the specified attributes.","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"ChrysanthemumT"},"content":" * @param name The name of the person.","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"ChrysanthemumT"},"content":" * @param phone The phone number of the person.","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"ChrysanthemumT"},"content":" * @param email The email address of the person.","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"ChrysanthemumT"},"content":" * @param address The address of the person.","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"ChrysanthemumT"},"content":" * @param tags The set of tags associated with the person.","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"ChrysanthemumT"},"content":" * @param image The image path of the person.","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"ChrysanthemumT"},"content":" public Person(Name name, Phone phone, Email email, Address address, Set\u003cTag\u003e tags, ImagePath image) {","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" requireAllNonNull(name, phone, email, address, tags);","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"ChrysanthemumT"},"content":" this.image \u003d image;","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":80,"author":{"gitId":"ChrysanthemumT"},"content":" public void setRating(int rating) {","lastModifiedDate":"2024-03-12"},{"lineNumber":81,"author":{"gitId":"ChrysanthemumT"},"content":" this.rating.setRating(rating);","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":92,"author":{"gitId":"ChrysanthemumT"},"content":" public ImagePath getImage() {","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"ChrysanthemumT"},"content":" return this.image;","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":105,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19"},{"lineNumber":106,"author":{"gitId":"-"},"content":" \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2020-12-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":109,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":110,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19"},{"lineNumber":111,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":112,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":115,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":116,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":119,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10"},{"lineNumber":121,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":124,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10"},{"lineNumber":125,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":128,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":129,"author":{"gitId":"-"},"content":" \u0026\u0026 tags.equals(otherPerson.tags);","lastModifiedDate":"2023-07-13"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":134,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":135,"author":{"gitId":"-"},"content":" return Objects.hash(name, phone, email, address, tags);","lastModifiedDate":"2016-08-24"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":140,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":149,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"jerremyng":2,"ChrysanthemumT":27,"-":120}},{"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 seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Represents a Person\u0027s phone number in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidPhone(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class Phone {","lastModifiedDate":"2016-09-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","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":" \"Phone numbers should only contain numbers, and it should be at least 3 digits long\";","lastModifiedDate":"2018-04-04"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\d{3,}\";","lastModifiedDate":"2018-09-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public final String value;","lastModifiedDate":"2016-08-24"},{"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 Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @param phone A valid phone number.","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public Phone(String phone) {","lastModifiedDate":"2017-05-30"},{"lineNumber":23,"author":{"gitId":"-"},"content":" checkArgument(isValidPhone(phone), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":" value \u003d phone;","lastModifiedDate":"2018-08-14"},{"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-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid phone number.","lastModifiedDate":"2018-04-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static boolean isValidPhone(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"jerremyng"},"content":" return test \u003d\u003d null || test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-18"},{"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 String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"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 Phone)) {","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":" Phone otherPhone \u003d (Phone) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return value.equals(otherPhone.value);","lastModifiedDate":"2023-07-13"},{"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 int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return value.hashCode();","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":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"jerremyng":1,"-":58}},{"path":"src/main/java/seedu/address/model/person/Rating.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"jerremyng"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"jerremyng"},"content":" * Represents a Person\u0027s rating in the address book.","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"jerremyng"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":"public class Rating {","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":" private int rating; // Rating out of 5 stars","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":" public Rating() {","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":" this.rating \u003d 0; // Initialize with 0 stars","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" * Constructs an {@code Rating}.","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" * @param rating A valid rating.","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" public Rating(int rating) {","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" if (rating \u003e\u003d 0 \u0026\u0026 rating \u003c\u003d 5) {","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" this.rating \u003d rating;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" } else {","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" throw new IllegalArgumentException(\"Invalid rating. Please provide a rating between 0 and 5.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"ChrysanthemumT"},"content":" public void setRating(int rating) {","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"ChrysanthemumT"},"content":" if (rating \u003e\u003d 0 \u0026\u0026 rating \u003c\u003d 5) {","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"ChrysanthemumT"},"content":" this.rating \u003d rating;","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"ChrysanthemumT"},"content":" } else {","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":" throw new IllegalArgumentException(\"Invalid rating. Please provide a rating between 0 and 5.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"cyqjoseph"},"content":" * Returns true if a given integer is a valid rating.","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"cyqjoseph"},"content":" public static boolean isValidRating(int test) {","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"cyqjoseph"},"content":" return test \u003e\u003d 0 \u0026\u0026 test \u003c\u003d 5;","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"ChrysanthemumT"},"content":" public int getRating() {","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"ChrysanthemumT"},"content":" return rating;","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"cyqjoseph"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"cyqjoseph"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"cyqjoseph"},"content":" return true;","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"cyqjoseph"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"cyqjoseph"},"content":" if (!(other instanceof Rating)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"cyqjoseph"},"content":" return false;","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"cyqjoseph"},"content":" Rating otherRating \u003d (Rating) other;","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"cyqjoseph"},"content":" return rating \u003d\u003d otherRating.rating;","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"jerremyng":3,"ChrysanthemumT":20,"cyqjoseph":37}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedBooking.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.model.booking.Booking;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.model.booking.Description;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.model.booking.EndTime;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.model.booking.StartTime;","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" * Jackson-friendly version of {@link Booking}.","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":"class JsonAdaptedBooking {","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Booking\u0027s %s field is missing!\";","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" private final String description;","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" private final String start;","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" private final String end;","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" * Constructs a {@code JsonAdaptedBooking} with the given Booking details.","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":" @JsonCreator","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":" public JsonAdaptedBooking(@JsonProperty(\"description\") String description, @JsonProperty(\"start\") String start,","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":" @JsonProperty(\"end\") String end) {","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"cyqjoseph"},"content":" this.description \u003d description;","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"cyqjoseph"},"content":" this.start \u003d start;","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"cyqjoseph"},"content":" this.end \u003d end;","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"cyqjoseph"},"content":" * Converts a given {@code Booking} into this class for Jackson use.","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"cyqjoseph"},"content":" public JsonAdaptedBooking(Booking source) {","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"cyqjoseph"},"content":" description \u003d source.getDescription().description;","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"cyqjoseph"},"content":" start \u003d source.getStart().startTimeString;","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"cyqjoseph"},"content":" end \u003d source.getEnd().endTimeString;","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"cyqjoseph"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Booking} object.","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"cyqjoseph"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"cyqjoseph"},"content":" public Booking toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"cyqjoseph"},"content":" if (description \u003d\u003d null) {","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"cyqjoseph"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Booking.class.getSimpleName()));","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"cyqjoseph"},"content":" final Description modelDescription \u003d new Description(description);","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"cyqjoseph"},"content":" if (start \u003d\u003d null) {","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"cyqjoseph"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-14"},{"lineNumber":58,"author":{"gitId":"cyqjoseph"},"content":" StartTime.class.getSimpleName()));","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"cyqjoseph"},"content":" if (!StartTime.isValidStartTime(start)) {","lastModifiedDate":"2024-03-14"},{"lineNumber":61,"author":{"gitId":"cyqjoseph"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-14"},{"lineNumber":62,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":63,"author":{"gitId":"cyqjoseph"},"content":" final StartTime modelStart \u003d new StartTime(start);","lastModifiedDate":"2024-03-14"},{"lineNumber":64,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":65,"author":{"gitId":"cyqjoseph"},"content":" if (end \u003d\u003d null) {","lastModifiedDate":"2024-03-14"},{"lineNumber":66,"author":{"gitId":"cyqjoseph"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, EndTime.class.getSimpleName()));","lastModifiedDate":"2024-03-14"},{"lineNumber":67,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"cyqjoseph"},"content":" if (!EndTime.isValidEndTime(end)) {","lastModifiedDate":"2024-03-14"},{"lineNumber":69,"author":{"gitId":"cyqjoseph"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-14"},{"lineNumber":70,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":71,"author":{"gitId":"cyqjoseph"},"content":" final EndTime modelEnd \u003d new EndTime(end);","lastModifiedDate":"2024-03-14"},{"lineNumber":72,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":73,"author":{"gitId":"cyqjoseph"},"content":" return new Booking(modelDescription, modelStart, modelEnd);","lastModifiedDate":"2024-03-14"},{"lineNumber":74,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":75,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"cyqjoseph":75}},{"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":"ChrysanthemumT"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-03-19"},{"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.Address;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"ChrysanthemumT"},"content":"import seedu.address.model.person.ImagePath;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13"},{"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":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"ChrysanthemumT"},"content":" private String image \u003d \"/images/default_image.png\";","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"ChrysanthemumT"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags, @JsonProperty(\"image\") String image) {","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"ChrysanthemumT"},"content":" this.image \u003d image;","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"ChrysanthemumT"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details without image.","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"ChrysanthemumT"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"ChrysanthemumT"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"ChrysanthemumT"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags) {","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"ChrysanthemumT"},"content":" this.name \u003d name;","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"ChrysanthemumT"},"content":" this.phone \u003d phone;","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"ChrysanthemumT"},"content":" this.email \u003d email;","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"ChrysanthemumT"},"content":" this.address \u003d address;","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"ChrysanthemumT"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"ChrysanthemumT"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"jerremyng"},"content":" // Check if phone is null before accessing its value","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"jerremyng"},"content":" phone \u003d source.getPhone() !\u003d null ? source.getPhone().value : null;","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"jerremyng"},"content":" // Check if email is null before accessing its value","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"jerremyng"},"content":" email \u003d source.getEmail() !\u003d null ? source.getEmail().value : null;","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"jerremyng"},"content":" // Check if address is null before accessing its value","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"jerremyng"},"content":" address \u003d source.getAddress() !\u003d null ? source.getAddress().value : null;","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09"},{"lineNumber":81,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"ChrysanthemumT"},"content":" image \u003d source.getImage().getFilePath().toString();","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09"},{"lineNumber":94,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13"},{"lineNumber":121,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":122,"author":{"gitId":"ChrysanthemumT"},"content":" if (image !\u003d null) {","lastModifiedDate":"2024-03-19"},{"lineNumber":123,"author":{"gitId":"ChrysanthemumT"},"content":" final ImagePath imagePath \u003d new ImagePath(Paths.get(image));","lastModifiedDate":"2024-03-19"},{"lineNumber":124,"author":{"gitId":"ChrysanthemumT"},"content":" return new Person(modelName, modelPhone, modelEmail, modelAddress, modelTags, imagePath);","lastModifiedDate":"2024-03-19"},{"lineNumber":125,"author":{"gitId":"ChrysanthemumT"},"content":" } else {","lastModifiedDate":"2024-03-19"},{"lineNumber":126,"author":{"gitId":"-"},"content":" return new Person(modelName, modelPhone, modelEmail, modelAddress, modelTags);","lastModifiedDate":"2018-08-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":130,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"jerremyng":6,"ChrysanthemumT":25,"-":99}},{"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":"cyqjoseph"},"content":"import seedu.address.model.booking.Booking;","lastModifiedDate":"2024-03-17"},{"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":"cyqjoseph"},"content":" public static final String MESSAGE_DUPLICATE_BOOKING \u003d \"Booking list contains duplicate booking(s).\";","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedPerson\u003e persons \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":" private final List\u003cJsonAdaptedBooking\u003e bookings \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-17"},{"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":"cyqjoseph"},"content":" public JsonSerializableAddressBook(@JsonProperty(\"persons\") List\u003cJsonAdaptedPerson\u003e persons,","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"cyqjoseph"},"content":" @JsonProperty(\"bookings\") List\u003cJsonAdaptedBooking\u003e bookings) {","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.persons.addAll(persons);","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"cyqjoseph"},"content":" this.bookings.addAll(bookings);","lastModifiedDate":"2024-03-17"},{"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":"-"},"content":" persons.addAll(source.getPersonList().stream().map(JsonAdaptedPerson::new).collect(Collectors.toList()));","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"cyqjoseph"},"content":" bookings.addAll(source.getBookingList().stream().map(JsonAdaptedBooking::new).collect(Collectors.toList()));","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","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":" * Converts this address book into the model\u0027s {@code AddressBook} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated.","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public AddressBook toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" for (JsonAdaptedPerson jsonAdaptedPerson : persons) {","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" Person person \u003d jsonAdaptedPerson.toModelType();","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (addressBook.hasPerson(person)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"cyqjoseph"},"content":" for (JsonAdaptedBooking jsonAdaptedBooking: bookings) {","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"cyqjoseph"},"content":" Booking booking \u003d jsonAdaptedBooking.toModelType();","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"cyqjoseph"},"content":" if (addressBook.hasBooking(booking)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"cyqjoseph"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_BOOKING);","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"cyqjoseph"},"content":" addressBook.addBooking(booking);","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"cyqjoseph":16,"-":59}},{"path":"src/main/java/seedu/address/ui/BookingCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"gauravuj"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"gauravuj"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"gauravuj"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"gauravuj"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"gauravuj"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"gauravuj"},"content":"import seedu.address.model.booking.Booking;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":" * A UI component that displays information of a {@code Booking}.","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"gauravuj"},"content":"public class BookingCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"gauravuj"},"content":" private static final String FXML \u003d \"BookingListCard.fxml\";","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"gauravuj"},"content":" public final Booking booking;","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"gauravuj"},"content":" @FXML","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"gauravuj"},"content":" private HBox cardPane;","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"gauravuj"},"content":" @FXML","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"gauravuj"},"content":" private Label id;","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"gauravuj"},"content":" @FXML","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"gauravuj"},"content":" private Label description;","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"gauravuj"},"content":" @FXML","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"gauravuj"},"content":" private Label startTime;","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"gauravuj"},"content":" @FXML","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"gauravuj"},"content":" private Label endTime;","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"ChrysanthemumT"},"content":" * Constructs a BookingCard object with the specified booking and displayed index.","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"ChrysanthemumT"},"content":" * @param booking The booking to display.","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"ChrysanthemumT"},"content":" * @param displayedIndex The index of the booking as displayed in the UI.","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"gauravuj"},"content":" public BookingCard(Booking booking, int displayedIndex) {","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"gauravuj"},"content":" super(FXML);","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"gauravuj"},"content":" this.booking \u003d booking;","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"gauravuj"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"gauravuj"},"content":" description.setText(booking.getDescription().description);","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"gauravuj"},"content":" startTime.setText(booking.getStart().startTimeString);","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"gauravuj"},"content":" endTime.setText(booking.getEnd().endTimeString);","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"gauravuj"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"gauravuj"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"gauravuj":34,"ChrysanthemumT":8,"cyqjoseph":1}},{"path":"src/main/java/seedu/address/ui/BookingListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"gauravuj"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"gauravuj"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"gauravuj"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"gauravuj"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"gauravuj"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"gauravuj"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"gauravuj"},"content":"import seedu.address.model.booking.Booking;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"ChrysanthemumT"},"content":" * Represents a panel that displays a list of bookings in the UI.","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"gauravuj"},"content":"public class BookingListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"gauravuj"},"content":" private static final String FXML \u003d \"BookingListPanel.fxml\";","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"gauravuj"},"content":" private final Logger logger \u003d LogsCenter.getLogger(BookingListPanel.class);","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"gauravuj"},"content":" @javafx.fxml.FXML","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"gauravuj"},"content":" private ListView\u003cBooking\u003e bookingListView;","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"gauravuj"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"gauravuj"},"content":" * Creates a {@code PersonListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"gauravuj"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"gauravuj"},"content":" public BookingListPanel(ObservableList\u003cBooking\u003e bookingList) {","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"gauravuj"},"content":" super(FXML);","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"gauravuj"},"content":" bookingListView.setItems(bookingList);","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"gauravuj"},"content":" bookingListView.setCellFactory(listView -\u003e new BookingListViewCell());","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"gauravuj"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"gauravuj"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"gauravuj"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Person} using a {@code PersonCard}.","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"gauravuj"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"gauravuj"},"content":" class BookingListViewCell extends ListCell\u003cBooking\u003e {","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"gauravuj"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"gauravuj"},"content":" protected void updateItem(Booking booking, boolean empty) {","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"gauravuj"},"content":" super.updateItem(booking, empty);","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"gauravuj"},"content":" if (empty || booking \u003d\u003d null) {","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"gauravuj"},"content":" setGraphic(null);","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"gauravuj"},"content":" setText(null);","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"gauravuj"},"content":" } else {","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"gauravuj"},"content":" setGraphic(new BookingCard(booking, getIndex() + 1).getRoot());","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"gauravuj"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"gauravuj"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"gauravuj"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"gauravuj"},"content":"}","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"gauravuj":44,"ChrysanthemumT":5}},{"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":"-"},"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":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-10-15"},{"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":"","lastModifiedDate":"2016-09-14"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * The UI component that is responsible for receiving user command inputs.","lastModifiedDate":"2017-08-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class CommandBox extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String ERROR_STYLE_CLASS \u003d \"error\";","lastModifiedDate":"2017-02-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"CommandBox.fxml\";","lastModifiedDate":"2017-04-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private final CommandExecutor commandExecutor;","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-14"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private TextField commandTextField;","lastModifiedDate":"2016-09-14"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Creates a {@code CommandBox} with the given {@code CommandExecutor}.","lastModifiedDate":"2020-05-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public CommandBox(CommandExecutor commandExecutor) {","lastModifiedDate":"2019-01-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" this.commandExecutor \u003d commandExecutor;","lastModifiedDate":"2018-12-09"},{"lineNumber":30,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"gauravuj"},"content":" commandTextField.focusedProperty().addListener((observable, oldValue, newValue) -\u003e {","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"gauravuj"},"content":" if (newValue) { // When the text field is focused","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"gauravuj"},"content":" if (commandTextField.getText().equals(\"\u003e \")) {","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"gauravuj"},"content":" commandTextField.setText(\"\");","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"gauravuj"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"gauravuj"},"content":" } else { // When the text field loses focus","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"gauravuj"},"content":" if (commandTextField.getText().isEmpty()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"gauravuj"},"content":" commandTextField.setText(\"\u003e \");","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"gauravuj"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"gauravuj"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"gauravuj"},"content":" });","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // calls #setStyleToDefault() whenever there is a change to the text of the command box.","lastModifiedDate":"2017-06-28"},{"lineNumber":44,"author":{"gitId":"gauravuj"},"content":" commandTextField.textProperty().addListener((observable, oldValue, newValue) -\u003e {","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"gauravuj"},"content":" if (!newValue.startsWith(\"\u003e \")) {","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"gauravuj"},"content":" commandTextField.setText(\"\u003e \" + newValue.replaceAll(\"^\u003e ?\", \"\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"gauravuj"},"content":" commandTextField.positionCaret(commandTextField.getText().length()); // Move the caret to the end","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"gauravuj"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"gauravuj"},"content":" setStyleToDefault();","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"gauravuj"},"content":" });","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-14"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Handles the Enter button pressed event.","lastModifiedDate":"2017-08-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-14"},{"lineNumber":57,"author":{"gitId":"-"},"content":" private void handleCommandEntered() {","lastModifiedDate":"2018-04-01"},{"lineNumber":58,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-02-05"},{"lineNumber":59,"author":{"gitId":"gauravuj"},"content":" // Extract the actual command text entered by the user.","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"gauravuj"},"content":" String commandText \u003d commandTextField.getText().substring(2).trim();","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"gauravuj"},"content":" if (!commandText.isEmpty()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"-"},"content":" commandExecutor.execute(commandText);","lastModifiedDate":"2020-12-04"},{"lineNumber":64,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"gauravuj"},"content":" // Clear the command input only if the command is successful.","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"gauravuj"},"content":" commandTextField.setText(\"\u003e \");","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"gauravuj"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2017-03-11"},{"lineNumber":69,"author":{"gitId":"gauravuj"},"content":" // If there\u0027s an error, indicate command failure without clearing the text","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":" setStyleToIndicateCommandFailure();","lastModifiedDate":"2017-02-05"},{"lineNumber":71,"author":{"gitId":"gauravuj"},"content":" commandTextField.positionCaret(commandTextField.getText().length());","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"gauravuj"},"content":" } finally {","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"gauravuj"},"content":" commandTextField.positionCaret(commandTextField.getText().length());","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":77,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-28"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Sets the command box style to use the default style.","lastModifiedDate":"2017-06-28"},{"lineNumber":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28"},{"lineNumber":82,"author":{"gitId":"-"},"content":" private void setStyleToDefault() {","lastModifiedDate":"2017-06-28"},{"lineNumber":83,"author":{"gitId":"-"},"content":" commandTextField.getStyleClass().remove(ERROR_STYLE_CLASS);","lastModifiedDate":"2017-02-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-28"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Sets the command box style to indicate a failed command.","lastModifiedDate":"2017-02-05"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28"},{"lineNumber":89,"author":{"gitId":"-"},"content":" private void setStyleToIndicateCommandFailure() {","lastModifiedDate":"2017-02-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":" ObservableList\u003cString\u003e styleClass \u003d commandTextField.getStyleClass();","lastModifiedDate":"2017-03-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":92,"author":{"gitId":"gauravuj"},"content":" // Just add the error style class, do not clear the text","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"gauravuj"},"content":" if (!styleClass.contains(ERROR_STYLE_CLASS)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"gauravuj"},"content":" styleClass.add(ERROR_STYLE_CLASS);","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":97,"author":{"gitId":"gauravuj"},"content":" // Keep the caret at the end of the text","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"gauravuj"},"content":" commandTextField.positionCaret(commandTextField.getText().length());","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":101,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Represents a function that can execute commands.","lastModifiedDate":"2018-12-09"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":105,"author":{"gitId":"-"},"content":" @FunctionalInterface","lastModifiedDate":"2018-12-09"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public interface CommandExecutor {","lastModifiedDate":"2018-12-09"},{"lineNumber":107,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":109,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":110,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09"},{"lineNumber":111,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":112,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2018-12-09"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":115,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"}],"authorContributionMap":{"gauravuj":40,"-":75}},{"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":"jerremyng"},"content":" public static final String USERGUIDE_URL \u003d \"https://ay2324s2-cs2103t-w11-3.github.io/tp/UserGuide.html\";","lastModifiedDate":"2024-03-18"},{"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":{"jerremyng":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":"ChrysanthemumT"},"content":"import javafx.scene.Scene;","lastModifiedDate":"2024-03-21"},{"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":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2016-09-28"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-06-16"},{"lineNumber":16,"author":{"gitId":"ChrysanthemumT"},"content":"import seedu.address.commons.core.Theme;","lastModifiedDate":"2024-03-21"},{"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":"gauravuj"},"content":" private BookingListPanel bookingListPanel;","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"gauravuj"},"content":" private TerminalWindow terminalWindow;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" private StackPane personListPanelPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":51,"author":{"gitId":"gauravuj"},"content":" @FXML","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"gauravuj"},"content":" private StackPane bookingListPanelPlaceholder;","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" private StackPane resultDisplayPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" private StackPane statusbarPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":68,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21"},{"lineNumber":74,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(logic.getGuiSettings().getTheme());","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"ChrysanthemumT"},"content":" setTheme(logic.getGuiSettings());","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21"},{"lineNumber":85,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","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":" /**","lastModifiedDate":"2016-12-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","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":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18"},{"lineNumber":109,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":110,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":111,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18"},{"lineNumber":112,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18"},{"lineNumber":113,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":115,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":118,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":119,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16"},{"lineNumber":120,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":121,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21"},{"lineNumber":122,"author":{"gitId":"-"},"content":" personListPanel \u003d new PersonListPanel(logic.getFilteredPersonList());","lastModifiedDate":"2019-01-25"},{"lineNumber":123,"author":{"gitId":"-"},"content":" personListPanelPlaceholder.getChildren().add(personListPanel.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":125,"author":{"gitId":"gauravuj"},"content":" bookingListPanel \u003d new BookingListPanel(logic.getFilteredBookingList());","lastModifiedDate":"2024-03-18"},{"lineNumber":126,"author":{"gitId":"gauravuj"},"content":" bookingListPanelPlaceholder.getChildren().add(bookingListPanel.getRoot());","lastModifiedDate":"2024-03-18"},{"lineNumber":127,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":128,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09"},{"lineNumber":129,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getAddressBookFilePath());","lastModifiedDate":"2019-01-25"},{"lineNumber":132,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25"},{"lineNumber":135,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14"},{"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":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27"},{"lineNumber":140,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":141,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":142,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27"},{"lineNumber":143,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27"},{"lineNumber":144,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27"},{"lineNumber":145,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27"},{"lineNumber":146,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":149,"author":{"gitId":"ChrysanthemumT"},"content":" private void setTheme(GuiSettings guiSettings) {","lastModifiedDate":"2024-03-21"},{"lineNumber":150,"author":{"gitId":"ChrysanthemumT"},"content":" String styleSheet;","lastModifiedDate":"2024-03-21"},{"lineNumber":151,"author":{"gitId":"ChrysanthemumT"},"content":" Theme theme \u003d guiSettings.getTheme();","lastModifiedDate":"2024-03-21"},{"lineNumber":152,"author":{"gitId":"ChrysanthemumT"},"content":" switch(theme) {","lastModifiedDate":"2024-03-21"},{"lineNumber":153,"author":{"gitId":"ChrysanthemumT"},"content":" case LIGHTTHEME:","lastModifiedDate":"2024-03-21"},{"lineNumber":154,"author":{"gitId":"ChrysanthemumT"},"content":" styleSheet \u003d \"/view/styleSheets/LightTheme.css\";","lastModifiedDate":"2024-03-21"},{"lineNumber":155,"author":{"gitId":"ChrysanthemumT"},"content":" break;","lastModifiedDate":"2024-03-21"},{"lineNumber":156,"author":{"gitId":"ChrysanthemumT"},"content":" case DARKTHEME:","lastModifiedDate":"2024-03-21"},{"lineNumber":157,"author":{"gitId":"ChrysanthemumT"},"content":" default:","lastModifiedDate":"2024-03-21"},{"lineNumber":158,"author":{"gitId":"ChrysanthemumT"},"content":" styleSheet \u003d \"/view/styleSheets/DarkTheme.css\";","lastModifiedDate":"2024-03-21"},{"lineNumber":159,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":160,"author":{"gitId":"ChrysanthemumT"},"content":" Scene scene \u003d primaryStage.getScene();","lastModifiedDate":"2024-03-21"},{"lineNumber":161,"author":{"gitId":"ChrysanthemumT"},"content":" scene.getStylesheets().clear();","lastModifiedDate":"2024-03-21"},{"lineNumber":162,"author":{"gitId":"ChrysanthemumT"},"content":" scene.getStylesheets().addAll(this.getClass().getResource(styleSheet).toExternalForm());","lastModifiedDate":"2024-03-21"},{"lineNumber":163,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":165,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":166,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15"},{"lineNumber":167,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":168,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":169,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31"},{"lineNumber":170,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15"},{"lineNumber":171,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":172,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15"},{"lineNumber":173,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":177,"author":{"gitId":"gauravuj"},"content":" /**","lastModifiedDate":"2024-03-10"},{"lineNumber":178,"author":{"gitId":"gauravuj"},"content":" * Opens the terminal window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2024-03-10"},{"lineNumber":179,"author":{"gitId":"gauravuj"},"content":" */","lastModifiedDate":"2024-03-10"},{"lineNumber":180,"author":{"gitId":"gauravuj"},"content":" @FXML","lastModifiedDate":"2024-03-10"},{"lineNumber":181,"author":{"gitId":"gauravuj"},"content":" public void handleTerminal() {","lastModifiedDate":"2024-03-10"},{"lineNumber":182,"author":{"gitId":"gauravuj"},"content":" if (!terminalWindow.isShowing()) {","lastModifiedDate":"2024-03-10"},{"lineNumber":183,"author":{"gitId":"gauravuj"},"content":" helpWindow.show();","lastModifiedDate":"2024-03-10"},{"lineNumber":184,"author":{"gitId":"gauravuj"},"content":" } else {","lastModifiedDate":"2024-03-10"},{"lineNumber":185,"author":{"gitId":"gauravuj"},"content":" helpWindow.focus();","lastModifiedDate":"2024-03-10"},{"lineNumber":186,"author":{"gitId":"gauravuj"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":187,"author":{"gitId":"gauravuj"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":188,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":189,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15"},{"lineNumber":190,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":193,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":194,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18"},{"lineNumber":195,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":196,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":197,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18"},{"lineNumber":198,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08"},{"lineNumber":199,"author":{"gitId":"ChrysanthemumT"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY(), logic.getGuiSettings().getStringTheme());","lastModifiedDate":"2024-03-21"},{"lineNumber":200,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08"},{"lineNumber":201,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":202,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":205,"author":{"gitId":"-"},"content":" public PersonListPanel getPersonListPanel() {","lastModifiedDate":"2016-08-25"},{"lineNumber":206,"author":{"gitId":"-"},"content":" return personListPanel;","lastModifiedDate":"2018-08-14"},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":209,"author":{"gitId":"ChrysanthemumT"},"content":" public BookingListPanel getBookingListPanel() {","lastModifiedDate":"2024-03-20"},{"lineNumber":210,"author":{"gitId":"ChrysanthemumT"},"content":" return bookingListPanel;","lastModifiedDate":"2024-03-20"},{"lineNumber":211,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":212,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":213,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":214,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":215,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":216,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09"},{"lineNumber":217,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":218,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09"},{"lineNumber":219,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":220,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09"},{"lineNumber":221,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":222,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":224,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":225,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09"},{"lineNumber":226,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":228,"author":{"gitId":"gauravuj"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2024-03-10"},{"lineNumber":229,"author":{"gitId":"gauravuj"},"content":" handleTerminal();","lastModifiedDate":"2024-03-10"},{"lineNumber":230,"author":{"gitId":"gauravuj"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":231,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":232,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":233,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09"},{"lineNumber":234,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":236,"author":{"gitId":"ChrysanthemumT"},"content":" if (commandResult.isTheme()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":237,"author":{"gitId":"ChrysanthemumT"},"content":" setTheme(logic.getGuiSettings());","lastModifiedDate":"2024-03-21"},{"lineNumber":238,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":239,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":240,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":241,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09"},{"lineNumber":242,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13"},{"lineNumber":243,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09"},{"lineNumber":244,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09"},{"lineNumber":245,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":246,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":247,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":248,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"gauravuj":25,"ChrysanthemumT":28,"-":195}},{"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":"ChrysanthemumT"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2024-03-19"},{"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":"ChrysanthemumT"},"content":"import javafx.scene.shape.Circle;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" * A UI component that displays information of a {@code Person}.","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2016-09-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25"},{"lineNumber":27,"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":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public final Person person;","lastModifiedDate":"2018-01-10"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private Label address;","lastModifiedDate":"2016-09-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18"},{"lineNumber":46,"author":{"gitId":"ChrysanthemumT"},"content":" @FXML","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"ChrysanthemumT"},"content":" private ImageView displayPicture;","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20"},{"lineNumber":57,"author":{"gitId":"ChrysanthemumT"},"content":" final Circle clip \u003d new Circle(45, 45, 39);","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"ChrysanthemumT"},"content":" displayPicture.setClip(clip);","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"ChrysanthemumT"},"content":" displayPicture.setImage(new Image(this.getClass()","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"ChrysanthemumT"},"content":" .getResourceAsStream(person.getImage().getFilePath().toString())));","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"jerremyng"},"content":" phone.setText(person.getPhone() \u003d\u003d null ? \"\" : person.getPhone().value);","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"jerremyng"},"content":" address.setText(person.getAddress() \u003d\u003d null ? \"\" : person.getAddress().value);","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"jerremyng"},"content":" email.setText(person.getEmail() \u003d\u003d null ? \"\" : person.getEmail().value);","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"-"},"content":" person.getTags().stream()","lastModifiedDate":"2019-01-02"},{"lineNumber":65,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02"},{"lineNumber":66,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"jerremyng":3,"ChrysanthemumT":9,"cyqjoseph":1,"-":55}},{"path":"src/main/java/seedu/address/ui/TerminalWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"gauravuj"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":3,"author":{"gitId":"gauravuj"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-10"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"gauravuj"},"content":"import javafx.scene.control.TextArea;","lastModifiedDate":"2024-03-10"},{"lineNumber":7,"author":{"gitId":"gauravuj"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"gauravuj"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"gauravuj"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-10"},{"lineNumber":10,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":11,"author":{"gitId":"gauravuj"},"content":"/**","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"gauravuj"},"content":" * Controller for a terminal window.","lastModifiedDate":"2024-03-10"},{"lineNumber":13,"author":{"gitId":"gauravuj"},"content":" */","lastModifiedDate":"2024-03-10"},{"lineNumber":14,"author":{"gitId":"gauravuj"},"content":"public class TerminalWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2024-03-10"},{"lineNumber":15,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":16,"author":{"gitId":"gauravuj"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(TerminalWindow.class);","lastModifiedDate":"2024-03-10"},{"lineNumber":17,"author":{"gitId":"gauravuj"},"content":" private static final String FXML \u003d \"TerminalWindow.fxml\";","lastModifiedDate":"2024-03-10"},{"lineNumber":18,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":19,"author":{"gitId":"gauravuj"},"content":" @FXML","lastModifiedDate":"2024-03-10"},{"lineNumber":20,"author":{"gitId":"gauravuj"},"content":" private TextArea outputArea;","lastModifiedDate":"2024-03-10"},{"lineNumber":21,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":22,"author":{"gitId":"gauravuj"},"content":" @FXML","lastModifiedDate":"2024-03-10"},{"lineNumber":23,"author":{"gitId":"gauravuj"},"content":" private TextField inputField;","lastModifiedDate":"2024-03-10"},{"lineNumber":24,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":25,"author":{"gitId":"gauravuj"},"content":" /**","lastModifiedDate":"2024-03-10"},{"lineNumber":26,"author":{"gitId":"gauravuj"},"content":" * Creates a new TerminalWindow.","lastModifiedDate":"2024-03-10"},{"lineNumber":27,"author":{"gitId":"gauravuj"},"content":" *","lastModifiedDate":"2024-03-10"},{"lineNumber":28,"author":{"gitId":"gauravuj"},"content":" * @param root Stage to use as the root of the TerminalWindow.","lastModifiedDate":"2024-03-10"},{"lineNumber":29,"author":{"gitId":"gauravuj"},"content":" */","lastModifiedDate":"2024-03-10"},{"lineNumber":30,"author":{"gitId":"gauravuj"},"content":" public TerminalWindow(Stage root) {","lastModifiedDate":"2024-03-10"},{"lineNumber":31,"author":{"gitId":"gauravuj"},"content":" super(FXML, root);","lastModifiedDate":"2024-03-10"},{"lineNumber":32,"author":{"gitId":"gauravuj"},"content":" // Initialize your Terminal window here if needed","lastModifiedDate":"2024-03-10"},{"lineNumber":33,"author":{"gitId":"gauravuj"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":34,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":35,"author":{"gitId":"gauravuj"},"content":" /**","lastModifiedDate":"2024-03-10"},{"lineNumber":36,"author":{"gitId":"gauravuj"},"content":" * Creates a new TerminalWindow.","lastModifiedDate":"2024-03-10"},{"lineNumber":37,"author":{"gitId":"gauravuj"},"content":" */","lastModifiedDate":"2024-03-10"},{"lineNumber":38,"author":{"gitId":"gauravuj"},"content":" public TerminalWindow() {","lastModifiedDate":"2024-03-10"},{"lineNumber":39,"author":{"gitId":"gauravuj"},"content":" this(new Stage());","lastModifiedDate":"2024-03-10"},{"lineNumber":40,"author":{"gitId":"gauravuj"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":41,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":42,"author":{"gitId":"gauravuj"},"content":" /**","lastModifiedDate":"2024-03-10"},{"lineNumber":43,"author":{"gitId":"gauravuj"},"content":" * Shows the terminal window.","lastModifiedDate":"2024-03-10"},{"lineNumber":44,"author":{"gitId":"gauravuj"},"content":" */","lastModifiedDate":"2024-03-10"},{"lineNumber":45,"author":{"gitId":"gauravuj"},"content":" public void show() {","lastModifiedDate":"2024-03-10"},{"lineNumber":46,"author":{"gitId":"gauravuj"},"content":" logger.fine(\"Showing terminal window.\");","lastModifiedDate":"2024-03-10"},{"lineNumber":47,"author":{"gitId":"gauravuj"},"content":" getRoot().show();","lastModifiedDate":"2024-03-10"},{"lineNumber":48,"author":{"gitId":"gauravuj"},"content":" getRoot().centerOnScreen();","lastModifiedDate":"2024-03-10"},{"lineNumber":49,"author":{"gitId":"gauravuj"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":50,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":51,"author":{"gitId":"gauravuj"},"content":" /**","lastModifiedDate":"2024-03-10"},{"lineNumber":52,"author":{"gitId":"gauravuj"},"content":" * Returns true if the terminal window is currently being shown.","lastModifiedDate":"2024-03-10"},{"lineNumber":53,"author":{"gitId":"gauravuj"},"content":" */","lastModifiedDate":"2024-03-10"},{"lineNumber":54,"author":{"gitId":"gauravuj"},"content":" public boolean isShowing() {","lastModifiedDate":"2024-03-10"},{"lineNumber":55,"author":{"gitId":"gauravuj"},"content":" return getRoot().isShowing();","lastModifiedDate":"2024-03-10"},{"lineNumber":56,"author":{"gitId":"gauravuj"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":57,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":58,"author":{"gitId":"gauravuj"},"content":" /**","lastModifiedDate":"2024-03-10"},{"lineNumber":59,"author":{"gitId":"gauravuj"},"content":" * Hides the terminal window.","lastModifiedDate":"2024-03-10"},{"lineNumber":60,"author":{"gitId":"gauravuj"},"content":" */","lastModifiedDate":"2024-03-10"},{"lineNumber":61,"author":{"gitId":"gauravuj"},"content":" public void hide() {","lastModifiedDate":"2024-03-10"},{"lineNumber":62,"author":{"gitId":"gauravuj"},"content":" getRoot().hide();","lastModifiedDate":"2024-03-10"},{"lineNumber":63,"author":{"gitId":"gauravuj"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":64,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":65,"author":{"gitId":"gauravuj"},"content":" /**","lastModifiedDate":"2024-03-10"},{"lineNumber":66,"author":{"gitId":"gauravuj"},"content":" * Focuses on the terminal window.","lastModifiedDate":"2024-03-10"},{"lineNumber":67,"author":{"gitId":"gauravuj"},"content":" */","lastModifiedDate":"2024-03-10"},{"lineNumber":68,"author":{"gitId":"gauravuj"},"content":" public void focus() {","lastModifiedDate":"2024-03-10"},{"lineNumber":69,"author":{"gitId":"gauravuj"},"content":" getRoot().requestFocus();","lastModifiedDate":"2024-03-10"},{"lineNumber":70,"author":{"gitId":"gauravuj"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":71,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":72,"author":{"gitId":"gauravuj"},"content":" /**","lastModifiedDate":"2024-03-10"},{"lineNumber":73,"author":{"gitId":"gauravuj"},"content":" * Initializes the controller class. This method is automatically called","lastModifiedDate":"2024-03-10"},{"lineNumber":74,"author":{"gitId":"gauravuj"},"content":" * after the fxml file has been loaded.","lastModifiedDate":"2024-03-10"},{"lineNumber":75,"author":{"gitId":"gauravuj"},"content":" */","lastModifiedDate":"2024-03-10"},{"lineNumber":76,"author":{"gitId":"gauravuj"},"content":" @FXML","lastModifiedDate":"2024-03-10"},{"lineNumber":77,"author":{"gitId":"gauravuj"},"content":" private void initialize() {","lastModifiedDate":"2024-03-10"},{"lineNumber":78,"author":{"gitId":"gauravuj"},"content":" inputField.setOnAction(event -\u003e {","lastModifiedDate":"2024-03-10"},{"lineNumber":79,"author":{"gitId":"gauravuj"},"content":" String command \u003d inputField.getText();","lastModifiedDate":"2024-03-10"},{"lineNumber":80,"author":{"gitId":"gauravuj"},"content":" // Process the command and append to outputArea","lastModifiedDate":"2024-03-10"},{"lineNumber":81,"author":{"gitId":"gauravuj"},"content":" outputArea.appendText(\"\u003e\" + command + \"\\n\");","lastModifiedDate":"2024-03-10"},{"lineNumber":82,"author":{"gitId":"gauravuj"},"content":" // Placeholder for actual command processing","lastModifiedDate":"2024-03-10"},{"lineNumber":83,"author":{"gitId":"gauravuj"},"content":" outputArea.appendText(\"Command output goes here...\\n\");","lastModifiedDate":"2024-03-10"},{"lineNumber":84,"author":{"gitId":"gauravuj"},"content":" inputField.clear();","lastModifiedDate":"2024-03-10"},{"lineNumber":85,"author":{"gitId":"gauravuj"},"content":" });","lastModifiedDate":"2024-03-10"},{"lineNumber":86,"author":{"gitId":"gauravuj"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":87,"author":{"gitId":"gauravuj"},"content":"}","lastModifiedDate":"2024-03-10"}],"authorContributionMap":{"gauravuj":85,"cyqjoseph":2}},{"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":"gauravuj"},"content":"import javafx.scene.text.Font;","lastModifiedDate":"2024-03-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"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":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":43,"author":{"gitId":"gauravuj"},"content":" // load fonts","lastModifiedDate":"2024-03-08"},{"lineNumber":44,"author":{"gitId":"gauravuj"},"content":" Font.loadFont(getClass().getResourceAsStream(\"/fonts/Hack/Hack-Regular.ttf\"), 14);","lastModifiedDate":"2024-03-08"},{"lineNumber":45,"author":{"gitId":"gauravuj"},"content":" Font.loadFont(getClass().getResourceAsStream(\"/fonts/Hack/Hack-Bold.ttf\"), 14);","lastModifiedDate":"2024-03-08"},{"lineNumber":46,"author":{"gitId":"gauravuj"},"content":" Font.loadFont(getClass().getResourceAsStream(\"/fonts/Hack/Hack-Italic.ttf\"), 14);","lastModifiedDate":"2024-03-08"},{"lineNumber":47,"author":{"gitId":"gauravuj"},"content":" Font.loadFont(getClass().getResourceAsStream(\"/fonts/Hack/Hack-BoldItalic.ttf\"), 14);","lastModifiedDate":"2024-03-08"},{"lineNumber":48,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":49,"author":{"gitId":"gauravuj"},"content":" Font.loadFont(getClass().getResourceAsStream(\"/fonts/Source Pro/SourceCodePro-Regular.ttf\"), 14);","lastModifiedDate":"2024-03-08"},{"lineNumber":50,"author":{"gitId":"gauravuj"},"content":" Font.loadFont(getClass().getResourceAsStream(\"/fonts/Source Pro/SourceCodePro-Medium.ttf\"), 14);","lastModifiedDate":"2024-03-08"},{"lineNumber":51,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-08-18"},{"lineNumber":53,"author":{"gitId":"-"},"content":" mainWindow \u003d new MainWindow(primaryStage, logic);","lastModifiedDate":"2018-12-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" mainWindow.show(); //This should be called before creating other UI parts","lastModifiedDate":"2016-08-18"},{"lineNumber":55,"author":{"gitId":"-"},"content":" mainWindow.fillInnerParts();","lastModifiedDate":"2016-08-18"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":" } catch (Throwable e) {","lastModifiedDate":"2016-08-18"},{"lineNumber":58,"author":{"gitId":"-"},"content":" logger.severe(StringUtil.getDetails(e));","lastModifiedDate":"2016-09-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" showFatalErrorDialogAndShutdown(\"Fatal error during initializing\", e);","lastModifiedDate":"2016-08-18"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","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":" private Image getImage(String imagePath) {","lastModifiedDate":"2016-08-18"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return new Image(MainApp.class.getResourceAsStream(imagePath));","lastModifiedDate":"2016-08-18"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":67,"author":{"gitId":"-"},"content":" void showAlertDialogAndWait(Alert.AlertType type, String title, String headerText, String contentText) {","lastModifiedDate":"2016-09-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":" showAlertDialogAndWait(mainWindow.getPrimaryStage(), type, title, headerText, contentText);","lastModifiedDate":"2016-08-18"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Shows an alert dialog on {@code owner} with the given parameters.","lastModifiedDate":"2017-08-16"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * This method only returns after the user has closed the alert dialog.","lastModifiedDate":"2017-08-16"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":75,"author":{"gitId":"-"},"content":" private static void showAlertDialogAndWait(Stage owner, AlertType type, String title, String headerText,","lastModifiedDate":"2016-09-21"},{"lineNumber":76,"author":{"gitId":"-"},"content":" String contentText) {","lastModifiedDate":"2016-08-18"},{"lineNumber":77,"author":{"gitId":"-"},"content":" final Alert alert \u003d new Alert(type);","lastModifiedDate":"2016-08-18"},{"lineNumber":78,"author":{"gitId":"gauravuj"},"content":" alert.getDialogPane().getStylesheets().add(\"view/styleSheets/DarkTheme.css\");","lastModifiedDate":"2024-03-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" alert.initOwner(owner);","lastModifiedDate":"2016-08-18"},{"lineNumber":80,"author":{"gitId":"-"},"content":" alert.setTitle(title);","lastModifiedDate":"2016-08-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" alert.setHeaderText(headerText);","lastModifiedDate":"2016-08-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":" alert.setContentText(contentText);","lastModifiedDate":"2016-08-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" alert.getDialogPane().setId(ALERT_DIALOG_PANE_FIELD_ID);","lastModifiedDate":"2016-10-12"},{"lineNumber":84,"author":{"gitId":"-"},"content":" alert.showAndWait();","lastModifiedDate":"2016-08-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * Shows an error alert dialog with {@code title} and error message, {@code e},","lastModifiedDate":"2017-08-16"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * and exits the application after the user has closed the alert dialog.","lastModifiedDate":"2017-08-16"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":91,"author":{"gitId":"-"},"content":" private void showFatalErrorDialogAndShutdown(String title, Throwable e) {","lastModifiedDate":"2016-09-21"},{"lineNumber":92,"author":{"gitId":"-"},"content":" logger.severe(title + \" \" + e.getMessage() + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-21"},{"lineNumber":93,"author":{"gitId":"-"},"content":" showAlertDialogAndWait(Alert.AlertType.ERROR, title, e.getMessage(), e.toString());","lastModifiedDate":"2016-08-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" Platform.exit();","lastModifiedDate":"2016-08-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" System.exit(1);","lastModifiedDate":"2016-08-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":98,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"gauravuj":11,"-":87}},{"path":"src/main/resources/view/BookingListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"gauravuj"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"gauravuj"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"gauravuj"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"gauravuj"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"gauravuj"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"gauravuj"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"gauravuj"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"gauravuj"},"content":"\u003c?import javafx.scene.layout.RowConstraints?\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"gauravuj"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"gauravuj"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/21\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"gauravuj"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"gauravuj"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"gauravuj"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"gauravuj"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"gauravuj"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"gauravuj"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"gauravuj"},"content":" \u003cInsets bottom\u003d\"5\" left\u003d\"15\" right\u003d\"5\" top\u003d\"5\" /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"gauravuj"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"gauravuj"},"content":" \u003cHBox alignment\u003d\"CENTER_LEFT\" spacing\u003d\"2\"\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"gauravuj"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"gauravuj"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"gauravuj"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"gauravuj"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"gauravuj"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"gauravuj"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"gauravuj"},"content":" \u003cLabel fx:id\u003d\"description\" styleClass\u003d\"cell_big_label\" text\u003d\"\\$description\" /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"gauravuj"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"gauravuj"},"content":" \u003cLabel fx:id\u003d\"startTime\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$startTime\" /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"gauravuj"},"content":" \u003cLabel fx:id\u003d\"endTime\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$endTime\" /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"gauravuj"},"content":" \u003cGridPane.margin\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"gauravuj"},"content":" \u003cInsets bottom\u003d\"4.0\" left\u003d\"4.0\" right\u003d\"4.0\" top\u003d\"4.0\" /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"gauravuj"},"content":" \u003c/GridPane.margin\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"gauravuj"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"gauravuj"},"content":" \u003crowConstraints\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"gauravuj"},"content":" \u003cRowConstraints /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"gauravuj"},"content":" \u003c/rowConstraints\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"gauravuj"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"gauravuj"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"gauravuj":40}},{"path":"src/main/resources/view/BookingListPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"gauravuj"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"gauravuj"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"gauravuj"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"gauravuj"},"content":"\u003cVBox alignment\u003d\"TOP_RIGHT\" xmlns\u003d\"http://javafx.com/javafx/21\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"gauravuj"},"content":" \u003cListView fx:id\u003d\"bookingListView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"gauravuj"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"gauravuj":8}},{"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":"gauravuj"},"content":"\u003c?import javafx.scene.text.TextFlow?\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003cStackPane styleClass\u003d\"stack-pane\" 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":" \u003cTextField fx:id\u003d\"commandTextField\" onAction\u003d\"#handleCommandEntered\" promptText\u003d\"Enter command here...\" /\u003e","lastModifiedDate":"2019-01-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c/StackPane\u003e","lastModifiedDate":"2017-06-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"}],"authorContributionMap":{"gauravuj":1,"-":9}},{"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":"gauravuj"},"content":" \u003cURL value\u003d\"@styleSheets/HelpWindow.css\" /\u003e","lastModifiedDate":"2024-03-08"},{"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":"jerremyng"},"content":" \u003cButton fx:id\u003d\"copyButton\" mnemonicParsing\u003d\"false\" onAction\u003d\"#copyUrl\" text\u003d\"Copy\"\u003e","lastModifiedDate":"2024-03-18"},{"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":{"gauravuj":1,"jerremyng":1,"-":42}},{"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":"gauravuj"},"content":"\u003c?import javafx.scene.control.Button?\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"gauravuj"},"content":"\u003c?import javafx.scene.control.ButtonBar?\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":12,"author":{"gitId":"gauravuj"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":15,"author":{"gitId":"gauravuj"},"content":"\u003c?import javafx.stage.Stage?\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":17,"author":{"gitId":"gauravuj"},"content":"\u003cfx:root minHeight\u003d\"700\" minWidth\u003d\"850\" onCloseRequest\u003d\"#handleExit\" title\u003d\"Dook\" type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/21\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-03-18"},{"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":"gauravuj"},"content":" \u003cURL value\u003d\"@styleSheets/DarkTheme.css\" /\u003e","lastModifiedDate":"2024-03-08"},{"lineNumber":25,"author":{"gitId":"gauravuj"},"content":" \u003cURL value\u003d\"@styleSheets/Extensions.css\" /\u003e","lastModifiedDate":"2024-03-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":"ChrysanthemumT"},"content":" \u003cVBox styleClass \u003d \"BG\"\u003e","lastModifiedDate":"2024-03-21"},{"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":"gauravuj"},"content":" \u003cHBox VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"gauravuj"},"content":" \u003cVBox fx:id\u003d\"personList\" minWidth\u003d\"350\" prefHeight\u003d\"600\" prefWidth\u003d\"400\" styleClass\u003d\"pane-without-border\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"gauravuj"},"content":" \u003cHBox spacing\u003d\"10\" alignment\u003d\"CENTER\"\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"gauravuj"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"gauravuj"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\"/\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"gauravuj"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"gauravuj"},"content":" \u003cButton styleClass\u003d\"hbox-button\" mnemonicParsing\u003d\"false\" text\u003d\"All\" HBox.hgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"gauravuj"},"content":" \u003cButton styleClass\u003d\"hbox-button\" mnemonicParsing\u003d\"false\" text\u003d\"Profs\" HBox.hgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"gauravuj"},"content":" \u003cButton styleClass\u003d\"hbox-button\" mnemonicParsing\u003d\"false\" text\u003d\"TAs\" HBox.hgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"gauravuj"},"content":" \u003cButton styleClass\u003d\"hbox-button\" mnemonicParsing\u003d\"false\" text\u003d\"Others\" HBox.hgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"gauravuj"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":50,"author":{"gitId":"gauravuj"},"content":" \u003cInsets bottom\u003d\"10\" left\u003d\"10\" right\u003d\"10\" top\u003d\"10\" /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":52,"author":{"gitId":"gauravuj"},"content":" \u003cStackPane fx:id\u003d\"personListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-03-08"},{"lineNumber":53,"author":{"gitId":"gauravuj"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"gauravuj"},"content":" \u003cInsets bottom\u003d\"5.0\" left\u003d\"5.0\" right\u003d\"5.0\" top\u003d\"5.0\" /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"gauravuj"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"gauravuj"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-08"},{"lineNumber":57,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"gauravuj"},"content":" \u003cVBox HBox.hgrow\u003d\"ALWAYS\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"gauravuj"},"content":" \u003cVBox fx:id\u003d\"bookingList\" prefHeight\u003d\"-Infinity\" styleClass\u003d\"pane-without-border\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":61,"author":{"gitId":"gauravuj"},"content":" \u003cInsets bottom\u003d\"5\" left\u003d\"10\" right\u003d\"10\" top\u003d\"5\" /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":63,"author":{"gitId":"gauravuj"},"content":" \u003cStackPane fx:id\u003d\"bookingListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"gauravuj"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"gauravuj"},"content":" \u003cInsets bottom\u003d\"5.0\" left\u003d\"5.0\" right\u003d\"5.0\" top\u003d\"5.0\" /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"gauravuj"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"gauravuj"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":69,"author":{"gitId":"gauravuj"},"content":" \u003cStackPane fx:id\u003d\"resultDisplayPlaceholder\" maxHeight\u003d\"200\" minHeight\u003d\"200\" prefHeight\u003d\"200\" styleClass\u003d\"pane-without-border\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"gauravuj"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"gauravuj"},"content":" \u003cInsets bottom\u003d\"5\" left\u003d\"10\" right\u003d\"10\" top\u003d\"5\" /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"gauravuj"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"gauravuj"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"gauravuj"},"content":" \u003cInsets bottom\u003d\"5.0\" top\u003d\"5.0\" /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"gauravuj"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"gauravuj"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"gauravuj"},"content":" \u003cStackPane fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-without-border\"\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":79,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":80,"author":{"gitId":"gauravuj"},"content":" \u003cInsets bottom\u003d\"5\" left\u003d\"10\" top\u003d\"5\" /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":82,"author":{"gitId":"gauravuj"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"gauravuj"},"content":" \u003cInsets bottom\u003d\"5.0\" top\u003d\"5.0\" /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"gauravuj"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"gauravuj"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2024-03-08"},{"lineNumber":86,"author":{"gitId":"gauravuj"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"gauravuj"},"content":" \u003cInsets bottom\u003d\"5.0\" left\u003d\"5.0\" right\u003d\"10.0\" top\u003d\"5.0\" /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"gauravuj"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"gauravuj"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-10"},{"lineNumber":90,"author":{"gitId":"gauravuj"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-10"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":92,"author":{"gitId":"gauravuj"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" /\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":93,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":94,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":95,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":96,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29"}],"authorContributionMap":{"gauravuj":54,"ChrysanthemumT":1,"-":41}},{"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":"ChrysanthemumT"},"content":"\u003c?import javafx.scene.image.ImageView?\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":"\u003c?import javafx.scene.layout.AnchorPane?\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":12,"author":{"gitId":"gauravuj"},"content":"\u003c?import javafx.scene.layout.RowConstraints?\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":15,"author":{"gitId":"ChrysanthemumT"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/21\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"gauravuj"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" style\u003d\"-fx-background-color: transparent;\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"gauravuj"},"content":" \u003cInsets bottom\u003d\"5\" left\u003d\"15\" right\u003d\"5\" top\u003d\"5\" /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"gauravuj"},"content":" \u003cHBox alignment\u003d\"CENTER_LEFT\" spacing\u003d\"2\"\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":31,"author":{"gitId":"gauravuj"},"content":" \u003cLabel fx:id\u003d\"name\" styleClass\u003d\"cell_big_label\" text\u003d\"\\$first\" /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03"},{"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":"gauravuj"},"content":" \u003cFlowPane fx:id\u003d\"tags\"\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"gauravuj"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"gauravuj"},"content":" \u003cInsets top\u003d\"20.0\" /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"gauravuj"},"content":" \u003c/VBox.margin\u003e\u003c/FlowPane\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"gauravuj"},"content":" \u003cGridPane.margin\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"gauravuj"},"content":" \u003cInsets /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"gauravuj"},"content":" \u003c/GridPane.margin\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"gauravuj"},"content":" \u003copaqueInsets\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"gauravuj"},"content":" \u003cInsets /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"gauravuj"},"content":" \u003c/opaqueInsets\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"gauravuj"},"content":" \u003crowConstraints\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"gauravuj"},"content":" \u003cRowConstraints /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"gauravuj"},"content":" \u003c/rowConstraints\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"gauravuj"},"content":" \u003cImageView fx:id\u003d\"displayPicture\" fitHeight\u003d\"90.0\" fitWidth\u003d\"90.0\" pickOnBounds\u003d\"true\" preserveRatio\u003d\"true\"","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"gauravuj"},"content":" AnchorPane.leftAnchor\u003d\"270.0\" AnchorPane.rightAnchor\u003d\"0.0\" AnchorPane.topAnchor\u003d\"60.0\" /\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"gauravuj":20,"ChrysanthemumT":3,"-":30}},{"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":"gauravuj"},"content":"\u003cStackPane fx:id\u003d\"placeHolder\" xmlns\u003d\"http://javafx.com/javafx/17\"","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2016-12-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003cTextArea fx:id\u003d\"resultDisplay\" editable\u003d\"false\" styleClass\u003d\"result-display\"/\u003e","lastModifiedDate":"2017-06-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c/StackPane\u003e","lastModifiedDate":"2017-06-22"}],"authorContributionMap":{"gauravuj":1,"-":8}},{"path":"src/main/resources/view/TerminalWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"gauravuj"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":3,"author":{"gitId":"gauravuj"},"content":"\u003c?import javafx.scene.control.TextArea?\u003e","lastModifiedDate":"2024-03-10"},{"lineNumber":4,"author":{"gitId":"gauravuj"},"content":"\u003c?import javafx.scene.control.TextField?\u003e","lastModifiedDate":"2024-03-10"},{"lineNumber":5,"author":{"gitId":"gauravuj"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-03-10"},{"lineNumber":6,"author":{"gitId":"gauravuj"},"content":"\u003c?import javafx.stage.Stage?\u003e","lastModifiedDate":"2024-03-10"},{"lineNumber":7,"author":{"gitId":"gauravuj"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"gauravuj"},"content":"\u003cfx:root type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\" title\u003d\"Terminal\" fx:controller\u003d\"seedu.address.ui.TerminalWindow\"\u003e","lastModifiedDate":"2024-03-10"},{"lineNumber":10,"author":{"gitId":"gauravuj"},"content":" \u003cscene\u003e","lastModifiedDate":"2024-03-10"},{"lineNumber":11,"author":{"gitId":"gauravuj"},"content":" \u003cScene\u003e","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"gauravuj"},"content":" \u003cVBox spacing\u003d\"10\" padding\u003d\"10\"\u003e","lastModifiedDate":"2024-03-10"},{"lineNumber":13,"author":{"gitId":"gauravuj"},"content":" \u003cTextArea fx:id\u003d\"outputArea\" editable\u003d\"false\" wrapText\u003d\"true\" /\u003e","lastModifiedDate":"2024-03-10"},{"lineNumber":14,"author":{"gitId":"gauravuj"},"content":" \u003cTextField fx:id\u003d\"inputField\" promptText\u003d\"Type your command here and press Enter\" /\u003e","lastModifiedDate":"2024-03-10"},{"lineNumber":15,"author":{"gitId":"gauravuj"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-10"},{"lineNumber":16,"author":{"gitId":"gauravuj"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2024-03-10"},{"lineNumber":17,"author":{"gitId":"gauravuj"},"content":" \u003c/scene\u003e","lastModifiedDate":"2024-03-10"},{"lineNumber":18,"author":{"gitId":"gauravuj"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2024-03-10"}],"authorContributionMap":{"gauravuj":18}},{"path":"src/main/resources/view/styleSheets/DarkTheme.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".background {","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"gauravuj"},"content":" -fx-background-color: derive(#141421, 20%);","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"gauravuj"},"content":" background-color: #141421; /* Used in the default.html file */","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":".BG {","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-background-color: black;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":".label {","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"gauravuj"},"content":" -fx-font-family: \"Lato\";","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":" -fx-text-fill: #555555;","lastModifiedDate":"2016-08-15"},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":".label-bright {","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"gauravuj"},"content":" -fx-font-family: \"Lato\";","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":".label-header {","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"gauravuj"},"content":" -fx-font-family: \"Lato\";","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","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":".text-field {","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"gauravuj"},"content":" -fx-font-family: \"Lato\";","lastModifiedDate":"2024-03-11"},{"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 {","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 1;","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":"-"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" -fx-min-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" -fx-max-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":".table-view {","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"gauravuj"},"content":" -fx-base: #141421;","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"gauravuj"},"content":" -fx-control-inner-background: #141421;","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"gauravuj"},"content":" -fx-background-color: #141421;","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"-"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" -fx-padding: 5;","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-background {","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" -fx-size: 35;","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" -fx-border-color:","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" derive(-fx-base, 80%)","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":".table-view .column-header .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":" -fx-alignment: center-left;","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":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2016-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","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":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2016-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":85,"author":{"gitId":"gauravuj"},"content":" -fx-border-color: transparent;","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":".split-pane {","lastModifiedDate":"2016-08-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":92,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":94,"author":{"gitId":"gauravuj"},"content":"/* Person List Panel UI */","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":".list-view {","lastModifiedDate":"2017-03-02"},{"lineNumber":96,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":97,"author":{"gitId":"-"},"content":" -fx-padding: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":98,"author":{"gitId":"gauravuj"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":101,"author":{"gitId":"-"},"content":".list-cell {","lastModifiedDate":"2016-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":104,"author":{"gitId":"gauravuj"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-18"},{"lineNumber":105,"author":{"gitId":"gauravuj"},"content":" -fx-background-radius: 12px;","lastModifiedDate":"2024-03-18"},{"lineNumber":106,"author":{"gitId":"gauravuj"},"content":" -fx-padding: 2 2 2 2;","lastModifiedDate":"2024-03-12"},{"lineNumber":107,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":".list-cell:filled:even {","lastModifiedDate":"2017-03-02"},{"lineNumber":110,"author":{"gitId":"gauravuj"},"content":" -fx-background-color: rgba(25,27,30,255);","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":113,"author":{"gitId":"-"},"content":".list-cell:filled:odd {","lastModifiedDate":"2017-03-02"},{"lineNumber":114,"author":{"gitId":"gauravuj"},"content":" -fx-background-color: rgba(25, 27, 30, 0.8);","lastModifiedDate":"2024-03-18"},{"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 {","lastModifiedDate":"2017-03-02"},{"lineNumber":118,"author":{"gitId":"gauravuj"},"content":" -fx-background-color: #0e66dc;","lastModifiedDate":"2024-03-18"},{"lineNumber":119,"author":{"gitId":"gauravuj"},"content":" -fx-background-radius: 12px;","lastModifiedDate":"2024-03-18"},{"lineNumber":120,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":122,"author":{"gitId":"-"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2017-03-02"},{"lineNumber":123,"author":{"gitId":"gauravuj"},"content":" -fx-border-color: #09b5f3;","lastModifiedDate":"2024-03-18"},{"lineNumber":124,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":125,"author":{"gitId":"gauravuj"},"content":" -fx-border-radius: 12px;","lastModifiedDate":"2024-03-18"},{"lineNumber":126,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":128,"author":{"gitId":"gauravuj"},"content":".list-cell:filled:selected #tags .label {","lastModifiedDate":"2024-03-19"},{"lineNumber":129,"author":{"gitId":"gauravuj"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-19"},{"lineNumber":130,"author":{"gitId":"gauravuj"},"content":" -fx-background-color: white;","lastModifiedDate":"2024-03-19"},{"lineNumber":131,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-03-19"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":133,"author":{"gitId":"gauravuj"},"content":"/* Person Card UI */","lastModifiedDate":"2024-03-18"},{"lineNumber":134,"author":{"gitId":"-"},"content":".list-cell .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":136,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":".cell_big_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":139,"author":{"gitId":"gauravuj"},"content":" -fx-font-family: \"Futura\";","lastModifiedDate":"2024-03-18"},{"lineNumber":140,"author":{"gitId":"gauravuj"},"content":" -fx-font-size: 20px;","lastModifiedDate":"2024-03-18"},{"lineNumber":141,"author":{"gitId":"gauravuj"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2024-03-18"},{"lineNumber":142,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":".cell_small_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":146,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2022-01-13"},{"lineNumber":147,"author":{"gitId":"-"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2017-03-02"},{"lineNumber":148,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":149,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":151,"author":{"gitId":"-"},"content":".stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":152,"author":{"gitId":"gauravuj"},"content":" -fx-background-color: #0c0c0c;","lastModifiedDate":"2024-03-18"},{"lineNumber":153,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-03-12"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":155,"author":{"gitId":"gauravuj"},"content":".pane-without-border {","lastModifiedDate":"2024-03-12"},{"lineNumber":156,"author":{"gitId":"gauravuj"},"content":" -fx-background-color: #0B0B0B;","lastModifiedDate":"2024-03-12"},{"lineNumber":157,"author":{"gitId":"gauravuj"},"content":" -fx-border-color: #191919;","lastModifiedDate":"2024-03-12"},{"lineNumber":158,"author":{"gitId":"gauravuj"},"content":" -fx-border-width: 2px;","lastModifiedDate":"2024-03-18"},{"lineNumber":159,"author":{"gitId":"gauravuj"},"content":" -fx-border-radius: 12px;","lastModifiedDate":"2024-03-12"},{"lineNumber":160,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":162,"author":{"gitId":"gauravuj"},"content":"/* Result Box Display */","lastModifiedDate":"2024-03-18"},{"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":"gauravuj"},"content":" -fx-font-family: \"Hack\";","lastModifiedDate":"2024-03-12"},{"lineNumber":166,"author":{"gitId":"gauravuj"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2024-03-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"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":"gauravuj"},"content":"/* Status Bar UI */","lastModifiedDate":"2024-03-18"},{"lineNumber":175,"author":{"gitId":"gauravuj"},"content":".status-bar {","lastModifiedDate":"2024-03-18"},{"lineNumber":176,"author":{"gitId":"gauravuj"},"content":" -fx-background-color: #1a1a1a;","lastModifiedDate":"2024-03-18"},{"lineNumber":177,"author":{"gitId":"gauravuj"},"content":"}","lastModifiedDate":"2024-03-18"},{"lineNumber":178,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":179,"author":{"gitId":"-"},"content":".status-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":180,"author":{"gitId":"gauravuj"},"content":" -fx-font-family: \"Avenir\";","lastModifiedDate":"2024-03-18"},{"lineNumber":181,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":182,"author":{"gitId":"-"},"content":" -fx-padding: 4px;","lastModifiedDate":"2018-12-08"},{"lineNumber":183,"author":{"gitId":"-"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2018-12-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 {","lastModifiedDate":"2016-08-08"},{"lineNumber":187,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":188,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":189,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":190,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":192,"author":{"gitId":"-"},"content":".status-bar-with-border .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":193,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","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 {","lastModifiedDate":"2016-08-08"},{"lineNumber":197,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":198,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":199,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":200,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":202,"author":{"gitId":"-"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":203,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":204,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":206,"author":{"gitId":"-"},"content":".context-menu {","lastModifiedDate":"2016-08-08"},{"lineNumber":207,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":208,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":210,"author":{"gitId":"-"},"content":".context-menu .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":211,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","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":".menu-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":215,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":216,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":218,"author":{"gitId":"-"},"content":".menu-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":219,"author":{"gitId":"-"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":220,"author":{"gitId":"gauravuj"},"content":" -fx-font-family: \"Avenir\";","lastModifiedDate":"2024-03-18"},{"lineNumber":221,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":222,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","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":".menu .left-container {","lastModifiedDate":"2016-08-08"},{"lineNumber":226,"author":{"gitId":"-"},"content":" -fx-background-color: black;","lastModifiedDate":"2016-08-08"},{"lineNumber":227,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":229,"author":{"gitId":"-"},"content":"/*","lastModifiedDate":"2016-08-08"},{"lineNumber":230,"author":{"gitId":"-"},"content":" * Metro style Push Button","lastModifiedDate":"2016-08-08"},{"lineNumber":231,"author":{"gitId":"-"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2016-08-08"},{"lineNumber":232,"author":{"gitId":"-"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2016-08-08"},{"lineNumber":233,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":234,"author":{"gitId":"-"},"content":".button {","lastModifiedDate":"2016-08-08"},{"lineNumber":235,"author":{"gitId":"-"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2016-08-08"},{"lineNumber":236,"author":{"gitId":"-"},"content":" -fx-border-color: #e2e2e2;","lastModifiedDate":"2016-08-08"},{"lineNumber":237,"author":{"gitId":"-"},"content":" -fx-border-width: 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":238,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":239,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":240,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2022-01-13"},{"lineNumber":241,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":242,"author":{"gitId":"-"},"content":" -fx-text-fill: #d8d8d8;","lastModifiedDate":"2016-08-08"},{"lineNumber":243,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","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":".button:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":247,"author":{"gitId":"-"},"content":" -fx-background-color: #3a3a3a;","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:pressed, .button:default:hover:pressed {","lastModifiedDate":"2016-08-08"},{"lineNumber":251,"author":{"gitId":"-"},"content":" -fx-background-color: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":252,"author":{"gitId":"-"},"content":" -fx-text-fill: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":253,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":255,"author":{"gitId":"-"},"content":".button:focused {","lastModifiedDate":"2016-08-08"},{"lineNumber":256,"author":{"gitId":"-"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2016-08-08"},{"lineNumber":257,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":258,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08"},{"lineNumber":259,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":260,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","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:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08"},{"lineNumber":264,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08"},{"lineNumber":265,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":266,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","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 {","lastModifiedDate":"2016-08-08"},{"lineNumber":270,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":271,"author":{"gitId":"-"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2016-08-08"},{"lineNumber":272,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":274,"author":{"gitId":"-"},"content":".button:default:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":275,"author":{"gitId":"-"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2016-08-08"},{"lineNumber":276,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":278,"author":{"gitId":"gauravuj"},"content":"/* Button style */","lastModifiedDate":"2024-03-19"},{"lineNumber":279,"author":{"gitId":"gauravuj"},"content":".hbox-button {","lastModifiedDate":"2024-03-19"},{"lineNumber":280,"author":{"gitId":"gauravuj"},"content":" /* Removes borders */","lastModifiedDate":"2024-03-19"},{"lineNumber":281,"author":{"gitId":"gauravuj"},"content":" -fx-background-radius: 15px;","lastModifiedDate":"2024-03-19"},{"lineNumber":282,"author":{"gitId":"gauravuj"},"content":" -fx-padding: 5 18 5 18;","lastModifiedDate":"2024-03-19"},{"lineNumber":283,"author":{"gitId":"gauravuj"},"content":" -fx-background-color: transparent; /* Default background color */","lastModifiedDate":"2024-03-19"},{"lineNumber":284,"author":{"gitId":"gauravuj"},"content":" -fx-text-fill: #fff; /* Text color */","lastModifiedDate":"2024-03-19"},{"lineNumber":285,"author":{"gitId":"gauravuj"},"content":" -fx-font-family: Inter;","lastModifiedDate":"2024-03-19"},{"lineNumber":286,"author":{"gitId":"gauravuj"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2024-03-19"},{"lineNumber":287,"author":{"gitId":"gauravuj"},"content":" -fx-border-color: transparent;","lastModifiedDate":"2024-03-19"},{"lineNumber":288,"author":{"gitId":"gauravuj"},"content":" -fx-border-radius: 15px;","lastModifiedDate":"2024-03-19"},{"lineNumber":289,"author":{"gitId":"gauravuj"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2024-03-19"},{"lineNumber":290,"author":{"gitId":"gauravuj"},"content":"}","lastModifiedDate":"2024-03-19"},{"lineNumber":291,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":292,"author":{"gitId":"gauravuj"},"content":"/* Button hover effect */","lastModifiedDate":"2024-03-19"},{"lineNumber":293,"author":{"gitId":"gauravuj"},"content":".hbox-button:hover {","lastModifiedDate":"2024-03-19"},{"lineNumber":294,"author":{"gitId":"gauravuj"},"content":" -fx-border-width: 1;","lastModifiedDate":"2024-03-19"},{"lineNumber":295,"author":{"gitId":"gauravuj"},"content":" -fx-border-color: #555;","lastModifiedDate":"2024-03-19"},{"lineNumber":296,"author":{"gitId":"gauravuj"},"content":" -fx-border-radius: 15px;","lastModifiedDate":"2024-03-19"},{"lineNumber":297,"author":{"gitId":"gauravuj"},"content":" -fx-background-color: #555; /* Background color on hover */","lastModifiedDate":"2024-03-19"},{"lineNumber":298,"author":{"gitId":"gauravuj"},"content":"}","lastModifiedDate":"2024-03-19"},{"lineNumber":299,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":300,"author":{"gitId":"gauravuj"},"content":".hbox-button:selected {","lastModifiedDate":"2024-03-19"},{"lineNumber":301,"author":{"gitId":"gauravuj"},"content":" -fx-background-color: #f6870c;","lastModifiedDate":"2024-03-19"},{"lineNumber":302,"author":{"gitId":"gauravuj"},"content":"}","lastModifiedDate":"2024-03-19"},{"lineNumber":303,"author":{"gitId":"gauravuj"},"content":"/* Active button style */","lastModifiedDate":"2024-03-19"},{"lineNumber":304,"author":{"gitId":"gauravuj"},"content":".hbox-button.active {","lastModifiedDate":"2024-03-19"},{"lineNumber":305,"author":{"gitId":"gauravuj"},"content":" -fx-background-color: #f6870c; /* Background color for the active button */","lastModifiedDate":"2024-03-19"},{"lineNumber":306,"author":{"gitId":"gauravuj"},"content":" -fx-font-weight: bold; /* Optional: makes the text of the active button bold */","lastModifiedDate":"2024-03-19"},{"lineNumber":307,"author":{"gitId":"gauravuj"},"content":"}","lastModifiedDate":"2024-03-19"},{"lineNumber":308,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":309,"author":{"gitId":"gauravuj"},"content":"/* Ensures the text is always fully visible */","lastModifiedDate":"2024-03-19"},{"lineNumber":310,"author":{"gitId":"gauravuj"},"content":".hbox-button .text {","lastModifiedDate":"2024-03-19"},{"lineNumber":311,"author":{"gitId":"gauravuj"},"content":" -fx-text-overrun: clip; /* Prevents text from truncating */","lastModifiedDate":"2024-03-19"},{"lineNumber":312,"author":{"gitId":"gauravuj"},"content":"}","lastModifiedDate":"2024-03-19"},{"lineNumber":313,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":314,"author":{"gitId":"-"},"content":".dialog-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":315,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":316,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":317,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":318,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2016-08-08"},{"lineNumber":319,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":320,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":321,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":322,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2016-08-08"},{"lineNumber":323,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08"},{"lineNumber":324,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2016-08-08"},{"lineNumber":325,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":326,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":327,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":328,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2016-08-08"},{"lineNumber":329,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":330,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":331,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":332,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2016-08-08"},{"lineNumber":333,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08"},{"lineNumber":334,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08"},{"lineNumber":335,"author":{"gitId":"-"},"content":" -fx-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":336,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":337,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":338,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":339,"author":{"gitId":"gauravuj"},"content":"/* Scroll Bar UI */","lastModifiedDate":"2024-03-18"},{"lineNumber":340,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02"},{"lineNumber":341,"author":{"gitId":"gauravuj"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-18"},{"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":"gauravuj"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-18"},{"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":"gauravuj"},"content":" -fx-padding: 0;","lastModifiedDate":"2024-03-18"},{"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":"gauravuj"},"content":" -fx-border-width: 1;","lastModifiedDate":"2024-03-18"},{"lineNumber":368,"author":{"gitId":"gauravuj"},"content":" -fx-border-color: #3f3f3f;","lastModifiedDate":"2024-03-18"},{"lineNumber":369,"author":{"gitId":"gauravuj"},"content":" -fx-border-radius: 12px;","lastModifiedDate":"2024-03-18"},{"lineNumber":370,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":371,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":372,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08"},{"lineNumber":373,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08"},{"lineNumber":374,"author":{"gitId":"gauravuj"},"content":" -fx-text-fill: #ff1723;","lastModifiedDate":"2024-03-11"},{"lineNumber":375,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":376,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":377,"author":{"gitId":"-"},"content":"#commandTextField {","lastModifiedDate":"2017-03-02"},{"lineNumber":378,"author":{"gitId":"gauravuj"},"content":" -fx-background-color: #0B0B0B;","lastModifiedDate":"2024-03-12"},{"lineNumber":379,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":380,"author":{"gitId":"gauravuj"},"content":" -fx-border-color: #0B0B0B;","lastModifiedDate":"2024-03-12"},{"lineNumber":381,"author":{"gitId":"-"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":382,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":383,"author":{"gitId":"gauravuj"},"content":" -fx-font-family: \"Hack\";","lastModifiedDate":"2024-03-08"},{"lineNumber":384,"author":{"gitId":"gauravuj"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2024-03-08"},{"lineNumber":385,"author":{"gitId":"gauravuj"},"content":" -fx-font-weight: normal;","lastModifiedDate":"2024-03-18"},{"lineNumber":386,"author":{"gitId":"gauravuj"},"content":" -fx-font-style: normal;","lastModifiedDate":"2024-03-12"},{"lineNumber":387,"author":{"gitId":"gauravuj"},"content":" -fx-text-fill: #e3e3e3;","lastModifiedDate":"2024-03-18"},{"lineNumber":388,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":389,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":390,"author":{"gitId":"-"},"content":"#filterField, #personListPanel, #personWebpage {","lastModifiedDate":"2016-08-15"},{"lineNumber":391,"author":{"gitId":"-"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2016-08-15"},{"lineNumber":392,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":393,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":394,"author":{"gitId":"-"},"content":"#resultDisplay .content {","lastModifiedDate":"2017-03-02"},{"lineNumber":395,"author":{"gitId":"gauravuj"},"content":" -fx-background-color: transparent, #0B0B0B, transparent, #0B0B0B;","lastModifiedDate":"2024-03-12"},{"lineNumber":396,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":397,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":398,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":399,"author":{"gitId":"gauravuj"},"content":"/* Tags UI */","lastModifiedDate":"2024-03-18"},{"lineNumber":400,"author":{"gitId":"-"},"content":"#tags {","lastModifiedDate":"2016-12-18"},{"lineNumber":401,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2016-12-18"},{"lineNumber":402,"author":{"gitId":"-"},"content":" -fx-vgap: 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":403,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":404,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":405,"author":{"gitId":"-"},"content":"#tags .label {","lastModifiedDate":"2016-12-18"},{"lineNumber":406,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-12-18"},{"lineNumber":407,"author":{"gitId":"gauravuj"},"content":" -fx-background-color: #186ADD;","lastModifiedDate":"2024-03-11"},{"lineNumber":408,"author":{"gitId":"gauravuj"},"content":" -fx-padding: 5 12 5 12;","lastModifiedDate":"2024-03-19"},{"lineNumber":409,"author":{"gitId":"gauravuj"},"content":" -fx-border-radius: 15;","lastModifiedDate":"2024-03-11"},{"lineNumber":410,"author":{"gitId":"gauravuj"},"content":" -fx-background-radius: 15;","lastModifiedDate":"2024-03-11"},{"lineNumber":411,"author":{"gitId":"gauravuj"},"content":" -fx-font-size: 12;","lastModifiedDate":"2024-03-11"},{"lineNumber":412,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"}],"authorContributionMap":{"gauravuj":102,"ChrysanthemumT":2,"-":308}},{"path":"src/main/resources/view/styleSheets/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":"gauravuj"},"content":" -fx-text-fill: rgba(234, 46, 10, 0.92) !important; /* The error class should always override the default text-fill style */","lastModifiedDate":"2024-03-12"},{"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"}],"authorContributionMap":{"gauravuj":1,"-":19}},{"path":"src/main/resources/view/styleSheets/LightTheme.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":".background {","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-background-color: derive(#f2f2f2, 20%);","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":" background-color: #f2f2f2; /* Used in the default.html file */","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":".BG {","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-background-color: white;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":".label {","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-font-family: \"Lato\";","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-text-fill: #555555;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"ChrysanthemumT"},"content":".label-bright {","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-font-family: \"Lato\";","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-opacity: 1;","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"ChrysanthemumT"},"content":".label-header {","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-font-family: \"Lato\";","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-opacity: 1;","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"ChrysanthemumT"},"content":".text-field {","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-font-family: \"Lato\";","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"ChrysanthemumT"},"content":".tab-pane {","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"ChrysanthemumT"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-min-height: 0;","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-max-height: 0;","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"ChrysanthemumT"},"content":".table-view {","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-base: #f2f2f2;","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-control-inner-background: #f2f2f2;","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-background-color: #f2f2f2;","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-padding: 5;","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"ChrysanthemumT"},"content":".table-view .column-header-background {","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"ChrysanthemumT"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-size: 35;","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-border-color:","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"ChrysanthemumT"},"content":" transparent","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"ChrysanthemumT"},"content":" transparent","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"ChrysanthemumT"},"content":" derive(-fx-base, 80%)","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"ChrysanthemumT"},"content":" transparent;","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"ChrysanthemumT"},"content":".table-view .column-header .label {","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-opacity: 1;","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"ChrysanthemumT"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"ChrysanthemumT"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-background-color: derive(#f2f2f2, 20%);","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-border-color: transparent;","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"ChrysanthemumT"},"content":".split-pane {","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-border-width: 1;","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-background-color: derive(#f2f2f2, 20%);","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"ChrysanthemumT"},"content":"/* Person List Panel UI */","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"ChrysanthemumT"},"content":".list-view {","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-padding: 0;","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-20"},{"lineNumber":99,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":101,"author":{"gitId":"ChrysanthemumT"},"content":".list-cell {","lastModifiedDate":"2024-03-20"},{"lineNumber":102,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2024-03-20"},{"lineNumber":103,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-background-radius: 12px;","lastModifiedDate":"2024-03-20"},{"lineNumber":106,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-padding: 2 2 2 2;","lastModifiedDate":"2024-03-20"},{"lineNumber":107,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":108,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":109,"author":{"gitId":"ChrysanthemumT"},"content":".list-cell:filled:even {","lastModifiedDate":"2024-03-20"},{"lineNumber":110,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-background-color: rgba(255, 255, 255, 1);","lastModifiedDate":"2024-03-20"},{"lineNumber":111,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":112,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":113,"author":{"gitId":"ChrysanthemumT"},"content":".list-cell:filled:odd {","lastModifiedDate":"2024-03-20"},{"lineNumber":114,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-background-color: rgba(255, 255, 255, 0.8);","lastModifiedDate":"2024-03-20"},{"lineNumber":115,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":116,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":117,"author":{"gitId":"ChrysanthemumT"},"content":".list-cell:filled:selected {","lastModifiedDate":"2024-03-20"},{"lineNumber":118,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-background-color: #0e66dc;","lastModifiedDate":"2024-03-20"},{"lineNumber":119,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-background-radius: 12px;","lastModifiedDate":"2024-03-20"},{"lineNumber":120,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":121,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":122,"author":{"gitId":"ChrysanthemumT"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2024-03-20"},{"lineNumber":123,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-border-color: #09b5f3;","lastModifiedDate":"2024-03-20"},{"lineNumber":124,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-border-width: 1;","lastModifiedDate":"2024-03-20"},{"lineNumber":125,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-border-radius: 12px;","lastModifiedDate":"2024-03-20"},{"lineNumber":126,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":127,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":128,"author":{"gitId":"ChrysanthemumT"},"content":"/* Person Card UI */","lastModifiedDate":"2024-03-20"},{"lineNumber":129,"author":{"gitId":"ChrysanthemumT"},"content":".list-cell .label {","lastModifiedDate":"2024-03-20"},{"lineNumber":130,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-20"},{"lineNumber":131,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":132,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":133,"author":{"gitId":"ChrysanthemumT"},"content":".cell_big_label {","lastModifiedDate":"2024-03-20"},{"lineNumber":134,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-font-family: \"Futura\";","lastModifiedDate":"2024-03-20"},{"lineNumber":135,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-font-size: 20px;","lastModifiedDate":"2024-03-20"},{"lineNumber":136,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2024-03-20"},{"lineNumber":137,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2024-03-20"},{"lineNumber":138,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":139,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":140,"author":{"gitId":"ChrysanthemumT"},"content":".cell_small_label {","lastModifiedDate":"2024-03-20"},{"lineNumber":141,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2024-03-20"},{"lineNumber":142,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2024-03-20"},{"lineNumber":143,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2024-03-20"},{"lineNumber":144,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":145,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":146,"author":{"gitId":"ChrysanthemumT"},"content":".stack-pane {","lastModifiedDate":"2024-03-20"},{"lineNumber":147,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-background-color: #ffffff;","lastModifiedDate":"2024-03-20"},{"lineNumber":148,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":149,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":150,"author":{"gitId":"ChrysanthemumT"},"content":".pane-without-border {","lastModifiedDate":"2024-03-20"},{"lineNumber":151,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-background-color: #ffffff;","lastModifiedDate":"2024-03-20"},{"lineNumber":152,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-border-color: #ffffff;","lastModifiedDate":"2024-03-20"},{"lineNumber":153,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-border-width: 2px;","lastModifiedDate":"2024-03-20"},{"lineNumber":154,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-border-radius: 12px;","lastModifiedDate":"2024-03-20"},{"lineNumber":155,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":156,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":157,"author":{"gitId":"ChrysanthemumT"},"content":"/* Result Box Display */","lastModifiedDate":"2024-03-20"},{"lineNumber":158,"author":{"gitId":"ChrysanthemumT"},"content":".result-display {","lastModifiedDate":"2024-03-20"},{"lineNumber":159,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-20"},{"lineNumber":160,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-font-family: \"Hack\";","lastModifiedDate":"2024-03-20"},{"lineNumber":161,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2024-03-20"},{"lineNumber":162,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-20"},{"lineNumber":163,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":164,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":165,"author":{"gitId":"ChrysanthemumT"},"content":".result-display .label {","lastModifiedDate":"2024-03-20"},{"lineNumber":166,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2024-03-20"},{"lineNumber":167,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":168,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":169,"author":{"gitId":"ChrysanthemumT"},"content":"/* Status Bar UI */","lastModifiedDate":"2024-03-20"},{"lineNumber":170,"author":{"gitId":"ChrysanthemumT"},"content":".status-bar {","lastModifiedDate":"2024-03-20"},{"lineNumber":171,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-background-color: #ffffff;","lastModifiedDate":"2024-03-20"},{"lineNumber":172,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":173,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":174,"author":{"gitId":"ChrysanthemumT"},"content":".status-bar .label {","lastModifiedDate":"2024-03-20"},{"lineNumber":175,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-font-family: \"Avenir\";","lastModifiedDate":"2024-03-20"},{"lineNumber":176,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-font-weight: light;","lastModifiedDate":"2024-03-20"},{"lineNumber":177,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-20"},{"lineNumber":178,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-padding: 4px;","lastModifiedDate":"2024-03-20"},{"lineNumber":179,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2024-03-20"},{"lineNumber":180,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":181,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":182,"author":{"gitId":"ChrysanthemumT"},"content":".status-bar-with-border {","lastModifiedDate":"2024-03-20"},{"lineNumber":183,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-background-color: derive(#f2f2f2, 30%);","lastModifiedDate":"2024-03-20"},{"lineNumber":184,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-border-color: derive(#f2f2f2, 25%);","lastModifiedDate":"2024-03-20"},{"lineNumber":185,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2024-03-20"},{"lineNumber":186,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":187,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":188,"author":{"gitId":"ChrysanthemumT"},"content":".status-bar-with-border .label {","lastModifiedDate":"2024-03-20"},{"lineNumber":189,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-20"},{"lineNumber":190,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":191,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":192,"author":{"gitId":"ChrysanthemumT"},"content":".grid-pane {","lastModifiedDate":"2024-03-20"},{"lineNumber":193,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-background-color: derive(#f2f2f2, 30%);","lastModifiedDate":"2024-03-20"},{"lineNumber":194,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-border-color: derive(#f2f2f2, 30%);","lastModifiedDate":"2024-03-20"},{"lineNumber":195,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2024-03-20"},{"lineNumber":196,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":197,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":198,"author":{"gitId":"ChrysanthemumT"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2024-03-20"},{"lineNumber":199,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-background-color: derive(#f2f2f2, 30%);","lastModifiedDate":"2024-03-20"},{"lineNumber":200,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":201,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":202,"author":{"gitId":"ChrysanthemumT"},"content":".context-menu {","lastModifiedDate":"2024-03-20"},{"lineNumber":203,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-background-color: derive(#f2f2f2, 50%);","lastModifiedDate":"2024-03-20"},{"lineNumber":204,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":205,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":206,"author":{"gitId":"ChrysanthemumT"},"content":".context-menu .label {","lastModifiedDate":"2024-03-20"},{"lineNumber":207,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-20"},{"lineNumber":208,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":209,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":210,"author":{"gitId":"ChrysanthemumT"},"content":".menu-bar {","lastModifiedDate":"2024-03-20"},{"lineNumber":211,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-background-color: derive(#f2f2f2, 20%);","lastModifiedDate":"2024-03-20"},{"lineNumber":212,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":213,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":214,"author":{"gitId":"ChrysanthemumT"},"content":".menu-bar .label {","lastModifiedDate":"2024-03-20"},{"lineNumber":215,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2024-03-20"},{"lineNumber":216,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-font-family: \"Avenir\";","lastModifiedDate":"2024-03-20"},{"lineNumber":217,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-20"},{"lineNumber":218,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2024-03-20"},{"lineNumber":219,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":220,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":221,"author":{"gitId":"ChrysanthemumT"},"content":".menu .left-container {","lastModifiedDate":"2024-03-20"},{"lineNumber":222,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-background-color: black;","lastModifiedDate":"2024-03-20"},{"lineNumber":223,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":224,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":225,"author":{"gitId":"ChrysanthemumT"},"content":"/*","lastModifiedDate":"2024-03-20"},{"lineNumber":226,"author":{"gitId":"ChrysanthemumT"},"content":" * Metro style Push Button","lastModifiedDate":"2024-03-20"},{"lineNumber":227,"author":{"gitId":"ChrysanthemumT"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2024-03-20"},{"lineNumber":228,"author":{"gitId":"ChrysanthemumT"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2024-03-20"},{"lineNumber":229,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":230,"author":{"gitId":"ChrysanthemumT"},"content":".button {","lastModifiedDate":"2024-03-20"},{"lineNumber":231,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2024-03-20"},{"lineNumber":232,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-border-color: #e2e2e2;","lastModifiedDate":"2024-03-20"},{"lineNumber":233,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-border-width: 2;","lastModifiedDate":"2024-03-20"},{"lineNumber":234,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2024-03-20"},{"lineNumber":235,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-background-color: #ffffff;","lastModifiedDate":"2024-03-20"},{"lineNumber":236,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2024-03-20"},{"lineNumber":237,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2024-03-20"},{"lineNumber":238,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-text-fill: #333333;","lastModifiedDate":"2024-03-20"},{"lineNumber":239,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2024-03-20"},{"lineNumber":240,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":241,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":242,"author":{"gitId":"ChrysanthemumT"},"content":".button:hover {","lastModifiedDate":"2024-03-20"},{"lineNumber":243,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-background-color: #f0f0f0;","lastModifiedDate":"2024-03-20"},{"lineNumber":244,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":245,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":246,"author":{"gitId":"ChrysanthemumT"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2024-03-20"},{"lineNumber":247,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-background-color: #e0e0e0;","lastModifiedDate":"2024-03-20"},{"lineNumber":248,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-text-fill: #333333;","lastModifiedDate":"2024-03-20"},{"lineNumber":249,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":250,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":251,"author":{"gitId":"ChrysanthemumT"},"content":".button:focused {","lastModifiedDate":"2024-03-20"},{"lineNumber":252,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-border-color: black, black;","lastModifiedDate":"2024-03-20"},{"lineNumber":253,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2024-03-20"},{"lineNumber":254,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2024-03-20"},{"lineNumber":255,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2024-03-20"},{"lineNumber":256,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2024-03-20"},{"lineNumber":257,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":258,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":259,"author":{"gitId":"ChrysanthemumT"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2024-03-20"},{"lineNumber":260,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2024-03-20"},{"lineNumber":261,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-background-color: #f2f2f2;","lastModifiedDate":"2024-03-20"},{"lineNumber":262,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-text-fill: #999999;","lastModifiedDate":"2024-03-20"},{"lineNumber":263,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":264,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":265,"author":{"gitId":"ChrysanthemumT"},"content":".button:default {","lastModifiedDate":"2024-03-20"},{"lineNumber":266,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2024-03-20"},{"lineNumber":267,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2024-03-20"},{"lineNumber":268,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":269,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":270,"author":{"gitId":"ChrysanthemumT"},"content":".button:default:hover {","lastModifiedDate":"2024-03-20"},{"lineNumber":271,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2024-03-20"},{"lineNumber":272,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"ChrysanthemumT":272}},{"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":"jerremyng"},"content":"import seedu.address.model.booking.Booking;","lastModifiedDate":"2024-03-10"},{"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":"-"},"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":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15"},{"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":"-"},"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":"-"},"content":" CommandResult commandResult \u003d new AddCommand(validPerson).execute(modelStub);","lastModifiedDate":"2019-01-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23"},{"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":"-"},"content":" AddCommand addCommand \u003d new AddCommand(validPerson);","lastModifiedDate":"2018-08-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":"-"},"content":" assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2019-05-03"},{"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":"jerremyng"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":162,"author":{"gitId":"jerremyng"},"content":" @Override","lastModifiedDate":"2024-03-10"},{"lineNumber":163,"author":{"gitId":"jerremyng"},"content":" public void addBooking(Booking booking) {","lastModifiedDate":"2024-03-10"},{"lineNumber":164,"author":{"gitId":"jerremyng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-10"},{"lineNumber":165,"author":{"gitId":"jerremyng"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":166,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":167,"author":{"gitId":"zhenghuil"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":168,"author":{"gitId":"zhenghuil"},"content":" public void cancelBooking(Booking target) {","lastModifiedDate":"2024-03-19"},{"lineNumber":169,"author":{"gitId":"zhenghuil"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":170,"author":{"gitId":"zhenghuil"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":171,"author":{"gitId":"zhenghuil"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":172,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":173,"author":{"gitId":"cyqjoseph"},"content":" public boolean hasBooking(Booking booking) {","lastModifiedDate":"2024-03-17"},{"lineNumber":174,"author":{"gitId":"cyqjoseph"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":175,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":176,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":177,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":178,"author":{"gitId":"cyqjoseph"},"content":" public ObservableList\u003cBooking\u003e getFilteredBookingList() {","lastModifiedDate":"2024-03-17"},{"lineNumber":179,"author":{"gitId":"cyqjoseph"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":180,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":183,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":184,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07"},{"lineNumber":185,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":186,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07"},{"lineNumber":187,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":189,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":190,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":191,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07"},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":194,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":195,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":196,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":197,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":198,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":199,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":201,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":202,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12"},{"lineNumber":203,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":204,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12"},{"lineNumber":205,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":207,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07"},{"lineNumber":208,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":209,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":210,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":211,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":213,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":214,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08"},{"lineNumber":215,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":216,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":217,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":219,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":220,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04"},{"lineNumber":221,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04"},{"lineNumber":222,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":223,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":225,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12"}],"authorContributionMap":{"jerremyng":6,"cyqjoseph":10,"-":204,"zhenghuil":5}},{"path":"src/test/java/seedu/address/logic/commands/BookCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.model.booking.Booking;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.testutil.BookingBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":"public class BookCommandTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"cyqjoseph"},"content":" public void execute_bookingAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"cyqjoseph"},"content":" BookCommandTest.ModelStubAcceptingBookingAdded modelStub \u003d new BookCommandTest.ModelStubAcceptingBookingAdded();","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"cyqjoseph"},"content":" Booking validBooking \u003d new BookingBuilder().build();","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"cyqjoseph"},"content":" CommandResult commandResult \u003d new BookCommand(validBooking).execute(modelStub);","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"cyqjoseph"},"content":" assertEquals(String.format(BookCommand.MESSAGE_SUCCESS, Messages.formatBooking(validBooking)),","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"cyqjoseph"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"cyqjoseph"},"content":" assertEquals(Arrays.asList(validBooking), modelStub.bookingsAdded);","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"cyqjoseph"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"cyqjoseph"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"cyqjoseph"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"cyqjoseph"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"cyqjoseph"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"cyqjoseph"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"cyqjoseph"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"cyqjoseph"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"cyqjoseph"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"cyqjoseph"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"cyqjoseph"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"cyqjoseph"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"cyqjoseph"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"cyqjoseph"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"cyqjoseph"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"cyqjoseph"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":84,"author":{"gitId":"cyqjoseph"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"cyqjoseph"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"cyqjoseph"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"cyqjoseph"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":91,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":92,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"cyqjoseph"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2024-03-19"},{"lineNumber":95,"author":{"gitId":"cyqjoseph"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"cyqjoseph"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"cyqjoseph"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"cyqjoseph"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"cyqjoseph"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":106,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":107,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":108,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"cyqjoseph"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2024-03-19"},{"lineNumber":110,"author":{"gitId":"cyqjoseph"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":111,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":112,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":113,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":114,"author":{"gitId":"cyqjoseph"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2024-03-19"},{"lineNumber":115,"author":{"gitId":"cyqjoseph"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":116,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":117,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":118,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":119,"author":{"gitId":"cyqjoseph"},"content":" public void addBooking(Booking booking) {","lastModifiedDate":"2024-03-19"},{"lineNumber":120,"author":{"gitId":"cyqjoseph"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":121,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":122,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":123,"author":{"gitId":"zhenghuil"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":124,"author":{"gitId":"zhenghuil"},"content":" public void cancelBooking(Booking target) {","lastModifiedDate":"2024-03-19"},{"lineNumber":125,"author":{"gitId":"zhenghuil"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":126,"author":{"gitId":"zhenghuil"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":127,"author":{"gitId":"zhenghuil"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":128,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":129,"author":{"gitId":"cyqjoseph"},"content":" public boolean hasBooking(Booking booking) {","lastModifiedDate":"2024-03-19"},{"lineNumber":130,"author":{"gitId":"cyqjoseph"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":131,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":132,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":133,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":134,"author":{"gitId":"cyqjoseph"},"content":" public ObservableList\u003cBooking\u003e getFilteredBookingList() {","lastModifiedDate":"2024-03-19"},{"lineNumber":135,"author":{"gitId":"cyqjoseph"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":136,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":137,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":138,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":139,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":140,"author":{"gitId":"cyqjoseph"},"content":" * A Model stub that contains a single booking.","lastModifiedDate":"2024-03-19"},{"lineNumber":141,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":142,"author":{"gitId":"cyqjoseph"},"content":" private class ModelStubWithBooking extends BookCommandTest.ModelStub {","lastModifiedDate":"2024-03-19"},{"lineNumber":143,"author":{"gitId":"cyqjoseph"},"content":" private final Booking booking;","lastModifiedDate":"2024-03-19"},{"lineNumber":144,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":145,"author":{"gitId":"cyqjoseph"},"content":" ModelStubWithBooking(Booking booking) {","lastModifiedDate":"2024-03-19"},{"lineNumber":146,"author":{"gitId":"cyqjoseph"},"content":" requireNonNull(booking);","lastModifiedDate":"2024-03-19"},{"lineNumber":147,"author":{"gitId":"cyqjoseph"},"content":" this.booking \u003d booking;","lastModifiedDate":"2024-03-19"},{"lineNumber":148,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":149,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":150,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":151,"author":{"gitId":"cyqjoseph"},"content":" public boolean hasBooking(Booking booking) {","lastModifiedDate":"2024-03-19"},{"lineNumber":152,"author":{"gitId":"cyqjoseph"},"content":" requireNonNull(booking);","lastModifiedDate":"2024-03-19"},{"lineNumber":153,"author":{"gitId":"cyqjoseph"},"content":" return this.booking.equals(booking);","lastModifiedDate":"2024-03-19"},{"lineNumber":154,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":155,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":156,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":157,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":158,"author":{"gitId":"cyqjoseph"},"content":" * A Model stub that always accept the booking being added.","lastModifiedDate":"2024-03-19"},{"lineNumber":159,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":160,"author":{"gitId":"cyqjoseph"},"content":" private class ModelStubAcceptingBookingAdded extends BookCommandTest.ModelStub {","lastModifiedDate":"2024-03-19"},{"lineNumber":161,"author":{"gitId":"cyqjoseph"},"content":" final ArrayList\u003cBooking\u003e bookingsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-19"},{"lineNumber":162,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":163,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":164,"author":{"gitId":"cyqjoseph"},"content":" public boolean hasBooking(Booking booking) {","lastModifiedDate":"2024-03-19"},{"lineNumber":165,"author":{"gitId":"cyqjoseph"},"content":" requireNonNull(booking);","lastModifiedDate":"2024-03-19"},{"lineNumber":166,"author":{"gitId":"cyqjoseph"},"content":" return bookingsAdded.stream().anyMatch(booking::equals);","lastModifiedDate":"2024-03-19"},{"lineNumber":167,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":168,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":169,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":170,"author":{"gitId":"cyqjoseph"},"content":" public void addBooking(Booking booking) {","lastModifiedDate":"2024-03-19"},{"lineNumber":171,"author":{"gitId":"cyqjoseph"},"content":" requireNonNull(booking);","lastModifiedDate":"2024-03-19"},{"lineNumber":172,"author":{"gitId":"cyqjoseph"},"content":" bookingsAdded.add(booking);","lastModifiedDate":"2024-03-19"},{"lineNumber":173,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":174,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":175,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":176,"author":{"gitId":"cyqjoseph"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2024-03-19"},{"lineNumber":177,"author":{"gitId":"cyqjoseph"},"content":" return new AddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":178,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":179,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":180,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"cyqjoseph":175,"zhenghuil":5}},{"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":"jerremyng"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"jerremyng"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"jerremyng"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"jerremyng"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorTest {","lastModifiedDate":"2017-05-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptorWithSameValues \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" EditPersonDescriptor editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_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 phone -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_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 email -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_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 address -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_BOB).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":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", address\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getAddress().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"jerremyng"},"content":" + editPersonDescriptor.getTags().orElse(new HashSet\u003c\u003e()) + \"}\";","lastModifiedDate":"2024-03-18"},{"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":{"jerremyng":5,"-":70}},{"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_NAME_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":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14"},{"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_NAME;","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.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-06-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-06-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","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 parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2018-07-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND, new AddCommand(expectedPerson));","lastModifiedDate":"2017-12-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":" Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND)","lastModifiedDate":"2018-07-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":61,"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":62,"author":{"gitId":"-"},"content":" new AddCommand(expectedPersonMultipleTags));","lastModifiedDate":"2023-07-14"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-07-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND;","lastModifiedDate":"2023-07-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":70,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":76,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":78,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":80,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":82,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":86,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2023-07-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":" + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_ADDRESS, PREFIX_EMAIL, PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":106,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":110,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":112,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":130,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":131,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15"},{"lineNumber":132,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2018-07-25"},{"lineNumber":133,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + ADDRESS_DESC_AMY,","lastModifiedDate":"2017-12-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2017-12-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":138,"author":{"gitId":"jerremyng"},"content":" public void parse_compulsoryNameMissing_failure() {","lastModifiedDate":"2024-03-18"},{"lineNumber":139,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":141,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"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_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":149,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":150,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":153,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15"},{"lineNumber":154,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":157,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15"},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":161,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15"},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2017-12-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":165,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15"},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":" + INVALID_TAG_DESC + VALID_TAG_FRIEND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":169,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":170,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC,","lastModifiedDate":"2017-12-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2017-12-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":178,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"jerremyng":1,"-":177}},{"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":"-"},"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":"cyqjoseph"},"content":"import seedu.address.model.booking.Booking;","lastModifiedDate":"2024-03-17"},{"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":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2018-04-19"},{"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":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasPerson(null));","lastModifiedDate":"2019-03-23"},{"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":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2018-08-06"},{"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":"cyqjoseph"},"content":" String expected \u003d AddressBook.class.getCanonicalName()","lastModifiedDate":"2024-03-17"},{"lineNumber":90,"author":{"gitId":"cyqjoseph"},"content":" + \"{persons\u003d\" + addressBook.getPersonList() + \", \"","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"cyqjoseph"},"content":" + \"bookings\u003d\" + addressBook.getBookingList() + \"}\";","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertEquals(expected, addressBook.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":"2016-12-24"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * A stub ReadOnlyAddressBook whose persons list can violate interface constraints.","lastModifiedDate":"2018-03-29"},{"lineNumber":97,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-24"},{"lineNumber":98,"author":{"gitId":"-"},"content":" private static class AddressBookStub implements ReadOnlyAddressBook {","lastModifiedDate":"2016-12-24"},{"lineNumber":99,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e persons \u003d FXCollections.observableArrayList();","lastModifiedDate":"2018-01-10"},{"lineNumber":100,"author":{"gitId":"cyqjoseph"},"content":" private final ObservableList\u003cBooking\u003e bookings \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":" AddressBookStub(Collection\u003cPerson\u003e persons) {","lastModifiedDate":"2018-03-29"},{"lineNumber":103,"author":{"gitId":"-"},"content":" this.persons.setAll(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":" @Override","lastModifiedDate":"2016-12-24"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":108,"author":{"gitId":"-"},"content":" return persons;","lastModifiedDate":"2016-12-24"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":110,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"cyqjoseph"},"content":" public ObservableList\u003cBooking\u003e getBookingList() {","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"cyqjoseph"},"content":" return bookings;","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-24"}],"authorContributionMap":{"cyqjoseph":10,"-":107}},{"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":"cyqjoseph"},"content":"import static seedu.address.testutil.TypicalBookings.GENERIC_BOOKING;","lastModifiedDate":"2024-03-17"},{"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.BENSON;","lastModifiedDate":"2017-07-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-31"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"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":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasPerson(null));","lastModifiedDate":"2019-03-23"},{"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":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"cyqjoseph"},"content":" public void hasBooking_bookingInAddressBook_returnsTrue() {","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"cyqjoseph"},"content":" modelManager.addBooking(GENERIC_BOOKING);","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"cyqjoseph"},"content":" assertTrue(modelManager.hasBooking(GENERIC_BOOKING));","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"cyqjoseph"},"content":" public void getFilteredBookingList_modifyBooking_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"cyqjoseph"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredBookingList().remove(0));","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31"},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":110,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBookBuilder().withPerson(ALICE).withPerson(BENSON).build();","lastModifiedDate":"2017-07-19"},{"lineNumber":111,"author":{"gitId":"-"},"content":" AddressBook differentAddressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31"},{"lineNumber":112,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":114,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":" modelManager \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2018-08-06"},{"lineNumber":116,"author":{"gitId":"-"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2017-05-31"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":119,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":122,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":125,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":128,"author":{"gitId":"-"},"content":" // different addressBook -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(differentAddressBook, userPrefs)));","lastModifiedDate":"2017-05-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":131,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":132,"author":{"gitId":"-"},"content":" String[] keywords \u003d ALICE.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-19"},{"lineNumber":133,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(keywords)));","lastModifiedDate":"2017-06-12"},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, userPrefs)));","lastModifiedDate":"2017-05-31"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":136,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2017-08-05"},{"lineNumber":137,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":139,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27"},{"lineNumber":140,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":141,"author":{"gitId":"-"},"content":" differentUserPrefs.setAddressBookFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2018-08-09"},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, differentUserPrefs)));","lastModifiedDate":"2018-11-27"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":144,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31"}],"authorContributionMap":{"cyqjoseph":12,"-":132}},{"path":"src/test/java/seedu/address/model/booking/DescriptionTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package seedu.address.model.booking;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":"public class DescriptionTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" assertThrows(NullPointerException.class, () -\u003e new Description(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" public void isValidDescription() {","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" // null description","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" assertThrows(NullPointerException.class, () -\u003e Description.isValidDescription(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" // invalid description","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" assertFalse(Description.isValidDescription(\"\")); // empty string","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" // valid description","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" assertTrue(Description.isValidDescription(\"peter jack\")); // alphabets only","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":" assertTrue(Description.isValidDescription(\"12345\")); // numbers only","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"cyqjoseph"},"content":" public void equals() {","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"cyqjoseph"},"content":" Description description \u003d new Description(\"Valid description\");","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"cyqjoseph"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"cyqjoseph"},"content":" assertTrue(description.equals(new Description(\"Valid description\")));","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"cyqjoseph"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"cyqjoseph"},"content":" assertTrue(description.equals(description));","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"cyqjoseph"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"cyqjoseph"},"content":" assertFalse(description.equals(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"cyqjoseph"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"cyqjoseph"},"content":" assertFalse(description.equals(5.0f));","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"cyqjoseph"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"cyqjoseph"},"content":" assertFalse(description.equals(new Name(\"Other Valid Name\")));","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"cyqjoseph":50}},{"path":"src/test/java/seedu/address/model/booking/EndTimeTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package seedu.address.model.booking;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"public class EndTimeTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":" public void constructor_invalidEndTime_throwsDateTimeParseException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" String invalidEndTime \u003d \"2024-15-40 26:00\"; // Invalid date and time","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new EndTime(invalidEndTime));","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" public void isValidEndTime() {","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" // invalid end times","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" assertFalse(EndTime.isValidEndTime(\"\")); // Empty string","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" assertFalse(EndTime.isValidEndTime(\"2024-01-32 24:60\")); // Non-existent date and time","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" // valid end times","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" assertTrue(EndTime.isValidEndTime(\"2024-03-19 12:00\")); // Correct format","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":" public void equals() {","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":" EndTime endTime \u003d new EndTime(\"2024-03-19 12:00\");","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"cyqjoseph"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"cyqjoseph"},"content":" assertTrue(endTime.equals(new EndTime(\"2024-03-19 12:00\")));","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"cyqjoseph"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"cyqjoseph"},"content":" assertTrue(endTime.equals(endTime));","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"cyqjoseph"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"cyqjoseph"},"content":" assertFalse(endTime.equals(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"cyqjoseph"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"cyqjoseph"},"content":" assertFalse(endTime.equals(new String(\"2024-03-19 12:00\")));","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"cyqjoseph"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"cyqjoseph"},"content":" assertFalse(endTime.equals(new EndTime(\"2024-03-20 12:00\")));","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"cyqjoseph":46}},{"path":"src/test/java/seedu/address/model/booking/StartTimeTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package seedu.address.model.booking;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"public class StartTimeTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":" public void constructor_invalidStartTime_throwsDateTimeParseException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" String invalidStartTime \u003d \"2024-03-33 25:00\"; // Invalid date and time","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new StartTime(invalidStartTime));","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" public void isValidStartTime() {","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" // invalid start times","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" assertFalse(StartTime.isValidStartTime(\"\")); // Empty string","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" assertFalse(StartTime.isValidStartTime(\"2024-02-30 24:01\")); // Non-existent date and time","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" // valid start times","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" assertTrue(StartTime.isValidStartTime(\"2024-03-19 12:00\")); // Correct format","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":" public void equals() {","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":" StartTime startTime \u003d new StartTime(\"2024-03-19 12:00\");","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"cyqjoseph"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"cyqjoseph"},"content":" assertTrue(startTime.equals(new StartTime(\"2024-03-19 12:00\")));","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"cyqjoseph"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"cyqjoseph"},"content":" assertTrue(startTime.equals(startTime));","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"cyqjoseph"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"cyqjoseph"},"content":" assertFalse(startTime.equals(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"cyqjoseph"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"cyqjoseph"},"content":" assertFalse(startTime.equals(new String(\"2024-03-19 12:00\")));","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"cyqjoseph"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"cyqjoseph"},"content":" assertFalse(startTime.equals(new StartTime(\"2024-03-20 12:00\")));","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"cyqjoseph":46}},{"path":"src/test/java/seedu/address/model/person/RatingTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"public class RatingTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":" public void constructor_invalidRating_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":" int invalidRating \u003d -1;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Rating(invalidRating));","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" public void setRating_invalidRating_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" Rating testRating \u003d new Rating(0);","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e testRating.setRating(-1));","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" public void isValidRating() {","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" // invalid rating","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" assertFalse(Rating.isValidRating(124)); // empty string","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" assertFalse(Rating.isValidRating(-1)); // spaces only","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":" // valid rating","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":" assertTrue(Rating.isValidRating(4));","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"cyqjoseph"},"content":" public void equals() {","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"cyqjoseph"},"content":" Rating rating \u003d new Rating(5);","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"cyqjoseph"},"content":" // same rating -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"cyqjoseph"},"content":" assertTrue(rating.equals(new Rating(5)));","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"cyqjoseph"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"cyqjoseph"},"content":" assertTrue(rating.equals(rating));","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"cyqjoseph"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"cyqjoseph"},"content":" assertFalse(rating.equals(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"cyqjoseph"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"cyqjoseph"},"content":" assertFalse(rating.equals(\"\"));","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"cyqjoseph"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"cyqjoseph"},"content":" assertFalse(rating.equals(new Rating(0)));","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"cyqjoseph":51}},{"path":"src/test/java/seedu/address/testutil/BookingBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.model.booking.Booking;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.model.booking.Description;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.model.booking.EndTime;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.model.booking.StartTime;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":" * A utility class to help with building Booking objects.","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":"public class BookingBuilder {","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" public static final String DEFAULT_DESCRIPTION \u003d \"Default booking description\";","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" public static final String DEFAULT_START_TIME \u003d \"2023-12-31 19:00\";","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" public static final String DEFAULT_END_TIME \u003d \"2023-12-31 21:00\";","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" private Description description;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" private StartTime start;","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" private EndTime end;","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" * Creates a {@code BookingBuilder} with the default details.","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" public BookingBuilder() {","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" description \u003d new Description(DEFAULT_DESCRIPTION);","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" start \u003d new StartTime(DEFAULT_START_TIME);","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":" end \u003d new EndTime(DEFAULT_END_TIME);","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"cyqjoseph"},"content":" * Initializes the BookingBuilder with the data of {@code bookingToCopy}.","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"cyqjoseph"},"content":" public BookingBuilder(Booking bookingToCopy) {","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"cyqjoseph"},"content":" description \u003d bookingToCopy.getDescription();","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"cyqjoseph"},"content":" start \u003d bookingToCopy.getStart();","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"cyqjoseph"},"content":" end \u003d bookingToCopy.getEnd();","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"cyqjoseph"},"content":" * Sets the {@code Description} of the {@code Booking} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"cyqjoseph"},"content":" public BookingBuilder withDescription(String description) {","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"cyqjoseph"},"content":" this.description \u003d new Description(description);","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"cyqjoseph"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"cyqjoseph"},"content":" * Sets the {@code start} of the {@code Booking} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"cyqjoseph"},"content":" public BookingBuilder withStartTime(String start) {","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"cyqjoseph"},"content":" this.start \u003d new StartTime(start);","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"cyqjoseph"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"cyqjoseph"},"content":" * Sets the {@code end} of the {@code Booking} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"cyqjoseph"},"content":" public BookingBuilder withEndTime(String end) {","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"cyqjoseph"},"content":" this.end \u003d new EndTime(end);","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"cyqjoseph"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"cyqjoseph"},"content":" * Builds the {@code Booking} with the relevant information.","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"cyqjoseph"},"content":" public Booking build() {","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"cyqjoseph"},"content":" return new Booking(description, start, end);","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"cyqjoseph":69}},{"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":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":"import seedu.address.model.person.ImagePath;","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":31,"author":{"gitId":"ChrysanthemumT"},"content":" private ImagePath imagePath;","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10"},{"lineNumber":48,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20"},{"lineNumber":52,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":64,"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":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String ... tags) {","lastModifiedDate":"2017-08-15"},{"lineNumber":67,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","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":" * Sets the {@code Address} of 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 withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":75,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","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":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":83,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20"},{"lineNumber":92,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":95,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"ChrysanthemumT"},"content":" * Sets the {@code ImagePath} of the {@code Person} that we are building","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"ChrysanthemumT"},"content":" public PersonBuilder withImage() {","lastModifiedDate":"2024-03-20"},{"lineNumber":99,"author":{"gitId":"ChrysanthemumT"},"content":" this.imagePath \u003d new ImagePath();","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"ChrysanthemumT"},"content":" return this;","lastModifiedDate":"2024-03-20"},{"lineNumber":101,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":102,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05"},{"lineNumber":104,"author":{"gitId":"-"},"content":" return new Person(name, phone, email, address, tags);","lastModifiedDate":"2017-12-20"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":107,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03"}],"authorContributionMap":{"ChrysanthemumT":11,"-":96}},{"path":"src/test/java/seedu/address/testutil/TypicalBookings.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import java.util.List;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.model.booking.Booking;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":" * A utility class containing a list of {@code Booking} objects to be used in tests.","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":"public class TypicalBookings {","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" public static final Booking CS1231_CONSULT \u003d new BookingBuilder()","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" .withDescription(\"CS1231 Consult\")","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" .withStartTime(\"2022-11-31 11:00\")","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" .withEndTime(\"2022-11-31 12:00\")","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" .build();","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" public static final Booking CAREER_ADVISORY \u003d new BookingBuilder()","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" .withDescription(\"Career advisory consult\")","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" .withStartTime(\"2024-1-31 11:00\")","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" .withEndTime(\"2024-1-31 12:00\")","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" .build();","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":" public static final Booking CS2103T_CONSULT \u003d new BookingBuilder()","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":" .withDescription(\"CS2103T consult\")","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":" .withStartTime(\"2024-3-31 14:00\")","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":" .withEndTime(\"2024-3-31 16:00\")","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"cyqjoseph"},"content":" .build();","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"cyqjoseph"},"content":" public static final Booking CS2101_CONSULT \u003d new BookingBuilder()","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"cyqjoseph"},"content":" .withDescription(\"CS2101 consult\")","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"cyqjoseph"},"content":" .withStartTime(\"2024-3-24 14:00\")","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"cyqjoseph"},"content":" .withEndTime(\"2024-3-24 16:00\")","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"cyqjoseph"},"content":" .build();","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"cyqjoseph"},"content":" public static final Booking CS2109S_CONSULT \u003d new BookingBuilder()","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"cyqjoseph"},"content":" .withDescription(\"CS2109 consult\")","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"cyqjoseph"},"content":" .withStartTime(\"2024-2-22 11:00\")","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"cyqjoseph"},"content":" .withEndTime(\"2024-2-22 13:00\")","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"cyqjoseph"},"content":" .build();","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"cyqjoseph"},"content":" public static final Booking GENERIC_BOOKING \u003d new BookingBuilder()","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"cyqjoseph"},"content":" .build();","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"cyqjoseph"},"content":" // Keywords","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"cyqjoseph"},"content":" public static final String KEYWORD_MATCHING_BOOK \u003d \"Book\";","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"cyqjoseph"},"content":" * Returns an {@code AddressBook} with all the typical booking.","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"cyqjoseph"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"cyqjoseph"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"cyqjoseph"},"content":" for (Booking booking : getTypicalBooking()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"cyqjoseph"},"content":" ab.addBooking(booking);","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"cyqjoseph"},"content":" return ab;","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"cyqjoseph"},"content":" public static List\u003cBooking\u003e getTypicalBooking() {","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"cyqjoseph"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"cyqjoseph"},"content":" CS1231_CONSULT, CS2101_CONSULT, CS2103T_CONSULT, CS2109S_CONSULT,","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"cyqjoseph"},"content":" GENERIC_BOOKING));","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"cyqjoseph":67}},{"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":"ChrysanthemumT"},"content":" .withPhone(\"94351253\").withImage().build();","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10"},{"lineNumber":30,"author":{"gitId":"-"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2017-09-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2017-04-05"},{"lineNumber":32,"author":{"gitId":"ChrysanthemumT"},"content":" .withTags(\"owesMoney\", \"friends\").withImage().build();","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2018-01-10"},{"lineNumber":34,"author":{"gitId":"ChrysanthemumT"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\").withImage().build();","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2018-01-10"},{"lineNumber":36,"author":{"gitId":"ChrysanthemumT"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\").withTags(\"friends\").withImage().build();","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2018-01-10"},{"lineNumber":38,"author":{"gitId":"ChrysanthemumT"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\").withImage().build();","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2018-01-10"},{"lineNumber":40,"author":{"gitId":"ChrysanthemumT"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\").withImage().build();","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2018-01-10"},{"lineNumber":42,"author":{"gitId":"ChrysanthemumT"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\").withImage().build();","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2018-01-10"},{"lineNumber":46,"author":{"gitId":"ChrysanthemumT"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\").withImage().build();","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2018-01-10"},{"lineNumber":48,"author":{"gitId":"ChrysanthemumT"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\").withImage().build();","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2018-01-10"},{"lineNumber":52,"author":{"gitId":"ChrysanthemumT"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withTags(VALID_TAG_FRIEND).withImage().build();","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2018-01-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2017-09-21"},{"lineNumber":55,"author":{"gitId":"ChrysanthemumT"},"content":" .withImage().build();","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10"},{"lineNumber":67,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04"},{"lineNumber":75,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13"}],"authorContributionMap":{"ChrysanthemumT":11,"-":64}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"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":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":"[![codecov](https://codecov.io/gh/AY2324S2-CS2103T-W11-3/tp/graph/badge.svg?token\u003dF7G5FM6BNJ)](https://codecov.io/gh/AY2324S2-CS2103T-W11-3/tp)","lastModifiedDate":"2024-02-16"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-16"},{"lineNumber":5,"author":{"gitId":"jerremyng"},"content":"![Ui](docs/images/NewUi.png)","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"* This is an application for **NUS School of Computing (SoC) students to find contacts within SoC** and **book consultation slots with Professors and Teaching Assistants**.\u003cbr\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":8,"author":{"gitId":"-"},"content":" Example usages:","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":" * retrieves all contact details of a user within NUS SoC","lastModifiedDate":"2024-03-04"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":" * create and delete user contact details","lastModifiedDate":"2024-03-04"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":" * retrieves all consultation timings of a user","lastModifiedDate":"2024-03-04"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":" * create and delete consultation timings","lastModifiedDate":"2024-03-04"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":"* The project is an ongoing software project for a desktop application (called _Dook_) used for managing contact details.","lastModifiedDate":"2024-03-04"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" * It is built on the AddressBook-Level3 project.","lastModifiedDate":"2024-03-04"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" * It is **written in OOP fashion**. It provides a **reasonably well-written** code base **bigger** than what students usually write in beginner-level SE modules, without being overwhelmingly big.","lastModifiedDate":"2024-03-04"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":"* It is named `Dook` because it is a moniker from the individual project (iP) that all CS2103T students do.","lastModifiedDate":"2024-03-04"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":"* For the detailed documentation of this project, see the **[User Guide](https://github.com/AY2324S2-CS2103T-W11-3/tp/blob/master/docs/UserGuide.md)**, or the **[Developer Guide](https://github.com/AY2324S2-CS2103T-W11-3/tp/blob/master/docs/DeveloperGuide.md)** if you are interested in contributing to Dook.","lastModifiedDate":"2024-03-04"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"jerremyng":1,"cyqjoseph":11,"-":6}},{"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":"cyqjoseph"},"content":"### Joseph Chan ","lastModifiedDate":"2024-02-28"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":"\u003cimg src\u003d\"images/cyqjoseph.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":"[[github](https://github.com/cyqjoseph)]","lastModifiedDate":"2024-02-28"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":"* Role: DevOps","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":"* Responsibilities: Test implementation and Management,","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" Feature Development and Enhancement.","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":"### Wang Minhong","lastModifiedDate":"2024-02-28"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":"\u003cimg src\u003d\"images/chrysanthemumt.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":"[[github](http://github.com/chrysanthemumt)]","lastModifiedDate":"2024-02-28"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":"* Role: Developer","lastModifiedDate":"2024-02-28"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"jerremyng"},"content":"### Jerremy Ng","lastModifiedDate":"2024-02-28"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"jerremyng"},"content":"\u003cimg src\u003d\"images/jerremyng.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"jerremyng"},"content":"[[github](http://github.com/jerremyng)]","lastModifiedDate":"2024-02-28"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"jerremyng"},"content":"* Responsibilities: Code","lastModifiedDate":"2024-02-28"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"gauravuj"},"content":"### Ujjwal Gaurav","lastModifiedDate":"2024-02-28"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"gauravuj"},"content":"\u003cimg src\u003d\"images/gauravuj.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"gauravuj"},"content":"[[github](http://github.com/gauravuj)]","lastModifiedDate":"2024-02-28"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"gauravuj"},"content":"* Role: UI/UX \u0026 Frontend Developer","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"gauravuj"},"content":"* Responsibilities: Enhance product aesthetics, refine UI functionality,","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"gauravuj"},"content":" ensure seamless frontend-backend integration.","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"zhenghuil"},"content":"### Low Zheng Hui","lastModifiedDate":"2024-02-28"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"zhenghuil"},"content":"\u003cimg src\u003d\"images/zhenghuil.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-02-28"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"zhenghuil"},"content":"[[github](https://github.com/zhenghuil)]","lastModifiedDate":"2024-02-28"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"jerremyng":4,"gauravuj":6,"cyqjoseph":10,"-":32,"zhenghuil":3}},{"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":"jerremyng"},"content":"Welcome to our Developer Guide! This resource is designed to provide developers with a overview of Dook\u0027s architecture. Whether you\u0027re new to the project or looking to extend its functionality, this guide is the best place to start learning how to contribute to Dook.","lastModifiedDate":"2024-03-24"},{"lineNumber":6,"author":{"gitId":"jerremyng"},"content":"","lastModifiedDate":"2024-03-24"},{"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":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","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":"## **Design**","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"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":21,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureDiagram.png\" width\u003d\"280\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":31,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"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":34,"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":35,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"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":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureSequenceDiagram.png\" width\u003d\"574\" /\u003e","lastModifiedDate":"2020-06-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":54,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31"},{"lineNumber":55,"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":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":57,"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":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":59,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ComponentManagers.png\" width\u003d\"300\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":61,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"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":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"![Structure of the UI Component](images/UiClassDiagram.png)","lastModifiedDate":"2021-07-31"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"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":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"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":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":76,"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":77,"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":78,"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":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"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":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/LogicClassDiagram.png\" width\u003d\"550\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"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":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"![Interactions Inside the Logic Component for the `delete 1` Command](images/DeleteSequenceDiagram.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"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 continues till the end of diagram.","lastModifiedDate":"2024-02-09"},{"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":"How the `Logic` component works:","lastModifiedDate":"2023-09-03"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":97,"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":98,"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":99,"author":{"gitId":"-"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a person).\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":100,"author":{"gitId":"-"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-02-09"},{"lineNumber":101,"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":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":103,"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":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":105,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ParserClasses.png\" width\u003d\"600\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31"},{"lineNumber":108,"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":109,"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":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31"},{"lineNumber":112,"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":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"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":120,"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":121,"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":122,"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":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":124,"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":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":126,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/BetterModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"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":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/StorageClassDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":137,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"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":139,"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":140,"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":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"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":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"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":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"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":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"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":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"![UndoRedoState0](images/UndoRedoState0.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"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":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"![UndoRedoState1](images/UndoRedoState1.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"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":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"![UndoRedoState2](images/UndoRedoState2.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"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":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"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":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"![UndoRedoState3](images/UndoRedoState3.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 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":187,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Logic.png)","lastModifiedDate":"2024-02-09"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"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":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":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":201,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Model.png)","lastModifiedDate":"2024-02-09"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":203,"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":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:** 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":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":"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":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":"![UndoRedoState4](images/UndoRedoState4.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":213,"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":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"![UndoRedoState5](images/UndoRedoState5.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/CommitActivityDiagram.png\" width\u003d\"250\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":226,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","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":"","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":246,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":247,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":248,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":249,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"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":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"jerremyng"},"content":"* currently in NUS school of computing","lastModifiedDate":"2024-03-06"},{"lineNumber":260,"author":{"gitId":"-"},"content":"* has a need to manage a significant number of contacts","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"jerremyng"},"content":"* needs to book many consultations and meetings with professors/students","lastModifiedDate":"2024-03-06"},{"lineNumber":262,"author":{"gitId":"jerremyng"},"content":"* has a busy schedule which constantly changes","lastModifiedDate":"2024-03-06"},{"lineNumber":263,"author":{"gitId":"jerremyng"},"content":"* frequently needs a quick overview of their schedule","lastModifiedDate":"2024-03-06"},{"lineNumber":264,"author":{"gitId":"jerremyng"},"content":"* prefer desktop apps","lastModifiedDate":"2024-03-06"},{"lineNumber":265,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26"},{"lineNumber":266,"author":{"gitId":"jerremyng"},"content":"* is comfortable using CLI apps","lastModifiedDate":"2024-03-06"},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":268,"author":{"gitId":"jerremyng"},"content":"**Value proposition**: Help students manage booking consultations/meeting with professors/students.","lastModifiedDate":"2024-03-06"},{"lineNumber":269,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"cyqjoseph"},"content":"|----------|----------|-----------------------------------|------------------------------------------------------------------------|","lastModifiedDate":"2024-03-21"},{"lineNumber":277,"author":{"gitId":"-"},"content":"| `* * *` | new user | see usage instructions | refer to instructions when I forget how to use the App |","lastModifiedDate":"2020-05-23"},{"lineNumber":278,"author":{"gitId":"ChrysanthemumT"},"content":"| `* * *` | user | add a contact | |","lastModifiedDate":"2024-03-05"},{"lineNumber":279,"author":{"gitId":"ChrysanthemumT"},"content":"| `* * *` | user | delete a contact | remove entries that I no longer need |","lastModifiedDate":"2024-03-05"},{"lineNumber":280,"author":{"gitId":"ChrysanthemumT"},"content":"| `* * *` | user | update a contact | |","lastModifiedDate":"2024-03-05"},{"lineNumber":281,"author":{"gitId":"cyqjoseph"},"content":"| `* * *` | user | view professors calendar | see the available timings |","lastModifiedDate":"2024-03-07"},{"lineNumber":282,"author":{"gitId":"cyqjoseph"},"content":"| `* * *` | user | view professors\u0027s office hours | know when to contact them |","lastModifiedDate":"2024-03-07"},{"lineNumber":283,"author":{"gitId":"cyqjoseph"},"content":"| `* * *` | user | view professors\u0027s office location | know where to find them | ","lastModifiedDate":"2024-03-07"},{"lineNumber":284,"author":{"gitId":"cyqjoseph"},"content":"| `* * *` | user | find a prof by name | locate details of persons without having to go through the entire list |","lastModifiedDate":"2024-03-07"},{"lineNumber":285,"author":{"gitId":"-"},"content":"| `* *` | user | hide private contact details | minimize chance of someone else seeing them by accident |","lastModifiedDate":"2020-05-23"},{"lineNumber":286,"author":{"gitId":"ChrysanthemumT"},"content":"| `*` | user | update my calendar | change my schedule |","lastModifiedDate":"2024-03-05"},{"lineNumber":287,"author":{"gitId":"ChrysanthemumT"},"content":"| `*` | user | create event/consultations | it can be recorded |","lastModifiedDate":"2024-03-05"},{"lineNumber":288,"author":{"gitId":"ChrysanthemumT"},"content":"| `*` | user | delete event | |","lastModifiedDate":"2024-03-05"},{"lineNumber":289,"author":{"gitId":"ChrysanthemumT"},"content":"| `*` | user | update event | |","lastModifiedDate":"2024-03-05"},{"lineNumber":290,"author":{"gitId":"ChrysanthemumT"},"content":"| `*` | user | view the current week\u0027s consults | change my schedule |","lastModifiedDate":"2024-03-05"},{"lineNumber":291,"author":{"gitId":"ChrysanthemumT"},"content":"| `*` | user | view a TA\u0027s calendar | book a consult |","lastModifiedDate":"2024-03-05"},{"lineNumber":292,"author":{"gitId":"ChrysanthemumT"},"content":"| `*` | user | generate email to contact | easily send out communications |","lastModifiedDate":"2024-03-05"},{"lineNumber":293,"author":{"gitId":"cyqjoseph"},"content":"| `*` | user | delete all contacts | | ","lastModifiedDate":"2024-03-07"},{"lineNumber":294,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":296,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":298,"author":{"gitId":"cyqjoseph"},"content":"(For all use cases below, the **System** is `Dook` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2024-03-07"},{"lineNumber":299,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":300,"author":{"gitId":"cyqjoseph"},"content":"**Use case: Add a contact**","lastModifiedDate":"2024-03-07"},{"lineNumber":301,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":302,"author":{"gitId":"cyqjoseph"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":303,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":304,"author":{"gitId":"cyqjoseph"},"content":"1. User requests to add a contact","lastModifiedDate":"2024-03-07"},{"lineNumber":305,"author":{"gitId":"cyqjoseph"},"content":"2. Dook adds the contact","lastModifiedDate":"2024-03-07"},{"lineNumber":306,"author":{"gitId":"cyqjoseph"},"content":"3. Dook displays the details of the contact added","lastModifiedDate":"2024-03-07"},{"lineNumber":307,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":308,"author":{"gitId":"cyqjoseph"},"content":" Use case ends","lastModifiedDate":"2024-03-07"},{"lineNumber":309,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":310,"author":{"gitId":"cyqjoseph"},"content":"**Extensions**","lastModifiedDate":"2024-03-07"},{"lineNumber":311,"author":{"gitId":"cyqjoseph"},"content":"* **2a. The contact details are invalid**","lastModifiedDate":"2024-03-07"},{"lineNumber":312,"author":{"gitId":"cyqjoseph"},"content":" * **2a1. Dook shows an error message**","lastModifiedDate":"2024-03-07"},{"lineNumber":313,"author":{"gitId":"cyqjoseph"},"content":" ","lastModifiedDate":"2024-03-07"},{"lineNumber":314,"author":{"gitId":"cyqjoseph"},"content":" Use Case ends","lastModifiedDate":"2024-03-07"},{"lineNumber":315,"author":{"gitId":"cyqjoseph"},"content":"* **3a. Duplicate contact added**","lastModifiedDate":"2024-03-07"},{"lineNumber":316,"author":{"gitId":"cyqjoseph"},"content":" * **3a1. Dook shows an error message**","lastModifiedDate":"2024-03-07"},{"lineNumber":317,"author":{"gitId":"cyqjoseph"},"content":" ","lastModifiedDate":"2024-03-07"},{"lineNumber":318,"author":{"gitId":"cyqjoseph"},"content":" Use case ends","lastModifiedDate":"2024-03-07"},{"lineNumber":319,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":320,"author":{"gitId":"cyqjoseph"},"content":"**Use Case: Delete a Contact**","lastModifiedDate":"2024-03-07"},{"lineNumber":321,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":322,"author":{"gitId":"cyqjoseph"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":323,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":324,"author":{"gitId":"cyqjoseph"},"content":"1. User requests to delete a contact by name or index.","lastModifiedDate":"2024-03-07"},{"lineNumber":325,"author":{"gitId":"cyqjoseph"},"content":"2. Dook confirms the deletion request (if applicable).","lastModifiedDate":"2024-03-07"},{"lineNumber":326,"author":{"gitId":"cyqjoseph"},"content":"3. Dook deletes the contact.","lastModifiedDate":"2024-03-07"},{"lineNumber":327,"author":{"gitId":"cyqjoseph"},"content":"4. Dook confirms the contact has been deleted.","lastModifiedDate":"2024-03-07"},{"lineNumber":328,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":329,"author":{"gitId":"cyqjoseph"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":330,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":331,"author":{"gitId":"cyqjoseph"},"content":"**Extensions**","lastModifiedDate":"2024-03-07"},{"lineNumber":332,"author":{"gitId":"cyqjoseph"},"content":"* **2a. User requests to delete all contacts.**","lastModifiedDate":"2024-03-07"},{"lineNumber":333,"author":{"gitId":"cyqjoseph"},"content":" - **2a1. Dook asks for confirmation.**","lastModifiedDate":"2024-03-07"},{"lineNumber":334,"author":{"gitId":"cyqjoseph"},"content":" - **2a2. If confirmed, Dook deletes all contacts and confirms deletion.**","lastModifiedDate":"2024-03-07"},{"lineNumber":335,"author":{"gitId":"cyqjoseph"},"content":" - **2a3. If not confirmed, Dook cancels the deletion process.**","lastModifiedDate":"2024-03-07"},{"lineNumber":336,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":337,"author":{"gitId":"cyqjoseph"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":338,"author":{"gitId":"cyqjoseph"},"content":"* **3a. The specified contact does not exist.**","lastModifiedDate":"2024-03-07"},{"lineNumber":339,"author":{"gitId":"cyqjoseph"},"content":" - **3a1. Dook shows an error message.**","lastModifiedDate":"2024-03-07"},{"lineNumber":340,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":341,"author":{"gitId":"cyqjoseph"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":342,"author":{"gitId":"cyqjoseph"},"content":"* **3b. The contact index is out of range.**","lastModifiedDate":"2024-03-07"},{"lineNumber":343,"author":{"gitId":"cyqjoseph"},"content":" - **3b1. Dook shows an error message.**","lastModifiedDate":"2024-03-07"},{"lineNumber":344,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":345,"author":{"gitId":"cyqjoseph"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":346,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":347,"author":{"gitId":"cyqjoseph"},"content":"**Use Case: View All Contacts**","lastModifiedDate":"2024-03-07"},{"lineNumber":348,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":349,"author":{"gitId":"cyqjoseph"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":350,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":351,"author":{"gitId":"cyqjoseph"},"content":"1. User requests to view all contacts.","lastModifiedDate":"2024-03-07"},{"lineNumber":352,"author":{"gitId":"cyqjoseph"},"content":"2. Dook retrieves and displays all contacts.","lastModifiedDate":"2024-03-07"},{"lineNumber":353,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":354,"author":{"gitId":"cyqjoseph"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":355,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":356,"author":{"gitId":"cyqjoseph"},"content":"**Extensions**","lastModifiedDate":"2024-03-07"},{"lineNumber":357,"author":{"gitId":"cyqjoseph"},"content":"* **2a. There are no contacts to display.**","lastModifiedDate":"2024-03-07"},{"lineNumber":358,"author":{"gitId":"cyqjoseph"},"content":" - **2a1. Dook shows a message indicating there are no contacts.**","lastModifiedDate":"2024-03-07"},{"lineNumber":359,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":360,"author":{"gitId":"cyqjoseph"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":361,"author":{"gitId":"cyqjoseph"},"content":"* **2b. An unexpected error occurs while fetching contacts.**","lastModifiedDate":"2024-03-07"},{"lineNumber":362,"author":{"gitId":"cyqjoseph"},"content":" - **2b1. Dook shows an error message.**","lastModifiedDate":"2024-03-07"},{"lineNumber":363,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":364,"author":{"gitId":"cyqjoseph"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":365,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":366,"author":{"gitId":"cyqjoseph"},"content":"**Use Case: Find Contacts**","lastModifiedDate":"2024-03-07"},{"lineNumber":367,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":368,"author":{"gitId":"cyqjoseph"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":369,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":370,"author":{"gitId":"cyqjoseph"},"content":"1. User requests to find contacts by name or contact type.","lastModifiedDate":"2024-03-07"},{"lineNumber":371,"author":{"gitId":"cyqjoseph"},"content":"2. Dook searches and displays matching contacts.","lastModifiedDate":"2024-03-07"},{"lineNumber":372,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":373,"author":{"gitId":"cyqjoseph"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":374,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":375,"author":{"gitId":"cyqjoseph"},"content":"**Extensions**","lastModifiedDate":"2024-03-07"},{"lineNumber":376,"author":{"gitId":"cyqjoseph"},"content":"* **2a. No contacts match the search criteria.**","lastModifiedDate":"2024-03-07"},{"lineNumber":377,"author":{"gitId":"cyqjoseph"},"content":" - **2a1. Dook shows a message indicating no matches found.**","lastModifiedDate":"2024-03-07"},{"lineNumber":378,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":379,"author":{"gitId":"cyqjoseph"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":380,"author":{"gitId":"cyqjoseph"},"content":"* **2b. An error occurs during the search.**","lastModifiedDate":"2024-03-07"},{"lineNumber":381,"author":{"gitId":"cyqjoseph"},"content":" - **2b1. Dook shows an error message.**","lastModifiedDate":"2024-03-07"},{"lineNumber":382,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":383,"author":{"gitId":"cyqjoseph"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":384,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":385,"author":{"gitId":"cyqjoseph"},"content":"### Booking System Use Cases","lastModifiedDate":"2024-03-07"},{"lineNumber":386,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":387,"author":{"gitId":"cyqjoseph"},"content":"**Use case: Book a Consultation Slot**","lastModifiedDate":"2024-03-07"},{"lineNumber":388,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":389,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":390,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":391,"author":{"gitId":"cyqjoseph"},"content":"1. User inputs `book` command with necessary details.","lastModifiedDate":"2024-03-23"},{"lineNumber":392,"author":{"gitId":"cyqjoseph"},"content":"2. Dook schedules the booking.","lastModifiedDate":"2024-03-07"},{"lineNumber":393,"author":{"gitId":"cyqjoseph"},"content":"3. Dook confirms the booking details to the user.","lastModifiedDate":"2024-03-07"},{"lineNumber":394,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":395,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":396,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":397,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":398,"author":{"gitId":"cyqjoseph"},"content":"* **2a. The booking details are invalid.**","lastModifiedDate":"2024-03-07"},{"lineNumber":399,"author":{"gitId":"cyqjoseph"},"content":" * **2a1. Dook shows an error message.**","lastModifiedDate":"2024-03-07"},{"lineNumber":400,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":401,"author":{"gitId":"cyqjoseph"},"content":" Use Case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":402,"author":{"gitId":"cyqjoseph"},"content":"* **2b. The requested time slot overlaps with an existing booking.**","lastModifiedDate":"2024-03-07"},{"lineNumber":403,"author":{"gitId":"cyqjoseph"},"content":" * **2b1. Dook shows an error message.**","lastModifiedDate":"2024-03-07"},{"lineNumber":404,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":405,"author":{"gitId":"cyqjoseph"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":406,"author":{"gitId":"cyqjoseph"},"content":"* **2c. The specified user does not match any contacts.**","lastModifiedDate":"2024-03-07"},{"lineNumber":407,"author":{"gitId":"cyqjoseph"},"content":" * **2c1. Dook prompts the user to select a valid contact.**","lastModifiedDate":"2024-03-07"},{"lineNumber":408,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":409,"author":{"gitId":"cyqjoseph"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-07"},{"lineNumber":410,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":411,"author":{"gitId":"cyqjoseph"},"content":"**Use Case: View All Bookings**","lastModifiedDate":"2024-03-07"},{"lineNumber":412,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":413,"author":{"gitId":"cyqjoseph"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":414,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":415,"author":{"gitId":"cyqjoseph"},"content":"1. User requests to view all bookings.","lastModifiedDate":"2024-03-07"},{"lineNumber":416,"author":{"gitId":"cyqjoseph"},"content":"2. Dook retrieves and displays all bookings.","lastModifiedDate":"2024-03-07"},{"lineNumber":417,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":418,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":419,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":420,"author":{"gitId":"cyqjoseph"},"content":"**Extensions**","lastModifiedDate":"2024-03-07"},{"lineNumber":421,"author":{"gitId":"cyqjoseph"},"content":"* **2a. Unable to retrieve bookings.**","lastModifiedDate":"2024-03-07"},{"lineNumber":422,"author":{"gitId":"cyqjoseph"},"content":" * **2a1. Dook shows an error message.**","lastModifiedDate":"2024-03-07"},{"lineNumber":423,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":424,"author":{"gitId":"cyqjoseph"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":425,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":426,"author":{"gitId":"cyqjoseph"},"content":"**Use Case: Cancel Bookings**","lastModifiedDate":"2024-03-07"},{"lineNumber":427,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":428,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":429,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":430,"author":{"gitId":"cyqjoseph"},"content":"1. User requests to cancel a booking or all bookings.","lastModifiedDate":"2024-03-07"},{"lineNumber":431,"author":{"gitId":"cyqjoseph"},"content":"2. Dook asks for confirmation (if applicable).","lastModifiedDate":"2024-03-07"},{"lineNumber":432,"author":{"gitId":"cyqjoseph"},"content":"3. User confirms cancellation.","lastModifiedDate":"2024-03-07"},{"lineNumber":433,"author":{"gitId":"cyqjoseph"},"content":"4. Dook cancels the booking(s) and confirms to the user.","lastModifiedDate":"2024-03-07"},{"lineNumber":434,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":435,"author":{"gitId":"cyqjoseph"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":436,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":437,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2024-03-07"},{"lineNumber":438,"author":{"gitId":"cyqjoseph"},"content":"* **2a. User decides not to cancel after all.**","lastModifiedDate":"2024-03-07"},{"lineNumber":439,"author":{"gitId":"cyqjoseph"},"content":" * **2a1. Dook cancels the cancellation process.**","lastModifiedDate":"2024-03-07"},{"lineNumber":440,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":441,"author":{"gitId":"cyqjoseph"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":442,"author":{"gitId":"cyqjoseph"},"content":"* **3a. The specified booking does not exist.**","lastModifiedDate":"2024-03-07"},{"lineNumber":443,"author":{"gitId":"cyqjoseph"},"content":" * **3a1. Dook shows an error message.**","lastModifiedDate":"2024-03-07"},{"lineNumber":444,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":445,"author":{"gitId":"cyqjoseph"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":446,"author":{"gitId":"cyqjoseph"},"content":"* **4a. Error in deleting bookings.**","lastModifiedDate":"2024-03-07"},{"lineNumber":447,"author":{"gitId":"cyqjoseph"},"content":" * **4a1. Dook shows an error message.**","lastModifiedDate":"2024-03-07"},{"lineNumber":448,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":449,"author":{"gitId":"cyqjoseph"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":450,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":451,"author":{"gitId":"cyqjoseph"},"content":"**Use Case: Find Free Time**","lastModifiedDate":"2024-03-07"},{"lineNumber":452,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":453,"author":{"gitId":"cyqjoseph"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":454,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":455,"author":{"gitId":"cyqjoseph"},"content":"1. User requests to find free time for a contact.","lastModifiedDate":"2024-03-07"},{"lineNumber":456,"author":{"gitId":"cyqjoseph"},"content":"2. Dook retrieves and displays available time slots.","lastModifiedDate":"2024-03-07"},{"lineNumber":457,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":458,"author":{"gitId":"cyqjoseph"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":459,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":460,"author":{"gitId":"cyqjoseph"},"content":"**Extensions**","lastModifiedDate":"2024-03-07"},{"lineNumber":461,"author":{"gitId":"cyqjoseph"},"content":"* **2a. No free time slots are available.**","lastModifiedDate":"2024-03-07"},{"lineNumber":462,"author":{"gitId":"cyqjoseph"},"content":" * **2a1. Dook shows a message indicating no available time slots.**","lastModifiedDate":"2024-03-07"},{"lineNumber":463,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":464,"author":{"gitId":"cyqjoseph"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":465,"author":{"gitId":"cyqjoseph"},"content":"* **2b. The specified contact does not exist.**","lastModifiedDate":"2024-03-07"},{"lineNumber":466,"author":{"gitId":"cyqjoseph"},"content":" * **2b1. Dook prompts the user to select a valid contact.**","lastModifiedDate":"2024-03-07"},{"lineNumber":467,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":468,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23"},{"lineNumber":469,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":470,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":471,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":472,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":473,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":474,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":475,"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":476,"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":477,"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":478,"author":{"gitId":"cyqjoseph"},"content":"4. The system architecture should be designed to efficiently handle growth in data volume, capable of supporting at least 10 times the initial data volume without a complete overhaul.","lastModifiedDate":"2024-03-07"},{"lineNumber":479,"author":{"gitId":"cyqjoseph"},"content":"5. The system should include automated backup capabilities to prevent data loss and provide options for data recovery in case of system failure.","lastModifiedDate":"2024-03-07"},{"lineNumber":480,"author":{"gitId":"cyqjoseph"},"content":"6. Application should be able to use online and offline. ","lastModifiedDate":"2024-03-07"},{"lineNumber":481,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":482,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":483,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":484,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":485,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":486,"author":{"gitId":"cyqjoseph"},"content":"* **Professor**: Lecturer / Researcher in the National University of Singapore ","lastModifiedDate":"2024-03-07"},{"lineNumber":487,"author":{"gitId":"cyqjoseph"},"content":"* **SoC**: School of Computing in NUS","lastModifiedDate":"2024-03-07"},{"lineNumber":488,"author":{"gitId":"cyqjoseph"},"content":"* **Tutor**: Professor or Teaching Assistant in NUS SoC","lastModifiedDate":"2024-03-07"},{"lineNumber":489,"author":{"gitId":"cyqjoseph"},"content":"* **Consultation slot**: Time interval dedicated to a meeting","lastModifiedDate":"2024-03-07"},{"lineNumber":490,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":491,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":492,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":493,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":494,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":495,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":496,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":497,"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":498,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":499,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":500,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":501,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":502,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":503,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":504,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":505,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":506,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":507,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":508,"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":509,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":510,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":511,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":512,"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":513,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":514,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":515,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":516,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":517,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":518,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":519,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":520,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":521,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":522,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":523,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":524,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":525,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":526,"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":527,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":528,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":529,"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":530,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":531,"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":532,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":533,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":534,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":535,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":536,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":537,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":538,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":539,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":540,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":541,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":542,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":543,"author":{"gitId":"jerremyng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":544,"author":{"gitId":"jerremyng"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-03-24"},{"lineNumber":545,"author":{"gitId":"jerremyng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":546,"author":{"gitId":"jerremyng"},"content":"## **Acknowledgements**","lastModifiedDate":"2024-03-24"},{"lineNumber":547,"author":{"gitId":"jerremyng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":548,"author":{"gitId":"jerremyng"},"content":"* {list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well}","lastModifiedDate":"2024-03-24"},{"lineNumber":549,"author":{"gitId":"jerremyng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":550,"author":{"gitId":"jerremyng"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-03-24"}],"authorContributionMap":{"jerremyng":17,"cyqjoseph":160,"ChrysanthemumT":10,"-":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":"gauravuj"},"content":"Introducing Dook: a **cutting-edge desktop application** engineered for the ","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"gauravuj"},"content":"seamless management of consultations and contacts, blending the power of a","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"gauravuj"},"content":"**Command Line Interface (CLI)** with the intuitive accessibility of a **Graphical User","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"gauravuj"},"content":"Interface (GUI)**. Designed specifically for the dynamic needs of the NUS ","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"gauravuj"},"content":"School of Computing community, Dook centralizes faculty information","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"gauravuj"},"content":"in an innovative manner, standing on the foundation of AddressBook Level 3","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"gauravuj"},"content":"(AB3) as an advanced brownfield project. For the quick typist, Dook elevates","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"gauravuj"},"content":"your ability to swiftly organize your academic consultations with professors","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"gauravuj"},"content":"and teaching assistants, outpacing conventional GUI-based applications.","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","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":"## Quick start","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"1. Ensure you have Java `11` or above installed in your Computer.","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"1. Download the latest `addressbook.jar` from [here](https://github.com/se-edu/addressbook-level3/releases).","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your AddressBook.","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar addressbook.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2023-01-01"},{"lineNumber":30,"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":31,"author":{"gitId":"ChrysanthemumT"},"content":" ![Ui](images/NewUI.png)","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"jerremyng"},"content":"1. Type a command in the command box and press Enter to execute it. \u003cbr\u003e","lastModifiedDate":"2024-03-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"cyqjoseph"},"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":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2023-01-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","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":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"block\" class\u003d\"alert alert-info\"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"**:information_source: Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"cyqjoseph"},"content":" e.g. in `add -n NAME`, `NAME` is a parameter which can be used as `add -n John Doe`.","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"cyqjoseph"},"content":" e.g `-n NAME [-t TAG]` can be used as `-n John Doe -t friend` or as `-n John Doe`.","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"cyqjoseph"},"content":" e.g. `[-t TAG]…​` can be used as ` ` (i.e. 0 times), `-t friend`, `-t friend -t family` etc.","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"cyqjoseph"},"content":" e.g. if the command specifies `-n NAME -p PHONE_NUMBER`, `-p PHONE_NUMBER -n NAME` is also acceptable.","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"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":69,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":71,"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":72,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"Format: `help`","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":"### Adding a person: `add`","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"Adds a person to the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"cyqjoseph"},"content":"Format: `add -n NAME -p PHONE_NUMBER -e EMAIL -a ADDRESS [t/TAG]…​`","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Tip:**","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"A person can have any number of tags (including 0)","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"cyqjoseph"},"content":"* `add -n John Doe -p 98765432 -e johnd@example.com -a John street, block 123, #01-01`","lastModifiedDate":"2024-03-21"},{"lineNumber":95,"author":{"gitId":"cyqjoseph"},"content":"* `add -n Betsy Crowe -t friend -e betsycrowe@example.com -a Newgate Prison -p 1234567 -t criminal`","lastModifiedDate":"2024-03-21"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"### Listing all persons : `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"Shows a list of all persons in the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":"### Editing a person : `edit`","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":"Edits an existing person in the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"cyqjoseph"},"content":"Format: `edit INDEX [-n NAME] [-p PHONE] [-e EMAIL] [-a ADDRESS] [-t TAG]…​`","lastModifiedDate":"2024-03-21"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"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":110,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"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":113,"author":{"gitId":"cyqjoseph"},"content":"* You can remove all the person’s tags by typing `-t` without","lastModifiedDate":"2024-03-21"},{"lineNumber":114,"author":{"gitId":"-"},"content":" specifying any tags after it.","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"cyqjoseph"},"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":"2024-03-21"},{"lineNumber":118,"author":{"gitId":"cyqjoseph"},"content":"* `edit 2 -n Betsy Crower -t` Edits the name of the 2nd person to be `Betsy Crower` and clears all existing tags.","lastModifiedDate":"2024-03-21"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"### Locating persons by name: `find`","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":"Finds persons whose names contain any of the given keywords.","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","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":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"* `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"Deletes the specified person from the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"* Deletes the person at the specified `INDEX`.","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":"* `list` followed by `delete 2` deletes the 2nd person in the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"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":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"cyqjoseph"},"content":"### Adding a booking : `book`","lastModifiedDate":"2024-03-21"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"cyqjoseph"},"content":"Adds the specified booking to the address book.","lastModifiedDate":"2024-03-21"},{"lineNumber":155,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":156,"author":{"gitId":"cyqjoseph"},"content":"Format: `-n [description] -s [start_time] -e [end_time]`","lastModifiedDate":"2024-03-23"},{"lineNumber":157,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":158,"author":{"gitId":"cyqjoseph"},"content":"* Creates a booking with the specified parameters. ","lastModifiedDate":"2024-03-21"},{"lineNumber":159,"author":{"gitId":"cyqjoseph"},"content":"* Start and end time formats are in yyyy-mm-dd","lastModifiedDate":"2024-03-21"},{"lineNumber":160,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":161,"author":{"gitId":"cyqjoseph"},"content":"Examples:","lastModifiedDate":"2024-03-21"},{"lineNumber":162,"author":{"gitId":"cyqjoseph"},"content":"* `book -n John\u0027s Birthday Party -s 2023-12-31 19:00 -e 2023-12-31 23:00`","lastModifiedDate":"2024-03-21"},{"lineNumber":163,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":164,"author":{"gitId":"cyqjoseph"},"content":"### Cancelling a booking : `cancel`","lastModifiedDate":"2024-03-21"},{"lineNumber":165,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":166,"author":{"gitId":"cyqjoseph"},"content":"Cancels the specified booking from the address book.","lastModifiedDate":"2024-03-21"},{"lineNumber":167,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":168,"author":{"gitId":"cyqjoseph"},"content":"Format: `cancel INDEX`","lastModifiedDate":"2024-03-21"},{"lineNumber":169,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":170,"author":{"gitId":"cyqjoseph"},"content":"* Deletes the person at the specified `INDEX`.","lastModifiedDate":"2024-03-21"},{"lineNumber":171,"author":{"gitId":"cyqjoseph"},"content":"* The index refers to the index number shown in the displayed booking list.","lastModifiedDate":"2024-03-21"},{"lineNumber":172,"author":{"gitId":"cyqjoseph"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-03-21"},{"lineNumber":173,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":174,"author":{"gitId":"cyqjoseph"},"content":"### Searching for a booking : `search`","lastModifiedDate":"2024-03-23"},{"lineNumber":175,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":176,"author":{"gitId":"cyqjoseph"},"content":"Searches for the specified booking from the address book.","lastModifiedDate":"2024-03-23"},{"lineNumber":177,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":178,"author":{"gitId":"cyqjoseph"},"content":"Format: `search KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2024-03-23"},{"lineNumber":179,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":180,"author":{"gitId":"cyqjoseph"},"content":"* The search is case-insensitive. e.g `john` will match `John`","lastModifiedDate":"2024-03-23"},{"lineNumber":181,"author":{"gitId":"cyqjoseph"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2024-03-23"},{"lineNumber":182,"author":{"gitId":"cyqjoseph"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2024-03-23"},{"lineNumber":183,"author":{"gitId":"cyqjoseph"},"content":" e.g. `John` will return `Johns Birthday Party`, `Dinner with John`","lastModifiedDate":"2024-03-23"},{"lineNumber":184,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":185,"author":{"gitId":"cyqjoseph"},"content":"### Clearing all contact entries : `clear`","lastModifiedDate":"2024-03-21"},{"lineNumber":186,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":187,"author":{"gitId":"cyqjoseph"},"content":"Clears all contact entries from the address book.","lastModifiedDate":"2024-03-21"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"cyqjoseph"},"content":"Examples:","lastModifiedDate":"2024-03-21"},{"lineNumber":192,"author":{"gitId":"cyqjoseph"},"content":"* `list` followed by `delete 2` deletes the 2nd person in the address book.","lastModifiedDate":"2024-03-21"},{"lineNumber":193,"author":{"gitId":"cyqjoseph"},"content":"* `find Betsy` followed by `delete 1` deletes the 1st person in the results of the `find` command.","lastModifiedDate":"2024-03-21"},{"lineNumber":194,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":195,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"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":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":207,"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":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":209,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e:exclamation: **Caution:**","lastModifiedDate":"2021-02-04"},{"lineNumber":210,"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.\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":211,"author":{"gitId":"-"},"content":"Furthermore, certain edits can cause the AddressBook to behave in unexpected ways (e.g., if a value entered is outside of the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.","lastModifiedDate":"2024-02-09"},{"lineNumber":212,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-02-04"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":214,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"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":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":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":229,"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":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":231,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":233,"author":{"gitId":"gauravuj"},"content":"## Address Book Command summary","lastModifiedDate":"2024-03-20"},{"lineNumber":234,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":235,"author":{"gitId":"cyqjoseph"},"content":"| Action | Format, Examples |","lastModifiedDate":"2024-03-21"},{"lineNumber":236,"author":{"gitId":"cyqjoseph"},"content":"|------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|","lastModifiedDate":"2024-03-21"},{"lineNumber":237,"author":{"gitId":"cyqjoseph"},"content":"| **Add** | `add -n NAME -p PHONE_NUMBER -e EMAIL -a ADDRESS [-t TAG]…​` \u003cbr\u003e e.g., `add -n John Doe -p 22224444 -e jamesho@example.com -a 123, Clementi Rd, 1234665 -t friend t/colleague` |","lastModifiedDate":"2024-03-21"},{"lineNumber":238,"author":{"gitId":"cyqjoseph"},"content":"| **Clear** | `clear` |","lastModifiedDate":"2024-03-21"},{"lineNumber":239,"author":{"gitId":"cyqjoseph"},"content":"| **Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3` |","lastModifiedDate":"2024-03-21"},{"lineNumber":240,"author":{"gitId":"cyqjoseph"},"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":"2024-03-21"},{"lineNumber":241,"author":{"gitId":"cyqjoseph"},"content":"| **Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake` |","lastModifiedDate":"2024-03-21"},{"lineNumber":242,"author":{"gitId":"cyqjoseph"},"content":"| **List** | `list` |","lastModifiedDate":"2024-03-21"},{"lineNumber":243,"author":{"gitId":"cyqjoseph"},"content":"| **Help** | `help` |","lastModifiedDate":"2024-03-21"},{"lineNumber":244,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":245,"author":{"gitId":"gauravuj"},"content":"## Booking List Command summary","lastModifiedDate":"2024-03-20"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"cyqjoseph"},"content":"| Action | Format, Examples |","lastModifiedDate":"2024-03-19"},{"lineNumber":248,"author":{"gitId":"gauravuj"},"content":"|---------------|------------------------------------------------------------------------------------------------------------------------------------|","lastModifiedDate":"2024-03-20"},{"lineNumber":249,"author":{"gitId":"gauravuj"},"content":"| **Book** | `book -n DESCRIPTION -s START_TIME -e END_TIME` \u003cbr\u003e e.g., `book -n John\u0027s Birthday Party -s 2024-03-01 19:00 -e 2024-03-01 23:00` |","lastModifiedDate":"2024-03-20"},{"lineNumber":250,"author":{"gitId":"gauravuj"},"content":"| **View** | `view -b` |","lastModifiedDate":"2024-03-20"},{"lineNumber":251,"author":{"gitId":"gauravuj"},"content":"| **Cancel** | `cancel INDEX` or `cancel -a` or `cancel sudo -a` \u003cbr\u003e e.g., `cancel 2` |","lastModifiedDate":"2024-03-20"},{"lineNumber":252,"author":{"gitId":"gauravuj"},"content":"| **Edit** | `edit INDEX [-n DESCRIPTION] [-s START_TIME] [-e END_TIME]`\u003cbr\u003e e.g.,`edit 2 -n Prof Aaron\u0027s Consultation -s 2024-03-01 14:30` |","lastModifiedDate":"2024-03-20"},{"lineNumber":253,"author":{"gitId":"cyqjoseph"},"content":"| **Search** | `search KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `search Prof Lee\u0027s Consultation` |","lastModifiedDate":"2024-03-23"},{"lineNumber":254,"author":{"gitId":"cyqjoseph"},"content":"| **Free Time** | `check -ft -n NAME`\u003cbr\u003e e.g., `check -ft -n Prof Damith` |","lastModifiedDate":"2024-03-23"}],"authorContributionMap":{"gauravuj":18,"jerremyng":1,"ChrysanthemumT":1,"cyqjoseph":63,"-":171}},{"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":"jerremyng"},"content":" content: \"dook\";","lastModifiedDate":"2024-03-06"},{"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":{"jerremyng":1,"-":294}},{"path":"docs/_sass/minima/_layout.scss","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" * Site header","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":".site-header {","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":" border-top: 5px solid $brand-color-dark;","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":" border-bottom: 1px solid $brand-color-light;","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":" min-height: $spacing-unit * 1.865;","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":" line-height: $base-line-height * $base-font-size * 2.25;","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":" // Positioning context for the mobile navigation icon","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":" position: relative;","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":".site-title {","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @include relative-font-size(1.625);","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":" font-weight: 300;","lastModifiedDate":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":" letter-spacing: -1px;","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":" margin-bottom: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":" float: left;","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @include media-query($on-palm) {","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":" padding-right: 45px;","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":" \u0026,","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u0026:visited {","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":" color: $brand-color-dark;","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":".site-nav {","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" position: absolute;","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" top: 9px;","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" right: $spacing-unit / 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" background-color: $background-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":" border: 1px solid $brand-color-light;","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" border-radius: 5px;","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" text-align: right;","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" .nav-trigger {","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" display: none;","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" .menu-icon {","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" float: right;","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" width: 36px;","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" height: 26px;","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" line-height: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" padding-top: 10px;","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" text-align: center;","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003e svg path {","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" fill: $brand-color-dark;","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":" label[for\u003d\"nav-trigger\"] {","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" float: right;","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" width: 36px;","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" height: 36px;","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":" z-index: 2;","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":" cursor: pointer;","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" input ~ .trigger {","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" clear: both;","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" display: none;","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":" input:checked ~ .trigger {","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" padding-bottom: 5px;","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":" .page-link {","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" color: $text-color;","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" line-height: $base-line-height;","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" padding: 5px 10px;","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" // Gaps between nav items, but not on the last one","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" \u0026:not(:last-child) {","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" margin-right: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" margin-left: 20px;","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":"-"},"content":" @media screen and (min-width: $on-medium) {","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" position: static;","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":" float: right;","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" border: none;","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" background-color: inherit;","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" label[for\u003d\"nav-trigger\"] {","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":" display: none;","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":" .menu-icon {","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":" display: none;","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":" input ~ .trigger {","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":" .page-link {","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":" display: inline;","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":" padding: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" \u0026:not(:last-child) {","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" margin-right: 20px;","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":" margin-left: auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","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":" * Page content","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":".page-content {","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":" padding: $spacing-unit 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":" flex: 1 0 auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":".page-heading {","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" @include relative-font-size(2);","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":".post-list-heading {","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":" @include relative-font-size(1.75);","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":".post-list {","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":" margin-left: 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":" list-style: none;","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" \u003e li {","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":".post-meta {","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" font-size: $small-font-size;","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":" color: $brand-color;","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":".post-link {","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":" @include relative-font-size(1.5);","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":" * Posts","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":".post-header {","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","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":"-"},"content":".post-title,","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":".post-content h1 {","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":" @include relative-font-size(2.625);","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":" letter-spacing: -1px;","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":" line-height: 1.15;","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":" @media screen and (min-width: $on-large) {","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":" @include relative-font-size(2.625);","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":"","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":".post-content {","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":" h1, h2, h3 { margin-top: $spacing-unit * 2 }","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":" h4, h5, h6 { margin-top: $spacing-unit }","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":" h2 {","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":" @include relative-font-size(1.75);","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":" @media screen and (min-width: $on-large) {","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":" @include relative-font-size(2);","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":" h3 {","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":" @include relative-font-size(1.375);","lastModifiedDate":"2020-05-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":" @media screen and (min-width: $on-large) {","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":" @include relative-font-size(1.625);","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":" h4 {","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":" @include relative-font-size(1.25);","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":" h5 {","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":" @include relative-font-size(1.125);","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":" h6 {","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":" @include relative-font-size(1.0625);","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":"","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"jerremyng"},"content":"#markdown-toc {","lastModifiedDate":"2024-03-24"},{"lineNumber":211,"author":{"gitId":"jerremyng"},"content":" display: inline;","lastModifiedDate":"2024-03-24"},{"lineNumber":212,"author":{"gitId":"jerremyng"},"content":" position: fixed; /* Fixed position */","lastModifiedDate":"2024-03-24"},{"lineNumber":213,"author":{"gitId":"jerremyng"},"content":" top: 0; /* Stick to the top of the viewport */","lastModifiedDate":"2024-03-24"},{"lineNumber":214,"author":{"gitId":"jerremyng"},"content":" right: 0; /* Align to the left */","lastModifiedDate":"2024-03-24"},{"lineNumber":215,"author":{"gitId":"jerremyng"},"content":" width: 200px; /* Set the width of the sidebar */","lastModifiedDate":"2024-03-24"},{"lineNumber":216,"author":{"gitId":"jerremyng"},"content":" height: 100%; /* Make it full height */","lastModifiedDate":"2024-03-24"},{"lineNumber":217,"author":{"gitId":"jerremyng"},"content":" padding: $spacing-unit; /* Add some padding */","lastModifiedDate":"2024-03-24"},{"lineNumber":218,"author":{"gitId":"jerremyng"},"content":" overflow-y: auto; /* Allow scrolling if content exceeds sidebar height */","lastModifiedDate":"2024-03-24"},{"lineNumber":219,"author":{"gitId":"jerremyng"},"content":" margin-top: $spacing-unit * 1.865;","lastModifiedDate":"2024-03-24"},{"lineNumber":220,"author":{"gitId":"jerremyng"},"content":" background-color: inherit;","lastModifiedDate":"2024-03-24"},{"lineNumber":221,"author":{"gitId":"jerremyng"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":222,"author":{"gitId":"jerremyng"},"content":"}","lastModifiedDate":"2024-03-24"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":".social-media-list {","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":" display: table;","lastModifiedDate":"2020-05-23"},{"lineNumber":226,"author":{"gitId":"-"},"content":" margin: 0 auto;","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":" li {","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":" float: left;","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":" margin: 5px 10px 5px 0;","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":" \u0026:last-of-type { margin-right: 0 }","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":" a {","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":" padding: $spacing-unit / 4;","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":" border: 1px solid $brand-color-light;","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":" \u0026:hover { border-color: darken($brand-color-light, 10%) }","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":" }","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":"","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":" * Pagination navbar","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":".pagination {","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":" @extend .social-media-list;","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":" li {","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":" a, div {","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":" min-width: 41px;","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":" text-align: center;","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":" box-sizing: border-box;","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":" div {","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":" padding: $spacing-unit / 4;","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":" border: 1px solid transparent;","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":259,"author":{"gitId":"-"},"content":" \u0026.pager-edge {","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":" color: darken($brand-color-light, 5%);","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":" border: 1px dashed;","lastModifiedDate":"2020-05-23"},{"lineNumber":262,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"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":"","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":"","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":" * Grid helpers","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"@media screen and (min-width: $on-large) {","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":" .one-half {","lastModifiedDate":"2020-05-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":" width: calc(50% - (#{$spacing-unit} / 2));","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"jerremyng":13,"-":263}},{"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":"jerremyng"},"content":"skinparam {","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"jerremyng"},"content":" arrowThickness 1.1","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"jerremyng"},"content":" arrowColor MODEL_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"jerremyng"},"content":" classBackgroundColor MODEL_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"jerremyng"},"content":" classBorderColor MODEL_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"jerremyng"},"content":" ClassStereotypeFontColor MODEL_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"jerremyng"},"content":" classBorderColor\u003c\u003chide\u003e\u003e #FFFFFF","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"jerremyng"},"content":" ClassStereotypeFontColor\u003c\u003chide\u003e\u003e #FFFFFF","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"jerremyng"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"Package Model as ModelPackage \u003c\u003cRectangle\u003e\u003e{","lastModifiedDate":"2023-07-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyAddressBook\" as ReadOnlyAddressBook","lastModifiedDate":"2022-01-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyUserPrefs\" as ReadOnlyUserPrefs","lastModifiedDate":"2022-01-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nModel\" as Model","lastModifiedDate":"2022-01-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Class AddressBook","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Class ModelManager","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Class UserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":"Class UniqueBookingList","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Class UniquePersonList","lastModifiedDate":"2021-07-31"},{"lineNumber":23,"author":{"gitId":"jerremyng"},"content":"together{","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"jerremyng"},"content":" Class \"FilteredList \u003cPerson\u003e\" as FilteredListPerson","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"jerremyng"},"content":" Class \"FilteredList \u003cBooking\u003e\" as FilteredListBooking","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"jerremyng"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"jerremyng"},"content":"note \"Used by UI component for display to user\" as N1","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"jerremyng"},"content":"FilteredListPerson .right. N1","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"jerremyng"},"content":"FilteredListBooking .. N1","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"jerremyng"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":"Class Person","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"Class Address","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"Class Email","lastModifiedDate":"2019-07-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"Class Name","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"Class Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":36,"author":{"gitId":"-"},"content":"Class Tag","lastModifiedDate":"2019-07-03"},{"lineNumber":37,"author":{"gitId":"cyqjoseph"},"content":"Class Booking","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"cyqjoseph"},"content":"Class Description","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"cyqjoseph"},"content":"Class StartTime","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"cyqjoseph"},"content":"Class EndTime","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":44,"author":{"gitId":"jerremyng"},"content":"Class HiddenOutside \u003c\u003chide\u003e\u003e #FFFFFF","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":47,"author":{"gitId":"-"},"content":"Model .right.\u003e ReadOnlyUserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":48,"author":{"gitId":"-"},"content":"Model .left.\u003e ReadOnlyAddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":49,"author":{"gitId":"jerremyng"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"jerremyng"},"content":"ModelManager .up.|\u003e Model","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"jerremyng"},"content":"AddressBook .up.|\u003e ReadOnlyAddressBook","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"jerremyng"},"content":"UserPrefs .up.|\u003e ReadOnlyUserPrefs","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"jerremyng"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"-"},"content":"ModelManager -left-\u003e \"1\" AddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":55,"author":{"gitId":"-"},"content":"ModelManager -right-\u003e \"1\" UserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":56,"author":{"gitId":"jerremyng"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"jerremyng"},"content":"ModelManager --\u003e \"1\" FilteredListPerson","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"jerremyng"},"content":"ModelManager --\u003e \"1\" FilteredListBooking","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":60,"author":{"gitId":"-"},"content":"AddressBook *--\u003e \"1\" UniquePersonList","lastModifiedDate":"2019-07-30"},{"lineNumber":61,"author":{"gitId":"cyqjoseph"},"content":"AddressBook *--\u003e \"1\" UniqueBookingList","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"jerremyng"},"content":"UniqueBookingList --\u003e \"~*\" Booking","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"jerremyng"},"content":"UniquePersonList --\u003e \"~*\" Person","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"jerremyng"},"content":"Person *--\u003e \"1\" Name","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"jerremyng"},"content":"Person *--\u003e \"0..1\" Phone","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"jerremyng"},"content":"Person *--\u003e \"0..1\" Email","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"jerremyng"},"content":"Person *--\u003e \"0..1\" Address","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"-"},"content":"Person *--\u003e \"*\" Tag","lastModifiedDate":"2019-07-03"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":71,"author":{"gitId":"-"},"content":"Name -[hidden]right-\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":72,"author":{"gitId":"-"},"content":"Phone -[hidden]right-\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":73,"author":{"gitId":"-"},"content":"Address -[hidden]right-\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":74,"author":{"gitId":"jerremyng"},"content":"Email -[hidden]right-\u003e Tag","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":76,"author":{"gitId":"jerremyng"},"content":"Booking *--\u003e\"1\" Description","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"jerremyng"},"content":"Booking *--\u003e \"1\" StartTime","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"jerremyng"},"content":"Booking *--\u003e \"1\" EndTime","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"jerremyng":36,"cyqjoseph":6,"-":38}},{"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":"cyqjoseph"},"content":"Class JsonAdaptedBooking","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Class JsonAdaptedPerson","lastModifiedDate":"2021-07-31"},{"lineNumber":23,"author":{"gitId":"-"},"content":"Class JsonAdaptedTag","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":"","lastModifiedDate":"2021-07-31"},{"lineNumber":28,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2021-07-31"},{"lineNumber":29,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Storage","lastModifiedDate":"2021-07-31"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":31,"author":{"gitId":"-"},"content":"StorageManager .up.|\u003e Storage","lastModifiedDate":"2021-07-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"StorageManager -up-\u003e \"1\" UserPrefsStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":33,"author":{"gitId":"-"},"content":"StorageManager -up-\u003e \"1\" AddressBookStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"Storage -left-|\u003e UserPrefsStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"Storage -right-|\u003e AddressBookStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"JsonUserPrefsStorage .up.|\u003e UserPrefsStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":39,"author":{"gitId":"-"},"content":"JsonAddressBookStorage .up.|\u003e AddressBookStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":40,"author":{"gitId":"-"},"content":"JsonAddressBookStorage ..\u003e JsonSerializableAddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":41,"author":{"gitId":"-"},"content":"JsonSerializableAddressBook --\u003e \"*\" JsonAdaptedPerson","lastModifiedDate":"2021-07-31"},{"lineNumber":42,"author":{"gitId":"cyqjoseph"},"content":"JsonSerializableAddressBook --\u003e \"*\" JsonAdaptedBooking","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":"JsonAdaptedPerson --\u003e \"*\" JsonAdaptedTag","lastModifiedDate":"2021-07-31"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-03-31"},{"lineNumber":45,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"cyqjoseph":2,"-":43}},{"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":"-"},"content":"Class PersonListPanel","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"Class PersonCard","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"gauravuj"},"content":"Class BookingListPanel","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"gauravuj"},"content":"Class BookingCard","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Class StatusBarFooter","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Class CommandBox","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"package Model \u003c\u003cRectangle\u003e\u003e {","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"Class HiddenModel #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"package Logic \u003c\u003cRectangle\u003e\u003e {","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"Class HiddenLogic #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Ui","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"UiManager .left.|\u003e Ui","lastModifiedDate":"2019-07-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"UiManager -down-\u003e \"1\" MainWindow","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" CommandBox","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" ResultDisplay","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" PersonListPanel","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" StatusBarFooter","lastModifiedDate":"2021-07-31"},{"lineNumber":39,"author":{"gitId":"-"},"content":"MainWindow --\u003e \"0..1\" HelpWindow","lastModifiedDate":"2021-07-31"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"PersonListPanel -down-\u003e \"*\" PersonCard","lastModifiedDate":"2021-07-31"},{"lineNumber":42,"author":{"gitId":"gauravuj"},"content":"MainWindow *-down-\u003e \"1\" BookingListPanel","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"gauravuj"},"content":"BookingListPanel -down-\u003e \"*\" BookingCard","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"MainWindow -left-|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":47,"author":{"gitId":"-"},"content":"ResultDisplay --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":48,"author":{"gitId":"-"},"content":"CommandBox --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":49,"author":{"gitId":"-"},"content":"PersonListPanel --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":50,"author":{"gitId":"-"},"content":"PersonCard --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"StatusBarFooter --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":52,"author":{"gitId":"-"},"content":"HelpWindow --|\u003e UiPart","lastModifiedDate":"2021-07-31"},{"lineNumber":53,"author":{"gitId":"gauravuj"},"content":"BookingListPanel --|\u003e UiPart","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"gauravuj"},"content":"BookingCard --|\u003e UiPart","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":"PersonCard ..\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":57,"author":{"gitId":"gauravuj"},"content":"BookingCard ..\u003e Model","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":"UiManager -right-\u003e Logic","lastModifiedDate":"2019-07-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":"MainWindow -left-\u003e Logic","lastModifiedDate":"2019-07-03"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":61,"author":{"gitId":"-"},"content":"PersonListPanel -[hidden]left- HelpWindow","lastModifiedDate":"2019-07-03"},{"lineNumber":62,"author":{"gitId":"-"},"content":"HelpWindow -[hidden]left- CommandBox","lastModifiedDate":"2019-07-03"},{"lineNumber":63,"author":{"gitId":"-"},"content":"CommandBox -[hidden]left- ResultDisplay","lastModifiedDate":"2019-07-03"},{"lineNumber":64,"author":{"gitId":"-"},"content":"ResultDisplay -[hidden]left- StatusBarFooter","lastModifiedDate":"2019-07-30"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":66,"author":{"gitId":"-"},"content":"MainWindow -[hidden]-|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":67,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"gauravuj":7,"-":60}},{"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":"cyqjoseph"},"content":"title: Dook","lastModifiedDate":"2024-03-06"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"jerremyng"},"content":"[![CI Status](https://github.com/AY2324S2-CS2103T-W11-3/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S2-CS2103T-W11-3/tp/actions)","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"jerremyng"},"content":"[![codecov](https://codecov.io/gh/AY2324S2-CS2103T-W11-3/tp/branch/master/graph/badge.svg)](https://codecov.io/gh/AY2324S2-CS2103T-W11-3/tp)","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"jerremyng"},"content":"![Ui](images/NewUi.png)","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"jerremyng"},"content":"**Dook** is an application to help **NUS School of Computing (SoC) students find contacts within SoC** and **book consultation slots with their Professors and Teaching Assistants**.\u003cbr\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"jerremyng"},"content":"* For a quick start, checkout our [_Quick Start_ section](UserGuide.md).","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"jerremyng"},"content":"* To contribute, checkout the [**Developer Guide**](DeveloperGuide.md).","lastModifiedDate":"2024-03-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":"jerremyng"},"content":"* This project is based on the [AddressBook-Level3](https://github.com/se-edu/addressbook-level3) project created by the [SE-EDU initiative](https://se-education.org))","lastModifiedDate":"2024-03-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":{"jerremyng":7,"cyqjoseph":1,"-":11}},{"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.storage.AddressBookStorage;","lastModifiedDate":"2017-02-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2017-02-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2016-09-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.storage.UserPrefsStorage;","lastModifiedDate":"2017-02-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.ui.Ui;","lastModifiedDate":"2016-09-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.ui.UiManager;","lastModifiedDate":"2016-09-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Runs the application.","lastModifiedDate":"2019-02-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":"public class MainApp extends Application {","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final Version VERSION \u003d new Version(0, 2, 2, true);","lastModifiedDate":"2023-08-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(MainApp.class);","lastModifiedDate":"2017-04-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":" protected Ui ui;","lastModifiedDate":"2016-09-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" protected Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" protected Storage storage;","lastModifiedDate":"2016-09-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" protected Model model;","lastModifiedDate":"2016-09-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" protected Config config;","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void init() throws Exception {","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"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":51,"author":{"gitId":"-"},"content":" super.init();","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" AppParameters appParameters \u003d AppParameters.parse(getParameters());","lastModifiedDate":"2018-04-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" config \u003d initConfig(appParameters.getConfigPath());","lastModifiedDate":"2018-04-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" initLogging(config);","lastModifiedDate":"2023-07-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":" UserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(config.getUserPrefsFilePath());","lastModifiedDate":"2017-02-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d initPrefs(userPrefsStorage);","lastModifiedDate":"2018-12-06"},{"lineNumber":59,"author":{"gitId":"-"},"content":" AddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(userPrefs.getAddressBookFilePath());","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2017-02-25"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" model \u003d initModelManager(storage, userPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":" ui \u003d new UiManager(logic);","lastModifiedDate":"2018-12-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":70,"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":71,"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":72,"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":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":74,"author":{"gitId":"-"},"content":" private Model initModelManager(Storage storage, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":75,"author":{"gitId":"-"},"content":" logger.info(\"Using data file : \" + storage.getAddressBookFilePath());","lastModifiedDate":"2023-07-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":77,"author":{"gitId":"-"},"content":" Optional\u003cReadOnlyAddressBook\u003e addressBookOptional;","lastModifiedDate":"2016-09-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook initialData;","lastModifiedDate":"2016-09-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":" addressBookOptional \u003d storage.readAddressBook();","lastModifiedDate":"2016-09-25"},{"lineNumber":81,"author":{"gitId":"-"},"content":" if (!addressBookOptional.isPresent()) {","lastModifiedDate":"2016-09-24"},{"lineNumber":82,"author":{"gitId":"jerremyng"},"content":" logger.info(\"Creating a new data file \" + storage.getAddressBookFilePath());","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":84,"author":{"gitId":"jerremyng"},"content":" initialData \u003d addressBookOptional.orElseGet(() -\u003e new AddressBook());","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":86,"author":{"gitId":"-"},"content":" logger.warning(\"Data file at \" + storage.getAddressBookFilePath() + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" + \" Will be starting with an empty AddressBook.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":" initialData \u003d new AddressBook();","lastModifiedDate":"2016-09-24"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":" return new ModelManager(initialData, userPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":94,"author":{"gitId":"-"},"content":" private void initLogging(Config config) {","lastModifiedDate":"2016-09-24"},{"lineNumber":95,"author":{"gitId":"-"},"content":" LogsCenter.init(config);","lastModifiedDate":"2016-09-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":98,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * Returns a {@code Config} using the file at {@code configFilePath}. \u003cbr\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * The default file path {@code Config#DEFAULT_CONFIG_FILE} will be used instead","lastModifiedDate":"2017-08-16"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * if {@code configFilePath} is null.","lastModifiedDate":"2017-08-16"},{"lineNumber":102,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":103,"author":{"gitId":"-"},"content":" protected Config initConfig(Path configFilePath) {","lastModifiedDate":"2018-04-21"},{"lineNumber":104,"author":{"gitId":"-"},"content":" Config initializedConfig;","lastModifiedDate":"2016-09-24"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Path configFilePathUsed;","lastModifiedDate":"2018-04-21"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":107,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d Config.DEFAULT_CONFIG_FILE;","lastModifiedDate":"2016-09-24"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":" if (configFilePath !\u003d null) {","lastModifiedDate":"2016-09-24"},{"lineNumber":110,"author":{"gitId":"-"},"content":" logger.info(\"Custom Config file specified \" + configFilePath);","lastModifiedDate":"2016-09-24"},{"lineNumber":111,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d configFilePath;","lastModifiedDate":"2016-09-24"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" logger.info(\"Using config file : \" + configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":116,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":117,"author":{"gitId":"-"},"content":" Optional\u003cConfig\u003e configOptional \u003d ConfigUtil.readConfig(configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":118,"author":{"gitId":"-"},"content":" if (!configOptional.isPresent()) {","lastModifiedDate":"2023-01-03"},{"lineNumber":119,"author":{"gitId":"-"},"content":" logger.info(\"Creating new config file \" + configFilePathUsed);","lastModifiedDate":"2023-05-15"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03"},{"lineNumber":121,"author":{"gitId":"-"},"content":" initializedConfig \u003d configOptional.orElse(new Config());","lastModifiedDate":"2016-09-24"},{"lineNumber":122,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" logger.warning(\"Config file at \" + configFilePathUsed + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":124,"author":{"gitId":"-"},"content":" + \" Using default config properties.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":125,"author":{"gitId":"-"},"content":" initializedConfig \u003d new Config();","lastModifiedDate":"2016-09-24"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":128,"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":129,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":130,"author":{"gitId":"-"},"content":" ConfigUtil.saveConfig(initializedConfig, configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":131,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":132,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":134,"author":{"gitId":"-"},"content":" return initializedConfig;","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":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":138,"author":{"gitId":"-"},"content":" * Returns a {@code UserPrefs} using the file at {@code storage}\u0027s user prefs file path,","lastModifiedDate":"2017-08-16"},{"lineNumber":139,"author":{"gitId":"-"},"content":" * or a new {@code UserPrefs} with default configuration if errors occur when","lastModifiedDate":"2017-08-16"},{"lineNumber":140,"author":{"gitId":"-"},"content":" * reading from the file.","lastModifiedDate":"2017-08-16"},{"lineNumber":141,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":142,"author":{"gitId":"-"},"content":" protected UserPrefs initPrefs(UserPrefsStorage storage) {","lastModifiedDate":"2017-02-25"},{"lineNumber":143,"author":{"gitId":"-"},"content":" Path prefsFilePath \u003d storage.getUserPrefsFilePath();","lastModifiedDate":"2018-04-21"},{"lineNumber":144,"author":{"gitId":"-"},"content":" logger.info(\"Using preference file : \" + prefsFilePath);","lastModifiedDate":"2023-05-15"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":146,"author":{"gitId":"-"},"content":" UserPrefs initializedPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":147,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":148,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e prefsOptional \u003d storage.readUserPrefs();","lastModifiedDate":"2016-09-25"},{"lineNumber":149,"author":{"gitId":"-"},"content":" if (!prefsOptional.isPresent()) {","lastModifiedDate":"2023-01-03"},{"lineNumber":150,"author":{"gitId":"-"},"content":" logger.info(\"Creating new preference file \" + prefsFilePath);","lastModifiedDate":"2023-05-15"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03"},{"lineNumber":152,"author":{"gitId":"-"},"content":" initializedPrefs \u003d prefsOptional.orElse(new UserPrefs());","lastModifiedDate":"2016-09-24"},{"lineNumber":153,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":154,"author":{"gitId":"-"},"content":" logger.warning(\"Preference file at \" + prefsFilePath + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":155,"author":{"gitId":"-"},"content":" + \" Using default preferences.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":156,"author":{"gitId":"-"},"content":" initializedPrefs \u003d new UserPrefs();","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":" //Update prefs file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24"},{"lineNumber":160,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":161,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(initializedPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":162,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":163,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":166,"author":{"gitId":"-"},"content":" return initializedPrefs;","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":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":" public void start(Stage primaryStage) {","lastModifiedDate":"2016-08-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":" logger.info(\"Starting AddressBook \" + MainApp.VERSION);","lastModifiedDate":"2016-09-29"},{"lineNumber":172,"author":{"gitId":"-"},"content":" ui.start(primaryStage);","lastModifiedDate":"2016-09-25"},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":" public void stop() {","lastModifiedDate":"2016-08-08"},{"lineNumber":177,"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":178,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":179,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(model.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":180,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":181,"author":{"gitId":"-"},"content":" logger.severe(\"Failed to save preferences \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":184,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"jerremyng":2,"-":182}},{"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":"-"},"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":"ChrysanthemumT"},"content":" private static final String DEFAULT_THEME \u003d \"DarkTheme\";","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private final double windowWidth;","lastModifiedDate":"2018-11-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final double windowHeight;","lastModifiedDate":"2018-11-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final Point windowCoordinates;","lastModifiedDate":"2018-11-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"ChrysanthemumT"},"content":" private Theme theme;","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Constructs a {@code GuiSettings} with the default height, width and position.","lastModifiedDate":"2020-05-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public GuiSettings() {","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" windowWidth \u003d DEFAULT_WIDTH;","lastModifiedDate":"2018-08-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":" windowHeight \u003d DEFAULT_HEIGHT;","lastModifiedDate":"2018-08-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":" windowCoordinates \u003d null; // null represent no coordinates","lastModifiedDate":"2018-08-14"},{"lineNumber":32,"author":{"gitId":"ChrysanthemumT"},"content":" theme \u003d Theme.DARKTHEME;","lastModifiedDate":"2024-03-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":"2020-05-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Constructs a {@code GuiSettings} with the specified height, width and position.","lastModifiedDate":"2020-05-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":38,"author":{"gitId":"ChrysanthemumT"},"content":" public GuiSettings(double windowWidth, double windowHeight, int xPosition, int yPosition, String theme) {","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.windowWidth \u003d windowWidth;","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.windowHeight \u003d windowHeight;","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" windowCoordinates \u003d new Point(xPosition, yPosition);","lastModifiedDate":"2018-08-14"},{"lineNumber":42,"author":{"gitId":"ChrysanthemumT"},"content":" this.theme \u003d Theme.valueOf(theme);","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public double getWindowWidth() {","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" return windowWidth;","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":" public double getWindowHeight() {","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return windowHeight;","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":" public Point getWindowCoordinates() {","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return windowCoordinates !\u003d null ? new Point(windowCoordinates) : null;","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":57,"author":{"gitId":"ChrysanthemumT"},"content":" public Theme getDefaultTheme() {","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"ChrysanthemumT"},"content":" return Theme.DARKTHEME;","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"ChrysanthemumT"},"content":" public Theme getTheme() {","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"ChrysanthemumT"},"content":" return this.theme;","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"ChrysanthemumT"},"content":" public String getStringTheme() {","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"ChrysanthemumT"},"content":" return this.theme.toString();","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"ChrysanthemumT"},"content":" public void setTheme(Theme theme) {","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"ChrysanthemumT"},"content":" this.theme \u003d theme;","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2016-09-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2016-09-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" if (!(other instanceof GuiSettings)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2016-09-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":" GuiSettings otherGuiSettings \u003d (GuiSettings) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return windowWidth \u003d\u003d otherGuiSettings.windowWidth","lastModifiedDate":"2023-07-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" \u0026\u0026 windowHeight \u003d\u003d otherGuiSettings.windowHeight","lastModifiedDate":"2023-07-13"},{"lineNumber":86,"author":{"gitId":"ChrysanthemumT"},"content":" \u0026\u0026 Objects.equals(windowCoordinates, otherGuiSettings.windowCoordinates)","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"ChrysanthemumT"},"content":" \u0026\u0026 theme.equals(otherGuiSettings.theme);","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-24"},{"lineNumber":92,"author":{"gitId":"ChrysanthemumT"},"content":" return Objects.hash(windowWidth, windowHeight, windowCoordinates, theme);","lastModifiedDate":"2024-03-21"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-09-24"},{"lineNumber":97,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":" .add(\"windowWidth\", windowWidth)","lastModifiedDate":"2019-02-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":" .add(\"windowHeight\", windowHeight)","lastModifiedDate":"2019-02-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":" .add(\"windowCoordinates\", windowCoordinates)","lastModifiedDate":"2019-02-23"},{"lineNumber":101,"author":{"gitId":"ChrysanthemumT"},"content":" .add(\"theme\", theme)","lastModifiedDate":"2024-03-21"},{"lineNumber":102,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":104,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"ChrysanthemumT":25,"-":79}},{"path":"src/main/java/seedu/address/commons/core/Theme.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package seedu.address.commons.core;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":" * Represents the available themes for the application.","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":"public enum Theme {","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":" LIGHTTHEME, DARKTHEME,","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"ChrysanthemumT":8}},{"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":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"cyqjoseph"},"content":" * Returns true if the {@code sentence} contains the {@code word} as a substring.","lastModifiedDate":"2024-03-23"},{"lineNumber":43,"author":{"gitId":"cyqjoseph"},"content":" * Ignores case, and a full word match is not required.","lastModifiedDate":"2024-03-23"},{"lineNumber":44,"author":{"gitId":"cyqjoseph"},"content":" * \u003cbr\u003eexamples:\u003cpre\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":45,"author":{"gitId":"cyqjoseph"},"content":" * containsSubstringIgnoreCase(\"ABc def\", \"abc\") \u003d\u003d true","lastModifiedDate":"2024-03-23"},{"lineNumber":46,"author":{"gitId":"cyqjoseph"},"content":" * containsSubstringIgnoreCase(\"ABc def\", \"def\") \u003d\u003d true","lastModifiedDate":"2024-03-23"},{"lineNumber":47,"author":{"gitId":"cyqjoseph"},"content":" * containsSubstringIgnoreCase(\"ABc def\", \"AB\") \u003d\u003d true //partial match allowed","lastModifiedDate":"2024-03-23"},{"lineNumber":48,"author":{"gitId":"cyqjoseph"},"content":" * \u003c/pre\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":49,"author":{"gitId":"cyqjoseph"},"content":" * @param sentence cannot be null","lastModifiedDate":"2024-03-23"},{"lineNumber":50,"author":{"gitId":"cyqjoseph"},"content":" * @param word cannot be null, cannot be empty, must be a single word","lastModifiedDate":"2024-03-23"},{"lineNumber":51,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":52,"author":{"gitId":"cyqjoseph"},"content":" public static boolean containsSubstringIgnoreCase(String sentence, String word) {","lastModifiedDate":"2024-03-23"},{"lineNumber":53,"author":{"gitId":"cyqjoseph"},"content":" requireNonNull(sentence);","lastModifiedDate":"2024-03-23"},{"lineNumber":54,"author":{"gitId":"cyqjoseph"},"content":" requireNonNull(word);","lastModifiedDate":"2024-03-23"},{"lineNumber":55,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":56,"author":{"gitId":"cyqjoseph"},"content":" String preppedWord \u003d word.trim().toLowerCase();","lastModifiedDate":"2024-03-23"},{"lineNumber":57,"author":{"gitId":"cyqjoseph"},"content":" checkArgument(!preppedWord.isEmpty(), \"Word parameter cannot be empty\");","lastModifiedDate":"2024-03-23"},{"lineNumber":58,"author":{"gitId":"cyqjoseph"},"content":" checkArgument(preppedWord.split(\"\\\\s+\").length \u003d\u003d 1, \"Word parameter should be a single word\");","lastModifiedDate":"2024-03-23"},{"lineNumber":59,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":60,"author":{"gitId":"cyqjoseph"},"content":" return sentence.toLowerCase().contains(preppedWord);","lastModifiedDate":"2024-03-23"},{"lineNumber":61,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":62,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":63,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * Returns a detailed message of the t, including the stack trace.","lastModifiedDate":"2016-09-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public static String getDetails(Throwable t) {","lastModifiedDate":"2016-09-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":" requireNonNull(t);","lastModifiedDate":"2017-05-15"},{"lineNumber":69,"author":{"gitId":"-"},"content":" StringWriter sw \u003d new StringWriter();","lastModifiedDate":"2016-09-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":" t.printStackTrace(new PrintWriter(sw));","lastModifiedDate":"2016-09-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return t.getMessage() + \"\\n\" + sw.toString();","lastModifiedDate":"2016-09-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * Returns true if {@code s} represents a non-zero unsigned integer","lastModifiedDate":"2017-06-02"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * e.g. 1, 2, 3, ..., {@code Integer.MAX_VALUE} \u003cbr\u003e","lastModifiedDate":"2017-06-02"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Will return false for any other non-null string input","lastModifiedDate":"2017-06-02"},{"lineNumber":78,"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":79,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code s} is null.","lastModifiedDate":"2017-06-02"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public static boolean isNonZeroUnsignedInteger(String s) {","lastModifiedDate":"2017-06-02"},{"lineNumber":82,"author":{"gitId":"-"},"content":" requireNonNull(s);","lastModifiedDate":"2017-06-02"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":84,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-06-02"},{"lineNumber":85,"author":{"gitId":"-"},"content":" int value \u003d Integer.parseInt(s);","lastModifiedDate":"2017-06-02"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return value \u003e 0 \u0026\u0026 !s.startsWith(\"+\"); // \"+1\" is successfully parsed by Integer#parseInt(String)","lastModifiedDate":"2017-06-02"},{"lineNumber":87,"author":{"gitId":"-"},"content":" } catch (NumberFormatException nfe) {","lastModifiedDate":"2017-06-02"},{"lineNumber":88,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-06-02"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-02"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"cyqjoseph":23,"-":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":"gauravuj"},"content":"import seedu.address.model.booking.Booking;","lastModifiedDate":"2024-03-18"},{"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":"cyqjoseph"},"content":" /** Returns an unmodifiable view of the filtered list of bookings */","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"gauravuj"},"content":" ObservableList\u003cBooking\u003e getFilteredBookingList();","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-18"},{"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":{"gauravuj":3,"cyqjoseph":1,"-":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":"-"},"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":"gauravuj"},"content":"import seedu.address.model.booking.Booking;","lastModifiedDate":"2024-03-18"},{"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":"gauravuj"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"gauravuj"},"content":" public ObservableList\u003cBooking\u003e getFilteredBookingList() {","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"gauravuj"},"content":" return model.getFilteredBookingList();","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"gauravuj"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-18"},{"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":{"gauravuj":6,"-":88}},{"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":"jerremyng"},"content":"import seedu.address.model.booking.Booking;","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23"},{"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":"-"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX \u003d \"The person index provided is invalid\";","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"zhenghuil"},"content":" public static final String MESSAGE_INVALID_BOOKING_DISPLAYED_INDEX \u003d \"The booking index provided is invalid\";","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"jerremyng"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d contacts listed!\";","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" public static final String MESSAGE_BOOKINGS_LISTED_OVERVIEW \u003d \"%1$d bookings listed!\";","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":35,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" .append(person.getAddress())","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":"-"},"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":"jerremyng"},"content":" /**","lastModifiedDate":"2024-03-10"},{"lineNumber":56,"author":{"gitId":"jerremyng"},"content":" * Formats the {@code booking} for display to the user.","lastModifiedDate":"2024-03-10"},{"lineNumber":57,"author":{"gitId":"jerremyng"},"content":" */","lastModifiedDate":"2024-03-10"},{"lineNumber":58,"author":{"gitId":"cyqjoseph"},"content":" public static String formatBooking(Booking booking) {","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"cyqjoseph"},"content":" return \"Booking created!\";","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"jerremyng"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":61,"author":{"gitId":"jerremyng"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":62,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"jerremyng":7,"cyqjoseph":4,"-":50,"zhenghuil":1}},{"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":"-"},"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 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":"jerremyng"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a person to the address book.\\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06"},{"lineNumber":25,"author":{"gitId":"jerremyng"},"content":" + PREFIX_NAME + \"{name} \"","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"jerremyng"},"content":" + PREFIX_PHONE + \"{phone} \"","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"jerremyng"},"content":" + PREFIX_EMAIL + \"{email} \"","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"jerremyng"},"content":" + PREFIX_ADDRESS + \"{address} \"","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"jerremyng"},"content":" + \"[\" + PREFIX_TAG + \"{tag}]...\\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"jerremyng"},"content":" + \"Example usage: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2017-05-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"owesMoney\";","lastModifiedDate":"2017-05-09"},{"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":{"jerremyng":7,"-":77}},{"path":"src/main/java/seedu/address/logic/commands/BookCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jerremyng"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"jerremyng"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":3,"author":{"gitId":"jerremyng"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-10"},{"lineNumber":4,"author":{"gitId":"jerremyng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_END_TIME;","lastModifiedDate":"2024-03-10"},{"lineNumber":5,"author":{"gitId":"jerremyng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-10"},{"lineNumber":6,"author":{"gitId":"jerremyng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_START_TIME;","lastModifiedDate":"2024-03-10"},{"lineNumber":7,"author":{"gitId":"jerremyng"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"jerremyng"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"jerremyng"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"jerremyng"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-10"},{"lineNumber":11,"author":{"gitId":"jerremyng"},"content":"import seedu.address.model.booking.Booking;","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"jerremyng"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":13,"author":{"gitId":"jerremyng"},"content":"/**","lastModifiedDate":"2024-03-10"},{"lineNumber":14,"author":{"gitId":"jerremyng"},"content":" * Lists all persons in the address book to the user.","lastModifiedDate":"2024-03-10"},{"lineNumber":15,"author":{"gitId":"jerremyng"},"content":" */","lastModifiedDate":"2024-03-10"},{"lineNumber":16,"author":{"gitId":"jerremyng"},"content":"public class BookCommand extends Command {","lastModifiedDate":"2024-03-10"},{"lineNumber":17,"author":{"gitId":"jerremyng"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":18,"author":{"gitId":"jerremyng"},"content":" public static final String COMMAND_WORD \u003d \"book\";","lastModifiedDate":"2024-03-10"},{"lineNumber":19,"author":{"gitId":"jerremyng"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":20,"author":{"gitId":"jerremyng"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Booking created!\";","lastModifiedDate":"2024-03-10"},{"lineNumber":21,"author":{"gitId":"jerremyng"},"content":" public static final String MESSAGE_DUPLICATE_BOOKING \u003d \"Error: This booking already exists.\";","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"jerremyng"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":23,"author":{"gitId":"jerremyng"},"content":" public static final String MESSAGE_USAGE \u003d BookCommand.COMMAND_WORD + \": Adds a booking to the system.\\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"jerremyng"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-03-10"},{"lineNumber":25,"author":{"gitId":"jerremyng"},"content":" + PREFIX_NAME + \"{description} \"","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"jerremyng"},"content":" + PREFIX_START_TIME + \"{start_time} \"","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"jerremyng"},"content":" + PREFIX_END_TIME + \"{end_time}\\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"jerremyng"},"content":" + \"Example usage: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"jerremyng"},"content":" + PREFIX_NAME + \"John\u0027s Birthday Party \"","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"jerremyng"},"content":" + PREFIX_START_TIME + \"2023-12-31 19:00 \"","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"jerremyng"},"content":" + PREFIX_END_TIME + \"2023-12-31 23:00\";","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"jerremyng"},"content":" private final Booking toAdd;","lastModifiedDate":"2024-03-10"},{"lineNumber":33,"author":{"gitId":"jerremyng"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":34,"author":{"gitId":"jerremyng"},"content":" /**","lastModifiedDate":"2024-03-10"},{"lineNumber":35,"author":{"gitId":"jerremyng"},"content":" * Creates a BookCommand to add {@code booking}","lastModifiedDate":"2024-03-10"},{"lineNumber":36,"author":{"gitId":"jerremyng"},"content":" * @param booking","lastModifiedDate":"2024-03-10"},{"lineNumber":37,"author":{"gitId":"jerremyng"},"content":" */","lastModifiedDate":"2024-03-10"},{"lineNumber":38,"author":{"gitId":"jerremyng"},"content":" public BookCommand(Booking booking) {","lastModifiedDate":"2024-03-10"},{"lineNumber":39,"author":{"gitId":"jerremyng"},"content":" requireNonNull(booking);","lastModifiedDate":"2024-03-10"},{"lineNumber":40,"author":{"gitId":"jerremyng"},"content":" this.toAdd \u003d booking;","lastModifiedDate":"2024-03-10"},{"lineNumber":41,"author":{"gitId":"jerremyng"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":42,"author":{"gitId":"jerremyng"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":43,"author":{"gitId":"jerremyng"},"content":" @Override","lastModifiedDate":"2024-03-10"},{"lineNumber":44,"author":{"gitId":"jerremyng"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"jerremyng"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-10"},{"lineNumber":46,"author":{"gitId":"jerremyng"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":47,"author":{"gitId":"jerremyng"},"content":" if (model.hasBooking(toAdd)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"jerremyng"},"content":" throw new CommandException(MESSAGE_DUPLICATE_BOOKING);","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"jerremyng"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"jerremyng"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"jerremyng"},"content":" model.addBooking(toAdd);","lastModifiedDate":"2024-03-10"},{"lineNumber":52,"author":{"gitId":"cyqjoseph"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.formatBooking(toAdd)));","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"jerremyng"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":54,"author":{"gitId":"jerremyng"},"content":"}","lastModifiedDate":"2024-03-10"}],"authorContributionMap":{"jerremyng":53,"cyqjoseph":1}},{"path":"src/main/java/seedu/address/logic/commands/CancelCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zhenghuil"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"zhenghuil"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"zhenghuil"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"zhenghuil"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"zhenghuil"},"content":"import java.util.List;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"zhenghuil"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"zhenghuil"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"zhenghuil"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"zhenghuil"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"zhenghuil"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"zhenghuil"},"content":"import seedu.address.model.booking.Booking;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"zhenghuil"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"zhenghuil"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"zhenghuil"},"content":" * Deletes a booking identified using it\u0027s displayed index from the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"zhenghuil"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"zhenghuil"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"zhenghuil"},"content":"public class CancelCommand extends Command {","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"zhenghuil"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"zhenghuil"},"content":" public static final String COMMAND_WORD \u003d \"cancel\";","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"zhenghuil"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"zhenghuil"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"zhenghuil"},"content":" + \": Deletes the booking identified by the index number used in the displayed booking list.\\n\"","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"zhenghuil"},"content":" + \"Parameters: {index} (must be a positive integer)\\n\"","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"zhenghuil"},"content":" + \"Example usage: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"zhenghuil"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"zhenghuil"},"content":" public static final String MESSAGE_CANCEL_BOOKING_SUCCESS \u003d \"Cancelled Booking: %1$s\";","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"zhenghuil"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"zhenghuil"},"content":" private final Index targetIndex;","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"zhenghuil"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"zhenghuil"},"content":" public CancelCommand(Index targetIndex) {","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"zhenghuil"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"zhenghuil"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"zhenghuil"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"zhenghuil"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"zhenghuil"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"zhenghuil"},"content":" List\u003cBooking\u003e lastShownList \u003d model.getFilteredBookingList();","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"zhenghuil"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"zhenghuil"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"zhenghuil"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_BOOKING_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"zhenghuil"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"zhenghuil"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"zhenghuil"},"content":" Booking bookingToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"zhenghuil"},"content":" model.cancelBooking(bookingToDelete);","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"zhenghuil"},"content":" return new CommandResult(String.format(MESSAGE_CANCEL_BOOKING_SUCCESS,","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"zhenghuil"},"content":" Messages.formatBooking(bookingToDelete)));","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"zhenghuil"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"zhenghuil"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"zhenghuil"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"zhenghuil"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"zhenghuil"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"zhenghuil"},"content":" return true;","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"zhenghuil"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"zhenghuil"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"zhenghuil"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"zhenghuil"},"content":" if (!(other instanceof CancelCommand)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"zhenghuil"},"content":" return false;","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"zhenghuil"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"zhenghuil"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"zhenghuil"},"content":" CancelCommand otherCancelCommand \u003d (CancelCommand) other;","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"zhenghuil"},"content":" return targetIndex.equals(otherCancelCommand.targetIndex);","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"zhenghuil"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"zhenghuil"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"zhenghuil":62}},{"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":"cyqjoseph"},"content":"import java.util.List;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.model.booking.Booking;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Clears the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class ClearCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"clear\";","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Address book has been cleared!\";","lastModifiedDate":"2016-08-24"},{"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":"2017-05-15"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" List\u003cBooking\u003e bookings \u003d model.getFilteredBookingList();","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" AddressBook newAddressBook \u003d new AddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" newAddressBook.setBookings(bookings);","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" model.setAddressBook(newAddressBook);","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"cyqjoseph":7,"-":22}},{"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":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"ChrysanthemumT"},"content":" private final boolean theme;","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Constructs a {@code CommandResult} with the specified fields.","lastModifiedDate":"2018-12-09"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public CommandResult(String feedbackToUser, boolean showHelp, boolean exit) {","lastModifiedDate":"2018-12-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":" this.feedbackToUser \u003d requireNonNull(feedbackToUser);","lastModifiedDate":"2017-05-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" this.showHelp \u003d showHelp;","lastModifiedDate":"2018-12-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":" this.exit \u003d exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":31,"author":{"gitId":"ChrysanthemumT"},"content":" this.theme \u003d false;","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"ChrysanthemumT"},"content":" * Constructs a {@code CommandResult} with the specified fields for theme","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"ChrysanthemumT"},"content":" public CommandResult(String feedbackToUser, boolean showHelp, boolean exit, boolean theme) {","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"ChrysanthemumT"},"content":" this.feedbackToUser \u003d requireNonNull(feedbackToUser);","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"ChrysanthemumT"},"content":" this.showHelp \u003d showHelp;","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"ChrysanthemumT"},"content":" this.exit \u003d exit;","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"ChrysanthemumT"},"content":" this.theme \u003d theme;","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Constructs a {@code CommandResult} with the specified {@code feedbackToUser},","lastModifiedDate":"2018-12-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * and other fields set to their default value.","lastModifiedDate":"2018-12-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public CommandResult(String feedbackToUser) {","lastModifiedDate":"2018-12-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" this(feedbackToUser, false, false);","lastModifiedDate":"2018-12-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public String getFeedbackToUser() {","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return feedbackToUser;","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public boolean isShowHelp() {","lastModifiedDate":"2018-12-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return showHelp;","lastModifiedDate":"2018-12-09"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public boolean isExit() {","lastModifiedDate":"2018-12-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":64,"author":{"gitId":"ChrysanthemumT"},"content":" public boolean isTheme() {","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"ChrysanthemumT"},"content":" return theme;","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2018-12-09"},{"lineNumber":70,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-12-09"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-12-09"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2018-12-09"},{"lineNumber":75,"author":{"gitId":"-"},"content":" if (!(other instanceof CommandResult)) {","lastModifiedDate":"2018-12-09"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-12-09"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":79,"author":{"gitId":"-"},"content":" CommandResult otherCommandResult \u003d (CommandResult) other;","lastModifiedDate":"2018-12-09"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return feedbackToUser.equals(otherCommandResult.feedbackToUser)","lastModifiedDate":"2018-12-09"},{"lineNumber":81,"author":{"gitId":"-"},"content":" \u0026\u0026 showHelp \u003d\u003d otherCommandResult.showHelp","lastModifiedDate":"2018-12-09"},{"lineNumber":82,"author":{"gitId":"-"},"content":" \u0026\u0026 exit \u003d\u003d otherCommandResult.exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2018-12-09"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return Objects.hash(feedbackToUser, showHelp, exit);","lastModifiedDate":"2018-12-09"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"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(\"feedbackToUser\", feedbackToUser)","lastModifiedDate":"2019-02-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":" .add(\"showHelp\", showHelp)","lastModifiedDate":"2019-02-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" .add(\"exit\", exit)","lastModifiedDate":"2019-02-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"ChrysanthemumT":17,"-":82}},{"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":"jerremyng"},"content":" + \"Parameters: {index} (must be a positive integer)\\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"jerremyng"},"content":" + \"Example usage: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Person: %1$s\";","lastModifiedDate":"2016-08-24"},{"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":{"jerremyng":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_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":"-"},"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":"jerremyng"},"content":" + \"Parameters: {index} (must be a positive integer) \"","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"jerremyng"},"content":" + \"[\" + PREFIX_NAME + \"{name}] \"","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"jerremyng"},"content":" + \"[\" + PREFIX_PHONE + \"{phone] \"","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"jerremyng"},"content":" + \"[\" + PREFIX_EMAIL + \"{email}] \"","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"jerremyng"},"content":" + \"[\" + PREFIX_ADDRESS + \"{address}] \"","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"jerremyng"},"content":" + \"[\" + PREFIX_TAG + \"{tag}]...\\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"jerremyng"},"content":" + \"Example usage: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09"},{"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":"jerremyng"},"content":" private Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-18"},{"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":"jerremyng"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address) || !tags.isEmpty();","lastModifiedDate":"2024-03-18"},{"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":"jerremyng"},"content":" this.tags \u003d (tags \u003d\u003d null) ? new HashSet\u003c\u003e() : new HashSet\u003c\u003e(tags);","lastModifiedDate":"2024-03-18"},{"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":"jerremyng"},"content":" return (tags !\u003d null \u0026\u0026 !tags.isEmpty())","lastModifiedDate":"2024-03-18"},{"lineNumber":210,"author":{"gitId":"jerremyng"},"content":" ? Optional.of(Collections.unmodifiableSet(tags))","lastModifiedDate":"2024-03-18"},{"lineNumber":211,"author":{"gitId":"jerremyng"},"content":" : Optional.empty();","lastModifiedDate":"2024-03-18"},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":214,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":215,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":216,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":217,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":218,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":220,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":221,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05"},{"lineNumber":222,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":223,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":225,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":226,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":227,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":228,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":229,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":230,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags);","lastModifiedDate":"2023-07-13"},{"lineNumber":231,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":244,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"jerremyng":13,"-":231}},{"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":"-"},"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":"jerremyng"},"content":" + \"Parameters: {keyword} [MORE_KEYWORDS]...\\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"jerremyng"},"content":" + \"Example usage: \" + COMMAND_WORD + \" alice bob charlie\";","lastModifiedDate":"2024-03-18"},{"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":{"jerremyng":2,"-":56}},{"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":"jerremyng"},"content":" + \"Example usage: \" + COMMAND_WORD;","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"jerremyng":1,"-":20}},{"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":"jerremyng"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Showing all contacts \";","lastModifiedDate":"2024-03-23"},{"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":{"jerremyng":1,"-":23}},{"path":"src/main/java/seedu/address/logic/commands/SearchCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-23"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-23"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.model.booking.DescriptionContainsKeywordsPredicate;","lastModifiedDate":"2024-03-23"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":" * Finds and lists all bookings in Dook whose description contains any of the argument keywords.","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":" * Keyword matching is case insensitive.","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":"public class SearchCommand extends Command {","lastModifiedDate":"2024-03-23"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" public static final String COMMAND_WORD \u003d \"search\";","lastModifiedDate":"2024-03-23"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all bookings whose description contain any of \"","lastModifiedDate":"2024-03-23"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" + \"the specified keywords (case-insensitive) and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" + \"Parameters: {keyword} [MORE_KEYWORDS]...\\n\"","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" + \"Example usage: \" + COMMAND_WORD + \" John\u0027s Birthday Party\";","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" private final DescriptionContainsKeywordsPredicate predicate;","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" public SearchCommand(DescriptionContainsKeywordsPredicate predicate) {","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"cyqjoseph"},"content":" // change","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"cyqjoseph"},"content":" model.updateFilteredBookingList(predicate);","lastModifiedDate":"2024-03-23"},{"lineNumber":33,"author":{"gitId":"cyqjoseph"},"content":" return new CommandResult(","lastModifiedDate":"2024-03-23"},{"lineNumber":34,"author":{"gitId":"cyqjoseph"},"content":" String.format(Messages.MESSAGE_BOOKINGS_LISTED_OVERVIEW, model.getFilteredBookingList().size()));","lastModifiedDate":"2024-03-23"},{"lineNumber":35,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":37,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"cyqjoseph"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-23"},{"lineNumber":39,"author":{"gitId":"cyqjoseph"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-23"},{"lineNumber":40,"author":{"gitId":"cyqjoseph"},"content":" return true;","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":43,"author":{"gitId":"cyqjoseph"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-23"},{"lineNumber":44,"author":{"gitId":"cyqjoseph"},"content":" if (!(other instanceof SearchCommand)) {","lastModifiedDate":"2024-03-23"},{"lineNumber":45,"author":{"gitId":"cyqjoseph"},"content":" return false;","lastModifiedDate":"2024-03-23"},{"lineNumber":46,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":47,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":48,"author":{"gitId":"cyqjoseph"},"content":" SearchCommand otherSearchCommand \u003d (SearchCommand) other;","lastModifiedDate":"2024-03-23"},{"lineNumber":49,"author":{"gitId":"cyqjoseph"},"content":" return predicate.equals(otherSearchCommand.predicate);","lastModifiedDate":"2024-03-23"},{"lineNumber":50,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":51,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":52,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":53,"author":{"gitId":"cyqjoseph"},"content":" public String toString() {","lastModifiedDate":"2024-03-23"},{"lineNumber":54,"author":{"gitId":"cyqjoseph"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-23"},{"lineNumber":55,"author":{"gitId":"cyqjoseph"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2024-03-23"},{"lineNumber":56,"author":{"gitId":"cyqjoseph"},"content":" .toString();","lastModifiedDate":"2024-03-23"},{"lineNumber":57,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":58,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-03-23"}],"authorContributionMap":{"cyqjoseph":58}},{"path":"src/main/java/seedu/address/logic/commands/ThemeCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_THEME;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":"import seedu.address.commons.core.Theme;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":" * Command to change the theme of the application.","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"ChrysanthemumT"},"content":"public class ThemeCommand extends Command {","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"ChrysanthemumT"},"content":" public static final String COMMAND_WORD \u003d \"theme\";","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"ChrysanthemumT"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Theme updated!\";","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"ChrysanthemumT"},"content":" public static final String MESSAGE_USAGE \u003d ThemeCommand.COMMAND_WORD","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"ChrysanthemumT"},"content":" + \" \"","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"ChrysanthemumT"},"content":" + PREFIX_THEME + \"{theme}\";","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"ChrysanthemumT"},"content":" private final Theme toChange;","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"ChrysanthemumT"},"content":" * Creates a ThemeCommand to change {@code Theme}","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"ChrysanthemumT"},"content":" * @param theme","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"ChrysanthemumT"},"content":" public ThemeCommand(Theme theme) {","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"ChrysanthemumT"},"content":" requireNonNull(theme);","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"ChrysanthemumT"},"content":" this.toChange \u003d theme;","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"ChrysanthemumT"},"content":" * Executes the theme change command.","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"ChrysanthemumT"},"content":" * @param model {@code Model} which the command should operate on.","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"ChrysanthemumT"},"content":" * @return A {@code CommandResult} representing the result of the command execution.","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"ChrysanthemumT"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"ChrysanthemumT"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"ChrysanthemumT"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"ChrysanthemumT"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"ChrysanthemumT"},"content":" model.setTheme(toChange);","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"ChrysanthemumT"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, toChange), false, false, true);","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"ChrysanthemumT":44}},{"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":"-"},"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":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":10,"author":{"gitId":"jerremyng"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05"},{"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.person.Address;","lastModifiedDate":"2017-03-17"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-03-17"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-03-17"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-03-17"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06"},{"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":"-"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG);","lastModifiedDate":"2017-06-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":36,"author":{"gitId":"jerremyng"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME) || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":40,"author":{"gitId":"-"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-07-14"},{"lineNumber":41,"author":{"gitId":"jerremyng"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"jerremyng"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":44,"author":{"gitId":"jerremyng"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"jerremyng"},"content":" // Parse phone only if the prefix is present","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"jerremyng"},"content":" Phone phone \u003d argMultimap.getValue(PREFIX_PHONE).isPresent()","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"jerremyng"},"content":" ? ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get())","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"jerremyng"},"content":" : null;","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"jerremyng"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"jerremyng"},"content":" // Parse email only if the prefix is present","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"jerremyng"},"content":" Email email \u003d argMultimap.getValue(PREFIX_EMAIL).isPresent()","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"jerremyng"},"content":" ? ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get())","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"jerremyng"},"content":" : null;","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"jerremyng"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"jerremyng"},"content":" // Parse address only if the prefix is present","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"jerremyng"},"content":" Address address \u003d argMultimap.getValue(PREFIX_ADDRESS).isPresent()","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"jerremyng"},"content":" ? ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get())","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"jerremyng"},"content":" : null;","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"jerremyng"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"jerremyng"},"content":" // Parse tags only if the prefix is present","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"jerremyng"},"content":" Set\u003cTag\u003e tagList \u003d argMultimap.getValue(PREFIX_TAG).isPresent()","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"jerremyng"},"content":" ? ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG))","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"jerremyng"},"content":" : Collections.emptySet();","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"jerremyng"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":66,"author":{"gitId":"-"},"content":" Person person \u003d new Person(name, phone, email, address, tagList);","lastModifiedDate":"2018-01-10"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":75,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":79,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"jerremyng":25,"-":54}},{"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":"jerremyng"},"content":"import seedu.address.logic.commands.BookCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"zhenghuil"},"content":"import seedu.address.logic.commands.CancelCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18"},{"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":"cyqjoseph"},"content":"import seedu.address.logic.commands.SearchCommand;","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"ChrysanthemumT"},"content":"import seedu.address.logic.commands.ThemeCommand;","lastModifiedDate":"2024-03-21"},{"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":"jerremyng"},"content":" case BookCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"jerremyng"},"content":" return new BookCommandParser().parse(arguments);","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"jerremyng"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"zhenghuil"},"content":" case CancelCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"zhenghuil"},"content":" return new CancelCommandParser().parse(arguments);","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"zhenghuil"},"content":"","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-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":"ChrysanthemumT"},"content":" case ThemeCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-21"},{"lineNumber":91,"author":{"gitId":"ChrysanthemumT"},"content":" return new ThemeCommandParser().parse(arguments);","lastModifiedDate":"2024-03-21"},{"lineNumber":92,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":93,"author":{"gitId":"cyqjoseph"},"content":" case SearchCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-23"},{"lineNumber":94,"author":{"gitId":"cyqjoseph"},"content":" return new SearchCommandParser().parse(arguments);","lastModifiedDate":"2024-03-23"},{"lineNumber":95,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"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":{"jerremyng":4,"cyqjoseph":4,"ChrysanthemumT":4,"-":86,"zhenghuil":4}},{"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":"jerremyng"},"content":" List\u003cString\u003e values \u003d this.getAllValues(prefix);","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":"}","lastModifiedDate":"2017-03-08"}],"authorContributionMap":{"jerremyng":1,"-":77}},{"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":"-"},"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":"jerremyng"},"content":" return ArgumentTokenizer.extractArguments(argsString, positions);","lastModifiedDate":"2024-03-18"},{"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":{"jerremyng":1,"-":147}},{"path":"src/main/java/seedu/address/logic/parser/BookCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"jerremyng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_END_TIME;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_START_TIME;","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"jerremyng"},"content":"import seedu.address.logic.commands.BookCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.model.booking.Booking;","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.model.booking.Description;","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.model.booking.EndTime;","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"jerremyng"},"content":"import seedu.address.model.booking.StartTime;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"jerremyng"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" * Parses input arguments and creates a new AddBookingCommand object","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"jerremyng"},"content":"public class BookCommandParser implements Parser\u003cBookCommand\u003e {","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" * Parses the given {@code String} of arguments in the context of the AddBookingCommand","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" * and returns an AddBookingCommand object for execution.","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"jerremyng"},"content":" public BookCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_START_TIME, PREFIX_END_TIME);","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"cyqjoseph"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_START_TIME, PREFIX_END_TIME)","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"cyqjoseph"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"jerremyng"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, BookCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"cyqjoseph"},"content":" Description description \u003d ParserUtil.parseBookingName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"cyqjoseph"},"content":" StartTime start \u003d ParserUtil.parseStartTime(argMultimap.getValue(PREFIX_START_TIME).get());","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"cyqjoseph"},"content":" EndTime end \u003d ParserUtil.parseEndTime(argMultimap.getValue(PREFIX_END_TIME).get());","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"cyqjoseph"},"content":" Booking booking \u003d new Booking(description, start, end);","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"jerremyng"},"content":" return new BookCommand(booking);","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"cyqjoseph"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"cyqjoseph"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"cyqjoseph"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"cyqjoseph"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"jerremyng":8,"cyqjoseph":44}},{"path":"src/main/java/seedu/address/logic/parser/CancelCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zhenghuil"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"zhenghuil"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"zhenghuil"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"zhenghuil"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"zhenghuil"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"zhenghuil"},"content":"import seedu.address.logic.commands.CancelCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"zhenghuil"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"zhenghuil"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"zhenghuil"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"zhenghuil"},"content":" * Parses input arguments and creates a new CancelCommand object","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"zhenghuil"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"zhenghuil"},"content":"public class CancelCommandParser implements Parser\u003cCancelCommand\u003e {","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"zhenghuil"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"zhenghuil"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"zhenghuil"},"content":" * Parses the given {@code String} of arguments in the context of the CancelCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"zhenghuil"},"content":" * and returns a CancelCommand object for execution.","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"zhenghuil"},"content":" *","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"zhenghuil"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"zhenghuil"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"zhenghuil"},"content":" public CancelCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"zhenghuil"},"content":" try {","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"zhenghuil"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"zhenghuil"},"content":" return new CancelCommand(index);","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"zhenghuil"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"zhenghuil"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"zhenghuil"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, CancelCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"zhenghuil"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"zhenghuil"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"zhenghuil"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"zhenghuil":29}},{"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":"jerremyng"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"-n \");","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"jerremyng"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"-p \");","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"jerremyng"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"-e \");","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"jerremyng"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"-a \");","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"jerremyng"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"-t \");","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"jerremyng"},"content":" public static final Prefix PREFIX_START_TIME \u003d new Prefix(\"-s \");","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"jerremyng"},"content":" public static final Prefix PREFIX_END_TIME \u003d new Prefix(\"-e \");","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"ChrysanthemumT"},"content":" public static final Prefix PREFIX_THEME \u003d new Prefix(\"-bg \");","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"jerremyng":7,"ChrysanthemumT":1,"-":10}},{"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":"ChrysanthemumT"},"content":"import seedu.address.commons.core.Theme;","lastModifiedDate":"2024-03-21"},{"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":"cyqjoseph"},"content":"import seedu.address.model.booking.Description;","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.model.booking.EndTime;","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.model.booking.StartTime;","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-02-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-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":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02"},{"lineNumber":37,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":49,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":52,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":60,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":64,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30"},{"lineNumber":65,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":67,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":75,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":79,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30"},{"lineNumber":80,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":81,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":82,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","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 email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":94,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":95,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":96,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":97,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":99,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","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 tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":105,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":107,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":109,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30"},{"lineNumber":110,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":111,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":112,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":114,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","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":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":118,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07"},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":120,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":121,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15"},{"lineNumber":122,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11"},{"lineNumber":123,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11"},{"lineNumber":124,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":126,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":128,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":129,"author":{"gitId":"cyqjoseph"},"content":" * Parses a {@code String description} into a {@code Description} for a booking.","lastModifiedDate":"2024-03-14"},{"lineNumber":130,"author":{"gitId":"cyqjoseph"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-11"},{"lineNumber":131,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":132,"author":{"gitId":"cyqjoseph"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2024-03-11"},{"lineNumber":133,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":134,"author":{"gitId":"cyqjoseph"},"content":" public static Description parseBookingName(String description) throws ParseException {","lastModifiedDate":"2024-03-14"},{"lineNumber":135,"author":{"gitId":"cyqjoseph"},"content":" requireNonNull(description);","lastModifiedDate":"2024-03-14"},{"lineNumber":136,"author":{"gitId":"cyqjoseph"},"content":" String trimmedDescription \u003d description.trim();","lastModifiedDate":"2024-03-14"},{"lineNumber":137,"author":{"gitId":"cyqjoseph"},"content":" if (!Description.isValidDescription(trimmedDescription)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":138,"author":{"gitId":"cyqjoseph"},"content":" throw new ParseException(Description.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-14"},{"lineNumber":139,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":140,"author":{"gitId":"cyqjoseph"},"content":" return new Description(trimmedDescription);","lastModifiedDate":"2024-03-14"},{"lineNumber":141,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":142,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":143,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":144,"author":{"gitId":"cyqjoseph"},"content":" * Parses a {@code String start} into a {@code StartTime}.","lastModifiedDate":"2024-03-11"},{"lineNumber":145,"author":{"gitId":"cyqjoseph"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-11"},{"lineNumber":146,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":147,"author":{"gitId":"cyqjoseph"},"content":" * @throws ParseException if the given {@code start} is invalid.","lastModifiedDate":"2024-03-11"},{"lineNumber":148,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":149,"author":{"gitId":"cyqjoseph"},"content":" public static StartTime parseStartTime(String start) throws ParseException {","lastModifiedDate":"2024-03-11"},{"lineNumber":150,"author":{"gitId":"cyqjoseph"},"content":" requireNonNull(start);","lastModifiedDate":"2024-03-11"},{"lineNumber":151,"author":{"gitId":"cyqjoseph"},"content":" String trimmedStart \u003d start.trim();","lastModifiedDate":"2024-03-11"},{"lineNumber":152,"author":{"gitId":"cyqjoseph"},"content":" if (!StartTime.isValidStartTime(trimmedStart)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":153,"author":{"gitId":"cyqjoseph"},"content":" throw new ParseException(StartTime.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-11"},{"lineNumber":154,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":155,"author":{"gitId":"cyqjoseph"},"content":" return new StartTime(trimmedStart);","lastModifiedDate":"2024-03-11"},{"lineNumber":156,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":157,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":158,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":159,"author":{"gitId":"cyqjoseph"},"content":" * Parses a {@code String end} into an {@code EndTime}.","lastModifiedDate":"2024-03-11"},{"lineNumber":160,"author":{"gitId":"cyqjoseph"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-11"},{"lineNumber":161,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":162,"author":{"gitId":"cyqjoseph"},"content":" * @throws ParseException if the given {@code end} is invalid.","lastModifiedDate":"2024-03-11"},{"lineNumber":163,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":164,"author":{"gitId":"cyqjoseph"},"content":" public static EndTime parseEndTime(String end) throws ParseException {","lastModifiedDate":"2024-03-11"},{"lineNumber":165,"author":{"gitId":"cyqjoseph"},"content":" requireNonNull(end);","lastModifiedDate":"2024-03-11"},{"lineNumber":166,"author":{"gitId":"cyqjoseph"},"content":" String trimmedEnd \u003d end.trim();","lastModifiedDate":"2024-03-11"},{"lineNumber":167,"author":{"gitId":"cyqjoseph"},"content":" if (!EndTime.isValidEndTime(trimmedEnd)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":168,"author":{"gitId":"cyqjoseph"},"content":" throw new ParseException(EndTime.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-11"},{"lineNumber":169,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":170,"author":{"gitId":"cyqjoseph"},"content":" return new EndTime(trimmedEnd);","lastModifiedDate":"2024-03-11"},{"lineNumber":171,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":172,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":173,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":174,"author":{"gitId":"ChrysanthemumT"},"content":" * Parses a theme string into a Theme enum value.","lastModifiedDate":"2024-03-21"},{"lineNumber":175,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-03-21"},{"lineNumber":176,"author":{"gitId":"ChrysanthemumT"},"content":" * @param theme The theme string to parse.","lastModifiedDate":"2024-03-21"},{"lineNumber":177,"author":{"gitId":"ChrysanthemumT"},"content":" * @return The corresponding Theme enum value.","lastModifiedDate":"2024-03-21"},{"lineNumber":178,"author":{"gitId":"ChrysanthemumT"},"content":" * @throws ParseException If the theme string does not match any known theme.","lastModifiedDate":"2024-03-21"},{"lineNumber":179,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":180,"author":{"gitId":"ChrysanthemumT"},"content":" public static Theme parseTheme(String theme) throws ParseException {","lastModifiedDate":"2024-03-21"},{"lineNumber":181,"author":{"gitId":"ChrysanthemumT"},"content":" Theme guiTheme;","lastModifiedDate":"2024-03-21"},{"lineNumber":182,"author":{"gitId":"ChrysanthemumT"},"content":" switch(theme.toUpperCase()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":183,"author":{"gitId":"ChrysanthemumT"},"content":" case \"LIGHT\":","lastModifiedDate":"2024-03-21"},{"lineNumber":184,"author":{"gitId":"ChrysanthemumT"},"content":" guiTheme \u003d Theme.LIGHTTHEME;","lastModifiedDate":"2024-03-21"},{"lineNumber":185,"author":{"gitId":"ChrysanthemumT"},"content":" break;","lastModifiedDate":"2024-03-21"},{"lineNumber":186,"author":{"gitId":"ChrysanthemumT"},"content":" case \"DARK\":","lastModifiedDate":"2024-03-21"},{"lineNumber":187,"author":{"gitId":"ChrysanthemumT"},"content":" // Fall through","lastModifiedDate":"2024-03-21"},{"lineNumber":188,"author":{"gitId":"ChrysanthemumT"},"content":" default:","lastModifiedDate":"2024-03-21"},{"lineNumber":189,"author":{"gitId":"ChrysanthemumT"},"content":" guiTheme \u003d Theme.DARKTHEME;","lastModifiedDate":"2024-03-21"},{"lineNumber":190,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":191,"author":{"gitId":"ChrysanthemumT"},"content":" return guiTheme;","lastModifiedDate":"2024-03-21"},{"lineNumber":192,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"ChrysanthemumT":22,"cyqjoseph":47,"-":124}},{"path":"src/main/java/seedu/address/logic/parser/SearchCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-23"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-23"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.logic.commands.SearchCommand;","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-23"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.model.booking.DescriptionContainsKeywordsPredicate;","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":" * Parses input arguments and creates a new SearchCommand object","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":"public class SearchCommandParser implements Parser\u003cSearchCommand\u003e {","lastModifiedDate":"2024-03-23"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" * Parses the given {@code String} of arguments in the context of the FindCommand","lastModifiedDate":"2024-03-23"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" * and returns a FindCommand object for execution.","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" public SearchCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, SearchCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":" String[] descriptionKeywords \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2024-03-23"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":" return new SearchCommand(new DescriptionContainsKeywordsPredicate(Arrays.asList(descriptionKeywords)));","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":33,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-03-23"}],"authorContributionMap":{"cyqjoseph":33}},{"path":"src/main/java/seedu/address/logic/parser/ThemeCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_THEME;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":"import seedu.address.commons.core.Theme;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":"import seedu.address.logic.commands.ThemeCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"ChrysanthemumT"},"content":" * Parses input arguments and creates a new ThemeCommandParser object.","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"ChrysanthemumT"},"content":"public class ThemeCommandParser implements Parser\u003cThemeCommand\u003e {","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"ChrysanthemumT"},"content":" * Parses the given {@code String} of arguments in the context of the ThemeCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"ChrysanthemumT"},"content":" * and returns a ThemeCommand object for execution.","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"ChrysanthemumT"},"content":" * @param args The user input string.","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"ChrysanthemumT"},"content":" * @return A parsed ThemeCommand.","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"ChrysanthemumT"},"content":" * @throws ParseException If the user input does not conform to the expected format.","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"ChrysanthemumT"},"content":" public ThemeCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"ChrysanthemumT"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"ChrysanthemumT"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_THEME);","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"ChrysanthemumT"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_THEME) || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"ChrysanthemumT"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, ThemeCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"ChrysanthemumT"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_THEME);","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"ChrysanthemumT"},"content":" Theme theme \u003d ParserUtil.parseTheme(argMultimap.getValue(PREFIX_THEME).get());","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"ChrysanthemumT"},"content":" return new ThemeCommand(theme);","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"ChrysanthemumT"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"ChrysanthemumT"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"ChrysanthemumT"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"ChrysanthemumT"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"ChrysanthemumT":46}},{"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":"cyqjoseph"},"content":"import seedu.address.model.booking.Booking;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.model.booking.UniqueBookingList;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.UniquePersonList;","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Wraps all data at the address-book level","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Duplicates are not allowed (by .isSamePerson comparison)","lastModifiedDate":"2018-04-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class AddressBook implements ReadOnlyAddressBook {","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final UniquePersonList persons;","lastModifiedDate":"2016-08-26"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" private final UniqueBookingList bookings;","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-19"},{"lineNumber":25,"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":26,"author":{"gitId":"-"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2016-10-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-19"},{"lineNumber":28,"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":29,"author":{"gitId":"-"},"content":" * among constructors.","lastModifiedDate":"2016-10-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" {","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" persons \u003d new UniquePersonList();","lastModifiedDate":"2016-08-26"},{"lineNumber":33,"author":{"gitId":"cyqjoseph"},"content":" bookings \u003d new UniqueBookingList();","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public AddressBook() {}","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":" * Creates an AddressBook using the Persons in the {@code toBeCopied}","lastModifiedDate":"2018-03-29"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public AddressBook(ReadOnlyAddressBook toBeCopied) {","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2016-12-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" resetData(toBeCopied);","lastModifiedDate":"2016-12-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":46,"author":{"gitId":"-"},"content":" //// list overwrite operations","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Replaces the contents of the person list with {@code persons}.","lastModifiedDate":"2018-08-07"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2018-08-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void setPersons(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-08-07"},{"lineNumber":53,"author":{"gitId":"-"},"content":" this.persons.setPersons(persons);","lastModifiedDate":"2016-10-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"cyqjoseph"},"content":" * Replaces the contents of the bookings list with {@code bookings}.","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"cyqjoseph"},"content":" * {@code bookings} must not contain duplicate bookings.","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"cyqjoseph"},"content":" public void setBookings(List\u003cBooking\u003e bookings) {","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"cyqjoseph"},"content":" this.bookings.setBookings(bookings);","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code AddressBook} with {@code newData}.","lastModifiedDate":"2017-08-16"},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyAddressBook newData) {","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" requireNonNull(newData);","lastModifiedDate":"2017-05-15"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-20"},{"lineNumber":70,"author":{"gitId":"-"},"content":" setPersons(newData.getPersonList());","lastModifiedDate":"2018-03-29"},{"lineNumber":71,"author":{"gitId":"ChrysanthemumT"},"content":" setBookings(newData.getBookingList());","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":75,"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":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06"},{"lineNumber":78,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return persons.contains(person);","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":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-09-21"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * The person must not already exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void addPerson(Person p) {","lastModifiedDate":"2018-08-07"},{"lineNumber":87,"author":{"gitId":"-"},"content":" persons.add(p);","lastModifiedDate":"2018-03-29"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2018-01-10"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":93,"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":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":96,"author":{"gitId":"-"},"content":" requireNonNull(editedPerson);","lastModifiedDate":"2018-01-10"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" persons.setPerson(target, editedPerson);","lastModifiedDate":"2018-03-29"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":101,"author":{"gitId":"ChrysanthemumT"},"content":" public void setBooking(Booking target, Booking editedBooking) {","lastModifiedDate":"2024-03-16"},{"lineNumber":102,"author":{"gitId":"ChrysanthemumT"},"content":" requireNonNull(editedBooking);","lastModifiedDate":"2024-03-16"},{"lineNumber":103,"author":{"gitId":"ChrysanthemumT"},"content":" bookings.setBooking(target, editedBooking);","lastModifiedDate":"2024-03-16"},{"lineNumber":104,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":105,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":106,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * Removes {@code key} from this {@code AddressBook}.","lastModifiedDate":"2017-08-16"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * {@code key} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":109,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void removePerson(Person key) {","lastModifiedDate":"2018-08-07"},{"lineNumber":111,"author":{"gitId":"-"},"content":" persons.remove(key);","lastModifiedDate":"2018-02-28"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":114,"author":{"gitId":"cyqjoseph"},"content":" //// booking methods","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"cyqjoseph"},"content":" * Adds a booking to the address book.","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"cyqjoseph"},"content":" * The booking must not already exist in the address book.","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"cyqjoseph"},"content":" public void addBooking(Booking booking) {","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"cyqjoseph"},"content":" bookings.add(booking);","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"cyqjoseph"},"content":" * Returns true if a booking with the same identity as {@code booking} exists in the address book.","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"cyqjoseph"},"content":" public boolean hasBooking(Booking booking) {","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"cyqjoseph"},"content":" requireNonNull(booking);","lastModifiedDate":"2024-03-17"},{"lineNumber":129,"author":{"gitId":"cyqjoseph"},"content":" return bookings.contains(booking);","lastModifiedDate":"2024-03-17"},{"lineNumber":130,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"cyqjoseph"},"content":" * Removes {@code booking} from this {@code AddressBook}.","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"cyqjoseph"},"content":" * {@code booking} must exist in the address book.","lastModifiedDate":"2024-03-17"},{"lineNumber":135,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":136,"author":{"gitId":"cyqjoseph"},"content":" public void removeBooking(Booking booking) {","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"cyqjoseph"},"content":" bookings.remove(booking);","lastModifiedDate":"2024-03-17"},{"lineNumber":138,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":139,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":140,"author":{"gitId":"-"},"content":" //// util methods","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 String toString() {","lastModifiedDate":"2016-08-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":" .add(\"persons\", persons)","lastModifiedDate":"2019-02-23"},{"lineNumber":146,"author":{"gitId":"ChrysanthemumT"},"content":" .add(\"bookings\", bookings)","lastModifiedDate":"2024-03-16"},{"lineNumber":147,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"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-08-08"},{"lineNumber":151,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":152,"author":{"gitId":"-"},"content":" return persons.asUnmodifiableObservableList();","lastModifiedDate":"2018-04-05"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-01"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-01"},{"lineNumber":155,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":156,"author":{"gitId":"cyqjoseph"},"content":" public ObservableList\u003cBooking\u003e getBookingList() {","lastModifiedDate":"2024-03-17"},{"lineNumber":157,"author":{"gitId":"cyqjoseph"},"content":" return bookings.asUnmodifiableObservableList();","lastModifiedDate":"2024-03-17"},{"lineNumber":158,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":159,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":160,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":161,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"lineNumber":162,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":163,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":166,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":" if (!(other instanceof AddressBook)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":168,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":171,"author":{"gitId":"-"},"content":" AddressBook otherAddressBook \u003d (AddressBook) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":172,"author":{"gitId":"-"},"content":" return persons.equals(otherAddressBook.persons);","lastModifiedDate":"2024-03-17"},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":175,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":176,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":177,"author":{"gitId":"-"},"content":" return persons.hashCode();","lastModifiedDate":"2024-03-17"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":179,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"cyqjoseph":41,"ChrysanthemumT":9,"-":129}},{"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":"ChrysanthemumT"},"content":"import seedu.address.commons.core.Theme;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"jerremyng"},"content":"import seedu.address.model.booking.Booking;","lastModifiedDate":"2024-03-10"},{"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":"cyqjoseph"},"content":" Predicate\u003cBooking\u003e PREDICATE_SHOW_ALL_BOOKINGS \u003d unused -\u003e true;","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"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":" * Sets 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":" void setAddressBookFilePath(Path addressBookFilePath);","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":" * Replaces address book data with the data in {@code addressBook}.","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" void setAddressBook(ReadOnlyAddressBook addressBook);","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /** Returns the AddressBook */","lastModifiedDate":"2016-09-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2016-09-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":59,"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":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":61,"author":{"gitId":"-"},"content":" boolean hasPerson(Person person);","lastModifiedDate":"2018-08-06"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Deletes the given person.","lastModifiedDate":"2018-08-07"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * The person must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":67,"author":{"gitId":"-"},"content":" void deletePerson(Person target);","lastModifiedDate":"2018-08-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Adds the given person.","lastModifiedDate":"2018-08-07"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * {@code person} must not already exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":73,"author":{"gitId":"-"},"content":" void addPerson(Person person);","lastModifiedDate":"2018-08-07"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} with {@code editedPerson}.","lastModifiedDate":"2017-06-07"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":78,"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":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" void setPerson(Person target, Person editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered person list */","lastModifiedDate":"2017-09-01"},{"lineNumber":83,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Updates the filter of the filtered person list to filter by the given {@code predicate}.","lastModifiedDate":"2017-08-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":89,"author":{"gitId":"-"},"content":" void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate);","lastModifiedDate":"2018-01-10"},{"lineNumber":90,"author":{"gitId":"jerremyng"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":91,"author":{"gitId":"jerremyng"},"content":" /**","lastModifiedDate":"2024-03-10"},{"lineNumber":92,"author":{"gitId":"jerremyng"},"content":" * Adds the given booking","lastModifiedDate":"2024-03-10"},{"lineNumber":93,"author":{"gitId":"jerremyng"},"content":" */","lastModifiedDate":"2024-03-10"},{"lineNumber":94,"author":{"gitId":"jerremyng"},"content":" void addBooking(Booking booking);","lastModifiedDate":"2024-03-10"},{"lineNumber":95,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":96,"author":{"gitId":"zhenghuil"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"zhenghuil"},"content":" * Deletes the given Booking.","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"zhenghuil"},"content":" * The Booking must exist in the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"zhenghuil"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"zhenghuil"},"content":" void cancelBooking(Booking target);","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"zhenghuil"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"cyqjoseph"},"content":" * Returns True if booking exists, else False","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"cyqjoseph"},"content":" boolean hasBooking(Booking booking);","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"cyqjoseph"},"content":" ObservableList\u003cBooking\u003e getFilteredBookingList();","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":109,"author":{"gitId":"ChrysanthemumT"},"content":" void setTheme(Theme theme);","lastModifiedDate":"2024-03-21"},{"lineNumber":110,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":111,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":112,"author":{"gitId":"cyqjoseph"},"content":" * Updates the filter of the filtered booking list to filter by the given {@code predicate}.","lastModifiedDate":"2024-03-23"},{"lineNumber":113,"author":{"gitId":"cyqjoseph"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2024-03-23"},{"lineNumber":114,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":115,"author":{"gitId":"cyqjoseph"},"content":" void updateFilteredBookingList(Predicate\u003cBooking\u003e predicate);","lastModifiedDate":"2024-03-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"jerremyng":6,"ChrysanthemumT":3,"cyqjoseph":14,"-":87,"zhenghuil":6}},{"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":"ChrysanthemumT"},"content":"import seedu.address.commons.core.Theme;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"jerremyng"},"content":"import seedu.address.model.booking.Booking;","lastModifiedDate":"2024-03-10"},{"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":"cyqjoseph"},"content":" private final FilteredList\u003cBooking\u003e filteredBookings;","lastModifiedDate":"2024-03-17"},{"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":"cyqjoseph"},"content":" filteredBookings \u003d new FilteredList\u003c\u003e(this.addressBook.getBookingList());","lastModifiedDate":"2024-03-17"},{"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":"jerremyng"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Bookings \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-03-10"},{"lineNumber":153,"author":{"gitId":"jerremyng"},"content":" @Override","lastModifiedDate":"2024-03-10"},{"lineNumber":154,"author":{"gitId":"jerremyng"},"content":" public void addBooking(Booking booking) {","lastModifiedDate":"2024-03-10"},{"lineNumber":155,"author":{"gitId":"cyqjoseph"},"content":" addressBook.addBooking(booking);","lastModifiedDate":"2024-03-17"},{"lineNumber":156,"author":{"gitId":"cyqjoseph"},"content":" updateFilteredBookingList(PREDICATE_SHOW_ALL_BOOKINGS);","lastModifiedDate":"2024-03-17"},{"lineNumber":157,"author":{"gitId":"jerremyng"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":158,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":159,"author":{"gitId":"zhenghuil"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":160,"author":{"gitId":"zhenghuil"},"content":" public void cancelBooking(Booking target) {","lastModifiedDate":"2024-03-19"},{"lineNumber":161,"author":{"gitId":"zhenghuil"},"content":" addressBook.removeBooking(target);","lastModifiedDate":"2024-03-19"},{"lineNumber":162,"author":{"gitId":"zhenghuil"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":163,"author":{"gitId":"zhenghuil"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":164,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":165,"author":{"gitId":"cyqjoseph"},"content":" public boolean hasBooking(Booking booking) {","lastModifiedDate":"2024-03-17"},{"lineNumber":166,"author":{"gitId":"cyqjoseph"},"content":" requireNonNull(booking);","lastModifiedDate":"2024-03-17"},{"lineNumber":167,"author":{"gitId":"cyqjoseph"},"content":" return addressBook.hasBooking(booking);","lastModifiedDate":"2024-03-17"},{"lineNumber":168,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":169,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":170,"author":{"gitId":"cyqjoseph"},"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":"2024-03-17"},{"lineNumber":171,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":172,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":173,"author":{"gitId":"cyqjoseph"},"content":" * Returns an unmodifiable view of the list of {@code Booking} backed by the","lastModifiedDate":"2024-03-17"},{"lineNumber":174,"author":{"gitId":"cyqjoseph"},"content":" * internal list of","lastModifiedDate":"2024-03-17"},{"lineNumber":175,"author":{"gitId":"cyqjoseph"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2024-03-17"},{"lineNumber":176,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":177,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":178,"author":{"gitId":"cyqjoseph"},"content":" public ObservableList\u003cBooking\u003e getFilteredBookingList() {","lastModifiedDate":"2024-03-17"},{"lineNumber":179,"author":{"gitId":"cyqjoseph"},"content":" return filteredBookings;","lastModifiedDate":"2024-03-17"},{"lineNumber":180,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":181,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":182,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":183,"author":{"gitId":"cyqjoseph"},"content":" * Updates an unmodifiable view of the list of {@code Booking} backed by the","lastModifiedDate":"2024-03-17"},{"lineNumber":184,"author":{"gitId":"cyqjoseph"},"content":" * internal list of","lastModifiedDate":"2024-03-17"},{"lineNumber":185,"author":{"gitId":"cyqjoseph"},"content":" * {@code predicate}","lastModifiedDate":"2024-03-17"},{"lineNumber":186,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":187,"author":{"gitId":"cyqjoseph"},"content":" public void updateFilteredBookingList(Predicate\u003cBooking\u003e predicate) {","lastModifiedDate":"2024-03-17"},{"lineNumber":188,"author":{"gitId":"cyqjoseph"},"content":" requireNonNull(predicate);","lastModifiedDate":"2024-03-17"},{"lineNumber":189,"author":{"gitId":"cyqjoseph"},"content":" filteredBookings.setPredicate(predicate);","lastModifiedDate":"2024-03-17"},{"lineNumber":190,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":191,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":192,"author":{"gitId":"ChrysanthemumT"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Change Theme \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":193,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":194,"author":{"gitId":"ChrysanthemumT"},"content":" public void setTheme(Theme theme) {","lastModifiedDate":"2024-03-21"},{"lineNumber":195,"author":{"gitId":"ChrysanthemumT"},"content":" userPrefs.setTheme(theme);","lastModifiedDate":"2024-03-21"},{"lineNumber":196,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":197,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":198,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"jerremyng":5,"ChrysanthemumT":7,"cyqjoseph":33,"-":148,"zhenghuil":5}},{"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":"cyqjoseph"},"content":"import seedu.address.model.booking.Booking;","lastModifiedDate":"2024-03-17"},{"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":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" * Returns an unmodifiable view of the bookings list.","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" * This list will not contain any duplicate bookings.","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" ObservableList\u003cBooking\u003e getBookingList();","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"cyqjoseph":7,"-":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":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":16,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-11-27"}],"authorContributionMap":{"ChrysanthemumT":2,"-":16}},{"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":"ChrysanthemumT"},"content":"import seedu.address.commons.core.Theme;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Represents User\u0027s preferences.","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class UserPrefs implements ReadOnlyUserPrefs {","lastModifiedDate":"2018-11-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private GuiSettings guiSettings \u003d new GuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private Path addressBookFilePath \u003d Paths.get(\"data\" , \"addressbook.json\");","lastModifiedDate":"2018-11-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Creates a {@code UserPrefs} with default values.","lastModifiedDate":"2018-12-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public UserPrefs() {}","lastModifiedDate":"2018-12-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Creates a {@code UserPrefs} with the prefs in {@code userPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public UserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2018-12-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":" resetData(userPrefs);","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":" /**","lastModifiedDate":"2018-12-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code UserPrefs} with {@code newUserPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyUserPrefs newUserPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":38,"author":{"gitId":"-"},"content":" requireNonNull(newUserPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":39,"author":{"gitId":"-"},"content":" setGuiSettings(newUserPrefs.getGuiSettings());","lastModifiedDate":"2018-12-06"},{"lineNumber":40,"author":{"gitId":"-"},"content":" setAddressBookFilePath(newUserPrefs.getAddressBookFilePath());","lastModifiedDate":"2018-12-06"},{"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":"ChrysanthemumT"},"content":" public void setTheme(Theme theme) {","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"ChrysanthemumT"},"content":" requireNonNull(theme);","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"ChrysanthemumT"},"content":" this.guiSettings.setTheme(theme);","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return addressBookFilePath;","lastModifiedDate":"2017-02-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-04-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" this.addressBookFilePath \u003d addressBookFilePath;","lastModifiedDate":"2017-02-25"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2016-09-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2016-09-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"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 UserPrefs)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2016-09-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":" UserPrefs otherUserPrefs \u003d (UserPrefs) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return guiSettings.equals(otherUserPrefs.guiSettings)","lastModifiedDate":"2023-07-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" \u0026\u0026 addressBookFilePath.equals(otherUserPrefs.addressBookFilePath);","lastModifiedDate":"2023-07-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return Objects.hash(guiSettings, addressBookFilePath);","lastModifiedDate":"2018-08-09"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-09-24"},{"lineNumber":89,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-02-25"},{"lineNumber":90,"author":{"gitId":"-"},"content":" sb.append(\"Gui Settings : \" + guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" sb.append(\"\\nLocal data file location : \" + addressBookFilePath);","lastModifiedDate":"2017-02-25"},{"lineNumber":92,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-02-25"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":95,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"ChrysanthemumT":7,"-":88}},{"path":"src/main/java/seedu/address/model/booking/Booking.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jerremyng"},"content":"package seedu.address.model.booking;","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"jerremyng"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"jerremyng"},"content":"import java.util.Objects;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"jerremyng"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"jerremyng"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"jerremyng"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-23"},{"lineNumber":9,"author":{"gitId":"jerremyng"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"jerremyng"},"content":"/**","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"jerremyng"},"content":" * Represents a booking","lastModifiedDate":"2024-03-10"},{"lineNumber":13,"author":{"gitId":"jerremyng"},"content":" */","lastModifiedDate":"2024-03-10"},{"lineNumber":14,"author":{"gitId":"jerremyng"},"content":"public class Booking {","lastModifiedDate":"2024-03-10"},{"lineNumber":15,"author":{"gitId":"jerremyng"},"content":" /** Name of the booking */","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" private Description description;","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"jerremyng"},"content":" /** Start time of the booking */","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" private StartTime start;","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"jerremyng"},"content":" /** End time of the booking */","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" private EndTime end;","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"jerremyng"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"jerremyng"},"content":" * Constructs a booking","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" * @param description Description of the booking","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"jerremyng"},"content":" * @param start Start time in ISO_LOCAL_DATE_TIME format (2023-12-31T19:00)","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"jerremyng"},"content":" * @param end End time in ISO_LOCAL_DATE_TIME format","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"jerremyng"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":" public Booking(Description description, StartTime start, EndTime end) {","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":" requireAllNonNull(description, start, end);","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":" this.description \u003d description;","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"cyqjoseph"},"content":" this.start \u003d start;","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"cyqjoseph"},"content":" this.end \u003d end;","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"cyqjoseph"},"content":" public Description getDescription() {","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"cyqjoseph"},"content":" return description;","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"cyqjoseph"},"content":" public StartTime getStart() {","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"cyqjoseph"},"content":" return start;","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"cyqjoseph"},"content":" public EndTime getEnd() {","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"cyqjoseph"},"content":" return end;","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"cyqjoseph"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"jerremyng"},"content":" if (this \u003d\u003d other) {","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"jerremyng"},"content":" return true;","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"jerremyng"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"jerremyng"},"content":" if (!(other instanceof Booking)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"jerremyng"},"content":" return false;","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"jerremyng"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"cyqjoseph"},"content":" Booking otherBooking \u003d (Booking) other;","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"jerremyng"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"cyqjoseph"},"content":" return Objects.equals(description, otherBooking.description)","lastModifiedDate":"2024-03-14"},{"lineNumber":58,"author":{"gitId":"jerremyng"},"content":" \u0026\u0026 Objects.equals(start, otherBooking.start)","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"jerremyng"},"content":" \u0026\u0026 Objects.equals(end, otherBooking.end);","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"cyqjoseph"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"cyqjoseph"},"content":" return Objects.hash(description, start, end);","lastModifiedDate":"2024-03-14"},{"lineNumber":65,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":66,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":68,"author":{"gitId":"cyqjoseph"},"content":" public String toString() {","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"cyqjoseph"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-11"},{"lineNumber":70,"author":{"gitId":"cyqjoseph"},"content":" .add(\"description\", description)","lastModifiedDate":"2024-03-14"},{"lineNumber":71,"author":{"gitId":"cyqjoseph"},"content":" .add(\"start\", start)","lastModifiedDate":"2024-03-11"},{"lineNumber":72,"author":{"gitId":"cyqjoseph"},"content":" .add(\"end\", end)","lastModifiedDate":"2024-03-11"},{"lineNumber":73,"author":{"gitId":"cyqjoseph"},"content":" .toString();","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":75,"author":{"gitId":"jerremyng"},"content":"}","lastModifiedDate":"2024-03-10"}],"authorContributionMap":{"jerremyng":29,"cyqjoseph":46}},{"path":"src/main/java/seedu/address/model/booking/Description.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package seedu.address.model.booking;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":" * Represents a Booking\u0027s description in the address book.","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidDescription(String)}","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"public class Description {","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"jerremyng"},"content":" \"Booking description cannot be blank.\";","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" public final String description;","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" * Constructs a {@code Description}.","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" * @param description A valid description.","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" public Description(String description) {","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" requireNonNull(description);","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" this.description \u003d description;","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"jerremyng"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"jerremyng"},"content":" * Must not be empty or made of spaces.","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"cyqjoseph"},"content":" public static boolean isValidDescription(String test) {","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"jerremyng"},"content":" return !test.isEmpty();","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"cyqjoseph"},"content":" public String toString() {","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"cyqjoseph"},"content":" return description;","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"cyqjoseph"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"jerremyng"},"content":" if (this \u003d\u003d other) {","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"jerremyng"},"content":" return true;","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"jerremyng"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"cyqjoseph"},"content":" if (!(other instanceof Description)) {","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"jerremyng"},"content":" return false;","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"jerremyng"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"cyqjoseph"},"content":" Description otherName \u003d (Description) other;","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"cyqjoseph"},"content":" return description.equals(otherName.description);","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"cyqjoseph"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"cyqjoseph"},"content":" return description.hashCode();","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"jerremyng":9,"cyqjoseph":47}},{"path":"src/main/java/seedu/address/model/booking/DescriptionContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package seedu.address.model.booking;","lastModifiedDate":"2024-03-23"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import java.util.List;","lastModifiedDate":"2024-03-23"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":" * Tests that a {@code Booking}\u0027s {@code Description} matches any of the keywords given.","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":"public class DescriptionContainsKeywordsPredicate implements Predicate\u003cBooking\u003e {","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" public DescriptionContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2024-03-23"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" public boolean test(Booking booking) {","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" return keywords.stream()","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" .anyMatch(keyword -\u003e StringUtil.containsSubstringIgnoreCase(","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" booking.getDescription().description, keyword));","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-23"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-23"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":" return true;","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"cyqjoseph"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-23"},{"lineNumber":33,"author":{"gitId":"cyqjoseph"},"content":" if (!(other instanceof DescriptionContainsKeywordsPredicate)) {","lastModifiedDate":"2024-03-23"},{"lineNumber":34,"author":{"gitId":"cyqjoseph"},"content":" return false;","lastModifiedDate":"2024-03-23"},{"lineNumber":35,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":37,"author":{"gitId":"cyqjoseph"},"content":" DescriptionContainsKeywordsPredicate otherDescriptionContainsKeywordsPredicate \u003d","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"cyqjoseph"},"content":" (DescriptionContainsKeywordsPredicate) other;","lastModifiedDate":"2024-03-23"},{"lineNumber":39,"author":{"gitId":"cyqjoseph"},"content":" return keywords.equals(otherDescriptionContainsKeywordsPredicate.keywords);","lastModifiedDate":"2024-03-23"},{"lineNumber":40,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":43,"author":{"gitId":"cyqjoseph"},"content":" public String toString() {","lastModifiedDate":"2024-03-23"},{"lineNumber":44,"author":{"gitId":"cyqjoseph"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2024-03-23"},{"lineNumber":45,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":46,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-03-23"}],"authorContributionMap":{"cyqjoseph":46}},{"path":"src/main/java/seedu/address/model/booking/EndTime.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package seedu.address.model.booking;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"jerremyng"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"jerremyng"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":" * Represents a Booking\u0027s end time in the address book.","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidEndTime(String)}","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":"public class EndTime {","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"End times must be in the format of YYYY-MM-DD HH:MM \"","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"jerremyng"},"content":" + \"(ISO_LOCAL_DATE_TIME).\";","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" private static final DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-M-d HH:mm\");","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" public final String endTimeString;","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" public final LocalDateTime endTime;","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" * Constructs a {@code EndTime}.","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" * @param endTime A valid end time.","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" public EndTime(String endTime) {","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":" checkArgument(isValidEndTime(endTime), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":" this.endTimeString \u003d endTime;","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":" this.endTime \u003d LocalDateTime.parse(endTime, formatter);","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"cyqjoseph"},"content":" * Returns true if a given string is a valid end time.","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"cyqjoseph"},"content":" public static boolean isValidEndTime(String test) {","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"cyqjoseph"},"content":" try {","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"cyqjoseph"},"content":" LocalDateTime.parse(test, formatter);","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"cyqjoseph"},"content":" return true;","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"cyqjoseph"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"cyqjoseph"},"content":" return false;","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"cyqjoseph"},"content":" public String toString() {","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"cyqjoseph"},"content":" return endTime.format(formatter);","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"cyqjoseph"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"jerremyng"},"content":" if (this \u003d\u003d other) {","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"jerremyng"},"content":" return true;","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"jerremyng"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"jerremyng"},"content":" if (!(other instanceof EndTime)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"jerremyng"},"content":" return false;","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"jerremyng"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"cyqjoseph"},"content":" EndTime that \u003d (EndTime) other;","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"cyqjoseph"},"content":" return endTime.equals(that.endTime);","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"cyqjoseph"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"cyqjoseph"},"content":" return endTime.hashCode();","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"jerremyng":9,"cyqjoseph":56}},{"path":"src/main/java/seedu/address/model/booking/StartTime.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package seedu.address.model.booking;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"jerremyng"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"jerremyng"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":" * Represents a Booking\u0027s start time in the address book.","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidStartTime(String)}","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":"public class StartTime {","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Start times must be in the format of YYYY-MM-DD HH:MM \"","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"jerremyng"},"content":" + \"(ISO_LOCAL_DATE_TIME).\";","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" private static final DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-M-d HH:mm\");","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" public final String startTimeString;","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" public final LocalDateTime startTime;","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" * Constructs a {@code StartTime}.","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" * @param startTime A valid start time.","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" public StartTime(String startTime) {","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":" checkArgument(isValidStartTime(startTime), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":" this.startTimeString \u003d startTime;","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":" this.startTime \u003d LocalDateTime.parse(startTime, formatter);","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"cyqjoseph"},"content":" * Returns true if a given string is a valid start time.","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"cyqjoseph"},"content":" public static boolean isValidStartTime(String test) {","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"cyqjoseph"},"content":" try {","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"cyqjoseph"},"content":" LocalDateTime.parse(test, formatter);","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"cyqjoseph"},"content":" return true;","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"cyqjoseph"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"cyqjoseph"},"content":" return false;","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"cyqjoseph"},"content":" public String toString() {","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"cyqjoseph"},"content":" return startTime.format(formatter);","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"cyqjoseph"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"jerremyng"},"content":" if (this \u003d\u003d other) {","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"jerremyng"},"content":" return true;","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"jerremyng"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"jerremyng"},"content":" if (!(other instanceof StartTime)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"jerremyng"},"content":" return false;","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"jerremyng"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"cyqjoseph"},"content":" StartTime that \u003d (StartTime) other;","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"cyqjoseph"},"content":" return startTime.equals(that.startTime);","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"cyqjoseph"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"cyqjoseph"},"content":" return startTime.hashCode();","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"jerremyng":9,"cyqjoseph":56}},{"path":"src/main/java/seedu/address/model/booking/UniqueBookingList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package seedu.address.model.booking;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":"import java.util.Iterator;","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":"import java.util.List;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-03-11"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":"import seedu.address.model.person.exceptions.PersonNotFoundException;","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"ChrysanthemumT"},"content":"/**","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"ChrysanthemumT"},"content":" * Represents a list of unique bookings.","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"ChrysanthemumT"},"content":"public class UniqueBookingList implements Iterable\u003cBooking\u003e {","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"ChrysanthemumT"},"content":" private final ObservableList\u003cBooking\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"ChrysanthemumT"},"content":" private final ObservableList\u003cBooking\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"ChrysanthemumT"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"ChrysanthemumT"},"content":" * Checks if the list contains a given booking.","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"ChrysanthemumT"},"content":" * @param toCheck The booking to check for.","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"ChrysanthemumT"},"content":" * @return true if the list contains the booking, false otherwise.","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"ChrysanthemumT"},"content":" public boolean contains(Booking toCheck) {","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"ChrysanthemumT"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"ChrysanthemumT"},"content":" return internalList.stream().anyMatch(toCheck::equals);","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"ChrysanthemumT"},"content":" * Adds a booking to the list.","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":38,"author":{"gitId":"ChrysanthemumT"},"content":" * @param toAdd The booking to add.","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"ChrysanthemumT"},"content":" * @throws DuplicatePersonException if the booking already exists in the list.","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"ChrysanthemumT"},"content":" public void add(Booking toAdd) {","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"ChrysanthemumT"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"ChrysanthemumT"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"cyqjoseph"},"content":" // TO CHANGE","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"ChrysanthemumT"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"ChrysanthemumT"},"content":" internalList.add(toAdd);","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":50,"author":{"gitId":"ChrysanthemumT"},"content":" public void setBooking(Booking target, Booking editedBooking) {","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"ChrysanthemumT"},"content":" requireAllNonNull(target, editedBooking);","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"ChrysanthemumT"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"ChrysanthemumT"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"ChrysanthemumT"},"content":" throw new PersonNotFoundException();","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"ChrysanthemumT"},"content":" if (!target.equals(editedBooking) \u0026\u0026 contains(editedBooking)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"ChrysanthemumT"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"ChrysanthemumT"},"content":" internalList.set(index, editedBooking);","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"ChrysanthemumT"},"content":" public void setBookings(UniqueBookingList replacement) {","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"ChrysanthemumT"},"content":" requireNonNull(replacement);","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"ChrysanthemumT"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"ChrysanthemumT"},"content":" public void setBookings(List\u003cBooking\u003e bookings) {","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"ChrysanthemumT"},"content":" requireAllNonNull(bookings);","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"ChrysanthemumT"},"content":" if (!bookingsAreUnique(bookings)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"ChrysanthemumT"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"ChrysanthemumT"},"content":" internalList.setAll(bookings);","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":79,"author":{"gitId":"ChrysanthemumT"},"content":" * Removes a booking from the list.","lastModifiedDate":"2024-03-11"},{"lineNumber":80,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":81,"author":{"gitId":"ChrysanthemumT"},"content":" * @param toRemove The booking to remove.","lastModifiedDate":"2024-03-11"},{"lineNumber":82,"author":{"gitId":"ChrysanthemumT"},"content":" * @throws PersonNotFoundException if the booking does not exist in the list.","lastModifiedDate":"2024-03-11"},{"lineNumber":83,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":84,"author":{"gitId":"ChrysanthemumT"},"content":" public void remove(Booking toRemove) {","lastModifiedDate":"2024-03-11"},{"lineNumber":85,"author":{"gitId":"ChrysanthemumT"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2024-03-11"},{"lineNumber":86,"author":{"gitId":"ChrysanthemumT"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":87,"author":{"gitId":"ChrysanthemumT"},"content":" throw new PersonNotFoundException();","lastModifiedDate":"2024-03-11"},{"lineNumber":88,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":89,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":90,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":91,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":92,"author":{"gitId":"ChrysanthemumT"},"content":" * Returns an unmodifiable view of the list.","lastModifiedDate":"2024-03-11"},{"lineNumber":93,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":94,"author":{"gitId":"ChrysanthemumT"},"content":" * @return An unmodifiable ObservableList of bookings.","lastModifiedDate":"2024-03-11"},{"lineNumber":95,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":96,"author":{"gitId":"ChrysanthemumT"},"content":" public ObservableList\u003cBooking\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2024-03-11"},{"lineNumber":97,"author":{"gitId":"ChrysanthemumT"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2024-03-11"},{"lineNumber":98,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":99,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":100,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":101,"author":{"gitId":"ChrysanthemumT"},"content":" * Returns an iterator over the elements in this list.","lastModifiedDate":"2024-03-11"},{"lineNumber":102,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":103,"author":{"gitId":"ChrysanthemumT"},"content":" * @return An iterator.","lastModifiedDate":"2024-03-11"},{"lineNumber":104,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":105,"author":{"gitId":"ChrysanthemumT"},"content":" public Iterator\u003cBooking\u003e iterator() {","lastModifiedDate":"2024-03-11"},{"lineNumber":106,"author":{"gitId":"ChrysanthemumT"},"content":" return internalList.iterator();","lastModifiedDate":"2024-03-11"},{"lineNumber":107,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":108,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":109,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":110,"author":{"gitId":"ChrysanthemumT"},"content":" * Returns the hash code value for this list.","lastModifiedDate":"2024-03-11"},{"lineNumber":111,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":112,"author":{"gitId":"ChrysanthemumT"},"content":" * @return The hash code value for this list.","lastModifiedDate":"2024-03-11"},{"lineNumber":113,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":114,"author":{"gitId":"ChrysanthemumT"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":115,"author":{"gitId":"ChrysanthemumT"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-11"},{"lineNumber":116,"author":{"gitId":"ChrysanthemumT"},"content":" return internalList.hashCode();","lastModifiedDate":"2024-03-11"},{"lineNumber":117,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":118,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":119,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":120,"author":{"gitId":"ChrysanthemumT"},"content":" * Returns a string representation of the list.","lastModifiedDate":"2024-03-11"},{"lineNumber":121,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":122,"author":{"gitId":"ChrysanthemumT"},"content":" * @return A string representation of the list.","lastModifiedDate":"2024-03-11"},{"lineNumber":123,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":124,"author":{"gitId":"ChrysanthemumT"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":125,"author":{"gitId":"ChrysanthemumT"},"content":" public String toString() {","lastModifiedDate":"2024-03-11"},{"lineNumber":126,"author":{"gitId":"ChrysanthemumT"},"content":" return internalList.toString();","lastModifiedDate":"2024-03-11"},{"lineNumber":127,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":128,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":129,"author":{"gitId":"ChrysanthemumT"},"content":" private boolean bookingsAreUnique(List\u003cBooking\u003e bookings) {","lastModifiedDate":"2024-03-16"},{"lineNumber":130,"author":{"gitId":"ChrysanthemumT"},"content":" for (int i \u003d 0; i \u003c bookings.size() - 1; i++) {","lastModifiedDate":"2024-03-16"},{"lineNumber":131,"author":{"gitId":"ChrysanthemumT"},"content":" for (int j \u003d i + 1; j \u003c bookings.size(); j++) {","lastModifiedDate":"2024-03-16"},{"lineNumber":132,"author":{"gitId":"ChrysanthemumT"},"content":" if (bookings.get(i).equals(bookings.get(j))) {","lastModifiedDate":"2024-03-16"},{"lineNumber":133,"author":{"gitId":"ChrysanthemumT"},"content":" return false;","lastModifiedDate":"2024-03-16"},{"lineNumber":134,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":135,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":136,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":137,"author":{"gitId":"ChrysanthemumT"},"content":" return true;","lastModifiedDate":"2024-03-16"},{"lineNumber":138,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":139,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"ChrysanthemumT":138,"cyqjoseph":1}},{"path":"src/main/java/seedu/address/model/person/Address.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.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Represents a Person\u0027s address in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidAddress(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class Address {","lastModifiedDate":"2016-09-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"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":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2017-01-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2017-01-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2017-01-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2018-09-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" public final String value;","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Constructs an {@code Address}.","lastModifiedDate":"2017-05-30"},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @param address A valid address.","lastModifiedDate":"2017-05-30"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public Address(String address) {","lastModifiedDate":"2017-05-30"},{"lineNumber":27,"author":{"gitId":"-"},"content":" checkArgument(isValidAddress(address), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":28,"author":{"gitId":"-"},"content":" value \u003d address;","lastModifiedDate":"2018-08-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"cyqjoseph"},"content":" * Returns true if a given string is a valid address.","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static boolean isValidAddress(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"jerremyng"},"content":" return test \u003d\u003d null || test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-18"},{"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 String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24"},{"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 boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" if (!(other instanceof Address)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return false;","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":" Address otherAddress \u003d (Address) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return value.equals(otherAddress.value);","lastModifiedDate":"2023-07-13"},{"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 int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return value.hashCode();","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":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"jerremyng":1,"cyqjoseph":1,"-":61}},{"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 seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Represents a Person\u0027s email in the address book.","lastModifiedDate":"2018-02-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidEmail(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class Email {","lastModifiedDate":"2016-09-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" private static final String SPECIAL_CHARACTERS \u003d \"+_.-\";","lastModifiedDate":"2021-07-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Emails should be of the format local-part@domain \"","lastModifiedDate":"2018-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":" + \"and adhere to the following constraints:\\n\"","lastModifiedDate":"2018-02-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":" + \"1. The local-part should only contain alphanumeric characters and these special characters, excluding \"","lastModifiedDate":"2018-02-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":" + \"the parentheses, (\" + SPECIAL_CHARACTERS + \"). The local-part may not start or end with any special \"","lastModifiedDate":"2021-07-20"},{"lineNumber":16,"author":{"gitId":"-"},"content":" + \"characters.\\n\"","lastModifiedDate":"2021-07-20"},{"lineNumber":17,"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":18,"author":{"gitId":"-"},"content":" + \"separated by periods.\\n\"","lastModifiedDate":"2021-07-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":" + \"The domain name must:\\n\"","lastModifiedDate":"2018-02-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":" + \" - end with a domain label at least 2 characters long\\n\"","lastModifiedDate":"2021-07-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \" - have each domain label start and end with alphanumeric characters\\n\"","lastModifiedDate":"2021-07-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \" - have each domain label consist of alphanumeric characters, separated only by hyphens, if any.\";","lastModifiedDate":"2021-07-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" // alphanumeric and special characters","lastModifiedDate":"2018-02-09"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String ALPHANUMERIC_NO_UNDERSCORE \u003d \"[^\\\\W_]+\"; // alphanumeric characters except underscore","lastModifiedDate":"2021-07-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String LOCAL_PART_REGEX \u003d \"^\" + ALPHANUMERIC_NO_UNDERSCORE + \"([\" + SPECIAL_CHARACTERS + \"]\"","lastModifiedDate":"2021-07-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" + ALPHANUMERIC_NO_UNDERSCORE + \")*\";","lastModifiedDate":"2021-07-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String DOMAIN_PART_REGEX \u003d ALPHANUMERIC_NO_UNDERSCORE","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_LAST_PART_REGEX \u003d \"(\" + DOMAIN_PART_REGEX + \"){2,}$\"; // At least two chars","lastModifiedDate":"2021-07-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String DOMAIN_REGEX \u003d \"(\" + DOMAIN_PART_REGEX + \"\\\\.)*\" + DOMAIN_LAST_PART_REGEX;","lastModifiedDate":"2021-07-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d LOCAL_PART_REGEX + \"@\" + DOMAIN_REGEX;","lastModifiedDate":"2021-07-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public final String value;","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":" * Constructs an {@code Email}.","lastModifiedDate":"2017-05-30"},{"lineNumber":37,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @param email A valid email address.","lastModifiedDate":"2017-05-30"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public Email(String email) {","lastModifiedDate":"2017-05-30"},{"lineNumber":41,"author":{"gitId":"-"},"content":" checkArgument(isValidEmail(email), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":42,"author":{"gitId":"-"},"content":" value \u003d email;","lastModifiedDate":"2018-08-14"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Returns if a given string is a valid email.","lastModifiedDate":"2018-04-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static boolean isValidEmail(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"jerremyng"},"content":" return test \u003d\u003d null || test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24"},{"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 boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return true;","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":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" if (!(other instanceof Email)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return false;","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":" Email otherEmail \u003d (Email) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return value.equals(otherEmail.value);","lastModifiedDate":"2023-07-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"jerremyng":1,"-":76}},{"path":"src/main/java/seedu/address/model/person/ImagePath.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":" * Represents the file path of an image.","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":"public class ImagePath {","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":" private static final Path DEFAULT_IMAGE_PATH \u003d Paths.get(\"/images/default_image.png\");","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"ChrysanthemumT"},"content":" private Path filePath \u003d DEFAULT_IMAGE_PATH;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"ChrysanthemumT"},"content":" * Constructs an ImagePath object with the default file path.","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"ChrysanthemumT"},"content":" public ImagePath() {","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"ChrysanthemumT"},"content":" this.filePath \u003d DEFAULT_IMAGE_PATH;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"ChrysanthemumT"},"content":" * Constructs an ImagePath object with the specified file path.","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"ChrysanthemumT"},"content":" * @param path The file path of the image.","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"ChrysanthemumT"},"content":" public ImagePath(Path path) {","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"ChrysanthemumT"},"content":" this.filePath \u003d path;","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"ChrysanthemumT"},"content":" * Gets the file path of the image.","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"ChrysanthemumT"},"content":" * @return The file path of the image.","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"ChrysanthemumT"},"content":" public Path getFilePath() {","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"ChrysanthemumT"},"content":" return this.filePath;","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"ChrysanthemumT":39}},{"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":"-"},"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":" // Data fields","lastModifiedDate":"2018-04-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19"},{"lineNumber":25,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":27,"author":{"gitId":"ChrysanthemumT"},"content":" private ImagePath image;","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"ChrysanthemumT"},"content":" private Rating rating;","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"jerremyng"},"content":" * Name must not be null","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public Person(Name name, Phone phone, Email email, Address address, Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-03-14"},{"lineNumber":34,"author":{"gitId":"jerremyng"},"content":" requireAllNonNull(name);","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20"},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":40,"author":{"gitId":"ChrysanthemumT"},"content":" this.image \u003d new ImagePath();","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"ChrysanthemumT"},"content":" * Constructs a Person object with the specified attributes.","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"ChrysanthemumT"},"content":" * @param name The name of the person.","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"ChrysanthemumT"},"content":" * @param phone The phone number of the person.","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"ChrysanthemumT"},"content":" * @param email The email address of the person.","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"ChrysanthemumT"},"content":" * @param address The address of the person.","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"ChrysanthemumT"},"content":" * @param tags The set of tags associated with the person.","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"ChrysanthemumT"},"content":" * @param image The image path of the person.","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"ChrysanthemumT"},"content":" public Person(Name name, Phone phone, Email email, Address address, Set\u003cTag\u003e tags, ImagePath image) {","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" requireAllNonNull(name, phone, email, address, tags);","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"ChrysanthemumT"},"content":" this.image \u003d image;","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":80,"author":{"gitId":"ChrysanthemumT"},"content":" public void setRating(int rating) {","lastModifiedDate":"2024-03-12"},{"lineNumber":81,"author":{"gitId":"ChrysanthemumT"},"content":" this.rating.setRating(rating);","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":92,"author":{"gitId":"ChrysanthemumT"},"content":" public ImagePath getImage() {","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"ChrysanthemumT"},"content":" return this.image;","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":105,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19"},{"lineNumber":106,"author":{"gitId":"-"},"content":" \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2020-12-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":109,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":110,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19"},{"lineNumber":111,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":112,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":115,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":116,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":119,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10"},{"lineNumber":121,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":124,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10"},{"lineNumber":125,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":128,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":129,"author":{"gitId":"-"},"content":" \u0026\u0026 tags.equals(otherPerson.tags);","lastModifiedDate":"2023-07-13"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":134,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":135,"author":{"gitId":"-"},"content":" return Objects.hash(name, phone, email, address, tags);","lastModifiedDate":"2016-08-24"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":140,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":149,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"jerremyng":2,"ChrysanthemumT":27,"-":120}},{"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 seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Represents a Person\u0027s phone number in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidPhone(String)}","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class Phone {","lastModifiedDate":"2016-09-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","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":" \"Phone numbers should only contain numbers, and it should be at least 3 digits long\";","lastModifiedDate":"2018-04-04"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\d{3,}\";","lastModifiedDate":"2018-09-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public final String value;","lastModifiedDate":"2016-08-24"},{"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 Phone}.","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @param phone A valid phone number.","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public Phone(String phone) {","lastModifiedDate":"2017-05-30"},{"lineNumber":23,"author":{"gitId":"-"},"content":" checkArgument(isValidPhone(phone), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":" value \u003d phone;","lastModifiedDate":"2018-08-14"},{"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-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid phone number.","lastModifiedDate":"2018-04-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static boolean isValidPhone(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"jerremyng"},"content":" return test \u003d\u003d null || test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-18"},{"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 String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"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 Phone)) {","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":" Phone otherPhone \u003d (Phone) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" return value.equals(otherPhone.value);","lastModifiedDate":"2023-07-13"},{"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 int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return value.hashCode();","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":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"jerremyng":1,"-":58}},{"path":"src/main/java/seedu/address/model/person/Rating.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"jerremyng"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"jerremyng"},"content":" * Represents a Person\u0027s rating in the address book.","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"jerremyng"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":"public class Rating {","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":" private int rating; // Rating out of 5 stars","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":" public Rating() {","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":" this.rating \u003d 0; // Initialize with 0 stars","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" * Constructs an {@code Rating}.","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" * @param rating A valid rating.","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" public Rating(int rating) {","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" if (rating \u003e\u003d 0 \u0026\u0026 rating \u003c\u003d 5) {","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" this.rating \u003d rating;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" } else {","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" throw new IllegalArgumentException(\"Invalid rating. Please provide a rating between 0 and 5.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"ChrysanthemumT"},"content":" public void setRating(int rating) {","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"ChrysanthemumT"},"content":" if (rating \u003e\u003d 0 \u0026\u0026 rating \u003c\u003d 5) {","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"ChrysanthemumT"},"content":" this.rating \u003d rating;","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"ChrysanthemumT"},"content":" } else {","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":" throw new IllegalArgumentException(\"Invalid rating. Please provide a rating between 0 and 5.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"cyqjoseph"},"content":" * Returns true if a given integer is a valid rating.","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"cyqjoseph"},"content":" public static boolean isValidRating(int test) {","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"cyqjoseph"},"content":" return test \u003e\u003d 0 \u0026\u0026 test \u003c\u003d 5;","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"ChrysanthemumT"},"content":" public int getRating() {","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"ChrysanthemumT"},"content":" return rating;","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"cyqjoseph"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"cyqjoseph"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"cyqjoseph"},"content":" return true;","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"cyqjoseph"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"cyqjoseph"},"content":" if (!(other instanceof Rating)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"cyqjoseph"},"content":" return false;","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"cyqjoseph"},"content":" Rating otherRating \u003d (Rating) other;","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"cyqjoseph"},"content":" return rating \u003d\u003d otherRating.rating;","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"jerremyng":3,"ChrysanthemumT":20,"cyqjoseph":37}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedBooking.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.model.booking.Booking;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.model.booking.Description;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.model.booking.EndTime;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.model.booking.StartTime;","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" * Jackson-friendly version of {@link Booking}.","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":"class JsonAdaptedBooking {","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Booking\u0027s %s field is missing!\";","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" private final String description;","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" private final String start;","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" private final String end;","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" * Constructs a {@code JsonAdaptedBooking} with the given Booking details.","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":" @JsonCreator","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":" public JsonAdaptedBooking(@JsonProperty(\"description\") String description, @JsonProperty(\"start\") String start,","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":" @JsonProperty(\"end\") String end) {","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"cyqjoseph"},"content":" this.description \u003d description;","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"cyqjoseph"},"content":" this.start \u003d start;","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"cyqjoseph"},"content":" this.end \u003d end;","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"cyqjoseph"},"content":" * Converts a given {@code Booking} into this class for Jackson use.","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"cyqjoseph"},"content":" public JsonAdaptedBooking(Booking source) {","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"cyqjoseph"},"content":" description \u003d source.getDescription().description;","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"cyqjoseph"},"content":" start \u003d source.getStart().startTimeString;","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"cyqjoseph"},"content":" end \u003d source.getEnd().endTimeString;","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"cyqjoseph"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Booking} object.","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"cyqjoseph"},"content":" *","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"cyqjoseph"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"cyqjoseph"},"content":" public Booking toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"cyqjoseph"},"content":" if (description \u003d\u003d null) {","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"cyqjoseph"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Booking.class.getSimpleName()));","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"cyqjoseph"},"content":" final Description modelDescription \u003d new Description(description);","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"cyqjoseph"},"content":" if (start \u003d\u003d null) {","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"cyqjoseph"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-14"},{"lineNumber":58,"author":{"gitId":"cyqjoseph"},"content":" StartTime.class.getSimpleName()));","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"cyqjoseph"},"content":" if (!StartTime.isValidStartTime(start)) {","lastModifiedDate":"2024-03-14"},{"lineNumber":61,"author":{"gitId":"cyqjoseph"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-14"},{"lineNumber":62,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":63,"author":{"gitId":"cyqjoseph"},"content":" final StartTime modelStart \u003d new StartTime(start);","lastModifiedDate":"2024-03-14"},{"lineNumber":64,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":65,"author":{"gitId":"cyqjoseph"},"content":" if (end \u003d\u003d null) {","lastModifiedDate":"2024-03-14"},{"lineNumber":66,"author":{"gitId":"cyqjoseph"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, EndTime.class.getSimpleName()));","lastModifiedDate":"2024-03-14"},{"lineNumber":67,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"cyqjoseph"},"content":" if (!EndTime.isValidEndTime(end)) {","lastModifiedDate":"2024-03-14"},{"lineNumber":69,"author":{"gitId":"cyqjoseph"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-14"},{"lineNumber":70,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":71,"author":{"gitId":"cyqjoseph"},"content":" final EndTime modelEnd \u003d new EndTime(end);","lastModifiedDate":"2024-03-14"},{"lineNumber":72,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":73,"author":{"gitId":"cyqjoseph"},"content":" return new Booking(modelDescription, modelStart, modelEnd);","lastModifiedDate":"2024-03-14"},{"lineNumber":74,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":75,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"cyqjoseph":75}},{"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":"ChrysanthemumT"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-03-19"},{"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.Address;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"ChrysanthemumT"},"content":"import seedu.address.model.person.ImagePath;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13"},{"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":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"ChrysanthemumT"},"content":" private String image \u003d \"/images/default_image.png\";","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"ChrysanthemumT"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags, @JsonProperty(\"image\") String image) {","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"ChrysanthemumT"},"content":" this.image \u003d image;","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"ChrysanthemumT"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details without image.","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"ChrysanthemumT"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"ChrysanthemumT"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"ChrysanthemumT"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags) {","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"ChrysanthemumT"},"content":" this.name \u003d name;","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"ChrysanthemumT"},"content":" this.phone \u003d phone;","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"ChrysanthemumT"},"content":" this.email \u003d email;","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"ChrysanthemumT"},"content":" this.address \u003d address;","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"ChrysanthemumT"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"ChrysanthemumT"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"jerremyng"},"content":" // Check if phone is null before accessing its value","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"jerremyng"},"content":" phone \u003d source.getPhone() !\u003d null ? source.getPhone().value : null;","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"jerremyng"},"content":" // Check if email is null before accessing its value","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"jerremyng"},"content":" email \u003d source.getEmail() !\u003d null ? source.getEmail().value : null;","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"jerremyng"},"content":" // Check if address is null before accessing its value","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"jerremyng"},"content":" address \u003d source.getAddress() !\u003d null ? source.getAddress().value : null;","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09"},{"lineNumber":81,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"ChrysanthemumT"},"content":" image \u003d source.getImage().getFilePath().toString();","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09"},{"lineNumber":94,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13"},{"lineNumber":121,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":122,"author":{"gitId":"ChrysanthemumT"},"content":" if (image !\u003d null) {","lastModifiedDate":"2024-03-19"},{"lineNumber":123,"author":{"gitId":"ChrysanthemumT"},"content":" final ImagePath imagePath \u003d new ImagePath(Paths.get(image));","lastModifiedDate":"2024-03-19"},{"lineNumber":124,"author":{"gitId":"ChrysanthemumT"},"content":" return new Person(modelName, modelPhone, modelEmail, modelAddress, modelTags, imagePath);","lastModifiedDate":"2024-03-19"},{"lineNumber":125,"author":{"gitId":"ChrysanthemumT"},"content":" } else {","lastModifiedDate":"2024-03-19"},{"lineNumber":126,"author":{"gitId":"-"},"content":" return new Person(modelName, modelPhone, modelEmail, modelAddress, modelTags);","lastModifiedDate":"2018-08-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":130,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"jerremyng":6,"ChrysanthemumT":25,"-":99}},{"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":"cyqjoseph"},"content":"import seedu.address.model.booking.Booking;","lastModifiedDate":"2024-03-17"},{"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":"cyqjoseph"},"content":" public static final String MESSAGE_DUPLICATE_BOOKING \u003d \"Booking list contains duplicate booking(s).\";","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedPerson\u003e persons \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":" private final List\u003cJsonAdaptedBooking\u003e bookings \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-17"},{"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":"cyqjoseph"},"content":" public JsonSerializableAddressBook(@JsonProperty(\"persons\") List\u003cJsonAdaptedPerson\u003e persons,","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"cyqjoseph"},"content":" @JsonProperty(\"bookings\") List\u003cJsonAdaptedBooking\u003e bookings) {","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.persons.addAll(persons);","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"cyqjoseph"},"content":" this.bookings.addAll(bookings);","lastModifiedDate":"2024-03-17"},{"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":"-"},"content":" persons.addAll(source.getPersonList().stream().map(JsonAdaptedPerson::new).collect(Collectors.toList()));","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"cyqjoseph"},"content":" bookings.addAll(source.getBookingList().stream().map(JsonAdaptedBooking::new).collect(Collectors.toList()));","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","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":" * Converts this address book into the model\u0027s {@code AddressBook} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated.","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public AddressBook toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" for (JsonAdaptedPerson jsonAdaptedPerson : persons) {","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" Person person \u003d jsonAdaptedPerson.toModelType();","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (addressBook.hasPerson(person)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"cyqjoseph"},"content":" for (JsonAdaptedBooking jsonAdaptedBooking: bookings) {","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"cyqjoseph"},"content":" Booking booking \u003d jsonAdaptedBooking.toModelType();","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"cyqjoseph"},"content":" if (addressBook.hasBooking(booking)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"cyqjoseph"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_BOOKING);","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"cyqjoseph"},"content":" addressBook.addBooking(booking);","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"cyqjoseph":16,"-":59}},{"path":"src/main/java/seedu/address/ui/BookingCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"gauravuj"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"gauravuj"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"gauravuj"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"gauravuj"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"gauravuj"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"gauravuj"},"content":"import seedu.address.model.booking.Booking;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":" * A UI component that displays information of a {@code Booking}.","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"gauravuj"},"content":"public class BookingCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"gauravuj"},"content":" private static final String FXML \u003d \"BookingListCard.fxml\";","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"gauravuj"},"content":" public final Booking booking;","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"gauravuj"},"content":" @FXML","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"gauravuj"},"content":" private HBox cardPane;","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"gauravuj"},"content":" @FXML","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"gauravuj"},"content":" private Label id;","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"gauravuj"},"content":" @FXML","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"gauravuj"},"content":" private Label description;","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"gauravuj"},"content":" @FXML","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"gauravuj"},"content":" private Label startTime;","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"gauravuj"},"content":" @FXML","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"gauravuj"},"content":" private Label endTime;","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"ChrysanthemumT"},"content":" * Constructs a BookingCard object with the specified booking and displayed index.","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"ChrysanthemumT"},"content":" * @param booking The booking to display.","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"ChrysanthemumT"},"content":" * @param displayedIndex The index of the booking as displayed in the UI.","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"gauravuj"},"content":" public BookingCard(Booking booking, int displayedIndex) {","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"gauravuj"},"content":" super(FXML);","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"gauravuj"},"content":" this.booking \u003d booking;","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"gauravuj"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"gauravuj"},"content":" description.setText(booking.getDescription().description);","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"gauravuj"},"content":" startTime.setText(booking.getStart().startTimeString);","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"gauravuj"},"content":" endTime.setText(booking.getEnd().endTimeString);","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"gauravuj"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"gauravuj"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"gauravuj":34,"ChrysanthemumT":8,"cyqjoseph":1}},{"path":"src/main/java/seedu/address/ui/BookingListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"gauravuj"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"gauravuj"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"gauravuj"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"gauravuj"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"gauravuj"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"gauravuj"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"gauravuj"},"content":"import seedu.address.model.booking.Booking;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"ChrysanthemumT"},"content":" * Represents a panel that displays a list of bookings in the UI.","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"gauravuj"},"content":"public class BookingListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"gauravuj"},"content":" private static final String FXML \u003d \"BookingListPanel.fxml\";","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"gauravuj"},"content":" private final Logger logger \u003d LogsCenter.getLogger(BookingListPanel.class);","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"gauravuj"},"content":" @javafx.fxml.FXML","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"gauravuj"},"content":" private ListView\u003cBooking\u003e bookingListView;","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"gauravuj"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"gauravuj"},"content":" * Creates a {@code PersonListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"gauravuj"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"gauravuj"},"content":" public BookingListPanel(ObservableList\u003cBooking\u003e bookingList) {","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"gauravuj"},"content":" super(FXML);","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"gauravuj"},"content":" bookingListView.setItems(bookingList);","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"gauravuj"},"content":" bookingListView.setCellFactory(listView -\u003e new BookingListViewCell());","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"gauravuj"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"gauravuj"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"gauravuj"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Person} using a {@code PersonCard}.","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"gauravuj"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"gauravuj"},"content":" class BookingListViewCell extends ListCell\u003cBooking\u003e {","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"gauravuj"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"gauravuj"},"content":" protected void updateItem(Booking booking, boolean empty) {","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"gauravuj"},"content":" super.updateItem(booking, empty);","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"gauravuj"},"content":" if (empty || booking \u003d\u003d null) {","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"gauravuj"},"content":" setGraphic(null);","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"gauravuj"},"content":" setText(null);","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"gauravuj"},"content":" } else {","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"gauravuj"},"content":" setGraphic(new BookingCard(booking, getIndex() + 1).getRoot());","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"gauravuj"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"gauravuj"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"gauravuj"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"gauravuj"},"content":"}","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"gauravuj":44,"ChrysanthemumT":5}},{"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":"-"},"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":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-10-15"},{"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":"","lastModifiedDate":"2016-09-14"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * The UI component that is responsible for receiving user command inputs.","lastModifiedDate":"2017-08-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class CommandBox extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String ERROR_STYLE_CLASS \u003d \"error\";","lastModifiedDate":"2017-02-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"CommandBox.fxml\";","lastModifiedDate":"2017-04-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private final CommandExecutor commandExecutor;","lastModifiedDate":"2018-12-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-14"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private TextField commandTextField;","lastModifiedDate":"2016-09-14"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Creates a {@code CommandBox} with the given {@code CommandExecutor}.","lastModifiedDate":"2020-05-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public CommandBox(CommandExecutor commandExecutor) {","lastModifiedDate":"2019-01-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" this.commandExecutor \u003d commandExecutor;","lastModifiedDate":"2018-12-09"},{"lineNumber":30,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"gauravuj"},"content":" commandTextField.focusedProperty().addListener((observable, oldValue, newValue) -\u003e {","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"gauravuj"},"content":" if (newValue) { // When the text field is focused","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"gauravuj"},"content":" if (commandTextField.getText().equals(\"\u003e \")) {","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"gauravuj"},"content":" commandTextField.setText(\"\");","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"gauravuj"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"gauravuj"},"content":" } else { // When the text field loses focus","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"gauravuj"},"content":" if (commandTextField.getText().isEmpty()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"gauravuj"},"content":" commandTextField.setText(\"\u003e \");","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"gauravuj"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"gauravuj"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"gauravuj"},"content":" });","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // calls #setStyleToDefault() whenever there is a change to the text of the command box.","lastModifiedDate":"2017-06-28"},{"lineNumber":44,"author":{"gitId":"gauravuj"},"content":" commandTextField.textProperty().addListener((observable, oldValue, newValue) -\u003e {","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"gauravuj"},"content":" if (!newValue.startsWith(\"\u003e \")) {","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"gauravuj"},"content":" commandTextField.setText(\"\u003e \" + newValue.replaceAll(\"^\u003e ?\", \"\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"gauravuj"},"content":" commandTextField.positionCaret(commandTextField.getText().length()); // Move the caret to the end","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"gauravuj"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"gauravuj"},"content":" setStyleToDefault();","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"gauravuj"},"content":" });","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-14"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Handles the Enter button pressed event.","lastModifiedDate":"2017-08-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-14"},{"lineNumber":57,"author":{"gitId":"-"},"content":" private void handleCommandEntered() {","lastModifiedDate":"2018-04-01"},{"lineNumber":58,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-02-05"},{"lineNumber":59,"author":{"gitId":"gauravuj"},"content":" // Extract the actual command text entered by the user.","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"gauravuj"},"content":" String commandText \u003d commandTextField.getText().substring(2).trim();","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"gauravuj"},"content":" if (!commandText.isEmpty()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"-"},"content":" commandExecutor.execute(commandText);","lastModifiedDate":"2020-12-04"},{"lineNumber":64,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"gauravuj"},"content":" // Clear the command input only if the command is successful.","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"gauravuj"},"content":" commandTextField.setText(\"\u003e \");","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"gauravuj"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2017-03-11"},{"lineNumber":69,"author":{"gitId":"gauravuj"},"content":" // If there\u0027s an error, indicate command failure without clearing the text","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":" setStyleToIndicateCommandFailure();","lastModifiedDate":"2017-02-05"},{"lineNumber":71,"author":{"gitId":"gauravuj"},"content":" commandTextField.positionCaret(commandTextField.getText().length());","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"gauravuj"},"content":" } finally {","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"gauravuj"},"content":" commandTextField.positionCaret(commandTextField.getText().length());","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":77,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-28"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Sets the command box style to use the default style.","lastModifiedDate":"2017-06-28"},{"lineNumber":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28"},{"lineNumber":82,"author":{"gitId":"-"},"content":" private void setStyleToDefault() {","lastModifiedDate":"2017-06-28"},{"lineNumber":83,"author":{"gitId":"-"},"content":" commandTextField.getStyleClass().remove(ERROR_STYLE_CLASS);","lastModifiedDate":"2017-02-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-28"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Sets the command box style to indicate a failed command.","lastModifiedDate":"2017-02-05"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28"},{"lineNumber":89,"author":{"gitId":"-"},"content":" private void setStyleToIndicateCommandFailure() {","lastModifiedDate":"2017-02-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":" ObservableList\u003cString\u003e styleClass \u003d commandTextField.getStyleClass();","lastModifiedDate":"2017-03-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":92,"author":{"gitId":"gauravuj"},"content":" // Just add the error style class, do not clear the text","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"gauravuj"},"content":" if (!styleClass.contains(ERROR_STYLE_CLASS)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"gauravuj"},"content":" styleClass.add(ERROR_STYLE_CLASS);","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":97,"author":{"gitId":"gauravuj"},"content":" // Keep the caret at the end of the text","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"gauravuj"},"content":" commandTextField.positionCaret(commandTextField.getText().length());","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":101,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Represents a function that can execute commands.","lastModifiedDate":"2018-12-09"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":105,"author":{"gitId":"-"},"content":" @FunctionalInterface","lastModifiedDate":"2018-12-09"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public interface CommandExecutor {","lastModifiedDate":"2018-12-09"},{"lineNumber":107,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":109,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":110,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09"},{"lineNumber":111,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":112,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2018-12-09"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":115,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"}],"authorContributionMap":{"gauravuj":40,"-":75}},{"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":"jerremyng"},"content":" public static final String USERGUIDE_URL \u003d \"https://ay2324s2-cs2103t-w11-3.github.io/tp/UserGuide.html\";","lastModifiedDate":"2024-03-18"},{"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":{"jerremyng":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":"ChrysanthemumT"},"content":"import javafx.scene.Scene;","lastModifiedDate":"2024-03-21"},{"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":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2016-09-28"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-06-16"},{"lineNumber":16,"author":{"gitId":"ChrysanthemumT"},"content":"import seedu.address.commons.core.Theme;","lastModifiedDate":"2024-03-21"},{"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":"gauravuj"},"content":" private BookingListPanel bookingListPanel;","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"gauravuj"},"content":" private TerminalWindow terminalWindow;","lastModifiedDate":"2024-03-10"},{"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":"-"},"content":" private StackPane personListPanelPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":51,"author":{"gitId":"gauravuj"},"content":" @FXML","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"gauravuj"},"content":" private StackPane bookingListPanelPlaceholder;","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" private StackPane resultDisplayPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" private StackPane statusbarPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":68,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21"},{"lineNumber":74,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(logic.getGuiSettings().getTheme());","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"ChrysanthemumT"},"content":" setTheme(logic.getGuiSettings());","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21"},{"lineNumber":85,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","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":" /**","lastModifiedDate":"2016-12-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","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":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18"},{"lineNumber":109,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":110,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":111,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18"},{"lineNumber":112,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18"},{"lineNumber":113,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":115,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":118,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":119,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16"},{"lineNumber":120,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":121,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21"},{"lineNumber":122,"author":{"gitId":"-"},"content":" personListPanel \u003d new PersonListPanel(logic.getFilteredPersonList());","lastModifiedDate":"2019-01-25"},{"lineNumber":123,"author":{"gitId":"-"},"content":" personListPanelPlaceholder.getChildren().add(personListPanel.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":125,"author":{"gitId":"gauravuj"},"content":" bookingListPanel \u003d new BookingListPanel(logic.getFilteredBookingList());","lastModifiedDate":"2024-03-18"},{"lineNumber":126,"author":{"gitId":"gauravuj"},"content":" bookingListPanelPlaceholder.getChildren().add(bookingListPanel.getRoot());","lastModifiedDate":"2024-03-18"},{"lineNumber":127,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":128,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09"},{"lineNumber":129,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getAddressBookFilePath());","lastModifiedDate":"2019-01-25"},{"lineNumber":132,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25"},{"lineNumber":135,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14"},{"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":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27"},{"lineNumber":140,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":141,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":142,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27"},{"lineNumber":143,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27"},{"lineNumber":144,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27"},{"lineNumber":145,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27"},{"lineNumber":146,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":149,"author":{"gitId":"ChrysanthemumT"},"content":" private void setTheme(GuiSettings guiSettings) {","lastModifiedDate":"2024-03-21"},{"lineNumber":150,"author":{"gitId":"ChrysanthemumT"},"content":" String styleSheet;","lastModifiedDate":"2024-03-21"},{"lineNumber":151,"author":{"gitId":"ChrysanthemumT"},"content":" Theme theme \u003d guiSettings.getTheme();","lastModifiedDate":"2024-03-21"},{"lineNumber":152,"author":{"gitId":"ChrysanthemumT"},"content":" switch(theme) {","lastModifiedDate":"2024-03-21"},{"lineNumber":153,"author":{"gitId":"ChrysanthemumT"},"content":" case LIGHTTHEME:","lastModifiedDate":"2024-03-21"},{"lineNumber":154,"author":{"gitId":"ChrysanthemumT"},"content":" styleSheet \u003d \"/view/styleSheets/LightTheme.css\";","lastModifiedDate":"2024-03-21"},{"lineNumber":155,"author":{"gitId":"ChrysanthemumT"},"content":" break;","lastModifiedDate":"2024-03-21"},{"lineNumber":156,"author":{"gitId":"ChrysanthemumT"},"content":" case DARKTHEME:","lastModifiedDate":"2024-03-21"},{"lineNumber":157,"author":{"gitId":"ChrysanthemumT"},"content":" default:","lastModifiedDate":"2024-03-21"},{"lineNumber":158,"author":{"gitId":"ChrysanthemumT"},"content":" styleSheet \u003d \"/view/styleSheets/DarkTheme.css\";","lastModifiedDate":"2024-03-21"},{"lineNumber":159,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":160,"author":{"gitId":"ChrysanthemumT"},"content":" Scene scene \u003d primaryStage.getScene();","lastModifiedDate":"2024-03-21"},{"lineNumber":161,"author":{"gitId":"ChrysanthemumT"},"content":" scene.getStylesheets().clear();","lastModifiedDate":"2024-03-21"},{"lineNumber":162,"author":{"gitId":"ChrysanthemumT"},"content":" scene.getStylesheets().addAll(this.getClass().getResource(styleSheet).toExternalForm());","lastModifiedDate":"2024-03-21"},{"lineNumber":163,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":165,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":166,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15"},{"lineNumber":167,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":168,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":169,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31"},{"lineNumber":170,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15"},{"lineNumber":171,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":172,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15"},{"lineNumber":173,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":177,"author":{"gitId":"gauravuj"},"content":" /**","lastModifiedDate":"2024-03-10"},{"lineNumber":178,"author":{"gitId":"gauravuj"},"content":" * Opens the terminal window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2024-03-10"},{"lineNumber":179,"author":{"gitId":"gauravuj"},"content":" */","lastModifiedDate":"2024-03-10"},{"lineNumber":180,"author":{"gitId":"gauravuj"},"content":" @FXML","lastModifiedDate":"2024-03-10"},{"lineNumber":181,"author":{"gitId":"gauravuj"},"content":" public void handleTerminal() {","lastModifiedDate":"2024-03-10"},{"lineNumber":182,"author":{"gitId":"gauravuj"},"content":" if (!terminalWindow.isShowing()) {","lastModifiedDate":"2024-03-10"},{"lineNumber":183,"author":{"gitId":"gauravuj"},"content":" helpWindow.show();","lastModifiedDate":"2024-03-10"},{"lineNumber":184,"author":{"gitId":"gauravuj"},"content":" } else {","lastModifiedDate":"2024-03-10"},{"lineNumber":185,"author":{"gitId":"gauravuj"},"content":" helpWindow.focus();","lastModifiedDate":"2024-03-10"},{"lineNumber":186,"author":{"gitId":"gauravuj"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":187,"author":{"gitId":"gauravuj"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":188,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":189,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15"},{"lineNumber":190,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":193,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":194,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18"},{"lineNumber":195,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":196,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":197,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18"},{"lineNumber":198,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08"},{"lineNumber":199,"author":{"gitId":"ChrysanthemumT"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY(), logic.getGuiSettings().getStringTheme());","lastModifiedDate":"2024-03-21"},{"lineNumber":200,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08"},{"lineNumber":201,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":202,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":205,"author":{"gitId":"-"},"content":" public PersonListPanel getPersonListPanel() {","lastModifiedDate":"2016-08-25"},{"lineNumber":206,"author":{"gitId":"-"},"content":" return personListPanel;","lastModifiedDate":"2018-08-14"},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":209,"author":{"gitId":"ChrysanthemumT"},"content":" public BookingListPanel getBookingListPanel() {","lastModifiedDate":"2024-03-20"},{"lineNumber":210,"author":{"gitId":"ChrysanthemumT"},"content":" return bookingListPanel;","lastModifiedDate":"2024-03-20"},{"lineNumber":211,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":212,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":213,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":214,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":215,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":216,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09"},{"lineNumber":217,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":218,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09"},{"lineNumber":219,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":220,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09"},{"lineNumber":221,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":222,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":224,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":225,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09"},{"lineNumber":226,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":228,"author":{"gitId":"gauravuj"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2024-03-10"},{"lineNumber":229,"author":{"gitId":"gauravuj"},"content":" handleTerminal();","lastModifiedDate":"2024-03-10"},{"lineNumber":230,"author":{"gitId":"gauravuj"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":231,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":232,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":233,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09"},{"lineNumber":234,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":236,"author":{"gitId":"ChrysanthemumT"},"content":" if (commandResult.isTheme()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":237,"author":{"gitId":"ChrysanthemumT"},"content":" setTheme(logic.getGuiSettings());","lastModifiedDate":"2024-03-21"},{"lineNumber":238,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":239,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":240,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":241,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09"},{"lineNumber":242,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13"},{"lineNumber":243,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09"},{"lineNumber":244,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09"},{"lineNumber":245,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":246,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":247,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":248,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"gauravuj":25,"ChrysanthemumT":28,"-":195}},{"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":"ChrysanthemumT"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2024-03-19"},{"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":"ChrysanthemumT"},"content":"import javafx.scene.shape.Circle;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" * A UI component that displays information of a {@code Person}.","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2016-09-21"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25"},{"lineNumber":27,"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":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public final Person person;","lastModifiedDate":"2018-01-10"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" private Label address;","lastModifiedDate":"2016-09-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18"},{"lineNumber":46,"author":{"gitId":"ChrysanthemumT"},"content":" @FXML","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"ChrysanthemumT"},"content":" private ImageView displayPicture;","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20"},{"lineNumber":57,"author":{"gitId":"ChrysanthemumT"},"content":" final Circle clip \u003d new Circle(45, 45, 39);","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"ChrysanthemumT"},"content":" displayPicture.setClip(clip);","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"ChrysanthemumT"},"content":" displayPicture.setImage(new Image(this.getClass()","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"ChrysanthemumT"},"content":" .getResourceAsStream(person.getImage().getFilePath().toString())));","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"jerremyng"},"content":" phone.setText(person.getPhone() \u003d\u003d null ? \"\" : person.getPhone().value);","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"jerremyng"},"content":" address.setText(person.getAddress() \u003d\u003d null ? \"\" : person.getAddress().value);","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"jerremyng"},"content":" email.setText(person.getEmail() \u003d\u003d null ? \"\" : person.getEmail().value);","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"-"},"content":" person.getTags().stream()","lastModifiedDate":"2019-01-02"},{"lineNumber":65,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02"},{"lineNumber":66,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"jerremyng":3,"ChrysanthemumT":9,"cyqjoseph":1,"-":55}},{"path":"src/main/java/seedu/address/ui/TerminalWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"gauravuj"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":3,"author":{"gitId":"gauravuj"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-10"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"gauravuj"},"content":"import javafx.scene.control.TextArea;","lastModifiedDate":"2024-03-10"},{"lineNumber":7,"author":{"gitId":"gauravuj"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"gauravuj"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"gauravuj"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-10"},{"lineNumber":10,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":11,"author":{"gitId":"gauravuj"},"content":"/**","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"gauravuj"},"content":" * Controller for a terminal window.","lastModifiedDate":"2024-03-10"},{"lineNumber":13,"author":{"gitId":"gauravuj"},"content":" */","lastModifiedDate":"2024-03-10"},{"lineNumber":14,"author":{"gitId":"gauravuj"},"content":"public class TerminalWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2024-03-10"},{"lineNumber":15,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":16,"author":{"gitId":"gauravuj"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(TerminalWindow.class);","lastModifiedDate":"2024-03-10"},{"lineNumber":17,"author":{"gitId":"gauravuj"},"content":" private static final String FXML \u003d \"TerminalWindow.fxml\";","lastModifiedDate":"2024-03-10"},{"lineNumber":18,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":19,"author":{"gitId":"gauravuj"},"content":" @FXML","lastModifiedDate":"2024-03-10"},{"lineNumber":20,"author":{"gitId":"gauravuj"},"content":" private TextArea outputArea;","lastModifiedDate":"2024-03-10"},{"lineNumber":21,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":22,"author":{"gitId":"gauravuj"},"content":" @FXML","lastModifiedDate":"2024-03-10"},{"lineNumber":23,"author":{"gitId":"gauravuj"},"content":" private TextField inputField;","lastModifiedDate":"2024-03-10"},{"lineNumber":24,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":25,"author":{"gitId":"gauravuj"},"content":" /**","lastModifiedDate":"2024-03-10"},{"lineNumber":26,"author":{"gitId":"gauravuj"},"content":" * Creates a new TerminalWindow.","lastModifiedDate":"2024-03-10"},{"lineNumber":27,"author":{"gitId":"gauravuj"},"content":" *","lastModifiedDate":"2024-03-10"},{"lineNumber":28,"author":{"gitId":"gauravuj"},"content":" * @param root Stage to use as the root of the TerminalWindow.","lastModifiedDate":"2024-03-10"},{"lineNumber":29,"author":{"gitId":"gauravuj"},"content":" */","lastModifiedDate":"2024-03-10"},{"lineNumber":30,"author":{"gitId":"gauravuj"},"content":" public TerminalWindow(Stage root) {","lastModifiedDate":"2024-03-10"},{"lineNumber":31,"author":{"gitId":"gauravuj"},"content":" super(FXML, root);","lastModifiedDate":"2024-03-10"},{"lineNumber":32,"author":{"gitId":"gauravuj"},"content":" // Initialize your Terminal window here if needed","lastModifiedDate":"2024-03-10"},{"lineNumber":33,"author":{"gitId":"gauravuj"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":34,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":35,"author":{"gitId":"gauravuj"},"content":" /**","lastModifiedDate":"2024-03-10"},{"lineNumber":36,"author":{"gitId":"gauravuj"},"content":" * Creates a new TerminalWindow.","lastModifiedDate":"2024-03-10"},{"lineNumber":37,"author":{"gitId":"gauravuj"},"content":" */","lastModifiedDate":"2024-03-10"},{"lineNumber":38,"author":{"gitId":"gauravuj"},"content":" public TerminalWindow() {","lastModifiedDate":"2024-03-10"},{"lineNumber":39,"author":{"gitId":"gauravuj"},"content":" this(new Stage());","lastModifiedDate":"2024-03-10"},{"lineNumber":40,"author":{"gitId":"gauravuj"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":41,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":42,"author":{"gitId":"gauravuj"},"content":" /**","lastModifiedDate":"2024-03-10"},{"lineNumber":43,"author":{"gitId":"gauravuj"},"content":" * Shows the terminal window.","lastModifiedDate":"2024-03-10"},{"lineNumber":44,"author":{"gitId":"gauravuj"},"content":" */","lastModifiedDate":"2024-03-10"},{"lineNumber":45,"author":{"gitId":"gauravuj"},"content":" public void show() {","lastModifiedDate":"2024-03-10"},{"lineNumber":46,"author":{"gitId":"gauravuj"},"content":" logger.fine(\"Showing terminal window.\");","lastModifiedDate":"2024-03-10"},{"lineNumber":47,"author":{"gitId":"gauravuj"},"content":" getRoot().show();","lastModifiedDate":"2024-03-10"},{"lineNumber":48,"author":{"gitId":"gauravuj"},"content":" getRoot().centerOnScreen();","lastModifiedDate":"2024-03-10"},{"lineNumber":49,"author":{"gitId":"gauravuj"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":50,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":51,"author":{"gitId":"gauravuj"},"content":" /**","lastModifiedDate":"2024-03-10"},{"lineNumber":52,"author":{"gitId":"gauravuj"},"content":" * Returns true if the terminal window is currently being shown.","lastModifiedDate":"2024-03-10"},{"lineNumber":53,"author":{"gitId":"gauravuj"},"content":" */","lastModifiedDate":"2024-03-10"},{"lineNumber":54,"author":{"gitId":"gauravuj"},"content":" public boolean isShowing() {","lastModifiedDate":"2024-03-10"},{"lineNumber":55,"author":{"gitId":"gauravuj"},"content":" return getRoot().isShowing();","lastModifiedDate":"2024-03-10"},{"lineNumber":56,"author":{"gitId":"gauravuj"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":57,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":58,"author":{"gitId":"gauravuj"},"content":" /**","lastModifiedDate":"2024-03-10"},{"lineNumber":59,"author":{"gitId":"gauravuj"},"content":" * Hides the terminal window.","lastModifiedDate":"2024-03-10"},{"lineNumber":60,"author":{"gitId":"gauravuj"},"content":" */","lastModifiedDate":"2024-03-10"},{"lineNumber":61,"author":{"gitId":"gauravuj"},"content":" public void hide() {","lastModifiedDate":"2024-03-10"},{"lineNumber":62,"author":{"gitId":"gauravuj"},"content":" getRoot().hide();","lastModifiedDate":"2024-03-10"},{"lineNumber":63,"author":{"gitId":"gauravuj"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":64,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":65,"author":{"gitId":"gauravuj"},"content":" /**","lastModifiedDate":"2024-03-10"},{"lineNumber":66,"author":{"gitId":"gauravuj"},"content":" * Focuses on the terminal window.","lastModifiedDate":"2024-03-10"},{"lineNumber":67,"author":{"gitId":"gauravuj"},"content":" */","lastModifiedDate":"2024-03-10"},{"lineNumber":68,"author":{"gitId":"gauravuj"},"content":" public void focus() {","lastModifiedDate":"2024-03-10"},{"lineNumber":69,"author":{"gitId":"gauravuj"},"content":" getRoot().requestFocus();","lastModifiedDate":"2024-03-10"},{"lineNumber":70,"author":{"gitId":"gauravuj"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":71,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":72,"author":{"gitId":"gauravuj"},"content":" /**","lastModifiedDate":"2024-03-10"},{"lineNumber":73,"author":{"gitId":"gauravuj"},"content":" * Initializes the controller class. This method is automatically called","lastModifiedDate":"2024-03-10"},{"lineNumber":74,"author":{"gitId":"gauravuj"},"content":" * after the fxml file has been loaded.","lastModifiedDate":"2024-03-10"},{"lineNumber":75,"author":{"gitId":"gauravuj"},"content":" */","lastModifiedDate":"2024-03-10"},{"lineNumber":76,"author":{"gitId":"gauravuj"},"content":" @FXML","lastModifiedDate":"2024-03-10"},{"lineNumber":77,"author":{"gitId":"gauravuj"},"content":" private void initialize() {","lastModifiedDate":"2024-03-10"},{"lineNumber":78,"author":{"gitId":"gauravuj"},"content":" inputField.setOnAction(event -\u003e {","lastModifiedDate":"2024-03-10"},{"lineNumber":79,"author":{"gitId":"gauravuj"},"content":" String command \u003d inputField.getText();","lastModifiedDate":"2024-03-10"},{"lineNumber":80,"author":{"gitId":"gauravuj"},"content":" // Process the command and append to outputArea","lastModifiedDate":"2024-03-10"},{"lineNumber":81,"author":{"gitId":"gauravuj"},"content":" outputArea.appendText(\"\u003e\" + command + \"\\n\");","lastModifiedDate":"2024-03-10"},{"lineNumber":82,"author":{"gitId":"gauravuj"},"content":" // Placeholder for actual command processing","lastModifiedDate":"2024-03-10"},{"lineNumber":83,"author":{"gitId":"gauravuj"},"content":" outputArea.appendText(\"Command output goes here...\\n\");","lastModifiedDate":"2024-03-10"},{"lineNumber":84,"author":{"gitId":"gauravuj"},"content":" inputField.clear();","lastModifiedDate":"2024-03-10"},{"lineNumber":85,"author":{"gitId":"gauravuj"},"content":" });","lastModifiedDate":"2024-03-10"},{"lineNumber":86,"author":{"gitId":"gauravuj"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":87,"author":{"gitId":"gauravuj"},"content":"}","lastModifiedDate":"2024-03-10"}],"authorContributionMap":{"gauravuj":85,"cyqjoseph":2}},{"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":"gauravuj"},"content":"import javafx.scene.text.Font;","lastModifiedDate":"2024-03-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"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":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":43,"author":{"gitId":"gauravuj"},"content":" // load fonts","lastModifiedDate":"2024-03-08"},{"lineNumber":44,"author":{"gitId":"gauravuj"},"content":" Font.loadFont(getClass().getResourceAsStream(\"/fonts/Hack/Hack-Regular.ttf\"), 14);","lastModifiedDate":"2024-03-08"},{"lineNumber":45,"author":{"gitId":"gauravuj"},"content":" Font.loadFont(getClass().getResourceAsStream(\"/fonts/Hack/Hack-Bold.ttf\"), 14);","lastModifiedDate":"2024-03-08"},{"lineNumber":46,"author":{"gitId":"gauravuj"},"content":" Font.loadFont(getClass().getResourceAsStream(\"/fonts/Hack/Hack-Italic.ttf\"), 14);","lastModifiedDate":"2024-03-08"},{"lineNumber":47,"author":{"gitId":"gauravuj"},"content":" Font.loadFont(getClass().getResourceAsStream(\"/fonts/Hack/Hack-BoldItalic.ttf\"), 14);","lastModifiedDate":"2024-03-08"},{"lineNumber":48,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":49,"author":{"gitId":"gauravuj"},"content":" Font.loadFont(getClass().getResourceAsStream(\"/fonts/Source Pro/SourceCodePro-Regular.ttf\"), 14);","lastModifiedDate":"2024-03-08"},{"lineNumber":50,"author":{"gitId":"gauravuj"},"content":" Font.loadFont(getClass().getResourceAsStream(\"/fonts/Source Pro/SourceCodePro-Medium.ttf\"), 14);","lastModifiedDate":"2024-03-08"},{"lineNumber":51,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-08-18"},{"lineNumber":53,"author":{"gitId":"-"},"content":" mainWindow \u003d new MainWindow(primaryStage, logic);","lastModifiedDate":"2018-12-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" mainWindow.show(); //This should be called before creating other UI parts","lastModifiedDate":"2016-08-18"},{"lineNumber":55,"author":{"gitId":"-"},"content":" mainWindow.fillInnerParts();","lastModifiedDate":"2016-08-18"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":" } catch (Throwable e) {","lastModifiedDate":"2016-08-18"},{"lineNumber":58,"author":{"gitId":"-"},"content":" logger.severe(StringUtil.getDetails(e));","lastModifiedDate":"2016-09-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" showFatalErrorDialogAndShutdown(\"Fatal error during initializing\", e);","lastModifiedDate":"2016-08-18"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","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":" private Image getImage(String imagePath) {","lastModifiedDate":"2016-08-18"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return new Image(MainApp.class.getResourceAsStream(imagePath));","lastModifiedDate":"2016-08-18"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":67,"author":{"gitId":"-"},"content":" void showAlertDialogAndWait(Alert.AlertType type, String title, String headerText, String contentText) {","lastModifiedDate":"2016-09-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":" showAlertDialogAndWait(mainWindow.getPrimaryStage(), type, title, headerText, contentText);","lastModifiedDate":"2016-08-18"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Shows an alert dialog on {@code owner} with the given parameters.","lastModifiedDate":"2017-08-16"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * This method only returns after the user has closed the alert dialog.","lastModifiedDate":"2017-08-16"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":75,"author":{"gitId":"-"},"content":" private static void showAlertDialogAndWait(Stage owner, AlertType type, String title, String headerText,","lastModifiedDate":"2016-09-21"},{"lineNumber":76,"author":{"gitId":"-"},"content":" String contentText) {","lastModifiedDate":"2016-08-18"},{"lineNumber":77,"author":{"gitId":"-"},"content":" final Alert alert \u003d new Alert(type);","lastModifiedDate":"2016-08-18"},{"lineNumber":78,"author":{"gitId":"gauravuj"},"content":" alert.getDialogPane().getStylesheets().add(\"view/styleSheets/DarkTheme.css\");","lastModifiedDate":"2024-03-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":" alert.initOwner(owner);","lastModifiedDate":"2016-08-18"},{"lineNumber":80,"author":{"gitId":"-"},"content":" alert.setTitle(title);","lastModifiedDate":"2016-08-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" alert.setHeaderText(headerText);","lastModifiedDate":"2016-08-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":" alert.setContentText(contentText);","lastModifiedDate":"2016-08-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" alert.getDialogPane().setId(ALERT_DIALOG_PANE_FIELD_ID);","lastModifiedDate":"2016-10-12"},{"lineNumber":84,"author":{"gitId":"-"},"content":" alert.showAndWait();","lastModifiedDate":"2016-08-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * Shows an error alert dialog with {@code title} and error message, {@code e},","lastModifiedDate":"2017-08-16"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * and exits the application after the user has closed the alert dialog.","lastModifiedDate":"2017-08-16"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":91,"author":{"gitId":"-"},"content":" private void showFatalErrorDialogAndShutdown(String title, Throwable e) {","lastModifiedDate":"2016-09-21"},{"lineNumber":92,"author":{"gitId":"-"},"content":" logger.severe(title + \" \" + e.getMessage() + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-21"},{"lineNumber":93,"author":{"gitId":"-"},"content":" showAlertDialogAndWait(Alert.AlertType.ERROR, title, e.getMessage(), e.toString());","lastModifiedDate":"2016-08-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" Platform.exit();","lastModifiedDate":"2016-08-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" System.exit(1);","lastModifiedDate":"2016-08-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":98,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"gauravuj":11,"-":87}},{"path":"src/main/resources/view/BookingListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"gauravuj"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"gauravuj"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"gauravuj"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"gauravuj"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"gauravuj"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"gauravuj"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"gauravuj"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"gauravuj"},"content":"\u003c?import javafx.scene.layout.RowConstraints?\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"gauravuj"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"gauravuj"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/21\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"gauravuj"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"gauravuj"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"gauravuj"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"gauravuj"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"gauravuj"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"gauravuj"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"gauravuj"},"content":" \u003cInsets bottom\u003d\"5\" left\u003d\"15\" right\u003d\"5\" top\u003d\"5\" /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"gauravuj"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"gauravuj"},"content":" \u003cHBox alignment\u003d\"CENTER_LEFT\" spacing\u003d\"2\"\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"gauravuj"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"gauravuj"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"gauravuj"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"gauravuj"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"gauravuj"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"gauravuj"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"gauravuj"},"content":" \u003cLabel fx:id\u003d\"description\" styleClass\u003d\"cell_big_label\" text\u003d\"\\$description\" /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"gauravuj"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"gauravuj"},"content":" \u003cLabel fx:id\u003d\"startTime\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$startTime\" /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"gauravuj"},"content":" \u003cLabel fx:id\u003d\"endTime\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$endTime\" /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"gauravuj"},"content":" \u003cGridPane.margin\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"gauravuj"},"content":" \u003cInsets bottom\u003d\"4.0\" left\u003d\"4.0\" right\u003d\"4.0\" top\u003d\"4.0\" /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"gauravuj"},"content":" \u003c/GridPane.margin\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"gauravuj"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"gauravuj"},"content":" \u003crowConstraints\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"gauravuj"},"content":" \u003cRowConstraints /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"gauravuj"},"content":" \u003c/rowConstraints\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"gauravuj"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"gauravuj"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"gauravuj":40}},{"path":"src/main/resources/view/BookingListPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"gauravuj"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"gauravuj"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"gauravuj"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"gauravuj"},"content":"\u003cVBox alignment\u003d\"TOP_RIGHT\" xmlns\u003d\"http://javafx.com/javafx/21\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"gauravuj"},"content":" \u003cListView fx:id\u003d\"bookingListView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"gauravuj"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"gauravuj":8}},{"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":"gauravuj"},"content":"\u003c?import javafx.scene.text.TextFlow?\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003cStackPane styleClass\u003d\"stack-pane\" 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":" \u003cTextField fx:id\u003d\"commandTextField\" onAction\u003d\"#handleCommandEntered\" promptText\u003d\"Enter command here...\" /\u003e","lastModifiedDate":"2019-01-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c/StackPane\u003e","lastModifiedDate":"2017-06-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"}],"authorContributionMap":{"gauravuj":1,"-":9}},{"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":"gauravuj"},"content":" \u003cURL value\u003d\"@styleSheets/HelpWindow.css\" /\u003e","lastModifiedDate":"2024-03-08"},{"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":"jerremyng"},"content":" \u003cButton fx:id\u003d\"copyButton\" mnemonicParsing\u003d\"false\" onAction\u003d\"#copyUrl\" text\u003d\"Copy\"\u003e","lastModifiedDate":"2024-03-18"},{"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":{"gauravuj":1,"jerremyng":1,"-":42}},{"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":"gauravuj"},"content":"\u003c?import javafx.scene.control.Button?\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"gauravuj"},"content":"\u003c?import javafx.scene.control.ButtonBar?\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":12,"author":{"gitId":"gauravuj"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":15,"author":{"gitId":"gauravuj"},"content":"\u003c?import javafx.stage.Stage?\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":17,"author":{"gitId":"gauravuj"},"content":"\u003cfx:root minHeight\u003d\"700\" minWidth\u003d\"850\" onCloseRequest\u003d\"#handleExit\" title\u003d\"Dook\" type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/21\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-03-18"},{"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":"gauravuj"},"content":" \u003cURL value\u003d\"@styleSheets/DarkTheme.css\" /\u003e","lastModifiedDate":"2024-03-08"},{"lineNumber":25,"author":{"gitId":"gauravuj"},"content":" \u003cURL value\u003d\"@styleSheets/Extensions.css\" /\u003e","lastModifiedDate":"2024-03-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":"ChrysanthemumT"},"content":" \u003cVBox styleClass \u003d \"BG\"\u003e","lastModifiedDate":"2024-03-21"},{"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":"gauravuj"},"content":" \u003cHBox VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"gauravuj"},"content":" \u003cVBox fx:id\u003d\"personList\" minWidth\u003d\"350\" prefHeight\u003d\"600\" prefWidth\u003d\"400\" styleClass\u003d\"pane-without-border\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"gauravuj"},"content":" \u003cHBox spacing\u003d\"10\" alignment\u003d\"CENTER\"\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"gauravuj"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"gauravuj"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\"/\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"gauravuj"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"gauravuj"},"content":" \u003cButton styleClass\u003d\"hbox-button\" mnemonicParsing\u003d\"false\" text\u003d\"All\" HBox.hgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"gauravuj"},"content":" \u003cButton styleClass\u003d\"hbox-button\" mnemonicParsing\u003d\"false\" text\u003d\"Profs\" HBox.hgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"gauravuj"},"content":" \u003cButton styleClass\u003d\"hbox-button\" mnemonicParsing\u003d\"false\" text\u003d\"TAs\" HBox.hgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"gauravuj"},"content":" \u003cButton styleClass\u003d\"hbox-button\" mnemonicParsing\u003d\"false\" text\u003d\"Others\" HBox.hgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"gauravuj"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":50,"author":{"gitId":"gauravuj"},"content":" \u003cInsets bottom\u003d\"10\" left\u003d\"10\" right\u003d\"10\" top\u003d\"10\" /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":52,"author":{"gitId":"gauravuj"},"content":" \u003cStackPane fx:id\u003d\"personListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-03-08"},{"lineNumber":53,"author":{"gitId":"gauravuj"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"gauravuj"},"content":" \u003cInsets bottom\u003d\"5.0\" left\u003d\"5.0\" right\u003d\"5.0\" top\u003d\"5.0\" /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"gauravuj"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"gauravuj"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-08"},{"lineNumber":57,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"gauravuj"},"content":" \u003cVBox HBox.hgrow\u003d\"ALWAYS\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"gauravuj"},"content":" \u003cVBox fx:id\u003d\"bookingList\" prefHeight\u003d\"-Infinity\" styleClass\u003d\"pane-without-border\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":61,"author":{"gitId":"gauravuj"},"content":" \u003cInsets bottom\u003d\"5\" left\u003d\"10\" right\u003d\"10\" top\u003d\"5\" /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":63,"author":{"gitId":"gauravuj"},"content":" \u003cStackPane fx:id\u003d\"bookingListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"gauravuj"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"gauravuj"},"content":" \u003cInsets bottom\u003d\"5.0\" left\u003d\"5.0\" right\u003d\"5.0\" top\u003d\"5.0\" /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"gauravuj"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"gauravuj"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":69,"author":{"gitId":"gauravuj"},"content":" \u003cStackPane fx:id\u003d\"resultDisplayPlaceholder\" maxHeight\u003d\"200\" minHeight\u003d\"200\" prefHeight\u003d\"200\" styleClass\u003d\"pane-without-border\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"gauravuj"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"gauravuj"},"content":" \u003cInsets bottom\u003d\"5\" left\u003d\"10\" right\u003d\"10\" top\u003d\"5\" /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"gauravuj"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"gauravuj"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"gauravuj"},"content":" \u003cInsets bottom\u003d\"5.0\" top\u003d\"5.0\" /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"gauravuj"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"gauravuj"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"gauravuj"},"content":" \u003cStackPane fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-without-border\"\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":79,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":80,"author":{"gitId":"gauravuj"},"content":" \u003cInsets bottom\u003d\"5\" left\u003d\"10\" top\u003d\"5\" /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":82,"author":{"gitId":"gauravuj"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"gauravuj"},"content":" \u003cInsets bottom\u003d\"5.0\" top\u003d\"5.0\" /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"gauravuj"},"content":" \u003c/VBox.margin\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"gauravuj"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2024-03-08"},{"lineNumber":86,"author":{"gitId":"gauravuj"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"gauravuj"},"content":" \u003cInsets bottom\u003d\"5.0\" left\u003d\"5.0\" right\u003d\"10.0\" top\u003d\"5.0\" /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"gauravuj"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"gauravuj"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-10"},{"lineNumber":90,"author":{"gitId":"gauravuj"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-10"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":92,"author":{"gitId":"gauravuj"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" /\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":93,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":94,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":95,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":96,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29"}],"authorContributionMap":{"gauravuj":54,"ChrysanthemumT":1,"-":41}},{"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":"ChrysanthemumT"},"content":"\u003c?import javafx.scene.image.ImageView?\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":"\u003c?import javafx.scene.layout.AnchorPane?\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":12,"author":{"gitId":"gauravuj"},"content":"\u003c?import javafx.scene.layout.RowConstraints?\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":15,"author":{"gitId":"ChrysanthemumT"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/21\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"gauravuj"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" style\u003d\"-fx-background-color: transparent;\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"gauravuj"},"content":" \u003cInsets bottom\u003d\"5\" left\u003d\"15\" right\u003d\"5\" top\u003d\"5\" /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"gauravuj"},"content":" \u003cHBox alignment\u003d\"CENTER_LEFT\" spacing\u003d\"2\"\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":31,"author":{"gitId":"gauravuj"},"content":" \u003cLabel fx:id\u003d\"name\" styleClass\u003d\"cell_big_label\" text\u003d\"\\$first\" /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03"},{"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":"gauravuj"},"content":" \u003cFlowPane fx:id\u003d\"tags\"\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"gauravuj"},"content":" \u003cVBox.margin\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"gauravuj"},"content":" \u003cInsets top\u003d\"20.0\" /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"gauravuj"},"content":" \u003c/VBox.margin\u003e\u003c/FlowPane\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"gauravuj"},"content":" \u003cGridPane.margin\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"gauravuj"},"content":" \u003cInsets /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"gauravuj"},"content":" \u003c/GridPane.margin\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"gauravuj"},"content":" \u003copaqueInsets\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"gauravuj"},"content":" \u003cInsets /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"gauravuj"},"content":" \u003c/opaqueInsets\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"gauravuj"},"content":" \u003crowConstraints\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"gauravuj"},"content":" \u003cRowConstraints /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"gauravuj"},"content":" \u003c/rowConstraints\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"gauravuj"},"content":" \u003cImageView fx:id\u003d\"displayPicture\" fitHeight\u003d\"90.0\" fitWidth\u003d\"90.0\" pickOnBounds\u003d\"true\" preserveRatio\u003d\"true\"","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"gauravuj"},"content":" AnchorPane.leftAnchor\u003d\"270.0\" AnchorPane.rightAnchor\u003d\"0.0\" AnchorPane.topAnchor\u003d\"60.0\" /\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"gauravuj":20,"ChrysanthemumT":3,"-":30}},{"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":"gauravuj"},"content":"\u003cStackPane fx:id\u003d\"placeHolder\" xmlns\u003d\"http://javafx.com/javafx/17\"","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2016-12-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003cTextArea fx:id\u003d\"resultDisplay\" editable\u003d\"false\" styleClass\u003d\"result-display\"/\u003e","lastModifiedDate":"2017-06-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c/StackPane\u003e","lastModifiedDate":"2017-06-22"}],"authorContributionMap":{"gauravuj":1,"-":8}},{"path":"src/main/resources/view/TerminalWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"gauravuj"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":3,"author":{"gitId":"gauravuj"},"content":"\u003c?import javafx.scene.control.TextArea?\u003e","lastModifiedDate":"2024-03-10"},{"lineNumber":4,"author":{"gitId":"gauravuj"},"content":"\u003c?import javafx.scene.control.TextField?\u003e","lastModifiedDate":"2024-03-10"},{"lineNumber":5,"author":{"gitId":"gauravuj"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-03-10"},{"lineNumber":6,"author":{"gitId":"gauravuj"},"content":"\u003c?import javafx.stage.Stage?\u003e","lastModifiedDate":"2024-03-10"},{"lineNumber":7,"author":{"gitId":"gauravuj"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"gauravuj"},"content":"\u003cfx:root type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\" title\u003d\"Terminal\" fx:controller\u003d\"seedu.address.ui.TerminalWindow\"\u003e","lastModifiedDate":"2024-03-10"},{"lineNumber":10,"author":{"gitId":"gauravuj"},"content":" \u003cscene\u003e","lastModifiedDate":"2024-03-10"},{"lineNumber":11,"author":{"gitId":"gauravuj"},"content":" \u003cScene\u003e","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"gauravuj"},"content":" \u003cVBox spacing\u003d\"10\" padding\u003d\"10\"\u003e","lastModifiedDate":"2024-03-10"},{"lineNumber":13,"author":{"gitId":"gauravuj"},"content":" \u003cTextArea fx:id\u003d\"outputArea\" editable\u003d\"false\" wrapText\u003d\"true\" /\u003e","lastModifiedDate":"2024-03-10"},{"lineNumber":14,"author":{"gitId":"gauravuj"},"content":" \u003cTextField fx:id\u003d\"inputField\" promptText\u003d\"Type your command here and press Enter\" /\u003e","lastModifiedDate":"2024-03-10"},{"lineNumber":15,"author":{"gitId":"gauravuj"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-10"},{"lineNumber":16,"author":{"gitId":"gauravuj"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2024-03-10"},{"lineNumber":17,"author":{"gitId":"gauravuj"},"content":" \u003c/scene\u003e","lastModifiedDate":"2024-03-10"},{"lineNumber":18,"author":{"gitId":"gauravuj"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2024-03-10"}],"authorContributionMap":{"gauravuj":18}},{"path":"src/main/resources/view/styleSheets/DarkTheme.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".background {","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"gauravuj"},"content":" -fx-background-color: derive(#141421, 20%);","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"gauravuj"},"content":" background-color: #141421; /* Used in the default.html file */","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":".BG {","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-background-color: black;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":".label {","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"gauravuj"},"content":" -fx-font-family: \"Lato\";","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":" -fx-text-fill: #555555;","lastModifiedDate":"2016-08-15"},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":".label-bright {","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"gauravuj"},"content":" -fx-font-family: \"Lato\";","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":".label-header {","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"gauravuj"},"content":" -fx-font-family: \"Lato\";","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","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":".text-field {","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"gauravuj"},"content":" -fx-font-family: \"Lato\";","lastModifiedDate":"2024-03-11"},{"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 {","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 1;","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":"-"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" -fx-min-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" -fx-max-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":".table-view {","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"gauravuj"},"content":" -fx-base: #141421;","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"gauravuj"},"content":" -fx-control-inner-background: #141421;","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"gauravuj"},"content":" -fx-background-color: #141421;","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"-"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" -fx-padding: 5;","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-background {","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" -fx-size: 35;","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" -fx-border-color:","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" derive(-fx-base, 80%)","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":".table-view .column-header .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":" -fx-alignment: center-left;","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":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2016-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","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":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2016-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":85,"author":{"gitId":"gauravuj"},"content":" -fx-border-color: transparent;","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":".split-pane {","lastModifiedDate":"2016-08-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":92,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":94,"author":{"gitId":"gauravuj"},"content":"/* Person List Panel UI */","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":".list-view {","lastModifiedDate":"2017-03-02"},{"lineNumber":96,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":97,"author":{"gitId":"-"},"content":" -fx-padding: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":98,"author":{"gitId":"gauravuj"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":101,"author":{"gitId":"-"},"content":".list-cell {","lastModifiedDate":"2016-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":104,"author":{"gitId":"gauravuj"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-18"},{"lineNumber":105,"author":{"gitId":"gauravuj"},"content":" -fx-background-radius: 12px;","lastModifiedDate":"2024-03-18"},{"lineNumber":106,"author":{"gitId":"gauravuj"},"content":" -fx-padding: 2 2 2 2;","lastModifiedDate":"2024-03-12"},{"lineNumber":107,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":".list-cell:filled:even {","lastModifiedDate":"2017-03-02"},{"lineNumber":110,"author":{"gitId":"gauravuj"},"content":" -fx-background-color: rgba(25,27,30,255);","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":113,"author":{"gitId":"-"},"content":".list-cell:filled:odd {","lastModifiedDate":"2017-03-02"},{"lineNumber":114,"author":{"gitId":"gauravuj"},"content":" -fx-background-color: rgba(25, 27, 30, 0.8);","lastModifiedDate":"2024-03-18"},{"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 {","lastModifiedDate":"2017-03-02"},{"lineNumber":118,"author":{"gitId":"gauravuj"},"content":" -fx-background-color: #0e66dc;","lastModifiedDate":"2024-03-18"},{"lineNumber":119,"author":{"gitId":"gauravuj"},"content":" -fx-background-radius: 12px;","lastModifiedDate":"2024-03-18"},{"lineNumber":120,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":122,"author":{"gitId":"-"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2017-03-02"},{"lineNumber":123,"author":{"gitId":"gauravuj"},"content":" -fx-border-color: #09b5f3;","lastModifiedDate":"2024-03-18"},{"lineNumber":124,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":125,"author":{"gitId":"gauravuj"},"content":" -fx-border-radius: 12px;","lastModifiedDate":"2024-03-18"},{"lineNumber":126,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":128,"author":{"gitId":"gauravuj"},"content":".list-cell:filled:selected #tags .label {","lastModifiedDate":"2024-03-19"},{"lineNumber":129,"author":{"gitId":"gauravuj"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-19"},{"lineNumber":130,"author":{"gitId":"gauravuj"},"content":" -fx-background-color: white;","lastModifiedDate":"2024-03-19"},{"lineNumber":131,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-03-19"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":133,"author":{"gitId":"gauravuj"},"content":"/* Person Card UI */","lastModifiedDate":"2024-03-18"},{"lineNumber":134,"author":{"gitId":"-"},"content":".list-cell .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":136,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":".cell_big_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":139,"author":{"gitId":"gauravuj"},"content":" -fx-font-family: \"Futura\";","lastModifiedDate":"2024-03-18"},{"lineNumber":140,"author":{"gitId":"gauravuj"},"content":" -fx-font-size: 20px;","lastModifiedDate":"2024-03-18"},{"lineNumber":141,"author":{"gitId":"gauravuj"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2024-03-18"},{"lineNumber":142,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":".cell_small_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":146,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2022-01-13"},{"lineNumber":147,"author":{"gitId":"-"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2017-03-02"},{"lineNumber":148,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":149,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":151,"author":{"gitId":"-"},"content":".stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":152,"author":{"gitId":"gauravuj"},"content":" -fx-background-color: #0c0c0c;","lastModifiedDate":"2024-03-18"},{"lineNumber":153,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-03-12"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":155,"author":{"gitId":"gauravuj"},"content":".pane-without-border {","lastModifiedDate":"2024-03-12"},{"lineNumber":156,"author":{"gitId":"gauravuj"},"content":" -fx-background-color: #0B0B0B;","lastModifiedDate":"2024-03-12"},{"lineNumber":157,"author":{"gitId":"gauravuj"},"content":" -fx-border-color: #191919;","lastModifiedDate":"2024-03-12"},{"lineNumber":158,"author":{"gitId":"gauravuj"},"content":" -fx-border-width: 2px;","lastModifiedDate":"2024-03-18"},{"lineNumber":159,"author":{"gitId":"gauravuj"},"content":" -fx-border-radius: 12px;","lastModifiedDate":"2024-03-12"},{"lineNumber":160,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":162,"author":{"gitId":"gauravuj"},"content":"/* Result Box Display */","lastModifiedDate":"2024-03-18"},{"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":"gauravuj"},"content":" -fx-font-family: \"Hack\";","lastModifiedDate":"2024-03-12"},{"lineNumber":166,"author":{"gitId":"gauravuj"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2024-03-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"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":"gauravuj"},"content":"/* Status Bar UI */","lastModifiedDate":"2024-03-18"},{"lineNumber":175,"author":{"gitId":"gauravuj"},"content":".status-bar {","lastModifiedDate":"2024-03-18"},{"lineNumber":176,"author":{"gitId":"gauravuj"},"content":" -fx-background-color: #1a1a1a;","lastModifiedDate":"2024-03-18"},{"lineNumber":177,"author":{"gitId":"gauravuj"},"content":"}","lastModifiedDate":"2024-03-18"},{"lineNumber":178,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":179,"author":{"gitId":"-"},"content":".status-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":180,"author":{"gitId":"gauravuj"},"content":" -fx-font-family: \"Avenir\";","lastModifiedDate":"2024-03-18"},{"lineNumber":181,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":182,"author":{"gitId":"-"},"content":" -fx-padding: 4px;","lastModifiedDate":"2018-12-08"},{"lineNumber":183,"author":{"gitId":"-"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2018-12-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 {","lastModifiedDate":"2016-08-08"},{"lineNumber":187,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":188,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":189,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":190,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":192,"author":{"gitId":"-"},"content":".status-bar-with-border .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":193,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","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 {","lastModifiedDate":"2016-08-08"},{"lineNumber":197,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":198,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":199,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":200,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":202,"author":{"gitId":"-"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":203,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":204,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":206,"author":{"gitId":"-"},"content":".context-menu {","lastModifiedDate":"2016-08-08"},{"lineNumber":207,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":208,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":210,"author":{"gitId":"-"},"content":".context-menu .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":211,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","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":".menu-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":215,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":216,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":218,"author":{"gitId":"-"},"content":".menu-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":219,"author":{"gitId":"-"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":220,"author":{"gitId":"gauravuj"},"content":" -fx-font-family: \"Avenir\";","lastModifiedDate":"2024-03-18"},{"lineNumber":221,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":222,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","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":".menu .left-container {","lastModifiedDate":"2016-08-08"},{"lineNumber":226,"author":{"gitId":"-"},"content":" -fx-background-color: black;","lastModifiedDate":"2016-08-08"},{"lineNumber":227,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":229,"author":{"gitId":"-"},"content":"/*","lastModifiedDate":"2016-08-08"},{"lineNumber":230,"author":{"gitId":"-"},"content":" * Metro style Push Button","lastModifiedDate":"2016-08-08"},{"lineNumber":231,"author":{"gitId":"-"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2016-08-08"},{"lineNumber":232,"author":{"gitId":"-"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2016-08-08"},{"lineNumber":233,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":234,"author":{"gitId":"-"},"content":".button {","lastModifiedDate":"2016-08-08"},{"lineNumber":235,"author":{"gitId":"-"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2016-08-08"},{"lineNumber":236,"author":{"gitId":"-"},"content":" -fx-border-color: #e2e2e2;","lastModifiedDate":"2016-08-08"},{"lineNumber":237,"author":{"gitId":"-"},"content":" -fx-border-width: 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":238,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":239,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":240,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2022-01-13"},{"lineNumber":241,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":242,"author":{"gitId":"-"},"content":" -fx-text-fill: #d8d8d8;","lastModifiedDate":"2016-08-08"},{"lineNumber":243,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","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":".button:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":247,"author":{"gitId":"-"},"content":" -fx-background-color: #3a3a3a;","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:pressed, .button:default:hover:pressed {","lastModifiedDate":"2016-08-08"},{"lineNumber":251,"author":{"gitId":"-"},"content":" -fx-background-color: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":252,"author":{"gitId":"-"},"content":" -fx-text-fill: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":253,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":255,"author":{"gitId":"-"},"content":".button:focused {","lastModifiedDate":"2016-08-08"},{"lineNumber":256,"author":{"gitId":"-"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2016-08-08"},{"lineNumber":257,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":258,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08"},{"lineNumber":259,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":260,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","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:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08"},{"lineNumber":264,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08"},{"lineNumber":265,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":266,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","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 {","lastModifiedDate":"2016-08-08"},{"lineNumber":270,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":271,"author":{"gitId":"-"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2016-08-08"},{"lineNumber":272,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":274,"author":{"gitId":"-"},"content":".button:default:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":275,"author":{"gitId":"-"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2016-08-08"},{"lineNumber":276,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":278,"author":{"gitId":"gauravuj"},"content":"/* Button style */","lastModifiedDate":"2024-03-19"},{"lineNumber":279,"author":{"gitId":"gauravuj"},"content":".hbox-button {","lastModifiedDate":"2024-03-19"},{"lineNumber":280,"author":{"gitId":"gauravuj"},"content":" /* Removes borders */","lastModifiedDate":"2024-03-19"},{"lineNumber":281,"author":{"gitId":"gauravuj"},"content":" -fx-background-radius: 15px;","lastModifiedDate":"2024-03-19"},{"lineNumber":282,"author":{"gitId":"gauravuj"},"content":" -fx-padding: 5 18 5 18;","lastModifiedDate":"2024-03-19"},{"lineNumber":283,"author":{"gitId":"gauravuj"},"content":" -fx-background-color: transparent; /* Default background color */","lastModifiedDate":"2024-03-19"},{"lineNumber":284,"author":{"gitId":"gauravuj"},"content":" -fx-text-fill: #fff; /* Text color */","lastModifiedDate":"2024-03-19"},{"lineNumber":285,"author":{"gitId":"gauravuj"},"content":" -fx-font-family: Inter;","lastModifiedDate":"2024-03-19"},{"lineNumber":286,"author":{"gitId":"gauravuj"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2024-03-19"},{"lineNumber":287,"author":{"gitId":"gauravuj"},"content":" -fx-border-color: transparent;","lastModifiedDate":"2024-03-19"},{"lineNumber":288,"author":{"gitId":"gauravuj"},"content":" -fx-border-radius: 15px;","lastModifiedDate":"2024-03-19"},{"lineNumber":289,"author":{"gitId":"gauravuj"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2024-03-19"},{"lineNumber":290,"author":{"gitId":"gauravuj"},"content":"}","lastModifiedDate":"2024-03-19"},{"lineNumber":291,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":292,"author":{"gitId":"gauravuj"},"content":"/* Button hover effect */","lastModifiedDate":"2024-03-19"},{"lineNumber":293,"author":{"gitId":"gauravuj"},"content":".hbox-button:hover {","lastModifiedDate":"2024-03-19"},{"lineNumber":294,"author":{"gitId":"gauravuj"},"content":" -fx-border-width: 1;","lastModifiedDate":"2024-03-19"},{"lineNumber":295,"author":{"gitId":"gauravuj"},"content":" -fx-border-color: #555;","lastModifiedDate":"2024-03-19"},{"lineNumber":296,"author":{"gitId":"gauravuj"},"content":" -fx-border-radius: 15px;","lastModifiedDate":"2024-03-19"},{"lineNumber":297,"author":{"gitId":"gauravuj"},"content":" -fx-background-color: #555; /* Background color on hover */","lastModifiedDate":"2024-03-19"},{"lineNumber":298,"author":{"gitId":"gauravuj"},"content":"}","lastModifiedDate":"2024-03-19"},{"lineNumber":299,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":300,"author":{"gitId":"gauravuj"},"content":".hbox-button:selected {","lastModifiedDate":"2024-03-19"},{"lineNumber":301,"author":{"gitId":"gauravuj"},"content":" -fx-background-color: #f6870c;","lastModifiedDate":"2024-03-19"},{"lineNumber":302,"author":{"gitId":"gauravuj"},"content":"}","lastModifiedDate":"2024-03-19"},{"lineNumber":303,"author":{"gitId":"gauravuj"},"content":"/* Active button style */","lastModifiedDate":"2024-03-19"},{"lineNumber":304,"author":{"gitId":"gauravuj"},"content":".hbox-button.active {","lastModifiedDate":"2024-03-19"},{"lineNumber":305,"author":{"gitId":"gauravuj"},"content":" -fx-background-color: #f6870c; /* Background color for the active button */","lastModifiedDate":"2024-03-19"},{"lineNumber":306,"author":{"gitId":"gauravuj"},"content":" -fx-font-weight: bold; /* Optional: makes the text of the active button bold */","lastModifiedDate":"2024-03-19"},{"lineNumber":307,"author":{"gitId":"gauravuj"},"content":"}","lastModifiedDate":"2024-03-19"},{"lineNumber":308,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":309,"author":{"gitId":"gauravuj"},"content":"/* Ensures the text is always fully visible */","lastModifiedDate":"2024-03-19"},{"lineNumber":310,"author":{"gitId":"gauravuj"},"content":".hbox-button .text {","lastModifiedDate":"2024-03-19"},{"lineNumber":311,"author":{"gitId":"gauravuj"},"content":" -fx-text-overrun: clip; /* Prevents text from truncating */","lastModifiedDate":"2024-03-19"},{"lineNumber":312,"author":{"gitId":"gauravuj"},"content":"}","lastModifiedDate":"2024-03-19"},{"lineNumber":313,"author":{"gitId":"gauravuj"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":314,"author":{"gitId":"-"},"content":".dialog-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":315,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":316,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":317,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":318,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2016-08-08"},{"lineNumber":319,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":320,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":321,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":322,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2016-08-08"},{"lineNumber":323,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08"},{"lineNumber":324,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2016-08-08"},{"lineNumber":325,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":326,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":327,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":328,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2016-08-08"},{"lineNumber":329,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":330,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":331,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":332,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2016-08-08"},{"lineNumber":333,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08"},{"lineNumber":334,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08"},{"lineNumber":335,"author":{"gitId":"-"},"content":" -fx-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":336,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":337,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":338,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":339,"author":{"gitId":"gauravuj"},"content":"/* Scroll Bar UI */","lastModifiedDate":"2024-03-18"},{"lineNumber":340,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02"},{"lineNumber":341,"author":{"gitId":"gauravuj"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-18"},{"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":"gauravuj"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-18"},{"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":"gauravuj"},"content":" -fx-padding: 0;","lastModifiedDate":"2024-03-18"},{"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":"gauravuj"},"content":" -fx-border-width: 1;","lastModifiedDate":"2024-03-18"},{"lineNumber":368,"author":{"gitId":"gauravuj"},"content":" -fx-border-color: #3f3f3f;","lastModifiedDate":"2024-03-18"},{"lineNumber":369,"author":{"gitId":"gauravuj"},"content":" -fx-border-radius: 12px;","lastModifiedDate":"2024-03-18"},{"lineNumber":370,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":371,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":372,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08"},{"lineNumber":373,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08"},{"lineNumber":374,"author":{"gitId":"gauravuj"},"content":" -fx-text-fill: #ff1723;","lastModifiedDate":"2024-03-11"},{"lineNumber":375,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":376,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":377,"author":{"gitId":"-"},"content":"#commandTextField {","lastModifiedDate":"2017-03-02"},{"lineNumber":378,"author":{"gitId":"gauravuj"},"content":" -fx-background-color: #0B0B0B;","lastModifiedDate":"2024-03-12"},{"lineNumber":379,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":380,"author":{"gitId":"gauravuj"},"content":" -fx-border-color: #0B0B0B;","lastModifiedDate":"2024-03-12"},{"lineNumber":381,"author":{"gitId":"-"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":382,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":383,"author":{"gitId":"gauravuj"},"content":" -fx-font-family: \"Hack\";","lastModifiedDate":"2024-03-08"},{"lineNumber":384,"author":{"gitId":"gauravuj"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2024-03-08"},{"lineNumber":385,"author":{"gitId":"gauravuj"},"content":" -fx-font-weight: normal;","lastModifiedDate":"2024-03-18"},{"lineNumber":386,"author":{"gitId":"gauravuj"},"content":" -fx-font-style: normal;","lastModifiedDate":"2024-03-12"},{"lineNumber":387,"author":{"gitId":"gauravuj"},"content":" -fx-text-fill: #e3e3e3;","lastModifiedDate":"2024-03-18"},{"lineNumber":388,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":389,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":390,"author":{"gitId":"-"},"content":"#filterField, #personListPanel, #personWebpage {","lastModifiedDate":"2016-08-15"},{"lineNumber":391,"author":{"gitId":"-"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2016-08-15"},{"lineNumber":392,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":393,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":394,"author":{"gitId":"-"},"content":"#resultDisplay .content {","lastModifiedDate":"2017-03-02"},{"lineNumber":395,"author":{"gitId":"gauravuj"},"content":" -fx-background-color: transparent, #0B0B0B, transparent, #0B0B0B;","lastModifiedDate":"2024-03-12"},{"lineNumber":396,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":397,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":398,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":399,"author":{"gitId":"gauravuj"},"content":"/* Tags UI */","lastModifiedDate":"2024-03-18"},{"lineNumber":400,"author":{"gitId":"-"},"content":"#tags {","lastModifiedDate":"2016-12-18"},{"lineNumber":401,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2016-12-18"},{"lineNumber":402,"author":{"gitId":"-"},"content":" -fx-vgap: 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":403,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":404,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":405,"author":{"gitId":"-"},"content":"#tags .label {","lastModifiedDate":"2016-12-18"},{"lineNumber":406,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-12-18"},{"lineNumber":407,"author":{"gitId":"gauravuj"},"content":" -fx-background-color: #186ADD;","lastModifiedDate":"2024-03-11"},{"lineNumber":408,"author":{"gitId":"gauravuj"},"content":" -fx-padding: 5 12 5 12;","lastModifiedDate":"2024-03-19"},{"lineNumber":409,"author":{"gitId":"gauravuj"},"content":" -fx-border-radius: 15;","lastModifiedDate":"2024-03-11"},{"lineNumber":410,"author":{"gitId":"gauravuj"},"content":" -fx-background-radius: 15;","lastModifiedDate":"2024-03-11"},{"lineNumber":411,"author":{"gitId":"gauravuj"},"content":" -fx-font-size: 12;","lastModifiedDate":"2024-03-11"},{"lineNumber":412,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"}],"authorContributionMap":{"gauravuj":102,"ChrysanthemumT":2,"-":308}},{"path":"src/main/resources/view/styleSheets/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":"gauravuj"},"content":" -fx-text-fill: rgba(234, 46, 10, 0.92) !important; /* The error class should always override the default text-fill style */","lastModifiedDate":"2024-03-12"},{"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"}],"authorContributionMap":{"gauravuj":1,"-":19}},{"path":"src/main/resources/view/styleSheets/LightTheme.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":".background {","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-background-color: derive(#f2f2f2, 20%);","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":" background-color: #f2f2f2; /* Used in the default.html file */","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":".BG {","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-background-color: white;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":".label {","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-font-family: \"Lato\";","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-text-fill: #555555;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"ChrysanthemumT"},"content":".label-bright {","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-font-family: \"Lato\";","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-opacity: 1;","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"ChrysanthemumT"},"content":".label-header {","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-font-family: \"Lato\";","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-opacity: 1;","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"ChrysanthemumT"},"content":".text-field {","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-font-family: \"Lato\";","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"ChrysanthemumT"},"content":".tab-pane {","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"ChrysanthemumT"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-min-height: 0;","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-max-height: 0;","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"ChrysanthemumT"},"content":".table-view {","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-base: #f2f2f2;","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-control-inner-background: #f2f2f2;","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-background-color: #f2f2f2;","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-padding: 5;","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"ChrysanthemumT"},"content":".table-view .column-header-background {","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"ChrysanthemumT"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-size: 35;","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-border-color:","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"ChrysanthemumT"},"content":" transparent","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"ChrysanthemumT"},"content":" transparent","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"ChrysanthemumT"},"content":" derive(-fx-base, 80%)","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"ChrysanthemumT"},"content":" transparent;","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"ChrysanthemumT"},"content":".table-view .column-header .label {","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-opacity: 1;","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"ChrysanthemumT"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"ChrysanthemumT"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-background-color: derive(#f2f2f2, 20%);","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-border-color: transparent;","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"ChrysanthemumT"},"content":".split-pane {","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-border-width: 1;","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-background-color: derive(#f2f2f2, 20%);","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"ChrysanthemumT"},"content":"/* Person List Panel UI */","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"ChrysanthemumT"},"content":".list-view {","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-padding: 0;","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-20"},{"lineNumber":99,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":101,"author":{"gitId":"ChrysanthemumT"},"content":".list-cell {","lastModifiedDate":"2024-03-20"},{"lineNumber":102,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2024-03-20"},{"lineNumber":103,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-background-radius: 12px;","lastModifiedDate":"2024-03-20"},{"lineNumber":106,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-padding: 2 2 2 2;","lastModifiedDate":"2024-03-20"},{"lineNumber":107,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":108,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":109,"author":{"gitId":"ChrysanthemumT"},"content":".list-cell:filled:even {","lastModifiedDate":"2024-03-20"},{"lineNumber":110,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-background-color: rgba(255, 255, 255, 1);","lastModifiedDate":"2024-03-20"},{"lineNumber":111,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":112,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":113,"author":{"gitId":"ChrysanthemumT"},"content":".list-cell:filled:odd {","lastModifiedDate":"2024-03-20"},{"lineNumber":114,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-background-color: rgba(255, 255, 255, 0.8);","lastModifiedDate":"2024-03-20"},{"lineNumber":115,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":116,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":117,"author":{"gitId":"ChrysanthemumT"},"content":".list-cell:filled:selected {","lastModifiedDate":"2024-03-20"},{"lineNumber":118,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-background-color: #0e66dc;","lastModifiedDate":"2024-03-20"},{"lineNumber":119,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-background-radius: 12px;","lastModifiedDate":"2024-03-20"},{"lineNumber":120,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":121,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":122,"author":{"gitId":"ChrysanthemumT"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2024-03-20"},{"lineNumber":123,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-border-color: #09b5f3;","lastModifiedDate":"2024-03-20"},{"lineNumber":124,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-border-width: 1;","lastModifiedDate":"2024-03-20"},{"lineNumber":125,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-border-radius: 12px;","lastModifiedDate":"2024-03-20"},{"lineNumber":126,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":127,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":128,"author":{"gitId":"ChrysanthemumT"},"content":"/* Person Card UI */","lastModifiedDate":"2024-03-20"},{"lineNumber":129,"author":{"gitId":"ChrysanthemumT"},"content":".list-cell .label {","lastModifiedDate":"2024-03-20"},{"lineNumber":130,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-20"},{"lineNumber":131,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":132,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":133,"author":{"gitId":"ChrysanthemumT"},"content":".cell_big_label {","lastModifiedDate":"2024-03-20"},{"lineNumber":134,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-font-family: \"Futura\";","lastModifiedDate":"2024-03-20"},{"lineNumber":135,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-font-size: 20px;","lastModifiedDate":"2024-03-20"},{"lineNumber":136,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2024-03-20"},{"lineNumber":137,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2024-03-20"},{"lineNumber":138,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":139,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":140,"author":{"gitId":"ChrysanthemumT"},"content":".cell_small_label {","lastModifiedDate":"2024-03-20"},{"lineNumber":141,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2024-03-20"},{"lineNumber":142,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2024-03-20"},{"lineNumber":143,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2024-03-20"},{"lineNumber":144,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":145,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":146,"author":{"gitId":"ChrysanthemumT"},"content":".stack-pane {","lastModifiedDate":"2024-03-20"},{"lineNumber":147,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-background-color: #ffffff;","lastModifiedDate":"2024-03-20"},{"lineNumber":148,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":149,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":150,"author":{"gitId":"ChrysanthemumT"},"content":".pane-without-border {","lastModifiedDate":"2024-03-20"},{"lineNumber":151,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-background-color: #ffffff;","lastModifiedDate":"2024-03-20"},{"lineNumber":152,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-border-color: #ffffff;","lastModifiedDate":"2024-03-20"},{"lineNumber":153,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-border-width: 2px;","lastModifiedDate":"2024-03-20"},{"lineNumber":154,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-border-radius: 12px;","lastModifiedDate":"2024-03-20"},{"lineNumber":155,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":156,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":157,"author":{"gitId":"ChrysanthemumT"},"content":"/* Result Box Display */","lastModifiedDate":"2024-03-20"},{"lineNumber":158,"author":{"gitId":"ChrysanthemumT"},"content":".result-display {","lastModifiedDate":"2024-03-20"},{"lineNumber":159,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-20"},{"lineNumber":160,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-font-family: \"Hack\";","lastModifiedDate":"2024-03-20"},{"lineNumber":161,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2024-03-20"},{"lineNumber":162,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-20"},{"lineNumber":163,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":164,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":165,"author":{"gitId":"ChrysanthemumT"},"content":".result-display .label {","lastModifiedDate":"2024-03-20"},{"lineNumber":166,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2024-03-20"},{"lineNumber":167,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":168,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":169,"author":{"gitId":"ChrysanthemumT"},"content":"/* Status Bar UI */","lastModifiedDate":"2024-03-20"},{"lineNumber":170,"author":{"gitId":"ChrysanthemumT"},"content":".status-bar {","lastModifiedDate":"2024-03-20"},{"lineNumber":171,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-background-color: #ffffff;","lastModifiedDate":"2024-03-20"},{"lineNumber":172,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":173,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":174,"author":{"gitId":"ChrysanthemumT"},"content":".status-bar .label {","lastModifiedDate":"2024-03-20"},{"lineNumber":175,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-font-family: \"Avenir\";","lastModifiedDate":"2024-03-20"},{"lineNumber":176,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-font-weight: light;","lastModifiedDate":"2024-03-20"},{"lineNumber":177,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-20"},{"lineNumber":178,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-padding: 4px;","lastModifiedDate":"2024-03-20"},{"lineNumber":179,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2024-03-20"},{"lineNumber":180,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":181,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":182,"author":{"gitId":"ChrysanthemumT"},"content":".status-bar-with-border {","lastModifiedDate":"2024-03-20"},{"lineNumber":183,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-background-color: derive(#f2f2f2, 30%);","lastModifiedDate":"2024-03-20"},{"lineNumber":184,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-border-color: derive(#f2f2f2, 25%);","lastModifiedDate":"2024-03-20"},{"lineNumber":185,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2024-03-20"},{"lineNumber":186,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":187,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":188,"author":{"gitId":"ChrysanthemumT"},"content":".status-bar-with-border .label {","lastModifiedDate":"2024-03-20"},{"lineNumber":189,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-20"},{"lineNumber":190,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":191,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":192,"author":{"gitId":"ChrysanthemumT"},"content":".grid-pane {","lastModifiedDate":"2024-03-20"},{"lineNumber":193,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-background-color: derive(#f2f2f2, 30%);","lastModifiedDate":"2024-03-20"},{"lineNumber":194,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-border-color: derive(#f2f2f2, 30%);","lastModifiedDate":"2024-03-20"},{"lineNumber":195,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2024-03-20"},{"lineNumber":196,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":197,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":198,"author":{"gitId":"ChrysanthemumT"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2024-03-20"},{"lineNumber":199,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-background-color: derive(#f2f2f2, 30%);","lastModifiedDate":"2024-03-20"},{"lineNumber":200,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":201,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":202,"author":{"gitId":"ChrysanthemumT"},"content":".context-menu {","lastModifiedDate":"2024-03-20"},{"lineNumber":203,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-background-color: derive(#f2f2f2, 50%);","lastModifiedDate":"2024-03-20"},{"lineNumber":204,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":205,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":206,"author":{"gitId":"ChrysanthemumT"},"content":".context-menu .label {","lastModifiedDate":"2024-03-20"},{"lineNumber":207,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-20"},{"lineNumber":208,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":209,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":210,"author":{"gitId":"ChrysanthemumT"},"content":".menu-bar {","lastModifiedDate":"2024-03-20"},{"lineNumber":211,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-background-color: derive(#f2f2f2, 20%);","lastModifiedDate":"2024-03-20"},{"lineNumber":212,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":213,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":214,"author":{"gitId":"ChrysanthemumT"},"content":".menu-bar .label {","lastModifiedDate":"2024-03-20"},{"lineNumber":215,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2024-03-20"},{"lineNumber":216,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-font-family: \"Avenir\";","lastModifiedDate":"2024-03-20"},{"lineNumber":217,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-20"},{"lineNumber":218,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2024-03-20"},{"lineNumber":219,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":220,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":221,"author":{"gitId":"ChrysanthemumT"},"content":".menu .left-container {","lastModifiedDate":"2024-03-20"},{"lineNumber":222,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-background-color: black;","lastModifiedDate":"2024-03-20"},{"lineNumber":223,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":224,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":225,"author":{"gitId":"ChrysanthemumT"},"content":"/*","lastModifiedDate":"2024-03-20"},{"lineNumber":226,"author":{"gitId":"ChrysanthemumT"},"content":" * Metro style Push Button","lastModifiedDate":"2024-03-20"},{"lineNumber":227,"author":{"gitId":"ChrysanthemumT"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2024-03-20"},{"lineNumber":228,"author":{"gitId":"ChrysanthemumT"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2024-03-20"},{"lineNumber":229,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":230,"author":{"gitId":"ChrysanthemumT"},"content":".button {","lastModifiedDate":"2024-03-20"},{"lineNumber":231,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2024-03-20"},{"lineNumber":232,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-border-color: #e2e2e2;","lastModifiedDate":"2024-03-20"},{"lineNumber":233,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-border-width: 2;","lastModifiedDate":"2024-03-20"},{"lineNumber":234,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2024-03-20"},{"lineNumber":235,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-background-color: #ffffff;","lastModifiedDate":"2024-03-20"},{"lineNumber":236,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2024-03-20"},{"lineNumber":237,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2024-03-20"},{"lineNumber":238,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-text-fill: #333333;","lastModifiedDate":"2024-03-20"},{"lineNumber":239,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2024-03-20"},{"lineNumber":240,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":241,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":242,"author":{"gitId":"ChrysanthemumT"},"content":".button:hover {","lastModifiedDate":"2024-03-20"},{"lineNumber":243,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-background-color: #f0f0f0;","lastModifiedDate":"2024-03-20"},{"lineNumber":244,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":245,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":246,"author":{"gitId":"ChrysanthemumT"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2024-03-20"},{"lineNumber":247,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-background-color: #e0e0e0;","lastModifiedDate":"2024-03-20"},{"lineNumber":248,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-text-fill: #333333;","lastModifiedDate":"2024-03-20"},{"lineNumber":249,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":250,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":251,"author":{"gitId":"ChrysanthemumT"},"content":".button:focused {","lastModifiedDate":"2024-03-20"},{"lineNumber":252,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-border-color: black, black;","lastModifiedDate":"2024-03-20"},{"lineNumber":253,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2024-03-20"},{"lineNumber":254,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2024-03-20"},{"lineNumber":255,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2024-03-20"},{"lineNumber":256,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2024-03-20"},{"lineNumber":257,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":258,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":259,"author":{"gitId":"ChrysanthemumT"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2024-03-20"},{"lineNumber":260,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2024-03-20"},{"lineNumber":261,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-background-color: #f2f2f2;","lastModifiedDate":"2024-03-20"},{"lineNumber":262,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-text-fill: #999999;","lastModifiedDate":"2024-03-20"},{"lineNumber":263,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":264,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":265,"author":{"gitId":"ChrysanthemumT"},"content":".button:default {","lastModifiedDate":"2024-03-20"},{"lineNumber":266,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2024-03-20"},{"lineNumber":267,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2024-03-20"},{"lineNumber":268,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"},{"lineNumber":269,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":270,"author":{"gitId":"ChrysanthemumT"},"content":".button:default:hover {","lastModifiedDate":"2024-03-20"},{"lineNumber":271,"author":{"gitId":"ChrysanthemumT"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2024-03-20"},{"lineNumber":272,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"ChrysanthemumT":272}},{"path":"src/test/java/seedu/address/commons/core/GuiSettingsTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.commons.core;","lastModifiedDate":"2019-02-23"},{"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":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-02-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"public class GuiSettingsTest {","lastModifiedDate":"2019-02-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings();","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":" String expected \u003d GuiSettings.class.getCanonicalName() + \"{windowWidth\u003d\" + guiSettings.getWindowWidth()","lastModifiedDate":"2019-02-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":" + \", windowHeight\u003d\" + guiSettings.getWindowHeight() + \", windowCoordinates\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" + guiSettings.getWindowCoordinates() + \", theme\u003d\" + guiSettings.getStringTheme() + \"}\";","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":" assertEquals(expected, guiSettings.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-02-23"}],"authorContributionMap":{"cyqjoseph":1,"-":15}},{"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":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e StringUtil.containsWordIgnoreCase(\"typical sentence\", null));","lastModifiedDate":"2019-03-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void containsWordIgnoreCase_emptyWord_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, \"Word parameter cannot be empty\", ()","lastModifiedDate":"2019-03-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" -\u003e StringUtil.containsWordIgnoreCase(\"typical sentence\", \" \"));","lastModifiedDate":"2019-03-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void containsWordIgnoreCase_multipleWords_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, \"Word parameter should be a single word\", ()","lastModifiedDate":"2019-03-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" -\u003e StringUtil.containsWordIgnoreCase(\"typical sentence\", \"aaa BBB\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void containsWordIgnoreCase_nullSentence_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e StringUtil.containsWordIgnoreCase(null, \"abc\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Valid equivalence partitions for word:","lastModifiedDate":"2016-10-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * - any word","lastModifiedDate":"2016-10-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * - word containing symbols/numbers","lastModifiedDate":"2016-10-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * - word with leading/trailing spaces","lastModifiedDate":"2016-10-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Valid equivalence partitions for sentence:","lastModifiedDate":"2016-10-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * - empty string","lastModifiedDate":"2016-10-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * - one word","lastModifiedDate":"2016-10-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * - multiple words","lastModifiedDate":"2016-10-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * - sentence with extra spaces","lastModifiedDate":"2016-10-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Possible scenarios returning true:","lastModifiedDate":"2016-10-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * - matches first word in sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * - last word in sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - middle word in sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * - matches multiple words","lastModifiedDate":"2016-10-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * Possible scenarios returning false:","lastModifiedDate":"2016-10-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * - query word matches part of a sentence word","lastModifiedDate":"2016-10-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * - sentence word matches part of the query word","lastModifiedDate":"2016-10-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-13"},{"lineNumber":101,"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":102,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void containsWordIgnoreCase_validInputs_correctResult() {","lastModifiedDate":"2016-10-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" // Empty sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.containsWordIgnoreCase(\"\", \"abc\")); // Boundary case","lastModifiedDate":"2016-10-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.containsWordIgnoreCase(\" \", \"123\"));","lastModifiedDate":"2016-10-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" // Matches a partial word only","lastModifiedDate":"2016-10-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.containsWordIgnoreCase(\"aaa bbb ccc\", \"bb\")); // Sentence word bigger than query word","lastModifiedDate":"2016-10-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertFalse(StringUtil.containsWordIgnoreCase(\"aaa bbb ccc\", \"bbbb\")); // Query word bigger than sentence word","lastModifiedDate":"2016-10-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" // Matches word in the sentence, different upper/lower case letters","lastModifiedDate":"2016-10-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\"aaa bBb ccc\", \"Bbb\")); // First word (boundary case)","lastModifiedDate":"2016-10-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\"aaa bBb ccc@1\", \"CCc@1\")); // Last word (boundary case)","lastModifiedDate":"2016-10-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\" AAA bBb ccc \", \"aaa\")); // Sentence has extra spaces","lastModifiedDate":"2016-10-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\"Aaa\", \"aaa\")); // Only one word in sentence (boundary case)","lastModifiedDate":"2016-10-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\"aaa bbb ccc\", \" ccc \")); // Leading/trailing spaces","lastModifiedDate":"2016-10-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":" // Matches multiple words in sentence","lastModifiedDate":"2016-10-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.containsWordIgnoreCase(\"AAA bBb ccc bbb\", \"bbB\"));","lastModifiedDate":"2016-10-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" //---------------- Tests for getDetails --------------------------------------","lastModifiedDate":"2016-10-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":128,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-13"},{"lineNumber":129,"author":{"gitId":"-"},"content":" * Equivalence Partitions: null, valid throwable object","lastModifiedDate":"2016-10-13"},{"lineNumber":130,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-30"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void getDetails_exceptionGiven() {","lastModifiedDate":"2016-09-30"},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertTrue(StringUtil.getDetails(new FileNotFoundException(\"file not found\"))","lastModifiedDate":"2019-03-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" .contains(\"java.io.FileNotFoundException: file not found\"));","lastModifiedDate":"2019-03-14"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-09-30"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public void getDetails_nullGiven_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e StringUtil.getDetails(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-30"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-30"},{"lineNumber":143,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":144,"author":{"gitId":"cyqjoseph"},"content":" public void containsSubstringIgnoreCase_nullWord_throwsNullPointerException() {","lastModifiedDate":"2024-03-23"},{"lineNumber":145,"author":{"gitId":"cyqjoseph"},"content":" assertThrows(NullPointerException.class, () -\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":146,"author":{"gitId":"cyqjoseph"},"content":" StringUtil.containsSubstringIgnoreCase(\"typical sentence\", null));","lastModifiedDate":"2024-03-23"},{"lineNumber":147,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":148,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":149,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":150,"author":{"gitId":"cyqjoseph"},"content":" public void containsSubstringIgnoreCase_emptyWord_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-23"},{"lineNumber":151,"author":{"gitId":"cyqjoseph"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":152,"author":{"gitId":"cyqjoseph"},"content":" StringUtil.containsSubstringIgnoreCase(\"typical sentence\", \" \"));","lastModifiedDate":"2024-03-23"},{"lineNumber":153,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":154,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":155,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":156,"author":{"gitId":"cyqjoseph"},"content":" public void containsSubstringIgnoreCase_multipleWords_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-23"},{"lineNumber":157,"author":{"gitId":"cyqjoseph"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":158,"author":{"gitId":"cyqjoseph"},"content":" StringUtil.containsSubstringIgnoreCase(\"typical sentence\", \"aaa BBB\"));","lastModifiedDate":"2024-03-23"},{"lineNumber":159,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":160,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":161,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":162,"author":{"gitId":"cyqjoseph"},"content":" public void containsSubstringIgnoreCase_nullSentence_throwsNullPointerException() {","lastModifiedDate":"2024-03-23"},{"lineNumber":163,"author":{"gitId":"cyqjoseph"},"content":" assertThrows(NullPointerException.class, () -\u003e StringUtil.containsSubstringIgnoreCase(null, \"abc\"));","lastModifiedDate":"2024-03-23"},{"lineNumber":164,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":165,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":166,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":167,"author":{"gitId":"cyqjoseph"},"content":" public void containsSubstringIgnoreCase_basicMatch_returnsTrue() {","lastModifiedDate":"2024-03-23"},{"lineNumber":168,"author":{"gitId":"cyqjoseph"},"content":" assertTrue(StringUtil.containsSubstringIgnoreCase(\"Hello World\", \"world\"));","lastModifiedDate":"2024-03-23"},{"lineNumber":169,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":170,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":171,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":172,"author":{"gitId":"cyqjoseph"},"content":" public void containsSubstringIgnoreCase_caseInsensitivity_returnsTrue() {","lastModifiedDate":"2024-03-23"},{"lineNumber":173,"author":{"gitId":"cyqjoseph"},"content":" assertTrue(StringUtil.containsSubstringIgnoreCase(\"Java Programming\", \"JAVA\"));","lastModifiedDate":"2024-03-23"},{"lineNumber":174,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":175,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":176,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":177,"author":{"gitId":"cyqjoseph"},"content":" public void containsSubstringIgnoreCase_partialWordMatch_returnsTrue() {","lastModifiedDate":"2024-03-23"},{"lineNumber":178,"author":{"gitId":"cyqjoseph"},"content":" assertTrue(StringUtil.containsSubstringIgnoreCase(\"Internationalization\", \"nation\"));","lastModifiedDate":"2024-03-23"},{"lineNumber":179,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":180,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":181,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":182,"author":{"gitId":"cyqjoseph"},"content":" public void containsSubstringIgnoreCase_nonMatch_returnsFalse() {","lastModifiedDate":"2024-03-23"},{"lineNumber":183,"author":{"gitId":"cyqjoseph"},"content":" assertFalse(StringUtil.containsSubstringIgnoreCase(\"OpenAI GPT\", \"Transformer\"));","lastModifiedDate":"2024-03-23"},{"lineNumber":184,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":185,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"cyqjoseph":43,"-":143}},{"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":"cyqjoseph"},"content":"import seedu.address.commons.core.Theme;","lastModifiedDate":"2024-03-23"},{"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":"jerremyng"},"content":"import seedu.address.model.booking.Booking;","lastModifiedDate":"2024-03-10"},{"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":"jerremyng"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":163,"author":{"gitId":"jerremyng"},"content":" @Override","lastModifiedDate":"2024-03-10"},{"lineNumber":164,"author":{"gitId":"jerremyng"},"content":" public void addBooking(Booking booking) {","lastModifiedDate":"2024-03-10"},{"lineNumber":165,"author":{"gitId":"jerremyng"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-10"},{"lineNumber":166,"author":{"gitId":"jerremyng"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":167,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":168,"author":{"gitId":"zhenghuil"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":169,"author":{"gitId":"zhenghuil"},"content":" public void cancelBooking(Booking target) {","lastModifiedDate":"2024-03-19"},{"lineNumber":170,"author":{"gitId":"zhenghuil"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":171,"author":{"gitId":"zhenghuil"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":172,"author":{"gitId":"zhenghuil"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":173,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":174,"author":{"gitId":"cyqjoseph"},"content":" public boolean hasBooking(Booking booking) {","lastModifiedDate":"2024-03-17"},{"lineNumber":175,"author":{"gitId":"cyqjoseph"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":176,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":177,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":178,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":179,"author":{"gitId":"cyqjoseph"},"content":" public ObservableList\u003cBooking\u003e getFilteredBookingList() {","lastModifiedDate":"2024-03-17"},{"lineNumber":180,"author":{"gitId":"cyqjoseph"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-17"},{"lineNumber":181,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":182,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":183,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":184,"author":{"gitId":"cyqjoseph"},"content":" public void setTheme(Theme theme) {","lastModifiedDate":"2024-03-23"},{"lineNumber":185,"author":{"gitId":"cyqjoseph"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":186,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":187,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":188,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":189,"author":{"gitId":"cyqjoseph"},"content":" public void updateFilteredBookingList(Predicate\u003cBooking\u003e predicate) {","lastModifiedDate":"2024-03-23"},{"lineNumber":190,"author":{"gitId":"cyqjoseph"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":191,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":194,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":195,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07"},{"lineNumber":196,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":197,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07"},{"lineNumber":198,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":200,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":201,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":202,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07"},{"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 boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":207,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":208,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":209,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":212,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":213,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12"},{"lineNumber":214,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":215,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12"},{"lineNumber":216,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":218,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07"},{"lineNumber":219,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":220,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":221,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":222,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":224,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":225,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08"},{"lineNumber":226,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":227,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":228,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":230,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":231,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04"},{"lineNumber":232,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04"},{"lineNumber":233,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":234,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":236,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12"}],"authorContributionMap":{"jerremyng":6,"cyqjoseph":21,"-":204,"zhenghuil":5}},{"path":"src/test/java/seedu/address/logic/commands/BookCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.commons.core.Theme;","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.model.booking.Booking;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.testutil.BookingBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":"public class BookCommandTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"cyqjoseph"},"content":" public void execute_bookingAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"cyqjoseph"},"content":" BookCommandTest.ModelStubAcceptingBookingAdded modelStub \u003d new BookCommandTest.ModelStubAcceptingBookingAdded();","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"cyqjoseph"},"content":" Booking validBooking \u003d new BookingBuilder().build();","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"cyqjoseph"},"content":" CommandResult commandResult \u003d new BookCommand(validBooking).execute(modelStub);","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"cyqjoseph"},"content":" assertEquals(String.format(BookCommand.MESSAGE_SUCCESS, Messages.formatBooking(validBooking)),","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"cyqjoseph"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"cyqjoseph"},"content":" assertEquals(Arrays.asList(validBooking), modelStub.bookingsAdded);","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"cyqjoseph"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"cyqjoseph"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"cyqjoseph"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"cyqjoseph"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"cyqjoseph"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"cyqjoseph"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"cyqjoseph"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"cyqjoseph"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"cyqjoseph"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"cyqjoseph"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"cyqjoseph"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"cyqjoseph"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"cyqjoseph"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"cyqjoseph"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"cyqjoseph"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"cyqjoseph"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":84,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"cyqjoseph"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"cyqjoseph"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"cyqjoseph"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2024-03-19"},{"lineNumber":91,"author":{"gitId":"cyqjoseph"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":92,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":95,"author":{"gitId":"cyqjoseph"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"cyqjoseph"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"cyqjoseph"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"cyqjoseph"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"cyqjoseph"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2024-03-19"},{"lineNumber":106,"author":{"gitId":"cyqjoseph"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":107,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":108,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":110,"author":{"gitId":"cyqjoseph"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2024-03-19"},{"lineNumber":111,"author":{"gitId":"cyqjoseph"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":112,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":113,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":114,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":115,"author":{"gitId":"cyqjoseph"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2024-03-19"},{"lineNumber":116,"author":{"gitId":"cyqjoseph"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":117,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":118,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":119,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":120,"author":{"gitId":"cyqjoseph"},"content":" public void addBooking(Booking booking) {","lastModifiedDate":"2024-03-19"},{"lineNumber":121,"author":{"gitId":"cyqjoseph"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":122,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":123,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":124,"author":{"gitId":"zhenghuil"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":125,"author":{"gitId":"zhenghuil"},"content":" public void cancelBooking(Booking target) {","lastModifiedDate":"2024-03-19"},{"lineNumber":126,"author":{"gitId":"zhenghuil"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":127,"author":{"gitId":"zhenghuil"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":128,"author":{"gitId":"zhenghuil"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":129,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":130,"author":{"gitId":"cyqjoseph"},"content":" public boolean hasBooking(Booking booking) {","lastModifiedDate":"2024-03-19"},{"lineNumber":131,"author":{"gitId":"cyqjoseph"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":132,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":133,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":134,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":135,"author":{"gitId":"cyqjoseph"},"content":" public ObservableList\u003cBooking\u003e getFilteredBookingList() {","lastModifiedDate":"2024-03-19"},{"lineNumber":136,"author":{"gitId":"cyqjoseph"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":137,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":138,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":139,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":140,"author":{"gitId":"cyqjoseph"},"content":" public void setTheme(Theme theme) {","lastModifiedDate":"2024-03-23"},{"lineNumber":141,"author":{"gitId":"cyqjoseph"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":142,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":143,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":144,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":145,"author":{"gitId":"cyqjoseph"},"content":" public void updateFilteredBookingList(Predicate\u003cBooking\u003e predicate) {","lastModifiedDate":"2024-03-23"},{"lineNumber":146,"author":{"gitId":"cyqjoseph"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-23"},{"lineNumber":147,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":148,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":149,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":150,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":151,"author":{"gitId":"cyqjoseph"},"content":" * A Model stub that contains a single booking.","lastModifiedDate":"2024-03-19"},{"lineNumber":152,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":153,"author":{"gitId":"cyqjoseph"},"content":" private class ModelStubWithBooking extends BookCommandTest.ModelStub {","lastModifiedDate":"2024-03-19"},{"lineNumber":154,"author":{"gitId":"cyqjoseph"},"content":" private final Booking booking;","lastModifiedDate":"2024-03-19"},{"lineNumber":155,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":156,"author":{"gitId":"cyqjoseph"},"content":" ModelStubWithBooking(Booking booking) {","lastModifiedDate":"2024-03-19"},{"lineNumber":157,"author":{"gitId":"cyqjoseph"},"content":" requireNonNull(booking);","lastModifiedDate":"2024-03-19"},{"lineNumber":158,"author":{"gitId":"cyqjoseph"},"content":" this.booking \u003d booking;","lastModifiedDate":"2024-03-19"},{"lineNumber":159,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":160,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":161,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":162,"author":{"gitId":"cyqjoseph"},"content":" public boolean hasBooking(Booking booking) {","lastModifiedDate":"2024-03-19"},{"lineNumber":163,"author":{"gitId":"cyqjoseph"},"content":" requireNonNull(booking);","lastModifiedDate":"2024-03-19"},{"lineNumber":164,"author":{"gitId":"cyqjoseph"},"content":" return this.booking.equals(booking);","lastModifiedDate":"2024-03-19"},{"lineNumber":165,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":166,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":167,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":168,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":169,"author":{"gitId":"cyqjoseph"},"content":" * A Model stub that always accept the booking being added.","lastModifiedDate":"2024-03-19"},{"lineNumber":170,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":171,"author":{"gitId":"cyqjoseph"},"content":" private class ModelStubAcceptingBookingAdded extends BookCommandTest.ModelStub {","lastModifiedDate":"2024-03-19"},{"lineNumber":172,"author":{"gitId":"cyqjoseph"},"content":" final ArrayList\u003cBooking\u003e bookingsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-19"},{"lineNumber":173,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":174,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":175,"author":{"gitId":"cyqjoseph"},"content":" public boolean hasBooking(Booking booking) {","lastModifiedDate":"2024-03-19"},{"lineNumber":176,"author":{"gitId":"cyqjoseph"},"content":" requireNonNull(booking);","lastModifiedDate":"2024-03-19"},{"lineNumber":177,"author":{"gitId":"cyqjoseph"},"content":" return bookingsAdded.stream().anyMatch(booking::equals);","lastModifiedDate":"2024-03-19"},{"lineNumber":178,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":179,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":180,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":181,"author":{"gitId":"cyqjoseph"},"content":" public void addBooking(Booking booking) {","lastModifiedDate":"2024-03-19"},{"lineNumber":182,"author":{"gitId":"cyqjoseph"},"content":" requireNonNull(booking);","lastModifiedDate":"2024-03-19"},{"lineNumber":183,"author":{"gitId":"cyqjoseph"},"content":" bookingsAdded.add(booking);","lastModifiedDate":"2024-03-19"},{"lineNumber":184,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":185,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":186,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":187,"author":{"gitId":"cyqjoseph"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2024-03-19"},{"lineNumber":188,"author":{"gitId":"cyqjoseph"},"content":" return new AddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":189,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":190,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":191,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"cyqjoseph":186,"zhenghuil":5}},{"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":"jerremyng"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"jerremyng"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"jerremyng"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"jerremyng"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorTest {","lastModifiedDate":"2017-05-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptorWithSameValues \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" EditPersonDescriptor editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_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 phone -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_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 email -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_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 address -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_BOB).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":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", address\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getAddress().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"jerremyng"},"content":" + editPersonDescriptor.getTags().orElse(new HashSet\u003c\u003e()) + \"}\";","lastModifiedDate":"2024-03-18"},{"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":{"jerremyng":5,"-":70}},{"path":"src/test/java/seedu/address/logic/commands/SearchCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-23"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-23"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"import static seedu.address.logic.Messages.MESSAGE_BOOKINGS_LISTED_OVERVIEW;","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"import static seedu.address.testutil.TypicalBookings.CS2101_CONSULT;","lastModifiedDate":"2024-03-23"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"import static seedu.address.testutil.TypicalBookings.getTypicalAddressBook;","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-23"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-23"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.model.booking.DescriptionContainsKeywordsPredicate;","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" * Contains integration tests (interaction with the Model) for {@code SearchCommand}.","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":"public class SearchCommandTest {","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-23"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":" public void equals() {","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":" DescriptionContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"cyqjoseph"},"content":" new DescriptionContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"cyqjoseph"},"content":" DescriptionContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2024-03-23"},{"lineNumber":33,"author":{"gitId":"cyqjoseph"},"content":" new DescriptionContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2024-03-23"},{"lineNumber":34,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":35,"author":{"gitId":"cyqjoseph"},"content":" SearchCommand searchFirstCommand \u003d new SearchCommand(firstPredicate);","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"cyqjoseph"},"content":" SearchCommand searchSecondCommand \u003d new SearchCommand(secondPredicate);","lastModifiedDate":"2024-03-23"},{"lineNumber":37,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"cyqjoseph"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-23"},{"lineNumber":39,"author":{"gitId":"cyqjoseph"},"content":" assertTrue(searchFirstCommand.equals(searchFirstCommand));","lastModifiedDate":"2024-03-23"},{"lineNumber":40,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"cyqjoseph"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"cyqjoseph"},"content":" SearchCommand findSearchCommandCopy \u003d new SearchCommand(firstPredicate);","lastModifiedDate":"2024-03-23"},{"lineNumber":43,"author":{"gitId":"cyqjoseph"},"content":" assertTrue(searchFirstCommand.equals(findSearchCommandCopy));","lastModifiedDate":"2024-03-23"},{"lineNumber":44,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":45,"author":{"gitId":"cyqjoseph"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-23"},{"lineNumber":46,"author":{"gitId":"cyqjoseph"},"content":" assertFalse(searchFirstCommand.equals(1));","lastModifiedDate":"2024-03-23"},{"lineNumber":47,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":48,"author":{"gitId":"cyqjoseph"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-23"},{"lineNumber":49,"author":{"gitId":"cyqjoseph"},"content":" assertFalse(searchFirstCommand.equals(null));","lastModifiedDate":"2024-03-23"},{"lineNumber":50,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":51,"author":{"gitId":"cyqjoseph"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-23"},{"lineNumber":52,"author":{"gitId":"cyqjoseph"},"content":" assertFalse(searchFirstCommand.equals(searchSecondCommand));","lastModifiedDate":"2024-03-23"},{"lineNumber":53,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":54,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":55,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":56,"author":{"gitId":"cyqjoseph"},"content":" public void execute_zeroKeywords_noPersonFound() {","lastModifiedDate":"2024-03-23"},{"lineNumber":57,"author":{"gitId":"cyqjoseph"},"content":" String expectedMessage \u003d String.format(MESSAGE_BOOKINGS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2024-03-23"},{"lineNumber":58,"author":{"gitId":"cyqjoseph"},"content":" DescriptionContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2024-03-23"},{"lineNumber":59,"author":{"gitId":"cyqjoseph"},"content":" SearchCommand command \u003d new SearchCommand(predicate);","lastModifiedDate":"2024-03-23"},{"lineNumber":60,"author":{"gitId":"cyqjoseph"},"content":" expectedModel.updateFilteredBookingList(predicate);","lastModifiedDate":"2024-03-23"},{"lineNumber":61,"author":{"gitId":"cyqjoseph"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-23"},{"lineNumber":62,"author":{"gitId":"cyqjoseph"},"content":" assertEquals(Collections.emptyList(), model.getFilteredBookingList());","lastModifiedDate":"2024-03-23"},{"lineNumber":63,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":64,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":65,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":66,"author":{"gitId":"cyqjoseph"},"content":" public void execute_multipleKeywords_multiplePersonsFound() {","lastModifiedDate":"2024-03-23"},{"lineNumber":67,"author":{"gitId":"cyqjoseph"},"content":" String expectedMessage \u003d String.format(MESSAGE_BOOKINGS_LISTED_OVERVIEW, 1);","lastModifiedDate":"2024-03-23"},{"lineNumber":68,"author":{"gitId":"cyqjoseph"},"content":" DescriptionContainsKeywordsPredicate predicate \u003d preparePredicate(\"CS2101\");","lastModifiedDate":"2024-03-23"},{"lineNumber":69,"author":{"gitId":"cyqjoseph"},"content":" SearchCommand command \u003d new SearchCommand(predicate);","lastModifiedDate":"2024-03-23"},{"lineNumber":70,"author":{"gitId":"cyqjoseph"},"content":" expectedModel.updateFilteredBookingList(predicate);","lastModifiedDate":"2024-03-23"},{"lineNumber":71,"author":{"gitId":"cyqjoseph"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-23"},{"lineNumber":72,"author":{"gitId":"cyqjoseph"},"content":" assertEquals(Arrays.asList(CS2101_CONSULT), model.getFilteredBookingList());","lastModifiedDate":"2024-03-23"},{"lineNumber":73,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":74,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":75,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":76,"author":{"gitId":"cyqjoseph"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-23"},{"lineNumber":77,"author":{"gitId":"cyqjoseph"},"content":" DescriptionContainsKeywordsPredicate predicate \u003d","lastModifiedDate":"2024-03-23"},{"lineNumber":78,"author":{"gitId":"cyqjoseph"},"content":" new DescriptionContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2024-03-23"},{"lineNumber":79,"author":{"gitId":"cyqjoseph"},"content":" SearchCommand searchCommand \u003d new SearchCommand(predicate);","lastModifiedDate":"2024-03-23"},{"lineNumber":80,"author":{"gitId":"cyqjoseph"},"content":" String expected \u003d SearchCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2024-03-23"},{"lineNumber":81,"author":{"gitId":"cyqjoseph"},"content":" assertEquals(expected, searchCommand.toString());","lastModifiedDate":"2024-03-23"},{"lineNumber":82,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":83,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":84,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":85,"author":{"gitId":"cyqjoseph"},"content":" * Parses {@code userInput} into a {@code DescriptionContainsKeywordsPredicate}.","lastModifiedDate":"2024-03-23"},{"lineNumber":86,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":87,"author":{"gitId":"cyqjoseph"},"content":" private DescriptionContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2024-03-23"},{"lineNumber":88,"author":{"gitId":"cyqjoseph"},"content":" return new DescriptionContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2024-03-23"},{"lineNumber":89,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":90,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-03-23"}],"authorContributionMap":{"cyqjoseph":90}},{"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_NAME_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":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14"},{"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_NAME;","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.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-06-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-06-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","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 parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2018-07-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND, new AddCommand(expectedPerson));","lastModifiedDate":"2017-12-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":" Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND)","lastModifiedDate":"2018-07-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":61,"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":62,"author":{"gitId":"-"},"content":" new AddCommand(expectedPersonMultipleTags));","lastModifiedDate":"2023-07-14"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-07-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND;","lastModifiedDate":"2023-07-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":70,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":76,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":78,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":80,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":82,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":86,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2023-07-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":" + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_ADDRESS, PREFIX_EMAIL, PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":106,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":110,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":112,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":130,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":131,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15"},{"lineNumber":132,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2018-07-25"},{"lineNumber":133,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + ADDRESS_DESC_AMY,","lastModifiedDate":"2017-12-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2017-12-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":138,"author":{"gitId":"jerremyng"},"content":" public void parse_compulsoryNameMissing_failure() {","lastModifiedDate":"2024-03-18"},{"lineNumber":139,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":141,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"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_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":149,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":150,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":153,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15"},{"lineNumber":154,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":157,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15"},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":161,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15"},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2017-12-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":165,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15"},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":" + INVALID_TAG_DESC + VALID_TAG_FRIEND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":169,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":170,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC,","lastModifiedDate":"2017-12-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2017-12-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":178,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"jerremyng":1,"-":177}},{"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":"cyqjoseph"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.logic.commands.CancelCommand;","lastModifiedDate":"2024-03-23"},{"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":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-06-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.logic.commands.SearchCommand;","lastModifiedDate":"2024-03-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.model.booking.DescriptionContainsKeywordsPredicate;","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2017-06-27"},{"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_edit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2018-03-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12"},{"lineNumber":78,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12"},{"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_help() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","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_list() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":105,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":106,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":107,"author":{"gitId":"cyqjoseph"},"content":" public void parseCommand_cancel() throws Exception {","lastModifiedDate":"2024-03-23"},{"lineNumber":108,"author":{"gitId":"cyqjoseph"},"content":" Index index \u003d Index.fromOneBased(1); // Using the first index for simplicity","lastModifiedDate":"2024-03-23"},{"lineNumber":109,"author":{"gitId":"cyqjoseph"},"content":" CancelCommand command \u003d (CancelCommand) parser.parseCommand(","lastModifiedDate":"2024-03-23"},{"lineNumber":110,"author":{"gitId":"cyqjoseph"},"content":" CancelCommand.COMMAND_WORD + \" \" + index.getOneBased());","lastModifiedDate":"2024-03-23"},{"lineNumber":111,"author":{"gitId":"cyqjoseph"},"content":" assertEquals(new CancelCommand(index), command);","lastModifiedDate":"2024-03-23"},{"lineNumber":112,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":113,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":114,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":115,"author":{"gitId":"cyqjoseph"},"content":" public void parseCommand_search() throws Exception {","lastModifiedDate":"2024-03-23"},{"lineNumber":116,"author":{"gitId":"cyqjoseph"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"John\u0027s\", \"Birthday\", \"Party\");","lastModifiedDate":"2024-03-23"},{"lineNumber":117,"author":{"gitId":"cyqjoseph"},"content":" SearchCommand command \u003d (SearchCommand) parser.parseCommand(","lastModifiedDate":"2024-03-23"},{"lineNumber":118,"author":{"gitId":"cyqjoseph"},"content":" SearchCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2024-03-23"},{"lineNumber":119,"author":{"gitId":"cyqjoseph"},"content":" assertEquals(new SearchCommand(new DescriptionContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2024-03-23"},{"lineNumber":120,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"cyqjoseph":20,"-":101}},{"path":"src/test/java/seedu/address/logic/parser/SearchCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-23"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-23"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.logic.commands.SearchCommand;","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.model.booking.DescriptionContainsKeywordsPredicate;","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":"public class SearchCommandParserTest {","lastModifiedDate":"2024-03-23"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" private SearchCommandParser parser \u003d new SearchCommandParser();","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" assertParseFailure(parser, \" \", String.format(MESSAGE_INVALID_COMMAND_FORMAT, SearchCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" public void parse_validArgs_returnsSearchCommand() {","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" SearchCommand expectedSearchCommand \u003d","lastModifiedDate":"2024-03-23"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":" new SearchCommand(new DescriptionContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\")));","lastModifiedDate":"2024-03-23"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":" assertParseSuccess(parser, \"Alice Bob\", expectedSearchCommand);","lastModifiedDate":"2024-03-23"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"cyqjoseph"},"content":" assertParseSuccess(parser, \" \\n Alice \\n \\t Bob \\t\", expectedSearchCommand);","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":33,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":34,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-03-23"}],"authorContributionMap":{"cyqjoseph":34}},{"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":"-"},"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":"cyqjoseph"},"content":"import seedu.address.model.booking.Booking;","lastModifiedDate":"2024-03-17"},{"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":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2018-04-19"},{"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":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasPerson(null));","lastModifiedDate":"2019-03-23"},{"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":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2018-08-06"},{"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":"cyqjoseph"},"content":" String expected \u003d AddressBook.class.getCanonicalName()","lastModifiedDate":"2024-03-17"},{"lineNumber":90,"author":{"gitId":"cyqjoseph"},"content":" + \"{persons\u003d\" + addressBook.getPersonList() + \", \"","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"cyqjoseph"},"content":" + \"bookings\u003d\" + addressBook.getBookingList() + \"}\";","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertEquals(expected, addressBook.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":"2016-12-24"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * A stub ReadOnlyAddressBook whose persons list can violate interface constraints.","lastModifiedDate":"2018-03-29"},{"lineNumber":97,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-24"},{"lineNumber":98,"author":{"gitId":"-"},"content":" private static class AddressBookStub implements ReadOnlyAddressBook {","lastModifiedDate":"2016-12-24"},{"lineNumber":99,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e persons \u003d FXCollections.observableArrayList();","lastModifiedDate":"2018-01-10"},{"lineNumber":100,"author":{"gitId":"cyqjoseph"},"content":" private final ObservableList\u003cBooking\u003e bookings \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":" AddressBookStub(Collection\u003cPerson\u003e persons) {","lastModifiedDate":"2018-03-29"},{"lineNumber":103,"author":{"gitId":"-"},"content":" this.persons.setAll(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":" @Override","lastModifiedDate":"2016-12-24"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":108,"author":{"gitId":"-"},"content":" return persons;","lastModifiedDate":"2016-12-24"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":110,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"cyqjoseph"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"cyqjoseph"},"content":" public ObservableList\u003cBooking\u003e getBookingList() {","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"cyqjoseph"},"content":" return bookings;","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-24"}],"authorContributionMap":{"cyqjoseph":10,"-":107}},{"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":"cyqjoseph"},"content":"import static seedu.address.testutil.TypicalBookings.GENERIC_BOOKING;","lastModifiedDate":"2024-03-17"},{"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.BENSON;","lastModifiedDate":"2017-07-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-31"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"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":"cyqjoseph"},"content":" userPrefs.setGuiSettings(new GuiSettings((double) 1000, (double) 500, 300, 100, \"DARKTHEME\"));","lastModifiedDate":"2024-03-23"},{"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":"cyqjoseph"},"content":" GuiSettings guiSettings \u003d new GuiSettings((double) 1000, (double) 500, 300, 100, \"DARKTHEME\");","lastModifiedDate":"2024-03-23"},{"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":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasPerson(null));","lastModifiedDate":"2019-03-23"},{"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":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"cyqjoseph"},"content":" public void hasBooking_bookingInAddressBook_returnsTrue() {","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"cyqjoseph"},"content":" modelManager.addBooking(GENERIC_BOOKING);","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"cyqjoseph"},"content":" assertTrue(modelManager.hasBooking(GENERIC_BOOKING));","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"cyqjoseph"},"content":" public void getFilteredBookingList_modifyBooking_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"cyqjoseph"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredBookingList().remove(0));","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31"},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":110,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBookBuilder().withPerson(ALICE).withPerson(BENSON).build();","lastModifiedDate":"2017-07-19"},{"lineNumber":111,"author":{"gitId":"-"},"content":" AddressBook differentAddressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31"},{"lineNumber":112,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":114,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":" modelManager \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2018-08-06"},{"lineNumber":116,"author":{"gitId":"-"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2017-05-31"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":119,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":122,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":125,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":128,"author":{"gitId":"-"},"content":" // different addressBook -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(differentAddressBook, userPrefs)));","lastModifiedDate":"2017-05-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":131,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":132,"author":{"gitId":"-"},"content":" String[] keywords \u003d ALICE.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-19"},{"lineNumber":133,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(keywords)));","lastModifiedDate":"2017-06-12"},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, userPrefs)));","lastModifiedDate":"2017-05-31"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":136,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2017-08-05"},{"lineNumber":137,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":139,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27"},{"lineNumber":140,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":141,"author":{"gitId":"-"},"content":" differentUserPrefs.setAddressBookFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2018-08-09"},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, differentUserPrefs)));","lastModifiedDate":"2018-11-27"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":144,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31"}],"authorContributionMap":{"cyqjoseph":14,"-":130}},{"path":"src/test/java/seedu/address/model/booking/DescriptionContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package seedu.address.model.booking;","lastModifiedDate":"2024-03-23"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-23"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-23"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"import java.util.List;","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.testutil.BookingBuilder;","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":"public class DescriptionContainsKeywordsPredicateTest {","lastModifiedDate":"2024-03-23"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" public void equals() {","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" List\u003cString\u003e firstPredicateKeywordList \u003d Collections.singletonList(\"birthday\");","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" List\u003cString\u003e secondPredicateKeywordList \u003d Arrays.asList(\"birthday\", \"conference\");","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" DescriptionContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" new DescriptionContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" DescriptionContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" new DescriptionContainsKeywordsPredicate(secondPredicateKeywordList);","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-23"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2024-03-23"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"cyqjoseph"},"content":" DescriptionContainsKeywordsPredicate firstPredicateCopy \u003d","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"cyqjoseph"},"content":" new DescriptionContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2024-03-23"},{"lineNumber":33,"author":{"gitId":"cyqjoseph"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2024-03-23"},{"lineNumber":34,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":35,"author":{"gitId":"cyqjoseph"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"cyqjoseph"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2024-03-23"},{"lineNumber":37,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"cyqjoseph"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-23"},{"lineNumber":39,"author":{"gitId":"cyqjoseph"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2024-03-23"},{"lineNumber":40,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"cyqjoseph"},"content":" // different booking -\u003e returns false","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"cyqjoseph"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2024-03-23"},{"lineNumber":43,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":44,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":45,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":46,"author":{"gitId":"cyqjoseph"},"content":" public void test_descriptionContainsKeywords_returnsTrue() {","lastModifiedDate":"2024-03-23"},{"lineNumber":47,"author":{"gitId":"cyqjoseph"},"content":" // One keyword","lastModifiedDate":"2024-03-23"},{"lineNumber":48,"author":{"gitId":"cyqjoseph"},"content":" DescriptionContainsKeywordsPredicate predicate \u003d","lastModifiedDate":"2024-03-23"},{"lineNumber":49,"author":{"gitId":"cyqjoseph"},"content":" new DescriptionContainsKeywordsPredicate(Collections.singletonList(\"birthday\"));","lastModifiedDate":"2024-03-23"},{"lineNumber":50,"author":{"gitId":"cyqjoseph"},"content":" assertTrue(predicate.test(new BookingBuilder().withDescription(\"John\u0027s birthday\").build()));","lastModifiedDate":"2024-03-23"},{"lineNumber":51,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":52,"author":{"gitId":"cyqjoseph"},"content":" // Multiple keywords","lastModifiedDate":"2024-03-23"},{"lineNumber":53,"author":{"gitId":"cyqjoseph"},"content":" predicate \u003d new DescriptionContainsKeywordsPredicate(Arrays.asList(\"birthday\", \"party\"));","lastModifiedDate":"2024-03-23"},{"lineNumber":54,"author":{"gitId":"cyqjoseph"},"content":" assertTrue(predicate.test(new BookingBuilder().withDescription(\"John\u0027s birthday party\").build()));","lastModifiedDate":"2024-03-23"},{"lineNumber":55,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":56,"author":{"gitId":"cyqjoseph"},"content":" // Only one matching keyword","lastModifiedDate":"2024-03-23"},{"lineNumber":57,"author":{"gitId":"cyqjoseph"},"content":" predicate \u003d new DescriptionContainsKeywordsPredicate(Arrays.asList(\"conference\", \"birthday\"));","lastModifiedDate":"2024-03-23"},{"lineNumber":58,"author":{"gitId":"cyqjoseph"},"content":" assertTrue(predicate.test(new BookingBuilder().withDescription(\"Alice\u0027s birthday gathering\").build()));","lastModifiedDate":"2024-03-23"},{"lineNumber":59,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":60,"author":{"gitId":"cyqjoseph"},"content":" // Mixed-case keywords","lastModifiedDate":"2024-03-23"},{"lineNumber":61,"author":{"gitId":"cyqjoseph"},"content":" predicate \u003d new DescriptionContainsKeywordsPredicate(Arrays.asList(\"bIRthday\", \"PaRTy\"));","lastModifiedDate":"2024-03-23"},{"lineNumber":62,"author":{"gitId":"cyqjoseph"},"content":" assertTrue(predicate.test(new BookingBuilder().withDescription(\"Birthday Party\").build()));","lastModifiedDate":"2024-03-23"},{"lineNumber":63,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":64,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":65,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":66,"author":{"gitId":"cyqjoseph"},"content":" public void test_descriptionDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2024-03-23"},{"lineNumber":67,"author":{"gitId":"cyqjoseph"},"content":" // Zero keywords","lastModifiedDate":"2024-03-23"},{"lineNumber":68,"author":{"gitId":"cyqjoseph"},"content":" DescriptionContainsKeywordsPredicate predicate \u003d","lastModifiedDate":"2024-03-23"},{"lineNumber":69,"author":{"gitId":"cyqjoseph"},"content":" new DescriptionContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2024-03-23"},{"lineNumber":70,"author":{"gitId":"cyqjoseph"},"content":" assertFalse(predicate.test(new BookingBuilder().withDescription(\"Conference\").build()));","lastModifiedDate":"2024-03-23"},{"lineNumber":71,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":72,"author":{"gitId":"cyqjoseph"},"content":" // Non-matching keyword","lastModifiedDate":"2024-03-23"},{"lineNumber":73,"author":{"gitId":"cyqjoseph"},"content":" predicate \u003d new DescriptionContainsKeywordsPredicate(Arrays.asList(\"wedding\"));","lastModifiedDate":"2024-03-23"},{"lineNumber":74,"author":{"gitId":"cyqjoseph"},"content":" assertFalse(predicate.test(new BookingBuilder().withDescription(\"John\u0027s birthday\").build()));","lastModifiedDate":"2024-03-23"},{"lineNumber":75,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":76,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":77,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":78,"author":{"gitId":"cyqjoseph"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-23"},{"lineNumber":79,"author":{"gitId":"cyqjoseph"},"content":" List\u003cString\u003e keywords \u003d List.of(\"conference\", \"meeting\");","lastModifiedDate":"2024-03-23"},{"lineNumber":80,"author":{"gitId":"cyqjoseph"},"content":" DescriptionContainsKeywordsPredicate predicate \u003d new DescriptionContainsKeywordsPredicate(keywords);","lastModifiedDate":"2024-03-23"},{"lineNumber":81,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":82,"author":{"gitId":"cyqjoseph"},"content":" String expected \u003d DescriptionContainsKeywordsPredicate.class.getCanonicalName() + \"{keywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2024-03-23"},{"lineNumber":83,"author":{"gitId":"cyqjoseph"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2024-03-23"},{"lineNumber":84,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":85,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-03-23"}],"authorContributionMap":{"cyqjoseph":85}},{"path":"src/test/java/seedu/address/model/booking/DescriptionTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package seedu.address.model.booking;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":"public class DescriptionTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" assertThrows(NullPointerException.class, () -\u003e new Description(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" public void isValidDescription() {","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" // null description","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" assertThrows(NullPointerException.class, () -\u003e Description.isValidDescription(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" // invalid description","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" assertFalse(Description.isValidDescription(\"\")); // empty string","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" // valid description","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" assertTrue(Description.isValidDescription(\"peter jack\")); // alphabets only","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":" assertTrue(Description.isValidDescription(\"12345\")); // numbers only","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"cyqjoseph"},"content":" public void equals() {","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"cyqjoseph"},"content":" Description description \u003d new Description(\"Valid description\");","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"cyqjoseph"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"cyqjoseph"},"content":" assertTrue(description.equals(new Description(\"Valid description\")));","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"cyqjoseph"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"cyqjoseph"},"content":" assertTrue(description.equals(description));","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"cyqjoseph"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"cyqjoseph"},"content":" assertFalse(description.equals(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"cyqjoseph"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"cyqjoseph"},"content":" assertFalse(description.equals(5.0f));","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"cyqjoseph"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"cyqjoseph"},"content":" assertFalse(description.equals(new Name(\"Other Valid Name\")));","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"cyqjoseph":50}},{"path":"src/test/java/seedu/address/model/booking/EndTimeTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package seedu.address.model.booking;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"public class EndTimeTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":" public void constructor_invalidEndTime_throwsDateTimeParseException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" String invalidEndTime \u003d \"2024-15-40 26:00\"; // Invalid date and time","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new EndTime(invalidEndTime));","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" public void isValidEndTime() {","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" // invalid end times","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" assertFalse(EndTime.isValidEndTime(\"\")); // Empty string","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" assertFalse(EndTime.isValidEndTime(\"2024-01-32 24:60\")); // Non-existent date and time","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" // valid end times","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" assertTrue(EndTime.isValidEndTime(\"2024-03-19 12:00\")); // Correct format","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":" public void equals() {","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":" EndTime endTime \u003d new EndTime(\"2024-03-19 12:00\");","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"cyqjoseph"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"cyqjoseph"},"content":" assertTrue(endTime.equals(new EndTime(\"2024-03-19 12:00\")));","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"cyqjoseph"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"cyqjoseph"},"content":" assertTrue(endTime.equals(endTime));","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"cyqjoseph"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"cyqjoseph"},"content":" assertFalse(endTime.equals(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"cyqjoseph"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"cyqjoseph"},"content":" assertFalse(endTime.equals(new String(\"2024-03-19 12:00\")));","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"cyqjoseph"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"cyqjoseph"},"content":" assertFalse(endTime.equals(new EndTime(\"2024-03-20 12:00\")));","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"cyqjoseph":46}},{"path":"src/test/java/seedu/address/model/booking/StartTimeTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package seedu.address.model.booking;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"public class StartTimeTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":" public void constructor_invalidStartTime_throwsDateTimeParseException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" String invalidStartTime \u003d \"2024-03-33 25:00\"; // Invalid date and time","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new StartTime(invalidStartTime));","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" public void isValidStartTime() {","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" // invalid start times","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" assertFalse(StartTime.isValidStartTime(\"\")); // Empty string","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" assertFalse(StartTime.isValidStartTime(\"2024-02-30 24:01\")); // Non-existent date and time","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" // valid start times","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" assertTrue(StartTime.isValidStartTime(\"2024-03-19 12:00\")); // Correct format","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":" public void equals() {","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":" StartTime startTime \u003d new StartTime(\"2024-03-19 12:00\");","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"cyqjoseph"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"cyqjoseph"},"content":" assertTrue(startTime.equals(new StartTime(\"2024-03-19 12:00\")));","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"cyqjoseph"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"cyqjoseph"},"content":" assertTrue(startTime.equals(startTime));","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"cyqjoseph"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"cyqjoseph"},"content":" assertFalse(startTime.equals(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"cyqjoseph"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"cyqjoseph"},"content":" assertFalse(startTime.equals(new String(\"2024-03-19 12:00\")));","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"cyqjoseph"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"cyqjoseph"},"content":" assertFalse(startTime.equals(new StartTime(\"2024-03-20 12:00\")));","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"cyqjoseph":46}},{"path":"src/test/java/seedu/address/model/person/RatingTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"public class RatingTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":" public void constructor_invalidRating_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":" int invalidRating \u003d -1;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Rating(invalidRating));","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" public void setRating_invalidRating_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" Rating testRating \u003d new Rating(0);","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e testRating.setRating(-1));","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" public void isValidRating() {","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" // invalid rating","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" assertFalse(Rating.isValidRating(124)); // empty string","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" assertFalse(Rating.isValidRating(-1)); // spaces only","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":" // valid rating","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":" assertTrue(Rating.isValidRating(4));","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"cyqjoseph"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"cyqjoseph"},"content":" public void equals() {","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"cyqjoseph"},"content":" Rating rating \u003d new Rating(5);","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"cyqjoseph"},"content":" // same rating -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"cyqjoseph"},"content":" assertTrue(rating.equals(new Rating(5)));","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"cyqjoseph"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"cyqjoseph"},"content":" assertTrue(rating.equals(rating));","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"cyqjoseph"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"cyqjoseph"},"content":" assertFalse(rating.equals(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"cyqjoseph"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"cyqjoseph"},"content":" assertFalse(rating.equals(\"\"));","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"cyqjoseph"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"cyqjoseph"},"content":" assertFalse(rating.equals(new Rating(0)));","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"cyqjoseph":51}},{"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":"cyqjoseph"},"content":" userPrefs.setGuiSettings(new GuiSettings((double) 1000, (double) 500, 300, 100, \"DARKTHEME\"));","lastModifiedDate":"2024-03-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"addressbook.json\"));","lastModifiedDate":"2018-11-27"},{"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":"cyqjoseph"},"content":" original.setGuiSettings(new GuiSettings((double) 1000, (double) 500, 300, 100, \"DARKTHEME\"));","lastModifiedDate":"2024-03-23"},{"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":"cyqjoseph"},"content":" original.setGuiSettings(new GuiSettings((double) 1000, (double) 500, 300, 100, \"DARKTHEME\"));","lastModifiedDate":"2024-03-23"},{"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":{"cyqjoseph":3,"-":120}},{"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":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"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":"cyqjoseph"},"content":" original.setGuiSettings(new GuiSettings((double) 1000, (double) 500, 300, 100, \"DARKTHEME\"));","lastModifiedDate":"2024-03-23"},{"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":{"cyqjoseph":1,"-":67}},{"path":"src/test/java/seedu/address/testutil/BookingBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.model.booking.Booking;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.model.booking.Description;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.model.booking.EndTime;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.model.booking.StartTime;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":" * A utility class to help with building Booking objects.","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":"public class BookingBuilder {","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":" public static final String DEFAULT_DESCRIPTION \u003d \"Default booking description\";","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":" public static final String DEFAULT_START_TIME \u003d \"2023-12-31 19:00\";","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" public static final String DEFAULT_END_TIME \u003d \"2023-12-31 21:00\";","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" private Description description;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" private StartTime start;","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" private EndTime end;","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" * Creates a {@code BookingBuilder} with the default details.","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" public BookingBuilder() {","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" description \u003d new Description(DEFAULT_DESCRIPTION);","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":" start \u003d new StartTime(DEFAULT_START_TIME);","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":" end \u003d new EndTime(DEFAULT_END_TIME);","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"cyqjoseph"},"content":" * Initializes the BookingBuilder with the data of {@code bookingToCopy}.","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"cyqjoseph"},"content":" public BookingBuilder(Booking bookingToCopy) {","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"cyqjoseph"},"content":" description \u003d bookingToCopy.getDescription();","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"cyqjoseph"},"content":" start \u003d bookingToCopy.getStart();","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"cyqjoseph"},"content":" end \u003d bookingToCopy.getEnd();","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"cyqjoseph"},"content":" * Sets the {@code Description} of the {@code Booking} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"cyqjoseph"},"content":" public BookingBuilder withDescription(String description) {","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"cyqjoseph"},"content":" this.description \u003d new Description(description);","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"cyqjoseph"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"cyqjoseph"},"content":" * Sets the {@code start} of the {@code Booking} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"cyqjoseph"},"content":" public BookingBuilder withStartTime(String start) {","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"cyqjoseph"},"content":" this.start \u003d new StartTime(start);","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"cyqjoseph"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"cyqjoseph"},"content":" * Sets the {@code end} of the {@code Booking} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"cyqjoseph"},"content":" public BookingBuilder withEndTime(String end) {","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"cyqjoseph"},"content":" this.end \u003d new EndTime(end);","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"cyqjoseph"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"cyqjoseph"},"content":" * Builds the {@code Booking} with the relevant information.","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"cyqjoseph"},"content":" public Booking build() {","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"cyqjoseph"},"content":" return new Booking(description, start, end);","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"cyqjoseph":69}},{"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":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":"import seedu.address.model.person.ImagePath;","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":31,"author":{"gitId":"ChrysanthemumT"},"content":" private ImagePath imagePath;","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10"},{"lineNumber":48,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20"},{"lineNumber":52,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":64,"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":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String ... tags) {","lastModifiedDate":"2017-08-15"},{"lineNumber":67,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","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":" * Sets the {@code Address} of 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 withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":75,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","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":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":83,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20"},{"lineNumber":92,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":95,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"ChrysanthemumT"},"content":" * Sets the {@code ImagePath} of the {@code Person} that we are building","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"ChrysanthemumT"},"content":" public PersonBuilder withImage() {","lastModifiedDate":"2024-03-20"},{"lineNumber":99,"author":{"gitId":"ChrysanthemumT"},"content":" this.imagePath \u003d new ImagePath();","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"ChrysanthemumT"},"content":" return this;","lastModifiedDate":"2024-03-20"},{"lineNumber":101,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":102,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05"},{"lineNumber":104,"author":{"gitId":"-"},"content":" return new Person(name, phone, email, address, tags);","lastModifiedDate":"2017-12-20"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":107,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03"}],"authorContributionMap":{"ChrysanthemumT":11,"-":96}},{"path":"src/test/java/seedu/address/testutil/TypicalBookings.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"cyqjoseph"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"cyqjoseph"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"cyqjoseph"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"cyqjoseph"},"content":"import java.util.List;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"cyqjoseph"},"content":"import seedu.address.model.booking.Booking;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"cyqjoseph"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"cyqjoseph"},"content":" * A utility class containing a list of {@code Booking} objects to be used in tests.","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"cyqjoseph"},"content":"public class TypicalBookings {","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"cyqjoseph"},"content":" public static final Booking CS1231_CONSULT \u003d new BookingBuilder()","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"cyqjoseph"},"content":" .withDescription(\"CS1231 Consult\")","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"cyqjoseph"},"content":" .withStartTime(\"2022-11-31 11:00\")","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"cyqjoseph"},"content":" .withEndTime(\"2022-11-31 12:00\")","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"cyqjoseph"},"content":" .build();","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"cyqjoseph"},"content":" public static final Booking CAREER_ADVISORY \u003d new BookingBuilder()","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"cyqjoseph"},"content":" .withDescription(\"Career advisory consult\")","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"cyqjoseph"},"content":" .withStartTime(\"2024-1-31 11:00\")","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"cyqjoseph"},"content":" .withEndTime(\"2024-1-31 12:00\")","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"cyqjoseph"},"content":" .build();","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"cyqjoseph"},"content":" public static final Booking CS2103T_CONSULT \u003d new BookingBuilder()","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"cyqjoseph"},"content":" .withDescription(\"CS2103T consult\")","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"cyqjoseph"},"content":" .withStartTime(\"2024-3-31 14:00\")","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"cyqjoseph"},"content":" .withEndTime(\"2024-3-31 16:00\")","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"cyqjoseph"},"content":" .build();","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"cyqjoseph"},"content":" public static final Booking CS2101_CONSULT \u003d new BookingBuilder()","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"cyqjoseph"},"content":" .withDescription(\"CS2101 consult\")","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"cyqjoseph"},"content":" .withStartTime(\"2024-3-24 14:00\")","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"cyqjoseph"},"content":" .withEndTime(\"2024-3-24 16:00\")","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"cyqjoseph"},"content":" .build();","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"cyqjoseph"},"content":" public static final Booking CS2109S_CONSULT \u003d new BookingBuilder()","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"cyqjoseph"},"content":" .withDescription(\"CS2109 consult\")","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"cyqjoseph"},"content":" .withStartTime(\"2024-2-22 11:00\")","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"cyqjoseph"},"content":" .withEndTime(\"2024-2-22 13:00\")","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"cyqjoseph"},"content":" .build();","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"cyqjoseph"},"content":" public static final Booking GENERIC_BOOKING \u003d new BookingBuilder()","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"cyqjoseph"},"content":" .build();","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"cyqjoseph"},"content":" // Keywords","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"cyqjoseph"},"content":" public static final String KEYWORD_MATCHING_BOOK \u003d \"Book\";","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"cyqjoseph"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"cyqjoseph"},"content":" * Returns an {@code AddressBook} with all the typical booking.","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"cyqjoseph"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"cyqjoseph"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"cyqjoseph"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"cyqjoseph"},"content":" for (Booking booking : getTypicalBooking()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"cyqjoseph"},"content":" ab.addBooking(booking);","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"cyqjoseph"},"content":" return ab;","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"cyqjoseph"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"cyqjoseph"},"content":" public static List\u003cBooking\u003e getTypicalBooking() {","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"cyqjoseph"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"cyqjoseph"},"content":" CS1231_CONSULT, CS2101_CONSULT, CS2103T_CONSULT, CS2109S_CONSULT,","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"cyqjoseph"},"content":" GENERIC_BOOKING));","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"cyqjoseph"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"cyqjoseph"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"cyqjoseph":67}},{"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":"ChrysanthemumT"},"content":" .withPhone(\"94351253\").withImage().build();","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10"},{"lineNumber":30,"author":{"gitId":"-"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2017-09-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2017-04-05"},{"lineNumber":32,"author":{"gitId":"ChrysanthemumT"},"content":" .withTags(\"owesMoney\", \"friends\").withImage().build();","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2018-01-10"},{"lineNumber":34,"author":{"gitId":"ChrysanthemumT"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\").withImage().build();","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2018-01-10"},{"lineNumber":36,"author":{"gitId":"ChrysanthemumT"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\").withTags(\"friends\").withImage().build();","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2018-01-10"},{"lineNumber":38,"author":{"gitId":"ChrysanthemumT"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\").withImage().build();","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2018-01-10"},{"lineNumber":40,"author":{"gitId":"ChrysanthemumT"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\").withImage().build();","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2018-01-10"},{"lineNumber":42,"author":{"gitId":"ChrysanthemumT"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\").withImage().build();","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2018-01-10"},{"lineNumber":46,"author":{"gitId":"ChrysanthemumT"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\").withImage().build();","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2018-01-10"},{"lineNumber":48,"author":{"gitId":"ChrysanthemumT"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\").withImage().build();","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2018-01-10"},{"lineNumber":52,"author":{"gitId":"ChrysanthemumT"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withTags(VALID_TAG_FRIEND).withImage().build();","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2018-01-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2017-09-21"},{"lineNumber":55,"author":{"gitId":"ChrysanthemumT"},"content":" .withImage().build();","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10"},{"lineNumber":67,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04"},{"lineNumber":75,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13"}],"authorContributionMap":{"ChrysanthemumT":11,"-":64}}] diff --git a/AY2324S2-CS2103T-W11-3_tp_master/commits.json b/AY2324S2-CS2103T-W11-3_tp_master/commits.json index be0da382..6d4b3e73 100644 --- a/AY2324S2-CS2103T-W11-3_tp_master/commits.json +++ b/AY2324S2-CS2103T-W11-3_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"jerremyng":[{"date":"2024-02-28","commitResults":[{"hash":"889511ed05a964435dfd3136f40f69c0754f3c92","isMergeCommit":false,"messageTitle":"Add personal details of Jerremy: closes #7","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}}]},{"date":"2024-03-06","commitResults":[{"hash":"0be56d89dfdaa89ee2c315fe5c042dd8a16709a7","isMergeCommit":false,"messageTitle":"Update site headers to match project name","messageBody":"Fixes #20\n","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"a786a61018d003572d4b6158fe860f658bb89c1f","isMergeCommit":true,"messageTitle":"Merge pull request #25 from ChrysanthemumT/master","messageBody":"Update DG user stories","fileTypesAndContributionMap":{}},{"hash":"636a59196a4b49c23a42f40e7c0ace56e9d7569d","isMergeCommit":false,"messageTitle":"Update product scope in the docs","messageBody":"Fixes #28\n","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":4}}}]},{"date":"2024-03-10","commitResults":[{"hash":"e43e33de11c1b93d4dafd2fdec1eb34286cf4f0b","isMergeCommit":false,"messageTitle":"Add BookCommand class","messageBody":"Closes #41 and creates the BookCommand class and its dependencies to be used in other parts of the code.\n\nTODOS:\nflesh out Booking class\nfix up Messages.format(Booking)\nimplement ModelManager.addBooking() method\n","fileTypesAndContributionMap":{"functional-code":{"insertions":69,"deletions":0}}},{"hash":"da81e6ba240ba9f524093f1bbfe49696a671b260","isMergeCommit":false,"messageTitle":"Fix checkstyle violations and update testing stub","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":6},"test-code":{"insertions":6,"deletions":0}}}]},{"date":"2024-03-12","commitResults":[{"hash":"92b6acb4691876b295783f18aa753b09af50d7f1","isMergeCommit":false,"messageTitle":"Integrate booking parser into AB3 and some code quality improvements","messageBody":"Closes #55\nFixed checkstyle violations as well as removed duplication BookCommand class.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":62,"deletions":122},"other":{"insertions":9,"deletions":8}}}]},{"date":"2024-03-18","commitResults":[{"hash":"ba2534923e7926d088789eb8bcaf44149131e256","isMergeCommit":true,"messageTitle":"Merge pull request #63 from cyqjoseph/branch-storage-v2","messageBody":"Add Permanent Storage for Bookings ","fileTypesAndContributionMap":{}},{"hash":"e5c96c182442dd1f8c1e06b5273b600f066344f5","isMergeCommit":false,"messageTitle":"Fix help message to show correct user guide","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"b62134ef7b4ad36a7fb638ef3e84e191fa4666fa","isMergeCommit":false,"messageTitle":"Improve parser to be more intuitive","messageBody":"Change flags to use -n format so that it follows CLI conventions. Also rework help messages to make it clearer.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":44,"deletions":50}}},{"hash":"861af0228e473c0ef7d6ec76c1aeef88f4a892b4","isMergeCommit":false,"messageTitle":"Allow null values when adding new person","messageBody":"New people have to have all their values filled in. This is often not the case in real life.\n\nThis commit updates the relevant code to allow for new people to be put in with null parameters.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":43,"deletions":33}}},{"hash":"8d2819edfca6502e85d4a5276c722087853e80d4","isMergeCommit":true,"messageTitle":"Merge pull request #59 from ChrysanthemumT/add-rating","messageBody":"Add rating","fileTypesAndContributionMap":{}},{"hash":"df858c03957fce5e7da2947f99b759cc90a768f4","isMergeCommit":false,"messageTitle":"Fix text cases to allow for null values in making new persons","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":10},"test-code":{"insertions":7,"deletions":78}}},{"hash":"d7d44d4b7d1ae53974282d9fdd2ce54ebd8099e4","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into expand-parser-formats","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"41ac429787bbd6fbc671b16c198508e81a95b7d6","isMergeCommit":false,"messageTitle":"Fix some checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":0}}},{"hash":"1ae922a8c8dd31a305c9de668af7ef13fa6cf83f","isMergeCommit":true,"messageTitle":"Merge pull request #72 from gauravuj/branch-MainWindowUI","messageBody":"Improve UI and add Booking List Card and Panel","fileTypesAndContributionMap":{}}]},{"date":"2024-03-19","commitResults":[{"hash":"1e5a9ab64a94fa98c4bda0055c83370d5a8c53f4","isMergeCommit":true,"messageTitle":"Merge pull request #69 from cyqjoseph/branch-PlantUML-DG","messageBody":"Modify UML diagram for StorageClassDiagram.puml","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"b1f9da57cadb2099e7f90499b1b2f0b20f124e8d","isMergeCommit":false,"messageTitle":"Update ModelClass UML diagram to reflect new codebase","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":36,"deletions":26}}},{"hash":"d848ce748c81b85f10c297fdca4cc3a37e24abad","isMergeCommit":false,"messageTitle":"Fix app crash when no datafile/folder","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":3}}}]}],"gauravuj":[{"date":"2024-02-28","commitResults":[{"hash":"8c16bbbce5b5fa9803456bbdd960fbaae7168ae3","isMergeCommit":false,"messageTitle":"Update profile picture and AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}},{"hash":"f38ae1a5b603b04dfa8e8d3a3df70a0a77545eda","isMergeCommit":true,"messageTitle":"Add profile photo","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"600fa91d5c4421c052649ea2074aa101ecb61b3f","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"bd70f241444832224d77e7b42274e7fd7c2c212a","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W11-3:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"eb1f408a80509bf8b3f615c47c7c54bf430c6f85","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-gauravuj-image","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"5c3a552208e964a28b04dbc1c3a862ae7ca00091","isMergeCommit":true,"messageTitle":"Merge pull request #12 from gauravuj/branch-gauravuj-image","messageBody":"Add photo and update AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"7ede7b52f02a9a549418dcca5ecaad8e230a0139","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9e340fc21d63f26d1152ce228784062a03995ec4","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/gauravuj/tp","messageBody":"* \u0027master\u0027 of https://github.com/gauravuj/tp:\n","fileTypesAndContributionMap":{}}]},{"date":"2024-02-29","commitResults":[{"hash":"cad850bc267cb85713a39594bb2cb2d730fb767f","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W11-3:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-03","commitResults":[{"hash":"1c23427e6913b507901776829480d97e6690d550","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-07","commitResults":[{"hash":"f0c0cb3447f740a7aba1e47b4f731e31c23d944b","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027 ]","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"445f1dd9443ca9d0a74a4a8c2a683e4d2a96377a","isMergeCommit":false,"messageTitle":"Update AboutUs role and responsibilities","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":2}}},{"hash":"0ed0a5dfd4044ccffd806a183e4778538ed348ae","isMergeCommit":true,"messageTitle":"Merge pull request #47 from gauravuj/branch-AboutUs","messageBody":"Update About Us Role and Responsibility (Ujjwal Gaurav)","fileTypesAndContributionMap":{}}]},{"date":"2024-03-08","commitResults":[{"hash":"38be624a7381945cb27635378f5ad0111aa9e6ca","isMergeCommit":false,"messageTitle":"change fonts and stylesheets","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":11},"other":{"insertions":8,"deletions":6}}}]},{"date":"2024-03-10","commitResults":[{"hash":"6430dd3aa260d110cea636e32ef3f45c2a7b668e","isMergeCommit":false,"messageTitle":"Rearrange Ui elements of MainWindow","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":151,"deletions":19}}}]},{"date":"2024-03-11","commitResults":[{"hash":"d86b787f9e73918578f87f2faf4bddd1cd0f9506","isMergeCommit":true,"messageTitle":"Merge pull request #49 from jerremyng/branch-BookCommand","messageBody":"Add BookCommand class","fileTypesAndContributionMap":{}},{"hash":"86ceaca2c8a7668d6c0b53c197cb567a3931d402","isMergeCommit":false,"messageTitle":"change fonts and stylesheets","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":11},"other":{"insertions":8,"deletions":6}}},{"hash":"9fe6c47bd1e57b0ddef09d8f72fce3739ed90aef","isMergeCommit":false,"messageTitle":"Rearrange Ui elements of MainWindow","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":151,"deletions":19}}},{"hash":"44f13e4d2694b2376fc90571aedc90c71ab2cbe7","isMergeCommit":false,"messageTitle":"increment changes to the UI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":20}}},{"hash":"94bfb6b9b3319880ec664f586c69065ec06e2885","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-MainWindowUI\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-12","commitResults":[{"hash":"e903e1a1909a088f8671ff8549ecfc1cc03ef594","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-MainWindowUI","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d12e65b40460175252902cc0f76407b35e7b2d3a","isMergeCommit":true,"messageTitle":"Merge from upstream to update branch","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a276d44f928feff8cba59f28361634e8bf8686b6","isMergeCommit":false,"messageTitle":"implement UI to look better as CLI GUI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":45,"deletions":22}}},{"hash":"19a2b73bfc90b61fe5d11d6daa2516c2debd59af","isMergeCommit":true,"messageTitle":"Merge master to update Booking","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-18","commitResults":[{"hash":"23011818c460fa5c2e7a973ab8de328c038d6cdf","isMergeCommit":false,"messageTitle":"Improve UI and add Booking List Card and Panel","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":267,"deletions":73}}}]},{"date":"2024-03-19","commitResults":[{"hash":"15ed8b407365c7c462853404c3d20515d12fedd0","isMergeCommit":false,"messageTitle":"Improve CommandBox to have promptText","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":65,"deletions":3}}},{"hash":"9bc7105cea6886e4aff2ef80acf23a60cb020d63","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"5b7d0eff3a8614476e6b510aa9b583eb505fc11f","isMergeCommit":true,"messageTitle":"Merge pull request #82 from cyqjoseph/branch-fix-clear-command-update-ug","messageBody":"Fix bug in ClearCommand where bookings will also be deleted along with","fileTypesAndContributionMap":{}},{"hash":"001b00cdfef1d108d368a425a1bf97d4488d8e68","isMergeCommit":false,"messageTitle":"Update User Guide for Command Summary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":16,"deletions":5}}},{"hash":"fbdbe662e0061278f341de9326f62316404eae86","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"10b86e9dad26a5ad4c9c2e898fcf6b58c6881780","isMergeCommit":true,"messageTitle":"merge commit","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"53b7298280a73b9c91cdddd7a88d8563acf68732","isMergeCommit":false,"messageTitle":"update to user guide","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":25},"docs":{"insertions":19,"deletions":12}}},{"hash":"1ba23179f0cb02078c733342031fee0bafb23935","isMergeCommit":true,"messageTitle":"merge master","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"7aeb3acfe7edcfe78159e679567a9addc087d9fc","isMergeCommit":true,"messageTitle":"Merge pull request #83 from jerremyng/class-diagram-update","messageBody":"Update ModelClass UML diagram to reflect new codebase","fileTypesAndContributionMap":{}},{"hash":"a397b56c9b4720228686986fb0b8cfe9f270047e","isMergeCommit":true,"messageTitle":"Merge pull request #90 from ChrysanthemumT/add-lighttheme","messageBody":"Add Theme command to change themes","fileTypesAndContributionMap":{}},{"hash":"ecad405ffe63547291d6b5351f43118b73f113ea","isMergeCommit":false,"messageTitle":"Add PlantUML diagram for Ui Component","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":0}}},{"hash":"9f145cedc7d353cf8b6901c469b028a887680bb9","isMergeCommit":true,"messageTitle":"Merge pull request #89 from cyqjoseph/branch-test-merge","messageBody":"Modify UserGuide to include Booking as well as added test images","tags":["v1.2"],"fileTypesAndContributionMap":{}}]}],"cyqjoseph":[{"date":"2024-02-28","commitResults":[{"hash":"f94fc1241549f9c67be3d7dfe0d7a2933c8de8ab","isMergeCommit":true,"messageTitle":"Merge pull request #13 from jerremyng/branch-Jerremy-Details","messageBody":"Add personal details of Jerremy: closes #7","fileTypesAndContributionMap":{}},{"hash":"8ff44952dca0a88517c34e6aafe9f2e897e32c85","isMergeCommit":false,"messageTitle":"Edit Aboutus.md close #15","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":12}}}]},{"date":"2024-02-29","commitResults":[{"hash":"aa26a1159de9f17b4755f3b4f6d26d5cc1122d87","isMergeCommit":true,"messageTitle":"Merge pull request #21 from zhenghuil/zh-aboutus close #18","messageBody":"Zh aboutus","fileTypesAndContributionMap":{}}]},{"date":"2024-03-04","commitResults":[{"hash":"603b78d973c2cbf3e413023763a2d5377d32d7d4","isMergeCommit":false,"messageTitle":"Update first iteration of README.md to describe the product. clear #19","messageBody":"Remove details related to previous AddressBook-Level3 and replace with\ngroup product details.\n","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":9}}},{"hash":"910cce7702d727a385768a5bf38331d1848a8d9d","isMergeCommit":true,"messageTitle":"Merge pull request #22 from cyqjoseph/branch-update-README-v1","messageBody":"Update first iteration of README.md to describe the product. clear #19","fileTypesAndContributionMap":{}}]},{"date":"2024-03-06","commitResults":[{"hash":"6bb24161484d0055b2fa083c2cad43ea9bee406c","isMergeCommit":false,"messageTitle":"Update config.yml to point website link to correct location.","messageBody":"Update index.md to contain correct information\n\nUpdate AboutUs.md for responsibilities\n","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":6}}},{"hash":"89ed0618d7031ceeb91f98114c89cc475005a5cb","isMergeCommit":true,"messageTitle":"Merge pull request #27 from jerremyng/branch-Fix-Docs-Header","messageBody":"Update site headers to match project name","fileTypesAndContributionMap":{}},{"hash":"a95f36dc79ced0ef2f2ef1445059d80866700f39","isMergeCommit":true,"messageTitle":"Merge pull request #29 from jerremyng/branch-Product-Scope-Docs","messageBody":"Update product scope in the docs","fileTypesAndContributionMap":{}},{"hash":"3f5dd85bcfe62053a499a9be88f8577f4f3773f8","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-modify-configyml","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-07","commitResults":[{"hash":"cd2f72bd8db7351fa5fe6348eca48161bf82af6c","isMergeCommit":false,"messageTitle":"docs: Add NFRs and use cases to Developer Guide","messageBody":"- Included detailed Non-Functional Requirements focusing on performance,\n scalability, and logging.\n- Add comprehensive use cases for booking system operations, including\n booking, viewing and cancelling consultations.\n","fileTypesAndContributionMap":{"docs":{"insertions":188,"deletions":36}}}]},{"date":"2024-03-11","commitResults":[{"hash":"dffa91444d30a5b3ab7b18045f344c3d24645068","isMergeCommit":false,"messageTitle":"Implement addBooking feature for managing booking entities","messageBody":"This commit introduces the ability to add new booking with attributes\nname, start time and end time. It includes the creation of the Booking\nmodel class, AddBookingCommand, AddBookingCommandParser, and necessary\nmodifications to the Model and Logic components to support booking\nmanagement.\n\nBooking addition for ModelManager not implemented yet.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":175,"deletions":2}}},{"hash":"c1cee045bb3dd97f182e3af1d3620f5d72599796","isMergeCommit":false,"messageTitle":"This commit introduces the ability to add new booking with attributes name, start time and end time. It includes the creation of the Booking model class, AddBookingCommand, AddBookingCommandParser, and necessary modifications to the Model and Logic components to support booking management.","messageBody":"Booking addition for ModelManager not implemented yet.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":297,"deletions":52}}},{"hash":"c2fa8372c3f81401df0d59014d122dfcf6727da2","isMergeCommit":true,"messageTitle":"Merge pull request #50 from ChrysanthemumT/add-unique-booking","messageBody":"Add Unique Booking List and Booking Class","fileTypesAndContributionMap":{}}]},{"date":"2024-03-12","commitResults":[{"hash":"d3ef1fa4a5a899caf3602d3c8de4230f3709340c","isMergeCommit":false,"messageTitle":"Fix incorrect function name in formatBooking in Model.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"aa4eab2b7980e512ef8f03c530b993c2f1c71381","isMergeCommit":true,"messageTitle":"Merge pull request #54 from cyqjoseph/fix-add-booking","messageBody":"Fix incorrect function name in formatBooking in Model.java","fileTypesAndContributionMap":{}},{"hash":"3f35d03af11badb56d440360115de2cdd3ae5a24","isMergeCommit":true,"messageTitle":"Merge pull request #56 from jerremyng/duplicate-bookCommand-fix","messageBody":"Integrate booking parser into AB3 and some code quality improvements","fileTypesAndContributionMap":{}},{"hash":"4c4db660adaa6ce5868aaf3fa9078f20e84500c8","isMergeCommit":true,"messageTitle":"Merge pull request #58 from gauravuj/branch-MainWindowUI","messageBody":"Implement overall UI and redefine structure","fileTypesAndContributionMap":{}}]},{"date":"2024-03-14","commitResults":[{"hash":"79758204eaac191f11ea7cf50a0ad3fcac2d046c","isMergeCommit":false,"messageTitle":"Rename BookingName to Description for distincition between Person and Booking.","messageBody":"Added skeleton for JsonAdaptedBooking\n","fileTypesAndContributionMap":{"functional-code":{"insertions":108,"deletions":20},"other":{"insertions":14,"deletions":14}}},{"hash":"f3b49872d56ea067a82cd782eb106dc52eef4609","isMergeCommit":false,"messageTitle":"Removed unnecessary comments and reordered import statements","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":13}}},{"hash":"a4ccca9e1c384a47a6b0b99592372df014b46d83","isMergeCommit":false,"messageTitle":"Fixed import statements order in TerminalWindow","messageBody":"Added JavaDoc for TerminalCommand#\n","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":1}}},{"hash":"00240c7d274cfb3e6be94f0ba38fb230abe412b8","isMergeCommit":true,"messageTitle":"Merge pull request #61 from cyqjoseph/change-BookingName-class","messageBody":"Change booking name class","fileTypesAndContributionMap":{}}]},{"date":"2024-03-17","commitResults":[{"hash":"e0ec2591b018464433b51c0253c28cbe7727eb5a","isMergeCommit":false,"messageTitle":"Add Permanent Storage for Bookings","messageBody":"Modify ReadOnlyAddressBook in model to accomodate this change\n","fileTypesAndContributionMap":{"functional-code":{"insertions":61,"deletions":4}}},{"hash":"3555e161579608cbffe0b61ca71cdb072a491711","isMergeCommit":false,"messageTitle":"Added JavaDoc for addBooking and hasBooking in AddressBook","messageBody":"Remove trailing whitespace in JsonSerializableAddressBook\n","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":1}}},{"hash":"89455c9596a773a5186bf3ac50ae437d4b06b6cc","isMergeCommit":true,"messageTitle":"Merge pull request #62 from ChrysanthemumT/bookinglistToPerson","messageBody":"Fix addressbook to use bookinglist","fileTypesAndContributionMap":{}},{"hash":"4ba0a9ccd90e134cd1056efe664494db5b664a98","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027 into branch-storage-v2","messageBody":"Resolved merge conflicts with upstream/master branch\n\nRemoved duplicate code\n","fileTypesAndContributionMap":{}},{"hash":"642ffe6a10d2004a3dffcb753b3e218449327c63","isMergeCommit":false,"messageTitle":"Removed unnecessary imports","messageBody":"Resolve merge conflicts with upstream/master\n","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":3}}},{"hash":"ca4e7bef7dd66b6f5be55416c0218bc3882aafe5","isMergeCommit":false,"messageTitle":"Removed unnecessary imports from past merge","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2}}},{"hash":"9794f797bcfc27f4f2c0a870c31fb9963ad0b6db","isMergeCommit":false,"messageTitle":"Resolved checkstyle issues","messageBody":"Implemented abstract method in AddressBookTest which caused previous\nbuilds to fail\n","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":2},"test-code":{"insertions":7,"deletions":0}}},{"hash":"a724f7691c2330c73840a160a2bc4e778f094f81","isMergeCommit":false,"messageTitle":"Change hashCode function in AddressBook to pass test cases","messageBody":"Gradle test cases were failing when equals and hashCode methods were\nmodified to include bookings list. Reverted to just include persons\nonly.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":2},"test-code":{"insertions":3,"deletions":1}}},{"hash":"e8c917fd5e962b9992980320e1cf90922d423abe","isMergeCommit":false,"messageTitle":"Cleanup imports and unnecessary comments from past commit","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":3}}},{"hash":"871ddbedd05050abfdc780f3e6460b662a30a4a6","isMergeCommit":false,"messageTitle":"Fixed checkstyle error in AddressBookTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":3}}},{"hash":"b4626bb4597927bff7340684d8a6a6b229c8f11c","isMergeCommit":false,"messageTitle":"Add new test cases for Booking.","messageBody":"Major change include changing the format of DateTime, previously\nyyyy-M-dTHH:mm was used but now changed to yyyy-M-d HH:mm to make it\nmore user-friendly and easier to parse.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":29,"deletions":6},"test-code":{"insertions":155,"deletions":0}}},{"hash":"b92280d520573d35dba38020f8f8fb817e06300e","isMergeCommit":false,"messageTitle":"Fix minor checkstyle issues.","messageBody":"Refer to previous commit to see what was added\n","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":3}}}]},{"date":"2024-03-18","commitResults":[{"hash":"45e4129917258b505088486e0b7b811d814754bc","isMergeCommit":true,"messageTitle":"Merge pull request #66 from jerremyng/help-url-fix","messageBody":"Fix help message to show correct user guide","fileTypesAndContributionMap":{}},{"hash":"08e372f17c113070be7689c96dbf9cb400968371","isMergeCommit":false,"messageTitle":"Modify UML diagram for StorageClassDiagram.puml","messageBody":"Update DeveloperGuide to include this\n","fileTypesAndContributionMap":{"docs":{"insertions":21,"deletions":19}}},{"hash":"0becf1eac57c5b6f8b73c008ec53d6a1445b4288","isMergeCommit":false,"messageTitle":"Add Booking to ModelClassDiagram.puml","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":16,"deletions":0}}},{"hash":"ed9604a4ec82de4cfa8643cde471192e9fa280ac","isMergeCommit":true,"messageTitle":"Merge pull request #71 from jerremyng/expand-parser-formats","messageBody":"Expand parser formats","fileTypesAndContributionMap":{}}]},{"date":"2024-03-19","commitResults":[{"hash":"9a23ef18bac8459169943ac3098c01df47c2f57c","isMergeCommit":false,"messageTitle":"Cleanup checkstyle issues","messageBody":"Add more test cases to BookCommand for code coverage.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":12},"test-code":{"insertions":175,"deletions":0}}},{"hash":"10c535baf6bd1f2c87f31b6e6738335940f68591","isMergeCommit":false,"messageTitle":"Add more test cases for Rating.","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":33,"deletions":2},"test-code":{"insertions":51,"deletions":0}}},{"hash":"3d87d3d17182e4577ed85db6ec57dc11b59761c8","isMergeCommit":false,"messageTitle":"Add test cases for Description","messageBody":"Change isValidName to isValidDescription in Description.java\n","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":3},"test-code":{"insertions":49,"deletions":0}}},{"hash":"9c7d833702064d572c624dcc2bacfb88f900be27","isMergeCommit":false,"messageTitle":"Add test cases for StartTime and EndTime","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":98,"deletions":5}}},{"hash":"c472b3e5a9622985fdad15aea17d03ca57a4f622","isMergeCommit":false,"messageTitle":"Fix minor comment messages","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":0},"test-code":{"insertions":3,"deletions":3}}},{"hash":"bd56d81fe24a94151716adf6c5f746b29d73ce8f","isMergeCommit":false,"messageTitle":"Fix import statement order","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"7e313608d456c7fac39c5570f3691cb6c0bf76a7","isMergeCommit":false,"messageTitle":"Fix bug in ClearCommand where bookings will also be deleted along with contacts.","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":1},"docs":{"insertions":9,"deletions":9}}},{"hash":"553637c1616ea8ae1279009f4eb7cfdfab03b416","isMergeCommit":false,"messageTitle":"Change import order","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-20","commitResults":[{"hash":"39f24aafd9cd5370c41fe54622c493bfce78af20","isMergeCommit":true,"messageTitle":"Merge pull request #81 from zhenghuil/add-cancel-command","messageBody":"Add cancel command","fileTypesAndContributionMap":{}},{"hash":"e1ef13475b945e6015acb7031919772e2c0deadb","isMergeCommit":true,"messageTitle":"Merge pull request #86 from jerremyng/storage-hotfix","messageBody":"Fix app crash when no datafile/folder","fileTypesAndContributionMap":{}},{"hash":"ec84afbd394dbb181a6d5521fb3285cbb1396763","isMergeCommit":true,"messageTitle":"Merge pull request #88 from gauravuj/branch-UserGuide","messageBody":"User Guide Update: Command Summary and Introduction","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"ed6c62dcd1e35d759e6fa72086c5b48b01d8a4da","isMergeCommit":true,"messageTitle":"Merge pull request #87 from ChrysanthemumT/update-ug","messageBody":"Add new ui.png clear #78 ","fileTypesAndContributionMap":{}},{"hash":"c3e40df1e5a12be0b3af4f3dca4b68818a424527","isMergeCommit":false,"messageTitle":"Test commit to see if build checks are passed with gradle.","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":20,"deletions":20}}},{"hash":"50bb412c94cca4f6aba9e3be7a0a69f6774cbb65","isMergeCommit":false,"messageTitle":"Update UserGuide to include Booking features","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":49,"deletions":23}}},{"hash":"88928cbf72f8997b4b257b9295632c70e8a9466c","isMergeCommit":true,"messageTitle":"Merge pull request #93 from gauravuj/branch-UMLDiagrams","messageBody":"Update UML diagram for Ui Component","fileTypesAndContributionMap":{}}]},{"date":"2024-03-22","commitResults":[{"hash":"fca405e046c7085adf5b5ba325686e08bfcfb7ec","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]}],"ChrysanthemumT":[{"date":"2024-02-28","commitResults":[{"hash":"3b944bac6abcf457ad7544d191b77bf8a3e3ff2f","isMergeCommit":true,"messageTitle":"Merge pull request #14 from ChrysanthemumT/add-ui-mockup","messageBody":"Add ui mockup closes #4","fileTypesAndContributionMap":{}},{"hash":"9b8d069a24967fa8a6a29a419bec8e4fef6b8450","isMergeCommit":true,"messageTitle":"Merge pull request #16 from cyqjoseph/branch-edit-aboutus","messageBody":"Edit Aboutus.md close #15","fileTypesAndContributionMap":{}}]},{"date":"2024-03-05","commitResults":[{"hash":"e5643daa401f08272cfb3e3ec0482d41baf9174d","isMergeCommit":false,"messageTitle":"Update DG user stories","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":18,"deletions":7}}}]},{"date":"2024-03-06","commitResults":[{"hash":"064a7a2502022569f41b9c272ea6a922f187ccc8","isMergeCommit":true,"messageTitle":"Merge pull request #31 from cyqjoseph/branch-modify-configyml","messageBody":"Update config.yml to point website link to correct location.","fileTypesAndContributionMap":{}}]},{"date":"2024-03-07","commitResults":[{"hash":"73d7f9515a76116e658da5c688d6a18ec535ffdc","isMergeCommit":true,"messageTitle":"Merge pull request #33 from cyqjoseph/branch-updatedevguide","messageBody":"docs: Add NFRs and use cases to Developer Guide","fileTypesAndContributionMap":{}}]},{"date":"2024-03-11","commitResults":[{"hash":"0cad17b51ac7e27ac168965fdd19aff6fc4e513d","isMergeCommit":false,"messageTitle":"Add Unique Booking List and Booking Class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":177,"deletions":0}}},{"hash":"f714df0b781e417397dfaee9aca1c568dac03238","isMergeCommit":false,"messageTitle":"Delete Remark Class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":59}}},{"hash":"8636713889838330bb284d36592bc0e8ba7aaed1","isMergeCommit":false,"messageTitle":"Fix bug with remarkclass","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"dff0df751b73615f3ddaf7fc2faff572b1ace816","isMergeCommit":false,"messageTitle":"Fix Checkstyle and refactor to booking","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":104,"deletions":63},"other":{"insertions":47,"deletions":5}}},{"hash":"2203a799d71eb507d1311b9a59bfe5047f72a745","isMergeCommit":true,"messageTitle":"Merge pull request #52 from cyqjoseph/branch-add-booking-command-v1","messageBody":"Branch add booking command v1","fileTypesAndContributionMap":{}},{"hash":"b53396d0d8f6093896003c3041ac35a6f5ba481b","isMergeCommit":false,"messageTitle":"Delete Booking","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":110}}},{"hash":"649a59f99d365d9b2708b098ac6ea397443fd765","isMergeCommit":true,"messageTitle":"Merge Booking Class","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-12","commitResults":[{"hash":"ed7fe00172fabc485a4cdb32527f8533df7aff21","isMergeCommit":false,"messageTitle":"Add rating","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":28,"deletions":1}}},{"hash":"a485ad4ae07d2e1a88d621ac529eec8a9952c457","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-rating","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d6220db12acab627e04f49c4e42dadfe6f0289cf","isMergeCommit":false,"messageTitle":"Add rating for person","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-16","commitResults":[{"hash":"be89f84e0681889edd7ee3b8c86508d855383efe","isMergeCommit":false,"messageTitle":"Fix addressbook to use bookinglist","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":79,"deletions":4}}}]},{"date":"2024-03-18","commitResults":[{"hash":"0d32a01074a852396bf88010aadff6fc41a61b04","isMergeCommit":false,"messageTitle":"Remove rating constructor in name","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2}}},{"hash":"06cffb3137073b0a2a06a90603d59a1fb8a97390","isMergeCommit":false,"messageTitle":"Add Default Image","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":17,"deletions":0}}}]},{"date":"2024-03-19","commitResults":[{"hash":"1c9befea358f29ee9151e5fb269d66cb7de106c1","isMergeCommit":false,"messageTitle":"Add pictures","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":64,"deletions":33},"other":{"insertions":9,"deletions":4}}},{"hash":"b9d73ef518108d847429d50b95715d59b9e58d3b","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-W11-3/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"699f1b8c0fc758871a14708a27d2d53059e3d868","isMergeCommit":false,"messageTitle":"Center and Cirlce the image","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":1}}},{"hash":"d0e8cdc7eec23368e036dadad50faf59bf89b9e6","isMergeCommit":true,"messageTitle":"Merge pull request #73 from cyqjoseph/branch-checkstyle-cleanup","messageBody":"Cleanup checkstyle issues","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"1801fbe85e206e3752e0ccb9fc1f3764d8d44683","isMergeCommit":false,"messageTitle":"Fix bugs with tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":353,"deletions":22},"test-code":{"insertions":22,"deletions":11}}},{"hash":"4a4c5e6598f91b1c89dc3bfffa448627b504e985","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-W11-3/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"5d8dd6a3a7c2f09e712e239f49f533572ac0dea8","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-imageclass","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"39bb664d6416f80e44bf65472dd82aa8312948a6","isMergeCommit":false,"messageTitle":"Add newline add EOF lighttheme","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"01f3640673a1d996a3b90874db9dcee497035e33","isMergeCommit":true,"messageTitle":"Merge pull request #74 from ChrysanthemumT/add-imageclass","messageBody":"Add imageclass","fileTypesAndContributionMap":{}},{"hash":"03059812c9e97965990b9dc7dfb088108aedd9b6","isMergeCommit":false,"messageTitle":"Add new ui.png","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-21","commitResults":[{"hash":"00b8776e613f4f63f533a6c5e233c7c7cd722301","isMergeCommit":false,"messageTitle":"Add Theme command to change themes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":215,"deletions":8}}}]}],"zhenghuil":[{"date":"2024-02-28","commitResults":[{"hash":"1c333bd8150873f1da98850649df2f6b5db04956","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/zhenghuil/tp","messageBody":"* \u0027master\u0027 of https://github.com/zhenghuil/tp:\n Edit Aboutus.md close #15\n Add ui mockup closes #4\n Add personal details of Jerremy: closes #7\n Update profile picture and AboutUs.md\n Add phot closes #10\n","fileTypesAndContributionMap":{}},{"hash":"67c7a6910d80b48cf10e8a9f930119384ab0edf3","isMergeCommit":false,"messageTitle":"Add zhenghuil.png Add personal details in AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":5}}},{"hash":"6830c51bd88a5ce0050745512d6b791f9b352cf9","isMergeCommit":false,"messageTitle":"Add zhenghuil.png Add personal details in AboutUs.md closes #18","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":5}}}]},{"date":"2024-03-19","commitResults":[{"hash":"43a77a1e35305a3407cca648563e9d4a1db389c2","isMergeCommit":false,"messageTitle":"Add CancelCommand class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":0}}},{"hash":"46a815ef9d17dd1e26dadec528b5996dc31011bb","isMergeCommit":false,"messageTitle":"Add CancelCommand class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":61,"deletions":1}}},{"hash":"e00fc8a80101da4252367a3683f6158856206693","isMergeCommit":false,"messageTitle":"Add invalid booking index message in Messages","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"e50689435467027fecfa040751cd16fff74e2995","isMergeCommit":false,"messageTitle":"Add cancelBooking method in ModelManager and Model","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":0}}},{"hash":"b8c7a890a78cf5aa4399f178807299e48fbd9e7f","isMergeCommit":false,"messageTitle":"Add CancelCommandParser class Add CancelCommand case in AddressBookParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":33,"deletions":0}}},{"hash":"d22c86383118fc4648af5a516f2d1eb20b4fdb4b","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-cancel-command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"aa69a3fce91749a6829b01d4ced9ef79bf9fac1c","isMergeCommit":false,"messageTitle":"no message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2}}},{"hash":"83bacea59e788729597486a796c8131ec53f2884","isMergeCommit":false,"messageTitle":"Update checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":8}}},{"hash":"952216109837657d23c7e1b758c7d6f97f1f88c4","isMergeCommit":false,"messageTitle":"Add cancelBooking method for modelstub in AddCommandTest and BookCommandTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":10,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"jerremyng":{"docs":47,"functional-code":217,"test-code":12,"other":1},"gauravuj":{"docs":33,"functional-code":494,"test-code":0},"cyqjoseph":{"docs":243,"functional-code":530,"test-code":536},"ChrysanthemumT":{"docs":11,"functional-code":772,"test-code":22},"zhenghuil":{"docs":3,"functional-code":107,"test-code":10}},"authorContributionVariance":{"jerremyng":4018.854,"gauravuj":6524.37,"cyqjoseph":20281.148,"ChrysanthemumT":16789.475,"zhenghuil":665.0701},"authorDisplayNameMap":{"jerremyng":"CS2103T-W11-3 JERR.. JIE","gauravuj":"CS2103T-W11-3 UJJW..URAV","cyqjoseph":"CS2103T-W11-3 CHAN..SEPH","ChrysanthemumT":"CS2103T-W11-3 WANG..HONG","zhenghuil":"CS2103T-W11-3 LOW .. HUI"}} +{"authorDailyContributionsMap":{"jerremyng":[{"date":"2024-02-28","commitResults":[{"hash":"889511ed05a964435dfd3136f40f69c0754f3c92","isMergeCommit":false,"messageTitle":"Add personal details of Jerremy: closes #7","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}}]},{"date":"2024-03-06","commitResults":[{"hash":"0be56d89dfdaa89ee2c315fe5c042dd8a16709a7","isMergeCommit":false,"messageTitle":"Update site headers to match project name","messageBody":"Fixes #20\n","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"a786a61018d003572d4b6158fe860f658bb89c1f","isMergeCommit":true,"messageTitle":"Merge pull request #25 from ChrysanthemumT/master","messageBody":"Update DG user stories","fileTypesAndContributionMap":{}},{"hash":"636a59196a4b49c23a42f40e7c0ace56e9d7569d","isMergeCommit":false,"messageTitle":"Update product scope in the docs","messageBody":"Fixes #28\n","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":4}}}]},{"date":"2024-03-10","commitResults":[{"hash":"e43e33de11c1b93d4dafd2fdec1eb34286cf4f0b","isMergeCommit":false,"messageTitle":"Add BookCommand class","messageBody":"Closes #41 and creates the BookCommand class and its dependencies to be used in other parts of the code.\n\nTODOS:\nflesh out Booking class\nfix up Messages.format(Booking)\nimplement ModelManager.addBooking() method\n","fileTypesAndContributionMap":{"functional-code":{"insertions":69,"deletions":0}}},{"hash":"da81e6ba240ba9f524093f1bbfe49696a671b260","isMergeCommit":false,"messageTitle":"Fix checkstyle violations and update testing stub","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":6},"test-code":{"insertions":6,"deletions":0}}}]},{"date":"2024-03-12","commitResults":[{"hash":"92b6acb4691876b295783f18aa753b09af50d7f1","isMergeCommit":false,"messageTitle":"Integrate booking parser into AB3 and some code quality improvements","messageBody":"Closes #55\nFixed checkstyle violations as well as removed duplication BookCommand class.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":62,"deletions":122},"other":{"insertions":9,"deletions":8}}}]},{"date":"2024-03-18","commitResults":[{"hash":"ba2534923e7926d088789eb8bcaf44149131e256","isMergeCommit":true,"messageTitle":"Merge pull request #63 from cyqjoseph/branch-storage-v2","messageBody":"Add Permanent Storage for Bookings ","fileTypesAndContributionMap":{}},{"hash":"e5c96c182442dd1f8c1e06b5273b600f066344f5","isMergeCommit":false,"messageTitle":"Fix help message to show correct user guide","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"b62134ef7b4ad36a7fb638ef3e84e191fa4666fa","isMergeCommit":false,"messageTitle":"Improve parser to be more intuitive","messageBody":"Change flags to use -n format so that it follows CLI conventions. Also rework help messages to make it clearer.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":44,"deletions":50}}},{"hash":"861af0228e473c0ef7d6ec76c1aeef88f4a892b4","isMergeCommit":false,"messageTitle":"Allow null values when adding new person","messageBody":"New people have to have all their values filled in. This is often not the case in real life.\n\nThis commit updates the relevant code to allow for new people to be put in with null parameters.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":43,"deletions":33}}},{"hash":"8d2819edfca6502e85d4a5276c722087853e80d4","isMergeCommit":true,"messageTitle":"Merge pull request #59 from ChrysanthemumT/add-rating","messageBody":"Add rating","fileTypesAndContributionMap":{}},{"hash":"df858c03957fce5e7da2947f99b759cc90a768f4","isMergeCommit":false,"messageTitle":"Fix text cases to allow for null values in making new persons","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":10},"test-code":{"insertions":7,"deletions":78}}},{"hash":"d7d44d4b7d1ae53974282d9fdd2ce54ebd8099e4","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into expand-parser-formats","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"41ac429787bbd6fbc671b16c198508e81a95b7d6","isMergeCommit":false,"messageTitle":"Fix some checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":0}}},{"hash":"1ae922a8c8dd31a305c9de668af7ef13fa6cf83f","isMergeCommit":true,"messageTitle":"Merge pull request #72 from gauravuj/branch-MainWindowUI","messageBody":"Improve UI and add Booking List Card and Panel","fileTypesAndContributionMap":{}}]},{"date":"2024-03-19","commitResults":[{"hash":"1e5a9ab64a94fa98c4bda0055c83370d5a8c53f4","isMergeCommit":true,"messageTitle":"Merge pull request #69 from cyqjoseph/branch-PlantUML-DG","messageBody":"Modify UML diagram for StorageClassDiagram.puml","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"b1f9da57cadb2099e7f90499b1b2f0b20f124e8d","isMergeCommit":false,"messageTitle":"Update ModelClass UML diagram to reflect new codebase","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":36,"deletions":26}}},{"hash":"d848ce748c81b85f10c297fdca4cc3a37e24abad","isMergeCommit":false,"messageTitle":"Fix app crash when no datafile/folder","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":3}}}]},{"date":"2024-03-23","commitResults":[{"hash":"967af2434cecf7b1506e67f85da4ed90d891f9a6","isMergeCommit":false,"messageTitle":"Update landing page","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":2},"docs":{"insertions":8,"deletions":7}}}]},{"date":"2024-03-24","commitResults":[{"hash":"2cc74572a423946396cacd3ece1955f5aed47b4f","isMergeCommit":false,"messageTitle":"Improve table of contents in documentation to become sidebar navigation","messageBody":"This makes navigation easier.\n","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":9}}},{"hash":"77f74d6d68afb37fdf2037f70dcc248de750291d","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into documentation-improvements","messageBody":"","fileTypesAndContributionMap":{}}]}],"gauravuj":[{"date":"2024-02-28","commitResults":[{"hash":"8c16bbbce5b5fa9803456bbdd960fbaae7168ae3","isMergeCommit":false,"messageTitle":"Update profile picture and AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}},{"hash":"f38ae1a5b603b04dfa8e8d3a3df70a0a77545eda","isMergeCommit":true,"messageTitle":"Add profile photo","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"600fa91d5c4421c052649ea2074aa101ecb61b3f","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"bd70f241444832224d77e7b42274e7fd7c2c212a","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W11-3:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"eb1f408a80509bf8b3f615c47c7c54bf430c6f85","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-gauravuj-image","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"5c3a552208e964a28b04dbc1c3a862ae7ca00091","isMergeCommit":true,"messageTitle":"Merge pull request #12 from gauravuj/branch-gauravuj-image","messageBody":"Add photo and update AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"7ede7b52f02a9a549418dcca5ecaad8e230a0139","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9e340fc21d63f26d1152ce228784062a03995ec4","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/gauravuj/tp","messageBody":"* \u0027master\u0027 of https://github.com/gauravuj/tp:\n","fileTypesAndContributionMap":{}}]},{"date":"2024-02-29","commitResults":[{"hash":"cad850bc267cb85713a39594bb2cb2d730fb767f","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W11-3:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-03","commitResults":[{"hash":"1c23427e6913b507901776829480d97e6690d550","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-07","commitResults":[{"hash":"f0c0cb3447f740a7aba1e47b4f731e31c23d944b","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027 ]","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"445f1dd9443ca9d0a74a4a8c2a683e4d2a96377a","isMergeCommit":false,"messageTitle":"Update AboutUs role and responsibilities","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":2}}},{"hash":"0ed0a5dfd4044ccffd806a183e4778538ed348ae","isMergeCommit":true,"messageTitle":"Merge pull request #47 from gauravuj/branch-AboutUs","messageBody":"Update About Us Role and Responsibility (Ujjwal Gaurav)","fileTypesAndContributionMap":{}}]},{"date":"2024-03-08","commitResults":[{"hash":"38be624a7381945cb27635378f5ad0111aa9e6ca","isMergeCommit":false,"messageTitle":"change fonts and stylesheets","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":11},"other":{"insertions":8,"deletions":6}}}]},{"date":"2024-03-10","commitResults":[{"hash":"6430dd3aa260d110cea636e32ef3f45c2a7b668e","isMergeCommit":false,"messageTitle":"Rearrange Ui elements of MainWindow","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":151,"deletions":19}}}]},{"date":"2024-03-11","commitResults":[{"hash":"d86b787f9e73918578f87f2faf4bddd1cd0f9506","isMergeCommit":true,"messageTitle":"Merge pull request #49 from jerremyng/branch-BookCommand","messageBody":"Add BookCommand class","fileTypesAndContributionMap":{}},{"hash":"86ceaca2c8a7668d6c0b53c197cb567a3931d402","isMergeCommit":false,"messageTitle":"change fonts and stylesheets","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":11},"other":{"insertions":8,"deletions":6}}},{"hash":"9fe6c47bd1e57b0ddef09d8f72fce3739ed90aef","isMergeCommit":false,"messageTitle":"Rearrange Ui elements of MainWindow","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":151,"deletions":19}}},{"hash":"44f13e4d2694b2376fc90571aedc90c71ab2cbe7","isMergeCommit":false,"messageTitle":"increment changes to the UI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":20}}},{"hash":"94bfb6b9b3319880ec664f586c69065ec06e2885","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-MainWindowUI\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-12","commitResults":[{"hash":"e903e1a1909a088f8671ff8549ecfc1cc03ef594","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-MainWindowUI","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d12e65b40460175252902cc0f76407b35e7b2d3a","isMergeCommit":true,"messageTitle":"Merge from upstream to update branch","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a276d44f928feff8cba59f28361634e8bf8686b6","isMergeCommit":false,"messageTitle":"implement UI to look better as CLI GUI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":45,"deletions":22}}},{"hash":"19a2b73bfc90b61fe5d11d6daa2516c2debd59af","isMergeCommit":true,"messageTitle":"Merge master to update Booking","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-18","commitResults":[{"hash":"23011818c460fa5c2e7a973ab8de328c038d6cdf","isMergeCommit":false,"messageTitle":"Improve UI and add Booking List Card and Panel","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":267,"deletions":73}}}]},{"date":"2024-03-19","commitResults":[{"hash":"15ed8b407365c7c462853404c3d20515d12fedd0","isMergeCommit":false,"messageTitle":"Improve CommandBox to have promptText","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":65,"deletions":3}}},{"hash":"9bc7105cea6886e4aff2ef80acf23a60cb020d63","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"5b7d0eff3a8614476e6b510aa9b583eb505fc11f","isMergeCommit":true,"messageTitle":"Merge pull request #82 from cyqjoseph/branch-fix-clear-command-update-ug","messageBody":"Fix bug in ClearCommand where bookings will also be deleted along with","fileTypesAndContributionMap":{}},{"hash":"001b00cdfef1d108d368a425a1bf97d4488d8e68","isMergeCommit":false,"messageTitle":"Update User Guide for Command Summary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":16,"deletions":5}}},{"hash":"fbdbe662e0061278f341de9326f62316404eae86","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"10b86e9dad26a5ad4c9c2e898fcf6b58c6881780","isMergeCommit":true,"messageTitle":"merge commit","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"53b7298280a73b9c91cdddd7a88d8563acf68732","isMergeCommit":false,"messageTitle":"update to user guide","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":25},"docs":{"insertions":19,"deletions":12}}},{"hash":"1ba23179f0cb02078c733342031fee0bafb23935","isMergeCommit":true,"messageTitle":"merge master","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"7aeb3acfe7edcfe78159e679567a9addc087d9fc","isMergeCommit":true,"messageTitle":"Merge pull request #83 from jerremyng/class-diagram-update","messageBody":"Update ModelClass UML diagram to reflect new codebase","fileTypesAndContributionMap":{}},{"hash":"a397b56c9b4720228686986fb0b8cfe9f270047e","isMergeCommit":true,"messageTitle":"Merge pull request #90 from ChrysanthemumT/add-lighttheme","messageBody":"Add Theme command to change themes","fileTypesAndContributionMap":{}},{"hash":"ecad405ffe63547291d6b5351f43118b73f113ea","isMergeCommit":false,"messageTitle":"Add PlantUML diagram for Ui Component","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":0}}},{"hash":"9f145cedc7d353cf8b6901c469b028a887680bb9","isMergeCommit":true,"messageTitle":"Merge pull request #89 from cyqjoseph/branch-test-merge","messageBody":"Modify UserGuide to include Booking as well as added test images","tags":["v1.2"],"fileTypesAndContributionMap":{}}]},{"date":"2024-03-24","commitResults":[{"hash":"45f079658b75932e3d0f74204deb9ef56ffbafcb","isMergeCommit":true,"messageTitle":"Merge pull request #94 from cyqjoseph/branch-add-test","messageBody":"Add test coverage to GuiSettings","fileTypesAndContributionMap":{}},{"hash":"fe22cad39419350f077dc41e25537eadeb405d69","isMergeCommit":true,"messageTitle":"Merge pull request #95 from cyqjoseph/branch-implement-search","messageBody":"Implement search functionality for booking","fileTypesAndContributionMap":{}}]}],"cyqjoseph":[{"date":"2024-02-28","commitResults":[{"hash":"f94fc1241549f9c67be3d7dfe0d7a2933c8de8ab","isMergeCommit":true,"messageTitle":"Merge pull request #13 from jerremyng/branch-Jerremy-Details","messageBody":"Add personal details of Jerremy: closes #7","fileTypesAndContributionMap":{}},{"hash":"8ff44952dca0a88517c34e6aafe9f2e897e32c85","isMergeCommit":false,"messageTitle":"Edit Aboutus.md close #15","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":12}}}]},{"date":"2024-02-29","commitResults":[{"hash":"aa26a1159de9f17b4755f3b4f6d26d5cc1122d87","isMergeCommit":true,"messageTitle":"Merge pull request #21 from zhenghuil/zh-aboutus close #18","messageBody":"Zh aboutus","fileTypesAndContributionMap":{}}]},{"date":"2024-03-04","commitResults":[{"hash":"603b78d973c2cbf3e413023763a2d5377d32d7d4","isMergeCommit":false,"messageTitle":"Update first iteration of README.md to describe the product. clear #19","messageBody":"Remove details related to previous AddressBook-Level3 and replace with\ngroup product details.\n","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":9}}},{"hash":"910cce7702d727a385768a5bf38331d1848a8d9d","isMergeCommit":true,"messageTitle":"Merge pull request #22 from cyqjoseph/branch-update-README-v1","messageBody":"Update first iteration of README.md to describe the product. clear #19","fileTypesAndContributionMap":{}}]},{"date":"2024-03-06","commitResults":[{"hash":"6bb24161484d0055b2fa083c2cad43ea9bee406c","isMergeCommit":false,"messageTitle":"Update config.yml to point website link to correct location.","messageBody":"Update index.md to contain correct information\n\nUpdate AboutUs.md for responsibilities\n","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":6}}},{"hash":"89ed0618d7031ceeb91f98114c89cc475005a5cb","isMergeCommit":true,"messageTitle":"Merge pull request #27 from jerremyng/branch-Fix-Docs-Header","messageBody":"Update site headers to match project name","fileTypesAndContributionMap":{}},{"hash":"a95f36dc79ced0ef2f2ef1445059d80866700f39","isMergeCommit":true,"messageTitle":"Merge pull request #29 from jerremyng/branch-Product-Scope-Docs","messageBody":"Update product scope in the docs","fileTypesAndContributionMap":{}},{"hash":"3f5dd85bcfe62053a499a9be88f8577f4f3773f8","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-modify-configyml","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-07","commitResults":[{"hash":"cd2f72bd8db7351fa5fe6348eca48161bf82af6c","isMergeCommit":false,"messageTitle":"docs: Add NFRs and use cases to Developer Guide","messageBody":"- Included detailed Non-Functional Requirements focusing on performance,\n scalability, and logging.\n- Add comprehensive use cases for booking system operations, including\n booking, viewing and cancelling consultations.\n","fileTypesAndContributionMap":{"docs":{"insertions":188,"deletions":36}}}]},{"date":"2024-03-11","commitResults":[{"hash":"dffa91444d30a5b3ab7b18045f344c3d24645068","isMergeCommit":false,"messageTitle":"Implement addBooking feature for managing booking entities","messageBody":"This commit introduces the ability to add new booking with attributes\nname, start time and end time. It includes the creation of the Booking\nmodel class, AddBookingCommand, AddBookingCommandParser, and necessary\nmodifications to the Model and Logic components to support booking\nmanagement.\n\nBooking addition for ModelManager not implemented yet.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":175,"deletions":2}}},{"hash":"c1cee045bb3dd97f182e3af1d3620f5d72599796","isMergeCommit":false,"messageTitle":"This commit introduces the ability to add new booking with attributes name, start time and end time. It includes the creation of the Booking model class, AddBookingCommand, AddBookingCommandParser, and necessary modifications to the Model and Logic components to support booking management.","messageBody":"Booking addition for ModelManager not implemented yet.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":297,"deletions":52}}},{"hash":"c2fa8372c3f81401df0d59014d122dfcf6727da2","isMergeCommit":true,"messageTitle":"Merge pull request #50 from ChrysanthemumT/add-unique-booking","messageBody":"Add Unique Booking List and Booking Class","fileTypesAndContributionMap":{}}]},{"date":"2024-03-12","commitResults":[{"hash":"d3ef1fa4a5a899caf3602d3c8de4230f3709340c","isMergeCommit":false,"messageTitle":"Fix incorrect function name in formatBooking in Model.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"aa4eab2b7980e512ef8f03c530b993c2f1c71381","isMergeCommit":true,"messageTitle":"Merge pull request #54 from cyqjoseph/fix-add-booking","messageBody":"Fix incorrect function name in formatBooking in Model.java","fileTypesAndContributionMap":{}},{"hash":"3f35d03af11badb56d440360115de2cdd3ae5a24","isMergeCommit":true,"messageTitle":"Merge pull request #56 from jerremyng/duplicate-bookCommand-fix","messageBody":"Integrate booking parser into AB3 and some code quality improvements","fileTypesAndContributionMap":{}},{"hash":"4c4db660adaa6ce5868aaf3fa9078f20e84500c8","isMergeCommit":true,"messageTitle":"Merge pull request #58 from gauravuj/branch-MainWindowUI","messageBody":"Implement overall UI and redefine structure","fileTypesAndContributionMap":{}}]},{"date":"2024-03-14","commitResults":[{"hash":"79758204eaac191f11ea7cf50a0ad3fcac2d046c","isMergeCommit":false,"messageTitle":"Rename BookingName to Description for distincition between Person and Booking.","messageBody":"Added skeleton for JsonAdaptedBooking\n","fileTypesAndContributionMap":{"functional-code":{"insertions":108,"deletions":20},"other":{"insertions":14,"deletions":14}}},{"hash":"f3b49872d56ea067a82cd782eb106dc52eef4609","isMergeCommit":false,"messageTitle":"Removed unnecessary comments and reordered import statements","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":13}}},{"hash":"a4ccca9e1c384a47a6b0b99592372df014b46d83","isMergeCommit":false,"messageTitle":"Fixed import statements order in TerminalWindow","messageBody":"Added JavaDoc for TerminalCommand#\n","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":1}}},{"hash":"00240c7d274cfb3e6be94f0ba38fb230abe412b8","isMergeCommit":true,"messageTitle":"Merge pull request #61 from cyqjoseph/change-BookingName-class","messageBody":"Change booking name class","fileTypesAndContributionMap":{}}]},{"date":"2024-03-17","commitResults":[{"hash":"e0ec2591b018464433b51c0253c28cbe7727eb5a","isMergeCommit":false,"messageTitle":"Add Permanent Storage for Bookings","messageBody":"Modify ReadOnlyAddressBook in model to accomodate this change\n","fileTypesAndContributionMap":{"functional-code":{"insertions":61,"deletions":4}}},{"hash":"3555e161579608cbffe0b61ca71cdb072a491711","isMergeCommit":false,"messageTitle":"Added JavaDoc for addBooking and hasBooking in AddressBook","messageBody":"Remove trailing whitespace in JsonSerializableAddressBook\n","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":1}}},{"hash":"89455c9596a773a5186bf3ac50ae437d4b06b6cc","isMergeCommit":true,"messageTitle":"Merge pull request #62 from ChrysanthemumT/bookinglistToPerson","messageBody":"Fix addressbook to use bookinglist","fileTypesAndContributionMap":{}},{"hash":"4ba0a9ccd90e134cd1056efe664494db5b664a98","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027 into branch-storage-v2","messageBody":"Resolved merge conflicts with upstream/master branch\n\nRemoved duplicate code\n","fileTypesAndContributionMap":{}},{"hash":"642ffe6a10d2004a3dffcb753b3e218449327c63","isMergeCommit":false,"messageTitle":"Removed unnecessary imports","messageBody":"Resolve merge conflicts with upstream/master\n","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":3}}},{"hash":"ca4e7bef7dd66b6f5be55416c0218bc3882aafe5","isMergeCommit":false,"messageTitle":"Removed unnecessary imports from past merge","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2}}},{"hash":"9794f797bcfc27f4f2c0a870c31fb9963ad0b6db","isMergeCommit":false,"messageTitle":"Resolved checkstyle issues","messageBody":"Implemented abstract method in AddressBookTest which caused previous\nbuilds to fail\n","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":2},"test-code":{"insertions":7,"deletions":0}}},{"hash":"a724f7691c2330c73840a160a2bc4e778f094f81","isMergeCommit":false,"messageTitle":"Change hashCode function in AddressBook to pass test cases","messageBody":"Gradle test cases were failing when equals and hashCode methods were\nmodified to include bookings list. Reverted to just include persons\nonly.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":2},"test-code":{"insertions":3,"deletions":1}}},{"hash":"e8c917fd5e962b9992980320e1cf90922d423abe","isMergeCommit":false,"messageTitle":"Cleanup imports and unnecessary comments from past commit","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":3}}},{"hash":"871ddbedd05050abfdc780f3e6460b662a30a4a6","isMergeCommit":false,"messageTitle":"Fixed checkstyle error in AddressBookTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":3}}},{"hash":"b4626bb4597927bff7340684d8a6a6b229c8f11c","isMergeCommit":false,"messageTitle":"Add new test cases for Booking.","messageBody":"Major change include changing the format of DateTime, previously\nyyyy-M-dTHH:mm was used but now changed to yyyy-M-d HH:mm to make it\nmore user-friendly and easier to parse.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":29,"deletions":6},"test-code":{"insertions":155,"deletions":0}}},{"hash":"b92280d520573d35dba38020f8f8fb817e06300e","isMergeCommit":false,"messageTitle":"Fix minor checkstyle issues.","messageBody":"Refer to previous commit to see what was added\n","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":3}}}]},{"date":"2024-03-18","commitResults":[{"hash":"45e4129917258b505088486e0b7b811d814754bc","isMergeCommit":true,"messageTitle":"Merge pull request #66 from jerremyng/help-url-fix","messageBody":"Fix help message to show correct user guide","fileTypesAndContributionMap":{}},{"hash":"08e372f17c113070be7689c96dbf9cb400968371","isMergeCommit":false,"messageTitle":"Modify UML diagram for StorageClassDiagram.puml","messageBody":"Update DeveloperGuide to include this\n","fileTypesAndContributionMap":{"docs":{"insertions":21,"deletions":19}}},{"hash":"0becf1eac57c5b6f8b73c008ec53d6a1445b4288","isMergeCommit":false,"messageTitle":"Add Booking to ModelClassDiagram.puml","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":16,"deletions":0}}},{"hash":"ed9604a4ec82de4cfa8643cde471192e9fa280ac","isMergeCommit":true,"messageTitle":"Merge pull request #71 from jerremyng/expand-parser-formats","messageBody":"Expand parser formats","fileTypesAndContributionMap":{}}]},{"date":"2024-03-19","commitResults":[{"hash":"9a23ef18bac8459169943ac3098c01df47c2f57c","isMergeCommit":false,"messageTitle":"Cleanup checkstyle issues","messageBody":"Add more test cases to BookCommand for code coverage.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":12},"test-code":{"insertions":175,"deletions":0}}},{"hash":"10c535baf6bd1f2c87f31b6e6738335940f68591","isMergeCommit":false,"messageTitle":"Add more test cases for Rating.","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":33,"deletions":2},"test-code":{"insertions":51,"deletions":0}}},{"hash":"3d87d3d17182e4577ed85db6ec57dc11b59761c8","isMergeCommit":false,"messageTitle":"Add test cases for Description","messageBody":"Change isValidName to isValidDescription in Description.java\n","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":3},"test-code":{"insertions":49,"deletions":0}}},{"hash":"9c7d833702064d572c624dcc2bacfb88f900be27","isMergeCommit":false,"messageTitle":"Add test cases for StartTime and EndTime","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":98,"deletions":5}}},{"hash":"c472b3e5a9622985fdad15aea17d03ca57a4f622","isMergeCommit":false,"messageTitle":"Fix minor comment messages","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":0},"test-code":{"insertions":3,"deletions":3}}},{"hash":"bd56d81fe24a94151716adf6c5f746b29d73ce8f","isMergeCommit":false,"messageTitle":"Fix import statement order","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"7e313608d456c7fac39c5570f3691cb6c0bf76a7","isMergeCommit":false,"messageTitle":"Fix bug in ClearCommand where bookings will also be deleted along with contacts.","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":1},"docs":{"insertions":9,"deletions":9}}},{"hash":"553637c1616ea8ae1279009f4eb7cfdfab03b416","isMergeCommit":false,"messageTitle":"Change import order","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-20","commitResults":[{"hash":"39f24aafd9cd5370c41fe54622c493bfce78af20","isMergeCommit":true,"messageTitle":"Merge pull request #81 from zhenghuil/add-cancel-command","messageBody":"Add cancel command","fileTypesAndContributionMap":{}},{"hash":"e1ef13475b945e6015acb7031919772e2c0deadb","isMergeCommit":true,"messageTitle":"Merge pull request #86 from jerremyng/storage-hotfix","messageBody":"Fix app crash when no datafile/folder","fileTypesAndContributionMap":{}},{"hash":"ec84afbd394dbb181a6d5521fb3285cbb1396763","isMergeCommit":true,"messageTitle":"Merge pull request #88 from gauravuj/branch-UserGuide","messageBody":"User Guide Update: Command Summary and Introduction","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"ed6c62dcd1e35d759e6fa72086c5b48b01d8a4da","isMergeCommit":true,"messageTitle":"Merge pull request #87 from ChrysanthemumT/update-ug","messageBody":"Add new ui.png clear #78 ","fileTypesAndContributionMap":{}},{"hash":"c3e40df1e5a12be0b3af4f3dca4b68818a424527","isMergeCommit":false,"messageTitle":"Test commit to see if build checks are passed with gradle.","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":20,"deletions":20}}},{"hash":"50bb412c94cca4f6aba9e3be7a0a69f6774cbb65","isMergeCommit":false,"messageTitle":"Update UserGuide to include Booking features","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":49,"deletions":23}}},{"hash":"88928cbf72f8997b4b257b9295632c70e8a9466c","isMergeCommit":true,"messageTitle":"Merge pull request #93 from gauravuj/branch-UMLDiagrams","messageBody":"Update UML diagram for Ui Component","fileTypesAndContributionMap":{}}]},{"date":"2024-03-22","commitResults":[{"hash":"fca405e046c7085adf5b5ba325686e08bfcfb7ec","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-23","commitResults":[{"hash":"b8f5827c17bb5da1e06b94fb1644671bda198537","isMergeCommit":false,"messageTitle":"Add test coverage to GuiSettings","messageBody":"Removed Default GuiSettings constructors in test files and replace with\na more suitable alternative\n","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1},"test-code":{"insertions":19,"deletions":7}}},{"hash":"542c770f77e97b59b021508c7868683988bd26fd","isMergeCommit":false,"messageTitle":"Add SearchCommand functionality for Bookings","messageBody":"Implement partial match for booking descriptions\n\nTo enhance user experience and search flexibility, the search algorithm\nhas been added to support partial matches. This change allows users to\nfind bookings with descriptions that contains the search keywords.\n\nThis update is expected to significantly improve the usability of the\nsearch feature, making it more intuitive and forgiving, especially in\ncases where exact descriptions are difficult to recall.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":173,"deletions":1},"docs":{"insertions":16,"deletions":3},"test-code":{"insertions":10,"deletions":0}}},{"hash":"1ce2a8f3de60038b3045c58186bc5bb28aa858e6","isMergeCommit":false,"messageTitle":"Enhance test coverage across parsing commands","messageBody":"This commit introduces a suite of additional test cases aimed at\nimproving code coverage for parsing functionalities. By addressing areas\npreviously lacking in testing, we reduce the risk of regressions and\nimprove reliability of command parsing operations\n","fileTypesAndContributionMap":{"test-code":{"insertions":272,"deletions":0}}}]},{"date":"2024-03-24","commitResults":[{"hash":"d5ff05496bfd0fb99b92676f679684da8a882f24","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into documentation-improvements","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"146af29eaac5a5dbbf7abb4bf029efdf74dfd9f4","isMergeCommit":true,"messageTitle":"Merge pull request #96 from jerremyng/documentation-improvements","messageBody":"Documentation improvements","fileTypesAndContributionMap":{}}]}],"ChrysanthemumT":[{"date":"2024-02-28","commitResults":[{"hash":"3b944bac6abcf457ad7544d191b77bf8a3e3ff2f","isMergeCommit":true,"messageTitle":"Merge pull request #14 from ChrysanthemumT/add-ui-mockup","messageBody":"Add ui mockup closes #4","fileTypesAndContributionMap":{}},{"hash":"9b8d069a24967fa8a6a29a419bec8e4fef6b8450","isMergeCommit":true,"messageTitle":"Merge pull request #16 from cyqjoseph/branch-edit-aboutus","messageBody":"Edit Aboutus.md close #15","fileTypesAndContributionMap":{}}]},{"date":"2024-03-05","commitResults":[{"hash":"e5643daa401f08272cfb3e3ec0482d41baf9174d","isMergeCommit":false,"messageTitle":"Update DG user stories","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":18,"deletions":7}}}]},{"date":"2024-03-06","commitResults":[{"hash":"064a7a2502022569f41b9c272ea6a922f187ccc8","isMergeCommit":true,"messageTitle":"Merge pull request #31 from cyqjoseph/branch-modify-configyml","messageBody":"Update config.yml to point website link to correct location.","fileTypesAndContributionMap":{}}]},{"date":"2024-03-07","commitResults":[{"hash":"73d7f9515a76116e658da5c688d6a18ec535ffdc","isMergeCommit":true,"messageTitle":"Merge pull request #33 from cyqjoseph/branch-updatedevguide","messageBody":"docs: Add NFRs and use cases to Developer Guide","fileTypesAndContributionMap":{}}]},{"date":"2024-03-11","commitResults":[{"hash":"0cad17b51ac7e27ac168965fdd19aff6fc4e513d","isMergeCommit":false,"messageTitle":"Add Unique Booking List and Booking Class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":177,"deletions":0}}},{"hash":"f714df0b781e417397dfaee9aca1c568dac03238","isMergeCommit":false,"messageTitle":"Delete Remark Class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":59}}},{"hash":"8636713889838330bb284d36592bc0e8ba7aaed1","isMergeCommit":false,"messageTitle":"Fix bug with remarkclass","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"dff0df751b73615f3ddaf7fc2faff572b1ace816","isMergeCommit":false,"messageTitle":"Fix Checkstyle and refactor to booking","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":104,"deletions":63},"other":{"insertions":47,"deletions":5}}},{"hash":"2203a799d71eb507d1311b9a59bfe5047f72a745","isMergeCommit":true,"messageTitle":"Merge pull request #52 from cyqjoseph/branch-add-booking-command-v1","messageBody":"Branch add booking command v1","fileTypesAndContributionMap":{}},{"hash":"b53396d0d8f6093896003c3041ac35a6f5ba481b","isMergeCommit":false,"messageTitle":"Delete Booking","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":110}}},{"hash":"649a59f99d365d9b2708b098ac6ea397443fd765","isMergeCommit":true,"messageTitle":"Merge Booking Class","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-12","commitResults":[{"hash":"ed7fe00172fabc485a4cdb32527f8533df7aff21","isMergeCommit":false,"messageTitle":"Add rating","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":28,"deletions":1}}},{"hash":"a485ad4ae07d2e1a88d621ac529eec8a9952c457","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-rating","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d6220db12acab627e04f49c4e42dadfe6f0289cf","isMergeCommit":false,"messageTitle":"Add rating for person","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-16","commitResults":[{"hash":"be89f84e0681889edd7ee3b8c86508d855383efe","isMergeCommit":false,"messageTitle":"Fix addressbook to use bookinglist","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":79,"deletions":4}}}]},{"date":"2024-03-18","commitResults":[{"hash":"0d32a01074a852396bf88010aadff6fc41a61b04","isMergeCommit":false,"messageTitle":"Remove rating constructor in name","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2}}},{"hash":"06cffb3137073b0a2a06a90603d59a1fb8a97390","isMergeCommit":false,"messageTitle":"Add Default Image","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":17,"deletions":0}}}]},{"date":"2024-03-19","commitResults":[{"hash":"1c9befea358f29ee9151e5fb269d66cb7de106c1","isMergeCommit":false,"messageTitle":"Add pictures","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":64,"deletions":33},"other":{"insertions":9,"deletions":4}}},{"hash":"b9d73ef518108d847429d50b95715d59b9e58d3b","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-W11-3/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"699f1b8c0fc758871a14708a27d2d53059e3d868","isMergeCommit":false,"messageTitle":"Center and Cirlce the image","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":1}}},{"hash":"d0e8cdc7eec23368e036dadad50faf59bf89b9e6","isMergeCommit":true,"messageTitle":"Merge pull request #73 from cyqjoseph/branch-checkstyle-cleanup","messageBody":"Cleanup checkstyle issues","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"1801fbe85e206e3752e0ccb9fc1f3764d8d44683","isMergeCommit":false,"messageTitle":"Fix bugs with tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":353,"deletions":22},"test-code":{"insertions":22,"deletions":11}}},{"hash":"4a4c5e6598f91b1c89dc3bfffa448627b504e985","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-W11-3/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"5d8dd6a3a7c2f09e712e239f49f533572ac0dea8","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-imageclass","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"39bb664d6416f80e44bf65472dd82aa8312948a6","isMergeCommit":false,"messageTitle":"Add newline add EOF lighttheme","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"01f3640673a1d996a3b90874db9dcee497035e33","isMergeCommit":true,"messageTitle":"Merge pull request #74 from ChrysanthemumT/add-imageclass","messageBody":"Add imageclass","fileTypesAndContributionMap":{}},{"hash":"03059812c9e97965990b9dc7dfb088108aedd9b6","isMergeCommit":false,"messageTitle":"Add new ui.png","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-21","commitResults":[{"hash":"00b8776e613f4f63f533a6c5e233c7c7cd722301","isMergeCommit":false,"messageTitle":"Add Theme command to change themes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":215,"deletions":8}}}]}],"zhenghuil":[{"date":"2024-02-28","commitResults":[{"hash":"1c333bd8150873f1da98850649df2f6b5db04956","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/zhenghuil/tp","messageBody":"* \u0027master\u0027 of https://github.com/zhenghuil/tp:\n Edit Aboutus.md close #15\n Add ui mockup closes #4\n Add personal details of Jerremy: closes #7\n Update profile picture and AboutUs.md\n Add phot closes #10\n","fileTypesAndContributionMap":{}},{"hash":"67c7a6910d80b48cf10e8a9f930119384ab0edf3","isMergeCommit":false,"messageTitle":"Add zhenghuil.png Add personal details in AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":5}}},{"hash":"6830c51bd88a5ce0050745512d6b791f9b352cf9","isMergeCommit":false,"messageTitle":"Add zhenghuil.png Add personal details in AboutUs.md closes #18","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":5}}}]},{"date":"2024-03-19","commitResults":[{"hash":"43a77a1e35305a3407cca648563e9d4a1db389c2","isMergeCommit":false,"messageTitle":"Add CancelCommand class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":0}}},{"hash":"46a815ef9d17dd1e26dadec528b5996dc31011bb","isMergeCommit":false,"messageTitle":"Add CancelCommand class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":61,"deletions":1}}},{"hash":"e00fc8a80101da4252367a3683f6158856206693","isMergeCommit":false,"messageTitle":"Add invalid booking index message in Messages","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"e50689435467027fecfa040751cd16fff74e2995","isMergeCommit":false,"messageTitle":"Add cancelBooking method in ModelManager and Model","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":0}}},{"hash":"b8c7a890a78cf5aa4399f178807299e48fbd9e7f","isMergeCommit":false,"messageTitle":"Add CancelCommandParser class Add CancelCommand case in AddressBookParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":33,"deletions":0}}},{"hash":"d22c86383118fc4648af5a516f2d1eb20b4fdb4b","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-cancel-command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"aa69a3fce91749a6829b01d4ced9ef79bf9fac1c","isMergeCommit":false,"messageTitle":"no message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2}}},{"hash":"83bacea59e788729597486a796c8131ec53f2884","isMergeCommit":false,"messageTitle":"Update checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":8}}},{"hash":"952216109837657d23c7e1b758c7d6f97f1f88c4","isMergeCommit":false,"messageTitle":"Add cancelBooking method for modelstub in AddCommandTest and BookCommandTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":10,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"jerremyng":{"docs":66,"functional-code":220,"test-code":12,"other":14},"gauravuj":{"docs":31,"functional-code":494,"test-code":0},"cyqjoseph":{"docs":253,"functional-code":702,"test-code":837},"ChrysanthemumT":{"docs":11,"functional-code":772,"test-code":22},"zhenghuil":{"docs":3,"functional-code":107,"test-code":10}},"authorContributionVariance":{"jerremyng":3760.0437,"gauravuj":6182.5645,"cyqjoseph":25091.072,"ChrysanthemumT":15862.626,"zhenghuil":623.9312},"authorDisplayNameMap":{"jerremyng":"CS2103T-W11-3 JERR.. JIE","gauravuj":"CS2103T-W11-3 UJJW..URAV","cyqjoseph":"CS2103T-W11-3 CHAN..SEPH","ChrysanthemumT":"CS2103T-W11-3 WANG..HONG","zhenghuil":"CS2103T-W11-3 LOW .. HUI"}} diff --git a/AY2324S2-CS2103T-W12-4_tp_master/authorship.json b/AY2324S2-CS2103T-W12-4_tp_master/authorship.json index 42fecdf0..c0a022b9 100644 --- a/AY2324S2-CS2103T-W12-4_tp_master/authorship.json +++ b/AY2324S2-CS2103T-W12-4_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Rishit02"},"content":"[![CI Status](https://github.com/se-edu/addressbook-level3/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S2-CS2103T-W12-4/tp/actions)","lastModifiedDate":"2024-03-01"},{"lineNumber":2,"author":{"gitId":"-"},"content":"[![codecov](https://codecov.io/gh/AY2324S2-CS2103T-W12-4/tp/graph/badge.svg?token\u003dF5OYT9DURR)](https://codecov.io/gh/AY2324S2-CS2103T-W12-4/tp)","lastModifiedDate":"2024-02-19"},{"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":"Rishit02"},"content":"# ConnectCare","lastModifiedDate":"2024-03-01"},{"lineNumber":7,"author":{"gitId":"Rishit02"},"content":"ConnectCare is a client management application designed for social workers. It streamlines client case management, focusing on efficient scheduling and visit tracking. The application aims to optimize scheduling, manage client goals, and ensure effective collaboration among social workers.","lastModifiedDate":"2024-03-01"},{"lineNumber":8,"author":{"gitId":"Rishit02"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":9,"author":{"gitId":"Rishit02"},"content":"## Table of contents","lastModifiedDate":"2024-03-01"},{"lineNumber":10,"author":{"gitId":"Rishit02"},"content":"- [Features](#features)","lastModifiedDate":"2024-03-01"},{"lineNumber":11,"author":{"gitId":"Rishit02"},"content":"- [Installation and Usage](#installation-and-usage)","lastModifiedDate":"2024-03-01"},{"lineNumber":12,"author":{"gitId":"Rishit02"},"content":"- [User Stories](#user-stories)","lastModifiedDate":"2024-03-01"},{"lineNumber":13,"author":{"gitId":"Rishit02"},"content":"- [Acknowledgements](#acknowledgements)","lastModifiedDate":"2024-03-01"},{"lineNumber":14,"author":{"gitId":"Rishit02"},"content":"- [License](#license)","lastModifiedDate":"2024-03-01"},{"lineNumber":15,"author":{"gitId":"Rishit02"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":16,"author":{"gitId":"Rishit02"},"content":"## Features","lastModifiedDate":"2024-03-01"},{"lineNumber":17,"author":{"gitId":"Rishit02"},"content":"- **Client Profile Management:** Create, update, and categorize client profiles effectively.","lastModifiedDate":"2024-03-01"},{"lineNumber":18,"author":{"gitId":"Rishit02"},"content":"- **Search:** Search for clients based on keywords and tags.","lastModifiedDate":"2024-03-01"},{"lineNumber":19,"author":{"gitId":"Rishit02"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":20,"author":{"gitId":"Rishit02"},"content":"## Installation and Usage","lastModifiedDate":"2024-03-01"},{"lineNumber":21,"author":{"gitId":"Rishit02"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2024-03-01"},{"lineNumber":22,"author":{"gitId":"Rishit02"},"content":"1. Clone the repository","lastModifiedDate":"2024-03-01"},{"lineNumber":23,"author":{"gitId":"Rishit02"},"content":"2. Configure the project to use JDK 11 (not other versions) as explained in here.","lastModifiedDate":"2024-03-01"},{"lineNumber":24,"author":{"gitId":"Rishit02"},"content":" In the same dialog, set the Project language level field to the SDK default option.","lastModifiedDate":"2024-03-01"},{"lineNumber":25,"author":{"gitId":"Rishit02"},"content":"3. After that, open the Gradle tab and execute the gradle command `gradle run`","lastModifiedDate":"2024-03-01"},{"lineNumber":26,"author":{"gitId":"Rishit02"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":27,"author":{"gitId":"Rishit02"},"content":"## Acknowledgements","lastModifiedDate":"2024-03-01"},{"lineNumber":28,"author":{"gitId":"Rishit02"},"content":"- This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-03-01"},{"lineNumber":29,"author":{"gitId":"Rishit02"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":30,"author":{"gitId":"Rishit02"},"content":"## License","lastModifiedDate":"2024-03-01"},{"lineNumber":31,"author":{"gitId":"Rishit02"},"content":"ConnectCare is licensed under the [MIT License](LICENSE).","lastModifiedDate":"2024-03-01"}],"authorContributionMap":{"Rishit02":27,"-":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":"Jolonauh"},"content":"We are passionate and deeply committed to using technology to create positive social impact.","lastModifiedDate":"2024-03-07"},{"lineNumber":10,"author":{"gitId":"Jolonauh"},"content":"We hope to alleviate some of the burdens social workers carry by streamlining their workflow ","lastModifiedDate":"2024-02-29"},{"lineNumber":11,"author":{"gitId":"Jolonauh"},"content":"and simplifying administrative tasks. Our goal is to free up valuable time and energy for ","lastModifiedDate":"2024-02-29"},{"lineNumber":12,"author":{"gitId":"Jolonauh"},"content":"social workers to focus on the most important aspects of their work.","lastModifiedDate":"2024-02-29"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":15,"author":{"gitId":"Jolonauh"},"content":"You can reach us at the email `connect_care[at]comp.nus.edu.sg`","lastModifiedDate":"2024-02-29"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17"},{"lineNumber":17,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"Jolonauh"},"content":"### Damith C. Rajapakse","lastModifiedDate":"2024-02-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"Jolonauh"},"content":"\u003cimg src\u003d\"images/damithc.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-02-29"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"[[homepage](http://www.comp.nus.edu.sg/~damithch)]","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"Jolonauh"},"content":"[[github](https://github.com/damithc)]","lastModifiedDate":"2024-02-29"},{"lineNumber":25,"author":{"gitId":"Jolonauh"},"content":"[[portfolio](http://www.comp.nus.edu.sg/~damithch)]","lastModifiedDate":"2024-02-29"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"* Role: Project Advisor","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"Jolonauh"},"content":"### P J Anthony","lastModifiedDate":"2024-02-29"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"Jolonauh"},"content":"\u003cimg src\u003d\"images/pjanthony2001.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-02-29"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"Jolonauh"},"content":"[[github](http://github.com/pjanthony2001)]","lastModifiedDate":"2024-02-29"},{"lineNumber":34,"author":{"gitId":"Jolonauh"},"content":"[[portfolio](team/anthony.md)]","lastModifiedDate":"2024-02-29"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"* Role: Team Lead","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"Jolonauh"},"content":"* Responsibilities: Manages the project","lastModifiedDate":"2024-03-03"},{"lineNumber":38,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":39,"author":{"gitId":"Jolonauh"},"content":"### Au Jun Ming Jeremiah","lastModifiedDate":"2024-02-29"},{"lineNumber":40,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":41,"author":{"gitId":"Jolonauh"},"content":"\u003cimg src\u003d\"images/jolonauh.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-02-29"},{"lineNumber":42,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":43,"author":{"gitId":"Jolonauh"},"content":"[[github](http://github.com/jolonauh)]","lastModifiedDate":"2024-02-29"},{"lineNumber":44,"author":{"gitId":"Jolonauh"},"content":"[[portfolio](team/jeremiah.md)]","lastModifiedDate":"2024-02-29"},{"lineNumber":45,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":46,"author":{"gitId":"Jolonauh"},"content":"* Role: Developer","lastModifiedDate":"2024-02-29"},{"lineNumber":47,"author":{"gitId":"Jolonauh"},"content":"* Responsibilities: Testing","lastModifiedDate":"2024-02-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"Jolonauh"},"content":"### Rishit Khandelwal","lastModifiedDate":"2024-02-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"Jolonauh"},"content":"\u003cimg src\u003d\"images/rishit02.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-02-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"Jolonauh"},"content":"[[github](http://github.com/rishit02)] [[portfolio](team/rishit.md)]","lastModifiedDate":"2024-02-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"Jolonauh"},"content":"* Responsibilities: Code Quality","lastModifiedDate":"2024-02-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"Jolonauh"},"content":"### Eliot Lee Leong Wern","lastModifiedDate":"2024-02-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"Jolonauh"},"content":"\u003cimg src\u003d\"images/eliotlee68.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-02-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"Jolonauh"},"content":"[[github](http://github.com/eliotlee68)]","lastModifiedDate":"2024-02-29"},{"lineNumber":63,"author":{"gitId":"Jolonauh"},"content":"[[portfolio](team/eliot.md)]","lastModifiedDate":"2024-02-29"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"Jolonauh"},"content":"* Responsibilities: Deliverables and deadlines","lastModifiedDate":"2024-02-29"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"Jolonauh"},"content":"### Tejas Sadasivam","lastModifiedDate":"2024-02-29"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"Jolonauh"},"content":"\u003cimg src\u003d\"images/tejas-1405.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-02-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"Jolonauh"},"content":"[[github](http://github.com/tejas-1405)]","lastModifiedDate":"2024-02-29"},{"lineNumber":73,"author":{"gitId":"Jolonauh"},"content":"[[portfolio](team/tejas.md)]","lastModifiedDate":"2024-02-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"Jolonauh"},"content":"* Responsibilities: Documentation","lastModifiedDate":"2024-03-03"}],"authorContributionMap":{"Jolonauh":39,"-":37}},{"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":"-"},"content":"# AB-3 Developer Guide","lastModifiedDate":"2023-09-12"},{"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":"-"},"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":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":"-"},"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":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":"-"},"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":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":"-"},"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":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 continues till 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).\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-02-09"},{"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":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12"},{"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":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"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":"2021-07-31"},{"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":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":133,"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":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":135,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"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":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"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":148,"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":149,"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":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","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":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"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":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"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":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"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":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"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":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"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":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"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":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"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":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":191,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"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":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":198,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"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":201,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"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":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":213,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":217,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":219,"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":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":223,"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":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"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":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"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":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","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":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":264,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":265,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":266,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":267,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"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":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":277,"author":{"gitId":"pjanthony2001"},"content":"* has a need to manage a significant number of clients for social work, that is dynamically changing","lastModifiedDate":"2024-03-01"},{"lineNumber":278,"author":{"gitId":"pjanthony2001"},"content":"* has a need to efficiently track cases and get important information at a glance","lastModifiedDate":"2024-03-01"},{"lineNumber":279,"author":{"gitId":"pjanthony2001"},"content":"* has a need to easily add notes and observations during visits to record important details","lastModifiedDate":"2024-03-01"},{"lineNumber":280,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23"},{"lineNumber":281,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23"},{"lineNumber":282,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26"},{"lineNumber":283,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23"},{"lineNumber":284,"author":{"gitId":"pjanthony2001"},"content":"* ","lastModifiedDate":"2024-03-01"},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":286,"author":{"gitId":"pjanthony2001"},"content":"**Value proposition**: Manage and view client information more efficiently than a standard word-editor/address book/spreadsheet","lastModifiedDate":"2024-03-01"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":288,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":289,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":291,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":293,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":294,"author":{"gitId":"pjanthony2001"},"content":"|----------|---------------------------------|------------------------------|------------------------------------------------------------------------|","lastModifiedDate":"2024-03-03"},{"lineNumber":295,"author":{"gitId":"pjanthony2001"},"content":"| `* * *` | social worker | see usage instructions | refer to instructions when I forget how to use the App |","lastModifiedDate":"2024-02-26"},{"lineNumber":296,"author":{"gitId":"pjanthony2001"},"content":"| `* * *` | social worker | create a new client | keep track of their information efficiently |","lastModifiedDate":"2024-02-26"},{"lineNumber":297,"author":{"gitId":"pjanthony2001"},"content":"| `* * *` | social worker | delete a client | remove client entries that I no longer need |","lastModifiedDate":"2024-03-03"},{"lineNumber":298,"author":{"gitId":"pjanthony2001"},"content":"| `* * *` | social worker | find a client by name | locate details of clients without having to go through the entire list |","lastModifiedDate":"2024-03-03"},{"lineNumber":299,"author":{"gitId":"pjanthony2001"},"content":"| `* *` | social worker | hide private contact details | minimize chance of someone else seeing them by accident |","lastModifiedDate":"2024-03-03"},{"lineNumber":300,"author":{"gitId":"pjanthony2001"},"content":"| `*` | social worker with many clients | sort persons by name | locate a person easily |","lastModifiedDate":"2024-03-03"},{"lineNumber":301,"author":{"gitId":"pjanthony2001"},"content":"| `*` | social worker with colleagues | switch between profiles | manage my own set of clients on the same machine |","lastModifiedDate":"2024-03-06"},{"lineNumber":302,"author":{"gitId":"pjanthony2001"},"content":"| `*` | social worker | undo and redo my commands | easily rectify a mistaken command |","lastModifiedDate":"2024-03-06"},{"lineNumber":303,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":304,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":306,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":307,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":308,"author":{"gitId":"pjanthony2001"},"content":"(For all use cases below, the **System** is `ConnectCare` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2024-03-02"},{"lineNumber":309,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":310,"author":{"gitId":"pjanthony2001"},"content":"**Use case: Add a client**","lastModifiedDate":"2024-03-02"},{"lineNumber":311,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":312,"author":{"gitId":"pjanthony2001"},"content":"**MSS**","lastModifiedDate":"2024-03-02"},{"lineNumber":313,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":314,"author":{"gitId":"pjanthony2001"},"content":"1. User requests to add a client","lastModifiedDate":"2024-03-02"},{"lineNumber":315,"author":{"gitId":"pjanthony2001"},"content":"2. ConnectCare adds the client","lastModifiedDate":"2024-03-02"},{"lineNumber":316,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":317,"author":{"gitId":"pjanthony2001"},"content":" Use case ends.","lastModifiedDate":"2024-03-02"},{"lineNumber":318,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":319,"author":{"gitId":"pjanthony2001"},"content":"**Extensions**","lastModifiedDate":"2024-03-02"},{"lineNumber":320,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":321,"author":{"gitId":"pjanthony2001"},"content":"* 1a. The details of the client is incorrect","lastModifiedDate":"2024-03-02"},{"lineNumber":322,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":323,"author":{"gitId":"pjanthony2001"},"content":" * 1a1. ConnectCare shows an error message.","lastModifiedDate":"2024-03-02"},{"lineNumber":324,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":325,"author":{"gitId":"pjanthony2001"},"content":" Use case ends.","lastModifiedDate":"2024-03-02"},{"lineNumber":326,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":327,"author":{"gitId":"pjanthony2001"},"content":"**Use case: Update client details**","lastModifiedDate":"2024-03-02"},{"lineNumber":328,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":329,"author":{"gitId":"pjanthony2001"},"content":"**MSS**","lastModifiedDate":"2024-03-02"},{"lineNumber":330,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":331,"author":{"gitId":"pjanthony2001"},"content":"1. User requests to update a client ","lastModifiedDate":"2024-03-02"},{"lineNumber":332,"author":{"gitId":"pjanthony2001"},"content":"2. ConnectCare updates the client with new details","lastModifiedDate":"2024-03-02"},{"lineNumber":333,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":334,"author":{"gitId":"pjanthony2001"},"content":" Use case ends.","lastModifiedDate":"2024-03-02"},{"lineNumber":335,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":336,"author":{"gitId":"pjanthony2001"},"content":"**Extensions**","lastModifiedDate":"2024-03-02"},{"lineNumber":337,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":338,"author":{"gitId":"pjanthony2001"},"content":"* 1a. The client to update is not found","lastModifiedDate":"2024-03-02"},{"lineNumber":339,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":340,"author":{"gitId":"pjanthony2001"},"content":" * 1a1. ConnectCare shows an error message.","lastModifiedDate":"2024-03-02"},{"lineNumber":341,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":342,"author":{"gitId":"pjanthony2001"},"content":" Use case ends.","lastModifiedDate":"2024-03-02"},{"lineNumber":343,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":344,"author":{"gitId":"pjanthony2001"},"content":"* 1b. The client details given to update is incorrect","lastModifiedDate":"2024-03-02"},{"lineNumber":345,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":346,"author":{"gitId":"pjanthony2001"},"content":" * 1b1. ConnectCare shows an error message.","lastModifiedDate":"2024-03-02"},{"lineNumber":347,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":348,"author":{"gitId":"pjanthony2001"},"content":" Use case ends.","lastModifiedDate":"2024-03-02"},{"lineNumber":349,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":350,"author":{"gitId":"-"},"content":"**Use case: Delete a person**","lastModifiedDate":"2020-05-23"},{"lineNumber":351,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":352,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":353,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":354,"author":{"gitId":"-"},"content":"1. User requests to list persons","lastModifiedDate":"2020-05-23"},{"lineNumber":355,"author":{"gitId":"pjanthony2001"},"content":"2. ConnectCare shows a list of persons","lastModifiedDate":"2024-03-03"},{"lineNumber":356,"author":{"gitId":"-"},"content":"3. User requests to delete a specific person in the list","lastModifiedDate":"2020-05-23"},{"lineNumber":357,"author":{"gitId":"pjanthony2001"},"content":"4. ConnectCare deletes the person","lastModifiedDate":"2024-03-03"},{"lineNumber":358,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":359,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":360,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":361,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":362,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":363,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2020-05-23"},{"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":"* 3a. The given index is invalid.","lastModifiedDate":"2020-05-23"},{"lineNumber":368,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":369,"author":{"gitId":"pjanthony2001"},"content":" * 3a1. ConnectCare shows an error message.","lastModifiedDate":"2024-03-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":"pjanthony2001"},"content":"**Use case: Find client**","lastModifiedDate":"2024-03-02"},{"lineNumber":374,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":375,"author":{"gitId":"pjanthony2001"},"content":"**MSS**","lastModifiedDate":"2024-03-02"},{"lineNumber":376,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":377,"author":{"gitId":"pjanthony2001"},"content":"1. User requests to find a client","lastModifiedDate":"2024-03-02"},{"lineNumber":378,"author":{"gitId":"pjanthony2001"},"content":"2. ConnectCare lists all clients that match the keyword","lastModifiedDate":"2024-03-02"},{"lineNumber":379,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":380,"author":{"gitId":"pjanthony2001"},"content":" Use case ends.","lastModifiedDate":"2024-03-02"},{"lineNumber":381,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":382,"author":{"gitId":"pjanthony2001"},"content":"**Extensions**","lastModifiedDate":"2024-03-02"},{"lineNumber":383,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":384,"author":{"gitId":"pjanthony2001"},"content":"* 1a. There is no given keyword.","lastModifiedDate":"2024-03-02"},{"lineNumber":385,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":386,"author":{"gitId":"pjanthony2001"},"content":" * 1a1. ConnectCare shows an error message.","lastModifiedDate":"2024-03-03"},{"lineNumber":387,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":388,"author":{"gitId":"pjanthony2001"},"content":" Use case ends.","lastModifiedDate":"2024-03-02"},{"lineNumber":389,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":390,"author":{"gitId":"pjanthony2001"},"content":"**Use case: Clear all clients**","lastModifiedDate":"2024-03-02"},{"lineNumber":391,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":392,"author":{"gitId":"pjanthony2001"},"content":"**MSS**","lastModifiedDate":"2024-03-02"},{"lineNumber":393,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":394,"author":{"gitId":"pjanthony2001"},"content":"1. User requests to clear all clients","lastModifiedDate":"2024-03-02"},{"lineNumber":395,"author":{"gitId":"pjanthony2001"},"content":"2. ConnectCare requests for confirmation","lastModifiedDate":"2024-03-03"},{"lineNumber":396,"author":{"gitId":"pjanthony2001"},"content":"3. User confirms","lastModifiedDate":"2024-03-03"},{"lineNumber":397,"author":{"gitId":"pjanthony2001"},"content":"4. ConnectCare clears all clients","lastModifiedDate":"2024-03-03"},{"lineNumber":398,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":399,"author":{"gitId":"pjanthony2001"},"content":" Use case ends.","lastModifiedDate":"2024-03-02"},{"lineNumber":400,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":401,"author":{"gitId":"pjanthony2001"},"content":"**Extensions**","lastModifiedDate":"2024-03-02"},{"lineNumber":402,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":403,"author":{"gitId":"pjanthony2001"},"content":"* 1a. The list is empty.","lastModifiedDate":"2024-03-02"},{"lineNumber":404,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":405,"author":{"gitId":"pjanthony2001"},"content":" * 1a1. ConnectCare shows an error message.","lastModifiedDate":"2024-03-03"},{"lineNumber":406,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":407,"author":{"gitId":"pjanthony2001"},"content":" Use case ends.","lastModifiedDate":"2024-03-03"},{"lineNumber":408,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":409,"author":{"gitId":"pjanthony2001"},"content":"* 3a. The user does not confirm","lastModifiedDate":"2024-03-03"},{"lineNumber":410,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":411,"author":{"gitId":"pjanthony2001"},"content":" * 3a1. ConnectCare informs user of the cancellation","lastModifiedDate":"2024-03-03"},{"lineNumber":412,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":413,"author":{"gitId":"pjanthony2001"},"content":" Use case ends.","lastModifiedDate":"2024-03-02"},{"lineNumber":414,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":415,"author":{"gitId":"pjanthony2001"},"content":"**Use case: Exit the application**","lastModifiedDate":"2024-03-02"},{"lineNumber":416,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":417,"author":{"gitId":"pjanthony2001"},"content":"**MSS**","lastModifiedDate":"2024-03-02"},{"lineNumber":418,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":419,"author":{"gitId":"pjanthony2001"},"content":"1. User requests to exit the application","lastModifiedDate":"2024-03-02"},{"lineNumber":420,"author":{"gitId":"pjanthony2001"},"content":"2. ConnectCare exits","lastModifiedDate":"2024-03-02"},{"lineNumber":421,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":422,"author":{"gitId":"pjanthony2001"},"content":" Use case ends.","lastModifiedDate":"2024-03-02"},{"lineNumber":423,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":424,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":425,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":426,"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":427,"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":428,"author":{"gitId":"tejas-1405"},"content":"3. The system should be responsive, with a maximum response time of 3 seconds for any user action.","lastModifiedDate":"2024-03-03"},{"lineNumber":429,"author":{"gitId":"tejas-1405"},"content":"4. 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":"2024-03-03"},{"lineNumber":430,"author":{"gitId":"tejas-1405"},"content":"5. The user interface should be intuitive and easy to navigate, requiring minimal training for social workers to use effectively.","lastModifiedDate":"2024-03-03"},{"lineNumber":431,"author":{"gitId":"tejas-1405"},"content":"6. The system should work without access to the internet.","lastModifiedDate":"2024-03-03"},{"lineNumber":432,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":433,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":434,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":435,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":436,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":437,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09"},{"lineNumber":438,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23"},{"lineNumber":439,"author":{"gitId":"tejas-1405"},"content":"* **Command Line Interface (CLI)**: A CLI is a text-based interface used to run programs, manage computer file sand interact with the computer","lastModifiedDate":"2024-03-03"},{"lineNumber":440,"author":{"gitId":"tejas-1405"},"content":"* **Main Success Scenario (MSS)**: The primary sequence of steps in a use case that describes the ideal path of interaction between a user and the system without encountering any errors","lastModifiedDate":"2024-03-03"},{"lineNumber":441,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":442,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":443,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":444,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":445,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":446,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":447,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":448,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12"},{"lineNumber":449,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":450,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":451,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":452,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":453,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":454,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":455,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":456,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":457,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":458,"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":459,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":460,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":461,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":462,"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":463,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":464,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":465,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":466,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":467,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":468,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":469,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":470,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":471,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":472,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":473,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":474,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":475,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":476,"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":477,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":478,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":479,"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":480,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":481,"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":482,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":483,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":484,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":485,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":486,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":487,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":488,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":489,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":490,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":491,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":492,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"pjanthony2001":108,"tejas-1405":6,"-":378}},{"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":"eliotlee68"},"content":"# Introduction: What is ConnectCare?","lastModifiedDate":"2024-02-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"eliotlee68"},"content":"ConnectCare is a desktop app designed for social workers that have to manage a wide array of clients and cases.","lastModifiedDate":"2024-02-26"},{"lineNumber":10,"author":{"gitId":"eliotlee68"},"content":"ConnectCare is streamlined with a focus on efficient scheduling, providing an **easy-to-use, accessible and quick to use** experience for users.","lastModifiedDate":"2024-02-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":12,"author":{"gitId":"eliotlee68"},"content":"## The user guide","lastModifiedDate":"2024-02-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"eliotlee68"},"content":"This user guide is made to guide you: the user through all the necessary instructions and commands to utilise ConnectCare to its maximum potential!","lastModifiedDate":"2024-02-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"eliotlee68"},"content":"In the **quick start** section, we will walk through you in how to get started installing as well as running the ConnectCare on your own desktop","lastModifiedDate":"2024-02-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"eliotlee68"},"content":"Additionally, the **features section** will provide a comprehensive, easy-to-understand guide on how to fully make use of ConnectCare\u0027s functionalities and commands.","lastModifiedDate":"2024-02-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"eliotlee68"},"content":"Furthermore, the **FAQ** section will answer commonly asked questions, addressing potential further queries you might have!","lastModifiedDate":"2024-02-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"eliotlee68"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2024-02-26"},{"lineNumber":24,"author":{"gitId":"eliotlee68"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2024-02-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"eliotlee68"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-02-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"eliotlee68"},"content":"## Quick start","lastModifiedDate":"2024-02-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"tejas-1405"},"content":"* Ensure Java 11 is installed in your computer. If it\u0027s not, install it [here](https://www.oracle.com/sg/java/technologies/javase/jdk11-archive-downloads.html)","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"tejas-1405"},"content":"* Download the latest ConnectCare.jar","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"tejas-1405"},"content":"* Copy the jar file to the folder you want to use as the home folder","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"tejas-1405"},"content":"* Double click the file to start the application!","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"**Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"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":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"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":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"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":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":"-"},"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":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/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"eliotlee68"},"content":"### Adding a new client: `add`","lastModifiedDate":"2024-02-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"eliotlee68"},"content":"This command adds a new client to your client list.","lastModifiedDate":"2024-02-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"eliotlee68"},"content":"Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]… [k/NEXTOFKIN]​`","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":68,"author":{"gitId":"eliotlee68"},"content":"**Tip:** A person can have any number of tags (or even 0!)","lastModifiedDate":"2024-02-26"},{"lineNumber":69,"author":{"gitId":"eliotlee68"},"content":"**Tip:** A person\u0027s next of kin field is optional (it can be ommitted if a person does not have a next of kin)","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"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":74,"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":75,"author":{"gitId":"eliotlee68"},"content":"* `add n/Bill James p/01232228943 e/billj@example.com a/12 College Avenue West t/high priority k/John Doe`","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"eliotlee68"},"content":"### Updating a client : `update`","lastModifiedDate":"2024-02-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"eliotlee68"},"content":"This command helps update existing client\u0027s information in the client list in the event that something changes.","lastModifiedDate":"2024-02-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"eliotlee68"},"content":"Format: `update u/existing user [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [t/TAG]…​​`","lastModifiedDate":"2024-02-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"eliotlee68"},"content":"* `Update u/Jane Doe n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-011` updates the information of Jane Doe\u0027s information to be \u003cbr\u003ename: John Doe \u003cbr\u003ePhone no: 98765432 \u003cbr\u003eemail: johnd@example.com \u003cbr\u003eaddress: John street, block 123, #01-011","lastModifiedDate":"2024-02-26"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"### Locating persons by name: `find`","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"eliotlee68"},"content":"This command allows you to find a specific client in your client list by their **name**","lastModifiedDate":"2024-02-26"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"eliotlee68"},"content":"Format: `find n/NAME`","lastModifiedDate":"2024-02-26"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"eliotlee68"},"content":"Lets say your contact list contains the following contacts:","lastModifiedDate":"2024-02-26"},{"lineNumber":94,"author":{"gitId":"eliotlee68"},"content":"**John Doe**","lastModifiedDate":"2024-02-26"},{"lineNumber":95,"author":{"gitId":"eliotlee68"},"content":"**John Lee**","lastModifiedDate":"2024-02-26"},{"lineNumber":96,"author":{"gitId":"eliotlee68"},"content":"**Alex Lee**","lastModifiedDate":"2024-02-26"},{"lineNumber":97,"author":{"gitId":"eliotlee68"},"content":"**Bobby Chan**","lastModifiedDate":"2024-02-26"},{"lineNumber":98,"author":{"gitId":"eliotlee68"},"content":"* `find John` would return `John Doe` as well as `John Lee` ","lastModifiedDate":"2024-02-26"},{"lineNumber":99,"author":{"gitId":"eliotlee68"},"content":"* `find Alex Lee` would return `Alex Lee`","lastModifiedDate":"2024-02-26"},{"lineNumber":100,"author":{"gitId":"eliotlee68"},"content":"* `find Lee` would return `John Lee` as well as `Alex Lee`","lastModifiedDate":"2024-02-26"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"eliotlee68"},"content":"This command allows you to purge your client list, removing **ALL** clients in your client list.","lastModifiedDate":"2024-02-26"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":110,"author":{"gitId":"-"},"content":"**Caution:**","lastModifiedDate":"2023-09-12"},{"lineNumber":111,"author":{"gitId":"eliotlee68"},"content":"Only use this command if you are **absolutely** sure that you are willing to clear **all** of your clients from the list, as after running this command, any existing clients will be **unrecoverable**.","lastModifiedDate":"2024-02-26"},{"lineNumber":112,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":114,"author":{"gitId":"eliotlee68"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2024-02-26"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"eliotlee68"},"content":"This command allows you to exit the application.","lastModifiedDate":"2024-02-26"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"eliotlee68"},"content":"Format: `exit`","lastModifiedDate":"2024-02-26"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"eliotlee68"},"content":"### Saving the data","lastModifiedDate":"2024-02-26"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"eliotlee68"},"content":"Your locally saved client list will be updated after any change is made, so no further action needs to be taken when operating the application!","lastModifiedDate":"2024-02-26"},{"lineNumber":123,"author":{"gitId":"eliotlee68"},"content":"On start-up, your existing client list (if it exists) will also be automatically loaded, so don\u0027t worry about that!","lastModifiedDate":"2024-02-26"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"eliotlee68"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2024-02-26"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"eliotlee68"},"content":"NOTE: If it is your first time running the program, and there is no existing client list, a new file will automatically be generated to store your new client list!","lastModifiedDate":"2024-02-26"},{"lineNumber":128,"author":{"gitId":"eliotlee68"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-02-26"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":130,"author":{"gitId":"eliotlee68"},"content":"---------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-02-26"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":132,"author":{"gitId":"eliotlee68"},"content":"## FAQ","lastModifiedDate":"2024-02-26"},{"lineNumber":133,"author":{"gitId":"eliotlee68"},"content":"_to be added_","lastModifiedDate":"2024-02-26"},{"lineNumber":134,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":136,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"-----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-12"},{"lineNumber":140,"author":{"gitId":"eliotlee68"},"content":"**Add** | `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]… [k/NEXTOFKIN]​` \u003cbr\u003e e.g., `add n/James Ho p/22224444 e/jamesho@example.com a/123, Clementi Rd, 1234665 t/friend t/colleague`","lastModifiedDate":"2024-03-18"},{"lineNumber":141,"author":{"gitId":"eliotlee68"},"content":"**Update** | `update u/existing user [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [t/TAG]…​` \u003cbr\u003e e.g., `Update u/Jane Doe n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-011`","lastModifiedDate":"2024-02-26"},{"lineNumber":142,"author":{"gitId":"-"},"content":"**Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake`","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"eliotlee68"},"content":"**Clear** | `clear`","lastModifiedDate":"2024-02-26"},{"lineNumber":144,"author":{"gitId":"eliotlee68"},"content":"**Exit** | `exit`","lastModifiedDate":"2024-02-26"}],"authorContributionMap":{"tejas-1405":4,"eliotlee68":50,"-":90}},{"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":"-"},"content":"AddressBook *-right-\u003e \"1\" UniquePersonList","lastModifiedDate":"2019-07-30"},{"lineNumber":8,"author":{"gitId":"-"},"content":"AddressBook *-right-\u003e \"1\" UniqueTagList","lastModifiedDate":"2019-07-30"},{"lineNumber":9,"author":{"gitId":"-"},"content":"UniqueTagList -[hidden]down- UniquePersonList","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"UniqueTagList -[hidden]down- UniquePersonList","lastModifiedDate":"2019-07-03"},{"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":"-"},"content":"UniquePersonList -right-\u003e Person","lastModifiedDate":"2021-07-31"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"Person -up-\u003e \"*\" Tag","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Person *--\u003e Name","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Person *--\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Person *--\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Person *--\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"Rishit02"},"content":"Person *--\u003e Next of Kin","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"Rishit02"},"content":"Person *--\u003e Description","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"Rishit02":2,"-":21}},{"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":"-"},"content":"Class UniquePersonList","lastModifiedDate":"2021-07-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Class Person","lastModifiedDate":"2019-07-03"},{"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":"-"},"content":"Class Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"Class Tag","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":23,"author":{"gitId":"-"},"content":"Class I #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"AddressBook .up.|\u003e ReadOnlyAddressBook","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"ModelManager .up.|\u003e Model","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"Model .right.\u003e ReadOnlyUserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":33,"author":{"gitId":"-"},"content":"Model .left.\u003e ReadOnlyAddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"ModelManager -left-\u003e \"1\" AddressBook","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":"ModelManager -right-\u003e \"1\" UserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"UserPrefs .up.|\u003e ReadOnlyUserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"AddressBook *--\u003e \"1\" UniquePersonList","lastModifiedDate":"2019-07-30"},{"lineNumber":39,"author":{"gitId":"-"},"content":"UniquePersonList --\u003e \"~* all\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":40,"author":{"gitId":"-"},"content":"Person *--\u003e Name","lastModifiedDate":"2019-07-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":"Person *--\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":42,"author":{"gitId":"-"},"content":"Person *--\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"Person *--\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":44,"author":{"gitId":"Rishit02"},"content":"Person *--\u003e Next of Kin","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"Rishit02"},"content":"Person *--\u003e Description","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"-"},"content":"Person *--\u003e \"*\" Tag","lastModifiedDate":"2019-07-03"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":48,"author":{"gitId":"-"},"content":"Person -[hidden]up--\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"UniquePersonList -[hidden]right-\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"Name -[hidden]right-\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":52,"author":{"gitId":"-"},"content":"Phone -[hidden]right-\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":53,"author":{"gitId":"-"},"content":"Address -[hidden]right-\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":55,"author":{"gitId":"-"},"content":"ModelManager --\u003e \"~* filtered\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":56,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"Rishit02":2,"-":54}},{"path":"docs/diagrams/UndoRedoState0.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 ClassFontColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam ClassBorderColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam ClassBackgroundColor #FFFFAA","lastModifiedDate":"2023-07-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"title Initial state","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"package States {","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"pjanthony2001"},"content":" class State1 as \"\u003cu\u003estate0:State\u003c/u\u003e\"","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"pjanthony2001"},"content":" class State2 as \"\u003cu\u003estate1:State\u003c/u\u003e\"","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"pjanthony2001"},"content":" class State3 as \"\u003cu\u003estate2:State\u003c/u\u003e\"","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":"State1 -[hidden]right-\u003e State2","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"State2 -[hidden]right-\u003e State3","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"hide State2","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"hide State3","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"class Pointer as \"Current State\" #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":"Pointer -up-\u003e State1","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"@end","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"pjanthony2001":4,"-":18}},{"path":"docs/diagrams/UndoRedoState1.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 ClassFontColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam ClassBorderColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam ClassBackgroundColor #FFFFAA","lastModifiedDate":"2023-07-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"title After command \"delete 5\"","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"pjanthony2001"},"content":"package States {","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"pjanthony2001"},"content":" class State1 as \"\u003cu\u003estate0:State\u003c/u\u003e\"","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"pjanthony2001"},"content":" class State2 as \"\u003cu\u003estate1:State\u003c/u\u003e\"","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"pjanthony2001"},"content":" class State3 as \"\u003cu\u003estate2:State\u003c/u\u003e\"","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"State1 -[hidden]right-\u003e State2","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"State2 -[hidden]right-\u003e State3","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"hide State3","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"class Pointer as \"Current State\" #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Pointer -up-\u003e State2","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"@end","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"pjanthony2001":4,"-":19}},{"path":"docs/diagrams/UndoRedoState2.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 ClassFontColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam ClassBorderColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam ClassBackgroundColor #FFFFAA","lastModifiedDate":"2023-07-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"title After command \"add n/David\"","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"pjanthony2001"},"content":"package States {","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"pjanthony2001"},"content":" class State1 as \"\u003cu\u003estate0:State\u003c/u\u003e\"","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"pjanthony2001"},"content":" class State2 as \"\u003cu\u003estate1:State\u003c/u\u003e\"","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"pjanthony2001"},"content":" class State3 as \"\u003cu\u003estate2:State\u003c/u\u003e\"","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"State1 -[hidden]right-\u003e State2","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"State2 -[hidden]right-\u003e State3","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"class Pointer as \"Current State\" #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Pointer -up-\u003e State3","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"@end","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"pjanthony2001":4,"-":17}},{"path":"docs/diagrams/UndoRedoState3.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 ClassFontColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam ClassBorderColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam ClassBackgroundColor #FFFFAA","lastModifiedDate":"2023-07-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"title After command \"undo\"","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"pjanthony2001"},"content":"package States {","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"pjanthony2001"},"content":" class State1 as \"\u003cu\u003estate0:State\u003c/u\u003e\"","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"pjanthony2001"},"content":" class State2 as \"\u003cu\u003estate1:State\u003c/u\u003e\"","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"pjanthony2001"},"content":" class State3 as \"\u003cu\u003estate2:State\u003c/u\u003e\"","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"State1 -[hidden]right-\u003e State2","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"State2 -[hidden]right-\u003e State3","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"class Pointer as \"Current State\" #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Pointer -up-\u003e State2","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"@end","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"pjanthony2001":4,"-":17}},{"path":"docs/diagrams/UndoRedoState4.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 ClassFontColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam ClassBorderColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam ClassBackgroundColor #FFFFAA","lastModifiedDate":"2023-07-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"title After command \"list\"","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"pjanthony2001"},"content":"package States {","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"pjanthony2001"},"content":" class State1 as \"\u003cu\u003estate0:State\u003c/u\u003e\"","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"pjanthony2001"},"content":" class State2 as \"\u003cu\u003estate1:State\u003c/u\u003e\"","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"pjanthony2001"},"content":" class State3 as \"\u003cu\u003estate2:State\u003c/u\u003e\"","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"State1 -[hidden]right-\u003e State2","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"State2 -[hidden]right-\u003e State3","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"class Pointer as \"Current State\" #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Pointer -up-\u003e State2","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"@end","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"pjanthony2001":4,"-":17}},{"path":"docs/diagrams/UndoRedoState5.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 ClassFontColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam ClassBorderColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam ClassBackgroundColor #FFFFAA","lastModifiedDate":"2023-07-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"title After command \"clear\"","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"pjanthony2001"},"content":"package States {","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"pjanthony2001"},"content":" class State1 as \"\u003cu\u003estate0:State\u003c/u\u003e\"","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"pjanthony2001"},"content":" class State2 as \"\u003cu\u003estate1:State\u003c/u\u003e\"","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"pjanthony2001"},"content":" class State3 as \"\u003cu\u003estate3:State\u003c/u\u003e\"","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"State1 -[hidden]right-\u003e State2","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"State2 -[hidden]right-\u003e State3","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"class Pointer as \"Current State\" #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Pointer -up-\u003e State3","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"pjanthony2001"},"content":"note right on link: State state2 deleted.","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":"@end","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"pjanthony2001":5,"-":17}},{"path":"docs/diagrams/UndoSequenceDiagram-Logic.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 \"u:UndoCommand\" as UndoCommand LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"participant \":Model\" as Model MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"[-\u003e LogicManager : execute(undo)","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"activate LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(undo)","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"activate AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"create UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"AddressBookParser -\u003e UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"activate UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"UndoCommand --\u003e AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":"deactivate UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"AddressBookParser --\u003e LogicManager : u","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"deactivate AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"LogicManager -\u003e UndoCommand : execute()","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"activate UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"pjanthony2001"},"content":"UndoCommand -\u003e Model : rollBackHistory()","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":"activate Model","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"pjanthony2001"},"content":"Model --\u003e UndoCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":36,"author":{"gitId":"pjanthony2001"},"content":"deactivate Model","lastModifiedDate":"2024-03-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":38,"author":{"gitId":"pjanthony2001"},"content":"UndoCommand -\u003e Model : getCurrState()","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"pjanthony2001"},"content":"activate Model","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"pjanthony2001"},"content":"Model --\u003e UndoCommand : state","lastModifiedDate":"2024-03-22"},{"lineNumber":41,"author":{"gitId":"pjanthony2001"},"content":"deactivate Model","lastModifiedDate":"2024-03-22"},{"lineNumber":42,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":43,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"pjanthony2001"},"content":"UndoCommand -\u003e Model : restoreState(state)","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"pjanthony2001"},"content":"activate Model","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"-"},"content":"Model --\u003e UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":47,"author":{"gitId":"-"},"content":"deactivate Model","lastModifiedDate":"2019-07-03"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":49,"author":{"gitId":"-"},"content":"UndoCommand --\u003e LogicManager : result","lastModifiedDate":"2019-07-03"},{"lineNumber":50,"author":{"gitId":"-"},"content":"deactivate UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"UndoCommand -[hidden]-\u003e LogicManager : result","lastModifiedDate":"2019-07-03"},{"lineNumber":52,"author":{"gitId":"-"},"content":"destroy UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":54,"author":{"gitId":"-"},"content":"[\u003c--LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":55,"author":{"gitId":"-"},"content":"deactivate LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"pjanthony2001":11,"-":45}},{"path":"docs/diagrams/UndoSequenceDiagram-Model.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2024-02-09"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2024-02-09"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-02-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-02-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"participant \":Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-02-09"},{"lineNumber":7,"author":{"gitId":"pjanthony2001"},"content":"participant \":History\" as VersionedAddressBook MODEL_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2024-02-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":10,"author":{"gitId":"pjanthony2001"},"content":"[-\u003e Model : rollBackHistory()","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"activate Model","lastModifiedDate":"2024-02-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":13,"author":{"gitId":"pjanthony2001"},"content":"Model -\u003e VersionedAddressBook : rollBack()","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"activate VersionedAddressBook","lastModifiedDate":"2024-02-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":"VersionedAddressBook -\u003e VersionedAddressBook :resetData(ReadOnlyAddressBook)","lastModifiedDate":"2024-02-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":"VersionedAddressBook --\u003e Model :","lastModifiedDate":"2024-02-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"deactivate VersionedAddressBook","lastModifiedDate":"2024-02-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"[\u003c-- Model","lastModifiedDate":"2024-02-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"deactivate Model","lastModifiedDate":"2024-02-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2024-02-09"}],"authorContributionMap":{"pjanthony2001":3,"-":20}},{"path":"docs/team/anthony.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":"pjanthony2001"},"content":" title: \"P J Anthony\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-02-26"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2021-07-30"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"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":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"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":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"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":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"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":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"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":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"* **Project management**:","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"* **Documentation**:","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * User Guide:","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Developer Guide:","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"* **Community**:","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"* **Tools**:","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"pjanthony2001"},"content":"_","lastModifiedDate":"2024-02-26"}],"authorContributionMap":{"pjanthony2001":2,"-":43}},{"path":"docs/team/eliot.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Jolonauh"},"content":"---","lastModifiedDate":"2024-02-29"},{"lineNumber":2,"author":{"gitId":"Jolonauh"},"content":" layout: default.md","lastModifiedDate":"2024-02-29"},{"lineNumber":3,"author":{"gitId":"Jolonauh"},"content":" title: \"Eliot Lee Leong Wern\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-02-29"},{"lineNumber":4,"author":{"gitId":"Jolonauh"},"content":"---","lastModifiedDate":"2024-02-29"},{"lineNumber":5,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":6,"author":{"gitId":"Jolonauh"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-02-29"},{"lineNumber":7,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":8,"author":{"gitId":"Jolonauh"},"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":"2024-02-29"},{"lineNumber":9,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":10,"author":{"gitId":"Jolonauh"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-02-29"},{"lineNumber":11,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":12,"author":{"gitId":"Jolonauh"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-02-29"},{"lineNumber":13,"author":{"gitId":"Jolonauh"},"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":"2024-02-29"},{"lineNumber":14,"author":{"gitId":"Jolonauh"},"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":"2024-02-29"},{"lineNumber":15,"author":{"gitId":"Jolonauh"},"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":"2024-02-29"},{"lineNumber":16,"author":{"gitId":"Jolonauh"},"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":"2024-02-29"},{"lineNumber":17,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":18,"author":{"gitId":"Jolonauh"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-02-29"},{"lineNumber":19,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":20,"author":{"gitId":"Jolonauh"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-02-29"},{"lineNumber":21,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":22,"author":{"gitId":"Jolonauh"},"content":"* **Project management**:","lastModifiedDate":"2024-02-29"},{"lineNumber":23,"author":{"gitId":"Jolonauh"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-02-29"},{"lineNumber":24,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":25,"author":{"gitId":"Jolonauh"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-02-29"},{"lineNumber":26,"author":{"gitId":"Jolonauh"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-02-29"},{"lineNumber":27,"author":{"gitId":"Jolonauh"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-02-29"},{"lineNumber":28,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":29,"author":{"gitId":"Jolonauh"},"content":"* **Documentation**:","lastModifiedDate":"2024-02-29"},{"lineNumber":30,"author":{"gitId":"Jolonauh"},"content":" * User Guide:","lastModifiedDate":"2024-02-29"},{"lineNumber":31,"author":{"gitId":"Jolonauh"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-02-29"},{"lineNumber":32,"author":{"gitId":"Jolonauh"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-02-29"},{"lineNumber":33,"author":{"gitId":"Jolonauh"},"content":" * Developer Guide:","lastModifiedDate":"2024-02-29"},{"lineNumber":34,"author":{"gitId":"Jolonauh"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-02-29"},{"lineNumber":35,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":36,"author":{"gitId":"Jolonauh"},"content":"* **Community**:","lastModifiedDate":"2024-02-29"},{"lineNumber":37,"author":{"gitId":"Jolonauh"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-02-29"},{"lineNumber":38,"author":{"gitId":"Jolonauh"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-02-29"},{"lineNumber":39,"author":{"gitId":"Jolonauh"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-02-29"},{"lineNumber":40,"author":{"gitId":"Jolonauh"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-02-29"},{"lineNumber":41,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":42,"author":{"gitId":"Jolonauh"},"content":"* **Tools**:","lastModifiedDate":"2024-02-29"},{"lineNumber":43,"author":{"gitId":"Jolonauh"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-02-29"},{"lineNumber":44,"author":{"gitId":"Jolonauh"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-02-29"},{"lineNumber":45,"author":{"gitId":"Jolonauh"},"content":" _","lastModifiedDate":"2024-02-29"}],"authorContributionMap":{"Jolonauh":45}},{"path":"docs/team/jeremiah.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Jolonauh"},"content":"---","lastModifiedDate":"2024-02-29"},{"lineNumber":2,"author":{"gitId":"Jolonauh"},"content":" layout: default.md","lastModifiedDate":"2024-02-29"},{"lineNumber":3,"author":{"gitId":"Jolonauh"},"content":" title: \"Au Jun Ming Jeremiah\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-02-29"},{"lineNumber":4,"author":{"gitId":"Jolonauh"},"content":"---","lastModifiedDate":"2024-02-29"},{"lineNumber":5,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":6,"author":{"gitId":"Jolonauh"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-02-29"},{"lineNumber":7,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":8,"author":{"gitId":"Jolonauh"},"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":"2024-02-29"},{"lineNumber":9,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":10,"author":{"gitId":"Jolonauh"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-02-29"},{"lineNumber":11,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":12,"author":{"gitId":"Jolonauh"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-02-29"},{"lineNumber":13,"author":{"gitId":"Jolonauh"},"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":"2024-02-29"},{"lineNumber":14,"author":{"gitId":"Jolonauh"},"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":"2024-02-29"},{"lineNumber":15,"author":{"gitId":"Jolonauh"},"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":"2024-02-29"},{"lineNumber":16,"author":{"gitId":"Jolonauh"},"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":"2024-02-29"},{"lineNumber":17,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":18,"author":{"gitId":"Jolonauh"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-02-29"},{"lineNumber":19,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":20,"author":{"gitId":"Jolonauh"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-02-29"},{"lineNumber":21,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":22,"author":{"gitId":"Jolonauh"},"content":"* **Project management**:","lastModifiedDate":"2024-02-29"},{"lineNumber":23,"author":{"gitId":"Jolonauh"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-02-29"},{"lineNumber":24,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":25,"author":{"gitId":"Jolonauh"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-02-29"},{"lineNumber":26,"author":{"gitId":"Jolonauh"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-02-29"},{"lineNumber":27,"author":{"gitId":"Jolonauh"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-02-29"},{"lineNumber":28,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":29,"author":{"gitId":"Jolonauh"},"content":"* **Documentation**:","lastModifiedDate":"2024-02-29"},{"lineNumber":30,"author":{"gitId":"Jolonauh"},"content":" * User Guide:","lastModifiedDate":"2024-02-29"},{"lineNumber":31,"author":{"gitId":"Jolonauh"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-02-29"},{"lineNumber":32,"author":{"gitId":"Jolonauh"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-02-29"},{"lineNumber":33,"author":{"gitId":"Jolonauh"},"content":" * Developer Guide:","lastModifiedDate":"2024-02-29"},{"lineNumber":34,"author":{"gitId":"Jolonauh"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-02-29"},{"lineNumber":35,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":36,"author":{"gitId":"Jolonauh"},"content":"* **Community**:","lastModifiedDate":"2024-02-29"},{"lineNumber":37,"author":{"gitId":"Jolonauh"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-02-29"},{"lineNumber":38,"author":{"gitId":"Jolonauh"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-02-29"},{"lineNumber":39,"author":{"gitId":"Jolonauh"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-02-29"},{"lineNumber":40,"author":{"gitId":"Jolonauh"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-02-29"},{"lineNumber":41,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":42,"author":{"gitId":"Jolonauh"},"content":"* **Tools**:","lastModifiedDate":"2024-02-29"},{"lineNumber":43,"author":{"gitId":"Jolonauh"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-02-29"},{"lineNumber":44,"author":{"gitId":"Jolonauh"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-02-29"},{"lineNumber":45,"author":{"gitId":"Jolonauh"},"content":" _","lastModifiedDate":"2024-02-29"}],"authorContributionMap":{"Jolonauh":45}},{"path":"docs/team/rishit.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Jolonauh"},"content":"---","lastModifiedDate":"2024-02-29"},{"lineNumber":2,"author":{"gitId":"Jolonauh"},"content":" layout: default.md","lastModifiedDate":"2024-02-29"},{"lineNumber":3,"author":{"gitId":"Jolonauh"},"content":" title: \"Rishit Khandelwal\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-02-29"},{"lineNumber":4,"author":{"gitId":"Jolonauh"},"content":"---","lastModifiedDate":"2024-02-29"},{"lineNumber":5,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":6,"author":{"gitId":"Jolonauh"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-02-29"},{"lineNumber":7,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":8,"author":{"gitId":"Jolonauh"},"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":"2024-02-29"},{"lineNumber":9,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":10,"author":{"gitId":"Jolonauh"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-02-29"},{"lineNumber":11,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":12,"author":{"gitId":"Jolonauh"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-02-29"},{"lineNumber":13,"author":{"gitId":"Jolonauh"},"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":"2024-02-29"},{"lineNumber":14,"author":{"gitId":"Jolonauh"},"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":"2024-02-29"},{"lineNumber":15,"author":{"gitId":"Jolonauh"},"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":"2024-02-29"},{"lineNumber":16,"author":{"gitId":"Jolonauh"},"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":"2024-02-29"},{"lineNumber":17,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":18,"author":{"gitId":"Jolonauh"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-02-29"},{"lineNumber":19,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":20,"author":{"gitId":"Jolonauh"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-02-29"},{"lineNumber":21,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":22,"author":{"gitId":"Jolonauh"},"content":"* **Project management**:","lastModifiedDate":"2024-02-29"},{"lineNumber":23,"author":{"gitId":"Jolonauh"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-02-29"},{"lineNumber":24,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":25,"author":{"gitId":"Jolonauh"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-02-29"},{"lineNumber":26,"author":{"gitId":"Jolonauh"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-02-29"},{"lineNumber":27,"author":{"gitId":"Jolonauh"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-02-29"},{"lineNumber":28,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":29,"author":{"gitId":"Jolonauh"},"content":"* **Documentation**:","lastModifiedDate":"2024-02-29"},{"lineNumber":30,"author":{"gitId":"Jolonauh"},"content":" * User Guide:","lastModifiedDate":"2024-02-29"},{"lineNumber":31,"author":{"gitId":"Jolonauh"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-02-29"},{"lineNumber":32,"author":{"gitId":"Jolonauh"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-02-29"},{"lineNumber":33,"author":{"gitId":"Jolonauh"},"content":" * Developer Guide:","lastModifiedDate":"2024-02-29"},{"lineNumber":34,"author":{"gitId":"Jolonauh"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-02-29"},{"lineNumber":35,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":36,"author":{"gitId":"Jolonauh"},"content":"* **Community**:","lastModifiedDate":"2024-02-29"},{"lineNumber":37,"author":{"gitId":"Jolonauh"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-02-29"},{"lineNumber":38,"author":{"gitId":"Jolonauh"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-02-29"},{"lineNumber":39,"author":{"gitId":"Jolonauh"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-02-29"},{"lineNumber":40,"author":{"gitId":"Jolonauh"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-02-29"},{"lineNumber":41,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":42,"author":{"gitId":"Jolonauh"},"content":"* **Tools**:","lastModifiedDate":"2024-02-29"},{"lineNumber":43,"author":{"gitId":"Jolonauh"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-02-29"},{"lineNumber":44,"author":{"gitId":"Jolonauh"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-02-29"},{"lineNumber":45,"author":{"gitId":"Jolonauh"},"content":" _","lastModifiedDate":"2024-02-29"}],"authorContributionMap":{"Jolonauh":45}},{"path":"docs/team/tejas.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Jolonauh"},"content":"---","lastModifiedDate":"2024-02-29"},{"lineNumber":2,"author":{"gitId":"Jolonauh"},"content":" layout: default.md","lastModifiedDate":"2024-02-29"},{"lineNumber":3,"author":{"gitId":"Jolonauh"},"content":" title: \"Tejas Sadasivam\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-02-29"},{"lineNumber":4,"author":{"gitId":"Jolonauh"},"content":"---","lastModifiedDate":"2024-02-29"},{"lineNumber":5,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":6,"author":{"gitId":"Jolonauh"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-02-29"},{"lineNumber":7,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":8,"author":{"gitId":"Jolonauh"},"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":"2024-02-29"},{"lineNumber":9,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":10,"author":{"gitId":"Jolonauh"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-02-29"},{"lineNumber":11,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":12,"author":{"gitId":"Jolonauh"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-02-29"},{"lineNumber":13,"author":{"gitId":"Jolonauh"},"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":"2024-02-29"},{"lineNumber":14,"author":{"gitId":"Jolonauh"},"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":"2024-02-29"},{"lineNumber":15,"author":{"gitId":"Jolonauh"},"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":"2024-02-29"},{"lineNumber":16,"author":{"gitId":"Jolonauh"},"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":"2024-02-29"},{"lineNumber":17,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":18,"author":{"gitId":"Jolonauh"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-02-29"},{"lineNumber":19,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":20,"author":{"gitId":"Jolonauh"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-02-29"},{"lineNumber":21,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":22,"author":{"gitId":"Jolonauh"},"content":"* **Project management**:","lastModifiedDate":"2024-02-29"},{"lineNumber":23,"author":{"gitId":"Jolonauh"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-02-29"},{"lineNumber":24,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":25,"author":{"gitId":"Jolonauh"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-02-29"},{"lineNumber":26,"author":{"gitId":"Jolonauh"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-02-29"},{"lineNumber":27,"author":{"gitId":"Jolonauh"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-02-29"},{"lineNumber":28,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":29,"author":{"gitId":"Jolonauh"},"content":"* **Documentation**:","lastModifiedDate":"2024-02-29"},{"lineNumber":30,"author":{"gitId":"Jolonauh"},"content":" * User Guide:","lastModifiedDate":"2024-02-29"},{"lineNumber":31,"author":{"gitId":"Jolonauh"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-02-29"},{"lineNumber":32,"author":{"gitId":"Jolonauh"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-02-29"},{"lineNumber":33,"author":{"gitId":"Jolonauh"},"content":" * Developer Guide:","lastModifiedDate":"2024-02-29"},{"lineNumber":34,"author":{"gitId":"Jolonauh"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-02-29"},{"lineNumber":35,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":36,"author":{"gitId":"Jolonauh"},"content":"* **Community**:","lastModifiedDate":"2024-02-29"},{"lineNumber":37,"author":{"gitId":"Jolonauh"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-02-29"},{"lineNumber":38,"author":{"gitId":"Jolonauh"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-02-29"},{"lineNumber":39,"author":{"gitId":"Jolonauh"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-02-29"},{"lineNumber":40,"author":{"gitId":"Jolonauh"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-02-29"},{"lineNumber":41,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":42,"author":{"gitId":"Jolonauh"},"content":"* **Tools**:","lastModifiedDate":"2024-02-29"},{"lineNumber":43,"author":{"gitId":"Jolonauh"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-02-29"},{"lineNumber":44,"author":{"gitId":"Jolonauh"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-02-29"},{"lineNumber":45,"author":{"gitId":"Jolonauh"},"content":" _","lastModifiedDate":"2024-02-29"}],"authorContributionMap":{"Jolonauh":45}},{"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":"Jolonauh"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_NAME \u003d \"The person name provided is invalid\";","lastModifiedDate":"2024-03-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":"Jolonauh"},"content":" public static final String MESSAGE_DUPLICATE_NAMES \u003d \"There are people with the same names in the list\";","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"Rishit02"},"content":" .append(\"; Next Of Kin: \")","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"Rishit02"},"content":" .append(person.getNextOfKin())","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"Rishit02"},"content":" .append(\"; Description: \")","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"Rishit02"},"content":" .append(person.getDescription())","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" person.getTags().forEach(builder::append);","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"Jolonauh":2,"Rishit02":4,"-":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":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"Rishit02"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DESCRIPTION;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"Rishit02"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NOK;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-08-24"},{"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":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a person to the address book. \"","lastModifiedDate":"2016-08-24"},{"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":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2017-05-09"},{"lineNumber":31,"author":{"gitId":"Rishit02"},"content":" + PREFIX_NOK + \"NEXT OF KIN \"","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"Rishit02"},"content":" + PREFIX_DESCRIPTION + \"DESCRIPTION \"","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09"},{"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":"-"},"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":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":39,"author":{"gitId":"Rishit02"},"content":" + PREFIX_NOK + \"Joe Doe \"","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"Rishit02"},"content":" + PREFIX_DESCRIPTION + \"Has a history of memory loss \"","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"Rishit02"},"content":" + PREFIX_TAG + \"mentalIllness \"","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"owesMoney\";","lastModifiedDate":"2017-05-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: %1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book\";","lastModifiedDate":"2016-08-24"},{"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":{"Rishit02":7,"-":83}},{"path":"src/main/java/seedu/address/logic/commands/UpdateCommand.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":"Jolonauh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-07"},{"lineNumber":5,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DESCRIPTION;","lastModifiedDate":"2024-03-07"},{"lineNumber":6,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-07"},{"lineNumber":7,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-07"},{"lineNumber":8,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NOK;","lastModifiedDate":"2024-03-07"},{"lineNumber":9,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-07"},{"lineNumber":10,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-07"},{"lineNumber":11,"author":{"gitId":"pjanthony2001"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_UPDATE;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":20,"author":{"gitId":"Jolonauh"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":27,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-07"},{"lineNumber":28,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.model.person.Description;","lastModifiedDate":"2024-03-07"},{"lineNumber":29,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-07"},{"lineNumber":30,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-07"},{"lineNumber":31,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.model.person.NextOfKin;","lastModifiedDate":"2024-03-07"},{"lineNumber":32,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-07"},{"lineNumber":33,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26"},{"lineNumber":37,"author":{"gitId":"Jolonauh"},"content":" * Updates the details of an existing person in the address book.","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":39,"author":{"gitId":"Jolonauh"},"content":"public class UpdateCommand extends Command {","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":41,"author":{"gitId":"Jolonauh"},"content":" public static final String COMMAND_WORD \u003d \"update\";","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":43,"author":{"gitId":"Jolonauh"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Updates the details of the person identified \"","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"Jolonauh"},"content":" + \"by their full name used in the displayed person list. \"","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"Jolonauh"},"content":" + \"The full name provided is not required to be case sensitive. \"","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26"},{"lineNumber":47,"author":{"gitId":"Jolonauh"},"content":" + \"Parameters: u/TARGET_NAME \"","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"Jolonauh"},"content":" + \"[\" + PREFIX_NAME + \"NEW_NAME] \"","lastModifiedDate":"2024-03-15"},{"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":"Jolonauh"},"content":" + \"[\" + PREFIX_DESCRIPTION + \"DESCRIPTION] \"","lastModifiedDate":"2024-03-06"},{"lineNumber":53,"author":{"gitId":"Jolonauh"},"content":" + \"[\" + PREFIX_NOK + \"NEXT_OF_KIN] \"","lastModifiedDate":"2024-03-06"},{"lineNumber":54,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09"},{"lineNumber":55,"author":{"gitId":"pjanthony2001"},"content":" + \"Example: \" + COMMAND_WORD + \" \" + PREFIX_UPDATE + \"John Doe \"","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":59,"author":{"gitId":"Jolonauh"},"content":" public static final String MESSAGE_UPDATE_PERSON_SUCCESS \u003d \"Updated Person: %1$s\";","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"Jolonauh"},"content":" public static final String MESSAGE_NOT_UPDATED \u003d \"At least one field to update must be provided.\";","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":63,"author":{"gitId":"Jolonauh"},"content":" private final Name name;","lastModifiedDate":"2024-03-15"},{"lineNumber":64,"author":{"gitId":"Jolonauh"},"content":" private final UpdatePersonDescriptor updatePersonDescriptor;","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":67,"author":{"gitId":"Jolonauh"},"content":" * @param name of the person in the filtered person list to update","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"Jolonauh"},"content":" * @param updatePersonDescriptor details to update the person with","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":70,"author":{"gitId":"Jolonauh"},"content":" public UpdateCommand(Name name, UpdatePersonDescriptor updatePersonDescriptor) {","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"Jolonauh"},"content":" requireNonNull(name);","lastModifiedDate":"2024-03-15"},{"lineNumber":72,"author":{"gitId":"Jolonauh"},"content":" requireNonNull(updatePersonDescriptor);","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":74,"author":{"gitId":"Jolonauh"},"content":" this.name \u003d name;","lastModifiedDate":"2024-03-15"},{"lineNumber":75,"author":{"gitId":"Jolonauh"},"content":" this.updatePersonDescriptor \u003d new UpdatePersonDescriptor(updatePersonDescriptor);","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":80,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":81,"author":{"gitId":"Jolonauh"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getAddressBook().getPersonList();","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":83,"author":{"gitId":"Jolonauh"},"content":" Name lowerCaseName \u003d new Name(name.fullName.toLowerCase());","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"Jolonauh"},"content":" List\u003cPerson\u003e sameNamePeople \u003d lastShownList.stream()","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"Jolonauh"},"content":" .filter(person -\u003e person.getLowerCaseName().equals(lowerCaseName))","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"Jolonauh"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2024-03-16"},{"lineNumber":87,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":88,"author":{"gitId":"Jolonauh"},"content":" if (sameNamePeople.isEmpty()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"Jolonauh"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_NAME);","lastModifiedDate":"2024-03-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":92,"author":{"gitId":"Jolonauh"},"content":" if (sameNamePeople.size() \u003e 1) {","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"Jolonauh"},"content":" throw new CommandException(Messages.MESSAGE_DUPLICATE_NAMES);","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"Jolonauh"},"content":" Person personToUpdate \u003d sameNamePeople.get(0);","lastModifiedDate":"2024-03-16"},{"lineNumber":97,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":98,"author":{"gitId":"Jolonauh"},"content":" Person updatedPerson \u003d createUpdatedPerson(personToUpdate, updatePersonDescriptor);","lastModifiedDate":"2024-03-16"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":100,"author":{"gitId":"Jolonauh"},"content":" if (!personToUpdate.isSamePerson(updatedPerson) \u0026\u0026 model.hasPerson(updatedPerson)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":101,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":104,"author":{"gitId":"Jolonauh"},"content":" model.setPerson(personToUpdate, updatedPerson);","lastModifiedDate":"2024-03-16"},{"lineNumber":105,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":106,"author":{"gitId":"Jolonauh"},"content":" return new CommandResult(String.format(MESSAGE_UPDATE_PERSON_SUCCESS, Messages.format(updatedPerson)));","lastModifiedDate":"2024-03-16"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":109,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":110,"author":{"gitId":"Jolonauh"},"content":" * Creates and returns a {@code Person} with the details of {@code personToUpdate}","lastModifiedDate":"2024-03-16"},{"lineNumber":111,"author":{"gitId":"Jolonauh"},"content":" * updated with {@code updatePersonDescriptor}.","lastModifiedDate":"2024-03-16"},{"lineNumber":112,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":113,"author":{"gitId":"Jolonauh"},"content":" private static Person createUpdatedPerson(Person personToUpdate, UpdatePersonDescriptor updatePersonDescriptor) {","lastModifiedDate":"2024-03-16"},{"lineNumber":114,"author":{"gitId":"Jolonauh"},"content":" assert personToUpdate !\u003d null;","lastModifiedDate":"2024-03-16"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":116,"author":{"gitId":"Jolonauh"},"content":" Name updatedName \u003d updatePersonDescriptor.getName().orElse(personToUpdate.getName());","lastModifiedDate":"2024-03-16"},{"lineNumber":117,"author":{"gitId":"Jolonauh"},"content":" Phone updatedPhone \u003d updatePersonDescriptor.getPhone().orElse(personToUpdate.getPhone());","lastModifiedDate":"2024-03-16"},{"lineNumber":118,"author":{"gitId":"Jolonauh"},"content":" Email updatedEmail \u003d updatePersonDescriptor.getEmail().orElse(personToUpdate.getEmail());","lastModifiedDate":"2024-03-16"},{"lineNumber":119,"author":{"gitId":"Jolonauh"},"content":" Address updatedAddress \u003d updatePersonDescriptor.getAddress().orElse(personToUpdate.getAddress());","lastModifiedDate":"2024-03-16"},{"lineNumber":120,"author":{"gitId":"Jolonauh"},"content":" Description updatedDescription \u003d updatePersonDescriptor.getDescription().orElse(personToUpdate","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"Jolonauh"},"content":" .getDescription());","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"Jolonauh"},"content":" NextOfKin updatedNextOfKin \u003d updatePersonDescriptor.getNextOfKin().orElse(personToUpdate.getNextOfKin());","lastModifiedDate":"2024-03-16"},{"lineNumber":123,"author":{"gitId":"Jolonauh"},"content":" Set\u003cTag\u003e updatedTags \u003d updatePersonDescriptor.getTags().orElse(personToUpdate.getTags());","lastModifiedDate":"2024-03-16"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":125,"author":{"gitId":"Jolonauh"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress,","lastModifiedDate":"2024-03-06"},{"lineNumber":126,"author":{"gitId":"Jolonauh"},"content":" updatedDescription, updatedNextOfKin, updatedTags","lastModifiedDate":"2024-03-06"},{"lineNumber":127,"author":{"gitId":"Jolonauh"},"content":" );","lastModifiedDate":"2024-03-06"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":130,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":136,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08"},{"lineNumber":137,"author":{"gitId":"Jolonauh"},"content":" if (!(other instanceof UpdateCommand)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":138,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":141,"author":{"gitId":"Jolonauh"},"content":" UpdateCommand otherUpdateCommand \u003d (UpdateCommand) other;","lastModifiedDate":"2024-03-16"},{"lineNumber":142,"author":{"gitId":"Jolonauh"},"content":" return name.equals(otherUpdateCommand.name)","lastModifiedDate":"2024-03-16"},{"lineNumber":143,"author":{"gitId":"Jolonauh"},"content":" \u0026\u0026 updatePersonDescriptor.equals(otherUpdateCommand.updatePersonDescriptor);","lastModifiedDate":"2024-03-16"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":146,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":149,"author":{"gitId":"Jolonauh"},"content":" .add(\"name\", name)","lastModifiedDate":"2024-03-15"},{"lineNumber":150,"author":{"gitId":"Jolonauh"},"content":" .add(\"updatePersonDescriptor\", updatePersonDescriptor)","lastModifiedDate":"2024-03-16"},{"lineNumber":151,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":155,"author":{"gitId":"Jolonauh"},"content":" * Stores the details to update the person with. Each non-empty field value will replace the","lastModifiedDate":"2024-03-16"},{"lineNumber":156,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26"},{"lineNumber":157,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":158,"author":{"gitId":"Jolonauh"},"content":" public static class UpdatePersonDescriptor {","lastModifiedDate":"2024-03-16"},{"lineNumber":159,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21"},{"lineNumber":160,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":161,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":162,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21"},{"lineNumber":163,"author":{"gitId":"Jolonauh"},"content":" private Description description;","lastModifiedDate":"2024-03-06"},{"lineNumber":164,"author":{"gitId":"Jolonauh"},"content":" private NextOfKin nextOfKin;","lastModifiedDate":"2024-03-06"},{"lineNumber":165,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":167,"author":{"gitId":"Jolonauh"},"content":" public UpdatePersonDescriptor() {}","lastModifiedDate":"2024-03-16"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":169,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":170,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11"},{"lineNumber":171,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":172,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":173,"author":{"gitId":"Jolonauh"},"content":" public UpdatePersonDescriptor(UpdatePersonDescriptor toCopy) {","lastModifiedDate":"2024-03-16"},{"lineNumber":174,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15"},{"lineNumber":175,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15"},{"lineNumber":176,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15"},{"lineNumber":177,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15"},{"lineNumber":178,"author":{"gitId":"Jolonauh"},"content":" setDescription(toCopy.description);","lastModifiedDate":"2024-03-06"},{"lineNumber":179,"author":{"gitId":"Jolonauh"},"content":" setNextOfKin(toCopy.nextOfKin);","lastModifiedDate":"2024-03-06"},{"lineNumber":180,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11"},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":183,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":184,"author":{"gitId":"Jolonauh"},"content":" * Returns true if at least one field is updated.","lastModifiedDate":"2024-03-16"},{"lineNumber":185,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":186,"author":{"gitId":"Jolonauh"},"content":" public boolean isAnyFieldUpdated() {","lastModifiedDate":"2024-03-16"},{"lineNumber":187,"author":{"gitId":"-"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, tags);","lastModifiedDate":"2018-08-14"},{"lineNumber":188,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":190,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21"},{"lineNumber":191,"author":{"gitId":"-"},"content":" this.name \u003d name;","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 Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":195,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","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 void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21"},{"lineNumber":199,"author":{"gitId":"-"},"content":" this.phone \u003d 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 Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26"},{"lineNumber":203,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","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 void setEmail(Email email) {","lastModifiedDate":"2017-06-21"},{"lineNumber":207,"author":{"gitId":"-"},"content":" this.email \u003d 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":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":211,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21"},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":214,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21"},{"lineNumber":215,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21"},{"lineNumber":216,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":218,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26"},{"lineNumber":219,"author":{"gitId":"-"},"content":" return Optional.ofNullable(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":"Jolonauh"},"content":" public void setDescription(Description description) {","lastModifiedDate":"2024-03-06"},{"lineNumber":223,"author":{"gitId":"Jolonauh"},"content":" this.description \u003d description;","lastModifiedDate":"2024-03-06"},{"lineNumber":224,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":225,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":226,"author":{"gitId":"Jolonauh"},"content":" public Optional\u003cDescription\u003e getDescription() {","lastModifiedDate":"2024-03-06"},{"lineNumber":227,"author":{"gitId":"Jolonauh"},"content":" return Optional.ofNullable(description);","lastModifiedDate":"2024-03-06"},{"lineNumber":228,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":229,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":230,"author":{"gitId":"Jolonauh"},"content":" public void setNextOfKin(NextOfKin nextOfKin) {","lastModifiedDate":"2024-03-06"},{"lineNumber":231,"author":{"gitId":"Jolonauh"},"content":" this.nextOfKin \u003d nextOfKin;","lastModifiedDate":"2024-03-06"},{"lineNumber":232,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":233,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":234,"author":{"gitId":"Jolonauh"},"content":" public Optional\u003cNextOfKin\u003e getNextOfKin() {","lastModifiedDate":"2024-03-06"},{"lineNumber":235,"author":{"gitId":"Jolonauh"},"content":" return Optional.ofNullable(nextOfKin);","lastModifiedDate":"2024-03-06"},{"lineNumber":236,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":237,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":238,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":239,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11"},{"lineNumber":240,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":241,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":242,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21"},{"lineNumber":243,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11"},{"lineNumber":244,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":246,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":247,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11"},{"lineNumber":248,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11"},{"lineNumber":249,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11"},{"lineNumber":250,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":251,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":252,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11"},{"lineNumber":253,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":255,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":256,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":257,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":258,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":259,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":261,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":262,"author":{"gitId":"Jolonauh"},"content":" if (!(other instanceof UpdatePersonDescriptor)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":263,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":264,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":266,"author":{"gitId":"Jolonauh"},"content":" UpdatePersonDescriptor otherUpdatePersonDescriptor \u003d (UpdatePersonDescriptor) other;","lastModifiedDate":"2024-03-16"},{"lineNumber":267,"author":{"gitId":"Jolonauh"},"content":" return Objects.equals(name, otherUpdatePersonDescriptor.name)","lastModifiedDate":"2024-03-16"},{"lineNumber":268,"author":{"gitId":"Jolonauh"},"content":" \u0026\u0026 Objects.equals(phone, otherUpdatePersonDescriptor.phone)","lastModifiedDate":"2024-03-16"},{"lineNumber":269,"author":{"gitId":"Jolonauh"},"content":" \u0026\u0026 Objects.equals(email, otherUpdatePersonDescriptor.email)","lastModifiedDate":"2024-03-16"},{"lineNumber":270,"author":{"gitId":"Jolonauh"},"content":" \u0026\u0026 Objects.equals(address, otherUpdatePersonDescriptor.address)","lastModifiedDate":"2024-03-16"},{"lineNumber":271,"author":{"gitId":"Jolonauh"},"content":" \u0026\u0026 Objects.equals(description, otherUpdatePersonDescriptor.description)","lastModifiedDate":"2024-03-16"},{"lineNumber":272,"author":{"gitId":"Jolonauh"},"content":" \u0026\u0026 Objects.equals(nextOfKin, otherUpdatePersonDescriptor.nextOfKin)","lastModifiedDate":"2024-03-16"},{"lineNumber":273,"author":{"gitId":"Jolonauh"},"content":" \u0026\u0026 Objects.equals(tags, otherUpdatePersonDescriptor.tags);","lastModifiedDate":"2024-03-16"},{"lineNumber":274,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":277,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":278,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":279,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":280,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":281,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":282,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":283,"author":{"gitId":"Jolonauh"},"content":" .add(\"description\", description)","lastModifiedDate":"2024-03-06"},{"lineNumber":284,"author":{"gitId":"Jolonauh"},"content":" .add(\"nextOfKin\", nextOfKin)","lastModifiedDate":"2024-03-07"},{"lineNumber":285,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":286,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":287,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":288,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":289,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"pjanthony2001":2,"Jolonauh":112,"-":175}},{"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":"Rishit02"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"Rishit02"},"content":"","lastModifiedDate":"2024-03-12"},{"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":{"Rishit02":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":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"Rishit02"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DESCRIPTION;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"Rishit02"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NOK;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-13"},{"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":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-07"},{"lineNumber":18,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.model.person.Description;","lastModifiedDate":"2024-03-07"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-07"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-07"},{"lineNumber":21,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.model.person.NextOfKin;","lastModifiedDate":"2024-03-07"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-07"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-07"},{"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":"Rishit02"},"content":" * Parses input arguments and creates a new AddCommand object.","lastModifiedDate":"2024-03-13"},{"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":"Rishit02"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":38,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":39,"author":{"gitId":"Rishit02"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_NOK,","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"Rishit02"},"content":" PREFIX_DESCRIPTION, PREFIX_TAG);","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":42,"author":{"gitId":"Rishit02"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_NOK,","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"Rishit02"},"content":" PREFIX_DESCRIPTION)","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":48,"author":{"gitId":"Rishit02"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_NOK,","lastModifiedDate":"2024-03-15"},{"lineNumber":49,"author":{"gitId":"Rishit02"},"content":" PREFIX_DESCRIPTION);","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":51,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":52,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":54,"author":{"gitId":"Rishit02"},"content":" Description description \u003d ParserUtil.parseDescription(argMultimap.getValue(PREFIX_DESCRIPTION).get());","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"Rishit02"},"content":" NextOfKin nextOfKin \u003d ParserUtil.parseNextOfKin(argMultimap.getValue(PREFIX_NOK).get());","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":58,"author":{"gitId":"Jolonauh"},"content":" Person person \u003d new Person(name, phone, email, address, description, nextOfKin, tagList);","lastModifiedDate":"2024-03-06"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17"},{"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":"2017-03-17"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17"},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":67,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17"},{"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":{"Rishit02":12,"Jolonauh":3,"-":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":"-"},"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.ExitCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":19,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.logic.commands.UpdateCommand;","lastModifiedDate":"2024-03-17"},{"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":"Jolonauh"},"content":" case UpdateCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"Jolonauh"},"content":" return new UpdateCommandParser().parse(arguments);","lastModifiedDate":"2024-03-16"},{"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"}],"authorContributionMap":{"Jolonauh":3,"-":83}},{"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":"Jolonauh"},"content":" public static final Prefix PREFIX_DESCRIPTION \u003d new Prefix(\"d/\");","lastModifiedDate":"2024-03-06"},{"lineNumber":15,"author":{"gitId":"Jolonauh"},"content":" public static final Prefix PREFIX_NOK \u003d new Prefix(\"k/\");","lastModifiedDate":"2024-03-06"},{"lineNumber":16,"author":{"gitId":"Jolonauh"},"content":" public static final Prefix PREFIX_UPDATE \u003d new Prefix(\"u/\");","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"Jolonauh":3,"-":14}},{"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":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-02-11"},{"lineNumber":13,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.model.person.Description;","lastModifiedDate":"2024-03-07"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11"},{"lineNumber":16,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.model.person.NextOfKin;","lastModifiedDate":"2024-03-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-02-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-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":"-"},"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":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"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":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":62,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30"},{"lineNumber":63,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":64,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":65,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30"},{"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":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30"},{"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":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":77,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30"},{"lineNumber":78,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":79,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":80,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30"},{"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":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30"},{"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":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":92,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":93,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":94,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":97,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","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":"Jolonauh"},"content":" /**","lastModifiedDate":"2024-03-07"},{"lineNumber":101,"author":{"gitId":"Jolonauh"},"content":" * Parses a {@code String description} into a {@code Description}.","lastModifiedDate":"2024-03-07"},{"lineNumber":102,"author":{"gitId":"Jolonauh"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-07"},{"lineNumber":103,"author":{"gitId":"Jolonauh"},"content":" *","lastModifiedDate":"2024-03-07"},{"lineNumber":104,"author":{"gitId":"Jolonauh"},"content":" * @throws ParseException if the given {@code description} is invalid.","lastModifiedDate":"2024-03-07"},{"lineNumber":105,"author":{"gitId":"Jolonauh"},"content":" */","lastModifiedDate":"2024-03-07"},{"lineNumber":106,"author":{"gitId":"Jolonauh"},"content":" public static Description parseDescription(String description) throws ParseException {","lastModifiedDate":"2024-03-07"},{"lineNumber":107,"author":{"gitId":"Jolonauh"},"content":" requireNonNull(description);","lastModifiedDate":"2024-03-07"},{"lineNumber":108,"author":{"gitId":"Jolonauh"},"content":" String trimmedDescription \u003d description.trim();","lastModifiedDate":"2024-03-07"},{"lineNumber":109,"author":{"gitId":"Jolonauh"},"content":" if (!Description.isValidDescription(trimmedDescription)) {","lastModifiedDate":"2024-03-07"},{"lineNumber":110,"author":{"gitId":"Jolonauh"},"content":" throw new ParseException(Description.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-07"},{"lineNumber":111,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":112,"author":{"gitId":"Jolonauh"},"content":" return new Description(trimmedDescription);","lastModifiedDate":"2024-03-07"},{"lineNumber":113,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":114,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":115,"author":{"gitId":"Jolonauh"},"content":" /**","lastModifiedDate":"2024-03-07"},{"lineNumber":116,"author":{"gitId":"Jolonauh"},"content":" * Parses a {@code String nextOfKin} into an {@code NextOfKin}.","lastModifiedDate":"2024-03-07"},{"lineNumber":117,"author":{"gitId":"Jolonauh"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-07"},{"lineNumber":118,"author":{"gitId":"Jolonauh"},"content":" *","lastModifiedDate":"2024-03-07"},{"lineNumber":119,"author":{"gitId":"Jolonauh"},"content":" * @throws ParseException if the given {@code nextOfKin} is invalid.","lastModifiedDate":"2024-03-07"},{"lineNumber":120,"author":{"gitId":"Jolonauh"},"content":" */","lastModifiedDate":"2024-03-07"},{"lineNumber":121,"author":{"gitId":"Jolonauh"},"content":" public static NextOfKin parseNextOfKin(String nextOfKin) throws ParseException {","lastModifiedDate":"2024-03-07"},{"lineNumber":122,"author":{"gitId":"Jolonauh"},"content":" requireNonNull(nextOfKin);","lastModifiedDate":"2024-03-07"},{"lineNumber":123,"author":{"gitId":"Jolonauh"},"content":" String trimmedNextOfKin \u003d nextOfKin.trim();","lastModifiedDate":"2024-03-07"},{"lineNumber":124,"author":{"gitId":"Jolonauh"},"content":" if (!NextOfKin.isValidNextOfKin(trimmedNextOfKin)) {","lastModifiedDate":"2024-03-07"},{"lineNumber":125,"author":{"gitId":"Jolonauh"},"content":" throw new ParseException(NextOfKin.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-07"},{"lineNumber":126,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":127,"author":{"gitId":"Jolonauh"},"content":" return new NextOfKin(trimmedNextOfKin);","lastModifiedDate":"2024-03-07"},{"lineNumber":128,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":129,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":130,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":131,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":132,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":133,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":134,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":135,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":136,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":137,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30"},{"lineNumber":138,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":139,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":140,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":142,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":145,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":146,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07"},{"lineNumber":147,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":148,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":149,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15"},{"lineNumber":150,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11"},{"lineNumber":151,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11"},{"lineNumber":152,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":154,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":156,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"Jolonauh":32,"-":124}},{"path":"src/main/java/seedu/address/logic/parser/UpdateCommandParser.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":"Jolonauh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DESCRIPTION;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NOK;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_UPDATE;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26"},{"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":"Jolonauh"},"content":"import seedu.address.logic.commands.UpdateCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.logic.commands.UpdateCommand.UpdatePersonDescriptor;","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":22,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":26,"author":{"gitId":"Jolonauh"},"content":" * Parses input arguments and creates a new UpdateCommand object","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":28,"author":{"gitId":"Jolonauh"},"content":"public class UpdateCommandParser implements Parser\u003cUpdateCommand\u003e {","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":31,"author":{"gitId":"Jolonauh"},"content":" * Parses the given {@code String} of arguments in the context of the UpdateCommand","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"Jolonauh"},"content":" * and returns an UpdateCommand object for execution.","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":35,"author":{"gitId":"Jolonauh"},"content":" public UpdateCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15"},{"lineNumber":37,"author":{"gitId":"Jolonauh"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_UPDATE, PREFIX_NAME, PREFIX_PHONE,","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"Jolonauh"},"content":" PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_DESCRIPTION, PREFIX_NOK, PREFIX_TAG);","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":40,"author":{"gitId":"Jolonauh"},"content":" Name name;","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":43,"author":{"gitId":"Jolonauh"},"content":" name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_UPDATE)","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"Jolonauh"},"content":" .orElseThrow(() -\u003e new ParseException(UpdateCommand.MESSAGE_USAGE)));","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10"},{"lineNumber":46,"author":{"gitId":"Jolonauh"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, UpdateCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":49,"author":{"gitId":"Jolonauh"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-03-07"},{"lineNumber":50,"author":{"gitId":"Jolonauh"},"content":" PREFIX_ADDRESS, PREFIX_DESCRIPTION, PREFIX_NOK);","lastModifiedDate":"2024-03-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":52,"author":{"gitId":"Jolonauh"},"content":" UpdateCommand.UpdatePersonDescriptor updatePersonDescriptor \u003d new UpdatePersonDescriptor();","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":55,"author":{"gitId":"Jolonauh"},"content":" updatePersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":58,"author":{"gitId":"Jolonauh"},"content":" updatePersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":60,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":61,"author":{"gitId":"Jolonauh"},"content":" updatePersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":64,"author":{"gitId":"Jolonauh"},"content":" updatePersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":66,"author":{"gitId":"Jolonauh"},"content":" if (argMultimap.getValue(PREFIX_DESCRIPTION).isPresent()) {","lastModifiedDate":"2024-03-07"},{"lineNumber":67,"author":{"gitId":"Jolonauh"},"content":" updatePersonDescriptor.setDescription(","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"Jolonauh"},"content":" ParserUtil.parseDescription(argMultimap.getValue(PREFIX_DESCRIPTION).get()));","lastModifiedDate":"2024-03-07"},{"lineNumber":69,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":70,"author":{"gitId":"Jolonauh"},"content":" if (argMultimap.getValue(PREFIX_NOK).isPresent()) {","lastModifiedDate":"2024-03-07"},{"lineNumber":71,"author":{"gitId":"Jolonauh"},"content":" updatePersonDescriptor.setNextOfKin(ParserUtil.parseNextOfKin(argMultimap.getValue(PREFIX_NOK).get()));","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":73,"author":{"gitId":"Jolonauh"},"content":" parseTagsForUpdate(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(updatePersonDescriptor::setTags);","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":75,"author":{"gitId":"Jolonauh"},"content":" if (!updatePersonDescriptor.isAnyFieldUpdated()) {","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"Jolonauh"},"content":" throw new ParseException(UpdateCommand.MESSAGE_NOT_UPDATED);","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":79,"author":{"gitId":"Jolonauh"},"content":" return new UpdateCommand(name, updatePersonDescriptor);","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":83,"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":84,"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":85,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07"},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":87,"author":{"gitId":"Jolonauh"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForUpdate(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2024-03-16"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":90,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":91,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":93,"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":94,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":97,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"Jolonauh":41,"-":56}},{"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":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.UniquePersonList;","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Wraps all data at the address-book level","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Duplicates are not allowed (by .isSamePerson comparison)","lastModifiedDate":"2018-04-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class AddressBook implements ReadOnlyAddressBook {","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private final UniquePersonList persons;","lastModifiedDate":"2016-08-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-19"},{"lineNumber":21,"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":22,"author":{"gitId":"-"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2016-10-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-19"},{"lineNumber":24,"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":25,"author":{"gitId":"-"},"content":" * among constructors.","lastModifiedDate":"2016-10-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" {","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" persons \u003d new UniquePersonList();","lastModifiedDate":"2016-08-26"},{"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() {}","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":" * Creates an AddressBook using the Persons in the {@code toBeCopied}","lastModifiedDate":"2018-03-29"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public AddressBook(ReadOnlyAddressBook toBeCopied) {","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2016-12-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" resetData(toBeCopied);","lastModifiedDate":"2016-12-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":41,"author":{"gitId":"-"},"content":" //// list overwrite operations","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Replaces the contents of the person list with {@code persons}.","lastModifiedDate":"2018-08-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2018-08-07"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void setPersons(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-08-07"},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.persons.setPersons(persons);","lastModifiedDate":"2016-10-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code AddressBook} with {@code newData}.","lastModifiedDate":"2017-08-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyAddressBook newData) {","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" requireNonNull(newData);","lastModifiedDate":"2017-05-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" setPersons(newData.getPersonList());","lastModifiedDate":"2018-03-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" //// person-level operations","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":63,"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":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return persons.contains(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-09-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * The person must not already exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void addPerson(Person p) {","lastModifiedDate":"2018-08-07"},{"lineNumber":75,"author":{"gitId":"-"},"content":" persons.add(p);","lastModifiedDate":"2018-03-29"},{"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-12-13"},{"lineNumber":79,"author":{"gitId":"Jolonauh"},"content":" * Replaces the given person {@code target} in the list with {@code updatedPerson}.","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":81,"author":{"gitId":"Jolonauh"},"content":" * The person identity of {@code updatedPerson} must not be the same as another existing person in the address book.","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":83,"author":{"gitId":"Jolonauh"},"content":" public void setPerson(Person target, Person updatedPerson) {","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"Jolonauh"},"content":" requireNonNull(updatedPerson);","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":86,"author":{"gitId":"Jolonauh"},"content":" persons.setPerson(target, updatedPerson);","lastModifiedDate":"2024-03-16"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * Removes {@code key} from this {@code AddressBook}.","lastModifiedDate":"2017-08-16"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * {@code key} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void removePerson(Person key) {","lastModifiedDate":"2018-08-07"},{"lineNumber":94,"author":{"gitId":"-"},"content":" persons.remove(key);","lastModifiedDate":"2018-02-28"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" //// util methods","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":" .add(\"persons\", persons)","lastModifiedDate":"2019-02-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"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-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":108,"author":{"gitId":"-"},"content":" return persons.asUnmodifiableObservableList();","lastModifiedDate":"2018-04-05"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-01"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-01"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"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 AddressBook)) {","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":" AddressBook otherAddressBook \u003d (AddressBook) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":" return persons.equals(otherAddressBook.persons);","lastModifiedDate":"2023-07-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":127,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":128,"author":{"gitId":"-"},"content":" return persons.hashCode();","lastModifiedDate":"2018-03-29"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":130,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"Jolonauh":5,"-":125}},{"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":"-"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2017-08-05"},{"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":"Jolonauh"},"content":" * Replaces the given person {@code target} with {@code updatedPerson}.","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":75,"author":{"gitId":"Jolonauh"},"content":" * The person identity of {@code updatedPerson} must not be the same as another existing person in the address book.","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":77,"author":{"gitId":"Jolonauh"},"content":" void setPerson(Person target, Person updatedPerson);","lastModifiedDate":"2024-03-16"},{"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":{"Jolonauh":3,"-":84}},{"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":"-"},"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":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2018-01-10"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(this.addressBook.getPersonList());","lastModifiedDate":"2019-01-25"},{"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":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25"},{"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":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","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 setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"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":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":92,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":93,"author":{"gitId":"-"},"content":" return addressBook.hasPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":" addressBook.removePerson(target);","lastModifiedDate":"2019-01-25"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":102,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":103,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":104,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13"},{"lineNumber":108,"author":{"gitId":"Jolonauh"},"content":" public void setPerson(Person target, Person updatedPerson) {","lastModifiedDate":"2024-03-16"},{"lineNumber":109,"author":{"gitId":"Jolonauh"},"content":" requireAllNonNull(target, updatedPerson);","lastModifiedDate":"2024-03-16"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":111,"author":{"gitId":"Jolonauh"},"content":" addressBook.setPerson(target, updatedPerson);","lastModifiedDate":"2024-03-16"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":114,"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":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":117,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10"},{"lineNumber":118,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11"},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":121,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":122,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":126,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":127,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05"},{"lineNumber":128,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12"},{"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":"2017-05-31"},{"lineNumber":132,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":137,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31"},{"lineNumber":138,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":139,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":143,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13"},{"lineNumber":144,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13"},{"lineNumber":145,"author":{"gitId":"-"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons);","lastModifiedDate":"2023-07-13"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":148,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"Jolonauh":3,"-":145}},{"path":"src/main/java/seedu/address/model/person/Address.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":"-"},"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":"Jolonauh"},"content":" * Returns true if a given string is a valid description.","lastModifiedDate":"2024-03-06"},{"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":{"Jolonauh":1,"-":64}},{"path":"src/main/java/seedu/address/model/person/Description.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Jolonauh"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-06"},{"lineNumber":2,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":3,"author":{"gitId":"Jolonauh"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-06"},{"lineNumber":4,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-06"},{"lineNumber":5,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":6,"author":{"gitId":"Jolonauh"},"content":"/**","lastModifiedDate":"2024-03-07"},{"lineNumber":7,"author":{"gitId":"Jolonauh"},"content":" * Represents a Person\u0027s description in the address book.","lastModifiedDate":"2024-03-07"},{"lineNumber":8,"author":{"gitId":"Jolonauh"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidDescription(String)}","lastModifiedDate":"2024-03-07"},{"lineNumber":9,"author":{"gitId":"Jolonauh"},"content":" */","lastModifiedDate":"2024-03-07"},{"lineNumber":10,"author":{"gitId":"Jolonauh"},"content":"public class Description {","lastModifiedDate":"2024-03-06"},{"lineNumber":11,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":12,"author":{"gitId":"Jolonauh"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Descriptions can take any values, and it should not be blank\";","lastModifiedDate":"2024-03-06"},{"lineNumber":13,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":14,"author":{"gitId":"Jolonauh"},"content":" /*","lastModifiedDate":"2024-03-06"},{"lineNumber":15,"author":{"gitId":"Jolonauh"},"content":" * The first character of the description must not be a whitespace,","lastModifiedDate":"2024-03-06"},{"lineNumber":16,"author":{"gitId":"Jolonauh"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-03-06"},{"lineNumber":17,"author":{"gitId":"Jolonauh"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":18,"author":{"gitId":"Jolonauh"},"content":" public static final String VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2024-03-06"},{"lineNumber":19,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":20,"author":{"gitId":"Jolonauh"},"content":" public final String value;","lastModifiedDate":"2024-03-06"},{"lineNumber":21,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":22,"author":{"gitId":"Jolonauh"},"content":" /**","lastModifiedDate":"2024-03-06"},{"lineNumber":23,"author":{"gitId":"Jolonauh"},"content":" * Constructs a {@code Description}.","lastModifiedDate":"2024-03-06"},{"lineNumber":24,"author":{"gitId":"Jolonauh"},"content":" *","lastModifiedDate":"2024-03-06"},{"lineNumber":25,"author":{"gitId":"Jolonauh"},"content":" * @param description A valid description.","lastModifiedDate":"2024-03-06"},{"lineNumber":26,"author":{"gitId":"Jolonauh"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":27,"author":{"gitId":"Jolonauh"},"content":" public Description(String description) {","lastModifiedDate":"2024-03-06"},{"lineNumber":28,"author":{"gitId":"Jolonauh"},"content":" requireNonNull(description);","lastModifiedDate":"2024-03-06"},{"lineNumber":29,"author":{"gitId":"Jolonauh"},"content":" checkArgument(isValidDescription(description), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-06"},{"lineNumber":30,"author":{"gitId":"Jolonauh"},"content":" value \u003d description;","lastModifiedDate":"2024-03-06"},{"lineNumber":31,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":32,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":33,"author":{"gitId":"Jolonauh"},"content":" /**","lastModifiedDate":"2024-03-06"},{"lineNumber":34,"author":{"gitId":"Jolonauh"},"content":" * Returns true if a given string is a valid description.","lastModifiedDate":"2024-03-06"},{"lineNumber":35,"author":{"gitId":"Jolonauh"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":36,"author":{"gitId":"Jolonauh"},"content":" public static boolean isValidDescription(String test) {","lastModifiedDate":"2024-03-06"},{"lineNumber":37,"author":{"gitId":"Jolonauh"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-06"},{"lineNumber":38,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":39,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":40,"author":{"gitId":"Jolonauh"},"content":" @Override","lastModifiedDate":"2024-03-06"},{"lineNumber":41,"author":{"gitId":"Jolonauh"},"content":" public String toString() {","lastModifiedDate":"2024-03-06"},{"lineNumber":42,"author":{"gitId":"Jolonauh"},"content":" return value;","lastModifiedDate":"2024-03-06"},{"lineNumber":43,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":44,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":45,"author":{"gitId":"Jolonauh"},"content":" @Override","lastModifiedDate":"2024-03-06"},{"lineNumber":46,"author":{"gitId":"Jolonauh"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-06"},{"lineNumber":47,"author":{"gitId":"Jolonauh"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-06"},{"lineNumber":48,"author":{"gitId":"Jolonauh"},"content":" return true;","lastModifiedDate":"2024-03-06"},{"lineNumber":49,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":50,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":51,"author":{"gitId":"Jolonauh"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-06"},{"lineNumber":52,"author":{"gitId":"Jolonauh"},"content":" if (!(other instanceof Description)) {","lastModifiedDate":"2024-03-06"},{"lineNumber":53,"author":{"gitId":"Jolonauh"},"content":" return false;","lastModifiedDate":"2024-03-06"},{"lineNumber":54,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":55,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":56,"author":{"gitId":"Jolonauh"},"content":" Description otherDescription \u003d (Description) other;","lastModifiedDate":"2024-03-06"},{"lineNumber":57,"author":{"gitId":"Jolonauh"},"content":" return value.equals(otherDescription.value);","lastModifiedDate":"2024-03-06"},{"lineNumber":58,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":59,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":60,"author":{"gitId":"Jolonauh"},"content":" @Override","lastModifiedDate":"2024-03-06"},{"lineNumber":61,"author":{"gitId":"Jolonauh"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-06"},{"lineNumber":62,"author":{"gitId":"Jolonauh"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-06"},{"lineNumber":63,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":64,"author":{"gitId":"Jolonauh"},"content":"}","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"Jolonauh":64}},{"path":"src/main/java/seedu/address/model/person/NextOfKin.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Jolonauh"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-06"},{"lineNumber":2,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":3,"author":{"gitId":"Jolonauh"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-06"},{"lineNumber":4,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-06"},{"lineNumber":5,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":6,"author":{"gitId":"Jolonauh"},"content":"/**","lastModifiedDate":"2024-03-07"},{"lineNumber":7,"author":{"gitId":"Jolonauh"},"content":" * Represents a Person\u0027s next of kin in the address book.","lastModifiedDate":"2024-03-07"},{"lineNumber":8,"author":{"gitId":"Jolonauh"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidNextOfKin(String)}","lastModifiedDate":"2024-03-07"},{"lineNumber":9,"author":{"gitId":"Jolonauh"},"content":" */","lastModifiedDate":"2024-03-07"},{"lineNumber":10,"author":{"gitId":"Jolonauh"},"content":"public class NextOfKin {","lastModifiedDate":"2024-03-06"},{"lineNumber":11,"author":{"gitId":"Rishit02"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"Rishit02"},"content":" \"Names should only contain alphanumeric characters and spaces, and it should not be blank\";","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"Rishit02"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":15,"author":{"gitId":"Jolonauh"},"content":" /*","lastModifiedDate":"2024-03-06"},{"lineNumber":16,"author":{"gitId":"Jolonauh"},"content":" * The first character of the next of kin must not be a whitespace,","lastModifiedDate":"2024-03-06"},{"lineNumber":17,"author":{"gitId":"Jolonauh"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-03-06"},{"lineNumber":18,"author":{"gitId":"Jolonauh"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":19,"author":{"gitId":"Rishit02"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}][\\\\p{Alnum} ]*\";","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":21,"author":{"gitId":"Jolonauh"},"content":" public final String value;","lastModifiedDate":"2024-03-06"},{"lineNumber":22,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":23,"author":{"gitId":"Jolonauh"},"content":" /**","lastModifiedDate":"2024-03-06"},{"lineNumber":24,"author":{"gitId":"Jolonauh"},"content":" * Constructs a {@code NextOfKin}.","lastModifiedDate":"2024-03-06"},{"lineNumber":25,"author":{"gitId":"Jolonauh"},"content":" *","lastModifiedDate":"2024-03-06"},{"lineNumber":26,"author":{"gitId":"Jolonauh"},"content":" * @param nextOfKin A valid next of kin.","lastModifiedDate":"2024-03-06"},{"lineNumber":27,"author":{"gitId":"Jolonauh"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":28,"author":{"gitId":"Jolonauh"},"content":" public NextOfKin(String nextOfKin) {","lastModifiedDate":"2024-03-06"},{"lineNumber":29,"author":{"gitId":"Jolonauh"},"content":" requireNonNull(nextOfKin);","lastModifiedDate":"2024-03-06"},{"lineNumber":30,"author":{"gitId":"Jolonauh"},"content":" checkArgument(isValidNextOfKin(nextOfKin), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-06"},{"lineNumber":31,"author":{"gitId":"Jolonauh"},"content":" value \u003d nextOfKin;","lastModifiedDate":"2024-03-06"},{"lineNumber":32,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":33,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":34,"author":{"gitId":"Jolonauh"},"content":" /**","lastModifiedDate":"2024-03-06"},{"lineNumber":35,"author":{"gitId":"Jolonauh"},"content":" * Returns true if a given string is a valid next of kin.","lastModifiedDate":"2024-03-06"},{"lineNumber":36,"author":{"gitId":"Jolonauh"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":37,"author":{"gitId":"Jolonauh"},"content":" public static boolean isValidNextOfKin(String test) {","lastModifiedDate":"2024-03-06"},{"lineNumber":38,"author":{"gitId":"Jolonauh"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-06"},{"lineNumber":39,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":40,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":41,"author":{"gitId":"Jolonauh"},"content":" @Override","lastModifiedDate":"2024-03-06"},{"lineNumber":42,"author":{"gitId":"Jolonauh"},"content":" public String toString() {","lastModifiedDate":"2024-03-06"},{"lineNumber":43,"author":{"gitId":"Jolonauh"},"content":" return value;","lastModifiedDate":"2024-03-06"},{"lineNumber":44,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":45,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":46,"author":{"gitId":"Jolonauh"},"content":" @Override","lastModifiedDate":"2024-03-06"},{"lineNumber":47,"author":{"gitId":"Jolonauh"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-06"},{"lineNumber":48,"author":{"gitId":"Jolonauh"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-06"},{"lineNumber":49,"author":{"gitId":"Jolonauh"},"content":" return true;","lastModifiedDate":"2024-03-06"},{"lineNumber":50,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":51,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":52,"author":{"gitId":"Jolonauh"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-06"},{"lineNumber":53,"author":{"gitId":"Jolonauh"},"content":" if (!(other instanceof NextOfKin)) {","lastModifiedDate":"2024-03-06"},{"lineNumber":54,"author":{"gitId":"Jolonauh"},"content":" return false;","lastModifiedDate":"2024-03-06"},{"lineNumber":55,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":56,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":57,"author":{"gitId":"Jolonauh"},"content":" NextOfKin otherNextOfKin \u003d (NextOfKin) other;","lastModifiedDate":"2024-03-06"},{"lineNumber":58,"author":{"gitId":"Jolonauh"},"content":" return value.equals(otherNextOfKin.value);","lastModifiedDate":"2024-03-06"},{"lineNumber":59,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":60,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":61,"author":{"gitId":"Jolonauh"},"content":" @Override","lastModifiedDate":"2024-03-06"},{"lineNumber":62,"author":{"gitId":"Jolonauh"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-06"},{"lineNumber":63,"author":{"gitId":"Jolonauh"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-06"},{"lineNumber":64,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":65,"author":{"gitId":"Jolonauh"},"content":"}","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"Jolonauh":61,"Rishit02":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":"-"},"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":"-"},"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 Address address;","lastModifiedDate":"2018-04-19"},{"lineNumber":26,"author":{"gitId":"Jolonauh"},"content":" private final Description description;","lastModifiedDate":"2024-03-06"},{"lineNumber":27,"author":{"gitId":"Jolonauh"},"content":" private final NextOfKin nextOfKin;","lastModifiedDate":"2024-03-06"},{"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":"Jolonauh"},"content":" public Person(Name name, Phone phone, Email email, Address address,","lastModifiedDate":"2024-03-06"},{"lineNumber":34,"author":{"gitId":"Jolonauh"},"content":" Description description, NextOfKin nextOfKin, Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-03-06"},{"lineNumber":35,"author":{"gitId":"Jolonauh"},"content":" requireAllNonNull(name, phone, email, address, description, nextOfKin, tags);","lastModifiedDate":"2024-03-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20"},{"lineNumber":40,"author":{"gitId":"Jolonauh"},"content":" this.description \u003d description;","lastModifiedDate":"2024-03-06"},{"lineNumber":41,"author":{"gitId":"Jolonauh"},"content":" this.nextOfKin \u003d nextOfKin;","lastModifiedDate":"2024-03-06"},{"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":"Jolonauh"},"content":" public Name getLowerCaseName() {","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"Jolonauh"},"content":" return new Name(name.fullName.toLowerCase());","lastModifiedDate":"2024-03-15"},{"lineNumber":51,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":52,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return email;","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 Address getAddress() {","lastModifiedDate":"2017-07-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":65,"author":{"gitId":"Jolonauh"},"content":" public Description getDescription() {","lastModifiedDate":"2024-03-06"},{"lineNumber":66,"author":{"gitId":"Jolonauh"},"content":" return description;","lastModifiedDate":"2024-03-06"},{"lineNumber":67,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":68,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":69,"author":{"gitId":"Jolonauh"},"content":" public NextOfKin getNextOfKin() {","lastModifiedDate":"2024-03-06"},{"lineNumber":70,"author":{"gitId":"Jolonauh"},"content":" return nextOfKin;","lastModifiedDate":"2024-03-06"},{"lineNumber":71,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":72,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":73,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07"},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":81,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return true;","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":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19"},{"lineNumber":91,"author":{"gitId":"-"},"content":" \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2020-12-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":101,"author":{"gitId":"-"},"content":" return true;","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":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10"},{"lineNumber":106,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":109,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10"},{"lineNumber":110,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":114,"author":{"gitId":"Jolonauh"},"content":" \u0026\u0026 description.equals(otherPerson.description)","lastModifiedDate":"2024-03-06"},{"lineNumber":115,"author":{"gitId":"Jolonauh"},"content":" \u0026\u0026 nextOfKin.equals(otherPerson.nextOfKin)","lastModifiedDate":"2024-03-06"},{"lineNumber":116,"author":{"gitId":"-"},"content":" \u0026\u0026 tags.equals(otherPerson.tags);","lastModifiedDate":"2023-07-13"},{"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 int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":121,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":122,"author":{"gitId":"Jolonauh"},"content":" return Objects.hash(name, phone, email, address, description, nextOfKin, tags);","lastModifiedDate":"2024-03-06"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":126,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":127,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":132,"author":{"gitId":"Jolonauh"},"content":" .add(\"description\", description)","lastModifiedDate":"2024-03-06"},{"lineNumber":133,"author":{"gitId":"Jolonauh"},"content":" .add(\"nextOfKin\", nextOfKin)","lastModifiedDate":"2024-03-07"},{"lineNumber":134,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":138,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"Jolonauh":24,"-":114}},{"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":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Adds a person to the list.","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * The person must not already exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void add(Person toAdd) {","lastModifiedDate":"2018-08-07"},{"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":"Jolonauh"},"content":" * Replaces the person {@code target} in the list with {@code updatedPerson}.","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":54,"author":{"gitId":"Jolonauh"},"content":" * The person identity of {@code updatedPerson} must not be the same as another existing person in the list.","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":56,"author":{"gitId":"Jolonauh"},"content":" public void setPerson(Person target, Person updatedPerson) {","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"Jolonauh"},"content":" requireAllNonNull(target, updatedPerson);","lastModifiedDate":"2024-03-16"},{"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":"Jolonauh"},"content":" if (!target.isSamePerson(updatedPerson) \u0026\u0026 contains(updatedPerson)) {","lastModifiedDate":"2024-03-16"},{"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":"Jolonauh"},"content":" internalList.set(index, updatedPerson);","lastModifiedDate":"2024-03-16"},{"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":"-"},"content":" * Removes the equivalent person from the list.","lastModifiedDate":"2016-08-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * The person must exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void remove(Person toRemove) {","lastModifiedDate":"2018-08-07"},{"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":"-"},"content":" public void setPersons(UniquePersonList replacement) {","lastModifiedDate":"2016-10-19"},{"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":"-"},"content":" * Replaces the contents of this list with {@code persons}.","lastModifiedDate":"2018-08-07"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2018-08-07"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void setPersons(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-08-07"},{"lineNumber":92,"author":{"gitId":"-"},"content":" requireAllNonNull(persons);","lastModifiedDate":"2018-01-10"},{"lineNumber":93,"author":{"gitId":"-"},"content":" if (!personsAreUnique(persons)) {","lastModifiedDate":"2018-04-19"},{"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":"-"},"content":" internalList.setAll(persons);","lastModifiedDate":"2018-08-14"},{"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":"-"},"content":" public ObservableList\u003cPerson\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2018-04-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":"-"},"content":" public Iterator\u003cPerson\u003e iterator() {","lastModifiedDate":"2016-08-24"},{"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":"-"},"content":" if (!(other instanceof UniquePersonList)) {","lastModifiedDate":"2023-07-13"},{"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":"-"},"content":" UniquePersonList otherUniquePersonList \u003d (UniquePersonList) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" return internalList.equals(otherUniquePersonList.internalList);","lastModifiedDate":"2023-07-13"},{"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":"-"},"content":" * Returns true if {@code persons} contains only unique persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":140,"author":{"gitId":"-"},"content":" private boolean personsAreUnique(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-04-19"},{"lineNumber":141,"author":{"gitId":"-"},"content":" for (int i \u003d 0; i \u003c persons.size() - 1; i++) {","lastModifiedDate":"2018-04-19"},{"lineNumber":142,"author":{"gitId":"-"},"content":" for (int j \u003d i + 1; j \u003c persons.size(); j++) {","lastModifiedDate":"2018-04-19"},{"lineNumber":143,"author":{"gitId":"-"},"content":" if (persons.get(i).isSamePerson(persons.get(j))) {","lastModifiedDate":"2018-04-19"},{"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":{"Jolonauh":6,"-":144}},{"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":"2024-03-07"},{"lineNumber":10,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.model.person.Description;","lastModifiedDate":"2024-03-07"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-07"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-07"},{"lineNumber":13,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.model.person.NextOfKin;","lastModifiedDate":"2024-03-07"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-07"},{"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":"Jolonauh"},"content":" public static final String DESCRIPTION_PLACEHOLDER \u003d \"Description placeholder\";","lastModifiedDate":"2024-03-06"},{"lineNumber":23,"author":{"gitId":"Jolonauh"},"content":" public static final String NOK_PLACEHOLDER \u003d \"Next of kin placeholder\";","lastModifiedDate":"2024-03-06"},{"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":"-"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":28,"author":{"gitId":"Rishit02"},"content":" new Description(\"Suffers from blood disorder\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"Rishit02"},"content":" new NextOfKin(\"Bob Yeoah\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" getTagSet(\"friends\")),","lastModifiedDate":"2017-03-14"},{"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":"-"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":33,"author":{"gitId":"Rishit02"},"content":" new Description(\"Suffers from diabetes\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"Rishit02"},"content":" new NextOfKin(\"Choon Yu\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" getTagSet(\"colleagues\", \"friends\")),","lastModifiedDate":"2017-03-14"},{"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":"-"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":38,"author":{"gitId":"Rishit02"},"content":" new Description(\"Has asthama\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"Rishit02"},"content":" new NextOfKin(\"David Oliveiro\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" getTagSet(\"neighbours\")),","lastModifiedDate":"2017-03-14"},{"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":"-"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":43,"author":{"gitId":"Rishit02"},"content":" new Description(\"Has Huntington\u0027s Disease\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"Rishit02"},"content":" new NextOfKin(\"Elliot Li\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" getTagSet(\"family\")),","lastModifiedDate":"2017-03-14"},{"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":"-"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":48,"author":{"gitId":"Rishit02"},"content":" new Description(\"Suffers from Crohn\u0027s disease\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"Rishit02"},"content":" new NextOfKin(\"Ilyasa Ibrahim\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" getTagSet(\"classmates\")),","lastModifiedDate":"2017-03-14"},{"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":"-"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":53,"author":{"gitId":"Rishit02"},"content":" new Description(\"Suffers from erectile dysfunction\"),","lastModifiedDate":"2024-03-15"},{"lineNumber":54,"author":{"gitId":"Rishit02"},"content":" new NextOfKin(\"Pam Balakrishnan\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":" getTagSet(\"colleagues\"))","lastModifiedDate":"2017-03-14"},{"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":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"Jolonauh":4,"Rishit02":12,"-":60}},{"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":"2024-03-07"},{"lineNumber":14,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.model.person.Description;","lastModifiedDate":"2024-03-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-07"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-07"},{"lineNumber":17,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.model.person.NextOfKin;","lastModifiedDate":"2024-03-07"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-07"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-07"},{"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":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13"},{"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":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"Jolonauh"},"content":" private final String description;","lastModifiedDate":"2024-03-06"},{"lineNumber":34,"author":{"gitId":"Jolonauh"},"content":" private final String nextOfKin;","lastModifiedDate":"2024-03-06"},{"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":"-"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"Jolonauh"},"content":" @JsonProperty(\"description\") String description, @JsonProperty(\"nextOfKin\") String nextOfKin,","lastModifiedDate":"2024-03-06"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags) {","lastModifiedDate":"2023-05-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"Jolonauh"},"content":" this.description \u003d description;","lastModifiedDate":"2024-03-06"},{"lineNumber":50,"author":{"gitId":"Jolonauh"},"content":" this.nextOfKin \u003d nextOfKin;","lastModifiedDate":"2024-03-06"},{"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":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"Jolonauh"},"content":" description \u003d source.getDescription().value;","lastModifiedDate":"2024-03-06"},{"lineNumber":65,"author":{"gitId":"Jolonauh"},"content":" nextOfKin \u003d source.getNextOfKin().value;","lastModifiedDate":"2024-03-06"},{"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":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"Jolonauh"},"content":" if (description \u003d\u003d null) {","lastModifiedDate":"2024-03-06"},{"lineNumber":115,"author":{"gitId":"Jolonauh"},"content":" throw new IllegalValueException(","lastModifiedDate":"2024-03-06"},{"lineNumber":116,"author":{"gitId":"Jolonauh"},"content":" String.format(MISSING_FIELD_MESSAGE_FORMAT, Description.class.getSimpleName()));","lastModifiedDate":"2024-03-06"},{"lineNumber":117,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":118,"author":{"gitId":"Jolonauh"},"content":" if (!Description.isValidDescription(description)) {","lastModifiedDate":"2024-03-06"},{"lineNumber":119,"author":{"gitId":"Jolonauh"},"content":" throw new IllegalValueException(Description.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-06"},{"lineNumber":120,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":121,"author":{"gitId":"Jolonauh"},"content":" final Description modelDescription \u003d new Description(description);","lastModifiedDate":"2024-03-07"},{"lineNumber":122,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":123,"author":{"gitId":"Jolonauh"},"content":" if (nextOfKin \u003d\u003d null) {","lastModifiedDate":"2024-03-06"},{"lineNumber":124,"author":{"gitId":"Jolonauh"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-07"},{"lineNumber":125,"author":{"gitId":"Jolonauh"},"content":" NextOfKin.class.getSimpleName()));","lastModifiedDate":"2024-03-07"},{"lineNumber":126,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":127,"author":{"gitId":"Jolonauh"},"content":" if (!NextOfKin.isValidNextOfKin(nextOfKin)) {","lastModifiedDate":"2024-03-06"},{"lineNumber":128,"author":{"gitId":"Jolonauh"},"content":" throw new IllegalValueException(NextOfKin.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-06"},{"lineNumber":129,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":130,"author":{"gitId":"Jolonauh"},"content":" final NextOfKin modelNextOfKin \u003d new NextOfKin(nextOfKin);","lastModifiedDate":"2024-03-07"},{"lineNumber":131,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":132,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13"},{"lineNumber":133,"author":{"gitId":"Jolonauh"},"content":" return new Person(modelName, modelPhone, modelEmail, modelAddress, modelDescription, modelNextOfKin, modelTags);","lastModifiedDate":"2024-03-06"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":136,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"Jolonauh":28,"-":108}},{"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 address;","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":"Jolonauh"},"content":" private Label description;","lastModifiedDate":"2024-03-06"},{"lineNumber":43,"author":{"gitId":"Jolonauh"},"content":" @FXML","lastModifiedDate":"2024-03-06"},{"lineNumber":44,"author":{"gitId":"Jolonauh"},"content":" private Label nextOfKin;","lastModifiedDate":"2024-03-06"},{"lineNumber":45,"author":{"gitId":"Jolonauh"},"content":" @FXML","lastModifiedDate":"2024-03-06"},{"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":" address.setText(person.getAddress().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":59,"author":{"gitId":"Jolonauh"},"content":" description.setText(person.getDescription().value);","lastModifiedDate":"2024-03-06"},{"lineNumber":60,"author":{"gitId":"Jolonauh"},"content":" nextOfKin.setText(person.getNextOfKin().value);","lastModifiedDate":"2024-03-06"},{"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":{"Jolonauh":6,"-":59}},{"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":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2016-08-08"},{"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":"Jolonauh"},"content":" \u003cLabel fx:id\u003d\"description\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$description\" /\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":35,"author":{"gitId":"Jolonauh"},"content":" \u003cLabel fx:id\u003d\"nextOfKin\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$nextOfKin\" /\u003e","lastModifiedDate":"2024-03-06"},{"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":{"Jolonauh":2,"-":36}},{"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":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"Rishit02"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESCRIPTION_DESC_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"Rishit02"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NOK_DESC_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-03-14"},{"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":"-"},"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":"2017-06-14"},{"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":"-"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2023-06-13"},{"lineNumber":171,"author":{"gitId":"Rishit02"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + NOK_DESC_AMY + DESCRIPTION_DESC_AMY;","lastModifiedDate":"2024-03-14"},{"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":{"Rishit02":3,"-":174}},{"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":"-"},"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":"-"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2017-06-22"},{"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":"Jolonauh"},"content":" public void setPerson(Person target, Person updatedPerson) {","lastModifiedDate":"2024-03-16"},{"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":"2018-08-06"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"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":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07"},{"lineNumber":164,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":165,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07"},{"lineNumber":166,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":168,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":169,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":170,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":173,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":174,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":175,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":176,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":180,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":181,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12"},{"lineNumber":182,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":183,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12"},{"lineNumber":184,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":186,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07"},{"lineNumber":187,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":188,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":189,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":192,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":193,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08"},{"lineNumber":194,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":195,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":198,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":199,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04"},{"lineNumber":200,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04"},{"lineNumber":201,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":202,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":204,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12"}],"authorContributionMap":{"Jolonauh":1,"-":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":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"Rishit02"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DESCRIPTION;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"Rishit02"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NOK;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_UPDATE;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05"},{"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":"Jolonauh"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-16"},{"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":"Jolonauh"},"content":"import seedu.address.testutil.UpdatePersonDescriptorBuilder;","lastModifiedDate":"2024-03-16"},{"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":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05"},{"lineNumber":41,"author":{"gitId":"Rishit02"},"content":" public static final String VALID_DESCRIPTION_AMY \u003d \"Blood Disorder\";","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"Rishit02"},"content":" public static final String VALID_DESCRIPTION_BOB \u003d \"Blood Disorder\";","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"Rishit02"},"content":" public static final String VALID_NOK_AMY \u003d \"Ben Bee\";","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"Rishit02"},"content":" public static final String VALID_NOK_BOB \u003d \"Ben Bee\";","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05"},{"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":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":56,"author":{"gitId":"Rishit02"},"content":" public static final String NOK_DESC_AMY \u003d \" \" + PREFIX_NOK + VALID_NOK_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"Rishit02"},"content":" public static final String NOK_DESC_BOB \u003d \" \" + PREFIX_NOK + VALID_NOK_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"Rishit02"},"content":" public static final String DESCRIPTION_DESC_AMY \u003d \" \" + PREFIX_DESCRIPTION + VALID_DESCRIPTION_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"Rishit02"},"content":" public static final String DESCRIPTION_DESC_BOB \u003d \" \" + PREFIX_DESCRIPTION + VALID_DESCRIPTION_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"Jolonauh"},"content":" public static final String UPDATE_DESC_AMY \u003d \" \" + PREFIX_UPDATE + VALID_DESCRIPTION_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"Jolonauh"},"content":" public static final String UPDATE_DESC_BOB \u003d \" \" + PREFIX_UPDATE + VALID_DESCRIPTION_BOB;","lastModifiedDate":"2024-03-17"},{"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":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":65,"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":66,"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":67,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05"},{"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":"Rishit02"},"content":" // empty string not allowed for descriptions","lastModifiedDate":"2024-03-13"},{"lineNumber":70,"author":{"gitId":"Rishit02"},"content":" public static final String INVALID_DESCRIPTION_DESC \u003d \" \" + PREFIX_DESCRIPTION;","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"Rishit02"},"content":" public static final String INVALID_NOK_DESC \u003d \" \" + PREFIX_NOK; // empty string not allowed for next of kin","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"Jolonauh"},"content":" public static final String INVALID_UPDATE_DESC \u003d \" \" + PREFIX_UPDATE + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"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":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":78,"author":{"gitId":"Jolonauh"},"content":" public static final UpdateCommand.UpdatePersonDescriptor DESC_AMY;","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"Jolonauh"},"content":" public static final UpdateCommand.UpdatePersonDescriptor DESC_BOB;","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":82,"author":{"gitId":"Jolonauh"},"content":" DESC_AMY \u003d new UpdatePersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":85,"author":{"gitId":"Jolonauh"},"content":" DESC_BOB \u003d new UpdatePersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":95,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25"},{"lineNumber":96,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":97,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":101,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":102,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":106,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":109,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25"},{"lineNumber":111,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":112,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"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":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":119,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":120,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25"},{"lineNumber":121,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25"},{"lineNumber":123,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":124,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":125,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":126,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":133,"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":134,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31"},{"lineNumber":135,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":136,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31"},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":139,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31"},{"lineNumber":140,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20"},{"lineNumber":141,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":146,"author":{"gitId":"Jolonauh"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":147,"author":{"gitId":"Jolonauh"},"content":" * Updates {@code model}\u0027s filtered list to show only the person at the given {@code targetIndex} in the","lastModifiedDate":"2024-03-16"},{"lineNumber":148,"author":{"gitId":"Jolonauh"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2024-03-16"},{"lineNumber":149,"author":{"gitId":"Jolonauh"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":150,"author":{"gitId":"Jolonauh"},"content":" public static void showPersonAtName(Model model, Name targetName) {","lastModifiedDate":"2024-03-16"},{"lineNumber":151,"author":{"gitId":"Jolonauh"},"content":" model.updateFilteredPersonList(person -\u003e person.getLowerCaseName()","lastModifiedDate":"2024-03-17"},{"lineNumber":152,"author":{"gitId":"Jolonauh"},"content":" .equals(new Name(targetName.fullName.toLowerCase())));","lastModifiedDate":"2024-03-17"},{"lineNumber":153,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":154,"author":{"gitId":"Jolonauh"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2024-03-16"},{"lineNumber":155,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":156,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"Rishit02":13,"Jolonauh":20,"-":123}},{"path":"src/test/java/seedu/address/logic/commands/UpdateCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Jolonauh"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"Jolonauh"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"Jolonauh"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"Jolonauh"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtName;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.testutil.TypicalPersons.HOON;","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"Jolonauh"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"Jolonauh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.logic.commands.UpdateCommand.UpdatePersonDescriptor;","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.testutil.UpdatePersonDescriptorBuilder;","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"Jolonauh"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"Jolonauh"},"content":" * Contains integration tests (interaction with the Model) and unit tests for UpdateCommand.","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"Jolonauh"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"Jolonauh"},"content":"public class UpdateCommandTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"Jolonauh"},"content":" private Model model;","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"Jolonauh"},"content":" @BeforeEach","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"Jolonauh"},"content":" public void setup() {","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"Jolonauh"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"Jolonauh"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"Jolonauh"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"Jolonauh"},"content":" Person updatedPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"Jolonauh"},"content":" UpdateCommand.UpdatePersonDescriptor descriptor \u003d new UpdatePersonDescriptorBuilder(updatedPerson).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"Jolonauh"},"content":" UpdateCommand updateCommand \u003d new UpdateCommand(ALICE.getName(), descriptor);","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"Jolonauh"},"content":" String expectedMessage \u003d String.format(UpdateCommand.MESSAGE_UPDATE_PERSON_SUCCESS,","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"Jolonauh"},"content":" Messages.format(updatedPerson));","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"Jolonauh"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"Jolonauh"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), updatedPerson);","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"Jolonauh"},"content":" assertCommandSuccess(updateCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"Jolonauh"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"Jolonauh"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"Jolonauh"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"Jolonauh"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"Jolonauh"},"content":" Name lastPersonName \u003d lastPerson.getName();","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"Jolonauh"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"Jolonauh"},"content":" Person updatedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"Jolonauh"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"Jolonauh"},"content":" UpdateCommand.UpdatePersonDescriptor descriptor \u003d new UpdatePersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"Jolonauh"},"content":" .withPhone(VALID_PHONE_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"Jolonauh"},"content":" UpdateCommand updateCommand \u003d new UpdateCommand(lastPersonName, descriptor);","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"Jolonauh"},"content":" String expectedMessage \u003d String.format(UpdateCommand.MESSAGE_UPDATE_PERSON_SUCCESS,","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"Jolonauh"},"content":" Messages.format(updatedPerson));","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"Jolonauh"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"Jolonauh"},"content":" expectedModel.setPerson(lastPerson, updatedPerson);","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"Jolonauh"},"content":" assertCommandSuccess(updateCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"Jolonauh"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":87,"author":{"gitId":"Jolonauh"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2024-03-16"},{"lineNumber":88,"author":{"gitId":"Jolonauh"},"content":" UpdateCommand updateCommand \u003d new UpdateCommand(ALICE.getName(), new UpdateCommand.UpdatePersonDescriptor());","lastModifiedDate":"2024-03-16"},{"lineNumber":89,"author":{"gitId":"Jolonauh"},"content":" Person updatedPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-16"},{"lineNumber":90,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":91,"author":{"gitId":"Jolonauh"},"content":" String expectedMessage \u003d String.format(UpdateCommand.MESSAGE_UPDATE_PERSON_SUCCESS,","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"Jolonauh"},"content":" Messages.format(updatedPerson));","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":94,"author":{"gitId":"Jolonauh"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-16"},{"lineNumber":95,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":96,"author":{"gitId":"Jolonauh"},"content":" assertCommandSuccess(updateCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-16"},{"lineNumber":97,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":98,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":99,"author":{"gitId":"Jolonauh"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":100,"author":{"gitId":"Jolonauh"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2024-03-16"},{"lineNumber":101,"author":{"gitId":"Jolonauh"},"content":" showPersonAtName(model, ALICE.getName());","lastModifiedDate":"2024-03-16"},{"lineNumber":102,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":103,"author":{"gitId":"Jolonauh"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-16"},{"lineNumber":104,"author":{"gitId":"Jolonauh"},"content":" Person updatedPerson \u003d new PersonBuilder(personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":105,"author":{"gitId":"Jolonauh"},"content":" UpdateCommand updateCommand \u003d new UpdateCommand(ALICE.getName(),","lastModifiedDate":"2024-03-16"},{"lineNumber":106,"author":{"gitId":"Jolonauh"},"content":" new UpdatePersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2024-03-16"},{"lineNumber":107,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":108,"author":{"gitId":"Jolonauh"},"content":" String expectedMessage \u003d String.format(UpdateCommand.MESSAGE_UPDATE_PERSON_SUCCESS,","lastModifiedDate":"2024-03-17"},{"lineNumber":109,"author":{"gitId":"Jolonauh"},"content":" Messages.format(updatedPerson));","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":111,"author":{"gitId":"Jolonauh"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-16"},{"lineNumber":112,"author":{"gitId":"Jolonauh"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), updatedPerson);","lastModifiedDate":"2024-03-16"},{"lineNumber":113,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":114,"author":{"gitId":"Jolonauh"},"content":" assertCommandSuccess(updateCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-16"},{"lineNumber":115,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":116,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":117,"author":{"gitId":"Jolonauh"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"Jolonauh"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"Jolonauh"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"Jolonauh"},"content":" UpdatePersonDescriptor descriptor \u003d new UpdatePersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"Jolonauh"},"content":" Person secondPerson \u003d model.getFilteredPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"Jolonauh"},"content":" UpdateCommand updateCommand \u003d new UpdateCommand(secondPerson.getName(), descriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"Jolonauh"},"content":" assertCommandFailure(updateCommand, model, UpdateCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"Jolonauh"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"Jolonauh"},"content":" public void execute_invalidPersonNameUnfilteredList_failure() {","lastModifiedDate":"2024-03-17"},{"lineNumber":129,"author":{"gitId":"Jolonauh"},"content":" Name invalidName \u003d HOON.getName();","lastModifiedDate":"2024-03-17"},{"lineNumber":130,"author":{"gitId":"Jolonauh"},"content":" UpdatePersonDescriptor descriptor \u003d new UpdatePersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"Jolonauh"},"content":" UpdateCommand updateCommand \u003d new UpdateCommand(invalidName, descriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"Jolonauh"},"content":" assertCommandFailure(updateCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_NAME);","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":135,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":136,"author":{"gitId":"Jolonauh"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"Jolonauh"},"content":" public void equals() {","lastModifiedDate":"2024-03-17"},{"lineNumber":138,"author":{"gitId":"Jolonauh"},"content":" final UpdateCommand standardCommand \u003d new UpdateCommand(AMY.getName(), DESC_AMY);","lastModifiedDate":"2024-03-17"},{"lineNumber":139,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":140,"author":{"gitId":"Jolonauh"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":141,"author":{"gitId":"Jolonauh"},"content":" UpdatePersonDescriptor copyDescriptor \u003d new UpdatePersonDescriptor(DESC_AMY);","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"Jolonauh"},"content":" UpdateCommand commandWithSameValues \u003d new UpdateCommand(AMY.getName(), copyDescriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":143,"author":{"gitId":"Jolonauh"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-03-17"},{"lineNumber":144,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":145,"author":{"gitId":"Jolonauh"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"Jolonauh"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-03-17"},{"lineNumber":147,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":148,"author":{"gitId":"Jolonauh"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":149,"author":{"gitId":"Jolonauh"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":150,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":151,"author":{"gitId":"Jolonauh"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":152,"author":{"gitId":"Jolonauh"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2024-03-17"},{"lineNumber":153,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":154,"author":{"gitId":"Jolonauh"},"content":" // different index -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":155,"author":{"gitId":"Jolonauh"},"content":" assertFalse(standardCommand.equals(new UpdateCommand(BOB.getName(), DESC_AMY)));","lastModifiedDate":"2024-03-17"},{"lineNumber":156,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":157,"author":{"gitId":"Jolonauh"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":158,"author":{"gitId":"Jolonauh"},"content":" assertFalse(standardCommand.equals(new UpdateCommand(AMY.getName(), DESC_BOB)));","lastModifiedDate":"2024-03-17"},{"lineNumber":159,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":160,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":161,"author":{"gitId":"Jolonauh"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":162,"author":{"gitId":"Jolonauh"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-16"},{"lineNumber":163,"author":{"gitId":"Jolonauh"},"content":" Name name \u003d ALICE.getName();","lastModifiedDate":"2024-03-16"},{"lineNumber":164,"author":{"gitId":"Jolonauh"},"content":" UpdateCommand.UpdatePersonDescriptor updatePersonDescriptor \u003d new UpdateCommand.UpdatePersonDescriptor();","lastModifiedDate":"2024-03-16"},{"lineNumber":165,"author":{"gitId":"Jolonauh"},"content":" UpdateCommand updateCommand \u003d new UpdateCommand(name, updatePersonDescriptor);","lastModifiedDate":"2024-03-16"},{"lineNumber":166,"author":{"gitId":"Jolonauh"},"content":" String expected \u003d UpdateCommand.class.getCanonicalName() + \"{name\u003d\" + name + \", updatePersonDescriptor\u003d\"","lastModifiedDate":"2024-03-16"},{"lineNumber":167,"author":{"gitId":"Jolonauh"},"content":" + updatePersonDescriptor + \"}\";","lastModifiedDate":"2024-03-16"},{"lineNumber":168,"author":{"gitId":"Jolonauh"},"content":" assertEquals(expected, updateCommand.toString());","lastModifiedDate":"2024-03-16"},{"lineNumber":169,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":170,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":171,"author":{"gitId":"Jolonauh"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"Jolonauh":171}},{"path":"src/test/java/seedu/address/logic/commands/UpdatePersonDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Jolonauh"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"Jolonauh"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"Jolonauh"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"Jolonauh"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"Jolonauh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.logic.commands.UpdateCommand.UpdatePersonDescriptor;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.testutil.UpdatePersonDescriptorBuilder;","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"Jolonauh"},"content":"public class UpdatePersonDescriptorTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"Jolonauh"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"Jolonauh"},"content":" public void equals() {","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"Jolonauh"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"Jolonauh"},"content":" UpdatePersonDescriptor descriptorWithSameValues \u003d new UpdateCommand.UpdatePersonDescriptor(DESC_AMY);","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"Jolonauh"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"Jolonauh"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"Jolonauh"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"Jolonauh"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"Jolonauh"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"Jolonauh"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"Jolonauh"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"Jolonauh"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"Jolonauh"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"Jolonauh"},"content":" // different name -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"Jolonauh"},"content":" UpdateCommand.UpdatePersonDescriptor updatedAmy \u003d new UpdatePersonDescriptorBuilder(DESC_AMY)","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"Jolonauh"},"content":" .withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"Jolonauh"},"content":" assertFalse(DESC_AMY.equals(updatedAmy));","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"Jolonauh"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"Jolonauh"},"content":" updatedAmy \u003d new UpdatePersonDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"Jolonauh"},"content":" assertFalse(DESC_AMY.equals(updatedAmy));","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"Jolonauh"},"content":" // different email -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"Jolonauh"},"content":" updatedAmy \u003d new UpdatePersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"Jolonauh"},"content":" assertFalse(DESC_AMY.equals(updatedAmy));","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"Jolonauh"},"content":" // different address -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"Jolonauh"},"content":" updatedAmy \u003d new UpdatePersonDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"Jolonauh"},"content":" assertFalse(DESC_AMY.equals(updatedAmy));","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"Jolonauh"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"Jolonauh"},"content":" updatedAmy \u003d new UpdatePersonDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"Jolonauh"},"content":" assertFalse(DESC_AMY.equals(updatedAmy));","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"Jolonauh"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"Jolonauh"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"Jolonauh"},"content":" UpdateCommand.UpdatePersonDescriptor updatePersonDescriptor \u003d new UpdateCommand.UpdatePersonDescriptor();","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"Jolonauh"},"content":" String expected \u003d UpdateCommand.UpdatePersonDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"Jolonauh"},"content":" + updatePersonDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"Jolonauh"},"content":" + updatePersonDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"Jolonauh"},"content":" + updatePersonDescriptor.getEmail().orElse(null) + \", address\u003d\"","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"Jolonauh"},"content":" + updatePersonDescriptor.getDescription().orElse(null) + \", description\u003d\"","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"Jolonauh"},"content":" + updatePersonDescriptor.getNextOfKin().orElse(null) + \", nextOfKin\u003d\"","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"Jolonauh"},"content":" + updatePersonDescriptor.getAddress().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"Jolonauh"},"content":" + updatePersonDescriptor.getTags().orElse(null) + \"}\";","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"Jolonauh"},"content":" assertEquals(expected, updatePersonDescriptor.toString());","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"Jolonauh"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"Jolonauh":74}},{"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":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"Rishit02"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESCRIPTION_DESC_AMY;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"Rishit02"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESCRIPTION_DESC_BOB;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"Rishit02"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_DESCRIPTION_DESC;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"Rishit02"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NOK_DESC;","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"Rishit02"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NOK_DESC_AMY;","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"Rishit02"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NOK_DESC_BOB;","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14"},{"lineNumber":34,"author":{"gitId":"Rishit02"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DESCRIPTION;","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14"},{"lineNumber":37,"author":{"gitId":"Rishit02"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NOK;","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-06-15"},{"lineNumber":49,"author":{"gitId":"Rishit02"},"content":"import seedu.address.model.person.Description;","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15"},{"lineNumber":52,"author":{"gitId":"Rishit02"},"content":"import seedu.address.model.person.NextOfKin;","lastModifiedDate":"2024-03-13"},{"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":"2024-03-13"},{"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":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2018-07-25"},{"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":"-"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":67,"author":{"gitId":"Rishit02"},"content":" + ADDRESS_DESC_BOB + NOK_DESC_BOB + DESCRIPTION_DESC_BOB","lastModifiedDate":"2024-03-13"},{"lineNumber":68,"author":{"gitId":"Rishit02"},"content":" + TAG_DESC_FRIEND, new AddCommand(expectedPerson));","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":" Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND)","lastModifiedDate":"2018-07-25"},{"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":"Rishit02"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-13"},{"lineNumber":76,"author":{"gitId":"Rishit02"},"content":" + NOK_DESC_BOB + DESCRIPTION_DESC_BOB","lastModifiedDate":"2024-03-13"},{"lineNumber":77,"author":{"gitId":"Rishit02"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, new AddCommand(expectedPersonMultipleTags));","lastModifiedDate":"2024-03-13"},{"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":"Rishit02"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + NOK_DESC_BOB","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"Rishit02"},"content":" + DESCRIPTION_DESC_BOB + ADDRESS_DESC_BOB + TAG_DESC_FRIEND;","lastModifiedDate":"2024-03-20"},{"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":"Rishit02"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_ADDRESS, PREFIX_EMAIL, PREFIX_PHONE,","lastModifiedDate":"2024-03-20"},{"lineNumber":106,"author":{"gitId":"Rishit02"},"content":" PREFIX_NOK, PREFIX_DESCRIPTION));","lastModifiedDate":"2024-03-20"},{"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":"Rishit02"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2024-03-13"},{"lineNumber":150,"author":{"gitId":"Rishit02"},"content":" + ADDRESS_DESC_AMY + NOK_DESC_AMY + DESCRIPTION_DESC_AMY,","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":183,"author":{"gitId":"Rishit02"},"content":" + NOK_DESC_BOB + DESCRIPTION_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":185,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15"},{"lineNumber":186,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":187,"author":{"gitId":"Rishit02"},"content":" + NOK_DESC_BOB + DESCRIPTION_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":189,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15"},{"lineNumber":190,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":191,"author":{"gitId":"Rishit02"},"content":" + NOK_DESC_BOB + DESCRIPTION_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":193,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15"},{"lineNumber":194,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2017-12-23"},{"lineNumber":195,"author":{"gitId":"Rishit02"},"content":" + NOK_DESC_BOB + DESCRIPTION_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2024-03-13"},{"lineNumber":196,"author":{"gitId":"Rishit02"},"content":" + TAG_DESC_FRIEND, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-13"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":198,"author":{"gitId":"Rishit02"},"content":" // invalid next of kin","lastModifiedDate":"2024-03-12"},{"lineNumber":199,"author":{"gitId":"Rishit02"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-12"},{"lineNumber":200,"author":{"gitId":"Rishit02"},"content":" + INVALID_NOK_DESC + DESCRIPTION_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2024-03-13"},{"lineNumber":201,"author":{"gitId":"Rishit02"},"content":" + TAG_DESC_FRIEND, NextOfKin.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-13"},{"lineNumber":202,"author":{"gitId":"Rishit02"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":203,"author":{"gitId":"Rishit02"},"content":" // invalid description","lastModifiedDate":"2024-03-12"},{"lineNumber":204,"author":{"gitId":"Rishit02"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-12"},{"lineNumber":205,"author":{"gitId":"Rishit02"},"content":" + NOK_DESC_BOB + INVALID_DESCRIPTION_DESC","lastModifiedDate":"2024-03-13"},{"lineNumber":206,"author":{"gitId":"Rishit02"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Description.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-13"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":208,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15"},{"lineNumber":209,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":210,"author":{"gitId":"Rishit02"},"content":" + NOK_DESC_BOB + DESCRIPTION_DESC_BOB + INVALID_TAG_DESC + VALID_TAG_FRIEND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":212,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":213,"author":{"gitId":"Rishit02"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2024-03-20"},{"lineNumber":214,"author":{"gitId":"Rishit02"},"content":" + NOK_DESC_BOB + DESCRIPTION_DESC_BOB,","lastModifiedDate":"2024-03-20"},{"lineNumber":215,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":219,"author":{"gitId":"Rishit02"},"content":" + ADDRESS_DESC_BOB + NOK_DESC_BOB + DESCRIPTION_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2024-03-20"},{"lineNumber":220,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":222,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"Rishit02":39,"-":183}},{"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":"Jolonauh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_UPDATE;","lastModifiedDate":"2024-03-17"},{"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.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":10,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-16"},{"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.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":"Jolonauh"},"content":"import seedu.address.logic.commands.UpdateCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.logic.commands.UpdateCommand.UpdatePersonDescriptor;","lastModifiedDate":"2024-03-17"},{"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.PersonBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27"},{"lineNumber":32,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.testutil.UpdatePersonDescriptorBuilder;","lastModifiedDate":"2024-03-17"},{"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":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":59,"author":{"gitId":"Jolonauh"},"content":" public void parseCommand_update() throws Exception {","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":61,"author":{"gitId":"Jolonauh"},"content":" UpdatePersonDescriptor descriptor \u003d new UpdatePersonDescriptorBuilder(person).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"Jolonauh"},"content":" UpdateCommand command \u003d (UpdateCommand) parser.parseCommand(UpdateCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"Jolonauh"},"content":" + PREFIX_UPDATE + ALICE.getName() + \" \" + PersonUtil.getUpdatePersonDescriptorDetails(descriptor));","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"Jolonauh"},"content":" assertEquals(new UpdateCommand(ALICE.getName(), descriptor), command);","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","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_find() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"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_list() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","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_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23"},{"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_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"Jolonauh":10,"-":93}},{"path":"src/test/java/seedu/address/logic/parser/UpdateCommandParserTest.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":"Jolonauh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESCRIPTION_DESC_AMY;","lastModifiedDate":"2024-03-17"},{"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":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":14,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_UPDATE_DESC;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":16,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NOK_DESC_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"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":"Jolonauh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.UPDATE_DESC_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":23,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_DESCRIPTION_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":26,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NOK_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-04"},{"lineNumber":35,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_UPDATE;","lastModifiedDate":"2024-03-17"},{"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":"Jolonauh"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":43,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.logic.commands.UpdateCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.logic.commands.UpdateCommand.UpdatePersonDescriptor;","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-04"},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-04"},{"lineNumber":49,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.testutil.UpdatePersonDescriptorBuilder;","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"Jolonauh"},"content":"public class UpdateCommandParserTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":" private static final String TAG_EMPTY \u003d \" \" + PREFIX_TAG;","lastModifiedDate":"2017-05-04"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04"},{"lineNumber":57,"author":{"gitId":"Jolonauh"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, UpdateCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":59,"author":{"gitId":"Jolonauh"},"content":" private UpdateCommandParser parser \u003d new UpdateCommandParser();","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":63,"author":{"gitId":"Jolonauh"},"content":" // no target name specified","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"Jolonauh"},"content":" assertParseFailure(parser, NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":67,"author":{"gitId":"Jolonauh"},"content":" assertParseFailure(parser, UPDATE_DESC_AMY, UpdateCommand.MESSAGE_NOT_UPDATED);","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"Jolonauh"},"content":" System.out.println(\"hi\");","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-17"},{"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":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"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":"Jolonauh"},"content":" assertParseFailure(parser, INVALID_UPDATE_DESC + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":80,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, 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":"Jolonauh"},"content":" assertParseFailure(parser, INVALID_UPDATE_DESC + \" i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-17"},{"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":"Jolonauh"},"content":" assertParseFailure(parser, UPDATE_DESC_AMY + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2024-03-17"},{"lineNumber":90,"author":{"gitId":"Jolonauh"},"content":" assertParseFailure(parser, UPDATE_DESC_AMY + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"Jolonauh"},"content":" assertParseFailure(parser, UPDATE_DESC_AMY + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"Jolonauh"},"content":" assertParseFailure(parser, UPDATE_DESC_AMY + INVALID_ADDRESS_DESC,","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"Jolonauh"},"content":" Address.MESSAGE_CONSTRAINTS); // invalid address","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"Jolonauh"},"content":" assertParseFailure(parser, UPDATE_DESC_AMY + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":96,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04"},{"lineNumber":97,"author":{"gitId":"Jolonauh"},"content":" assertParseFailure(parser, UPDATE_DESC_AMY + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":99,"author":{"gitId":"Jolonauh"},"content":" // while parsing {@code PREFIX_TAG} alone will reset the tags of the {@code Person} being updated,","lastModifiedDate":"2024-03-16"},{"lineNumber":100,"author":{"gitId":"-"},"content":" // parsing it together with a valid tag results in error","lastModifiedDate":"2017-05-04"},{"lineNumber":101,"author":{"gitId":"Jolonauh"},"content":" assertParseFailure(parser, UPDATE_DESC_AMY + TAG_DESC_FRIEND + TAG_DESC_HUSBAND + TAG_EMPTY,","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"Jolonauh"},"content":" Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"Jolonauh"},"content":" assertParseFailure(parser, UPDATE_DESC_AMY + TAG_DESC_FRIEND + TAG_EMPTY + TAG_DESC_HUSBAND,","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"Jolonauh"},"content":" Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"Jolonauh"},"content":" assertParseFailure(parser, UPDATE_DESC_AMY + TAG_EMPTY + TAG_DESC_FRIEND + TAG_DESC_HUSBAND,","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"Jolonauh"},"content":" Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":108,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04"},{"lineNumber":109,"author":{"gitId":"Jolonauh"},"content":" assertParseFailure(parser, UPDATE_DESC_AMY + INVALID_NAME_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"Jolonauh"},"content":" + VALID_ADDRESS_AMY + VALID_PHONE_AMY, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":115,"author":{"gitId":"Jolonauh"},"content":" Name targetName \u003d ALICE.getName();","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"Jolonauh"},"content":" String userInput \u003d \" \" + PREFIX_UPDATE + targetName.toString() + PHONE_DESC_BOB","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"Jolonauh"},"content":" + TAG_DESC_HUSBAND + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + NAME_DESC_AMY","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"Jolonauh"},"content":" + DESCRIPTION_DESC_AMY + NOK_DESC_BOB + TAG_DESC_FRIEND;","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":120,"author":{"gitId":"Jolonauh"},"content":" UpdatePersonDescriptor descriptor \u003d new UpdatePersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-03-16"},{"lineNumber":121,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-05-04"},{"lineNumber":122,"author":{"gitId":"Jolonauh"},"content":" .withDescription(VALID_DESCRIPTION_AMY).withNextOfKin(VALID_NOK_BOB)","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":124,"author":{"gitId":"Jolonauh"},"content":" UpdateCommand expectedCommand \u003d new UpdateCommand(targetName, descriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":130,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":131,"author":{"gitId":"Jolonauh"},"content":" Name targetName \u003d ALICE.getName();","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"Jolonauh"},"content":" String userInput \u003d \" \" + PREFIX_UPDATE + targetName.toString() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":134,"author":{"gitId":"Jolonauh"},"content":" UpdatePersonDescriptor descriptor \u003d new UpdatePersonDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-16"},{"lineNumber":135,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":136,"author":{"gitId":"Jolonauh"},"content":" UpdateCommand expectedCommand \u003d new UpdateCommand(targetName, descriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":143,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04"},{"lineNumber":144,"author":{"gitId":"Jolonauh"},"content":" Name targetName \u003d ALICE.getName();","lastModifiedDate":"2024-03-17"},{"lineNumber":145,"author":{"gitId":"Jolonauh"},"content":" String userInput \u003d \" \" + PREFIX_UPDATE + targetName.toString() + NAME_DESC_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"Jolonauh"},"content":" UpdatePersonDescriptor descriptor \u003d new UpdatePersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":147,"author":{"gitId":"Jolonauh"},"content":" UpdateCommand expectedCommand \u003d new UpdateCommand(targetName, descriptor);","lastModifiedDate":"2024-03-17"},{"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":" // phone","lastModifiedDate":"2017-05-04"},{"lineNumber":151,"author":{"gitId":"Jolonauh"},"content":" userInput \u003d \" \" + PREFIX_UPDATE + targetName.toString() + PHONE_DESC_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":152,"author":{"gitId":"Jolonauh"},"content":" descriptor \u003d new UpdatePersonDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":153,"author":{"gitId":"Jolonauh"},"content":" expectedCommand \u003d new UpdateCommand(targetName, descriptor);","lastModifiedDate":"2024-03-17"},{"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":" // email","lastModifiedDate":"2017-05-04"},{"lineNumber":157,"author":{"gitId":"Jolonauh"},"content":" userInput \u003d \" \" + PREFIX_UPDATE + targetName.toString() + EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":158,"author":{"gitId":"Jolonauh"},"content":" descriptor \u003d new UpdatePersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":159,"author":{"gitId":"Jolonauh"},"content":" expectedCommand \u003d new UpdateCommand(targetName, descriptor);","lastModifiedDate":"2024-03-17"},{"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":" // address","lastModifiedDate":"2017-05-04"},{"lineNumber":163,"author":{"gitId":"Jolonauh"},"content":" userInput \u003d \" \" + PREFIX_UPDATE + targetName.toString() + ADDRESS_DESC_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":164,"author":{"gitId":"Jolonauh"},"content":" descriptor \u003d new UpdatePersonDescriptorBuilder().withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":165,"author":{"gitId":"Jolonauh"},"content":" expectedCommand \u003d new UpdateCommand(targetName, descriptor);","lastModifiedDate":"2024-03-17"},{"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":" // tags","lastModifiedDate":"2017-05-04"},{"lineNumber":169,"author":{"gitId":"Jolonauh"},"content":" userInput \u003d \" \" + PREFIX_UPDATE + targetName.toString() + TAG_DESC_FRIEND;","lastModifiedDate":"2024-03-17"},{"lineNumber":170,"author":{"gitId":"Jolonauh"},"content":" descriptor \u003d new UpdatePersonDescriptorBuilder().withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":171,"author":{"gitId":"Jolonauh"},"content":" expectedCommand \u003d new UpdateCommand(targetName, descriptor);","lastModifiedDate":"2024-03-17"},{"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":"","lastModifiedDate":"2017-05-04"},{"lineNumber":175,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":176,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":177,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14"},{"lineNumber":178,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-07-14"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":180,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14"},{"lineNumber":181,"author":{"gitId":"Jolonauh"},"content":" Name targetName \u003d ALICE.getName();","lastModifiedDate":"2024-03-17"},{"lineNumber":182,"author":{"gitId":"Jolonauh"},"content":" String userInput \u003d \" \" + PREFIX_UPDATE + targetName.toString() + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":184,"author":{"gitId":"Jolonauh"},"content":" System.out.println(userInput);","lastModifiedDate":"2024-03-17"},{"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":" // invalid followed by valid","lastModifiedDate":"2023-07-14"},{"lineNumber":188,"author":{"gitId":"Jolonauh"},"content":" userInput \u003d \" \" + PREFIX_UPDATE + targetName.toString() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2024-03-17"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":190,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":192,"author":{"gitId":"Jolonauh"},"content":" // multiple valid fields repeated","lastModifiedDate":"2024-03-17"},{"lineNumber":193,"author":{"gitId":"Jolonauh"},"content":" userInput \u003d \" \" + PREFIX_UPDATE + targetName.toString() + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2024-03-17"},{"lineNumber":194,"author":{"gitId":"-"},"content":" + TAG_DESC_FRIEND + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + TAG_DESC_FRIEND","lastModifiedDate":"2017-05-25"},{"lineNumber":195,"author":{"gitId":"-"},"content":" + PHONE_DESC_BOB + ADDRESS_DESC_BOB + EMAIL_DESC_BOB + TAG_DESC_HUSBAND;","lastModifiedDate":"2017-05-25"},{"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":" // multiple invalid values","lastModifiedDate":"2023-07-14"},{"lineNumber":201,"author":{"gitId":"Jolonauh"},"content":" userInput \u003d \" \" + PREFIX_UPDATE + targetName.toString() + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC","lastModifiedDate":"2024-03-17"},{"lineNumber":202,"author":{"gitId":"Jolonauh"},"content":" + INVALID_EMAIL_DESC + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2024-03-17"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":204,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":205,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":206,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":208,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":209,"author":{"gitId":"-"},"content":" public void parse_resetTags_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":210,"author":{"gitId":"Jolonauh"},"content":" Name targetName \u003d ALICE.getName();","lastModifiedDate":"2024-03-17"},{"lineNumber":211,"author":{"gitId":"Jolonauh"},"content":" String userInput \u003d \" \" + PREFIX_UPDATE + targetName.toString() + TAG_EMPTY;","lastModifiedDate":"2024-03-17"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":213,"author":{"gitId":"Jolonauh"},"content":" UpdatePersonDescriptor descriptor \u003d new UpdatePersonDescriptorBuilder().withTags().build();","lastModifiedDate":"2024-03-16"},{"lineNumber":214,"author":{"gitId":"Jolonauh"},"content":" UpdateCommand expectedCommand \u003d new UpdateCommand(targetName, descriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":216,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":217,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":218,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04"}],"authorContributionMap":{"Jolonauh":76,"-":142}},{"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":"-"},"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":"Jolonauh"},"content":" Person updatedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-04-19"},{"lineNumber":51,"author":{"gitId":"Jolonauh"},"content":" List\u003cPerson\u003e newPersons \u003d Arrays.asList(ALICE, updatedAlice);","lastModifiedDate":"2024-03-16"},{"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":"Jolonauh"},"content":" Person updatedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-06"},{"lineNumber":78,"author":{"gitId":"Jolonauh"},"content":" assertTrue(addressBook.hasPerson(updatedAlice));","lastModifiedDate":"2024-03-16"},{"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":"-"},"content":"}","lastModifiedDate":"2016-12-24"}],"authorContributionMap":{"Jolonauh":4,"-":104}},{"path":"src/test/java/seedu/address/model/person/DescriptionTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Jolonauh"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-07"},{"lineNumber":2,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":3,"author":{"gitId":"Jolonauh"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-07"},{"lineNumber":4,"author":{"gitId":"Jolonauh"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-07"},{"lineNumber":5,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-07"},{"lineNumber":6,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":7,"author":{"gitId":"Jolonauh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-07"},{"lineNumber":8,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":9,"author":{"gitId":"Jolonauh"},"content":"public class DescriptionTest {","lastModifiedDate":"2024-03-07"},{"lineNumber":10,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":11,"author":{"gitId":"Jolonauh"},"content":" @Test","lastModifiedDate":"2024-03-07"},{"lineNumber":12,"author":{"gitId":"Jolonauh"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-07"},{"lineNumber":13,"author":{"gitId":"Jolonauh"},"content":" assertThrows(NullPointerException.class, () -\u003e new Description(null));","lastModifiedDate":"2024-03-07"},{"lineNumber":14,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":15,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":16,"author":{"gitId":"Jolonauh"},"content":" @Test","lastModifiedDate":"2024-03-07"},{"lineNumber":17,"author":{"gitId":"Jolonauh"},"content":" public void constructor_invalidDescription_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-07"},{"lineNumber":18,"author":{"gitId":"Jolonauh"},"content":" String invalidDescription \u003d \"\";","lastModifiedDate":"2024-03-07"},{"lineNumber":19,"author":{"gitId":"Jolonauh"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Description(invalidDescription));","lastModifiedDate":"2024-03-07"},{"lineNumber":20,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":21,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":22,"author":{"gitId":"Jolonauh"},"content":" @Test","lastModifiedDate":"2024-03-07"},{"lineNumber":23,"author":{"gitId":"Jolonauh"},"content":" public void isValidDescription() {","lastModifiedDate":"2024-03-07"},{"lineNumber":24,"author":{"gitId":"Jolonauh"},"content":" // null description","lastModifiedDate":"2024-03-07"},{"lineNumber":25,"author":{"gitId":"Jolonauh"},"content":" assertThrows(NullPointerException.class, () -\u003e Description.isValidDescription(null));","lastModifiedDate":"2024-03-07"},{"lineNumber":26,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":27,"author":{"gitId":"Jolonauh"},"content":" // invalid descriptions","lastModifiedDate":"2024-03-07"},{"lineNumber":28,"author":{"gitId":"Jolonauh"},"content":" assertFalse(Description.isValidDescription(\"\")); // empty string","lastModifiedDate":"2024-03-07"},{"lineNumber":29,"author":{"gitId":"Jolonauh"},"content":" assertFalse(Description.isValidDescription(\" \")); // spaces only","lastModifiedDate":"2024-03-07"},{"lineNumber":30,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":31,"author":{"gitId":"Jolonauh"},"content":" // valid descriptions","lastModifiedDate":"2024-03-07"},{"lineNumber":32,"author":{"gitId":"Jolonauh"},"content":" assertTrue(Description.isValidDescription(\"A young adult experiencing anxiety and \"","lastModifiedDate":"2024-03-07"},{"lineNumber":33,"author":{"gitId":"Jolonauh"},"content":" + \"depression after leaving an abusive relationship.\"));","lastModifiedDate":"2024-03-07"},{"lineNumber":34,"author":{"gitId":"Jolonauh"},"content":" assertTrue(Description.isValidDescription(\"-\")); // one character","lastModifiedDate":"2024-03-07"},{"lineNumber":35,"author":{"gitId":"Jolonauh"},"content":" assertTrue(Description.isValidDescription(","lastModifiedDate":"2024-03-07"},{"lineNumber":36,"author":{"gitId":"Jolonauh"},"content":" \"A new immigrant seeking assistance with acclimating to a new \"","lastModifiedDate":"2024-03-07"},{"lineNumber":37,"author":{"gitId":"Jolonauh"},"content":" + \"culture and finding employment.\")); // long description","lastModifiedDate":"2024-03-07"},{"lineNumber":38,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":39,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":40,"author":{"gitId":"Jolonauh"},"content":" @Test","lastModifiedDate":"2024-03-07"},{"lineNumber":41,"author":{"gitId":"Jolonauh"},"content":" public void equals() {","lastModifiedDate":"2024-03-07"},{"lineNumber":42,"author":{"gitId":"Jolonauh"},"content":" Description description \u003d new Description(\"Valid Description\");","lastModifiedDate":"2024-03-07"},{"lineNumber":43,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":44,"author":{"gitId":"Jolonauh"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-07"},{"lineNumber":45,"author":{"gitId":"Jolonauh"},"content":" assertTrue(description.equals(new Description(\"Valid Description\")));","lastModifiedDate":"2024-03-07"},{"lineNumber":46,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":47,"author":{"gitId":"Jolonauh"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-07"},{"lineNumber":48,"author":{"gitId":"Jolonauh"},"content":" assertTrue(description.equals(description));","lastModifiedDate":"2024-03-07"},{"lineNumber":49,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":50,"author":{"gitId":"Jolonauh"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-07"},{"lineNumber":51,"author":{"gitId":"Jolonauh"},"content":" assertFalse(description.equals(null));","lastModifiedDate":"2024-03-07"},{"lineNumber":52,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":53,"author":{"gitId":"Jolonauh"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-07"},{"lineNumber":54,"author":{"gitId":"Jolonauh"},"content":" assertFalse(description.equals(5.0f));","lastModifiedDate":"2024-03-07"},{"lineNumber":55,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":56,"author":{"gitId":"Jolonauh"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-07"},{"lineNumber":57,"author":{"gitId":"Jolonauh"},"content":" assertFalse(description.equals(new Description(\"Other Valid Description\")));","lastModifiedDate":"2024-03-07"},{"lineNumber":58,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":59,"author":{"gitId":"Jolonauh"},"content":"}","lastModifiedDate":"2024-03-07"}],"authorContributionMap":{"Jolonauh":59}},{"path":"src/test/java/seedu/address/model/person/NextOfKinTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Jolonauh"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-07"},{"lineNumber":2,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":3,"author":{"gitId":"Jolonauh"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-07"},{"lineNumber":4,"author":{"gitId":"Jolonauh"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-07"},{"lineNumber":5,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-07"},{"lineNumber":6,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":7,"author":{"gitId":"Jolonauh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-07"},{"lineNumber":8,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":9,"author":{"gitId":"Jolonauh"},"content":"public class NextOfKinTest {","lastModifiedDate":"2024-03-07"},{"lineNumber":10,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":11,"author":{"gitId":"Jolonauh"},"content":" @Test","lastModifiedDate":"2024-03-07"},{"lineNumber":12,"author":{"gitId":"Jolonauh"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-07"},{"lineNumber":13,"author":{"gitId":"Jolonauh"},"content":" assertThrows(NullPointerException.class, () -\u003e new NextOfKin(null));","lastModifiedDate":"2024-03-07"},{"lineNumber":14,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":15,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":16,"author":{"gitId":"Jolonauh"},"content":" @Test","lastModifiedDate":"2024-03-07"},{"lineNumber":17,"author":{"gitId":"Jolonauh"},"content":" public void constructor_invalidNextOfKin_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-07"},{"lineNumber":18,"author":{"gitId":"Jolonauh"},"content":" String invalidNextOfKin \u003d \"\";","lastModifiedDate":"2024-03-07"},{"lineNumber":19,"author":{"gitId":"Jolonauh"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new NextOfKin(invalidNextOfKin));","lastModifiedDate":"2024-03-07"},{"lineNumber":20,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":21,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":22,"author":{"gitId":"Jolonauh"},"content":" @Test","lastModifiedDate":"2024-03-07"},{"lineNumber":23,"author":{"gitId":"Jolonauh"},"content":" public void isValidNextOfKin() {","lastModifiedDate":"2024-03-07"},{"lineNumber":24,"author":{"gitId":"Jolonauh"},"content":" // null next of kin","lastModifiedDate":"2024-03-07"},{"lineNumber":25,"author":{"gitId":"Jolonauh"},"content":" assertThrows(NullPointerException.class, () -\u003e NextOfKin.isValidNextOfKin(null));","lastModifiedDate":"2024-03-07"},{"lineNumber":26,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":27,"author":{"gitId":"Jolonauh"},"content":" // invalid next of kins","lastModifiedDate":"2024-03-07"},{"lineNumber":28,"author":{"gitId":"Jolonauh"},"content":" assertFalse(NextOfKin.isValidNextOfKin(\"\")); // empty string","lastModifiedDate":"2024-03-07"},{"lineNumber":29,"author":{"gitId":"Jolonauh"},"content":" assertFalse(NextOfKin.isValidNextOfKin(\" \")); // spaces only","lastModifiedDate":"2024-03-07"},{"lineNumber":30,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":31,"author":{"gitId":"Jolonauh"},"content":" // valid next of kins","lastModifiedDate":"2024-03-07"},{"lineNumber":32,"author":{"gitId":"Jolonauh"},"content":" assertTrue(NextOfKin.isValidNextOfKin(\"Sam Sung\"));","lastModifiedDate":"2024-03-07"},{"lineNumber":33,"author":{"gitId":"Jolonauh"},"content":" assertTrue(NextOfKin.isValidNextOfKin(\"Alexander Maximilian Bartholomew Fitzwilliam III\")); // long next of kin","lastModifiedDate":"2024-03-07"},{"lineNumber":34,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":35,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":36,"author":{"gitId":"Jolonauh"},"content":" @Test","lastModifiedDate":"2024-03-07"},{"lineNumber":37,"author":{"gitId":"Jolonauh"},"content":" public void equals() {","lastModifiedDate":"2024-03-07"},{"lineNumber":38,"author":{"gitId":"Jolonauh"},"content":" NextOfKin nextOfKin \u003d new NextOfKin(\"Valid NextOfKin\");","lastModifiedDate":"2024-03-07"},{"lineNumber":39,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":40,"author":{"gitId":"Jolonauh"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-07"},{"lineNumber":41,"author":{"gitId":"Jolonauh"},"content":" assertTrue(nextOfKin.equals(new NextOfKin(\"Valid NextOfKin\")));","lastModifiedDate":"2024-03-07"},{"lineNumber":42,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":43,"author":{"gitId":"Jolonauh"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-07"},{"lineNumber":44,"author":{"gitId":"Jolonauh"},"content":" assertTrue(nextOfKin.equals(nextOfKin));","lastModifiedDate":"2024-03-07"},{"lineNumber":45,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":46,"author":{"gitId":"Jolonauh"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-07"},{"lineNumber":47,"author":{"gitId":"Jolonauh"},"content":" assertFalse(nextOfKin.equals(null));","lastModifiedDate":"2024-03-07"},{"lineNumber":48,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":49,"author":{"gitId":"Jolonauh"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-07"},{"lineNumber":50,"author":{"gitId":"Jolonauh"},"content":" assertFalse(nextOfKin.equals(5.0f));","lastModifiedDate":"2024-03-07"},{"lineNumber":51,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":52,"author":{"gitId":"Jolonauh"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-07"},{"lineNumber":53,"author":{"gitId":"Jolonauh"},"content":" assertFalse(nextOfKin.equals(new NextOfKin(\"Other Valid NextOfKin\")));","lastModifiedDate":"2024-03-07"},{"lineNumber":54,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":55,"author":{"gitId":"Jolonauh"},"content":"}","lastModifiedDate":"2024-03-07"}],"authorContributionMap":{"Jolonauh":55}},{"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":"2024-03-07"},{"lineNumber":7,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_DESCRIPTION_BOB;","lastModifiedDate":"2024-03-07"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-07"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-07"},{"lineNumber":10,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NOK_BOB;","lastModifiedDate":"2024-03-07"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-07"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-03-07"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":25,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2018-03-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTags().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18"},{"lineNumber":38,"author":{"gitId":"Jolonauh"},"content":" Person updatedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"Jolonauh"},"content":" .withAddress(VALID_ADDRESS_BOB).withDescription(VALID_DESCRIPTION_BOB)","lastModifiedDate":"2024-03-07"},{"lineNumber":40,"author":{"gitId":"Jolonauh"},"content":" .withNextOfKin(VALID_NOK_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-03-07"},{"lineNumber":41,"author":{"gitId":"Jolonauh"},"content":" assertTrue(ALICE.isSamePerson(updatedAlice));","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":44,"author":{"gitId":"Jolonauh"},"content":" updatedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"Jolonauh"},"content":" assertFalse(ALICE.isSamePerson(updatedAlice));","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":48,"author":{"gitId":"Jolonauh"},"content":" Person updatedBob \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"Jolonauh"},"content":" assertFalse(BOB.isSamePerson(updatedBob));","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18"},{"lineNumber":53,"author":{"gitId":"Jolonauh"},"content":" updatedBob \u003d new PersonBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"Jolonauh"},"content":" assertFalse(BOB.isSamePerson(updatedBob));","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":76,"author":{"gitId":"Jolonauh"},"content":" Person updatedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"Jolonauh"},"content":" assertFalse(ALICE.equals(updatedAlice));","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"Jolonauh"},"content":" updatedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"Jolonauh"},"content":" assertFalse(ALICE.equals(updatedAlice));","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":84,"author":{"gitId":"Jolonauh"},"content":" updatedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"Jolonauh"},"content":" assertFalse(ALICE.equals(updatedAlice));","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":88,"author":{"gitId":"Jolonauh"},"content":" updatedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":89,"author":{"gitId":"Jolonauh"},"content":" assertFalse(ALICE.equals(updatedAlice));","lastModifiedDate":"2024-03-16"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18"},{"lineNumber":91,"author":{"gitId":"Jolonauh"},"content":" // different description -\u003e returns false","lastModifiedDate":"2024-03-07"},{"lineNumber":92,"author":{"gitId":"Jolonauh"},"content":" updatedAlice \u003d new PersonBuilder(ALICE).withDescription(VALID_DESCRIPTION_BOB).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":93,"author":{"gitId":"Jolonauh"},"content":" assertFalse(ALICE.equals(updatedAlice));","lastModifiedDate":"2024-03-16"},{"lineNumber":94,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":95,"author":{"gitId":"Jolonauh"},"content":" // different next of kin -\u003e returns false","lastModifiedDate":"2024-03-07"},{"lineNumber":96,"author":{"gitId":"Jolonauh"},"content":" updatedAlice \u003d new PersonBuilder(ALICE).withNextOfKin(VALID_NOK_BOB).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":97,"author":{"gitId":"Jolonauh"},"content":" assertFalse(ALICE.equals(updatedAlice));","lastModifiedDate":"2024-03-16"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":99,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18"},{"lineNumber":100,"author":{"gitId":"Jolonauh"},"content":" updatedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":101,"author":{"gitId":"Jolonauh"},"content":" assertFalse(ALICE.equals(updatedAlice));","lastModifiedDate":"2024-03-16"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"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":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2019-02-23"},{"lineNumber":107,"author":{"gitId":"Jolonauh"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", address\u003d\" + ALICE.getAddress() + \", description\u003d\"","lastModifiedDate":"2024-03-07"},{"lineNumber":108,"author":{"gitId":"Jolonauh"},"content":" + ALICE.getDescription() + \", nextOfKin\u003d\" + ALICE.getNextOfKin() + \", tags\u003d\" + ALICE.getTags() + \"}\";","lastModifiedDate":"2024-03-07"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"Jolonauh":31,"-":80}},{"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":"Jolonauh"},"content":" Person updatedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08"},{"lineNumber":47,"author":{"gitId":"Jolonauh"},"content":" assertTrue(uniquePersonList.contains(updatedAlice));","lastModifiedDate":"2024-03-16"},{"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":"Jolonauh"},"content":" public void setPerson_nullUpdatedPerson_throwsNullPointerException() {","lastModifiedDate":"2024-03-16"},{"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":"Jolonauh"},"content":" public void setPerson_updatedPersonIsSamePerson_success() {","lastModifiedDate":"2024-03-16"},{"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":"Jolonauh"},"content":" public void setPerson_updatedPersonHasSameIdentity_success() {","lastModifiedDate":"2024-03-16"},{"lineNumber":87,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":88,"author":{"gitId":"Jolonauh"},"content":" Person updatedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-03-16"},{"lineNumber":89,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08"},{"lineNumber":90,"author":{"gitId":"Jolonauh"},"content":" uniquePersonList.setPerson(ALICE, updatedAlice);","lastModifiedDate":"2024-03-16"},{"lineNumber":91,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":92,"author":{"gitId":"Jolonauh"},"content":" expectedUniquePersonList.add(updatedAlice);","lastModifiedDate":"2024-03-16"},{"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":"Jolonauh"},"content":" public void setPerson_updatedPersonHasDifferentIdentity_success() {","lastModifiedDate":"2024-03-16"},{"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":"Jolonauh"},"content":" public void setPerson_updatedPersonHasNonUniqueIdentity_throwsDuplicatePersonException() {","lastModifiedDate":"2024-03-16"},{"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":{"Jolonauh":10,"-":165}},{"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":"Jolonauh"},"content":"import seedu.address.model.person.Description;","lastModifiedDate":"2024-03-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.model.person.NextOfKin;","lastModifiedDate":"2024-03-07"},{"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":"Jolonauh"},"content":" private static final String INVALID_DESCRIPTION \u003d \" \";","lastModifiedDate":"2024-03-07"},{"lineNumber":28,"author":{"gitId":"Jolonauh"},"content":" private static final String INVALID_NOK \u003d \" \";","lastModifiedDate":"2024-03-07"},{"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":"Jolonauh"},"content":" private static final String VALID_DESCRIPTION \u003d BENSON.getDescription().toString();","lastModifiedDate":"2024-03-07"},{"lineNumber":36,"author":{"gitId":"Jolonauh"},"content":" private static final String VALID_NOK \u003d BENSON.getNextOfKin().toString();","lastModifiedDate":"2024-03-07"},{"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":"Jolonauh"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE,","lastModifiedDate":"2024-03-07"},{"lineNumber":50,"author":{"gitId":"Jolonauh"},"content":" VALID_EMAIL, VALID_ADDRESS, VALID_DESCRIPTION, VALID_NOK, VALID_TAGS);","lastModifiedDate":"2024-03-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-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 toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"Jolonauh"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_PHONE,","lastModifiedDate":"2024-03-07"},{"lineNumber":58,"author":{"gitId":"Jolonauh"},"content":" VALID_EMAIL, VALID_ADDRESS, VALID_DESCRIPTION, VALID_NOK, VALID_TAGS);","lastModifiedDate":"2024-03-07"},{"lineNumber":59,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-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 toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"Jolonauh"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE,","lastModifiedDate":"2024-03-07"},{"lineNumber":66,"author":{"gitId":"Jolonauh"},"content":" VALID_EMAIL, VALID_ADDRESS, VALID_DESCRIPTION, VALID_NOK, VALID_TAGS);","lastModifiedDate":"2024-03-07"},{"lineNumber":67,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"Jolonauh"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null,","lastModifiedDate":"2024-03-07"},{"lineNumber":74,"author":{"gitId":"Jolonauh"},"content":" VALID_EMAIL, VALID_ADDRESS, VALID_DESCRIPTION, VALID_NOK, VALID_TAGS);","lastModifiedDate":"2024-03-07"},{"lineNumber":75,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","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_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"Jolonauh"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE,","lastModifiedDate":"2024-03-07"},{"lineNumber":82,"author":{"gitId":"Jolonauh"},"content":" INVALID_EMAIL, VALID_ADDRESS, VALID_DESCRIPTION, VALID_NOK, VALID_TAGS);","lastModifiedDate":"2024-03-07"},{"lineNumber":83,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.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":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"Jolonauh"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE,","lastModifiedDate":"2024-03-07"},{"lineNumber":90,"author":{"gitId":"Jolonauh"},"content":" null, VALID_ADDRESS, VALID_DESCRIPTION, VALID_NOK, VALID_TAGS);","lastModifiedDate":"2024-03-07"},{"lineNumber":91,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"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_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"Jolonauh"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE,","lastModifiedDate":"2024-03-07"},{"lineNumber":98,"author":{"gitId":"Jolonauh"},"content":" VALID_EMAIL, INVALID_ADDRESS, VALID_DESCRIPTION, VALID_NOK, VALID_TAGS);","lastModifiedDate":"2024-03-07"},{"lineNumber":99,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"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_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"Jolonauh"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE,","lastModifiedDate":"2024-03-07"},{"lineNumber":106,"author":{"gitId":"Jolonauh"},"content":" VALID_EMAIL, null, VALID_DESCRIPTION, VALID_NOK, VALID_TAGS);","lastModifiedDate":"2024-03-07"},{"lineNumber":107,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2024-03-07"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-07"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":111,"author":{"gitId":"Jolonauh"},"content":" @Test","lastModifiedDate":"2024-03-07"},{"lineNumber":112,"author":{"gitId":"Jolonauh"},"content":" public void toModelType_invalidDescription_throwsIllegalValueException() {","lastModifiedDate":"2024-03-07"},{"lineNumber":113,"author":{"gitId":"Jolonauh"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE,","lastModifiedDate":"2024-03-07"},{"lineNumber":114,"author":{"gitId":"Jolonauh"},"content":" VALID_EMAIL, VALID_ADDRESS, INVALID_DESCRIPTION, VALID_NOK, VALID_TAGS);","lastModifiedDate":"2024-03-07"},{"lineNumber":115,"author":{"gitId":"Jolonauh"},"content":" String expectedMessage \u003d Description.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-07"},{"lineNumber":116,"author":{"gitId":"Jolonauh"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-07"},{"lineNumber":117,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":118,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":119,"author":{"gitId":"Jolonauh"},"content":" @Test","lastModifiedDate":"2024-03-07"},{"lineNumber":120,"author":{"gitId":"Jolonauh"},"content":" public void toModelType_nullDescription_throwsIllegalValueException() {","lastModifiedDate":"2024-03-07"},{"lineNumber":121,"author":{"gitId":"Jolonauh"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE,","lastModifiedDate":"2024-03-07"},{"lineNumber":122,"author":{"gitId":"Jolonauh"},"content":" VALID_EMAIL, VALID_ADDRESS, null, VALID_NOK, VALID_TAGS);","lastModifiedDate":"2024-03-07"},{"lineNumber":123,"author":{"gitId":"Jolonauh"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Description.class.getSimpleName());","lastModifiedDate":"2024-03-07"},{"lineNumber":124,"author":{"gitId":"Jolonauh"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-07"},{"lineNumber":125,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":126,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":127,"author":{"gitId":"Jolonauh"},"content":" @Test","lastModifiedDate":"2024-03-07"},{"lineNumber":128,"author":{"gitId":"Jolonauh"},"content":" public void toModelType_invalidNextOfKin_throwsIllegalValueException() {","lastModifiedDate":"2024-03-07"},{"lineNumber":129,"author":{"gitId":"Jolonauh"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE,","lastModifiedDate":"2024-03-07"},{"lineNumber":130,"author":{"gitId":"Jolonauh"},"content":" VALID_EMAIL, VALID_ADDRESS, VALID_DESCRIPTION, INVALID_NOK, VALID_TAGS);","lastModifiedDate":"2024-03-07"},{"lineNumber":131,"author":{"gitId":"Jolonauh"},"content":" String expectedMessage \u003d NextOfKin.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-07"},{"lineNumber":132,"author":{"gitId":"Jolonauh"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-07"},{"lineNumber":133,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":134,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":135,"author":{"gitId":"Jolonauh"},"content":" @Test","lastModifiedDate":"2024-03-07"},{"lineNumber":136,"author":{"gitId":"Jolonauh"},"content":" public void toModelType_nullNextOfKin_throwsIllegalValueException() {","lastModifiedDate":"2024-03-07"},{"lineNumber":137,"author":{"gitId":"Jolonauh"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE,","lastModifiedDate":"2024-03-07"},{"lineNumber":138,"author":{"gitId":"Jolonauh"},"content":" VALID_EMAIL, VALID_ADDRESS, VALID_DESCRIPTION, null, VALID_TAGS);","lastModifiedDate":"2024-03-07"},{"lineNumber":139,"author":{"gitId":"Jolonauh"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, NextOfKin.class.getSimpleName());","lastModifiedDate":"2024-03-07"},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":144,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":145,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13"},{"lineNumber":146,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13"},{"lineNumber":147,"author":{"gitId":"Jolonauh"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE,","lastModifiedDate":"2024-03-07"},{"lineNumber":148,"author":{"gitId":"Jolonauh"},"content":" VALID_EMAIL, VALID_ADDRESS, VALID_DESCRIPTION, VALID_NOK, invalidTags);","lastModifiedDate":"2024-03-07"},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"Jolonauh":53,"-":99}},{"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":"2024-03-07"},{"lineNumber":7,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.model.person.Description;","lastModifiedDate":"2024-03-07"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-07"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-07"},{"lineNumber":10,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.model.person.NextOfKin;","lastModifiedDate":"2024-03-07"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-07"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-07"},{"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":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05"},{"lineNumber":25,"author":{"gitId":"Rishit02"},"content":" public static final String DEFAULT_DESCRIPTION \u003d \"Blood Disorder\";","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"Rishit02"},"content":" public static final String DEFAULT_NOK \u003d \"Ben Bee\";","lastModifiedDate":"2024-03-12"},{"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":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20"},{"lineNumber":32,"author":{"gitId":"Jolonauh"},"content":" private Description description;","lastModifiedDate":"2024-03-06"},{"lineNumber":33,"author":{"gitId":"Jolonauh"},"content":" private NextOfKin nextOfKin;","lastModifiedDate":"2024-03-06"},{"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":"-"},"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":"Jolonauh"},"content":" description \u003d new Description(DEFAULT_DESCRIPTION);","lastModifiedDate":"2024-03-06"},{"lineNumber":45,"author":{"gitId":"Jolonauh"},"content":" nextOfKin \u003d new NextOfKin(DEFAULT_NOK);","lastModifiedDate":"2024-03-06"},{"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":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20"},{"lineNumber":57,"author":{"gitId":"Jolonauh"},"content":" description \u003d personToCopy.getDescription();","lastModifiedDate":"2024-03-06"},{"lineNumber":58,"author":{"gitId":"Jolonauh"},"content":" nextOfKin \u003d personToCopy.getNextOfKin();","lastModifiedDate":"2024-03-06"},{"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":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":71,"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":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String ... tags) {","lastModifiedDate":"2017-08-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2017-12-20"},{"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":"2017-07-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":82,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of 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 withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","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 Email} 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 withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","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":"Jolonauh"},"content":" /**","lastModifiedDate":"2024-03-07"},{"lineNumber":103,"author":{"gitId":"Jolonauh"},"content":" * Sets the {@code Description} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-07"},{"lineNumber":104,"author":{"gitId":"Jolonauh"},"content":" */","lastModifiedDate":"2024-03-07"},{"lineNumber":105,"author":{"gitId":"Jolonauh"},"content":" public PersonBuilder withDescription(String description) {","lastModifiedDate":"2024-03-06"},{"lineNumber":106,"author":{"gitId":"Jolonauh"},"content":" this.description \u003d new Description(description);","lastModifiedDate":"2024-03-06"},{"lineNumber":107,"author":{"gitId":"Jolonauh"},"content":" return this;","lastModifiedDate":"2024-03-06"},{"lineNumber":108,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":109,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":110,"author":{"gitId":"Jolonauh"},"content":" /**","lastModifiedDate":"2024-03-07"},{"lineNumber":111,"author":{"gitId":"Jolonauh"},"content":" * Sets the {@code NextOfKin} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-07"},{"lineNumber":112,"author":{"gitId":"Jolonauh"},"content":" */","lastModifiedDate":"2024-03-07"},{"lineNumber":113,"author":{"gitId":"Jolonauh"},"content":" public PersonBuilder withNextOfKin(String nextOfKin) {","lastModifiedDate":"2024-03-06"},{"lineNumber":114,"author":{"gitId":"Jolonauh"},"content":" this.nextOfKin \u003d new NextOfKin(nextOfKin);","lastModifiedDate":"2024-03-06"},{"lineNumber":115,"author":{"gitId":"Jolonauh"},"content":" return this;","lastModifiedDate":"2024-03-06"},{"lineNumber":116,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":117,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05"},{"lineNumber":119,"author":{"gitId":"Jolonauh"},"content":" return new Person(name, phone, email, address, description, nextOfKin, tags);","lastModifiedDate":"2024-03-06"},{"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":{"Jolonauh":25,"Rishit02":2,"-":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":"Jolonauh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DESCRIPTION;","lastModifiedDate":"2024-03-07"},{"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":"Jolonauh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NOK;","lastModifiedDate":"2024-03-07"},{"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":"Jolonauh"},"content":"import seedu.address.logic.commands.UpdateCommand.UpdatePersonDescriptor;","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":" sb.append(PREFIX_PHONE + person.getPhone().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":38,"author":{"gitId":"-"},"content":" sb.append(PREFIX_ADDRESS + person.getAddress().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":39,"author":{"gitId":"Rishit02"},"content":" sb.append(PREFIX_DESCRIPTION + person.getDescription().value + \" \");","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"Rishit02"},"content":" sb.append(PREFIX_NOK + person.getNextOfKin().value + \" \");","lastModifiedDate":"2024-03-14"},{"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":"Jolonauh"},"content":" * Returns the part of command string for the given {@code UpdatePersonDescriptor}\u0027s details.","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26"},{"lineNumber":50,"author":{"gitId":"Jolonauh"},"content":" public static String getUpdatePersonDescriptorDetails(UpdatePersonDescriptor descriptor) {","lastModifiedDate":"2024-03-18"},{"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":"Jolonauh"},"content":" descriptor.getDescription().ifPresent(","lastModifiedDate":"2024-03-07"},{"lineNumber":57,"author":{"gitId":"Jolonauh"},"content":" description -\u003e sb.append(PREFIX_DESCRIPTION).append(description.value).append(\" \"));","lastModifiedDate":"2024-03-07"},{"lineNumber":58,"author":{"gitId":"Jolonauh"},"content":" descriptor.getNextOfKin().ifPresent(nextOfKin -\u003e sb.append(PREFIX_NOK).append(nextOfKin.value).append(\" \"));","lastModifiedDate":"2024-03-07"},{"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":{"Jolonauh":8,"Rishit02":2,"-":59}},{"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":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"Rishit02"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_DESCRIPTION_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"Rishit02"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_DESCRIPTION_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"Rishit02"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NOK_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"Rishit02"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NOK_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"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":"Jolonauh"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\")","lastModifiedDate":"2024-03-07"},{"lineNumber":32,"author":{"gitId":"Jolonauh"},"content":" .withEmail(\"alice@example.com\").withPhone(\"94351253\")","lastModifiedDate":"2024-03-07"},{"lineNumber":33,"author":{"gitId":"Jolonauh"},"content":" .withDescription(\"A young adult experiencing anxiety and depression after leaving an abusive relationship.\")","lastModifiedDate":"2024-03-07"},{"lineNumber":34,"author":{"gitId":"Jolonauh"},"content":" .withNextOfKin(\"Sam Sung\").withTags(\"friends\").build();","lastModifiedDate":"2024-03-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10"},{"lineNumber":36,"author":{"gitId":"-"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2017-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2017-04-05"},{"lineNumber":38,"author":{"gitId":"Jolonauh"},"content":" .withDescription(\"A new immigrant seeking assistance with \"","lastModifiedDate":"2024-03-07"},{"lineNumber":39,"author":{"gitId":"Jolonauh"},"content":" + \"acclimating to a new culture and finding employment.\")","lastModifiedDate":"2024-03-07"},{"lineNumber":40,"author":{"gitId":"Jolonauh"},"content":" .withNextOfKin(\"Alexander Maximilian Bartholomew Fitzwilliam III\")","lastModifiedDate":"2024-03-07"},{"lineNumber":41,"author":{"gitId":"-"},"content":" .withTags(\"owesMoney\", \"friends\").build();","lastModifiedDate":"2016-09-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2018-01-10"},{"lineNumber":43,"author":{"gitId":"Rishit02"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\")","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"Rishit02"},"content":" .withDescription(\"Description placeholder\")","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"Rishit02"},"content":" .withNextOfKin(\"Sam Sung\").build();","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2018-01-10"},{"lineNumber":47,"author":{"gitId":"Rishit02"},"content":" .withDescription(\"Description placeholder\")","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"Rishit02"},"content":" .withNextOfKin(\"Sam Sung\")","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"-"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\").withTags(\"friends\").build();","lastModifiedDate":"2018-03-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2018-01-10"},{"lineNumber":51,"author":{"gitId":"Rishit02"},"content":" .withDescription(\"Description placeholder\")","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"Rishit02"},"content":" .withNextOfKin(\"Sam Sung\")","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"-"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2018-01-10"},{"lineNumber":55,"author":{"gitId":"Rishit02"},"content":" .withDescription(\"Description placeholder\")","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"Rishit02"},"content":" .withNextOfKin(\"Sam Sung\")","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"-"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2018-01-10"},{"lineNumber":59,"author":{"gitId":"Rishit02"},"content":" .withDescription(\"Description placeholder\")","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"Rishit02"},"content":" .withNextOfKin(\"Sam Sung\")","lastModifiedDate":"2024-03-14"},{"lineNumber":61,"author":{"gitId":"-"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2018-01-10"},{"lineNumber":65,"author":{"gitId":"Rishit02"},"content":" .withDescription(\"Description placeholder\")","lastModifiedDate":"2024-03-14"},{"lineNumber":66,"author":{"gitId":"Rishit02"},"content":" .withNextOfKin(\"Sam Sung\")","lastModifiedDate":"2024-03-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2018-01-10"},{"lineNumber":69,"author":{"gitId":"Rishit02"},"content":" .withDescription(\"Description placeholder\")","lastModifiedDate":"2024-03-14"},{"lineNumber":70,"author":{"gitId":"Rishit02"},"content":" .withNextOfKin(\"Sam Sung\")","lastModifiedDate":"2024-03-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2018-01-10"},{"lineNumber":75,"author":{"gitId":"Rishit02"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2024-03-14"},{"lineNumber":76,"author":{"gitId":"Rishit02"},"content":" .withNextOfKin(VALID_NOK_AMY).withDescription(VALID_DESCRIPTION_AMY).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-03-14"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2018-01-10"},{"lineNumber":78,"author":{"gitId":"Rishit02"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-03-14"},{"lineNumber":79,"author":{"gitId":"Rishit02"},"content":" .withDescription(VALID_DESCRIPTION_BOB).withNextOfKin(VALID_NOK_BOB)","lastModifiedDate":"2024-03-14"},{"lineNumber":80,"author":{"gitId":"Rishit02"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2024-03-14"},{"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":{"Rishit02":24,"Jolonauh":7,"-":70}},{"path":"src/test/java/seedu/address/testutil/UpdatePersonDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Jolonauh"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"Jolonauh"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"Jolonauh"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"Jolonauh"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.logic.commands.UpdateCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.logic.commands.UpdateCommand.UpdatePersonDescriptor;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.model.person.Description;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.model.person.NextOfKin;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"Jolonauh"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"Jolonauh"},"content":" * A utility class to help with building UpdatePersonDescriptor objects.","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"Jolonauh"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"Jolonauh"},"content":"public class UpdatePersonDescriptorBuilder {","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"Jolonauh"},"content":" private UpdateCommand.UpdatePersonDescriptor descriptor;","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"Jolonauh"},"content":" public UpdatePersonDescriptorBuilder() {","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"Jolonauh"},"content":" descriptor \u003d new UpdatePersonDescriptor();","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"Jolonauh"},"content":" public UpdatePersonDescriptorBuilder(UpdateCommand.UpdatePersonDescriptor descriptor) {","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"Jolonauh"},"content":" this.descriptor \u003d new UpdateCommand.UpdatePersonDescriptor(descriptor);","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"Jolonauh"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"Jolonauh"},"content":" * Returns an {@code UpdatePersonDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"Jolonauh"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"Jolonauh"},"content":" public UpdatePersonDescriptorBuilder(Person person) {","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"Jolonauh"},"content":" descriptor \u003d new UpdateCommand.UpdatePersonDescriptor();","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"Jolonauh"},"content":" descriptor.setName(person.getName());","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"Jolonauh"},"content":" descriptor.setPhone(person.getPhone());","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"Jolonauh"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"Jolonauh"},"content":" descriptor.setAddress(person.getAddress());","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"Jolonauh"},"content":" descriptor.setDescription(person.getDescription());","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"Jolonauh"},"content":" descriptor.setNextOfKin(person.getNextOfKin());","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"Jolonauh"},"content":" descriptor.setTags(person.getTags());","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"Jolonauh"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"Jolonauh"},"content":" * Sets the {@code Name} of the {@code UpdatePersonDescriptor} that we are building.","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"Jolonauh"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"Jolonauh"},"content":" public UpdatePersonDescriptorBuilder withName(String name) {","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"Jolonauh"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"Jolonauh"},"content":" return this;","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"Jolonauh"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"Jolonauh"},"content":" * Sets the {@code Phone} of the {@code UpdatePersonDescriptor} that we are building.","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"Jolonauh"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"Jolonauh"},"content":" public UpdatePersonDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"Jolonauh"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"Jolonauh"},"content":" return this;","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"Jolonauh"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"Jolonauh"},"content":" * Sets the {@code Email} of the {@code UpdatePersonDescriptor} that we are building.","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"Jolonauh"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"Jolonauh"},"content":" public UpdatePersonDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"Jolonauh"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"Jolonauh"},"content":" return this;","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"Jolonauh"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"Jolonauh"},"content":" * Sets the {@code Address} of the {@code UpdatePersonDescriptor} that we are building.","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"Jolonauh"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"Jolonauh"},"content":" public UpdatePersonDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"Jolonauh"},"content":" descriptor.setAddress(new Address(address));","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"Jolonauh"},"content":" return this;","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"Jolonauh"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"Jolonauh"},"content":" * Sets the {@code Address} of the {@code UpdatePersonDescriptor} that we are building.","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"Jolonauh"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"Jolonauh"},"content":" public UpdatePersonDescriptorBuilder withDescription(String description) {","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"Jolonauh"},"content":" descriptor.setDescription(new Description(description));","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"Jolonauh"},"content":" return this;","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":87,"author":{"gitId":"Jolonauh"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":88,"author":{"gitId":"Jolonauh"},"content":" * Sets the {@code Address} of the {@code UpdatePersonDescriptor} that we are building.","lastModifiedDate":"2024-03-16"},{"lineNumber":89,"author":{"gitId":"Jolonauh"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":90,"author":{"gitId":"Jolonauh"},"content":" public UpdatePersonDescriptorBuilder withNextOfKin(String nextOfKin) {","lastModifiedDate":"2024-03-16"},{"lineNumber":91,"author":{"gitId":"Jolonauh"},"content":" descriptor.setNextOfKin(new NextOfKin(nextOfKin));","lastModifiedDate":"2024-03-16"},{"lineNumber":92,"author":{"gitId":"Jolonauh"},"content":" return this;","lastModifiedDate":"2024-03-16"},{"lineNumber":93,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":94,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":95,"author":{"gitId":"Jolonauh"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":96,"author":{"gitId":"Jolonauh"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code UpdatePersonDescriptor}","lastModifiedDate":"2024-03-16"},{"lineNumber":97,"author":{"gitId":"Jolonauh"},"content":" * that we are building.","lastModifiedDate":"2024-03-16"},{"lineNumber":98,"author":{"gitId":"Jolonauh"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":99,"author":{"gitId":"Jolonauh"},"content":" public UpdatePersonDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2024-03-16"},{"lineNumber":100,"author":{"gitId":"Jolonauh"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2024-03-16"},{"lineNumber":101,"author":{"gitId":"Jolonauh"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2024-03-16"},{"lineNumber":102,"author":{"gitId":"Jolonauh"},"content":" return this;","lastModifiedDate":"2024-03-16"},{"lineNumber":103,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":104,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":105,"author":{"gitId":"Jolonauh"},"content":" public UpdateCommand.UpdatePersonDescriptor build() {","lastModifiedDate":"2024-03-16"},{"lineNumber":106,"author":{"gitId":"Jolonauh"},"content":" return descriptor;","lastModifiedDate":"2024-03-16"},{"lineNumber":107,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":108,"author":{"gitId":"Jolonauh"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"Jolonauh":108}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Rishit02"},"content":"[![CI Status](https://github.com/se-edu/addressbook-level3/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S2-CS2103T-W12-4/tp/actions)","lastModifiedDate":"2024-03-01"},{"lineNumber":2,"author":{"gitId":"-"},"content":"[![codecov](https://codecov.io/gh/AY2324S2-CS2103T-W12-4/tp/graph/badge.svg?token\u003dF5OYT9DURR)](https://codecov.io/gh/AY2324S2-CS2103T-W12-4/tp)","lastModifiedDate":"2024-02-19"},{"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":"Rishit02"},"content":"# ConnectCare","lastModifiedDate":"2024-03-01"},{"lineNumber":7,"author":{"gitId":"Rishit02"},"content":"ConnectCare is a client management application designed for social workers. It streamlines client case management, focusing on efficient scheduling and visit tracking. The application aims to optimize scheduling, manage client goals, and ensure effective collaboration among social workers.","lastModifiedDate":"2024-03-01"},{"lineNumber":8,"author":{"gitId":"Rishit02"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":9,"author":{"gitId":"Rishit02"},"content":"## Table of contents","lastModifiedDate":"2024-03-01"},{"lineNumber":10,"author":{"gitId":"Rishit02"},"content":"- [Features](#features)","lastModifiedDate":"2024-03-01"},{"lineNumber":11,"author":{"gitId":"Rishit02"},"content":"- [Installation and Usage](#installation-and-usage)","lastModifiedDate":"2024-03-01"},{"lineNumber":12,"author":{"gitId":"Rishit02"},"content":"- [User Stories](#user-stories)","lastModifiedDate":"2024-03-01"},{"lineNumber":13,"author":{"gitId":"Rishit02"},"content":"- [Acknowledgements](#acknowledgements)","lastModifiedDate":"2024-03-01"},{"lineNumber":14,"author":{"gitId":"Rishit02"},"content":"- [License](#license)","lastModifiedDate":"2024-03-01"},{"lineNumber":15,"author":{"gitId":"Rishit02"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":16,"author":{"gitId":"Rishit02"},"content":"## Features","lastModifiedDate":"2024-03-01"},{"lineNumber":17,"author":{"gitId":"Rishit02"},"content":"- **Client Profile Management:** Create, update, and categorize client profiles effectively.","lastModifiedDate":"2024-03-01"},{"lineNumber":18,"author":{"gitId":"Rishit02"},"content":"- **Search:** Search for clients based on keywords and tags.","lastModifiedDate":"2024-03-01"},{"lineNumber":19,"author":{"gitId":"Rishit02"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":20,"author":{"gitId":"Rishit02"},"content":"## Installation and Usage","lastModifiedDate":"2024-03-01"},{"lineNumber":21,"author":{"gitId":"Rishit02"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2024-03-01"},{"lineNumber":22,"author":{"gitId":"Rishit02"},"content":"1. Clone the repository","lastModifiedDate":"2024-03-01"},{"lineNumber":23,"author":{"gitId":"Rishit02"},"content":"2. Configure the project to use JDK 11 (not other versions) as explained in here.","lastModifiedDate":"2024-03-01"},{"lineNumber":24,"author":{"gitId":"Rishit02"},"content":" In the same dialog, set the Project language level field to the SDK default option.","lastModifiedDate":"2024-03-01"},{"lineNumber":25,"author":{"gitId":"Rishit02"},"content":"3. After that, open the Gradle tab and execute the gradle command `gradle run`","lastModifiedDate":"2024-03-01"},{"lineNumber":26,"author":{"gitId":"Rishit02"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":27,"author":{"gitId":"Rishit02"},"content":"## Acknowledgements","lastModifiedDate":"2024-03-01"},{"lineNumber":28,"author":{"gitId":"Rishit02"},"content":"- This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-03-01"},{"lineNumber":29,"author":{"gitId":"Rishit02"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":30,"author":{"gitId":"Rishit02"},"content":"## License","lastModifiedDate":"2024-03-01"},{"lineNumber":31,"author":{"gitId":"Rishit02"},"content":"ConnectCare is licensed under the [MIT License](LICENSE).","lastModifiedDate":"2024-03-01"}],"authorContributionMap":{"Rishit02":27,"-":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":"Jolonauh"},"content":"We are passionate and deeply committed to using technology to create positive social impact.","lastModifiedDate":"2024-03-07"},{"lineNumber":10,"author":{"gitId":"Jolonauh"},"content":"We hope to alleviate some of the burdens social workers carry by streamlining their workflow ","lastModifiedDate":"2024-02-29"},{"lineNumber":11,"author":{"gitId":"Jolonauh"},"content":"and simplifying administrative tasks. Our goal is to free up valuable time and energy for ","lastModifiedDate":"2024-02-29"},{"lineNumber":12,"author":{"gitId":"Jolonauh"},"content":"social workers to focus on the most important aspects of their work.","lastModifiedDate":"2024-02-29"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":15,"author":{"gitId":"Jolonauh"},"content":"You can reach us at the email `connect_care[at]comp.nus.edu.sg`","lastModifiedDate":"2024-02-29"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17"},{"lineNumber":17,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"Jolonauh"},"content":"### Damith C. Rajapakse","lastModifiedDate":"2024-02-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"Jolonauh"},"content":"\u003cimg src\u003d\"images/damithc.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-02-29"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"[[homepage](http://www.comp.nus.edu.sg/~damithch)]","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"Jolonauh"},"content":"[[github](https://github.com/damithc)]","lastModifiedDate":"2024-02-29"},{"lineNumber":25,"author":{"gitId":"Jolonauh"},"content":"[[portfolio](http://www.comp.nus.edu.sg/~damithch)]","lastModifiedDate":"2024-02-29"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"* Role: Project Advisor","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"Jolonauh"},"content":"### P J Anthony","lastModifiedDate":"2024-02-29"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"Jolonauh"},"content":"\u003cimg src\u003d\"images/pjanthony2001.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-02-29"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"Jolonauh"},"content":"[[github](http://github.com/pjanthony2001)]","lastModifiedDate":"2024-02-29"},{"lineNumber":34,"author":{"gitId":"Jolonauh"},"content":"[[portfolio](team/anthony.md)]","lastModifiedDate":"2024-02-29"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"* Role: Team Lead","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"Jolonauh"},"content":"* Responsibilities: Manages the project","lastModifiedDate":"2024-03-03"},{"lineNumber":38,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":39,"author":{"gitId":"Jolonauh"},"content":"### Au Jun Ming Jeremiah","lastModifiedDate":"2024-02-29"},{"lineNumber":40,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":41,"author":{"gitId":"Jolonauh"},"content":"\u003cimg src\u003d\"images/jolonauh.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-02-29"},{"lineNumber":42,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":43,"author":{"gitId":"Jolonauh"},"content":"[[github](http://github.com/jolonauh)]","lastModifiedDate":"2024-02-29"},{"lineNumber":44,"author":{"gitId":"Jolonauh"},"content":"[[portfolio](team/jeremiah.md)]","lastModifiedDate":"2024-02-29"},{"lineNumber":45,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":46,"author":{"gitId":"Jolonauh"},"content":"* Role: Developer","lastModifiedDate":"2024-02-29"},{"lineNumber":47,"author":{"gitId":"Jolonauh"},"content":"* Responsibilities: Testing","lastModifiedDate":"2024-02-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"Jolonauh"},"content":"### Rishit Khandelwal","lastModifiedDate":"2024-02-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"Jolonauh"},"content":"\u003cimg src\u003d\"images/rishit02.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-02-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"Jolonauh"},"content":"[[github](http://github.com/rishit02)] [[portfolio](team/rishit.md)]","lastModifiedDate":"2024-02-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"Jolonauh"},"content":"* Responsibilities: Code Quality","lastModifiedDate":"2024-02-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"Jolonauh"},"content":"### Eliot Lee Leong Wern","lastModifiedDate":"2024-02-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"Jolonauh"},"content":"\u003cimg src\u003d\"images/eliotlee68.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-02-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"Jolonauh"},"content":"[[github](http://github.com/eliotlee68)]","lastModifiedDate":"2024-02-29"},{"lineNumber":63,"author":{"gitId":"Jolonauh"},"content":"[[portfolio](team/eliot.md)]","lastModifiedDate":"2024-02-29"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"Jolonauh"},"content":"* Responsibilities: Deliverables and deadlines","lastModifiedDate":"2024-02-29"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"Jolonauh"},"content":"### Tejas Sadasivam","lastModifiedDate":"2024-02-29"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"Jolonauh"},"content":"\u003cimg src\u003d\"images/tejas-1405.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-02-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"Jolonauh"},"content":"[[github](http://github.com/tejas-1405)]","lastModifiedDate":"2024-02-29"},{"lineNumber":73,"author":{"gitId":"Jolonauh"},"content":"[[portfolio](team/tejas.md)]","lastModifiedDate":"2024-02-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"Jolonauh"},"content":"* Responsibilities: Documentation","lastModifiedDate":"2024-03-03"}],"authorContributionMap":{"Jolonauh":39,"-":37}},{"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":"-"},"content":"# AB-3 Developer Guide","lastModifiedDate":"2023-09-12"},{"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":"-"},"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":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":"-"},"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":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":"-"},"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":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":"-"},"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":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 continues till 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).\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-02-09"},{"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":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12"},{"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":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"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":"2021-07-31"},{"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":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":133,"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":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":135,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"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":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"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":148,"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":149,"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":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","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":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"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":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"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":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"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":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"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":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"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":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"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":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"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":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":191,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"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":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":198,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"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":201,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"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":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":213,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":217,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":219,"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":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":223,"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":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"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":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"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":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"lineNumber":250,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","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":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":264,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":265,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":266,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":267,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"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":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":277,"author":{"gitId":"pjanthony2001"},"content":"* has a need to manage a significant number of clients for social work, that is dynamically changing","lastModifiedDate":"2024-03-01"},{"lineNumber":278,"author":{"gitId":"pjanthony2001"},"content":"* has a need to efficiently track cases and get important information at a glance","lastModifiedDate":"2024-03-01"},{"lineNumber":279,"author":{"gitId":"pjanthony2001"},"content":"* has a need to easily add notes and observations during visits to record important details","lastModifiedDate":"2024-03-01"},{"lineNumber":280,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23"},{"lineNumber":281,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23"},{"lineNumber":282,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26"},{"lineNumber":283,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23"},{"lineNumber":284,"author":{"gitId":"pjanthony2001"},"content":"* ","lastModifiedDate":"2024-03-01"},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":286,"author":{"gitId":"pjanthony2001"},"content":"**Value proposition**: Manage and view client information more efficiently than a standard word-editor/address book/spreadsheet","lastModifiedDate":"2024-03-01"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":288,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":289,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":291,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":293,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":294,"author":{"gitId":"pjanthony2001"},"content":"|----------|---------------------------------|------------------------------|------------------------------------------------------------------------|","lastModifiedDate":"2024-03-03"},{"lineNumber":295,"author":{"gitId":"pjanthony2001"},"content":"| `* * *` | social worker | see usage instructions | refer to instructions when I forget how to use the App |","lastModifiedDate":"2024-02-26"},{"lineNumber":296,"author":{"gitId":"pjanthony2001"},"content":"| `* * *` | social worker | create a new client | keep track of their information efficiently |","lastModifiedDate":"2024-02-26"},{"lineNumber":297,"author":{"gitId":"pjanthony2001"},"content":"| `* * *` | social worker | delete a client | remove client entries that I no longer need |","lastModifiedDate":"2024-03-03"},{"lineNumber":298,"author":{"gitId":"pjanthony2001"},"content":"| `* * *` | social worker | find a client by name | locate details of clients without having to go through the entire list |","lastModifiedDate":"2024-03-03"},{"lineNumber":299,"author":{"gitId":"pjanthony2001"},"content":"| `* *` | social worker | hide private contact details | minimize chance of someone else seeing them by accident |","lastModifiedDate":"2024-03-03"},{"lineNumber":300,"author":{"gitId":"pjanthony2001"},"content":"| `*` | social worker with many clients | sort persons by name | locate a person easily |","lastModifiedDate":"2024-03-03"},{"lineNumber":301,"author":{"gitId":"pjanthony2001"},"content":"| `*` | social worker with colleagues | switch between profiles | manage my own set of clients on the same machine |","lastModifiedDate":"2024-03-06"},{"lineNumber":302,"author":{"gitId":"pjanthony2001"},"content":"| `*` | social worker | undo and redo my commands | easily rectify a mistaken command |","lastModifiedDate":"2024-03-06"},{"lineNumber":303,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":304,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":306,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":307,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":308,"author":{"gitId":"pjanthony2001"},"content":"(For all use cases below, the **System** is `ConnectCare` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2024-03-02"},{"lineNumber":309,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":310,"author":{"gitId":"pjanthony2001"},"content":"**Use case: Add a client**","lastModifiedDate":"2024-03-02"},{"lineNumber":311,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":312,"author":{"gitId":"pjanthony2001"},"content":"**MSS**","lastModifiedDate":"2024-03-02"},{"lineNumber":313,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":314,"author":{"gitId":"pjanthony2001"},"content":"1. User requests to add a client","lastModifiedDate":"2024-03-02"},{"lineNumber":315,"author":{"gitId":"pjanthony2001"},"content":"2. ConnectCare adds the client","lastModifiedDate":"2024-03-02"},{"lineNumber":316,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":317,"author":{"gitId":"pjanthony2001"},"content":" Use case ends.","lastModifiedDate":"2024-03-02"},{"lineNumber":318,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":319,"author":{"gitId":"pjanthony2001"},"content":"**Extensions**","lastModifiedDate":"2024-03-02"},{"lineNumber":320,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":321,"author":{"gitId":"pjanthony2001"},"content":"* 1a. The details of the client is incorrect","lastModifiedDate":"2024-03-02"},{"lineNumber":322,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":323,"author":{"gitId":"pjanthony2001"},"content":" * 1a1. ConnectCare shows an error message.","lastModifiedDate":"2024-03-02"},{"lineNumber":324,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":325,"author":{"gitId":"pjanthony2001"},"content":" Use case ends.","lastModifiedDate":"2024-03-02"},{"lineNumber":326,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":327,"author":{"gitId":"pjanthony2001"},"content":"**Use case: Update client details**","lastModifiedDate":"2024-03-02"},{"lineNumber":328,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":329,"author":{"gitId":"pjanthony2001"},"content":"**MSS**","lastModifiedDate":"2024-03-02"},{"lineNumber":330,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":331,"author":{"gitId":"pjanthony2001"},"content":"1. User requests to update a client ","lastModifiedDate":"2024-03-02"},{"lineNumber":332,"author":{"gitId":"pjanthony2001"},"content":"2. ConnectCare updates the client with new details","lastModifiedDate":"2024-03-02"},{"lineNumber":333,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":334,"author":{"gitId":"pjanthony2001"},"content":" Use case ends.","lastModifiedDate":"2024-03-02"},{"lineNumber":335,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":336,"author":{"gitId":"pjanthony2001"},"content":"**Extensions**","lastModifiedDate":"2024-03-02"},{"lineNumber":337,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":338,"author":{"gitId":"pjanthony2001"},"content":"* 1a. The client to update is not found","lastModifiedDate":"2024-03-02"},{"lineNumber":339,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":340,"author":{"gitId":"pjanthony2001"},"content":" * 1a1. ConnectCare shows an error message.","lastModifiedDate":"2024-03-02"},{"lineNumber":341,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":342,"author":{"gitId":"pjanthony2001"},"content":" Use case ends.","lastModifiedDate":"2024-03-02"},{"lineNumber":343,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":344,"author":{"gitId":"pjanthony2001"},"content":"* 1b. The client details given to update is incorrect","lastModifiedDate":"2024-03-02"},{"lineNumber":345,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":346,"author":{"gitId":"pjanthony2001"},"content":" * 1b1. ConnectCare shows an error message.","lastModifiedDate":"2024-03-02"},{"lineNumber":347,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":348,"author":{"gitId":"pjanthony2001"},"content":" Use case ends.","lastModifiedDate":"2024-03-02"},{"lineNumber":349,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":350,"author":{"gitId":"-"},"content":"**Use case: Delete a person**","lastModifiedDate":"2020-05-23"},{"lineNumber":351,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":352,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":353,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":354,"author":{"gitId":"-"},"content":"1. User requests to list persons","lastModifiedDate":"2020-05-23"},{"lineNumber":355,"author":{"gitId":"pjanthony2001"},"content":"2. ConnectCare shows a list of persons","lastModifiedDate":"2024-03-03"},{"lineNumber":356,"author":{"gitId":"-"},"content":"3. User requests to delete a specific person in the list","lastModifiedDate":"2020-05-23"},{"lineNumber":357,"author":{"gitId":"pjanthony2001"},"content":"4. ConnectCare deletes the person","lastModifiedDate":"2024-03-03"},{"lineNumber":358,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":359,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":360,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":361,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":362,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":363,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2020-05-23"},{"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":"* 3a. The given index is invalid.","lastModifiedDate":"2020-05-23"},{"lineNumber":368,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":369,"author":{"gitId":"pjanthony2001"},"content":" * 3a1. ConnectCare shows an error message.","lastModifiedDate":"2024-03-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":"pjanthony2001"},"content":"**Use case: Find client**","lastModifiedDate":"2024-03-02"},{"lineNumber":374,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":375,"author":{"gitId":"pjanthony2001"},"content":"**MSS**","lastModifiedDate":"2024-03-02"},{"lineNumber":376,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":377,"author":{"gitId":"pjanthony2001"},"content":"1. User requests to find a client","lastModifiedDate":"2024-03-02"},{"lineNumber":378,"author":{"gitId":"pjanthony2001"},"content":"2. ConnectCare lists all clients that match the keyword","lastModifiedDate":"2024-03-02"},{"lineNumber":379,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":380,"author":{"gitId":"pjanthony2001"},"content":" Use case ends.","lastModifiedDate":"2024-03-02"},{"lineNumber":381,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":382,"author":{"gitId":"pjanthony2001"},"content":"**Extensions**","lastModifiedDate":"2024-03-02"},{"lineNumber":383,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":384,"author":{"gitId":"pjanthony2001"},"content":"* 1a. There is no given keyword.","lastModifiedDate":"2024-03-02"},{"lineNumber":385,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":386,"author":{"gitId":"pjanthony2001"},"content":" * 1a1. ConnectCare shows an error message.","lastModifiedDate":"2024-03-03"},{"lineNumber":387,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":388,"author":{"gitId":"pjanthony2001"},"content":" Use case ends.","lastModifiedDate":"2024-03-02"},{"lineNumber":389,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":390,"author":{"gitId":"pjanthony2001"},"content":"**Use case: Clear all clients**","lastModifiedDate":"2024-03-02"},{"lineNumber":391,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":392,"author":{"gitId":"pjanthony2001"},"content":"**MSS**","lastModifiedDate":"2024-03-02"},{"lineNumber":393,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":394,"author":{"gitId":"pjanthony2001"},"content":"1. User requests to clear all clients","lastModifiedDate":"2024-03-02"},{"lineNumber":395,"author":{"gitId":"pjanthony2001"},"content":"2. ConnectCare requests for confirmation","lastModifiedDate":"2024-03-03"},{"lineNumber":396,"author":{"gitId":"pjanthony2001"},"content":"3. User confirms","lastModifiedDate":"2024-03-03"},{"lineNumber":397,"author":{"gitId":"pjanthony2001"},"content":"4. ConnectCare clears all clients","lastModifiedDate":"2024-03-03"},{"lineNumber":398,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":399,"author":{"gitId":"pjanthony2001"},"content":" Use case ends.","lastModifiedDate":"2024-03-02"},{"lineNumber":400,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":401,"author":{"gitId":"pjanthony2001"},"content":"**Extensions**","lastModifiedDate":"2024-03-02"},{"lineNumber":402,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":403,"author":{"gitId":"pjanthony2001"},"content":"* 1a. The list is empty.","lastModifiedDate":"2024-03-02"},{"lineNumber":404,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":405,"author":{"gitId":"pjanthony2001"},"content":" * 1a1. ConnectCare shows an error message.","lastModifiedDate":"2024-03-03"},{"lineNumber":406,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":407,"author":{"gitId":"pjanthony2001"},"content":" Use case ends.","lastModifiedDate":"2024-03-03"},{"lineNumber":408,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":409,"author":{"gitId":"pjanthony2001"},"content":"* 3a. The user does not confirm","lastModifiedDate":"2024-03-03"},{"lineNumber":410,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-03"},{"lineNumber":411,"author":{"gitId":"pjanthony2001"},"content":" * 3a1. ConnectCare informs user of the cancellation","lastModifiedDate":"2024-03-03"},{"lineNumber":412,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":413,"author":{"gitId":"pjanthony2001"},"content":" Use case ends.","lastModifiedDate":"2024-03-02"},{"lineNumber":414,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":415,"author":{"gitId":"pjanthony2001"},"content":"**Use case: Exit the application**","lastModifiedDate":"2024-03-02"},{"lineNumber":416,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":417,"author":{"gitId":"pjanthony2001"},"content":"**MSS**","lastModifiedDate":"2024-03-02"},{"lineNumber":418,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":419,"author":{"gitId":"pjanthony2001"},"content":"1. User requests to exit the application","lastModifiedDate":"2024-03-02"},{"lineNumber":420,"author":{"gitId":"pjanthony2001"},"content":"2. ConnectCare exits","lastModifiedDate":"2024-03-02"},{"lineNumber":421,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-02"},{"lineNumber":422,"author":{"gitId":"pjanthony2001"},"content":" Use case ends.","lastModifiedDate":"2024-03-02"},{"lineNumber":423,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":424,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":425,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":426,"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":427,"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":428,"author":{"gitId":"tejas-1405"},"content":"3. The system should be responsive, with a maximum response time of 3 seconds for any user action.","lastModifiedDate":"2024-03-03"},{"lineNumber":429,"author":{"gitId":"tejas-1405"},"content":"4. 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":"2024-03-03"},{"lineNumber":430,"author":{"gitId":"tejas-1405"},"content":"5. The user interface should be intuitive and easy to navigate, requiring minimal training for social workers to use effectively.","lastModifiedDate":"2024-03-03"},{"lineNumber":431,"author":{"gitId":"tejas-1405"},"content":"6. The system should work without access to the internet.","lastModifiedDate":"2024-03-03"},{"lineNumber":432,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":433,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":434,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":435,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":436,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":437,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09"},{"lineNumber":438,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23"},{"lineNumber":439,"author":{"gitId":"tejas-1405"},"content":"* **Command Line Interface (CLI)**: A CLI is a text-based interface used to run programs, manage computer file sand interact with the computer","lastModifiedDate":"2024-03-03"},{"lineNumber":440,"author":{"gitId":"tejas-1405"},"content":"* **Main Success Scenario (MSS)**: The primary sequence of steps in a use case that describes the ideal path of interaction between a user and the system without encountering any errors","lastModifiedDate":"2024-03-03"},{"lineNumber":441,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":442,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":443,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":444,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":445,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":446,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":447,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":448,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12"},{"lineNumber":449,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":450,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":451,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":452,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":453,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":454,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":455,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":456,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":457,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":458,"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":459,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":460,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":461,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":462,"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":463,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":464,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":465,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":466,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":467,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":468,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":469,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":470,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":471,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":472,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":473,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":474,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":475,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":476,"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":477,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":478,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":479,"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":480,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":481,"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":482,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":483,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":484,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":485,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":486,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":487,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":488,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":489,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":490,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":491,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":492,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"pjanthony2001":108,"tejas-1405":6,"-":378}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2024-03-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2024-03-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"User Guide\"","lastModifiedDate":"2024-03-24"},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2024-03-24"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2024-03-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":7,"author":{"gitId":"Jolonauh"},"content":"# ConnectCare User Guide","lastModifiedDate":"2024-03-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"Jolonauh"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2024-03-24"},{"lineNumber":10,"author":{"gitId":"Jolonauh"},"content":"This page is for ConnectCare users. If you\u0027re a developer, see also the [Developer guide](https://ay2324s2-cs2103t-w12-4.github.io/tp/DeveloperGuide.html)_.","lastModifiedDate":"2024-03-24"},{"lineNumber":11,"author":{"gitId":"Jolonauh"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-03-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2024-03-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2024-03-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":16,"author":{"gitId":"Jolonauh"},"content":"## Introduction","lastModifiedDate":"2024-03-24"},{"lineNumber":17,"author":{"gitId":"Jolonauh"},"content":"Welcome to *ConnectCare User Guide*, a guide to use the *ConnectCare* application.","lastModifiedDate":"2024-03-24"},{"lineNumber":18,"author":{"gitId":"Jolonauh"},"content":"*ConnectCare* helps you manage your client contacts faster and more reliably.","lastModifiedDate":"2024-03-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":20,"author":{"gitId":"Jolonauh"},"content":"## Who ConnectCare Is For","lastModifiedDate":"2024-03-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"Jolonauh"},"content":"ConnectCare is a powerful application designed to make social workers\u0027 lives easier, especially those juggling high caseloads. It prioritizes keyboard shortcuts, eliminating the need to constantly switch between keyboard and mouse. This focus on keyboard navigation translates to:","lastModifiedDate":"2024-03-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"Jolonauh"},"content":"* Increased Efficiency: Spend less time navigating the software and more time directly helping clients.","lastModifiedDate":"2024-03-24"},{"lineNumber":25,"author":{"gitId":"Jolonauh"},"content":"* Reduced Errors: Minimize the possibility of errors caused by switching between input methods.","lastModifiedDate":"2024-03-24"},{"lineNumber":26,"author":{"gitId":"Jolonauh"},"content":"* Boosted Productivity: Complete tasks faster and free up valuable time for client interaction.","lastModifiedDate":"2024-03-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"Jolonauh"},"content":"**Embrace a Keyboard-Centric Approach**","lastModifiedDate":"2024-03-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"Jolonauh"},"content":"Social workers often spend significant time documenting and updating client information. By minimizing the need to use a mouse, ConnectCare allows for a smoother workflow, especially when working remotely or on laptops.","lastModifiedDate":"2024-03-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"Jolonauh"},"content":"This approach can significantly reduce:","lastModifiedDate":"2024-03-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"Jolonauh"},"content":"* Hand fatigue and strain.","lastModifiedDate":"2024-03-24"},{"lineNumber":35,"author":{"gitId":"Jolonauh"},"content":"* Cognitive load from switching between input methods.","lastModifiedDate":"2024-03-24"},{"lineNumber":36,"author":{"gitId":"Jolonauh"},"content":"* Overall time spent completing tasks.","lastModifiedDate":"2024-03-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"Jolonauh"},"content":"**Work Offline, Stay Productive**","lastModifiedDate":"2024-03-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":40,"author":{"gitId":"Jolonauh"},"content":"One of the key benefits of ConnectCare is that it doesn\u0027t require a constant internet connection. This allows you to work seamlessly even in areas with limited or no internet access. Whether you\u0027re conducting a home visit or working remotely in the field, ConnectCare ensures you can access and update client information efficiently.","lastModifiedDate":"2024-03-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":42,"author":{"gitId":"Jolonauh"},"content":"**Sensitive Data is kept Secure**","lastModifiedDate":"2024-03-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":44,"author":{"gitId":"Jolonauh"},"content":"We understand that social workers handle sensitive client information. Since ConnectCare functions offline, your data never needs to be transmitted over the internet or stored on remote servers. This significantly reduces the risk of unauthorized access compared to cloud-based solutions. ConnectCare prioritizes data security by storing information [locally](https://ay2324s2-cs2103t-w12-4.github.io/tp/UserGuide.html#local) on your device.","lastModifiedDate":"2024-03-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":46,"author":{"gitId":"Jolonauh"},"content":"**Focus on Your Clients, Not Software**","lastModifiedDate":"2024-03-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"Jolonauh"},"content":"By streamlining workflows and offering social work-specific features, ConnectCare empowers you to focus on what matters most: your clients. You can spend more time building rapport with clients, respond to inquiries and needs more promptly and ultimately focus on delivering high-quality care.","lastModifiedDate":"2024-03-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"Jolonauh"},"content":"## Who This Guide Is For","lastModifiedDate":"2024-03-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"Jolonauh"},"content":"This guide does not assume any technical knowledge from users. We just require users to be able to type on a keyboard. As ConnectCare uses a [CLI](https://ay2324s2-cs2103t-w12-4.github.io/tp/UserGuide.html#cli), users who are familiar with a CLI would find it easy to transition to this software. However, if you have not used a CLI application before, there would be a step-by-step introduction in this guide for each command.","lastModifiedDate":"2024-03-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":54,"author":{"gitId":"Jolonauh"},"content":"## How to Use This Guide","lastModifiedDate":"2024-03-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":56,"author":{"gitId":"Jolonauh"},"content":"There is no wrong way to read this guide: if you want to skip ahead, go for it! Each section is contained in itself, and you can find what you are looking for without needing to read the previous sections. However, we recommend that you read through the entire guide at least once before utilizing the application, so that you would have a more thorough understanding of the all necessary features.","lastModifiedDate":"2024-03-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":58,"author":{"gitId":"Jolonauh"},"content":"This guide is comprised of 4 main sections:","lastModifiedDate":"2024-03-24"},{"lineNumber":59,"author":{"gitId":"Jolonauh"},"content":"1. The [**Quick Start**](https://ay2324s2-cs2103t-w12-4.github.io/tp/UserGuide.html#quick-start) section, we will walk through you in how to get started installing as well as running the ConnectCare on your own desktop","lastModifiedDate":"2024-03-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":61,"author":{"gitId":"Jolonauh"},"content":"2. The [**Features Section**](https://ay2324s2-cs2103t-w12-4.github.io/tp/UserGuide.html#features) will provide a comprehensive, easy-to-understand guide on how to fully make use of all of ConnectCare\u0027s functionalities and commands.","lastModifiedDate":"2024-03-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":63,"author":{"gitId":"Jolonauh"},"content":"3. The [**FAQ**](https://ay2324s2-cs2103t-w12-4.github.io/tp/UserGuide.html#faq) section will answer commonly asked questions, addressing potential further queries you might have!","lastModifiedDate":"2024-03-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"Jolonauh"},"content":"4. Lastly, the [**Glossary**](https://ay2324s2-cs2103t-w12-4.github.io/tp/UserGuide.html#faq) contains a list of key terms and definitions that might be helpful","lastModifiedDate":"2024-03-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"Jolonauh"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2024-03-24"},{"lineNumber":68,"author":{"gitId":"Jolonauh"},"content":"**Tip:** 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":"2024-03-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-03-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":71,"author":{"gitId":"Jolonauh"},"content":"## Quick start","lastModifiedDate":"2024-03-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":73,"author":{"gitId":"Jolonauh"},"content":"- Ensure Java 11 is installed in your computer. If it\u0027s not, install it [here](https://www.oracle.com/sg/java/technologies/javase/jdk11-archive-downloads.html)","lastModifiedDate":"2024-03-24"},{"lineNumber":74,"author":{"gitId":"Jolonauh"},"content":"- Download the latest ConnectCare.jar","lastModifiedDate":"2024-03-24"},{"lineNumber":75,"author":{"gitId":"Jolonauh"},"content":"- Copy the jar file to the folder you want to use as the home folder","lastModifiedDate":"2024-03-24"},{"lineNumber":76,"author":{"gitId":"Jolonauh"},"content":"- Double click the file to start the application!","lastModifiedDate":"2024-03-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":78,"author":{"gitId":"Jolonauh"},"content":"___","lastModifiedDate":"2024-03-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":80,"author":{"gitId":"Jolonauh"},"content":"## Features","lastModifiedDate":"2024-03-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":82,"author":{"gitId":"Jolonauh"},"content":"### Notes about the command format:","lastModifiedDate":"2024-03-24"},{"lineNumber":83,"author":{"gitId":"Jolonauh"},"content":"- Words in `UPPER_CASE` are the parameters to be supplied by the user. ","lastModifiedDate":"2024-03-24"},{"lineNumber":84,"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":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"Jolonauh"},"content":"- Items in square brackets are optional. ","lastModifiedDate":"2024-03-24"},{"lineNumber":87,"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":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"Jolonauh"},"content":"- Items with `…` after them can be used multiple times including zero times. ","lastModifiedDate":"2024-03-24"},{"lineNumber":90,"author":{"gitId":"Jolonauh"},"content":" e.g. `[t/TAG]…` can be used as (i.e. 0 times), `t/friend`, `t/friend t/family` etc.","lastModifiedDate":"2024-03-24"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"Jolonauh"},"content":"- Parameters can be in any order. ","lastModifiedDate":"2024-03-24"},{"lineNumber":93,"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":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"Jolonauh"},"content":"- Extraneous parameters for commands that do not take in parameters (such as `help`, `list`, `exit` and `clear`) will be ignored. ","lastModifiedDate":"2024-03-24"},{"lineNumber":96,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":98,"author":{"gitId":"eliotlee68"},"content":"### Adding a new client: `add`","lastModifiedDate":"2024-02-26"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"eliotlee68"},"content":"This command adds a new client to your client list.","lastModifiedDate":"2024-02-26"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"Jolonauh"},"content":"Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]… [k/NEXTOFKIN]`","lastModifiedDate":"2024-03-24"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"Jolonauh"},"content":"**Tip:** A person can have any number of tags (or even 0!) **Tip:** A person\u0027s next of kin field is optional (it can be ommitted if a person does not have a next of kin)","lastModifiedDate":"2024-03-24"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":108,"author":{"gitId":"Jolonauh"},"content":"- `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01`","lastModifiedDate":"2024-03-24"},{"lineNumber":109,"author":{"gitId":"Jolonauh"},"content":"- `add n/Betsy Crowe t/friend e/betsycrowe@example.com a/Newgate Prison p/1234567 t/criminal`","lastModifiedDate":"2024-03-24"},{"lineNumber":110,"author":{"gitId":"Jolonauh"},"content":"- `add n/Bill James p/01232228943 e/billj@example.com a/12 College Avenue West t/high priority k/John Doe`","lastModifiedDate":"2024-03-24"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"eliotlee68"},"content":"### Updating a client : `update`","lastModifiedDate":"2024-02-26"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"eliotlee68"},"content":"This command helps update existing client\u0027s information in the client list in the event that something changes.","lastModifiedDate":"2024-02-26"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"Jolonauh"},"content":"Format: `update u/existing user [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [t/TAG]…`","lastModifiedDate":"2024-03-24"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":120,"author":{"gitId":"Jolonauh"},"content":"- `Update u/Jane Doe n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-011` updates the information of Jane Doe\u0027s information to be ","lastModifiedDate":"2024-03-24"},{"lineNumber":121,"author":{"gitId":"Jolonauh"},"content":" name: John Doe ","lastModifiedDate":"2024-03-24"},{"lineNumber":122,"author":{"gitId":"Jolonauh"},"content":" Phone no: 98765432 ","lastModifiedDate":"2024-03-24"},{"lineNumber":123,"author":{"gitId":"Jolonauh"},"content":" email: [johnd@example.com](mailto:johnd@example.com) ","lastModifiedDate":"2024-03-24"},{"lineNumber":124,"author":{"gitId":"Jolonauh"},"content":" address: John street, block 123, #01-011","lastModifiedDate":"2024-03-24"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"### Locating persons by name: `find`","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"eliotlee68"},"content":"This command allows you to find a specific client in your client list by their **name**","lastModifiedDate":"2024-02-26"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"eliotlee68"},"content":"Format: `find n/NAME`","lastModifiedDate":"2024-02-26"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"Jolonauh"},"content":"Examples: Lets say your contact list contains the following contacts: **John Doe** **John Lee** **Alex Lee** **Bobby Chan**","lastModifiedDate":"2024-03-24"},{"lineNumber":133,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":134,"author":{"gitId":"Jolonauh"},"content":"- `find John` would return `John Doe` as well as `John Lee`","lastModifiedDate":"2024-03-24"},{"lineNumber":135,"author":{"gitId":"Jolonauh"},"content":"- `find Alex Lee` would return `Alex Lee`","lastModifiedDate":"2024-03-24"},{"lineNumber":136,"author":{"gitId":"Jolonauh"},"content":"- `find Lee` would return `John Lee` as well as `Alex Lee`","lastModifiedDate":"2024-03-24"},{"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":"eliotlee68"},"content":"This command allows you to purge your client list, removing **ALL** clients in your client list.","lastModifiedDate":"2024-02-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":"Jolonauh"},"content":"**Caution:** Only use this command if you are **absolutely** sure that you are willing to clear **all** of your clients from the list, as after running this command, any existing clients will be **unrecoverable**.","lastModifiedDate":"2024-03-24"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":146,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2024-02-26"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"eliotlee68"},"content":"This command allows you to exit the application.","lastModifiedDate":"2024-02-26"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2024-02-26"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"Jolonauh"},"content":"### Shortcuts","lastModifiedDate":"2024-03-24"},{"lineNumber":153,"author":{"gitId":"Jolonauh"},"content":"_These are a list of helpful actions to facilitate the ease of use of our application_","lastModifiedDate":"2024-03-24"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"Jolonauh"},"content":"#### Command Line Shortcuts","lastModifiedDate":"2024-03-24"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"eliotlee68"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2024-02-26"},{"lineNumber":158,"author":{"gitId":"Jolonauh"},"content":"**Tip:** These shortcuts only work when the text box is selected","lastModifiedDate":"2024-03-24"},{"lineNumber":159,"author":{"gitId":"Jolonauh"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-03-24"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":161,"author":{"gitId":"Jolonauh"},"content":"| Action | Description |","lastModifiedDate":"2024-03-24"},{"lineNumber":162,"author":{"gitId":"Jolonauh"},"content":"| --- | --- |","lastModifiedDate":"2024-03-24"},{"lineNumber":163,"author":{"gitId":"Jolonauh"},"content":"|`Up` | Displays to the previous command entered, if any. |","lastModifiedDate":"2024-03-24"},{"lineNumber":164,"author":{"gitId":"Jolonauh"},"content":"|`Down`| Displays the next command entered, if any. |","lastModifiedDate":"2024-03-24"},{"lineNumber":165,"author":{"gitId":"Jolonauh"},"content":"|`Tab`| Automatically completes commands, if available. |","lastModifiedDate":"2024-03-24"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":167,"author":{"gitId":"Jolonauh"},"content":"### Saving the data","lastModifiedDate":"2024-03-24"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":169,"author":{"gitId":"Jolonauh"},"content":"Your locally saved client list will be updated after any change is made, so no further action needs to be taken when operating the application! On start-up, your existing client list (if it exists) will also be automatically loaded, so don\u0027t worry about that!","lastModifiedDate":"2024-03-24"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"eliotlee68"},"content":"NOTE: If it is your first time running the program, and there is no existing client list, a new file will automatically be generated to store your new client list!","lastModifiedDate":"2024-02-26"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":173,"author":{"gitId":"Jolonauh"},"content":"___","lastModifiedDate":"2024-03-24"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2024-02-26"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":177,"author":{"gitId":"Jolonauh"},"content":"**Q:** How do I transfer my data to another Computer? \\","lastModifiedDate":"2024-03-24"},{"lineNumber":178,"author":{"gitId":"Jolonauh"},"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":"2024-03-24"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"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":"Jolonauh"},"content":"| Action | Format | Examples |","lastModifiedDate":"2024-03-24"},{"lineNumber":184,"author":{"gitId":"Jolonauh"},"content":"| --- | --- | --- |","lastModifiedDate":"2024-03-24"},{"lineNumber":185,"author":{"gitId":"Jolonauh"},"content":"| **Add** | `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]… [k/NEXTOFKIN]` |`add n/James Ho p/22224444 e/jamesho@example.com a/123, Clementi Rd, 1234665 t/friend t/colleague` |","lastModifiedDate":"2024-03-24"},{"lineNumber":186,"author":{"gitId":"Jolonauh"},"content":"| **Update** | `update u/existing user [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [t/TAG]…` | `Update u/Jane Doe n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-011` |","lastModifiedDate":"2024-03-24"},{"lineNumber":187,"author":{"gitId":"Jolonauh"},"content":"| **Find** | `find KEYWORD [MORE_KEYWORDS]` | `find James Jake` |","lastModifiedDate":"2024-03-24"},{"lineNumber":188,"author":{"gitId":"Jolonauh"},"content":"| **Undo** | `undo`| |","lastModifiedDate":"2024-03-24"},{"lineNumber":189,"author":{"gitId":"Jolonauh"},"content":"| **Redo** | `redo` | |","lastModifiedDate":"2024-03-24"},{"lineNumber":190,"author":{"gitId":"Jolonauh"},"content":"| **Display** | TBD | |","lastModifiedDate":"2024-03-24"},{"lineNumber":191,"author":{"gitId":"Jolonauh"},"content":"| **Clear** | `clear` | |","lastModifiedDate":"2024-03-24"},{"lineNumber":192,"author":{"gitId":"Jolonauh"},"content":"| **Exit** | `exit` | |","lastModifiedDate":"2024-03-24"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":194,"author":{"gitId":"Jolonauh"},"content":"___","lastModifiedDate":"2024-03-24"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":196,"author":{"gitId":"Jolonauh"},"content":"## Glossary","lastModifiedDate":"2024-03-24"},{"lineNumber":197,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":198,"author":{"gitId":"Jolonauh"},"content":"### CLI","lastModifiedDate":"2024-03-24"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":200,"author":{"gitId":"Jolonauh"},"content":"### Local","lastModifiedDate":"2024-03-24"}],"authorContributionMap":{"Jolonauh":96,"eliotlee68":10,"-":94}},{"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":"-"},"content":"AddressBook *-right-\u003e \"1\" UniquePersonList","lastModifiedDate":"2019-07-30"},{"lineNumber":8,"author":{"gitId":"-"},"content":"AddressBook *-right-\u003e \"1\" UniqueTagList","lastModifiedDate":"2019-07-30"},{"lineNumber":9,"author":{"gitId":"-"},"content":"UniqueTagList -[hidden]down- UniquePersonList","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"UniqueTagList -[hidden]down- UniquePersonList","lastModifiedDate":"2019-07-03"},{"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":"-"},"content":"UniquePersonList -right-\u003e Person","lastModifiedDate":"2021-07-31"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"Person -up-\u003e \"*\" Tag","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"Person *--\u003e Name","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"Person *--\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Person *--\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Person *--\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"Rishit02"},"content":"Person *--\u003e Description","lastModifiedDate":"2024-03-24"},{"lineNumber":22,"author":{"gitId":"Rishit02"},"content":"Person *--\u003e \"Next of Kin\"","lastModifiedDate":"2024-03-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"Rishit02":2,"-":21}},{"path":"docs/diagrams/FindSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"eliotlee68"},"content":"@startuml","lastModifiedDate":"2024-03-23"},{"lineNumber":2,"author":{"gitId":"eliotlee68"},"content":"!include style.puml","lastModifiedDate":"2024-03-23"},{"lineNumber":3,"author":{"gitId":"eliotlee68"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-23"},{"lineNumber":4,"author":{"gitId":"eliotlee68"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"eliotlee68"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"eliotlee68"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"eliotlee68"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"eliotlee68"},"content":"participant \":FindCommandParser\" as FindCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-23"},{"lineNumber":9,"author":{"gitId":"eliotlee68"},"content":"participant \"f:FindCommand\" as FindCommand LOGIC_COLOR","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"eliotlee68"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"eliotlee68"},"content":"end box","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"eliotlee68"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"eliotlee68"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"eliotlee68"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-23"},{"lineNumber":15,"author":{"gitId":"eliotlee68"},"content":"end box","lastModifiedDate":"2024-03-23"},{"lineNumber":16,"author":{"gitId":"eliotlee68"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"eliotlee68"},"content":"[-\u003e LogicManager : execute(\"find n/John a/Clementi\")","lastModifiedDate":"2024-03-23"},{"lineNumber":18,"author":{"gitId":"eliotlee68"},"content":"activate LogicManager","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"eliotlee68"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"eliotlee68"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"find n/John a/Clementi\")","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"eliotlee68"},"content":"activate AddressBookParser","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"eliotlee68"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"eliotlee68"},"content":"create FindCommandParser","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"eliotlee68"},"content":"AddressBookParser -\u003e FindCommandParser","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"eliotlee68"},"content":"activate FindCommandParser","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"eliotlee68"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":27,"author":{"gitId":"eliotlee68"},"content":"FindCommandParser --\u003e AddressBookParser","lastModifiedDate":"2024-03-23"},{"lineNumber":28,"author":{"gitId":"eliotlee68"},"content":"deactivate FindCommandParser","lastModifiedDate":"2024-03-23"},{"lineNumber":29,"author":{"gitId":"eliotlee68"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"eliotlee68"},"content":"AddressBookParser -\u003e FindCommandParser : parse(\"n/John a/Clementi\")","lastModifiedDate":"2024-03-24"},{"lineNumber":31,"author":{"gitId":"eliotlee68"},"content":"activate FindCommandParser","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"eliotlee68"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":33,"author":{"gitId":"eliotlee68"},"content":"create FindCommand","lastModifiedDate":"2024-03-23"},{"lineNumber":34,"author":{"gitId":"eliotlee68"},"content":"FindCommandParser -\u003e FindCommand","lastModifiedDate":"2024-03-23"},{"lineNumber":35,"author":{"gitId":"eliotlee68"},"content":"activate FindCommand","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"eliotlee68"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":37,"author":{"gitId":"eliotlee68"},"content":"FindCommand --\u003e FindCommandParser :","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"eliotlee68"},"content":"deactivate FindCommand","lastModifiedDate":"2024-03-23"},{"lineNumber":39,"author":{"gitId":"eliotlee68"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":40,"author":{"gitId":"eliotlee68"},"content":"FindCommandParser --\u003e AddressBookParser : f","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"eliotlee68"},"content":"deactivate FindCommandParser","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"eliotlee68"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2024-03-23"},{"lineNumber":43,"author":{"gitId":"eliotlee68"},"content":"FindCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-23"},{"lineNumber":44,"author":{"gitId":"eliotlee68"},"content":"destroy FindCommandParser","lastModifiedDate":"2024-03-23"},{"lineNumber":45,"author":{"gitId":"eliotlee68"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":46,"author":{"gitId":"eliotlee68"},"content":"AddressBookParser --\u003e LogicManager : f","lastModifiedDate":"2024-03-23"},{"lineNumber":47,"author":{"gitId":"eliotlee68"},"content":"deactivate AddressBookParser","lastModifiedDate":"2024-03-23"},{"lineNumber":48,"author":{"gitId":"eliotlee68"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":49,"author":{"gitId":"eliotlee68"},"content":"LogicManager -\u003e FindCommand : execute(m)","lastModifiedDate":"2024-03-23"},{"lineNumber":50,"author":{"gitId":"eliotlee68"},"content":"activate FindCommand","lastModifiedDate":"2024-03-23"},{"lineNumber":51,"author":{"gitId":"eliotlee68"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":52,"author":{"gitId":"eliotlee68"},"content":"FindCommand -\u003e Model : updateFilteredPersonList(...)","lastModifiedDate":"2024-03-23"},{"lineNumber":53,"author":{"gitId":"eliotlee68"},"content":"activate Model","lastModifiedDate":"2024-03-23"},{"lineNumber":54,"author":{"gitId":"eliotlee68"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":55,"author":{"gitId":"eliotlee68"},"content":"Model --\u003e FindCommand","lastModifiedDate":"2024-03-23"},{"lineNumber":56,"author":{"gitId":"eliotlee68"},"content":"deactivate Model","lastModifiedDate":"2024-03-23"},{"lineNumber":57,"author":{"gitId":"eliotlee68"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":58,"author":{"gitId":"eliotlee68"},"content":"create CommandResult","lastModifiedDate":"2024-03-23"},{"lineNumber":59,"author":{"gitId":"eliotlee68"},"content":"FindCommand -\u003e CommandResult","lastModifiedDate":"2024-03-23"},{"lineNumber":60,"author":{"gitId":"eliotlee68"},"content":"activate CommandResult","lastModifiedDate":"2024-03-23"},{"lineNumber":61,"author":{"gitId":"eliotlee68"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":62,"author":{"gitId":"eliotlee68"},"content":"CommandResult --\u003e FindCommand","lastModifiedDate":"2024-03-23"},{"lineNumber":63,"author":{"gitId":"eliotlee68"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-23"},{"lineNumber":64,"author":{"gitId":"eliotlee68"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":65,"author":{"gitId":"eliotlee68"},"content":"FindCommand --\u003e LogicManager : r","lastModifiedDate":"2024-03-23"},{"lineNumber":66,"author":{"gitId":"eliotlee68"},"content":"deactivate FindCommand","lastModifiedDate":"2024-03-23"},{"lineNumber":67,"author":{"gitId":"eliotlee68"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":68,"author":{"gitId":"eliotlee68"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-23"},{"lineNumber":69,"author":{"gitId":"eliotlee68"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-23"},{"lineNumber":70,"author":{"gitId":"eliotlee68"},"content":"@enduml","lastModifiedDate":"2024-03-23"}],"authorContributionMap":{"eliotlee68":70}},{"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":"-"},"content":"Class UniquePersonList","lastModifiedDate":"2021-07-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"Class Person","lastModifiedDate":"2019-07-03"},{"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":"-"},"content":"Class Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"Rishit02"},"content":"Class Description","lastModifiedDate":"2024-03-24"},{"lineNumber":22,"author":{"gitId":"Rishit02"},"content":"Class \"Next of Kin\"","lastModifiedDate":"2024-03-24"},{"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":"-"},"content":"AddressBook *--\u003e \"1\" UniquePersonList","lastModifiedDate":"2019-07-30"},{"lineNumber":41,"author":{"gitId":"-"},"content":"UniquePersonList --\u003e \"~* all\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":42,"author":{"gitId":"-"},"content":"Person *--\u003e Name","lastModifiedDate":"2019-07-03"},{"lineNumber":43,"author":{"gitId":"-"},"content":"Person *--\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":44,"author":{"gitId":"-"},"content":"Person *--\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"Person *--\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"Rishit02"},"content":"Person *--\u003e Description","lastModifiedDate":"2024-03-24"},{"lineNumber":47,"author":{"gitId":"Rishit02"},"content":"Person *--\u003e \"Next of Kin\"","lastModifiedDate":"2024-03-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":"Person *--\u003e \"*\" Tag","lastModifiedDate":"2019-07-03"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":50,"author":{"gitId":"-"},"content":"Person -[hidden]up--\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"UniquePersonList -[hidden]right-\u003e I","lastModifiedDate":"2023-07-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":"Name -[hidden]right-\u003e Phone","lastModifiedDate":"2019-07-03"},{"lineNumber":54,"author":{"gitId":"-"},"content":"Phone -[hidden]right-\u003e Address","lastModifiedDate":"2019-07-03"},{"lineNumber":55,"author":{"gitId":"-"},"content":"Address -[hidden]right-\u003e Email","lastModifiedDate":"2019-07-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":"ModelManager --\u003e \"~* filtered\" Person","lastModifiedDate":"2021-07-31"},{"lineNumber":58,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"Rishit02":4,"-":54}},{"path":"docs/diagrams/StateClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Jolonauh"},"content":"@startuml","lastModifiedDate":"2024-03-23"},{"lineNumber":2,"author":{"gitId":"Jolonauh"},"content":"!include style.puml","lastModifiedDate":"2024-03-23"},{"lineNumber":3,"author":{"gitId":"Jolonauh"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2024-03-23"},{"lineNumber":4,"author":{"gitId":"Jolonauh"},"content":"skinparam arrowColor DimGray","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"Jolonauh"},"content":"skinparam classBackgroundColor DimGray","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"Jolonauh"},"content":"Package State as StatePackage \u003c\u003cRectangle\u003e\u003e{","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"Jolonauh"},"content":"Class State","lastModifiedDate":"2024-03-23"},{"lineNumber":9,"author":{"gitId":"Jolonauh"},"content":"Class Command","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"Jolonauh"},"content":"Class ReadOnlyAddressBook","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"Jolonauh"},"content":"Class ObservableList","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"Jolonauh"},"content":"Class Predicate","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"Jolonauh"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":15,"author":{"gitId":"Jolonauh"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2024-03-23"},{"lineNumber":16,"author":{"gitId":"Jolonauh"},"content":"HiddenOutside ..\u003e State","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":18,"author":{"gitId":"Jolonauh"},"content":"State *--\u003e Command","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"Jolonauh"},"content":"State *--\u003e ReadOnlyAddressBook","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"Jolonauh"},"content":"State *--\u003e ObservableList","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"Jolonauh"},"content":"State *--\u003e Predicate","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"Jolonauh"},"content":"@enduml","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-23"}],"authorContributionMap":{"Jolonauh":23}},{"path":"docs/diagrams/StateSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Jolonauh"},"content":"@startuml","lastModifiedDate":"2024-03-23"},{"lineNumber":2,"author":{"gitId":"Jolonauh"},"content":"!include style.puml","lastModifiedDate":"2024-03-23"},{"lineNumber":3,"author":{"gitId":"Jolonauh"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-23"},{"lineNumber":4,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"Jolonauh"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"Jolonauh"},"content":"participant \":Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"Jolonauh"},"content":"end box","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":9,"author":{"gitId":"Jolonauh"},"content":"box State STATE_COLOR_T1","lastModifiedDate":"2024-03-24"},{"lineNumber":10,"author":{"gitId":"Jolonauh"},"content":"participant \":State\" as State STATE_COLOR","lastModifiedDate":"2024-03-24"},{"lineNumber":11,"author":{"gitId":"Jolonauh"},"content":"end box","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"Jolonauh"},"content":"[-\u003e Model : restoreState(state)","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"Jolonauh"},"content":"activate Model","lastModifiedDate":"2024-03-23"},{"lineNumber":15,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":16,"author":{"gitId":"Jolonauh"},"content":"Model -\u003e State : getAddressBook()","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"Jolonauh"},"content":"activate State","lastModifiedDate":"2024-03-23"},{"lineNumber":18,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"Jolonauh"},"content":"State --\u003e Model : newAddressBook","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"Jolonauh"},"content":"deactivate State","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"Jolonauh"},"content":"Model -\u003e Model : setAddressBook(newAddressBook)","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"Jolonauh"},"content":"activate Model","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"Jolonauh"},"content":"deactivate Model","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":27,"author":{"gitId":"Jolonauh"},"content":"Model -\u003e State : getFilteredList()","lastModifiedDate":"2024-03-23"},{"lineNumber":28,"author":{"gitId":"Jolonauh"},"content":"activate State","lastModifiedDate":"2024-03-23"},{"lineNumber":29,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"Jolonauh"},"content":"State --\u003e Model : newFilteredPersons","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"Jolonauh"},"content":"deactivate State","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":33,"author":{"gitId":"Jolonauh"},"content":"Model -\u003e State : getFilteredPersonsListPredicate()","lastModifiedDate":"2024-03-23"},{"lineNumber":34,"author":{"gitId":"Jolonauh"},"content":"activate State","lastModifiedDate":"2024-03-23"},{"lineNumber":35,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"Jolonauh"},"content":"State --\u003e Model : newPredicate","lastModifiedDate":"2024-03-23"},{"lineNumber":37,"author":{"gitId":"Jolonauh"},"content":"deactivate State","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":39,"author":{"gitId":"Jolonauh"},"content":"Model -\u003e Model : setFilteredPersonsList(newFilteredPersons, newPredicate)","lastModifiedDate":"2024-03-23"},{"lineNumber":40,"author":{"gitId":"Jolonauh"},"content":"activate Model","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"Jolonauh"},"content":"deactivate Model","lastModifiedDate":"2024-03-23"},{"lineNumber":43,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":44,"author":{"gitId":"Jolonauh"},"content":"[\u003c--Model","lastModifiedDate":"2024-03-23"},{"lineNumber":45,"author":{"gitId":"Jolonauh"},"content":"deactivate Model","lastModifiedDate":"2024-03-23"},{"lineNumber":46,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":47,"author":{"gitId":"Jolonauh"},"content":"@enduml","lastModifiedDate":"2024-03-23"}],"authorContributionMap":{"Jolonauh":47}},{"path":"docs/diagrams/UndoRedoState0.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 ClassFontColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam ClassBorderColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam ClassBackgroundColor #FFFFAA","lastModifiedDate":"2023-07-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"title Initial state","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"package States {","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"pjanthony2001"},"content":" class State1 as \"\u003cu\u003estate0:State\u003c/u\u003e\"","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"pjanthony2001"},"content":" class State2 as \"\u003cu\u003estate1:State\u003c/u\u003e\"","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"pjanthony2001"},"content":" class State3 as \"\u003cu\u003estate2:State\u003c/u\u003e\"","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":"State1 -[hidden]right-\u003e State2","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"State2 -[hidden]right-\u003e State3","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"hide State2","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"hide State3","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"class Pointer as \"Current State\" #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":"Pointer -up-\u003e State1","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"@end","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"pjanthony2001":4,"-":18}},{"path":"docs/diagrams/UndoRedoState1.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 ClassFontColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam ClassBorderColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam ClassBackgroundColor #FFFFAA","lastModifiedDate":"2023-07-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"title After command \"delete 5\"","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"pjanthony2001"},"content":"package States {","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"pjanthony2001"},"content":" class State1 as \"\u003cu\u003estate0:State\u003c/u\u003e\"","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"pjanthony2001"},"content":" class State2 as \"\u003cu\u003estate1:State\u003c/u\u003e\"","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"pjanthony2001"},"content":" class State3 as \"\u003cu\u003estate2:State\u003c/u\u003e\"","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"State1 -[hidden]right-\u003e State2","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"State2 -[hidden]right-\u003e State3","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"hide State3","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"class Pointer as \"Current State\" #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"Pointer -up-\u003e State2","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"@end","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"pjanthony2001":4,"-":19}},{"path":"docs/diagrams/UndoRedoState2.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 ClassFontColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam ClassBorderColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam ClassBackgroundColor #FFFFAA","lastModifiedDate":"2023-07-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"title After command \"add n/David\"","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"pjanthony2001"},"content":"package States {","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"pjanthony2001"},"content":" class State1 as \"\u003cu\u003estate0:State\u003c/u\u003e\"","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"pjanthony2001"},"content":" class State2 as \"\u003cu\u003estate1:State\u003c/u\u003e\"","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"pjanthony2001"},"content":" class State3 as \"\u003cu\u003estate2:State\u003c/u\u003e\"","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"State1 -[hidden]right-\u003e State2","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"State2 -[hidden]right-\u003e State3","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"class Pointer as \"Current State\" #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Pointer -up-\u003e State3","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"@end","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"pjanthony2001":4,"-":17}},{"path":"docs/diagrams/UndoRedoState3.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 ClassFontColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam ClassBorderColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam ClassBackgroundColor #FFFFAA","lastModifiedDate":"2023-07-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"title After command \"undo\"","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"pjanthony2001"},"content":"package States {","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"pjanthony2001"},"content":" class State1 as \"\u003cu\u003estate0:State\u003c/u\u003e\"","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"pjanthony2001"},"content":" class State2 as \"\u003cu\u003estate1:State\u003c/u\u003e\"","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"pjanthony2001"},"content":" class State3 as \"\u003cu\u003estate2:State\u003c/u\u003e\"","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"State1 -[hidden]right-\u003e State2","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"State2 -[hidden]right-\u003e State3","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"class Pointer as \"Current State\" #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Pointer -up-\u003e State2","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"@end","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"pjanthony2001":4,"-":17}},{"path":"docs/diagrams/UndoRedoState4.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 ClassFontColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam ClassBorderColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam ClassBackgroundColor #FFFFAA","lastModifiedDate":"2023-07-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"title After command \"list\"","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"pjanthony2001"},"content":"package States {","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"pjanthony2001"},"content":" class State1 as \"\u003cu\u003estate0:State\u003c/u\u003e\"","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"pjanthony2001"},"content":" class State2 as \"\u003cu\u003estate1:State\u003c/u\u003e\"","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"pjanthony2001"},"content":" class State3 as \"\u003cu\u003estate2:State\u003c/u\u003e\"","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"State1 -[hidden]right-\u003e State2","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"State2 -[hidden]right-\u003e State3","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"class Pointer as \"Current State\" #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Pointer -up-\u003e State2","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"@end","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"pjanthony2001":4,"-":17}},{"path":"docs/diagrams/UndoRedoState5.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 ClassFontColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam ClassBorderColor #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam ClassBackgroundColor #FFFFAA","lastModifiedDate":"2023-07-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"title After command \"clear\"","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"pjanthony2001"},"content":"package States {","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"pjanthony2001"},"content":" class State1 as \"\u003cu\u003estate0:State\u003c/u\u003e\"","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"pjanthony2001"},"content":" class State2 as \"\u003cu\u003estate1:State\u003c/u\u003e\"","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"pjanthony2001"},"content":" class State3 as \"\u003cu\u003estate3:State\u003c/u\u003e\"","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"State1 -[hidden]right-\u003e State2","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"State2 -[hidden]right-\u003e State3","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"class Pointer as \"Current State\" #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Pointer -up-\u003e State3","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"pjanthony2001"},"content":"note right on link: State state2 deleted.","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":"@end","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"pjanthony2001":5,"-":17}},{"path":"docs/diagrams/UndoSequenceDiagram-Logic.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 \"u:UndoCommand\" as UndoCommand LOGIC_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"participant \":Model\" as Model MODEL_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"[-\u003e LogicManager : execute(undo)","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"activate LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(undo)","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"activate AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"create UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"AddressBookParser -\u003e UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"activate UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"UndoCommand --\u003e AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":"deactivate UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"AddressBookParser --\u003e LogicManager : u","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"deactivate AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"LogicManager -\u003e UndoCommand : execute()","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"activate UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"pjanthony2001"},"content":"UndoCommand -\u003e Model : rollBackHistory()","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":"activate Model","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"pjanthony2001"},"content":"Model --\u003e UndoCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":36,"author":{"gitId":"pjanthony2001"},"content":"deactivate Model","lastModifiedDate":"2024-03-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":38,"author":{"gitId":"pjanthony2001"},"content":"UndoCommand -\u003e Model : getCurrState()","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"pjanthony2001"},"content":"activate Model","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"pjanthony2001"},"content":"Model --\u003e UndoCommand : state","lastModifiedDate":"2024-03-22"},{"lineNumber":41,"author":{"gitId":"pjanthony2001"},"content":"deactivate Model","lastModifiedDate":"2024-03-22"},{"lineNumber":42,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":43,"author":{"gitId":"pjanthony2001"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"pjanthony2001"},"content":"UndoCommand -\u003e Model : restoreState(state)","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"pjanthony2001"},"content":"activate Model","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"-"},"content":"Model --\u003e UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":47,"author":{"gitId":"-"},"content":"deactivate Model","lastModifiedDate":"2019-07-03"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":49,"author":{"gitId":"-"},"content":"UndoCommand --\u003e LogicManager : result","lastModifiedDate":"2019-07-03"},{"lineNumber":50,"author":{"gitId":"-"},"content":"deactivate UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"UndoCommand -[hidden]-\u003e LogicManager : result","lastModifiedDate":"2019-07-03"},{"lineNumber":52,"author":{"gitId":"-"},"content":"destroy UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":54,"author":{"gitId":"-"},"content":"[\u003c--LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":55,"author":{"gitId":"-"},"content":"deactivate LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"pjanthony2001":11,"-":45}},{"path":"docs/diagrams/UndoSequenceDiagram-Model.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2024-02-09"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2024-02-09"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-02-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-02-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"participant \":Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-02-09"},{"lineNumber":7,"author":{"gitId":"pjanthony2001"},"content":"participant \":History\" as VersionedAddressBook MODEL_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2024-02-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":10,"author":{"gitId":"pjanthony2001"},"content":"[-\u003e Model : rollBackHistory()","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"activate Model","lastModifiedDate":"2024-02-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":13,"author":{"gitId":"pjanthony2001"},"content":"Model -\u003e VersionedAddressBook : rollBack()","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"activate VersionedAddressBook","lastModifiedDate":"2024-02-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":"VersionedAddressBook -\u003e VersionedAddressBook :resetData(ReadOnlyAddressBook)","lastModifiedDate":"2024-02-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":"VersionedAddressBook --\u003e Model :","lastModifiedDate":"2024-02-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"deactivate VersionedAddressBook","lastModifiedDate":"2024-02-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"[\u003c-- Model","lastModifiedDate":"2024-02-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"deactivate Model","lastModifiedDate":"2024-02-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2024-02-09"}],"authorContributionMap":{"pjanthony2001":3,"-":20}},{"path":"docs/diagrams/style.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"/\u0027","lastModifiedDate":"2019-07-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u0027Commonly used styles and colors across diagrams.","lastModifiedDate":"2019-07-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":" \u0027Refer to https://plantuml-documentation.readthedocs.io/en/latest for a more","lastModifiedDate":"2019-07-03"},{"lineNumber":4,"author":{"gitId":"-"},"content":" \u0027comprehensive list of skinparams.","lastModifiedDate":"2019-07-03"},{"lineNumber":5,"author":{"gitId":"-"},"content":" \u0027/","lastModifiedDate":"2019-07-03"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u0027T1 through T4 are shades of the original color from lightest to darkest","lastModifiedDate":"2019-07-03"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"!define UI_COLOR #1D8900","lastModifiedDate":"2019-07-03"},{"lineNumber":11,"author":{"gitId":"-"},"content":"!define UI_COLOR_T1 #83E769","lastModifiedDate":"2019-07-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"!define UI_COLOR_T2 #3FC71B","lastModifiedDate":"2019-07-03"},{"lineNumber":13,"author":{"gitId":"-"},"content":"!define UI_COLOR_T3 #166800","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"!define UI_COLOR_T4 #0E4100","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"!define LOGIC_COLOR #3333C4","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"!define LOGIC_COLOR_T1 #C8C8FA","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"!define LOGIC_COLOR_T2 #6A6ADC","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"!define LOGIC_COLOR_T3 #1616B0","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"!define LOGIC_COLOR_T4 #101086","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"!define MODEL_COLOR #9D0012","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"!define MODEL_COLOR_T1 #F97181","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"!define MODEL_COLOR_T2 #E41F36","lastModifiedDate":"2019-07-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":"!define MODEL_COLOR_T3 #7B000E","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"!define MODEL_COLOR_T4 #51000A","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"!define STORAGE_COLOR #A38300","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"!define STORAGE_COLOR_T1 #FFE374","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"!define STORAGE_COLOR_T2 #EDC520","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"!define STORAGE_COLOR_T3 #806600","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"!define STORAGE_COLOR_T2 #544400","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":34,"author":{"gitId":"Jolonauh"},"content":"!define STATE_COLOR #DimGray","lastModifiedDate":"2024-03-24"},{"lineNumber":35,"author":{"gitId":"Jolonauh"},"content":"!define STATE_COLOR_T1 #DarkGray","lastModifiedDate":"2024-03-24"},{"lineNumber":36,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":"!define USER_COLOR #000000","lastModifiedDate":"2019-07-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":39,"author":{"gitId":"-"},"content":"skinparam Package {","lastModifiedDate":"2023-07-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" BackgroundColor #FFFFFF","lastModifiedDate":"2023-07-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" BorderThickness 1","lastModifiedDate":"2023-07-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" FontSize 16","lastModifiedDate":"2023-07-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-07-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"-"},"content":"skinparam Class {","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":" FontColor #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":47,"author":{"gitId":"-"},"content":" FontSize 15","lastModifiedDate":"2023-07-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" BorderThickness 1","lastModifiedDate":"2019-07-03"},{"lineNumber":49,"author":{"gitId":"-"},"content":" BorderColor #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":50,"author":{"gitId":"-"},"content":" StereotypeFontColor #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":" FontName Arial","lastModifiedDate":"2019-07-03"},{"lineNumber":52,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":54,"author":{"gitId":"-"},"content":"skinparam Actor {","lastModifiedDate":"2019-07-03"},{"lineNumber":55,"author":{"gitId":"-"},"content":" BorderColor USER_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":" Color USER_COLOR","lastModifiedDate":"2019-07-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":" FontName Arial","lastModifiedDate":"2019-07-03"},{"lineNumber":58,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":60,"author":{"gitId":"-"},"content":"skinparam Sequence {","lastModifiedDate":"2019-07-03"},{"lineNumber":61,"author":{"gitId":"-"},"content":" MessageAlign center","lastModifiedDate":"2019-07-03"},{"lineNumber":62,"author":{"gitId":"-"},"content":" BoxFontSize 15","lastModifiedDate":"2019-07-03"},{"lineNumber":63,"author":{"gitId":"-"},"content":" BoxPadding 0","lastModifiedDate":"2019-07-03"},{"lineNumber":64,"author":{"gitId":"-"},"content":" BoxFontColor #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":65,"author":{"gitId":"-"},"content":" FontName Arial","lastModifiedDate":"2019-07-03"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":68,"author":{"gitId":"-"},"content":"skinparam Participant {","lastModifiedDate":"2019-07-03"},{"lineNumber":69,"author":{"gitId":"-"},"content":" FontColor #FFFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":70,"author":{"gitId":"-"},"content":" Padding 20","lastModifiedDate":"2019-07-03"},{"lineNumber":71,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":73,"author":{"gitId":"-"},"content":"skinparam ArrowFontStyle bold","lastModifiedDate":"2023-07-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":"skinparam MinClassWidth 50","lastModifiedDate":"2019-07-03"},{"lineNumber":75,"author":{"gitId":"-"},"content":"skinparam ParticipantPadding 10","lastModifiedDate":"2019-07-03"},{"lineNumber":76,"author":{"gitId":"-"},"content":"skinparam Shadowing false","lastModifiedDate":"2019-07-03"},{"lineNumber":77,"author":{"gitId":"-"},"content":"skinparam DefaultTextAlignment center","lastModifiedDate":"2019-07-03"},{"lineNumber":78,"author":{"gitId":"-"},"content":"skinparam packageStyle Rectangle","lastModifiedDate":"2019-07-03"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":80,"author":{"gitId":"-"},"content":"hide footbox","lastModifiedDate":"2019-07-03"},{"lineNumber":81,"author":{"gitId":"-"},"content":"hide members","lastModifiedDate":"2019-07-03"},{"lineNumber":82,"author":{"gitId":"-"},"content":"hide circle","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"Jolonauh":3,"-":79}},{"path":"docs/team/anthony.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":"pjanthony2001"},"content":" title: \"P J Anthony\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-02-26"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2021-07-30"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":8,"author":{"gitId":"-"},"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":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"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":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"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":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"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":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"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":"2020-05-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"* **Project management**:","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"* **Documentation**:","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * User Guide:","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Developer Guide:","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":"* **Community**:","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"* **Tools**:","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"pjanthony2001"},"content":"_","lastModifiedDate":"2024-02-26"}],"authorContributionMap":{"pjanthony2001":2,"-":43}},{"path":"docs/team/eliot.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Jolonauh"},"content":"---","lastModifiedDate":"2024-02-29"},{"lineNumber":2,"author":{"gitId":"Jolonauh"},"content":" layout: default.md","lastModifiedDate":"2024-02-29"},{"lineNumber":3,"author":{"gitId":"Jolonauh"},"content":" title: \"Eliot Lee Leong Wern\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-02-29"},{"lineNumber":4,"author":{"gitId":"Jolonauh"},"content":"---","lastModifiedDate":"2024-02-29"},{"lineNumber":5,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":6,"author":{"gitId":"Jolonauh"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-02-29"},{"lineNumber":7,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":8,"author":{"gitId":"Jolonauh"},"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":"2024-02-29"},{"lineNumber":9,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":10,"author":{"gitId":"Jolonauh"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-02-29"},{"lineNumber":11,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":12,"author":{"gitId":"Jolonauh"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-02-29"},{"lineNumber":13,"author":{"gitId":"Jolonauh"},"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":"2024-02-29"},{"lineNumber":14,"author":{"gitId":"Jolonauh"},"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":"2024-02-29"},{"lineNumber":15,"author":{"gitId":"Jolonauh"},"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":"2024-02-29"},{"lineNumber":16,"author":{"gitId":"Jolonauh"},"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":"2024-02-29"},{"lineNumber":17,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":18,"author":{"gitId":"Jolonauh"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-02-29"},{"lineNumber":19,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":20,"author":{"gitId":"Jolonauh"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-02-29"},{"lineNumber":21,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":22,"author":{"gitId":"Jolonauh"},"content":"* **Project management**:","lastModifiedDate":"2024-02-29"},{"lineNumber":23,"author":{"gitId":"Jolonauh"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-02-29"},{"lineNumber":24,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":25,"author":{"gitId":"Jolonauh"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-02-29"},{"lineNumber":26,"author":{"gitId":"Jolonauh"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-02-29"},{"lineNumber":27,"author":{"gitId":"Jolonauh"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-02-29"},{"lineNumber":28,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":29,"author":{"gitId":"Jolonauh"},"content":"* **Documentation**:","lastModifiedDate":"2024-02-29"},{"lineNumber":30,"author":{"gitId":"Jolonauh"},"content":" * User Guide:","lastModifiedDate":"2024-02-29"},{"lineNumber":31,"author":{"gitId":"Jolonauh"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-02-29"},{"lineNumber":32,"author":{"gitId":"Jolonauh"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-02-29"},{"lineNumber":33,"author":{"gitId":"Jolonauh"},"content":" * Developer Guide:","lastModifiedDate":"2024-02-29"},{"lineNumber":34,"author":{"gitId":"Jolonauh"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-02-29"},{"lineNumber":35,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":36,"author":{"gitId":"Jolonauh"},"content":"* **Community**:","lastModifiedDate":"2024-02-29"},{"lineNumber":37,"author":{"gitId":"Jolonauh"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-02-29"},{"lineNumber":38,"author":{"gitId":"Jolonauh"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-02-29"},{"lineNumber":39,"author":{"gitId":"Jolonauh"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-02-29"},{"lineNumber":40,"author":{"gitId":"Jolonauh"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-02-29"},{"lineNumber":41,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":42,"author":{"gitId":"Jolonauh"},"content":"* **Tools**:","lastModifiedDate":"2024-02-29"},{"lineNumber":43,"author":{"gitId":"Jolonauh"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-02-29"},{"lineNumber":44,"author":{"gitId":"Jolonauh"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-02-29"},{"lineNumber":45,"author":{"gitId":"Jolonauh"},"content":" _","lastModifiedDate":"2024-02-29"}],"authorContributionMap":{"Jolonauh":45}},{"path":"docs/team/jeremiah.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Jolonauh"},"content":"---","lastModifiedDate":"2024-02-29"},{"lineNumber":2,"author":{"gitId":"Jolonauh"},"content":" layout: default.md","lastModifiedDate":"2024-02-29"},{"lineNumber":3,"author":{"gitId":"Jolonauh"},"content":" title: \"Au Jun Ming Jeremiah\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-02-29"},{"lineNumber":4,"author":{"gitId":"Jolonauh"},"content":"---","lastModifiedDate":"2024-02-29"},{"lineNumber":5,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":6,"author":{"gitId":"Jolonauh"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-02-29"},{"lineNumber":7,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":8,"author":{"gitId":"Jolonauh"},"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":"2024-02-29"},{"lineNumber":9,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":10,"author":{"gitId":"Jolonauh"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-02-29"},{"lineNumber":11,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":12,"author":{"gitId":"Jolonauh"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-02-29"},{"lineNumber":13,"author":{"gitId":"Jolonauh"},"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":"2024-02-29"},{"lineNumber":14,"author":{"gitId":"Jolonauh"},"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":"2024-02-29"},{"lineNumber":15,"author":{"gitId":"Jolonauh"},"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":"2024-02-29"},{"lineNumber":16,"author":{"gitId":"Jolonauh"},"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":"2024-02-29"},{"lineNumber":17,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":18,"author":{"gitId":"Jolonauh"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-02-29"},{"lineNumber":19,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":20,"author":{"gitId":"Jolonauh"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-02-29"},{"lineNumber":21,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":22,"author":{"gitId":"Jolonauh"},"content":"* **Project management**:","lastModifiedDate":"2024-02-29"},{"lineNumber":23,"author":{"gitId":"Jolonauh"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-02-29"},{"lineNumber":24,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":25,"author":{"gitId":"Jolonauh"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-02-29"},{"lineNumber":26,"author":{"gitId":"Jolonauh"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-02-29"},{"lineNumber":27,"author":{"gitId":"Jolonauh"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-02-29"},{"lineNumber":28,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":29,"author":{"gitId":"Jolonauh"},"content":"* **Documentation**:","lastModifiedDate":"2024-02-29"},{"lineNumber":30,"author":{"gitId":"Jolonauh"},"content":" * User Guide:","lastModifiedDate":"2024-02-29"},{"lineNumber":31,"author":{"gitId":"Jolonauh"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-02-29"},{"lineNumber":32,"author":{"gitId":"Jolonauh"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-02-29"},{"lineNumber":33,"author":{"gitId":"Jolonauh"},"content":" * Developer Guide:","lastModifiedDate":"2024-02-29"},{"lineNumber":34,"author":{"gitId":"Jolonauh"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-02-29"},{"lineNumber":35,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":36,"author":{"gitId":"Jolonauh"},"content":"* **Community**:","lastModifiedDate":"2024-02-29"},{"lineNumber":37,"author":{"gitId":"Jolonauh"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-02-29"},{"lineNumber":38,"author":{"gitId":"Jolonauh"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-02-29"},{"lineNumber":39,"author":{"gitId":"Jolonauh"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-02-29"},{"lineNumber":40,"author":{"gitId":"Jolonauh"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-02-29"},{"lineNumber":41,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":42,"author":{"gitId":"Jolonauh"},"content":"* **Tools**:","lastModifiedDate":"2024-02-29"},{"lineNumber":43,"author":{"gitId":"Jolonauh"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-02-29"},{"lineNumber":44,"author":{"gitId":"Jolonauh"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-02-29"},{"lineNumber":45,"author":{"gitId":"Jolonauh"},"content":" _","lastModifiedDate":"2024-02-29"}],"authorContributionMap":{"Jolonauh":45}},{"path":"docs/team/rishit.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Jolonauh"},"content":"---","lastModifiedDate":"2024-02-29"},{"lineNumber":2,"author":{"gitId":"Jolonauh"},"content":" layout: default.md","lastModifiedDate":"2024-02-29"},{"lineNumber":3,"author":{"gitId":"Jolonauh"},"content":" title: \"Rishit Khandelwal\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-02-29"},{"lineNumber":4,"author":{"gitId":"Jolonauh"},"content":"---","lastModifiedDate":"2024-02-29"},{"lineNumber":5,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":6,"author":{"gitId":"Jolonauh"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-02-29"},{"lineNumber":7,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":8,"author":{"gitId":"Jolonauh"},"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":"2024-02-29"},{"lineNumber":9,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":10,"author":{"gitId":"Jolonauh"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-02-29"},{"lineNumber":11,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":12,"author":{"gitId":"Jolonauh"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-02-29"},{"lineNumber":13,"author":{"gitId":"Jolonauh"},"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":"2024-02-29"},{"lineNumber":14,"author":{"gitId":"Jolonauh"},"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":"2024-02-29"},{"lineNumber":15,"author":{"gitId":"Jolonauh"},"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":"2024-02-29"},{"lineNumber":16,"author":{"gitId":"Jolonauh"},"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":"2024-02-29"},{"lineNumber":17,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":18,"author":{"gitId":"Jolonauh"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-02-29"},{"lineNumber":19,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":20,"author":{"gitId":"Jolonauh"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-02-29"},{"lineNumber":21,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":22,"author":{"gitId":"Jolonauh"},"content":"* **Project management**:","lastModifiedDate":"2024-02-29"},{"lineNumber":23,"author":{"gitId":"Jolonauh"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-02-29"},{"lineNumber":24,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":25,"author":{"gitId":"Jolonauh"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-02-29"},{"lineNumber":26,"author":{"gitId":"Jolonauh"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-02-29"},{"lineNumber":27,"author":{"gitId":"Jolonauh"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-02-29"},{"lineNumber":28,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":29,"author":{"gitId":"Jolonauh"},"content":"* **Documentation**:","lastModifiedDate":"2024-02-29"},{"lineNumber":30,"author":{"gitId":"Jolonauh"},"content":" * User Guide:","lastModifiedDate":"2024-02-29"},{"lineNumber":31,"author":{"gitId":"Jolonauh"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-02-29"},{"lineNumber":32,"author":{"gitId":"Jolonauh"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-02-29"},{"lineNumber":33,"author":{"gitId":"Jolonauh"},"content":" * Developer Guide:","lastModifiedDate":"2024-02-29"},{"lineNumber":34,"author":{"gitId":"Jolonauh"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-02-29"},{"lineNumber":35,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":36,"author":{"gitId":"Jolonauh"},"content":"* **Community**:","lastModifiedDate":"2024-02-29"},{"lineNumber":37,"author":{"gitId":"Jolonauh"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-02-29"},{"lineNumber":38,"author":{"gitId":"Jolonauh"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-02-29"},{"lineNumber":39,"author":{"gitId":"Jolonauh"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-02-29"},{"lineNumber":40,"author":{"gitId":"Jolonauh"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-02-29"},{"lineNumber":41,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":42,"author":{"gitId":"Jolonauh"},"content":"* **Tools**:","lastModifiedDate":"2024-02-29"},{"lineNumber":43,"author":{"gitId":"Jolonauh"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-02-29"},{"lineNumber":44,"author":{"gitId":"Jolonauh"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-02-29"},{"lineNumber":45,"author":{"gitId":"Jolonauh"},"content":" _","lastModifiedDate":"2024-02-29"}],"authorContributionMap":{"Jolonauh":45}},{"path":"docs/team/tejas.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Jolonauh"},"content":"---","lastModifiedDate":"2024-02-29"},{"lineNumber":2,"author":{"gitId":"Jolonauh"},"content":" layout: default.md","lastModifiedDate":"2024-02-29"},{"lineNumber":3,"author":{"gitId":"Jolonauh"},"content":" title: \"Tejas Sadasivam\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-02-29"},{"lineNumber":4,"author":{"gitId":"Jolonauh"},"content":"---","lastModifiedDate":"2024-02-29"},{"lineNumber":5,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":6,"author":{"gitId":"Jolonauh"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-02-29"},{"lineNumber":7,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":8,"author":{"gitId":"Jolonauh"},"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":"2024-02-29"},{"lineNumber":9,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":10,"author":{"gitId":"Jolonauh"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-02-29"},{"lineNumber":11,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":12,"author":{"gitId":"Jolonauh"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-02-29"},{"lineNumber":13,"author":{"gitId":"Jolonauh"},"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":"2024-02-29"},{"lineNumber":14,"author":{"gitId":"Jolonauh"},"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":"2024-02-29"},{"lineNumber":15,"author":{"gitId":"Jolonauh"},"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":"2024-02-29"},{"lineNumber":16,"author":{"gitId":"Jolonauh"},"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":"2024-02-29"},{"lineNumber":17,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":18,"author":{"gitId":"Jolonauh"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-02-29"},{"lineNumber":19,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":20,"author":{"gitId":"Jolonauh"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-02-29"},{"lineNumber":21,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":22,"author":{"gitId":"Jolonauh"},"content":"* **Project management**:","lastModifiedDate":"2024-02-29"},{"lineNumber":23,"author":{"gitId":"Jolonauh"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-02-29"},{"lineNumber":24,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":25,"author":{"gitId":"Jolonauh"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-02-29"},{"lineNumber":26,"author":{"gitId":"Jolonauh"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-02-29"},{"lineNumber":27,"author":{"gitId":"Jolonauh"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-02-29"},{"lineNumber":28,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":29,"author":{"gitId":"Jolonauh"},"content":"* **Documentation**:","lastModifiedDate":"2024-02-29"},{"lineNumber":30,"author":{"gitId":"Jolonauh"},"content":" * User Guide:","lastModifiedDate":"2024-02-29"},{"lineNumber":31,"author":{"gitId":"Jolonauh"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-02-29"},{"lineNumber":32,"author":{"gitId":"Jolonauh"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-02-29"},{"lineNumber":33,"author":{"gitId":"Jolonauh"},"content":" * Developer Guide:","lastModifiedDate":"2024-02-29"},{"lineNumber":34,"author":{"gitId":"Jolonauh"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-02-29"},{"lineNumber":35,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":36,"author":{"gitId":"Jolonauh"},"content":"* **Community**:","lastModifiedDate":"2024-02-29"},{"lineNumber":37,"author":{"gitId":"Jolonauh"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-02-29"},{"lineNumber":38,"author":{"gitId":"Jolonauh"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-02-29"},{"lineNumber":39,"author":{"gitId":"Jolonauh"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-02-29"},{"lineNumber":40,"author":{"gitId":"Jolonauh"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-02-29"},{"lineNumber":41,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":42,"author":{"gitId":"Jolonauh"},"content":"* **Tools**:","lastModifiedDate":"2024-02-29"},{"lineNumber":43,"author":{"gitId":"Jolonauh"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-02-29"},{"lineNumber":44,"author":{"gitId":"Jolonauh"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-02-29"},{"lineNumber":45,"author":{"gitId":"Jolonauh"},"content":" _","lastModifiedDate":"2024-02-29"}],"authorContributionMap":{"Jolonauh":45}},{"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":"Jolonauh"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_NAME \u003d \"The person name provided is invalid\";","lastModifiedDate":"2024-03-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":"Jolonauh"},"content":" public static final String MESSAGE_DUPLICATE_NAMES \u003d \"There are people with the same names in the list\";","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"Rishit02"},"content":" .append(\"; Next Of Kin: \")","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"Rishit02"},"content":" .append(person.getNextOfKin())","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"Rishit02"},"content":" .append(\"; Description: \")","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"Rishit02"},"content":" .append(person.getDescription())","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" person.getTags().forEach(builder::append);","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"Jolonauh":2,"Rishit02":4,"-":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":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"Rishit02"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DESCRIPTION;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"Rishit02"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NOK;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-08-24"},{"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":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a person to the address book. \"","lastModifiedDate":"2016-08-24"},{"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":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2017-05-09"},{"lineNumber":31,"author":{"gitId":"Rishit02"},"content":" + PREFIX_NOK + \"NEXT OF KIN \"","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"Rishit02"},"content":" + PREFIX_DESCRIPTION + \"DESCRIPTION \"","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09"},{"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":"-"},"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":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":39,"author":{"gitId":"Rishit02"},"content":" + PREFIX_NOK + \"Joe Doe \"","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"Rishit02"},"content":" + PREFIX_DESCRIPTION + \"Has a history of memory loss \"","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"Rishit02"},"content":" + PREFIX_TAG + \"mentalIllness \"","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"owesMoney\";","lastModifiedDate":"2017-05-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: %1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book\";","lastModifiedDate":"2016-08-24"},{"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":{"Rishit02":7,"-":83}},{"path":"src/main/java/seedu/address/logic/commands/UpdateCommand.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":"Jolonauh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-07"},{"lineNumber":5,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DESCRIPTION;","lastModifiedDate":"2024-03-07"},{"lineNumber":6,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-07"},{"lineNumber":7,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-07"},{"lineNumber":8,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NOK;","lastModifiedDate":"2024-03-07"},{"lineNumber":9,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-07"},{"lineNumber":10,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-07"},{"lineNumber":11,"author":{"gitId":"pjanthony2001"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_UPDATE;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":20,"author":{"gitId":"Jolonauh"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":27,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-07"},{"lineNumber":28,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.model.person.Description;","lastModifiedDate":"2024-03-07"},{"lineNumber":29,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-07"},{"lineNumber":30,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-07"},{"lineNumber":31,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.model.person.NextOfKin;","lastModifiedDate":"2024-03-07"},{"lineNumber":32,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-07"},{"lineNumber":33,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26"},{"lineNumber":37,"author":{"gitId":"Jolonauh"},"content":" * Updates the details of an existing person in the address book.","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":39,"author":{"gitId":"Jolonauh"},"content":"public class UpdateCommand extends Command {","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":41,"author":{"gitId":"Jolonauh"},"content":" public static final String COMMAND_WORD \u003d \"update\";","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":43,"author":{"gitId":"Jolonauh"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Updates the details of the person identified \"","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"Jolonauh"},"content":" + \"by their full name used in the displayed person list. \"","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"Jolonauh"},"content":" + \"The full name provided is not required to be case sensitive. \"","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26"},{"lineNumber":47,"author":{"gitId":"Jolonauh"},"content":" + \"Parameters: u/TARGET_NAME \"","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"Jolonauh"},"content":" + \"[\" + PREFIX_NAME + \"NEW_NAME] \"","lastModifiedDate":"2024-03-15"},{"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":"Jolonauh"},"content":" + \"[\" + PREFIX_DESCRIPTION + \"DESCRIPTION] \"","lastModifiedDate":"2024-03-06"},{"lineNumber":53,"author":{"gitId":"Jolonauh"},"content":" + \"[\" + PREFIX_NOK + \"NEXT_OF_KIN] \"","lastModifiedDate":"2024-03-06"},{"lineNumber":54,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09"},{"lineNumber":55,"author":{"gitId":"pjanthony2001"},"content":" + \"Example: \" + COMMAND_WORD + \" \" + PREFIX_UPDATE + \"John Doe \"","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":59,"author":{"gitId":"Jolonauh"},"content":" public static final String MESSAGE_UPDATE_PERSON_SUCCESS \u003d \"Updated Person: %1$s\";","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"Jolonauh"},"content":" public static final String MESSAGE_NOT_UPDATED \u003d \"At least one field to update must be provided.\";","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":63,"author":{"gitId":"Jolonauh"},"content":" private final Name name;","lastModifiedDate":"2024-03-15"},{"lineNumber":64,"author":{"gitId":"Jolonauh"},"content":" private final UpdatePersonDescriptor updatePersonDescriptor;","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":67,"author":{"gitId":"Jolonauh"},"content":" * @param name of the person in the filtered person list to update","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"Jolonauh"},"content":" * @param updatePersonDescriptor details to update the person with","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":70,"author":{"gitId":"Jolonauh"},"content":" public UpdateCommand(Name name, UpdatePersonDescriptor updatePersonDescriptor) {","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"Jolonauh"},"content":" requireNonNull(name);","lastModifiedDate":"2024-03-15"},{"lineNumber":72,"author":{"gitId":"Jolonauh"},"content":" requireNonNull(updatePersonDescriptor);","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":74,"author":{"gitId":"Jolonauh"},"content":" this.name \u003d name;","lastModifiedDate":"2024-03-15"},{"lineNumber":75,"author":{"gitId":"Jolonauh"},"content":" this.updatePersonDescriptor \u003d new UpdatePersonDescriptor(updatePersonDescriptor);","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":80,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":81,"author":{"gitId":"Jolonauh"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getAddressBook().getPersonList();","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":83,"author":{"gitId":"Jolonauh"},"content":" Name lowerCaseName \u003d new Name(name.fullName.toLowerCase());","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"Jolonauh"},"content":" List\u003cPerson\u003e sameNamePeople \u003d lastShownList.stream()","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"Jolonauh"},"content":" .filter(person -\u003e person.getLowerCaseName().equals(lowerCaseName))","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"Jolonauh"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2024-03-16"},{"lineNumber":87,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":88,"author":{"gitId":"Jolonauh"},"content":" if (sameNamePeople.isEmpty()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"Jolonauh"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_NAME);","lastModifiedDate":"2024-03-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":92,"author":{"gitId":"Jolonauh"},"content":" if (sameNamePeople.size() \u003e 1) {","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"Jolonauh"},"content":" throw new CommandException(Messages.MESSAGE_DUPLICATE_NAMES);","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"Jolonauh"},"content":" Person personToUpdate \u003d sameNamePeople.get(0);","lastModifiedDate":"2024-03-16"},{"lineNumber":97,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":98,"author":{"gitId":"Jolonauh"},"content":" Person updatedPerson \u003d createUpdatedPerson(personToUpdate, updatePersonDescriptor);","lastModifiedDate":"2024-03-16"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":100,"author":{"gitId":"Jolonauh"},"content":" if (!personToUpdate.isSamePerson(updatedPerson) \u0026\u0026 model.hasPerson(updatedPerson)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":101,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":104,"author":{"gitId":"Jolonauh"},"content":" model.setPerson(personToUpdate, updatedPerson);","lastModifiedDate":"2024-03-16"},{"lineNumber":105,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":106,"author":{"gitId":"Jolonauh"},"content":" return new CommandResult(String.format(MESSAGE_UPDATE_PERSON_SUCCESS, Messages.format(updatedPerson)));","lastModifiedDate":"2024-03-16"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":109,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":110,"author":{"gitId":"Jolonauh"},"content":" * Creates and returns a {@code Person} with the details of {@code personToUpdate}","lastModifiedDate":"2024-03-16"},{"lineNumber":111,"author":{"gitId":"Jolonauh"},"content":" * updated with {@code updatePersonDescriptor}.","lastModifiedDate":"2024-03-16"},{"lineNumber":112,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":113,"author":{"gitId":"Jolonauh"},"content":" private static Person createUpdatedPerson(Person personToUpdate, UpdatePersonDescriptor updatePersonDescriptor) {","lastModifiedDate":"2024-03-16"},{"lineNumber":114,"author":{"gitId":"Jolonauh"},"content":" assert personToUpdate !\u003d null;","lastModifiedDate":"2024-03-16"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":116,"author":{"gitId":"Jolonauh"},"content":" Name updatedName \u003d updatePersonDescriptor.getName().orElse(personToUpdate.getName());","lastModifiedDate":"2024-03-16"},{"lineNumber":117,"author":{"gitId":"Jolonauh"},"content":" Phone updatedPhone \u003d updatePersonDescriptor.getPhone().orElse(personToUpdate.getPhone());","lastModifiedDate":"2024-03-16"},{"lineNumber":118,"author":{"gitId":"Jolonauh"},"content":" Email updatedEmail \u003d updatePersonDescriptor.getEmail().orElse(personToUpdate.getEmail());","lastModifiedDate":"2024-03-16"},{"lineNumber":119,"author":{"gitId":"Jolonauh"},"content":" Address updatedAddress \u003d updatePersonDescriptor.getAddress().orElse(personToUpdate.getAddress());","lastModifiedDate":"2024-03-16"},{"lineNumber":120,"author":{"gitId":"Jolonauh"},"content":" Description updatedDescription \u003d updatePersonDescriptor.getDescription().orElse(personToUpdate","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"Jolonauh"},"content":" .getDescription());","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"Jolonauh"},"content":" NextOfKin updatedNextOfKin \u003d updatePersonDescriptor.getNextOfKin().orElse(personToUpdate.getNextOfKin());","lastModifiedDate":"2024-03-16"},{"lineNumber":123,"author":{"gitId":"Jolonauh"},"content":" Set\u003cTag\u003e updatedTags \u003d updatePersonDescriptor.getTags().orElse(personToUpdate.getTags());","lastModifiedDate":"2024-03-16"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":125,"author":{"gitId":"Jolonauh"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress,","lastModifiedDate":"2024-03-06"},{"lineNumber":126,"author":{"gitId":"Jolonauh"},"content":" updatedDescription, updatedNextOfKin, updatedTags","lastModifiedDate":"2024-03-06"},{"lineNumber":127,"author":{"gitId":"Jolonauh"},"content":" );","lastModifiedDate":"2024-03-06"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":130,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":136,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08"},{"lineNumber":137,"author":{"gitId":"Jolonauh"},"content":" if (!(other instanceof UpdateCommand)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":138,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":141,"author":{"gitId":"Jolonauh"},"content":" UpdateCommand otherUpdateCommand \u003d (UpdateCommand) other;","lastModifiedDate":"2024-03-16"},{"lineNumber":142,"author":{"gitId":"Jolonauh"},"content":" return name.equals(otherUpdateCommand.name)","lastModifiedDate":"2024-03-16"},{"lineNumber":143,"author":{"gitId":"Jolonauh"},"content":" \u0026\u0026 updatePersonDescriptor.equals(otherUpdateCommand.updatePersonDescriptor);","lastModifiedDate":"2024-03-16"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":146,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":149,"author":{"gitId":"Jolonauh"},"content":" .add(\"name\", name)","lastModifiedDate":"2024-03-15"},{"lineNumber":150,"author":{"gitId":"Jolonauh"},"content":" .add(\"updatePersonDescriptor\", updatePersonDescriptor)","lastModifiedDate":"2024-03-16"},{"lineNumber":151,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":155,"author":{"gitId":"Jolonauh"},"content":" * Stores the details to update the person with. Each non-empty field value will replace the","lastModifiedDate":"2024-03-16"},{"lineNumber":156,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26"},{"lineNumber":157,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":158,"author":{"gitId":"Jolonauh"},"content":" public static class UpdatePersonDescriptor {","lastModifiedDate":"2024-03-16"},{"lineNumber":159,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21"},{"lineNumber":160,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":161,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":162,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21"},{"lineNumber":163,"author":{"gitId":"Jolonauh"},"content":" private Description description;","lastModifiedDate":"2024-03-06"},{"lineNumber":164,"author":{"gitId":"Jolonauh"},"content":" private NextOfKin nextOfKin;","lastModifiedDate":"2024-03-06"},{"lineNumber":165,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":167,"author":{"gitId":"Jolonauh"},"content":" public UpdatePersonDescriptor() {}","lastModifiedDate":"2024-03-16"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":169,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":170,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11"},{"lineNumber":171,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":172,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":173,"author":{"gitId":"Jolonauh"},"content":" public UpdatePersonDescriptor(UpdatePersonDescriptor toCopy) {","lastModifiedDate":"2024-03-16"},{"lineNumber":174,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15"},{"lineNumber":175,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15"},{"lineNumber":176,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15"},{"lineNumber":177,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15"},{"lineNumber":178,"author":{"gitId":"Jolonauh"},"content":" setDescription(toCopy.description);","lastModifiedDate":"2024-03-06"},{"lineNumber":179,"author":{"gitId":"Jolonauh"},"content":" setNextOfKin(toCopy.nextOfKin);","lastModifiedDate":"2024-03-06"},{"lineNumber":180,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11"},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":183,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":184,"author":{"gitId":"Jolonauh"},"content":" * Returns true if at least one field is updated.","lastModifiedDate":"2024-03-16"},{"lineNumber":185,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":186,"author":{"gitId":"Jolonauh"},"content":" public boolean isAnyFieldUpdated() {","lastModifiedDate":"2024-03-16"},{"lineNumber":187,"author":{"gitId":"-"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, tags);","lastModifiedDate":"2018-08-14"},{"lineNumber":188,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":190,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21"},{"lineNumber":191,"author":{"gitId":"-"},"content":" this.name \u003d name;","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 Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":195,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","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 void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21"},{"lineNumber":199,"author":{"gitId":"-"},"content":" this.phone \u003d 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 Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26"},{"lineNumber":203,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","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 void setEmail(Email email) {","lastModifiedDate":"2017-06-21"},{"lineNumber":207,"author":{"gitId":"-"},"content":" this.email \u003d 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":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":211,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21"},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":214,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21"},{"lineNumber":215,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21"},{"lineNumber":216,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":218,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26"},{"lineNumber":219,"author":{"gitId":"-"},"content":" return Optional.ofNullable(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":"Jolonauh"},"content":" public void setDescription(Description description) {","lastModifiedDate":"2024-03-06"},{"lineNumber":223,"author":{"gitId":"Jolonauh"},"content":" this.description \u003d description;","lastModifiedDate":"2024-03-06"},{"lineNumber":224,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":225,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":226,"author":{"gitId":"Jolonauh"},"content":" public Optional\u003cDescription\u003e getDescription() {","lastModifiedDate":"2024-03-06"},{"lineNumber":227,"author":{"gitId":"Jolonauh"},"content":" return Optional.ofNullable(description);","lastModifiedDate":"2024-03-06"},{"lineNumber":228,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":229,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":230,"author":{"gitId":"Jolonauh"},"content":" public void setNextOfKin(NextOfKin nextOfKin) {","lastModifiedDate":"2024-03-06"},{"lineNumber":231,"author":{"gitId":"Jolonauh"},"content":" this.nextOfKin \u003d nextOfKin;","lastModifiedDate":"2024-03-06"},{"lineNumber":232,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":233,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":234,"author":{"gitId":"Jolonauh"},"content":" public Optional\u003cNextOfKin\u003e getNextOfKin() {","lastModifiedDate":"2024-03-06"},{"lineNumber":235,"author":{"gitId":"Jolonauh"},"content":" return Optional.ofNullable(nextOfKin);","lastModifiedDate":"2024-03-06"},{"lineNumber":236,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":237,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":238,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":239,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11"},{"lineNumber":240,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":241,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":242,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21"},{"lineNumber":243,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11"},{"lineNumber":244,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":246,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":247,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11"},{"lineNumber":248,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11"},{"lineNumber":249,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11"},{"lineNumber":250,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":251,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":252,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11"},{"lineNumber":253,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":255,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":256,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":257,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":258,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":259,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":261,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":262,"author":{"gitId":"Jolonauh"},"content":" if (!(other instanceof UpdatePersonDescriptor)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":263,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":264,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":266,"author":{"gitId":"Jolonauh"},"content":" UpdatePersonDescriptor otherUpdatePersonDescriptor \u003d (UpdatePersonDescriptor) other;","lastModifiedDate":"2024-03-16"},{"lineNumber":267,"author":{"gitId":"Jolonauh"},"content":" return Objects.equals(name, otherUpdatePersonDescriptor.name)","lastModifiedDate":"2024-03-16"},{"lineNumber":268,"author":{"gitId":"Jolonauh"},"content":" \u0026\u0026 Objects.equals(phone, otherUpdatePersonDescriptor.phone)","lastModifiedDate":"2024-03-16"},{"lineNumber":269,"author":{"gitId":"Jolonauh"},"content":" \u0026\u0026 Objects.equals(email, otherUpdatePersonDescriptor.email)","lastModifiedDate":"2024-03-16"},{"lineNumber":270,"author":{"gitId":"Jolonauh"},"content":" \u0026\u0026 Objects.equals(address, otherUpdatePersonDescriptor.address)","lastModifiedDate":"2024-03-16"},{"lineNumber":271,"author":{"gitId":"Jolonauh"},"content":" \u0026\u0026 Objects.equals(description, otherUpdatePersonDescriptor.description)","lastModifiedDate":"2024-03-16"},{"lineNumber":272,"author":{"gitId":"Jolonauh"},"content":" \u0026\u0026 Objects.equals(nextOfKin, otherUpdatePersonDescriptor.nextOfKin)","lastModifiedDate":"2024-03-16"},{"lineNumber":273,"author":{"gitId":"Jolonauh"},"content":" \u0026\u0026 Objects.equals(tags, otherUpdatePersonDescriptor.tags);","lastModifiedDate":"2024-03-16"},{"lineNumber":274,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":277,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":278,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":279,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":280,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":281,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":282,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":283,"author":{"gitId":"Jolonauh"},"content":" .add(\"description\", description)","lastModifiedDate":"2024-03-06"},{"lineNumber":284,"author":{"gitId":"Jolonauh"},"content":" .add(\"nextOfKin\", nextOfKin)","lastModifiedDate":"2024-03-07"},{"lineNumber":285,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":286,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":287,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":288,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":289,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"pjanthony2001":2,"Jolonauh":112,"-":175}},{"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":"Rishit02"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"Rishit02"},"content":"","lastModifiedDate":"2024-03-12"},{"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":{"Rishit02":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":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"Rishit02"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DESCRIPTION;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"Rishit02"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NOK;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-13"},{"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":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-07"},{"lineNumber":18,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.model.person.Description;","lastModifiedDate":"2024-03-07"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-07"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-07"},{"lineNumber":21,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.model.person.NextOfKin;","lastModifiedDate":"2024-03-07"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-07"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-07"},{"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":"Rishit02"},"content":" * Parses input arguments and creates a new AddCommand object.","lastModifiedDate":"2024-03-13"},{"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":"Rishit02"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":38,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":39,"author":{"gitId":"Rishit02"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_NOK,","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"Rishit02"},"content":" PREFIX_DESCRIPTION, PREFIX_TAG);","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":42,"author":{"gitId":"Rishit02"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_NOK,","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"Rishit02"},"content":" PREFIX_DESCRIPTION)","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":48,"author":{"gitId":"Rishit02"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_NOK,","lastModifiedDate":"2024-03-15"},{"lineNumber":49,"author":{"gitId":"Rishit02"},"content":" PREFIX_DESCRIPTION);","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":51,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":52,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":54,"author":{"gitId":"Rishit02"},"content":" Description description \u003d ParserUtil.parseDescription(argMultimap.getValue(PREFIX_DESCRIPTION).get());","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"Rishit02"},"content":" NextOfKin nextOfKin \u003d ParserUtil.parseNextOfKin(argMultimap.getValue(PREFIX_NOK).get());","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":58,"author":{"gitId":"Jolonauh"},"content":" Person person \u003d new Person(name, phone, email, address, description, nextOfKin, tagList);","lastModifiedDate":"2024-03-06"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17"},{"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":"2017-03-17"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17"},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":67,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17"},{"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":{"Rishit02":12,"Jolonauh":3,"-":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":"-"},"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.ExitCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":19,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.logic.commands.UpdateCommand;","lastModifiedDate":"2024-03-17"},{"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":"Jolonauh"},"content":" case UpdateCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"Jolonauh"},"content":" return new UpdateCommandParser().parse(arguments);","lastModifiedDate":"2024-03-16"},{"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"}],"authorContributionMap":{"Jolonauh":3,"-":83}},{"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":"Jolonauh"},"content":" public static final Prefix PREFIX_DESCRIPTION \u003d new Prefix(\"d/\");","lastModifiedDate":"2024-03-06"},{"lineNumber":15,"author":{"gitId":"Jolonauh"},"content":" public static final Prefix PREFIX_NOK \u003d new Prefix(\"k/\");","lastModifiedDate":"2024-03-06"},{"lineNumber":16,"author":{"gitId":"Jolonauh"},"content":" public static final Prefix PREFIX_UPDATE \u003d new Prefix(\"u/\");","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"Jolonauh":3,"-":14}},{"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":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-02-11"},{"lineNumber":13,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.model.person.Description;","lastModifiedDate":"2024-03-07"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11"},{"lineNumber":16,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.model.person.NextOfKin;","lastModifiedDate":"2024-03-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-02-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-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":"-"},"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":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30"},{"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":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":62,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30"},{"lineNumber":63,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":64,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":65,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30"},{"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":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30"},{"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":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":77,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30"},{"lineNumber":78,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":79,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":80,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30"},{"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":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30"},{"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":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":92,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":93,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":94,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":97,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","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":"Jolonauh"},"content":" /**","lastModifiedDate":"2024-03-07"},{"lineNumber":101,"author":{"gitId":"Jolonauh"},"content":" * Parses a {@code String description} into a {@code Description}.","lastModifiedDate":"2024-03-07"},{"lineNumber":102,"author":{"gitId":"Jolonauh"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-07"},{"lineNumber":103,"author":{"gitId":"Jolonauh"},"content":" *","lastModifiedDate":"2024-03-07"},{"lineNumber":104,"author":{"gitId":"Jolonauh"},"content":" * @throws ParseException if the given {@code description} is invalid.","lastModifiedDate":"2024-03-07"},{"lineNumber":105,"author":{"gitId":"Jolonauh"},"content":" */","lastModifiedDate":"2024-03-07"},{"lineNumber":106,"author":{"gitId":"Jolonauh"},"content":" public static Description parseDescription(String description) throws ParseException {","lastModifiedDate":"2024-03-07"},{"lineNumber":107,"author":{"gitId":"Jolonauh"},"content":" requireNonNull(description);","lastModifiedDate":"2024-03-07"},{"lineNumber":108,"author":{"gitId":"Jolonauh"},"content":" String trimmedDescription \u003d description.trim();","lastModifiedDate":"2024-03-07"},{"lineNumber":109,"author":{"gitId":"Jolonauh"},"content":" if (!Description.isValidDescription(trimmedDescription)) {","lastModifiedDate":"2024-03-07"},{"lineNumber":110,"author":{"gitId":"Jolonauh"},"content":" throw new ParseException(Description.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-07"},{"lineNumber":111,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":112,"author":{"gitId":"Jolonauh"},"content":" return new Description(trimmedDescription);","lastModifiedDate":"2024-03-07"},{"lineNumber":113,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":114,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":115,"author":{"gitId":"Jolonauh"},"content":" /**","lastModifiedDate":"2024-03-07"},{"lineNumber":116,"author":{"gitId":"Jolonauh"},"content":" * Parses a {@code String nextOfKin} into an {@code NextOfKin}.","lastModifiedDate":"2024-03-07"},{"lineNumber":117,"author":{"gitId":"Jolonauh"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-07"},{"lineNumber":118,"author":{"gitId":"Jolonauh"},"content":" *","lastModifiedDate":"2024-03-07"},{"lineNumber":119,"author":{"gitId":"Jolonauh"},"content":" * @throws ParseException if the given {@code nextOfKin} is invalid.","lastModifiedDate":"2024-03-07"},{"lineNumber":120,"author":{"gitId":"Jolonauh"},"content":" */","lastModifiedDate":"2024-03-07"},{"lineNumber":121,"author":{"gitId":"Jolonauh"},"content":" public static NextOfKin parseNextOfKin(String nextOfKin) throws ParseException {","lastModifiedDate":"2024-03-07"},{"lineNumber":122,"author":{"gitId":"Jolonauh"},"content":" requireNonNull(nextOfKin);","lastModifiedDate":"2024-03-07"},{"lineNumber":123,"author":{"gitId":"Jolonauh"},"content":" String trimmedNextOfKin \u003d nextOfKin.trim();","lastModifiedDate":"2024-03-07"},{"lineNumber":124,"author":{"gitId":"Jolonauh"},"content":" if (!NextOfKin.isValidNextOfKin(trimmedNextOfKin)) {","lastModifiedDate":"2024-03-07"},{"lineNumber":125,"author":{"gitId":"Jolonauh"},"content":" throw new ParseException(NextOfKin.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-07"},{"lineNumber":126,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":127,"author":{"gitId":"Jolonauh"},"content":" return new NextOfKin(trimmedNextOfKin);","lastModifiedDate":"2024-03-07"},{"lineNumber":128,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":129,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":130,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":131,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":132,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":133,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":134,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":135,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":136,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":137,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30"},{"lineNumber":138,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":139,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":140,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":142,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":145,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":146,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07"},{"lineNumber":147,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":148,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":149,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15"},{"lineNumber":150,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11"},{"lineNumber":151,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11"},{"lineNumber":152,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":154,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":156,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"Jolonauh":32,"-":124}},{"path":"src/main/java/seedu/address/logic/parser/UpdateCommandParser.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":"Jolonauh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DESCRIPTION;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NOK;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_UPDATE;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26"},{"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":"Jolonauh"},"content":"import seedu.address.logic.commands.UpdateCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.logic.commands.UpdateCommand.UpdatePersonDescriptor;","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":22,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":26,"author":{"gitId":"Jolonauh"},"content":" * Parses input arguments and creates a new UpdateCommand object","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":28,"author":{"gitId":"Jolonauh"},"content":"public class UpdateCommandParser implements Parser\u003cUpdateCommand\u003e {","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":31,"author":{"gitId":"Jolonauh"},"content":" * Parses the given {@code String} of arguments in the context of the UpdateCommand","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"Jolonauh"},"content":" * and returns an UpdateCommand object for execution.","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":35,"author":{"gitId":"Jolonauh"},"content":" public UpdateCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15"},{"lineNumber":37,"author":{"gitId":"Jolonauh"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_UPDATE, PREFIX_NAME, PREFIX_PHONE,","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"Jolonauh"},"content":" PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_DESCRIPTION, PREFIX_NOK, PREFIX_TAG);","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":40,"author":{"gitId":"Jolonauh"},"content":" Name name;","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":43,"author":{"gitId":"Jolonauh"},"content":" name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_UPDATE)","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"Jolonauh"},"content":" .orElseThrow(() -\u003e new ParseException(UpdateCommand.MESSAGE_USAGE)));","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10"},{"lineNumber":46,"author":{"gitId":"Jolonauh"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, UpdateCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":49,"author":{"gitId":"Jolonauh"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-03-07"},{"lineNumber":50,"author":{"gitId":"Jolonauh"},"content":" PREFIX_ADDRESS, PREFIX_DESCRIPTION, PREFIX_NOK);","lastModifiedDate":"2024-03-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":52,"author":{"gitId":"Jolonauh"},"content":" UpdateCommand.UpdatePersonDescriptor updatePersonDescriptor \u003d new UpdatePersonDescriptor();","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":55,"author":{"gitId":"Jolonauh"},"content":" updatePersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":57,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":58,"author":{"gitId":"Jolonauh"},"content":" updatePersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":60,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":61,"author":{"gitId":"Jolonauh"},"content":" updatePersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":64,"author":{"gitId":"Jolonauh"},"content":" updatePersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":66,"author":{"gitId":"Jolonauh"},"content":" if (argMultimap.getValue(PREFIX_DESCRIPTION).isPresent()) {","lastModifiedDate":"2024-03-07"},{"lineNumber":67,"author":{"gitId":"Jolonauh"},"content":" updatePersonDescriptor.setDescription(","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"Jolonauh"},"content":" ParserUtil.parseDescription(argMultimap.getValue(PREFIX_DESCRIPTION).get()));","lastModifiedDate":"2024-03-07"},{"lineNumber":69,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":70,"author":{"gitId":"Jolonauh"},"content":" if (argMultimap.getValue(PREFIX_NOK).isPresent()) {","lastModifiedDate":"2024-03-07"},{"lineNumber":71,"author":{"gitId":"Jolonauh"},"content":" updatePersonDescriptor.setNextOfKin(ParserUtil.parseNextOfKin(argMultimap.getValue(PREFIX_NOK).get()));","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":73,"author":{"gitId":"Jolonauh"},"content":" parseTagsForUpdate(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(updatePersonDescriptor::setTags);","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":75,"author":{"gitId":"Jolonauh"},"content":" if (!updatePersonDescriptor.isAnyFieldUpdated()) {","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"Jolonauh"},"content":" throw new ParseException(UpdateCommand.MESSAGE_NOT_UPDATED);","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":79,"author":{"gitId":"Jolonauh"},"content":" return new UpdateCommand(name, updatePersonDescriptor);","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":83,"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":84,"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":85,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07"},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":87,"author":{"gitId":"Jolonauh"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForUpdate(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2024-03-16"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":90,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":91,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":93,"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":94,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":97,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"Jolonauh":41,"-":56}},{"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":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.UniquePersonList;","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Wraps all data at the address-book level","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Duplicates are not allowed (by .isSamePerson comparison)","lastModifiedDate":"2018-04-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class AddressBook implements ReadOnlyAddressBook {","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private final UniquePersonList persons;","lastModifiedDate":"2016-08-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-19"},{"lineNumber":21,"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":22,"author":{"gitId":"-"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2016-10-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-19"},{"lineNumber":24,"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":25,"author":{"gitId":"-"},"content":" * among constructors.","lastModifiedDate":"2016-10-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" {","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" persons \u003d new UniquePersonList();","lastModifiedDate":"2016-08-26"},{"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() {}","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":" * Creates an AddressBook using the Persons in the {@code toBeCopied}","lastModifiedDate":"2018-03-29"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public AddressBook(ReadOnlyAddressBook toBeCopied) {","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2016-12-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" resetData(toBeCopied);","lastModifiedDate":"2016-12-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":41,"author":{"gitId":"-"},"content":" //// list overwrite operations","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Replaces the contents of the person list with {@code persons}.","lastModifiedDate":"2018-08-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2018-08-07"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void setPersons(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-08-07"},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.persons.setPersons(persons);","lastModifiedDate":"2016-10-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code AddressBook} with {@code newData}.","lastModifiedDate":"2017-08-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyAddressBook newData) {","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" requireNonNull(newData);","lastModifiedDate":"2017-05-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" setPersons(newData.getPersonList());","lastModifiedDate":"2018-03-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" //// person-level operations","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":63,"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":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return persons.contains(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-09-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * The person must not already exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void addPerson(Person p) {","lastModifiedDate":"2018-08-07"},{"lineNumber":75,"author":{"gitId":"-"},"content":" persons.add(p);","lastModifiedDate":"2018-03-29"},{"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-12-13"},{"lineNumber":79,"author":{"gitId":"Jolonauh"},"content":" * Replaces the given person {@code target} in the list with {@code updatedPerson}.","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":81,"author":{"gitId":"Jolonauh"},"content":" * The person identity of {@code updatedPerson} must not be the same as another existing person in the address book.","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":83,"author":{"gitId":"Jolonauh"},"content":" public void setPerson(Person target, Person updatedPerson) {","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"Jolonauh"},"content":" requireNonNull(updatedPerson);","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":86,"author":{"gitId":"Jolonauh"},"content":" persons.setPerson(target, updatedPerson);","lastModifiedDate":"2024-03-16"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * Removes {@code key} from this {@code AddressBook}.","lastModifiedDate":"2017-08-16"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * {@code key} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void removePerson(Person key) {","lastModifiedDate":"2018-08-07"},{"lineNumber":94,"author":{"gitId":"-"},"content":" persons.remove(key);","lastModifiedDate":"2018-02-28"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" //// util methods","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":" .add(\"persons\", persons)","lastModifiedDate":"2019-02-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"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-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":108,"author":{"gitId":"-"},"content":" return persons.asUnmodifiableObservableList();","lastModifiedDate":"2018-04-05"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-01"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-01"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"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 AddressBook)) {","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":" AddressBook otherAddressBook \u003d (AddressBook) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":" return persons.equals(otherAddressBook.persons);","lastModifiedDate":"2023-07-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":127,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":128,"author":{"gitId":"-"},"content":" return persons.hashCode();","lastModifiedDate":"2018-03-29"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":130,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"Jolonauh":5,"-":125}},{"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":"-"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2017-08-05"},{"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":"Jolonauh"},"content":" * Replaces the given person {@code target} with {@code updatedPerson}.","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":75,"author":{"gitId":"Jolonauh"},"content":" * The person identity of {@code updatedPerson} must not be the same as another existing person in the address book.","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":77,"author":{"gitId":"Jolonauh"},"content":" void setPerson(Person target, Person updatedPerson);","lastModifiedDate":"2024-03-16"},{"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":{"Jolonauh":3,"-":84}},{"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":"-"},"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":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2018-01-10"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(this.addressBook.getPersonList());","lastModifiedDate":"2019-01-25"},{"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":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25"},{"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":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","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 setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"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":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":92,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":93,"author":{"gitId":"-"},"content":" return addressBook.hasPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":" addressBook.removePerson(target);","lastModifiedDate":"2019-01-25"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":102,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":103,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":104,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13"},{"lineNumber":108,"author":{"gitId":"Jolonauh"},"content":" public void setPerson(Person target, Person updatedPerson) {","lastModifiedDate":"2024-03-16"},{"lineNumber":109,"author":{"gitId":"Jolonauh"},"content":" requireAllNonNull(target, updatedPerson);","lastModifiedDate":"2024-03-16"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":111,"author":{"gitId":"Jolonauh"},"content":" addressBook.setPerson(target, updatedPerson);","lastModifiedDate":"2024-03-16"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":114,"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":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":117,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10"},{"lineNumber":118,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11"},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":121,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":122,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":126,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":127,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05"},{"lineNumber":128,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12"},{"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":"2017-05-31"},{"lineNumber":132,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":137,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31"},{"lineNumber":138,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":139,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":143,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13"},{"lineNumber":144,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13"},{"lineNumber":145,"author":{"gitId":"-"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons);","lastModifiedDate":"2023-07-13"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":148,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"Jolonauh":3,"-":145}},{"path":"src/main/java/seedu/address/model/person/Address.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":"-"},"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":"Jolonauh"},"content":" * Returns true if a given string is a valid description.","lastModifiedDate":"2024-03-06"},{"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":{"Jolonauh":1,"-":64}},{"path":"src/main/java/seedu/address/model/person/Description.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Jolonauh"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-06"},{"lineNumber":2,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":3,"author":{"gitId":"Jolonauh"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-06"},{"lineNumber":4,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-06"},{"lineNumber":5,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":6,"author":{"gitId":"Jolonauh"},"content":"/**","lastModifiedDate":"2024-03-07"},{"lineNumber":7,"author":{"gitId":"Jolonauh"},"content":" * Represents a Person\u0027s description in the address book.","lastModifiedDate":"2024-03-07"},{"lineNumber":8,"author":{"gitId":"Jolonauh"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidDescription(String)}","lastModifiedDate":"2024-03-07"},{"lineNumber":9,"author":{"gitId":"Jolonauh"},"content":" */","lastModifiedDate":"2024-03-07"},{"lineNumber":10,"author":{"gitId":"Jolonauh"},"content":"public class Description {","lastModifiedDate":"2024-03-06"},{"lineNumber":11,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":12,"author":{"gitId":"Jolonauh"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Descriptions can take any values, and it should not be blank\";","lastModifiedDate":"2024-03-06"},{"lineNumber":13,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":14,"author":{"gitId":"Jolonauh"},"content":" /*","lastModifiedDate":"2024-03-06"},{"lineNumber":15,"author":{"gitId":"Jolonauh"},"content":" * The first character of the description must not be a whitespace,","lastModifiedDate":"2024-03-06"},{"lineNumber":16,"author":{"gitId":"Jolonauh"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-03-06"},{"lineNumber":17,"author":{"gitId":"Jolonauh"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":18,"author":{"gitId":"Jolonauh"},"content":" public static final String VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2024-03-06"},{"lineNumber":19,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":20,"author":{"gitId":"Jolonauh"},"content":" public final String value;","lastModifiedDate":"2024-03-06"},{"lineNumber":21,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":22,"author":{"gitId":"Jolonauh"},"content":" /**","lastModifiedDate":"2024-03-06"},{"lineNumber":23,"author":{"gitId":"Jolonauh"},"content":" * Constructs a {@code Description}.","lastModifiedDate":"2024-03-06"},{"lineNumber":24,"author":{"gitId":"Jolonauh"},"content":" *","lastModifiedDate":"2024-03-06"},{"lineNumber":25,"author":{"gitId":"Jolonauh"},"content":" * @param description A valid description.","lastModifiedDate":"2024-03-06"},{"lineNumber":26,"author":{"gitId":"Jolonauh"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":27,"author":{"gitId":"Jolonauh"},"content":" public Description(String description) {","lastModifiedDate":"2024-03-06"},{"lineNumber":28,"author":{"gitId":"Jolonauh"},"content":" requireNonNull(description);","lastModifiedDate":"2024-03-06"},{"lineNumber":29,"author":{"gitId":"Jolonauh"},"content":" checkArgument(isValidDescription(description), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-06"},{"lineNumber":30,"author":{"gitId":"Jolonauh"},"content":" value \u003d description;","lastModifiedDate":"2024-03-06"},{"lineNumber":31,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":32,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":33,"author":{"gitId":"Jolonauh"},"content":" /**","lastModifiedDate":"2024-03-06"},{"lineNumber":34,"author":{"gitId":"Jolonauh"},"content":" * Returns true if a given string is a valid description.","lastModifiedDate":"2024-03-06"},{"lineNumber":35,"author":{"gitId":"Jolonauh"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":36,"author":{"gitId":"Jolonauh"},"content":" public static boolean isValidDescription(String test) {","lastModifiedDate":"2024-03-06"},{"lineNumber":37,"author":{"gitId":"Jolonauh"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-06"},{"lineNumber":38,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":39,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":40,"author":{"gitId":"Jolonauh"},"content":" @Override","lastModifiedDate":"2024-03-06"},{"lineNumber":41,"author":{"gitId":"Jolonauh"},"content":" public String toString() {","lastModifiedDate":"2024-03-06"},{"lineNumber":42,"author":{"gitId":"Jolonauh"},"content":" return value;","lastModifiedDate":"2024-03-06"},{"lineNumber":43,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":44,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":45,"author":{"gitId":"Jolonauh"},"content":" @Override","lastModifiedDate":"2024-03-06"},{"lineNumber":46,"author":{"gitId":"Jolonauh"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-06"},{"lineNumber":47,"author":{"gitId":"Jolonauh"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-06"},{"lineNumber":48,"author":{"gitId":"Jolonauh"},"content":" return true;","lastModifiedDate":"2024-03-06"},{"lineNumber":49,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":50,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":51,"author":{"gitId":"Jolonauh"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-06"},{"lineNumber":52,"author":{"gitId":"Jolonauh"},"content":" if (!(other instanceof Description)) {","lastModifiedDate":"2024-03-06"},{"lineNumber":53,"author":{"gitId":"Jolonauh"},"content":" return false;","lastModifiedDate":"2024-03-06"},{"lineNumber":54,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":55,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":56,"author":{"gitId":"Jolonauh"},"content":" Description otherDescription \u003d (Description) other;","lastModifiedDate":"2024-03-06"},{"lineNumber":57,"author":{"gitId":"Jolonauh"},"content":" return value.equals(otherDescription.value);","lastModifiedDate":"2024-03-06"},{"lineNumber":58,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":59,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":60,"author":{"gitId":"Jolonauh"},"content":" @Override","lastModifiedDate":"2024-03-06"},{"lineNumber":61,"author":{"gitId":"Jolonauh"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-06"},{"lineNumber":62,"author":{"gitId":"Jolonauh"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-06"},{"lineNumber":63,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":64,"author":{"gitId":"Jolonauh"},"content":"}","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"Jolonauh":64}},{"path":"src/main/java/seedu/address/model/person/NextOfKin.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Jolonauh"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-06"},{"lineNumber":2,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":3,"author":{"gitId":"Jolonauh"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-06"},{"lineNumber":4,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-06"},{"lineNumber":5,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":6,"author":{"gitId":"Jolonauh"},"content":"/**","lastModifiedDate":"2024-03-07"},{"lineNumber":7,"author":{"gitId":"Jolonauh"},"content":" * Represents a Person\u0027s next of kin in the address book.","lastModifiedDate":"2024-03-07"},{"lineNumber":8,"author":{"gitId":"Jolonauh"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidNextOfKin(String)}","lastModifiedDate":"2024-03-07"},{"lineNumber":9,"author":{"gitId":"Jolonauh"},"content":" */","lastModifiedDate":"2024-03-07"},{"lineNumber":10,"author":{"gitId":"Jolonauh"},"content":"public class NextOfKin {","lastModifiedDate":"2024-03-06"},{"lineNumber":11,"author":{"gitId":"Rishit02"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"Rishit02"},"content":" \"Names should only contain alphanumeric characters and spaces, and it should not be blank\";","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"Rishit02"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":15,"author":{"gitId":"Jolonauh"},"content":" /*","lastModifiedDate":"2024-03-06"},{"lineNumber":16,"author":{"gitId":"Jolonauh"},"content":" * The first character of the next of kin must not be a whitespace,","lastModifiedDate":"2024-03-06"},{"lineNumber":17,"author":{"gitId":"Jolonauh"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-03-06"},{"lineNumber":18,"author":{"gitId":"Jolonauh"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":19,"author":{"gitId":"Rishit02"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}][\\\\p{Alnum} ]*\";","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":21,"author":{"gitId":"Jolonauh"},"content":" public final String value;","lastModifiedDate":"2024-03-06"},{"lineNumber":22,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":23,"author":{"gitId":"Jolonauh"},"content":" /**","lastModifiedDate":"2024-03-06"},{"lineNumber":24,"author":{"gitId":"Jolonauh"},"content":" * Constructs a {@code NextOfKin}.","lastModifiedDate":"2024-03-06"},{"lineNumber":25,"author":{"gitId":"Jolonauh"},"content":" *","lastModifiedDate":"2024-03-06"},{"lineNumber":26,"author":{"gitId":"Jolonauh"},"content":" * @param nextOfKin A valid next of kin.","lastModifiedDate":"2024-03-06"},{"lineNumber":27,"author":{"gitId":"Jolonauh"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":28,"author":{"gitId":"Jolonauh"},"content":" public NextOfKin(String nextOfKin) {","lastModifiedDate":"2024-03-06"},{"lineNumber":29,"author":{"gitId":"Jolonauh"},"content":" requireNonNull(nextOfKin);","lastModifiedDate":"2024-03-06"},{"lineNumber":30,"author":{"gitId":"Jolonauh"},"content":" checkArgument(isValidNextOfKin(nextOfKin), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-06"},{"lineNumber":31,"author":{"gitId":"Jolonauh"},"content":" value \u003d nextOfKin;","lastModifiedDate":"2024-03-06"},{"lineNumber":32,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":33,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":34,"author":{"gitId":"Jolonauh"},"content":" /**","lastModifiedDate":"2024-03-06"},{"lineNumber":35,"author":{"gitId":"Jolonauh"},"content":" * Returns true if a given string is a valid next of kin.","lastModifiedDate":"2024-03-06"},{"lineNumber":36,"author":{"gitId":"Jolonauh"},"content":" */","lastModifiedDate":"2024-03-06"},{"lineNumber":37,"author":{"gitId":"Jolonauh"},"content":" public static boolean isValidNextOfKin(String test) {","lastModifiedDate":"2024-03-06"},{"lineNumber":38,"author":{"gitId":"Jolonauh"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-06"},{"lineNumber":39,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":40,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":41,"author":{"gitId":"Jolonauh"},"content":" @Override","lastModifiedDate":"2024-03-06"},{"lineNumber":42,"author":{"gitId":"Jolonauh"},"content":" public String toString() {","lastModifiedDate":"2024-03-06"},{"lineNumber":43,"author":{"gitId":"Jolonauh"},"content":" return value;","lastModifiedDate":"2024-03-06"},{"lineNumber":44,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":45,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":46,"author":{"gitId":"Jolonauh"},"content":" @Override","lastModifiedDate":"2024-03-06"},{"lineNumber":47,"author":{"gitId":"Jolonauh"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-06"},{"lineNumber":48,"author":{"gitId":"Jolonauh"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-06"},{"lineNumber":49,"author":{"gitId":"Jolonauh"},"content":" return true;","lastModifiedDate":"2024-03-06"},{"lineNumber":50,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":51,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":52,"author":{"gitId":"Jolonauh"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-06"},{"lineNumber":53,"author":{"gitId":"Jolonauh"},"content":" if (!(other instanceof NextOfKin)) {","lastModifiedDate":"2024-03-06"},{"lineNumber":54,"author":{"gitId":"Jolonauh"},"content":" return false;","lastModifiedDate":"2024-03-06"},{"lineNumber":55,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":56,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":57,"author":{"gitId":"Jolonauh"},"content":" NextOfKin otherNextOfKin \u003d (NextOfKin) other;","lastModifiedDate":"2024-03-06"},{"lineNumber":58,"author":{"gitId":"Jolonauh"},"content":" return value.equals(otherNextOfKin.value);","lastModifiedDate":"2024-03-06"},{"lineNumber":59,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":60,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":61,"author":{"gitId":"Jolonauh"},"content":" @Override","lastModifiedDate":"2024-03-06"},{"lineNumber":62,"author":{"gitId":"Jolonauh"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-06"},{"lineNumber":63,"author":{"gitId":"Jolonauh"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-06"},{"lineNumber":64,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":65,"author":{"gitId":"Jolonauh"},"content":"}","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"Jolonauh":61,"Rishit02":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":"-"},"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":"-"},"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 Address address;","lastModifiedDate":"2018-04-19"},{"lineNumber":26,"author":{"gitId":"Jolonauh"},"content":" private final Description description;","lastModifiedDate":"2024-03-06"},{"lineNumber":27,"author":{"gitId":"Jolonauh"},"content":" private final NextOfKin nextOfKin;","lastModifiedDate":"2024-03-06"},{"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":"Jolonauh"},"content":" public Person(Name name, Phone phone, Email email, Address address,","lastModifiedDate":"2024-03-06"},{"lineNumber":34,"author":{"gitId":"Jolonauh"},"content":" Description description, NextOfKin nextOfKin, Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-03-06"},{"lineNumber":35,"author":{"gitId":"Jolonauh"},"content":" requireAllNonNull(name, phone, email, address, description, nextOfKin, tags);","lastModifiedDate":"2024-03-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20"},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20"},{"lineNumber":40,"author":{"gitId":"Jolonauh"},"content":" this.description \u003d description;","lastModifiedDate":"2024-03-06"},{"lineNumber":41,"author":{"gitId":"Jolonauh"},"content":" this.nextOfKin \u003d nextOfKin;","lastModifiedDate":"2024-03-06"},{"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":"Jolonauh"},"content":" public Name getLowerCaseName() {","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"Jolonauh"},"content":" return new Name(name.fullName.toLowerCase());","lastModifiedDate":"2024-03-15"},{"lineNumber":51,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":52,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return email;","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 Address getAddress() {","lastModifiedDate":"2017-07-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":65,"author":{"gitId":"Jolonauh"},"content":" public Description getDescription() {","lastModifiedDate":"2024-03-06"},{"lineNumber":66,"author":{"gitId":"Jolonauh"},"content":" return description;","lastModifiedDate":"2024-03-06"},{"lineNumber":67,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":68,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":69,"author":{"gitId":"Jolonauh"},"content":" public NextOfKin getNextOfKin() {","lastModifiedDate":"2024-03-06"},{"lineNumber":70,"author":{"gitId":"Jolonauh"},"content":" return nextOfKin;","lastModifiedDate":"2024-03-06"},{"lineNumber":71,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":72,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":73,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07"},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":81,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" return true;","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":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19"},{"lineNumber":91,"author":{"gitId":"-"},"content":" \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2020-12-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":101,"author":{"gitId":"-"},"content":" return true;","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":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10"},{"lineNumber":106,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":109,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10"},{"lineNumber":110,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":114,"author":{"gitId":"Jolonauh"},"content":" \u0026\u0026 description.equals(otherPerson.description)","lastModifiedDate":"2024-03-06"},{"lineNumber":115,"author":{"gitId":"Jolonauh"},"content":" \u0026\u0026 nextOfKin.equals(otherPerson.nextOfKin)","lastModifiedDate":"2024-03-06"},{"lineNumber":116,"author":{"gitId":"-"},"content":" \u0026\u0026 tags.equals(otherPerson.tags);","lastModifiedDate":"2023-07-13"},{"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 int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":121,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":122,"author":{"gitId":"Jolonauh"},"content":" return Objects.hash(name, phone, email, address, description, nextOfKin, tags);","lastModifiedDate":"2024-03-06"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":126,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":127,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":132,"author":{"gitId":"Jolonauh"},"content":" .add(\"description\", description)","lastModifiedDate":"2024-03-06"},{"lineNumber":133,"author":{"gitId":"Jolonauh"},"content":" .add(\"nextOfKin\", nextOfKin)","lastModifiedDate":"2024-03-07"},{"lineNumber":134,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":138,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"Jolonauh":24,"-":114}},{"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":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Adds a person to the list.","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * The person must not already exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void add(Person toAdd) {","lastModifiedDate":"2018-08-07"},{"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":"Jolonauh"},"content":" * Replaces the person {@code target} in the list with {@code updatedPerson}.","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":54,"author":{"gitId":"Jolonauh"},"content":" * The person identity of {@code updatedPerson} must not be the same as another existing person in the list.","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":56,"author":{"gitId":"Jolonauh"},"content":" public void setPerson(Person target, Person updatedPerson) {","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"Jolonauh"},"content":" requireAllNonNull(target, updatedPerson);","lastModifiedDate":"2024-03-16"},{"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":"Jolonauh"},"content":" if (!target.isSamePerson(updatedPerson) \u0026\u0026 contains(updatedPerson)) {","lastModifiedDate":"2024-03-16"},{"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":"Jolonauh"},"content":" internalList.set(index, updatedPerson);","lastModifiedDate":"2024-03-16"},{"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":"-"},"content":" * Removes the equivalent person from the list.","lastModifiedDate":"2016-08-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * The person must exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void remove(Person toRemove) {","lastModifiedDate":"2018-08-07"},{"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":"-"},"content":" public void setPersons(UniquePersonList replacement) {","lastModifiedDate":"2016-10-19"},{"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":"-"},"content":" * Replaces the contents of this list with {@code persons}.","lastModifiedDate":"2018-08-07"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2018-08-07"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void setPersons(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-08-07"},{"lineNumber":92,"author":{"gitId":"-"},"content":" requireAllNonNull(persons);","lastModifiedDate":"2018-01-10"},{"lineNumber":93,"author":{"gitId":"-"},"content":" if (!personsAreUnique(persons)) {","lastModifiedDate":"2018-04-19"},{"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":"-"},"content":" internalList.setAll(persons);","lastModifiedDate":"2018-08-14"},{"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":"-"},"content":" public ObservableList\u003cPerson\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2018-04-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":"-"},"content":" public Iterator\u003cPerson\u003e iterator() {","lastModifiedDate":"2016-08-24"},{"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":"-"},"content":" if (!(other instanceof UniquePersonList)) {","lastModifiedDate":"2023-07-13"},{"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":"-"},"content":" UniquePersonList otherUniquePersonList \u003d (UniquePersonList) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" return internalList.equals(otherUniquePersonList.internalList);","lastModifiedDate":"2023-07-13"},{"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":"-"},"content":" * Returns true if {@code persons} contains only unique persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":140,"author":{"gitId":"-"},"content":" private boolean personsAreUnique(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-04-19"},{"lineNumber":141,"author":{"gitId":"-"},"content":" for (int i \u003d 0; i \u003c persons.size() - 1; i++) {","lastModifiedDate":"2018-04-19"},{"lineNumber":142,"author":{"gitId":"-"},"content":" for (int j \u003d i + 1; j \u003c persons.size(); j++) {","lastModifiedDate":"2018-04-19"},{"lineNumber":143,"author":{"gitId":"-"},"content":" if (persons.get(i).isSamePerson(persons.get(j))) {","lastModifiedDate":"2018-04-19"},{"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":{"Jolonauh":6,"-":144}},{"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":"2024-03-07"},{"lineNumber":10,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.model.person.Description;","lastModifiedDate":"2024-03-07"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-07"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-07"},{"lineNumber":13,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.model.person.NextOfKin;","lastModifiedDate":"2024-03-07"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-07"},{"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":"Jolonauh"},"content":" public static final String DESCRIPTION_PLACEHOLDER \u003d \"Description placeholder\";","lastModifiedDate":"2024-03-06"},{"lineNumber":23,"author":{"gitId":"Jolonauh"},"content":" public static final String NOK_PLACEHOLDER \u003d \"Next of kin placeholder\";","lastModifiedDate":"2024-03-06"},{"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":"-"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":28,"author":{"gitId":"Rishit02"},"content":" new Description(\"Suffers from blood disorder\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"Rishit02"},"content":" new NextOfKin(\"Bob Yeoah\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" getTagSet(\"friends\")),","lastModifiedDate":"2017-03-14"},{"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":"-"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":33,"author":{"gitId":"Rishit02"},"content":" new Description(\"Suffers from diabetes\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"Rishit02"},"content":" new NextOfKin(\"Choon Yu\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" getTagSet(\"colleagues\", \"friends\")),","lastModifiedDate":"2017-03-14"},{"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":"-"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":38,"author":{"gitId":"Rishit02"},"content":" new Description(\"Has asthama\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"Rishit02"},"content":" new NextOfKin(\"David Oliveiro\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" getTagSet(\"neighbours\")),","lastModifiedDate":"2017-03-14"},{"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":"-"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":43,"author":{"gitId":"Rishit02"},"content":" new Description(\"Has Huntington\u0027s Disease\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"Rishit02"},"content":" new NextOfKin(\"Elliot Li\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" getTagSet(\"family\")),","lastModifiedDate":"2017-03-14"},{"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":"-"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":48,"author":{"gitId":"Rishit02"},"content":" new Description(\"Suffers from Crohn\u0027s disease\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"Rishit02"},"content":" new NextOfKin(\"Ilyasa Ibrahim\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" getTagSet(\"classmates\")),","lastModifiedDate":"2017-03-14"},{"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":"-"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":53,"author":{"gitId":"Rishit02"},"content":" new Description(\"Suffers from erectile dysfunction\"),","lastModifiedDate":"2024-03-15"},{"lineNumber":54,"author":{"gitId":"Rishit02"},"content":" new NextOfKin(\"Pam Balakrishnan\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":" getTagSet(\"colleagues\"))","lastModifiedDate":"2017-03-14"},{"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":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"Jolonauh":4,"Rishit02":12,"-":60}},{"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":"2024-03-07"},{"lineNumber":14,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.model.person.Description;","lastModifiedDate":"2024-03-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-07"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-07"},{"lineNumber":17,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.model.person.NextOfKin;","lastModifiedDate":"2024-03-07"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-07"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-07"},{"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":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13"},{"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":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"Jolonauh"},"content":" private final String description;","lastModifiedDate":"2024-03-06"},{"lineNumber":34,"author":{"gitId":"Jolonauh"},"content":" private final String nextOfKin;","lastModifiedDate":"2024-03-06"},{"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":"-"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"Jolonauh"},"content":" @JsonProperty(\"description\") String description, @JsonProperty(\"nextOfKin\") String nextOfKin,","lastModifiedDate":"2024-03-06"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags) {","lastModifiedDate":"2023-05-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"Jolonauh"},"content":" this.description \u003d description;","lastModifiedDate":"2024-03-06"},{"lineNumber":50,"author":{"gitId":"Jolonauh"},"content":" this.nextOfKin \u003d nextOfKin;","lastModifiedDate":"2024-03-06"},{"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":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"Jolonauh"},"content":" description \u003d source.getDescription().value;","lastModifiedDate":"2024-03-06"},{"lineNumber":65,"author":{"gitId":"Jolonauh"},"content":" nextOfKin \u003d source.getNextOfKin().value;","lastModifiedDate":"2024-03-06"},{"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":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"Jolonauh"},"content":" if (description \u003d\u003d null) {","lastModifiedDate":"2024-03-06"},{"lineNumber":115,"author":{"gitId":"Jolonauh"},"content":" throw new IllegalValueException(","lastModifiedDate":"2024-03-06"},{"lineNumber":116,"author":{"gitId":"Jolonauh"},"content":" String.format(MISSING_FIELD_MESSAGE_FORMAT, Description.class.getSimpleName()));","lastModifiedDate":"2024-03-06"},{"lineNumber":117,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":118,"author":{"gitId":"Jolonauh"},"content":" if (!Description.isValidDescription(description)) {","lastModifiedDate":"2024-03-06"},{"lineNumber":119,"author":{"gitId":"Jolonauh"},"content":" throw new IllegalValueException(Description.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-06"},{"lineNumber":120,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":121,"author":{"gitId":"Jolonauh"},"content":" final Description modelDescription \u003d new Description(description);","lastModifiedDate":"2024-03-07"},{"lineNumber":122,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":123,"author":{"gitId":"Jolonauh"},"content":" if (nextOfKin \u003d\u003d null) {","lastModifiedDate":"2024-03-06"},{"lineNumber":124,"author":{"gitId":"Jolonauh"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-07"},{"lineNumber":125,"author":{"gitId":"Jolonauh"},"content":" NextOfKin.class.getSimpleName()));","lastModifiedDate":"2024-03-07"},{"lineNumber":126,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":127,"author":{"gitId":"Jolonauh"},"content":" if (!NextOfKin.isValidNextOfKin(nextOfKin)) {","lastModifiedDate":"2024-03-06"},{"lineNumber":128,"author":{"gitId":"Jolonauh"},"content":" throw new IllegalValueException(NextOfKin.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-06"},{"lineNumber":129,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":130,"author":{"gitId":"Jolonauh"},"content":" final NextOfKin modelNextOfKin \u003d new NextOfKin(nextOfKin);","lastModifiedDate":"2024-03-07"},{"lineNumber":131,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":132,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13"},{"lineNumber":133,"author":{"gitId":"Jolonauh"},"content":" return new Person(modelName, modelPhone, modelEmail, modelAddress, modelDescription, modelNextOfKin, modelTags);","lastModifiedDate":"2024-03-06"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":136,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"Jolonauh":28,"-":108}},{"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 address;","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":"Jolonauh"},"content":" private Label description;","lastModifiedDate":"2024-03-06"},{"lineNumber":43,"author":{"gitId":"Jolonauh"},"content":" @FXML","lastModifiedDate":"2024-03-06"},{"lineNumber":44,"author":{"gitId":"Jolonauh"},"content":" private Label nextOfKin;","lastModifiedDate":"2024-03-06"},{"lineNumber":45,"author":{"gitId":"Jolonauh"},"content":" @FXML","lastModifiedDate":"2024-03-06"},{"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":" address.setText(person.getAddress().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":59,"author":{"gitId":"Jolonauh"},"content":" description.setText(person.getDescription().value);","lastModifiedDate":"2024-03-06"},{"lineNumber":60,"author":{"gitId":"Jolonauh"},"content":" nextOfKin.setText(person.getNextOfKin().value);","lastModifiedDate":"2024-03-06"},{"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":{"Jolonauh":6,"-":59}},{"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":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2016-08-08"},{"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":"Jolonauh"},"content":" \u003cLabel fx:id\u003d\"description\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$description\" /\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":35,"author":{"gitId":"Jolonauh"},"content":" \u003cLabel fx:id\u003d\"nextOfKin\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$nextOfKin\" /\u003e","lastModifiedDate":"2024-03-06"},{"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":{"Jolonauh":2,"-":36}},{"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":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"Rishit02"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESCRIPTION_DESC_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"Rishit02"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NOK_DESC_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-03-14"},{"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":"-"},"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":"2017-06-14"},{"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":"-"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2023-06-13"},{"lineNumber":171,"author":{"gitId":"Rishit02"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + NOK_DESC_AMY + DESCRIPTION_DESC_AMY;","lastModifiedDate":"2024-03-14"},{"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":{"Rishit02":3,"-":174}},{"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":"-"},"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":"-"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2017-06-22"},{"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":"Jolonauh"},"content":" public void setPerson(Person target, Person updatedPerson) {","lastModifiedDate":"2024-03-16"},{"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":"2018-08-06"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"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":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07"},{"lineNumber":164,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":165,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07"},{"lineNumber":166,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":168,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":169,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":170,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":173,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":174,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":175,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":176,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":180,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":181,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12"},{"lineNumber":182,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":183,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12"},{"lineNumber":184,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":186,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07"},{"lineNumber":187,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":188,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":189,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":192,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":193,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08"},{"lineNumber":194,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":195,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":198,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":199,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04"},{"lineNumber":200,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04"},{"lineNumber":201,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":202,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":204,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12"}],"authorContributionMap":{"Jolonauh":1,"-":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":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"Rishit02"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DESCRIPTION;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"Rishit02"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NOK;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_UPDATE;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05"},{"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":"Jolonauh"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-16"},{"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":"Jolonauh"},"content":"import seedu.address.testutil.UpdatePersonDescriptorBuilder;","lastModifiedDate":"2024-03-16"},{"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":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05"},{"lineNumber":41,"author":{"gitId":"Rishit02"},"content":" public static final String VALID_DESCRIPTION_AMY \u003d \"Blood Disorder\";","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"Rishit02"},"content":" public static final String VALID_DESCRIPTION_BOB \u003d \"Blood Disorder\";","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"Rishit02"},"content":" public static final String VALID_NOK_AMY \u003d \"Ben Bee\";","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"Rishit02"},"content":" public static final String VALID_NOK_BOB \u003d \"Ben Bee\";","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05"},{"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":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":56,"author":{"gitId":"Rishit02"},"content":" public static final String NOK_DESC_AMY \u003d \" \" + PREFIX_NOK + VALID_NOK_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"Rishit02"},"content":" public static final String NOK_DESC_BOB \u003d \" \" + PREFIX_NOK + VALID_NOK_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"Rishit02"},"content":" public static final String DESCRIPTION_DESC_AMY \u003d \" \" + PREFIX_DESCRIPTION + VALID_DESCRIPTION_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"Rishit02"},"content":" public static final String DESCRIPTION_DESC_BOB \u003d \" \" + PREFIX_DESCRIPTION + VALID_DESCRIPTION_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"Jolonauh"},"content":" public static final String UPDATE_DESC_AMY \u003d \" \" + PREFIX_UPDATE + VALID_DESCRIPTION_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"Jolonauh"},"content":" public static final String UPDATE_DESC_BOB \u003d \" \" + PREFIX_UPDATE + VALID_DESCRIPTION_BOB;","lastModifiedDate":"2024-03-17"},{"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":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":65,"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":66,"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":67,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05"},{"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":"Rishit02"},"content":" // empty string not allowed for descriptions","lastModifiedDate":"2024-03-13"},{"lineNumber":70,"author":{"gitId":"Rishit02"},"content":" public static final String INVALID_DESCRIPTION_DESC \u003d \" \" + PREFIX_DESCRIPTION;","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"Rishit02"},"content":" public static final String INVALID_NOK_DESC \u003d \" \" + PREFIX_NOK; // empty string not allowed for next of kin","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"Jolonauh"},"content":" public static final String INVALID_UPDATE_DESC \u003d \" \" + PREFIX_UPDATE + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"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":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":78,"author":{"gitId":"Jolonauh"},"content":" public static final UpdateCommand.UpdatePersonDescriptor DESC_AMY;","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"Jolonauh"},"content":" public static final UpdateCommand.UpdatePersonDescriptor DESC_BOB;","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":82,"author":{"gitId":"Jolonauh"},"content":" DESC_AMY \u003d new UpdatePersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":85,"author":{"gitId":"Jolonauh"},"content":" DESC_BOB \u003d new UpdatePersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":95,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25"},{"lineNumber":96,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":97,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":101,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":102,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":106,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":109,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25"},{"lineNumber":111,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":112,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"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":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":119,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":120,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25"},{"lineNumber":121,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25"},{"lineNumber":123,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":124,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":125,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":126,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":133,"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":134,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31"},{"lineNumber":135,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":136,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31"},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":139,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31"},{"lineNumber":140,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20"},{"lineNumber":141,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":146,"author":{"gitId":"Jolonauh"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":147,"author":{"gitId":"Jolonauh"},"content":" * Updates {@code model}\u0027s filtered list to show only the person at the given {@code targetIndex} in the","lastModifiedDate":"2024-03-16"},{"lineNumber":148,"author":{"gitId":"Jolonauh"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2024-03-16"},{"lineNumber":149,"author":{"gitId":"Jolonauh"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":150,"author":{"gitId":"Jolonauh"},"content":" public static void showPersonAtName(Model model, Name targetName) {","lastModifiedDate":"2024-03-16"},{"lineNumber":151,"author":{"gitId":"Jolonauh"},"content":" model.updateFilteredPersonList(person -\u003e person.getLowerCaseName()","lastModifiedDate":"2024-03-17"},{"lineNumber":152,"author":{"gitId":"Jolonauh"},"content":" .equals(new Name(targetName.fullName.toLowerCase())));","lastModifiedDate":"2024-03-17"},{"lineNumber":153,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":154,"author":{"gitId":"Jolonauh"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2024-03-16"},{"lineNumber":155,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":156,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"Rishit02":13,"Jolonauh":20,"-":123}},{"path":"src/test/java/seedu/address/logic/commands/UpdateCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Jolonauh"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"Jolonauh"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"Jolonauh"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"Jolonauh"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtName;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.testutil.TypicalPersons.HOON;","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"Jolonauh"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"Jolonauh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.logic.commands.UpdateCommand.UpdatePersonDescriptor;","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.testutil.UpdatePersonDescriptorBuilder;","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"Jolonauh"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"Jolonauh"},"content":" * Contains integration tests (interaction with the Model) and unit tests for UpdateCommand.","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"Jolonauh"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"Jolonauh"},"content":"public class UpdateCommandTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"Jolonauh"},"content":" private Model model;","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"Jolonauh"},"content":" @BeforeEach","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"Jolonauh"},"content":" public void setup() {","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"Jolonauh"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"Jolonauh"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"Jolonauh"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"Jolonauh"},"content":" Person updatedPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"Jolonauh"},"content":" UpdateCommand.UpdatePersonDescriptor descriptor \u003d new UpdatePersonDescriptorBuilder(updatedPerson).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"Jolonauh"},"content":" UpdateCommand updateCommand \u003d new UpdateCommand(ALICE.getName(), descriptor);","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"Jolonauh"},"content":" String expectedMessage \u003d String.format(UpdateCommand.MESSAGE_UPDATE_PERSON_SUCCESS,","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"Jolonauh"},"content":" Messages.format(updatedPerson));","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"Jolonauh"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"Jolonauh"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), updatedPerson);","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"Jolonauh"},"content":" assertCommandSuccess(updateCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"Jolonauh"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"Jolonauh"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"Jolonauh"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"Jolonauh"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"Jolonauh"},"content":" Name lastPersonName \u003d lastPerson.getName();","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"Jolonauh"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"Jolonauh"},"content":" Person updatedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"Jolonauh"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"Jolonauh"},"content":" UpdateCommand.UpdatePersonDescriptor descriptor \u003d new UpdatePersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"Jolonauh"},"content":" .withPhone(VALID_PHONE_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"Jolonauh"},"content":" UpdateCommand updateCommand \u003d new UpdateCommand(lastPersonName, descriptor);","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"Jolonauh"},"content":" String expectedMessage \u003d String.format(UpdateCommand.MESSAGE_UPDATE_PERSON_SUCCESS,","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"Jolonauh"},"content":" Messages.format(updatedPerson));","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"Jolonauh"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"Jolonauh"},"content":" expectedModel.setPerson(lastPerson, updatedPerson);","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"Jolonauh"},"content":" assertCommandSuccess(updateCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"Jolonauh"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":87,"author":{"gitId":"Jolonauh"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2024-03-16"},{"lineNumber":88,"author":{"gitId":"Jolonauh"},"content":" UpdateCommand updateCommand \u003d new UpdateCommand(ALICE.getName(), new UpdateCommand.UpdatePersonDescriptor());","lastModifiedDate":"2024-03-16"},{"lineNumber":89,"author":{"gitId":"Jolonauh"},"content":" Person updatedPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-16"},{"lineNumber":90,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":91,"author":{"gitId":"Jolonauh"},"content":" String expectedMessage \u003d String.format(UpdateCommand.MESSAGE_UPDATE_PERSON_SUCCESS,","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"Jolonauh"},"content":" Messages.format(updatedPerson));","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":94,"author":{"gitId":"Jolonauh"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-16"},{"lineNumber":95,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":96,"author":{"gitId":"Jolonauh"},"content":" assertCommandSuccess(updateCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-16"},{"lineNumber":97,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":98,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":99,"author":{"gitId":"Jolonauh"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":100,"author":{"gitId":"Jolonauh"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2024-03-16"},{"lineNumber":101,"author":{"gitId":"Jolonauh"},"content":" showPersonAtName(model, ALICE.getName());","lastModifiedDate":"2024-03-16"},{"lineNumber":102,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":103,"author":{"gitId":"Jolonauh"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-16"},{"lineNumber":104,"author":{"gitId":"Jolonauh"},"content":" Person updatedPerson \u003d new PersonBuilder(personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":105,"author":{"gitId":"Jolonauh"},"content":" UpdateCommand updateCommand \u003d new UpdateCommand(ALICE.getName(),","lastModifiedDate":"2024-03-16"},{"lineNumber":106,"author":{"gitId":"Jolonauh"},"content":" new UpdatePersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2024-03-16"},{"lineNumber":107,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":108,"author":{"gitId":"Jolonauh"},"content":" String expectedMessage \u003d String.format(UpdateCommand.MESSAGE_UPDATE_PERSON_SUCCESS,","lastModifiedDate":"2024-03-17"},{"lineNumber":109,"author":{"gitId":"Jolonauh"},"content":" Messages.format(updatedPerson));","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":111,"author":{"gitId":"Jolonauh"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-03-16"},{"lineNumber":112,"author":{"gitId":"Jolonauh"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), updatedPerson);","lastModifiedDate":"2024-03-16"},{"lineNumber":113,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":114,"author":{"gitId":"Jolonauh"},"content":" assertCommandSuccess(updateCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-16"},{"lineNumber":115,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":116,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":117,"author":{"gitId":"Jolonauh"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"Jolonauh"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"Jolonauh"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"Jolonauh"},"content":" UpdatePersonDescriptor descriptor \u003d new UpdatePersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"Jolonauh"},"content":" Person secondPerson \u003d model.getFilteredPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"Jolonauh"},"content":" UpdateCommand updateCommand \u003d new UpdateCommand(secondPerson.getName(), descriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"Jolonauh"},"content":" assertCommandFailure(updateCommand, model, UpdateCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"Jolonauh"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"Jolonauh"},"content":" public void execute_invalidPersonNameUnfilteredList_failure() {","lastModifiedDate":"2024-03-17"},{"lineNumber":129,"author":{"gitId":"Jolonauh"},"content":" Name invalidName \u003d HOON.getName();","lastModifiedDate":"2024-03-17"},{"lineNumber":130,"author":{"gitId":"Jolonauh"},"content":" UpdatePersonDescriptor descriptor \u003d new UpdatePersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"Jolonauh"},"content":" UpdateCommand updateCommand \u003d new UpdateCommand(invalidName, descriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"Jolonauh"},"content":" assertCommandFailure(updateCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_NAME);","lastModifiedDate":"2024-03-17"},{"lineNumber":134,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":135,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":136,"author":{"gitId":"Jolonauh"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"Jolonauh"},"content":" public void equals() {","lastModifiedDate":"2024-03-17"},{"lineNumber":138,"author":{"gitId":"Jolonauh"},"content":" final UpdateCommand standardCommand \u003d new UpdateCommand(AMY.getName(), DESC_AMY);","lastModifiedDate":"2024-03-17"},{"lineNumber":139,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":140,"author":{"gitId":"Jolonauh"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":141,"author":{"gitId":"Jolonauh"},"content":" UpdatePersonDescriptor copyDescriptor \u003d new UpdatePersonDescriptor(DESC_AMY);","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"Jolonauh"},"content":" UpdateCommand commandWithSameValues \u003d new UpdateCommand(AMY.getName(), copyDescriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":143,"author":{"gitId":"Jolonauh"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-03-17"},{"lineNumber":144,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":145,"author":{"gitId":"Jolonauh"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"Jolonauh"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-03-17"},{"lineNumber":147,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":148,"author":{"gitId":"Jolonauh"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":149,"author":{"gitId":"Jolonauh"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":150,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":151,"author":{"gitId":"Jolonauh"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":152,"author":{"gitId":"Jolonauh"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2024-03-17"},{"lineNumber":153,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":154,"author":{"gitId":"Jolonauh"},"content":" // different index -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":155,"author":{"gitId":"Jolonauh"},"content":" assertFalse(standardCommand.equals(new UpdateCommand(BOB.getName(), DESC_AMY)));","lastModifiedDate":"2024-03-17"},{"lineNumber":156,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":157,"author":{"gitId":"Jolonauh"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":158,"author":{"gitId":"Jolonauh"},"content":" assertFalse(standardCommand.equals(new UpdateCommand(AMY.getName(), DESC_BOB)));","lastModifiedDate":"2024-03-17"},{"lineNumber":159,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":160,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":161,"author":{"gitId":"Jolonauh"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":162,"author":{"gitId":"Jolonauh"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-16"},{"lineNumber":163,"author":{"gitId":"Jolonauh"},"content":" Name name \u003d ALICE.getName();","lastModifiedDate":"2024-03-16"},{"lineNumber":164,"author":{"gitId":"Jolonauh"},"content":" UpdateCommand.UpdatePersonDescriptor updatePersonDescriptor \u003d new UpdateCommand.UpdatePersonDescriptor();","lastModifiedDate":"2024-03-16"},{"lineNumber":165,"author":{"gitId":"Jolonauh"},"content":" UpdateCommand updateCommand \u003d new UpdateCommand(name, updatePersonDescriptor);","lastModifiedDate":"2024-03-16"},{"lineNumber":166,"author":{"gitId":"Jolonauh"},"content":" String expected \u003d UpdateCommand.class.getCanonicalName() + \"{name\u003d\" + name + \", updatePersonDescriptor\u003d\"","lastModifiedDate":"2024-03-16"},{"lineNumber":167,"author":{"gitId":"Jolonauh"},"content":" + updatePersonDescriptor + \"}\";","lastModifiedDate":"2024-03-16"},{"lineNumber":168,"author":{"gitId":"Jolonauh"},"content":" assertEquals(expected, updateCommand.toString());","lastModifiedDate":"2024-03-16"},{"lineNumber":169,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":170,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":171,"author":{"gitId":"Jolonauh"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"Jolonauh":171}},{"path":"src/test/java/seedu/address/logic/commands/UpdatePersonDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Jolonauh"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"Jolonauh"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"Jolonauh"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"Jolonauh"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"Jolonauh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.logic.commands.UpdateCommand.UpdatePersonDescriptor;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.testutil.UpdatePersonDescriptorBuilder;","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"Jolonauh"},"content":"public class UpdatePersonDescriptorTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"Jolonauh"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"Jolonauh"},"content":" public void equals() {","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"Jolonauh"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"Jolonauh"},"content":" UpdatePersonDescriptor descriptorWithSameValues \u003d new UpdateCommand.UpdatePersonDescriptor(DESC_AMY);","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"Jolonauh"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"Jolonauh"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"Jolonauh"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"Jolonauh"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"Jolonauh"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"Jolonauh"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"Jolonauh"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"Jolonauh"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"Jolonauh"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"Jolonauh"},"content":" // different name -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"Jolonauh"},"content":" UpdateCommand.UpdatePersonDescriptor updatedAmy \u003d new UpdatePersonDescriptorBuilder(DESC_AMY)","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"Jolonauh"},"content":" .withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"Jolonauh"},"content":" assertFalse(DESC_AMY.equals(updatedAmy));","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"Jolonauh"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"Jolonauh"},"content":" updatedAmy \u003d new UpdatePersonDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"Jolonauh"},"content":" assertFalse(DESC_AMY.equals(updatedAmy));","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"Jolonauh"},"content":" // different email -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"Jolonauh"},"content":" updatedAmy \u003d new UpdatePersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"Jolonauh"},"content":" assertFalse(DESC_AMY.equals(updatedAmy));","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"Jolonauh"},"content":" // different address -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"Jolonauh"},"content":" updatedAmy \u003d new UpdatePersonDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"Jolonauh"},"content":" assertFalse(DESC_AMY.equals(updatedAmy));","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"Jolonauh"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"Jolonauh"},"content":" updatedAmy \u003d new UpdatePersonDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"Jolonauh"},"content":" assertFalse(DESC_AMY.equals(updatedAmy));","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"Jolonauh"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"Jolonauh"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"Jolonauh"},"content":" UpdateCommand.UpdatePersonDescriptor updatePersonDescriptor \u003d new UpdateCommand.UpdatePersonDescriptor();","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"Jolonauh"},"content":" String expected \u003d UpdateCommand.UpdatePersonDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"Jolonauh"},"content":" + updatePersonDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"Jolonauh"},"content":" + updatePersonDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"Jolonauh"},"content":" + updatePersonDescriptor.getEmail().orElse(null) + \", address\u003d\"","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"Jolonauh"},"content":" + updatePersonDescriptor.getDescription().orElse(null) + \", description\u003d\"","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"Jolonauh"},"content":" + updatePersonDescriptor.getNextOfKin().orElse(null) + \", nextOfKin\u003d\"","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"Jolonauh"},"content":" + updatePersonDescriptor.getAddress().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"Jolonauh"},"content":" + updatePersonDescriptor.getTags().orElse(null) + \"}\";","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"Jolonauh"},"content":" assertEquals(expected, updatePersonDescriptor.toString());","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"Jolonauh"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"Jolonauh":74}},{"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":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"Rishit02"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESCRIPTION_DESC_AMY;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"Rishit02"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESCRIPTION_DESC_BOB;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"Rishit02"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_DESCRIPTION_DESC;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"Rishit02"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NOK_DESC;","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"Rishit02"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NOK_DESC_AMY;","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"Rishit02"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NOK_DESC_BOB;","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14"},{"lineNumber":34,"author":{"gitId":"Rishit02"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DESCRIPTION;","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14"},{"lineNumber":37,"author":{"gitId":"Rishit02"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NOK;","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-06-15"},{"lineNumber":49,"author":{"gitId":"Rishit02"},"content":"import seedu.address.model.person.Description;","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15"},{"lineNumber":52,"author":{"gitId":"Rishit02"},"content":"import seedu.address.model.person.NextOfKin;","lastModifiedDate":"2024-03-13"},{"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":"2024-03-13"},{"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":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2018-07-25"},{"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":"-"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":67,"author":{"gitId":"Rishit02"},"content":" + ADDRESS_DESC_BOB + NOK_DESC_BOB + DESCRIPTION_DESC_BOB","lastModifiedDate":"2024-03-13"},{"lineNumber":68,"author":{"gitId":"Rishit02"},"content":" + TAG_DESC_FRIEND, new AddCommand(expectedPerson));","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":" Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND)","lastModifiedDate":"2018-07-25"},{"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":"Rishit02"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-13"},{"lineNumber":76,"author":{"gitId":"Rishit02"},"content":" + NOK_DESC_BOB + DESCRIPTION_DESC_BOB","lastModifiedDate":"2024-03-13"},{"lineNumber":77,"author":{"gitId":"Rishit02"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, new AddCommand(expectedPersonMultipleTags));","lastModifiedDate":"2024-03-13"},{"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":"Rishit02"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + NOK_DESC_BOB","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"Rishit02"},"content":" + DESCRIPTION_DESC_BOB + ADDRESS_DESC_BOB + TAG_DESC_FRIEND;","lastModifiedDate":"2024-03-20"},{"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":"Rishit02"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_ADDRESS, PREFIX_EMAIL, PREFIX_PHONE,","lastModifiedDate":"2024-03-20"},{"lineNumber":106,"author":{"gitId":"Rishit02"},"content":" PREFIX_NOK, PREFIX_DESCRIPTION));","lastModifiedDate":"2024-03-20"},{"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":"Rishit02"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2024-03-13"},{"lineNumber":150,"author":{"gitId":"Rishit02"},"content":" + ADDRESS_DESC_AMY + NOK_DESC_AMY + DESCRIPTION_DESC_AMY,","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":183,"author":{"gitId":"Rishit02"},"content":" + NOK_DESC_BOB + DESCRIPTION_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":185,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15"},{"lineNumber":186,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":187,"author":{"gitId":"Rishit02"},"content":" + NOK_DESC_BOB + DESCRIPTION_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":189,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15"},{"lineNumber":190,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":191,"author":{"gitId":"Rishit02"},"content":" + NOK_DESC_BOB + DESCRIPTION_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":193,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15"},{"lineNumber":194,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2017-12-23"},{"lineNumber":195,"author":{"gitId":"Rishit02"},"content":" + NOK_DESC_BOB + DESCRIPTION_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2024-03-13"},{"lineNumber":196,"author":{"gitId":"Rishit02"},"content":" + TAG_DESC_FRIEND, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-13"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":198,"author":{"gitId":"Rishit02"},"content":" // invalid next of kin","lastModifiedDate":"2024-03-12"},{"lineNumber":199,"author":{"gitId":"Rishit02"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-12"},{"lineNumber":200,"author":{"gitId":"Rishit02"},"content":" + INVALID_NOK_DESC + DESCRIPTION_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2024-03-13"},{"lineNumber":201,"author":{"gitId":"Rishit02"},"content":" + TAG_DESC_FRIEND, NextOfKin.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-13"},{"lineNumber":202,"author":{"gitId":"Rishit02"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":203,"author":{"gitId":"Rishit02"},"content":" // invalid description","lastModifiedDate":"2024-03-12"},{"lineNumber":204,"author":{"gitId":"Rishit02"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-12"},{"lineNumber":205,"author":{"gitId":"Rishit02"},"content":" + NOK_DESC_BOB + INVALID_DESCRIPTION_DESC","lastModifiedDate":"2024-03-13"},{"lineNumber":206,"author":{"gitId":"Rishit02"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Description.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-13"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":208,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15"},{"lineNumber":209,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":210,"author":{"gitId":"Rishit02"},"content":" + NOK_DESC_BOB + DESCRIPTION_DESC_BOB + INVALID_TAG_DESC + VALID_TAG_FRIEND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":212,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":213,"author":{"gitId":"Rishit02"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2024-03-20"},{"lineNumber":214,"author":{"gitId":"Rishit02"},"content":" + NOK_DESC_BOB + DESCRIPTION_DESC_BOB,","lastModifiedDate":"2024-03-20"},{"lineNumber":215,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":218,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":219,"author":{"gitId":"Rishit02"},"content":" + ADDRESS_DESC_BOB + NOK_DESC_BOB + DESCRIPTION_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2024-03-20"},{"lineNumber":220,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":222,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"Rishit02":39,"-":183}},{"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":"Jolonauh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_UPDATE;","lastModifiedDate":"2024-03-17"},{"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.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":10,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-16"},{"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.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":"Jolonauh"},"content":"import seedu.address.logic.commands.UpdateCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.logic.commands.UpdateCommand.UpdatePersonDescriptor;","lastModifiedDate":"2024-03-17"},{"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.PersonBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27"},{"lineNumber":32,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.testutil.UpdatePersonDescriptorBuilder;","lastModifiedDate":"2024-03-17"},{"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":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":59,"author":{"gitId":"Jolonauh"},"content":" public void parseCommand_update() throws Exception {","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":61,"author":{"gitId":"Jolonauh"},"content":" UpdatePersonDescriptor descriptor \u003d new UpdatePersonDescriptorBuilder(person).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"Jolonauh"},"content":" UpdateCommand command \u003d (UpdateCommand) parser.parseCommand(UpdateCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"Jolonauh"},"content":" + PREFIX_UPDATE + ALICE.getName() + \" \" + PersonUtil.getUpdatePersonDescriptorDetails(descriptor));","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"Jolonauh"},"content":" assertEquals(new UpdateCommand(ALICE.getName(), descriptor), command);","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","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_find() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"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_list() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","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_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23"},{"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_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"Jolonauh":10,"-":93}},{"path":"src/test/java/seedu/address/logic/parser/UpdateCommandParserTest.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":"Jolonauh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESCRIPTION_DESC_AMY;","lastModifiedDate":"2024-03-17"},{"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":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":14,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_UPDATE_DESC;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":16,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NOK_DESC_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"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":"Jolonauh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.UPDATE_DESC_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":23,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_DESCRIPTION_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":26,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NOK_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-04"},{"lineNumber":35,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_UPDATE;","lastModifiedDate":"2024-03-17"},{"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":"Jolonauh"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":43,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.logic.commands.UpdateCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.logic.commands.UpdateCommand.UpdatePersonDescriptor;","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-04"},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-04"},{"lineNumber":49,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.testutil.UpdatePersonDescriptorBuilder;","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"Jolonauh"},"content":"public class UpdateCommandParserTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":" private static final String TAG_EMPTY \u003d \" \" + PREFIX_TAG;","lastModifiedDate":"2017-05-04"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04"},{"lineNumber":57,"author":{"gitId":"Jolonauh"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, UpdateCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":59,"author":{"gitId":"Jolonauh"},"content":" private UpdateCommandParser parser \u003d new UpdateCommandParser();","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":63,"author":{"gitId":"Jolonauh"},"content":" // no target name specified","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"Jolonauh"},"content":" assertParseFailure(parser, NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":67,"author":{"gitId":"Jolonauh"},"content":" assertParseFailure(parser, UPDATE_DESC_AMY, UpdateCommand.MESSAGE_NOT_UPDATED);","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"Jolonauh"},"content":" System.out.println(\"hi\");","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-17"},{"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":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"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":"Jolonauh"},"content":" assertParseFailure(parser, INVALID_UPDATE_DESC + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":80,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, 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":"Jolonauh"},"content":" assertParseFailure(parser, INVALID_UPDATE_DESC + \" i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-17"},{"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":"Jolonauh"},"content":" assertParseFailure(parser, UPDATE_DESC_AMY + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2024-03-17"},{"lineNumber":90,"author":{"gitId":"Jolonauh"},"content":" assertParseFailure(parser, UPDATE_DESC_AMY + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"Jolonauh"},"content":" assertParseFailure(parser, UPDATE_DESC_AMY + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"Jolonauh"},"content":" assertParseFailure(parser, UPDATE_DESC_AMY + INVALID_ADDRESS_DESC,","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"Jolonauh"},"content":" Address.MESSAGE_CONSTRAINTS); // invalid address","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"Jolonauh"},"content":" assertParseFailure(parser, UPDATE_DESC_AMY + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":96,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04"},{"lineNumber":97,"author":{"gitId":"Jolonauh"},"content":" assertParseFailure(parser, UPDATE_DESC_AMY + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":99,"author":{"gitId":"Jolonauh"},"content":" // while parsing {@code PREFIX_TAG} alone will reset the tags of the {@code Person} being updated,","lastModifiedDate":"2024-03-16"},{"lineNumber":100,"author":{"gitId":"-"},"content":" // parsing it together with a valid tag results in error","lastModifiedDate":"2017-05-04"},{"lineNumber":101,"author":{"gitId":"Jolonauh"},"content":" assertParseFailure(parser, UPDATE_DESC_AMY + TAG_DESC_FRIEND + TAG_DESC_HUSBAND + TAG_EMPTY,","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"Jolonauh"},"content":" Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"Jolonauh"},"content":" assertParseFailure(parser, UPDATE_DESC_AMY + TAG_DESC_FRIEND + TAG_EMPTY + TAG_DESC_HUSBAND,","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"Jolonauh"},"content":" Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"Jolonauh"},"content":" assertParseFailure(parser, UPDATE_DESC_AMY + TAG_EMPTY + TAG_DESC_FRIEND + TAG_DESC_HUSBAND,","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"Jolonauh"},"content":" Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":108,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04"},{"lineNumber":109,"author":{"gitId":"Jolonauh"},"content":" assertParseFailure(parser, UPDATE_DESC_AMY + INVALID_NAME_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"Jolonauh"},"content":" + VALID_ADDRESS_AMY + VALID_PHONE_AMY, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":115,"author":{"gitId":"Jolonauh"},"content":" Name targetName \u003d ALICE.getName();","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"Jolonauh"},"content":" String userInput \u003d \" \" + PREFIX_UPDATE + targetName.toString() + PHONE_DESC_BOB","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"Jolonauh"},"content":" + TAG_DESC_HUSBAND + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + NAME_DESC_AMY","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"Jolonauh"},"content":" + DESCRIPTION_DESC_AMY + NOK_DESC_BOB + TAG_DESC_FRIEND;","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":120,"author":{"gitId":"Jolonauh"},"content":" UpdatePersonDescriptor descriptor \u003d new UpdatePersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-03-16"},{"lineNumber":121,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-05-04"},{"lineNumber":122,"author":{"gitId":"Jolonauh"},"content":" .withDescription(VALID_DESCRIPTION_AMY).withNextOfKin(VALID_NOK_BOB)","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":124,"author":{"gitId":"Jolonauh"},"content":" UpdateCommand expectedCommand \u003d new UpdateCommand(targetName, descriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":130,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":131,"author":{"gitId":"Jolonauh"},"content":" Name targetName \u003d ALICE.getName();","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"Jolonauh"},"content":" String userInput \u003d \" \" + PREFIX_UPDATE + targetName.toString() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":134,"author":{"gitId":"Jolonauh"},"content":" UpdatePersonDescriptor descriptor \u003d new UpdatePersonDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-16"},{"lineNumber":135,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":136,"author":{"gitId":"Jolonauh"},"content":" UpdateCommand expectedCommand \u003d new UpdateCommand(targetName, descriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":143,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04"},{"lineNumber":144,"author":{"gitId":"Jolonauh"},"content":" Name targetName \u003d ALICE.getName();","lastModifiedDate":"2024-03-17"},{"lineNumber":145,"author":{"gitId":"Jolonauh"},"content":" String userInput \u003d \" \" + PREFIX_UPDATE + targetName.toString() + NAME_DESC_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"Jolonauh"},"content":" UpdatePersonDescriptor descriptor \u003d new UpdatePersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":147,"author":{"gitId":"Jolonauh"},"content":" UpdateCommand expectedCommand \u003d new UpdateCommand(targetName, descriptor);","lastModifiedDate":"2024-03-17"},{"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":" // phone","lastModifiedDate":"2017-05-04"},{"lineNumber":151,"author":{"gitId":"Jolonauh"},"content":" userInput \u003d \" \" + PREFIX_UPDATE + targetName.toString() + PHONE_DESC_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":152,"author":{"gitId":"Jolonauh"},"content":" descriptor \u003d new UpdatePersonDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":153,"author":{"gitId":"Jolonauh"},"content":" expectedCommand \u003d new UpdateCommand(targetName, descriptor);","lastModifiedDate":"2024-03-17"},{"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":" // email","lastModifiedDate":"2017-05-04"},{"lineNumber":157,"author":{"gitId":"Jolonauh"},"content":" userInput \u003d \" \" + PREFIX_UPDATE + targetName.toString() + EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":158,"author":{"gitId":"Jolonauh"},"content":" descriptor \u003d new UpdatePersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":159,"author":{"gitId":"Jolonauh"},"content":" expectedCommand \u003d new UpdateCommand(targetName, descriptor);","lastModifiedDate":"2024-03-17"},{"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":" // address","lastModifiedDate":"2017-05-04"},{"lineNumber":163,"author":{"gitId":"Jolonauh"},"content":" userInput \u003d \" \" + PREFIX_UPDATE + targetName.toString() + ADDRESS_DESC_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":164,"author":{"gitId":"Jolonauh"},"content":" descriptor \u003d new UpdatePersonDescriptorBuilder().withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":165,"author":{"gitId":"Jolonauh"},"content":" expectedCommand \u003d new UpdateCommand(targetName, descriptor);","lastModifiedDate":"2024-03-17"},{"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":" // tags","lastModifiedDate":"2017-05-04"},{"lineNumber":169,"author":{"gitId":"Jolonauh"},"content":" userInput \u003d \" \" + PREFIX_UPDATE + targetName.toString() + TAG_DESC_FRIEND;","lastModifiedDate":"2024-03-17"},{"lineNumber":170,"author":{"gitId":"Jolonauh"},"content":" descriptor \u003d new UpdatePersonDescriptorBuilder().withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":171,"author":{"gitId":"Jolonauh"},"content":" expectedCommand \u003d new UpdateCommand(targetName, descriptor);","lastModifiedDate":"2024-03-17"},{"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":"","lastModifiedDate":"2017-05-04"},{"lineNumber":175,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":176,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":177,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14"},{"lineNumber":178,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-07-14"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":180,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14"},{"lineNumber":181,"author":{"gitId":"Jolonauh"},"content":" Name targetName \u003d ALICE.getName();","lastModifiedDate":"2024-03-17"},{"lineNumber":182,"author":{"gitId":"Jolonauh"},"content":" String userInput \u003d \" \" + PREFIX_UPDATE + targetName.toString() + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":184,"author":{"gitId":"Jolonauh"},"content":" System.out.println(userInput);","lastModifiedDate":"2024-03-17"},{"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":" // invalid followed by valid","lastModifiedDate":"2023-07-14"},{"lineNumber":188,"author":{"gitId":"Jolonauh"},"content":" userInput \u003d \" \" + PREFIX_UPDATE + targetName.toString() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2024-03-17"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":190,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":192,"author":{"gitId":"Jolonauh"},"content":" // multiple valid fields repeated","lastModifiedDate":"2024-03-17"},{"lineNumber":193,"author":{"gitId":"Jolonauh"},"content":" userInput \u003d \" \" + PREFIX_UPDATE + targetName.toString() + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2024-03-17"},{"lineNumber":194,"author":{"gitId":"-"},"content":" + TAG_DESC_FRIEND + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + TAG_DESC_FRIEND","lastModifiedDate":"2017-05-25"},{"lineNumber":195,"author":{"gitId":"-"},"content":" + PHONE_DESC_BOB + ADDRESS_DESC_BOB + EMAIL_DESC_BOB + TAG_DESC_HUSBAND;","lastModifiedDate":"2017-05-25"},{"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":" // multiple invalid values","lastModifiedDate":"2023-07-14"},{"lineNumber":201,"author":{"gitId":"Jolonauh"},"content":" userInput \u003d \" \" + PREFIX_UPDATE + targetName.toString() + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC","lastModifiedDate":"2024-03-17"},{"lineNumber":202,"author":{"gitId":"Jolonauh"},"content":" + INVALID_EMAIL_DESC + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2024-03-17"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":204,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":205,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":206,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":208,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":209,"author":{"gitId":"-"},"content":" public void parse_resetTags_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":210,"author":{"gitId":"Jolonauh"},"content":" Name targetName \u003d ALICE.getName();","lastModifiedDate":"2024-03-17"},{"lineNumber":211,"author":{"gitId":"Jolonauh"},"content":" String userInput \u003d \" \" + PREFIX_UPDATE + targetName.toString() + TAG_EMPTY;","lastModifiedDate":"2024-03-17"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":213,"author":{"gitId":"Jolonauh"},"content":" UpdatePersonDescriptor descriptor \u003d new UpdatePersonDescriptorBuilder().withTags().build();","lastModifiedDate":"2024-03-16"},{"lineNumber":214,"author":{"gitId":"Jolonauh"},"content":" UpdateCommand expectedCommand \u003d new UpdateCommand(targetName, descriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":216,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":217,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":218,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04"}],"authorContributionMap":{"Jolonauh":76,"-":142}},{"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":"-"},"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":"Jolonauh"},"content":" Person updatedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-04-19"},{"lineNumber":51,"author":{"gitId":"Jolonauh"},"content":" List\u003cPerson\u003e newPersons \u003d Arrays.asList(ALICE, updatedAlice);","lastModifiedDate":"2024-03-16"},{"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":"Jolonauh"},"content":" Person updatedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-06"},{"lineNumber":78,"author":{"gitId":"Jolonauh"},"content":" assertTrue(addressBook.hasPerson(updatedAlice));","lastModifiedDate":"2024-03-16"},{"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":"-"},"content":"}","lastModifiedDate":"2016-12-24"}],"authorContributionMap":{"Jolonauh":4,"-":104}},{"path":"src/test/java/seedu/address/model/person/DescriptionTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Jolonauh"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-07"},{"lineNumber":2,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":3,"author":{"gitId":"Jolonauh"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-07"},{"lineNumber":4,"author":{"gitId":"Jolonauh"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-07"},{"lineNumber":5,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-07"},{"lineNumber":6,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":7,"author":{"gitId":"Jolonauh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-07"},{"lineNumber":8,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":9,"author":{"gitId":"Jolonauh"},"content":"public class DescriptionTest {","lastModifiedDate":"2024-03-07"},{"lineNumber":10,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":11,"author":{"gitId":"Jolonauh"},"content":" @Test","lastModifiedDate":"2024-03-07"},{"lineNumber":12,"author":{"gitId":"Jolonauh"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-07"},{"lineNumber":13,"author":{"gitId":"Jolonauh"},"content":" assertThrows(NullPointerException.class, () -\u003e new Description(null));","lastModifiedDate":"2024-03-07"},{"lineNumber":14,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":15,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":16,"author":{"gitId":"Jolonauh"},"content":" @Test","lastModifiedDate":"2024-03-07"},{"lineNumber":17,"author":{"gitId":"Jolonauh"},"content":" public void constructor_invalidDescription_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-07"},{"lineNumber":18,"author":{"gitId":"Jolonauh"},"content":" String invalidDescription \u003d \"\";","lastModifiedDate":"2024-03-07"},{"lineNumber":19,"author":{"gitId":"Jolonauh"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Description(invalidDescription));","lastModifiedDate":"2024-03-07"},{"lineNumber":20,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":21,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":22,"author":{"gitId":"Jolonauh"},"content":" @Test","lastModifiedDate":"2024-03-07"},{"lineNumber":23,"author":{"gitId":"Jolonauh"},"content":" public void isValidDescription() {","lastModifiedDate":"2024-03-07"},{"lineNumber":24,"author":{"gitId":"Jolonauh"},"content":" // null description","lastModifiedDate":"2024-03-07"},{"lineNumber":25,"author":{"gitId":"Jolonauh"},"content":" assertThrows(NullPointerException.class, () -\u003e Description.isValidDescription(null));","lastModifiedDate":"2024-03-07"},{"lineNumber":26,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":27,"author":{"gitId":"Jolonauh"},"content":" // invalid descriptions","lastModifiedDate":"2024-03-07"},{"lineNumber":28,"author":{"gitId":"Jolonauh"},"content":" assertFalse(Description.isValidDescription(\"\")); // empty string","lastModifiedDate":"2024-03-07"},{"lineNumber":29,"author":{"gitId":"Jolonauh"},"content":" assertFalse(Description.isValidDescription(\" \")); // spaces only","lastModifiedDate":"2024-03-07"},{"lineNumber":30,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":31,"author":{"gitId":"Jolonauh"},"content":" // valid descriptions","lastModifiedDate":"2024-03-07"},{"lineNumber":32,"author":{"gitId":"Jolonauh"},"content":" assertTrue(Description.isValidDescription(\"A young adult experiencing anxiety and \"","lastModifiedDate":"2024-03-07"},{"lineNumber":33,"author":{"gitId":"Jolonauh"},"content":" + \"depression after leaving an abusive relationship.\"));","lastModifiedDate":"2024-03-07"},{"lineNumber":34,"author":{"gitId":"Jolonauh"},"content":" assertTrue(Description.isValidDescription(\"-\")); // one character","lastModifiedDate":"2024-03-07"},{"lineNumber":35,"author":{"gitId":"Jolonauh"},"content":" assertTrue(Description.isValidDescription(","lastModifiedDate":"2024-03-07"},{"lineNumber":36,"author":{"gitId":"Jolonauh"},"content":" \"A new immigrant seeking assistance with acclimating to a new \"","lastModifiedDate":"2024-03-07"},{"lineNumber":37,"author":{"gitId":"Jolonauh"},"content":" + \"culture and finding employment.\")); // long description","lastModifiedDate":"2024-03-07"},{"lineNumber":38,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":39,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":40,"author":{"gitId":"Jolonauh"},"content":" @Test","lastModifiedDate":"2024-03-07"},{"lineNumber":41,"author":{"gitId":"Jolonauh"},"content":" public void equals() {","lastModifiedDate":"2024-03-07"},{"lineNumber":42,"author":{"gitId":"Jolonauh"},"content":" Description description \u003d new Description(\"Valid Description\");","lastModifiedDate":"2024-03-07"},{"lineNumber":43,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":44,"author":{"gitId":"Jolonauh"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-07"},{"lineNumber":45,"author":{"gitId":"Jolonauh"},"content":" assertTrue(description.equals(new Description(\"Valid Description\")));","lastModifiedDate":"2024-03-07"},{"lineNumber":46,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":47,"author":{"gitId":"Jolonauh"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-07"},{"lineNumber":48,"author":{"gitId":"Jolonauh"},"content":" assertTrue(description.equals(description));","lastModifiedDate":"2024-03-07"},{"lineNumber":49,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":50,"author":{"gitId":"Jolonauh"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-07"},{"lineNumber":51,"author":{"gitId":"Jolonauh"},"content":" assertFalse(description.equals(null));","lastModifiedDate":"2024-03-07"},{"lineNumber":52,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":53,"author":{"gitId":"Jolonauh"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-07"},{"lineNumber":54,"author":{"gitId":"Jolonauh"},"content":" assertFalse(description.equals(5.0f));","lastModifiedDate":"2024-03-07"},{"lineNumber":55,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":56,"author":{"gitId":"Jolonauh"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-07"},{"lineNumber":57,"author":{"gitId":"Jolonauh"},"content":" assertFalse(description.equals(new Description(\"Other Valid Description\")));","lastModifiedDate":"2024-03-07"},{"lineNumber":58,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":59,"author":{"gitId":"Jolonauh"},"content":"}","lastModifiedDate":"2024-03-07"}],"authorContributionMap":{"Jolonauh":59}},{"path":"src/test/java/seedu/address/model/person/NextOfKinTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Jolonauh"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-07"},{"lineNumber":2,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":3,"author":{"gitId":"Jolonauh"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-07"},{"lineNumber":4,"author":{"gitId":"Jolonauh"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-07"},{"lineNumber":5,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-07"},{"lineNumber":6,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":7,"author":{"gitId":"Jolonauh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-07"},{"lineNumber":8,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":9,"author":{"gitId":"Jolonauh"},"content":"public class NextOfKinTest {","lastModifiedDate":"2024-03-07"},{"lineNumber":10,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":11,"author":{"gitId":"Jolonauh"},"content":" @Test","lastModifiedDate":"2024-03-07"},{"lineNumber":12,"author":{"gitId":"Jolonauh"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-07"},{"lineNumber":13,"author":{"gitId":"Jolonauh"},"content":" assertThrows(NullPointerException.class, () -\u003e new NextOfKin(null));","lastModifiedDate":"2024-03-07"},{"lineNumber":14,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":15,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":16,"author":{"gitId":"Jolonauh"},"content":" @Test","lastModifiedDate":"2024-03-07"},{"lineNumber":17,"author":{"gitId":"Jolonauh"},"content":" public void constructor_invalidNextOfKin_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-07"},{"lineNumber":18,"author":{"gitId":"Jolonauh"},"content":" String invalidNextOfKin \u003d \"\";","lastModifiedDate":"2024-03-07"},{"lineNumber":19,"author":{"gitId":"Jolonauh"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new NextOfKin(invalidNextOfKin));","lastModifiedDate":"2024-03-07"},{"lineNumber":20,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":21,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":22,"author":{"gitId":"Jolonauh"},"content":" @Test","lastModifiedDate":"2024-03-07"},{"lineNumber":23,"author":{"gitId":"Jolonauh"},"content":" public void isValidNextOfKin() {","lastModifiedDate":"2024-03-07"},{"lineNumber":24,"author":{"gitId":"Jolonauh"},"content":" // null next of kin","lastModifiedDate":"2024-03-07"},{"lineNumber":25,"author":{"gitId":"Jolonauh"},"content":" assertThrows(NullPointerException.class, () -\u003e NextOfKin.isValidNextOfKin(null));","lastModifiedDate":"2024-03-07"},{"lineNumber":26,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":27,"author":{"gitId":"Jolonauh"},"content":" // invalid next of kins","lastModifiedDate":"2024-03-07"},{"lineNumber":28,"author":{"gitId":"Jolonauh"},"content":" assertFalse(NextOfKin.isValidNextOfKin(\"\")); // empty string","lastModifiedDate":"2024-03-07"},{"lineNumber":29,"author":{"gitId":"Jolonauh"},"content":" assertFalse(NextOfKin.isValidNextOfKin(\" \")); // spaces only","lastModifiedDate":"2024-03-07"},{"lineNumber":30,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":31,"author":{"gitId":"Jolonauh"},"content":" // valid next of kins","lastModifiedDate":"2024-03-07"},{"lineNumber":32,"author":{"gitId":"Jolonauh"},"content":" assertTrue(NextOfKin.isValidNextOfKin(\"Sam Sung\"));","lastModifiedDate":"2024-03-07"},{"lineNumber":33,"author":{"gitId":"Jolonauh"},"content":" assertTrue(NextOfKin.isValidNextOfKin(\"Alexander Maximilian Bartholomew Fitzwilliam III\")); // long next of kin","lastModifiedDate":"2024-03-07"},{"lineNumber":34,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":35,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":36,"author":{"gitId":"Jolonauh"},"content":" @Test","lastModifiedDate":"2024-03-07"},{"lineNumber":37,"author":{"gitId":"Jolonauh"},"content":" public void equals() {","lastModifiedDate":"2024-03-07"},{"lineNumber":38,"author":{"gitId":"Jolonauh"},"content":" NextOfKin nextOfKin \u003d new NextOfKin(\"Valid NextOfKin\");","lastModifiedDate":"2024-03-07"},{"lineNumber":39,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":40,"author":{"gitId":"Jolonauh"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-07"},{"lineNumber":41,"author":{"gitId":"Jolonauh"},"content":" assertTrue(nextOfKin.equals(new NextOfKin(\"Valid NextOfKin\")));","lastModifiedDate":"2024-03-07"},{"lineNumber":42,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":43,"author":{"gitId":"Jolonauh"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-07"},{"lineNumber":44,"author":{"gitId":"Jolonauh"},"content":" assertTrue(nextOfKin.equals(nextOfKin));","lastModifiedDate":"2024-03-07"},{"lineNumber":45,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":46,"author":{"gitId":"Jolonauh"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-07"},{"lineNumber":47,"author":{"gitId":"Jolonauh"},"content":" assertFalse(nextOfKin.equals(null));","lastModifiedDate":"2024-03-07"},{"lineNumber":48,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":49,"author":{"gitId":"Jolonauh"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-07"},{"lineNumber":50,"author":{"gitId":"Jolonauh"},"content":" assertFalse(nextOfKin.equals(5.0f));","lastModifiedDate":"2024-03-07"},{"lineNumber":51,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":52,"author":{"gitId":"Jolonauh"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-07"},{"lineNumber":53,"author":{"gitId":"Jolonauh"},"content":" assertFalse(nextOfKin.equals(new NextOfKin(\"Other Valid NextOfKin\")));","lastModifiedDate":"2024-03-07"},{"lineNumber":54,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":55,"author":{"gitId":"Jolonauh"},"content":"}","lastModifiedDate":"2024-03-07"}],"authorContributionMap":{"Jolonauh":55}},{"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":"2024-03-07"},{"lineNumber":7,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_DESCRIPTION_BOB;","lastModifiedDate":"2024-03-07"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-07"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-07"},{"lineNumber":10,"author":{"gitId":"Jolonauh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NOK_BOB;","lastModifiedDate":"2024-03-07"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-07"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-03-07"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":25,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2018-03-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTags().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18"},{"lineNumber":38,"author":{"gitId":"Jolonauh"},"content":" Person updatedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"Jolonauh"},"content":" .withAddress(VALID_ADDRESS_BOB).withDescription(VALID_DESCRIPTION_BOB)","lastModifiedDate":"2024-03-07"},{"lineNumber":40,"author":{"gitId":"Jolonauh"},"content":" .withNextOfKin(VALID_NOK_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-03-07"},{"lineNumber":41,"author":{"gitId":"Jolonauh"},"content":" assertTrue(ALICE.isSamePerson(updatedAlice));","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":44,"author":{"gitId":"Jolonauh"},"content":" updatedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"Jolonauh"},"content":" assertFalse(ALICE.isSamePerson(updatedAlice));","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":48,"author":{"gitId":"Jolonauh"},"content":" Person updatedBob \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"Jolonauh"},"content":" assertFalse(BOB.isSamePerson(updatedBob));","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18"},{"lineNumber":53,"author":{"gitId":"Jolonauh"},"content":" updatedBob \u003d new PersonBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"Jolonauh"},"content":" assertFalse(BOB.isSamePerson(updatedBob));","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":76,"author":{"gitId":"Jolonauh"},"content":" Person updatedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"Jolonauh"},"content":" assertFalse(ALICE.equals(updatedAlice));","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"Jolonauh"},"content":" updatedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"Jolonauh"},"content":" assertFalse(ALICE.equals(updatedAlice));","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":84,"author":{"gitId":"Jolonauh"},"content":" updatedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"Jolonauh"},"content":" assertFalse(ALICE.equals(updatedAlice));","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":88,"author":{"gitId":"Jolonauh"},"content":" updatedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":89,"author":{"gitId":"Jolonauh"},"content":" assertFalse(ALICE.equals(updatedAlice));","lastModifiedDate":"2024-03-16"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18"},{"lineNumber":91,"author":{"gitId":"Jolonauh"},"content":" // different description -\u003e returns false","lastModifiedDate":"2024-03-07"},{"lineNumber":92,"author":{"gitId":"Jolonauh"},"content":" updatedAlice \u003d new PersonBuilder(ALICE).withDescription(VALID_DESCRIPTION_BOB).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":93,"author":{"gitId":"Jolonauh"},"content":" assertFalse(ALICE.equals(updatedAlice));","lastModifiedDate":"2024-03-16"},{"lineNumber":94,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":95,"author":{"gitId":"Jolonauh"},"content":" // different next of kin -\u003e returns false","lastModifiedDate":"2024-03-07"},{"lineNumber":96,"author":{"gitId":"Jolonauh"},"content":" updatedAlice \u003d new PersonBuilder(ALICE).withNextOfKin(VALID_NOK_BOB).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":97,"author":{"gitId":"Jolonauh"},"content":" assertFalse(ALICE.equals(updatedAlice));","lastModifiedDate":"2024-03-16"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":99,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18"},{"lineNumber":100,"author":{"gitId":"Jolonauh"},"content":" updatedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":101,"author":{"gitId":"Jolonauh"},"content":" assertFalse(ALICE.equals(updatedAlice));","lastModifiedDate":"2024-03-16"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"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":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2019-02-23"},{"lineNumber":107,"author":{"gitId":"Jolonauh"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", address\u003d\" + ALICE.getAddress() + \", description\u003d\"","lastModifiedDate":"2024-03-07"},{"lineNumber":108,"author":{"gitId":"Jolonauh"},"content":" + ALICE.getDescription() + \", nextOfKin\u003d\" + ALICE.getNextOfKin() + \", tags\u003d\" + ALICE.getTags() + \"}\";","lastModifiedDate":"2024-03-07"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"Jolonauh":31,"-":80}},{"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":"Jolonauh"},"content":" Person updatedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08"},{"lineNumber":47,"author":{"gitId":"Jolonauh"},"content":" assertTrue(uniquePersonList.contains(updatedAlice));","lastModifiedDate":"2024-03-16"},{"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":"Jolonauh"},"content":" public void setPerson_nullUpdatedPerson_throwsNullPointerException() {","lastModifiedDate":"2024-03-16"},{"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":"Jolonauh"},"content":" public void setPerson_updatedPersonIsSamePerson_success() {","lastModifiedDate":"2024-03-16"},{"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":"Jolonauh"},"content":" public void setPerson_updatedPersonHasSameIdentity_success() {","lastModifiedDate":"2024-03-16"},{"lineNumber":87,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":88,"author":{"gitId":"Jolonauh"},"content":" Person updatedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-03-16"},{"lineNumber":89,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08"},{"lineNumber":90,"author":{"gitId":"Jolonauh"},"content":" uniquePersonList.setPerson(ALICE, updatedAlice);","lastModifiedDate":"2024-03-16"},{"lineNumber":91,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":92,"author":{"gitId":"Jolonauh"},"content":" expectedUniquePersonList.add(updatedAlice);","lastModifiedDate":"2024-03-16"},{"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":"Jolonauh"},"content":" public void setPerson_updatedPersonHasDifferentIdentity_success() {","lastModifiedDate":"2024-03-16"},{"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":"Jolonauh"},"content":" public void setPerson_updatedPersonHasNonUniqueIdentity_throwsDuplicatePersonException() {","lastModifiedDate":"2024-03-16"},{"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":{"Jolonauh":10,"-":165}},{"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":"Jolonauh"},"content":"import seedu.address.model.person.Description;","lastModifiedDate":"2024-03-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.model.person.NextOfKin;","lastModifiedDate":"2024-03-07"},{"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":"Jolonauh"},"content":" private static final String INVALID_DESCRIPTION \u003d \" \";","lastModifiedDate":"2024-03-07"},{"lineNumber":28,"author":{"gitId":"Jolonauh"},"content":" private static final String INVALID_NOK \u003d \" \";","lastModifiedDate":"2024-03-07"},{"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":"Jolonauh"},"content":" private static final String VALID_DESCRIPTION \u003d BENSON.getDescription().toString();","lastModifiedDate":"2024-03-07"},{"lineNumber":36,"author":{"gitId":"Jolonauh"},"content":" private static final String VALID_NOK \u003d BENSON.getNextOfKin().toString();","lastModifiedDate":"2024-03-07"},{"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":"Jolonauh"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE,","lastModifiedDate":"2024-03-07"},{"lineNumber":50,"author":{"gitId":"Jolonauh"},"content":" VALID_EMAIL, VALID_ADDRESS, VALID_DESCRIPTION, VALID_NOK, VALID_TAGS);","lastModifiedDate":"2024-03-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-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 toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"Jolonauh"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_PHONE,","lastModifiedDate":"2024-03-07"},{"lineNumber":58,"author":{"gitId":"Jolonauh"},"content":" VALID_EMAIL, VALID_ADDRESS, VALID_DESCRIPTION, VALID_NOK, VALID_TAGS);","lastModifiedDate":"2024-03-07"},{"lineNumber":59,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-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 toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"Jolonauh"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE,","lastModifiedDate":"2024-03-07"},{"lineNumber":66,"author":{"gitId":"Jolonauh"},"content":" VALID_EMAIL, VALID_ADDRESS, VALID_DESCRIPTION, VALID_NOK, VALID_TAGS);","lastModifiedDate":"2024-03-07"},{"lineNumber":67,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"Jolonauh"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null,","lastModifiedDate":"2024-03-07"},{"lineNumber":74,"author":{"gitId":"Jolonauh"},"content":" VALID_EMAIL, VALID_ADDRESS, VALID_DESCRIPTION, VALID_NOK, VALID_TAGS);","lastModifiedDate":"2024-03-07"},{"lineNumber":75,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","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_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"Jolonauh"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE,","lastModifiedDate":"2024-03-07"},{"lineNumber":82,"author":{"gitId":"Jolonauh"},"content":" INVALID_EMAIL, VALID_ADDRESS, VALID_DESCRIPTION, VALID_NOK, VALID_TAGS);","lastModifiedDate":"2024-03-07"},{"lineNumber":83,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.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":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"Jolonauh"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE,","lastModifiedDate":"2024-03-07"},{"lineNumber":90,"author":{"gitId":"Jolonauh"},"content":" null, VALID_ADDRESS, VALID_DESCRIPTION, VALID_NOK, VALID_TAGS);","lastModifiedDate":"2024-03-07"},{"lineNumber":91,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"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_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"Jolonauh"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE,","lastModifiedDate":"2024-03-07"},{"lineNumber":98,"author":{"gitId":"Jolonauh"},"content":" VALID_EMAIL, INVALID_ADDRESS, VALID_DESCRIPTION, VALID_NOK, VALID_TAGS);","lastModifiedDate":"2024-03-07"},{"lineNumber":99,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"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_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"Jolonauh"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE,","lastModifiedDate":"2024-03-07"},{"lineNumber":106,"author":{"gitId":"Jolonauh"},"content":" VALID_EMAIL, null, VALID_DESCRIPTION, VALID_NOK, VALID_TAGS);","lastModifiedDate":"2024-03-07"},{"lineNumber":107,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2024-03-07"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-07"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":111,"author":{"gitId":"Jolonauh"},"content":" @Test","lastModifiedDate":"2024-03-07"},{"lineNumber":112,"author":{"gitId":"Jolonauh"},"content":" public void toModelType_invalidDescription_throwsIllegalValueException() {","lastModifiedDate":"2024-03-07"},{"lineNumber":113,"author":{"gitId":"Jolonauh"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE,","lastModifiedDate":"2024-03-07"},{"lineNumber":114,"author":{"gitId":"Jolonauh"},"content":" VALID_EMAIL, VALID_ADDRESS, INVALID_DESCRIPTION, VALID_NOK, VALID_TAGS);","lastModifiedDate":"2024-03-07"},{"lineNumber":115,"author":{"gitId":"Jolonauh"},"content":" String expectedMessage \u003d Description.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-07"},{"lineNumber":116,"author":{"gitId":"Jolonauh"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-07"},{"lineNumber":117,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":118,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":119,"author":{"gitId":"Jolonauh"},"content":" @Test","lastModifiedDate":"2024-03-07"},{"lineNumber":120,"author":{"gitId":"Jolonauh"},"content":" public void toModelType_nullDescription_throwsIllegalValueException() {","lastModifiedDate":"2024-03-07"},{"lineNumber":121,"author":{"gitId":"Jolonauh"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE,","lastModifiedDate":"2024-03-07"},{"lineNumber":122,"author":{"gitId":"Jolonauh"},"content":" VALID_EMAIL, VALID_ADDRESS, null, VALID_NOK, VALID_TAGS);","lastModifiedDate":"2024-03-07"},{"lineNumber":123,"author":{"gitId":"Jolonauh"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Description.class.getSimpleName());","lastModifiedDate":"2024-03-07"},{"lineNumber":124,"author":{"gitId":"Jolonauh"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-07"},{"lineNumber":125,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":126,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":127,"author":{"gitId":"Jolonauh"},"content":" @Test","lastModifiedDate":"2024-03-07"},{"lineNumber":128,"author":{"gitId":"Jolonauh"},"content":" public void toModelType_invalidNextOfKin_throwsIllegalValueException() {","lastModifiedDate":"2024-03-07"},{"lineNumber":129,"author":{"gitId":"Jolonauh"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE,","lastModifiedDate":"2024-03-07"},{"lineNumber":130,"author":{"gitId":"Jolonauh"},"content":" VALID_EMAIL, VALID_ADDRESS, VALID_DESCRIPTION, INVALID_NOK, VALID_TAGS);","lastModifiedDate":"2024-03-07"},{"lineNumber":131,"author":{"gitId":"Jolonauh"},"content":" String expectedMessage \u003d NextOfKin.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-07"},{"lineNumber":132,"author":{"gitId":"Jolonauh"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-07"},{"lineNumber":133,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-07"},{"lineNumber":134,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":135,"author":{"gitId":"Jolonauh"},"content":" @Test","lastModifiedDate":"2024-03-07"},{"lineNumber":136,"author":{"gitId":"Jolonauh"},"content":" public void toModelType_nullNextOfKin_throwsIllegalValueException() {","lastModifiedDate":"2024-03-07"},{"lineNumber":137,"author":{"gitId":"Jolonauh"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE,","lastModifiedDate":"2024-03-07"},{"lineNumber":138,"author":{"gitId":"Jolonauh"},"content":" VALID_EMAIL, VALID_ADDRESS, VALID_DESCRIPTION, null, VALID_TAGS);","lastModifiedDate":"2024-03-07"},{"lineNumber":139,"author":{"gitId":"Jolonauh"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, NextOfKin.class.getSimpleName());","lastModifiedDate":"2024-03-07"},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":144,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":145,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13"},{"lineNumber":146,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13"},{"lineNumber":147,"author":{"gitId":"Jolonauh"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE,","lastModifiedDate":"2024-03-07"},{"lineNumber":148,"author":{"gitId":"Jolonauh"},"content":" VALID_EMAIL, VALID_ADDRESS, VALID_DESCRIPTION, VALID_NOK, invalidTags);","lastModifiedDate":"2024-03-07"},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"Jolonauh":53,"-":99}},{"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":"2024-03-07"},{"lineNumber":7,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.model.person.Description;","lastModifiedDate":"2024-03-07"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-07"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-07"},{"lineNumber":10,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.model.person.NextOfKin;","lastModifiedDate":"2024-03-07"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-07"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-07"},{"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":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05"},{"lineNumber":25,"author":{"gitId":"Rishit02"},"content":" public static final String DEFAULT_DESCRIPTION \u003d \"Blood Disorder\";","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"Rishit02"},"content":" public static final String DEFAULT_NOK \u003d \"Ben Bee\";","lastModifiedDate":"2024-03-12"},{"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":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20"},{"lineNumber":32,"author":{"gitId":"Jolonauh"},"content":" private Description description;","lastModifiedDate":"2024-03-06"},{"lineNumber":33,"author":{"gitId":"Jolonauh"},"content":" private NextOfKin nextOfKin;","lastModifiedDate":"2024-03-06"},{"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":"-"},"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":"Jolonauh"},"content":" description \u003d new Description(DEFAULT_DESCRIPTION);","lastModifiedDate":"2024-03-06"},{"lineNumber":45,"author":{"gitId":"Jolonauh"},"content":" nextOfKin \u003d new NextOfKin(DEFAULT_NOK);","lastModifiedDate":"2024-03-06"},{"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":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20"},{"lineNumber":57,"author":{"gitId":"Jolonauh"},"content":" description \u003d personToCopy.getDescription();","lastModifiedDate":"2024-03-06"},{"lineNumber":58,"author":{"gitId":"Jolonauh"},"content":" nextOfKin \u003d personToCopy.getNextOfKin();","lastModifiedDate":"2024-03-06"},{"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":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":71,"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":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String ... tags) {","lastModifiedDate":"2017-08-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2017-12-20"},{"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":"2017-07-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":82,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of 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 withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","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 Email} 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 withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","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":"Jolonauh"},"content":" /**","lastModifiedDate":"2024-03-07"},{"lineNumber":103,"author":{"gitId":"Jolonauh"},"content":" * Sets the {@code Description} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-07"},{"lineNumber":104,"author":{"gitId":"Jolonauh"},"content":" */","lastModifiedDate":"2024-03-07"},{"lineNumber":105,"author":{"gitId":"Jolonauh"},"content":" public PersonBuilder withDescription(String description) {","lastModifiedDate":"2024-03-06"},{"lineNumber":106,"author":{"gitId":"Jolonauh"},"content":" this.description \u003d new Description(description);","lastModifiedDate":"2024-03-06"},{"lineNumber":107,"author":{"gitId":"Jolonauh"},"content":" return this;","lastModifiedDate":"2024-03-06"},{"lineNumber":108,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":109,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":110,"author":{"gitId":"Jolonauh"},"content":" /**","lastModifiedDate":"2024-03-07"},{"lineNumber":111,"author":{"gitId":"Jolonauh"},"content":" * Sets the {@code NextOfKin} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-07"},{"lineNumber":112,"author":{"gitId":"Jolonauh"},"content":" */","lastModifiedDate":"2024-03-07"},{"lineNumber":113,"author":{"gitId":"Jolonauh"},"content":" public PersonBuilder withNextOfKin(String nextOfKin) {","lastModifiedDate":"2024-03-06"},{"lineNumber":114,"author":{"gitId":"Jolonauh"},"content":" this.nextOfKin \u003d new NextOfKin(nextOfKin);","lastModifiedDate":"2024-03-06"},{"lineNumber":115,"author":{"gitId":"Jolonauh"},"content":" return this;","lastModifiedDate":"2024-03-06"},{"lineNumber":116,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-06"},{"lineNumber":117,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05"},{"lineNumber":119,"author":{"gitId":"Jolonauh"},"content":" return new Person(name, phone, email, address, description, nextOfKin, tags);","lastModifiedDate":"2024-03-06"},{"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":{"Jolonauh":25,"Rishit02":2,"-":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":"Jolonauh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DESCRIPTION;","lastModifiedDate":"2024-03-07"},{"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":"Jolonauh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NOK;","lastModifiedDate":"2024-03-07"},{"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":"Jolonauh"},"content":"import seedu.address.logic.commands.UpdateCommand.UpdatePersonDescriptor;","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":" sb.append(PREFIX_PHONE + person.getPhone().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":37,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":38,"author":{"gitId":"-"},"content":" sb.append(PREFIX_ADDRESS + person.getAddress().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":39,"author":{"gitId":"Rishit02"},"content":" sb.append(PREFIX_DESCRIPTION + person.getDescription().value + \" \");","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"Rishit02"},"content":" sb.append(PREFIX_NOK + person.getNextOfKin().value + \" \");","lastModifiedDate":"2024-03-14"},{"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":"Jolonauh"},"content":" * Returns the part of command string for the given {@code UpdatePersonDescriptor}\u0027s details.","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26"},{"lineNumber":50,"author":{"gitId":"Jolonauh"},"content":" public static String getUpdatePersonDescriptorDetails(UpdatePersonDescriptor descriptor) {","lastModifiedDate":"2024-03-18"},{"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":"Jolonauh"},"content":" descriptor.getDescription().ifPresent(","lastModifiedDate":"2024-03-07"},{"lineNumber":57,"author":{"gitId":"Jolonauh"},"content":" description -\u003e sb.append(PREFIX_DESCRIPTION).append(description.value).append(\" \"));","lastModifiedDate":"2024-03-07"},{"lineNumber":58,"author":{"gitId":"Jolonauh"},"content":" descriptor.getNextOfKin().ifPresent(nextOfKin -\u003e sb.append(PREFIX_NOK).append(nextOfKin.value).append(\" \"));","lastModifiedDate":"2024-03-07"},{"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":{"Jolonauh":8,"Rishit02":2,"-":59}},{"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":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"Rishit02"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_DESCRIPTION_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"Rishit02"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_DESCRIPTION_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"Rishit02"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NOK_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"Rishit02"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NOK_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"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":"Jolonauh"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\")","lastModifiedDate":"2024-03-07"},{"lineNumber":32,"author":{"gitId":"Jolonauh"},"content":" .withEmail(\"alice@example.com\").withPhone(\"94351253\")","lastModifiedDate":"2024-03-07"},{"lineNumber":33,"author":{"gitId":"Jolonauh"},"content":" .withDescription(\"A young adult experiencing anxiety and depression after leaving an abusive relationship.\")","lastModifiedDate":"2024-03-07"},{"lineNumber":34,"author":{"gitId":"Jolonauh"},"content":" .withNextOfKin(\"Sam Sung\").withTags(\"friends\").build();","lastModifiedDate":"2024-03-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10"},{"lineNumber":36,"author":{"gitId":"-"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2017-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2017-04-05"},{"lineNumber":38,"author":{"gitId":"Jolonauh"},"content":" .withDescription(\"A new immigrant seeking assistance with \"","lastModifiedDate":"2024-03-07"},{"lineNumber":39,"author":{"gitId":"Jolonauh"},"content":" + \"acclimating to a new culture and finding employment.\")","lastModifiedDate":"2024-03-07"},{"lineNumber":40,"author":{"gitId":"Jolonauh"},"content":" .withNextOfKin(\"Alexander Maximilian Bartholomew Fitzwilliam III\")","lastModifiedDate":"2024-03-07"},{"lineNumber":41,"author":{"gitId":"-"},"content":" .withTags(\"owesMoney\", \"friends\").build();","lastModifiedDate":"2016-09-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2018-01-10"},{"lineNumber":43,"author":{"gitId":"Rishit02"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\")","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"Rishit02"},"content":" .withDescription(\"Description placeholder\")","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"Rishit02"},"content":" .withNextOfKin(\"Sam Sung\").build();","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2018-01-10"},{"lineNumber":47,"author":{"gitId":"Rishit02"},"content":" .withDescription(\"Description placeholder\")","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"Rishit02"},"content":" .withNextOfKin(\"Sam Sung\")","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"-"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\").withTags(\"friends\").build();","lastModifiedDate":"2018-03-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2018-01-10"},{"lineNumber":51,"author":{"gitId":"Rishit02"},"content":" .withDescription(\"Description placeholder\")","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"Rishit02"},"content":" .withNextOfKin(\"Sam Sung\")","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"-"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2018-01-10"},{"lineNumber":55,"author":{"gitId":"Rishit02"},"content":" .withDescription(\"Description placeholder\")","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"Rishit02"},"content":" .withNextOfKin(\"Sam Sung\")","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"-"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2018-01-10"},{"lineNumber":59,"author":{"gitId":"Rishit02"},"content":" .withDescription(\"Description placeholder\")","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"Rishit02"},"content":" .withNextOfKin(\"Sam Sung\")","lastModifiedDate":"2024-03-14"},{"lineNumber":61,"author":{"gitId":"-"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2018-01-10"},{"lineNumber":65,"author":{"gitId":"Rishit02"},"content":" .withDescription(\"Description placeholder\")","lastModifiedDate":"2024-03-14"},{"lineNumber":66,"author":{"gitId":"Rishit02"},"content":" .withNextOfKin(\"Sam Sung\")","lastModifiedDate":"2024-03-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2018-01-10"},{"lineNumber":69,"author":{"gitId":"Rishit02"},"content":" .withDescription(\"Description placeholder\")","lastModifiedDate":"2024-03-14"},{"lineNumber":70,"author":{"gitId":"Rishit02"},"content":" .withNextOfKin(\"Sam Sung\")","lastModifiedDate":"2024-03-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2018-01-10"},{"lineNumber":75,"author":{"gitId":"Rishit02"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2024-03-14"},{"lineNumber":76,"author":{"gitId":"Rishit02"},"content":" .withNextOfKin(VALID_NOK_AMY).withDescription(VALID_DESCRIPTION_AMY).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-03-14"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2018-01-10"},{"lineNumber":78,"author":{"gitId":"Rishit02"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-03-14"},{"lineNumber":79,"author":{"gitId":"Rishit02"},"content":" .withDescription(VALID_DESCRIPTION_BOB).withNextOfKin(VALID_NOK_BOB)","lastModifiedDate":"2024-03-14"},{"lineNumber":80,"author":{"gitId":"Rishit02"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2024-03-14"},{"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":{"Rishit02":24,"Jolonauh":7,"-":70}},{"path":"src/test/java/seedu/address/testutil/UpdatePersonDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Jolonauh"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"Jolonauh"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"Jolonauh"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"Jolonauh"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.logic.commands.UpdateCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.logic.commands.UpdateCommand.UpdatePersonDescriptor;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.model.person.Description;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.model.person.NextOfKin;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"Jolonauh"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"Jolonauh"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"Jolonauh"},"content":" * A utility class to help with building UpdatePersonDescriptor objects.","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"Jolonauh"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"Jolonauh"},"content":"public class UpdatePersonDescriptorBuilder {","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"Jolonauh"},"content":" private UpdateCommand.UpdatePersonDescriptor descriptor;","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"Jolonauh"},"content":" public UpdatePersonDescriptorBuilder() {","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"Jolonauh"},"content":" descriptor \u003d new UpdatePersonDescriptor();","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"Jolonauh"},"content":" public UpdatePersonDescriptorBuilder(UpdateCommand.UpdatePersonDescriptor descriptor) {","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"Jolonauh"},"content":" this.descriptor \u003d new UpdateCommand.UpdatePersonDescriptor(descriptor);","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"Jolonauh"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"Jolonauh"},"content":" * Returns an {@code UpdatePersonDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"Jolonauh"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"Jolonauh"},"content":" public UpdatePersonDescriptorBuilder(Person person) {","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"Jolonauh"},"content":" descriptor \u003d new UpdateCommand.UpdatePersonDescriptor();","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"Jolonauh"},"content":" descriptor.setName(person.getName());","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"Jolonauh"},"content":" descriptor.setPhone(person.getPhone());","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"Jolonauh"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"Jolonauh"},"content":" descriptor.setAddress(person.getAddress());","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"Jolonauh"},"content":" descriptor.setDescription(person.getDescription());","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"Jolonauh"},"content":" descriptor.setNextOfKin(person.getNextOfKin());","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"Jolonauh"},"content":" descriptor.setTags(person.getTags());","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"Jolonauh"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"Jolonauh"},"content":" * Sets the {@code Name} of the {@code UpdatePersonDescriptor} that we are building.","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"Jolonauh"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"Jolonauh"},"content":" public UpdatePersonDescriptorBuilder withName(String name) {","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"Jolonauh"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"Jolonauh"},"content":" return this;","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"Jolonauh"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"Jolonauh"},"content":" * Sets the {@code Phone} of the {@code UpdatePersonDescriptor} that we are building.","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"Jolonauh"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"Jolonauh"},"content":" public UpdatePersonDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"Jolonauh"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"Jolonauh"},"content":" return this;","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"Jolonauh"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"Jolonauh"},"content":" * Sets the {@code Email} of the {@code UpdatePersonDescriptor} that we are building.","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"Jolonauh"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"Jolonauh"},"content":" public UpdatePersonDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"Jolonauh"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"Jolonauh"},"content":" return this;","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"Jolonauh"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"Jolonauh"},"content":" * Sets the {@code Address} of the {@code UpdatePersonDescriptor} that we are building.","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"Jolonauh"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"Jolonauh"},"content":" public UpdatePersonDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"Jolonauh"},"content":" descriptor.setAddress(new Address(address));","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"Jolonauh"},"content":" return this;","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"Jolonauh"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"Jolonauh"},"content":" * Sets the {@code Address} of the {@code UpdatePersonDescriptor} that we are building.","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"Jolonauh"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"Jolonauh"},"content":" public UpdatePersonDescriptorBuilder withDescription(String description) {","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"Jolonauh"},"content":" descriptor.setDescription(new Description(description));","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"Jolonauh"},"content":" return this;","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":87,"author":{"gitId":"Jolonauh"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":88,"author":{"gitId":"Jolonauh"},"content":" * Sets the {@code Address} of the {@code UpdatePersonDescriptor} that we are building.","lastModifiedDate":"2024-03-16"},{"lineNumber":89,"author":{"gitId":"Jolonauh"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":90,"author":{"gitId":"Jolonauh"},"content":" public UpdatePersonDescriptorBuilder withNextOfKin(String nextOfKin) {","lastModifiedDate":"2024-03-16"},{"lineNumber":91,"author":{"gitId":"Jolonauh"},"content":" descriptor.setNextOfKin(new NextOfKin(nextOfKin));","lastModifiedDate":"2024-03-16"},{"lineNumber":92,"author":{"gitId":"Jolonauh"},"content":" return this;","lastModifiedDate":"2024-03-16"},{"lineNumber":93,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":94,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":95,"author":{"gitId":"Jolonauh"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":96,"author":{"gitId":"Jolonauh"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code UpdatePersonDescriptor}","lastModifiedDate":"2024-03-16"},{"lineNumber":97,"author":{"gitId":"Jolonauh"},"content":" * that we are building.","lastModifiedDate":"2024-03-16"},{"lineNumber":98,"author":{"gitId":"Jolonauh"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":99,"author":{"gitId":"Jolonauh"},"content":" public UpdatePersonDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2024-03-16"},{"lineNumber":100,"author":{"gitId":"Jolonauh"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2024-03-16"},{"lineNumber":101,"author":{"gitId":"Jolonauh"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2024-03-16"},{"lineNumber":102,"author":{"gitId":"Jolonauh"},"content":" return this;","lastModifiedDate":"2024-03-16"},{"lineNumber":103,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":104,"author":{"gitId":"Jolonauh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":105,"author":{"gitId":"Jolonauh"},"content":" public UpdateCommand.UpdatePersonDescriptor build() {","lastModifiedDate":"2024-03-16"},{"lineNumber":106,"author":{"gitId":"Jolonauh"},"content":" return descriptor;","lastModifiedDate":"2024-03-16"},{"lineNumber":107,"author":{"gitId":"Jolonauh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":108,"author":{"gitId":"Jolonauh"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"Jolonauh":108}}] diff --git a/AY2324S2-CS2103T-W12-4_tp_master/commits.json b/AY2324S2-CS2103T-W12-4_tp_master/commits.json index 0d06e510..caab3ca2 100644 --- a/AY2324S2-CS2103T-W12-4_tp_master/commits.json +++ b/AY2324S2-CS2103T-W12-4_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"pjanthony2001":[{"date":"2024-02-26","commitResults":[{"hash":"7665bee74b36f97ff2f05c20f8d0bdb853450c80","isMergeCommit":false,"messageTitle":"Update Developer Guide","messageBody":"This is for testing project workflow\n","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"5c329c6effd42c5272dba7e928ca6711335ae3d2","isMergeCommit":false,"messageTitle":"Add pjanthony.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":9}}},{"hash":"7288d01e926b5eaf11b90bebb4062e183fda2068","isMergeCommit":false,"messageTitle":"Update pjanthony.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":2}}},{"hash":"3e59d8d14a0c9c6968e674291292a4336d93f01c","isMergeCommit":true,"messageTitle":"Merge pull request #7 from eliotlee68/User-guide","messageBody":"Added initial user guide","fileTypesAndContributionMap":{}}]},{"date":"2024-03-01","commitResults":[{"hash":"c01615781527772a6487452c0c6fd20b8d4789c0","isMergeCommit":false,"messageTitle":"Update Developer Guide","messageBody":"Initial commit where small changes were made to the product scope\n","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":2}}}]},{"date":"2024-03-02","commitResults":[{"hash":"49bb5408b45c982bd0e214a788d1795968bf4289","isMergeCommit":false,"messageTitle":"Update Developer Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":83,"deletions":2}}}]},{"date":"2024-03-03","commitResults":[{"hash":"47f8609c8d1c78abef1b537696ae0a840e32e1f5","isMergeCommit":false,"messageTitle":"Update Use Cases","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":22,"deletions":14}}},{"hash":"cb048fed7f723e798ba68542fce379d65b9d9b9d","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into developer-guide","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"33a4bfa9c3b49d164192d266bfafa27748d9b379","isMergeCommit":true,"messageTitle":"Merge pull request #12 from Jolonauh/about-us","messageBody":"Update AboutUs page","fileTypesAndContributionMap":{}}]},{"date":"2024-03-06","commitResults":[{"hash":"f2b08d313861b2eb82cce0dbc439106d52b5c143","isMergeCommit":false,"messageTitle":"Update DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-11","commitResults":[{"hash":"4dd7dcd2a6b3c159cdef16263776d316e6e92315","isMergeCommit":true,"messageTitle":"Merge pull request #25 from Jolonauh/update-person-class","messageBody":"Update Person class and tests","fileTypesAndContributionMap":{}}]},{"date":"2024-03-18","commitResults":[{"hash":"5d71f72ef602e310817808d7c10e9facc042ff7d","isMergeCommit":true,"messageTitle":"Merge pull request #34 from Jolonauh/update-command","messageBody":"Change edit command to update command","fileTypesAndContributionMap":{}}]},{"date":"2024-03-19","commitResults":[{"hash":"763d663a4b05ac47b1074deba10ec1bec25c5d9f","isMergeCommit":true,"messageTitle":"Merge pull request #42 from tejas-1405/add-quickstart-UG","messageBody":"Add Quick start to UG","fileTypesAndContributionMap":{}},{"hash":"78127e815a61b78254f6c23b858a6eb86d840a02","isMergeCommit":true,"messageTitle":"Merge pull request #41 from eliotlee68/40-UG-Addcommand-Section","messageBody":"Edited UG add command section to include next of kin","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"4f028276366808199634bed7a8bf48a8555605f2","isMergeCommit":true,"messageTitle":"Merge pull request #44 from Rishit02/fix-add-command-messages","messageBody":"Fix add command bugs","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"0fb4268571d6a22dfa0ad16a3b3fbed769e99a3d","isMergeCommit":false,"messageTitle":"Update Error Message for Update Command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":2}}}]},{"date":"2024-03-22","commitResults":[{"hash":"64ba16c3b7537a1749a9a049f882e3698af2fda0","isMergeCommit":false,"messageTitle":"Update UML","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":39,"deletions":28}}}]}],"tejas-1405":[{"date":"2024-02-26","commitResults":[{"hash":"0021bf390dc434989eca3e2cb04e6d9fc4431f47","isMergeCommit":true,"messageTitle":"Merge pull request #5 from pjanthony2001/add-pjanthony-info","messageBody":"Add pjanthony info","fileTypesAndContributionMap":{}}]},{"date":"2024-03-03","commitResults":[{"hash":"1af41f3d871e4a392d5d774e46b6a0dd75ca5c17","isMergeCommit":false,"messageTitle":"Add NFRs and Glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":1}}},{"hash":"130dc9e3bc7118347c10169222e7bda2bf7db177","isMergeCommit":false,"messageTitle":"Add glossary terms","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"6eaeffafd069573622948e0cd06b6935d6aacb6f","isMergeCommit":false,"messageTitle":"Remove 5th NFR","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":4}}}]},{"date":"2024-03-19","commitResults":[{"hash":"3b5e7846e0fe93e16bd4b93838d583c360716e5e","isMergeCommit":false,"messageTitle":"Add Quick start to UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":2}}}]}],"Jolonauh":[{"date":"2024-02-29","commitResults":[{"hash":"0d292263860c9729fe771be9bc9d418e09ce4a99","isMergeCommit":false,"messageTitle":"Update AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":220,"deletions":25}}},{"hash":"15b85b54f50a363e5563011c35c34690f7d12b3d","isMergeCommit":false,"messageTitle":"Rename profile photos","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}}]},{"date":"2024-03-03","commitResults":[{"hash":"0b0610b73d0779626c9b551bf3c9d1363e3e1081","isMergeCommit":false,"messageTitle":"Add responsibilities to team members","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"311f07006b248480aced2eb1da970eb6524053e5","isMergeCommit":true,"messageTitle":"Merge pull request #14 from pjanthony2001/developer-guide","messageBody":"Update Developer Guide","fileTypesAndContributionMap":{}},{"hash":"705c814a9d88af1cd8467818a10a222e58410139","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into about-us","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-04","commitResults":[{"hash":"34edb2dbbe8eb41b69a0ed4709c5e8cfe00520a9","isMergeCommit":true,"messageTitle":"Merge pull request #16 from tejas-1405/dev-guide","messageBody":"Updated Developer Guide","fileTypesAndContributionMap":{}}]},{"date":"2024-03-06","commitResults":[{"hash":"4f660c71b081dd6472e6642f52721c3be4121540","isMergeCommit":true,"messageTitle":"Merge pull request #22 from pjanthony2001/developer-guide","messageBody":"Update DG","fileTypesAndContributionMap":{}},{"hash":"e753152296e03113d0ef994b161bbaae3a232541","isMergeCommit":false,"messageTitle":"Update Person class with description and nextOfKin fields","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":229,"deletions":42},"test-code":{"insertions":20,"deletions":6}}},{"hash":"89313a56db556dd27d9a60f9df376e6ed085b44d","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W12-4:master\u0027 into update-person-class","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-07","commitResults":[{"hash":"e9a8e73da6369cfb18cf850ed2dc0522a90e0f67","isMergeCommit":false,"messageTitle":"Change code to fit checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":54,"deletions":7},"test-code":{"insertions":13,"deletions":1}}},{"hash":"1f450015e4260d6cce62eafbb2a81f36baedb2c7","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/update-person-class\u0027 into update-person-class","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d63d3f198226d9467e064470d2795047e718f8b6","isMergeCommit":false,"messageTitle":"Update JsonAdaptedPersonTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":55,"deletions":14}}},{"hash":"6a20b6e11a23699e686b7648f0169d650eb1f3db","isMergeCommit":false,"messageTitle":"Update tests and test data to include new fields","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":11,"deletions":6}}},{"hash":"59147ab93bee2ca23e3d16dcd3d334deeabb92ec","isMergeCommit":false,"messageTitle":"Add new tests and update existing tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":149,"deletions":11}}},{"hash":"4a54a8b08d83b99e1352724cd239aabe7906ba25","isMergeCommit":false,"messageTitle":"Correct CheckStyle errors and update test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":47,"deletions":5},"test-code":{"insertions":27,"deletions":7}}},{"hash":"03c10001eebf293ee5ef2ec798a2a1614d7dcb3f","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-15","commitResults":[{"hash":"859538a369a8f11fb21f3aa61e5d4f11c551993a","isMergeCommit":true,"messageTitle":"Merge pull request #33 from Rishit02/update-add-feature","messageBody":"Fix issue #18","fileTypesAndContributionMap":{}},{"hash":"7c98b859187a3a4857cee4a5786accf33ac60d63","isMergeCommit":false,"messageTitle":"Change the edit command to use a name","messageBody":"Previously an integer was provided to specify the target person to be\nedited. The new code changes that functionality to use the full name of\nthe target person instead. The full name provided as argument is not\nrequired to be case sensitive.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":30,"deletions":18}}}]},{"date":"2024-03-16","commitResults":[{"hash":"77032d571cf9b670ceff94c757d957f2ba206914","isMergeCommit":false,"messageTitle":"Change edit command to update","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":20},"other":{"insertions":101,"deletions":108},"docs":{"insertions":2,"deletions":2},"test-code":{"insertions":423,"deletions":417}}}]},{"date":"2024-03-17","commitResults":[{"hash":"8ee7aedd96fb8949843de21f2a50fd17b4e019da","isMergeCommit":false,"messageTitle":"Update tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":9},"docs":{"insertions":2,"deletions":2},"test-code":{"insertions":145,"deletions":135}}}]},{"date":"2024-03-18","commitResults":[{"hash":"0151cd2233407e83e9f2d9d1b016a0d3b9dc451f","isMergeCommit":false,"messageTitle":"Fix code based on code review","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":3},"test-code":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-22","commitResults":[{"hash":"f1650ddb4a96fd56fdcd8707c0ee0c44e5f0a719","isMergeCommit":true,"messageTitle":"Merge pull request #50 from pjanthony2001/update-uml-undo","messageBody":"Update UML","fileTypesAndContributionMap":{}}]},{"date":"2024-03-23","commitResults":[{"hash":"ae9a50886b2926e77a2875ab8cfd31bf3d01d864","isMergeCommit":true,"messageTitle":"Merge pull request #49 from Rishit02/update-UML","messageBody":"Update UML diagrams","fileTypesAndContributionMap":{}}]}],"Rishit02":[{"date":"2024-03-01","commitResults":[{"hash":"a5ad5a05b2f6965bd850ebac2228316b0b506542","isMergeCommit":false,"messageTitle":"Update READme.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":27,"deletions":11}}}]},{"date":"2024-03-02","commitResults":[{"hash":"e3d244472641e70ab6ae69c818991c5f4501bbec","isMergeCommit":true,"messageTitle":"Merge pull request #15 from Rishit02/update-readme","messageBody":"Update READme.md","fileTypesAndContributionMap":{}}]},{"date":"2024-03-12","commitResults":[{"hash":"45169e6027feb8570b70f5662725e01282718553","isMergeCommit":false,"messageTitle":"Change add command","messageBody":"Update add command to specify next of kin and description for Person\n","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":15}}},{"hash":"d9b09b21f5ffa8d45bbd7bfec9268a8c62667a2d","isMergeCommit":false,"messageTitle":"Fix test case","messageBody":"Change test case: include next of kin and description information\n","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":12},"test-code":{"insertions":20,"deletions":42}}},{"hash":"722cb675bd708f5c475fefd71386347e92b9abb1","isMergeCommit":false,"messageTitle":"Improve test cases","messageBody":"Test for add command is insufficient\n Let\u0027s,\n* improve the test case to include tests for next of kins\n* include tests for description\n","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":1},"test-code":{"insertions":12,"deletions":0}}}]},{"date":"2024-03-13","commitResults":[{"hash":"edd010a8ae5e5c1f6c4f89af92c7edf83aa909c7","isMergeCommit":false,"messageTitle":"Fix errors in checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":2}}},{"hash":"6a83d7ec421cae4374744f408dbeceb00b8d221b","isMergeCommit":false,"messageTitle":"Fix order of imports","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":5}}},{"hash":"ba62dfca9ebdf90225a1720289ea418fe7e432f6","isMergeCommit":false,"messageTitle":"Update AddCommandParser.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":3}}},{"hash":"8ec542e479fd86cddf0bf079dc7837fddc9e167b","isMergeCommit":false,"messageTitle":"Update AddCommandParser.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0}}},{"hash":"66c03f6fa5cadcb776a480e7d9cd50ceeb76374c","isMergeCommit":false,"messageTitle":"Improve code quality","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":26,"deletions":11}}},{"hash":"e57d9c86b9df9c250be52d268e906aa8177798fc","isMergeCommit":false,"messageTitle":"Change import order","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":11,"deletions":3}}},{"hash":"ddf06caacb0ed2f3f497caaeda6ad30579b4e088","isMergeCommit":false,"messageTitle":"Update import order","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":13}}},{"hash":"9d8b5a0b37c8813d82d68b590d8ad86ac2e9f495","isMergeCommit":false,"messageTitle":"Update imports","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":29,"deletions":1}}},{"hash":"16635b2b0951b9c65fe2320f2a6b2ad762727bd2","isMergeCommit":false,"messageTitle":"Improve code quality","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":4}}}]},{"date":"2024-03-14","commitResults":[{"hash":"216d217ad30dbffd52d0451431941ccdef459415","isMergeCommit":false,"messageTitle":"Update testcases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":26,"deletions":20}}},{"hash":"8da5660bf8829cbe6a9aba813462457afd2d6916","isMergeCommit":false,"messageTitle":"Improve code quality","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":21,"deletions":3}}}]},{"date":"2024-03-15","commitResults":[{"hash":"177e4a3dfc3c20dd1ee9f37b0be4b1fb126f8675","isMergeCommit":false,"messageTitle":"Fix parse function","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-20","commitResults":[{"hash":"4c1a9ab0197a94b2fe40589aa26f320e9ab7c06e","isMergeCommit":false,"messageTitle":"Fix add command bugs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":1},"test-code":{"insertions":6,"deletions":3}}},{"hash":"8421fa919b88b53e0c3d366e85326f77cb2e2354","isMergeCommit":false,"messageTitle":"Update AddCommandParserTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":2}}}]},{"date":"2024-03-21","commitResults":[{"hash":"30e7ef4a73975eab8608bb7ca3db05cf2b68d95e","isMergeCommit":true,"messageTitle":"Merge pull request #46 from pjanthony2001/fix-update-message-bug","messageBody":"Update Error Message for Update Command","tags":["v1.2"],"fileTypesAndContributionMap":{}}]},{"date":"2024-03-22","commitResults":[{"hash":"962c17af36f3f1e490c7b0aea4c01b5a3ef74787","isMergeCommit":false,"messageTitle":"Update UML diagrams to show Person includes NOK and Description","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":0}}}]}],"eliotlee68":[{"date":"2024-02-26","commitResults":[{"hash":"e3d9c53cd07d555244086f47f6cb670cd85893dc","isMergeCommit":false,"messageTitle":"Added initial user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":47,"deletions":111}}}]},{"date":"2024-03-18","commitResults":[{"hash":"6fea5b393106caabce6415ff6e93906581adf131","isMergeCommit":false,"messageTitle":"Edited UG add command section to include next of kin","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":2}}}]}]},"authorFileTypeContributionMap":{"pjanthony2001":{"docs":149,"functional-code":2,"test-code":0},"tejas-1405":{"docs":10,"functional-code":0,"test-code":0},"Jolonauh":{"docs":219,"functional-code":403,"test-code":712},"Rishit02":{"docs":31,"functional-code":41,"test-code":83},"eliotlee68":{"docs":50,"functional-code":0,"test-code":0}},"authorContributionVariance":{"pjanthony2001":399.23215,"tejas-1405":11.360011,"Jolonauh":47456.496,"Rishit02":1267.0221,"eliotlee68":803.4493},"authorDisplayNameMap":{"pjanthony2001":"CS2103T-W12-4 P J ..HONY","tejas-1405":"CS2103T-W12-4 TEJA..IVAM","Jolonauh":"CS2103T-W12-4 AU J..MIAH","Rishit02":"CS2103T-W12-4 RISH..LWAL","eliotlee68":"CS2103T-W12-4 ELIO..WERN"}} +{"authorDailyContributionsMap":{"pjanthony2001":[{"date":"2024-02-26","commitResults":[{"hash":"7665bee74b36f97ff2f05c20f8d0bdb853450c80","isMergeCommit":false,"messageTitle":"Update Developer Guide","messageBody":"This is for testing project workflow\n","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"5c329c6effd42c5272dba7e928ca6711335ae3d2","isMergeCommit":false,"messageTitle":"Add pjanthony.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":9}}},{"hash":"7288d01e926b5eaf11b90bebb4062e183fda2068","isMergeCommit":false,"messageTitle":"Update pjanthony.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":2}}},{"hash":"3e59d8d14a0c9c6968e674291292a4336d93f01c","isMergeCommit":true,"messageTitle":"Merge pull request #7 from eliotlee68/User-guide","messageBody":"Added initial user guide","fileTypesAndContributionMap":{}}]},{"date":"2024-03-01","commitResults":[{"hash":"c01615781527772a6487452c0c6fd20b8d4789c0","isMergeCommit":false,"messageTitle":"Update Developer Guide","messageBody":"Initial commit where small changes were made to the product scope\n","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":2}}}]},{"date":"2024-03-02","commitResults":[{"hash":"49bb5408b45c982bd0e214a788d1795968bf4289","isMergeCommit":false,"messageTitle":"Update Developer Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":83,"deletions":2}}}]},{"date":"2024-03-03","commitResults":[{"hash":"47f8609c8d1c78abef1b537696ae0a840e32e1f5","isMergeCommit":false,"messageTitle":"Update Use Cases","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":22,"deletions":14}}},{"hash":"cb048fed7f723e798ba68542fce379d65b9d9b9d","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into developer-guide","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"33a4bfa9c3b49d164192d266bfafa27748d9b379","isMergeCommit":true,"messageTitle":"Merge pull request #12 from Jolonauh/about-us","messageBody":"Update AboutUs page","fileTypesAndContributionMap":{}}]},{"date":"2024-03-06","commitResults":[{"hash":"f2b08d313861b2eb82cce0dbc439106d52b5c143","isMergeCommit":false,"messageTitle":"Update DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-11","commitResults":[{"hash":"4dd7dcd2a6b3c159cdef16263776d316e6e92315","isMergeCommit":true,"messageTitle":"Merge pull request #25 from Jolonauh/update-person-class","messageBody":"Update Person class and tests","fileTypesAndContributionMap":{}}]},{"date":"2024-03-18","commitResults":[{"hash":"5d71f72ef602e310817808d7c10e9facc042ff7d","isMergeCommit":true,"messageTitle":"Merge pull request #34 from Jolonauh/update-command","messageBody":"Change edit command to update command","fileTypesAndContributionMap":{}}]},{"date":"2024-03-19","commitResults":[{"hash":"763d663a4b05ac47b1074deba10ec1bec25c5d9f","isMergeCommit":true,"messageTitle":"Merge pull request #42 from tejas-1405/add-quickstart-UG","messageBody":"Add Quick start to UG","fileTypesAndContributionMap":{}},{"hash":"78127e815a61b78254f6c23b858a6eb86d840a02","isMergeCommit":true,"messageTitle":"Merge pull request #41 from eliotlee68/40-UG-Addcommand-Section","messageBody":"Edited UG add command section to include next of kin","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"4f028276366808199634bed7a8bf48a8555605f2","isMergeCommit":true,"messageTitle":"Merge pull request #44 from Rishit02/fix-add-command-messages","messageBody":"Fix add command bugs","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"0fb4268571d6a22dfa0ad16a3b3fbed769e99a3d","isMergeCommit":false,"messageTitle":"Update Error Message for Update Command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":2}}}]},{"date":"2024-03-22","commitResults":[{"hash":"64ba16c3b7537a1749a9a049f882e3698af2fda0","isMergeCommit":false,"messageTitle":"Update UML","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":39,"deletions":28}}}]},{"date":"2024-03-24","commitResults":[{"hash":"96723d1f642c7a76ec8e450546417cf6a80e8253","isMergeCommit":true,"messageTitle":"Merge pull request #51 from Jolonauh/UML-update","messageBody":"Add UML diagrams for State class","fileTypesAndContributionMap":{}},{"hash":"3e85b9d8639ccf7dd700e46e49633b442070215d","isMergeCommit":true,"messageTitle":"Merge pull request #56 from Jolonauh/user-guide","messageBody":"Update user guide","fileTypesAndContributionMap":{}},{"hash":"0733aa39b01b7d90646a78176f4fa8d8786eed53","isMergeCommit":true,"messageTitle":"Merge pull request #54 from eliotlee68/48-UML-Find-Function","messageBody":"Added sequence diagram for Find function","fileTypesAndContributionMap":{}}]}],"tejas-1405":[{"date":"2024-02-26","commitResults":[{"hash":"0021bf390dc434989eca3e2cb04e6d9fc4431f47","isMergeCommit":true,"messageTitle":"Merge pull request #5 from pjanthony2001/add-pjanthony-info","messageBody":"Add pjanthony info","fileTypesAndContributionMap":{}}]},{"date":"2024-03-03","commitResults":[{"hash":"1af41f3d871e4a392d5d774e46b6a0dd75ca5c17","isMergeCommit":false,"messageTitle":"Add NFRs and Glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":1}}},{"hash":"130dc9e3bc7118347c10169222e7bda2bf7db177","isMergeCommit":false,"messageTitle":"Add glossary terms","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"6eaeffafd069573622948e0cd06b6935d6aacb6f","isMergeCommit":false,"messageTitle":"Remove 5th NFR","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":4}}}]},{"date":"2024-03-19","commitResults":[{"hash":"3b5e7846e0fe93e16bd4b93838d583c360716e5e","isMergeCommit":false,"messageTitle":"Add Quick start to UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":2}}}]}],"Jolonauh":[{"date":"2024-02-29","commitResults":[{"hash":"0d292263860c9729fe771be9bc9d418e09ce4a99","isMergeCommit":false,"messageTitle":"Update AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":220,"deletions":25}}},{"hash":"15b85b54f50a363e5563011c35c34690f7d12b3d","isMergeCommit":false,"messageTitle":"Rename profile photos","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}}]},{"date":"2024-03-03","commitResults":[{"hash":"0b0610b73d0779626c9b551bf3c9d1363e3e1081","isMergeCommit":false,"messageTitle":"Add responsibilities to team members","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"311f07006b248480aced2eb1da970eb6524053e5","isMergeCommit":true,"messageTitle":"Merge pull request #14 from pjanthony2001/developer-guide","messageBody":"Update Developer Guide","fileTypesAndContributionMap":{}},{"hash":"705c814a9d88af1cd8467818a10a222e58410139","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into about-us","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-04","commitResults":[{"hash":"34edb2dbbe8eb41b69a0ed4709c5e8cfe00520a9","isMergeCommit":true,"messageTitle":"Merge pull request #16 from tejas-1405/dev-guide","messageBody":"Updated Developer Guide","fileTypesAndContributionMap":{}}]},{"date":"2024-03-06","commitResults":[{"hash":"4f660c71b081dd6472e6642f52721c3be4121540","isMergeCommit":true,"messageTitle":"Merge pull request #22 from pjanthony2001/developer-guide","messageBody":"Update DG","fileTypesAndContributionMap":{}},{"hash":"e753152296e03113d0ef994b161bbaae3a232541","isMergeCommit":false,"messageTitle":"Update Person class with description and nextOfKin fields","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":229,"deletions":42},"test-code":{"insertions":20,"deletions":6}}},{"hash":"89313a56db556dd27d9a60f9df376e6ed085b44d","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W12-4:master\u0027 into update-person-class","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-07","commitResults":[{"hash":"e9a8e73da6369cfb18cf850ed2dc0522a90e0f67","isMergeCommit":false,"messageTitle":"Change code to fit checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":54,"deletions":7},"test-code":{"insertions":13,"deletions":1}}},{"hash":"1f450015e4260d6cce62eafbb2a81f36baedb2c7","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/update-person-class\u0027 into update-person-class","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d63d3f198226d9467e064470d2795047e718f8b6","isMergeCommit":false,"messageTitle":"Update JsonAdaptedPersonTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":55,"deletions":14}}},{"hash":"6a20b6e11a23699e686b7648f0169d650eb1f3db","isMergeCommit":false,"messageTitle":"Update tests and test data to include new fields","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":11,"deletions":6}}},{"hash":"59147ab93bee2ca23e3d16dcd3d334deeabb92ec","isMergeCommit":false,"messageTitle":"Add new tests and update existing tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":149,"deletions":11}}},{"hash":"4a54a8b08d83b99e1352724cd239aabe7906ba25","isMergeCommit":false,"messageTitle":"Correct CheckStyle errors and update test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":47,"deletions":5},"test-code":{"insertions":27,"deletions":7}}},{"hash":"03c10001eebf293ee5ef2ec798a2a1614d7dcb3f","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-15","commitResults":[{"hash":"859538a369a8f11fb21f3aa61e5d4f11c551993a","isMergeCommit":true,"messageTitle":"Merge pull request #33 from Rishit02/update-add-feature","messageBody":"Fix issue #18","fileTypesAndContributionMap":{}},{"hash":"7c98b859187a3a4857cee4a5786accf33ac60d63","isMergeCommit":false,"messageTitle":"Change the edit command to use a name","messageBody":"Previously an integer was provided to specify the target person to be\nedited. The new code changes that functionality to use the full name of\nthe target person instead. The full name provided as argument is not\nrequired to be case sensitive.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":30,"deletions":18}}}]},{"date":"2024-03-16","commitResults":[{"hash":"77032d571cf9b670ceff94c757d957f2ba206914","isMergeCommit":false,"messageTitle":"Change edit command to update","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":20},"other":{"insertions":101,"deletions":108},"docs":{"insertions":2,"deletions":2},"test-code":{"insertions":423,"deletions":417}}}]},{"date":"2024-03-17","commitResults":[{"hash":"8ee7aedd96fb8949843de21f2a50fd17b4e019da","isMergeCommit":false,"messageTitle":"Update tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":9},"docs":{"insertions":2,"deletions":2},"test-code":{"insertions":145,"deletions":135}}}]},{"date":"2024-03-18","commitResults":[{"hash":"0151cd2233407e83e9f2d9d1b016a0d3b9dc451f","isMergeCommit":false,"messageTitle":"Fix code based on code review","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":3},"test-code":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-22","commitResults":[{"hash":"f1650ddb4a96fd56fdcd8707c0ee0c44e5f0a719","isMergeCommit":true,"messageTitle":"Merge pull request #50 from pjanthony2001/update-uml-undo","messageBody":"Update UML","fileTypesAndContributionMap":{}}]},{"date":"2024-03-23","commitResults":[{"hash":"ae9a50886b2926e77a2875ab8cfd31bf3d01d864","isMergeCommit":true,"messageTitle":"Merge pull request #49 from Rishit02/update-UML","messageBody":"Update UML diagrams","fileTypesAndContributionMap":{}},{"hash":"663c84517c3459dff203a7ee3e07b0180a4d87dc","isMergeCommit":false,"messageTitle":"Add UML diagrams for State class","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":70,"deletions":0}}},{"hash":"d856ec2b9a16a8ba7f2a384ed5e6b2084f05e986","isMergeCommit":false,"messageTitle":"Add newline to StateSequenceDiagram.puml","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"d3be76d2e1fbb694e7cf1f50d772bfce2418a836","isMergeCommit":false,"messageTitle":"Revert \"Update UML diagrams\"","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":4}}}]},{"date":"2024-03-24","commitResults":[{"hash":"02690923818e8ab9f235e3387e74ae89bea8936a","isMergeCommit":false,"messageTitle":"Use constants to specify colours in puml diagrams","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":2}}},{"hash":"2d08e179baeb467a39538c6e596e9f0ed5df7779","isMergeCommit":false,"messageTitle":"Update user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":113,"deletions":75}}},{"hash":"ba6e4c9b5aec1d991af24ca89d5f555182ca1e89","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin\u0027 into user-guide","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e085d949502e5ede96dfafb810b20d0c3967009b","isMergeCommit":false,"messageTitle":"Update introduction","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":5}}},{"hash":"1bb3c5c07e8765ccc721b156760634dd3d6b8819","isMergeCommit":false,"messageTitle":"Update user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":29,"deletions":14}}},{"hash":"08f4e22c39e39f2ebd261462bebff9ce0e3b2edf","isMergeCommit":false,"messageTitle":"Update user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":0}}},{"hash":"0816b7edddfd0c5a1d9e9512920bcaf185099b6e","isMergeCommit":false,"messageTitle":"Add table of contents","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":0}}},{"hash":"1dbfcb75b1421a669b708c4a252304e137c3c370","isMergeCommit":false,"messageTitle":"Update user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"a296a789218350a3db19734bc76456067e5e096e","isMergeCommit":true,"messageTitle":"Merge pull request #59 from Rishit02/update-uml","messageBody":"Update UML","fileTypesAndContributionMap":{}}]}],"Rishit02":[{"date":"2024-03-01","commitResults":[{"hash":"a5ad5a05b2f6965bd850ebac2228316b0b506542","isMergeCommit":false,"messageTitle":"Update READme.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":27,"deletions":11}}}]},{"date":"2024-03-02","commitResults":[{"hash":"e3d244472641e70ab6ae69c818991c5f4501bbec","isMergeCommit":true,"messageTitle":"Merge pull request #15 from Rishit02/update-readme","messageBody":"Update READme.md","fileTypesAndContributionMap":{}}]},{"date":"2024-03-12","commitResults":[{"hash":"45169e6027feb8570b70f5662725e01282718553","isMergeCommit":false,"messageTitle":"Change add command","messageBody":"Update add command to specify next of kin and description for Person\n","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":15}}},{"hash":"d9b09b21f5ffa8d45bbd7bfec9268a8c62667a2d","isMergeCommit":false,"messageTitle":"Fix test case","messageBody":"Change test case: include next of kin and description information\n","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":12},"test-code":{"insertions":20,"deletions":42}}},{"hash":"722cb675bd708f5c475fefd71386347e92b9abb1","isMergeCommit":false,"messageTitle":"Improve test cases","messageBody":"Test for add command is insufficient\n Let\u0027s,\n* improve the test case to include tests for next of kins\n* include tests for description\n","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":1},"test-code":{"insertions":12,"deletions":0}}}]},{"date":"2024-03-13","commitResults":[{"hash":"edd010a8ae5e5c1f6c4f89af92c7edf83aa909c7","isMergeCommit":false,"messageTitle":"Fix errors in checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":2}}},{"hash":"6a83d7ec421cae4374744f408dbeceb00b8d221b","isMergeCommit":false,"messageTitle":"Fix order of imports","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":5}}},{"hash":"ba62dfca9ebdf90225a1720289ea418fe7e432f6","isMergeCommit":false,"messageTitle":"Update AddCommandParser.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":3}}},{"hash":"8ec542e479fd86cddf0bf079dc7837fddc9e167b","isMergeCommit":false,"messageTitle":"Update AddCommandParser.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0}}},{"hash":"66c03f6fa5cadcb776a480e7d9cd50ceeb76374c","isMergeCommit":false,"messageTitle":"Improve code quality","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":26,"deletions":11}}},{"hash":"e57d9c86b9df9c250be52d268e906aa8177798fc","isMergeCommit":false,"messageTitle":"Change import order","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":11,"deletions":3}}},{"hash":"ddf06caacb0ed2f3f497caaeda6ad30579b4e088","isMergeCommit":false,"messageTitle":"Update import order","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":13}}},{"hash":"9d8b5a0b37c8813d82d68b590d8ad86ac2e9f495","isMergeCommit":false,"messageTitle":"Update imports","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":29,"deletions":1}}},{"hash":"16635b2b0951b9c65fe2320f2a6b2ad762727bd2","isMergeCommit":false,"messageTitle":"Improve code quality","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":4}}}]},{"date":"2024-03-14","commitResults":[{"hash":"216d217ad30dbffd52d0451431941ccdef459415","isMergeCommit":false,"messageTitle":"Update testcases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":26,"deletions":20}}},{"hash":"8da5660bf8829cbe6a9aba813462457afd2d6916","isMergeCommit":false,"messageTitle":"Improve code quality","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":21,"deletions":3}}}]},{"date":"2024-03-15","commitResults":[{"hash":"177e4a3dfc3c20dd1ee9f37b0be4b1fb126f8675","isMergeCommit":false,"messageTitle":"Fix parse function","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-20","commitResults":[{"hash":"4c1a9ab0197a94b2fe40589aa26f320e9ab7c06e","isMergeCommit":false,"messageTitle":"Fix add command bugs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":1},"test-code":{"insertions":6,"deletions":3}}},{"hash":"8421fa919b88b53e0c3d366e85326f77cb2e2354","isMergeCommit":false,"messageTitle":"Update AddCommandParserTest.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":2}}}]},{"date":"2024-03-21","commitResults":[{"hash":"30e7ef4a73975eab8608bb7ca3db05cf2b68d95e","isMergeCommit":true,"messageTitle":"Merge pull request #46 from pjanthony2001/fix-update-message-bug","messageBody":"Update Error Message for Update Command","tags":["v1.2"],"fileTypesAndContributionMap":{}}]},{"date":"2024-03-22","commitResults":[{"hash":"962c17af36f3f1e490c7b0aea4c01b5a3ef74787","isMergeCommit":false,"messageTitle":"Update UML diagrams to show Person includes NOK and Description","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":0}}}]},{"date":"2024-03-24","commitResults":[{"hash":"6f4e8d26f7403f534844d0271280dbc25c689014","isMergeCommit":true,"messageTitle":"Merge pull request #53 from AY2324S2-CS2103T-W12-4/revert-49-update-UML","messageBody":"Revert \"Update UML diagrams\"","fileTypesAndContributionMap":{}},{"hash":"e4523de57419bba437e68780816300c6fd83fe1f","isMergeCommit":false,"messageTitle":"Update models to include description","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":0}}},{"hash":"13e5b96e083b80a6849a06c808af902716556ff6","isMergeCommit":false,"messageTitle":"Update models to include Next of Kin","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":0}}},{"hash":"7c05bb7fa6087d7b1a81412ce80fdcdfa32bcca0","isMergeCommit":false,"messageTitle":"Add class to model package","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":0}}}]}],"eliotlee68":[{"date":"2024-02-26","commitResults":[{"hash":"e3d9c53cd07d555244086f47f6cb670cd85893dc","isMergeCommit":false,"messageTitle":"Added initial user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":47,"deletions":111}}}]},{"date":"2024-03-18","commitResults":[{"hash":"6fea5b393106caabce6415ff6e93906581adf131","isMergeCommit":false,"messageTitle":"Edited UG add command section to include next of kin","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":2}}}]},{"date":"2024-03-23","commitResults":[{"hash":"70cb1dbb8094010c56d9cd98ce246c210651cebc","isMergeCommit":false,"messageTitle":"Added sequence diagram for Find function","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":70,"deletions":0}}}]},{"date":"2024-03-24","commitResults":[{"hash":"fd17a97940d50aedb16ffa8fc375e0176ed838ac","isMergeCommit":false,"messageTitle":"Fix typo in Find Sequence Diagram","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"pjanthony2001":{"docs":149,"functional-code":2,"test-code":0},"tejas-1405":{"docs":6,"functional-code":0,"test-code":0},"Jolonauh":{"docs":388,"functional-code":403,"test-code":712},"Rishit02":{"docs":33,"functional-code":41,"test-code":83},"eliotlee68":{"docs":80,"functional-code":0,"test-code":0}},"authorContributionVariance":{"pjanthony2001":388.1728,"tejas-1405":11.013521,"Jolonauh":46642.71,"Rishit02":1227.9851,"eliotlee68":906.68945},"authorDisplayNameMap":{"pjanthony2001":"CS2103T-W12-4 P J ..HONY","tejas-1405":"CS2103T-W12-4 TEJA..IVAM","Jolonauh":"CS2103T-W12-4 AU J..MIAH","Rishit02":"CS2103T-W12-4 RISH..LWAL","eliotlee68":"CS2103T-W12-4 ELIO..WERN"}} diff --git a/AY2324S2-CS2103T-W13-2_tp_master/authorship.json b/AY2324S2-CS2103T-W13-2_tp_master/authorship.json index db768a04..9e278716 100644 --- a/AY2324S2-CS2103T-W13-2_tp_master/authorship.json +++ b/AY2324S2-CS2103T-W13-2_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"The-Dudeski"},"content":"[![CI Status](https://github.com/AY2324S2-CS2103T-W13-2/tp/actions/workflows/gradle.yml/badge.svg)](https://github.com/AY2324S2-CS2103T-W13-2/tp/actions/workflows/gradle.yml)","lastModifiedDate":"2024-03-09"},{"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":"The-Dudeski"},"content":"* This is **a project created by CS2103T students. It is a contact book **.\u003cbr\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":6,"author":{"gitId":"-"},"content":" Example usages:","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"The-Dudeski"},"content":" * It is meant to be used by secretaries in companies with different departments to be managed","lastModifiedDate":"2024-03-06"},{"lineNumber":8,"author":{"gitId":"The-Dudeski"},"content":" * The project will be developed over the course of AY23/24 Semester 2","lastModifiedDate":"2024-03-06"},{"lineNumber":9,"author":{"gitId":"The-Dudeski"},"content":"* The project is written Java","lastModifiedDate":"2024-03-06"},{"lineNumber":10,"author":{"gitId":"The-Dudeski"},"content":" * It is **written in OOP fashion**. ","lastModifiedDate":"2024-03-06"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * It comes with a **reasonable level of user and developer documentation**.","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"The-Dudeski"},"content":"* The application will contain contacts for the secretary to manage","lastModifiedDate":"2024-03-06"},{"lineNumber":13,"author":{"gitId":"The-Dudeski"},"content":" * This will include the option to view, add, delete and filter contacts","lastModifiedDate":"2024-03-06"},{"lineNumber":14,"author":{"gitId":"The-Dudeski"},"content":"* For the detailed documentation of this project, see the **[Contact Book Product Website]()**.","lastModifiedDate":"2024-03-06"},{"lineNumber":15,"author":{"gitId":"The-Dudeski"},"content":"* This project is derived from AddressBook-Level3 created by [SE-EDU initiative](https://se-education.org)","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"The-Dudeski":10,"-":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":"The-Dudeski"},"content":"You can reach us at the email `mashfi.i@u.nus.edu`","lastModifiedDate":"2024-03-09"},{"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":"The-Dudeski"},"content":"### Mashfi Ishtiaque","lastModifiedDate":"2024-03-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"The-Dudeski"},"content":"\u003cimg src\u003d\"/images/miffi.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"The-Dudeski"},"content":"[[homepage](https://decadent.rest)]","lastModifiedDate":"2024-03-09"},{"lineNumber":17,"author":{"gitId":"The-Dudeski"},"content":"[[github](https://github.com/miffi)]","lastModifiedDate":"2024-03-04"},{"lineNumber":18,"author":{"gitId":"The-Dudeski"},"content":"[[portfolio](team/miffi.md)]","lastModifiedDate":"2024-03-04"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"miffi"},"content":"* Role: Team Lead","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"miffi"},"content":"* Responsibilities:","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"miffi"},"content":" - UI","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"miffi"},"content":" - Tools","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"The-Dudeski"},"content":"### Leong Jia Hao, Derek","lastModifiedDate":"2024-03-04"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"The-Dudeski"},"content":"\u003cimg src\u003d\"/images/derekljh.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"The-Dudeski"},"content":"[[github](http://github.com/derekljh)]","lastModifiedDate":"2024-03-04"},{"lineNumber":30,"author":{"gitId":"The-Dudeski"},"content":"[[portfolio](team/derekljh.md)]","lastModifiedDate":"2024-03-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"miffi"},"content":"- Role: Developer","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"miffi"},"content":"* Responsibilities:","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"miffi"},"content":" * Tasks and Deadlines","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"miffi"},"content":" - Scheduling and tracking","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"miffi"},"content":" - Logic","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"The-Dudeski"},"content":"### Mahindroo Aashim","lastModifiedDate":"2024-03-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"The-Dudeski"},"content":"\u003cimg src\u003d\"/images/radeon2525.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"The-Dudeski"},"content":"[[github](http://github.com/radeon2525)] ","lastModifiedDate":"2024-03-09"},{"lineNumber":43,"author":{"gitId":"The-Dudeski"},"content":"[[portfolio](team/radeon2525.md)]","lastModifiedDate":"2024-03-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"miffi"},"content":"* Responsibilities:","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"miffi"},"content":" - Testing","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"miffi"},"content":" - Model","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"The-Dudeski"},"content":"### Kyaw Swar Myint","lastModifiedDate":"2024-03-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"The-Dudeski"},"content":"\u003cimg src\u003d\"/images/jukeboxk.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"The-Dudeski"},"content":"[[github](http://github.com/jukeboxk)]","lastModifiedDate":"2024-03-04"},{"lineNumber":55,"author":{"gitId":"The-Dudeski"},"content":"[[portfolio](team/jukeboxk.md)]","lastModifiedDate":"2024-03-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"miffi"},"content":"* Responsibilities:","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"miffi"},"content":" - Documentation","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"miffi"},"content":" - Main","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"miffi"},"content":" - Commons","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"The-Dudeski"},"content":"### Dude Lorenz Leonardo Crescenzio","lastModifiedDate":"2024-03-04"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"The-Dudeski"},"content":"\u003cimg src\u003d\"/images/the-dudeski.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-09"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"The-Dudeski"},"content":"[[github](http://github.com/the-dudeski)]","lastModifiedDate":"2024-03-04"},{"lineNumber":68,"author":{"gitId":"The-Dudeski"},"content":"[[portfolio](team/the-dudeski.md)]","lastModifiedDate":"2024-03-04"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"miffi"},"content":"* Responsibilities:","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"miffi"},"content":" - Integration","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"miffi"},"content":" - Storage","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"The-Dudeski":22,"miffi":19,"-":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":"radeon2525"},"content":"","lastModifiedDate":"2024-03-07"},{"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":"radeon2525"},"content":"* {list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the","lastModifiedDate":"2024-03-07"},{"lineNumber":14,"author":{"gitId":"radeon2525"},"content":" original source as well}","lastModifiedDate":"2024-03-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":16,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","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":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"radeon2525"},"content":":bulb: **Tip:** The `.puml` files used to create diagrams in this document `docs/diagrams` folder. Refer to the [","lastModifiedDate":"2024-03-07"},{"lineNumber":29,"author":{"gitId":"radeon2525"},"content":"_PlantUML Tutorial_ at se-edu/guides](https://se-education.org/guides/tutorials/plantUml.html) to learn how to create","lastModifiedDate":"2024-03-07"},{"lineNumber":30,"author":{"gitId":"radeon2525"},"content":"and edit diagrams.","lastModifiedDate":"2024-03-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureDiagram.png\" width\u003d\"280\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":41,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"radeon2525"},"content":"**`Main`** (consisting of","lastModifiedDate":"2024-03-07"},{"lineNumber":44,"author":{"gitId":"radeon2525"},"content":"classes [`Main`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/Main.java)","lastModifiedDate":"2024-03-07"},{"lineNumber":45,"author":{"gitId":"radeon2525"},"content":"and [`MainApp`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/MainApp.java)) is","lastModifiedDate":"2024-03-07"},{"lineNumber":46,"author":{"gitId":"radeon2525"},"content":"in charge of the app launch and shut down.","lastModifiedDate":"2024-03-07"},{"lineNumber":47,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":48,"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":49,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"radeon2525"},"content":"The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues","lastModifiedDate":"2024-03-07"},{"lineNumber":63,"author":{"gitId":"radeon2525"},"content":"the command `delete 1`.","lastModifiedDate":"2024-03-07"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureSequenceDiagram.png\" width\u003d\"574\" /\u003e","lastModifiedDate":"2020-06-07"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":69,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31"},{"lineNumber":70,"author":{"gitId":"radeon2525"},"content":"* implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding","lastModifiedDate":"2024-03-07"},{"lineNumber":71,"author":{"gitId":"radeon2525"},"content":" API `interface` mentioned in the previous point.","lastModifiedDate":"2024-03-07"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":73,"author":{"gitId":"radeon2525"},"content":"For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using","lastModifiedDate":"2024-03-07"},{"lineNumber":74,"author":{"gitId":"radeon2525"},"content":"the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component","lastModifiedDate":"2024-03-07"},{"lineNumber":75,"author":{"gitId":"radeon2525"},"content":"through its interface rather than the concrete class (reason: to prevent outside component\u0027s being coupled to the","lastModifiedDate":"2024-03-07"},{"lineNumber":76,"author":{"gitId":"radeon2525"},"content":"implementation of a component), as illustrated in the (partial) class diagram below.","lastModifiedDate":"2024-03-07"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":78,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ComponentManagers.png\" width\u003d\"300\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":80,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"radeon2525"},"content":"The **API** of this component is specified","lastModifiedDate":"2024-03-07"},{"lineNumber":85,"author":{"gitId":"radeon2525"},"content":"in [`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2024-03-07"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"![Structure of the UI Component](images/UiClassDiagram.png)","lastModifiedDate":"2021-07-31"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"radeon2525"},"content":"The UI consists of a `MainWindow` that is made up of parts","lastModifiedDate":"2024-03-07"},{"lineNumber":90,"author":{"gitId":"radeon2525"},"content":"e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`,","lastModifiedDate":"2024-03-07"},{"lineNumber":91,"author":{"gitId":"radeon2525"},"content":"inherit from the abstract `UiPart` class which captures the commonalities between classes that represent parts of the","lastModifiedDate":"2024-03-07"},{"lineNumber":92,"author":{"gitId":"radeon2525"},"content":"visible GUI.","lastModifiedDate":"2024-03-07"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"radeon2525"},"content":"The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that","lastModifiedDate":"2024-03-07"},{"lineNumber":95,"author":{"gitId":"radeon2525"},"content":"are in the `src/main/resources/view` folder. For example, the layout of","lastModifiedDate":"2024-03-07"},{"lineNumber":96,"author":{"gitId":"radeon2525"},"content":"the [`MainWindow`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/MainWindow.java)","lastModifiedDate":"2024-03-07"},{"lineNumber":97,"author":{"gitId":"radeon2525"},"content":"is specified","lastModifiedDate":"2024-03-07"},{"lineNumber":98,"author":{"gitId":"radeon2525"},"content":"in [`MainWindow.fxml`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2024-03-07"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":103,"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":104,"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":105,"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":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"radeon2525"},"content":"**API","lastModifiedDate":"2024-03-07"},{"lineNumber":110,"author":{"gitId":"radeon2525"},"content":"** : [`Logic.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/logic/Logic.java)","lastModifiedDate":"2024-03-07"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/LogicClassDiagram.png\" width\u003d\"550\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"radeon2525"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"delete 1\")` API","lastModifiedDate":"2024-03-07"},{"lineNumber":117,"author":{"gitId":"radeon2525"},"content":"call as an example.","lastModifiedDate":"2024-03-07"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":"![Interactions Inside the Logic Component for the `delete 1` Command](images/DeleteSequenceDiagram.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"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 continues till the end of diagram.","lastModifiedDate":"2024-02-09"},{"lineNumber":122,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"Derekljh"},"content":"Another sequence diagram below illustrates the interactions within the `Logic` component, taking","lastModifiedDate":"2024-03-21"},{"lineNumber":125,"author":{"gitId":"Derekljh"},"content":"`execute(\"tag 1 tag: example\")` API call as an example.","lastModifiedDate":"2024-03-21"},{"lineNumber":126,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":127,"author":{"gitId":"Derekljh"},"content":"![](C:\\Repos\\TeamProject\\docs\\images\\TagCommand.png)","lastModifiedDate":"2024-03-21"},{"lineNumber":128,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":129,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":131,"author":{"gitId":"radeon2525"},"content":"1. When `Logic` is called upon to execute a command, it is passed to an `AddressBookParser` object which in turn creates","lastModifiedDate":"2024-03-07"},{"lineNumber":132,"author":{"gitId":"radeon2525"},"content":" a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2024-03-07"},{"lineNumber":133,"author":{"gitId":"radeon2525"},"content":"1. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteCommand`) which","lastModifiedDate":"2024-03-07"},{"lineNumber":134,"author":{"gitId":"radeon2525"},"content":" is executed by the `LogicManager`.","lastModifiedDate":"2024-03-07"},{"lineNumber":135,"author":{"gitId":"-"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a person).\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":136,"author":{"gitId":"radeon2525"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take","lastModifiedDate":"2024-03-07"},{"lineNumber":137,"author":{"gitId":"radeon2525"},"content":" several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-03-07"},{"lineNumber":138,"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":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":140,"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":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ParserClasses.png\" width\u003d\"600\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31"},{"lineNumber":145,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":146,"author":{"gitId":"radeon2525"},"content":"* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a","lastModifiedDate":"2024-03-07"},{"lineNumber":147,"author":{"gitId":"radeon2525"},"content":" placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse","lastModifiedDate":"2024-03-07"},{"lineNumber":148,"author":{"gitId":"radeon2525"},"content":" the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as","lastModifiedDate":"2024-03-07"},{"lineNumber":149,"author":{"gitId":"radeon2525"},"content":" a `Command` object.","lastModifiedDate":"2024-03-07"},{"lineNumber":150,"author":{"gitId":"radeon2525"},"content":"* All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, ...) inherit from the `Parser`","lastModifiedDate":"2024-03-07"},{"lineNumber":151,"author":{"gitId":"radeon2525"},"content":" interface so that they can be treated similarly where possible e.g, during testing.","lastModifiedDate":"2024-03-07"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31"},{"lineNumber":154,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":155,"author":{"gitId":"radeon2525"},"content":"**API","lastModifiedDate":"2024-03-07"},{"lineNumber":156,"author":{"gitId":"radeon2525"},"content":"** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2024-03-07"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"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":164,"author":{"gitId":"radeon2525"},"content":"* stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which","lastModifiedDate":"2024-03-07"},{"lineNumber":165,"author":{"gitId":"radeon2525"},"content":" is exposed to outsiders as an unmodifiable `ObservableList\u003cPerson\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to","lastModifiedDate":"2024-03-07"},{"lineNumber":166,"author":{"gitId":"radeon2525"},"content":" this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2024-03-07"},{"lineNumber":167,"author":{"gitId":"radeon2525"},"content":"* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as","lastModifiedDate":"2024-03-07"},{"lineNumber":168,"author":{"gitId":"radeon2525"},"content":" a `ReadOnlyUserPref` objects.","lastModifiedDate":"2024-03-07"},{"lineNumber":169,"author":{"gitId":"radeon2525"},"content":"* does not depend on any of the other three components (as the `Model` represents data entities of the domain, they","lastModifiedDate":"2024-03-07"},{"lineNumber":170,"author":{"gitId":"radeon2525"},"content":" should make sense on their own without depending on other components)","lastModifiedDate":"2024-03-07"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":172,"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":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":174,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/BetterModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"radeon2525"},"content":"**API","lastModifiedDate":"2024-03-07"},{"lineNumber":181,"author":{"gitId":"radeon2525"},"content":"** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2024-03-07"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/StorageClassDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":185,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":187,"author":{"gitId":"radeon2525"},"content":"* can save both address book data and user preference data in JSON format, and read them back into corresponding","lastModifiedDate":"2024-03-07"},{"lineNumber":188,"author":{"gitId":"radeon2525"},"content":" objects.","lastModifiedDate":"2024-03-07"},{"lineNumber":189,"author":{"gitId":"radeon2525"},"content":"* inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only","lastModifiedDate":"2024-03-07"},{"lineNumber":190,"author":{"gitId":"radeon2525"},"content":" the functionality of only one is needed).","lastModifiedDate":"2024-03-07"},{"lineNumber":191,"author":{"gitId":"radeon2525"},"content":"* depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects","lastModifiedDate":"2024-03-07"},{"lineNumber":192,"author":{"gitId":"radeon2525"},"content":" that belong to the `Model`)","lastModifiedDate":"2024-03-07"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","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":"","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"radeon2525"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo","lastModifiedDate":"2024-03-07"},{"lineNumber":209,"author":{"gitId":"radeon2525"},"content":"history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the","lastModifiedDate":"2024-03-07"},{"lineNumber":210,"author":{"gitId":"radeon2525"},"content":"following operations:","lastModifiedDate":"2024-03-07"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"radeon2525"},"content":"* `VersionedAddressBook#commit()`— Saves the current address book state in its history.","lastModifiedDate":"2024-03-07"},{"lineNumber":213,"author":{"gitId":"radeon2525"},"content":"* `VersionedAddressBook#undo()`— Restores the previous address book state from its history.","lastModifiedDate":"2024-03-07"},{"lineNumber":214,"author":{"gitId":"radeon2525"},"content":"* `VersionedAddressBook#redo()`— Restores a previously undone address book state from its history.","lastModifiedDate":"2024-03-07"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"author":{"gitId":"radeon2525"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()`","lastModifiedDate":"2024-03-07"},{"lineNumber":217,"author":{"gitId":"radeon2525"},"content":"and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2024-03-07"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":219,"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":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"radeon2525"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the","lastModifiedDate":"2024-03-07"},{"lineNumber":222,"author":{"gitId":"radeon2525"},"content":"initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2024-03-07"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":"![UndoRedoState0](images/UndoRedoState0.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":226,"author":{"gitId":"radeon2525"},"content":"Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command","lastModifiedDate":"2024-03-07"},{"lineNumber":227,"author":{"gitId":"radeon2525"},"content":"calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes","lastModifiedDate":"2024-03-07"},{"lineNumber":228,"author":{"gitId":"radeon2525"},"content":"to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book","lastModifiedDate":"2024-03-07"},{"lineNumber":229,"author":{"gitId":"radeon2525"},"content":"state.","lastModifiedDate":"2024-03-07"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":"![UndoRedoState1](images/UndoRedoState1.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"radeon2525"},"content":"Step 3. The user executes `add n/David …​` to add a new person. The `add` command also","lastModifiedDate":"2024-03-07"},{"lineNumber":234,"author":{"gitId":"radeon2525"},"content":"calls `Model#commitAddressBook()`, causing another modified address book state to be saved into","lastModifiedDate":"2024-03-07"},{"lineNumber":235,"author":{"gitId":"radeon2525"},"content":"the `addressBookStateList`.","lastModifiedDate":"2024-03-07"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":"![UndoRedoState2](images/UndoRedoState2.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":239,"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":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"radeon2525"},"content":"Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing","lastModifiedDate":"2024-03-07"},{"lineNumber":244,"author":{"gitId":"radeon2525"},"content":"the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer`","lastModifiedDate":"2024-03-07"},{"lineNumber":245,"author":{"gitId":"radeon2525"},"content":"once to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2024-03-07"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"-"},"content":"![UndoRedoState3](images/UndoRedoState3.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"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":250,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Logic.png)","lastModifiedDate":"2024-02-09"},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"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":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":262,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09"},{"lineNumber":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":264,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Model.png)","lastModifiedDate":"2024-02-09"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":266,"author":{"gitId":"radeon2525"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once","lastModifiedDate":"2024-03-07"},{"lineNumber":267,"author":{"gitId":"radeon2525"},"content":"to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2024-03-07"},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"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":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"radeon2525"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such","lastModifiedDate":"2024-03-07"},{"lineNumber":274,"author":{"gitId":"radeon2525"},"content":"as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`.","lastModifiedDate":"2024-03-07"},{"lineNumber":275,"author":{"gitId":"radeon2525"},"content":"Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2024-03-07"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":277,"author":{"gitId":"-"},"content":"![UndoRedoState4](images/UndoRedoState4.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"radeon2525"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not","lastModifiedDate":"2024-03-07"},{"lineNumber":280,"author":{"gitId":"radeon2525"},"content":"pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be","lastModifiedDate":"2024-03-07"},{"lineNumber":281,"author":{"gitId":"radeon2525"},"content":"purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern","lastModifiedDate":"2024-03-07"},{"lineNumber":282,"author":{"gitId":"radeon2525"},"content":"desktop applications follow.","lastModifiedDate":"2024-03-07"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":284,"author":{"gitId":"-"},"content":"![UndoRedoState5](images/UndoRedoState5.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":286,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":288,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/CommitActivityDiagram.png\" width\u003d\"250\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":290,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":292,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":293,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":294,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":295,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":296,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":298,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":299,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":300,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"lineNumber":301,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":302,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":303,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":304,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":305,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":306,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":307,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23"},{"lineNumber":308,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":309,"author":{"gitId":"-"},"content":"","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":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":313,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":314,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":315,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":316,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":317,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":318,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":320,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":321,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":322,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":324,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":326,"author":{"gitId":"Derekljh"},"content":"**Target user profile**: Secretary of a tech company","lastModifiedDate":"2024-03-06"},{"lineNumber":327,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":328,"author":{"gitId":"-"},"content":"* has a need to manage a significant number of contacts","lastModifiedDate":"2020-05-23"},{"lineNumber":329,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23"},{"lineNumber":330,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23"},{"lineNumber":331,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26"},{"lineNumber":332,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23"},{"lineNumber":333,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":334,"author":{"gitId":"Derekljh"},"content":"**Value proposition**: Categorise people according to their department/origin, making it easier to assign tasks or get all the emails.","lastModifiedDate":"2024-03-06"},{"lineNumber":335,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":336,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":337,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":338,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":340,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":341,"author":{"gitId":"JukeBoxK"},"content":"|----------|-----------|---------------------------------------|--------------------------------------------------------|","lastModifiedDate":"2024-03-21"},{"lineNumber":342,"author":{"gitId":"JukeBoxK"},"content":"| `* * *` | secretary | view the added contact list | see the details of the added contact |","lastModifiedDate":"2024-03-21"},{"lineNumber":343,"author":{"gitId":"JukeBoxK"},"content":"| `* * *` | secretary | add contacts to a list | record contact details |","lastModifiedDate":"2024-03-21"},{"lineNumber":344,"author":{"gitId":"JukeBoxK"},"content":"| `* * *` | secretary | remove contacts from a list | clean up old/unused records |","lastModifiedDate":"2024-03-21"},{"lineNumber":345,"author":{"gitId":"JukeBoxK"},"content":"| `* *` | secretary | tag individual contacts | organize the contact based on tags |","lastModifiedDate":"2024-03-21"},{"lineNumber":346,"author":{"gitId":"JukeBoxK"},"content":"| `* *` | secretary | delete a tag of an individual contact | make sure that the tag only is for the necessary users |","lastModifiedDate":"2024-03-21"},{"lineNumber":347,"author":{"gitId":"JukeBoxK"},"content":"| `*` | user | undo my command | save time on undoing the effects of a wrong command |","lastModifiedDate":"2024-03-21"},{"lineNumber":348,"author":{"gitId":"JukeBoxK"},"content":"| `*` | user | redo my undo | save time on undoing the effects of a wrong undo |","lastModifiedDate":"2024-03-21"},{"lineNumber":349,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":350,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":351,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":352,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":353,"author":{"gitId":"miffi"},"content":"(For all use cases below, the **System** is `OfficeHarbor` (OH) and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2024-03-08"},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":355,"author":{"gitId":"JukeBoxK"},"content":"**UC01: View contacts**","lastModifiedDate":"2024-03-20"},{"lineNumber":356,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":357,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":358,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":359,"author":{"gitId":"JukeBoxK"},"content":"1. User requests to list people.","lastModifiedDate":"2024-03-20"},{"lineNumber":360,"author":{"gitId":"JukeBoxK"},"content":"2. OH shows a list of people.","lastModifiedDate":"2024-03-20"},{"lineNumber":361,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":362,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":363,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":364,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":365,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":366,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-03-20"},{"lineNumber":367,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":368,"author":{"gitId":"JukeBoxK"},"content":" * 2a1. No list is shown.","lastModifiedDate":"2024-03-20"},{"lineNumber":369,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":370,"author":{"gitId":"JukeBoxK"},"content":" Use case ends.","lastModifiedDate":"2024-03-20"},{"lineNumber":371,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":372,"author":{"gitId":"JukeBoxK"},"content":"**UC02: Add a contact**","lastModifiedDate":"2024-03-20"},{"lineNumber":373,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":374,"author":{"gitId":"radeon2525"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":375,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":376,"author":{"gitId":"JukeBoxK"},"content":"1. User requests to add a person along with details.","lastModifiedDate":"2024-03-20"},{"lineNumber":377,"author":{"gitId":"JukeBoxK"},"content":"2. OH adds the person.","lastModifiedDate":"2024-03-20"},{"lineNumber":378,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":379,"author":{"gitId":"radeon2525"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":380,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":381,"author":{"gitId":"radeon2525"},"content":"**Extensions**","lastModifiedDate":"2024-03-07"},{"lineNumber":382,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":383,"author":{"gitId":"radeon2525"},"content":"* 1a. The given format is invalid.","lastModifiedDate":"2024-03-07"},{"lineNumber":384,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":385,"author":{"gitId":"radeon2525"},"content":" * 1a1. AddressBook shows an error message.","lastModifiedDate":"2024-03-07"},{"lineNumber":386,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":387,"author":{"gitId":"radeon2525"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-07"},{"lineNumber":388,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":389,"author":{"gitId":"JukeBoxK"},"content":"**UC03: Remove a contact**","lastModifiedDate":"2024-03-20"},{"lineNumber":390,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":391,"author":{"gitId":"JukeBoxK"},"content":"**MSS**","lastModifiedDate":"2024-03-20"},{"lineNumber":392,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":393,"author":{"gitId":"JukeBoxK"},"content":"1. User requests to list contacts (UC01).","lastModifiedDate":"2024-03-20"},{"lineNumber":394,"author":{"gitId":"JukeBoxK"},"content":"2. User requests to remove a specific contact in the list.","lastModifiedDate":"2024-03-20"},{"lineNumber":395,"author":{"gitId":"JukeBoxK"},"content":"3. OH removes the contact.","lastModifiedDate":"2024-03-20"},{"lineNumber":396,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":397,"author":{"gitId":"JukeBoxK"},"content":" Use case ends.","lastModifiedDate":"2024-03-20"},{"lineNumber":398,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":399,"author":{"gitId":"JukeBoxK"},"content":"**Extensions**","lastModifiedDate":"2024-03-20"},{"lineNumber":400,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":401,"author":{"gitId":"-"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2024-03-20"},{"lineNumber":402,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":403,"author":{"gitId":"JukeBoxK"},"content":" * 3a1. OH shows an error message.","lastModifiedDate":"2024-03-20"},{"lineNumber":404,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":405,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-20"},{"lineNumber":406,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":407,"author":{"gitId":"JukeBoxK"},"content":"**UC04: Tagging contacts**","lastModifiedDate":"2024-03-20"},{"lineNumber":408,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":409,"author":{"gitId":"JukeBoxK"},"content":"**MSS**","lastModifiedDate":"2024-03-20"},{"lineNumber":410,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":411,"author":{"gitId":"JukeBoxK"},"content":"1. User requests to list contacts (UC01).","lastModifiedDate":"2024-03-20"},{"lineNumber":412,"author":{"gitId":"JukeBoxK"},"content":"2. User requests to add a tag to a specific contact in the list.","lastModifiedDate":"2024-03-20"},{"lineNumber":413,"author":{"gitId":"JukeBoxK"},"content":"3. OH adds the tag to the contact.","lastModifiedDate":"2024-03-20"},{"lineNumber":414,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":415,"author":{"gitId":"JukeBoxK"},"content":" Use case ends.","lastModifiedDate":"2024-03-20"},{"lineNumber":416,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":417,"author":{"gitId":"JukeBoxK"},"content":"**Extensions**","lastModifiedDate":"2024-03-20"},{"lineNumber":418,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":419,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":420,"author":{"gitId":"JukeBoxK"},"content":"* 2a. The given index is invalid.","lastModifiedDate":"2024-03-20"},{"lineNumber":421,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":422,"author":{"gitId":"JukeBoxK"},"content":" * 2a1. OH shows an error message.","lastModifiedDate":"2024-03-20"},{"lineNumber":423,"author":{"gitId":"miffi"},"content":" ","lastModifiedDate":"2024-03-08"},{"lineNumber":424,"author":{"gitId":"JukeBoxK"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-20"},{"lineNumber":425,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":426,"author":{"gitId":"JukeBoxK"},"content":"* 2b. The given tag is empty or invalid.","lastModifiedDate":"2024-03-20"},{"lineNumber":427,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":428,"author":{"gitId":"JukeBoxK"},"content":" * 2b. OH shows an error message.","lastModifiedDate":"2024-03-20"},{"lineNumber":429,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":430,"author":{"gitId":"JukeBoxK"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-20"},{"lineNumber":431,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":432,"author":{"gitId":"JukeBoxK"},"content":"**UC05: Deleting a tag**","lastModifiedDate":"2024-03-20"},{"lineNumber":433,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":434,"author":{"gitId":"JukeBoxK"},"content":"**MSS**","lastModifiedDate":"2024-03-09"},{"lineNumber":435,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":436,"author":{"gitId":"JukeBoxK"},"content":"1. User requests to list contacts (UC01).","lastModifiedDate":"2024-03-20"},{"lineNumber":437,"author":{"gitId":"JukeBoxK"},"content":"2. User requests to delete a specific tag of a person from the list.","lastModifiedDate":"2024-03-20"},{"lineNumber":438,"author":{"gitId":"JukeBoxK"},"content":"3. OH deletes the specified tag of that person.","lastModifiedDate":"2024-03-20"},{"lineNumber":439,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":440,"author":{"gitId":"JukeBoxK"},"content":" Use case ends.","lastModifiedDate":"2024-03-09"},{"lineNumber":441,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":442,"author":{"gitId":"JukeBoxK"},"content":"**Extensions**","lastModifiedDate":"2024-03-09"},{"lineNumber":443,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":444,"author":{"gitId":"JukeBoxK"},"content":"* 2a. The given index is invalid.","lastModifiedDate":"2024-03-20"},{"lineNumber":445,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":446,"author":{"gitId":"JukeBoxK"},"content":" * 2a1. OH shows an error message.","lastModifiedDate":"2024-03-20"},{"lineNumber":447,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":448,"author":{"gitId":"JukeBoxK"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-20"},{"lineNumber":449,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":450,"author":{"gitId":"JukeBoxK"},"content":"* 2b. The specified tag does not exist.","lastModifiedDate":"2024-03-20"},{"lineNumber":451,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":452,"author":{"gitId":"JukeBoxK"},"content":" * 2b1. OH shows an error message.","lastModifiedDate":"2024-03-20"},{"lineNumber":453,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":454,"author":{"gitId":"JukeBoxK"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-09"},{"lineNumber":455,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":456,"author":{"gitId":"JukeBoxK"},"content":"**UC06: Undoing a Command**","lastModifiedDate":"2024-03-20"},{"lineNumber":457,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":458,"author":{"gitId":"JukeBoxK"},"content":"**MSS**","lastModifiedDate":"2024-03-20"},{"lineNumber":459,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":460,"author":{"gitId":"JukeBoxK"},"content":"1. User requests to undo a command.","lastModifiedDate":"2024-03-20"},{"lineNumber":461,"author":{"gitId":"JukeBoxK"},"content":"2. OH resets to the state before the latest command.","lastModifiedDate":"2024-03-20"},{"lineNumber":462,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":463,"author":{"gitId":"JukeBoxK"},"content":" Use case ends.","lastModifiedDate":"2024-03-20"},{"lineNumber":464,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":465,"author":{"gitId":"JukeBoxK"},"content":"**Extensions**","lastModifiedDate":"2024-03-20"},{"lineNumber":466,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":467,"author":{"gitId":"JukeBoxK"},"content":"* 2a. No command has been run since opening the app.","lastModifiedDate":"2024-03-20"},{"lineNumber":468,"author":{"gitId":"JukeBoxK"},"content":" ","lastModifiedDate":"2024-03-20"},{"lineNumber":469,"author":{"gitId":"JukeBoxK"},"content":" * 2a1. OH shows an error message. ","lastModifiedDate":"2024-03-20"},{"lineNumber":470,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":471,"author":{"gitId":"JukeBoxK"},"content":" Use case ends.","lastModifiedDate":"2024-03-20"},{"lineNumber":472,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":473,"author":{"gitId":"JukeBoxK"},"content":"**UC06: Redoing an Undo Command**","lastModifiedDate":"2024-03-20"},{"lineNumber":474,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":475,"author":{"gitId":"JukeBoxK"},"content":"**MSS**","lastModifiedDate":"2024-03-20"},{"lineNumber":476,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":477,"author":{"gitId":"JukeBoxK"},"content":"1. User requests to redo an undo.","lastModifiedDate":"2024-03-20"},{"lineNumber":478,"author":{"gitId":"JukeBoxK"},"content":"2. OH resets to the state before the latest command.","lastModifiedDate":"2024-03-20"},{"lineNumber":479,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":480,"author":{"gitId":"JukeBoxK"},"content":" Use case ends.","lastModifiedDate":"2024-03-20"},{"lineNumber":481,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":482,"author":{"gitId":"JukeBoxK"},"content":"**Extensions**","lastModifiedDate":"2024-03-20"},{"lineNumber":483,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":484,"author":{"gitId":"JukeBoxK"},"content":"* 2a. No command has been run since opening the app.","lastModifiedDate":"2024-03-20"},{"lineNumber":485,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":486,"author":{"gitId":"JukeBoxK"},"content":" * 2a1. OH shows an error message.","lastModifiedDate":"2024-03-20"},{"lineNumber":487,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":488,"author":{"gitId":"JukeBoxK"},"content":" Use case ends.","lastModifiedDate":"2024-03-20"},{"lineNumber":489,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":490,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":491,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":492,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":493,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":494,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":495,"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":496,"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":497,"author":{"gitId":"radeon2525"},"content":"3. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be","lastModifiedDate":"2024-03-07"},{"lineNumber":498,"author":{"gitId":"radeon2525"},"content":" able to accomplish most of the tasks faster using commands than using the mouse.","lastModifiedDate":"2024-03-07"},{"lineNumber":499,"author":{"gitId":"radeon2525"},"content":"4. Should be able to handle private contact details securely.","lastModifiedDate":"2024-03-07"},{"lineNumber":500,"author":{"gitId":"radeon2525"},"content":"5. Should be able to handle a large number of contacts without consuming a large amount of memory.","lastModifiedDate":"2024-03-07"},{"lineNumber":501,"author":{"gitId":"radeon2525"},"content":"6. Should be able to handle a large number of contacts without slowing down the app.","lastModifiedDate":"2024-03-07"},{"lineNumber":502,"author":{"gitId":"radeon2525"},"content":"7. Should be able to handle a large number of contacts without losing the data.","lastModifiedDate":"2024-03-07"},{"lineNumber":503,"author":{"gitId":"radeon2525"},"content":"8. Should be able to handle a large number of contacts without losing the data even in the event of a system crash.","lastModifiedDate":"2024-03-07"},{"lineNumber":504,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":505,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":506,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":507,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09"},{"lineNumber":508,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23"},{"lineNumber":509,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":510,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":511,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":512,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":513,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":514,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":515,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":516,"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":517,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":518,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":519,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":520,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":521,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":522,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":523,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":524,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":525,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":526,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":527,"author":{"gitId":"radeon2525"},"content":" 1. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be","lastModifiedDate":"2024-03-07"},{"lineNumber":528,"author":{"gitId":"radeon2525"},"content":" optimum.","lastModifiedDate":"2024-03-07"},{"lineNumber":529,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":530,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":531,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":532,"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":533,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":534,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":535,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":536,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":537,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":538,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":539,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":540,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":541,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":542,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":543,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":544,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":545,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":546,"author":{"gitId":"radeon2525"},"content":" Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message.","lastModifiedDate":"2024-03-07"},{"lineNumber":547,"author":{"gitId":"radeon2525"},"content":" Timestamp in the status bar is updated.","lastModifiedDate":"2024-03-07"},{"lineNumber":548,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":549,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":550,"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":551,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":552,"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":553,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":554,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":555,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":556,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":557,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":558,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":559,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":560,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":561,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":562,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":563,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"Derekljh":7,"radeon2525":122,"JukeBoxK":100,"miffi":10,"-":324}},{"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":"JukeBoxK"},"content":"OfficeHarbor (OH) is a **desktop app for managing the contacts of a tech firm\u0027s teams, 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, OH can get your contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2024-02-29"},{"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":"JukeBoxK"},"content":"2. Download the latest `officeharbor.jar` from [here](https://github.com/AY2324S2-CS2103T-W13-2/tphone:releases).","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"JukeBoxK"},"content":"3. Copy the file to the folder you want to use as the _home folder_ for your OH.","lastModifiedDate":"2024-02-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"JukeBoxK"},"content":"4. (a) Double-click on the `officeharbor.jar` file to run the application.","lastModifiedDate":"2024-02-29"},{"lineNumber":22,"author":{"gitId":"JukeBoxK"},"content":" (b) (Or) Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar officeharbor.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2024-02-29"},{"lineNumber":23,"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":24,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"JukeBoxK"},"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":"2024-02-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"JukeBoxK"},"content":" * `add name:John Doe phone:98765432 email:johnd@example.com address:John street, block 123, #01-01` : Adds a contact named `John Doe` to OH.","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2023-01-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"JukeBoxK"},"content":"6. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2024-02-29"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"block\" class\u003d\"alert alert-info\"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"**:information_source: Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"JukeBoxK"},"content":"* Words enclosed between diamond brackets `\u003c\u003e`, are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2024-02-29"},{"lineNumber":50,"author":{"gitId":"JukeBoxK"},"content":" e.g. in `add name:\u003cname\u003e`, `\u003cname\u003e` is a parameter which can be used as `add name:John Doe`.","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"JukeBoxK"},"content":"* Space can be added between the prefix and the word.\u003cbr\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"JukeBoxK"},"content":" e.g. either `name: \u003cname\u003e phone: \u003cphone number\u003e` or `name:\u003cname\u003e phone:\u003cphone number\u003e` is acceptable.","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"JukeBoxK"},"content":"* In some commands like tag, `[tag/\u003ctag\u003e]...` means that you can have multiple optional prefixes at the end \u003cbr\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"JukeBoxK"},"content":" e.g. the command `tag 1 tag:friends tag:colleagues` would add 2 tags directly to the contact at index 1.","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"JukeBoxK"},"content":"* Parameters can be in any order for adding a contact.\u003cbr\u003e","lastModifiedDate":"2024-02-29"},{"lineNumber":59,"author":{"gitId":"JukeBoxK"},"content":" e.g. if the command specifies `name:\u003cname\u003e phone:\u003cphone number\u003e`, `phone:\u003cphone number\u003e name:\u003cname\u003e` is also acceptable.","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"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":62,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":64,"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":65,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"JukeBoxK"},"content":"Shows a message explaining how to access the help page.","lastModifiedDate":"2024-02-29"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"### Adding a person: `add`","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"JukeBoxK"},"content":"Adds a contact with the input details to OH.","lastModifiedDate":"2024-02-29"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"JukeBoxK"},"content":"Format: `add name:\u003cname\u003e phone:\u003cphone number\u003e email:\u003cemail address\u003e address:\u003caddress\u003e`","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"JukeBoxK"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e","lastModifiedDate":"2024-02-29"},{"lineNumber":83,"author":{"gitId":"JukeBoxK"},"content":"All components are necessary.","lastModifiedDate":"2024-02-29"},{"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":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"JukeBoxK"},"content":"* `add name:John Doe phone:98765432 email:johnd@example.com address:John street, block 123, #01-01`","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"JukeBoxK"},"content":"* `add name:Virat Kohli phone:98765432 email:virat@gmail.com address:Altamount Road, block 10, #05-02`","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":90,"author":{"gitId":"JukeBoxK"},"content":"Output:","lastModifiedDate":"2024-02-29"},{"lineNumber":91,"author":{"gitId":"JukeBoxK"},"content":"The message “A new contact `name` has been added to the list. Name: `\u003cname\u003e`, Phone: `\u003cphone number\u003e`, Email: `\u003cemail\u003e`, Address: `\u003caddress\u003e`.” will be shown. ","lastModifiedDate":"2024-02-29"},{"lineNumber":92,"author":{"gitId":"JukeBoxK"},"content":"A new contact entry with the given user will be displayed in the list.","lastModifiedDate":"2024-02-29"},{"lineNumber":93,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":94,"author":{"gitId":"JukeBoxK"},"content":"![add](images/user-guide/add_mock_output.png)","lastModifiedDate":"2024-03-21"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"### Listing all persons : `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"JukeBoxK"},"content":"Shows a list of all contacts in OH.","lastModifiedDate":"2024-02-29"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"JukeBoxK"},"content":"Output:","lastModifiedDate":"2024-02-29"},{"lineNumber":103,"author":{"gitId":"JukeBoxK"},"content":"A list of added contacts if any in the form of a scrollable pane will be shown. ","lastModifiedDate":"2024-02-29"},{"lineNumber":104,"author":{"gitId":"JukeBoxK"},"content":"The contacts are listed in the order in which they are added.","lastModifiedDate":"2024-02-29"},{"lineNumber":105,"author":{"gitId":"JukeBoxK"},"content":"The message \"Empty list\" is shown when there is nothing added.","lastModifiedDate":"2024-02-29"},{"lineNumber":106,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":107,"author":{"gitId":"JukeBoxK"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2024-02-29"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"JukeBoxK"},"content":"Deletes the specified contact from OH.","lastModifiedDate":"2024-02-29"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"JukeBoxK"},"content":"Format: `delete \u003cid\u003e`","lastModifiedDate":"2024-02-29"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"JukeBoxK"},"content":"* Deletes the person at the specified `\u003cid\u003e`.","lastModifiedDate":"2024-02-29"},{"lineNumber":114,"author":{"gitId":"JukeBoxK"},"content":"* The id refers to the index number shown in the contact list.","lastModifiedDate":"2024-02-29"},{"lineNumber":115,"author":{"gitId":"JukeBoxK"},"content":"* The id **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-02-29"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"JukeBoxK"},"content":"* `delete 2` deletes the 2nd person of the contact list from OH.","lastModifiedDate":"2024-02-29"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"JukeBoxK"},"content":"Output:","lastModifiedDate":"2024-02-29"},{"lineNumber":121,"author":{"gitId":"JukeBoxK"},"content":"The message \"Contact `name` has been deleted. Name: `name`, Phone: `phone number`, Email: `email`, Address: `address`.” will be shown.","lastModifiedDate":"2024-02-29"},{"lineNumber":122,"author":{"gitId":"JukeBoxK"},"content":"The entry with the given id will disappear from the list.","lastModifiedDate":"2024-02-29"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"JukeBoxK"},"content":"![delete](images/user-guide/delete_mock_output.png)","lastModifiedDate":"2024-03-21"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"JukeBoxK"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2024-02-29"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"JukeBoxK"},"content":"Clears all entries from OH.","lastModifiedDate":"2024-02-29"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"JukeBoxK"},"content":"Format: `clear`","lastModifiedDate":"2024-02-29"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"JukeBoxK"},"content":"Output:","lastModifiedDate":"2024-02-29"},{"lineNumber":133,"author":{"gitId":"JukeBoxK"},"content":"The message \"Address book has been cleared!\" will be shown.","lastModifiedDate":"2024-02-29"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"JukeBoxK"},"content":"### Tagging a Contact : `tag`","lastModifiedDate":"2024-02-29"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"JukeBoxK"},"content":"Tags the specified contact with the input tag name.","lastModifiedDate":"2024-02-29"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"JukeBoxK"},"content":"* Tags the person at the specified `\u003cid\u003e`.","lastModifiedDate":"2024-02-29"},{"lineNumber":140,"author":{"gitId":"JukeBoxK"},"content":"* The id refers to the index number shown in the displayed person list.","lastModifiedDate":"2024-02-29"},{"lineNumber":141,"author":{"gitId":"JukeBoxK"},"content":"* The id **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-02-29"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"JukeBoxK"},"content":"Format: `tag \u003cid\u003e tag:\u003ctag\u003e [tag:tag]...`","lastModifiedDate":"2024-03-21"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"JukeBoxK"},"content":"Example:","lastModifiedDate":"2024-02-29"},{"lineNumber":146,"author":{"gitId":"JukeBoxK"},"content":"`tag 2 friends`","lastModifiedDate":"2024-03-20"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"JukeBoxK"},"content":"Output:","lastModifiedDate":"2024-02-29"},{"lineNumber":149,"author":{"gitId":"JukeBoxK"},"content":"The message \"The following contact has been tagged with `\u003ctag name\u003e`: `contact info`.” will be shown, ","lastModifiedDate":"2024-02-29"},{"lineNumber":150,"author":{"gitId":"JukeBoxK"},"content":"where contact info is all the information of the contact.","lastModifiedDate":"2024-02-29"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"JukeBoxK"},"content":"![tag](images/user-guide/tag_mock_output.png)","lastModifiedDate":"2024-03-21"},{"lineNumber":153,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":154,"author":{"gitId":"JukeBoxK"},"content":"### Deleting a tag : `untag`","lastModifiedDate":"2024-03-20"},{"lineNumber":155,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":156,"author":{"gitId":"JukeBoxK"},"content":"Deletes the specified tag from the specified contact","lastModifiedDate":"2024-02-29"},{"lineNumber":157,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":158,"author":{"gitId":"JukeBoxK"},"content":"* Delete the specified tag of the person at the specified `\u003cid\u003e`.","lastModifiedDate":"2024-02-29"},{"lineNumber":159,"author":{"gitId":"JukeBoxK"},"content":"* The id refers to the index number shown in the displayed person list.","lastModifiedDate":"2024-02-29"},{"lineNumber":160,"author":{"gitId":"JukeBoxK"},"content":"* The id **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-02-29"},{"lineNumber":161,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":162,"author":{"gitId":"JukeBoxK"},"content":"Format: `untag \u003cid\u003e tag:\u003ctag\u003e [tag:tag]...`","lastModifiedDate":"2024-03-21"},{"lineNumber":163,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":164,"author":{"gitId":"JukeBoxK"},"content":"Output:","lastModifiedDate":"2024-02-29"},{"lineNumber":165,"author":{"gitId":"JukeBoxK"},"content":"The message \"The tag `\u003ctag\u003e` has been removed from contact: `contact info`.\" will be shown,","lastModifiedDate":"2024-03-20"},{"lineNumber":166,"author":{"gitId":"JukeBoxK"},"content":"where contact info is all the information of the contact. ","lastModifiedDate":"2024-02-29"},{"lineNumber":167,"author":{"gitId":"JukeBoxK"},"content":"The list entry of the user with \u003cid\u003e will not have the tag anymore.","lastModifiedDate":"2024-02-29"},{"lineNumber":168,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":169,"author":{"gitId":"JukeBoxK"},"content":"![delete-tag](images/user-guide/delete-tag_mock_output.png)","lastModifiedDate":"2024-03-21"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"JukeBoxK"},"content":"### Undoing a command : `undo`","lastModifiedDate":"2024-03-20"},{"lineNumber":172,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":173,"author":{"gitId":"JukeBoxK"},"content":"Resets the state of OH to before the execution of the latest command.","lastModifiedDate":"2024-03-20"},{"lineNumber":174,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":175,"author":{"gitId":"JukeBoxK"},"content":"Format: `undo`","lastModifiedDate":"2024-03-20"},{"lineNumber":176,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":177,"author":{"gitId":"JukeBoxK"},"content":"Output:","lastModifiedDate":"2024-03-20"},{"lineNumber":178,"author":{"gitId":"JukeBoxK"},"content":"The message \"Undo success!\" will be shown. ","lastModifiedDate":"2024-03-20"},{"lineNumber":179,"author":{"gitId":"JukeBoxK"},"content":"The list entry of the user will return to the state before the latest command. ","lastModifiedDate":"2024-03-20"},{"lineNumber":180,"author":{"gitId":"JukeBoxK"},"content":"If no command has been run at all, an error message \"No more commands to undo!\" will be shown instead.","lastModifiedDate":"2024-03-20"},{"lineNumber":181,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":182,"author":{"gitId":"JukeBoxK"},"content":"Example of undoing a delete command.","lastModifiedDate":"2024-03-20"},{"lineNumber":183,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":184,"author":{"gitId":"JukeBoxK"},"content":"Contact after a delete command:","lastModifiedDate":"2024-03-20"},{"lineNumber":185,"author":{"gitId":"JukeBoxK"},"content":"![delete_operation](images/user-guide/delete_operation-undo-mock.png)","lastModifiedDate":"2024-03-21"},{"lineNumber":186,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":187,"author":{"gitId":"JukeBoxK"},"content":"Contact after the delete command is undone:","lastModifiedDate":"2024-03-20"},{"lineNumber":188,"author":{"gitId":"JukeBoxK"},"content":"![undo](images/user-guide/undo_mock_output.png)","lastModifiedDate":"2024-03-21"},{"lineNumber":189,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":190,"author":{"gitId":"JukeBoxK"},"content":"### Redoing a command : `redo`","lastModifiedDate":"2024-03-20"},{"lineNumber":191,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":192,"author":{"gitId":"JukeBoxK"},"content":"Resets the state of OH to before the latest undo command.","lastModifiedDate":"2024-03-20"},{"lineNumber":193,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":194,"author":{"gitId":"JukeBoxK"},"content":"Format: `redo`","lastModifiedDate":"2024-03-20"},{"lineNumber":195,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":196,"author":{"gitId":"JukeBoxK"},"content":"Output:","lastModifiedDate":"2024-03-20"},{"lineNumber":197,"author":{"gitId":"JukeBoxK"},"content":"The message \"Redo success!\" will be shown.","lastModifiedDate":"2024-03-20"},{"lineNumber":198,"author":{"gitId":"JukeBoxK"},"content":"The list entry of the user will return to the state before the latest undo command.","lastModifiedDate":"2024-03-20"},{"lineNumber":199,"author":{"gitId":"JukeBoxK"},"content":"If no undo command has been run at all, an error message \"No more commands to redo!\" will be shown instead.","lastModifiedDate":"2024-03-20"},{"lineNumber":200,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":201,"author":{"gitId":"JukeBoxK"},"content":"Example of redoing the previous undo command:","lastModifiedDate":"2024-03-20"},{"lineNumber":202,"author":{"gitId":"JukeBoxK"},"content":"![redo](images/user-guide/redo_mock_output.png)","lastModifiedDate":"2024-03-21"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":204,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"miffi"},"content":"OfficeHarbor data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.","lastModifiedDate":"2024-02-24"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":216,"author":{"gitId":"JukeBoxK"},"content":"OfficeHarbor data are saved automatically as a JSON file `[JAR file location]/dataddress:officeharbor.json`. Advanced users are welcome to update data directly by editing that data file.","lastModifiedDate":"2024-03-21"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":218,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e:exclamation: **Caution:**","lastModifiedDate":"2021-02-04"},{"lineNumber":219,"author":{"gitId":"miffi"},"content":"If your changes to the data file makes its format invalid, OfficeHarbor 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.\u003cbr\u003e","lastModifiedDate":"2024-02-24"},{"lineNumber":220,"author":{"gitId":"JukeBoxK"},"content":"Furthermore, certain edits can cause the OfficeHarbor to behave in unexpected ways (e.g., if a value entered is outside the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.","lastModifiedDate":"2024-02-29"},{"lineNumber":221,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-02-04"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":223,"author":{"gitId":"JukeBoxK"},"content":"### Filtering tags `[coming in v1.3]`","lastModifiedDate":"2024-02-29"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04"},{"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":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"miffi"},"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 OfficeHarbor home folder.","lastModifiedDate":"2024-02-24"},{"lineNumber":233,"author":{"gitId":"-"},"content":"","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":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":238,"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":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":240,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":242,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"JukeBoxK"},"content":"| Action | Format, Examples |","lastModifiedDate":"2024-02-29"},{"lineNumber":245,"author":{"gitId":"JukeBoxK"},"content":"|----------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|","lastModifiedDate":"2024-03-21"},{"lineNumber":246,"author":{"gitId":"JukeBoxK"},"content":"| **Add** | `add name:\u003cname\u003e phone:\u003cphone number\u003e email:\u003cemail address\u003e address:\u003caddress\u003e` \u003cbr\u003e e.g., `add name:James Ho phone:22224444 email:jamesho@example.com address:123, Clementi Rd, 1234665` |","lastModifiedDate":"2024-03-21"},{"lineNumber":247,"author":{"gitId":"JukeBoxK"},"content":"| **Delete** | `delete \u003cid\u003e`\u003cbr\u003e e.g., `delete 3` |","lastModifiedDate":"2024-03-20"},{"lineNumber":248,"author":{"gitId":"JukeBoxK"},"content":"| **Clear** | `clear` |","lastModifiedDate":"2024-02-29"},{"lineNumber":249,"author":{"gitId":"JukeBoxK"},"content":"| **Tag** | `tag \u003cid\u003e tag:\u003ctag\u003e [tag:tag]...` \u003cbr\u003e e.g., `tag 2 tag:friends` |","lastModifiedDate":"2024-03-21"},{"lineNumber":250,"author":{"gitId":"JukeBoxK"},"content":"| **Delete Tag** | `untag \u003cid\u003e tag:\u003ctag\u003e [tag:tag]...` \u003cbr\u003e e.g., `untag 2 tag:friends` |","lastModifiedDate":"2024-03-21"},{"lineNumber":251,"author":{"gitId":"JukeBoxK"},"content":"| **List** | `list` |","lastModifiedDate":"2024-02-29"},{"lineNumber":252,"author":{"gitId":"JukeBoxK"},"content":"| **Undo** | `undo` |","lastModifiedDate":"2024-03-20"},{"lineNumber":253,"author":{"gitId":"JukeBoxK"},"content":"| **Redo** | `redo` |","lastModifiedDate":"2024-03-20"},{"lineNumber":254,"author":{"gitId":"JukeBoxK"},"content":"| **Help** | `help` |","lastModifiedDate":"2024-02-29"}],"authorContributionMap":{"JukeBoxK":126,"miffi":3,"-":125}},{"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":"miffi"},"content":" content: \"OfficeHarbor\";","lastModifiedDate":"2024-02-24"},{"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":{"miffi":1,"-":294}},{"path":"docs/diagrams/TagCommand.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Derekljh"},"content":"@startuml","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"Derekljh"},"content":"!include Style.puml","lastModifiedDate":"2024-03-22"},{"lineNumber":3,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"Derekljh"},"content":"box Logic LOGIC_COLOR_T2","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"Derekljh"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":6,"author":{"gitId":"Derekljh"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"Derekljh"},"content":"participant \":TagCommandParser\" as TagCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"Derekljh"},"content":"participant \":TagCommand\" as TagCommand LOGIC_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"Derekljh"},"content":"participant \":CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"Derekljh"},"content":"end box","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"Derekljh"},"content":"box Model MODEL_COLOR_T2","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"Derekljh"},"content":"participant \":Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"Derekljh"},"content":"end box","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"Derekljh"},"content":"[-\u003e LogicManager : execute(\"tag 1 tag: example\")","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"Derekljh"},"content":"activate LogicManager","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"Derekljh"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"tag 1 tag: example\")","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"Derekljh"},"content":"activate AddressBookParser","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"Derekljh"},"content":"create TagCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"Derekljh"},"content":"AddressBookParser -\u003e TagCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"Derekljh"},"content":"activate TagCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"Derekljh"},"content":"TagCommandParser --\u003e AddressBookParser","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"Derekljh"},"content":"deactivate TagCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"Derekljh"},"content":"AddressBookParser -\u003e TagCommandParser : parse(\"1, example\")","lastModifiedDate":"2024-03-22"},{"lineNumber":30,"author":{"gitId":"Derekljh"},"content":"activate TagCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":32,"author":{"gitId":"Derekljh"},"content":"create TagCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":33,"author":{"gitId":"Derekljh"},"content":"TagCommandParser -\u003e TagCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"Derekljh"},"content":"activate TagCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":35,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":36,"author":{"gitId":"Derekljh"},"content":"TagCommand --\u003e TagCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":37,"author":{"gitId":"Derekljh"},"content":"deactivate TagCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":38,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"Derekljh"},"content":"TagCommandParser --\u003e AddressBookParser","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"Derekljh"},"content":"destroy TagCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":41,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":42,"author":{"gitId":"Derekljh"},"content":"AddressBookParser --\u003e LogicManager","lastModifiedDate":"2024-03-22"},{"lineNumber":43,"author":{"gitId":"Derekljh"},"content":"deactivate AddressBookParser","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"Derekljh"},"content":"LogicManager -\u003e TagCommand: execute(m)","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"Derekljh"},"content":"activate TagCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"Derekljh"},"content":"TagCommand -\u003e Model : setPerson(personToTag, taggedPerson)","lastModifiedDate":"2024-03-22"},{"lineNumber":49,"author":{"gitId":"Derekljh"},"content":"activate Model","lastModifiedDate":"2024-03-22"},{"lineNumber":50,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":51,"author":{"gitId":"Derekljh"},"content":"Model --\u003e TagCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"Derekljh"},"content":"deactivate Model","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":54,"author":{"gitId":"Derekljh"},"content":"create CommandResult","lastModifiedDate":"2024-03-22"},{"lineNumber":55,"author":{"gitId":"Derekljh"},"content":"TagCommand -\u003e CommandResult","lastModifiedDate":"2024-03-22"},{"lineNumber":56,"author":{"gitId":"Derekljh"},"content":"activate CommandResult","lastModifiedDate":"2024-03-22"},{"lineNumber":57,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":58,"author":{"gitId":"Derekljh"},"content":"CommandResult --\u003e TagCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":59,"author":{"gitId":"Derekljh"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-22"},{"lineNumber":60,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":61,"author":{"gitId":"Derekljh"},"content":"TagCommand --\u003e LogicManager","lastModifiedDate":"2024-03-22"},{"lineNumber":62,"author":{"gitId":"Derekljh"},"content":"deactivate TagCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":63,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":64,"author":{"gitId":"Derekljh"},"content":"\u003c-- LogicManager","lastModifiedDate":"2024-03-22"},{"lineNumber":65,"author":{"gitId":"Derekljh"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-22"},{"lineNumber":66,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":67,"author":{"gitId":"Derekljh"},"content":"@enduml","lastModifiedDate":"2024-03-22"}],"authorContributionMap":{"Derekljh":67}},{"path":"docs/diagrams/redo_uml.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"radeon2525"},"content":"@startuml","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":3,"author":{"gitId":"radeon2525"},"content":"class RedoCommand {","lastModifiedDate":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"radeon2525"},"content":" - COMMAND_WORD: String","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"radeon2525"},"content":" - MESSAGE_SUCCESS: String","lastModifiedDate":"2024-03-22"},{"lineNumber":6,"author":{"gitId":"radeon2525"},"content":" - MESSAGE_FAILURE: String","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"radeon2525"},"content":" + execute(model: Model, history: CommandHistory): CommandResult","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"radeon2525"},"content":"}","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"radeon2525"},"content":"Model -- RedoCommand : model","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"radeon2525"},"content":"CommandHistory -- RedoCommand : history","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"radeon2525"},"content":"CommandResult -- RedoCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"radeon2525"},"content":"RedoCommand --\u003e Model : updates","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"radeon2525"},"content":"RedoCommand --\u003e CommandHistory : updates","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"radeon2525"},"content":"@enduml","lastModifiedDate":"2024-03-22"}],"authorContributionMap":{"radeon2525":18}},{"path":"docs/diagrams/undo_uml.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"radeon2525"},"content":"@startuml","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":3,"author":{"gitId":"radeon2525"},"content":"class UndoCommand {","lastModifiedDate":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"radeon2525"},"content":" - COMMAND_WORD: String","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"radeon2525"},"content":" - MESSAGE_SUCCESS: String","lastModifiedDate":"2024-03-22"},{"lineNumber":6,"author":{"gitId":"radeon2525"},"content":" - MESSAGE_FAILURE: String","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"radeon2525"},"content":" + execute(model: Model, history: CommandHistory): CommandResult","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"radeon2525"},"content":"}","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"radeon2525"},"content":"Model -- UndoCommand : model","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"radeon2525"},"content":"CommandHistory -- UndoCommand : history","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"radeon2525"},"content":"CommandResult -- UndoCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"radeon2525"},"content":"UndoCommand --\u003e Model : updates","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"radeon2525"},"content":"UndoCommand --\u003e CommandHistory : updates","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"radeon2525"},"content":"@enduml","lastModifiedDate":"2024-03-22"}],"authorContributionMap":{"radeon2525":18}},{"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":"miffi"},"content":"title: OfficeHarbor","lastModifiedDate":"2024-02-24"},{"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":"miffi"},"content":"**OfficeHarbor is a desktop application for managing a tech firm\u0027s teams.** While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface).","lastModifiedDate":"2024-02-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"miffi"},"content":"* If you are interested in using OfficeHarbor, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).","lastModifiedDate":"2024-02-24"},{"lineNumber":14,"author":{"gitId":"miffi"},"content":"* If you are interested about developing OfficeHarbor, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.","lastModifiedDate":"2024-02-24"},{"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":{"miffi":4,"-":15}},{"path":"src/main/java/seedu/address/commons/util/InvalidationListenerManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"radeon2525"},"content":"package seedu.address.commons.util;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"radeon2525"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"radeon2525"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"radeon2525"},"content":"import javafx.beans.InvalidationListener;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"radeon2525"},"content":"import javafx.beans.Observable;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"radeon2525"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"radeon2525"},"content":" * Manages a list of {@link InvalidationListener}.","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"radeon2525"},"content":"public class InvalidationListenerManager {","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"radeon2525"},"content":" public final ArrayList\u003cInvalidationListener\u003e listeners \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"radeon2525"},"content":" * Adds {@code listener} to the list of listeners.","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"radeon2525"},"content":" * If the same listener is added more that once, then it will be notified more than once.","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"radeon2525"},"content":" public void addListener(InvalidationListener listener) {","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"radeon2525"},"content":" requireNonNull(listener);","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"radeon2525"},"content":" listeners.add(listener);","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"radeon2525"},"content":" * Calls {@link InvalidationListener#invalidated(Observable)} on all added listeners.","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"radeon2525"},"content":" * Any modifications to the listeners list during the invocation of this method","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"radeon2525"},"content":" * will only take effect on the next invocation of this method.","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"radeon2525"},"content":" *","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"radeon2525"},"content":" * @param observable The {@code Observable} that became invalid.","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"radeon2525"},"content":" public void callListeners(Observable observable) {","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"radeon2525"},"content":" // Make a copy of listeners such that any modifications to the listeners list during","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"radeon2525"},"content":" // the invocation of this method will only take effect on the next invocation of this method.","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"radeon2525"},"content":" ArrayList\u003cInvalidationListener\u003e listenersCopy \u003d new ArrayList\u003c\u003e(listeners);","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"radeon2525"},"content":" for (InvalidationListener listener : listenersCopy) {","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"radeon2525"},"content":" listener.invalidated(observable);","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"radeon2525"},"content":" * Removes {@code listener} from the list of listeners.","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"radeon2525"},"content":" * If the given listener was not previously added, then this method call is a no-op.","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"radeon2525"},"content":" * If the given listener was added more than once, then only the first occurrence in the list will be removed.","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"radeon2525"},"content":" public void removeListener(InvalidationListener listener) {","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"radeon2525"},"content":" requireNonNull(listener);","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"radeon2525"},"content":" listeners.remove(listener);","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"radeon2525"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"radeon2525":50}},{"path":"src/main/java/seedu/address/logic/CommandHistory.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"radeon2525"},"content":"package seedu.address.logic;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"radeon2525"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"radeon2525"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"radeon2525"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"radeon2525"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"radeon2525"},"content":" * Stores the history of commands executed.","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"radeon2525"},"content":"public class CommandHistory {","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"radeon2525"},"content":" private final ObservableList\u003cString\u003e userInputHistory \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"radeon2525"},"content":" private final ObservableList\u003cString\u003e unmodifiableUserInputHistory \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"radeon2525"},"content":" FXCollections.unmodifiableObservableList(userInputHistory);","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"radeon2525"},"content":" public CommandHistory() {}","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"radeon2525"},"content":" public CommandHistory(CommandHistory commandHistory) {","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"radeon2525"},"content":" userInputHistory.addAll(commandHistory.userInputHistory);","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"radeon2525"},"content":" * Appends {@code userInput} to the list of user input entered.","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"radeon2525"},"content":" public void add(String userInput) {","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"radeon2525"},"content":" requireNonNull(userInput);","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"radeon2525"},"content":" userInputHistory.add(userInput);","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"radeon2525"},"content":" * Returns an unmodifiable view of {@code userInputHistory}.","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"radeon2525"},"content":" public ObservableList\u003cString\u003e getHistory() {","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"radeon2525"},"content":" return unmodifiableUserInputHistory;","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"radeon2525"},"content":" public boolean equals(Object obj) {","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"radeon2525"},"content":" // short circuit if same object","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"radeon2525"},"content":" if (obj \u003d\u003d this) {","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"radeon2525"},"content":" return true;","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"radeon2525"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"radeon2525"},"content":" if (!(obj instanceof CommandHistory)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"radeon2525"},"content":" return false;","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"radeon2525"},"content":" // state check","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"radeon2525"},"content":" CommandHistory other \u003d (CommandHistory) obj;","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"radeon2525"},"content":" return userInputHistory.equals(other.userInputHistory);","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"radeon2525"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"radeon2525"},"content":" return userInputHistory.hashCode();","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"radeon2525"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"radeon2525":58}},{"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":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"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":"radeon2525"},"content":" private final CommandHistory history;","lastModifiedDate":"2024-03-18"},{"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":"radeon2525"},"content":" history \u003d new CommandHistory();","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":49,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2016-09-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2017-07-07"},{"lineNumber":53,"author":{"gitId":"radeon2525"},"content":" commandResult \u003d command.execute(model, history);","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2018-12-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":" } catch (AccessDeniedException e) {","lastModifiedDate":"2023-06-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e);","lastModifiedDate":"2023-06-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-12-09"},{"lineNumber":60,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe);","lastModifiedDate":"2023-06-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-03"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2018-12-03"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return model.getAddressBook();","lastModifiedDate":"2018-12-03"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-03"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList();","lastModifiedDate":"2016-09-25"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return model.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return model.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" model.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"radeon2525":3,"-":87}},{"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":"miffi"},"content":" public static final String MESSAGE_MISSING_TAG \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"miffi"},"content":" \"Tags [%2$s] not found for %1$s\";","lastModifiedDate":"2024-03-16"},{"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":"-"},"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":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"miffi":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":"-"},"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 seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2017-05-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2017-05-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"owesMoney\";","lastModifiedDate":"2017-05-09"},{"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":" private final Person toAdd;","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":46,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":47,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"radeon2525"},"content":" public CommandResult execute(Model model, CommandHistory history) throws CommandException {","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":55,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":58,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25"},{"lineNumber":59,"author":{"gitId":"radeon2525"},"content":" model.commitAddressBook();","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"radeon2525"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, toAdd));","lastModifiedDate":"2024-03-18"},{"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":{"radeon2525":4,"-":80}},{"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":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Clears the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class ClearCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"clear\";","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Address book has been cleared!\";","lastModifiedDate":"2016-08-24"},{"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":"radeon2525"},"content":" public CommandResult execute(Model model, CommandHistory history) {","lastModifiedDate":"2024-03-18"},{"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":"radeon2525"},"content":" model.commitAddressBook();","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"radeon2525":3,"-":22}},{"path":"src/main/java/seedu/address/logic/commands/Command.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":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Represents a command with hidden internal logic and the ability to be executed.","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public abstract class Command {","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":"radeon2525"},"content":" public abstract CommandResult execute(Model model, CommandHistory history) throws CommandException;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"radeon2525":2,"-":18}},{"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":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Deletes a person identified using it\u0027s displayed index from the address book.","lastModifiedDate":"2018-04-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \": Deletes the person identified by the index number used in the displayed person list.\\n\"","lastModifiedDate":"2018-04-01"},{"lineNumber":24,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2016-09-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2016-08-24"},{"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":"-"},"content":" public DeleteCommand(Index targetIndex) {","lastModifiedDate":"2017-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2016-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":"radeon2525"},"content":" public CommandResult execute(Model model, CommandHistory history) throws CommandException {","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":" Person personToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2018-04-19"},{"lineNumber":45,"author":{"gitId":"-"},"content":" model.deletePerson(personToDelete);","lastModifiedDate":"2016-09-25"},{"lineNumber":46,"author":{"gitId":"radeon2525"},"content":" model.commitAddressBook();","lastModifiedDate":"2024-03-18"},{"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":"The-Dudeski"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return targetIndex.equals(otherDeleteCommand.targetIndex);","lastModifiedDate":"2023-07-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"The-Dudeski":1,"radeon2525":3,"-":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":"-"},"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":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"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":"-"},"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":"radeon2525"},"content":" public CommandResult execute(Model model, CommandHistory history) throws CommandException {","lastModifiedDate":"2024-03-18"},{"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":"radeon2525"},"content":" model.commitAddressBook();","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23"},{"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":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26"},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":97,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":100,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":101,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21"},{"lineNumber":102,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":103,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2017-06-21"},{"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":"-"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTags);","lastModifiedDate":"2017-03-14"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":134,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26"},{"lineNumber":135,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26"},{"lineNumber":136,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":137,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26"},{"lineNumber":138,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21"},{"lineNumber":139,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":140,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":141,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21"},{"lineNumber":142,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":144,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":146,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":147,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11"},{"lineNumber":148,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":149,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":150,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26"},{"lineNumber":151,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15"},{"lineNumber":152,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15"},{"lineNumber":153,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15"},{"lineNumber":154,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15"},{"lineNumber":155,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":158,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":159,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26"},{"lineNumber":160,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":161,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26"},{"lineNumber":162,"author":{"gitId":"-"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, tags);","lastModifiedDate":"2018-08-14"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":165,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21"},{"lineNumber":166,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":169,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":170,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":173,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21"},{"lineNumber":174,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":177,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26"},{"lineNumber":178,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21"},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":181,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21"},{"lineNumber":182,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21"},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":185,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":186,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":189,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21"},{"lineNumber":190,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21"},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":193,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26"},{"lineNumber":194,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":197,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":198,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11"},{"lineNumber":199,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":200,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":201,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21"},{"lineNumber":202,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11"},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":205,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":206,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11"},{"lineNumber":207,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11"},{"lineNumber":208,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11"},{"lineNumber":209,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":210,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":211,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11"},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":214,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":215,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":216,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":217,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":218,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":220,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":221,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05"},{"lineNumber":222,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":223,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":225,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":226,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":227,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":228,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":229,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":230,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags);","lastModifiedDate":"2023-07-13"},{"lineNumber":231,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":244,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"radeon2525":3,"-":241}},{"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":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Terminates the program.","lastModifiedDate":"2016-09-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2016-09-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"exit\";","lastModifiedDate":"2016-09-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EXIT_ACKNOWLEDGEMENT \u003d \"Exiting Address Book as requested ...\";","lastModifiedDate":"2016-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22"},{"lineNumber":16,"author":{"gitId":"radeon2525"},"content":" public CommandResult execute(Model model, CommandHistory history) {","lastModifiedDate":"2024-03-18"},{"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":{"radeon2525":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":"2018-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":6,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Finds and lists all persons in address book whose name contains any of the argument keywords.","lastModifiedDate":"2016-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Keyword matching is case insensitive.","lastModifiedDate":"2018-04-01"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2016-09-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"find\";","lastModifiedDate":"2016-09-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":19,"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":20,"author":{"gitId":"-"},"content":" + \"the specified keywords (case-insensitive) and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2018-04-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \"Parameters: KEYWORD [MORE_KEYWORDS]...\\n\"","lastModifiedDate":"2016-09-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" alice bob charlie\";","lastModifiedDate":"2016-09-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final NameContainsKeywordsPredicate predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public FindCommand(NameContainsKeywordsPredicate predicate) {","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22"},{"lineNumber":31,"author":{"gitId":"radeon2525"},"content":" public CommandResult execute(Model model, CommandHistory history) {","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(predicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" return new CommandResult(","lastModifiedDate":"2018-04-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":" String.format(Messages.MESSAGE_PERSONS_LISTED_OVERVIEW, model.getFilteredPersonList().size()));","lastModifiedDate":"2018-04-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" if (!(other instanceof FindCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" FindCommand otherFindCommand \u003d (FindCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return predicate.equals(otherFindCommand.predicate);","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"radeon2525":2,"-":57}},{"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":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-31"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Format full help instructions for every command for display.","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class HelpCommand extends Command {","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"help\";","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Shows program usage instructions.\\n\"","lastModifiedDate":"2016-08-24"},{"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":"-"},"content":" public static final String SHOWING_HELP_MESSAGE \u003d \"Opened help window.\";","lastModifiedDate":"2016-08-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-31"},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"radeon2525"},"content":" public CommandResult execute(Model model, CommandHistory history) {","lastModifiedDate":"2024-03-18"},{"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":{"radeon2525":2,"-":20}},{"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":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Lists all persons in the address book to the user.","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2016-09-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"list\";","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"JukeBoxK"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all contacts\";","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"JukeBoxK"},"content":" public static final String MESSAGE_EMPTY \u003d \"The list is empty\";","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"radeon2525"},"content":" public CommandResult execute(Model model, CommandHistory history) {","lastModifiedDate":"2024-03-18"},{"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":"JukeBoxK"},"content":" if (model.getFilteredPersonList().size() \u003d\u003d 0) {","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"JukeBoxK"},"content":" return new CommandResult(MESSAGE_EMPTY);","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"JukeBoxK"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2016-09-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"radeon2525":2,"JukeBoxK":5,"-":21}},{"path":"src/main/java/seedu/address/logic/commands/RedoCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"radeon2525"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"radeon2525"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"radeon2525"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"radeon2525"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"radeon2525"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"radeon2525"},"content":" * Reverts the {@code model}\u0027s address book to its previously undone state.","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"radeon2525"},"content":"public class RedoCommand extends Command {","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"radeon2525"},"content":" public static final String COMMAND_WORD \u003d \"redo\";","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"radeon2525"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Redo success!\";","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"radeon2525"},"content":" public static final String MESSAGE_FAILURE \u003d \"No more commands to redo!\";","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"radeon2525"},"content":" public CommandResult execute(Model model, CommandHistory history) throws CommandException {","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"radeon2525"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"radeon2525"},"content":" if (!model.canRedoAddressBook()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"radeon2525"},"content":" throw new CommandException(MESSAGE_FAILURE);","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"radeon2525"},"content":" model.redoAddressBook();","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"radeon2525"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"radeon2525"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"radeon2525"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"radeon2525":31}},{"path":"src/main/java/seedu/address/logic/commands/TagCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"radeon2525"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"Derekljh"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"Derekljh"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"Derekljh"},"content":"import java.util.Collection;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"Derekljh"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"Derekljh"},"content":"import java.util.List;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"Derekljh"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"Derekljh"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"Derekljh"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"Derekljh"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"Derekljh"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"radeon2525"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"radeon2525"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"radeon2525"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"radeon2525"},"content":"/**","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"radeon2525"},"content":" * Tags a contact identified using its displayed index in the address book.","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"radeon2525"},"content":"public class TagCommand extends Command {","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"radeon2525"},"content":" public static final String COMMAND_WORD \u003d \"tag\";","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"radeon2525"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"Derekljh"},"content":" + \": Tags the contact identified by the index number\"","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"Derekljh"},"content":" + \" used in the displayed contact list with the specified tag.\\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"Derekljh"},"content":" + \"Parameters: INDEX (must be a positive integer) tag: TAG\\n\"","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"Derekljh"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 tag: friends\";","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"radeon2525"},"content":" public static final String MESSAGE_TAG_CONTACT_SUCCESS \u003d \"Tagged Contact: %1$s with %2$s\";","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"Derekljh"},"content":" private final Index targetIndex;","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"Derekljh"},"content":" private final Set\u003cTag\u003e tags;","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"Derekljh"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"Derekljh"},"content":" * Creates a command to add a {@code tag} to the person at {@code index}.","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"Derekljh"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"Derekljh"},"content":" public TagCommand(Index index, Collection\u003cTag\u003e tags) {","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"Derekljh"},"content":" this.targetIndex \u003d index;","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"Derekljh"},"content":" this.tags \u003d new HashSet\u003c\u003e(tags);","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"radeon2525"},"content":" public CommandResult execute(Model model, CommandHistory history) throws CommandException {","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"Derekljh"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"radeon2525"},"content":" requireNonNull(history);","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"Derekljh"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"Derekljh"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"Derekljh"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"Derekljh"},"content":" Person personToTag \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":61,"author":{"gitId":"Derekljh"},"content":" Person taggedPerson \u003d addTag(personToTag);","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"radeon2525"},"content":" model.setPerson(personToTag, taggedPerson);","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"Derekljh"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-13"},{"lineNumber":64,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"radeon2525"},"content":" // Construct the command result message with the tag information","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"radeon2525"},"content":" String tagInfo \u003d String.format(MESSAGE_TAG_CONTACT_SUCCESS,","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"radeon2525"},"content":" Messages.format(taggedPerson), showTags(tags));","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"radeon2525"},"content":" CommandResult result \u003d new CommandResult(tagInfo);","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"radeon2525"},"content":" // Add the executed command to the command history","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"radeon2525"},"content":" history.add(String.valueOf(this));","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"radeon2525"},"content":" model.commitAddressBook();","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"radeon2525"},"content":" return result;","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"radeon2525"},"content":" static String showTags(Collection\u003cTag\u003e tags) {","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"Derekljh"},"content":" return tags.stream().map((tag) -\u003e tag.tagName)","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"Derekljh"},"content":" .sorted() // making the output order deterministic","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"Derekljh"},"content":" .collect(Collectors.joining(\", \"));","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"Derekljh"},"content":" private Person addTag(Person personToTag) {","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"Derekljh"},"content":" HashSet\u003cTag\u003e personTags \u003d new HashSet\u003c\u003e(personToTag.getTags());","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":87,"author":{"gitId":"Derekljh"},"content":" personTags.addAll(tags);","lastModifiedDate":"2024-03-16"},{"lineNumber":88,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":89,"author":{"gitId":"Derekljh"},"content":" return new Person(","lastModifiedDate":"2024-03-16"},{"lineNumber":90,"author":{"gitId":"Derekljh"},"content":" personToTag.getName(),","lastModifiedDate":"2024-03-16"},{"lineNumber":91,"author":{"gitId":"Derekljh"},"content":" personToTag.getPhone(),","lastModifiedDate":"2024-03-16"},{"lineNumber":92,"author":{"gitId":"Derekljh"},"content":" personToTag.getEmail(),","lastModifiedDate":"2024-03-16"},{"lineNumber":93,"author":{"gitId":"Derekljh"},"content":" personToTag.getAddress(),","lastModifiedDate":"2024-03-16"},{"lineNumber":94,"author":{"gitId":"Derekljh"},"content":" personTags);","lastModifiedDate":"2024-03-16"},{"lineNumber":95,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":96,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":97,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":98,"author":{"gitId":"radeon2525"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-11"},{"lineNumber":99,"author":{"gitId":"Derekljh"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-16"},{"lineNumber":100,"author":{"gitId":"Derekljh"},"content":" return true;","lastModifiedDate":"2024-03-16"},{"lineNumber":101,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":102,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":103,"author":{"gitId":"Derekljh"},"content":" if (!(other instanceof TagCommand)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":104,"author":{"gitId":"Derekljh"},"content":" return false;","lastModifiedDate":"2024-03-16"},{"lineNumber":105,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":106,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":107,"author":{"gitId":"Derekljh"},"content":" TagCommand otherTagCommand \u003d (TagCommand) other;","lastModifiedDate":"2024-03-16"},{"lineNumber":108,"author":{"gitId":"Derekljh"},"content":" return targetIndex.equals(otherTagCommand.targetIndex)","lastModifiedDate":"2024-03-16"},{"lineNumber":109,"author":{"gitId":"Derekljh"},"content":" \u0026\u0026 tags.equals(otherTagCommand.tags);","lastModifiedDate":"2024-03-16"},{"lineNumber":110,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":111,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":112,"author":{"gitId":"Derekljh"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":113,"author":{"gitId":"Derekljh"},"content":" public String toString() {","lastModifiedDate":"2024-03-16"},{"lineNumber":114,"author":{"gitId":"Derekljh"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-16"},{"lineNumber":115,"author":{"gitId":"Derekljh"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2024-03-16"},{"lineNumber":116,"author":{"gitId":"Derekljh"},"content":" .add(\"tag\", tags)","lastModifiedDate":"2024-03-16"},{"lineNumber":117,"author":{"gitId":"Derekljh"},"content":" .toString();","lastModifiedDate":"2024-03-16"},{"lineNumber":118,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":119,"author":{"gitId":"radeon2525"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"Derekljh":72,"radeon2525":47}},{"path":"src/main/java/seedu/address/logic/commands/UndoCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"radeon2525"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"radeon2525"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"radeon2525"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"radeon2525"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"radeon2525"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"radeon2525"},"content":" * Reverts the {@code model}\u0027s address book to its previous state.","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"radeon2525"},"content":"public class UndoCommand extends Command {","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"radeon2525"},"content":" public static final String COMMAND_WORD \u003d \"undo\";","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"radeon2525"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Undo success!\";","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"radeon2525"},"content":" public static final String MESSAGE_FAILURE \u003d \"No more commands to undo!\";","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"radeon2525"},"content":" public CommandResult execute(Model model, CommandHistory history) throws CommandException {","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"radeon2525"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"radeon2525"},"content":" if (!model.canUndoAddressBook()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"radeon2525"},"content":" throw new CommandException(MESSAGE_FAILURE);","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"radeon2525"},"content":" model.undoAddressBook();","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"radeon2525"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"radeon2525"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"radeon2525"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"radeon2525":31}},{"path":"src/main/java/seedu/address/logic/commands/UntagCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"miffi"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"miffi"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"miffi"},"content":"import java.util.Collection;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"miffi"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"miffi"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"miffi"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"miffi"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"miffi"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"miffi"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"miffi"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"miffi"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"miffi"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"miffi"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"miffi"},"content":" * Deletes a tag from a person with its displayed index.","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"miffi"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"miffi"},"content":"public class UntagCommand extends Command {","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"miffi"},"content":" public static final String COMMAND_WORD \u003d \"untag\";","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"miffi"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"miffi"},"content":" + \": Deletes the tag from contact identified by the index number used in the displayed contact list.\\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"Derekljh"},"content":" + \"Parameters: INDEX (must be a positive integer) tag: TAG... (can take multiple tags)\\n\"","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"Derekljh"},"content":" + \"Example: \" + COMMAND_WORD + \"1 tag: friends\";","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"miffi"},"content":" public static final String MESSAGE_DELETE_TAG_SUCCESS \u003d \"Deleted tag %2$s from %1$s\";","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"miffi"},"content":" private final Index index;","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"miffi"},"content":" private final Set\u003cTag\u003e tags;","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"miffi"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"miffi"},"content":" * Creates a command to delete a {@code tag} from the person at {@code index}.","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"miffi"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"miffi"},"content":" public UntagCommand(Index index, Collection\u003cTag\u003e tags) {","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"miffi"},"content":" this.index \u003d index;","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"miffi"},"content":" this.tags \u003d new HashSet\u003c\u003e(tags);","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"miffi"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"miffi"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"radeon2525"},"content":" public CommandResult execute(Model model, CommandHistory history) throws CommandException {","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"miffi"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"miffi"},"content":" var lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"miffi"},"content":" if (index.getZeroBased() \u003e lastShownList.size()) {","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"miffi"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"miffi"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"miffi"},"content":" var personToUntag \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"miffi"},"content":" var untaggedPerson \u003d untag(personToUntag);","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"miffi"},"content":" model.setPerson(personToUntag, untaggedPerson);","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"miffi"},"content":" model.updateFilteredPersonList(Model.PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"radeon2525"},"content":" model.commitAddressBook();","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"miffi"},"content":" return new CommandResult(String.format(","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"miffi"},"content":" MESSAGE_DELETE_TAG_SUCCESS,","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"miffi"},"content":" Messages.format(untaggedPerson),","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"miffi"},"content":" showTags(tags)));","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"miffi"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"miffi"},"content":" private Person untag(Person personToUntag) throws CommandException {","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"miffi"},"content":" var personTags \u003d new HashSet\u003cTag\u003e(personToUntag.getTags());","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"miffi"},"content":" validateAllTagsExist(personToUntag, personTags);","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"miffi"},"content":" personTags.removeAll(tags);","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"miffi"},"content":" return new Person(","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"miffi"},"content":" personToUntag.getName(),","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"miffi"},"content":" personToUntag.getPhone(),","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"miffi"},"content":" personToUntag.getEmail(),","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"miffi"},"content":" personToUntag.getAddress(),","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"miffi"},"content":" personTags);","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"miffi"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"miffi"},"content":" private void validateAllTagsExist(Person personToUntag, HashSet\u003cTag\u003e personTags) throws CommandException {","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"miffi"},"content":" var missingTagNames \u003d tags","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"miffi"},"content":" .stream()","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"miffi"},"content":" .filter((tag) -\u003e !personTags.contains(tag))","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"miffi"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"miffi"},"content":" if (!missingTagNames.isEmpty()) {","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"miffi"},"content":" throw new CommandException(","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"miffi"},"content":" String.format(","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"miffi"},"content":" Messages.MESSAGE_MISSING_TAG,","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"miffi"},"content":" personToUntag.getName(),","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"miffi"},"content":" showTags(missingTagNames)));","lastModifiedDate":"2024-03-16"},{"lineNumber":87,"author":{"gitId":"miffi"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":88,"author":{"gitId":"miffi"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":89,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":90,"author":{"gitId":"miffi"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":91,"author":{"gitId":"miffi"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-16"},{"lineNumber":92,"author":{"gitId":"miffi"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-16"},{"lineNumber":93,"author":{"gitId":"miffi"},"content":" return true;","lastModifiedDate":"2024-03-16"},{"lineNumber":94,"author":{"gitId":"miffi"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":95,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":96,"author":{"gitId":"miffi"},"content":" if (other instanceof UntagCommand) {","lastModifiedDate":"2024-03-16"},{"lineNumber":97,"author":{"gitId":"miffi"},"content":" UntagCommand obj \u003d (UntagCommand) other;","lastModifiedDate":"2024-03-16"},{"lineNumber":98,"author":{"gitId":"miffi"},"content":" return index.equals(obj.index) \u0026\u0026 tags.equals(obj.tags);","lastModifiedDate":"2024-03-16"},{"lineNumber":99,"author":{"gitId":"miffi"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":100,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":101,"author":{"gitId":"miffi"},"content":" return false;","lastModifiedDate":"2024-03-16"},{"lineNumber":102,"author":{"gitId":"miffi"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":103,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":104,"author":{"gitId":"miffi"},"content":" private static String showTags(Collection\u003cTag\u003e tags) {","lastModifiedDate":"2024-03-16"},{"lineNumber":105,"author":{"gitId":"miffi"},"content":" return tags.stream().map((tag) -\u003e tag.tagName)","lastModifiedDate":"2024-03-16"},{"lineNumber":106,"author":{"gitId":"miffi"},"content":" .sorted() // making the output order deterministic","lastModifiedDate":"2024-03-16"},{"lineNumber":107,"author":{"gitId":"miffi"},"content":" .collect(Collectors.joining(\", \"));","lastModifiedDate":"2024-03-16"},{"lineNumber":108,"author":{"gitId":"miffi"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":109,"author":{"gitId":"miffi"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"Derekljh":2,"radeon2525":3,"miffi":104}},{"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":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.commands.RedoCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"Derekljh"},"content":"import seedu.address.logic.commands.TagCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.commands.UndoCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"miffi"},"content":"import seedu.address.logic.commands.UntagCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":69,"author":{"gitId":"Derekljh"},"content":" case TagCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-13"},{"lineNumber":70,"author":{"gitId":"Derekljh"},"content":" return new TagCommandParser().parse(arguments);","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":84,"author":{"gitId":"miffi"},"content":" case UntagCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"miffi"},"content":" return new UntagCommandParser().parse(arguments);","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"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":"radeon2525"},"content":" case UndoCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"radeon2525"},"content":" return new UndoCommand();","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"radeon2525"},"content":" case RedoCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"radeon2525"},"content":" return new RedoCommand();","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"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":{"Derekljh":4,"radeon2525":8,"miffi":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":"The-Dudeski"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"name:\");","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"The-Dudeski"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"phone:\");","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"The-Dudeski"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"email:\");","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"The-Dudeski"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"address:\");","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"The-Dudeski"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"tag:\");","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"The-Dudeski":5,"-":10}},{"path":"src/main/java/seedu/address/logic/parser/TagCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Derekljh"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"Derekljh"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"Derekljh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"Derekljh"},"content":"import java.util.Collection;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"Derekljh"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"Derekljh"},"content":"import seedu.address.logic.commands.TagCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"Derekljh"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"Derekljh"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"Derekljh"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"Derekljh"},"content":" * Parses input arguments and creates a new TagCommand object","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"Derekljh"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"Derekljh"},"content":"public class TagCommandParser implements Parser\u003cTagCommand\u003e {","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"Derekljh"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"Derekljh"},"content":" * Parses the given {@code String} of arguments in the context of the TagCommand","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"Derekljh"},"content":" * and returns an TagCommand object for execution.","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"Derekljh"},"content":" *","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"Derekljh"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"Derekljh"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"Derekljh"},"content":" public TagCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"Derekljh"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"Derekljh"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_TAG);","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"Derekljh"},"content":" Collection\u003cTag\u003e tags \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"Derekljh"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"Derekljh"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, TagCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"Derekljh"},"content":" Index index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"Derekljh"},"content":" return new TagCommand(index, tags);","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"Derekljh"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"Derekljh":38}},{"path":"src/main/java/seedu/address/logic/parser/UntagCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"miffi"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"miffi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"miffi"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"miffi"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"miffi"},"content":"import seedu.address.logic.commands.UntagCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"miffi"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"miffi"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"miffi"},"content":" * Parses input arguments and creates an UntagCommand.","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"miffi"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"miffi"},"content":"public class UntagCommandParser implements Parser\u003cUntagCommand\u003e {","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"miffi"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"miffi"},"content":" public UntagCommand parse(String userInput) throws ParseException {","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"miffi"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(userInput, PREFIX_TAG);","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"miffi"},"content":" var tags \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"miffi"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"miffi"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"miffi"},"content":" String.format(Messages.MESSAGE_INVALID_COMMAND_FORMAT, UntagCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"miffi"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"miffi"},"content":" Index index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"miffi"},"content":" return new UntagCommand(index, tags);","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"miffi"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"miffi"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"miffi":28}},{"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":"radeon2525"},"content":"import javafx.beans.InvalidationListener;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"radeon2525"},"content":"import javafx.beans.Observable;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"radeon2525"},"content":"import seedu.address.commons.util.InvalidationListenerManager;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.UniquePersonList;","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Wraps all data at the address-book level","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Duplicates are not allowed (by .isSamePerson comparison)","lastModifiedDate":"2018-04-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"radeon2525"},"content":"public class AddressBook implements ReadOnlyAddressBook, Observable {","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"radeon2525"},"content":" final InvalidationListenerManager invalidationListenerManager \u003d new InvalidationListenerManager();","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final UniquePersonList persons;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" {","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" persons \u003d new UniquePersonList();","lastModifiedDate":"2016-08-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public AddressBook() {}","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Creates an AddressBook using the Persons in the {@code toBeCopied}","lastModifiedDate":"2018-03-29"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public AddressBook(ReadOnlyAddressBook toBeCopied) {","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2016-12-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" resetData(toBeCopied);","lastModifiedDate":"2016-12-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":40,"author":{"gitId":"-"},"content":" //// list overwrite operations","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Replaces the contents of the person list with {@code persons}.","lastModifiedDate":"2018-08-07"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2018-08-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void setPersons(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-08-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.persons.setPersons(persons);","lastModifiedDate":"2016-10-19"},{"lineNumber":48,"author":{"gitId":"radeon2525"},"content":" indicateModified();","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code AddressBook} with {@code newData}.","lastModifiedDate":"2017-08-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyAddressBook newData) {","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" requireNonNull(newData);","lastModifiedDate":"2017-05-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" setPersons(newData.getPersonList());","lastModifiedDate":"2018-03-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" //// person-level operations","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":63,"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":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return persons.contains(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-09-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * The person must not already exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void addPerson(Person p) {","lastModifiedDate":"2018-08-07"},{"lineNumber":75,"author":{"gitId":"-"},"content":" persons.add(p);","lastModifiedDate":"2018-03-29"},{"lineNumber":76,"author":{"gitId":"radeon2525"},"content":" indicateModified();","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":" * Replaces the given person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2018-01-10"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":82,"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":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":85,"author":{"gitId":"-"},"content":" requireNonNull(editedPerson);","lastModifiedDate":"2018-01-10"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" persons.setPerson(target, editedPerson);","lastModifiedDate":"2018-03-29"},{"lineNumber":88,"author":{"gitId":"radeon2525"},"content":" indicateModified();","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Removes {@code key} from this {@code AddressBook}.","lastModifiedDate":"2017-08-16"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * {@code key} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":95,"author":{"gitId":"-"},"content":" public void removePerson(Person key) {","lastModifiedDate":"2018-08-07"},{"lineNumber":96,"author":{"gitId":"-"},"content":" persons.remove(key);","lastModifiedDate":"2018-02-28"},{"lineNumber":97,"author":{"gitId":"radeon2525"},"content":" indicateModified();","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":" //// util methods","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":" .add(\"persons\", persons)","lastModifiedDate":"2019-02-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":111,"author":{"gitId":"-"},"content":" return persons.asUnmodifiableObservableList();","lastModifiedDate":"2018-04-05"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-01"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-01"},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":115,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"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 AddressBook)) {","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":" AddressBook otherAddressBook \u003d (AddressBook) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" return persons.equals(otherAddressBook.persons);","lastModifiedDate":"2023-07-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":130,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":131,"author":{"gitId":"-"},"content":" return persons.hashCode();","lastModifiedDate":"2018-03-29"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":133,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":134,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":135,"author":{"gitId":"radeon2525"},"content":" * Notifies listeners that the address book has been modified.","lastModifiedDate":"2024-03-20"},{"lineNumber":136,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":137,"author":{"gitId":"radeon2525"},"content":" public void indicateModified() {","lastModifiedDate":"2024-03-20"},{"lineNumber":138,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.callListeners(this);","lastModifiedDate":"2024-03-20"},{"lineNumber":139,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":140,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":141,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":142,"author":{"gitId":"radeon2525"},"content":" public void addListener(InvalidationListener listener) {","lastModifiedDate":"2024-03-20"},{"lineNumber":143,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.addListener(listener);","lastModifiedDate":"2024-03-20"},{"lineNumber":144,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":145,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":146,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":147,"author":{"gitId":"radeon2525"},"content":" public void removeListener(InvalidationListener listener) {","lastModifiedDate":"2024-03-20"},{"lineNumber":148,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.removeListener(listener);","lastModifiedDate":"2024-03-20"},{"lineNumber":149,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":150,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"radeon2525":27,"-":123}},{"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":"-"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2017-08-05"},{"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":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"radeon2525"},"content":" boolean canUndoAddressBook();","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"radeon2525"},"content":" void undoAddressBook();","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"radeon2525"},"content":" boolean canRedoAddressBook();","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"radeon2525"},"content":" void redoAddressBook();","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"radeon2525"},"content":" * Saves the current address book state for undo/redo.","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"radeon2525"},"content":" void commitAddressBook();","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"radeon2525":13,"-":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":"radeon2525"},"content":"import javafx.beans.property.SimpleObjectProperty;","lastModifiedDate":"2024-03-18"},{"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 UserPrefs userPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2018-01-10"},{"lineNumber":25,"author":{"gitId":"radeon2525"},"content":" private final VersionedAddressBook versionedAddressBook;","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"radeon2525"},"content":" private final SimpleObjectProperty\u003cPerson\u003e selectedPerson \u003d new SimpleObjectProperty\u003c\u003e();","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"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":"radeon2525"},"content":" super();","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook \u003d new VersionedAddressBook(addressBook);","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"radeon2525"},"content":" //this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":41,"author":{"gitId":"radeon2525"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(versionedAddressBook.getPersonList());","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"radeon2525"},"content":" //filteredPersons.addListener(this::ensureSelectedPersonIsValid);","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22"},{"lineNumber":46,"author":{"gitId":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"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":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":53,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06"},{"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 ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return userPrefs;","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 GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","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":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","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 Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"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 void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","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":" //\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":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27"},{"lineNumber":88,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.resetData(addressBook);","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21"},{"lineNumber":93,"author":{"gitId":"radeon2525"},"content":" return versionedAddressBook;","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"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":"radeon2525"},"content":" return versionedAddressBook.hasPerson(person);","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15"},{"lineNumber":104,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.removePerson(target);","lastModifiedDate":"2024-03-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":109,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.addPerson(person);","lastModifiedDate":"2024-03-18"},{"lineNumber":110,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":115,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":117,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.setPerson(target, editedPerson);","lastModifiedDate":"2024-03-18"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":120,"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":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":123,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10"},{"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":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":128,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09"},{"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":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":133,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05"},{"lineNumber":134,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":137,"author":{"gitId":"radeon2525"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Undo/Redo \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":138,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":139,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":140,"author":{"gitId":"radeon2525"},"content":" public boolean canUndoAddressBook() {","lastModifiedDate":"2024-03-18"},{"lineNumber":141,"author":{"gitId":"radeon2525"},"content":" return versionedAddressBook.canUndo();","lastModifiedDate":"2024-03-18"},{"lineNumber":142,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":143,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":144,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":145,"author":{"gitId":"radeon2525"},"content":" public void undoAddressBook() {","lastModifiedDate":"2024-03-18"},{"lineNumber":146,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.undo();","lastModifiedDate":"2024-03-18"},{"lineNumber":147,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":148,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":149,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":150,"author":{"gitId":"radeon2525"},"content":" public boolean canRedoAddressBook() {","lastModifiedDate":"2024-03-18"},{"lineNumber":151,"author":{"gitId":"radeon2525"},"content":" return versionedAddressBook.canRedo();","lastModifiedDate":"2024-03-18"},{"lineNumber":152,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":153,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":154,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":155,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":156,"author":{"gitId":"radeon2525"},"content":" public void redoAddressBook() {","lastModifiedDate":"2024-03-18"},{"lineNumber":157,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.redo();","lastModifiedDate":"2024-03-18"},{"lineNumber":158,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":159,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":160,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":161,"author":{"gitId":"radeon2525"},"content":" public void commitAddressBook() {","lastModifiedDate":"2024-03-18"},{"lineNumber":162,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.commit();","lastModifiedDate":"2024-03-18"},{"lineNumber":163,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":164,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":165,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31"},{"lineNumber":166,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":168,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":171,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31"},{"lineNumber":172,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":173,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":176,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":177,"author":{"gitId":"radeon2525"},"content":" return versionedAddressBook.equals(otherModelManager.versionedAddressBook)","lastModifiedDate":"2024-03-18"},{"lineNumber":178,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13"},{"lineNumber":179,"author":{"gitId":"-"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons);","lastModifiedDate":"2023-07-13"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":181,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"radeon2525":44,"-":137}},{"path":"src/main/java/seedu/address/model/VersionedAddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"radeon2525"},"content":"package seedu.address.model;","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"radeon2525"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"radeon2525"},"content":"import java.util.List;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"radeon2525"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"radeon2525"},"content":" * {@code AddressBook} that keeps track of its own history.","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"radeon2525"},"content":"public class VersionedAddressBook extends AddressBook {","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"radeon2525"},"content":" private final List\u003cReadOnlyAddressBook\u003e addressBookStateList;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"radeon2525"},"content":" private int currentStatePointer;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"radeon2525"},"content":" * {@code AddressBook} that keeps track of its own history.","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"radeon2525"},"content":" public VersionedAddressBook(ReadOnlyAddressBook initialState) {","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"radeon2525"},"content":" super(initialState);","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"radeon2525"},"content":" addressBookStateList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"radeon2525"},"content":" addressBookStateList.add(new AddressBook(initialState));","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"radeon2525"},"content":" currentStatePointer \u003d 0;","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"radeon2525"},"content":" * Saves a copy of the current {@code AddressBook} state at the end of the state list.","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"radeon2525"},"content":" * Undone states are removed from the state list.","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"radeon2525"},"content":" public void commit() {","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"radeon2525"},"content":" removeStatesAfterCurrentPointer();","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"radeon2525"},"content":" addressBookStateList.add(new AddressBook(this));","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"radeon2525"},"content":" currentStatePointer++;","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"radeon2525"},"content":" //indicateModified();","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"radeon2525"},"content":" private void removeStatesAfterCurrentPointer() {","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"radeon2525"},"content":" addressBookStateList.subList(currentStatePointer + 1, addressBookStateList.size()).clear();","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"radeon2525"},"content":" * Restores the address book to its previous state.","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"radeon2525"},"content":" public void undo() {","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"radeon2525"},"content":" if (!canUndo()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"radeon2525"},"content":" throw new NoUndoableStateException();","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"radeon2525"},"content":" currentStatePointer--;","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"radeon2525"},"content":" resetData(addressBookStateList.get(currentStatePointer));","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"radeon2525"},"content":" * Restores the address book to its previously undone state.","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"radeon2525"},"content":" public void redo() {","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"radeon2525"},"content":" if (!canRedo()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"radeon2525"},"content":" throw new NoRedoableStateException();","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"radeon2525"},"content":" currentStatePointer++;","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"radeon2525"},"content":" resetData(addressBookStateList.get(currentStatePointer));","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"radeon2525"},"content":" * Returns true if {@code undo()} has address book states to undo.","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"radeon2525"},"content":" public boolean canUndo() {","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"radeon2525"},"content":" return currentStatePointer \u003e 0;","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"radeon2525"},"content":" * Returns true if {@code redo()} has address book states to redo.","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"radeon2525"},"content":" public boolean canRedo() {","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"radeon2525"},"content":" return currentStatePointer \u003c addressBookStateList.size() - 1;","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"radeon2525"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"radeon2525"},"content":" // short circuit if same object","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"radeon2525"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"radeon2525"},"content":" return true;","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"radeon2525"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"radeon2525"},"content":" if (!(other instanceof VersionedAddressBook)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"radeon2525"},"content":" return false;","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook otherVersionedAddressBook \u003d (VersionedAddressBook) other;","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"radeon2525"},"content":" // state check","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"radeon2525"},"content":" return super.equals(otherVersionedAddressBook)","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"radeon2525"},"content":" \u0026\u0026 addressBookStateList.equals(otherVersionedAddressBook.addressBookStateList)","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"radeon2525"},"content":" \u0026\u0026 currentStatePointer \u003d\u003d otherVersionedAddressBook.currentStatePointer;","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"radeon2525"},"content":" * Thrown when trying to {@code undo()} but can\u0027t.","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"radeon2525"},"content":" public static class NoUndoableStateException extends RuntimeException {","lastModifiedDate":"2024-03-18"},{"lineNumber":101,"author":{"gitId":"radeon2525"},"content":" private NoUndoableStateException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":102,"author":{"gitId":"radeon2525"},"content":" super(\"Current state pointer at start of addressBookState list, unable to undo.\");","lastModifiedDate":"2024-03-18"},{"lineNumber":103,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":104,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":105,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":106,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":107,"author":{"gitId":"radeon2525"},"content":" * Thrown when trying to {@code redo()} but can\u0027t.","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":109,"author":{"gitId":"radeon2525"},"content":" public static class NoRedoableStateException extends RuntimeException {","lastModifiedDate":"2024-03-18"},{"lineNumber":110,"author":{"gitId":"radeon2525"},"content":" private NoRedoableStateException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"radeon2525"},"content":" super(\"Current state pointer at end of addressBookState list, unable to redo.\");","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":113,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"radeon2525"},"content":"}","lastModifiedDate":"2024-03-18"},{"lineNumber":115,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"radeon2525":115}},{"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":"-"},"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":"-"},"content":" private StackPane personListPanelPlaceholder;","lastModifiedDate":"2017-05-09"},{"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":"-"},"content":" personListPanel \u003d new PersonListPanel(logic.getFilteredPersonList());","lastModifiedDate":"2019-01-25"},{"lineNumber":114,"author":{"gitId":"-"},"content":" personListPanelPlaceholder.getChildren().add(personListPanel.getRoot());","lastModifiedDate":"2017-06-14"},{"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":" public PersonListPanel getPersonListPanel() {","lastModifiedDate":"2016-08-25"},{"lineNumber":167,"author":{"gitId":"-"},"content":" return personListPanel;","lastModifiedDate":"2018-08-14"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":170,"author":{"gitId":"The-Dudeski"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":171,"author":{"gitId":"The-Dudeski"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":172,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":173,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":174,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":175,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09"},{"lineNumber":176,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":177,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09"},{"lineNumber":178,"author":{"gitId":"The-Dudeski"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":179,"author":{"gitId":"The-Dudeski"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":180,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":181,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09"},{"lineNumber":182,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":183,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":185,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":186,"author":{"gitId":"-"},"content":" handleHelp();","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":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":190,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09"},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":193,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":194,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09"},{"lineNumber":195,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13"},{"lineNumber":196,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09"},{"lineNumber":197,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09"},{"lineNumber":198,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":199,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":200,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"The-Dudeski":4,"-":196}},{"path":"src/test/java/seedu/address/commons/util/InvalidationListenerManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"radeon2525"},"content":"package seedu.address.commons.util;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"radeon2525"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"radeon2525"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"radeon2525"},"content":"import javafx.beans.InvalidationListener;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"radeon2525"},"content":"import javafx.beans.property.SimpleObjectProperty;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"radeon2525"},"content":"public class InvalidationListenerManagerTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"radeon2525"},"content":" private final SimpleObjectProperty\u003cObject\u003e dummyObservable \u003d new SimpleObjectProperty\u003c\u003e();","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"radeon2525"},"content":" private final InvalidationListenerManager invalidationListenerManager \u003d new InvalidationListenerManager();","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"radeon2525"},"content":" private int counter;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"radeon2525"},"content":" public void addListener_sameListenerOnce_listenerAdded() {","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.addListener(observable -\u003e {","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"radeon2525"},"content":" assertEquals(dummyObservable, observable);","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"radeon2525"},"content":" counter++;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"radeon2525"},"content":" });","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.callListeners(dummyObservable);","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"radeon2525"},"content":" assertEquals(1, counter);","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"radeon2525"},"content":" public void addListener_sameListenerTwice_listenerAddedTwice() {","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"radeon2525"},"content":" InvalidationListener listener \u003d observable -\u003e counter++;","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.addListener(listener);","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.addListener(listener);","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.callListeners(dummyObservable);","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"radeon2525"},"content":" assertEquals(2, counter);","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"radeon2525"},"content":" public void addListener_listenersBeingCalled_listenerNotCalled() {","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"radeon2525"},"content":" InvalidationListener listener1 \u003d observable -\u003e {","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"radeon2525"},"content":" throw new AssertionError(\"should not be called\");","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"radeon2525"},"content":" };","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"radeon2525"},"content":" InvalidationListener listener2 \u003d observable -\u003e invalidationListenerManager.addListener(listener1);","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.addListener(listener2);","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.callListeners(dummyObservable);","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"radeon2525"},"content":" public void removeListener_singleListenerAdded_listenerRemoved() {","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"radeon2525"},"content":" InvalidationListener listener \u003d observable -\u003e counter++;","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.addListener(listener);","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.removeListener(listener);","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.callListeners(dummyObservable);","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"radeon2525"},"content":" assertEquals(0, counter);","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"radeon2525"},"content":" public void removeListener_sameListenerAddedTwice_firstListenerRemoved() {","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"radeon2525"},"content":" InvalidationListener listener \u003d observable -\u003e counter++;","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.addListener(listener);","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.addListener(listener);","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.removeListener(listener);","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.callListeners(dummyObservable);","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"radeon2525"},"content":" assertEquals(1, counter);","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"radeon2525"},"content":" public void removeListener_listenersBeingCalled_listenerStillCalled() {","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"radeon2525"},"content":" InvalidationListener listener1 \u003d observable -\u003e counter++;","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"radeon2525"},"content":" InvalidationListener listener2 \u003d observable -\u003e invalidationListenerManager.removeListener(listener1);","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.addListener(listener2);","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.addListener(listener1);","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.callListeners(dummyObservable);","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"radeon2525"},"content":" assertEquals(1, counter);","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"radeon2525"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"radeon2525":72}},{"path":"src/test/java/seedu/address/logic/CommandHistoryTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"radeon2525"},"content":"package seedu.address.logic;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"radeon2525"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"radeon2525"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"radeon2525"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"radeon2525"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"radeon2525"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"radeon2525"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"radeon2525"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"radeon2525"},"content":"public class CommandHistoryTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"radeon2525"},"content":" private CommandHistory history;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"radeon2525"},"content":" @BeforeEach","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"radeon2525"},"content":" public void setUp() {","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"radeon2525"},"content":" history \u003d new CommandHistory();","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"radeon2525"},"content":" public void constructor_withCommandHistory_copiesCommandHistory() {","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"radeon2525"},"content":" final CommandHistory commandHistoryWithA \u003d new CommandHistory();","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"radeon2525"},"content":" commandHistoryWithA.add(\"a\");","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"radeon2525"},"content":" assertEquals(commandHistoryWithA, new CommandHistory(commandHistoryWithA));","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"radeon2525"},"content":" public void add() {","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"radeon2525"},"content":" final String validCommand \u003d \"clear\";","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"radeon2525"},"content":" final String invalidCommand \u003d \"adds Bob\";","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"radeon2525"},"content":" history.add(validCommand);","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"radeon2525"},"content":" history.add(invalidCommand);","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"radeon2525"},"content":" assertEquals(Arrays.asList(validCommand, invalidCommand), history.getHistory());","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"radeon2525"},"content":" public void equals() {","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"radeon2525"},"content":" final CommandHistory commandHistoryWithA \u003d new CommandHistory();","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"radeon2525"},"content":" commandHistoryWithA.add(\"a\");","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"radeon2525"},"content":" final CommandHistory anotherCommandHistoryWithA \u003d new CommandHistory();","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"radeon2525"},"content":" anotherCommandHistoryWithA.add(\"a\");","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"radeon2525"},"content":" final CommandHistory commandHistoryWithB \u003d new CommandHistory();","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"radeon2525"},"content":" commandHistoryWithB.add(\"b\");","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"radeon2525"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"radeon2525"},"content":" assertTrue(commandHistoryWithA.equals(commandHistoryWithA));","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"radeon2525"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"radeon2525"},"content":" assertTrue(commandHistoryWithA.equals(anotherCommandHistoryWithA));","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"radeon2525"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"radeon2525"},"content":" assertFalse(commandHistoryWithA.equals(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"radeon2525"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"radeon2525"},"content":" assertFalse(commandHistoryWithA.equals(5.0f));","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"radeon2525"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"radeon2525"},"content":" assertFalse(commandHistoryWithA.equals(commandHistoryWithB));","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"radeon2525"},"content":" public void hashcode() {","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"radeon2525"},"content":" final CommandHistory commandHistoryWithA \u003d new CommandHistory();","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"radeon2525"},"content":" commandHistoryWithA.add(\"a\");","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"radeon2525"},"content":" final CommandHistory anotherCommandHistoryWithA \u003d new CommandHistory();","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"radeon2525"},"content":" anotherCommandHistoryWithA.add(\"a\");","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"radeon2525"},"content":" final CommandHistory commandHistoryWithB \u003d new CommandHistory();","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"radeon2525"},"content":" commandHistoryWithB.add(\"b\");","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"radeon2525"},"content":" // same values -\u003e returns same hashcode","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"radeon2525"},"content":" assertEquals(commandHistoryWithA.hashCode(), anotherCommandHistoryWithA.hashCode());","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"radeon2525"},"content":" // different values -\u003e returns different hashcode","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"radeon2525"},"content":" assertNotEquals(commandHistoryWithA.hashCode(), commandHistoryWithB.hashCode());","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"radeon2525"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"radeon2525":79}},{"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":"-"},"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":"JukeBoxK"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_EMPTY, model);","lastModifiedDate":"2024-03-13"},{"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":"2017-09-01"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":78,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":86,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14"},{"lineNumber":87,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":97,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":101,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":109,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":110,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":111,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":112,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":113,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31"},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":119,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":120,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"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, Model expectedModel) {","lastModifiedDate":"2017-05-31"},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19"},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13"},{"lineNumber":135,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13"},{"lineNumber":136,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13"},{"lineNumber":137,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":138,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13"},{"lineNumber":139,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":141,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13"},{"lineNumber":142,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13"},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":144,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13"},{"lineNumber":145,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13"},{"lineNumber":146,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":148,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":150,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":151,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":154,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":156,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13"},{"lineNumber":157,"author":{"gitId":"-"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2023-06-13"},{"lineNumber":158,"author":{"gitId":"-"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY;","lastModifiedDate":"2023-06-13"},{"lineNumber":159,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2023-06-13"},{"lineNumber":160,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13"},{"lineNumber":161,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":164,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"radeon2525":1,"JukeBoxK":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":"-"},"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":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"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":"radeon2525"},"content":" private CommandHistory commandHistory \u003d new CommandHistory();","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":" public void execute_newPerson_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-15"},{"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":"radeon2525"},"content":" expectedModel.commitAddressBook();","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":39,"author":{"gitId":"radeon2525"},"content":" assertCommandSuccess(new AddCommand(validPerson), model, commandHistory,","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"radeon2525"},"content":" String.format(AddCommand.MESSAGE_SUCCESS, validPerson), expectedModel);","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","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 execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(0);","lastModifiedDate":"2018-01-10"},{"lineNumber":46,"author":{"gitId":"radeon2525"},"content":" assertCommandFailure(new AddCommand(personInList), model, commandHistory,","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":" AddCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"radeon2525":7,"-":43}},{"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":"","lastModifiedDate":"2017-05-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"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":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":18,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class AddCommandTest {","lastModifiedDate":"2017-05-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"radeon2525"},"content":" private static final CommandHistory EMPTY_COMMAND_HISTORY \u003d new CommandHistory();","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"radeon2525"},"content":" private static final Person ALICE \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"radeon2525"},"content":" private CommandHistory commandHistory \u003d new CommandHistory();","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"radeon2525"},"content":" CommandHistory commandHistory \u003d new CommandHistory();","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"radeon2525"},"content":" CommandResult commandResult \u003d new AddCommand(validPerson).execute(modelStub, commandHistory);","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"radeon2525"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, validPerson), commandResult.getFeedbackToUser());","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(validPerson), modelStub.personsAdded);","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(validPerson);","lastModifiedDate":"2018-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":57,"author":{"gitId":"radeon2525"},"content":" assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"radeon2525"},"content":" addCommand.execute(modelStub, commandHistory));","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":61,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":64,"author":{"gitId":"-"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":" AddCommand addAliceCommand \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":" AddCommand addBobCommand \u003d new AddCommand(bob);","lastModifiedDate":"2017-06-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":" AddCommand addAliceCommandCopy \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":82,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":86,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"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":" AddCommand addCommand \u003d new AddCommand(ALICE);","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" String expected \u003d AddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.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":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":95,"author":{"gitId":"radeon2525"},"content":" public void execute_nullModel_throwsNullPointerException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":96,"author":{"gitId":"radeon2525"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2024-03-16"},{"lineNumber":97,"author":{"gitId":"radeon2525"},"content":" AddCommand addCommand \u003d new AddCommand(validPerson);","lastModifiedDate":"2024-03-16"},{"lineNumber":98,"author":{"gitId":"radeon2525"},"content":" assertThrows(NullPointerException.class, () -\u003e addCommand.execute(null, commandHistory));","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":100,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":101,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":105,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"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 ReadOnlyUserPrefs getUserPrefs() {","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 GuiSettings getGuiSettings() {","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":"2018-11-27"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":123,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":127,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":128,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":132,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":133,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":137,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":138,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27"},{"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 ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12"},{"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":"2018-08-06"},{"lineNumber":152,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06"},{"lineNumber":153,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-08"},{"lineNumber":158,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":161,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":162,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":163,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":166,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":167,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":168,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":171,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":172,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":173,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":175,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":176,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":177,"author":{"gitId":"radeon2525"},"content":" public boolean canUndoAddressBook() {","lastModifiedDate":"2024-03-18"},{"lineNumber":178,"author":{"gitId":"radeon2525"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-18"},{"lineNumber":179,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":180,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":181,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":182,"author":{"gitId":"radeon2525"},"content":" public boolean canRedoAddressBook() {","lastModifiedDate":"2024-03-18"},{"lineNumber":183,"author":{"gitId":"radeon2525"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-18"},{"lineNumber":184,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":185,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":186,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":187,"author":{"gitId":"radeon2525"},"content":" public void undoAddressBook() {","lastModifiedDate":"2024-03-18"},{"lineNumber":188,"author":{"gitId":"radeon2525"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-18"},{"lineNumber":189,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":190,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":191,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":192,"author":{"gitId":"radeon2525"},"content":" public void redoAddressBook() {","lastModifiedDate":"2024-03-18"},{"lineNumber":193,"author":{"gitId":"radeon2525"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-18"},{"lineNumber":194,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":195,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":196,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":197,"author":{"gitId":"radeon2525"},"content":" public void commitAddressBook() {","lastModifiedDate":"2024-03-18"},{"lineNumber":198,"author":{"gitId":"radeon2525"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-18"},{"lineNumber":199,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":200,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":201,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":203,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":204,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07"},{"lineNumber":205,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":206,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07"},{"lineNumber":207,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":209,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":210,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":211,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07"},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":214,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":215,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":216,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":217,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":218,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":219,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":221,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":222,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12"},{"lineNumber":223,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":224,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12"},{"lineNumber":225,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":227,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07"},{"lineNumber":228,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":229,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":230,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":231,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":233,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":234,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08"},{"lineNumber":235,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":236,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":237,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":239,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":240,"author":{"gitId":"radeon2525"},"content":" public void commitAddressBook() {","lastModifiedDate":"2024-03-18"},{"lineNumber":241,"author":{"gitId":"radeon2525"},"content":" // called by {@code AddCommand#execute()}","lastModifiedDate":"2024-03-18"},{"lineNumber":242,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":243,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":244,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":245,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04"},{"lineNumber":246,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04"},{"lineNumber":247,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":248,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":250,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12"}],"authorContributionMap":{"radeon2525":51,"-":199}},{"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":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class ClearCommandTest {","lastModifiedDate":"2017-06-08"},{"lineNumber":15,"author":{"gitId":"radeon2525"},"content":" private CommandHistory commandHistory \u003d new CommandHistory();","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public void execute_emptyAddressBook_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":21,"author":{"gitId":"radeon2525"},"content":" expectedModel.commitAddressBook();","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":23,"author":{"gitId":"radeon2525"},"content":" assertCommandSuccess(new ClearCommand(), model, commandHistory, ClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void execute_nonEmptyAddressBook_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" expectedModel.setAddressBook(new AddressBook());","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"radeon2525"},"content":" expectedModel.commitAddressBook();","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":33,"author":{"gitId":"radeon2525"},"content":" assertCommandSuccess(new ClearCommand(), model, commandHistory, ClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08"}],"authorContributionMap":{"radeon2525":6,"-":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":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05"},{"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":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":52,"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":53,"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":54,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05"},{"lineNumber":56,"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":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":78,"author":{"gitId":"radeon2525"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandHistory history,","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"radeon2525"},"content":" CommandResult expectedCommandResult, Model expectedModel) {","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"radeon2525"},"content":" CommandHistory expectedCommandHistory \u003d new CommandHistory(history);","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":82,"author":{"gitId":"radeon2525"},"content":" CommandResult result \u003d command.execute(actualModel, history);","lastModifiedDate":"2024-03-18"},{"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":"radeon2525"},"content":" assertEquals(expectedCommandHistory, history);","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":92,"author":{"gitId":"radeon2525"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandHistory, CommandResult, Model)}","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":95,"author":{"gitId":"radeon2525"},"content":" public static void assertCommandSuccess(Command command, Model actualModel,","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"radeon2525"},"content":" CommandHistory history, String expectedMessage, Model expectedModel) {","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":98,"author":{"gitId":"radeon2525"},"content":" assertCommandSuccess(command, actualModel, history, expectedCommandResult, expectedModel);","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":101,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25"},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":107,"author":{"gitId":"radeon2525"},"content":" public static void assertCommandFailure(Command command, Model actualModel,","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"radeon2525"},"content":" CommandHistory history, String expectedMessage) {","lastModifiedDate":"2024-03-18"},{"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":"radeon2525"},"content":" CommandHistory expectedCommandHistory \u003d new CommandHistory(history);","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"radeon2525"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel, history));","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":119,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":120,"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":121,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31"},{"lineNumber":122,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":126,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20"},{"lineNumber":128,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":133,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":134,"author":{"gitId":"radeon2525"},"content":" * Deletes the first person in {@code model}\u0027s filtered list from {@code model}\u0027s address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":135,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":136,"author":{"gitId":"radeon2525"},"content":" public static void deleteFirstPerson(Model model) {","lastModifiedDate":"2024-03-19"},{"lineNumber":137,"author":{"gitId":"radeon2525"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(0);","lastModifiedDate":"2024-03-19"},{"lineNumber":138,"author":{"gitId":"radeon2525"},"content":" model.deletePerson(firstPerson);","lastModifiedDate":"2024-03-19"},{"lineNumber":139,"author":{"gitId":"radeon2525"},"content":" model.commitAddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":140,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":141,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":142,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"radeon2525":23,"-":119}},{"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.showPersonAtIndex;","lastModifiedDate":"2018-01-31"},{"lineNumber":8,"author":{"gitId":"radeon2525"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"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":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":18,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"radeon2525"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-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 integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2018-01-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2017-06-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":31,"author":{"gitId":"radeon2525"},"content":" private CommandHistory commandHistory \u003d new CommandHistory();","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-06-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":38,"author":{"gitId":"radeon2525"},"content":" assertCommandFailure(deleteCommand, model, commandHistory, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"radeon2525"},"content":" public void execute_invalidIndex_throwsCommandException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"radeon2525"},"content":" // Create a model with an empty person list","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"radeon2525"},"content":" Model model \u003d new ModelManager(new AddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"radeon2525"},"content":" CommandHistory history \u003d new CommandHistory();","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"radeon2525"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(Index.fromZeroBased(0));","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"radeon2525"},"content":" // Execute command and assert CommandException is thrown","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"radeon2525"},"content":" assertThrows(CommandException.class, () -\u003e deleteCommand.execute(model, history));","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-06-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-06-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-06-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":63,"author":{"gitId":"radeon2525"},"content":" assertCommandFailure(deleteCommand, model, commandHistory, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" DeleteCommand deleteFirstCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" DeleteCommand deleteSecondCommand \u003d new DeleteCommand(INDEX_SECOND_PERSON);","lastModifiedDate":"2018-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" DeleteCommand deleteFirstCommandCopy \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","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":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(targetIndex);","lastModifiedDate":"2019-02-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" String expected \u003d DeleteCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertEquals(expected, deleteCommand.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-05"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05"},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":99,"author":{"gitId":"-"},"content":" private void showNoPerson(Model model) {","lastModifiedDate":"2017-06-05"},{"lineNumber":100,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2017-06-12"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertTrue(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2018-02-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":104,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"radeon2525":15,"-":89}},{"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.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":14,"author":{"gitId":"radeon2525"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"radeon2525"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"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":"radeon2525"},"content":" private CommandHistory commandHistory \u003d new CommandHistory();","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":42,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":45,"author":{"gitId":"radeon2525"},"content":" assertCommandFailure(editCommand, model, commandHistory, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2017-05-18"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":57,"author":{"gitId":"radeon2525"},"content":" assertCommandFailure(editCommand, model, commandHistory, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":60,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"radeon2525"},"content":" * Updates {@code model}\u0027s filtered list to show only the person at the given {@code targetIndex} in the","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"radeon2525"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"radeon2525"},"content":" private void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"radeon2525"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"radeon2525"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"radeon2525"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"radeon2525"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"radeon2525"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18"},{"lineNumber":77,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":80,"author":{"gitId":"radeon2525"},"content":" assertCommandFailure(editCommand, model, commandHistory, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":90,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-05-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08"},{"lineNumber":95,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":97,"author":{"gitId":"radeon2525"},"content":" assertCommandFailure(editCommand, model, commandHistory, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2018-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2017-05-25"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2017-05-25"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2019-02-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08"}],"authorContributionMap":{"radeon2525":23,"-":112}},{"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":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-12-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.ExitCommand.MESSAGE_EXIT_ACKNOWLEDGEMENT;","lastModifiedDate":"2017-06-08"},{"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":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2018-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class ExitCommandTest {","lastModifiedDate":"2017-06-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-12-09"},{"lineNumber":15,"author":{"gitId":"radeon2525"},"content":" private CommandHistory commandHistory \u003d new CommandHistory();","lastModifiedDate":"2024-03-18"},{"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":"radeon2525"},"content":" assertCommandSuccess(new ExitCommand(), model, commandHistory, expectedCommandResult, expectedModel);","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08"}],"authorContributionMap":{"radeon2525":3,"-":19}},{"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":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"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":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08"},{"lineNumber":30,"author":{"gitId":"radeon2525"},"content":" private CommandHistory commandHistory \u003d new CommandHistory();","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"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":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2017-06-12"},{"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":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2017-06-27"},{"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":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"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":"-"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"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":"-"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void execute_zeroKeywords_noPersonFound() {","lastModifiedDate":"2017-08-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2017-06-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2018-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":65,"author":{"gitId":"radeon2525"},"content":" assertCommandSuccess(command, model, commandHistory, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08"},{"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 execute_multipleKeywords_multiplePersonsFound() {","lastModifiedDate":"2017-08-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2017-06-12"},{"lineNumber":72,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\"Kurz Elle Kunz\");","lastModifiedDate":"2018-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":75,"author":{"gitId":"radeon2525"},"content":" assertCommandSuccess(command, model, commandHistory, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" FindCommand findCommand \u003d new FindCommand(predicate);","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.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-06-12"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2018-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":90,"author":{"gitId":"-"},"content":" private NameContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2018-08-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":" return new NameContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2018-08-08"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":93,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"radeon2525":4,"-":89}},{"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":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.HelpCommand.SHOWING_HELP_MESSAGE;","lastModifiedDate":"2017-06-08"},{"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":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2018-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class HelpCommandTest {","lastModifiedDate":"2017-06-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"radeon2525"},"content":" private CommandHistory commandHistory \u003d new CommandHistory();","lastModifiedDate":"2024-03-18"},{"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":"radeon2525"},"content":" assertCommandSuccess(new HelpCommand(), model, commandHistory, expectedCommandResult, expectedModel);","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08"}],"authorContributionMap":{"radeon2525":3,"-":19}},{"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":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for ListCommand.","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class ListCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private Model expectedModel;","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"radeon2525"},"content":" private CommandHistory commandHistory \u003d new CommandHistory();","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":" public void execute_listIsNotFiltered_showsSameList() {","lastModifiedDate":"2017-08-15"},{"lineNumber":33,"author":{"gitId":"radeon2525"},"content":" assertCommandSuccess(new ListCommand(), model, commandHistory, ListCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":" public void execute_listIsFiltered_showsEverything() {","lastModifiedDate":"2017-08-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":39,"author":{"gitId":"radeon2525"},"content":" assertCommandSuccess(new ListCommand(), model, commandHistory, ListCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"radeon2525":4,"-":37}},{"path":"src/test/java/seedu/address/logic/commands/RedoCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"radeon2525"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"radeon2525"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"radeon2525"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"radeon2525"},"content":"import static seedu.address.logic.commands.CommandTestUtil.deleteFirstPerson;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"radeon2525"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"radeon2525"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"radeon2525"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"radeon2525"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"radeon2525"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"radeon2525"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"radeon2525"},"content":"public class RedoCommandTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"radeon2525"},"content":" private final Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"radeon2525"},"content":" private final Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"radeon2525"},"content":" private final CommandHistory commandHistory \u003d new CommandHistory();","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"radeon2525"},"content":" @BeforeEach","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"radeon2525"},"content":" public void setUp() {","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"radeon2525"},"content":" // set up of both models\u0027 undo/redo history","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"radeon2525"},"content":" deleteFirstPerson(model);","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"radeon2525"},"content":" deleteFirstPerson(model);","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"radeon2525"},"content":" model.undoAddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"radeon2525"},"content":" model.undoAddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"radeon2525"},"content":" deleteFirstPerson(expectedModel);","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"radeon2525"},"content":" deleteFirstPerson(expectedModel);","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"radeon2525"},"content":" expectedModel.undoAddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"radeon2525"},"content":" expectedModel.undoAddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"radeon2525"},"content":" public void execute() {","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"radeon2525"},"content":" // multiple redoable states in model","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"radeon2525"},"content":" expectedModel.redoAddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"radeon2525"},"content":" assertCommandSuccess(new RedoCommand(), model, commandHistory, RedoCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"radeon2525"},"content":" // single redoable state in model","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"radeon2525"},"content":" expectedModel.redoAddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"radeon2525"},"content":" assertCommandSuccess(new RedoCommand(), model, commandHistory, RedoCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"radeon2525"},"content":" // no redoable state in model","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"radeon2525"},"content":" assertCommandFailure(new RedoCommand(), model, commandHistory, RedoCommand.MESSAGE_FAILURE);","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"radeon2525"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"radeon2525":49}},{"path":"src/test/java/seedu/address/logic/commands/TagCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Derekljh"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"Derekljh"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"Derekljh"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"Derekljh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"Derekljh"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"Derekljh"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"Derekljh"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"Derekljh"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"radeon2525"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"Derekljh"},"content":"import java.util.Collection;","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"Derekljh"},"content":"import java.util.List;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"Derekljh"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"Derekljh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"Derekljh"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"Derekljh"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"Derekljh"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"Derekljh"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"Derekljh"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"Derekljh"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"Derekljh"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"Derekljh"},"content":" * Contains integration tests (interactions with the Model) and unit tests for TagCommand.","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"Derekljh"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"Derekljh"},"content":"class TagCommandTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"Derekljh"},"content":" private static final Tag TAG_OWES_MONEY \u003d new Tag(\"owesMoney\");","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"Derekljh"},"content":" private static final Tag TAG_FRIENDS \u003d new Tag(\"friends\");","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"Derekljh"},"content":" private static final Collection\u003cTag\u003e TAGS \u003d List.of(TAG_OWES_MONEY, TAG_FRIENDS);","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"Derekljh"},"content":" private Model model;","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"Derekljh"},"content":" @BeforeEach","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"Derekljh"},"content":" public void init() {","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"Derekljh"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"Derekljh"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"Derekljh"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"Derekljh"},"content":" assertThrows(NullPointerException.class, () -\u003e new TagCommand(null, null));","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"Derekljh"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"Derekljh"},"content":" public void execute_indexOutOfBounds_failure() {","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"Derekljh"},"content":" Index index \u003d Index.fromOneBased(999);","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"Derekljh"},"content":" TagCommand command \u003d new TagCommand(index, TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"Derekljh"},"content":" String expectedMessage \u003d Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"radeon2525"},"content":" assertCommandFailure(command, model, new CommandHistory(), expectedMessage);","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"radeon2525"},"content":" public void showTags_singleTag_returnsSingleTag() {","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"radeon2525"},"content":" // Create a collection containing a single tag","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"radeon2525"},"content":" Collection\u003cTag\u003e tags \u003d Arrays.asList(new Tag(\"friend\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"radeon2525"},"content":" // Call the showTags method","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"radeon2525"},"content":" String result \u003d TagCommand.showTags(tags);","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"radeon2525"},"content":" // Verify that the result is the same as the single tag","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"radeon2525"},"content":" assertEquals(\"friend\", result);","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"Derekljh"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"Derekljh"},"content":" public void equals() {","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"Derekljh"},"content":" final TagCommand standardCommand \u003d new TagCommand(INDEX_FIRST_PERSON, TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"Derekljh"},"content":" // same object -\u003e equal","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"Derekljh"},"content":" assertEquals(standardCommand, standardCommand);","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"Derekljh"},"content":" // same values -\u003e equal","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"Derekljh"},"content":" var commandWithSameValues \u003d new TagCommand(INDEX_FIRST_PERSON, TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"Derekljh"},"content":" assertEquals(standardCommand, commandWithSameValues);","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"Derekljh"},"content":" // tags in different order -\u003e equal","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"Derekljh"},"content":" var tagsInDifferentOrder \u003d List.of(TAG_FRIENDS, TAG_OWES_MONEY);","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"Derekljh"},"content":" assertEquals(standardCommand, new TagCommand(INDEX_FIRST_PERSON, tagsInDifferentOrder));","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"Derekljh"},"content":" // null -\u003e not equal","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"Derekljh"},"content":" assertNotEquals(null, standardCommand);","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"Derekljh"},"content":" // different index -\u003e not equal","lastModifiedDate":"2024-03-16"},{"lineNumber":87,"author":{"gitId":"Derekljh"},"content":" assertNotEquals(standardCommand, new TagCommand(INDEX_SECOND_PERSON, TAGS));","lastModifiedDate":"2024-03-16"},{"lineNumber":88,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":89,"author":{"gitId":"Derekljh"},"content":" // different tags -\u003e not equal","lastModifiedDate":"2024-03-16"},{"lineNumber":90,"author":{"gitId":"Derekljh"},"content":" assertNotEquals(standardCommand, new TagCommand(INDEX_FIRST_PERSON, List.of(TAG_OWES_MONEY)));","lastModifiedDate":"2024-03-16"},{"lineNumber":91,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":92,"author":{"gitId":"Derekljh"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"Derekljh":76,"radeon2525":16}},{"path":"src/test/java/seedu/address/logic/commands/UndoCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"radeon2525"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"radeon2525"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"radeon2525"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"radeon2525"},"content":"import static seedu.address.logic.commands.CommandTestUtil.deleteFirstPerson;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"radeon2525"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"radeon2525"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"radeon2525"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"radeon2525"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"radeon2525"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"radeon2525"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"radeon2525"},"content":"public class UndoCommandTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"radeon2525"},"content":" private final Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"radeon2525"},"content":" private final Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"radeon2525"},"content":" private final CommandHistory commandHistory \u003d new CommandHistory();","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"radeon2525"},"content":" @BeforeEach","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"radeon2525"},"content":" public void setUp() {","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"radeon2525"},"content":" // set up of models\u0027 undo/redo history","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"radeon2525"},"content":" deleteFirstPerson(model);","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"radeon2525"},"content":" deleteFirstPerson(model);","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"radeon2525"},"content":" deleteFirstPerson(expectedModel);","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"radeon2525"},"content":" deleteFirstPerson(expectedModel);","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"radeon2525"},"content":" public void execute() {","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"radeon2525"},"content":" // multiple undoable states in model","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"radeon2525"},"content":" expectedModel.undoAddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"radeon2525"},"content":" assertCommandSuccess(new UndoCommand(), model, commandHistory, UndoCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"radeon2525"},"content":" // single undoable state in model","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"radeon2525"},"content":" expectedModel.undoAddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"radeon2525"},"content":" assertCommandSuccess(new UndoCommand(), model, commandHistory, UndoCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"radeon2525"},"content":" // no undoable states in model","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"radeon2525"},"content":" assertCommandFailure(new UndoCommand(), model, commandHistory, UndoCommand.MESSAGE_FAILURE);","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"radeon2525"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"radeon2525":45}},{"path":"src/test/java/seedu/address/logic/commands/UntagCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"miffi"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"miffi"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"miffi"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"miffi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"miffi"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"miffi"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"miffi"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"miffi"},"content":"import java.util.Collection;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"miffi"},"content":"import java.util.List;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"miffi"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"miffi"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"miffi"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"miffi"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"miffi"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"miffi"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"miffi"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"miffi"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"miffi"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"miffi"},"content":" * Contains integration tests (interactions with the Model) and unit tests for UntagCommand.","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"miffi"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"miffi"},"content":"class UntagCommandTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"miffi"},"content":" private static final Tag TAG_OWES_MONEY \u003d new Tag(\"owesMoney\");","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"miffi"},"content":" private static final Tag TAG_FRIENDS \u003d new Tag(\"friends\");","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"miffi"},"content":" private static final Collection\u003cTag\u003e TAGS \u003d List.of(TAG_OWES_MONEY, TAG_FRIENDS);","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"miffi"},"content":" private Model model;","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"miffi"},"content":" @BeforeEach","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"miffi"},"content":" public void init() {","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"miffi"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"miffi"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"miffi"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"miffi"},"content":" public void execute_tagMissing_failure() {","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"miffi"},"content":" var index \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"miffi"},"content":" var personName \u003d model.getFilteredPersonList().get(index.getZeroBased()).getName();","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"miffi"},"content":" var command \u003d new UntagCommand(index, TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"miffi"},"content":" var expectedMessage \u003d String.format(","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"miffi"},"content":" Messages.MESSAGE_MISSING_TAG,","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"miffi"},"content":" personName,","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"miffi"},"content":" \"owesMoney\");","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"radeon2525"},"content":" assertCommandFailure(command, model, new CommandHistory(), expectedMessage);","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"miffi"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"miffi"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"miffi"},"content":" public void execute_indexOutOfBounds_failure() {","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"miffi"},"content":" var index \u003d Index.fromOneBased(999);","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"miffi"},"content":" var command \u003d new UntagCommand(index, TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"miffi"},"content":" var expectedMessage \u003d Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"radeon2525"},"content":" assertCommandFailure(command, model, new CommandHistory(), expectedMessage);","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"miffi"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"miffi"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"miffi"},"content":" public void equals() {","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"miffi"},"content":" final UntagCommand standardCommand \u003d new UntagCommand(INDEX_FIRST_PERSON, TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"miffi"},"content":" // same object -\u003e equal","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"miffi"},"content":" assertEquals(standardCommand, standardCommand);","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"miffi"},"content":" // same values -\u003e equal","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"miffi"},"content":" var commandWithSameValues \u003d new UntagCommand(INDEX_FIRST_PERSON, TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"miffi"},"content":" assertEquals(standardCommand, commandWithSameValues);","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"miffi"},"content":" // tags in different order -\u003e equal","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"miffi"},"content":" var tagsInDifferentOrder \u003d List.of(TAG_FRIENDS, TAG_OWES_MONEY);","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"miffi"},"content":" assertEquals(standardCommand, new UntagCommand(INDEX_FIRST_PERSON, tagsInDifferentOrder));","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"miffi"},"content":" // null -\u003e not equal","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"miffi"},"content":" assertNotEquals(null, standardCommand);","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"miffi"},"content":" // different types -\u003e not equal","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"miffi"},"content":" assertNotEquals(standardCommand, new ClearCommand());","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"miffi"},"content":" // different index -\u003e not equal","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"miffi"},"content":" assertNotEquals(standardCommand, new UntagCommand(INDEX_SECOND_PERSON, TAGS));","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"miffi"},"content":" // different tags -\u003e not equal","lastModifiedDate":"2024-03-16"},{"lineNumber":87,"author":{"gitId":"miffi"},"content":" assertNotEquals(standardCommand, new UntagCommand(INDEX_FIRST_PERSON, List.of(TAG_OWES_MONEY)));","lastModifiedDate":"2024-03-16"},{"lineNumber":88,"author":{"gitId":"miffi"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":89,"author":{"gitId":"miffi"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"radeon2525":3,"miffi":86}},{"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":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.commands.RedoCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"Derekljh"},"content":"import seedu.address.logic.commands.TagCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.commands.UndoCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"miffi"},"content":"import seedu.address.logic.commands.UntagCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27"},{"lineNumber":33,"author":{"gitId":"Derekljh"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":42,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"radeon2525"},"content":" public void parseCommand_undoCommand_returnsUndoCommand() throws ParseException {","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"radeon2525"},"content":" Command command \u003d parser.parseCommand(\"undo\");","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"radeon2525"},"content":" assertTrue(command instanceof UndoCommand);","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"radeon2525"},"content":" public void parseCommand_redoCommand_returnsRedoCommand() throws ParseException {","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"radeon2525"},"content":" Command command \u003d parser.parseCommand(\"redo\");","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"radeon2525"},"content":" assertTrue(command instanceof RedoCommand);","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27"},{"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-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2017-06-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"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":"Derekljh"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":110,"author":{"gitId":"Derekljh"},"content":" public void parseCommand_tag() throws Exception {","lastModifiedDate":"2024-03-16"},{"lineNumber":111,"author":{"gitId":"Derekljh"},"content":" TagCommand expectedCommand \u003d new TagCommand(INDEX_FIRST_PERSON, List.of(new Tag(\"alpha\"), new Tag(\"beta\")));","lastModifiedDate":"2024-03-16"},{"lineNumber":112,"author":{"gitId":"Derekljh"},"content":" assertEquals(expectedCommand, parser.parseCommand(TagCommand.COMMAND_WORD","lastModifiedDate":"2024-03-16"},{"lineNumber":113,"author":{"gitId":"Derekljh"},"content":" + \" \"","lastModifiedDate":"2024-03-16"},{"lineNumber":114,"author":{"gitId":"Derekljh"},"content":" + INDEX_FIRST_PERSON.getOneBased()","lastModifiedDate":"2024-03-16"},{"lineNumber":115,"author":{"gitId":"The-Dudeski"},"content":" + \" tag:alpha tag:beta\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":116,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":117,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":118,"author":{"gitId":"miffi"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":119,"author":{"gitId":"miffi"},"content":" public void parseCommand_untag() throws Exception {","lastModifiedDate":"2024-03-16"},{"lineNumber":120,"author":{"gitId":"miffi"},"content":" var index \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-16"},{"lineNumber":121,"author":{"gitId":"miffi"},"content":" var expectedCommand \u003d new UntagCommand(index, List.of(new Tag(\"alpha\"), new Tag(\"beta\")));","lastModifiedDate":"2024-03-16"},{"lineNumber":122,"author":{"gitId":"miffi"},"content":" assertEquals(expectedCommand, parser.parseCommand(UntagCommand.COMMAND_WORD","lastModifiedDate":"2024-03-16"},{"lineNumber":123,"author":{"gitId":"miffi"},"content":" + \" \"","lastModifiedDate":"2024-03-16"},{"lineNumber":124,"author":{"gitId":"miffi"},"content":" + INDEX_FIRST_PERSON.getOneBased()","lastModifiedDate":"2024-03-16"},{"lineNumber":125,"author":{"gitId":"The-Dudeski"},"content":" + \" tag:alpha tag:beta\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":126,"author":{"gitId":"miffi"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":127,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":135,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":138,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"The-Dudeski":2,"Derekljh":10,"radeon2525":15,"miffi":10,"-":101}},{"path":"src/test/java/seedu/address/logic/parser/TagCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Derekljh"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"Derekljh"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"Derekljh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"Derekljh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"Derekljh"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"Derekljh"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"Derekljh"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"Derekljh"},"content":"import java.util.Collection;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"Derekljh"},"content":"import java.util.List;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"Derekljh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"Derekljh"},"content":"import seedu.address.logic.commands.TagCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"Derekljh"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"Derekljh"},"content":"class TagCommandParserTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"Derekljh"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"Derekljh"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, TagCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"Derekljh"},"content":" private static final Tag TAG1 \u003d new Tag(\"friend\");","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"Derekljh"},"content":" private static final Tag TAG2 \u003d new Tag(\"husband\");","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"Derekljh"},"content":" private static final Collection\u003cTag\u003e TAGS \u003d List.of(TAG1, TAG2);","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"Derekljh"},"content":" private final TagCommandParser parser \u003d new TagCommandParser();","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"Derekljh"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"Derekljh"},"content":" public void parse_validArgs_returnsTagCommand() {","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"Derekljh"},"content":" var index \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"Derekljh"},"content":" assertParseSuccess(parser, index.getOneBased() + TAG_DESC_FRIEND + TAG_DESC_HUSBAND,","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"Derekljh"},"content":" new TagCommand(index, TAGS));","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"Derekljh"},"content":" // order should not matter","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"Derekljh"},"content":" assertParseSuccess(parser, index.getOneBased() + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"Derekljh"},"content":" new TagCommand(index, TAGS));","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"Derekljh"},"content":" // one tag","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"Derekljh"},"content":" assertParseSuccess(parser, index.getOneBased() + TAG_DESC_HUSBAND,","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"Derekljh"},"content":" new TagCommand(index, List.of(TAG2)));","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"Derekljh"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"Derekljh"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"Derekljh"},"content":" // no tags given","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"Derekljh"},"content":" assertParseFailure(parser, \"1\",","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"Derekljh"},"content":" MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"Derekljh"},"content":" // no index given","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"Derekljh"},"content":" assertParseFailure(parser, \"t/friend\",","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"Derekljh"},"content":" MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"Derekljh"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"Derekljh":54}},{"path":"src/test/java/seedu/address/logic/parser/UntagCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"miffi"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"miffi"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"miffi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"miffi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"miffi"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"miffi"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"miffi"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"miffi"},"content":"import java.util.Collection;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"miffi"},"content":"import java.util.List;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"miffi"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"miffi"},"content":"import seedu.address.logic.commands.UntagCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"miffi"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"miffi"},"content":"class UntagCommandParserTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"miffi"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"miffi"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, UntagCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"miffi"},"content":" private static final Tag TAG1 \u003d new Tag(\"friend\");","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"miffi"},"content":" private static final Tag TAG2 \u003d new Tag(\"husband\");","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"miffi"},"content":" private static final Collection\u003cTag\u003e TAGS \u003d List.of(TAG1, TAG2);","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"miffi"},"content":" private final UntagCommandParser parser \u003d new UntagCommandParser();","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"miffi"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"miffi"},"content":" public void parse_validArgs_returnsUntagCommand() {","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"miffi"},"content":" var index \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"miffi"},"content":" assertParseSuccess(parser, index.getOneBased() + TAG_DESC_FRIEND + TAG_DESC_HUSBAND,","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"miffi"},"content":" new UntagCommand(index, TAGS));","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"miffi"},"content":" // order should not matter","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"miffi"},"content":" assertParseSuccess(parser, index.getOneBased() + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"miffi"},"content":" new UntagCommand(index, TAGS));","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"miffi"},"content":" // one tag","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"miffi"},"content":" assertParseSuccess(parser, index.getOneBased() + TAG_DESC_HUSBAND,","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"miffi"},"content":" new UntagCommand(index, List.of(TAG2)));","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"miffi"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"miffi"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"miffi"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"miffi"},"content":" // no tags given","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"miffi"},"content":" assertParseFailure(parser, \"1\",","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"miffi"},"content":" MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"miffi"},"content":" // no index given","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"miffi"},"content":" assertParseFailure(parser, \"t/friend\",","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"miffi"},"content":" MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"miffi"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"miffi"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"miffi":54}},{"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":"-"},"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":"radeon2525"},"content":"import javafx.beans.InvalidationListener;","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"radeon2525"},"content":"import javafx.beans.Observable;","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-12-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-12-24"},{"lineNumber":23,"author":{"gitId":"radeon2525"},"content":"import seedu.address.commons.util.InvalidationListenerManager;","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2018-08-07"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-04-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":28,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class AddressBookTest {","lastModifiedDate":"2016-12-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final AddressBook addressBook \u003d new AddressBook();","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 constructor() {","lastModifiedDate":"2016-12-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), addressBook.getPersonList());","lastModifiedDate":"2016-12-24"},{"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_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.resetData(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":43,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"radeon2525"},"content":" public void removeListener_success() {","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"radeon2525"},"content":" AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"radeon2525"},"content":" InvalidationListenerManager manager \u003d addressBook.invalidationListenerManager;","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"radeon2525"},"content":" // Create a listener","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"radeon2525"},"content":" InvalidationListener listener \u003d new InvalidationListener() {","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"radeon2525"},"content":" public void invalidated(Observable observable) {","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"radeon2525"},"content":" // Do nothing","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"radeon2525"},"content":" };","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"radeon2525"},"content":" // Remove the listener","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"radeon2525"},"content":" addressBook.removeListener(listener);","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"radeon2525"},"content":" // Ensure the listener is removed","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"radeon2525"},"content":" assertFalse(manager.listeners.contains(listener));","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"radeon2525"},"content":" public void addListener_success() {","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"radeon2525"},"content":" AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"radeon2525"},"content":" InvalidationListenerManager manager \u003d addressBook.invalidationListenerManager;","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"radeon2525"},"content":" // Create a listener","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"radeon2525"},"content":" TestInvalidationListener listener \u003d new TestInvalidationListener();","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"radeon2525"},"content":" // Add the listener","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"radeon2525"},"content":" addressBook.addListener(listener);","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"radeon2525"},"content":" // Trigger an invalidation event","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"radeon2525"},"content":" addressBook.indicateModified();","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"radeon2525"},"content":" // Ensure the listener is notified","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"radeon2525"},"content":" assertTrue(listener.isInvalidated());","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"radeon2525"},"content":" // Define a test InvalidationListener implementation","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"radeon2525"},"content":" private static class TestInvalidationListener implements InvalidationListener {","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"radeon2525"},"content":" private boolean invalidated \u003d false;","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"radeon2525"},"content":" public void invalidated(Observable observable) {","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"radeon2525"},"content":" invalidated \u003d true;","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"radeon2525"},"content":" public boolean isInvalidated() {","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"radeon2525"},"content":" return invalidated;","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public void resetData_withValidReadOnlyAddressBook_replacesData() {","lastModifiedDate":"2016-12-24"},{"lineNumber":97,"author":{"gitId":"-"},"content":" AddressBook newData \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" addressBook.resetData(newData);","lastModifiedDate":"2016-12-24"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertEquals(newData, addressBook);","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":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void resetData_withDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-07"},{"lineNumber":104,"author":{"gitId":"-"},"content":" // Two persons with the same identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2018-04-19"},{"lineNumber":106,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-04-19"},{"lineNumber":107,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e newPersons \u003d Arrays.asList(ALICE, editedAlice);","lastModifiedDate":"2018-04-19"},{"lineNumber":108,"author":{"gitId":"-"},"content":" AddressBookStub newData \u003d new AddressBookStub(newPersons);","lastModifiedDate":"2018-03-29"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e addressBook.resetData(newData));","lastModifiedDate":"2019-03-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06"},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasPerson(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertFalse(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":124,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":125,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":130,"author":{"gitId":"-"},"content":" public void hasPerson_personWithSameIdentityFieldsInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":131,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":132,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2018-08-06"},{"lineNumber":133,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-06"},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(editedAlice));","lastModifiedDate":"2018-08-06"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":138,"author":{"gitId":"-"},"content":" public void getPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e addressBook.getPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":" String expected \u003d AddressBook.class.getCanonicalName() + \"{persons\u003d\" + addressBook.getPersonList() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertEquals(expected, addressBook.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-24"},{"lineNumber":149,"author":{"gitId":"-"},"content":" * A stub ReadOnlyAddressBook whose persons list can violate interface constraints.","lastModifiedDate":"2018-03-29"},{"lineNumber":150,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-24"},{"lineNumber":151,"author":{"gitId":"-"},"content":" private static class AddressBookStub implements ReadOnlyAddressBook {","lastModifiedDate":"2016-12-24"},{"lineNumber":152,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e persons \u003d FXCollections.observableArrayList();","lastModifiedDate":"2018-01-10"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":154,"author":{"gitId":"-"},"content":" AddressBookStub(Collection\u003cPerson\u003e persons) {","lastModifiedDate":"2018-03-29"},{"lineNumber":155,"author":{"gitId":"-"},"content":" this.persons.setAll(persons);","lastModifiedDate":"2016-12-24"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":158,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-24"},{"lineNumber":159,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":160,"author":{"gitId":"-"},"content":" return persons;","lastModifiedDate":"2016-12-24"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":164,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-24"}],"authorContributionMap":{"radeon2525":56,"-":108}},{"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":"radeon2525"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-19"},{"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.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"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.BENSON;","lastModifiedDate":"2017-07-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-31"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"radeon2525"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.testutil.AddressBookBuilder;","lastModifiedDate":"2017-05-31"},{"lineNumber":22,"author":{"gitId":"radeon2525"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"radeon2525"},"content":"import seedu.address.testutil.TypicalPersons;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class ModelManagerTest {","lastModifiedDate":"2017-05-31"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2018-08-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertEquals(new GuiSettings(), modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertEquals(new AddressBook(), new AddressBook(modelManager.getAddressBook()));","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void setUserPrefs_nullUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setUserPrefs(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"radeon2525"},"content":" public void setPerson_personInAddressBook_success() {","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"radeon2525"},"content":" // Create initial state","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"radeon2525"},"content":" ReadOnlyAddressBook initialAddressBook \u003d modelManager.getAddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"radeon2525"},"content":" ReadOnlyUserPrefs initialUserPrefs \u003d modelManager.getUserPrefs();","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"radeon2525"},"content":" // Add a valid person to the address book","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"radeon2525"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"radeon2525"},"content":" modelManager.addPerson(validPerson);","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"radeon2525"},"content":" // Create an edited version of the person","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"radeon2525"},"content":" Person editedPerson \u003d new PersonBuilder(validPerson).withName(\"New Name\").build();","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"radeon2525"},"content":" // Set edited person in the model","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"radeon2525"},"content":" modelManager.setPerson(validPerson, editedPerson);","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"radeon2525"},"content":" // Check if the edited person is in the filteredPersons list","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"radeon2525"},"content":" assertEquals(editedPerson, modelManager.getFilteredPersonList().get(0));","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"radeon2525"},"content":" assertNotEquals(validPerson, modelManager.getFilteredPersonList().get(0));","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"radeon2525"},"content":" // Ensure that the address book\u0027s state was not changed","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"radeon2525"},"content":" assertEquals(initialAddressBook, modelManager.getAddressBook());","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"radeon2525"},"content":" // Ensure that the user prefs remain unchanged","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"radeon2525"},"content":" assertEquals(initialUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void setUserPrefs_validUserPrefs_copiesUserPrefs() {","lastModifiedDate":"2018-12-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"address/book/file/path\"));","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1, 2, 3, 4));","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" modelManager.setUserPrefs(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // Modifying userPrefs should not modify modelManager\u0027s userPrefs","lastModifiedDate":"2018-12-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":" UserPrefs oldUserPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":78,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"new/address/book/file/path\"));","lastModifiedDate":"2018-12-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertEquals(oldUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setGuiSettings(null));","lastModifiedDate":"2019-03-23"},{"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 setGuiSettings_validGuiSettings_setsGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1, 2, 3, 4);","lastModifiedDate":"2018-11-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" modelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertEquals(guiSettings, modelManager.getGuiSettings());","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":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setAddressBookFilePath(null));","lastModifiedDate":"2019-03-23"},{"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-11-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_validPath_setsAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":" Path path \u003d Paths.get(\"address/book/file/path\");","lastModifiedDate":"2018-11-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" modelManager.setAddressBookFilePath(path);","lastModifiedDate":"2018-11-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertEquals(path, modelManager.getAddressBookFilePath());","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":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasPerson(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertFalse(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":118,"author":{"gitId":"-"},"content":" modelManager.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertTrue(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":122,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":124,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":128,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":129,"author":{"gitId":"radeon2525"},"content":" public void constructor_validArguments_success() {","lastModifiedDate":"2024-03-19"},{"lineNumber":130,"author":{"gitId":"radeon2525"},"content":" // Create a ReadOnlyAddressBook with typical persons","lastModifiedDate":"2024-03-19"},{"lineNumber":131,"author":{"gitId":"radeon2525"},"content":" ReadOnlyAddressBook addressBook \u003d TypicalPersons.getTypicalAddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":132,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":133,"author":{"gitId":"radeon2525"},"content":" // Create a ReadOnlyUserPrefs with typical preferences","lastModifiedDate":"2024-03-19"},{"lineNumber":134,"author":{"gitId":"radeon2525"},"content":" ReadOnlyUserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2024-03-19"},{"lineNumber":135,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":136,"author":{"gitId":"radeon2525"},"content":" // Create a ModelManager instance using the constructor with arguments","lastModifiedDate":"2024-03-19"},{"lineNumber":137,"author":{"gitId":"radeon2525"},"content":" ModelManager modelManager \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2024-03-19"},{"lineNumber":138,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":139,"author":{"gitId":"radeon2525"},"content":" // Verify that the versionedAddressBook is correctly initialized with the data from the ReadOnlyAddressBook","lastModifiedDate":"2024-03-19"},{"lineNumber":140,"author":{"gitId":"radeon2525"},"content":" assertEquals(addressBook, modelManager.getAddressBook());","lastModifiedDate":"2024-03-19"},{"lineNumber":141,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":142,"author":{"gitId":"radeon2525"},"content":" // Verify that the userPrefs is correctly initialized with the data from the ReadOnlyUserPrefs","lastModifiedDate":"2024-03-19"},{"lineNumber":143,"author":{"gitId":"radeon2525"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":144,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":145,"author":{"gitId":"radeon2525"},"content":" assertTrue(modelManager.getFilteredPersonList().containsAll(addressBook.getPersonList()));","lastModifiedDate":"2024-03-19"},{"lineNumber":146,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":147,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":148,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":149,"author":{"gitId":"radeon2525"},"content":" public void setUserPrefs_validUserPrefs_success() {","lastModifiedDate":"2024-03-19"},{"lineNumber":150,"author":{"gitId":"radeon2525"},"content":" // Create initial user preferences","lastModifiedDate":"2024-03-19"},{"lineNumber":151,"author":{"gitId":"radeon2525"},"content":" UserPrefs initialUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2024-03-19"},{"lineNumber":152,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":153,"author":{"gitId":"radeon2525"},"content":" // Create a new set of user preferences","lastModifiedDate":"2024-03-19"},{"lineNumber":154,"author":{"gitId":"radeon2525"},"content":" UserPrefs newUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2024-03-19"},{"lineNumber":155,"author":{"gitId":"radeon2525"},"content":" GuiSettings defaultGuiSettings \u003d new GuiSettings(800, 600, 0, 0);","lastModifiedDate":"2024-03-19"},{"lineNumber":156,"author":{"gitId":"radeon2525"},"content":" newUserPrefs.setGuiSettings(defaultGuiSettings);","lastModifiedDate":"2024-03-19"},{"lineNumber":157,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":158,"author":{"gitId":"radeon2525"},"content":" // Create a ModelManager instance","lastModifiedDate":"2024-03-19"},{"lineNumber":159,"author":{"gitId":"radeon2525"},"content":" ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2024-03-19"},{"lineNumber":160,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":161,"author":{"gitId":"radeon2525"},"content":" // Set the user preferences","lastModifiedDate":"2024-03-19"},{"lineNumber":162,"author":{"gitId":"radeon2525"},"content":" modelManager.setUserPrefs(newUserPrefs);","lastModifiedDate":"2024-03-19"},{"lineNumber":163,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":164,"author":{"gitId":"radeon2525"},"content":" // Verify that the user preferences in the ModelManager are updated","lastModifiedDate":"2024-03-19"},{"lineNumber":165,"author":{"gitId":"radeon2525"},"content":" ReadOnlyUserPrefs retrievedUserPrefs \u003d modelManager.getUserPrefs();","lastModifiedDate":"2024-03-19"},{"lineNumber":166,"author":{"gitId":"radeon2525"},"content":" assertEquals(newUserPrefs, retrievedUserPrefs);","lastModifiedDate":"2024-03-19"},{"lineNumber":167,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":168,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":169,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31"},{"lineNumber":170,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":171,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBookBuilder().withPerson(ALICE).withPerson(BENSON).build();","lastModifiedDate":"2017-07-19"},{"lineNumber":172,"author":{"gitId":"-"},"content":" AddressBook differentAddressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31"},{"lineNumber":173,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":175,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":176,"author":{"gitId":"-"},"content":" modelManager \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2018-08-06"},{"lineNumber":177,"author":{"gitId":"-"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2017-05-31"},{"lineNumber":178,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":180,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":181,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":183,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":184,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":186,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":187,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":189,"author":{"gitId":"-"},"content":" // different addressBook -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":190,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(differentAddressBook, userPrefs)));","lastModifiedDate":"2017-05-31"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":192,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":193,"author":{"gitId":"-"},"content":" String[] keywords \u003d ALICE.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-19"},{"lineNumber":194,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(keywords)));","lastModifiedDate":"2017-06-12"},{"lineNumber":195,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, userPrefs)));","lastModifiedDate":"2017-05-31"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":197,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2017-08-05"},{"lineNumber":198,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":200,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27"},{"lineNumber":201,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":202,"author":{"gitId":"-"},"content":" differentUserPrefs.setAddressBookFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2018-08-09"},{"lineNumber":203,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, differentUserPrefs)));","lastModifiedDate":"2018-11-27"},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":205,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31"}],"authorContributionMap":{"radeon2525":73,"-":132}},{"path":"src/test/java/seedu/address/model/VersionedAddressBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"radeon2525"},"content":"package seedu.address.model;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"radeon2525"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"radeon2525"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"radeon2525"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"radeon2525"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"radeon2525"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"radeon2525"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"radeon2525"},"content":"import static seedu.address.testutil.TypicalPersons.CARL;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"radeon2525"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"radeon2525"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"radeon2525"},"content":"import java.util.List;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"radeon2525"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"radeon2525"},"content":"import seedu.address.testutil.AddressBookBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"radeon2525"},"content":"public class VersionedAddressBookTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"radeon2525"},"content":" private final ReadOnlyAddressBook addressBookWithAmy \u003d new AddressBookBuilder().withPerson(AMY).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"radeon2525"},"content":" private final ReadOnlyAddressBook addressBookWithBob \u003d new AddressBookBuilder().withPerson(BOB).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"radeon2525"},"content":" private final ReadOnlyAddressBook addressBookWithCarl \u003d new AddressBookBuilder().withPerson(CARL).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"radeon2525"},"content":" private final ReadOnlyAddressBook emptyAddressBook \u003d new AddressBookBuilder().build();","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"radeon2525"},"content":" public void commit_singleAddressBook_noStatesRemovedCurrentStateSaved() {","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(emptyAddressBook);","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.commit();","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"radeon2525"},"content":" assertAddressBookListStatus(versionedAddressBook,","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"radeon2525"},"content":" Collections.singletonList(emptyAddressBook),","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"radeon2525"},"content":" emptyAddressBook,","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"radeon2525"},"content":" Collections.emptyList());","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"radeon2525"},"content":" public void equals_sameInstance_returnsTrue() {","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d new VersionedAddressBook(new AddressBook());","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"radeon2525"},"content":" assertTrue(versionedAddressBook.equals(versionedAddressBook));","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"radeon2525"},"content":" public void equals_differentClass_returnsFalse() {","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d new VersionedAddressBook(new AddressBook());","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"radeon2525"},"content":" assertFalse(versionedAddressBook.equals(new Object()));","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"radeon2525"},"content":" public void equals_null_returnsFalse() {","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d new VersionedAddressBook(new AddressBook());","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"radeon2525"},"content":" assertFalse(versionedAddressBook.equals(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"radeon2525"},"content":" public void equals_differentState_returnsFalse() {","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook1 \u003d new VersionedAddressBook(new AddressBook());","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook2 \u003d new VersionedAddressBook(new AddressBook());","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook2.commit();","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"radeon2525"},"content":" assertFalse(versionedAddressBook1.equals(versionedAddressBook2));","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"radeon2525"},"content":" public void equals_sameState_returnsTrue() {","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook1 \u003d new VersionedAddressBook(new AddressBook());","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook2 \u003d new VersionedAddressBook(new AddressBook());","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"radeon2525"},"content":" assertTrue(versionedAddressBook1.equals(versionedAddressBook2));","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"radeon2525"},"content":" public void commit_multipleAddressBookPointerAtEndOfStateList_noStatesRemovedCurrentStateSaved() {","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"radeon2525"},"content":" emptyAddressBook, addressBookWithAmy, addressBookWithBob);","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.commit();","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"radeon2525"},"content":" assertAddressBookListStatus(versionedAddressBook,","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"radeon2525"},"content":" Arrays.asList(emptyAddressBook, addressBookWithAmy, addressBookWithBob),","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"radeon2525"},"content":" addressBookWithBob,","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"radeon2525"},"content":" Collections.emptyList());","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"radeon2525"},"content":" public void commit_multipleAddressBookPointerNotAtEndOfStateList_statesAfterPointerRemovedCurrentStateSaved() {","lastModifiedDate":"2024-03-19"},{"lineNumber":84,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"radeon2525"},"content":" emptyAddressBook, addressBookWithAmy, addressBookWithBob);","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"radeon2525"},"content":" shiftCurrentStatePointerLeftwards(versionedAddressBook, 2);","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.commit();","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"radeon2525"},"content":" assertAddressBookListStatus(versionedAddressBook,","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"radeon2525"},"content":" Collections.singletonList(emptyAddressBook),","lastModifiedDate":"2024-03-19"},{"lineNumber":91,"author":{"gitId":"radeon2525"},"content":" emptyAddressBook,","lastModifiedDate":"2024-03-19"},{"lineNumber":92,"author":{"gitId":"radeon2525"},"content":" Collections.emptyList());","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":95,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"radeon2525"},"content":" public void canUndo_multipleAddressBookPointerAtEndOfStateList_returnsTrue() {","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"radeon2525"},"content":" emptyAddressBook, addressBookWithAmy, addressBookWithBob);","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"radeon2525"},"content":" assertTrue(versionedAddressBook.canUndo());","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"radeon2525"},"content":" public void canUndo_multipleAddressBookPointerAtStartOfStateList_returnsTrue() {","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(","lastModifiedDate":"2024-03-19"},{"lineNumber":106,"author":{"gitId":"radeon2525"},"content":" emptyAddressBook, addressBookWithAmy, addressBookWithBob);","lastModifiedDate":"2024-03-19"},{"lineNumber":107,"author":{"gitId":"radeon2525"},"content":" shiftCurrentStatePointerLeftwards(versionedAddressBook, 1);","lastModifiedDate":"2024-03-19"},{"lineNumber":108,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"radeon2525"},"content":" assertTrue(versionedAddressBook.canUndo());","lastModifiedDate":"2024-03-19"},{"lineNumber":110,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":111,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":112,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":113,"author":{"gitId":"radeon2525"},"content":" public void canUndo_singleAddressBook_returnsFalse() {","lastModifiedDate":"2024-03-19"},{"lineNumber":114,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(emptyAddressBook);","lastModifiedDate":"2024-03-19"},{"lineNumber":115,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":116,"author":{"gitId":"radeon2525"},"content":" assertFalse(versionedAddressBook.canUndo());","lastModifiedDate":"2024-03-19"},{"lineNumber":117,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":118,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":119,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":120,"author":{"gitId":"radeon2525"},"content":" public void canUndo_multipleAddressBookPointerAtStartOfStateList_returnsFalse() {","lastModifiedDate":"2024-03-19"},{"lineNumber":121,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(","lastModifiedDate":"2024-03-19"},{"lineNumber":122,"author":{"gitId":"radeon2525"},"content":" emptyAddressBook, addressBookWithAmy, addressBookWithBob);","lastModifiedDate":"2024-03-19"},{"lineNumber":123,"author":{"gitId":"radeon2525"},"content":" shiftCurrentStatePointerLeftwards(versionedAddressBook, 2);","lastModifiedDate":"2024-03-19"},{"lineNumber":124,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":125,"author":{"gitId":"radeon2525"},"content":" assertFalse(versionedAddressBook.canUndo());","lastModifiedDate":"2024-03-19"},{"lineNumber":126,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":127,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":128,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":129,"author":{"gitId":"radeon2525"},"content":" public void canRedo_multipleAddressBookPointerNotAtEndOfStateList_returnsTrue() {","lastModifiedDate":"2024-03-19"},{"lineNumber":130,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(","lastModifiedDate":"2024-03-19"},{"lineNumber":131,"author":{"gitId":"radeon2525"},"content":" emptyAddressBook, addressBookWithAmy, addressBookWithBob);","lastModifiedDate":"2024-03-19"},{"lineNumber":132,"author":{"gitId":"radeon2525"},"content":" shiftCurrentStatePointerLeftwards(versionedAddressBook, 1);","lastModifiedDate":"2024-03-19"},{"lineNumber":133,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":134,"author":{"gitId":"radeon2525"},"content":" assertTrue(versionedAddressBook.canRedo());","lastModifiedDate":"2024-03-19"},{"lineNumber":135,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":136,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":137,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":138,"author":{"gitId":"radeon2525"},"content":" public void canRedo_multipleAddressBookPointerAtStartOfStateList_returnsTrue() {","lastModifiedDate":"2024-03-19"},{"lineNumber":139,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(","lastModifiedDate":"2024-03-19"},{"lineNumber":140,"author":{"gitId":"radeon2525"},"content":" emptyAddressBook, addressBookWithAmy, addressBookWithBob);","lastModifiedDate":"2024-03-19"},{"lineNumber":141,"author":{"gitId":"radeon2525"},"content":" shiftCurrentStatePointerLeftwards(versionedAddressBook, 2);","lastModifiedDate":"2024-03-19"},{"lineNumber":142,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":143,"author":{"gitId":"radeon2525"},"content":" assertTrue(versionedAddressBook.canRedo());","lastModifiedDate":"2024-03-19"},{"lineNumber":144,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":145,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":146,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":147,"author":{"gitId":"radeon2525"},"content":" public void canRedo_singleAddressBook_returnsFalse() {","lastModifiedDate":"2024-03-19"},{"lineNumber":148,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(emptyAddressBook);","lastModifiedDate":"2024-03-19"},{"lineNumber":149,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":150,"author":{"gitId":"radeon2525"},"content":" assertFalse(versionedAddressBook.canRedo());","lastModifiedDate":"2024-03-19"},{"lineNumber":151,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":152,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":153,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":154,"author":{"gitId":"radeon2525"},"content":" public void canRedo_multipleAddressBookPointerAtEndOfStateList_returnsFalse() {","lastModifiedDate":"2024-03-19"},{"lineNumber":155,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(","lastModifiedDate":"2024-03-19"},{"lineNumber":156,"author":{"gitId":"radeon2525"},"content":" emptyAddressBook, addressBookWithAmy, addressBookWithBob);","lastModifiedDate":"2024-03-19"},{"lineNumber":157,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":158,"author":{"gitId":"radeon2525"},"content":" assertFalse(versionedAddressBook.canRedo());","lastModifiedDate":"2024-03-19"},{"lineNumber":159,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":160,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":161,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":162,"author":{"gitId":"radeon2525"},"content":" public void undo_multipleAddressBookPointerAtEndOfStateList_success() {","lastModifiedDate":"2024-03-19"},{"lineNumber":163,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(","lastModifiedDate":"2024-03-19"},{"lineNumber":164,"author":{"gitId":"radeon2525"},"content":" emptyAddressBook, addressBookWithAmy, addressBookWithBob);","lastModifiedDate":"2024-03-19"},{"lineNumber":165,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":166,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.undo();","lastModifiedDate":"2024-03-19"},{"lineNumber":167,"author":{"gitId":"radeon2525"},"content":" assertAddressBookListStatus(versionedAddressBook,","lastModifiedDate":"2024-03-19"},{"lineNumber":168,"author":{"gitId":"radeon2525"},"content":" Collections.singletonList(emptyAddressBook),","lastModifiedDate":"2024-03-19"},{"lineNumber":169,"author":{"gitId":"radeon2525"},"content":" addressBookWithAmy,","lastModifiedDate":"2024-03-19"},{"lineNumber":170,"author":{"gitId":"radeon2525"},"content":" Collections.singletonList(addressBookWithBob));","lastModifiedDate":"2024-03-19"},{"lineNumber":171,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":172,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":173,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":174,"author":{"gitId":"radeon2525"},"content":" public void undo_multipleAddressBookPointerNotAtStartOfStateList_success() {","lastModifiedDate":"2024-03-19"},{"lineNumber":175,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(","lastModifiedDate":"2024-03-19"},{"lineNumber":176,"author":{"gitId":"radeon2525"},"content":" emptyAddressBook, addressBookWithAmy, addressBookWithBob);","lastModifiedDate":"2024-03-19"},{"lineNumber":177,"author":{"gitId":"radeon2525"},"content":" shiftCurrentStatePointerLeftwards(versionedAddressBook, 1);","lastModifiedDate":"2024-03-19"},{"lineNumber":178,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":179,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.undo();","lastModifiedDate":"2024-03-19"},{"lineNumber":180,"author":{"gitId":"radeon2525"},"content":" assertAddressBookListStatus(versionedAddressBook,","lastModifiedDate":"2024-03-19"},{"lineNumber":181,"author":{"gitId":"radeon2525"},"content":" Collections.emptyList(),","lastModifiedDate":"2024-03-19"},{"lineNumber":182,"author":{"gitId":"radeon2525"},"content":" emptyAddressBook,","lastModifiedDate":"2024-03-19"},{"lineNumber":183,"author":{"gitId":"radeon2525"},"content":" Arrays.asList(addressBookWithAmy, addressBookWithBob));","lastModifiedDate":"2024-03-19"},{"lineNumber":184,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":185,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":186,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":187,"author":{"gitId":"radeon2525"},"content":" public void undo_singleAddressBook_throwsNoUndoableStateException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":188,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(emptyAddressBook);","lastModifiedDate":"2024-03-19"},{"lineNumber":189,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":190,"author":{"gitId":"radeon2525"},"content":" assertThrows(VersionedAddressBook.NoUndoableStateException.class, versionedAddressBook::undo);","lastModifiedDate":"2024-03-19"},{"lineNumber":191,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":192,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":193,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":194,"author":{"gitId":"radeon2525"},"content":" public void undo_multipleAddressBookPointerAtStartOfStateList_throwsNoUndoableStateException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":195,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(","lastModifiedDate":"2024-03-19"},{"lineNumber":196,"author":{"gitId":"radeon2525"},"content":" emptyAddressBook, addressBookWithAmy, addressBookWithBob);","lastModifiedDate":"2024-03-19"},{"lineNumber":197,"author":{"gitId":"radeon2525"},"content":" shiftCurrentStatePointerLeftwards(versionedAddressBook, 2);","lastModifiedDate":"2024-03-19"},{"lineNumber":198,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":199,"author":{"gitId":"radeon2525"},"content":" assertThrows(VersionedAddressBook.NoUndoableStateException.class, versionedAddressBook::undo);","lastModifiedDate":"2024-03-19"},{"lineNumber":200,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":201,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":202,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":203,"author":{"gitId":"radeon2525"},"content":" public void redo_multipleAddressBookPointerNotAtEndOfStateList_success() {","lastModifiedDate":"2024-03-19"},{"lineNumber":204,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(","lastModifiedDate":"2024-03-19"},{"lineNumber":205,"author":{"gitId":"radeon2525"},"content":" emptyAddressBook, addressBookWithAmy, addressBookWithBob);","lastModifiedDate":"2024-03-19"},{"lineNumber":206,"author":{"gitId":"radeon2525"},"content":" shiftCurrentStatePointerLeftwards(versionedAddressBook, 1);","lastModifiedDate":"2024-03-19"},{"lineNumber":207,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":208,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.redo();","lastModifiedDate":"2024-03-19"},{"lineNumber":209,"author":{"gitId":"radeon2525"},"content":" assertAddressBookListStatus(versionedAddressBook,","lastModifiedDate":"2024-03-19"},{"lineNumber":210,"author":{"gitId":"radeon2525"},"content":" Arrays.asList(emptyAddressBook, addressBookWithAmy),","lastModifiedDate":"2024-03-19"},{"lineNumber":211,"author":{"gitId":"radeon2525"},"content":" addressBookWithBob,","lastModifiedDate":"2024-03-19"},{"lineNumber":212,"author":{"gitId":"radeon2525"},"content":" Collections.emptyList());","lastModifiedDate":"2024-03-19"},{"lineNumber":213,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":214,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":215,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":216,"author":{"gitId":"radeon2525"},"content":" public void redo_multipleAddressBookPointerAtStartOfStateList_success() {","lastModifiedDate":"2024-03-19"},{"lineNumber":217,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(","lastModifiedDate":"2024-03-19"},{"lineNumber":218,"author":{"gitId":"radeon2525"},"content":" emptyAddressBook, addressBookWithAmy, addressBookWithBob);","lastModifiedDate":"2024-03-19"},{"lineNumber":219,"author":{"gitId":"radeon2525"},"content":" shiftCurrentStatePointerLeftwards(versionedAddressBook, 2);","lastModifiedDate":"2024-03-19"},{"lineNumber":220,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":221,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.redo();","lastModifiedDate":"2024-03-19"},{"lineNumber":222,"author":{"gitId":"radeon2525"},"content":" assertAddressBookListStatus(versionedAddressBook,","lastModifiedDate":"2024-03-19"},{"lineNumber":223,"author":{"gitId":"radeon2525"},"content":" Collections.singletonList(emptyAddressBook),","lastModifiedDate":"2024-03-19"},{"lineNumber":224,"author":{"gitId":"radeon2525"},"content":" addressBookWithAmy,","lastModifiedDate":"2024-03-19"},{"lineNumber":225,"author":{"gitId":"radeon2525"},"content":" Collections.singletonList(addressBookWithBob));","lastModifiedDate":"2024-03-19"},{"lineNumber":226,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":227,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":228,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":229,"author":{"gitId":"radeon2525"},"content":" public void redo_singleAddressBook_throwsNoRedoableStateException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":230,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(emptyAddressBook);","lastModifiedDate":"2024-03-19"},{"lineNumber":231,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":232,"author":{"gitId":"radeon2525"},"content":" assertThrows(VersionedAddressBook.NoRedoableStateException.class, versionedAddressBook::redo);","lastModifiedDate":"2024-03-19"},{"lineNumber":233,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":234,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":235,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":236,"author":{"gitId":"radeon2525"},"content":" public void redo_multipleAddressBookPointerAtEndOfStateList_throwsNoRedoableStateException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":237,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(","lastModifiedDate":"2024-03-19"},{"lineNumber":238,"author":{"gitId":"radeon2525"},"content":" emptyAddressBook, addressBookWithAmy, addressBookWithBob);","lastModifiedDate":"2024-03-19"},{"lineNumber":239,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":240,"author":{"gitId":"radeon2525"},"content":" assertThrows(VersionedAddressBook.NoRedoableStateException.class, versionedAddressBook::redo);","lastModifiedDate":"2024-03-19"},{"lineNumber":241,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":242,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":243,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":244,"author":{"gitId":"radeon2525"},"content":" public void equals() {","lastModifiedDate":"2024-03-19"},{"lineNumber":245,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(addressBookWithAmy, addressBookWithBob);","lastModifiedDate":"2024-03-19"},{"lineNumber":246,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":247,"author":{"gitId":"radeon2525"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":248,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook copy \u003d prepareAddressBookList(addressBookWithAmy, addressBookWithBob);","lastModifiedDate":"2024-03-19"},{"lineNumber":249,"author":{"gitId":"radeon2525"},"content":" assertTrue(versionedAddressBook.equals(copy));","lastModifiedDate":"2024-03-19"},{"lineNumber":250,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":251,"author":{"gitId":"radeon2525"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":252,"author":{"gitId":"radeon2525"},"content":" assertTrue(versionedAddressBook.equals(versionedAddressBook));","lastModifiedDate":"2024-03-19"},{"lineNumber":253,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":254,"author":{"gitId":"radeon2525"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":255,"author":{"gitId":"radeon2525"},"content":" assertFalse(versionedAddressBook.equals(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":256,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":257,"author":{"gitId":"radeon2525"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":258,"author":{"gitId":"radeon2525"},"content":" assertFalse(versionedAddressBook.equals(1));","lastModifiedDate":"2024-03-19"},{"lineNumber":259,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":260,"author":{"gitId":"radeon2525"},"content":" // different state list -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":261,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook differentAddressBookList \u003d prepareAddressBookList(addressBookWithBob, addressBookWithCarl);","lastModifiedDate":"2024-03-19"},{"lineNumber":262,"author":{"gitId":"radeon2525"},"content":" assertFalse(versionedAddressBook.equals(differentAddressBookList));","lastModifiedDate":"2024-03-19"},{"lineNumber":263,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":264,"author":{"gitId":"radeon2525"},"content":" // different current pointer index -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":265,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook differentCurrentStatePointer \u003d prepareAddressBookList(","lastModifiedDate":"2024-03-19"},{"lineNumber":266,"author":{"gitId":"radeon2525"},"content":" addressBookWithAmy, addressBookWithBob);","lastModifiedDate":"2024-03-19"},{"lineNumber":267,"author":{"gitId":"radeon2525"},"content":" shiftCurrentStatePointerLeftwards(versionedAddressBook, 1);","lastModifiedDate":"2024-03-19"},{"lineNumber":268,"author":{"gitId":"radeon2525"},"content":" assertFalse(versionedAddressBook.equals(differentCurrentStatePointer));","lastModifiedDate":"2024-03-19"},{"lineNumber":269,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":270,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":271,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":272,"author":{"gitId":"radeon2525"},"content":" * Asserts that {@code versionedAddressBook} is currently pointing at {@code expectedCurrentState},","lastModifiedDate":"2024-03-19"},{"lineNumber":273,"author":{"gitId":"radeon2525"},"content":" * states before {@code versionedAddressBook#currentStatePointer} is equal to {@code expectedStatesBeforePointer},","lastModifiedDate":"2024-03-19"},{"lineNumber":274,"author":{"gitId":"radeon2525"},"content":" * and states after {@code versionedAddressBook#currentStatePointer} is equal to {@code expectedStatesAfterPointer}.","lastModifiedDate":"2024-03-19"},{"lineNumber":275,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":276,"author":{"gitId":"radeon2525"},"content":" private void assertAddressBookListStatus(VersionedAddressBook versionedAddressBook,","lastModifiedDate":"2024-03-19"},{"lineNumber":277,"author":{"gitId":"radeon2525"},"content":" List\u003cReadOnlyAddressBook\u003e expectedStatesBeforePointer,","lastModifiedDate":"2024-03-19"},{"lineNumber":278,"author":{"gitId":"radeon2525"},"content":" ReadOnlyAddressBook expectedCurrentState,","lastModifiedDate":"2024-03-19"},{"lineNumber":279,"author":{"gitId":"radeon2525"},"content":" List\u003cReadOnlyAddressBook\u003e expectedStatesAfterPointer) {","lastModifiedDate":"2024-03-19"},{"lineNumber":280,"author":{"gitId":"radeon2525"},"content":" // check state currently pointing at is correct","lastModifiedDate":"2024-03-19"},{"lineNumber":281,"author":{"gitId":"radeon2525"},"content":" assertEquals(new AddressBook(versionedAddressBook), expectedCurrentState);","lastModifiedDate":"2024-03-19"},{"lineNumber":282,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":283,"author":{"gitId":"radeon2525"},"content":" // shift pointer to start of state list","lastModifiedDate":"2024-03-19"},{"lineNumber":284,"author":{"gitId":"radeon2525"},"content":" while (versionedAddressBook.canUndo()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":285,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.undo();","lastModifiedDate":"2024-03-19"},{"lineNumber":286,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":287,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":288,"author":{"gitId":"radeon2525"},"content":" // check states before pointer are correct","lastModifiedDate":"2024-03-19"},{"lineNumber":289,"author":{"gitId":"radeon2525"},"content":" for (ReadOnlyAddressBook expectedAddressBook : expectedStatesBeforePointer) {","lastModifiedDate":"2024-03-19"},{"lineNumber":290,"author":{"gitId":"radeon2525"},"content":" assertEquals(expectedAddressBook, new AddressBook(versionedAddressBook));","lastModifiedDate":"2024-03-19"},{"lineNumber":291,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.redo();","lastModifiedDate":"2024-03-19"},{"lineNumber":292,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":293,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":294,"author":{"gitId":"radeon2525"},"content":" // check states after pointer are correct","lastModifiedDate":"2024-03-19"},{"lineNumber":295,"author":{"gitId":"radeon2525"},"content":" for (ReadOnlyAddressBook expectedAddressBook : expectedStatesAfterPointer) {","lastModifiedDate":"2024-03-19"},{"lineNumber":296,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.redo();","lastModifiedDate":"2024-03-19"},{"lineNumber":297,"author":{"gitId":"radeon2525"},"content":" assertEquals(expectedAddressBook, new AddressBook(versionedAddressBook));","lastModifiedDate":"2024-03-19"},{"lineNumber":298,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":299,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":300,"author":{"gitId":"radeon2525"},"content":" // check that there are no more states after pointer","lastModifiedDate":"2024-03-19"},{"lineNumber":301,"author":{"gitId":"radeon2525"},"content":" assertFalse(versionedAddressBook.canRedo());","lastModifiedDate":"2024-03-19"},{"lineNumber":302,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":303,"author":{"gitId":"radeon2525"},"content":" // revert pointer to original position","lastModifiedDate":"2024-03-19"},{"lineNumber":304,"author":{"gitId":"radeon2525"},"content":" expectedStatesAfterPointer.forEach(unused -\u003e versionedAddressBook.undo());","lastModifiedDate":"2024-03-19"},{"lineNumber":305,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":306,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":307,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":308,"author":{"gitId":"radeon2525"},"content":" * Creates and returns a {@code VersionedAddressBook} with the {@code addressBookStates} added into it, and the","lastModifiedDate":"2024-03-19"},{"lineNumber":309,"author":{"gitId":"radeon2525"},"content":" * {@code VersionedAddressBook#currentStatePointer} at the end of list.","lastModifiedDate":"2024-03-19"},{"lineNumber":310,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":311,"author":{"gitId":"radeon2525"},"content":" private VersionedAddressBook prepareAddressBookList(ReadOnlyAddressBook... addressBookStates) {","lastModifiedDate":"2024-03-19"},{"lineNumber":312,"author":{"gitId":"radeon2525"},"content":" assertFalse(addressBookStates.length \u003d\u003d 0);","lastModifiedDate":"2024-03-19"},{"lineNumber":313,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":314,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d new VersionedAddressBook(addressBookStates[0]);","lastModifiedDate":"2024-03-19"},{"lineNumber":315,"author":{"gitId":"radeon2525"},"content":" for (int i \u003d 1; i \u003c addressBookStates.length; i++) {","lastModifiedDate":"2024-03-19"},{"lineNumber":316,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.resetData(addressBookStates[i]);","lastModifiedDate":"2024-03-19"},{"lineNumber":317,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.commit();","lastModifiedDate":"2024-03-19"},{"lineNumber":318,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":319,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":320,"author":{"gitId":"radeon2525"},"content":" return versionedAddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":321,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":322,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":323,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":324,"author":{"gitId":"radeon2525"},"content":" * Shifts the {@code versionedAddressBook#currentStatePointer} by {@code count} to the left of its list.","lastModifiedDate":"2024-03-19"},{"lineNumber":325,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":326,"author":{"gitId":"radeon2525"},"content":" private void shiftCurrentStatePointerLeftwards(VersionedAddressBook versionedAddressBook, int count) {","lastModifiedDate":"2024-03-19"},{"lineNumber":327,"author":{"gitId":"radeon2525"},"content":" for (int i \u003d 0; i \u003c count; i++) {","lastModifiedDate":"2024-03-19"},{"lineNumber":328,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.undo();","lastModifiedDate":"2024-03-19"},{"lineNumber":329,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":330,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":331,"author":{"gitId":"radeon2525"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"radeon2525":331}},{"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":"-"},"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":"-"},"content":" .withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2020-12-18"},{"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":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2018-04-18"},{"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":"-"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2019-02-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", address\u003d\" + ALICE.getAddress() + \", tags\u003d\" + ALICE.getTags() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":99,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":100,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":101,"author":{"gitId":"radeon2525"},"content":" public void samePersonObject_returnsTrue() {","lastModifiedDate":"2024-03-16"},{"lineNumber":102,"author":{"gitId":"radeon2525"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2024-03-16"},{"lineNumber":103,"author":{"gitId":"radeon2525"},"content":" assertTrue(person.isSamePerson(person));","lastModifiedDate":"2024-03-16"},{"lineNumber":104,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":105,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":106,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":107,"author":{"gitId":"radeon2525"},"content":" public void nullPerson_returnsFalse() {","lastModifiedDate":"2024-03-16"},{"lineNumber":108,"author":{"gitId":"radeon2525"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2024-03-16"},{"lineNumber":109,"author":{"gitId":"radeon2525"},"content":" assertFalse(person.isSamePerson(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":110,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":111,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":112,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":113,"author":{"gitId":"radeon2525"},"content":" public void differentPerson_returnsFalse() {","lastModifiedDate":"2024-03-16"},{"lineNumber":114,"author":{"gitId":"radeon2525"},"content":" Person person1 \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2024-03-16"},{"lineNumber":115,"author":{"gitId":"radeon2525"},"content":" Person person2 \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2024-03-16"},{"lineNumber":116,"author":{"gitId":"radeon2525"},"content":" assertFalse(person1.isSamePerson(person2));","lastModifiedDate":"2024-03-16"},{"lineNumber":117,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":118,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":119,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":120,"author":{"gitId":"radeon2525"},"content":" public void samePersonTagsDifferentOrder_returnsTrue() {","lastModifiedDate":"2024-03-16"},{"lineNumber":121,"author":{"gitId":"radeon2525"},"content":" Person person1 \u003d new PersonBuilder().withTags(\"friend\", \"colleague\").build();","lastModifiedDate":"2024-03-16"},{"lineNumber":122,"author":{"gitId":"radeon2525"},"content":" Person person2 \u003d new PersonBuilder().withTags(\"colleague\", \"friend\").build();","lastModifiedDate":"2024-03-16"},{"lineNumber":123,"author":{"gitId":"radeon2525"},"content":" assertTrue(person1.equals(person2));","lastModifiedDate":"2024-03-16"},{"lineNumber":124,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":125,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"radeon2525":26,"-":99}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"The-Dudeski"},"content":"[![CI Status](https://github.com/AY2324S2-CS2103T-W13-2/tp/actions/workflows/gradle.yml/badge.svg)](https://github.com/AY2324S2-CS2103T-W13-2/tp/actions/workflows/gradle.yml)","lastModifiedDate":"2024-03-09"},{"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":"The-Dudeski"},"content":"* This is **a project created by CS2103T students. It is a contact book **.\u003cbr\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":6,"author":{"gitId":"-"},"content":" Example usages:","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"The-Dudeski"},"content":" * It is meant to be used by secretaries in companies with different departments to be managed","lastModifiedDate":"2024-03-06"},{"lineNumber":8,"author":{"gitId":"The-Dudeski"},"content":" * The project will be developed over the course of AY23/24 Semester 2","lastModifiedDate":"2024-03-06"},{"lineNumber":9,"author":{"gitId":"The-Dudeski"},"content":"* The project is written Java","lastModifiedDate":"2024-03-06"},{"lineNumber":10,"author":{"gitId":"The-Dudeski"},"content":" * It is **written in OOP fashion**. ","lastModifiedDate":"2024-03-06"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * It comes with a **reasonable level of user and developer documentation**.","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"The-Dudeski"},"content":"* The application will contain contacts for the secretary to manage","lastModifiedDate":"2024-03-06"},{"lineNumber":13,"author":{"gitId":"The-Dudeski"},"content":" * This will include the option to view, add, delete and filter contacts","lastModifiedDate":"2024-03-06"},{"lineNumber":14,"author":{"gitId":"The-Dudeski"},"content":"* For the detailed documentation of this project, see the **[Contact Book Product Website]()**.","lastModifiedDate":"2024-03-06"},{"lineNumber":15,"author":{"gitId":"The-Dudeski"},"content":"* This project is derived from AddressBook-Level3 created by [SE-EDU initiative](https://se-education.org)","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"The-Dudeski":10,"-":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":"The-Dudeski"},"content":"You can reach us at the email `mashfi.i@u.nus.edu`","lastModifiedDate":"2024-03-09"},{"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":"The-Dudeski"},"content":"### Mashfi Ishtiaque","lastModifiedDate":"2024-03-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"The-Dudeski"},"content":"\u003cimg src\u003d\"/images/miffi.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"The-Dudeski"},"content":"[[homepage](https://decadent.rest)]","lastModifiedDate":"2024-03-09"},{"lineNumber":17,"author":{"gitId":"The-Dudeski"},"content":"[[github](https://github.com/miffi)]","lastModifiedDate":"2024-03-04"},{"lineNumber":18,"author":{"gitId":"The-Dudeski"},"content":"[[portfolio](team/miffi.md)]","lastModifiedDate":"2024-03-04"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"miffi"},"content":"* Role: Team Lead","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"miffi"},"content":"* Responsibilities:","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"miffi"},"content":" - UI","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"miffi"},"content":" - Tools","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"The-Dudeski"},"content":"### Leong Jia Hao, Derek","lastModifiedDate":"2024-03-04"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"The-Dudeski"},"content":"\u003cimg src\u003d\"/images/derekljh.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"The-Dudeski"},"content":"[[github](http://github.com/derekljh)]","lastModifiedDate":"2024-03-04"},{"lineNumber":30,"author":{"gitId":"The-Dudeski"},"content":"[[portfolio](team/derekljh.md)]","lastModifiedDate":"2024-03-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"miffi"},"content":"- Role: Developer","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"miffi"},"content":"* Responsibilities:","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"miffi"},"content":" * Tasks and Deadlines","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"miffi"},"content":" - Scheduling and tracking","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"miffi"},"content":" - Logic","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"The-Dudeski"},"content":"### Mahindroo Aashim","lastModifiedDate":"2024-03-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"The-Dudeski"},"content":"\u003cimg src\u003d\"/images/radeon2525.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"The-Dudeski"},"content":"[[github](http://github.com/radeon2525)] ","lastModifiedDate":"2024-03-09"},{"lineNumber":43,"author":{"gitId":"The-Dudeski"},"content":"[[portfolio](team/radeon2525.md)]","lastModifiedDate":"2024-03-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"miffi"},"content":"* Responsibilities:","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"miffi"},"content":" - Testing","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"miffi"},"content":" - Model","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"The-Dudeski"},"content":"### Kyaw Swar Myint","lastModifiedDate":"2024-03-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"The-Dudeski"},"content":"\u003cimg src\u003d\"/images/jukeboxk.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"The-Dudeski"},"content":"[[github](http://github.com/jukeboxk)]","lastModifiedDate":"2024-03-04"},{"lineNumber":55,"author":{"gitId":"The-Dudeski"},"content":"[[portfolio](team/jukeboxk.md)]","lastModifiedDate":"2024-03-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"miffi"},"content":"* Responsibilities:","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"miffi"},"content":" - Documentation","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"miffi"},"content":" - Main","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"miffi"},"content":" - Commons","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"The-Dudeski"},"content":"### Dude Lorenz Leonardo Crescenzio","lastModifiedDate":"2024-03-04"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"The-Dudeski"},"content":"\u003cimg src\u003d\"/images/the-dudeski.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-09"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"The-Dudeski"},"content":"[[github](http://github.com/the-dudeski)]","lastModifiedDate":"2024-03-04"},{"lineNumber":68,"author":{"gitId":"The-Dudeski"},"content":"[[portfolio](team/the-dudeski.md)]","lastModifiedDate":"2024-03-04"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"miffi"},"content":"* Responsibilities:","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"miffi"},"content":" - Integration","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"miffi"},"content":" - Storage","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"The-Dudeski":22,"miffi":19,"-":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":"radeon2525"},"content":"","lastModifiedDate":"2024-03-07"},{"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":"radeon2525"},"content":"* {list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the","lastModifiedDate":"2024-03-07"},{"lineNumber":14,"author":{"gitId":"radeon2525"},"content":" original source as well}","lastModifiedDate":"2024-03-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":16,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","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":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"radeon2525"},"content":":bulb: **Tip:** The `.puml` files used to create diagrams in this document `docs/diagrams` folder. Refer to the [","lastModifiedDate":"2024-03-07"},{"lineNumber":29,"author":{"gitId":"radeon2525"},"content":"_PlantUML Tutorial_ at se-edu/guides](https://se-education.org/guides/tutorials/plantUml.html) to learn how to create","lastModifiedDate":"2024-03-07"},{"lineNumber":30,"author":{"gitId":"radeon2525"},"content":"and edit diagrams.","lastModifiedDate":"2024-03-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureDiagram.png\" width\u003d\"280\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":41,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"radeon2525"},"content":"**`Main`** (consisting of","lastModifiedDate":"2024-03-07"},{"lineNumber":44,"author":{"gitId":"radeon2525"},"content":"classes [`Main`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/Main.java)","lastModifiedDate":"2024-03-07"},{"lineNumber":45,"author":{"gitId":"radeon2525"},"content":"and [`MainApp`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/MainApp.java)) is","lastModifiedDate":"2024-03-07"},{"lineNumber":46,"author":{"gitId":"radeon2525"},"content":"in charge of the app launch and shut down.","lastModifiedDate":"2024-03-07"},{"lineNumber":47,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":48,"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":49,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"radeon2525"},"content":"The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues","lastModifiedDate":"2024-03-07"},{"lineNumber":63,"author":{"gitId":"radeon2525"},"content":"the command `delete 1`.","lastModifiedDate":"2024-03-07"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureSequenceDiagram.png\" width\u003d\"574\" /\u003e","lastModifiedDate":"2020-06-07"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":69,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31"},{"lineNumber":70,"author":{"gitId":"radeon2525"},"content":"* implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding","lastModifiedDate":"2024-03-07"},{"lineNumber":71,"author":{"gitId":"radeon2525"},"content":" API `interface` mentioned in the previous point.","lastModifiedDate":"2024-03-07"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":73,"author":{"gitId":"radeon2525"},"content":"For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using","lastModifiedDate":"2024-03-07"},{"lineNumber":74,"author":{"gitId":"radeon2525"},"content":"the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component","lastModifiedDate":"2024-03-07"},{"lineNumber":75,"author":{"gitId":"radeon2525"},"content":"through its interface rather than the concrete class (reason: to prevent outside component\u0027s being coupled to the","lastModifiedDate":"2024-03-07"},{"lineNumber":76,"author":{"gitId":"radeon2525"},"content":"implementation of a component), as illustrated in the (partial) class diagram below.","lastModifiedDate":"2024-03-07"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":78,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ComponentManagers.png\" width\u003d\"300\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":80,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"radeon2525"},"content":"The **API** of this component is specified","lastModifiedDate":"2024-03-07"},{"lineNumber":85,"author":{"gitId":"radeon2525"},"content":"in [`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2024-03-07"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"![Structure of the UI Component](images/UiClassDiagram.png)","lastModifiedDate":"2021-07-31"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"radeon2525"},"content":"The UI consists of a `MainWindow` that is made up of parts","lastModifiedDate":"2024-03-07"},{"lineNumber":90,"author":{"gitId":"radeon2525"},"content":"e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`,","lastModifiedDate":"2024-03-07"},{"lineNumber":91,"author":{"gitId":"radeon2525"},"content":"inherit from the abstract `UiPart` class which captures the commonalities between classes that represent parts of the","lastModifiedDate":"2024-03-07"},{"lineNumber":92,"author":{"gitId":"radeon2525"},"content":"visible GUI.","lastModifiedDate":"2024-03-07"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"radeon2525"},"content":"The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that","lastModifiedDate":"2024-03-07"},{"lineNumber":95,"author":{"gitId":"radeon2525"},"content":"are in the `src/main/resources/view` folder. For example, the layout of","lastModifiedDate":"2024-03-07"},{"lineNumber":96,"author":{"gitId":"radeon2525"},"content":"the [`MainWindow`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/MainWindow.java)","lastModifiedDate":"2024-03-07"},{"lineNumber":97,"author":{"gitId":"radeon2525"},"content":"is specified","lastModifiedDate":"2024-03-07"},{"lineNumber":98,"author":{"gitId":"radeon2525"},"content":"in [`MainWindow.fxml`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2024-03-07"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":103,"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":104,"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":105,"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":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"radeon2525"},"content":"**API","lastModifiedDate":"2024-03-07"},{"lineNumber":110,"author":{"gitId":"radeon2525"},"content":"** : [`Logic.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/logic/Logic.java)","lastModifiedDate":"2024-03-07"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/LogicClassDiagram.png\" width\u003d\"550\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"radeon2525"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"delete 1\")` API","lastModifiedDate":"2024-03-07"},{"lineNumber":117,"author":{"gitId":"radeon2525"},"content":"call as an example.","lastModifiedDate":"2024-03-07"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":"![Interactions Inside the Logic Component for the `delete 1` Command](images/DeleteSequenceDiagram.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"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 continues till the end of diagram.","lastModifiedDate":"2024-02-09"},{"lineNumber":122,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"Derekljh"},"content":"Another sequence diagram below illustrates the interactions within the `Logic` component, taking","lastModifiedDate":"2024-03-21"},{"lineNumber":125,"author":{"gitId":"Derekljh"},"content":"`execute(\"tag 1 tag: example\")` API call as an example.","lastModifiedDate":"2024-03-21"},{"lineNumber":126,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":127,"author":{"gitId":"Derekljh"},"content":"![](C:\\Repos\\TeamProject\\docs\\images\\TagCommand.png)","lastModifiedDate":"2024-03-21"},{"lineNumber":128,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":129,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":131,"author":{"gitId":"radeon2525"},"content":"1. When `Logic` is called upon to execute a command, it is passed to an `AddressBookParser` object which in turn creates","lastModifiedDate":"2024-03-07"},{"lineNumber":132,"author":{"gitId":"radeon2525"},"content":" a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2024-03-07"},{"lineNumber":133,"author":{"gitId":"radeon2525"},"content":"1. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteCommand`) which","lastModifiedDate":"2024-03-07"},{"lineNumber":134,"author":{"gitId":"radeon2525"},"content":" is executed by the `LogicManager`.","lastModifiedDate":"2024-03-07"},{"lineNumber":135,"author":{"gitId":"-"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a person).\u003cbr\u003e","lastModifiedDate":"2024-02-09"},{"lineNumber":136,"author":{"gitId":"radeon2525"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take","lastModifiedDate":"2024-03-07"},{"lineNumber":137,"author":{"gitId":"radeon2525"},"content":" several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-03-07"},{"lineNumber":138,"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":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":140,"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":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ParserClasses.png\" width\u003d\"600\"/\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31"},{"lineNumber":145,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":146,"author":{"gitId":"radeon2525"},"content":"* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a","lastModifiedDate":"2024-03-07"},{"lineNumber":147,"author":{"gitId":"radeon2525"},"content":" placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse","lastModifiedDate":"2024-03-07"},{"lineNumber":148,"author":{"gitId":"radeon2525"},"content":" the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as","lastModifiedDate":"2024-03-07"},{"lineNumber":149,"author":{"gitId":"radeon2525"},"content":" a `Command` object.","lastModifiedDate":"2024-03-07"},{"lineNumber":150,"author":{"gitId":"radeon2525"},"content":"* All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, ...) inherit from the `Parser`","lastModifiedDate":"2024-03-07"},{"lineNumber":151,"author":{"gitId":"radeon2525"},"content":" interface so that they can be treated similarly where possible e.g, during testing.","lastModifiedDate":"2024-03-07"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31"},{"lineNumber":154,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":155,"author":{"gitId":"radeon2525"},"content":"**API","lastModifiedDate":"2024-03-07"},{"lineNumber":156,"author":{"gitId":"radeon2525"},"content":"** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2024-03-07"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"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":164,"author":{"gitId":"radeon2525"},"content":"* stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which","lastModifiedDate":"2024-03-07"},{"lineNumber":165,"author":{"gitId":"radeon2525"},"content":" is exposed to outsiders as an unmodifiable `ObservableList\u003cPerson\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to","lastModifiedDate":"2024-03-07"},{"lineNumber":166,"author":{"gitId":"radeon2525"},"content":" this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2024-03-07"},{"lineNumber":167,"author":{"gitId":"radeon2525"},"content":"* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as","lastModifiedDate":"2024-03-07"},{"lineNumber":168,"author":{"gitId":"radeon2525"},"content":" a `ReadOnlyUserPref` objects.","lastModifiedDate":"2024-03-07"},{"lineNumber":169,"author":{"gitId":"radeon2525"},"content":"* does not depend on any of the other three components (as the `Model` represents data entities of the domain, they","lastModifiedDate":"2024-03-07"},{"lineNumber":170,"author":{"gitId":"radeon2525"},"content":" should make sense on their own without depending on other components)","lastModifiedDate":"2024-03-07"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":172,"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":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":174,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/BetterModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":180,"author":{"gitId":"radeon2525"},"content":"**API","lastModifiedDate":"2024-03-07"},{"lineNumber":181,"author":{"gitId":"radeon2525"},"content":"** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2024-03-07"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/StorageClassDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":185,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":187,"author":{"gitId":"radeon2525"},"content":"* can save both address book data and user preference data in JSON format, and read them back into corresponding","lastModifiedDate":"2024-03-07"},{"lineNumber":188,"author":{"gitId":"radeon2525"},"content":" objects.","lastModifiedDate":"2024-03-07"},{"lineNumber":189,"author":{"gitId":"radeon2525"},"content":"* inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only","lastModifiedDate":"2024-03-07"},{"lineNumber":190,"author":{"gitId":"radeon2525"},"content":" the functionality of only one is needed).","lastModifiedDate":"2024-03-07"},{"lineNumber":191,"author":{"gitId":"radeon2525"},"content":"* depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects","lastModifiedDate":"2024-03-07"},{"lineNumber":192,"author":{"gitId":"radeon2525"},"content":" that belong to the `Model`)","lastModifiedDate":"2024-03-07"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"JukeBoxK"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package. Each component comes from one of the","lastModifiedDate":"2024-03-24"},{"lineNumber":197,"author":{"gitId":"JukeBoxK"},"content":"three packages: `core`, `exceptions` and `util`. `DataLoadingException` for example is a components from the exception","lastModifiedDate":"2024-03-24"},{"lineNumber":198,"author":{"gitId":"JukeBoxK"},"content":"package, which `AddressBookStorage` and `UserPrefsSroage` throws and `MainApp` catches.","lastModifiedDate":"2024-03-24"},{"lineNumber":199,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":200,"author":{"gitId":"JukeBoxK"},"content":"\u003cimg src\u003d\"images/DataLoadingExceptionObjectDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2024-03-24"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"radeon2525"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo","lastModifiedDate":"2024-03-07"},{"lineNumber":213,"author":{"gitId":"radeon2525"},"content":"history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the","lastModifiedDate":"2024-03-07"},{"lineNumber":214,"author":{"gitId":"radeon2525"},"content":"following operations:","lastModifiedDate":"2024-03-07"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":216,"author":{"gitId":"radeon2525"},"content":"* `VersionedAddressBook#commit()`— Saves the current address book state in its history.","lastModifiedDate":"2024-03-07"},{"lineNumber":217,"author":{"gitId":"radeon2525"},"content":"* `VersionedAddressBook#undo()`— Restores the previous address book state from its history.","lastModifiedDate":"2024-03-07"},{"lineNumber":218,"author":{"gitId":"radeon2525"},"content":"* `VersionedAddressBook#redo()`— Restores a previously undone address book state from its history.","lastModifiedDate":"2024-03-07"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":220,"author":{"gitId":"radeon2525"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()`","lastModifiedDate":"2024-03-07"},{"lineNumber":221,"author":{"gitId":"radeon2525"},"content":"and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2024-03-07"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"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":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"radeon2525"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the","lastModifiedDate":"2024-03-07"},{"lineNumber":226,"author":{"gitId":"radeon2525"},"content":"initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2024-03-07"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":"![UndoRedoState0](images/UndoRedoState0.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"radeon2525"},"content":"Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command","lastModifiedDate":"2024-03-07"},{"lineNumber":231,"author":{"gitId":"radeon2525"},"content":"calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes","lastModifiedDate":"2024-03-07"},{"lineNumber":232,"author":{"gitId":"radeon2525"},"content":"to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book","lastModifiedDate":"2024-03-07"},{"lineNumber":233,"author":{"gitId":"radeon2525"},"content":"state.","lastModifiedDate":"2024-03-07"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"![UndoRedoState1](images/UndoRedoState1.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"radeon2525"},"content":"Step 3. The user executes `add n/David …​` to add a new person. The `add` command also","lastModifiedDate":"2024-03-07"},{"lineNumber":238,"author":{"gitId":"radeon2525"},"content":"calls `Model#commitAddressBook()`, causing another modified address book state to be saved into","lastModifiedDate":"2024-03-07"},{"lineNumber":239,"author":{"gitId":"radeon2525"},"content":"the `addressBookStateList`.","lastModifiedDate":"2024-03-07"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"![UndoRedoState2](images/UndoRedoState2.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"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":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":247,"author":{"gitId":"radeon2525"},"content":"Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing","lastModifiedDate":"2024-03-07"},{"lineNumber":248,"author":{"gitId":"radeon2525"},"content":"the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer`","lastModifiedDate":"2024-03-07"},{"lineNumber":249,"author":{"gitId":"radeon2525"},"content":"once to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2024-03-07"},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":251,"author":{"gitId":"-"},"content":"![UndoRedoState3](images/UndoRedoState3.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"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":254,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":256,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":258,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09"},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Logic.png)","lastModifiedDate":"2024-02-09"},{"lineNumber":261,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":262,"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":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":264,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":266,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09"},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":268,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Model.png)","lastModifiedDate":"2024-02-09"},{"lineNumber":269,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":270,"author":{"gitId":"radeon2525"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once","lastModifiedDate":"2024-03-07"},{"lineNumber":271,"author":{"gitId":"radeon2525"},"content":"to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2024-03-07"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"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":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":277,"author":{"gitId":"radeon2525"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such","lastModifiedDate":"2024-03-07"},{"lineNumber":278,"author":{"gitId":"radeon2525"},"content":"as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`.","lastModifiedDate":"2024-03-07"},{"lineNumber":279,"author":{"gitId":"radeon2525"},"content":"Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2024-03-07"},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":281,"author":{"gitId":"-"},"content":"![UndoRedoState4](images/UndoRedoState4.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":283,"author":{"gitId":"radeon2525"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not","lastModifiedDate":"2024-03-07"},{"lineNumber":284,"author":{"gitId":"radeon2525"},"content":"pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be","lastModifiedDate":"2024-03-07"},{"lineNumber":285,"author":{"gitId":"radeon2525"},"content":"purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern","lastModifiedDate":"2024-03-07"},{"lineNumber":286,"author":{"gitId":"radeon2525"},"content":"desktop applications follow.","lastModifiedDate":"2024-03-07"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":288,"author":{"gitId":"-"},"content":"![UndoRedoState5](images/UndoRedoState5.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":290,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":292,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/CommitActivityDiagram.png\" width\u003d\"250\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":293,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":294,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":296,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":298,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":299,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":300,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":302,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":303,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":304,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23"},{"lineNumber":305,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":306,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":307,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":308,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":309,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23"},{"lineNumber":310,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":311,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23"},{"lineNumber":312,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":313,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":314,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":315,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":316,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":317,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":318,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":319,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":320,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":321,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":322,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":324,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":326,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":327,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":328,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":329,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":330,"author":{"gitId":"Derekljh"},"content":"**Target user profile**: Secretary of a tech company","lastModifiedDate":"2024-03-06"},{"lineNumber":331,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":332,"author":{"gitId":"-"},"content":"* has a need to manage a significant number of contacts","lastModifiedDate":"2020-05-23"},{"lineNumber":333,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23"},{"lineNumber":334,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23"},{"lineNumber":335,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26"},{"lineNumber":336,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23"},{"lineNumber":337,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":338,"author":{"gitId":"Derekljh"},"content":"**Value proposition**: Categorise people according to their department/origin, making it easier to assign tasks or get all the emails.","lastModifiedDate":"2024-03-06"},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":340,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":341,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":342,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":343,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":344,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":345,"author":{"gitId":"JukeBoxK"},"content":"|----------|-----------|---------------------------------------|--------------------------------------------------------|","lastModifiedDate":"2024-03-21"},{"lineNumber":346,"author":{"gitId":"JukeBoxK"},"content":"| `* * *` | secretary | view the added contact list | see the details of the added contact |","lastModifiedDate":"2024-03-21"},{"lineNumber":347,"author":{"gitId":"JukeBoxK"},"content":"| `* * *` | secretary | add contacts to a list | record contact details |","lastModifiedDate":"2024-03-21"},{"lineNumber":348,"author":{"gitId":"JukeBoxK"},"content":"| `* * *` | secretary | remove contacts from a list | clean up old/unused records |","lastModifiedDate":"2024-03-21"},{"lineNumber":349,"author":{"gitId":"JukeBoxK"},"content":"| `* *` | secretary | tag individual contacts | organize the contact based on tags |","lastModifiedDate":"2024-03-21"},{"lineNumber":350,"author":{"gitId":"JukeBoxK"},"content":"| `* *` | secretary | delete a tag of an individual contact | make sure that the tag only is for the necessary users |","lastModifiedDate":"2024-03-21"},{"lineNumber":351,"author":{"gitId":"JukeBoxK"},"content":"| `*` | user | undo my command | save time on undoing the effects of a wrong command |","lastModifiedDate":"2024-03-21"},{"lineNumber":352,"author":{"gitId":"JukeBoxK"},"content":"| `*` | user | redo my undo | save time on undoing the effects of a wrong undo |","lastModifiedDate":"2024-03-21"},{"lineNumber":353,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":355,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":356,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":357,"author":{"gitId":"miffi"},"content":"(For all use cases below, the **System** is `OfficeHarbor` (OH) and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2024-03-08"},{"lineNumber":358,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":359,"author":{"gitId":"JukeBoxK"},"content":"**UC01: View contacts**","lastModifiedDate":"2024-03-20"},{"lineNumber":360,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":361,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":362,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":363,"author":{"gitId":"JukeBoxK"},"content":"1. User requests to list people.","lastModifiedDate":"2024-03-20"},{"lineNumber":364,"author":{"gitId":"JukeBoxK"},"content":"2. OH shows a list of people.","lastModifiedDate":"2024-03-20"},{"lineNumber":365,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":366,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":367,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":368,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":369,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":370,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-03-20"},{"lineNumber":371,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":372,"author":{"gitId":"JukeBoxK"},"content":" * 2a1. No list is shown.","lastModifiedDate":"2024-03-20"},{"lineNumber":373,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":374,"author":{"gitId":"JukeBoxK"},"content":" Use case ends.","lastModifiedDate":"2024-03-20"},{"lineNumber":375,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":376,"author":{"gitId":"JukeBoxK"},"content":"**UC02: Add a contact**","lastModifiedDate":"2024-03-20"},{"lineNumber":377,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":378,"author":{"gitId":"radeon2525"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":379,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":380,"author":{"gitId":"JukeBoxK"},"content":"1. User requests to add a person along with details.","lastModifiedDate":"2024-03-20"},{"lineNumber":381,"author":{"gitId":"JukeBoxK"},"content":"2. OH adds the person.","lastModifiedDate":"2024-03-20"},{"lineNumber":382,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":383,"author":{"gitId":"radeon2525"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":384,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":385,"author":{"gitId":"radeon2525"},"content":"**Extensions**","lastModifiedDate":"2024-03-07"},{"lineNumber":386,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":387,"author":{"gitId":"radeon2525"},"content":"* 1a. The given format is invalid.","lastModifiedDate":"2024-03-07"},{"lineNumber":388,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":389,"author":{"gitId":"radeon2525"},"content":" * 1a1. AddressBook shows an error message.","lastModifiedDate":"2024-03-07"},{"lineNumber":390,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":391,"author":{"gitId":"radeon2525"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-07"},{"lineNumber":392,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":393,"author":{"gitId":"JukeBoxK"},"content":"**UC03: Remove a contact**","lastModifiedDate":"2024-03-20"},{"lineNumber":394,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":395,"author":{"gitId":"JukeBoxK"},"content":"**MSS**","lastModifiedDate":"2024-03-20"},{"lineNumber":396,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":397,"author":{"gitId":"JukeBoxK"},"content":"1. User requests to list contacts (UC01).","lastModifiedDate":"2024-03-20"},{"lineNumber":398,"author":{"gitId":"JukeBoxK"},"content":"2. User requests to remove a specific contact in the list.","lastModifiedDate":"2024-03-20"},{"lineNumber":399,"author":{"gitId":"JukeBoxK"},"content":"3. OH removes the contact.","lastModifiedDate":"2024-03-20"},{"lineNumber":400,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":401,"author":{"gitId":"JukeBoxK"},"content":" Use case ends.","lastModifiedDate":"2024-03-20"},{"lineNumber":402,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":403,"author":{"gitId":"JukeBoxK"},"content":"**Extensions**","lastModifiedDate":"2024-03-20"},{"lineNumber":404,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":405,"author":{"gitId":"-"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2024-03-20"},{"lineNumber":406,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":407,"author":{"gitId":"JukeBoxK"},"content":" * 3a1. OH shows an error message.","lastModifiedDate":"2024-03-20"},{"lineNumber":408,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":409,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-20"},{"lineNumber":410,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":411,"author":{"gitId":"JukeBoxK"},"content":"**UC04: Tagging contacts**","lastModifiedDate":"2024-03-20"},{"lineNumber":412,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":413,"author":{"gitId":"JukeBoxK"},"content":"**MSS**","lastModifiedDate":"2024-03-20"},{"lineNumber":414,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":415,"author":{"gitId":"JukeBoxK"},"content":"1. User requests to list contacts (UC01).","lastModifiedDate":"2024-03-20"},{"lineNumber":416,"author":{"gitId":"JukeBoxK"},"content":"2. User requests to add a tag to a specific contact in the list.","lastModifiedDate":"2024-03-20"},{"lineNumber":417,"author":{"gitId":"JukeBoxK"},"content":"3. OH adds the tag to the contact.","lastModifiedDate":"2024-03-20"},{"lineNumber":418,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":419,"author":{"gitId":"JukeBoxK"},"content":" Use case ends.","lastModifiedDate":"2024-03-20"},{"lineNumber":420,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":421,"author":{"gitId":"JukeBoxK"},"content":"**Extensions**","lastModifiedDate":"2024-03-20"},{"lineNumber":422,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":423,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":424,"author":{"gitId":"JukeBoxK"},"content":"* 2a. The given index is invalid.","lastModifiedDate":"2024-03-20"},{"lineNumber":425,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":426,"author":{"gitId":"JukeBoxK"},"content":" * 2a1. OH shows an error message.","lastModifiedDate":"2024-03-20"},{"lineNumber":427,"author":{"gitId":"miffi"},"content":" ","lastModifiedDate":"2024-03-08"},{"lineNumber":428,"author":{"gitId":"JukeBoxK"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-20"},{"lineNumber":429,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":430,"author":{"gitId":"JukeBoxK"},"content":"* 2b. The given tag is empty or invalid.","lastModifiedDate":"2024-03-20"},{"lineNumber":431,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":432,"author":{"gitId":"JukeBoxK"},"content":" * 2b. OH shows an error message.","lastModifiedDate":"2024-03-20"},{"lineNumber":433,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":434,"author":{"gitId":"JukeBoxK"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-20"},{"lineNumber":435,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":436,"author":{"gitId":"JukeBoxK"},"content":"**UC05: Deleting a tag**","lastModifiedDate":"2024-03-20"},{"lineNumber":437,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":438,"author":{"gitId":"JukeBoxK"},"content":"**MSS**","lastModifiedDate":"2024-03-09"},{"lineNumber":439,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":440,"author":{"gitId":"JukeBoxK"},"content":"1. User requests to list contacts (UC01).","lastModifiedDate":"2024-03-20"},{"lineNumber":441,"author":{"gitId":"JukeBoxK"},"content":"2. User requests to delete a specific tag of a person from the list.","lastModifiedDate":"2024-03-20"},{"lineNumber":442,"author":{"gitId":"JukeBoxK"},"content":"3. OH deletes the specified tag of that person.","lastModifiedDate":"2024-03-20"},{"lineNumber":443,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":444,"author":{"gitId":"JukeBoxK"},"content":" Use case ends.","lastModifiedDate":"2024-03-09"},{"lineNumber":445,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":446,"author":{"gitId":"JukeBoxK"},"content":"**Extensions**","lastModifiedDate":"2024-03-09"},{"lineNumber":447,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":448,"author":{"gitId":"JukeBoxK"},"content":"* 2a. The given index is invalid.","lastModifiedDate":"2024-03-20"},{"lineNumber":449,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":450,"author":{"gitId":"JukeBoxK"},"content":" * 2a1. OH shows an error message.","lastModifiedDate":"2024-03-20"},{"lineNumber":451,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":452,"author":{"gitId":"JukeBoxK"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-20"},{"lineNumber":453,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":454,"author":{"gitId":"JukeBoxK"},"content":"* 2b. The specified tag does not exist.","lastModifiedDate":"2024-03-20"},{"lineNumber":455,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":456,"author":{"gitId":"JukeBoxK"},"content":" * 2b1. OH shows an error message.","lastModifiedDate":"2024-03-20"},{"lineNumber":457,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":458,"author":{"gitId":"JukeBoxK"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-09"},{"lineNumber":459,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":460,"author":{"gitId":"JukeBoxK"},"content":"**UC06: Undoing a Command**","lastModifiedDate":"2024-03-20"},{"lineNumber":461,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":462,"author":{"gitId":"JukeBoxK"},"content":"**MSS**","lastModifiedDate":"2024-03-20"},{"lineNumber":463,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":464,"author":{"gitId":"JukeBoxK"},"content":"1. User requests to undo a command.","lastModifiedDate":"2024-03-20"},{"lineNumber":465,"author":{"gitId":"JukeBoxK"},"content":"2. OH resets to the state before the latest command.","lastModifiedDate":"2024-03-20"},{"lineNumber":466,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":467,"author":{"gitId":"JukeBoxK"},"content":" Use case ends.","lastModifiedDate":"2024-03-20"},{"lineNumber":468,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":469,"author":{"gitId":"JukeBoxK"},"content":"**Extensions**","lastModifiedDate":"2024-03-20"},{"lineNumber":470,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":471,"author":{"gitId":"JukeBoxK"},"content":"* 2a. No command has been run since opening the app.","lastModifiedDate":"2024-03-20"},{"lineNumber":472,"author":{"gitId":"JukeBoxK"},"content":" ","lastModifiedDate":"2024-03-20"},{"lineNumber":473,"author":{"gitId":"JukeBoxK"},"content":" * 2a1. OH shows an error message. ","lastModifiedDate":"2024-03-20"},{"lineNumber":474,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":475,"author":{"gitId":"JukeBoxK"},"content":" Use case ends.","lastModifiedDate":"2024-03-20"},{"lineNumber":476,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":477,"author":{"gitId":"JukeBoxK"},"content":"**UC06: Redoing an Undo Command**","lastModifiedDate":"2024-03-20"},{"lineNumber":478,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":479,"author":{"gitId":"JukeBoxK"},"content":"**MSS**","lastModifiedDate":"2024-03-20"},{"lineNumber":480,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":481,"author":{"gitId":"JukeBoxK"},"content":"1. User requests to redo an undo.","lastModifiedDate":"2024-03-20"},{"lineNumber":482,"author":{"gitId":"JukeBoxK"},"content":"2. OH resets to the state before the latest command.","lastModifiedDate":"2024-03-20"},{"lineNumber":483,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":484,"author":{"gitId":"JukeBoxK"},"content":" Use case ends.","lastModifiedDate":"2024-03-20"},{"lineNumber":485,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":486,"author":{"gitId":"JukeBoxK"},"content":"**Extensions**","lastModifiedDate":"2024-03-20"},{"lineNumber":487,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":488,"author":{"gitId":"JukeBoxK"},"content":"* 2a. No command has been run since opening the app.","lastModifiedDate":"2024-03-20"},{"lineNumber":489,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":490,"author":{"gitId":"JukeBoxK"},"content":" * 2a1. OH shows an error message.","lastModifiedDate":"2024-03-20"},{"lineNumber":491,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":492,"author":{"gitId":"JukeBoxK"},"content":" Use case ends.","lastModifiedDate":"2024-03-20"},{"lineNumber":493,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":494,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":495,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":496,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":497,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":498,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":499,"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":500,"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":501,"author":{"gitId":"radeon2525"},"content":"3. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be","lastModifiedDate":"2024-03-07"},{"lineNumber":502,"author":{"gitId":"radeon2525"},"content":" able to accomplish most of the tasks faster using commands than using the mouse.","lastModifiedDate":"2024-03-07"},{"lineNumber":503,"author":{"gitId":"radeon2525"},"content":"4. Should be able to handle private contact details securely.","lastModifiedDate":"2024-03-07"},{"lineNumber":504,"author":{"gitId":"radeon2525"},"content":"5. Should be able to handle a large number of contacts without consuming a large amount of memory.","lastModifiedDate":"2024-03-07"},{"lineNumber":505,"author":{"gitId":"radeon2525"},"content":"6. Should be able to handle a large number of contacts without slowing down the app.","lastModifiedDate":"2024-03-07"},{"lineNumber":506,"author":{"gitId":"radeon2525"},"content":"7. Should be able to handle a large number of contacts without losing the data.","lastModifiedDate":"2024-03-07"},{"lineNumber":507,"author":{"gitId":"radeon2525"},"content":"8. Should be able to handle a large number of contacts without losing the data even in the event of a system crash.","lastModifiedDate":"2024-03-07"},{"lineNumber":508,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":509,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":510,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":511,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09"},{"lineNumber":512,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23"},{"lineNumber":513,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":514,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":515,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":516,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":517,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":518,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":519,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":520,"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":521,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":522,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":523,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":524,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":525,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":526,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":527,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":528,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":529,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":530,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":531,"author":{"gitId":"radeon2525"},"content":" 1. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be","lastModifiedDate":"2024-03-07"},{"lineNumber":532,"author":{"gitId":"radeon2525"},"content":" optimum.","lastModifiedDate":"2024-03-07"},{"lineNumber":533,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":534,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":535,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":536,"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":537,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":538,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":539,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":540,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":541,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":542,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":543,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":544,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":545,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":546,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":547,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":548,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":549,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":550,"author":{"gitId":"radeon2525"},"content":" Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message.","lastModifiedDate":"2024-03-07"},{"lineNumber":551,"author":{"gitId":"radeon2525"},"content":" Timestamp in the status bar is updated.","lastModifiedDate":"2024-03-07"},{"lineNumber":552,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":553,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":554,"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":555,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":556,"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":557,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":558,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":559,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":560,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":561,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":562,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":563,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":564,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":565,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":566,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":567,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"Derekljh":7,"radeon2525":122,"JukeBoxK":105,"miffi":10,"-":323}},{"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":"JukeBoxK"},"content":"OfficeHarbor (OH) is a **desktop app for managing the contacts of a tech firm\u0027s teams, 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, OH can get your contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2024-02-29"},{"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":"JukeBoxK"},"content":"2. Download the latest `officeharbor.jar` from [here](https://github.com/AY2324S2-CS2103T-W13-2/tphone:releases).","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"JukeBoxK"},"content":"3. Copy the file to the folder you want to use as the _home folder_ for your OH.","lastModifiedDate":"2024-02-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"JukeBoxK"},"content":"4. (a) Double-click on the `officeharbor.jar` file to run the application.","lastModifiedDate":"2024-02-29"},{"lineNumber":22,"author":{"gitId":"JukeBoxK"},"content":" (b) (Or) Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar officeharbor.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2024-02-29"},{"lineNumber":23,"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":24,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"JukeBoxK"},"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":"2024-02-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"JukeBoxK"},"content":" * `add name:John Doe phone:98765432 email:johnd@example.com address:John street, block 123, #01-01` : Adds a contact named `John Doe` to OH.","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2023-01-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"JukeBoxK"},"content":"6. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2024-02-29"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"block\" class\u003d\"alert alert-info\"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"**:information_source: Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"JukeBoxK"},"content":"* Words enclosed between diamond brackets `\u003c\u003e`, are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2024-02-29"},{"lineNumber":50,"author":{"gitId":"JukeBoxK"},"content":" e.g. in `add name:\u003cname\u003e`, `\u003cname\u003e` is a parameter which can be used as `add name:John Doe`.","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"JukeBoxK"},"content":"* Space can be added between the prefix and the word.\u003cbr\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"JukeBoxK"},"content":" e.g. either `name: \u003cname\u003e phone: \u003cphone number\u003e` or `name:\u003cname\u003e phone:\u003cphone number\u003e` is acceptable.","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"JukeBoxK"},"content":"* In some commands like tag, `[tag/\u003ctag\u003e]...` means that you can have multiple optional prefixes at the end \u003cbr\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"JukeBoxK"},"content":" e.g. the command `tag 1 tag:friends tag:colleagues` would add 2 tags directly to the contact at index 1.","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"JukeBoxK"},"content":"* Parameters can be in any order for adding a contact.\u003cbr\u003e","lastModifiedDate":"2024-02-29"},{"lineNumber":59,"author":{"gitId":"JukeBoxK"},"content":" e.g. if the command specifies `name:\u003cname\u003e phone:\u003cphone number\u003e`, `phone:\u003cphone number\u003e name:\u003cname\u003e` is also acceptable.","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"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":62,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":64,"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":65,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"JukeBoxK"},"content":"Shows a message explaining how to access the help page.","lastModifiedDate":"2024-02-29"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"### Adding a person: `add`","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"JukeBoxK"},"content":"Adds a contact with the input details to OH.","lastModifiedDate":"2024-02-29"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"JukeBoxK"},"content":"Format: `add name:\u003cname\u003e phone:\u003cphone number\u003e email:\u003cemail address\u003e address:\u003caddress\u003e`","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"JukeBoxK"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e","lastModifiedDate":"2024-02-29"},{"lineNumber":83,"author":{"gitId":"JukeBoxK"},"content":"All components are necessary.","lastModifiedDate":"2024-02-29"},{"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":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"JukeBoxK"},"content":"* `add name:John Doe phone:98765432 email:johnd@example.com address:John street, block 123, #01-01`","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"JukeBoxK"},"content":"* `add name:Virat Kohli phone:98765432 email:virat@gmail.com address:Altamount Road, block 10, #05-02`","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":90,"author":{"gitId":"JukeBoxK"},"content":"Output:","lastModifiedDate":"2024-02-29"},{"lineNumber":91,"author":{"gitId":"JukeBoxK"},"content":"The message “A new contact `name` has been added to the list. Name: `\u003cname\u003e`, Phone: `\u003cphone number\u003e`, Email: `\u003cemail\u003e`, Address: `\u003caddress\u003e`.” will be shown. ","lastModifiedDate":"2024-02-29"},{"lineNumber":92,"author":{"gitId":"JukeBoxK"},"content":"A new contact entry with the given user will be displayed in the list.","lastModifiedDate":"2024-02-29"},{"lineNumber":93,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":94,"author":{"gitId":"JukeBoxK"},"content":"![add](images/user-guide/add_mock_output.png)","lastModifiedDate":"2024-03-21"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"### Listing all persons : `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"JukeBoxK"},"content":"Shows a list of all contacts in OH.","lastModifiedDate":"2024-02-29"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"JukeBoxK"},"content":"Output:","lastModifiedDate":"2024-02-29"},{"lineNumber":103,"author":{"gitId":"JukeBoxK"},"content":"A list of added contacts if any in the form of a scrollable pane will be shown. ","lastModifiedDate":"2024-02-29"},{"lineNumber":104,"author":{"gitId":"JukeBoxK"},"content":"The contacts are listed in the order in which they are added.","lastModifiedDate":"2024-02-29"},{"lineNumber":105,"author":{"gitId":"JukeBoxK"},"content":"The message \"Empty list\" is shown when there is nothing added.","lastModifiedDate":"2024-02-29"},{"lineNumber":106,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":107,"author":{"gitId":"JukeBoxK"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2024-02-29"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"JukeBoxK"},"content":"Deletes the specified contact from OH.","lastModifiedDate":"2024-02-29"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"JukeBoxK"},"content":"Format: `delete \u003cid\u003e`","lastModifiedDate":"2024-02-29"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"JukeBoxK"},"content":"* Deletes the person at the specified `\u003cid\u003e`.","lastModifiedDate":"2024-02-29"},{"lineNumber":114,"author":{"gitId":"JukeBoxK"},"content":"* The id refers to the index number shown in the contact list.","lastModifiedDate":"2024-02-29"},{"lineNumber":115,"author":{"gitId":"JukeBoxK"},"content":"* The id **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-02-29"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"JukeBoxK"},"content":"* `delete 2` deletes the 2nd person of the contact list from OH.","lastModifiedDate":"2024-02-29"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"JukeBoxK"},"content":"Output:","lastModifiedDate":"2024-02-29"},{"lineNumber":121,"author":{"gitId":"JukeBoxK"},"content":"The message \"Contact `name` has been deleted. Name: `name`, Phone: `phone number`, Email: `email`, Address: `address`.” will be shown.","lastModifiedDate":"2024-02-29"},{"lineNumber":122,"author":{"gitId":"JukeBoxK"},"content":"The entry with the given id will disappear from the list.","lastModifiedDate":"2024-02-29"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"JukeBoxK"},"content":"![delete](images/user-guide/delete_mock_output.png)","lastModifiedDate":"2024-03-21"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"JukeBoxK"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2024-02-29"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"JukeBoxK"},"content":"Clears all entries from OH.","lastModifiedDate":"2024-02-29"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"JukeBoxK"},"content":"Format: `clear`","lastModifiedDate":"2024-02-29"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"JukeBoxK"},"content":"Output:","lastModifiedDate":"2024-02-29"},{"lineNumber":133,"author":{"gitId":"JukeBoxK"},"content":"The message \"Address book has been cleared!\" will be shown.","lastModifiedDate":"2024-02-29"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"JukeBoxK"},"content":"### Tagging a Contact : `tag`","lastModifiedDate":"2024-02-29"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"JukeBoxK"},"content":"Tags the specified contact with the input tag name.","lastModifiedDate":"2024-02-29"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"JukeBoxK"},"content":"* Tags the person at the specified `\u003cid\u003e`.","lastModifiedDate":"2024-02-29"},{"lineNumber":140,"author":{"gitId":"JukeBoxK"},"content":"* The id refers to the index number shown in the displayed person list.","lastModifiedDate":"2024-02-29"},{"lineNumber":141,"author":{"gitId":"JukeBoxK"},"content":"* The id **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-02-29"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"JukeBoxK"},"content":"Format: `tag \u003cid\u003e tag:\u003ctag\u003e [tag:tag]...`","lastModifiedDate":"2024-03-21"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"JukeBoxK"},"content":"Example:","lastModifiedDate":"2024-02-29"},{"lineNumber":146,"author":{"gitId":"JukeBoxK"},"content":"`tag 2 friends`","lastModifiedDate":"2024-03-20"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"JukeBoxK"},"content":"Output:","lastModifiedDate":"2024-02-29"},{"lineNumber":149,"author":{"gitId":"JukeBoxK"},"content":"The message \"The following contact has been tagged with `\u003ctag name\u003e`: `contact info`.” will be shown, ","lastModifiedDate":"2024-02-29"},{"lineNumber":150,"author":{"gitId":"JukeBoxK"},"content":"where contact info is all the information of the contact.","lastModifiedDate":"2024-02-29"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"JukeBoxK"},"content":"![tag](images/user-guide/tag_mock_output.png)","lastModifiedDate":"2024-03-21"},{"lineNumber":153,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":154,"author":{"gitId":"JukeBoxK"},"content":"### Deleting a tag : `untag`","lastModifiedDate":"2024-03-20"},{"lineNumber":155,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":156,"author":{"gitId":"JukeBoxK"},"content":"Deletes the specified tag from the specified contact","lastModifiedDate":"2024-02-29"},{"lineNumber":157,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":158,"author":{"gitId":"JukeBoxK"},"content":"* Delete the specified tag of the person at the specified `\u003cid\u003e`.","lastModifiedDate":"2024-02-29"},{"lineNumber":159,"author":{"gitId":"JukeBoxK"},"content":"* The id refers to the index number shown in the displayed person list.","lastModifiedDate":"2024-02-29"},{"lineNumber":160,"author":{"gitId":"JukeBoxK"},"content":"* The id **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-02-29"},{"lineNumber":161,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":162,"author":{"gitId":"JukeBoxK"},"content":"Format: `untag \u003cid\u003e tag:\u003ctag\u003e [tag:tag]...`","lastModifiedDate":"2024-03-21"},{"lineNumber":163,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":164,"author":{"gitId":"JukeBoxK"},"content":"Output:","lastModifiedDate":"2024-02-29"},{"lineNumber":165,"author":{"gitId":"JukeBoxK"},"content":"The message \"The tag `\u003ctag\u003e` has been removed from contact: `contact info`.\" will be shown,","lastModifiedDate":"2024-03-20"},{"lineNumber":166,"author":{"gitId":"JukeBoxK"},"content":"where contact info is all the information of the contact. ","lastModifiedDate":"2024-02-29"},{"lineNumber":167,"author":{"gitId":"JukeBoxK"},"content":"The list entry of the user with \u003cid\u003e will not have the tag anymore.","lastModifiedDate":"2024-02-29"},{"lineNumber":168,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-02-29"},{"lineNumber":169,"author":{"gitId":"JukeBoxK"},"content":"![delete-tag](images/user-guide/delete-tag_mock_output.png)","lastModifiedDate":"2024-03-21"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"JukeBoxK"},"content":"### Undoing a command : `undo`","lastModifiedDate":"2024-03-20"},{"lineNumber":172,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":173,"author":{"gitId":"JukeBoxK"},"content":"Resets the state of OH to before the execution of the latest command.","lastModifiedDate":"2024-03-20"},{"lineNumber":174,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":175,"author":{"gitId":"JukeBoxK"},"content":"Format: `undo`","lastModifiedDate":"2024-03-20"},{"lineNumber":176,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":177,"author":{"gitId":"JukeBoxK"},"content":"Output:","lastModifiedDate":"2024-03-20"},{"lineNumber":178,"author":{"gitId":"JukeBoxK"},"content":"The message \"Undo success!\" will be shown. ","lastModifiedDate":"2024-03-20"},{"lineNumber":179,"author":{"gitId":"JukeBoxK"},"content":"The list entry of the user will return to the state before the latest command. ","lastModifiedDate":"2024-03-20"},{"lineNumber":180,"author":{"gitId":"JukeBoxK"},"content":"If no command has been run at all, an error message \"No more commands to undo!\" will be shown instead.","lastModifiedDate":"2024-03-20"},{"lineNumber":181,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":182,"author":{"gitId":"JukeBoxK"},"content":"Example of undoing a delete command.","lastModifiedDate":"2024-03-20"},{"lineNumber":183,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":184,"author":{"gitId":"JukeBoxK"},"content":"Contact after a delete command:","lastModifiedDate":"2024-03-20"},{"lineNumber":185,"author":{"gitId":"JukeBoxK"},"content":"![delete_operation](images/user-guide/delete_operation-undo-mock.png)","lastModifiedDate":"2024-03-21"},{"lineNumber":186,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":187,"author":{"gitId":"JukeBoxK"},"content":"Contact after the delete command is undone:","lastModifiedDate":"2024-03-20"},{"lineNumber":188,"author":{"gitId":"JukeBoxK"},"content":"![undo](images/user-guide/undo_mock_output.png)","lastModifiedDate":"2024-03-21"},{"lineNumber":189,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":190,"author":{"gitId":"JukeBoxK"},"content":"### Redoing a command : `redo`","lastModifiedDate":"2024-03-20"},{"lineNumber":191,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":192,"author":{"gitId":"JukeBoxK"},"content":"Resets the state of OH to before the latest undo command.","lastModifiedDate":"2024-03-20"},{"lineNumber":193,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":194,"author":{"gitId":"JukeBoxK"},"content":"Format: `redo`","lastModifiedDate":"2024-03-20"},{"lineNumber":195,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":196,"author":{"gitId":"JukeBoxK"},"content":"Output:","lastModifiedDate":"2024-03-20"},{"lineNumber":197,"author":{"gitId":"JukeBoxK"},"content":"The message \"Redo success!\" will be shown.","lastModifiedDate":"2024-03-20"},{"lineNumber":198,"author":{"gitId":"JukeBoxK"},"content":"The list entry of the user will return to the state before the latest undo command.","lastModifiedDate":"2024-03-20"},{"lineNumber":199,"author":{"gitId":"JukeBoxK"},"content":"If no undo command has been run at all, an error message \"No more commands to redo!\" will be shown instead.","lastModifiedDate":"2024-03-20"},{"lineNumber":200,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":201,"author":{"gitId":"JukeBoxK"},"content":"Example of redoing the previous undo command:","lastModifiedDate":"2024-03-20"},{"lineNumber":202,"author":{"gitId":"JukeBoxK"},"content":"![redo](images/user-guide/redo_mock_output.png)","lastModifiedDate":"2024-03-21"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":204,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":212,"author":{"gitId":"miffi"},"content":"OfficeHarbor data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.","lastModifiedDate":"2024-02-24"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":216,"author":{"gitId":"JukeBoxK"},"content":"OfficeHarbor data are saved automatically as a JSON file `[JAR file location]/dataddress:officeharbor.json`. Advanced users are welcome to update data directly by editing that data file.","lastModifiedDate":"2024-03-21"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":218,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e:exclamation: **Caution:**","lastModifiedDate":"2021-02-04"},{"lineNumber":219,"author":{"gitId":"miffi"},"content":"If your changes to the data file makes its format invalid, OfficeHarbor 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.\u003cbr\u003e","lastModifiedDate":"2024-02-24"},{"lineNumber":220,"author":{"gitId":"JukeBoxK"},"content":"Furthermore, certain edits can cause the OfficeHarbor to behave in unexpected ways (e.g., if a value entered is outside the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.","lastModifiedDate":"2024-02-29"},{"lineNumber":221,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-02-04"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":223,"author":{"gitId":"JukeBoxK"},"content":"### Filtering tags `[coming in v1.3]`","lastModifiedDate":"2024-02-29"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04"},{"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":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"miffi"},"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 OfficeHarbor home folder.","lastModifiedDate":"2024-02-24"},{"lineNumber":233,"author":{"gitId":"-"},"content":"","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":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":238,"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":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":240,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":242,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"JukeBoxK"},"content":"| Action | Format, Examples |","lastModifiedDate":"2024-02-29"},{"lineNumber":245,"author":{"gitId":"JukeBoxK"},"content":"|----------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|","lastModifiedDate":"2024-03-21"},{"lineNumber":246,"author":{"gitId":"JukeBoxK"},"content":"| **Add** | `add name:\u003cname\u003e phone:\u003cphone number\u003e email:\u003cemail address\u003e address:\u003caddress\u003e` \u003cbr\u003e e.g., `add name:James Ho phone:22224444 email:jamesho@example.com address:123, Clementi Rd, 1234665` |","lastModifiedDate":"2024-03-21"},{"lineNumber":247,"author":{"gitId":"JukeBoxK"},"content":"| **Delete** | `delete \u003cid\u003e`\u003cbr\u003e e.g., `delete 3` |","lastModifiedDate":"2024-03-20"},{"lineNumber":248,"author":{"gitId":"JukeBoxK"},"content":"| **Clear** | `clear` |","lastModifiedDate":"2024-02-29"},{"lineNumber":249,"author":{"gitId":"JukeBoxK"},"content":"| **Tag** | `tag \u003cid\u003e tag:\u003ctag\u003e [tag:tag]...` \u003cbr\u003e e.g., `tag 2 tag:friends` |","lastModifiedDate":"2024-03-21"},{"lineNumber":250,"author":{"gitId":"JukeBoxK"},"content":"| **Delete Tag** | `untag \u003cid\u003e tag:\u003ctag\u003e [tag:tag]...` \u003cbr\u003e e.g., `untag 2 tag:friends` |","lastModifiedDate":"2024-03-21"},{"lineNumber":251,"author":{"gitId":"JukeBoxK"},"content":"| **List** | `list` |","lastModifiedDate":"2024-02-29"},{"lineNumber":252,"author":{"gitId":"JukeBoxK"},"content":"| **Undo** | `undo` |","lastModifiedDate":"2024-03-20"},{"lineNumber":253,"author":{"gitId":"JukeBoxK"},"content":"| **Redo** | `redo` |","lastModifiedDate":"2024-03-20"},{"lineNumber":254,"author":{"gitId":"JukeBoxK"},"content":"| **Help** | `help` |","lastModifiedDate":"2024-02-29"}],"authorContributionMap":{"JukeBoxK":126,"miffi":3,"-":125}},{"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":"miffi"},"content":" content: \"OfficeHarbor\";","lastModifiedDate":"2024-02-24"},{"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":{"miffi":1,"-":294}},{"path":"docs/diagrams/DataLoadingExceptionObjectDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"JukeBoxK"},"content":"@startuml","lastModifiedDate":"2024-03-24"},{"lineNumber":2,"author":{"gitId":"JukeBoxK"},"content":"!include style.puml","lastModifiedDate":"2024-03-24"},{"lineNumber":3,"author":{"gitId":"JukeBoxK"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2024-03-24"},{"lineNumber":4,"author":{"gitId":"JukeBoxK"},"content":"skinparam classBackgroundColor STORAGE_COLOR","lastModifiedDate":"2024-03-24"},{"lineNumber":5,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":6,"author":{"gitId":"JukeBoxK"},"content":"interface AddressBookStorage","lastModifiedDate":"2024-03-24"},{"lineNumber":7,"author":{"gitId":"JukeBoxK"},"content":"interface UserPrefsStorage","lastModifiedDate":"2024-03-24"},{"lineNumber":8,"author":{"gitId":"JukeBoxK"},"content":"class DataLoadingException \u003c\u003cexception\u003e\u003e LOGIC_COLOR_T2","lastModifiedDate":"2024-03-24"},{"lineNumber":9,"author":{"gitId":"JukeBoxK"},"content":"class MainApp #grey","lastModifiedDate":"2024-03-24"},{"lineNumber":10,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":11,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":12,"author":{"gitId":"JukeBoxK"},"content":"MainApp -[#grey]down-\u003e DataLoadingException : catches","lastModifiedDate":"2024-03-24"},{"lineNumber":13,"author":{"gitId":"JukeBoxK"},"content":"UserPrefsStorage -[STORAGE_COLOR]up-\u003e DataLoadingException : throws","lastModifiedDate":"2024-03-24"},{"lineNumber":14,"author":{"gitId":"JukeBoxK"},"content":"AddressBookStorage -[STORAGE_COLOR]up-\u003e DataLoadingException : throws","lastModifiedDate":"2024-03-24"},{"lineNumber":15,"author":{"gitId":"JukeBoxK"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":16,"author":{"gitId":"JukeBoxK"},"content":"@enduml","lastModifiedDate":"2024-03-24"}],"authorContributionMap":{"JukeBoxK":16}},{"path":"docs/diagrams/TagCommand.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Derekljh"},"content":"@startuml","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"Derekljh"},"content":"!include Style.puml","lastModifiedDate":"2024-03-22"},{"lineNumber":3,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"Derekljh"},"content":"box Logic LOGIC_COLOR_T2","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"Derekljh"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":6,"author":{"gitId":"Derekljh"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"Derekljh"},"content":"participant \":TagCommandParser\" as TagCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"Derekljh"},"content":"participant \":TagCommand\" as TagCommand LOGIC_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"Derekljh"},"content":"participant \":CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"Derekljh"},"content":"end box","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"Derekljh"},"content":"box Model MODEL_COLOR_T2","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"Derekljh"},"content":"participant \":Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"Derekljh"},"content":"end box","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"Derekljh"},"content":"[-\u003e LogicManager : execute(\"tag 1 tag: example\")","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"Derekljh"},"content":"activate LogicManager","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"Derekljh"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"tag 1 tag: example\")","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"Derekljh"},"content":"activate AddressBookParser","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"Derekljh"},"content":"create TagCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"Derekljh"},"content":"AddressBookParser -\u003e TagCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"Derekljh"},"content":"activate TagCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"Derekljh"},"content":"TagCommandParser --\u003e AddressBookParser","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"Derekljh"},"content":"deactivate TagCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"Derekljh"},"content":"AddressBookParser -\u003e TagCommandParser : parse(\"1, example\")","lastModifiedDate":"2024-03-22"},{"lineNumber":30,"author":{"gitId":"Derekljh"},"content":"activate TagCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":32,"author":{"gitId":"Derekljh"},"content":"create TagCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":33,"author":{"gitId":"Derekljh"},"content":"TagCommandParser -\u003e TagCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"Derekljh"},"content":"activate TagCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":35,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":36,"author":{"gitId":"Derekljh"},"content":"TagCommand --\u003e TagCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":37,"author":{"gitId":"Derekljh"},"content":"deactivate TagCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":38,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"Derekljh"},"content":"TagCommandParser --\u003e AddressBookParser","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"Derekljh"},"content":"destroy TagCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":41,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":42,"author":{"gitId":"Derekljh"},"content":"AddressBookParser --\u003e LogicManager","lastModifiedDate":"2024-03-22"},{"lineNumber":43,"author":{"gitId":"Derekljh"},"content":"deactivate AddressBookParser","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"Derekljh"},"content":"LogicManager -\u003e TagCommand: execute(m)","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"Derekljh"},"content":"activate TagCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"Derekljh"},"content":"TagCommand -\u003e Model : setPerson(personToTag, taggedPerson)","lastModifiedDate":"2024-03-22"},{"lineNumber":49,"author":{"gitId":"Derekljh"},"content":"activate Model","lastModifiedDate":"2024-03-22"},{"lineNumber":50,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":51,"author":{"gitId":"Derekljh"},"content":"Model --\u003e TagCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"Derekljh"},"content":"deactivate Model","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":54,"author":{"gitId":"Derekljh"},"content":"create CommandResult","lastModifiedDate":"2024-03-22"},{"lineNumber":55,"author":{"gitId":"Derekljh"},"content":"TagCommand -\u003e CommandResult","lastModifiedDate":"2024-03-22"},{"lineNumber":56,"author":{"gitId":"Derekljh"},"content":"activate CommandResult","lastModifiedDate":"2024-03-22"},{"lineNumber":57,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":58,"author":{"gitId":"Derekljh"},"content":"CommandResult --\u003e TagCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":59,"author":{"gitId":"Derekljh"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-22"},{"lineNumber":60,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":61,"author":{"gitId":"Derekljh"},"content":"TagCommand --\u003e LogicManager","lastModifiedDate":"2024-03-22"},{"lineNumber":62,"author":{"gitId":"Derekljh"},"content":"deactivate TagCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":63,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":64,"author":{"gitId":"Derekljh"},"content":"\u003c-- LogicManager","lastModifiedDate":"2024-03-22"},{"lineNumber":65,"author":{"gitId":"Derekljh"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-22"},{"lineNumber":66,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":67,"author":{"gitId":"Derekljh"},"content":"@enduml","lastModifiedDate":"2024-03-22"}],"authorContributionMap":{"Derekljh":67}},{"path":"docs/diagrams/redo_uml.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"radeon2525"},"content":"@startuml","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":3,"author":{"gitId":"radeon2525"},"content":"class RedoCommand {","lastModifiedDate":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"radeon2525"},"content":" - COMMAND_WORD: String","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"radeon2525"},"content":" - MESSAGE_SUCCESS: String","lastModifiedDate":"2024-03-22"},{"lineNumber":6,"author":{"gitId":"radeon2525"},"content":" - MESSAGE_FAILURE: String","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"radeon2525"},"content":" + execute(model: Model, history: CommandHistory): CommandResult","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"radeon2525"},"content":"}","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"radeon2525"},"content":"Model -- RedoCommand : model","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"radeon2525"},"content":"CommandHistory -- RedoCommand : history","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"radeon2525"},"content":"CommandResult -- RedoCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"radeon2525"},"content":"RedoCommand --\u003e Model : updates","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"radeon2525"},"content":"RedoCommand --\u003e CommandHistory : updates","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"radeon2525"},"content":"@enduml","lastModifiedDate":"2024-03-22"}],"authorContributionMap":{"radeon2525":18}},{"path":"docs/diagrams/undo_uml.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"radeon2525"},"content":"@startuml","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":3,"author":{"gitId":"radeon2525"},"content":"class UndoCommand {","lastModifiedDate":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"radeon2525"},"content":" - COMMAND_WORD: String","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"radeon2525"},"content":" - MESSAGE_SUCCESS: String","lastModifiedDate":"2024-03-22"},{"lineNumber":6,"author":{"gitId":"radeon2525"},"content":" - MESSAGE_FAILURE: String","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"radeon2525"},"content":" + execute(model: Model, history: CommandHistory): CommandResult","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"radeon2525"},"content":"}","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"radeon2525"},"content":"Model -- UndoCommand : model","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"radeon2525"},"content":"CommandHistory -- UndoCommand : history","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"radeon2525"},"content":"CommandResult -- UndoCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"radeon2525"},"content":"UndoCommand --\u003e Model : updates","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"radeon2525"},"content":"UndoCommand --\u003e CommandHistory : updates","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"radeon2525"},"content":"@enduml","lastModifiedDate":"2024-03-22"}],"authorContributionMap":{"radeon2525":18}},{"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":"miffi"},"content":"title: OfficeHarbor","lastModifiedDate":"2024-02-24"},{"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":"miffi"},"content":"**OfficeHarbor is a desktop application for managing a tech firm\u0027s teams.** While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface).","lastModifiedDate":"2024-02-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"miffi"},"content":"* If you are interested in using OfficeHarbor, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).","lastModifiedDate":"2024-02-24"},{"lineNumber":14,"author":{"gitId":"miffi"},"content":"* If you are interested about developing OfficeHarbor, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.","lastModifiedDate":"2024-02-24"},{"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":{"miffi":4,"-":15}},{"path":"src/main/java/seedu/address/commons/util/InvalidationListenerManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"radeon2525"},"content":"package seedu.address.commons.util;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"radeon2525"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"radeon2525"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"radeon2525"},"content":"import javafx.beans.InvalidationListener;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"radeon2525"},"content":"import javafx.beans.Observable;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"radeon2525"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"radeon2525"},"content":" * Manages a list of {@link InvalidationListener}.","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"radeon2525"},"content":"public class InvalidationListenerManager {","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"radeon2525"},"content":" public final ArrayList\u003cInvalidationListener\u003e listeners \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"radeon2525"},"content":" * Adds {@code listener} to the list of listeners.","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"radeon2525"},"content":" * If the same listener is added more that once, then it will be notified more than once.","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"radeon2525"},"content":" public void addListener(InvalidationListener listener) {","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"radeon2525"},"content":" requireNonNull(listener);","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"radeon2525"},"content":" listeners.add(listener);","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"radeon2525"},"content":" * Calls {@link InvalidationListener#invalidated(Observable)} on all added listeners.","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"radeon2525"},"content":" * Any modifications to the listeners list during the invocation of this method","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"radeon2525"},"content":" * will only take effect on the next invocation of this method.","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"radeon2525"},"content":" *","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"radeon2525"},"content":" * @param observable The {@code Observable} that became invalid.","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"radeon2525"},"content":" public void callListeners(Observable observable) {","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"radeon2525"},"content":" // Make a copy of listeners such that any modifications to the listeners list during","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"radeon2525"},"content":" // the invocation of this method will only take effect on the next invocation of this method.","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"radeon2525"},"content":" ArrayList\u003cInvalidationListener\u003e listenersCopy \u003d new ArrayList\u003c\u003e(listeners);","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"radeon2525"},"content":" for (InvalidationListener listener : listenersCopy) {","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"radeon2525"},"content":" listener.invalidated(observable);","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"radeon2525"},"content":" * Removes {@code listener} from the list of listeners.","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"radeon2525"},"content":" * If the given listener was not previously added, then this method call is a no-op.","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"radeon2525"},"content":" * If the given listener was added more than once, then only the first occurrence in the list will be removed.","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"radeon2525"},"content":" public void removeListener(InvalidationListener listener) {","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"radeon2525"},"content":" requireNonNull(listener);","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"radeon2525"},"content":" listeners.remove(listener);","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"radeon2525"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"radeon2525":50}},{"path":"src/main/java/seedu/address/logic/CommandHistory.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"radeon2525"},"content":"package seedu.address.logic;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"radeon2525"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"radeon2525"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"radeon2525"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"radeon2525"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"radeon2525"},"content":" * Stores the history of commands executed.","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"radeon2525"},"content":"public class CommandHistory {","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"radeon2525"},"content":" private final ObservableList\u003cString\u003e userInputHistory \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"radeon2525"},"content":" private final ObservableList\u003cString\u003e unmodifiableUserInputHistory \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"radeon2525"},"content":" FXCollections.unmodifiableObservableList(userInputHistory);","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"radeon2525"},"content":" public CommandHistory() {}","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"radeon2525"},"content":" public CommandHistory(CommandHistory commandHistory) {","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"radeon2525"},"content":" userInputHistory.addAll(commandHistory.userInputHistory);","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"radeon2525"},"content":" * Appends {@code userInput} to the list of user input entered.","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"radeon2525"},"content":" public void add(String userInput) {","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"radeon2525"},"content":" requireNonNull(userInput);","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"radeon2525"},"content":" userInputHistory.add(userInput);","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"radeon2525"},"content":" * Returns an unmodifiable view of {@code userInputHistory}.","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"radeon2525"},"content":" public ObservableList\u003cString\u003e getHistory() {","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"radeon2525"},"content":" return unmodifiableUserInputHistory;","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"radeon2525"},"content":" public boolean equals(Object obj) {","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"radeon2525"},"content":" // short circuit if same object","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"radeon2525"},"content":" if (obj \u003d\u003d this) {","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"radeon2525"},"content":" return true;","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"radeon2525"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"radeon2525"},"content":" if (!(obj instanceof CommandHistory)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"radeon2525"},"content":" return false;","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"radeon2525"},"content":" // state check","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"radeon2525"},"content":" CommandHistory other \u003d (CommandHistory) obj;","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"radeon2525"},"content":" return userInputHistory.equals(other.userInputHistory);","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"radeon2525"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"radeon2525"},"content":" return userInputHistory.hashCode();","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"radeon2525"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"radeon2525":58}},{"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":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"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":"radeon2525"},"content":" private final CommandHistory history;","lastModifiedDate":"2024-03-18"},{"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":"radeon2525"},"content":" history \u003d new CommandHistory();","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":49,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2016-09-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2017-07-07"},{"lineNumber":53,"author":{"gitId":"radeon2525"},"content":" commandResult \u003d command.execute(model, history);","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2018-12-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":" } catch (AccessDeniedException e) {","lastModifiedDate":"2023-06-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e);","lastModifiedDate":"2023-06-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-12-09"},{"lineNumber":60,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe);","lastModifiedDate":"2023-06-13"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-03"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2018-12-03"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return model.getAddressBook();","lastModifiedDate":"2018-12-03"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-03"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList();","lastModifiedDate":"2016-09-25"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-29"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return model.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return model.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" model.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"radeon2525":3,"-":87}},{"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":"miffi"},"content":" public static final String MESSAGE_MISSING_TAG \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"miffi"},"content":" \"Tags [%2$s] not found for %1$s\";","lastModifiedDate":"2024-03-16"},{"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":"-"},"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":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"miffi":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":"-"},"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 seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":11,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06"},{"lineNumber":26,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2017-05-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":35,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2017-05-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"owesMoney\";","lastModifiedDate":"2017-05-09"},{"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":" private final Person toAdd;","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":46,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":47,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"radeon2525"},"content":" public CommandResult execute(Model model, CommandHistory history) throws CommandException {","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":55,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":58,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25"},{"lineNumber":59,"author":{"gitId":"radeon2525"},"content":" model.commitAddressBook();","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"radeon2525"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, toAdd));","lastModifiedDate":"2024-03-18"},{"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":{"radeon2525":4,"-":80}},{"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":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Clears the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class ClearCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"clear\";","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Address book has been cleared!\";","lastModifiedDate":"2016-08-24"},{"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":"radeon2525"},"content":" public CommandResult execute(Model model, CommandHistory history) {","lastModifiedDate":"2024-03-18"},{"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":"radeon2525"},"content":" model.commitAddressBook();","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"radeon2525":3,"-":22}},{"path":"src/main/java/seedu/address/logic/commands/Command.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":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Represents a command with hidden internal logic and the ability to be executed.","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public abstract class Command {","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":"radeon2525"},"content":" public abstract CommandResult execute(Model model, CommandHistory history) throws CommandException;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"radeon2525":2,"-":18}},{"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":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Deletes a person identified using it\u0027s displayed index from the address book.","lastModifiedDate":"2018-04-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \": Deletes the person identified by the index number used in the displayed person list.\\n\"","lastModifiedDate":"2018-04-01"},{"lineNumber":24,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2016-09-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2016-08-24"},{"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":"-"},"content":" public DeleteCommand(Index targetIndex) {","lastModifiedDate":"2017-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2016-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":"radeon2525"},"content":" public CommandResult execute(Model model, CommandHistory history) throws CommandException {","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":" Person personToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2018-04-19"},{"lineNumber":45,"author":{"gitId":"-"},"content":" model.deletePerson(personToDelete);","lastModifiedDate":"2016-09-25"},{"lineNumber":46,"author":{"gitId":"radeon2525"},"content":" model.commitAddressBook();","lastModifiedDate":"2024-03-18"},{"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":"The-Dudeski"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return targetIndex.equals(otherDeleteCommand.targetIndex);","lastModifiedDate":"2023-07-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"The-Dudeski":1,"radeon2525":3,"-":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":"-"},"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":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"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":"-"},"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":"radeon2525"},"content":" public CommandResult execute(Model model, CommandHistory history) throws CommandException {","lastModifiedDate":"2024-03-18"},{"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":"radeon2525"},"content":" model.commitAddressBook();","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23"},{"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":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26"},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":97,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":100,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":101,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21"},{"lineNumber":102,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":103,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2017-06-21"},{"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":"-"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTags);","lastModifiedDate":"2017-03-14"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":134,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26"},{"lineNumber":135,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26"},{"lineNumber":136,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":137,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26"},{"lineNumber":138,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21"},{"lineNumber":139,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":140,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":141,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21"},{"lineNumber":142,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":144,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":146,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":147,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11"},{"lineNumber":148,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":149,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":150,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26"},{"lineNumber":151,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15"},{"lineNumber":152,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15"},{"lineNumber":153,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15"},{"lineNumber":154,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15"},{"lineNumber":155,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":158,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":159,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26"},{"lineNumber":160,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":161,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26"},{"lineNumber":162,"author":{"gitId":"-"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, tags);","lastModifiedDate":"2018-08-14"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":165,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21"},{"lineNumber":166,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":169,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":170,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":173,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21"},{"lineNumber":174,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":177,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26"},{"lineNumber":178,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21"},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":181,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21"},{"lineNumber":182,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21"},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":185,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":186,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":189,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21"},{"lineNumber":190,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21"},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":193,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26"},{"lineNumber":194,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":197,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":198,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11"},{"lineNumber":199,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":200,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":201,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21"},{"lineNumber":202,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11"},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":205,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":206,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11"},{"lineNumber":207,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11"},{"lineNumber":208,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11"},{"lineNumber":209,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":210,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":211,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11"},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":214,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":215,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":216,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":217,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":218,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":220,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":221,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05"},{"lineNumber":222,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":223,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":225,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":226,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":227,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":228,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":229,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":230,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags);","lastModifiedDate":"2023-07-13"},{"lineNumber":231,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":244,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"radeon2525":3,"-":241}},{"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":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Terminates the program.","lastModifiedDate":"2016-09-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2016-09-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"exit\";","lastModifiedDate":"2016-09-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EXIT_ACKNOWLEDGEMENT \u003d \"Exiting Address Book as requested ...\";","lastModifiedDate":"2016-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22"},{"lineNumber":16,"author":{"gitId":"radeon2525"},"content":" public CommandResult execute(Model model, CommandHistory history) {","lastModifiedDate":"2024-03-18"},{"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":{"radeon2525":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":"2018-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":6,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Finds and lists all persons in address book whose name contains any of the argument keywords.","lastModifiedDate":"2016-09-22"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Keyword matching is case insensitive.","lastModifiedDate":"2018-04-01"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2016-09-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"find\";","lastModifiedDate":"2016-09-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":19,"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":20,"author":{"gitId":"-"},"content":" + \"the specified keywords (case-insensitive) and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2018-04-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \"Parameters: KEYWORD [MORE_KEYWORDS]...\\n\"","lastModifiedDate":"2016-09-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" alice bob charlie\";","lastModifiedDate":"2016-09-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final NameContainsKeywordsPredicate predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public FindCommand(NameContainsKeywordsPredicate predicate) {","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22"},{"lineNumber":31,"author":{"gitId":"radeon2525"},"content":" public CommandResult execute(Model model, CommandHistory history) {","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(predicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" return new CommandResult(","lastModifiedDate":"2018-04-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":" String.format(Messages.MESSAGE_PERSONS_LISTED_OVERVIEW, model.getFilteredPersonList().size()));","lastModifiedDate":"2018-04-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" if (!(other instanceof FindCommand)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" FindCommand otherFindCommand \u003d (FindCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return predicate.equals(otherFindCommand.predicate);","lastModifiedDate":"2023-07-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22"}],"authorContributionMap":{"radeon2525":2,"-":57}},{"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":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-31"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Format full help instructions for every command for display.","lastModifiedDate":"2016-08-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class HelpCommand extends Command {","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"help\";","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Shows program usage instructions.\\n\"","lastModifiedDate":"2016-08-24"},{"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":"-"},"content":" public static final String SHOWING_HELP_MESSAGE \u003d \"Opened help window.\";","lastModifiedDate":"2016-08-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-31"},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"radeon2525"},"content":" public CommandResult execute(Model model, CommandHistory history) {","lastModifiedDate":"2024-03-18"},{"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":{"radeon2525":2,"-":20}},{"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":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Lists all persons in the address book to the user.","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2016-09-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"list\";","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"JukeBoxK"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all contacts\";","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"JukeBoxK"},"content":" public static final String MESSAGE_EMPTY \u003d \"The list is empty\";","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"radeon2525"},"content":" public CommandResult execute(Model model, CommandHistory history) {","lastModifiedDate":"2024-03-18"},{"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":"JukeBoxK"},"content":" if (model.getFilteredPersonList().size() \u003d\u003d 0) {","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"JukeBoxK"},"content":" return new CommandResult(MESSAGE_EMPTY);","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"JukeBoxK"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2016-09-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"radeon2525":2,"JukeBoxK":5,"-":21}},{"path":"src/main/java/seedu/address/logic/commands/RedoCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"radeon2525"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"radeon2525"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"radeon2525"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"radeon2525"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"radeon2525"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"radeon2525"},"content":" * Reverts the {@code model}\u0027s address book to its previously undone state.","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"radeon2525"},"content":"public class RedoCommand extends Command {","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"radeon2525"},"content":" public static final String COMMAND_WORD \u003d \"redo\";","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"radeon2525"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Redo success!\";","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"radeon2525"},"content":" public static final String MESSAGE_FAILURE \u003d \"No more commands to redo!\";","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"radeon2525"},"content":" public CommandResult execute(Model model, CommandHistory history) throws CommandException {","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"radeon2525"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"radeon2525"},"content":" if (!model.canRedoAddressBook()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"radeon2525"},"content":" throw new CommandException(MESSAGE_FAILURE);","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"radeon2525"},"content":" model.redoAddressBook();","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"radeon2525"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"radeon2525"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"radeon2525"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"radeon2525":31}},{"path":"src/main/java/seedu/address/logic/commands/TagCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"radeon2525"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"Derekljh"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"Derekljh"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"Derekljh"},"content":"import java.util.Collection;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"Derekljh"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"Derekljh"},"content":"import java.util.List;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"Derekljh"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"Derekljh"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"Derekljh"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"Derekljh"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"Derekljh"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"radeon2525"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"radeon2525"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"radeon2525"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"radeon2525"},"content":"/**","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"radeon2525"},"content":" * Tags a contact identified using its displayed index in the address book.","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"radeon2525"},"content":"public class TagCommand extends Command {","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"radeon2525"},"content":" public static final String COMMAND_WORD \u003d \"tag\";","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"radeon2525"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"Derekljh"},"content":" + \": Tags the contact identified by the index number\"","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"Derekljh"},"content":" + \" used in the displayed contact list with the specified tag.\\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"Derekljh"},"content":" + \"Parameters: INDEX (must be a positive integer) tag: TAG\\n\"","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"Derekljh"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 tag: friends\";","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"radeon2525"},"content":" public static final String MESSAGE_TAG_CONTACT_SUCCESS \u003d \"Tagged Contact: %1$s with %2$s\";","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"Derekljh"},"content":" private final Index targetIndex;","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"Derekljh"},"content":" private final Set\u003cTag\u003e tags;","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"Derekljh"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"Derekljh"},"content":" * Creates a command to add a {@code tag} to the person at {@code index}.","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"Derekljh"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"Derekljh"},"content":" public TagCommand(Index index, Collection\u003cTag\u003e tags) {","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"Derekljh"},"content":" this.targetIndex \u003d index;","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"Derekljh"},"content":" this.tags \u003d new HashSet\u003c\u003e(tags);","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":46,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"radeon2525"},"content":" public CommandResult execute(Model model, CommandHistory history) throws CommandException {","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"Derekljh"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"radeon2525"},"content":" requireNonNull(history);","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"Derekljh"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"Derekljh"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"Derekljh"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"Derekljh"},"content":" Person personToTag \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":61,"author":{"gitId":"Derekljh"},"content":" Person taggedPerson \u003d addTag(personToTag);","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"radeon2525"},"content":" model.setPerson(personToTag, taggedPerson);","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"Derekljh"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-13"},{"lineNumber":64,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"radeon2525"},"content":" // Construct the command result message with the tag information","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"radeon2525"},"content":" String tagInfo \u003d String.format(MESSAGE_TAG_CONTACT_SUCCESS,","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"radeon2525"},"content":" Messages.format(taggedPerson), showTags(tags));","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"radeon2525"},"content":" CommandResult result \u003d new CommandResult(tagInfo);","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"radeon2525"},"content":" // Add the executed command to the command history","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"radeon2525"},"content":" history.add(String.valueOf(this));","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"radeon2525"},"content":" model.commitAddressBook();","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"radeon2525"},"content":" return result;","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"radeon2525"},"content":" static String showTags(Collection\u003cTag\u003e tags) {","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"Derekljh"},"content":" return tags.stream().map((tag) -\u003e tag.tagName)","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"Derekljh"},"content":" .sorted() // making the output order deterministic","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"Derekljh"},"content":" .collect(Collectors.joining(\", \"));","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"Derekljh"},"content":" private Person addTag(Person personToTag) {","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"Derekljh"},"content":" HashSet\u003cTag\u003e personTags \u003d new HashSet\u003c\u003e(personToTag.getTags());","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":87,"author":{"gitId":"Derekljh"},"content":" personTags.addAll(tags);","lastModifiedDate":"2024-03-16"},{"lineNumber":88,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":89,"author":{"gitId":"Derekljh"},"content":" return new Person(","lastModifiedDate":"2024-03-16"},{"lineNumber":90,"author":{"gitId":"Derekljh"},"content":" personToTag.getName(),","lastModifiedDate":"2024-03-16"},{"lineNumber":91,"author":{"gitId":"Derekljh"},"content":" personToTag.getPhone(),","lastModifiedDate":"2024-03-16"},{"lineNumber":92,"author":{"gitId":"Derekljh"},"content":" personToTag.getEmail(),","lastModifiedDate":"2024-03-16"},{"lineNumber":93,"author":{"gitId":"Derekljh"},"content":" personToTag.getAddress(),","lastModifiedDate":"2024-03-16"},{"lineNumber":94,"author":{"gitId":"Derekljh"},"content":" personTags);","lastModifiedDate":"2024-03-16"},{"lineNumber":95,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":96,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":97,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":98,"author":{"gitId":"radeon2525"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-11"},{"lineNumber":99,"author":{"gitId":"Derekljh"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-16"},{"lineNumber":100,"author":{"gitId":"Derekljh"},"content":" return true;","lastModifiedDate":"2024-03-16"},{"lineNumber":101,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":102,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":103,"author":{"gitId":"Derekljh"},"content":" if (!(other instanceof TagCommand)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":104,"author":{"gitId":"Derekljh"},"content":" return false;","lastModifiedDate":"2024-03-16"},{"lineNumber":105,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":106,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":107,"author":{"gitId":"Derekljh"},"content":" TagCommand otherTagCommand \u003d (TagCommand) other;","lastModifiedDate":"2024-03-16"},{"lineNumber":108,"author":{"gitId":"Derekljh"},"content":" return targetIndex.equals(otherTagCommand.targetIndex)","lastModifiedDate":"2024-03-16"},{"lineNumber":109,"author":{"gitId":"Derekljh"},"content":" \u0026\u0026 tags.equals(otherTagCommand.tags);","lastModifiedDate":"2024-03-16"},{"lineNumber":110,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":111,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":112,"author":{"gitId":"Derekljh"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":113,"author":{"gitId":"Derekljh"},"content":" public String toString() {","lastModifiedDate":"2024-03-16"},{"lineNumber":114,"author":{"gitId":"Derekljh"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-16"},{"lineNumber":115,"author":{"gitId":"Derekljh"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2024-03-16"},{"lineNumber":116,"author":{"gitId":"Derekljh"},"content":" .add(\"tag\", tags)","lastModifiedDate":"2024-03-16"},{"lineNumber":117,"author":{"gitId":"Derekljh"},"content":" .toString();","lastModifiedDate":"2024-03-16"},{"lineNumber":118,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":119,"author":{"gitId":"radeon2525"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"Derekljh":72,"radeon2525":47}},{"path":"src/main/java/seedu/address/logic/commands/UndoCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"radeon2525"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"radeon2525"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"radeon2525"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"radeon2525"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"radeon2525"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"radeon2525"},"content":" * Reverts the {@code model}\u0027s address book to its previous state.","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"radeon2525"},"content":"public class UndoCommand extends Command {","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"radeon2525"},"content":" public static final String COMMAND_WORD \u003d \"undo\";","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"radeon2525"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Undo success!\";","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"radeon2525"},"content":" public static final String MESSAGE_FAILURE \u003d \"No more commands to undo!\";","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"radeon2525"},"content":" public CommandResult execute(Model model, CommandHistory history) throws CommandException {","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"radeon2525"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"radeon2525"},"content":" if (!model.canUndoAddressBook()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"radeon2525"},"content":" throw new CommandException(MESSAGE_FAILURE);","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"radeon2525"},"content":" model.undoAddressBook();","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"radeon2525"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"radeon2525"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"radeon2525"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"radeon2525":31}},{"path":"src/main/java/seedu/address/logic/commands/UntagCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"miffi"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"miffi"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"miffi"},"content":"import java.util.Collection;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"miffi"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"miffi"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"miffi"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"miffi"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"miffi"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"miffi"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"miffi"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"miffi"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"miffi"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"miffi"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"miffi"},"content":" * Deletes a tag from a person with its displayed index.","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"miffi"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"miffi"},"content":"public class UntagCommand extends Command {","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"miffi"},"content":" public static final String COMMAND_WORD \u003d \"untag\";","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"miffi"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"miffi"},"content":" + \": Deletes the tag from contact identified by the index number used in the displayed contact list.\\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"Derekljh"},"content":" + \"Parameters: INDEX (must be a positive integer) tag: TAG... (can take multiple tags)\\n\"","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"Derekljh"},"content":" + \"Example: \" + COMMAND_WORD + \"1 tag: friends\";","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"miffi"},"content":" public static final String MESSAGE_DELETE_TAG_SUCCESS \u003d \"Deleted tag %2$s from %1$s\";","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"miffi"},"content":" private final Index index;","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"miffi"},"content":" private final Set\u003cTag\u003e tags;","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"miffi"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"miffi"},"content":" * Creates a command to delete a {@code tag} from the person at {@code index}.","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"miffi"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"miffi"},"content":" public UntagCommand(Index index, Collection\u003cTag\u003e tags) {","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"miffi"},"content":" this.index \u003d index;","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"miffi"},"content":" this.tags \u003d new HashSet\u003c\u003e(tags);","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"miffi"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"miffi"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"radeon2525"},"content":" public CommandResult execute(Model model, CommandHistory history) throws CommandException {","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"miffi"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"miffi"},"content":" var lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"miffi"},"content":" if (index.getZeroBased() \u003e lastShownList.size()) {","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"miffi"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"miffi"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"miffi"},"content":" var personToUntag \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"miffi"},"content":" var untaggedPerson \u003d untag(personToUntag);","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"miffi"},"content":" model.setPerson(personToUntag, untaggedPerson);","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"miffi"},"content":" model.updateFilteredPersonList(Model.PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"radeon2525"},"content":" model.commitAddressBook();","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"miffi"},"content":" return new CommandResult(String.format(","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"miffi"},"content":" MESSAGE_DELETE_TAG_SUCCESS,","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"miffi"},"content":" Messages.format(untaggedPerson),","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"miffi"},"content":" showTags(tags)));","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"miffi"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"miffi"},"content":" private Person untag(Person personToUntag) throws CommandException {","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"miffi"},"content":" var personTags \u003d new HashSet\u003cTag\u003e(personToUntag.getTags());","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"miffi"},"content":" validateAllTagsExist(personToUntag, personTags);","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"miffi"},"content":" personTags.removeAll(tags);","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"miffi"},"content":" return new Person(","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"miffi"},"content":" personToUntag.getName(),","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"miffi"},"content":" personToUntag.getPhone(),","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"miffi"},"content":" personToUntag.getEmail(),","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"miffi"},"content":" personToUntag.getAddress(),","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"miffi"},"content":" personTags);","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"miffi"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"miffi"},"content":" private void validateAllTagsExist(Person personToUntag, HashSet\u003cTag\u003e personTags) throws CommandException {","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"miffi"},"content":" var missingTagNames \u003d tags","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"miffi"},"content":" .stream()","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"miffi"},"content":" .filter((tag) -\u003e !personTags.contains(tag))","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"miffi"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"miffi"},"content":" if (!missingTagNames.isEmpty()) {","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"miffi"},"content":" throw new CommandException(","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"miffi"},"content":" String.format(","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"miffi"},"content":" Messages.MESSAGE_MISSING_TAG,","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"miffi"},"content":" personToUntag.getName(),","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"miffi"},"content":" showTags(missingTagNames)));","lastModifiedDate":"2024-03-16"},{"lineNumber":87,"author":{"gitId":"miffi"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":88,"author":{"gitId":"miffi"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":89,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":90,"author":{"gitId":"miffi"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":91,"author":{"gitId":"miffi"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-16"},{"lineNumber":92,"author":{"gitId":"miffi"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-16"},{"lineNumber":93,"author":{"gitId":"miffi"},"content":" return true;","lastModifiedDate":"2024-03-16"},{"lineNumber":94,"author":{"gitId":"miffi"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":95,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":96,"author":{"gitId":"miffi"},"content":" if (other instanceof UntagCommand) {","lastModifiedDate":"2024-03-16"},{"lineNumber":97,"author":{"gitId":"miffi"},"content":" UntagCommand obj \u003d (UntagCommand) other;","lastModifiedDate":"2024-03-16"},{"lineNumber":98,"author":{"gitId":"miffi"},"content":" return index.equals(obj.index) \u0026\u0026 tags.equals(obj.tags);","lastModifiedDate":"2024-03-16"},{"lineNumber":99,"author":{"gitId":"miffi"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":100,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":101,"author":{"gitId":"miffi"},"content":" return false;","lastModifiedDate":"2024-03-16"},{"lineNumber":102,"author":{"gitId":"miffi"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":103,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":104,"author":{"gitId":"miffi"},"content":" private static String showTags(Collection\u003cTag\u003e tags) {","lastModifiedDate":"2024-03-16"},{"lineNumber":105,"author":{"gitId":"miffi"},"content":" return tags.stream().map((tag) -\u003e tag.tagName)","lastModifiedDate":"2024-03-16"},{"lineNumber":106,"author":{"gitId":"miffi"},"content":" .sorted() // making the output order deterministic","lastModifiedDate":"2024-03-16"},{"lineNumber":107,"author":{"gitId":"miffi"},"content":" .collect(Collectors.joining(\", \"));","lastModifiedDate":"2024-03-16"},{"lineNumber":108,"author":{"gitId":"miffi"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":109,"author":{"gitId":"miffi"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"Derekljh":2,"radeon2525":3,"miffi":104}},{"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":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.commands.RedoCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"Derekljh"},"content":"import seedu.address.logic.commands.TagCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.commands.UndoCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"miffi"},"content":"import seedu.address.logic.commands.UntagCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":69,"author":{"gitId":"Derekljh"},"content":" case TagCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-13"},{"lineNumber":70,"author":{"gitId":"Derekljh"},"content":" return new TagCommandParser().parse(arguments);","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":84,"author":{"gitId":"miffi"},"content":" case UntagCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"miffi"},"content":" return new UntagCommandParser().parse(arguments);","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"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":"radeon2525"},"content":" case UndoCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"radeon2525"},"content":" return new UndoCommand();","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"radeon2525"},"content":" case RedoCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"radeon2525"},"content":" return new RedoCommand();","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"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":{"Derekljh":4,"radeon2525":8,"miffi":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":"The-Dudeski"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"name:\");","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"The-Dudeski"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"phone:\");","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"The-Dudeski"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"email:\");","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"The-Dudeski"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"address:\");","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"The-Dudeski"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"tag:\");","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"The-Dudeski":5,"-":10}},{"path":"src/main/java/seedu/address/logic/parser/TagCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Derekljh"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"Derekljh"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"Derekljh"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"Derekljh"},"content":"import java.util.Collection;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"Derekljh"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"Derekljh"},"content":"import seedu.address.logic.commands.TagCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"Derekljh"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"Derekljh"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"Derekljh"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"Derekljh"},"content":" * Parses input arguments and creates a new TagCommand object","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"Derekljh"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"Derekljh"},"content":"public class TagCommandParser implements Parser\u003cTagCommand\u003e {","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"Derekljh"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"Derekljh"},"content":" * Parses the given {@code String} of arguments in the context of the TagCommand","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"Derekljh"},"content":" * and returns an TagCommand object for execution.","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"Derekljh"},"content":" *","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"Derekljh"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"Derekljh"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"Derekljh"},"content":" public TagCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"Derekljh"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"Derekljh"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_TAG);","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"Derekljh"},"content":" Collection\u003cTag\u003e tags \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"Derekljh"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"Derekljh"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, TagCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"Derekljh"},"content":" Index index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"Derekljh"},"content":" return new TagCommand(index, tags);","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"Derekljh"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"Derekljh":38}},{"path":"src/main/java/seedu/address/logic/parser/UntagCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"miffi"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"miffi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"miffi"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"miffi"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"miffi"},"content":"import seedu.address.logic.commands.UntagCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"miffi"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"miffi"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"miffi"},"content":" * Parses input arguments and creates an UntagCommand.","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"miffi"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"miffi"},"content":"public class UntagCommandParser implements Parser\u003cUntagCommand\u003e {","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"miffi"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"miffi"},"content":" public UntagCommand parse(String userInput) throws ParseException {","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"miffi"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(userInput, PREFIX_TAG);","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"miffi"},"content":" var tags \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"miffi"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"miffi"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"miffi"},"content":" String.format(Messages.MESSAGE_INVALID_COMMAND_FORMAT, UntagCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"miffi"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"miffi"},"content":" Index index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"miffi"},"content":" return new UntagCommand(index, tags);","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"miffi"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"miffi"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"miffi":28}},{"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":"radeon2525"},"content":"import javafx.beans.InvalidationListener;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"radeon2525"},"content":"import javafx.beans.Observable;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"radeon2525"},"content":"import seedu.address.commons.util.InvalidationListenerManager;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.UniquePersonList;","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Wraps all data at the address-book level","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Duplicates are not allowed (by .isSamePerson comparison)","lastModifiedDate":"2018-04-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"radeon2525"},"content":"public class AddressBook implements ReadOnlyAddressBook, Observable {","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"radeon2525"},"content":" final InvalidationListenerManager invalidationListenerManager \u003d new InvalidationListenerManager();","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final UniquePersonList persons;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":" {","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" persons \u003d new UniquePersonList();","lastModifiedDate":"2016-08-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public AddressBook() {}","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Creates an AddressBook using the Persons in the {@code toBeCopied}","lastModifiedDate":"2018-03-29"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public AddressBook(ReadOnlyAddressBook toBeCopied) {","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2016-12-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" resetData(toBeCopied);","lastModifiedDate":"2016-12-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":40,"author":{"gitId":"-"},"content":" //// list overwrite operations","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Replaces the contents of the person list with {@code persons}.","lastModifiedDate":"2018-08-07"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2018-08-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void setPersons(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-08-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.persons.setPersons(persons);","lastModifiedDate":"2016-10-19"},{"lineNumber":48,"author":{"gitId":"radeon2525"},"content":" indicateModified();","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code AddressBook} with {@code newData}.","lastModifiedDate":"2017-08-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyAddressBook newData) {","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" requireNonNull(newData);","lastModifiedDate":"2017-05-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" setPersons(newData.getPersonList());","lastModifiedDate":"2018-03-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" //// person-level operations","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":63,"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":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06"},{"lineNumber":66,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return persons.contains(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-09-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * The person must not already exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void addPerson(Person p) {","lastModifiedDate":"2018-08-07"},{"lineNumber":75,"author":{"gitId":"-"},"content":" persons.add(p);","lastModifiedDate":"2018-03-29"},{"lineNumber":76,"author":{"gitId":"radeon2525"},"content":" indicateModified();","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":" * Replaces the given person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2018-01-10"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":82,"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":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":85,"author":{"gitId":"-"},"content":" requireNonNull(editedPerson);","lastModifiedDate":"2018-01-10"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" persons.setPerson(target, editedPerson);","lastModifiedDate":"2018-03-29"},{"lineNumber":88,"author":{"gitId":"radeon2525"},"content":" indicateModified();","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Removes {@code key} from this {@code AddressBook}.","lastModifiedDate":"2017-08-16"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * {@code key} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":95,"author":{"gitId":"-"},"content":" public void removePerson(Person key) {","lastModifiedDate":"2018-08-07"},{"lineNumber":96,"author":{"gitId":"-"},"content":" persons.remove(key);","lastModifiedDate":"2018-02-28"},{"lineNumber":97,"author":{"gitId":"radeon2525"},"content":" indicateModified();","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":" //// util methods","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":" .add(\"persons\", persons)","lastModifiedDate":"2019-02-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":111,"author":{"gitId":"-"},"content":" return persons.asUnmodifiableObservableList();","lastModifiedDate":"2018-04-05"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-01"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-01"},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":115,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"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 AddressBook)) {","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":" AddressBook otherAddressBook \u003d (AddressBook) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" return persons.equals(otherAddressBook.persons);","lastModifiedDate":"2023-07-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":130,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":131,"author":{"gitId":"-"},"content":" return persons.hashCode();","lastModifiedDate":"2018-03-29"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":133,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":134,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":135,"author":{"gitId":"radeon2525"},"content":" * Notifies listeners that the address book has been modified.","lastModifiedDate":"2024-03-20"},{"lineNumber":136,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":137,"author":{"gitId":"radeon2525"},"content":" public void indicateModified() {","lastModifiedDate":"2024-03-20"},{"lineNumber":138,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.callListeners(this);","lastModifiedDate":"2024-03-20"},{"lineNumber":139,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":140,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":141,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":142,"author":{"gitId":"radeon2525"},"content":" public void addListener(InvalidationListener listener) {","lastModifiedDate":"2024-03-20"},{"lineNumber":143,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.addListener(listener);","lastModifiedDate":"2024-03-20"},{"lineNumber":144,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":145,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":146,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":147,"author":{"gitId":"radeon2525"},"content":" public void removeListener(InvalidationListener listener) {","lastModifiedDate":"2024-03-20"},{"lineNumber":148,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.removeListener(listener);","lastModifiedDate":"2024-03-20"},{"lineNumber":149,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":150,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"radeon2525":27,"-":123}},{"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":"-"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2017-08-05"},{"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":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"radeon2525"},"content":" boolean canUndoAddressBook();","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"radeon2525"},"content":" void undoAddressBook();","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"radeon2525"},"content":" boolean canRedoAddressBook();","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"radeon2525"},"content":" void redoAddressBook();","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"radeon2525"},"content":" * Saves the current address book state for undo/redo.","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"radeon2525"},"content":" void commitAddressBook();","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"radeon2525":13,"-":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":"radeon2525"},"content":"import javafx.beans.property.SimpleObjectProperty;","lastModifiedDate":"2024-03-18"},{"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 UserPrefs userPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2018-01-10"},{"lineNumber":25,"author":{"gitId":"radeon2525"},"content":" private final VersionedAddressBook versionedAddressBook;","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"radeon2525"},"content":" private final SimpleObjectProperty\u003cPerson\u003e selectedPerson \u003d new SimpleObjectProperty\u003c\u003e();","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"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":"radeon2525"},"content":" super();","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook \u003d new VersionedAddressBook(addressBook);","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"radeon2525"},"content":" //this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":41,"author":{"gitId":"radeon2525"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(versionedAddressBook.getPersonList());","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"radeon2525"},"content":" //filteredPersons.addListener(this::ensureSelectedPersonIsValid);","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22"},{"lineNumber":46,"author":{"gitId":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"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":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":53,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06"},{"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 ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return userPrefs;","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 GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","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":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","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 Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27"},{"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 void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","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":" //\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":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27"},{"lineNumber":88,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.resetData(addressBook);","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21"},{"lineNumber":93,"author":{"gitId":"radeon2525"},"content":" return versionedAddressBook;","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"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":"radeon2525"},"content":" return versionedAddressBook.hasPerson(person);","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15"},{"lineNumber":104,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.removePerson(target);","lastModifiedDate":"2024-03-18"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":109,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.addPerson(person);","lastModifiedDate":"2024-03-18"},{"lineNumber":110,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":115,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":117,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.setPerson(target, editedPerson);","lastModifiedDate":"2024-03-18"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":120,"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":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":123,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10"},{"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":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":128,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09"},{"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":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":133,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05"},{"lineNumber":134,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":137,"author":{"gitId":"radeon2525"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Undo/Redo \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":138,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":139,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":140,"author":{"gitId":"radeon2525"},"content":" public boolean canUndoAddressBook() {","lastModifiedDate":"2024-03-18"},{"lineNumber":141,"author":{"gitId":"radeon2525"},"content":" return versionedAddressBook.canUndo();","lastModifiedDate":"2024-03-18"},{"lineNumber":142,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":143,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":144,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":145,"author":{"gitId":"radeon2525"},"content":" public void undoAddressBook() {","lastModifiedDate":"2024-03-18"},{"lineNumber":146,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.undo();","lastModifiedDate":"2024-03-18"},{"lineNumber":147,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":148,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":149,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":150,"author":{"gitId":"radeon2525"},"content":" public boolean canRedoAddressBook() {","lastModifiedDate":"2024-03-18"},{"lineNumber":151,"author":{"gitId":"radeon2525"},"content":" return versionedAddressBook.canRedo();","lastModifiedDate":"2024-03-18"},{"lineNumber":152,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":153,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":154,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":155,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":156,"author":{"gitId":"radeon2525"},"content":" public void redoAddressBook() {","lastModifiedDate":"2024-03-18"},{"lineNumber":157,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.redo();","lastModifiedDate":"2024-03-18"},{"lineNumber":158,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":159,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":160,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":161,"author":{"gitId":"radeon2525"},"content":" public void commitAddressBook() {","lastModifiedDate":"2024-03-18"},{"lineNumber":162,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.commit();","lastModifiedDate":"2024-03-18"},{"lineNumber":163,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":164,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":165,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31"},{"lineNumber":166,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":168,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":171,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31"},{"lineNumber":172,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":173,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":176,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":177,"author":{"gitId":"radeon2525"},"content":" return versionedAddressBook.equals(otherModelManager.versionedAddressBook)","lastModifiedDate":"2024-03-18"},{"lineNumber":178,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13"},{"lineNumber":179,"author":{"gitId":"-"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons);","lastModifiedDate":"2023-07-13"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":181,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"radeon2525":44,"-":137}},{"path":"src/main/java/seedu/address/model/VersionedAddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"radeon2525"},"content":"package seedu.address.model;","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"radeon2525"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"radeon2525"},"content":"import java.util.List;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"radeon2525"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"radeon2525"},"content":" * {@code AddressBook} that keeps track of its own history.","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"radeon2525"},"content":"public class VersionedAddressBook extends AddressBook {","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"radeon2525"},"content":" private final List\u003cReadOnlyAddressBook\u003e addressBookStateList;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"radeon2525"},"content":" private int currentStatePointer;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"radeon2525"},"content":" * {@code AddressBook} that keeps track of its own history.","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"radeon2525"},"content":" public VersionedAddressBook(ReadOnlyAddressBook initialState) {","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"radeon2525"},"content":" super(initialState);","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"radeon2525"},"content":" addressBookStateList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"radeon2525"},"content":" addressBookStateList.add(new AddressBook(initialState));","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"radeon2525"},"content":" currentStatePointer \u003d 0;","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"radeon2525"},"content":" * Saves a copy of the current {@code AddressBook} state at the end of the state list.","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"radeon2525"},"content":" * Undone states are removed from the state list.","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"radeon2525"},"content":" public void commit() {","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"radeon2525"},"content":" removeStatesAfterCurrentPointer();","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"radeon2525"},"content":" addressBookStateList.add(new AddressBook(this));","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"radeon2525"},"content":" currentStatePointer++;","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"radeon2525"},"content":" //indicateModified();","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"radeon2525"},"content":" private void removeStatesAfterCurrentPointer() {","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"radeon2525"},"content":" addressBookStateList.subList(currentStatePointer + 1, addressBookStateList.size()).clear();","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"radeon2525"},"content":" * Restores the address book to its previous state.","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"radeon2525"},"content":" public void undo() {","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"radeon2525"},"content":" if (!canUndo()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"radeon2525"},"content":" throw new NoUndoableStateException();","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"radeon2525"},"content":" currentStatePointer--;","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"radeon2525"},"content":" resetData(addressBookStateList.get(currentStatePointer));","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"radeon2525"},"content":" * Restores the address book to its previously undone state.","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"radeon2525"},"content":" public void redo() {","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"radeon2525"},"content":" if (!canRedo()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"radeon2525"},"content":" throw new NoRedoableStateException();","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"radeon2525"},"content":" currentStatePointer++;","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"radeon2525"},"content":" resetData(addressBookStateList.get(currentStatePointer));","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"radeon2525"},"content":" * Returns true if {@code undo()} has address book states to undo.","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"radeon2525"},"content":" public boolean canUndo() {","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"radeon2525"},"content":" return currentStatePointer \u003e 0;","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"radeon2525"},"content":" * Returns true if {@code redo()} has address book states to redo.","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"radeon2525"},"content":" public boolean canRedo() {","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"radeon2525"},"content":" return currentStatePointer \u003c addressBookStateList.size() - 1;","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"radeon2525"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"radeon2525"},"content":" // short circuit if same object","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"radeon2525"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"radeon2525"},"content":" return true;","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"radeon2525"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"radeon2525"},"content":" if (!(other instanceof VersionedAddressBook)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"radeon2525"},"content":" return false;","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook otherVersionedAddressBook \u003d (VersionedAddressBook) other;","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"radeon2525"},"content":" // state check","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"radeon2525"},"content":" return super.equals(otherVersionedAddressBook)","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"radeon2525"},"content":" \u0026\u0026 addressBookStateList.equals(otherVersionedAddressBook.addressBookStateList)","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"radeon2525"},"content":" \u0026\u0026 currentStatePointer \u003d\u003d otherVersionedAddressBook.currentStatePointer;","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"radeon2525"},"content":" * Thrown when trying to {@code undo()} but can\u0027t.","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"radeon2525"},"content":" public static class NoUndoableStateException extends RuntimeException {","lastModifiedDate":"2024-03-18"},{"lineNumber":101,"author":{"gitId":"radeon2525"},"content":" private NoUndoableStateException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":102,"author":{"gitId":"radeon2525"},"content":" super(\"Current state pointer at start of addressBookState list, unable to undo.\");","lastModifiedDate":"2024-03-18"},{"lineNumber":103,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":104,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":105,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":106,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":107,"author":{"gitId":"radeon2525"},"content":" * Thrown when trying to {@code redo()} but can\u0027t.","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":109,"author":{"gitId":"radeon2525"},"content":" public static class NoRedoableStateException extends RuntimeException {","lastModifiedDate":"2024-03-18"},{"lineNumber":110,"author":{"gitId":"radeon2525"},"content":" private NoRedoableStateException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"radeon2525"},"content":" super(\"Current state pointer at end of addressBookState list, unable to redo.\");","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":113,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"radeon2525"},"content":"}","lastModifiedDate":"2024-03-18"},{"lineNumber":115,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"radeon2525":115}},{"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":"-"},"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":"-"},"content":" private StackPane personListPanelPlaceholder;","lastModifiedDate":"2017-05-09"},{"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":"-"},"content":" personListPanel \u003d new PersonListPanel(logic.getFilteredPersonList());","lastModifiedDate":"2019-01-25"},{"lineNumber":114,"author":{"gitId":"-"},"content":" personListPanelPlaceholder.getChildren().add(personListPanel.getRoot());","lastModifiedDate":"2017-06-14"},{"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":" public PersonListPanel getPersonListPanel() {","lastModifiedDate":"2016-08-25"},{"lineNumber":167,"author":{"gitId":"-"},"content":" return personListPanel;","lastModifiedDate":"2018-08-14"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":170,"author":{"gitId":"The-Dudeski"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":171,"author":{"gitId":"The-Dudeski"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":172,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":173,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":174,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":175,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09"},{"lineNumber":176,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":177,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09"},{"lineNumber":178,"author":{"gitId":"The-Dudeski"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":179,"author":{"gitId":"The-Dudeski"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":180,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":181,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09"},{"lineNumber":182,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":183,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":185,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":186,"author":{"gitId":"-"},"content":" handleHelp();","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":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":190,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09"},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":193,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":194,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09"},{"lineNumber":195,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13"},{"lineNumber":196,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09"},{"lineNumber":197,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09"},{"lineNumber":198,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":199,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":200,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"The-Dudeski":4,"-":196}},{"path":"src/test/java/seedu/address/commons/util/InvalidationListenerManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"radeon2525"},"content":"package seedu.address.commons.util;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"radeon2525"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"radeon2525"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"radeon2525"},"content":"import javafx.beans.InvalidationListener;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"radeon2525"},"content":"import javafx.beans.property.SimpleObjectProperty;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"radeon2525"},"content":"public class InvalidationListenerManagerTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"radeon2525"},"content":" private final SimpleObjectProperty\u003cObject\u003e dummyObservable \u003d new SimpleObjectProperty\u003c\u003e();","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"radeon2525"},"content":" private final InvalidationListenerManager invalidationListenerManager \u003d new InvalidationListenerManager();","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"radeon2525"},"content":" private int counter;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"radeon2525"},"content":" public void addListener_sameListenerOnce_listenerAdded() {","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.addListener(observable -\u003e {","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"radeon2525"},"content":" assertEquals(dummyObservable, observable);","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"radeon2525"},"content":" counter++;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"radeon2525"},"content":" });","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.callListeners(dummyObservable);","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"radeon2525"},"content":" assertEquals(1, counter);","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"radeon2525"},"content":" public void addListener_sameListenerTwice_listenerAddedTwice() {","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"radeon2525"},"content":" InvalidationListener listener \u003d observable -\u003e counter++;","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.addListener(listener);","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.addListener(listener);","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.callListeners(dummyObservable);","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"radeon2525"},"content":" assertEquals(2, counter);","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"radeon2525"},"content":" public void addListener_listenersBeingCalled_listenerNotCalled() {","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"radeon2525"},"content":" InvalidationListener listener1 \u003d observable -\u003e {","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"radeon2525"},"content":" throw new AssertionError(\"should not be called\");","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"radeon2525"},"content":" };","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"radeon2525"},"content":" InvalidationListener listener2 \u003d observable -\u003e invalidationListenerManager.addListener(listener1);","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.addListener(listener2);","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.callListeners(dummyObservable);","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"radeon2525"},"content":" public void removeListener_singleListenerAdded_listenerRemoved() {","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"radeon2525"},"content":" InvalidationListener listener \u003d observable -\u003e counter++;","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.addListener(listener);","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.removeListener(listener);","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.callListeners(dummyObservable);","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"radeon2525"},"content":" assertEquals(0, counter);","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"radeon2525"},"content":" public void removeListener_sameListenerAddedTwice_firstListenerRemoved() {","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"radeon2525"},"content":" InvalidationListener listener \u003d observable -\u003e counter++;","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.addListener(listener);","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.addListener(listener);","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.removeListener(listener);","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.callListeners(dummyObservable);","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"radeon2525"},"content":" assertEquals(1, counter);","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"radeon2525"},"content":" public void removeListener_listenersBeingCalled_listenerStillCalled() {","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"radeon2525"},"content":" InvalidationListener listener1 \u003d observable -\u003e counter++;","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"radeon2525"},"content":" InvalidationListener listener2 \u003d observable -\u003e invalidationListenerManager.removeListener(listener1);","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.addListener(listener2);","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.addListener(listener1);","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"radeon2525"},"content":" invalidationListenerManager.callListeners(dummyObservable);","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"radeon2525"},"content":" assertEquals(1, counter);","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"radeon2525"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"radeon2525":72}},{"path":"src/test/java/seedu/address/logic/CommandHistoryTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"radeon2525"},"content":"package seedu.address.logic;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"radeon2525"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"radeon2525"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"radeon2525"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"radeon2525"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"radeon2525"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"radeon2525"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"radeon2525"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"radeon2525"},"content":"public class CommandHistoryTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"radeon2525"},"content":" private CommandHistory history;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"radeon2525"},"content":" @BeforeEach","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"radeon2525"},"content":" public void setUp() {","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"radeon2525"},"content":" history \u003d new CommandHistory();","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"radeon2525"},"content":" public void constructor_withCommandHistory_copiesCommandHistory() {","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"radeon2525"},"content":" final CommandHistory commandHistoryWithA \u003d new CommandHistory();","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"radeon2525"},"content":" commandHistoryWithA.add(\"a\");","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"radeon2525"},"content":" assertEquals(commandHistoryWithA, new CommandHistory(commandHistoryWithA));","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"radeon2525"},"content":" public void add() {","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"radeon2525"},"content":" final String validCommand \u003d \"clear\";","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"radeon2525"},"content":" final String invalidCommand \u003d \"adds Bob\";","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"radeon2525"},"content":" history.add(validCommand);","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"radeon2525"},"content":" history.add(invalidCommand);","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"radeon2525"},"content":" assertEquals(Arrays.asList(validCommand, invalidCommand), history.getHistory());","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"radeon2525"},"content":" public void equals() {","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"radeon2525"},"content":" final CommandHistory commandHistoryWithA \u003d new CommandHistory();","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"radeon2525"},"content":" commandHistoryWithA.add(\"a\");","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"radeon2525"},"content":" final CommandHistory anotherCommandHistoryWithA \u003d new CommandHistory();","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"radeon2525"},"content":" anotherCommandHistoryWithA.add(\"a\");","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"radeon2525"},"content":" final CommandHistory commandHistoryWithB \u003d new CommandHistory();","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"radeon2525"},"content":" commandHistoryWithB.add(\"b\");","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"radeon2525"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"radeon2525"},"content":" assertTrue(commandHistoryWithA.equals(commandHistoryWithA));","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"radeon2525"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"radeon2525"},"content":" assertTrue(commandHistoryWithA.equals(anotherCommandHistoryWithA));","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"radeon2525"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"radeon2525"},"content":" assertFalse(commandHistoryWithA.equals(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"radeon2525"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"radeon2525"},"content":" assertFalse(commandHistoryWithA.equals(5.0f));","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"radeon2525"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"radeon2525"},"content":" assertFalse(commandHistoryWithA.equals(commandHistoryWithB));","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"radeon2525"},"content":" public void hashcode() {","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"radeon2525"},"content":" final CommandHistory commandHistoryWithA \u003d new CommandHistory();","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"radeon2525"},"content":" commandHistoryWithA.add(\"a\");","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"radeon2525"},"content":" final CommandHistory anotherCommandHistoryWithA \u003d new CommandHistory();","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"radeon2525"},"content":" anotherCommandHistoryWithA.add(\"a\");","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"radeon2525"},"content":" final CommandHistory commandHistoryWithB \u003d new CommandHistory();","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"radeon2525"},"content":" commandHistoryWithB.add(\"b\");","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"radeon2525"},"content":" // same values -\u003e returns same hashcode","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"radeon2525"},"content":" assertEquals(commandHistoryWithA.hashCode(), anotherCommandHistoryWithA.hashCode());","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"radeon2525"},"content":" // different values -\u003e returns different hashcode","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"radeon2525"},"content":" assertNotEquals(commandHistoryWithA.hashCode(), commandHistoryWithB.hashCode());","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"radeon2525"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"radeon2525":79}},{"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":"-"},"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":"JukeBoxK"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_EMPTY, model);","lastModifiedDate":"2024-03-13"},{"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":"2017-09-01"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":78,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":86,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14"},{"lineNumber":87,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":97,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":101,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":109,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":110,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":111,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":112,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":113,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31"},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":119,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":120,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"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, Model expectedModel) {","lastModifiedDate":"2017-05-31"},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19"},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13"},{"lineNumber":135,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13"},{"lineNumber":136,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13"},{"lineNumber":137,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":138,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13"},{"lineNumber":139,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":141,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13"},{"lineNumber":142,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13"},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":144,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13"},{"lineNumber":145,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13"},{"lineNumber":146,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":148,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":150,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":151,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13"},{"lineNumber":152,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":154,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":156,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13"},{"lineNumber":157,"author":{"gitId":"-"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2023-06-13"},{"lineNumber":158,"author":{"gitId":"-"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY;","lastModifiedDate":"2023-06-13"},{"lineNumber":159,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2023-06-13"},{"lineNumber":160,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13"},{"lineNumber":161,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13"},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":164,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"radeon2525":1,"JukeBoxK":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":"-"},"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":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"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":"radeon2525"},"content":" private CommandHistory commandHistory \u003d new CommandHistory();","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":" public void execute_newPerson_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-15"},{"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":"radeon2525"},"content":" expectedModel.commitAddressBook();","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":39,"author":{"gitId":"radeon2525"},"content":" assertCommandSuccess(new AddCommand(validPerson), model, commandHistory,","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"radeon2525"},"content":" String.format(AddCommand.MESSAGE_SUCCESS, validPerson), expectedModel);","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","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 execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(0);","lastModifiedDate":"2018-01-10"},{"lineNumber":46,"author":{"gitId":"radeon2525"},"content":" assertCommandFailure(new AddCommand(personInList), model, commandHistory,","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":" AddCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"radeon2525":7,"-":43}},{"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":"","lastModifiedDate":"2017-05-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"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":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":18,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class AddCommandTest {","lastModifiedDate":"2017-05-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"radeon2525"},"content":" private static final CommandHistory EMPTY_COMMAND_HISTORY \u003d new CommandHistory();","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"radeon2525"},"content":" private static final Person ALICE \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"radeon2525"},"content":" private CommandHistory commandHistory \u003d new CommandHistory();","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"radeon2525"},"content":" CommandHistory commandHistory \u003d new CommandHistory();","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"radeon2525"},"content":" CommandResult commandResult \u003d new AddCommand(validPerson).execute(modelStub, commandHistory);","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"radeon2525"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, validPerson), commandResult.getFeedbackToUser());","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(validPerson), modelStub.personsAdded);","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(validPerson);","lastModifiedDate":"2018-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":57,"author":{"gitId":"radeon2525"},"content":" assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"radeon2525"},"content":" addCommand.execute(modelStub, commandHistory));","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":61,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":64,"author":{"gitId":"-"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2017-06-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":" AddCommand addAliceCommand \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":" AddCommand addBobCommand \u003d new AddCommand(bob);","lastModifiedDate":"2017-06-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":" AddCommand addAliceCommandCopy \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":82,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":86,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"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":" AddCommand addCommand \u003d new AddCommand(ALICE);","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" String expected \u003d AddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.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":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":95,"author":{"gitId":"radeon2525"},"content":" public void execute_nullModel_throwsNullPointerException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":96,"author":{"gitId":"radeon2525"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2024-03-16"},{"lineNumber":97,"author":{"gitId":"radeon2525"},"content":" AddCommand addCommand \u003d new AddCommand(validPerson);","lastModifiedDate":"2024-03-16"},{"lineNumber":98,"author":{"gitId":"radeon2525"},"content":" assertThrows(NullPointerException.class, () -\u003e addCommand.execute(null, commandHistory));","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":100,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":101,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":105,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"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 ReadOnlyUserPrefs getUserPrefs() {","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 GuiSettings getGuiSettings() {","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":"2018-11-27"},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":123,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":127,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":128,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":132,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":133,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":137,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":138,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27"},{"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 ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12"},{"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":"2018-08-06"},{"lineNumber":152,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06"},{"lineNumber":153,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-08"},{"lineNumber":158,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":161,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":162,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":163,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":166,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":167,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":168,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":171,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":172,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":173,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":175,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":176,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":177,"author":{"gitId":"radeon2525"},"content":" public boolean canUndoAddressBook() {","lastModifiedDate":"2024-03-18"},{"lineNumber":178,"author":{"gitId":"radeon2525"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-18"},{"lineNumber":179,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":180,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":181,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":182,"author":{"gitId":"radeon2525"},"content":" public boolean canRedoAddressBook() {","lastModifiedDate":"2024-03-18"},{"lineNumber":183,"author":{"gitId":"radeon2525"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-18"},{"lineNumber":184,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":185,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":186,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":187,"author":{"gitId":"radeon2525"},"content":" public void undoAddressBook() {","lastModifiedDate":"2024-03-18"},{"lineNumber":188,"author":{"gitId":"radeon2525"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-18"},{"lineNumber":189,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":190,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":191,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":192,"author":{"gitId":"radeon2525"},"content":" public void redoAddressBook() {","lastModifiedDate":"2024-03-18"},{"lineNumber":193,"author":{"gitId":"radeon2525"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-18"},{"lineNumber":194,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":195,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":196,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":197,"author":{"gitId":"radeon2525"},"content":" public void commitAddressBook() {","lastModifiedDate":"2024-03-18"},{"lineNumber":198,"author":{"gitId":"radeon2525"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-18"},{"lineNumber":199,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":200,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":201,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":203,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":204,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07"},{"lineNumber":205,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":206,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07"},{"lineNumber":207,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":209,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":210,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":211,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07"},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":214,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":215,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":216,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":217,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":218,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":219,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":221,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":222,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12"},{"lineNumber":223,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":224,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12"},{"lineNumber":225,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":227,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07"},{"lineNumber":228,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":229,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":230,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":231,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":233,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":234,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08"},{"lineNumber":235,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":236,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":237,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":239,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":240,"author":{"gitId":"radeon2525"},"content":" public void commitAddressBook() {","lastModifiedDate":"2024-03-18"},{"lineNumber":241,"author":{"gitId":"radeon2525"},"content":" // called by {@code AddCommand#execute()}","lastModifiedDate":"2024-03-18"},{"lineNumber":242,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":243,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":244,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":245,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04"},{"lineNumber":246,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04"},{"lineNumber":247,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":248,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":250,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12"}],"authorContributionMap":{"radeon2525":51,"-":199}},{"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":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class ClearCommandTest {","lastModifiedDate":"2017-06-08"},{"lineNumber":15,"author":{"gitId":"radeon2525"},"content":" private CommandHistory commandHistory \u003d new CommandHistory();","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public void execute_emptyAddressBook_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":21,"author":{"gitId":"radeon2525"},"content":" expectedModel.commitAddressBook();","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":23,"author":{"gitId":"radeon2525"},"content":" assertCommandSuccess(new ClearCommand(), model, commandHistory, ClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void execute_nonEmptyAddressBook_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" expectedModel.setAddressBook(new AddressBook());","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"radeon2525"},"content":" expectedModel.commitAddressBook();","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":33,"author":{"gitId":"radeon2525"},"content":" assertCommandSuccess(new ClearCommand(), model, commandHistory, ClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08"}],"authorContributionMap":{"radeon2525":6,"-":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":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05"},{"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":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":52,"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":53,"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":54,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05"},{"lineNumber":56,"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":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":76,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":78,"author":{"gitId":"radeon2525"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandHistory history,","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"radeon2525"},"content":" CommandResult expectedCommandResult, Model expectedModel) {","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"radeon2525"},"content":" CommandHistory expectedCommandHistory \u003d new CommandHistory(history);","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":82,"author":{"gitId":"radeon2525"},"content":" CommandResult result \u003d command.execute(actualModel, history);","lastModifiedDate":"2024-03-18"},{"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":"radeon2525"},"content":" assertEquals(expectedCommandHistory, history);","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":92,"author":{"gitId":"radeon2525"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandHistory, CommandResult, Model)}","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":95,"author":{"gitId":"radeon2525"},"content":" public static void assertCommandSuccess(Command command, Model actualModel,","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"radeon2525"},"content":" CommandHistory history, String expectedMessage, Model expectedModel) {","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":98,"author":{"gitId":"radeon2525"},"content":" assertCommandSuccess(command, actualModel, history, expectedCommandResult, expectedModel);","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":101,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25"},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":107,"author":{"gitId":"radeon2525"},"content":" public static void assertCommandFailure(Command command, Model actualModel,","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"radeon2525"},"content":" CommandHistory history, String expectedMessage) {","lastModifiedDate":"2024-03-18"},{"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":"radeon2525"},"content":" CommandHistory expectedCommandHistory \u003d new CommandHistory(history);","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"radeon2525"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel, history));","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":119,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":120,"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":121,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31"},{"lineNumber":122,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":126,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20"},{"lineNumber":128,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":133,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":134,"author":{"gitId":"radeon2525"},"content":" * Deletes the first person in {@code model}\u0027s filtered list from {@code model}\u0027s address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":135,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":136,"author":{"gitId":"radeon2525"},"content":" public static void deleteFirstPerson(Model model) {","lastModifiedDate":"2024-03-19"},{"lineNumber":137,"author":{"gitId":"radeon2525"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(0);","lastModifiedDate":"2024-03-19"},{"lineNumber":138,"author":{"gitId":"radeon2525"},"content":" model.deletePerson(firstPerson);","lastModifiedDate":"2024-03-19"},{"lineNumber":139,"author":{"gitId":"radeon2525"},"content":" model.commitAddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":140,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":141,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":142,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"radeon2525":23,"-":119}},{"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.showPersonAtIndex;","lastModifiedDate":"2018-01-31"},{"lineNumber":8,"author":{"gitId":"radeon2525"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"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":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":18,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"radeon2525"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-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 integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2018-01-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2017-06-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":31,"author":{"gitId":"radeon2525"},"content":" private CommandHistory commandHistory \u003d new CommandHistory();","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-06-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":38,"author":{"gitId":"radeon2525"},"content":" assertCommandFailure(deleteCommand, model, commandHistory, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"radeon2525"},"content":" public void execute_invalidIndex_throwsCommandException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"radeon2525"},"content":" // Create a model with an empty person list","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"radeon2525"},"content":" Model model \u003d new ModelManager(new AddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"radeon2525"},"content":" CommandHistory history \u003d new CommandHistory();","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"radeon2525"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(Index.fromZeroBased(0));","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"radeon2525"},"content":" // Execute command and assert CommandException is thrown","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"radeon2525"},"content":" assertThrows(CommandException.class, () -\u003e deleteCommand.execute(model, history));","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-06-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-06-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-06-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":63,"author":{"gitId":"radeon2525"},"content":" assertCommandFailure(deleteCommand, model, commandHistory, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" DeleteCommand deleteFirstCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" DeleteCommand deleteSecondCommand \u003d new DeleteCommand(INDEX_SECOND_PERSON);","lastModifiedDate":"2018-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" DeleteCommand deleteFirstCommandCopy \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","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":"2019-02-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(targetIndex);","lastModifiedDate":"2019-02-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" String expected \u003d DeleteCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertEquals(expected, deleteCommand.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-05"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05"},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":99,"author":{"gitId":"-"},"content":" private void showNoPerson(Model model) {","lastModifiedDate":"2017-06-05"},{"lineNumber":100,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2017-06-12"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertTrue(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2018-02-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":104,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"radeon2525":15,"-":89}},{"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.assertCommandFailure;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":14,"author":{"gitId":"radeon2525"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"radeon2525"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"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":"radeon2525"},"content":" private CommandHistory commandHistory \u003d new CommandHistory();","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":42,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":45,"author":{"gitId":"radeon2525"},"content":" assertCommandFailure(editCommand, model, commandHistory, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2017-05-18"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":57,"author":{"gitId":"radeon2525"},"content":" assertCommandFailure(editCommand, model, commandHistory, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":60,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"radeon2525"},"content":" * Updates {@code model}\u0027s filtered list to show only the person at the given {@code targetIndex} in the","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"radeon2525"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"radeon2525"},"content":" private void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"radeon2525"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"radeon2525"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"radeon2525"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"radeon2525"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"radeon2525"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18"},{"lineNumber":77,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":80,"author":{"gitId":"radeon2525"},"content":" assertCommandFailure(editCommand, model, commandHistory, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":90,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-05-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08"},{"lineNumber":95,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":97,"author":{"gitId":"radeon2525"},"content":" assertCommandFailure(editCommand, model, commandHistory, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2018-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2017-05-25"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2017-05-25"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2019-02-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08"}],"authorContributionMap":{"radeon2525":23,"-":112}},{"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":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-12-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.ExitCommand.MESSAGE_EXIT_ACKNOWLEDGEMENT;","lastModifiedDate":"2017-06-08"},{"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":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2018-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class ExitCommandTest {","lastModifiedDate":"2017-06-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-12-09"},{"lineNumber":15,"author":{"gitId":"radeon2525"},"content":" private CommandHistory commandHistory \u003d new CommandHistory();","lastModifiedDate":"2024-03-18"},{"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":"radeon2525"},"content":" assertCommandSuccess(new ExitCommand(), model, commandHistory, expectedCommandResult, expectedModel);","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08"}],"authorContributionMap":{"radeon2525":3,"-":19}},{"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":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"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":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08"},{"lineNumber":30,"author":{"gitId":"radeon2525"},"content":" private CommandHistory commandHistory \u003d new CommandHistory();","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"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":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2017-06-12"},{"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":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2017-06-27"},{"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":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"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":"-"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"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":"-"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void execute_zeroKeywords_noPersonFound() {","lastModifiedDate":"2017-08-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2017-06-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2018-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":65,"author":{"gitId":"radeon2525"},"content":" assertCommandSuccess(command, model, commandHistory, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08"},{"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 execute_multipleKeywords_multiplePersonsFound() {","lastModifiedDate":"2017-08-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2017-06-12"},{"lineNumber":72,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\"Kurz Elle Kunz\");","lastModifiedDate":"2018-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":75,"author":{"gitId":"radeon2525"},"content":" assertCommandSuccess(command, model, commandHistory, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" FindCommand findCommand \u003d new FindCommand(predicate);","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.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-06-12"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2018-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":90,"author":{"gitId":"-"},"content":" private NameContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2018-08-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":" return new NameContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2018-08-08"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":93,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"radeon2525":4,"-":89}},{"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":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.HelpCommand.SHOWING_HELP_MESSAGE;","lastModifiedDate":"2017-06-08"},{"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":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2018-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class HelpCommandTest {","lastModifiedDate":"2017-06-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":15,"author":{"gitId":"radeon2525"},"content":" private CommandHistory commandHistory \u003d new CommandHistory();","lastModifiedDate":"2024-03-18"},{"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":"radeon2525"},"content":" assertCommandSuccess(new HelpCommand(), model, commandHistory, expectedCommandResult, expectedModel);","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08"}],"authorContributionMap":{"radeon2525":3,"-":19}},{"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":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for ListCommand.","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class ListCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private Model expectedModel;","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"radeon2525"},"content":" private CommandHistory commandHistory \u003d new CommandHistory();","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":" public void execute_listIsNotFiltered_showsSameList() {","lastModifiedDate":"2017-08-15"},{"lineNumber":33,"author":{"gitId":"radeon2525"},"content":" assertCommandSuccess(new ListCommand(), model, commandHistory, ListCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":" public void execute_listIsFiltered_showsEverything() {","lastModifiedDate":"2017-08-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31"},{"lineNumber":39,"author":{"gitId":"radeon2525"},"content":" assertCommandSuccess(new ListCommand(), model, commandHistory, ListCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"radeon2525":4,"-":37}},{"path":"src/test/java/seedu/address/logic/commands/RedoCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"radeon2525"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"radeon2525"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"radeon2525"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"radeon2525"},"content":"import static seedu.address.logic.commands.CommandTestUtil.deleteFirstPerson;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"radeon2525"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"radeon2525"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"radeon2525"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"radeon2525"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"radeon2525"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"radeon2525"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"radeon2525"},"content":"public class RedoCommandTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"radeon2525"},"content":" private final Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"radeon2525"},"content":" private final Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"radeon2525"},"content":" private final CommandHistory commandHistory \u003d new CommandHistory();","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"radeon2525"},"content":" @BeforeEach","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"radeon2525"},"content":" public void setUp() {","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"radeon2525"},"content":" // set up of both models\u0027 undo/redo history","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"radeon2525"},"content":" deleteFirstPerson(model);","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"radeon2525"},"content":" deleteFirstPerson(model);","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"radeon2525"},"content":" model.undoAddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"radeon2525"},"content":" model.undoAddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"radeon2525"},"content":" deleteFirstPerson(expectedModel);","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"radeon2525"},"content":" deleteFirstPerson(expectedModel);","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"radeon2525"},"content":" expectedModel.undoAddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"radeon2525"},"content":" expectedModel.undoAddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"radeon2525"},"content":" public void execute() {","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"radeon2525"},"content":" // multiple redoable states in model","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"radeon2525"},"content":" expectedModel.redoAddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"radeon2525"},"content":" assertCommandSuccess(new RedoCommand(), model, commandHistory, RedoCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"radeon2525"},"content":" // single redoable state in model","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"radeon2525"},"content":" expectedModel.redoAddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"radeon2525"},"content":" assertCommandSuccess(new RedoCommand(), model, commandHistory, RedoCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"radeon2525"},"content":" // no redoable state in model","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"radeon2525"},"content":" assertCommandFailure(new RedoCommand(), model, commandHistory, RedoCommand.MESSAGE_FAILURE);","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"radeon2525"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"radeon2525":49}},{"path":"src/test/java/seedu/address/logic/commands/TagCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Derekljh"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"Derekljh"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"Derekljh"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"Derekljh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"Derekljh"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"Derekljh"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"Derekljh"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"Derekljh"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"radeon2525"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"Derekljh"},"content":"import java.util.Collection;","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"Derekljh"},"content":"import java.util.List;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"Derekljh"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"Derekljh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"Derekljh"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"Derekljh"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"Derekljh"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"Derekljh"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"Derekljh"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"Derekljh"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"Derekljh"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"Derekljh"},"content":" * Contains integration tests (interactions with the Model) and unit tests for TagCommand.","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"Derekljh"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"Derekljh"},"content":"class TagCommandTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"Derekljh"},"content":" private static final Tag TAG_OWES_MONEY \u003d new Tag(\"owesMoney\");","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"Derekljh"},"content":" private static final Tag TAG_FRIENDS \u003d new Tag(\"friends\");","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"Derekljh"},"content":" private static final Collection\u003cTag\u003e TAGS \u003d List.of(TAG_OWES_MONEY, TAG_FRIENDS);","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"Derekljh"},"content":" private Model model;","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"Derekljh"},"content":" @BeforeEach","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"Derekljh"},"content":" public void init() {","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"Derekljh"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"Derekljh"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"Derekljh"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"Derekljh"},"content":" assertThrows(NullPointerException.class, () -\u003e new TagCommand(null, null));","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"Derekljh"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"Derekljh"},"content":" public void execute_indexOutOfBounds_failure() {","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"Derekljh"},"content":" Index index \u003d Index.fromOneBased(999);","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"Derekljh"},"content":" TagCommand command \u003d new TagCommand(index, TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"Derekljh"},"content":" String expectedMessage \u003d Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"radeon2525"},"content":" assertCommandFailure(command, model, new CommandHistory(), expectedMessage);","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"radeon2525"},"content":" public void showTags_singleTag_returnsSingleTag() {","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"radeon2525"},"content":" // Create a collection containing a single tag","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"radeon2525"},"content":" Collection\u003cTag\u003e tags \u003d Arrays.asList(new Tag(\"friend\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"radeon2525"},"content":" // Call the showTags method","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"radeon2525"},"content":" String result \u003d TagCommand.showTags(tags);","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"radeon2525"},"content":" // Verify that the result is the same as the single tag","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"radeon2525"},"content":" assertEquals(\"friend\", result);","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"Derekljh"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"Derekljh"},"content":" public void equals() {","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"Derekljh"},"content":" final TagCommand standardCommand \u003d new TagCommand(INDEX_FIRST_PERSON, TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"Derekljh"},"content":" // same object -\u003e equal","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"Derekljh"},"content":" assertEquals(standardCommand, standardCommand);","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"Derekljh"},"content":" // same values -\u003e equal","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"Derekljh"},"content":" var commandWithSameValues \u003d new TagCommand(INDEX_FIRST_PERSON, TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"Derekljh"},"content":" assertEquals(standardCommand, commandWithSameValues);","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"Derekljh"},"content":" // tags in different order -\u003e equal","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"Derekljh"},"content":" var tagsInDifferentOrder \u003d List.of(TAG_FRIENDS, TAG_OWES_MONEY);","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"Derekljh"},"content":" assertEquals(standardCommand, new TagCommand(INDEX_FIRST_PERSON, tagsInDifferentOrder));","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"Derekljh"},"content":" // null -\u003e not equal","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"Derekljh"},"content":" assertNotEquals(null, standardCommand);","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"Derekljh"},"content":" // different index -\u003e not equal","lastModifiedDate":"2024-03-16"},{"lineNumber":87,"author":{"gitId":"Derekljh"},"content":" assertNotEquals(standardCommand, new TagCommand(INDEX_SECOND_PERSON, TAGS));","lastModifiedDate":"2024-03-16"},{"lineNumber":88,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":89,"author":{"gitId":"Derekljh"},"content":" // different tags -\u003e not equal","lastModifiedDate":"2024-03-16"},{"lineNumber":90,"author":{"gitId":"Derekljh"},"content":" assertNotEquals(standardCommand, new TagCommand(INDEX_FIRST_PERSON, List.of(TAG_OWES_MONEY)));","lastModifiedDate":"2024-03-16"},{"lineNumber":91,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":92,"author":{"gitId":"Derekljh"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"Derekljh":76,"radeon2525":16}},{"path":"src/test/java/seedu/address/logic/commands/UndoCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"radeon2525"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"radeon2525"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"radeon2525"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"radeon2525"},"content":"import static seedu.address.logic.commands.CommandTestUtil.deleteFirstPerson;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"radeon2525"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"radeon2525"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"radeon2525"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"radeon2525"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"radeon2525"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"radeon2525"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"radeon2525"},"content":"public class UndoCommandTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"radeon2525"},"content":" private final Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"radeon2525"},"content":" private final Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"radeon2525"},"content":" private final CommandHistory commandHistory \u003d new CommandHistory();","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"radeon2525"},"content":" @BeforeEach","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"radeon2525"},"content":" public void setUp() {","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"radeon2525"},"content":" // set up of models\u0027 undo/redo history","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"radeon2525"},"content":" deleteFirstPerson(model);","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"radeon2525"},"content":" deleteFirstPerson(model);","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"radeon2525"},"content":" deleteFirstPerson(expectedModel);","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"radeon2525"},"content":" deleteFirstPerson(expectedModel);","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"radeon2525"},"content":" public void execute() {","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"radeon2525"},"content":" // multiple undoable states in model","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"radeon2525"},"content":" expectedModel.undoAddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"radeon2525"},"content":" assertCommandSuccess(new UndoCommand(), model, commandHistory, UndoCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"radeon2525"},"content":" // single undoable state in model","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"radeon2525"},"content":" expectedModel.undoAddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"radeon2525"},"content":" assertCommandSuccess(new UndoCommand(), model, commandHistory, UndoCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"radeon2525"},"content":" // no undoable states in model","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"radeon2525"},"content":" assertCommandFailure(new UndoCommand(), model, commandHistory, UndoCommand.MESSAGE_FAILURE);","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"radeon2525"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"radeon2525":45}},{"path":"src/test/java/seedu/address/logic/commands/UntagCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"miffi"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"miffi"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"miffi"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"miffi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"miffi"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"miffi"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"miffi"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"miffi"},"content":"import java.util.Collection;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"miffi"},"content":"import java.util.List;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"miffi"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"miffi"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"miffi"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.CommandHistory;","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"miffi"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"miffi"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"miffi"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"miffi"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"miffi"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"miffi"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"miffi"},"content":" * Contains integration tests (interactions with the Model) and unit tests for UntagCommand.","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"miffi"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"miffi"},"content":"class UntagCommandTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"miffi"},"content":" private static final Tag TAG_OWES_MONEY \u003d new Tag(\"owesMoney\");","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"miffi"},"content":" private static final Tag TAG_FRIENDS \u003d new Tag(\"friends\");","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"miffi"},"content":" private static final Collection\u003cTag\u003e TAGS \u003d List.of(TAG_OWES_MONEY, TAG_FRIENDS);","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"miffi"},"content":" private Model model;","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"miffi"},"content":" @BeforeEach","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"miffi"},"content":" public void init() {","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"miffi"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"miffi"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"miffi"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"miffi"},"content":" public void execute_tagMissing_failure() {","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"miffi"},"content":" var index \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"miffi"},"content":" var personName \u003d model.getFilteredPersonList().get(index.getZeroBased()).getName();","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"miffi"},"content":" var command \u003d new UntagCommand(index, TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"miffi"},"content":" var expectedMessage \u003d String.format(","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"miffi"},"content":" Messages.MESSAGE_MISSING_TAG,","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"miffi"},"content":" personName,","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"miffi"},"content":" \"owesMoney\");","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"radeon2525"},"content":" assertCommandFailure(command, model, new CommandHistory(), expectedMessage);","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"miffi"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"miffi"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"miffi"},"content":" public void execute_indexOutOfBounds_failure() {","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"miffi"},"content":" var index \u003d Index.fromOneBased(999);","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"miffi"},"content":" var command \u003d new UntagCommand(index, TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"miffi"},"content":" var expectedMessage \u003d Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"radeon2525"},"content":" assertCommandFailure(command, model, new CommandHistory(), expectedMessage);","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"miffi"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"miffi"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"miffi"},"content":" public void equals() {","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"miffi"},"content":" final UntagCommand standardCommand \u003d new UntagCommand(INDEX_FIRST_PERSON, TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"miffi"},"content":" // same object -\u003e equal","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"miffi"},"content":" assertEquals(standardCommand, standardCommand);","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"miffi"},"content":" // same values -\u003e equal","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"miffi"},"content":" var commandWithSameValues \u003d new UntagCommand(INDEX_FIRST_PERSON, TAGS);","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"miffi"},"content":" assertEquals(standardCommand, commandWithSameValues);","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"miffi"},"content":" // tags in different order -\u003e equal","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"miffi"},"content":" var tagsInDifferentOrder \u003d List.of(TAG_FRIENDS, TAG_OWES_MONEY);","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"miffi"},"content":" assertEquals(standardCommand, new UntagCommand(INDEX_FIRST_PERSON, tagsInDifferentOrder));","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"miffi"},"content":" // null -\u003e not equal","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"miffi"},"content":" assertNotEquals(null, standardCommand);","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"miffi"},"content":" // different types -\u003e not equal","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"miffi"},"content":" assertNotEquals(standardCommand, new ClearCommand());","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"miffi"},"content":" // different index -\u003e not equal","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"miffi"},"content":" assertNotEquals(standardCommand, new UntagCommand(INDEX_SECOND_PERSON, TAGS));","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"miffi"},"content":" // different tags -\u003e not equal","lastModifiedDate":"2024-03-16"},{"lineNumber":87,"author":{"gitId":"miffi"},"content":" assertNotEquals(standardCommand, new UntagCommand(INDEX_FIRST_PERSON, List.of(TAG_OWES_MONEY)));","lastModifiedDate":"2024-03-16"},{"lineNumber":88,"author":{"gitId":"miffi"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":89,"author":{"gitId":"miffi"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"radeon2525":3,"miffi":86}},{"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":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.commands.RedoCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"Derekljh"},"content":"import seedu.address.logic.commands.TagCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"radeon2525"},"content":"import seedu.address.logic.commands.UndoCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"miffi"},"content":"import seedu.address.logic.commands.UntagCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27"},{"lineNumber":33,"author":{"gitId":"Derekljh"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":42,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"radeon2525"},"content":" public void parseCommand_undoCommand_returnsUndoCommand() throws ParseException {","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"radeon2525"},"content":" Command command \u003d parser.parseCommand(\"undo\");","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"radeon2525"},"content":" assertTrue(command instanceof UndoCommand);","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"radeon2525"},"content":" public void parseCommand_redoCommand_returnsRedoCommand() throws ParseException {","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"radeon2525"},"content":" Command command \u003d parser.parseCommand(\"redo\");","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"radeon2525"},"content":" assertTrue(command instanceof RedoCommand);","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27"},{"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-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2017-06-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2017-06-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"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":"Derekljh"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":110,"author":{"gitId":"Derekljh"},"content":" public void parseCommand_tag() throws Exception {","lastModifiedDate":"2024-03-16"},{"lineNumber":111,"author":{"gitId":"Derekljh"},"content":" TagCommand expectedCommand \u003d new TagCommand(INDEX_FIRST_PERSON, List.of(new Tag(\"alpha\"), new Tag(\"beta\")));","lastModifiedDate":"2024-03-16"},{"lineNumber":112,"author":{"gitId":"Derekljh"},"content":" assertEquals(expectedCommand, parser.parseCommand(TagCommand.COMMAND_WORD","lastModifiedDate":"2024-03-16"},{"lineNumber":113,"author":{"gitId":"Derekljh"},"content":" + \" \"","lastModifiedDate":"2024-03-16"},{"lineNumber":114,"author":{"gitId":"Derekljh"},"content":" + INDEX_FIRST_PERSON.getOneBased()","lastModifiedDate":"2024-03-16"},{"lineNumber":115,"author":{"gitId":"The-Dudeski"},"content":" + \" tag:alpha tag:beta\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":116,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":117,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":118,"author":{"gitId":"miffi"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":119,"author":{"gitId":"miffi"},"content":" public void parseCommand_untag() throws Exception {","lastModifiedDate":"2024-03-16"},{"lineNumber":120,"author":{"gitId":"miffi"},"content":" var index \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-16"},{"lineNumber":121,"author":{"gitId":"miffi"},"content":" var expectedCommand \u003d new UntagCommand(index, List.of(new Tag(\"alpha\"), new Tag(\"beta\")));","lastModifiedDate":"2024-03-16"},{"lineNumber":122,"author":{"gitId":"miffi"},"content":" assertEquals(expectedCommand, parser.parseCommand(UntagCommand.COMMAND_WORD","lastModifiedDate":"2024-03-16"},{"lineNumber":123,"author":{"gitId":"miffi"},"content":" + \" \"","lastModifiedDate":"2024-03-16"},{"lineNumber":124,"author":{"gitId":"miffi"},"content":" + INDEX_FIRST_PERSON.getOneBased()","lastModifiedDate":"2024-03-16"},{"lineNumber":125,"author":{"gitId":"The-Dudeski"},"content":" + \" tag:alpha tag:beta\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":126,"author":{"gitId":"miffi"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":127,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":135,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":138,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"The-Dudeski":2,"Derekljh":10,"radeon2525":15,"miffi":10,"-":101}},{"path":"src/test/java/seedu/address/logic/parser/TagCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Derekljh"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"Derekljh"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"Derekljh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"Derekljh"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"Derekljh"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"Derekljh"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"Derekljh"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"Derekljh"},"content":"import java.util.Collection;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"Derekljh"},"content":"import java.util.List;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"Derekljh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"Derekljh"},"content":"import seedu.address.logic.commands.TagCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"Derekljh"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"Derekljh"},"content":"class TagCommandParserTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"Derekljh"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"Derekljh"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, TagCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"Derekljh"},"content":" private static final Tag TAG1 \u003d new Tag(\"friend\");","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"Derekljh"},"content":" private static final Tag TAG2 \u003d new Tag(\"husband\");","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"Derekljh"},"content":" private static final Collection\u003cTag\u003e TAGS \u003d List.of(TAG1, TAG2);","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"Derekljh"},"content":" private final TagCommandParser parser \u003d new TagCommandParser();","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"Derekljh"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"Derekljh"},"content":" public void parse_validArgs_returnsTagCommand() {","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"Derekljh"},"content":" var index \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"Derekljh"},"content":" assertParseSuccess(parser, index.getOneBased() + TAG_DESC_FRIEND + TAG_DESC_HUSBAND,","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"Derekljh"},"content":" new TagCommand(index, TAGS));","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"Derekljh"},"content":" // order should not matter","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"Derekljh"},"content":" assertParseSuccess(parser, index.getOneBased() + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"Derekljh"},"content":" new TagCommand(index, TAGS));","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"Derekljh"},"content":" // one tag","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"Derekljh"},"content":" assertParseSuccess(parser, index.getOneBased() + TAG_DESC_HUSBAND,","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"Derekljh"},"content":" new TagCommand(index, List.of(TAG2)));","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"Derekljh"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"Derekljh"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"Derekljh"},"content":" // no tags given","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"Derekljh"},"content":" assertParseFailure(parser, \"1\",","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"Derekljh"},"content":" MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"Derekljh"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"Derekljh"},"content":" // no index given","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"Derekljh"},"content":" assertParseFailure(parser, \"t/friend\",","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"Derekljh"},"content":" MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"Derekljh"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"Derekljh"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"Derekljh":54}},{"path":"src/test/java/seedu/address/logic/parser/UntagCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"miffi"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"miffi"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"miffi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"miffi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"miffi"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"miffi"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"miffi"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"miffi"},"content":"import java.util.Collection;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"miffi"},"content":"import java.util.List;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"miffi"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"miffi"},"content":"import seedu.address.logic.commands.UntagCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"miffi"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"miffi"},"content":"class UntagCommandParserTest {","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"miffi"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"miffi"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, UntagCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"miffi"},"content":" private static final Tag TAG1 \u003d new Tag(\"friend\");","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"miffi"},"content":" private static final Tag TAG2 \u003d new Tag(\"husband\");","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"miffi"},"content":" private static final Collection\u003cTag\u003e TAGS \u003d List.of(TAG1, TAG2);","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"miffi"},"content":" private final UntagCommandParser parser \u003d new UntagCommandParser();","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"miffi"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"miffi"},"content":" public void parse_validArgs_returnsUntagCommand() {","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"miffi"},"content":" var index \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"miffi"},"content":" assertParseSuccess(parser, index.getOneBased() + TAG_DESC_FRIEND + TAG_DESC_HUSBAND,","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"miffi"},"content":" new UntagCommand(index, TAGS));","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"miffi"},"content":" // order should not matter","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"miffi"},"content":" assertParseSuccess(parser, index.getOneBased() + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"miffi"},"content":" new UntagCommand(index, TAGS));","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"miffi"},"content":" // one tag","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"miffi"},"content":" assertParseSuccess(parser, index.getOneBased() + TAG_DESC_HUSBAND,","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"miffi"},"content":" new UntagCommand(index, List.of(TAG2)));","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"miffi"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"miffi"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"miffi"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"miffi"},"content":" // no tags given","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"miffi"},"content":" assertParseFailure(parser, \"1\",","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"miffi"},"content":" MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"miffi"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"miffi"},"content":" // no index given","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"miffi"},"content":" assertParseFailure(parser, \"t/friend\",","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"miffi"},"content":" MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"miffi"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"miffi"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"miffi":54}},{"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":"-"},"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":"radeon2525"},"content":"import javafx.beans.InvalidationListener;","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"radeon2525"},"content":"import javafx.beans.Observable;","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-12-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-12-24"},{"lineNumber":23,"author":{"gitId":"radeon2525"},"content":"import seedu.address.commons.util.InvalidationListenerManager;","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2018-08-07"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-04-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":28,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class AddressBookTest {","lastModifiedDate":"2016-12-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final AddressBook addressBook \u003d new AddressBook();","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 constructor() {","lastModifiedDate":"2016-12-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), addressBook.getPersonList());","lastModifiedDate":"2016-12-24"},{"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_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.resetData(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":43,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"radeon2525"},"content":" public void removeListener_success() {","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"radeon2525"},"content":" AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"radeon2525"},"content":" InvalidationListenerManager manager \u003d addressBook.invalidationListenerManager;","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"radeon2525"},"content":" // Create a listener","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"radeon2525"},"content":" InvalidationListener listener \u003d new InvalidationListener() {","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"radeon2525"},"content":" public void invalidated(Observable observable) {","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"radeon2525"},"content":" // Do nothing","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"radeon2525"},"content":" };","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"radeon2525"},"content":" // Remove the listener","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"radeon2525"},"content":" addressBook.removeListener(listener);","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"radeon2525"},"content":" // Ensure the listener is removed","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"radeon2525"},"content":" assertFalse(manager.listeners.contains(listener));","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"radeon2525"},"content":" public void addListener_success() {","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"radeon2525"},"content":" AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"radeon2525"},"content":" InvalidationListenerManager manager \u003d addressBook.invalidationListenerManager;","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"radeon2525"},"content":" // Create a listener","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"radeon2525"},"content":" TestInvalidationListener listener \u003d new TestInvalidationListener();","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"radeon2525"},"content":" // Add the listener","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"radeon2525"},"content":" addressBook.addListener(listener);","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"radeon2525"},"content":" // Trigger an invalidation event","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"radeon2525"},"content":" addressBook.indicateModified();","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"radeon2525"},"content":" // Ensure the listener is notified","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"radeon2525"},"content":" assertTrue(listener.isInvalidated());","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"radeon2525"},"content":" // Define a test InvalidationListener implementation","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"radeon2525"},"content":" private static class TestInvalidationListener implements InvalidationListener {","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"radeon2525"},"content":" private boolean invalidated \u003d false;","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"radeon2525"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"radeon2525"},"content":" public void invalidated(Observable observable) {","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"radeon2525"},"content":" invalidated \u003d true;","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"radeon2525"},"content":" public boolean isInvalidated() {","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"radeon2525"},"content":" return invalidated;","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public void resetData_withValidReadOnlyAddressBook_replacesData() {","lastModifiedDate":"2016-12-24"},{"lineNumber":97,"author":{"gitId":"-"},"content":" AddressBook newData \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" addressBook.resetData(newData);","lastModifiedDate":"2016-12-24"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertEquals(newData, addressBook);","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":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void resetData_withDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-07"},{"lineNumber":104,"author":{"gitId":"-"},"content":" // Two persons with the same identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2018-04-19"},{"lineNumber":106,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-04-19"},{"lineNumber":107,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e newPersons \u003d Arrays.asList(ALICE, editedAlice);","lastModifiedDate":"2018-04-19"},{"lineNumber":108,"author":{"gitId":"-"},"content":" AddressBookStub newData \u003d new AddressBookStub(newPersons);","lastModifiedDate":"2018-03-29"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e addressBook.resetData(newData));","lastModifiedDate":"2019-03-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06"},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasPerson(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertFalse(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":124,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":125,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":130,"author":{"gitId":"-"},"content":" public void hasPerson_personWithSameIdentityFieldsInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":131,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":132,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2018-08-06"},{"lineNumber":133,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-06"},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(editedAlice));","lastModifiedDate":"2018-08-06"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":138,"author":{"gitId":"-"},"content":" public void getPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e addressBook.getPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":" String expected \u003d AddressBook.class.getCanonicalName() + \"{persons\u003d\" + addressBook.getPersonList() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertEquals(expected, addressBook.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-24"},{"lineNumber":149,"author":{"gitId":"-"},"content":" * A stub ReadOnlyAddressBook whose persons list can violate interface constraints.","lastModifiedDate":"2018-03-29"},{"lineNumber":150,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-24"},{"lineNumber":151,"author":{"gitId":"-"},"content":" private static class AddressBookStub implements ReadOnlyAddressBook {","lastModifiedDate":"2016-12-24"},{"lineNumber":152,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e persons \u003d FXCollections.observableArrayList();","lastModifiedDate":"2018-01-10"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":154,"author":{"gitId":"-"},"content":" AddressBookStub(Collection\u003cPerson\u003e persons) {","lastModifiedDate":"2018-03-29"},{"lineNumber":155,"author":{"gitId":"-"},"content":" this.persons.setAll(persons);","lastModifiedDate":"2016-12-24"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":158,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-24"},{"lineNumber":159,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":160,"author":{"gitId":"-"},"content":" return persons;","lastModifiedDate":"2016-12-24"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":164,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-24"}],"authorContributionMap":{"radeon2525":56,"-":108}},{"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":"radeon2525"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-19"},{"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.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"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.BENSON;","lastModifiedDate":"2017-07-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-31"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"radeon2525"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.testutil.AddressBookBuilder;","lastModifiedDate":"2017-05-31"},{"lineNumber":22,"author":{"gitId":"radeon2525"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"radeon2525"},"content":"import seedu.address.testutil.TypicalPersons;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class ModelManagerTest {","lastModifiedDate":"2017-05-31"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2018-08-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertEquals(new GuiSettings(), modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertEquals(new AddressBook(), new AddressBook(modelManager.getAddressBook()));","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void setUserPrefs_nullUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setUserPrefs(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"radeon2525"},"content":" public void setPerson_personInAddressBook_success() {","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"radeon2525"},"content":" // Create initial state","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"radeon2525"},"content":" ReadOnlyAddressBook initialAddressBook \u003d modelManager.getAddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"radeon2525"},"content":" ReadOnlyUserPrefs initialUserPrefs \u003d modelManager.getUserPrefs();","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"radeon2525"},"content":" // Add a valid person to the address book","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"radeon2525"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"radeon2525"},"content":" modelManager.addPerson(validPerson);","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"radeon2525"},"content":" // Create an edited version of the person","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"radeon2525"},"content":" Person editedPerson \u003d new PersonBuilder(validPerson).withName(\"New Name\").build();","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"radeon2525"},"content":" // Set edited person in the model","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"radeon2525"},"content":" modelManager.setPerson(validPerson, editedPerson);","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"radeon2525"},"content":" // Check if the edited person is in the filteredPersons list","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"radeon2525"},"content":" assertEquals(editedPerson, modelManager.getFilteredPersonList().get(0));","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"radeon2525"},"content":" assertNotEquals(validPerson, modelManager.getFilteredPersonList().get(0));","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"radeon2525"},"content":" // Ensure that the address book\u0027s state was not changed","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"radeon2525"},"content":" assertEquals(initialAddressBook, modelManager.getAddressBook());","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"radeon2525"},"content":" // Ensure that the user prefs remain unchanged","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"radeon2525"},"content":" assertEquals(initialUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void setUserPrefs_validUserPrefs_copiesUserPrefs() {","lastModifiedDate":"2018-12-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"address/book/file/path\"));","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1, 2, 3, 4));","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" modelManager.setUserPrefs(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // Modifying userPrefs should not modify modelManager\u0027s userPrefs","lastModifiedDate":"2018-12-06"},{"lineNumber":77,"author":{"gitId":"-"},"content":" UserPrefs oldUserPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":78,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"new/address/book/file/path\"));","lastModifiedDate":"2018-12-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertEquals(oldUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setGuiSettings(null));","lastModifiedDate":"2019-03-23"},{"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 setGuiSettings_validGuiSettings_setsGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1, 2, 3, 4);","lastModifiedDate":"2018-11-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" modelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertEquals(guiSettings, modelManager.getGuiSettings());","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":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setAddressBookFilePath(null));","lastModifiedDate":"2019-03-23"},{"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-11-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_validPath_setsAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":" Path path \u003d Paths.get(\"address/book/file/path\");","lastModifiedDate":"2018-11-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" modelManager.setAddressBookFilePath(path);","lastModifiedDate":"2018-11-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertEquals(path, modelManager.getAddressBookFilePath());","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":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasPerson(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertFalse(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":118,"author":{"gitId":"-"},"content":" modelManager.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertTrue(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":122,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":124,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":128,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":129,"author":{"gitId":"radeon2525"},"content":" public void constructor_validArguments_success() {","lastModifiedDate":"2024-03-19"},{"lineNumber":130,"author":{"gitId":"radeon2525"},"content":" // Create a ReadOnlyAddressBook with typical persons","lastModifiedDate":"2024-03-19"},{"lineNumber":131,"author":{"gitId":"radeon2525"},"content":" ReadOnlyAddressBook addressBook \u003d TypicalPersons.getTypicalAddressBook();","lastModifiedDate":"2024-03-19"},{"lineNumber":132,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":133,"author":{"gitId":"radeon2525"},"content":" // Create a ReadOnlyUserPrefs with typical preferences","lastModifiedDate":"2024-03-19"},{"lineNumber":134,"author":{"gitId":"radeon2525"},"content":" ReadOnlyUserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2024-03-19"},{"lineNumber":135,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":136,"author":{"gitId":"radeon2525"},"content":" // Create a ModelManager instance using the constructor with arguments","lastModifiedDate":"2024-03-19"},{"lineNumber":137,"author":{"gitId":"radeon2525"},"content":" ModelManager modelManager \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2024-03-19"},{"lineNumber":138,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":139,"author":{"gitId":"radeon2525"},"content":" // Verify that the versionedAddressBook is correctly initialized with the data from the ReadOnlyAddressBook","lastModifiedDate":"2024-03-19"},{"lineNumber":140,"author":{"gitId":"radeon2525"},"content":" assertEquals(addressBook, modelManager.getAddressBook());","lastModifiedDate":"2024-03-19"},{"lineNumber":141,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":142,"author":{"gitId":"radeon2525"},"content":" // Verify that the userPrefs is correctly initialized with the data from the ReadOnlyUserPrefs","lastModifiedDate":"2024-03-19"},{"lineNumber":143,"author":{"gitId":"radeon2525"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":144,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":145,"author":{"gitId":"radeon2525"},"content":" assertTrue(modelManager.getFilteredPersonList().containsAll(addressBook.getPersonList()));","lastModifiedDate":"2024-03-19"},{"lineNumber":146,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":147,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":148,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":149,"author":{"gitId":"radeon2525"},"content":" public void setUserPrefs_validUserPrefs_success() {","lastModifiedDate":"2024-03-19"},{"lineNumber":150,"author":{"gitId":"radeon2525"},"content":" // Create initial user preferences","lastModifiedDate":"2024-03-19"},{"lineNumber":151,"author":{"gitId":"radeon2525"},"content":" UserPrefs initialUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2024-03-19"},{"lineNumber":152,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":153,"author":{"gitId":"radeon2525"},"content":" // Create a new set of user preferences","lastModifiedDate":"2024-03-19"},{"lineNumber":154,"author":{"gitId":"radeon2525"},"content":" UserPrefs newUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2024-03-19"},{"lineNumber":155,"author":{"gitId":"radeon2525"},"content":" GuiSettings defaultGuiSettings \u003d new GuiSettings(800, 600, 0, 0);","lastModifiedDate":"2024-03-19"},{"lineNumber":156,"author":{"gitId":"radeon2525"},"content":" newUserPrefs.setGuiSettings(defaultGuiSettings);","lastModifiedDate":"2024-03-19"},{"lineNumber":157,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":158,"author":{"gitId":"radeon2525"},"content":" // Create a ModelManager instance","lastModifiedDate":"2024-03-19"},{"lineNumber":159,"author":{"gitId":"radeon2525"},"content":" ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2024-03-19"},{"lineNumber":160,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":161,"author":{"gitId":"radeon2525"},"content":" // Set the user preferences","lastModifiedDate":"2024-03-19"},{"lineNumber":162,"author":{"gitId":"radeon2525"},"content":" modelManager.setUserPrefs(newUserPrefs);","lastModifiedDate":"2024-03-19"},{"lineNumber":163,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":164,"author":{"gitId":"radeon2525"},"content":" // Verify that the user preferences in the ModelManager are updated","lastModifiedDate":"2024-03-19"},{"lineNumber":165,"author":{"gitId":"radeon2525"},"content":" ReadOnlyUserPrefs retrievedUserPrefs \u003d modelManager.getUserPrefs();","lastModifiedDate":"2024-03-19"},{"lineNumber":166,"author":{"gitId":"radeon2525"},"content":" assertEquals(newUserPrefs, retrievedUserPrefs);","lastModifiedDate":"2024-03-19"},{"lineNumber":167,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":168,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":169,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31"},{"lineNumber":170,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":171,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBookBuilder().withPerson(ALICE).withPerson(BENSON).build();","lastModifiedDate":"2017-07-19"},{"lineNumber":172,"author":{"gitId":"-"},"content":" AddressBook differentAddressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31"},{"lineNumber":173,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":175,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":176,"author":{"gitId":"-"},"content":" modelManager \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2018-08-06"},{"lineNumber":177,"author":{"gitId":"-"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2017-05-31"},{"lineNumber":178,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":180,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":181,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":183,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":184,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":186,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":187,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":189,"author":{"gitId":"-"},"content":" // different addressBook -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":190,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(differentAddressBook, userPrefs)));","lastModifiedDate":"2017-05-31"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":192,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":193,"author":{"gitId":"-"},"content":" String[] keywords \u003d ALICE.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-19"},{"lineNumber":194,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(keywords)));","lastModifiedDate":"2017-06-12"},{"lineNumber":195,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, userPrefs)));","lastModifiedDate":"2017-05-31"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":197,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2017-08-05"},{"lineNumber":198,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":200,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27"},{"lineNumber":201,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":202,"author":{"gitId":"-"},"content":" differentUserPrefs.setAddressBookFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2018-08-09"},{"lineNumber":203,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, differentUserPrefs)));","lastModifiedDate":"2018-11-27"},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":205,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31"}],"authorContributionMap":{"radeon2525":73,"-":132}},{"path":"src/test/java/seedu/address/model/VersionedAddressBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"radeon2525"},"content":"package seedu.address.model;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"radeon2525"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"radeon2525"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"radeon2525"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"radeon2525"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"radeon2525"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"radeon2525"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"radeon2525"},"content":"import static seedu.address.testutil.TypicalPersons.CARL;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"radeon2525"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"radeon2525"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"radeon2525"},"content":"import java.util.List;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"radeon2525"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"radeon2525"},"content":"import seedu.address.testutil.AddressBookBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"radeon2525"},"content":"public class VersionedAddressBookTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"radeon2525"},"content":" private final ReadOnlyAddressBook addressBookWithAmy \u003d new AddressBookBuilder().withPerson(AMY).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"radeon2525"},"content":" private final ReadOnlyAddressBook addressBookWithBob \u003d new AddressBookBuilder().withPerson(BOB).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"radeon2525"},"content":" private final ReadOnlyAddressBook addressBookWithCarl \u003d new AddressBookBuilder().withPerson(CARL).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"radeon2525"},"content":" private final ReadOnlyAddressBook emptyAddressBook \u003d new AddressBookBuilder().build();","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"radeon2525"},"content":" public void commit_singleAddressBook_noStatesRemovedCurrentStateSaved() {","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(emptyAddressBook);","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.commit();","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"radeon2525"},"content":" assertAddressBookListStatus(versionedAddressBook,","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"radeon2525"},"content":" Collections.singletonList(emptyAddressBook),","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"radeon2525"},"content":" emptyAddressBook,","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"radeon2525"},"content":" Collections.emptyList());","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"radeon2525"},"content":" public void equals_sameInstance_returnsTrue() {","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d new VersionedAddressBook(new AddressBook());","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"radeon2525"},"content":" assertTrue(versionedAddressBook.equals(versionedAddressBook));","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"radeon2525"},"content":" public void equals_differentClass_returnsFalse() {","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d new VersionedAddressBook(new AddressBook());","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"radeon2525"},"content":" assertFalse(versionedAddressBook.equals(new Object()));","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"radeon2525"},"content":" public void equals_null_returnsFalse() {","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d new VersionedAddressBook(new AddressBook());","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"radeon2525"},"content":" assertFalse(versionedAddressBook.equals(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"radeon2525"},"content":" public void equals_differentState_returnsFalse() {","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook1 \u003d new VersionedAddressBook(new AddressBook());","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook2 \u003d new VersionedAddressBook(new AddressBook());","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook2.commit();","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"radeon2525"},"content":" assertFalse(versionedAddressBook1.equals(versionedAddressBook2));","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"radeon2525"},"content":" public void equals_sameState_returnsTrue() {","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook1 \u003d new VersionedAddressBook(new AddressBook());","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook2 \u003d new VersionedAddressBook(new AddressBook());","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"radeon2525"},"content":" assertTrue(versionedAddressBook1.equals(versionedAddressBook2));","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"radeon2525"},"content":" public void commit_multipleAddressBookPointerAtEndOfStateList_noStatesRemovedCurrentStateSaved() {","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"radeon2525"},"content":" emptyAddressBook, addressBookWithAmy, addressBookWithBob);","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.commit();","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"radeon2525"},"content":" assertAddressBookListStatus(versionedAddressBook,","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"radeon2525"},"content":" Arrays.asList(emptyAddressBook, addressBookWithAmy, addressBookWithBob),","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"radeon2525"},"content":" addressBookWithBob,","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"radeon2525"},"content":" Collections.emptyList());","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"radeon2525"},"content":" public void commit_multipleAddressBookPointerNotAtEndOfStateList_statesAfterPointerRemovedCurrentStateSaved() {","lastModifiedDate":"2024-03-19"},{"lineNumber":84,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"radeon2525"},"content":" emptyAddressBook, addressBookWithAmy, addressBookWithBob);","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"radeon2525"},"content":" shiftCurrentStatePointerLeftwards(versionedAddressBook, 2);","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.commit();","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"radeon2525"},"content":" assertAddressBookListStatus(versionedAddressBook,","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"radeon2525"},"content":" Collections.singletonList(emptyAddressBook),","lastModifiedDate":"2024-03-19"},{"lineNumber":91,"author":{"gitId":"radeon2525"},"content":" emptyAddressBook,","lastModifiedDate":"2024-03-19"},{"lineNumber":92,"author":{"gitId":"radeon2525"},"content":" Collections.emptyList());","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":95,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"radeon2525"},"content":" public void canUndo_multipleAddressBookPointerAtEndOfStateList_returnsTrue() {","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"radeon2525"},"content":" emptyAddressBook, addressBookWithAmy, addressBookWithBob);","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"radeon2525"},"content":" assertTrue(versionedAddressBook.canUndo());","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"radeon2525"},"content":" public void canUndo_multipleAddressBookPointerAtStartOfStateList_returnsTrue() {","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(","lastModifiedDate":"2024-03-19"},{"lineNumber":106,"author":{"gitId":"radeon2525"},"content":" emptyAddressBook, addressBookWithAmy, addressBookWithBob);","lastModifiedDate":"2024-03-19"},{"lineNumber":107,"author":{"gitId":"radeon2525"},"content":" shiftCurrentStatePointerLeftwards(versionedAddressBook, 1);","lastModifiedDate":"2024-03-19"},{"lineNumber":108,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"radeon2525"},"content":" assertTrue(versionedAddressBook.canUndo());","lastModifiedDate":"2024-03-19"},{"lineNumber":110,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":111,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":112,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":113,"author":{"gitId":"radeon2525"},"content":" public void canUndo_singleAddressBook_returnsFalse() {","lastModifiedDate":"2024-03-19"},{"lineNumber":114,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(emptyAddressBook);","lastModifiedDate":"2024-03-19"},{"lineNumber":115,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":116,"author":{"gitId":"radeon2525"},"content":" assertFalse(versionedAddressBook.canUndo());","lastModifiedDate":"2024-03-19"},{"lineNumber":117,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":118,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":119,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":120,"author":{"gitId":"radeon2525"},"content":" public void canUndo_multipleAddressBookPointerAtStartOfStateList_returnsFalse() {","lastModifiedDate":"2024-03-19"},{"lineNumber":121,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(","lastModifiedDate":"2024-03-19"},{"lineNumber":122,"author":{"gitId":"radeon2525"},"content":" emptyAddressBook, addressBookWithAmy, addressBookWithBob);","lastModifiedDate":"2024-03-19"},{"lineNumber":123,"author":{"gitId":"radeon2525"},"content":" shiftCurrentStatePointerLeftwards(versionedAddressBook, 2);","lastModifiedDate":"2024-03-19"},{"lineNumber":124,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":125,"author":{"gitId":"radeon2525"},"content":" assertFalse(versionedAddressBook.canUndo());","lastModifiedDate":"2024-03-19"},{"lineNumber":126,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":127,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":128,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":129,"author":{"gitId":"radeon2525"},"content":" public void canRedo_multipleAddressBookPointerNotAtEndOfStateList_returnsTrue() {","lastModifiedDate":"2024-03-19"},{"lineNumber":130,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(","lastModifiedDate":"2024-03-19"},{"lineNumber":131,"author":{"gitId":"radeon2525"},"content":" emptyAddressBook, addressBookWithAmy, addressBookWithBob);","lastModifiedDate":"2024-03-19"},{"lineNumber":132,"author":{"gitId":"radeon2525"},"content":" shiftCurrentStatePointerLeftwards(versionedAddressBook, 1);","lastModifiedDate":"2024-03-19"},{"lineNumber":133,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":134,"author":{"gitId":"radeon2525"},"content":" assertTrue(versionedAddressBook.canRedo());","lastModifiedDate":"2024-03-19"},{"lineNumber":135,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":136,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":137,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":138,"author":{"gitId":"radeon2525"},"content":" public void canRedo_multipleAddressBookPointerAtStartOfStateList_returnsTrue() {","lastModifiedDate":"2024-03-19"},{"lineNumber":139,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(","lastModifiedDate":"2024-03-19"},{"lineNumber":140,"author":{"gitId":"radeon2525"},"content":" emptyAddressBook, addressBookWithAmy, addressBookWithBob);","lastModifiedDate":"2024-03-19"},{"lineNumber":141,"author":{"gitId":"radeon2525"},"content":" shiftCurrentStatePointerLeftwards(versionedAddressBook, 2);","lastModifiedDate":"2024-03-19"},{"lineNumber":142,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":143,"author":{"gitId":"radeon2525"},"content":" assertTrue(versionedAddressBook.canRedo());","lastModifiedDate":"2024-03-19"},{"lineNumber":144,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":145,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":146,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":147,"author":{"gitId":"radeon2525"},"content":" public void canRedo_singleAddressBook_returnsFalse() {","lastModifiedDate":"2024-03-19"},{"lineNumber":148,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(emptyAddressBook);","lastModifiedDate":"2024-03-19"},{"lineNumber":149,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":150,"author":{"gitId":"radeon2525"},"content":" assertFalse(versionedAddressBook.canRedo());","lastModifiedDate":"2024-03-19"},{"lineNumber":151,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":152,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":153,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":154,"author":{"gitId":"radeon2525"},"content":" public void canRedo_multipleAddressBookPointerAtEndOfStateList_returnsFalse() {","lastModifiedDate":"2024-03-19"},{"lineNumber":155,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(","lastModifiedDate":"2024-03-19"},{"lineNumber":156,"author":{"gitId":"radeon2525"},"content":" emptyAddressBook, addressBookWithAmy, addressBookWithBob);","lastModifiedDate":"2024-03-19"},{"lineNumber":157,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":158,"author":{"gitId":"radeon2525"},"content":" assertFalse(versionedAddressBook.canRedo());","lastModifiedDate":"2024-03-19"},{"lineNumber":159,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":160,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":161,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":162,"author":{"gitId":"radeon2525"},"content":" public void undo_multipleAddressBookPointerAtEndOfStateList_success() {","lastModifiedDate":"2024-03-19"},{"lineNumber":163,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(","lastModifiedDate":"2024-03-19"},{"lineNumber":164,"author":{"gitId":"radeon2525"},"content":" emptyAddressBook, addressBookWithAmy, addressBookWithBob);","lastModifiedDate":"2024-03-19"},{"lineNumber":165,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":166,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.undo();","lastModifiedDate":"2024-03-19"},{"lineNumber":167,"author":{"gitId":"radeon2525"},"content":" assertAddressBookListStatus(versionedAddressBook,","lastModifiedDate":"2024-03-19"},{"lineNumber":168,"author":{"gitId":"radeon2525"},"content":" Collections.singletonList(emptyAddressBook),","lastModifiedDate":"2024-03-19"},{"lineNumber":169,"author":{"gitId":"radeon2525"},"content":" addressBookWithAmy,","lastModifiedDate":"2024-03-19"},{"lineNumber":170,"author":{"gitId":"radeon2525"},"content":" Collections.singletonList(addressBookWithBob));","lastModifiedDate":"2024-03-19"},{"lineNumber":171,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":172,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":173,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":174,"author":{"gitId":"radeon2525"},"content":" public void undo_multipleAddressBookPointerNotAtStartOfStateList_success() {","lastModifiedDate":"2024-03-19"},{"lineNumber":175,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(","lastModifiedDate":"2024-03-19"},{"lineNumber":176,"author":{"gitId":"radeon2525"},"content":" emptyAddressBook, addressBookWithAmy, addressBookWithBob);","lastModifiedDate":"2024-03-19"},{"lineNumber":177,"author":{"gitId":"radeon2525"},"content":" shiftCurrentStatePointerLeftwards(versionedAddressBook, 1);","lastModifiedDate":"2024-03-19"},{"lineNumber":178,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":179,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.undo();","lastModifiedDate":"2024-03-19"},{"lineNumber":180,"author":{"gitId":"radeon2525"},"content":" assertAddressBookListStatus(versionedAddressBook,","lastModifiedDate":"2024-03-19"},{"lineNumber":181,"author":{"gitId":"radeon2525"},"content":" Collections.emptyList(),","lastModifiedDate":"2024-03-19"},{"lineNumber":182,"author":{"gitId":"radeon2525"},"content":" emptyAddressBook,","lastModifiedDate":"2024-03-19"},{"lineNumber":183,"author":{"gitId":"radeon2525"},"content":" Arrays.asList(addressBookWithAmy, addressBookWithBob));","lastModifiedDate":"2024-03-19"},{"lineNumber":184,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":185,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":186,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":187,"author":{"gitId":"radeon2525"},"content":" public void undo_singleAddressBook_throwsNoUndoableStateException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":188,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(emptyAddressBook);","lastModifiedDate":"2024-03-19"},{"lineNumber":189,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":190,"author":{"gitId":"radeon2525"},"content":" assertThrows(VersionedAddressBook.NoUndoableStateException.class, versionedAddressBook::undo);","lastModifiedDate":"2024-03-19"},{"lineNumber":191,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":192,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":193,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":194,"author":{"gitId":"radeon2525"},"content":" public void undo_multipleAddressBookPointerAtStartOfStateList_throwsNoUndoableStateException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":195,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(","lastModifiedDate":"2024-03-19"},{"lineNumber":196,"author":{"gitId":"radeon2525"},"content":" emptyAddressBook, addressBookWithAmy, addressBookWithBob);","lastModifiedDate":"2024-03-19"},{"lineNumber":197,"author":{"gitId":"radeon2525"},"content":" shiftCurrentStatePointerLeftwards(versionedAddressBook, 2);","lastModifiedDate":"2024-03-19"},{"lineNumber":198,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":199,"author":{"gitId":"radeon2525"},"content":" assertThrows(VersionedAddressBook.NoUndoableStateException.class, versionedAddressBook::undo);","lastModifiedDate":"2024-03-19"},{"lineNumber":200,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":201,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":202,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":203,"author":{"gitId":"radeon2525"},"content":" public void redo_multipleAddressBookPointerNotAtEndOfStateList_success() {","lastModifiedDate":"2024-03-19"},{"lineNumber":204,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(","lastModifiedDate":"2024-03-19"},{"lineNumber":205,"author":{"gitId":"radeon2525"},"content":" emptyAddressBook, addressBookWithAmy, addressBookWithBob);","lastModifiedDate":"2024-03-19"},{"lineNumber":206,"author":{"gitId":"radeon2525"},"content":" shiftCurrentStatePointerLeftwards(versionedAddressBook, 1);","lastModifiedDate":"2024-03-19"},{"lineNumber":207,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":208,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.redo();","lastModifiedDate":"2024-03-19"},{"lineNumber":209,"author":{"gitId":"radeon2525"},"content":" assertAddressBookListStatus(versionedAddressBook,","lastModifiedDate":"2024-03-19"},{"lineNumber":210,"author":{"gitId":"radeon2525"},"content":" Arrays.asList(emptyAddressBook, addressBookWithAmy),","lastModifiedDate":"2024-03-19"},{"lineNumber":211,"author":{"gitId":"radeon2525"},"content":" addressBookWithBob,","lastModifiedDate":"2024-03-19"},{"lineNumber":212,"author":{"gitId":"radeon2525"},"content":" Collections.emptyList());","lastModifiedDate":"2024-03-19"},{"lineNumber":213,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":214,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":215,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":216,"author":{"gitId":"radeon2525"},"content":" public void redo_multipleAddressBookPointerAtStartOfStateList_success() {","lastModifiedDate":"2024-03-19"},{"lineNumber":217,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(","lastModifiedDate":"2024-03-19"},{"lineNumber":218,"author":{"gitId":"radeon2525"},"content":" emptyAddressBook, addressBookWithAmy, addressBookWithBob);","lastModifiedDate":"2024-03-19"},{"lineNumber":219,"author":{"gitId":"radeon2525"},"content":" shiftCurrentStatePointerLeftwards(versionedAddressBook, 2);","lastModifiedDate":"2024-03-19"},{"lineNumber":220,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":221,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.redo();","lastModifiedDate":"2024-03-19"},{"lineNumber":222,"author":{"gitId":"radeon2525"},"content":" assertAddressBookListStatus(versionedAddressBook,","lastModifiedDate":"2024-03-19"},{"lineNumber":223,"author":{"gitId":"radeon2525"},"content":" Collections.singletonList(emptyAddressBook),","lastModifiedDate":"2024-03-19"},{"lineNumber":224,"author":{"gitId":"radeon2525"},"content":" addressBookWithAmy,","lastModifiedDate":"2024-03-19"},{"lineNumber":225,"author":{"gitId":"radeon2525"},"content":" Collections.singletonList(addressBookWithBob));","lastModifiedDate":"2024-03-19"},{"lineNumber":226,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":227,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":228,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":229,"author":{"gitId":"radeon2525"},"content":" public void redo_singleAddressBook_throwsNoRedoableStateException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":230,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(emptyAddressBook);","lastModifiedDate":"2024-03-19"},{"lineNumber":231,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":232,"author":{"gitId":"radeon2525"},"content":" assertThrows(VersionedAddressBook.NoRedoableStateException.class, versionedAddressBook::redo);","lastModifiedDate":"2024-03-19"},{"lineNumber":233,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":234,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":235,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":236,"author":{"gitId":"radeon2525"},"content":" public void redo_multipleAddressBookPointerAtEndOfStateList_throwsNoRedoableStateException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":237,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(","lastModifiedDate":"2024-03-19"},{"lineNumber":238,"author":{"gitId":"radeon2525"},"content":" emptyAddressBook, addressBookWithAmy, addressBookWithBob);","lastModifiedDate":"2024-03-19"},{"lineNumber":239,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":240,"author":{"gitId":"radeon2525"},"content":" assertThrows(VersionedAddressBook.NoRedoableStateException.class, versionedAddressBook::redo);","lastModifiedDate":"2024-03-19"},{"lineNumber":241,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":242,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":243,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":244,"author":{"gitId":"radeon2525"},"content":" public void equals() {","lastModifiedDate":"2024-03-19"},{"lineNumber":245,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d prepareAddressBookList(addressBookWithAmy, addressBookWithBob);","lastModifiedDate":"2024-03-19"},{"lineNumber":246,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":247,"author":{"gitId":"radeon2525"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":248,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook copy \u003d prepareAddressBookList(addressBookWithAmy, addressBookWithBob);","lastModifiedDate":"2024-03-19"},{"lineNumber":249,"author":{"gitId":"radeon2525"},"content":" assertTrue(versionedAddressBook.equals(copy));","lastModifiedDate":"2024-03-19"},{"lineNumber":250,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":251,"author":{"gitId":"radeon2525"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":252,"author":{"gitId":"radeon2525"},"content":" assertTrue(versionedAddressBook.equals(versionedAddressBook));","lastModifiedDate":"2024-03-19"},{"lineNumber":253,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":254,"author":{"gitId":"radeon2525"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":255,"author":{"gitId":"radeon2525"},"content":" assertFalse(versionedAddressBook.equals(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":256,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":257,"author":{"gitId":"radeon2525"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":258,"author":{"gitId":"radeon2525"},"content":" assertFalse(versionedAddressBook.equals(1));","lastModifiedDate":"2024-03-19"},{"lineNumber":259,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":260,"author":{"gitId":"radeon2525"},"content":" // different state list -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":261,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook differentAddressBookList \u003d prepareAddressBookList(addressBookWithBob, addressBookWithCarl);","lastModifiedDate":"2024-03-19"},{"lineNumber":262,"author":{"gitId":"radeon2525"},"content":" assertFalse(versionedAddressBook.equals(differentAddressBookList));","lastModifiedDate":"2024-03-19"},{"lineNumber":263,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":264,"author":{"gitId":"radeon2525"},"content":" // different current pointer index -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":265,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook differentCurrentStatePointer \u003d prepareAddressBookList(","lastModifiedDate":"2024-03-19"},{"lineNumber":266,"author":{"gitId":"radeon2525"},"content":" addressBookWithAmy, addressBookWithBob);","lastModifiedDate":"2024-03-19"},{"lineNumber":267,"author":{"gitId":"radeon2525"},"content":" shiftCurrentStatePointerLeftwards(versionedAddressBook, 1);","lastModifiedDate":"2024-03-19"},{"lineNumber":268,"author":{"gitId":"radeon2525"},"content":" assertFalse(versionedAddressBook.equals(differentCurrentStatePointer));","lastModifiedDate":"2024-03-19"},{"lineNumber":269,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":270,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":271,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":272,"author":{"gitId":"radeon2525"},"content":" * Asserts that {@code versionedAddressBook} is currently pointing at {@code expectedCurrentState},","lastModifiedDate":"2024-03-19"},{"lineNumber":273,"author":{"gitId":"radeon2525"},"content":" * states before {@code versionedAddressBook#currentStatePointer} is equal to {@code expectedStatesBeforePointer},","lastModifiedDate":"2024-03-19"},{"lineNumber":274,"author":{"gitId":"radeon2525"},"content":" * and states after {@code versionedAddressBook#currentStatePointer} is equal to {@code expectedStatesAfterPointer}.","lastModifiedDate":"2024-03-19"},{"lineNumber":275,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":276,"author":{"gitId":"radeon2525"},"content":" private void assertAddressBookListStatus(VersionedAddressBook versionedAddressBook,","lastModifiedDate":"2024-03-19"},{"lineNumber":277,"author":{"gitId":"radeon2525"},"content":" List\u003cReadOnlyAddressBook\u003e expectedStatesBeforePointer,","lastModifiedDate":"2024-03-19"},{"lineNumber":278,"author":{"gitId":"radeon2525"},"content":" ReadOnlyAddressBook expectedCurrentState,","lastModifiedDate":"2024-03-19"},{"lineNumber":279,"author":{"gitId":"radeon2525"},"content":" List\u003cReadOnlyAddressBook\u003e expectedStatesAfterPointer) {","lastModifiedDate":"2024-03-19"},{"lineNumber":280,"author":{"gitId":"radeon2525"},"content":" // check state currently pointing at is correct","lastModifiedDate":"2024-03-19"},{"lineNumber":281,"author":{"gitId":"radeon2525"},"content":" assertEquals(new AddressBook(versionedAddressBook), expectedCurrentState);","lastModifiedDate":"2024-03-19"},{"lineNumber":282,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":283,"author":{"gitId":"radeon2525"},"content":" // shift pointer to start of state list","lastModifiedDate":"2024-03-19"},{"lineNumber":284,"author":{"gitId":"radeon2525"},"content":" while (versionedAddressBook.canUndo()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":285,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.undo();","lastModifiedDate":"2024-03-19"},{"lineNumber":286,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":287,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":288,"author":{"gitId":"radeon2525"},"content":" // check states before pointer are correct","lastModifiedDate":"2024-03-19"},{"lineNumber":289,"author":{"gitId":"radeon2525"},"content":" for (ReadOnlyAddressBook expectedAddressBook : expectedStatesBeforePointer) {","lastModifiedDate":"2024-03-19"},{"lineNumber":290,"author":{"gitId":"radeon2525"},"content":" assertEquals(expectedAddressBook, new AddressBook(versionedAddressBook));","lastModifiedDate":"2024-03-19"},{"lineNumber":291,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.redo();","lastModifiedDate":"2024-03-19"},{"lineNumber":292,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":293,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":294,"author":{"gitId":"radeon2525"},"content":" // check states after pointer are correct","lastModifiedDate":"2024-03-19"},{"lineNumber":295,"author":{"gitId":"radeon2525"},"content":" for (ReadOnlyAddressBook expectedAddressBook : expectedStatesAfterPointer) {","lastModifiedDate":"2024-03-19"},{"lineNumber":296,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.redo();","lastModifiedDate":"2024-03-19"},{"lineNumber":297,"author":{"gitId":"radeon2525"},"content":" assertEquals(expectedAddressBook, new AddressBook(versionedAddressBook));","lastModifiedDate":"2024-03-19"},{"lineNumber":298,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":299,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":300,"author":{"gitId":"radeon2525"},"content":" // check that there are no more states after pointer","lastModifiedDate":"2024-03-19"},{"lineNumber":301,"author":{"gitId":"radeon2525"},"content":" assertFalse(versionedAddressBook.canRedo());","lastModifiedDate":"2024-03-19"},{"lineNumber":302,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":303,"author":{"gitId":"radeon2525"},"content":" // revert pointer to original position","lastModifiedDate":"2024-03-19"},{"lineNumber":304,"author":{"gitId":"radeon2525"},"content":" expectedStatesAfterPointer.forEach(unused -\u003e versionedAddressBook.undo());","lastModifiedDate":"2024-03-19"},{"lineNumber":305,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":306,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":307,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":308,"author":{"gitId":"radeon2525"},"content":" * Creates and returns a {@code VersionedAddressBook} with the {@code addressBookStates} added into it, and the","lastModifiedDate":"2024-03-19"},{"lineNumber":309,"author":{"gitId":"radeon2525"},"content":" * {@code VersionedAddressBook#currentStatePointer} at the end of list.","lastModifiedDate":"2024-03-19"},{"lineNumber":310,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":311,"author":{"gitId":"radeon2525"},"content":" private VersionedAddressBook prepareAddressBookList(ReadOnlyAddressBook... addressBookStates) {","lastModifiedDate":"2024-03-19"},{"lineNumber":312,"author":{"gitId":"radeon2525"},"content":" assertFalse(addressBookStates.length \u003d\u003d 0);","lastModifiedDate":"2024-03-19"},{"lineNumber":313,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":314,"author":{"gitId":"radeon2525"},"content":" VersionedAddressBook versionedAddressBook \u003d new VersionedAddressBook(addressBookStates[0]);","lastModifiedDate":"2024-03-19"},{"lineNumber":315,"author":{"gitId":"radeon2525"},"content":" for (int i \u003d 1; i \u003c addressBookStates.length; i++) {","lastModifiedDate":"2024-03-19"},{"lineNumber":316,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.resetData(addressBookStates[i]);","lastModifiedDate":"2024-03-19"},{"lineNumber":317,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.commit();","lastModifiedDate":"2024-03-19"},{"lineNumber":318,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":319,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":320,"author":{"gitId":"radeon2525"},"content":" return versionedAddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":321,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":322,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":323,"author":{"gitId":"radeon2525"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":324,"author":{"gitId":"radeon2525"},"content":" * Shifts the {@code versionedAddressBook#currentStatePointer} by {@code count} to the left of its list.","lastModifiedDate":"2024-03-19"},{"lineNumber":325,"author":{"gitId":"radeon2525"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":326,"author":{"gitId":"radeon2525"},"content":" private void shiftCurrentStatePointerLeftwards(VersionedAddressBook versionedAddressBook, int count) {","lastModifiedDate":"2024-03-19"},{"lineNumber":327,"author":{"gitId":"radeon2525"},"content":" for (int i \u003d 0; i \u003c count; i++) {","lastModifiedDate":"2024-03-19"},{"lineNumber":328,"author":{"gitId":"radeon2525"},"content":" versionedAddressBook.undo();","lastModifiedDate":"2024-03-19"},{"lineNumber":329,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":330,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":331,"author":{"gitId":"radeon2525"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"radeon2525":331}},{"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":"-"},"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":"-"},"content":" .withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2020-12-18"},{"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":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2018-04-18"},{"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":"-"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2019-02-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", address\u003d\" + ALICE.getAddress() + \", tags\u003d\" + ALICE.getTags() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":99,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":100,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":101,"author":{"gitId":"radeon2525"},"content":" public void samePersonObject_returnsTrue() {","lastModifiedDate":"2024-03-16"},{"lineNumber":102,"author":{"gitId":"radeon2525"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2024-03-16"},{"lineNumber":103,"author":{"gitId":"radeon2525"},"content":" assertTrue(person.isSamePerson(person));","lastModifiedDate":"2024-03-16"},{"lineNumber":104,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":105,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":106,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":107,"author":{"gitId":"radeon2525"},"content":" public void nullPerson_returnsFalse() {","lastModifiedDate":"2024-03-16"},{"lineNumber":108,"author":{"gitId":"radeon2525"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2024-03-16"},{"lineNumber":109,"author":{"gitId":"radeon2525"},"content":" assertFalse(person.isSamePerson(null));","lastModifiedDate":"2024-03-16"},{"lineNumber":110,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":111,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":112,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":113,"author":{"gitId":"radeon2525"},"content":" public void differentPerson_returnsFalse() {","lastModifiedDate":"2024-03-16"},{"lineNumber":114,"author":{"gitId":"radeon2525"},"content":" Person person1 \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2024-03-16"},{"lineNumber":115,"author":{"gitId":"radeon2525"},"content":" Person person2 \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2024-03-16"},{"lineNumber":116,"author":{"gitId":"radeon2525"},"content":" assertFalse(person1.isSamePerson(person2));","lastModifiedDate":"2024-03-16"},{"lineNumber":117,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":118,"author":{"gitId":"radeon2525"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":119,"author":{"gitId":"radeon2525"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":120,"author":{"gitId":"radeon2525"},"content":" public void samePersonTagsDifferentOrder_returnsTrue() {","lastModifiedDate":"2024-03-16"},{"lineNumber":121,"author":{"gitId":"radeon2525"},"content":" Person person1 \u003d new PersonBuilder().withTags(\"friend\", \"colleague\").build();","lastModifiedDate":"2024-03-16"},{"lineNumber":122,"author":{"gitId":"radeon2525"},"content":" Person person2 \u003d new PersonBuilder().withTags(\"colleague\", \"friend\").build();","lastModifiedDate":"2024-03-16"},{"lineNumber":123,"author":{"gitId":"radeon2525"},"content":" assertTrue(person1.equals(person2));","lastModifiedDate":"2024-03-16"},{"lineNumber":124,"author":{"gitId":"radeon2525"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":125,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"radeon2525":26,"-":99}}] diff --git a/AY2324S2-CS2103T-W13-2_tp_master/commits.json b/AY2324S2-CS2103T-W13-2_tp_master/commits.json index 8e1f74e3..201f5ca3 100644 --- a/AY2324S2-CS2103T-W13-2_tp_master/commits.json +++ b/AY2324S2-CS2103T-W13-2_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"The-Dudeski":[{"date":"2024-03-04","commitResults":[{"hash":"a56a13fd995ea7e199c68df3922a2a36a019ec02","isMergeCommit":false,"messageTitle":"Modified AboutUs.md to include developer info","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":19}}}]},{"date":"2024-03-06","commitResults":[{"hash":"8a49b8be4746cb0850f3136e007708a05b149dc0","isMergeCommit":false,"messageTitle":"Updated README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":9}}}]},{"date":"2024-03-09","commitResults":[{"hash":"d3fd72d8f330d663c40d08ec44e2684d0688459e","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"Co-authored-by: Miffi \u003cmiffi@decadent.rest\u003e","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"8e75f55f351bfa16d8b002024382562835a69376","isMergeCommit":false,"messageTitle":"Changed AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":9}}},{"hash":"aa778530123e214a3b3e90ac49a8984e9761664b","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W13-2:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ee43d4aab9b3af38c1559e3000151ca39f3064b4","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/The-Dudeski/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"66bf7ef0512eb4cbf2799d568d1011d3f3497853","isMergeCommit":true,"messageTitle":"Merge pull request #12 from The-Dudeski/master","messageBody":"Changed README.md and AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"6e126a335fabee3861ca195d3800701611c1111a","isMergeCommit":false,"messageTitle":"Added Viewing Contacts to DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":17,"deletions":1}}}]},{"date":"2024-03-20","commitResults":[{"hash":"198ec65b2f000fc26f2d1bef4feaf29532fb18b5","isMergeCommit":false,"messageTitle":"Changed prefixes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":6}}}]},{"date":"2024-03-21","commitResults":[{"hash":"16a25385ab7352f82b4bd0b15ca1df65a2f1c088","isMergeCommit":false,"messageTitle":"Changed test cases for Tag and Untag","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"96447e0a0b456755ef556480ab0f904c79a09a37","isMergeCommit":false,"messageTitle":"Fixed indentation errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]}],"Derekljh":[{"date":"2024-03-06","commitResults":[{"hash":"a1fb0994ba5fa66848396b45e6ea1a3678a3d049","isMergeCommit":false,"messageTitle":"Add Use Case - Remove Contact","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"8d1468e4a804f923e145696a6b392191a9f8a1f9","isMergeCommit":false,"messageTitle":"Add user stories","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":8}}},{"hash":"212dc9656abe0b5b84abc5652bafac7799153be3","isMergeCommit":false,"messageTitle":"Add product scope","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}}]},{"date":"2024-03-09","commitResults":[{"hash":"7b5d46cb7b352523035e7a393a0821f78a2824c2","isMergeCommit":true,"messageTitle":"Merge pull request #26 from miffi/use-case-tag","messageBody":"Add a use case for tagging","fileTypesAndContributionMap":{}}]},{"date":"2024-03-13","commitResults":[{"hash":"5ce658ccac48cda8189cd687065ced696cb953c7","isMergeCommit":false,"messageTitle":"Fix TagCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":76,"deletions":13}}},{"hash":"0321684551408f097089cc1af41cb99e1234c9fa","isMergeCommit":false,"messageTitle":"Fix TagCommand with exceptions","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":11}}}]},{"date":"2024-03-16","commitResults":[{"hash":"23870f423807e4e72cb67d7e0493d2687e9dcd37","isMergeCommit":false,"messageTitle":"Fix code to pass CI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":78,"deletions":63}}},{"hash":"80e9f70e94b5686bae7a627c0a2586f1e6b56455","isMergeCommit":false,"messageTitle":"Fix code to pass CI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":9}}},{"hash":"b678bedf646556788e90c5610fe08f42e67c6d1b","isMergeCommit":false,"messageTitle":"Fix code to pass CI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":3}}},{"hash":"f6e0074a9c5b14a41ae6fb9b81b3cc8976b72db9","isMergeCommit":false,"messageTitle":"Fix code to pass CI","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":5}}},{"hash":"620f3ce30d8c9cc783db8fd103ead75dd027b642","isMergeCommit":false,"messageTitle":"Amend Tagging function","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":28,"deletions":22}}},{"hash":"8862dc8d737be31ca5e8b398a73d38b008d10084","isMergeCommit":false,"messageTitle":"Add Tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":13},"test-code":{"insertions":166,"deletions":0}}},{"hash":"11f8429b0ac517d1b7f53ba779674d29e2520683","isMergeCommit":false,"messageTitle":"Add Tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":14},"test-code":{"insertions":164,"deletions":0}}},{"hash":"1baea652a9fadb72be5642b4b39abb07ebca1d32","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/Tagging-contacts\u0027 into Tagging-contacts","messageBody":"# Conflicts:\n#\tsrc/test/java/seedu/address/logic/commands/TagCommandTest.java\n#\tsrc/test/java/seedu/address/logic/parser/AddressBookParserTest.java\n#\tsrc/test/java/seedu/address/logic/parser/TagCommandParserTest.java\n","fileTypesAndContributionMap":{}}]},{"date":"2024-03-17","commitResults":[{"hash":"28eb7538933400177dc0c0c04f0d7b9029d4f0a9","isMergeCommit":false,"messageTitle":"Amend code for CI","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"84fb795913373f29fe99bebf800ed9494f6fa685","isMergeCommit":false,"messageTitle":"Amend code for tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":1,"deletions":2}}},{"hash":"93b3b7b820417b6326cdca1cbf064d360b98cf52","isMergeCommit":false,"messageTitle":"Amend code for tests v2","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":1},"test-code":{"insertions":2,"deletions":1}}}]},{"date":"2024-03-18","commitResults":[{"hash":"6e46c5e71fa8620e81b1d9fbd24e05062a9a1463","isMergeCommit":false,"messageTitle":"Amend code for tests v3","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"25a5f5e52a5558551e63d6b053d52ccc41c576fd","isMergeCommit":false,"messageTitle":"Amend code for tests v4","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-19","commitResults":[{"hash":"b13f80087067eac080ac8d83bae9c4b3996d7c16","isMergeCommit":false,"messageTitle":"Amend code for CI","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-21","commitResults":[{"hash":"424a123e27985e842f98836d1b78e419fede3951","isMergeCommit":false,"messageTitle":"Change error messages","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4}}},{"hash":"a12a4f105180855611e64f15cb5c71ffdbcb7ce6","isMergeCommit":true,"messageTitle":"Merge pull request #55 from Derekljh/master","messageBody":"Change error messages","fileTypesAndContributionMap":{}},{"hash":"819d2775c570858b6160a080ac7fa6cff665754e","isMergeCommit":false,"messageTitle":"Add UML diagram for TagCommand","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":0}}},{"hash":"d4159e3cea42864ef1d4675147a25df6bf2f683f","isMergeCommit":true,"messageTitle":"Merge pull request #59 from Derekljh/master","messageBody":"Add UML diagram for TagCommand","fileTypesAndContributionMap":{}}]},{"date":"2024-03-22","commitResults":[{"hash":"4448bd7d972a51befaa602e10c44d4589de6ba53","isMergeCommit":false,"messageTitle":"Move puml file for TagCommand under Diagram folder and add to git revision","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":67,"deletions":0}}},{"hash":"38bf1de89fced7d4c648289f3dc44b5a46621a09","isMergeCommit":false,"messageTitle":"Fix for CI","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"09ed52ade1e477dd7742b253a03e8d536ff22448","isMergeCommit":true,"messageTitle":"Merge pull request #60 from Derekljh/master","messageBody":"Move puml file for TagCommand under Diagram folder and add to git rev…","fileTypesAndContributionMap":{}}]}],"radeon2525":[{"date":"2024-03-07","commitResults":[{"hash":"c26e91116edc3b8c920a84a5f1b343e14c6c87a7","isMergeCommit":false,"messageTitle":"Added non functional requirements","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":138,"deletions":74}}},{"hash":"a804a00762f779d62d05e6459d9d1aecd1af82c0","isMergeCommit":false,"messageTitle":"Add use case-add contacts","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":1}}}]},{"date":"2024-03-09","commitResults":[{"hash":"11fdeedeb47cb3cf3fe23d1617d451ade9096aed","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-contacts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"812cbde3bffc72892e26ff97e41b2cdd1d785d0a","isMergeCommit":true,"messageTitle":"Merge pull request #24 from radeon2525/add-contacts","messageBody":"Add use case-add contacts","fileTypesAndContributionMap":{}}]},{"date":"2024-03-11","commitResults":[{"hash":"fa39c44099ab9fe131e2f269152c852ebda35feb","isMergeCommit":false,"messageTitle":"Add TagCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":58,"deletions":0},"test-code":{"insertions":5,"deletions":0}}}]},{"date":"2024-03-16","commitResults":[{"hash":"f4d8a6c8c2485572c39d944c128f3998a18ab7d0","isMergeCommit":false,"messageTitle":"Add test cases for AddCommand and LogicManager","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1},"test-code":{"insertions":40,"deletions":1}}},{"hash":"55783b650b8ad6a292172724d7badc50bd48743c","isMergeCommit":false,"messageTitle":"Fix style issues","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":3}}},{"hash":"c04b00c60e48bd4cd84b605114e831d4d4e06192","isMergeCommit":false,"messageTitle":"FIx unused import statement","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":2}}}]},{"date":"2024-03-18","commitResults":[{"hash":"68933d1ab2212d4f62d166ec877b936d920cee05","isMergeCommit":true,"messageTitle":"Merge pull request #40 from radeon2525/add-contacts-1.2","messageBody":"Add test cases for AddCommand and LogicManager","fileTypesAndContributionMap":{}},{"hash":"ac4c9b909115aa9a4281827909beaa6b9ae4c916","isMergeCommit":false,"messageTitle":"Add undo and redo functionality","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":422,"deletions":29},"test-code":{"insertions":83,"deletions":32}}},{"hash":"983cb8e8fdabef88080208c6364d4be83e1511af","isMergeCommit":false,"messageTitle":"Fix style issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":230,"deletions":233}}},{"hash":"e9476ac55707935d9570ee974be6ef7c21249e92","isMergeCommit":false,"messageTitle":"Fix InvalidationListenerManager style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":48,"deletions":48}}},{"hash":"5dca2e8725da1c28505eb6d36976d54bde04a13b","isMergeCommit":false,"messageTitle":"Add newline","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2}}},{"hash":"90ec28516205a7bc34e319595d029c62bf6333b4","isMergeCommit":false,"messageTitle":"Style fixes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"aebc14aa8c3ccbb0d43be5b2aa7ceda5bca31bad","isMergeCommit":false,"messageTitle":"Fix style errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":14}}},{"hash":"dc7983f931203fdaf1b780c854adf86d626c028a","isMergeCommit":false,"messageTitle":"Add import statements in AddressBookParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":0}}},{"hash":"25bdcac4f211c5e3fb39c9e098657218fb757102","isMergeCommit":false,"messageTitle":"Fix import statement ordering","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"899d0fb03035dd0133b8c746aee8c1703705c71b","isMergeCommit":false,"messageTitle":"Fix lexicographic ordering","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"088cff83b530d37ce817429ef562d613438f6e66","isMergeCommit":false,"messageTitle":"Change execute method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":11,"deletions":11}}},{"hash":"dd267c44a0ddb442d142ec95c116885e99d88d48","isMergeCommit":false,"messageTitle":"Remove unused statement","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"cc867e6fb49349bd59f10485756a7e3ff36063df","isMergeCommit":false,"messageTitle":"Change AddCommandTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":260,"deletions":26}}},{"hash":"ac7ac9d5cecff50c669d158aeb96f181d702f158","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into undo-redo","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4ac5daa7c5581d21b3cef7024df90d4a7ec50689","isMergeCommit":false,"messageTitle":"Fix testcase","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"1ae34ce0eee259b67c9ca5e0fd09582eb2c1f64e","isMergeCommit":true,"messageTitle":"Merge branch \u0027undo-redo\u0027 of https://github.com/radeon2525/tp into undo-redo","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"11c7fec6e5f00242e20eb702a0a6c37b225741b7","isMergeCommit":false,"messageTitle":"Fix testcase","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":1}}},{"hash":"ea0bca007fbb05f8f9025b2ee40205808be8685e","isMergeCommit":false,"messageTitle":"Fix style issues","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":14,"deletions":248}}},{"hash":"c1d343aa34141dc0351a15b999f8cbab498ae4a2","isMergeCommit":false,"messageTitle":"Fix bugs","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":102,"deletions":105}}}]},{"date":"2024-03-19","commitResults":[{"hash":"f3a672825d7fd5428c9dc8bc1324759514a37900","isMergeCommit":false,"messageTitle":"Fix style issues","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":11,"deletions":21}}},{"hash":"2d1e4739829d86b2dc8682e3365a0d4cd3e15ee9","isMergeCommit":false,"messageTitle":"Fix styling","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":3}}},{"hash":"b6890cc0986cfb6f9066c35f7174aeeb7995799b","isMergeCommit":false,"messageTitle":"Fix styling","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":49}}},{"hash":"ca336496439723ecf3b60706776edfca565156d4","isMergeCommit":false,"messageTitle":"Fix styling","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":50}}},{"hash":"ec38dcb8cff1fad9c2e0049629193240b1530423","isMergeCommit":false,"messageTitle":"Remove redundant methods","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":30}}},{"hash":"32a0b0a1ccb6863c0875578fe8f3cb2f40a0d379","isMergeCommit":false,"messageTitle":"Fix","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"aae418a367e0e6ed1694073ab92f4ebca30131d8","isMergeCommit":false,"messageTitle":"Add CommandHistoryTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":79,"deletions":0}}},{"hash":"15d8644709215cb75afe2ddac2be30f26d140419","isMergeCommit":false,"messageTitle":"Fix","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"c9cb32ebb2f4051074ef74828fda9bc2230880fe","isMergeCommit":false,"messageTitle":"Add InvalidationListenerManagerTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":37,"deletions":0},"test-code":{"insertions":72,"deletions":0}}},{"hash":"f9c2030eb89e2c3f0c2c63beeb72849b82f6e49e","isMergeCommit":false,"messageTitle":"Fix style issues","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":72,"deletions":72}}},{"hash":"b78b4324d994951f106f711c3ca52182eb9c428f","isMergeCommit":false,"messageTitle":"Add VersionedAddressBookTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":298,"deletions":0}}},{"hash":"cb7b917887fe25972992ce5d134e8fd2c5535329","isMergeCommit":false,"messageTitle":"Change ModelManagerTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":0}}},{"hash":"a985704ac3138e392efc025dbcd69b6bb70b7a39","isMergeCommit":false,"messageTitle":"Add tests for Undo and Redo","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":103,"deletions":0}}},{"hash":"a0470da22626b42bb8d682e764de26921bbdebb6","isMergeCommit":false,"messageTitle":"Add tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":43,"deletions":0}}},{"hash":"1e95263915ba8eb6fd35407b8dc4377a6aa6f2da","isMergeCommit":false,"messageTitle":"Fix","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}},{"hash":"9ab1f0b5c5292810b7dc200971510c5ac69a982c","isMergeCommit":false,"messageTitle":"Remove redundant method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":31}}},{"hash":"9b22ee25b6d4472c5f37223d4da33cdd7340d148","isMergeCommit":false,"messageTitle":"Add testcase","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":8},"test-code":{"insertions":13,"deletions":8}}},{"hash":"c815e5fe278e85845ef6748391face3effbf9af3","isMergeCommit":false,"messageTitle":"Fix","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":11,"deletions":1}}},{"hash":"78b4f6553c7b75e47d315c1f7683de76644e241d","isMergeCommit":false,"messageTitle":"Fix","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"19ba4a69a6c02f1942a74a8b01b04549b66ca106","isMergeCommit":false,"messageTitle":"fix","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"7a60849c79d5798c1310e6e16453dc9b237868df","isMergeCommit":false,"messageTitle":"Fix","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":94,"deletions":1}}},{"hash":"997ec6b0e532b83a80f180a5674506ec073b3438","isMergeCommit":false,"messageTitle":"Fix","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":12,"deletions":12}}},{"hash":"b33bde607f5658aa8e6cbe66e23727a1af98eccf","isMergeCommit":false,"messageTitle":"Fix","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":13,"deletions":11}}},{"hash":"ef64296a734d40f51839ab384e9e81a43b3e7f9a","isMergeCommit":false,"messageTitle":"fix","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":2}}},{"hash":"41b41cdba3eb64fe4e30621942ee10d5c5112a88","isMergeCommit":false,"messageTitle":"fix","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":0}}}]},{"date":"2024-03-20","commitResults":[{"hash":"dc871e7befcf475f221fbd33b44f7fa229f63323","isMergeCommit":false,"messageTitle":"Fixed indicateModified method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":25,"deletions":12}}},{"hash":"87d0913c9d38635dff5f3d1c1a9b9fbaea14aa53","isMergeCommit":false,"messageTitle":"Fix","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"fc45214f00eb253f59e8352cb164dd6203392790","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into undo-redo","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"23f834e96cf11422d1c104f00e06a34a10c5962f","isMergeCommit":false,"messageTitle":"Fix Tagging","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":18,"deletions":7},"test-code":{"insertions":6,"deletions":26}}},{"hash":"6d5c7d665d48f5ace5b1cc10faaa883314f8da34","isMergeCommit":false,"messageTitle":"fix","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"abea10f995c101f39689a5cd37f801981e0804af","isMergeCommit":false,"messageTitle":"fix","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":4}}},{"hash":"e4458c5c336c1752393da22b1fad6e8a69bad0c7","isMergeCommit":false,"messageTitle":"fix","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"139548a0eef87061f5aab0b87e5db8c9b266fdaa","isMergeCommit":false,"messageTitle":"Add tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"test-code":{"insertions":69,"deletions":0}}},{"hash":"e0b5b6b5126fc1046a7f21c5cd9812bd629eb1ee","isMergeCommit":false,"messageTitle":"fix","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"5148f5536ab841e27a35462d03a1ba99e4be7211","isMergeCommit":false,"messageTitle":"fix","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":2}}},{"hash":"e377c0a3c5d7391735e9410cd9978094903f451b","isMergeCommit":false,"messageTitle":"fix","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"0d6ba9adca101603ab673db46c79e2773fc9daa0","isMergeCommit":true,"messageTitle":"Merge pull request #48 from radeon2525/undo-redo","messageBody":"Add undo and redo functionality","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"d985b4372addafaa126e6c6bf3abffab38c038b3","isMergeCommit":false,"messageTitle":"Fix for tag and untag","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":0}}},{"hash":"e015b64ee886665a795d0ed839fd6ce141ab5273","isMergeCommit":false,"messageTitle":"fix","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":18}}},{"hash":"ffb79e262a0c5546ed782f0d443b6b17ee623209","isMergeCommit":false,"messageTitle":"fix","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":3}}},{"hash":"0f2044b809eb507c77ac89afce201c26474ebeb0","isMergeCommit":true,"messageTitle":"Merge pull request #57 from radeon2525/master","messageBody":"Fix for tag and untag","fileTypesAndContributionMap":{}}]},{"date":"2024-03-22","commitResults":[{"hash":"e8a163c0a62206a9ce4f9b73769c18b4da406264","isMergeCommit":false,"messageTitle":"Add puml files for undo and redo","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":36,"deletions":0}}},{"hash":"e9fc989eac058d8de63d81f7ba332e453deb9b38","isMergeCommit":false,"messageTitle":"style fix","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":36,"deletions":36}}},{"hash":"4f531a68833ccd4ed5cf279c987df7febce78643","isMergeCommit":true,"messageTitle":"Merge pull request #61 from radeon2525/master","messageBody":"Add puml files for undo and redo","fileTypesAndContributionMap":{}}]}],"miffi":[{"date":"2024-02-24","commitResults":[{"hash":"c2e81d65d4cccdb3ed49d85508e1a72a4fbc4b86","isMergeCommit":false,"messageTitle":"Rename doc references of AB-3 to OfficeHarbor","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":20,"deletions":20}}},{"hash":"28789c919dd4b31b65c7aa8ed09a2dd87cc21ded","isMergeCommit":true,"messageTitle":"Merge pull request #1 from miffi/rename-codebase","messageBody":"Rename doc references of AB-3 to OfficeHarbor","fileTypesAndContributionMap":{}}]},{"date":"2024-03-06","commitResults":[{"hash":"c0eb71a6449f317ce92e27565041be7ecf07b425","isMergeCommit":true,"messageTitle":"Merge pull request #8 from JukeBoxK/master","messageBody":"Update the User Guide","fileTypesAndContributionMap":{}}]},{"date":"2024-03-08","commitResults":[{"hash":"fe86fdfaa26d0b484af8726b10eaf57b64081c85","isMergeCommit":false,"messageTitle":"Add a use case for tagging","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":26,"deletions":1}}}]},{"date":"2024-03-09","commitResults":[{"hash":"9d6866fd753f58ab68dbebbd56f6a30f5dce2138","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into NFR","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"7fced1ccd306a516e5f2c3c36442e091fa817627","isMergeCommit":true,"messageTitle":"Merge pull request #23 from radeon2525/NFR","messageBody":"Add non functional requirements","fileTypesAndContributionMap":{}},{"hash":"4680017e1aa3b75029a6c86dab32e7ddfdf9b86f","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into port-user-stories-and-product-scope","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"27c9c32db685a05811b8a234035b1626f6802cb9","isMergeCommit":true,"messageTitle":"Merge pull request #17 from Derekljh/port-user-stories-and-product-scope","messageBody":"Port user stories and product scope","fileTypesAndContributionMap":{}},{"hash":"513d35b037cedeec1c09cb8d55edd7e340b7e061","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-UseCase-DeleteTag","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"474f28efd015b6aac0e21a6bae33ca003cd276f6","isMergeCommit":true,"messageTitle":"Merge pull request #27 from JukeBoxK/branch-UseCase-DeleteTag","messageBody":"Add use case for deleting tag","fileTypesAndContributionMap":{}},{"hash":"ad73271145db2cdbd29bf544525f429f638b1a4c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into Use-Case-Remove-Contacts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ff8243bdf16a4e9aac2ec018720a4576a3118d3a","isMergeCommit":true,"messageTitle":"Merge pull request #15 from Derekljh/Use-Case-Remove-Contacts","messageBody":"Add Use Case - Remove Contact","fileTypesAndContributionMap":{}}]},{"date":"2024-03-16","commitResults":[{"hash":"b215c54550100887b54dc08b9b56bfeb7f859cdf","isMergeCommit":false,"messageTitle":"Add untag command","messageBody":"As a counterpart to the tagging command, this command untags a user from\nsome tags.\n\nThis implementation can do multiple tags at the same time to amke\nremoving tags faster. It throws an error on non matching tags, but that\ncan be changed if that is not desirable e.g. if batch operations are\nintroduced.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":142,"deletions":1},"test-code":{"insertions":157,"deletions":0}}},{"hash":"a1f6f8b401b3fa7ac2676095c3a41c91cc3292ca","isMergeCommit":false,"messageTitle":"Add developer roles","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":6}}},{"hash":"096fd31e707c2b98991a57a67bfa189c75c7d84c","isMergeCommit":false,"messageTitle":"Increase code coverage","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":40,"deletions":22}}},{"hash":"da091a46ec09cad7956e6ce803268cc4f25f63c4","isMergeCommit":false,"messageTitle":"Fix code style","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":8,"deletions":8}}}]},{"date":"2024-03-19","commitResults":[{"hash":"d1b84a19e8f8a224e8eb1680dbda266bbbf08a20","isMergeCommit":true,"messageTitle":"Merge pull request #41 from miffi/dev-roles","messageBody":"Add developer roles","fileTypesAndContributionMap":{}},{"hash":"d3ff94c66ed01f3c6106fa9187423072fcaf9bd7","isMergeCommit":true,"messageTitle":"Merge pull request #38 from miffi/untag","messageBody":"Add untag command","fileTypesAndContributionMap":{}},{"hash":"3cd570236a2ab168ab19599b8bd4d1f336bfefcb","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into Tagging-contacts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f96276d5001fb9e420c53c05513394b25e3cadb1","isMergeCommit":true,"messageTitle":"Merge pull request #32 from Derekljh/Tagging-contacts","messageBody":"Tagging contacts","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"3b0e4fb887d9c100f56ef56d5d29f78ad9275040","isMergeCommit":true,"messageTitle":"Merge pull request #50 from The-Dudeski/master","messageBody":"Changed prefixes","fileTypesAndContributionMap":{}}]}],"JukeBoxK":[{"date":"2024-02-29","commitResults":[{"hash":"221ddb4c24fb3fc650d1590e6cce283eba688a4c","isMergeCommit":false,"messageTitle":"Update the User Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":85,"deletions":70}}}]},{"date":"2024-03-09","commitResults":[{"hash":"16a942fb1739dad3348aed1eef2aa0159241f012","isMergeCommit":false,"messageTitle":"Add use case for deleting tag","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":29,"deletions":0}}},{"hash":"dd455d80900288969d93008522db5a6792c7d13d","isMergeCommit":true,"messageTitle":"Merge pull request #28 from The-Dudeski/master","messageBody":"Added Viewing Contacts Use Case","fileTypesAndContributionMap":{}}]},{"date":"2024-03-13","commitResults":[{"hash":"2f3b74d0d3f32f5d70225deb77e43f7d545bf840","isMergeCommit":false,"messageTitle":"Change output message for list command","messageBody":"The list command displays \"Listed all persons\" for all outputs.\n\nIt is not specific enough for the output list.\n\nLet\u0027s add the message \"The list is empty\" for empty lists instead.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":2}}},{"hash":"e91a02e930ae0e6dab18b814658156079044839a","isMergeCommit":false,"messageTitle":"Address style issue in code of List Command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"8ded7e9e5e257d69a1215871ce9d8da53b9c73ad","isMergeCommit":false,"messageTitle":"Address test issue with list command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-16","commitResults":[{"hash":"26f0cd21efa86b584f203a7e7398c277cf975d30","isMergeCommit":true,"messageTitle":"Merge pull request #30 from JukeBoxK/branch-ViewContact","messageBody":"Change output message for list command","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"4ef08bef397742ca3df0b80c18ee749969123bf3","isMergeCommit":false,"messageTitle":"Reorder the UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":50,"deletions":51}}},{"hash":"dc3578499f9528423add90db06b45aaff1c3574e","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-Documentation","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"14a7395d4140fc84a6ff748885c65cbed99070bb","isMergeCommit":false,"messageTitle":"Add information about undo/redo into the documentation","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":107,"deletions":46}}},{"hash":"094ec3dccc788b4d4002d50f65d566c5a6c903e4","isMergeCommit":false,"messageTitle":"Add EOF for UserGuide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"929e3ca8d816f44a0facef8b0a3dc9fb8529f18b","isMergeCommit":false,"messageTitle":"Change the tag and untag to the correct format","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":9}}},{"hash":"148df76c69a0de2d17197cc86375ad942a261314","isMergeCommit":true,"messageTitle":"Merge pull request #52 from JukeBoxK/branch-Documentation","messageBody":"Add information about undo/redo into the documentation","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"4bfcbc43aa7ba418cba4ba8e14371036a12ae014","isMergeCommit":false,"messageTitle":"Change the documentation to fit the new prefix","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":43,"deletions":36}}},{"hash":"d190c0d8f49f5a8fd7e553d9c48d69cf22d78fdd","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-W13-2/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a8f85b68a1d7ce17493248c3b807c2add459e793","isMergeCommit":false,"messageTitle":"Fix issue of no screenshot in user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":7}}},{"hash":"4ff517f09f52f091e6bf09bc7dcec5092117a980","isMergeCommit":true,"messageTitle":"Merge pull request #58 from JukeBoxK/branch-Documentation","messageBody":"Branch documentation","tags":["v1.2"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"The-Dudeski":{"docs":32,"functional-code":10,"test-code":2},"Derekljh":{"docs":74,"functional-code":116,"test-code":140},"radeon2525":{"docs":158,"functional-code":453,"test-code":905},"miffi":{"docs":36,"functional-code":138,"test-code":150,"other":1},"JukeBoxK":{"docs":226,"functional-code":5,"test-code":1}},"authorContributionVariance":{"The-Dudeski":109.058304,"Derekljh":11964.134,"radeon2525":166756.02,"miffi":5417.955,"JukeBoxK":3336.386},"authorDisplayNameMap":{"The-Dudeski":"CS2103T-W13-2 DUDE..NZIO","Derekljh":"CS2103T-W13-2 LEON..EREK","radeon2525":"CS2103T-W13-2 MAHI..SHIM","miffi":"CS2103T-W13-2 AHMA..AQUE","JukeBoxK":"CS2103T-W13-2 KYAW..YINT"}} +{"authorDailyContributionsMap":{"The-Dudeski":[{"date":"2024-03-04","commitResults":[{"hash":"a56a13fd995ea7e199c68df3922a2a36a019ec02","isMergeCommit":false,"messageTitle":"Modified AboutUs.md to include developer info","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":19}}}]},{"date":"2024-03-06","commitResults":[{"hash":"8a49b8be4746cb0850f3136e007708a05b149dc0","isMergeCommit":false,"messageTitle":"Updated README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":9}}}]},{"date":"2024-03-09","commitResults":[{"hash":"d3fd72d8f330d663c40d08ec44e2684d0688459e","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"Co-authored-by: Miffi \u003cmiffi@decadent.rest\u003e","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"8e75f55f351bfa16d8b002024382562835a69376","isMergeCommit":false,"messageTitle":"Changed AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":9}}},{"hash":"aa778530123e214a3b3e90ac49a8984e9761664b","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W13-2:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ee43d4aab9b3af38c1559e3000151ca39f3064b4","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/The-Dudeski/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"66bf7ef0512eb4cbf2799d568d1011d3f3497853","isMergeCommit":true,"messageTitle":"Merge pull request #12 from The-Dudeski/master","messageBody":"Changed README.md and AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"6e126a335fabee3861ca195d3800701611c1111a","isMergeCommit":false,"messageTitle":"Added Viewing Contacts to DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":17,"deletions":1}}}]},{"date":"2024-03-20","commitResults":[{"hash":"198ec65b2f000fc26f2d1bef4feaf29532fb18b5","isMergeCommit":false,"messageTitle":"Changed prefixes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":6}}}]},{"date":"2024-03-21","commitResults":[{"hash":"16a25385ab7352f82b4bd0b15ca1df65a2f1c088","isMergeCommit":false,"messageTitle":"Changed test cases for Tag and Untag","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"96447e0a0b456755ef556480ab0f904c79a09a37","isMergeCommit":false,"messageTitle":"Fixed indentation errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]}],"Derekljh":[{"date":"2024-03-06","commitResults":[{"hash":"a1fb0994ba5fa66848396b45e6ea1a3678a3d049","isMergeCommit":false,"messageTitle":"Add Use Case - Remove Contact","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"8d1468e4a804f923e145696a6b392191a9f8a1f9","isMergeCommit":false,"messageTitle":"Add user stories","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":8}}},{"hash":"212dc9656abe0b5b84abc5652bafac7799153be3","isMergeCommit":false,"messageTitle":"Add product scope","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}}]},{"date":"2024-03-09","commitResults":[{"hash":"7b5d46cb7b352523035e7a393a0821f78a2824c2","isMergeCommit":true,"messageTitle":"Merge pull request #26 from miffi/use-case-tag","messageBody":"Add a use case for tagging","fileTypesAndContributionMap":{}}]},{"date":"2024-03-13","commitResults":[{"hash":"5ce658ccac48cda8189cd687065ced696cb953c7","isMergeCommit":false,"messageTitle":"Fix TagCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":76,"deletions":13}}},{"hash":"0321684551408f097089cc1af41cb99e1234c9fa","isMergeCommit":false,"messageTitle":"Fix TagCommand with exceptions","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":11}}}]},{"date":"2024-03-16","commitResults":[{"hash":"23870f423807e4e72cb67d7e0493d2687e9dcd37","isMergeCommit":false,"messageTitle":"Fix code to pass CI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":78,"deletions":63}}},{"hash":"80e9f70e94b5686bae7a627c0a2586f1e6b56455","isMergeCommit":false,"messageTitle":"Fix code to pass CI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":9}}},{"hash":"b678bedf646556788e90c5610fe08f42e67c6d1b","isMergeCommit":false,"messageTitle":"Fix code to pass CI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":3}}},{"hash":"f6e0074a9c5b14a41ae6fb9b81b3cc8976b72db9","isMergeCommit":false,"messageTitle":"Fix code to pass CI","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":5}}},{"hash":"620f3ce30d8c9cc783db8fd103ead75dd027b642","isMergeCommit":false,"messageTitle":"Amend Tagging function","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":28,"deletions":22}}},{"hash":"8862dc8d737be31ca5e8b398a73d38b008d10084","isMergeCommit":false,"messageTitle":"Add Tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":13},"test-code":{"insertions":166,"deletions":0}}},{"hash":"11f8429b0ac517d1b7f53ba779674d29e2520683","isMergeCommit":false,"messageTitle":"Add Tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":14},"test-code":{"insertions":164,"deletions":0}}},{"hash":"1baea652a9fadb72be5642b4b39abb07ebca1d32","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/Tagging-contacts\u0027 into Tagging-contacts","messageBody":"# Conflicts:\n#\tsrc/test/java/seedu/address/logic/commands/TagCommandTest.java\n#\tsrc/test/java/seedu/address/logic/parser/AddressBookParserTest.java\n#\tsrc/test/java/seedu/address/logic/parser/TagCommandParserTest.java\n","fileTypesAndContributionMap":{}}]},{"date":"2024-03-17","commitResults":[{"hash":"28eb7538933400177dc0c0c04f0d7b9029d4f0a9","isMergeCommit":false,"messageTitle":"Amend code for CI","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"84fb795913373f29fe99bebf800ed9494f6fa685","isMergeCommit":false,"messageTitle":"Amend code for tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":1,"deletions":2}}},{"hash":"93b3b7b820417b6326cdca1cbf064d360b98cf52","isMergeCommit":false,"messageTitle":"Amend code for tests v2","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":1},"test-code":{"insertions":2,"deletions":1}}}]},{"date":"2024-03-18","commitResults":[{"hash":"6e46c5e71fa8620e81b1d9fbd24e05062a9a1463","isMergeCommit":false,"messageTitle":"Amend code for tests v3","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"25a5f5e52a5558551e63d6b053d52ccc41c576fd","isMergeCommit":false,"messageTitle":"Amend code for tests v4","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-19","commitResults":[{"hash":"b13f80087067eac080ac8d83bae9c4b3996d7c16","isMergeCommit":false,"messageTitle":"Amend code for CI","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-21","commitResults":[{"hash":"424a123e27985e842f98836d1b78e419fede3951","isMergeCommit":false,"messageTitle":"Change error messages","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4}}},{"hash":"a12a4f105180855611e64f15cb5c71ffdbcb7ce6","isMergeCommit":true,"messageTitle":"Merge pull request #55 from Derekljh/master","messageBody":"Change error messages","fileTypesAndContributionMap":{}},{"hash":"819d2775c570858b6160a080ac7fa6cff665754e","isMergeCommit":false,"messageTitle":"Add UML diagram for TagCommand","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":0}}},{"hash":"d4159e3cea42864ef1d4675147a25df6bf2f683f","isMergeCommit":true,"messageTitle":"Merge pull request #59 from Derekljh/master","messageBody":"Add UML diagram for TagCommand","fileTypesAndContributionMap":{}}]},{"date":"2024-03-22","commitResults":[{"hash":"4448bd7d972a51befaa602e10c44d4589de6ba53","isMergeCommit":false,"messageTitle":"Move puml file for TagCommand under Diagram folder and add to git revision","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":67,"deletions":0}}},{"hash":"38bf1de89fced7d4c648289f3dc44b5a46621a09","isMergeCommit":false,"messageTitle":"Fix for CI","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"09ed52ade1e477dd7742b253a03e8d536ff22448","isMergeCommit":true,"messageTitle":"Merge pull request #60 from Derekljh/master","messageBody":"Move puml file for TagCommand under Diagram folder and add to git rev…","fileTypesAndContributionMap":{}}]}],"radeon2525":[{"date":"2024-03-07","commitResults":[{"hash":"c26e91116edc3b8c920a84a5f1b343e14c6c87a7","isMergeCommit":false,"messageTitle":"Added non functional requirements","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":138,"deletions":74}}},{"hash":"a804a00762f779d62d05e6459d9d1aecd1af82c0","isMergeCommit":false,"messageTitle":"Add use case-add contacts","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":1}}}]},{"date":"2024-03-09","commitResults":[{"hash":"11fdeedeb47cb3cf3fe23d1617d451ade9096aed","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-contacts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"812cbde3bffc72892e26ff97e41b2cdd1d785d0a","isMergeCommit":true,"messageTitle":"Merge pull request #24 from radeon2525/add-contacts","messageBody":"Add use case-add contacts","fileTypesAndContributionMap":{}}]},{"date":"2024-03-11","commitResults":[{"hash":"fa39c44099ab9fe131e2f269152c852ebda35feb","isMergeCommit":false,"messageTitle":"Add TagCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":58,"deletions":0},"test-code":{"insertions":5,"deletions":0}}}]},{"date":"2024-03-16","commitResults":[{"hash":"f4d8a6c8c2485572c39d944c128f3998a18ab7d0","isMergeCommit":false,"messageTitle":"Add test cases for AddCommand and LogicManager","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1},"test-code":{"insertions":40,"deletions":1}}},{"hash":"55783b650b8ad6a292172724d7badc50bd48743c","isMergeCommit":false,"messageTitle":"Fix style issues","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":3}}},{"hash":"c04b00c60e48bd4cd84b605114e831d4d4e06192","isMergeCommit":false,"messageTitle":"FIx unused import statement","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":2}}}]},{"date":"2024-03-18","commitResults":[{"hash":"68933d1ab2212d4f62d166ec877b936d920cee05","isMergeCommit":true,"messageTitle":"Merge pull request #40 from radeon2525/add-contacts-1.2","messageBody":"Add test cases for AddCommand and LogicManager","fileTypesAndContributionMap":{}},{"hash":"ac4c9b909115aa9a4281827909beaa6b9ae4c916","isMergeCommit":false,"messageTitle":"Add undo and redo functionality","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":422,"deletions":29},"test-code":{"insertions":83,"deletions":32}}},{"hash":"983cb8e8fdabef88080208c6364d4be83e1511af","isMergeCommit":false,"messageTitle":"Fix style issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":230,"deletions":233}}},{"hash":"e9476ac55707935d9570ee974be6ef7c21249e92","isMergeCommit":false,"messageTitle":"Fix InvalidationListenerManager style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":48,"deletions":48}}},{"hash":"5dca2e8725da1c28505eb6d36976d54bde04a13b","isMergeCommit":false,"messageTitle":"Add newline","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2}}},{"hash":"90ec28516205a7bc34e319595d029c62bf6333b4","isMergeCommit":false,"messageTitle":"Style fixes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"aebc14aa8c3ccbb0d43be5b2aa7ceda5bca31bad","isMergeCommit":false,"messageTitle":"Fix style errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":14}}},{"hash":"dc7983f931203fdaf1b780c854adf86d626c028a","isMergeCommit":false,"messageTitle":"Add import statements in AddressBookParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":0}}},{"hash":"25bdcac4f211c5e3fb39c9e098657218fb757102","isMergeCommit":false,"messageTitle":"Fix import statement ordering","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"899d0fb03035dd0133b8c746aee8c1703705c71b","isMergeCommit":false,"messageTitle":"Fix lexicographic ordering","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"088cff83b530d37ce817429ef562d613438f6e66","isMergeCommit":false,"messageTitle":"Change execute method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":11,"deletions":11}}},{"hash":"dd267c44a0ddb442d142ec95c116885e99d88d48","isMergeCommit":false,"messageTitle":"Remove unused statement","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"cc867e6fb49349bd59f10485756a7e3ff36063df","isMergeCommit":false,"messageTitle":"Change AddCommandTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":260,"deletions":26}}},{"hash":"ac7ac9d5cecff50c669d158aeb96f181d702f158","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into undo-redo","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4ac5daa7c5581d21b3cef7024df90d4a7ec50689","isMergeCommit":false,"messageTitle":"Fix testcase","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"1ae34ce0eee259b67c9ca5e0fd09582eb2c1f64e","isMergeCommit":true,"messageTitle":"Merge branch \u0027undo-redo\u0027 of https://github.com/radeon2525/tp into undo-redo","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"11c7fec6e5f00242e20eb702a0a6c37b225741b7","isMergeCommit":false,"messageTitle":"Fix testcase","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":1}}},{"hash":"ea0bca007fbb05f8f9025b2ee40205808be8685e","isMergeCommit":false,"messageTitle":"Fix style issues","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":14,"deletions":248}}},{"hash":"c1d343aa34141dc0351a15b999f8cbab498ae4a2","isMergeCommit":false,"messageTitle":"Fix bugs","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":102,"deletions":105}}}]},{"date":"2024-03-19","commitResults":[{"hash":"f3a672825d7fd5428c9dc8bc1324759514a37900","isMergeCommit":false,"messageTitle":"Fix style issues","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":11,"deletions":21}}},{"hash":"2d1e4739829d86b2dc8682e3365a0d4cd3e15ee9","isMergeCommit":false,"messageTitle":"Fix styling","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":3}}},{"hash":"b6890cc0986cfb6f9066c35f7174aeeb7995799b","isMergeCommit":false,"messageTitle":"Fix styling","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":49}}},{"hash":"ca336496439723ecf3b60706776edfca565156d4","isMergeCommit":false,"messageTitle":"Fix styling","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":50}}},{"hash":"ec38dcb8cff1fad9c2e0049629193240b1530423","isMergeCommit":false,"messageTitle":"Remove redundant methods","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":30}}},{"hash":"32a0b0a1ccb6863c0875578fe8f3cb2f40a0d379","isMergeCommit":false,"messageTitle":"Fix","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"aae418a367e0e6ed1694073ab92f4ebca30131d8","isMergeCommit":false,"messageTitle":"Add CommandHistoryTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":79,"deletions":0}}},{"hash":"15d8644709215cb75afe2ddac2be30f26d140419","isMergeCommit":false,"messageTitle":"Fix","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"c9cb32ebb2f4051074ef74828fda9bc2230880fe","isMergeCommit":false,"messageTitle":"Add InvalidationListenerManagerTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":37,"deletions":0},"test-code":{"insertions":72,"deletions":0}}},{"hash":"f9c2030eb89e2c3f0c2c63beeb72849b82f6e49e","isMergeCommit":false,"messageTitle":"Fix style issues","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":72,"deletions":72}}},{"hash":"b78b4324d994951f106f711c3ca52182eb9c428f","isMergeCommit":false,"messageTitle":"Add VersionedAddressBookTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":298,"deletions":0}}},{"hash":"cb7b917887fe25972992ce5d134e8fd2c5535329","isMergeCommit":false,"messageTitle":"Change ModelManagerTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":0}}},{"hash":"a985704ac3138e392efc025dbcd69b6bb70b7a39","isMergeCommit":false,"messageTitle":"Add tests for Undo and Redo","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":103,"deletions":0}}},{"hash":"a0470da22626b42bb8d682e764de26921bbdebb6","isMergeCommit":false,"messageTitle":"Add tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":43,"deletions":0}}},{"hash":"1e95263915ba8eb6fd35407b8dc4377a6aa6f2da","isMergeCommit":false,"messageTitle":"Fix","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}},{"hash":"9ab1f0b5c5292810b7dc200971510c5ac69a982c","isMergeCommit":false,"messageTitle":"Remove redundant method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":31}}},{"hash":"9b22ee25b6d4472c5f37223d4da33cdd7340d148","isMergeCommit":false,"messageTitle":"Add testcase","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":8},"test-code":{"insertions":13,"deletions":8}}},{"hash":"c815e5fe278e85845ef6748391face3effbf9af3","isMergeCommit":false,"messageTitle":"Fix","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":11,"deletions":1}}},{"hash":"78b4f6553c7b75e47d315c1f7683de76644e241d","isMergeCommit":false,"messageTitle":"Fix","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"19ba4a69a6c02f1942a74a8b01b04549b66ca106","isMergeCommit":false,"messageTitle":"fix","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"7a60849c79d5798c1310e6e16453dc9b237868df","isMergeCommit":false,"messageTitle":"Fix","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":94,"deletions":1}}},{"hash":"997ec6b0e532b83a80f180a5674506ec073b3438","isMergeCommit":false,"messageTitle":"Fix","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":12,"deletions":12}}},{"hash":"b33bde607f5658aa8e6cbe66e23727a1af98eccf","isMergeCommit":false,"messageTitle":"Fix","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":13,"deletions":11}}},{"hash":"ef64296a734d40f51839ab384e9e81a43b3e7f9a","isMergeCommit":false,"messageTitle":"fix","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":2}}},{"hash":"41b41cdba3eb64fe4e30621942ee10d5c5112a88","isMergeCommit":false,"messageTitle":"fix","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":0}}}]},{"date":"2024-03-20","commitResults":[{"hash":"dc871e7befcf475f221fbd33b44f7fa229f63323","isMergeCommit":false,"messageTitle":"Fixed indicateModified method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":25,"deletions":12}}},{"hash":"87d0913c9d38635dff5f3d1c1a9b9fbaea14aa53","isMergeCommit":false,"messageTitle":"Fix","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"fc45214f00eb253f59e8352cb164dd6203392790","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into undo-redo","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"23f834e96cf11422d1c104f00e06a34a10c5962f","isMergeCommit":false,"messageTitle":"Fix Tagging","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":18,"deletions":7},"test-code":{"insertions":6,"deletions":26}}},{"hash":"6d5c7d665d48f5ace5b1cc10faaa883314f8da34","isMergeCommit":false,"messageTitle":"fix","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"abea10f995c101f39689a5cd37f801981e0804af","isMergeCommit":false,"messageTitle":"fix","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":4}}},{"hash":"e4458c5c336c1752393da22b1fad6e8a69bad0c7","isMergeCommit":false,"messageTitle":"fix","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"139548a0eef87061f5aab0b87e5db8c9b266fdaa","isMergeCommit":false,"messageTitle":"Add tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"test-code":{"insertions":69,"deletions":0}}},{"hash":"e0b5b6b5126fc1046a7f21c5cd9812bd629eb1ee","isMergeCommit":false,"messageTitle":"fix","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"5148f5536ab841e27a35462d03a1ba99e4be7211","isMergeCommit":false,"messageTitle":"fix","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":2}}},{"hash":"e377c0a3c5d7391735e9410cd9978094903f451b","isMergeCommit":false,"messageTitle":"fix","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"0d6ba9adca101603ab673db46c79e2773fc9daa0","isMergeCommit":true,"messageTitle":"Merge pull request #48 from radeon2525/undo-redo","messageBody":"Add undo and redo functionality","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"d985b4372addafaa126e6c6bf3abffab38c038b3","isMergeCommit":false,"messageTitle":"Fix for tag and untag","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":0}}},{"hash":"e015b64ee886665a795d0ed839fd6ce141ab5273","isMergeCommit":false,"messageTitle":"fix","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":18}}},{"hash":"ffb79e262a0c5546ed782f0d443b6b17ee623209","isMergeCommit":false,"messageTitle":"fix","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":3}}},{"hash":"0f2044b809eb507c77ac89afce201c26474ebeb0","isMergeCommit":true,"messageTitle":"Merge pull request #57 from radeon2525/master","messageBody":"Fix for tag and untag","fileTypesAndContributionMap":{}}]},{"date":"2024-03-22","commitResults":[{"hash":"e8a163c0a62206a9ce4f9b73769c18b4da406264","isMergeCommit":false,"messageTitle":"Add puml files for undo and redo","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":36,"deletions":0}}},{"hash":"e9fc989eac058d8de63d81f7ba332e453deb9b38","isMergeCommit":false,"messageTitle":"style fix","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":36,"deletions":36}}},{"hash":"4f531a68833ccd4ed5cf279c987df7febce78643","isMergeCommit":true,"messageTitle":"Merge pull request #61 from radeon2525/master","messageBody":"Add puml files for undo and redo","fileTypesAndContributionMap":{}}]}],"miffi":[{"date":"2024-02-24","commitResults":[{"hash":"c2e81d65d4cccdb3ed49d85508e1a72a4fbc4b86","isMergeCommit":false,"messageTitle":"Rename doc references of AB-3 to OfficeHarbor","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":20,"deletions":20}}},{"hash":"28789c919dd4b31b65c7aa8ed09a2dd87cc21ded","isMergeCommit":true,"messageTitle":"Merge pull request #1 from miffi/rename-codebase","messageBody":"Rename doc references of AB-3 to OfficeHarbor","fileTypesAndContributionMap":{}}]},{"date":"2024-03-06","commitResults":[{"hash":"c0eb71a6449f317ce92e27565041be7ecf07b425","isMergeCommit":true,"messageTitle":"Merge pull request #8 from JukeBoxK/master","messageBody":"Update the User Guide","fileTypesAndContributionMap":{}}]},{"date":"2024-03-08","commitResults":[{"hash":"fe86fdfaa26d0b484af8726b10eaf57b64081c85","isMergeCommit":false,"messageTitle":"Add a use case for tagging","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":26,"deletions":1}}}]},{"date":"2024-03-09","commitResults":[{"hash":"9d6866fd753f58ab68dbebbd56f6a30f5dce2138","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into NFR","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"7fced1ccd306a516e5f2c3c36442e091fa817627","isMergeCommit":true,"messageTitle":"Merge pull request #23 from radeon2525/NFR","messageBody":"Add non functional requirements","fileTypesAndContributionMap":{}},{"hash":"4680017e1aa3b75029a6c86dab32e7ddfdf9b86f","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into port-user-stories-and-product-scope","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"27c9c32db685a05811b8a234035b1626f6802cb9","isMergeCommit":true,"messageTitle":"Merge pull request #17 from Derekljh/port-user-stories-and-product-scope","messageBody":"Port user stories and product scope","fileTypesAndContributionMap":{}},{"hash":"513d35b037cedeec1c09cb8d55edd7e340b7e061","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-UseCase-DeleteTag","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"474f28efd015b6aac0e21a6bae33ca003cd276f6","isMergeCommit":true,"messageTitle":"Merge pull request #27 from JukeBoxK/branch-UseCase-DeleteTag","messageBody":"Add use case for deleting tag","fileTypesAndContributionMap":{}},{"hash":"ad73271145db2cdbd29bf544525f429f638b1a4c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into Use-Case-Remove-Contacts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ff8243bdf16a4e9aac2ec018720a4576a3118d3a","isMergeCommit":true,"messageTitle":"Merge pull request #15 from Derekljh/Use-Case-Remove-Contacts","messageBody":"Add Use Case - Remove Contact","fileTypesAndContributionMap":{}}]},{"date":"2024-03-16","commitResults":[{"hash":"b215c54550100887b54dc08b9b56bfeb7f859cdf","isMergeCommit":false,"messageTitle":"Add untag command","messageBody":"As a counterpart to the tagging command, this command untags a user from\nsome tags.\n\nThis implementation can do multiple tags at the same time to amke\nremoving tags faster. It throws an error on non matching tags, but that\ncan be changed if that is not desirable e.g. if batch operations are\nintroduced.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":142,"deletions":1},"test-code":{"insertions":157,"deletions":0}}},{"hash":"a1f6f8b401b3fa7ac2676095c3a41c91cc3292ca","isMergeCommit":false,"messageTitle":"Add developer roles","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":6}}},{"hash":"096fd31e707c2b98991a57a67bfa189c75c7d84c","isMergeCommit":false,"messageTitle":"Increase code coverage","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":40,"deletions":22}}},{"hash":"da091a46ec09cad7956e6ce803268cc4f25f63c4","isMergeCommit":false,"messageTitle":"Fix code style","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":8,"deletions":8}}}]},{"date":"2024-03-19","commitResults":[{"hash":"d1b84a19e8f8a224e8eb1680dbda266bbbf08a20","isMergeCommit":true,"messageTitle":"Merge pull request #41 from miffi/dev-roles","messageBody":"Add developer roles","fileTypesAndContributionMap":{}},{"hash":"d3ff94c66ed01f3c6106fa9187423072fcaf9bd7","isMergeCommit":true,"messageTitle":"Merge pull request #38 from miffi/untag","messageBody":"Add untag command","fileTypesAndContributionMap":{}},{"hash":"3cd570236a2ab168ab19599b8bd4d1f336bfefcb","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into Tagging-contacts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f96276d5001fb9e420c53c05513394b25e3cadb1","isMergeCommit":true,"messageTitle":"Merge pull request #32 from Derekljh/Tagging-contacts","messageBody":"Tagging contacts","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"3b0e4fb887d9c100f56ef56d5d29f78ad9275040","isMergeCommit":true,"messageTitle":"Merge pull request #50 from The-Dudeski/master","messageBody":"Changed prefixes","fileTypesAndContributionMap":{}}]}],"JukeBoxK":[{"date":"2024-02-29","commitResults":[{"hash":"221ddb4c24fb3fc650d1590e6cce283eba688a4c","isMergeCommit":false,"messageTitle":"Update the User Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":85,"deletions":70}}}]},{"date":"2024-03-09","commitResults":[{"hash":"16a942fb1739dad3348aed1eef2aa0159241f012","isMergeCommit":false,"messageTitle":"Add use case for deleting tag","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":29,"deletions":0}}},{"hash":"dd455d80900288969d93008522db5a6792c7d13d","isMergeCommit":true,"messageTitle":"Merge pull request #28 from The-Dudeski/master","messageBody":"Added Viewing Contacts Use Case","fileTypesAndContributionMap":{}}]},{"date":"2024-03-13","commitResults":[{"hash":"2f3b74d0d3f32f5d70225deb77e43f7d545bf840","isMergeCommit":false,"messageTitle":"Change output message for list command","messageBody":"The list command displays \"Listed all persons\" for all outputs.\n\nIt is not specific enough for the output list.\n\nLet\u0027s add the message \"The list is empty\" for empty lists instead.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":2}}},{"hash":"e91a02e930ae0e6dab18b814658156079044839a","isMergeCommit":false,"messageTitle":"Address style issue in code of List Command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"8ded7e9e5e257d69a1215871ce9d8da53b9c73ad","isMergeCommit":false,"messageTitle":"Address test issue with list command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-16","commitResults":[{"hash":"26f0cd21efa86b584f203a7e7398c277cf975d30","isMergeCommit":true,"messageTitle":"Merge pull request #30 from JukeBoxK/branch-ViewContact","messageBody":"Change output message for list command","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"4ef08bef397742ca3df0b80c18ee749969123bf3","isMergeCommit":false,"messageTitle":"Reorder the UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":50,"deletions":51}}},{"hash":"dc3578499f9528423add90db06b45aaff1c3574e","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-Documentation","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"14a7395d4140fc84a6ff748885c65cbed99070bb","isMergeCommit":false,"messageTitle":"Add information about undo/redo into the documentation","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":107,"deletions":46}}},{"hash":"094ec3dccc788b4d4002d50f65d566c5a6c903e4","isMergeCommit":false,"messageTitle":"Add EOF for UserGuide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"929e3ca8d816f44a0facef8b0a3dc9fb8529f18b","isMergeCommit":false,"messageTitle":"Change the tag and untag to the correct format","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":9}}},{"hash":"148df76c69a0de2d17197cc86375ad942a261314","isMergeCommit":true,"messageTitle":"Merge pull request #52 from JukeBoxK/branch-Documentation","messageBody":"Add information about undo/redo into the documentation","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"4bfcbc43aa7ba418cba4ba8e14371036a12ae014","isMergeCommit":false,"messageTitle":"Change the documentation to fit the new prefix","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":43,"deletions":36}}},{"hash":"d190c0d8f49f5a8fd7e553d9c48d69cf22d78fdd","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103T-W13-2/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a8f85b68a1d7ce17493248c3b807c2add459e793","isMergeCommit":false,"messageTitle":"Fix issue of no screenshot in user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":7}}},{"hash":"4ff517f09f52f091e6bf09bc7dcec5092117a980","isMergeCommit":true,"messageTitle":"Merge pull request #58 from JukeBoxK/branch-Documentation","messageBody":"Branch documentation","tags":["v1.2"],"fileTypesAndContributionMap":{}}]},{"date":"2024-03-24","commitResults":[{"hash":"32d096428c39696cd019fdfc58405f17e7e88ddf","isMergeCommit":false,"messageTitle":"Add UML Diagram for Commons","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":21,"deletions":1}}},{"hash":"8cab8f4b385b399a6389eb55433f32ccef4c329f","isMergeCommit":false,"messageTitle":"Fix EOF issue in the puml file","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"1d162ff6d0ca77458a818351dc330ab1e5497cf2","isMergeCommit":true,"messageTitle":"Merge pull request #63 from JukeBoxK/branch-Documentation","messageBody":"Add UML Diagram for Commons","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"The-Dudeski":{"docs":32,"functional-code":10,"test-code":2},"Derekljh":{"docs":74,"functional-code":116,"test-code":140},"radeon2525":{"docs":158,"functional-code":453,"test-code":905},"miffi":{"docs":36,"functional-code":138,"test-code":150,"other":1},"JukeBoxK":{"docs":247,"functional-code":5,"test-code":1}},"authorContributionVariance":{"The-Dudeski":103.03846,"Derekljh":11243.254,"radeon2525":157036.0,"miffi":5084.263,"JukeBoxK":3133.773},"authorDisplayNameMap":{"The-Dudeski":"CS2103T-W13-2 DUDE..NZIO","Derekljh":"CS2103T-W13-2 LEON..EREK","radeon2525":"CS2103T-W13-2 MAHI..SHIM","miffi":"CS2103T-W13-2 AHMA..AQUE","JukeBoxK":"CS2103T-W13-2 KYAW..YINT"}} diff --git a/archive.zip b/archive.zip index b0b61d0b..9cdd71f5 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 5541a380..f138e818 100644 --- a/reposense-logs/reposense.log.0 +++ b/reposense-logs/reposense.log.0 @@ -1,52 +1,52 @@ -Mar 24, 2024 4:15:14 AM reposense.system.LogsManager addFileHandler +Mar 24, 2024 12:47:45 PM reposense.system.LogsManager addFileHandler INFO: Log temp folder has been successfully created -Mar 24, 2024 4:15:14 AM reposense.parser.CsvParser validateHeader +Mar 24, 2024 12:47:45 PM reposense.parser.CsvParser validateHeader INFO: Parsed header of CSV file, repo-config.csv, and recognized columns: Ignore Standalone Config, Repository's Location, Branch, Shallow Cloning, File formats, Ignore Glob List, Ignore Authors List, Find Previous Authors, Ignore Commits List -Mar 24, 2024 4:15:14 AM reposense.parser.CsvParser validateHeader +Mar 24, 2024 12:47:46 PM reposense.parser.CsvParser validateHeader INFO: Parsed header of CSV file, author-config.csv, and recognized columns: Author's Emails, Repository's Location, Author's GitHub ID, Branch, Author's Display Name, Ignore Glob List, Author's Git Author Name -Mar 24, 2024 4:15:14 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Mar 24, 2024 12:47:46 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias guohuang found. The alias will belong to the last author - guohuang88 -Mar 24, 2024 4:15:14 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Mar 24, 2024 12:47:46 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias amanzainal found. The alias will belong to the last author - amanzainal -Mar 24, 2024 4:15:14 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Mar 24, 2024 12:47:46 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias shuyuan found. The alias will belong to the last author - legionlegion -Mar 24, 2024 4:15:14 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Mar 24, 2024 12:47:46 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias chen wenlong found. The alias will belong to the last author - c-wenlong -Mar 24, 2024 4:15:14 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Mar 24, 2024 12:47:46 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias alphajae11 found. The alias will belong to the last author - alphajae11 -Mar 24, 2024 4:15:14 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Mar 24, 2024 12:47:46 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias pughal found. The alias will belong to the last author - Pughal77 -Mar 24, 2024 4:15:14 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Mar 24, 2024 12:47:46 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias rah found. The alias will belong to the last author - rahhulleee -Mar 24, 2024 4:15:14 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Mar 24, 2024 12:47:46 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jayne1010 found. The alias will belong to the last author - Jayne1010 -Mar 24, 2024 4:15:14 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Mar 24, 2024 12:47:46 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias miffi found. The alias will belong to the last author - miffi -Mar 24, 2024 4:15:14 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Mar 24, 2024 12:47:46 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias liu jiayao found. The alias will belong to the last author - ljy0422 -Mar 24, 2024 4:15:14 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Mar 24, 2024 12:47:46 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias guohuang found. The alias will belong to the last author - guohuang88 -Mar 24, 2024 4:15:14 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Mar 24, 2024 12:47:46 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias amanzainal found. The alias will belong to the last author - amanzainal -Mar 24, 2024 4:15:14 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Mar 24, 2024 12:47:46 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias shuyuan found. The alias will belong to the last author - legionlegion -Mar 24, 2024 4:15:14 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Mar 24, 2024 12:47:46 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias alphajae11 found. The alias will belong to the last author - alphajae11 -Mar 24, 2024 4:15:14 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Mar 24, 2024 12:47:46 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias pughal found. The alias will belong to the last author - Pughal77 -Mar 24, 2024 4:15:14 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Mar 24, 2024 12:47:46 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias liu jiayao found. The alias will belong to the last author - ljy0422 -Mar 24, 2024 4:15:14 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Mar 24, 2024 12:47:46 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias chen wenlong found. The alias will belong to the last author - c-wenlong -Mar 24, 2024 4:15:14 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Mar 24, 2024 12:47:46 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias rah found. The alias will belong to the last author - rahhulleee -Mar 24, 2024 4:15:14 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Mar 24, 2024 12:47:46 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jayne1010 found. The alias will belong to the last author - Jayne1010 -Mar 24, 2024 4:15:14 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Mar 24, 2024 12:47:46 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias miffi found. The alias will belong to the last author - miffi -Mar 24, 2024 4:15:14 AM reposense.parser.CsvParser validateHeader +Mar 24, 2024 12:47:46 PM reposense.parser.CsvParser validateHeader INFO: Parsed header of CSV file, group-config.csv, and recognized columns: Globs, Repository's Location, Group Name -Mar 24, 2024 4:15:14 AM reposense.git.GitConfig getGlobalGitLfsConfig +Mar 24, 2024 12:47:46 PM reposense.git.GitConfig getGlobalGitLfsConfig WARNING: Could not get global git lfs config java.lang.RuntimeException: reposense.system.CommandRunnerProcessException: Error returned from command git config --global --list on path . : fatal: unable to read config file '/home/runner/.gitconfig': No such file or directory @@ -62,1663 +62,1663 @@ fatal: unable to read config file '/home/runner/.gitconfig': No such file or dir at reposense.system.CommandRunner.runCommand(CommandRunner.java:21) ... 3 more -Mar 24, 2024 4:15:14 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:47:46 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T16-1/tp.git... -Mar 24, 2024 4:15:14 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:47:46 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W10-4/tp.git... -Mar 24, 2024 4:15:14 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103-F15-2/tp.git... -Mar 24, 2024 4:15:14 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:47:46 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F13-3/tp.git... -Mar 24, 2024 4:15:14 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:47:46 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103-F15-2/tp.git... +Mar 24, 2024 12:47:46 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W10-4/tp.git to complete... +Mar 24, 2024 12:47:46 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T16-1/tp.git to complete... -Mar 24, 2024 4:15:14 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:47:46 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103-F15-2/tp.git to complete... -Mar 24, 2024 4:15:14 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:47:46 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F13-3/tp.git to complete... -Mar 24, 2024 4:15:14 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W10-4/tp.git to complete... -Mar 24, 2024 4:15:15 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:47:47 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103-F15-2/tp.git completed! -Mar 24, 2024 4:15:15 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:47:47 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F10-3/tp.git... -Mar 24, 2024 4:15:15 AM reposense.report.ReportGenerator analyzeRepos +Mar 24, 2024 12:47:47 PM reposense.report.ReportGenerator analyzeRepos INFO: [1/92] Analyzing https://github.com/AY2324S2-CS2103-F15-2/tp.git (master)... -Mar 24, 2024 4:15:15 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:47:47 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F10-3/tp.git to complete... -Mar 24, 2024 4:15:15 AM reposense.report.ReportGenerator updateRepoConfig +Mar 24, 2024 12:47:47 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103-F15-2/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:15:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 24, 2024 12:47:47 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F15-2/tp.git (master)... -Mar 24, 2024 4:15:16 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T16-1/tp.git completed! -Mar 24, 2024 4:15:16 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:47:47 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-F13-3/tp.git completed! +Mar 24, 2024 12:47:47 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W13-4/tp.git... -Mar 24, 2024 4:15:16 AM reposense.report.ReportGenerator analyzeRepos -INFO: [2/92] Analyzing https://github.com/AY2324S2-CS2103T-T16-1/tp.git (master)... -Mar 24, 2024 4:15:16 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:47:47 PM reposense.report.ReportGenerator analyzeRepos +INFO: [2/92] Analyzing https://github.com/AY2324S2-CS2103T-F13-3/tp.git (master)... +Mar 24, 2024 12:47:47 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W13-4/tp.git to complete... -Mar 24, 2024 4:15:16 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-W10-4/tp.git completed! -Mar 24, 2024 4:15:16 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:47:47 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T16-1/tp.git completed! +Mar 24, 2024 12:47:47 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F10-2/tp.git... -Mar 24, 2024 4:15:16 AM reposense.report.ReportGenerator analyzeRepos -INFO: [3/92] Analyzing https://github.com/AY2324S2-CS2103T-W10-4/tp.git (master)... -Mar 24, 2024 4:15:16 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:47:47 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-F13-3/tp.git (master) does not contain a standalone config file. +Mar 24, 2024 12:47:47 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F13-3/tp.git (master)... +Mar 24, 2024 12:47:47 PM reposense.report.ReportGenerator analyzeRepos +INFO: [3/92] Analyzing https://github.com/AY2324S2-CS2103T-T16-1/tp.git (master)... +Mar 24, 2024 12:47:47 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F10-2/tp.git to complete... -Mar 24, 2024 4:15:16 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-F13-3/tp.git completed! -Mar 24, 2024 4:15:16 AM reposense.report.ReportGenerator updateRepoConfig +Mar 24, 2024 12:47:48 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-W10-4/tp.git completed! +Mar 24, 2024 12:47:48 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T16-1/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:15:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 24, 2024 12:47:48 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T16-1/tp.git (master)... -Mar 24, 2024 4:15:16 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:47:48 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103-F15-3/tp.git... -Mar 24, 2024 4:15:16 AM reposense.report.ReportGenerator analyzeRepos -INFO: [4/92] Analyzing https://github.com/AY2324S2-CS2103T-F13-3/tp.git (master)... -Mar 24, 2024 4:15:16 AM reposense.report.ReportGenerator updateRepoConfig +Mar 24, 2024 12:47:48 PM reposense.report.ReportGenerator analyzeRepos +INFO: [4/92] Analyzing https://github.com/AY2324S2-CS2103T-W10-4/tp.git (master)... +Mar 24, 2024 12:47:48 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103-F15-3/tp.git to complete... +Mar 24, 2024 12:47:48 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-W10-4/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:15:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 24, 2024 12:47:48 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W10-4/tp.git (master)... -Mar 24, 2024 4:15:16 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103-F15-3/tp.git to complete... -Mar 24, 2024 4:15:16 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-F13-3/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:15:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F13-3/tp.git (master)... -Mar 24, 2024 4:15:17 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103-F15-3/tp.git completed! -Mar 24, 2024 4:15:17 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-F10-3/tp.git completed! -Mar 24, 2024 4:15:18 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:47:49 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-W13-4/tp.git completed! +Mar 24, 2024 12:47:49 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103-F15-1/tp.git... -Mar 24, 2024 4:15:18 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:47:49 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-F10-3/tp.git completed! +Mar 24, 2024 12:47:49 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103-F15-1/tp.git to complete... -Mar 24, 2024 4:15:18 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:47:49 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T16-2/tp.git... -Mar 24, 2024 4:15:18 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:47:49 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T16-2/tp.git to complete... -Mar 24, 2024 4:15:18 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-W13-4/tp.git completed! -Mar 24, 2024 4:15:18 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:47:49 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103-F15-3/tp.git completed! +Mar 24, 2024 12:47:49 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T10-1/tp.git... -Mar 24, 2024 4:15:18 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:47:49 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T10-1/tp.git to complete... -Mar 24, 2024 4:15:18 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:47:50 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-F10-2/tp.git completed! -Mar 24, 2024 4:15:18 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:47:50 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F13-2/tp.git... -Mar 24, 2024 4:15:18 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:47:50 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F13-2/tp.git to complete... -Mar 24, 2024 4:15:19 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 24, 2024 12:47:51 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F15-2/tp.git (master)... -Mar 24, 2024 4:15:19 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:47:51 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103-F15-1/tp.git completed! -Mar 24, 2024 4:15:19 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:47:51 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F13-4/tp.git... -Mar 24, 2024 4:15:19 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:47:51 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F13-4/tp.git to complete... -Mar 24, 2024 4:15:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F15-2/tp.git (master)... -Mar 24, 2024 4:15:19 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:47:51 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T16-2/tp.git completed! -Mar 24, 2024 4:15:19 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:47:51 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W10-3/tp.git... -Mar 24, 2024 4:15:19 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:47:51 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F15-2/tp.git (master)... +Mar 24, 2024 12:47:51 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W10-3/tp.git to complete... -Mar 24, 2024 4:15:20 AM reposense.report.ReportGenerator analyzeRepo +Mar 24, 2024 12:47:51 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103-F15-2/tp.git (master) completed! -Mar 24, 2024 4:15:20 AM reposense.report.ReportGenerator analyzeRepos -INFO: [5/92] Analyzing https://github.com/AY2324S2-CS2103-F15-3/tp.git (master)... -Mar 24, 2024 4:15:20 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103-F15-3/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:15:20 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F15-3/tp.git (master)... -Mar 24, 2024 4:15:20 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-F13-2/tp.git completed! -Mar 24, 2024 4:15:20 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:47:51 PM reposense.report.ReportGenerator analyzeRepos +INFO: [5/92] Analyzing https://github.com/AY2324S2-CS2103T-W13-4/tp.git (master)... +Mar 24, 2024 12:47:52 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-W13-4/tp.git (master) does not contain a standalone config file. +Mar 24, 2024 12:47:52 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W13-4/tp.git (master)... +Mar 24, 2024 12:47:52 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T10-1/tp.git completed! +Mar 24, 2024 12:47:52 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T13-2/tp.git... -Mar 24, 2024 4:15:20 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:47:52 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T13-2/tp.git to complete... -Mar 24, 2024 4:15:21 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W10-4/tp.git (master)... -Mar 24, 2024 4:15:21 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-W10-3/tp.git completed! -Mar 24, 2024 4:15:21 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:47:53 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-F13-2/tp.git completed! +Mar 24, 2024 12:47:53 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T13-1/tp.git... -Mar 24, 2024 4:15:21 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:47:53 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T13-1/tp.git to complete... -Mar 24, 2024 4:15:21 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:47:53 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-F13-4/tp.git completed! -Mar 24, 2024 4:15:21 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:47:53 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T10-2/tp.git... -Mar 24, 2024 4:15:21 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:47:53 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T10-2/tp.git to complete... -Mar 24, 2024 4:15:21 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T10-1/tp.git completed! -Mar 24, 2024 4:15:21 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:47:53 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-W10-3/tp.git completed! +Mar 24, 2024 12:47:53 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F13-1/tp.git... -Mar 24, 2024 4:15:22 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:47:53 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F13-1/tp.git to complete... -Mar 24, 2024 4:15:22 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W10-4/tp.git (master)... -Mar 24, 2024 4:15:22 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-W10-4/tp.git (master) completed! -Mar 24, 2024 4:15:22 AM reposense.report.ReportGenerator analyzeRepos -INFO: [6/92] Analyzing https://github.com/AY2324S2-CS2103T-F10-3/tp.git (master)... -Mar 24, 2024 4:15:22 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-F10-3/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:15:22 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F10-3/tp.git (master)... -Mar 24, 2024 4:15:22 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:47:54 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T13-2/tp.git completed! -Mar 24, 2024 4:15:22 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:47:54 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103-F15-4/tp.git... -Mar 24, 2024 4:15:22 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:47:54 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103-F15-4/tp.git to complete... -Mar 24, 2024 4:15:24 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T10-2/tp.git completed! -Mar 24, 2024 4:15:24 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W13-3/tp.git... -Mar 24, 2024 4:15:24 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:47:55 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T13-1/tp.git completed! -Mar 24, 2024 4:15:24 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:47:55 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W13-3/tp.git... +Mar 24, 2024 12:47:55 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T10-2/tp.git completed! +Mar 24, 2024 12:47:55 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W13-3/tp.git to complete... -Mar 24, 2024 4:15:24 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:47:55 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W13-2/tp.git... -Mar 24, 2024 4:15:24 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:47:55 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W13-2/tp.git to complete... +Mar 24, 2024 12:47:55 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-F13-1/tp.git completed! -Mar 24, 2024 4:15:24 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:47:55 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T16-4/tp.git... -Mar 24, 2024 4:15:24 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W13-2/tp.git to complete... -Mar 24, 2024 4:15:24 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:47:55 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T16-4/tp.git to complete... -Mar 24, 2024 4:15:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F15-3/tp.git (master)... -Mar 24, 2024 4:15:24 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:47:55 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W10-4/tp.git (master)... +Mar 24, 2024 12:47:55 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W10-4/tp.git (master)... +Mar 24, 2024 12:47:56 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-W10-4/tp.git (master) completed! +Mar 24, 2024 12:47:56 PM reposense.report.ReportGenerator analyzeRepos +INFO: [6/92] Analyzing https://github.com/AY2324S2-CS2103T-F10-3/tp.git (master)... +Mar 24, 2024 12:47:56 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103-F15-4/tp.git completed! -Mar 24, 2024 4:15:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F15-3/tp.git (master)... -Mar 24, 2024 4:15:24 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:47:56 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W10-1/tp.git... -Mar 24, 2024 4:15:24 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:47:56 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W10-1/tp.git to complete... -Mar 24, 2024 4:15:24 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103-F15-3/tp.git (master) completed! -Mar 24, 2024 4:15:24 AM reposense.report.ReportGenerator analyzeRepos -INFO: [7/92] Analyzing https://github.com/AY2324S2-CS2103T-W13-4/tp.git (master)... -Mar 24, 2024 4:15:25 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-W13-4/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:15:25 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W13-4/tp.git (master)... -Mar 24, 2024 4:15:25 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:47:56 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-F10-3/tp.git (master) does not contain a standalone config file. +Mar 24, 2024 12:47:56 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F10-3/tp.git (master)... +Mar 24, 2024 12:47:56 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-W13-2/tp.git completed! -Mar 24, 2024 4:15:25 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:47:56 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T13-3/tp.git... -Mar 24, 2024 4:15:25 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:47:56 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T13-3/tp.git to complete... -Mar 24, 2024 4:15:25 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T16-4/tp.git completed! -Mar 24, 2024 4:15:25 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:47:56 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-W13-3/tp.git completed! +Mar 24, 2024 12:47:56 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T13-4/tp.git... -Mar 24, 2024 4:15:26 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:47:56 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T13-4/tp.git to complete... -Mar 24, 2024 4:15:26 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-W13-3/tp.git completed! -Mar 24, 2024 4:15:26 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:47:57 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T16-4/tp.git completed! +Mar 24, 2024 12:47:57 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W10-2/tp.git... -Mar 24, 2024 4:15:26 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:47:57 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W10-2/tp.git to complete... -Mar 24, 2024 4:15:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F13-3/tp.git (master)... -Mar 24, 2024 4:15:26 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:47:58 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-W10-1/tp.git completed! -Mar 24, 2024 4:15:26 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:47:58 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F10-1/tp.git... -Mar 24, 2024 4:15:27 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:47:58 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W13-4/tp.git (master)... +Mar 24, 2024 12:47:58 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F10-1/tp.git to complete... -Mar 24, 2024 4:15:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F13-3/tp.git (master)... -Mar 24, 2024 4:15:27 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-F13-3/tp.git (master) completed! -Mar 24, 2024 4:15:27 AM reposense.report.ReportGenerator analyzeRepos -INFO: [8/92] Analyzing https://github.com/AY2324S2-CS2103T-F10-2/tp.git (master)... -Mar 24, 2024 4:15:27 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T13-4/tp.git completed! -Mar 24, 2024 4:15:27 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-F10-2/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:15:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F10-2/tp.git (master)... -Mar 24, 2024 4:15:27 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:47:58 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T13-3/tp.git completed! +Mar 24, 2024 12:47:58 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F10-4/tp.git... -Mar 24, 2024 4:15:27 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:47:58 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W13-4/tp.git (master)... +Mar 24, 2024 12:47:58 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T13-4/tp.git completed! +Mar 24, 2024 12:47:58 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F10-4/tp.git to complete... -Mar 24, 2024 4:15:27 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T13-3/tp.git completed! -Mar 24, 2024 4:15:27 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:47:58 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-W13-4/tp.git (master) completed! +Mar 24, 2024 12:47:58 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T16-3/tp.git... -Mar 24, 2024 4:15:27 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-W10-2/tp.git completed! -Mar 24, 2024 4:15:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T16-1/tp.git (master)... -Mar 24, 2024 4:15:27 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:47:58 PM reposense.report.ReportGenerator analyzeRepos +INFO: [7/92] Analyzing https://github.com/AY2324S2-CS2103-F15-3/tp.git (master)... +Mar 24, 2024 12:47:58 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T16-3/tp.git to complete... -Mar 24, 2024 4:15:27 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:47:58 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103-F15-3/tp.git (master) does not contain a standalone config file. +Mar 24, 2024 12:47:58 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F15-3/tp.git (master)... +Mar 24, 2024 12:47:58 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F13-3/tp.git (master)... +Mar 24, 2024 12:47:58 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-W10-2/tp.git completed! +Mar 24, 2024 12:47:58 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103-F09-3/tp.git... -Mar 24, 2024 4:15:27 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:47:58 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103-F09-3/tp.git to complete... -Mar 24, 2024 4:15:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T16-1/tp.git (master)... -Mar 24, 2024 4:15:28 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T16-1/tp.git (master) completed! -Mar 24, 2024 4:15:28 AM reposense.report.ReportGenerator analyzeRepos -INFO: [9/92] Analyzing https://github.com/AY2324S2-CS2103-F15-1/tp.git (master)... -Mar 24, 2024 4:15:28 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F10-3/tp.git (master)... -Mar 24, 2024 4:15:28 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103-F15-1/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:15:28 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F15-1/tp.git (master)... -Mar 24, 2024 4:15:28 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:47:59 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F13-3/tp.git (master)... +Mar 24, 2024 12:47:59 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-F13-3/tp.git (master) completed! +Mar 24, 2024 12:47:59 PM reposense.report.ReportGenerator analyzeRepos +INFO: [8/92] Analyzing https://github.com/AY2324S2-CS2103T-F10-2/tp.git (master)... +Mar 24, 2024 12:47:59 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-F10-2/tp.git (master) does not contain a standalone config file. +Mar 24, 2024 12:47:59 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F10-2/tp.git (master)... +Mar 24, 2024 12:47:59 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-F10-1/tp.git completed! -Mar 24, 2024 4:15:28 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:47:59 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T10-3/tp.git... -Mar 24, 2024 4:15:28 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:47:59 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T10-3/tp.git to complete... -Mar 24, 2024 4:15:28 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F10-3/tp.git (master)... -Mar 24, 2024 4:15:28 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-F10-3/tp.git (master) completed! -Mar 24, 2024 4:15:28 AM reposense.report.ReportGenerator analyzeRepos -INFO: [10/92] Analyzing https://github.com/AY2324S2-CS2103T-T16-2/tp.git (master)... -Mar 24, 2024 4:15:28 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T16-2/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:15:28 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T16-2/tp.git (master)... -Mar 24, 2024 4:15:29 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:00 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-F10-4/tp.git completed! -Mar 24, 2024 4:15:29 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:48:00 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103-F09-1/tp.git... -Mar 24, 2024 4:15:29 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:00 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T16-1/tp.git (master)... +Mar 24, 2024 12:48:00 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103-F09-1/tp.git to complete... -Mar 24, 2024 4:15:29 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:00 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T16-1/tp.git (master)... +Mar 24, 2024 12:48:00 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103-F09-3/tp.git completed! -Mar 24, 2024 4:15:29 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:48:00 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103-F09-4/tp.git... -Mar 24, 2024 4:15:29 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:00 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103-F09-4/tp.git to complete... -Mar 24, 2024 4:15:29 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:00 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T16-1/tp.git (master) completed! +Mar 24, 2024 12:48:00 PM reposense.report.ReportGenerator analyzeRepos +INFO: [9/92] Analyzing https://github.com/AY2324S2-CS2103-F15-1/tp.git (master)... +Mar 24, 2024 12:48:00 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103-F15-1/tp.git (master) does not contain a standalone config file. +Mar 24, 2024 12:48:00 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F15-1/tp.git (master)... +Mar 24, 2024 12:48:00 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T16-3/tp.git completed! -Mar 24, 2024 4:15:29 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:48:00 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103-F09-2/tp.git... -Mar 24, 2024 4:15:29 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:00 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103-F09-2/tp.git to complete... -Mar 24, 2024 4:15:30 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:01 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T10-3/tp.git completed! -Mar 24, 2024 4:15:30 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:48:01 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T09-4/tp.git... -Mar 24, 2024 4:15:30 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:01 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T09-4/tp.git to complete... -Mar 24, 2024 4:15:30 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:01 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103-F09-4/tp.git completed! -Mar 24, 2024 4:15:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W13-4/tp.git (master)... -Mar 24, 2024 4:15:30 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:48:01 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103-F08-4/tp.git... -Mar 24, 2024 4:15:30 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:02 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103-F08-4/tp.git to complete... -Mar 24, 2024 4:15:31 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:02 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F10-3/tp.git (master)... +Mar 24, 2024 12:48:02 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103-F09-1/tp.git completed! -Mar 24, 2024 4:15:31 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:48:02 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T09-3/tp.git... -Mar 24, 2024 4:15:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W13-4/tp.git (master)... -Mar 24, 2024 4:15:31 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:02 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T09-3/tp.git to complete... -Mar 24, 2024 4:15:31 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-W13-4/tp.git (master) completed! -Mar 24, 2024 4:15:31 AM reposense.report.ReportGenerator analyzeRepos -INFO: [11/92] Analyzing https://github.com/AY2324S2-CS2103T-F13-2/tp.git (master)... -Mar 24, 2024 4:15:31 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-F13-2/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:15:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F13-2/tp.git (master)... -Mar 24, 2024 4:15:31 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:02 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F10-3/tp.git (master)... +Mar 24, 2024 12:48:02 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-F10-3/tp.git (master) completed! +Mar 24, 2024 12:48:02 PM reposense.report.ReportGenerator analyzeRepos +INFO: [10/92] Analyzing https://github.com/AY2324S2-CS2103T-T16-2/tp.git (master)... +Mar 24, 2024 12:48:02 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T16-2/tp.git (master) does not contain a standalone config file. +Mar 24, 2024 12:48:02 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T16-2/tp.git (master)... +Mar 24, 2024 12:48:02 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103-F09-2/tp.git completed! -Mar 24, 2024 4:15:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T16-2/tp.git (master)... -Mar 24, 2024 4:15:31 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:48:02 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T12-4/tp.git... -Mar 24, 2024 4:15:32 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:02 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F15-3/tp.git (master)... +Mar 24, 2024 12:48:02 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T12-4/tp.git to complete... -Mar 24, 2024 4:15:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T16-2/tp.git (master)... -Mar 24, 2024 4:15:32 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T16-2/tp.git (master) completed! -Mar 24, 2024 4:15:32 AM reposense.report.ReportGenerator analyzeRepos -INFO: [12/92] Analyzing https://github.com/AY2324S2-CS2103T-W10-3/tp.git (master)... -Mar 24, 2024 4:15:32 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:03 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F15-3/tp.git (master)... +Mar 24, 2024 12:48:03 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103-F15-3/tp.git (master) completed! +Mar 24, 2024 12:48:03 PM reposense.report.ReportGenerator analyzeRepos +INFO: [11/92] Analyzing https://github.com/AY2324S2-CS2103T-T10-1/tp.git (master)... +Mar 24, 2024 12:48:03 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T09-4/tp.git completed! -Mar 24, 2024 4:15:32 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:48:03 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103-F08-2/tp.git... -Mar 24, 2024 4:15:32 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:03 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T10-1/tp.git (master) does not contain a standalone config file. +Mar 24, 2024 12:48:03 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T10-1/tp.git (master)... +Mar 24, 2024 12:48:03 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103-F08-2/tp.git to complete... -Mar 24, 2024 4:15:32 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-W10-3/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:15:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W10-3/tp.git (master)... -Mar 24, 2024 4:15:32 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:03 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103-F08-4/tp.git completed! -Mar 24, 2024 4:15:32 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:48:03 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W11-1/tp.git... -Mar 24, 2024 4:15:32 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:04 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W11-1/tp.git to complete... -Mar 24, 2024 4:15:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F10-2/tp.git (master)... -Mar 24, 2024 4:15:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F10-2/tp.git (master)... -Mar 24, 2024 4:15:33 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-F10-2/tp.git (master) completed! -Mar 24, 2024 4:15:33 AM reposense.report.ReportGenerator analyzeRepos -INFO: [13/92] Analyzing https://github.com/AY2324S2-CS2103T-F13-4/tp.git (master)... -Mar 24, 2024 4:15:33 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:04 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T12-4/tp.git completed! -Mar 24, 2024 4:15:33 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:48:04 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W11-3/tp.git... -Mar 24, 2024 4:15:33 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:04 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W11-3/tp.git to complete... -Mar 24, 2024 4:15:33 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-F13-4/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:15:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F13-4/tp.git (master)... -Mar 24, 2024 4:15:34 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:04 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F10-2/tp.git (master)... +Mar 24, 2024 12:48:05 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F10-2/tp.git (master)... +Mar 24, 2024 12:48:05 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-F10-2/tp.git (master) completed! +Mar 24, 2024 12:48:05 PM reposense.report.ReportGenerator analyzeRepos +INFO: [12/92] Analyzing https://github.com/AY2324S2-CS2103T-F13-2/tp.git (master)... +Mar 24, 2024 12:48:05 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T09-3/tp.git completed! -Mar 24, 2024 4:15:34 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103-F08-2/tp.git completed! -Mar 24, 2024 4:15:34 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:48:05 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-F13-2/tp.git (master) does not contain a standalone config file. +Mar 24, 2024 12:48:05 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F13-2/tp.git (master)... +Mar 24, 2024 12:48:05 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W09-3/tp.git... -Mar 24, 2024 4:15:34 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F14-1/tp.git... -Mar 24, 2024 4:15:34 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:05 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W09-3/tp.git to complete... -Mar 24, 2024 4:15:34 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F14-1/tp.git to complete... -Mar 24, 2024 4:15:34 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:05 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T16-2/tp.git (master)... +Mar 24, 2024 12:48:05 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-W11-1/tp.git completed! -Mar 24, 2024 4:15:34 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:48:05 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F14-1/tp.git... +Mar 24, 2024 12:48:05 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F14-1/tp.git to complete... +Mar 24, 2024 12:48:06 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103-F08-2/tp.git completed! +Mar 24, 2024 12:48:06 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T16-2/tp.git (master)... +Mar 24, 2024 12:48:06 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T12-2/tp.git... -Mar 24, 2024 4:15:34 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:06 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T16-2/tp.git (master) completed! +Mar 24, 2024 12:48:06 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T12-2/tp.git to complete... -Mar 24, 2024 4:15:35 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:06 PM reposense.report.ReportGenerator analyzeRepos +INFO: [13/92] Analyzing https://github.com/AY2324S2-CS2103T-F13-4/tp.git (master)... +Mar 24, 2024 12:48:06 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-F13-4/tp.git (master) does not contain a standalone config file. +Mar 24, 2024 12:48:06 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F13-4/tp.git (master)... +Mar 24, 2024 12:48:06 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-W11-3/tp.git completed! -Mar 24, 2024 4:15:35 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:48:06 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F14-3/tp.git... -Mar 24, 2024 4:15:35 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:06 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F14-3/tp.git to complete... -Mar 24, 2024 4:15:35 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-F14-1/tp.git completed! -Mar 24, 2024 4:15:36 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:48:07 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-W09-3/tp.git completed! +Mar 24, 2024 12:48:07 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W09-1/tp.git... -Mar 24, 2024 4:15:36 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:07 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W09-1/tp.git to complete... -Mar 24, 2024 4:15:36 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-W09-3/tp.git completed! -Mar 24, 2024 4:15:36 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T17-4/tp.git... -Mar 24, 2024 4:15:36 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T17-4/tp.git to complete... -Mar 24, 2024 4:15:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F13-2/tp.git (master)... -Mar 24, 2024 4:15:36 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:07 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T12-2/tp.git completed! -Mar 24, 2024 4:15:36 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:48:08 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-F14-1/tp.git completed! +Mar 24, 2024 12:48:08 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T17-4/tp.git... +Mar 24, 2024 12:48:08 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T11-2/tp.git... -Mar 24, 2024 4:15:36 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:08 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T11-2/tp.git to complete... -Mar 24, 2024 4:15:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F13-2/tp.git (master)... -Mar 24, 2024 4:15:36 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-F13-2/tp.git (master) completed! -Mar 24, 2024 4:15:36 AM reposense.report.ReportGenerator analyzeRepos -INFO: [14/92] Analyzing https://github.com/AY2324S2-CS2103T-T10-1/tp.git (master)... -Mar 24, 2024 4:15:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W10-3/tp.git (master)... -Mar 24, 2024 4:15:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W10-3/tp.git (master)... -Mar 24, 2024 4:15:37 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-W10-3/tp.git (master) completed! -Mar 24, 2024 4:15:37 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T10-1/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:15:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T10-1/tp.git (master)... -Mar 24, 2024 4:15:37 AM reposense.report.ReportGenerator analyzeRepos -INFO: [15/92] Analyzing https://github.com/AY2324S2-CS2103T-T13-2/tp.git (master)... -Mar 24, 2024 4:15:37 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T13-2/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:15:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T13-2/tp.git (master)... -Mar 24, 2024 4:15:37 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:08 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T17-4/tp.git to complete... +Mar 24, 2024 12:48:09 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-W09-1/tp.git completed! -Mar 24, 2024 4:15:37 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:48:09 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T11-4/tp.git... -Mar 24, 2024 4:15:37 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:09 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T11-4/tp.git to complete... -Mar 24, 2024 4:15:37 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T17-4/tp.git completed! -Mar 24, 2024 4:15:37 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:48:09 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-F14-3/tp.git completed! +Mar 24, 2024 12:48:09 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T17-2/tp.git... -Mar 24, 2024 4:15:38 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:09 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T17-2/tp.git to complete... -Mar 24, 2024 4:15:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F13-4/tp.git (master)... -Mar 24, 2024 4:15:38 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-F14-3/tp.git completed! -Mar 24, 2024 4:15:38 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:48:09 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T10-1/tp.git (master)... +Mar 24, 2024 12:48:09 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T11-2/tp.git completed! +Mar 24, 2024 12:48:09 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T08-3/tp.git... -Mar 24, 2024 4:15:38 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:09 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T17-4/tp.git completed! +Mar 24, 2024 12:48:09 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T08-3/tp.git to complete... -Mar 24, 2024 4:15:38 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T11-2/tp.git completed! -Mar 24, 2024 4:15:38 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:48:09 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T08-1/tp.git... -Mar 24, 2024 4:15:38 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:09 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T08-1/tp.git to complete... -Mar 24, 2024 4:15:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F13-4/tp.git (master)... -Mar 24, 2024 4:15:38 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-F13-4/tp.git (master) completed! -Mar 24, 2024 4:15:38 AM reposense.report.ReportGenerator analyzeRepos -INFO: [16/92] Analyzing https://github.com/AY2324S2-CS2103T-T10-2/tp.git (master)... -Mar 24, 2024 4:15:38 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T10-2/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:15:38 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T10-2/tp.git (master)... -Mar 24, 2024 4:15:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F15-1/tp.git (master)... -Mar 24, 2024 4:15:39 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:09 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T10-1/tp.git (master)... +Mar 24, 2024 12:48:10 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T10-1/tp.git (master) completed! +Mar 24, 2024 12:48:10 PM reposense.report.ReportGenerator analyzeRepos +INFO: [14/92] Analyzing https://github.com/AY2324S2-CS2103T-W10-3/tp.git (master)... +Mar 24, 2024 12:48:10 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F13-2/tp.git (master)... +Mar 24, 2024 12:48:10 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-W10-3/tp.git (master) does not contain a standalone config file. +Mar 24, 2024 12:48:10 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W10-3/tp.git (master)... +Mar 24, 2024 12:48:10 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F13-2/tp.git (master)... +Mar 24, 2024 12:48:10 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F13-4/tp.git (master)... +Mar 24, 2024 12:48:10 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-F13-2/tp.git (master) completed! +Mar 24, 2024 12:48:10 PM reposense.report.ReportGenerator analyzeRepos +INFO: [15/92] Analyzing https://github.com/AY2324S2-CS2103T-T13-2/tp.git (master)... +Mar 24, 2024 12:48:10 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T13-2/tp.git (master) does not contain a standalone config file. +Mar 24, 2024 12:48:10 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T13-2/tp.git (master)... +Mar 24, 2024 12:48:10 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T11-4/tp.git completed! -Mar 24, 2024 4:15:39 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:48:11 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F12-4/tp.git... -Mar 24, 2024 4:15:39 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:11 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F13-4/tp.git (master)... +Mar 24, 2024 12:48:11 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F12-4/tp.git to complete... -Mar 24, 2024 4:15:39 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T17-2/tp.git completed! -Mar 24, 2024 4:15:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F15-1/tp.git (master)... -Mar 24, 2024 4:15:39 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:11 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-F13-4/tp.git (master) completed! +Mar 24, 2024 12:48:11 PM reposense.report.ReportGenerator analyzeRepos +INFO: [16/92] Analyzing https://github.com/AY2324S2-CS2103T-T13-1/tp.git (master)... +Mar 24, 2024 12:48:11 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T08-3/tp.git completed! -Mar 24, 2024 4:15:39 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:48:11 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T17-2/tp.git completed! +Mar 24, 2024 12:48:11 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T14-1/tp.git... -Mar 24, 2024 4:15:39 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:48:11 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F12-2/tp.git... -Mar 24, 2024 4:15:39 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103-F15-1/tp.git (master) completed! -Mar 24, 2024 4:15:39 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:11 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T14-1/tp.git to complete... -Mar 24, 2024 4:15:39 AM reposense.report.ReportGenerator analyzeRepos -INFO: [17/92] Analyzing https://github.com/AY2324S2-CS2103T-T13-1/tp.git (master)... -Mar 24, 2024 4:15:39 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:11 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F12-2/tp.git to complete... -Mar 24, 2024 4:15:40 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T08-1/tp.git completed! -Mar 24, 2024 4:15:40 AM reposense.report.ReportGenerator updateRepoConfig +Mar 24, 2024 12:48:11 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T13-1/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:15:40 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 24, 2024 12:48:11 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T13-1/tp.git (master)... -Mar 24, 2024 4:15:40 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:48:11 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T08-1/tp.git completed! +Mar 24, 2024 12:48:11 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F15-1/tp.git (master)... +Mar 24, 2024 12:48:11 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W08-4/tp.git... -Mar 24, 2024 4:15:40 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:11 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W08-4/tp.git to complete... -Mar 24, 2024 4:15:40 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:11 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F15-1/tp.git (master)... +Mar 24, 2024 12:48:11 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103-F15-1/tp.git (master) completed! +Mar 24, 2024 12:48:11 PM reposense.report.ReportGenerator analyzeRepos +INFO: [17/92] Analyzing https://github.com/AY2324S2-CS2103T-T10-2/tp.git (master)... +Mar 24, 2024 12:48:12 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T10-2/tp.git (master) does not contain a standalone config file. +Mar 24, 2024 12:48:12 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T10-2/tp.git (master)... +Mar 24, 2024 12:48:12 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-F12-4/tp.git completed! -Mar 24, 2024 4:15:40 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:48:12 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W12-2/tp.git... -Mar 24, 2024 4:15:40 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:12 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W12-2/tp.git to complete... -Mar 24, 2024 4:15:41 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:13 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-F12-2/tp.git completed! -Mar 24, 2024 4:15:41 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:48:13 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W08-3/tp.git... -Mar 24, 2024 4:15:41 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W08-3/tp.git to complete... -Mar 24, 2024 4:15:41 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:13 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-W08-4/tp.git completed! -Mar 24, 2024 4:15:41 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:48:13 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W08-3/tp.git to complete... +Mar 24, 2024 12:48:13 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W12-1/tp.git... -Mar 24, 2024 4:15:41 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:13 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W12-1/tp.git to complete... -Mar 24, 2024 4:15:42 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:13 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T14-1/tp.git completed! -Mar 24, 2024 4:15:42 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:48:13 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F11-4/tp.git... -Mar 24, 2024 4:15:42 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:13 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F11-4/tp.git to complete... -Mar 24, 2024 4:15:42 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:13 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W10-3/tp.git (master)... +Mar 24, 2024 12:48:14 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-W12-2/tp.git completed! -Mar 24, 2024 4:15:42 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:48:14 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F14-4/tp.git... -Mar 24, 2024 4:15:42 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:14 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F14-4/tp.git to complete... -Mar 24, 2024 4:15:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T10-1/tp.git (master)... -Mar 24, 2024 4:15:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T13-2/tp.git (master)... -Mar 24, 2024 4:15:43 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-W12-1/tp.git completed! -Mar 24, 2024 4:15:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T13-2/tp.git (master)... -Mar 24, 2024 4:15:43 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T13-2/tp.git (master) completed! -Mar 24, 2024 4:15:43 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W08-2/tp.git... -Mar 24, 2024 4:15:43 AM reposense.report.ReportGenerator analyzeRepos +Mar 24, 2024 12:48:14 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W10-3/tp.git (master)... +Mar 24, 2024 12:48:14 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-W10-3/tp.git (master) completed! +Mar 24, 2024 12:48:14 PM reposense.report.ReportGenerator analyzeRepos INFO: [18/92] Analyzing https://github.com/AY2324S2-CS2103T-F13-1/tp.git (master)... -Mar 24, 2024 4:15:43 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W08-2/tp.git to complete... -Mar 24, 2024 4:15:43 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-W08-3/tp.git completed! -Mar 24, 2024 4:15:43 AM reposense.report.ReportGenerator updateRepoConfig +Mar 24, 2024 12:48:14 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-F13-1/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:15:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 24, 2024 12:48:14 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F13-1/tp.git (master)... -Mar 24, 2024 4:15:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T10-1/tp.git (master)... -Mar 24, 2024 4:15:43 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F11-3/tp.git... -Mar 24, 2024 4:15:43 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T10-1/tp.git (master) completed! -Mar 24, 2024 4:15:43 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F11-3/tp.git to complete... -Mar 24, 2024 4:15:43 AM reposense.report.ReportGenerator analyzeRepos -INFO: [19/92] Analyzing https://github.com/AY2324S2-CS2103-F15-4/tp.git (master)... -Mar 24, 2024 4:15:44 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103-F15-4/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:15:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F15-4/tp.git (master)... -Mar 24, 2024 4:15:44 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:14 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-W08-3/tp.git completed! +Mar 24, 2024 12:48:14 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W08-2/tp.git... +Mar 24, 2024 12:48:15 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W08-2/tp.git to complete... +Mar 24, 2024 12:48:15 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-F11-4/tp.git completed! -Mar 24, 2024 4:15:44 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:48:15 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F11-3/tp.git... +Mar 24, 2024 12:48:15 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-W12-1/tp.git completed! +Mar 24, 2024 12:48:15 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T15-2/tp.git... -Mar 24, 2024 4:15:44 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:15 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F11-3/tp.git to complete... +Mar 24, 2024 12:48:15 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T15-2/tp.git to complete... -Mar 24, 2024 4:15:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T10-2/tp.git (master)... -Mar 24, 2024 4:15:44 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:16 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T13-2/tp.git (master)... +Mar 24, 2024 12:48:16 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-F14-4/tp.git completed! -Mar 24, 2024 4:15:44 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:48:16 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103-T14-1/tp.git... -Mar 24, 2024 4:15:44 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:16 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103-T14-1/tp.git to complete... -Mar 24, 2024 4:15:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T10-2/tp.git (master)... -Mar 24, 2024 4:15:45 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T10-2/tp.git (master) completed! -Mar 24, 2024 4:15:45 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:16 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-W08-2/tp.git completed! -Mar 24, 2024 4:15:45 AM reposense.report.ReportGenerator analyzeRepos -INFO: [20/92] Analyzing https://github.com/AY2324S2-CS2103T-W13-2/tp.git (master)... -Mar 24, 2024 4:15:45 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:48:16 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F11-2/tp.git... -Mar 24, 2024 4:15:45 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:16 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F11-2/tp.git to complete... -Mar 24, 2024 4:15:45 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-W13-2/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:15:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W13-2/tp.git (master)... -Mar 24, 2024 4:15:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-F11-3/tp.git completed! -Mar 24, 2024 4:15:46 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:48:16 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T13-2/tp.git (master)... +Mar 24, 2024 12:48:16 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T13-2/tp.git (master) completed! +Mar 24, 2024 12:48:16 PM reposense.report.ReportGenerator analyzeRepos +INFO: [19/92] Analyzing https://github.com/AY2324S2-CS2103-F15-4/tp.git (master)... +Mar 24, 2024 12:48:16 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103-F15-4/tp.git (master) does not contain a standalone config file. +Mar 24, 2024 12:48:16 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F15-4/tp.git (master)... +Mar 24, 2024 12:48:17 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T15-2/tp.git completed! +Mar 24, 2024 12:48:17 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F11-1/tp.git... -Mar 24, 2024 4:15:46 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:17 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F11-1/tp.git to complete... -Mar 24, 2024 4:15:46 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T15-2/tp.git completed! -Mar 24, 2024 4:15:46 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:48:17 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-F11-3/tp.git completed! +Mar 24, 2024 12:48:17 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T15-3/tp.git... -Mar 24, 2024 4:15:46 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:17 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T15-3/tp.git to complete... -Mar 24, 2024 4:15:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F15-4/tp.git (master)... -Mar 24, 2024 4:15:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 24, 2024 12:48:17 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T10-2/tp.git (master)... +Mar 24, 2024 12:48:18 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T10-2/tp.git (master)... +Mar 24, 2024 12:48:18 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T10-2/tp.git (master) completed! +Mar 24, 2024 12:48:18 PM reposense.report.ReportGenerator analyzeRepos +INFO: [20/92] Analyzing https://github.com/AY2324S2-CS2103T-W13-2/tp.git (master)... +Mar 24, 2024 12:48:18 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T13-1/tp.git (master)... -Mar 24, 2024 4:15:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F15-4/tp.git (master)... -Mar 24, 2024 4:15:47 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103-F15-4/tp.git (master) completed! -Mar 24, 2024 4:15:47 AM reposense.report.ReportGenerator analyzeRepos -INFO: [21/92] Analyzing https://github.com/AY2324S2-CS2103T-T16-4/tp.git (master)... -Mar 24, 2024 4:15:47 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:18 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-W13-2/tp.git (master) does not contain a standalone config file. +Mar 24, 2024 12:48:18 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W13-2/tp.git (master)... +Mar 24, 2024 12:48:18 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-F11-2/tp.git completed! -Mar 24, 2024 4:15:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T13-1/tp.git (master)... -Mar 24, 2024 4:15:47 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:48:18 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T15-1/tp.git... -Mar 24, 2024 4:15:47 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103-T14-1/tp.git completed! -Mar 24, 2024 4:15:47 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T16-4/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:15:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T16-4/tp.git (master)... -Mar 24, 2024 4:15:47 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:18 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T15-1/tp.git to complete... -Mar 24, 2024 4:15:47 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:48:18 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103-T14-1/tp.git completed! +Mar 24, 2024 12:48:18 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T09-1/tp.git... -Mar 24, 2024 4:15:47 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:18 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T09-1/tp.git to complete... -Mar 24, 2024 4:15:47 AM reposense.report.ReportGenerator analyzeRepo +Mar 24, 2024 12:48:19 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T13-1/tp.git (master)... +Mar 24, 2024 12:48:19 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-T13-1/tp.git (master) completed! -Mar 24, 2024 4:15:47 AM reposense.report.ReportGenerator analyzeRepos -INFO: [22/92] Analyzing https://github.com/AY2324S2-CS2103T-W13-3/tp.git (master)... -Mar 24, 2024 4:15:47 AM reposense.report.ReportGenerator updateRepoConfig +Mar 24, 2024 12:48:19 PM reposense.report.ReportGenerator analyzeRepos +INFO: [21/92] Analyzing https://github.com/AY2324S2-CS2103T-W13-3/tp.git (master)... +Mar 24, 2024 12:48:19 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-W13-3/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:15:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 24, 2024 12:48:19 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W13-3/tp.git (master)... -Mar 24, 2024 4:15:48 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:19 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-F11-1/tp.git completed! -Mar 24, 2024 4:15:48 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:48:19 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W12-4/tp.git... -Mar 24, 2024 4:15:48 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:19 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W12-4/tp.git to complete... -Mar 24, 2024 4:15:48 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:19 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T15-3/tp.git completed! -Mar 24, 2024 4:15:48 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:48:19 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W12-3/tp.git... -Mar 24, 2024 4:15:48 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:19 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W12-3/tp.git to complete... -Mar 24, 2024 4:15:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W13-2/tp.git (master)... -Mar 24, 2024 4:15:48 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:20 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F15-4/tp.git (master)... +Mar 24, 2024 12:48:20 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T15-1/tp.git completed! -Mar 24, 2024 4:15:48 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:48:20 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T09-2/tp.git... -Mar 24, 2024 4:15:48 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:20 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F15-4/tp.git (master)... +Mar 24, 2024 12:48:20 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T09-2/tp.git to complete... -Mar 24, 2024 4:15:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W13-2/tp.git (master)... -Mar 24, 2024 4:15:48 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-W13-2/tp.git (master) completed! -Mar 24, 2024 4:15:48 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:20 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103-F15-4/tp.git (master) completed! +Mar 24, 2024 12:48:20 PM reposense.report.ReportGenerator analyzeRepos +INFO: [22/92] Analyzing https://github.com/AY2324S2-CS2103T-T16-4/tp.git (master)... +Mar 24, 2024 12:48:20 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T09-1/tp.git completed! -Mar 24, 2024 4:15:48 AM reposense.report.ReportGenerator analyzeRepos -INFO: [23/92] Analyzing https://github.com/AY2324S2-CS2103T-W10-1/tp.git (master)... -Mar 24, 2024 4:15:48 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:48:20 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T15-4/tp.git... -Mar 24, 2024 4:15:49 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:20 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T15-4/tp.git to complete... -Mar 24, 2024 4:15:49 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-W10-1/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:15:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W10-1/tp.git (master)... -Mar 24, 2024 4:15:49 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:20 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T16-4/tp.git (master) does not contain a standalone config file. +Mar 24, 2024 12:48:20 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T16-4/tp.git (master)... +Mar 24, 2024 12:48:21 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-W12-4/tp.git completed! -Mar 24, 2024 4:15:49 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:48:21 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103-F08-3/tp.git... -Mar 24, 2024 4:15:49 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:21 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103-F08-3/tp.git to complete... -Mar 24, 2024 4:15:50 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T09-2/tp.git completed! -Mar 24, 2024 4:15:50 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:48:21 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-W12-3/tp.git completed! +Mar 24, 2024 12:48:21 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103-F08-1/tp.git... -Mar 24, 2024 4:15:50 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T15-4/tp.git completed! -Mar 24, 2024 4:15:50 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W08-1/tp.git... -Mar 24, 2024 4:15:50 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:21 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T09-2/tp.git completed! +Mar 24, 2024 12:48:21 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103-F08-1/tp.git to complete... -Mar 24, 2024 4:15:50 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-W12-3/tp.git completed! -Mar 24, 2024 4:15:50 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:21 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W08-1/tp.git... +Mar 24, 2024 12:48:21 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W08-1/tp.git to complete... -Mar 24, 2024 4:15:50 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:48:21 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F13-1/tp.git (master)... +Mar 24, 2024 12:48:21 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T15-4/tp.git completed! +Mar 24, 2024 12:48:21 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T12-1/tp.git... -Mar 24, 2024 4:15:50 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:21 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T12-1/tp.git to complete... -Mar 24, 2024 4:15:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 24, 2024 12:48:22 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F13-1/tp.git (master)... +Mar 24, 2024 12:48:22 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W13-2/tp.git (master)... +Mar 24, 2024 12:48:22 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-F13-1/tp.git (master) completed! +Mar 24, 2024 12:48:22 PM reposense.report.ReportGenerator analyzeRepos +INFO: [23/92] Analyzing https://github.com/AY2324S2-CS2103T-W10-1/tp.git (master)... +Mar 24, 2024 12:48:22 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W13-3/tp.git (master)... -Mar 24, 2024 4:15:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F13-1/tp.git (master)... -Mar 24, 2024 4:15:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 24, 2024 12:48:22 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-W10-1/tp.git (master) does not contain a standalone config file. +Mar 24, 2024 12:48:22 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W10-1/tp.git (master)... +Mar 24, 2024 12:48:22 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W13-2/tp.git (master)... +Mar 24, 2024 12:48:22 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-W13-2/tp.git (master) completed! +Mar 24, 2024 12:48:22 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W13-3/tp.git (master)... -Mar 24, 2024 4:15:51 AM reposense.report.ReportGenerator analyzeRepo +Mar 24, 2024 12:48:22 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-W13-3/tp.git (master) completed! -Mar 24, 2024 4:15:51 AM reposense.report.ReportGenerator analyzeRepos -INFO: [24/92] Analyzing https://github.com/AY2324S2-CS2103T-T13-4/tp.git (master)... -Mar 24, 2024 4:15:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F13-1/tp.git (master)... -Mar 24, 2024 4:15:51 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-F13-1/tp.git (master) completed! -Mar 24, 2024 4:15:51 AM reposense.report.ReportGenerator analyzeRepos -INFO: [25/92] Analyzing https://github.com/AY2324S2-CS2103T-T13-3/tp.git (master)... -Mar 24, 2024 4:15:51 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:22 PM reposense.report.ReportGenerator analyzeRepos +INFO: [24/92] Analyzing https://github.com/AY2324S2-CS2103T-T13-3/tp.git (master)... +Mar 24, 2024 12:48:22 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103-F08-3/tp.git completed! -Mar 24, 2024 4:15:51 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:48:22 PM reposense.report.ReportGenerator analyzeRepos +INFO: [25/92] Analyzing https://github.com/AY2324S2-CS2103T-T13-4/tp.git (master)... +Mar 24, 2024 12:48:22 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W11-2/tp.git... -Mar 24, 2024 4:15:51 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T13-4/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:15:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T13-4/tp.git (master)... -Mar 24, 2024 4:15:51 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:22 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W11-2/tp.git to complete... -Mar 24, 2024 4:15:51 AM reposense.report.ReportGenerator updateRepoConfig +Mar 24, 2024 12:48:22 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T13-3/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:15:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 24, 2024 12:48:22 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T13-3/tp.git (master)... -Mar 24, 2024 4:15:51 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:22 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T13-4/tp.git (master) does not contain a standalone config file. +Mar 24, 2024 12:48:22 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T13-4/tp.git (master)... +Mar 24, 2024 12:48:23 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-W08-1/tp.git completed! -Mar 24, 2024 4:15:52 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:48:23 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W09-2/tp.git... -Mar 24, 2024 4:15:52 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103-F08-1/tp.git completed! -Mar 24, 2024 4:15:52 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:23 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W09-2/tp.git to complete... -Mar 24, 2024 4:15:52 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:48:23 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103-F08-1/tp.git completed! +Mar 24, 2024 12:48:23 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W09-4/tp.git... -Mar 24, 2024 4:15:52 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:23 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W09-4/tp.git to complete... -Mar 24, 2024 4:15:52 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:23 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T12-1/tp.git completed! -Mar 24, 2024 4:15:52 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:48:23 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T12-3/tp.git... -Mar 24, 2024 4:15:52 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:24 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T12-3/tp.git to complete... -Mar 24, 2024 4:15:53 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:24 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-W11-2/tp.git completed! -Mar 24, 2024 4:15:53 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:48:24 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F14-2/tp.git... -Mar 24, 2024 4:15:53 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:24 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F14-2/tp.git to complete... -Mar 24, 2024 4:15:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T16-4/tp.git (master)... -Mar 24, 2024 4:15:53 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-W09-4/tp.git completed! -Mar 24, 2024 4:15:53 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:25 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-W09-2/tp.git completed! -Mar 24, 2024 4:15:53 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:48:25 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-W09-4/tp.git completed! +Mar 24, 2024 12:48:25 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T11-3/tp.git... -Mar 24, 2024 4:15:53 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:48:25 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F12-1/tp.git... -Mar 24, 2024 4:15:53 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T11-3/tp.git to complete... -Mar 24, 2024 4:15:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T16-4/tp.git (master)... -Mar 24, 2024 4:15:53 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:25 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F12-1/tp.git to complete... -Mar 24, 2024 4:15:53 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T16-4/tp.git (master) completed! -Mar 24, 2024 4:15:54 AM reposense.report.ReportGenerator analyzeRepos -INFO: [26/92] Analyzing https://github.com/AY2324S2-CS2103T-W10-2/tp.git (master)... -Mar 24, 2024 4:15:54 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-W10-2/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:15:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W10-2/tp.git (master)... -Mar 24, 2024 4:15:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 24, 2024 12:48:25 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T11-3/tp.git to complete... +Mar 24, 2024 12:48:26 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T13-4/tp.git (master)... -Mar 24, 2024 4:15:55 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:26 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-F14-2/tp.git completed! -Mar 24, 2024 4:15:55 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:48:26 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T16-4/tp.git (master)... +Mar 24, 2024 12:48:26 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T17-3/tp.git... -Mar 24, 2024 4:15:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 24, 2024 12:48:26 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T11-3/tp.git completed! +Mar 24, 2024 12:48:27 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T17-3/tp.git to complete... +Mar 24, 2024 12:48:27 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T13-4/tp.git (master)... -Mar 24, 2024 4:15:55 AM reposense.report.ReportGenerator analyzeRepo +Mar 24, 2024 12:48:27 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-T13-4/tp.git (master) completed! -Mar 24, 2024 4:15:55 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T17-3/tp.git to complete... -Mar 24, 2024 4:15:55 AM reposense.report.ReportGenerator analyzeRepos +Mar 24, 2024 12:48:27 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T14-2/tp.git... +Mar 24, 2024 12:48:27 PM reposense.report.ReportGenerator analyzeRepos +INFO: [26/92] Analyzing https://github.com/AY2324S2-CS2103T-W10-2/tp.git (master)... +Mar 24, 2024 12:48:27 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T14-2/tp.git to complete... +Mar 24, 2024 12:48:27 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T16-4/tp.git (master)... +Mar 24, 2024 12:48:27 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T16-4/tp.git (master) completed! +Mar 24, 2024 12:48:27 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-W10-2/tp.git (master) does not contain a standalone config file. +Mar 24, 2024 12:48:27 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W10-2/tp.git (master)... +Mar 24, 2024 12:48:27 PM reposense.report.ReportGenerator analyzeRepos INFO: [27/92] Analyzing https://github.com/AY2324S2-CS2103T-F10-1/tp.git (master)... -Mar 24, 2024 4:15:55 AM reposense.report.ReportGenerator updateRepoConfig +Mar 24, 2024 12:48:27 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-F10-1/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:15:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 24, 2024 12:48:27 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F10-1/tp.git (master)... -Mar 24, 2024 4:15:56 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T12-3/tp.git completed! -Mar 24, 2024 4:15:56 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:27 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-F12-1/tp.git completed! -Mar 24, 2024 4:15:56 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T14-2/tp.git... -Mar 24, 2024 4:15:56 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:48:27 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T08-2/tp.git... -Mar 24, 2024 4:15:56 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T14-2/tp.git to complete... -Mar 24, 2024 4:15:56 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:27 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T08-2/tp.git to complete... -Mar 24, 2024 4:15:56 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T11-3/tp.git completed! -Mar 24, 2024 4:15:56 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:48:27 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T13-3/tp.git (master)... +Mar 24, 2024 12:48:28 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T12-3/tp.git completed! +Mar 24, 2024 12:48:28 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T17-1/tp.git... -Mar 24, 2024 4:15:56 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:28 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T17-1/tp.git to complete... -Mar 24, 2024 4:15:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T13-3/tp.git (master)... -Mar 24, 2024 4:15:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 24, 2024 12:48:28 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T13-3/tp.git (master)... -Mar 24, 2024 4:15:57 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:28 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T13-3/tp.git (master) completed! +Mar 24, 2024 12:48:28 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T17-3/tp.git completed! -Mar 24, 2024 4:15:57 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:48:28 PM reposense.report.ReportGenerator analyzeRepos +INFO: [28/92] Analyzing https://github.com/AY2324S2-CS2103T-F10-4/tp.git (master)... +Mar 24, 2024 12:48:28 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W13-1/tp.git... -Mar 24, 2024 4:15:57 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T13-3/tp.git (master) completed! -Mar 24, 2024 4:15:57 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:28 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W13-1/tp.git to complete... -Mar 24, 2024 4:15:57 AM reposense.report.ReportGenerator analyzeRepos -INFO: [28/92] Analyzing https://github.com/AY2324S2-CS2103T-F10-4/tp.git (master)... -Mar 24, 2024 4:15:57 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T08-2/tp.git completed! -Mar 24, 2024 4:15:57 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F12-3/tp.git... -Mar 24, 2024 4:15:57 AM reposense.report.ReportGenerator updateRepoConfig +Mar 24, 2024 12:48:28 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-F10-4/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:15:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 24, 2024 12:48:28 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F10-4/tp.git (master)... -Mar 24, 2024 4:15:57 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:28 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T14-2/tp.git completed! +Mar 24, 2024 12:48:28 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F12-3/tp.git... +Mar 24, 2024 12:48:29 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F12-3/tp.git to complete... -Mar 24, 2024 4:15:57 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T17-1/tp.git completed! -Mar 24, 2024 4:15:57 AM reposense.report.RepoCloner spawnCloneProcess +Mar 24, 2024 12:48:29 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T08-2/tp.git completed! +Mar 24, 2024 12:48:29 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T11-1/tp.git... -Mar 24, 2024 4:15:57 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:29 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T11-1/tp.git to complete... -Mar 24, 2024 4:15:57 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T14-2/tp.git completed! -Mar 24, 2024 4:15:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 24, 2024 12:48:29 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T17-1/tp.git completed! +Mar 24, 2024 12:48:29 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-W13-1/tp.git completed! +Mar 24, 2024 12:48:29 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F10-1/tp.git (master)... -Mar 24, 2024 4:15:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 24, 2024 12:48:30 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F10-1/tp.git (master)... -Mar 24, 2024 4:15:58 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-W13-1/tp.git completed! -Mar 24, 2024 4:15:58 AM reposense.report.ReportGenerator analyzeRepo +Mar 24, 2024 12:48:30 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-F10-1/tp.git (master) completed! -Mar 24, 2024 4:15:58 AM reposense.report.ReportGenerator analyzeRepos +Mar 24, 2024 12:48:30 PM reposense.report.ReportGenerator analyzeRepos INFO: [29/92] Analyzing https://github.com/AY2324S2-CS2103-F09-3/tp.git (master)... -Mar 24, 2024 4:15:58 AM reposense.report.ReportGenerator updateRepoConfig +Mar 24, 2024 12:48:30 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-F12-3/tp.git completed! +Mar 24, 2024 12:48:30 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103-F09-3/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:15:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 24, 2024 12:48:30 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F09-3/tp.git (master)... -Mar 24, 2024 4:15:58 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-F12-3/tp.git completed! -Mar 24, 2024 4:15:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W10-1/tp.git (master)... -Mar 24, 2024 4:15:59 AM reposense.report.RepoCloner waitForCloneProcess +Mar 24, 2024 12:48:30 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T11-1/tp.git completed! -Mar 24, 2024 4:15:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W10-1/tp.git (master)... -Mar 24, 2024 4:15:59 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-W10-1/tp.git (master) completed! -Mar 24, 2024 4:15:59 AM reposense.report.ReportGenerator analyzeRepos -INFO: [30/92] Analyzing https://github.com/AY2324S2-CS2103T-T16-3/tp.git (master)... -Mar 24, 2024 4:15:59 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T16-3/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:15:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T16-3/tp.git (master)... -Mar 24, 2024 4:15:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 24, 2024 12:48:31 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F10-4/tp.git (master)... -Mar 24, 2024 4:15:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W10-2/tp.git (master)... -Mar 24, 2024 4:15:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 24, 2024 12:48:31 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F10-4/tp.git (master)... -Mar 24, 2024 4:15:59 AM reposense.report.ReportGenerator analyzeRepo +Mar 24, 2024 12:48:31 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-F10-4/tp.git (master) completed! -Mar 24, 2024 4:15:59 AM reposense.report.ReportGenerator analyzeRepos +Mar 24, 2024 12:48:31 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W10-1/tp.git (master)... +Mar 24, 2024 12:48:31 PM reposense.report.ReportGenerator analyzeRepos +INFO: [30/92] Analyzing https://github.com/AY2324S2-CS2103T-T16-3/tp.git (master)... +Mar 24, 2024 12:48:31 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T16-3/tp.git (master) does not contain a standalone config file. +Mar 24, 2024 12:48:31 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T16-3/tp.git (master)... +Mar 24, 2024 12:48:31 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F09-3/tp.git (master)... +Mar 24, 2024 12:48:31 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W10-1/tp.git (master)... +Mar 24, 2024 12:48:31 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-W10-1/tp.git (master) completed! +Mar 24, 2024 12:48:31 PM reposense.report.ReportGenerator analyzeRepos INFO: [31/92] Analyzing https://github.com/AY2324S2-CS2103T-T10-3/tp.git (master)... -Mar 24, 2024 4:16:00 AM reposense.report.ReportGenerator updateRepoConfig +Mar 24, 2024 12:48:31 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F09-3/tp.git (master)... +Mar 24, 2024 12:48:31 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103-F09-3/tp.git (master) completed! +Mar 24, 2024 12:48:31 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T10-3/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:16:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 24, 2024 12:48:31 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T10-3/tp.git (master)... -Mar 24, 2024 4:16:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W10-2/tp.git (master)... -Mar 24, 2024 4:16:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F09-3/tp.git (master)... -Mar 24, 2024 4:16:00 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-W10-2/tp.git (master) completed! -Mar 24, 2024 4:16:00 AM reposense.report.ReportGenerator analyzeRepos +Mar 24, 2024 12:48:31 PM reposense.report.ReportGenerator analyzeRepos INFO: [32/92] Analyzing https://github.com/AY2324S2-CS2103-F09-4/tp.git (master)... -Mar 24, 2024 4:16:00 AM reposense.report.ReportGenerator updateRepoConfig +Mar 24, 2024 12:48:31 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103-F09-4/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:16:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 24, 2024 12:48:31 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F09-4/tp.git (master)... -Mar 24, 2024 4:16:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F09-3/tp.git (master)... -Mar 24, 2024 4:16:00 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103-F09-3/tp.git (master) completed! -Mar 24, 2024 4:16:00 AM reposense.report.ReportGenerator analyzeRepos +Mar 24, 2024 12:48:31 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W10-2/tp.git (master)... +Mar 24, 2024 12:48:32 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W10-2/tp.git (master)... +Mar 24, 2024 12:48:32 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-W10-2/tp.git (master) completed! +Mar 24, 2024 12:48:32 PM reposense.report.ReportGenerator analyzeRepos INFO: [33/92] Analyzing https://github.com/AY2324S2-CS2103-F09-1/tp.git (master)... -Mar 24, 2024 4:16:00 AM reposense.report.ReportGenerator updateRepoConfig +Mar 24, 2024 12:48:32 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103-F09-1/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:16:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 24, 2024 12:48:32 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F09-1/tp.git (master)... -Mar 24, 2024 4:16:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 24, 2024 12:48:32 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T10-3/tp.git (master)... +Mar 24, 2024 12:48:32 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T16-3/tp.git (master)... -Mar 24, 2024 4:16:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 24, 2024 12:48:32 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T10-3/tp.git (master)... +Mar 24, 2024 12:48:32 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T10-3/tp.git (master) completed! +Mar 24, 2024 12:48:32 PM reposense.report.ReportGenerator analyzeRepos +INFO: [34/92] Analyzing https://github.com/AY2324S2-CS2103-F09-2/tp.git (master)... +Mar 24, 2024 12:48:32 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T16-3/tp.git (master)... -Mar 24, 2024 4:16:00 AM reposense.report.ReportGenerator analyzeRepo +Mar 24, 2024 12:48:32 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-T16-3/tp.git (master) completed! -Mar 24, 2024 4:16:00 AM reposense.report.ReportGenerator analyzeRepos -INFO: [34/92] Analyzing https://github.com/AY2324S2-CS2103-F09-2/tp.git (master)... -Mar 24, 2024 4:16:01 AM reposense.report.ReportGenerator updateRepoConfig +Mar 24, 2024 12:48:32 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103-F09-2/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:16:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 24, 2024 12:48:32 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F09-2/tp.git (master)... -Mar 24, 2024 4:16:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T10-3/tp.git (master)... -Mar 24, 2024 4:16:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T10-3/tp.git (master)... -Mar 24, 2024 4:16:01 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T10-3/tp.git (master) completed! -Mar 24, 2024 4:16:01 AM reposense.report.ReportGenerator analyzeRepos +Mar 24, 2024 12:48:32 PM reposense.report.ReportGenerator analyzeRepos INFO: [35/92] Analyzing https://github.com/AY2324S2-CS2103T-T09-4/tp.git (master)... -Mar 24, 2024 4:16:01 AM reposense.report.ReportGenerator updateRepoConfig +Mar 24, 2024 12:48:33 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T09-4/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:16:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 24, 2024 12:48:33 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T09-4/tp.git (master)... -Mar 24, 2024 4:16:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 24, 2024 12:48:33 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F09-1/tp.git (master)... -Mar 24, 2024 4:16:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 24, 2024 12:48:33 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F09-1/tp.git (master)... -Mar 24, 2024 4:16:01 AM reposense.report.ReportGenerator analyzeRepo +Mar 24, 2024 12:48:33 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103-F09-1/tp.git (master) completed! -Mar 24, 2024 4:16:01 AM reposense.report.ReportGenerator analyzeRepos +Mar 24, 2024 12:48:33 PM reposense.report.ReportGenerator analyzeRepos INFO: [36/92] Analyzing https://github.com/AY2324S2-CS2103-F08-4/tp.git (master)... -Mar 24, 2024 4:16:01 AM reposense.report.ReportGenerator updateRepoConfig +Mar 24, 2024 12:48:33 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103-F08-4/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:16:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 24, 2024 12:48:33 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F08-4/tp.git (master)... -Mar 24, 2024 4:16:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 24, 2024 12:48:34 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F09-4/tp.git (master)... -Mar 24, 2024 4:16:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 24, 2024 12:48:34 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F09-4/tp.git (master)... -Mar 24, 2024 4:16:02 AM reposense.report.ReportGenerator analyzeRepo +Mar 24, 2024 12:48:34 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103-F09-4/tp.git (master) completed! -Mar 24, 2024 4:16:02 AM reposense.report.ReportGenerator analyzeRepos +Mar 24, 2024 12:48:34 PM reposense.report.ReportGenerator analyzeRepos INFO: [37/92] Analyzing https://github.com/AY2324S2-CS2103T-T12-4/tp.git (master)... -Mar 24, 2024 4:16:02 AM reposense.report.ReportGenerator updateRepoConfig +Mar 24, 2024 12:48:34 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T12-4/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:16:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 24, 2024 12:48:34 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T12-4/tp.git (master)... -Mar 24, 2024 4:16:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 24, 2024 12:48:34 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F08-4/tp.git (master)... -Mar 24, 2024 4:16:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 24, 2024 12:48:34 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F08-4/tp.git (master)... -Mar 24, 2024 4:16:02 AM reposense.report.ReportGenerator analyzeRepo +Mar 24, 2024 12:48:34 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103-F08-4/tp.git (master) completed! -Mar 24, 2024 4:16:02 AM reposense.report.ReportGenerator analyzeRepos +Mar 24, 2024 12:48:34 PM reposense.report.ReportGenerator analyzeRepos INFO: [38/92] Analyzing https://github.com/AY2324S2-CS2103T-T09-3/tp.git (master)... -Mar 24, 2024 4:16:03 AM reposense.report.ReportGenerator updateRepoConfig +Mar 24, 2024 12:48:34 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T09-3/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:16:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 24, 2024 12:48:34 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T09-3/tp.git (master)... -Mar 24, 2024 4:16:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F09-2/tp.git (master)... -Mar 24, 2024 4:16:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F09-2/tp.git (master)... -Mar 24, 2024 4:16:04 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103-F09-2/tp.git (master) completed! -Mar 24, 2024 4:16:04 AM reposense.report.ReportGenerator analyzeRepos -INFO: [39/92] Analyzing https://github.com/AY2324S2-CS2103-F08-2/tp.git (master)... -Mar 24, 2024 4:16:04 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103-F08-2/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:16:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F08-2/tp.git (master)... -Mar 24, 2024 4:16:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 24, 2024 12:48:35 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T09-4/tp.git (master)... -Mar 24, 2024 4:16:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 24, 2024 12:48:35 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F09-2/tp.git (master)... +Mar 24, 2024 12:48:35 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T09-4/tp.git (master)... -Mar 24, 2024 4:16:04 AM reposense.report.ReportGenerator analyzeRepo +Mar 24, 2024 12:48:35 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-T09-4/tp.git (master) completed! -Mar 24, 2024 4:16:04 AM reposense.report.ReportGenerator analyzeRepos -INFO: [40/92] Analyzing https://github.com/AY2324S2-CS2103T-W11-1/tp.git (master)... -Mar 24, 2024 4:16:04 AM reposense.report.ReportGenerator updateRepoConfig +Mar 24, 2024 12:48:36 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F09-2/tp.git (master)... +Mar 24, 2024 12:48:36 PM reposense.report.ReportGenerator analyzeRepos +INFO: [39/92] Analyzing https://github.com/AY2324S2-CS2103T-W11-1/tp.git (master)... +Mar 24, 2024 12:48:36 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103-F09-2/tp.git (master) completed! +Mar 24, 2024 12:48:36 PM reposense.report.ReportGenerator analyzeRepos +INFO: [40/92] Analyzing https://github.com/AY2324S2-CS2103-F08-2/tp.git (master)... +Mar 24, 2024 12:48:36 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-W11-1/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:16:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 24, 2024 12:48:36 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W11-1/tp.git (master)... -Mar 24, 2024 4:16:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 24, 2024 12:48:36 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103-F08-2/tp.git (master) does not contain a standalone config file. +Mar 24, 2024 12:48:36 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F08-2/tp.git (master)... +Mar 24, 2024 12:48:36 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T12-4/tp.git (master)... -Mar 24, 2024 4:16:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 24, 2024 12:48:36 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T12-4/tp.git (master)... -Mar 24, 2024 4:16:05 AM reposense.report.ReportGenerator analyzeRepo +Mar 24, 2024 12:48:36 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-T12-4/tp.git (master) completed! -Mar 24, 2024 4:16:05 AM reposense.report.ReportGenerator analyzeRepos +Mar 24, 2024 12:48:36 PM reposense.report.ReportGenerator analyzeRepos INFO: [41/92] Analyzing https://github.com/AY2324S2-CS2103T-W11-3/tp.git (master)... -Mar 24, 2024 4:16:05 AM reposense.report.ReportGenerator updateRepoConfig +Mar 24, 2024 12:48:37 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-W11-3/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:16:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 24, 2024 12:48:37 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W11-3/tp.git (master)... -Mar 24, 2024 4:16:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F08-2/tp.git (master)... -Mar 24, 2024 4:16:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F08-2/tp.git (master)... -Mar 24, 2024 4:16:06 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103-F08-2/tp.git (master) completed! -Mar 24, 2024 4:16:06 AM reposense.report.ReportGenerator analyzeRepos -INFO: [42/92] Analyzing https://github.com/AY2324S2-CS2103T-F14-1/tp.git (master)... -Mar 24, 2024 4:16:06 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-F14-1/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:16:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F14-1/tp.git (master)... -Mar 24, 2024 4:16:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 24, 2024 12:48:38 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W11-1/tp.git (master)... -Mar 24, 2024 4:16:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 24, 2024 12:48:38 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F08-2/tp.git (master)... +Mar 24, 2024 12:48:38 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W11-1/tp.git (master)... -Mar 24, 2024 4:16:07 AM reposense.report.ReportGenerator analyzeRepo +Mar 24, 2024 12:48:38 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-W11-1/tp.git (master) completed! -Mar 24, 2024 4:16:07 AM reposense.report.ReportGenerator analyzeRepos -INFO: [43/92] Analyzing https://github.com/AY2324S2-CS2103T-W09-3/tp.git (master)... -Mar 24, 2024 4:16:07 AM reposense.report.ReportGenerator updateRepoConfig +Mar 24, 2024 12:48:38 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F08-2/tp.git (master)... +Mar 24, 2024 12:48:38 PM reposense.report.ReportGenerator analyzeRepos +INFO: [42/92] Analyzing https://github.com/AY2324S2-CS2103T-W09-3/tp.git (master)... +Mar 24, 2024 12:48:38 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103-F08-2/tp.git (master) completed! +Mar 24, 2024 12:48:38 PM reposense.report.ReportGenerator analyzeRepos +INFO: [43/92] Analyzing https://github.com/AY2324S2-CS2103T-T12-2/tp.git (master)... +Mar 24, 2024 12:48:38 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-W09-3/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:16:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 24, 2024 12:48:38 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W09-3/tp.git (master)... -Mar 24, 2024 4:16:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W11-3/tp.git (master)... -Mar 24, 2024 4:16:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 24, 2024 12:48:38 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T12-2/tp.git (master) does not contain a standalone config file. +Mar 24, 2024 12:48:38 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T12-2/tp.git (master)... +Mar 24, 2024 12:48:39 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T09-3/tp.git (master)... -Mar 24, 2024 4:16:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 24, 2024 12:48:39 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W09-3/tp.git (master)... -Mar 24, 2024 4:16:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 24, 2024 12:48:39 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W09-3/tp.git (master)... -Mar 24, 2024 4:16:08 AM reposense.report.ReportGenerator analyzeRepo +Mar 24, 2024 12:48:39 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W11-3/tp.git (master)... +Mar 24, 2024 12:48:39 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-W09-3/tp.git (master) completed! -Mar 24, 2024 4:16:08 AM reposense.report.ReportGenerator analyzeRepos -INFO: [44/92] Analyzing https://github.com/AY2324S2-CS2103T-T12-2/tp.git (master)... -Mar 24, 2024 4:16:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W11-3/tp.git (master)... -Mar 24, 2024 4:16:08 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-W11-3/tp.git (master) completed! -Mar 24, 2024 4:16:08 AM reposense.report.ReportGenerator analyzeRepos -INFO: [45/92] Analyzing https://github.com/AY2324S2-CS2103T-W09-1/tp.git (master)... -Mar 24, 2024 4:16:08 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T12-2/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:16:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T12-2/tp.git (master)... -Mar 24, 2024 4:16:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F14-1/tp.git (master)... -Mar 24, 2024 4:16:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 24, 2024 12:48:39 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T09-3/tp.git (master)... -Mar 24, 2024 4:16:08 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-W09-1/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:16:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W09-1/tp.git (master)... -Mar 24, 2024 4:16:08 AM reposense.report.ReportGenerator analyzeRepo +Mar 24, 2024 12:48:39 PM reposense.report.ReportGenerator analyzeRepos +INFO: [44/92] Analyzing https://github.com/AY2324S2-CS2103T-F14-1/tp.git (master)... +Mar 24, 2024 12:48:39 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-T09-3/tp.git (master) completed! -Mar 24, 2024 4:16:08 AM reposense.report.ReportGenerator analyzeRepos -INFO: [46/92] Analyzing https://github.com/AY2324S2-CS2103T-T17-4/tp.git (master)... -Mar 24, 2024 4:16:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F14-1/tp.git (master)... -Mar 24, 2024 4:16:08 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-F14-1/tp.git (master) completed! -Mar 24, 2024 4:16:08 AM reposense.report.ReportGenerator analyzeRepos -INFO: [47/92] Analyzing https://github.com/AY2324S2-CS2103T-F14-3/tp.git (master)... -Mar 24, 2024 4:16:08 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T17-4/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:16:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T17-4/tp.git (master)... -Mar 24, 2024 4:16:08 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-F14-3/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:16:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F14-3/tp.git (master)... -Mar 24, 2024 4:16:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 24, 2024 12:48:39 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-F14-1/tp.git (master) does not contain a standalone config file. +Mar 24, 2024 12:48:39 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F14-1/tp.git (master)... +Mar 24, 2024 12:48:39 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T12-2/tp.git (master)... -Mar 24, 2024 4:16:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 24, 2024 12:48:39 PM reposense.report.ReportGenerator analyzeRepos +INFO: [45/92] Analyzing https://github.com/AY2324S2-CS2103T-W09-1/tp.git (master)... +Mar 24, 2024 12:48:39 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-W09-1/tp.git (master) does not contain a standalone config file. +Mar 24, 2024 12:48:39 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W09-1/tp.git (master)... +Mar 24, 2024 12:48:39 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W11-3/tp.git (master)... +Mar 24, 2024 12:48:39 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T12-2/tp.git (master)... -Mar 24, 2024 4:16:09 AM reposense.report.ReportGenerator analyzeRepo +Mar 24, 2024 12:48:39 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-T12-2/tp.git (master) completed! -Mar 24, 2024 4:16:09 AM reposense.report.ReportGenerator analyzeRepos -INFO: [48/92] Analyzing https://github.com/AY2324S2-CS2103T-T11-2/tp.git (master)... -Mar 24, 2024 4:16:09 AM reposense.report.ReportGenerator updateRepoConfig +Mar 24, 2024 12:48:39 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-W11-3/tp.git (master) completed! +Mar 24, 2024 12:48:39 PM reposense.report.ReportGenerator analyzeRepos +INFO: [46/92] Analyzing https://github.com/AY2324S2-CS2103T-F14-3/tp.git (master)... +Mar 24, 2024 12:48:39 PM reposense.report.ReportGenerator analyzeRepos +INFO: [47/92] Analyzing https://github.com/AY2324S2-CS2103T-T11-2/tp.git (master)... +Mar 24, 2024 12:48:40 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T11-2/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:16:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 24, 2024 12:48:40 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T11-2/tp.git (master)... -Mar 24, 2024 4:16:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 24, 2024 12:48:40 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-F14-3/tp.git (master) does not contain a standalone config file. +Mar 24, 2024 12:48:40 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F14-3/tp.git (master)... +Mar 24, 2024 12:48:40 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T11-2/tp.git (master)... +Mar 24, 2024 12:48:41 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T11-2/tp.git (master)... +Mar 24, 2024 12:48:41 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T11-2/tp.git (master) completed! +Mar 24, 2024 12:48:41 PM reposense.report.ReportGenerator analyzeRepos +INFO: [48/92] Analyzing https://github.com/AY2324S2-CS2103T-T17-4/tp.git (master)... +Mar 24, 2024 12:48:41 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W09-1/tp.git (master)... -Mar 24, 2024 4:16:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 24, 2024 12:48:41 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T17-4/tp.git (master) does not contain a standalone config file. +Mar 24, 2024 12:48:41 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T17-4/tp.git (master)... +Mar 24, 2024 12:48:41 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W09-1/tp.git (master)... -Mar 24, 2024 4:16:09 AM reposense.report.ReportGenerator analyzeRepo +Mar 24, 2024 12:48:41 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-W09-1/tp.git (master) completed! -Mar 24, 2024 4:16:09 AM reposense.report.ReportGenerator analyzeRepos +Mar 24, 2024 12:48:41 PM reposense.report.ReportGenerator analyzeRepos INFO: [49/92] Analyzing https://github.com/AY2324S2-CS2103T-T11-4/tp.git (master)... -Mar 24, 2024 4:16:09 AM reposense.report.ReportGenerator updateRepoConfig +Mar 24, 2024 12:48:41 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F14-1/tp.git (master)... +Mar 24, 2024 12:48:41 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T11-4/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:16:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 24, 2024 12:48:41 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T11-4/tp.git (master)... -Mar 24, 2024 4:16:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T11-2/tp.git (master)... -Mar 24, 2024 4:16:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T17-4/tp.git (master)... -Mar 24, 2024 4:16:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T11-2/tp.git (master)... -Mar 24, 2024 4:16:10 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T11-2/tp.git (master) completed! -Mar 24, 2024 4:16:10 AM reposense.report.ReportGenerator analyzeRepos -INFO: [50/92] Analyzing https://github.com/AY2324S2-CS2103T-T17-2/tp.git (master)... -Mar 24, 2024 4:16:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T17-4/tp.git (master)... -Mar 24, 2024 4:16:10 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T17-2/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:16:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T17-2/tp.git (master)... -Mar 24, 2024 4:16:10 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T17-4/tp.git (master) completed! -Mar 24, 2024 4:16:10 AM reposense.report.ReportGenerator analyzeRepos -INFO: [51/92] Analyzing https://github.com/AY2324S2-CS2103T-T08-3/tp.git (master)... -Mar 24, 2024 4:16:10 AM reposense.report.ReportGenerator updateRepoConfig +Mar 24, 2024 12:48:41 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F14-1/tp.git (master)... +Mar 24, 2024 12:48:41 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-F14-1/tp.git (master) completed! +Mar 24, 2024 12:48:41 PM reposense.report.ReportGenerator analyzeRepos +INFO: [50/92] Analyzing https://github.com/AY2324S2-CS2103T-T08-3/tp.git (master)... +Mar 24, 2024 12:48:41 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T08-3/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:16:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 24, 2024 12:48:41 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T08-3/tp.git (master)... -Mar 24, 2024 4:16:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 24, 2024 12:48:42 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F14-3/tp.git (master)... -Mar 24, 2024 4:16:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 24, 2024 12:48:42 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F14-3/tp.git (master)... -Mar 24, 2024 4:16:10 AM reposense.report.ReportGenerator analyzeRepo +Mar 24, 2024 12:48:42 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-F14-3/tp.git (master) completed! -Mar 24, 2024 4:16:10 AM reposense.report.ReportGenerator analyzeRepos +Mar 24, 2024 12:48:42 PM reposense.report.ReportGenerator analyzeRepos +INFO: [51/92] Analyzing https://github.com/AY2324S2-CS2103T-T17-2/tp.git (master)... +Mar 24, 2024 12:48:42 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T17-2/tp.git (master) does not contain a standalone config file. +Mar 24, 2024 12:48:42 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T17-2/tp.git (master)... +Mar 24, 2024 12:48:42 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T08-3/tp.git (master)... +Mar 24, 2024 12:48:42 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T11-4/tp.git (master)... +Mar 24, 2024 12:48:42 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T08-3/tp.git (master)... +Mar 24, 2024 12:48:42 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T08-3/tp.git (master) completed! +Mar 24, 2024 12:48:42 PM reposense.report.ReportGenerator analyzeRepos INFO: [52/92] Analyzing https://github.com/AY2324S2-CS2103T-T08-1/tp.git (master)... -Mar 24, 2024 4:16:11 AM reposense.report.ReportGenerator updateRepoConfig +Mar 24, 2024 12:48:42 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T11-4/tp.git (master)... +Mar 24, 2024 12:48:42 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T08-1/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:16:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 24, 2024 12:48:42 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T08-1/tp.git (master)... -Mar 24, 2024 4:16:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T11-4/tp.git (master)... -Mar 24, 2024 4:16:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T11-4/tp.git (master)... -Mar 24, 2024 4:16:11 AM reposense.report.ReportGenerator analyzeRepo +Mar 24, 2024 12:48:42 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-T11-4/tp.git (master) completed! -Mar 24, 2024 4:16:11 AM reposense.report.ReportGenerator analyzeRepos +Mar 24, 2024 12:48:42 PM reposense.report.ReportGenerator analyzeRepos INFO: [53/92] Analyzing https://github.com/AY2324S2-CS2103T-F12-4/tp.git (master)... -Mar 24, 2024 4:16:11 AM reposense.report.ReportGenerator updateRepoConfig +Mar 24, 2024 12:48:42 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-F12-4/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:16:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 24, 2024 12:48:42 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F12-4/tp.git (master)... -Mar 24, 2024 4:16:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T08-3/tp.git (master)... -Mar 24, 2024 4:16:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T08-3/tp.git (master)... -Mar 24, 2024 4:16:11 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T08-3/tp.git (master) completed! -Mar 24, 2024 4:16:11 AM reposense.report.ReportGenerator analyzeRepos +Mar 24, 2024 12:48:43 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T17-4/tp.git (master)... +Mar 24, 2024 12:48:43 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T17-4/tp.git (master)... +Mar 24, 2024 12:48:43 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T17-4/tp.git (master) completed! +Mar 24, 2024 12:48:43 PM reposense.report.ReportGenerator analyzeRepos INFO: [54/92] Analyzing https://github.com/AY2324S2-CS2103T-F12-2/tp.git (master)... -Mar 24, 2024 4:16:11 AM reposense.report.ReportGenerator updateRepoConfig +Mar 24, 2024 12:48:43 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-F12-2/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:16:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 24, 2024 12:48:43 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F12-2/tp.git (master)... -Mar 24, 2024 4:16:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 24, 2024 12:48:43 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F12-4/tp.git (master)... -Mar 24, 2024 4:16:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 24, 2024 12:48:44 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F12-4/tp.git (master)... -Mar 24, 2024 4:16:12 AM reposense.report.ReportGenerator analyzeRepo +Mar 24, 2024 12:48:44 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-F12-4/tp.git (master) completed! -Mar 24, 2024 4:16:12 AM reposense.report.ReportGenerator analyzeRepos +Mar 24, 2024 12:48:44 PM reposense.report.ReportGenerator analyzeRepos INFO: [55/92] Analyzing https://github.com/AY2324S2-CS2103T-W08-4/tp.git (master)... -Mar 24, 2024 4:16:12 AM reposense.report.ReportGenerator updateRepoConfig +Mar 24, 2024 12:48:44 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-W08-4/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:16:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 24, 2024 12:48:44 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W08-4/tp.git (master)... -Mar 24, 2024 4:16:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 24, 2024 12:48:44 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T17-2/tp.git (master)... -Mar 24, 2024 4:16:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 24, 2024 12:48:44 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F12-2/tp.git (master)... +Mar 24, 2024 12:48:44 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T17-2/tp.git (master)... -Mar 24, 2024 4:16:13 AM reposense.report.ReportGenerator analyzeRepo +Mar 24, 2024 12:48:44 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-T17-2/tp.git (master) completed! -Mar 24, 2024 4:16:13 AM reposense.report.ReportGenerator analyzeRepos -INFO: [56/92] Analyzing https://github.com/AY2324S2-CS2103T-T14-1/tp.git (master)... -Mar 24, 2024 4:16:13 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T14-1/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:16:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T14-1/tp.git (master)... -Mar 24, 2024 4:16:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F12-2/tp.git (master)... -Mar 24, 2024 4:16:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 24, 2024 12:48:44 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F12-2/tp.git (master)... -Mar 24, 2024 4:16:13 AM reposense.report.ReportGenerator analyzeRepo +Mar 24, 2024 12:48:44 PM reposense.report.ReportGenerator analyzeRepos +INFO: [56/92] Analyzing https://github.com/AY2324S2-CS2103T-T14-1/tp.git (master)... +Mar 24, 2024 12:48:44 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-F12-2/tp.git (master) completed! -Mar 24, 2024 4:16:13 AM reposense.report.ReportGenerator analyzeRepos +Mar 24, 2024 12:48:44 PM reposense.report.ReportGenerator analyzeRepos INFO: [57/92] Analyzing https://github.com/AY2324S2-CS2103T-W12-2/tp.git (master)... -Mar 24, 2024 4:16:13 AM reposense.report.ReportGenerator updateRepoConfig +Mar 24, 2024 12:48:45 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T14-1/tp.git (master) does not contain a standalone config file. +Mar 24, 2024 12:48:45 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T14-1/tp.git (master)... +Mar 24, 2024 12:48:45 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-W12-2/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:16:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 24, 2024 12:48:45 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W12-2/tp.git (master)... -Mar 24, 2024 4:16:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 24, 2024 12:48:45 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T08-1/tp.git (master)... -Mar 24, 2024 4:16:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 24, 2024 12:48:45 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T08-1/tp.git (master)... -Mar 24, 2024 4:16:13 AM reposense.report.ReportGenerator analyzeRepo +Mar 24, 2024 12:48:45 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-T08-1/tp.git (master) completed! -Mar 24, 2024 4:16:13 AM reposense.report.ReportGenerator analyzeRepos -INFO: [58/92] Analyzing https://github.com/AY2324S2-CS2103T-W12-1/tp.git (master)... -Mar 24, 2024 4:16:13 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-W12-1/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:16:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W12-1/tp.git (master)... -Mar 24, 2024 4:16:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 24, 2024 12:48:45 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W08-4/tp.git (master)... -Mar 24, 2024 4:16:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W08-4/tp.git (master)... -Mar 24, 2024 4:16:14 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-W08-4/tp.git (master) completed! -Mar 24, 2024 4:16:14 AM reposense.report.ReportGenerator analyzeRepos -INFO: [59/92] Analyzing https://github.com/AY2324S2-CS2103T-W08-3/tp.git (master)... -Mar 24, 2024 4:16:14 AM reposense.report.ReportGenerator updateRepoConfig +Mar 24, 2024 12:48:45 PM reposense.report.ReportGenerator analyzeRepos +INFO: [58/92] Analyzing https://github.com/AY2324S2-CS2103T-W08-3/tp.git (master)... +Mar 24, 2024 12:48:45 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-W08-3/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:16:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 24, 2024 12:48:45 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W08-3/tp.git (master)... -Mar 24, 2024 4:16:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 24, 2024 12:48:45 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W08-4/tp.git (master)... +Mar 24, 2024 12:48:45 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-W08-4/tp.git (master) completed! +Mar 24, 2024 12:48:45 PM reposense.report.ReportGenerator analyzeRepos +INFO: [59/92] Analyzing https://github.com/AY2324S2-CS2103T-F11-4/tp.git (master)... +Mar 24, 2024 12:48:45 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-F11-4/tp.git (master) does not contain a standalone config file. +Mar 24, 2024 12:48:45 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F11-4/tp.git (master)... +Mar 24, 2024 12:48:46 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T14-1/tp.git (master)... -Mar 24, 2024 4:16:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 24, 2024 12:48:46 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T14-1/tp.git (master)... -Mar 24, 2024 4:16:15 AM reposense.report.ReportGenerator analyzeRepo +Mar 24, 2024 12:48:46 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-T14-1/tp.git (master) completed! -Mar 24, 2024 4:16:15 AM reposense.report.ReportGenerator analyzeRepos -INFO: [60/92] Analyzing https://github.com/AY2324S2-CS2103T-F11-4/tp.git (master)... -Mar 24, 2024 4:16:15 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-F11-4/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:16:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F11-4/tp.git (master)... -Mar 24, 2024 4:16:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W12-1/tp.git (master)... -Mar 24, 2024 4:16:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W12-1/tp.git (master)... -Mar 24, 2024 4:16:16 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-W12-1/tp.git (master) completed! -Mar 24, 2024 4:16:16 AM reposense.report.ReportGenerator analyzeRepos +Mar 24, 2024 12:48:46 PM reposense.report.ReportGenerator analyzeRepos +INFO: [60/92] Analyzing https://github.com/AY2324S2-CS2103T-W12-1/tp.git (master)... +Mar 24, 2024 12:48:47 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F11-4/tp.git (master)... +Mar 24, 2024 12:48:47 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-W12-1/tp.git (master) does not contain a standalone config file. +Mar 24, 2024 12:48:47 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W12-1/tp.git (master)... +Mar 24, 2024 12:48:47 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F11-4/tp.git (master)... +Mar 24, 2024 12:48:47 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-F11-4/tp.git (master) completed! +Mar 24, 2024 12:48:47 PM reposense.report.ReportGenerator analyzeRepos INFO: [61/92] Analyzing https://github.com/AY2324S2-CS2103T-F14-4/tp.git (master)... -Mar 24, 2024 4:16:16 AM reposense.report.ReportGenerator updateRepoConfig +Mar 24, 2024 12:48:47 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-F14-4/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:16:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 24, 2024 12:48:47 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F14-4/tp.git (master)... -Mar 24, 2024 4:16:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 24, 2024 12:48:47 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W12-2/tp.git (master)... -Mar 24, 2024 4:16:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 24, 2024 12:48:47 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W12-2/tp.git (master)... -Mar 24, 2024 4:16:16 AM reposense.report.ReportGenerator analyzeRepo +Mar 24, 2024 12:48:47 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-W12-2/tp.git (master) completed! -Mar 24, 2024 4:16:16 AM reposense.report.ReportGenerator analyzeRepos +Mar 24, 2024 12:48:47 PM reposense.report.ReportGenerator analyzeRepos INFO: [62/92] Analyzing https://github.com/AY2324S2-CS2103T-W08-2/tp.git (master)... -Mar 24, 2024 4:16:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F11-4/tp.git (master)... -Mar 24, 2024 4:16:16 AM reposense.report.ReportGenerator updateRepoConfig +Mar 24, 2024 12:48:47 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-W08-2/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:16:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 24, 2024 12:48:47 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W08-2/tp.git (master)... -Mar 24, 2024 4:16:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F11-4/tp.git (master)... -Mar 24, 2024 4:16:16 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-F11-4/tp.git (master) completed! -Mar 24, 2024 4:16:16 AM reposense.report.ReportGenerator analyzeRepos -INFO: [63/92] Analyzing https://github.com/AY2324S2-CS2103T-F11-3/tp.git (master)... -Mar 24, 2024 4:16:16 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-F11-3/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:16:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F11-3/tp.git (master)... -Mar 24, 2024 4:16:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 24, 2024 12:48:48 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F14-4/tp.git (master)... -Mar 24, 2024 4:16:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 24, 2024 12:48:48 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F14-4/tp.git (master)... -Mar 24, 2024 4:16:17 AM reposense.report.ReportGenerator analyzeRepo +Mar 24, 2024 12:48:48 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-F14-4/tp.git (master) completed! -Mar 24, 2024 4:16:17 AM reposense.report.ReportGenerator analyzeRepos -INFO: [64/92] Analyzing https://github.com/AY2324S2-CS2103T-T15-2/tp.git (master)... -Mar 24, 2024 4:16:17 AM reposense.report.ReportGenerator updateRepoConfig +Mar 24, 2024 12:48:48 PM reposense.report.ReportGenerator analyzeRepos +INFO: [63/92] Analyzing https://github.com/AY2324S2-CS2103T-T15-2/tp.git (master)... +Mar 24, 2024 12:48:48 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T15-2/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:16:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 24, 2024 12:48:48 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T15-2/tp.git (master)... -Mar 24, 2024 4:16:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 24, 2024 12:48:49 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W12-1/tp.git (master)... +Mar 24, 2024 12:48:49 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W12-1/tp.git (master)... +Mar 24, 2024 12:48:49 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-W12-1/tp.git (master) completed! +Mar 24, 2024 12:48:49 PM reposense.report.ReportGenerator analyzeRepos +INFO: [64/92] Analyzing https://github.com/AY2324S2-CS2103T-F11-3/tp.git (master)... +Mar 24, 2024 12:48:49 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-F11-3/tp.git (master) does not contain a standalone config file. +Mar 24, 2024 12:48:49 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F11-3/tp.git (master)... +Mar 24, 2024 12:48:49 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W08-3/tp.git (master)... -Mar 24, 2024 4:16:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 24, 2024 12:48:49 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W08-3/tp.git (master)... -Mar 24, 2024 4:16:18 AM reposense.report.ReportGenerator analyzeRepo +Mar 24, 2024 12:48:49 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-W08-3/tp.git (master) completed! -Mar 24, 2024 4:16:18 AM reposense.report.ReportGenerator analyzeRepos +Mar 24, 2024 12:48:49 PM reposense.report.ReportGenerator analyzeRepos INFO: [65/92] Analyzing https://github.com/AY2324S2-CS2103T-F11-2/tp.git (master)... -Mar 24, 2024 4:16:19 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F11-3/tp.git (master)... -Mar 24, 2024 4:16:19 AM reposense.report.ReportGenerator updateRepoConfig +Mar 24, 2024 12:48:50 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-F11-2/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:16:19 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 24, 2024 12:48:50 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F11-2/tp.git (master)... -Mar 24, 2024 4:16:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F11-3/tp.git (master)... -Mar 24, 2024 4:16:19 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-F11-3/tp.git (master) completed! -Mar 24, 2024 4:16:19 AM reposense.report.ReportGenerator analyzeRepos -INFO: [66/92] Analyzing https://github.com/AY2324S2-CS2103-T14-1/tp.git (master)... -Mar 24, 2024 4:16:19 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103-T14-1/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:16:19 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-T14-1/tp.git (master)... -Mar 24, 2024 4:16:19 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 24, 2024 12:48:50 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T15-2/tp.git (master)... -Mar 24, 2024 4:16:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 24, 2024 12:48:50 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T15-2/tp.git (master)... -Mar 24, 2024 4:16:19 AM reposense.report.ReportGenerator analyzeRepo +Mar 24, 2024 12:48:50 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-T15-2/tp.git (master) completed! -Mar 24, 2024 4:16:19 AM reposense.report.ReportGenerator analyzeRepos +Mar 24, 2024 12:48:50 PM reposense.report.ReportGenerator analyzeRepos +INFO: [66/92] Analyzing https://github.com/AY2324S2-CS2103-T14-1/tp.git (master)... +Mar 24, 2024 12:48:50 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103-T14-1/tp.git (master) does not contain a standalone config file. +Mar 24, 2024 12:48:50 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-T14-1/tp.git (master)... +Mar 24, 2024 12:48:51 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F11-3/tp.git (master)... +Mar 24, 2024 12:48:51 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F11-3/tp.git (master)... +Mar 24, 2024 12:48:51 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-F11-3/tp.git (master) completed! +Mar 24, 2024 12:48:51 PM reposense.report.ReportGenerator analyzeRepos INFO: [67/92] Analyzing https://github.com/AY2324S2-CS2103T-F11-1/tp.git (master)... -Mar 24, 2024 4:16:19 AM reposense.report.ReportGenerator updateRepoConfig +Mar 24, 2024 12:48:51 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-F11-1/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:16:19 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 24, 2024 12:48:51 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F11-1/tp.git (master)... -Mar 24, 2024 4:16:20 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 24, 2024 12:48:52 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F11-2/tp.git (master)... -Mar 24, 2024 4:16:21 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F11-1/tp.git (master)... -Mar 24, 2024 4:16:21 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 24, 2024 12:48:52 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F11-2/tp.git (master)... -Mar 24, 2024 4:16:21 AM reposense.report.ReportGenerator analyzeRepo +Mar 24, 2024 12:48:52 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-F11-2/tp.git (master) completed! -Mar 24, 2024 4:16:21 AM reposense.report.ReportGenerator analyzeRepos +Mar 24, 2024 12:48:52 PM reposense.report.ReportGenerator analyzeRepos INFO: [68/92] Analyzing https://github.com/AY2324S2-CS2103T-T15-3/tp.git (master)... -Mar 24, 2024 4:16:21 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F11-1/tp.git (master)... -Mar 24, 2024 4:16:21 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-F11-1/tp.git (master) completed! -Mar 24, 2024 4:16:21 AM reposense.report.ReportGenerator updateRepoConfig +Mar 24, 2024 12:48:52 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T15-3/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:16:21 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 24, 2024 12:48:52 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T15-3/tp.git (master)... -Mar 24, 2024 4:16:21 AM reposense.report.ReportGenerator analyzeRepos -INFO: [69/92] Analyzing https://github.com/AY2324S2-CS2103T-T15-1/tp.git (master)... -Mar 24, 2024 4:16:21 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T15-1/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:16:21 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T15-1/tp.git (master)... -Mar 24, 2024 4:16:21 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 24, 2024 12:48:52 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W08-2/tp.git (master)... -Mar 24, 2024 4:16:21 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 24, 2024 12:48:52 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W08-2/tp.git (master)... -Mar 24, 2024 4:16:21 AM reposense.report.ReportGenerator analyzeRepo +Mar 24, 2024 12:48:52 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-W08-2/tp.git (master) completed! -Mar 24, 2024 4:16:21 AM reposense.report.ReportGenerator analyzeRepos +Mar 24, 2024 12:48:52 PM reposense.report.ReportGenerator analyzeRepos +INFO: [69/92] Analyzing https://github.com/AY2324S2-CS2103T-T15-1/tp.git (master)... +Mar 24, 2024 12:48:53 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T15-1/tp.git (master) does not contain a standalone config file. +Mar 24, 2024 12:48:53 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T15-1/tp.git (master)... +Mar 24, 2024 12:48:53 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F11-1/tp.git (master)... +Mar 24, 2024 12:48:53 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F11-1/tp.git (master)... +Mar 24, 2024 12:48:53 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-F11-1/tp.git (master) completed! +Mar 24, 2024 12:48:53 PM reposense.report.ReportGenerator analyzeRepos INFO: [70/92] Analyzing https://github.com/AY2324S2-CS2103T-T09-1/tp.git (master)... -Mar 24, 2024 4:16:21 AM reposense.report.ReportGenerator updateRepoConfig +Mar 24, 2024 12:48:53 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T09-1/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:16:21 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 24, 2024 12:48:53 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T09-1/tp.git (master)... -Mar 24, 2024 4:16:22 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 24, 2024 12:48:53 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T15-3/tp.git (master)... -Mar 24, 2024 4:16:22 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 24, 2024 12:48:53 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T15-3/tp.git (master)... -Mar 24, 2024 4:16:22 AM reposense.report.ReportGenerator analyzeRepo +Mar 24, 2024 12:48:53 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-T15-3/tp.git (master) completed! -Mar 24, 2024 4:16:22 AM reposense.report.ReportGenerator analyzeRepos +Mar 24, 2024 12:48:53 PM reposense.report.ReportGenerator analyzeRepos INFO: [71/92] Analyzing https://github.com/AY2324S2-CS2103T-W12-4/tp.git (master)... -Mar 24, 2024 4:16:22 AM reposense.report.ReportGenerator updateRepoConfig +Mar 24, 2024 12:48:53 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-W12-4/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:16:22 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 24, 2024 12:48:53 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W12-4/tp.git (master)... -Mar 24, 2024 4:16:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 24, 2024 12:48:54 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W12-4/tp.git (master)... +Mar 24, 2024 12:48:55 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W12-4/tp.git (master)... +Mar 24, 2024 12:48:55 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-W12-4/tp.git (master) completed! +Mar 24, 2024 12:48:55 PM reposense.report.ReportGenerator analyzeRepos +INFO: [72/92] Analyzing https://github.com/AY2324S2-CS2103T-W12-3/tp.git (master)... +Mar 24, 2024 12:48:55 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T15-1/tp.git (master)... -Mar 24, 2024 4:16:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 24, 2024 12:48:55 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-W12-3/tp.git (master) does not contain a standalone config file. +Mar 24, 2024 12:48:55 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W12-3/tp.git (master)... +Mar 24, 2024 12:48:55 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T15-1/tp.git (master)... -Mar 24, 2024 4:16:23 AM reposense.report.ReportGenerator analyzeRepo +Mar 24, 2024 12:48:55 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-T15-1/tp.git (master) completed! -Mar 24, 2024 4:16:23 AM reposense.report.ReportGenerator analyzeRepos -INFO: [72/92] Analyzing https://github.com/AY2324S2-CS2103T-T09-2/tp.git (master)... -Mar 24, 2024 4:16:23 AM reposense.report.ReportGenerator updateRepoConfig +Mar 24, 2024 12:48:55 PM reposense.report.ReportGenerator analyzeRepos +INFO: [73/92] Analyzing https://github.com/AY2324S2-CS2103T-T09-2/tp.git (master)... +Mar 24, 2024 12:48:55 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T09-2/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:16:23 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 24, 2024 12:48:55 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T09-2/tp.git (master)... -Mar 24, 2024 4:16:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W12-4/tp.git (master)... -Mar 24, 2024 4:16:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W12-4/tp.git (master)... -Mar 24, 2024 4:16:23 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-W12-4/tp.git (master) completed! -Mar 24, 2024 4:16:23 AM reposense.report.ReportGenerator analyzeRepos -INFO: [73/92] Analyzing https://github.com/AY2324S2-CS2103T-T15-4/tp.git (master)... -Mar 24, 2024 4:16:24 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T15-4/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:16:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T15-4/tp.git (master)... -Mar 24, 2024 4:16:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 24, 2024 12:48:55 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-T14-1/tp.git (master)... -Mar 24, 2024 4:16:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 24, 2024 12:48:55 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-T14-1/tp.git (master)... -Mar 24, 2024 4:16:24 AM reposense.report.ReportGenerator analyzeRepo +Mar 24, 2024 12:48:55 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103-T14-1/tp.git (master) completed! -Mar 24, 2024 4:16:24 AM reposense.report.ReportGenerator analyzeRepos -INFO: [74/92] Analyzing https://github.com/AY2324S2-CS2103T-W12-3/tp.git (master)... -Mar 24, 2024 4:16:24 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-W12-3/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:16:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W12-3/tp.git (master)... -Mar 24, 2024 4:16:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 24, 2024 12:48:55 PM reposense.report.ReportGenerator analyzeRepos +INFO: [74/92] Analyzing https://github.com/AY2324S2-CS2103T-T15-4/tp.git (master)... +Mar 24, 2024 12:48:55 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T15-4/tp.git (master) does not contain a standalone config file. +Mar 24, 2024 12:48:55 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T15-4/tp.git (master)... +Mar 24, 2024 12:48:57 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T09-1/tp.git (master)... -Mar 24, 2024 4:16:26 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 24, 2024 12:48:57 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W12-3/tp.git (master)... +Mar 24, 2024 12:48:57 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T09-1/tp.git (master)... -Mar 24, 2024 4:16:26 AM reposense.report.ReportGenerator analyzeRepo +Mar 24, 2024 12:48:57 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W12-3/tp.git (master)... +Mar 24, 2024 12:48:57 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-T09-1/tp.git (master) completed! -Mar 24, 2024 4:16:26 AM reposense.report.ReportGenerator analyzeRepos +Mar 24, 2024 12:48:57 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-W12-3/tp.git (master) completed! +Mar 24, 2024 12:48:57 PM reposense.report.ReportGenerator analyzeRepos INFO: [75/92] Analyzing https://github.com/AY2324S2-CS2103-F08-3/tp.git (master)... -Mar 24, 2024 4:16:26 AM reposense.report.ReportGenerator updateRepoConfig +Mar 24, 2024 12:48:58 PM reposense.report.ReportGenerator analyzeRepos +INFO: [76/92] Analyzing https://github.com/AY2324S2-CS2103T-W08-1/tp.git (master)... +Mar 24, 2024 12:48:58 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103-F08-3/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:16:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 24, 2024 12:48:58 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F08-3/tp.git (master)... -Mar 24, 2024 4:16:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 24, 2024 12:48:58 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T09-2/tp.git (master)... -Mar 24, 2024 4:16:26 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T09-2/tp.git (master)... -Mar 24, 2024 4:16:26 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T09-2/tp.git (master) completed! -Mar 24, 2024 4:16:26 AM reposense.report.ReportGenerator analyzeRepos -INFO: [76/92] Analyzing https://github.com/AY2324S2-CS2103T-W08-1/tp.git (master)... -Mar 24, 2024 4:16:26 AM reposense.report.ReportGenerator updateRepoConfig +Mar 24, 2024 12:48:58 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-W08-1/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:16:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 24, 2024 12:48:58 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W08-1/tp.git (master)... -Mar 24, 2024 4:16:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W12-3/tp.git (master)... -Mar 24, 2024 4:16:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 24, 2024 12:48:58 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T09-2/tp.git (master)... +Mar 24, 2024 12:48:58 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T09-2/tp.git (master) completed! +Mar 24, 2024 12:48:58 PM reposense.report.ReportGenerator analyzeRepos +INFO: [77/92] Analyzing https://github.com/AY2324S2-CS2103-F08-1/tp.git (master)... +Mar 24, 2024 12:48:58 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103-F08-1/tp.git (master) does not contain a standalone config file. +Mar 24, 2024 12:48:58 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F08-1/tp.git (master)... +Mar 24, 2024 12:48:58 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T15-4/tp.git (master)... -Mar 24, 2024 4:16:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 24, 2024 12:48:59 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T15-4/tp.git (master)... -Mar 24, 2024 4:16:27 AM reposense.report.ReportGenerator analyzeRepo +Mar 24, 2024 12:48:59 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-T15-4/tp.git (master) completed! -Mar 24, 2024 4:16:27 AM reposense.report.ReportGenerator analyzeRepos -INFO: [77/92] Analyzing https://github.com/AY2324S2-CS2103-F08-1/tp.git (master)... -Mar 24, 2024 4:16:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W12-3/tp.git (master)... -Mar 24, 2024 4:16:27 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-W12-3/tp.git (master) completed! -Mar 24, 2024 4:16:27 AM reposense.report.ReportGenerator analyzeRepos +Mar 24, 2024 12:48:59 PM reposense.report.ReportGenerator analyzeRepos INFO: [78/92] Analyzing https://github.com/AY2324S2-CS2103T-T12-1/tp.git (master)... -Mar 24, 2024 4:16:27 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103-F08-1/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:16:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F08-1/tp.git (master)... -Mar 24, 2024 4:16:27 AM reposense.report.ReportGenerator updateRepoConfig +Mar 24, 2024 12:48:59 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T12-1/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:16:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 24, 2024 12:48:59 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T12-1/tp.git (master)... -Mar 24, 2024 4:16:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 24, 2024 12:49:00 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F08-1/tp.git (master)... -Mar 24, 2024 4:16:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 24, 2024 12:49:00 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F08-1/tp.git (master)... -Mar 24, 2024 4:16:29 AM reposense.report.ReportGenerator analyzeRepo +Mar 24, 2024 12:49:00 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103-F08-1/tp.git (master) completed! -Mar 24, 2024 4:16:29 AM reposense.report.ReportGenerator analyzeRepos +Mar 24, 2024 12:49:00 PM reposense.report.ReportGenerator analyzeRepos INFO: [79/92] Analyzing https://github.com/AY2324S2-CS2103T-W11-2/tp.git (master)... -Mar 24, 2024 4:16:29 AM reposense.report.ReportGenerator updateRepoConfig +Mar 24, 2024 12:49:00 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-W11-2/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:16:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 24, 2024 12:49:00 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W11-2/tp.git (master)... -Mar 24, 2024 4:16:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T12-1/tp.git (master)... -Mar 24, 2024 4:16:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T12-1/tp.git (master)... -Mar 24, 2024 4:16:30 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T12-1/tp.git (master) completed! -Mar 24, 2024 4:16:30 AM reposense.report.ReportGenerator analyzeRepos -INFO: [80/92] Analyzing https://github.com/AY2324S2-CS2103T-W09-4/tp.git (master)... -Mar 24, 2024 4:16:30 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-W09-4/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:16:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W09-4/tp.git (master)... -Mar 24, 2024 4:16:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 24, 2024 12:49:01 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W11-2/tp.git (master)... -Mar 24, 2024 4:16:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 24, 2024 12:49:01 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W11-2/tp.git (master)... -Mar 24, 2024 4:16:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W08-1/tp.git (master)... -Mar 24, 2024 4:16:31 AM reposense.report.ReportGenerator analyzeRepo +Mar 24, 2024 12:49:01 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-W11-2/tp.git (master) completed! -Mar 24, 2024 4:16:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F08-3/tp.git (master)... -Mar 24, 2024 4:16:31 AM reposense.report.ReportGenerator analyzeRepos -INFO: [81/92] Analyzing https://github.com/AY2324S2-CS2103T-W09-2/tp.git (master)... -Mar 24, 2024 4:16:31 AM reposense.report.ReportGenerator updateRepoConfig +Mar 24, 2024 12:49:02 PM reposense.report.ReportGenerator analyzeRepos +INFO: [80/92] Analyzing https://github.com/AY2324S2-CS2103T-W09-2/tp.git (master)... +Mar 24, 2024 12:49:02 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-W09-2/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:16:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 24, 2024 12:49:02 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W09-2/tp.git (master)... -Mar 24, 2024 4:16:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 24, 2024 12:49:02 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T12-1/tp.git (master)... +Mar 24, 2024 12:49:02 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T12-1/tp.git (master)... +Mar 24, 2024 12:49:02 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T12-1/tp.git (master) completed! +Mar 24, 2024 12:49:02 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W08-1/tp.git (master)... +Mar 24, 2024 12:49:02 PM reposense.report.ReportGenerator analyzeRepos +INFO: [81/92] Analyzing https://github.com/AY2324S2-CS2103T-W09-4/tp.git (master)... +Mar 24, 2024 12:49:02 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-W09-4/tp.git (master) does not contain a standalone config file. +Mar 24, 2024 12:49:02 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W09-4/tp.git (master)... +Mar 24, 2024 12:49:02 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W08-1/tp.git (master)... -Mar 24, 2024 4:16:31 AM reposense.report.ReportGenerator analyzeRepo +Mar 24, 2024 12:49:02 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-W08-1/tp.git (master) completed! -Mar 24, 2024 4:16:31 AM reposense.report.ReportGenerator analyzeRepos +Mar 24, 2024 12:49:02 PM reposense.report.ReportGenerator analyzeRepos INFO: [82/92] Analyzing https://github.com/AY2324S2-CS2103T-F14-2/tp.git (master)... -Mar 24, 2024 4:16:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F08-3/tp.git (master)... -Mar 24, 2024 4:16:31 AM reposense.report.ReportGenerator updateRepoConfig +Mar 24, 2024 12:49:02 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F08-3/tp.git (master)... +Mar 24, 2024 12:49:02 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-F14-2/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:16:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 24, 2024 12:49:02 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F14-2/tp.git (master)... -Mar 24, 2024 4:16:31 AM reposense.report.ReportGenerator analyzeRepo +Mar 24, 2024 12:49:02 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F08-3/tp.git (master)... +Mar 24, 2024 12:49:03 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103-F08-3/tp.git (master) completed! -Mar 24, 2024 4:16:31 AM reposense.report.ReportGenerator analyzeRepos -INFO: [83/92] Analyzing https://github.com/AY2324S2-CS2103T-F12-1/tp.git (master)... -Mar 24, 2024 4:16:31 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-F12-1/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:16:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F12-1/tp.git (master)... -Mar 24, 2024 4:16:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 24, 2024 12:49:03 PM reposense.report.ReportGenerator analyzeRepos +INFO: [83/92] Analyzing https://github.com/AY2324S2-CS2103T-T11-3/tp.git (master)... +Mar 24, 2024 12:49:03 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T11-3/tp.git (master) does not contain a standalone config file. +Mar 24, 2024 12:49:03 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T11-3/tp.git (master)... +Mar 24, 2024 12:49:03 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W09-4/tp.git (master)... -Mar 24, 2024 4:16:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 24, 2024 12:49:04 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T11-3/tp.git (master)... +Mar 24, 2024 12:49:04 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W09-4/tp.git (master)... -Mar 24, 2024 4:16:32 AM reposense.report.ReportGenerator analyzeRepo +Mar 24, 2024 12:49:04 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T11-3/tp.git (master)... +Mar 24, 2024 12:49:04 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-W09-4/tp.git (master) completed! -Mar 24, 2024 4:16:32 AM reposense.report.ReportGenerator analyzeRepos -INFO: [84/92] Analyzing https://github.com/AY2324S2-CS2103T-T12-3/tp.git (master)... -Mar 24, 2024 4:16:32 AM reposense.report.ReportGenerator updateRepoConfig +Mar 24, 2024 12:49:04 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T11-3/tp.git (master) completed! +Mar 24, 2024 12:49:04 PM reposense.report.ReportGenerator analyzeRepos +INFO: [84/92] Analyzing https://github.com/AY2324S2-CS2103T-F12-1/tp.git (master)... +Mar 24, 2024 12:49:04 PM reposense.report.ReportGenerator analyzeRepos +INFO: [85/92] Analyzing https://github.com/AY2324S2-CS2103T-T12-3/tp.git (master)... +Mar 24, 2024 12:49:04 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-F12-1/tp.git (master) does not contain a standalone config file. +Mar 24, 2024 12:49:04 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F12-1/tp.git (master)... +Mar 24, 2024 12:49:04 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W09-2/tp.git (master)... +Mar 24, 2024 12:49:04 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T12-3/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:16:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 24, 2024 12:49:04 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T12-3/tp.git (master)... -Mar 24, 2024 4:16:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 24, 2024 12:49:04 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F14-2/tp.git (master)... -Mar 24, 2024 4:16:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F14-2/tp.git (master)... -Mar 24, 2024 4:16:33 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-F14-2/tp.git (master) completed! -Mar 24, 2024 4:16:33 AM reposense.report.ReportGenerator analyzeRepos -INFO: [85/92] Analyzing https://github.com/AY2324S2-CS2103T-T11-3/tp.git (master)... -Mar 24, 2024 4:16:33 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T11-3/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:16:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T11-3/tp.git (master)... -Mar 24, 2024 4:16:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W09-2/tp.git (master)... -Mar 24, 2024 4:16:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 24, 2024 12:49:04 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W09-2/tp.git (master)... -Mar 24, 2024 4:16:33 AM reposense.report.ReportGenerator analyzeRepo +Mar 24, 2024 12:49:04 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-W09-2/tp.git (master) completed! -Mar 24, 2024 4:16:33 AM reposense.report.ReportGenerator analyzeRepos +Mar 24, 2024 12:49:04 PM reposense.report.ReportGenerator analyzeRepos INFO: [86/92] Analyzing https://github.com/AY2324S2-CS2103T-T17-3/tp.git (master)... -Mar 24, 2024 4:16:33 AM reposense.report.ReportGenerator updateRepoConfig +Mar 24, 2024 12:49:04 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T17-3/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:16:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 24, 2024 12:49:04 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T17-3/tp.git (master)... -Mar 24, 2024 4:16:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T11-3/tp.git (master)... -Mar 24, 2024 4:16:34 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T11-3/tp.git (master)... -Mar 24, 2024 4:16:34 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T11-3/tp.git (master) completed! -Mar 24, 2024 4:16:34 AM reposense.report.ReportGenerator analyzeRepos -INFO: [87/92] Analyzing https://github.com/AY2324S2-CS2103T-T08-2/tp.git (master)... -Mar 24, 2024 4:16:34 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T08-2/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:16:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T08-2/tp.git (master)... -Mar 24, 2024 4:16:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 24, 2024 12:49:04 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F14-2/tp.git (master)... +Mar 24, 2024 12:49:04 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-F14-2/tp.git (master) completed! +Mar 24, 2024 12:49:04 PM reposense.report.ReportGenerator analyzeRepos +INFO: [87/92] Analyzing https://github.com/AY2324S2-CS2103T-T14-2/tp.git (master)... +Mar 24, 2024 12:49:04 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T14-2/tp.git (master) does not contain a standalone config file. +Mar 24, 2024 12:49:04 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T14-2/tp.git (master)... +Mar 24, 2024 12:49:06 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T17-3/tp.git (master)... +Mar 24, 2024 12:49:06 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T12-3/tp.git (master)... -Mar 24, 2024 4:16:35 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 24, 2024 12:49:06 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T17-3/tp.git (master)... +Mar 24, 2024 12:49:06 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T17-3/tp.git (master) completed! +Mar 24, 2024 12:49:06 PM reposense.report.ReportGenerator analyzeRepos +INFO: [88/92] Analyzing https://github.com/AY2324S2-CS2103T-T08-2/tp.git (master)... +Mar 24, 2024 12:49:06 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T12-3/tp.git (master)... -Mar 24, 2024 4:16:35 AM reposense.report.ReportGenerator analyzeRepo +Mar 24, 2024 12:49:06 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T14-2/tp.git (master)... +Mar 24, 2024 12:49:06 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-T12-3/tp.git (master) completed! -Mar 24, 2024 4:16:35 AM reposense.report.ReportGenerator analyzeRepos -INFO: [88/92] Analyzing https://github.com/AY2324S2-CS2103T-T17-1/tp.git (master)... -Mar 24, 2024 4:16:35 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F12-1/tp.git (master)... -Mar 24, 2024 4:16:35 AM reposense.report.ReportGenerator updateRepoConfig +Mar 24, 2024 12:49:07 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T08-2/tp.git (master) does not contain a standalone config file. +Mar 24, 2024 12:49:07 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T08-2/tp.git (master)... +Mar 24, 2024 12:49:07 PM reposense.report.ReportGenerator analyzeRepos +INFO: [89/92] Analyzing https://github.com/AY2324S2-CS2103T-T17-1/tp.git (master)... +Mar 24, 2024 12:49:07 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T17-1/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:16:35 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 24, 2024 12:49:07 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T17-1/tp.git (master)... -Mar 24, 2024 4:16:35 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F12-1/tp.git (master)... -Mar 24, 2024 4:16:35 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-F12-1/tp.git (master) completed! -Mar 24, 2024 4:16:35 AM reposense.report.ReportGenerator analyzeRepos -INFO: [89/92] Analyzing https://github.com/AY2324S2-CS2103T-T14-2/tp.git (master)... -Mar 24, 2024 4:16:35 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T14-2/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:16:35 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T14-2/tp.git (master)... -Mar 24, 2024 4:16:35 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T08-2/tp.git (master)... -Mar 24, 2024 4:16:35 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T17-3/tp.git (master)... -Mar 24, 2024 4:16:35 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T08-2/tp.git (master)... -Mar 24, 2024 4:16:35 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T08-2/tp.git (master) completed! -Mar 24, 2024 4:16:36 AM reposense.report.ReportGenerator analyzeRepos +Mar 24, 2024 12:49:07 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T14-2/tp.git (master)... +Mar 24, 2024 12:49:07 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T14-2/tp.git (master) completed! +Mar 24, 2024 12:49:07 PM reposense.report.ReportGenerator analyzeRepos INFO: [90/92] Analyzing https://github.com/AY2324S2-CS2103T-W13-1/tp.git (master)... -Mar 24, 2024 4:16:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T17-3/tp.git (master)... -Mar 24, 2024 4:16:36 AM reposense.report.ReportGenerator updateRepoConfig +Mar 24, 2024 12:49:07 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-W13-1/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:16:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 24, 2024 12:49:07 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W13-1/tp.git (master)... -Mar 24, 2024 4:16:36 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T17-3/tp.git (master) completed! -Mar 24, 2024 4:16:36 AM reposense.report.ReportGenerator analyzeRepos +Mar 24, 2024 12:49:07 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F12-1/tp.git (master)... +Mar 24, 2024 12:49:08 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F12-1/tp.git (master)... +Mar 24, 2024 12:49:08 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-F12-1/tp.git (master) completed! +Mar 24, 2024 12:49:08 PM reposense.report.ReportGenerator analyzeRepos INFO: [91/92] Analyzing https://github.com/AY2324S2-CS2103T-F12-3/tp.git (master)... -Mar 24, 2024 4:16:36 AM reposense.report.ReportGenerator updateRepoConfig +Mar 24, 2024 12:49:08 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W13-1/tp.git (master)... +Mar 24, 2024 12:49:08 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-F12-3/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:16:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 24, 2024 12:49:08 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F12-3/tp.git (master)... -Mar 24, 2024 4:16:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W13-1/tp.git (master)... -Mar 24, 2024 4:16:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 24, 2024 12:49:08 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T08-2/tp.git (master)... +Mar 24, 2024 12:49:08 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W13-1/tp.git (master)... -Mar 24, 2024 4:16:37 AM reposense.report.ReportGenerator analyzeRepo +Mar 24, 2024 12:49:08 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-W13-1/tp.git (master) completed! -Mar 24, 2024 4:16:37 AM reposense.report.ReportGenerator analyzeRepos +Mar 24, 2024 12:49:08 PM reposense.report.ReportGenerator analyzeRepos INFO: [92/92] Analyzing https://github.com/AY2324S2-CS2103T-T11-1/tp.git (master)... -Mar 24, 2024 4:16:37 AM reposense.report.ReportGenerator updateRepoConfig +Mar 24, 2024 12:49:08 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T11-1/tp.git (master) does not contain a standalone config file. -Mar 24, 2024 4:16:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 24, 2024 12:49:08 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T11-1/tp.git (master)... -Mar 24, 2024 4:16:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 24, 2024 12:49:08 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T08-2/tp.git (master)... +Mar 24, 2024 12:49:08 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T08-2/tp.git (master) completed! +Mar 24, 2024 12:49:09 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T17-1/tp.git (master)... -Mar 24, 2024 4:16:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 24, 2024 12:49:09 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T17-1/tp.git (master)... -Mar 24, 2024 4:16:37 AM reposense.report.ReportGenerator analyzeRepo +Mar 24, 2024 12:49:09 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-T17-1/tp.git (master) completed! -Mar 24, 2024 4:16:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T14-2/tp.git (master)... -Mar 24, 2024 4:16:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T14-2/tp.git (master)... -Mar 24, 2024 4:16:37 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T14-2/tp.git (master) completed! -Mar 24, 2024 4:16:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 24, 2024 12:49:09 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T11-1/tp.git (master)... -Mar 24, 2024 4:16:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 24, 2024 12:49:09 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T11-1/tp.git (master)... -Mar 24, 2024 4:16:38 AM reposense.report.ReportGenerator analyzeRepo +Mar 24, 2024 12:49:09 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-T11-1/tp.git (master) completed! -Mar 24, 2024 4:16:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 24, 2024 12:49:11 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F12-3/tp.git (master)... -Mar 24, 2024 4:16:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 24, 2024 12:49:11 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F12-3/tp.git (master)... -Mar 24, 2024 4:16:39 AM reposense.report.ReportGenerator analyzeRepo +Mar 24, 2024 12:49:11 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-F12-3/tp.git (master) completed! -Mar 24, 2024 4:16:39 AM reposense.report.ReportGenerator generateReposReport +Mar 24, 2024 12:49:11 PM reposense.report.ReportGenerator generateReposReport INFO: The report is generated at /home/runner/work/tp-dashboard/tp-dashboard/reposense-report -Mar 24, 2024 4:16:41 AM reposense.RepoSense main -INFO: Elapsed processing time: 1 minute(s) 27.11 second(s) +Mar 24, 2024 12:49:12 PM reposense.RepoSense main +INFO: Elapsed processing time: 1 minute(s) 27.06 second(s) diff --git a/summary.json b/summary.json index 2fc0e31e..f224e85a 100644 --- a/summary.json +++ b/summary.json @@ -1 +1 @@ -{"repoSenseVersion":"cc0651f0e3","reportGeneratedTime":"Sun Mar 24 12:15:14 2024 UTC+08:00","reportGenerationTime":" 1 minute(s) 25.38 second(s)","zoneId":"UTC+08:00","reportTitle":"CS2103 tP Code Dashboard","repos":[{"location":{"location":"https://github.com/AY2324S2-CS2103-T14-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103-T14-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103-T14-1/tp[master]","outputFolderName":"AY2324S2-CS2103-T14-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103-F15-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103-F15-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103-F15-2/tp[master]","outputFolderName":"AY2324S2-CS2103-F15-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103-F15-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103-F15-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103-F15-3/tp[master]","outputFolderName":"AY2324S2-CS2103-F15-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103-F09-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103-F09-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103-F09-4/tp[master]","outputFolderName":"AY2324S2-CS2103-F09-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103-F15-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103-F15-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103-F15-4/tp[master]","outputFolderName":"AY2324S2-CS2103-F15-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103-F15-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103-F15-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103-F15-1/tp[master]","outputFolderName":"AY2324S2-CS2103-F15-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103-F08-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103-F08-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103-F08-3/tp[master]","outputFolderName":"AY2324S2-CS2103-F08-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103-F09-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103-F09-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103-F09-2/tp[master]","outputFolderName":"AY2324S2-CS2103-F09-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103-F09-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103-F09-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103-F09-1/tp[master]","outputFolderName":"AY2324S2-CS2103-F09-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103-F08-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103-F08-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103-F08-2/tp[master]","outputFolderName":"AY2324S2-CS2103-F08-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103-F08-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103-F08-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103-F08-1/tp[master]","outputFolderName":"AY2324S2-CS2103-F08-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103-F09-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103-F09-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103-F09-3/tp[master]","outputFolderName":"AY2324S2-CS2103-F09-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103-F08-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103-F08-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103-F08-4/tp[master]","outputFolderName":"AY2324S2-CS2103-F08-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W08-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W08-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W08-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-W08-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T13-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T13-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T13-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-T13-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T11-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T11-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T11-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-T11-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T17-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T17-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T17-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-T17-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W12-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W12-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W12-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-W12-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T12-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T12-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T12-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-T12-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T10-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T10-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T10-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-T10-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F10-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F10-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F10-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-F10-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W13-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W13-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W13-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-W13-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T09-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T09-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T09-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-T09-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T14-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T14-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T14-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-T14-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T16-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T16-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T16-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-T16-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T10-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T10-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T10-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-T10-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T17-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T17-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T17-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-T17-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F13-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F13-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F13-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-F13-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F14-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F14-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F14-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-F14-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T11-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T11-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T11-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-T11-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F11-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F11-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F11-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-F11-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T08-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T08-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T08-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-T08-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W12-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W12-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W12-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-W12-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W08-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W08-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W08-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-W08-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W10-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W10-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W10-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-W10-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F12-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F12-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F12-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-F12-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W11-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W11-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W11-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-W11-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W08-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W08-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W08-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-W08-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T09-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T09-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T09-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-T09-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W11-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W11-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W11-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-W11-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W11-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W11-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W11-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-W11-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T12-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T12-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T12-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-T12-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F11-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F11-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F11-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-F11-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T11-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T11-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T11-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-T11-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T10-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T10-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T10-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-T10-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F14-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F14-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F14-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-F14-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T08-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T08-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T08-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-T08-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W09-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W09-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W09-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-W09-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T11-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T11-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T11-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-T11-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W10-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W10-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W10-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-W10-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F10-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F10-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F10-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-F10-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T13-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T13-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T13-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-T13-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T13-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T13-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T13-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-T13-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F13-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F13-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F13-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-F13-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T12-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T12-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T12-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-T12-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T08-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T08-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T08-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-T08-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T12-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T12-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T12-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-T12-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T09-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T09-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T09-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-T09-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W12-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W12-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W12-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-W12-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F10-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F10-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F10-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-F10-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F13-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F13-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F13-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-F13-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T15-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T15-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T15-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-T15-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T13-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T13-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T13-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-T13-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F11-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F11-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F11-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-F11-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W09-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W09-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W09-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-W09-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F12-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F12-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F12-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-F12-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T17-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T17-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T17-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-T17-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T15-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T15-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T15-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-T15-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T16-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T16-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T16-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-T16-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W13-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W13-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W13-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-W13-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W10-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W10-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W10-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-W10-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T15-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T15-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T15-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-T15-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W12-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W12-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W12-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-W12-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T09-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T09-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T09-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-T09-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T17-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T17-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T17-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-T17-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W13-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W13-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W13-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-W13-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W08-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W08-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W08-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-W08-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F11-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F11-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F11-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-F11-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T16-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T16-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T16-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-T16-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F10-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F10-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F10-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-F10-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W09-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W09-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W09-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-W09-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T15-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T15-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T15-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-T15-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W09-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W09-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W09-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-W09-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F14-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F14-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F14-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-F14-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W13-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W13-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W13-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-W13-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F13-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F13-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F13-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-F13-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W10-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W10-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W10-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-W10-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F12-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F12-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F12-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-F12-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F12-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F12-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F12-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-F12-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F14-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F14-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F14-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-F14-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T16-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T16-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T16-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-T16-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T14-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T14-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T14-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-T14-1_tp_master"}],"errorSet":[],"sinceDate":"2024-02-23","untilDate":"2024-03-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":"cc0651f0e3","reportGeneratedTime":"Sun Mar 24 20:47:46 2024 UTC+08:00","reportGenerationTime":" 1 minute(s) 25.31 second(s)","zoneId":"UTC+08:00","reportTitle":"CS2103 tP Code Dashboard","repos":[{"location":{"location":"https://github.com/AY2324S2-CS2103-T14-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103-T14-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103-T14-1/tp[master]","outputFolderName":"AY2324S2-CS2103-T14-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103-F15-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103-F15-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103-F15-2/tp[master]","outputFolderName":"AY2324S2-CS2103-F15-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103-F15-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103-F15-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103-F15-3/tp[master]","outputFolderName":"AY2324S2-CS2103-F15-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103-F09-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103-F09-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103-F09-4/tp[master]","outputFolderName":"AY2324S2-CS2103-F09-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103-F15-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103-F15-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103-F15-4/tp[master]","outputFolderName":"AY2324S2-CS2103-F15-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103-F15-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103-F15-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103-F15-1/tp[master]","outputFolderName":"AY2324S2-CS2103-F15-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103-F08-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103-F08-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103-F08-3/tp[master]","outputFolderName":"AY2324S2-CS2103-F08-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103-F09-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103-F09-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103-F09-2/tp[master]","outputFolderName":"AY2324S2-CS2103-F09-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103-F09-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103-F09-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103-F09-1/tp[master]","outputFolderName":"AY2324S2-CS2103-F09-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103-F08-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103-F08-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103-F08-2/tp[master]","outputFolderName":"AY2324S2-CS2103-F08-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103-F08-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103-F08-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103-F08-1/tp[master]","outputFolderName":"AY2324S2-CS2103-F08-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103-F09-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103-F09-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103-F09-3/tp[master]","outputFolderName":"AY2324S2-CS2103-F09-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103-F08-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103-F08-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103-F08-4/tp[master]","outputFolderName":"AY2324S2-CS2103-F08-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W08-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W08-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W08-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-W08-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T13-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T13-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T13-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-T13-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T11-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T11-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T11-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-T11-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T17-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T17-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T17-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-T17-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W12-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W12-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W12-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-W12-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T12-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T12-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T12-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-T12-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T10-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T10-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T10-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-T10-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F10-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F10-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F10-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-F10-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W13-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W13-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W13-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-W13-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T09-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T09-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T09-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-T09-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T14-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T14-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T14-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-T14-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T16-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T16-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T16-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-T16-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T10-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T10-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T10-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-T10-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T17-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T17-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T17-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-T17-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F13-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F13-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F13-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-F13-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F14-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F14-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F14-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-F14-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T11-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T11-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T11-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-T11-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F11-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F11-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F11-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-F11-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T08-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T08-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T08-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-T08-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W12-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W12-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W12-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-W12-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W08-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W08-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W08-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-W08-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W10-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W10-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W10-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-W10-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F12-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F12-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F12-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-F12-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W11-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W11-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W11-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-W11-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W08-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W08-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W08-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-W08-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T09-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T09-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T09-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-T09-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W11-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W11-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W11-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-W11-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W11-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W11-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W11-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-W11-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T12-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T12-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T12-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-T12-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F11-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F11-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F11-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-F11-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T11-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T11-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T11-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-T11-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T10-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T10-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T10-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-T10-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F14-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F14-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F14-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-F14-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T08-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T08-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T08-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-T08-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W09-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W09-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W09-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-W09-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T11-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T11-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T11-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-T11-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W10-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W10-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W10-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-W10-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F10-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F10-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F10-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-F10-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T13-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T13-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T13-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-T13-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T13-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T13-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T13-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-T13-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F13-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F13-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F13-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-F13-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T12-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T12-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T12-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-T12-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T08-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T08-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T08-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-T08-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T12-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T12-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T12-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-T12-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T09-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T09-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T09-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-T09-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W12-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W12-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W12-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-W12-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F10-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F10-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F10-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-F10-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F13-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F13-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F13-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-F13-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T15-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T15-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T15-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-T15-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T13-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T13-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T13-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-T13-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F11-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F11-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F11-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-F11-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W09-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W09-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W09-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-W09-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F12-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F12-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F12-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-F12-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T17-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T17-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T17-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-T17-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T15-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T15-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T15-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-T15-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T16-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T16-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T16-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-T16-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W13-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W13-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W13-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-W13-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W10-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W10-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W10-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-W10-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T15-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T15-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T15-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-T15-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W12-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W12-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W12-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-W12-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T09-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T09-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T09-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-T09-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T17-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T17-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T17-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-T17-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W13-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W13-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W13-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-W13-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W08-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W08-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W08-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-W08-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F11-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F11-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F11-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-F11-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T16-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T16-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T16-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-T16-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F10-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F10-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F10-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-F10-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W09-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W09-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W09-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-W09-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T15-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T15-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T15-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-T15-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W09-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W09-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W09-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-W09-1_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F14-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F14-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F14-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-F14-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W13-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W13-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W13-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-W13-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F13-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F13-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F13-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-F13-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-W10-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-W10-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-W10-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-W10-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F12-2/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F12-2","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F12-2/tp[master]","outputFolderName":"AY2324S2-CS2103T-F12-2_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F12-3/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F12-3","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F12-3/tp[master]","outputFolderName":"AY2324S2-CS2103T-F12-3_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-F14-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-F14-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-F14-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-F14-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T16-4/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T16-4","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T16-4/tp[master]","outputFolderName":"AY2324S2-CS2103T-T16-4_tp_master"},{"location":{"location":"https://github.com/AY2324S2-CS2103T-T14-1/tp.git","repoName":"tp","organization":"AY2324S2-CS2103T-T14-1","domainName":"github"},"branch":"master","displayName":"AY2324S2-CS2103T-T14-1/tp[master]","outputFolderName":"AY2324S2-CS2103T-T14-1_tp_master"}],"errorSet":[],"sinceDate":"2024-02-23","untilDate":"2024-03-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"}}}